Sunteți pe pagina 1din 50

ARHITECTURA SISTEMELOR DE CALCUL Prof. univ. dr.

GRIGORE ALBEANU INTRODUCERE


Sistemele de calcul au evoluat continuu, iar aceast evoluie continu s ne uimeasc. Materialul urmtor ncearc sa 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. Pare surprinztor c se acord importan major bazelor de numeraie i funciilor booleene, dar orice utilizator/programator, mai devreme sau mai trziu, va avea nevoie de acestea. Stabilirea culorilor n realizarea paginilor HTML necesit cunoaterea sistemului hexazecimal, cutarea de informaie folosind motorul Google necesit utilizarea cuvintelor AND, OR etc. (deci a operaiilor logice). Sistemele de calcul au fost proiectate, iniial, pentru calcule tiinifice. Ori, reprezentarea IEEE 754 este doar unul dintre modelele de reprezentare a numerelor reale. Dac vrem s programm eficient trebuie s simplificm expresiile logice, s nelegem modul de funcionare a unui sistem de calcul particular. Iat, de ce este important s extindei cunoaterea dincolo de acest material. Resursele bibliografice i notele de subsol v dau doar cteva direcii. Partea a treia este doar pentru utilizatori, dar un programator are nevoie s cunoasc mult mai mult dect ofer prezentul material. Vei spune c nu este nevoie de UNIX pentru c Windows este sistemul de operare preferat. Nici o problem! Mai devreme sau mai trziu vei avea ocazia s utilizai i alte sisteme de calcul dect calculatoarele personale. Vei fi surprini s aflai ct de multe tipuri de sisteme de calcul / operare exist. Calculatorul MMIX este, deocamdat, unul virtual. Dar cte experimente se pot face. Aici putei 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). Prezentul material este structurat n patru pri. Prima parte 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 v permit s nelegei tipurile de date cu care opereaz limbajele de programare (inclusiv cele care manipuleaz obiecte) precum i operaiile cu aceste date. Capitolul al doilea, aparent teoretic, are aplicaii majore n proiectarea sistemelor digitale i a optimizrii calcului. Seciunea 3.1.7 reprezint doar o introducere. Seciunea a treia este un sumar al tuturor componentelor unui sistem de calcul. El poate fi oricnd extins n funcie de noile tehnologii informaionale. Au fost introduse modurile de utilizare UNIX/Windows pentru c acestea domin piaa actual. Aceasta nu face ca cel care parcurge materialul s nu se poat descurca i cu alte sisteme de calcul. Experiena de utilizare / programare se poate mbuntii numai prin exerciiu, prin experiment. Instruciunile INTEL pot fi analizate folosind DEBUG (comand extern a oricrui sistem Microsoft), 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. Eventuale resurse necesare experimentrii MMIX pot fi obinute folosind referinele menionate n text. Bibliografia este minimal, ea poate fi completat cu alte referine i va fi permanent actualizat. Sistemele de calcul evolueaz permanent. Este o realitate!

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 digitale1, 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 algoritm2 (de exemplu, la adunare se face transport de la ordinul curent la ordinul imediat superior. 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 corespunztori3. 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, din scrierea zecimal, n baza b (b 2), se procedeaz astfel: 1. se mparte (conform teoremei mpririi cu rest4) 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. 2. se nmulete cu b, partea fracionar5 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 ntregi6 ale produselor, luate n ordinea apariiei.

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. 3 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. 5 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. 2

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 corespunzatoare (din ir) i baza7 ridicat la puterea specificat de poziia acesteia. 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. 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. 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: 8 9 A B C D E F Binar: 1000 1001 1010 1011 1100 1101 1110 1111 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. Pentru numere octale i hexazecimale, operaiile aritmetice sunt efectuate conform urmtoarelor reguli: Tabla adunrii octale:

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

Tabla nmulirii octale:

Tabla adunrii hexazecimale:

Tabla nmulirii hexazecimale:

Exemple: 10110011 + 111110 = 11110001 (baza 2); 34022,56-1234,11=32566,45 (baza 8); 5DA2 x B8 = 434C70 (baza 16). Efectuai operaiile artnd modul de calcul.

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). 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. Codurile pot fi alfanumerice i grafice (folosind imagini). Un exemplu de cod nenumeric, foarte popular, este codul de bare (eng. bar code), utilizat n supermagazine. 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 seciunea 5, n conexiune direct cu programarea procesoarelor.
5
+

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; denumire8 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 hardware9. Prelucrarea datelor este realizat de programe, compuse din comenzi numite instruciuni. Totalitatea programelor poart numele de software10. 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 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
8

Alte denumiri sunt: crumb, quad, quarter, tayste, tydbit, conform http://www.fullbooks.com/TheNew-Hacker-s-Dictionary-version-4-2.html, http://dictionary.reference.com/browse/crumb etc. 9 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." 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." 6
10

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 plus11, 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 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 valori12 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.
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. 12 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. 7
11

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 + c2b-2+ ... + 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. 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,

x fl ( x) x

cb1 p , unde c = 0.5 n cazul metodei 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. 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.
8

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 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.

2. BAZELE LOGICE ALE SISTEMELOR DE CALCUL


2.1. Latici i algebre Boole
Definiia 2.1.1. Se numete latice 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. Exemple

1) Mulimea prilor (submulimilor) unei mulimi M notat P(M) (sau 2M) nzestrat cu operaiile i formeaz o latice.

2) Mulimea valorilor de adevr {0, 1} nzestrat cu operaiile (disjuncia logic) i (conjuncia logic) formeaz de asemenea o latice care, n plus, are i alte proprieti. Principiul dualitii pentru latici: Dac ntr-o propoziie adevrat din teoria laticilor se nlocuiete o operaie prin cealalt (i invers) se obine, de asemenea, o propoziie adevrat. Propoziia 2.1.1. n orice latice (L, +, ), pentru orice element x L sunt adevrate relaiile: (7) x + x = x; (8) x x = 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. 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. 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. 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.

10

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. Definiia 2.1.6. O latice distributiv i complementat se numete algebr boolean. 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 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; 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
11

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

implicaia invers, x2 x1 negaia variabilei x1 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 = 0, 1 ( k = 1 0 ' . n general, notm, x1 = x i x0 = x 1, 2, ..., n) cu convenia de notaie: x k = xk , xk = xk 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
(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 j j j
i1 i2 1 2 i1 ,i2 ,...,in {0,1}
i1 ,i2 ,...,in {0,1}

adevrate: (21) (22)

in x ... x n = 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

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

(24)

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

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


'

i1 i2 in (25) c x x ... x (ci1i2 ...in ) ' x1i1 x2 i2 ... xn in i1i2 ...in 1 2 n = i1 ,i2 ,...,in {0,1} i1 ,i2 ,...,in {0,1} 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. 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 ,..., xn B.

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

ci1i2 ...in = f (i1 , i2 ,..., in ),( i1 , i2 ,..., in {0,1}). (27) Propoziia 2.2.2. 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}.
12

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. O funcie boolean este funcie boolean simpl dac i numai dac satisface: (29) f ( x1 ,..., x n ) = x1i1 x 2 i2 ... x n in , x1 ,..., x n B.
i1 ,i2 ,...,in {0,1} f ( i1 ,i2 ,...,in ) =1

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 ) =

i2 in f ( i 1 , i 2 , ... , i n ) + x 1i1 + x 2 ...+ x n ,

0'

lund n considerare notaiile i convenia de mai sus. 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 reprezentarea13 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 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 Karnaugh14.

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. Pentru detalii, algoritmi i exemple de aplicare n analiza i sinteza calculatoarelor se poate consulta http://www.etc.ugal.ro/rpopa/assn%20book/assn_book.htm. 14 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). 13

13

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 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.

14

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 etape15: 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 Toma16. 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 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. 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
Pentru detalii istorice i vizite virtuale putei accesa: http://archive.computerhistory.org/search/ 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.
16 15

15

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. Ele sunt utilizate de companiile medii sau departamentele companiilor mari pentru monitorizarea proceselor de fabricaie, gestiunea economic sau cercetare. 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 sunt cele mai puternice sisteme de calcul. 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, 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. 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
16

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. 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) - 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 citireinterpretare 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 (eng. Complex Instruction Set Computer) i RISC (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).

17

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. Capacitatea memoriei este definit prin numrul de uniti de informaie (caractere, cuvinte) disponibile pentru stocarea informaiei. n general17, 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-ul18 (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. DRAM-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 cache19. Rolul memoriei cache const n memorarea
De 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 kilo (K) 1000 = 103 1024 = 210 = 1.024 mega (M) 10002 = 106 10242 = 220 = 1.048.576 3 9 giga (G) 1000 = 10 10243 = 230 = 1.073.741.824 4 12 tera (T) 1000 = 10 10244 = 240 = 1.099.511.627.776 5 15 peta (P) 1000 = 10 10245 = 250 = 1.125.899.906.842.624 6 18 exa (E) 1000 = 10 10246 = 260 = 1.152.921.504.606.846.976 7 21 zetta (Z) 1000 = 10 10247 = 270 = 1.180.591.620.717.411.303.424 8 24 yotta (Y) 1000 = 10 10248 = 280 = 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.techno-science.net/?onglet=glossaire&definition=1653. 18 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. 19 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. 18
17

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. 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 aa-numitul 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
19

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. n 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). *** 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)
20

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 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 virtual20. 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 (cursor21) care arat poziia n care va fi 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).
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. 21 A nu se confunda cu sensul precizat n DEX1996. 21
20

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 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), G-verde (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. 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.

22

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 (noninterlaced). ntreeserea provoac plpirea, i deci oboseala ochilor. Monitoarele portabile echipeaz sistemele de tip laptop, notebook, subnotebook i PDA. *** Dispozitive pentru introducerea informaiei grafice: n categoria dispozitivelor periferice de intrare sunt incluse i echipamentele: mouse22, 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 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
22

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." 23

machines). n prezent cele dou componente sunt integrate pe o plachet numit internal faxmodem sau ntr-un dispozitiv extern care se cupleaz la un sistem de calcul prin portul serial. *** 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. 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).

24

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. 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

25

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).

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) matriceal-asociative - 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

26

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), mai precis o plachet instalat n PC ce suport att funcii de partajare a spaiului fizic ct i funcii de sincronizare. 3. 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. 4. 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. 5. Repetitoare - Acestea sunt echipamente ce amplific semnalele pentru a mri distana fizic pe care poate aciona un LAN.

27

6. 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. 7. 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. 8. 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 "client-server" 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. 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.

28

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, Fig. 3.4. Recursia 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. 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 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. Fig. 3.5. Subciclu 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. n finalul seciunii, prezentm corespondena dintre 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.

29

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 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

30

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 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 ntr-o 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).
31

4.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 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 aanumitelor 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. 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

32

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; 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:
33

-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. 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. ps who logname whodo pwd ls 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;

34

I.7. I.8. I.9. I.10. I.11.

cal du ipcs df file

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 I-nodurilor libere pentru un anumit sistem de fiiere, sau pentru toate sistemele de fiiere montate; afieaz tipul unui fiier specificat (text, executabil, catalog).

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 (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

F.9. F.10.

cp mount/umount

F.11. F.12.

chmod chown

35

F.13. F.14. F.15. F.16.

cmp diff diffdir find

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;

4.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 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.

36

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 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

37

4.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 simulator23 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 este de a 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

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 38

23

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 efecueaz i executarea programului 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 la comenzi este imediat), 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.

4. Calculatorul MMIX
4.1. Instruciunile calculatorului MMIX Procesorul MMIX (arhitecur RISC) a fost propus de D. Knuth24 (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: ncrcare i stocare (tabelul 4.2), operaii aritmetice (tabelul 4.3), instruciuni condiionale (tabelul 4.4), 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 4.8) i instruciuni avansate (tabelul 4.9).
24

D. Knuth (1999), MMIXware. Lecture Notes in Computer Science, 1750, Springer Verlag. 39

Tabelul 4.1. Registre MMIX speciale


Cod 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Nume rB rD rE rH rJ rM rR rBB rC rN rO rS rI rT rTT rK rQ rU rV rG rL rA Descriere 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 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) Salvabil? Da Da Da Da Da Da Da Permite scriere? Da Da Da Da Da Da Da Da

Da Da Da Da

22 23 24 25 26 27 28 29 30 31

rF rP rW rX rY rZ rWW rXX rYY rZZ

Da Da Da Da Da

Da Da Da Da Da Da Da Da Da Da

40

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. Dac $Y i $Z sunt utilizai n formarea adresei atunci A (u($Y) + u($Z)) mod 264. Tabelul 4.2. Instruciuni de ncrcare i stocare Cod #80 #84 #88 #8C #82 #86 #8A #8E #92 #22 #A0 #A4 #A8 #AC #A2 #A6 #AA #AE #B2 #B4 Sintaxa LDB $X, $Y, $Z LDW $X, $Y, $Z LDT $X, $Y, $Z LDO $X, $Y, $Z LDBU $X, $Y, $Z LDWU $X, $Y, $Z LDTU $X, $Y, $Z LDOU $X, $Y, $Z LDHT $X, $Y, $Z LDA $X, $Y, $Z STB $X, $Y, $Z STW $X, $Y, $Z STT $X, $Y, $Z STO $X, $Y, $Z STBU $X, $Y, $Z STWU $X, $Y, $Z STTU $X, $Y, $Z STOU $X, $Y, $Z STHT $X, $Y, $Z STCO X, $Y, $Z Descriere Registre speciale utilizate s($X) s(M1[A]); cu conversie de la byte la NU octabyte i pstrarea valorii. s($X) s(M2[A]); cu conversie de la wyde la NU octabyte i pstrarea valorii. s($X) s(M4[A]); cu conversie de la tetra la NU octabyte i pstrarea valorii. NU s($X) s(M8[A]); transfer de octabyte. u($X) u(M1[A]); cu conversie de la unsigned NU byte la unsigned octabyte i pstrarea valorii. u($X) u(M2[A]); cu conversie de la unsigned NU wyde la unsigned octabyte i pstrarea valorii. u($X) u(M4[A]); cu conversie de la unsigned NU tetrabyte la unsigned octabyte i pstrarea valorii. u($X) u(M8[A]); transfer de unsigned NU octabyte. u($X) u(M4[A])x232; ncarc tetrabyte-ul NU superior n jumtatea stng a lui $X, iar jumtatea dreapt este ocupat cu zerouri. u($X) A; ncarc adresa specificat (a se NU vedea i ADDU) s(M1[A]) s($X); memoreaz byte. NU, Posibil s(M2[A]) s($X); memoreaz wyde. depire s(M4[A]) s($X); memoreaz tetrabyte. superioar s(M8[A]) s($X); memoreaz octabyte. 8 u(M1[A]) u($X) mod 2 ; memoreaz NU unsigned byte. u($X) mod 216; memoreaz NU u(M2[A]) unsigned wyde. u($X) mod 232; memoreaz NU u(M4[A]) unsigned tetrabyte. u($X); memoreaz unsigned NU u(M8[A]) octabyte. u(M4[A]) [u($X) / 232]; stocheaz tetrabyte-ul NU superior. u(M8[A]) X; stocheaz o constant unsigned NU 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.

41

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 utilizate25 NU s($X) s($Y) + s($Z); adunare cu semn NU s($X) s($Y) - s($Z); scdere cu semn NU s($X) s($Y) * s($Z); nmulire cu semn [s($Z) 0] - Efectul este: s($X) [s($Y) / rR; rA: poziionare s($Z)], s(rR) s($Y) mod s($Z). [s($Z) = 0] - Efectul este: s($X) 0; s(rR) indicator D, dac este s($Y). cazul. 64 u($X) (u($Y) + u($Z)) mod 2 ; adunare NU fr semn u($X) (u($Y) - u($Z)) mod 264; scdere NU fr semn u(rH$X) (u($Y) * u($Z)); nmulire fr rH semn [u($Z) > u(rD)] Efectul este: u($X) rD, rR [u(rD$Y) / u($Z)], u(rR) u(rD$Y) mod u($Z). [u($Z) u(rD)] Efectul este: u($X) u(rD), u(rR) u($Y). La nceputul oricrui program u(rD) 0. u($X) (u($Y) x 2 + u($Z)) mod 264; NU nmulete cu 2 i adun, fr semn u($X) (u($Y) x 4 + u($Z)) mod 264; NU nmulete cu 4 i adun, fr semn u($X) (u($Y) x 8 + u($Z)) mod 264; NU nmulete cu 8 i adun, fr semn u($X) (u($Y) x 16 + u($Z)) mod 264; NU nmulete cu 16 i adun, fr semn s($X) Y s($Z); complementare cu semn NU u($X) (Y u($Z)) mod 264; NU complementare fr semn. Dac Y este zero atunci se scrie prescurtat NEG $X, $Z (respectiv NEGU $X, $Z) s($X) s($Y) x 2u($Z); deplasare la stnga26 NU u($X) (u($Y) x 2u($Z)) mod 264; deplasare NU la stnga, fr semn s($X) [s($Y) / 2u($Z)]; deplasare la dreapta27 NU u($X) [u($Y) / 2u($Z)]; deplasare la NU dreapta, fr semn. s($X) [s($Y) > s($Z)] [s($Y) < s($Z)]; NU comparare s($X) [u($Y) > u($Z)] [u($Y) < u($Z)]; NU comparare, fr semn.

#22 #26 #1A #1E

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

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

2ADDU $X, $Y, $Z 4ADDU $X, $Y, $Z 8ADDU $X, $Y, $Z 16ADDU $X, $Y, $Z NEG $X, Y, $Z NEGU $X, $Y, $Z

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

SL $X, $Y, $Z SLU $X, $Y, $Z SR $X, $Y, $Z SRU $X, $Y, $Z CMP $X, $Y, $Z CMPU $X, $Y, $Z

25

Coninutul registrelor speciale poate fi examinat folosind instruciunea GET. Iniializarea unor registre speciale (cele care permit scrierea) se poate realiza folosind instruciunea PUT. 26 Notaia x << n (n limbajele C, C++, Java, etc.) descrie deplasarea valori binare x cu n poziii la stnga. 27 Notaia x >> n (n limbajele C, C++, Java, etc.) descrie deplasarea valori binare x cu n poziii la dreapta. 42

Tabelul 4.4. Instruciuni condiionale Cod #60 #62 #64 #66 #68 #6A #6C #6E #70 #72 #74 #76 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 ZSZ $X, $Y, $Z ZSP $X, $Y, $Z ZSOD $X, $Y, $Z Descriere Registre speciale utilizate Dac s($Y) < 0 atunci $X $Z (copiere NU condiionat strict negativ); altfel efect nul. Dac s($Y) = 0 atunci $X $Z (copiere NU condiionat coninut nul); altfel efect nul. Dac s($Y) > 0 atunci $X $Z (copiere NU condiionat strict pozitiv); altfel efect nul. Dac s($Y) mod 2 = 1 atunci $X $Z NU (copiere condiionat numr impar); altfel efect nul. Dac s($Y) 0 atunci $X $Z (copiere NU condiionat nenegativ); altfel efect nul. Dac s($Y) 0 atunci $X $Z (copiere NU condiionat coninut nenul); altfel efect nul. Dac s($Y) 0 atunci $X $Z (copiere NU condiionat negativ sau zero); altfel efect nul. Dac s($Y) mod 2 = 0 atunci $X $Z Nu (copiere condiionat numr par); altfel efect nul. Dac s($Y) < 0 atunci $X $Z (copiere NU condiionat strict negativ); altfel $X 0. Dac s($Y) = 0 atunci $X $Z (copiere NU condiionat coninut nul); altfel $X 0. Dac s($Y) > 0 atunci $X $Z (copiere NU condiionat strict pozitiv); altfel $X 0. Dac s($Y) mod 2 = 1 atunci $X $Z NU (copiere condiionat numr impar); altfel $X 0. Dac s($Y) 0 atunci $X $Z (copiere NU condiionat nenegativ); Dac s($Y) 0 atunci $X $Z (copiere NU condiionat coninut nenul); altfel $X 0. Dac s($Y) 0 atunci $X $Z (copiere NU condiionat negativ sau zero); Dac s($Y) mod 2 = 0 atunci $X $Z NU (copiere condiionat numr par); altfel $X 0.

#78 #7A

ZSNN $X, $Y, $Z ZSNZ $X, $Y, $Z

#7C #7E

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

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).

43

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. 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 NU v($X) v($Y) and v($Z); I bit cu bit NU v($X) v($Y) or v($Z); SAU bit cu bit v($X) v($Y) xor v($Z); SAU exclusiv bit NU cu bit v($X) v($Y) and not v($Z); I cu negaie NU 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)); Negaie - NU I bit cu bit v($X) not (v($Y) or v($Z)); Negaie - NU SAU bit cu bit v($X) not (v($Y) xor v($Z)); Negaie NU SAU exclusiv bit cu bit v($X) (v($Y) and v(rM)) or (v($Z) and rM 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 saturat NU la nivel de byte w($X) w($Y) T w($Z); diferena saturat NU la nivel de wyde t($X) t($Y) T t($Z); diferena saturat la NU nivel de tetrabyte o($X) o($Y) T o($Z); diferena saturat NU la nivel de octabyte NU m($X) m($Y) mor m($Z) NU m($X) m($Y) mxor m($Z)

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

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

44

Toate instruciunile descrise mai sus 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. 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 u($X) YZ x 248 u($X) YZ x 232 u($X) YZ x 216 u($X) YZ u($X) (u($X) + YZ x 248) mod 264 u($X) (u($X) + YZ x 232) mod 264 u($X) (u($X) + YZ x 216) mod 264 u($X) (u($X) + YZ) mod 264 v($X) v($X) or v(YZ << 48) v($X) v($X) or v(YZ << 32) v($X) v($X) or v(YZ << 16) v($X) v($X) or v(YZ) v($X) v($X) and not v(YZ << 48) v($X) v($X) and not v(YZ << 32) v($X) v($X) and not v(YZ << 16) v($X) v($X) and not v(YZ ) Registre speciale utilizate NU NU NU NU NU NU NU NU NU NU NU NU NU NU NU NU

Tabelul 4.7. Instruciuni de salt / ramificare Cod #F0 #9E #40 #42 #44 #46 #48 #4A #4C #4E #50 #52 #54 #56 #58 #5A #5C #5E 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 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 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) @ + 4; NU @A NU Dac s($X) < 0 atunci @ AR NU Dac s($X) = 0 atunci @ AR NU Dac s($X) > 0 atunci @ AR NU Dac s($X) mod 2 = 1 atunci @ AR NU Dac s($X) 0 atunci @ AR NU Dac s($X) 0 atunci @ 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 NU Dac s($X) mod 2 = 1 atunci @ AR NU Dac s($X) 0 atunci @ AR NU Dac s($X) 0 atunci @ AR NU Dac s($X) 0 atunci @ AR NU Dac s($X) mod 2 = 0 atunci @ AR

45

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 pin 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 salturilor. 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." 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 Sintaxa FADD $X, $Y, $Z FSUB $X, $Y, $Z FMUL $X, $Y, $Z FDIV $X, $Y, $Z FREM $X, $Y, $Z FCMP $X, $Y, $Z FCMPE $X, $Y, $Z FEQL $X, $Y, $Z FEQLE $X, $Y, $Z FUN $X, $Y, $Z FUNE $X, $Y, $Z FSQRT $X, Y, $Z FINT $X, Y, $Z FIX $X, Y, $Z FIXU $X, Y, $Z FLOT [I]$X, Y, $Z FLOTU[I] $X, Y, $Z SFLOT[I] $X, Y, $Z SFLOTU[I] $X, Y, $Z LDSF[I] $X, $Y, $Z STSF[I] $X, $Y, $Z Descriere Registre speciale utilizate NU f($X) f($Y) + f($Z) NU f($X) f($Y) - f($Z) NU f($X) f($Y) * f($Z) NU f($X) f($Y) / f($Z) f($X) f($Y) rem f($Z); y rem z = y-nz, n NU fiind cel mai apropiat ntreg de y/z. s($X) [f($Y)>f($Z)] [f($Y)<f($Z)]; comparare NU n virgul mobil rE s($X)[f($Y)>f($Z)(f(rE))][f($Y)<f($Z)(f(rE))]; comparare n virgul mobil n raport cu epsilon NU s($X) [f($Y) = f($Z)] s($X) [f($Y) = f($Z)(f(rE))]; egalitate n rE virgul mobil n raport cu epsilon s($X) [f($Y) || f($Z)]; neordonare n NU virgul mobil; este adevrat cnd unul dintre operanzi este NaN. s($X) [f($Y) || f($Z)(f(rE))]; neordonare rE n virgul mobil n raport cu epsilon NU f($X) f($Z)1/2 NU f($X) int(f($Z)) NU s($X) int(f($Z)); NU u($X) (int(f($Z))) mod 264; NU f($X) s($Z); NU f($X) u($Z); NU f($X) f(T) s($Z); T este un tetrabyte extra NU f($X) f(T) u($Z); f($X) f(M4[A]); ncarc virgul mobil scurt NU f(M4[A]) f($X); memoreaz virgul mobil scurt NU

46

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 Registre speciale utilizate rJ, rO, rS push(X); rJ @ +4; @ AR rJ, rO, rS push(X); rJ @ +4; @ A rJ, rO, rS pop(X); @ rJ + 4*YZ u($X) context (salvarea registrelor Sunt curente n stiva de registre) Contextul este salvate; rL compus din registrele locale, registrele 0. globale i registrele speciale. $X este un registru global. Sunt citite context u($Z); refacere contex Conform algoritmului de tratare a devierilor rB, rW, rX, rY, rZ, rJ Conform algoritmului ntreruperilor de tratare

#FA #FF #00

UNSAVE $Z TRIP X, Y, Z TRIP X, YZ TRIP XYZ TRAP X, Y, Z TRAP X, YZ TRAP XYZ RESUME 0 GET $X, Z PUT[I] X, $Z GETA[B] $X, AR LDUNC[I] $X, $Y, $Z STUNC[I] $X, $Y, $Z PRELD[I] X, $Y, $Z PREST[I] X, $Y, $Z PREGO[I] X, $Y, $Z SYNCID[I] X, $Y, $Z SYNCD[I] X, $Y, $Z SYNC XYZ CSWAP[I] $X, $Y, $Z

#F9 #FE #F6 #F4 #96 #B6 #9A #BA #9C #BC #B8 #FC #94

#98 #FD

LDVTS[I] $X, $Y, $Z SWYM X, Y, Z SWYM X, YZ SWYM XYZ

a rBB, rWW, rXX, rYY, rZZ, rT, rK, rQ Reluare dup ntrerupere rW, rX u($X) u(g[Z]); 0 Z < 32 (codul registrului g[Z] special); g[Z] este registrul avnd codul Z u(g[X]) u($Z); depunere n registrul g[X] special g[X] NU u($X) AR; ncarc adres relativ s($X) s(M8[A]); ncarc octabyte fr NU depunere n memoria cache s(M8[A]) s($X); stocare octabyte fr NU depunere n memoria cache Probabil, octeii de la M[A] la M[A+X] vor NU fi ncrcai sau stocai n viitorul apropiat Sigur, octeii de la M[A] la M[A+X] vor fi NU ncrcai (scrii) nainte de citirea urmtoare Probabil, octeii de la M[A] la M[A+X] vor NU fi utilizai ca instruciuni n viitorul apropiat Octeii de la M[A] la M[A+X] trebuie regsii NU nainte de a fi interpretai ca instruciuni Octeii de la M[A] la M[A+X] trebuie s fie NU actualizai n RAM nainte de a fi citii de alte calculatoare sau dispozitive periferice Sincronizare n vederea cooperrii fiabile n NU procesarea paralel Dac u(M8[A]) = u(rP) atunci u(M8[A]) rP u($X) i u($X) 1, altfel u(M8[A]) u(rP) i u($X) 0; operaie indivizibil ncarc starea translatrii virtuale (se aplic rV doar sistemului de operare) Nu efectueaz nici o operaie (NOP); octeii NU X, Y, Z sunt ignorai

47

n categoria instruciunilor avansate includem instruciunile pentru apel de subrutine (proceduri / funcii), instruciunile pentru tratarea ntreruperilor (traps) i devierilor (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 (zeimale 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 (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 */. Procesul de asamlare 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.

48

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>

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.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.
argv IS $1 LOC #100 Main LDOU $255,argv, 0 TRAP 0, Fputs, StdOut GETA $255, String TRAP 0, Fputs, StdOut TRAP 0, Halt,0 String BYTE " BRAVO", #a, 0

49

Exemplul 4.2. Un experiment asupra irului Fibonacci poate fi realizat folosind programul:
sp fp n fn Fib GREG GREG GREG IS n LOC GREG CMP PBN STO SET INCL STO STO SUB GO STO LDO SUB GO LDO ADDU LDO SET LDO GO SETH SET GO

1H Main

#100 @ $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

Termenii irului Fibonacci sunt: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 etc. Termenul de rang n este suma termenilor de rang n-1 i n-2. f0 = 0; f1 = 1; fn = fn-1 + fn-2.

Bibliografie
1. G. Albeanu, Sisteme de operare, Editura Petrion, Bucureti, 1996, ISBN 973-9116-04-3. 2. G. Albeanu, Algoritmi i limbaje de programare, Editura FRM, Bucureti, 2000 (capitolul 2), ISBN 973-582-286-5 3. G. Albeanu, Programarea i utilizarea calculatoarelor, Editura Universitii din Oradea, Oradea, 2003 (capitolul 1), ISBN 973-613-374-5. 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, ISBN 1-55860-724-2. 7. D. Knuth, Arta programrii calculatoarelor, Vol. I, Editura Teora, 1999, ISBN 973-601910-1. 8. D. Knuth, Arta programrii calculatoarelor: MMIX un calculator RISC pentru noul mileniu, Editura Teora, 2005, ISBN 1-59496-099-2. Se recomand versiunea n limba englez: D. E. Knuth: The art of Computer programming. Fascicle 1: MMIX, AddisonWesley, Zeroth printing (revision 15), 2004. 9. D. Knuth, MMIXware. Lecture Notes in Computer Science, Vol. 1750, Springer Verlag, 1999. 10. A.S.Tanenbaum, Organizarea structural a calculatoarelor, Computer Press Agora, 1999, ISBN 973-86699-0-1.

50