I dag är den stora majoriteten av det minne som används i stationära datorer, bärbara datorer och mobila enheter DRAM utan buffert och utan ECC-funktioner (Error Checking and Correction). Om man inte använder en Intel- eller AMD-processor som kan stödja ECC-minne är ECC-DRAM utan buffert det enda valet för de flesta användare. Intel Xeons har till exempel stöd för ECC-minne, medan inte ens de nya Core i7-modellerna har det. AMD har mycket bredare ECC-stöd på CPU-nivå, men många AMD-moderkort har inte stöd för ECC-minnesfunktioner så det är inte universellt.
ECC-minne Vad det gör
Eccc-minnet (Error Checking and Correction, ECC) anses oftast vara nödvändigt i företagsmiljöer nuförtiden. Felkontroll och korrigering av enstaka bitar inom en 8-bitars byte gör det möjligt att både upptäcka och korrigera enstaka bitfel när de inträffar. Intressant nog är det sätt på vilket denna single bit ECC fungerar inte helt olikt RAID 4 och RAID 5 där en XOR-algoritm används för att generera paritetsbitar. I stället för att förlora användbar minneskapacitet brukar minnestillverkarna lägga till ytterligare ett chip till ECC-minnet för varje åtta lagringschips. När ett fel med en enda bit upptäcks används paritetsinformationen för att rekonstruera data med fel. Detta liknar konceptuellt hur RAID 4 och RAID 5 kan skrubba och åtgärda datafel i lagringsenheter. Större fel än multibitar kan upptäckas men inte korrigeras av paritetsschemat av typen ECC med en enda bit.
För stationära datorer är detta mindre viktigt eftersom många siffror anger att fel med en enda bit ligger i storleksordningen 1 per 1 GB eller 1 per 2 GB minne varje månad. För en skrivbordsanvändare kan detta leda till att ett program kraschar, eller i värsta fall kräva en omstart. I servrar är ECC viktigt för att upprätthålla både dataintegritet och drifttid. Med den nuvarande lilla kostnadsskillnaden mellan ECC- och icke-ECC-buffrade DIMM:er utan buffert finns det knappast någon anledning att skaffa icke-ECC-minne till en server.
Obuffrat ECC- respektive registrerat ECC-minne
Tillsammans med ECC-begreppet finns det två begrepp som spelar in, nämligen obuffrade och registrerade ECC-minnesmoduler. Den grundläggande skillnaden är att minneskommandon i konfigurationer med obuffrat minne går direkt från styrenheten till minnesmodulen, medan kommandona i konfigurationer med registrerat minne först skickas till minnesbankernas register innan de skickas till modulerna. Detta koncept kan låta svårt, men här är en mycket enkel/konceptuell bild av vad som händer.
I exemplet ovan har minneskontrollen direkt tillgång till minnesbankerna. Ovanstående förutsätter att minneskontrollen finns i CPU-paketet, vilket den gör i moderna CPU-arkitekturer. Om man tittar på äldre system fanns minneskontrollen i CPU:ns nordbrygga. Jämför detta med exemplet med registrerat minne nedan.
Här kommunicerar CPU:n med registren för minnesbankerna på varje modul. Därifrån kommunicerar dessa register med DRAM-minnet. Konsekvenserna av detta är tvåfaldiga. För det första, på den negativa sidan, tar instruktionerna ungefär en CPU-cykel längre på grund av förmedlingen av bankregistret. På den positiva sidan minskar denna buffring belastningen på CPU:s minneskontroller eftersom den pekar på det dedikerade mellanregistret i stället för att komma åt DRAM direkt. Det är lättare för minneskontrollanten att hantera ett färre antal mål.
Denna funktion är mycket viktig i serverscenarier eftersom till exempel en plattform i Intel 3400-serien, som Supermicro X8SI6-F eller Intel S3420GPLC, har stöd för 16 GB obuffrat ECC-minne och 32 GB registrerat ECC-minne. I system med dubbla processorer, t.ex. den E5600-seriebaserade Supermicro X8DTH-6F som nyligen recenserades på ServeTheHome, är skillnaden mycket större med upp till 48 GB oregistrerat ECC-minne eller 192 GB registrerat ECC-minne. För virtualiseringsmiljöer där minne och minnesbandbredd är avgörande för att uppnå höga konsoliderings- och densitetsmått, är registrerat ECC-minne i allmänhet det bästa alternativet. Om man köper en server med oregistrerade ECC DIMM:er och sedan behöver ytterligare kapacitet, kommer uppgraderingsoperationen att kräva att man drar och byter ut alla UDIMM-moduler, vilket gör det till ett dyrt förslag.
Slutsats
I den här artikeln kan man förhoppningsvis få en konceptuell bild av skillnaden mellan det obuffrade ECC-minnet och det registrerade ECC-minnet för att kunna informera om valbeslut. Detta var inte en överdrivet teknisk artikel eftersom minnesmoduler tenderar att vara objekt som folk beställer med eller lägger till i sina system och arbetar lite med tills de behöver mer minne.