|
Activitatea principala a calculatorului, dupa cum o arata insusi numele sau, este aceea de a efectua calcule. Cu toate acestea, orice persoana care a lucrat cel putin o data cu un calculator intelege imediat ca o asemenea caracterizare este cu totul insuficienta pentru a descrie sarcinile indeplinite de acesta. Intr-adevar, este greu de acceptat ca semnificatia unui program de grafica, de exemplu, s-ar reduce la niste simple calcule, desi aceste calcule au un rol cu adevarat foarte important. Intr-o acceptiune mai generala, putem spune ca functionarea unui calculator are ca principal obiectiv prelucrarea informatiei. Pentru a intelege modul in care este tratata informatia, vom vedea mai intai cum este ea reprezentata intr-un calculator.
Cea mai mica unitate de informatie folosita este bitul. Fara a intra in detalii, putem spune ca un bit reprezinta o entitate, teoretica sau materiala, care are doua stari distincte posibile; evident, la un moment dat entitatea se poate afla intr-una singura din cele doua stari. Observam deci ca prin termenul de bit sunt desemnate atat conceptul teoretic, cat si implementarile sale fizice.
Au existat mai multe forme de implementare practica a bitilor. Cele mai eficiente solutii s-au dovedit a fi cele bazate pe circulatia curentului electric, acestea prezentand avantajul unei viteze de operare mult mai mare decat in cazul sistemelor mecanice sau de alta natura. In circuitele electrice, cele doua stari care definesc un bit sunt usor de definit: putem asocia una dintre stari cu situatia in care curentul electric strabate o portiune de circuit, iar cealalta stare cu situatia in care curentul nu parcurge aceeasi portiune de circuit. (In practica, electronistii prefera sa discute despre cele doua stari in termenii nivelelor de tensiune din circuit, dar ideea este de fapt aceeasi). In timp au fost folosite dispozitive tot mai sofisticate, pornind de la comutatoare, coutinuand cu releele si diodele si ajungandu-se astazi la utilizarea tranzistorilor. Toate insa se bazeaza pe acelasi principiu: permiterea trecerii curentului electric sau blocarea sa.
Intrucat, asa cum am vazut mai sus, obiectivul urmarit este de a obtine circuite care sa permita efectuarea de calcule, este necesar ca bitii sa primeasca o semnificatie numerica. Prin conventie, celor doua stari ale unui bit le sunt asociate valorile 0 si respectiv 1. In acest mod, putem considera ca lucram de fapt cu cifre in baza 2, iar calculele devin posibile.
O prima consecinta a acestei abordari o constituie necesitatea gruparii bitilor. Intr-adevar, o singura cifra, mai ales in baza 2, contine prea putina informatie pentru a fi utila. Deoarece in scrierea pozitionala numerele sunt siruri de cifre, apare imediat ideea de a reprezenta numerele prin siruri de biti. Desi pentru om lucrul in baza 2 pare mai dificil, datorita obisnuintei de a lucra in baza 10, in realitate nu exista diferente conceptuale majore intre diferitele baze de numeratie.
(Putem raspunde aici unei intrebari care apare natural: de ce se prefera utilizarea bitilor, deci implicit a cifrelor in baza 2, daca omul prefera baza 10? Raspunsul este de natura tehnologica: nu exista o modalitate simpla de a realiza un dispozitiv cu 10 stari distincte, care sa permita implementarea cifrelor in baza 10.)
Pe de alta parte, intr-un sistem de calcul trebuie sa existe o standardizare a dimensiunii sirurilor de biti prin care sunt reprezentate numerele. Creierul uman se poate adapta pentru a aduna, de exemplu, un numar de 3 cifre cu unul de 6 cifre, iar apoi poate trece imediat la adunarea unui numar de 8 cifre cu unul de 9 cifre; un calculator insa, fiind format din circuite fara inteligenta, nu poate fi atat de flexibil. Solutia este de a permite ca sirurile de biti sa aiba numai anumite dimensiuni prestabilite. Astfel, circuitele din calculator se pot intelege intre ele, deoarece lucreaza cu operanzi de aceeasi dimensiune. Ajungem astfel la o alta unitate de informatie larg folosita, si anume octetul (in engleza byte). Acesta reprezinta un sir de 8 biti si se constituie intr-un standard unanim respectat. Un octet poate avea 28 = 256 valori diferite, ceea ce este evident insuficient pentru unele tipuri de informatie vehiculate in calculator. Pentru a nu pierde avantajele standardizarii, se permite ca operanzii sa aiba si dimensiuni mai mari, dar numai multipli de dimensiunea octetului; mai mult, acesti multipli pot fi doar puteri ale lui 2. In functie de stadiile pe care le-a parcurs tehnologia de-a lungul timpului, dimensiunea maxima a operanzilor a fost de 16, 32 sau 64 biti (respectiv 2, 4 sau 8 octeti) si fara indoiala va continua sa creasca. Aceasta dimensiune poarta denumirea de cuvant.
Dimensiunea unui circuit de memorie sau a unui disc hard este mult mai mare decat un octet. Pentru a putea exprima aceste dimensiuni s-au introdus denumiri pentru multipli, intr-un mod similar celui din lumea stiintifica. Reamintim ca prefixul kilo- (reprezentat prin simbolul K) desemneaza un multiplu egal cu 1000=103. In informatica se prefera exprimarea multiplilor in baza 2, care este cea utilizata in toate situatiile. Astfel, prefixul kilo- are aici valoarea 210=1024, care este foarte apropiata de 1000. Un kilooctet (sau kilobyte) se noteaza deci Ko (sau KB). Analog se definesc si ceilalti multipli: mega- (1Mo=220 octeti), giga- (1Go=230 octeti), tera- (1To=240 octeti). Pot fi definiti si multipli cu ordine de marime superioare, dar pe moment practica nu face necesara utilizarea lor. Dupa cum era de asteptat, nu se definesc submultipli, care nu ar avea sens.
Facem observatia ca, spre deosebire de notiunea de bit, a carei definire are o solida baza teoretica, octetul este doar un standard impus de practica. Nu exista nici un motiv conceptual pentru a considera ca dimensiunea de 8 biti este speciala. Pur si simplu, la un moment dat in trecut s-a considerat ca aceasta dimensiune corespundea necesitatilor practice din acea vreme. O data impus un standard pe scara larga, inlocuirea sa devine foarte dificila. In plus, in acest caz, daca dimensiunea 8 nu este neaparat mai 'buna' decat alte variante, ea nu este nici mai 'rea', deci o eventuala schimbare a standardului nu ar aduce nici un castig. Alegerea unuia dintre multiplii octetului ca standard nu ar reprezenta decat o solutie temporara, intrucat si noua dimensiune ar deveni curand prea mica si ar fi necesara utilizarea de multipli.
O problema importanta provine din modul de implementare al bitilor. Dat fiind ca valoarea unui bit este materializata in practica de o valoare de tensiune, devine clar ca pana si operatiile aritmetice cele mai simple, cum ar fi adunarea sau scaderea, nu au sens intr-un circuit electric. Cu alte cuvinte, desi avem posibilitatea fizica de a reprezenta numerele, trebuie sa putem realiza si operatiile dorite.
Solutia a fost gasita in lucrarile matematicianului englez George Boole. In jurul anului 1850 (deci mult inainte de aparitia calculatoarelor), acesta a realizat ca probleme matematice complexe pot fi rezolvate prin reducere la o serie de raspunsuri de tipul 'adevarat'/'fals'. Astfel, el a elaborat o teorie, numita logica Boole (sau logica booleana), care lucreaza cu aceste doua valori. Se observa imediat analogia cu notiunea de bit, care permite tot doua valori. Daca, de exemplu, asociem valoarea 'adevarat' din logica Boole cu cifra binara 1 si valoarea 'fals' cu cifra 0 (de altfel se poate si invers), rezultatele logicii booleene pot fi folosite direct in sistemele de calcul.
Logica Boole defineste un set de operatii elementare (NOT, AND, OR etc.), cu ajutorul carora poate fi descrisa orice functie. Din fericire, aceste operatii elementare ale logicii Boole pot fi usor implementate cu ajutorul tranzistorilor. Ca urmare, adunarea, scaderea si celelalte operatii aritmetice, care sunt in fond niste functii matematice ca oricare altele, pot fi la randul lor realizate practic. In concluzie, desi obisnuim sa spunem ca un calculator lucreaza doar cu numere, in realitate el lucreaza cu siruri de biti, asupra carora aplica o serie de prelucrari, pe care noi le numim adunare, inmultire etc.; pentru circuitele din calculator, aceste operatii nu au o semnificatie speciala, ci sunt niste functii oarecare.
Pe baza conceptelor prezentate mai sus sunt create circuite din ce in ce mai complexe, capabile sa indeplineasca sarcini tot mai dificile. Aceste circuite formeaza in cele din urma sistemul de calcul.