Assembler 42

42. Modelul software al coprocesorului

Modelul software al coprocesorului este format din:

Stack-ul de înregistrare al coprocesorului este organizat pe principiul unui inel. Aceasta înseamnă că toate registrele stack sunt absolut egale din punct de vedere funcțional. Stiva are un vârf plutitor. Verificarea vârfului curent este efectuată de hardware utilizând un câmp din trei cifre din TOP al registrului SWR. În câmpul TOP, este fixat numărul de registru al stivei 0 ... 7 (RO.R7), care este vârful curent al stivei.

În Fig. prezintă un exemplu în care nodul curent la intrările din stivă este fizic registrul R3, iar după înregistrarea stivă devine curent vertex R2.To registru fizic stivă are cel puțin o stivă pointer de înregistrare în partea sa superioară se deplasează spre numărul minor al registrelor fizice (decrementat , dacă vârful coincide cu registrul r0, atunci registrul devine r7, numărul este plasat acolo). În ceea ce privește numerele logice ale registrelor ST stack (0). ST (1), după cum rezultă din figură, "plutesc" împreună cu schimbarea topului actual al teancului. Astfel, principiul inelului este realizat.

Registrul de stat al SWR

Registrul SWR reflectă starea curentă a coprocesorului după executarea ultimei comenzi. Următoarele sunt câmpurile din care se află SWR

  • Șase steaguri de situații excepționale.
  • SF (Stack Fault) - eroare stack coprocesor. Un bit este setat la unu dacă apare una dintre cele trei situații de excepție - PE, UE sau IE. În special, instalarea sa vă informează despre o încercare de a scrie la un stack complet sau, dimpotrivă, de a încerca să citiți dintr-un stack gol.
  • Semnalul ES (Error Summary) indică o eroare totală în funcționarea coprocesorului. Bitul este setat la unul dacă apare oricare dintre cele șase excepții.
  • Patru biți de CO ... S3 (Cod de condiție) sunt un cod de condiție. Ele reflectă rezultatul ultimei comenzi a coprocesorului.
  • Câmpul TOP cu trei biți conține pointerul registru al topului actual al stivei.
  • Bitul ocupat este b (0 este liber, 1 este operația)

Aproape jumătate din registrul SWR este ocupat de biții (steaguri) de înregistrare a excepțiilor. O situație excepțională este un tip special de întrerupere.
Tipuri de excepții, stabilite prin intermediul registrului SWR:

  • IE (eroare de funcționare incorectă) - funcționare nevalidă;
  • DE (Eroare denormalizată a operatorului) - operand denormalizat;
  • ZE (divide prin Eroare zero) - eroare de divizare la zero;
  • OE (Error Overflow) - eroare de depășire (apare atunci când ordinea numărului este în afara limitei maxime admise);
  • UE (eroare de debit) - eroare de depășire (se produce când rezultatul este prea mic);
  • PE (Eroare de precizie) - eroare de precizie (setat când este necesar coprocesorul pentru a rotunji rezultatul faptului că nu poate fi o reprezentare corectă, astfel încât coprocesorul nu fie exact 10 împărțit la 3).

Dacă observați oricare dintre aceste șase tipuri de excepții este setat la un bit corespunzător în registrul SWR, indiferent dacă aceasta este mascată de o excepție în registrul CWR sau nu.

Registrul de control CWR

Regiștrul de control coprocesor CWR definește caracteristicile de procesare ale datelor numerice (Figura 17.4). Se compune din:

  • a șase măști de excepții;
    sunt concepute pentru a masca situațiile de excepție, a căror apariție este fixată prin utilizarea a șase biți din registrul SWR. Dacă unii biți de excepție din registrul CWR sunt setați la unul, înseamnă că excepțiile corespunzătoare vor fi tratate de către coprocesor însuși. Dacă pentru orice excepție din bitul corespunzător al măștilor de excepție din registrul CWR există o valoare zero, atunci dacă se produce o excepție de acest tip, întreruperea 16 (10h) va fi ridicată. Sistemul de operare trebuie să conțină (sau programatorul trebuie să scrie) dispozitivul de procesare a acestei întreruperi.
  • Controlul preciziei;
    este proiectat pentru a selecta lungimea mantisei.
    Valorile posibile în acest câmp sunt:
    PC = 00 - lungimea mantistei 24 de biți;
    PC = 10 - lungimea mantistei este de 53 de biți;
    PC = 11 - lungimea mantistei este de 64 de biți.
    Setarea implicită este PC-11.
  • Controlul rotunjirii RC.
    vă permite să controlați rotunjirea numerelor în timpul funcționării coprocesorului. Nevoia de rotunjire poate să apară într-o situație în care, după următoarea echipa coprocesor a obținut un rezultat de neconceput, cum ar fi o fracție periodică de 3,333 ... Prin instalarea una dintre valorile din domeniul RC, puteți efectua rotunjirea în direcția dorită. Fie m valoarea din ST (0) sau rezultatul operării unei comenzi care nu poate fi reprezentată cu precizie și prin urmare trebuie să fie rotunjită; și a și b care pot fi reprezentate în registrul ST (0) a

Registrul de etichete TWR este o colecție de câmpuri din două cifre. Fiecare câmp de două cifre corespunde unui registru fizic specific al stivei și caracterizează starea sa actuală. Modificarea stării oricărui registru de coșuri se reflectă în conținutul câmpului de înregistrare al etichetei care corespunde acestui registru.
Următoarele valori sunt posibile în câmpurile de înregistrare ale etichetei:
00 - registrul stack coprocesor este ocupat de o valoare valabilă non-zero;
01 - registrul stack coprocesor conține valoare zero;
10 - registrul stack coprocesor conține una dintre valorile numerice speciale (vezi mai jos), cu excepția zero;
11 - registrul este gol și îl puteți înregistra.