게임기와 닮은 API로 바뀐 다이렉트 X 12

 

1.jpg

 

GDC가 열린 미국 샌프란시스코의 모스콘 센터

 

마이크로소프트가 차세대 그래픽 API, 다이렉트 3D 12의 프리뷰를 3월 17일~21일에 미국 샌프란시스코에서 열린 게임 개발자 컨퍼런스 GDC(Game Developers Conference)에서 개최했습니다. 다이렉트 3D 12는 API 세트인 다이렉트 X 12의 3D 그래픽 API입니다. 지난번의 그래픽 API 메이저 체인지인 다이렉트 X 11은 2009년에 나왔고, 다이렉트 X 12의 발매 목표는 2015년이니 6년 만의 API 혁신이 됩니다.

 

그러나 다이렉트 X 12는 새로운 다이렉트 X라는 단순한 API 업그레이드가 아닙니다. 다이렉트 X 12는 다이렉트 X가 나온 후 가장 큰 개혁으로 API 리소스를 백지화해 새로 API를 구축합니다. 1996년에 3D 그래픽 API인 다이렉트 3D를 도입한 이후 지금까지 다이렉트 X는 계속적 진화해 왔습니다. 다이렉트 X 12에선 그 방향이 크게 바뀝니다.

 

2.jpg

 

3.jpg

 

2015년 출시를 목표로 한 다이렉트 X 12는 2009년의 다이렉트 X 11 이후 6년만의 API 혁신이 됩니다.

 

다이렉트 X 12에서 가장 큰 특징은 게임 콘솔 형태로 API를 전환한 것입니다. 두터운 API 레벨에서 하드웨어를 추상화하는 것이 아니라, API레벨을 되도록 얇게 해서 보다 로우 레벨의 하드웨어로 접근을 가능하게 합니다. API와 드라이버의 오버헤드를 줄여 하드웨어의 성능을 높이도록 합니다. 이러면 애플리케이션이 더 직관적으로 리소스를 통제할 수 있게 됩니다.

 

또 프로그래머블화한 GPU를 보다 효율적으로 쓸 수 있도록 멀티 코어화한 CPU를 확장할 수 있게 합니다. CPU와 GPU의 동기화도 개선해 메모리 모델을 보다 효율적으로 만듭니다. 이러한 개혁과 동시에 다이렉트 X 12는 과거의 GPU에서도 동작하는 호환성을 갖춥니다. AMD는 GCN(Graphics Core Next), NVIDIA는 페르미 이후의 GPU에서 지원합니다.

 

또한 마이크로소프트는 이 혁신적인 다이렉트 X 12를 PC뿐 아니라 Xbox One부터 윈도우 폰까지 폭넓게 보급시킵니다. 모바일 위주의 컴퓨팅 시대에도 대응하는 API로 추진하는 것입니다. GDC에서 다이렉트 X 12의 프리뷰 세션에는 AMD와 NVIDIA, 인텔과 같은 주요 PC 그래픽 제조사 뿐만 아니라 퀄컴까지 나와 지원 계획을 밝혔습니다.

 

다이렉트 X 12의 발매 목표는 2015년 말이며, 다이렉트 X 12의 프리뷰 릴리스는 올해입니다. GDC의 세션에선 마이크로소프트의 레이싱 게임인 프로자 모터스포츠 5를 이용한 다이렉트 X 12 모델의 데모가 나왔습니다.

 

4.jpg

 

다이렉트 X 12 모델을 사용한 포르자 모터스포츠 5의 데모

 

 

CPU가 한계에 이르고 GPU가 성장하는 현상에 맞춤

 

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

 

반도체 칩의 변화는 현저히 드러나고 있습니다. CPU는 멀티코어로 발전했지만 CPU 코어의 성능 향상 속도는 점점 느려지고 있습니다. 그에비 해 GPU는 급격히 성능을 높이고 있으며 CPU와 GPU의 통합 칩에서 이 경향은 갈수록 심해지고 있습니다. 이는 CPU 코어보다 GPU 코어가 7~10배 정도 성능/전력 효율이 높으니, 한정된 전력에서 성능을 높이려면 GPU 코어를 강화하는 것 이외의 길이 없기 때문입니다.

 

5.jpg

 

6.jpg

 

반도체 칩 트렌드의 변화

 

7.jpg

 

CPU와 GPU의 성능 향상 비교

 

이러한 배경 때문에 지금의 컴퓨터 아키텍처는 성능을 끌어내기 위해서 GPU를 더욱 확장해가며 활용해야 합니다. 그리고 소프트웨어 개발자는 쉐이더 그래픽으로 옮겨간 GPU를 효율적으로 사용하여 보다 직관적으로 GPU 하드웨어를 다루는 것을 필요로 하고 있으며, 애플리케이션 쪽도 GPU를 범용 컴퓨팅을 활용해 보다 작업 병렬성의 비율을 높이는 쪽으로 변화해 왔습니다.
 

그러나 그래픽 API는 그러한 변화를 따라가지 못했습니다. API의 모델은 20년도 더 전에 디자인된 모델의 연장선상에 있습니다. GPU는 CPU가 제어하는 라지 스테이트 머신으로 다루기에 직관적이지 않은 메모리 모델을 쓰고, 멀티코어 CPU의 확장성을 살리는 것도 부족해 CPU-GPU의 동기화도 효율적이지 않습니다. 이름과 다르게 다이렉트 3D는 하드웨어를 '다이렉트로-직접적으로- 다루지 못했습니다.

 

8.jpg

 

게임 개발자의 요구

 

9.jpg

 

애플리케이션은 GPU를 이용해 병렬성을 높이도록 변화

 

10.jpg

 

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

 

기존의 그래픽 API가 이렇게 추상화됐던 이유는 예전 PC의 그래픽 API가 다양한 하드웨어를 추상화해야 했기 때문입니다. 그러나 지금 GPU 하드웨어 자체는 PC 그래픽용 GPU를 개발하는 업체 수가 적어져 하드웨어 아키텍처가 하나로 모아지는 추세입니다. 또 GPU가 범용화하면서 프로세서로서 성격은 모두 비슷하고 전처럼 고정 기능 하드웨어의 차이가 있을 뿐입니다.

 

한편 게임 콘솔의 경우 PC 그래픽처럼 추상화할 필요가 없습니다. 얇은 API 레이어에서 바로 하드웨어에 액세스하는 것이 게임 콘솔의 방식입니다. 오버헤드가 작아 게임 콘솔은 PC와 같은 아키텍처의 GPU를 써도 효율이 높습니다.

 

많은 콘솔이 이렇게 얇은 소프트웨어층을 갖고 있어 콘솔 게임 개발자는 그런 스타일에 익숙해졌습니다. 그래서 많은 게임 개발자는 이전부터 콘솔 스타일의 API를 PC에도 요구하고 있었습니다. 그리고 최근 들어 게임 콘솔이 PC 아키텍처와 비슷해지면서 그런 잠재적인 수요는 더욱 늘어났습니다.

 

 

멀티코어 CPU를 비롯해 지금의 리소스를 잘 활용하는 다이렉트 X 12

 

이러한 과제를 해결하기 위해 다이렉트 X 12는 지난 20년 동안 누적됐던 것을 근본적으로 재편성했습니다. 앞서 말한대로 오버헤드를 줄이고 애플리케이션이 리소스를 직접 액세스할 수 있도록 했으며 멀티 CPU 코어에 최적화했습니다. 아래 나온 마이크로소프트와 NVIDIA의 슬라이드는 설명하는 내용이 모두 같은데, 다이렉트 X 12의 핵심 특징은 그래픽 기능의 추가가 아닌 API/드라이버의 추상화를 줄이는 데 있음을 설명하고 있습니다.

 

11.jpg

 

12.jpg

 

다이렉트 X 12의 개요를 정리한 마이크로소프트의 슬라이드

 

13.jpg

 

다이렉트 X 12의 개요를 정리한 NVIDIA의 슬라이드

 

마이크로소프트는 그 사례로 다이렉트 X 12의 프로토타입 데모를 공개했습니다. 쿼드코어 CPU에서 다이렉트 3D 11과 다이렉트 3D 12의 렌더링을 비교한 것입니다. 다이렉트 3D 11에선 메인 스레드의 부하만 매우 높았지만 다이렉트 3D 12는 4개의 스레드에 부하가 균등하게 분산되어 CPU의 실행 시간이 대폭 짧아졌습니다.

 

14.jpg

 

15.jpg

 

16.jpg

 

쿼드코어 CPU에서 다이렉트 3D 11과 다이렉트 3D 12의 비교

 

다이렉트 X 12가 개발 중인 많은 기능은 앞으로 구현될 예정이지만 그 방향은 매우 명백합니다. 지금은 스테이트 매니지먼트의 개량을 위한 파이프라인 스테이트 오브젝트나, 렌더링 명령 발행의 재이용을 위한 번들화, 명령어 목록의 개량, 자원 바인딩 모델의 개량 등 여러 요소가 정해져 있습니다. 구체적인 실장이 진행되면 다이렉트 X 11과 같은 하드웨어에서 몇배의 성능이 나올 것입니다.

 

17.jpg

 

18.jpg

 

19.jpg

 

다이렉트 X 12에서 구현되는 기능

 

마이크로소프트는 다이렉트 X 12를 PC뿐만 아니라 Xbox One에도 제공합니다. 그러나 Xbox One의 API는 원래 콘솔 스타일이라 다이렉트 X 12와 친화성이 높습니다. GDC의 세션에서는 Xbox One용 게임 타이틀인 포르자 모터스포츠 5를 다이렉트 X 12 모델로 포팅하는 것이 4명이 한달 동안 작업한 것이라고 설명했습니다.

 

20.jpg

 

다이렉트 X 12 모델로 Xbox One의 포르자 모터스포츠 5를 이식

 

 

맨틀과 다이렉트 X 12의 관계

 

이런 다이렉트 X 12의 모습은 AMD의 새 그래픽 API인 맨틀과도 비슷합니다. 물론 AMD가 API 레벨을 얇게 줄인 맨틀을 내놓자마자 다이렉트 X 12의 프리뷰가 나온 것은 우연이 아닙니다. 여러 GPU 관계자들은 다이렉트 X 12를 맨틀이 촉발한 API라 부릅니다. 맨틀에 대한 반응으로 다이렉트 X 12가 등장했다고 말할 수 있겠습니다.

 

AMD 관계자는 더욱 간단하게 말합니다. "그래픽 API를 가볍게 하자고 마이크로소프트에게 몇 년동안 호소했지만 마이크소프트는 움직이지 않았습니다. 그래서 맨틀을 냈더니 마이크로소프트가 겨우 무거운 엉덩이를 들었습니다. 맨틀이 업계를 움직인 것입니다."

 

마이크로소프트를 움직여 표준 API가 맨틀과 같은 방향으로 향하게 된다면 GPU 제조사 입장에선 성공이라는 것입니다. AMD의 경우 맨틀을 이미 갖고 있으니 2015년에 나올 다이렉트 X 12에 비해 2년이 더 빠릅니다. 맨틀에서 다이렉트 X 12로 이식이 쉽다면 다이렉트 X 12가 나오기 전에 맨틀을 먼저 쓰려는 게임 개발자가 늘어나는 것도 이상하지 않습니다. 다이렉트 X 12와 맨틀이 공존하면 맨틀에 Wraper 소프트웨어 레이어를 씌우는 식으로 대응할 수 있을지도 모릅니다.

 

AMD는 다이렉트 X 12의 세션에서 GCN이 다이렉트 X 12를 지원한다고 설명했습니다. 그리고 다이렉트 X 12의 세션에 오른 AMD측 인원은 맨틀을 발표한 Raja Koduri씨(Corporate Vice President, Visual and Perceptual Computing)였습니다.

 

21.jpg

 

22.jpg

 

AMD 세션에선 GCN이 다이렉트 X 12를 지원한다고 설명

 

한편 NVIDIA는 맨틀이 발표된 직후에 "표준 API에서도 AMD가 맨틀을 통해 주장하는 것을 똑같이 할 수 있다. NVIDIA는 표준 API가 아니면 의미가 없다고 생각한다"고 설명했습니다. NVIDIA가 이렇게 설명한 건 그 시점에 이미 다이렉트 X 12가 나올 것임을 알고 있었기 때문일 것입니다. 다이렉트 X 12 세션에는 표준 API에서도 맨틀과 비슷한 일이 가능하다고 설명했던 Tony Tamasi씨(Senior Vice President of Content and Technology, Nvidia)가 나왔습니다. 맨틀에 의해 다이렉트 X가 맨틀과 비슷한 방향으로 간다면 GPU 위주 회사인 NVIDIA도 이득을 보게 됩니다.

 

23.jpg

 

24.jpg

 

페르미 이후의 GPU에서 다이렉트 X 12를 지원하는 NVIDIA

 

25.jpg

 

GDC의 다이렉트 X 12 프리뷰에는 인텔도 등장해 자사의 하스웰 아이리스 GPU 코어가 다이렉트 X 12를 지원한다고 설명했습니다.

 

26.jpg

 

또 퀄컴은 다이렉트 X 12에서 전력 효율이 향상한다고 설명하며 모바일에도 다이렉트 X 12의 장점이 있음을 설명했습니다. 그리고 퀄컴의 대표로 설명을 담당한 Eric Demmers씨(Vice President, Engineering, Qualcomm Technologies)는 원래는 AMD 그래픽 부서의 CTO였던 인물입니다.

 

27.jpg

 

기존의 GPU 코어에서 다이렉트 X 12를 지원하도록 만들기에 다이렉트 X 12는 출시될 때부터 방대한 기반을 기대할 수 있게 됩니다. 다이렉트 X 12가 나오기 전에 출시됐던 데스크탑 GPU에서도 다이렉트 X 12를 100% 지원하고, 다이렉트 X 12가 나올 때쯤엔 출시되는 게임의 50%가 다이렉트 X 12를 지원한다고 하네요.

 

28.jpg

 

GDC의 다이렉트 X 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의 역할 변화

 

기존의 다이렉트 X는 API가 출시된 시점에 이를 지원하는 하드웨어가 많지 않은 게 당연했습니다. 그러나 이번 다이렉트 X 12는 다릅니다. 그 배경에는 그래픽 API 자체의 역할 변화가 있습니다.

 

다이렉트 X 9까지는 GPU 하드웨어를 그래픽 API가 규정했습니다. 그래픽 API가 지원하는 기능을 GPU의 그래픽 파이프라인에서 하드웨어로서 구현했습니다. 다이렉트 X 8까지는 API와 GPU 하드웨어의 관계가 밀접하게 결합되어 API에서 보는 파이프라인이 그대로 고정 하드웨어로 실현됐습니다. 아래는 다이렉트 X 8의 예인데 왼쪽이 API의 파이프라인이고 오른쪽이 실제 하드웨어입니다.

 

29.png

 

다이렉트 X 8 API와 GPU 구현

 

이러한 API와 GPU 하드웨어의 밀접한 관계는 프로그래머블이 가능해진 다이렉트 X 9부터 흔들리기 시작했습니다. 그리고 다이렉트 X 10/11에서는 API가 규정하는 파이프라인과 실제 GPU 하드웨어는 큰 차이가 나게 됩니다. API가 GPU 하드웨어를 규정하는 것이 아니라 프로그래머블로 유연한 GPU 하드웨어에서 특정 기능을 실현하는 API를 불러온다는 CPU적인 방식으로 변하게 됩니다.

 

30.png

 

다이렉트 X 11 API와 GPU 구현

 

위 그림은 다이렉트 X 11로 왼쪽이 API의 파이프 라인, 중앙이 NVIDIA나 AMD의 GPU, 오른쪽이 라라비의 구현입니다. 이처럼 API의 굴레에서 벗어난 GPU 하드웨어는 API와는 무관한 방향으로 진화하기 시작했습니다. 그렇게 API와 하드웨어의 관계가 변하다가 다이렉트 X 11에서 API의 변화가 멈추게 됩니다.

 

그런 상황에서 겨우 등장한 다이렉트 X 12는 이제 하드웨어를 정의하는 역할은 거의 보이지 않습니다. 다이렉트 X 12에도 부분적이나마 새로운 고정 기능 하드웨어를 필요로 하는 부분이 있지만 주요 특징은 그래픽 고정 기능의 강화가 아닙니다.

 

다이렉트 X 12는 API의 기능을 고정 하드웨어로 실현하던 시절의 무거운 자산을 청산하고 프로그래머블 하드웨어에 직접 접근하는 길을 열어, 하드웨어의 실체에 보다 가까이 다가갈 수 있게 됐습니다.

 

다이렉트 X 12를 기존의 GPU에서 지원할 수 있다고 GPU 업체가 선언한 이유도 바로 여기에 있습니다. API가 하드웨어를 규정하는 것이 아니라 프로그래머블 하드웨어에 API를 불러오는 것입니다. CPU와 비슷한 방식이니 CPU처럼 새로운 API가 구형 GPU에서 동작하는 것은 당연하다고 할 수 있습니다.

 

 

GPU 컴퓨팅의 관계

 

이번 다이렉트 X 12 프리뷰에서 나오지 않는 부분 중 하나는 GPU 컴퓨팅에 관한 것입니다. 원래 GPU 컴퓨팅에서 그래픽과 다르게 런타임을 사용하는 이유가, 그래픽 소프트웨어 스택이 복잡하고 오버 헤드가 커서 다루기 어려웠기 때문입니다. 그래픽 API를 정리해 더 직관적으로 하면 이론적으로는 GPU 컴퓨팅에서 쓰기 쉬운 런타임 시스템이 됩니다. 즉 그래픽과 컴퓨트를 융합하는 기회가 옵니다. 

 

실제로 또 다른 그래픽 API인 OpenGL을 책정하는 Khronos 그룹의 관계자는 "그래픽 API가 변화하면 앞으로 OpenCL의 런타임에 OpenGL 등을 합칠 수 있게 될지도 모릅니다. 구체적으로 그런 계획이 있는 건 아니나, OpenCL의 런타임이 통합 런타임에 다양한 컴파일러의 코드를 흡수하게 되고, 그 중에 그래픽 API가 있는 식으로 될 가능성은 있습니다"라고 말했습니다. 더욱 지관적이고 단순한 GPU 컴퓨팅의 소프트웨어 스택에 그래픽 API을 합치자는 발상입니다. 참고로 OpenGL계열도 기본적으로는 다이렉트 X 12와 비슷한 방향으로 가기 시작했습니다.

 

또 이번에는 다이렉트 X 12에서도 3D 그래픽 이외의 API에 대해서는 언급하지 않았습니다. 네추럴 휴먼 인터페이스의 보급이나 가상 현실의 등작으로 입력 계열의 API 확장도 점점 더 중요해지고 있습니다.

기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.