|
DirectX 10/ 10.1에서 DirectX 11로의 전환 
AMD ATI에서 경쟁사인 NVIDIA보다 먼저 공개한 DirectX 11 지원 GPU인 Radeon HD 5800 시리즈는 DirectX 10/ 10.1 환경에서 이제 본격적인 DirectX 11 지원 환경으로 넘어가려는 움직임이 이제 시작됨을 말해준다.
여기에서는 DirectX 11이 과연 기존 DirectX 10/ 10.1과 어떻게 달라지고 있는지를 살펴보고 새롭게 등장하는 Radeon HD 5800 시리즈가 가진 특징들을 살펴보도록 할 것이다.
DirectX 11은 DirectX 10/ 10.1의 확장 버전
DirectX 11은 DirectX 8/ 9 세대에서 DirectX 11 세대로의 이전보다 획기적인 변환이 이루어지지 않았으며, 이는 DirectX 8/ 9 세대에서 DirectX 10/ 10.1로의 전환시 이미 많은 변화가 이루어졌기 때문이다.
DirectX 11은 기존 DirectX 8/ 9 뿐만 아니라 DirectX 10/ 10.1이 가진 기능들을 모두 포함하고 있으며, DirectX 10/ 10.1이 가지는 범용적인 프로세서 호환 유지 및 유연성이 높은 통합 쉐이딩 아키텍처 (Unified Shading Architecture) 구조를 이어받고 있다.
범용 프로세서의 호환성은 콘솔 게임기와 PC 게임을 동시에 개발이 가능한 것도 포함되며, 통합 쉐이딩 아키텍처를 통해 기존보다 유연성을 높이고 처리 효율 및 불필요한 부분의 성능 저하를 크게 줄이고 있다.

[DirectX 8/ 9 세대 파이프라인 구성]

[DirectX 10/ 10.1 파이프라인 구성]

[DirectX 11 파이프라인 구성]
DirectX 10이 DirectX 11과 비교하여 큰 전환점이라고 말하는 이유는 기존 DirectX 8/ 9 세대의 경우 DirectX API 구성을 그대로 이어왔던 것과 달리 DirectX 11은 API와 분리되었기 때문이다. 즉, DirectX 10부터는 통합 쉐이딩 아키텍처를 통해 픽셀과 버텍스 외에 지오메트리 쉐이더를 새로 추가하여 프로그래머블의 가능성을 이전 세대보다 높였고 Stream Out을 도입하여 메모리와 직접 아웃풋도 가능해 유연성을 더욱 높였기 때문이다.
또한, 이런 변환 과정에서 GPU의 크기도 더 커지게되며, DirectX 11 세대로 넘어오면서 GPU는 이전보다 더 커지게 된다. 이는 그래픽 처리 성능 증가와 프로그래머블의 가능성의 증대로 인해 연산 성능을 높이기 위해 더 많은 리소스가 필요하고 결과적으로 GPU에 더 많은 트랜지스터가 필요해졌기 때문이다. 다행히 이 과정에서 미세공정이 함께 진행되어 이전 세대의 공정과 비교하여 같은 크기에 더 많은 트랜지스터를 집적하게 되고 생산 비용측면에서 더 유리해졌다.
또, DirectX 11에서는 DirectX Compute Shader 등으로 GPU를 범용 연산에의 활용성이 높아져 GPGPU 기능도 이전 세대보다 더욱 확대되고 있다. 그리고 DirectX 11에서는 이전 세대의 DirectX 버전들에서보다 고성능 GPU나 저성능 GPU에 따른 처리 성능의 저하를 보다 최소화하고 있는 것도 특징이다.
즉, DirectX 8/ 9 세대에서 DirectX 10/ 10.1, 그리고 DirectX 11로의 전환은 과거 고정 유닛으로 처리했던 부분이 프로그래머블화의 진행, 그리고 GPU의 범용성 증대가 주요한 변화로 GPU가 주로 그래픽처리를 담당했던 부분을 넘어 CPU를 도와 더욱 더 높은 처리 성능을 가능하게 해주는 것이다. 앞으로의 GPU들은 기존보다 더욱 고정 유닛의 프로그래머블화를 통해 유연성을 높이는 방향으로 진행하게 될 것으로 알려지고 있다.
아래는 DirectX 10/ 10.1에서 DirectX 11로 전환되면서 추가된 부분과 특징들을 정리한 부분이다.
테셀레이터 (Tessellator) 내장

[DirectX 11 파이프라인 구성]
테셀레이터 (Tessellator)는 AMD ATI의 경우 DirectX 10 지원 HD 2900 시리즈부터 포함되었으며, DirectX 10/ 10.1 지원 HD 3800/ 4800 시리즈에도 역시 내장되고 있다. 테셀레이터 고정 유닛의 추가로 Hull Shader/ Domain Shader의 2 단계의 프로그래머블 쉐이더들이 함께 더 추가되었고 이로 인해 고정 유닛이 최소화가 이루어지고 있다. 인텔 라라비의 경우 텍스처 유닛을 고정 유닛으로 제공하고 이를 제외한 쉐이더 유닛 처리 부분이 모두 프로그래머블로 만들어져 유연성을 더욱 높이고 있다.
테셀레이터는 Hull Shader에 의해 제어되고 테셀레이트된 버텍스 (정점 생성)는 Domain Shader가 맡아서 진행하게 된다. 이로 인해 하드웨어 고정 유닛인 테셀레이터는 단순하게 정점 데이터 생성이 주요한 역할이다. DirectX 11의 테셀레이터는 유연성이 높아져 복잡해졌으나 하드웨어 유닛만 고집하여 처리할 필요성은 줄어들었다. 쉐이더 프로세서에서 처리 가능한 쉐이더로 프로그래머블 처리하여 전용 하드웨어의 증가를 최소화하고 있다.
테셀레이터를 사용할 경우 지오메트리 쉐이더를 이용한 방법보다 더 작은 사이즈에서 더 높은 처리 성능을 내주는 것으로 알려지고 있다.
DirectCompute 11 - GPGPU 강화

GPU를 이용한 병렬컴퓨팅은 NVIDIA가 CUDA를 소개하면서 데스크탑 시장에서도 본격적으로 부각되고 있고 DirectX 11 API에 포함된 DirectCompute, 공개표준 OpenCL, AMD ATI의 ATI Stream 기술이 데스크탑에 등장한 GPGPU 기술들이다.
DirectCompute의 Compute Shader는 3D 모델링 및 렌더링 등에 주로 활용되었던 것과 달리 GPU를 범용목적 컴퓨팅 즉, GPGPU에 활용할 수 있도록 새롭게 정의된 쉐이더다. DirectX 11에서는 Compute Shader 5.0을 지원하며, 기존 DirectX 10/ 10.1 GPU들은 Compute Shader 4.0/ 4.1을 지원하여 차이가 있다. 이는 기존 GPU들도 GPGPU를 이용한 활용이 가능하다는 것을 말하며, 새로운 DirectX 11 지원 GPU들은 더 효율적이며 높은 성능을 제공하는 것이다.
Compute Shader 5.0은 DirectX 11 지원 하드웨어에 더욱 최적화되어 더 향상된 성능을 제공하게되며, 각 스레드 그룹에 공유되는 메모리도 16K에서 32K로 2배 가량 늘었고 더 나은 액세스 환경, 그래픽 파이프라인의 텍스처 출력, 더블 연산, 더 나은 동기화를 위한 Atomic 구조 지원 등이 이루어진다.
DirectCompute 11은 HD 5800 시리즈와 NVIDIA GT300 등의 DirectX 11 지원 GPU들에 최적화가 이루어지고 있으며, CUDA를 이용한 PhysX 물리엔진 가속처럼 물리엔진의 GPU 가속, 인공지능 연산, 영상 편집 및 트랜스코딩 등의 GPU가 강점을 가진 분야에서 활용할 수 있다.
멀티스레딩 강화

DirectX 11은 또 멀티스레딩 지원을 이전 DirectX 10/ 10.1보다 크게 향상시켰다. CPU가 현재 다수의 코어를 이용하는 멀티코어로의 전환이 이루어지고 있는 것처럼 GPU 역시 CPU처럼 CPU의 코어에 해당되는 스트림 프로세서 (Stream Processing Unit, SP)를 제공한다.
DirectX 11에서는 다수의 스트림 프로세서를 처리하는 과정 등에서 이전 세대의 DirectX보다 효율성을 크게 높이는데 주안점을 두고 있다. 이전 버전들에서는 여러 가지 스레드들이 동시 요청될 경우 이들의 처리 과정에 제한을 가져왔지만, DirectX 11에서는 이들 처리 과정의 효율을 크게 높였고 멀티스레딩 처리 부분도 개선이 이루어졌다.
따라서, DirectX 11 하드웨어는 DirectX 10/ 10.1 하드웨어들보다 더 향상된 멀티스레드 처리 능력을 제공하게 되었다.
|