아키텍처를 근본부터 다시 본 신세대 GPU

NVIDIA는 차세대 GPU 아키텍처 「Fermi(페르미)」의 개요를 분명히 했다. GPU의 내부 아키텍처를 일신 GPU 컴퓨팅으로의 효율과 프로그래머블 성질을 크게 높였다. 또 연산 프로세서인 「CUDA core(종래의 Streaming Processor에 상당)」의 수를 GT200(GeForce GTX 280)계의 240개로부터 512개로 배증시켰다. 배화라고 하는 점에서는 AMD(ATI)의 RV770(Radeon HD 4800)계로부터 Cypress(Radeon HD 5870)계로의 변화와 같지만 그 내용은 꽤 차이가 난다.


ATI는 연산 프로세서 수를 2배로 하여 성능을 2배로 했으나 프로세서 코어나 메모리 계층, 데이터 플로우 등의 “기본 구조”에는 그만큼 손을 대지 않았다. 그에 비해 NVIDIA는 프로세서 클러스터의 구조를 일신 메모리 계층과 데이터 플로우를 크게 변경했다. 양 회사의 어프로치는 꽤 달라서 아키텍처 상의 비약이 큰 것이 Fermi다.


NVIDIA는 GPU 아키텍처에 세대마다 물리학자의 이름을 붙이고 있다. 초대 G80와 그 발전계인 GT200는 Tesla(테스라)계에 속하고 제 2세대가 Fermi다. 즉 NVIDIA는 이번에 아키텍처의 메이저 체인지를 행한다.

Fermi의 개요


Fermi 아키텍처의 GPU 컴퓨팅에 대한 주요한 기술 포인트는 아래와 같다.

프로세서 코어를 묶은 프로세서 클러스터 「Streaming Multiprocessor(SM)」의 개혁
·프로세서 코어 「CUDA Core」의 수를 SM당 8개로부터 32개로
·배정도 부동 소수점 연산의 성능을 단정도의 1/2로 확장(종래는1/8)
·명령 유닛(WARP스케쥴러/디스팻쳐)를 두 개로
·SM 내부의 쓰기 가능 메모리를 16KB로부터 64KB로 확장하여 컨피규러블로

메모리 서브 시스템과 메모리 계층의 확장
·L1/L2 캐쉬 계층을 읽기 전용으로부터 쓰기 가능으로
·on-chip도 포함하여 모든 메모리에서 ECC를 지원
·Atomic(불가분)메모리 오퍼레이션의 성능 향상

「Parallel Thread Execution(PTX)」명령 셋 아키텍처 확장
·모든 메모리 어드레스 공간을 통합(C++의 모든 지원을 위해)
·IEEE 754-2008 표준적으로 단정도/배정도도 대응
·프리디케이션을 모든 명령에 확장
·OpenCL과 DirectCompute로의 최적화
·64-bit 메모리 어드레싱(구현은 40-bit로지칼/피지컬)

「GigaThread」엔진으로의 스레드 제어를 확장
·어플리케이션 context switching를10배 고속으로
·복수의 커널 프로그램을 동시에 실행 가능
·듀얼 오버랩 메모리 트랜스퍼 엔진



범용 컴퓨팅을 위해서 다방면에 걸친 확장

Fermi에서의 아키텍처 확장은 넓은 범위에 걸쳐 있어 대부분의 부분에서 아키텍처가 변한다. 현재 밝혀지고 있는 것은 GPU 컴퓨팅 부분이며 그래픽스 기능 부분의 확장은 위의 리스트에 들어가 있지 않다. 예를 들면 래스터 라이저나 텟세레이타, texture 유닛, ROP이라고 하는 그래픽스 전용 유닛의 확장은 여기에서는 들지 않았다. 그것은 후일 별도로 리포트 한다.

Fermi와 G80/GT200의 비교


GPU 컴퓨팅으로의 Fermi아키텍처는 예상되고 있던 확장이 거의 실현된 것이 되고 있다. 후술 하지만 종래의 Tesla 아키텍처에서는 아직 프로세서 구조가 복잡했던 부분이 심플하고 플랫한 구조로 바뀌었다. GPU 컴퓨팅의 애플리케이션의 일부에서 필요하게 되는 배정도 연산 퍼포먼스는 단정도의 50%라고 크게 성장했다. 범용 컴퓨터로서 보다 프로그램 하기 쉽고, 보다 범용적인 어플리케이션을 쓰기 쉬운 구조가 되었다.


메모리 계층의 확장도 눈에 띈다. 현재의 프로세서는 내부의 컴퓨팅 퍼포먼스는 성장하지만 메모리 대역은 거기에 추종 할 수 없다. 그 때문에 성능을 올리기 위해서는 프로세서 내부의 메모리를 활용하여 데이터의 국소성을 살릴 수 밖에 없다. Fermi에서는 메모리 계층을 개량하여 쓰기 가능 L1/L2 캐쉬를 마련하는 것으로 그러한 상황에 대응했다. 또 데이터 센터 등의 요구에 응하기 위해 모든 메모리 계층에서 ECC를 더했다. 보다 퍼포먼스를 꺼내기 쉬운 메모리 구조와 고도의 요구에 견딜 수 있는 신뢰성을 더한 것이 된다.


NVIDIA독자적인 중간 언어형의 명령 셋 PTX는 OpenCL이나 DirectCompute, C++이라고 하는 새로운 언어 지원을 향해서 확장되었다. PTX는 드라이버 런타임으로 GPU 네이티브 명령으로 트랜스 레이트 된다. PTX 2.0에서는 새롭게 책정된 부동 소수점 연산 표준 IEEE 754-2008을 지원하여 일본 재래 주산의 정도가 새로운 업계 표준에 합쳐졌다. 보다 많은 언어로의 대응이나 새로운 표준으로의 대응이 이루어졌다. 이것은 CUDA 플랫폼에서의 언어 지원을 한층 더 확대하는 자유도가 더한 것을 의미하고 있다.


GPU 전체의 효율을 높이는 궁리도 더해졌다. NVIDIA GPU의 약점이었던 “무거운”컨텍스트 스위치는 현격하게 고속화되었다. 또 같은 콘텍스트 안의 의존성이 없는 커넬 프로그램을 병렬로 실행 할 수 있게 되었다. CPU의 멀티 스레딩과 어느 정도 비슷한 고효율화를 도모할 수 있게 되었다.


현재 단계에서는 이러한 확장이 그래픽스 성능에 얼마나 영향을 미치는지 모른다. 그러나 적어도 범용 컴퓨팅 측면에서는 NVIDIA의 Fermi는 큰 확장을 완수하여 성능을 업 시킬 것이다.

 

 

출처 : http://pc.watch.impress.co.jp/docs/column/kaigai/20091001_318463.html

신고
by 흥배 2010.01.16 15:15
| 1 |

티스토리 툴바