Sunteți pe pagina 1din 23

Structura procesoarelor din familia INTEL Structura procesorului 286

Funcionarea (ciclul) procesorului: 1.Citete instruciunea - pe durata acestui ciclu se transmite adresa instruciunii de executat i se aduce, din memorie, instruciunea n CPU (ciclul Fetch); 2. Decodific instruciunea (i n paralel citete un posibil operand de 16 bii); 3. Transmite adresa i citete un operand surs, din memorie, dac se specific n instruciune, i citete valoarea registrului destinaie (ciclul Read); 4. Execut instruciunea (ciclul Execution); 5. Transmite adresa i scrie rezultatul n memorie, dac 1 instruciunea cere (ciclulC2 Write);

Execuia secvenial a fazelor unei instruciuni

Execuia paralel a fazelor unei instruciuni Din punct de vedere al vitezei de execuie sunt evidente trei lucruri: - instruciunile mai lungi -> mai mult timp pentru execuie; - instruciunile care nu fac referire la memorie se vor executa mai rapid; - instruciunile ce utilizeaz moduri de adresare complexe se vor executa mai lent;

C2

C2

D15 D0 = magistrala, bidirecional, de date; ea este folosit ca intrare pentru date de la memorie, porturi de I/O, cicluri de recunoatere ntrerupere i folosit ca ieire pentru datele transmise la memorie sau porturi de I/O; A23 A0 = magistrala de adrese (de ieire), care furnizeaz adresa fizic de memorie sau adresa unui port de I/O; BHE\ = acest semnal indic un transfer de date pe octetul superior (Bus High Enable), al magistralei de date (D15 D8). Acest semnal, de ieire, mpreun cu linia de adres A0 determin tipul de transfer realizat pe magistral: octet superior (D15 D8), octet inferior (D7 D0) sau cuvnt (D15 D0); M/IO\ = acest semnal, de ieire, separ accesele la memorie de cele din spaiul I/O (Memory / Input-Output); dac este 1 pe durata lui TS se execut un ciclu de memorie sau halt; dac este 0 se execut un ciclu I/O sau recunoatere ntrerupere.
C2 4

S1\, S0\ = stare magistral, care indic iniierea unui ciclu, i mpreun cu M/IO\ i COD/INTA\ definesc tipul ciclului: halt, recunoatere ntrerupere, citire/scriere de date n memorie, citire/scriere date de la/la porturi I/O, citire instruciune din memorie (fetch), nu este ciclu magistral, i unele rezervate. COD/INTA\ = semnal (Code/ INTerrupt Acknowledge), de ieire, utilizat pentru separarea ciclurilor fetch de ciclurile de citire date din memorie, respectiv cicluri de recunoatere ntrerupere de cicluri I/O, n combinaie cu celelalte semnale (S1\, S0\, M/IO\). LOCK\ = semnalul 'bus LOCK' specific unui alt modul master de pe magistrala sistemului c nu poate prelua controlul magistralei. Semnalul este activat de prefixul instruciune cu acelai nume, LOCK, sau automat de hard- ul procesorului 286 pe durata execuiei unei instruciuni XCHG cu memoria, pe durata recunoaterii unei ntreruperi sau pe durata unui acces la tabela de descriptori de segment.
C2 5

READY\ = semnalul de intrare 'bus READY' termin un ciclu de magistral; ciclurile de magistral sunt extinse fr limit pn cnd semnalul READY\ devine activ (LOW). HOLD, HLDA = cele dou semnale 'bus HOLD request' i 'bus HOLD Acknowledge', primul de intrare, iar cel de-al doilea de ieire permit controlul magistralei; semnalul HOLD permite unui alt modul master (procesor) s cear controlul asupra magistralei locale; cnd controlul este recunoscut (cedat), procesorul 286 trece magistrala sa (date, adrese, stri) n starea de mare impedan, i activeaz semnalul de rspuns HLDA, intrnd n starea 'hold' (magistrala suspendat). Magistrala este preluat de celalalt master (procesor) pn cnd semnalul HOLD devine inactiv (LOW), iar procesorul 286 dezactiveaz linia HLDA, rectignd controlul asupra magistralei locale.

C2

INTR = activarea acestui semnal, de intrare, (HIGH) va cere procesorului 286 s-i suspende execuia programului curent i s serveasc o cerere extern ('INTerrupt Request'). ntreruperile pot fi mascate (anulate), cnd IF = 0. Cnd 286 rspunde la o cerere de ntrerupere, el realizeaz 2 cicluri magistral de recunoatere ntrerupere, pentru a citi un vector de ntrerupere, de 8 bii, care identific sursa ntreruperii. Pentru a asigura ntreruperea programului, INTR trebuie s rmn activ pn este completat primul ciclu de recunoatere ntrerupere, pe durata cruia se transmite semnalul de recunoatere a ntreruperii INTA\. NMI = semnalul de intrare 'Non Maskable Interrupt', activ (HIGH), reprezint tot o cerere de ntrerupere extern, dar nemascabil, deci nu are nici o semnificaie starea indicatorului IF pentru acest semnal. Pentru aceast ntrerupere nu se realizeaz cicluri de recunoatere ntrerupere, i se genereaz un vector de ntrerupere intern, cu valoarea 2.
C2 7

PEREQ, = 'Processor Extension operand REQuest', intrare i PEACK\, = 'Processor Extension operand ACKnowledge', de ieire, extind facilitile de protecie i administrare a memoriei virtuale, ale procesorului 286, i pentru extensii procesor (80287); BUSY\, = semna intrare, 'processor extension BUSY' i ERROR\, = 'processor extension ERROR', indic condiia de operare a unei extensii procesor pentru procesorul 286;

C2

C2

Pe durata unui ciclu de magistral se realizeaz operaiile: se activeaz pe magistrala de adrese, adresa unei locaii de memorie, sau a unui port I/O, i se memoreaz ntr-un registru de adrese, extern; se genereaz semnalul de comand corespunztor, pentru citire/scriere date; dispozitivul selectat (memoria sau portul I/O) realizeaz transferul de date, i transmite procesorului un semnal de rspuns, pentru a ncheia ciclul. Controllerul de magistral (82288) decodific semnalele de stare (S1\, S0\, M/IO\, COD/INTA\ i READY\) pentru a genera comenzi de citire /scriere (MRDC\, MWTC\, IORC, IOWC) i semnale pentru comanda latch-urilor de adrese i transmisie/recepie date (ALE, DEN, DT/R\).
C2 10

32 bit Data Bus 32 bit Data Bus Linear Address Bus Barrel Shifter Register File Base/ Index Bus 32 ALU Segmentation Unit Descriptor Registers Paging Unit 32 PCD, PWT 8K Byte Cache Cache Unit 32

64 bit Interunit Transfer Bus

Bus Interface Cache Unit Write Buffers 32 4 x 80 Data Bus

A2 - A31, BE0# - BE3#

Limit and Attribute PLA

Translation Lookaside Buffer

20 Physical Address

D0 - D31 W/R#, D/C#, M/IO#, PCD, PWT, RDY#, LOCK#, PLOCK#, BOFF#, A20M#, BREQ, HOLD, HLDA, INTR, NMI, RESET, FERR BRDY#, BLAST#

32

Transceivers

128 Displacement Bus micro-instruction 32 Prefetcher 32 Byte Code Queue Code Stream Floating Point Unit F. P. Register File Control and Protection Test Unit Control ROM Instruction Decoded Instruct. Decode 24 2 x 16 Bytes

Bus Control Request Sequencer Burst Bus Control Bus Size Control Cache Control Parity Generation and Control

BS16#, BS8#

KEN#, FLUSH# AHOLD, EADS#

PCHK# DP0 DP3

C2

11

C2

12

La procesorul 386/486 acest registru (EFLAGS) are 32 bii, dintre care ultimii 16 sunt identici cu acetia, dar n plus mai sunt utilizai nc doi bii (16 i 17) care au urmtoarea semnificaie: RF (Resume Flag) - acest indicator dezactiveaz, temporar, excepiile de depanare (debug), astfel nct s se poat restarta o instruciune dup o excepie de depanare, fr a se genera, imediat, o alt excepie de depanare; adic nu se execut o instruciune de breakpoint, dac este returnat controlul de excepia de depanare direct la o astfel de instruciune. VM (Virtual 8086 Mode) - acest bit indic c se execut un program 8086, dac este poziionat pe 1. Bitul VM furnizeaz modul V86, in modul protejat de operare

C2

13

C2

14

C2

15

Descriptorii de segment de date i cod, conin, pe lng adresa de baz a segmentului, i alte atribute de segment: - dimensiunea segmentului (1 64 Koctei); - drepturi de acces (read only, read/write, execute only, execute/read); - prezena n memorie (pentru sistemele cu memorie virtual).

C2

16

C2

17

Nivelurile de privilegiu
Mecanismele de protecie ale procesorului 286 se bazeaz pe noiunea de 'ierarhie de ncredere' (sau de privilegiu). Exist patru niveluri de privilegiu:0 - cel mai privilegiat, 3 - cel mai puin privilegiat. Urmtoarele obiecte, recunoscute de procesor, conin niveluri de privilegiu: - descriptorii de segment conin un cmp DPL - Descriptor Privilege Level, adic descriptor de nivel de privilegiu; - selectoarele de segment conin un cmp RPL - Requestor's Privilege Level, adic nivelul de privilegiu al procedurii creia aparine selectorul; - un registru intern al procesorului memoreaz CPL Current Privilege Level, care este egal cu DPL al segmentului pe care l executa procesorul.
C2 18

C2

19

Accesul ntre nivelele C2 privilegiu (protecie) de

20

Modaliti de apel, prin pori


C2 21

Segmente de stare task (TSS) Un TSS este un segment special de memorie, pe care procesorul l utilizeaz pentru a suporta mutitasking. Acesta conine o copie a tuturor registrelor ce trebuie salvate, pentru a reface starea unui task; el mai conine valori ce sunt asociate task-ului, dar nu sunt memorate n registrele CPU. TSS conine trei selectori de segment de stiv, adiionali, (SS0, SS1, SS2), i trei pointeri de stiv corespunztori (ESP0, ESP1, ESP2). Cnd un apel sau ntrerupere, printr-o poart determin o modificare n privilegiu, noile SS:ESP, sunt ncrcate din TSS. Registrul de task (TR) conine selectorul TSS activ, curent. Cnd apare o comutare de task, toate registrele task-ului curent executat sunt salvate n TSS-ul activ. Registrul task se ncarc, apoi, cu selectorul unui nou TSS, i fiecare registru general este ncrcat cu valorile respective, din noul TSS. TSS mai conine legtura napoi (back link) care reprezint selectorul TSS-ul executat anterior. C2 22

Organizarea spaiului de I/O


Procesorul are dou spaii de adrese fizice distincte: memoria i I/O (intrri/ieiri). Locaiile din spaiul I/O sunt denumite registre dispozitiv sau porturi de I/O. n general perifericele sunt plasate n acest spaiu, dei procesorul poate permite maparea (suprapunerea) n memorie a perifericelor. Pentru a accesa acest spaiu nu se utilizeaz registre segment, i deci nici mecanismul de segmentare sau pagin. Pinul M/IO\ specific spaiul de memorie adresat (fizic sau I/O). Instruciunile I/O, IN i respectiv OUT, pot furniza adresa direct n instruciune, ca o constant de 8 bii (deci pentru porturile din spaiul 0-255), sau indirect prin registrul DX (deci pentru tot spaiul de 64 K).

DMA (Direct Memory Access)


C2 23