Tolerarea Defectelor In Sistemele de Calcul
Utilizarea pe scară din ce în ce mai mare a sistemelor de calcul a condus la necesități speciale privind fiabilitatea sau disponibilitatea acestor sisteme. Decizia de a utiliza o structură care să tolereze unele defecte presupune o analiză comparativă a costului implementării tolerării defectelor și a costului consecințelor apariției unui defect. Această analiză este strict dependentă de aplicație. Sunt exemple numeroase de aplicații necesitând sisteme cu performanțe în domeniul fiabilității. Câteva categorii sunt descrise în continuare.
• Aplicații necesitând o disponibilitate ridicată: există numeroase cazuri când este permisă o pierdere ocazională a unor obiecte (date, mesaje, rezultate ale unor calcule) pentru un utilizator, dar nu este permisă căderea întregului sistem sau a unei baze mari de date. Exemple: sistemele care controlează comutarea liniilor telefonice.
• Aplicații necesitând o fiabilitate ridicată: în misiunile spațiale și în alte aplicații similare, nu este posibilă întreținerea și repararea. Calculatoarele trebuie să funcționeze, totuși, câțiva ani, chiar în ciuda producerii unor defecțiuni. În aceste cazuri, de obicei se utilizează în mod masiv redondanța. Unele sisteme apelează la o diagnoză de la o bază terestră, urmată de o comandă externă de reconfigurare, în timp ce altele au implementat un algoritm automat de acoperire a erorii.
• Aplicații critice: Cazul cel mai frecvent este al aplicațiilor de timp real la procesele industriale când, ca urmare a apariției unui defect, pot fi luate decizii pereclitând vieți umane sau provocând pagube extrem de mari. În aceste cazuri, pe lângă corectitudinea deciziilor, mai este impus și timpul de răspuns al sistemului la modificarea unor parametri de intrare. Există următoarea clasificare a calculatoarelor, ce are în vedere comportamentul lor la apariția unui defect:
calculatoare integre – nu dau la ieșire date sau comenzi false în cazul apariției unui defect, dar pot ieși din funcțiune pentru a realiza acest lucru;
calculatoare persistente – furnizează servicii continue în cazul unei defecțiuni, dar pot da la ieșire date false sau se pot opri un scurt timp pentru reconfigurare;
calculatoare persistente/integre – o combinație între cele două categorii menționate anterior;
calculatoare de înaltă fiabilitate – marchează toate erorile care apar. În funcție de aplicație se alege un sistem de calcul dintr-una din aceste categorii.
• Aplicații în domeniul procesării semnalelor: Aceste aplicații necesită sisteme cu performanțe deosebite. Construirea unor calculatoare superperformante, cu viteze foarte mari și cu o complexitate ridicată are ca urmare scăderea fiabilității acestor sisteme, dacă nu sunt prevăzute facilități de tolerare a defectelor. Astfel, supercalculatorul CRAY – 1 avea MTBF de numai 4 ore. Asigurarea unor performanțe deosebite de fiabilitate se poate asigura prin evitarea defectelor (fault avoidance) sau prin tolerarea defectelor (fault tolerance).
Modul tradițional îl reprezintă evitarea defectelor, care se referă îndeosebi la hardware. În acest scop se utilizează componente foarte fiabile, eventual care au traversat perioada de mortalitate infantilă și care sunt utilizate sub capacitatea maximă. Asamblarea componentelor și modulelor este minuțios efectuată și controlată. Se pot lua protecții suplimentare de ecranare pentru evitarea interferențelor. Sistemele sunt supuse teste comprehensive, care să elimine defectele hardware și software. Toate acestea conduc la creșterea prețului de cost și metodele folosite trebuie să țină seama de acest lucru. Inerent, la un asemenea sistem, pot apărea unele defecțiuni care se elimină prin acțiuni de mentenață, timp în care sistemul este indisponibil. În figura următoare se prezintă modul în care decurg în timp activitatea unui sistem netolerant la defecte.
O altă metodă de îmbunătățire a performanțelor de fiabilitate o constituie implementarea toleranței la defecte. Pentru aceasta sunt adăugate componente hardware și software suplimentare, cu rolul de a evita ca sistemul să ajungă întro stare eronată, chiar în prezența unui defect.
Nu există o rețetă generală pentru implementarea tolerării defectelor, existând o mare varietate de metode utilizate. Vom încerca să facem o prezentare generală a unor pași în vedera implementării caracteristicii de tolerare a defectelor. Metodologia de implementare a defectelor cuprinde:
• specificarea scopului fiabilizării sistemului: Acestă etapă presupune identificarea claselor de defecte care urmează a fi tolerate. Nu se pune problema tolerării oricărui defect, deoarece ar rezulta un sistem prea scump. Inițial, tolerarea defectelor se limita aproape întotdeauna la defecte fizice: schimbări nespecificate și nedorite ale valorilor uneia sau mai multor variabile logice din sistem. Acestea sunt cauzate de fenomene de defectare fizică, afectând una sau mai multe componente. Ele pot determina schimbări permanente sau temporare. Cu timpul însă, s-a pus problema tolerării defectelor programelor, ca și a defectelor de proiectare. Pentru aceasta se utilizează proiectarea Nversională.
• detecția erorilor și identificarea defectului ce le-a provocat;
• recuperarea din eroare a sistemului;
• evaluarea și rafinarea sistemului.
Din categoria defectelor fizice distingem:
• defecte fizice permanente, cauzate de modificări ireversibile în componente;
• defecte logice determinate, de tip blocat la “1” și blocat la “0”;
• defecte logice nedeterminate, la care valorile variabilelor alternează în dezacord cu specificațiile;
• defecte locale, ce afectează o singură variabilă logică;
• defecte distribuite, afectând mai multe variabile logice și care se manifestă în special la circuite LSI și VLSI, fiind datorate interferențelor sau defectării unor elemente critice (generatoare de ceas, surse de alimentare, etc.);
• defecte tranzitorii.
Exemple de sisteme tolerante la defecte: sisteme autonome descentralizate
Din principiile și metodele enumerate pentru implementarea caracteristicii de tolerare a defectelor, a decurs o serie întregă de arhitecturi și metode de control. Unele dintre ele includ sistemele multiprocesor utilizate mai ales în aviație și aplicații spațiale. Totuși multe din aceste sisteme au o parte supervizor pentru controlul resurselor comune, astfel că dacă această parte se defectează atunci cade întregul sistem.
Un alt concept folosit în unele sisteme multiprocesor este descentralizarea autonomă, dezvoltată pentru structurarea și controlul sistemelor distribuite, tolerante la defecte. Potrivit acestui concept, o stare normală a sistemului mare permite întotdeauna existența unor subsisteme defecte. În acest caz, tolerarea defectelor poate fi atinsă împărțind întregul sistem într-un asemenea mod încât fiecare subsistem să fie capabil să-și guverneze partea alocată din sistem, dacă un alt subsistem se defectează. Acestă cerință impune următoarea condiție: sistemul trebuie să fie compus din subsisteme uniforme și fiecare dintre acestea trebuie să-și controleze singur partea proprie, bazat numai pe informațiile locale, astfel încât să nu existe nici module supervizoare și nici resurse comune.
În proiectarea unui sistem autonom descentralizat trebuie avute în vedere următoarele principii:
• controlabilitate autonomă: oricare din resurse sau magistrale de legătură s-ar defecta, resursele rămase pot continua operarea fără a primi sau transmite comenzi la oricare altă resursă;
• coordonabilitate autonomă: oricare din resurse sau magistrale de legătură s-ar defecta, resursele rămase pot coopera numai între ele pentru a continua operarea.
Pentru a se putea realiza aceste principii, derivate din conceptul descentralizării autonome, fiecare resursă trebuie să îndeplinească următoarele condiții:
• uniformitate – pentru a menține operarea în ciuda defectării oricărei resurse, fiecare dintre acestea are o structură uniformă în hardware și software și este uniform și simetric combinată în sistem;
• egalitate – resursele și magistralele de interconectare nu trebuie să depindă de echipamente specifice, cum ar fi arbitrii de magistrală pentru controlul și coordonarea cu alte resurse. Hardware-ul și software-ul de control este același pentru fiecare celulă;
• localitate – fiecare resursă se autocontrolează, conectează magistralele și cooperează cu altele bazându-se numai pe informații locale. Astfel, nu este necesară sincronizarea ceasului resurselor.
Implementarea tolerarii defectelor prin diversitate
Folosirea unor module hardware sau software care lucrează în paralel și votarea rezultatelor poate conduce la unele probleme. Astfel, o greșeală în proiectarea hardware face ca toate modulele, sistemele să se comporte identic și elementul de votare să furnizeze un rezultat eronat, fără a se cunoaște acest lucru. De asemenea, o eroare prezentă într-un program care se execută simultan pe mai multe unități, va face ca toate rezultatele să fie identice, deși incorecte.
O modalitate de a evita aceste probleme este utilizarea unor elemente hardware și software, care să execute aceeași funcție, dar care să nu fie identice. Este recomandabil ca aceste elemente să fie realizate de echipe, respectiv de persoane diferite, care să utilizeze tehnici, algoritmi, abordări diferite. În acest fel, se obține o fiabilitate ridicată, fără a exista pretenția de eliminare aproape totală a erorilor de proiectare și programare, ceea ce ar conduce la un preț foarte ridicat.
Această idee nu este chiar nouă, ea fiind sugerată pentru prima dată de Dionysius Lardne într-un articol intitulat “Babbage's Calculating Engine”, publicat în iulie 1834: “Controlul cel mai eficace pentru depistarea erorilor apărute în procesul de calcul este de a efectua aceleași calcule pe calculatoare separate și independente; rezultatul controlului este cu atât mai decisiv cu cât calculele sunt efectuate prin metode diferite”. Utilizarea efectivă a acestei metode, cunoscută mai ales sub numele de programare N-versională, este însă de dată mai recentă. Implementarea tolerării defectelor privește sistemul de calcul sub trei aspecte: timp, hardware și software. Prin timp înțelegem execuția unui program o dată sau de mai multe ori. Cazul cel mai frecvent este al unui program (1S), executat o singură dată (1T), pe un calculator (1H), adică 1T/1H/1S. Pentru cazul execuției pe o structură cu rezervare, având N module identice pe care se execută N copii ale aceluiași program, notația precedentă devine 1T/NH/NS. În multe cazuri, pentru eliminarea defectelor tranzitorii, se reia execuția unui program și se compară rezultatele (NT/1H/1S). O altă folosită este încărcarea și execuția unei copii a programului (2T/1H/2S), care înlătură pericolul ca în urma defectelor tranzitorii să fie afectat chiar programul și nu numai rezultatele. Dacă programul are însă un defect de proiectare, atunci, ori de câte ori datele de intrare conduc programul în starea eronată, se vor obține rezultate greșite de fiecare dată. Compararea lor își pierde eficiența. Eliminarea tuturor erorilor din program este, practic, imposibil de făcut, costul verificării și validării programelor fiind exorbitant. O soluție constă în utilizarea unor programe diferite, care să realizeze același job, scrise de oameni diferiți, eventual cu algoritmi diferiți. De asemenea, o eroare de proiectare într-un calculator, face ca toate N calculatoarele identice utilizate să se comporte la fel, adică eronat. Utilizarea unor calculatoare compatibile, dar de la proiectanți diferiți, constituie o bună soluție. Cazul general al utilizării diversității este: XT/YDH/ZDS. Astfel, pentru evitarea unei erori din program, se pot executa cele N versiuni de programe și, ca urmare a unui test de acceptare, un algoritm de decizie selectează r ăspunsul corect (NT/1H/NDS). Aceste discuții nu sunt valabile pentru aplicațiile de timp real, când nu avem timp să executăm N variante de program, fiind solicitat un răspuns rapid.
Există trei probleme principale ce concură la eliminarea erorilor utilizând diversitatea:
• tehnici de implementare a programelor independente, algoritmi diferiți, limbaje de programare diferite și altele similare;
• programatori și proiectanți care să lucreze independent, fără să comunice între ei, pentru a nu se induce erori de înțelegere a problemei;
• specificarea inițială a problemei fără ambiguități.
Cea mai dură și care provoacă cele mai multe dificultăți este specificarea problemei. Există deja limbaje formale și neformale care să faciliteze specificarea problemei și care, cu ajutorul calculatorului, permit evitarea unor inconsistențe și ambiguități. Utilizarea programării N-versionale conduce la scăderea costului software-ului executat într-un mediu cu înalt profesionalism și cu testare puternică pentru depistarea erorilor.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Tolerarea Defectelor In Sistemele de Calcul (ID: 163987)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
