Cod corector de erori

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare

Codurile corectoare de erori (în engleză error-correcting code, prescurtat ECC) reprezintă tehnologia care permite calculatoarelor să corecteze automat multe din erorile de memorie sau de transmisie. Domeniul ECC face parte atât din IT cât și din informatică. ECC se referă la standardele de corecție bazate pe implementarea în hardware a bitului de paritate la nivel de cuvânt sau pe alte procedee. Aceste mecanisme implică atât suport hardware la nivel de circuit de memorie sau transmisie, cât și suport hardware și software la nivel de sistem. Cel mai simplu și des întâlnit tip de ECC este cel cu detectare și corectare a erorilor de un singur bit.

După cauzele erorilor există două tipuri de erori:

  • permanente (în engleză: hard errors) - în general acestea sunt cauzate de defecte hardware
  • aleatorii (soft errors). Cauzate de interferențe, desincronizări sau erori de program.

Detectarea și corecția erorilor[modificare | modificare sursă]

Mecanismele de detectarea erorilor provoacă de obicei stoparea operațiilor cu memoria, înainte ca datele greșite să poată fi utilizate în sistem. Corecția erorilor este însă un proces mai complicat; el presupune mai întâi detectarea lor, dar apoi și reconstruirea informatiilor greșite, pe baza unor informații redundante, chiar în timpul functionării sistemului („în zbor”). În funcție de procedeul utilizat detectarea și corectarea erorilor pot repara multe din greșelile care au loc.

Paritate[modificare | modificare sursă]

Una dintre cele mai simple și utilizate metode de detectare a erorilor se bazează pe utilizare unor biți „de paritate”. Acestea pot detecta erorile simple (modificarea unui singur bit din cuvânt), dar nu și erorile multiple, și nici nu pot corecta erorile detectate. Paritatea este o formă simplă de detecție a erorilor care adaugă câte un bit la fiecare cuvânt (8 biți) din modulul de memorie. Acest bit suplimentar reține dacă în cei 8 biți ai fiecărui cuvânt există un număr par sau impar de cifre 1 și este memorat sau transmis împreună cu cuvântul. La utilizarea (citirea sau recepția) cuvântului paritatea se recalculează și rezultatul se compară cu bitul de paritate citit sau recepționat. Dacă nu se potrivește, atunci înseamnă că există o eroare în memorie sau la transmisie.

Multe erori multiple însă nu afectează bitul de paritate și deci nu pot fi detectate cu această metodă simplă.

Metode ECC propriu-zise[modificare | modificare sursă]

Metodele ECC propriu-zise sunt o formă mai avansată de detectare a erorilor, mai complexă decât bitul de paritate, la care, în plus, erorile pot fi și corectate. De exemplu, serverele foarte performante necesită procedee ECC foarte eficiente de corectare a erorilor.

Pentru detectarea erorilor multiple și corecția erorilor simple se poate de exemplu extinde metoda bitului de paritate de la nivel de cuvânt la nivel de bloc. La această metodă, pe lângă bitul de paritate al fiecărui cuvânt, se utilizează și un bit de paritate la nivel de coloană a blocului de cuvinte.

Erorile de memorie sunt proporționale cu cantitatea de RAM într-un computer, precum și cu durata de funcționare. Deoarece serverele de obicei conțin mulți gigabaiți de RAM și sunt în funcțiune 24 de ore pe zi, probabilitatea erorilor produse în cipurile de memorie este relativ mare și, prin urmare, acestea au nevoie de memorie ECC foarte eficientă. În aceste cazuri memoria trebuie protejată cu un cod ECC foarte complex. Acest cod poate corecta automat orice eroare de 1 bit care apare într-un cuvânt de 64 de biți. Pentru acest scop memoria stochează fiecare cuvânt de 64 de biți folosind cuvinte de cod de 72 de biți (din care 8 biți pentru ECC). La fiecare acces la memorie hardwareul verifică dacă cuvântul de cod este corect; dacă nu, calculează automat cel mai apropiat cuvânt de cod pe care apoi îl decodifică. Aceste operații sunt destul de complicate, astfel încât un sistem cu memorii ECC funcționează cu aproximativ 5 % mai încet decât unul cu memorii cu paritate.

Bibliografie[modificare | modificare sursă]

  • S. Lin and D. J. Costello, Jr., Error Control Coding: Fundamentals and Applications, second edition, Prentice Hall: Englewood Cliffs, NJ, 2004.
  • W.W. Peterson and E.J. Weldon, Jr., Error-Correcting Codes, 2nd edition, MIT Press: Cambridge, Mass., 1972.
  • F.J. MacWilliams and N.J.A. Sloane, The Theory of Error-Correcting Codes, North-Holland: New York, NY, 1977.

Vezi și[modificare | modificare sursă]