Sunteți pe pagina 1din 18

Arhitectura microprocesorului

1. Arhitectura intern a microprocesorului


Structura intern a microprocesorului poate fi mprit n 3
seciuni: seciunea registrelor, unitatea de control i unitatea aritmetic i
logic.
Schematic, arhitectura intern a unui microprocesor simplu poate
fi reprezentat astfel:

Unitatea logic i aritmetic


(ALU)

Registre de uz
general

Registru de stare

Registru de adrese
ale memoriei

Registru de
complementare
Logica boolean
i adunare

Magistrala de date

Registru de
deplasare

Numrtorul
program
Registrul
instruciunii

Unitatea de control
(UC)
Registru tampon

1.1 Seciunea registrelor


Numrul, mrimea i tipul registrelor poate varia de la un
microprocesor la altul. Totui, diversele registre ale microprocesoarelor
efectueaz operaii similare. Structura registrelor microprocesorului
joac un rol important n proiectarea arhitecturii microprocesorului.

Registre de baz ale microprocesorului


Registrele de baz ale microprocesorului sunt: registrul
instruciunii, numrtorul program, registrul de adrese ale memoriei i
acumulatorul.
Registrul instruciunii (IR) registrul are rol de stocare a
instruciunilor. Coninutul acestuia este decodat de microprocesor ca
o instruciune. Mrimea cuvntului microprocesorului determin
mrimea registrului. De exemplu, un microprocesor pe 32 de bii are
un registru al instruciunii de 32 de bii.
Numrtorul program (PC) conine adresele instruciunii sau codul
operaiei (op-code). n mod normal numrtorul program conine
adresa urmtoarei instruciuni ce va fi executat. Dimensiunea
numrtorului program este determinat de dimensiunea magistralei
de adrese.
Registrul de adrese ale memoriei (MAR) conine adresele datelor.
Microprocesorul folosete adresele, ce sunt stocate n registrul
adreselor de memorie, ca un pointer direct la memorie.
Acumulatorul (A) este utilizat pentru a stoca rezultatul majoritii
operaiilor efectuate de ALU. n general, se introduce un octet n
acumulator de la un dispozitiv extern sau se extrage un octet din
acumulator i a-l trimite ctre dispozitivele externe. Unele
microprocesoare au mai multe acumulatoare. n aceste
microprocesoare, acumulatorul ce urmeaz a fi utilizat de
instruciune este specificat n op-code.
n funcie de seciunea registrelor, microprocesoarele pot fi
clasificate fie ca fiind bazate pe acumulator, fie ca fiind bazate pe
registre cu scop general. ntr-un microprocesor bazat pe acumulator
(Intel 8085, Motorola 6809), se presupune c datele sunt pstrate ntr-un
registru numit acumulator. Toate operaiile logice i aritmetice sunt
realizate folosind acest registru. Astfel de registre sunt n general
registrele pe 8 bii.
Microprocesoarele bazate pe registre cu scop general sunt de
obicei microprocesoarele pe 16, 32 i 64 de bii (Intel
8086/80386/80486/Pentium
i
Motorola
68000/68020/68030/68040/PowerPC).
La acest tip de microprocesoare, registrele pot pstra date,
adresele memoriei, precum i rezultatul operaiilor aritmetice i logice.
Utilizarea registrelor cu scop general mrete viteza de execuie a
programului, deoarece microprocesorul nu trebuie s citeasc datele
dintr-o memorie extern printr-o magistral de date. De obicei aceste
registre au dimensiunea de 16 sau 32 de bii.
Dintre registrele de uz general amintim:

- registrul index este folosit ca un numrtor n modificrile de adrese,


pentru o instruciune, sau funcii generale de stocare. Registrul index
este folosit mpreun cu instruciunile pentru accesarea vectorilor sau a
datelor. Registru index este utilizat pentru a modifica poriunea de
adrese a memoriei, prin urmare pot fi accesate valori (date) adresare
indexat. Adresa efectiv se determin n acest caz prin adunarea adresei
corespunztoare instruciunii la coninutul registrului index. Aceste
tipuri de registre au o lungime de 16 sau 32 de bii.
- registru de stare conine bii individuali, fiecare bit avnd
semnificaie specific. Biii din registrul de stare sunt denumii flaguri. Starea unei operaii specifice a microprocesorului este indicat prin
fiecare flag, ce este setat sau resetat de logica intern a
microprocesorului.
Dintre flag-uri amintim:
flag-ul de transport (carry flag) folosit pentru a indica dac
rezultatul generat de o operaie aritmetic depete dimensiunea
cuvntului microprocesorului;
flag-ul zero (zero flag) este utilizat ori de cte ori rezultatul unei
operaii este zero;
flag-ul de paritate (parity flag) - este setat la valoarea 1 dac
rezultatul ultimei operaii conine fie un numr par de 1 (paritate
par) sau un numr impar de 1 (paritate impar), n funcie de
microprocesor;
flag-ul de semn (sign flag) este utilizat pentru a indica ori de
cte ori rezultatul ultimei operaii este pozitiv sau negativ. Dac
cel mai semnificativ bit al ultimei operaii este 1, atunci flag-ul
este setat la valoarea 1, indicnd c rezultatul este negativ. Flagul
este resetat la valoarea 0 dac cel mai semnificativ bit al
rezultatului este 0, dac rezultatul este pozitiv;
flag-ul de depire (overflow flag) este setat 1 dac rezultatul
unei operaii aritmetice este prea mare pentru dimensiunea
maxim a cuvntului microprocesorului, altfel este resetat la 0.
- registrul pointer la stiv Stiva const dintr-un numr de locaii RAM
n care se pot scrie date, sau din care se pot citi date. Aceste locaii sunt
n general accesate prin subrutine. Adresa stivei este coninut ntr-un
registru numit pointer-ul stivei. n general pentru accesul la stiv sunt
utilizate dou instruciuni: PUSH i POP. Instruciunea PUSH este
definit prin scrierea la vrful sau n partea de jos a stivei, n timp ce
instruciunea POP este utilizat pentru citirea din stiv (de la vrf ctre
partea de jos). Unele microprocesoare acceseaz stiva de la vrf
(pointer-ul la stiv este decrementat dup o instruciune PUSH i
incrementat dup o instruciune POP), altele din partea de jos a stivei.
Microprocesoarele utilizeaz n mod uzual registre de 16 sau 32 de bii

pentru operaii de tipul PUSH sau POP. Stiva este o memorie de tipul
LIFO (ultimul intrat primul extras).
Un exemplu de utilizare a regitrilor poate fi descris astfel:
Se consider un program ce realizeaz adunarea a dou numere.
Primul numr este stocat n memorie la adresele succesive 1010 i
respectiv, 1012. Presupunem c valorile ce sunt stocate la aceste adrese
sunt [1010]=0001h i [1012]=0002h.
Pentru realizarea operaiei de adunare va fi realizat urmtoarea
succesiune de operaii:
a.
Se ncarc registru de adrese al memoriei cu adresa
primei valori, deci se va ncrca adresa 1010 n acest
registru;
b.
Se mut ceea ce se gsete la aceast adres (valoarea
0001h) n registrul de date, D0;
c.
Se incrementeaz registru de adrese al memoriei cu 2 (se
lucreaz la nivel de cuvnt), practic se va trece la
urmtoarea adres (1012), ce conine a doua valoare
implicat n operaia de adunare;
d.
Adun coninutul acestei locaii de memorie cu valoarea
ce a fost mutat n registrul datelor D0, i memoreaz
rezultatul n registru pe 16 bii (D0).
1.2 Unitatea de control
Principalul scop al unitii de control este acela de a citi i decoda
instruciunile din memoria program. Pentru executarea unei instruciuni,
unitatea de control acceseaz blocurile unitii logice i aritmetice, pe
baza op-codurilor coninute n registrul instruciunii. Op-codurile
definesc operaiile ce sunt realizate prin intermediul unitii de control
cu scopul execuiei unei instruciuni.
Unitatea de control interpreteaz coninutul registrului
instruciunii i apoi rspunde la instruciune prin generarea unei
secvene de semnale de activare. Aceste semnale activeaz blocurile
logice ale ALU pentru realizarea operaiei dorite.
Unitatea de control genereaz semnalele de control, care
constituie ieiri ctre alte elemente ale microcalculatorului prin
intermediul magistralei de control. De asemenea, unitatea de control ia
msurile necesare ca rspuns la semnalele de control de pe magistrala de
control ce provin de la alte elemente ale microcalculatorului.
n funcie de tipul microprocesorului, semnalele de control pot
varia. Totui, exist o serie de semnale specifice majoritii
microprocesoarelor:
RESET atunci cnd pinul de intrare este n starea HIGH
sau LOW (n funcie de microprocesor), numrtorul
program este ncrcat cu o adres predefinit specificat de

productor. De exemplu, la P 80486, dup o reiniializare


(reset) hardware, numrtorul program este ncrcat cu
FFFFFFF016. Aceasta nseamn c instruciunea stocat n
memorie la adresa FFFFFFF016 este executat prima.
READ / WRITE ( R / W ) starea acestei linii transmite
elementelor microcalculatorului ori de cte ori
microprocesorul realizeaz o operaie de tipul READ sau
WRITE. Un semnal HIGH pe linie indic o operaie de tipul
READ, iar un semnal de tipul LOW indic o operaie de
tipul WRITE. Unele microprocesoare au pini separai READ
i WRITE.
READY - este un semnal de intrare pentru microprocesor i
este folosit de dispozitivele lente (memorie i porturi de I/O)
pentru a ctiga un timp suplimentar la transferul sau
recepia datelor de la microprocesor. Semnalul este un
semnal activ pe LOW. Atunci cnd microprocesorul
selecteaz un echipament lent, echipamentul trece pinul
READY n starea LOW. Microprocesorul rspunde prin
suspendarea tuturor operaiilor interne i intr n starea
WAIT. Atunci cnd dispozitivul este gata de a transmite sau
recepiona date, nltur semnalul READY.
Cerere de ntrerupere ( INT sau IRQ ) Dispozitivele
externe de I/O pot ntrerupe microprocesorul prin
intermediul acestui pin. Cnd semnalul este activat prin
dispozitivele externe, microprocesorul sare la un program
special numit: rutin de deservire a ntreruperii. Programul
este n general scris de ctre utilizator pentru a realiza sarcini
pe care dispozitivul ce solicit ntreruperea vrea s le
realizeze microprocesorul. Dup executarea acestei rutine,
microprocesorul se ntoarce la programul principal ce era
executat nainte de apariia ntreruperii.
1.3 Unitatea logic i aritmetic
Unitatea realizeaz toate manipulrile de date, cum ar fi operaiile
aritmetice i logice din interiorul microprocesorului. Dimensiunea
unitii este n conformitate cu lungimea cuvntului microcalculatorului
(un microprocesor pe 32 de bii va avea o unitate de 32 de bii). n mod
uzual, ALU realizeaz urmtoarele funcii:
Adunare binar i operaii logice
Gsirea complementului fa de 1 a datelor
Deplasare sau rotaie spre dreapta sau spre stnga cu
transport a coninutului unui registru cu scop general.

Structura intern a microprocesoarelor pe 16 bii


Pentru exemplificare se prezint n figura de mai jos structura
intern a microprocesorului Intel 8086:

AX
Regitrii
generali

AH

20

AL

BX

BH

BL

CX

CH

CL

DX

DH

DL

ALU
pentru
calculul
adreselor

Registre
segment pe
16 bii

Ali regitrii
generali

Pointerul de
instruciuni

Pointer la stiva

Controlul
logic al
magistralei

Magistrala de date
Registrul de instruciuni

Regitrii temporari

ALU
pentru
operaii aritmetice
i logice

Unitatea
de control

ase instruciuni
sunt puse n coada
de ateptare n
memoria FIFO

Registru de stare

Microprocesorul I8086 are o structur intern divizat n dou


uniti funcionale:
Unitatea de interfa a magistralei (BIU)
Unitatea de execuie (EU)
Unitatea de interfa realizeaz conectarea microprocesorului la
memoria extern i cipurile de I/O. Cele dou uniti (BIU i EU)
funcioneaz independent. Unitatea de interfa citete (preia)
instruciuni i scrie sau citete date la sau de la memorie i porturile de

I/O. EU execut instruciuni ce au fost deja preluate de BIU. Interfaa cu


magistrala conine registre segment, pointer al instruciunii (IP), registre
de ateptare ale instruciunii i un circuit de control al magistralei/ de
generare a adreselor.
Procesorul I8086 folosete memoria segmentat. Memoria
principal de 1MB este mprit n 16 segmente de cte 64 KB fiecare.
Adresele pe 20 de bii sunt generate n unitatea de interfa a magistralei
prin intermediul unitii logice i aritmetice, prin utilizarea unui pointer
al instruciunii pe 16 bii i un registru segment de 16 bii. Segmentarea
memoriei este util n sistemele cu timp-partajat, atunci cnd civa
utilizatori partajeaz un microprocesor.
Segmentarea permite comutarea, cu uurin, de la un utilizator la
altul prin schimbarea coninutului registrului segment.
Logica magistralei de control a BIU genereaz toate semnalele
magistralei de control, cum ar fi, semnale de citire sau scriere pentru
memorie i porturile de I/O. Registrul de instruciuni al BIU const
dintr-o memorie de tipul FIFO (primul intrat - primul ieit), n care pn
la ase octei ai instruciunii sunt citii nainte de la memoria extern,
astfel nct timpul de execuie al instruciunii s creasc. Unitatea de
control din EU traduce instruciunile pe baza coninutului registrelor
instruciunii din BIU.
Unitatea de execuie conine registre generale pe 16 bii (AX, BX,
CX, DX). Fiecare dintre acestea sunt mprite n registre de 8 bii (AH,
AL,.).
Registrul AX sau acumulatorul este utilizat pentru operaii
aritmetice, precum i operaii de intrare/ieire.
Registrul BX sau registrul baz este singurul registru de uz
general al crui coninut poate fi utilizat pentru adresarea memoriei.
Toate adresrile la memorie utilizeaz coninutul acestui registru pentru
adresare, folosind registrul DS drept registru segment implicit.
Registrul CX sau numrtor este cu precdere utilizat pentru
instruciuni logice de rotire, deplasare sau salturi. De exemplu
instruciunea LOOP va decrementa automat coninutul registrului CX cu
1, pn cnd CX=0 i se trece la urmtoarea instruciune.
Registrul DX sau registrul de date este utilizat pentru a pstra
rezultatele mai mari de 16 bii ale operaiilor aritmetice efectuate la
nivel de cuvnt.
Cele patru registre segment din structura interfeei cu magistrala
sunt: CS segmentul de cod, DS segmentul de date, ES extra
segmentul i SS segmentul stivei).
Toate instruciunile codului sunt localizate n memoria principal,
accesat prin registrul CS prin intermediul unui deplasament (offset) pe
16 bii, coninut n pointerul instruciunii (IP).

Registrul SS indic ctre stiva curent. Adresa fizic a stivei pe


20 de bii este calculat folosind indicatorii de stiv BP i SP.
Registrul DS indic ctre segmentul de date curent; operanzii
pentru majoritatea instruciunilor sunt extrase din acest segment.
Regitrii index SI i DI sunt utilizai ca deplasamente pentru a calcula o
adres fizic pe 20 de bii.
Registrul ES indic ctre extra segmentul n care datele ce
depesc 64 de KB sunt stocate.
Unitatea de execuie conine de asemenea un registru al strii.
Unitatea logic i aritmetic din EU realizeaz operaiile aritmetice i
logice.
Legat de setul de instruciuni al procesorului 8086 trebuie precizat
faptul c exist aproximativ 117 instruciuni diferite. Setul conine
instruciuni cu unul, doi sau nici un operand.
Instruciunile pot fi grupate n 8 categorii:
instruciuni de transfer a datelor
instruciuni de manipulare a biilor
instruciuni de transfer necondiionat
instruciuni de ntrerupere
instruciuni aritmetice
instruciuni cu iruri de caractere
instruciuni de ramificare condiional
instruciuni de control a procesorului
Structura intern a microprocesoarelor pe 32 i 64 de bii
Odat cu apariia microprocesoarelor pe 32 de bii s-a
implementat conceptul de pipelining n care aducerea instruciunilor i
execuia ciclurilor se suprapun. Metoda permite pregtirea simultan
pentru execuie a uneia sau mai multor instruciuni, n timp ce o alt
instruciune este executat.
De asemenea, s-a trecut la operarea simultan pe cuvinte de 32 de
bii, reprezentnd instruciuni diferite sau pri ale unei singure
instruciuni, precum i introducerea unor concepte dintre care amintim:
managementul memoriei, tehnicile memoriei virtuale, etc. Acestea
permit programatorilor s scrie programe ce sunt mult mai mari dect
acelea care ar putea s ncap n memoria principal (programele sunt
stocate pe un dispozitiv secundar, cum ar fi o unitate de disc, iar poriuni
din acel program sunt schimbate n memoria principal, dac acest lucru
este necesar).
Cipurile microprocesoarelor pe 32 de bii conin i un circuit de
segmentare. Cu ajutorul acestora, blocuri de cod numite segmente, ce
corespund modulelor unui program i care au diferite dimensiuni
stabilite de programator sau compilator, sunt schimbate. Exist i o
metod alternativ la segmentare, i anume paginarea. Diferena dintre

cele dou este aceea c n cazul paginrii modulele au aceeai


dimensiune.
Aritmetica n virgul mobil este implementat n cazul acestor
microprocesoare prin intermediul unui procesor n virgul mobil. La
microprocesoarele precedente aritmetica n virgul mobil era
implementat soft prin intermediul unei subrutine.
Schemele de management a memoriei (sau caching) sunt utilizate
cu scopul de a minimiza timpul de acces pentru majoritatea
instruciunilor. Memoria cache este inclus pe cipul microprocesorului.
De obicei, microprocesoarele pe 32 de bii sunt procesoare
superscalare. Acest lucru nseamn c ele pot executa mai mult de o
instruciune ntr-un ciclu de ceas, putnd fi astfel folosite n sisteme de
operare multitasking.
Unele microprocesoare pe 32 de bii implementeaz o
caracteristic de predicie a sectoarelor multiple. Acest lucru permite
microprocesorului s anticipeze salturile din fluxul instruciunii. De
asemenea, microprocesoarele pot determina secvena optimal a
execuiei instruciunii, prin urmrirea instruciunilor de decodare i
determinarea momentului n care instruciunile sunt pstrate sau sunt
executate.
Microprocesoarele pe 64 de bii includ toate caracteristicile
microprocesoarelor pe 32 de bii, iar, n plus, au uniti de virgul
mobil i magistrale de adrese i date mai mari. n mod uzual
microprocesoarele pe 64 de bii pot executa 4 instruciuni la un ciclu de
ceas.
Microprocesorul Intel 80386 este primul microprocesor pe 32 de
bii al firmei Intel, fiind bazat pe 8086. Microprocesorul 80386 conine
magistrale separate interne i externe de 32 de bii, precum i 8 registre
generale pe 32 de bii. Procesorul poate mnui date pe 8, 16 i 32 de bii.
Are pini separai de adrese i date i poate genera o adres fizic de 32
de bii. Poate adresa pn la 4GB de memorie fizic i 64TB de
memorie virtual. Cipul microprocesorului are 132 de pini i este
proiectat folosind tehnologia HCMOS III.
Datorit caracteristicii de pipeling , microprocesorul poate realiza
n paralel funciile de aducere, decodare, execuie i management a
memoriei. Managementul memoriei i protecia hard traduce adresele
logice n adrese fizice i ofer reguli de protecie necesar mediului
multitasking. Principalele diferene dintre 8086 i 80386 sunt adresele i
datele de 32 de bii, paginarea i managementul memoriei.
Arhitectura intern a lui 80386 include cteva uniti funcionale
ce opereaz n paralel. Operaia este cunoscut sub numele de
procesare ramificat (pipelined processing). Aducerea, decodarea,
execuia, managementul memoriei i accesul la magistral sunt realizate
simultan. Unitile funcionale ale microprocesorului 80386 sunt:

Unitatea de interfa a magistralei (BIU)


Unitatea de execuie (EU)
Unitatea de segmentare
Unitatea de paginare
Unitatea de decodificare
Unitatea de pre-aducere (prefetch)
Unitatea de interfa a magistralei realizeaz funcii similare cu
cea a microprocesorului 8086, fiind responsabil pentru:
aducerea instruciunii
citirea i scrierea datelor pentru memorie
transferul datelor pentru dispozitivele de intrare/ieire
Practic intefaa magistralei are rol de interfaare cu lumea
exterioar. Transferul informaiilor se face pe magistrala demultiplexat
de 32 de bii a procesorului.
Unitatea de pre-aducere are rolul de a crea o list de tipul FIFO cu
instruciuni. Octeii corespunztori instruciunilor sunt pstrai de ctre
aceast unitate pn cnd unitatea de decodificare este gata s-i
primeasc. Magistrala unitii intr n starea de inactivitate dac lista
este plin, iar unitatea de execuie nu solicit accesul la datele din
memorie.
Unitatea de decodificare este responsabil pentru decodificarea
instruciuniilor ce provin de la unitatea de execuie. Citete instruciunile
n cod main din lista de ateptare a instruciunilor. Instruciunile
decodificate sunt pstrate pn cnd acestea sunt solicitate de unitatea de
execuie.
Unitatea de execuie proceseaz instruciunile din coada
instruciunilor. Conine o unitate de control i o unitate a datelor.
Unitatea de control conine microcod i hard paralel pentru nmuliri,
mpriri i calculul adresei efective ct mai rapid posibil. Unitatea de
date include o unitate logic i aritmetic, 8 registre generale, i un
deplasator pe 64 de bii pentru a realiza deplasri multiple ale biilor
ntr-un singur ciclu de ceas. Unitatea de date efectueaz operaiile
solicitate de unitatea de control.
Unitatea de segmentare translateaz adresele logice n adrese
liniare la solicitarea unitii de execuie. Adresele liniare sunt trimise la
unitatea de paginare.
Prin intermediul mecanismului de paginare, microprocesorul
traduce adresele liniare n adrese fizice. Dac paginarea nu este activat,
adresa fizic este identic cu adresa liniar. 80386 nu conine pe cip
memorie cache. Se poate ns realiza o interfaare ntre microprocesor i
o memorie cache extern prin intermediul unui cip controller al
memoriei cache.

Unitatea de execuie

Unitatea de segmentare

Unitatea de paginare

Registre

Regitrii
segment

Registru
tampon pentru
translatare

Translatorul de
segment

Translator de
pagin

Deplasare
nmulire/
mprire
ALU

Unitatea magistralelor
Interfaa
magistrale
lor
Decodificator

Coad de
ateptare pentru
instruciuni
Unitatea de decodificare

Coad de
ateptare a
unitii de preaducere
Pre-aducere
Unitatea de pre-aducere

2. Magistrale externe
Un numr prestabilit de fire numite magistrale, sunt utilizate
pentru interfaarea procesorului cu lumea exterioar sau pentru
transferul informaiilor n interiorul unitii centrale de procesare.
Magistralele externe sunt grupate n urmtoarele categorii: magistrala de
date, magistrala de adrese i magistrala de control.
2.1 Magistrala de date
Magistrala de date este o magistral bidirecional prin care se
realizeaz schimbul de date dintre procesor i dispozitivele externe
(dispozitive de I/O, memorii, etc.). Magistrala de date poate juca i rolul
de transfer unidirecional de instruciuni de la memorie.
Direcia transferului de informaii (n cazul bidirecional) este
supervizat de unitatea de control a microprocesorului, prin generare de
semnale specifice de citire, scriere, discriminare ntre diversele
dispozitive externe, definire a secvenelor de transmitere a datelor, etc.
Dimensiunea magistralei (numrul de linii de conexiune) depinde
de lungimea cuvntului specific microprocesorului (8, 16, 32,64, etc.

2.2 Magistrala de adrese


Este o magistral unidirecional utilizat pentru transferul
codului binar specific locaiei datei ce se va utiliza n cadrul operaiei ce
se execut.
Discriminarea ntre diversele tipuri de adrese transmise, practic
selecia dispozitivului extern revine to n sarcina unitii de control.
Magistrala de adrese stabilete prin numrul de linii i capacitatea
de adresare a unui microprocesor.
De exemplu, microprocesorul I8086 are o memorie de 1MB, i
pentru accesarea acesteia va fi nevoie de 20 de linii de adres
( 220 1048576 ).
n acest caz, cele 20 de linii de adres sunt obinute prin
multiplexare cu magistrala de date.
2.3 Magistrala de control
Magistrala de control este utilizat pentru a transmite semnale de
control i comand de la o component la cealalt.
Semnalele de control pot fi grupate astfel:
semnale de control a magistralei
semnalele de arbitrare a magistralei
semnale de control a nteruperilor
semnale de stare
semnale diverse
Semnalele de pe magistrala de control permit selectarea
echipamentului extern cu care microprocesorul comunic.
Setul minim al semnalelor de control a magistralei include
urmtoarele: WRITE semnal de ieire pentru microprocesor, READ
semnal de intrare, Address strobe (pin de adrese) utilizat pentru
selecia unui circuit extern semnal de ieire, READY semnal utilizat
pentru a specifica faptul c dispozitivul extern este gata s transmit
informaii intrare pentru microprocesor.
Semnalele de arbitrare a magistralei sunt semnale de control i
sincronizare pentru administrarea cererilor externe de control al
magistralei.
Semnalele de control al ntreruperilor sunt semnale ce realizeaz
controlul i sincronizarea cu evenimentele externe.
Pentru sincronizarea cu evenimentele externe trebuie s existe
dou tipuri de semnale:
cerere de nterrupere (INT sau NMI)
acceptarea ntreruperii (INTA).
Semnalele de stare indic starea procesorului, respectiv:
tipul ciclului main curent
informaii despre regitrii interni folosite pentru
calcularea adreselor

sincronizarea informaiilor cu alte magistrale


starea memoriei interne cache.
n categoria semnalelor diverse pot fi evideniate o serie de
semnale speciale definite n funcie de tipul microprocesorului: semnale
pentru controlul coprocesorului extern, semnale pentru testarea
intrrilor, semnale de depanare, semnal de reiniializare, etc.
3. ntreruperi
Procesul n urma cruia microprocesorul i suspend operaiile
curente i execut anumite operaii de urgen, poart numele de
ntrerupere. Prin intermediul ntreruperilor, dispozitivele externe
realizeaz comunicaia cu procesorul.
O ntrerupere mai poate fi definit prin apelul unei subrutine
iniiate de un dispozitiv extern prin hardware (ntrerupere hardware) sau
chiar de microprocesor (ntrerupere software).
n urma cererilor de ntrerupere, microprocesorul execut
instruciunea curent, accept ntreruperea, salveaz coninutul
numrtorului program n vrful stivei i transfer controlul rutinei ce
deservete ntreruperea respectiv. Microprocesorul execut rutina de
deservire (ISR), i dup execuia ntreruperii transfer din nou controlul
programului principal.
Sistemele de ntreruperi pot fi clasificate astfel:
sistem de ntrerupere pe o singur linie sau pe un singur
nivel
sistem de ntrerupere cu mai multe lini sau mai multe
niveluri
linii de ntrerupere vectoriale
3.1. Sistem de ntrerupere cu o singur linie
ntr-o configuraie de acest tip microprocesorul are o singur linie
dedicat cererilor de ntrerupere.
Dispozitivele de I/O sunt conectate la linia cererilor de
ntrerupere. Cererile de ntrerupere sunt trecute printr-o poart logic
exclusiv (OR), dup care sunt aplicate microprocesorului. Ca rspuns
la o cerere de ntrerupere, microprocesorul execut urmtorii pai:
transfer controlul rutinei de procesare a ntreruperii sau
subrutina de nivel a ntreruperii (ILS)
determin adresele dispozitivului ce a transmis cererea
de ntrerupere
transfer controlul ctre programul de tratare a
ntreruperii
se ntoarce la programul principal, activeaz
ntreruperile mascabile i termin execuia.

Microprocesor

Magistrala de date

INTA

INTR

Dispozitiv
1

Dispozitiv
2

Dispozitiv
3

3.2. Sistem de ntrerupere cu mai multe linii


n acest tip de sistem liniile individuale destinate cererilor de
ntrerupere sunt conectate la linii diferite ale microprocesorului. Acesta,
poate accepta alte cereri de ntreruperi n timpul execuiei unei rutine de
deservire a ntreruperii. Dac microprocesorul are numai o linie de
ntrerupere, logica de control a ntreruperilor rezolv prioritatea
cererilor, iar ntreruperea cu prioritatea cea mai mare este deservit
prima, n timp ce celelalte ntreruperi sunt meninute n starea de
ateptare.

INTR

INTA

Logica de control a
ntreruperilor

Microprocesor

Magistrala de date

INTR

IRQ1

IRQn

IRQ0
Dispozitiv
1

Dispozitiv
Dispozitiv

2
n

3.3. Linii de ntrerupere vectoriale


ntreruperile vectoriale sunt acelea ce presupun ca
microprocesorul drept rspuns la un semnal de ntrerupere s
predetermine locaia de memorie care este adresa de nceput a subrutinei
de tratare a ntreruperii. Aceast adres este denumit adres vectorial.
Exist dou tipuri de adrese vectoriale:
adres vectorial fix
-

adres vectorial programabil


Procesoarele ce suport adrese vectoriale fixe, au adrese
vectoriale implicite pentru fiecare ntrerupere. Programatorul nu
poate modifica aceste adrese. Procesoarele ce suport adrese
vectoriale programabile menin un tabel n memorie (tabelul
vectorilor de ntrerupere - IVT).
3.4. Clasificarea ntreruperilor
ntreruperile pot fi clasificate n dou categorii mari: hardware i
software.
ntreruperile hardware pot fi mprite n funcie de modul n care
sunt detectate de procesor: ntreruperi declanate pe nivel sau pe
tranziie. O ntrerupere pe nivel este o ntrerupere semnalizat prin
meninerea liniei de ntrerupere pe nivelul cresctor sau descresctor
(high sau low). Un dispozitiv ce dorete s utilizeze o astfel de
ntrerupere, trece linia de ntrerupere pe nivelul su activ i menine linia
pe acest nivel pn cnd ntreruperea este deservit.
O ntrerupere pe tranziie este semnalizat de o tranziie pe nivel
pe linia de ntrerupere, fie pe frontul descresctor, fie pe frontul
cresctor. Un dispozitiv ce dorete s semnalizeze o ntrerupere,
transmite un impuls pe linie i apoi elibereaz linia la starea sa inactiv.
Dac impulsul este prea scurt pentru a fi detectat, atunci este necesar un
dispozitiv special pentru a detecta tranziia.
ntreruperile mai pot fi clasificate i n ntreruperi mascabile i
ntreruperi nemascabile.
ntreruperile mascabile sunt acele ce pot fi mascate sau pentru
care poate fi refuzat deservirea. Aceste ntreruperi sunt asociate cu
sarcinile de nivel sczut ce, n general, pot fi omise.
ntreruperile nemascabile sunt acelea ce nu pot fi ignorate sau
mascate de microprocesor. Fiecare procesor suport ntrerupere
nemascabil (NMI). Aceast ntrerupere este o ntrerupere de prioritate
maxim.
3.5 ntreruperile procesorului I8086
ntreruperile microprocesorului I8086 pot fi clasificate n 3
categorii:
ntreruperi hardware
ntreruperi software
ntreruperi generate ca urmare a unei erori
ntreruperile hardware sunt cele generate pe liniile de ntrerupere
NMI i INTR ale microprocesorului de ctre dispozitivele externe. Linia
NMI este utilizat pentru semnalizarea unui eveniment critic, cum ar
cderea tensiunii de alimentare.
n cazul n care mai multe dispozitive externe transmit o cerere de
ntrerupere, i, deoarece, microprocesorul dispune de o singur linie de
ntrerupere INTR, atunci este necesar un controller programabil al

ntreruperilor (de exemplu circuitul I8259A) care s gestioneze aceast


situaie.
ntreruperile software sunt acelea generate prin instruciuni de
tipul INT sau INTO.
ntreruperile generate la apariia unei erori sunt, spre exemplu,
cele generate ca urmare a unei mpriri prin zero, sau ca urmare a unei
erori n execuia unei instruciuni.
Odat cu acceptarea unei ntreruperi, procesorul va realiza
urmtoarea secven, nainte de execuia subrutinei de tratare a
ntreruperii:
registrul fanioanelor este introdus n stiv
intrrile INTR sunt dezactivate i fanionul TF este ters
registrul CS este introdus n stiv
registrul IP este introdus n stiv
registrul IP este ncrcat cu adresa vectorului de
ntrerupere (deplasamentul).
Registrul CS este ncrcat cu adresa vectorului de
ntrerupere (segment)
subrutina de tratare a ntreruperii este executat de la
adresa format din cei doi regitrii CS i IP.
Atunci cnd ultima instruciuni (IRET) a subrutinei este
executat registrele introduse n stiv sunt extrase n ordine invers. n
acest mod microprocesorul i reia execuia procesului iniial.
Microprocesorul I8086 poate deservi pn la 256 de ntreruperi
diferite.
Aceste ntreruperi sunt grupate n tabelul (tabela) vectorilor de
ntrerupere. Acest tabel are alocat n memorie un spaiu cuprins ntre
adresele 00000h i 003FFh.
Primele 5 ntreruperi ale tabelei sunt destinate unor aplicaii
specifice. Aceste ntreruperi pot fi generate prin program folosind
instruciuni INT.
ntreruperea de tipul 0 sau INT0 este generat ori de cte ori se
ncearc o mprire prin zero sau atunci cnd rezultatul mpririi nu
ncape n registrul destinaie (se utilizeaz instruciuni de tipul DIV sau
IDIV).
ntreruperea de tipul 1 apare dup fiecare instruciune dac bitul
corespunztor fanionului de urmrire este setat. Atunci cnd acest fanion
este setat programul este rulat pas cu pas, iar programatorul poate
verifica rezultatul dup fiecare instruciune.

ntrerupere de tipul 1
sau ntr-un singur pas
ntrerupere de tipul 2
sau NMI

00008h
0000Ch

ntrerupere de tipul 5
(rezervat)

ntrerupere de tipul 6
(rezervat)

ntrerupere de tipul 13
(rezervat)
ntrerupere de tipul 32
(rezervat)
ntrerupere de tipul 33
(disponibil)

ntreruperi rezervate
(27)

00004h

ntrerupere de tipul 3
sau breakpoint
ntrerupere de tipul 4
sau INTO

ntreruperi disponibile (224)

00000h

ntreruperi dedicate (5)

ntrerupere de tipul 0
sau mprire prin zero

ntrerupere de tipul 255


(disponibil)

003FFh

ntreruperea de tipul 2 sau NMI este o ntrerupere nemascabil cu


cea mai mare prioritate. Aceast ntrerupere nu poate fi dezactivat sau
inut n ateptare.
ntreruperea nemascabil este ntotdeauna recunoscut de
microprocesor i nu poate fi mascat prin program.
ntreruperea de tipul 3 sau breakpoint este utilizat n etapa de
depanare a programului.
ntreruperea de tipul 4 este generat de microprocesor atunci cnd
se execut o instruciune de tipul INTO.
Microprocesorul I8086 are o singur linie de ntrerupere extern
INTR ce poate fi intern mascat prin program. nainte ca

microprocesorul s accepte de la un dispozitiv extern o ntrerupere pe


aceast linie, fanionul de ntrerupere trebuie s fie activat printr-o
instruciune de tipul STI (setarea fanionului de ntrerupere).
ntreruperile microprocesorului 8086 sunt deservite n urmtoarea
ordine:
1. ntreruperi interne i excepii
2. ntreruperi software
3. ntreruperi nemascabile
4. ntreruperi externe (INTR)
5. ntreruperi de tipul pas cu pas (single step).

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