CATEGORII DOCUMENTE |
STOCAREA DATELOR
Stocarea bitilor
Calculatoarele utilizate in prezent reprezinta informatiile sub forma siruri de biti. Un bit (biniary digit = cifra binara) simbolizeaza una din cifrele 0 sau 1.
Stocarea unui bit intr-un calculator necesita un dispozitiv care sa poata sa se afle intr-una din cele doua stari. De exemplu:
- un intrerupator (pornit/oprit)
- un releu (deschis/inchis)
- un steag de start (ridicat/coborat).
Una din stari este utilizata pentru reprezentarea simbolului 0, iar cealalta pentru reprezentarea simbolului 1.
Porti logice si circuite basculante bistabile
Trebuie introduse operatiile AND (= si), OR (= sau) si XOR (= sau exclusiv) care sunt prezentate mai jos :
0 0 1 1
AND 0 AND 1 AND 0 AND 1
0 0 0 0
0 0 1 1
OR 0 OR 1 OR 0 OR l
0 1 1 1
XOR 0 XOR 1 XOR 0 XOR 1
0 1 1 0
Fig. 1.1. Operatiile AND, OR si XOR
Aceste operatii lucreaza cu valorile adevar (true)/fals (false) si sunt denumite operatii booleene.
Intrarile operatiei AND sunt reprezentate de adevarul sau falsitatea componentelor expresiei; iesirea reprezinta adevarul sau falsitatea expresiei compuse.
Expresia P AND Q este adevarata numai cand ambele sale componente sunt adevarate. Toate variantele operatiei AND se pot vedea in prima linie a figurii 1.1.
Similar, operatia OR se bazeaza pe o expresie compusa sub forma P OR Q. Asemenea expresie compusa este adevarata cand cel putin una dintre componente este adevarata, ceea ce coincide cu reprezentarea OR din linia a doua a figurii 1.1.
In limbajul curent nu exista o conjunctie care sa poata exprima semnificatia operatiei XOR. XOR produce ca rezultat o iesire cu valoarea 1 atunci cand una dintre intrarile sale este 1 si cealalta 0 (vezi linia a treia din fig. 1.1.).
Operatia NOT este o alta operatie booleana de AND, OR si XOR, prin faptul ca are o singura intrare si o singura iesire. Iesirea reprezinta opusul intrarii; daca intrarea operatiei NOT este adevarata, iesirea este falsa, si invers.
1.1.2. Tehnici de stocare
Calculatoarele anilor '60 contineau inele de material magnetic de dimensiuni mici, denumite miezuri (cores), pe care erau infasurate fire electrice, [mini]bobine. La trecerea curentului electric prin bobine, miezul poate fi magnetizat intr-una din cele doua directii. Directia campului magnetic poate fi detectata observandu-se efectul asupra unui curent electric ce trece prin centrul miezului.
Astfel un miez reprezinta o posibilitate de memorare a unui bit.
Datorita dimensiunilor lor mari si a necesarului ridicat de putere [electrica], aceste sisteme sunt depasite astazi.
Calculatoarele inregistreaza datele inca utilizand tehnologia magnetica, dar intr-un mod foarte apropiat de acela in care se fac inregistrarile pe banda magnetica. In unele sisteme de calcul se foloseste, de asemenea, si tehnica laserului pentru inregistrarea bitilor.
Diferentele dintre circuitele basculante bistabile electronice si dispozitivele de stocare magnetice (sau laser) reprezinta argumente pro si contra in ceea ce priveste aplicatiile lor.
Circuite basculante bistabile electronice care pot fi actionate electronic sunt mai rapide decat cele magnetice si, de aceea, sunt utilizate pentru stocarea datelor in circuitele interne ale calculatorului.
Insa un circuit basculant bistabil electronic pierde informatia stocata in el atunci cand sursa de alimentare este oprita.
In schimb, dispozitivele de stocare magnetice sau cu laser pastreaza datele, ceea ce le recomanda pentru realizarea de sisteme de stocare cu longevitate mare.
Sistemul de notatie hexazecimal
Cand ne referim la activitatile din interiorul unui calculator lucram cu siruri de biti, care pot fi uneori foarte lungi. Pentru a simplifica reprezentarea sirurilor de biti, se va analiza o notatie prescurtata, denumita notatia hexazecimala (hexadecimal notation).
Notatia hexazecimala utilizeaza un singur simbol pentru reprezentarea a patru biti.
Sistemul de codificare hexazecimal:
Cod binar | |||||||
Reprezentare hexazecimala |
A |
B |
C |
D |
E |
F |
Fig. 1.2. Sistemul de notatie hexazecimal
1.2.- Memoria principala
In scopul stocarii datelor, un calculator contine un mare numar de circuite, fiecare dintre ele fiind capabile sa stocheze biti. Acest 'rezervor' de biti este cunoscut sub numele de memorie principala (main memory).
1.2.1. Organizarea memoriei principale
Celulele de stocare din memorie sunt organizate in unitati, (cuvinte) cu dimensiunea uzuala de 8 biti.
Acest sir de 8 biti a impus cuvantul octet si, de asemenea, a impus pentru cuvantul byte - sir de biti cu aceeasi lungime.
Dimensiunea memoriei este adesea masurata in multipli de 1.048.576 celule (1.048.576 = 220, fiind mai natural pentru a fi utilizat decat 1.000.000 care este o putere a lui 10). Pentru a desemna aceasta unitate de masura se foloseste termenul mega.
Deci: 1 mega byte (1 MB) ≡ 1.048.576 byte.
Alte unitati de masura a dimensiunilor de memorie sunt kilooctetul ≡ kilobyte (KB) care este egal cu 1024 octeti (210 octeti) si gigaoctetul ≡ gigabyte (GB) care este egal cu 1024 MB (230 octeti).
Pentru identificarea celulelor individuale din memoria principala a unui calculator, fiecare are atribuit un nume unic, denumit adresa.
Adresele utilizate in tehnica de calcul sunt in intregime numerice. Pentru exemplificare putem considera toate celulele de memorie plasate pe un singur rand si numerotate in ordine crescatoare pornind de la 0.
Acest sistem permite identificarea unica a unei celule si, de asemenea, o relatie de ordonare intre celule permite referiri de tipul 'celula precedenta' sau 'celula urmatoare'.
Celulele din memoria principala care stocheaza biti sunt combinate cu circuite necesare pentru a permite, si altor circuite sa stocheze si sa recupereze datele din celulele memoriei principale.
Exista astfel si alte celule (circuite) care pot prelua datele din memorie solicitand informatii despre continutul unei anumite adrese (operatie de citire) sau pot inregistra informatii in memorie solicitand ca un anumit sir de biti sa fie plasat in celula aflata la o anumita adresa (operatie de scriere).
Acest sistem de identificare a celulelor memoriei principale permite apelarea, cercetarea si modificarea individuala a acestora. Astfel, o celula a memoriei principale cu o adresa mica este la fel de accesibila ca si una cu o adresa foarte mare, deci datele stocate in memoria principala a calculatorului pot fi prelucrate in orice ordine. Din aceste motive memoria principala a unui calculator se mai numeste si memorie cu acces aleator (random access memory - RAM).
Acest acces aleator la mici unitati de date (celula) se deosebeste radical de sistemele de stocare de masa (care manipuleaza siruri lungi de biti sub forma de blocuri).
Organizarea unei celule de memorie
Consideram bitii dintr-o celula de memorie ca fiind aranjati pe un rand. Vom denumi capetele acestui rand marginea superioara , iar celalalt capat marginea inferioara.
Considera deasemenea bitii aranjati intr-un rand orientat de la stanga la dreapta cu marginea superioara plasata la stanga.
Bitul de la capatul din stanga este denumit cel mai semnificativ bit.
(marginea superioara) (marginea inferioara)
Fig. 1.3. Organizarea unei celule de memorie cu dimensiune de un octet
Memoria primara
Memoria (Memory) pastreaza programele si datele.
Fara o memorie, din care procesoarele sa poata citi si in care sa poata scrie informatii, nu poate exista nici un calculator numeric cu program memorat.
Unitatea elementara a memoriei este cifra binara, numita bit. Un bit poate contine un 0 sau un 1. Sistemul de numerotare binar necesita numai doua valori distincte, reprezentand cea mai sigura metoda pentru codificarea informatiei numerice.
Memoriile sunt alcatuite dintr-un numar de celule sau locatii. Fiecare celula are un numar, numit adresa, prin care programele se pot referi la ea.
In figura se prezinta trei organizari diferite a) , b) , c) pentru o memorie de 96 de biti :
Adresa a)
| ||||||||
Adresa b)
Adresa c)
| ||||||||||||||||
Daca o adresa are n biti, atunci numarul maxim de celule adresabile este 2n.
Pentru a ne referi la memoria din fig. a), o adresa are nevoie de cel putin 4 biti, iar pentru a ne referi la memoriile din fig. b) si c), o adresa are nevoie de 3 biti.
Numarul de biti din adrese determina numarul maxim de celule adresabile direct in memorie.
Celula este cea mai mica unitate de memorie adresabila. Aproape toti producatorii de calculatoare au aderat la standardul celulei de 8 biti = 1 octet (byte). Octetii sunt grupati in cuvinte. Un calculator cu un cuvant de 32 biti are 4 octeti/cuvant, iar altul cu un cuvant de 64 biti are 8 octeti/cuvant.
Cuvantul este important, deoarece instructiunile (majoritatea acestora) opereaza cu cuvinte intregi.
Octetii dintr-un cuvant pot fi numerotati de la stanga la dreapta, sau de la dreapta la stanga. Vom reprezenta in figura o parte a memoriei unui calculator pe 32 biti.
Adresa Cel mai semnificativ - primul (IBM, SPARC)
|
octet
a) Biti numerotati de la stanga la dreapta
(Intel) Cel mai semnificativ - ultimul Adresa
|
octet
Cuvant de 32 de biti
b) Biti numerotati de la dreapta la stanga
Sa precizam cum vom reprezenta valoarea numerica: 6 este reprezentata de bitii 110 in partea cea mai din dreapta a unui cuvant si de zerouri pe ceilalti 29 de biti din stanga.
Majoritatea aplicatiilor au nevoie de un amestec de numere intregi, siruri de caractere si alte tipuri de date.
Sa consideram o fisa simpla de personal: nume angajat, varsta si codul departamentului (Paul Sandu, 21 ani, Departament = 260 = 1 x 256 + 4) si sa o reprezentam in cele doua moduri precizate mai sus.
Ad. Ad.
P |
A |
U |
L |
L |
U |
A |
P | |||
S |
A |
N |
D |
D |
N |
A |
S |
|||
U |
U |
|||||||||
Reprezentarile sunt bune si consistente intern, problema apare la transmiterea fisei, prin retea de la masina cea mai semnificativa catre cealalta masina.
Rezultatul transferului propus arata astfel :
L |
U |
A |
P |
D |
N |
A |
S |
U |
|||
Masina a inversat in timpul transmisiei:
ordinea caracterelor din cuvant (ceea ce este corect),
octetii dintr-un intreg (ceea ce este incorect).
O solutie este de a inversa octetii prin software (dupa crearea unei copii), ceea ce va conduce la :
P |
A |
U |
L |
S |
A |
N |
D |
"U" | |||
Problema este pozitia caracterului 'U" pozitionat prost. Solutii de indreptare nu exista la transferul intre masini diferite ca organizare a memoriei.
Apare evident necesitatea unui standard pentru stabilirea ordinii octetilor in cadrul organizarii memoriei.
Intotdeauna CPU-urile au fost mai rapide decat memoriile.
Proiectantii CPU-ului sunt preocupati de sporirea vitezei acestora, pe cand proiectantii memoriilor sunt preocupati de sporirea capacitatii, si nu de sporirea vitezei. Datorita acestor abordari, situatia CPU-urilor si a memoriilor, vis-à-vis de viteza, continua sa se inrautateasca in timp. Practic, acest dezechilibru are urmatoarea metamorfozare: dupa ce CPU-ul a lansat o cerere catre memorie, nu va primi cuvantul asteptat timp de mai multe cicluri CPU; cu cat memoria este mai lenta, cu atat CPU-ul are mai mult de asteptat.
In acest moment, inginerii stiu cum sa construiasca memorii la fel de rapide ca si CPU-urile, dar ar trebui incorporate in cip-ul CPU, crescandu-i dimensiunile si costul.
Cip-ul CPU este limitat la anumite dimensiuni. In acest sens, se cunosc tehnici de combinare a unei cantitati mici de memorie rapida cu o cantitate mare de memorie lenta, la un pret moderat.
Memoria mica, rapida, se numeste memorie intermediara (cache).
Ideea de baza a unei memorii intermediare : cuvintele de memorie cele mai frecvent utilizate sunt pastrate in memoria intermediara.
CPU
memorie
principala
memorie
intermediara magistrala
Plasarea memoriei intermediare se face in mod logic intre CPU si memoria principala.
1.3.- Dispozitive de stocare de masa
Limitele tehnologice precum si necesitatea stocarii unor copii de siguranta ale datelor vitale, au facut ca memoria principala a unui calculator sa nu satisfaca cerintele impuse de diversele aplicatii. Din aceste motive, calculatoarele sunt echipate, pe langa memoria principala, cu sisteme de stocare de masa (mass storage system), denumite si memorie secundara. Stocarea datelor pe aceste sisteme se face in unitati de mari dimensiuni denumite fisiere (files).
Unul din principalele dezavantaje ale sistemelor de stocare de masa este acela ca, in general, ele necesita o miscare suplimentara mecanica, astfel fiind mai lente la stocarea si recuperarea datelor in comparatie cu memoria principala a calculatorului.
Principalul avantaj al dispozitivelor de stocare de masa este acela ca, in multe situatii, sunt mai ieftine decat memoria principala, iar suportul pe care se inregistreaza datele poate fi extras din calculator si depozitat intr-un loc sigur in scopul recuperarii ulterioare a datelor.
Cu privire la dispozitivele care pot fi cuplate sau decuplate de la calculator, se folosesc termenii on-line si off-line.
Termenul On-line indica ca dispozitivul sau informatiile sunt conectate si pot fi folosite de calculator fara interventie umana.
Termenul Off-line indica ca este necesara interventia umana inainte ca dispozitivul sau informatiile sa poata fi utilizate de calculator; dispozitivul trebuie pornit sau informatiile trebuie introduse intr-un anumit mecanism.
Oricat de mare ar fi memoria principala. intotdeauna ea va fi prea mica pentru cerintele utilizatorilor.
Ierarhii de memorii
C P U
(Registre)
Memorie
intermediara
Memorie
principala
Discul magnetic
Banda Discul optic
magnetica
Ierarhie de memorii cu cinci niveluri
Marimea memoriei intermediare are dimensiuni de la 32 KB pana la zeci de MB.
Memoria principala are dimensiuni de la 16 MB pana la zeci de GB.
Discul magnetic este suportul actual pentru pastrarea permanenta (80 GB, 100 GB, 120 GB, 200 GB) si sta la baza ierarhiei de memorii, iar banda magnetica si discul optic sunt destinate pastrarii arhivelor. Exista urmatorii parametri importanti de caracteristice specifice, pe masura ce ne deplasam spre baza ierarhiei :
a. Timpul de acces se mareste (creste).
Registrele CPU pot fi accesate in cateva monosecunde.
Memoriile intermediare pot fi accesate intr-un multiplu apropiat de timpul de acces al registrelor.
Timpii de acces la memoria principala au valori tipice de cateva zeci de nanosecunde.
Timpii de acces la discul magnetic ≥ 10 msec.
Timpii de acces la banda magnetica si discul optic sunt de marimea secundelor (inclusiv timpul de extragere si inserare in dispozitivul de intrare/iesire).
b. Capacitatea de stocare creste.
Registrele CPU pot stoca 128 octeti.
Memoriile intermediare pot stoca cativa megaocteti (MB).
Memoriile principale: zeci mii MB.
Discurile magnetice: zeci sute GB.
Benzile magnetice si discurile optice nu sunt tot timpul utilizate, astfel incat capacitatea lor este limitata de bugetul proprietarului.
c. Numarul de biti primit pe dolar creste. Preturile pe componente se masoara
astfel :
Memoria principala, in dolari/MB.
Stocarea pe discul magnetic in centime/pennies/MB.
Stocarea pe banda magnetica, in dolari/GB.
Discuri magnetice
Un disc magnetic este alcatuit din unul sau mai multe platane de aluminiu, cu un invelis magnetizabil. Initial, diametrele acestor discuri erau de 50 cm, 12 cm, dar acum (2005) au in general 3 cm sau mai putin;
Un cap de citire/scriere, care contine o bobina de inductie ce se deplaseaza foarte aproape de suprafata platanului, "sprijinindu-se" pe o perna de aer (cu exceptia discurilor flexibile/dischetelor unde atinge suprafata). La trecerea unui curent negativ/pozitiv prin bobina capului, acesta magnetizeaza suprafata de dedesubtul capului, aliniind particulele magnetice la dreapta sau la stanga, functie de polaritatea curentului. Astfel, se realizeaza scrierea, citirea realizandu-se in modul precizat in paragraful urmator. La trecerea capului de citire peste o suprafata magnetizata, un curent pozitiv/negativ este indus in bobina capului.
In continuare este prezentata geometria unei piste specifice discului magnetic.
date cap de citire/scriere
bratul discului
preambul
directia de miscare brat
O portiune a unei piste a discului (sunt precizate doua sectoare)
Secventa circulara de biti scrisa la rotatia completa a discutie se numeste pista (track). Fiecare pista este impartita in sectoare de lungime fixa, de obicei de cate 512 octeti de date, precedati de un preambul care permite capului sa se sincronizeze inainte de citire sau scriere. Dupa zona de date urmeaza un cod corector de erori (ECC - Error Correcting Code), fie un cod Hamming, fie un cod care poate corecta erori multiple numit Cod Reed Solomon.
Sectoarele consecutive sunt separate de un spatiu intre sectoare (Intersector gap).
Capacitatea discului formatat este cu cca. 15% mai mica decat cea a discului neformatat. La fiecare distanta radiala poate fi scrisa o alta pista. Pistele (coroane circulare) sunt cercuri concentrice fata de axul discului.
Cu tehnologia actuala, discurile au intre 800 si 2000 de piste pe centimetru, largimea pistei fiind intre 5-10 microni.
Discurile actuale ajung de la densitati de 50000 pana la 100000 biti/cm. Astfel de discuri se numesc discuri Winciester. Majoritatea discurilor sunt constituite din mai multe platane suprapuse pe verticala.
Fiecare platan dispune de propriul brat si cap. Bratele sunt sudate intre ele; la o deplasare intr-o noua pozitie radiala sunt mutate toate odata. Setul de piste dintr-o pozitie radiala se numeste cilindru.
Factorii care influenteaza performantele discurilor sunt :
deplasare in pozitia radiala corecta, cautare (seek);
timpii medii de cautare (intre piste alese aleatoriu) se situeaza in intervalul 5-15 msec.;
latenta de rotatie (rotational latency) necesara rotirii platanului astfel incat sectorul dorit sa ajunga sub capul de citire; intarzierea medie: 4 8 msec. Majoritatea discurilor se rotesc la 5400, 7200, 10800 rotatii/minut;
timpul de transfer depinde de densitatea lineara si de viteza de rotatie si are valori de 25 100 microsecunde (la data de transfer 5 20 MB/sec., pentru un sector de 512 octeti).
Evident, timpul de cautare si latenta sunt predominante in timpul de transfer.
Fiecarui disc ii este asociat un controlor de date (disk controller), un cip care controleaza dispozitivul.
Printre sarcinile controlorului sunt :
acceptarea comenzilor de la software, de tipul READ, WRITE, FORMAT;
controlul miscarii bratului;
detectia si corectia erorilor;
conversia datelor citite din memorie;
cand controlorul descopera un sector defect, il inlocuieste cu unul din sectoarele libere rezervate in acest scop in cadrul fiecarui cilindru.
1.3.1. D i s c u r i
Cea mai obisnuita forma de stocare de masa utilizata in prezent o reprezinta stocarea pe disc. In aceasta structura, stocarea datelor se face pe un disc subtire care se invarteste si care este acoperit cu o pelicula subtire de material magnetic.
Deasupra si/sau dedesubtul discului sunt plasate capete de citire/scriere, astfel incat, pe masura ce discul se roteste, fiecare cap parcurge un cerc denumit pista (track) care se afla pe suprafata de sus sau jos a discului. Deoarece fiecare pista contine mai multe informatii decat vom dori sa prelucram la un moment dat, pistele sunt impartite in arce de cerc denumite sectoare, unde informatiile sunt inregistrate ca un sir continuu de biti.
---piste divizate in sectoare
disc - capde citire/scriere
brat
misc miscarea bratului
piste divizate
in sectoare miscarea discului
Fig. 1. 4. Structura unui sistem de stocare pe disc
Prin repozitionarea capetelor de citire/scriere se obtine acces la sectoare situate pe diferite piste concentrice. Pistele sunt compuse din mai multe sectoare individuale, fiecare dintre ele putand fi tratate ca un sir de biti independent. Numarul de piste de pe suprafata discului, precum si numarul de sectoare de pe o pista, difera de la un sistem la altul. Dimensiunile sectoarelor sunt in general fie de 512 octeti, fie de 1024 octeti.
Localizarea pistelor si sectoarelor nu reprezinta ceva permanent in structura fizica a discului, ele sunt marcate magnetic printr-un proces denumit formatare (sau initializare) a discului.
Cele mai multe sisteme de calcul pot reformata discurile atunci cand formatul acestuia nu este compatibil cu cel propriu. Reformatarea unui disc distruge toate informatiile stocate anterior pe el.
Sistemele cu capacitate mica utilizeaza un singur disc, denumit si discheta/disc flexibil (floppy disk). Sunt disponibile in comert astfel de dischete. Dischetele au diametrul de 31/2 toli, si sunt introduse intr-o carcasa rigida de plastic. Desi capacitatea dischetelor este limitata la cativa megaocteti (1,44 MB), ele au avantajul ca se introduc si se scot usor in unitatea citire/scriere si sunt usor de pastrat. Dischetele reprezinta o solutie buna pentru stocarea off-line a informatiilor.
Discurile de mare capacitate, care pot stoca mai multi gigaocteti de date, constau dintr-un numar de cinci pana la zece discuri fixe, montate in paralel pe un ax comun, cu suficient spatiu intre ele incat sa permita accesul capetelor de citire/scriere. Deoarece aceste discuri sunt rigide, ele sunt cunoscute sub numele de hard-disc.
In cazul acestor sisteme (hard-disc) capetele de citire/scriere nu ating suprafata discului, ceea ce-i permite acestuia viteze mari de rotatie.
Distanta dintre capetele de citire/scriere si suprafata dischetei este foarte mica, astfel incat o particula de praf se poate bloca intre cap si suprafata discului deteriorandu-le pe amandoua. Pentru prevenirea acestui fenomen hard-discul este inchis intr-o carcasa etansa.
Pentru evaluarea performantei discurilor se folosesc mai multe criterii (parametrii):
- timpul de cautare (seek time) = timpul necesar deplasarii capetelor de citire/scriere de la o pista la alta;
- timpul de intarziere (rotation delay/latency time) = jumatate din timpul necesar pentru ca discul sa efectueze o rotatie completa, respectiv timpul mediu in care datele respective ajung in pozitia capului de citire/scriere dupa ce acesta a fost adus la pista dorita;
- timpul de acces (access time) = suma dintre timpul de cautare si timpul de intarziere;
- rata de transfer (transfer rate) a datelor catre sau de la disc.
Deoarece capetele de citire/scriere nu ating suprafata discului, ele pot avea viteze de rotatie de cca. 5000-7000 rotatii/minut, in timp ce in cazul discurilor flexibile aceste viteze nu depasesc 300 rotatii/minut.
Rata de transfer a discurilor fixe se masoara in megabytes/secunda, fata de cea a dischetelor care se masoara in kilobytes/ secunda.
Daca timpul de intarziere se masoara, in cazul circuitelor electronice in nanosecunde (miliardimi de secunda) si chiar mai mici, timpii de cautare, intarziere si acces in cazul discurilor se masoara in milisecunde (miimi de secunda).
1.3.2. Discuri compacte
Discul compact (CD) este compatibil cu cel utilizat in domeniul inregistrarilor muzicale, cu diferenta ca, pentru a obtine rate ridicate de transfer al datelor, cititoarele de CD-uri din calculatoare, rotesc mult mai rapid discul.
Aceste discuri, cu diametrul de cca. 5 toli, sunt confectionate dintr-un material reflectorizant, acoperit cu o pelicula protectoare transparenta.
Inregistrarea informatiilor pe CD se face prin creare de striatii in adancimea suprafetei reflectorizante.
Informatiile sunt stocate pe o singura pista care are forma de spirala.
Una din cele mai raspandite forme actuale de stocare a datelor pe compact-disc este reprezentata de dispozitivele ce pot fi numai citite, denumite CD-ROM (Compact disk read only memory). Capacitatea de stocare a acestor CD-ROM-uri este de 600 MB.
Sunt, de asemenea, dispozitive si sisteme CD care permit si modificarea datelor stocate. Exista de asemenea sisteme care utilizeaza dispozitive magneto-optice pentru inregistrarea informatiilor, topind suprafata reflexiva de pe CD cu ajutorul unei raze laser si apoi rearanjand-o prin intermediul unor campuri magnetice inainte ca aceasta sa se raceasca.
1.3.3. Benzi magnetice
Dispozitivele de stocare mai vechi utilizeaza banda magnetica. Informatiile se inregistreaza pe o pelicula magnetica depusa pe o banda de material plastic, care este stocata pe un sir de role.
Pentru acces la date, banda magnetica este introdusa intr-o unitate de banda care poate derula banda, citi si scrie informatia sub controlul calculatorului. Exista si unitati de banda magnetica cu cartus care utilizeaza casete.
Depinzand de formatul utilizat, pe unele benzi magnetice pot fi stocate volume de ordinul gigabytes (GB).
1.3.4. Inregistrari logice si fizice
Datele in memoria principala a unui calculator pot fi apelate la nivelul celulelor de memorie de dimensiunea unui octet.
Proprietatile fizice ale dispozitivelor de stocare de masa impun ca manipularea datelor stocate sa se faca utilizand unitati cu dimensiuni mai mari de un octet.
Un bloc de date corespunzator caracteristicilor fizice ale unui dispozitiv de stocare este denumit inregistare fizica (phisycal record). In afara impartirii datelor in inregistrari fizice determinate de caracteristicile dispozitivului de stocare, fisierele stocate poseda o diviziune naturala, legata de structura aplicatiei din care fac parte.
De exemplu, un fisier care contine informatii referitoare la angajatii unei firme este alcatuit de obicei din blocuri de informatii referitoare la fiecare angajat.
Aceste blocuri de date care apar in mod natural sunt denumite inregistrari logice (logical records).
Dimensiunile inregistrarilor logice se potrivesc cu totul intamplator ca lungime (marime) cu dimensiunile inregistrarilor fizice impuse (ca marime) de un dispozitiv de stocare.
In consecinta este posibil sa existe mai multe inregistrari logice stocate ca o singura inregistrare fizica sau o inregistrare logica stocata pe mai multe inregistrari fizice. In acest spirit, pentru recuperarea datelor de pe sistemele de stocare de masa este necesara o anumita activitate de decodificare.
1.4. Codificarea utilizata pentru stocarea informatiilor
In continuare vor fi studiate mai in amanunt tehnicile utilizate pentru reprezentarea informatiilor sub forma unor siruri de biti.
1.4.1. Reprezentarea simbolurilor
Reprezentarea datelor intr-un calculator se realizeaza prin proiectarea unui cod in care diferite simboluri (litere alfabetice, semne de punctuatie etc.) au asociate sabloane (modele) de biti unice pentru ca informatia sa poata fi stocata sub forma unor propozitii codificate pe suportul magnetic. Astfel au fost create si folosite diverse coduri pentru diferite echipamente, acest lucru avand ca efect aparitia si proliferarea problemelor de comunicatie.
Pentru a remedia aceasta situatie, Institutul American pentru Standarde (American National Standards Institute - ANSI) a adoptat codul American Standard Code form Information Interchange (ASCII).
Acest cod utilizeaza modele cu o lungime de sapte biti pentru reprezentarea literelor mari si mici ale alfabetului englez, semnelor de punctuatie, cifrelor de la 0 la 9, precum si a anumitor caractere de control (trecere randul urmator - line feed, revenire la marginea din stanga a randului - carriage return, tabulator - tab).
In prezent codul ASCII este extins la un format de opt biti pe simbol, prin adaugarea uni zero pe pozitia celui mai semnificativ bit in fata fiecarui sablon al vechiului cod pe sapte biti. In anexa 1 este prezentat codul ASCII intr-un format cu opt biti pe simbol.
Exista si alte coduri mai puternice capabile sa reprezinte documente scrise intr-o varietate de limbaje. Ele utilizeaza sabloane (modele) pe 16 biti (65.536 sabloane diferite) sau chiar pe 32 biti (peste 17 milioane de sabloane). [Unicode, cod dezvoltat de I S O (International Standard Organisation).]
1.4.2. Reprezentarea valorilor numerice
Metodele de stocare a informatiilor sunt ineficiente atunci cand informatiile ce trebuie memorate sunt de natura numerica. Pentru intelegere, sa presupunem ca vrem sa stocam nr. 99 sub forma unor simboluri ASCII; sunt necesari 16 biti, dar observam ca acesta este cel mai mare numar stocabil pe 16 biti.
O abordare mult mai eficienta este stocarea valorii reprezentate in baza doi (binar).
In notatia binara (baza doi) pozitia fiecarei cifre este asociata cu o anumita pondere, numai ca ponderea asociata fiecarei pozitii este de doua ori mai mare decat ponderea pozitiei din dreapa. Mai exact, cifra cea mai din dreapta a unei reprezentari binare are asociata ponderea 1 (20), urmatoarea pozitie in stanga cu 2 (21) si asa mai departe.
cantitatea asociata pozitiei
| unu
zece
o suta
Fig. 1.5. Sistemul zecimal de numeratie
Reprezentare binara
cantitatea asociata pozitiei
unu
doi
patru
opt
Fig. 1.6. Sistemul binar de numeratie
Pentru a afla valoarea unei reprezentari in binar, vom inmulti valoarea fiecarei cifre cu ponderea asociata pozitiei sale si vom aduna rezultatele.
1 x unu = 1
0 x doi = 0
1 x patru = 4
0 x opt = 0
0 x saisprezece = 0
1 x treizeci si doi = 32
Fig. 1.7. Decodificarea reprezentarii binare 100101
Pentru a afla reprezentarea in binar exista un algoritm clasic.
Pasul 1. Se imparte valoarea la doi si se memoreaza restul.
Pasul 2. Cat timp catul obtinut difera de zero, se continua impartirea noului cat la doi, memorandu-se restul.
Pasul 3. Cand s-a obtinut un cat egal cu zero, reprezentarea in binar a valorii initiale consta din resturile impartirilor afisate de la dreapta la stanga in ordinea in care au fost memorate.
Fig. 1.8. Algoritm pentru aflarea reprezentarii in binar a unui numar intreg
rest 1
↓
rest 0
↓
rest 1
rest 1
1 1 0 1 Reprezentarea in binar
Fig. 1.9. Reprezentarea in binar a numarului treisprezece
1.4.3. Reprezentarea altor tipuri de date
Aplicatiile utilizate in informatica implica si folosirea de imagini, sunete, secvente video. Tehnicile pentru reprezentarea acestor categorii de date nu sunt inca global standardizate la nivel mondial.
Una din metodele utilizate pentru stocarea imaginilor este considerarea imaginii ca o colectie (suma) de puncte (pixel ↔ picture element).
In forma cea mai simpla, o imagine alb-negru poate fi codificata ca un lung sir de biti ce reprezinta liniile de pixeli, unde fiecare bit are valoarea 1 sau 0, functie de culoarea alb sau negru.
Reprezentarile de acest tip sunt cunoscute sub numele de harti de biti (bit maps), deci sirul de biti nu este altceva decat o harta a imaginii reprezentate.
Sistemele 'populare' de harti de biti includ fisiere de tip T I F F (Tag Image Format File) si G I F (Graphic Interchange Format). Fotografiile sunt prezentate ca harti de biti prin fisiere in format JPEG (Joint Photographic Experts Group).
In cadrul acestor reprezentari acestor fisier imaginea nu poate fi scalata la o dimensiune arbitrara.
Exista posibilitatea scalarii imaginii prin memorare ca un set de directive care precizeaza modul de desenare. Acest mod de precizare a modului de desenare furnizeaza o descriere compatibila cu orice marime a unitatilor sistemului de coordonate care ar putea fi specificat atunci cand se afiseaza imaginea.
De asemenea, tot metode de reprezentare a datelor sunt si MPEG (Motion Picture Experts Group) - tehnica pentru date video si audio, si D X F (Drowing Interchange Format) - utilizat la sisteme de proiectare asistata de calculator, unde imaginile trebuie rotite si redimensionate pe ecranul monitorului.
1.5.- Sistemul binar de numeratie
Pentru studierea tehnicilor de stocare a valorilor numerice utilizate la calculatoarele de astazi, trebuie mai intai cunoscut sistemul de reprezentare binar.
1.5.1. Adunarea in binar
Pentru a aduna doua valori reprezentate in notatia binara, se procedeaza astfel:
Se aduna cifrele din coloana cea mai din dreapta, se scrie cifra cea mai putin semnificativa a acestei sume sub coloana, se transporta cea mai semnificativa cifra a sumei (daca exista) in urmatoarea coloana din stanga si se aduna apoi coloana respectiva.
Exemplu : 0 0 1 1 1 0 1 0
+ 0 0 0 1 1 0 1 1
Se aduna cifrele cele mai din dreapta 0 si 1 si obtinem cifra 1, pe care o scriem sub coloana respectiva.
0 0 1 1 1 0 1 0
+ 0 0 0 1 1 0 1 1
1
Se aduna apoi 1 si 1 din coloana urmatoare, obtinand rezultatul 10. Vom scrie 0 sub coloana si vom transfera cifra 1 deasupra coloanei urmatoare.
1
0 0 1 1 1 0 1 0
+ 0 0 0 1 1 0 1 1
1 0 1
Se aduna cifrele 1, 0 si 0 din coloana urmatoare, obtinand rezultatul 1, si vom scrie 1 sub coloana.
Cifrele din coloana urmatoare 1 si 1 dau ca rezultat al adunarii 10; se va scrie cifra 0 sub coloana respectiva si vom transfera cifra 1 deasupra coloanei urmatoare.
1
0 0 1 1 1 0 1 0
+ 0 0 0 1 1 0 1 1
0 1 0 1
Adunam cifrele 1, 1 si 1 din aceasta coloana si obtinem 11; se va scrie cifra 1 sub coloana respectiva si vom transfera cifra 1 deasupra coloanei urmatoare.
1
0 0 1 1 1 0 1 0
+ 0 0 0 1 1 0 1 1
1 0 1 0 1
Se va continua in acelasi fel, obtinand in final:
0 0 1 1 1 0 1 0
+ 0 0 0 1 1 0 1 1
0 1 0 1 0 1 0 1
1.5.2. Reprezentarea fractiilor in sistemul binar
Pentru extinderea notatiei binare, pentru a fi adecvata reprezentarii valorilor fractionare, se va utiliza notatia in virgula fixa (radix point). Aceasta inseamna ca cifrele de la stanga virgulei mobile (punctului) reprezinta partea intreaga a valorii si sunt interpretate ca in sistemul binar, iar cifrele din dreapta punctului reprezinta partea fractionara a valorii si sunt interpretate intr-o maniera similara, pozitiile lor avand asociate ponderi fractionare.
Astfel prima pozitie din dreapta punctului are atribuita ponderea 1/2, urmatoarea 1/4, apoi 1/8 si asa mai departe. Rezulta ca regula aplicata anterior ramane valabila, fiecare pozitie are o pondere alocata de doua ori mai mare decat cea a pozitiei din dreapta sa.
Exemplu
1 x o optime = 1/8
0 x o patrime = 0
1 x o jumatate = 1/2
1 x unu = 1
0 x doi = 0
1 x patru = 4
TOTAL : 55/8
Fig. 1.10. Decodificarea reprezentarii binare 101 . 101
Pentru a aduna doua reprezentari binare in virgula fixa, se vor alinia unul sub altul punctele de separare intre partea intreaga si cea fractionara si se va aplica acelasi proces de adunare ca si cel prezentat anterior.
Exemplu
1 0 . 0 1 1
+ 1 0 0 . 1 1
1 1 1 . 0 0 1
1.6.- Stocarea numerelor intregi
Adesea avem nevoie sa memoram atat valori pozitive cat si valori negative, deci este nevoie de un sistem de notare care sa reprezinte ambele categorii de numere (pozitive si negative).
Sistemele de notatie pentru reprezentarea ambelor categorii de numere pot folosi circuite electronice realizate si utilizate pe scara larga in cadrul echipamentelor de calcul.
Vom prezenta in continuare doua astfel de sisteme de notatie: notatia in exces (excess notation) si notatia in complement fata de doi (two's complement notation).
1.6.1. Notatia in exces
Valorile din sistemul de reprezentare in exces sunt codificate utilizand cuvinte binare de aceeasi lungime.
Pentru realizarea unui sistem de notatie in exces se stabileste mai intai lungimea cuvintelor binare utilizate, apoi scriem una sub alta toate combinatiile posibile in ordinea in care ar aparea daca am numara in binar.
In aceasta insiruire observam ca primul cuvant binar care are pe pozitia bitului cel mai semnificativ valoarea 1 survine aproximativ la jumatatea listei.
- Se va considera ca acest model reprezinta valoarea 0.
- Cuvintele binare care urmeaza reprezinta valorile 1, 2, 3,
- Cuvintele binare care-l preced sunt utilizate pentru codificarea valorilor negative -1, -2, -3,
Cuvant Valoarea
binar reprezentata
1110 6
1101 5
1100 4
1011 3
1010 2
1001 1
1000 0
0111 -1
0110 -2
0101 -3
0100 -4
0011 -5
0010 -6
0001 -7
0000 -8
Fig. 1.11. Tabel conversie pentru sistemul de notatie in exces cu opt
Cuvant Valoarea
binar reprezentata
111 3
110 2
101 1
100 0
011 -1
010 -2
001 -3
000 -4
Fig. 1.12. Sistemul de notatie in exces care utilizeaza cuvinte cu lungimea de trei biti
1.6.2. Notatia in complement fata de doi
Cel mai folosit sistem de reprezentare a numerelor intregi in informatica este notatia in complement fata de doi (two's complement notation). Acest sistem utilizeaza un numar fix de biti pentru reprezentarea valorilor din cadrul sistemului. In figurile 1.13.1 si 1.13.2. sunt prezentate sistemele in complement fata de doi bazate pe cuvinte de cod cu lungimea de trei si patru. Pentru constructia unui astfel de sistem se incepe cu un sir de biti cu valoarea 0 de lungime adecvata si apoi se numara in binar pana cand se ajunge la un sir de biti care incepe cu un bit 0, iar toti ceilalti biti sunt 1. Cuvintele obtinute astfel reprezinta valorile 0, 1, 2, 3,
Utilizand cuvinte binare de lungime trei biti
Cuvant Valoarea
binar reprezentata
0
-1
110 -2
-3
-4
Fig. 1. 13.1. Sisteme de notatie in complement fata de doi
Utilizand cuvinte binare de lungime patru biti
Cuvant Valoarea Cuvant Valoarea
binar reprezentata binar reprezentata
7 1111 -1
6 1110 -2
5 1101 -3
4 1100 -4
3 1011 -5
2 1010 -6
1 1001 -7
0 1000 -8
Fig. 1.13.2. Sisteme de notatie in complement fata de doi
Cuvintele care reprezinta valorile negative se obtin incepand cu un sir de biti cu valoarea 1 si numarul in sens descrescator, pana la atingerea cuvantului care incepe cu un bit 1 si are toti ceilalti biti 0. Cuvintele astfel obtinute reprezinta valorile -1, -2, -3,
Se observa ca bitul de semn, in notatia in complement fata de doi, este 1 pentru valorile negative si 0 pentru valorile pozitive.
Complementul unui cuvant binar este cuvantul obtinut prin schimbarea tuturor bitilor de 1 in valoarea 0, respectiv a tuturor bitilor 0 in 1; cuvantul 0110 este complementul lui 1001 si invers.
In sistemul de codificare in complement fata de doi pe 4 biti din figura 1.13.2., cuvintele care reprezinta valorile 2 si -2 se termina amandoua in 10, cuvantul corespunzator valorii 1 incepe cu 00, iar reprezentarea valorii -2 incepe cu 11.
Aceasta observatie conduce la realizarea unui algoritm care sa permita obtinerea reprezentarii binare pentru valori de semne contrare, dar care au acelasi modul.
Vom copia cuvantul original incepand de la dreapta pana dupa aparitia unui bit cu valoarea 1, apoi vom face complementul bitilor ramasi (vom schimba toti bitii 1 ramasi in 0 si toti bitii 0 in 1) pe masura ce-i copiem.
Notatia valorii 6
1 1 0
| | |
| | | |
| | | |
| | | |
| | | |
| | | |
fata de doi cu Se copiaza bitii de la
utilizarea a patru dreapta la stanga pana
biti cand s-a copiat un bit c cu valoarea 1
Notatia valorii -6 Se completeaza biti ramasi
in complement
fata de doi cu
utilizarea a patru
biti
Fig. 1.14. Codificarea valorii -6 in complement fata de doi utilizand 4 biti
Aceste proprietati elementare ale sistemelor in complement fata de doi conduc la obtinerea unui algoritm pentru decodificarea reprezentarilor in complement fata de doi.
Daca modelul (sablonul) ce trebuie decodificat are bitul de semn 0, se va citi direct valoarea ca si cum cuvantul ar fi o reprezentare binara (ex. 0110 reprezinta valoarea binara 110, adica 6). Daca sablonul care trebuie decodificat are bitul de semn 1, se va intelege ca valoarea reprezentata este negativa si trebuie gasit modulul acestei valori. Modulul cautat se va determina copiind cuvantul original de la dreapta la stanga, pana la primul bit egal cu 1 (inclusiv acesta), apoi vom complementa bitii ramasi si ii vom scrie in continuare tot de la dreapta la stanga (langa bitii deja copiati), iar in final vom decodifica cuvantul obtinut ca si cand ar fi o reprezentare binara normala (ex. decodificam 1010; bitul de semn este 1, deci valoarea numarului este negativa; convertim cuvantul si obtinem 0110, ceea ce corespunde valorii 6, deci sablonul original reprezinta valoarea -6).
1.6.3. Adunarea numerelor reprezentate in complement fata de doi
Pentru adunarea valorilor reprezentate in complement fata de doi se aplica acelasi algoritm ca si pentru adunarea in binar, cu exceptia faptului ca toate cuvintele binare, inclusiv rezultatul, au aceasi lungime. Altfel spus, la adunarea in complement fata de doi, orice bit suplimentar generat la stanga raspunsului de catre un transport final va fi eliminat.
De exemplu: 0 1 0 1 0 1 1 1
0 0 1 0 1 0 1 1
0 1 1 1 0 0 1 0
Acceptand aceasta conventie, sa consideram urmatoarele trei probleme de adunare:
3 0 0 1 1 (-3) 1 1 0 1
+2 +0 0 1 0 + (-2) + 1 1 1 0
0 1 0 1 5 1 0 1 1 -5
7 0 1 1 1
+(-5) +1 0 1 1
0 0 1 0 2
Fig. 1.15.Probleme de adunare utilizand notatia in complement fata de 2
In fiecare caz in parte, vom codifica valorile utilizand notatia in complement fata de doi (pe patru biti), vom efectua adunarea procedand asa cum s-a descris anterior si vom decodifica rezultatul inapoi la notatia zecimala.
Se observa ca, prin trecerea la notatia in complement fata de doi, putem calcula raspunsul corect aplicand in toate cazurile acelasi algoritm de adunare. Daca am folosi tehnicile uzuale, a treia problema ar fi de fapt un proces complet diferit de primele doua; este vorba de operatia de scadere.
Deci, in calculatorul care utilizeaza notatia in complement fata de doi se realizeaza numai adunare si negarea bitilor.
In consecinta, daca in calculator se doreste scaderea lui 5 (0101) din 7 (0111), mai intai va fi schimbat in -5 (1011) si apoi se va efectua adunarea 0111 + 1011 = 0010, ceea ce reprezinta valoarea 2.
In ceea ce priveste inmultirea, ea este o adunare repetata, iar impartirea o scadere repetata (ex. 6:2 reprezinta de fapt de cate ori poate fi scazut 2 din 6 fara sa se obtina un rezultat negativ).
Astfel putem efectua toate cele patru operatii aritmetice standard (adunarea, scaderea, inmultirea si impartirea) utilizand un circuit pentru adunare combinat cu un circuit pentru negarea unei valori.
1.6.4. Problema depasirii superioare
In oricare din sistemele de numeratie pe care le-am prezentat exista o limita privind marimea pe care pot sa o reprezinte valoric.
La utilizarea notatiei in complement fata de doi cu cuvinte de patru biti, valoarea 9 nu are asociat un model (sablon), deci nu putem efectua corect adunarea 5+4.
O problema similara apare la utilizarea de cuvinte de cinci biti;de ex. sa incercam sa reprezentam valoarea 17, apar erori. Aceste erori se numesc depasiri superioare (overflow).
Depasirea superioara, la utilizarea notatiei in complement fata de doi, poate apare la adunarea a doua valori negative sau pozitive.
Depasirea poate fi detectata prin verificarea bitului de semn al raspunsului. Altfel spus, daca rezultatul adunarii a doua valori pozitive/ negative apare ca fiind negativ/pozitiv, este semnalata depasirea superioara.
Deoarece calculatorul manipuleaza cuvinte mult mai lungi decat cele precizate mai sus (3 biti/4 biti), valorile mari pot fi prelucrate fara sa apara o valoare de depasire (de exemplu, pentru calculatoarele care utilizeaza cuvinte de 32 de biti pentru stocare, in notatia in complement fata de doi, este posibil lucrul cu valori de pana la 2.147.483.647, fara aparitia depasirii superioare).
Daca sunt necesare valori si mai mari, se foloseste metoda denumita dubla precizie (double precision). Aceasta metoda permite ca lungimea cuvintelor utilizate sa fie marita fata de cea utilizata de obicei de catre calculator.
Exista si alte solutii, cum ar fi schimbarea unitatii de masura cu pastrarea preciziei impuse.
1.7.- Stocarea numerelor fractionare
In acest caz trebuie memorata si pozitia virgulei zecimale nu numai modelele (sabloanele) de 0 si 1.
Metoda uzuala pentru a face acest lucru se numeste notatia in virgula mobila (floating point notation).
1.7.1. Notatia in virgula mobila
Vom explica notatia in virgula mobila printr-un exemplu care utilizeaza numai un octet pentru efectuarea stocarii.
Cel mai semnificativ bit din cadrul octetului este bitul de semn. Daca bitul de semn este 0, valoarea stocata este pozitiva; iar daca este 1, valoarea stocata este negativa. Impartim cei sapte biti ramasi in doua grupuri/campuri: campul exponentului (exponent field) si campul mantisei (mantissa fied). Consideram trei biti, care urmeaza dupa bitul de semn, ca fiind campul exponentului, iar cei patru biti ramasi ca fiind campul mantisei :
Camp - - - - - - - - -
bitul de semn
exponent
mantisa
Fig. 1.16. Elemente ale notatiei in virgula mobila
Se poate explica semnificatia acestor campuri considerand urmatorul exemplu. Octetul contine sirul de biti 01101011.
Deci, bitul de semn = 0, exponentul = 110, mantisa = 1011.
Pentru a decodifica octetul, extragem mai intai mantisa si plasam in stanga ei o virgula zecimala, obtinand .1011.
Extragem apoi continutul campului exponentului (110) si-l interpretam ca pe un intreg stocat utilizand metode in exces pe trei biti, in cazul nostru reprezinta valoarea pozitiva 2. Acest fapt ne precizeaza ca trebuie sa mutam virgula la dreapta cu doi biti (un exponent negativ inseamna ca virgula trebuie deplasata la stanga). In cazul nostru obtinem : 10 . 11 ceea ce inseamna 23/4.
Observam ca bitul de semn din exemplul considerat este 0, deci valoarea reprezentata este pozitiva. Vom trage concluzia ca 01101011 reprezinta valoarea 23/4.
Pentru a stoca o valoare utilizand notatia in virgula mobila, vom proceda in sens invers decat in prezentarea de mai sus. De exemplu, pentru a codifica valoarea 11/8, o vom exprima mai intai in notatia binara 1.001 vom copia apoi cuvantul binar in campul rezervat mantisei de la stanga la dreapta, incepand cu primul bit diferit de zero din reprezentarea binara.
Octetul arata astfel :
- - - - - - - -
Acum trebuie completat campul exponentului. Ne imaginam continutul campului mantisei avand o virgula zecimala la stanga si vom determina numarul de biti si directia in care trebuie sa fie deplasata virgula pentru a se obtine numarul binar initial.
In exemplul nostru, observam ca virgula din .1001 trebuie deplasata cu un bit la dreapta pentru a obtine 1.001. Din aceasta cauza, exponentul trebuie sa aiba valoarea pozitiva 1; vom plasa combinatia 101 (care este reprezentarea valorii pozitive 1, in exces cu patru) in campul exponentului:
- - - - - - - -
exponent
In final vom inscrie 0 in bitul de semn, deoarece valoarea stocata este pozitiva; la sfarsit octetul arata astfel :
0 1 0 1 1 0 0 1
semn
1.7.2. Erori de rotunjire
Sa studiem incercarea stocarii valorii 25/8 utilizand sistemul in virgula mobila pe un octet (prezentat anterior). Scriem mai intai valoarea 25/8 in binar : 10.101
La copierea acestui rezultat in campul mantisei, vom descoperi ca nu avem suficient spatiu si, ca urmare, ultimul 1 (cel care orespunde ultimului 1/8) se va pierde.
25/8
↓
1 0 . 1 0 1
1 0 1 0
bit - - - - - - - - bit pierdut
semn
exponent
mantisa
Fig. 1.17. Codificarea valorii 25/8
Daca ignoram aceasta problema si continuam completarea campului exponentului si a bitului de semn, obtinem cuvantul:
1 1 0 1 0 1 0
bit de exponentul 2 pentru notatia in exces
semn pentru exprimare pe 4 biti
Acest cuvant insa reprezinta valoarea 21/2.
Ceea ce s-a intamplat poarta numele de eroare de rotunjire {round - off error), cauzata in acest caz de lungimea prea mica a campului de primire a mantisei.
Solutia pentru rezolvarea acestei probleme este cresterea dimensiunii campului mantisei, ceea ce se intampla in cazul calculatoarelor reale.De obicei, pentru stocarea valorilor in virgula mobila se utilizeaza cel putin 32 biti; daca nici in acest mod nu se rezolva problema, se poate aplica conceptul de dubla precizie.
1.8.- Erori de comunicatie
La transferarea informatiilor intre diverse componente ale calculatorului sau in cazul stocarii datelor, exista posibilitatea ca sirul de biti primit inapoi sa nu fie identic cu cel original.
Pentru rezolvarea unor asemenea probleme, au fost dezvoltate diferite tehnici de codificare care permit detectarea si corectarea erorilor. In prezent, datorita faptului ca aceste tehnici de codificare sunt implementate pe scara larga in componentele inteme ale sistemelor de calcul, ele sunt invizibile pentru cei care utilizeaza calculatoarele, dar pe ele se bazeaza fiabilitatea echipamentelor actuale.
1.8.1. Biti de paritate
O metoda simpla pentru detectarea erorilor se bazeaza pe urmatoarea regula : daca fiecare cuvant binar manipulat are un numar impar de biti de 1, aparitia unui cuvant cu un numar par de biti de 1 semnaleaza o eroare. Pentru a folosi aceasta regula, avem nevoie de un sistem in care fiecare cuvant binar sa contina un numar impar de biti 1, ceea ce se obtine usor prin adaugarea unui bit suplimentar, bitul de paritate (parity bit).
Bitul de paritate se plaseaza pe pozitia bitului cel mai semnificativ, deci codul de opt biti devine un cod de noua biti.
Bitul de paritate va lua valoare 0 sau 1, astfel incat cuvantul rezultat sa aibe un numar impar de 1.
Bit de Codul A S C I I pentru litera A
paritate contine un numar par de biti 1
- - - - - - - - -
Cuvantul complet are un numar impar de biti.
Bit de Codul A S C I I pentru litera I
paritate contine un numar impar de biti 1
- - - - - - - - -
Cuvantul complet are un numar impar de biti.
Fig. 1.18. Modificarea codurilor ASCII pentru caracterele A si I, astfel
incat sa aibe paritatea impara
Dupa aceasta modificare ( precizata in figura de mai sus pentru caracterele A si I ), ambele cuvinte vor avea noua biti si contin un numar impar de biti 1. Dupa aceasta modificare a sistemului de codificare, un cuvant cu un numar par de biti 1 semnaleaza faptul ca s-a produs o eroare si deci cuvantul respectiv este incorect. Sistemul de paritate descris poarta numele de paritate impara (odd parity), deoarece fiecare cuvant contine un numar impar de biti 1.
O alta tehnica utilizeaza paritatea para (even parity). In aceasta tehnica, fiecare cuvant trebuie sa contina un numar par de biti 1, iar prezenta unei erori este semnalata de aparitia unui cuvant cu un numar impar de biti 1. Sirurile lungi de biti sunt insotite adesea de un grup de biti de paritate dispusi intr-un octet de control (checkbyte).
Printre variantele principiului de verificare cu octet de control, se numara schemele de detectie a erorilor numite semne de control (checksums) si control de coduri ciclice (cyclic redundancy check - CRC).
1.8.2. Coduri corectoare de erori
Bitul de paritate permite detectarea unei erori singulare, dar nu furnizeaza informatia necesara pentru corectarea erorii.
Pot fi, insa, concepute coduri corectoare de erori (error corecting codes) care nu numai ca detecteaza erorile, dar le si corecteaza.
Intuitiv, se poate crede ca nu poate fi corectata informatia dintr-un mesaj, decat daca se cunoaste informatia continuta de mesaj.Contrarul acestei afirmatii se va demonstra in continuare.
Pentru a intelege modul de functionare a codului corector de erori, vom defini distanta Hemming dintre doua numere binare.
Distanta Hemming intre doua numere binare este numarul de biti prin care difera cele doua cuvinte.
Simbol C o d
A 0 0 0 0 0 0
B 0 0 1 1 1 1
C 0 1 0 0 1 1
D 0 1 1 1 0 0
E 1 0 0 1 1 0
F 1 0 1 0 0 1
G 1 1 0 1 0 1
H 1 1 1 0 1 0
Fig. 1.19. Exemplu de cod corector de erori
Exemplu: in figura de mai sus, distanta Hemming dintre simbolurile A si B in codul prezentat este patru, dintre B si C este trei.
Caracteristica importanta a codului prezentat este ca oricare doua cuvinte de cod sunt separate de o distanta Hemming de cel putin trei biti. Altfel spus, trebuie sa modificam cel putin patru biti in cod pentru a apare un alt cuvant din lista propusa de coduri.
Sa presupunem ca receptionam 010100. Daca comparam acest cuvant binar cu lista de coduri propusa in fig. 1.19, obtinem distantele din figura 1.20
Vom putea trage concluzia ca a fost transmis caracterul D, acesta fiind cel mai apropiat de codul receptionat.
Cu cat distanta Hemming dintre doua coduri utilizate este mai mare, cu atat de pot detecta si corecta mai multe erori.
Caracter Distanta dintre cuvantul receptionat
si caracterele codului propus
A 2
B 4
C 3
D 1
E 3
F 5
G 2
H 4
Fig. 1.20. Decodificarea cuvantului 010100 utilizand codul din fig. 1.19
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1662
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved