본문 바로가기
IT/Hardware/Graphics

ATI Radeon HD4800 고성능의 비밀

by 에비뉴엘 2008. 11. 17.
반응형


● DirectX10 세대에 첫 메이저 업데이트 아키텍쳐

 DirectX10 세대 GPU 전쟁의 제2 페이즈가 막을 열었다. AMD의 구ATI Technologies 부문인 Graphics Products Group는, 고급 지향 클래스의 프로세서 퍼포먼스를, 밋드렌지 GPU 클래스의 가격으로 제공하는「ATI Radeon HD 4800(RV770)」패밀리를 릴리스. 또, RV770 코어를 2개 사용한 고급 지향 GPU「R700」의 발매도 예고했다. AMD는, GPGPU(GPU의 범용 컴퓨팅 이용) 향해의 제품 브랜드「FireStream」에도 RV770 코어를 투입할 전망으로, NVIDIA의 GeForce GTX 200(GT200) 계열과 정면으로부터 서로 부딪친다.

 AMD와 NVIDIA의 양사 모두 작년(2007년)의 연말 판매 경쟁을 위한 GPU 라인 업은, 종래 아키텍쳐의 미세화판이며, 성능과 기능의 양면에서 비약은 작았다. 또, 작년말은, 최고 성능 한편 최고 메모리 대역의, 단체 GPU 제품은 릴리스 되지 않았다. 양사 모두, 전회의 제품은 마이너 체인지로, 이번 제품이 메이저 체인지가 된다.

 보조를 맞출 것 같은 양 회사는, 제품 메세지의 면에서도 공통점이 많다. 양사 모두, 「1 TFLOPS」전후의 연산 퍼포먼스를 전면에 밀어 냈다. 그리고, 쿼드코어 CPU의 10배의 부동소수점 연산 성능을 살린, 범용 어플리케이션에의 전개를 강하게 구가했다. 비디오 인코딩이나 화상 필터링이라고 한, 일반 어플리케이션에의 전개를 나타내는 것으로, 「GPU의 비그래픽스에의 이용」을 강하게 밝힌 것이 현세대의 2사의 GPU다.

AMD는 단기적으로는, GPU 제품에 의지하는 비중을 높게 한다고 보여진다. 그 때문에, GPU를 그래픽스 용도 뿐만이 아니라, 보다 고부가 가치의 범용 컴퓨팅 용도에서도 북돋우고 싶다고 하는 것이, AMD의 기대일 것이다. 아마, RV770 코어의 FireStream는, 지금까지보다 강하게 밀어 내는 것이라고 추측된다.

● R600를 베이스로 확장한 RV770의 마이크로 아키텍쳐

 RV770는, ATI Radeon HD 2900(R600) 아키텍쳐를 베이스로 하고 있다. 아래의 차트는, AMD가 공개한 RV770의 다이어그램에, 아키텍트들로부터의 정보를 더해 작성한 블럭도다. 그 근처는, R600의 다이어그램을 RV770의 포맷에 맞추어 다시 그린 블럭도다.








 
R600와 RV770의 관계는, NVIDIA의 GeForce GTX 200으로 GeForce 8800의 관계와 잘 비슷하다. R600의 베이스 아키텍쳐를 개량해, 그래픽스 성능을 배증시켜, 게다가 범용 어플리케이션 전용의 기능확장을 추가한 것이 RV770다. 그 때문에, RV770와 R600에서는, 프로세서 자체의 기본 구조는 놀라울 정도 잘 비슷하다. 그러나, R600와 RV770에는, 큰 비약도 있다. 그래픽스에 특화한 기능확장 이외의, 프로세서로서의 RV770의 비약 포인트를 들면 다음과 같이 된다.

  • SIMD 실행에 의한 퍼포먼스 효율의 추구
  • 범용 컴퓨팅 전용의 기능의 확충
  • GPU 내부 버스 구조의 일신에 의한 데이터 플로우의 개선
  • GDDR5 채용과 메모리 회전의 일신에 의한 데이터 대역 확대

 AMD의 기대를 담당하는 RV770로, 이번 강조된 것은, 지극히 높은 성능 효율이었다. RV770는, 160개의 VLIW 프로세서를 탑재, 합계로 800개의 FMAD 유닛을 탑재한다. Radeon HD 3800(RV670)까지는 320개였으므로 2배 이상으로 증가한 것이 된다. NVIDIA 같이 피크 퍼포먼스는, 「ATI Radeon HD 4870」로 1.2 TFLOPS이다.

 그에 대하고, 동시기의 NVIDIA의 GT200계는 240개의 프로세서를 탑재해, 240개의 단정도 FMAD 유닛과 60개의 슈퍼 펑션 유닛(곱셈 FMUL를 4 병렬 실행 가능)을 탑재한다. 물리적인 연산 유닛수에서는 AMD가 크게 웃돈다. 다만, 피크 성능은, 그래픽스를 위한 제품 GeForce GTX 280으로 933 GFLOPS, GPU 컴퓨팅 전용의「Tesla(테스라) T10P」로 1.08 TFLOPS로 RV770와 크지는 차이가 나지 않는다.

 RV770는 많은 프로세서를 저속(750 MHz)으로 달리게 해 NVIDIA는 보다 적은 프로세서를 고속(1.3~1.5 GHz)에 달리게 한다. 그 때문에, 피크 연산 퍼포먼스에서는 그만큼 차이가 없지만, GPU의 die size(반도체 본체의 면적)와 트랜지스터 카운트는 크게 다르다. GT200가 1.4 B(14억) 트랜지스터로 570평방 mm의 거대 다이인데 대하고, RV770는 956 M(9억 5,600만) 트랜지스터로 260평방 mm. die size에서는, 거의 반이 된다.

 GT200가 TSMC 65 nm프로세스인데 대하고, RV770는 TSMC 55 nm프로세스라고 하는 차이는 있지만, 65 nm 상당하고 계산해도 RV770의 다이는 약 350평방 mm정도 밖에 되지 않는다. 그 때문에, RV770는 GT200에 대해서, 다이 면적과 소비 전력 당의 피크 퍼포먼스가 극단적으로 높다. 즉, AMD는, NVIDIA보다 쭉 효율의 좋은 GPU를 만들어낸 것이 된다.

 덧붙여서, RV770의 die size는, AMD의 Barcelona나 Intel의 Nehalem 등, 쿼드코어 CPU와 거의 동레벨이다. 즉, AMD는, CPU와 같은 die size로 10배의 부동 소수점 연산 퍼포먼스의 프로세서를 만들어낸 것이 된다.

● 트랜지스터 효율의 좋은 RV770 아키텍쳐

 연산 유닛수가 많은 RV770가, GT200보다 다이도 트랜지스터 카운트도 작은 것은 이상하게 보인다. 물론, 프로세서의 세계에 매직은 없다. 이것에는 명쾌한 이유가 있다. 한마디로 말하면, RV770는 데이터 병렬 프로세서로서의 효율을 추구하고 있다. 즉, 많은 연산 유닛을, SIMD(Single Instruction, Multiple Data) 형의 명령 실행으로 병렬에 동작시켜, 고효율을 얻고 있다. RV770의 다이의 대부분은 프로세서 어레이로 차지할 수 있어 불필요한 제어계 유닛의 비율은 극단적(으)로 적다. 그 때문에, 다이 면적 당의 피크 연산 퍼포먼스는 지극히 높다.

 프로세서 설계에서는, 플렉서빌러티와 퍼포먼스 효율은 트레이드 오프의 관계에 있다. 그 2개의 사이로, 효율성에 훨씬 턴 것이 ATI 아키텍쳐다. 이 점은, 범용 컴퓨팅을 위한 GPU로서의 플렉서빌러티에도 어느 정도 털고 있는 NVIDIA와의 큰 차이가 되고 있다. 다만, AMD는 RV770에 대하고, 범용 컴퓨팅 전용의 확장도 몇개인가 행했다. 프로그램이 명시적으로 액세스 가능한 scratch pad형 공유 메모리의 탑재다. GPGPU 전용의 최적화는, RV770의 큰 특징이 되고 있다.

 간단하게 말하면, NVIDIA는 GPU 컴퓨팅 전용의 아키텍쳐를 취한 것으로, 효율성은 어느 정도 희생했다. 그에 대하고, AMD는 데이터 병렬 프로세서로서의 고효율을 추구한 그 결과의 고퍼포먼스를 무기로, 범용 컴퓨팅에의 침투를 노린다. 어느 쪽의 어프로치가 성공할까는, 아직 모른다. 다만, 프로그래밍 체제의 정비에서는, 현재 NVIDIA가 선행하고 있다.

 범용 컴퓨팅 전용의 기능을 도입한 RV770. 하지만, RV770로 가장 크게 손을 넣을 수 있던 것은, 실은 연산 코어가 아니고, 내부 버스와 메모리콘트로라 회전이다. R600 세대로는, 이 부분의 효율의 나쁨이, 성능의 보틀넥이 되어, 칩의 대형화나 전력 소비의 증대를 부르고 있었다고 한다. 거기서, RV770에서는 R600 세대의 링 버스로부터 크로스바 스윗치로 변경했다. 거기에 맞추고, 캐쉬 계층을 크게 변경했다. 이 변경의 결과, 거대한 프로세서 어레이에, 충분히 데이터를 공급할 수 있는 내부 버스가 완성되었다.

 또, 서포트메모리를 JEDEC로 표준화 한 차세대 그래픽 메모리 GDDR5로 했다. 그 결과, RV770에서는 3.6 Gt/sec와 지극히 높은 전송 레이트로, 115.2 GB/sec의 메모리 대역을 실현한다. AMD는, 고퍼포먼스 프로세서의 최대의 과제인, 데이터 대역의 문제를 해결하는 것으로, 컴팩트하면서 1 TFLOPS의 GPU를 실현했다.

● VLIW 아키텍쳐를 취하는 RV770의 프로세서

 RV770의 프로세서의 구조는, R600 세대를 거의 답습하고 있다. 연산 유닛은, VLIW(Very Long Instruction Word) 형의 프로세서에 정리하고 있다. R600 세대로는, 이 프로세서는「5-way Superscaler Shader Processor」라고 불리고 있었다. 내부에는, 5개의 단정도 부동 소수점 FMAD 유닛「Stream Processing Unit」이 탑재되고 있다.

 덧붙여서, AMD는, 5개의 부동 소수점 연산 유닛 각각을, 스칼라 프로세서라고 부르는 것도 많다. 이것은, NVIDIA 아키텍쳐에서는, 개개의 연산 유닛이 독립한 스칼라 프로세서가 되어 있기 때문에, 대항 카미묘칭을 맞춘 것이다. 즉, NVIDIA와 프로세서수가 비교되는 경우에, 5-way 프로세서가 아니고, 각 연산 유닛 단위로 비교되고 싶다고 하는 마케팅상의 목적이 있다. 그러나, 실태는, 5개의 연산 유닛으로, 1 데이터 엘리먼트(픽셀/정점등)에 대한 처리를 행하는, 5-way의 프로세서다.

 4 유닛은 같은 구성으로, 32-bit단정도 부동 소수점의 적일본 재래의 주산(FMAD)과 정수 연산용의 심플한 연산 유닛. 1 사이클 throughput로, 매사이클마다 명령을 실행할 수 있다. 그에 대하고, 5번째의 유닛은, 부동 소수점 FMAD와 정수 연산 외에, 복잡한 오퍼레이션(sin/cos/log/exp등)이나 부동 소수점과 정수의 데이터 변환등도 실행한다. GPU 용어에서는, 5번째의 유닛은 일반적으로「Super Function Unit」라고 불린다. 5 유닛 모두 FMAD등의 연산은 1 사이클 throughput로 실행할 수 있다.

 5-way 프로세서에 대한 명령어는 6개의 명령 슬롯을 갖춘 VLIW(Very Long Instruction Word) 명령이 되고 있다. VLIW에서는, 긴 명령어안에 복수의 명령을 격납할 수 있다. 명령을 컴파일 할 때에, 병렬에 실행할 수 있는 복수의 명령을 추출하고, 1개의 VLIW어안에 납입한다. 프로세서측에서는, VLIW 명령중에서 개개의 명령을 꺼내고, 복수의 연산 유닛으로 병렬에 실행한다. 컴파일시에 명령 스케줄링을 행하기 위해, 프로세서를 심플하게 유지할 수 있다. AMD가 VLIW를 채용한 것은, GPU가 실행하는 프로그램이, SIMD(Single Instruction, Multiple Data) 형으로부터 스칼라형으로 비중이 옮기기 시작했기 때문이다. NVIDIA도 같은 이유로부터, 스칼라 프로세서의 어레이 아키텍쳐를 채용했다.




● 트레이드 오프가 있는 스칼라 구성과 VLIW 구성

 NVIDIA는, GPU의 연산 프로세서를 풀로 스칼라 프로세서로서 구성해, 명령 레벨의 병렬성은 거의 고려하고 있지 않다. 그에 대하고, 구ATI계의 아키텍쳐는 VLIW에 의한 명령 레벨의 병렬성을 추구한다. 그 때문에, RV770에서는, NVIDIA보다 1개의 프로세서에 많은 연산 유닛을 탑재하고 있다.

 5개의 연산 유닛에 의한 병렬 실행은, 여전히 SIMD형의 병렬 연산이 많이 포함되는 그래픽스 처리에서는, 성능을 올리기 쉽다. 한편, 스칼라 연산이 중심으로, 한편 명령끼리에게 의존성이 존재하는 케이스가 많으면 병렬 실행을 하지 못하고, 헛됨이 생길 가능성이 있다. 또, 드라이버로의 리얼타임 컴파일에 의해 시간이 걸리기 위해, 처리의 단위가 크지 않으면 오버헤드가 생긴다. 다만, 그래픽스에서는 단위가 매우 크기 때문에, 이 문제는 눈에 띄지 않는다. 이러한 기본 아키텍쳐는, NVIDIA보다 그래픽스 집합이다.


 NVIDIA는 GT200로 배정도(64 bits) 부동 소수점 연산을 서포트했지만, AMD도 전생대 RV670 코어로부터 배정도 연산을 서포트하고 있다. 그러나, 실장 방식은 NVIDIA와는 크게 다르다. GT200에서는, 배정도 전용 유닛을 클러스터에 가세하고 있지만, AMD는, 기존의 단정도 유닛을 사용해 배정도 연산을 실현하는 방법을 선택했다.

 5-way 프로세서안의 슈퍼 펑션 유닛 이외의 4개의 단정도 FMAD 유닛을 사용하고, 1개의 배정도 FMAD 연산을 1 사이클 throughput로 실행한다. 2개의 단정도 FMAD 유닛이 1개의 배정도의 곱셈(FMUL)을, 별도인 2개의 FMAD 유닛이 1개의 배정도의 가산(FADD)을 실행해, 콤바인 해 배정도 FMAD를 실현한다.

 AMD의 방식으로는, 배정도 연산은 단정도 연산의 것1/5한 퍼포먼스가 된다. 1.2 TFLOPS의 RV770로 240 GFLOPS로, Tesla의 90 GFLOPS의 2배 이상이다. 그러나, GT200 아키텍쳐와 달리, 단정도 연산과 배정도 연산을 병렬에 행할 수 없다. 실장의 차이가, 트레이드 오프를 낳고 있다.

 AMD는 그래픽스 제품에서는 배정도는 유효하게 하지 않고, GPGPU 전용의「FireStream」계열에서만 배정도를 서포트할 전망이다. 이것은, 그래픽스 제품으로 배정도를 서포트하는 NVIDIA와의 큰 전략의 차이다.


● 프로세서 클러스터의 구성이나 분기 입도는 R600와 같다

 RV770에서는, 16개의 5-way 프로세서를 1개의 클러스터「SIMD Core」로서 제어하고 있다. 즉, 1개의 명령 유닛이 16개의 프로세서의 80의 연산 유닛을 제어한다. 11개의 연산 유닛을 1개의 명령 유닛이 제어하는 GT200와 비교와 현격히 입도가 크다. 1개의 명령 유닛으로 제어하는 연산 유닛의 수가 NVIDIA보다 많기 때문에, 제어 유닛의 비율을 줄이고, 보다 많은 프로세서를 탑재하는 것이 용이해지고 있다.


 RV770에서는, R600 세대의 GPU와 같이, 각 프로세서가 4 사이클 같은 명령을 실행한다. 그 때문에, 64 인스턴스(NVIDIA 용어에서는 스렛드)가 분기 입도(Branch Granularity)가 된다. 분기 입도가 작은 만큼, 분기 명령이 많은 프로그램을 효율적으로 달리게 할 수 있다. G80/GT200계는 분기 입도가 32 인스턴스로, RV770보다 작다. AMD에 의하면, 그래픽스에서는 64 인스턴스의 입도가 최적이다고 판단했다고 한다. NVIDIA는 입도를 작게 한 것으로, 제어 기구가 복잡화 하고 있다. 이것은 트레이드 오프다.

 AMD는, RV770에서는 명료하게 GPGPU에 힘을 쏟기 시작했다. NVIDIA GPU는, 각 프로세서 클러스터안에 16 KB의 공유 메모리를 탑재. 범용 어플리가, 인스턴스간의 데이터 교환 등에 사용할 수 있도록(듯이) 하고 있다. RV770도, 이것과 같은 기능을 가지는 16 KB의 공유 메모리「Local Data Share Memory」을 탑재했다. GPU의 일반적인 캐쉬는, 프로세서 코어로부터의 기입을 할 수 없는 리드온리-의 버퍼다. 그에 대하고, 이 공유 메모리는, 프로세서 코어로부터의 리드&라이트가 가능해지고 있다. address 공간을 할당할 수 있어 명시적으로 액세스가 가능해지고 있다. 이것도, NVIDIA의 공유 메모리와 같다.

 R600 아키텍쳐에서는, SIMD Core간에 공유하는 8 KB의 라이타불인 캐시 기억 장치「Memory Read&Write Cache」이 탑재되고 있었다. 그에 대한 RV770에서는 SIMD Core간에 공유하는 16 KB의「Global Data Share」을 탑재한다. 이것은, SIMD내의 Local Data Share Memory와 같게 애드레싱 가능한 스크래치 패드 메모리가 되고 있다.

● 내부 버스 아키텍쳐를 완전하게 일신

 NVIDIA는, GT200로 프로세서 클러스터안을 크게 변경했다. 그에 대하고, AMD는, 프로세서 클러스터의 구성이나 구조는, 거의 변경하지 않았다. 눈에 띄는 것은 공유 메모리의 탑재나 배정도 서포트로, 구성 자체에는 큰 변경은 없다. 그러나, GPU 중(안)에서의 클러스터의 수는 크게 늘려졌다.

 R600에서는 SIMD Core를 4개 탑재하고 있었다. RV770에서는, SIMD Core의 수는 10개로 늘려졌다. 각각의 SIMD Core가 16개의 5-way 프로세서를 탑재하고 있기 때문에, 합계로 160개의 5-way 프로세서, 800개의 부동 소수점 연산 유닛이 된다. 즉, 클러스터인 SIMD Core 자체는 크게 구성을 바꾸지 않고, SIMD Core를 늘리는 것으로 GPU의 규모를 크게 하고 있다.

 RV770로 가장 크게 변경된 것은, 팁의 내부 버스 아키텍쳐다. AMD는 R600계에서는, 팁 내부에서의 각 유닛의 접속에 링 버스를 사용하고 있었다. 그러나, RV770 패밀리에서는, GPU로 일반적인 크로스바 스윗치로 되돌렸다. 이것은, 전력 소비등을 고려한 다음의 설계 변경으로, 메모리콘트로라를 분산화하는 것으로, 크로스바 설계를 용이하게 했다고 한다.

 또, texture 캐쉬를 변경. 종래는, SIMD Core간에 공유하는 단일의 L1texture 캐쉬(32 KB)와 단일의 L2texture 캐쉬(256 KB)의 2 계층(이었)였다. 아래의 흰 슬라이드가 R600의 texture 캐쉬와 texture 유닛의 해설이다.

 RV770에서는, 이것을, 각 SIMD Core에 전속의 L1texture 캐쉬군(10개)과 4개의 메모리콘트로라에 직결하는 L2texture 캐쉬군(4개)으로 바꾸었다. 그리고, L1와 L2의 사이를 전용의 크로스바로 묶었다. 아래의 검은 슬라이드가 RV770의 texture 캐쉬와 texture 유닛의 해설이다. 이 개량에 의해서, 극적으로 캐쉬 페치 효율이 올랐다고 한다.

 실은, 이 캐쉬 아키텍쳐는 NVIDIA의 G80/GT200와 매우 잘 비슷하다. 짓궂은 견해를 하면, 라이벌의 아키텍쳐를 잘 도입했다고 말할 수 있다. 그러나, 데이터의 국소성을 잘 살리는 아키텍쳐를 생각하면, 결국은 같은 결론에 도착할지도 모른다. 결과적으로, RV770와 GT200의 메모리 회전과 캐쉬의 구조는, 매우 닮은 것이 되었다.

 texture 캐쉬의 재편성의 결과, 바스트라픽크의90%가 메인의 버스로부터 삭감되었기 때문에, 링 버스는 의미를 잃어, RV770에서는 제거해졌다. texture 캐쉬의 개량과 링 버스의 폐지는, 밀접하게 결합되고 있다.


● 메모리콘트로라 회전을 개량해 GDDR5를 서포트

 다이의 작은 RV770에서는, DRAM 인터페이스의 패드 면적이 적기 때문에, 메모리인타페이스의 폭이 한정된다. AMD는 256 bits 인터페이스를 채용했다. 이것은, 종래라면 미드레인지를 위한 GPU의 인터페이스폭으로, 충분한 메모리 대역을 확보 가능한 있어. 거기서, AMD는, JEDEC로 규격화가 행해진 GDDR5를 채용했다.

 ATI Radeon HD 4870(RV770)에서는, 전송 레이트 3.6 Gtps의 GDDR5에 의해서 115 GB/sec의 메모리 대역을 실현하고 있다. 다만, GDDR5에서는 메모리프리펫치폭이 넓기 때문에, 종래의 메모리체넬폭으로 액세스 하면, 메모리의 액세스 입도가 GDDR3 세대의 2배가 되어 버린다. 그러자(면), 필요한 데이터 입도 이상의 메모리를 한 번에 읽고 쓰기하게 되어, 메모리 대역이 소용 없게 되어 버린다. NVIDIA의 GT200가 GDDR3까지 밖에 서포트하지 않는 것은 이 때문에다.


 R600는 64 bits 메모리체넬의 DRAM 콘트롤러(이었)였다. 64 bits폭의 경우는, GDDR4에서는 메모리의 액세스 입도가 커져 버리기 위해, R600에서는 GDDR3가 최적(이었)였다. AMD는 RV770에서는 GDDR5로의 메모리아크세스 입도를 종래와 같게 유지하기 위해서, DRAM 콘트롤러를 32 bits폭으로 하고 있다고 한다.

 RV770 아키텍쳐를 개관 한다고 보여 오는 것은, 현재의 프로세서 아키텍쳐가 직면하는 트레이드 오프다. 효율성인가 유연성인가. AMD의 어프로치는, 그 중으로, 효율성에 가장 중심을 둔 아키텍쳐다. 지극히 높은 퍼포먼스/소비 전력&다이 면적은, 그 증명이다. 그러나, 그 한편, AMD는 범용 컴퓨팅에의 최적화도 진행하고 있다. AMD가 프로그래밍의 체제를 제대로 구축할 수 있으면, RV770의 고효율은, 범용 컴퓨팅에 있어서도 매력적인 포인트가 될 수 있다.



반응형

댓글