Oggi, la stragrande maggioranza della memoria usata da desktop, notebook e dispositivi mobili è DRAM non-ECC (Error Checking and Correction) senza buffer. Infatti, a meno che uno non stia usando una CPU Intel o AMD che può supportare la memoria ECC, la DRAM ECC senza buffer è l’unica scelta per la maggior parte degli utenti. Gli Intel Xeon, per esempio, supportano la memoria ECC, mentre anche i nuovi Core i7 non lo fanno. AMD ha un supporto ECC molto più ampio a livello di CPU, ma molte schede madri AMD non supportano le funzioni di memoria ECC, quindi non è universale.
La memoria ECC cosa fa
La memoria ECC (Error Checking and Correction) è per lo più considerata essenziale negli ambienti aziendali in questi giorni. Il controllo e la correzione degli errori a bit singolo all’interno di un byte a 8 bit permette di rilevare e correggere gli errori a bit singolo quando si verificano. È interessante notare che il modo in cui questo ECC a bit singolo funziona non è molto diverso da RAID 4 e RAID 5, dove viene utilizzato un algoritmo XOR per generare bit di parità. Invece di perdere capacità di memoria utilizzabile, i produttori di memoria tendono ad aggiungere un chip aggiuntivo alla memoria ECC per ogni otto chip di memoria. Quando viene rilevato un errore di un singolo bit, le informazioni di parità vengono utilizzate per ricostruire i dati con un errore. Di nuovo, questo è concettualmente simile a come RAID 4 e RAID 5 possono scrutare e correggere gli errori di dati negli array di memorizzazione. Errori più grandi di multi-bit possono essere rilevati ma non corretti dallo schema di parità di tipo ECC a bit singolo.
Per i desktop, questo è meno importante poiché molte cifre mettono gli errori a bit singolo nel range di 1 per 1GB o 1 per 2GB di memoria ogni mese. Per un utente desktop, questo può causare il blocco di un programma, o al peggio richiedere un riavvio. Nei server, l’ECC è essenziale per mantenere sia l’integrità dei dati che l’uptime. Con l’attuale minor differenziale di costo delle DIMM senza buffer ECC rispetto a quelle non ECC, c’è poca ragione per ottenere una memoria non ECC per un server.
Unbuffered ECC versus Registered ECC Memory
In aggiunta al concetto di ECC, ci sono due concetti in gioco, moduli di memoria unbuffered e registered ECC. La differenza fondamentale è che i comandi di memoria nelle configurazioni di memoria unbuffered vanno direttamente dal controller al modulo di memoria, mentre nelle configurazioni di memoria registrata i comandi sono inviati prima ai registri dei banchi di memoria prima di essere inviati ai moduli. Questo concetto può sembrare difficile, ma ecco la visione molto semplice/concettuale di ciò che succede.
Nell’esempio precedente il controller di memoria accede direttamente ai banchi di memoria. Quanto sopra presuppone che il controller di memoria risieda all’interno del pacchetto CPU, come avviene nelle moderne architetture CPU. Guardando ai vecchi sistemi, il controller di memoria risiedeva all’interno del northbridge della CPU. Confronta questo con l’esempio di memoria registrata qui sotto.
Qui la CPU comunica con i registri per i banchi di memoria su ogni modulo. Da lì, questi registri comunicano con la DRAM. Le implicazioni di questo sono due. In primo luogo, in negativo, le istruzioni impiegano circa un ciclo CPU in più a causa dell’intermediazione del registro del banco. Dal lato positivo, questo buffering riduce lo sforzo sul controller di memoria della CPU perché punta al registro intermedio dedicato invece di accedere direttamente alla DRAM. È più facile per il controller di memoria gestire un minor numero di target.
Questa caratteristica è molto importante negli scenari server perché, per esempio, una piattaforma Intel serie 3400, come la Supermicro X8SI6-F o Intel S3420GPLC supporta 16GB di memoria ECC non bufferizzata e 32GB di memoria ECC registrata. Allo stesso modo, nei sistemi a doppio processore, come il Supermicro X8DTH-6F basato sulla serie E5600 recentemente recensito su ServeTheHome, il delta è molto maggiore con fino a 48GB di memoria ECC non registrata o 192GB di memoria ECC registrata. Per gli ambienti di virtualizzazione in cui la memoria, e la larghezza di banda della memoria è la chiave per raggiungere metriche di consolidamento e densità elevate, la memoria ECC registrata è generalmente la strada da percorrere. Se si acquista un server con DIMM ECC non registrate, poi si richiede una capacità aggiuntiva, allora l’operazione di aggiornamento richiederà di tirare e sostituire tutti i moduli UDIMM rendendola una proposta costosa.
Conclusione
In questo articolo si spera che si possa avere una visione concettuale della differenza tra la memoria ECC non bufferata e la memoria ECC registrata per aiutare a informare le decisioni di selezione. Questo non è stato un articolo eccessivamente tecnico perché i moduli di memoria tendono ad essere elementi che le persone ordinano o aggiungono ai loro sistemi e su cui lavorano poco fino a quando non hanno bisogno di più memoria.