Sunteți pe pagina 1din 20

1

ARHITECTURAARHITECTURAARHITECTURAARHITECTURA SISTEMELORSISTEMELORSISTEMELORSISTEMELOR DEDEDEDE CALCULCALCULCALCULCALCUL

Analizăm în acest capitol problemele absolut fundamentale privind arhitectura şi principiile funcŃionale ale unui sistem de calcul (SC), pornind cu prezentarea plăcilor de bază, a procesoarelor, hard discurilor şi memoriei, din structura unui calculator personal (PC) şi continuând cu arhitectura detaliată a unui microprocesor, sau hardware-ul acestuia. Ulterior este abordată şi problema interconectării SC în structuri numite reŃele de calculatoare. Pentru acest capitol se pot folosi din bibliografie lucrările 3, 8, 9.

1.1.1.1. ComponenteleComponenteleComponenteleComponentele dededede bazăbazăbazăbază alealealeale unuiunuiunuiunui SCSCSCSC

1. Plăcile de bază

Placa de bază este principala placă de sistem pentru un calculator personal PC şi conŃine magistrala de date care transferă datele între diferitele componente de pe placa de bază şi procesorul calculatorului personal. Viteza cu care sunt transferate datele de-a lungul magistralei este măsurată în megahertzi (MHz). Deşi 66 MHz a fost standardul pentru calculatoarele personale care aveau un procesor Pentium, plăcile de bază pot opera azi la viteze de la 100 până la 300 MHz. O placă de bază este specifică tipului de procesor care rulează pe calculator. Astfel, o placă de bază a unui calculator IBM PC va fi concepută diferit de o placă de bază pentru calculatoarele Apple iMac, care folosesc un procesor Motorola.

Placa de bază mai oferă toate sloturile destinate procesorului şi memoriei calculatorului. Tot pe placa de bază se află zonele în care se conectează (cu ajutorul cablurilor panglică) hard discurile şi alte dispozitive hardware precum unităŃile CD-ROM, ca şi sloturile de extensie (PCI şi ISA) pentru alte dispozitive cum ar fi plăcile de sunet şi plăcile de interfaŃă pentru reŃea. Plăcile de bază sunt caracterizate şi prin tipul de conectare oferit pentru procesor. O placă de bază cu Socket 7 foloseşte un procesor ce este în esenŃă un pătrat mic ataşat la un Socket de pe placa de bază printr-o serie de pini de mici dimensiuni. Intel, AMD şi Cyrix produc procesoare pentru plăcile de bază cu socket 7. Plăcile de bază cu slot 1 şi slot 2 prezintă un „slot” mai mare pentru procesor, care este de regulă de formă rectangulară şi seamănă cu o cărămidă foarte mică. O serie de plăci de bază cu slot 1 disponibile pe piaŃă furnizează spaŃiu pentru procesoare duale. Acest lucru face ca plăcile de bază pe slot 1 să fie adecvate pentru staŃiile de lucru client performante sau pentru serverele de reŃea. Deşi rapiditatea cu care un calculator poate prelucra datele este în realitate determinată de procesorul calculatorului, deciderea asupra unei anumite plăci de bază ar trebui să fie, influenŃată de caracteristicile oferite de chipset-ul plăcii de bază. Chipsetul este acela care determină nivelul maxim al vitezei magistralei de date. Chipseturile oferă suportul DMA şi alte caracteristici, cum ar fi portul AGP (care asigură un răspuns video mai rapid). Aceste caracteristici vor influenŃa pozitiv performanŃele globale ale calculatorului.

2

2. Memoria

Pentru calculatoarele personale par a exista tot atâtea tipuri de memorie pe cât sunt diferite sortimentele de mere între ele. Memoria calculatorului sau memoria RAM reprezintă spaŃiul de stocare funcŃional. Ea este utilizată de procesor şi de alte dispozitive pentru stocarea temporară a informaŃiilor şi, este accesată de software atunci când noi lucrăm pe calculatoarele noastre. Nu puteŃi instala orice tip de memorie de RAM pe placa dumneavoastră de bază. Acest lucru este de fapt determinat de chipset-ul instalat de producător pe placa de bază. Trebuie să cunoaşteŃi astfel ce tip de memorie RAM este compatibil cu o anumită placă de bază. Memoria RAM se prezintă în două formate de bază: SIMM şi DIMM. O memorie SIMM (Single Inline Memory Module) este o placă de silicon epoxidată care conŃine o serie de cipuri de memorie. Memoriile SIMM se instalează într-un slot de pe placa de bază. Ele trebuie instalate pe placa de bază în perechi identice. Pentru a avea 64 MB de memorie pe o placă de bază, trebuie instalate două SIMM – uri de 32 MB. O memorie DIMM (Dual Inline Memory Module) conŃine cipuri de memorie, la fel ca memoria SIMM, dar oferă o densitate mai mare de cipuri de memorie, deci mai multă memorie RAM. Memoriile DIMM nu trebuie să fie instalate în perechi şi, de regulă, există 3 sloturi DIMM pe o placă de bază. Aceasta înseamnă că un calculator cu 128 MB de memorie va necesita instalarea unui singur banc de memorie DIMM de 128 MB. Toate plăcile de bază mai noi folosesc memoria DIMM, dar este posibil să întâlniŃi şi unele plăci de bază care prezintă sloturi atât pentru memorii DIMM, cât şi pentru memorii SIMM.

Memoria RAM a fost măsurată, din punct de vedere istoric, în nanosecunde (ns). Cu cât o memorie RAM este caracterizată printr-un timp de acces mai mic în nanosecunde, cu atât este ea mai rapidă. De exemplu, o memorie RAM pe 10 ns este mai rapidă decât o memorie RAM pe 30 ns. Viteza memoriilor RAM mai noi este acum măsurată în MHz. În prezent sunt disponibile memorii RAM pe 100 şi pe 133 MHz. Aceste două viteze ale memoriei RAM sunt echivalente aproximativ cu 12 şi respectiv, 8 ns.

Există o serie de tipuri de memorii RAM diferite iar tipul care va fi utilizat depinde de placa de bază folosită de calculator. Deşi memoriile s-au modificat dramatic de la apariŃia calculatoarelor personale, tipurile de memorii RAM prezentate în continuare reprezintă toate modelele pe care la puteŃi găsi pe o placă de bază pentru un procesor Pentium:

Memoria FPM (Fast Page Mode). Acest tip de memorie RAM este montată în module SIMM de 2, 4, 8, 16 sau 32 MB şi reprezintă tipul tradiŃional de memorie RAM. Memoria FPM RAM se găseşte în două versiuni: 60 ns şi 70 ns. Nu puteŃi combina memorii cu viteze diferite pe aceeaşi placă de bază. Memoria EDO (Extended Data Output). Acest tip de memorie RAM reprezintă o îmbunătăŃire faŃă de memoria FPM RAM şi oferă o citire mai rapidă a datelor. Memoriile EDO RAM se vând, de regulă în versiunile de 60 şi 50 ns. Versiunea pe 50 ns este disponibilă la un cost mai ridicat. Memoria EDO RAM este montată în module SIMM. Memoria SDRAM ( Synchronuos Dynamic RAM). Acest tip de memorie RAM este mai nou şi este utilizat în majoritatea calculatoarelor personale noi. Acest tip de memorie este denumit, de regulă, PC 100 sau PC 133 RAM, în funcŃie de viteza sa. Memoria SDRAM este montată în module DIMM şi are un timp de acces de 12 ns (PC 100 RAM), respectiv de numai 8 ns (PC 133 RAM). Acest tip de memorie RAM este numit sincron deoarece este capabil să se sincronizeze cu viteza plăcii de bază. Memoria DDR-SDRAM (Double Data Rate-Synchronous DRAM). Cel mai nou tip de memorie RAM, care este deocamdată suportat doar de puŃini producători de plăci de bază, este DDR-SDRAM.

3

Acest tip de memorie RAM este capabil să transfere date de două ori în cursul unui singur ciclu al ceasului plăcii de bază (care este măsurat în MHz). Aceasta înseamnă că acest tip de memorie RAM poate fi de două ori mai rapid decât celelalte tipuri de memorie RAM. Memoria DDR-SDRAM este montată în module DIMM.

Ca o concluzie, cu cât există mai multă memorie RAM pe un sistem, cu atât performanŃele sistemului vor fi mai bune. Adăugarea de mai multă memorie RAM la orice calculator va spori rata de transfer în sistem şi, în multe cazuri, va oferi chiar un spor de performanŃă mai mare decât cel obŃinut prin trecerea la un procesor mai rapid.

O. Un alt tip de memorie RAM apărut recent pe piaŃă este RDRAM (Rambus DRAM). Această

memorie a fost dezvoltată de compania Rambus inc. Memoria RDRAM este un tip de memorie DRAM extrem de rapid şi poate funcŃiona la 600 MHz. În prezent, memoria RDRAM este utilizată în unele plăci de accelerare grafică. Cu toate acestea, Intel are un acord de licenŃă cu Rambus pentru a utiliza tehnologia RDRAM la viitoarele plăci de bază Intel.

3. Hard discurile

Primul hard disc disponibil pentru calculatorul IBM PC original avea o capacitate de 10 MB (10 milioane de bytes). Astăzi este un lucru obişnuit pentru hard discuri (sau discuri fixe) să aibă o capacitate de peste 40 GB (adică 30 miliarde de biŃi). Hard discurile sunt împărŃite în două mari categorii: discuri IDE şi discuri SCSI. Un disc IDE (Integrated Drive Electronics) este un hard disc (sau un alt dispozitiv, cum ar fi unitatea CD-ROM) în care controller-ul pentru disc este construit chiar în discul respectiv. Un disc IDE este conectat la placa de bază folosind o panglică. Fiecare conector IDE de pe placa de bază suportă maxim două discuri IDE. Plăcile de bază au de regulă doi conectori IDE, ceea ce înseamnă că pe un calculator pot fi instalate maxim patru discuri IDE (incluzând aici hard discurile şi unităŃile CD-ROM).

O. Cel mai nou standard disponibil în materie de discuri este EIDE (En-hanced IDE). El oferă rate de

transfer a datelor mai mari şi poate suporta dispozitive de stocare mai mari decât standardul IDE.

Hard discurile SCSI (Small Computer System Interface) sunt ataşate la un controller SCSI (plasat în unul din sloturile de extensie ale plăcii de bază sau construit direct pe placa de bază, în cazul serverelor). Controller-ele SCSI permit ataşarea mai multor discuri (până la şapte). Prin urmare, discurile SCSI reprezintă oarecum standardul pentru calculatoarele server. În ceea ce priveşte componentele hardware pentru servere, hard discurile SCSI sunt preferate discurilor IDE, deoarece ele oferă un spor de performanŃă de 12%, în comparaŃie cu discurile IDE similare. De asemenea, numai două discuri IDE pot fi conectate la placa de bază prin intermediul aceleiaşi panglici (limitând un calculator la maxim patru discuri IDE conectate la placa1 de bază). Pe de altă parte, un controller SCSI va suporta până la şapte discuri, ceea ce face mai uşoară construirea configuraŃiilor multi-disc.

4. Microprocesoarele

Aceste componente procesează informaŃiile binare furnizate de către utilizator sau primite de la diferite dispozitive ale calculatorului, cum ar fi placa de interfaŃă pentru reŃea. Viteza procesorului este măsurată în MHz sau GHz. Procesorul Intel utilizat de primul calculator IBM PC avea viteza de 8 MHz.

4

În prezent sunt disponibile procesoare care rulează la peste 3600 MHz. Procesoarele sunt fabricate de o serie de companii diferite ca: Intel, Motorola, Cyrex şi AMD. Selectarea tipului de procesor şi a vitezei acestuia va depinde, din punctul de vedere al reŃelei, de tipul de calculator pe care îl configuraŃi: maşină client sau un server de reŃea. Procesoarele mai rapide reprezintă o cerinŃă obligatorie pentru un server care trebuie să proceseze un număr mare de solicitări de date din partea utilizatorilor din reŃea.

Microprocesorul reprezintă cea mai importantă realizare a industriei electronice a ultimelor decenii. ApariŃia sa este legată de necesitatea producerii unor circuite integrate pe scară largă (LSI) universale, apte de a fi utilizate într-o gamă extinsă de aplicaŃii. Până la crearea microprocesorului, circuitele LSI erau proiectate pentru o aplicaŃie anume, ceea ce limita foarte mult extinderea masivă a producŃiei acestora. Era necesar un nou concept în ceea ce priveşte funcŃionalitatea unui asemenea circuit, flexibilitatea utilizării lui. Această varietate de funcŃii şi posibilităŃi, permiŃând realizarea, cu un număr redus şi standardizat de circuite integrate, a diverse sisteme automate complexe, a fost implementată cu ajutorul sistemelor microprocesor. Legat prin interfeŃe specifice de lumea înconjurătoare, un astfel de sistem are posibilitatea culegerii de informaŃii din exterior (mărimi numerice, analogice, semnalizări), a prelucrării lor (diverşi algoritmi de calcul şi decizie), şi a acŃionării spre exterior (dând comenzi numerice, analogice, semnalizări diverse, comunicând rezultatele operaŃiilor efectuate, etc.). Preluând, uneori chiar dezvoltând structura funcŃională de bază a oricărui calculator electronic „clasic”, această gamă deosebit de largă de sisteme, denumite microcalculatoare, poate implementa aplicaŃii limitate doar de marginile imaginaŃiei omeneşti. Aria lor de utilizare este considerabil mărită faŃă de cea a calculatoarelor electronice mari, prin dimensiuni mult reduse, funcŃionare nepretenŃioasă din punct, de vedere al condiŃiilor de mediu ambiant, fiabilitate ridicată, viteză de lucru comparabilă (tot mai mare la tipurile noi de microprocesoare), şi, nu în ultimul rând, preŃul, în scădere exponenŃială, al acestor tipuri de echipamente.

Utilizatorii actuali, cât şi cei potenŃiali, ai acestor puternice instrumente, trebuie să stăpânească într-o oarecare măsură noŃiunile fundamentale, atât ale structurii constructive (hardware) a microcalculatoarelor, cât şi a celei referitoare la programarea lor (software). Pe de o parte, cel ce implementează structura unui astfel de sistem trebuie să cunoască disponibilităŃile de programare (setul de instrucŃiuni) ale microprocesorului utilizat, iar cel ce utilizează sistemul are nevoie de informaŃii constructive şi funcŃionale pentru a implementa în mod optim, ca performanŃe, o aplicaŃie dată (prin realizarea unui program adecvat). Pentru punerea în acord a cunoştinŃelor de bază, necesare la înŃelegerea principiilor de funcŃionare ale unui microprocesor, ale programării acestuia, această prezentare face o trecere în revistă a noŃiunilor fundamentale legate de sistemele microprocesor.

2.2.2.2. CaracteristiciCaracteristicileCaracteristiciCaracteristicilelele funcŃionalefuncŃionalefuncŃionalefuncŃionale alealealeale microprocesoruluimicroprocesoruluimicroprocesoruluimicroprocesorului

Întrebările la care vom încerca să răspundem în următoarele paragrafe sunt: ce este un microprocesor? ce poate face el? cum funcŃionează? cum interacŃionează cu lumea înconjurătoare? cum se implementează, pe baza lui, un sistem microprocesor?

Cunoaşterea răspunsurilor la aceste întrebări oferă baza necesară pentru evaluarea justă a posibilităŃilor şi performanŃelor diverselor sisteme, în vederea alegerii soluŃiei optime (combinaŃia hardware – software cea mai indicată) pentru o aplicaŃie dată.

5

Deci, ce este un microprocesor ? Un circuit integrat LSI , reprezentând elementul central (CPU1

Deci, ce este un microprocesor? Un circuit integrat LSI, reprezentând elementul central (CPU1 1 ), ca importanŃă şi posibilităŃi, în efectuarea sau coordonarea tuturor operaŃiilor ce au loc în funcŃionarea unui microcalculator.

El reprezintă un circuit logic de o extremă complexitate, reprezentabil printr-o structură formată din elemente de logică combinaŃională şi secvenŃială. Elementul specific, care diferenŃiază microprocesorul de

o astfel de configuraŃie clasică, şi care îi conferă totodată excepŃionala gamă de posibilităŃi de utilizare,

practic într-un număr nelimitat de aplicaŃii, îl reprezintă flexibilitatea sa, la nivelul software al sistemului.

Aceasta face ca implementarea acelei structuri logice echivalente, pentru o aplicaŃie dată, să nu reprezinte

o intervenŃie la nivelul structurii constructive, hardware, a sistemului microprocesor, ci să se obŃină prin implementarea unui program specific. Modificarea aplicaŃiei nu reprezintă decât modificarea programului microprocesorului.

Astfel, în esenŃă, se implementează structuri logice prin program, deci prin software. Totuşi, trebuie evidenŃiat faptul că dezvoltarea de noi programe consumă un timp ce poate fi apreciabil, şi uneori modificările nu sunt aşa de simple pe cât par a fi. Proiectarea cu microprocesoare implică trecerea de la proiectarea cu circuite logice combinationale şi secvenŃiale, la combinaŃia hardware-software optimă oferind performanŃe maxime pentru un cost al instalaŃiei dat. Proiectantul sistemului microprocesor trebuie să stăpânească atât proiectarea circuitelor logice, cât şi tehnica programării. CalităŃile cerute unui bun programator sunt însă similare, în esenŃă, celor cerute proiectantului de structuri logice.

Ceea ce trebuie remarcat de la bun început este faptul că microprocesorul are posibilitatea de a executa acŃiuni proprii unui anumit număr de instrucŃiuni (uzual câteva zeci), care alcătuiesc setul său de instrucŃiuni (şi care este specific fiecărui tip de procesor în parte). Pe baza acestor instrucŃiuni se elaborează programul (de către programator) pe care îl va executa microprocesorul. Memorat într-o memorie, programul este „citit” (adus din memorie în microprocesor), instrucŃiune cu instrucŃiune, care, odată decodificate, determină acŃiunea dorită. O modificare în comportarea sistemului se obŃine aşadar printr-o modificare (sau mai multe) în program. Evident, programul trebuie să conŃină doar instrucŃiuni al căror cod este „înŃeles” de către microprocesor (aparŃin setului lui de instrucŃiuni).

O. Punctele de vedere din care se va face prezentarea sa vor fi cel funcŃional, legat de acŃiunile specifice efectuate de către microprocesor, şi cel temporal – secvenŃial, legat de succesiunea şi durata acestora. Legătura între aceste două abordări este extrem de importantă.

1. FuncŃiile microprocesorului

La ora actuală, există disponibil un număr foarte mare de microprocesoare, produse de către diferite firme. Deşi există multe deosebiri în structura şi tehnologia lor de fabricaŃie, toate microprocesoarele sunt proiectate pentru a efectua un număr de operaŃii de bază. După cum s-a specificat, de altfel, aceste caracteristici funcŃionale comune provin din filozofia creării microprocesoarelor, ca instrumente complexe utilizate la implementarea unor sisteme numerice flexibile, puternice, şi la un preŃ deosebit de avantajos.

1 CPU: Central Processing Unit = unitate centrală de prelucrare

6

Structura de bază a unui sistem microcalculator este prezentată în figura 3.1. Se remarcă faptul că într-o secŃiune de memorie sunt memorate atât secvenŃele de instrucŃiuni ce alcătuiesc programul, cât şi datele numerice (de intrare, sau rezultate intermediare sau finale). Prin secŃiuni specifice de intrare sau ieşire, calculatorul comunică cu perifericele exterioare, care pot fi atât echipamente standard (tastatură, afişaj, etc.), cât şi interfeŃe specifice de conectare la un proces fizic controlat (traductoare, elemente de execuŃie, etc.).

controlat (traductoare, elemente de execu Ń ie, etc.). Figura 3.1. Structura de baz ă a unui

Figura 3.1. Structura de bază a unui sistem microcalculator

Figura 3.2 prezintă structura funcŃională a unui microprocesor în contextul utilizării memoriei şi a perifericelor sistemului. Se disting pe grupe funcŃionale: manipularea informaŃiilor (instrucŃiuni pentru microprocesor, cât şi date transmise sau primite de la diferite componente ale sistemului), execuŃia diferitelor operaŃii de calcul, şi controlul şi supervizarea tuturor componentelor din sistem, şi a operaŃiilor efectuate în diferitele secŃiuni ale acestuia. FuncŃional, un sistem microprocesor (ca de altfel orice calculator numeric), prezintă cinci funcŃii de bază:

funcŃia de intrare (INPUT), care permite legătura între lumea exterioară şi sistem; funcŃia de ieşire (OUTPUT), care permite legătura între sistem şi lumea exterioară; funcŃia de memorare (MEMORY), care permite păstrarea informaŃiilor (date, rezultate), şi (uneori) a instrucŃiunilor programului; funcŃia aritmetico-logică, (implementată prin ALU 2 ) care permite efectuarea operaŃiilor aritmetice şi logice în sistem; funcŃia de CONTROL, care înglobează totalitatea acŃiunilor de secvenŃializare şi control ale activităŃii sistemului.

2 ALU - Arithmetic Logic Unit = unitate aritmetico-logică (UAL)

7

7 Figura 3.2. Reprezentarea func Ń iilor unui microprocesor Aceast ă delimitare func Ń ional ă

Figura 3.2. Reprezentarea funcŃiilor unui microprocesor

Această delimitare funcŃională nu este strictă, în sensul existenŃei într-o proporŃie variabilă, la diverse tipuri de microprocesoare, a unora din cele 5 componente, în speŃă, componentele de intrare şi ieşire ale microprocesorului apar în general în mică măsură la nivelul microprocesorului ca legături directe spre exteriorul sistemului; de asemenea, doar unele microprocesoare, (şi acelea, în general, parŃial) acoperă ele însele necesităŃile de memorie ale sistemului. Uzual, aceasta este exterioară unităŃii centrale.

Figura 3.3 prezintă fluxul de informaŃie între cele cinci componente funcŃionale ale microprocesorului. Uzual informaŃia este adusă, prin funcŃia de intrare (INPUT), sub coordonarea funcŃiei de control, în memoria sistemului. InformaŃia poate fi utilizată ori pentru a „spune” microprocesorului ce are de făcut (instrucŃiuni), ori ca dată în operaŃii aritmetice sau logice, (în caz general, sub formă de instrucŃiuni, alcătuind programul, informaŃia poate fi rezidentă în mod permanent în memoria sistemului).

Din memorie, tot sub incidenŃa funcŃiei de CONTROL, informaŃia este citită şi decodificată de către microprocesor, executându-se în mod secvenŃial instrucŃiunile programului. Datele şi rezultatele sunt de asemenea vehiculate între procesor şi memorie, tot sub comanda funcŃiei de CONTROL, conform programului. După caz, coordonat de către funcŃia de CONTROL, se activează, pentru transfer de informaŃie spre ieşirea sistemului, funcŃia de ieşire (OUTPUT). Se remarcă delimitarea în figura 3.3, a funcŃiilor sistemului, înglobate de către microprocesor. Două dintre secŃiunile sistemului sunt conŃinute întotdeauna integral de către microprocesor:

Ń inute întotdeauna integral de c ă tre microprocesor: Blocul – ALU –, care reprezint ă

Blocul – ALU –, care reprezintă o colecŃie de circuite logice complexe, programabile, capabile să

proceseze date numerice, pe baza unui set de instrucŃiuni ale utilizatorului, uzual bazate pe trei operaŃii fundamentale: adunare, scădere, şi operaŃii logice.

SecŃiunea de CONTROL, care generează şi coordonează toate semnalele de control necesare pentru a

executa operaŃiile de calcul din ALU, şi a sincroniza transferul datelor în sistem. O funcŃie esenŃială a secŃiunii de CONTROL este aceea de a decodifica şi executa instrucŃiunile programului pe baza căruia funcŃionează întregul sistem.

aceea de a decodifica ş i executa instruc Ń iunile programului pe baza c ă ruia

8

8 Figura 3.3. Structura func Ń ional ă ş i fluxul de informa Ń ii într-un
8 Figura 3.3. Structura func Ń ional ă ş i fluxul de informa Ń ii într-un
8 Figura 3.3. Structura func Ń ional ă ş i fluxul de informa Ń ii într-un

Figura 3.3. Structura funcŃională şi fluxul de informaŃii într-un sistem microprocesor

Ca o remarcă specială, modul de conectare şi funcŃionarea componentelor de bază ale unui sistem de calcul, s-au bazat şi se bazează încă, în mod curent, în marea majoritate a structurilor utilizate, pe aşa numita arhitectură de tip von Neuman utilizată practic în exclusivitate la realizarea microprocesoarelor uzuale. În această arhitectură, unitatea centrală de prelucrare (CPU), va executa câte o singură instrucŃiune la un moment dat, într-o secvenŃă de program. Deşi mai lentă decât în sistemele în care se execută mai multe instrucŃiuni deodată (procesare paralelă), arhitectura von Neuman este relativ mai simplu de implementat. Arhitecturile recentelor tipuri de microprocesoare au însă elemente de prelucrare paralelă, cât şi, în cazul procesoarelor DSP, cu aşa numita arhitectură Harvard, o paralelizare completă a lanŃului de citire / decodificare instrucŃiuni, respectiv efectuare operaŃii de calcul, şi transfer al datelor în sistem.

Caracterul temporal – secvenŃial. Desfăşurarea operaŃiilor efectuate de către diversele componente funcŃionale ale sistemului este controlată, ca durată şi succesiune, de către secŃiunea de control. Această secŃiune selectează în mod corespunzător (activează), secvenŃial funcŃiunile microprocesorului, pe durate de timp fixe, determinate de specificul operaŃiei ce se execută. O diagramă de timp simplificată a activării secŃiunilor sistemului este prezentată în figura 3.4.

Pe intervalul t 1 , informaŃia (instrucŃiuni şi date), se preia de la intrare şi se memorează (activându-se corespunzător, cele două secŃiuni: INPUT şi MEMORY). În t 2 , instrucŃiunile din memorie sunt preluate şi executate (ele alcătuind programul microprocesorului), şi împreună cu datele, prelucrate în ALU, determină execuŃia dorită de operaŃii ale sistemului.

Citire informaŃii

Intrare

activare

Prelucrare

Ieşire rezultate

Memorie

activare

U.A.L

activare

Ieşire

   

activare

T 1

T 2

T 3

Figura 3.4. ÎnlănŃuirea temporală a activităŃilor sistemului microprocesor

9

Rezultatele sunt memorate în memorie, într-o ultima etapă (t 3 ), se dezactivează ALU, şi se transferă rezultatele spre exteriorul sistemului, activându-se funcŃia de OUTPUT. Un semnal de ceas de sistem (uzual controlat cu un cristal de cuarŃ), este utilizat pentru sincronizarea şi secvenŃializarea diverselor operaŃii şi semnale, pe parcursul efectuării tuturor operaŃiilor sistemului.

2. Reprezentarea informaŃiei

Implementarea electrică/electronică a funcŃiilor calculatorului este posibilă, şi se realizează, prin utilizarea bazei 2. Astfel toate informaŃiile (instrucŃiuni sau date, rezultate) se memorează şi se prelucrează de către microprocesor în formă binară. Ele trebuie să fie interpretabile în mod unic de către microprocesor, prezentându-se într-un format specific în acest scop. Depinzând de concepŃia proiectanŃilor microprocesorului, acest format este o combinaŃie de lungime fixă, de simboluri binare, alcătuind aşa-numitele cuvinte de instrucŃiuni, respectiv cuvinte de date (figura 3.5). Fiecare instrucŃiune din programul microprocesorului va fi formată din unul sau mai multe cuvinte de instrucŃiune. Acestea „spun” procesorului ce are de făcut. Cuvântul de instrucŃiune constă din două părŃi: codul operaŃiei (care indică ce operaŃie se va executa), şi operanzii (care indică asupra cui se va efectua operaŃia indicată de codul operaŃiei).

Figura 3.5 este un exemplu de reprezentare a cuvintelor de instrucŃiune, pentru un microprocesor cu formatul cuvintelor de 8 biŃi. (Uzuale sunt microprocesoarele cu cuvinte de 8 biŃi = 1 byte, în ultima vreme afirmându-se şi extinzându-se cele de 16, 32 şi chiar 64 de biŃi). Va exista deci câte o combinaŃie unică a biŃilor cuvântului de instrucŃiune, pentru desemnarea codului operaŃiei (combinaŃia 10000 în fig. 3.5.b), şi a operandului asupra căruia se va efectua operaŃia dorită (combinaŃia 010 în fig. 3.5.b). Decodificarea cuvântului de instrucŃiune va furniza astfel microprocesorului informaŃiile necesare pentru a şti ce operaŃie se execută, şi asupra cărei (căror) valori (date), se execută această operaŃie.

InstrucŃiunile sunt memorate în ordinea executării (cu excepŃiile ce se vor prezenta la analiza detaliată a tipurilor de instrucŃiuni), iar microprocesorul le citeşte şi le execută secvenŃial, în esenŃă, se citeşte un cuvânt de instrucŃiune, se decodifică, obŃinându-se operanzii, locaŃia lor şi se execută operaŃia indicată. Apoi se trece la o nouă instrucŃiune etc.

indicat ă . Apoi se trece la o nou ă instruc Ń iune etc. Figura 3.5.
indicat ă . Apoi se trece la o nou ă instruc Ń iune etc. Figura 3.5.
indicat ă . Apoi se trece la o nou ă instruc Ń iune etc. Figura 3.5.
indicat ă . Apoi se trece la o nou ă instruc Ń iune etc. Figura 3.5.
indicat ă . Apoi se trece la o nou ă instruc Ń iune etc. Figura 3.5.
indicat ă . Apoi se trece la o nou ă instruc Ń iune etc. Figura 3.5.
indicat ă . Apoi se trece la o nou ă instruc Ń iune etc. Figura 3.5.
indicat ă . Apoi se trece la o nou ă instruc Ń iune etc. Figura 3.5.
indicat ă . Apoi se trece la o nou ă instruc Ń iune etc. Figura 3.5.

Figura 3.5. Reprezentarea informaŃiei (instrucŃiuni sau date); LSB: bitul cel mai puŃin semnificativ (last significant bit); MSB: bitul cel mai semnificativ (most significant bit)

10

3. Memorarea informaŃiei

Plecând de la o reprezentare intuitivă, de genul organizării numerelor de telefon, fiecare cuvânt de instrucŃiune sau date are asociat, în mod unic, un număr care simbolizează (şi se numeşte), adresa sa. A citi o anumită instrucŃiune sau dată din memorie va însemna, în mod practic, a se activa, prin intermediul funcŃiilor de control, acea celulă de memorie, a cărei adresă este cea dorită. ConŃinutul ei (instrucŃiune sau dată --- este răspunderea programatorului de a şti ce se va găsi acolo şi de a se îngriji de corectitudinea amplasării lor) este prelucrat în mod corespunzător de către microprocesor. Memoria sistemului este organizată sub forma unei matrice, cu liniile având un număr de celule (biŃi), egal cu cel al cuvântului de instrucŃiune sau de date, fiecărei linii corespunzându-i, în mod unic, o adresă proprie. Selectarea unei astfel de celule permite accesul de la / la microprocesor, la / de la această celulă de memorie, sensul transferului de informaŃie fiind indicat de secŃiunea de CONTROL.

Trebuie menŃionat că microprocesorul poate conŃine pe cip atât memorie ROM (eventual programe), cât şi memorie RAM (de uz general, sau, sub denumirea de registre, celule cu destinaŃie specială în memorarea, decodificarea şi executarea instrucŃiunilor, a operaŃiilor aritmetice şi logice etc.). Se ajunge, prin îmbinarea conceptelor prezentate, de operare secvenŃială, reprezentare şi memorare a informaŃiilor la conceptul final de program. Astfel, executarea unei secvenŃe dorite de operaŃii, de către microprocesor, este obŃinută prin implementarea unei succesiuni de instrucŃiuni, memorate în memoria sistemului, alcătuind programul acestuia. Fiecare operaŃie dorită a sistemului va fi implementată printr-o secvenŃă de una sau mai multe instrucŃiuni. Odată implementat programul şi pornită execuŃia sa, sistemul va acŃiona conform instrucŃiunilor din program, realizând funcŃiile şi operaŃiile dorite.

4. Conceptul de magistrală

Sunt necesare, în funcŃionarea unui sistem microprocesor, legături multiple şi complexe între diferitele părŃi funcŃionale ale acestuia. Grupurile de interconexiuni cu funcŃii similare, legând diversele secŃiuni ale unui sistem microprocesor, se numesc magistrale. Ele conectează semnalele de date, adrese, control, ale unei secŃiuni, cu semnalele omologe ale celorlalte secŃiuni, constituind calea de legătură dintre ele. Există două seturi de magistrale în orice sistem microprocesor: magistrale interne (reprezentând canalele de legătură între diversele unităŃi funcŃionale din unitatea centrală (CPU) a sistemului) şi magistrale externe (reprezentând căile de comunicaŃie între CPU şi componentele externe acestuia). Fiecare grup de magistrale poate fi subdivizat în trei categorii, după tipul informaŃiei transferate: magistrale de adrese, de date, şi de control. O magistrală poate avea mai multe linii, permiŃând transferul simultan al unui cuvânt de informaŃie (adresă sau dată), caz în care magistrala se numeşte magistrală paralelă. Există de asemenea magistrale seriale, pentru care datele sunt transmise multiplexat în timp (un cuvânt este transmis bit cu bit, pe aceeaşi linie), care sunt, în mod evident, mult mai lente decât magistralele paralele. Practic, toate magistralele interne ale CPU, cât şi cele externe care conectează CPU cu memoria, şi cu majoritatea interfeŃelor de intrare / ieşire ale sistemului, sunt organizate ca magistrale paralele. Legături

11

seriale se utilizează mai ales pentru transmiterea datelor la / de la echipamente aflate la distanŃă de CPU (terminale, linii telefonice, etc.).

În figura 3.6 se reprezintă o structură de principiu a modului de interconectare între diferitele elemente componente ale sistemului microprocesor prin intermediul diferitelor magistrale ale acestuia. Deoarece unitatea centrală nu poate alimenta simultan un număr prea mare de circuite exterioare (există valori limitate ale curenŃilor pe care acesta îi suportă sau generează), este necesară amplificarea semnalelor de pe magistralele sistemului. Această adaptare a semnalelor este efectuată cu diferite tipuri de circuite, distingându-se în esenŃă următoarele tipuri: circuite tampon amplificatoare de magistrală (drivere); circuite tampon bidirecŃionale (buffere bidirecŃionale); circuite pentru reŃinerea datelor (latch).

Figura 3.7 prezintă utilizarea circuitelor tampon (uni şi bidirecŃionale), pe magistralele sistemului. Semnalele obŃinute la ieşirea acestor circuite formează magistrale similare celor din care provin.

formeaz ă magistrale similare celor din care provin. Figura 3.6. Structura unui sistem microprocesor.
formeaz ă magistrale similare celor din care provin. Figura 3.6. Structura unui sistem microprocesor.
formeaz ă magistrale similare celor din care provin. Figura 3.6. Structura unui sistem microprocesor.

Figura 3.6. Structura unui sistem microprocesor. Magistralele sistemului

Uzual, se utilizează circuite tampon unidirecŃionale pentru semnalele de pe magistralele de adrese şi de control, şi circuite tampon bidirecŃionale, pentru magistralele de date, în cazurile în care microprocesorul se interfaŃează cu periferice mult mai lente decât unitatea centrală, este necesar ca informaŃia să fie prezentă la intrarea acestor circuite, până la preluarea ei de către respectivul circuit, în aceste cazuri, se pot utiliza circuite pentru reŃinerea datelor (latch - reprezentând în esenŃă, registre paralele), în care informaŃia prezentă pe pinii de intrare, de pe o magistrală a sistemului, este înscrisă la primirea unui semnal de control (de scriere), generat direct de către microprocesor sau de către un circuit decodificator.

Figura 3.8 prezintă structura unui asemenea montaj, care menŃine la ieşirea către un afişaj cu segmente informaŃia dorită, până la înscrierea altor date, la un acces ulterior al circuitului latch din schemă.

12

12 Figura 3.7. Utilizarea circuitelor tampon (buffere) Magistrala de date Magistrala de date este destinat ă

Figura 3.7. Utilizarea circuitelor tampon (buffere)

Magistrala de date

Magistrala de date este destinată atât transferului unidirecŃional de instrucŃiuni de la memorie (citire a programului), cât şi celui bidirecŃional, de date între memorie, unitatea centrală şi / sau interfeŃele de intrări/ieşiri (informaŃia parcurge magistrala în ambele sensuri, sau de la procesor la una dintre unităŃile externe acestei unităŃi, sau de la una dintre aceste unităŃi spre procesor). DirecŃia transferului de informaŃie este supervizată de către secŃiunea de CONTROL a microprocesorului, prin generarea de semnale specifice (citire sau scriere). Lungimea cuvântului microprocesorului determină numărul de linii de conexiune din magistrala de date (8,16,32, etc.). Dacă în structurile de tip von Neuman, există o singură magistrală de date, pe care se vehiculează, la momente de timp diferite, atât cuvintele de program (coduri de instrucŃiune), citite din memoria program, către microprocesor, cât şi cuvintele de date, între memorie sau periferice şi microprocesor, la execuŃia instrucŃiunilor, în structurile de tip Harvard (specifice procesoarelor DSP), există magistrale independente pentru transferul cuvintelor de instrucŃiune, respectiv a datelor propriu-zise ale programului. Astfel, este mărită eficienŃa globală a sistemului, în acest al doilea caz.

Ń a global ă a sistemului, în acest al doilea caz. Figura 3.8. Utilizarea circuitelor de

Figura 3.8. Utilizarea circuitelor de tip latch

Magistrala de adrese

Magistrala de adrese este o magistrala unidirecŃională. Ea vehiculează codul binar reprezentând locaŃia (adresa) datei ce se va utiliza în cadrul operaŃiei ce se execută. Astfel, ea poate selecta adresa celulei de memorie de la care se citeşte o nouă instrucŃiune, dată, sau la care se memorează un rezultat. Multe microprocesoare utilizează magistrala de adrese şi pentru configurarea adresei echipamentului de intrare-ieşire, selectat la o operaŃie de INPUT sau

13

OUTPUT. Este sarcina secŃiunii de CONTROL de a delimita şi indica, prin generarea de semnale de control specifice, dacă este o operaŃie de citire sau scriere din memorie sau intrare-ieşire.

Adresabilitatea unui microprocesor este dată de numărul de biŃi ai magistralei de adrese. Un număr uzual de 65536 (64 ko) celule de memorie vor necesita 16 linii de adresă pe această magistrală. (2 16 = 65536). În general se vor putea adresa 2 N celule de memorie prin intermediul a N linii de adresă.

O. Similar remarcii de la paragraful anterior, menŃionăm şi aici că structurile von Neuman au o singură magistrală de adrese, vehiculând la momente de timp diferite, adresa de unde se citeşte cuvântul de instrucŃiune, respectiv adresa la / de la care se efectuează transferul datelor, la execuŃia propriu-zisă a instrucŃiunii. Structurile cu arhitectură Harvard au două magistrale separate de adrese, pentru adresarea memoriei de program, respectiv a celei de date (ceea ce permite ca în paralel cu execuŃia unei instrucŃiuni să se poate adresa şi citi cuvântul de instrucŃiune următor).

Magistrala de control

Această magistrală furnizează informaŃii suplimentare necesare pentru indicarea operaŃiei ce se efectuează. Numărul de semnale de pe această magistrală depinde de numărul de semnale de control necesare pentru microprocesorul utilizat. Tipice sunt semnalul de ceas al sistemului (care asigură funcŃionarea secvenŃială cu o periodicitate fixă a întregului sistem microprocesor), semnalele de citire/scriere în memorie, citire/scriere pentru intrare/ieşire din sistem etc.

Corelate cu magistrala de adrese, semnalele de pe magistrala de control permit selecŃia unică a echipamentului sau a celulei de memorie căreia/de la care, prin intermediul magistralei de date, se transmite/preia informaŃia, conform operaŃiei ce se execută. Un aspect important ce trebuie clarificat aici este cel ridicat de problema desfăşurării operaŃiilor în sistem, pe aceste magistrale, în mod corect, fără probleme de interferenŃă a informaŃiilor, care pe aceleaşi căi sunt transferate în sensuri şi spre/de la echipamente diferite. Răspunsul este dat de însăşi funcŃionarea secvenŃială, sub supravegherea funcŃiei de CONTROL, a întregului sistem. Este asigurată activarea unică, după cum s-a menŃionat, a celulelor de memorie sau a elementelor de intrare/ieşire cu care se operează la un moment dat.

Acestea sunt dotate cu circuite tampon (buffere) proprii. Conectarea pe liniile magistralelor, în sensul transferului de informaŃie pe magistrală, este efectuată prin circuitele tampon respective, care sunt selectate (deschise) doar în cazul adresării circuitului respectiv. La fel, înscrierea informaŃiei într-o anumita celulă de memorie sau element de ieşire se face prin activarea funcŃiei de memorare doar pentru elementul respectiv.

Astfel, la efectuarea unei operaŃii de transfer de informaŃii în sistem, va exista o singură sursă a semnalelor de pe fiecare magistrală, şi va fi selectat un singur element în care datele se vor înscrie la operaŃia respectivă. Aceste selecŃii unice vor trebui asigurate prin proiectarea corespunzătoare a circuitelor de adresare şi decodificare, după cum se va prezenta detaliat în paragrafele următoare.

14

5. Hardware-ul microprocesorului

Acesta va fi prezentat în maniera de abordare a utilizatorului orientat spre hardware-ul sistemului. Fiecare dintre cele cinci secŃiuni de bază sunt identificate în mod unic. Trebuie însă menŃionată prezenŃa unor porŃiuni ale funcŃiei MEMORY ataşate celorlalte secŃiuni, cât şi prezenŃa în mai multe locaŃii a elementelor de INPUT-OUTPUT Aceasta s-a făcut pentru o mai bună înŃelegere a operării detaliate a hardware-ului microprocesorului, după cum se va vedea în continuare. Figura 3.9 prezintă diagrama funcŃională detaliată a microprocesorului. Se vor discuta fiecare secŃiune funcŃională a acestuia, operaŃiile sale şi legătura cu celelalte secŃiuni.

FuncŃia de control

După cum s-a arătat, microprocesorul operează în mod secvenŃial, determinat de către un program memorat, format din instrucŃiuni. Dar programul în sine nu este suficient pentru funcŃionarea sistemului. (De exemplu, calculatorul trebuie să ştie de unde să înceapă citirea din memorie a primei instrucŃiuni din program). Trebuie să fie activate în mod corespunzător semnalele de control, la momente adecvate de timp, pentru secŃiunile de MEMORY, ALU, INPUT/OUTPUT; în vederea citirii, decodificării şi executării instrucŃiunilor în ordinea dorită şi evitându-se interferenŃa operaŃiilor. Toate aceste cerinŃe sunt îndeplinite de către secŃiunea de CONTROL. SecŃiunea de CONTROL asigură secvenŃializarea, decodificarea şi activarea operaŃiilor acestuia.

Ciclul microprocesorului

Realizarea operaŃiilor microprocesorului are loc în mod secvenŃial-repetitiv. Semnalul de temporizare minimă, în raport cu care se desfăşoară toate celelalte temporizări sincronizate din funcŃionarea acestuia, se numeşte semnal de ceas (clock) al sistemului. Se defineşte ciclul de instrucŃiune al microprocesorului, care durează un număr variabil de perioade de ceas, în funcŃie de microprocesor şi de instrucŃiunea ce se execută, ca fiind secvenŃa de operaŃii efectuate pentru a extrage o instrucŃiune din memorie, a o decodifica şi executa.

extrage o instruc Ń iune din memorie, a o decodifica ş i executa. Figura 3.9. Structura
extrage o instruc Ń iune din memorie, a o decodifica ş i executa. Figura 3.9. Structura
extrage o instruc Ń iune din memorie, a o decodifica ş i executa. Figura 3.9. Structura

Figura 3.9. Structura internă a unui microprocesor

15

Deoarece microprocesorul execută câte o instrucŃiune la un moment dat, începând cu prima instrucŃiune din program, este necesar a se cunoaşte în permanenŃă care instrucŃiune se execută (sau va fi executată la pasul următor). Se utilizează în acest scop un registru special, numit registru contor de program (PC = program counter), care conŃine adresa următoarei instrucŃiuni de program care va fi citită din memorie. Deoarece programul este memorat la adrese succesive, contorul de program va fi actualizat uzual prin simpla incrementare cu 1, la fiecare transfer al unui cuvânt de instrucŃiune din memorie în registrul de instrucŃiuni al microprocesorului (descris în secŃiunea următoare). Astfel, putem considera registrul PC ca un indicator (pointer) arătând unde s-a ajuns cu execuŃia programului la un moment dat.

Primul subciclu al fiecărui ciclu al procesorului este utilizat pentru extragerea de informaŃie din memorie (fetch) şi are de regulă patru perioade de ceas. În prima perioadă, conŃinutul numărătorului de adresă (PC), reprezentând adresa de unde se va citi instrucŃiunea curentă, este adus pe magistrala de adrese, selectând, împreună cu semnalele de control, celula de memorie dorită. În a doua perioadă, conŃinutul PC este incrementat, pregătindu-l pentru următoarea extragere din memorie.

Registrele microprocesorului

Se pot considera două categorii de registre ale unui microprocesor: cele speciale şi cele de uz general. Cu excepŃia registrului indicator de adresă a stivei programului (stack pointer), registrele speciale sunt utilizate funcŃional, în celelalte secŃiuni ale microprocesorului. (De exemplu registrul de instrucŃiuni, registrul adresei de program --- PC etc. ). Având uzual o lungime de unul sau două cuvinte de date, registrele sunt folosite la stocarea diferitelor informaŃii utilizate prin program, sau sub coordonarea funcŃiei de control. Registrele de uz general sunt adresabile de către utilizator, şi pot fi folosite pentru stocarea şi manevrarea datelor programului - operanzi, date, adrese de memorie conŃinând date utile programului, etc. Uzual, aceste registre conŃin informaŃiile cele mai utilizate de către program. Aceasta conduce la o sporire a vitezei de lucru globale a sistemului, deoarece timpii de acces la registrele interne sunt sensibil mai reduşi deci timpii de acces la memoria externă a sistemului, după cum s-a menŃionat. Aceste registre sunt conectate atât la alte registre interne ale microprocesorului, cât şi la magistralele externe, prin intermediul magistralelor interne şi al circuitelor tampon (figura 3.10).

Registrele de uz general sunt utilizate pentru manipularea şi memorarea temporară a datelor. În general, orice registru de acest tip este accesibil programatorului, prin instrucŃiuni specifice, fiind posibile: încărcarea cu un cuvânt dorit de date, deplasarea informaŃiei între registre, sau între registre şi memorie, rotirea conŃinutului acestora; tratarea unei perechi de registre ca reprezentând date pe cuvinte cu lungime dublă (la registre de 8 biŃi, perechi de 16 biŃi) şi posibilitatea operării cu acestea. Prezentarea organizării şi a posibilităŃilor specifice de utilizare a registrelor de uz general, din punctul de vedere al software-ului, va fi făcută ulterior, pe larg. Selectarea registrului de uz general desemnat de o instrucŃiune este făcută tot prin secŃiunea de CONTROL. Dacă, în urma decodificării codului operaŃiei, se indică o operaŃie cu registre, se folosesc anumiŃi biŃi ai instrucŃiunii, prin intermediul registrului de selecŃie (vezi figura 3.15), pentru selectarea

16

registrului dorit. Numărul registrelor de uz general variază, in funcŃie de microprocesor, în game foarte largi, de la 2 până la 48.,

Registrele speciale - numite şi registre de lucru, sau registre interne ale microprocesorului, au funcŃii predefinite specifice în funcŃionarea acestuia. Deşi uneori pot fi setate la valori iniŃiale specificate, aceste registre nu sunt accesibile prin program, la execuŃia instrucŃiunilor. Deja menŃionate în această categorie sunt registrele contor de program (PC), registrul de instrucŃiuni, registrul decodificator de instrucŃiuni, etc.

De multe ori se utilizează subrutine la scrierea programelor, pentru o structurare şi mai bună organizare a acestora. Subrutinele reprezintă porŃiuni de program utilizate frecvent pentru a efectua anumite operaŃii specifice. Subrutinele sunt apelate din diferite locuri ale programului, evitându-se astfel repetarea unei aceleaşi secvenŃe de instrucŃiuni. Deoarece la rândul ei, o subrutină poate apela o alta subrutină, etc., este necesară utilizarea unui mecanism specific pentru a se putea cunoaşte adresa de revenire, la terminarea execuŃiei unei subrutine, la punctul din program de unde se făcuse apelarea el.

la punctul din program de unde se f ă cuse apelarea el. Figura 3.10. Structura principal

Figura 3.10. Structura principală a memoriei interne a unui microprocesor

De asemenea, în funcŃionarea microprocesorului, pot apărea evenimente exterioare care să necesite o tratare imediată (de exemplu, necesitatea de a se citi valoarea unei mărimi la intervale date de timp), în astfel de cazuri, operarea curentă este oprită, iar microprocesorul trece la executarea unei secvenŃe speciale din program, care va efectua operaŃiile dorite, conforme evenimentului apărut. Acest mod de a trata evenimentele asincrone, relativ la desfăşurarea curentă a microprocesorului, poartă numele de lucru în întreruperi. Şi la apariŃia unei întreruperi, în esenŃă, se apelează o subrutină, specifică întreruperii respective. Se va face ulterior prezentarea detaliată a funcŃionării microprocesorului la apelarea unei subrutine, sau la apariŃia unei întreruperi. Ceea ce trebuie menŃionat aici este faptul că o subrutină odată apelată, (din program, sau ca urmare a unei întreruperi), odată tratată, trebuie să permită revenirea în program, permiŃând continuarea acestuia din punctul de apel al subrutinei, sau de întrerupere. În acest scop există o zonă specială a memoriei, numită stivă (stack), în care se

17

stochează, pe perioada execuŃiei unei subrutine, sau tratării unei întreruperi, adresa la care se va reveni, la terminarea acestei secŃiuni speciale de program.

În acest scop, microprocesorul este prevăzut cu un registru special, numit registrul indicator de adresei al stivei programului (SP - stack pointer). El conŃine adresa ultimei celule de memorie RAM, în care este salvat, la apelarea subrutinei, conŃinutul actual al registrului contor de program (PC). Trecerea la zona de program pentru execuŃia subrutinei se face prin modificarea valorii PC, care va conŃine adresa de început a acestei zone de program. Microprocesorul va executa următoarea instrucŃiune începând de la această adresă, deci va începe execuŃia subrutinei (apelată prin program sau ca urmare a unei întreruperi).

La sfârşitul acestei zone de program, o instrucŃiune specifică de revenire la programul iniŃial va determina readucerea în PC, din memorie, de la adresa specificată de registrul indicator al adresei stivei, a valorii salvate a PC în momentul apelării subrutinei. Astfel, programul va continua apoi din punctul de unde a fost efectuat apelul subrutinei.

Memoria RAM şi ROM

După cum s-a menŃionat, unele microprocesoare au incluse pe cip celule de memorie RAM şi ROM. Şi aici, dimensiunea acestor zone de memorie este dependentă de tipul microprocesorului; de la procesoare care nu au memorie locală, la cele cu câŃiva ko de memorie ROM şi câteva sute de octeŃi de memorie RAM. Adresele acestor celule de memorie sunt unice. Prin intermediul magistralei de adrese se poate selecta în mod unic o celulă de memorie, secŃiunea de CONTROL, determinând ce anume este de făcut la această locaŃie. Dacă se doreşte citirea (READ) informaŃiei, conŃinutul celulei de memorie apare pe magistrala de date. La o scriere a informaŃiei (WRITE), se memorează informaŃia de pe magistrala de date în celula selectată. Prezentarea modului de adresare şi a organizării memoriilor exterioare va fi făcută ulterior.

FuncŃia aritmetico-logică

SecŃiunea care efectuează operaŃiile aritmetice şi logice este compusă dintr-o unitate aritmetico-logică (ALU), ce efectuează operaŃia propriu-zisă, şi registre speciale necesare la manipularea şi memorarea temporară a operanzilor.

Unitatea aritmetico-logică (ALU)

O structură comună a ALU este prezentată în figura 3.11. Cele două intrări de date vor furniza valorile celor doi (uzual) operanzi al unei operaŃii aritmetice sau logice efectuate în ALU. Intrarea de selecŃie a funcŃiei provine de la secŃiunea de CONTROL, şi specifică operaŃia ce se va efectua. În plus, intrarea semnalului de transport (carry), este utilizată la efectuarea operaŃiilor aritmetice cu precizie extinsă.

18

18 Figura 3.11. Structura sec Ń iunii aritmetico-logice a microprocesorului Posibilit ăŃ ile ALU depind de
18 Figura 3.11. Structura sec Ń iunii aritmetico-logice a microprocesorului Posibilit ăŃ ile ALU depind de

Figura 3.11. Structura secŃiunii aritmetico-logice a microprocesorului

PosibilităŃile ALU depind de tipul şi performanŃele microprocesorului. Ele pot varia de la simple operaŃii de adunare şi scădere pe cuvinte de 8 biŃi şi operaŃii logice elementare, până la înmulŃiri şi împărŃiri pe 16 biŃi etc. În general însă, ALU poate efectua adunări binare, scăderi binare, operaŃii logice booleene, rotaŃii la dreapta sau la stânga ale conŃinutului operanzilor. Alte operaŃii, mai complexe, pot fi implementate prin succesiuni de astfel de operaŃii simple, printr-un software adecvat.

Multe microprocesoare (mai ales de 8 biŃi) efectuează operaŃiile de înmulŃire şi de împărŃire utilizând o serie de operaŃii elementare de adunare sau scădere.

o serie de opera Ń ii elementare de adunare sau sc ă dere. Figura 3.12 Structura

Figura 3.12 Structura de bază a ALU

O. Microprocesoarele recent apărute, practic toate microprocesoarele de 16 sau 32 biŃi, au implementate în setul de instrucŃiuni şi operaŃiile de înmulŃire şi împărŃire (cu numere întregi pozitive sau în complement faŃă de doi). PreŃul acestor dispozitive va fi mai mare decât al procesoarelor standard. Există o singură unitate aritmetico-logică într-un microprocesor şi câte unul sau două acumulatoare şi registre auxiliare.

Registre pentru funcŃia aritmetico-logică

Una dintre cele două intrări în ALU este întotdeauna conectată la un registru de uz general, cu utilizare specifică, denumit acumulator (A), care deci va furniza unul dintre operanzii oricărei operaŃii aritmetice sau logice. După efectuarea operaŃiei, în acumulator se va transfera rezultatul operaŃiei efectuate în ALU. Astfel, operandul aflat iniŃial în acumulator se va pierde. Unele operaŃii specifice se pot efectua direct cu conŃinutul acumulatorului, cum ar fi incrementarea sau

19

decrementarea conŃinutului acestuia cu l, ştergerea sa etc. Fiind adresabil ca oricare alt registru general, conŃinutul acumulatorului poate fi încărcat/transferat direct sau indirect, din/în memoria sistemului, sau în alte registre de uz general, fără a necesita utilizarea ALU.

Pentru memorarea temporară a celuilalt dintre operanzi (în cazul efectuării operaŃiilor care necesită doi operanzi), se prevede un registru de date. Datele în registrul de date şi acumulator sunt vehiculate sub comanda secŃiunii de CONTROL, dinspre / către registrele de uz general, sau memorie, prin intermediul magistralelor de date internă, respectiv externă. Pentru a se cunoaşte caracteristicile rezultatului unei operaŃii (depăşirea rangului cuvântului de date, la o adunare, de exemplu, semnul rezultatului, sau faptul că s-a obŃinut un rezultat nul etc.), este prevăzut un registru special, registrul de stare.

Acest registru special, inaccesibil direct utilizatorului, are între 8 şi 16 biŃi, fiecare bit având o semnificaŃie aparte, şi fiind controlat de câte o structură logică specifică. Uneori acest registru este denumit şi registrul indicatorilor de condiŃie. ConŃinutul biŃilor individuali, denumiŃi indicatori de condiŃie (flag), este modificat (setat sau resetat), în funcŃie de rezultatul operaŃiilor efectuate în ALU. Aceşti indicatori (unii dintre ei putând fi iniŃializaŃi prin program, cu 1 = set, 0 = reset), reprezintă baza mecanismului de luare a deciziilor de către unitatea centrală. ConŃinutul registrului de stare va furniza la orice moment de timp informaŃii importante despre starea procesorului şi rezultatele ultimei operaŃii aritmetice sau logice efectuate în ALU.

Deşi conŃinutul acestui registru nu este direct accesibil prin program, execuŃia instrucŃiunilor condiŃionate de salt salt apel de subrutină permite testarea indirectă a valorii biŃilor indicatori de stare. În funcŃie de semnificaŃie, biŃii de stare din registrul indicator de stare vor fi modificaŃi prin program sau în urma efectuării operaŃiilor în ALU.

În descrierea detaliată a setului de instrucŃiuni al unui microprocesor, se indică pentru fiecare instrucŃiune dacă şi care anume dintre biŃii de stare sunt modificaŃi, şi cum, de către instrucŃiunea respectivă. Programatorii trebuie să cunoască aceste specificaŃii, la elaborarea programelor implementate. SemnificaŃia principalilor biŃi indicatori de stare întâlniŃi la majoritatea microprocesoarelor este prezentată în continuare.

Carry (CF) Indicatorul de transport: este utilizat pentru a indica depăşirea preciziei de lucru a microprocesorului, în urma efectuării unei operaŃii aritmetice (de exemplu, adunarea a două numere a căror sumă depăşeşte dimensiunea cuvântului de date al procesorului). Rezultatul se va memora în aceste cazuri în acumulator, cu excepŃia bitului cel mai semnificativ, memorat în indicatorul de transport (carry), utilizat astfel ca o extensie a acumulatorului. Acest bit poate fi astfel ulterior testat, sau utilizat în operaŃii ulterioare ale ALU. Avem:

- CF = 1, dacă rezultatul ultimei operaŃii în ALU a generat transport; - CF = 0, dacă rezultatul ultimei operaŃii în ALU nu a generat transport.

Carry poate fi iniŃializat uzual (0 sau 1), prin instrucŃiuni specifice ale microprocesorului. Valoarea sa se va modifica însă, în cursul efectuării de operaŃii în ALU.

20

Zero ZF Indicatorul de zero: este utilizat pentru a indica faptul că rezultatul unei operaŃii aritmetice sau logice a fost 0 sau nu. Acest bit nu poate fi iniŃializat direct printr-o instrucŃiune specifică. Avem:

- ZF = 1 , dacă s-a obŃinut rezultat nul la ultima operaŃie aritmetică sau logică;

- ZF = 0, dacă nu s-a obŃinut rezultat nul la ultima operaŃie aritmetică sau logică.

Paritate (PF) Indicatorul de paritate este utilizat pentru a indica tipul sumei modulo 2 a rezultatului ultimei operaŃii efectuate în ALU. Astfel

- PF = 0, dacă rezultatul are un număr impar de biŃi cu valoarea l;

- PF = 1, dacă rezultatul are un număr par de biŃi cu valoarea l.

Acest bit este uzual testat în cazul programelor de verificare a corectitudinii informaŃiilor codificate, sau la transmisii de date.

Semn (SF) Indicatorul de semn este utilizat pentru a indica semnul rezultatului unei operaŃii efectuate în ALU. Astfel:

- SF = 0, dacă s-a obŃinut un rezultat pozitiv (sau zero};

- SF = 1, dacă s-a obŃinut un rezultat negativ.

Semnul rezultatului este decis în funcŃie de valoarea celui mai semnificativ bit al său, considerat ca bit de semn, numerele fiind tratate ca numere reprezentate în complement faŃă de doi.

Există şi alŃi biŃi de stare specifici, cum ar fi indicatorul de activare a întreruperilor (IF), de apariŃie a depăşirilor de calcul (overflow – OF), etc., numărul, tipul şi semnificaŃia lor fiind diferite de la microprocesor la microprocesor. În paragrafele ce urmează se va prezenta descrierea indicatorilor de condiŃii ai microprocesorului INTEL 8086.

În esenŃă, indicatorii de stare vor permite luarea unei decizii în funcŃie de valoarea lor, permiŃând de exemplu, efectuarea unui salt (ramificare) în program (trecerea, din punctul în care era programul în acel moment, la o altă adresă - nu cea următoare - prin modificarea explicită a conŃinutului registrului de adresă al programului (PC), se numeşte salt în program), la o zonă unde se va trata adecvat situaŃia respectivă.

FuncŃia de intrare/ieşire

În general, după cum s-a menŃionat, secŃiunea de intrare/ieşire este prezentă în mică măsură la nivelul cipului microprocesor, cu excepŃia hardware-ului necesar pentru izolarea cipului de exterior. Uzual, operaŃiile de intrare/ieşire se fac tot prin configurarea unei adrese pe magistrala de adrese, corelată cu generarea, de către secŃiunea de control, a semnalelor adecvate de intrare sau ieşire, permiŃând selectarea unică a unuia dintre elementele de intrare/ieşire (generic denumite porturi ale sistemului) şi transferul în sensul dorit de la/la microprocesor la/de la port, a datelor, pe magistrala de date. (Portul poate fi un periferic, un convertor A/D sau D/A etc.).