● API 상의 그래픽스 파이프라인과 GPU의 구현이 괴리


DirectX 10세대의 GPU 아키텍쳐 개혁이 전환점이 되는 것은 GPU의 물리적인 파이프라인을 논리 상의 그래픽스 API의 파이프라인과 떼어냈기 때문이다. DirectX 9세대까지의 GPU는 그래픽스 API에 정의되고 있는 그래픽스 파이프라인을 하드웨어로서 구현하는 방향에 있었다. 정점 처리→rasterize→픽셀 처리&텍스처링→frame buffer 프로세싱이라고 하는 일련의 그래픽스 파이프라인에 따른 구현은 프로그래머블화가 진행되었던 DirectX 9세대라도 변하지 않았다. 정점 쉐이더(Vertex Shader)프로세서와 픽셀 쉐이더(Pixel Shader)프로세서는 각각 다흔 구현이었다.


DirectX 8 APIGPU 구현


DirectX 9 APIGPU 구현


하지만 DirectX 10에서는 API 측에서 정의되는 각 쉐이더 스테이지가 거의 공통된 사양이 되었다. 또 파이프라인의 도중에도 메모리로의 아웃풋을 할 수 있는 「Stream Out」등이 더해졌다. 그 때문에 쉐이더를 실행하는 프로세서를 공통화한 「유니파이드 쉐이더(Unified-Shader)」화하는 것이 합리적이 되었다.


결과적으로 표준적인 DirectX 10세대 GPU에서는 한 종류의 쉐이더 프로세서가 모든 쉐이더 스테이지를 실행. 그 회전에 texture 필터링 유닛이나 래스터라이저라고 하는 고정 하드웨어가 부대하는 아키텍쳐로 바뀌었다. 이것은 GPU의 구조의 근본적인 전환으로 GPU에 있어서는 최대 규모의 아키텍쳐 개혁이 되었다. 쉐이더 프로세서를 확장할 뿐만 아니라 한 종류의 쉐이더 프로세서로 다양한 쉐이더를 달리게 하기 위한 스케줄링 등 안 보이는 부분에서 하드웨어가 비대화 했다.


당시 ATI  TechnologiesPCGPU 유닛을 인솔하고 있었던 Rick Bergman(Senior Vice President, AMD)DirectX 10당시에 「DirectX 10을 지원하기 위해서는 (DirectX 9세대 GPU보다)30~40%정도의 논리(회로)가 필요하다」라고 설명했다. 그리고 실제로는 퍼포먼스 상승 부분도 포함하면 트랜지스터 수는 배증했다.


DirectX 10 APIGPU 구현




그림으로 명료하게 된 GPU 아키텍쳐의 변화


위의 차트는 DirectX 의 각 세대의 논리상의 파이프라인과 거기에 대응하는 전형적인 GPU 아키텍쳐 구현의 개념도다. 명칭의 혼란을 피하기 위해 약간 스테이지나 유닛의 이름을 완화하여 되어 있다. 논리도의 구성도 데이터 플로우를 보다 명확하게 하기 위해 약간 손을 봤다.


예를 들면 파이프라인 최종 단의 비디오 메모리 상으로의 픽셀 등의 프로세싱에 대해서는 DirectX 9까지의 그림으로 나타내 보인 비교적 범용의 표현인 「frame buffer 프로세싱(Framebuffer Processing)」과 DirectX 10 이후에 붙여진 명칭 「아웃풋 머지(Output Merger)」의 공통성을 나타내기 위해서 아웃풋 머지의 뒤에 「frame buffer 프로세싱」이라고 더했다. 또 픽셀 쉐이더 프로세서로부터 비디오 메모리로의 다이렉트한 출력(아웃풋 머지 스테이지에서 지원된다)을 명료하게 하기 위해 픽셀 쉐이더 프로세서와 아웃풋 머지의 사이에 메모리로의 출력 라인을 더했다.


간략화를 위해서 생략한 것도 있다. 예를 들면 지오메트릭 쉐이더(Geometry Shader)에서 지원하는 원시적의 프로세싱은 개념적으로는 DirectX 9세대로는 셋업/래스터라이저(Setup/Rasterizer)의 스테이지에 고정 기능으로서 포함할 수 있다고 생각할 수 있지만 그림 중에서는 제외했다. DirectX 10에서의 DirectX Compute ShaderDirectX 11와 종래 DirectX 10과의 차이를 명확하게 하기 위해서 나타내 보이지 않았다.


필수 항목은 아니지만 중요한 기능은 파선으로 나타내 보였다. 예를 들면 DirectX 9세대에서의 정점 쉐이더로의 texture 패치는 DirectX 9의 기본 사양에서는 필수가 아니고 NVIDIA 등은 대응하지 않았기 때문에 파선으로 했다.

 

구현 아키텍쳐 그림에서는 논리 그림과의 상대적인 관계를 나타내기 위해서 특수한 명칭을 더했다. 예를 들면 유니파이드 쉐이더 프로세서로부터 메모리로의 다이렉트한 쓰기는 DirectX 10의 논리 파이프라인 상에서의 명칭인 스트림 아웃으로 나타내 보였다.

완전하게 정확한 그림이라고 하는 것은 아니지만 개념은 잡을 수 있다고 생각하고 있다.




나머지는 다음에....

DirectX 11세대의GPU마이크로 아키텍쳐의 방향성 - 1

출처 : http://pc.watch.impress.co.jp/docs/column/kaigai/20090804_306876.html

by 흥배 2009. 11. 11. 08:30