La memoria ECC, nota anche come memoria del codice di correzione degli errori, ha la capacità di rilevare e correggere errori nei dati. È comunemente utilizzato nei computer desktop, server e workstation di fascia alta per migliorare la stabilità e la sicurezza del sistema.
La memoria è un dispositivo elettronico e durante il suo funzionamento possono verificarsi errori. Per gli utenti con elevati requisiti di stabilità, gli errori di memoria possono portare a problemi critici. Gli errori di memoria possono essere classificati in due tipi: errori hard ed errori soft. Gli errori gravi sono causati da danni o difetti dell'hardware e i dati sono costantemente errati. Questi errori non possono essere corretti. D'altra parte, gli errori lievi si verificano in modo casuale a causa di fattori come l'interferenza elettronica vicino alla memoria e possono essere corretti.
Per rilevare e correggere gli errori della memoria software, è stato introdotto il concetto di "controllo di parità" della memoria. L'unità più piccola della memoria è un bit, rappresentato da 1 o 0. Otto bit consecutivi compongono un byte. La memoria senza controllo di parità ha solo 8 bit per byte e se qualsiasi bit memorizza un valore errato, ciò può portare a dati errati e errori dell'applicazione. Il controllo di parità aggiunge un bit in più a ciascun byte come bit di controllo degli errori. Dopo aver memorizzato i dati in un byte, gli otto bit hanno uno schema fisso. Ad esempio, se i bit memorizzano i dati come 1, 1, 1, 0, 0, 1, 0, 1, la somma di questi bit è dispari (1+1+1+0+0+1+0+1=5 ). Per la parità pari, il bit di parità è definito come 1; altrimenti è 0. Quando la CPU legge i dati memorizzati, somma i primi 8 bit e confronta il risultato con il bit di parità. Questo processo può rilevare errori di memoria, ma il controllo di parità non può correggerli. Inoltre, il controllo di parità non è in grado di rilevare errori a doppio bit, sebbene la probabilità di errori a doppio bit sia bassa.
La memoria ECC (Error Checking and Correcting), invece, memorizza un codice crittografato insieme ai bit di dati. Quando i dati vengono scritti nella memoria, il codice ECC corrispondente viene salvato. Durante la rilettura dei dati memorizzati, il codice ECC salvato viene confrontato con il codice ECC appena generato. Se non corrispondono, i codici vengono decodificati per identificare il bit errato nei dati. Il bit errato viene quindi scartato e il controller di memoria rilascia i dati corretti. I dati corretti raramente vengono riscritti in memoria. Se gli stessi dati errati vengono riletti, il processo di correzione viene ripetuto. La riscrittura dei dati può introdurre un sovraccarico, portando a un notevole calo delle prestazioni. Tuttavia, la memoria ECC è fondamentale per server e applicazioni simili, poiché fornisce funzionalità di correzione degli errori. La memoria ECC è più costosa della memoria normale a causa delle sue funzionalità aggiuntive.
L'utilizzo della memoria ECC può avere un impatto significativo sulle prestazioni del sistema. Sebbene possa ridurre le prestazioni complessive, la correzione degli errori è essenziale per applicazioni e server critici. Di conseguenza, la memoria ECC è una scelta comune negli ambienti in cui l'integrità dei dati e la stabilità del sistema sono fondamentali.
Orario di pubblicazione: 19 luglio 2023