Vad är ECC-minne?

click fraud protection

En del RAM-minne, eller Random-Access-minne, annonseras som ECC-minne. ECC står för Error Correcting Code och är en process för att identifiera och korrigera fel i minnet. Fel i RAM-minnet kan orsaka korruption eller förändring av data, vilket kan resultera i enhetskrascher och till och med säkerhetsbrister. ECC RAM är vanligtvis inte kompatibelt med PC-hårdvara av konsumentklass.

Vad är minnesfel?

Minnesfel är ett problem där värdet som lagras i minnet ändras. Data i RAM-minnet lagras binärt, med värden 1 eller 0. Om värdet på en 1 ändras till 0 eller vice versa, i en process som kallas "bit-flipping", ändras data som lagras i RAM-minnet.

Till exempel kan den ändrade biten användas för att lagra ett värde i ett kalkylblad. I det här fallet kan värdet i kalkylbladet ändras till ett helt annat nummer som skulle påverka resultatet för eventuella beräkningar, till exempel att ändra de ekonomiska prognoserna för en företag. I andra fall kan den ändrade biten inaktivera en säkerhetsfunktion eller skapa ett stavfel som ändrar hur ett program körs. Dessa två exempel är extremt svåra att upptäcka och lösa utan användning av ECC-minne. I ett extremt scenario kan en enda bit som vänds orsaka ett katastrofalt fel som orsakar en systemkrasch.

Bitflipping har många potentiella orsaker, den vanligaste orsaken är resultatet av bakgrundsstrålning, främst orsakad av neutroner skapade av kosmiska strålar. En kosmisk stråle är en högenergipartikel, vanligtvis en proton, som färdas med nästan ljusets hastighet. De sänds ut av stjärnkroppar inklusive solen och andra högenergiastronomiska objekt. När en kosmisk stråle träffar en atom skapas en dusch av neutroner och andra subatomära partiklar, dessa neutroner fortsätter sedan att ha sekundära interaktioner.

Dessa sekundära neutroninteraktioner tros vara den primära källan till bit-flipping-fel. Kosmiska strålar är vanligare på högre höjder med en ökning på 3,5 gånger vid 1,5 km över havet och en ökning på 300 gånger på flygplans marschhöjd. Denna ökade risk på höjden kräver extra tillförlitlighetsåtgärder.

Hur vanliga är minnesfel?

De flesta människor ser inte sina datorer krascha varje dag, så det skulle vara lätt att tro att detta främst är en teoretisk risk. Forskning från hyperskala datacenter har använts för att analysera frekvensen av bit-flipping-incidenter. Forskning utförd av Google i dess datacenter har visat en felfrekvens på ungefär 1 enbitsfel per gigabyte RAM-minne var 1,8:e timme.

Nasas Cassini-Huygens-uppdrag som lanserades 1997 för att resa till Saturnus konfigurerades med två identiska flygdatorer vardera med 2,5 Gb RAM. Under de första två och ett halvt åren av sin resa observerade rymdfarkosten konsekventa 280 enkelbitsfel om dagen. Under en dag, när Cassini-Huygens var i vägen för en solfloss, en fyrfaldig ökning av bit fel observerades, vilket ger ytterligare bevis för att solen är orsaken till de flesta bit-flipping frågor.

Det fanns farhågor om att den fortsatta ökningen av tätheten av RAM-moduler skulle leda till att senare versioner av RAM-minne blir mer och mer sårbara för bit-flips. Nyare studier har visat att motsatsen faktiskt är fallet, eftersom felen har minskat i takt med att processgeometrin har minskat.

Hur skyddar ECC-minnet mot fel?

ECC-minne använder felkorrigerande koder, såsom Hamming-koder, för att korrigera enbitsfel i RAM. Dubbelbitfel kan upptäckas men inte korrigeras. Hamming felkorrigerande koder fungerar genom att använda en uppsättning paritetsbitar. Tillsammans kan dessa paritetsbitar användas för att upptäcka om eventuella databitar har ändrats. Om en bit identifieras som att ha vänt ändras den automatiskt tillbaka.

Tips: Ett enbitsfel är en bit-flipping-incident när bara en enstaka bit vänds. I double0bit-fel vänds två bitar. De två bitarna behöver inte vändas i samma incident, den andra bitflippen behöver bara ske innan den första vända biten korrigeras.

En mer paritetsbit än vad som krävs ingår i Hamming felkorrigerande koder. Denna extra paritetsbit ger koden möjlighet att upptäcka förekomsten av dubbelbitsfel, men dessa fel kan inte korrigeras.

Processen att utföra feldetektering och korrigering utförs på minneskontrollern ombord på RAM-minnet.

Konsumenttillgänglighet och support

De flesta PC-hårdvara av konsumentklass stöder inte ECC-minne. Detta är delvis som en metod för att artificiellt skilja serverhårdvara från konsumenthårdvara. ECC RAM kostar dock mer och går något långsammare. Dessutom är den extra stabilitet det skulle ge hemkonsumenter minimal eftersom bit-flipping-fel inte är den primära orsaken till systemkrascher.

Ingen av Intels konsument- och entusiastklassade processorer stöder ECC-minne, bara dess serverklassade processorer, som Xeon-seriens processorer gör. AMD: s konsumentklassade processorer stöder inte ECC, men deras arbetsstations- och serverklassade processorer, Threadripper respektive EPYC, stöder ECC-minne.