Infinity Fabric: croce e delizia

Recensione AMD Ryzen 5 1600X, processore con 6 core e 12 thread basato su architettura Zen.

Avatar di Andrea Ferrario

a cura di Andrea Ferrario

Editor in Chief

Si fa molto parlare, con tanto di test, sul fatto che una memoria più veloce migliori le prestazioni di gioco di Ryzen. La teoria è che la velocità dell'Infinity Fabric è legata alla frequenza della memoria e, in base ad alcuni test mirati, sembra essere così.

Il blocco base dell'architettura Zen è un CCX (CPU Complex) con quattro core. AMD dota ogni CCX di 8 MB di cache L3 16-way associative suddivisa in quattro parti; ogni core nel CCX accede a questa cache L3 con la stessa latenza media. I due CCX, affiancati per creare il die di un processore Ryzen 7 a otto core, comunicano tramite l'interconnessione Infinity Fabric.

I CCX condividono anche lo stesso controller di memoria. Abbiamo fondamentalmente due CPU quad-core che si parlano l'un l'altra tramite un canale dedicato: Infinity Fabric, un crossbar bidirezionale a 256 bit che gestisce anche il traffico northbridge e PCIe. La grande quantità di dati che vi passano all'interno richiede un grande lavoro di scheduling per assicurare che tutto funzioni a dovere. È inoltre logico assumere che i modelli a sei e quattro core beneficino del minor traffico tra i CCX rispetto ai modelli a otto core.

die ryzen

Clicca per ingrandire

I dati che sono spostati tra i CCX sottostanno a una latenza maggiore, quindi l'ideale sarebbe evitare del tutto questo viaggio, se possibile. Tuttavia molti thread potrebbero essere forzati a migrare tra i due CCX, portando a dei cache miss sulla cache L3 locale di ogni CCX. I thread potrebbero inoltre dipendere dal dato negli altri thread in funzione sull'altro CCX, e questo aggiunge ulteriore latenza a discapito delle prestazioni generali.

Intel usa un bus a doppio anello (dual ring) che serve in gran parte allo stesso scopo. Non soffre però dello stesso penalty di latenza tra i core grazie al suo design contiguo e ai due anelli indipendenti. Anche se AMD non l'ha confermato, sospettiamo che Infinity Fabric sia una connessione singola e non doppia.

Infinity Fabric conferisce ad AMD un vantaggio strategico per portare sul mercato i processori server Naples a 32 core con quattro CCX per package. L'interconnessione è più scalabile del ring bus di Intel, che si scontra con un aumento di latenza in conseguenza all'aggiunta di più core. Però, chiaramente, questa soluzione ha anche le sue debolezze. Il progetto di Intel potrebbe essere più limitato in termini di scaling, ma l'azienda usa già una topografia mesh con i suoi prodotti Knight Landing per risolvere il problema. È possibile che i futuri processori desktop di Intel offriranno qualcosa di simile.

Dalla teoria alla pratica

Misurare in modo preciso la latenza del bus è complesso. Fortunatamente SiSoftware ha recentemente presentato Sandra Business Platinum che include un nuovo test Processor Multi-Core Efficiency. È in grado di misurare la latenza "inter-core, inter-module e inter-package" in diverse configurazioni usando test Multi-Threaded, solo Multi-Core e Single-Threaded. Abbiamo usato il test Multi-Threaded con l'impostazione "best pair match" (latenza più bassa) per i nostri scopi.

Per prima cosa abbiamo misurato la latenza tra core e core sul Core i7-7700K con Hyper-Threading di Intel per stabilire una base per i processori Ryzen con SMT. I risultati della soluzione Intel si sono rivelati incredibilmente costanti tra le sessioni. In netto contrasto le CPU Ryzen, che hanno mostrato variazioni tra una sessione e l'altra.

Core i7-7700K, data rate memoria Latenza Inter-Core Latenza Core-To-Core Media Core-To-Core
1333 MT/s 14.8ns 38.6 - 43.2ns 41.5ns
2666 MT/s 14.8ns 29.4 - 45.5ns 42.13ns
3200 MT/s 14.7 - 14.8ns 40.8 - 46.5ns 43.08ns

La rilevazione "inter-core" quantifica la latenza tra thread che sono residenti sullo stesso core fisico, mentre i numeri "core-to-core" riflettono la latenza "thread-to-thread" tra due core fisici. Come possiamo vedere, ci sono leggeri miglioramenti all'aumentare del data rate della memoria sul nostro Core i7, progressi pari a solo al 4%. Ciò spiega, almeno in parte, perché non vediamo miglioramenti netti con l'overclock della memoria sulle piattaforme Intel.

Core i7-7700K, data rate memoria Latenza Inter-Core Latenza Core-To-Core Media Core-To-Core
1333 MT/s 12.9 - 13.3ns 38.3 - 41.1ns 39.59ns
2666 MT/s 12.9ns 34.5 - 39.9ns 37.67ns
3200 MT/s 12.9ns 36.1 - 39.2ns 37.8ns

Dopo aver aumentato la frequenza della CPU a 5 GHz abbiamo osservato una riduzione quantificabile della latenza inter-core e core-to-core.

Ryzen 5 1600X, data rate memoria Intervallo latenza Inter-Core Latenza Inter-CCX Core-to-Core Latenza Cross-CCX Core-to-Core Latenza media Cross-CCX % aumento da 1333
1333 MT/s 14.8 - 14.9ns 40.4 - 42.0ns 197.6 - 229.8ns 224ns Baseline
2666 MT/s 14.8 - 14.9ns 40.4 - 42.6ns 119.2 - 125.4ns 120.74ns 46%
3200 MT/s 14.8 - 14.9ns 40.0 - 43.2ns 109.8 - 113.1ns 111.5ns 50%

Test ripetuti sul nostro Ryzen 5 1600X hanno mostrato maggiore variabilità tra le sessioni, quindi i numeri che vedete sono la media di due sessioni di test. I dati della latenza inter-core rappresentano la comunicazione tra due thread logici residenti sullo stesso core fisico, e non sono influenzati dalla velocità di memoria. Le rilevazioni Inter-CCX quantificano la latenza tra i thread sullo stesso CCX ma che non sono residenti sullo stesso core. Abbiamo osservato leggere variazioni, ma anche la latenza inter-CCX non è ampiamente influenzata dalla velocità della memoria.

Cross-CCX quantifica la latenza tra i thread posti su due CCX separati, e come possiamo vedere, c'è un penalty evidente associato al passaggio nell'Infinity Fabric. Impostare un data rate di memoria maggiore riduce la latenza di Infinity Fabric, anche se i miglioramenti sono ridotti.

Raddoppiare il data rate da 1333 a 2666 MT/s garantisce un incremento prestazionale del 46%. Saltare di un altro 20% a 3200 MT/s restituisce solamente una riduzione del 4% nella latenza cross-CCX. Abbiamo testato anche il nostro overclock a 4 GHz rispetto ai 3,7 GHz base del 1600X, ma la latenza non è stata quasi influenzata.

inter core bandwidth

Durante i nostri test ci siamo anche occupati del bandwidth Inter-Core, e vediamo dei buoni progressi con piccoli pezzi di dato che popolano la cache L1. Non appena la dimensione del dato cresce, questi finiscono nelle cache L2 e L3, e poi incontrano la memoria di sistema (estrema destra del grafico).

Anche se questo breve esperimento si concentra solo su Ryzen 5 1600X, abbiamo intenzione di approfondire il tema con tutte le CPU Ryzen disponibili. Ci sono così tante possibili combinazioni da testare, incluse SMT e vari profili energetici, che potrebbero influenzare le prestazioni di Infinity Fabric. Rimanete sintonizzati.

...non è ancora possibile misurare le prestazioni della cache

Nell'articolo su Ryzen 7 1800X è venuto alla luce che AMD non è d'accordo con la metodologia di test della cache messa a punto dai principali produttori di software. La posizione dell'azienda non è cambiata, nonostante gli aggiornamenti.

Gli strumenti a disposizione continuano a produrre risultati non chiari per i processori Ryzen. Anche se servono ulteriori indagini, crediamo che i software stiano usando insiemi di dati più grandi delle dimensioni delle cache disponibili e/o inavvertitamente inserendo i dati dell'accesso alla DRAM nei risultati della cache.

Per quanto riguarda Ryzen 5, crediamo che questi software facciamo ipotesi errate sulla dimensione e/o topologia della gerarchia della cache dei modelli 1500X e 1600X. Continuiamo a lavorare con le aziende, confrontandoci al fine di avere risultati più precisi dai loro software.

cache latency

cache amd

Abbiamo usato il test di latenza cache di Sandra, che produce risultati simili ai numeri di riferimento di AMD. Come potete vedere nel grafico la latenza L1 (estrema sinistra) è di 1,1ns, la L2 tocca 4,8ns e la L3 registra 10,2ns. Di contro sembra che Intel goda di un vantaggio considerevole nella latenza della cache.

Abbiamo anche testato il bandwidth con altri software nel tentativo di rispecchiare i risultati di AMD, ma abbiamo notato una grande disparità nei numeri delle cache L2 e L3. Includiamo i numeri interni di AMD e continuiamo a discutere con i produttori di software per arrivare ad avere rilevazioni precise.