AMD 그래픽카드 아키텍처의 분수령-GCN

 

GPU를 다양한 용도로 쓰자는 말은 좀 있다 하지요. 그래픽카드는 또 다른 이름-3D 가속 카드-을 가지고 있습니다. 당시 그래픽카드는 3D 연산 가속에 주로 쓰였으며, 지금 그래픽카드의 주요 용도 역시 3D 렌더링으로 예전과 크게 다르지 않습니다. 하지만 지금 그 뜻과 렌더링의 수준은 완전히 다릅니다.

 

1.jpg

 

GPU 렌더링의 변화

 

초기 렌더링 과정은 매우 간단했습니다. 지오메트리와 빛의 효과를 그려내는게 전부였고 당시 그래픽카드들의 성능 지표는 T&L(Transform & Lighting) 유닛이 몇개가 있냐는 것이었습니다. 이 시기는 대략 10년 전이 되겠네요. 이후의 그래픽카드 구조는 갈수록 복잡해졌습니다. 대규모의 폴리곤을 생성하면서 버텍스 좌표와 픽셀 필레이트가 필요해졌고, 버텍스 쉐이더와 픽셀 쉐이더는 그래픽카드의 주요 유닛이됐습니다. 연산 처리 과정은 대략 위 그림에 나온 것과 비슷합니다. 지금으로부터 5년 전쯤의 다이렉트 X 9 그래픽카드가 다 이렇다고 보면 됩니다.

 

그 다음에는 더 복잡해졌습니다. 마이크로소프트의 다이렉트 X 10은 버텍스 쉐이더와 픽셀 쉐이더 유닛의 구분을 없애버리고 통합 쉐이더라는 개념을 도입했는데, 이 통합 쉐이더는 스트림 프로세서(Stream Processor)라고도 부릅니다. 현재 우리가 보는 그래픽카드는 스트림 프로세서를 기본 구조로 구성되며, AMD와 NVIDIA의 설계 방식과 구형 방법에 차이가 있을 뿐입니다.

 

NVIDIA는 G80부터 MIMD(Multiple Instruction, Multiple Data)의 1D 스칼라 연산 체계를 도입해 아키텍처의 변화가 컸습니다. 반면 AMD의 첫번째 다이렉트 X 10 그래픽카드는 라데온 HD 2900 시리즈부터 줄곧 4D+1D 아키텍처를 개량해서 썼으며, 이를 VLIW5라고 부릅니다. 이 방식의 장점은 회로 설계가 그리 복잡하지 않으며 스트림 프로세서를 쉽게 확장시킬 수 있다는 것입니다. 이 방법은 라데온 HD 6800 시리즈까지 이어져 내려오게 됩니다.

 

라데온 HD 6900에서 AMD는 VLIW 5 아키텍처를 개선해 VLIW 4 아키텍처를 만들었습니다. 4D+1D의 1D 슈퍼 스칼라 유닛을 없애고 나머지 4D 벡터 유닛의 성능을 개선한 것입니다. 따라서 라데온 HD 6900 시리즈의 스트림 프로세서 총 수는 줄어들었지만 성능은 올랐습니다. VLIW 4에 대한 자세한 설명은 예전에 올라온 글을 보세요.

 

VLIW 아키텍처는 그래픽 연산에는 상당히 괜찮은 방법입니다. 그러나 스트림 프로세서의 수가 늘어날수록 효율이 떨어지는 문제가 심각해집니다. 길이가 긴 명령어는 스케줄러에서 관리해야 하기 때문에 실제 연산에서 최적의 조합을 항상 이끌어낸다고 말할 수 없습니다. 지금의 다이렉트 X 게임 그래픽이 질적인 향상을 이뤄내서(레이 트레이싱 같은거) 그래픽카드의 단순 3D 렌더링 성능이 부족해지고 GPU 통용 계산 성능도 갈수록 높아지고 있습니다. AMD의 VLIW 아키텍처는 이론적으로는 경쟁 제품보다 높은 성능을 내야 하지만 실제 성능은 경쟁 제품보다 많이 떨어지는 것이 사실입니다.

 

이런 배경 때문에 AMD는 차세대 라데온 HD 7000 시리즈 아키텍처, 코드네임 Gprahic Core Next(GCN)을 발표했습니다. GCN은 지금까지 계속 써온 SIMD(Sigle Instruction, Multiple Data)의 VLIW 시스템을 더 이상 쓰지 않은 새로운 구조의 혁명적인 아키텍처입니다. 전통적인 3D 연산 외에 GPU를 통용 계산에서 활용할 수 있도록 한 아키텍처로 AMD 최초로 3D 렌더링과 GPU 계산을 모두 잡겠다는 사상으로 도입된 설계입니다.

 

2.jpg

 

GCN 아키텍처를 쓴 라데온 HD 7970.

 

그리고 라데온 HD 7970이 발표됐습니다. 성능, 기술, 전력 사용량은 이제 더 이상 비밀이 아닙니다. 하지만 아직까진 실물을 확보하지 못해서 이 자리에선 GCN 아키텍처의 특징만 소개하겠습니다. AMD가 GCN 아키텍처에서 도대체 뭘 했는지를 보시죠.

 

 

VLIW5, VLIW4, non-VLIW의 진화

 

AMD와 NVIDIA의 GPU 아키텍처를 분석한 글을 보면, 두 회사가 서로 다른 방식읨 아키텍처를 썼다는 이야기가 나옵니다. 세부 사항은 여기서 설명하진 않겠습니다. NVIDIA가 다이렉트 X 10의 통합 쉐이더 아키텍처를 1D 스칼라 유닛의 MIMD 아키텍처로 바꾸고 AMD는 라데온 HD 2900의 R600 아키텍처부터 4D 벡터 SIMD 아키텍처를 계속 써왔다는 것만 알고 시작합시다.

 

스트림 프로세서의 수가 갈수록 늘어났지만 현재 AMD 그래픽카드의 아키텍처는 그리 큰 변화가 없습니다. 다이렉트 X 9와 그 이전에 썼던 그래픽카드들은 버넥스 쉐이더와 픽셀 쉐이더의 2가지로 렌더링 작업을 나눕니다. 각각 픽셀 위치를 정하는 XYZW와 색상을 정하는 RGBA를 필요로 하니 모두 4번씩 연산을 해야 합니다. 이것이 바로 그래픽의 4D 벡터 연산입니다. 다이렉트 X 10 이전의 그래픽카드들은 모두 픽셀 쉐이더 유닛과 버텍스 쉐이더 유닛의 수를 늘려오며 서로 이를 비교하여 그래픽카드의 연산 능력-폴리곤 생성 능력 등을 평가했습니다.

 

다이렉트 X 10 시대에 와서 마이크로포트의 다이렉트 X API는 버텍스 쉐이더와 픽셀 쉐이더로 구분하는 방법을 포기하고, 통합 쉐이더 프로세서(Unitied Shader Processor) 하나로 합쳤습니다. 그래픽 렌더링 작업에서 스칼라 연산이 차지하는 비중이 갈수록 늘어나고 단순 벡터 연산의 비중은 점점 줄어들자, NVIDIA는 G80에서 1D 스칼라 프로세서를 썼습니다. 하지만 AMD는 4D 벡터 아키텍처를 포기하지 않고 이를 기본으로 1개의 스칼라 연산 유닛을 더했는데 AMD는 이를 슈퍼스칼라 유닛이라고 부릅니다. 이렇게 4D+1D의 벡터-스칼라 혼합 아키텍처를 형성한 것이 바로 VLIW 5 아키텍처의 유래입니다.

 

3.jpg

 

AMD 그래픽카드의 주류는 여전히 VLIW5 구조입니다.

 

VLIW는 Very Long Instruction Word의 줄임말입니다. 계산 명령을 적당하게 조합해 4D+D 아키텍처의 긴 명령어를 처리할 수 있습니다. 이론적으로 1개의 통합 쉐이더가 한번에 5번의 연산까지 가능하지만 5개의 ALU는 1개의 명령어 발사 포트를 쓰기 때문에 회로 구성이 간단하고 전력 사용량과 발열을 쉽게 줄일 수 있습니다. 단점은 명령어 조합에 지나치게 의존한다는 것. 명령어 조합이 최적 구성이 아니라면 연산 효율이 심하게 떨어집니다.

 

4.jpg

 

VLIW 5 아키텍처는 4개의 벡터 유닛에 1개의 슈퍼 스칼라 유닛을 더해 구성합니다. 명령어를 적당히 조합해 실행하는건 필수.

 

비록 VLIW 5 아키텍처 회로 구성이 상대적으로 간단하고, 그 수를 쉽게 늘릴 수 있다는 장점이 있지만 제조 공정과 트랜지스터의 규모에 제약을 많이 받게 됩니다. 라데온 HD 5870의 1600개 스트림 프로세서 유닛을 또 두배로 늘려서 차세대 그래픽카드를 만드는건 불가능한 것은 아니지만 스트림 프로세서의 수가 더 늘어나면 효율 문제가 심각해지니 AMD는 반드시 이 점을 바꿔야만 했습니다.

 

라데온 HD 6900 아키텍처에서 AMD는 VLIW 5 아키텍처를 개선해 4D+1D 구성의 1D를 빼고 VLIW5를 VLIW4로 만들었습니다. 그래서 그래픽카드 스트림 프로세서 유닛은 더 이상 5의 배수가 아니라 4의 배수로 늘어나게 됩니다.

 

5.jpg

 

라데온 HD 6900 시리즈부터 VLIW4 아키텍처를 쓰기 시작합니다. 각각 ALU 유닛의 기능도 개선했습니다.

 

정확히 말해서, VLIW 4 아키텍처의 4개 ALU는 그 전까지 쓰이던 4D 유닛과 다릅니다. 4개의 1D 유닛으로 기능이 더 강해지면서 원래 VLIW 5 아키텍처의 1D 슈퍼 스칼라 유닛만 처리할 수 있었던 특수 조작들을 모두 감당할 수 있는 유닛입니다. 따라서 스트림 프로세서 수의 수는 비록 줄었지만 실제 성능은 더욱 강해졌습니다.

 

AMD는 VLIW 5 아키텍처의 연산 효율이 70% 정도밖에 안되지만 VLIW 4는 80%까지 높였다고 설명합니다. 같은 크기의 코어에서 10%의 성능 향상을 이끌어내고, 명령어 스케줄러와 레지스터 관리를 줄여 로직 회로의 이용율을 개선했습니다.

 

VLIW 4는 VLIW 5에 작은 변화를 더한 것에 그쳤지만 그 댓가는 상당히 비쌉니다. 유닛 구성이 5개에서 4개로 줄어들었다는 것은 각 스트림 프로세서가 명령어 발사, 분기 예측, 레지스터 유닛 등을 모두 1/4씩 늘려야 한다는 이야기가 됩니다. 라데온 HD 6970을 예로 들어보면 트랜지스터 수와 코어 크기는 라데온 HD 5870의 21억 5천만개에 334제곱 밀리미터에서 26억 4천만개에 389제곱 밀리미터로 늘었으며, TDP도 188W에서 250W로 늘어 제조 원가가 상당히 비싸졌습니다.

 

VLIW 4 아키텍처는 라데온 HD 6900 시리즈 그래픽카드에만 쓰이고 중저가형 모델로 확산되진 않았습니다. 그 이유는 라데온 그래픽카드의 전력 사용량과 발열이 동급의 NVIDIA 페르미보다 우수하다는 점을 내세우면서 괜찮은 반응을 이끌어내고 있는데, 갑작스럽게 새 그래픽카드를 도입할 필요가 없기 때문입니다.

 

VLIW 4 아키텍처는 보급되지 않고 일종의 과도기적인 제품에 마무를 것입니다. AMD의 차세대 그래픽카드 아키텍처인 GCN이 이제 출시됐습니다. VLIW 5/4의 효율이 70~80%인데 비해 GCN은 VLIW 시스템을 버리면서 효율을 100%까지 끌어올리고, MIMD 방식을 도입한 아키텍처입니다.

 

 

GCN: SIMD인가 MIMD인가, 벡터인가 스칼라인가?

 

GCN 아키텍처가 처음으로 발표됐을때 대부분의 사람들은 AMD가 이미 SIMD의 VLIW 5/4 아키텍처를 완전히 포기하고, MIMD의 스칼라 아키텍처로 건너갈 것이라 생각했습니다. NVIDIA가 G80을 설계했을때와 마찬가지로 큰 혁명이 일어날 것이라 기대한 것이지요. 하지만 더 많은 소식이 발표될수록 GCN 아키텍처는 대혁명이 아니라 그냥 변화 정도에 머무른 모습이 되가고 있습니다.

 

별다른 자료라 할 것이 없으니 상식으로 추리해 봅시다. 라데온 HD 7970은 45억개의 트랜지스터가 있고 코어 크기는 380제곱밀리미터입니다. 스트림 프로세서는 2048개, 제조 공정은 28나노미터입니다. 라데온 HD 6970의 26.4억개 트랜지스터, 코어 크가 389제곱밀리미터, 스트림 프로세서 1536개, 40나노 공정과 비교할 수 있겠네요.

 

4D 아키텍처의 라데온 HD 6970은 1536/4=384개의 통합 쉐이더가 있는 셈입니다. 라데온 HD 7970의 2048개 스트림 프로세서가 1D 스칼라 통합 쉐이더라면 라데온 HD 7970의 코어 크기를 따져봤을때, 2배 정도 트랜지스터 수가 늘어났다면 스펙은 4.3배가 늘어나게 됩니다. 제조 공정의 발전으로 더 많은 수의 트랜지스터가 들어가는 것도 이상한 것은 아니지요. 지금까지 AMD가 라데온 HD 3850 이후 스트림 프로세서 수의 변화를 보면 320(5D)-1600(5D)-1536(4D)의 순으로 1.5배 늘어나는데 그쳤습니다.

 

그럼 AMD는 어떻게 말하고 있을까요? BSN이 AMD 관계자의 말을 보도한데 따르면 GCN 아키텍처는 SIMD 어레이 기반의 MIMD 아키텍처라고 합니다(Southern Islands is a MIMD architecture with a SIMD array.) 이 말은 GCN이 사실 MIMD 아키텍처고 지금까지 써온 SIMD 아키텍처와 연관됐으며 완전히 새로운 관계는 아니라는 이야기가 됩니다.

 

AMD는 GCN 아키텍처를 Non-VLIW ISA With Scalar+Vector Unit, 벡터와 스칼라 유닛을 쓰는 VLIW가 아닌 명령어 아키텍처라고 정의합니다.  지금까지와의 VLIW 아키텍처와는 다르며 그래픽카드 유닛은 SIMD 어레이가 아니라 컴퓨트 유닛이라는 새로운 구성을 씁니다.

 

6.jpg

 

GCN 아키텍처의 서던 아일랜드, 라데온 HD 7970

 

위 그림에서 GCN은 CU-컴퓨트 유닛(NVIDIA 페르미 아키텍처의 스트리밍 멀티프로세서 유닛에 해당)을 가리킵니다. 각각의 CU는 64개의 ALU 유닛으로 구분되며, 2048개의 ALU가 라데온 HD 7970의 연산 유닛이 됩니다.

 

 

컴퓨트 유닛: 벡터와 스칼라 연산의 혼합체

 

기본 구성이 CU라고 했는데 그렇다면 CU는 어떻게 설계한 것일까요?

 

7.jpg

 

1개의 컴퓨트 유닛에서 상응하는 캐시, 분기 예측, 컨트롤러 부분을 빼면, 핵심 연산 유닛은 빨간색 스칼라와 벡터 유닛이 됩니다.

 

8.jpg

 

벡터 유닛은 실제로 4개의 SIMD 어레이며 이를 병렬 실행하는 것이 GCN의 MIMD 아키텍처입니다.

 

GCN의 기초는 여전히 SIMD 구조이며, 각 SIMD 유닛은 매 클럭 사이클에 여전히 64개의 FMAD(곱셈/뻴셈) 벡터 연산을 실행합니다. 하지만 4개의 SIMD 어레이가 동기화해 CU 유닛이 1 사이클마다 4스레드를 실행하여 MIMD 시스템의 특징을 갖췄습니다. 주의해야 할 것은 GCN 아키텍처의 SIMD 어레이 구성은 CU에서 벡터 유닛 부분만을 가리킨다는 것입니다. 라데온 HD 6970의 SIMD 어레이가 GCN의 CU가 되는 것이니, 두 SIMD 의 의미를 잘 알아둬야 할 것입니다.

 

9.png

 

CU 유닛을 구성하는 4개의 SIMD 어레이는 모두 16개 백터 SIMD 유닛으로 구성됩니다.

 

아난드테크의 그림입니다. 이 CU 유닛의 구체적인 구성을 보면 각 SIMD 어레이가 실제로는 16개 ALU 벡터 유닛으로 구성됐음을 알 수 있습니다. 이렇게 1개의 CU 유닛은 64개의 ALU 유닛에 해당하며, 32개의 CU가 GCN 아키텍처에서 2048개의 컴퓨트 유닛이 됩니다.

 

10.jpg

 

AMD의 또 다른 문서를 보면 CU의 자세한 구조를 알 수 있습니다.

 

각각의 CU 혹은 1개의 스칼라 ALU는 독립된 스칼라 디코더를 가지고 있지만 레지스터의 크기는 8KB 정도입니다. 거기에 ALU는 정수 계산만 지원합니다. 이것은 GCN 아키텍처의 변화가 그리 크지 않다는 이야기가 됩니다.

 

11.jpg

 

VLIW 4 아키텍처와 4 SIMD non-VLIW 아키텍처의 비교.

 

VLIW 4 아키텍처와 non-VLIW 아키텍처의 제일 큰 차이점은 계산 방식입니다. VLIW 4는 비록 1 사이클에 4번의 조작(ops)을 할 수 있지만 실제로는 1개의 명령에 해당하며 명령어의 구성에 큰 영향을 받아, 강한 스케줄 관리 기능을 필요로 합니다. non-VLIW 아키텍처는 비록 한번에 1개의 ALU 조작만 실행하지만 4개의 SIMD는 여전히 4스레드로 작동하며, 한번의 조작은 모두 occupancy 식이라 이용율이 100%에 달합니다. AMD는 VLIW 4 아키텍처가 특수하고, 어렵고, 복잡하고, 비교적 한정된 용도에서 쓸 수 있는데 비해, non-VLIW 아키텍처는 간단하고 표준적이라고 설명했습니다.

 

 

캐시 설계: 통용 계산을 위한 진보

 

여기서는 GCN 아키텍처의 캐시 설계만 따로 보겠습니다. AMD 그래픽카드 아키텍처 분석을 보면 공식 PDF 파일에 캐시 설계 부분은 매우 적은 분량으로 설개됐기 때문입니다. 반면 NVIDIA 페르미 아키텍처의 공식 PDF를 보면 상당히 많은 지면을 할애해서 페르미 아키텍처의 캐시 설계를 설명했습니다. 그래픽 계산에 미치는 영향은 크지 않다고 해도 통용 계산에 있어 캐시는 상당히 중요한 요소입니다.

 

12.jpg

 

GCN 아키텍처는 CPU와 비슷한 멀티 레벨 캐시를 썼습니다. L3까지 있는건 아니지만.

 

CU 유닛은 벡터 ALU 유닛과 스칼라 ALU 유닛이 모두 있어 GCN의 캐시 구조는 CPU 캐시보다 더 복잡합니다. 각각의 벡터 유닛은 16KB 데이터 캐시를 가지고 있고 4개의 CU 유닛은 16KB의 스칼라 L1 데이터 캐시와 32KB L1 명령어 캐시가 있습니다. 모든 L1 캐시는 모두 읽기/쓰기가 가능한데, 이전까지는 읽기 조작만 가능했습니다.

 

L2 캐시는 64비트 인터페이스로 L1과 연결됩니다. 저장 관리 채널의 수에 따라 L2 캐시의 크기는 64~128KB가 됩니다. 라데온 HD 7970은 6개의 64비트 GDDR5 컨트롤러가 있어 L2 캐시의 크기는 총 384~768KB가 됩니다. 거기에 모든 L2 캐시에 저장된 데이터는 동기화되기 때문에 모든 CU가 같은 데이터를 쓸 수 있습니다.

 

13.jpg

 

GCN의 캐시 설계는 데이터 동기화와 공유에 최적화됐습니다.

 

GCN 아키텍처의 캐시 설계에서 AMD는 데이터 공유와 동기화를 매우 중요하게 여겼습니다. 각각의 CU에 있는 65KB LDS 로컬 캐시는 모두 L2 캐시와 직접 연결되며 L2 캐시는 비록 MC 컨트롤러와 연결되지만 모든 데이터는 CU 유닛이 공유하고 CPU 메모리 데이터와 동기화를 지원, CPU와 GPU의 데이터 교환 능력을 높였습니다. 이것은 CPU+GPU 구성의 이종 혼합 연산에서 큰 도움이 됩니다.

 

14.jpg

 

GCN은 x86 가상 메모리를 지원합니다.

 

GCN 설계에서 또 다른 중요한 점은 x86 가상 메모리 기능을 지원한다는 것입니다. GPU의 비디오 메모리는 x86 프로세서의 메모리를 바로 식별할 수 있습니다. GDDR5의 대역폭이 몇백GB/s에 달하며 라데온 HD 7970은 264GB/s가 됩니다. 이것은 쿼드채널 DDR3의 최고 대역폭보다도 높은 것입니다.

 

이 기능은 GPU와 CPU의 데이터 공유를 위한 고속 채널을 열어주게 됩니다. 이 기능을 쓰면 통용 계산 뿐만 아니라 3D 게임에서도 큰 도움이 됩니다. 이 방면에서 좋은 효과를 낼 수 있는 사례라면 초대용량 텍스처 데이터의 처리가 있습니다. id의 존 카멕은 RAGE 게임의 내용은 그리 많지 않지만 게임 용량이 20GB 이상으로 올라갔는데, 이것은 ID Tech5 엔진의 메가텍스처 기술 때문이며 초대용량 텍스처로 게임 화질을 높였지만 이것은 하드웨어에 상당한 부담으로 돌아왔다고 설명했습니다.

 

15.jpg

 

x86 가상 메모리 기술이 있으면 레이지 같은 초대용량 텍스처를 쓰는 게임에 큰 도움이 됩니다.

 

카멕느님은 자신의 소프트웨어 기술로 이 문제를 해결했지만 다른 회사들까지 이런 기술을 쓰란 법은 없습니다. 현재 x86 가상 메모리 기술은 CPU가 직접 GPU 중의 데이터를 액세스 할 수 있게 만들어 속도가 느린 시스템 메모리에 데이터를 읽고 쓰는 과정을 줄여 초대용량 텍스처가 더 이상 성능에 영향을 주지 않게 해줍니다.

 

 

그래픽은 계산, 계산은 그래픽

 

GCN 아키텍처를 발표할 때 AMD는 그래픽은 계산, 계산은 그래픽(Graphic is Compute, Compute is Graphic)이라는 새 목표를 제시하면서 GPU의 그래픽 성능을 높이는 것과 동시에 GPU가 통용 계산에서 큰 힘을 발휘하도록 보증했습니다. 이것은 지금까지 AMD의 모습과는 많이 다릅니다.

 

비록 AMD 그래픽카드의 전신인 ATI GPU가 통용 계산 영역에 일찍 진출했다고는 해도 줄곧 조용한 상태를 유지한 반면, 통용 계산의 실제 응용이나 홍보 등은 NVIDIA의 CUDA가 더 앞서 나가고 있습니다. ATI의 인수 후에 CPU 사업에 치중해온 AMD는 GPU 통용 계산에 그리 큰 흥미를 보이지 않았습니다. NVIDIA는 GPU의 통용 계산을 주력으로 내세우면서 얼마 전의 GTC 아시아 2011에서는 GPU의 통용 계산을 주요 내용으로 내세웠습니다.

 

개인적으로 AMD의 변화는 APU 때문인 것으로 보입니다. GCN은 외장 그래픽카드에만 쓰이는 것이 아니라 앞으로 APU에도 쓰일 것입니다. GPU의 통용 계산 성능을 높이는 것은 GPU와 CPU 사이에 상호 소통 성능을 강화해 APU에서 GPU가 진정한 프로세서로 작동하게 될 기반을 마련하기 위한 것입니다. 단순 디스플레이 표시나 게임 용도가 아니라요. 원래 GPU의 연산 성능은 CPU보다 훨씬 높지만 통용성과 태스크 분배 등은 CPU만 못합니다. 만약 AMD의 목표가 실현된다면 GPU를 써서 AMD CPU의 단점을 보충할 수 있을 것이고, APU의 헤테로지니어스 고성능 PC 구성은 GPU+CPU보다 더 간단한 구성을 만들 수 있게 될 것입니다.

 

16.jpg

 

그래픽 렌더링 성능 외에도 GCN 아키텍처는 GPU 계산에서 큰 힘을 발휘합니다.

 

AMD는 GCN 아키텍처에서 성능이 더 강력한 MIMD 시스템을 선택했습니다. 캐시 설계를 개선해 CPU와 GPU의 통신을 더 쉽게 했고 하드웨어를 개선해 더 강한 GPU 성능을 이끌어냈지만 이것은 통용 계산에서 일부분일 뿐입니다. 소프트웨어 플랫홈의 지원이 더 중요하지요.

 

17.jpg

 

퓨전 패밀리의 일부분으로, GCN 아키텍처는 C/C++ 등 고급 프로그래밍 언어를 지원하며 프로그래머블한 특성이 있습니다.

 

GPU 계산의 성공 여부는 개발자가 받아들이느냐에 달려 있습니다. 이것은 GPU가 상당한 수준의 프로그래머블 특성을 가지고 있어야 하고 메인스트림 프로그래밍 언어도 지원해야 합니다. GCN 아키텍처는 C, C++와 다른 고급 프로그래밍 언어를 지원하는데 이 점은 페르미와 같습니다.

 

고급 언어의 지원 외에도 GCN은 GPU와 CPU 사이에 통합 가상 메모리 어드레스를 도입해서 GPU가 시스템 메모리의 데이터를 읽어내고 메모리 페이징 파일을 지울 수 있습니다. CPU와 GPU 사이에 메모리 데이터가 동기화되면 GPU의 프로그래머블이 더욱 편해집니다.

 

다른 장점은 연산의 안정성과 에러 교정 능력입니다. GCN 이전의 아키텍처는 오직 EDC(Error Detection & Correction) 에러 교정만 지원했지만 GCN은 처음으로 ECC 에러 교정 기능을 넣었습니다. 비디오 메모리와 시스템 메모리 사이에 데이터를 교환하는 과정에서 ECC 에러 교정 기능이 데이터의 완정성을 보장합니다.

 

FP64 더블 프리시전 연산은 GPU 통용 계산에서 중요한 의미가 있습니다. 이를 지원하느냐 지원하지 않느냐에 따라 그래픽카드의 통용 계산 성능이 크게 달라집니다. 하지만 FP64의 연산은 높은 스펙을 요구하기 때문에 피크 성능은 FP32보다 많이 낮습니다. NVIDIA는 GT200 아키텍처부터 FP64를 지원했지만 그 효율은 FP32의 1/8 수준이었습니다. AMD는 라데온 HD 5870부터 FP64를 지원했지만 피크 성능은 FP32의 1/5정도였습니다. 라데온 HD 6800 시리즈는 아예 FP64가 없었고 라데온 HD 6900 시리즈는 FP32의 1/4였습니다. GCN도 FP64를 계속 지원하는데 자세한 효율은 모르지만 1/4 정도는 나올 것입니다.

 

이건 모두 그래픽카드의 자료고, 만약 전문 연산 카드-테슬라라던가-로 가면 이야기가 달라집니다. 페르미 아키텍처의 테슬라 C2050은 FP65 성능이 FP32의 1/2로 올랐습니다. 만약 GCN이 통용 계산 능력을 굳게 갖춘다면 FP64의 성능을 높였을 수도 있습니다.

 

이것은 GCN 아키텍처가 통용 계산에서 어떤 부분이 개선됐는지를 보여준 것이고, 더 많은 개선점은 AMD의 자세한 자료를 기다려야 할 것입니다. 계산 능력의 강화와 동시에 AMD는 GCN의 그래픽 성능 개선도 잊지 않았습니다. 어쨌건 GCN 아키텍처가 활약할 곳이니까요.

 

18.jpg

 

3D 성능은 GCN 아키텍처의 중요 내용입니다.

 

PCI-E 3.0, 다이렉트 X 11.1 같은 표준을 빼고, GCN 아키텍처는 3D 연산에도 상당한 개선이 있었습니다. Partially Resident Textures를 추가했는데 이것은 앞에서 말한 메가텍스처를 처리하는 기술 기초가 됩니다. 존 카멕은 이를 소프트웨어적인 방법으로 처리했지만 AMD의 PRT는 하드웨어적으로 처리합니다.

 

19.jpg

 

PRT는 32TB의 텍스처 데이터를 처리할 수 있습니다.

 

새 3D 기술의 수는 그리 많지 않으며, 그 외에 기존의 기능을 개선한 것이 더 많습니다. 예를 들어 ROP 조작과 Z버퍼 유닛에서 독립된 조작이 가능하다던가, 모든 텍스처 조작이 전부 캐시의 읽기/쓰기 조작이 가능하다던가 등등.

 

 

페르미 따라하기? GF100 아키텍처와의 비교

 

GCN 아키텍처가 처음으로 발표됐을대, 많은 사람들이 제일 처음으로 떠올린 것은 AMD가 페르미의 발자취를 그대로 따라간다는 것입니다. 겉으로 드러난 것만 보면 GCN 아키텍처는 VLIW 아키텍처를 버리면서 통용 계산 성능을 강화하고 C/C++ 프로그래밍과 ECC 에러 교정 기능을 넣었습니다. 이런 특징은 모두 2년 전에 페르미가 이룩한 것과 매우 비슷합니다. 그렇다면 GCN과 페르미, 그리고 페르미 이후에 나올 케플러를 비교하는건 피할 수 없겠지요?

 

20.jpg

 

GF100/110 아키텍처는 SM으로 구성됩니다. AMD GCN에서는 CU에 해당합니다.

 

페르미 패밀리는 2가지 파생 아키텍처가 있습니다. 지포스 GTX 480/470의 GF100과 지포스 GTX 580/570의 GF110은 같은 길을 걷는 아키텍처입니다. 하지만 지포스 GTX 560과 그 이하 그래픽카드에 쓰인 것은 GF104 아키텍처 기반입니다. 두 아키텍처는 약간 다른데, 여기서는 모든 기능을 갖춘 GF100/110 아키텍처만 예를 들어 설명하겠습니다.

 

GF100은 512개의 CUDA 코어가 있습니다. 이 코어는 실제로는 16개의 SM(Streaming Multiprocessors)으로 나뉘며, 각각의 SM 유닛은 32개의 CUDA 코어가 있습니다. 모든 CUDA 코어는 내부에 1개의 정수 ALU와 1개의 부동소수 ALU가 있습니다. 그 구조는 기존의 CPU 코어와 상당히 비슷하지요. 그 밖에 각각의 SM 유닛은 4개의 SFC(Special Function Unit)이 있어 sin, cos, exp, rcp 등의 특수 함수를 실행할 수 있습니다.

 

21.jpg

 

GCN 아키텍처의 설계 요점

 

페르미의 SM 유닛은 1 클럭 사이클에 32개의 명령어를 실행할 수 있지만 GCN은 각각의 CU가 1 사이클에 40웨이브를 실행합니다. 4개의 SIMD 어레이 병렬 연산으로 1 사이클에 4 스레드가 나옵니다.

 

캐시 설계에서 페르미의 SM 유닛은 64KB L1 캐시를 가지고 있습니다. 모든 SM 유닛은 768KB L2 캐시를 공유합니다. GCN의 캐시 설계는 더 복잡해지는데 각각의 CU가 로컬 캐시 64KB를 가진건 똑같지만 32KB L1 명령어 케시에 스칼라 유닛은 16KB L1 캐시, L2 캐시 768KB를 공유합니다. 거기에 모든 L1 캐시가 연결되어 메모리 데이터 동기화가 가능합니다. 이것은 페르미 아키텍처보다 훨씬 뛰어난 것입니다.

 

22.jpg

 

NVIDIA 페르미 아키텍처의 영혼은 캐시 설계, FP64, C++와 ECC가 있습니다.

 

당연히 더 많은 비슷한 점들이 있습니다. 예를 들면 모두 C/C++ 프로그래머블 언어 지원, ECC 에러 교정 지원, 강화된 FP64 연산까지.

 

공식 PDF와 더 많은 자료들을 봐도 AMD와 NVIDIA 아키텍처를 직접 판단하게 어렵습니다. 왜냐하면 아키텍처 설계는 오직 수단일 뿐이고 두 회사의 설계 방식을 반영한 것이지, 이것만으로 어느게 좋다 나쁘다고 말할 수 없습니다. 중요한건 성능입니다.

 

AMD의 GCN 아키텍처는 비록 VLIW를 버리긴 했지만 GCN의 CU 유닛은 이전 세대의 그림자가 아직 남아 있습니다. 4개의 SIMD 어레이 설계는 라데온 HD 6970과 매우 비슷하며, 코어 연산 성능은 여전히 64개 벡터 유닛입니다. 페르미 아키텍처보다 간단하고 효율이 높아 보입니다.

 

GCN의 캐시 설계는 페르미보다 복잡하며 데이터의 일관성과 공유에 집중했습니다. L1과 L2, L2와 그래픽, L2와 메모리는 모두 데이터를 동기화합니다. 가상 x86 메모리 어드레스는 빠르게 데이터를 전송할 수 있습니다.

 

GCN과 페르미는 더 많은 부분이 비슷하게 보입니다. 두 제품의 설계가 같을 뿐만 아니라 3D 렌더링 외에 통용 계산에 최적화됐다는 것도 특징입니다. C/C++ 프로그래밍 언어와 ECC 에러 체크는 모두 계산 성능을 발휘하기 위한 것입니다.

 

 

새 기능: 아이피니티 2.0, 제로코어, VCE

 

아키텍처의 변화는 기초일 뿐입니다. GCN 아키텍처를 쓴 라데온 HD 7000은 여러 다양한 기능들을 가지고 있습니다.

 

세계 제 1의 칭호

-세계 최초의 28나노 공정 그래픽카드

-세계 최초 PCI-E 3.0 지원 그래픽카드

-세계 최초 다이렉트 X 11.1 지원 그래픽카드

 

라데온 HD 7970은 2011년이 가기 전에 3개 부분에서 세계 최초라는 칭호를 얻었습니다. 내년에도 이 분위기는 계속될 것입니다. NVIDIA 케플러가 얼마나 빨리 나올지 모르지만 분명 시간이 걸릴테니까요.

 

28나노 공정이야 TSMC에서 생산한 것이고, PCI-E 3.0은 지금 lGA 2011 플랫홈에서 쓸 수 있습니다. 다이렉트 X 11.1은 윈도우즈 8이 나와야 쓸 수 있습니다.

 

23.jpg

 

라데온 HD 7970의 아이들시 전력 사용량은 3W 미만.

 

라데온 HD 7970의 놀라운 점은 트랜지스터 수가 대폭 늘었는데도 아이들시 전력 사용량이 3W가 안된다는 것입니다. 이전 40나노 공정이 최저 24W였던 것과 비교하면 이 수는 엄청난 것입니다. 이것은 새 공정으로만 가능한 것이 아니라 AMD의 새로운 전원 관리 기술인 제로 코어의 공로입니다.

 

AMD의 아이피니티는 NVIDIA보다 줄곧 우위에 서 있었습니다. 라데온 HD 7970은 여기서 한층 더 발전해 아이피니티 2.0을 도입했습니다. 다양한 스크린 구성과 해상도를 지원하는 것이 특징입니다.

 

24.jpg

 

아이피니티 2.0은 16K x 16K의 초고해상도를 지원합니다. 

 

25.jpg

 

해상도를 직접 설정할 수 있습니다.

 

26.jpg

 

HDMI 1.4a 3GHz와 디;스플레이포트 1.2 HBR2는 4K 해상도를 케이블 하나로 해결합니다.

 

지금가지의 멀티 디스플레이 솔루션은 오직 하나의 스피커에만 소리를 전달할 수 있었지만, 라데온 HD 7970 그래픽은 하나의 그래픽카드로 여러 스피커에서 소리를 낼 수 있습니다.

 

27.jpg

 

독립된 디지털 멀티 포인트 오디오.

 

28.jpg

 

라데온 HD 7970은 SAD 멀티미디어 처리 명령을 지원합니다.

 

29.jpg

 

라데온 HD 7970의 동영상 처리 성능은 확실한 향상을 보였습니다.

 

30.jpg

 

통용 가속을 써서 WinZip의 압축 시간을 앞당깁니다.

 

이상은 라데온 HD 7970의 일부 새 기능 소개입니다. 현재 라데온 HD 7970 그래픽카드가 정식 발표됐으니 좀 있음 더 많은 정보가 알려지겠지요.

 

 

GCN과 퓨전: AMD의 새판 짜기

 

AMD가 원래 썼던 VLIW는 2007년에 발표된 라데온 HD 2900 그래픽카드에서 먼저 쓰이면서 작년에 발표된 라데온 HD 6900 시리즈까지 개선을 더하며 이어져 내려왔습니다. 그리고 지금 GCN이 등장했습니다. 이것은 AMD가 4년만에 진정한 변혁을 불러일으킨 것입니다.

 

GCN은 AMD가 Non-VLIW ISA with Scalar and Vector라 부르는 아키텍처입니다. 벡터 유닛과 스칼라 유닛을 혼합한 MIMD 시스템을 사용하지만 엄격히 말해서 AMD의 SIMD 그림자가 많이 남아 있습니다. 왜냐하면 원래 4D 아키텍처였던 것을 개선한 것이니까요.

 

지금까지와 다른 점은 AMD가 GPU를 활용한 계산에 노력을 했다는 점입니다. AMD의 목표는 그래픽이 계산, 계산이 그래픽입니다. 그래픽 렌더링에 편향된 아키텍처를 계산과 그래픽 모두에서 균형 잡힌 성능을 내도록 만들었습니다.

 

GCN 아키텍처는 멀티스레드 성능의 강화, 모든 CU가 4 스레드 실행, 40개의 웨이브, 캐시 설계에서는 지금까지의 보수적인 입장이 아니라 모든 CU가 각자의 L1 캐시를 가지고 공유 L1 명령어 캐시를 쓰며, 모든 CU가 768KB L2 캐시를 공유하며 CPU 메모리오 자료의 동기화를 지원해 GPU와 CPU 사이에 데이터 교환이 더 쉽도록 했습니다.

 

외부 지원에서 GCN은 C/C++등의 고급 프로그래밍 언어를 지원해 개발자들의 어려움을 많이 줄였습니다. 거기에 ECC 에러 교전으로 연산의 신뢰도를 높였습니다.

 

31.jpg

 

라데온 HD 7970의 테셀레이션 성능은 라데온 HD 6970보다 대폭 늘어났습니다.

 

당연히 3D 그래픽도 소흘하지 않았습니다. 다이렉트 X 11의 테셀레이션을 예로 들면 라데온 HD 6970보다 큰 폭의 성능 향상이 있음을 볼 수 있습니다. 그리고 GCN의 PRT는 대용량 텍스처를 써서 그래픽의 화질을 질적으로 높여줍니다.

 

32.jpg

 

GCN은 AMD가 선전하는 것처럼 시각의 혁명을 이끌어 줄까요?

 

GCN은 AMD에게 있어서 더 큰 의미가 있습니다. GCN은 AMD 퓨전 개발자 회의에서 처음 공개되, 앞으로 APU에서 사용하게 될 것입니다. PDF 파일을 보면 GCN의 정보가 퓨전과 같이 움지이는 것임을 확인할 수 있으며, 단순 외장 그래픽카드 뿐만이 아니라 APU에서도 쓰이며, CPU와 GPU의 보다 밀접한 연합을 제공하게 됩니다. GCN은 L2 캐시와 메모리의 동기화/공유 기능과 x86 가상 메모리 등의 설계를 썼습니다.

 

출처: http://www.expreview.com/17961-all.html

기글하드웨어(http://gigglehd.com/zbxe)에 올라온 모든 뉴스와 정보 글은 다른 곳으로 퍼가실 때 작성자의 허락을 받아야 합니다. 번역한 뉴스와 정보 글을 작성자 동의 없이 무단 전재와 무단 수정하는 행위를 금지합니다.