Modelul software al procesorului ia-32

Structura procesorului familiei IA-32 este foarte complexă, deoarece are o implementare hardware a unui set de conducte paralele (conducte și arhitectură superscalară). În figura 7, procesorul IA-32 este reprezentat ca un set de blocuri principale.







Blocul de interfață cu coloana vertebrală controlează transferul de comenzi și date din memorie către procesor și rezultatele înapoi în memoria principală. Unitatea de comandă prefetch este responsabilă pentru citirea comenzilor ulterioare din segmentul de cod. Unitatea de decodificare a instrucțiunilor decriptează comanda și generează o secvență de semnale de comandă pentru execuția acesteia (CU analogic). Unitatea executivă, conform numelui, execută o comandă (analogă cu ALU).

Figura 7 - Structura procesorului familiei IA-32

În plus, s-au folosit câteva registre specializate, care sunt utilizate în modul protejat:

a) registrele de control C0..C3;

TR - Registrul de stare a sarcinilor;

c) registrele de depanare;

d) registrele de testare.

3) virtuale - în acest mod procesorul simulează funcționarea pseudo-simultană a mai multor procesoare virtuale i8086. În prezent, regimul este depășit și practic nu este folosit.







Tabelul descriptorilor locali conține descriptorii segmentului de aplicații, iar tabela descriptivă globală conține descriptorii segmentelor programului de sistem de operare. Ceilalți doi biți ai selectorului conțin codul nivelului de privilegii al segmentului, care este bifat la apelarea din alte programe. Astfel, este implementată protecția segmentului.

Prefixul repetat este utilizat numai pentru comenzile de procesare șir și va fi discutat mai târziu.

Prefixul mărimii operandului (66h) este indicat dacă un registru de 16 biți este utilizat pentru a stoca operandul în locul unui registru pe 32 de biți.

Modelul software al procesorului ia-32

Figura 10 - Structura comenzii mașinii IA-32

Figura 10 folosește următoarea notație:

d - direcția bitului de procesare, de exemplu, transferul de date: 1 - în registru, 0 - din registru; Folosit în comenzile aritmetice și de transfer, dacă cel puțin un operand este în registru;

w - mărimea operandului: 1 - operanzi - cuvinte duble, 0 - operanzi - octeți;

modul mod: 00 - Disp = 0 - nu există nici o compensare în comandă (0 octeți);

01 - disp = 1 - offset imediat de 1 octet în mărime;

10 - disp = 2 - offset direct de 2 octeți în mărime;

11 - ambii operanzi sunt în registre.

Registrele sunt codificate în funcție de mărimea operandului (w):







Articole similare

Trimiteți-le prietenilor: