Zen에 대한 자세한 내용이 다음주의 컨퍼런스에서 발표
AMD가 고성능 CPU 시장에서 점유율을 탈환하기 위한 비장의 카드로 차세대 x86 CPU인 Zen을 올해 출시합니다. Zen은 불도저 계열 CPU 코어인 Excavator보다 클럭 당 정수 명령 실행 성능이 40% 높아집니다. 또 AMD의 CPU 중엔 처음으로 SMT(Simultaneous Multithreading)를 지원해 2스레드를 1개의 코어에서 실행합니다. 또 14nm FinFET 공정으로 만들어 AMD의 28/40nm CPU보다 성능/전력 효율이 좋습니다.
AMD는 미국 샌프란시스코에서 기자회견을 열고 Lisa Su(President and Chief Executive Officer, AMD)와
Mark Papermaster(Senior Vice President and Chief Technology Officer, AMD)가 Zen을 발표했습니다.
AMD는 다음주에 열릴 Hot Chips에서 Zen의 세부 스펙을 발표할 예정인데, 일단 개요를 앞당겨 공개했습니다.
Zen은 불도저 계열 CPU와 달리 완전히 새로 설계한 CPU 코어입니다. 불도저는 2코어가 1모듈이지만 Zen은 독립된 CPU 코어 구성입니다. AMD는 Zen 코어를 먼저 8코어 CPU인 서밋 릿지(Summit Ridge)로 제공합니다. 또 32코어인 Naples도 서버 시장에 출시합니다. AMD의 하이엔드 데스크탑과 서버 CPU는 오랬동안 신제품이 없었는데 Zen 기반 제품군으로 단번에 만회하는 것입니다.
마이크로 아키텍처로 공격하는 정공법을 내세운 Zen 프로세서
AMD는 Zen 아키텍처를 설계할 때 성능, 처리량, 효율을 염두에 두었다고 설명합니다. 기존의 불도저 계열 아키텍처는 싱글스레드 성능을 어느 정도 억제하고 전력과 다이 면적 당 성능을 추구한 반면, Zen은 싱글스레드 성능을 높이면서 성능 효율을 개선했습니다.
Zen은 요행수를 부린 게 아니라 정공법으로 아키텍처를 만들었습니다. 4명령/사이클의 명령 디코더에서 x86/x64 명령을 Micro-Op 디코딩하고, 이를 정수와 부동소수점의 2개로 크게 나뉘어진 스케줄러 구조에 보냅니다. 디스페치 대역폭은 최대 6uOPS/사이클입니다.
정수 계열은 4 연산 파이프와 2 주소 생성 파이프, 부동소수점은 SIMD(Single Instruction, Multiple Data)의 FP 곱셈과 FP 덧셈이 2개씩 4파이프. 메모리 계층은 64KB의 L1 명령 캐시와 32KB L1 데이터 캐시, 512KB의 L2 캐시와 코어끼리 공유하는 8MB L3 캐시, 추가 명령 디코더 아래에 uOP 캐시가 들어갑니다. 이런 아키텍처는 인텔 CPU와 비슷한 부분도 많습니다.
불도저 계열의 CPU 코어는 스레드 당 정수 연산 파이프가 2개였으나, Zen은 정수 연산 파이프를 4개로 두배 늘렸습니다. AMD의 기존 CPU 코어인 Excavator보다 클럭 당 정수 명령 실행 성능인 IPC(Instruction-per-Clock)는 40%나 높아집니다. K10까지의 AMD 아키텍처는 정수 연산 파이프가 3개였으니, 4개의 정수 연산 파이프를 쓰는 건 AMD 아키텍처에서 처음 있는 일입니다.
마이크로 Ops 캐시를 갖춘 Zen 프론트엔드
Zen의 프론트엔드는 L1 명령 캐시 64KB 4웨이며, L1에서 명령어 인출은 32바이트가 됩니다. 명령 디코더는 4웨이에서 최대 4개의 x86/x64 명령을 디코딩할 수 있습니다. 기존대로 명령 퓨전을 구현한다면 분기 명령 등을 융합시켜 최대 5개를 디코딩할 수 있습니다. x86/x64 명령을 디코딩해 생성한 내부 명령 Micro-OP는 마이크로 Ops 큐를 보냅니다. 프론트엔드는 분기 예측도 강화됐습니다.
Zen 프론트엔드 중 기존 AMD 아키텍처에 없었던 건 uOPs 캐시입니다. 디코딩된 uOPs가 여기에 캐시되지요. 가변으로 다양한 명령 형식이라 명령 디코드가 복잡해진 x86/x64 명령 디코딩을 생략하고, 디코딩된 uOPs를 캐시해 효율적으로 명령 피드를 실현합니다. 전력 소비가 많은 명령 디코드를 건너 뛰기에 전력 효과도 큽니다. AMD는 uOP 캐시의 용량이 크다고 설명했으니, 단순 몇십개의 명령을 루프하는 캐시가 아님을 알 수 있습니다.
인텔도 같은 구조를 지니고 있어 uOPs 캐시 태그가 L1 명령 캐시의 태그와 연결됩니다. L1 명령 캐시를 지도하는 히트 로직을 채용해 추적 빌드를 실시하지 않는 간단하면서도 낭비가 많은 제어를 했습니다. 현재 스카이레이크는 uOP 캐시가 64바이트의 L1 명령 캐시 페치 윈도우를 컨트롤합니다.
마이크로 OPs 큐는 1사이클에 6개의 uOPs를 스케줄러에 파견합니다. 만약 명령 디코더가 4 uOPs/사이클만 디코딩한다면 디코딩 대역을 그냥 보내게 됩니다. 사실 uOP 캐시에서 최대 6개의 uOPs를 가져올 경우도 있습니다. 인텔 스카이레이크도 마이크로 OPs 캐시에 적중했을 경우 최대 6 uOPs를 가져올 수 있습니다. 기존의 불도저 계열 CPU 코어는 스케줄러에 4 uOPs를 발송하며, AMD는 Zen에서 1.5배의 명령 이슈 대역이라 설명합니다.
x86/x64 CISC(Complex Instruction Set Computer) 명령을 실행하는 AMD CPU는 기존의 마이크로 오퍼레이션을 복합한 Macro-OP를 스케줄러 단계에서 운영 유닛인 Micro-OP로 변환합니다. 내부적으로도 CISC 스타일이지요. Zen의 경우 어떤 uOPs일진 아직 모릅니다.
4개의 정수 연산 파이프를 지닌 Zen의 정수 코어
Zen의 정수 코어 구성은 4개의 정수 연산 파이프에 2개의 로드/스토어 파이프 구성입니다. 기존의 불도저 계열 코어는 2개의 정수 연산 파이프와 2개의 로드/스토어 파이프로, AMD는 Zen에서 실행 리소스가 1.5배가 됐다고 강조합니다. 파이프를 늘린 것 뿐만 아니라 명령 스케줄링 윈도우도 1.75배로 늘렸습니다. 그러나 이것은 코어끼리 비교했을 가능성이 있습니다. AMD Zen은 더 큰 1코어 2스레드를 실행하는 구조이기에 쉽게 비교할 수 없습니다. 세부적으로 보면 Zen 코어는 스택 운영을 위한 하드웨어 엔진을 갖춰, Move 명령의 엘리미네이션도 수행합니다.
FP 연산 파이프에 대해서는 아직 알려져 있지 않았습니다. AMD는 Zen에서 부동소수점 연산 성능도 크게 향상될 것으로 설명합니다. AMD의 슬라이드에서 구성은 곱셈 유닛이 2개, 덧셈 유닛이 2개, 곱셈과 추가 유닛을 더해서 MAD 연산을 수행하는 것으로 보입니다. SIMD(Single Instruction, Multiple Data) 유닛의 폭은 아직 알려지지 않았습니다. 256비트 4유닛으로 예상됩니다.
로드 / 스토어는 주소 생성이 2유닛이나 2로드/1스토어를 병렬 실행할 수 있습니다. L1 데이터 캐시는 32KB 8웨이, 데이터 캐시는 프리페치가 되는데 Zen에선 이것도 크게 향상돼, 더 복잡한 데이터 패턴을 가져올 수 있을 것으로 보입니다.
병렬 스레드 처리를 SMT (Simultaneous Multithreading)로 전환한 Zen
캐시 계층은 L0에 해당하는 uOP 캐시와 적당한 용량의 L1, 상대적으로 작은 L2, 대용량으로 코어끼리 공유하는 L3까지 4단계 구성입니다. L2를 작게 하면서 l2 액세스 대기 시간이 크게 단축된 것으로 보입니다. 캐시 계층은 인텔 CPU와 비슷하며, 캐시 대역은 L1 명령 캐시부터 페치가 32바이트(256비트)/사이클, L1 데이터 캐시는 2개의 16바이트(128비트) 로드와 1개의 16바이트(128비트) 스토어를 병렬 실행합니다. L2에서 대역폭은 L1 명령 캐시와 L1 데이터 캐시가 각각 32바이트(256비트)/사이클, L3과 L2 사이도 32바이트(256비트)/사이클입니다.
스레드 병렬 처리는 SMT(Simultaneous Multithreading)를 구현해 2개의 스레드를 함께 실행할 수 있습니다. 불도저 계열 아키텍처는 스레드마다 독립적인 정수 코어를 넣어 2스레드를 병렬 실행했습니다. 불도저 계열에선 FP 유닛과 l2 캐시를 2스레드가 공유, 기본 정수 유닛은 스레드마다 독립 구성했습니다. 반면 Zen에선 큰 싱글 코어가 2개의 스레드를 병렬 실행합니다. 인텔의 하이퍼스레딩과 기본은 같지요.
2개의 스레드는 별도의 프로그램 카운터를 가지고 아키텍처 레지스터 파일도 따로 씁니다. 실제로 아키텍처 레지스터는 물리 레지스터 파일에서 이름이 바뀌어져 맵핑됩니다. 각각의 스레드 명령은 아웃 오브 오더 실행 엔진에서 병렬 실행합니다.
데스크탑 8코어, 서밋 릿지
Zen의 제조 공정은 14nm로 글로벌 파운드리의 14LPP로 보입니다. AMD CPU 중 첫 FinFET 3D 트랜지스터 공정입니다. AMD는 APU가 28nm, CPU가 40nm였으니 14nm FinFET로 전환은 큰 변화입니다. 누설 전류가 떨어졌을 뿐만 아니라 일정 클럭으로 동작할 때 활성 전류도 떨어지기에 전력 사용량이 크게 줄어듭니다.
AMD는 클럭 당 전력 소비가 지금의 CPU 코어인 Excavator과 같지만 IPC는 40% 더 높아질 것이라 강조합니다. 또 AMD는 앞으로 Zen을 발전해 명령 실행 효율을 높인 Zen+를 내놓을 예정입니다.
AMD는 Zen 코어 제품군을 2개 내놓습니다. 먼저 나오는 하이엔드 데스크탑인 서밋 릿지(Summit Ridge)는 8코어 16스레드 CPU입니다. 소켓 플램폼은 AM4, 메모리는 DDR4, PCI-E 3.0 I/O를 쓰며 아직 공개되지 않은 칩 인터커넥트를 갖춥니다. 게임과 VR, 워크스테이션 시장을 노리지요.
또 32코어 서버 SoC인 naples도 공개했습니다. SMT 64스레드의 괴물 CPU로, 4개의 서밋 릿지 다이를 합쳤을 가능성도 있습니다. 여기에선 Naples 2소켓 서버를 공개했네요.
또 AMD는 앞으로 Zen 기반 APU도 출시, 메인스트림 데스크탑, 노트북, 내장 그래픽까지 Zen을 쓰게 됩니다.