Sunteți pe pagina 1din 135

Sisteme cu microprocesoare

Seria 2009-2010 Prof. Dr. Ing. Traian C. IONESCU


1

Date de contact

Profesor: Email:

Asistenti:

Laborator: Website:

Traian C. IONESCU tcion@rdsmail.ro traian.ionescu@siveco.ro traiancionescu@gmail.com Radu PIETRARU Andrei HOHAN Bogdan CARSTOIU ED 312 http://smp.aii.pub.ro/
2

Capitolul 1
Introducere

Pozitia in cadrul planului de invatamant

Componenta esentiala a programei de computer engineering Accentul este pus mai putin pe analiza si formule si mai mult pe intelegerea proiectarii si a functionarii unui sistem real. Plan invatamant Automatica
4

Obiectivele cursului
Obiective generale: Obtinerea de experienta in abordarea subiectelor tehnice complexe si capacitatea de a digera informatii tehnice detaliate intr-un interval de timp rezonabil de scurt

Dezvoltarea abilitatii de a combina creativitatea cu abordarea metodica a proiectarii hardware si software pentru a minimiza numarul de erori Dezvoltarea atentiei catre detalii la implementarea proiectarii Obtinerea de experienta in aplicarea metodelor de rezolvare a problemelor pentru a gasi solutii ce satisfac un set de constrangeri, debugging hardware/software
5

Obiectivele cursului
Obiective specifice: Intelegerea legaturii dintre conceptele logicii digitale de nivel jos si conceptele arhitecturii de nivel inalt

Intelegerea executiei unei instructiuni ciclu cu ciclu Intelegerea conceptelor precum: magistrala, memorie, interfatarea acestora, intreruperi (..)

Evaluarea cunostintelor

Structura cursului: 14 sapt x 3 ore/sapt = 42 ore curs 14 sapt x 2 ore/sapt = 28 ore aplicatii Metoda de evaluare a cunostintelor: evaluarea continua Evaluarea activitatii la curs: 2 examene scrise, (sapt. 8, sesiunea de vara) Evaluarea activitatii aplicative: 4 lucrari (2 teme de programare, 1 tema de cercetare + 1 tema de proiectare hardware)
7

Evaluarea cunostintelor (2)

Baza materiala:
25 PCuri conectate la Internet (ED308) 12 PCuri conectate la Internet (ED312) 12 platforme cu 8051 12 platforme cu 80386 (ED312)

Materiale elaborate in anii anteriori Note de curs, disponibile pe site

Evaluarea cunostintelor (3)

Probele de examen:
Saptamana 8: 3 subiecte + 1 problema, pondere 40 % din nota la examen conditie de promovare: minimum 5 Sesiunea de vara: 3 subiecte + 1 problema, pondere 60 % din nota la examen Conditie de promovare: minimum 5 Timp de elaborare a raspunsurilor: 150 min
9

Evaluarea cunostintelor (4)

Aplicatii:
Cele 4 teme, notate de la 0 la 10, suma minima pentru promovare 28

Ponderea in evaluarea aplicatiilor 50 %


Proiect, notat de la 0 la 10, nota minima 5 Ponderea in evaluarea aplicatiilor 50 % Programa Laborator SMP

10

Evaluarea cunostintelor (5)


Ponderea examenelor: 60% Ponderea aplicatiilor: 40 % Bonus de prezenta: 1 punct (pentru participare la minimum 10 cursuri)

11

Bibliografie
www.cpu-world.com/Arch/8085.html www.ece.ncsu.edu/research/cas/ma www.cpu-world.com/Arch/8086.html www.penram.com/Microprocessor/Mic roprocessor-Architecure.asp www.intel.com

12

Principalele capitole
1.

Introducere (3 ore)
Pozitia in cadrul planului de invatamant Obiectivele cursului Cerinte Evolutia microprocesoarelor

2.

Principalele caracteristici arhitecturale ale microprocesoarelor (6 ore)


Structuri de date Mecanisme de stiva Moduri de adresare Intreruperi Ierarhizarea memoriei
13

Principalele capitole (2)


3.

Multiprogramming si multitasking (3 ore)


Multiprogramming Excludere mutuala Semafoare. Regiuni critice

4.

Microprocesorul 8086 (3 ore)


Arhitectura Structuri de date Registre Segmentarea memoriei
14

Principalele capitole (3)


5.

Interfata intre microprocesor si lumea externa (12 ore) Magistrala Memorie, ierarhizare Porturi I/O Tratarea variabilei timp Interfata cu tastatura si elemente de afisare Interfata cu lumea analogica Comunicatii seriale

15

Principalele capitole (4)


6.

Arhitectura avansata: Pentium (9 ore)


Metode avansate de gestiune a memoriei Segmentare. Paginare Cai de crestere a vitezei de executie a programelor Arhitectura pipeline Executie speculativa Structuri multi-core

7.

Studii de caz (3 ore)


Bancomat (ATM) Monitorizarea distribuirii agentului termic intr-un 16 cartier de locuinte

Evolutia Microprocesoarelor
Legea lui Moore
Gordon Moore 1965: numarul de tranzistoare de pe un chip se va dubla la fiecare doi ani

Legea lui Moore a alimentat o revolutie tehnologica, pe masura ce Intel a crescut exponential numarul de tranzistoare integrate in procesoarele sale pentru a spori performantele si a eficientiza consumul de energie.
17

Momente importante

1971: Microprocesorul 4004


Primul microprocesor Intel Folosit la calculatorul Busicom

1972: Microprocesorul 8008


De doua ori mai puternic decat 4004 Folosit la Mark-8 unul din primele home computers

1974: Microprocesorul 8080


Folosit pentru primul personal computer Altair costa 395 USD. S-au vandut zeci de milioane.
18

Momente importante

1978: Microprocesorul 8086-8088


Un moment de cotitura pentru IBM PC. Este procesorul care a propulsat compania Intel in topul Fortune 500.

1982: Microprocesorul 286


Initial cunoscut ca 80286, a fost primul procesor pe care putea rula tot software-ul scris pentru predecesorul sau. Caracteristica de baza: compatibilitatea cu versiunile anterioare. La 6 ani de la lansare, un numar de 15 milioane de computere foloseau procesorul 286.

1985: Mircroprocesorul Intel386


275000 tranzistoare, de 100 de ori mai multe decat 4004. Chip pe 32 de biti multitasking

19

Momente importante

1989: Intel486 DX CPU


Coprocesor matematic cresterea vitezei de calcul

1993: Intel Pentium


Incorporare usoara a datelor din lumea reala sunete, fotografii etc.

1995: Intel Pentium Pro


Destinat aplicatiilor pentru statii si servere pe 32 de biti Computer-aided design, calcule stiintifice Fiecare procesor Intel Pentium Pro contine un al doilea chip de memorie cache. Contine 5.5 milioane de tranzistoare. Unele procesoare au contacte cu pini si altele montate in asa numitele BGA (Ball Grid Array) 20

Momente importante

1997: Intel Pentium II


7.5 milioane de tranzistoare Tehnologie MMX pentru procesarea eficienta a datelor video, audio si gragice. Introdus in SEC Single Edge Contact Cartridge care incorporeaza un chip de memorie cache rapida. Utilizatorii pot edita si partaja fotografii, text, muzica, tranzitii de imagini in cadrul unui videoclip si apoi pot trimite aceste date pe Internet.

21

Momente importante

1998: Intel Pentium II Xeon


Destinat pentru niveluri de performanta necesare serverelor, potrivit strategiei Intel de a oferi procesoare destinate unor segmente de piata specifice. Folosit pentru statii si servere pe care ruleaza aplicatii de business consumatoare de resurse: servicii Internet, data warehousing, creare de continut digital, design. Sistemele bazate pe acest procesor pot cotine pana la 8 procesoare.
22

Momente importante

1999: Intel Celeron


Destinat segmentului de piata PC. Performante inalte la preturi rezonabile Excelent pentru gaming si software educational.

1999: Pentium III


70 de instructiuni noi 3-D, streaming audio, video. Proiectat pentru browsing Internet confortabil, realtime muzee online, magazine virtuale etc. 9.5 milioane de tranzistoare.

1999: Intel Pentium III Xeon


Performante suplimentare, ideal pentru aplicatii de eCommerce si pentru multiprocesoare (tehnologie cache avansata ce creste viteza de transmitere a 23 datelor de la magistrala la procesor).

Momente importante

2000: Intel Pentium 4


Videoclipuri TV transmise prin Internet Comunicare real-time de sunete, imagini si voce Randare de grafica 3D 42 milioane de tranzistoare Viteza de 1.5 GHz (fata de 4004 care avea viteza de 108 KHz). Daca viteza automobilelor ar fi avut aceeasi rata de crestere, distanta de la San Francisco la New York ar fi putut fi strabatuta in doar 13 secunde
24

Momente importante

2001: Intel Itanium


Primul din familia de procesoare pe 64 de biti de la Intel. Destinat statiilor si serverelor enterprise Arhitectura noua, bazata pe EPIC Explicitly Parallel Instruction Computing design technology. Performante inalte pentru aplicatii e-Commerce, tranzactii securizate, baze de date mari, calcule stiintifice complexe.
25

Momente importante

2003: Intel Pentium M


Intel Pentium M, Intel 855 si Intel Pro/Wireless 2100 sunt cele trei componente bazate pe tehnologia Intel Centrino ofera portabilitate, wireless LAN incorporat, performante mobile ridicate.

2006: Intel Core 2006: Pentium Dual-Core

26

Legea lui Moore

27

Dihotomia limbaj de nivel inalt-masina tinta (1)

Un mare volum din programele destinate microcalculatoarelor este scris prin utilizarea limbajelor de nivel inalt.

Cel mai bun mod de imbunatatire a performantelor microcalculatoarelor: cresterea eficientei de executie pentru astfel de limbaje.

Prapastie semantica intre modul in care limbajul de nivel inalt este vazut de catre programator si modul de implementare a acestui limbaj pe masina tinta.
28

Dihotomia limbaj de nivel inalt-masina tinta (2)

Memorie: In limbajele de nivel inalt memoria este privita drept constand dintr-un set de variabile carora li s-au asociat nume, set care nu reflecta relatii de tipul: vecinatatea variabilelor, pozitia lor relativa etc.

Dar: Masina fizica are memoria organizata ca o matrice liniara cu locatii de dimensiuni egale, fiecarei locatii asociindu-i-se o adresa.
29

Dihotomia limbaj de nivel inalt-masina tinta (3)


Structuri de date Limbajele de nivel inalt folosesc structuri de date multidimensionale (de exemplu matrice cu mai multi indici), in timp ce organizarea memoriei unei masini reale poate manipula structuri de date doar cu o singura dimensiune. Apel de proceduri In unele limbaje de nivel inalt, programarea structurata necesita o multitudine de apeluri de proceduri care implica:
transfer de parametri alocare dinamica a memoriei.
30

Diferenta Cod - Date

Limbajele de nivel inalt fac diferentierea neta intre cod si date, diferentiere inexistenta in memoria masinii reale.
Alte caracteristici ale masinii care nu sunt luate in considerare de limbajele de nivel inalt: registrele UCP aritmetica binara intreruperi.
31

Clasificari Arhitecturale

(1)

Diferentele intre clasele de arhitecturi constau in volumul de prelucrari efectuate prin program si prin intermediul echipamentului la executia unui program scris in limbaj de nivel inalt.

32

Clasificari Arhitecturale

(2)

Unele masini necesita volume importante de translatari din limbajul de nivel inalt in cel apropiat masinii, ca urmare a nivelului foarte scazut al limbajului masina, caz in care un mare volum de prelucrari se efectueaza de catre software. Alte masini, avand functii de nivel inalt implementate in arhitecturi hardware, necesita un proces de compilare mai simplu.
33

Clasificari arhitecturale (3)

34

Arhitecturi cu Executie Directa

Capabile sa execute direct programe in limbaje de nivel inalt Avantaje:


gradul ridicat de interactiune cu programatorul absenta timpului de compilare reprezentarea programului cu un singur fisier (doar codul sursa, fara fisier obiect sau executabil).

Dezavantaje:
dificultatile de depanare numarul erorilor sintactice detectate la executie este mic este necesara verificarea sintactica a tuturor programelor, chiar si a celor corecte masina nu poate executa decat programe scrise in limbajul propriu

Nu exista exemple de microprocesoare din aceasta categorie.


!
35

Arhitecturi Reduse

Orientate catre imbunatatirea performantelor la rularea programelor de nivel inalt. Implementarea directa in hardware a unui mic numar de instructiuni simple, a caror executie este optimizata. Principalele dificultati sunt solutionate la nivelul compilatorului. Procesoare cu set redus de instructiuni (RISC- Reduced Instruction Set Computers) 36

Arhitecturi Orientate catre Limbaj

Trasatura distinctiva: utilizarea unor


moduri speciale de adresare instructiuni speciale facilitand implementarea unor operatii specifice limbajelor de nivel inalt, cum este accesul la structuri complexe de date.

Rezultatul:
simplificarea procesului de compilare.

Avantaj:
posibilitatea de implementare directa in hardware a unor functii specifice limbajelor de nivel inalt.

Complexitatea crescanda a procesorului poate indeparta rezultatul proiectarii de situatia optima, reducerea vitezei de executie a instructiunilor simple.
37

Arhitecturi Corelate cu Limbajul

Realizeaza o corespondenta biunivoca intre limbajul de nivel inalt si codul masina.


Compilatorul unui astfel de calculator devine similar cu un asamblor. Diferenta intre tipurile A (translatare software) si B (translatare hardware):
mai mare viteza de translatare pentru varianta B mai redusa complexitatea hardware pentru 38 varianta A

Arhitectura si Eficienta de Executie

Caracteristicile arhitecturale cu cele mai puternice influente asupra eficientei de executie a programelor scrise in limbaje de nivel inalt:
tipurile de date modurile de adresare setul de instructiuni

39

Alocarea Memoriei in Limbaje de Nivel Inalt (1)

Spatiul de memorie ocupat de un program este divizat in doua sectiuni principale:


o sectiune read-only - contine codul si constantele o sectiune read-write - stocheaza toate variabilele declarate si auxiliare utilizate de catre program

Zona de date poate fi subdivizata in:


zona pentru stiva (stack), zona pentru variabilele declarate zona cu acces aleatoriu (heap - gramada neorganizata), folosita pentru variabilele create dinamic

40

Alocarea Memoriei in Limbaje de Nivel Inalt (2)


Memorie alocata programului principal Memorie alocata programului principal

Cadru Procedura A

41

Alocarea Memoriei in Limbaje de Nivel Inalt (3)

Programarea recursiva impune ca fiecarei apelari de proceduri sa i se ofere propria copie de parametri si variabile definite in cadrul procedurii. In felul acesta, apelarea procedurii rezulta in alocarea unei noi regiuni de memorie, numita cadru (frame), care contine variabilele locale ale lui A, parametrii sai, adresa de revenire si orice alta informatie necesara adresarii variabilelor exterioare lui A, dar vizibile din procedura A.

42

Alocarea Memoriei in Limbaje de Nivel Inalt (4)


Display field
Frame pointer niv. 0 Frame pointer niv. 1

Structura posibila a unui nou cadru alocat in memorie

Registrul 0

Frame pointer niv. i-1

Register Save Area


Registrul n-1

Parametri procedura

Variabile locale

Variabile auxiliare Adresa revenire

43

Alocarea Memoriei in Limbaje de Nivel Inalt (5)


Cadru program principal Cadru Procedura A

Cadru Procedura B

Cadru Procedura C

44

Tipuri de Date (1)

Manipularea datelor - scopul principal al unui program Toate limbajele de nivel inalt ofera metode flexibile de definire a structurilor complexe de date In majoritatea cazurilor, programul este in buna masura definit de indata ce s-au proiectat structurile de date ce urmeaza a fi manipulate.
45

Tipuri de Date (2)

Principial, toate microprocesoarele sunt capabile a manipula cu rezonabila eficienta structurile de date definite in limbajele de nivel inalt, dar prapastia semantica despre care s-a vorbit mai inainte conduce la mari deosebiri intre solutiile practice adoptate. Un microprocesor ofera suport pentru un anumit tip de date doar daca este capabil a manipula operanzi apartinind acelui tip. Pentru asigurarea suportului pentru tipuri de date diverse doua caracteristici ale microprocesorului sunt de regula intrebuintate:
a) instructiuni care executa operatii asupra datelor reprezentate conform formatului asociat tipului considerat; moduri de adresare care permit accesul simplu la operanzi de tipul considerat
46

b)

Lungimea Cuvantului (1)

Dimensiunea cuvantului de date - unul dintre factorii majori care influenteaza


performantele calitatile functionale

ale unui microprocesor.

Importanta acestor parametri este demonstrata de faptul ca un criteriu tipic de clasificare a microprocesoarelor se bazeaza pe lungimea cuvantului. Se vorbeste de microprocesor de 8 biti, 16 biti, 32 biti, 64 biti, numerele 8, 16, 32, 64 referindu-se la lungimea cuvantului de date manipulat.
47

Lungimea Cuvantului (2)

Doua posibile definitii sunt:


lungimea cuvantului este data de numarul maxim de biti care pot fi transferati intre CPU si memorie intr-un singur ciclu lungimea cuvantului este determinata de dimensiunea maxima a operandului care poate fi manipulat de catre unitatea aritmetica-logica (ALU) a CPU

Prima definitie se refera la traseul extern al datelor A doua se refera la traseul intern
48

Lungimea Cuvantului (3)

Adesea, lungimea cuvantului indica, intr-o anumita masura, performanta.


Este mai potrivit a se discuta despre doua dimensiuni de cuvant de date:
a celui intern (influenteaza viteza de prelucrare a operanzilor instructiunii) a celui extern (influenteaza timpul global de acces la memorie pentru extragerea instructiunilor si vehicularea operanzilor)
49

Lungimea Cuvantului (4)

Cresterea dimensiunii operandului nu este singura consecinta a disponibilitatii unei dimensiuni mai mari a cuvantului. Posibilitatea de a manipula seturi mai mari de biti conduce, de obicei, la introducerea de noi tipuri de instructiuni.
Microprocesoarele cu dimensiuni mai mari de cuvant nu sunt numai mai rapide decit cele cu cuvinte de dimensiuni mai mici, dar ele tind sa posede un mai bogat repertoriu de tipuri de date, sprijinite cu seturi de instructiuni si moduri de adresare adecvate.

50

Organizarea Memoriei (1)

Toate microprocesoarele au un subsistem al memoriei organizat ca o matrice liniara de elemente de baza de memorare, fiecare din ele asociat cu o anumita adresa. Dimensiunea elementului de baza de memorare este rezultatul compromisului intre doua cerinte disjuncte: a)reprezentarea compacta a datelor b)acces eficient la datele stocate in memorie

Adresarea bitilor

Necesitatea unei reprezentari compacte a datelor conduce la selectarea unei dimensiuni mici a elementului de baza de memorare.

51

Organizarea Memoriei (2)

Situatia extrema: Bitul - cea mai mica unitate adresabila a memoriei. Penalizari asupra performantei si costului (necesitatea ca bitii sa ajunga la unitatea centrala pe linii fizice diferite)

Alternativa: emularea adresarii la nivel de bit pe o masina care utilizeaza elemente de baza de memorare de dimensiuni mai mari (mecanism de deplasare - mascare [barrel-shifter] care extrage campul necesar intr-un singur ciclu) Dezavantajele adresarii la nivel de bit au determinat proiectantii de microprocesoare sa utilizeze elemente 52 de baza de memorie de dimensiuni mai mari.

Masini cu Lungime Fixa a Cuvantului (1)

Se accepta ca dimensiunea celei mai mici entitati de memorie adresabila sa fie cuvantul de 8 biti (octetul) Toate adresele emise de catre CPU sunt adrese de octeti.

Pentru accesul la date cu dimensiunea mai mare de un octet, CPU emite adresa primului octet, insotita de semnale de comanda indicand dimensiunea datelor, dimensiune care poate merge pana la cea a cuvantului de date extern.
Pentru microprocesoarele uzuale, sunt accesibile 53 intr-un singur ciclu de memorie:

Masini cu Lungime Fixa a Cuvantului

(2)

Adresarea la nivel de octet si organizarea cu lungime fixa a cuvantului nu pot solutiona problema accesului la date ce traverseaza frontiera unui cuvant.

Necesitatea alinierii in vederea minimizarii timpului de acces la datele din memorie

54

Masini cu Lungime Fixa a Cuvantului (3)


00001000H 00001004H 00001008H 0000100CH 00001010H 00001014H 00001018H 0000101CH 00001020H 00001024H 00001028H 0000102CH 00001030H 00001034H 00001038H 0000103CH 00001040H 00001044H

Cuvinte aliniate
Cuvant nealiniat Dword aliniat Dwords nealiniate

Biti si Campuri de Biti

(1)

Bitul - cea mai naturala reprezentare interna a variabilelor booleene, but is it practical?

Camp de biti (bit field) - sir contiguu de biti in memorie, fara a exista vreo interpretare speciala asociata continutului sirului
Masinile care ofera suport pentru acest tip de date dispun de instructiuni:

pentru copierea unui camp de biti intr-o locatie de memorie sau intr-un registru de aliniere a campului la una din frontierele locatiei in care acesta se afla de extindere, atunci cand este cazul, a semnului valorii asociate 56 campului de biti.

Biti si Campuri de Biti

(2)

Pentru a defini un camp de biti sunt necesare trei informatii:


a)A - adresa octetului;
b)P - offsetul bitului (primul al campului); c)S - lungimea campului
57

Intregi cu Semn si fara Semn

Doua forme:
reprezentarea in complement fata de doi
reprezentarea binara pura

58

Caractere

Cele mai importante tipuri de date manipulate de programe sunt (INCA!) texte si numere. Codul ASCII (American Standard Code for Communication Interchange) Sirul de caractere (string), echivalent cu un vector de octeti Lungimea sirului poate fi fixa sau variabila Cand este variabila se impune utilizarea unui caracter special pentru a indica terminarea sirului sau asocierea cu un contor indicand numarul de caractere al sirului. Dimensiunea sirurilor nu permite pastrarea lor in registrele unitatii centrale de prelucrare manipulate 59 in memorie.

Numere in Format BCD (Binar Codificat Zecimal)


Ce este BCD?

BCD (de la binary - coded decimal) = numere zecimale in codificare binara. Stocarea in memorie a formatelor BCD in doua formate:
BCD impachetat (packed BCD) BCD neimpachetat (unpacked BCD).
Packed BCD Hi 1001 0111 Lo 0001 0011 Continu t 19 37 Unpacked BCD Hi 0000 0000 0000 Lo 0001 1001 0011 Contin ut 1 9 3

0000

0111

60

Matrice (1)
Microprocesoarele nu ofera instructiuni pentru manipularea datelor structurate in matrice (arrays), insa ele poseda moduri de adresare create special in scopul inlesnirii prelucrarii acestor structuri de date. (0,0) (1,0)

(2,0) (0,1) (1,1) (2,1) (0,2) (1,2) (2,2)

0,0 1,0 2,0

0,1 1,1 2,1

0,2 1,2 2,2

61

Matrice (2)

Alocarea din figura se poate generaliza. Se considera o matrice cu n indici. Adresa a a elementului matricei caracterizat de setul de indici d0,d1,...,dn-1 este data de

a b s( di mx 1 d n1 )
i 0 x i

n2

n2

Unde b - adresa primului octet din zona de memorie alocata matricii. s - dimensiunea in octeti a elementului matricii. mi - numarul de valori posibile ale indicelui i (altfel spus : mi-1 este cea mai mare valoare pe care o poate lua indicele 62 i).

Matrice (3)

Evaluarea adresei unui element se simplifica in masura considerabila cand se considera o matrice unidimensionala de elemente standard, caci numarul de inmultiri se reduce la una singura, iar unul din factori, dimensiunea in octeti a elementului, este o putere a lui 2 (0,1,2,3,). In consecinta, evaluarea adresei de acces la un element se reduce la o deplasare si o adunare. Unele microprocesoare poseda moduri speciale de adresare care permit efectuarea operatiilor descrise mai sus.

63

Matrice (4)

La o prima examinare, evaluarea parantezei din expresia lui a este o operatie complicata, cel putin din punctul de vedere al programarii. Evaluarea se poate face in maniera recursiva : k0 = 0 ki = ki-1 * mi-1 + di-1 , i = 1,2,...,n Se poate observa ca valoarea lui ki reprezinta numarul de elemente precedente celui adresat. Se mai observa ca valoarea maxima a indicelui di-1 este mi-1 - 1. Cunoasterea valorilor ki-1,mi-1,di-1 necesare pasului i al iteratiei permite si testarea validitatii indicelui di-1. evaluarea lui ki presupune testarea lui di-1 si apoi evaluarea propriu-zisa, fapt folosit de unele microprocesoare pentru a implementa, intr-o singura instructiune , testarea incadrarii in gama corecta a indicelui si evaluarea lui ki.

64

Inregistrari

Inregistrare (record) = structura de date compusa din variabile heterogene.

65

Moduri de Adresare

Instrument principal pentru a reprezenta in memoria masinii imaginea datelor asa cum este aceasta vazuta de programatorul in limbaj de nivel inalt. Permit construirea si utilizarea de structuri complexe, multidimensionale de date, in timp ce echipamentul poate trata doar matrice lineare cu elemente de dimensiune fixa. 66

Elemente de Baza Privind Modurile de Adresare

Oricare mod se obtine ca o combinatie intre un numar relativ mic de obiecte si functii de baza. Obiectele sunt constituite din registre deplasamente (displacement) offseturi.

Functiile fundamentale sunt adunarea deplasarea (shift) adresarea indirecta (indirection).

67

Registre

Situate in
unitatea centrala de prelucrare (CPU) unitatea de aritmetica in virgula mobila (FPU) unitatea de gestiune a memoriei (MMU)

Principalele functii ale registrelor:


registru operand (operand register): continutul registrului este insusi operandul la care se face referire
registru adresa (address register): continutul registrului este adresa operandului la care se face referire registru baza (base register): registrul contine o adresa care, pentru obtinerea adresei complete a operandului, se va utiliza in conjunctie cu continutul unui alt registru 68 sau al unui camp imediat al instructiunii.

Camp Imediat (Immediate Field)

= camp, adesea optional, al unei instructiuni, dedicat pastrarii unei informatii ce se va utiliza in determinarea adresei la care se afla operandul in discutie. Utilizari ale campului imediat: operand imediat (immediate operand): continutul campului imediat este chiar operandul la care se face referire; adresa imediata (immediate address): continutul campului imediat constituie adresa operandului la care se face referire; offset/deplasament: campul imediat contine un intreg (cu semn pentru offset), care se utilizeaza in conjunctie cu continutul unui registru pentru a produce 69 adresa operandului la care se face referire.

Moduri de Adresare

(2)

Adunarea
Toate modurile de adresare, cu exceptia celor mai simple, necesita adunarea a doua sau mai multe valori. Caz particular: incrementarea/decrementarea.

Adresarea indirecta
Functie al carei argument, de regula rezultat al unor calcule, foloseste pentru a determina - prin adresarea memoriei - operandul la care se face referire. Modurile complexe de adresare pot folosi de mai multe ori functia de adresare indirecta pentru a obtine adresa finala a operandului.

Deplasarea
Utilizata la executarea operatiei de indexare. Indexarea produce offsetul unui element din matricea liniara, avand ca baza de plecare indicii elementului.
70

Notatii

g - numele sau numarul unui registru, accesibil programatorului in limbaj de asamblare ; M[x] - functia de adresare indirecta, aplicata valorii x. Rezultatul ei este informatia memorata la adresa x in memoria principala ; G[g] - valoarea stocata in registrul g a.sh.b - valoarea rezultata din deplasarea lui a la stanga cu b pozitii binare ; d - valoarea deplasamentului, memorata intr-un camp al instructiunii.
71

Adresare Directa prin Registru (Register Operand Addressing)

Cel mai simplu mod de adresare este cel care nu necesita aplicarea nici uneia din functiile de baza pentru a obtine valoarea operandului. In aceasta clasa singurul mod de adresare este cel direct prin registru

Caracterizare:
G [g]
72

Adresare Indirecta prin Registru (Register Indirect Addressing)

Caracterizare:
M [G [g]]

Adresarea indirecta prin registru este folositoare pentru accesul la elementele structurilor complexe de date, altfel inaccesibile doar cu unicul mod de adresare permis de masina. Calculul adresei, disponibila - in final - in registrul in discutie , necesita o secventa de instructiuni al caror rezultat este adresa elementului solicitat.
73

Adresare Indirecta prin Registru (Register Indirect Addressing)


Memorie Registre

G[g]

M[G[g]]
74

Adresare Indirecta cu Autoincrementare/Autodecrementare (Autoincrement / Autodecrement Indirect Addressing)

Baza modurilor de adresare implementate in oricare calculator.


Mod similar cu adresarea indirecta prin registru, intrucat registrul g, specificat explicit sau implicit in instructiune, contine adresa operandului. In plus fata de modul precedent, continutul registrului este incrementat/decrementat cu o cantitate determinata de lungimea operandului la care se realizeaza accesul (1, 2, 4 sau 8). Doua moduri de adresare : cu postincrementare si cu predecrementare. 75

Postincrementare
Memorie

Caracterizare: M [G [g]] urmata de incrementarea cu N : G [g]: = G [g] + N


Registre
G[g]

g (N)

+
G[g]

M[G[g]] G[g] : = G[g] + N


76

Predecrementare
Memorie

Caracterizare: G [g] : = G [g] - N urmata de adresarea indirecta: M [G [g]]


Registre
G[g]

g (N)

G[g]-N

G[g] : = G[g] - N M[G[g]]


77

Adresare Indirecta cu Autoincrementare / Autodecrementare (Autoincrement / Autodecrement Indirect Addressing)

Acest mod se poate obtine prin aplicarea unei adresari indirecte suplimentare Caracterizare:
M [M [G [g]]]

urmata de postincrementarea cu N a continutului registrului g :


G [g] := G [g] + N

In cazul particular in care adresarea indirecta cu postincrementare foloseste ca registru contorul programului se obtine adresarea directa a operandului, mod de adresare existent in toate microprocesoarele.

78

Adresarea Directa (1)


Adresa operandului este memorata ca un camp al instructiunii. Dupa citirea codului instructiunii (realizata prin modul de adresare cu postincrementare) contorul programului indica urmatorul camp al instructiunii. Adresarea indirecta cu postincrementare permite accesul la operand si actualizarea contorului programului. Intrucat microprocesoarele de 8 si 16 biti au lungimea cuvintului de adresa mai mare decat lungimea cuvintului de date, sunt necesare mai multe cicluri de acces la memorie pentru citirea adresei operandului. Adresarea directa specifica adresa operandului ca parte componenta a instructiunii, care se stabileste in momentul compilarii si nu mai poate fi schimbata in timpul executiei 79 programului.

Adresarea Directa (2)

Limbajele de nivel inalt care folosesc recursivitatea nu pot folosi adresarea directa ca urmare a dinamicii adreselor in procesul de recursivitate.
Cu exceptia variabilelor globale, celelalte variabile au adrese alocate in timpul rularii pentru programele recursive, adrese care nu se pot insera in codul instructiunii. Utilizarea adreselor stocate in codul instructiunii este legata de operatiile de salt sau apeluri de subrutine , deci nu de specificarea de variabile propriu - zise.
80

Adresarea Indirecta Bazata si cu Deplasament (Base Displacement Indirect Addressing)

S-a denumit registru baza registrul al carui continut se aduna cu cel al unui obiect manipulat de catre modul de adresare, cu scopul determinarii adresei operandului.
Modul de adresare bazat si cu deplasament (base displacement indirect addressing) calculeaza adresa operandului prin insumarea continutului registrului baza specificat cu valoarea unui camp al instructiunii, numit deplasament
81

Adresarea Indirecta Bazata si cu Deplasament (Base Displacement Indirect Addressing)


Registre
G[g]

Memorie

g (N)

G[g]

M[G[g]]

G[g] : = G[g] - N M[M[G[g]]]


82

Adresarea Dublu Indirecta Bazata si cu Deplasament (Base Displacement Indirect Indirect Addressing)

M [ M[G[g]+d]]
Utilizabil pentru adresarea variabilelor la care referirea se face prin intermediul unui indicator.

Registrul baza este intotdeauna utilizat pentru a indica adresa de inceput a cadrului -> deplasamentul corespunde pozitiei indicatorului variabil in interiorul cadrului. Dubla adresare indirecta este folosita intai pentru a obtine valoarea indicatorului si, apoi, valoarea operandului propriu-zis.
O alta aplicatie tipica a modului de adresare descris mai sus este realizarea accesului la parametrii procedurii transferate prin referire. In astfel de aplicatii in interiorul procedurii se 83 stocheaza nu valoarea ci adresa parametrului.

Adresarea Indirecta Bazata Indexata (Base Indexed Indirect Addressing)


M[ G[g1] + G[g2].Sh.N]

Cele mai simple structuri cu care opereaza limbajele de nivel inalt sunt matricele liniare de scalari.
Scalarii se reprezinta prin campuri de memorie de 8, 16, 32 sau 64 biti. Calcularea deplasamentului unui element in cadrul matricei liniare se obtine prin deplasarea la stanga a numarului ce reprezinta indicele (indexul) unui element cu 0, 1, 2 sau, respectiv 3 pozitii binare, presupunand ca valoarea initiala a indicelui este 0. Modul de adresare indirecta indexata bazata este folosit pentru accesul la un element al unei matrice unidimensionale de scalari, stocata intr-o zona de memorie a carei adresa de inceput este continuta in registrul baza.

84

Adresarea Indirecta Indexata cu Postincrementare (Postincrement Indexed Indirect Addressing)

M[ G[g1] + G[g2].sh.N], G[g1] := G[g1] + N

Se obtine din modul de adresare indirecta indexata bazata prin adaugarea unei operatii de incrementare a continutului unuia din cele doua registre, operatie efectuata dupa extragerea operandului.

Deci: continutul registrului g2 se deplaseaza la stanga cu 0, 1 sau 2 pozitii binare; rezultatul se aduna cu continutul registrului g1, obtinindu-se adresa operandului; in fine, continutul registrului g1 se incrementeaza cu valoarea N1, egala cu 1, 2, 4 sau, respectiv, 8.

85

Adresare Indirecta Indexata cu Predecrementare (Predecremenet Indexed Indirect Addressing)

G [g1] := G [g1] - N M [G [g1] + G [g2].sh.N]

86

Adresarea Indirecta Indexata Bazata si cu Deplasament (Base Displacement Indirect Addressing)


M [ G[g1] + d + G[g2]. sh.N ] Adresarea indirecta indexata bazata si cu deplasament este o metoda mai buna de acces la elementele unei matrice unidimensionale de scalari, atat fata de metoda de adresare indirecta bazata cu deplasament, cat si fata de cea de adresare indirecta indexata bazata. Daca g1 contine indicatorul cadrului local , indicele elementului matricei este continut de g2, iar d indica deplasamentul in interiorul cadrului al adresei de inceput a zonei de memorie ce contine elementele matricei, modul de adresare indirecta indexata bazata si cu deplasament permite accesul intr-o singura instructiune al oricarui element al matricei locale unidimensionale de scalari. 87

Adresarea Indirecta Indexata Indirect cu Postincrementare (Postincrement Indirect Indexed Indirect Addressing)

M [ G[g1] + G[g2].sh.N1 ] G [g1] : = G [g1] + N Se folosesc doua registre : registrul baza g1 si registrul index g2. Continutul lui g1 permite adresarea si citirea continutului unei locatii de memorie. Acest continut se aduna la rezultatul deplasarii spre stanga cu N2 pozitii binare a continutului registrului g2 ( N2 = 0,1 sau 2). In felul acesta se obtine adresa operandului. In final , continutul registrului g1 este incrementat cu N1 unitati ; valoarea lui N1 depinde de dimensiunea adresei. Evident , nu exista legatura intre N1 si N2. 88

Adresarea Indirecta Indexata Indirect Bazata cu Deplasament (Base Displacement Indirect Indexed Indirect Addressing)

M [ M [ G[g1] + d ] + G [g2].sh. N ]

89

Adresarea Indirecta cu Deplasament Indirect Bazata si cu Deplasament (Base Displacement Indirect Displacement Indirect Addressing)

M [ M [G[g] + d1 ] + d2 ] Permite accesul intr-o singura instructiune la scalari nelocali. Indicatorul cadrului local este incarcat in g. d1 - deplasamentul ( in cadrul campului de afisare al cadrului curent ) indicatorului spre cadrul in care se afla variabila la care se face referire. d2 - deplasamentul in interiorul cadrului a scalarului referit. Un alt fel de utilizare permite accesul la un camp al unei inregistrari locale la care referirea se face cu ajutorul unui indicator. In acest caz d1 este deplasamentul indicatorului in interiorul cadrului, iar d2 este deplasamentul (fata de inceputul zonei ce contine inregistrarea, inceput specificat prin indicatorul obtinut 90 prin M [ G[g] + d1]]) al campului la care se face referire.

Adresare Indirecta Indexata cu Deplasament Indirect Bazata si cu Deplasament (Base Displacement Indirect Displacement Indexed Indirect Addressing)

M [ M [ G[g1] + d1 ] + d2 + G[g2].sh.N ] Permite accesul la matrice unidimensionale nelocale de scalari , fapt datorat adaugarii indexarii la modul de adresare indirecta cu deplasament indirect bazata si cu deplasament. In g1 se incarca indicatorul cadrului local. d1 - deplasamentul indicatorului (din campul de afisare ) catre cadrul ce contine matricea de interes.

d2 - deplasamentul in cadrul de interes al inceputului zonei de memorie ce contine matricea


91

g2 contine indicele elementului la care se face referire.

Alte Caracteristici Arhitecturale ale Microprocesoarelor

Se vor considera caracteristici referitoare la:


Organizarea registrelor Intreruperi, Capcane si Mijloace de Depanare

92

Organizarea Registrelor (1)

Practica a demonstrat utilitatea registrelor in imbunatatirea performantelor microprocesoarelor Exemplu: arhitectura procesoarelor RISC, unde se intalnesc zeci sau chiar sute de registre in componenta CPU.

93

Organizarea Registrelor (2)

Efectele pozitive ale utilizarii registrelor:


operatiile asupra continutului registrelor sunt mai rapide decit cele asupra operanzilor continuti in memorie, pentru ca ALU are acces direct la registre lungimea medie a programelor scade

DAR

continuturile registrelor (asa numitul context) trebuie salvate la aparitia unei intreruperi sau capcane sau atunci cand, in regim de multiprogramare, are loc comutarea programului curent.
94

Organizarea Registrelor (3)


!

In consecinta, un set numeros de registre conduce la timpi mai lungi de tratare a intreruperii sau de planificare a taskurilor

95

Principalele Operatii ale U.C.P.


Transferul de date Evaluarea de expresii

Forma obisnuita de scriere a expresiilor, de exemplu :

( A + B ) * ( (C + D) / ( E - F ) )
nu se preteaza la evaluarea directa, deoarece ordinea in care se executa operatiile nu coincide cu ordinea de aparitie a 96 lor in secventa de operatii

Reverse Polish

Se foloseste notatia numita "reverse polish", conform careia un operator se aplica celor doi operanzi aflati imediat la stanga sa. Cu aceasta notatie, expresia din exemplul dat devine :

( A + B ) * ( (C + D) / ( E - F ) )

( (A B +) ((C D +)(E F -)/)*)


97

Evaluarea Expresiilor
B A A + AB+

D C AB+ C AB+ + CD + AB+

F E CD + AB+ E CD + AB+ EF CD + AB+ / (C D + ) (E F -) / AB+ * (A B + ) ((C D + ) (E F -) /) *

98

Masini cu Arhitectura de Tip Stiva (Stack Machines)(1)

Organizarea registrelor pentru a memora si gestiona automat partea superioara a stivei de evaluare. Instructiunile unei masini de tip stack machine ideala opereaza doar asupra registrelor ce contin varful stivei, cu exceptia instructiunilor de transfer de date, care citesc/inscriu registrul din varful stivei in/din memorie. Intrucat stiva poate creste peste capacitatea de memorare oferita de registre, partea inferioara a stivei este pastrata in memorie.
99

Masini cu Arhitectura de Tip Stiva (Stack Machines)(2)

existenta unor mecanisme pentru tratarea situatiilor cand varful stivei depaseste partea continuta in registre (register overflow: toate registrele incarcate, apare necesitatea inscrierii unui nou operand in stiva) sau

cand varful stivei coboara sub partea ce ar putea fi continuta in registre (register underflow: toate registrele vide, apare necesitatea citirii unui operand din stiva). 100

Masini cu Arhitectura de Tip Stiva (Stack Machines)(3)

Caz tipic: Coprocesoarele matematice !

101

Masini cu Acumulator

(1)

Majoritatea microprocesoarelor din prima generatie sunt masini cu acumulator, care foloseau un registru sau un mic numar de registre pentru prelucrarea datelor. Un registru, numit acumulator, contine unul din operanzi si, in acelasi timp, este folosit pentru a stoca rezultatul operatiei.
102

Masini cu Acumulator

(2)

Masinile cu acumulator poseda moduri simple de adresare, ceea ce nu ofera suficiente facilitati pentru limbajele de nivel inalt, care necesita determinarea in timpul rularii (dynamic allocation) a adreselor in memorie ale unor variabile. Functia de baza a acumulatorului: varf al stivei de evaluare, intrucat el constituie un operand al tuturor instructiunilor de prelucrare.

103

Masini cu Registre Index

(1)

Arhitecturile cu registre index au reprezentat un progres notabil fata de cele cu acumulator, intrucat permit evaluarea in timpul rularii a adreselor. Registrul index contine un numar care, prin adunarea cu o valoare continuta in codul instructiunii, permite determinarea adresei complete a operandului. O varianta o constituie registrele baza. De multe ori aceeasi masina contine ambele tipuri de registre. 104

Masini cu Registre Index

(2)

Adresa operandului se determina adunand continutul registrului baza cu cel al registrului index si cu un offset continut intr-un camp al instructiunii.
Introducerea registrului index scurteaza lungimea instructiunii deoarece, in locul unei adrese complete, corpul acesteia poate contine doar un offset exprimat pe un numar mai mic de biti, la care se adauga un mic camp pentru specificarea registrului index (in situatia ca microprocesorul dispune de mai multe astfel de registre). 105

Organizarea Registrelor de Uz General (1)

Numeroase microprocesoare dispun de un set de registre interne care se pot utiliza pentru toate functiile posibile, intrucat toate instructiunile pot folosi orice registru, indiferent de numele acestuia. Se spune ca aceste masini au un set ortogonal de instructiuni si un fisier de registre.

106

Organizarea Registrelor de Uz General (2)

Fiecarui registru ii poate reveni una din urmatoarele functii: acumulator: este utilizat pentru evaluarea de expresii; index/baza: orice registru poate fi desemnat ca registru baza sau registru index, utilizat la determinarea adresei operandului indicator al variabilei: registrul este folosit pentru memorarea adresei sau este utilizat pentru explorarea unei date de lungime mare, cum este sirul de caractere; indicator de stiva: registrul permite implementarea mecanismului de stiva; registru de comanda: registrul contine informatii de comanda a microprocesorului. Este cazul unui registru de uz general care contine de ex., contorul programului.
107

Intreruperi

Intreruperea este produsa de un eveniment exterior CPU, adesea de o operatie de intrare/iesire sau de expirarea unei perioade de timp. Efectul intreruperii: suspendarea executiei programului aflat in rulare transferarea controlului unei rutine dedicate tratarii intreruperii (interrupt handler - IH) IH are sarcina de a efectua actiunile cerute de evenimentul extern care a generat intreruperea
108

Tipuri de Intreruperi

intreruperi vectorizate;
intreruperi nemascabile; intreruperi nevectorizate; intreruperi cu relansare.

109

Intreruperi Vectorizate

Intrucat exista mai multe surse de intreruperi, selectarea rutinei de tratare presupune cunoasterea identitatii sursei intreruperii. Aceasta se realizeaza prin executia unui ciclu special, numit ciclu de confirmare a acceptarii cererii de intrerupere (interrupt acknowledge cycle). Se utilizeaza magistrala externa a microprocesorului.

Evenimentul care a generat intreruperea determina furnizarea catre CPU a unui cod de identificare. Acest cod, citit de catre microprocesor in ciclul de confirmare a acceptarii cererii de intrerupere, este utilizat de catre CPU ca index al unei matrici pastrate in memorie

In general intreruperile vectorizate sunt mascabile Primirea cererilor de intreruperi vectorizate se face printr-un singur semnal fizic, deoarece detaliile privind sursa cererii se obtin prin ciclul de confirmare a acceptarii cererii de 110 intrerupere

Intreruperi Nemascabile

O astfel de cerere de intrerupere suspenda executia programului aflat in rulaj indiferent de functia executata de acesta. Exemple tipice de evenimente:
tendinta de a iesi din parametrii de functionare normala a sursei de alimentare detectarea unor erori in operatiile in conjunctie cu memoria.

Semnalarea unei cereri de intrerupere nemascabila se face printr-un semnal de intrare distinct. Nu mai este necesara indicarea sursei unei astfel de intreruperi, intrucat ea se cunoaste.

111

Intreruperi Nevectorizate

Intreruperile nevectorizate se implementeaza prin acelasi mecanism ca si in cazul intreruperilor nemascabile, adica exista linii specializate de intrare pentru semnalarea cererilor. Spre deosebire de cele nemascabile, intreruperile nevectorizate pot fi dezactivate prin program
112

Intreruperi cu Relansare

Suspendarea executiei unui program se face, de regula, la terminarea instructiunii curente, pentru a se reduce la minimum posibil informatiile ce se salveaza in conjunctie cu programul intrerupt. Sunt cazuri cand intreruperea este declansata de o situatie care impiedica insasi terminarea executiei corecte a unei instructiuni, caz in care cererea de intrerupere trebuie servita inainte de terminarea instructiunii Solutie: proiectarea instructiunilor astfel incat sa fie posibila intotdeauna repornirea executiei lor, indiferent de momentul la care a survenit intreruperea.
113

Timpul de Latenta

Timpul cerut de servirea unei cereri de intrerupere depinde de operatiile necesitate de evenimentul extern care a cauzat intreruperea, precum si de intarzierea intre activarea cererii si inceputul activitatii rutinei de testare. Aceasta intirziere este o caracteristica microprocesorului si se numeste timp de latenta. Pentru a putea evalua timpul de latenta a unui microprocesor trebuie examinata secventa de operatii necesare pentru comutarea de la programul intrerupt la rutina de servire a intreruperii.
114

Prioritati

Ordinea de prioritate este, in general, urmatoarea:


1. intreruperi cu relansare - ele au prioritatea maxima, deoarece sunt asociate unor evenimente care nu pot astepta terminarea instructiunii curente pentru a fi servite; 2. intreruperi nemascabile - intreruperile din aceasta clasa sunt mai prioritare decit cele vectorizate sau nevectorizate, intrucat evenimentele care le determina necesita o servire rapida si intreruperile nu pot fi mascate; 3. intreruperi vectorizate; 4. intreruperi nevectorizate.
115

Circuit Programabil pentru Tratarea Intreruperilor


INTA/ INT D7-D0 Data Buffer

Interrupt Logic

CS/ RD/ WR/ A0 R/W Logic IRQ0 IRQ1

I S R

Priority Discrimi nator

I R R

CAS2-CAS0

Cascade Logic

IRQ7

SP/

PIC

I M R
116

INTA/ 8284 INTR INT 8086 ALE CLK Address latch 74F373
Magistrala de Adrese / Date
82C59A Master

Magistrala CAS

IR0 IR1
6

INT INT
IR2 IR7

82C59A Slave

IR0 IR7 8

82C59A Slave

8 IR0 IR7

Vcc

MN/MX#

DEN/

DT / R#

Magistrala de Adrese

OE/

G/

DIR
Magistrala de Date

Data bus transceiver 74F245

117

Magistrala de Adrese (16)


INT REQ

Magistrala de Control

Magistrala de Date (8)

CS/ A0 D0-7 INTA/

INT CAS0

CS/ A0

D0-7

INTA/

INT CAS0

CS/ A0 D0-7 INTA/ CAS0 82C59A CAS1 MASTER CAS2


SP# / EN#

INT

82C59A CAS1 SLAVE A CAS2


SP# / EN#

82C59A CAS1 SLAVE B CAS2


SP# / EN#

M7 M6 M5 M4 M3 M2 M1 M0

GND

GND

Vcc

Cereri de Intrerupere (Interrupt Requests)

118

Capcane (Traps)

Capcana (trap) este un mecanism care produce apelarea automata a unei proceduri. Spre deosebire de o intrerupere, capcana este activata, explicit sau implicit, de catre o actiune efectuata de catre programul aflat in rulaj (intreruperi software). Capcanele sunt utilizate pentru tratarea unor conditii de exceptie, adesea anormale, care apar in cursul existentei unui program, sau pentru activarea unor proceduri speciale, cum ar fi rutine ale sistemului de operare.
119

Tipuri de Capcane
a) b)

capcane activate intotdeauna ; capcane activate/dezactivate prin program ;

c)

capcane solicitate explicit prin program.

120

a) Capcane Activate Intotdeauna

Se asociaza cu un eveniment de tip eroare, indiferent de operatia efectuata de catre CPU; De aceea, nu exista mijloace de dezactivare a acestui tip de capcana. Exemple tipice: tentativa de a executa o instructiune inexistenta tentativa de a executa, dintr-un regim neprivilegiat, o instructiune rezervata regimului privilegiat capcanele in conjunctie cu gestiunea memoriei externe 121

b) Capcane Activate/Dezactivate Prin Program

Evenimentele care reprezinta sau nu o conditie de exceptie sau anormala, in functie de actiunile specifice efectuate de catre program. Capcanele pot fi activate (dezactivate) de programul insusi, dupa cum este necesar sau nu a detecta aceste situatii. Standardul IEEE 754 prevede ca exceptiile generate de operatiile cu numere cu virgula mobila sau de conversie pot genera o capcana numai in urma unei activari de catre program. Un alt exemplu: capcana utilizata pentru a detecta tentativa de executie a unei operatii cu operanzi cu virgula mobila in absenta unitatii aritmetice dedicate acestor operatii. In aceste cazuri capcana se dezactiveaza cand configuratia hardware include 122 procesorul matematic.

c) Capcane Solicitate Explicit Prin Program

Nu se folosesc, in mod obisnuit, pentru detectarea conditiilor anormale, dar reprezinta un mijloc de activare a executiei unor rutine speciale, de cele mai multe ori acestea fiind functii ale sistemului de operare. Sunt astfel organizate incat sa fie posibila activarea lor la aparitia unor capcane. Operatiei ii sunt dedicate instructiuni speciale, numite adesea apeluri de sistem (system-call instructions), data fiind menirea lor principala de activare a rutinelor sistemului de operare. Cand se executa o astfel de instructiune se activeaza capcana corespunzatoare. Prin asocierea unui parametru, aceeasi instructiune poate activa capcane diferite
123

Manipularea Capcanelor

Actiunile cerute de manipularea capcanelor sunt similare cu cele executate la aparitia unei intreruperi:
se salveaza in stiva contorul programului si indicatorii de conditie se executa saltul la rutina de tratare a capcanei.

Informatia despre rutina de tratare este memorata intr-un vector stocat intr-o zona de memorie bine precizata; in anumite cazuri capcanele si intreruperile folosesc in comun acelasi vector.
De regula, rutina de tratare a capcanei se executa la un nivel privilegiat superior fata de cel in care se afla programul ce a produs capcana.
124

Prioritati

Aparitia simultana de intreruperi si capcane ridica probleme legate de selectarea celei careia sa i se acorde atentie.
Ca si intreruperile, capcanele sunt servite, de regula, la terminarea instructiunii curente. Unele capcane (cum este page fault trap) trebuie servite imediat, intrerupand executia instructiunii curente. Ele pot fi considerate similar cu intreruperile cu relansare. Desi fiecare microprocesor are propriile sale reguli de prioritate privind capcanele, se pot folosi urmatoarele criterii generale: capcanele cu relansare au prioritatea maxima, ca si intreruperile cu relansare; celelalte capcane au prioritati superioare intreruperilor mascabile, deoarece ele sunt folosite pentru detectarea erorilor si starilor anormale, deci necesita atentie imediata; intreruperile nemascabile pot intrerupe rutinele de tratare a capcanelor si a intreruperilor. 125

Instrumente de Depanare

Depanarea este un proces dificil, care se simplifica prin fragmentarea programelor in blocuri mai mici, mai usor de stapanit. In sprijinul depanatorului se pot oferi urmatoarele seturi de instrumente:
a) executie pas cu pas; b) puncte de suspendare a executiei (breakpoints); c) memorarea traseului programului (program trace).
126

a) Executie Pas cu Pas

Primul instrument permite rularea programului instructiune cu instructiune, executia fiind stopata la sfarsitul fiecarei instructiuni.
Prin examinarea starii CPU si a locatiilor de memorie se poate determina eventuala abatere a programului de la comportarea dorita.
127

b) Puncte de Suspendare a Executiei (Breakpoints)

Punctele de suspendare a executiei permit suspendarea executiei unui program dupa executia unei anumite instructiuni. Permit executia unor blocuri mai mari de program inainte de suspendarea executiei la un anumit punct cu scopul testarii rezultatelor intermediare.
128

Memorarea Traseului Programului (Program Trace)

Traseul programului consta intr-o inregistrare a tuturor instructiunilor executate de program de la ultima suspendare si permite verificarea corectitudinii fluxului de instructiuni parcurse de program.
Pentru oferirea suportului necesar acestor instrumente de depanare, toate microprocesoarele moderne sunt prevazute cu mecanismele hardware pentru trace.
129

Capcana de Traseu

Majoritatea microprocesoarelor sunt prevazute cu o capcana speciala, numita trace trap - capcana de traseu. Ea permite atat executia pas cu pas, cat si realizarea de trasee ale programului. Capcana se activeaza (dezactiveaza) prin intermediul unui indicator de conditie special, accesibil prin program. Cand este activa, capcana de traseu lanseaza in executie rutina de tratare dupa ultima instructiune executata. Desigur, capcana este dezactivata automat pe durata executiei rutinei de tratare in scopul evitarii generarii unei bucle infinite.

Rutina de tratare a capcanei de traseu permite programatorului sa afiseze un set de informatii (starea CPU, locatii de memorie) care sa inlesneasca depanarea programului. Aceeasi rutina permite memorarea intr-un tampon al traseului a datelor despre instructiunea 130 executata.

Puncte de Suspendare Software a Executiei (1)

Rularea pas cu pas a programelor este, de cele mai multe ori, consumatoare de timp, mai ales dupa ce s-au corectat mari blocuri de program. Utilitatea punctul de suspendare a executiei (breakpoint): aceasta facilitate permite inserarea in program a unor "comenzi" de suspendare.
131

Puncte de Suspendare Software a Executiei (2)

Se selecteaza instructiunile pentru care tentativa CPU de a le executa duce la suspendarea executiei programului. Pentru implementare se foloseste o instructiune capcana specifica, a carei lungime este cea minima permisa pentru o instructiune. Instructiunea a carei executie ar trebui sa suspende rularea programului este stocata intr-o zona speciala de memorie si este inlocuita prin instructiunea breakpoint. Cand contorul programului indica locatia in care se afla instructiunea breakpoint, aceasta este executata, fapt ce rezulta in activarea rutinei asociate de tratare.
132

Puncte de Suspendare Hardware a Executiei (1)

Mecanismul de suspendare software a executiei permite utilizatorului sa intrerupa executia unui program doar cu ajutorul unei instructiuni particulare. Punctul de suspendare hardware a executiei se implementeaza cu ajutorul unitatii de gestiune a memoriei (memory management unit - MMU), care contine registre in care se inscrie adresa de memorie la a carei adresare trebuie sa se suspende executia programului.
133

Puncte de Suspendare Hardware a Executiei (2)

Cand mecanismul de breakpoint este activat, MMU compara fiecare noua adresa de acces cu continutul registrelor de breakpoint. La coincidenta, MMU emite un semnal capcana, fapt ce permite ca tentativa de acces la locatia de memorie al carei nume este pastrat in registrele de breakpoint sa conduca la suspendarea executiei programului si activarea unei rutine adecvate de tratare a situatiei. Microprocesoarele moderne permit utilizarea de puncte de suspendare a executiei programului atat software, cat si hardware. Numarul primelor este limitat doar de dimensiunea zonei de salvare, in timp ce numarul de puncte de suspendare hardware este limitat de numarul de registre breakpoint din MMU
134

Concluzii

Caracteristicile arhitecturale ce fac obiectul acestui capitol nu sunt special destinate implementarii programelor scrise in limbaje de nivel inalt, poate cu exceptia celei referitoare la aritmetica numerelor cu virgula mobila. Aceste caracteristici au importanta in utilizarea microprocesorului pentru aplicatii specifice. De exemplu, tipul si viteza mecanismului de intreruperi definesc comportarea microprocesorului la evenimente externe, indisolubil legata de functionarea in sistemele de timp real. Mai mult, asa cum se va constata, aceste mecanisme sunt indispensabile in implementarea functiilor complexe ale sistemelor de operare, cum sunt gestiunea memoriei, protectia, multiprelucrarea. 135

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