전자공학종합설계의 첫 번째 게시물입니다.
어제부터 주간미팅 자료를 준비하고 있는데, 자료를 보기만 하니까 내용이 금방 휘발되고 머릿속이 중구난방이라 글로 남기려고 합니다. 그리고 이 글을 바탕으로 주간 미팅 발표자료를 만들어볼 생각입니다.
What is GPU?
GPU는 Graphic Processing Unit의 약자입니다. 본래 GPU는 비디오게임의 real-time rendering을 위해 개발되었습니다. 게임에 등장하는 방대한 데이터의 그래픽을 효과적으로 연산하기 위해서죠. 하지만 GPGPU(General Purpose GPU)가 등장하면서 GPU는 non-graphic 분야에서 활용 범위가 넓어졌습니다.
GPU는 여러 개의 core가 함께 연산을 수행하므로, 여러 코어로 나누어 처리할 수 있는 작업의 경우 GPU가 엄청난 성능 이점을 제공합니다. 즉, 다수의 ALU를 사용해서 대량의 data에 대한 연산을 병렬로 처리하는 것이죠. 이러한 GPU의 특성을 이용한 GPGPU는 AI와 Deep learning이 등장하며 그 수요가 증가했습니다.
GPU의 개괄적인 내용인 이정도로 하고, ARM GPU에 대해 알아보겠습니다.
ARM GPU
다음 사진은 ARM Developer(https://developer.arm.com/)에서 찾은 ARM사의 Mali GPU의 update diagram입니다.
프로젝트 첫 주차의 목표인 가장 작은 ARM 계열 GPU architectire 이해하기를 달성하기 위해 찾아봤습니다.
저는 우선 가장 작은 GPU을 버전이 오래된 GPU로 정의하고 조사를 시작했습니다. 이 기준에 대한 정의는 프로젝트가 진행되며 바뀔 수도 있습니다.
Diagram에서 제일 왼쪽 밑에있는 Mali-400이라는 모델이 제가 정의한 기준과 부합합니다. 그래서 ARM Utgard architecture와 Mali-400에 대해 알아봤습니다. 참고로 ARM GPU 아키텍처의 명칭은 북유럽 신화의 지명에서 유래했습니다.
ARM Utgard Architecture
Utgard Architecture을 기반으로 한 GPU 중 가장 먼저 출시된 것은 Mali-55입니다. 하지만 ARM Developer에서 언급이 되지 않고, 자료가 거의 없어서 차선책으로 Mali-400을 조사했습니다.
Utgard Architecture는 ARM 계열 GPU architecture중 출하량 기준 가장 성공적인 architecture입니다. 최초로 programmable shader core architecture로, 에너지 및 영역 효율적인 한 쌍의 shader core design(vertex processor 1개와 fragment processor 1개)을 사용하여 OpenGL ES 2.0 기능 세트를 지원합니다.
Utgard architecture 기반 GPU는 보통 mobile or embedded 환경에서 2D or 3D graphics를 가속하기 위해 사용됩니다.
Utgard Architecture HW components는 다음을 포함합니다.
1. Geometry processor
2. Pixel processor
3. Memory Management Units(MMU)
4. Power Management Units(PMS)
5. L2 cache
ARM Developer에서 processor와 shader core를 혼용해서 사용하는데 이 둘의 명확한 차이는 아직 모르겠습니다.
이중 GPU 연산의 핵심이 되는 Utgard shader core(Geometry, Pixel)를 살펴보겠습니다.
Geometry processor
Utgard vertex shader core는 serial stream에서 음영처리된(shaded) vertices를 처리합니다.
또한 geometry processor는 graphics pipeline의 vertex processing을 처리합니다. 이는 pixel processor에 전달할 list of primitive를 생성하고, polygon lists와 packed vertex data와 같은 자료 구조의 생성을 가속합니다.
Pixel processor
pixel processor는 graphics pipeline의 rasterization과 fragment processing stage를 처리합니다. pixel processor는 geometry processor가 생성한 data structure와 primitives를 사용해 화면이 최종이미지로 표시하는 framebuffer result를 만듭니다.
Mali-400 (Mali-400-MP)
utgard architecture를 바탕으로 만들어진 Mali-400 MP를 살펴보겠습니다. Mali-400 MP는 GPU core를 4개로 늘려 performance를 증대했습니다. Mali-400은 다양한 범위의 performance points와 applications를 해결할 solution으로 scalability를 제시했습니다.
Top-Level structure는 다음과 같습니다.
Mali Tile Based Rendering
Reduces off-chip framebuffer bandwidth
Tile based rendering은 on-chip 16 x 16 tile에 rasterize해서 off-chip framebuffer bandwidth를 줄여줍니다.
Mali-400 MP Geometry Processor
Geometry processor의 structure은 다음과 같습니다.
Mali-400 MP Pixel Processor
'프로젝트 > 전자공학종합설계' 카테고리의 다른 글
[전자공학종합설계] 3. 16bit MIPS single-cycle CPU design (2) | 2022.04.04 |
---|---|
[전자공학종합설계] 2. RISC-V pipelined CPU implemented in verilog HDL (2) | 2022.03.21 |
[전자공학종합설계] 0. GPU & Computer Graphics 관련 용어 정리 (0) | 2022.03.13 |
[전자공학종합설계] Orientation (0) | 2022.03.08 |