|
DirectX 10.1은 멀티 및 범용성 강화!
DirectX 10에서부터 Windows Vista에서
도입한 WDDM이 중요한 역할을 담당하게 되는데 DirectX 10에서는 이전의 Windows XP가 하나의 클라이언트에서
하나의 프로그램들을 실행하는 부분이 주를 이루어졌다면, Windows Vista에서는 하나의 클라이언트에서 다양한
어플리케이션을 실행하고 그래픽 처리 부분을 비롯한 다양한 목적으로 사용될 수 있는 부분을 지향하고 있어 그 목적은 더
늘어났다.


과거 GPU들이 사용되었던 경향을 살펴보면, 하나의 클라이언트에 하나의 게임이나 비디오
재생 등의 하나의 어플리케이션 실행에 중점을 두고 있었다면, 최근에는 GPU를 통해 다양한 작업을 가능하게 해주고 있다.
이런 것이 가능해진 것은 물론, CPU 기술의 발전을 통해 듀얼 코어 또는 쿼드 코어의 등장에 따라 멀티 태스킹이
가능해지고 있기 때문이다.
윈도우 XP 환경에서는 멀티 태스킹보다는 하나의 클라이언트에 풀스크린으로 게임을 하거나
비디오 디코딩, 다양한 어플리케이션들을 실행하는 것에 초점을 두고 있었다고 한다면, 윈도우 Vista 환경으로 운영체제가
이동하면서부터 멀티 작업을 염두에 두고 운영체제를 만들었기 때문에 GPU를 통한 비디오 재생, 인코딩 등과 같은 작업들을
비롯하여 창모드의 게임 등도 가능해졌고 GPU를 게임 등의 3D 부분에만 사용이 아닌 물리 연산이나 이미지 프로세시 등의
또 다른 부분에의 활용성을 고려하고 있는 시대로 접어들었다.
Windows Vista에 도입된 WDDM (Windows Display
Driver Model)

[WDDM은 프로그래머와 DirectX 10 API간의 편의성을 증대.]
또한, WDDM을 도입함으로써 개발자들에게는 이전보다 더
많은 프로그래밍의 가능성을 가지게 되며, 이전보다 더 나은 호환성 및 편의성을 제공하게 된다.
WDDM 드라이버는 DirectX 9의 경우 WDDM 1.0
드라이버를 호출하였던 반면, DirectX 10부터는 WDDM 2.0 드라이버를 호출하게 되고 DirectX 10
하드웨어를 필요로 한다. Windows Vista의 DirectX 9 호환 모드로 알려진 DirectX 9.L과
DirectX 10 WDDM 드라이버는 서로 다르고 호환되지 않는 것으로 알려져 있다.
WDDM 드라이버에는 가상 비디오 메모리, GPU 인터럽트,
DirectX 외부의 교차 프로세스 공유가 가능하다.
가상 비디오 메모리 부분은 비디오 메모리는 모든 비디오
데이터와 텍스처 등을 저장하는데 이를 가상화하여 시스템 메모리 내에 비디오 메모리가 가진 데이터를 기록하여 필요할 때
빠르게 불러 사용할 수 있게 된다.
GPU 인터럽트 부분은 WDDM은 나중에 명령이 실행되는
동안이나 명령이 다시 실행되었을 때 그래픽 동작 과정에서 중단이나 멈춤을 가능하게 해준다. 멀티 그래픽 동작 과정에서
하나의 GPU가 동시에 동작하도록 하는 시간 공유에 기반한 스케쥴링을 가능하게 해준다. DirectX 9 기반의 WDDM
드라이버는 쉐이더 프로그램을 중단하지 못하기 때문에 두 개의 쉐이더 프로그램 사이에 예기치 못한 변경 사항이 발생할 수
있다. DirectX 10의 WDDM 드라이버는 진보된 스케쥴링을 통해 쉐이더 프로그램을 중단시킬 수 있고 DirectX
10을 위한 명령이 필요치 않다.
DirectX 외부의 교차 프로세서 공유에서 WDDM은
2D와 3D 장면 렌더링을 위한 DirectX 텍스처의 맞물림에 관한 정보를 메모리 부분에 포함하여 공유된 교차 프로세서를
가능하게 해준다. 따라서, 어플리케이션은 일부 다른 어플리케이션과 맞줄려 장면을 만드는데 협력하게 된다.
이런 기능들은 Windows Vista에서 사용하는
Desktop Windows Manager를 통해 사용되어진다.
또, WDDM은 향상된 고장 허용 범위를 제공한다. 이것은
WDDM 드라이버가 멈추거나 일부 문제로 충돌하게 되면, Windows Vista 그래픽 스택은 묵묵히 드라이버를
재시작하게 된다. 드라이버 업데이트 역시 재시작이 필요치 않다.
그러나, WDDM은 멀티 어댑터, 멀티 모니터 설치와 같은
이질적인 드라이버를 지원하지 않는다. 만약, 멀티 모니터 시스템이 필요하다면 하나 이상의 그래픽 카드에 모니터를 설치하고
두 그래픽 카드는 동일한 WDDM 드라이버를 사용해야 한다. 만약, 하나의 드라이버가 사용되고 있으며, Windows
Vista는 나머지 하나는 사용하지 못한다.
WDDM 버전 별 변화 (WDDM 1.0에서 2.1까지)



WDDM은 1.0 버전에서 2.1버전까지 등장해온 상태인데 DirectX 10에서는 WDDM 2.0을 사용하여 왔고 앞으로
등장할 그래픽 카드들에서 지원할 DirectX 10.1에서는 WDDM 2.1 버전을 사용하게 된다. 물론, 내용에 언급되어
있듯이 기존 DirectX 10 지원 하드웨어들도 WDDM 2.1을 사용할 수 있다.
WDDM 1.0 버전에서 GPU 스케쥴링과 가상 메모리, API들과의 자원 공유가 크게 작용했다면, WDDM 2.0에서는
멀티 태스킹 지원의 강화를 들 수 있다. WDDM 2.1 버전은 기존의 WDDM 2.0 GPU들도 사용이 가능하고 GPU의
기록 중단 방해하지 못하며, 선점형 멀티 태스킹의 지원 등을 통해 융통성있는 GPU 사용이 가능해졌다.
WDDM 2.1로의 변화에 맞춰 AMD와 NVIDIA 역시 이들을 사용하여 기존의 부족한 부분을 채워나가고 있는데
대표적으로 멀티 엔진 및 멀티 GPU 지원 부분을 들 수 있다.


멀티 엔진과 멀티 GPU 지원은 현재의 AMD와 NVIDIA 모두 각각 Native CrossFire와 SLI 기술을 통해
구현하고 있는데 이들을 동기화시켜 더 나은 3D, Video 성능을 끌어낼 수 있다.
또, 여기에는 기록 중단 방해가 발생하였을 때 이를 즉시 전환하여 GPU가 다음 작업을 원활하게 해줄 수 있는 기술을
비롯하여, 효율적인 메모리 관리, GPGPU의 범용적인 목적, 더 나은 어플리케이션 응답 향상 등의 다양한 것들이 추가되고
있다. 더불어 GPU와 가상 메모리 사용 등에 따른 보안 부분도 강화하고 있다.

WDDM 2.1을 이을 WDDM 3.x 버전에서는 기존의 WDDM 2.1버전의 장점이
되는 부분들을 모두 포함하고 있으며, 기존의 WDDM 2.1 버전보다 발전된 멀티 태스킹과 멀티 GPU 등의 지원, 그리고
가상 머쉰을 지원함으로써 멀티 태스킹을 더욱 발전시킬 수 있게 된다.
결국, DirectX 10.1에서는 WDDM 2.1 버전의 지원을 통해 이전보다 향상된
GPU 멀티 태스킹을 구현하고 멀티 GPU 부분에서 더 나은 처리 능력을 끌어올릴 수 있도록 하게 만드는 부분이
DirectX 10.1이 지향하고 있는 방향이다. |