1. Architettura AMD Ryzen - Parte prima
A cura di Salvatore Campolo
A motivo dell'insufficiente incisività sul mercato dei prodotti della precedente famiglia di CPU FX con architettura Excavator a 28 nanometri, che non hanno saputo recuperare in termini prestazionali nei confronti delle CPU Intel, AMD ha dovuto portare avanti in maniera fortemente determinata, nel corso degli ultimi quattro anni, il progetto per lo sviluppo di un'innovativa microarchitettura x86 con l'assoluta necessità di dover garantire maggiori prestazioni ed un consistente abbattimento dei consumi.
Questa nuova architettura, denominata ZEN, si pone a fondamento di tutte le CPU del produttore californiano, odierne e future, tra cui quelle del segmento desktop attuale, nome in codice Summit Ridge e commercialmente denominate Ryzen, di cui si pone al top il Ryzen 7 1800X utilizzato in questa recensione.
ZEN prende forma dall'evoluto processo produttivo a litografia ottica a 14 nanometri FinFET che la fonderia statunitense GlobalFoundries, partner privilegiato dell'azienda californiana, ha ingegnerizzato nel proprio stabilimento più tecnologicamente avanzato, Fab 8, situato negli U.S.A. nella contea di Saratoga (NY).
Auspicando la propria rinascita con questa nuova microarchitettura, AMD ha puntato più che mai sull'importanza del concetto esteso di modularità , focalizzandolo sostanzialmente su un nucleo computazionale quad core denominato CCX (CPU Complex).
Col suo moderno disegno a bassa-potenza, ZEN riesce a fare largo uso di una serie di nuove tecnologie proprietarie, tra le quali la più rilevante può essere considerata la SMT (Simultaneous Multi-Threading) a due vie: si tratta, invero, di una completa rivisitazione della vecchia tecnologia Clustered Multi-Threading adottata nel 2011 dallo stesso produttore come novità , allora integrata nell'architettura Bulldozer.
Divenuta, durante il periodo di questo nuovo sviluppo, una tecnologia del tutto matura e le cui strutture sono ora pienamente disponibili anche in modalità single-thread, SMT è in grado di rendere disponibili da un nucleo quad core, un insieme di otto thread logici, ricalcando quello che dai tempi dell'introduzione di Hyper-Threading accade sulle CPU Intel.
A livello ISA (Instruction Set Architecture) ZEN vede l'aggiunta di otto nuove estensioni, delle quali le ultime due, della seguente lista, sono esclusive AMD:
- ADX (supporto alla multi-precisione aritmetica);
- RDSEED (complemento a RDRAND per la generazione di numeri random);
- SMAP (prevenzione all'accesso in modalità Supervisor);
- SHA1/SHA256 (implementazione del Secure Hash);
- CLFLUSHOPT (CLFLUSH ordinato tramite SFENCE, utile per svuotare una linea di cache);
- SAVEC/XSAVES/XRSTORS (nuovo SAVE/RESTORE in modalità Supervisor);
- CLZERO (pulizia diretta, in un singolo ciclo, del contenuto di una linea di cache);
- PTE Coalescing (unione di tabelle di pagine 4K in una singola pagina 32K).
All'interno di ogni singolo modulo CCX, ciascuno dei quattro core in architettura ZEN vede la disponibilità di due unità Load/Store che supportano 72 caricamenti fuori ordine, quattro unità per interi in grado di trasferire sei micro-op per ciclo di clock, due unità in virgola mobile costituite da 4 pipes, 2 Fadd + 2 Fmul, in grado di trasferire quattro micro-op per ciclo, ed infine due unità per la generazione degli indirizzi.
Alla luce di queste caratteristiche, un modulo CCX è pertanto accreditato per giungere ad effettuare il fetching di sedici istruzioni per ciclo di clock.
In merito alla gerarchia della cache, ciascun core risulta direttamente asservito da tre livelli di memoria statica, tutti composti da linee dati ampie 64byte.
I primi due livelli, L1 a 4 vie e L2 a 8 vie, sono accessibili in modalità esclusiva per ciascun core e prevedono caratteristiche dei prefetcher migliorate rispetto al passato, mentre per L3 a sedici vie è stato pensato un modello di accesso di tipo condiviso di tutti e quattro i core.
Una novità assoluta per AMD è l'adozione di una nuova cache micro-op (tipicamente RISC) con associatività ad otto vie ed in grado di gestire 2K micro-op: si tratta in pratica di una cache di livello zero dove mantenere le istruzioni appena decodificate ed in grado di bypassare, all'evenienza, ulteriori fasi di decodifica.
Alla base dell'adozione di questo nuovo sistema di cache insistono una serie di algoritmi di analisi del comportamento della CPU, sviluppati da AMD appositamente per ZEN: tali funzionalità sono racchiuse nell'ambito di un nuovo nucleo di caratteristiche, denominato Neural Net Prediction, rientrante a sua volta nell'insieme di tecnologie SenseMI.
Questa tecnologia di ispirazione neurale assume significato non solo nell'utilità di evitare ripetute decodifiche nelle circostanze di frequente uso della medesima sezione di codice, ma diviene essenziale nel tentativo, real-time, di mantenere conoscenza delle attività intraprese dalla CPU sull'applicazione in esecuzione e, basandosi sulle scelte susseguitesi, ottenerne strategicamente un vantaggio arrivando ad ipotizzarne, ed in qualche modo anticiparne, quelle future.
Volendo nello specifico forzare in qualche modo un raffronto, neppure tanto azzardato però, il concetto alla base di questa rete neurale offerta da ZEN sembra avere, oltre l'assonanza, diversi punti di contatto con le finalità dell'insieme di algoritmi definiti "Neural Branch Prediction", sviluppati nel 2001 dal Prof. Daniel Jimenez della Rutgers University ed applicati a suo tempo da Intel sulle CPU di classe Itanium (IA64).
In un'ottica tipicamente funzionale, la cache L1 di ZEN, descritta da AMD "a bassa latenza", fa ora uso della più performante policy write-back, mentre dal punto di vista dei quantitativi di memoria statica (SRAM) utilizzati per ogni core, ne sono previsti 64kB sul lato istruzioni (L1 instructions-cache, 32byte fetch per ciclo) e 32kB per i dati (L1 data-cache, 2x16byte loads e 16byte store per ciclo).
Il secondo livello di cache (L2) risulta predisposto tramite un'associatività ad otto vie, viene asservito da 512kB di SRAM e anch'esso fa uso di policy write-back; ciò ha consentito all'architettura ZEN di raddoppiare il bandwidth rispetto a quanto offerto in precedenza dall'analogo livello di cache adottato nelle CPU di classe Bulldozer.
Il terzo livello (L3), costituito da 8MB di cache, è di tipologia non-inclusiva e viene mantenuto operativo alla medesima velocità del core con la frequenza più elevata, risultando pertanto privo di penalizzazioni di latenza; come già accennato, questa L3 presenta un'associatività a sedici vie ed è aperta alle richieste di tutti i quattro core, risultando quindi in piena condivisione all'interno del modulo CCX con uno schema a segmentazione, suddivisa funzionalmente in quattro elementi da 2MB ciascuno.
Le strategie finalizzate per questo ulteriore livello, come anzidetto non-inclusivo, prevedono quindi la non-replica dei dati presenti in ciascuna delle singole cache di livello inferiore (L2) dei quattro core CCX: la L3 di ZEN opera, difatti, sostanzialmente da victim cache dei due livelli inferiori.
Per rendere efficace questo sistema AMD ha deciso, nel particolare, di adottare un prefetcher con un sofisticato sistema di apprendimento finalizzato alla raccolta in modalità speculativa dei dati fuoriusciti da ciascuna delle quattro L2, in modo da renderli immediatamente disponibili, all'evenienza, per una quanto più rapida successiva esecuzione.
La tecnologia appena descritta fa parte del sistema SenseMI e costituisce in sostanza la seconda caratteristica sviluppata in ambito cache dal team di ingegneri, cioè quella che AMD definisce Smart Prefetch.
E' in sintesi un sistema che lavora, possiamo dire, serialmente in fase con Neural Net Prediction e permette, a seguito di un complesso insieme di algoritmi, di individuare la locazione del dato che verrà richiesto nel successivo ciclo di clock permettendo, così, un efficace pre-caricamento dell'indirizzo diretto in SRAM ed evitando di indurre ritardi in fase di esecuzione.
Tali particolari tecnologici e funzionali hanno permesso alla cache L3 di ZEN di ottenere un bandwidth quattro volte superiore ed un sensibile abbattimento del consumo energetico rispetto a quanto accadeva con la precedente generazione di CPU dell'azienda di Sunnyvale.
A motivo dell'insieme di questo innovativo disegno e di tutte le caratteristiche introdotte, AMD è stata in grado di innalzare il valore di IPC del 52% rispetto alla precedente generazione di CPU FX di classe Excavator.