Alcuni RAM, o memorie ad accesso casuale, sono pubblicizzati come memoria ECC. ECC sta per Error Correcting Code ed è un processo di identificazione e correzione degli errori nella memoria. Gli errori nella RAM possono causare il danneggiamento o l'alterazione dei dati, che possono causare arresti anomali del dispositivo e persino vulnerabilità della sicurezza. La RAM ECC in genere non è compatibile con l'hardware per PC di livello consumer.
Cosa sono gli errori di memoria?
Gli errori di memoria sono un problema in cui viene modificato il valore archiviato in memoria. I dati nella RAM sono memorizzati in binario, con valori di 1 o 0. Se il valore di un 1 viene commutato in uno 0 o viceversa, in un processo chiamato "bit-flip", i dati che vengono memorizzati nella RAM cambiano.
Ad esempio, il bit modificato potrebbe essere utilizzato per memorizzare un valore in un foglio di calcolo. In questo caso, il valore nel foglio di calcolo potrebbe essere cambiato in un numero completamente diverso che influenzerebbe il risultato di eventuali calcoli, ad esempio alterando le previsioni economiche di a attività commerciale. In altri casi, il bit modificato potrebbe disabilitare una funzione di sicurezza o creare un errore di battitura che altera il modo in cui viene eseguito un programma. Questi due esempi sono estremamente difficili da rilevare e risolvere senza l'uso della memoria ECC. In uno scenario estremo, il ribaltamento di un singolo bit potrebbe causare un errore catastrofico che provoca un arresto anomalo del sistema.
Il bit-flip ha molte potenziali cause, la causa più comune è il risultato della radiazione di fondo, principalmente causata da neutroni creati da eventi di raggi cosmici. Un raggio cosmico è una particella ad alta energia, tipicamente un protone, che viaggia quasi alla velocità della luce. Sono emessi da corpi stellari tra cui il Sole e altri oggetti astronomici ad alta energia. Quando un raggio cosmico colpisce un atomo, viene creata una pioggia di neutroni e altre particelle subatomiche, questi neutroni continuano ad avere interazioni secondarie.
Si ritiene che queste interazioni secondarie di neutroni siano la fonte primaria di errori di capovolgimento dei bit. I raggi cosmici sono più comuni ad altitudini più elevate con un aumento di 3,5 volte a 1,5 km sul livello del mare e un aumento di 300 volte all'altitudine di crociera degli aerei di linea. Questo aumento del rischio in quota richiede misure di affidabilità aggiuntive.
Quanto sono comuni gli errori di memoria?
La maggior parte delle persone non vede i propri computer bloccarsi ogni giorno, quindi sarebbe facile pensare che questo sia principalmente un rischio teorico. La ricerca dei data center iperscala è stata utilizzata per analizzare il tasso di incidenti di cambio di bit. La ricerca condotta da Google nei suoi data center ha mostrato un tasso di errore di circa 1 errore a bit singolo per gigabyte di RAM ogni 1,8 ore.
La missione Cassini-Huygens della NASA, lanciata nel 1997 per viaggiare su Saturno, è stata configurata con due computer di volo identici ciascuno con 2,5 Gb di RAM. Durante i primi due anni e mezzo del suo viaggio, la navicella spaziale ha osservato un numero consistente di 280 errori a singolo bit al giorno. Durante un giorno, quando Cassini-Huygens era nel percorso di un brillamento solare, un aumento di quattro volte di bit sono stati osservati errori, fornendo ulteriori prove del fatto che il Sole è la causa della maggior parte dei capovolgimenti di bit problemi.
Si temeva che il continuo aumento della densità dei moduli RAM avrebbe portato a versioni successive della RAM sempre più vulnerabili ai capovolgimenti dei bit. Studi più recenti hanno dimostrato che in effetti è vero il contrario, poiché gli errori sono diminuiti al diminuire della geometria del processo.
In che modo la memoria ECC protegge dagli errori?
La memoria ECC utilizza codici di correzione degli errori, come i codici di Hamming, per correggere errori a bit singolo nella RAM. Gli errori a doppio bit possono essere rilevati ma non corretti. I codici di correzione degli errori di Hamming funzionano utilizzando una matrice di bit di parità. Insieme, questi bit di parità possono essere utilizzati per rilevare se i bit di dati sono cambiati. Se un bit viene identificato come capovolto, viene ripristinato automaticamente.
Suggerimento: un errore a bit singolo è un incidente di capovolgimento di bit quando viene capovolto solo un singolo bit. Negli errori double0bit, vengono capovolti due bit. Non è necessario che i due bit vengano capovolti nello stesso incidente, il secondo capovolgimento del bit deve avvenire solo prima che il primo bit capovolto venga corretto.
Un bit di parità in più rispetto a quello richiesto è incluso nei codici di correzione degli errori di Hamming. Questo bit di parità extra dà al codice la capacità di rilevare il verificarsi di errori a doppio bit, tuttavia, questi errori non possono essere corretti.
Il processo di rilevamento e correzione degli errori viene eseguito sul controller di memoria a bordo della chiavetta RAM.
Disponibilità e supporto per i consumatori
La maggior parte dell'hardware per PC di fascia consumer non supporta la memoria ECC. Questo è in parte un metodo per distinguere artificialmente l'hardware del server dall'hardware del consumatore. La RAM ECC, tuttavia, costa di più e funziona leggermente più lentamente. Inoltre, la stabilità extra che fornirebbe ai consumatori domestici è minima in quanto gli errori di capovolgimento dei bit non sono la causa principale degli arresti anomali del sistema.
Nessuna delle CPU Intel di livello consumer e per appassionati supporta la memoria ECC, solo le sue CPU di livello server, come le CPU della gamma Xeon. Le CPU di fascia consumer di AMD non supportano ECC, tuttavia, le loro CPU per workstation e server, rispettivamente Threadripper ed EPYC, supportano la memoria ECC.