|
GEFORCE FX의 성능의혹(번역 수정)
오성학 (비회원)
조회 :
2706 ,
2003/04/22 22:48 |
|
|
GeForce FX의 성능의혹
●드라이버의 버젼으로 크게 바뀌는 GeForce FX의 성능
NVIDIA의 GeForce FX패밀리의 성능이 논란에 이르고 있다. 드라이버의 버젼으로,60%(3DMarks)도 성능 이 바뀌기 때문에다. 이것은, PC Watch에서의 리뷰 결과 「슬롯 하나정도 의 GeForce FX 5800 Ultra]을 봐도 알수있는 것이다. 같은 GeForce FX 5800(NV30) Ultra계열 보드로, 드라이버의 버젼이 Detonator 43.00으로부터 43.45까지 오 른 것만으로, 3 DMarks에서의 성능이 약60%도 오르고 있다.
어느 GPU회사 관계자는 이것을 「드라이버 의 마술」이라고 부른다. 그에 의하면, 「드라이버의 최적화만으로, 여기까지 갑자기 성능 이 향상하는 것은 정상적으로 불가능하다]라는 것이다.
ATI 의 일본지사인 ATI TECH. JAPEN도 RADEON 9800/9600/9200패밀리의 일본 발표회에 서, 이 문제를 지적 하고 있었다. ATI TECH JAPEN 사가 지적 한 것은, 성능 을 중시한 드라이버에서는, 본래 32 bit 부동 소수점 정밀도로 행해져야 할 처리가, 16 bit 부동 소수점 정밀도로 행해지고 있다고 하는 점. 같은 CG의 처리 결과를 RADEON 9600(RV350)과 FX GPUF를 비교. 명확한 변화 성능이 차이를 보여 내부 24 bit 정밀도로 처리하는 RV350에 비해서, FX GPU의 처리는 16 bit 정밀도로 행해지고 있 는 것을 시사했다.
그리고, 드라이버에 따라서는, 데이터 정밀도를 희생으로 해 성능을 향상시키고 있다고 하는 지적은, 과거 1개월정도의 사이에, 여러가지 리뷰 사이트에도 오르고 있다. 그 때문에, 리뷰 사이트에서는, 2 세대의 드라이버에서의 벤치마크 결과를 게재하고 있 는 경우도 있다. 또, 어느 GPU 관계 자는, 고속의 Detonator 43.45에서는, DirectX 9의 규 정에 반하고 있기 때문에, Microsoft의 WHQL의 인정은 통하지 않을 것이라고 지 적 한다. 그래서 논쟁이 되어왔다.
●32 bit이면서 저속으로 16 bit*2로 처리하는 고속의 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*2의 정밀도로 고속으로 작동된다」(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 유니 트를 가진다.
양 회사의 VGA는 이 점에서는 매우 닮고 있어, 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의 시장에서는 인텔 쪽에서 하이퍼쓰레딩을 적용했고 (제온 팬4부터 노스우드 3.06GHZ,스프링데일 전 사양 공통적용)했고 AMD 쪽은 하이퍼 트랜스 포트를 썼다(MP,앞으로 들어갈 옵테론 도 포함)
만약, 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아키텍쳐의 설 명을 충분히 하고 있지 않기 때문에, 자꾸자꾸 의혹과 소문이 있는 것처럼 보인다.
수정 번역 오성학
이 번역은 원문과 일치 되지 않을수도 있습니다.
|
|
|
|