Sunteți pe pagina 1din 6

Arhitectura interna IA-32

Microprocesorul 80386 este constituit, in principiu, dintr-o unitate de executie, o unitate de gestiune a
memoriei si o unitate de interfata cu magistrala.
Microprocesorul 80386 are 2 moduri de lucru: modul de lucru real (real mode) si modul de lucru protejat
(projected mode). In modul real microprocesorul 80386 opereaza ca un microprocesor 8086 ‘extins’ pe 32
biti. Acest mod conserva toate restrictiile de adresare de la 8086 ( adresa fizica < 1 Moctet, segmente de
lungime < 64 Kocteti), avand insa avantajul unei viteze de lucru sporite si a unei game de reprezentare a
operanzilor extinse pe 32 biti. Dupa semnalul RESET se intra in modul de lucru real.
Modul de lucru protejat permite accesul la toate optiunile functionale ale microprocesorului 80386. O
varianta particulara a acestui mod de lucru este modul virtual 8086, mod in care unitatea de segmentare
este dezactivata, ramanand in schimb activa unitatea de paginare. In acest caz microprocesorul 80386 se
comporta “ca mai multe microprocesoare 8086 virtuale” (simulate).

1. Unitatea de executie EU (Execution Unit) + Resurse

Extrage succesiv instructiunile din fisierul de instructiuni, le decodifica pe baza unui microprogram
rezident si le executa prin intermediul registrilor de uz general si unitatii aritmetice si logice (ALU).
Unitatea de executie dispune de un bloc de comanda care coordoneaza functionarea unitatii. In acest bloc
exista o memorie ROM in care este stocat microcodul de interpretare si executie pentru fiecare
intructiune.
Unitatea de executie contine 8 registri generali pe 32 de biti (care pot fi folositi atat in calculul adreselor,
cat si pentru operatiile curente), o unitate aritmetica si logica (ALU) si un registru de deplasare pe 64 biti
(SHIFTER -> utilizat la accelerarea executiei instructiunilor de deplasare, de rotire, de inmultire si de
impartire cu numere intregi).
De asemenea, EU specifica pentru BIU (Bus Interface Unit) momentul cand are datele necesare pentru a
fi transmise catre memorie sau la magistrala de I/E.

2. Descrierea registrilor:

Microprocesorul 80386 are in componenta 32 de registrii grupati in urmatoarele categorii:


- Registrii de uz general ( in numar de 8 );

o EAX, EBX, ECX, EDX, ESI, EDI, EBP si ESP.


Bitii 15…0 ai acestor registrii pot fi referiti ca registri generali pe 16 biti prin AX, BX,
CX, …. ; Bitii 31…16 nu sunt accesibili distinct, dar pot fi adusi prin instructiuni de
rotire pe pozitiile 15…0

- Registrii de segment (in modul real)/selector(in modul protejat protejat);


o Cele 6 segmente adresabile la moment curent sunt precizate de continutul registrilor de
segment CS, SS, DS, ES, FS si GS. In modul real continutul acestor registrii reprezinta
adresa fizica de baza a segmentului asociat ( < 64 Kocteti ca lungime). In modul protejat
continutul acestor registrii (registrii selector) reprezinta adrese relative in structuri de
date specifice acestui mod de lucru, structuri din care se obtin descriptorii atasati zonelor
de memorie (segmentelor) in care se face accesul. Selectorul din registrul CS indica
segmentul curent de cod, selectorul din registrul SS indica segmentul curent din stiva, iar
selectorii din registrii DS, ES, FS si GS indica segmentele curente de date.

- Registrul indicator al instructiunii urmatoare (EIP);

o Contine deplasamentul pentru formarea adresei ( in cadrul segmentului de cod) a


instructiunii urmatoare celei curente aflata in curs de executie. Deplasamentul este relativ
la adresa de baza continuta in registrul de segment de cod (CS)

- Registrul indicatorilor de conditii (PSW – Program Status Word);

o Registrul EFLAGS contine biti de stare ( pot fi cititi/ testati selectiv) si biti de comanda
( pot fi scrisi), biti care indica starea procesorului la un moment dat si, respectiv, mentin
controlul anumitor operatii.

o Indicatorii se pozitionează în ''0'' sau ''1'' după efectuarea unei operatii aritmetice, logice
sau după o instructiune de control; pot fi testati prin intermediul instructiunilor
conditionale şi se pot lua decizii în functie de valoare lor.

o CF: (Carry Flag) indicatorul de transport; se activează (în ''1'' logic) la aparitia unui bit
de transport (depăşirea lungimii normale a rezultatului) la adunare sau de împrumut la
scădere; este asociat rezultatului unei operatii aritmetice sau logice şi se comportă ca al
noulea bit (b8) al acestuia.

o PF: (Parity Flag) indicator de paritate; se activează (în ''1'' logic) când rezultatul unei
operatii aritmetice sau logice este un octet cu număr par de unităti. AF: (Auxiliary Flag)
indicator de transport la jumătate; se activează când apare transport sau împrumut în
operatiile aritmetice şi logice între bitii 3 şi 4.

o ZF: (Zero Flag) indicator de zero; se activează (în ''1'' logic) dacă rezultatul unei operatii
aritmetice sau logice este zero.

o SF: (Sign Flag) indicator de semn; contine bitul cel mai semnificativ al rezultatului, deci
copiază bitul de semn; va fi ''1'' pentru rezultat negativ şi ''0'' pentru un rezultat pozitiv.
o OF: (Overflow Flag) indicator de depăşire; se activează (în ''1'' logic) când apare
depaşirea capacitătii registrului ce contine rezultatul, ca urmare a unei operatii aritmetice
cu operanzi cu semn; va fi ''1'' când apare transport sau împrumut în/din rangul de semn.

o TF: (Trap Flag) indicator pentru modul de lucru ''pas cu pas''; dacă este pozitionat în ''1''
logic, microprocesorul nu mai lucrează la viteza dată de semnalul de tact ci în ritmul
impus de utilizator. Acest mod de lucru este deosebit de util la depanarea programelor.

o IF: (Interrupt Flag) indicator pentru controlul întreruperilor; dacă este pozitionat în ''1''
logic (prin instructiunea corespunzătoare), sunt validate cererile de întrerupere de tip

o INTR (mascabile); invalidarea acestora se face prin pozitionarea lui IF în ''0'', caz în care
cererile INTR nu vor fi luate în consideratie.

o DF: (Direction Flag) indicator de ''directie", are efect în operatiile cu şiruri. Dacă este
pozitionat în ''1'', după fiecare transfer, adresa operandului din şir se incrementează
(creşte cu 1) iar dacă este pozitionat în ''0'' adresa se decrementează.
- Registrii de control;

o Microprocesorul 80386 are trei registrii de control pe 32 de biti: CR0, CR2 si CR3.
Acesti registrii, impreuna cu registrii de adrese de sistem contin informatiile de stare
globala a procesorului ( informatii cu consecinte asupra tuturor task-urilor din sistem).

- Registri de adrese de sistem;

o Principiile de functionare ale modului protejat presupun existenta in sistem a mai multor
task-uri, dintre care doar unul singur este activ la un moment dat. Fiecarui task ii este
atasata o structura de date ( Ex: GDT, IDT, LDT, TSS )
o “Selectorul” este o adresa relativa pentru una din aceste tabele la un moment dat.

- Registri de depanare;

o Cei 7 registri de depanare accesibili programatorului reprezinta suportul hardware de


depanare a programelor. Registrii DR3…DR0 specifica 4 adrese liniare de suspendare a
executiei programului depanat (breakpoints) sau adrese de urmarire (watchpoints).
Registrul de comanda DR7 este utilizat pt a preciza adresele de suspendare si/sau de
urmarire si atributele acestor adres, iar registrul de stare DR6 este utilizat in procedurile
activate la suspendare pentru cunoasterea adresei care a declansat suspendarea.

- Registrii de testare;
3. Tipuri de instructiuni de prelucrare care lucreaza cu stiva
interna,de transfer:

CRED CA MAI TREBUIE SCRIS AICI (in carte am gasit doar tabele la tipurile de instructiuni)

Setul de instructiuni SIMD

SIMD (Single Instruction Multiple Data) reprezinta o arhitectura de calculatoare paralela. Conceptual
inseamna ca o singura instructiune opereaza pe mai multe seturi de date. Acest tip de calculatoare dispune
de elemente multiple de procesare (PU in Fig.1) ce efectuează în paralel aceeasi operație sau instrucțiune,
de pe date diferite. Astfel, aceste masini exploatează paralelismul datelor.
Fig. 1

MMX a fost primul set de extensie SIMD aplicat setului de instructiuni i80x86. Tehnologia Intel MMX
foloseste modelul de executie SIMD pentru a efectua computatie in paralel pe date impachetate intregi
continute in registrii pe 64 de biti.
Motivație
O aplicație poate beneficia de un spor de performanță folosind SIMD în cazul în care efectuează aceeași
operație pe mai multe valori. Spre exemplu, o operație comună în procesarea multimedia este schimbarea
intensității pixelilor. Pentru a schimba intensitatea unui pixel, se adauga o valoare fiecarei componente a
culorii (R,G,B). Pentru a realzia acest lucru, aceste valori sunt citite din memorie, se efectueaza adunarea
pe fiecare componentă și valorile sunt scrise inapoi în memorie. Cu un procesor SIMD, vom avea o
singură instrucțiune care va încărca din memorie n pixeli ( n depinde de procesor), o instrucțiune care va
face adunarea pe cei n pixeli și tot o instrucțiune ce va scrie rezultatul în memorie.

Folosire
Cele mai multe programe, la pornire execută instrucțiunea CPUID prin care determină care sunt extensiile
suportate de procesor. În cazul în care acesta suporta SIMD, se va alege o implementare SIMD a
funcțiilor specifice programului. În caz contrar, se alege varianta neoptimizată.

MMX (MultiMedia Extension) a introdus un set de instructiuni noi care opereaza pe cantitati singulare
de 64 de biti/2 cantitati a cate 32 de biti/4 cantitati a cate 16 biti/8 cantitati a cate 8 biti in mod simultan.
Acesta foloseste acelasi spatiu de registrii ca si FPU, drept urmare operatiile MMX nu pot rula in acelasi
timp cu operatiile in virgula mobila. Arhitectura IA-32 pune la dispozitie 8 registrii XMM.
MMX pune la dispozitie 8 registrii de 64 de biti. Operatiile SIMD cu intregi pot folosi registrii MMX
(care sunt de 64 de biti) si registrii XMM ( care sunt de 128 de biti ). Operatiile SIMD cu valori in virgula
mobila pot folosi doar registrii XMM.
Instructiunile MMX opereaza instructiuni SIMD pe date impachetate de marime byte, word, dword sau
qword.

Instructiunile SSE

Procesorul Intel Pentium III a introdus tehnologia SSE ( Streaming SIMD Extension ) in arhitectura IA-
32. Extensia SSE a expandat modelul de executie SIMD prin expunerea unui nou set de registrii de 128
de biti si abilitatea de a efectua operatii pe date impachetate pe tip virgula mobila in precizie simpla.
Instructiunile SSE sunt folositoare in aplicatii care pe vectori de numere in virgula mobila in precizie
simpla ( geometrii 3D, randare 3D, criptare/decriptare date).
Instructiunile SSE2 ( virgula mobila in dubla precizie ) opereaza pe procesoarele Intel Pentium4 si Intel
Xeon si pun la dispozitie operatii pentru un control imbunatatit al memoriei cache.
Instructiunile SSE3 & SSE4 introduc performante accelerate in capabilitatile matematice ale
coprocesorului 0x8087

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