A causa della sua semplicità, la parità è usata in molte applicazioni hardware dove un’operazione può essere ripetuta in caso di difficoltà, o dove semplicemente rilevare l’errore è utile. Per esempio, i bus SCSI e PCI usano la parità per rilevare gli errori di trasmissione, e molte cache di istruzioni dei microprocessori includono la protezione della parità. Poiché i dati della I-cache sono solo una copia della memoria principale, possono essere ignorati e reimpostati se si scopre che sono corrotti.
Nella trasmissione seriale dei dati, un formato comune è 7 bit di dati, un bit di parità pari e uno o due bit di stop. Questo formato ospita tutti i caratteri ASCII a 7 bit in un byte a 8 bit. Altri formati sono possibili; 8 bit di dati più un bit di parità possono trasmettere tutti i valori di byte a 8 bit.
In contesti di comunicazione seriale, la parità è solitamente generata e controllata dall’hardware dell’interfaccia (ad esempio, una UART) e, alla ricezione, il risultato è reso disponibile a un processore come la CPU (e così anche, per esempio, il sistema operativo) tramite un bit di stato in un registro hardware nell’hardware dell’interfaccia. Il recupero dall’errore è di solito fatto ritrasmettendo i dati, i cui dettagli sono di solito gestiti dal software (ad esempio, le routine di I/O del sistema operativo).
Quando il numero totale di bit trasmessi, incluso il bit di parità, è pari, la parità dispari ha il vantaggio che i modelli tutti-zeros e tutti-ones sono entrambi rilevati come errori. Se il numero totale di bit è dispari, solo uno dei modelli viene rilevato come errore, e la scelta può essere fatta in base a quale ci si aspetta sia l’errore più comune.
Array ridondante di dischi indipendentiModifica
I dati di parità sono usati da alcuni livelli di array ridondante di dischi indipendenti (RAID) per ottenere la ridondanza. Se un disco nell’array si guasta, i dati rimanenti sugli altri dischi possono essere combinati con i dati di parità (usando la funzione booleana XOR) per ricostruire i dati mancanti.
Per esempio, supponiamo che due dischi in un array RAID 5 a tre dischi contengano i seguenti dati:
Drive 1: 01101101
Drive 2: 11010100
Per calcolare i dati di parità per i due dischi, viene eseguito un XOR sui loro dati:
01101
XOR 11010100
_____________
10111001
I dati di parità risultanti, 10111001, vengono quindi memorizzati sul disco 3.
Se una delle tre unità si guasta, il contenuto dell’unità guasta può essere ricostruito su un’unità sostitutiva sottoponendo i dati delle altre unità alla stessa operazione XOR. Se l’unità 2 dovesse guastarsi, i suoi dati potrebbero essere ricostruiti usando i risultati XOR dei contenuti delle due unità rimanenti, l’unità 1 e l’unità 3:
Drive 1: 01101101
Drive 3: 10111001
come segue:
10111001
XOR 01101
_____________
11010100
Il risultato di questo calcolo XOR fornisce il contenuto dell’unità 2. 11010100 viene quindi memorizzato sul drive 2, riparando completamente l’array. Questo stesso concetto XOR si applica in modo simile ad array più grandi, usando qualsiasi numero di dischi. Nel caso di un array RAID 3 di 12 dischi, 11 dischi partecipano al calcolo XOR mostrato sopra e producono un valore che viene poi memorizzato sul disco di parità dedicato.
Estensioni e variazioni sul meccanismo del bit di parità “doppio,” “doppio,” o “diagonale”, sono usati in RAID-DP.