ECC-muisti

ECC-muisti ( englanniksi  virheenkorjauskoodimuisti , muisti virheenkorjauksella) on tietokoneen muistityyppi , joka tunnistaa ja korjaa automaattisesti muistibittien spontaanit muutokset (virheet) . Muisti, joka ei tue virheenkorjausta, on nimetty ei-ECC: ksi .

Yleensä virheenkorjaava muisti voi korjata yksittäisen konesanan yhden bitin muutokset . Tämä tarkoittaa, että kun luetaan yksi konesana muistista, luetaan sama arvo, joka kirjoitettiin aiemmin, vaikka kirjoittamisen ja lukemisen välissä yksi bitti olisi vahingossa muuttunut (esimerkiksi kosmisten säteiden vaikutuksesta ). Tavallinen muisti ei yleensä pysty kertomaan, onko tapahtunut virhe, vaikka jotkin pariteettitarkistusmuistityypit voivat kertoa virheen, mutta eivät voi korjata sitä.

Virheenkorjausmuistia käytetään useimmissa tietokoneissa, joissa käyttöaika on tärkeää, mukaan lukien useimmat palvelimet. Jotta muisti toimisi virheenkorjaustilassa, tarvitaan tukea RAM-ohjaimelta, joka voi olla kiinteä osa piirisarjaa tai upotettu järjestelmään sirulle , joka on integroitu laskentaytimiin.

Alkuperäisin virheenkorjausalgoritmi perustuu Hamming - koodiin . On kuitenkin olemassa muita algoritmeja, jotka voivat korjata useamman kuin yhden virheen.

Käytännössä DDR* SDRAM ECC -muistia käytetään laajasti palvelimissa, joissa on SECDED-luokkakoodi (single error correction ja double error detection). Muistimoduuleissa jokaista kahdeksaa sirua kohden lisätään vielä yksi siru, joka tallentaa 8-bittiset ECC -koodit jokaista päämuistin 64 bittiä kohden [ 2] .

Myös ECC-tietosuojausmalleja voidaan soveltaa mikroprosessoreihin sisäänrakennettuun muistiin: välimuistiin, rekisteritiedostoon. Joskus ohjausta lisätään myös laskentapiireihin.

Ongelman kuvaus

Sähkömagneettiset häiriöt tietokonejärjestelmän sisällä voivat muuttaa spontaanisti tietokoneen muistisolun tilaa . Yleisin syy tähän muutokseen on kosmisten säteiden neutronit [3] . Siksi virheprosentti tietokonejärjestelmissä kasvaa korkeuden kasvaessa . Siten neutronivuo on 3,5 kertaa suurempi 1,5 km:n korkeudella ja 300 kertaa suurempi 10-12 km:n korkeudella (tyypillinen matkustajalentokoneen lentokorkeus) kuin merenpinnan tasolla [4] . Siksi korkealla toimivat järjestelmät vaativat enemmän suojaa.

Esimerkiksi Cassini-Huygens-avaruusaluksessa on kaksi identtistä tallenninta, joista kummassakin on 2,5 gigabittiä muistia. Ensimmäisen 2,5 lentovuoden aikana virheitä kirjattiin joka päivä suunnilleen tasainen määrä: noin 280 virhettä päivässä. Yhden päivän sisällä (6. marraskuuta 1997) virheiden määrä kuitenkin nelinkertaistui. Tämän uskotaan johtuneen geomagneettisesta myrskystä [5] (myös protonimyrskystä ), jonka GOES 9 -satelliitti [6] tallensi .

On huolestuttavaa, että suuntaus kohti pienempiä fyysisiä muistimoduuleita johtaa virhesuhteen kasvuun, koska pienemmän energian hiukkaset pystyvät muuttamaan bittiä [4] . Toisaalta muistin kompakti koko vähentää hiukkasten joutumista siihen. Lisäksi siirtyminen sellaisiin teknologioihin, kuten piihin eristimessä, voi tehdä muistista vakaamman [7] .

Useilla Googlen palvelimilla tehty tutkimus osoitti, että virheiden määrä voi olla 25 000–70 000 miljardia laitetuntia ( englanninkielistä  laitetuntia ) kohden megabittiä kohden (eli 2,5–7,0 × 10–11 virhettä / bittitunti) [ 8] .

Tekniikka

Yksi ratkaisu ongelmaan on pariteetti  - ylimääräisen bitin käyttäminen, joka tallentaa jäljellä olevien bittien pariteetin. Tällä lähestymistavalla voit havaita virheet, mutta ei korjata niitä, joten jos virhe havaitaan, voit vain keskeyttää ohjelman suorittamisen.

Luotettavampi lähestymistapa on sellainen, joka käyttää virheenkorjauskoodeja . Yleisimmin käytetty virheenkorjauskoodi on Hamming-koodi . Useimmat nykyaikaisissa tietokoneissa käytetyt virheenkorjausmuistityypit voivat korjata yhden bitin virheen yhdessä 64-bittisessä konesanassa ja havaita, mutta ei korjata, kaksibittisen virheen yhdessä 64-bittisessä sanassa [9] .

Tehokkain tapa korjata virheitä riippuu odotettavissa olevien virheiden tyypistä. Usein oletetaan, että muutokset eri bitteihin tapahtuvat itsenäisesti, jolloin kahden virheen todennäköisyys yhdessä sanassa on mitätön. Tämä oletus ei kuitenkaan päde nykyaikaisille tietokoneille. Chipkill ( IBM ) -virheenkorjaustekniikan avulla voit korjata useita virheitä, myös silloin, kun koko muistisiru on vaurioitunut. Muita muistinkorjaustekniikoita, jotka eivät oleta bittivirheiden riippumattomuutta, ovat Extended ECC ( Sun Microsystems ), Chipspare ( Hewlett-Packard ) ja SDDC ( Intel ).

Monet vanhemmat järjestelmät ilmoittivat vain löytämiään vioista, joita ei voitu korjata, eivätkä ne, jotka korjattiin. Nykyaikaiset järjestelmät tallentavat sekä korjattavat virheet (CE, eng.  correctable errors ) että korjaamattomat (UE, eng.  uncorrectable errors ). Tämän avulla voit vaihtaa vaurioituneen muistin ajoissa: huolimatta siitä, että suuri määrä korjattuja virheitä korjaamattomien virheiden puuttuessa ei vaikuta muistin oikeaan toimintaan, tämä voi viitata siihen, että tämän muistimoduulin tapauksessa korjaamattomien virheiden esiintymisen todennäköisyys. virheet lisääntyvät tulevaisuudessa [10] .

Edut ja haitat

Virheenkorjausmuisti suojaa tietokonejärjestelmän virheelliseltä toiminnalta muistin vioittumisen vuoksi ja vähentää kohtalokkaan järjestelmävian todennäköisyyttä. Tällainen muisti kuitenkin maksaa enemmän; emolevy , piirisarja ja prosessori , jotka tukevat virheenkorjausmuistia, voivat myös olla kalliimpia, joten tällaista muistia käytetään yleensä vain järjestelmissä, jotka ovat kriittisiä sujuvan ja oikean toiminnan kannalta, kuten tiedostopalvelin , tieteelliset ja taloudelliset sovellukset.

Summien tarkistaminen vaatii usein yhden ylimääräisen muistiohjaimen kierroksen. Lisälogiikka, joka toteuttaa laskennan, ECC-tarkistuksen ja virheenkorjauksen, vaatii loogisia resursseja ja aikaa toimiakseen joko itse muistiohjaimessa tai CPU : n ja muistiohjaimen välisessä rajapinnassa [11] . Siksi virheenkorjaava muisti on sovelluksesta riippuen 2-3 % hitaampi kuin perinteinen muisti [12] .

Katso myös

Muistiinpanot

  1. Werner Fischer. RAM paljastettu . admin store.com . Haettu 20. lokakuuta 2014. Arkistoitu alkuperäisestä 20. lokakuuta 2014.
  2. Arkistoitu kopio (linkki ei saatavilla) . Haettu 20. marraskuuta 2016. Arkistoitu alkuperäisestä 18. huhtikuuta 2016. 
  3. Single Event Upset at Ground Level, Eugene Normand, jäsen, IEEE, Boeing Defense & Space Group, Seattle, WA 98124-2499
  4. 1 2 " Tutkimus tekniikoista tietojenkäsittelyjärjestelmien mallintamiseen ja luotettavuuden parantamiseen ", IEEE TPDS, 2015
  5. Kuznetsov V. V. Solar-Terrestrial fysiikka (luentokurssi fysiikan opiskelijoille). Luento 7. Auringon aktiivisuus. // Aurinkomyrskyt. Gorno-Altain osavaltion yliopisto. 2012 . Haettu 9. tammikuuta 2018. Arkistoitu alkuperäisestä 18. syyskuuta 2017.
  6. Gary M. Swift ja Steven M. Guertin. "DRAM-muistien monibittisten häiriöiden havainnot lennon aikana". Jet Propulsion Laboratory (linkki ei saatavilla) . Haettu 17. huhtikuuta 2016. Arkistoitu alkuperäisestä 3. helmikuuta 2015. 
  7. Borucki, "Kiihdytettyjen DRAM-pehmeiden virheiden vertailu komponentti- ja järjestelmätasolla", 46th Annual International Reliability Physics Symposium, Phoenix, 2008, pp. 482–487
  8. Schroeder, Bianca; Pinheiro, Eduardo; Weber, Wolf-Dietrich. DRAM-virheet luonnossa: laajamittainen kenttätutkimus  (määrittämätön)  // SIGMETRIKKEET/Suorituskyky. - ACM, 2009. - ISBN 978-1-60558-511-6 .
  9. StrongArm SA-1110:n käyttö nanosatelliitin sisätietokoneessa . Tsinghuan avaruuskeskus, Tsinghuan yliopisto, Peking. Haettu 16. helmikuuta 2009. Arkistoitu alkuperäisestä 2. lokakuuta 2011.
  10. Doug Thompson, Mauro Carvalho Chehab. "EDAC - Error Detection and Correction" Arkistoitu alkuperäisestä 5. syyskuuta 2009. . 2005-2009. "Edac-ytimen moduulin tavoitteena on havaita ja raportoida virheet, jotka tapahtuvat Linux-käyttöjärjestelmässä."
  11. AMD-762™ -järjestelmäohjaimen ohjelmisto/BIOS-suunnitteluopas, s. 179 . AMD (2002). Haettu 21. marraskuuta 2016. Arkistoitu alkuperäisestä 21. marraskuuta 2016. ”ECC-toimintoa tukeva lisälogiikka on kallista sekä piikiinteistöjen että järjestelmän ajoituksen osalta. Tietojen korjausta tukevissa ECC-tiloissa on käytettävä yhtä ylimääräistä järjestelmäkelloa korjattujen tietojen luomiseen… AMD Athlon -prosessori tarkistaa omat virheensä."
  12. ECC:n keskustelu pcguidessa . Pcguide.com (17. huhtikuuta 2001). Haettu 23. marraskuuta 2011. Arkistoitu alkuperäisestä 18. marraskuuta 2011.

Linkit