GPU 칩 디자인 방법
Chapter 1 Introduction to Gpu Chip Design

1장: GPU 칩 설계 소개

GPU와 CPU의 차이점

그래픽 처리 장치(GPU)는 프레임 버퍼에 이미지를 빠르게 생성하기 위해 메모리를 신속하게 조작하고 변경하도록 설계된 특수 전자 회로입니다. GPU는 원래 CPU에서 2D 및 3D 그래픽 렌더링을 오프로드하여 비디오 게임과 같은 그래픽 집약적 애플리케이션의 성능을 크게 향상시키기 위해 개발되었습니다.

CPU는 범용 컴퓨팅을 위해 설계되어 다양한 프로그램을 지원하는 복잡한 제어 논리를 특징으로 하지만, GPU는 여러 작업을 동시에 처리하기 위해 설계된 수천 개의 작은 효율적인 코어로 구성된 고도로 병렬 구조를 가지고 있습니다. 이로 인해 GPU는 대량의 데이터를 병렬로 처리할 수 있는 그래픽 렌더링에 적합합니다.

CPU와 GPU 간의 주요 구조적 차이점은 다음과 같습니다:

  • 코어 수: GPU는 수백 개에서 수천 개의 작은 코어를 가지고 있지만, CPU는 2-64개의 큰 강력한 코어를 가지고 있습니다.
  • 캐시 계층: CPU는 지연 시간을 줄이기 위해 큰 캐시를 가지고 있지만, GPU는 작은 캐시를 가지고 있으며 대역폭이 높아 지연 시간을 보완합니다.
  • 제어 논리: CPU는 복잡한 분기 예측 및 Out-of-Order 실행 기능을 가지고 있지만, GPU는 훨씬 더 단순한 제어 논리를 가지고 있습니다.
  • 명령어 세트: CPU는 범용 컴퓨팅을 위한 다양한 명령어를 지원하지만, GPU 명령어 세트는 그래픽에 최적화되어 있습니다.
  • 메모리 대역폭: GPU는 많은 코어에 데이터를 공급하기 위해 매우 높은 메모리 대역폭(최대 1TB/s)을 가지고 있지만, CPU는 더 낮은 대역폭(50-100GB/s)을 가지고 있습니다.
  • 부동 소수점 성능: GPU는 HPC 및 AI 워크로드에 적합한 훨씬 더 높은 부동 소수점 성능을 제공합니다.

요약하면, GPU의 고도로 병렬 구조는 대량의 데이터를 병렬로 처리하는 작업에 탁월한 성능을 발휘하지만, CPU의 더 복잡한 제어 논리는 범용 컴퓨팅에 더 적합합니다.여기는 한국어 번역본입니다. 코드 부분은 번역하지 않고 주석만 번역했습니다.

GPU의 주요 응용 분야와 중요성

지난 20년 동안 GPU는 컴퓨팅 기술 중 가장 중요한 유형 중 하나가 되었습니다. 이는 GPU의 고도로 병렬적인 구조로 인해 CPU보다 복잡한 분기와 제어 흐름에 크게 의존하는 작업에 더 적합하기 때문입니다. 현대의 GPU는 매우 프로그래밍이 가능해졌으며, 오늘날 그래픽 이외의 용도로도 널리 사용되고 있습니다.

컴퓨터 그래픽스와 게임

GPU의 가장 일반적인 용도는 프레임 버퍼에 이미지를 가속화하여 디스플레이 장치에 출력하는 것입니다. GPU는 컴퓨터 그래픽스와 이미지 처리에 뛰어나며, 병렬로 처리되는 대량의 데이터에 대해 CPU보다 더 효과적입니다. GPU는 현대 게임 콘솔과 게임 PC의 표준 구성 요소입니다.

고성능 컴퓨팅(HPC)

GPU의 병렬 처리 기능은 매우 큰 데이터 세트를 병렬 알고리즘으로 처리하는 과학 컴퓨팅 응용 프로그램에 적합합니다. GPU는 기상 예보, 분자 동역학 시뮬레이션, 지진 분석과 같은 고도로 병렬적인 작업을 가속화하기 위해 슈퍼컴퓨터와 HPC 클러스터에 널리 채택되고 있습니다.

인공 지능과 기계 학습

GPU의 병렬 처리 능력은 최근 몇 년 간 딥 러닝과 AI의 급속한 발전에 핵심적인 역할을 해왔습니다. 복잡한 딥 신경망을 학습하려면 엄청난 컴퓨팅 능력이 필요하며, GPU는 딥 러닝 알고리즘의 핵심인 행렬 곱셈 연산을 효율적으로 수행할 수 있어 대규모 AI 모델 학습을 위한 플랫폼로 선호되고 있습니다. 주요 클라우드 AI 플랫폼과 AI용 슈퍼컴퓨터에서 GPU가 사용되고 있습니다.오늘날 e-search는 GPU에 크게 의존하고 있습니다.

암호화폐 채굴

GPU는 또한 암호화폐 채굴에 널리 사용되어 왔는데, 이는 병렬 처리 기능이 비트코인과 같은 작업 증명 기반 암호화폐에서 사용되는 암호화 해싱 알고리즘에 적합하기 때문입니다. 2017년 암호화폐 붐 기간 동안 AMD와 Nvidia의 고성능 GPU가 매우 높은 수요를 보였습니다.

가속화된 컴퓨팅 및 엣지 AI

무어의 법칙 둔화로 인해 CPU와 함께 작동하는 GPU와 같은 전용 가속기 칩을 사용하는 가속화된 이기종 컴퓨팅으로의 큰 추세가 있었습니다. GPU는 또한 스마트폰, 스마트 스피커, 자동차 시스템과 같은 엣지 디바이스에 AI 기능을 가져오는 데 사용되고 있습니다. 모바일 SoC에는 이제 그래픽과 AI 워크로드 가속에 모두 사용되는 내장 GPU가 일반적으로 포함되어 있습니다.

GPU의 대규모 병렬 처리 및 높은 메모리 대역폭은 이를 오늘날 가장 중요한 컴퓨팅 플랫폼 중 하나로 만들었으며, 컴퓨터 그래픽 이상의 응용 분야로 확장되고 있습니다. 범용 프로세서의 한계에 도달함에 따라 GPU, FPGA, AI 가속기와 같은 전용 칩이 미래의 중요한 컴퓨팅 엔진이 되고 있습니다.

계산 가속기 landscape

최근 몇 년 간 범용 CPU의 성능 향상이 둔화됨에 따라 특정 워크로드를 가속할 수 있는 전용 가속기 칩에 대한 관심이 증가하고 있습니다. GPU는 가속기의 가장 두드러진 예 중 하나이지만 다른 중요한 범주도 있습니다:

현장 프로그래밍 가능 게이트 어레이(FPGAs)

FPGA는 프로그래밍 가능한 상호 연결을 통해 연결된 구성 가능한 논리 블록(CLB) 매트릭스를 기반으로 하는 반도체 장치입니다. FPGA는 제조 후에 원하는 응용 프로그램 또는 기능 요구 사항에 따라 재프로그래밍할 수 있어 ASIC에 대한 더 유연한 대안을 제공합니다. 항공우주 및 국방, ASIC 프로토타이핑, 의료 영상 처리 등에 널리 사용됩니다.### 특정 응용 프로그램용 집적 회로(ASIC) ASIC는 범용 CPU와 달리 특정 용도로 맞춤 제작된 집적 회로입니다. 현대의 ASIC에는 종종 32비트 또는 64비트 프로세서, ROM, RAM, EEPROM, 플래시 메모리 등의 메모리 블록과 같은 대형 구성 요소가 포함됩니다. ASIC는 비트코인 채굴, AI 가속기, 5G 무선 통신, IoT 장치 등에 널리 사용됩니다.

AI 가속기

AI 가속기는 특히 신경망 학습 및 추론을 가속화하도록 설계된 전문 칩입니다. 구글의 텐서 처리 장치(TPU), 인텔의 Nervana 신경망 프로세서(NNP), 그리고 AI 칩을 처음부터 개발하는 여러 스타트업 등이 그 예입니다. 이러한 칩은 낮은 정밀도의 수학 연산, 효율적인 행렬 곱셈 회로, 그리고 계산 장치와 메모리의 긴밀한 통합을 통해 GPU나 CPU에 비해 훨씬 높은 에너지 효율을 달성할 수 있습니다.

비전 처리 장치(VPU)

VPU는 컴퓨터 비전 및 이미지 처리 작업을 가속화하도록 설계된 전문 칩입니다. 이미지 신호 처리, 스테레오 비전, CNN 기반 객체 감지 등의 작업을 위한 전용 하드웨어를 포함하는 경우가 많습니다. VPU는 자동차 ADAS, 드론, AR/VR 헤드셋, 스마트 카메라, 기타 엣지 장치와 같이 저지연 시각 처리가 필요한 응용 프로그램에 널리 사용됩니다.

신경형태 및 양자 칩

더 먼 미래를 내다보면, 신경형태 칩은 뇌의 구조를 모방하여 빠르고 에너지 효율적인 신경망 성능을 제공하려 하고, 양자 칩은 양자 역학적 효과를 활용하여 특정 문제를 고전 컴퓨터보다 빠르게 해결하고자 합니다. 이들은 아직 연구 단계이지만 미래에 중요한 가속기가 될 수 있습니다.

전반적인 컴퓨팅 트렌드는 도메인 특화 아키텍처와 다양한 가속기를 범용 CPU와 함께 통합하여 특정 작업을 가속화하는 것입니다.중요한 작업 부하. GPU는 이 가속화된 컴퓨팅 모델을 개척했으며 여전히 가장 중요한 유형의 가속기 중 하나이지만, 다양한 다른 가속기도 많은 응용 분야에서 점점 더 중요해지고 있습니다.

GPU 하드웨어 기본

현대 GPU는 다음과 같은 주요 하드웨어 구성 요소로 구성됩니다:

스트리밍 멀티프로세서(SM)

SM은 NVIDIA GPU 아키텍처의 기본 구성 요소입니다. 각 SM에는 제어 로직과 명령 캐시를 공유하는 CUDA 코어(일반적으로 64128개)가 포함되어 있습니다. 각 CUDA 코어에는 완전히 파이프라인화된 정수 산술 논리 장치(ALU)와 부동 소수점 장치(FPU)가 있습니다. 일반적으로 GPU 칩에는 16128개의 SM이 있어 수천 개의 CUDA 코어가 있습니다.

텍스처/L1 캐시

각 SM에는 성능을 향상시키고 메모리 트래픽을 줄이기 위한 전용 텍스처 캐시와 L1 캐시가 있습니다. 텍스처 캐시는 공간적 지역성을 최적화하도록 설계되어 그래픽 작업 부하에 특히 효과적입니다. L1 캐시는 메모리 작업(로드, 저장)을 처리하고 낮은 대기 시간으로 빠른 데이터 액세스를 제공합니다.

공유 메모리

공유 메모리는 SM 내의 CUDA 코어 간에 공유되는 빠른 온칩 메모리입니다. 자주 재사용되는 데이터에 대한 대역폭이 높고 대기 시간이 낮은 액세스를 가능하게 하는 프로그래밍 가능한 캐시로 사용될 수 있습니다. 공유 메모리는 동시에 액세스될 수 있는 동일한 크기의 메모리 모듈(뱅크)로 나뉩니다.

레지스터 파일

각 SM에는 피연산자에 대한 저지연 스토리지를 제공하는 큰 레지스터 파일이 있습니다. 레지스터 파일은 SM에 상주하는 스레드 간에 분할되어 각 스레드에 전용 레지스터 세트를 제공합니다. 레지스터 액세스는 일반적으로 추가 클록 사이클이 없지만 레지스터 읽기-쓰기 종속성 및 레지스터 메모리 뱅크 충돌로 인해 지연이 발생할 수 있습니다.

워프 스케줄러

워프 스케줄러는 SM에서 워프를 관리하고 스케줄링할 책임이 있습니다. 워프는 CUDA 코어에서 동시에 실행되는 32개의 스레드 그룹입니다.워프 스케줄러는 실행할 준비가 된 워프를 선택하고 코어에 전송하여 높은 활용도와 지연 시간 숨김을 가능하게 합니다.

상호 연결 네트워크

상호 연결 네트워크는 SMs를 GPU의 공유 L2 캐시와 메모리 컨트롤러에 연결합니다. 일반적으로 크로스바 스위치로 구현되어 여러 SMs가 L2 캐시와 DRAM에 동시에 액세스할 수 있습니다.

메모리 컨트롤러

메모리 컨트롤러는 GPU의 DRAM에 대한 모든 읽기 및 쓰기 요청을 처리합니다. 대역폭 활용도를 최대화하기 위해 DRAM 액세스 패턴을 최적화할 책임이 있습니다. 최신 GPU는 매우 넓은 DRAM 인터페이스(256비트~4096비트)를 가지며 GDDR6 및 HBM2와 같은 고대역폭 메모리 기술을 지원합니다.

RT 코어 및 텐서 코어

최신 NVIDIA GPU에는 레이 트레이싱(RT 코어) 및 AI/딥러닝(텐서 코어)을 가속화하기 위한 전용 하드웨어 유닛도 포함되어 있습니다. RT 코어는 경계 볼륨 계층(BVH) 탐색 및 레이-삼각형 교차 테스트를 가속화하고, 텐서 코어는 고처리량 행렬 곱셈 및 컨볼루션 연산을 제공합니다.

이러한 하드웨어 구성 요소가 함께 작동하여 GPU가 매우 높은 컴퓨팅 처리량과 메모리 대역폭을 달성할 수 있게 하며, 그래픽스, HPC, AI 등의 병렬 워크로드에 적합하게 만듭니다. 현대 GPU의 고도로 병렬화된 아키텍처와 전용 하드웨어 유닛은 특정 워크로드에서 일반 목적 CPU보다 수 배 높은 성능을 제공할 수 있습니다.

GPU의 간략한 역사

GPU의 역사는 1990년대 초반 3D 그래픽스 가속화의 초기 단계로 거슬러 올라갑니다:

  • 1990년대: 3dfx Voodoo와 NVIDIA RIVA TNT와 같은 초기 3D 가속기가 1990년대 중반에 등장하여 CPU에서 3D 그래픽스 렌더링을 오프로드했습니다. 이들은 특정 그래픽스 API에 최적화된 고정 기능 장치로, 프로그래밍 가능성이 없었습니다.

  • 1999년: NVIDIA는 하드웨어 변환 및 조명(T&L)을 구현한 최초의 GPU인 GeForce 256을 소개했습니다. 이는 표준 3D 렌더링 파이프라인에 추가되었습니다.여기는 한국어 번역본입니다. 코드 부분은 번역하지 않고 주석만 번역했습니다.

  • 2001년: NVIDIA는 프로그래밍 가능한 버텍스 및 픽셀 셰이딩을 도입한 GeForce 3를 출시했습니다. 이를 통해 더 현실적이고 동적인 시각적 효과를 구현할 수 있게 되었습니다. 이는 고정 기능 그래픽스 파이프라인에서 프로그래밍 가능한 그래픽스 파이프라인으로의 전환이 시작된 시점입니다.

  • 2006년: NVIDIA의 GeForce 8800 GTX 출시는 중요한 전환점이었습니다. 이 GPU는 CUDA 프로그래밍 모델을 지원하여 개발자들이 그래픽스 이외의 일반 목적 컴퓨팅(GPGPU)에 GPU를 사용할 수 있게 되었습니다. 이 GPU는 128개의 CUDA 코어를 갖추고 500 GFLOPS 이상의 성능을 발휘할 수 있었습니다.

  • 2008년: Apple, AMD, Intel, 그리고 NVIDIA는 이기종 시스템에서의 병렬 프로그래밍을 위한 오픈 표준인 OpenCL을 개발하기 위해 OpenCL 워킹 그룹을 구성했습니다. OpenCL은 CUDA의 벤더 독립적인 대안을 제공했지만, CUDA는 여전히 가장 널리 사용되는 GPGPU 플랫폼이었습니다.

  • 2010년: NVIDIA는 Fermi 아키텍처를 출시했습니다. Fermi는 최대 512개의 CUDA 코어, 통합된 L1/L2 캐시 계층, ECC 메모리 지원, 그리고 향상된 배정밀도 성능을 제공했습니다. 이를 통해 GPU가 HPC 및 과학 컴퓨팅 애플리케이션에 더 널리 사용될 수 있게 되었습니다.

  • 2016년: NVIDIA는 Pascal 아키텍처와 Tesla P100을 출시했습니다. P100은 고대역폭 HBM2 메모리, 최대 3584개의 CUDA 코어, 그리고 딥러닝을 위한 전용 FP16 코어를 제공했습니다. P100은 10 TFLOPS 이상의 성능을 발휘하며, GPU를 AI 학습을 위한 플랫폼의 선택으로 자리 잡게 했습니다.

  • 2018년: NVIDIA는 Turing 아키텍처를 출시했습니다. Turing은 실시간 레이 트레이싱을 위한 RT 코어와 AI 추론을 가속화하는 Tensor 코어를 도입했습니다. Turing은 GPU 아키텍처의 중요한 이정표로, 단순한 래스터라이제이션과 GPGPU를 넘어 고급 렌더링 기술과 AI 가속을 포함하는 GPU의 기능을 확장했습니다.

결론

지난 20년 동안 GPU는 고정 기능 그래픽스 가속기에서 고도로 프로그래밍 가능한 장치로 발전해왔습니다.여기는 한국어 번역본입니다. 코드 부분은 번역하지 않고 주석만 번역했습니다.

GPU는 게임과 시각화에서부터 고성능 컴퓨팅과 인공 지능에 이르는 다양한 응용 분야에서 중요한 역할을 하는 에너지 효율적인 컴퓨팅 엔진입니다. 이러한 변화를 가능하게 한 주요 아키텍처 혁신은 다음과 같습니다:

  • 분기와 반복을 지원하는 프로그래밍 가능한 셰이딩 도입
  • 다양한 셰이딩 작업에 동일한 처리 장치를 사용할 수 있는 통합 셰이더 아키텍처
  • CUDA와 OpenCL과 같은 범용 프로그래밍 모델 지원 추가
  • 메모리 대기 시간을 숨기고 산술 장치의 활용도를 높이기 위한 멀티스레딩의 광범위한 사용을 통한 에너지 효율성 향상
  • 메모리 대역폭 지속적인 향상과 GDDR6, HBM2와 같은 고대역폭 메모리 기술 도입
  • 렌더링과 AI 워크로드를 가속화하기 위한 레이 트레이싱 및 텐서 처리용 고정 기능 장치 도입

미래를 내다보면, 전문화와 이기종 컴퓨팅이 성능과 효율성 향상을 위한 핵심 동력이 될 것이 분명합니다. GPU는 에너지 효율적인 병렬 처리와 도메인 특화 기능을 유지하면서도 범용 프로그래밍 기능을 갖추고 있어, 이러한 추세를 선도할 수 있는 위치에 있습니다. 칩렛 기반 설계와 첨단 패키징 기술을 통해 GPU는 더 높은 수준의 성능과 기능을 갖출 수 있을 것입니다.

동시에 GPU 가속은 과학 컴퓨팅, 데이터 분석, 기계 학습 등 점점 더 많은 워크로드에 적용되고 있습니다. GPU는 이러한 새로운 응용 분야를 가속화할 수 있어, 미래 컴퓨팅 발전에 점점 더 중요한 역할을 할 것으로 보입니다. GPU 아키텍처에 대한 이해는 이들의 잠재력을 최대한 발휘하는 데 핵심적입니다.