다양한 워크로드를 지원하는 GPU 아키텍처, 베가
6년만의 구조 개편. 베가
AMD가 차세대 GPU 아키텍처인 베가(Vega)를 공개했습니다. 베가는 AMD의 FinFET 세대 플래그쉽 GPU입니다. 가장 큰 특징은 GPU 마이크로 아키텍쳐를 혁신했다는 점과, 고성능 하이엔드 GPU에 도입한다는 것입니다.
AMD는 Southern Islands 패밀리의 라데온 HD 7900(타히티)에서 GCN (Graphics Core Next)을 도입한 이래, GPU의 컴퓨팅 장치인 CU(Compute Unit)의 메이저 체인지는 하지 않았습니다. 기반 아키텍처는 GCN을 유지한채로 작은 확장을 해 왔습니다. 그러나 이번 베가는 마이크로 아키텍쳐를 일신해 CU 뿐만 아니라 쉐이더의 제어 및 메모리 계층까지 모두 크게 변화합니다. AMD에게는 6년만의 GPU 아키텍처 대변혁입니다.
AMD는 FinFET 3D 트랜지스터 공정으로 작년에 퍼포먼스급 GPU인 폴라리스(Polaris)를 도입했습니다. 그러나 폴라리스 세대에선 하이엔드 GPU가 없었습니다. 베가 10은 AMD에게 있어 2년마느이 고급형 GPU가 됩니다.
베가 아키텍처는 그래픽과 컴퓨팅, 메모리 용량까지 모든 면에서 성능을 비약적으로 향상시킵니다. 컴퓨팅에서는 딥 러닝의 지원과 FinFET 공정을 활용한 마이크로 아키텍처로의 전환. 딥 러닝을 위한 데이터 정밀도의 도입, GPU의 동작 클럭을 대폭 높인 아키텍처입니다.
그래픽에서는 지오메트리 파이프 라인의 제어를 크게 변경했습니다. 새로 원시 쉐이더(Primitive Shader) 스테이지를 도입해 처리량을 2배로 높였습니다. 또 라스터라이저도 프로그래밍 방법을 새로 바꿧으며, 온칩 메모리 레벨에서 렌더링 백엔드를 L2에서 캐시하도록 했습니다.
메모리 계층 구조는 GPU에서는 처음으로 비휘발성 메모리 도입을 전제로 한 메모리 컨트롤을 사용합니다. 이것은 앞으로 발전할 것으로 기대되는 새로운 비휘발성 메모리 기술에 맞춘 대응입니다. 이 메모리 아키텍처는 AMD가 엑사플롭스 슈퍼컴퓨터의 메모리 모델로 제안하는 것과 같습니다. 또한 데이터 이동의 최적화를 수행해 데이터의 불필요한 트래픽을 억제합니다.
AMD의 베가는 이처럼 그래픽 뿐만 아니라 컴퓨팅과 시각화까지 모두 성능을 강화한 새로운 아키텍쳐입니다.
마이크로 아키텍처의 변화. 새로운 컴퓨팅 장치
베가의 CU(Compute Unit)는 Next-Generation Compute Unit(NCU)으로 내부 마이크로 아키텍처가 크게 바뀝니다. 아직 자세한 내용은 밝혀지지 않았으나 핵심 내용은 공개했습니다.
현재 CU는 32비트 정수 연산 유닛이 1개의 벡터 유닛을 구성합니다. 1개의 CU엔 4개의 벡터 유닛이 있어 총 64개의 32비트 유닛이 됩니다. 각각의 유닛이 1클럭마다 2개의 작업 처리량을 내기에 1개의 CU에서 32비트 처리하면 1클럭에 128개의 작업을 수행합니다.
AMD GPU는 64스레드 배치인 웨이브프론트 단위로 처리합니다. 각각의 벡터 유닛은 16개가 4사이클에 걸쳐 웨이브프론트를 처리하는 구조입니다.
NUC는 새로 데이터 정밀도가 낮은 SIMD (Single Instruction, Multiple Data) 연산을 도입합니다. 구체적으로는 2웨이 16비트 SIMD 연산과 4웨이 8비트 SIMD 연산을 추가합니다. 이는 낮은 데이터 정밀도가 필요한 머신 러닝 애플리케이션에 맞춘 확장입니다.
AMD도 다른 GPU 제조사와 마찬가지로 연산 유닛의 기본 데이터 정밀도는 32비트입니다. 그러나 딥 러닝에선 성능을 높이기 위해 정밀도가 낮은 16비트와 8비트를 쓰고 있습니다. AMD는 이런 트렌드에 대응하여 연산 유닛을 대폭 수정했습니다.
베가의 NCU는 16비트와 8비트의 연산 성능이 향상됐습니다.
16에서 처리량은 32비트의 2배, 8비트에선 4배가 됩니다. AMD는 이미 베가 10 기반의 GPU 컴퓨팅 제품인 라데온 인스팅트 MI25에서 1장의 카드로 16비트 부동소수점 연산에서 25TFLOPS를 달성했다고 밝혔습니다. NVIDIA의 파스칼 기반 테슬라 P100(GP100)이 21TFLOPS(FP16)이니 그보다 높은 것입니다. 8비트에선 성능이 2배가 됩니다.
팩드 16비트와 8비트 연산을 도입
AMD의 현재 아키텍처는 32비트에서 프레디케이션에 의한 조건문에 대응합니다. 벡터 유닛 중 32비트의 각 레인은 같은 명령을 실행하나, 각각 마스크 레지스터 분기 경로만 실행하고 개별적으로 제어 흐름을 컨트롤합니다. 따라서 32비트에선 별도의 스레드로 각각의 레인이 작동합니다.
반면 이번에 도입된 16비트와 8비트 연산은 팩드(packed) 형, 즉 SIMD가 됩니다. 32비트 1레인에서 16비트 데이터 2개, 혹은 8비트 데이터 4개를 합쳐(팩드) 명령을 실행합니다. 16비트와 8비트는 각각 다른 분기의 경로를 수행할 수 없습니다. 그러나 딥 러닝의 경우 팩드로 연산 성능이 향상됩니다.
GPU에 팩드 기반의 낮은 데이터 정밀도 연산을 도입하는 건 딥 러닝 시대에 들어서면서 자주 보이는 시도입니다. NVIDIA도 여기에 대응을 진행하고 있으며, Imagination Technologies의 PowerVR도 지원합니다.
신경망의 딥 러닝에 초점을 맞춘 AMD
베가 NCU의 또 다른 중요한 특징은 고클럭입니다. AMD는 클럭을 끌어 올리기 위해 파이프 라인을 변경했습니다. 파이프라인 스테이지가 2배가 되면 원칙적으로는 GPU 코어의 동작 클럭을 두배 이상 끌어올릴 수 있는데, 이것도 FinFET 공정 시대의 GPU 코어 트렌드입니다.
파이프라인 스테이지를 늘려 클럭을 높인 베가
FinFET은 누설 전류(Leakage)가 크게 떨어져 동작 클럭 당 활성 전력도 낮출 수 있습니다. 따라서 파이프라인 세분화로 클럭을 높이는 것이 가능합니다. 전력이 줄어든 만큼 클럭을 높이는 것입니다.
파이프라인 스테이지를 높이면 파이프라인의 데이터를 유지하는 래치 회로도 늘어납니다. 래치는 논리 회로 중 전력을 크게 쓰는 부분이기에 누설 전류가 많은 프로세스에선 파이프라인 스테이지를 늘리기가 어려웠습니다. 그러나 베가는 누설 전류가 낮은 14nm FinFET 공정으로 제조하기에 파이프라인 스테이지를 늘릴 수 있게 됐습니다.
폭증하는 데이터 용량에 대응하기 위한 메모리 계층
현재 GPU는 취급하는 데이터 용량이 폭발적으로 늘어나고 있습니다. 게임의 용량도 급증했으며, 전문 그래픽 작업의 데이터도 늘어났지요. 그리고 빅 데이터 분석과 머신 러닝을 위한 컴퓨팅 데이터 용량은 천문학적인 숫자로 늘어나고 있습니다.
GPU의 애플리케이션 데이터 용량이 늘어나면서 GPU 연상 성능도 성장했지만, GPU의 메모리 용량은 이에 맞춰 늘어나지 않았습니다.
문제는 GPU의 메모리 용량이 그런 데이터 용량 증가와 GPU의 연산 성능 증가를 따라가지 못한다는 것입니다. 그래서 베가는 새로운 메모리 액세스 방식을 도입합니다. GPU 메모리를 광대역 캐시로 취급하고 GPU 패키지 외부의 메모리를 원활하게 처리할 수 있도록 합니다.
구체적으로 베가는 스택 DRAM인 HBM2를 GPU 메모리로 도입합니다. 베가 10은 2스택입니다. 그러나 GPU 패키지에 넣은 HBM2 외에도 오프 패키지 메모리를 GPU가 처리하도록 합니다. HBM2은 마치 캐시처럼 취급합니다. 그래도 하드웨어가 제어하는 태그 RAM이 장착된 캐시가 아니라, 메모리에서 제어하는 워킹 메모리로서 취급합니다.
베가 10의 GPU 메모리는 HBM 2
메모리 컨트롤러릐 형태를 크게 변경
비 휘발성 메모리 (NVRAM)를 포함한 메모리를 GPU가 직접 처리하거나 직접 다루는 것처럼 하는 구조를 제공합니다. GPU의 DRAM 용량을 쓸데없이 늘리는 게 아니라 어드레싱 가능한 메모리를 다양화 함으로써 점점 더 늘어나는 데이터에 대응합니다. 따라서 베가 10에선 512TB까지의 가상 주소 공간을 지원합니다. 그리고 계층화된 메모리 사이에 효율적으로 메모리를 사용함으로서 고성능 저전력 메모리를 제공합니다.
전체 데이터 중에서 실제로 사용하는 데이터를 효율적으로 배치
새로운 쉐이더 스테이지와 라스터라이저 캐시 계층 구조의 개선
지오메트리 파이프 라인은 버텍스 쉐이더(Vertex Shader) 이외에 지오메트리 쉐이더(Geometry Shader)를 추가했습니다. 베가는 새로운 루트인 원시 쉐이더(Primitive Shader)를 도입합니다. 유닛 단위로 취급해 최대 처리량을 높일 수 있으며 렌더링 파이프라인 전체 워크로드의 제어도 스마트하게 바꿉니다.
AMD 아키텍처에서는 렌더링 백엔드와 텍스처 액세스는 일관된 구성이 아니었습니다. 따라서 렌더링된 텍스처를 다시 다룰 경우 GPU 내부 캐시 계층을 사용할 수가 없었습니다. 베가는 렌더링 백엔드도 L2 캐시에 캐싱되면서 L2 캐시가 텍스처를 일관적으로 쓸 수 있게 됐습니다. 또 픽셀과 라스터의 취급도 보다 효율이 나아졌습니다. 이는 VR처럼 시점이 2가지인 애플리케이션에서 효과가 좋다고 할 수 있습니다.
이건정말 기대하지 않을 수 없게 만드네요..