ECC-minne

ECC-minne ( engelsk  error-correcting code memory , memory with error correction) är en typ av datorminne som automatiskt känner igen och korrigerar spontana förändringar (fel) i minnesbitar . Minne som inte stöder felkorrigering betecknas som icke-ECC .

Vanligtvis kan felkorrigerande minne korrigera enbitsändringar i ett enda maskinord . Detta betyder att när man läser ett maskinord från minnet kommer samma värde att läsas som tidigare skrevs, även om en bit av misstag ändrades i intervallet mellan skrivning och läsning (till exempel under inverkan av kosmiska strålar ). Vanligt minne kan i allmänhet inte avgöra om ett fel har inträffat, även om vissa typer av paritetskontrollminne kan avgöra om ett fel har inträffat men inte kan korrigera det.

Felkorrigerande minne används i de flesta datorer där drifttid är viktig, inklusive de flesta servrar. För att minnet ska fungera i felkorrigeringsläge krävs stöd från RAM-styrenheten, som kan vara en integrerad del av styrkretsen eller inbäddad i ett system på ett chip som är integrerat med datorkärnorna.

Den mest grundläggande felkorrigeringsalgoritmen är baserad på Hamming-koden . Det finns dock andra algoritmer som kan korrigera mer än ett fel.

I praktiken används DDR* SDRAM ECC-minne flitigt för servrar med SECDED-klasskoden (enkelfelskorrigering och dubbelfelsdetektering). På minnesmoduler, för varje 8 krets, läggs ytterligare ett chip till, som lagrar ECC- koder på 8 bitar i storlek för varje 64 bitar av huvudminnet [2] .

Dessutom kan ECC-dataskyddsscheman tillämpas på minnet som är inbyggt i mikroprocessorer: cacheminne, registerfil. Ibland läggs även kontroll till beräkningskretsar.

Beskrivning av problemet

Elektromagnetiska störningar i ett datorsystem kan spontant ändra tillståndet för en dators minnescell . Den vanligaste orsaken till denna förändring är neutroner från kosmiska strålar [3] . Därför ökar felfrekvensen i datorsystem när höjden ökar . Således är neutronflödet 3,5 gånger större på en höjd av 1,5 km och 300 gånger större på en höjd av 10-12 km (typisk flyghöjd för passagerarflygplan) än vid havsnivån [4] . Därför kräver system som arbetar på hög höjd mer skydd.

Till exempel har rymdfarkosten Cassini-Huygens två identiska brännare som var och en innehåller 2,5 gigabit minne. Under de första 2,5 åren av flygningen registrerades ett ungefär konstant antal fel varje dag: cirka 280 fel per dag. Men inom en dag (6 november 1997) fyrdubblades antalet fel. Man tror att detta hände på grund av en geomagnetisk storm [5] (även en protonstorm ), som registrerades av GOES 9 -satelliten [6] .

Det finns farhågor om att trenden mot mindre fysiska storlekar av minnesmoduler kommer att leda till en ökning av felfrekvensen på grund av att partiklar med lägre energi kommer att kunna ändra biten [4] . Å andra sidan minskar den kompakta storleken på minnet risken för att partiklar kommer in i det. Dessutom kan övergången till teknologier som kisel på en isolator göra minnet mer stabilt [7] .

En studie utförd på ett stort antal Google -servrar visade att antalet fel kan vara från 25 000 till 70 000 per miljard enhetstimmar ( engelska  enhetstimmar ) per megabit (det vill säga 2,5-7,0 × 10 −11 fel/bittimme) [ 8] .

Teknik

En lösning på problemet är paritet  - att använda en extra bit som registrerar pariteten för de återstående bitarna. Detta tillvägagångssätt låter dig upptäcka fel, men tillåter dig inte att korrigera dem, så om ett fel upptäcks kan du bara avbryta programkörningen.

En mer tillförlitlig metod är en som använder felkorrigerande koder . Den vanligaste felkorrigeringskoden är Hamming-koden . De flesta typer av felkorrigerande minne som används i moderna datorer kan korrigera ett enstaka bitsfel i ett 64-bitars maskinord och upptäcka, men inte korrekt, ett tvåbitarsfel i ett enda 64-bitars ord [9] .

Den mest effektiva metoden för felkorrigering beror på vilken typ av fel som förväntas. Det antas ofta att förändringar av olika bitar sker oberoende, i vilket fall sannolikheten för två fel i ett ord är försumbar. Detta antagande gäller dock inte för moderna datorer. Chipkill ( IBM ) felkorrigeringsteknik gör att du kan korrigera flera fel, inklusive när hela minneschippet är skadat . Andra minneskorrigeringstekniker som inte utgår från bitfelsoberoende inkluderar Extended ECC ( Sun Microsystems ), Chipspare ( Hewlett-Packard ) och SDDC ( Intel ).

Många äldre system rapporterade bara de buggar som de hittade som inte kunde fixas och rapporterade inte de som fixades. Moderna system registrerar både korrigerbara fel (CE, eng.  correctable errors ) och okorrigerbara (UE, eng.  uncorrectable errors ). Detta gör att du kan byta ut skadat minne i tid: trots att ett stort antal korrigerade fel i frånvaro av oåterställbara fel inte påverkar minnets korrekta funktion, kan detta indikera att för denna minnesmodul är sannolikheten för förekomst av okorrigerbara fel i framtiden kommer att öka [10] .

Fördelar och nackdelar

Felkorrigerande minne skyddar mot felaktig användning av ett datorsystem på grund av minneskorruption och minskar sannolikheten för ett allvarligt systemfel. Sådant minne kostar dock mer; moderkortet , styrkretsen och processorn som stöder felkorrigerande minne kan också vara dyrare, så sådant minne används vanligtvis bara i system som är kritiska för smidig och korrekt drift, såsom en filserver , vetenskapliga och finansiella applikationer.

Att kontrollera summorna kräver ofta en extra cykel av minneskontrollern. Ytterligare logik som implementerar räkning, ECC-kontroll och felkorrigering kräver logiska resurser och tid för att fungera antingen i själva minnesstyrenheten eller i gränssnittet mellan CPU :n och minnesstyrenheten [11] . Därför är felkorrigerande minne 2-3 % långsammare än konventionellt minne, beroende på applikationen [12] .

Se även

Anteckningar

  1. Werner Fischer. RAM avslöjat . admin store.com . Hämtad 20 oktober 2014. Arkiverad från originalet 20 oktober 2014.
  2. Arkiverad kopia (länk ej tillgänglig) . Hämtad 20 november 2016. Arkiverad från originalet 18 april 2016. 
  3. Single Event Upset at Ground Level, Eugene Normand, medlem, IEEE, Boeing Defence & Space Group, Seattle, WA 98124-2499
  4. 1 2 " A Survey of Techniques for Modeling and Improving Reliability of Computing Systems ", IEEE TPDS, 2015
  5. Kuznetsov V. V. Solar-terrestrisk fysik (en kurs med föreläsningar för studenter i fysik). Föreläsning 7. Solaktivitet. // Solstormar. Gorno-Altai State University. 2012 . Hämtad 9 januari 2018. Arkiverad från originalet 18 september 2017.
  6. Gary M. Swift och Steven M. Guertin. "Observationer under flygning av störningar med flera bitar i DRAMs". Jet Propulsion Laboratory (inte tillgänglig länk) . Hämtad 17 april 2016. Arkiverad från originalet 3 februari 2015. 
  7. Borucki, "Comparison of Accelerated DRAM Soft Error Rates Measured at Component and System Level", 46th Annual International Reliability Physics Symposium, Phoenix, 2008, s. 482–487
  8. Schroeder, Bianca; Pinheiro, Eduardo; Weber, Wolf-Dietrich. DRAM-fel i det vilda: En storskalig fältstudie  (obestämd)  // SIGMETRICS/Performance. - ACM, 2009. - ISBN 978-1-60558-511-6 .
  9. Använda StrongArm SA-1110 i omborddatorn för Nanosatellite . Tsinghua Space Center, Tsinghua University, Peking. Hämtad 16 februari 2009. Arkiverad från originalet 2 oktober 2011.
  10. Doug Thompson, Mauro Carvalho Chehab. "EDAC - Error Detection And Correction" Arkiverad från originalet den 5 september 2009. . 2005-2009. "Edac-kärnmodulens mål är att upptäcka och rapportera fel som uppstår i datorsystemet som körs under linux."
  11. AMD-762™ System Controller Software/BIOS Design Guide, sid. 179 . AMD (2002). Hämtad 21 november 2016. Arkiverad från originalet 21 november 2016. "Den extra logiken för att stödja ECC-funktionen är kostsam i både kiselfastigheter och systemtiming. I ECC-lägena som stöder datakorrigering måste ytterligare en systemklocka användas för att generera den korrigerade datan... AMD Athlon-processor kontrollerar sina egna fel"
  12. Diskussion om ECC på pcguide . Pcguide.com (17 april 2001). Hämtad 23 november 2011. Arkiverad från originalet 18 november 2011.

Länkar