쉐이더 모델 3.0
Nvidia사 와 대비하여 기존의 Radeon 제품이 많은 지적을 받은 부분이 바로 쉐이더 모델 3.0의 지원여부였으며 이에 부응해 ATi는 X1K 제품군에 쉐이더 모델 3.0을 도입하게 되었다. 또한 ATi는 X1K계열의 쉐이더 모델 3.0 기술이 Nvidia와 대비해 동일또는 더 뛰어남을 시사하였으며 쉐이더 모델 3.0의 구현에 있어 ATi는 데이터의 흐름 제어와 128비트(FP32) 렌더링 부분의 최적화를 위해 다음과 같은 기술들을 도입하였다.
Ultra-Threaded 픽셀 쉐이더 엔진
메모리 제어 부분에 있어서 내부 지연시간을 줄이기위해 캐쉬와 작업중재 로직을 개선한 것과 같이 쉐이더 모델 3.0의 구현에 있어서도 지연시간과 낭비되는 사이클을 줄이기 위해 도입한 것이 있으니 바로 Ultra-Threaded 픽셀 쉐이더 엔진이다.
Ultra-Threaded 픽셀 쉐이더 엔진은 텍스쳐 어드레스 유닛/텍스쳐 유닛 그리고 픽셀 쉐이더 코어 사이에 위치하여 작업 스케쥴러 역할을 하게 되며 기존의 아키텍쳐와 다른점은 다음과 같다.
과거의 픽셀 쉐이더 코어의 경우 픽셀 쉐이더에서 준비되지 않은 텍스쳐(텍스쳐 캐쉬에도 존재하지 않는)나 텍스쳐 결과물의 연산이 아직 완료되지 않은 텍스쳐를 호출할 경우 대기시간을 유발하고 많은 작업 사이클이 낭비되는 단점이 있었다.
하지만 Ultra-Threaded 픽셀 쉐이더 엔진은 이러한 문제점을 해결하기 위해 쉐이더 프로그램의 텍스쳐를 요구하는 명령을 받았을 때 기존의 방식과 같이 대기 시간을 갖는게 아니라 요청된 텍스쳐를 처리하던 픽셀 쉐이더 코어는 기존과 같이 잠시 유휴 시간을 갖게 되지만 이상황을 바로 스케쥴러가 감지하여 현제 사용되지 않는 다른 픽셀 쉐이더 코어에서 다른 쓰레드를 처리할 수 있게 하여 지연시간이 없이 작업이 처리될 수 있도록 하여준다.
또한 임시 쓰레드의 경우 다목적 레지스터 어레이에 저장되는데 이는 읽기/쓰기 작업이 동시에 가능하며 높은 대역을 제공하여 픽셀 쉐이더 코어의 빠르고 정확한 쓰레드 전환을 가능하게 도와준다.
ATi 는 이와 함께 픽셀 쉐이더 모델 3.0의 중요한 기능중 하나인 동적 분기(Dynamic Branching)의 향상을 위해 노력하게 되었는데 이는 동적분기를 하게 됨으로써 프로그램이 이미 계산되어진 값의 분기를 가져다 사용할 수 있게하여 연산해야할 쉐이더 코드를 줄여주어 성능을 향상 시킬수 있는 방법이지만 과거의 아키텍쳐상에서는 이러한 연산과정에 오류가 발생할 경우 많은 부하가 걸리고 속도의 저하를 야기하게되는 문제가 있었다.
이러한 문제를 해결하고 동적 분기의 정확한 동작을 위해서 ATi가 고안한 것은 먼저 쓰레드의 사이즈를 줄이는 것 이었다. 그러한 결론에 의해 쓰레드의 크기를 4×4의 픽셀 블록(16픽셀)의 작은 크기로 줄였으며 하나의 경로에 같은 형태의 쓰레드가 전송되야할 확률을 늘려 한번 사용했던 쓰레드의 픽셀셋을 다음의 다른 쓰레드의 픽셀셋 처리에 대치하여 연산해야할 데이터의 양을 줄였다. 또한 이러한 작업을 수월하게 처리하기 위해 X1K계열의 칩은 빠른 접근이 가능한 충분한 양의 레지스터 공간과 효율적이고 지연시간을 최소화한 캐쉬를 보유하고 있다.
이에 추가로 쓰레드 사이즈를 줄이는 작업을 전담하는 분기 실행 유닛을 픽셀 쉐이더 코어에 내장하여 분기 명령 처리시의 픽셀 쉐이더의 부하를 줄여 데이터의 소통을 원할하게 돕고 있다.
픽셀 쉐이더 처리기
Radeon X1K 계열의 픽셀 쉐이더 처리기는 3개의 벡터 컴포넌트를 갖는 2개의 벡터연산과 2개의 실수 연산을 매 사이클 마다 처리할 수 있으며 더불어 앞에서 언급한 것과 같이 각 코어는 분기 실행 전담유닛을 보유하고 있다. 또한 각각의 쉐이더 처리유닛마다 텍스쳐 주소 유닛이 하나씩 할당되어 있으며 이런 픽셀 쉐이더 처리기 4개가 하나의 그룹으로 묶여 쿼드 픽셀 쉐이더 코어를 구성하게 된다. 이러한 구성에따라 X1800에는 4개 X1600에는 3개 X1300에는 1개의 쿼드 픽셀 쉐이더 코어를 내장하게 되었다.
버텍스 쉐이더 처리기
버텍스 쉐이더 처리기의 경우 기존의 방식을 그대로 물려 받았으며 달라진 점 이라면 버텍스 쉐이더 3.0 규격을 만족시키기 위해 동적 흐름제어 기능의 지원, 더많은 임시 저장 레지스터의 보유 그리고 좀더 긴 명령어를 처리할 수 있게 되었다는 점이 향상된 부분이다.
128비트 부동 소수점 렌더링
X1K계열의 카드는 쉐이더 모델 3.0의 적용에 따라 기존의 파이프 라인당 24비트의 컬러 채널을 갖는 방식에서 업그레이드된 32비트의 컬러 채널을 가지며 이로인해 128비트 부동 소수점 형식의 데이터를 처리할 수 있게 되었다.
추가된 비트의 컬러 채널에 대해 현재로서는 24비트의 컬러채널 만으로도 처리하는데 문제가 없었지만 앞으로 많이 다루게 됨직한 무수히 반복되는 복잡한 쉐이더 처리와 같은 상황에서 아주작은 비트의 정밀도 문제로도 반복되는 동안 문제가 커질 수 있기 때문에 이러한 분야의 작업 처리에서 유용한 기술이 될 것으로 보여진다.