1 / 24

SEKVENCIRANJE MIKROINSTRUKCIJA

SEKVENCIRANJE MIKROINSTRUKCIJA. Kako se određuje sljedeća mikroinstrukcija?. 2 na čina sekvenciranja. MPC <=MPC+1 inkrementiranjem MPC-a i uslovni skokovi u mikroprogramu polja COND i ADRESA COND odlu čuje o sljedećoj adresi – izbor je (MPC +1) ili ADRESA

kobe
Download Presentation

SEKVENCIRANJE MIKROINSTRUKCIJA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SEKVENCIRANJE MIKROINSTRUKCIJA Kako se određuje sljedeća mikroinstrukcija?

  2. 2 načina sekvenciranja • MPC<=MPC+1 inkrementiranjem MPC-a i • uslovni skokovi u mikroprogramu • polja COND i ADRESA • COND odlučuje o sljedećoj adresi –izbor je (MPC+1) ili ADRESA • svaka mikroinstrukcija može imati dvije nasljednice!

  3. -SEKVENCIJALNA LOGIKA • Određuje sljedeću adresu mikroinstrukcije za vrijeme četvrtog podciklusa • Tada su ALU izlazi N i Z stabilni • Na osnovu COND upravlja MMUX-om

  4. Lijevi bit Desni bit Sljedeća adresa 0 0 1 1 0 1 0 1 Nema skoka - MPC+1 Skok na ADRESA ako je N=1 Skok na ADRESA ako je Z=1 Skok na ADRESA COND polje Mmux = /LRN + L/RZ + LR Mmux = RN + LZ + LR

  5. MAKROARHITEKTURA OGLEDNOG PROCESORA (programski model) • Memorijski prostor 4096 16-bitnih riječi • 3 registra dostupna programeru (PC, AC i SP), a ostale vidi mikroprogramer!!!

  6. 3 načina adresiranja: DIREKTNO (12-bitno polje za apsolutnu adresu) za pristup globalnim varijablama INDIREKTNO(izračunata adresa u AC) za pristup nizovima, tabelama itd. i LOKALNO (8-bitni offset u odnosu na SP) za pristup lokalnim varijablama. Sva tri načina su jednostavna i efikasna!!!

  7. Binarni kod Mnemonik Instrukcija Značenje 0000 xxxx xxxx xxxx LODD Napuni direktno ac:=m(x) 0001 xxxx xxxx xxxx STOD Smjesti direktno m(x):=ac 0010 xxxx xxxx xxxx ADDD Dodaj direktno ac:=ac+m(x) 0011 xxxx xxxx xxxx SUBD Oduzmi direktno ac:=ac-m(x) 0100 xxxx xxxx xxxx JPOS Skoči ako je (ac)0 if (ac)  0 then pc:=x 0101 xxxx xxxx xxxx JZER Skoči ako je (ac)=0 if (ac)=0 then pc:=x 0110 xxxx xxxx xxxx JUMP Bezuslovan skok pc:=x 0111 xxxx xxxx xxxx LOCO Napuni konstantu ac:=x (0  x  4096) 1000 xxxx xxxx xxxx LODL Napuni lokalno ac:=m(sp+x) 1001 xxxx xxxx xxxx STOL Smjesti lokalno m(sp+x):=ac 1010 xxxx xxxx xxxx ADDL Saberi lokalno ac:=ac+m(sp+x) 1011 xxxx xxxx xxxx SUBL Oduzmi lokalno ac:=ac-m(sp+x) 1100 xxxx xxxx xxxx JNEG Skoči ako je (ac)0 if (ac)0 then pc:=x SKUP INSTRUKCIJA OGLEDNOG PROCESORA

  8. 1101 xxxx xxxx xxxx JNZE Skoči ako je (ac)0 If (ac) 0 then pc:=x 1110 xxxx xxxx xxxx CALL Poziv procedure sp:=sp-1; m(sp):=pc; pc:=x 1111 0000 0000 0000 PSHI Smjesti na stek indirektno sp:=sp-1; m(sp):=m(ac) 1111 0010 0000 0000 POPI Pokupi sa steka indirektno m(ac):=m(sp); sp:=sp+1 1111 0100 0000 0000 PUSH Smjesti na stek sp:=sp-1; m(sp):=ac 1111 0110 0000 0000 POP Pokupi sa steka ac:=m(sp); sp=sp+1 1111 1000 0000 0000 RETN Povratak iz procedure pc:=m(sp); sp:=sp+1 1111 1010 0000 0000 SWAP Zamijeni sadržaj AC i SP tmp:=ac; ac:=sp; sp:=tmp 1111 1100 yyyy yyyy INSP Inkrementiraj SP sp:=sp+y (0y255) 1111 1110 yyyy yyyy DESP Dekrementiraj SP sp:=sp-y (0y255) SKUP INSTRUKCIJA OGLEDNOG PROCESORA II

  9. U/I prostor? • Ogledni procesor nema U/I instrukcija • U/I uređaji su u memorijskom prostoru - memorijski preslikani (mapirani).

  10. MIKROPROGRAM • Mikroprogram je program koji se izvršava na mikroarhitekturi i interpretira instrukcije procesora • Pisanje mikroprograma/mikroinstrukcija u binarnoj formi - nije pogodno ! • Potreban je simbolički jezik za pisanje

  11. Simbolički jezik • Za sabiranje sadržaja AC i A registara i smještaj rezultata u AC može se pisati ENC = 1, C = 1, B = 1, A = 10 (adr. A-reg.) Bolje je to izraziti “mikroasemblerskom” instrukcijom koji se jednoznačno pretvara u mašinsku mikroinstrukciju ac:=a+ac

  12. Ostale ALU operacije... • a:=band (ir,smask) operacija (A B) • ac:=a operacija A • a:=inv(a) operacija /A • logičko pomijeranje lshift - pomjeranje lijevo jedno mjesto npr. tir:= lshift (tir + tir) rshift - pomjeranje desno jedno mjesto.

  13. Skokovi u mikroprogramu • "goto“ – bezuslovni skok • uslovni - testiranjem N/Z - if n then goto 27 • Dodjeljivanja i skokovi se mogu pisati u istoj liniji • Samo za testiranje vrijednosti - "alu" alu:= tir; if n then goto 27 čitanja/pisanja memorije samo sa "rd" ili"wr"

  14. Mikroasembler Mikroinstrukcija AMUX COND A LU SH MBR MAR RD WR ENC C B A A D R mar:=pc; rd 0 0 2 0 0 1 1 0 0 0 0 0 00 Rd 0 0 2 0 0 0 1 0 0 0 0 0 00 ir:=mbr 1 0 2 0 0 0 0 0 1 3 0 0 00 pc:=pc+1 0 0 0 0 0 0 0 0 0 1 0 6 00 mar:=ir; mbr:=ac; wr 0 0 2 0 1 1 0 1 0 0 3 1 00 alu:=tir; if n then goto 15 0 1 2 0 0 0 0 0 0 0 0 4 15 ac:=inv(mbr) 1 0 3 0 0 0 0 0 1 1 0 0 00 tir:=lshift(tir); if n then goto 25 0 1 2 2 0 0 0 0 2 4 0 4 25 alu:=ac; if z then goto 22 0 2 2 0 0 0 0 0 0 0 0 1 22 ac:=band(ir,amask); goto 0 0 3 1 0 0 0 0 0 1 1 8 3 00 sp:=sp+(-1); rd 0 0 0 0 0 0 1 0 1 2 2 7 00 tir:=lshift(ir+ir); if n then goto 69 0 1 0 2 0 0 0 0 1 4 3 3 69

  15. MIKROPROGRAM OGLEDNOG PROCESORA • Osim PC, AC i SP, registri imaju uloge: • -IR - instrukcijski registar, • -TIR - privremeni IR - služi za dekodiranje ... • -0, +1 i -1 - registri sa ožičenim konstantama, • -AMASK - adresna maska #0FFF za direktno ad. • - SMASK - stek-maska #00FF za lokalno adres. • Ostalih 6 registara nemaju posebnu namjenu i na raspolaganju su mikroprogrameru!

  16. Sadržaj mikroprograma • 0 mar:=pc; rd; glavna petlja - čitanje instrukcije • 1 pc:=pc+1; rd;inkr. PC-a i drugi ciklus čitanja • 2 ir:=mbr; if n then goto 28;početak dekodiranja instrukcije 1XXX ili 0XXX • 3 tir:=lshift(ir+ir); if n then goto 19; prvo ALU pa shifter, 00XX ili 01XX? • 4 tir:=lshift (tir); if n then goto 11; 000X ili 001X ?

  17. 5 alu:=tir; if n then goto 9; 0000 ili 0001 ? • 6 mar:=ir; rd; 0000 - LODD instrukcija • 7 rd; • 8 ac:=mbr; goto 0; • 9 mar:=ir; mbr:=ac; wr;0001 -STOD instrukcija • 10 wr; goto 0; • 11 alu:=tir; if n then goto15; 0010 ili 0011 ? • 12 mar:=ir;rd; 0010 - ADDD instrukcija • 13 rd; • 14 ac:=mbr+ac; goto 0;

  18. 15 mar:=ir; rd; 0011 - SUBD ! • 16 ac:=ac+1; rd; (X-Z=X+1+ /Y) • 17 a:=inv(mbr); • 18 ac:=ac+a; goto 0; • 19 tir:=lshift(tir); if n then goto 25; 010X ili 011X ? • 20 alu:=tir; if n then goto 23; 0100 ili 0101 ? • 21 alu:=ac; if n then goto 0; 0100 - JPOS ! • 22 pc:=band(ir, amask); goto 0; skok ako AC 0 • 23 alu:=ac; if z then goto 22;0101 - JZER ! • 24 goto 0;

  19. 25 alu:=tir; if n then goto 27; 0110 ili 0111 ? • 26 pc:=band(ir,amask); goto 0;0110 - JUMP ! • 27 ac:=band(ir,amask); goto 0;0111 - LOCO ! • 28 tir:=lshift(ir+ir); if n then goto 40; 10XX ili 11XX ? • 29 tir:=lshift(tir); if n then goto 35; 100X ili 101X ? • 30 alu:=tir; if n then goto 33; 1000 ili 1001 ? • 31 a:=ir+sp; 1000 - LODL ! • 32 mar:=a; rd; goto 7; (nema maskiranja OPCOD-a !) ; na 7 se dovrši instrukcija

  20. 33 a:=ir+sp; 1001 - STOL instrukcija! • 34 mar:=a; mbr:=ac; wr; goto 10; dovrši na 10 • 35 alu:=tir; if n then goto 38; 1010 ili 1011 ? • 36 a:=ir+sp; 1010 - ADDL instrukcija! • 37 mar:=a; rd; goto 13; • 38 a:=ir+sp; 1011 - SUBL instrukcija! • 39 mar:= a; rd; goto 16; • 40 tir:=lshift(tir); if n then goto 46; 110X ili 111X ? • 41 alu:=tir; if n then goto 44; 1100 ili 1101 ? • 42 alu:=ac; if n then goto 22; 1100 - JNEG ! • 43 goto 0;

  21. 44 alu:=ac; if z then goto 0; 1101 - JNZE ! • 45 pc:=band(ir,amask); goto 0; skok • 46 tir:=lshift(tir); if n then goto 50; 1110 ili 1111 ? • 47 sp:=sp+(-1); 1110 - CALL instrukcija! • 48 mar:=sp; mbr:=pc; wr; • 49 pc:=band(ir,amask); wr; goto 0; • 50 tir:=lshift(tir); if n then goto 65; 1111 - ispitati sljedeća 3 bita • 51 tir:=lshift(tir); if n then goto 59; • 52 alu:=tir; if n then goto 56; • 53 mar:=ac; rd; 1111 000 - PSHI instrukcija! • 54 sp:=sp+(-1); rd; mbr <- (ac); • 55 mar:=sp; wr; goto 10; mbr ->> m(sp-1); • 56 mar:=sp; sp:=sp+(+1); rd; 1111 001 - POPI ! • 57 rd; ;mbr <- (sp) • 58 mar:=ac; wr; goto 10; mbr -> m(ac)

  22. 59 alu:=tir; if n then goto 62; 1111 010 ili 1111 011 ? • 60 sp:=sp+(-1); 1111 010 - PUSH instrukcija • 61 mar:=sp; mbr:=ac; wr; goto 10; • 62 mar:=sp; sp:=sp+(+1); rd; 1111 011 - POP instrukcija • 63 rd; • 64 ac:=mbr; goto 0; • 65 tir:=lshift(tir); if n then goto 73; 1111 10X ili 1111 11X ? • 66 alu:=tir; if n then goto 70; 1111 100 ili 1111 101 ? • 67 mar:=sp; sp:=sp+(+1); rd; 1111 100 - RETN instrukcija • 68 rd; • 69 pc:=mbr; goto 0; • 70 a:=ac; 1111 101 - SWAP instrukcija • 71 ac:=sp; • 72 sp:=a; goto 0; • 73 alu:=tir; if n then goto 76; 1111 110 ili 1111 111 ? • 74 a:=band(ir,smask); 1111 110 - INSP instrukcija • 75 sp:=sp+a; goto 0; • 76 a:=band(ir,smask); 1111 111 - DESP instrukcija • 77 a:=inv(a); • 78 a:=a+(+1); goto 75;

  23. Diskusija... • PC se inkrementira u liniji 1 iako se to moglo uraditi i u liniji 0, ostavljajući liniju 1 za neke druge poslove (npr. traže li U/I uređaji obradu, DMA, refresh i sl.). • Ako se linija 1 ne promijeni, procesor se može ubrzati promjenom linije 8 u: mar := pc; ac:= mbr; rd; goto 1; • Time se počinje donošenje sljedeće instrukcije prije završetka tekuće - jednostavna forma protočne strukture (engl. pipeline). • puno vremena gubi u dekodiranju instrukcija !

  24. HORIZONTALNO ILI VERTIKALNO MIKROPROGRAMIRANJE?

More Related