안녕하세요 여러분. 저는 랄프 포터입니다. 저는 삼성 모바일의 GPU 엔지니어로 지난 5년 동안 크로노스, 특히 벌칸 워킹 그룹의 삼성 대표로 활동해 왔습니다. 그 전에는 GPU 드라이버 엔지니어와 GPU 컴파일러/프로그래밍 모델 연구원으로 일했습니다. 삼성 내 우리 팀은 모든 모바일 하드웨어 공급업체의 GPU를 사용하는 핸드셋(단말기)을 개발해 왔습니다.
올해에는 최소 세 가지 이상의 GPU 아키텍처를 사용하는 기기를 출시할 예정이므로 현재 제공되는 제품에 대해 폭넓은 시각을 가지고 있습니다.
이 강연에서는 모바일 GPU의 아키텍처 기본 사항과 기존 데스크톱 부품과의 차이점에 대해 이야기할 것입니다.
기본적으로 저는 오늘 다른 발표자들이 이야기할 모든 멋진 새 기능에 대한 배경 지식을 제공하는 것을 목표로 하고 있습니다.
이 강연에서 다룰 내용은 다음과 같습니다:
- 모바일'에 대한 정의로 모두가 같은 생각을 할 수 있도록 합니다.
- 모바일 기기가 작동하는 제약 조건에 대한 논의 통합 메모리 아키텍처를 사용하는 모바일 기기와 전용 메모리를 사용하는 PC 애드온 카드 간의 메모리 아키텍처 차이점 및 그 차이의 중요성
모바일 GPU 아키텍처에 대한 개요와 가장 일반적인 기기가 주류 데스크톱 부품과 어떻게 다른지 살펴보세요.
그렇다면 “모바일 GPU”란 무엇을 의미할까요? “휴대폰과 같은” 것을 말합니다. 이러한 장치는 일반적으로 수동적으로 냉각되고 배터리로 구동되며 열적으로 제약이 있는 장치입니다.
여기서 전력 예산은 큰 요인입니다. 플래그십 데스크톱 GPU는 부하가 많을 때 400W 이상의 전력을 소비할 수 있습니다. 일부 플래그십 모바일 핸드셋(단말기)의 경우 일시적으로 전체 핸드셋(단말기)의 전력 소모량이 8~9W까지 올라갈 수 있지만, 일반적인 지속 전력 소모량은 3~6W 정도로 더 낮습니다(GPU의 경우 8~9W라고 말하지 않은 점에 유의하세요).
이는 전체 단말기입니다.
여기에는 연속성이 있습니다. Windows-on-ARM 노트북이나 휴대용 게임 장치와 같은 능동형 냉각 장치에서 전통적으로 “모바일 GPU IP” 공급업체의 GPU를 볼 수 있습니다.
아키텍처상으로는 동일한 GPU일 수 있지만 액티브 쿨링이 추가되면 작동 제약 조건이 달라집니다.
아키텍처별 최적화 지침은 두 장치 세트에 대해 동일할 수 있지만, 능동 냉각 장치에는 훨씬 더 많은 헤드룸이 있습니다. Steam 데크와 삼성 S24의 특정 변형은 모두 RDNA 2 GPU로 거의 동일한 기능 세트를 제공하지만, 그 중 하나는 능동 냉각 기능이 있고 전력 예산이 훨씬 높으며 충전 없이 예상되는 배터리 수명이 훨씬 더 짧습니다.
이 강연의 목적상 스마트폰, 태블릿 및 일부 임베디드 장치와 같은 장치로 제한합니다.
마지막으로, 오늘날 모바일과 데스크톱 간의 기능 격차는 실제로 매우 작습니다.
예를 들어, HW 레이 트레이싱은 모든 모바일 SoC 공급업체에서 사용할 수 있습니다.
뉴럴 그래픽 기술이 모바일에 등장하기 시작했습니다. 아키텍처상의 이유로 아직 널리 보급되지 않은 몇 가지 기능이 있지만 그 격차는 이제 작아졌습니다.
모바일과 비모바일의 구분은 기능의 가용성 여부보다는 리소스 제약에 콘텐츠를 맞출 수 있느냐는 숫자 게임입니다.
모바일 디바이스에서는 엄청난 양의 기능을 하나의 실리콘 패키지에 담습니다.
이를 시스템 온 칩 또는 SoC라고 합니다.이 블록 다이어그램은 특정 하이엔드 2024 SoC에서 생성된 것이지만, 대부분의 최신 SoC에 대한 IP 블록 세트와 상대적인 영역을 잘 나타냅니다.
GPU가 가장 큰 개별 블록임을 알 수 있습니다. GPU와 함께 범용 CPU 코어 클러스터, 신경 처리 가속기, 카메라용 이미지 신호 프로세서, HW 비디오 가속기... 그 목록은 계속 이어집니다.
이 슬라이드에서 몇 가지 요점을 살펴보세요:
- SoC에는 각각 특수한 작업을 수행하는 수많은 전용 IP 블록이 있습니다.-모든 리소스, 특히 메모리(및 열 헤드룸)를 공유합니다.
- 시스템은 사용하지 않는 블록의 전원을 적극적으로 차단합니다....
- 하지만 SoC의 많은 부분을 필요로 하는 사용 사례를 상상하는 것은 꽤 쉽습니다.
한 가지 예로 증강 현실 애플리케이션을 들 수 있습니다.
포켓몬 고 같은 것을 생각해 보세요. 이와 같은 애플리케이션에서는 카메라를 사용하기 때문에 ISP, 시뮬레이션 및 애니메이션을 위한 CPU, 렌더링을 위한 GPU, 합성 및 출력을 위한 디스플레이 프로세서, 위치 데이터를 위한 연결 블록을 활용하거나 서버와의 통신을 위한 연결 블록. 이 모든 블록은 메모리를 통해 통신합니다.
이 시점에서 전체 SoC의 전원을 켜는 것이 매우 가까워졌습니다.
이전 슬라이드에서 언급했듯이 모바일 장치는 수동적으로 냉각되므로 열적 제약을 받습니다.
모바일 SoC는 짧은 시간 동안의 활동을 매우 잘 처리합니다.
이는 일반적인 소비자 사용 패턴과도 밀접한 관련이 있습니다.
복잡한 웹페이지를 스크롤하고 싶을 때 큰 CPU 코어를 켜고 GPU 클럭을 높이고 재생률을 최대 250Hz까지 높일 수 있습니다. 이를 통해 훌륭하고 부드러운 사용자 경험을 제공합니다.
하지만 이러한 수준의 성능을 장시간 유지하는 것은 불가능합니다.모든 전자제품은 부산물로 열을 발생시키며, 그 열을 어떻게든 방출해야 합니다.
패시브 쿨링 방식의 휴대폰에서는 그 열이 결국 기기 표면으로 전도되어 공기 중으로 방출됩니다.
이러한 방식으로 방출할 수 있는 에너지의 양은 도체의 표면적(즉, 휴대폰의 크기)과 주변 공기 온도와 디바이스 표면 온도 사이의 차이와 관련이 있습니다.이러한 요소는 비교적 변하지 않습니다.
소비자는 주머니에 편안하게 들어가는 휴대전화를 원하며, 휴대전화를 들고 있는 동안 화상을 입는 것을 원하지 않습니다. 배터리 기술이 혁신적으로 발전하더라도 전력 예산은 크게 늘어나지 않을 것입니다.
따라서 모바일 GPU 설계는 더 적은 전력으로 더 많은 작업을 수행하는 것이 핵심입니다.
삼성 엔지니어가 게임 스튜디오와 최적화를 위해 협력할 때 가장 먼저 하는 작업 중 하나는 일반적으로 핸드셋(단말기)의 CPU와 GPU 주파수를 무한정 지속할 수 있는 수준으로 고정하고, 피크가 아닌 그 수준에 맞춰 최적화하는 것입니다.
처음 30초 동안의 성능이 아닌 지속적인 성능을 위해 애플리케이션을 프로파일링할 것을 강력히 권장합니다.
이전 슬라이드에서 열 관리를 위해 적극적으로 주파수를 조절할 것이라고 말씀드렸습니다. 주파수를 높이려면 전압을 높여야 하고, 이는 주파수가 증가함에 따라 전력 소비가 4배로 증가하는 것을 의미합니다. 전력 소비는 발열량과 매핑되므로 주파수를 낮추면 발열량이 크게 감소합니다.
메모리에 대한 주제를 계속 이어가면서 산술 로직과 메모리 연산의 에너지 비용이 시간에 따라 어떻게 변화했는지 살펴보는 것이 도움이 됩니다.
우리는 동일한 전력 예산에 점점 더 많은 산술 논리를 담을 수 있도록 관리하고 있습니다. DRAM 에너지 비용은 개선되었지만 동일한 비율로 개선되지는 않았습니다.
모바일 GPU가 처리할 수 있는 연산량이 메모리 대역폭보다 빠르게 확장되고 있는 처리량도 비슷한 양상을 보이고 있습니다.
여기서 얻을 수 있는 교훈은 메모리를 건드리는 것은 비용이 많이 들며, 알고리즘이 메모리 액세스를 최소화할 수 있는지를 고려해야 한다는 것입니다.
메모리에 대한 주제를 계속 이어가면서 산술 로직과 메모리 연산의 에너지 비용이 시간에 따라 어떻게 변화했는지 살펴보는 것이 도움이 됩니다.
우리는 동일한 전력 예산에 점점 더 많은 산술 논리를 담을 수 있도록 관리하고 있습니다.
DRAM 에너지 비용은 개선되었지만 동일한 비율로 개선되지는 않았습니다.
모바일 GPU가 처리할 수 있는 연산량이 메모리 대역폭보다 빠르게 확장되고 있는 처리량도 비슷한 양상을 보이고 있습니다.
여기서 얻을 수 있는 교훈은 메모리를 건드리는 것은 비용이 많이 들며, 알고리즘이 메모리 액세스를 최소화할 수 있는지 고려해야 한다는 것입니다.
다음 패스의 입력으로 사용될 때 DRAM에 쓰고 다시 읽어야 합니다. 이렇게 하면 파이프라인의 조각 처리 끝에서 메모리 대역폭 비용이 발생합니다.
타일 기반 GPU는 약간 다른 패턴을 따릅니다. 기본 아이디어는 지오메트리와 프레임 버퍼를 타일로 분할하여 각 타일에 미니어처 이미지를 렌더링하는 것처럼 병렬로 셰이딩을 수행하는 것입니다.
이를 위해서는 지오메트리 위치를 미리 변환하여 커버리지에 따라 각 프리미티브를 타일로 처리할 수 있는 비닝 구조로 할당할 수 있도록 해야 합니다.
비닝 구조가 생성되면 GPU는 각 프레임버퍼 타일을 반복하여 모든 지오메트리를 래스터화합니다.
주로 타일 크기와 지오메트리 처리와 관련하여 구현마다 차이가 있지만, 공통적인 주제는 독립적으로 처리할 수 있는 타일로 분해한다는 것입니다.
여기서 중요한 점은 타일을 위한 모든 프레임버퍼 메모리가 이제 GPU 자체에 위치한 작고 빠른 메모리, 즉 이 다이어그램의 '온칩 타일 메모리'에 들어갈 수 있다는 것입니다.
이렇게 하면 모든 프레임버퍼 작업이 GPU 내에 유지되고 필요한 프레임버퍼 어태치먼트만 시스템 메모리에 기록될 수 있습니다.
예를 들어 래스터화 후 깊이 버퍼가 필요하지 않은 경우 RAM에 저장하지 않고 버릴 수 있습니다.
프레임버퍼 작업 비용을 줄이는 것이 지오메트리 처리 비용을 줄이는 것보다 더 중요하기 때문에 지오메트리를 많이 사용하는 워크로드는 IMR의 성능이 저하될 수 있다고 가정하여 TBDR 아키텍처를 채택함으로써 절충점을 찾고 있습니다.
또한 지오메트리 비닝을 먼저 수행해야 하기 때문에 프레임 지연 시간이 더 길어질 수 있습니다.
조각이 많은 워크로드의 경우 파이프의 조각 셰이딩 끝에서 큰 이점이 있습니다. 타일에서 작동하기 때문에 클리어를 (거의) 무료로 얻을 수 있고, 비닝된 지오메트리에서 Hidden Surface Removal을 수행하여 오버드로를 줄일 수 있으며, 오버드로가 발생하더라도 타일에서 발생하기 때문에 상대적으로 비용이 저렴합니다.
최종 렌더링된 이미지만 DRAM에 커밋하면 됩니다. 이 경우에도 일부 하드웨어는 출력 블록과 기존 콘텐츠를 비교하여 체크섬하고 변경된 내용이 없는 경우 쓰기를 건너뜁니다.
지연 조명 알고리즘은 이 모든 것이 어떻게 결합되어 이점을 제공하는지 보여주는 좋은 예입니다. 이 알고리즘에서는 일련의 중간 값(알베도, 표면 노멀, 깊이)을 생성한 다음 이를 결합하여 최종 이미지를 생성합니다.
조명을 수행하는 동안 이러한 중간 값을 온칩에 보관했다가 시스템 메모리에 쓰지 않고 버릴 수 있다면 대역폭을 크게 절약할 수 있습니다.
TBDR에서는 GPU가 이미지의 작은 타일을 선택하고 고성능 온칩 메모리에 래스터화한 다음 최종 출력만 메인 시스템 DRAM에 저장합니다. 모든 오버드로는 온칩에서 발생하며 경우에 따라 완전히 제거될 수도 있습니다.
타일 기반 아키텍처는 우리에게 많은 승리를 가져다주었습니다.
- 최종 씬을 구성하는 동안 중간 출력을 생성하는 데만 사용되는 트랜지션 어태치먼트는 최소한의 대역폭 비용으로 온칩으로 유지할 수 있습니다.
- 마찬가지로 DRAM을 건드리지 않고도 온칩으로 지우기 및 버리기를 수행할 수 있습니다.
- 멀티 샘플링 안티앨리어싱에서도 동일한 이득을 볼 수 있습니다. 중간 멀티 샘플링된 이미지는 온칩에 남아 있고, 최종적으로 해결된 이미지만 DRAM에 기록될 수 있습니다.
하지만 이 모든 것에는 어느 정도 대가가 따릅니다.
- IMR 아키텍처에서는 첫 번째 삼각형을 조립하자마자 지오메트리 셰이딩을 시작할 수 있습니다. TBDR을 사용하면 먼저 지오메트리를 비닝해야 하며 이는 DRAM에 저장해야 합니다.
- 따라서 과도한 마이크로 지오메트리와 테셀레이션 또는 메시 셰이더와 같은 지오메트리 증폭은 모두 적합하지 않습니다.
여기서 한 발 물러나 복잡한 3D 게임을 플레이하지 않을 때 모바일 핸드셋(단말기)이 대부분의 시간 동안 무엇을 하는지 생각해 보는 것이 유용합니다. 모바일 핸드셋(단말기)의 UI 렌더링은 일반적으로 수백 개의 트라이앵글로 2D 지오메트리와 복잡한 레이어링 및 블렌딩으로 구성됩니다. 또한 이러한 지오메트리의 대부분은 대부분의 시간 동안 움직이지 않습니다. 이는 타일 기반 GPU의 강점과 매우 잘 맞아떨어지며, 이러한 속성을 갖게 된 것은 우연이 아닙니다.
마무리합니다:
- 전력 및 열 거동은 모바일의 핵심적인 특징입니다.
- 모바일 장치가 열 제한을 초과하기 시작하면 스로틀링됩니다.
- 메모리 대역폭은 귀중한 리소스이자 전력의 주요 소비처이며 전체 SoC에서 공유되는 리소스로, GPU 전용이 아닙니다.
- 콘텐츠를 디자인할 때 모바일 GPU의 아키텍처를 고려하세요. 대량의 서브 픽셀 트라이앵글이 포함된 게임을 디자인하는 경우 시중의 가장 일반적인 GPU에서는 성능이 저하될 수 있습니다.
- 지속 가능한 성능이 중요합니다. 약간의 조정을 하고 30초 동안 테스트한 다음 기기를 식혀서 최적화하는 경우 오해의 소지가 있습니다.
'TECH.ART.FLOW.IO' 카테고리의 다른 글
[주석번역] Seamless Rendering on Mobile: The Magic of Adaptive LOD Pipeline | 시그라프 2 (1) | 2024.08.19 |
---|---|
[주석번역] 하이프하이프를 물리 기반 렌더링으로 전환하기 | 시그라프2024 (0) | 2024.08.19 |
Vulkan Study Stuff. (0) | 2024.08.10 |
[발표번역] GDC2024. GLOBAL ILLUMINATION WITH BRIXELIZER SDK UPDATES. (0) | 2024.08.10 |
[번역] Gdc2024 Open World Rendering Techniques in 'Hogwarts Legacy' (1) | 2024.08.09 |