Fejlregistrering og -korrektion
Anvendelser, der kræver lav latenstid (f.eks. telefonsamtaler), kan ikke bruge ARQ (Automatic Repeat Request); de skal bruge FEC (Forward Error Correction). Når et ARQ-system opdager en fejl og genudsender den, vil de genudsendte data ankomme for sent til at være brugbare.
Anvendelser, hvor senderen straks glemmer oplysningerne, så snart de er sendt (f.eks. de fleste tv-kameraer), kan ikke anvende ARQ; de skal anvende FEC, fordi de oprindelige data ikke længere er tilgængelige, når der opstår en fejl.
Anvendelser, der anvender ARQ, skal have en returkanal; anvendelser uden returkanal kan ikke anvende ARQ.
Anvendelser, der kræver ekstremt lave fejlfrekvenser (f.eks. digitale pengeoverførsler), skal bruge ARQ på grund af muligheden for ukorrigerbare fejl med FEC.
Pålidelighed og inspektionsteknik gør også brug af teorien om fejlkorrigerende koder.
InternetEdit
I en typisk TCP/IP-stack udføres fejlkontrol på flere niveauer:
- Hver Ethernet-ramme anvender CRC-32-fejldetektion. Rammer med fundne fejl kasseres af modtagerhardwaren.
- IPv4-headeren indeholder en kontrolsum, der beskytter indholdet af headeren. Pakker med ukorrekte kontrolsummer droppes i netværket eller hos modtageren.
- Kontrolsummen blev udeladt fra IPv6-headeren for at minimere behandlingsomkostningerne i netværksrouting, og fordi den nuværende teknologi i forbindelseslaget antages at give tilstrækkelig fejlfinding (se også RFC 3819).
- UDP har en valgfri kontrolsum, der dækker nyttelasten og adresseringsoplysningerne i UDP- og IP-headerne. Pakker med ukorrekte kontrolsummer kasseres af netværksstacken. Kontrolsummen er valgfri under IPv4 og påkrævet under IPv6. Når den udelades, antages det, at dataforbindelseslaget leverer det ønskede niveau af fejlbeskyttelse.
- TCP indeholder en checksum til beskyttelse af nyttelasten og adresseringsoplysningerne i TCP- og IP-headerne. Pakker med ukorrekte kontrolsummer kasseres af netværksstacken og bliver i sidste ende genudsendt ved hjælp af ARQ, enten eksplicit (f.eks. gennem triple-ack) eller implicit på grund af en timeout.
Telekommunikation i det dybe rumRediger
Udviklingen af fejlkorrektionskoder var tæt forbundet med historien om missioner i det dybe rum på grund af den ekstreme fortynding af signaleffekten over interplanetariske afstande og den begrænsede strømtilgængelighed om bord på rumsonder. Mens de tidlige missioner sendte deres data ukodet, blev der fra 1968 indført digital fejlkorrektion i form af (suboptimalt dekodede) konvolutionskoder og Reed-Muller-koder. Reed-Muller-koden var velegnet til den støj, som rumfartøjet var udsat for (den svarede nogenlunde til en klokkekurve), og den blev implementeret til Mariner-rumfartøjet og anvendt på missioner mellem 1969 og 1977.
Missionerne Voyager 1 og Voyager 2, som startede i 1977, skulle levere farvebilleder og videnskabelige oplysninger fra Jupiter og Saturn. Dette resulterede i øgede kodningskrav, og derfor blev rumfartøjerne understøttet af (optimalt Viterbi-afkodede) konvolutionskoder, der kunne sammenkædes med en ydre Golay (24,12,8)-kode. Voyager 2-fartøjet understøttede desuden en implementering af en Reed-Solomon-kode. Den sammenkædede Reed-Solomon-Viterbi-kode (RSV) muliggjorde en meget effektiv fejlkorrektion og gjorde det muligt for rumfartøjet at foretage en længere rejse til Uranus og Neptun. Efter opgraderinger af ECC-systemet i 1989 anvendte begge rumfartøjer V2 RSV-kodning.
Den rådgivende komité for rumdatasystemer anbefaler i øjeblikket som et minimum brug af fejlkorrektionskoder med en ydeevne svarende til Voyager 2 RSV-koden. Sammenkædede koder falder i stigende grad i unåde i forbindelse med rummissioner og erstattes af mere effektive koder som f.eks. turbokoder eller LDPC-koder.
De forskellige typer af dybhavs- og kredsløbsmissioner, der udføres, tyder på, at det vil være et vedvarende problem at finde et fejlkorrektionssystem, der passer til alle. Ved missioner tæt på Jorden er støjen i kommunikationskanalen af en anden art end den støj, som et rumfartøj på en interplanetarisk mission udsættes for. Desuden bliver problemet med at korrigere for støj vanskeligere, jo længere et rumfartøj er fra Jorden.
SatellitudsendelserRediger
Efterspørgslen efter satellittransponderbåndbredde fortsætter med at vokse, hvilket skyldes ønsket om at levere tv (herunder nye kanaler og højopløseligt tv) og IP-data. Transpondertilgængelighed og båndbreddebegrænsninger har begrænset denne vækst. Transponderkapaciteten bestemmes af den valgte modulationsordning og den andel af kapaciteten, der forbruges af FEC.
DatalagringRediger
Fejldetekterings- og korrektionskoder anvendes ofte til at forbedre pålideligheden af datalagringsmedier. Et paritetsspor, der er i stand til at registrere enkeltbitsfejl, var til stede på det første magnetbånd til datalagring i 1951. Den optimale rektangulære kode, der anvendes i gruppekodede optagebånd, opdager ikke blot enkeltbitfejl, men korrigerer dem også. Nogle filformater, især arkivformater, indeholder en kontrolsum (oftest CRC32) for at opdage korruption og afkortning og kan anvende redundans- eller paritetsfiler til at genoprette dele af beskadigede data. Reed-Solomon-koder anvendes i compactdiske til at korrigere fejl forårsaget af ridser.
Moderne harddiske anvender CRC-koder til at opdage og Reed-Solomon-koder til at korrigere mindre fejl i sektorlæsninger og til at gendanne data fra sektorer, der er “gået i stykker”, og gemme disse data i de overskydende sektorer. RAID-systemer anvender en række fejlkorrektionsteknikker til at korrigere fejl, når en harddisk går helt i stykker. Filsystemer som ZFS eller Btrfs samt nogle RAID-implementeringer understøtter data scrubbing og resilvering, hvilket gør det muligt at opdage og (forhåbentlig) genoprette dårlige blokke, før de bruges. De gendannede data kan skrives om til præcis samme fysiske placering, til reserveblokke et andet sted på samme stykke hardware, eller dataene kan skrives om på erstatningshardware.
Fejlkorrigerende hukommelseRediger
DRAM-hukommelse kan give en stærkere beskyttelse mod bløde fejl ved at stole på fejlkorrigerende koder. En sådan fejlkorrigerende hukommelse, kendt som ECC- eller EDAC-beskyttet hukommelse, er særlig ønskelig til missionskritiske anvendelser, såsom videnskabelig databehandling, finansielle, medicinske osv. samt til anvendelser i det dybe rum på grund af den øgede stråling i rummet.
Fejlekorrigerende hukommelsescontrollere anvender traditionelt Hamming-koder, selv om nogle anvender tredobbelt modulær redundans.
Interleaving gør det muligt at fordele virkningen af en enkelt kosmisk stråle, der potentielt kan forstyrre flere fysisk tilstødende bits, på flere ord ved at knytte tilstødende bits til forskellige ord. Så længe en single event upset (SEU) ikke overstiger fejltærsklen (f.eks. en enkelt fejl) i et bestemt ord mellem adgangene, kan den korrigeres (f.eks. af en enkelt-bit fejlkorrigerende kode), og illusionen af et fejlfrit hukommelsessystem kan opretholdes.
Ud over de hardwarefunktioner, der er nødvendige for, at ECC-hukommelse kan fungere, indeholder operativsystemer normalt relaterede rapporteringsfaciliteter, der anvendes til at give meddelelser, når bløde fejl genoprettes på gennemsigtig vis. En stigende frekvens af bløde fejl kan indikere, at et DIMM-modul skal udskiftes, og sådanne tilbagemeldingsoplysninger ville ikke være let tilgængelige uden de relaterede rapporteringsfunktioner. Et eksempel er Linux-kernens EDAC-undersystem (tidligere kendt som Bluesmoke), som indsamler data fra fejlkontrol-komponenter i et computersystem; ud over at indsamle og rapportere tilbage om hændelser i forbindelse med ECC-hukommelse understøtter det også andre checksumming-fejl, herunder dem, der opdages på PCI-bussen.
Et par systemer understøtter også memory scrubbing.