ECC-hukommelse ( engelsk error-correcting code memory , memory with error correction) er en type computerhukommelse , der automatisk genkender og korrigerer spontane ændringer (fejl) i hukommelsesbits . Hukommelse, der ikke understøtter fejlkorrektion, er betegnet som ikke-ECC .
Typisk kan fejlkorrigerende hukommelse rette single-bit ændringer i et enkelt maskinord . Det betyder, at når man læser et maskinord fra hukommelsen, vil den samme værdi blive læst, som tidligere blev skrevet, selvom der i intervallet mellem skrivning og læsning blev ændret en bit ved et uheld (for eksempel under påvirkning af kosmiske stråler ). Almindelig hukommelse er generelt ikke i stand til at fortælle, om der er opstået en fejl, selvom nogle typer af paritetskontrolhukommelse kan fortælle, om der er opstået en fejl, men ikke kan rette den.
Fejlkorrigerende hukommelse bruges på de fleste computere, hvor oppetid er vigtig, inklusive de fleste servere. For at hukommelsen kan fungere i fejlkorrektionstilstand, kræves der support fra RAM-controlleren, som kan være en integreret del af chipsættet eller indlejret i et system på en chip , der er integreret med computerkernerne.
Den mest grundlæggende fejlkorrektionsalgoritme er baseret på Hamming-koden . Der er dog andre algoritmer, der kan rette mere end én fejl.
I praksis er DDR* SDRAM ECC-hukommelse meget udbredt til servere med SECDED-klassekoden (enkelt fejlkorrektion og dobbelt fejldetektion). På hukommelsesmoduler tilføjes en chip mere for hver 8 chips, som gemmer ECC -koder på 8 bits store for hver 64 bit hovedhukommelsen [2] .
ECC-databeskyttelsesordninger kan også anvendes på hukommelsen indbygget i mikroprocessorer: cachehukommelse, registerfil. Nogle gange er kontrol også tilføjet til beregningskredsløb.
Elektromagnetisk interferens i et computersystem kan spontant ændre tilstanden af en computerhukommelsescelle . Den mest almindelige årsag til denne ændring er neutroner fra kosmiske stråler [3] . Derfor stiger fejlraten i computersystemer, når højden stiger . Neutronfluxen er således 3,5 gange større i en højde af 1,5 km og 300 gange større i en højde af 10-12 km (typisk passagerfly flyvehøjde) end ved havoverfladen [4] . Derfor kræver systemer, der opererer i stor højde, mere beskyttelse.
For eksempel har Cassini-Huygens rumfartøjet to identiske optagere, der hver indeholder 2,5 gigabit hukommelse. I løbet af de første 2,5 års flyvning blev der registreret et nogenlunde konstant antal fejl hver dag: cirka 280 fejl om dagen. Inden for en dag (6. november 1997) blev antallet af fejl dog firedoblet. Det menes, at dette skete på grund af en geomagnetisk storm [5] (også en protonstorm ), som blev optaget af GOES 9 -satellitten [6] .
Der er bekymring for, at tendensen til mindre fysiske størrelser af hukommelsesmoduler vil føre til en stigning i fejlraten på grund af det faktum, at partikler med lavere energi vil være i stand til at ændre bit [4] . På den anden side reducerer den kompakte størrelse af hukommelsen chancen for, at partikler kommer ind i den. Derudover kan overgangen til teknologier som silicium på en isolator gøre hukommelsen mere stabil [7] .
En undersøgelse udført på et stort antal Google -servere viste, at antallet af fejl kan være fra 25.000 til 70.000 pr. milliard enhedstimer ( engelsk device hours ) per megabit (det vil sige 2,5-7,0 × 10 −11 fejl/bittime) [ 8] .
En løsning på problemet er paritet - ved at bruge en ekstra bit, der registrerer pariteten af de resterende bits. Denne tilgang giver dig mulighed for at opdage fejl, men tillader dig ikke at rette dem, så hvis der opdages en fejl, kan du kun afbryde programafviklingen.
En mere pålidelig tilgang er en, der bruger fejlkorrigerende koder . Den mest almindeligt anvendte fejlretningskode er Hamming-koden . De fleste typer fejlkorrigerende hukommelse, der bruges i moderne computere, kan rette en enkelt bit fejl i et 64-bit maskinord og detektere, men ikke korrigere, en to-bit fejl i et enkelt 64-bit ord [9] .
Den mest effektive tilgang til fejlkorrektion afhænger af den type fejl, der forventes. Det antages ofte, at ændringer til forskellige bit sker uafhængigt, i hvilket tilfælde sandsynligheden for to fejl i et ord er ubetydelig. Denne antagelse holder dog ikke for moderne computere. Chipkill ( IBM ) fejlkorrektionsteknologi giver dig mulighed for at rette flere fejl , herunder når hele hukommelseschippen er beskadiget. Andre hukommelseskorrektionsteknologier, der ikke antager bitfejlsuafhængighed, omfatter Extended ECC ( Sun Microsystems ), Chipspare ( Hewlett-Packard ) og SDDC ( Intel ).
Mange ældre systemer rapporterede kun de fejl, de fandt, som ikke kunne rettes, og rapporterede ikke dem, der blev rettet. Moderne systemer registrerer både korrigerbare fejl (CE, eng. correctable errors ) og ukorrigerbare (UE, eng. uncorrectable errors ). Dette giver dig mulighed for at erstatte beskadiget hukommelse i tide: på trods af at et stort antal korrigerede fejl i fravær af uoprettelige fejl ikke påvirker den korrekte drift af hukommelsen, kan dette indikere, at for dette hukommelsesmodul er sandsynligheden for forekomst af ukorrigerbare fejl i fremtiden vil stige [10] .
Fejlkorrigerende hukommelse beskytter mod forkert betjening af et computersystem på grund af hukommelseskorruption og reducerer sandsynligheden for en fatal systemfejl. Men sådan hukommelse koster mere; bundkortet , chipsættet og processoren , der understøtter fejlkorrigerende hukommelse, kan også være dyrere, så en sådan hukommelse bruges normalt kun i systemer, der er kritiske for jævn og korrekt drift, såsom en filserver , videnskabelige og finansielle applikationer.
Kontrol af beløbene kræver ofte en ekstra cyklus af hukommelsescontrolleren. Yderligere logik, der implementerer tælling, ECC-kontrol og fejlkorrektion, kræver logiske ressourcer og tid til at arbejde enten i selve hukommelsescontrolleren eller i grænsefladen mellem CPU'en og hukommelsescontrolleren [11] . Derfor er fejlkorrigerende hukommelse 2-3 % langsommere end konventionel hukommelse, afhængigt af applikationen [12] .
af Dynamic Random Access Memory (DRAM) | Typer|
---|---|
asynkron | |
Synkron | |
Grafisk | |
Rambus | |
Hukommelsesmoduler |