Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Este produs de firma INTEL si este destinat aplicatiilor de mare complexitate, unor statii de lucru puternice, ca si conducerii evoluate a sistemelor functionand in timp real.
Microprocesorul ofera facilitati neintalnite la predecesorii sai (8086, 80186), printre care se remarca:
gestiunea memoriei virtuale bazata pe hardware si microprogramare;
implementarea mediilor protejate de executie a taskurilor;
gestiunea taskurilor in sistemele cu microprogramare.
1. Arhitectura unitatii centrale de prelucrare
(vezi fig.1)
a. Organizarea interna
Unitatea centrala de prelucrare (UCP) consta din patru blocuri principale:
Unitatea de magistrala (UM);
Unitatea instructiunii (UI);
Unitatea de executie (UE);
Unitatea adresei (UA).
Una din caracteristicile majore ale UCP consta in utilizarea unui tampon stiva intre unitatea instructiunii si cea de executie. Acest fapt duce la cresterea vitezei de executie a unei secvente de instructiuni stocate in locatii de memorie succesive, deoarece permite suprapunerea extragerii, decodificarii si executiei instructiunilor.
Tamponul de pre-extragere intre UM si UI poate contine pana la 6 octeti din adresele de memorie imediat urmatoare celei ce contine instructiunea curenta.
UI:
decodifica instructiunea si plaseaza rezultatul in tamponul instructiunilor decodificate, care poate contine trei astfel de instructiuni;
UE:
prelucreaza operanzii in concordanta cu instructiunea decodificata extrasa din tamponul instructiunilor decodificate;
calculeaza adresele virtuale ale operanzilor;
UA:
converteste adresele virtuale in adrese fizice fiind asociata unei unitati de gestiune a memoriei implementata pe aceeasi placheta de siliciu cu UCP;
permite cresterea vitezei de operare prin evitarea intarzierilor de transmisie intre circuitele integrate.
b. Semnale ale UCP
Capsula microprocesorului 80286 are 63 pini, dintre care 6 sunt pentru alimentare, iar 57 sunt destinati astfel:
STARE |
NUME |
I/O |
DESCRIERE |
||||||
HIGH |
CLK |
I |
ceasul sistem (system clock)-produce tactul pentru sistemul 80286. Este divizat (cu doi) in interiorul microprocesorului |
||||||
HIGH |
D0‑D15 |
IO |
Semnalele magistralei de date a microprocesorului prin care UCP primeste date la citirea din memorie, la citirea din porturi de intrare si pe durata ciclurilor de confirmare a acceptarii cererilor de intreruperi. Ca iesiri din UCP acestea sunt folosite la transmiterea datelor la inscrierea in memorie si la porturile de iesire. Datele ce se transfera pot fi sub forma de cuvinte de 8 sau 16 biti. Datele pe 8 biti pot fi vehiculate atat pe D0-D7, cat si pe D8-D15, dupa cum adresa octetului este para sau impara. |
||||||
HIGH |
A23‑A0 |
O |
Iesiri din UCP ce constituie informatiile vehiculate pe magistrala de adrese; ele contin adresa fizica a locatiei de memorie sau a portului de I/o; Sistemul poate adresa 64k porturi, asa ca doar liniile A0-A15 sunt folosite in conjunctie cu porturile. |
||||||
LOW |
BHE |
O |
Bus High Enable - este folosit pentru a se putea face discriminarea intre adresarea unui octet de la adresa para (A0=0, BHE=1). Activarea semnalului indica efectuarea unui transfer de date pe liniile D8-D15 |
||||||
BHE |
A0 |
Functia |
|||||||
0 |
0 |
Transfer cuvint(16 biti) |
|||||||
0 |
1 |
Transfer octet pe D15‑D8 |
|||||||
1 |
0 |
Transfer octet pe D7‑D0 |
|||||||
1 |
1 |
Rezervat |
|||||||
LOW |
M/IO |
O |
Memory I/O Select indica tipul transferului de date: M/IO =1 - in conjunctie cu memoria M/IO =0 - in conjunctie cu un port de intrare/iesire |
||||||
LOW |
COD/INTA |
O |
Code/Interrupt Acknowledge: permite deosebirea unei operatii de extragere din memorie a codului instructiunii de o operatie de citire din memorie a datelor; permite discriminarea intre ciclul de confirmare a acceptarii cererii de intrerupere si citirea dintr-un port de intrare. |
||||||
LOW |
S1,S0 |
O |
Bus cycle Status - semnale de starece indica initierea unui ciclu ciclu magistrala si care folosite in conjunctie cu M/IO si COD/INTA identifica tipul de ciclu magistrala efectuat, astfel: |
||||||
COD/INTA |
M/IO |
S1 |
S0 |
Tip de ciclu magistrala |
|||||
0 |
0 |
0 |
0 |
Confirmare a cererii de intrerupere |
|||||
0 |
0 |
0 |
1 |
Rezervat |
|||||
0 |
0 |
1 |
0 |
Rezervat |
|||||
0 |
0 |
1 |
1 |
In repaus |
|||||
0 |
1 |
0 |
0 |
Daca, A1=1 - halt, altfel stop |
|||||
0 |
1 |
0 |
1 |
Citire date din memorie |
|||||
0 |
1 |
1 |
0 |
Inscriere date in memorie |
|||||
0 |
1 |
1 |
1 |
In repaus |
|||||
1 |
0 |
0 |
0 |
Rezervat |
|||||
1 |
0 |
0 |
1 |
Citire port de intrare |
|||||
1 |
0 |
1 |
0 |
Inscriere port de iesire |
|||||
1 |
0 |
1 |
1 |
In repaus |
|||||
1 |
0 |
0 |
0 |
Rezervat |
|||||
1 |
0 |
0 |
1 |
Citire cod instructiune |
|||||
1 |
0 |
1 |
0 |
Rezervat |
|||||
1 |
0 |
1 |
1 |
In repaus |
|||||
In repaus - ciclu inexistent, stare pasiva; Rezervat - ciclu masina rezervat pentru variante ulterioare |
|||||||||
LOW |
LOCK |
O |
Bus Lock - indica faptul ca alt sistem nu poate avea acces la magistralele sistemului in timpul ciclului curent si in ciclurile urmatoare.Semnalul este activat explicit prin instructiunea 'LOCK' sau implicit in timpul instructiunilor XCHG cu memoria, acceptarii intreruperilor sau la accesarea tabelelor de descriptori. |
||||||
LOW |
READY |
O |
Bus Ready - -indica terminarea unui ciclu magistrala |
||||||
HIGH |
HOLD HLDA |
I O |
Bus Hold Request Hold Acknowledge Permit implementarea unui protocol simplu de transfer si reprimire de catre UCP a controlului asupra mafistralei locale unui/de la alt posibil master. Cand HOLD=1, microprocesorul termina ciclul magistrala curent si acorda accesul solicitantului, trecand semnalul HLDA in 1, pentru ca noul master sa poata emite semnale de comanda pe magistrala. Cand a terminat, masterul dezactiveaza semnalul HOLD, microprocesorul preluand controlul magistralei si dezactivand HLDA. |
||||||
HIGH |
INTR |
I |
Interrupt Request - solicita microprocesorului sa-si suspende programul curent si sa serveasca o cerere de intrerupere externa.. INTR este memorat la inceputul fiecarui ciclu si trebuie sa ramina HIGH cel putin doua cicluri pentru ca microprocesorul sa accepte intreruperea inaintea instructiunii urmatoare.Cum intrarea este unica, pe durata ciclului de confirmare a acceptarii cererii de intrerupere microprocesorul primeste pe magistrala de date un identificator de 8 biti reprezentand informatii despre sursa intreruperii. |
||||||
HIGH |
NMI |
I |
Non-Maskable Interrupt Request - activeaza o intrerupere cu vectorul avind valoarea Nu este realizat nici un ciclu de acceptare a intreruperii, existand o unica intrerupere nemascabila. Pentru a fi recunoscut, semnalul trebuie sa fie LOW cel putin 4 perioade de ceas si HIGH cel putin 4 perioade. |
||||||
|
PEREQ PEACK |
I O |
Processor Extension Requesst Processor Extension Acknowledge Pereche de semnale ce extinde mecanismele de protectie si gestiune ale memoriei si asupra transferurilor de date efectuate de catre procesorul matematic. PEREQ solicita microprocesorului sa realizeze un transfer de operanzi catre procesorul extensie. PEACK informeaza ca operanzii au fost transferati |
||||||
LOW |
BUSY ERROR |
I |
Processor Extension Busy Processor Extension Error Pereche de semnale ce indica conditiile de operare ale procesorului extensie. Un semnal BUSY activ arata ca operatia ceruta procesorului extensie este in curs de desfasurare si stopeaza activitatile UCP cand se executa instructiunile WAIT sau ESC pina cand BUSY devine inactiv. 80286 poate fi intrerupt in timpul cit asteapta ca BUSY sa devina inactiv. Un semnal ERROR activ activeaza o intrerupere speciala care informeaza UCP despre detectarea unei erori pe durata executarii de catre procesorul extensie a unei operatii. |
||||||
HIGH |
RESET |
I |
System Reset - anuleaza toate operatiile UCP si il repune intr-o stare initiala bine determinata, ceea ce permite repornirea ordonata a sistemului de programe la fiecare noua punere sub tensiune sau dupa revenirea dintr-o eroare fatala de sistem. |
||||||
c. Organizarea memoriei
Memoria principala a sistemului cu microprocesor 80286 consta din unitati adresabile de 8 biti (octeti).
80286 are doua moduri de lucru:
Modul real In modul real 80286 este compatibil, din punct de vedere al codului obiect, cu microprocesoarele 8086 si 8088. Memoria fizica este o arie continua de 1.048.576 bytes (1Mo) adresati prin pinii A0-A19.Pinii A23-A20 sint ignorati.
Modul protejat 80286 executa, in modul protejat, intregul set de instructiuni al mp. 8086. Modul protejat ofera, de asemenea mecanisme de gestiune a memoriei, mecanisme de protectie si setul de instructiuni asociate. 80826 intra in modul protejat din modul real prin setarea bitului PE din registrul MSW si incarcarea acestuia cu instructiunea LMSW.
In modul protejatal mp.80286 dispune de 1 Go de spatiu virtual de adresare proiectat intr-un spatiu de 16Mo de adrese fizice definite prin liniile A23-A0 si BHE.
Mod de functionare |
Spatiu maxim de adresare |
Cu adrese reale |
220- 1Mo |
Protejat |
Memoria fizica adresabila este de 224 - 16Mo |
Memoria virtuala este de 230 - 1Go |
Microprocesorul asigura mediul de lucru pentru multiprogramare. Astfel, mai multi programatori pot folosi acelasi spatiu virtual pentru diferite programe pe baza mecanismelor de conversie a adreselor virtuale in adrese fizice care ofera diverse spatii de memorie pentru fiecare program din sistem.
Adresarea memoriei este bazata pe conceptul de segmentare, intregul spatiu de adresare fiind compus din segmente a caror lungime variaza intre 1ko si 64 ko. Numarul maxim permis de segmente este 16 pentru modul real de functionare si 16k (214) in cazul functionarii in modul protejat.
Principalele tipuri de date
Structurile de date de baza sunt octetul si cuvantul (16 biti). Ele pot fi citite sau inscrise intr-un singur ciclu magistrala. Tipurile de date direct manipulate de 80286 sunt:
Intregi cu semn, de 8 sau 16 biti; numerele negative sunt reprezentate in complement fata de 2(c'2); cand se utilizeaza coprocesorul matematic, lor li se adauga intregi cu semn pe 32 sau 64 de biti
Exemplu: valoarea unui intreg reprezentat pe N biti in c'2 este
N-2
Vc'2= a bi x 2I- b N-1 x 2 N-1
i=0
Domeniul in care poate lua valori este: -(2 N-1 ) - 2 N-1 -1
In cazul unei reprezentari binare pe 8 biti se poate sintetiza:
Reprezentare binara |
Valoare |
Observatii |
01111111 |
127 |
Cea mai mare valoare reprezentabila |
01111110 |
126 |
|
|
|
|
00000010 |
2 |
Primul 0 indica numar pozitiv |
00000001 |
1 |
|
00000000 |
0 |
|
11111111 |
-1 |
-1 este intotdeauna numai 1 |
11111110 |
-2 |
|
11111101 |
-3 |
|
|
|
|
10000001 |
-127 |
|
10000000 |
-128 |
Cea mai negativa valoare reprezentabila |
Intregi fara semn de 8 sau 16 biti; toti bitii participa la reprezentarea merimii numarului, valoarea sa fiind:
N-1
Vfs= a bi x 2i,
i=0
unde
bi - este valoarea bitului din pozitia i.
Exemplu: 10110101 are valoarea V= 1x27+0x26+1x25+1x24+.+1
Indicator (pointer): numere pe 32 de biti indicand o adresa; ele sunt compuse din doua entitati pe 16 biti: un selector care defineste numarul segmentului si un offset indicand deplasamantul in cadrul segmentului;
Siruri: secvente de octeti cu lungimea de la 1 octet la 64Ko;
Octeti ASCII: octeti continand codul ASCII al unui caracter;
Numere in format BCD
BCD neimpachetat: octeti reprezentand o singura cifra zecimala;
BCD impachetat: octeti in care se memoreaza doua cifre zecimale, fiecare in cate un spatiu de 4 biti.
Exemplu: Reprezentarea numarului 3481 in
BCD neimpachetat |
00000011|00000010|00001000|00000001 |
BCD impachetat |
0011|0010|1000|0001 |
Numere in virgula mobila: in conjunctie cu 80287; in absenta coprocesorului este necesar un emulator software al acestuia pentru a manipula acest tip de date.
3. Modelul de programare
Modelul de programare dispune de un set de 14 registre in care se includ:
Registre de uz general;
Registre de comanda;
Registre pentru calculul adresei.
Registrele de uz general
Sunt utilizate 8 registre a cite 16 biti pentru a manipula operanzii in operatiile aritmetice si logice,. 4 dintre acestea (AX,BX,CX,DX) pot fi referite si in perechi separate de cite 8 biti.
|
Numele registrului pe 16 biti |
7 0 |
7 0 |
Functii speciale |
Registre adresabile la nivel de octet |
AX |
AH |
AL |
Inmultiri,impartiri,functii I/O, bucle |
DX |
DH |
DL |
||
CX |
CH |
CL |
contor |
|
BX |
BH |
BL |
Registre baza |
|
|
BP |
|
||
|
SI |
|
Registre index |
|
|
DI |
|
||
|
SP |
|
Indicator de stiva |
Registrele baza pastreaza adresa de baza a structurilor de date.
Registrele index stocheaza offset-ul in cadrul structurii de date.
Registrul indicator de stiva contine offset-ul varfului stivei in cadrul segmentului de stiva.
Sunt reprezentate de registrele segment.
|
150 |
|
CS |
|
selector segment de cod |
DS |
|
selector segment de date |
SS |
|
selector segment de stiva |
ES |
|
selector segment de date suplimentar |
Pastreaza selectorii pentru patru segmente distincte care definesc spatiul curent adresabil al programului; pentru realizarea accesului la un cuvant sau octet din cadrul segmentului este necesara incarcarea prealabila a unui din registrele segment cu selectorul segmentului;
Fiecare registru segment permite calcularea adresei pentru un anumit tip de segment;
Selectorul de segment are formate si roluri diferite in functie de modul de adresare in care se afla, real sau virtual.
In modul real: calculul adresei fizice este:
16 biti |
|
|
|
selector segment |
0000 |
|
|
|
16 biti |
|
|
|
offset |
|
|
20 biti |
|
||
adresa fizica |
|
||
Selectorul reprezinta cei mai semnificativi 16 biti din cei 20 ai adresei de baza a segmentului; cei mai putin semnificativi 4 biti ai adresei de baza sunt 0, determinand ca adresa de inceput a oricarui segment sa fie multiplu de 16.
In modul virtual, selectorul are o structura mai complexa, indicand un segment de 16ko in spatiul adreselor virtuale.
Trei registre de cite 16 bit sint folosite de catre 80286.
|
15 0 |
|
F |
|
Indicator de conditii |
IP |
|
Indicator al instructiunii |
MSW |
|
Cuvant de stare a masinii |
IP (Instruction Pointer
contine offset‑ul urmatoarei celule de memorie al carei continut trebuie extras in vederea rularii programului curent;
orice adresa la 80286 este compusa din selector:offset, deci nu exista un contor propriu-zis al programului. In locul sau se foloseste perechea CS:IP care defineste un registru pe 32 de biti.
inregistreaza caracteristicile specifice rezultatelor obtinute in urma operatiilor aritmetice si logice sau controleaza operarea lui 80286;
are urmatoarea structura:
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
NT |
IOPL |
OF |
DF |
IF |
TF |
SF |
ZF |
|
AF |
|
PF |
|
CF |
Unde:
Bit |
Nume |
Functia |
|
0 |
CF |
Carry Flag |
Este '1' daca a avut loc imprumut sau transport, altfel este '0'. |
2 |
PF |
Parity Flag |
Este '1' daca ultimii 8 biti ai rezultatului contin un numar par de '1', altfel este '0' |
4 |
AF |
Auxiliary Flag |
Este '1' daca a avut loc transport sau imprumut de la c.m.p.s. tetrada a rezultatului, altfel '0'. |
6 |
ZF |
Zero Flag |
'1' daca rezultatul este 0, altfel este '0'. |
7 |
SF |
Sign Flag |
Este egal cu c.m.s. bit al rezultatului |
8 |
TF |
Single Step (Trap) Flag |
Daca este setat,o intrerupere intr‑un singur pas este realizata dupa executia urmatoarei instructiuni. TF este resetat de intreruperea intr‑un singur pas. |
9 |
IF |
Interrupt Enable Flag |
Cind este setat, sunt permise intreruperile pe linia INT |
10 |
DF |
Direction Flag |
Determina instructiunile cu siruri sa autodecrementeze registrul index corespunzator cind este setat. Cind este resetat determina autoincrementarea. |
11 |
OF |
OverFlow Flag |
Este setat daca rezultatul are o dimensiune mai mare decait operandul destinatie, altfel este '0' |
12, 13 |
IOPL |
I/O Priviledge Level |
Este utilizat in modul protejat si indica nivelul minim al privilegiului necesar pentru a stoca operatii de intrare/iesire |
14 |
NT |
Nested Task |
Este folosit in modul protejat si indica daca exista taskuri imbricate, fapt ce conditioneaza modul efectuarii operatiei de return din taskul curent |
Observatie: Modificarea indicatorilor IF, IOPL si NT se face doar dupa testarea prealabila a dreptului de acces; in acest mod sunt inhibate actiuni asupra lor efectuate de catre programe neautorizate. |
pastreaza informatii despre configurarea si starea procesorului 80286;
printre alte scopuri acest registru permite activarea modului protejat, de aceea, este accesibl programatorului;
desi are 16 biti, doar ultimii 4 sunt implementati. Primii trei biti sunt setati prin program la initializarea modului protejat, iar al patrulea este bit de stare setat automat de UCP in anumite momente.
MSW |
|
TS |
EM |
MP |
PE |
MSW prezentat are componente cu urmatoarea semnificatie:
PE(Protected Mode Enable) pune 80286 in modul protejat si poate fi sters doar prin RESET.
MP(Monitor Processor Extension) permite instructiunii WAIT sa genereze o exceptie care semnifica lipsa procesorului extensie(exceptia 7).
EM(Emulate Processor Extension) genereaza exceptia 7 pe instructiunea ESC pentru a permite emularea procesorului extensie.
TS(Task Switched) indica faptul ca urmatoarea instructiune ce utilizeaza procesorul extensie va cauza exceptia 7, permitand software‑ului sa testeze daca contextul procesorului extensie apartine task‑ului curent.
Instructiunile LMSW si SMSW pot sa incarce si sa memoreze MSW in modul real.
Copyright © 2024 - Toate drepturile rezervate