Ci siamo occupati dell'architettura Zen in dettaglio e anche di Infinity Fabric. Date un'occhiata a quegli articoli per avere maggiori informazioni.
Zeppelin ovunque
L'enorme package di Threadripper nasconde tanta complessità, ma faremo del nostro meglio per semplificare e spiegare come si relaziona con le nuove Creator e Game Mode messe in campo da AMD.
L'architettura Zen usa un CCX quad-core (CPU Complex). AMD dota ogni CCX di 8 MB di cache L3 suddivisa in quattro slice; ogni core nel CCX accede a tutti gli slice L3 con la stessa latenza media. Due CCX permettono di creare un die a 8 core Ryzen 7 (il grande blocco arancione nella seconda immagine sotto), e i due comunicano tramite Infinity Fabric. I CCX condividono lo stesso controller di memoria dual-channel. Di fondo abbiamo due CPU quad-core che parlano tra loro tramite l'interconnessione Infinity Fabric che gestisce anche il traffico northbridge e PCIe.
Tutti i Ryzen 7, 5 e 3 integrano lo stesso singolo die Zeppelin. Anche se ogni core in un CCX quad-core può accedere alla cache locale con la stessa latenza media, il "viaggio" per recuperare il dato in CCX adiacenti è penalizzante sul fronte della latenza. A soffrire è anche la comunicazione tra i thread sui core in CCX separati, cosa molto importante per il gaming. Diversi motori di gioco suddividono i vari compiti in thread differenti, ma dipendono dalla costante sincronizzazione tra loro. Gli sviluppatori possono compensare parte della latenza di comunicazione ottimizzando per l'architettura Ryzen.
Costruire Threadripper
Il grafico sotto rappresenta il die di un processore server AMD EPYC, che condivide lo stesso progetto di base di Threadripper. Possiamo vedere quattro die Zeppelin separati connessi tramite Infinity Fabric, e quattro CCX all'interno di ogni die. Questo crea un Multi-Chip Module (MCM) a 32 core. Threadripper è "solo" un processore a 16 core. Per creare questa configurazione AMD adotta due die "falsi", i quali sono riempitivi non funzionanti che assicurano l'integrità strutturale dell'heatspreader e un accoppiamento coerente con i pin del socket. Senza questi die spenti, l'IHS potrebbe piegarsi quando fissateil dissipatore, o il chip potrebbe flettersi e non fare pieno contatto con i pin. AMD dice che i die funzionanti di Threadripper sono sempre posti diagonalmente l'uno con l'altro, il che ha senso considerando il progetto dell'interconnessione.
Ricordate, ogni die Zeppelin ha i propri controller di memoria e PCIe. Questo significa che se un carico che si svolge su un die ha bisogno di accedere a un dato che risiede nella memoria dell'altro die (la memoria "lontana" di cui parlavamo prima), deve attraversare una maggior distanza. Questo introduce un livello di latenza che non avevamo visto nei precedenti modelli Ryzen, e il suo effetto sulle prestazioni gaming è marcato. L'impatto non è così severo con la maggior parte dei carichi professionali, ma alcuni ne risentono.
Gli interruttori "magici"
Per alleviare l'impatto dell'accesso alla memoria "lontana" AMD ha introdotto una nuova modalità di accesso alla memoria che può essere attivata nel BIOS o tramite il software Ryzen Master. Le impostazioni Local e Distribuited permettono di passare a NUMA (Non-Uniform Memory Access) o UMA (Universal Memory Access).
UMA (distributed) è piuttosto semplice; permette ai die di accedere a tutta la memoria collegata. La modalità NUMA (local) cerca di mantenere tutti i dati per l'esecuzione del processo sul die confinato al suo controller di memoria direttamente connesso. Questo riduce e possibilmente elimina, il recupero di dati dalla memoria "lontana" connessa a un altro die. NUMA affonda le sue radici nel mondo enterprise, ma la tecnica funziona meglio se i programmi sono progettati per usarla. È una rarità in ambito desktop, e anche se quasi nessun software desktop la supporta, possono esserci vantaggi prestazionali per i software non NUMA.
Threadripper introduce più core sui PC desktop rispetto a quanto visto in passato; alcuni programmi di conseguenza sono presi in contropiede. Giochi come Far Cry Primal e la serie DiRT non funzionano nemmeno usando Threadripper al massimo delle sue potenzialità. Questo è un problema, quindi AMD ha creato una "modalità compatibile" che disattiva metà core del processore tramite l'esecuzione di un comando "bcdedit /set numproc XX" in Windows che in effetti disattiva metà del processore. Fortunatamente a causa dell'assegnazione dei core da parte del sistema operativo, il comando disattiva tutti i core/thread sul secondo die. Questo ha il beneficio collaterale di eliminare la comunicazione thread-to-thread su die separati, e si rivela una grande soluzione alla costante sincronizzazione tra thread durante la maggior parte dei carichi gaming.
Dato che questo cambiamento è fatto in software, il die "disattivato" è ancora alimentato, quindi il sistema può ancora accedere ai controller di memoria e PCIe del die inattivo.
Game Mode e Creator Mode
Quindi che fare con queste modalità? Ci sono quattro combinazioni separate che impattano su ogni software o gioco in modo diverso, quindi dovete provarle tutte per trovare la combinazione migliore possibile per il vostro carico. Questa è una fortuna per chi ama spremere ogni goccia prestazionale dal sistema, ma è un incubo per tutti gli altri.
AMD ha deciso di semplificare il processo indicando due combinazioni che funzioneranno al meglio per giochi e software standard. Creator mode, che è la configurazione stock, "abilita" tutti e 32 i thread. Dovrebbe offrire prestazioni eccellenti con la maggior parte dei software di produttività.
Game mode taglia metà dei core tramite la modalità di compatibilità e riduce la memoria e la latenza die-to-die con la modalità di memoria Local. Testeremo entrambe le configurazioni con i giochi, e inoltre proveremo un'altra configurazione che offre tutti i thread.
Test latenza Infinity Fabric
La comunicazione tra i die aggiunge un altro strato di latenza alla complicata architettura di Ryzen. Presentano anche delle sfide in alcuni applicazioni, come quelle con thread sincronizzati o che devono recuperare dati frequentemente da memoria lontana, ma hanno meno impatto in altre.
Latenza intra-Core | Latenza intra-CCX Core-to-Core | Latenza Cross-CCX Core-to-Core | Latenza media Cross-CCX | Latenza Die-to-Die | Latenza media Die-To-Die | Transfer Bandwidth medio | |
---|---|---|---|---|---|---|---|
TR 1950X Creator Mode DDR-2666 | 13.7 - 14.1 | 39.4 - 43.2ns | 157.6 - 171.3 | 168ns | 180.6 - 256.7ns | 238.47ns | 90.26 GB/s |
TR 1950X Creator Mode DDR4-3200 | 13.8 - 14.9 | 39.2 - 45.4ns | 144.9 - 167.2ns | 160.1ns | 213.1 - 227.8ns | 216.9ns | 91.67 GB/s |
TR 1950X Game Mode DDR4-2666 | 13.9 - 14.2ns | 39.5 - 42.3ns | 149.2 - 164.1ns | 159.66ns | X | X | 46.58 GB/s |
TR 1950X Game Mode DDR4-3200 | 14.3 - 14.9ns | 41.2 - 46.2ns | 123 - 150.6ns | 145.44ns | X | X | 45.52 GB/s |
TR 1950X Local/SMT DDR4-2666 | 13.9 - 14.4ns | 39.6 - 43.1ns | 168.7 - 175.4ns | 171.48ns | 232.4 - 240.8 | 235.38ns | 92.7 GB/s |
TR 1950X Local/SMT DDR4-3200 | 13.9 - 14.4ns | 39.9 - 44.5ns | 146.7 - 159.4ns | 153.89ns | 209.3 - 220.9ns | 212.53ns | 91 GB/s |
Ryzen 7 1800X | 14.8ns | 40.5 - 82.8ns | 120.9 - 126.2ns | 122.96ns | X | X | 48.1 GB/s |
Ryzen 5 1600X | 14.7 - 14.8ns | 40.6 - 82.8ns | 121.5 - 128.2ns | 123.48ns | X | X | 43.88 GB/s |
La misura della latenza intra-core rappresenta la comunicazione tra due thread logici residenti sullo stesso core fisico e non sono influenzati dalla velocità della memoria. Le misure intra-CCX quantificano la latenza tra thread che sono sullo stesso CCX ma non risiedono sullo stesso core. In passato abbiamo osservato variazioni prestazionali leggere, ma la latenza intra-CCX è anch'essa ampiamente non influenzata dalla velocità della memoria. Tuttavia, abbiamo visto un grande calo nella latenza cross-CCX, la quale denota la latenza tra thread posti su due CCX separati, tramite l'aumento del data trasfer rate di memoria da DDR4-1333 a DDR4-3200 sui modelli Ryzen 5 e Ryzen 7.
Lo stesso trend generale continua con Threadripper. Come potete vedere la Game Mode rimuove la latenza die-to-die per i thread disabilitando effettivamente un die, ma riduce anche le risorse di calcolo. È una caratteristica interessante che darà benefici con alcuni carichi, ma creerà problemi in altri.
Notiamo anche che la combinazione Local/SMT, che consiste nell'impostazione local e lascia tutti i core attivi (legacy off), offre il miglioramento migliore di latenza generale tramite l'overclock della memoria. Abbiamo anche registrato una latenza cross-CCX più alta con i processori Threadripper.
Processore | Latenza intra-Core | Latenza Core-To-Core | Latenza media Core-To-Core | Transfer Bandwidth medio |
---|---|---|---|---|
Core i9-7900X | 14.5 - 16ns | 69.3 - 82.3ns | 75.56ns | 83.21 GB/s |
Core i9-7900X @ 3200 MT/s | 16 - 16.1ns | 76.8 - 91.3ns | 83.93ns | 87.31 GB/s |
Core i7-6950X | 13.5 - 15.4ns | 54.5 - 70.3ns | 64.64ns | 65.67 GB/s |
Core i7-7700K | 14.7 - 14.9ns | 36.8 - 45.1ns | 42.63ns | 35.84 GB/s |
Siamo nel mezzo di una serie di test più ampia per quantificare come queste modalità impattano sul bandwidth e la latenza di memoria, tra le tante cose. Restate sintonizzati.