Sunteți pe pagina 1din 7

Sisteme de timp real

Cursul 6 – Specificarea şi proprietăţile codurilor de control

Elemente teoretice de bază privind tehnica codării

Mai întâi câteva notaţii :


𝐷 – numărul erorilor detectabile în cuvântul verificat ;
𝐶 – numărul erorilor ce pot fi corecte automat pe baza informaţiilor suplimentare de control ;
𝑑 – distanţa de cod în sens Hamming care reprezintă numărul minim de biţi prin care două
cuvinte valide diferă între ele.
Cunoaştem că circuitul de control verifică cuvântul citit pentru detectarea eventualelor erori şi
atunci când codarea o permite anumite erori sunt şi corectate. Pentru ca o eroare să poată fi
detectată automat cuvântul rezultat nu trebuie să mai fie unul valid. Sub aspectul capacităţii de
detectare, un cod de control este cu atât mai puternic cu cât ponderea cuvintelor valide din totalul
combinaţiilor posibile este mai redusă. De exemplu, la codul de paritate ce permite detectarea
erorilor singulare, ponderea cuvintelor valide din totalul combinaţiilor posibile este de 50%. La
codarea SEC_SED sau DED, care acoperă atât erorile singulare cât şi pe cele duble, pentru cuvinte
cu 4 biţi de date, ponderea cuvintelor valide este de 24 ⁄27 ∙ 100 = 12,5%. La codarea SEC_DED
sau TED, care asigură detectarea oricărei erori singulare, duble sau triple, pentru cuvinte cu 4 biţi
de date, ponderea cuvintelor valide este de 24 ⁄28 ∙ 100 = 6,25%.
➢ Pentru detectarea a 𝐷 erori în cuvântul recepţionat, codul folosit trebuie să îndeplinească
condiţia :
𝑑 ≥ 𝐷 + 1. (1)
Explicaţia este următoarea : O eroare singulară duce la formarea unui cuvânt modificat la o
distanţă Hamming 1 de cel iniţial. Dacă pentru codul folosit distanţa Hamming ar fi tot 1, atunci
cuvântul afectat de eroare ar putea fi unul valid. Prin urmare, pentru detectarea tuturor erorilor
singulare se impune ca distanţa de cod 𝑑 să fie cel puţin 2. După un raţionament similar, se
deduce că pentru detectarea erorilor duble este nevoie ca 𝑑 ≥ 3 ş.a.m.d.
• Condiţia ca un cod să permită corectarea automată a 𝐶 erori în cuvântul verificat trebuie să
îndeplinească condiţia :
𝑑 ≥ 2𝐶 + 1. (2)

Figurile următoare (6, 7 şi 8) ilustrează necesitatea îndeplinirii acestei condiţii. Cu 𝑤1 şi 𝑤2 sunt


notate două cuvinte valide.

Cuvânt cu un bit eronat


eereronateronat
𝑤1 𝑤2

𝑑=2

Fig. 6 – Eroare singulară necorectabilă

1
Cuvântul 𝑤1 cu un bit eronat
eereronateronat
𝑤1 𝑤2

𝑑=3

Fig. 7 – Eroare singulară corectabilă.

Cuvântul 𝑤1 cu C erori
𝑤1 𝑤2
C 𝐶 + 1

𝑑 = 2𝐶 + 1

Fig. 8 – Eroare multiplă corectabilă.

• Condiţia ca un cod să permită detectarea a 𝐷 erori şi corectarea automată a 𝐶 erori este :


𝑑 ≥ 𝐶 + 𝐷 + 1. (3)

𝐽𝑢𝑠𝑡𝑖𝑓𝑖𝑐𝑎𝑟𝑒 : Întrucât 𝐷 ≥ 𝐶 rezultă că sunt îndeplinite condiţiile (1) şi (2) menţionate anterior.
Cele mai folosite coduri sunt:
• Codul de paritate: 𝑑 = 2 , 𝐶 = 0, 𝐷 = 1;
• Codul SEC_SED: 𝑑 =3, 𝐶 = 1, 𝐷 = 1;
• Codul DED : 𝑑 =3, 𝐶 = 0, 𝐷 = 2;
• Codul SEC_DED: 𝑑 =4, 𝐶 = 1, 𝐷 = 2;
• Codul TED: 𝑑 =4, 𝐶 = 0, 𝐷 = 3.

Relaţiile (1) – (3) evidenţiază importanţa conceptului de distanţă de cod. Pentru a înţelege mai
bine acest concept şi proprietăţile asociate să analizăm în continuare codul de paritate pentru
cuvinte cu 2 biţi de date.
Fie un cuvânt format din doi biți de date 𝑎 și 𝑏 și un bit de paritate 𝑝 = 𝑎  𝑏. Să analizăm mai
întâi combinațiile valide pentru acest cuvânt extins. Bitul 𝑎 se consideră cel mai semnificativ.

Tabelul 6 – Cuvintele valide la codul de paritate studiat

𝑎 0 0 1 1
𝑏 0 1 0 1
𝑝 0 1 1 0
(în octal) 0 3 5 6

Figura următoare (Fig. 9) evidenţiază efectul erorilor singulare asupra acestor cuvinte valide. Din
figură rezultă faptul că orice cuvânt afectat de o eroare singulară nu unul nevalid. Codul de paritate
permite așadar detectarea tuturor erorilor singulare. Totodată, figura arată că orice cuvânt nevalid
poate proveni de la 3 cuvinte valide și prin urmare cauza erorii nu poate fi identificată. Așadar,
erorile detectate nu pot fi și corectate.

2
cuvinte valide cuvinte nevalide
0 1

3 2

5
4

6 7

Fig. 9 - Efectul erorilor singulare

Următoarea figură evidențiază distanța Hamming dintre cuvinte. Se verifică uşor că distanţă de
cod în acest caz este 2.

Fig. 10 – Distanţa Hamming între cuvinte la codul de paritate.

Ambele figuri arată că mulţimea cuvintelor valide are o pondere de 50 % în mulțimea


combinațiilor posibile.
Determinarea distanţei de cod pe baza definiţiei este însă foarte dificilă când 𝑚 are valori mari
2𝑚 (2𝑚 −1)
datorită numărului enorm de comparaţii ce trebuie efectuate (𝐶22𝑚 = 2
 22𝑚−1 ). De
exemplu, pentru 𝑚 = 16 numărul de verificări este  231 > 2 ∙ 109 . Câteva elemente de algebră
lineară simplifică această problemă.
Fie 𝑉 mulţimea cuvintelor valide pentru codul folosit. Cardinalul acestei mulţimi este fireşte 2𝑚 .
Pentru un element 𝑣 ∈ 𝑉, se defineşte ponderea 𝑝(𝑣) ca fiind numărul biţilor de 1 din cuvânt.
Astfel, pentru două cuvinte oarecare 𝑢, 𝑣 ∈ 𝑉, 𝑢 ≠ 𝑣, distanţa Hamming dintre aceste două cuvinte
se poate exprima cu relaţia:
𝑑(𝑢, 𝑣) = 𝑝(𝑢  𝑣) (4)

3
Dar, conform unui rezultat remarcabil de algebră lineară, 𝑉 este o mulţime închisă în raport cu
operatorul sau-exclusiv (). Asta înseamnă că pentru oricare două cuvinte 𝑢, 𝑣 ∈ 𝑉, 𝑢 ≠ 𝑣 , şi
cuvântul rezultat 𝑢  𝑣 ∈ 𝑉. Pe baza acestor elemente, distanţa de cod se exprimă cu relaţia:
𝑑 = 𝑚𝑖𝑛 {𝑝(𝑣), 𝑣 ∈ 𝑉 − 𝑧𝑒𝑟𝑜} (5)
Astfel, se verifică uşor pe mulţimea 𝑉 că la codarea SEC_SED 𝑑 = 3, iar la codarea SEC_DED 𝑑 = 4.
Să analizăm mai în detaliu această proprietate deosebită a mulţimii cuvintelor valide. O ilustrare
grafică a acestei preoprietăţi se prezintă în figura următoare.

Mulţimea cuvintelor valide (𝑉)

𝑢 𝑣 𝑥
Cuvânt
de ⨁
date


Cuvânt
de ⨁
control

Fig. 11 - Proprietatea mulţimii 𝑉 de a fi o mulţime închisă în raport cu operatorul .

Cuvintele de date acoperă toate combinaţiile posibile, de la cea cu cea cu toţi biţii de 0 la cea
cu toţi biţii de 1. Prin urmare, aplicând operatorul  asupra a două cuvinte de date rezultă tot un
cuvânt valid. Problema se reduce la verificarea codului de control. Să considerăm două cuvinte
valide oarecare 𝑢 şi 𝑣 şi cuvântul rezultat prin aplicarea operatorului , 𝑥 = 𝑢  𝑣. Partea de date
a cuvântului nu poate fi decât o combinaţie validă. Aşa cum este ilustrat în figură, trebuie să
verificăm că partea de control a cuvântului 𝑥, rezultată din aplicarea operatorul  asupra biţilor de
control de pe aceeaşi poziţie din cuvintele iniţiale 𝑢 şi 𝑣, se obţine şi atunci când se aplică regula de
codare asupra biţilor de date din cuvântul 𝑥. Ca urmare, cuvântul extins 𝑥 este tot un cuvânt valid.
Să exemplificăm acest lucru pentru primul bit de control de la o codare de tip SEC_SED
considerând cuvinte de date de 4 biţi. Cele două cuvinte iniţiale, 𝑢 şi 𝑣, sunt de următoarea formă:
𝑢 = (𝑑1𝑢 , 𝑑2𝑢 , 𝑑3𝑢 , 𝑑4𝑢 , 𝑐1𝑢 , 𝑐2𝑢 , 𝑐3𝑢 ) şi 𝑣 = (𝑑1𝑣 , 𝑑2𝑣 , 𝑑3𝑣 , 𝑑4𝑣 , 𝑐1𝑣 , 𝑐2𝑣 , 𝑐3𝑣 )
Cuvântul rezultat aplicând operatorul  este
𝑥 = (𝑑1𝑥 , 𝑑2𝑥 , 𝑑3𝑥 , 𝑑4𝑥 , 𝑐1𝑥 , 𝑐2𝑥 , 𝑐3𝑥 ), în care 𝑑1𝑥 = 𝑑1𝑢  𝑑1𝑣 , 𝑑2𝑥 = 𝑑2𝑢  𝑑2𝑣 , … , 𝑐1𝑥 = 𝑐1𝑢  𝑐1𝑣 , …
Cum 𝑐1𝑢 = 𝑑2𝑢  𝑑3𝑢  𝑑4𝑢 şi 𝑐1𝑣 = 𝑑2𝑣  𝑑3𝑣  𝑑4𝑣 rezultă că
𝑐1𝑥 = 𝑐1𝑢  𝑐1𝑣 = 𝑑2𝑢  𝑑3𝑢  𝑑4𝑢  𝑑2𝑣  𝑑3𝑣  𝑑4𝑣 .
Să verificăm că aceeaşi valoare se obţine pentru 𝑐1𝑥 dacă se aplică regula de codare pe biţii de date.
𝑐1𝑥 = 𝑑2𝑥  𝑑3𝑥  𝑑4𝑥 = (𝑑2𝑢  𝑑2𝑣 )  (𝑑3𝑢  𝑑3𝑣 )  (𝑑4𝑢  𝑑4𝑣 ).
Cum nu contează ordinea în care se aplică operatorul logic, rezultă aceeaşi expresie
𝑐1𝑥 = 𝑑2𝑢  𝑑3𝑢  𝑑4𝑢  𝑑2𝑣  𝑑3𝑣  𝑑4𝑣 .

4
Specificarea unui cod

Modelul matematic cel mai avantajos în specificarea şi studiul codurilor lineare este cel
matriceal. Astfel, reprezentarea unui cod linear se face sub forma unei matrice de generare 𝐺 care
conţine toţi vectorii linear independenţi ai codului, cu excepţia codului nul (baza spaţiului vectorial).
Matricea 𝐺 are 𝑚 linii şi 𝑛 = 𝑚 + 𝑘 coloane şi este de forma
𝐺𝑚×𝑛 = [𝐼𝑚  𝑄𝑚×𝑘 ],
în care 𝐼𝑚 este matricea unitate, ca bază pentru toate cuvintele de date, iar 𝑄𝑚×𝑘 este matricea
codurilor suplimentare de control.
Prin combinaţii lineare realizate între liniile acestei matrice se obţin toate cuvintele valide pentru
codul respectiv, mai puţin codul nul. De exemplu, pentru codurile analizate, matricea 𝑄 este de
următoare forma :
a) SEC_SED, 𝑚 = 4, 𝑘 = 3
0 1 1
1 0 1
𝑄4×3 =[ ]
1 1 0
1 1 1

b) SEC_DED, 𝑚 = 4, 𝑘 = 4
0 1 1 1
1 0 1 1
𝑄4×4 =[ ]
1 1 0 1
1 1 1 0
Submatricea 𝑄 din matricea de generare descrie structura logicii de codare. Structura logicii de
decodare este descrisă printr-o matrice de control a parităţii (engl. 𝑝𝑎𝑟𝑖𝑡𝑦 − 𝑐ℎ𝑒𝑐𝑘 𝑚𝑎𝑡𝑟𝑖𝑥) de
𝑇
forma 𝐻 = [𝐼𝑘 𝑄𝑚×𝑘 ] , care evidenţiază biţii din cuvântul extins care intervin la formarea
𝑠𝑦𝑛𝑑𝑟𝑜𝑚𝑒-ului. Pentru codurile analizate, matricea 𝐻 de generare a 𝑠𝑦𝑛𝑑𝑟𝑜𝑚𝑒-ului este :

a) SEC_SED, 𝑚 = 4, 𝑘 = 3
1 0 0 0 1 1 1
𝐻 = [0 1 0 1 0 1 1]
0 0 1 1 1 0 1

b) SEC_DED, 𝑚 = 4, 𝑘 = 4
1 0 0 0 0 1 1 1
0 1 0 0 1 0 1 1
𝐻=[ ]
0 0 1 0 1 1 0 1
0 0 0 1 1 1 1 0

Dacă cuvântul citit din memorie este [𝑐1 𝑐2 … 𝑐𝑘 𝑑1 𝑑2 … 𝑑𝑚 ] atunci codul de eroare sau
𝑠𝑦𝑛𝑑𝑟𝑜𝑚𝑒-ul (𝑆) de lungime 𝑘 se obţine cu relaţia :

𝑆𝑘×1 = ⊕ (𝐻𝑘×(𝑘+𝑚) × [𝑐1 𝑐2 … 𝑐𝑘 𝑑1 𝑑2 … 𝑑𝑚 ]𝑇 ). (6)

5
Pentru o soluţie optimală, la codarea SEC_DED, matricea 𝐻 de generare a 𝑠𝑦𝑛𝑑𝑟𝑜𝑚𝑒 -ului
trebuie să îndeplinească următoarele condiţii :
• Numărul de biţi de 1 de pe fiecare coloană trebuie să fie impar – condiţie care derivă din
principiul codării;
• Numărul total de biţi de 1 din matrice trebuie să fie minim – condiţie ce urmăreşte reducerea
complexităţii logicii de control;
• Numărul de biţi de 1 de pe oricare două linii trebuie să fie acelaşi sau, dacă nu este posibil, să
fie cât mai apropiat de o valoare medie (valoare dată de raportul dintre numărul biţilor de 1 din
matrice şi numărul de linii) – condiţie ce urmăreşte ca timpul de propagare prin logica de
control să fie cât mai mic.
De exemplu, pentru o memorie cu lungimea cuvântului de date de 16 biţi, o matrice optimală de
control a parităţii la codarea SEC_DED este următoarea :

1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 1 1 1 0 0
0 1 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 1 0 1 0

0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 1 1 0 0 0 0 0
H = 
0 0 0 1 0 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 1
0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 0 0 1 1 1
 
0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1

Fig. 12 – Matricea de generare a 𝑠𝑦𝑛𝑑𝑟𝑜𝑚𝑒-ului în varianta SEC_DED (𝑚 = 16, 𝑘 = 6).

Pe această matrice, se verifică uşor îndeplinirea condiţiilor menţionate anterior.

Temă pentru acasă


Să se evalueze complexitatea logicii adiţionale (exprimată în porţi echivalente) la o codare de tip
SEC_DED şi creşterea timpului de acces la memorie, ca urmare a interpunerii între magistrala de
date şi circuitele de memorie a structurilor combinaţionale de codare, control şi corecţie. Pentru
lungimea cuvântului de date se consideră două cazuri, când 𝑚 = 4 şi când 𝑚 = 16. Se ia ca
referinţă complexitatea unei porţi logice cu două intrări (𝒞 = 1 𝑝𝑒 ) şi timpul de propagare printr-o
astfel de poartă logică, notat cu ∆.
Precizare: Pentru logica de codare şi cea de control se folosesc porţi XOR cu 2 intrări ca celule de
bază, pentru care 𝒞 = 2,5 𝑝𝑒 , iar 𝑇𝑝 = 2,5 ∆.

Observaţii finale
➢ Implementarea codurilor de control asigură o creştere semnificativă a fiabilităţii şi securităţii
părţii de memorie RAM. Această creştere este cu atât mai ridicată cu cât fiabilitatea circuitelor
componente este mai mare.

6
➢ Varianta SEC_SED conduce la o creştere mai mare a fiabilităţii faţă de varianta SEC_DED. Şi în
ceea ce priveşte complexitatea sau timpul de acces la memorie varianta SEC_SED este de
preferat.

➢ Varianta SEC_DED asigură în schimb o securitate mult mai ridicată. Aşadar, această variantă se
adoptă atunci când condiţia privind securitatea sistemului este dominantă.

➢ Cu privire la erorile ce pot apărea la nivelul logicii de codare, se remarcă faptul că dacă biţii de
control se generează în mod independent, atunci o eroare singulară în logica de codare
afectează un singur bit din cuvântul extins şi, ca urmare, acesta este mascat de logica de
control şi corecţie.
➢ O eroare în cuvântul citit din memorie poate avea mai multe cauze, şi anume:
• Defectarea unui circuit de memorie sau activarea unui defect de memorie greu de detectat
care a trecut de testele aplicate; dacă structura de memorie este formată din circuite
orientate pe bit atunci aceste defecte conduc la erori singulare şi sunt corectate automat în
cazul memoriei cu coduri de control.
• Apariţia unor erori tranzitorii ca urmare a unor perturbaţii severe cum ar fi impactul cu
particule grele. Structura redundantă cu coduri de control constituie o soluţie foarte
eficientă de protejare împotriva acestor tipuri de erori.

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