Xbox One X의 스콜피오 엔진
마이크소프트는 11월 7일에 출시하는 차세대 게임기인 Xbox One X(Project Scorpio)의 기술 개요를 밝혔습니다. Xbox One X의 핵심 SoC (System on a Chip)인 스콜피오 엔진(Scorpio Engine)은 전작인 Xbox One과 마찬가지로 AMD 아키텍처입니다. PS4의 상위 모델인 PS4 프로와 같은 세대이며 더욱 성능이 높아진 모델입니다.
스콜피오의 기술 개요 발표
마이크로소프트는 8월 20~22일에 개최된 반도체 칩 컨퍼런스 Hot Chips 29에서 스콜피오 엔진에 대해 발표했습니다. 스콜피오는 마이크로소프트의 내부 코드네임이었으나 정식으로 칩의 이름이 됐다고 합니다. 마이크로소프트의 John Sell(Distinguished Engineer, Microsoft)는 "스콜피오의 개발에 있어서 가장 중요한 목표는 진정한 4K 게이밍 성능을 달성하는 것"이라고 설명합니다. 이에 따라 GPU 성능과 메모리 대역폭이 정해집니다.
스콜피오 칩 패키지. 크기는 50mm
4년 전에 발표된 1세대 Xbox One 칩. 제조 공정은 28nm, 크기는 363제곱mm, 트랜지스터 수가 50억개, 트랜지스터 밀도가 높은 SRAM을 32MB(16억개 트랜지스터) 장착해 그래픽 메모리로 사용했습니다.
Xbox One X 스콜피오 엔진의 트랜지스터 수는 70억개로 NVIDIA 지포스 GTX 1080(GP104)에 필적하는 숫자입니다. 다이 크기는 359제곱mm로 1세대 Xbox One의 363제곱mm와 거의 같습니다.
제조 공정 기술은 TSMC의 16nm FinFET 3D 트랜지스터 기술인 16+입니다. CPU 코어와 GPU 코어는 모두 AMD 아키텍처 Xbox One X의 전용 커스텀 코어입니다.
Xbox 칩의 다이 크기와 공정 기술의 변화
GPU가 대부분을 차지하는 스콜피오의 다이 레이아웃
이번에 마이크로소프트는 다이 레이아웃도 공개했습니다. 다이의 대부분을 차지하는 노란색 부분은 GPU의 연산 클러스터인 CU(Compute Unit) 군입니다. 오른쪽의 어두운 녹색 영역은 8개의 저전력 CPU 코어 군입니다. GPU 코어 면적이 압도적으로 큽니다. 이번 스콜피오에서 GPU가 크게 강화됐음을 다이 레이아웃에서 알 수 있습니다.
CPU 코어의 기본 아키텍처는 Xbox One과 같은 재규어 계열이므로 CPU 코어의 크기는 작습니다. AMD는 16nm 재규어 계열 CPU 코어를 자사 제품으로 내놓진 않았으나, Xbox One과 PS4에는 16nm 버전의 확장 코어를 제공하고 있습니다.
다이 위, 오른쪽, 아래까지 3개 모서리를 둘러싼 것은 GDDR5 인터페이스로, 메모리 인터페이스가 상당한 면적을 차지하고 있습니다.
스콜피오에 탑재된 GPU 코어의 CU의 수는 40개지만 다이에는 44개의 CU가 있습니다. 이것은 수율 향상을 위해 여분의 유닛을 확보한 결과입니다. CU 구성은 좌우로 나뉘는데 상하좌우 각각 2단 구성입니다. 총 4개의 쉐이더 배열로 분할, 각각의 쉐이더 어레이가 11개의 CU를 갖추며, 그 중 10개를 사용하고 1개는 여분이 됩니다.
게임기의 GPU 코어는 수율을 높이기 위해 연산 유닛 수에 여분을 두는 것이 일반적입니다. 그래픽카드에선 결함이 있는 다이를 하위 모델로 판매할 수 있지만 스펙이 하나로 통일된 게임기에선 그게 어렵습니다. 그래서 처음부터 여분의 CU를 둬 일정 CU가 없어도 동작에 문제가 없더록 합니다. 마이크로소프트는 기존의 Xbox One에서도 14개의 CU 중 12개만 썼는데, 이건 PS4 계열도 마찬가지입니다.
Xbox One과 PS4의 유닛 비교
3배 이상으로 커진 GPU 코어
GPU 아키텍처는 AMD GCN(Graphics Core Next)으로 기존 Xbox One이나 PS4와 마찬가지입니다. GCN4과 AMD 폴라리스(라데온 RX 4xx) GPU 수준이었습니다. GPU의 CU 수는 1세대 Xbox One이 12유닛인데 Xbox One X은 40유닛으로 3배 이상 늘었습니다. 또 GPU 코어의 동작 클럭도 835MHz에서 1,172MHz로 37% 상승했습니다.
각 CU는 각각 FP32(32비트 부동소수점) 연산 유닛이 64개 있습니다. 따라서 64 FMAD × 40 CUs × 1,172MHz로 연산 성능은 6TFLOPS에 달합니다. CU의 텍스처 유닛도 비슷하게 늘어났으며 텍스처 처리 성능인 텍셀 레이트도 187.5G bilinear texels/s입니다.
AMD 아키텍처의 CU 다이어그램
Xbox One X의 GPU 스펙
Xbox One X의 연산 성능은 Xbox One (1.3TFLOPS)의 4.6 배인 6TFLOPS. 16nm 프로세스의 Xbox One S (1.4TFLOPS)의 4.3배. 텍셀 레이트도 마찬가지입니다. PS4 프로는 4.2TFLOPS입니다.
스콜피오는 4개의 쉐이더 어레이가 고정 처리를 하는 지오메트리 엔진을 1유닛 갖춥니다. 독립적인 4개의 그래픽 배열을 지녔다고 할 수 있는 구조입니다. 지오메트리 엔진의 수는 Xbox One의 2 배로 지오메트리 파이프 라인의 처리 능력은 4.688G primitives/s, 2.6 배 늘었습니다.
GPU 아키텍처도 확장
GPU를 제어하는 명령 프로세서는 2 유닛. 이것은 1세대 Xbox One부터 마찬가지입니다. 명령 프로세서는 커스텀 마이크로 컨트롤러 (MCU)로 GPU 전체를 제어합니다.
명령 프로세서는 그래픽 태스크와 컴퓨팅 작업을 모두 처리할 수 있으나, GPU의 범용 성능을 높이기 위해 더 많은 컴퓨팅 작업을 병렬로 실행하는 아키텍처를 씁니다. 그래서 기본 명령 프로세서외에 컴퓨팅 작업 전용 명령 프로세서 ACE (Asynchronous Compute Engine)가 있습니다. ACE는 Xbox One에서 2개였으나 스콜피오에선 2배 늘어난 4개가 되어, 컴퓨팅 작업의 병렬 처리 수준이 늘었습니다.
덧붙여서 AMD의 GCN4는 명령 프로세서 및 ACE뿐만 아니라 두 개의 하드웨어 스케줄러 코어를 추가했습니다. 명령 프로세서 및 ACE가 핸들 작업의 스케줄링 제어만 수행합니다. 하드웨어 스케줄러가 스콜피오에 구현됐는지는 확인되지 않았습니다.
스콜피오의 GPU 코어는 렌더링 백엔드도 Xbox One의 2배로 강화됐습니다. 32유닛 수준 37.5G pixels/s입니다. PS4는 렌더링 백엔드가 32유닛 수준이기에, 유닛 수가 같다면 동작 클럭이 더 높은 Xbox One X의 성능이 더 좋습니다. 스콜피오 아키텍처는 렌더링 백엔드를 8개의 렌더링 박스로 나눴습니다. 각각의 박스에 256KB의 그래픽 L2 캐시가 연결되며 L2 캐시는 총 2MB가 됩니다.
2개의 렌더링 박스가 하나의 메모리 컨트롤러 클러스터에 연결됩니다. 메모리 컨트롤러 클러스터는 실제로 2개의 메모리 컨트롤러를 포함합니다. 이것이 총 4 클러스터 배치됩니다. 메모리 채널은 총 12개로 4개의 메모리 클러스터가 액세스합니다.
GDDR5로 단순해진 메인 메모리 구성
Xbox One은 메모리 아키텍처가 특수했었습니다. 메인 메모리는 DDR3 4채널 x256 인터페이스로 온 보드에서 2133Mbps로 구동해 68.3GB/s의 메모리 대역폭을 냈습니다. 이것은 2010년대 중반의 게임기 치고는 빈약한 숫자입니다. 같은 시기의 PS4는 x256 인터페이스 GDDR5를 5.5Gbps로 구동해 176GB/s의 메모리 대역폭을 달성했습니다.
Xbox One은 그 부족한 메모리 대역폭을 광대역 그래픽 SRAM을 내장해 보완했습니다. 32MB의 그래픽용 eSRAM (Embedded SRAM)을 탑재했는데, 8MB 블럭에 각각 256비트 양방향 버스로 연결했습니다. 전체 버스는 단방향 1024비트이며 최대 메모리 대역은 양방향 204GB/s(Xbox One S는 218GB/s)입니다. 그래서 메인 메모리인 DDR3 대역폭과 합하면 272.3GB/s(286.3GB / s)가 됩니다(단방향이라면 약 170GB/s).
Xbox One 메모리 아키텍처의 장점은 비싼 GDDR5를 쓰지 않아 메모리 비용을 대폭 낮췄다는 것입니다. 단점은 eSRAM와 DDR3에 분산된 메모리 아키텍처 때문에 프로그래밍 모델이 복잡해지고 대용량 SRAM에 다이를 많이 할애해야하기에 다이 면적에서 GPU가 차지하는 비중이 줄어든다는 것입니다.
Xbox One X는 메모리 아키텍처를 광대역 GDDR5의 메인 메모리 한종류로 바꿨습니다. 32MB의 eSRAM은 쓰지 않습니다. 대신 GPU도 CPU와 별도로 캐시를 갖춥니다. Xbox One 소프트웨어와 호환성을 위해 eSRAM 기능은 메모리 시스템의 일부를 사용해 에뮬레이트합니다.
스콜피오의 DRAM 인터페이스는 384비트에 전송 속도는 6.8Gbps, 메모리 대역폭은 326GB/s입니다. 외장 그래픽카드 수준의 메모리 대역폭입니다. PS4 프로의 256비트 GDDR5는 217.6GB/s의 메모리 대역폭이 나오니 1.5배 더 넓습니다. 인터페이스의 폭이 넓어진 만큼 메모리 대역도 넓어진 것입니다.
메모리 용량은 12GB. 8Gbit의 GDDR5 칩을 x32로 사용, DRAM 칩 수는 12개로 12GB가 됩니다. 개발 머신에선 GDDR5를 x16로 사용했으며 DRAM 칩 수는 24개, 메모리 용량은 24GB가 됩니다.
Xbox One X의 전체 구성
메모리 대역폭
x32의 GDDR5 메모리 채널이 GPU 코어에 연결
GDDR5는 32비트 DRAM 컨트롤러에 연결됩니다. DRAM 컨트롤러는 총 12채널. 각 DRAM 채널은 CPU와 GPU가 서로 다른 경로로 액세스하는 구조입니다. CPU엔 메모리 컨트롤러 아래에 DRAM 채널이 3개씩 묶어 연결됩니다. 이 부분의 자세한 내용은 밝혀지지 않았으나, CPU가 전체 메모리 대역폭을 쓰진 못하는 것으로 추측됩니다.
스콜피오의 다이어그램. DRAM 컨트롤러의 버스 아키텍처
반면 GPU에는 32비트 DRAM 채널에 별도의 버스가 연결됩니다. 각각 256비트 양방향 버스가 총 12개로, GPU 측 메모리 컨트롤러 채널과 DRAM 채널을 연결합니다. GPU 코어와 DRAM 컨트롤러 사이의 버스 폭은 총 3072비트가 됩니다. 이건 메모리 대역폭을 최대한 살리기 위해 12채널로 분할해 메모리 액세스 단위를 줄였기 때문입니다.
Xbox One X의 GDDR5 메모리 전송 속도는 6.8Gbps로 32비트 채널 당 메모리 대역폭은 27.2GB/s가 됩니다. 마이크로소프트의 슬라이드에선 GPU 쪽 메모리 컨트롤러에서 256비트 버스 동작 클럭이 1,170/850MHz입니다. 850MHz의 경우 이 버스의 단방향 대역폭은 27.2GB/s가 되어 GDDR5의 대역폭과 일치합니다. 즉 256비트 버스는 GDDR5 메모리 대역폭을 최대한 살리기 위한 것입니다.
Xbox One 아키텍처는 GPU의 메모리 컨트롤러와 CPU 사이에 전용 버스가 I/O 컨트롤러를 거치지 않고 GPU 코어와 CPU 코어의 일관성을 유지할 수 있습니다. 이 구조는 Xbox One X에도 이어집니다. 호환성을 생각하면 당연하죠. 스콜피오 메모리 컨트롤러에서 CPU의 크로스바 스위치에 양방향 버스가 늘었습니다. 이 버스는 Xbox One계열에만 있으며 PS4에는 없습니다.
스콜피오의 독특한 점은 이 외에도 여러가지가 있습니다. CPU 코어도 PS4 계열과 다르게 마이크로소프트의 특수한 요구에 맞춰 독자적인 확장이 더해졌습니다.