Virheentunnistus ja -korjaus
Sovellukset, jotka edellyttävät pientä viivettä (kuten puhelinkeskustelut), eivät voi käyttää automaattista toistopyyntöä (ARQ), vaan niissä on käytettävä virheiden korjausta eteenpäin (FEC). Kun ARQ-järjestelmä havaitsee virheen ja lähettää sen uudelleen, uudelleen lähetetty tieto saapuu liian myöhään ollakseen käyttökelpoista.
Sovellukset, joissa lähetin unohtaa tiedon heti lähetyksen jälkeen (kuten useimmat televisiokamerat), eivät voi käyttää ARQ:ta; niissä on käytettävä FEC:tä, koska virheen tapahtuessa alkuperäinen tieto ei ole enää käytettävissä.
Sovelluksissa, jotka käyttävät ARQ:ta, on oltava paluukanava; sovellukset, joilla ei ole paluukanavaa, eivät voi käyttää ARQ:ta.
Sovellusten, jotka vaativat erittäin alhaisia virhetasoja (kuten digitaaliset rahansiirrot), on käytettävä ARQ:ta, koska FEC:llä on mahdollisuus korjaamattomiin virheisiin.
Luotettavuus- ja tarkastustekniikassa hyödynnetään myös virheenkorjauskoodeihin liittyvää teoriaa.
InternetMuokkaus
Tyypillisessä TCP/IP-pinossa virheidenhallinta suoritetaan useilla tasoilla:
- Jokainen ethernet-kehys käyttää virheiden havaitsemista CRC-32:lla. Vastaanotinlaitteisto hylkää kehykset, joissa on havaittuja virheitä.
- IPv4-otsikko sisältää tarkistussumman, joka suojaa otsikon sisällön. Paketit, joiden tarkistussumma on virheellinen, hylätään verkossa tai vastaanottimessa.
- Tarkistussumma on jätetty pois IPv6-otsakkeesta, jotta verkon reitityksen käsittelykustannukset saataisiin minimoitua ja koska nykyisen linkkikerrostekniikan oletetaan tarjoavan riittävän virhetunnistuksen (ks. myös RFC 3819).
- UDP:ssä on valinnainen tarkistussumma, joka peittää hyötykuorman ja osoitetiedon UDP:n ja IP:n otsakkeissa. Verkkopino hylkää virheellisiä tarkistussummia sisältävät paketit. Tarkistussumma on valinnainen IPv4:ssä ja pakollinen IPv6:ssa. Kun se jätetään pois, oletetaan, että tiedonsiirtokerros tarjoaa halutun tason virhesuojauksen.
- TCP tarjoaa tarkistussumman hyötykuorman ja osoitetietojen suojaamiseksi TCP- ja IP-otsakkeissa. Verkkopino hylkää virheellisen tarkistussumman sisältävät paketit, ja ne lähetetään lopulta uudelleen ARQ:n avulla joko eksplisiittisesti (esimerkiksi triple-ackin avulla) tai implisiittisesti aikakatkaisun vuoksi.
Syväavaruuden tietoliikenne Muokkaa
Virheenkorjauskoodien kehittyminen kytkeytyi tiiviisti syväavaruuslentojen historiaan johtuen signaalin voimakkuuden äärimmäisestä laimenemisesta planetaaristen etäisyyksien yli ja rajallisesta tehon saatavuudesta avaruusluotainten mukana. Kun ensimmäiset avaruuslentolennot lähettivät tietonsa koodaamatta, vuodesta 1968 alkaen digitaalinen virheenkorjaus toteutettiin (suboptimaalisesti dekoodattujen) konvoluutiokoodien ja Reed-Muller-koodien muodossa. Reed-Muller-koodi soveltui hyvin avaruusaluksen aiheuttamaan kohinaan (joka vastasi suunnilleen kellokäyrää), ja se toteutettiin Mariner-avaruusalusta varten ja sitä käytettiin tehtävissä vuosina 1969-1977.
Vuonna 1977 alkaneet Voyager 1- ja Voyager 2 -lentomatkat suunniteltiin toimittamaan värikuvaa ja tieteellistä tietoa Jupiterista ja Saturnuksesta. Tämä johti lisääntyneisiin koodausvaatimuksiin, ja siksi avaruusaluksia tuettiin (optimaalisesti Viterbi-dekoodatuilla) konvoluutiokoodeilla, jotka voitiin ketjuttaa ulomman Golay (24,12,8) -koodin kanssa. Voyager 2 -aluksessa käytettiin lisäksi Reed-Solomon-koodia. Yhdistetty Reed-Solomon-Viterbi (RSV) -koodi mahdollisti erittäin tehokkaan virheenkorjauksen ja mahdollisti avaruusaluksen pitkän matkan Uranukseen ja Neptunukseen. Vuonna 1989 tehtyjen ECC-järjestelmän päivitysten jälkeen molemmat alukset käyttivät V2 RSV-koodausta.
Avaruusdatajärjestelmien neuvoa-antava komitea (Consultative Committee for Space Data Systems) suosittelee tällä hetkellä käytettäväksi virheenkorjauskoodeja, jotka ovat suorituskyvyltään vähintään samanlaisia kuin Voyager 2:n RSV-koodi. Ketjutetut koodit ovat yhä enemmän jäämässä pois avaruuslentojen suosiosta, ja ne korvataan tehokkaammilla koodeilla, kuten turbokoodeilla tai LDPC-koodeilla.
Erilaiset syväavaruus- ja kiertoratamatkat viittaavat siihen, että yhden ainoan sopivan virheenkorjausjärjestelmän löytäminen on jatkuva ongelma. Maata lähellä olevissa tehtävissä viestintäkanavan kohinan luonne on erilainen kuin planeettojen välisessä tehtävässä olevan avaruusaluksen kohdalla. Lisäksi, kun avaruusaluksen etäisyys Maasta kasvaa, kohinan korjausongelma vaikeutuu.
SatelliittilähetyksetEdit
Satelliittitransponderin kaistanleveyden kysyntä kasvaa edelleen, koska halutaan välittää televisiolähetyksiä (mukaan lukien uudet kanavat ja teräväpiirtotelevisiolähetykset) ja IP-dataa. Transponderien saatavuus ja kaistanleveyden rajoitukset ovat rajoittaneet tätä kasvua. Transponderin kapasiteetti määräytyy valitun modulaatiojärjestelmän ja FEC:n kuluttaman kapasiteetin osuuden mukaan.
Tiedon tallennus Muokkaa
Virheentunnistus- ja virheenkorjauskoodeja käytetään usein parantamaan tiedon tallennusvälineiden luotettavuutta. Ensimmäisessä magneettinauhatietotallennuksessa oli vuonna 1951 pariteettirata, joka kykeni havaitsemaan yhden bitin virheet. Ryhmäkoodatuissa tallennusnauhoissa käytetty optimaalinen suorakulmainen koodi paitsi havaitsee myös korjaa yhden bitin virheet. Jotkin tiedostomuodot, erityisesti arkistomuodot, sisältävät tarkistussumman (useimmiten CRC32) korruption ja katkeamisen havaitsemiseksi, ja ne voivat käyttää redundanssia tai pariteettitiedostoja korruptoituneen datan osien palauttamiseksi. Reed-Solomon-koodeja käytetään CD-levyissä korjaamaan naarmujen aiheuttamia virheitä.
Nykyaikaiset kiintolevyt käyttävät CRC-koodeja havaitsemaan ja Reed-Solomon-koodeja korjaamaan pieniä virheitä sektorien lukemisessa sekä palauttamaan dataa sektoreilta, jotka ovat ”menneet rikki”, ja tallentamaan datan varasektoreille. RAID-järjestelmät käyttävät erilaisia virheenkorjaustekniikoita virheiden korjaamiseen, kun kiintolevy vikaantuu kokonaan. Tiedostojärjestelmät, kuten ZFS tai Btrfs, sekä jotkin RAID-toteutukset tukevat datan pyyhkimistä ja uudelleenkäsittelyä, jolloin huonot lohkot voidaan havaita ja (toivottavasti) palauttaa ennen niiden käyttöä. Elvytetty data voidaan kirjoittaa uudelleen täsmälleen samaan fyysiseen paikkaan, varalohkoihin muualla samassa laitteistossa tai data voidaan kirjoittaa uudelleen korvaavalle laitteistolle.
Virheenkorjaava muistiEdit
DRAM-muisti voi tarjota vahvemman suojan pehmeitä virheitä vastaan tukeutumalla virheenkorjauskoodeihin. Tällainen virheenkorjaava muisti, joka tunnetaan nimellä ECC- tai EDAC-suojattu muisti, on erityisen toivottavaa tehtäväkriittisissä sovelluksissa, kuten tieteellisessä tietojenkäsittelyssä, rahoitusalalla, lääketieteessä jne. sekä syvän avaruuden sovelluksissa avaruuden lisääntyneen säteilyn vuoksi.
Virheenkorjaavat muistinohjaimet käyttävät perinteisesti Hamming-koodeja, joskin jotkut käyttävät kolminkertaista modulaarista redundanssia.
Interleaving mahdollistaa sen, että yksittäisen kosmisen säteilyn vaikutus, joka mahdollisesti häiritsee useita fyysisesti vierekkäisiä bittejä, voidaan jakaa useisiin sanoihin yhdistämällä vierekkäiset bitit eri sanoihin. Niin kauan kuin yksittäisen tapahtuman aiheuttama häiriö (single event upset, SEU) ei ylitä virhekynnystä (esim. yksittäinen virhe) missään tietyssä sanassa käyttökertojen välillä, se voidaan korjata (esim. yhden bitin virheenkorjauskoodilla), ja illuusio virheettömästä muistijärjestelmästä voi säilyä.
Yksittäisten ECC-muistien toimintaan vaadittavien laitteisto-ominaisuuksien lisäksi käyttöjärjestelmissä on tavallisesti asiaan liittyviä raportointimahdollisuuksia, joiden avulla voidaan antaa ilmoituksia, kun pehmeät virheet palautuvat avoimesti. Pehmeiden virheiden määrän lisääntyminen saattaa viitata siihen, että DIMM-moduuli on vaihdettava, ja tällaista palautetietoa ei olisi helposti saatavilla ilman asiaan liittyviä raportointitoimintoja. Yksi esimerkki on Linux-ytimen EDAC-alijärjestelmä (joka tunnettiin aiemmin nimellä Bluesmoke), joka kerää tietoja tietokonejärjestelmän sisällä olevilta virhetarkistusta tukevilta komponenteilta; ECC-muistiin liittyvien tapahtumien keräämisen ja niistä raportoimisen lisäksi se tukee myös muita tarkistussummavirheitä, mukaan lukien PCI-väylässä havaitut virheet.
Vähäiset järjestelmät tukevat myös muistin pesua.