Error-correcting code memory eller ECC-minne (på norsk: Feilkorrigerende kode minne) er en type dataminne som kan oppdage og rette vanlige feil som oppstår i minne, og som ellers kunne ha forårsaket datakorrupsjon. ECC-minne blir brukt i datamaskiner hvor datakorrupsjon ikke kan bli tolerert, som for eksempel vitenskapelig forskning eller finansregning.
ECC-minne gjør et system nærmest immunt mot en-bitsfeil, hvor en enkel bit forandrer seg uten grunn. Det meste av ikke-ECC-minne kan ikke oppdage slike feil, men visse typer kan oppdage dem men ikke rette dem.
Bakgrunn for bruk
Elektriske eller magnetiske forstyrrelser kan forårsake at en enkelt bit kan bytte fra 0 til 1 eller 1 til 0 innenfor systemets minne. Tidligere var det trodd at dette var på grunn av alfapartikler som kom fra prosessorens pakkemateriale, men forskning[2] viste senere at de fleste av slike feil kommer fra bakgrunnsstrålingen eller annen kosmisk stråling, som kan forstyrre med minnebrikkene når de enten skriver til dem eller leser av dem.
Som et eksempel, romsonden Cassini-Huygens, som ble skutt opp i 1997, har to identiske opptakere, med 2,5 gigabyte minne hver. Takket være den innebygde EDAC-funksjonaliteten viser telemetri til sonden antallet en-bitsfeil. Under sine første to og et halvt år, rapporterte sonden rundt 280 feil om dagen. Den første dagen den var i rommet var mengden feil fire ganger større, dette var på grunn av en liten solstorm som ble oppdaget av satellitten GOES 9.[3]
Det var noe bekymring rundt at mens RAM får høyere og høyere tetthet, og komponentene på minnebrikkene blir mindre samtidig som minnebrikkene bruker lavere spenninger og mindre strøm, så kan DRAM-brikker bli påvirket av slik stråling oftere siden partikler med lavere energi kan da forandre på en minnecelles status. På den andre siden, så er slike mindre minneceller mindre mål for slike partikler, så det er mindre sannsynlig at en slik partikkel kan treffe minnecellen. Ny forskning[4] viser at slike feil på grunn av kosmisk stråling har sunket dramatisk.
Konsekvensene fra minnefeil er avhengig av systemet. I systemer uten ECC-minne, kan en feil forårsake en krasj eller korrupsjon av data, i større skala er minnefeil den vanligste årsaken til systemkrasj.[5] Minnefeil kan også forårsake sikkerhetssårbarheter.[5] En minnefeil har ingen konsekvenser hvis den forandrer en bit som ikke skaper noen observerbar feil eller data som ikke blir lagret eller brukt i regning. En studie fra 2010 viste at for en nettleser så var bare en liten del av minnefeil som kunne skape korrupsjon av data.[1]
Hurtigminne
Noen prosessorer bruker ECC-prosesser på hurtigminner på prosessoren, blant annet Intels Itanium prosessor, AMD Athlon og Opteron prosessorer, og DEC Alpha 21264.[6][7]
Fordeler og ulemper
ECC-minne er som regel dyrere enn ikke-ECC-minne. Hovedkort og prosessorer som støtter ECC-minne er som regel også dyrere en sine ikke-ECC-kompatible motstykker.
ECC-minne beskytter mot datakorrupsjon som ellers ikke hadde blitt oppdaget, og blir brukt i datamaskiner hvor slike datafeil ikke kan tolereres. ECC-minne reduserer også mengden systemkrasjer, spesielt på systemer med flere brukere. De fleste prosessorer og hovedkort støtter ikke ECC-minne for å senke prisen. Noen ECC-kompatible hovedkort kan også bruke vanlig ikke-ECC-minne, men ikke alltid.
ECC-minne kan senke ytelse på noen systemer med rundt 2–3 % avhengig av bruk og implementering, grunnet den ekstra tiden ECC-minne bruker på å kontrollere dataene.[8] Noen moderne systemer integrerer ECC-testing i prosessoren, slik at det ikke blir noen forsinkelser ved å teste dataene.[1][9]
Referanser
^abcWerner Fischer. «RAM Revealed». admin-magazine.com. Besøkt 20. oktober 2014.
^Borucki, «Comparison of Accelerated DRAM Soft Error Rates Measured at Component and System Level», 46th Annual International Reliability Physics Symposium, Phoenix, 2008, pp. 482–487