||1

그래픽카드의 새로운 세대를 시작하는 지포스 8800의 출시를 맞이하여, 지포스 8800의 구조적인 부분과 기술적인 부분을 소개하려고 합니다.
벤치마크 그래프만 보면 성능이야 알 수 있겠지만 그 의미를 이해할 수는 없을 것이며, 기글 하드웨어는 무책임하게 사진과 그래프만 열거하는 것으로 소개를 끝냈다고 여기는 그런 무책임한 사이트가 되고 싶지 않습니다.

이하 내용과 그림은 중국의 太平洋電腦網 PConline의 것이며 제가 직접 번역하고 보충 및 편집하였습니다. 스크롤의 압박이 과도하니 알아서 조심하시길 바랍니다.


1.지포스 8800에서 쓰인 통합 쉐이더 아키텍처

다이렉트 X 10의 최대 혁신점은 바로 통합 쉐이더(Unified Shader Architecture)입니다. 지금까지의 GPU 아키텍처는 여러 쉐이더가 분리되어 있는 방식으로서 NVIDiA의 G71이나 ATI의 R580이 모두 그런 방식, 즉 버텍스 쉐이더와 픽셀 쉐이더가 각자 독립되어 있을 뿐만 아니라 버텍스와 픽셀 쉐이더 유닛의 비율 역시 고정되어 있었습니다.

이러한 분리 방식의 쉐이더는 설계가 간편할 뿐만 아니라 지금까지의 제조 경험 또한 풍부-NVIDIA는 NV40부터 G71까지, ATI는 R420부터 R580까지 이 방식을 사용-하였고, 성능 또한 쉽게 올릴 수 있었습니다.

마이크로소프트는 이러한 분리 방식 쉐이더의 응용도가 많이 떨어진다고 여기고 있었습니다. 사실 서로 다른 GPU는 그 픽셀 쉐이더 유닛과 버텍스 쉐이더 유닛의 비례도 다르기에 게임 개발자가 그 능력을 발휘할 여지를 상당히 제약하고 있습니다.

여러 종류의 어플리케이션과 게임은 제각기 픽셀 쉐이더와 버텍스 쉐이더에 대한 필요량이 다를 수밖에 없으며, 이는 GPU의 연산 자원을 충분히 사용하지 못하는 원인이 됩니다.

마이크로소프트는 다이렉트 X 10에서 통합 쉐이더를 도입하면서 독립된 통용 쉐이더 유닛이 여러 종류의 쉐이더 프로그램, 즉 버텍스, 픽셀, 그리고 다이렉트 X 10에서 처음으로 추가되는 지오메트리 쉐이더를 모두 처리할 수 있도록 하였습니다.

이러한 독립된 통용 쉐이더는 그 기능이 계속 개선되어 앞으로는 더 많은 쉐이더 프로그램-예를 들면 물리 가속 효과까지도 처리할 수 있을 것으로 보입니다.

버텍스 쉐이더에 비해 픽셀 쉐이더는 대규모의 텍스처를 사용하면서 그 재질을 처리하기 위해 레이턴시가 생기게 되는데 이는 통합 쉐이더에서 하루 빨리 해결해야 할 문제입니다. 하지만 지포스 8800에서는 이 문제가 많이 개선되어 분리되어 있는 스트림 프로세서들이 모두 일정 수량의 텍스처 유닛과 L1/L2 고속 캐시를 가지고 있습니다.


(더 많은 텍스처를 사용할 수 있게 되면 물체 표면을 더 실감나게 처리할 수 있습니다.)

쉐이더 모델 4.0은 버텍스와 픽셀 명령어의 집합입니다. 쉐이더 모델 3.0의 128배에 달하는 64K의 명령어를 지원하여 더 실감나는 화면을 구현해 낼 수 있으며, 레지스터의 수가 대폭 늘어난 것은 이전의 다이렉트 X 보다 확실한 개선이 이루어졌음을 의미합니다.

쉐이더 모델 4.0은 다이렉트 X 9에서 4/16만 지원하던 텍스처를 128개까지 지원하여 게임 안에서 더 많은 텍스처를 사용할 수 있게 되어 개발자들에게 광범한 선택을 할 수 있게 해주었습니다.


2. 전통적인 파이프라인 모델과 통합 쉐이더 모델

지포스 8800 GPU의 개발은 2002년 여름부터 시작되었습니다. 지포싀 8800의 목표는 크게 4가지가 있었는데 지금의 GPU를 초월할 것, 그래픽의 질을 높일것, 강력한 물리 계산과 부동 소수점 처리 능력을 제공할것, 다이렉트 X의 발전에 따라 제시된 새로운 개념의 GPU 파이프라인을 적용할 것 입니다.

제품

코어

제조공정

트랜지스터 수

DirectX 버전

GeForce256

NV10

0.22 Micron

23 Million

7.0

GeForce2 GTS

NV15

0.18 Micron

25 Million

7.0

GeForce3

NV20

0.15 Micron

57 Million

8.0

GeForce4 Ti4600

NV25

0.15 Micron

63 Million

8.0

GeForce FX 5900

NV35

0.13 Micron

135 Million

9.0

GeForce 6800 Ultra

NV40

0.13 Micron

222 Million

9.0C

GeForce 7800GTX

G70

0.11 Micron

302 Million

9.0C

GeForce 7900GTX

G71

0.09 Micron

278 Million

9.0C

GeForce 8800GTX

G80

0.09 Micron

671 Million

10

전통적인 파이프라인 모델에서는 여러 종류의 버텍스들, -인덱스, 커맨드, 텍스처를 포함하여 선형 캐시의 셋업 엔진이 버텍스 쉐이딩, 픽셀 쉐이딩, ROP를 거쳐 마지막에는 프레임 버퍼에 기록되게 됩니다. 사실상 지포스 7 시리즈의 GPU들은 200여개의 단계를 거치게 됩니다.

쉽게 볼 수 있듯이, 통합 파이프라인 방식으로 설계된 지포스 8800은 파이프라인 스테이지의 수를 줄이는 동시에, 전통적인 파이프라인에서 선형 프로그램을 통하 위아래로 전달되었던 것을 순환되는 방식으로 고쳤습니다. 인풋을 통해 통합 쉐이더 코어에서 아웃풋으로 나가 프레임 버퍼에 기록되는 동시에, 다시 쉐이더 코어로 돌아와 다음 작업을 하는 것입니다. 


(G70의 구조)

여러 종류의 어플리케이션과 게임에서 버텍스 쉐이더와 픽셀 쉐이더의 필요 비례는 다르지만 지포스 8800 GPU 이전의 GPU들은 버텍스 쉐이더와 픽셀 쉐이더의 비례가 고정되어 있었습니다. 아래에서 통합 쉐이더 아키텍처의 위력과 하드웨어의 사용율에 대해 예를 들어 살펴보도록 하겠습니다.


3. 왜 통합쉐이더인가?



HDR을 사용한 대표적인 게임인 엘더스크롤4: 오블리비언을 7900GTX에서 2048x1536 해상도에 HDR을 키고 한다면 그 버벅거림은 참을 수 없을 수준일 것입니다. 기존의 쉐이더 아키텍처에서 풀이나 나뭇잎 등을 그리기 위해서는 방대한 양의 버텍스를 그려야 하기 때문에 GPU의 버텍스 쉐이더의 지오메트리 쉐이더를 혹사시키게 되지만 픽셀 쉐이더의 작업은 그리 많지가 않습니다. 반면 대규모의 픽셀 쉐이딩 작업을 할 때에는 버텍스 쉐이더의 부하는 거의 없습니다.

통합 쉐이더 아키텍처는 하드웨어 자원을 활용할때 생기게 되는 이러한 제한을 없애주며 쉐이더 유닛의 활용도를 최고로 높일 수 있는 것입니다.


4. G80 아키텍처의 핵심- 스트리밍 프로세서

지포스 8800 GPU의 통합 쉐이더 아키텍쳐는 스트리밍 프로세서를 제일 기본 단위로 삼고 있습니다. 지포스 8800 GTX는 128개의 스트리밍 프로세서가 1350MHz의 클럭으로 작동되며, 모든 스트리밍 프로세서는 버텍스, 픽셀, 지오메트리등을 처리할 수 있는 통용 부동소수점 프로세서 입니다. 이러한 부동소수점 프로세서들은 상황에 따라 계획대로 편성되어 다른 작업량을 할당받게 됩니다.



지오메트리 쉐이딩은 다이렉트 X 10의 새로운 특성으로서, 스트리밍 프로세서는 기하학적인 연산을 처리하여 CPU의 부하량을 대폭 줄이게 됩니다. GPU의 컨트롤러 로직은 역동적으로 스트리밍 프로세서에 버텍스, 픽셀, 지오메트리 등의 조작을 하게 되며, 이로서 쉐이더 작업의 균형을 맞추기가 쉬워집니다.


5. 지오메트리 쉐이더

인풋 어샘블러는 버텍스 쉐이더 캐시의 데이터를 집접 입력받아 그 데이터를 일정 형식으로 규격화 합니다. 버텍스 쉐이더는 버텍스 입체 공간을 평면 공간으로 바꾸며 하나의 다각형 꼭지점을 입력받아 그것을 출력합니다. 픽셀 쉐이더는 한개의 점의 속성을 띠며 색깔과 Z버퍼의 편단을 출력하게 됩니다.

지오메트리 쉐이더는 다이렉트 X 10에서 처음으로 등장한 것으로서 동일 구역의 모든 버텍스 쉐이더에서 입력을 받아 새로운 버텍스나 구역을 만들어 냅니다.

이밖에도 스트림 아웃풋이 지오메트리 쉐이더에서 출력된 버텍스 데이터를 복제하여 4개의 연속된 데이터 캐시 모음집으로 만들 수도 있습니다. 이론적으로 스트림 아웃풋의 출력 능력은 인풋 에셈블러의 입력 능력에 필적하는 수준입니다.

쉐이더는 하나의 점이나 꼭지점, 기하학적인 특징을 바꿀 수 있는 프로그램입니다. 버텍스 쉐이더는 이름에서 알 수 있듯이 전문적으로 다각형의 꼭지점을 처리합니다. 따라서 지오메트리 쉐이더는 기하학적인 도형들을 전문척으로 처리하는 것임을 알 수 있습니다.

예전의 버텍스 쉐이더는 한번에 오직 한개의 버텍스 데이터만을 처리하고 한번에 하나의 버텍스를 출력할 수 있었습니다. 하나의 게임 장면에서 기하학적인 도형의 사용량이 점점 늘어날 경우 버텍스 쉐이더가 이를 모두 완성하려고 한다면 그 효율은 매우 낮아집니다.



지금 다이렉트 X 10의 개발자들은 버텍스와 픽셀의 처리 과정 외에 별도로 지오메트리 쉐이더를 추가하였습니다. 이는 버텍스 데이터를 근거로 하여 기하학적인 도형을 그려내어, 꼭지점 근처의 데이터를 통해 빠르게 새로운 다각형을 만들어 낼 수 있습니다.

스트림 아웃을 통해 이 결과가 다른 쉐이더나 버퍼에 전달되면 CPU가 복잡하고 방대한 양의 기하학적인 연산을 할 필요가 없게 됩니다. 큰 폭발이나 작은 입자들의 효과, 폭포 등의 복잡한 부분은 모두 지오메트리 쉐이더가 사실적으로 묘사하게 됩니다.

6. 스트림 프로세싱 아키텍처의 작동

지포스 8800 GPU는 일정한 수의 스트리밍 프로세서가 쉐이더 작업을 완성하게 되며, 스트리밍 프로세서는 각각의 조합을 이루어 여러 작업을 병행할 수 있습니다. 지포스 8800에서는 16개의 스트리밍 프로세서가 한개 조를 이루게 됩니다.

다른 속성의 기초적인 데이터를 하나로 모아 명령어 해석과 실행 논리를 전문적으로 고속 처리하는 스트리밍 프로세서와 몇몇 비슷한 조작 실행 중에 내장된 캐시는 스트리밍 프로세서의 빠른 출력과 입력을 담당하게 됩니다. SIMD 조작은 스트리밍 프로세서의 집합에서 실행될 경우 그 효율이 매우 높습니다.



여기에서 스트리밍 프로세서와 텍스처 필터링, 텍스처 어드레싱이 서로 연결되어 있음을 볼 수 있습니다. 내장된 L1/L2 캐시가 균형을 유지하도록 설계되어 있는데 이것이 바로 전형적인 지포스 8800 GPU 통합 쉐이더 설계입니다.

128개의 스트리밍 프로세서는 8800 GTX의 쉐이더 아키텍처를 병행하여 구성되어 있으며 모든 스트리밍 프로세서는 통용 프로세서로 MAD와 MUL을 동시에 진행할 수 있으며 IEEE 754 부동 소수점 연산 정확도를 지원합니다.

7. 텍스처와 매스- 서로 관련이 없는 작업의 멀티 스레딩

텍스처 주소를 찾아내고 필터를 거쳐 페칭을 하는 것은 모두 GPU의 여러 클럭을 소모하게 됩니다. 만약 아키텍처에 하나의 수학적인 텍스쳐 조작, 예를 들어 이등방성 필터링 같은것이 추가된돠면 시스템의 레이턴시는 대폭 증가하게 되는 것입니다.

지포스 8800 GPU는 이 부분에서 큰 개선이 있어, 상당 부분의 독립 산술 연산을 할 경우 텍스처 페치의 레이턴시를 숨길 수가 있습니다.

지포스 7 시리즈의 GPU에서 텍스처의 주소를 찾는 계산은 인접한 행을 스캔하는 것이었습니다. 이러한 설게 방식은 텍스처 페치를 할 경우 병목 현상을 일으키게 됩니다. 지포스 8800 GPU는 텍스처 작업과 쉐이더 산술 연산을 완전히 독립하여 진행할 수 있습니다.

지포스 8800 아키텍처의 개발 초기에 NVIDIA의 엔지니어들은 수많은 쉐이더 계산 프로그램을 분석하였고, 이를 통해 여려 벡터와 스칼라 명령어들이 혼합된 경우, 특히 비교적 긴 쉐이더는 벡터를 구조적으로 처리하기가 어려우며, 스칼라 연산은 벡터의 파이프라인 중에서 포함하기가 매우 어렵다는 것을 발견하였습니다.

NVIDIA와 ATI는 모두 두가지 명령을 처리할 수 있습니다. R580에서 ATI는 3+1 방식으로 하나의 2x2 벡터 명령어와 1x3 벡터 명령, 1x1 스칼라 명령의 혼합체를 처리할 수 있었으며, 지포스 6/7에서는 2+2와 3+1의 두가지 명령어 조작이 가능했습니다.

그러나 이 지포스 8800 GPU의 스칼라 설계는 매우 높아서, 엔지니어들은 128개의 스칼라 프로세서의 스칼라 아키텍처는 두배 성능의 32개 복합 벡터 프로세서 아키텍처에 달하는 것으로 추측하고 있습니다.


8. Early-Z 기술

지금의 GPU들은 모두 Z버퍼를 통해 픽셀이 어디에 있는지를 기록하고 찾아냅니다. 하나의 3D 장면의 최종적으로 2D 그래픽으로 변환된 후에야 스크린에 표시될 수 있으며, GPU에서 연속적으로 버텍스를 이러한 프레임으로 만들어 내어, 이 버텍스에 사응하는 2D 화면에서 다각형으로 표시되는 것입니다.

이러한 다각형을 연속적으로 만들어 내어 원래의 영역을 덮어쓰는 것은 Z버퍼의 데이터가 ROP에게 어떤 픽셀을 볼 수 있고 어떤 것을 볼수 없는지를 알려주기 때문입니다. 만약 Early-Z를 미리 진행한다면 대량의 자원을 절약할 수 있으며 같은 구역 내에 여러 다각형들의 덮어 쓰는 횟수를 줄이고 이로 인해 원래의 4배 이상에 달하는 효과를 얻을 수 있습니다.



지금 극소수의 방법만이 Z버퍼 데이터를 통해 픽셀의 랜더링을 선택하거나 방해 요소를 없애고 있으며, Z-Cull이 바로 이러한 방법 중 하나입니다. Z 컴패리션은 대게 ROP의 다음에 발생합니다. 문제는 픽셀이 ROP 파이프라인을 완벽히 통과한 후에야 비로소 발견할 수 있다는 것입니다.

Early-Z는 볼 수 없는 픽셀을 파이프라인 앞에 집어 넣어 성능을 높일 수 있는데 NVIDIA 측에서는 이러한 방법을 통해 22% 정도의 성능 향상이 있을 것이라고 여기고 있습니다.


9. G80의 필레이트 계산

데이터는 여러 스트리밍 프로레서 사이의 아웃풋과 인풋 사이를 매우 쉽게 이동합니다. 예를 들어 버텍스 데이터를 처리가 끝나면 아웃풋은 인풋을 제오메트리 스레드로 보냅니다.

8800 GTX에서 작동하는 모든 스트리밍 프로세서들은 1.35GHz의 클럭으로 자동하며 동시에 하나의 MAD와 MUL 스칼라 연산을 실행하기 때문에 8800 GTX는 520 기가플롭스의 쉐이더 처리 능력을 가지고 있습니다만, 이것이 8800 GTX의 모든 능력은 아닙니다. 명령어를 보낼때는 100% 벡터 처리이기 때문에 백터와 스칼라가 혼합된 쉐이더 프로그램 코더는 특정 조합 명령어보다 더 효율적입니다. (3+1이나 2+2)



텍스처 필터링 유닛과 스트리밍 프로세서는 서로 관련이 없는 64개 픽셀을 1 클럭 사이클에 전송하며, 이는 1 클럭 사이클에 32 픽셀의 주소를 찾거나 32 픽셀의 2x 바이리니어 필터링, 혹은 32픽셀의 듀얼 비등방성 필터링과 같습니다.

기본적으로 PF16 쌍방향 질감 필터는 1 클럭 사이클에 32픽셀을 조작할 수 있으며, 만약 FP 2:1의 바이리니어 필터링이라면 1 클럭 사이클에 16 픽셀을 완성할 수 있다는 의미입니다. 텍스처 유닛의 싱행 클럭은 575MHz이며 이는 또한 8800 GTX의 코어 클럭이기도 합니다. 



575MHz의 클럭으로 작동한다면, 비등방성 필터링이나 2:1의 바이리니어 필터링의 필레이트는 575Mhz X 32 = 184억 텍셀/s의 수준이며, 2:1의 바이리니어 필터링이 비등방성 필터링에서 하나의 픽셀을 출력하는 것과 같기 때문에 8800GTX의 필레이트는 368억 텍셀/s가 되는 것입니다.


10. G80의 ROP(Raster Operation Partitions)

8800 GTX는 6 세트의 ROP가 있으며 하나의 세트는 4개의 픽셀을 처리할 수 있기 대문에 1 클럭에 24개의 색깔과 Z 버퍼 데이터를 포함한 픽셀을 처리할 수 있습니다. 만약 Z버퍼만 처리한다면 1 사이클에 192개의 픽셀들을 처리할 수 있므녀, 4x 멀티샘플 안티에어라이싱을 켠다면 48개의 Z 버퍼를 처리할 수 있습니다.


 

G80의 ROP는 슈퍼 샘플링, 멀티 샘플링, 어댑티브의 세가지 안티에얼라이싱 방식을 지원할 수 있는데, 이는 G80은 최초로 싱글 GPU에서 8x, 8xQ, 16x, 16xQ의 안티에어라이싱 방식을 지원하기 때문입니다. NVIDIA는 코버레이지 샘플링과 지오메트리 샘플링을 포함하는 CSAA(Coverage Sampling antialising)이라는 새로운 방식의 옵션을 추가하였습니다.

CSAA는 안티에어라이싱 필터의 품질을 높였을 뿐만 아니라 16x AA를 사용했을 경우 시스템에 주는 부하의 수준이 4x AA 수준으로 매우 낮은 편입니다.


(Lumenex Engine의 화질)

G80의 ROPs는 FP16과 FP32의 혼합을 지원하며, FP16이건 32건 모두 멀티샘플 안티에어라이싱을 진행하기에 충분한데, 그 이유는 G80부터 NVIDIA의 GPU도 HDR+AA를 지원하기 때문입니다. 다이렉트 X 10을 지원하는 8개의 MRTs(Multiple Render Targets)를 G80에서 사용하여 색채와 Z 조작이 가능합니다.

다이렉트 X 10에서는 두가지 새로운 방식의 HDR을 지원하는데 첫번째는 R11G11B10으로 특별히 저장된 텍스처의 부동소수점 포멧 최적화를 하는 것이며, 다른 하나는 모든 컬러 채널에 9bit를 사용하여 렌더러 타겟을 전문적으로 하는 설계 방식입니다.

모든 ROP 세트들은 64비트 메모리 인터페이스로서 DDR1, DDR2, DDR3, GDDR3, GDDR4 메모리를 완벽히 지원합니다. 8800 GTX는 모두 384비트의 메모리 버스에 784MB의 메모리를 사용함으로서 900MHz의 GDDR3 메모리와 결합하여 86.4GB/s라는 놀라운 대역폭을 제공합니다.


11. 비스타, VHD, 퓨어비디오 HD

지포스 8800 GPU는 윈도우즈 비스타에 철저히 맞춰 최적화된 제 3세대 GPU 아키텍처를 사용하며, WDDM 드라이버와 비스타 데스크탑 윈도우즈 매니저(DWM), 에어로 3D 인터페이스를 지원합니다.

NVIDIA의 퓨어비디오 HD는 지포스 8800 GPU에 내장되어 있으며 HD-DVD와 블루레이 디스크의 재생을 지원합니다. 최고의 화질과 낮은 CPU 점유율을 유지하는 기술입니다.

퓨어비디오 HD는 비디오 프로세서를 포함하여 드라이버와 재생 프로그램으로 구성되어 있으며, H.264, VC-1, WMV, WMV-HD, MPEG2 HD 포멧을 지원합니다. 권위 있는 HQV 벤치마크 프로그램에서 128점이라는 좋은 점수가 나왔다고 합니다.

AACD 저작권 보호가 걸린 HD DVD를 재생할 수 있으며, 사이버링크, 인터비디오, 네로 등의 플레이어에서 퓨어비디오의 기능을 사용할 수 있습니다.

지포스 8800 GPU에는 HDCP 지원이 내장되어 있으며 다중 TV 출력-컴포짓, S비디오, 컴포넌트, DVD-을 지원하고, 최고 1080p해상도를 출력할 수 있습니다.


(XHD를 지원하는 120여종의 게임들)

또 지포스 8800 GPU는 XHD 해상도 게임에 최적화되었기 때문에, 기존에는 7950GX2 두개를 이용하여 XHD 해상도로 게임을 할 수 있었지만 이제는 8800 하나만으로도 게임을 할 수 있습니다. XHD는 1080i TV 출력과 1080p 영상 출력의 7배 달하는 해상도를 지원하며 듀얼 링크 DVI로 2560x1600의 XHD 해상도를 출력할 수 있습니다.

이상입니다. 제품 사진이나 쿨러 부분, 벤치마크 성능 등은 그동안 기글 하드웨어에 너무 많이 올라왔기 때문에 굳이 중복되는 내용을 소개할 필요는 없겠지요. 그리고 글이 너무 길어졌군요 -_-a


기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.