Graphics Core Next
1. 개요
AMD가 개발한 TeraScale 마이크로아키텍처의 후속 GPU 마이크로아키텍처이다.
과거에는 AMD가 GCN 세대 구분을 명확히 언급하지 않아서 사람들이 GCN 1.x 형식으로 구분했으나, 2016년 컴퓨텍스에서 공식 발표된 Polaris 마이크로아키텍처부터 명확해지면서 "(서수)-Gen''[1] 또는 "GCN x.0"[2] 으로 변경되었다. 하지만 예전 형식에 익숙한 사람들에겐 여전히 GCN 1.x 형식으로 부르는 편.
GCN의 후속 마이크로아키텍처는 RDNA. 자세한 내용은 Radeon DNA 항목 참조.
2. 전체적인 특징
[image]
TeraScale과 GCN 블록 다이어그램 비교
3. 세대별 GCN 일람
3.1. GCN 1.0 (1세대 GCN, gfx600)
- AMD GRAPHICS CORES NEXT (GCN) ARCHITECTURE White Paper
- Southern Islands Series Instruction Set Architecture Reference Guide
- 완전히 바뀐 ISA
하드웨어 마이크로아키텍처뿐만 아니라 명령어 셋 아키텍처(ISA)도 새로 변경됨에 따라, 기존의 TeraScale 아키텍처가 지녔던 VLIW(Very long instruction word) SIMD에서 RISC SIMD로 완전히 변경되었다. CLRX(CLRadeonExtender)라는 확장 어셈블러를 통해 GCN ISA 버전을 확인할 수 있으나 공식 ISA 버전은 아님을 유의할 것.
- 커맨드 프로세서
이전 세대의 그래픽스 커맨드 프로세서를 계승하는 영역으로, CPU로부터 명령을 받아 각 하부 구조로 명령을 발행한다.
- ACE (Asynchronous Compute Engines)
GCN에서 추가된 새로운 블록으로, 그래픽 연산과 범용 연산을 병렬로 처리하지 못 하고 번갈아 가면서 처리해야 했던 구조적인 문제점을 해결하기 위해 GPGPU용 명령만 따로 분담해주는 구조로 세분화되었다. 게임에서도 GPGPU 연산의 중요성이 커지면서 병렬식 비동기 컴퓨트를 통해 보다 빠른 처리 속도가 가능해졌다. AMD에서는 이러한 병렬식 비동기 컴퓨트를 '비동기 셰이더(Asynchronous Shader)'라고 명명했다.
하지만 표준 기능이 아니기 때문에 독자 SDK로만 활용할 수밖에 없는 것이 단점. 다행히 애플리케이션 레벨과 하드웨어 레벨 사이의 레이턴시까지 줄인 맨틀 API가 등장하고 이를 적용한 게임에서 DirectX 11 대비 높은 프레임 속도를 보여주자, 이를 지켜 본 마이크로소프트도 질세라 맨틀의 특징을 가져온 DirectX 12를 발표하게 되었고 AMD가 강조했던 병렬식 비동기 컴퓨트가 DirectX 표준 기능으로 채택되었다.
NVIDIA의 맥스웰 2.0 아키텍처부터도 지원은 하나 오히려 성능이 떨어져 비활성화 되고 파스칼 아키텍처에서 다시 등장했다. 그래서 파스칼 아키텍처 등장 전까지 GCN 아키텍처가 동세대 엔비디아 GPU와 비교 벤치마크를 돌리면 상대적으로 DirectX11에선 떨어졌지만 DirectX12, Vulkan(API)에서 더 뛰어난 성능을 보여주기도 했었다.
- 지오메트리 엔진/프로세서
버텍스를 생성하는 버텍스 어셈블러, 지오메트리를 생성하는 지오메트리 어셈블러, 테셀레이션을 구현하는 테셀레이터로 구성되어 있다. 제각각으로 구성되어 있던 이전 세대에서 하나의 프로세서 형태로 통합된 것이 특징.
- 래스터라이저
래스터라이저, 스캔 컨버터, 하이어라키컬-Z로 구성되어 있다. 지오메트리 프로세서와 마찬가지로 제각각으로 구성되어 있던 이전 세대에서 하나의 프로세서로 통합된 형태를 지니고 있다.
- 컴퓨트 유닛
그동안 하나의 SIMD 코어에 10개의 스트리밍 프로세서가, 하나의 스트리밍 프로세서에서 4~5개의 스트림 프로세싱 유닛이 구성된 형태에서 하나의 컴퓨트 유닛에 64개의 스트림 프로세서가 구성된 형태로 구조가 대폭 변경되었다. 이전 VLIW SIMD 구조에서는 1개의 SIMD가 다수의 작업을 연달아서 수행하는 방식이었다면, GCN에서는 4개의 RISC SIMD가 작업을 분담해서 수행한다. 따라서 레지스터 포트의 충돌도 없어졌으며, 컴파일러 스케줄링과 최적화를 표준화하고 어셈블리 간소화 툴체인 개발 지원 간소화, 예측 성능 향상 등의 변화가 이뤄졌다. RISC 사용으로 더 많은 트랜지스터가 필요해졌지만 GPGPU 컴퓨트 성능도 크게 증가했다.
NVIDIA의 SM(Streaming Multiprocessor)과 비슷하다고 하고, 출처 64개의 스트림 프로세서 이외에도 텍스처 유닛 4개씩 구성되어 있으며, GPGPU 연산을 이용할 때 ACE로부터 제어받는다.
NVIDIA의 SM(Streaming Multiprocessor)과 비슷하다고 하고, 출처 64개의 스트림 프로세서 이외에도 텍스처 유닛 4개씩 구성되어 있으며, GPGPU 연산을 이용할 때 ACE로부터 제어받는다.
- 렌더 백엔드
ROP이 4개씩 탑재되어 있는 파티션으로, 렌더 백엔드 내부 구조는 이전 세대와 크게 다르지 않지만 이전 세대와는 다르게 L2 캐시 메모리에 의존적이지 않은 구조로 재배치되었다. 이론적으로는 ROP과 메모리 계열의 언밸런스한 스펙 구성이 가능해진 셈.
- 플루이드 모션 추가 지원
프로그램을 사용하여 드라이버상에서 활성화 시켜주면 사용 가능하다.
- 64비트 주소 지원
- PRT (Partially Resident Textures)
- 맨틀 API 지원
- ZeroCore Power
[image]
이전 세대 PowerTune의 발전형으로, 이번엔 유휴 상태에서 코어와 팬을 아예 정지시켜 전력 소비량을 낮춰준다. 다만, 단일 카드에선 디스플레이 절전 모드에서 활성화된다. CF시에는 절전 모드가 아니라도 2/3/4번 카드의 전원이 완전히 나간다.
이전 세대 PowerTune의 발전형으로, 이번엔 유휴 상태에서 코어와 팬을 아예 정지시켜 전력 소비량을 낮춰준다. 다만, 단일 카드에선 디스플레이 절전 모드에서 활성화된다. CF시에는 절전 모드가 아니라도 2/3/4번 카드의 전원이 완전히 나간다.
- 통합 가상 메모리 (Unified Virtual Memory)
전통적인 그래픽 카드에서는 CPU와 GPU가 PCI-E 버스에 연결되고 CPU는 DDR SDRAM(시스템 메모리)을, GPU는 GDDR SDRAM(그래픽 메모리)이라는 서로 다른 자원을 가지고 동작했지만 GCN부터는 시스템 메모리 버스, 즉 DDR SDRAM을 공유해 동작하는 것이 가능해졌다. 이는 HSA중 hUMA와 거의 동일하다.
- HSA 지원
HSA에 관한 특정 블록을 추가함으로써 하드웨어적으로 HSA를 지원하게 되었다. 자세한 내용은 항목 참조.]
- PCI-Express 3.0 지원
당연하지만 PCIe 3.0 컨트롤러가 있어야 한다. CPU에 내장된 현행 시스템에서는 샌디브릿지-E, 아이비브릿지부터 지원한다.
- VCE (Video Coding Engine)
동영상 인코딩할 때 코덱 지원 여부에 따라 하드웨어 전용(Full-Fixed) 모드와 GPGPU(Hybrid) 모드 방식으로 인코딩할 수 있다.
- Direct3D Feature Level 11_1 지원
- CLRX에서는 GCN ISA 1.0 버전
CLRX를 통해 GCN 기반의 GPU 전용 확장 기능을 구현한다.
3.2. GCN 2.0 (2세대 GCN, gfx700)
- 셰이더 엔진
2세대 GCN부터 등장한 새로운 단위. 지오메트리 프로세서, 래스터라이저, 컴퓨트 유닛, 렌더 백엔드를 포괄하는 상위 구조로, 셰이더 엔진의 개수가 곧 GPU의 체급을 결정하는 중요한 구성 요소가 되었다.
- ACE 강화
비동기 컴퓨팅 옵션은 2세대 GCN부터 활성화 가능하다. 1세대 GCN도 드라이버 초기에는 지원했으나 오히려 성능 저하가 발생해서 현재 드라이버에서는 모두 비활성화되었다.
- UVD 4.2, VCE 2.0
- TrueAudio 지원
- 플루이드 모션 추가 지원
- FreeSync 지원
- Direct3D Feature Level 12_0
- CLRX에서는 GCN ISA 1.1 버전
AMD가 아직 2nd Gen(eration) GCN이라고 강조하지 않은 시기였기 때문에 GCN 1.1으로 통용되었으며, 명확한 세대 명칭이 발표된 이후인 지금도 GCN 1.1로 알고 있는 사람들이 많다.
3.3. GCN 3.0 (3세대 GCN, gfx800)
이미 공식 ISA 레퍼런스 가이드 문서에도 '3세대' GCN임을 강조했다.
- HWS (Hardware Scheduler)
발표 당시에는 언급되지 않았으나, 2년 후 4세대 GCN 발표 시기에 들어서야 3세대 GCN도 HWS가 이미 존재했던 것으로 밝혀졌다.
- 테셀레이터의 테셀레이션 성능 개선
- 지오메트리 프로세싱 유닛 개선
- 무손실 델타 컬러 메모리 압축 기술 도입
먼저 도입된 Tonga에서 전성비를 높이기 위해 이걸 적용하는 대신, 메모리 컨트롤러 구성을 최대 384비트에서 256비트로 쳐내었다. 라데온 R9 285(=380)과 380X의 메모리 버스 풀스펙도 원래는 HD 7970에 사용된 Tahiti와 같은 384비트에 GDDR5 SGRAM 6GB 구성이었던 것.
- 하이퀄리티 스케일러 추가
- UVD 5.0, VCE 3.1
H.264 4K 60 FPS 하드웨어 디코딩과 H.265 하드웨어 인코딩을 지원한다.
- UVD 6.0, VCE 3.1
Fiji 한정으로 H.265 4K 60 FPS 하드웨어 디코딩까지 지원한다.
- CLRX에서는 GCN ISA 1.2 버전
AMD가 아직 3rd Gen(eration) GCN이라고 강조하지 않은 시기였기 때문에 GCN 1.2로 통용되었으며, 명확한 세대 명칭이 발표된 이후인 지금도 GCN 1.2로 알고 있는 사람들이 많다.
3.4. Polaris (4세대 GCN, gfx800)
[image]
- 지오메트리 프로세싱 성능 향상
- 가변 해상도 렌더링을 위한 AMD LiquidVR API
- DCC (Delta Color Compression)
델타 컬러 압축. 2:1, 4:1, 8:1 압축을 지원하며 1세대 GCN 대비 약 40%의 압축율을 보여준다.
- 업데이트된 메모리 컨트롤러
- 셰이더 명령어 프리페치, 강화된 버퍼링
- 스케줄링을 통한 실시간, 우선순위 비동기 연산
- 네이티브 FP16과 INT16 연산 지원
- TrueAudio Next
- 10-bit / 12-bit HDR 지원
- UVD 6.3, VCE 3.4
H.265 1080p240fps, 1440p@120fps, 2160p@60fps 가속, MJPEG 4K@30fps 가속 지원 추가. [3]
- 스트리밍 기능 향상
2-pass 인코딩 기술을 지원한다.
- AVFS 추가
엑스카베이터 아키텍처 기반의 APU 제품군인 카리조부터 도입된 기능이다.
- MBFF (Multi-bit-flip-flop) 개선
기존 설계 TDP의 15%를 차지하던 유닛으로, 폴라리스에서의 개선을 통해 4-5%의 TDP를 감소시켰다.
- PDA (Primitive Discard Accelerator)
샘플 포인트와 공간을 차지하지 않는 Cull 삼각형을 지오메트리 엔진에서 알아서 버리는 기능으로, 멀티 샘플링 안티에일리어싱과 같은 경우 그 효율이 극대화돼 2~3.5배의 성능 향상을 가져올 수 있다.
- CLRX에서는 3세대 GCN과 같은 GCN ISA 1.2 버전
AMD가 Polaris 마이크로아키텍처를 4th Gen(eration) GCN이라고 강조했기 때문에 GCN 1.x 형식은 더이상 통용되지 않는 말이 되었지만, 아직도 GCN 1.3으로 잘못 알고 있는 사람들이 있다.
4세대 GCN이자 통칭 Polaris 아키텍처로, 라데온 RX 400, 500 시리즈에 탑재되었다. 개발 코드네임인 Polaris가 먼저 알려지면서 개발 코드네임으로 많이 불려졌으며 결국 GPU 정식 명칭 역시 Polaris로 확정되었다. HD 7000 시리즈 시절부터 홍보된 GCN을 그대로 사용하면 매번 명칭이 바뀌는 NVIDIA보다 뒤쳐져 보이는 느낌 때문인지, AMD도 이때부터 마이크로아키텍처 명칭을 NVIDIA같은 방식으로 선회했다. GCN 1.x 형식으로 주로 표기되었을 당시에는 GCN 2.0이라고 유출됐었지만 이후 4th Gen GCN이라고 다시 정정되었으며, 세부 모델들 유출되면서 아예 Polaris로 명칭이 바뀌었다. 다만, 그 정체성이라 할 수 있는 아키텍처는 4세대 GCN임을 명시하고 있다. 기능적으로 추가된 사항이 있지만 GFX ID가 3세대 GCN과 같은 800번대, ISA도 역시 3세대 GCN과 같기 때문에 비공식으로 통용되는 GCN 1.3은 잘못된 명칭이다.연산 성능이 기존 아키텍처 대비 최대 15% 향상되었다.
3.5. Vega (5세대 GCN, gfx900)
- Vega 아키텍처 슬라이드
- Radeon’s next-generation Vega architecture White Paper
- "Vega" Instruction Set Architecture Reference Guide
- "Vega" 7nm Instruction Set Architecture Reference Guide
- HBCC (High Bandwidth Cache Controller)
그래픽 메모리 자체를 캐시 메모리처럼 동작(캐싱)할 수 있게끔 제어해준다.
- 최대 512TB의 넓은 주소 공간 지원
- NGCU (Next-Gen Compute Unit)
RPM (Rapid Packed Math) 방식이 도입되면서 FP16 연산 성능이 단정밀도(FP32) 연산의 2배 성능을 보여준다.
- DSBR (Draw Stream Binning Rasterizer)
NVIDIA의 타일 기반 레스터화 작업과 유사한 기술이다.
- 프리미티브 셰이더 (Primitive Shader)
기존 그래픽 파이프라인의 절차를 간소화해서 지오메트리 성능 효율을 최대 4배 가까이 높인다. 하지만 성능 효율 문제로 현재까지 비활성화 되어 있다.[4] 만약 정상적으로 구현되어 있었다면 지오메트리 프로세서 16개에 준하는, 폴리모프 엔진을 최대 30개까지 구성 가능한 NVIDIA의 파스칼 마이크로아키텍처와 제대로 겨뤄볼 수 있는 지오메트리 성능이었을지도 모른다. 어차피 래스터라이저와 ROP이 여전히 열세라서 종합 실성능으로는 지포스 GTX 1080 Ti와 상대가 안 된다.
- UVD 7, VCE 4
디코딩 및 인코딩 성능이 향상되었지만 신규 코덱 추가는 없다. 그 대신, 내장 그래픽이 탑재된 라이젠 APU인 레이븐 릿지와 피카소에서는 VP9의 하드웨어 디코딩을 제대로 지원하면서 VCN으로 개편되었다.
- Direct3D Feature Level 12_1
- CLRX에서는 GCN ISA 1.4 버전
예전 형식으로만 알거나 익숙한 사람들에겐 GCN 1.4라고 말하기도 하지만, GCN ISA의 버전이 1.4라는 점을 알고 말하는게 아니라 'Polaris가 GCN 1.3이었으니 그 다음에 나온 Vega는 GCN 1.4'라고 착각한 경우가 대부분이다. 단, 7nm 공정으로 제조된 Vega 20만 GCN ISA 1.4.1 버전.
5세대 GCN이자 통칭 Vega 아키텍처. AMD가 5세대 GCN이라고 한 적은 '''단 한번도 없고''' Vega를 보고 GCN이란 표현을 쓴 적도 손에 꼽을 정도로 적다. 다만, 명령어 집합 구조(ISA)가 여전히 GCN 기반이고 이전 세대인 Polaris처럼 아키텍처가 뒤쳐져 보이지 않으려고 NVIDIA같은 방식으로 명명해서 일부러 언급하지 않는 것일 수도 있다. RDNA 마이크로아키텍처가 등장한 이후에는 Vega를 GCN 마이크로아키텍처 계열로 취급하기 시작해서 사실상 5세대 GCN임을 스스로 인정하는 것이라고 볼 수 있다. 자세한 내용은 Vega 아키텍처 백서 참조.