2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Kirjailija: The Fish Tank of Fat-headed Fish (Yin Haiwen)
Oracle ACE Pro: Tietokanta (Oracle与MySQL)
PostgreSQL ACE -kumppani
10 vuoden kokemus tietokantateollisuudesta, tällä hetkellä pääasiassa tietokantapalveluista
Siinä on OCM 11g/12c/19c, MySQL 8.0 OCP, Exadata, CDP ja muut sertifikaatit
Mo Tianlun MVP, Vuoden Moli-tähti, ITPUB-sertifioitu asiantuntija, 100 asiantuntijaryhmän jäsen, OCM-luennoitsija, PolarDB avoimen lähdekoodin yhteisön tekninen konsultti, HaloDB:n ulkopuolinen tekninen konsultti, OceanBase-tarkkailuryhmän jäsen, nuorisoyhdistyksen MOP-teknologiayhteisö (nuorten tietokanta) Learning Mutual Aid Association ) tekninen neuvonantaja
Hänellä on piirissä nimikkeitä, kuten "Director", "Security" ja "The Biggest Enemy of Domestic Database", eikä hän ole kuuluisa sosiaalinen terroristi (sosiaalinen terroristi).
Julkinen tili: Rasvapäisen kalan akvaario (Yin Haiwen: Rasvapäisen kalan akvaario: yhw1809);
Ellei uusintapainosta luvalla ja lähdettä mainita, kaikki on "laitonta" plagiointia
Olen aiemmin selittänyt palvelimien, kuten CPU:n, SSD:n ja verkon, laitteiston. Yllä mainittuja komponentteja sisältävän emolevyn lisäksi on myös erittäin tärkeä komponentti, joka on yleiseen työpöytätasoon verrattuna (yleinen kotitietokone ) Muisti, palvelimen muistissa on oma virheenkorjaustoiminto, jota kutsumme myös ECC (Error Checking and Correcting) -muistiksi.
Tämä numero selittää lyhyesti, kuinka ECC-muisti toimii.
Muisti on tärkeä osa tietokonetta. Sitä käytetään laskentatietojen väliaikaiseen tallentamiseen suorittimeen ja tietojen vaihtamiseen ulkoisten muistien, kuten kiintolevyjen, kanssa. Se on silta ulkoisen muistin ja CPU:n välillä. Kaikki tietokoneen ohjelmat toimivat muistissa. Niin kauan kuin tietokone käynnistyy, käyttöjärjestelmä siirtää laskettavat tiedot muistista CPU:lle laskennan jälkeen CPU lähettää tulokset.
Muistin syntyminen on pääasiassa korvaamaan valtavia kaistanleveys- ja latenssieroja ulkoisen tallennustilan ja suorittimen sisäänrakennetun välimuistin (eli L1, L2, L3) välillä. Se on pohjimmiltaan suurempi kuin suorittimen sisäänrakennettu välimuisti, mutta yleensä paljon pienempi kuin ulkoinen tallennusväline Välitiedonsiirtolaite voi nopeuttaa tietojen valmistelua hitaammalta ulkoisesta tallennustilasta etukäteen, mikä vähentää tai jopa eliminoi odotusajan CPU:lle tiedon saamiseen.
Palvelimissa käytettävä muisti on nyt DDR-muisti. Yleisen muistin lisäksi on myös muistirajapintaan (tai PCIe-liitäntään) perustuva haihtumaton muisti PMEM (esimerkiksi Intel Optane), joka tarjoaa suuremman osan dataa muistin ja ulkoisen tallennustilan väliin ja on lähellä välimuistialueen nopeus.
Yleisesti ottaen palvelimet kuljettavat tärkeitä liiketoimintajärjestelmiä. Sähkömagneettiset häiriöt voivat aiheuttaa bittien vaihtoa (eli 0:n ja 1:n vaihtoa) muistin ja laitteen välisen tiedonsiirron aikana. CPU, tällä tavalla virheitä tapahtuu (Pankki ei loppujen lopuksi halua varojesi kasvavan ilman syytä. Muutama 0, et halua varojen vähenevän).
Sitten syntyi ECC-muisti, joka havaitsi ennakoivasti datavirheet tiedoista ja korjaa ne.
Tässä on kaksi suhteellisen primitiivistä ratkaisua:
Toisin sanoen tieto lähetetään 3 kopiona, jos jossakin tietyssä kopiossa on ongelma, se voidaan korjata:
Mutta ongelmia on myös ilmaantunut, vaikka esiintymistodennäköisyys on erittäin pieni, jos kahdella tiedolla on bittikäännös samassa paikassa, tietojen varmentamisessa ja virheenkorjauksessa on ongelmia:
Suurin ongelma tämän menetelmän käytössä on IO-kaistanleveyden tuhlaus.
Tällä tavalla tiedon alkuun lisätään virheenkorjauskoodi, eli virheenkorjauskoodi lisätään ennen jokaista dataa 0, ja kun luku on pariton, virheenkorjauskoodi on 1.
Jos virheenkorjauskoodi ei vastaa ykkösten määrää, tiedot lähetetään uudelleen.
Tämä aiheuttaa myös ongelman. Jokainen tarkistus voi vain määrittää, ovatko kaikki tiedot normaalit. Teoriassa virheenkorjausta ei tehdä, ja uudelleenlähetys lisää viivettä.
Samanaikaisesti, jos kaksi tietovirhettä tapahtuu samanaikaisesti, varmentamisen tarkoitusta ei silti voida saavuttaa.
Hamming-koodi on tärkein tällä hetkellä ECC-muistissa käytetty varmennus- ja virheenkorjausmenetelmä.
Jatketaan askel askeleelta seuraavalla tavalla. Oletetaan, että bitti 2 on vastuussa oikean osan pariteetin tarkistuksesta. Jos tiedoissa on virhe ja pariteettitarkistus määrittää, että oikealla puoliskolla ei ole ongelmaa, niin ongelma on vasemmassa puoliskossa, muuten ongelma on oikealla puoliskolla.
Kuten alla olevasta kuvasta näkyy, bitti 1 suorittaa pariteettitarkistuksen sarakkeille 2 ja 4, sitten bitti 1 tallentaa 1. Jos pariteettitarkistuksessa on ongelma sarakkeissa 2 ja 4, ongelma on sarakkeissa 2 ja 4, muuten ongelma on sarakkeissa 1 ja 3.
Yllä olevien kahden menetelmän yhdistelmä voi helposti varmistaa, missä tietosarakkeessa on ongelma:
Käytä seuraavaksi samanlaista menetelmää tarkistamalla rivit 2 ja 4 bitillä 8 ja tarkistamalla alapuoli Rivierotuksen ja osion pariteettitarkistuksen avulla voit löytää virheen sijainnin ja suorittaa virheen korjauksen (käännös). Se siitä.
Yllä olevan tuomion lähtökohtana on kuitenkin, että oletustiedoissa on ongelma Yllä olevan menetelmän arvioinnin jälkeen databitti nro 0 ei sisälly suojaukseen, onko se väärin vai ei yllä oleva pariteettitarkistuksen tulos. Siksi käytämme bittiä 0 koko tietolohkon tarkistamiseen kohdan 3.2 menetelmällä.
Tässä tapauksessa, jos virheitä on kaksi, levyn täyden pariteettitarkistuksen ja osion pariteettitarkistuksen tulokset ovat ristiriidassa Virheen sijaintia ei voida määrittää, mutta voidaan todeta, että koko tietolohko on epänormaali. Lähetä vain tiedot uudelleen.
Mutta kun datavirheitä on kolme, on mahdotonta arvioida.
Toisella tavalla huomaamme, että tarkistuskoodien paikat ovat kaikki 2 N:nnen potenssiin:
Tarkistuskoodi tarvitsee vain sijoittaa N:nnelle potenssille 2. Mitä suurempi lohko, sitä vähemmän sisältöä virheenkorjauskoodi vie, mutta sitä suurempi on useiden bittien käännösten todennäköisyys. Yleinen ECC-lähetyslohkokoko on 72-bittinen, 64-bittinen dataa ja 8-bittinen virheenkorjauskoodi. Siksi muisti, jonka kapasiteetti on 8G, vaatii yleensä vain kahdeksan 1G:n muistihiukkasta, kun taas ECC-muisti, jonka kapasiteetti on 8G, vaatii yhdeksän 1G:n muistihiukkasta. Ylimääräistä 1G-muistia käytetään ylimääräisen virheenkorjauskoodikapasiteetin tallentamiseen.
Tietokonevirheen korjaus ei kuitenkaan todellakaan laske virheen sijaintia tavallisella "tyhmillä" tavalla.
Otamme pois kaikki paikat, jotka ovat 1, ja suoritamme pystysuoran binäärisen TAI-operaation saadaksemme ongelmallisen sijainnin suoraan:
Liite: On myös LDPC (Low Density Parity-Check Code), joka on matalatiheyksinen pariteettitarkistuskoodi. Erityistä toteutusperiaatetta ei selitetä tässä. Tämä menetelmä voi määrittää monibittisen kääntämisen ongelman käytetään SSD-korjaukseen. Muistin suuren nopeuden ja toteutuskustannusten vuoksi ECC:n toteuttamiseen käytetään edelleen Hamming-koodeja.
Tässä numerossa esitellään lyhyesti, kuinka ECC-muisti toteuttaa virheenkorjauksen.
Vanha sääntö on tietää, mitä on kirjoitettu.