2. GT200보다 두 배로 늘어난 지포스 GTX 400
지포스 GTX 400 시리즈에 사용된 Fermi GF100 (이하,
GF100)은 GT200처럼 범용컴퓨팅과 그래픽컴퓨팅용으로의 2가지 분야에
적합한 아키텍처가 적용되지만, GT200보다 레이트레이싱과 지오메트릭을
포함하고 DirectX 11의 특징인 테셀레이션 등을 경쟁사 제품보다 강화하여
GPU 컴퓨팅과 그래픽처리에도 큰 개선이 이루어졌다.
DX11 지원 지포스 GTX 400, 두 배로 증가된 내부
구조

[2배로 늘어난 스트림 프로세서 등을 구성]
GF100은 GT200의 14억 개 트랜지스터보다 16억 개가
증가되어 2배 이상 증가된 30억 개의 트랜지스터를 내장하는데 여기에는
2배로 늘어난 스트림 프로세서, 1.5배 늘어난 ROP, GDDR5 메모리 적용으로
2배 늘어난 데이터 전송률을 제공한다.
이러한 구성을 바탕으로 GPGPU를 위한 범용컴퓨팅과
그래픽처리를 위한 아키텍처의 두 가지를 모두 갖추고 GT200 시리즈보다
더욱 강화된 범용컴퓨팅 처리 성능을 갖췄다. 특히, GF100은 레이트레이싱과
지오메트리 연산을 위한 기능을 파이프라인에 내장하여 이전보다 사실적인
그래픽 효과를 표현할 수 있게 되었다.
쿼드코어화된 GF100

[모듈화된 GPC 1개가 코어 하나, 최대 4개의 GPC로
쿼드코어화]
GF100의 범용컴퓨팅에 강화된 아키텍처를 갖는 부분
외에도 쿼드코어화된 구조도 갖추고 있다. 라데온 HD 5800 시리즈는
듀얼코어화로 GPU의 발전된 모습을 보여주고 있지만, GF100은 모듈화된
GPC로 쿼드코어화를 구성해 그래픽처리와 범용컴퓨팅 처리 능력을 더욱
개선하고 있다.
GF100은 4개의 GPC (Graphics Processing Cluster)를
최대로 구성할 수 있다. GT200은 TPC (Texture/ Thread Processing Clusters)라는
개념이 사용되어 그래픽 프로세싱과 범용컴퓨팅에 사용되었는데 GF100은
GPC를 통해 더욱 이를 발전시키고 있다. GPC 모듈화 구성을 통해 범용컴퓨팅에서는
16코어, 그래픽처리에는 4코어로 활용할 수 있게 된다.
GF100은 GPC 구조와 기가스레드 (GigaThread) 엔진을
개선하여 GT200이 한 번에 하나의 커널 프로그램을 실행했다면, GF100은
다수의 커널 프로그램을 동시에 실행할 수 있는 발전된 멀티 스레드
개념을 적용하고 있다.
쿠다코어는 GT200 대비 4배 증가, 정수와 실수연산
개선


[GT200 대비 4배로 증가된 SM (Streaming Multiprocessor)]
3세대 SM (Streaming Multiprocessor)를 내장하고
있는 GF100은 GT200 (8개)의 4배인 32 쿠다코어 (CUDA Cores, Streaming
Processor 또는 Thread Processor가 CUDA Cores로 네이밍 변경)를 제공해
총 512 쿠다코어를 구성할 수 있다.
또한, 증가된 쿠다코어 등을 바탕으로 범용컴퓨팅
분야 (HTC 어플리케이션, Linear Algebra, Mumerical Simulation, Quantum
Chemistry 등)에 활발하게 사용되고 있는 더플 프리시전 (Double Precision
Floating Point) 연산 성능도 GT200의 8배에 이르는 향상을 가져왔다.
이 외에도 명령어 처리를 위한 듀얼 Warp 스케쥴러와 2개의 디스패치가
포함되며, 클럭 당 32 스레드 처리가 가능하다. L1 캐쉬와 공유 메모리
파티셔닝이 가능한 64KB (16KB + 48KB)RAM도 제공된다. Atomic 메모리 오퍼레이션 성능도
GT200보다 크게 향상되어 범용컴퓨팅에 더욱 유리해졌다.


GF100의 CUDA 코어는 16개 그룹이 2개, SFU 4개,
로드/ 스토어 유닛 16개 그룹으로 구성되며, 32 스레드로 구성되는 1
Warp는 하나의 명령을 2 사이클에 실행할 수 있는 구조를 가진다. Warp는
32 스레드 단위로 처리되며, Warp 내의 스레드는 같은 명령을 실행하는
구조를 가진다. (SM 스케쥴 스레드는 Warp로 불리는 32개 병렬 스레드
그룹으로 구성되며, 각 SM은 2개의 Warp 스케쥴러와 2개의 명령 디스패치
유닛을 내장한다.) GPC 4개의 그룹은 Warp 스케쥴러가 병렬로 다른 명령을
실행할 수 있는 구조로 자유도를 높였다.
쿠다코어는 산술 논리 연산장치인 ALU (정수, Arithmetic
Logic Unit)와 부동소수점 연산장치인 FPU (실수, Floating Point Unit)를
내장하고 있으며, IEEE 745-1985 표준을 따르던 GT200은 24bit 정수
연산을 지원하였던 것과 달리 IEEE754-2008 표준에 따른 32bit 정수
처리와 64bit 연산도 확장하여 지원된다.
또, FMA (Fused Multiply-Add)는 덧셈과 곱셈 연산을
동시 수행하는데 이를 지원해 이들 계산의 효율을 향상시키고 있다.
16개의 로드/ 스토어 유닛은 클럭 당 16개의 스레드를 처리할 수 있고
캐쉬 및 메모리 간의 데이터 교환을 통해 효율을 크게 높였다.
SFU (Special Function Unit)은 4개가 포함되며,
클럭 및 스레드 당 하나의 연산을 처리한다. SFU는 사인, 코사인, 역수,
제곱근 등을 연산하는 특수 유닛으로 그래픽 인터폴레이션 기능도 지원한다.
텍스처 유닛은 SM (Streaming Multiprocessor) 당
4개를 독립적으로 지원하며, 각 텍스처 유닛은 클럭 당 텍스처 주소
계산 및 4개의 텍스처 샘플을 불러올 수 있다. GF100은 최대 64개의
텍스처 유닛을 가지며, 지포스 GTX 470은 56/ GTX 480은 60개로 GT200의
최대 80개보다 줄어 텍스처 비중이 높은 게임 등에서는 불리할 것으로
예상된다.
GF100은 2세대 병렬 스레드 실행 ISA를 바탕으로
C++ 지원을 위한 공유 주소 공간 제공을 비롯하여 범용컴퓨팅을 위한
OpenCL과 DirectCompute에도 이전보다 최적화된 모습을 가진다. 입출력
예측성능도 개선되었다.
Fermi GF100은 병렬 커널 실행 지원

[기가스레드 (GigaThread) 엔진의 병렬 커널 실행]
DirectX 11의 주요한 특징 중 하나는 멀티스레드
처리 효율의 증대인데 GPC 모듈화로 쿼드코어화된 구조를 바탕으로 명령어의
병렬 처리 성능을 향상시켰다. 또, GF100은 기가스레드 (GigaThread)
엔진을 통해 시리얼 방식이던 기존 아키텍처에서 벗어나 병렬 커널을
실행할 수 있게 된다.
PhysX 프로그램 실행시 순차 실행하면 스레드 프로세서는
단지 절반만 이용되나 GF100은 다른 커널을 같은 CUDA로 동시 실행 가능하다.
GPU 리소스의 최적화 지원을 통해 커널들은 서로 다른 어플리케이션
구조에 따라 순서대로 실행되며, 구조 간의 스위칭 성능 효율을
크게 개선했다. GF100은 어플리케이션 구조 스위칭을 10배 증가시키고
있다.
그래픽연산과 범용컴퓨팅을 고려한 캐쉬구조

지포스 GTX 480과 GTX 470의 ROP와 캐쉬, 메모리
인터페이스 구성은 블록다이어그램을 참고하여 나뉘어진 구성을 보면
위 표와 같다. 현재까지 가장 상위의 지포스 GTX 480은 8개의 ROP 그룹과
6개의 메모리 인터페이스 그룹으로 48 ROP와 768KB의 공유 L2 캐쉬,
메모리 인터페이스는 384bit를 가지며, GTX 470은 8개 ROP 그룹과 5개의
메모리 인터페이스 그룹으로 40 ROP와 공유 L2 캐쉬 640KB, 320bit 메모리
인터페이스가 적용된다. 이후 등장할 제품들은 8/4, 8/3, 8/2, 8/1 그룹으로
구성될 것으로 예상해볼 수 있다.


캐쉬 구조 역시 범용컴퓨팅과 그래픽연산을 위해
효율적인 구조로 교체되었으며, 메모리 접근시 발생하는 시간을 줄였다.
이는 새롭게 구성된 캐쉬 구조를 통해 버텍스 정보와 픽셀 쉐이더 처리
및 렌더 아웃풋시의 메모리 접근을 줄일 수 있기 때문이다.
GF100은 L1 캐쉬 64KB를 제공하는데 사용에 따라
16 + 48KB로 분할해 사용할 수 있으며, 공유 L2 캐쉬 768KB는 버텍스,
쉐이더, 텍스처와 ROP 데이터 공유에 주로 쓰인다. 캐쉬 효율과 공유
메모리, 공유 L2 캐쉬의 용량이 이전보다 3배 증가했다. 이를 바탕으로
전반적인 처리효율 및 성능을 개선할 수 있게 되었다.

GF100은 ECC를 지원하는 첫 GPU로 소개되고 있는
병렬컴퓨팅 분야를 제외한 그래픽컴퓨팅 분야에서는 필요성이 적기 때문에
지포스 GTX 400 시리즈에서는 이 기능이 사용되지 않는 것으로 알려지고
있다.
GDDR5 메모리 적용, 클럭 스위칭
AMD ATI의 경우 라데온 HD 4800 시리즈로 넘어오면서부터
GDDR5 메모리를 적용했지만, 엔비디아는 40nm 공정을 적용한 GT240에서 GDDR5를 처음 적용하고 GF100으로 넘어와 고클럭의 GDDR5
메모리를 적용했다.
GDDR3를 사용하던 GT200과 비교하여 메모리
인터페이스는 512bit에서 384/ 320bit로 줄어 G80 GPU와 비슷한 구성을
하고 있다. 하지만, 고클럭 GDDR5 메모리를 적용하는 만큼 전송률 향상을
바탕으로 대역폭을 증가시킬 수 있게 되었다. 또, 경쟁사처럼 GDDR5
메모리는 클럭 및 전압을 부하에 따라 스위칭하여 전력효율을 높여주고
있다.
32x CSAA 지원과 TMAA 품질 향상, AA 효율과 성능도 개선



[32x CSAA 지원 및 AA 효율과 성능 개선]
GF100은 최대 48 ROP를 지원하며, 지포스 GTX 470과
GTX 480은 각각 40/ 48 ROP를 지원하여 AA 효율 및 처리 성능을 개선하게
된다. ROP 유닛은 클럭 당 32bit 정수 픽셀 처리, FP16 픽셀은 2클럭,
FP32 픽셀은 4클럭 처리가 이루어진다.

GF100의 텍스처 유닛은 Directx 11의 텍스처 압축
포맷 지원으로 HDR 렌더링을 지원할 수 있게 해준다. 또, 32x CSAA (8xMSAA
(8 컬러 샘플) + 24 CSAA (Coverage Sampling Anti-Aliasing)를 지원하여
보다 자연스럽고 개선된 AA 품질을 얻으면서 성능 저하를 줄일 수 있게
만들어준다. AA 처리 성능도 GF100은 GT200대비 2배 높은 처리 성능을 제공하며, Shadow-map 처리도 3배 이상 향상된 것으로 소개되었다.
또한, TMAA (Transparency Multisample AA)를 적용해
DirectX 9에서 지원하지 못하는 Alpha to Coverage를 사용하도록 쉐이더
코드를 변환해 향상된 이미지 품질을 얻을 수 있게 해준다.
지포스 GTX 470과 GTX 480에 사용된 GF100은 DirectX
11 지원에 최적화된 모습을 보여주고 있으며, 확장성도 GT200 (GTX 200
시리즈에 사용되는 GPU)보다 크게 증가되고 있다. 지금까지 살펴본 GF100을
정리하면 아래와 같다.
- DirectX 11과 GPGPU에 보다 최적화된 아키텍처
- 테셀레이터 및 멀티스레딩 능력 강화 (동시실행 능력)
-
GT200 대비 최대 8배 향상된 지오메트리 성능
- PhysX 최대 2.5배,
AI 및 Ray-Tracing 3.5배 처리 향상
- 쿠다코어 최대 512 적용 (GTX 480 480/
GTX 470 448)
- 고클럭 GDDR5 메모리 사용 및 에러정정 기능 포함
- 텍스처 처리
유닛 최대 64개, 텍스처 처리향상 (GTX 480 60/ GTX 470 56)
- 32x CSAA 및 TMAA/ AA의 효율적인 처리 및 성능 향상
- Render
Back-Ends (ROP) 유닛 최대 48 (GTX 480 48/ GTX 470 40)
- 전력관리 개선
(클럭 및 전압 스위칭, GDDR5 클럭 및 전압 감소)
지포스 GTX 200 시리즈에 대한
내용은 게임을 넘어서는 GPU, NVIDIA GeForce GTX 200 시리즈
기사를 참조하자.
HD 5800 시리즈와 HD 4800 시리즈에 대한 내용은
지난 기사인 [이론편] 공정으로 압도하는
RV770. ATI Radeon HD 4800 시리즈와 [이론편] Over the GeForce!
라데온HD5800의 모든것 기사를 참조하자.