AMD Zen: analisi tecnica della nuova architettura

AMD ha da poco diffuso molti dettagli tecnici sulla nuova architettura Zen, che rivoluziona quanto visto nei suoi ultimi processori.

AMD Zen: analisi tecnica della nuova architettura
INFORMAZIONI SCHEDA
Articolo a cura di

AMD ha mostrato tante nuove informazioni sull'architettura Zen, attesa in prima battuta per la fine dell'anno corrente. Il prossimo design per processori della società americana punta a riscattare le sorti di una famiglia messa per anni in secondo piano dagli utenti, colpa dello strapotere della rivale Intel, che si è fatta strada soprattutto sulla fascia alta. Zen si fonderà su tre aspetti cardine: un miglior core engine, per performance più elevate, un sistema di caching di livello più elevato, che offre più throughput, e potenza assorbita minore, per un'efficienza maggiore. Al fine di rispettare i benefici dei suddetti punti, AMD ha cambiato radicalmente i core che accompagneranno i prossimi processori. Per aiutare l'efficienza di calcolo, gli ingegneri di Sunnyvale hanno lavorato anche all'ottimizzazione del ciclo della CPU e a una nuova infrastruttura tecnica, dotando il tutto della compatibilità con nuovissimi instruction set.

Core, cache, low power

Zen sarà la prossima architettura per microprocessori di AMD, basata sul processo produttivo a 14 nanometri FinFET. Le uniche due fonderie che hanno il know-how sufficiente per accontentare le richieste dell'azienda americana sono GlobalFoundries e Samsung, ma crediamo che AMD alla fine si rivolgerà alla prima, come da tradizione.
La caratteristica principe dei core Zen riguarda le instructions per clock cycle, ovvero l'IPC, che dovrebbe salire di un buon 40% rispetto a quello generato dai più vecchi core Excavator di precedente generazione. Questo grosso salto prestazionale dovrebbe finalmente porre le CPU di AMD allo stesso livello di quelle progettate e prodotte da Intel. Per raggiungere l'obiettivo però, la casa americana ha diviso la progettazione per filoni, così che tutto fosse più chiaro ed organizzato.
Il primo dei punti rilevanti ha a che fare col core engine, che offre tra l'altro la tecnologia più interessante e che darà un enorme beneficio in termini velocistici: il Simultaneous Multi-Threading, analogo dell'Hyperthreading di Intel. Ogni core Zen sarà così visto dal sistema operativo come due thread, al fine di aumentare il parallelismo. AMD ha migliorato la branch prediction associando due rami per ogni BTB (Branch Target Buffer), diminuendo così le branch mispredict, ovvero quelle condizioni in cui il sistema di branching effettua delle previsioni sbagliate facendo sprecare al sistema preziosi cicli di clock. La cache dedicata ai dati sarà più larga, con uno spostamento più corposo di operazioni in un solo tick (6 contro le 4 del passato). Gli scheduler per le istruzioni sono stati anch'essi maggiorati con un beneficio sulle operazioni per ciclo: adesso è possibile porre in coda 84 instruction dedicate agli interi e 96 per quelle in virgola mobile - con Excavator eravamo rispettivamente su 48 e 60. Le FPU avranno quadrupla precisione, mentre le code di retire/load/store sono state rese più profonde.
Gli ingegneri di AMD hanno poi lavorato al secondo degli aspetti importanti, ovvero il sistema di caching. Le cache di secondo e terzo livello sono diventate più veloci, con il bandwidth rispettivamente che può migliorare fino a due e cinque volte. Il caricamento di dati dalla cache alla FPU sarà più rapido, e richiederà solo sette cicli anziché i vecchi nove.

AMD ha reso più efficienti il prefetching delle cache L1 ed L2, con le informazioni che vengono quindi caricate in anticipo e in maniera più consistente. Infine è stato introdotto il write-back per la cache di livello uno, che concede la capacità di ridurre la latenza e la banda, confermando immediatamente la corretta scrittura delle informazioni al processore.
L'ultima questione saliente dei processori Zen è relativa all'efficienza energetica, che non poteva di certo mancare nella lista. Per abbassare i consumi senza perdere in pure performance, AMD ha pensato all'introduzione di regioni multi-livello ben definite per aggiustare la frequenza di funzionamento delle unità di calcolo. La società adotterà delle tecniche di clock gating piuttosto aggressive, prevedendo molto probabilmente livelli molto densi e poco ampi, per avere un controllo più fine sui clock e quindi sui consumi. Zen è dotata di uno stack engine e del move elimination, una tecnica brevettata da AMD e che impedisce lo spostamento fisico dei dati per portare a termine con successo un generico trasferimento di istruzioni.

Il rinnovato CPU-cycle

Come abbiamo detto, il ciclo della CPU è stato adattato alla nuova piattaforma, per meglio sfruttare le peculiarità di Zen. La prima fase - quella di fetching - prevede un branch predictor distaccato da tutto il resto, con il Translation Lookaside Buffer (TLB) integrato in essa. Per chi non lo sapesse, il TLB è una zona di memoria utilizzata per velocizzare il mapping degli indirizzi virtuali in fisici, compito di cui si occupa l'MMU (Memory Managment Unit). Esso conserva una sorta di tabella che facilita la conversione, e che con Zen ha la stessa struttura a livelli di una cache: l'L0 avrà le 8 corrispondenze più impiegate, l'L1 ne potrà contenere 64 e l'L2 sarà capace di ospitarne 512. Le unità di branching si avvarranno di BTB L1 ed L2 più grossi, oltre ad un return stack da 32 entry. C'è ovviamente la presenza di un Indirect Target Array (ITA) e di una instruction cache a 4 vie, capace di leggere blocchi da 64K e di ricevere in ingresso dalla cache L2 32 byte per ciclo.
Passando al secondo step, di decoding, c'è da dire che esso è provvisto di un decoder per le istruzioni, che in tal caso è inline - cioè non è parallelizzato. Esso riceve le istruzioni dalla instruction cache del livello precedente (fetching), le inserisce in un buffer che le pone in una coda particolare, prima di essere decodificate. Dall'altro lato, una cache dedicata alle operazioni si occupa invece di catturare i cosiddetti Micro Tags generati durante il fetching e di combinarli con le rispettive istruzioni decodificate dal decoding. Dati ed istruzioni sono così pronti per essere elaborati: essi vengono dati in input alla coda delle operazioni, che li invia poi al prossimo passo.
L'ultima fase del CPU-cycle è executing, che effettua il calcolo vero e proprio. Essa mappa, grazie ad un blocco ad hoc, il prodotto del decoding, che viene mandato alle ALU e alle AGU presenti. Queste si occupano di effettuare il calcolo vero e proprio e di assegnare al risultato un indirizzo specifico nella memoria principale. Prima di ciò, però, istruzioni e dati passano attraverso un registro fisico da 168 entry e per alcuni multiplexer, che affidano specifiche operazioni a determinate ALU.

Uno sguardo di livello più alto al core, al caching ed alle nuove istruzioni

Ragionando ad un livello un po' più alto e meno astratto, il blocco base di un'unità di calcolo Zen si chiama core complex. Esso comprende (ad esempio) quattro core connessi ad una cache L3 associativa a 16 vie, in cui il mapping dei dati nella memoria stessa avviene liberamente, senza una stringente politica che stabilisce una specifica collocazione per le informazioni. La cache di livello 3 è divisa in quattro, ognuna comprendente altri sottolivelli più piccoli. Se per esempio nel nostro modello la cache L3 fosse da 8 MB, allora avremmo quattro blocchi da 2 MB, in cui ognuno ospiterebbe due sotto-aree da 1 MB ciascuna. Tutti questi blocchi possono essere utilizzati dai core con la stessa latenza, in quanto nessuno è più veloce degli altri.
Ogni core ha poi una cache privata di secondo livello e, grazie alla sua velocità, le operazioni di prefetching risultano più affidabili in quanto è possibile valutare più opzioni nello stesso lasso di tempo. Segnaliamo inoltre che la cache L3 avrà l'onere di dare alloggio alle victim della L2; questo significa che qualora in quest'ultima dovessero esserci un conflict miss o un capacity miss, i dati interessati non andranno persi ma verranno semplicemente spostati nella cache L3, in cui eventualmente un core che ne ha bisogno può andare poi a pescarli.

AMD ha migliorato il transfer cache-to-cache proprio a tale scopo, ed ha inoltre optato per code più lunghe sia per la cache L1 che la L2, in maniera tale di minimizzare i miss.
A supporto delle nuove e rinnovate operazioni, gli ingegneri della società americana hanno previsto il supporto di numerosi set di istruzioni che mancavano ad Excavator. Segnaliamo per esempio ADX, che estende il supporto al calcolo aritmetico a multipla precisione, oppure SMAP, che impedisce l'accesso alla modalità supervisore (con privilegi di livello "kernel") in alcune circostanze. Set di istruzioni come CLZERO e PTE Coalescing sono invece esclusivi dell'architettura Zen.

Maggiori dettagli sulla nuova architettura potete trovarli nei nostri speciali dedicati:

AMD Zen: le novità della prossima architettura di AMD
AMD Naples: Processore Zen con 32 Core e 64 Thread
AMD Zen: in commercio da fine 2016, ma solo in quantità limitata?

AMD Ryzen I prossimi processori di AMD avranno finalmente design progettato da zero, e non basato su un’architettura di generazione precedente. La società ha purtroppo operato per troppi anni seguendo la seconda strada, che prevedibilmente non ha pagato. Zen è basato invece su un core engine tutto nuovo, su un sistema di caching innovativo - ad ampia banda e bassa latenza - e su un disegno efficiente che sfrutta i vantaggi portati dal processo produttivo FinFET. L’impiego del Simultaneous Multi-Threading è una notizia più che positiva, che finalmente riallinea i processori di Sunnyvale a quelli della rivale sotto questo punto di vista. Intel propone l’Hyperthreading sui suoi modelli da molti anni, con AMD che in sostanza è rimasta quasi a guardare tale tecnologia. La società americana comunque vuole sfruttare Zen anche come trampolino di lancio per il futuro, mantenendosi poi combattiva e almeno a livello dei competitor per gli anni successivi. AMD ha infatti già annunciato il design che arriverà in seguito, chiamato Zen+, e se queste sono le premesse ne vedremo delle belle.