Sunteți pe pagina 1din 8

UNIVERSITATEA POLITEHNICA TIMIOARA

Facultatea de Automatic i Calculatoare Specializarea CTI

PROIECT FIC
System Level Registers and Data Structures

IA32

Student: IOVAN ANDREI-FILIP Anul: III Grupa: 1.2

O Scurt Prezentare IA-32 (Intel Architecture, 32-bit), adesea denumit i i386, x86-32 sau chiar x86, este architectura setului de instruciuni al celui mai de succes microprocesor fcut de compania Intel pn n prezent. Este practic o extindere pe 32 de bii al lui x86, prima dat implementat n procesorul Intel 80386, de la vechiul Intel 8086, 80186 pn la 80286, fiind numitorul comun pentru toate secvenele de design x86. Aceast arhitectur definete setul de instruciuni pentru familia de microprocesoare instalate in majoritatea calculatoarelor din ntreaga lume. Setul de instruciuni IA-32 este totodat descris ca si o arhitectur CISC. Tipul IA-32 a fost introdus pentru prima dat in microprocesorul Intel 80386 n anul 1986 i nc st la baza a celor mai multe microprocesoare pentru calculatoarele personele de mai bine de 20 de ani. Chiar dac setul de instruciuni a rmas intact, generaiile de microprocesoare care au urmat au devenit mult mai rapide. n termen de limbaje de programare diferite, IA-32 este cteodat asociat cu arhitectura lui i386. Intel a fost inventatorul i este totodat cel mai mare furnizor de procesoare IA32, dar nu este singurul. Al doilea n aceast list este AMD ( Advanced Micro Devices). Mai sunt, pe de alt parte i ali furnizori, dar preteniile acestora sunt mici n comparaie cu aceti doi gigani ai tehnologiei. ncepnd din 2007, Intel proiecteaz x86-64, dar continu totui s produc microprocesoare IA-32 cum ar fi cele Celeron M pentru laptop-uri, VIA Technologies continu s produc familia VIA C3/C7 bazat pe mecanismul IA-32 pur, iar AMD nc produce tehnologia Geode i procesoarele mobile IA-32.

Privire de ansamblu asupra System level Architecture Arhitectura IA-32 (nceput cu familia Intel386) furnizeaz suport pentru sistemele de operare i sistemele de dezvoltare software. Acest suport este parte a arhitecturii system-level IA-32 i include caracteristici care vor servi la urmtoarele operaii: Managementul memoriei Protecia modulelor software Multitasking Manipularea excepiilor i ale ntreruperilor Managementul memoriei Cache Hardware resourse and power management Monitorizarea debbuging-ului i al performanei

Arhitectura system-level IA-32 const dintr-un set de regitrii, structuri de date i instruciuni destinate s suporte operaii de baz ale nivelului de sistem cum ar fi memory management, interrupt and exception handling, task management or control of multiple processors (multiprocessing). Figura urmtoare sumarizeaz aspectul general al registrelor de sistem si al structurilor de date:

Tablourile descriptorilor globali i locali Cnd se lucreaz n protected mode, tot accesul la memorie trece prin GDT (Global Descriptor Table) sau prin LDT(Local Descriptor Table), aa cum este artat n figura de mai sus. Aceste tabele conin intrri numite descriptori de segmente. Un descriptor de segment furnizeaz adresa unui segment i drepturile de acces, tipul, dar i informaia utilizat. Fiecare descriptor de segment are asociat un selector. Acest segment selector asigur un indice n GDT sau n LDT, un flag global/local (ceea ce va determina dac segmentul selector indic spre GDT sau LDT), i drepturi de acces la informaie. Pentru accesarea unui byte ntr-un segment, trebuie asigurat un segment selector ct i un offset. Segmentul selector asigur accesul la descriptorul de segment pentru segment(GDT sau LDT). De la descriptorul de segment, procesorul obine adresa de baz a segmentului n spaiul liniar de adrese. Offset-ul furnizeaz apoi locaia byteului corespunztor adresei de baz. Acest mecanism poate fi folosit pentru accesarea oricrui cod valid, dat sau segment de stiv n GDT sau LDT. n figur, sgeile solide indic o adres liniar, cele liniate indic un segment selector, iar cele punctate, o adres fizic. Pentru simplitate, multe din segmentele selectoare sunt reprezentate ca i pointeri direci spre un segment. Adresa liniar a GDT este coninut n registrul GDT (GDTR); adresa liniar a LDT este coninut in registrul LDT (LDTR). Sistemul de segmente. Descriptori de segment Pe lang cod, data sau segmentele de stiv, care alctuiesc execuia unui program sau a a unei procedure, arhitectura sistemului definete totodat alte dou segmente de sistem: task-state segment (TSS) i LDT. (GDT nu este considerat un segment deoarece nu este accesat de majoritatea segmentelor selectoare i descriptorilor de segmente). Fiecare dintre aceste tipuri de segmente are un descriptor de segment definit. Segmentele Task-State i Task Gates Task-State Segments (TSS n figur) definete starea mediului de execuie pentru o instrucie. Include starea regitrilor generali, regitrii de sistem, regitrii EFLAGS, regitrii EIP i segmentele selector dar i pointerii stiv pentru trei segmente de stiv(una pentru fiecare nivel 0,1 i 2). Deasemenea include segmentul selector pentru LTD-ul asociat cu instrucia adresei de baz. Execuia programului se petrece n contextul instruciei, numit sarcin curent. Segmentul selector pentru TSS aferent primei sarcini este stocat n registrul de sarcini. Cea mai simpl metod de transformare ntr-o sarcin este s accesm sarcina sau s srim pn la ea. Aici, segmentul selector pentru TSS al noii sarcini este dat n instruciunea CALL sau JMP. n aceast metod, procesorul efectueaz urmtoarele aciuni:

Stocheaz starea sarcinii curente n TSS-ul current ncarc registrul de sarcini cu segmentul selector pentru noua sarcin Acceseaz noul TSS prin descriptorul de segment in GDT ncarc starea noii sarcini de la noul TSS in regitrii generali, n regitrii segment, n LDTR, n registrul de control CR3, registrul EFLAGS, i registrul EIP. 5. ncepe execuia unei noi sarcini. 1. 2. 3. 4.

Tratarea ntreruperilor i Excepiilor ntreruperile externe, cele datorate software-ului i excepiile sunt tratate prin intermediul tabloului cu descriptori de intreruperi (IDT vezi figura). IDT-ul conine o colecie de descriptori pentru pori, care furnizeaz accesul pentru a trata ntreruperea sau excepia. La fel ca si GDT-ul, IDT-ul nu este un segment. Adresele liniare de la baza IDT-ului este coninut n registrul IDT (IDTR). Decriptorii de pori n IDT pot fi de mai multe feluri: interrupt-, trap- sau task-gate. Pentru a accesa o tratare de ntrerupere sau excepie, procesorul va trebui s primeasc mai nti un vector de ntreruperi din hardware-ul intern, din controller-ul extern de ntreruperi, sau din software prin instruciuni ca i INT, INTO, INT3 sau BOUND. Vectorul de ntreruperi asigur un indice n registrul IDT spre un descriptor de poart. Dac descriptorul de poart selectat este o poart ntrerupt (interrupt gate) sau o trap gate, tratarea aferent procedurii este accesat ntr-o manier foarte similar cu accesarea unei proceduri printr-o poart de apel. Dac descriptorul este task gate (poart de sarcin), tratarea este executat prin intermediul unui schimbtor pentru sarcini (task switch). Regitrii de sistem Pentru a iniializa procesorul i a controla operaiile de sistem, arhitectura sistemului asigur flaguri sistem n regitrii EFLAGS i n alte cteva regitrii de sistem: Flagurile de sistem si cmpul IOPL din EFLAGS nregistreaz sarcina de control (control task) i modul de schimbare, tratarea ntreruperilor, urmrirea instruciilor i drepturile de acces. Regitrii de control (CR0, CR2, CR3 i CR4) conin o varietate de flag-uri i cmpuri de date pentru controlul operaiilor system-level. Alte flag-uri care apar n aceti regitrii sunt folosii pentru a indica suportul pentru performanele specifice ale unui processor n conformitate cu sistemul de operare. Regitrii pentru debug (nu sunt n figur) permit stabilirea unor puncte critice pentru a le folosi n programele pentru debugging i software. Regitrii GDTR, LDTR i IDTR conin adresa liniar i mrimea (limitele) tablourilor lor aferente.

Regitrii de sarcin conin adresa liniar i mrimea registrului TSS pentru sarcina curent. Regitrii cu model specific (nu sunt artai n figur)

Regitrii cu model specific (MSRs) sunt un grup de regitrii disponibili n primul rnd sistemului de operare sau procedurilor aflate n execuie. Aceti regitrii controleaz elemente ca i extensiile de debug, contoare de monitorizare a performanei, arhitectura verificrii mainii i varietatea de tipuri de memorie (MTRRs). Descrierea Regitrilor de Management ai Memoriei Procesorul asigur patru regitrii de management al memoriei (GDTR, LDTR, IDTR i TR) care specific locaiile structurii de date care controleaz managementul memoriei segmentate. Pentru a ncrca i a stoca aceti regitrii sunt furnizate instruciuni speciale.

a) GDTR ine adresa de baz de 32 de bii i 16 bii pentru limita GDT. Adresa de baz specific adresa liniar a byte-ului 0 din GDT; limita tabloului sugereaz numrul de bytes din tablou. Instruciunile LGDT si SGDT sunt pentru ncrcarea sau pentru stocarea registrului GDTR. La pornirea procesorului sau la resetarea lui, adresa de baz este setat implicit la valoarea 0 si limita este pus la FFFFH. O noua adres de baz trebuie sa fie ncrcat n GDTR ca i parte a iniializrii procesului pentru operaia n mod protejat. b) LDTR are n componen 16 bii pentru segmentul selector, 32 de bii pentru adresa de baz, 16 bii pentru limita de segment i atribuia de descriptori pentru LDT. Adresa de baz specific adresa liniar a byte-ului 0 a segmentului LDT. Limita de segment specific numrului byte-urilor din segment. LLDT i SLDT sunt instruciuni pentru ncrcare, respectiv stocare. Segmentul care conine LDT trebuie s aib un descriptor de segment n GDT. La pornirea sau resetarea procesorului, segmentul selector i adresa de baz sunt setate implicit pe valorea 0, iar limit setat la FFFFH. c) IDTR este format din 32 bii pentru adresa de baz i 16 bii pentru limita tabloului IDT. Adresa de baz specific adresa liniar a bitului 0 din IDT; limita

tabloului specific numrul de bytes din tablou. LIDT i SIDT sunt instruciuni pentru ncrcare, respectiv stocare. d) TR (task register) se compune de 16 bii pentru segmentul selector, 32 bii pentru adresa de baz, 16 bii pentru limita segmentului i atribuiile descriptorului pentru TSS a sarcinii curente. El indic un descriptor TSS n GDT. Adresa de baz specific adresa liniar a byte-ului 0 din TSS; limita segmentului specific numrul bytes-ilor din TSS. LTR i STR sunt instruciuni pentru ncrcare, respectiv stocare.

Bibliografie 1. IA-32 Intel Architecture Software Developer's Manual 2. http://en.wikipedia.org/wiki/IA-32 3. http://www.cs.princeton.edu/courses/archive/spr10/cos217/reading/ia32vol3.p df

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