Chapter 5
Transkrypt
Chapter 5
Kody Hamminga Odległość Hamminga Odl. Hamm. = 2 pozwala wykrywać pojedyncze błędy Liczba różnych bitach w dwóch prawidłowych kodach Np. kodowanie z dodanym bitem parzystości Odl. Hamm. = 3 pozwala poprawiać pojedyncze błędy lub wykrywać podwójne Chapter 5 — Large and Fast: Exploiting Memory Hierarchy — 1 Kod Hamminga SEC Kod Hamm. Single Error Correcting: Numerujemy bity lewej strony Bity na pozycjach numerowanych potęgami dwójki to bity parzystości Każdy z nich ,,pilnuje'' pewnych pozycji: Chapter 5 — Large and Fast: Exploiting Memory Hierarchy — 2 Dekodowanie SEC Warotści bitów parzystości mówią, na której pozycji wystąpił błąd Błąd na pozycji o numerze będącym sumą numerów błądnych bitów parzystości Np. Bity parzystości = 0000: nie ma błądu Bity parzystości = 1010: bit 10 przekłamany Chapter 5 — Large and Fast: Exploiting Memory Hierarchy — 3 Optymalność kodu Oryginalny kod n-bitowy: 2^n znaków Dodajemy r bitów korekcyjnych: 2^(n+r) znaków W kodzie korygującym pojedyncze przekłamania każdy znak musi mieć jedną reprezentację prawidłową oraz (n+r) reprezentacji ,,z pojedynczym przekładamaniem'' Stąd: (1+n+r) 2^n <= 2^(n+r) Czyli: 1+n+r <= 2^r Dla n=8 potrzebne r=4, dla n=64 – r=7 Chapter 5 — Large and Fast: Exploiting Memory Hierarchy — 4 Kod SEC/DEC Single Error Correcting/Double Error Detecting Dodajemy dodatkowy bit parzystości dla całego słowa (pn) Dostajemy odległość Hamminga = 4 (dlaczego?) Uwaga: standardowa ECC DRAM używa kodu SEC/DEC z 8 bitami ,,pilnującymi'' każdych 64 bitów Chapter 5 — Large and Fast: Exploiting Memory Hierarchy — 5