Sunteți pe pagina 1din 96

Grigore ALBEANU

ARHITECTURA SISTEMELOR DE CALCUL

Descrierea CIP a Bibliotecii Naionale a Romniei ALBEANU, GRIGORE Arhitectura sistemelor de calcul / Grigore Albeanu Bucureti, Editura Fundaiei Romnia de Mine, 2007 96p.; 23,5 cm. Bibliogr. ISBN 978-973-725-756-7 004.2(075.8)

Editura Fundaiei Romnia de Mine, 2007

UNIVERSITATEA SPIRU HARET


FACULTATEA DE MATEMATIC-INFORMATIC

Grigore ALBEANU

ARHITECTURA SISTEMELOR DE CALCUL

EDITURA FUNDAIEI ROMNIA DE MINE Bucureti, 2007

CUPRINS

Cuvnt nainte . 1. Bazele aritmetice ale sistemelor de calcul ... 1.1. Sisteme de numeraie ... 1.2. Coduri .. 1.3. Reprezentarea numerelor ntregi . 1.4. Reprezentarea IEEE 754 .. 1.5. Exerciii ... 2. Bazele logice ale sistemelor de calcul .. 2.1. Latici i algebre Boole . 2.2. Funcii booleene. Forme normale 2.3. Aplicaii ... 2.4. Exerciii ... 3. Structura sistemelor de calcul . 3.1. Resursele fizice ale sistemelor de calcul . 3.1.1. Generaii de calculatoare ... 3.1.2. Procesor. Caracteristici. Set de instruciuni ... 3.1.3. Memorii . 3.1.4. Dispozitive periferice 3.1.5. Viteza de procesare 3.1.6. Clasificarea sistemelor de calcul ... 3.1.7. Modelarea sistemelor digitale 3.2. Resursele logice ale sistemelor de calcul 3.2.1. Introducere n sisteme de operare .. 3.2.2. Iniiere n utilizarea sistemelor de calcul bazate pe UNIX 3.2.3.Iniiere n utilizarea PC/Windows .. 3.2.4. Resurse logice privind programarea calculatoarelor . 3.3. Exerciii ...

7 9 9 15 17 19 22 25 25 28 31 33 35 35 35 37 39 41 48 50 54 57 57 59 65 68 70

4. Calculatorul MMIX . 75 4.1. Instruciunile calculatorului MMIX . 75 4.2. Programarea calculatorului MMIX . 88 4.3. Exerciii ... 93 Bibliografie .
5

95

CUVANT NAINTE

Sistemele de calcul au evoluat continuu, iar aceast evoluie continu s ne uimeasc. Aceast lucrare ncearc s capteze att bazele matematice ale sistemelor de calcul (utile oricrui programator), ct i s prezinte o radiografie a principalelor concepte interesante att pentru utilizatori ct i pentru programatori. Primele dou capitole acord o importan major bazelor de numeraie i funciilor booleene deoarece orice utilizator/programator, mai devreme sau mai trziu, are nevoie de acele concepte i tehnici din largul evantai al bazelor aritmetice i logice ale sistemelor de calcul. Capitolul nti se ocup de modaliti de reprezentare a datelor n sistemele de calcul. Att pentru numere naturale, numere ntregi ct i pentru numere raionale, sistemul binar se impune. Programatorii au nevoie, ns, i de sistemele hexazecimal sau octal. Complementul fa de doi, reprezentarea IEEE 754 nu trebuie s lipseasc din pregtirea informaticienilor. Ele ne permit s nelegem tipurile de date cu care opereaz limbajele de programare (inclusiv cele care manipuleaz obiecte) precum i operaiile cu aceste date. Sistemele de calcul au fost proiectate, iniial, pentru calcule tiinifice. Ori, reprezentarea IEEE 754 este doar unul dintre modelele de reprezentare a numerelor reale. Prin urmare familiarizarea cu avantajele i dezavantajele acestei reprezentri, precum i cunoaterea implicaiilor utilizrii unei reprezentri discrete a numerelor reale n locul celei dense considerate de ctre matematicieni. De asemenea (n momentul actual), stabilirea culorilor n realizarea paginilor HTML necesit cunoaterea sistemului hexazecimal, iar cutarea de informaie folosind motorul Google necesit utilizarea cuvintelor AND, OR etc. (deci a operaiilor logice). Capitolul al doilea, aparent teoretic, are aplicaii majore n proiectarea sistemelor digitale i a optimizrii calculului. Dac dorim s programm eficient trebuie s simplificm expresiile logice, s nelegem modul de funcionare a unui sistem de calcul particular. Capitolul al treilea este doar pentru utilizatori, dar un programator are nevoie s cunoasc mult mai mult dect ofer prezentul material. Unii cititori pot spune c nu este nevoie de UNIX/Linux pentru c Windows (de la Microsoft) este sistemul de operare la care au acces n acest moment. Nici o problem! Mai devreme sau mai trziu vor avea ocazia s utilizeze i alte sisteme de calcul dect calculatoarele personale.

Acest capitol poate fi oricnd extins n funcie de noile tehnologii informaionale. Au fost introduse modurile de utilizare UNIX/Windows pentru
7

c acestea domin piaa actual. Experiena de utilizare / programare se poate


mbuntii numai prin exerciiu, prin experiment. Comenzile externe Windows pot fi studiate folosind Windows NT/2000/XP n mod text, iar comenzile UNIX prezentate pot fi experimentate cu orice versiune de Linux. Aceasta nu face ca cel care

parcurge materialul s nu se poat descurca i cu alte sisteme de calcul.


Calculatorul MMIX este, deocamdat, unul virtual. Dar cte experimente se pot face. Aici, cititorul va nelege, c nainte de a avea un calculator pentru asamblat, acesta este proiectat (funcionarea acestuia fiind simulat pe alte sisteme existente deja), simulat, fabricat, testat i apoi multiplicat (eventual n clone precum calculatoarele IBM/PC). Experiena cu MMIX permite cititorului s abordeze orice arhitectur de procesor, inclusiv arhitecturile MIPS/Intel/Motorola.

Ianuarie 2007

Autorul

1. BAZELE ARITMETICE ALE SISTEMELOR DE CALCUL


1.1. Sisteme de numeraie
Pentru prelucrarea datelor, omul lucreaz n sistemul de numeraie zecimal, folosind cele 10 simboluri: 0, 1, 2, ..., 9, numite cifre (eng. digits). Pentru domeniul sistemelor de calcul digitale 1 , cele mai importante sisteme de numeraie sunt: binar, octal i hexazecimal. Sistemul binar folosete baza de numeraie 2: 0 + 1 = 1 + 0 = 1; 0 + 0 = 0; 1 + 1 = (10)2 = 2 (n baza 10); 0 x 0 = 1 x 0 = 0 x 1 = 0, 1 x 1 = 1). Sistemul octal, cu baza opt, folosete simbolurile: 0, 1, ..., 7. Baza de numeraie a sistemului hexazecimal este 16, iar simbolurile folosite sunt: 0, 1, ..., 9, a, b, c, d, e, f. Se pot utiliza prin coresponden biunivoc - i simbolurile A, B, C, D, E, F cu semnificaia simbolurilor a, b, c, d, e, f. Datorit modului poziional, de lucru, indiferent de sistemul de numeraie utilizat, realizarea operaiilor aritmetice urmeaz acelai algoritm 2 . De exemplu, la adunare se face transport de la ordinul curent la ordinul imediat superior. Fie X = (xn-1 xn-2 x1 x0)b i Y = (yn-1 yn-2 y1 y0)b, operaia Z = X + Y produce n simboluri n baza b, Z = (zn-1 zn-2 z1 z0)b i un simbol T pentru transport (transportul iniial este 0). Algoritmul de calcul este: Algoritmul A1: T:= 0; Pentru k de la 0 la n-1 (cresctor cu pasul 1)se execut : S = xk +yk+T; Zk := S mod b (Restul mpririi lui S la b); T := S / b (Ctul mpririi lui S la b);
Un sistem de calcul (calculator) este o structur destinat prelucrrii datelor. El este alctuit din resurse fizice (hardware), resurse logice (software) i resurse informaionale (fiiere de configurare, registre de profil etc.) care coopereaz pentru satisfacerea cerinelor utilizatorilor privind introducerea, memorarea (stocarea), prelucrarea, transmiterea (ctre un alt sistem de calcul), precum i regsirea (prin interogare) datelor. Se face distincie ntre sistemele de calcul digitale (numerice) i sistemele de calcul analogice. 2 Un algoritm este o reet care descrie un proces de calcul i este asociat rezolvrii problemelor decidabile. 9
1

Procesul privind transformarea reprezentrilor exprimate n sisteme de numeraie se numete conversie. Referitor la sistemele de numeraie, descriem cteva metode de conversie i algoritmii de calcul corespunztori 3 . Codificarea unui numr real ntr-o baz de numeraie b (b 2), se bazeaz pe operaiile de mprire i nmulire aplicate numerelor ntregi. Pentru a converti un numr real format din parte ntreag i parte fracionar (x = [x]+{x}), din scrierea zecimal, n baza b (b 2), se procedeaz astfel: 1. se mparte (conform teoremei mpririi cu rest 4 ) la b, partea ntreag i cturile obinute dup fiecare mprire, pn se obine ctul zero. Rezultatul conversiei este constituit din resturile obinute, luate n ordine invers apariiei acestora. Algoritmul A2. Fie y un numr natural cruia i corespunde, n baza b, secvena (an-1,an, ,a1,a0)b, conform relaiei y =
n 1

a b
k =0 k

, Algoritmul

A2 descrie etapele prin care pornind cu y i b se obine lungimea n i simbolurile codului. Date de intrare: y, b Paii: k := 0; ak := y mod b; y := y / b; Ct timp y 0 se execut i) k := k + 1; ii) ak := y mod b; iii) y := y/b; n:=k+1; Ieire: n, (an-1,an, ,a1,a0)b.
Bazele de numeraie i vor dovedi utilitatea att n contextul programrii calculatoarelor (limbaj de asamblare, limbajul C, limbajul C++ etc.), ct i n contextul utilizrii calculatoarelor (de exemplu, la specificarea culorii textului cnd se realizeaz pagini Web: pentru culoarea avnd structura 40% rou, 20% verde i 40% albastru, se obine 40% din 255 = 102 = #66; 20% din 255 = 51 = #33, iar codul final al culorii se obine prin concatenare: #663366). 4 Teorema mpririi cu rest: dac a (demprit) i b (mpritor) sunt numere ntregi (b nenul), atunci exist i sunt unice numerele ntregi q (ctul) i r (restul), astfel nct a = b x q + r, 0 r < |b|, unde |b| reprezint modulul (valoarea absolut) a numrului b. 10
3

2. se nmulete cu b, partea fracionar 5 i toate prile fracionare obinute din produsul anterior, pn cnd partea fracionar este nul sau a fost obinut numrul de cifre dorit. Rezultatul conversiei prii fracionare este constituit din prile ntregi 6 ale produselor, luate n ordinea apariiei. Fie y (0, 1) i b (b 2) baza de numeraie astfel nct y =

a
k =1

b k , unde m este numrul poziiilor rezervate pentru

codificarea prii fracionare. Trebuie specificat c nu orice numr fracionar y are reprezentare pe m poziii. Algoritmul A3. Se pornete de la numrul fracionar y, baza b i un numr m_MAX care indic numrul maxim de poziii rezervate pentru partea fracionar. Numerele y care necesit mai mult de m_MAX poziii vor fi aproximate prin numrul rezultat din considerarea celor m_MAX poziii (folosind algoritmul A5). Date de intrare: y, b, m_MAX Paii: m = 1; a-m = [y*b]; y = y*b-a-m; Ct timp (m < m_Max) i (y 0) se execut: m := m+1; a-m := [y*b]; y = y*b - a-m; Ieire: m i reprezentarea 0,(a-1,a-2, ,a-m)b. Exemple. Conversia binar a numrului zecimal 24,25 este 11000,01. Numrul zecimal 2002,2003 este reprezentat n sistem octal cu 10 poziii n partea fracionar (b = 8) prin irul: 3722,1464011651. Numrul zecimal 1961,25 este reprezentat n format hexazecimal (b = 16) prin irul: 7A9,4. Pentru a transforma un ir de simboluri ale sistemului de numeraie n baza b (b 2), n zecimal, se va calcula suma produselor dintre cifra corespunztoare

Partea fracionar a unui numr real a, notat {a}, este diferen dintre numrul a i partea sa ntreag, notat [a], adic {a} = a [a]. 6 Conform principiului lui Arhimede, pentru orice numr real pozitiv x i pentru orice numr real a, exist un numr ntreg n, unic, astfel nct (n-1)x a < nx. Pentru x = 1, numrul ntreg n se numete partea ntreag a numrului a i se noteaz cu [a]. Deci, [a] este cel mai mic numr ntreg mai mic sau egal cu a: [a] a < [a]+1. 11

(din ir) i baza 7 ridicat la puterea specificat de poziia acesteia (algoritmii A4 i A5). Trebuie observat c poziiile sunt indicate: 1. pentru partea ntreag, de la dreapta la stnga, prin numerele 0, 1, .a.m.d. 2. pentru partea fracionar, de la stnga la dreapta, prin numerele: -1, -2, .a.m.d. Algoritmul A4. Se pornete cu n, b i secvena (an-1,an, ,a1,a0)b pentru a obine valoarea y =
n 1

a b
k =0 k

Date de intrare: n, b i (an-1,an, ,a1,a0)b Paii (conform schemei lui Horner): v := an-1; Pentru k de la n-2 pn la 0, descresctor (cu pasul -1) se execut v := v * b + ak; y = v; Ieire: y. Algoritmul A5. Se pornete cu m, b i reprezentarea (0,a-1,a-2, ,a-m)b pentru a obine valoarea y =
m

a
k =1

b k .

Date de intrare: m, b i reprezentarea (0,a-1a-2 a-m)b Paii: v : = a-m; Pentru k de la -m+1 cresctor la -1 (cu pasul 1) se execut: v := v/b+ak; y := v/b; Ieire: y. Exemple. irul binar 01100110101,10101 corespunde numrului zecimal: 821,65625 (= 1x29 + 1x28 + 0x27 + 0x26 + 1x25 + 1x24 + 0x23 + 1x22 +0x21 +1x20 +1x2-1 +0x2-2 +1x2-3 +0x2-4 +1x2-5). irul octal 765,567 corespunde numrului zecimal: 501,732421875. irul hexazecimal 3A5,4 reprezint numrul zecimal 933,25.
7

Aici este vorba de numrul b (baza de numeraie considerat; b 2) 12

Conversia din binar n octal, hexazecimal i invers se bazeaz pe observaia conform creia 8 = 23 i 16 = 24, Astfel, folosind proprietile de calcul, se obine o strategie de conversie automat ntre aceste sisteme. Conversia binar octal, respectiv octal binar folosete corespondena: Octal: Binar: 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111

Conversia binar hexazecimal, respectic hexazecimal binar, folosete corespondena: Hexazecimal: 0 1 2 3 4 5 6 7 Binar: 0000 0001 0010 0011 0100 0101 0110 0111 Hexazecimal: Binar: 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111

Exemple. irul cu 64de poziii binare:


0111.0110.1110.1101.1011.1011.1010.1010.1110.1011.0101.0101.0101.0101.0101.0111

se va traduce n irul octal: 0733555672535325252527, respectiv n irul hexazecimal: 76EDBBAAEB555557. Se observ rolul sistemului binar ca sistem intermediar de conversie pentru sistemele de numeraie n care baza este o putere a numrului doi. Operaiile aritmetice cu numere binare, octale, respectiv hexazecimale se efectueaz similar operaiilor cu numere zecimale. La adunare va interveni transportul ctre ordinul superior, la scdere va interveni mprumutul de la ordinul superior, iar nmulirea se va desfura prin totalizarea unor produse pariale, analog modului de calcul zecimal. Exist i algoritmi rapizi de efectuare a acestor operaii, dar nu fac obiectul acestui material. Pentru numere octale i hexazecimale, operaiile aritmetice sunt efectuate conform urmtoarelor reguli: Tabla adunrii octale:

13

Tabla nmulirii octale:

Tabla adunrii hexazecimale:

Tabla nmulirii hexazecimale:

14

Exemple: 10110011 + 111110 = 11110001 (baza 2); 34022,561234,11=32566,45 (baza 8); 5DA2 x B8 = 434C70 (baza 16). Efectuai operaiile artnd modul de calcul (se va folosi algoritmul A1).

1.2. Coduri
Fie A i B dou mulimi nevide i B mulimea (infinit a) irurilor (numite i cuvinte nevide peste B) formate cu elemente din B (n calitate de alfabet). Practic, un cuvnt peste alfabetul B este o secven finit de simboluri din B: w = a1a2...ak, k 1, ai B, 1 i k. Numrul k reprezint lungimea cuvntului w, notat i prin |w|. Mulimea tuturor cuvintelor peste B, la care se adaug cuvntul de lungime zero (cuvntul vid), identificat prin , se noteaz cu B*, adic B* = B+ {}. Prin codificare a elementelor mulimii A cu ajutorul elementelor mulimii B nelegem determinarea unei funcii injective, , numit cod, definit pe * mulimea A cu valori n mulimea B . Uneori, se numete cod chiar imaginea mulimii A, notat (A), prin funcia de codificare. Codurile n care sunt reprezentate numai numere se numesc coduri numerice, iar cele care cuprind numere, literele i celelalte semne se numesc coduri alfanumerice. Altfel spus, un cod este un set de simboluri elementare mpreun cu o serie de reguli potrivit crora se formeaz aceste simboluri. Codificarea reprezint procesul de stabilire a unui cod. Dac mulimea A are n elemente, ne intereseaz determinarea lungimii codului, adic lungimea maxim a secvenei din B* pentru a se putea codifica toate cele n obiecte. Dac toate cuvintele din B* au aceeai lungime codul se numete uniform. O codificare : A B* n care toate cuvintele-cod (x), x A, au lungimea constant k se numete codificare bloc de lungime k, iar (A) este un cod bloc de lungime k. Mulimea codurilor bloc conine codul ASCII, codul Unicode, codul ISBN etc. ). Codul ASCII (eng. American Standard Code for Information Interchange) - n englez pronunat as-key - este cel mai popular cod utilizat n transmiterea datelor. Codul ISBN (eng. International Standard Book Number) este un cod folosit de toate editurile din lume, fiecare carte avnd codul su unic (compus dintr-un prefix, codul rii, codul editurii, codul publicaiei i cifra de control 8 ). Pentru cazul sistemelor de calcul, mulimea B este format din simbolurile unui sistem de numeraie, iar lungimea codului depinde de natura obiectelor mulimii A. Dac B are numai dou simboluri se obine codificarea binar. Un mesaj m este un element (ir) din A*: m = m1m2...m|m|. Codificarea mesajului m se obine prin concatearea irurilor (m1), (m2), ..., (m|m|). Evident mesajul vid se codific prin cuvntul vid.
8

Codul ISBN are lungimea 13: http://www.niso.org/standards/resources/ISBN.html 15

Codurile pot fi alfanumerice i grafice (folosind imagini). Un exemplu de cod nenumeric, foarte popular, este codul de bare (eng. bar code). Codurile de bare pot fi liniare, dar i 2D (PDF417, DataMatrix, MaxiCode etc.). Exist coduri de bare cu lungime fix, dar i cu lungime variabil 9 .

n cazul transferului datelor ntre sisteme de calcul pot aprea erori. De aceea se utilizeaz coduri de control cu posibilitatea detectrii i corectrii erorilor. Mai precis, se ataeaz cifre binare (de control) la emisia mesajului, recepia fiind responsabil de controlul modului de respectare a corectitudinii mesajului. Cele mai utilizate procedee pentru detectarea erorilor sunt: codurile pentru controlul paritii i codurile polinomiale ciclice. Din cele de mai sus rezult c datele sunt reprezentarea fizic (prin intermediul codului) a entitilor din care este compus informaia (cifre, litere, semne speciale, imagini, sunete etc.) pentru ca aceasta s poat fi stocat, prelucrat sau transmis. Din punct de vedere logic, unei date i se asociaz un identificator (simbol sau nume pentru diferenierea de alte date i pentru referirea acesteia). n vederea prelucrrii, datelor le sunt asociate atribute precum: tipul datei (numeric: ntreg sau real; logic; ir de caractere; enumerare, adres etc.), precizia reprezentrii interne i modul de vizualizare (poziie, aliniere, corpul simbolului, dimensiunea etc). n timpul prelucrrii unele date i pstreaz valoarea iniial (se numesc constante), iar altele se modific n timp (se numesc variabile). Constantele hexazecimale vor fi scrise cu ajutorul unuia dintre prefixele 0x, 0X, respectiv #, dup care va urma secvena simbolurilor 0..9, a-f sau A-F. Constantele octale vor fi descrise prin utilizarea prefixului 0. n lipsa acestor prefixe, constantele numerice vor fi considerate ca fiind de tip zecimal (n baza 10). Prin caracter se nelege un element al codului ASCII (sau Unicode), iar un ir de caractere, de obicei este ncheiat cu un cod special. Mai multe detalii vor fi prezentate, n capitolul 4, n conexiune direct cu programarea procesoarelor.

http://www.itsc.org.sg/synthesis/2001/itsc-synthesis2001-jinsoon-bar-coding.pdf 16

1.3. Reprezentarea numerelor ntregi


Primele maini de calcul (n special mecanice) au folosit sistemul de numeraie zecimal. La baza tehnicii calculului electronic au stat rezultatele obinute n cadrul teoriei informaiei i n domeniul circuitelor electronice active. Cercetrile ntreprinse, au artat c sistemul de numeraie potrivit calculatoarelor digitale este cel binar, adic orice informaie, orict de complex este, poate fi exprimat prin informaii elementare. Informaia elementar este numit bit (eng. binary digit). Un bit este descris prin una din cifrele binare: 0, 1. Biii se pot grupa formnd un nyp (2 bii; denumire 10 dat de Gregor N. Purdy, conform D. Knuth (2005) ), niblle (patru bii), octet (opt bii; eng. byte; denumire stabilit n 1956 de Dr. Werner Buchholz de la IBM) etc. Urmtoarele secvene de mai muli octei sunt foarte importante: wyde (doi octei), tetrabytes (patru octei), octabytes (opt octei). Intern, ceea ce prelucreaz un calculator numeric este un ir de cifre binare. Aceste iruri fr a avea vreo semnificaie se numesc date. ntr-un calculator, informaia reprezentat codificat formeaz mulimea datelor. Pentru a modela sistemul de numeraie binar, trebuie utilizat un mecanism cu dou stri (un comutator). Prin urmare, calculatorul poate fi privit ca un ansamblu de circuite electrice, electronice i pri mecanice, ansamblu numit hardware 11 . Prelucrarea datelor este realizat de programe, compuse din comenzi numite instruciuni. Totalitatea programelor poart numele de software 12 . Se pot efectua operaii de evaluare sau de transfer (cazul reelelor de calculatoare). Sistemele de calcul utilizeaz cel mai frecvent coduri alfanumerice cu 7, 8 i 16 cifre binare care permit reprezentarea a 128 (ASCII), 256 (Latin-1 sau ISO 8859-1), respectiv 65536 (Unicode sau ISO/IEC 10646 UCS-2) obiecte (cifre, litere, caractere speciale. Valorile din domeniul 0..31 ale codului ASCII descriu elemente de control, valorile din domeniul 32..126 descriu simboluri imprimabile (semne speciale, litere, cifre), iar valoarea 127 reprezint codul elementului de control DEL. n
Alte denumiri sunt: crumb, quad, quarter, tayste, tydbit, conform http://www.fullbooks.com/The-New-Hacker-s-Dictionary-version-4-2.html, http://dictionary.reference.com/browse/crumb etc. 11 Cuvntul hardware descrie totalitatea resurselor fizice ale unui sistem de calcul. Conform dicionarului de informatic [DINF1981], hardware (din limba englez) reprezint un "termen general desemnnd circuitele, dispozitivele i echipamentele componente ale unui sistem de calcul", adic "toate unitile fizice existente, cu funcii bine determinate, n cadrul unui sistem de calcul; funciile sale, specificate de ctre fabricant, sunt la dispoziia utilizatorului care le poate exploata cum dorete." 12 Cuvntul software descrie att programele de baz ct i pe cele aplicative. Conform [DINF1981], software (din limba englez) reprezint un "termen utilizat pentru a desemna: a) totalitatea programelor cu care este echipat un sistem de calcul; b) preocuprile corespunztoare realizrii produselor program i, n cel mai larg sens, analizei i cercetrilor efectuate n raport cu activitile conexe realizrii programelor." 17
10

tabelul de mai jos este prezentat codul ASCII n exprimarea hexazecimal (de exemplu, #41 = 65, reprezint caracterul 'A', iar #20 = 32 = SP este caracterul 'spaiu'.)

Codurile numerice ofer posibilitatea reprezentrii numerelor folosind sistemul binar. Reprezentarea numerelor n acest sistem se face n mai multe forme, n funcie de mulimea creia i aparin numerele, operaiile aritmetice fiind efectuate de ctre dispozitive aritmetice specializate (sumatoare, multiplicatoare etc.). Reprezentarea numerelor naturale se realizeaz pe un numr fix de poziii binare (de regul 8, 16, 32, sau 64) prin conversia numrului zecimal n baza 2. Pentru numrul natural x, aceast reprezentare este numit reprezentare aritmetic i furnizeaz aa numitul cod direct cd(x). Prin utilizarea a n poziii binare (n 1) se pot reprezenta aritmetic toate numerele naturale din plaja: 0 .. 2n-1. Se spune c aceste date sunt fr semn (eng. unsigned). Domeniile de valori acoperite de reprezentarea aritmetic sunt: unsigned byte unsigned wyde unsigned tetra unsigned octa 0 .. 255 0 .. 65.535 0 .. 4.294.967.295 0 .. 18.446.744.073.709.551.615

Reprezentarea numerelor ntregi (eng. signed)- numit i reprezentare algebric - este asemntoare reprezentrii numerelor naturale, cu deosebirea c prima poziie este ocupat de semnul numrului ntreg, iar celelalte simboluri se obin n urma unei transformri bit cu bit. De obicei, reprezentarea unui numr ntreg negativ x utilizeaz codul complementar fa de doi c2(x) = c1(cd(|x|))+1, unde c1 asociaz oricrei secvene binare, irul obinut prin schimbarea lui 0 n 1 i a lui 1 n 0 (aa numitul cod invers sau complement fa de unu). n plus 13 , c2(x) = 2n +x, dac primul bit din c2(x) este 1 (x < 0). Cunoscnd numrul n (n 1) de poziii binare pe care se reprezint un numr ntreg n forma algebric, plaja numerelor care admit o reprezentare n cod complementar este -2n-1 .. 2n-1-1. Codul complementar este potrivit pentru aplicaii
De asemenea, dac b>1 este baza unui sistem de numeraie, iar x<0 este un numr a crui reprezentare n baza b are n simboluri pentru partea ntreg a valorii absolute, atunci complementul fa de b al numrului x, notat cb(x) este definit astfel nct cb(x) = bn + x. 18
13

deoarece operaia de scdere este transformat n operaie de adunare conform formulei: a - b = a + (-b), iar scztorul este reprezentat n cod complementar. Dac rezultatul scderii este un numr negativ, acesta este reprezentat tot n cod complementar. Dac apare transport de la poziia alocat semnului, acesta se ignor. Domeniile de valori 14 acoperite de reprezentarea algebric sunt: signed byte signed wyde signed tetra signed octa -128 .. 127 -32.768 .. 32.767 -2.147.483.648 .. 2.147.483.647 -9.223.372.036.854.775.808 .. 9.223.372.036.854.775.807

1.4. Reprezentarea IEEE 754


Numerele reale (mai precis numerele raionale) se reprezint sub form fracionar prin intermediul codificrii n virgul mobil. Operaiile aritmetice cu numere n virgul mobil sunt, fie realizate software (biblioteca metodelor de calcul numit i API (eng. Application Programmer Interface)), fie prin intermediul unor dispozitive electronice specializate (procesoare de calcul n virgul mobil; FPU Floating Point Unit). Fie q i b numere naturale nenule, iar x R dat. Numim reprezentare cu virgul mobil a numrului x, cu excesul q, n baza b, perechea (e, f) cu semnificaia: x = fbe-q i f<1. Componenta e se numete parte exponenial, iar componenta f, parte fracionar. Dac reprezentarea impune utilizarea a p 1(p N*) cifre n baza b atunci -bp bpf < bp. Notm cu e(x) (respectiv f(x)) cantitatea e (respectiv f) pentru a specifica numrul x luat n considerare. Fie x, y numere reale, q i b ca mai sus, dar fixate. Relaia de ordine ">" este definit astfel: x > y e(x) > e(y) sau ( e(x) = e(y) i f(x) > f(y) ). Despre un numr cu virgul mobil (e, f) se spune c este reprezentat normalizat dac cifra cea mai semnificativ a reprezentrii componentei f este nenul, adic 1/b f<1 pentru f 0 sau componenta e are cea mai mic valoare posibil pentru f = 0. Fie emin, emax numere ntregi fixate. Mulimea numerelor reale cu virgul mobil reprezentabile exact, n baza b, cu excesul q, folosind exact p poziii pentru partea fracionar este Fp,q={x Q x = fbe-q, emin e-q emax , f = (c1b-1 + c2b2 + ... + cpb-p), ci {0, 1, ..., b-1}, i =1, 2, ...,p}. Fie x un numr real. Spunem c x este situat n domeniul de valori numai dac x Fp,q.

14

Trebuie subliniat c aceste domenii mpreun cu operaiile de adunare i nmulire nu formeaz structurile algebrice cunoscute. De exemplu nu orice ntreg cu semn reprezentabil pe 64 de bii are un opus. 19

Exponentul minim emin este un numr ntreg negativ, iar exponentul maxim emax este un numr ntreg pozitiv. De obicei se memoreaz btf folosind una dintre reprezentrile cu semn pentru numere ntregi (cod invers sau cod complementar). Observaii: e e 1 1. Numerele k = b min i K = b max (1 b p ) sunt: cel mai mic numr pozitiv reprezentabil, respectiv cel mai mare numr reprezentabil. -K este cel mai mic numr reprezentabil. Dac n timpul operaiilor aritmetice rezult numere n valoare absolut mai mici dect k (resp. mai mari dect K) se spune c s-au produs depiri aritmetice inferioare (respectiv, superioare). 2. Nu orice numr raional x (xQ) poate fi reprezentat, chiar dac k x K. De exemplu, x = 0,1 numr reprezentabil exact n baza 10, nu se poate reprezenta exact n baza 2. Acesta face ca expresia: 3/5*5-3 s fie evaluat de ctre mediul de programare Turbo Pascal, la valoarea 2.1684043450E-19, adic 0,00000000000000000021684043450, un numr foarte mic, dar nenul. 3. Dac x Fp,q atunci x Fp,q. Totui, pentru x Fp,q se poate ntmpla ca 1/x s nu fie reprezentabil sau s nu fie n domeniul de valori. 4. Sistemele de calcul actuale utilizeaz reprezentarea normalizat. n acest caz pentru f 0 avem c1 0. Numrul 0 are o reprezentare special care depinde de tipul sistemului de calcul. Fie x R, valoarea reprezentrii lui x aparinnd mulimii Fp,q , se noteaz prin fl(x) i se definete astfel: numrul reprezentabil exact, cel mai apropiat de x (metoda rotunjirii) sau cel mai apropiat numr reprezentabil, cu modul mai mic dect x (metoda trunchierii). Rezult: Oricare xR, x0, rotunjirii i c =1 n cazul metodei trunchierii. Membrul stng al inegalitii de mai sus se numete eroarea relativ a reprezentrii numrului x. Acest rezultat este foarte important pentru interpretarea rezultatelor obinute prin prelucrarea numeric a datelor. Observaii: 1. Sistemele de calcul bazate pe reprezentarea cu rotunjire sunt de preferat celor bazate pe trunchiere, deoarece n cazul trunchierii, eroarea relativ poate fi de pn la o cifr a bazei n ultima poziie. 2. Cu ct lungimea reprezentrii prii fracionare (p) este mai mare, cu att eroarea relativ a reprezentrii este mai mic, adic precizia reprezentrii este mai mare. De aceea, de multe ori, numrul p se mai numete (prin abuz de limbaj) i precizia reprezentrii.
20

x fl ( x) x

cb1 p , unde c = 0.5 n cazul metodei

Fie p, b, e i q fixate. Distana absolut dintre dou numere consecutive din Fp,q este constant i egal cu be-q-p. Aceast distan crete ns cu e-q i b pentru p fixat. Distana relativ definit ca b-p/|f| scade o dat cu creterea prii fracionare. Astfel se poate afirma, din nou, c sistemele de calcul preferate sunt cele care utilizeaz baza 2. Dac f = 1/b atunci se obine distana relativ maxim, M = b1-p. n cazul multor sisteme de calcul M = 2u unde u este cel mai mic numr pozitiv reprezentabil pentru care fl(1+u)>1. Pentru sistemele de calcul pentru care b = 2, n anul 1985, a fost elaborat standardul IEEE 754. Un numr n virgul mobil este reprezentat cu ajutorul a c+m+1 bii (un bit pentru semn, m bii pentru partea fracionar i c bii pentru reprezentarea lui e-q (numit i caracteristic)) astfel nct numrul c+m+1 s fie un multiplu al lungimii cuvntului sistemului de calcul. Exemplificm implementarea reprezentrilor n virgul mobil IEEE 754 pe 64 de bii (tipul de date double al limbajului Java). NaN, respectiv Inf sunt coduri care descriu nederminarea, respectiv (infinit). Cei 64 de bii sunt repartizai astfel: b63 - bit de semn, biii b52-b62 - caracteristica, iar biii b0-b51 pentru reprezentarea prii fracionare. Valoarea numrului reprezentat astfel, se obine dup cum urmeaz: D1: Dac 0 < c < 2047 atunci fl(x) = (-1)s.2(c-1023).(1.f). D2: Dac c = 0 i f 0 atunci fl(x) = (-1)s.2(c-1022). (0.f). D3: Dac c = 0 i f = 0 atunci fl(x) = (-1)s.0. D4: Dac c = 2047 i f = 0 atunci fl(x) = (-1)sInf. D5: Dac c = 2047 i f 0 atunci fl(x) =(-1)s NaN. Ilustrm aplicarea regulilor de mai sus pentru numrul 3.14. Folosind schema din 1.1.1 obinem: 3 = (11)2; 0.14 = 0.0(01000111101011100001) adic un numr binar periodic mixt. Astfel irul 11,0010001111010111000010100011110101110000101000111101011100001... este transformat n 21 x 1,10010001111010111000010100011110101110000101000111101011100001 ... ceea ce duce la - bitul de semn: 0 - caracteristica: x-1023=1 x = 1024 = (1000000000)2 - mantisa este: 10010001111010111000010100011110101110000101000111101011100001... cu pstrarea a exact 52 de poziii n reprezentarea cu trunchiere, respectiv 1001000111101011100001010001111010111000010100011111, n reprezentarea cu rotunjire. Prin asamblarea celor 64 de bii, pentru modelul cu rotunjire, se obine reprezentarea IEEE 754 a numrului 3.14, pe 64 de bii, cu afiare n sistemul de numeraie hexazecimal: 40091EB851EB851F. Totui, transformarea invers a irului
21

11,00100011110101110000101000111101011100001010001111 din baza 2 n baza 10 nu va duce la obinerea cu exactitate a numrului 3.14, n nici una din variantele posibile (cu rotunjire sau cu trunchiere), deoarece reprezentarea n baza doi a numrului 3.14 este infinit, iar irul de mai sus este unul finit. Alte exemple de aproximri IEEE 754 sunt date n tabelul urmtor: Numrul zecimal -3.14 0.6 0.1 -0.1 Reprezentare hexazecimal (cu rotunjire) C0091EB851EB851F 3FE3333333333333 3FB999999999999A BFB999999999999A

De reinut c dei adunarea/nmulirea sunt operaii interne i este satisfcut proprietatea de comutativitate, acestea nu sunt asociative. nmulirea nu este distributiv fa de adunare, sunt probleme cu existena opusului (pentru NaN) i cu relaia de monotonie.

1.5. Exerciii
1. Numrul zecimal 0,6 se reprezint cu exactitate n memoria sistemelor de calcul binare. Aceast afirmaie este:
a. adevrat ntotdeauna b. fals ntotdeauna supercalculatoarelor c. d. adevrat pentru microprocesoare INTEL adevrat pentru procesoarele

Rspuns: b) Numrul zecimal 0.6 are o reprezentare binar infint. Lungimea reprezentrii n sistemele de calcul este finit, deci se pierd o infinitate de poziii nenule, astfel c diferena dintre 0.6 i reprezentarea sa este nenul. 2. Conversia binar a numrului zecimal 24,25 este:
a. b. 00100100,00100101 11000,01 c. d. 00100101,00100100 10,00011

Rspuns: b) Se aplic algoritmul de conversie a unui numr real, scris n baza 10, ntr-o baz de numeraie b (b >1). 3. Numrul zecimal reprezentat binar prin 101011,101 este:
a. b. 12,345 c. 34,125 d. 43,625 nici una dintre variantele anterioare

Rspuns: c) Se aplic algoritmul de conversie n baza 10 a unui numr scris n baza b (b > 1). 4. n cazul reprezentrii cu semn (complement fa de doi) pe 16 bii (signed wyde) , afirmaia 32767 + 2 = -32767 este:
a. adevrat b. fals 22

Rspuns: a) Complementul fa de doi al unui numr negativ este succesorul complementului fa de unu al valorii absolute a numrului. Pentru lungimea i tipul de reprezentare menionate, 32767+1 = -32768, iar 32767 + 2 = -32767. 5. Rezultatul operaiei 32 - 41 cu reprezentare n cod complementar (fa de doi) pe 8 cifre binare a scztorului este:
a. b. 11110111 00001001 c. d. 10001001 10010000

Rspuns: a) Se efectueaz operaiile considernd lungima i tipul reprezentrii menionate. 6. irul binar 11000000110011110000111100100001 reprezint un numr real n simpl precizie (32 bii: IEEE 754 - single, float). Numrul este:
a. pozitiv b. negativ

Rspuns: b) Primul bit al secvenei este alocat semnului. Cum 1 este pentru numr negativ rezult c rspunsul corect este b). 7. Care sunt principalele atribute ale datelor? Rspuns: Datelor le sunt asociate atribute precum: tipul datei (numeric: ntreg sau real; logic; sir de caractere; enumerare, adres etc.), precizia reprezentrii interne i modul de vizualizare (pozitie, aliniere, corpul simbolului, dimensiunea etc). 8. Repartizarea biilor n reprezentarea IEEE 754 pe 32 de bii (single, float) este: _________ ___________________________________________________________________ ________ Rspuns: Reprezentarea IEEE 754 pentru single, respectiv float, utilizeaz 32 de bii repartizai astfel: b[31] - bit de semn (notat n continuare cu s), biii b[23]-b[30] pentru memorarea caracteristicii (c), iar biii b[0]-b[22] pentru reprezentarea prii fracionare (f). Valoarea fl(x), se obine conform regulilor (prin * este redat operaia de nmulire):

S1: Dac 0 < c < 255 atunci fl(x) = (-1)s*2(c-127)*(1,f). S2: Dac c = 0 i f 0 atunci fl(x) = (-1)s*2(c-126)*(0,f). S3: Dac c = 0 i f = 0 atunci fl(x) = (-1)s*0. S4: Dac c = 255 i f = 0 atunci fl(x) = (-1)sInf (). S5: Dac c = 255 i f 0 atunci fl(x) = NaN. (Not a Number - nedeterminare)

9. [Controlul paritii] La transmiterea unei succesiuni binare x1, x2, , xn se ataeaz o cifr binar de control an+1, aleas astfel nct numrul total de cifre binare 1 s fie par sau impar, n funcie de convenia stabilit. S presupunem c se utilizeaz paritatea impar i trebuie transmis, serial, irul de opt bii: 10100111. Care va fi al 9-lea bit ce trebuie transmis? Rspuns: Deoarece numrul biilor 1 din irul de transmis este 5, care este numr impar (fr so) i se utilizeaz paritatea impar, bitul de control trebuie s fie 0 (zero).
23

10. S se specifice irul binar final care rezult la transmiterea cu paritate par a secvenelor: a) 10011100; b) 11001101; c) 00111010. Rspuns: a) 100111000; b) 110011011; c) 001110100. 11. Presupunem c s-a utilizat procedeul paritii impare. Stabilii mesajele transmise corect. a) 100111001; b) 110011011; c) 001110100. Rspuns: Este potenial corect transmisia secvenei a). 12. [Codul Gray] Se consider cifrele zecimale de la 0 la 9 i secvenele de patru cifre binare pornind de la 0000 care se obin prin modificarea unei singure cifre binare din secvena anterioar. Se obine, astfel, codul Gray: (0, 0000), (1, 0001), (2, 0011), (3, 0010), (4, 0110), (5, 0111), (6, 0101), (7, 0100), (8, 1100), (9, 1101). Trebuie observat c acest cod nu se obine prin algoritmi de conversie a bazelor de numeraie. Reprezentai n codul Gray numerele: a) 7; b) 14; c) 169; d) 4096. Rspuns: a) 0100; b) 00010110; c) 000101011101; d) 0110000011010101.

24

2. BAZELE LOGICE ALE SISTEMELOR DE CALCUL


2.1. Latici i algebre Boole
Definiia 2.1.1. Se numete latice Dedekind o mulime nevid L nzestrat cu dou operaii binare notate + i astfel nct pentru oricare elemente x, y, z L s fie valabile urmtoarele proprieti: comutativitate: (1) x + y = y + x; (2) x y = y x; asociativitate: (3) (x + y) + z = x + (y + z); (4) (x y) z = x (y z); absorbie: (5) x (x + y) = x; (6) x + (x y) = x.

1) Mulimea prilor (submulimilor) unei mulimi M notat P(M) (sau 2M) nzestrat cu operaiile i formeaz o latice Dedekind.
2) Mulimea valorilor de adevr {0, 1} nzestrat cu operaiile (disjuncia logic) i (conjuncia logic) formeaz de asemenea o latice Dedekind care, n plus, are i alte proprieti. Principiul dualitii pentru latici: Dac ntr-o propoziie adevrat din teoria laticilor Dedekind se nlocuiete o operaie prin cealalt (i invers) se obine, de asemenea, o propoziie adevrat.

Exemple

L sunt adevrate relaiile:

Propoziia 2.1.1. n orice latice Dedekind (L, +, ), pentru orice element x

(7) x + x = x; (8) x x = x. Demonstraie. x + x [rel (5)] = x + (x (x + y)) [rel (6)] = x. De asemenea, x x [rel (6)] = x (x + (x y)) [rel (5)] = x. Propoziia 2.1.2. n orice latice (L, +, ) avem x + y = y dac i numai dac x y = x, oricare ar fi elementele x i y aparinnd mulimii L.
25

Demontraie. Presupunem c x + y = y. Atunci x y = x (x+y) = x (folosind (5)). Reciproc, presupunem c x y = x. Atunci x + y = x y + y = y + y x = y, dup aplicarea comutativitii i a relaiei (6). Definiia 2.1.2. Fie x, y L, notm x y dac i numai dac x + y = y (echivalent cu x y = x). Propoziia 2.1.3. Relaia este o relaie de ordine parial. Demonstraie. Reflexivitatea rezult din relaiiele (7) (8). Din x y i y x rezult x + y = y i y + x = x, dar x + y = y + x (relaia (1)), deci x = y. Dac x y i y z rezult x + z = x + (y+z) = (x+y) + z = y + z = z, folosind definiia 2.1.2 i relaia (3). Prin urmare x z. Observaie: n cazul laticei (P(M),, ), ordinea corespunde relaiei de incluziune definit pentru dou mulimi. Definiia 2.1.3. Fie (L, +, ) latice. Elementul L se numete prim element n L dac pentru oricare (ar fi) x L are loc relaia: x. Similar, elementul L se numete ultim element n L dac pentru oricare (ar fi) x L are loc relaia: x .. Propoziia 2.1.4. Fie laticea (L, +, ) cu L = {a1, a2, ..., an} format cu n elemente (distincte), atunci L are att prim element ct i ultim element n raport cu relaia de ordine definit mai sus, iar: = a1 a2 ... an i = a1 + a2 + ... + an. Demonstraie. Artm c pentru n = 2, x y = inf{x, y} i x+y = sup {x, y}. Este evident c x y este minoran 15 t pentru {x, y}, iar x + y este majoran 16 t pentru aceeai mulime {x, y}. Fie t x i t y, artm c t x y. ntr-adevr, egalitile t x = t i t y = t conduc la t (x y) = (t x) y = t y = t, adic t x y. Deci x y este cel mai mare minorant, adic infimum 17 . De asemenea, dac x t i y t, artm c x+y t. ntr-adevr, egalitile x + t = t i y + t = t conduc la (x + y) + t = x + (y + t) = x + t = t, adic x + y este cel mai mic majorant, deci supremum 18 .
Pentru (P, ) o mulime parial ordonat i A o submulime, un element a A se numete minorant al mulimii A dac a x, oricare x A. 16 Pentru (P, ) o mulime parial ordonat i A o submulime, un element a A se numete majorant al mulimii A dac x a, oricare x A. 17 Pentru (P, ) o mulime parial ordonat i A o submulime, un element a A se numete infimum al mulimii A dac este el mai mare dintre toi minoranii lui A. 26
15

Definiia 2.1.4. Laticea (L, +, ) se numete latice distributiv dac oricare ar fi elementele x, y, z din L sunt satisfcute relaiile: ( 9) x + (y z) = (x + y) (x + z); (10) x (y + z) = (x y) + (x z). Definiia 2.1.5. Latice (L, +, ) se numete latice complementat dac sunt ndeplinite condiiile: (11) Exist elementul neutru pentru operaia + (numit element nul), notat cu 0, astfel nct x + 0 = x, oricare ar fi x L. (12) Exist elementul neutru pentru operaia (numit element universal), notat cu 1, astfel nct x 1 = x, oricare ar fi x L. Pentru oricare x L exist yx L, numit complementul lui x, care satisface relaiile: (13) x + yx = 1; (14) x yx = 0. n cele ce urmeaz elementul yx va fi notat prin x. Propoziia 2.1.4. ntr-o latice distributiv i complementat, complementul unui element este unic. Demonstraie. Fie x1 i x2 complemente ale lui x (element arbitrar al laticei). Atunci x1 = x1 1 = x1 (x +x2) = (x1 x) + (x1 x2) = 0 + (x1 x2) = (x x2) + (x1 x2) = (x + x1) x2 = 1 x2 = x2. Definiia 2.1.6. O latice distributiv i complementat se numete algebr boolean sau algebr Boole 19 . Exemple 1. Structura (P(M), , ) este latice distributiv i complementat, elementul nul este , elementul universal este M, iar dac A P(M), atunci A = M-A (complementara mulimii A). 2. Structura ({0, 1}, , ) este latice distributiv i complementat cu 0=1 i 1=0. n continuare vom considera c o algebr boolean sau, mai simplu, o algebr Boole este dat prin ansamblul (B, +, , , 0, 1), evideniind mulimea

Pentru (P, ) o mulime parial ordonat i A o submulime, un element a A se numete supremum al mulimii A dac este el mai mic dintre toi majoranii lui A. 19 George Boole (1815-1864), matematician englez care a propus o nou abordare a logicii (prin introducerea algebrelor ce astzi i poart numele). S-a mai ocupat de calculul cu diferene finite, ecuaii difereniale i metode specifice teoriei probabilitilor. 27

18

nevid B, operaiile binare, operaia unar (pentru obinerea complementului) i elementele neutre. De asemenea pentru xy vom scrie, simplu, xy. Se poate arta c pentru a defini o algebr Boole este suficient ca, pentru oricare x, y, z elemente ale mulimii B, s fie satisfcute relaiile: (15) x + y = y + x; (16) xy = yx; (17) x+yz = (x+y)(x+z); (18) x(y+z) = xy + xz; (19) x + yy = x; (20) x(y+y) = x; Atunci, pentru oricare x i y din B, avem xx = yy (rezultat notat cu 0) i x + x = y + y (rezultat notat cu 1).

2.2. Funcii booleene. Forme normale


Fie (B, +, , , 0, 1) o algebr Boole i n ( 1) numr natural. Notm cu Fn(B) mulimea funciilor de n variabile definite pe Bn cu valori n B. Este evident relaia: . card(Fn(B)) = card(B) Pentru n = 2 i B = {0, 1}, se obin 16 funcii de 2 variabile, date prin tabelul: x1 0 0 1 1 X2 0 1 0 1 f0 0 0 0 0 f1 0 0 0 1 f2 0 0 1 0 f3 0 0 1 1 f4 0 1 0 0 f5 0 1 0 1 f6 0 1 1 0 f7 0 1 1 1 f8 1 0 0 0 f9 1 0 0 1 f10 1 0 1 0 f11 1 0 1 1 f12 1 1 0 0 f13 1 1 0 1 f14 1 1 1 0 f15 1 1 1 1
card(B)n

sau prin formule (ntre ghilimele trecem denumirea funciei conform logicii propoziiilor): f0(x1, x2) = 0; f1(x1, x2) = x1x2; f2(x1, x2) = x1x2; f3(x1, x2) = x1; f4(x1, x2) = x1x2; f5(x1, x2) = x2; f6(x1, x2) = f2(x1, x2) + f4(x1, x2) ; f7(x1, x2) = x1 + x2; f8(x1, x2) = x1x2; f9(x1, x2) = x1x2 + x1x2; f10(x1, x2) = x2; f11(x1, x2) = x1+x2; f12(x1, x2) = x1; contradicia - funcia identic fals conjuncia negaia implicaiei prima proiecie negaia implicaiei inverse a doua proiecie sau exclusiv disjuncia, sau inclusiv , nici x1 nici x2 echivalena negaiavariabilei x2 implicaia invers, x2 x1 negaia variabilei x1
28

f13(x1, x2) = x1+x2; f14(x1, x2) = x1+x2; f15(x1, x2) = 1;

implicaia, x1 x2 /, x1 este incompatibil cu x2 lege logic sau tautologie

Definiia 2.2.1. Numim termen prim att o variabil ct i complementul su. Numim conjuncie prim orice termen prim i orice conjuncie de termeni primi. Numim disjuncie prim orice termen prim i orice disjuncie de termeni primi. Conjunciile de termeni primi se mai numesc i monoame prime. Monoamele prime (respectiv, disjunciile prime) n care apar toate variabilele sau complementul acestora, o singur dat, dar nu simultan variabila i complementul su, se numesc monoame (respectiv, disjuncii) perfecte. i i i Pentru n variabile, un monom perfect este de forma x11 x 22 ... x nn , unde ik = 1 0 ' 0, 1 ( k = 1, 2, ..., n) cu convenia de notaie: x k = x k , x k = x k . n general, notm, x1 = x i x0 = x pentru oricare x B. Pentru n = 3, monoamele perfecte sunt: xyz, xyz, xyz, xyz, xyz, xyz, xyz, xyz. Analog se pot descrie disjunciile perfecte. Definiia 2.2.2. Se numete form normal disjunctiv (ND), disjuncia oricrei mulimi de conjuncii prime. Se numete form normal conjunctiv (NC), conjuncia oricrei mulimi de disjuncii prime. Se numete form normal perfect acea form normal format numai cu monoame perfecte (n cazul ND) respectiv sume perfecte (n cazul NC). Propoziia 2.2.1. Fie B algebra boolean de mai sus, (ci1 ,i2 ,...,in ) i1 ,i2 ,...,in {0,1} ,

(d i1 ,i2 ,...,in ) i1 ,i2 ,...,in {0,1} elemente din B i x1, x2, ..., xn B. Urmtoarele proprieti
sunt adevrate: i i i j j j (21) (i1, i2, ..., in) (j1, j2, ..., jn) x11 x 22 ... x nn x1 1 x 2 2 ... x n n = 0, (i1, i2, ..., in, j1, j2, ..., jn {0, 1}), i i i x11 x 22 ... x nn = 1, (22)
i1 ,i2 ,...,in {0,1}
i1 ,i2 ,...,in {0,1}

ci1i2 ...in x1i1 x 2 i2 ... x n in +


i1

(23)

i1 ,i2 ,...,in {0,1}


i1 ,i2 ,...,in {0,1}

i1 ,i2 ,...,in {0,1}

d i1i2 ...in x1i1 x 2 i2 ... x n in =

( ci1i2 ...in + d i1i2 ...in ) x1 x 2 i2 ... x n in


i1 ,i2 ,...,in {0,1}

ci1i2 ...in x1i1 x 2 i2 ... x n in


i1

d i1i2 ...in x1i1 x2 i2 ... xn in =

(24)

i1 ,i2 ,...,in {0,1}

(ci1i2 ...in d i1i2 ...in ) x1 x 2 i2 ... x n in


'

(25)

i i i (ci i ...i ) ' x1i1 x2 i2 ... xn in ci1i2 ...in x1 1 x2 2 ... xn n = i1 ,i2 ,...,in {0,1} 1 2 n i1 ,i2 ,...,in {0,1}

29

Demonstraie. Dac (i1, i2, ..., in) (j1, j2, ..., jn) atunci exist, cel puin, un i j indice k astfel nct ik jk.Deci x kk x k k = x k x k ' = 0, adic relaia (21). Pentru n = 1, relaia (22) se reduce la x + x= 1 (definiia 2.1.5). Pasul inductiv necesit urmtoarea schem de calcul i aplicarea ipotezei inductive.
i1 i2 1 2 i1 ,i2 ,L,in {0 ,1}

i x L x nn =

= = x1

i1 ,i2 ,L,in {0 ,1}

= x1 + x1' = 1.

i1 ,i2 ,L,in {0 ,1}

i i x1 x 22 L x nn +

i i x 22 L x nn + x

i2 1 2 i1 ,i2 ,L,in {0 ,1} i2 ' 1 2 i1 ,i2 ,L,in {0 ,1}

x x x

i L x nn i L x nn

Relaia (23) se obine prin aplicarea proprietilor de asociativitate, comutativitate i distributivitate. Pentru a obine (24) trebuie s folosim relaia (21) i propoziia 2.1.1. Relaia (25) se obine din faptul c x = aeste unica soluie a sistemului {x+a=1, xa = 0} (unicitatea complementului). Definiia 2.2.3. Funciile booleene simple ale algebrei B sunt acele funcii booleene a cror expresie se obine plecnd de la proiecii i aplicnd operaiile algebrei booleene asupra unor elemente constituite anterior. Funciile booleene (la modul general) ale algebrei booleene se obin ca i cele simple, dar lund elemente de plecare att proieciile ct i constantele algebrei Boole B. Teorema 2.2.1.[10]. O funcie f: Bn B este boolean dac i numai dac exist constantele ci1i2 ...in B, (i1 , i2 ,..., in {0,1}) astfel nct (26)

f ( x1 ,..., x n ) =

i1 ,i2 ,...,in {0,1}

ci1i2 ...in x1i1 x 2 i2 ... x n in , x1 ,..., x n B.

Cnd (26) are loc, constantele ci1i2 ...in sunt unic determinate de (27)

ci1i2 ...in = f (i1 , i2 ,..., in ),( i1 , i2 ,..., in {0,1}).

Propoziia 2.2.2.[10] O funcie boolean de n variabile este simpl dac i numai dac (28) f(i1, i2, ..., in) {0, 1}, pentru oricare i1, i2, ..., in {0,1}. Evident c o expresie de forma (26) transfomat astfel nct suma boolean se realizeaz numai pentru constantele egale cu 1 este o funcie boolean simpl. Propoziia 2.2.3.[10] O funcie boolean este funcie boolean simpl dac i numai dac satisface: f ( x1 ,..., x n ) = x1i1 x 2 i2 ... x n in , x1 ,..., x n B. (29)
i1 ,i2 ,...,in {0,1} f ( i1 ,i2 ,...,in ) =1

30

Comentariu: Din cele de mai sus rezult c mulimea funciilor booleene pe B coincide cu mulimea funciilor booleene simple (cu acelai numr de variabile) dac i numai dac B = {0, 1}. Exemplu: Pentru n=3, funcia f73 (definit n tabelul de mai jos, unde numrul 73 este convertit n baza doi) se poate scrie sub form ND perfect astfel: f73(x, y, z) = xyz + xyz + xyz.

Teorema 2.2.2. O funcie boolean f este boolean simpl dac i numai dac se scrie astfel:

f ( x 1 , x 2 ,... , x n ) =

i i f ( i 1 , i 2 , ... , i n ) + x 1i1 + x 22 ...+ x nn ,

0'

lund n considerare notaiile i convenia de mai sus. Demonstraie. Se aplic propoziia 2.2.3 pentru funcia f , iar apoi se utilizeaz regulile de calcul (x+y)= x y i (xy)= x+ y. Exemplu: Funcia f73 poate fi exprimat n form NC perfect astfel: f73(x, y, z) = (x + y + z) (x + y + z) (x + y + z) (x + y + z) (x + y + z). 2.3. Aplicaii O problem important legat de reprezentarea 20 funciilor booleene o constituie reducerea la minimum a expresiei analitice a funciei booleene (mai puini termeni i ct mai puini factori). O funcie boolean poate avea mai multe forme disjunctive nesimplificabile. O metod pentru aflarea unei forme normale disjunctive minime const n construirea tuturor formelor normale disjunctive ale funciei i alegerea uneia dintre cele mai scurte. Pentru un numr mare de variabile aceast metod este ineficient. Din punct de vedere algoritmic, problema gsirii unei forme minimale a unei funcii booleene este decidabil. Algoritmul Quine-McCluskey este destinat
Principalele aplicaii ale funciilor booleene sunt n analiza i sinteza sistemelor de calcul (de tip numeric). De asemenea, reducerea complexitii expresiilor booleene influeneaz timpul de evaluare a condiiilor precizate n cadrul instruciunilor if, while..do, for, cond, do...while, repeat...until, etc. i deci viteza de executare a programelor. 31
20

obinerii formei ND a unei funcii booleene prin utilizarea sistematic a regulilor de calcul ntr-o algebr Boole. Pentru expresii booleene cu pn la 6 variabile se pot utiliza cu succes diagramele Karnaugh 21 .

Tabelul 2.3.1.

Tabelul 2.3.2.

Aplicaia 2.3.1. Fie B algebra Boole de mai sus i funcia f dat prin legea: f(x1, x2, x3) = x1x2+x1x2x3+x1x2+x1x2x3. Forma ND perfect este: f(x1, x2, x3) = x1x2x3+x1x2x3+x1x2x3+x1x2x3+x1x2x3+x1x2x3 i corespunde tabelului 2.3.1. Forma NC perfect este f(x1, x2, x3) = (x1+x2+x3) (x1+x2+x3) a crei evaluare necesit 3 operaii de negare (NOT), 4 disjuncii (OR) i o conjuncie (AND). Dup aplicarea regulilor de calcul asupra formei ND perfecte se pot obine urmtoarele exprimri posibile: ( *) f(x1, x2, x3) = x1x2+x2x3+x1x3 i (**) f(x1, x2, x3) = x1x3+x2x3+x1x3 ambele necesitnd 3 operaii NOT, 2 operaii OR i 3 operaii AND. Aplicaia 2.3.2. Operaia de adunare a doi bii se realizeaz conform tabelului 2.3.2. Cum z i tout sunt funcii booleene (folosind t n loc de tin), obinem: z = xyt+xyt+xyt+xyt; i tout = xyz+xyt+xyt+xyt = xy + xt + yt (dup simplificare). Circuitul sumator are trei intrri (cei doi bii x i y i bitul de transport anterior tin) i dou ieiri (bitul rezultat z i bitul de transport urmtor tout). Pentru adunarea a dou cuvinte a n bii fiecare este necesar s se nserieze n astfel de sumatoare. Dac considerm c cele dou cuvinte care se adun sunt situate iniial n dou registre (registrul X i Y), iar rezultatul se va obine n registrul Z (registrele X, Y i Z de aceeai capacitate) i are loc transport la sumatorul asociat cifrei cu rangul maxim

Diagrama Karnaugh se construiete cu ajutorul codului Gray, codul n care doi termeni succesivi difer printr-un singur bit, astfel c doi termeni vecini sunt cei ntre care exist o diferen de un bit, putndu-se astfel extinde diagramele Karnaugh pentru orict de multe variabile. Simplificarea expresiilor booleene folosind diagramele Karnaugh se bazeaz pe gruparea termenilor i utilizarea identitii x+x = 1 (care conduce la unificarea mintermenilor i generarea unor termeni cu mai puine variabile). 32

21

atunci se va activa (trece n poziia on) bitul de transport din registrul de stare al procesorului. Acest bit se numete Carry. Aplicaia 2.3.3. Considerm dou numere binare a cte doi bii fiecare (x1, x2 biii primului numr; x3, x4 biii numrului al doilea). Funcia boolean va fi evaluat la 1 dac primul numr este cel mai mare i va avea valoarea 0, n caz contrar. Tabelul asociat funciei booleene de comparare este: x1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 x2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 x3 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 x4 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 fc 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 Cea mai simpl form ND este: fc (x1, x2, x3, x4) = x1x3+x1x2x4+x2x3x4, iar circuitul poate fi reprezentat grafic ca mai jos.

2.4. Exerciii
1. S se simplifice expresiile booleene:
a) b) c) x y z + x y z + x y z (x+ y + z) (x + y+ z) (x+ y+ z) x y + xz + xy z.

Rspuns: Folosind regulile de calcul specifice unei algebre Boole, se obin urmtoarele rezultate: a) x(y+ yz), b) x z + xy+ xz, c) xy + xz. 2. S se determine forma normal disjunctiv a funciei f83 (x, y, z). Rspuns: Tabelul funciei f83 este: x Y z f83(x, y,z) 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1
33

Conform teoremei de reprezentare sub forma normal disjunctiv rezult c f83(x,y,z) = x yz + x y z + x y z + x y z (= x y + x z + y z). 3. S se determine forma normal conjunctiv a funciei f(x, y, z, w) = x y + y z w + x w. Rspuns: Tabelul valorilor funciei f este: x 0 0 0 0 0 0 0 y 0 0 0 0 1 1 1 z 0 0 1 1 0 0 1 w 0 1 0 1 0 1 0 f(x,y,z,w) 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1

Rezult c f(x, y, z, w) = (x + y + z + w) (x + y + z + w)(x + y + z +w) (x + y + z + w) (x + y + z +w) (x + y + z + w) (x + y +z +w). 4. S se simplifice funcia de 4 variabile f(x, y, z, w) = x y z w + x y z w + x y z w + x y z w + x y z w + x y z w. Rspuns: f(x, y, z, w ) = x y + x z w + y z w. 5. S se reprezinte grafic circuitul combinaional descris de funcia f care apare n exerciiul 4. Rspuns: Folosind notaiile grafice de mai sus, rezult:

6. S se demonstreze c n orice algebr Boole (B, +, , ', 0, 1) au loc regulile de calcul: a) Din x+y = 1 i xy = 0 rezult y = x. b) x + 0 = x, x1 = x. c) x + 1 = 1, x0 = 0. d) x + y = 0 dac i numai dac x = y = 0; xy = 1 dac i numai dac x = y = 1. e) (x + y)=xyi (xy)=x + y(legile lui De Morgan.)
34

3. STRUCTURA SISTEMELOR DE CALCUL


3.1. Resursele fizice ale sistemelor de calcul 3.1.1. Generaii de calculatoare
Tehnica de calcul a evoluat de la abac pn la supercalculatoarele actuale (sisteme hipercub .a.). n aceast evoluie se disting urmtoarele etape 22 : etapa dispozitivelor mecanice i electromecanice i etapa calculatoarelor electronice. Primul calculator electronic comercial a fost sistemul ENIAC (1942-1945). Aproximativ n acea perioad, John von Neumann (1944) a stabilit c un sistem de calcul trebuie s asigure urmtoarele funcii: memorare, comand si control, prelucrare, intrare-iesire. Primul calculator romnesc a fost CIFA-1 (1957) realizat la Institutul de Fizic Atomic de ctre un colectiv condus de inginerul Victor Toma 23 . Un sistem de calcul MECIPT 24 -1, din prim generaie, a fost realizat i la Timioara n anul 1961 25 . Trebuie remarcate i sistemele de tip DACICC realizate la Cluj sub conducerea savantului romn T. Popoviciu 26 . Nu trebuie uitat faptul c au fost dezvoltate i alte sisteme de calcul n perioada 1960-1989 27 . Etapele de dezvoltare a calculatoarelor electronice sunt cunoscute sub numele de generaii de calculatoare. Pn n prezent au fost parcurse cinci generaii: generaia tuburilor electronice (programe binare sau cablate, suport informaional: cartela perforat sau banda de hrtie perforat), generaia tranzistorilor i diodelor (apar suporturile magnetice, apar limbajele de programare: FORTRAN: eng. FORmula TRANslation, COBOL: eng. COmmon Business-Oriented Language, ALGOL: eng. ALGOrithmic Language .a., apar
Pentru detalii istorice i vizite virtuale putei accesa: http://archive.computerhistory.org/search/ 23 Alte sisteme de calcul romnesti au fost CET (IFA Bucureti), DACICC (Cluj), MECIPT (Timioara) etc. pentru a meniona numai sistemele proiectate i instalate nainte de 1970. Pentru mai multe detalii se poate consulta: Mihai Drgnescu, Realizarea de calculatoare i retele de calculatoare n Romnia, http://www.atic.org.ro/anexe/MD.htm, ATIC, 2001. 24 http://ro.wikipedia.org/wiki/MECIPT. 25 MECIPT-1, http://www.infotim.ro/mbt/tic/mecipt1.htm, Main Electronic de Calcul a Institutului Politehnic din Timioara. 26 http://www.cs.ubbcluj.ro/www/index.php?module=pagemaster&PAGE_user_op = view_page & PAGE_id=107 27 http://www.racai.ro/MD75/CarteMD75/art09Guran.pdf 35
22

primele sisteme de operare), generaia circuitelor integrate (apare conceptul de firmware, apar sisteme de operare evoluate rezidente pe disc (DOS: eng. Disk Operating System), apar noi limbaje de programare: PL/1, Pascal, LISP: eng. LISt Processing, BASIC), generaia VLSI: eng. Very Large Scale Integration (apar microprocesoarele, noi tipuri de arhitecturi: microcalculatoarele (de exemplu cele compatible IBM PC eng. Personal Computer, staiile MAC etc.), sisteme de operare precum CP/M, DOS (de la IBM sau Microsoft); se dezvolt reelele de calculatoare; apar limbajele de programare orientat spre obiecte) i generaia inteligenei artificiale (n continu dezvoltare) cu trimitere ctre viitoarele sisteme neurale, sisteme cuantice, calcul ADN etc. Cele mai populare sisteme de calcul ale momentului sunt cele dezvoltate n jurul proiectului IBM PC (aa numitul personal computer). Un microcalculator IBM sau o clon PC este format din trei pri: unitatea sistem (eng. system unit), tastatura (eng. keyboard) i ecranul (eng. display screen). Unitatea sistem este construit modular. Partea cea mai important este placa de baz (eng. mother board sau main board). Ea conine circuitele electronice cele mai importante: microprocesorul, ceasul (eng. clock), coprocesorul matematic (la generaiile mai vechi), memoria RAM (eng. Random Access Memory) i memoria ROM (eng. Read Only Memory). n plus, unitatea sistem mai conine: sursa de alimentare, ventilatoare i unitile de discuri. Diferitele plachete pentru cuplarea unor dispozitive de intrare-ieire (imprimant, disc, modem etc.) se cupleaz la placa de baz folosind conectorii la magistral. Magistrala (eng. bus) este un canal comun de comunicaie ntre plachetele calculatorului prin care circul semnalele de dialog ntre componente. Plachetele pot fi introduse opional n sloturi (conectori), n funcie de dorina utilizatorului. Cele mai importante plachete sunt: adaptorul video (eng. display screen adapter), adaptorul sau cuplorul de disc, plachetele de memorie, plachetele de comunicaie (pentru imprimant, modem etc.). Pentru microcalculatoare compatibile IBM-PC se utilizeaz mai multe tronsoane de magistral: ISA (eng. Industry Standard Architecture) , MCA (eng. Micro Channel Architecture), EISA (eng. Extended Industry Standard Architecture), PCI (eng. Peripheral Component Interconnect), etc. Prin intermediul magistralei se asigur o arhitectur deschis, astfel c utilizatorii pot extinde sistemul prin inserarea de plachete, cum a fost precizat mai sus. Totui numrul sloturilor este limitat. Conectarea unui numr suplimentar de dispozitive se poate realiza prin intermediul unui adaptor SCSI (eng. Small Computer System Interface se pronun scazzy). Se pot conecta pn la 7 dispozitive: imprimante, discuri rigide, uniti CD-ROM / CD-RW, etc. Minicalculatoarele sunt sisteme de calcul cu dimensiune i performane de prelucrare situate ntre cele ale microcalculatoarelor i sistemelor mainframe 28 . Ele sunt utilizate de companiile medii sau departamentele companiilor mari pentru monitorizarea proceselor de fabricaie, gestiunea economic sau cercetare.

28

Wiki, Mainframe computer, http://en.wikipedia.org/wiki/Mainframe_computer . 36

Sistemele mainframe sunt calculatoare de dimensiune mare care necesit condiii speciale de funcionare (de exemplu, aer condiionat), dar au putere mare de calcul i pot stoca cantiti uriae de date. Sunt utilizate de organizaiile mari companii multinaionale, agenii guvernamentale, bnci, universiti etc. pentru a prelucra un numr foarte mare de tranzacii pe unitatea de timp. Supercalculatoarele (eng. supercomputers) sunt cele mai puternice sisteme de calcul 29 . Ele sunt utilizate n cercetare de organizaii puternice pentru explorarea resurselor, simulri, predicii etc.

3.1.2. Procesor. Caracteristici. Set de instruciuni


Una dintre componentele principale ale oricrui sistem de calcul o reprezint procesorul. Procesorul actualelor sisteme poate fi de tip special, un microprocesor sau un ansamblu integrat de (micro)procesoare. Orice procesor conine patru blocuri funcionale de baz: unitatea de comand i control (UCC), unitatea aritmetico-logic (UAL), registrele procesorului 30 , unitatea de interfa cu celelalte componente (UI). Procesoarele performante utilizeaz structuri de date avansate precum stivele. Acestea sunt utile pentru salvarea contextului unei activiti nainte de ntreruperea acesteia. Primele trei componente formeaz unitatea de executare. UCC comand, coordoneaz i controleaz ntreaga activitate de prelucrare la nivelul componentelor calculatorului. Ea va executa instruciunile unui program. UAL realizeaz prelucrarea datelor cerut prin instruciuni: operaii aritmetice, logice, de comparare etc. Registrele reprezint o memorie foarte rapid a procesorului n care se pstreaz codul instruciunilor, datele de prelucrat, rezultatele prelucrrilor etc. Cele mai importante registre ale unui procesor sunt: registrul acumulator, registrul numrtor de adrese al programului, registrul indicatorilor de condiii (valoare negativ, pozitiv sau nul, transport n urma executrii operaiilor de calcul etc.), registrul de instruciuni i registrul de adresare a memoriei. n general, registrul acumulator pstreaz unul dintre operanzii unei instruciuni de calcul, fiind totodat i destinaia rezultatului operaiei. Registrul numrtor de adrese al programului sau registrul contor-program, arat adresa, n memoria intern, unde se afl stocat urmtoarea instruciune de executat. Indicatorii de condiie sunt poziionai automat n urma efecturi anumitor operaii. Registrul de instruciuni memoreaz instruciunea ce se execut. Coninutul acestui registru este analizat pentru a se determina operaia de executat, locul unde se afl stocai operanzii precum i locul unde va fi stocat rezultatul, dac instruciunea este una de calcul, respectiv adresa unde se va face un salt n program sau adresa unei zone de memorie unde/de unde se va stoca/citi o anumit dat, n alte situaii.
29 30

Wiki, Supercomputer, http://en.wikipedia.org/wiki/Supercomputer . Wiki, Processor register, http://en.wikipedia.org/wiki/Processor_register . 37

Registrul de adresare a memoriei pstreaz adresa curent folosit pentru efectuarea accesului la memorie. De obicei, adresa efectiv se obine n urma unui calcul de adres. UI asigur legtura dintre procesor i celelalte componente ale calculatorului ndeplinind funcia de transfer de date de la/spre procesor. Comunicarea procesorului cu celelalte componente: adaptorul video, adaptorul de disc etc. se face prin intermediul porturilor (puncte de intrare n procesor). Acestea pot fi porturi de intrare (vin date de la componente) respectiv porturi de ieire (pornesc date spre componente). n practic, un port este identificat printr-un numr (unic). Deoarece un sistem de calcul execut mai multe activiti, acestea pot avea nevoie de controlul procesorului. Rezult necesitatea ntreruperii unei activiti pentru a trece la o alt activitate. Aceste comutri sunt determinate fie prin hardware, fie prin software. ntreruperea hardware este declanat la apariia unui semnal de ntrerupere prin care procesorului i se cere s analizeze un anumit eveniment. Dup ce au fost iniiate de ctre procesor, unele activiti se pot desfura fr controlul procesorului, de exemplu modul de prelucrare DMA 31 (eng. Direct Memory Accesss.) Performanele procesorului pot fi exprimate prin: durata ciclului procesorului, lungimea cuvntului, repertoriul de instruciuni, numrul adreselor dintr-o instruciune, durata executrii instruciunilor etc. Durata ciclului procesorului reprezint intervalul de timp n care se efectueaz un transfer ntre dou registre ale procesorului. Lungimea cuvntului poate fi de 8 bii, 16 bii, 32 bii, 64 bii etc. n funcie de tipul procesorului. Repertoriul de instruciuni conine cel puin urmtoarele grupe de operaii (mnemonicele instruciunilor au caracter orientativ): - instruciuni generale (MOV - mutare de informaie (ncrcare n registre LD; stocare n memorie ST, atribuire condiionat (CS, ZS)), PUSH - punere de informaii n memoria organizat ca o stiv, POP - aducerea informaiei din memoria stiv etc.); - instruciuni de intrare/ieire (IN - depunerea n registrul acumulator a informaiei stocate n registrul de intrare/ieire (portul de date), OUT scrierea n portul de date a informaiei aflate n registrul acumulator); - instruciuni aritmetice: adunare (ADD, ADC, INC etc.), scdere (SUB, DEC, NEG, CMP etc.), nmulire (MUL, IMUL etc.), mprire (DIV, IDIV etc.); - instruciuni de calcul n virgul mobil (FADD, FSUB, FMUL, FDIV, FSQRT, FEQLE, FEQL etc.); - instruciuni de manipulare a irurilor de bii: operaii logice (NOT, AND, OR, XOR, TEST), deplasare (SHL, SAL, SHR, SAR), rotire (ROL, ROR, RCL, RCR); - operaii la nivel de octet (DIF, MOR, MXOR)
31

Wiki, Direct memory access, http://en.wikipedia.org/wiki/Direct_memory_access . 38

instruciuni de transfer n regim de anticipare a salturilor (PBN, PBZ, PBP etc ) sau de transfer fr anticipare : salt necondiionat (CALL, RET, JMP, GO), salt condiionat - prin testarea indicatorilor de condiii (JC, JNC, JE, JG, JL, BN, BZ, BP etc.), cicluri (LOOP etc.), ntreruperi (INT, IRET, TRIP/TRAP etc.); - instruciuni de sincronizare extern (HLT, WAIT, NOP etc.) Durata executrii unei instruciuni reprezint timpul necesar desfurrii fazei de citire-interpretare i a fazei de execuie a acelei instruciuni. Pentru microcalculatoare, procesorul este reprezentat de un singur circuit integrat (eng. silicon chip), numit microprocesor (eng. microprocessor microscopic processor). Microcalculatoarele prelucreaz (proceseaz) date i instruciuni n milionimi de secund, sau microsecunde, supercalculatoarele realizeaz prelucrri n nanosecunde i chiar picosecunde, ele fiind de peste un milion de ori mai rapide dect microcalculatoarele. n acest moment, exist dou categorii de microprocesoare: CISC 32 (eng. Complex Instruction Set Computer) i RISC 33 (eng. Reduced Instruction Set Computer). Cele mai rspndite microprocesoare sunt cele CISC (avnd ca reprezentai microprocesoarele INTEL : X86, Pentium). Microprocesoarele RISC implementeaz mai puine instruciuni, sunt mai simplu de proiectat i mai ieftine. Cteva exemple de microprocesoare RISC sunt: PowerPC dezvoltat de Motorola, IBM i Apple; Alpha i MIPS R400 dezvoltate de Digital Equipment Corporation. O abordare special o reprezint arhitectura CISC bazat pe tehnici de tip RISC care duce la o vitez de executare a aplicaiilor CISC comparabil cu cea a sistemelor RISC. Un exemplu interesant de procesor a fost propus de D. Knuth pentru implementarea calculatorului MMIX. Caracteristicile acestuia vor fi descrise n capitolul 4. Unelte software pentru experimentare pot fi obinute de la: http://www.cs.fhm.edu/~mmix/tools/tools.html (de exemplu).

3.1.3. Memorii
Stocarea informaiilor n sistemul de calcul se realizeaz prin intermediul memoriei. Memoria este spaiul de lucru primar al oricrui sistem de calcul. n funcie de locul ocupat, distingem: memoria central (numit i memoria principal sau intern) i memoria secundar (numit i auxiliar sau secundar). n memoria central sunt stocate programele i informaiile utilizate de ele n timpul execuiei lor de ctre procesor. Memoria secundar pstreaz cantiti mari de date i programe folosite frecvent i ncrcabile rapid n memoria central. Memoria unui sistem de calcul este caracterizat prin: capacitate, timp de acces, vitez de transfer, cost, mod de accesare a informaiei stocate etc.

32 33

Wiki, Complex instruction set computer, http://en.wikipedia.org/wiki/CISC . Wiki, Reduced instruction set computer, http://en.wikipedia.org/wiki/RISC . 39

Capacitatea memoriei este definit prin numrul de uniti de informaie (caractere, cuvinte) disponibile pentru stocarea informaiei. n general 34 , capacitatea memoriei se exprim n sistemul binar prin MB (mega octei, eng. mega bytes): 1 MB = 1024 KB = 1024*1024*8 bii). Localizarea zonelor de memorie (intern sau extern) se realizeaz prin intermediul adresei. Prima locaie a memoriei centrale are adresa 0 (zero). Dac unitatea de stocare este octetul, atunci adresa 10 (scris zecimal) reprezint locaia a unsprezecea. Timpul de acces exprim durata intervalului n care poate fi obinut informaia stocat n memorie. Viteza de transfer se exprim prin numrul de uniti de informaie transferate de memorie n unitatea de timp. n funcie de natura accesului la informaia ce o nmagazineaz, memoria central a unui calculator poate fi cu acces numai n citire i respectiv, cu acces n scriere i citire. Memoria de tip "numai citirea este permis" (ROM- eng. "Read Only Memory") se mai numete i memorie permanent sau nevolatil, deoarece programele i datele ce au fost nscrise n ea sunt fixate o dat pentru totdeauna. n general, n aceast memorie este depozitat firmware-ul 35 (secven de instruciuni cu destinaie special). Memoria ce permite acces de tip "citire-scriere" se mai numete memorie cu acces aleator (RAM- eng. Random Access Memory) - dei, tot cu acces aleator este i memoria ROM - i este de tip volatil (trebuie s fie alimentat electric pentru a reine date). Din punct de vedere tehnologic au fost realizate dou clase de memorii RAM (SRAM: Static RAM i DRAM: Dynamic RAM). Atributul dinamic specific necesitatea unui interval de timp foarte mic ntre momentele de remprosptare (eng. refresh), remprosptarea realizndu-se de sute de ori pe secund pentru a se reine datele stocate n celulele de memorie. DRAMDe fapt, trebuie s facem diferen ntre denumirile adoptate n sistem decimal (folosit n afaceri) i cele caracteristice sistemului binar (folosit n programare). Astfel, sunt n uz urmtoarele prefixe: prefix zecimal binar 1024 = 210 = 1.024 kilo (K) 1000 = 103 10242 = 220 = 1.048.576 mega (M) 10002 = 106 3 9 10243 = 230 = 1.073.741.824 giga (G) 1000 = 10 4 12 10244 = 240 = 1.099.511.627.776 tera (T) 1000 = 10 5 15 10245 = 250 = 1.125.899.906.842.624 peta (P) 1000 = 10 6 18 10246 = 260 = 1.152.921.504.606.846.976 exa (E) 1000 = 10 7 21 10247 = 270 = 1.180.591.620.717.411.303.424 zetta (Z) 1000 = 10 8 24 10248 = 280 = yotta (Y) 1000 = 10 1.208.925.819.614.629.174.706.176 Ultima actualizare a acestui sistem a fost realizat n 1991. A se vedea http://www.bipm.fr/fr/CGPM/db/19/4/ i http://www.technoscience.net/?onglet=glossaire&definition=1653. 35 Firmware este un cuvnt care iniial a fost folosit pentru a desemna microprogramele cu ajutorul crora se realiza unitatea de comand i control a unui procesor. Astzi desemneaz i secvenele de cod (n limbajul procesorului) ce implementeaz interpretoare, nuclee de intrare-ieire etc. De asemenea, aceast component este util n implementarea stardardului PnP (eng. Plug and Play) util n reconfigurarea automat a sistemelor de calcul. 40
34

ul este preferat pentru memoria principal a sistemelor, n timp ce SRAM-ul, care nu necesit remprosptare este utilizat n primul rnd la implementarea memoriei cache 36 . Rolul memoriei cache const n memorarea datelor i instruciunilor solicitate frecvent de ctre procesor. Memoria cache este primul loc unde procesorul caut datele de care are nevoie. Numai dac acestea nu se afl n memoria cache ele vor fi cutate n memoria principal (fiind transferate blocuri de date/instruciuni n memoria cache). Exist mai multe tipuri de module DRAM utilizate n sistemele de calcul moderne: SDRAM (eng. Synchronous DRAM), RDRAM (eng. Rambus DRAM), DDR i DDR2 (Double-Data-Rate Synchronous DRAM) .a. Circuitele de stocare nevolatile se ncadreaz n urmtoarele clase: - PROM (eng. Programmable Read-Only Memory) pentru nregistrarea codului cu ajutorul unui echipament special, odat ce este scris nu se mai poate schimba; - EPROM (eng. Erasable Programmable Read-Only Memory) circuit de stocare de tip ROM care poate fi ters cu ajutorul unui mediu n ultraviolet, iar apoi poate fi rescris, - Flash (un tip de memorie nrudit cu EPROM).

3.1.4. Dispozitive periferice


Totalitatea echipamentelor unui sistem de calcul diferite de unitatea central i memoria intern formeaz mulimea echipamentelor periferice. Din aceast categorie fac parte unitile de memorie extern, echipamentele de intrare, echipamentele de ieire i echipamentele de intrare/ieire. Discurile magnetice: Una dintre cele mai importante uniti de memorare extern este unitatea de disc magnetic. Memorarea informaiei pe discul magnetic urmeaz acelai principiu fizic cu cel utilizat n nregistrarea casetelor i benzilor audio-video. Deosebirea principal ntre cele dou sisteme de memorare este datorat naturii semnalului de nregistrare folosit: analogic, n cazul audio-video i numeric (eng. digital), n cazul discurilor sistemelor de calcul. Diferena fa de benzile magnetice (nregistrate totr numeric) const n modul de acces. Pe band accesul este secvenial, pe disc accesul este direct, dup cum se va vedea mai jos. Din punct de vedere fizic, o unitate de disc magnetic are n compunere unul sau mai multe platane, fiecare platan cu una sau dou suprafee de nregistrare, attea capete de citire/scriere cte suprafee de nregistrare exist, un bra ce permite accesul de la exterior spre centrul platanului al capetelor de citire/scriere, motoare pentru rotirea platanelor i deplasarea braului, precum i un set de circuite specializate (numit controler, cuplor sau adaptor) pentru comanda ntregului mecanism.

Memoria de tip cache poate aparine att procesorului (fiind integrat acestuia), dar i spaiului RAM. De aceea, recent, se utilizeaz organizarea stratificat pe niveluri - a memoriei cache. 41

36

Discurile magnetice care conin un singur platan se numesc discuri floppy, iar platanul propriu-zis se numete dischet sau disc flexibil. Discurile coninnd mai multe platane se numesc discuri rigide sau discuri dure (eng. harddisk). Att pentru dischete, ct i pentru discul rigid, ntreaga colecie de date formeaz aanumitul volum. Suprafeele de nregistrare ale unui disc magnetic sunt mprite ntr-un numr fix de cercuri concentrice, fiecare cerc numindu-se pist. Adresa unei piste este definit de o pereche de numere ntregi reprezentnd numrul curent al suprafeei de nregistrare, respectiv numrul curent al pistei. Suprafeele de nregistrare se numeroteaz ncepnd de la zero, de sus n jos. Pistele se numeroteaz cresctor de la pista de raz maxim (indice 0) spre pista de raz minim. Aceast numerotare se reia pentru fiecare suprafa de nregistrare. Mulimea pistelor de pe toate suprafeele de nregistrare identificate prin acelai numr formeaz un cilindru. Cilindrii se numeroteaz de la zero, cresctor, ncepnd cu cel cu diametrul maxim spre cel cu diametrul minim. Fiecare pist este mprit n sectoare, de lungime fix, de regul 512 octei. Fiecare sector este adresat fizic de un triplet de numere ntregi reprezentnd numrul cilindrului, numrul suprafeei i numrul sectorului. Numerotarea sectoarelor pe cilindru ncepe de la unu. Pe fiecare cilindru, numrul de sectoare este acelai. Din punct de vedere logic, pistele sunt numerotate ncepnd de la zero pe suprafaa de nregistrare zero i continund cresctor pn la epuizarea suprafeelor i pistelor. De asemenea, sectoarele sunt numerotate ncepnd de la zero (cilindrul zero, suprafaa zero), cresctor pn la epuizarea sectoarelor suprafeelor cilindrilor. Adresa fiecrui sector este nscris la nceputul acestuia ntr-un antet ce mai conine i o secven de octei de sincronizare utilizai de adaptor (cuplor) pentru identificarea unei adrese disc. Operaia de scriere a adresei i a celorlalte elemente ale antetului sectoarelor se numete formatare fizic a discului. Pentru sisteme de calcul care folosesc sisteme de operare de la Microsoft, in cazul modului de operare text (comanda cmd), formatarea fizic a dischetelor este realizat de comanda FORMAT. Pentru discul rigid, formatarea fizic este realizat, n majoritatea cazurilor, de ctre fabricantul acestuia. Cele de mai sus arat c discul magnetic este o memorie accesabil prin adres, deci datele se obin prin acces direct. Performanele unui disc magnetic depind de urmtorii factori: timpul de poziionare, numrul de rotaii pe minut, rata de transfer a discului etc. Discurile flexibile au dou suprafee pe care se poate scrie informaia i pot fi protejate la scriere prin fanta de protecie (n poziia liber). Cuplarea unitilor de disc se poate realiza intern (prin intermediul unei interfee standard: IDE, SCSI etc.) sau extern (prin intermediul interfeei paralele). Din punct de vedere constructiv, discurile rigide sunt de tip intern (capacitate fix, suportul de memorare nu poate fi demontat din unitatea de disc), cartridge (capacitate variabil suportul poate fi evacuat precum o caset din cititorul/nregistratorul de casete (casetofon sau videocasetofon), respectiv pachet de discuri (care se monteaz n unitile speciale de citire-scriere ale mini i supercalculatoarelor).
42

Discurile optice: Cele mai recente uniti de memorie extern sunt unitile de disc optic sau magneto-optic. nscrierea optic a informaiei este un proces care folosete un fascicul de lumin (o raz laser) fie pentru citirea i/sau nregistrarea datelor, fie pentru a ajuta la realizarea acestor operaii pe un suport sensibil optic. Citirea datelor se bazeaz pe evidenierea unor modificri survenite n fasciculul de lumin reflectat de suport. Operaia de scriere folosete un fascicul laser pentru modificarea (sau pentru a facilita modificarea) unui material sensibil la lumin amplasat pe suport. Din punct de vedere tehnologic distingem urmtoarele tipuri de discuri optice: - discurile CD-ROM (eng. Compact Disc Read-Only Memory): Sunt discuri compacte prenregistrate pe care informaia nu poate fi actualizat. Coninutul unui astfel de disc este nscris de ctre productorul su i poate fi doar citit de ctre utilizator. - discurile CD-R (eng. C D-Recordable): Sunt discuri compacte ce pot fi nregistrate de ctre posesor, dac acesta dispune de un dispozitiv periferic special i programele de baz aferente. Dup nregistrare, fostul CD-R devine un CD-ROM pe care l poate citi orice unitate de citire CD-ROM. Discurile CD-R se mai numesc discuri WORM (eng. Write Once, Read Many). - discurile CD-E: sunt discuri compacte de pe care informaia poate fi tears. Aceste discuri suport un numr limitat de cicluri de citire/scriere. - discuri MO (magneto-optice): Sunt discuri la care scrierea se realizeaz magnetic, iar citirea optic. Aceste discuri pot fi scrise de cte ori este necesar, atta vreme ct suportul nu este deteriorat. Ele fac parte din clasa, mai larg, a discurilor RW (eng. ReWriteable optical discs). Caracteristicile principale ale unui disc optic sunt: dimensiunea (5,25" sau 3,5"), capacitatea de stocare, numrul de cicluri de citire/scriere (pentru CD-E) etc. Discurile compacte nregistrabile tind s devin cel mai convenabil suport pentru salvarea i transportul datelor. Ele pot stoca un volum mare de date (sute de MB), iar costul este din ce n ce mai mic. Astfel, ele tind s nlocuiasc dischetele, benzile i casetele magnetice n multe aplicaii de transport i arhivare a datelor. Noua generaie a discurilor optice o reprezint suportul DVD (eng. Digital Video/Versatile Disc.) cu caractersitici superioare suportului CD. Componentele principale al unei uniti DVD sunt urmtoarele: a) mecanismul pentru citirea discului; b) procesorul de semnal DVD-DSP (eng. Digital Signal Processing); c) decodorul digital audio/video i d) modulul de control. Exist mai multe tipuri de suporturi (deci i de uniti de citire/scriere) DVD: a) DVD-R (DVD Recordable) nregistrabile o singur dat; b) DVD RW (Read/Write), DVD RAM (Random Access Memory) i DVD+RW (bazate pe o tehnologie cu schimbare de faz: Phase-Change Rewritable). Terminalul: Deoarece unitile de memorare extern, de obicei, permit att scrierea ct i citirea informaiei, aceste dispozitive periferice pot fi considerate i ca dispozitive de intrare-ieire. Un alt dispozitiv periferic de intrare-ieire este
43

terminalul. Prin intermediul acestuia se asigur comunicaia utilizator - sistem de calcul. Prin intermediul acestuia utilizatorul poate conversa cu calculatorul. La un sistem de calcul pot fi cuplate unul sau mai multe terminale. Din punct de vedere al modului de cuplare la sistemul de calcul distingem dou tipuri de terminale: terminale seriale, terminale "memorie". Din punct de vedere software un rol important l are terminalul virtual 37 . Terminalul serial este cuplat la calculator prin intermediul interfeei de comunicaie standard RS-232 (conector RS-232C). El este compus din tastatur (ca dispozitiv de intrare) i un monitor (ca dispozitiv de ieire). Pentru a transmite un caracter unui astfel de terminal, calculatorul (prin circuitele sale de interfa) transmite: un bit de start, biii ce compun caracterul i unul sau doi bii de stop. Att terminalul ct i calculatorul dispun de circuite hardware specializate n conversia ir de caractere - ir de bii i invers. Interfaa unui terminal "memorie" cu calculatorul este asigurat prin intermediul unei memorii RAM cu destinaie special numit memorie video. Aceast memorie este adresabil ca i memoria principal. Controlul memoriei video i generarea semnalului video pentru monitor sunt realizate de un set de circuite care formeaz adaptorul video. La aceste terminale, tastatura este separat de monitor. Ea este cuplat printr-o interfa paralel (mai muli bii simultan), dar exist i tastaturi cuplate serial. Pentru sistemele de calcul ce utilizeaz terminale "memorie", tastatura este considerat un dispozitiv periferic separat, din clasa dispozitivelor periferice de intrare. Tastatura/Claviatura: Prin intermediul tastaturii utilizatorul poate transmite comenzi calculatorului. Comenzile se introduc sub forma unui ir de caractere (litere, cifre, semne speciale, caractere de control). Fiecare caracter se genereaz prin acionarea uneia sau mai multor taste (butoane; eng. keys). Acionarea unei taste sau combinaii de taste are ca efect nchiderea unui circuit electronic prin care se genereaz un cod unic, care este codul ASCII (sau Unicode) al caracterului respectiv. Orice tastatur modern are patru blocuri de taste: 1. Tastatura mainii de scris. Sunt disponibile butoane pentru introducerea urmtoarelor date simple: cifre, literele mari i mici, semne speciale, bara de spaiu, retur de car (CR - Carriage Return), salt la linie nou (LF - Line Feed), saltul cursorului cu un numr de coloane (Tab), ntreruperea unei activiti (Esc- Escape), tiprirea imaginii ecranului sau memorarea acesteia (Print Screen), suspendarea temporar a executrii unui program (Pause/Break). 2. Tastatura de editare. Editarea unui text const n scrierea textului i corectarea acestuia. Textul este afiat pe ecran. Acolo apare i o bar luminoas sau un indicator special (cursor 38 ) care arat poziia n care va fi
Terminalul (Consola) virtual() poate fi vazut() ca o aplicaie de serviciu care permite a) terminalelor unei reele multiuser s interacioneze cu alte sisteme pe baza tipului i caracteristicilor terminalului; b) accesul la distan pentru managementul resurselor logice ale unui sistem de calcul; c) crearea mai multor instane terminal etc. 38 A nu se confunda cu sensul precizat n DEX1996. 44
37

inserat urmtorul caracter. Sunt disponibile urmtoarele butoane: tastele sgei (pentru deplasarea cursorului), tastele Page Up i Page Down care comand deplasarea cursorului n sus / jos cu un anumit numr de rnduri, tastele Home i End care comand deplasarea cursorului la nceputul / sfritul textului, tasta Insert pentru alegerea tipului de corectur (cu suprascriere sau cu inserare), tastele pentru tergere (Delete terge caracterul din poziia cursorului, Backspace terge caracterul de la stnga cursorului). 3. Tastatura numeric conine tastele pentru cifre i operaiile aritmetice: + (adunare), - (scdere), * (nmulire) , / (mprire) i . (punct) ca separator ntre partea ntreag i partea zecimal a unui numr (conform sistemului englezesc de scriere). 4. Tastele funcionale: cele 12 butoane F1, F2, , F12 crora li se pot asocia diferite aciuni de ctre programatorul de aplicaii. Un utilizator, nainte de utilizarea tastelor funcionale, n cadrul unei noi aplicaii, trebuie s inventarieze lista asocierilor. Aplicaii diferite fac asocieri diferite, pentru aceeai tast. Chiar, n cadrul aceleiai aplicaii, asocierea se poate schimba de la un nivel funcional la altul. Unele taste sunt de tip "cald" (eng. hotkeys), iar altele de tip "rece" (eng. coldkeys). Tastele reci nu genereaz cod ctre calculator ci se folosesc mpreun cu tastele calde pentru a realiza combinaii. Tastele reci sunt: Shift, Ctrl, Alt. De exemplu, majoritatea programelor aplicative folosesc combinaiile: Ctrl+N (pentru lansarea unui nou proiect: program, document, imagine, desen tehnic etc;eng. New), Ctrl+O (ncarc un proiect existent pentru actualizare, tiprire etc; eng. Open), Ctrl+S (nregistreaz pe un suport de memorare extern proiectul curent; eng. Save), Ctrl+P (imprim imaginea proiectului curent folosind o imprimant sau trimite proiectul prin intermediul unui adaptor de tip fax; eng. Print), Ctrl+X (mut o parte a unui proiect ntr-o zon a memoriei RAM, numit clipboard; eng. Cut), Ctrl+C (copiaz o parte a unui proiect n clipboard; eng. Copy), Ctrl+V (copiaz coninutul zonei clipboard n proiectul curent, n locul specificat de utilizator; eng. Paste) etc. O tastatur are i taste comutator (cu dou stri): CapsLock (asigur comutarea ntre starea care genereaz litere mici i starea care genereaz litere mari), NumLock (comut ntre starea numeric i starea de editare pentru blocul tastelor numerice), Insert (comut ntre corectura prin inserare i corectura cu suprascriere). Monitorul: Monitorul oricrui terminal (compus din ecran i circuite de generarea imaginii) poate lucra n dou moduri: modul text i modul grafic. n modul text ecranul este mprit n rnduri (eng. rows) i coloane (eng. columns). Numrul de rnduri i numrul de coloane este dat de modul de lucru permis de monitor. De obicei sunt 25 de rnduri i 80 de coloane. La intersecia unei linii cu o coloan se genereaz un caracter printr-o matrice de puncte luminoase. Pentru fiecare poziie de afiare, se vor pstra (din motive de remprosptare a imaginii) codul ASCII (Unicode) al caracterului i atributul caracterului (cel care controleaz aspectul caracterului afiat i depinde de adaptorul folosit). De exemplu, pentru calculatoare personale, codul caracterului
45

este stocat folosind 8 bii, iar atributul folosind ali 8 bii. Atributul pentru afiarea color este format din trei elemente: culoarea peniei (eng. foreground), culoare hrtiei (eng. background) i elementul de control al clipirii (eng. blink). Culoarea este specificat cu ajutorul a trei componente fundamentale: R-rou (eng. Red), Gverde (eng. Green) i B-albastru (eng. Blue). n modul grafic ecranul este o suprafa de puncte luminoase numite pixeli (elemente de imagine; eng. picture element). Fiecare pixel este caracterizat prin codul culorii. Urmtoarele elemente caracterizeaz un anumit mod grafic: Rezoluia - numrul de puncte de pe ecran; Definiia - distana dintre dou puncte pe ecran; Numrul de culori. Toate aceste elemente depind de modul grafic suportat de monitor. De exemplu modul VGA (eng. Video Graphics Array) asigur o rezoluie de 640 x 480 puncte i 16 culori, iar modul SVGA (eng. Super VGA) standard asigur rezoluia de 800 x 600 pixeli n 256 culori. Modul XGA (eng. eXtended Graphic Array) afieaz mai mult de 18 milioane de culori pentru o rezoluie de pn la 1024 x 768 de pixeli. Rezoluia sistemelor de afiare este n continu mbuntire. Generarea unor imagini complexe, la o vitez de prelucrare mare, fr aportul procesorului sistemului de calcul, este asigurat astzi de coprocesoarele grafice (numite i acceleratoare) care realizeaz n mod independent: trasarea liniilor, generarea suprafeelor definite prin contur, desenarea umbrelor, deplasarea textului, deplasarea blocurilor de imagine etc. Monitoarele sunt de tip desktop (la locul de munc sau acas) i portabile. Monitoarele desktop, numite i sisteme CRT (eng. Cathode-Ray Tubes) sunt similare ca dimensiune i tehnologie cu receptoarele emisiunilor de televiziune. Sunt de tip ntreesut (eng. interlaced) cu realizarea imaginii pe rndurile impare i apoi pe cele pare i, de tip nentreesut (eng. noninterlaced). ntreeserea provoac plpirea, i deci oboseala ochilor. Monitoarele portabile echipeaz sistemele de tip laptop, notebook, subnotebook i PDA. n ultimul timp acestea echipeaz i sisteme desktop. Dispozitive pentru introducerea informaiei grafice: n categoria dispozitivelor periferice de intrare sunt incluse i echipamentele: mouse 39 , joystick, trackball, tablet grafic sau digitizor (eng. digitizer), creion optic (eng. light pen) etc. Primele trei dispozitive de interaciune controleaz deplasarea unui cursor pe ecranul unui sistem de calcul. Ele difer numai constructiv. Mausul dispune de butoane a cror apsare este interpretat de programele sistemului de calcul care genereaz o secven de operaii specific locului cursorului, butonului apsat i funciilor programului n executare. Creionul optic este un dispozitiv de selecie i se utilizeaz numai n combinaie cu terminale speciale, pentru aplicaii speciale (ex. proiectare grafic, pictur asistat de calculator etc.). Tableta grafic este un digitizor ce poate fi folosit fie pentru selecie, fie pentru introducere de date n
39

Acest dispozitiv este denumit maus (plural: mausuri) n DEX1996: "dispozitiv acionat manual, conectat la un computer, a crui deplasare pe o suprafa antreneaz deplasarea cursorului pe ecran." 46

aplicaii de proiectare nclusiv pentru arhitectur, sisteme informatice geografice etc. Mausul se poate deplasa pe o mas real (eng. pad) i va antrena deplasarea unui cursor pe ecran. Mausul are mai multe butoane utile n efectuarea urmtoarelor operaii: 1. indicare (eng. point) - cursorul mausului este deplasat pentru a indica un anumit punct de pe ecran (deci reprezentarea unui anumit obiect); 2. clic (eng. click) - se acioneaz, foarte scurt, un buton al mausului. Codul ce controleaz funcionarea mausului va trata evenimentul aprut; 3. clic dublu (eng. double click) - se acioneaz, foarte scurt, de dou ori, un buton al mausului; 4. tragere (eng. drag) - se asigur deplasarea mausului pe masa real, acesta avnd un buton apsat continuu. Tabletele grafice se pot clasifica pe baza a dou criterii: a) dup dimensiunea suprafeei active: A4, A3, A0; b) dup precizie i acuratee: pentru digitizare de planuri i pentru meniuri. Ele pot fi echipate cu un stylus sau un puck cu 4-16 butoane programabile. Un alt periferic de intrare, cu aplicaii n introducerea imaginilor, este scanerul (eng. scanner). Dup citirea imaginii, aceasta poate fi prelucrat: mrit, micorat, rotit, colorat, suprapus cu alte imagini i analizat folosind diferite metode. Principiul fundamental al funcionrii scanerului l reprezint modificarea intensitii unui fascicul luminos la ntlnirea unei suprafee de o culare oarecare. Scanarea unui document se desfoar n dou faze. Un fascicul luminos, n prima faz, baleiaz (scaneaz) documentul linie cu linie, iar fascicolul luminos care se reflect este direcionat (cu ajutorul unui sistem de oglinzi i lentile) spre o mulime de celule fotosensibile CCD (eng. Charge-Coupled Device). n etapa urmtoare, CCD-ul transform semnalele luminoase recepionate n semnale electrice care dup o conversie analog-digital sunt trimise programului care va salva imaginea. Scanerele color obin trei versiuni ale documentului de scanat: una de culoare roie (eng. red), una de culoare verde (eng. green) i una de culoare albastr (eng. blue) care contribuie la imaginea final. Observm c ceea ce se introduce nu este un punct ci o suprafa de puncte. Caracteristicile unui scaner sunt: a) rezoluia optic- numrul de puncte pe unitatea de suprafa pe care le poate citi (eng. dots per inch); b) numrul de culori i c) viteza de scanare (explorare). Alte scanere sunt specializate: cititorul de bare (eng. Bar Code Reader), cititorul de taloane (eng. Badge Reader), cititorul de text (eng. Document Scanner sau OCR Scanner), cititoare cu cerneal magnetic a nscrisurilor bancare (eng. Magnetic Character Ink Reader) etc. Transmiterea/Recepionarea documentelor la/de la distan se poate realiza, pe linie telefonic, folosind un adaptor special (modem) i un fax (eng. facsimile transmission machines). n prezent cele dou componente sunt integrate pe o plachet numit internal fax-modem sau ntr-un dispozitiv extern care se cupleaz la un sistem de calcul prin portul serial.
47

Echipamente de ieire: Din categoria echipamentelor de ieire ne vom referi la urmtoarele: imprimanta, plotterul i fotoplotterul. Plotterele au fost primele dispozitive periferice care au oferit sistemelor de calcul posibilitatea de a produce ieiri n form grafic. Plotterele pot fi cu peni, cu jet de cerneal, de tip termic i de tip electrostatic. Plotterele au n componen procesoare grafice proprii. De exemplu, plotterele cu peni recunosc primitive grafice precum: linie, poligon, arc de cerc, text etc. Dac suportul de informaie este filmul fotografic atunci dispozitivul asemntor plotterului, dar instalat n codiii specifice se numete fotoplotter. Imprimantele sunt dispozitive de afiare alfanumeric sau grafic. Ele pot fi: cu ace, cu jet de cerneal, cu transfer termic sau pe baz de laser. Sistemele multimedia accept i intrare/ieire sonor dispunnd de dispozitive specializate pentru analiza/sinteza vocii. Conversia vocii unei persoane n code numeric se realizeaz n scopul recunoaterii vorbirii. Sunt disponibile sisteme integrate pentru recunoaterea vorbirii (la nivel discret i la nivel continuu). Acestea sunt sisteme speciale care realizeaz i traducerea dintr-o limb n alta, a mesajului vorbit. Alte echipamente, a cror prezentare nu este realizat aici, sunt destinate redrii unor aspecte ale realitii virtuale: mnua de date (eng: data glove), casca VR (HMD: Head Mounted Display), camera VR (CAVE: Cave Automatic Virtual Environment) etc.

3.1.5. Viteza de procesare


Un sistem de calcul este un dispozitiv automat n care datele reprezentate n binar sunt prelucrate pe baza unui program ce indic o succesiune determinat de operaii. Datele iniiale de prelucrat i programul constituit din instruciuni se introduc n sistemul de calcul prin intermediul unor dispozitive periferice de intrare. Prin intermediul unor canale de comunicaie, datele i instruciunile sunt transferate n memoria intern sub form binar, n locaii identificabile prin adresele la care au fost memorate (i nu prin coninutul acestora). Apoi fiecare instruciune este trimis la UCC care interpreteaz coninutul acesteia i trimite comenzi ctre: 1. memorie - prin care se solicit ca anumite date, localizate prin adresele la care sunt memorate, s fie transferate ctre UAL pentru execuia anumitor operaii; dup realizarea operaiei se va indica adresa din memorie unde se va depune rezultatul operaiei efectuate de UAL; 2. UAL - i se va solicita execuia operaiei indicate de instruciune; 3. canalele de intrare-ieire - pentru preluarea altor date i instruciuni de la dispozitivele de intrare-ieire, respectiv pentru nceperea transferului rezultatelor din memorie ctre dispozitivele periferice de ieire. Dup terminarea execuiei operaiilor solicitate, rezultatele memorate la anumite adrese din memorie sunt transferate ctre dispozitivele de ieire pentru vizualizarea acestora.
48

Creterea vitezei de procesare a fost posibil prin accelerarea executrii instruciunilor (de exemplu prin tehnica pipeline band de asamblare), dar i prin utilizarea unor tehnici de organizare a memoriei (de exemplu prin utilizarea memoriei cache). Memoria cache este reprezentat de un bloc de memorie de dimensiune mai mic, dar cu timp de rspuns forte scurt, care funcioneaz ca un tampon (eng. buffer) ntre procesor (sau diferite componente ale procesorului) i memoria principal. Ideea principal care st la baza tehnicii bazate pe memorie cache este: Dac o instruciune acceseaz o anumit locaie de memorie atunci probabilitatea ca instruciunile urmtoare s acceseze locaii vecine este foarte mare. Aceast idee induce i o disciplin de programare bazat pe evitarea salturilor la distan (eng. jump) realizat n manier nlnuit i utilizarea instruciunilor n secven, eventual doar cu salturi locale (eng. branch). Tehnica pipeline const n divizarea fiecrei instruciuni ntr-un numr de etape. fiecare etap fiind executat de o unitate funcional a procesorului. De obicei, etapele de executare a unei instruciuni (n 4 pai) sunt: extragerea (F fetch), decodificarea (D decode), executarea (E execute) i scrierea rezultatului (W write). n figura 3.1 se ilustreaz diferena (ca timp de procesare) a instruciunilor cu i fr pipeline.

Fig. 3.1. Procesarea instruciunilor fr pipeline (sus) / cu pipeline (jos) Observaii - Prelucrarea instruciunilor fr pipeline: Dac fiecare etap consum o unitate de timp, de-a lungul a patru uniti de timp se proceseaz o singur instruciune. - Prelucrarea instruciunilor n regim pipeline: ncepnd cu unitatea de timp 4, n fiecare unitate de timp se lucreaz simultan asupra a patru instruciuni. La fiecare nou unitate de timp se va ncheia procesarea complet a unei instruciuni. Acesta este motivul pentru care prelucrarea pipeline este numit prelucrare n regim band de asamblare.
49

O alt modalitate de cretere a vitezei de procesare o constituie utilizarea arhitecturilor paralele, a arhitecturilor distribuite precum i a unor arhitecturi neconvenionale (de exemplu a sistemelor de tip cuantic).

3.1.6. Clasificarea sistemelor de calcul


Sistemele de calcul pot fi de tip numeric (digitale), analogic i de tip hibrid. Calculatoarele numerice, sunt cele care primesc, prelucreaz i transmit date/informaii codificate binar. Ele fac obiectul acestei lucrri. Sistemele de calcul analogice sunt echipamente alctuite din amplificatoare operaionale i circuite numerice independente, interconectate n vederea realizrii unor operaii de tip continuu: integratoare, multiplicatoare etc. Mrimile corespunztoare condiiilor iniiale se introduc sub forma unor tensiuni electrice. Acestea sunt prelucrate i se obin noi tensiuni electrice ce vor fi vizualizate cu ajutorul unor dispozitive speciale. Sistemele hibride sunt rezultatul cuplrii unor sisteme numerice cu sisteme analogice. Comunicarea ntre cele dou tipuri de sisteme se realizeaz prin intermediul unor dispozitive de conversie: analogic-digital; digital-analogic. Sistemele analogice nu fac obiectul acestei lucrri. O clasificare interesant a sistemelor digitale a fost propus de Flynn (1972) i cuprinde att sistemele de calcul cu o singur unitate central, ct i pe cele cu mai multe uniti centrale (figura 3.2). Clasificarea lui Flynn consider ca eseniale dou caracteristici: mrimea fluxului instruciunilor i mrimea fluxului datelor. Un sistem de calcul cu flux unic de instruciuni i flux unic de date este numit sistem de calcul SISD (eng. Single Instruction Single Data Stream). Toate sistemele de calcul tradiionale (cu o singur unitate central) sunt maini SISD. Aceast categorie include sisteme de calcul, de la microcalculatoarele personale pn la calculatoarele multiutilizator de mare putere (eng. mainframe): IBM/704, IBM/7040, IBM 360/40, IBM 370/135, PDP, FELIX C, microcalculatoarele IBM PC etc. Urmtoarea categorie o reprezint sistemele de calcul cu flux simplu de instruciuni, dar cu flux multiplu de date, numite sisteme SIMD (eng. Single Instruction Multiple Data Stream). Aceste sisteme se bazeaz tot pe o singur unitate central cu o singur unitate de comand, dar cu N elemente de prelucrare (UAL) i N module de memorie ataate acestora, toate interconectate (N2). Unitatea de comand emite instruciuni sub form de flux unic spre toate elementele de prelucrare, n mod simultan. La un moment dat, toate elementele de prelucrare active execut aceeai instruciune, numai asupra datelor situate n propriul modul de memorie, deci flux multiplu de date. Din aceast clas fac parte unele supercalculatoare (de exemplu, ILLIAC-IV cu 64 UAL i pentru fiecare UAL fiind disponibili 8KB de memorie).

50

Fig. 3.2. Tipuri de sisteme de calcul (Flynn) Sistemele SIMD sunt, la rndul lor, de mai multe categorii: a) matriceale prelucreaz datele n mod paralel i le acceseaz prin adrese n loc de index i valoare; b) cu memorie asociativ - opereaz asupra datelor accesate asociativ (prin coninut). n loc de adres, specificarea datelor se face prin valoare, cum ar fi: "mai mare dect", "mai mic dect", "ntre limitele", "egal cu" etc.; c) matricealasociative - sunt sisteme de tip asociativ ce opereaz asupra tablourilor multidimensionale (matrice i masive de date); d) ortogonale - fiecare element procesor corespunde la un cuvnt (32 bii) de memorie i, astfel, biii de acelai rang ai tuturor cuvintelor pot fi prelucrai n paralel. Acest procedeu mai este numit procesare serial pe bit i paralel pe cuvnt. Clasa sistemelor cu flux multiplu de instruciuni i flux unic de date MISD (eng. Multiple Instructions Single Data Stream) include acele structuri specializate ce folosesc mai multe fluxuri de instruciuni executate pe acelai flux de date. Ultima categorie o reprezint sistemele MIMD (eng. Multiple Instructions, Multiple Data Stream), ce reprezint un grup de calculatoare independente, fiecare cu propriul context (program, date etc.). Multe dintre supercalculatoare i toate sistemele distribuite intr n aceast clas. Sistemele MIMD pot fi divizate n dou categorii: sistemele multiprocesor (cu memorie comun) i sisteme multicalculator. Pe de alt parte, fiecare din aceste clase se poate mpri n funcie de modul de interconectare. Exist dou posibiliti de interconectare: magistral (similar televiziunii prin cablu) i comutaie (similar reelei telefonice). Se obin astfel patru clase de sisteme MIMD (figura 3.3): sisteme multiprocesor cu magistral, sisteme multiprocesor comutate, sisteme multicalculator cu magistral (reele de calculatoare) i sisteme multicalculator comutate (sisteme distribuite generale).

Fig. 3.3. Tipuri de sisteme MIMD


51

Calculatoarele dintr-o reea pot fi de acelai tip (reele omogene) sau de tipuri diferite (reele eterogene). Reelele de calculatoare permit folosirea n comun a unor resurse fizice scumpe (imprimante, discuri fixe de mare capacitate etc.) i folosirea n comun a unor date. Datele care se schimb ntre sisteme de calcul se numesc documente electronice. n funcie de aria de rspndire a calculatoarelor dintr-o reea, se disting urmtoarele tipuri de reele: 1. Reele locale - LAN (eng. Local Area Network): n aceste reele, aria de rspndire nu depete 2 km i deservesc o societate comercial. Reelele locale sunt formate de regul din calculatoarele aflate ntr-o cldire sau un grup de cldiri. 2. Reele metropolitane - MAN (eng. Metropolitan Area Network): Aceste reele acoper suprafaa unui ora. 3. Reele globale - WAN (eng. Wide Area Network): Calculatoarele acestor reele au o arie geografic de rspndire foarte mare (reele internaionale, "Internet" etc.) n aceast lucrarene vom referi numai la reelele locale. Reelele locale, n special bazate pe staii de lucru sau calculatoare personale (PC) prezint avantaje ce pot fi grupate n trei categorii: a) avantaje strategice n mediul de afaceri/educaional; b) avantaje operaionale i/sau tactice; c) avantaje ale utilizatorului. Avantajele strategice n mediul de afaceri/educaional includ: facilitarea comunicaiilor n cadrul unei firme/coli, creterea competitivitii firmei/instituiei, posibilitatea organizrii resurselor n grupuri de lucru cu efect asupra reducerii bugetelor afectate prelucrrii datelor. Din punct de vedere operaional i/sau tactic se remarc: reducerea costurilor per utilizator, creterea siguranei serviciilor de calcul (prin posibilitatea includerii serverelor n oglind (eng. mirror)), mbuntirea administrrii software-ului, mbuntirea integritii datelor (datele de pe server vor fi salvate n mod regulat), mbuntirea timpului de rspuns (ntr-o reea necongestionat). Un utilizator al unei reele locale poate avea urmtoarele avantaje: mediul de calcul poate fi ales de ctre utilizator, crete repertoriul de aplicaii, crete securitatea informaiei (sistemul de operare n reea fiind cel care restricioneaz/permite accesul la datele reelei), exist posibilitatea instruirii on-line (prin intermediul bazelor de date pentru instruire) etc. Componentele hardware specifice unei reele locale (n afara staiilor sau PC-urilor) sunt: 1. Cabluri - pot fi coaxiale, fire torsadate (10Base-T), fibre optice etc. Acestea sunt utile pentru realizarea legturii fizice. Caracteristicile principale ale unui cablu sunt: impedana, capacitatea, factorul de atenuare, viteza semnalului, caracteristicile de zgomot. Spre deosebire de mediile prin cablu, mediile oferite de telefonia celular, undele radio terestre, undele radio prin satelit, undele laser, microundele i undele meteorice permit transmiterea informaiilor fr cablu. 2. Module de interfa cu reeaua - accesul fizic al unei staii (sau PC) la LAN se face cu ajutorul unui modul de interfa (NIC - eng. Network Interface Card),
52

3.

4.

5. 6. 7. 8.

mai precis o plachet instalat n PC ce suport att funcii de partajare a spaiului fizic ct i funcii de sincronizare. Tranceivere - Acestea sunt receptoare-transmitoare pentru conectare la LAN. Tranceiverul este un echipament ce transmite i recepioneaz semnal ntre NIC-ul din PC i mediul fizic utilizat. Dac sunt utilizate conectoare Ethernet n T ataate direct la conectorul BNC al unui NIC, atunci nu este necesar un astfel de echipament. Huburi pentru cablaje - Sunt echipamente utilizate pentru extinderea zonei de acoperire a reelei. De exemplu, ntr-un LAN pe fire torsadate, toate echipamentele sunt conectate ntr-o configuraie de tip stea ntr-un hub, care este de obicei localizat ntr-un dulap nchis. Un hub suport de la 8 la cteva sute de staii. Deoarece distana limit ntre huburi este de approximativ 100 de metri, proiectanii utilizeaz deseori cabluri de interconectare de tip superior (celor 10Base-T) pentru a mri distana ntre huburi. Repetitoare - Acestea sunt echipamente ce amplific semnalele pentru a mri distana fizic pe care poate aciona un LAN. Puni (eng. bridge) - conecteaz 2 sau mai multe LAN-uri la nivelul transmiterii pachetelor de date. Ele prelucreaz datele n funcie de adresa destinatarului i adresa expeditorului. Rutere (eng. router) - sunt echipamente de dirijare a traficului de date. Ele neleg protocolul folosit n transmisia datelor i pot traduce protocoale, putnd fi folosite la conectarea a dou reele de calculatoare. Pori (eng. gateway) - sunt echipamente utilizate pentru conectarea unor reele de calculatoare care folosesc protocoale diferite.

Din punct de vedere software, accesul la blocurile de instruciuni specializate n comanda i controlul unitilor de disc, imprimantelor i a altor periferice este asigurat de ctre sistemul de operare al reelei (NOS- eng. Network Operating System). Un NOS este un software de reea ce permite reelei s suporte capabiliti multiproces (eng. multitasking) i multiutilizator (vezi capitolul 2). De asemenea un NOS ofer posibiliti deosebite pentru partajarea resurselor i pentru comunicare. Cele mai cunoscute NOS-uri sunt: Microsoft LAN Manager, Novell Netware, IBM LAN Server etc. n afar de NOS-urile tradiionale, recent s-au evideniat modelul "clientserver" i modelul "de la egal la egal" (eng. peer - to - peer). Aceste soluii utilizeaz att sistemul de operare local al staiei ct i NOS-ul. O arhitectur client-server este un model de calcul n care aplicaiile software sunt distribuite ntre entitile din LAN. Clienii solicit informaia de la serverul (serverele) din reea ce stocheaz datele i/sau programele, partajarea acestora fiind asigurat de NOS. n acest model, un sistem de calcul din reea este fie server, fie client. Realizarea unor prelucrri cu ajutorul serverului (de la distan) este realizat prin utilizarea apelurilor RPC (eng. Remote Procedure Call). Alte metode pentru realizarea aplicaiilor client-server sunt: interfaa de programare a aplicaiilor: API (eng. Application Programming Interface), serverul de baze de date (eng. data base), utilizarea ferestrelor la distan.
53

Reelele bazate pe modelul "de la egal la egal" suport comunicaiile directe ntre utilizatori i sunt de dimensiune mic. Fiecare calculator din reea poate fi, n acelai timp, i client i server. Cele mai cunoscute sisteme de operare n reele "de la egal la egal" sunt: Microsoft Windows, Lantastic etc.

3.1.7. Modelarea sistemelor digitale


Aplicaiile 2.3.2 i 2.3.3 au considerat adunarea bit cu bit, respectiv compararea numerelor binare de cte dou cifre. Circuitul care implementeaz evaluarea unei funcii booleene (n form simplificat; a se vedea aplicaia 2.3.1) este unul de tip combinaional: ieirea la momentul t depinde numai de intrrile la momentul t. Aceast seciune va prezenta mai multe modele, in general de tip boolean, pentru unele componente hardware ale sistemelor de calcul numeric. Se consider a fi circuite combinaionale primare numite i pori, urmtoarele circuite: AND (), OR (), NOT (), NAND = NOT AND i XOR (). Circuitele AND, OR, NAND pot avea dou sau mai multe intrri, circuitul NOT are o singur intrare, iar circuitul XOR are dou intrri. Pentru aplicaii sunt utile i circuitele care reprezint constantele 0 (circuit inactiv) i 1 (circuit activ). Practic, un circuit combinaional este reprezentat de o structur arborescent de pori (ieirile unei pori la momentul t+k, k1 nu pot fi intrri pentru o poart la momentul t). Intrrile unei pori, in general, i schimb valoarea de-a lungul timpului de funcionare a circuitului, n funcie de semnalul de intrare. Totui unele intrri pot fi constante. Complexitatea unui circuit este dat de numrul de pori (a se revedea aplicaia 2.3.1). Funcia boolean care implementeaz funcionarea circuitului combinaional o vom numi funcie de transfer. Considerm c un circuit cu mulimea intrrilor X, mulimea ieirilor Y i funcia de transfer f, f: X Y, este un sistem digital. Evident, pentru sistemele de calcul, X, respectiv Y sunt mulimi de secvene binare. Cu notaiile din seciunea 2.3, dac a i b sunt variabile booleene atunci funciile de transfer ale circuitelor AND, OR, NAND, XOR i NOT acioneaz astfel: AND(a,b)= ab, OR(a,b) = a+b, NAND (a,b) = (ab)', XOR(a,b)= a'b+ab'; NOT(a)=a', NOT(b)=b'. Sistemele digitale complexe sunt fie circuite combinaionale, fie ansambluri de sisteme digitale conectate n serie sau paralel. Fie S1 = (X1, Y, f), Y Y1 i S2 = (Y1, Z, g) dou sisteme digitale conectate n serie. Rezultatul obinut este sistemul digital S = (X1, Z, h = g f) unde prin am notat compunerea funciilor. Fie S1 = (X1, Y1, f1) i S2 = (X2, Y2, f2) sisteme digitale. Prin conectarea n paralel a sistemelor S1 i S2 obinem sistemul S = (X1xX2, Y1xY2, f), unde x desemneaz produsul cartezian, iar f(x,y)=(f1(x), f2(y)) este funcia de transfer a sistemului digital S. n general, complexitatea sistemelor digitale crete prin utilizarea operaiior conectare n serie, respectiv paralel. De exemplu o arhitectur serie-paralel a patru sisteme Si = (Xi, Yi, fi), i = 1,...,4, o constituie sistemul S = (X1xX2, Y3xY4 f) unde f = h2 h1, unde h1 este funcia de transfer a sistemului paralel (S1, S2), iar h2 este funcia de transfer a sistemului paralel (S3, S4). Se presupune c mulimile care intervin n construciile de mai sus sunt bine formate.
54

Sistemele digitale devin i mai complexe ca funcionalitate, dac adugm o nou operaie, numit recursie: Fie circuitul S = (XxZ, YxZ, (f1, f2)), cu f1 : X x Z Y, f2 : X x Z Z. Prin recursie se obine sistemul R = (X, Y, h), unde h(x) = f1 (x, f2(x, z)), iar f2 verific condiia z = f2(x, f2(x, z)). Trebuie observat c pentru o intrare x constant, circuitul poate produce mai multe ieiri, n funcie de starea intern (modelat prin elementele mulimii Z) i funcia f2. Se spune c autonomia unui sistem S crete prin includerea acestuia ntr-o recursie Fig. 3.4. Recursia R. ntr-o reprezentare grafic, se remarc prezena unui ciclu (figura 3.4). O recursie A (deci un ciclu 1) poate fi sub-recursie a recursiei B (cu ciclul 2). Se spune c ciclul 1 este subciclu al ciclului 2. Figura 3.5 ilustreaz o astfel de situaie. Cadrul cel mai general este cel al sistemelor digitale de ordinul n, definite cu ajutorul urmtoarelor reguli: (R1) Orice circuit combinaional (fr cicluri) este este un sistem digital de ordinul 0; (R2) Un sistem digital A de ordinul n+1 se obine dintr-un sistem digital B de ordinul n prin adugarea unui ciclu care include toate cele n cicluri ale sistemului B. (R3) Orice sistem digital de ordinul n (n 0) se obine numai prin aplicarea regulilor R1 i R2.

Fig. 3.5. Subciclu

Exist o puternic coresponden ntre componentele unui sistem de calcul i sistemele digitale de ordinul n: Circuitele combinaionale (fr autonomie) sunt sisteme digitale de ordin 0 [decodoare, codificatoare simple/cu prioritate, multiplexoare i demultiplexoare, sumatoare, circuite de deplasare, multiplicatoare, UAL, etc.]; circuitele de memorie (cu autonomie pe stri) sunt sisteme digitale de ordinul 1 [registre, RAM etc.]; automatele finite (cu autonomie comportamental) sunt sisteme digitale de tipul 2; procesoarele (cu autonomie pe interpretarea strilor interne) sunt sisteme digitale de ordinul 3, iar un calculator (ca ansamblu) este un sistem digital de ordinul 4.

55

Alte modele teoretice ale sistemelor de calcul sunt: RAM (eng. Random Access Machine) pentru sisteme de calcul secveniale i PRAM (eng. Parallel Random Access Machine). Modelul RAM const dintr-o unitate de memorie, o unitate de band de intrare cu tipul de acces numai citire (eng. read only), o band de ieire cu acces numai n scriere (eng. write only) i un program care nu poate fi modificat. La fiecare citire/scriere se avanseaz cu o singur poziie. Modelul PRAM este utilizat pentru a descrie sistemele de calcul paralele. Presupunem c se utilizeaz p procesoare care partajeaz o memorie ce poate fi centalizat sau distribuit. Procesoarele lucreaz sincron pe baza ciclurilor IPO (eng. input-processing-output), dar pe baza unei opiuni de acces dintre: ER (eng. exclusive read) - cel mult un processor poate citi de la o anumit adres de memorie. EW (eng. exclusive write) - cel mult un processor poate scrie la o adres de memorie, CR (eng. concurrent read) - mai multe procesoare pot citi simultan de la aceeai adres n acelai ciclu IPO i CW (eng. concurrent write) care permite ca mai multe procesoare s scrie la aceeai locaie de memorie, n acelai ciclu IPO. Se obin, astfel, mai multe variante de modele: EREW-PRAM (cutire i scriere exclusiv), CREW-PRAM (citire concurent i scriere exclusiv), ERCW-PRAM (citire exclusiv i scriere concurent) i CRCW-PRAM (citire i scriere concurent). Conflictele generate de scrierea concurent se pot rezolva prin reguli de tipul: comun (eng. common) - se memoreaz acceai valoare la locaia accesat simultan; arbitrar (eng. arbitrary) - se memoreaz una dintre valori, iar celelalte sunt ignorate; minimal (eng. minimum) - se stocheaz valoarea scris de procesorul cu cel mai mic indice, i prioritar (eng. priority) - se memoreaz o valoare obinut prin aplicarea unei funcii associative de prelucrare a tuturor valorilor produse de procesoarele ce funcioneaz concurrent. Din punct de vedere software se remarc paralelismul de date (n cazul structurilor de date degulate) i paralelismul de control (baza pe taskuri n cazul structurilor de date neregulate, de exemplu: procesarea pipeline). n general, proiectarea calculatoarelor paralele pornete de la problema particular care trebuie rezolvat i de limitarea numrului de conexiuni posibile ale elementelor de procesare. Sunt trei categorii de reele de conectare: fiecare element este conectat direct cu oricare altul; fiecare element este conectat printr-o punte de legtur (eng. switchboard) cu oricare altul i, fiecare element este conectat doar cu anumite uniti de procesare n funcie de algoritmul de rezolvare a problemei. Un model cu totul spectaculos este cel bazat pe reele neurale artificiale (eng. artificial neural networks) care nva s resolve anumite probleme n urma unui process de instruire de tip supervizat sau nesupervizat. Astfel de sisteme sunt simulate folosind calculatoare paralele de uz general pentru a rezolva probleme din cele mai diferite domenii: recunoaterea i clasificarea formelor (eng. pattern recognition and classifcation), recunoaterea i sinteza vorbirii (eng. speech processing), analiza imaginilor medicale (eng. medical image processing) etc.

56

3.2. Resursele logice ale sistemelor de calcul


3.2.1 Introducere n sisteme de operare
Un sistem de operare este "o colecie organizat de programe de control i serviciu, stocate permanent ntr-o memorie principal sau auxiliar, specifice tipurilor de echipamente din componena unui sistem de calcul, avnd ca sarcini: optimizarea utilizrii resurselor, minimizarea efortului uman de programare i automatizarea operaiilor manuale n ct mai mare msur, n toate fazele de pregtire i execuie a programelor". Sistemul de operare pune la dispoziia utilizatorilor (operatori, programatori etc.) i o interfa concretizat ntr-un interpretor al comenzilor utilizatorului exprimate cu ajutorul unui limbaj de comand. Toate sistemele de operare moderne (UNIX, System, Windows etc.) ofer i o interfa grafic, comenzile fiind selectate din meniuri ierarhice folosind dispozitive de interaciune grafic sau tastatura. Totui, puterea limbajului de comand nu poate fi atins numai cu ajutorul elementelor grafice. Interfaa dintre sistemul de operare i programele utilizatorului (numite i lucrri - eng. jobs) este asigurat de o colecie de "instruciuni extinse" ale sistemului de operare numite apeluri sistem. Folosind apeluri sistem (organizate n biblioteci statice (.lib) sau dinamice (.dll)), un program utilizator poate crea, utiliza i terge diverse obiecte gestionate de ctre sistemul de operare. Cele mai importante obiecte gestionate de un sistem de operare modern sunt procesele i fiierele. De asemenea, firele de executare (eng. threads) sunt obiecte specifice programrii concurente (de exemplu folosind limbajul Java), dar i ca modalitate de implementare a proceselor Windows prin programare multi-fir (eng. multithread programming). Procesul (eng. task) reprezint conceptul cheie al oricrui sistem de operare. Un proces este o entitate dinamic care corespunde unui program n execuie. Procesele sunt fie procese sistem, fie procese utilizator. Procesele sistem sunt asociate unor module ale sistemului de operare, iar procesele utilizator sunt asociate unor programe utilizator care pot s creeze alte procese utilizator sau s lanseze pentru executare procese sistem. Un proces (numit proces tat) poate creea unul sau mai multe procese (numite procese fiu sau descendeni). n sistemele multiutilizator fiecare proces este caracterizat de identificatorul proprietarului (utilizatorului). Un fiier (eng. file) este un ir de caractere terminat printr-o marc de sfrit de fiier (EOF - eng. End Of File). Fiierul poate fi stocat pe disc, n memorie etc. Una din funciile importante ale unui sistem de operare este aceea de a ascunde dificultatea lucrului cu echipamentele periferice. Astfel, sistemul de operare ofer apeluri sistem pentru lucrul cu fiiere: creare, tergere, citire, scriere etc. Fiierele pot fi grupate ntr-un catalog (eng. directory, folder) i pot fi
57

caracterizate de anumite atribute (proprietar, dimensiune, data ultimului acces n scriere, coduri de protecie etc.). Modulele software pentru tratarea cererilor de intrare/ieire de ctre sistemul de operare se numesc drivere. Fiecare dispozitiv periferic are asociat un driver. n general, orice driver menine o coad a cererilor de intrare/ieire lansate de unul sau mai multe procese i pe care le prelucreaz ntr-o anumit ordine (n funcie de momentul lansrii cererii sau conform unei liste a prioritilor). Un driver este rspunztor de satisfacerea cererilor de transfer de informaie, de tratarea erorilor ce pot aprea la realizarea unei operaii fizice, .a. Un program utilizator poate efectua operaii de intrare/ieire la nivelul unui driver, totui programul su nu mai este independent de dispozitiv. De aceea, pentru operaiile de intrare-ieire se utilizeaz apelurile sistem sau diferitele proceduri specializate puse la dispoziie de mediile de programare. Primele sisteme de operare realizau prelucrarea pe loturi de programe (eng. batch mode). Utilizatorul nu comunica direct cu sistemul de calcul; acesta funciona sub controlul unui operator uman specializat. Operatorul avea sarcina de a asigura resursele externe necesare unei lucrri (montarea benzilor magnetice, pornirea i oprirea diverselor echipamente periferice). De asemenea, operatorul asigura i introducerea lucrrilor n sistem. Comunicarea operaiilor de executat, se realiza prin intermediul unei interfee de tip alfanumeric ce utiliza un limbaj de comand pentru descrierea ordinelor adresate sistemului, precum i pentru specificarea aciunilor necesare tratrii erorilor. Primele sisteme de acest tip funcionau n regim de monoprogramare, un singur program fiind ncrcat n memorie la un moment dat. Caracteristica de baz a acestui mod de prelucrare o reprezint imposibilitatea interveniei utilizatorului pentru a interaciona cu programul su. Dintre conceptele implementate pentru creterea performanelor i mrirea eficienei utilizrii resurselor sistemelor de calcul, un rol important l-a avut multiprogramarea. n sistemele cu multiprogramare, la un moment dat, n memorie se afl ncrcate, pentru executare, mai multe procese (programe n executare), ce concureaz, pe baza unei scheme de prioriti, pentru accesul la anumite resurse ale sistemului. Cnd o resurs este retras unui proces (la ncheierea acestuia sau la apariia unui proces cu prioritate mai mare), aceasta poate fi imediat alocat unui proces solicitant. Sistemele cu multiprogramare sunt din ce n ce mai complexe. Ele au de rezolvat probleme dificile privind: alocarea optim a resurselor, evitarea interblocrilor, protecia utilizatorilor (ntre ei) i protecia sistemului (n raport cu utilizatorii). n sistemele uniprocesor, execuia mai multor programe n regim de multiprogramare pare simultan din punctul de vedere al utilizatorului, dar la un moment dat, exist doar un singur proces activ n sistem. Totui, n sistemele multiprocesor sau multicalculator, dou sau mai multe procese pot fi active simultan, ele fiind prelucrate de procesoare diferite. Un alt mecanism important este multiprocesarea. Acesta const n multiprogramarea a dou sau mai multe procese avnd un obiectiv comun. ntr-un
58

sistem de operare multiproces (eng. multitasking) procesele pot comunica ntre ele i i pot sincroniza activitile. Sistemele Microsoft bazate pe tehnologia NT, sistemele UNIX i Linux sunt sisteme de operare multiproces. Conceptul de memorie virtual este, de asemenea, foarte important n contextul sistemelor de operare moderne. Mulimea funciilor i modul de realizare a acestora definesc caracteristicile unui sistem de operare. Aceste caracteristici pot fi utilizate pentru a clasifica i compara sistemele de operare. Cele mai importante caracteristici sunt: i) modul de introducere a programelor n sistem [introducere serial, paralel, respectiv la distan]; ii) modul de planificare a proceselor [orientare pe lucrri; orientare pe proces]; iii) numrul de programe prezente simultan n memorie [monoprogramare; multiprogramare]; iv) modul de utilizare a resurselor [alocare complet; timp real; partajare]; v) numrul de utilizatori ce pot folosi sistemul n acelai timp [monoutilizator; multiutilizator]. Referitor la modul de utilizae a resurselor, cnd resursa partajat este timpul unitii centrale, sistemul de operare devine cu timp partajat (eng. time sharing). n general, sistemele de operare din aceast clas asigur utilizarea eficient a resurselor sistemelor de calcul conversaionale n care accesul la resursele sistemului poate fi: a) direct - pentru asigurarea unui control direct i permanent asupra unui set de terminale pe baza unui program utilizator; un caz particular al acestor sisteme l reprezint sistemele interactive n timp real, n cadrul crora se cere o valoare maxim prestabilit a timpului de rspuns; b) multiplu - pentru accesul simultan, al unui numr mare de utilizatori, la resursele hardware i software ale sistemului; acest tip de acces apare cnd sunt cel puin dou terminale n sistem, iar fiecare utilizator lucreaz cu programul su ntro regiune de memorie (partiie) diferit de regiunile celorlali utilizatori, protejat printr-un mecanism software sau hardware; c) n timp partajat (time-sharing) - n care alocarea timpului de acces se realizeaz pe baza unor cuante de timp fixe sau variabile, de ordinul milisecundelor, utilizatorii avnd impresia c lucreaz simultan cu sistemul; d) la distan - n care prelucrarea se produce de ctre mai multe calculatoare asupra datelor care sunt distribuite n mai multe colecii de date dispersate geografic (eng. distributed data bases).

3.2.2. Iniiere n utilizarea sistemelor de calcul bazate pe UNIX


Un sistem de operare, n forma cea mai simpl, apare ca o colecie de proceduri cu funcii precise i cu o interfa bine precizat ntre acestea. Serviciile (apelurile sistem) furnizate de sistemul de operare, sunt solicitate prin ncrcarea anumitor registre (ale UCC) cu informaia necesar sau depunerea acestei informaii n memoria stiv i apoi provocarea unei ntreruperi cunoscut sub numele apel supervizor sau apel nucleu. Acest apel determin trecerea sistemului de calcul din mod utilizator n mod nucleu (supervizor) i transfer controlul sistemului de operare. Sistemul de operare analizeaz parametrii apelului pentru a-l
59

identifica, iar apoi apeleaz procedura de serviciu necesar. Aceast descriere sugereaz scheletul unui sistem de operare: i) un program ce invoc o procedur de serviciu; ii) o bibliotec de proceduri de serviciu ce corespund apelurilor sistem i iii) o bibliotec de proceduri utilitare pentru procedurile de serviciu. Tendina n realizarea sistemelor de operare moderne este de a implementa cea mai mare parte a funciilor sistemului de operare sub form de procese utilizator. Pentru a solicita un serviciu, un proces utilizator (numit i proces client) emite o cerere unui proces de serviciu, care rezolv solicitarea i transmite clientului rspunsul. Aceast comunicaie ntre clieni i procesele de serviciu este asigurat de nucleul sistemului de operare. Sistemul de operare UNIX a fost elaborat n anul 1969 (autori: Ken Thompson i Dennis Ritchie - Laboratoarele Bell din New Jersey, SUA) i pn n prezent a cunoscut mai multe extensii. Pentru microcalculatoare personale, cea mai cunoscut implementare este cunoscut sub numele de Linux. Cele mai importante caracteristici ale sistemului de operare UNIX sunt: este un sistem de operare cu divizarea timpului, multiproces i multiutilizator; asigur protecia fiierelor i a modului de executare a programelor prin existena unor parole i drepturi (coduri) de acces; promoveaz modularitatea aplicaiilor; operaiile de intrare/ieire sunt integrate n sistemul de fiiere, prin realizarea aa-numitelor intrri/ieiri generalizate; unitatea de planificare este procesul; gestiunea memoriei se face printr-un mecanism care permite schimbul de pagini (migraia sau eng. swapping) ntre memoria RAM i cea extern, gestionndu-se spaiul afectat executrii proceselor i controlndu-se timpul de acces al proceselor n ateptare; prin intermediul componentei SHELL, asigur o interfat simpl i interactiv. Componenta SHELL nu este integrat n nucleul sistemului de operare; este un sistem de operare portabil (fiind scris n limbajul C) activ pe foarte multe tipuri de sisteme de calcul, de la calculatoare personale pn la calculatoare MIMD. Sistemul de operare UNIX este alctuit din trei pri majore: nucleul, sistemul de fiiere (ce cuprinde programele utilitare, programele aplicative i programele de gestiune a intrrilor i ieirilor) i interfaa cu utilizatorul (componenta SHELL). Relaiile ntre cele trei componente ale sistemului se realizeaz prin: apeluri sistem; programe utilitare; funcii standard folosite de limbajul C; subprograme de gestiune a intrrilor/ieirilor, furnizate odat cu sistemul i diferite de la un sistem de calcul la altul.

60

Sistemul de operare UNIX ofer utilizatorului interfee organizate pe trei nivele: nivelul exterior nucleului (prin programe utilitare); nivelul intermediar oferit de funciile din biblioteca standard C i nivelul interior oferit de apelurile sistem. Sistemul de operare UNIX fiind un sistem multiutilizator i cu divizarea timpului, impune existena unui utilizator special numit administrator de sistem, care ine evidena utilizatorilor, stabilete parolele i drepturile de acces i creeaz cataloagele asociate utilizatorilor. Pentru fiecare utilizator, administratorul de sistem creeaz cte un catalog propriu (eng. directory), care poate conine att fiiere ordinare (programe sau date), ct i subcataloage. Sistemul UNIX face deosebire ntre litere mari i litere mici. Toate fiierele sunt structurate n cataloage, organizate arborescent, n vrful ierarhiei (la rdcina arborelui) aflndu-se catalogul rdcin (eng. root) notat prin /. Specificarea numelui fiierului se poate face n dou moduri: absolut pornind de la rdcin sau relativ - pornind de la poziia curent. Numele complet al fiierului conine i calea de acces (catalogul din care face parte acesta). Deschiderea unei sesiuni de lucru se realizeaz folosind comanda login. Sistemul va solicita numele utilizatorului (eng. username) precum i parola sa (eng. password). Un utilizator poate s-i schimbe parola folosind comanda passwd. Pentru terminarea sesiunii de lucru se utilizeaz combinaia de taste CTRL+d. Pentru documentare se poate utiliza comanda man care prezint informaii despre anumite entiti ale sistemului de operare. De exemplu, comanda $man man, descrie structura manualelor UNIX precum i modul lor de consultare. Dup deschiderea sesiunii de lucru, utilizatorul are acces la dou grupe de fiiere: fiierele create de el nsui i fiierele furnizate de sistem drept comenzi sistem. Executarea unei comenzi n general, o comand UNIX poate fi privit ca o succesiune de zone separate prin spaii, de forma comand opiuni expresii fiiere unde: "comand" este numele propriu-zis al comenzii, "opiuni" reprezint o secvent de opiuni (o opiune UNIX este reprezentat printr-o liter precedat sau nu de semnele "+" sau "-"), "expresii" reprezint unul sau mai multe iruri de caractere cerute ca argumente pentru comanda respectiv, iar "fiiere" specific unul sau mai multe fiiere. Delimitarea anumitor argumente se poate face prin apostrofuri i ghilimele. n acest sens, trebuie s se respecte urmtoarele patru reguli de delimitare: 1. dac n irul de caractere nu apare nici unul din caracterele ' sau ", atunci se poate delimita fie prin ', fie prin "; 2. dac n irul de caractere apare apostroful, dar nu apare caracterul " , atunci delimitarea se poate realiza folosind caracterul "; 3. dac n irul de caractere apare caracterul ", dar nu apare apostroful, atunci delimitarea se realizeaz folosind apostrofuri;
61

4. dac n irul de caractere apar ambele caractere (' i ") atunci se va utiliza caracterul de evitare \. Pentru prezena caracterului \ n ir, acesta se dubleaz. Interpretorul de comenzi UNIX accept cel puin o comand pe linie. Dac se dorete specificarea mai multor comenzi pe acelai rnd, acestea trebuiesc separate prin caracterul ";". Comenzi pentru lucrul cu procese Sistemul UNIX permite lansarea spre executare a unei comenzi (program) la un anumit moment de timp. Comanda UNIX ce face posibil acest lucru este disponibil numai administratorului de sistem. Numele comenzii este at i primete ca argumente timpul, data, factorul de repetare a lansrii, precum i numele unui fiier care conine comanda sau comenzile ce se vor executa. De asemenea, folosind comenzile nice, kill i sleep, utilizatorul poate interveni asupra proceselor din sistem pentru a le modifica starea. Comanda UNIX ce permite afiarea strilor unor procese este ps. Cele mai uzuale opiuni ale acestei comenzi sunt: -e : listeaz toate procesele; -f : produce o listare complet; -l : produce o listare n format lung; -p lista : afieaz date doar despre procesele specificate n list; -t lista : afieaz date doar despre procesele terminalelor din list; -u list : afieaz date doar despre procesele utilizatorilor din list. Informaiile despre fiecare proces, n formatul lung, sunt prezentate pe o linie sub forma unui tabel cu urmtoarele coloane: F : tipul procesului (00 - proces terminat, 01 - proces sistem, 04 proces suspendat de printele su, 10 - proces ncrcat n memorie, dar blocat); S : starea procesului (R - proces n coada de ateptare (NTRERUPT), S - proces inactiv (sleep - mai puin de 20 de secunde), I - proces inactiv (idle - peste 20 de secunde), T - proces terminat, D - proces evacuat temporar pe disc, O - proces ACTIV). UID : proprietarul procesului; PID : identificatorul procesului; PPID : identificatorul procesului printe al acestui proces; PRI : prioritatea procesului (valoare mic nseamn prioritate mare); TTY : terminalul de la care a fost lansat procesul (chiar dac este lansat de la distan, n urma unei sesiuni de tip telnet sau ssh.); TIME : timpul total ct a fost ACTIV; NICE : dac prioritatea a fost stabilit folosind comanda nice; ADDR : adresa din memorie la care se afl ncrcat procesul; SZ : dimensiunea procesului; STIME : momentul de start al procesului; CMD : comanda care a lansat procesul.
62

Comanda kill emite un semnal de tip ntrerupere ctre un proces. De obicei, acest semnal solicit terminarea procesului. Comanda are ca argumente un numr de semnal (precedat de -) i identificatorul procesului cruia i se adreseaz semnalul. Semnalul este un numr ntre 1 i 31 prin care este codificat tipul semnalului de ntrerupere. Cele mai importante semnale sunt: -2 : ntrerupere la apsarea tastei DEL; -9 : oprire necondiionat; -15 : semnal software de oprire; -16-31 : semnale definite de utilizator. n absena specificrii unui semnal (ci numai a identificatorului procesului), implicit este considerat semnalul 15. O alt facilitate a sistemului de operare UNIX privind execuia comenzilor o constituie lansarea n fundal (eng. background) a proceselor care nu sunt conversaionale. Pentru a lansa un astfel de proces, linia de comand trebuie s se ncheie cu simbolul "&". Comanda sleep ateapt un numr de secunde nainte de a executa o alt comand. De exemplu comanda ls poate fi lansat peste 40 de secunde folosind apelul: $ sleep 40; ls & Comenzi informaionale O mare parte din comenzile sistemului UNIX afieaz i modific anumite entiti. Unele comenzi sunt numai informaionale. Printre acestea se pot enumera: I.1. I.2. I.3. I.4. I.5. I.6. I.7. I.8. I.9. I.10. I.11. ps who logname whodo pwd ls cal du ipcs df file afieaz starea proceselor (descris mai sus); afieaz utilizatorii din sistem; afieaz utilizatorul curent; afieaz informaile despre utilizatori i procese; afieaz numele catalogului curent; afieaz coninutul unui catalog; tiprete calendarul pentru anul specificat; afieaz numrul de blocuri coninute n fiecare fiier i catalog specificat ca argument; tiprete informaii despre structurile active de comunicare evoluat ntre procese (cozi de mesaje, semafoare, zone de memorie partajat); afieaz numrul de blocuri disc libere i numrul Inodurilor libere pentru un anumit sistem de fiiere, sau pentru toate sistemele de fiiere montate; afieaz tipul unui fiier specificat (text, executabil, catalog).

63

Comenzi relative la fiiere i cataloage Comenzile UNIX ce acioneaz asupra fiierelor i cataloagelor permit navigarea n sistemul de fiiere (explorarea), copierea, tergerea, fixarea atributelor, afiarea i tiprirea fiierelor precum i o serie de operaii de cutare, comparare etc. Cele mai importante comenzi din aceast categorie sunt: F.1. F.2. F.3. F.4. F.5. F.6. F.7. F.8. cat pg more cd mkdir rmdir rm mv afieaz un fiier la ieirea standard. Dac sunt specificate mai multe fiiere, acestea vor fi afiate unul dup altul. afieaz paginat un fiier. Afiarea este ntrerupt la apsarea tastei "q". afieaz ecran cu ecran fiierele specificate (vezi i pg); schimb catalogul curent; creeaz un nou catalog; terge cataloagele specificate. Acestea trebuie s fie vide. terge unul sau mai multe fiiere. Folosind opiunea r se pot terge i cataloage ce nu sunt vide. mut sau redenumete fiierele i cataloagele. Comanda mv acioneaz conform urmtoarelor reguli: - Dac sursa este un fiier existent, iar destinaia este nume de fiier, atunci are loc operaia de redenumire. - Dac sursa este un fiier, iar destinaia este tot un fiier (existent), atunci fiierul existent este nlocuit cu fiierul surs. - Dac sursa este un catalog, iar destinaia este un nume, atunci catalogul este redenumit. - Dac sursa este un catalog, iar destinaia este un catalog existent, atunci mut catalogul surs astfel nct s devin un subcatalog al catalogului existent. - Dac sunt specificate unul sau mai multe fiiere n surs, iar destinaia este un catalog existent, atunci fiierele sunt mutate n acest catalog. copiaz unul sau mai multe fiiere surs ntr-un fiier destinaie. Dac destinaia este numele unui catalog, atunci fiierele sunt copiate n catalogul specificat. creeaz o intrare n tabela dispozitivelor (operaia de montare) sau terge intrarea din aceast tabel
64

F.9. F.10.

cp mount/umount

F.11. F.12. F.13. F.14. F.15. F.16.

chmod chown cmp diff diffdir find

(demontare). Montarea unui dispozitiv ntr-un catalog nevid, face inaccesibil (pe durata montrii) coninutul acestuia. schimb modul de acces al unuia sau mai multor fiiere. Numai proprietarul unui fiier sau un utilizator privilegiat poate schimba modul de acces. schimb proprietarul unuia sau mai multor fiiere. Numai proprietarul curent sau un utilizator privilegiat poate modifica proprietarul unui fiier. compar dou fiiere; compar dou fiiere i arat modificrile care trebuie efectuate pentru a avea aceeai form; afieaz diferenele dintre dou cataloage; caut unul sau mai multe fiiere care satisfac anumite criterii

Comenzi relative la volume V.1. V.2. V.3. diskformat badtrk divvy Alte comenzi C.1. C.2. C.3. C.4. clear date stty fsck terge ecranul (fereastra terminal); tiprete i modific data curent; fixeaz/afieaz anumii parametri pentru terminalul curent; verific i repar sistemul de fiiere (catalog /etc). iniializeaz un disc (disc rigid sau dischet) i l formateaz conform specificaiilor precizate n linia de comand; cerceteaz suprafaa discului pentru depistarea pistelor defecte; divizeaz o partiie a discului n mai multe diviziuni;

3.2.3. Iniiere n utilizarea PC/Windows


n ultimii ani, firma Microsoft a dezvoltat pentru calculatoare personale interfee grafice similare sistemului de operare System - MacOS (sisteme de calcul Apple-Macintosh) respectiv interfeei grafice X-Window System a sistemele de operare UNIX. Spre deosebire de interfeele: Windows 3.1 i Windows for Workgroups care asigur funcii superioare sistemului de operare MSDOS, dar se execut sub sistemul MSDOS, interfeele Windows dezvoltate dup 1995, pot fi considerate sisteme de operare pentru calculatoare personale care ofer ns i posibiltatea conectrii n reea a acestor calculatoare. WINDOWS NT/2000/XP
65

sunt sisteme de operare adecvate att serverelor ct i staiilor de lucru dintr-o reea. Urmtoarele noiuni sunt importante pentru operarea unui software cu interfa grafic: Pictogram (eng. icon) - un simbol utilizat pentru a reprezenta grafic scopul i/sau funcia unei aplicaii, catalog sau fiier. Fereastr (eng. window)- zon dreptunghiular distinct pe ecran, delimitat de un chenar. O fereastr reprezint un obiect deschis i este folosit pentru a afia informaii (text, grafic, meniuri etc.). Pot fi deschise mai multe ferestre simultan. O fereastr poate fi nchis (corespunde terminrii aplicaiei care a deschis fereastra), redimensionat sau mutat pe suprafaa de lucru. Suprafa de lucru (eng. desktop) - ntregul ecran reprezentnd zona de lucru. Pictogramele, ferestrele i bara de operaii sunt afiate pe suprafaa de lucru. A se observa c exist i un subcatalog DESKTOP al catalogului WINDOWS. Bara de meniuri (eng. menu bar) bara orizontal coninnd numele meniurilor disponibile. Bara de operaii bara situat la baza suprafeei de lucru prestabilite a mediilor de tip Windows. Conine butonul Start precum i butoane pentru toate programele i documentele deschise. Bara cu instrumente (eng. toolbar) bara situat sub bara de meniuri a programelor din Windows, care afieaz un set de butoane pentru executarea celor mai uzuale comenzi de meniu. Barele cu instrumente pot fi mutate sau ancorate pe orice latur a ferestrei program. Dosar (eng. folder) container n care sunt stocate pe disc documente, fiiere program i alte dosare. Sinonim pentru catalog (eng. directory). Subdosar Dosar inclus ntr-un alt dosar; sinonim pentru subcatalog. Toate dosarele sunt subdosare ale dosarului rdcin. Scurttur (eng. shortcut) - legtur rapid ctre un obiect (fiier, disc etc.). Are asociat o pictogram special (o mic sgeat n colul din stnga-jos). Calculatorul meu (eng. My Computer) - program de navigare prin resursele locale ale sistemului de calcul (discuri, imprimante, programe de configurare i de programare a lansrii proceselor). Coul de gunoi (eng. Recycle Bin) - un dosar special care stocheaz temporar obiectele terse de utilizator. Dac obiectele nu au fost terse permanent atunci se pot reface (eng. restore). Reeaua local (eng. Network neighborhood sau My Network places) program ce permite explorarea nodurilor reelei locale (LAN) din care face parte sistemul. Memoria Clipboard - Folosind o parte din memoria RAM, obiectele (fiiere, dosare, text, desene etc.) pot fi mutate dintr-o structur n alta, pot fi multiplicate n cadrul sistemului sau pot fi nlturate prin
66

suprascrierea memoriei RAM. Mecanismul este disponibil n oricare program pentru care meniul de editare ofer funciile cut (mut coninutul n memoria clipboard), copy (copiaz coninutul n memoria clipboard) i paste (copiaz coninutul memoriei clipboard n locul specificat). Lansarea spre executare a programelor este posibil prin intermediul comenzii RUN din meniul START, prin activarea aplicaiei nregistrate n oricare submeniu al meniului START sau prin activarea pictogramei corespunztoare. Sistemul de operare Windows 2000/XP dispune de o colecie bogat de comenzi executabile n mod text. Comenzile interne MS-DOS sunt, n continuare, utilizabile. n plus sunt prezente comenzi precum cele din tabelul urmtor. ASSOC AT CACLS CHKNTFS CMD COLOR COMPACT CONVERT SETLOCAL ENDLOCAL FIND FINDSTR FTYPE GRAFTABL PUSHD POPD RECOVER REPLACE START TITLE VERIFY afieaz / modific asocierea extensiilor fiierelor planific comenzi i programe pentru a fi executate mai trziu afieaz / modific listele de control privind accesul la fiiere afieaz / modific verificarea discului n momentul ncrcrii sistemului de operare lanseaz o nou instan a interpretorului de comenzi stabilete culorile implicite ale consolei afieaz / modific compresia fiierelor din partiiile NTFS convertete volume FAT n NTFS. Nu se poate converti discul curent. iniiaz localizarea variabilelor de mediu ntr-un fiier batch ncheie localizarea variabilelor de mediu dint-un fiier batch caut un ir de caractere ntr-un fiier sau o list de fiiere caut iruri n fiiere afieaz / modific tipurile de fiiere utilizate n lista de asociere. permite sistemului de operare s afieze setul de caractere extins n mod grafic. salveaz dosarul curent i apoi l modific reface valoarea anterioar aciunii PUSHD recupereaz informaia text de pe discuri cu defecte nlocuiete fiiere deschide o nou fereastr pentru executarea unui program sau a unei comenzi stabilete titlul ferestrei unei sesiuni cmd.exe solicit verificarea scrierii corecte a datelor pe disc

67

3.2.4. Resurse logice privind programarea calculatoarelor


Pentru activitatea de programare sunt utile generatoarele de programe. Acestea transform programul surs ntr-un nou format. Din aceast categorie fac parte: macrogeneratorul, asamblorul (relocabil, absolut), compilatoarele, interpretoarele, editorul de legturi, bibliotecarul, editoarele de texte etc. Macrogeneratorul analizeaz un text surs coninnd descrieri ntr-un limbaj special i prezint la ieire un fiier cu text scris n limbaj de asamblare, care poate fi prelucrat ulterior de asamblorul relocabil sau cel absolut. De exemplu, folosind TASM (al firmei Borland) se pot asambla programe n format (cod) Intel. Pentru a putea avea portabilitate ntre sistemele de tip Microsoft i Linux, pentru procesoare Intel i compatibile se poate utiliza NASM. Pentru testarea programelor scrise n limbajul MMIXAL, pentru procesorul MMIX, se poate utiliza un simulator 40 MMIX. Programul surs, scris de utilizator n limbaj de (macro)asamblare, este constituit dintr-un numr de linii. Fiecare linie conine o instruciune a limbajului de asamblare sau o directiv de macrogenerare. Rolul macrogeneratorului este de a expanda macroinstruciunile existente i a rezolva, pe ct posibil, blocurile condiionale. Macrogeneratorul recunoate i analizeaz: directivele de control numeric (tipul bazei de numeraie), directivele de terminare (.END), directivele de asamblare condiional (.IF, .IFF, .IFT etc.), directivele de definire a macroinstruciunilor (.MACRO, .ENDM), directivele de control (mesaje de eroare), directivele de generare i substituire, directivele de apelare a macrodefiniiilor dintr-o bibliotec etc. Asamblorul relocabil transform modulele surs scrise n limbaj de asamblare ntr-un modul obiect relocabil, o tabel de simboluri i un listing de asamblare. Asamblorul relocabil accept la intrare unul sau mai multe fiiere surs n limbaj de asamblare obinute folosind macrogeneratorul sau scrise de utilizator. Ieirile asamblorului constau dintr-un fiier obiect (.obj, .o, .mmo etc.), un fiier de listare (.lst) i o tabel de simboluri (.map). Asamblorul absolut transform modulele scrise n limbaj de asamblare (ieire a macrogeneratorului sau scrise de utilizatori) ntr-un program executabil (.tsk, .cmd, .out, etc.) Compilatoarele efectueaz translatarea programului surs n program obiect relocabil. Pentru ca un astfel de modul s devin program executabil este necesar editarea legturilor. Funcia principal a editorului de legturi (eng. Link) este de a
Pentru testarea programelor se pot folosi uneltele puse la dispozitie pe pagina grupului de lucru de la FHM: http://www.cs.fhm.edu/~mmix/tools/tools.html 68
40

transforma i nlnui modulele obiect relocabile rezultate n procesul de asamblare i/sau compilare pentru a obine un program executabil acceptabil de programul ncrctor al sistemului de operare. n faza de editare a legturilor pot fi incorporate i module obiect situate n biblioteci relocabile. Un compilator este structurat n patru componente principale: analizor lexical, analizor sintactic i semantic, generator de cod i optimizator. Toate aceste componente gestioneaz un tabel de simboluri. Analizorul lexical realizeaz o prim translatare a textului programului surs ntr-un ir de entiti lexicale ce constituie reprezentri interne ale unor categorii sintactice precum: cuvinte cheie, identificatori, constante, delimitatori, operatori etc. Astfel, n fazele urmtoare se poate lucra cu simboluri de lungime fix i cu un numr mai mic de categorii sintactice. Analizorul lexical va completa tabelul de simboluri. Analizorul sintactic i semantic verific corectitudinea sintactic a instruciunilor i colecteaz atributele semantice ale categoriilor sintactice din program. Ieirea analizorului sintactic i semantic o constituie o reprezentare codificat a structurii sintactice i un set de tabele ce conin atributele semantice ale diferitelor categorii sintactice (simboluri, constante etc.) Generatorul de cod va traduce ieirea analizorului sintactic i semantic n format binar relocabil sau n limbaj de asamblare. Optimizatorul are rolul de a prelucra ieirea generatorului de cod cu scopul de a minimiza memoria necesar la execuie i a elimina redundanele din corpul programului. Unele compilatoare efectueaz anumite optimizri nainte de generarea codului. O funcie important a compilatorului const n detectarea erorilor din programul surs i corectarea sau acoperirea lor. Spre deosebire de compilatoare, interpretoarele i execut programul odat cu traducerea programului surs, furniznd la ieire rezultatele programului. Mai precis, diferena fa de un compilator este aceea c interpretorul nu produce un program obiect ce urmeaz a fi executat dup interpreatare, ci chiar execut acest program. Din punct de vedere structural, un interpretor se aseamn cu un compilator, dar forma intermediar obinut nu e folosit la generarea de cod, ci pentru a uura decodificarea instruciunii surs n vederea executrii ei. Este cazul interpretorului sistemului AUTOCAD care analizeaz linia de comand i, dac comanda este corect, realizeaz funcia solicitat. Un editor de texte este un program on-line (rspunsul imediat la comenzi), ce accept comenzi introduse de la terminal pentru a scrie i/sau terge caractere, linii sau grupuri de linii din programul surs sau din orice fiier text. Editoarele de texte pot lucra n mod linie i/sau mod ecran. Ele pun la dispoziie comenzi privind deplasarea cursorului n text (pe linie, n cadrul unui bloc sau n cadrul ntregului fiier), manipularea blocurilor de text (marcare, deplasare, copiere, tergere), comenzi de formatare a ieirii etc. Exemplificm prin Edit (Ms-DOS, Windows 2000), Notepad (Windows), vi sau emacs (UNIX) etc.

69

3.3. Exerciii
1. Se consider comenzile UNIX (Linux): a. ps e. df b. who f. file c. pwd g. du d. ls h. cal Alegei comanda UNIX (LINUX) potrivit pentru: 1. afiarea numrului de blocuri coninute n fiecare fiier / director specificat ca argument. 2. afiarea informaiei despre spaiul liber de pe disc 3. afiarea directorului (folderului, catalogului) curent 4. afiarea strilor proceselor 5. afiarea utilizatorilor din sistem 6. afiarea coninutului unui director (folder, catalog) 7. afiarea tipului de fiier specificat (text, aplicaie, director) 8. afiarea calendarului pentru anul curent. Rspuns: (1, g), (2, e), (3, c), (4, a), (5, b), (6, d), (7, f), (8, h). 2.: Fie comenzile UNIX (Linux): a. cat i. mv b. pg j. mount/unmount c. more k. chmod d. cd l. chown e. mkdir m. cmp f. rmdir n. diff g. rm o. diffdir h. cp p. find Alegei comanda UNIX (Linux) potrivit pentru a realiza urmtoarea aciune: 9. Caut unul sau mai multe fiiere care satisfac anumite criterii 10. Compar dou fiiere 11. Afieaz unul sau mai multe fisiere la iesirea standard 12. Copiaza unul sau mai multe fiiere surs ntr-un fiier destinaie 13. Mut sau redenumete fiierele i directoarele (folderele, cataloagele) 14. terge unul sau mai multe fiiere 15. Creeaz un nou director (folder, catalog) 16. Afieaz un fiier pagin cu pagin 17. Afieaz un fiier ecran cu ecran 18. Schimb modul de acces al unuia sau mai multor fiiere 19. Creeaz / Elibereaz o intrare n/din tabela dispozitivelor. 20. terge directoarele specificate 21. Schimba directorul (folderul, catalogul) curent 22. Afieaz diferenele dintre dou cataloage 23. Schimb proprietarul unuia sau mai multor fiiere
70

24. Compar dou fiiere i arat modificrile care trebuie efectuate pentru a avea aceeai form. Rspuns: (9, p), (10, m), (11, a), (12, h), (13, I), (14, g), (15, e), (16, b), (17, c), (18, k), (19, j), (20, f), (21, d), (22, o), (23, l), (24, n). 3. Fie comenzile: a. ASSOC k. FIND b. AT l. FINDSTR c. CACLS m. FTYPE d. CHKNTFS n. GRAFTABL e. CMD o. PUSHD f. COLOR p. POPD g. COMPACT q. RECOVER h. CONVERT r. REPLACE i. SETLOCAL s. START j. ENDLOCAL t. VERIFY Alegei comanda Microsoft Windows 2000/XP potrivita care: 25. Solicit verificarea scrierii corecte a datelor pe disc 26. Deschide o fereastr pentru executarea unui program sau a unei comenzi 27. Afieaz / Modific asocierea extensiilor fiierelor 28. Lanseaz o noua instan a interpretorului de comenzi 29. Initiaz localizarea variabilelor de mediu ntr-un fiier batch 30. Recupereaz informaia de pe discuri cu defecte 31. Planific comenzi i programe pentru a fi executate mai tarziu 32. Afieaz / Modific verificarea discului n momentul incrcrii sistemului de operare 33. Afieaz / Modific compresia fiierelor din partiiile NTFS 34. Salveaz dosarul curent i apoi l modific 35. Afieaz / Modific listele de control privind accesul la fiiere 36. Stabilete culorile implicite ale consolei 37. ncheie localizarea variabilelor de mediu dintr-un fiier batch 38. Caut iruri de caractere (ASCII / UNICODE) n fiiere 39. Reface valoarea anterioara aciunii PUSHD 40. nlocuiete fiiere 41. Afieaz / Modific tipurile de fiiere utilizate n lista de asociere 42. Caut un ir de caractere ntr-un fiier sau o list de fiiere 43. Permite sistemului de operare s afieze setul de caractere extins n mod grafic 44. Convertete volumele FAT n NTFS. Rspuns: (25, t), (26, s), (27, a), (28, e), (29, i), (30, q), (31, b), (32, d), (33, g), (34, o), (35, c), (36, f), (37, j), (38, l), (39, p), (40, r), (41, m), (42, k), (43, n), (44, h). 4. Calitatea imaginii unui display este dat de: a) memorie, b) rezoluie, c) firma productoare.
71

5. Ce reprezint rezoluia display-ului? A) numrul de pixeli pe orizontal x numrul de pixeli pe vertical, b) numrul de culori. 6. Unitatea de msur a ecranului este: a) MB, b) inch, c) Hz 7. Asociai tatele speciale cu funcia pe care o ndeplinesc: a) ESC (Escape) g) Print screen (PrtSc) m) Internet b) Tab h) Scroll Lock (ScrLk) n)E-mail c) Ctrl (Control), Alt i) Pause d) Caps Lock j) Num Lock (NumLk) e) Backspace k) Win f) Enter l) Application Lista funciilor este: 45. Salt la urmtoarea zon de tabulare 46. Folosete / Comut spre tastaura numeric sau special 47. Oprirea execuiei unui program 48. Oprirea defilrii ecranului 49. Execut o operaie 50. ntrerupe aciunea 51. Sterge caracterul aflat naintea poziiei curente 52. Preluarea imaginii ecranului 53. Se folosesc n combinaie cu alte taste 54. Blocarea tastaturii pe litere mari 55. Simuleaz butonul drept al mausului 56. Deschide meniul Start 57. Acceseaz rapid E-mail 58. Acceseaz rapid Internetul. Rspuns: A se vedea textul. 8. Procesorul are rolul de a: a) stoca informaiile pe termen lung, b) controla activitatea altor echipamente i de a prelucra informaiile, c) executa programele. 9. Memoria ROM este folosit pentru: a) citire, b) scriere, c) citire-scriere. 10. Memoria RAM este folosit pentru: a) citire, b) scriere, c) citire-scriere. 11. Care memorie este mai rapid: RAM sau ROM? 12. Determinai capacitatea de memorie intern a sistemului de calcul pe care lucrai. 13. La ce se refer termenul de partajare cnd ne creferim la discuri i imprimante?
72

14. Cum creai o dichet sistem? n ce cazuri este aceasta util? 15.Enumerai avantajele i dezavantajele utilizrii CD/DVD-ROM-urilor. 16. Enumerai i descriei principalele tipuri de imprimante. Evideniai principalele avantaje i dezavantaje ale fiecrui tip. 17. Ce este un modem? Tipuri de modemuri, avantaje i dezavantaje. 18. Ce principiu are la baz funcionarea unui scanner? Tipuri de scanner-e, avantaje i dezavantaje. 19. Deschidei o fereastr i identificai butoanele pentru: a) nchiderea unei ferestre, b) redimensionarea unei ferestre, c) minimizarea unei ferestre. 20. Aflai rspunsul la urmtoarele ntrebri: a) Ce este o fereastr grup de aplicaii? b) Ce sunt ferestrele de dialog? c) Cum se activeaz o fereastr de dialog? d) Cum se poate activa meniul Start? e) Ce opiuni avem pentru crearea unui director (folder, catalog)? f) Ce opiuni avem pentru copierea unui folder sau fiier? g) Ce opiuni avem pentru mutarea unui folder sau fiier? h) Ce opiuni avem pentru redenumirea unui folder sau fiier? i) Ce opiuni avem pentru tergerea unui folder sau fiier? j) La ce folosete o aplicaie Explorer? 21. Se consider lista extensiilor: a) EXE b) TXT c) COM d) WAV e) MP3 f) MID g) BMP h) AVI i) XLS j) DBF k) PAS l) CPP m) SYS n) HLP o) GIF p) PPT Alegei tipul de fiier corespunztor: 59. fiier text 60. fiier aplicaie (executabil) 61. fiieri magine bitmap (hart de pixeli) 62. fiier audio 63. fiier video 64. fiier prezentare realizat folosind Microsoft PowerPoint 65. Fiier surs C++ 66. Fiier imagine, posibil animat. 67. fiier baz de date 68. fiier registru realizat folosind Microsoft EXCEL 69. fiier surs Pascal 70. fiier Help
73

71. fiier cu informaii pentru sistemul de operare. Rspuns: Consultai lista de asocieri implicite: Tools/Folder Options/ File types 22. Care este diferena dintre formatarea fizic i cea logic a discutrilor? 23. Explicai necesitata existenei registrelor procesorului? 24. Asemnri i diferene ntre componentele unui procesor SISD. 25. Care este legtura ntre instruciunile aritmetice ale unui procesor i noiunile teoretice prezentate n primul capitol? 26. Care este diferen dintre un terminal serial i un terminal memorie? 27. Prin ce difer arhitecturile SISD i SIMD? 28. Care sunt principalele tipuri de reele? Explicai difereele dintre acestea. 29. Ce asemnri i deosebiri exist ntre componentele hardware ale reelelor locale? 30. Care este diferen dintre multiprogramare i multitasking? 31. Care este diferena dintre un driver i un controler (card sau cuplor)? 32. Asemnri i diferene ntre sistemele de operare Windows de la Microsoft i distribuiile de Linux? 33. Asemnri i deosebiri relative la arhitecturile MIMD. 34. Asemnri i deosebiri ntre arhitecturile RISC i CISC. 35. Asemnri i deosebiri ntre un interpretor i un compilator. 36. Comparaie ntre analizorul lexical i analizorul sintactic. 37. Descriei principalele funcii ale unui editor de text pentru programatori. 38. Asociai tastele speciale de deplasare i prelucrare a unui text conform funciei ndeplinite: a) Insert b) Delete c) Home d) End e) PageUp f) Page Down g) Left Arrow h) Right Arrow i) Up Arrow j) Down Arrow Lista funciilor ndeplinite este: 72. deplasare n sus cu un rnd 73. deplasare n jos cu un rnd 74. deplasare spre stnga cu un caracter 75. deplasare spre dreapta cu un caracter 76. mut cursorul la nceputul paginii anterioare 77. mut cursorul la nceputul paginii urmtoare 78. terge caracterul indicat de ctre cursor 79. trece n modul de suprascriere i invers 80. mut cursorul la sfritul rndului 81. mut cursorul la inceputul rndului 39. Care este rolul preprocesorului mediilor de programare bazate pe C? 40. Care este diferena dintre un limbaj de asamblare i un limbaj de nivel mediu sau nalt?
74

4. Calculatorul MMIX 41
4.1. Instruciunile calculatorului MMIX Procesorul MMIX (arhitecur RISC) a fost propus de D. Knuth 42 (1999). Are 264 celule de memorie (a cte un octet), 28 (= 256) registre cu rol general i 25 (= 32) registre speciale. Fiecare registru stocheaz 64 de bii de date. Celule de memorie sunt notate cu M[0], M[1], ..., M[264-1], registrele generale sunt notate $0, $1, ..., $255, iar registrele speciale (tabelul 4.1) se numesc rA, rB, ..., rZ, rBB, rTT, rWW, rXX, rYY i rZZ. Accesul la memorie poate fi realizat la nivel de byte, wyde, tetrabyte i octabyte (a se revedea seciunea 1.3), folosind notaiile M, M2, M4 i M8: M2[2k] = M2[2k+1] = M[2k]M[2k+1]; M4[4k] = M4[4k+1] = M4[4k+2] =M4[4k+3] = M[4k]M[4k+1]M[4k+2]M[4k+3], respectiv M8[8k] = M8[8k+1] = ... M8[8k+7] = M[8k]M[8k+1] ... M[8k+7], unde k parcurge intervalul discret de la 0 la cea mai mare valoare admis impus de indicele folosit (exerciiu). Pentru uniformitate convenim s notm M1[k] = M[k], oricare k n domeniul permis. Dac k 264 atunci considerm M[k] M[k mod 264]. Fie x o secven de bii. Notm prin s(x) ntregul cu semn corespunztor secvenei x, n reprezentarea cu complement fa de doi. Pentru ntregi fr semn, se noteaz cu u(x) numrul natural corespunztor secvenei x. Considerm ca o adres de memorie A este un ntreg fr semn i se evalueaz ntotdeauna modula 264. Vom face distincie ntre notaia $k (registrul general cu indexul k) i numrul natural k. O instruciune MMIX este stocat pe 32 de bii interpretai (un tetrabyte), fiecare dintre cei patru bytes avnd semnificaie separat sau pe baza unei transformri, n funcie de operaia la care se refer. Cei patru bytes sunt denumii convenional: OP (codul operaiei sau opcode), X, Y, Z (operanzi considerai ntregi fr semn). Cnd instruciunea are numai doi operanzi, unul este X, iar cellalt este valoarea desemnat de YZ. Cnd este un singur operand atunci acesta este valoarea desemnat de XYZ. Calculatorul MMIX dispune de urmtoarele seturi de instruciuni:

Pentru resurse i informaii actualizate verificai n mod regulat pagina web a autorului acestui proiect deosebit: http://www-cs-faculty.stanford.edu/~knuth/mmix.html 42 D. Knuth (1999), MMIXware. Lecture Notes in Computer Science, 1750, Springer Verlag. 75

41

ncrcare i stocare (tabelul 4.2) instruciuni condiionale (tabelul 4.4)

operaii aritmetice (tabelul 4.3) operaii la nivel de bit/octet (tabelul 4.5) instruciuni imediate (tabelul 4.6) instruciuni de salt (tabelul 4.7) operaii n virgul mobil/fix (tabelul instruciuni avansate (tabelul 4.9) 4.8) Instruciunile de ncrcare folosesc mnemonice LoaD cu sau fr semn pentru bytes, wydes, tetrabytes and octabytes. Cnd un byte, wyde sau tetrabyte cu semn este convertit ntr-un octabyte cu semn atunci bitul de semn este extins la toate poziiile din stnga. Similar, instruciunile de stocare folosesc mnemonice Store (tabelul 4.2). Dac $Y i $Z sunt utilizai n formarea adresei atunci A (u($Y) + u($Z)) mod 264. Tabelul 4.1. Registre MMIX speciale
Co d 0 Nume rB Descriere Salvabil? Da Permite scriere? Da

rD

2 3

rE rH

4 5 6 7

rJ rM rR rBB

8 9 10

rC rN rO

Registru Bootstrap pentru devieri (trip: deviere - redirectare ctre codul utilizatorului) Registrul de demprit (folosit de instruciunea DIVU, pentru ca dempritul s fie pe 16 bytes i mpritorul pe 8 bytes.) Registrul epsilon folosit n legtur cu anumite operaii n virgul mobil. Registrul pentru instruciunea MULU: jumtatea superioar a produsului a dou valori pe cte 8 bytes este stocat n rH (himult). Registrul de revenire (return-jump) utilizat n programarea procedural. Registrul Multiplex Mask Registrul Rest (pentru instruciunea DIV care formeaz att ctul ct i restul) Registrul Bootstrap pentru ntreruperi (trap: ntrerupere controlul redirectat ctre codul sistemului de operare) Contor de cicluri (registru ceas) : se incrementeaz continuu. Numr serial (fiecare calculator MMIX are un numr unic) Deplasamentul stivei de registre (stack
76

Da

Da

Da Da

Da Da

Da Da Da

Da Da Da Da

11 12 13 14 15 16 17 18

rS rI rT rTT rK rQ rU rV

19

rG

20

rL

21

rA

22 23 24 25 26 27 28 29 30 31

rF rP rW rX rY rZ rWW rXX rYY rZZ

offset) Indicatorul stivei de registre (stack pointer) Contor de interval (descrete i provoac ntrerupere cnd ajunge la zero) Registrul de adres Trap: Trap Address Registrul Dynamic Trap Address Registrul Interrupt Mask Registrul Interrupt Request Contor de utilizare (se incrementeaz la ntlnirea unor coduri specificate) Registru de translatare virtual (utilizat pentru conversia celor 264 adrese virtuale, la adresele locaiilor fizice ale memoriei instalate). Registrul de prag global: Registrul $k este global dac k rG. Valoara lui rG este ntotdeauna ntre 32 i 255 (inclusiv). Registrul de prag local (precizeaz cte registre locale sunt active la un moment dat): Registrul $k este local dac k < rG. Dac rL k < rG atunci registrul $k se numete marginal. Registrul de stare aritmetic ce evideniaz urmtoarele condiii excepionale: integer divide check (D), integer overflow (V), float to fix overflow (W), invalid floating operation (I), floating overflow (O), floating underflow (U), floating division by zero (Z) i floating inexact (X). rA este compus din bii de eveniment i bii de activare. Registrul Failure Location Registrul de predicie registrul Where-Interrupted(trip) Registrul de executare (trip) Registrul operandului Y (trip) Registrul operandului Z (trip) Registrul Where Interrupted (trap) Registrul de executare (trap) Registrul operandului Y (trap) Registrul operandului Z (trap)

Da

Da

Da

Da

Da Da Da Da Da

Da Da Da Da Da Da Da Da Da Da

77

Tabelul 4.2. Instruciuni de ncrcare i stocare Registre speciale utilizate #80 LDB $X, $Y, s($X) s(M1[A]); cu conversie de la NU $Z byte la octabyte i pstrarea valorii. #84 LDW $X, $Y, s($X) s(M2[A]); cu conversie de la NU $Z wyde la octabyte i pstrarea valorii. #88 LDT $X, $Y, $Z s($X) s(M4[A]); cu conversie de la NU tetra la octabyte i pstrarea valorii. #8C LDO $X, $Y, s($X) s(M8[A]); transfer de octabyte. NU $Z #82 LDBU $X, $Y, u($X) u(M1[A]); cu conversie de la NU $Z unsigned byte la unsigned octabyte i pstrarea valorii. #86 LDWU $X, $Y, u($X) u(M2[A]); cu conversie de la NU $Z unsigned wyde la unsigned octabyte i pstrarea valorii. #8A LDTU $X, $Y, u($X) u(M4[A]); cu conversie de la NU $Z unsigned tetrabyte la unsigned octabyte i pstrarea valorii. #8E LDOU $X, $Y, u($X) u(M8[A]); transfer de unsigned NU $Z octabyte. #92 LDHT $X, $Y, u($X) ncarc NU u(M4[A])x232; $Z tetrabyte-ul superior n jumtatea stng a lui $X, iar jumtatea dreapt este ocupat cu zerouri. #22 LDA $X, $Y, u($X) A; ncarc adresa specificat (a NU $Z se vedea i ADDU) #A0 STB $X, $Y, $Z s(M1[A]) s($X); memoreaz byte. #A4 STW $X, $Y, s(M2[A]) s($X); memoreaz wyde. NU, $Z Posibil #A8 STT $X, $Y, $Z s(M4[A]) s($X); memoreaz depire superioar tetrabyte. #AC STO $X, $Y, $Z s(M8[A]) s($X); memoreaz octabyte. #A2 STBU $X, $Y, u(M1[A]) u($X) mod 28; memoreaz NU $Z unsigned byte. #A6 STWU $X, $Y, u(M2[A]) u($X) mod 216; memoreaz NU $Z unsigned wyde. #AA STTU $X, $Y, u(M4[A]) u($X) mod 232; memoreaz NU $Z unsigned tetrabyte.
78

Cod

Sintaxa

Descriere

#AE #B2 #B4

STOU $X, $Y, u(M8[A]) u($X); memoreaz NU $Z unsigned octabyte. STHT $X, $Y, u(M4[A]) [u($X) / 232]; stocheaz NU $Z tetrabyte-ul superior. STCO X, $Y, u(M8[A]) X; stocheaz o constant NU $Z unsigned byte ca octabyte. Pentru fiecare instruciune din tabelele 4.2, 4.3, 4.4 i 4.5 exist i varianta

imediat. Dac sintaxa instruciuni, utilizeaz Z n loc de $Z (adic se specific valoare constant i nu un registru) atunci se genereaz instruciunea cu codul incrementat (de exemplu: STBI/STTI $X, $Y, Z are asociat codul #A1, respectiv #A9). Instruciunea cu codul #22 poate fi decodificat fie ca LDA, fie ca ADDU. Tabelul 4.3. Operaii aritmetice Cod #20 #24 #18 #1C Sintaxa ADD $X, $Y, $Z SUB $X, $Y, $Z MUL $X, $Y, $Z DIV $X, $Y, $Z Descriere Registre speciale utilizate 43 s($X) s($Y) + s($Z); adunare cu NU semn s($X) s($Y) - s($Z); scdere cu NU semn s($X) s($Y) * s($Z); nmulire cu NU semn [s($Z) 0] - Efectul este: s($X) rR; rA: [s($Y) / s($Z)], s(rR) s($Y) mod poziionare indicator s($Z). [s($Z) = 0] - Efectul este: s($X) 0; D, dac este cazul. s(rR) s($Y). 64 u($X) (u($Y) + u($Z)) mod 2 ; NU adunare fr semn u($X) (u($Y) - u($Z)) mod 264; NU scdere fr semn u(rH$X) (u($Y) * u($Z)); rH nmulire fr semn [u($Z) > u(rD)] Efectul este: u($X) rD, rR [u(rD$Y) / u($Z)], u(rR) u(rD$Y) mod u($Z).

#22 #26 #1A #1E

ADDU $X, $Y, $Z SUBU $X, $Y, $Z MULU $X, $Y, $Z DIVU $X, $Y, $Z

Coninutul registrelor speciale poate fi examinat folosind instruciunea GET. Iniializarea unor registre speciale (cele care permit scrierea) se poate realiza folosind instruciunea PUT. 79

43

#28 #2A #2C #2E #34 #36

#38 #3A #3C #3E #30 #32

[u($Z) u(rD)] Efectul este: u($X) u(rD), u(rR) u($Y). La nceputul oricrui program u(rD) 0. 2ADDU $X, $Y, $Z u($X) (u($Y) x 2 + u($Z)) mod 264; nmulete cu 2 i adun, fr semn 4ADDU $X, $Y, $Z u($X) (u($Y) x 4 + u($Z)) mod 264; nmulete cu 4 i adun, fr semn 8ADDU $X, $Y, $Z u($X) (u($Y) x 8 + u($Z)) mod 264; nmulete cu 8 i adun, fr semn 16ADDU $X, $Y, u($X) (u($Y) x 16 + u($Z)) mod $Z 264; nmulete cu 16 i adun, fr semn NEG $X, Y, $Z s($X) Y s($Z); complementare cu semn NEGU $X, $Y, $Z u($X) (Y u($Z)) mod 264; complementare fr semn. Dac Y este zero atunci se scrie prescurtat NEG $X, $Z (respectiv NEGU $X, $Z) SL $X, $Y, $Z s($X) s($Y) x 2u($Z); deplasare la stnga 44 SLU $X, $Y, $Z u($X) (u($Y) x 2u($Z)) mod 264; deplasare la stnga, fr semn SR $X, $Y, $Z s($X) [s($Y) / 2u($Z)]; deplasare la dreapta 45 SRU $X, $Y, $Z u($X) [u($Y) / 2u($Z)]; deplasare la dreapta, fr semn. CMP $X, $Y, $Z s($X) [s($Y) > s($Z)] [s($Y) < s($Z)]; comparare CMPU $X, $Y, $Z s($X) [u($Y) > u($Z)] [u($Y) < u($Z)]; comparare, fr semn.

NU NU NU NU NU NU

NU NU NU NU NU NU

44

Notaia x << n (n limbajele C, C++, Java, etc.) descrie deplasarea valori binare x cu n poziii la stnga. 45 Notaia x >> n (n limbajele C, C++, Java, etc.) descrie deplasarea valori binare x cu n poziii la dreapta. 80

Tabelul 4.4. Instruciuni condiionale Cod #60 #62 #64 #66 #68 #6A #6C #6E #70 Sintaxa CSN $X, $Y, $Z CSZ $X, $Y, $Z CSP $X, $Y, $Z CSOD $X, $Y, $Z CSNN $X, $Y, $Z CSNZ $X, $Y, $Z CSNP $X, $Y, $Z CSEV $X, $Y, $Z ZSN $X, $Y, $Z Descriere Registre speciale utilizate Dac s($Y) < 0 atunci $X $Z NU (copiere condiionat strict negativ); altfel efect nul. Dac s($Y) = 0 atunci $X $Z NU (copiere condiionat coninut nul); altfel efect nul. Dac s($Y) > 0 atunci $X $Z NU (copiere condiionat strict pozitiv); altfel efect nul. Dac s($Y) mod 2 = 1 atunci $X NU $Z (copiere condiionat numr impar); altfel efect nul. Dac s($Y) 0 atunci $X $Z NU (copiere condiionat nenegativ); altfel efect nul. Dac s($Y) 0 atunci $X $Z NU (copiere condiionat coninut nenul); altfel efect nul. Dac s($Y) 0 atunci $X $Z NU (copiere condiionat negativ sau zero); altfel efect nul. Dac s($Y) mod 2 = 0 atunci $X Nu $Z (copiere condiionat numr par); altfel efect nul. Dac s($Y) < 0 atunci $X $Z NU (copiere condiionat strict negativ); altfel $X 0. Dac s($Y) = 0 atunci $X $Z NU (copiere condiionat coninut nul); altfel $X 0. Dac s($Y) > 0 atunci $X $Z NU (copiere condiionat strict pozitiv); altfel $X 0. Dac s($Y) mod 2 = 1 atunci $X NU $Z (copiere condiionat numr impar); altfel $X 0. Dac s($Y) 0 atunci $X $Z NU (copiere condiionat nenegativ);
81

#72

ZSZ $X, $Y, $Z

#74

ZSP $X, $Y, $Z

#76

ZSOD $X, $Y, $Z

#78

ZSNN $X, $Y, $Z

#7A

ZSNZ $X, $Y, $Z

#7C #7E

ZSNP $X, $Y, $Z ZSEV $X, $Y, $Z

Dac s($Y) 0 atunci $X $Z NU (copiere condiionat coninut nenul); altfel $X 0. Dac s($Y) 0 atunci $X $Z NU (copiere condiionat negativ sau zero); Dac s($Y) mod 2 = 0 atunci $X NU $Z (copiere condiionat numr par); altfel $X 0.

Coninutul unui registru este negativ dac bitul su cel mai din stnga este 1 (bitul de semn) i este impar dac bitul su cel mai din dreapta este 1. Mnemonicele care au C ca prim caracter modific coninutul registrului $X prin copiere numai dac este ndeplinit condiia, iar cel care au Z ca prefix modific ntotdeauna coninutul (fie prin copiere, fie prin iniializare cu zero). Operaiile la nivel de bit/octet au numeroase aplicaii i presupun organizarea irului de bii ca un tablou liniar/bidimensional a cte 64 de componente. n cazul bidimensional este vorba de o matrice booleana 8x8, cu liniile de sus n jos reprezentnd octeii irului de bii de la stnga la dreapta. Dac operaiile la nivel de bit sunt utile n analiza semnalelor, realizarea sistemelor de operare etc., operaiile la nivel de octet pot fi ntlnite n procesarea textelor i grafica pe calculator, pentru a meniona doar cteva domenii. Dac x i y sunt valori de tip byte/wyde/tetrabyte sau octabyte, notm prin xTy = max(0, x-y) diferena saturat dintre x i y. La nivel de bit vor fi folosite notaiile and, or, xor i not utilizate asupra algebrei Boole B = ({0, 1}, or, and, not). Dac x este un octabyte atunci v(x) reprezint tabloul unidimensional cu biii lui x, b(x) tabloul unidimensional cu datele de tip byte, w(x) tabloul unidimensional cu datele de tip wyde, t(x) tabloul unidimensional cu datele de tip tetrabyte, o(x) valoarea de tip octabyte, m(x) reprezint matricea format cu biii lui x, iar mT(x) este transpusa matricei m(x). Operaiile mor i mxor ntre matricele booleene A = (aij)1im,1jn i B = (bjk)1jn,1kp conduc la matricele C = A mor B i D = A mxor B, cu elemente cik = (ai1 and b1k) or (ai2 and b2k) or ... or ( ain and bnk), respectiv dik = (ai1 and b1k) xor (ai2 and b2k) xor ... xor ( ain and bnk), unde 1 i m i 1 k p. Toate instruciunile descrise mai jos admit i forma simplificat n care n loc de $Z se folosete Z. Tabelul 4.6 prezint instruciunile ce utilizeaz constante imediate, dar pentru care unul dintre operanzi este de forma YZ.

82

Tabelul 4.5. Operaii la nivel de bit/octet/wyde/tetrabyte/octabyte/matrice Cod #C8 #C0 #C6 #CA #C2 #CC #C4 #CE #D8 Sintaxa AND $X, $Y, $Z OR $X, $Y, $Z XOR $X, $Y, $Z ANDN $X, $Y, $Z ORN $X, $Y, $Z NAND $X, $Y, $Z NOR $X, $Y, $Z NXOR $X, $Y, $Z MUX $X, $Y, $Z Descriere Registre speciale utilizate v($X) v($Y) and v($Z); I bit cu NU bit v($X) v($Y) or v($Z); SAU bit cu NU bit v($X) v($Y) xor v($Z); SAU NU exclusiv bit cu bit v($X) v($Y) and not v($Z); I cu NU negaie bit cu bit v($X) v($Y) or not v($Z); SAU cu NU negaie bit cu bit v($X) not (v($Y) and v($Z)); NU Negaie - I bit cu bit v($X) not (v($Y) or v($Z)); NU Negaie -SAU bit cu bit v($X) not (v($Y) xor v($Z)); NU Negaie SAU exclusiv bit cu bit v($X) (v($Y) and v(rM)) or (v($Z) rM and not v(rM)); multiplexare se aleg biii din $Y sau din $Z n funcie de valoarea 1 sau 0 a bitului corespunztor din rM. s($X) s((v($Y) and not v($Z))); NU numrul de poziii pe care $Y are valoarea 1 n timp ce $Z are valoarea 0. b($X) b($Y) T b($Z); diferena NU saturat la nivel de byte w($X) w($Y) T w($Z); diferena NU saturat la nivel de wyde t($X) t($Y) T t($Z); diferena NU saturat la nivel de tetrabyte o($X) o($Y) T o($Z); diferena NU saturat la nivel de octabyte NU m($X) m($Y) mor m($Z) NU m($X) m($Y) mxor m($Z)

#DA SADD $X, $Y, $Z

#D0 #D2 #D4 #D6 #DC #DE

BDIF $X, $Y, $Z WDIF $X, $Y, $Z TDIF $X, $Y, $Z ODIF $X, $Y, $Z MOR $X, $Y, $Z MXOR $X, $Y, $Z

83

Tabelul 4.6. Instruciuni imediate YZ Cod #E0 #E1 #E2 #E3 #E4 #E5 #E6 #E7 #E9 #E9 #EA #EB #EC #ED #EE #EF Sintaxa SETH $X, YZ SETMH $X, YZ SETML $X, YZ SETL $X, YZ INCH $X, YZ INCMH $X, YZ INCML $X, YZ INCL $X, YZ ORH $X, YZ ORMH $X, YZ ORML $X, YZ ORL $X, YZ ANDNH $X, YZ ANDNMH $X, YZ ANDNML $X, YZ ANDNL $X, YZ Descriere Registre speciale utilizate 48 NU u($X) YZ x 2 NU u($X) YZ x 232 16 NU u($X) YZ x 2 NU u($X) YZ u($X) (u($X) + YZ x 248) mod 264 NU u($X) (u($X) + YZ x 232) mod 264 NU u($X) (u($X) + YZ x 216) mod 264 NU NU u($X) (u($X) + YZ) mod 264 NU v($X) v($X) or v(YZ << 48) NU v($X) v($X) or v(YZ << 32) NU v($X) v($X) or v(YZ << 16) NU v($X) v($X) or v(YZ) v($X) v($X) and not v(YZ << NU 48) v($X) v($X) and not v(YZ << NU 32) v($X) v($X) and not v(YZ << NU 16) NU v($X) v($X) and not v(YZ ) Tabelul 4.7. Instruciuni de salt / ramificare Cod #F0 #9E #40 #42 #44 #46 #48 #4A Sintaxa JMP AR GO $X, $Y, $Z BN $X, AR BZ $X, AR BP $X, AR BOD $X, AR BNN $X, AR BNZ $X, AR Descriere Registre speciale utilizate Salt la adresa @ + 4XYZ; aici adresa NU relativ se formeaz cu 3 octei: @ AR A = (u($Y) + u($Z)) mod 264; u($X) NU @ + 4; @ A NU Dac s($X) < 0 atunci @ AR NU Dac s($X) = 0 atunci @ AR NU Dac s($X) > 0 atunci @ AR Dac s($X) mod 2 = 1 atunci @ NU AR NU Dac s($X) 0 atunci @ AR NU Dac s($X) 0 atunci @ AR
84

#4C #4E #50 #52 #54 #56 #58 #5A #5C #5E

BNP $X, AR BEV $X, AR PBN $X, AR PBZ $X, AR PBP $X, AR PBOD $X, AR PBNN $X, AR PBNZ $X, AR PBNP $X, AR PBEV $X, AR

NU Dac s($X) 0 atunci @ AR NU Dac s($X) mod 2 = 0 atunci @ AR NU Dac s($X) < 0 atunci @ AR NU Dac s($X) = 0 atunci @ AR NU Dac s($X) > 0 atunci @ AR Dac s($X) mod 2 = 1 atunci @ NU AR NU Dac s($X) 0 atunci @ AR NU Dac s($X) 0 atunci @ AR NU Dac s($X) 0 atunci @ AR Dac s($X) mod 2 = 0 atunci @ NU AR

Deoarece pentru a rezolva probleme cu ajutorul calculatorului este nevoie de nlnuirea etapelor de rezolvare, de ramificarea fluxului n funcie de anumite evenimente i de repetarea unor secvene de operaii, orice procesor trebuie s dispun de mecanisme de direcionare a controlului. Tabelul 4.7 descrie instruciunile de salt i ramificare puse la dispoziie de procesorul MMIX. Acestea constituie baza oricrei structuri de nivel nalt de tip if, while, etc. Pentru instruciunile BN, BZ, BP, BOD, BNN, BNZ, BNP, BEV i variantele de tip probabilist (prefixate prin P), adresa relativ AR se formeaz numai cu doi octei. Spunem c astfel de salturi sunt la mic distan de punctul curent, spre deoebire de JMP a crui adres relativ de salt este format cu ajutorul a trei octei. Se recomand utilizarea ramificrilor de tip probabilist ori de cte ori programatorul tie c probabilitatea apariiei unei ramificri depeste 0.5. Aceasta corespunde tendinei actuale de proiectare a procesoarelor care pot anticipa salturile. Instruciunea GO are i varianta de tip imediat, iar celelalte instruciuni pot executa saltul i napoi (avnd sufixul B i codul incrementat). Operaiile n virgul mobil se bazeaz pe principiile prezentate n seciunea 1.4. MMIX permite i reprezentarea n virgul mobil, n format scurt, cu 32 de bii, dintre care 8 pentru obinerea exponentului i 23 de bii pentru mantis. Reprezentarea numerelor cu virgul fix presupune o poziie fix a virgulei. MMIX dispune de instruciuni de conversie ntre reprezentrile "virgul fix" i "virgul mobil scurt."

85

Tabelul 4.8. Instruciuni MMIX folosind reprezentarea IEEE 754 Cod #04 #06 #10 #14 #16 #01 #11 #03 #13 #02 #12 #15 #17 #05 #07 #08 #0A #0C #0E #90 #B0 Registre speciale utilizate FADD $X, $Y, $Z NU f($X) f($Y) + f($Z) FSUB $X, $Y, $Z NU f($X) f($Y) - f($Z) FMUL $X, $Y, $Z NU f($X) f($Y) * f($Z) FDIV $X, $Y, $Z NU f($X) f($Y) / f($Z) FREM $X, $Y, $Z f($X) f($Y) rem f($Z); y rem z = y-nz, NU n fiind cel mai apropiat ntreg de y/z. FCMP $X, $Y, $Z s($X) [f($Y)>f($Z)] [f($Y)<f($Z)]; NU comparare n virgul mobil FCMPE $X, $Y, $Z s($X)[f($Y)>f($Z)(f(rE))] rE [f($Y)<f($Z)(f(rE))]; comparare n virgul mobil n raport cu epsilon FEQL $X, $Y, $Z NU s($X) [f($Y) = f($Z)] FEQLE $X, $Y, $Z s($X) [f($Y) = f($Z)(f(rE))]; rE egalitate n virgul mobil n raport cu epsilon FUN $X, $Y, $Z s($X) [f($Y) || f($Z)]; neordonare NU n virgul mobil; este adevrat cnd unul dintre operanzi este NaN. FUNE $X, $Y, $Z s($X) [f($Y) || f($Z)(f(rE))]; rE neordonare n virgul mobil n raport cu epsilon NU FSQRT $X, Y, $Z f($X) f($Z)1/2 FINT $X, Y, $Z NU f($X) int(f($Z)) FIX $X, Y, $Z NU s($X) int(f($Z)); 64 NU FIXU $X, Y, $Z u($X) (int(f($Z))) mod 2 ; FLOT [I]$X, Y, $Z f($X) s($Z); NU FLOTU[I] $X, Y, f($X) u($Z); NU $Z SFLOT[I] $X, Y, f($X) f(T) s($Z); T este un tetrabyte NU $Z extra SFLOTU[I] $X, Y, f($X) f(T) u($Z); NU $Z LDSF[I] $X, $Y, f($X) f(M4[A]); ncarc virgul mobil NU $Z scurt STSF[I] $X, $Y, $Z f(M4[A]) f($X); memoreaz virgul mobil NU scurt Sintaxa Descriere

86

Tabelul 4.9. Instruciuni avansate Cod #F2 #BE #F8 #FB Sintaxa PUSHJ[B] $X, AR PUSHGO[I] $X, $Y, $Z POP X, YZ SAVE $X, 0 Descriere push(X); rJ @ +4; @ AR push(X); rJ @ +4; @ A pop(X); @ rJ + 4*YZ u($X) context (salvarea registrelor curente n stiva de registre) Contextul este compus din registrele locale, registrele globale i registrele speciale. $X este un registru global. context u($Z); refacere contex Registre speciale utilizate rJ, rO, rS rJ, rO, rS rJ, rO, rS Sunt salvate; rL 0.

#FA

Sunt citite #FF TRIP X, Y, Z Conform algoritmului de tratare a rB, rW, TRIP X, YZ devierilor rX, rY, TRIP XYZ rZ, rJ #00 TRAP X, Y, Z Conform algoritmului de tratare a rBB, TRAP X, YZ ntreruperilor rWW, TRAP XYZ rXX, rYY, rZZ, rT, rK, rQ #F9 RESUME 0 Reluare dup ntrerupere rW, rX #FE GET $X, Z u($X) u(g[Z]); 0 Z < 32 (codul g[Z] registrului special); g[Z] este registrul avnd codul Z #F6 PUT[I] X, $Z u(g[X]) u($Z); depunere n g[X] registrul special g[X] #F4 GETA[B] $X, AR u($X) AR; ncarc adres relativ NU #96 LDUNC[I] $X, $Y, s($X) s(M8[A]); ncarc octabyte NU $Z fr depunere n memoria cache #B6 STUNC[I] $X, $Y, s(M8[A]) s($X); stocare octabyte NU $Z fr depunere n memoria cache #9A PRELD[I] X, $Y, $Z Probabil, octeii de la M[A] la NU M[A+X] vor fi ncrcai sau stocai n viitorul apropiat #BA PREST[I] X, $Y, $Z Sigur, octeii de la M[A] la M[A+X] NU vor fi ncrcai (scrii) nainte de citirea urmtoare #9C PREGO[I] X, $Y, $Z Probabil, octeii de la M[A] la NU
87

UNSAVE $Z

#BC #B8

#FC #94

#98 #FD

M[A+X] vor fi utilizai ca instruciuni n viitorul apropiat SYNCID[I] X, $Y, Octeii de la M[A] la M[A+X] trebuie $Z regsii nainte de a fi interpretai ca instruciuni SYNCD[I] X, $Y, $Z Octeii de la M[A] la M[A+X] trebuie s fie actualizai n RAM nainte de a fi citii de alte calculatoare sau dispozitive periferice SYNC XYZ Sincronizare n vederea cooperrii fiabile n procesarea paralel CSWAP[I] $X, $Y, Dac u(M8[A]) = u(rP) atunci $Z u(M8[A]) u($X) i u($X) 1, altfel u(M8[A]) u(rP) i u($X) 0; operaie indivizibil LDVTS[I] $X, $Y, ncarc starea translatrii virtuale (se $Z aplic doar sistemului de operare) SWYM X, Y, Z Nu efectueaz nici o operaie (NOP); SWYM X, YZ octeii X, Y, Z sunt ignorai SWYM XYZ

NU NU

NU rP

rV NU

n categoria instruciunilor avansate includem instruciunile pentru apel de subrutine (proceduri / funcii), instruciunile pentru tratarea ntreruperilor (eng. traps) i devierilor (eng. trips), instruciunile relative la registrele speciale precum i instruciunile pentru procesare ultrarapid. Instruciunile din tabelele de mai sus avnd sufixul [I] admit i modul imediat, iar cele cu sufixul [B] specific modul de operare back. 4.2. Programarea calculatorului MMIX Programele surs MMIX (fiier text cu extensia .mms) constituite din declaraii i instruciuni, trebuie asamblate folosind programul mmixal care produce un fiier obiect (cu extensia .mmo). Interpretarea codului obiect se va realiza folosind simulatorul MMIX. Programul poate admite argumente n linia de comand (similar limbajelor C, C++, Java), numrul argumentelor se va stoca n $0, iar adresa de nceput a irului de argumente (primul fiind numele programlui) este plasat n $1. Instruciunile unui program MMIX ncep ntotdeauna de la locaia simbolic Main. Programele MMIX conin simboluri (secvene de litere i cifre care ncep obligatoriu cu liter), constante (zecimale baza 10, hexazecimale baza 16 ncep cu #), caracter (ntre apostrofuri), iruri de caractere ncadrate de ghilimele), expresii i instruciuni. Unele simboluri sunt predefinite. Exist elemente primare
88

(simboluri, constante, @, expresie ncadrat de paranteze, operator unar urmat de element primar) i termeni (unul sau mai multe elemente primare separate prin operatori binari puternici: *, /, //, %, <<m >>, &). Expresiile sunt formate cu operatori binari slabi: +, -, |, ^. O instruciune are trei cmpuri: zona etichetei (spaiu sau simbol), zona operaiei OP (conform tabelelor de mai sus, sau o pseudo-operaie MMIXAL), zona expresilor (separate prin virgul) i eventual zona comentariu. Comentariile de tip linie ncep cu %, ; sau //, iar cele de tip bloc sunt delimitate de /* i */. Exemplul 4.1. Programul de mai jos afieaz la mediul de ieire (StdOut) mesajul compus dintr-un ir introdus n linia de comand, spaiu, i BRAVO. Observai c #a este caracterul ASCII de trecere la linie nou, iar #0 este terminatorul de ir.
Main argv IS $1 LOC #100 LDOU $255,argv, 0 //Incarc octa TRAP 0, Fputs, StdOut //fara semn si TRAP GETA $255, String TRAP 0, Fputs, StdOut TRAP 0, Halt,0 " BRAVO", #a, 0

String BYTE

Procesul de asamblare decurge n trei pai astfel: locaia curent este aliniat la multiplu de 8 (OP = OCTA), 4 (OP = TETRA sau operaie MMIX), 2 (OP =WYDE); se definete simbolul @ ca fiind eticheta, n afara cazului n care OP = IS sau OP = GREG. Dac OP este o operaie MMIX atunci zona operaie i zona expresie definesc un tetrabyte, iar @ este incrementat cu 4. Daca OP este o pseudo-operaie MMIXAL atunci se analizeaz operaia i se realizeaz urmtoarele aciuni: a) Dac OP = IS atunci simbolul din zona etichetei devine echivalent cu valoarea unicei expresii prezente n zona expresiilor. b) Daca OP = LOC atunci locaia curent @ devine valoarea unicei expresii, care trebuie s aib o valoare pur. c) Dac OP = BYTE, WYDE, TETRA sau OCTA, atunci n zona expresiilor sunt prezente mai multe expresii stocabile pe 1, 2, 4 sau 8 octei ncepnd cu adresa indicat simbolic n zona etichetei. d) Daca OP = GREG, atunci unica expresie evaluat la o valoare pur x se atribuie acelui registru global (n mod read only) al crui cel mai mare numr nealocat nc este asociat simbolului din zona etichet. Un comportament important al oricrui asamblor este cel relativ la operaiile de intrare-ieire. Dac considerm stilul limbajului C pentru operaiile Fopen, Fclose, Fread, Fgets (extins i la Fgetws), Fwrite, Fputs (extins i la Fputws), Fseek, i Ftell, aceste pot fi simulate conform tabelului 4.10. Relativ la operaiile de intrare-ieire, urmtoarele simboluri sunt predefinite n MMIXAL: Fopen = 1, Fclose = 2, Fread = 3, Fgets = 4, Fgetws = 5, Fwrite = 6, Fputs = 7, Fputws = 8, Fseek = 9, Ftell = 10, TextRead = 0, TextWrite = 1, BinaryRead = 2, BinaryWrite = 3, BinaryReadWrite = 4.
89

Tabelul 4.10. Operaii de intrare-ieire


Funcia Fopen (pointer, nume, mod) Mod de simulare (efect) LDA $255, Arg; Trap 0, Fopen, <pointer>, unde ARG este o secven de doi octabytes: Arg OCTA <nume>, <mod> TRAP 0, Fclose, <pointer> LDA $255, Arg; TRAP 0, Fread, <pointer> cu doi octabytes pentru celelalte argumente: Arg OCTA <buffer>, <dimensiune> Pointer-ul de fiier trebuie deschis cu unul din modurile TextRead, BinaryRead, BinaryReadWrite. LDA $255, Arg; TRAP 0, Fgets, <pointer> cu doi octabytes pentru celelalte argumente: Arg OCTA <buffer>, <dimensiune> Se aplic pentru tipul wyde: LDA $255, Arg; TRAP 0, Fgetws, <pointer> cu doi octabytes pentru celelalte argumente: Arg OCTA <buffer>, <dimensiune> Pointer-ul de fiier trebuie deschis cu unul din modurile TextWrite, BinaryWrite, BinaryReadWrite. LDA $255, Arg; TRAP 0, Fwrite, <pointer> cu doi octabytes pentru celelalte argumente: Arg OCTA <buffer>, <dimensiune> LDA $255, ir; TRAP 0, Fputs, <pointer> LDA $255, ir; TRAP 0, Fputws, <pointer> (se aplic pentru tipul wyde) Pointer-ul de fiier trebuie deschis cu unul din modurile BinaryRead, BinaryWrite, BinaryReadWrite. Are loc poziionarea indicatorului de articol. LDA $255, <deplasament>; TRAP 0, Fseek, <pointer> Returneaz poziia curent n fiier. TRAP 0, Ftell, <pointer>
90

Fclose (pointer) Fread (pointer, buffer, dimensiune)

Fgets (pointer, buffer, dimensiune)

Fgetws (pointer, buffer, dimensiune)

Fwrite (pointer, buffer, dimensiune)

Fputs (pointer, ir) Fputws (pointer, ir) Fseek (pointer, deplasament)

Ftell (pointer)

Exemplul 4.2. Un experiment asupra irului Fibonacci poate fi realizat folosind programul: sp GREG Termenii irului fp GREG Fibonacci sunt: n GREG 0, 1, 1, 2, 3, 5, 8, 13, 21, fn IS n 34, 55, 89 etc. LOC #100
Fib GREG CMP PBN STO SET INCL STO STO SUB GO STO LDO SUB GO LDO ADDU LDO SET LDO GO SETH SET GO @ $1,n,2 $1,1F fp,sp,0 fp,sp sp,8*4 $0,fp,8 n,fp,16 n,n,1 $0,Fib fn,fp,24 // F[n-1] n,fp,16 n,n,2 $0,Fib $0,fp,24 fn,fn,$0 $0,fp,8 sp,fp fp,sp,0 $0,$0,0 sp,Data_Segment>>48 n,5 $0,Fib

Termenul de rang n este suma termenilor de rang n-1 i n-2. f0 = 0; f1 = 1; fn = fn-1 + fn-2.

1H Main

Presupunem c textul de mai sus este introdus folosind un editor de texte (de exemplu Edit sau NotePad) i este salvat sub forma fibo.mms. Prin comanda: mmixal -l fibo.lst -o fibo.mmo fibo.mms se vor crea fiierele: fibo.lst (list-ing) i fibo.mmo (fiierul obiect). Fiierul fibo.lst are urmtorul coninut (cititorul este invitat s observe codurile instruciunilor i modul cum este asamblat programul):
($254) ($253) ($252) ($252) sp fp n fn LOC GREG GREG GREG GREG IS n #100 @ CMP PBN STO SET INCL STO STO SUB $1,n,2 $1,1F fp,sp,0 fp,sp sp,8*4 $0,fp,8 n,fp,16 n,n,1

($251=#00000000 00000100) ...100: 3101fc02 Fib ...104: 5001xxxx ...108: adfdfe00 ...10c: c1fdfe00 ...110: e7fe0020 ...114: ad00fd08 ...118: adfcfd10 ...11c: 25fcfc01

91

...120: ...124: ...128: ...12c: ...130: ...134: ...138: ...13c: ...140: ...144: ...148: ...14c: ...150: ...154:

9f00fb00 adfcfd18 8dfcfd10 25fcfc02 9f00fb00 8d00fd18 22fcfc00 8d00fd08 c1fefd00 8dfdfe00 9f000000 e0fe2000 e3fc0005 9f00fb00

1H Main

GO STO LDO SUB GO LDO ADDU LDO SET LDO GO SETH SET GO

$0,Fib fn,fp,24 // F[n-1] n,fp,16 n,n,2 $0,Fib $0,fp,24 fn,fn,$0 $0,fp,8 sp,fp fp,sp,0 $0,$0,0 sp,Data_Segment>>48 n,5 $0,Fib

Symbol table: Fib = #0000000000000100 (6) Main = #000000000000014c (1) fn = $252 (5) fp = $253 (3) n = $252 (4) sp = $254 (2)

Fiierul fibo.mmo va fi transmis simulatorului mmix prin comanda: mmix <opiuni> fibo unde opiunile descriu modul delucru permis. Cteva opiuni sunt: -t, respective -e pentru executarea instruciunii de un numr de ori sau ntlnirea unei excepii, -l pentru listarea liniilor surs n timpul executrii instruciunilor, -s pentru furnizarea de statistici, -q pentru oprire, -i pentru a intra n mod interactiv, -f pentru a specifica fiierul utilizat pentru a simula introducerea datelor i -D pentru a produce un fiier utilizabil de ctre alte simulatoare. Lansarea n mod interactiv a simulatorului asupra fiierului fibo.mmo (extensia nu este obligatorie) i executarea pas cu pas a ctorva instruciuni produce ieirea:
>mmix -i fibo mmix> (0000000000000148: fb0000ff (UNSAVE)) #60000000000000a0: rG=251, ..., rL=2 0 instructions, 0 mems, 0 oops; 0 good guesses, 0 bad (now at location #000000000000014c) mmix> 1. 000000000000014c: e0fe2000 (SETH) $254=g[254] = #2000000000000000 1 instruction, 0 mems, 1 oop; 0 good guesses, 0 bad (now at location #0000000000000150) mmix> 1. 0000000000000150: e3fc0005 (SETL) $252=g[252] = #5 2 instructions, 0 mems, 2 oops; 0 good guesses, 0 bad (now at location #0000000000000154) mmix> 1. 0000000000000154: 9f00fb00 (GOI) $0=l[0] = #158, -> #100 3 instructions, 0 mems, 5 oops; 0 good guesses, 0 bad (now at location #0000000000000100)

92

4.3. Exerciii
1. Scriei programe MMIX pentru: Calculul sumei primelor 100 de numere naturale. Calculul sumei a n numere ntregi, stocate ncepnd cu adresa ST. Ordonarea cresctoare a unui ir de numere ntregi stocate ncepnd cu adresa ST.. Stabilirea celui mai mare element dintr-un ir de numere ntregi stocat ncepnd cu adresa ST. Calculul produsului primelor N numere naturale nenule, N fiind dat. Cautarea unui numr ntreg ntr-un ir ordonat/neordonat folosind algoritmul cutrii binare/liniare. 2. Folosind descrierile de mai sus, prin analiza pas cu pas, stabilii ce realizeaz urmtorul program MMIX 46 ?
A IS $0 B IS $1 n IS $2 C IS $3 i IS $4 tt IS $5 j IS $6 ax IS $7 bx IS $8 cx IS $9 t IS $255 LOC #200 SRU n,n,6 SET tt,n SLU tt,tt,3 ADDU tt,C,tt SET t,1 SET i,0 CMP t,i,n BZ t,1F SLU j,i,3 LDO ax,A,j LDO bx,B,j AND cx,ax,bx STO cx,C,j XOR cx,ax,bx STO cx,tt,j INCL i,1 JMP S TRAP 0,Halt,0

Main

1H

Ivonne Mehlfeld, S. Mehlfeld, FAUXPAS 3000, http://www.fauxpas3000.de/Kontakt.html 93

46

3. S se verifice dac un ir de caractere este palindrom (se citete la fel prin parcurgerea de la stnga spre dreapta i retur.) Rspuns: Programul de mai jos verific dac la adresa String se afl, sau nu, stocat un palindrom.
s t poz test R Q IS $0 IS $255 IS $2 IS $5 IS $3 IS $4 LOC Data_Segment GREG @ String BYTE "COJOC",0 %String BYTE "ELENESEDUCCUDESENELE", 0 %String BYTE "ROTITOR", 0 %String BYTE "AUONAVANOUA", 0 %String BYTE "PUPUPUP", 0 %String BYTE "ETALATE", 0 %String BYTE "ENEPURTAPATRUPENE", 0 LOC #200 LDA s,String LDBU t,s BZ t,sf2 SET poz,s LDBU t,poz BZ t,2F INCL poz,1 JMP 1B SUB poz,poz,1 CMP t,s,poz BNN t,sf2 LDBU R,s LDBU Q,poz CMP test,Q,R BNZ test,sf ADD s,s,1 SUB poz,poz,1 JMP 3B SET $0,0 JMP fin SET $0,1 JMP fin TRAP 0,Halt,0

Main 1H

2H 3H

sf sf2 Fin

94

Bibliografie

1. G. Albeanu, Sisteme de operare, Editura Petrion, Bucureti, 1996. 2. G. Albeanu, Algoritmi i limbaje de programare, Editura Fundaiei Romnia de Mine, Bucureti, 2000 (capitolul 2). 3. G. Albeanu, Programarea i utilizarea calculatoarelor, Editura Universitii din Oradea, Oradea, 2003 (capitolul 1). 4. DEX1996, Dicionarul explicativ al limbii romne, Editura Univers Enciclopedic, Bucureti, 1996. 5. DINF1981, Dicionar de informatic, Editura tiinific i Enciclopedic, Bucureti, 1981. 6. J. Henessy & D. Patterson, Computer Architecture: A Quantative Approach, Morgan Kaufman, 2002. 7. D. Knuth, Arta programrii calculatoarelor, Vol. I, Editura Teora, 1999. 8. D. Knuth, Arta programrii calculatoarelor: MMIX un calculator RISC pentru noul mileniu, Editura Teora, 2005. Se recomand versiunea n limba englez: D. E. Knuth: The art of Computer programming. Fascicle 1: MMIX, Addison-Wesley, Zeroth printing (revision 15), 2004. 9. D. Knuth, MMIXware. Lecture Notes in Computer Science, Vol. 1750, Springer Verlag, 1999. 10. C.P. Popovici, S. Rudeanu, H. Georgescu, Bazele informaticii, Vol. II, Bucureti, 1991. 11. A.S.Tanenbaum, Organizarea structural a calculatoarelor, Computer Press Agora, 1999. 12. Web1, ISBN, http://www.niso.org/standards/resources/ISBN.html 13. Web2, Ivonne Mehlfeld, S. Mehlfeld, http://www.fauxpas3000.de/Kontakt.html. 14. Web3, Bar Code, http://www.itsc.org.sg/synthesis/2001/itsc-synthesis2001-jinsoonbar-coding.pdf 15. Web4, Wiki, http://en.wikipedia.org/wiki/.

95

Tehnoredactor: Grigore ALBEANU Coperta: Cornelia PRODAN Bun de tipar: 05.02.2007; Coli tipar: 6 Format: 16/70100 Editura Fundaiei Romnia de Mine Bulevardul Timioara nr. 58, Bucureti, Sector 6 Tel./Fax 021/444.20.91; www.spiruharet.ro e-mail: contact@edituraromaniademaine.ro 96