Sunteți pe pagina 1din 23

Bazele Tehnologiei Informaţiei

Curs 4
Coduri detectoare si corectoare de erori
 „Codarea unei surse” se realizează în scopul reducerii dimensiunii
reprezentării pe un canal de comunicaţie care se presupune a fi lipsit
de pierderi.
 O problemă diferită este cea a „codării canalului de comunicaţie”
care vizează detecţia şi corecţia erorilor ce apar în condiţii de
zgomot (perturbații). Dacă la codarea sursei (compresia datelor) ne
interesa să mărim eficienţa şi să scădem redundanţa, acum avem în
vedere introducerea unui anumit nivel de redundanţă care să permită
transmiterea datelor nu numai eficient, ci şi corect. Astfel, pe
canalul de comunicație se adaugă simboluri suplimentare numite și
simboluri de control care permit apoi detectarea și corectarea unor
posibile erori la transmisie.
Coduri detectoare si corectoare de erori
 Acţionează de regulă la
nivelul data-link
(corecţia erorilor şi
controlul fluxului) din
modelul ISO-OSI
(International
Organization for
Standardization - Open
System Interconnection)
Coduri detectoare si corectoare de erori
Codificare Codificare Canal de
Sursa Decodificare Destinatie
primara redundanta comunicatie

La sursă are loc codificarea; cea redundantă adaugă informația de control.
La destinație are loc decodificarea + detecția/corecția erorilor.
Tipuri de coduri:
Coduri bloc – pentru care prelucrările necesare obţinerii proprietăţilor
de detecţie sau de corecţie se fac în blocuri de n simboluri:
Coduri grup– pentru care secvențele de cod sunt considerate ca
fiind elemente dintr-un spațiu vectorial;
Coduri ciclice– pentru care secvențele de cod sunt considerate ca
fiind elemente într-o algebră.
Coduri convoluţionale (recurente) – prelucrarea simbolurilor generate
de sursă se realizează în mod continuu.
Distanta de cod
 În cazul codurilor grup, secvenţele de cod sunt considerate ca fiind elemente dintr-un spaţiu
vectorial și, ca atare, probabilitatea de detecție și corecție a unui astfel de cod depinde de
distanța minimă între două cuvinte de cod.
 Distanţa dintre două cuvinte de cod este egală cu numărul de simboluri prin care cele două
cuvinte se deosebesc.
 Distanţa de cod este o funcţie definită de:

unde vi  (ai1 , ai 2 ,..., ain ) si v j  (a j1 , a j 2 ,..., a


D(vi , v j )   (aik  ajk ),
k 1 jn )

 Dacă, probabilitatea de detecţie şi corecţie a unui cod depinde de


distanţa minimă între două cuvinte de cod, se poate demonstra că
pentru un cod ce poate detecta un număr de e erori existente într-una
din secvenţele sale, este necesar ca:
Dmin  e + 1
 Pentru detectarea unui număr de e erori şi corectarea de c erori,
formula devine:
Dmin  e + c + 1
Codul Hamming
 În cazul codului Hamming (cod ce se bazează pe teste de paritate), distanţa
Hamming între două cuvinte este egală cu numărul poziţiilor în care cele
două cuvinte diferă. Pentru un cod ce poate detecta e erori și corecta c erori
existente în una din secvențele sale este necesar ca: . Codul Hamming, în
varianta sa cea mai simplă, detectează și corectează o singură eroare.
 Notăm cu:
n - numărul de simboluri ale cuvântului de cod n = k + m,
k - numărul simbolurilor de informaţie;
m - numărul simbolurilor de control.
Pentru a se putea asigura detecţia şi corecţia unei erori,
2m  n + 1
(2m  m + k + 1)
Codul Hamming
sursa(Codificare)
 La sursă are loc codificarea - operatia de determinare a simbolurilor de
control în funcție de simbolurile de informație se numeste codificare
redundantă.

 Codul Hamming este caracterizat de o matrice de control Hm,n a cărei


coloane sunt reprezentări binare.
 Cifrele de control(ci) se află pe pozițiile 20, 21, 22, 23, etc. Pentru a
simplifica operația de calcul a celor m simboluri de control acestea se
aleg a.î. să corespundă coloanelor matricii Hm,n cu o singură
componentă diferită de 0 (o coloana cu un singur 1).
 Pe restul pozițiilor se află cifrele de informaţie(aj);
 Un cuvânt de cod v se va scrie: c1c2a3c4a5a6…an.
 Relația în baza căreia determinăm cifrele de control este HvT=0
Codul Hamming
Recepție(decodificare)
 La destinaţie are loc verificarea mesajului - corecţia.

 Astfel, la recepționarea cuvintelor de cod v’, se va calcula corectorul


cu ajutorul relației Hv’T=e, unde e este un vector de m linii și o
coloană.
 Numărul binar (em,...e2,e1) se decodifică și se obține poziția erorii
conform relațiilor:
e1=c’1a’3...  a’n
...
em=c’ma’m+1...  a’n
Codul Hamming - aplicabilitate
 Codul Hamming este utilizat în mecanismele de implementare a redundanţei datelor sistemelor de stocare (în metoda
parity). Datorită nivelului scăzut de redundanţă pe care codul Hamming îl adaugă datelor, acesta nu poate fi utilizat
decât atunci când rata de eroare este mică.
 În cazul memoriei ECC(Error Correction Code), biţii de eroare sunt extrem de rari şi, ca atare, se utilizează codul
Hamming (extins) pentru detecţia şi corecţia acestora prin adăugarea unui singur bit de paritate. Datorită creșterii
distanței minime dintre cuvintele de cod la valoarea 4, codul Hamming extins poate detecta/corecta o eroare și în
același timp poate detecta și o eroare dublă (dar nu o corectează).
 Circuitele ECC generează sumele de control pentru secvențele binare din octeti și le stochează într-o memorie
suplimentară de câte 7 biți pentru căi de date pe 32 de biți (sau de câte 8 biți pentru căi pe 64 biți). 
De ce?
 Să considerăm cel mai comun caz de corecție a erorilor pe un singur bit ca exemplu. Pentru fiecare set de 8 biți trimis
prin magistrala de memorie, este generat un bit de verificare (check-bit) calculat cu ajutorul unui algoritm logic de
tipul SAU Exclusiv. Acest bit de verificare va fi stocat pe un chip de memorie separată. Acesta este motivul pentru
care modulele de memorie cu ECC suporta 9 chip-uri de memorie pe fiecare parte, față de cele 8 chip-uri pe față des
întâlnite la modulele de memorie non-ECC.
Codul Hamming -aplicabilitate

De ce să folosești ECC?
https://danluu.com/why-ecc/
Codul Hamming - aplicabilitate
 Memoria ECC utilizează biți de paritate pentru a stoca un cod criptat la scrierea datelor în
memorie, iar codul ECC este stocat în același timp. Când se citesc datele, codul ECC stocat este
comparat cu codul ECC care a fost generat când datele au fost citite. Dacă acel cod care a fost
citit nu se potrivește cu codul stocat, este decriptat de biții de paritate pentru a determina care
bit a fost eronat, atunci acest bit este corectat imediat. Pe măsură ce sunt procesate datele,
memoria ECC scanează constant codul cu un algoritm special pentru detectarea și corectarea
erorilor de memorie pe un singur bit.
 ECC este cel mai des folosit în cazul serverelor sau la sisteme unde se lucrează cu date de mare
valoare. Tehnologia permite detectarea și corectarea erorilor de memorie pe un singur bit, o
eroare de date în ieșirea sau producția serverului, eroare care poate avea un mare impact asupra
performanței serverului sau chiar pierderea datelor.
 ECC poate afecta performanța, încetinând cu aproximativ 0,5-2% sistemul. Din fericire, erorile
de memorie sunt rare în cazurile memoriilor mai performante din zilele noastre, astfel încât
majoritatea utilizatorilor nu au nevoie de un ECC la sistemul de acasă.
Probleme
 Codificare
a) Să se determine secvențelele codului Hamming pentru cifrele zecimale
4,5,6,7 știind că într-o primă codificare s-a utilizat codul 2421.
b) Cunoscând că prin codul Hamming se asigură detecția și corecția unei
singure erori, să se verifice dacă secvențele de cod obținute respectă condiția
distanței minime.
 Corectie
A fost recepționat mesajul 1001101. Știind că reprezintă o secvență a
codului Hamming să se verifice corectitudinea ei. Dacă este posibil să se
asigure corecția. Cărei cifre zecimale îi corespunde mesajul corectat dacă
într-o primă codificare s-a utilizat codul 2421?
Coduri liniare cu control încrucișat

 Un alt model de cod binar


utilizat frecvent constă din
structurarea informaţiei pe
blocuri de secvenţe de cod şi
ataşarea unui bit de control,
o dată fiecărei secvenţe şi
altă dată la fiecare coloană
ce conţine biţii de acelaşi
rang din toate secvenţele.
Coduri liniare cu control încrucișat
Codificare
 Paritatea laterală

 Paritatea longitudinală
Coduri liniare cu control încrucișat
Recepție

 La recepție se vor calcula


controalele pe linii și coloane
folosind acelasi tip de paritate ca la
emisie după care se vor compara
paritățile recepționate cu cele
calculate.
 Dacă nu constatăm diferențe pe
linii și coloane blocul de informație
a fost transmis fără erori.
Coduri polinomiale ciclice
Codificare
 Codurile ciclice sunt coduri bloc în care cele n+1 simboluri ce
formează o secvenţă de cod sunt considerate ca fiind coeficienţii
unui polinom de grad n şi anume:
M(x) = anxn +an-1xn-1 +……+a0
unde ai  {0, 1}, i = 1..n.
 În cazul utilizării codurilor polinomiale ciclice, mesajului M ce se va
transmite i se asociază polinomul M(x).
 În continuare, printr-un algoritm de codificare, M(x) se transformă
într-un polinom T(x), astfel încât T(x) să fie multiplu al polinomului
G(x) - numit polinom de generare.
Coduri polinomiale ciclice
Codificare
Pentru realizarea codificării se pot utiliza algoritmul de înmulţire
sau algoritmul de împărţire.
Folosind algoritmul de înmulţire: T(x)=M(x)G(x) (operaţiile de
înmulţire şi adunare ale coeficienţilor polinoamelor se fac modulo
2) nu se obţine o separare a simbolurilor redundante de cele
informaţionale, acesta fiind principalul motiv pentru care se preferă
algoritmul de împărţire, deşi este mai complicat.
Coduri polinomiale ciclice.Codificare
Algoritmul de codificare prin împărţire cuprinde următorii pași:
 Fie mesajul M: (an,an-1,.....,a0), care cuprinde n+1 cifre binare informaţionale.
 Acestuia i se asociază un polinom în nedeterminata x:
M(x) = anxn +an-1xn-1 +……+a0 ( ai  {0, 1}).
 Se alege polinomul G(x) de grad r, acesta fiind polinomul de generare al
codului: G(x) = brxr + br-1xr-1 +…..+ b0 bj  {0, 1}.
 Se înmulțește M(x) cu xr se va obţine M'(x)=M(x) xr.
 Se împarte M'(x) la G(x) și se obține un cât C(x) și rest R(x). Coeficienţii
polinomului R(x), de grad r-1, constituie simbolurile de control asociate
mesajului informaţional.


Coduri polinomiale ciclice. Codificare
Coeficienţii polinomului T(x) constituie mesajul ce se va transmite:
 T: (anan-1....a0cr-1.....c0) care conţine în poziţiile semnificative cele n+1
simboluri informaţionale iar în poziţiile mai puţin semnificative cele r
simboluri de control.
 Polinomul ataşat mesajului transmis este un multiplu al polinomului de
generare.
Înlocuind prin relaţia

obținem

 Rezultă că T(x) este divizibil prin G(x). Această proprietate este folosită
Coduri polinomial ciclice
Recepție
Fie mesajul recepţionat T', acestuia i se asociază polinomul T'(x).
Putem scrie că T'(x)=T(x)  E(x), unde E(x) este polinomul
erorilor.
Aplicând criteriul de detecţie a erorilor, obţinem:
Coduri polinomial ciclice
Recepție
 Se observă că dacă E(x) este multiplu al lui G(x), mesajul
recepţionat este validat, deşi conţine erori.
 Dacă E(x) nu este multiplu al lui G(x) atunci eroarea este
sesizată.
 Prin această metodă sunt determinate toate pachetele de erori
de lungime mai mică decît gradul polinomului G(x)+1.
 Se numeşte pachet de erori o succesiune de simboluri, corecte
sau eronate, în care primul şi ultimul simbol sunt eronate.
Probleme

 Codificare
Mesajul binar M: 110011 se transmite după codificarea polinomial-
ciclică prin polinomul de generare G(x) = x2+x+1. Care este
reprezentarea binară a mesajului transmis?
 Corecție
Mesajul binar recepționat T’: 111111 a fost codificat prin polinomul
de generare G(x) = x2+1. Să se verifice corectitudinea mesajului
recepționat.
Bibliografie
 Floarea Nastase, Razvan Zota, Bazele tehnologiei
informatiei, Editura ASE, Bucuresti, 2005, paginile 59-78.
 Iuliana Dorobat, Bazele tehnologiei informatiei aplicatii,
Editura ASE, Bucuresti, 2018.
 https://ro.wikipedia.org/wiki/Memoria_ECC
 https://danluu.com/why-ecc/
 https://www.nyu.edu/pages/linguistics/courses/v610003/
shan.html
 https://profs.info.uaic.ro/~fliacob/An1/2007-2008/Utilita
ti/U11/Despre%20entropie/Informatie%20si%20entropie%2
0(%20Problema%20entropiei%20maxime%20).pdf
 https://towardsdatascience.com/the-intuition-behind-sha
nnons-entropy-e74820fe9800

S-ar putea să vă placă și