Procesoare Power-PCcpop/Cursuri_SMP/SMP9/SMP9...Unitati functionale separate pentru interfatare cu...

27
Procesoare Power-PC IBM a introdus prima arhitectura POWER cu sistem RISC System 16000 la inceputul anului 1990. POWER, un acronim pentru “Performance Optimization With Enhanced RISC”, a fost unul dintre primele microprocesoare superscalare RISC. Initial procesorul avea o optimizare “multi- chip”, ulterior trecandu-se la o implementare “single-chip” (majoritatea procesoarelor RISC au urmat acest traseu – ex. microprocesorul SPARC). Bazata pe arhitectura POWER, Apple Computer, IBM si Motorola au dezvoltat impreuna arhitectura PowerPC (PC este un acronim de la “Performance Computing”) incepand cu anul 1991. Cu experienta in sisteme de calculatoare personale a lui Apple, experienta tehnologica RISC a lui IBM (arhitectura POWER) si Motorola (microprocesorul 88110) s-a trecut la dezvolatrea unei intregi familii RISC cu o arhitectura comuna si orientate pe o gama larga de aplicatii. Arhitectura PowerPC ia avantajele celor mai avansate tehnologii in domenii ca tehnologii de proces, proiectare de compilatoare si procesoare RISC pentru a furniza compatibilitati software cu diverse familii de microprocesoare. Procesoarele PowerPC au fost proiectate pentru o scara larga de sisteme cum ar fi: calculatoare personale; controllere intregrate; statii grafice si stiintifice; multiprocesoare; procesoare pentru mainframeuri. Arhitectura PowerPC este flexibila pentru ca ofera multe optiuni pret/performanta functie de aplicatie si scalabila pentru ca ia avantajele unei avansari tehnologice continue. Arhitectura PowerPC defineste urmatoarele caracteristici: - registre separate cu 32 intrari pentru instructiuni intregi si in VM; registrele cu scop general (GPR) tin sursa pentru instructiuni aritmetice intregi si registrele in virgula mobila (FPR) tin sursa si destinatia pentru instructiunile aritmetice in virgula mobila - instructiuni load/store intre memoria sistemului si FPR sau GPR - format fix de instructiuni pe 32 biti ce permite simplificarea b.a. si procesarea paralela a instructiunilor (“dispatch mechanism”) - utilizarea nedistructiva a registrelor pentru instructiuni aritmetice in care al 2-lea, al 3-lea si uneori al 4-lea operand specifica de regula registrele sursa pentru calcule ale caror rezultate sunt tipic memorate in registrul destinatie specificat prin primul operand - model de tratare execeptii - suport in VM care include si operatii in VM conform IEEE-754 - arhitectura flexibila care permite ca anumite caracteristici sa fie executate in hardware sau software functie de diferite optiuni - abilitatea de a executa operatii in VM in precizie simpla dar si dubla - instructiuni de nivel utilizator pentru memorari, goliri (flushing) si invalidari de date in cache-urile on-chip; se definesc si instructiuni speciale (cache block touch instructions) pentru incarcari speculative de date inainte de a fi folosite, reducand “latenta” (intarzierea) memoriei - un model de memorie care permite accese slab ordonate , ceea de permite operatiilor pe registre sa le reordoneze dinamic, cu cresterea performantelor generale (overall) si reducerea latentei memoriei pentru iesirea instructiunilor din executie (throughput) - arhitectura Harvard (cache separat de date si instructiuni) si cache-uri unificate - suport pentru mod de adresare big-endian (Motorola) si little-endian (Intel) - suport de adresare pentru 64 biti cu posibilitate de lucru si pe 32 biti; etc

Transcript of Procesoare Power-PCcpop/Cursuri_SMP/SMP9/SMP9...Unitati functionale separate pentru interfatare cu...

Procesoare Power-PC

IBM a introdus prima arhitectura POWER cu sistem RISC System 16000 la inceputul anului

1990. POWER, un acronim pentru “Performance Optimization With Enhanced RISC”, a fost unul dintre primele microprocesoare superscalare RISC. Initial procesorul avea o optimizare “multi-chip”, ulterior trecandu-se la o implementare “single-chip” (majoritatea procesoarelor RISC au urmat acest traseu – ex. microprocesorul SPARC). Bazata pe arhitectura POWER, Apple Computer, IBM si Motorola au dezvoltat impreuna arhitectura PowerPC (PC este un acronim de la “Performance Computing”) incepand cu anul 1991. Cu experienta in sisteme de calculatoare personale a lui Apple, experienta tehnologica RISC a lui IBM (arhitectura POWER) si Motorola (microprocesorul 88110) s-a trecut la dezvolatrea unei intregi familii RISC cu o arhitectura comuna si orientate pe o gama larga de aplicatii. Arhitectura PowerPC ia avantajele celor mai avansate tehnologii in domenii ca tehnologii de proces, proiectare de compilatoare si procesoare RISC pentru a furniza compatibilitati software cu diverse familii de microprocesoare. Procesoarele PowerPC au fost proiectate pentru o scara larga de sisteme cum ar fi: calculatoare personale; controllere intregrate; statii grafice si stiintifice; multiprocesoare; procesoare pentru mainframeuri. Arhitectura PowerPC este flexibila pentru ca ofera multe optiuni pret/performanta functie de aplicatie si scalabila pentru ca ia avantajele unei avansari tehnologice continue. Arhitectura PowerPC defineste urmatoarele caracteristici:

- registre separate cu 32 intrari pentru instructiuni intregi si in VM; registrele cu scop general (GPR) tin sursa pentru instructiuni aritmetice intregi si registrele in virgula mobila (FPR) tin sursa si destinatia pentru instructiunile aritmetice in virgula mobila

- instructiuni load/store intre memoria sistemului si FPR sau GPR - format fix de instructiuni pe 32 biti ce permite simplificarea b.a. si procesarea paralela a

instructiunilor (“dispatch mechanism”) - utilizarea nedistructiva a registrelor pentru instructiuni aritmetice in care al 2-lea, al 3-lea si

uneori al 4-lea operand specifica de regula registrele sursa pentru calcule ale caror rezultate sunt tipic memorate in registrul destinatie specificat prin primul operand

- model de tratare execeptii - suport in VM care include si operatii in VM conform IEEE-754 - arhitectura flexibila care permite ca anumite caracteristici sa fie executate in hardware sau

software functie de diferite optiuni - abilitatea de a executa operatii in VM in precizie simpla dar si dubla - instructiuni de nivel utilizator pentru memorari, goliri (flushing) si invalidari de date in

cache-urile on-chip; se definesc si instructiuni speciale (cache block touch instructions) pentru incarcari speculative de date inainte de a fi folosite, reducand “latenta” (intarzierea) memoriei

- un model de memorie care permite accese slab ordonate , ceea de permite operatiilor pe registre sa le reordoneze dinamic, cu cresterea performantelor generale (overall) si reducerea latentei memoriei pentru iesirea instructiunilor din executie (throughput)

- arhitectura Harvard (cache separat de date si instructiuni) si cache-uri unificate - suport pentru mod de adresare big-endian (Motorola) si little-endian (Intel) - suport de adresare pentru 64 biti cu posibilitate de lucru si pe 32 biti; etc

I. Modelul arhitectural

Arhitectura PowerPC este o arhitectura RISC, iar fiecare microprocesor PowerPC este o implementare unica a acestei arhitecturi. De aceea se prezinta procesoarele PowerPC in ordinea aparitiei si cu prezentarea diferitelor caracteristici cu prezentarea imbunatatirilor de la o serie la alta.

A. Procesorul PowerPC 601

PowerPC 601 este primul procesor al familiei. Fiecare microprocesor PowerPC are unicul sau set de unitati de executie. PowerPC 601 contine IU, FPU si BPU, fiecare procesand un subset al setului de instructiuni. Suplimentar, arhitectura PowerPC suporta ambele unitati independent de executia si iesirea instructiunii out-of-order. Adica, in timp ce IU si FPU prelucreaza instructiuni intregi sau in VM , BPU poate aduce jumatatea de jos a cozii de instructiuni si rezolva ramificatiile conditionate.

1) Unitatea de instructiuni

Cuprinde coada de instructiuni, logica de iesire (“dispatch”) si BPU. Ea determina adresa urmatoarei instructiuni pentru a fi citita (fetch) utilizand fiecare din cele 3 componente si multe

concepte fundamenatle arhitecturii PowerPC: instruction prefetch, branch prediction, out-of-order operation si branch folding (este procesul de inlocuire a instructiunii de branch cu ? instructiunii destinatie ce corespunde directiei de branch: “taken” sau “not taken” ).

a) Executie si dispatch out-of-order

Instructiunile pot fi scoase si terminate intr-o ordine care difera de aparitia lor in fluxul de instructiuni. Instructiunile care nu au dependenta pot fi terminate out-of-order. Unitatea de instructiuni si IU reconstruieste ordinea originala a programului. Extern procesorului, codul programului apare ca executat in ordinea in care a fost scris.

b) Coada de instructiuni (IQ) Tine pina la 8 instructiuni etichetate Q7 - Q0, unde Q7 este varful de instructiuni (top entry),

iar Q0 bottom entry. Instructiunile sunt scoase din cele mai de jos intrari si inlocuite prin cele mai de sus intrari (deplasarea in jos). Instructiunile intregi sunt scoase numai din Q0, iar cele in VM si ramificatiile din Q3 - Q0. Cand IQ are spatiu disponibil este reumplut din cache (reumplerea poate fi facuta intr-un singur ceas - in caz HIT - utilizind o citire "burst" din cache).

c) Unitatea de procesare ramificata (BPU) BPU scaneaza portiunea de jos Q3-Q0 a IQ cautand instructiunea de ramificatie. Cand este

gasit un branch neconditionat sau conditionat de o conditie disponibila, BPU rezolva imediat branch-ul si urmatoarea secventa de instructiuni ia locul ramificatiei (acesta este "branch folding"). Executarea branch-urilor ia 0 cicli de ceas si nu intrerupe functionarea celorlalte unitati. Cand este un branch conditionat de o informatie nedisponibila, BPU face anticiparea (prediction) daca este luat sau nu (branch prediction). PowerPC 601 si 603 utilizeaza anticiparea statica, iar PowerPC 604 si 620 utilizeaza anticiparea dinamica. Prin "default" PowerPC 601 si 603 anticipeaza ca un branch va fi luat daca deplasamentul adresei destinatie este negativ; daca este pozitiv va lua ca neluat. Un bit din fiecare cod de branch permite asignarea deplasamentului adresei destinatie. Utilizind aceste coduri de operatie (opcodes-uri), compilatoarele pot genera cod pt gasirea mai precisa a destinatiei de branch.

Dupa anticiparea ramificatiei, procesorul citeste instructiunea de la adresa destinatie pina la rezolvarea ramificatiei. Daca BPU a avut dreptate, procesorul continua executia de la instructiunile anticipate; daca nu, procesorul goleste (flush) toate instructiunile curente din IQ si incepe executia din calea corecta de instructiuni. BPU este considerat ca o unitate de executie pentru ca utilizeaza propriile registre si isi executa functiile indiferent de celelalte unitati.

d) Logica de iesire

In timpul fiecarui ceas, logica de iesire scoate (dispach) pana la trei instructiuni din jumatatea de jos a IQ. Este strins legata cu IQ si BPU.

2) Unitatea de intregi (IU)

IU primeste toate instructiunile cu intregi, load/store si anumite instructiuni in VM de la pozitia Q0 a IQ; este cunoscuta si unitatea in VF.

IU este responsabila astfel (ca si la i486) cu executia instructiunilor load/store de gestiune memorie, aritmetice si logice si care utilizeaza registrele cu scop special (SPR). Pentru a le executa, IU poseda 32 GPR si un ALU intern. In timpul executiei instructiunilor, IU utilizeaza registre redenumite pt a minimiza blocarile b.a. datorita blocarilor dintre GPR. IU foloseste MMU si CU pt a satisface orice acces la memoria principala cerut de instructiuni.

Redenumire registre (Buffers) Redenumirea bufferelor este utilizata pt a scoate rezultatele asociate cu o executie de

instructiuni. Cand unitatea de instructiune "dispatch" o instructiune, un buffer redenumit este alocat pentru utilizare de catre instructiunea in executie. Daca instructiunea se termina cu succes, atunci rezultatul din buffer este utilizat pentru a actualiza registrele. Totusi, daca instructiunea este un branch anticipat gresit sau terminari ale executiei instructiunii cu erori, bufferul redenumit furnizeaza o cale usoara pentru a neglija (a nu lua in considerare) rezultatele executiei acestei instructiuni, fara "overhead" semnificativ.

3) Unitatea in VM (FPU)

Ca si IU, FPU primeste instructiunea de la IQ. Pentru a se asigura ca unitatea de instructiuni

nu asteapta terminarea instructiunii in VM, FPU are propria sa coada de 2 instructiuni. Prin plasarea instructiunii in coada proprie, instructiunile cu intregi si ramificatiile au timp sa se desfasoare in paralel. FPU poseda 32 FPR pe 64 biti pentru operatii in simpla sau dubla precizie. Suporta (ca si i486) date format IEEE-754.

4) Unitatea de gestiune memorie (MMU)

MMU suporta nu numai translatarea adresei bazata pe segmentare si paginare dar si translatari orientate pe blocuri. Referitor, daca adresa a fost generata de unitatea de instructiuni (pt utilizare cand fetch sau branch) sau de IU (pentru acces date), MMU controleaza translatarea adresei si asigura protectia memoriei.

Functionalitatea MMU este specificata in mediul de operare arhitectural (OEA - Operating Environment Architecture).

Protectia este asigurata prin registre BAT (Block Address Translation) diferit de definitia data pentru OEA.

5) Unitatea Cache (CU)

PowerPC 601 contine un cache de 32 K cu 8 cozi set-asociative unificat pentru cod si date si

algoritm de inlocuire LRU. Cache-ul furnizeaza 8 cuvinte pe magistrala interna pentru a putea fi incarcate in unitatea de instructiuni pana la 8 intrari in IQ. Unitatea de instructiuni priveste in cache dupa adresa instructiunii urmatoare; daca adresa este in cache (hit), IQ este umpluta cu cate instructiuni poate, de la acea adresa. PowerPC 601 furnizeaza software de control a capabilitatii cache, a politicii de scriere si a coerentei cache utilizind sistemul registrelor de control.

6) Unitatea de memorare (MU) si interfata de sistem (SIU)

Unitati functionale separate pentru interfatare cu accesele externe la memoria principala. MU

consta din buffere de citire/scriere pe care procesorul le utilizeaza cand acceseaza memoria principala (datorita unor load/store pt cache miss sau pastrarii coerentei cache).

SIU (sau Bus IU) tine toate accesele la memoria principala asa cum le dicteaza MU. Adresele si valorile din bufferele MU sunt plasate pe magistrala sistemului SIU care este bazata pe proiectarea de magistrale de la Motorola - microprocesor 88110. Accesele la magistrala sistemului sunt grupate in citire "burst" (pentru a umple IQ sau cache) si scrieri "burst", operatii I/O si "single-beat" (pentru accesarea spatiului de memorie non-cache).

B. Procesorul PowerPC 603

1) Unitatea de instructiuni

Similara cu PowerPC 601. IQ tine pana la chiar 6 instructiuni o data care sunt citite de la cache-ul de instructiuni si sortate apoi ramificate sau ne-ramificate.. Toate instructiunile de branch merg la BPU iar celelalte sunt plasate in IQ pentru a fi trimise (dispatch) la IU sau FPU (spre deosebire de PowerPC 601 sunt trimise doar ultimele 2 instructiuni din IQ).

2) Unitatea load/store (LSU) Toate operatiile load/store si mov-uri registru-registru, chiar pentru registrele FPU, sunt tinute aici. Instructiunile load/store si accesele la memorie pot fi executate in alta ordine decat cea din program ceea ce permite minimizarea blocarilor b.a. Pentru a restabili ordinea, exista instructiuni de sincronizare.

3) Cache Unit

Are 2 cache-uri separate de instructiuni si date de 8K cu 2 cai set-association si algoritm de inlocuire LRU.

4) Completion Unit (Buffer) (CUB) Se face distinctia intre instructiunea completa (terminata) si cea care a iesit din executie. Rezultatul instructiunii terminate este utilizat pentru a actualiza fisierul principal de registre si registrele sistem (arhitecturale). Rezultatul unei instructiuni care a iesit din executie si efectul sau asupra altor registre este nedeterminat pana CU determina ca aceasta este cea potrivita pentru a fi terminata. CU poate termina pana la 5 instructiuni din punctul de "dispatch" pana ce executia a fost terminata. Cand instructiunea a fost executata "out-of-order", CU trebuie sa reordoneze rezultatele si sa le termine secvential, dupa care registrele sistem sunt actualizate.

5) Capabilitati de Power Management

Folosind bitii din registrele MSR si HID0 sunt selectate software 4 moduri power: a) Full-Power Mode

Este starea normala a procesorului. Toate unitatile de executie lucreaza la viteza de ceas a procesorului dar numai cand este necesar. Dupa setarea acestui mod nu este necesara interventia hardware-ului sau software-ului. Dar daca Power Management este activat, unitatile inactive (idle) vor fi puse in modul power cel mai potrivit. b) Doze Mode In acest mod, cele mai multe unitati functionale sunt dezactivate; numai "timebase/decrementer" si logica "snooping" raman active. Intoarcerea in Full-Power cere o intrerupere externa asincrona sau de sistem, o exceptie la decrementare sau un reset hard/soft si ia foarte putini cicli de ceas. c) Nap Mode Asemanator cu b) dar logica de "snooping" este si ea dezactivata. d) Sleep Mode Toate unitatile functionale sunt dezactivate si procesorul consuma cel mai putin. Intoarcerea in Full-Power se face prin reactivare sistematica.

C. Procesorul PowerPC 603e Caracteristici suplimentare fata de PowerPC 603:

- cache-urile sunt de 16k fiecare. - a fost adaugat un bit la registrul HID0 pentru a permite citirea prin soft a configurarii

ceasului. - suport pentru "store" pe un ceas ceea ce a dus la o crestere cu 7-10 % a performantelor. - a fost imbunatatita performanta "store" in caz de "cache-inhibited" sau "write-through". - a fost inclus un nou sumator mai performant. - a fost adaugat un ceas injumatatit pe magistrala pentru inmultiri/impartiri ceea ce a dus la

cresterea vitezei de executie.

D. Procesorul PowerPC 604

1) Unitatea de instructiuni IQ tine pana la 8 instructiuni si permite citirea celor mai de jos 4 instructiuni. In timpul executiei procesorul poate citi (fetch), trimite (dispatch) si termina (complete) pana la 4 instructiuni per ciclu de ceas. Fiecare instructiune este trimisa celei mai potrivite unitati functionale, o instructiune/unitate. a) BPU Este mai complex decat in implementarile anterioare.

PowerPC 604 este prima implementare de PowerPC care utilizeaza anticiparea dinamica a ramificatiilor; utilizeaza 3 tehnici pentru acest lucru.

In etajul de fetch este examinat BTAC (Branch Target Address Cache) care are 64 de intrari cache ale adreselor destinatie de la instructiunile de ramificare executate anterior. Adresa de fetch este suficienta pentru a anticipa ramificatiile folosind BTAC. In etajele "decode" si "dispatch" prima instructiune de ramificare din fluxul de cod este identificata si anticipata. Pentru ramificari conditionale care depind de o informatie nedisponibila, este utilizata BHT (Branch History Table) pentru a anticipa rezultatul ramificatiilor; BHT este un cache cu 512 intrari cu stari de anticipare de tipul: strong-taken, weak-taken, weak-not-taken si strong-not-taken. Cand este executata o ramificatie, BHT este actualizat cu informatii constand in efectul ramificatiei. Dupa ce informatia este actualizata in BHT, ea este de asemenea adaugata (sau mutata) din BTAC; de exemplu, daca o ramificatie este anticipata ca luata pentru urmatorul branch, ea este adaugata la BTAC, altfel este mutata din BTAC. b) Executie speculativa Este utilizata in conjunctie cu anticiparea dinamica a ramificatiilor pentru a urmari caile de cod pentru pana la 4 ramificatii anticipate. In timpul executiei speculative pe o cale de anticipare ramificata, procesorul va continua sa anticipeze si execute pana la 2 ramificatii urmatoare. In acest fel, procesorul salveaza starile masinii cand se intalneste o ramificatie care cere alta anticipare; el se poate intoarce la o stare anterioara, cu putin overhead, cand ramificatia este rezolvata.

2) IU PowerPC 604 are doua IU "single-cycle" si una "multiple-cycle". Fiecare din primele doua cuprinde 3 subunitati: o unitate rapida sumator/comparator, o subunitate logica si o subunitate de rotatie/deplasare. Totusi, numai una din cele 3 subunitati poate fi in executie la un moment dat. Impreuna, aceste 3 subunitati tin toate instructiunile pe intregi pe un ciclu de ceas si operatii registru-registru. Cea de-a treia unitate IU executa instructiuni intregi pe 32 biti de inmultire/impartire si toate instructiunile intregi pe multipli de cicli de ceas. Este responsabila si de manipularea SPR.

3) FPU Similara cu implementarile anterioare dar cu o performanta crescuta (doar o latenta de 3 cicli de ceas pentru operatii FPU).

4) Cache Units Are 2 cache-uri de 16K pe 4 cai set-asociative pentru instructiuni si date si algoritm de inlocuire LRU. Permite facilitati de multiprocesare si protocol de coerenta MESI.

5) Capabilitati Power Management

Similare cu PowerPC 603.

E. Procesorul PowerPC 620 Vezi schema PowerPC 604 cu valorile din [ ], restul la fel.

Functionare similara cu PowerPC 604 cu modificarile de rigoare. Alte diferente:

- BHT poseda 2048 intrari iar BTAC are 256 intrari. - cache-urile sunt pe 8 cai set-asociative. - poseda facilitati built-in pentru un nivel 2 de cache.

II. Modelul de programare

PowerPC au 2 nivele de privilegiu:

- modul supervizor: utilizat exclusiv de sistemul de operare. - modul user: utilizat de catre aplicatiile software si SO.

Corespunzator celor 2 nivele de privilegiu exista 3 nivele sau medii de programare:

a) PowerPC User Instruction Set Architecture (UISA): defineste setul de instructiuni de baza la nivel user, registrele la nivel user, tipuri de date, conventii de memorie, modele de memorare si programare vizate de aplicatiile program. b) PowerPC Virtual Environment Architecture (VEA): este cea mai mica componenta a arhitecturii PowerPC ce defineste functionalitati aditionale la nivel user care cad de regula in afara cerintelor de software user; VEA descrie modelul de memorare pentru un mediu in care multiple procesoare sau alte dispozitive pot accesa memoria externa si defineste aspecte ale modelului cache si instructiunile de control cache din perspectiva userului. Resursele definite de VEA sunt de mare ajutor pentru optimizarea acceselor la memorie si gestionarea resurselor intr-un mediu in care alte procesoare sau dispozitive pot accesa memoria externa. Implementarile conform VEA adera si la UISA dar nu este necesar sa adere la OEA. c) PowerPC Operating Environment Architecture (OEA): defineste resursele la nivel supervizor tipic cerute de un SO; OEA defineste modelul de gestiune a memoriei PowerPC, registrele de nivel supervizor, cerinte de sincronizare si modelul de exceptii. Implementarile OEA adera si la UISA si VEA. Tranzitia de la UISA sau VEA la OEA se fac via mecanisme de exceptii.

Corespunzator celor 3 medii de programare exista 3 seturi de registre: - Registre UISA: pot fi accesate de intregul software in ambele nivele de privilegiu; includ 32 GPR, 32 FPR, alte registre utilizate pentru intregi, VM si instructiuni de ramificatie. - Registre VEA: definesc portiunea user a facilitatii bazei de timp (TB) care consta din 2 registre TB pe 32 biti care pot fi citite la nivel user dar pot fi scrise doar la nivel supervizor. - Registre OEA: sunt utilizate pentru operatii la nivel sistem (supervizor). 1) Setul de registre UISA si VEA Pentru bitul CMS sunt 2 valori corespunzatoare implementarii PowerPC pe 32 biti sau 64 biti. a) Registre cu scop general (GPR - General Purpose Registers) Sunt 32 registre utilizate de unitatea de intregi pentru a executa operatii aritmetice si logice; suplimentar, PowerPC 603, 604 si 620 implementeaza si o unitate de load/store care utilizeaza GPR in timpul acceselor la memorie.

Prin program sunt notate ri (i = 0:31)

b) Registre in VM (FPR - Floating Point Registers) Sunt 32 FPR utilizate de unitati in VM. Sunt notate prin program fri (i = 0:31).

c) Registrul de conditii (CR- Condition Register) Este similar registrului EFLAGS al procesorului x86.

Are 8 cimpuri de 4 biti adresate prin CR0 : CR7

CR0 este automat actualizat cu rezultatul instructiunii pe intregi daca bitul Rc al instructiunii este setat.

LT = Negative: este setat la rezultat negativ. GT = Positive: este setat la rezultat > 0. EQ = Zero: este setat la rezultat = 0. SO = Summary Overflow: este o copie a starii finale din registre. XER [SO] la terminarea unei instructiuni.

CR1 este automat actualizat pentru a reflecta rezultatul unor operatii in VM cand Rc este setat. FX = Floating-point exception: este o copie a starii finale din registrul FPSCR [FX] FEX = Floating-point enabled exception: este o copie a starii finale din registrul FPSCR [FEX] VX = Floating-point invalid exception: este o copie a starii finale din registrul FPSCR [VX] OX = Floating-point overflow exception: este o copie a starii finale din registrul FPSCR [OX] CR2- CR7 reflecta rezultatul unor instructiuni de comparare. LT = Less Than (cu semn rA < ( SIMM sau rB); fara semn rA < (UIMM sau rB)) FL = Floating -Point Less Than frA<frB GT = Graeter Than (cu semn rA < ( SIMM sau rB); fara semn rA < (UIMM sau rB)) FG = Floating -Point Greater Than frA>frB EQ = Equal (rA = (SIMM, UIMM sau rB)) FE = FP Equal (frA = frB) SO = Summary overflow (copiaza XER [SO] la terminare instructiune)

FU = FP Unordered: comparare VM (frA si/sau frB este NaN (Not a Number)) Instructiuni program care folosesc CR:

- mutare explicita a unei valori din GPR in CR: mtcrf - mutare explicita a unui camp de 4b din CR in altul: mcrf - copiere XER[0-3] in CR: mcrxr - copiere a unui camp specificat din FPSCR in CR: mcrfs - executare instructiuni logice pe biti prin CR - actualizare CR0, CR1 sau CR2-CR7 cu rezultatul unei instructiuni intregi, in VM sau de

comparare intregi si/sau VM.

d) Registrul de control si stare VM (FPSCR = Foating Point Status and Control Register)

Executa urmatoarele taskuri: - inregistreaza, activeaza si dezactiveaza exceptiile generate prin operatii in VM - inregistreaza tipul operatiei in VM - controleaza modul de rotunjire utilizat de operatii in VM O data setati, anumiti biti (ii vom marca S = "sticky") ramin asa pana vor fi stersi explicit prin

instructiunile de tip mcrfs, mtfsfi, mtfsf si mtfsbc.

C = FP Class descriptor - conform setarii b16 - b19 FPCC (FP Condition Code) din tabel UX - FP underflow exception ZX - FP zero divide exception XX - FP inexact exception

VXSNAN - VX pt SNaN VXISI - VX pt ∞ - ∞ VXID - VX pt ∞ +∞ VXZDZ - VX pt 0+0 VXIMZ - VX pt ∞*0 VXVC - VX pt comparare invalida FR - FP fraction rounded FI - FP fraction inexact NI - FP non - IEEE mode RN - FP rounding control (00 round to nearest/ / 01 round toward zero / 10 round toward +00 / 11 round toward -00) VXSOFT - VX pt cerere soft VXSQRT - VX pt √ invalid VXCVI - VX pt conversie invalida intreg VE = VX enable OE = IEEE OX enable UE = IEEE UX enable ZE = IEEE ZX enable XE = IEEE XX enable e) Registrul Exceptii Intregi (XER = Integer Exception Register)

Summary overflow = ramine setat pana este sters prin mtspr sau mcrxr. BC - specifica nr de octeti ce va fi transferat prin instructiunile lswx, stswx sau lscbx.

f) Registru Legaturi (LR = Link Register)

Furnizeaza adresa de ramificatie pt utilizare cu instructiunea bclr

Sunt 2 cai de a incarca o valoare in LR: - incarcare explicita in sau din LR cu instructiunile mtspr sau mfspr - utilizand instructiunile de ramificare conditionata sau neconditionata care incarca LR cu

adresa instructiunii urmatoare instructiunii de ramificare (adresa de "return") Se refera prin 8 sau implicit prin mnemonica instructiunii

g) Registru Contor (CTR = Count Register)

Este folosit de regula ca registru contor de bucle

Sunt 2 moduri de utilizare: - ca registru decrementare contor bucla, pt instructiunile de ramificatie codificate corect (cand

este 0, decrementarea duce la setarea CTR cu valoarea 0xffffffff (-1) sau 0xffffffffffffffff (-1))

- pentru a tine adresa destinatie pt instructiunea de branch bcctrx Se refera prin 9 sau implicit prin mnemotehnica instructiunii.

h) Registrul Baza de Timp (TBR = Time Base Register)

Este singurul definit de power PC pt VEA si poate fi accesat si in mod user si supervisor.

- este numai citit in mod user (VEA) si scris/citit in mod supervisor - PowerPC 601 nu are TBR dar are registru RTC (Real - Time Clock Register) similar - TBR este incrementat periodic pana la 0xffffffffffffffff (264-1) dupa care devine 0; nu se

genereaza exceptii; se refera prin 268-269 sau mnemonica instructiunii 2) Setul de registre DEA Avem mai multe categorii cu registre comune arhitecturii Power PC, dar si registre specifice diferitelor implementari:

- Registre de configurare: MSR – Machine State Register PVR – Processor Version Register PIR – Processo Identification Register HID – Hardware Implementation Dependent Register

- Registre gestiune memorie BAT – Block Address Translation Register SDR1 – Search Description Register ASR – Address Space Register SR – Segment Register MISS – TLB Miss Address Register HASH – Hash Address Register ICMP – Instruction TLB Compare Register RPA –Required Physical Address

- Registre pastrare exceptii DAR –Data Address Register SPRG – General Special Purpose Register DSISR – Data Storage Interrupt Service Register SRR – Machine Status Save/Restore Register

- Registre monitorizare performante PMC – Performance Monitor Counter Register

MMCR0 – Monitor Mode Control Register SDA – Sample Date Address SIA – Sample Instruction Address

- Registre cu functii diferite (miscellaneous) TBR – Writable Time Base Register DEC – Decrementer Register EAR – External Access Register ABR – Address Breakpoint Register

In continuare sunt prezentate doar cele comune implementarilor Power PC, ele depinzand de procesorul PPC ales in proiectarea de sisteme. a) MSR

15 17 19 201816 14 13 0 12 21 28 31302927 26 25 2422 23

TGPR

FE0

SE BE ME

FP PR EE 1

EE ILE

POW

LE RI PM

DR

IR IP

sau

FP exception mode 0 si 1 (initial 00)

0 0 FP exceptions disabled 0 1 FP imprecise nonrecoverable 1 0 FP imprecise recoverable 1 1 FP precise mode

SF: 64 bit mode (initial 1) POW: Power management enable 0 = disable (mod normal) 1 = enable -initial este 0; nu este la 601 TGPR: Temporary GPR Remapping (numai 603) – initial 0 0 = operatie normala 1 = TGPR mode (GPR 0÷3 sunt mapati la TGPR 0÷3 pentru utilizarea de catre rutine

0 1 31 32 63

SF

sunt mapati bitii din varianta pe 32 b de mai sus

miss TLB) ILE: Exception Little Endian Mode (cand apare o exceptie, este copiat in MSR[LE] pentru a selecta modul “endian” pentru contextul stabilit de exceptie) – initial 0; nu este la 601 EE: External Interrupt Enable – initial 0

0 = in timp ce este sters, procesorul intarzie recunoasterea intreruperilor externe si decrementarea conditiilor de exceptie

1 = recunoaste PR: Privilege Level - initial 0 0 = procesorul poate executa instructiuni user si superuser 1 = procesorul poate executa instructiuni user FP: Floating Point Available – initial 0 0 = procesorul previne trimiterea instructiunilor in VM, inclusiv load, store si move 1 = procesorul poate executa instructiuni in VM ME: Machine Check Enable – initial 0

0 = dezactive 1 = active

SE: Single-step Trace Enable – initial 0 0 = procesorul executa instructiunile normal 1 = procesorul genereaza o exceptie (0x0d00) la terminarea cu succes a urmatoarei instr. BE: Branch Trace Enable – initial 0; nu este la 601 0 = procesorul executa ramificatiile normal 1 = procesorul genereaza o exceptie (0x0d00) la terminarea unei instructiuni de ramificatie, indiferent daca a fost luata IP: Exception Prefix – initial 1 0 = exceptiile sunt vectorizate la adresa fizica 0x00nnnnn 1 = exceptiile sunt vectorizate la adresa fizica 0xfffnnnnn unde nnnnn reprezinta offset-ul exceptiei IR: Instruction Address Translation – initial 0 0 = disabled 1 = enabled DR: Data Address Translation – initial 0 0 = disabled 1 = enabled PM: Performance Monitor – initial 0; numai 604 si 620 LE: Little Endian Mode Enabled – initial 0 0 = big endian 1 = little endian b) PVR - este numai citibil

SPR287

Versiune Revizie 0 15 16 31

Versiunea: este o valoare pe 16 b care identifica implementarea:

0x0001 – PPC 601 0x0003 – PPC 603

0x0006 – PPC 603e 0x0004 – PPC 604 0x0014 – PPC 620

Revizia: o valoare pe 16 b ce identifica diferitele implementari ale unui PPC c) Registre segment (SR0÷SR15) - sunt numai la 601, 603 si 604 (la 620 exista ASR)

T=0

T = 0 adresa efectiva este o referire la un segment mapat de memorie T = 1 adresa efectiva este o referire la un segment direct memorat (I/O) Ks: Supervizor-State Protection Key (cheie de protectie acces la paginile din segment supervizor) Ku: User-State Protection Key (idem segment user) N: No-Execute Protection Bid (segmente de date care nu pot fi executate) VSID: Virtual Segment ID BUID: Bus Unit ID b 12÷31 (T=1): date specifice dispozitivului pt controllerul I/O

Sunt detaliate la gestiunea memoriei (si SR si ASR). ASR

d) BAT (lucreaza pereche) -pt. 601:

0 [ T Ks Ku VSID

0 1 2 3 4 7 8 31

T Packet 1 (0) Controller info

T=1

Ks Ku BUID

0 1 2 3 11 12 27 28 31

Optional b 63 = V: Valid bit

0 STABORG

Physical Address of Segment Table (Segment Table Organizator)

BATU (BAT Upper)

WIM Ks Ku PP 0 BEPI

0 14 15 24 25 27 28 29 3130

BATL (BAT Lower)

V BL 0 BRPN

0 14 15 24 25 26 31

- pt. 603, 604, 620:

BATU

BL Vs Vp 0 BEPI

15 47

14 46

18 50

19 51

29 61

30 62

31 63

0 BATL 0 WIMG PP 0 BRPN

0 14 46

15 47

24 56

25 57

28 60

29 61

30 62

31 63

BEPI: Block Effective Page Index (este comparat cu CMS biti ai adresei logice pentru a determina daca Hit intr-o intrare BAT)

BRPN: Block Real Page Number (utilizat in conjunctie cu BL pentru a genera CMS biti ai adresei fizice de bloc)

WIM: Memory/Cache Acces Mode Bit W: Write-through I : Caching Inhibited M: Memory coherence Ks: Superuser Mode Key Ku: User Mode Key V: Valid bit (V=1 – este valida o pereche de registre BAT) BL: Block Length (este o masca ce codifica marimea blocului) Pentru 603, 604, 620: CMSB CMPS 0 0 0 0 0 0 0 0 0 0 0 128 Ko 0 … 1 256 Ko 0 … 1 1 512 Ko 0 … 1 1 1 1 Mo 0 … 1 1 1 1 2 Mo 0 … 1 1 1 1 1 4 Mo 0 … 1 1 1 1 1 1 8 Mo 0 1 1 1 1 1 1 1 16 Mo 0 1 1 1 1 1 1 1 1 32 Mo 0 01 1 1 1 1 1 1 1 1 64 Mo 01 1 1 1 1 1 1 1 1 1 128 Mo 1 1 1 1 1 1 1 1 1 1 1 256 Mo

Pentru 601: 0 0 0 0 0 0 0 … 1 0 … 1 1 0 … 1 1 1

0…1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1

PP: Protection bits for block (determina protectia la blocuri) 0 0 – No access x 1 – Read Only 1 0 – Read/Write Vs: Supervizor mode valid bit Vp: User mode valid bit Vs si Vp interactioneaza cu MSR [PR] -pentru lucru vezi gestiunea memoriei e) SDR1 PPC pe 32 b: SPR 25

HTABSIZE 0 Maskable bits Base Address

0 7 6 1615 2322 31

PPC pe 64 b: SPR 25

HTABSIZE 0 HTABORG

0 45 46 5958 63

HTABORG – Physical base address of page table (Hashing Table Organizer) HTABSIZE – Encoded size of page table (utilizat pentru a genera masca)

Caracteristici Implementare pe 32 b Implementare pe 64 b

Marimea tabelei de pagini cerute 2nr de biti HTABORG = 216 = 64 Ko 218 = 256 Ko

Nr. minim de biti pt. cautarea indexata in tabela 10 11

Marimea minima a tabelei de pagini

2nr de biti cautare × marime(PTEG32b) = 210 × 64 =

64 Ko

211 × marime (PTEG64b) = 211 × 128 = 256 Ko

Domeniul de valori pentru tabela de pagini 216 ÷ 225 octeti 218 ÷ 246 octeti

- sunt folosite in gestiunea memoriei

f) SPRG

- pot fi utilizate de SO pentru a executa diferite taskuri (SPRG 2 si 3)

- SPRG 0 poate fi incarcat cu o adresa fizica unica de identificare a spatiului de memorie rezervat in sistemele multiprocesor

- SPRG 1 poate fi utilizat pentru a salva un GPR care poate fi utilizat ca baza prin incarcare cu SPRG 0

SPRG 3

SPRG 2

SPRG 1

SPRG 0

SPR 275

SPR 274

SPR 273

SPR 272

0 31 63

g) SRR

SRR 0

62 30

63 31 0

copiat din aceleasi

pozitii ale MSR SRR 1

32 b mapati aici

311 4 5 9 10 15

SRR pe 32 biti

160

incarcat cu info

specifice de exceptii Cand apare o exceptie, procesorul incarca SRR0 cu adresa instructiunii care a cauzat exceptia sau a instructiunii care urmeaza. Toate instructiunile anterioare uneia pointata de SRR0 sunt garantate a se termina; starea instructiunii pointata de SRR0 depinde de tipul exceptiei. Cand exceptia se termina si o instructiune rfi este executata, este restartata instructiunea de la adresa continuta de SRR0. SRR1 salveaza si rememoreaza starea in timpul conditiilor exceptiei. Totusi, data care este incarcata in SRR1 vine de la MSR sau informatiile specifice exceptiei. h) DEC Este un registru contor care poate genera periodic intreruperi. Frecventa la care se decrementeaza depinde de implementare si este identica cu cea a TBR. SPR 22DEC 0 31 Daca DEC = 0, urmatoarea decrementare va genera o exceptie daca nu este mascata de MSR[EE]. Operatia de decrementare respecta regulile:

- frecventa de decrementare si cea a bazei de timp sunt identice

- incarcarea GPR din DEC nu afecteaza valoarea din DEC - memorarea unei valori din GPR in DEC inlocuieste valoarea din DEC - oricand bitul 0 (MSb) al DEC se schimba din 0 in 1, se genereaza o cerere de exceptiede

decrementare; pot fi primite multiple cereri de exceptii inainte ca prima exceptie sa apara; oricum, orice cereri aditionale sunt anulate cand apare exceptie pentru prima cerere

- daca DEC este modificat prin software si continutul bitului 0 este schimbat din 0 in 1, se genereaza o cerere de exceptie Pentru aplicatiile in timp real, este util a se intelege impactul executiei speculative asupra

DEC. In timp ce procesorul executa speculativ cod, DEC poate fi citit din punctul in care nu este in fluxul liniar de instructiuni, lucru important a se face astfel pentru ca o operatie cu context de sincronizare (cum ar fi isync) trebuie sa fie plasata imediat inaintea citirii registrului DEC.

i) EAR - este accesat de instructiunile eciwx si ecowx sau explicit cu mtspr si mfspr

RIDE 0 SPR 282

0 25 26 31 E: enable = 0 – disable = 1 – enable (instructiunile eciwx si ecowx pot executa accese externe) RID: Resource ID – valoare de identificare a unui dispozitiv I/O j) DAR

SPR 19DAR

0 - tine adresa efectiva generata printr-o instructiune de acces memorie care cauzeaza o exceptie

31 63

k) DSISR

SPR 18DSISR

0 31 63

- identifica cauza unei exceptii acces date (DSI) sau de aliniere date (DAI)

III. Gestiunea memoriei PowerPC implementeaza 4 tipuri de translatari de a adreselor: real mode addressing(modul real), block address translation(translatare blocuri), segment/page translation(translatare segmente/pagini) si direct-store I/O(memorare directa I/O). Mecanismul de translatie utilizat pentru un anumit acces depinde de tipul accesului(memorie sau I/O) si adresa efectiva a accesului. Alegerea lui se face astfel:

Adresa efectiva este generata de un acces la memorie

Translatare adr. dezactivata. Mod real(MSR[IR]=0 si MSR[DR]=0)

Translatare adr.activata (Virtual memory access)

Utilizam modul real de acces la memorie

BAT HIT? Determina daca accesul este la memoria mapata prin registre BAT

BAT MISS BAT HIT

Utilizam translatare segmentata si protectie memorie. Localizeaza informatia de segment si determina acces direct memorie

Utilizam translatare pe blocuri de adr. si protectie memorie

Utilizam translatare de segment cu memorare directa

Utilizam translatare segmentat/paginata

1. Modul real de adresare Este starea procesorului in care translatarea adr. este dezactivata(MSR[IR]=0 si MSR[DR]=0). In modul real, adr. virtuale effective sunt tratate ca adr. fizice effective; toate BAT si protectiile de pag.memorie sunt dezactivate. Orice incercare de a accesa in afara mem. fizice va cauza o exceptie. 2. Translatarea adresei pe blocuri Maparea BAT este activata numai cand translatarea adresei este activata in MSR(MSR[IR]=1 si/sau MSR[DR]=1). Daca o regiune particulara de mem. este mapata utilizand

BAT si segmentare/paginare, BAT are prioritate. In translatarea BAT, fiecare bloc de mem. este definit printr-o pereche de reg. BAT(BATU, BATL). Cand procesorul recunoaste o adr. efectiva ca fiind mapata la o pereche de reg. BAT apare un BAT Hit. Procesul de translatare BAT pentru PowerPC pe 32 biti se desfasoara astfel:

4 biti 11 biti

AND BAT[BL]

11 biti 17 bitiOffset in bloc

OR 4 biti 11 biti

17 biti11 biti4 biti

17 biti Adr. efectiva

BAT[BRPN] Bitii de validare acces din BAT realizeaza protectia memoriei. 3. Segmentare si paginare Segmentele PowerPC sunt regiuni de 256 Mo de memorie virtuala. Fiecare segment are pana la 4K pagini care contin informatii utilizate in timpul translatarii adr. effective in adr. fizice. Un segment PowerPC este definit de un descriptor segment care exista in doua forme: - pentru PowerPC pe 32 biti -> SR0 – SR15 - pentru PowerPC pe 64 biti descriptorii de segment sunt memorati ca intrari de 128 biti intr-o tabela de segmente existenta in mem. fizica si pointata prin reg. ASR:

Sensul aratat in modelul de programare

V T Ks Ku N 00 ESID 600 35 36 55 56 57 58 59 61 63

0VSID 0 51 52 63 T indica tipul segmentului ESID: Effective Segment ID VSID: Virtual Segment ID Pentru alinierea segmentelor pe 256 Mo (2^28) cand folosim adr. efectiva(EA) pe 32 biti, CMS biti EA[0-3] sunt folositi pentru a selecta SR0-SR15. Mecanismul de translatare este urmatorul:

Utilizam mecanism de acces si “translatare direct store” Da

Accesul este un fetch de instructiune la un segment neexecutabil?

Localizeaza descriptorul segment

adecvat T=1(direct store seg) T=0(memory access) Nu

Acces gresit (fault)

Executa translatare adr. paginate

Mecanismul de segm./paginare vede adresa efectiva pentru un PowerPC pe 32 biti astfel:

12 biti offset10 biti6 biti API 0 3 4 19 20 31 numarul

reg. de segment

Index pagina de 16 biti (API: Abbreviated page index) a) Intrarile tabelei de pagini(PTE – Page Table Entry)

Sunt structuri de date continand informatii utilizate pentru a translata adr. virtuala de memorie(adr. efectiva) in adr. fizica de memorie. Fiecare PTE defineste o pagina de 4K; fiecare pagina mapeaza 4K adrese effective la 4K adrese fizice. PTE sunt memorate in tabele de pagini utilizand un mecanism de “hashing”. La PowerPC pe 32 biti intrarile PTE ocupa 2 cuvinte pe 32 biti, iar la PowerPC 64 biti, 2 cuvinte duble pe 64 biti. PTE arata astfel: - la PowerPC pe 32 biti:

RPN R C WIMG 0

API HVSIDV

PP 20 29 0 19 22 23 24 25 28 31 - la PowerPC pe 64 biti:

RPN R C WIMG 0 PP 0

API 0 H V VSID

62 0 51 52 56 57 60 61 63

VSID: corespunde celor mai semnificativi biti ai nr.pag. virtuale; acest camp este utilizat in conjunctie cu H, V, API pentru a gasi PTE in TLB sau tabela de pagini API: folosit in conjunctie cu VSID pentru a determina daca PTE este egala cu adr. virtuala prin comparatie directa V(Valid) si H(Hash function identifier) asigura ca numai intrarile PTE valide fac parte din comparatiile adreselor virtuale. R(Referenced) si C(Changed) sunt utilizati de SO pentru istoria paginii(este utilizata pentru a determina care pagini trebuie sa fie inlocuite de pe sau pe disc). WIMG(Write, Cache Inhibited, Memory Coherency, Guarded) descriu drepturile cache pentru memoria descrisa de PTE. PP(Page protection(defineste protectia paginii). b) Translatare pagini Exemplu pentru PowerPC pe 32 biti:

)VPN

PTE

SR#

0

Offset(12 biti)

19 31

10 bitiAPI(6 biti)

3 4 20Registre segment

Adr. e(32biti)

fectiva

VSID(24 biti)

0

Offset(12 biti)

39 51

Page Index(16 biti)

23 24 40

Adr. virtuale (52biti)

Page Index(16 biti)

conversia de 40b la 20b

0

TLB/PTE Lo

Daca PTE nu este gasit inpagina. Algoritmul “hashing” de lui, o PTE cu RPN poate fi localRPN din PTE se furnizeaza adresgenereaza exceptii DSI/ISI. c) Protectie pagini Prin bitii de validare MSprotectia paginilor.

Virtual Page Number(VPN

31

Adr. fizica (32biti)

2019

Offset(12 biti)

okup

RPN(20 biti)

TLB sau tabela de pagini se genereaza o exceptie de “fault” pe plasare a PTE in tabela de pagini este prin software ref, conform izata eficient prin “hashed page table” (HTAB). Dupa localizarea a fizica finala. Cand TLB si HTAB nu contin informatie valida, se

R[PR], Ks si Ku din descriptorii segment si PTE[PP] se face

VPN d) Cautarea PTE TLB

Page Table

ISI/DSI Exception si actualizare Page table

PTE nefolosita in tabela de pagini

PTE localizata si actualizata in tabela de pagini

RPN din PTE

TLB Miss

TLB Hit

Adr. fizica e) Translatare pagini la implementarea pe 64 biti

ESID(36 biti)0

Offset(12 biti)51 63

11 bitiAPI(5 biti)35 36 52

SLB/Segment Table

Adr. e(64biti)

fectiva

Adr. virtuale (80biti)

VSID(52 biti)

0

Offset(12 biti)

67 79 51 68

Page Index

Offset(12 biti)

TLB/PTE Lookup

VPN(68 biti)

52

11 biti API(5 biti)

RPN(52 biti) Adr. fizica (64biti)

SLB – Segment Lookaside Buffer In tabela de segmente sunt plasate cu un algoritm “hashing” intrari de 128 biti(STE-Segment Table Entry). STE controleaza procesul de cautare anticipata cu SLB, realizand si protectia de memorie. 4. Segmente direct-store Bitul T=1 din descriptorul de segment implicit faptul ca descriptorul defineste regiunea de memorie care este utilizata ca segment direct memorate; trebuie ca mecanismul BAT sa nu fie activ. Toate segmentele cu memorare directa sunt “cache inhibited” si toate accesele evita complet cache-ul; nu exista translatare adr. ref. protectie paginata. Pentru o implementare pe 64 biti, descriptorul segment este de forma:

0KuKsTV0 ESID 0 35 36 55 56 57 58 59 60 63

0Controller Spec. Informationb1 0

0 24 25 31 32 51 52 63 V – validare intrare (1 – valid, 0 – invalid) b1 – biti 2-8 ai BUID din reg. segment pentru implementare pe 32 biti(cazul T=1)