베이징에서 Mali의 새 시리즈를 발표
Mali 아키텍처를 대폭 확장
Arm이 머신 러닝을 본격적으로 시작합니다. Arm의 GPU, Mali 시리즈의 메인스트림 IP에 머신 러닝을 위한 명령어를 포함합니다. 구체적으로는 머신 러닝의 추론용으로 8-bit 정수(Int8) 특수 연산 명령을 더했습니다. 또 GPU의 마이크로 아키텍처도 크게 변경해, SIMT (Single Instruction, Multiple Thread)의 실행을 4스레드에서 8스레드로 확장했습니다.
Arm은 베이징에서 새로운 IP의 발표 이벤트를 개최해 GPU에 관련된 4종의 IP를 발표했습니다. 메인 스트림 전용 GPU 코어Mali-G52, 셋탑 박스와 디지털 TV 용 GPU 코어 Mali-G31, 메인스트림용 디스플레이 프로세서 Mali-D51, 메인스트림 전용 비디오 프로세서 Mali-V52입니다. GPU 코어는 Arm의 기존 GPU 아키텍처인 Bifrost를 기반으로 하나, G52는 큰 변경이 있었습니다.
새로운 Mali을 발표하는 Ian Smythe (Senior Director, Client Line of Business, Arm)
발표회를 시작하면서 Ian Smythe는 Arm의 Mali-GPU 코어 IP가 2017년에 12억 개 출시됐다고 설명했습니다. 스마트폰에선 50%를 차지했음을 강조했습니다. 디지털 TV에서의 점유율은 80%입니다. 실제로 메인스트림과 저가형의 스마트폰 SoC는 Mali-GPU 코어가 압도적이라 시장에서 존재감이 큽니다.
모바일 GPU의 선두주자인 Arm의 Mali 시리즈
다음 단계는 메인스트림 모바일 제품에 머신 러닝을 보급
AI 기능을 도입한 제품의 90%는 CPU 코어 IP로 Arm을 사용하기에, Arm의 솔루션이 보급될 여지도 큽니다.
다음 단계로 Arm의 목표는 포괄적인 머신 러닝 솔루션인 Arm Project Trillium이라고 설명했습니다. 모바일 시장은 머신 러닝 애플리케이션이 이끌어나가고 있다는 인식을 밝혔습니다. 그래서 모바일에서 머신 러닝을 촉진하기 위해 메인스트림 전용 GPU 코어의 머신 러닝 기능을 강화합니다.
이미지 인식이나 음성 인식 등을 스마트폰 같은 디바이스에서 보다 잘 처리한다면, 기존의 터치 패널에 내츄럴 사용자 인터페이스를 더한 멀티 입력이 가능해집니다. 객체 인식을 통해 고급 증강 현실 기능도 제공합니다. 이런 개선된 인터페이스를 디지털 TV에도 도입합니다. 이를 위해 저렴하게 머신 러닝 솔루션을 제공하는 것이 Arm의 Mali-G52입니다.
사용자 인터페이스의 몰입감을 늘리면서 메인스트림 그래픽에 요구하는 기능이 늘어나고 있습니다.
물체를 인식해 현실과 CG를 융합시켜 보다 정교한 증강 현실을 구현
디지털 TV에서도 사용자 인터페이스의 개혁을 필요로 하고 있습니다.
SIMT의 레인 수를 두배로, int8 명령을 강화
Arm는 비프로스트 아키텍처 기반의 고성능 GPU G71, G72. 메인스트림 GPU G51을 출시하고 있습니다. G52는 네번째 아키텍처로 가장 큰 차이점은 병렬 실행하는 레인 수가 늘고 딥 러닝을 위해 명령이 확장된 것이 큽니다.
기존의 비프로스트 아키텍처는 연산 클러스터 Execution Engine에 각각 4개의 32비트 연산 레인이 있었습니다. NVIDIA나 AMD가 이야기하는 코어가 Arm의 레인에 해당됩니다. 4레인 구성이기에 4개의 32비트 연산을 병렬로 수행할 수 있었습니다.
반면 새로운 G52 아키텍처는 32비트 연산 레인이 8개 있습니다. 8개의 32비트 연산을 병렬로 수행 가능합니다. 각 레인은 마스크 레지스터에 의해 프레디케이션 플로우 컨트롤이 가능한 SIMT입니다.
연산 레인을 두배로 늘리면서 G52의 Execution Engine 사이클 연산 성능은 최대 2배가 됐습니다. G52는 GPU의 최소 단위 인 GPU 코어에 2개나 3개의 Execution Engine을 탑재합니다.
또 GPU 코어는 최대 4코어까지 확장할 수 있습니다. 1개의 GPU 코어가 24레인, 최대 4개의 GPU 코어가 96 레인이 됩니다.메인스트림 GPU 코어로는 충분한 확장성입니다.
Execution Engine의 연산 레인을 4-8개로 늘리고 int8 명령을 확충
또한 Mali-G52는 8비트 정수의 Dot Product 명령이 추가됐습니. 원래 비프로스트 아키텍처는 32비트 연산 레인을 4개의 8비트 서브 레인으로 분할할 수 있습니다. 각 레인에 4개의 8비트 정수 연산을 SIMD (Single Instruction, Multiple Data)로 병렬 실행 가능합니다. 비프로스트는 지금까지 8-bit SIMD로 일반 연산을 지원했으나 G52에서 보다 효율적인 새 명령을 추가했습니다.
딥 러닝을 위한 8비트 정수 명령
G52의 새로운 명령어는 4-way 8-bit 정수(Int8)에 4-way 8-bit 정수의 곱셈이나 덧셈을 1사이클 안에 출력합니다. 이런 종류의 연산은 현재 신경망 기반의 머신 러닝에서 많이 사용합니다. 기존에는 여려 명령이 필요했던 처리지만 이를 1 명령, 1 사이클로 실행할 수 있게 되면서 G52에서는 신경망 성능이 크게 올랐습니다. NVIDIA도 비슷한 구현을 합니다.
신경망은 학습 단계에선 16-bit 부동소수점 (FP16)처럼 상대적으로 높은 정밀도가 필요하지만, 추론은 8-bit 정수를 현재 많이 씁니다. 지금의 GPU를 추론에 쓰려면 8-bit 정수의 지원이 관건입니다. G52는 Int8를 각 레인당 4웨이 연산이 가능하며, 레인 수도 Execution Engine에 8개씩 들어갑니다. Execution Engine는 32개의 병렬 Int8 연산이 가능하다. GPU 코어 전체에서는 384개의 병렬 Int8 연산이 됩니다. 학습에서 가장 많이 쓰는 FP16은 2-way SIMD를 지원합니다.
연산 레인은 기존의 2배인 8레인. int8의 4-way SIMD에서 연산이 가능
Mali-G52의 블럭 다이어그램
이러한 아키텍처 확장을 통해 Mali-G52는 이전 세대인 G51에 비해 3.6배의 머신 러닝 성과를 달성합니다. 반면 Execution Engine 자체의 다이 영역 확장은 22% 정도이며, GPU 코어 전체 영역의 확장은 11%라고 합니다. GPU 코어 설계 자체의 개선도 있어, G52은 G51에 비해 제조 공정이 같아도 성능 밀도는 30% 향상, 전력 효율은 15% 증가합니다.
다이 영역 대비 성능이 30% 상승
머신 러닝에서 성능 향상 폭이 큰 G52
Mali-G52은 기존에 G51를 쓰던 메인스트림 스마트폰의 모바일 SoC에 맞춰, 제조 비용과 소비 전력을 크게 늘리지 않으면서도 SoC에 통합할 수 있는 코어입니다. 여기에선 16nm 급을 가정했으나 소프트 매크로를 통해 어떤 공정이건 쓸 수 있습니다.
코어 영역 억제에 초점을 맞춘 Mali-G31
Arm은 메인스트림 전용 Mali-G52에서 아키텍처를 확장했습니다. 이에 비해 셋탑 박스와 디지털 TV용 Mali-G31는 아키텍처를 기본의 비프로스트로 유지하고, 코어 크기와 전력 사용량을 억제하는 데 초점을 맞췄습니다.
GPU 코어는 G51 세대와 같아 Execution Engine에 4개의 연산 레인. GPU 코어는 1개나 2개의 Execution Engine으로 구성됩니다. FP32 유닛은 4개나 8개로 아주 작습니다. G51과 비교하면 GPU의 총 면적은 20% 적습니다. 그러나 설계를 조정해 성능 밀도는 20% 올랐습니다.
Mali-G31의 가장 큰 특징은 최하위 GPU지만 최신 API를 지원한다는 점입니다. OpenGL ES 3.2과 벌칸을 지원해 메인스트림 GPU와 소프트웨어 호환성이 유지됩니다.
Mali-G31
Mali-G31 아키텍처
Mali-G31은 저전력 Cortex-A55 계열 CPU 코어로 구성된 저가형 모바일 SoC에 쓰입니다. 반면 Mali-G52는 성능이 더 높은 CPU 클러스터와의 조합을 상정하고 있습니다. Arm CPU 코어는 새로운 클러스터 아키텍처 DynamIQ에 의해 CPU 코어의 조합 자유도가 증가했습니다. 싱글 스레드 성능이 높은 Cortex-A75 1개, 저전력 Cortex-A55를 7개 쓰는 조합도 가능해졌습니다. 이런 신형 메인스트림 CPU 클러스터와 Mali-G52은 어울립니다.
Mali-G52과 G31의 시스템 구성
DynamIQ로 가능해진 새로운 CPU 클러스터 구성