Ma quanto è veloce una CPU moderna?


— Foto: CPU Artworks.

Un anno fa proprio di questi tempi non si parlava altro che di Meltdown e di Spectre, due vulnerabilità appena scoperte che permettevano di accedere al contenuto della memoria interna del processore (la memoria cache) senza averne i diritti, consentendo (almeno potenzialmente) di recuperare dati riservati come password, dati bancari, certificati digitali e quant’altro.

A differenza del famoso Pentium Bug della metà degli anni ’90,1 Meltdown e Spectre non derivano da errori di programmazione ma sono quasi delle caratteristiche intrinseche dei processori moderni, troppo veloci rispetto al resto dell’hardware che li circonda.

Ma non voglio parlare qui di Meltdown e Spectre, va bene non seguire troppo l’attualità ma non esageriamo. È successo che, giusto in corrispondenza dell’anniversario, ho ritrovato sepolti sotto una pila di carte alcuni articoli che ne parlavano e, complice la reinstallazione del sistema operativo su un server, sono riuscito finalmente a leggerli, imbattendomi in un’informazione piuttosto interessante che vale la pena condividere.

Come ho detto prima, i processori (o CPU, Central Processing Unit) moderni sono veloci, anzi velocissimi, ad un livello che non riusciamo nemmeno ad immaginare. Per noi, già dei tempi dell’ordine del millisecondo (ms, 1 millesimo di secondo) non hanno un vero significato, sono troppo brevi rispetto all’esperienza comune. Figuriamoci cosa succede con intervalli di tempo ancora minori, a livello del microsecondo (μs, 1 milionesimo di secondo) o del nanosecondo (ns, 1 miliardesimo di secondo)!

Ma se proviamo a riportare questi tempi a qualcosa che possiamo capire direttamente, le cose prendono tutta un’altra piega.

In uno degli articoli più interessanti che ho letto dopo un anno, ho trovato la tabella riprodotta qui sotto, ripresa da un post di Jeff Atwood (autore del famoso blog Coding Horror, una lettura indispensabile per chi si occupa di programmazione), che ha sua volta l’aveva tratta dal volume Systems Performance: Enterprise and the Cloud di Brendan Gregg (e così sono a posto con le attribuzioni).

Nella tabella in questione, il tempo che una CPU odierna impiega per eseguire una operazione elementare, 0.3 nanosecondi corrispondenti a 3.3 GHz, viene scalato ad un secondo, un intervallo di tempo che siamo in grado di comprendere, traducendo in modo corrispondente un gran numero di altri tempi caratteristici del funzionamento di un computer.

1 ciclo di CPU 0.3 ns 1 s
Accesso alla cache di 1 livello 0.9 ns 3 s
Accesso alla cache di 2 livello 2.8 ns 9 s
Accesso alla cache di 3 livello 12.9 ns 43 s
Accesso alla memoria RAM 120 ns 6 minuti
Trasferimento dati da un disco a stato solido 50-150 μs 2-6 giorni
Trasferimento dati da un disco meccanico 1-10 ms 1-12 mesi
Trasferimento dati su Internet: da SF a NYC 40 ms 4 anni
Trasferimento dati su Internet: da SF alla Gran Bretagna 81 ms 8 anni
Trasferimento dati su Internet: da SF all’Australia 183 ms 19 anni
Riavvio di un sistema operativo virtualizzato a livello software 4 s 423 anni
Time-out di un comando SCSI 30 s 3000 anni
Riavvio di un sistema operativo virtualizzato a livello hardware 40 s 4000 anni
Riavvio di un computer 5 m 32 millenni

Nella tabella, SF sta per San Francisco, NYC per New York City.

Visti in questo modo i numeri sono stupefacenti. Una CPU odierna può sommare due numeri nell’equivalente di un secondo, ma deve aspettare pazientemente ben 6 minuti per ricevere i dati dalla memoria RAM del computer (una memoria che viene considerata velocissima) e fino a una settimana per riceverli da un già veloce disco a stato solido. Non parliamo nemmeno di quello che succede con un disco meccanico, che ha tempi di trasferimento corrispondenti a quelli dell’esercito di Cesare in viaggio verso la Gallia. E per una CPU il riavvio di un computer è una vera iattura: su questa scala temporale equivale ad aspettare che l’uomo moderno esca dal Paleolitico ed arrivi fino ad oggi.

Non so voi, ma quando vedo le cose in questa prospettiva non posso che levarmi il cappello davanti a chi progetta questi oggetti meravigliosi.


  1. Molto interessante questo articolo su Science, How Number Theory Got the Best of the Pentium Chip, che tratta degli aspetti matematici dietro la scoperta del Pentium Bug. 
Annunci
Tagged with: , , , ,
Pubblicato su hardware

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Informativa
Questo sito utilizza cookie di terze parti per inviarti pubblicità e servizi in linea con le tue preferenze. Se vuoi saperne di più o negare il consenso a tutti o ad alcuni cookie, clicca qui. Scorrendo questa pagina, cliccando su un link o su qualunque altro elemento o proseguendo la navigazione in altra maniera, acconsenti all'uso dei cookie.
Follow Melabit on WordPress.com
Categorie
%d blogger hanno fatto clic su Mi Piace per questo: