|
|
지포 FX 성능에 관한 의혹...
김도완 (비회원)
조회 :
4549 ,
2003/04/22 08:05 |
|
|
|
출처 : http://pc.watch.impress.co.jp/docs/2003/0421/kaigai01.htm
일본어 -> 한국어 번역...(수정없음)
GeForce FX의 퍼포먼스 의혹
●드라이버의 버젼으로 크게 바뀌는 GeForce FX의 퍼포먼스
NVIDIA의 GeForce FX패밀리의 퍼포먼스의 수수께끼가 화제를 부르고 있다. 드라이버의 버젼으로,60%(3DMarks)도 성능 이 바뀌기 (위해)때문에다. 이것은, PC Watch에서의 리뷰 결과 「1 슬롯 사양의 GeForce FX 5800 Ultra 탑재 카드 등장! 」(을) 를 봐도 아는대로이다. 같은 GeForce FX 5800(NV30) Ultra계 보 드로, 드라이버의 버젼이 Detonator 43.00으로부터 동43.45에 오 른 것만으로, 3 DMarks에서의 성능이 약60%도 오르고 있다.
어느 라이벌 GPU 메이커 업계 관계 메는, 이것을 「드라이버 매직」이라고 부른다. 그에 의하면, 「드라이버의 최적화만으로, 여기까지 갑자기 성능 이 향상하는 것은 통상에서는 생각되지 않는다」부터다.
ATI 테크놀로지스 재팬도 RADEON 9800/9600/9200패밀리의 일본에서의 발표회에 서, 이 문제를(지명은 하지 않기는 하지만) 지적 하고 있었다. 동사가 지적 한 것은, 성능 을 중시한 드라이버에서는, 본래 32 bit 부동 소수점 정밀도로 행해져야 할 처리가, 16 bit 부동 소수점 정밀도로 행해지고 있다고 하는 점. 같은 시다의 처리 결과를 RADEON 9600(RV350)과 라이벌 GPU로 비교. 명확한 묘화의 순조로움이 차이를 보여 내부 24 bit 정밀도로 처리하는 RV350에 대해서, 라이벌 GPU의 처리는 16 bit 정밀도로 행해지고 있 는 것을 시사했다.
타때, 드라이버에 따라서는, 데이터 정밀도를 희생으로 해 성능을 향상시키고 있다고 하는 같은 지적은, 과거 1개월정도의 사이에, 여러가지 리뷰 사이트에도 오르고 있다. 그 때문에, 리뷰 사이트에서는, 2 세대의 드라이버에서의 벤치마크 결과를 게재하고 있 는 케이스도 있다. 또, 어느 GPU 관계 메는, 고속의 Detonator 43.45에서는, DirectX 9의 규 정에 반하고 있기 (위해)때문에, Microsoft의 WHQL의 인정은 통하지 않을 것이라고 지 적 한다. 대논쟁이 되고 있는 것이다.
●32 bit라면 저속으로 16 bit라면 고속의 GeForce FX
타는, 드라이버에서의 화제가 나오는 것보다도 훨씬 전부터, GeForce FX계 아키텍쳐
에서는 데이터 정밀도에 의해 처리 성능에 큰 차이가 나는 것은, 알려져 있었다. DOOM 의 개발자인 id Software의 John Carmack씨는, 금년두에 「Plan John Carmack 」로 NV30와 R300의 성능에 대해서 언급하고 있었지만, 그 중에 벌써 모드에 의한 성능의 차이를 지 적 하고 있다.
그것에 따르면, OpenGL ARB(Architecture Review Board) 2의 패스를 사용했을 경우에는 NV30는 R300(RADEON 9700 Pro)보다 꽤 늦지만, NV30에 최적화한 벤다스페시픽크인 모드를 사용했을 경우에는 훨씬 빨라진다고 한다. 그 이유는, R300는 항상 같은 정밀도 로 처리하지만, NV30는 퍼포먼스가 다른 정밀도를 내부적으로 서포트하고 있기 때문 이라고 한다.
즉, R300계는 어느 데이터 정밀도에서도 항상 같은 속도이지만, NV30는 고정밀도 (32bit)라면 매우 늦어져, 저정밀도(16bit)라면 고속으로 된다는 것이다.
이 건은, Carmack씨 뿐만이 아니고, 많은 업계 관계 메가 지적 한다. 또, NVIDIA몸도, GeForce FX아키텍쳐에서는 「16 bit의 (분)편이 고속으로 달린다」(Geoff Ballew씨, Product Line Manager) (일)것을 인정하고 있다. 3월에 개최된 GDC(Game Developers Conference)에서도, NVIDIA는 퍼포먼스상의 이유로부터, 필요가 없는 한 32 bit는 아니 고 16 bit를 사용하도록(듯이) 추천 하고 있었다.
분은 레뷰아는 아니기 때문에, 성능에 대한 자세한 것은 그 밖에 양보하지만, 이러한 정보는, 타는 아키텍쳐면을 생각하면(자) 납득할 수 있다. 추측상의 GeForce FX아키텍 쳐와 부합 하기 때문이다.
●연산 유니트의 정밀도에서의 선택의 차이
DirectX 9의 최대의 특징의 하나는, 픽셀 처리가 정수 뿐만이 아니고, 부동 소수점에
확장된 것. 즉, 서페이스포맛트(=데이터 타입)가 확장되어 부동 소수점 정밀도가 더해 졌다. DirectX 9의 규정 하는 부동 소수점 데이터 타입은, 각 색 16 bit의 ABGR16f, 각 색 32 bit의 ABGR32f의 2 종류. 모두 4 개씩의 데이터를 동시에 처리하는 SIMD(Single Instruction, Multiple Data)이므로, 환산하면(자) 64 bit와 128 bit가 된다.
즉, DirectX 9 세대 GPU에서는, 16bit(64bit SIMD)와 32bit(128bit SIMD)의 부동 소수점 연산을 서포트할 필요가 있다. 이것은 OpenGL 2.0에 대해서도 같다.
그러나, 타 때는 GPU는 반드시 32 bit 정밀도의 처리를 하고 있지 않다.
예를 들면, ATI Technologies와 S3 Graphics는, 내부에서는 24 bit로 처리하고 있다. ATI 는 플래그 파스의 RADEON 9700/9800(R300/R350)의 Pixel Shader에 8개의 24 bit 부동 소 수점 연산 유니트를 실장했다. S3 Graphics의 DeltaChrome도 이와 같이 8개의 24 bit 유니 트를 가진다.
양 회사의 어프로치는 이 점에서는 매우 닮고 있어, API로서는 32 bit나 서포트하지만, 내부에서는 정밀도를 떨어뜨린다. 16 bit 포맷도 32 bit 포맷도, 전부 24 bit로 실행된다. 16 bit와 32 bit의 어느 쪽의 데이터도, 같은 속도로 연산을 할 수 있으므로, 32 bit시에도 퍼포먼스 로스가 없다. 생략하고 있다고 생각할지도 모르지만, 리얼타임 CG를 중심으 로 생각했을 경우에는 이것으로 충분한 정밀도라고 말한다.
그에 대해, NVIDIA는 완전히 다른 방법을 뽑았다. GeForce FX패밀리에서는, 32 bit 내 부 정밀도로 처리를 행한다. 즉, 32 bit에서 24 bit에 데이터 정밀도를 떨어뜨리는 것이 없 다. 좋은 (일)것이지만, 이것에는 트레이드 오프가 있다. 그것은 유니트수와 처리 속도 다. NV30에서는 4개의 32 bit 연산 유니트 밖에 탑재하고 있지 않으면 NVIDIA는 설명한 다. 즉, Pixel Shader의 정밀도는 높지만 유니트수는 타사의 플래그 파스 GPU의 반이라고 하게 된다.
NVIDIA가 연산 유니트를 반으로 줄인 것은, 탑재할 수 있는 트랜지스터 카운트의 제 약으로부터라고 생각된다. 24bit(96bit SIMD) 연산 유니트와 32bit(128bit SIMD) 연산 유 니트에서는, 유니트의 코스트(트랜지스터 카운트와 die size)에 큰 차이가 있기 때문이 다.
●GeForce FX에서는 16 bit 유니트 2개로 32 bit 연산인가?
그럼, 왜 이 GeForce FX아키텍쳐의 경우, 정밀도를 16 bit에 떨어뜨리면 성능이 높아지는 것인가. NVIDIA의 Geoff Ballew씨(Product Line Manager)는 「메모리 대역, 레지스터 스페이스, temporary storage 등 모든 점에 두어 16 bit 부동 소수점은(32 bit로부터 적게 된 다. 그러니까, 훨씬 고속으로 된다」이라고 설명한다. 그러나, 타 때는 그러한 차이로부 터 추측되는 것보다도, 훨씬 큰 성능차이가 정밀도에 의해 생겨 있는 것처럼 보인다.
여기로부터 생각되는 것은, NVIDIA의 Pixel Shader가, 타는 16bit(64bit SIMD) 유니트 2 개로 32bit(128bit SIMD) 연산을 행하고 있을 가능성이다. 32 bit 유니트가, 16 bit 연산을 행하는 2개(살)의 유니트에 분할할 수 있으면(자) 바꿔 말해도 좋다. 이러한 실장은, 타 는 드문 것은 아니다. CPU의 세계에서는 옛부터 행해져 온 것으로, 지금도 다용되고 있 다. 매우 보통 수법이다.
만약, GeForce FX패밀리의 Pixel Shader가 이 실장 방법을 취하고 있다고 하면(자), 16 bit시에는 연산 유니트수는 2배로 증가하게 된다. 그렇다면, 데이터 정밀도에 의해 성능 이 크게 바뀌는 것도 납득할 수 있다.
또, GPU의 개발자 사이드에 서 보면, NVIDIA가 이러한 실장 방법을 취하는 것은 당 연하다. (은)는 커녕, 32 bit화로 이러한 실장으로 하지 않으면, 그 쪽이 이상하다. 이라고 하는 것은, 만약 32 bit 처리 밖에 할 수 없는 연산 유니트를 실장했을 경우에는, 16 bit 처 리시에도, 타사와 비교해 퍼포먼스가 크게 떨어져 버리기 때문이다. 그러나, 16 bit 유니 트 2개로 32 bit를 처리시킨다면, 16 bit 처리시의 throughput는 적어도 타사와 손색이 없는 레벨이 된다. 그리고, 32 bit 처리시에는, 타사가 추종 할 수 없는 풀의 고정밀도를 실현 할 수 있다.
이렇게 해 보면(자), 이 건이, GeForce FX의 드라이버와 성능이라고 하는, 근거리의 시 점 이상의 문제를 포함하고 있는 것을 안다. 그것은, GPU에 필요한 데이터 정밀도가 도 대체 얼마나인가. 또, GPU는 리얼타임 CG에 초점을 맞추어야할 것인가, 오프 라인 CG 에 초점을 맞추어야 할 의 것인지라고 하는 문제다.
현재의 정보로부터에서는 다음과 같이 추측된다. ATI나 S3는, 리얼타임 CG로 시다를 빠르게 움직이는 것이 중요라고 생각해 정밀도보다 성능을 우선해 24 bit로 했다. 역을 말하면, 리얼타임 CG에서도 32bit API에서의 24 bit 정도의 정밀도는 필요라고 생각한 것이다.
그에 대한 NVIDIA는, 오프 라인 CG의 시다에서의 정밀도에 대한 엄한 요구를 중시 해, 처리가 늦어지는 것을 각오 위에서 32 bit를 실장. 그 대신해, 16 bit에서는 고속으로 되도록(듯이) 했다고 생각된다. 이것은, 속도가 필요한 리얼타임 CG는, 현재 상태로서 는 16 bit 중심에서 좋으면 결론지은 것처럼 보인다.
문제는, 어째서 NVIDIA만이 그런 선택을 했는지. 그리고, NVIDIA의 선택은 지지를 받고 있는지라고 하는 점에 있다. 현재는, NVIDIA가 이러한 GeForce FX아키텍쳐의 설 명을 충분히 행하고 있지 않기 때문에, 자꾸자꾸 의문이 부풀어 올라 있는 것처럼 보인다.
참고하시길...
|
|
|
|