Patch pro GCC odhaluje první detaily jader AMD Zen. Deset pipeline, čtyři ALU

0

Procesorová architektura Zen od AMD by měla v současnosti být asi nejvýznamnější věcí, která se v tomto oboru kuchtí (tedy pokud ze zásady neignorujete svět architektury x86 a nezajímají vás jen alternativní instrukční sady). Procesory na ní založené mají přijít až za rok či ještě delší dobu a zatím k těmto jádrům je jen minimum informací – použití SMT, pár obecností, co byly prozrazeny na AMD Financial Analyst Day 2015, a podporovaná instrukční rozšíření. Nyní ale zdá se podoba Zenu konečně dostává konkrétnější rysy.

Představu si můžeme udělat díky příspěvku do překladače GCC, který AMD zaslalo do mailové konference projektu 30. září. Tento patch v sobě obsahuje první zveřejněný (ať už oficiálně, nebo pokoutně) nárys architektury Zen. Upozornil na něj Matthias Waldhauer (který pod přezdívkou Dresdenboy před lety blogoval už o tehdy ještě nevydaném Bulldozeru). Z jeho analýzy zde vycházíme.

 

Čtyři pipeline ALU, čtyři v jednotce FPU

Hned z kraje lze říci, že Zen podle všeho bude skutečně tzv. „velkým jádrem“ v silném slova smyslu a měl by mít dobrý jednovláknový výkon. Podle kódu ze zmiňovaného patche má jádro celkem deset pipeline, z nichž čtyři jsou ALU, tedy aritmeticko-logické jednotky provádějící největší spektrum „obyčejných“ instrukcí. Tím by byl Zen na úrovni architektury Haswell/Broadwell (čtyři ALU má pravděpodobně i Skylake), i když architektura Intelu je stavěna trošku odlišně. Linie Bulldozer měla k dispozici ALU jen dvě, stejně jako Bobcat a Jaguar.

Instrukce SIMD a x87 (tedy kód, který u AMD zpracovává FPU) mají k dispozici rovněž čtyři pipeline. Steamroller a Excavator mají pipeline jenom tři, navíc sdílené mezi dvěma jádry. Zen by tudíž mohl mít na jedno jádro dokonce více výpočetních zdrojů pro instrukce typu SIMD a FMA, než jeden modul Steamroller/Excavator. Samozřejmě za předpokladu, že tyto pipeline jsou rovnocenné. Zdá se, že dvě by měly být určené pro sčítání (ADD) a dvě pro násobení (MUL), přičemž šířka vektoru jedné jednotky je 128 bitů. FPU by tím pádem byla schopná spočítat čtyři instrukce SSE za takt, nebo dvě 256bitové instrukce AVX/AVX2.

Architektura Zen dle údajů v patchi pro GCC
Architektura Zen dle údajů v patchi pro GCC

Zbylé dvě pipeline budou tzv. AGU (či AGLU?), tedy load/store jednotky pro výpočet adres a čtení či zápis dat z paměťového subsystému do registrů nebo zpět. V jejich případě k zvýšení počtu zřejmě nedošlo, dvojici AGU má Jaguar i současné „stavební stroje“. Podle zmínek na LinkedIn by snad měly být schopné dvou operací load nebo jedné store za takt. AMD se u Zenu zdá se rozhodlo pro značně jiný poměr mezi prostředky jako jsou AGU a čistě výpočetními jednotkami (ALU, FPU/FMAC). Také kapacita frontendu by měla být podobná jako u Steamrolleru a Excavatoru – dekodéry jsou čtyři, z nichž každý umí dekódovat jak jednoduché, tak komplexní instrukce. Jádro Zen je tedy tzv. „4-issue“, stavěné na zpracování 4 instrukcí za jeden takt.

 

Jádro má mít stejně velké L1 cache jako Jaguar, tedy zřejmě 32 KB pro data a 32 KB pro instrukce. Podle některých patentů, které AMD podalo, by datová L1 mohla mít osmicestnou asociativitu, toto ale patch samotný neukazuje. L2 cache bude mít kapacitu 512 KB, díky čemuž by měla mít lepší latence a snad i propustnost než 2MB L2 cache u Bulldozerů (respektive o něco rychlejší 1MB u Excavatoru).

Odhadované schéma jádra Zen podle Matthiase Waldhauera (Zdroj: Citavia Blog)
Odhadované schéma jádra Zen podle Matthiase Waldhauera (Zdroj: Citavia Blog)

Patch ukazuje dále například snížené latence při výpočtu dělení a odmocnin (což jsou složité operace trvající desítky cyklů; tato zlepšení by údajně měl mít i Excavator). Ovšem i třeba násobení s pohyblivou řádovou čárkou má mít nízkou latenci (tři cykly), což podle Waldhauera ukazuje, že architektura není zaměřená na vysoké frekvence jako Bulldozer. Design je i počtem výpočetních jednotek evidentně stavěn na vysoké IPC, i když to samozřejmě závisí i na další infrastruktuře jádra, paměťovém subsystému s cache, predikci větvení a podobně.

IPC je ovšemže jen jednou neznámou ve vzorci udávajícím výkon. AMD bude muset zároveň dosahovat relativně vysokých frekvencí, což bude se Zenem pravděpodobně o něco těžší než s architekturami založenými na Bulldozeru. V tomto ohledu ale bude zároveň klást překážky výrobní proces (podle všeho 14nm proces 14LPP s FinFETy od GlobalFoundries), tento faktor by mohl být i významnějším limitem než architektura sama. Na jakých taktech má 14nm Zen podle AMD běhat, se bohužel z daných informací nedá odhadnout. Matthias Waldhauer si myslí, že relativně vysoké frekvence mezi 3,5 – 4,0 GHz jsou pro něj dosažitelné, nepřekvapilo by mě ale, kdyby to v reálu bylo níže.

 

Zen je začátek větší rodiny architektur

Tato podoba Zenu je v GCC naprogramována pod označením znver1. První generaci architektury by v následujících letech měly následovat vylepšené verze, podobně jako na Bulldozer (bdver1) navázal Piledriver (bdver2), Steamroller (bdver3) a Excavator (bdver4). Stávající údaje o architektuře Zen v kódu GCC mimochodem AMD vytvořilo tak, že vzalo jako základ podporu právě pro Excavator a nad ní provedlo první změny. Mnohé vlastnosti Zenu tedy tento kód zatím ještě neodráží, neboť patch není definitivní, další úpravy mají následovat později.

Zen, ilustrační foto

Zdroj: Citavia Blog, AMD (mailová konference GCC-patches)