Memoria ECC

De la Wikipedia, enciclopedia liberă

Memoria ECC (ECC este un acronim de la numele engleze Error-Correcting Code, cod corector de greșeli, sau și Error Checking and Correcting, testare și corectare de erori) este un tip de memorie RAM care folosește un cod corector de erori pentru a detecta și corecta unele erori interne în mod automat, de foarte multe ori chiar fără ca sistemul de operare să fie „conștient” de acest lucru și, de asemenea, fără consecințe negative pentru utilizator. Algoritmele ECC folosesc o procedură care creează o redundanță parțială a informației de prelucrat (memorat). 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). Atunci când datele sunt preluate din memorie (citite), suma de control este recalculată la destinație, pentru a detecta dacă biții de date au fost cumva corupți. Astfel de sisteme pot detecta de obicei și corecta automat erorile de un bit pe cuvânt și pot detecta, dar nu corecta, erorile de mai multi biți pe cuvânt (care însă sunt mai improbabile). Vezi și memorie EOS, tehnologia IBM Chipkill, control și verificare paritate.

Introducere[modificare | modificare sursă]

Apar nelămuriri în ceea ce privește anumite caracteristici ale memoriei, cum ar fi "ECC"? Adevărul este că aceste aspecte sunt ignorate complet de majoritatea utilizatorilor de PC (Memoriile non-ECC unbuffered fiind cea mai comună alegerea și singura alegere de cele mai multe ori pentru plăci de bază de consum). Aceste caracteristici avansate de memorie (memorii ECC), pot fi utile sau chiar necesare pentru anumiți utilizatori/aplicații:

Memoria ECC[modificare | modificare sursă]

ECC este acronimul pentru Error Checking and Correction(Verificarea și corecția erorilor).

Memoria ECC este utilizat pe scară largă pentru calculatoarele de tip stații de lucru și servere.

Ce reprezintă ECC și cum funcționează?[modificare | modificare sursă]

După cum este sugerat și în denumirea sa: “Error Checking and Correction”, ECC reprezintă tehnologia care permite calculatoarelor să corecteze erorile de memorie. Cel mai întâlnit tip de ECC folosit pentru modulele de memorie este cel cu corecție a erorilor pe un singur bit. Acesta permite detectarea și corectarea erorilor la nivel de un bit(într-un octet). El va permite de asemenea detectarea erorilor pe 2 sau mai multi biți, însă va fi incapabil să le corecteze.

Cum funcționează? 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 fată des întâlnite la modulele de memorie non-ECC.

Sistemul va folosi acest bit de verificare pentru a verifica corectitudinea datelor și corectează singurul bit greșit, dacă există unul. Bitul de verificare va fi trensferat împreună cu octetul original de date. Totuși, magistrala de memorie pentru ECC este de 72 de biți lățime față de cei 64 de biți întâlniți la memoriile non-ECC. De reținut că doar 64 de biți din cei 72 de biți de date contează pentru lățimea de bandă și în aplicații, ceilalti 8 biți sunt toți biți de verificare, deci lățimea de bandă a memorie ECC va fi efectiv identică cu cea a memoriilor non-ECC.

Erori și corectarea erorilor[modificare | modificare sursă]

Detectarea și corecția erorilor în sistemele computerizate par să plece și să revină la modă. Seymour Cray a afirmat faimoasa replică "Paritatea este pentru agricultori" când a fost întrebat de ce a scos aceasta din CDC 6600. A inclus din nou paritatea în CDC 7600 afirmând "Am învățat că o mulțime de agricultori cumpără calculatoare". Originalul calculator IBM și toate calculatoarele de până la începutul anilor 1990 foloseau corecția de paritate. Mai târziu majoritatea au renunțat. Multe din memoriile din microcontrolerele actuale, incluzând majoritatea AMD-urilor pe 64 de biți, suporta ECC, dar multe plăci de bază și în particular acelea care folosesc chip-uri slabe nu suporta.

Este posibil ca majoritatea utilizatorilor să opteze pentru sisteme non-ECC și ECC memorie chiar și atunci când este disponibil. Cele mai importante motive pentru aceasta sunt:

  • costul mai ridicat de memorie ECC (fiecare bancă este de 9 cipuri de memorie, comparativ cu 8 pentru memorie non-ECC, și mai important, există un volum mai mare de non-ECC. În unele cazuri, raportul preț se reduce la 9 / 8, ca un exemplu , pe 2008/11/30, pe Crucial.com, un CL = 5 unbuffered ECC 2GB DDR2-667 DIMM costă 30 dolari, în timp ce costurile aferente partea non-ECC 28 dolari, o diferenta de 1 / 15, cu toate acestea unele module ECC cost de două ori mai de mult ca echivalentele lor non-ECC [Crucial CT12872Z40B și CT12864Z40B, Jan 2009]);
  • costul mai mare pentru o placa de baza care acceptă funcționalitatea ECC în RAM;
  • timp suplimentar necesar controlorii de memorie ECC pentru a efectua verificarea erorilor și, eventual, măsurile de corecție, care pot duce la o scadere a performanței de aproximativ 0.5 - 2%, în funcție de cerere;
  • simpla ignoranța a problemei.

Detectare și corectarea erorilor depinde de o estimare a tipurilor de erori care apar. Implicit, am presupus că eșecul fiecarui bit într-un cuvânt de memorie este independent și, prin urmare, că două erori simultane sunt improbabile. Acest lucru reprezinta cazul atunci când cipurile de memorie erau un pic prea mari (tipic în prima jumătate a anului 1980). Acum un numar foarte mare de biți se află pe același chip. Această slăbiciune nu pare a fi abordata pe larg; singură excepție este Chipkill. Testele recente dau rate de eroare foarte diferite, cu peste 7 ordine de mărime diferență, variind de la 10−10 -10−17 erori / h • bit, aproximativ o eroare de bit, pe oră, per gigabyte de memorie la un bit eroare, pe secol, per gigabyte de memorie.

Cum imi dau seama daca am nevoie de memorie ECC?[modificare | modificare sursă]

Pentru a raspunde la aceasta intrebare, trebuie sa identificam , in primul rand, care este cauza de provenienta a erorilor. Sunt doua mari cauze ale acestor, asa numite, erori "soft" :

  • ▪ izotopi radioactivi (care emit particule alfa), și
  • ▪ raze cosmice de mare energie de la supernove

Ambele pot modifica valoarea datelor stocate pe chip-ul de memorie. Aceste erori ssunt numite si “soft” deoarece ele pot fi reparate prin modificarea valorii bitului in memorie, exact ceea ce face ECC.

Modificarile pentru erorile soft pe un singur bit sunt de aproximativ 1/GB de memorie pe luna de operare neintrerupta. Deaoarece majoritatea computerelor nu ruleaza 24 de ore/zi, sansele nu sunt atat de ridicate. De exemplu, daca un computer (cu un GB de memorie)functioneaza 4 ore pe zi, sansa ca o eroare soft de bit sa apara(in timpul functionarii sistemului)este de o data la 6 luni. Chiar daca o eroare ar trebui sa apara, nu reprezinta o mare problema pentru majoritateaa utilizatorilor, fiind posibil ca aceste erori sa nu fie accesate in acel moment. Daca sistemul ar trebui sa acceseze bitul de eroare, aceasta nu s-ar transforma intr-o catastrofa oricum-sistemul ar putea sa se blocheze, insa un restart va rezolva totul.Acesta este motivul pentru care memoria ECC nu este necesara pentru computerele folosite de utilizatori acasa.

Lucrurile se schimba cand vine vorba de statii de lucru si servere. Pentru inceput, aceste sisteme folosesc multi-gigabytes de memorie, si ruleaza de obicei 24/7 de asemenea. Ambii factori maresc probabilitatea de aparitie a erorilor soft. Mult mai important, o eroare neobservata nu va fi tolerata in activitati de nivel inalt pe servere si statii de lucru. Ceea ce conteaza cu adevarat este numarul de date eronate în sine - vă puteți imagina problemele care pot apărea ca urmare a unei erori de soft în sistemele bancare sau a unui sistem informatic de control al zborului. Prin urmare, memoria ECC este cu siguranță necesara pentru aplicații in misiuni critice.

În cele din urmă, dacă aveți nevoie de memorie ECC, va trebui să cumpere o placa de baza care suporta module de memorie ECC, în plus față de modulele de memorie ECC si modulele ei înșiși. Fără sprijin pe placa de baza (sau de sprijin pe controller de memorie, pentru a fi mai exact), modulul de memorie ECC este efectiv la fel ca memorie non-ECC.

Note[modificare | modificare sursă]

Bibliografie[modificare | modificare sursă]

  • Shu Lin, Daniel J. Costello, Jr. (). Error Control Coding: Fundamentals and Applications. Prentice Hall. ISBN 0-13-283796-X. 

Legături externe[modificare | modificare sursă]