벤치리뷰·뉴스·정보/아키텍처·정보분석

[분석정보] GPU의 진화에 대응한 Microsoft의 차세대 API DirectX 12의 배경

tware 2014. 3. 25. 22:30


게임기 풍의 API로 바뀌는 DirectX 12


GDC 회장인 미국 샌프란시스코의 Moscone Center


 Microsoft가 차세대 그래픽 API "Direct3D 12 '의 프리뷰를 3월 17일 ~ 21일 미국 샌프란시스코에서 개최된 게임 개발자 컨퍼런스'GDC (Game Developers Conference) '에서 선보였다. Direct3D 12는 API 세트 "DirectX 12" 안의 3D 그래픽 API다. 이전의 그래픽 API 메이저 체인지 "DirectX 11"는 2009 년. DirectX 12 릴리스 목표는 2015 년이므로, 6 년만의 API 혁신이다.

 그러나 DirectX 12는 새로운 DirectX 가 되는 간단한 API 쇄신에 머물지 않는다. DirectX 12은 DirectX 시작된 이래 개혁으로 API 자산을 일단 백지화하고 새로운 API를 구축한다. 1996 년에 3D 그래픽 API "Direct3D"를 도입한 이후 지금까지 DirectX는 지속적으로 진화 해왔다. DirectX 12에서는 방향을 크게 바꾼다.





2015년 출시가 목표인 DirectX 12는 2009년의 DirectX 11 이후 6년만의 API 혁신


 DirectX 12의 최대의 포인트는 게임 콘솔 (게임기) 풍의 API로의 전환이다. 두꺼운 API 계층에서 하드웨어를 추상화 하는 것이 아니라 API 계층은 가능한 얇게, 더 낮은 수준의 하드웨어에 대한 액세스를 허용한다. API와 드라이버의 오버 헤드를 줄이고, 하드웨어의 성능을 낼 수 있도록 한다. 응용 프로그램이 더 직접적으로 리소스를 제어 할 수 있게 한다.

 또한 프로그래머블화 된 GPU를 보다 효율적으로 사용할 수 있도록 멀티 코어화 된 CPU를 확장 사용할 수 있게 한다. CPU와 GPU의 동기화도 개선하고 메모리 모델을 보다 효율적으로 한다. 이러한 개혁을 행하면서, DirectX 12은 과거의 GPU에서도 작동 호환성을 가진다. AMD라면 GCN (Graphics Core Next), NVIDIA이라면 Fermi (페르미) 이상 GPU에서 지원된다.

 또한 Microsoft는 이 혁신적인 DirectX 12을 PC뿐만 아니라 Xbox one에서 Windows Phone까지 폭넓게 전개한다. 모바일의 컴퓨팅 시대에도 해당 API로 추진한다. GDC에서 DirectX 12의 프리뷰 세션에 AMD와 NVIDIA, Intel 등 친숙한 PC 그래픽 공급 업체 이외에 Qualcomm이 등단해 지원을 표명했다.

 DirectX 12 릴리스 목표는 2015년 말 판매 경쟁에 시기를 맞춘다. DirectX 12의 프리뷰 릴리스는 올해 (2014 년) 등장한다. GDC 세션에서는 Microsoft 레이싱 게임 "Forza Motorsport 4:에 의해, DirectX 12 프로토 타입의 데모가 행해졌다.

DirectX 12 프로토 타입으로 "Forza Motorsport 5" 데모



CPU가 한계점이 되어서 GPU가 성장하는 칩의 현상에 대응


 DirectX 12의 배경에는 반도체 칩의 기술 트렌드의 변화, GPU 하드웨어와 시장의 변화, 개발자의 요구 변화, 그래픽 API의 역할 변화가 있다.

 반도체 칩의 변화가 현저하고, CPU는 멀티 코어화 했지만 CPU 코어의 성능 향상은 둔화되고 있다. 대조적으로 GPU는 급격하게 성능을 더하고 있어 CPU와 GPU 통합 칩에서는 이러한 경향은 점점 강해지고 있다. 이것은 CPU 코어보다 GPU 코어 쪽이 7 ~ 10 배나 성능 / 전력 효율이 높기 때문에 전력의 제약 조건 내에서 성능을 높이려면 GPU 코어를 강화하는 것 이외의 길은 없기 때문이다.



반도체 칩의 트렌드 변화



CPU와 GPU의 성능 향상 정도 비교


 이러한 배경으로 현재 컴퓨터 아키텍처는 성능을 끌어 내기 위해서는 GPU를 더 확장 활용해 나갈수 밖에 없게 되었다. 한편, 소프트웨어 개발자는 쉐이더 그래픽으로 옮겼던 GPU를 유효하게 사용하기 더 직접적으로 GPU 하드를 취급 하는 것을 요구하고 있다. 또한 응용 프로그램 측도 GPU를 범용 컴퓨팅에 활용하고 더 태스크 레벨의 병렬성 비율을 높이려 변화해 왔다.

 그러나 그래픽 API 부분들은 그러한 변화에 추종 할 수 없었다. API 모델은 20년 전에 디자인 된 모델의 연장에 있다. GPU는 CPU가 제어하는​​ 대형 스테이트 머신으로 간주되고 직접적이지 않은 메모리 모델로 멀티 코어 CPU의 확장성을 살리는 것도 부족해 CPU-GPU의 동기화도 효율적이지 않다. 이름과는 정반대로, Direct3D는 다이렉트로 (직접) 하드웨어를 취급 할 수 없었다.

게임 개발자의 요구


응용 프로그램은 GPU도 이용해 병렬성을 높일 수 있도록 변화


20년 이상 전에 디자인 된 모델의 연장에 있는 그래픽 API


 기존의 그래픽 API가 이렇게 추상화 된 것은 이전 PC의 그래픽 API가 다양한 하드웨어를 추상화 해야 했기 때문이다. 그러나 현재는 GPU 하드웨어 자체는 PC 그래픽에 관해서 말하면, GPU를 개발하는 업체 수가 줄어들어 하드웨어 아키텍처는 집약되고 있다. 또한 GPU가 일반화 되었기 때문에 프로세서로의 성격은 회사마다 비슷해 가고 있어 예전처럼 고정 기능 하드웨어 차이가 있는 상황과는 달라지고 있다.

 한편, 게임 콘솔은 결정된 하드웨어를 커버 할 뿐이므로, PC 그래픽 같은 높은 추상화는 필요 없었다. 얇은 API 레이어에서 직접적으로 하드에 던지는 것이 게임 콘솔 스타일이다. 오버 헤드가 작기 때문에 게임 콘솔은 비록 PC와 같은 아키텍처의 GPU로도 높은 실효 성능을 달성 할 수 있었다.


 많은 콘솔이 이러한 얇은 소프트웨어 계층을 가져 콘솔 게임 개발자는 그 스타일에 익숙해져 왔다. 따라서 많은 게임 개발자는 이전부터 콘솔 스타일의 API를 PC에 요청했다. 그리고 현세대 게임 콘솔이 PC 아키텍처와 비슷한 것으로, 잠재적인 요구는 더욱 높아지고 있었다.



멀티 코어 CPU 등 현재의 자원을 잘 쓰는 DirectX 12


 이러한 과제를 해결하기 위해 DirectX 12에서는 20년의 축적을 근본적으로 재구성 했다. 서두에서 언급했듯이 오버 헤드를 줄이고 응용 프로그램이 리소스를 통해 직접적으로 액세스 할 수 있도록 자원 해저드 추적을 용이하게 하고 다중 CPU 코어의 확장성을 높인다. 아래의 Microsoft 슬라이드도 NVIDIA의 슬라이드도 말하고 있는 것은 거의 같고, DirectX 12의 주안점이 그래픽 기능 추가보다 API / 드라이버의 추상화를 낮출 수있는 것으로 나타났다.



DirectX 12의 개요를 정리한 Microsoft 슬라이드


DirectX 12의 개요를 나타낸 NVIDIA 슬라이드



 Microsoft는 일례로 현재의 DirectX 12의 프로토 타입의 데모를 보였다. 4 CPU 코어 머신에서의 렌더링을 Direct3D 11 과 Direct3D 12에서 비교한 것이다. Direct3D 11에서는 메인 스레드의 부하만 매우 높았던 것이, Direct3D 12에서는 4 스레드에 부하가 균등하게 분산되어 CPU의 실행 시간이 크게 단축 되었다.




4 CPU 코어 시스템의 Direct3D 11 및 Direct3D 12의 비교


 사실, DirectX 12는 아직 개발 중이며 많은 기능은 향후 구현 예정이지만, 방향성은 매우 명백하다. 현재, 스테이트 관리 개혁을 위한 파이프 라인 스테이트 개체 또는 렌더링 명령 발행의 재사용을 위한 번들된 명령 목록 개혁, 리소스 바인딩 모델의 개량 등 다양한 요소가 정해져 있다. 구체적인 구현이 진행되면, DirectX 11에 대해 동일한 하드 몇배의 성능 같은 숫자가 나오는 것이다.




DirectX 12에서 구현되는 기능


 Microsoft는 DirectX 12를 PC뿐이 아닌 Xbox one도 제공한다. 하지만 원래 Xbox one의 API 자체가 콘솔 스타일로 DirectX 12과의 친화성이 높다. GDC 세션에서는 Xbox one의 타이틀인 Forza Motorsport 5를 DirectX 12 프로토 타입으로 포트하는데 걸린 노력은 4명/월 로 끝났다고 설명했다.

DirectX 12 프로토 타입으로 Xbox one의 Forza Motorsport 5 포팅



Mantle과 DirectX 12의 관계


 레이어를 얇게하는 DirectX 12의 모습은 AMD의 새로운 그래픽 API "Mantle (맨틀)"하고도 비슷하다. 물론 AMD가 얇은 레이어 Mantle을 낸 순간, DirectX 12의 프리뷰가 진행된 것은 우연이 아니다. 복수의 GPU 관계자가 DirectX 12을 "Mantle 에서 촉발된 API"라고 불렀다. Mantle에 대한 반응으로 등장한 것이 DirectX 12 생각하고 좋은 것 같다.

 어떤 AMD 관계자는 더 명료하게 말한다. "그래픽 API를 가볍게 하자 Microsoft에 몇년 호소 했지만 Microsoft는 움직이지 않았다. 그래서 일을 숙성해 Mantle을 내니 Microsoft에서 겨우 무거운 허리를 올렸다. Mantle이 업계를 움직였다 "

 Microsoft를 움직여 표준 API도 Mantle과 같은 방향으로 켤 수 것이라면, G​​PU 벤더로서 성공하는 것이 된다. AMD 라면, Mantle을 이미 가지고 있는 이 회사는 2015년의 DirectX 12에 대해 2년의 어드밴티지를 갖게 된다. Mantle에서 DirectX 12의 이식이 쉽다면, DirectX 12까지 Mantle 로써 가교 역을 생각해 게임 개발자가 증가해도 무리는 아니다. DirectX 12와 Mantle이 공존하게 되면 Mantle에 래퍼 소프트웨어 층을 씌워 대응 할 수 있을지도 모른다.

 AMD는 DirectX 12의 세션에서는 GCN에서 DirectX 12을 지원한다고 설명했다. 덧붙여서, DirectX 12의 세션에 AMD에서 등단한 것은 Mantle을 발표했던 AMD의 Raja Koduri 씨 (Corporate Vice President, Visual and Perceptual Computing) 였다.



AMD 세션에서는 GCN에서 DirectX 12을 지원한다고 설명



 한편, NVIDIA는 Mantle이 발표된 직후 "표준 API로도 Mantle로 AMD가 주장하고 있는 것과 동일하게 할 수 있다. NVIDIA는 표준 API 아니면 의미가 없다고 생각한다"고 설명 했다. NVIDIA가 이렇게 설명한 것은 그 시점에 이미 DirectX 12의 움직임이 있었기 때문일 것이다. DirectX 12의 세션에 등단한 것은 표준 API로도 가능하다고 설명한 Tony Tamasi 씨 (Senior Vice President of Content and Technology, Nvidia)이다. Mantle의 촉발로 DirectX가 Mantle적인 방향으로 간다면, GPU 중심 메이커인 NVIDIA 에게도 이익이있다.



Fermi 이상 GPU에서 DirectX 12을 지원하는 NVIDIA


 GDC에서 DirectX 12 프리뷰에는 Intel도 등장, 회사의 Haswell (하스웰)의 Iris GPU 코어가 DirectX 12을 지원한다고 설명. 또한 Qualcomm은 DirectX 12에 의해 성능이 오르는 것은 전력 효율이 향상하는 것 이므로 모바일에서도 DirectX 12의 이점이 있다고 설명했다. 덧붙여, Qualcomm의 대표로서 설명을 행했다 Eric Demmers 씨 (Vice President, Engineering, Qualcomm Technologies)는 원래는 AMD 그래픽 부문 CTO였던 인물이다.

 기존의 GPU 코어에서 DirectX 12을 지원하기 때문에 DirectX 12는 출시부터 방대한 인스톨 베이스를 기대할 수 있다. DirectX 12가 나오기 이전의 데스크탑 GPU에서도 100% DirectX 12를 지원할 수 있는 것 외에, DirectX 12을 Microsoft에서 발표하는 시점의 게임 PC의 50%가 DirectX 12을 지원하게 된다.

Intel은 Iris GPU 코어로 DirectX 12를 지원


전력 효율면에서 Qualcomm도 DirectX 12을 지원


출시 시점에서 50%의 게임 PC가 DirectX 12을 지원


GDC의 DirectX 12 미리보기에서 프레젠테이션을 행한 회사의 면면. GPU 벤더의 간부는 오른쪽에서 Eric Demmers 씨 (Vice President, Engineering, Qualcomm Technologies), Tony Tamasi 씨 (Senior Vice President of Content and Technology, Nvidia), Raja Koduri 씨 (Corporate Vice President, Visual and Perceptual Computing, AMD) , Eric Mentzer 씨 (Vice President, Platform Engineering Group, Intel)



역할이 변화된 그래픽 API


 기존의 DirectX는 API가 발표된 시점에서 해당 하드가 갖추어지지 않은 것이 당연했다. 그러나 이번 DirectX 12은 다르다. 그 배경에는 그래픽 API 자체의 역할 변화가 있다.

 DirectX 9까지, GPU 하드웨어를 그래픽 API가 규정해 왔다. 그래픽 API가 지원하는 기능을 GPU의 그래픽 파이프 라인에 하드웨어로 구현했다. DirectX 8까지는 API 및 GPU 하드웨어의 관계는 밀접한 결합되어 있어, API 측에서 보이는 파이프 라인이 그대로 고정 하드웨어로 실현되고 있었다. 아래는 DirectX 8의 예로 왼쪽이 API 위에서 보이는 파이프 라인, 오른쪽이 실제 하드웨어다.


DirectX 8 API 및 GPU 구현



 이러한 API 및 GPU 하드웨어의 밀접한 관계는 프로그래머블 하게 된 DirectX 9부터 흔들리기 시작했다. 그리고 DirectX 10 / 11에서는 API를 규정하는 파이프 라인과 실제 GPU 하드웨어는 크게 차이났다. API가 GPU 하드웨어를 규정하는 것이 아니라, 프로그래머블로 유연한 GPU 하드웨어 상에 특정의 기능을 제공하는 API가 실리는 CPU적인 스타일로 변하기 시작했다.

DirectX 11 API와 GPU 구현


 위의 그림은 DirectX 11로 왼쪽이 API 상의 파이프 라인, 중앙이 NVIDIA와 AMD의 GPU, 오른쪽이 Larrabee 형의 구현이다. 이렇게 API의 굴레에서 떨어진 GPU 하드웨어는 API와 관계없이 마음대로 진화하기 시작했다. 그러한 API와 하드웨어의 관계 변화의 끝에, DirectX 11에서 API 측의 변화가 멈춰 버렸다.

 그 상황에서 드디어 등장한 DirectX 12는 이미 하드웨어를 정의하는 방향은 얇다. DirectX 12에도 부분적으로 새로운 고정 하드웨어를 필요로 하는 부분이 있지만, 주안점은 그래픽 고정 기능의 강화는 없다.

 DirectX 12는 API의 기능을 고정 하드웨어로 실현한 시대로부터 무거운 자산을 정리하고 프로그래머블 하드웨어에 의한 직접적으로 접근하는 길을 연다. 하드웨어의 실태에보다 가까운 접근이라 말할 수 있다.


 DirectX 12가 기존의 GPU에서 지원 가능하다고 GPU 벤더가 선언하는 이유는 여기에있다. API가 하드웨어를 규정하는 것이 아니라, 프로그래머블 하드웨어에 위에 API가 실린다. CPU와 비슷한 스타일이라면, CPU 같은모양에 새로운 API가 조금 전 세대의 GPU에서 작동하는 것은 당연하다고 할 수 있다.



GPU 컴퓨팅과의 관계


 이번에 DirectX 12 프리뷰에서 알려지지 않은 포인트의 한개는 GPU 컴퓨팅에 관한 것이다. 원래, GPU 컴퓨팅에서 그래픽과는 다른 런타임을 사용하는 그래픽 소프트웨어 스택이 복잡하고 오버 헤드가 커 다루기가 어려웠다. 그래픽 API를 정리해 더 직접 결합해 가면, 원리적으로는 GPU 컴퓨팅도 사용하기 쉬운 런타임 시스템으로 간다. 즉, 그래픽과 컴퓨팅의 융합의 기회가 나온다.

 실제로 그래픽 API의 다른쪽에 있는 OpenGL 계를 책정하는 Khronos 그룹의 한 관계자는 "그래픽 API가 변해가면 미래 예를 들어, OpenCL 런타임에 OpenGL 등을 포함 할수  있게 될지도 모른다. 구체적으로 그러한 계획이 있는 것은 아니다.그러나 OpenCL의 런타임이 통합적인 런타이 되어 여러가지 컴파일러로 부터 코드를 깔때기처럼 받게되고, 그 1개에 그래픽 API가 있다는 식으로 될 가능성은 있다 "고 말했다. 더 직결적이고 심플한 GPU 컴퓨팅 측의 소프트웨어 스택에 그래픽 API를 포함 하자는 발상이다. 덧붙여서, OpenGL 계도 기본적으로 DirectX 12과 비슷한 방향으로 향하기 시작했다.

 또 이번에는 DirectX 12의 3D 그래픽 이외의 API는 언급하지 않았다. 내츄럴 휴먼 인터페이스의 보급이나 가상 현실의 등장으로 입력 계의 API 확장도 중요시 되고 있다.



2014년 3월 25일 기사 입니다.



[분석정보] AMD 독자 그래픽스 API Mantle



[분석정보] GDC 2014 미국 MS DirectX 12를 발표



[분석정보] GDC 2014 OpenGL 드라이버 오버헤드는 맨틀과 싸울 수준



[분석정보] 그래픽 및 DirectX 로드맵을 정리



[분석정보] GDC 2016 Unreal Engine 4를 통합형 그래픽 기능으로 움직이다