Bit de paritate

Datorită simplității sale, paritatea este utilizată în multe aplicații hardware în care o operație poate fi repetată în caz de dificultate sau în care simpla detectare a erorii este utilă. De exemplu, magistralele SCSI și PCI utilizează paritatea pentru a detecta erorile de transmisie, iar multe memorii cache de instrucțiuni ale microprocesoarelor includ protecția parității. Deoarece datele din I-cache sunt doar o copie a memoriei principale, acestea pot fi ignorate și refăcute dacă se constată că sunt corupte.

În transmisia serială de date, un format obișnuit este de 7 biți de date, un bit de paritate par și unul sau doi biți de oprire. Acest format acomodează toate caracterele ASCII pe 7 biți într-un octet de 8 biți. Sunt posibile și alte formate; 8 biți de date plus un bit de paritate pot transmite toate valorile unui octet de 8 biți.

În contextele de comunicare serială, paritatea este de obicei generată și verificată de hardware-ul de interfață (de exemplu, un UART) și, la recepție, rezultatul este pus la dispoziția unui procesor, cum ar fi CPU (și, de asemenea, de exemplu, a sistemului de operare), prin intermediul unui bit de stare dintr-un registru hardware din hardware-ul de interfață. Recuperarea de la eroare se face de obicei prin retransmiterea datelor, ale cărei detalii sunt de obicei gestionate de software (de exemplu, de rutinele de I/O ale sistemului de operare).

Când numărul total de biți transmis, inclusiv bitul de paritate, este par, paritatea impară are avantajul că modelele all-zeros și all-ones sunt ambele detectate ca erori. În cazul în care numărul total de biți este impar, numai unul dintre modele este detectat ca eroare, iar alegerea poate fi făcută în funcție de care se preconizează că va fi cea mai frecventă eroare.

Redundant array of independent disksEdit

Datele de paritate sunt utilizate de unele niveluri redundant array of independent disks (RAID) pentru a obține redundanță. În cazul în care o unitate din matrice se defectează, datele rămase pe celelalte unități pot fi combinate cu datele de paritate (utilizând funcția booleană XOR) pentru a reconstrui datele lipsă.

De exemplu, să presupunem că două unități dintr-o matrice RAID 5 cu trei unități conțin următoarele date:

Unitatea 1: 01101101
Unitatea 2: 11010100

Pentru a calcula datele de paritate pentru cele două unități, se efectuează un XOR pe datele lor:

01101101
XOR 11010100
_____________
10111001

Datele de paritate rezultate, 10111001, sunt apoi stocate pe unitatea 3.

În cazul în care una dintre cele trei unități se defectează, conținutul unității defecte poate fi reconstruit pe o unitate de înlocuire prin supunerea datelor de pe celelalte unități la aceeași operațiune XOR. Dacă unitatea 2 s-ar defecta, datele sale ar putea fi reconstruite folosind rezultatele XOR ale conținutului celor două unități rămase, unitatea 1 și unitatea 3:

Unitatea 1: 01101101
Unitatea 3: 10111001

cum urmează:

10111001
XOR 01101101
_____________
11010100

Rezultatul acestui calcul XOR produce conținutul unității 2. 11010100 este apoi stocat pe unitatea 2, reparând complet matricea. Același concept XOR se aplică în mod similar la array-uri mai mari, folosind orice număr de discuri. În cazul unei matrice RAID 3 de 12 unități, 11 unități participă la calculul XOR prezentat mai sus și produc o valoare care este apoi stocată pe unitatea de paritate dedicată.

În RAID-DP se utilizează extensii și variații ale mecanismului de biți de paritate „dublă”, „dublă” sau „diagonală”.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *