Sunteți pe pagina 1din 20

ARHITECTURA CLASIC{ VON NEUMANN 1.

Memorii O memorie este un dispozitiv capabil s[ @nregistreze, s[ conserve ]i s[ restituie informa\ii (codificate @n binar @n sistemul de calcul). Ierarhia memoriilor Elementele diverse al memoriei unui sistem de calcul sunt ordonate @n func\ie de urm[toarele criterii: timp de acces, capacitate ]i cost pe bit. Figura urm[toare prezint[ tipurile de memorie ]i arat[ ierarhia existent[ @ntre diferitele nivele de memorie.

Registre CPU memoria cache

memoria central[

memoria de sprijin

memorii auxiliare

Se poate constata faptul c[ pe m[sur[ ce ne @ndep[rt[m de CPU, timpul de acces ]i capacitatea memoriei cresc, @n timp ce costul pe bit se diminueaz[. a) registrele sunt elementele de memorie situate @n unitatea central[ de prelucrare (CPU) ]i sunt caracterizate printr-o mare vitez[, servind @n principal stoc[rii operanzilor ]i a rezultatelor

intermediare. Vom vorbi mai pe larg despre aceste memorii @n subcapitolul urm[tor. b) memoria cache sau antememoria este o memorie rapid[, de capacitate redus[ (@n raport cu memoria central[) utilizat[ ca memorie intermediar[ @ntre CPU ]i memoria central[. Aceast[ memorie permite minimizarea num[rului de accese la memoria central[, realiz`nd astfel c`]tig considerabil de timp. c) memoria central[ este organul principal de aranjare a informa\iilor utilizate de c[tre CPU. Pentru execu\ia unui program el trebuie s[ fie @nc[rcat (instruc\iuni + date) @n memoria central[. Aceasta este o memorie pe semiconductoare al c[rei timp de acces este mult mai mare dec`t cel al registrelor sau memoriei cache. d) memoria de sprijin serve]te drept memorie intermediar[ @ntre memoria central[ ]i memoriile auxiliare. Memoria de sprijin este prezent[ @n sistemele de calcul cele mai evoluate ]i permite cre]terea vitezei de schimb a informa\iilor @ntre cele dou[ nivele. e) memoriile auxiliare numite de asemenea ]i memorii de mas[ (@ntre care un loc important @l ocup[ memoriile de arhivare), sunt memorii periferice de mare capacitate ]i cost relativ sc[zut. Ele servesc ca dispozitive de stocare permanent[ ]i utilizeaz[ pentru aceasta suporturi magnetice (discuri, cartu]e, benzi) ]i suporturi optice (discuri optice) spre deosebire de nivelele mai apropiate de CPU care fac apel la tehnologia semiconductoarelor. Organizarea informa\iilor Informa\iile pe care le prelucreaz[ un sistem de calcul trebuie s[ se adapteze unui anumit format, ale c[rui caracteristici generale sunt urm[toarele: a) Bitul, constituie unitatea de baz[ a informa\iei. #ntr-o memorie, cel mai mic element de stocare este numit adesea punct de memorie: el memoreaz[ un bit de informa\ie. b) Octetul, mai cunoscut sub termenul englez de byte, corespunde unei succesiuni de 8 bi\i. c) Caracterul este o grupare de 6, 7, 8, ... bi\i, permi\`nd codificarea unui caracter alfanumeric sau a unui caracter special (!, #, $, %, ^, &, *, , [, ], ...) potrivit conven\iilor de codificare: ASCII, EBCDIC etc.

d) Cuv`ntul [word] este o grupare de bi\i constituind unitatea de informa\ie adresabil[ @n memoria central[ ]i care variaz[ de la un sistem de calcul la altul. Valorile 32 ]i 64 au tendin\a de a deveni valori generale pentru lungimea unui cuv`nt. e) #nregistrarea [record] semnific[ un bloc de date ]i constituie unitatea de informa\ie stocat[ @n memoria auxiliar[ a sistemului de calcul (disc, band[). f) Fi]ierul [file] este o mul\ime finit[ de @nregistr[ri. Caracterisicile memoriilor a) Adresa este valoarea numeric[ desemn`nd un element fizic de memorie (de exemplu adresa unui cuv`nt @n memoria central[). b) Capacitatea unei memorii corespunde num[rului de instruc\iuni pe care le poate con\ine ]i se poate exprima @n func\ie de num[rul de bi\i, octe\i sau cuvinte. c) Timpul de acces este timpul @n care se realizeaz[ o opera\ie de acces (citire sau scriere). d) Ciclul de memorie este timpul minimal @ntre dou[ accese succesive la memorie. Acesta este mai lung dec`t timpul de acces deoarece cuprinde ]i anumite opera\ii de @ntre\inere, sincronizare, stabilizare de semnale @n circuite etc. e) Debitul este num[rul de informa\ii citite sau scrise pe secund[. f) Volatilitatea caracterizeaz[ permanen\a informa\iilor @ntr-o memorie. O memorie volatil[ @]i pierde con\inutul la producerea unei @ntreruperi de curent, deci are nevoie de o alimentare constant[ cu energie electric[ pentru a-]i conserva informa\iile. Memoria central[ pe semiconductoare este volatil[ spre deosebire de memoriile magnetice auxiliare. Tipuri de acces la memorie a) Accesul secven\ial: este accesul cel mai lent deoarece, pentru a accesa o informa\ie particular[ trebuie parcurse toate informa\iile care o preced (de exemplu, benzile magnetice); b) Accesul direct: informa\iile posed[ o adres[ proprie care permite accesarea lor @n mod direct (de exemplu, memoria central[, registrele);

c)

Acces semi-secven\ial: este o combina\ie @ntre accesul direct ]i cel secven\ial (de exemplu, pentru un disc magnetic, accesul la cilindru este direct ]i accesul la un sector este secven\ial); d) Accesul prin con\inut (memorie asociativ[): informa\iile sunt identificate printr-o cheie ]i c[utarea se efectueaz[ simultan pentru toate pozi\iile memoriei (de exemplu, memoria cache).

2 Unitatea central[ de prelucrare Unitatea central[ de prelucrare sau procesorul central [Central Processing Unit = CPU], sau mai simplu procesor [processor], are rolul de a interpreta ]i executa instruc\iunile programului pe un sistem de calcul. CPU este un adev[rat creier al sistemului, direct asociat cu memoria unde sunt stocate instruc\iunile ]i datele de prelucrat ]i @n acest context, ansamblul CPU + memoria central[ este adesea specificat prin denumirea de unitate central[ a sistemului de calcul. Unitatea central[ de prelucrare se compune din dou[ unit[\i func\ionale separate: unitatea aritmetic[ ]i logic[ (UAL) ]i unitatea de comand[ ]i de control [control unit]. Unitatea aritmetic[ ]i logic[ este acea component[ a unit[\ii centrale de prelucrare @n care sunt executate opera\iile aritmetice ]i logice. Unitatea de comand[ controleaz[ func\ionarea tuturor celorlalte unit[\i (UAL, memorie, intr[ri/ie]iri), furniz`ndu-le semnale de ritmicitate a func\ion[rii ]i de comand[. Func\ionarea poate fi descris[ @n modul urm[tor: unitatea de comand[ caut[ @n memoria central[ o instruc\iune transmi\`nd @n acest sens spre memorie o adres[ ]i o comand[. Instruc\iunea, @nregistrat[ sub form[ binar[ la adresa dat[, este transferat[ c[tre unitatea de comand[, unde decodificarea sa permite determinarea opera\iei cerute. Aceast[ informa\ie este utilizat[ pentru a genera semnalele corespunz[toare c[tre UAL pentru declan]area execu\iei instruc\iunii. Datele de prelucrat vor fi de asemenea c[utate @n memorie de c[tre unitatea de control ]i transferate direct unit[\ii de calcul. Diferitele unit[\i ale sistemului de calcul sunt interconectate prin sisteme de cablare care transport[ semnale electrice. Pentru a se evita legarea unei unit[\i cu toate celelalte, se utilizeaz[ linii exploatate @n comun de c[tre toate unit[\ile sistemului de calcul. Se nume]te bus, ansamblul de linii capabile de a transmite semnale corespunz[toare celor trei tipuri de informa\ii: adrese, date ]i comenzi.

Exist[ la ora actual[ arhitecturi bazate pe bus unic, pe care sunt conectate toate organele sistemului de calcul. O asemenea structur[, specific[ microcalculatoarelor, este ilustrat[ @n figura urm[toare:

MEMORIE BUS Adrese Date INTR{RI

CPU

Comenzi IE}IRI

#n general, interconexiunile sunt asigurate prin bus-uri specializate: busmemorie, bus de intrare/ie]ire etc. Bus-ul poate fi utilizat de c[tre toate unit[\ile care-i sunt ata]ate dar nu mai mult dec`t dou[ simultan, ceea ce ridic[ probleme de a]teptare ]i arbitraj al cererilor de utilizare. Unitatea de comand[ Unitatea de comand[ este mul\imea tuturor dispozitivelor de coordonare a func\ion[rii sistemului de calcul @n vederea execut[rii secven\ei de opera\ii specificate prin instruc\iunile programului. Principalele dispozitive ale unit[\ii de comand[ care vizeaz[ c[utarea @n memorie ]i decodificarea unei instruc\iuni (ciclul de c[utare), sunt: a) contorul ordinal (CO), este un registru care con\ine adresa din memorie unde este stocat[ instruc\iunea de c[utat; b) registrul instruc\iune (RI), prime]te instruc\iunea de executat; c) decodificatorul codului opera\iei, care determin[ ce opera\ie trebuie s[ fie efectuat[, dintre toate cele posibile; d) secven\atorul, care genereaz[ semnale de comand[; e) ceasul intern, sau orologiul, care emite impulsuri electrice uniforme, sincroniz`nd astfel toate ac\iunile unit[\ii centrale. Circula\ia informa\iilor @n timpul unui ciclu de c[utare [fetch cycle]: Etapele ciclului de c[utare (corespunz`nd numerelor @ncercuite @n figura de mai sus) pot fi rezumate astfel:

1) transferul adresei noii instruc\iuni din CO c[tre RA, registrul de adres[ al memoriei [memory adress register]; 2) un semnal de citire, generat de c[tre unitatea de comand[, provoac[ transferul instruc\iunii c[utate @n RC (registrul cuv`nt), care func\ioneaz[ ca un registru tampon pentru toate informa\iile citite (sau scrise @n) din memorie; 3) transferul instruc\iunii @n RI (instruc\iune = cod opera\ie + adres[ operand); 4) @n timp ce adresa operandului este trimis[ c[tre RA, codul opera\iei este transmis decodificatorului care determin[ tipul opera\iei solicitate ]i-l transmite secven\atorului printr-un semnal pe linia de ie]ire corespunz[toare; 5) CO este incrementat @n vederea ciclului urm[tor de c[utare.

2 RA Memorie RC 3 1 CO RI 4 Decodificator 5 4 Secven\ator

Orologiu

Ciclul de c[utare este imediat urmat de ciclul de execu\ie, @n timpul c[ruia opera\ia specificat[ prin instruc\iune este efectuat[ de c[tre unitatea de calcul. Un ciclu de execu\ie va cuprinde @n mod normal urm[toarele etape: 1) secven\atorul @ncepe s[ trimit[ semnale de comand[ c[tre memorie pentru citirea operandului la adresa deja stocat[ @n RA ]i realizeaz[ transferul c[tre RC; 2) transferul con\inutului din RC c[tre UAL, mai precis c[tre registrul acumulator, sau oricare alt registru destinat opera\iei specificate. #n anumite cazuri, de exemplu, memorarea unui rezultat, con\inutul registrului acumulator se va transfera c[tre RC, iar dac[ este vorba despre o instruc\iune de salt, c`mpul de adres[ al instruc\iunii va trebui transferat @n CO; 3) opera\ia este efectuat[ sub controlul secven\atorului. Atunci c`nd ciclul de execu\ie este @ncheiat, unitatea de comand[ trece imediat la ciclul de c[utare urm[tor, lu`nd @n considerare noua instruc\iune indicat[ prin adresa con\inut[ @n CO. Secven\a exact[ a ac\iunilor coordonate de c[tre secven\ator va depinde de tipul opera\iei; @n general, @n timpul unui ciclu de execu\ie, informa\ia va circula potrivit schemei urm[toare: RA Memori RC 2

Unitate de comand[

UAL 1 Acumulator 3

Secven\ator

Nivele de programare Pentru a scrie un program, utilizatorul poate utiliza unul dintre limbajele de programare cunoscute: Fortran, Pascal, Ada, Asamblor etc. Sistemul de calcul nu poate @n\elege dec`t propriul s[u limbaj, limbajul ma]in[, cu mul\imea sa de instruc\iuni.

#n programare, se utilizeaz[ termenul limbaj pentru a indica o mul\ime de instruc\iuni ]i de reguli sintactice care permit scrierea codului surs[ al programului. Deoarece sistemul de calcul execut[ doar programe scrise @n cod ma]in[ sau cod obiect, apare necesitatea traducerii codului surs[ @n cod obiect, care se realizeaz[ automat cu ajutorul compilatoarelor ]i asambloarelor. Limbajele de programare se poate prezenta pe mai multe nivele, cele superioare fiind mai apropiate de limbajul utilizatorului, iar cele inferioare fiind mai bine adaptate caracteristicilor sistemului de calcul. Situa\ia actual[ este sintetizat[ @n figura urm[toare:

limbaje evoluate nivel asamblor instruc\iuni ma]in[ micro-instruc\iuni

nivelul comenzilor electronice

Structura instruc\iunilor la nivel ma]in[ Sistemele de calcul sunt capabile s[ efectueze un anumit num[r de opera\ii simple, de exemplu adunarea a dou[ numere, testarea semnului unei

valori numerice, copierea con\inutului unui registru @n alt registru, stocarea @n memorie a rezultatului unei opera\ii etc. O instruc\iune ma]in[ trebuie s[ furnizeze pentru CPU toate informa\iile pentru declan]area unei opera\ii elementare. Ea trebuie s[ con\in[ un cod al opera\iei care este esen\ial pentru specificarea tipului ac\iunii dorite. #n plus, instruc\iunea mai trebuie s[ con\in[ una sau mai multe adrese, de exemplu, adresa operandului (sau operanzilor), adresa unde se depune rezultatul, adresa de c[utare a instruc\iunii urm[toare. De aceea, o instruc\iune @n formatul unei instruc\iuni ma]in[ va comporta un c`mp de cod opera\ie ]i p`n[ la patru c`mpuri de adres[. Un sistem de calcul func\ioneaz[ pe n adrese, n = 0, 1, 2, 3, 4, dac[ majoritatea instruc\iunilor sale con\in n adrese @n c`mpul de adrese. Setul ]i structura instruc\iunilor ma]in[ caracterizeaz[ arhitectura fundamental[ a sistemelor de calcul. #n acest context, dac[ sistemele primei genera\ii utilizau frecvent formate pe mai multe adrese ale instruc\iunilor, ast[zi, datorit[ cre]terii considerabile a capacit[\ii de memorare, se prefer[ instruc\iuni pe o adres[. Trecerea la instruc\iunea urm[toare de executat se realizeaz[ prin utilizarea unui contor ordinal care se incrementeaz[ cu 1 la fiecare opera\ie ]i accept[ execu\ia secven\ial[ a instruc\iunilor. Pentru a se evita re\inerea adresei rezultatului @ntr-o loca\ie separat[, acesta se poate memora @n locul unui operand, utiliz`nd un registru special, acumulatorul: al doilea operand se g[se]te deja @n registrul acumulator (@nc[rcat prin instruc\iunea precedent[) ]i rezultatul opera\iei va fi stocat de asemenea @n registrul acumulator. Exemplul urm[tor, de programare a unei ma]ini pe o adres[, prezint[ secven\a instruc\iunilor ma]in[ / asamblor pentru evaluarea urm[toarei expresii aritmetice: A = B (C + D E F / G). 1. 2. 3. 4. 5. 6. 7. 8. 9. LOAD DIV STA LOAD MPY ADD SUB MPY STA F G T1 D E C T1 B A (LOAD = @nc[rc[ @n registrul acumulator) (DIV = @mparte con\inutul acumulatorului) (STA = stocheaz[ con\inutul acumulatorului) (MPY= multiplic[ con\inutul acumulatorului) (ADD = adaug[ la con\inutul acumulatorului) (SUB = scade din con\inutul acumulatorului)

Pentru a ilustra utilizarea unei ma]ini pe zero adrese va trebui utilizat[ o structur[ de date special[ numit[ stiv[ [stack] (sau memorie LIFO = Last In, First Out), operanzii g[sindu-se @n cele dou[ pozi\ii superioare ]i rezultatul fiind plasat @n v`rful aceleia]i stive. Se poate descrie astfel secven\a instruc\iunilor corespunz[toare evalu[rii expresiei din exemplul anterior: A = B (C + D E - F / G). 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. LOAD LOAD LOAD LOAD MPY ADD LOAD LOAD DIV SUB MPY STA B C D E Stiva = {B} Stiva = {B; C} Stiva = {B; C; D} Stiva = {B; C; D; E} Stiva = {B; C; D E} Stiva = {B; C + D E} Stiva = {B; C + D E; F } Stiva = {B; C + D E; F; G } Stiva = {B; C + D E; F / G } Stiva = {B; C + D E F / G } Stiva = {B (C + D E F / G) } Stiva = { }

F G

Setul instruc\iunilor Fiecare tip de sistem de calcul posed[ un set de instruc\iuni de baz[, care variaz[ de obicei @ntre 50 ]i 250. La ora actual[ exist[ dou[ mari tendin\e @n ceea ce prive]te setul de instruc\iuni de baz[: a) Arhitecturile RISC [Reduced Instruction Set Computer] preconizeaz[ un num[r mic de instruc\iuni elementare @ntr -un format fix, u]or de realizat din punct de vedere material (hardware) ]i cu o execu\ie rapid[, ceea ce implic[ un secven\ator cablat ]i un compilator capabil s[ exploateze bine caracteristicile sistemului (de exemplu, utilizarea pe o scar[ larg[ a registrelor ]i limitarea acceselor la memoria central[); b) Arhitecturile CISC [Complex Instruction Set Computer] sunt bazate pe un set bogat de instruc\iuni, de talie variabil[, oferind astfel instruc\iuni compuse, ca de exemplu, calculul r[d[cinii p[trate sau @nmul\ire @n virgul[ mobil[ dubl[ precizie. #n general aceste sisteme sunt prev[zute cu secven\ator multiprogramat.

10

Instruc\iunile care pot face parte din setul de instruc\iuni de baz[ ale oric[rui sistem de calcul pot fi clasate @n ]ase grupe, astfel: a) transfer de date (Load, Move, Store, transfer de date @ntre dou[ registre sau @ntre memoria principal[ ]i un registru); b) opera\ii aritmetice (cele patru opera\ii @n virgul[ fix[ sau mobil[, @n simpl[ sau multipl[ precizie); c) opera\ii logice (AND, OR, NOT, XOR etc.); d) control de secven\[ (salturi condi\ionate ]i necondi\ionate, apel de subprograme etc.); e) intr[ri/ie]iri (Read, Write, Print etc.); f) opera\ii diverse ( decal[ri, conversii de format, increment[ri de registre etc.). Registrele CPU Num[rul ]i tipul registrelor pe care le posed[ CPU constituie o caracteristic[ determinant[ a arhitecturii sale ]i au o influen\[ important[ asupra program[rii. De]i structura registrelor CPU difer[ de la un constructor la altul, totu]i, func\iunile de baz[ realizate prin diverse registre CPU sunt @n general acelea]i. #n continuare vom descrie principalele registre CPU: a) Contorul ordinal (CO) [PC=Program Counter] con\ine adresa de memorie a urm[toarei instruc\iuni de executat. El este incrementat automat de c[tre sistem dup[ fiecare utilizare (programatorul nu are acces direct la CO). Programul este executat @n secven\[, cu excep\ia situa\iilor @n care con\ine o instruc\iune de modificare a secven\ei (de exemplu, o instruc\iune de salt sau de ramificare), caz @n care noua adres[ va @nlocui con\inutul contorului ordinal. b) Acumulatorul (Rac) este un registru foarte important al UAL, care, @n majoritatea opera\iilor aritmetice ]i logice con\ine unul dintre operanzi @nainte de execu\ie ]i rezultatul dup[ execu\ie. Registrul acumulator poate fi de asemenea utilizat ca un registru tampon @n opera\iile de intrare/ie]ire. #n general Rac are aceea]i talie ca ]i un cuv`nt-memorie, dar cele mai multe sisteme de calcul admit extinderea registrului acumulator (registrul Q) pentru a con\ine rezultatul unei @nmul\iri, c`tul ]i restul unei @mp[r\iri, sau poate con\ine bi\ii cei mai pu\in semnificativi @n cadrul unei opera\ii @n virgul[ mobil[ dubl[ precizie; c) Registrele generale [general purpose register] permit salvarea informa\iilor utilizate @n mod frecvent de c[tre program sau a

11

rezultatelor intermediare, ceea ce conduce la accelerarea execu\iei programului prin reducerea num[rului de accese la memoria central[; d) Registrele de index sau de indice (XR) [index register] se pot utiliza ca registre generale pentru salv[ri ]i contoriz[ri, posed`nd @n plus o func\ie special[, de mare utilitate @n manipularea tablourilor de date. Registrele de index pot fi utilizate pentru manipularea adreselor corespunz[tor unei forme particulare de adresare numit[ adresare indexat[; e) Registrele de baz[ (Rb) [base registers] sunt utilizate ca registre de index pentru calculul adreselor efective (adresare bazat[) ]i @n acest sens ele sunt concepute s[ con\in[ o adres[ de referin\[ care trebuie ad[ugat[ la con\inutul c`mpului de adres[ al instruc\iunii pentru a ob\ine adresa efectiv[; f) Registrul de stare [PSW = Program Status Word], numit de asemenea registru condi\ie, con\ine anumi\i bi\i care indic[ starea unei condi\ii particulare @n CPU. De exemplu, bitul indicator Z indic[ dac[ rezultatul opera\iei efectuate este egal cu zero, bitul indicator C indic[ o dep[]ire de capacitate @n Rac etc. Ace]ti bi\i pot fi testa\i prin program pentru determinarea secven\ei de instruc\iuni de urmat; g) Registrul pointer de stiv[ [SP = Stack Pointer] este utilizat pentru a simula o stiv[ @n memoria central[. Registrul SP func\ioneaz[ ca un registru de adres[ de memorie (RA) ]i con\ine @n orice moment adresa corespunz[toare v`rfului stivei, deci, c`nd se @ncarc[ un cuv`nt @n stiv[ adresa sa se @nscrie @n SP, iar citirea din stiv[ se face pornind de la adresa indicat[ de pointerul SP; h) Registrele specializate sunt specifice anumitor sisteme de calcul ]i sunt destinate opera\iilor particulare, de exemplu, registre de decalare [shift registers], registre pentru opera\ii aritmetice @n virgul[ mobil[ [floating point registers] etc. Adresarea operanzilor C`mpul de adres[ al unei instruc\iuni nu con\ine de fiecare dat[ adresa efectiv[ a unui operand ]i de aceea, pentru facilitarea activit[\ii de programare sunt puse la dispozi\ie mai multe metode de adresare a operanzilor, cunoscute sub numele de moduri de adresare, specificate @n formatul instruc\iunilor printr-un bit care indic[ modul folosit.

12

Printre modurile de adresare, cele mai importante sunt: a) adresare direct[: c`mpul de adres[ al instruc\iunii con\ine adresa efectiv[ a operandului; b) adresare indirect[: c`mpul de adres[ al instruc\iunii con\ine adresa la care g[se]te adresa efectiv[ a operandului (pot exista mai multe nivele de indirectare); c) adresare imediat[: c`mpul de adres[ al instruc\iunii con\ine chiar operandul; d) adresare implicit[: codul opera\iei indic[ locul unde se g[se]te operandul (de exemplu, ma]ini pe zero adrese); e) adresare indexat[: adresa efectiv[ = con\inutul c`mpului de adres[ al instruc\iunii + con\inutul registrului de index; f) adresare bazat[: adresa efectiv[ = con\inutul c`mpului de adres[ al instruc\iunii + con\inutul registrului de baz[; g) adresare relativ[: asem[n[toare adres[rii bazate, dar utilizeaz[ con\inutul registrului CO ca adres[ de baz[. Exemple de adresare Pentru simplificarea scrierii, @n exemplele urm[toare vom utiliza simboluri ca: a, b, c, alfa etc. pentru a indica anumite date ]i prescurt[ri precum: IM (adresare imediat[), I (adresare indirect[), XR 1 (registrul de index nr. 1), B 1 (registrul de baz[ nr. 1). Ne propunem s[ ar[t[m care este efectul pe care-l au asupra con\inutului registrului acumulator diferitele moduri de adresare utilizate. Con\inutul memoriei ]i al c`torva registre este prezentat @n tabela urm[toare: Starea registrelor ]i a memoriei adresa con\inut adresa con\inut

100 a 300 alfa 101 b 301 beta 102 c 302 gama 103 d XR1 1 200 300 B1 100 201 302 B2 200 #n tabela urm[toare sunt prezentate exemple de opera\ii care utilizeaz[ registrul acumulator, modurile de adresare fiind specificate dup[ c`mpul de adres[ al instruc\iunii.

13

Efectul diferitelor moduri de adresare este prezentat @n continuare: Instruc\iune Rac LOAD 100 LOAD 100, IMM LOAD 200, I LOAD 200, XR1 LOAD 200, XR1, I LOAD 200, I, XR1 LOAD LOAD 3, B1 1, B2 a 100 alfa 302 gama d 302 Con\inutul

beta

Not[m cu ADR num[rul de bi\i din c`mpul de adres[ al unei instruc\iuni ]i fie 2n capacitarea memoriei centrale. Pot exista trei situa\ii: a) ADR = n: memoria fizic[ este accesibil[ @n totalitate ]i orice metod[ de adresare poate fi utilizat[; b) ADR < n: ADR nu este suficient pentru a adresa toat[ memoria ]i @n acest caz se poate utiliza metoda de adresare bazat[, dac[ registrul de baz[ este suficient de mare (n bi\i). #n acest sens, se poate diviza memoria @n blocuri de o asemenea m[rime @nc`t ADR s[ poat[ adresa complet un bloc. C`mpul de adres[ al instruc\iunii va con\ine deplasamentul [offset] @n interiorul blocului, iar adresa de @nceput a blocului va fi con\inut[ @n registrul de baz[. Adresa efectiv[ se va calcula prin @nsumarea con\inutului registrului de baz[ cu con\inutul c`mpului de adres[ al instruc\iunii. c) ADR > n: ADR poate adresa pozi\ii de memorie care nu exist[ @n memoria fizic[, ceea ce ofer[ posibilitatea extinderii memoriei principale spre memoriile auxiliare, de exemplu, discuri magnetice (no\iunea de memorie virtual[). Unitatea aritmetic[ ]i logic[ (UAL) Unitatea aritmetic[ ]i logic[, specific[ sistemelor de calcul moderne, este capabil[ s[ realizeze o mare varietate de opera\ii. Anumite opera\ii nu utilizeaz[ dec`t un singur registru ]i un singur operand, de exemplu, complementarea logic[, decalarea, incrementarea etc.,

14

pe c`nd alte opera\ii folosesc doi operanzi, de exemplu, adunarea, sc[derea, opera\iile logice AND, OR, XOR etc. Sistemele de calcul specializate pe aplica\ii cu caracter tehnico-]tiin\ific ofer[ o @ntreag[ gam[ de opera\ii @n virgul[ mobil[ @n simpl[ ]i dubl[ precizie. Microcalculatoarele posed[ un num[r mai restr`ns de instruc\iuni specifice opera\iilor cele mai simple, l[s`nd @n seama program[rii opera\iile mai complexe, ca de exemplu, @nmul\irea, @mp[r\irea, extragerea r[d[cinii p[trate, opera\iile @n virgul[ mobil[ etc. Orice prelucrare de date are loc @n cadrul UAL, unde se g[sesc toate circuitele capabile s[ efectueze opera\iile elementare care stau la baza oric[rui algoritm. UAL este total subordonat[ unit[\ii de comand[ care declan]eaz[, controleaz[ ]i sincronizeaz[ orice activitate a UAL. 2.6 Unit[\ile de intrare/ie]ire Func\iunea de baz[ a unui sistem de calcul este prelucrarea informa\iei. Am v[zut cum se realizeaz[ aceast[ func\iune la nivelul memoriei centrale ]i a unit[\ii centrale de prelucrare. Vom prezenta @n continuare modalit[\ile prin care sistemul de calcul achizi\ioneaz[ informa\ia furnizat[ de mediul s[u exterior ]i restituie rezultatele prelucr[rii acestei informa\ii. Comunicarea sistemului de calcul cu lumea exterioar[ este realizat[ prin intermediul unit[\ilor de intrare/ie]ire [input/output], sau [I/O]. #n ultimii ani, tehnica intr[rilor/ie]irilor a fost mult dezvoltat[, echipamentul intr[rilor/ie]irilor este ast[zi mai costisitor chiar ]i dec`t unitatea central[ ]i ocup[ mai mult spa\iu dec`t orice alt[ component[ a sistemului de calcul. Dac[ sistemele de calcul din prima genera\ie utilizau informa\ii preluate prin manipularea @ntreruptoarelor sau a benzii de h`rtie perforat[, @n continuare se vor utiliza tastaturi alfanumerice, cartele perforate, benzi ]i cartu]e magnetice, discuri ]i dischete magnetice, discuri optice, ecrane video, mouse-uri, creioane optice, cititoare optice de caractere sau de coduri specializate. Tehnica ie]irilor a fost de asemenea considerabil dezvoltat[. S-a trecut astfel de la l[mpile intermitente ale anilor 50, la ecranele color ]i imprimantele laser ale sistemelor contemporane.

15

Terminale interactive Un terminal interactiv este un echipament periferic permi\`nd utilizatorului o comunicare @n ambele sensuri cu sistemul de calcul. Unitatea de intrare este un dispozitiv interactiv precum tastatura [keyboard] sau mouse-ul, iar unitatea de ie]ire este un ecran de vizualizare [display] bazat de obicei pe tehnica tubului catodic [CRT]. Tastatura este dispozitivul interactiv prin excelen\[ pentru toate aspectele referitoare la tratarea unui text. Pentru o manipulare mai u]oar[ a obiectelor pe ecran se utilizeaz[ mouse-ul. Tastatura unui sistem de calcul este asem[n[toare cu cea a unei ma]ini de scris care realizeaz[ imprimarea pe o foaie de h`rtie a caracterelor @n urma ap[s[rii tastelor. Prin ac\ionarea unei taste este lansat un semnal electronic care este codificat @n mod specific [de exemplu @n cod ASCII], iar caracterul corespunz[tor tastei este afi]at pe ecranul sistemului de calcul. Ecrane alfanumerice Un ecran alfanumeric se limiteaz[ la afi]area caracterelor distribuite pe un anumit num[r de linii, fiecare linie fiind compus[ din mai multe sute de puncte. Fiecare caracter este format dintr-o configura\ie de puncte alese conform unei anumite grile, gener`nd astfel o matrice de puncte. Ecranul con\ine @n general o pagin[ de text organizat[ @n 24 de linii ]i 80 de coloane. Ecrane grafice Ecranele grafice permit at`t afi]area caracterelor c`t ]i afi]are de imagini sau desene. Prin apari\ia ]i dezvoltarea interfe\elor utilizatori - ecrane grafice bazate pe folosirea ferestrelor ]i pictogramelor, ecranele grafice au @nlocuit ecranele alfanumerice. Cele mai cunoscute ecrane grafice sunt: a) Ecrane cu baleiaj TV la care ecranul este divizat @n mici domenii elementare (pixeli) care formeaz[ un num[r de linii ]i de coloane. Evolu\ia ecranelor cu baleiaj a cunoscut urm[toarele etape: ecranele monocrome, care afi]eaz[ imagini binare (bitmap), unde fiecare element este reprezentat printr-un bit;

16

ecranele cu nivele de gri, care pot afi]a imagini pixmap, @n care fiecare element de imagine poate avea un anumit nivel de gri (8 bi\i pot reprezenta 256 nivele de gri); ecranele color, permit afi]area imaginilor @n culori, dar pentru aceasta sunt necesare memorii-imagine mai mari, deoarece pentru fiecare element de imagine trebuie indicate valorile celor trei culori de baz[ (bleu, verde ]i ro]u). b) Ecrane vectoriale, care realizeaz[ vizualizarea prin adresarea punctual[ a ecranului @n locul unui baleiaj sistematic. Se utilizeaz[ un fascicol ca stilou pentru trasare curbe conform unui parcurs definit printr-o secven\[ de comenzi stocate @ntr-o memorie local[. Ecranele grafice sunt adaptate aplica\iilor unde domin[ liniile, structurile filiforme, desenele prin trasaj (contur), f[r[ o eficien\[ deosebit[ @n reproducerea imaginilor pline (fotografii); c) Ecrane plate. Miniaturizarea produselor electronice a antrenat realizarea ]i dezvoltarea afi]ajelor pe ecrane plate, mai mici ]i mai pu\in fragile dec`t tuburile catodice. Tehnici, ca de exemplu, cristalele lichide sau ecrane cu plasm[ au devenit competitive. Imprimante Tehnicile de imprimare au evoluat considerabil, la ora actual[ exist[ o mare varietate de imprimante, acoperind un interval extins de pre\uri ]i de performan\e. Imprimarea poate fi alb-negru sau color, principalele procedee de imprimare color fiind jetul de cerneal[, transfer termic sau sublimare termic[. Imprimantele color utilizeaz[ trei culori primare galben, cyan, magenta, ca ]i negru, ceea ce permite crearea unei vaste palete de culori. Putem prezenta o variant[ de clasificare a imprimantelor: a) Imprimante cu impact, @nc[ utilizate @n administra\ie datorit[ posibilit[\ii de a realiza copii carbon: teleimprimatoarele: capul mecanismului de imprimare are forma unui cilindru pe care sunt gravate caracterele; @ntre cilindru ]i h`rtia de imprimat se g[se]te o band[ @mbibat[ de cerneal[; imprimantele Boole: caracterele sunt @nscrise pe o sfer[; imprimantele matriciale (prin puncte): caracterele sunt compuse pornind de la punctele unei grile (matrice) de 7 9 sau 9 13, potrivit calit[\ii de imprimare alese;

17

b)

Imprimantele f[r[ impact, unde calitatea de imprimare este dat[ de densitatea punctelor imprimate, care se exprim[ @n dpi [dots per inch]: imprimante termice: se aseam[n[ cu imprimantele matriciale dar @n locul lovirii unei benzi, se realizeaz[ @nc[lzirea unei suprafe\e de h`rtie special[, sensibil[ la c[ldur[. Func\ionarea este silen\ioas[, iar @n ceea ce prive]te imprimarea termic[ color, sunt cunoscute dou[ tehnologii: transfer termic ]i sublimare termic[, ambele utiliz`nd un rulou de celofan acoperit de o cerneal[ @n stare solid[, compus[ dintr-o succesiune de regiuni de culoare galben[, cyan, magenta; imprimante cu jet de cerneal[: sunt silen\ioase ]i au viteza de imprimare comparabil[ cu cea a imprimantelor termice, put`nd imprima orice simbol sau grafism. Principiul de func\ionare const[ @n crearea unui fascicol de pic[turi de cerneal[ dirijate asupra h`rtiei cu o mare precizie. Calitatea de imprimare este foarte bun[, rezolu\ia variaz[ @ntre 200 dpi ]i 1200 dpi; imprimante laser: utilizeaz[ metode ]i procedee electrostatice. Se formeaz[ o imagine electrostatic[ pe un tambur fotoconductor, tamburul trece prin fa\a sta\iei de dezvoltare unde cerneala @nc[rcat[ electric este atras[ numai de punctele precedent @nc[rcate. Imaginea este transferat[ pe h`rtie prin frecarea acesteia pe tambur. Aceast[ tehnic[ nu necesit[ h`rtie de calitate superioar[, rezolu\ia variaz[ @ntre 300 ]i 2000 dpi (standard 600 dpi).

Digitalizoare Digitalizoarele [scanners] sunt echipamente periferice care permit numerizarea unei imagini pornind de la o copie pe suport solid (h`rtie). Rezultatul digitaliz[rii este o imagine digital[ stocat[ @ntr-un fi]ier. Arhitecturi ]i proceduri de intrare/ie]ire Unitatea central[ comunic[ cu unit[\ile periferice prin intermediul subsistemului de intrare/ie]ire. Pentru a efectua o opera\ie de intrare/ie]ire, @n CPU se execut[ o instruc\iune de intrare/ie]ire. CPU preia ini\iativa realiz[rii oric[rei intr[ri sau ie]iri, ]i @n func\ie de natura leg[turii @ntre CPU ]i echipamentul

18

periferic implicat, se stabile]te o leg[tur[ direct[ CPU-periferic sau se atribuie sarcina schimbului unui dispozitiv subordonat dar capabil s[ lucreze de manier[ autonom[, ca de exemplu, canal de intrare/ie]ire sau acces direct la memorie [DMA: Direct Memory Access]. #n cazul leg[turii directe @ntre CPU ]i periferic apare problema diferen\ei enorme @ntre vitezele de lucru ale celor dou[ dispozitive, CPU r[m`ne blocat pe toat[ durata transferului de informa\ie. #n vederea utiliz[rii ra\ionale a CPU, se utilizeaz[ tehnica @ntreruperii programului. Metoda const[ @n introducerea unui semnal numit @ntrerupere [interrupt] trimis spre CPU de c[tre perifericul gata s[ efectueze un schimb elementar, de exemplu, transferul unui octet. Acest semnal provoac[ @ntreruperea programului @n curs de execu\ie, CPU se ocup[ de transfer prin activarea unui program special ( program de serviciu de @ntrerupere), iar dup[ efectuarea transferului, CPU reia programul @ntrerupt. Abordarea cea mai economic[ const[ @n suspendarea programului @n execu\ie timp de un ciclu-memorie, f[r[ un efect deosebit asupra timpului de execu\ie. Aceast[ metod[ se materializeaz[ prin utilizarea canalelor de intrare/ie]ire sau acces direct la memorie [DMA]. Sistemul de @ntreruperi #ntreruperea este un semnal electronic generat de c[tre o unitate func\ional[, de exemplu, canal sau controler de periferice, ]i acest semnal este transmis spre CPU pentru a provoca o ruptur[ de secven\[ @n vederea execu\iei unui program prioritar, care trateaz[ cauza @ntreruperii. Sistemul de @ntrerupere, @ncorporat @n CPU la nivelul secven\atorului, este dispozitivul care @nregistreaz[ semnalele de @ntrerupere trimise c[tre CPU, ale c[ror cauze pot fi: a) interne @n raport cu CPU, de exemplu: dep[]ire de capacitate (overflow), coduri de opera\ii inexistente, erori de adresare, utilizare abuziv[ a instruc\iunilor privilegiate, pan[ de curent. b) externe @n raport cu CPU, de exemplu: starea unei unit[\i periferice, sf`r]itul unui transfer de date. Tratarea unei @ntreruperi se realizeaz[ prin urm[toarele ac\iuni: a) oprirea execu\iei programului @n curs; b) salvarea st[rii sistemului; c) executarea programului de serviciu de @ntrerupere; d) restaurarea st[rii sistemului;

19

e) reluarea execu\iei programului @ntrerupt. Diversele cauze ale @ntreruperilor sunt afi]ate @ntr-un vector de indicatori asociat sistemului de @ntrerupere, iar programul care trateaz[ @ntreruperea trebuie s[ testeze ace]ti indicatori. #n sistemele evoluate, fiecare @ntrerupere are asociat[ o adres[ @n memoria central[, iar ruptura de secven\[ este realizat[ prin transferul @n contorul ordinal a adresei unde se g[se]te programul de serviciu. Majoritatea sistemelor de calcul moderne sunt prev[zute cu sisteme de @ntrerupere ierarhizate [priority interrupt systems], acestea fiind sistemele cu nivele de prioritate. Problemele care trebuiesc rezolvate sunt urm[toarele: sosirea mai multor semnale de @ntrerupere @n timpul execu\iei unei instruc\iuni; sosirea unui semnal de @ntrerupere @n timpul execu\iei unui program de prelucrare a unei @ntreruperi anterioare. #n aceste sisteme, fiecare nivel este asociat unui anumit num[r de @ntreruperi, fiec[rui nivel @i corespunde un anumit nivel de prioritate, iar orice program poate fi @ntrerupt @n vederea realiz[rii unei @ntreruperi mai prioritare. Sistemele de @ntrerupere cele mai elaborate sunt cele care fac parte din sistemele de calcul orientate c[tre aplica\ii de conducere a proceselor industriale [process control] sau de achizi\ionare de date [data acquisition]. Un sistem de @ntrerupere modern trebuie s[ permit[ programatorului urm[toarele ac\iuni: invalidarea/activarea [disable/enable] sistemului de @ntrerupere; mascarea/demascarea individual[ a @ntreruperilor; stabilirea unei ierarhii @n mul\imea cauzelor intreruperilor ]i definirea mai multor nivele de prioritate, de preferin\[ dinamic; asocierea unui program specific fiec[rei @ntreruperi, permi\`nd ac\iuni elementare realizabile @ntr-o singur[ instruc\iune; posibilitatea de utilizare a tuturor registrelor care caracterizeaz[ starea ma]inii ]i refacerea acestora la sf`r]itul programului de @ntrerupere.

20

S-ar putea să vă placă și