Heden ten dage is het overgrote deel van het geheugen dat door desktops, notebooks en mobiele apparaten wordt gebruikt ongebufferd niet-ECC (Error Checking and Correction) DRAM. In feite, tenzij men een Intel of AMD CPU gebruikt die ECC geheugen kan ondersteunen is ongebufferd ECC DRAM de enige keuze voor de meeste gebruikers. Intel Xeons, bijvoorbeeld, ondersteunen ECC geheugen, terwijl zelfs de nieuwe Core i7’s dat niet doen. AMD heeft veel bredere ECC-ondersteuning op CPU-niveau, maar veel AMD-moederborden ondersteunen geen ECC-geheugenfuncties, dus het is niet universeel.
ECC-geheugen Wat het doet
Error Checking and Correction (ECC) geheugen wordt tegenwoordig meestal als essentieel beschouwd in bedrijfsomgevingen. Single bit error checking en correctie binnen een 8-bit byte maakt het mogelijk om single bit fouten te detecteren en te corrigeren wanneer ze optreden. Interessant genoeg is de manier waarop deze single bit ECC werkt niet zo verschillend van RAID 4 en RAID 5, waar een XOR-algoritme wordt gebruikt om pariteitsbits te genereren. In plaats van bruikbare geheugencapaciteit te verliezen, voegen geheugenfabrikanten gewoonlijk een extra chip toe aan het ECC-geheugen voor elke acht opslagchips. Wanneer een enkele bitfout wordt gedetecteerd, wordt de pariteitsinformatie gebruikt om de gegevens met een fout te reconstrueren. Ook dit is conceptueel vergelijkbaar met de manier waarop RAID 4 en RAID 5 gegevensfouten in opslagarrays kunnen schrobben en herstellen. Grotere fouten dan multi-bit kunnen worden gedetecteerd, maar niet gecorrigeerd door het single bit ECC type pariteitsschema.
Voor desktops is dit minder belangrijk, omdat veel cijfers single-bit fouten in de orde van 1 per 1GB of 1 per 2GB geheugen per maand plaatsen. Voor een desktopgebruiker kan dit ertoe leiden dat een programma vastloopt, of in het ergste geval dat het opnieuw moet worden opgestart. Bij servers is ECC van essentieel belang om zowel de integriteit van de gegevens als de uptime te handhaven. Met het huidige kleine kostenverschil tussen ECC en niet-ECC ongebufferde DIMM’s is er weinig reden om niet-ECC geheugen voor een server aan te schaffen.
Ongebufferd ECC versus Geregistreerd ECC geheugen
Naast het ECC concept zijn er nog twee concepten in het spel, ongebufferde en geregistreerde ECC geheugenmodules. Het basisverschil is dat geheugencommando’s in ongebufferde geheugenconfiguraties rechtstreeks van de controller naar de geheugenmodule gaan, terwijl in geregistreerde geheugenconfiguraties de commando’s eerst naar de registers van de geheugenbanken worden gestuurd voordat ze naar de modules worden gestuurd. Dit concept klinkt misschien moeilijk, maar hier volgt de zeer eenvoudige/ conceptuele weergave van wat er gebeurt.
In het bovenstaande voorbeeld heeft de geheugencontroller rechtstreeks toegang tot de geheugenbanken. Het bovenstaande gaat ervan uit dat de geheugencontroller zich in het CPU-pakket bevindt, zoals het geval is in moderne CPU-architecturen. Bij oudere systemen bevond de geheugencontroller zich in de CPU northbridge. Vergelijk dit met het onderstaande voorbeeld van geregistreerd geheugen.
Hier communiceert de CPU met de registers voor de geheugenbanken op elke module. Van daaruit communiceren deze registers met het DRAM. De implicaties hiervan zijn tweeledig. Ten eerste, aan de negatieve kant, duren instructies ongeveer één CPU-cyclus langer door de tussenkomst van het bankregister. Aan de positieve kant vermindert deze buffering de belasting van de geheugencontroller van de CPU, omdat hij naar het speciale tussenregister wijst in plaats van rechtstreeks naar het DRAM te gaan. Het is gemakkelijker voor de geheugencontroller om met een kleiner aantal doelen om te gaan.
Deze functie is zeer belangrijk in serverscenario’s omdat, bijvoorbeeld, een Intel 3400-serie platform, zoals de Supermicro X8SI6-F of Intel S3420GPLC 16 GB ongebufferd ECC en 32 GB geregistreerd ECC-geheugen ondersteunt. In systemen met twee processoren, zoals de Supermicro X8DTH-6F uit de E5600-serie die onlangs op ServeTheHome werd besproken, is de delta veel groter met maximaal 48 GB ongeregistreerd ECC-geheugen of 192 GB geregistreerd ECC-geheugen. Voor virtualisatie-omgevingen waar geheugen en geheugenbandbreedte essentieel zijn voor het bereiken van hoge consolidatie- en dichtheidscijfers, is Registered ECC-geheugen over het algemeen de juiste keuze. Als men een server koopt met ongeregistreerde ECC DIMM’s, en vervolgens extra capaciteit nodig heeft, dan zal de upgrade operatie een pull and replace van alle UDIMM modules vereisen waardoor het een dure aangelegenheid wordt.
Conclusie
In dit artikel kan men hopelijk een conceptueel beeld krijgen van het verschil tussen ongebufferd ECC-geheugen en geregistreerd ECC-geheugen om te helpen bij selectiebeslissingen. Dit was geen overdreven technisch artikel, omdat geheugenmodules meestal items zijn die mensen bestellen bij of toevoegen aan hun systemen en er weinig werk van maken totdat ze meer geheugen nodig hebben.