Le fondamenta di Zen
La prima tappa sulla strada per ridurre i consumi è stata quella di abbandonare il processo a 28 nanometri usato con le microarchitetture Excavator/Steamroller e adottare il processo a 14 nanometri FinFET di GlobalFoundries. La strada verso i 14 nanometri FinFET è già battuta da AMD, dato che stiamo parlando dello stesso processo con cui sono realizzate le GPU Polaris.
I 14 nm FinFET permettono di avere maggiori prestazioni nello stesso TDP, e l'incremento prestazionale è davvero la chiave per ridurre i consumi generali. Accelerare le prestazioni velocizza la corsa alla fase idle. Un IPC più alto permette alla CPU di macinare calcoli più velocemente e spegnere rapidamente parti del chip. AMD usa una strategia di clock gating a più livelli che riduce il consumo di sottosezioni del core quando queste non sono occupate.
Il clock gating comporta sempre dei compromessi prestazionali e può generare dei bug, quindi trovare il bilanciamento corretto è importante. Clark ha dichiarato che il suo team ha lavorato pesantemente per assicurare che il clock gating non influenzi le aree critiche del chip dedicate alle prestazioni.
In estrema sintesi l'azienda si è concentrata nello sviluppare un miglior core e un sistema di cache, di pari passo alle ottimizzazioni energetiche di cui abbiamo scritto pocanzi. AMD ha aggiunto un thread per ogni core (Simultaneous Multi-Threading), e ha anche inserito una cache micro-op per aumentare l'ILP (Instruction Level Parallelism).
Secondo AMD l'architettura ha una capacità di scheduling del 75% superiore ai design precedenti e garantisce un aumento del 50% dell'ampiezza per la gestione delle istruzioni. Allo stesso tempo le prestazioni godono di una brach prediction migliorata e di un'architettura della cache rivisitata, con il raddoppiamento del bandwidth L1 e L2. Pipeline più ampie, inoltre, portano a un incremento di 5 volte del bandwidth legato alla cache L3.
Il diagramma a blocchi illustra il flusso delle informazioni nei core. Tutto inizia con la branch prediction che spinge istruzioni all'interno di una I-Cache 4-way 64K. I dati passano nel decodificatore che emette quattro istruzioni per ciclo verso la micro-op queue. Le micro-ops vengono inoltre salvate nella cache op, che a sua volta serve le operazioni più frequenti alla coda. Questa tecnica aumenta le prestazioni e fa risparmiare energia riducendo gli stadi della pipeline. Clark non ha parlato della lunghezza della pipeline ma ha detto che lo schema op cache ha permesso all'azienda di ridurla.
La op cache è un grande avanzamento ma i progettisti hanno anche messo a punto uno schema per aumentare la sua densità e le prestazioni. Zen usa una tecnica di branch fusion all'interno della op cache in modo che questa contenga due operazioni sotto forma di singola operazione. La cache può fondere due istruzioni (un compare e un branch) all'interno di una micro-op (uno schedule e un execute) e immagazzina la micro-op fusa fino alla sua espansione durante l'invio.
La micro-op queue alimenta 6 operazioni per ciclo di clock all'interno di code integer e floating point (FP), e questo rappresenta un miglioramento rispetto al dispatch di 4-op delle precedenti architetture. Le sezioni integer e floating point hanno le proprie pipeline di esecuzione separate, rename, scheduler e file di registro quindi servono essenzialmente come coprocessori separati. Il flusso continua all'interno di una D-Cache (Data Cache) 8-way 32K, dotata a sua volta di una cache L2 8-way 512K.