|
Volari 그래픽코어의
핵심은 이미 언급했듯이 DUAL GPU의 구성으로 이미 몇 제조사에서 출시되었던 제품들과 마찬가지로 두 개의 GPU를 통해 성능향상을
이루는 방식을 채택하고 있어 새롭게 시작하는 회사의 제품으로 제품에 대해 상당히 기대하는 입장과 실제 성능은 별루일 것이라는 입장이
나누어지고 있다.
뭐 1+1=2가 되면 너무나
좋겠지만 사실 이것을 행하는 것이 얼마나 어려운 것인지 너무나도 잘 알고 있기에 이미 그래픽코어부분에서 선두업체들도 이러한 제품들에
대해서 개발을 꺼려하고 있는데 Volari 그래픽코어에서 DUAL GPU의 구성이 가능한 것에 대해서 알아보자.
Volari 그래픽코어의
DUAL GPU구성 핵심은 BitFluent 아키텍쳐에 의한 것으로 이미 이전 페이지에서 간 단한
블록도를 통해서 보았듯이 GPU내부에 DUAL 구성을 위한 브릿지부분이 포함되어 있기에 이를 통해 DUAL GPU의 구성을 가능하게
만들고 있다.
XGI에서 공개하고 있는
BitFluent아키텍쳐의 WHITEPAPER를 보면 하나의 AGP인터페이스에서 두 개의 GPU를 구동하게되는 방식을 쉽게 이해할 수
있는데 우선은 기본적인 구동방식을 아래의 이미지를 통해 알아보자.
하나의 AGP버스에 두
개의 GPU를 구성하는 방식
이
이미지는 기본적인 AGP버스를 통한 두 GPU의 데이터 흐름을 표시한 이미지이다.
이 이미지를 보면 하나의
AGP인터페이스는 기본적으로 첫 번째 GPU와 직접물리적으로 연결되어 있어 두 번째 GPU는 직접적으로 AGP버스와는 관계를 갖지 못하게
된다. 하지만 두 GPU내부에 포함된 Dual GPU 브릿지를 통해 AGP버스를 통해 전송되는 데이터를 두 개의 GPU로 나누게 되는데
AGP버스를 통한 데이터가 우선적으로 브릿지를 통해 두 개의 GPU로 나누어져 처리하는 방식으로 하나의 AGP 인터페이스만으로 두 개의
GPU를 통한 병렬 처리가 가능한 것이다.
두 개의 GPU를 통해
결과를 출력하는 방식
이
이미지도 BitFluent아키텍쳐의 WHITEPAPER에서 설명과 함께 나온 이미지로 각 이미지는 AGP버스를 통해 전송된 데이터가
GPU를 통한후 최종적으로 출력되는 관계를 나타낸 것이다.
좌측 이미지중 첫 번째
이미지는 첫 번째 Master GPU인 Primary GPU의 출력 루트를 보여주는 이미지인데 Primary GPU의 출력은 일반적인
다른 싱글타입 GPU와 마찬가지로 프레임버퍼에 저장된 최종결과물을 그대로 출력하게된다.
하지만 두 번째 GPU인
Secondary GPU경우 AGP버스를 통한 데이터 유입과 마찬가지로 Primary GPU의 브릿지를 통해 Primary GPU를 거쳐
출력하게 되는데 각각의 GPU마다 최종결과물로 처리되어 출력되기에 여기서 Primary GPU는 Secondary GPU의 데이터를
Bypass시켜 버리게 된다.
단.. 지금까지의 DUAL
GPU를 구성할 수 있었던 그래픽코어중 3DFX의 경우 화면상 나타나게되는 최종 결과물의 랜더링을 두 개의 GPU에 화면상의 홀수라인과
짝수라인의 데이터를 나누어 랜더링시켜 출력하는 방식인데 아직 Volari의 랜더링 방식이 어떤단위로 나누어 처리하는지는 언급되어 있지
않다. 다만 들리는 정보로는 프레임단위로 두 GPU가 처리하게 된다고 하고 있을뿐이다.
자세한 것은 추가로 XGI측에
문의해야 되지만 XGI측의 WHITEPAPER에서 최종결과물이라고 언급하고 있는 것을 생각하면 프레임단위로 두 개의 GPU가 나누어서
랜더링하고 있다는 소식이 맞을 것이라 예상된다.
데이터의 병렬처리 및 두
GPU의 대역폭은..
Volari의 처리방식은 이미
AGP버스를 통해서 유입된 데이터가 Primary GPU와 Secondary GPU의 브릿지를 통한 BitFluent 아키텍쳐에 의해
처리되는데 WHITEPAPER의 내용에 따르면 기본적으로 드라이버에 의해 콘트롤된 두 개의 데이터가 AGP버스를 통해 GPU로 전송되면
브릿지를 통해 각각의 데이터가 해당 GPU에 전달되어 각 GPU에서 랜더링시켜 최종 결과물을 출력하는 방식으로 되어있다.
따라서 데이터의 병렬처리의
핵심은 드라이버상에서 이루어지는 각각의 GPU에 대한 데이터 컨트롤에 있다고 볼 수 있는데 이미 드라이버상에서 두 개의 GPU에 할당될
데이터를 컨트롤하기 때문에 GPU상의 브릿지를 단순히 통로역할만을 하게된다. 다만 드라이버상에서 데이터 흐름을 컨트롤한다는 것은
드라이버의 개발이 상당히 중요한 요건으로 포함되게 되는데 이부분에 대해서는 인터뷰 내용을 마지막에 언급하도록 하겠다.
다음은 두 GPU상을 연결하는
데이터 버스 및 각각의 GPU내부에 대한 데이터 처리를 보여주는 것인데 XGI는 이미 스펙상 2.13 GB/s의 대역폭을 가지는 버스로
구성되어 있다고 공개하고 있으며 133Mhz로 동작하며 32bit의 데이터버스를 가진다고 한다.(이 자료만으로 보면 133Mhz에
32bit이니까 실제 대역폭은 133x(32/8)=532MB/s의 대역폭으로 계산되어지나 CPU들과 같이 한번의 클럭당 4개의 데이터를
처리할 수 있다면 가능한 것이다. 이에 대해서도 XGI측에 문의해볼예정이다.)
그리고 XGI의 자료를 보면
두 GPU의 데이터 흐름으로 나타나게될 데이터 전송의 지연이나 운용등의 문제를 Virtual channel 아키텍쳐에 의해서 해결한다고
하고 있는데 가상의 채널을 통해 PCI나 AGP 그리고 CRT출력 데이터등을 전송할 수 있으며 각각의 채널은 병렬로 실행할 수 있어
데이터 흐름상 나타나게될 지연문제를 제거해준다고 한다.
|