Microprocesorul 8086
Acest microprocesor a aparut īn 1978 si este primul microprocesor pe 16 biti. El a cunoscut o raspāndire extrem de larga, facilitata si de aparitiile ulterioare complementare cum ar fi:
- generatorul de tact 8284
- controlerul de magistrala 8288
- coprocesorul matematic 8087
- coprocesorul de intrare / iesire 8089
Dupa microprocesorul 8086 a aparut si microprocesorul 8088. Cu toate ca este prevazut cu o magistrala externa de 8 biti a cunoscut la un moment dat o raspāndire relativ mare printr-un microcalculator al firmei IBM.
Dintre caracteristicile functionale ale lui 8086 cele mai importante sunt:
- registrele interne si magistrala externa de date opereaza pe 16 biti.
- microprocesorul poate adresa direct 1 Mo de memorie
- magistralele de date si adrese sunt multiplexate, astfel ca o parte din terminale (pini) īndeplinesc functii duble. Urmare acestui fapt a rezultat o capsula cu un numar mai redus de terminale, cu toate avantajele (si cāteva dezavantaje) ce rezulta din aceasta.
- viteza de lucru relativ ridicata (evidentla data elaborarii) determinata de:
a. tactul de 5 MHz pentru varianta cea mai raspāndita,existānd si variante cu 4 MHz si 8 MHz.
b. utilizarea conceptului de suprapunere car permite aducerea īn avans aunor instructiuni īn memorie pe durata unor cicluri ce nu utilizeaza magistralele
c. o gama larga de aplicatii datorata existentei celor doua moduri specifice de functionare, minim MN si maxim MX.
De la aparitia īn 1978 a acestui tip de microprocesor si pīna īn zilele noastre dezvoltarea domeniului microprocesoarelor a fost si este atīt de dinamica īncīt sunt legitime cīteva īntrebari:
1. De ce microprocesorul 8086 daca cele actuale lucreaza cu frecvente de tact de aproape 1000 de ori mai mari, īn conditiile unui numar de tranzistoare integrate de 1000 ori mai mare ( 30.000 la 8086 fata de 40.000.000 la Pentium 4).
2. Pīna cīnd va continua aceasta dinamica a evolutiei.
R1. a. Pentru ca dezvoltarile Intel ulterioare au la baza caracteristicile fundamentale ale lui 8086, perfectionate continuu.
b. Pe baza cunoasterii structurii proprii si a circuitelor de utilizare ale microprocesorului 8086 se poate analiza cu usurinta functionarea microprocesoarelor pe 8 biti si īntelegerea prin extenie a functionariicelor pe 32 de biti.
R2. Greu de dat un pronostic
1. Schema functională 353b11d ; si modurile de lucru ale μP 8086
Microprocesorul 8086 a fost astfel conceput īncīt sa se poata utiliza īn sisteme cu grade diferite de complexitate. Īn acest sens el are posibilitatea de-a functiona īn doua moduri de lucru esentialmente diferite si anume:
modul minim - MN
modul maxim - MX
Existenta celor doua moduri de functionare este o caracteristica utila care ulterior a fost dezvoltata si extinsa la microprocesoarele pe 32 de biti care sunt prevazute cu posibilitatea functionarii īn 4 moduri de lucru.
Revenind la cele doua moduri de lucru ale 8086 prin ele se asigura pe de-o parte separarea resurselor hardware si software ale sistemului īntre diferite straturi de program. Configuratia functională 353b11d ; a terminalelor se prezinta īn figura 2.01.
Dat fiind faptul ca terminalele MP pot fi īmpartite īn doa categorii, conform modului īn care sunt utilizate astfel:
a. terminale cu acelasi rol īn ambele moduri
b. terminale cu roluri diferite īn cele doua moduri
Terminalele din prima categorie sunt:
A16/S3÷A19/S6 Address / Status Bus - magistrala de Adrese/Stari - compusa din iesiri multiplexate cu 3 stari logice
Dupa cum va rezulta īn continuare, īn timpul functionarii unui sistem cu microprocesor se succed 4 stari, īn care terminalelede mai sus au urmatoarele functiuni:
starea T1 - terminalele reprezinta cele mai semnificative linii ale magistralei de adrese - A
Starile T2, T3 si T4 - terminalele reprezinta informatia de stare dupa cum urmeaza:
- S3 si S4 indica registrul de segment folosit la calculul adresei fizice
- S5 reproduce indicatorul pentru īntreruperi IF
- S6=0 īntotdeauna
2. AD0÷AD15 Address/Data Bus - magistrala multiplexata de adrese si date, cu trei stari logice ()
Conform starii de functionare īn care ne aflam aceste terminale reprezinta:
īn starea T1 - magistrala de adrese
īn starile T2, T3 si T4 - magistrala de date
3. - Bus High Enable / Status (Validarea jumatatii superioare a magistralei / Stare) -este o iesire cu 3 stari logice,
Conform starii dintr-un ciclu de functionare īn care ne aflam aceste terminale reprezinta:
īn stare T1 indica existenta / inexistenta unui transfer de date pe jumatatea superioara a magistralei de date si daca el exista se valideaza aceasta operatie
Īn starile T2, T3 si T4 este bit de stare
- Read control (controlul citirii) este o iesire cu 3 stari logice, activa īn starea 0 atunci cīnd Mp efectueaza un ciclu de citire sau de intrare
READY- Wait State control este o intrare pentru sincronizarea cu porturile mai lente si cu circuitele de memorie.
INTR - Interrupt request (cerere de īntrerupere) - este o intrare pentru cereri de īntrerupere mascabile
- Wait on test control (Controlul starii de asteptare īn test) este o intrare utilizata de instructiunea Wait, dupa cum urmeaza:
- 0 - executia programului continua
- 1 - se executa o stare de asteptare
Aceasta intrare poate fi folosita si pentru sincronizare cu actiuni externe sistemului cu microprocesor.
NMI - Non Mascable Interrupt Request (cerere de intrerupere nemascbila) - este o intrare pentru cereri de īntrerupere nemascabile.
RESET - este o intrare pentru initializarea (Reset-ul) microprocesorului
CLK - Clock- este intrarea de tact. Tactul necesar pentru functionarea microprocesorului tactul are urmatoarele caracteristici:
f=5 Mhz; k= 1/3
Terminalele din a doua categorie au, dupa cum am mai aratat, functiuni distincte īn cele doua moduri posibile de lucru - Minim sau Maxim (MN / MX).
Īn modul minim
terminalele acestea au urmatoarele semnificatii si functiuni:
1. - Memory / Input,Output Control -este o iesire cu 3 stari logice.
a. daca: se executa un ciclu de acces la memorie
b. daca: se xecuta un ciclu de transfer cu porturile de intrare sau iesire.
2. - Write Control - este tot o iesire cu 3 stari logice, activa la nivelul 0. Ea se activeaza atunci cānd microprocesorul executa un ciclu de scriere sau de iesire.
3. (QS1) Interrupt Acknowledge (acceptarea unei cereri de īntrerupere mascabile) -este o iesire cu 3 stari logicecare se activeaza atunci cānd mp executa un ciclu de acceptare a unei cereri de īntrerupere mascabile
4. ALE (QS0) - Address Latch Enable - este o iesire cu trei 3 stari logice care se activeaza cānd pe magistrala comuna de date / adrese sunt active adresele. Ea se poate utiliza pentru demultiplexarea acestei magistrale īn vederea īncarcarii adreselor īn registre.
5. - Data Transmit/Receive - este o iesire cu trei stari logice care indica sensul transferului pe magistrala de date, dupa cum urmeaza:
se executa transmitere de date pe magistrala
se executa receptie de date de pe magistrala
6. Data Enable - este o iesire cu trei stari logice care īn stare activa:
valideaza transferul de date pe magistrala
7. HOLD - Hold Request - este o intrare la care se aplica cererea de cedare a magistralelor
8. HLDA - este o iesire cu 3 stari logice, prin care microprocesorul raspunde cererii de cedare a magistralelor. Raspunsul consta īn activarea acestei iesiri, activare care se produce numai dupa decuplarea microprocesorului de la magistrale.
Īn modul maxim
cele opt terminalele care au functiuni diferite īn cele doua moduri au urmatoarele semnificatii si functiuni:
1. BusCycle Status
2. BusCycle Status
3. BusCycle Status
Toate trei sunt iesiri cu trei stari logice care īmpreuna constituie liniile de stare care codifica tipul de ciclu pe care-l va executa microprocesorul, conform tabelului 2.1. Cele trei linii de stare vor furniza semnalele de intrare pentru controllerul de magistrala 8288. Acesta din urma este cel care furnizeaza semnalele de comanda si control a transferului cu porturi si memorii.
|
|
|
Tipul de ciclu executat |
Acceptare unei cereri de īntrerupere |
|||
Intrare |
|||
Iesire |
|||
Halt |
|||
Alegere Cod de Instructiune |
|||
Citire Date |
|||
Scriere Date |
|||
Combinatie inactiva |
4. (HOLD) - Request/Grant Bus Access Control
5. (HLDA) - Request/Grant Bus Access Control.
Aceste doua linii bidirectionale sunt independente si utilizate de microprocesor pentru primirea si acceptare cererii de cedare a magistralei (lor). Cererea si acceptare se produc īn urma unui dialog ce include fazele:
Cerere - Acceptare - Renuntare
6. - Bus Priority Lock Control - este o iesire cu 3 stari logice. Prin activarea acestei iesiri microprocesorul semnaleaza faptul ca nu doreste acceptarea cererii de cedarea magistralei. Rezolvarea acestei contradictii trebuie asigurata de un arbitru (extern de magistrala) - 8289 atunci cānd:
7. QS0 (ALE) Instruction Queue Status
8.QS1 Instruction Queue Status Acestea sunt doua iesiri care semnalizeaza (indica) tipul de informatie preluata īn starea anterioara din sirul de instructiuni de unitatea de executie.
2. Structura microprocesorului 8086
Conform functiunilor pe care trebuie sa le īndepineasca īntr-un sistem complex microprocesorul 8068 are structura din figura 2.02. Īn ea se observa existenta a doua unitati ce functioneaza independent una de alta. Mai mult decāt atāt īn relatie reciproca functionarile sunt asincrone. Cele doua unitati sunt:
1. BIU - Bus Interface Unit -Unitatea de interfata cu magistralele
2. EU - Execution Unit - Unitatea de Executie
Existenta celor doua unitati permite obtinere unor viteze de lucru mai mari, putāndu-se astfel efectua activitati ce presupun suprapunerea temporara a unor operatii.
2.1. Unitatea de interfata cu magistralele - BIU
Aceasta unitate este cea care face posibila interfatarea microprocesorului cu exteriorul. Interfatarea se realizeaza prin intermediul magistralelor de date si de adrese. Magistralele, utilizate īn regim multiplexat trebuie sa permita transferul adreselor configurate pe 20 de biti si a datelor configurate pe 16 biti. Pentru aceasta ele sunt realizate si utilizate asa cum a rezultat din figura 1.01, adica:
- o magistrala bidirectionala multiplexata 16 biti, de date (D0 - D15) si de adrese (A0 - A15) notata ca īnsumare AD0 - AD15
- o magistrala unidirectionala multiplexata de 4 biti, de adrese (A16 - A19) si de informatii de stare (S3 - S6).
Din punctul de vedere al repartitiei temporale a utilizarii magistralelor:
- Atunci cānd AD0 - AD15 functioneaza ca magistrala de adrese atunci si A16 - A19 / S3 - S6 functioneaza tot ca magistrala de adrese transferānd 4 din cei mai semnificativi biti.
- Atunci cānd AD0 - AD15 functioneaza ca magistrala de date, magistrala unidirectionala A16 - A19 / S3 - S6 transfera informatiile de stare S3 -S6.
BIU genereaza semnale de comanda si de stare.
O functie importanta a acestei unitati este cea care implementeaza o facilitate esentiala si anume aducerea īn avans a instructiunilor. Acestea se plaseaza īntr-o memorie FIFO cu capacitatea de 6 octeti numita sir de instructiuni. Daca īn memorie sunt liberi cel putin doi octeti si nu exista din partea EU o solicitare de acces la magistrala BIU va aduce īn avans o instructiune.
Īn ce priveste preluarea unei instructiuni ea se efectueaza de la adresa imediat urmatoare celei aflate in executie curenta. Daca apare un salt, BIU va initializa sirul de instructiuni ce urmeaza a fi executate si umple sirul cu instructiuni citite de la (īncepānd) cu noua adresa.
Aceasta facilitate asigura o crestere substantiala a vitezei de lucru, operatia de executie a instructiunilor nefiind īntārziata de timpul necesar aducerii ei. Daca pe durata executiei unei instructiuni apare solicitarea de transfer a unui operand īntre EU si memorii sau porturi se comunica BIU adresa pe 16 biti a operandului si tipul de ciclu ce trebuie executat. Utilizand UA ;i registrele BIU calculeaz[ adresafiyica a operandului (pe 20 de biti) , genereaza semnale de comanda pentru transferul operandului. Cererea de operand nu se execut[ asincron ci numai dup[ incheierea unui ciclu de aducere anticipata. Dac[EU a executat o instructiune de sal]t (sau o alta care a modificat secventa normala) BIU va initializa sirul, va citi noua instructiune, o va transmite catre EU si apoi va "umple" sirul (de instructiuni) cu urmatoareleinstructiuni īncepānd de la noua adresa.
Asa cum s-a mai aratat, aceasta facilitate s-s pastrat la toate procesoarele Intel ulterioare, determinānd eliminarea timpului suplimentar necesar aducerii instructiunii. Acest avantaj dispare totusi- adevarat ca īn putine cazuri- atunci cānd apar modificari īn secventa normala de executie a instructiunilor.
Mod de lucru:
a. BIU executa o aducere a unei instructiuni īn timp ce EU solicita transferul (aducerea sau expedierea) unui operand. BIU īncheie ciclul īn curs si apoi trece la efectuarea solicitarii EU.
b. BIU nu executa o aducere a unei instructiuni.
EU solicita transferul unui operand comunicānd pe 16 biti adresa operandului si tipul de ciclu ce se va executa.
UA si registrele din BIU calculeaza adresa fizica a operandului -exprimata pe 20 de biti. BIU genereaza semnalele de comanda necesareefectuarii transferului operandului si intermediaza transferul dintre microprocesor si exteriorul sau ( īn majoritatea cazurilor memorii sau porturi).
2. Unitatea de Executie - EU
Acest bloc functional realizeaza urmatoarele functiuni:
1. Decodifica si executa instructiunile pe care le extrage succesiv din sirul de instructiuni al BIU.
2. Transmite solicitarea de aducere a operanzilor necesari, īmpreuna cu adresa (pe 16 biti) a acestora.
3. Pozitioneaza indicatorii de stare pe durata executarii unei instructiuni.
4. Asteapta aducerea de catre BIU a urmatoarei instructiuni de executat īn cazul īn care aceasta nu este disponibila īn sirul de instructiuni sau acesta este gol.
3. Registrele
O categorie de circuite cu larga raspāndire īn structura interna a microprocesorului 8086 dar si īn circuitele exterioare acestuia o reprezinta registrele. Īn cadrul acestui paragraf ne vom referi la registrele interne ale microprocesorului.
Atāt īn compunerea unitatii de executie cātsi a unitatii de interfatare cu magistrala gasim registre cu functiuni specifice, predestinate. Dealtfel, faptul ca īn structura microprocesorului 8086 majoritatea sunt registre specifice, putine fiind cele generala este una din caracteristicile acestui tip de microprocesor.
Microprocesorul 8086 are 4 categorii de registre si anume:
1. registre de date
2. registre de segment
3. registre de acces īn interiorul unui segment
4. registre indicator - de instructiune
- de conditii si control
3.1. Registrele de date
formeaza īmpreuna cu registrele de acces īn interiorul unui segment registrele generale. Cea mai raspāndita reprezentare a registrelor, putem spune consacrata este cea din figurile urmatoare:
0 |
0 | |
AH |
AL |
Registru Acumulator |
BH |
BL |
Registru de Baza |
CH |
CL |
Registru Contor |
DH |
DL |
Registru de Date |
Specificul acestor registre de 16 biti este acela ca pot fi accesate si separat, ca doua registre de 8 biti, partile componente numindu-se:
- superior - H
- inferior - L.
Aceste registre se utilizeaza īn principal īn operatii aritmetice si logice. Pe lānga aceasta pot īndeplini si urmatoarele functiunile prezentate tabelar:
Registrul |
Functiunea |
AX |
Īnmultire, Īmpartire, I/O pe cuvānt |
AL |
Īnmultire, Īmpartire, I/O pe octet, Aritmetict zecimala |
AH |
Īnmultire, Īmpartire, I/O pe octet, |
BX |
Translatare |
CX |
Contor pt.operatii cu siruri, bucle |
CL |
Contor pt. Deplasari si rotatii |
DX |
Īnmultire, Īmpartire, I/O indirecta |
3.2. Registrele de segment
Dispunānd de 20 de linii de adresa microprocesorul 8086 poate adresa o memorie cu capacitatea:
0 | |
CS |
Cod |
DS |
Date |
SS |
Stiva |
ES |
Suplimentare (date) |
Īntrucāt registrele microprocesorului sunt de 16 biti, vor putea fi accesati doar:
de memorie s-a adoptat solutia de īmpartire a memoriei īn segmente de cāte 64 de ko, rezultānd un numar de 16 asemenea segmente.
Īntrucāt īntr-un anumit moment microprocesorul poate lucra doar cu patru segmente, acestea se vor repartiza astfel:
- un segment de cod
- un segment de stiva
- doua segmente de date
Segmentele mentionate contin (reprezinta) adresele de īnceput (īnceputurile de adresa) ale segmentelor dupa cum urmeaza:
CS - |
pentru Segmentul de Cod |
DS - |
pentru Segmentul de Date |
SS - |
pentru Segmentul de Stiva |
ES - |
pentru Segmentul de (date) Suplimentare |
3.3. Registre pentru accesul īn interiorul unui segment
Asa cum s-a mai aratat acesta registre formeaza īmpreuna cu cele de date registrele generale ale microprocesorului. Ele pot fi reprezentate ca īn tabelul de mai jos:
SP |
Indicator de stiva |
(registru indicator) |
BP |
Registru de baza |
(registru indicator) |
SI |
Index de stiva |
(registru index) |
DI |
Index pt. destinatie |
(registru index) |
Registrele indicator, adica cele de stiva si cele de baza, contin deplasamentul adresei la care se gaseste un operand īn interiorul segmentului de stiva, dupa cum urmeaza:
- SP - indicatorul de stiva care indica deplasamentul adresei la care se gaseste vārful stivei, raportat la segmentul stivei - SS
- BP - registrul de baza care indica deplasamentul adresei la care se gaseste un operand īn interiorul la segmentului stiva - SS
Registrele index, adica cele de stiva si cele pentru destinatie, contin deplasamentul adresei la care se afla un operand īn interiorul segmentelor Date - DS si (date) Suplimentare - ES. Aceste din urma registre sunt folosite la operatiile cu siruri, unde :
SI - index sursa care indica adresa operandului sursa
DI - index destinatie care indica adresa operandului destinatie.
3.4. Registre indicatori de instructiuni si de conditii si control
Aceste registre au o structura care se prezinta īn tabelul de mai jos:
0 | |
IP |
Registru indicator de instructiuni |
FLAGS |
Registru indicatorilor de conditii si control de instructiuni |
Īn ce priveste segmentul indicator de instructiune,
IP - acesta indica adresa instructiunii urmatoare celei care este īn curs de executie. Indicarea se face prin aceea ca el indica deplasamentul adresei instructiunii ce se va executa, īn interiorul segmentului de cod - CS. Este vorba de un registru de 16 biti.
Īn ce priveste segmentul indicatorilor de conditii si control,
FLAGS - acesta este un registru de 16 biti din care sunt utilizati doar 9, si anume cei aferenti celor mai semnificative ranguri. Ele (rangurile) constituie indicatorii microprocesorului, grupati astfel:
6 ranguri (biti) indicatori de conditii dupa cum urmeaza:
- CF (Carry Flag) - bitul 0 - este un indicator de transport care se activeaza cānd exista un transport sau un īmprumut īn respectiv din rangul cel mai semnificativ
- PF (Parity Flag) - bitul 2 - este un indicator de paritate care se activeaza atunci cānd rezultatelul unei operatii aritmetice sau logice este un octet par (cu numar par de unitati)
- AF (Auxiliary Flag) - bitul 4 - este un indicator de transport auxiliar, care se activeaza atunci apare un transport sau un īmprumut īn operatiile aritmetice cuoepranzi prezentati īn BCD, īntre digitii aceluiasi octet.
- ZF (Zero Flag) - bitul 6 este un indicator de zero, care se activeaza atunci rezultatul unei operatiile aritmetice sau logice este zero (0).
- SF (Sign Flag) - bitul 7 - este un indicator de semn, care contine (este) bitul cel mai semnificativ al rezultatului o
unei operatii (copiaza rangul de semn) luānd (avānd) valori dupa cum urmeaza:
īn cazul unui rezultat negativ
īn cazul unui rezultat pozitiv
- OF (Overflow Flag) - bitul 11 - este un indicator de depasire, care se activeaza atunci cānd se produce o depasire a capacitatii registrelor determinata de operatii aritmetice cu operanzi cu semn, luānd valori dupa cum urmeaza:
exista un transport / īmprumut īn / din rangul de semn.
nu exista un transport / īmprumut īn / din rangul de semn.
2. 3 ranguri (biti) de control si anume:
- TF (Trap Flag) - bitul 8 - un indicator al modului de lucru pas cu pas, conform corespondentei:
microprocesorul lucreaza īn modul de lucru pas cu pas,
- IF (Interrupt Flag) - bitul 9 - este unindicator pentru īntreruperi, care ia valorile:
microprocesorul va accepta cererea (ile) de īntrerupere mascabila.
microprocesorul ignora (refuza) cererea (ile) de īntrerupere mascabila.
- DF (Direction Flag) - bitul 10-este un indicator de directie utilizat la operatiile cu siruricare ia valori corespunzator corespondentei:
adresa operandului (din sir) este incrementata (crescuta, marita) dupa fiecare transfer
adresa operandului (din sir) este decrementata (scazuta, micsorata) dupa fiecare transfer
Instructiunile PUSH si POPF permit modificarea tuturor si oricarui indicator. Īn cazul indicatorilor:
- de conditie CF
- de control - IF - interrupt
- DF - direction
exista si instructiuni de adresare directa.
|