Hot topics:
22 minuti

Ryzen Threadripper e giochi, modalità alla prova

I Ryzen Threadripper offrono diverse modalità operative per adattarsi ai giochi di vecchia o nuova concezione. Qual è la modalità migliore per giocare?

Ryzen Threadripper e giochi, modalità alla prova

Alla ricerca delle modalità migliori

Se bramate molti core e un sacco di connettività PCI Express, come la maggior parte dei creatori dei contenuti, degli avidi multitasker e gli sviluppatori di software, allora Threadripper è quello che fa per voi. Potrebbe essere una buona scelta anche se siete un giocatore che in background usa applicazioni di produttività che sfruttano molti thread.

Il die Zeppelin creato da AMD, alla base di queste CPU, ha un'architettura differente da qualsiasi cosa mai vista prima e questo può creare problemi con alcuni software scritti prima dell'introduzione delle CPU Ryzen. AMD ha lavorato con gli sviluppatori di software per appianare gli intoppi prestazionali che abbiamo identificato al debutto e così, test dopo test, la situazione è migliorata sensibilmente.

threadripper

Threadripper però, a causa della configurazione formata da due die attivi, pone un nuovo insieme di sfide per AMD rispetto alle soluzioni Ryzen. La casa di Sunnyvale ha "risolto il problema" con due interruttori che influenzano il modo in cui opera il processore, offrendovi modalità ottimizzate per il carico di lavoro che state eseguendo. Questi switch creano un totale di quattro configurazioni uniche tra cui scegliere. Al fine di condensare il numero di combinazioni AMD ha creato due modalità, Creator e Game.

Perché c'è bisogno di una Game Mode?

Il die Zeppeling consiste di due CCX - due quad-core - connessi tra loro da Infinity Fabric. Anche sui processori Ryzen 7, 5 e 3 a singolo die questa interconnessione crea un layer di latenza che influeza la comunicazione tra i CCX. AMD si è basata su quel design per i processori Threadripper, lasciando attivi due die Zeppelin. Come potete immaginare, questo introduce un ulteriore layer di latenza legato a Infinity Fabric.

01 PNG

Ogni die ha il proprio controller di memoria e PCIe. Perciò se un thread in funzione su un core deve accedere ai dati residenti nella cache presente su un altro die, deve attraversare l'interconnessione tra questi die, incorrendo in una latenza significativa. Naturalmente il penalty di latenza tra i die è maggiore di quello che c'è tra i CCX nelle configurazioni a singolo die. Per combattere la potenziale regressione prestazionale conseguente a questo approccio, AMD ha ideato una soluzione interessante: ha introdotto un nuovo switch che regola l'accesso alla memoria, attivabile dal BIOS della motherboard o il software Ryzen Master. Le impostazioni Local e Distributed passano tra NUMA (Non-Uniform Memory Access) o UMA (Uniform Memory Access).

01 JPG

UMA (Distributed) è piuttosto semplice: permette a entrambi i die di accedere a tutta la memoria presente. La modalità NUMA (Local) tenta di mantenere tutti i dati del processo da svolgere sul die confinato al controller di memoria direttamente collegato, stabilendo un nodo NUMA per die. L'obiettivo è minimizzare le richieste alla memoria remota collegata all'altro die.

02 JPG

NUMA funziona meglio se i programmi sono stati progettati specificatamente per usarlo. Anche se la maggior parte dei software desktop non è stata scritta con NUMA in mente, sono comunque possibili miglioramenti prestazionali in applicazioni "non NUMA".

Se i giochi non funzionano...

Alcuni giochi semplicemente non si caricano quando sono messi di fronte ai 32 thread di Threadripper. Lo stesso succederà quando Intel introdurrà il top di gamma Skylake-X con 18 core a breve.

03 PNG
04

03 JPG

Di conseguenza AMD ha creato una modalità chiamata Legacy Compatibility che esegue un comando "bcdedit /set numproc XX" in Windows. Questo comanda "taglia" il numero di thread della metà. Fortunatamente a causa dell'allocazione di default da parte del sistema operativo, il comando disabilita tutti i core / thread sul secondo die. Questo ha il beneficio collaterale di eliminare la comunicazione thread-to-thread tra die differenti, risolvendo il problema della costante sincronizzazione tra i thread che induce latenza durante il gaming. Impedisce anche la migrazione dei thread, abbassando la possibilità di cache miss.

Cosa testare?

I due nuovi interruttori ci danno un ricco insieme di opzioni con cui giocare. La preimpostazione Creator di AMD espone 16C/32T e lascia il sistema operativo in modalità di accesso alla memoria distribuito. Queste impostazioni insieme dovrebbero garantire prestazioni eccellenti nella maggior parte dei software di produttività. La modalità Game taglia la metà dei thread tramite la modalità di compatibilità e riduce la latenza di memoria e die-to-die con accesso di memoria locale.

Nel nostro primo approccio con Ryzen avevamo riscontrato che disabilitando SMT le prestazioni di alcuni giochi miglioravano. Questo crea un'altra impostazione da considerare, che espande la lista di configurazioni adottabili. Certo, alcune opzioni hanno poco senso per il gaming, ma potrebbe essere interessante testarle con software normali. Abbiamo ridotto la nostra lista in base alle rilevazioni su Infinity Fabric e la precedente esperienza con i chip AMD.

Configurazioni Local (NUMA) / Distributed (UMA) Legacy Mode (On/Off) SMT (Multi-Threading)
Creator Mode Distributed Off On
Game Mode Local On On
Custom - Local/SMT Off Local Off Off
Custom - Local/SMT On Local Off On

Disabilitare SMT in modalità Game, che già comporta un dimezzamento di core/thread, riduce ulteriormente le risorse di calcolo. Abbiamo quindi lasciato SMT attivo ed entrambi i die attivi. Abbiamo anche lasciato tutti i core/thread attivi, isolando l'accesso di memoria al controller di memoria locale. Abbiamo riscontrato che quella combinazione è particolarmente utile nei titoli che sfruttano i thread nel nostro primo approccio con Threadripper. Ovviamente abbiamo deciso di fare dei test usando le modalità Creator e Game di default.

Sfortunatamente non si può semplicemente intervenire su uno switch e avviare il vostro gioco preferito. Ogni cambiamento richiede un riavvio.

Come detto, la modalità Game taglia della metà il numero di thread, cosa non buona se mentre giocate in background girano software che usano pesantemente i thread. Fortunatamente l'ampiezza di opzioni disponibili dovrebbe permetterci di trovare la configurazione migliore, quella di offrire le migliori prestazioni senza intaccare troppo le risorse di calcolo.

AMD ha progettato i Threadripper principalmente per l'uso su PC dedicati agli appassionati, che tendono a usare monitor ad alta risoluzione. Le risoluzioni più alte dipendono dalle prestazioni della GPU, cosa che riduce la variabilità tra le modalità di funzionamento della CPU. Per meglio illustrare le tendenze prestazionali e massimizzare il nostro tempo di test, abbiamo scelto di testare a 1920x1080, in modo da vedere meglio le sottili differenze tra le varie modalità.

Nel complesso la modalità Game è stata progettata per migliorare la latenza di memoria ed evitare un eccessivo traffico die-to-die tramite Infinity Fabric. Partiamo esaminando in che modo le nostre impostazioni influenzano Infinity Fabric e il sottosistema di memoria.

Test: Infinity Fabric e sottosistema di memoria

L'interconnessione a 256 bit Infinity Fabric lega insieme le risorse all'interno del die Zeppelin. L'adozione di un secondo die Zeppelin per creare Threadripper introduce un altro layer di interconnessione. Gli accessi alla cache rimangono locali su ogni CCX, ma una grande quantità di traffico di memoria, I/O e thread-to-thread passa ancora lungo quel secondo layer.

Infinity Fabric è legato allo stesso dominio di frequenza del controller di memoria, perciò l'overclock della memoria riduce la latenza e aumenta il bandwidth dell'interconnessione. Di conseguenza migliorano le prestazioni nelle applicazioni sensibili alla latenza - come i giochi.

Il test Processor Multi-Core Efficiency di SiSoftware Sandra ci aiuta a illustrare le prestazioni di Infinity Fabric. Usiamo il valore Multi-Threaded con l'impostazione "best pair match" (latenza più bassa). L'utility misura i tempi di ping tra i thread per quantificare la latenza dell'interconnessione in ogni configurazione possibile.

Le misure della latenza intra-core rappresentano la comunicazione tra due thread logici sullo stesso core fisico e, come si può vedere, disabilitare SMT fa sparire quella misura. Per le configurazioni rimanenti, l'overclock riduce la latenza di qualche nanosecondo. Come abbiamo visto in passato, le frequenze di memoria più alte hanno un effetto contenuto sulla latenza intra-core.

Image4
Image3

Le misure di latenza Intra-CCX quantificano la latenza tra i thread sullo stesso CCX ma che non sono residenti sullo stesso core. Aumentare la frequenza porta a riduzioni di latenza oltre ~6ns.

La voce Cross-CCX quantifica la latenza tra i thread su due CCX separati, e vediamo una simile riduzione dei tempi grazie all'overclock. Come si può vedere Ryzen 7 1800X ha una latenza Cross-CCX molto più bassa del processore Threadripper in configurazione standard e della maggior parte delle configurazioni overcloccate.

Questo è probabilmente dovuto a una qualche forma di provisioning, possibilmente nello scheduling gli algoritmi, per il layer di interconnessione ulteriore di Threadripper.

Come si può vedere la CPU Threadripper overcloccata in modalità Game, che non ha un collegamento dell'interconnessione attivo verso l'altro die, ha la latenza Cross-CCX più bassa.

Die-To-Die misura la comunicazione tra i due die Zeppelin separati. La modalità Game disabilita efficacemente il secondo die Zeppelin a livello di sistema operativo, eliminando totalmente la latenza die-to-die. L'uncore del secondo die è comunque ancora attivo, cosa necessaria affinché I/O e controller di memoria siano accessibili.

La modalità Creator soffre della latenza die-to-die peggiore, ma l'overclock aiuta considerevolmente. Le due opzioni SMT - on e off - godono anch'esse di grandi riduzioni legate all'overclock.

L'utility misura anche il bandwidth dell'interconnessione, che è critico per le prestazioni poiché i dati recuperati dalla memoria remota scorrono anche attraverso l'interconnessione. Come tale, AMD fa l'overprovisioning dell'interconnessione e il sottosistema di memoria per ottimizzare l'architettura di memoria distribuita.

Sia la modalità Creator che le configurazioni Local/SMT offrono il miglior bandwidth, godendo di grandi aumenti dall'overclock. Ryzen 7 1800X finisce a metà del grafico, insieme alla modalità Game di Threadripper, il che è logico considerando che sono entrambe configurazioni 8C/16T. Disabilitare SMT con entrambi i die attivi (Local/SMT off) permette di avere un profilo unico che garantisce prestazioni maggiori con accessi più grandi e prestazioni minori con accessi più piccoli.

Cache e latenza memoria

Abbiamo testato con memoria DDR4-2666 a impostazioni stock e siamo passati a DDR4-3200 per le configurazioni overcloccate.

Il Translation Look Aside Buffer è una cache che riduce i tempi di accesso archiviando gli indirizzi di memoria a cui si è fatto accesso di recente. Come tutte le cache, TLB ha una capacità limitata, quindi le richieste d'indirizzo che finiscono in TLB sono "hits", mentre quelle che finiscono fuori dalla cache sono "misses". Ovviamente gli "hits" sono più desiderabili e un prefetcher efficace porta a un maggior tasso di "hits".

I modelli di accesso sequenziale sono quasi interamente pescati da TLB, quindi il test sequenziale è una buona misura delle prestazioni del prefetcher. Il test in-page random misura gli accessi casuali all'interno della stessa pagina di memoria. Misura anche le prestazioni TLB e rappresenta le prestazioni casuali nel caso migliore - questa è la misura che i produttori usano ufficialmente. Il test  full random ha un mix di "hits" e "misses" TLB, con una forte probabilità di "misses", quindi quantifica la latenza nel caso peggiore.

Modello di accesso alla memoria a parte, i pezzi di dati più piccoli rientrano nella cache L1. E con l'aumentare delle dimensioni, popolano la cache più grandi.

  L1 L2 L3 Memoria principale
Range 2KB - 32KB 32KB - 512KB 512KB - 8MB 8MB - 1GB
Image1
Image7
Image2

Threadripper 1950X ha migliore latenza L2 e L3 rispetto a Ryzen 7 1800X con ogni tipo di modello d'accesso. Inoltre, osserviamo una notevole riduzione della latenza dovuta all'overclock per le cache L1, L2 e L3 di Threadripper.

Ciò cambia quando il carico fluisce verso la memoria principale. La modalità Creator di Threadripper - l'impostazione di default - ha la latenza più alta a ogni modello d'accesso. Questo è un risultato diretto degli accessi di memoria che interessano la memoria remota. Le nostre misure in-page rispecchiano la specifica 86,9ns di AMD, ma l'intero accesso casuale nel caso peggiore supera 120ns. Overcloccare processore e memoria riduce la latenza, ma la modalità Creator non supera comunque alcuna delle configurazioni con cui la confrontiamo.

Passare in modalità NUMA con impostazione Local migliora drasticamente l'accesso alla memoria principale per le altre configurazioni. Misuriamo circa 60 ns per un accesso di memoria in-page near, nuovamente in linea con le specifiche AMD, mentre la latenza peggiore è di 100ns.

Bandwidth cache

Ogni CCX ha le proprie cache, quindi una CPU Threadripper ha quattro cluster distinti di L1, L2 e L3. Il nostro benchmark sul bandwidth illustra le prestazioni aggregate di questi livelli.

Durante il test single-thread, Ryzen 7 1800X dimostra un throughput inferiore rispetto ai Threadripper. Le altre configurazioni si aggregano in gruppi prevedibili a impostazioni stock e overcloccate.

Image6

Image5

I test multi-thread sono molto più interessanti; vediamo Ryzen 7 1800X e le due modalità Threadripper Game finire in fondo al grafico. Poiché la modalità Game disabilita i core in un die, disabilita effettivamente la cache corrispondente.

Continua a pagina 2
AREE TEMATICHE
Vuoi ricevere aggiornamenti su #CPU?
Iscriviti alla newsletter!