Documente Academic
Documente Profesional
Documente Cultură
1. Obiectivul lucrării
Scopul lucrării îl reprezintă familiarizarea cu modul de funcţionare maşinii
microprogramate Tanenbaum de tip Mic-1. Se explică structura şi modul de execuţie
al instrucţiunilor, precum şi principiile de funcţionare ale maşinii.
2. Introducere teoretică
Fig. 3. Formatul microinstrucţiunii pentru maşina Mic-1 (câmpuri şi număr de biţi alocat)
Tabelul 1
Setul de microinstrucţiuni al micromaşinii Mic-1
Hexa Mnemonică (COP) Descriere
0×10 BIPUSH byte Împinge un octet (byte) în stivă
0×59 DUP Copiază cuvântul din vârful stivei şi îl împinge în stivă
0×A7 GOTO offset Salt necondiţionat la valoarea offset (ramificare)
0×60 IADD Scoate două cuvinte din stivă; împinge suma acestora
0×7E IAND Scoate două cuvinte din stivă; împinge rezultatul funcţiei ŞI
0×99 IFEQ offset Scoate cuvântul din vârful stivei şi ramifică dacă acesta este 0
0×9B IFLT offset Scoate cuvântul din vârful stivei şi ramifică dacă acesta este negativ
0×9F IF_ICMPEQ offset Scoate două cuvinte din stivă şi ramifică dacă acestea sunt identice
0×84 IINC varnum const Adaugă o constantă unei variabile locale
0×15 ILOAD varnum Împinge o variabilă locală în stivă
0×B6 INVOKEVIRTUAL disp Apelează o metodă
0×80 IOR Scoate două cuvinte din stivă; împinge rezultatul funcţiei SAU
0×AC IRETURN Revenire de la metodă cu o valoare de tip întreg
0×36 ISTORE varnum Scoate un cuvânt din stivă şi îl stochează în variabila locală
0×64 ISUB Scoate două cuvinte din stivă; împinge diferenţa acestora
0×13 LDC_W index Împinge în stivă o constantă din Depozitul de constante
0×00 NOP Nu efectuează nici o acţiune
0×57 POP Şterge cuvântul din vârful stivei
0×5F SWAP Schimbă între ele poziţiile primelor două cuvinte din stivă
0×C4 WIDE Adaugă un prefix; următoarea instrucţiune are un index de 16 biţi
3. Descrierea aplicaţiei
Aplicaţia Mic-1 deschide o interfaţă de utilizator, care arată conform
reprezentării din figura 6.
Meniul aplicaţiei conţine două opţiuni (în partea de jos): Selectare Fișier şi
Afişare Stivă. Opţiunea Selectare Fișier prezintă o nouă opţiune, Open, iar un clic pe
această opţiune deschide o fereastră de tip File Explorer. Se selectează unul din
fişierele disponibile, care conţine funcţia dorită pentru încărcarea în program.
Microinstrucţiunile se încarcă în fereastra din dreapta, denumită Control Store.
Opţiunea Afişare Stivă deschide într-o nouă fereastră stiva în componenţa ei
actuală. Stiva nu poate fi alterată de către utilizatori decât prin execuţia
microinstrucţiunilor.
În partea de sus se găsesc două butoane, Sub Cycle şi RESET. Prin păsarea
butonului Sub Cycle, se parcurge, secvenţial, câte un subciclu din cele 4 faze ale
ceasului. Apăsarea butonului RESET realizează reiniţializarea aplicaţiei (registrele
revin la valorile iniţiale), trecându-se la prima linie de microinstrucţiuni.
Legenda culorilor:
1. S1 (roşu) – registrul selectat urmează a fi încărcat pe magistrala B;
2. S2 (roşu) – magistrala B este încărcată cu valoarea registrului selectat;
3. S3 (galben) – blocurile ALU şi Shifter realizează operaţiile solicitate;
4. S4 (verde) – magistrala C şi registrele selectate sunt încărcate cu valoarea de
la ieşirea blocului Shifter.
Colorarea în albastru închis a magistralei B şi a registrului H în cadrul
subciclului S2 semnifică propagarea datelor pe magistrala B. Colorarea în albastru
închis a magistralei C în cadrul subciclului S4 semnifică propagarea datelor prin
magistrala C.
L6a: Studiul mașinii microprogramate Tanenbaum Mic-1 141
4. Desfăşurarea lucrării
4.1. Se lansează aplicaţia Mic-1.
4.2. Se încarcă fişierul IADD.txt prin alegerea, în ordine, din meniu, a
opţiunilor Selectare Fișier, Open, selectarea fişierului, şi, din nou, Open.
4.3. Se parcurg mai multe subcicluri (faze ale ceasului), prin apăsarea repetată
(pas cu pas) a butonului Sub Cycle, până la încheierea execuţiei microinstrucţiunii
conţinute în fişierul IADD.txt. Se observă şi se studiază evoluţia schemei bloc, a
ciclului de ceas şi a microcomenzilor efectuate la execuţia secvenţială a fiecărui
subciclu (la fiecare clic), notându-se acţiunile întreprinse de schemă la fiecare pas.
4.4. Se testează funcţionarea butonului RESET, prin apăsarea acestuia. Se
observă saltul la prima linie din Control Store şi resetarea registrelor.
4.5. Se reia pasul 3, se observă şi se notează rezultatele obţinute prin
efectuarea aceloraşi acţiuni. După execuţia fiecărui pas, se apasă butonul Afişare Stivă
din meniu, se studiază şi se notează evoluţia stivei.
4.6. Se apasă din nou butonul RESET. Se parcurg 8 subcicluri (două cicluri
complete de ceas), prin apăsarea repetată a butonului Sub Cycle. Se notează, pentru
fiecare subciclu, valorile registrelor MAR, SP, H, MDR şi TOS.
4.7. Similar pasului 2, se încarcă fişierul POP.txt.
4.8. Se parcurg 8 subcicluri (două cicluri complete de ceas), prin apăsarea
repetată (pas cu pas), a butonului Sub Cycle. Se observă, se studiază şi se notează
acţiunile executate secvenţial în cadrul fiecărui subciclu (fiecărei apăsări de buton). Se
studiază evoluţia stivei după fiecare subciclu. Se notează, pentru fiecare subciclu,
valorile registrelor MAR, SP, MDR şi TOS.
4.9. Similar pasului 2, se încarcă fişierul SWAP.txt.
4.10. Se parcurg 8 subcicluri (două cicluri complete de ceas), prin apăsarea
repetată (pas cu pas) a butonului Sub Cycle. Se observă, se studiază şi se notează
acţiunile executate secvenţial în cadrul fiecărui subciclu (fiecărei apăsări de buton). Se
studiază evoluţia stivei după fiecare subciclu. Se notează, pentru fiecare subciclu,
valorile registrelor MAR, SP, H, MDR şi TOS.
4.11. Se repetă din nou operațiile anterioare pentru o altă microinstrucțiune la
alegere, selectată din fișierul toateinstructiunile.txt.
Observație. La fiecare caz de microinstrucțiune în parte, valorile registrelor se
vor nota complet la primul subciclu, după care este suficient să se noteze doar
diferențele care apar (modificările) în subciclurile următoare.
4.12. Se creează şi se denumeşte corespunzător un fişier de tip text (cu
extensia.txt). Se copiază în acest fişier, la alegere, diferite seturi de instrucţiuni (din
fişierul toateinstructiunile.txt), pentru a executa microinstrucţiuni mai complexe (o
microoperaţie, definită prin acţiunile care au loc în schemă la execuţia unei succesiuni
de microinstrucţiuni). În felul acesta, se poate crea un scurt microprogram la alegere,
ca o succesiune logică de două sau mai multe microinstrucțiuni. Se încarcă fişierul
astfel creat în aplicaţie, se experimentează şi se notează rezultatele obţinute,
comentând acţiunile care se întreprind în schemă.
Atenţie! O microinstrucţiune reprezintă înlănţuirea logică a mai multor
instrucţiuni (de exemplu, microinstrucţiunea IADD este compusă din instrucţiunile
iadd1, iadd2, iadd3). Se copiază în întregime o microinstrucţiune (de exemplu, pentru
IADD, se copiază în întregime cele 3 linii corespunzătoare: iadd1, iadd2 şi iadd3).
Important! A nu se omite copierea completă și a microinstrucţiunilor la care,
eventual, se face referire în cadrul microinstrucţiunii considerate, printr-un salt sau o
referire (de exemplu, Main1, o microinstrucțiune la care se poate reveni automat la
finalul unei microinstrucțiuni selectate).
4.12. Se repetă punctul anterior pentru un nou fişier creat, al cărui set de
instrucţiuni diferă de cel precedent, şi se interpretează rezultatul.
5. Întrebări
1. Care este rezultatul execuţiei microinstrucţiunii IADD?
2. De câte semnale (biţi) este nevoie pentru controlul căii de date a schemei?
3. Care este rolul registrului MPC? Daţi un exemplu de utilizare a acestuia.
4. În ce moment al evoluţiei micromaşinii se încarcă registrul MDR, în cazul
unei operaţii de citire din memorie (read, rd)?
5. Care sunt operaţiile pe care le poate executa blocul Shifter? De ce credeţi
că sunt necesare acestea?
6. Câte intrări şi câte ieşiri are ALU şi care sunt acestea? Ce semnificaţie au
aceste valori şi care este rolul lor în cadrul formatului unei microinstrucţiuni?
7. Care vor fi valorile biţilor N şi Z, dacă ieşirea ALU va avea valoarea –5?
Dar valoarea 2? Dar valoarea 0?
8. Care este rolul câmpurilor Addr şi JAM din structura (formatul) unei
microinstrucţiuni?
L6a: Studiul mașinii microprogramate Tanenbaum Mic-1 143