1. 개요
- PC의 그래픽 성능을 좌우하는 그래픽 카드의 핵심 칩
- 1990년대 초기까지만 해도 그래픽 카드는 CPU의 연산 결과를 그림이나 글자 신호로 변환하여 모니터로 화면을 출력하는 어댑터로 인식됨.
- 1990년대 중반 이후부터 멀티디미어 콘텐츠(특히 게임)가 주목을 받으면서 CPU를 보조할 3D 그래픽 연산 전용의 프로세서 (=co-processor), 즉 GPU가 그래픽카드에 탑재되기 시작.
2. GPU의 등장
- GPU라는 용어는 nVIDIA사에서 1999년에 ‘지포스(GeForce)’라는 이름의 새로운 그래픽 컨트롤러(Graphics Controller: 그래픽카드용 칩)을 내놓으며 처음 제창한 것.
- 2000년, ATI(현재의 AMD)사에서 ‘라데온(Radeon)’이라는 GPU를 출시, 양사 경쟁 본격화.
- 2023년 현시점에서 NVIDIA의 강력한 SW 라이브러리 및 개발환경 제공으로 사실상 NVIDIA가 시장의 대세로 떠오른 상황으로 특히 GPGPU에서는 사실상 독점에 가까운 수준에 이루고 있음.
3. GPU의 발전방향
- 신형 GPU일수록 보다 미세한 공정으로 제조되어 같은 면적에 집적되는 트랜지스터의 수가 늘어나는 추세.
- 하나의 기판에 여러 개의 GPU를 동시에 탑재하여 성능을 높이는 멀티(Multi) GPU 환경이 도입되기 시작.
- 현대의 GPU는 그 외에도 다양한 기능이 더해져서 동영상의 재생 품질 및 인코딩(변환) 속도를 향상시키는 nVIDIA의 퓨어비디오(PureVideo), AMD의 Avivo(Advance video in video out) 기술 등이 추가되고 있는 추세.
- GPU의 강력한 병렬 연산 처리 기능을 일반 프로그래밍에 활용할 수 있도록 API가 제공되기 시작하면서 그래픽 및 디스플레이 작업 이외의 범용 작업에 사용이 늘어나면서 이를 위한 GPU인 GPGPU (General Purpose GPU)가 널리 사용되고 있음.
4. CPU + GPU = CPU 내장형 그래픽 프로세서
- CPU 내에 GPU에 탑재하여 통합시킨 형태.
- 하나의 칩 안에서 CPU 부분과 GPU 부분이 동일한 버스를 사용함으로써 상호간 데이터 전달 효율을 높임.
- 복잡한 프로그래밍 과정 없이 CPU의 장점인 정수연산 능력과 GPU의 장점인 부동소수점 연산 능력을 동시에 발휘해 범용적 작업에 적용하기가 용이함.
- AMD에서는 이를 APU(Accelerated Processing Unit, 가속처리장치)라고 부름.
Computer Graphics는
수백만개의 pixel에 각 숫자(intensity)에 따라 특정 값으로 표시되게 하는 작업을 초당 60회 이상 수행되도록 하는 경우가 일반적임.
또한 비슷한 혹은 같은 intensity로 여러 pixel에 할당되는 경우가 많아 GPU는 병렬 연산 기능이 CPU에 비해 압도적으로 우수함 (비교적 단순한 연산을 동시에 수천개를 동시에 수행하는 작업에서는 GPU가 유리.)
5. GPGPU and Parallel Programming
- GPU는 부동소수점 연산을 수행할 수 있는 ALU로 구성된 core가 수천 개 를 가지기 때문에, 수천개의 부동소수점 연산을 병렬로 동시에 수행할 수 있음.
- 또한 동시에 수천 개의 연산의 operand들이 필요하므로 CPU에 비해 훨씬 넓은 memory bus를 가지고 있으며 매우 빠른 속도로 접근가능하다는 특징을 가짐.
- 이같은 병렬 연산 기능을 범용 작업 (특히 딥러닝 기술 구현)에 적용할 수 있도록 GPGPU와, 이 GPGPU를 이용한 프로그래밍을 가능케 해주는 라이브러리 (NVIDA의 CUDA)가 제공되고 있음.
- 또한 이들 라이브러리를 기반으로 고속 연산이 필요한 다양한 분야마다 고유한 framework들이 제공되고 있음 (pytorch, tensorflow등등)
GPGPU의 경우 딥러닝 등의 필수 요소로 자리잡은 상태이지만,
실제로 GPU에는 딥러닝에 필요없는 기능들도 가지고 있기 때문에 이를 제거한 전용 디바이스인 TPU (Tensor Processing Unit), NPU (Neural Processing Unit)이 개발된 상태임.
TPU(NPU의 하나라고 볼 수 있음)는 GPGPU보다 저렴하게 보다 많은 수를 장착한 시스템을 만들기 쉽게 한다.
단, colab등의 개발환경에서 1개의 디바이스로만 비교할 경우 GPGPU가 훨씬 고속으로 처리되는 게 일반적임 (여러 문서상에서 신경망 관련 연산에서 효율이 높게 설계구현되어있다고 하는데 2022.12 현재 colab에선 GPGPU가 더 빠름. 실제 가격은 훨씬 GPGPU가 비쌈.)
'Computer > CE' 카테고리의 다른 글
[CE] Processor and Core (0) | 2022.12.18 |
---|---|
[CE] Microprocessor (0) | 2022.12.18 |
[CE] Instruction Set Architecture: RISC vs. CISC (0) | 2022.12.18 |
[CE] Control Unit and Instruction (0) | 2022.12.17 |
[CE] Flash Memory (or PROM Flash) and SSD (Solid State Disk) (1) | 2022.12.10 |