본문 바로가기
IT/Hardware/Graphics

윈도우8은 뛰어난 그래픽 가속성능을 지원한다.

by 에비뉴엘 2012. 8. 12.
반응형




윈도우8은 다이렉트X 11.1을 기본적으로 내장하고 그 기술(Direct2D/Direct3D)로 구현된 OS이기때문에 DX 11.1을 기준으로 설명합니다.

DirectX 11.1 지원 그래픽카드

AMD Radeon HD 7000 시리즈
NVIDIA GeForce 600 시리즈







윈도우8 그래픽파트 개발자의 칼럼입니다.


Microsoft는 Windows 8에서 모든 응용 프로그램이 최신 그래픽 하드웨어의 아름다운 고성능 그래픽을 사용할 수 있도록 지원하는 작업에 착수했습니다. 이 작업은 폭넓은 API 및 기능을 제공해 온 DirectX 그래픽의 강력한 기술을 기반으로 합니다. Windows 7의 경우에는 DirectX의 기능을 확장하여 광범위한 응용 프로그램을 위한 공통 하드웨어 가속 그래픽 플랫폼을 제공했습니다. 이전까지는 DirectX가 주로 3-D 그래픽을 제공했지만 우리는 소위 '주류' 그래픽이라고 불리는 기능을 추가했습니다. 대부분의 사용자들은 웹 브라우저, 이메일, 일정 및 생산성 응용 프로그램 같은 일반 데스크톱 응용 프로그램을 매일 사용합니다. Windows 7에는 2-D 그래픽(모습, 비트맵 등)을 위한 DirectX와 텍스트 처리를 위한 DirectWrite의 두 가지 구성 요소가 추가되었습니다. 이러한 추가 구성 요소는 성능에 초점이 맞추어져 있을 뿐만 아니라 높은 수준의 2-D 렌더링을 제공합니다. 이를 통해 DirectX는 모든 유형의 응용 프로그램을 위한 하드웨어 가속 그래픽 플랫폼이 되었습니다. 사실 우리는 Internet Explorer 9에서 웹에 하드웨어 가속을 도입함으로써 일반 응용 프로그램도 DirectX를 사용할 수 있다는 것을 증명했습니다. WinRT에서는 새로운 모든 Windows 8 응용 프로그램에 이러한 기능을 적용했습니다. 그래픽 팀의 그룹 프로그램 관리자인 Rob Copeland가 작성한 이 글은 이 새로운 클래스의 그래픽 응용 프로그램을 지원하기 위해 우리가 한 일을 자세히 소개합니다. -Steven-

 


컴퓨터 그래픽의 기본 원칙은 고성능입니다. 개인 컴퓨팅의 초창기에는 대부분의 추가 그래픽 카드가 CAD/CAM 및 게임 같은 특수 응용 프로그램에만 초점을 맞추었습니다. 심지어 모든 그래픽 성능을 인터페이스 및 경험 개선에 사용해야 한다는 의견도 있었습니다. 최초의 PC용 그래픽 카드 중 하나인 S3 Graphics의 “Windows Accelerator”는 화면의 창을 더 빠르게 움직여서 사용자 경험에 집중했습니다. 그래픽 하드웨어의 발전에 따라 개발자들이 하드웨어 상호 작용에 사용하는 방법 역시 발전했습니다.

DirectX는 개발자들이 PC의 그래픽 하드웨어를 사용하여 텍스트, 도형 및 3-D 장면을 그려서 화면에 표시할 수 있는 일반 응용 프로그램 프로그래밍 인터페이스 또는 API를 제공하는 Windows의 일부입니다. 또한 시간이 지나면서 DirectX는 기능 및 성능이 모두 발전했습니다. 초창기에는 DirectX가 주로 게임에만 주로 사용되었습니다. 하지만 응용 프로그램의 발전으로 그래픽 중심의 사용자 경험을 제공하면서 보다 나은 성능과 풍부한 시각적 효과를 제공하기 위해 많은 응용 프로그램에서 DirectX를 사용하기 시작했습니다.

Windows 8의 그래픽 경험에 대한 계획

우리는 Windows 8 그래픽 작업을 계획할 때 사용자가 앱 및 Windows 자체와 상호 작용할 수 있는 새롭고 시각적으로 풍부한 방법을 개발하기로 했습니다. 또한 Metro 스타일 앱을 만들 수 있는 새로운 플랫폼을 개발하고 이전보다 훨씬 다양한 하드웨어를 목표로 삼기로 했습니다. 뛰어난 그래픽 플랫폼을 가지고 작업을 시작하기는 했지만 이러한 목표를 달성하려면 해야 할 일이 많았습니다. 우리는 다음과 같은 4가지 주요 목표를 세웠습니다.

  1. 모든 Metro 스타일 경험이 부드럽고 신속하게 렌더링되도록 합니다.
  2. 모든 Metro 스타일 앱에 사용 가능한 하드웨어 가속 플랫폼을 제공합니다.
  3. DirectX에 새 기능을 추가하여 멋진 시각적 경험을 제공합니다.
  4. 지금껏 경험할 수 없었던 가장 광범위한 그래픽 하드웨어를 지원합니다.

이러한 각각의 목표는 Windows 8 개발의 서로 다른 측면을 다루지만 그래픽 플랫폼의 뛰어난 성능과 기능에 의존한다는 공통점이 있습니다.

성능을 위한 계획

Windows의 그래픽 성능은 운영 체제와 CPU, GPU(graphics processing unit) 및 관련 디스플레이 드라이버로 구성된 하드웨어 시스템에 따라 좌우됩니다. 새로운 Metro 스타일 앱을 위한 뛰어난 경험을 제공하기 위해서는 소프트웨어 플랫폼과 하드웨어 시스템의 뛰어난 성능을 보장해야 했습니다.

과거에는 다양한 벤치마크 및 앱을 사용하여 DirectX의 성능을 측정했습니다. 이러한 방식은 주로 3D 게임에서 사용되었습니다. 지금도 게임이 매우 중요하지만 이러한 기존의 그래픽 성능 측정 방식이 그래픽 중심의 2D 주류 앱에 필요한 모든 정보를 제공하지는 못했습니다.

그래서 작업 진행 상황을 추적할 수 있는 시나리오 중심의 테스트 및 메트릭을 새로 만들었습니다. 우리가 사용하는 메트릭은 다음과 같습니다.

1.  프레임 속도

우리는 프레임 속도를 FPS(초당 프레임 속도)로 표시합니다. 이 메트릭은 게임 벤치마크에서 광범위하게 사용되며, 비디오 콘텐츠 및 기타 앱에서도 중요한 요소입니다. 화면에 애니메이션이 부드럽게 표시되는 프레임 속도는 60FPS입니다. 대부분의 컴퓨터 화면이 60Hz에서 새로 고침을 수행하기 때문에 이 속도를 목표로 삼았습니다. 이 프레임 속도라면 Windows에서 '손가락 동작과 일치'하는 터치 조작을 통해 매우 부드러운 애니메이션을 제공할 수 있습니다.

2.  결함 횟수

프레임 속도가 중요한 메트릭이지만 전체 성능을 나타내지는 않습니다. 예를 들어, 10분 동안 벤치마크를 실행하여 평균프레임 60FPS가 나왔다고 하면 얼핏 듣기에 완벽하다고 생각할 수 있습니다. 하지만 테스트의 최저 프레임 속도가 얼마인지는 알 수 없습니다. 예를 들어, 처리량이 많은 부분에서 프레임 속도가 일시적으로 10FPS까지 떨어졌다면 애니메이션이 원활하게 실행되지 않습니다. 결함 횟수 메트릭은 렌더링이 1/60초를 초과하여 프레임 속도가 감소한 횟수를 측정합니다. 동시에 발생하는 프레임 누락 횟수도 측정합니다. 이 테스트의 목적은 애니메이션을 실행하는 동안 프레임이 누락되지 않게 하는 것입니다.

3.   최초 프레임까지 걸리는 시간

사용자들은 앱이 신속하게 실행되기를 기대합니다. 따라서 DirectX 초기화 속도가 빨라야 합니다. '최초 프레임까지 걸리는 시간'이란 앱을 탭하거나 클릭하여 실행한 순간부터 화면에 앱의 첫 번째 프레임이 나타날 때까지 걸리는 시간을 말합니다. 이 메트릭을 측정하기 위해 그래픽 시스템을 분석하고 최적화할 수 있는 간단한 앱을 개발하여 그래픽 장치를 초기화하고, 필요한 메모리를 할당하는 등의 작업에 걸리는 시간을 측정했습니다. 이 테스트를 통해 DirectX 설정 시간을 대폭 줄일 수 있습니다.

4.  메모리 사용량

그래픽 구성 요소에서 사용하는 메모리 양이 많을수록 앱에서 사용할 수 있는 메모리 양이 줄어듭니다. 시스템 메모리의 대부분을 앱에서 사용할 수 있다면 최상의 앱 성능을 경험하는 동시에 더 많은 앱을 실행할 수 있습니다. 앱에서는 시스템 메모리와 GPU 메모리를 모두 사용합니다. GPU 메모리는 주로 이미지, 기하 도형 및 텍스트를 그리는 등의 렌더링 작업에 사용됩니다. CPU를 사용하는 그래픽 작업이 있기 때문에 시스템 메모리도 사용합니다.

메모리 사용량의 특징을 파악하기 위해 다음과 같은 시나리오에서 시스템이 사용하는 메모리를 측정했습니다.

  • 앱이 유휴 상태. 즉, 아무 작업도 하지 않으며 화면에 새 정보를 렌더링하거나 표시하지 않습니다.
  • 앱이 화면에 정보 표시. 이 시나리오는 간단한 그리기의 기본 메모리 사용량을 나타냅니다.
  • 텍스처 생성. GPU에서 이미지 개체를 대규모로 만드는 데 사용된 메모리를 나타냅니다.
  • 꼭지점 버퍼 생성. 기하 도형을 생성하는 메모리 오버헤드를 나타냅니다.
  • GPU 데이터 업로드. GPU에 데이터를 업로드하는 작업과 관련된 메모리 오버헤드를 측정합니다.

다양한 유형의 앱 및 시나리오에 걸쳐 메모리 사용량을 측정한 결과 DirectX 및 디스플레이 드라이버를 더욱 최적화할 수 있었습니다.

5.  CPU 사용량

대부분의 그래픽 작업은 GPU 외에 CPU까지 사용합니다. 예를 들어, 앱이 무엇을 그릴지 계산할 때 이러한 계산은 일반적으로 CPU에서 수행됩니다. 작업에서 CPU를 많이 사용할수록 CPU가 다른 작업에 할당할 수 있는 사이클이 줄어들기 때문에 CPU 사용량을 이해하는 것이 중요합니다. 그래픽 성능과 시스템 전반의 응답성을 높이기 위해 CPU와 GPU 사이에 작업 균형을 효율적으로 유지하는 것이 중요합니다.

이러한 벤치마크 및 메트릭은 원활한 사용자 경험과 앱을 제공하고 성능을 높이는 데 많은 도움이 됩니다. 또한 주류 앱을 이해하는 데도 많은 도움이 됩니다. 물론 우리는 지금도 산업 벤치마크, 게임 및 기타 성능 측정 방법을 사용하고 있습니다.

하드웨어 가속 주류 그래픽

주류 그래픽을 살펴보는 방법은 다양합니다. 우리는 사용자에게 탁월한 성능과 경험을 제공하기 위해 Metro 스타일 앱과 데스크톱 앱의 다양한 예를 연구하여 그래픽 하드웨어가 사용되는 방식을 파악했습니다. 특히, Internet Explorer 9Windows Live 메일 및 Windows Live Messenger는 DirectX를 매우 효과적으로 사용합니다. 이러한 앱은 DirectX를 활용하여 작업을 깔끔하게 처리하므로 다른 앱이 나아갈 방향을 제시하는 좋은 본보기입니다. 이에 따라 주류 앱을 빠르고 멋지게 보이도록 만들기 위해 많은 투자를 했습니다.

텍스트 성능 개선

텍스트는 Windows에서 가장 많이 사용되는 그래픽 요소이기 때문에 텍스트 렌더링 성능을 개선하면 사용자 경험을 향상시킬 수 있습니다. 고품질 고성능 텍스트 디스플레이는 웹 페이지, 이메일 프로그램, 인스턴트 메시지 및 기타 읽기용 앱에 많은 도움이 됩니다.

Metro 스타일 디자인 언어는 풍부한 타이포그래피를 선보이고 다양한 Metro 스타일 경험은 뛰어난 가독성을 제공하는 데 초점을 두고 있습니다. DirectWrite는 고품질 타이포그래피를 제공하고, 렌더링에 사용되는 글꼴 데이터를 초고속으로 처리하고, 업계 최고의 전역 텍스트를 지원합니다. 우리는 Metro 스타일 앱의 기본 텍스트 렌더링을 최적화하여 보다 나은 성능과 효율성을 제공함으로써 Windows 8의 텍스트 성능을 지속적으로 개선하는 한편, 타이포그래피 품질 및 전역 텍스트 지원을 유지하고 있습니다.

아래의 막대 차트는 이 작업의 결과로 개선된 성능을 표시한 것으로, 다음 텍스트 시나리오에 대한 측정값이 포함되어 있습니다.

  • 웹 페이지 또는 Word 문서에서 볼 수 있는 단락 형태의 본문 크기 텍스트 형식으로 가득한 화면 렌더링
  • 단추 레이블 또는 메뉴 같은 사용자 인터페이스 컨트롤에서 볼 수 있는 본문 크기의 텍스트로 가득한 화면 렌더링
  • Metro 스타일 앱의 제목이나 웹의 블로그 글 및 뉴스 기사 제목에서 볼 수 있는 제목 크기의 텍스트로 가득한 화면 렌더링

Windows 7의 프레임 속도 증가 단락 150%, 사용자 인터페이스 131%, 제목 336%

터치 스크린에서 장문의 문서를 스크롤할 때 성능이 개선되었다는 것을 확연하게 느낄 수 있습니다. 또한 문자 렌더링 시간이 감소하여 CPU 사이클에 여유가 생긴 만큼 빈번하게 발생하는 터치 입력을 처리하거나 좀 더 복잡한 문서 레이아웃을 표시하는 등의 다른 작업을 수행할 수 있습니다.

기하 도형 렌더링 성능 개선

텍스트 외에 2D 기하 도형 렌더링 성능도 획기적으로 개선되었습니다. 기하 도형 렌더링은 아래의 예와 같이 테이블, 차트, 그래프, 다이어그램, 사용자 인터페이스 요소 등을 만드는 데 사용되는 핵심 그래픽 기술입니다. Windows 8의 경우 Metro 스타일 앱 및 Internet Explorer 10 기반의 웹 페이지에 사용되는 HTML5 Canvas 및 SVG 기술의 성능이 집중적으로 개선되었습니다.

 과거의 날씨 데이터를 보여 주는 막대 그래프   

Windows 8의 날씨 앱은 기하 도형을 사용하여 과거의 기온 및 강수량 데이터 그래프를 표시합니다.

Direct2D는 기하 도형을 그릴 때 앱에서 2D 형상(예: 사각형, 타원, 경로)으로 그려야 하는 항목, 형상의 크기 및 위치, 브러시 색상 및 스트로크 스타일을 포함한 렌더링 스타일에 대한 지침을 가져옵니다. 그런 다음 그러한 지침을 일련의 삼각형 및 명령으로 전환한 후 Direct3D로 보내 원하는 결과를 생성합니다. 이 전환 과정을 '공간 분할(tessellation)'이라고 합니다.

Windows 8의 기하 도형 렌더링 성능을 개선하기 위해 두 가지 방법으로 공간 분할(tessellation)과 관련된 CPU 사용량을 줄이는 작업에 집중했습니다.

첫 번째로, 사각형, 선, 모서리가 둥근 사각형, 타원 등의 간단한 기하 도형을 렌더링할 때 공간 분할(tessellation) 구현을 최적화했습니다. 아래는 이러한 성능 개선의 효과를 보여 주는 차트입니다.

Windows 7의 프레임 속도 증가, 선 184%, 타원 369%, 모서리가 둥근 사각형 220%, 사각형 438%

두 번째로, 불규칙 기하 도형(예: 지도의 지리적 경계)의 렌더링 성능을 개선하기 위해 'TIR(Target Independent Rasterization)'라고 하는 새로운 그래픽 하드웨어 기능을 사용하고 있습니다.

TIR은 Direct2D가 공간 분할(tessellation)에 사용하는 CPU 사이클을 줄이기 때문에 시각적 품질의 희생 없이 보다 신속하고 효율적으로 GPU에 그리기 지침을 제공합니다. TIR은 DirectX 11.1을 지원하는 Windows 8용으로 설계된 새 GPU 하드웨어에서 사용할 수 있습니다.

아래는 TIR을 지원하는 DirectX 11.1 GPU의 다양한 SVG 파일에서 앤티앨리어싱된 기하 도형을 렌더링할 때 성능이 얼마나 개선되는지를 보여 주는 차트입니다.

151%에서 523%까지 성능이 개선된 15개의 파일

우리는 그래픽 하드웨어 파트너와 긴밀하게 협력하여 TIR을 설계했습니다. 그러한 협력 덕분에 성능을 획기적으로 개선할 수 있었습니다. DirectX 11.1 하드웨어는 이미 시장에 출시되었으며 보다 다양한 TIR 지원 제품을 제공하기 위해 파트너와 협력하고 있습니다.

이미지 렌더링

이미지는 사용자 인터페이스, 웹 페이지 및 기타 앱 콘텐츠를 포함한 다양한 시나리오에서 광범위하게 사용됩니다. 웹 사이트에서는 일반적으로 그림을 위한 JPEG과 PNG 및 GIF 파일을 사용하여 단추 그래픽 같은 사용자 인터페이스 요소를 효율적으로 저장합니다.

또한 Windows에서는 디지털 사진 작업도 매우 빈번하게 이루어지고 있으며, Windows 사용자가 PC에서 디지털 사진을 보고 조작하는 횟수가 가파르게 증가하고 있습니다.

JPEG, GIF 및 PNG 형식을 사용한 이미지 및 사진 작업의 성능이 여러 모로 개선되었습니다.

JPEG의 경우 다음과 같이 성능이 개선되었습니다.

  • 모든 CPU 아키텍처의 SIMD 사용량을 확장하여 보다 신속하게 이미지 디코딩
  • 보다 신속한 Huffman 디코딩 및 인코딩

PNG의 경우 다음과 같은 성능이 개선되었습니다.

  • 모든 CPU 아키텍처의 SIMD 사용량을 확장하여 보다 신속하게 이미지 디코딩
  • zlib 구현을 최적화하여 보다 신속하게 이미지 인코딩 및 디코딩

그 외에도 픽셀 형식 변환과 이미지 배율을 개선했습니다. 그 결과 모든 앱의 이미지 디코딩 및 렌더링 속도가 향상되었습니다.

아래는 테스트 앱을 사용하여 다양한 이미지를 디코딩 및 렌더링하는 시간을 측정한 비디오입니다. Windows 8에서 64장의 이미지를 렌더링하는 시간은 4.38초에 불과하며, Windows 7의 7.28초에 비해 40% 빠른 것으로 나타났습니다.

렌더링 및 표시

더욱 다양한 시나리오를 지원하도록 DirectX를 개선하는 과정에서 앱이 콘텐츠를 렌더링하여 표시하는 방식을 최적화하는 작업에도 많은 시간을 투자했습니다. 3D 게임이 콘텐츠를 그리는 방식과 Internet Explorer 같은 주류 앱이 콘텐츠를 그리는 방식 간에 몇 가지 큰 차이점이 있습니다. 아래의 게임 비디오를 예로 들겠습니다. 이런 게임에서는 전체 화면이 신속하게 바뀝니다. '카메라'가 차량 주위를 이동할 때 구름이 하늘을 가로지르고, 엔진에서 연기가 피어 오르는 장면을 생생하고 현실감 있게 표현하려면 앱에서 매 프레임마다 전체 화면을 다시 그려야 합니다.

 
다른 미디어 플레이어로 보려면 이 비디오를 다운로드하세요. 
고화질 MP4 | 저화질 MP4

이제부터는 아래 웹 페이지를 예로 들겠습니다. 이 웹 페이지에는 텍스트와 비디오가 모두 포함되어 있습��다. 비디오가 재생되는 동안 브라우저는 비디오만 포함하는 창의 일부를 업데이트해야 합니다. 사용자가 페이지를 위로 스크롤할 경우 페이지 위쪽의 새로운 텍스트만 렌더링하면 됩니다. 나머지 텍스트는 이미 렌더링되었기 때문에 이동하기만 하면 됩니다.

msdn 웹 페이지에 포함된 비디오를 재생하는 장면

매 프레임마다 전체 화면을 다시 그릴 필요가 없는 앱을 개선하기 위해 DirectX에서 화면의 일부만 다시 그리는 방식과 스크롤 방식을 최적화했습니다. 이 작업은 앱의 효율성과 성능을 개선할 뿐만 아니라 중복 그리기가 감소하므로 그래픽 데이터를 메모리에 복사하는 시간이 줄어들고, 전력 소비를 줄여서 배터리 수명을 연장합니다.

전체 플랫폼 개선

이 모든 변경 작업은 매우 신속하고 부드러운 Windows 렌더링 경험을 제공하는 데 도움을 줍니다. 주로 DirectX의 기능에 대해 설명했지만 이러한 작업은 기본적으로 전체 플랫폼 하드웨어 가속을 개선합니다. Metro 스타일 플랫폼은 DirectX를 기반으로 개발되었기 때문에 모든 앱이 시스템의 그래픽 하드웨어를 최대한 활용할 수 있습니다.

Direct2D 및 Direct3D를 사용하여 멋진 시각적 경험 생성

Direct2D 효과

최근 들어 이미지에 스타일 효과를 적용하는 사용자 경험이 점점 보편화되고 있습니다. 스타일 효과는 앱 영역을 강조하고, 화면의 특정 부분에 관심을 집중시키고, 화면을 멋지게 표현하는 데 도움을 줍니다. 우리는 Windows 8에서 개발자들이 이러한 유형의 효과를 간편하게 앱에 적용할 수 있는 그래픽 기능을 개발하고자 노력했습니다. 그러한 노력의 일환으로 이미지 처리가 유용할 수 있는 두 주요 영역을 살펴보았습니다.

  • 사용자 인터페이스 이미지 
    Metro 스타일 경험은 동적 시각적 요소를 사용합니다. 우리는 Metro 스타일 앱이 실시간으로 이미지를 처리하도록 만들고자 했습니다. 3D 전환 효과에서 원근 변환, 흐리게 하는 효과 및 사용자 인터페이스 요소의 강조까지 이 범위에 포함됩니다.
  • 사진 
    사진을 처리하는 앱은 다양한 이미지 처리 기능이 필요할 때가 자주 있습니다. 노출, 밝기 및 대비 조정, 생동감 및 선명함 적용, 고급 곡선 사용 그리고 렌즈 보정은 앱에 디지털 사진의 품질을 높이는 효과를 제공합니다.

이러한 유형의 경험을 제공하기 위해 모든 이미지에 고품질 하드웨어 가속 효과를 적용할 수 있는 새로운 API 모음인 'Direct2D 효과'를 추가했습니다. Direct2D 효과는 다음과 같은 장점이 있습니다.

  • 다양한 앱의 요구 사항을 만족하는 최적 품질의 이미지 효과 렌더링을 제공합니다.
  • 효과는 하드웨어 가속이며 다양한 그래픽 하드웨어에서 작동합니다.
  • 간단한 API를 사용하여 최소의 프로그래밍으로 멋진 효과를 적용할 수 있습니다.
  • 다양한 기본 효과를 제공합니다.
  • 채널당 최대 32비트에 달하는 대형 이미지 크기를 지원합니다.
  • 사용자 지정 효과를 기본 효과 또는 다른 사용자 지정 효과와 결합할 수 있습니다.

Direct2D 효과는 Windows 8의 새로운 사용자 경험 중 일부를 지원합니다. 예를 들어, 시작 화면의 타일을 탭할 때 해당 타일은 3D 원근 변환 효과를 사용하여 올바른 방향으로 '기울어집니다'. 또한 플랫폼의 나머지 부분도 지원합니다. 예를 들어, Direct2D 효과를 사용하여 SVG 필터 효과 및 CSS 3D 전환이 구현됩니다.

공통 기반이 되는 Direct3D 11.1

개발자가 새로운 경험을 제공할 수 있도록 지원하기 위해 Direct2D 효과 같은 새로운 기능을 추가하는 작업 외에도 기존 DirectX 기능을 간편하게 사용할 수 있는 방법을 살펴보았습니다.

또한 수년에 걸친 개발 과정을 통해 DirectX에 다양한 기능을 추가했습니다. Direct3D 9에서는 비디오 디코딩의 하드웨어 가속이 프로그래밍 가능한 셰이더와 함께 제공되었습니다. Windows 7에서는 Direct2D를 추가하여 Direct3D 10을 기반으로 구축했습니다. 그 당시 GPU에서 고성능 계산을 수행하는 새로운 시스템인 DirectCompute도 개발했는데 이 시스템은 Direct3D 11의 일부가 되었습니다. 이러한 업데이트 덕분에 DirectX는 그래픽 및 GPU 계산과 관련된 매우 포괄적인 기능을 갖게 되었지만 비디오, 2D 그래픽, 3D 그래픽, 텍스트 및 DirectCompute를 함께 사용하는 앱을 개발하기가 점점 어려워졌다는 부작용도 발생했습니다.

Windows 8에서는 새 Direct3D 11.1 API가 2D 그래픽 및 텍스트, 이미지 처리, 3D 그래픽 및 계산, 비디오의 기반이 되었습니다. 새 API 덕분에 단일 화면에 다양한 유형의 콘텐츠를 조합하는 작업이 훨씬 간단해졌습니다. 단일 API가 렌더링과 관련된 모든 GPU 리소스를 관리하기 때문입니다. 또한 이로 인해 앱 코드에 다중 그래픽 장치 관리 개체를 생성하는 작업과 관련된 중복성이 제거되므로 메모리 사용량이 감소합니다. 그 외에도 Direct3D 11.1은 앱에서 이기종 그래픽 하드웨어의 다양한 기능에 액세스할 수 있는 일관적인 방법을 제공합니다. 앱에서 어떤 기능을 사용할 수 있는지 확인한 후 그 기능만 사용하도록 유도하는 매커니즘을 제공합니다. 따라서 GPU가 태블릿에 긴 배터리 수명을 제공하도록 설계되었든 고성능 게임용 데스크톱 PC에 적합하게 설계되었든 앱에서 GPU의 기능을 최대로 활용할 수 있습니다.

다양한 그래픽 하드웨어

사람들은 Windows 시리즈가 출시될 때마다 그래픽 플랫폼과 그래픽 하드웨어 기능이 더욱 풍부해지고 강력한 성능을 제공할 것이라고 기대합니다. 그래픽 하드웨어 업계에서 더욱 빠르고 강력한 GPU를 지속적으로 개발하고 있기 때문에 아직까지는 이러한 기대에 어긋나지 않고 있습니다. 하지만 휴대용 저전력 장치의 등장으로 다양한 하드웨어가 보급된 Windows 7부터 사람들의 기대가 변하기 시작했습니다.

Windows 8을 개발 중인 현재, 새로운 고성능 그래픽 카드와 다양한 저전력 휴대용 장치가 속속 개발되면서 다양한 하드웨어에 대한 추세가 지속되고 있으며 점차 속도가 빨라지고 있습니다. Windows 8은 1W의 전력을 소모하여 항상 연결 상태를 유지하는 태블릿에서 총 1,000W 이상의 전력을 사용하는 다중 그래픽 카드가 장착된 고성능 시스템까지 그 어느 때보다도 다양한 하드웨어를 지원합니다. 이러한 다양성은 새로운 설계 방향을 모색하는 계기가 되었습니다.

시각적으로 뛰어난 고성능 경험을 제공한다는 우리의 목표는 변함 없습니다. 휴대성이 뛰어난 장치의 경우 기본 전원으로 배터리를 사용하기 때문에 배터리 수명을 최대한 늘려야 합니다. 이러한 새 폼 팩터의 성능 및 전력 요구 사항을 모두 만족하기 위해 그래픽 하드웨어 파트너 중 상당수가 새로운 GPU 아키텍처를 사용했습니다.

저전력 시스템

'타일 기반 렌더링'은 성능과 긴 배터리 수명을 모두 만족하기 위한 저전력 시스템 설계에서 일반적으로 사용되는 그래픽 아키텍처 중 하나입니다. 그래픽 엔진에서 작지만 성능이 매우 뛰어난 메모리 캐시를 사용하여 렌더링을 수행하는 것이 타일 기반 렌더링 접근 방식의 일반 개념입니다. 그러면 GPU가 전체 화면을 한 번에 렌더링하지 않고 각 타일의 동일한 명령 집합을 반복적으로 처리하여 화면을 섹션(또는 타일)별로 렌더링합니다. 이는 메모리 오프칩을 사용하는 작업을 최소화하여 전력 소모량을 줄이고 성능을 높이기 위함입니다. 메모리 오프칩에 반복적으로 액세스하면 시간이 오래 걸리고 전력 소모량도 많습니다.

이러한 타일 기반 아키텍처의 효율성을 높이기 위해 타일이 렌더링되는 횟수를 최소화할 수 있는 여러 플래그, 힌트 및 새 API를 추가했습니다. 타일 기반 렌더링 아키텍처를 사용하는 그래픽 하드웨어에서 실행 중인 앱의 효율성을 높이기 위해 Metro 스타일 앱 개발 플랫폼에 이러한 요소를 통합했습니다.

그래픽 하드웨어의 전력 소모량을 줄이는 동시에 높은 성능을 구현할 수 있는 또 다른 방법은 낮은 비트 정밀도를 사용하여 그래픽 렌더링 계산을 수행하는 것입니다. 이렇게 하면 GPU가 데이터를 보다 효율적으로 구조화하여 더 많은 데이터를 동시에 처리할 수 있으므로 필요한 전력량이 감소합니다. Windows 8에서는 앱에서 그래픽 계산에 필요한 정밀도 크기를 지정할 수 있는 새 메커니즘이 추가되었습니다. 예를 들어, 이미지 데이터가 구성 요소당 8비트인 다중 이미지 사용자 지정 혼합을 수행하는 경우 기본값인 32비트가 아닌 10비트의 정밀도로 혼합 계산을 수행할 수 있습니다. 정밀도가 낮아지면 화질에는 영향이 없지만 전력 소모량은 감소합니다.

탁월한 성능, 부드러운 렌더링

 
다른 미디어 플레이어로 보려면 이 비디오를 다운로드하세요. 
고화질 MP4 | 저화질 MP4

지금까지 살펴본 것처럼 Windows 8에서 매우 빠르고 부드럽고 생생한 사용자 경험을 구현하기 위해 수많은 작업을 했습니다. 작업 상황을 측정하는 새로운 방법부터 그래픽 플랫폼 사용 최적화 및 새로운 하드웨어 기능에 이르기까지 이제껏 볼 수 없었던 최상의 Windows 그래픽 플랫폼을 개발했습니다. 물론 탁월한 성능과 양안식 3D와 같은 새로운 기능을 지원하는 몰입감이 뛰어난 3D 게임에도 계속 도전하고 있습니다.

고성능 게임용 장치부터 항상 인터넷에 연결되는 가벼운 태블릿에 이르기까지 Windows 8은 단일 운영 체제를 통해 매우 폭넓은 그래픽 하드웨어를 지원합니다. 이 글을 통해 Windows 8의 풍부한 경험이 어떤 방식으로 구현되었는지 이해하는 계기가 되기를 바랍니다.

- Rob Copeland

참고: 이 글을 작성하는 데 많은 도움을 주신 Dan McLachlan, Kam VedBrat, Steve Lim, Jianye Lu에게 감사의 말씀을 전합니다.

반응형

댓글