Quando si parla di server e sistemi informatici a uso professionale, si fa spesso riferimento alle memorie RAM ECC (Error Correction Code).
A differenza della RAM non-ECC, che è più comune nei sistemi domestici e di consumo, la RAM ECC è progettata per rilevare e correggere gli errori a livello di bit durante la lettura e la scrittura dei dati. Scorrendo i cataloghi online si può trovare un’ampia scelta di memorie RAM ECC e non-ECC: vediamo più da vicino le principali differenze tra le due.
I nostri dispositivi muovono costantemente dati da e verso la memoria RAM: il più delle volte si tratta di un processo “indolore”; ma ovviamente non sempre tutto va per il verso giusto.
Errori di progettazione, di fabbricazione, stress termico, sovratensioni e sovracorrenti, interferenze elettromagnetiche – quindi sia fattori fisici che ambientali – possono causare errori durante il funzionamento delle memorie RAM.
Le RAM che la maggior parte degli utenti “non-business” utilizzano, non integrano algoritmi di correzione degli errori: si parla infatti di RAM non-ECC. Esse utilizzano tecniche che permettono comunque di gestire gli errori e ridurre il rischio di arresti anomali del dispositivo.
Le RAM non-ECC fanno infatti affidamento a un meccanismo di rilevamento degli errori a livello di software: il sistema operativo è in grado di riconoscere gli errori e gestirli di conseguenza. Può inoltre evitare di allocare dati nelle zone danneggiate e utilizzare altre parti della memoria che funzionano correttamente.
Viceversa, le RAM ECC si servono di un algoritmo di correzione degli errori per rilevare e correggere gli errori a livello di bit che si verificano durante l’elaborazione dei dati. Questo algoritmo utilizza un codice di correzione degli errori che aggiunge bit extra a ciascuna word contenuta in memoria: eventuali errori possono così essere rilevati e corretti automaticamente.
Con il termine word, nel caso della memoria RAM, si fa riferimento alla sequenza di bit che viene letta o scritta simultaneamente. In altre parole, rappresenta la quantità di dati che la memoria può trasferire in un’unica operazione di lettura o scrittura.
In pratica, quando un bit di dati viene letto dalla RAM ECC e viene rilevato un errore, l’algoritmo utilizza i bit extra per correggere automaticamente l’errore e restituire il dato corretto. Questo processo di correzione degli errori avviene in background e nulla viene notificato all’utente.
I bit aggiuntivi che vengono abbinati ai dati memorizzati in ogni cella di memoria sono conosciuti anche come bit di controllo e vengono appunto utilizzati per scovare errori durante la lettura o la scrittura dei dati in RAM. Il codice di Hamming, per esempio, utilizza i bit extra per creare un vettore di controllo che rappresenta i dati memorizzati nella cella di memoria. Durante la lettura dei dati, il vettore di controllo viene utilizzato per verificare che i dati siano stati memorizzati correttamente nella cella di memoria. Se si verifica un errore di bit, il codice di correzione degli errori può utilizzare le informazioni contenute nel vettore di controllo per determinare quale bit è errato e correggerlo automaticamente.
L’utilizzo della RAM ECC può garantire una maggiore affidabilità e stabilità dei sistemi informatici, riducendo il rischio di crash del sistema e di perdita di dati critici. Tuttavia, la RAM ECC è generalmente più costosa rispetto alla RAM non-ECC e richiede anche schede madri compatibili con questa tecnologia. Ecco perché questo tipo di memoria è utilizzata principalmente nei server e nei sistemi informatici ad alta affidabilità.
Come abbiamo visto nell’articolo su come scegliere la memoria RAM, anche le ECC differiscono per capacità del singolo modulo, velocità di clock, latenza e ovviamente prezzo ma anche per un ulteriore importante parametro ovvero la quantità di bit di correzione.
Le RAM ECC utilizzano diversi livelli di correzione degli errori, a seconda del numero di bit di correzione utilizzati: alcune memorie ECC utilizzano la correzione a un solo bit (SEC), altre utilizzano una correzione a due bit (DSEC), mentre altre ancora utilizzano una correzione a tre bit (TSEC).
I moduli con una correzione di errore a due o tre bit vengono sfruttati sui sistemi, come alcuni tipi di server e workstation, in cui la stabilità è una priorità assoluta e il danneggiamento dei dati non può essere tollerato.
È possibile usare le memorie RAM ECC sui dispositivi consumer?
La maggior parte dei sistemi consumer (si pensi ai PC desktop e ai notebook) non supportano le memorie RAM ECC. Ci sono comunque alcune eccezioni di rilievo: alcune schede madri consumer di fascia alta possono supportare le memorie RAM ECC ma è necessaria un’attenta verifica da parte dell’utente.
Per i chip AMD, la memoria ECC è supportata “ufficiosamente”. Ciò significa che non è una funzionalità pubblicizzata, ma non è nemmeno qualcosa a cui l’azienda di Sunnyvale sta chiudendo la porta.
Lato Intel, la memoria ECC è supportata su una manciata di chipset dal 2021 anche se può risultare complicato trovare una scheda madre compatibile ECC che accolga i processori destinati al segmento consumer. A differenza di AMD, che lascia ai produttori di schede madri la scelta di implementare o meno il supporto ECC, Intel limita il numero di chipset compatibili con le memorie che integrano la correzione automatica dell’errore. Si troveranno quindi schede madri di livello aziendale compatibili ma non prodotti più propriamente consumer.
Perché la RAM ECC non viene utilizzata su tutti i dispositivi?
Linus Torvalds, padre del kernel Linux, ha criticato Intel per aver – secondo lui – indotto l’industria a non supportare le memorie ECC sul versante consumer affermando che questa scelta avrebbe potuto portare e potrebbe ancora portare vantaggi per i consumatori.
Ci sono però alcuni svantaggi derivanti dall’uso delle memorie ECC. A causa dell’adozione del processo di correzione degli errori, la RAM ECC è un po’ più lenta della RAM normale, dal 2% al 5%. Le funzionalità aggiuntive, inoltre, implicano un costo maggiore che si traduce in un +10%/+20% rispetto alla RAM standard.
La RAM consumer è attualmente molto stabile e gli errori si verificano generalmente molto di rado: in ogni caso, un riavvio sporadico è tollerabile. La situazione è radicalmente diversa nel caso dei server e delle workstation aziendali: la temporanea indisponibilità di un servizio potrebbe risultare problematica.
Le immagini utilizzate come “miniature” dell’articolo provengono dalla scheda Amazon delle memorie Kingston Server Premier 16GB 2666MT/s DDR4 ECC.