차세대 모바일 그래픽의 난관을 극복하라

  • 2017년 02월호
  • 김영학 기자, yhk@elec4.co.kr

글 | 에스펜 외이보(Espen Øybø), ARM GPU 제품 담당 책임자, ARM

 


폭발적인 GPU 성장을 이끌었던 시장과 기술, 활용 사례, 디바이스 개발과 지난 10년 간의 ARM Mali GPU와 그 기반이 되는 아키텍처의 발전과 Mali-G71의 출시에 대해 살펴본다.


에스펜 외이보(Espen Øybø), ARM GPU 제품 담당 책임자, ARM

2006년에는 대략 1억 3,500만 개의 그래픽처리장치(Graphics Processing Unit, 이하 GPU)가 스마트폰, 디지털 TV, 태블릿과 같은 다양한 디바이스에 탑재됐다[1]. 같은 해 ARM은 IP 포트폴리오를 강화해야 한다고 전망하고 노르웨이 회사인 팔랑스(Falanx)와 그 모바일 GPU 기술을 인수했다.

가트너에서 발표한 전망과 ARM 내부 정보에 따르면, 그로부터 10년 후인 2016년에는 스마트폰만 전 세계적으로 약 15억 대가 판매된 것으로 추정된다. 10년이 채 되지 않은 2015년에 전 세계에서 가장 많이 출하된 GPU인 ARM Mali 제품군의 출하량은 7억 5,000만 개다.



API 진화 및 공정 개발

2015년은 개발자들이 기본 그래픽 하드웨어를 가장 효과적으로 활용하는 방법을 정의한 새로운 API(Application Programming Interface)를 발표한 흥미진진한 해였다.

같은 해, 크로노스(Khronos) 워킹 그룹이 벌칸(Vulkan)에 대한 논의를 시작했다. Vulkan은 차세대 OpenGL API로 그래픽 API의 ‘다음 단계’이자 모든 요구를 충족하도록 설계되어, 독립적으로 정의되어 있던 OpenGL ES와 OpenGL 시대의 막을 내렸다.

2016년 2월 발표된 벌칸은 개발자들의 요구 사항을 바탕으로 만들어진 최초의 크로노스 API다. 모든 관련자들을 위한 최고의 솔루션을 개발하기 위해 게임 엔진 개발업체, 실리콘 업체, IP 업체와 OS 업체의 실무진들에 의해 설계됐다. 이렇게 개발된 벌칸 API는 멀티스레드 지원 기능이 기본으로 탑재되어 최신 이기종 시스템들을 실행할 수 있으며, 하드웨어 일관성의 장점을 활용한 첫 제품이다. 하위 수준 API인 벌칸은 개발자들이 하드웨어와 가장 효과적인 상호작용 방법을 자체적으로 결정할 수 있도록 지원하고, 상충되는 요소 간의 균형을 유지하기 위해 하위 수준 접근을 가능하게 한다.

개발자들에게 지연 시간을 최소화하고 그래픽 파이프라인에 대한 강화된 통제력을 요구하는 가상현실(VR)과 같은 활용 사례가 등장하면서 하위 수준 액세스의 중요성은 더욱 높아졌다.

 

GPU 연산 애플리케이션에 주력하던 개발업체들은 OpenCL 2.0이 출시되면서 고성능 GPGPU 애플리케이션 개발 과정을 간소화하는 다양한 핵심 개념들이 등장했다. 특히 중요한 것은 CPU와 GPU 간의 공유 가상 주소 공간을 허용하는 공유 가상 메모리다. 하드웨어 기반 캐시 일관성을 추가하면서 버퍼 공유도 세분화할 수 있게 됐다. 이는 개발업체들이 CPU와 GPU 간의 불필요한 데이터 전달을 효과적으로 줄여줌으로써 두 프로세서 간의 업무를 공유하는 과정을 최소화한다.

반도체 제조 공정은 획기적인 변화를 이룩한 또 하나의 기술이다. 지난 2014년, TSMC와 삼성전자가 20나노 공정을 발표하며 10여 년 동안 사용해오던 평면 공정에 종지부를 찍었다. 2015년에는 삼성 파운드리의 14나노 핀펫(FinFET) 공정 기술이 적용된 엑시노스 7420(Exynos 7420)이 발표됐고, 이어서 TSMC 16나노 핀펫 공정 기술을 적용한 애플 A9이 출시됐다. 2016년에는 공정이 개선됨에 따라 비용이 절감되고 생산 수율이 증가했으며, 2017년에는 10나노 공정이 발표될 것으로 예상된다.

GPU 관점에서 공정 기술의 발전은 업계에 여러 가지 중요한 영향을 미쳤다. 첫째로 공정 발전에 따라 면적당 또는 전력 당 더 많은 트랜지스터를 집적할 수 있게 됐다. GPU는 병렬 구조의 프로세서이기 때문에 GPU 아키텍처가 확장되기만 한다면 공정 발전에 따라 성능도 지속적으로 향상될 것이다. 하지만 최신 공정에서는 배선이 트랜지스터만큼 확장되지 않는다[2]. 이에 따라 28나노에서 14나노로 발전하면서, SoC 설계자들이 트랜지스터 밀도 확장을 달성할 수 있도록 도와주지만 배선 확장만큼 우수하지 않다.

이는 10나노에서 GPU를 설계하는데 28나노에서의 GPU 설계와 동일한 조건을 적용하는 경우에 트랜지스터와 배선 간의 상충 요소가 다르기 때문에 최적화되지 않은 설계로 이어질 것이다. 항상 특정 공정에 맞춰 IP를 조정하는 데에는 저마다 장단점이 존재하지만, 공정이 발전하면서 그 중요성은 더욱 높아지고 있다.

 

2011년부터 2016년까지 프리미엄 모바일 GPU 성능이 20배가량 향상됐다는 사실은 매우 흥미롭다. 이와 동시에 휴대폰은 더 얇아지고 가벼워졌다. 〈그림 3〉만으로는 기술적 발전을 완벽하게 설명할 수 없지만, 개발자가 최신 모바일 디바이스의 성능을 얼마나 더 향상시켜야 하는지에 대해 알려준다.

개발자들은 기존 활용 사례들을 향상시키면서 혁신적인 새로운 모바일 활용 사례를 발굴함으로써 이러한 향상된 성능을 활용하고 혁신을 실현하고 있다.

활용 사례 개발 

모바일 플랫폼이 발전함에 따라 무수히 많은 센서들이 추가됐다. 시스템 성능에 대한 대폭적인 향상과 지속적인 화면 개선, 배터리 수명 연장에 따라 개발자들은 혁신을 위한 최적의 플랫폼을 보유하게 됐다.

최신 스마트폰 기능을 활용하는데 적합한 분야 중 하나가 바로 증강현실(AR)이다. AR은 CPU, GPU, ISP, VPU와 DPU를 거치기 전에 첨단 카메라를 이용해 이미지를 포착하고 이를 고해상도 화면에 나타낸다. 이 과정에서 원하는 증강 이미지가 현실 세계에 중첩되어 보인다. 애플리케이션이 어떤 목표를 가지고 있는지에 따라 처리 과정에는 객체 인식이나 나침반이나 가속도계를 활용한 방향 보정, 첨단 렌더링 기법 등을 포함할 수 있다.

이미지와 비디오를 공유하기 위해 AR을 활용해 사용자 얼굴에 필터를 겹치는 스냅챗(Snapchat)이나 사용자들이 실제 공간에서 애니메이션 캐릭터를 볼 수 있는 포켓몬 고(Pokemon Go)와 같이 유명한 모바일 앱들은 AR을 대중화시켰다. 뿐만 아니라 3D 객체를 카메라의 입력 데이터 내에 포함시키는 앱과 같은 더욱 발전된 형태의 AR 활용 사례가 등장하면서 유통이나 첨단 게임과 같이 다양한 업계에서 광범위하게 적용할 수 있는 기술 혁신을 가능케 한다.

이러한 애플리케이션이 활용되고 있는 예로는 특정 사물이 거주하는 공간에 어울리는지 확인하는 것이다. 대형 가구업체인 이케아(IKEA)는 2017년부터 AR 카탈로그를 발표한다는 목표를 가지고 있다.

가상현실이 새로운 것은 아니지만 그 기반은 완전히 달라졌다. 디바이스들은 즉시 사용할 수 있고 시각적으로 우수한 VR 콘텐트를 실행하기 위한 성능을 충분히 뒷받침되며, 혁신을 실현하기 위한 대규모의 개발자 생태계도 형성되어 있다. 거의 모든 사람들이 접근할 수 있는 모바일 플랫폼에서 특히 두드러지며, 모바일 플랫폼이 지닌 유동성은 상당한 이점을 제공한다.

데스크톱과 콘솔 VR의 경우 케이블로 묶여 있지만, 모바일 플랫폼은 단지 센서와 함께 연결되어 있어 아무런 방해 없이 움직일 수 있다. 실제로 VR의 핵심 기술 혁신은 모바일에서 실현된다. 지금도 이용할 수 있는 VR 롤러코스터는 더 생동감 있는 사용자 경험을 제공하는 사례이며, 한계를 뛰어넘는 고성능을 모바일 플랫폼에서 실현할 수 있다[3].

새롭고 혁신적인 활용 사례들을 통해 스마트폰이 사용되는 방식의 경계가 허물어지면서 가장 일반적인 모바일 활용 사례가 여전히 웹 브라우징과 게임이라는 사실을 간과하기 쉽다. 최근 들어 화면 해상도가 높아지고 새로 고침 속도가 빨라지면서 사용자들은 유저 인터페이스(UI)가 자연스럽게 보이고 느껴지기를 기대하고 있다. 이러한 요구 사항들을 충족시키기 위해서는 더욱 향상된 GPU 성능을 제공해야 하며 이러한 경험을 제공하는 것은 비용에 민감한 시장에 어려운 과제를 제시한다.

모바일은 전 세계 주요 게임 플랫폼[4]으로 자리매김하고 있으며, 게이머 수가 증가하면서 가용한 타이틀 수에도 영향을 미치고 있다. 오늘날 모바일 게이머들은 무료 인디 게임에서 수백만 달러 상당의 대규모 스튜디오 개발에 이르기까지 다양한 장르, 가격, 품질의 게임을 선택할 수 있다. 이러한 발전에 따라 게임의 시각적 품질은 크게 향상됐다. 처음으로 GPU를 모바일에 도입했을 당시에 단순하면서 낮은 수준의 3D 게임으로 시작해, 이제는 이전 세대 게임 콘솔에서는 볼 수 없었던 화려한 조명과 역동적인 화면으로 채워진 광활한 풍경을 경험할 수 있게 됐다.

 

그림 4〉의 이미지는 ARM 데모 팀에서 만든 3가지 데모를 보여준다. 2010년에 제작되어 2011년 갤럭시 S2에서 공개된 트루포스(TrueForce) 데모는 현재 기준으로는 비교적 단순한 3D 콘텐트로 시작했다. 1만 6,000개의 프리미티브(Primitive)를 가지며, 프래그먼트 처리를 위해 픽셀 당 3.7클록 사이클이 소모됐으며 OpenGL ES 2.0를 기반으로 한다.

2013년에 등장한 OpenGL ES 3.0은 GPU 연산 기능을 지원하는 GPU를 용이하게 했고(엄밀히 OpenGL ES 3.0 API의 일부는 아니며, OpenGL ES 3.1에 속하지만), 모바일 GPU를 위해 더욱 향상된 첨단 렌더링 기법을 사용할 수 있도록 만들었다. 이를 통해 기반 하드웨어를 발전시켰고 시각적 품질도 획기적으로 향상시켰다.

이는 트롤헤임(Trollheim) 데모의 복잡성과 TrueForce의 복잡성을 비교하면 명확하게 확인할 수 있다. 트롤헤임과 트루포스는 각각 15만 개와 1만 6,000개의 프리미티브를 처리하고, 프래그먼트 처리를 위해 픽셀 당 16클록 사이클, 3.7클록 사이클이 소요됐다.

2016년에는 벌칸이 출시되면서 API 효율성이 크게 증가했고, 개발자들이 OpenGL ES에서 가능했던 것보다 높은 수준으로 하드웨어를 활용하고 오버헤드를 절감시킬 수 있게 됐다. 이와 함께 하드웨어도 발전했으며 이는 복잡도에도 분명히 반영됐다. 로포텐(Lofoten) 데모를 트롤헤임과 비교하면, 프레임 당 프리미티브가 3배 증가했으며 프래그먼트 복잡성은 1.5배 증가했다.

스마트폰 설계 경향과 도전 과제 

활용 사례만 발전한 것이 아니고 디바이스 자체도 급속하게 발전됐다. 스마트폰 시장이 기존의 피처폰에서 발전하면서 개인용 컴퓨터보다 더 스마트해지고 다양한 기능들을 제공하고 있지만 여전히 통신 기능에 초점이 맞춰져 있었다. 시간이 지나면서 보다 스마트폰을 다양하게 활용하는 방향으로 트렌드가 바뀌었다. 음성 통화는 이제 더 이상 스마트폰의 핵심이 아니며 주 관심사는 디스플레다.

과거에는 배터리 수명이 1회 충전 후 통화 시간으로 측정됐지만, 이제 사실상 표준 측정 방법은 1회 충전 후 웹 브라우징 또는 고사양 게임 실행 시간이 되고 있다. 디스플레이에 대한 관심이 높아지면서 GPU 또한 관심이 높아지고 있다. 사용자들은 보다 높은 품질의 비주얼을 기대하고 있으며 지금까지 스마트폰 설계 자체는 물론, 실제 화면의 미적 측면과 부드러운 동작이 향상되면서 이를 지원해 왔다.

 

그 중 한 가지 측면은 베젤 또는 화면 주변의 여백이 점차 줄어든 것이다. 일반적인 트렌드는 화면이 장치 자체가 되는 것이며, 설계 비중은 점차 하드웨어가 아니라 UI로 옮겨가고 있다. 〈그림 5〉에서 스마트폰 기기에서 화면이 차지하는 비중이 점차 확장되고 있는 것을 볼 수 있다. 이 트렌드는 삼성 갤럭시 S7 엣지와 같은 기기에서 보다 분명하게 나타나는데, 말 그대로 화면이 장치를 감싸고 있다는 사실이다.

최신 스마트폰은 전화 통화를 하는 것 이외에도 많은 기능을 실행할 수 있다. 그 중에서도 이메일, 소셜 미디어, 위치 추적, 결제, 웹 브라우징, 게임, 사진 및 비디오 등을 처리한다. 사용자들은 이 모든 기능들의 향상된 품질은 물론, 배터리 수명 연장을 기대하고 있다. 다방면에서 최신 기술이 발전하고 있음에도 불구하고 이는 과거 어느 때보다도 큰 용량의 배터리를 필요로 하는 최신 스마트폰을 탄생시켰으며 트렌드는 〈그림 6〉에서 제시하고 있다.

 

이외에도 스마트폰은 얇아지고 있다. 일부 장치들의 두께는 7 mm도 채 되지 않으며, 얼마나 많은 기술들이 최신 스마트폰에 통합되어 있는지를 고려하면 이는 매우 놀라운 수준이다.

하지만 개발에 있어서 문제가 없는 것은 아니다. 화면이 커지면서 배터리 크기가 커지고 폰이 얇아졌다. 장치를 실행하면서 방출할 수 있는 열도 감소했다. 화면은 메탈 본체보다 열 방출이 효율적이지 않으며 전체 기기 표면에서 화면이 차지하는 비중이 높아지면 냉각 기능이 저하된다. 또한 기기의 두께가 얇아지면 열 방출 표면적도 줄어들게 된다. 최신 프리미엄 폰의 최대 지속 성능은 발열 정도에 의해 제한되기 때문에 이는 기반 구성 요소들에 또 하나의 과제가 되고 있다.

최신 스마트폰은 전력이 필요한 카메라 서브시스템, 화면, 모뎀, 와이파이, 비휘발성 메모리, DRAM, 메인 SoC(CPU, GPU 및 기타 프로세서 포함) 등을 갖추고 있으며, 따라서 열이 방출되어야 한다. 이들 구성 요소들은 총 전력 한도 내에서 동작하기 때문에 어느 한 구성 요소로 공급되는 전력을 줄이면 다른 구성 요소가 더 많이 사용할 수 있다. 각 시스템으로 전달되는 전력의 비중은 활용 사례에 따라 달라진다.

 

최신 GPU는 복잡하며 애플리케이션들이 소프트웨어를 통해 인터페이스할 수 있도록 디바이스 드라이버가 CPU에서 실행된다. 드라이버는 벌칸과 같은 최신 API를 통해 오버헤드를 낮출 수 있지만 여전히 CPU상에서 드라이버를 실행해야 한다. 이는 곧 전력으로 이어지며, 동일한 총 시스템 전력 한도 내에서 나오기 때문에 CPU에서 GPU와의 인터페이스하기 위해 사용하는 모든 전력은 GPU에서 사용할 수 없는 전력이다. 결과적으로 CPU 오버헤드를 최소화하는 것이 필수적이며 GPU의 병목을 제거하는 것은 물론, 가능한 많은 전력을 GPU에 배정해야 한다.

마찬가지로 복잡한 3D 게임을 실행하는 최신 시스템에서 GPU는 많은 DRAM 대역폭을 소모할 것이다. 이는 많은 데이터를 처리할 때로 예상되지만(로포텐 데모를 고려할 때, 프레임 당 60만 개 삼각형을 처리), 실제 D램(DRAM) 읽기 및 쓰기는 총 시스템 전력 한도에서 수행해야 하는 프로세스다. D램 트래픽을 줄이면 D램 전력을 절약해 다른 용도를 위해 보다 효과적으로 사용될 수 있다.

최신 스마트폰 설계는 GPU에 여러 과제들을 안겨 주고 있으며 더욱 복잡한 활용 사례들이 계속해서 증가하고 있다. 다음 섹션에서는 ARM의 차세대 GPU 및 GPU 아키텍처가 어떻게 이들 과제를 해결하는지에 대해 설명하도록 하겠다.



차세대 디바이스를 위한 Mali-G71

Mali-G71은 가장 최근에 ARM 고성능 GPU 로드맵에 추가됐다. 이는 새로운 바이프로스트(Bifrost) 아키텍처를 기반으로 개발된 최초의 GPU로서 성능 및 효율성을 크게 향상시켰다.

Mali-G71은 현재까지 최고의 성능을 발휘하는 ARM GPU이며 최신 활용 사례에서 필요로 하는 성능 수준을 위해 1개에서 32개까지 쉐이더 코어(Shader Core)를 확장할 수 있다. 이는 SoC 제조업체가 목표 시장에 따라 면적, 성능 및 전력 간에 완벽한 균형을 유지할 수 있도록 하며 Mali-G71이 이번 시즌 동안 다양한 설계 구성으로 양산될 것으로 기대하고 있다.

위에서 밝힌 바와 같이 많은 스마트폰이 발열량에 따라 제약을 받고 있지만, 일부는 비용이나 축소할 수 있는 실리콘 면적 등이 성능을 제약하고 있다. 고성능 실현을 위해 Mali-G71과 바이프로스트 아키텍처는 에너지 효율성(단위 소비전력 당 성능)과 성능 밀도(단위면적 당 성능)이라는 두 가지 측면을 향상시켰다.

이를 통해 전력과 발열 과제를 안고 있는 제품을 생산하는 실리콘 공급 업체들이 보다 높은 수준의 GPU 성능에 도달할 수 있도록 했다. Mali-G71은 동일한 조건에서 Mali-T880보다 에너지 효율성은 최대 20%, 성능 밀도는 최대 40% 향상시켰다. 이와 함께 시스템 소비 전력을 절감하는데 필수적인 외부 메모리 사용량을 20% 낮췄다.



바이프로스트 아키텍처의 발전

Mali-G71이 어떻게 이전 ARM GPU보다 향상됐는지 설명하기 위해서는 아키텍처는 물론이고 설계 접근 방법에 대해 자세히 살펴봐야 한다.

바이프로스트는 ARM의 세 번째 프로그래머블 GPU 아키텍처이며 우트가드(Utgard)와 미드가드(Midgard) GPU 아키텍처를 개발하면서 축적된 지식과 경험을 기반으로 개발됐다.

 

이전 ARM GPU 아키텍처인 우트가드 및 미드가드는 큰 성공을 거뒀다. 이들 아키텍처는 양산 물량 및 기반 기술 측면 모두에서 성장하는 모바일 GPU 시장을 위해 설계됐다. 우트가드는 ARM이 발표한 최초의 프로그래머블 GPU 아키텍처이며 프래그먼트(Fragment) 및 정점(Vertex) 전용의 쉐이더 코어를 집적한 GLES 2.x를 위해 최적화됐다.

미드가드는 통합 쉐이더, GLES 3.x 지원 그리고 OpenCL 1.x 풀 프로필(Full Profile)을 포함한 GPGPU 컴퓨트(Compute)를 선보였다. 미드가드는 심지어 벌칸을 지원 기능들을 포함하는 등 미래에 대비하는 기술이었으며 이는 해당 아키텍처가 5년 전에 설계됐다는 점을 감안할 때 결코 쉬운 일이 아니었다.

 

하지만 콘텐트와 활용 사례가 대폭적으로 발전했으며 차세대 활용 사례에 맞춰 아키텍처에서 획기적인 변화가 이뤄져야 한다는 요구가 파악됐다.

전반적으로 볼 때 미드가드 아키텍처와 비교해 GPU 코어에 대한 그 어떠한 명확한 변화도 없다. Bifrost는 여전히 타일 기반 렌더링 아키텍처이기 때문에, 확장할 수 있는 많은 쉐이더 코어, 해당 드라이버와 상호작용하는 작업 관리자, 메모리 페이지 테이블을 처리하기 위한 MMU, 타일러(Tiler) 등을 그대로 가지고 있다. 하지만 이들 각 블록 내부에서 방대한 개발 작업이 이루어졌다.

AMBA ACE 또는 AXI-Lite 등을 통해 외부 컴포넌트들과 상호 작용을 담당하는 Level-2 서브시스템은 AMBA 4 ACE를 지원하도록 설계됐다. 이를 통해 Mali-G71은 완벽한 하드웨어 캐시 일관성을 지원하게 됐으며, 하드웨어를 통해 CPU처럼 투명하게 다른 장치와 GPU 간의 데이터 공유를 세부 조정할 수 있다.

타일러는 완전히 새로운 렌더링 방식인 인덱스 기반 포지션 쉐이딩(Index Driven Position Shading)을 지원하도록 재설계됐다. 이는 정점 쉐이딩이 2개의 파트로 분할될 수 있으며 이는 화면상에서 보이지 않는 Varying(버텍스 쉐이더에서 프래그먼트 쉐이더로 데이터를 전달하기 위해 그래픽 처리에 사용되는 변수이며 GPU가 해당 삼각형을 자동으로 보간하도록 한다)을 읽거나 쓰지 않기 때문에 대역폭을 절약한다. 또한 보이지 않는 포지션을 다시 쓰지 않기 때문에 대역폭을 더욱 절약할 수 있도록 한다.

 

쉐이더 코어 자체를 살펴보면 훨씬 큰 변화가 이루어졌음을 확인할 수 있다. 바이프로스트 아키텍처를 통해, ARM은 방대한 콘텐트 및 트렌드 분석은 물론, 오랜 업계 경험을 토대로 완전히 새로운 명령어 세트를 선보였다. 일반적인 트렌드는 그 어느 때보다도 프로그래머블 쉐이더가 점점 복잡해지고 있다는 점이며, 특히 연산량이 많고, 많은 스칼라 코드를 사용하는 프로그래머블 쉐이더를 실행하는 것이다. 바이프로스트의 새로운 실행 엔진에는 첨단 쉐이더 코어 실행 시 매우 효율적인 새로운 연산 장치를 제공한다. 향후 추가해야 하는 경우 쉽게 확장될 수 있으며, 아키텍처는 이를 쉽게 수행할 수 있도록 지원한다.

 

속성 및 Varying 연산이 그래픽에서 매우 일반적이며 고도로 최적화된 하드웨어 블록을 보장해야하기 때문에, 바이프로스트에서는 이들을 별도의 장치로 분리했다. 새로운 명령어 세트에서는 제어 회로를 효율적으로 설계하기 위해 파이프라인을 통해 4개 스레드를효율적으로 하나로 묶은 쿼드(Quad)와 쿼드를 실행 엔진으로 넘기는 쿼드 관리자를 선보였다. 또한 제어 버스가 추가되어 물리적 구현이 용이해졌으며, 이는 위에서 논의한 최신 공정 발전과 함께 그 중요성이 더욱 높아지고 있다.

 

바이프로스트는 실행 엔진 구현 시, 배선 밀도를 낮추기 위해 구문(Clause) 쉐이더라는 개념을 도입했다. 구문은 쪼갤 수 없는 일련의 명령어들의 집합으로 생각할 수 있다. 여기서 쪼갤 수 없다는 의미는 구문의 실행이 분기 명령(예를 들어, 분기는 오직 구문 경계에서만 실행됨)이나 그 어떠한 인터럽트에 의해서도 중단될 수 없다는 것을 의미한다. 이는 해당 구문이 예측 가능하기 때문에 데이터 경로 전반에서 제어 회로를 보다 용이하게 설계할 수 있다. 예를 들어 GPU가 실행 전이나 후에 구문의 명령 개수만큼 증가할 것을 알고 있기 때문에 구문 내부의 프로그램 카운터를 업데이트할 필요가 없다.
CPU의 경우, 중단 시 신속한 조치가 필수적이며 분기는 매우 자주 실행된다는 점에서 일반적으로 이와 같은 작업은 불필요하다. 하지만

 

GPU에서 이 기법은 설계를 한층 최적화하는 데에 사용될 수 있다. 입력되는 명령의 흐름을 생각해 보자. 연속 명령이 이전 명령에서 나온 결과를 입력 데이터로서 다시 사용되는 경우가 매우 자주 발생한다(아래 예에서 여러 ADD 명령어들에 의해 계속해서 데이터를 더하는 연산). 이러한 작업이 매우 자주 나타나고 레지스터 뱅크 접근에 의해 막대한 비용을 발생시킨다면(즉, 큰 메모리 영역에 대한 접근), 임시 레지스터를 사용하여 레지스터 뱅크 접근을 줄임으로써 이를 최소화하는 방법이 있다. 그 이유는, 해당 구문 내에서 원자적 실행(atomic execution)을 보장하는 구문들에 한해 실행될 수 있으며, 또한 레지스터들이 임시 자료들이어서 한 사이클 동안만 유지되기 때문이다.

 

아래 예제는 간단한 쉐이더 프로그램을 통해 구문 쉐이더들이 명령어 세트의 관점에서 어떻게 실행되는지를 보여주고 있다. 이는 컴파일러가 처리해야 하는 것이며 개발자는 결코 볼 수 없는 것이라는 점을 유념해야 한다.

요약 

바이프로스트 아키텍처가 어떻게 그와 같은 효율성 및 성능 향상을 달성했는지를 자세히 살펴 본 결과, 사용자가 기대하는 수준만큼 GPU 성능을 크게 향상시키기 위해 Mali-G71에서 여러 획기적인 기술 혁신이 이루어졌다는 사실을 명확히 확인할 수 있었다. 벌칸 및 OpenCL 2.0과 같은 새로운 최신 API를 지원할 수 있는 Mali-G71은 사용자들에게 흥미롭고 새로운 활용 사례를 경험하게 할 것이다. ARM은 바이프로스트 아키텍처를 지속적으로 발전시킴으로써 차세대 컨텐트 요구에 부응하고 업계의 기대치를 뛰어넘고 있다. 2016년 이후 ARM Mali Multimedia Suite를 통해 더욱 획기적인 발전이 이루어지게 될 것이다.

  ● 참고 자료

[1] Falanx 인수 관련 ARM 보도자료(www.arm.com/about/newsroom/13706.php)
[2] 배선 저항 vs ‘공정’에 대한 인텔 보고서(blogs.intel.com/intellabs/files/2014/06/T1602.pdf)
[3] 슈퍼맨 더 라이드(Superman The Ride) - 가상 현실 롤러 코스터(www.sixflags.com/newengland/attractions/vr/overview)
[4] Nielsen 360 게임 보고서(www.nielsen.com/us/en/insights/news/2016/gaming-gone-global-keeping-tabs-on-worldwide-trends.html

<저작권자(c)스마트앤컴퍼니. 무단전재-재배포금지>

본 기사의 전문은 PDF문서로 제공합니다. (로그인필요)
다운로드한 PDF문서를 웹사이트, 카페, 블로그등을 통해 재배포하는 것을 금합니다. (비상업적 용도 포함)
 PDF 원문보기

  •  홈페이지 보기
  •  트위터 보기
  •  페이스북 보기
  •  유투브 보기
  • 100자평 쓰기
  • 로그인

태그 검색
본문 검색
TOP