Hot topics:
19 minuti

Meltdown e Spectre, l'impatto delle patch sul gaming

Facciamo il punto sulle prestazioni in ambito gaming post Spectre e Meltdown. Le patch pubblicate sinora impattano sulle prestazioni?

Meltdown e Spectre, l'impatto delle patch sul gaming

10 CPU alla prova nel post Spectre e Meltdown

Immaginate che quasi tutti i PC, server e smartphone al mondo siano improvvisamente vulnerabili a furti di dati da parte di malintenzionati. Poi immaginate che l'exploit responsabile di questa vulnerabilità non sia rilevabile dai software antivirus perché sfrutta il normale funzionamento delle CPU. Sembra o no un film dell'orrore a tema informatico? No, è semplicemente il copione che la realtà ci ha propinato per l'inizio di questo 2018.

Ripercorriamo i fatti. Nei primi giorni di gennaio il sito The Register dà notizia dell'esistenza di alcune gravi vulnerabilità nei processori di Intel. Le falle erano state scoperte 200 giorni prima dal team Project Zero di Google, insieme ad altri due team indipendenti. Nelle ore successive la notizia emerge che i ricercatori e le aziende del settore avevano deciso di mantenere il silenzio attorno alla vicenda, in modo da sviluppare correttivi prima di rendere il fattaccio pubblico.

intro

Per inciso, le vulnerabilità - Spectre e Meltdown - non interessano solo le CPU di Intel, ma anche quelle di AMD, IBM, Qualcomm e i progetti su base ARM, seppur in modo diversi. L'uscita anticipata della notizia ha forzato un'iniziale risposta - patch di Windows, Linux e non solo - a dir poco caotica, una commedia degli errori che ha portato alla pubblicazione di patch non testate a sufficienza, anche a fronte dei mesi a disposizione per sviluppare le correzioni.

Questo non significa voler dileggiare chi sta lavorando alle contromisure: le falle sono presenti nell'hardware e nel software da oltre un decennio. Quasi ogni processore Intel dal 1995 è vulnerabile, quindi sistemare il problema senza mettere a rischio la compatibilità non è affatto semplice.

Fin dalla pubblicazione della notizia di The Register si supponevano implicazioni prestazionali legate alle patch. A distanza di un mese dagli sforzi dell'industria per sistemare la situazione, è tempo di iniziare a capire la portata dei danni. Partiamo dalle prestazioni di gioco.

Facciamo chiarezza

Ci sono due vulnerabilità che riguardano le CPU e che sono suddivise in tre categorie. Le varianti 1 e 2 sono quelle note come Spectre, mentre la variante 3 è chiamata Meltdown. I prodotti di Intel, ARM e Qualcomm sono soggetti a tutte e tre le varianti, quelli AMD solo a Spectre.

intro 1
Clicca per ingrandire

Come si può vedere qui sopra, le varianti 1 e 3 possono essere affrontate aggiornando il sistema operativo, mentre il problema più nefasto, la variante 2, richiede patch del sistema operativo e del firmware/microcode della motherboard.

Come già scritto, la risposta iniziale dell'industria è stata costellata di update immaturi e "buggati". Inoltre dato che le patch non sono distribuite come dei semplici driver, i produttori di processori non hanno potuto diffonderle in modo diretto.

Tutto è passato invece da Microsoft, dai sistemi operativi basati su Linux, dagli OEM e dai produttori di motherboard. Una rapida sequenza di patch, nuove patch e aggiornamenti che rimuovevano le patch precedenti, hanno creato confusione.

Intel ha persino rilasciato un update di firmware/CPU microcode che poteva causare riavvii, instabilità del sistema e corruzione / perdita di dati. Microsoft ha invece pubblicato una patch che portava alcuni vecchi sistemi AMD a non avviarsi. In questo caso la situazione è stata risolta, mentre Intel non ha ancora una patch da sistema operativo o tramite microcode per la variante 2 di Spectre. AMD ha un aggiornamento del sistema operativo, ma non un update del microcode. E poiché le patch del microcode avranno l'impatto maggiore sulle prestazioni del sistema, i test che vi proponiamo sono soggetti a cambiamenti.

Intel dice che fornirà patch per le CPU vecchie fino a 5 anni e poi passerà ai modelli più datati. Molti speculano però sul fatto che non vedremo mai patch per i prodotti più vecchi. Sia Intel che AMD dicono che avranno correttivi hardware nei processori di prossima generazione. Ovviamente siamo curiosi di vedere come le due aziende risolveranno le falle di sicurezza senza compromettere le prestazioni.

Processori Intel senza vulnerabilità in arrivo entro l'anno

Processori AMD protetti da Spectre con l'architettura Zen 2

Per ora una cosa è certa: le patch attuali, in particolare per Spectre V2, influenzano le prestazioni in alcuni carichi di lavoro. Le CPU più vecchie dovrebbero essere quelle più colpite. Microsoft ritiene che solo alcuni utenti di Windows 10 e CPU con architetture pre-Broadwell soffriranno di rallentamenti, mentre la maggior parte degli utenti con Windows 7 e 8.1 su sistemi comparabili soffrirà di cali prestazionali.

Misurare l'impatto delle patch non è stato facile. La natura mutevole di questi aggiornamenti complica il tutto: abbiamo iniziato i test diverse volte a causa dell'aggiunta o della rimozione di una patch. Stiamo lavorando anche per testare l'impatto sui software e vogliamo anche presentarvi dati raccolti con vecchie CPU. Per ora concentriamoci sul gaming con una buona selezione di CPU Ryzen, Kaby Lake e Coffee Lake.

Come sfruttare le vulnerabilità

Meltdown e Spectre sono vulnerabilità che si sfruttano tramite attacchi side-channel, che sono incredibilmente difficili da bloccare. Questi avvengono quando un malintenzionato osserva le caratteristiche di un computer, che siano le tempistiche di determinate operazioni o persino i modelli di rumorosità e illuminazione, e usa tale informazione per compromettere la sicurezza.

Tutto parte con i dati, ovviamente. Una CPU carica l'informazione dalla memoria principale nei propri registri richiedendo i contenuti di un indirizzo virtuale, che è a sua volta mappato in un indirizzo fisico. Mentre esaudisce tale richiesta, la CPU verifica i permessi, che indicano se il processo può accedere all'indirizzo di memoria o se solo il kernel può farlo.

Di conseguenza il sistema approva o nega l'accesso. L'industria ha dato per scontato che questa tecnica biforcasse la memoria in modo sicuro in regioni protette, cioè che i sistemi operativi mappassero automaticamente l'intero kernel nello spazio d'indirizzo virtuale della mappa dello spazio di memoria utente. Ciò significa che la CPU può tentare di accedere a tutti gli indirizzi virtuali se necessario, ma anche che espone l'intera mappa d'indirizzo virtuale allo spazio utente.

Il problema ha a che fare con l'esecuzione speculativa, che è parte del processo out of order. I core delle CPU con pipeline processano le istruzioni in stadi, ad esempio instruction fetch, instruction decode, execute, memory access e register write-back. I processori odierni suddividono ognuno di questi stadi fondamentali ulteriormente, a volte in 20 o più stadi. Questo aiuta ad avere frequenze più alte.

Le CPU usano pipeline multiple per permettere il processo parallelo delle istruzioni. Questo è il motivo per cui, nell'immagine sotto, vedete quattro colori differenti passare simultaneamente attraverso i quattro stadi.

Il branch (diramazione) dell'istruzione può portare la pipeline a passare a un'altra sequenza di istruzione, creando uno stallo. Ciò significa che la pipeline non processa il dato per diversi cicli di clock mentre attende degli input dalla memoria.

02

Per evitare che ciò avvenga, quando un processore incontra un branch, la sua unità di predizione prova a indovinare la sequenza di istruzione di cui il processore avrà bisogno successivamente. Compie tale determinazione prima di processare l'istruzione. Il processore poi pesca l'istruzione predetta dal branch e la esegue speculativamente. Questo evita la latenza che normalmente incorre se la pipeline stalla - a causa del branch - e poi pesca la prossima istruzione dalla memoria.

A seconda dell'ubicazione dell'indirizzo (L1, L2, L3, RAM), ripescare il dato dalla memoria può richiedere da decine a centinaia di nanosecondi. È troppo rispetto alla latenza inferiore al nanosecondo dei cicli del processore, quindi avere l'istruzione già pronta velocizza tremendamente le operazioni. La maggior parte delle operazioni avvengono con successo perché i branch predictor spesso ci azzeccano con un tasso superiore al 90%. Il processore scarta semplicemente l'istruzione e svuota la sua pipeline quando l'istruzione non è necessaria (misprediction).

I ricercatori di Google hanno trovato un'opportunità nel modo in cui il sistema gestisce l'accesso alla memoria cache durante le esecuzioni speculative. I normali controlli di sicurezza che mantengono separati lo spazio utente e la memoria kernel non avvengono con la sufficiente rapidità durante le esecuzioni speculative che accedono alla memoria in cache. Di conseguenza il processore può momentaneamente recuperare ed eseguire i dati dalla memoria cache a cui non dovrebbe avere accesso. Il sistema alla fine nega l'accesso e il dato viene scartato ma poiché ciò non avviene con sufficiente velocità, c'è una finestra di opportunità per l'exploit. Meltdown sfrutta il branch predictor per eseguire il codice contro la cache, per tutto il tempo di questo processo. Questo gli permette di determinare quale dato è presente nella memoria, come potete vedere nel breve video sotto.

Ricostruire una foto con Meltdown

Nel caso di Meltdown, un malintenzionato può leggere password, chiavi di codifica o altri dati dalla memoria protetta. Quel dato può inoltre essere usato per prendere il controllo del sistema, rendendo inutili tutte le altre forme di protezione. La preoccupazione maggiore per i datacenter è che l'exploit permetta anche a un'applicazione residente su una macchina virtuale di accedere alla memoria di un'altra macchina virtuale. Questo significa che un malintenzionato potrebbe affittare un'istanza su un cloud pubblico e collezionare informazioni da altre VM sullo stesso server.

Gli attaccanti possono sfruttare questa vulnerabilità con JavaScript, quindi potreste esporre il vostro sistema semplicemente visitando un sito web ad hoc. Gli sviluppatori di browser hanno aggiornato i loro software, ma è possibile usare anche normale codice distribuito tramite malware o altre strade per sferrare un attacco.

Per ora la patch dei sistemi operativi di Meltdown contempla un layer aggiuntivo di controlli di sicurezza durante gli accessi agli indirizzi di memoria. Questo impatta sulla latenza delle chiamate al sistema e rallenta le prestazioni quando le applicazioni fanno chiamate al kernel. Le applicazioni che tendono a rimanere nello spazio utente risultano meno affette - prestazionalmente parlando. I processori post-Broadwell di Intel hanno una caratteristica chiamata PCID (Post-Context Identifiers) che velocizza il processo, quindi non sperimentano un rallentamento simile ai modelli vecchi.

L'exploit Spectre è molto più nefasto perché può sfruttare una gamma maggiore di capacità dell'engine per l'esecuzione speculativa per accedere alla memoria kernel o dati di altre applicazioni. Alcuni ricercatori ritengono che risolvere totalmente questo exploit potrebbe richiedere una fondamentale riprogettazione di tutte le architetture, quindi è possibile che ci convivremo per il prossimo futuro.

Fortunatamente l'exploit è tremendamente difficile da atturare e richiede un livello di conoscenza del processore e del software elevato. Intel e altri hanno sviluppato patch per le attuali varianti di Spectre, ma è possibile che nuove versioni arriveranno in futuro e ci troveremo a una sorta di gioco al gatto con il topo.

Configurazione di prova

La metodologia di test seguita per questo articolo è piuttosto semplice. Prima abbiamo fatto i test sui nostri sistemi Windows 10. Poi abbiamo applicato le patch e ripetuto i test. Anche se la patch della variante 2 di Spectre che usiamo è stata disattivata via Windows, dovrebbe rappresentare lo scenario prestazionale peggiore al momento. Non abbiamo usato un BIOS con mitigazioni per Spectre perché non era disponibile - i correttivi sono stati rimossi. Quando arriveranno firmware aggiornati faremo ulteriori test comparativi.

Abbiamo provato tutti i processori alle impostazioni stock, includendo chip Core i3, Ryzen 3, Core i5, Ryzen 5, Core i7, Ryzen 7 e Pentium. Naturalmente i sistemi overcloccati si comporteranno molto meglio e, come sempre, abbiamo disabilitato Enhanced Multi-Core Turbo sui nostri sistemi.

Al fine di evitare variabilità legate al GPU Boost con l'aumentare del calore della nostra GTX 1080, svolgiamo più sessioni di ogni test in rapida successione. Selezioniamo il valore medio dall'ultima registrazione, quindi in molti casi i risultati con patch e senza patch potrebbero apparire superiori o inferiori l'un l'altro a causa delle piccole variabilità che vedete oggi.

Sistema di test e configurazione
Hardware Intel LGA 1151 (Z370)
Intel Core i3-8350K 
Intel Core i5-8600K 
Intel Core i7-8700K 
MSI Z370 Gaming Pro Carbon AC 
G.Skill RipJaws V DDR4-3200 (2 x 8GB) @ 2666

AMD Socket AM4
AMD Ryzen 3 1300X 
AMD Ryzen 5 1600X 
AMD Ryzen 7 1800X 
MSI Z370 Xpower Gaming Titanium 
G.Skill RipJaws V DDR4-3200 (2 x 8GB) @ 2667 

Intel LGA 1151 (Z270)
Intel Core i3-7350K
Intel Core i5-7600K 
Intel Core i7-7700K 
Intel Pentium G4620 
MSI Z270 Gaming M7 
G.Skill RipJaws V DDR4-3200 (2 x 8GB) @ 2666 

Tutto
EVGA GeForce GTX 1080 FE 
Samsung PM863 (960GB) 1TB
SilverStone ST1500-TI 1500W
Corsair H115i
Windows 10 Creators Update Versione 1703, pre e post-patch
Continua a pagina 2
AREE TEMATICHE
Vuoi ricevere aggiornamenti su #CPU?
Iscriviti alla newsletter!