GeForce GTX 200 시리즈 GPU 구성
GeForce GTX 200 시리즈의 범용 목적의 사용 및
처리 성능 향상에 이어 GTX 200 시리즈 GPU의 구성은 기존보다 더 많아진 코어를 통해 범용 목적에도 적합하도록
설계되고 있다. 즉, GeForce GTX 200 시리즈부터는 병렬 컴퓨팅을 위한 아키텍처와 그래픽 프로세싱 아키텍처로써의
두 가지를 동시에 만족하게 된다.
[병렬 컴퓨팅 아키텍처와 그래픽 프로세싱 아키텍처의 2가지를 만족]
GeForce GTX 200 시리즈 GPU는 기존의 2배에 이르는 트랜지스터 증가 및 933
GigaFLOPSs의 프로세서 처리 능력, 그리고 기존 G92 GPU의 최대 128개 스트림 프로세서보다 더 많아진
240개의 프로세싱 코어를 가지고 있다. 더 많아진 프로세싱 코어를 통해 다양한 범용 목적에도 적합한 구성을 가지게 된다.
기존 GeForce 8/ 9 시리즈의 1.5배 높은 성능을 가진다고 언급되고 있다.
또한, 이전과는 다르게 스트림 프로세서에서 프로세싱 코어로 이름을 바꾸었으며, 이는 3D 목적을
벗어나 그 외의 활용이 가능한 병렬 프로세싱이 가능하기 때문이다. 이는 GPU가 CUDA를 이용한 범용 목적 및 물리연산 가속 등 CPU가 다루었던 분야를 다루는 것이 포함되므로 그래픽 작업에 주로 사용되던
과거의 스트림 프로세서와 달리 다양한 분야로의 확대를 의미하는 프로세싱 코어의 의미가 등장하게 된 것으로 볼 수 있다.
처리 능력은 앞서도 언급하였듯이 이미 쿼드 코어 CPU의 성능을 훨씬 넘어서고 있는 것도 앞서 소개했다.
병렬 컴퓨팅 아키텍처의 GeForce GTX 200 시리즈!
기존 1세대 SPA (Scalable Processor Array) 아키텍처 (G80, G92
GPU들이 지원)는 그래픽 프로세싱 모드를 위한 TPCs (Texture Processing Clusters)와 병렬
컴퓨팅 모드를 위한 TPCs (Tread Processing Clusters)의 두 가지를 제공하고 있다. 각 TPC는
SMs (Streaming Multiprocessors)로 구성되고 SM은 8개의 프로세서 코어 (SPs,
Streaming Processors 또는 Tread Processors)로 다시 구성된다. 또한, SM에는 그래픽
프로세싱을 위한 Texture Filtering 프로세서들로 구성된다.
[GeForce GTX 200 시리즈, GPU 병렬 컴퓨팅 아키텍처 구성]
[GeForce GTX 200 시리즈 GPU, 그래픽 프로세싱 아키텍처 구성]
GeForce GTX 200 시리즈 GPU는 1세대에 이어 일반적으로 3D 게임 등과 같은
분야를 위한 그래픽 프로세싱 아키텍처 구성과 동영상 인코딩 등과 같은 분야에의 범용 목적으로의 활용이 가능한 병렬 컴퓨팅
아키텍처의 구조를 동시에 가지게 된다고 앞서 언급했다.
병렬 컴퓨팅 아키텍처에서는 그래픽 프로세싱 아키텍처에서 DirectX 10의 통합쉐이더 아키텍처
구성을 위해 지오메트리와 버텍스, 픽셀 쉐이더, Setup/ Raster로 구성되고 있는 것과 달리 하드웨어 기반의 쓰레드
스케쥴러가 TPCs를 스케쥴링하게 된다.
이를 위해 텍스처 캐쉬와 메모리 인터페이스 유닛, Atomic가 함께 위치하게 되며, 메모리의
높은 대역폭의 효율을 이용한 읽기와 쓰기 작업을 더욱 효율적으로 가능하게 해주어 병렬 컴퓨팅에 최적화된 구조를 갖게 된다.
Atomic의 경우 병렬 컴퓨팅을 위해 개별 메모리 접근과 위치를 지시하고 메모리의 읽기와 쓰기 작업을 수정하도록 하며,
병렬 감소 촉진과 병렬 데이터 구조를 관리해준다.
병렬 컴퓨팅 아키텍처의 Thread Processing Cluster
[GeForce GTX 200 시리즈 GPU, Thread Processing
Cluster]
병렬 컴퓨팅 아키텍처 구성에서 TPC는 16K의 로컬 공유 메모리가 SM (Streaming
Multiporcessors) 내에 8개로 구성된 프로세싱 코어 마다 3개가 존재하고 있다. 8개의 프로세싱 코어들은 공유
메모리를 통해 외부 메모리 시스템에 접근하지 않고 데이터의 공유가 가능하므로 컴퓨팅 속도와 효율을 증대시킬 수 있다.
정수와 부동소수점 등의 연산을 위한 스칼라 (Scalar) 구조는 이전과 같다.
SIMT (Single Instruction, Multiple Thread)
도입
NVIDIA는 SIMT (Single Instruction, Multiple Thread)
아키텍처를 GeForce GTX 200시리즈 GPU들에 도입했다. NVIDIA는 통합 쉐이딩 아키텍처와 컴퓨팅 아키텍처의
서로 다른 두 가지 프로세싱 기능을 담당할 수 있도록 설계되었는데 기존 TPC는 이에 맞게 통합 쉐이딩 아키텍처에서는
Texture Processing Cluster의 역할로 병렬 컴퓨팅 아키텍처에서는 Thread Processing
Cluster의 역할을 담당해왔다.
NVIDIA의 TPC는 MIMD (Multiple Instruction, Multiple
data) 기반의 처리를 지금까지 해왔는데 SIMT (Single Instruction, Multiple Thread)를
통해 스트리밍 멀티프로세서들 (SMs)은 SIMD (Single Instruction, Multiple data)의 성능과
프로그래밍 가능성을 높일 수 있게 되었다.
반대로 SIMD 기반에서는 SIMD와 MIMD 보다 작은 입력 값이 들어오면 용량을 줄여 최적화
해주는데 SIMT를 통해 프로세싱 코어를 항상 최적화 해주기 때문에 처리 성능이나 효율이 더 높아진다. 프로그래머 입장에서
하드웨어로 제어되는 분기를 백터 폭 내에서 분기 수동 관리 설정이 필요치 않으므로 SIMT는 각 쓰레드를 원하는 방향으로
사용할 수 있게 된다.
Thread 처리 능력 대폭 향상
GeForce GTX 200 시리즈 GPU들은 기존 세대인 GeForce 8/ 9 시리즈들보다
더 높은 Thread 처리 능력을 갖추고 있다. 스트리밍 멀티 프로세서 (SMs)는 기존 세대가 768개의 쓰레드를
처리했다면 1024개 (32 x 32)로 처리 능력이 늘었으며, 거의 3배에 가까운 쓰레드 처리 능력을 갖추게 되었다.
칩 당 쓰레드 전체 처리 성능은 스트리밍 멀티 프로세서 당 쓰레드 (Threads per SM)
x 텍스처 또는 쓰레드 프로세싱 클러스터 당 스트리밍 멀티 프로세서 (SM per TPC) x 텍스처 또는 쓰레드 프로세싱
클러스터 (TPC)로 계산된다. (GeForce GTX 280은 1024 x 3 x 10 = 30,720)
스트리밍 멀티 프로세서들 (SMs) 내의 SIMT 멀티 쓰레드 명령 유닛은 쓰레드의 실행,
생성, 관리, 스케쥴링을 해준다. GeForce GTX200 시리즈 GPU들은 Warp로 불리는 32개의 병렬 쓰레드
그룹이 위치하고 있는데 이는 기존 GeForce 8/ 9 시리즈의 24보다 8개가 더 늘어난 수치다.
Double Precision 지원 (두 배의 정밀도 향상)
GeForce GTX 200 시리즈 GPU들은 FP64 (64bit Floating-Point)
컴퓨팅을 지원한다. 이를 통해 고성능 과학, 엔지니어링, 그리고 금융 컴퓨팅 어플리케이션 또는 매우 높은 고정밀도의 결과를
필요로 하는 컴퓨팅 작업들에서 유리해졌다.
두 배의 정밀도를 가진 스트리밍 멀티 프로세서들의 FP64 연산 유닛은 64bit 프로세싱
코어보다 전체의 30배의 정밀도를 제공한다. 두 배의 정밀도가 향상된 10개의 TPC를 가진 GeForce GTX200
시리즈 GPU들은 90 GigaFlops 이상을 연산하는 8코어 제온 CPU와 대략 동등한 성능을 가진다.
병렬 프로세싱 아키텍처로써의 GeForce GTX 200 시리즈 GPU들이 지원하고 있는
기능들은 그래픽 프로세싱 아키텍처에도 적용이 되는 기술들이다.