AMD가 14일에 발표한 Radeon HD 2900의 사양에 대해 NVIDIA의 관점에서의 해석을 담은 기사가 Impress Watch에 등록되었다. 이는 어디까지나 NVIDIA의 견해이긴 하지만 현재로써는 DirectX 10지원을 하는 유일한 제품들이기 때문에 참고삼아 보길 바란다.
Q: Radeon HD 2900은 320개의 스트리밍 프로세서가 장착되었지만 GeForce 8800 GTX는 128개밖에 없다. 이에 대한 의견은?
A: AMD의 경우 표준ALU와 특수기능ALU의 개수를 합산해서 320개라고 하고 있다. GeForce 8800 GTX의 경우 128개의 표준ALU와 128개의 특수기능ALU를 장착하고 있기 때문에 AMD의 계산을 따르면 GeForce 8800 GTX의 쉐도우 개수는 256이 된다. 물론 Radeon HD 2900의 쉐도우 수가 25% 많지만 AMD에 비해 GeForce 8800 GTX의 ALU 클럭은 82%, GeForce 8800 GTS의 ALU 클럭은 62% 빠른 속도를 갖추고 있다. 이를 종합해 보면 Radeon HD 2900의 경우 GeForce 8800 GTS와 동급이며 GeForce 8800 GTX는 더욱더 빠른 속도를 제공한다.
Q: 8800은 Scalar 아키텍처를, Radeon HD 2900은 VLIW 명령을 지원하는 Super Scalar 아키텍처를 채택하고 있는데 어느쪽이 우수한가?
A: NVIDIA는 몇 년전 이미 GeForce 6 시리즈에 Super Scalar 아키텍쳐를 적용하였다. 또한 이전 세대인 GeForce FX에서는 VLIW(Very Long Instruction Word)아키텍처를 채용했다. 둘 사이는 각각 장단점이 있고 이러한 경험을 바탕으로 GeForce 8은 Scalar 아키텍처를 설계했다.
Super Scalar 아키텍쳐의 장점은 각격의 쉐이더 프로세서에 대해 복수의 독립된 명령을 실행할 수 있다는 점을 들 수 있다. Radeon HD 2900의 경우라면 각각의 쉐이더 프로세에 대해 클럭마다 최대 5개의 독립된 산술 명령과 1개의 분기 명령을 실행할 수 있다. 만약 Radeon HD 2900이 항상 1번의 클럭당 5개의 산술명령을 실행할 수 있다면 그 성능은 대단히 높아질 것이다. 하지만 Super Scalar 아키텍처의 특성상 ALU의 수가 늘어날수록 각각에 대해 동시에 작업을 할당하는 것이 힘들어진다.
즉 Radeon HD 2900가 최고의 성능을 유지하기 위해서는 드라이버가 쉐이더 코드 스트리밍을 읽어들여 완벽하게 이해를 한 후 항상 5개의 독립된 명령을 실행해야만 한다. 만약 드라이버가 1클럭당 2개의 명령밖에 실행할 수 없을 경우 성능은 2/5로 줄어들 게 된다.
GeForce 8800의 scalar 아키텍처의 경우 쉐이더 유닛 모두를 지속적으로 활용하기 위해 드라이버는 1클럭당 2개의 명령 (표준ALU용 1개, 특수기능ALU용 1개)만을 실행하게 됨으로써 이러한 문제는 발생하지 않는다. 결과적으로 실제 효율면에서는 GeForce 8800이 앞서게 되는 것이다.
Q: 게임에서는 Scalar 코드와 Vector 코드중에서 어느쪽의 사용이 더 많은가?
A: 쉐이더의 경우 다른 사이즈의 Scalar 코드와 Vector 코드를 조합해 사용된다. 3D알고리즘이 복잡화됨에 따라 보다 많은 동작들이 고정되지 않은 Vector 사이즈에서 실행되게 된다. 예를 들면 텍스쳐의 좌표는 1차원, 2차원, 혹은 3차원으로 표현된다. 대부분 모든 게임에서 이용할 수 있는 쉐도우 매핑은 1개의 요소만을 갖고 있다. 이러한 형식은 고정 크기의 Super Scalar ALU에는 적합하지 않으며 Scalar 설계쪽이 좀더 높은 유연성과 고효율을 갖추고 있다.
Q: 왜 GeForce 8800의 Scalar 쉐도우는 Radeon HD 2900의 Super Scalar 쉐도우보다 효율이 높은것인가?
A: 예를 들어 두개의 수를 더하고 그후에 곱하는 단순한 경우를 생각해 보자.
Sum = A + B
Result = Sum * C
여기서 두 번째의 계산은 최초의 결과에 의존하게 된다. 만약 Radeon HD 2900이 전형적인 VLIW설계를 따르고 있다면 두 번째의 계산이 첫 번째 계산 결과에 의존하기 때문에 두 개의 계산은 같은 VLIW 명령 워드에 그룹화 될 수 없다. 예를 들면 Radeon HD 2900의 쉐이더프로세서는 최초의 계산은 최초의 VLIW 명령 워드에서 동시 실행된 명령내의 1개의 의해서 계산되고, 다음 VLIW 명령 워드에 있어서 MUL(곱셈) 동작은 최초의 VLIW명령에서 요청된 결과를 이용하게 된다. (1개의 ALU가 MUL을 실행하기 위해서는 복수의 클럭 사이클이 필요하다는 점도 주목해야할 것이다.)
이러한 의존성은 명령 스트림내에서 자주 발생하기 때문에 VLIW 컴파일러가 모든 VLIW 명령 워드 내의 모든 슬롯을 채우기 위해서 의존성이 없는 실행에 대해 그룹화를 못하기 때문에 효율성은 떨어지게 된다. 다시 말하면 5개의 ALU를 탑재한 Super Scalar VLIW 아키텍처는 연속적으로 의존적인 코드 스트림을 사용하는 프로그램을 실행할 경우 그 효율성은 20%로 낮아진다.
GeForce 8800의 경우에는 위와 같은 의존성이 있는 상황에서 1개의 Scalar 스트리밍 프로세서(SP)내의 ALU는 최초의 명령의 결과를 기다려야 하지만 모든 SP에 대하여 효율적인 작업을 분배할 수 있기 때문에 VLIW 아키텍처와는 다르며 명령/실행 슬롯이 낭비되는 것을 막을 수 있다.
Q: 8800의 텍스쳐 성능은 Radeon HD 2900의 2배이상을 보여준다. 최근에는 쉐이더 성능이 보다 중요시 되고 있는데 왜 텍스쳐 성능 향상에 보다 초점을 두었는지?
A: 쉐이더 연산은 아무 것도 없는 곳에서 그 효과를 발휘하지는 않으며 일반적으로 대단히 많은 텍스쳐, 쉐도우 매핑, 큐브 매핑등을 통해 복잡한 쉐이딩 연산을 하게 된다. 그렇기 때문에 필요한 텍스쳐가 제공되지 않으면 쉐이더 프로세서는 효과적으로 작업들을 실행할 수가 없게 된다.
Q: Radeon HD 2900이 80개의 텍스쳐 샘플러를 탑재하고 있다고 주장하고 있다. 이는 GeForce 8800보다 뛰어난 것은 아닌가?
A: 80개의 텍스쳐 샘플러라고 하는 것이 무엇을 표현하고 있는 것인지 분명치는 않다. 그보다도 텍스쳐 성능뿐만 아니라 다양한 텍스쳐 형석이나 필터링 방법을 적용하고 클럭당 필터링된 픽셀의 수를 비교하는 것이 더욱더 중요하다.
일반적인 비 HDR 텍스쳐(채널당 8bit)의 경우 GeForce 8800은 바이리니어, 트라이리니어 혹은 2:1 이방성 필터링을 사용해서 클럭당 32개의 픽셀을 출력할 수 있다. FP16 HDR 텍스쳐(채널당 16bit 부동 소수)의 경우에 GeForce 8800은 클럭당 바이리니어 필터링에서 32픽셀, 트라이리니어 및 2:1 이방성 필터링에서는 16픽셀을 출력할 수 있다.
물론 이에 비해 Radeon HD 2900은 FP16 HDR에서 어떤 텍스처의 필터링의 경우에라도 풀 스피드로 실행이 가능하지만 그 수는 16픽셀로 제한된다.
Q: 지오메트리 쉐이더의 테스트 결과 50배이상 빠르다고 밝히고 있는데?
A: 테스트에 따라 그 결과는 바뀔 수 있다. NVIDIA의 경우 'metaballs'라는 지오메트리쉐이더 테스트 프로그램을 개발해 사용하고 있다. 이 테스트에서는 GeForce 8800이 모든 부분에서 앞서고 있어 결국 이러한 지오메트리의 성능을 비교하기에 적합한 것은 실제의 게임이라고 할 수 있을 것이다.
Q: Call of Jaurez 라는 DirectX 10 데모 게임에서 GeForce 8800은 동작하지 않는지?
A: 배표된 것은 프리 릴리즈 판으로 MSAA 버퍼 부분에 버그가 있다. 실제 벤치마크를 위해선 정식으로 출시된 버전을 사용하길 권장한다.
Q: Vista의 NVIDIA 드라이버는 어느정도 개선이 되었는지?
A: 1월에 최초로 발표한 드라이버 이후 수많은 개선이 이뤄졌다. 최근에 출시된 드라이버는 200개 이상의 버그가 수정되었으며 3D 성능은 Windows XP와 동일한 수준으로 올라섰다. 5월에 발표될 드라이버에서는 더욱더 성능이 개선되고 DirectX10 에서의 SLI 도 지원될 것이다.
Q: CSAA의 차이는?
A: 2001년 GeForce 3을 출시하였을 때 여기에 'Quincunx'라고 불리우는 AA기업이 구현되었다. 이 모드는 AA를 계산할 때 픽셀마다 4개의 인접한 샘플을 이용하는 방식으로 결과적으로는 이미지가 흐릿해지는 문제가 지적되었다.
Radeon HD 2900은 'Custom Filter AA (CFAA)'을 지원하지만 그 원리는 Quincunx와 동일하다. 선택한 필터에 의해 CFAA의 경우 4개에서 8개의 인접 샘플을 사용해서 AA를 계산하는데 이 경우에도 필연적으로 희미해 진다.
또한 CFAA는 하드웨어를 통한 지원이 필요치 않는 점도 지적할 수 있다. 즉, 드라이버만으로도 실행이 된다는 점이다. 그 때문에 GeForce 8800의 경우도 CFAA나 어떤 종류의 사용자 필터 모드도 드라이버의 업데이트를 통해 지원할 수도 있다. 하지만 게이머들은 AA를 적용하였을 경우 화면이 흐려지는 것을 원치 않기 때문에 이러한 지원을 하지 않고 있다. 이는 NVIDIA가 Quincunx에서 샘플의 수를 늘리지 않은 이유이며 실제로 샘플을 증가시킬수록 영상은 희미해진다.
그렇지만 'Coverage Sampling AA (CSAA)'의 경우에는 희미해짐 없이 진정한 16x 정밀도를 제공할 수 있다. 이것은 하드웨어적으로 가속되는 알고리즘으로 구현되며 CFAA보다도 높은 성능을 제공한다.
참고로 NVIDIA에서 주장하는 G80과 R600의 사양 비교는 다음과 같다.
|
비교 |
GeForce 8800 GTX |
GeForce 8800 GTS |
Radeon HD 2900 XT |
|
쉐이더 클럭 |
1,350MHz |
1,200MHz |
740MHz |
|
쉐이더 프로세서 |
128 |
96 |
64 |
|
코어 클럭 |
575MHz |
500MHz |
742MHz |
|
바이리니어 필터 픽셀/클럭 |
32 |
24 |
16 |
|
바이리니어 필레이트 |
18,400MP/sec |
12,000MP/sec |
11,872MP/sec |
|
INT16 필터 픽셀/클럭 |
32 |
24 |
16 |
|
FP16 바이리니어 필터픽셀/클럭 |
32 |
24 |
16 |
|
FP16 트라이리니어·2:1이방성 필터 픽셀/클럭 |
16 |
12 |
16 |
|
FP16 바이리니어 필레이트 |
18,400MP/sec |
12,000MP/sec |
11,872MP/sec |
|
FP16 트라이리니어·2:1이방성 필레이트 |
9,200MP/sec |
6,000MP/sec |
11,872MP/sec |
|
FP32 필레이트 |
9,200MP/sec |
6,000MP/sec |
5,936MP/sec |
|
ROP 픽셀/클럭 |
24 |
20 |
16 |
|
ROP Z/클럭 |
48 |
40 |
32 |
|
ROP 픽셀 |
13,800GPixel/sec |
10,000GPixel/sec |
11,872GPixel/sec |
|
메모리 인터페이스 |
384bit |
320bit |
512bit |
|
메모리 클럭 |
1,800MHz(DDR) |
1,600MHz(DDR) |
1,650MHz(DDR) |
|
메모리 대역폭 |
86.4GB/sec |
64GB/sec |
105.6GB/sec |
|
프레임버퍼 메모리 |
728MB |
640MB/320MB |
512MB |