Wykrywanie i korekcja błędów
Aplikacje, które wymagają niskiego opóźnienia (takie jak rozmowy telefoniczne) nie mogą używać automatycznego żądania powtórzenia (ARQ); muszą używać forward error correction (FEC). W czasie, gdy system ARQ odkryje błąd i dokona retransmisji, ponownie wysłane dane dotrą zbyt późno, aby można je było wykorzystać.
Aplikacje, w których nadajnik natychmiast zapomina informacje, gdy tylko zostaną wysłane (takie jak większość kamer telewizyjnych), nie mogą używać ARQ; muszą używać FEC, ponieważ gdy wystąpi błąd, oryginalne dane nie są już dostępne.
Aplikacje, które używają ARQ, muszą mieć kanał zwrotny; aplikacje nieposiadające kanału zwrotnego nie mogą używać ARQ.
Aplikacje, które wymagają ekstremalnie niskich poziomów błędów (takie jak cyfrowe przekazy pieniężne), muszą używać ARQ ze względu na możliwość wystąpienia nieusuwalnych błędów przy użyciu FEC.
Reliability i inżynieria kontroli również wykorzystują teorię kodów korygujących błędy.
InternetEdit
W typowym stosie TCP/IP kontrola błędów jest wykonywana na wielu poziomach:
- Każda ramka Ethernet wykorzystuje wykrywanie błędów CRC-32. Ramki z wykrytymi błędami są odrzucane przez sprzęt odbiorcy.
- Nagłówek IPv4 zawiera sumę kontrolną chroniącą zawartość nagłówka. Pakiety z nieprawidłową sumą kontrolną są odrzucane w sieci lub w odbiorniku.
- Suma kontrolna została pominięta w nagłówku IPv6 w celu zminimalizowania kosztów przetwarzania w routingu sieciowym oraz ponieważ zakłada się, że obecna technologia warstwy łącza zapewnia wystarczające wykrywanie błędów (zob. również RFC 3819).
- UDP ma opcjonalną sumę kontrolną obejmującą ładunek i informacje adresowe w nagłówkach UDP i IP. Pakiety z nieprawidłowymi sumami kontrolnymi są odrzucane przez stos sieciowy. Suma kontrolna jest opcjonalna w przypadku protokołu IPv4 i wymagana w przypadku protokołu IPv6. W przypadku pominięcia zakłada się, że warstwa łącza danych zapewnia pożądany poziom ochrony przed błędami.
- TCP zapewnia sumę kontrolną do ochrony ładunku i informacji adresowych w nagłówkach TCP i IP. Pakiety z niepoprawnymi sumami kontrolnymi są odrzucane przez stos sieciowy i ostatecznie są retransmitowane przy użyciu ARQ, albo jawnie (np. przez triple-ack), albo niejawnie z powodu przekroczenia limitu czasu.
Telekomunikacja w głębokiej przestrzeniEdit
Rozwój kodów korekcji błędów był ściśle powiązany z historią misji w głębokiej przestrzeni ze względu na ekstremalne rozcieńczenie mocy sygnału na dystansach międzyplanetarnych i ograniczoną dostępność mocy na pokładzie sond kosmicznych. Podczas gdy wczesne misje wysyłały swoje dane bez kodów, począwszy od 1968 roku wprowadzono cyfrową korekcję błędów w postaci (nieoptymalnie dekodowanych) kodów konwencjonalnych i kodów Reeda-Mullera. Kod Reeda-Mullera był dobrze dostosowany do szumu, na który narażony był statek kosmiczny (w przybliżeniu odpowiadający krzywej dzwonowej), i został wdrożony dla statku kosmicznego Mariner i użyty w misjach w latach 1969-1977.
Misje Voyager 1 i Voyager 2, które rozpoczęły się w 1977 roku, zostały zaprojektowane w celu dostarczenia kolorowego obrazowania i informacji naukowych z Jowisza i Saturna. Spowodowało to zwiększenie wymagań dotyczących kodowania, dlatego statki kosmiczne były obsługiwane przez (optymalnie zdekodowane przez Viterbiego) kody konwolucyjne, które mogły być konkatenowane z zewnętrznym kodem Golaya (24,12,8). Statek Voyager 2 dodatkowo obsługiwał implementację kodu Reeda-Solomona. Zintegrowany kod Reed-Solomon-Viterbi (RSV) pozwalał na bardzo wydajną korekcję błędów i umożliwił wydłużoną podróż statku kosmicznego do Urana i Neptuna. Po modernizacji systemu ECC w 1989 roku, oba statki użyły kodowania V2 RSV.
Komitet Konsultacyjny ds. Systemów Danych Kosmicznych zaleca obecnie użycie kodów korekcji błędów o wydajności podobnej do kodu RSV Voyagera 2 jako minimum. Kody konkatenowane coraz bardziej tracą na popularności w misjach kosmicznych i są zastępowane przez bardziej wydajne kody, takie jak kody Turbo lub kody LDPC.
Różne rodzaje prowadzonych misji kosmicznych i orbitalnych sugerują, że próba znalezienia uniwersalnego systemu korekcji błędów będzie ciągłym problemem. Dla misji w pobliżu Ziemi, natura szumu w kanale komunikacyjnym jest inna niż ta, której doświadcza statek kosmiczny na misji międzyplanetarnej. Dodatkowo, jak statek kosmiczny zwiększa swoją odległość od Ziemi, problem korekcji dla hałasu staje się trudniejsze.
Transmisja satelitarnaEdit
Zapotrzebowanie na pasmo transpondera satelitarnego nadal rośnie, napędzany przez chęć dostarczania telewizji (w tym nowych kanałów i telewizji wysokiej rozdzielczości) i danych IP. Dostępność transponderów i ograniczenia przepustowości ograniczyły ten wzrost. Pojemność transpondera jest określana przez wybrany schemat modulacji i część pojemności zużywaną przez FEC.
Przechowywanie danychEdit
Kody wykrywania i korekcji błędów są często używane do poprawy niezawodności nośników danych. Ścieżka parzystości zdolna do wykrywania błędów jednobitowych była obecna na pierwszej taśmie magnetycznej do przechowywania danych w 1951 roku. Optymalny kod prostokątny stosowany w taśmach z kodem grupowym nie tylko wykrywa, ale również koryguje błędy jednobitowe. Niektóre formaty plików, zwłaszcza archiwalnych, zawierają sumę kontrolną (najczęściej CRC32) w celu wykrycia uszkodzenia i obcięcia oraz mogą wykorzystywać pliki nadmiarowe lub parzystości w celu odzyskania części uszkodzonych danych. Kody Reed-Solomon są używane w płytach kompaktowych do korygowania błędów spowodowanych zarysowaniami.
Nowoczesne dyski twarde wykorzystują kody CRC do wykrywania i kody Reed-Solomon do korygowania drobnych błędów w odczytach sektorów oraz do odzyskiwania danych z sektorów, które „uległy uszkodzeniu” i przechowywania tych danych w sektorach zapasowych. Systemy RAID wykorzystują różne techniki korekcji błędów do korygowania błędów w przypadku całkowitej awarii dysku twardego. Systemy plików, takie jak ZFS lub Btrfs, a także niektóre implementacje RAID, obsługują oczyszczanie danych i resilvering, co pozwala na wykrycie i (miejmy nadzieję) odzyskanie uszkodzonych bloków przed ich użyciem. Odzyskane dane mogą być ponownie zapisane do dokładnie tej samej lokalizacji fizycznej, do wolnych bloków w innym miejscu na tym samym kawałku sprzętu, lub dane mogą być przepisane na sprzęt replacement.
Pamięć z korekcją błędówEdit
Pamięć DRAM może zapewnić silniejszą ochronę przed miękkimi błędami, polegając na kodach korygujących błędy. Taka pamięć korygująca błędy, znana jako pamięć ECC lub pamięć chroniona EDAC, jest szczególnie pożądana w zastosowaniach krytycznych dla misji, takich jak obliczenia naukowe, finansowe, medyczne itp. oraz w zastosowaniach w głębokiej przestrzeni kosmicznej ze względu na zwiększone promieniowanie w przestrzeni kosmicznej.
Kontrolery pamięci z korekcją błędów tradycyjnie stosują kody Hamminga, chociaż niektóre stosują potrójną redundancję modułową.
Interleaving pozwala na rozłożenie efektu pojedynczego promienia kosmicznego potencjalnie zakłócającego wiele fizycznie sąsiadujących bitów na wiele słów poprzez przypisanie sąsiadujących bitów do różnych słów. Tak długo, jak pojedynczy błąd zdarzenia (SEU) nie przekracza progu błędu (np. pojedynczy błąd) w dowolnym słowie pomiędzy dostępami, może być skorygowany (np. przez jednobitowy kod korygujący błędy), a iluzja bezbłędnego systemu pamięci może być utrzymana.
Oprócz sprzętu zapewniającego funkcje wymagane do działania pamięci ECC, systemy operacyjne zazwyczaj zawierają powiązane funkcje raportowania, które są używane do dostarczania powiadomień, gdy miękkie błędy są przezroczyście odzyskiwane. Rosnąca liczba błędów miękkich może wskazywać, że moduł DIMM wymaga wymiany, a takie informacje zwrotne nie byłyby łatwo dostępne bez powiązanych funkcji raportowania. Jednym z przykładów jest podsystem EDAC jądra Linux (wcześniej znany jako Bluesmoke), który zbiera dane z komponentów systemu komputerowego obsługujących sprawdzanie błędów; oprócz zbierania i raportowania zdarzeń związanych z pamięcią ECC, obsługuje również inne błędy sum kontrolnych, w tym te wykrywane na magistrali PCI.
Kilka systemów obsługuje również funkcję oczyszczania pamięci (memory scrubbing)
.