Tom's Hardware Italia
CPU

Game Mode, architettura e test latenza Infinity Fabric

Pagina 15: Game Mode, architettura e test latenza Infinity Fabric
Recensione del processore Ryzen Threadripper 1950X con 16 core e 32 thread, soluzione HEDT che sfida l'offerta Core i9 di casa Intel.

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.

01 PNG
Clicca per ingrandire
Ryzen Die Shot 1
Clicca per ingrandire

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.

Threadripper 01
Threadripper 02

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 03

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.

threadripper profiles
Clicca per ingrandire

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.