61
1 UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET KATEDRA ZA ELEKTRONIKU MIKROPROCESORSKI SISTEMI IRQSim Mentor: Prof. dr Mile Stojčev Na projektu radili: Nenad Ivković 9925 Dragan Manojlović 9970 Bratislav Stojiljković 9815 Boban Zdravković 11063 JUN 2007

IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

1

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET

KATEDRA ZA ELEKTRONIKU

MIKROPROCESORSKI SISTEMI

IRQSim

Mentor: Prof. dr Mile Stojčev Na projektu radili: Nenad Ivković 9925 Dragan Manojlović 9970 Bratislav Stojiljković 9815 Boban Zdravković 11063

JUN 2007

Page 2: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

2

Sadržaj: 1. Uvod 3

1.1. RISC procesori 3 1.2. Prekidi 4 1.3. Prioritet kod prekida 6

2. Format instrukcije i adresiranje 7 2.1. Format mašinske instrukcije 7 2.2. Klase instrukcija IRQSim-a 8 2.3. Skup instrukcija 9 2.4. Adresni načini rada 14

3. Instalacija i pokretanje programa 18 3.1. Text Editor 18 3.2. Asembliranje 22 3.3. Praćenje toka izvršavanja programa 23

3.3.1. Processor Graph prozor 24 3.3.2 Register prozor i Register Edit prozor 27 3.3.3. Memory i Memory Editor prozor 28 3.3.4. Trace Prozor 29

3.4. Faze izvršavanja instrukcije 29 3.4.1. Instrukcije kod kojih faza izvršenja EX traje jedan taktni interval 31 3.4.2. Instrukcije kod kojih faza izvršenja EX traje dva taktna intervala 32 3.4.3. Instrukcije kod kojih faza izvršenja EX traje tri taktna interval 34 3.4.4. Instrukcije kod kojih faza izvršenja EX traje četiri taktna intervala 37 3.4.5. Instrukcije kod kojih faza izvršenja EX traje pet taktna intervala 37

4. Laboratorijska vežba IRQSim 39 4.1. Pokazni primer 40 4.2. Zadatak za studente 43 4.3. Zaključak 60

5. Literatura 61

Page 3: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

3

1. Uvod Računar je, naprava koja prima podatke, skladišti ih, obrađuje i izdaje rezultate. Procesor je zadužen kako za kompletno procesiranje tj. obradu podataka (odatle mu potiče i ime) tako i za koordinaciju rada ostalih komponenata računarskog sistema. Procesor je deo računara koji može da se programira za procesiranje tj. obradu nekakvih podataka.

Dok svi nekadašnji računari kao i današnji veći kompjuterski sistemi imaju čitavu procesorsku ploču koja se sastojala od više desetina čipova, kompletna procesorska elektronika današnjeg mikro računara smeštena je u jedno jedino integrisano kolo koje ćete, ako se odvažite da skinete poklopac nekog kompjutera, prepoznati po tome što ima najveći broj nožica, tzv. pinova.

Današnji kućni i personalni računari sadrže u sebi više čipova koji bi mogli da se svrstaju pod definiciju mikroprocesora koju smo upravo izložili: takozvani video kontroler je specijalizovani mikroprocesor koji se bavi isključivo generisanjem slike, DMA kontroler se brine za prenos podataka između periferijskih jedinica i memorije, disk kontroler komunicira sa disk jedinicom... Obično se, međutim, ne bavimo svim ovim specijalizovanim kontrolerima već mikroprocesorima opšte namene: dok video kontroler može "samo" da generiše sliku, mikroprocesor opšte namene može da se programira za kontrolisanje slike ali i za generisanje zvuka, kontrolu pristupa memoriji, komunikaciju sa diskom ili bilo koju drugu stvar.

Ukoliko je neki računar već opremljen raznim specijalizovanim kontrolerima, centralni mikroprocesor će izvršavati programe koje korisnik zadaje i tek s vremena na vreme koordinirati rad ostalih kontrolera. Korisnik obično nema nikakvih mogućnosti (a ni potreba) da komunicira sa bilo kojim hardverskim modulom svoga računara osim posredstvom centralnog mikroprocesora. Mikroprocesor se ne nalazi samo u centru bilo kojeg mikro računara - razne mikroprocesore pronalazimo u štampačima, časovnicima, automatima za igre, video rekorderima, mikrotalasnim rernama i sličnim uređajima.

1.1. RISC procesori

Sukcesivne generacije mikroprocesora imale su sve više moćnih instrukcija pa se programiranje na asembleru na neki način približavalo programiranju u nekom višem jeziku. Konstruktori mikroprocesora su verovali da je veliki broj taktnih ciklusa neophodnih da se izvrši svaka instrukcija nužna posledica njene složenosti i da će se dobici u brzini rada računara postići stalnim povećavanjem frekvencije oscilatora. Školski primer ovakve strategije kompleksnog seta instrukcija (CISC) su Digitalovi miniračunari iz serije VAX - postoji instrukcija njihovog procesora

Page 4: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

4

koja se u silnim megabajtima operativnog sistema i raznih kompajlera koristi samo jednom a ipak zauzima svoj prostor u mikrokodu i usporava dekodiranje ostalih naredbi!

Ideja o formiranju mikroprocesora koji će imati malo pažljivo izabranih instrukcija koje se izvršavaju veoma brzo rodila se 1975. godine u IBM-ovim laboratorijama dok je John Cocke razvijao ogromnu telefonsku centralu kojoj je bio potreban moćan mikrokompjuterski kontroler. Tada je nastao mikroprocesor 801 koji se, istini za volju, nikada nije pojavio na tržištu ali čija je filozofija 1986. godine ugrađena u IBM PC RT, računar kojim je IBM želeo da dokaže svoju superiornost u svim novim računarskim tehnologijama. Prvi komercijalno raspoloživ RISC procesor je, međutim, 1985. godine proizveo mali razvojni tim britanske firme Acorn.Mali broj instrukcija koje se izvršavaju u što manje taktnih ciklusa je najvažnija ali ne i jedina karakteristika RISC procesora. Format svih RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori imaju mnogo registara i sa (potencijalno sporom) memorijom komuniciraju isključivo preko LOAD i STORE instrukcija.

1.2. Prekidi

Mehanizam prekida kod procesora omogućava efikasniji rad računara sa periferijama. Većina periferija su mnogo sporije od procesora. Pri prenošenju podataka na npr. štampač, procesor mora da sačeka štampač da završi operaciju štampanja tekućeg da bi mu poslao sledeći podatak. To čekanje za procesor, pošto je za to vreme besposlen, predstavlja izgubljeno vreme. Upotreba prekida omogućuje procesoru da izvršava druge instrukcije dok periferija ne zatraži sledeći podatak.

Kada periferija postane spremna za prijem novih podataka iz procesora, ona signalizira to stanje procesoru slanjem zahteva za prekid. Tada procesor, za kratko, prekida izvršenje tekućeg programa i vrši skok na drugi deo programa koji se naziva prekidna rutina. U okviru prekidne rutine se opslužuje periferija koja je zahtevala prekid i nakon toga se vrši povratak u glavni program. Izvršavanje glavnog programa se produžava od onog mesta gde je bilo prekinuto,tj.nakon prihvatanja prekida CPU preuzima sledeće akcije:

1. odlaže izvršenje tekućeg programa,

2. sačuva svoj status

3. prelazi na rutine za obradu prekida

4. ponovo se vraća na prekinuti program kako bi nastavio dalje izvršenje.

Page 5: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

5

Slika 1. Prihvatanje zahteva za prekid i obrada prekida

Prekidi se iniciraju od strane spoljnih događaja koji su van CPU-a,i time se poboljšava efikasnost korišćenja CPU-a. Postoje 4 klase prekida koji se koriste kod mikroprocesora, a to su:

1. Vektorski prekidi – kada nekoliko spoljnih uređaja šalje zahtev za prekid CPU-u,neophodno je da se identifikuje specifični izvor prekida sa ciljem da se selektuje odgovarajuća rutina za obradu prekida.

2. Nemaskirajući prekidi – ovaj tip prekida se ne može maskirati izvršenjem određenih naredbi.Kada se nemaskirajući prekid aktivira javlja se prekid programa koji se trenutno izvršava, nezavisno od tipa operacije koju CPU trenutno obavlja.

3. Nevektorski prekidi – imaju efekat kao i nemaskirajući.Informacija o početnoj adresi rutine za obradu prekida smeštena je na fiksnu lokaciju u vektorskoj tabeli.Ovi prekidi se mogu maskirati.

4. Restartujući prekidi – zahtev za prekid se prihvata nakon završetka naredbe koja je u toku.Ali,ako se zahtev za prekid generiše kao rezultat kada treba da zaštitimo dalji korektni tok izvršenja same naredbe,prekid će se odmah prihvatiti,pre kraja naredbe.Ovim tipom prekida se suspenzuje program,koji je u toku,na sredini naredbe,a sve informacije koje su neophodne za uspešan nastavak prekinute naredbe se čuvaju u magacinu.

prenos

Prekidni program (rutina za obradu prekida)

Program koji se prekida (tekući program)

prekid

Page 6: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

6

U konkretnom slucaju kod nasih procesora

- imamo jedan hardverski prekid ( pri zahtevu za prekid imamo flag koji oznacava da li je prekid dozvoljen ili ne, i taj flag se zove IRQ-flag)

-postoji i EINT-flag koji oznacava da li je dozvoljeno trenutno izvrsavanje prekida ( na pocetku rada procesora je zabranjen EINT prekid, ovaj flag se postavlja na dozvoljeno stanje naredbom EINT)

-pri izvrsavanju prekida EINT se ponovo u nedozvoljeno stanje dok se ne izvrsi kod prekidne rutine tj. dok se ne dodje do naredbe RET ( naredba za povratak iz prekida), flag EINT se postavlja u nedozvoljeno stanje naredbom DINT

-postavljanjem markera IRQ, prekid se ne izvrsava odmah nego se ceka da se tekuca instrukcija izvrsi do kraja

-kad su ispunjeni uslovi za prekid isti se izvrsava tako sto se pamti trenutno stanje registra PC iskace na fixnu lokaciju gde se nalazi kod prekidne rutine ( M768)

1.3. Prioritet kod prekida

Osnovni kriterijum koji se koristi das se dodeli prioritet različitim prekidima zasniva se na brzini odziva koju prati odgovarajući događaj:najviši prioritet,najbrži odziv.

Prioritet kod opsluživanja zahteva za prekid je sledeći:

1.restartujući prekidi

2.nemaskirajući prekidi

3.vektoski prekidi

4.nevektorski prekidi

Page 7: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

7

2. Format instrukcije i adresiranje

IRQSim je dvoadresna 16-bitna mašina koja podržava tri načina adresiranja: direktno, neposredno i registarsko. Obim adresne magistrale je 16 bitova (može da se adresira do 216 memorijskih lokacija). Dužina instrukcije je promenjljiva, može da bude jedna, dve ili tri reči. Procesor može da prihvati i obradi zahtev za hardverski prekid.

2.1. Format mašinske instrukcije Format mašinske instrukcije IRQSim-a je prikazan na slici:

opkod modifikator operand

X X X X Y Y Y Y A A A A A A A A d15 d12 d11 d10 d9 d8 d7 d0

gde su: d15 ÷ d12 – četiri bita koja označavaju kôd instrukcije ( opkôd ) d11 i d8 – četiri bita koja se odnose na načine adesiranja ( modifikator M ) d8 ÷ d0 – osam bitova koji predstavljaju polje operand

instrukcija opkôd polje opis instrukcije

NOP 0000 No Operation JMP 0001 Bezuslovno grananje (skok) Jx 0010 jz, jnz

EINT, DINT 0011

EINT- naredba za dozvolu prekida modifikator=0 DINT- naredba za zabranu prekida modifikator=1

RET 0100 Naredba za povratak iz prekida LD 0101 Kopiranje iz memorije u akumulator ST 0110 Kopiranje iz akumulatora u memoriju

MOV 0111 Kopiranje iz akumulatora u registar Rx INC 1000 Inkremetntiranje akumulatora NOT 1001 Logicka NOT operacija NEG 1010 Logička ne operacija OR 1011 Logicka OR operacija

XOR 1100 Logička ExOR operacija AND 1101 Logička AND operacija ADD 1110 Aritmetička operacija sabiranja SUB 1111 Aritmetička operacija oduzimanja Tabela 1. Instrukcije procesora sa definisanim opkôd poljem

Page 8: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

8

Instrukcija može da ima jednu ili dve reči koje predstavljaju adrese operanda (u slučaju direktnog adresiranja) ili same vrednosti operanada (u slučaju neposrednog adresiranja).

modifikator Način adresiranja Dužina instrukcije 0000 Nema adresiranja Jedna reč 0001 0010 0011 0100 Jednoadresno: direktno Dve reči 0101 Dvoadresno: direktno, direktno Tri reči 0110 Dvoadresno: direktno, neposredno Tri reči 0111 Dvoadresno: direktno,registarsko Dve reči 1000 jednoadresno:neposredno Dve reči 1001 1010 1011 1100 Jednoadresno: registarsko Jedna reč 1101 Dvoadresno:registarsko, direktno Jedna reč 1110 Dvoadresno:registarsko,neposredno Dve reči 1111 Dvoadresno:registarsko, registarsko Jedna reči

Tabela 2. Značenje polja modifikatora M

2.2. Klase instrukcija IRQSim-a

Instrukcije možemo podeliti u sledeće grupe: 1. prenos-podataka (MOV, LD, ST) – pomoću ovih instrukcija vrši se kopiranje

informacija iz jedne lokacije u drugu. Lokacije mogu pripadati registrima procesora ili memoriji,

2. aritmetičke (ADD, SUB, NEG, INC) – obavljaju aritmetičke operacije nad numeričkim podacima,

3. logičke (OR, AND, NOT, XOR) – uključuju Booleove i druge nenumeričke operacije,

4. programsko-upravljačke (JMP, JZ, JNZ, RET) – menjaju sekvencu programskog izvršenja,

5. ostale instrukcije (NOP) – u ovu grupu spada instrukcija operacija bez efekta .

Page 9: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

9

2.3. Skup instrukcija NOP Opkod – 0000

NOP je operacija bez efekta, inkrementira se sadržaj programskog brojača, program nastavlja sa izvršenjem.

Instrukcije sabiranja

ADD D (eng. add - saberi) Opkod – 1110 Instrukcija Način adresiranja Tok ADD M5 Direktno jednoadresno AC←AC+MEM[5] ADD #22 Neposredno AC←AC+22 ADD R6 Registarsko AC←AC+R6 ADD M5, M10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] + MEM[10] ADD M5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] + 22 ADD M5, R2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] + R2 ADD R2, M5 Dvoadresno registarsko, direktno R2 ← R2 + MEM[5] ADD R2, #22 Dvoadresno registarsko, neposredno R2 ← R2 + 22 ADD R2, R4 Dvoadresno registarsko, registarsko R2 ← R2 + R4

INC D (eng. inerement - inkrementiraj, uvećaj za 1) - D+1 → D Opkod – 1000

Instrukcijom INC inkrementiramo sadržaj akumulatora CARRY – postavlja se na 1 ako se nakon izvršavanja operacije javio prenos SIGN – postavlja se na 1 ako je MS bit rezultata jednak 1 inače ako je MS bit rezultata operacije OR jednak 0 ovaj marker se postavlja na vrednost 0. ZERO – postavlja se na 1 ako je rezultat 0, inače se postavlja na 0.

Page 10: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

10

Instrukcije oduzimanja

SUB D (eng. subtract - oduzmi) Opkod – 1111 Instrukcija Način adresiranja Tok SUB M5 Direktno jednoadresno AC←AC - MEM[5] SUB #22 Neposredno AC←AC - 22 SUB R6 Registarsko AC←AC - R6 SUB M5, M10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] - MEM[10] SUB M5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] - 22 SUB M5, R2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] - R2 SUB R2, M5 Dvoadresno registarsko, direktno R2 ← R2 - MEM[5] SUB R2, #22 Dvoadresno registarsko, neposredno R2 ← R2 - 22 SUB R2, R4 Dvoadresno registarsko, registarsko R2 ← R2 - R4

NEG D (eng. negate - negiraj, promeni znak) - Opkod – 1010

Intrukcija NEG vrši promenu znaka operanda. Instrukcija u odredišni

operand smešta potpuni komplement broja. Početno stanje:

al: 0 0 0 0 0 1 0 1 = 7

NEG AL al: 1 1 1 1 1 0 1 0 = -7

Instrukcija Način adresiranja Tok

NEG jednoadresno AC← - AC

NEG M22 Direktno MEM[22] ← -MEM[22]

NEG R3 Registarsko R3 ← -R3

Page 11: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

11

Logičke instrukcije

Ova grupa instrukcija izvodi logičke operacije nad parovima odgovarajućih bitova operanada, a rezultat se smešta u odredišni operand

AND D (eng. and - i) Opkod – 1101

Instrukcijom AND se izvršava logička I operacija nad izvorišnim

operandom specificiranim instrukcijom i odredišnim operandom AC a rezultat se smešta u AC.

Instrukcija Način adresiranja Tok AND M5 Direktno jednoadresno AC←AC and MEM[5] AND #22 Neposredno AC←AC and 22 AND R6 Registarsko AC←AC and R6 AND M5, M10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] and MEM[10] AND M5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] and 22 AND M5, R2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] and R2 AND R2, M5 Dvoadresno registarsko, direktno R2 ← R2 and MEM[5] AND R2, #22 Dvoadresno registarsko, neposredno R2 ← R2 and 22 AND R2, R4 Dvoadresno registarsko, registarsko R2 ← R2 and R4

OR D, (eng. or - ili) .

Opkod – 1011 Instrukcijom OR se izvršava logička ILI operacija nad izvorišnim operandom specificiranim instrukcijom i odredišnim operandom AC a rezultat se smešta u AC. Instrukcija Način adresiranja Tok OR M5 Direktno jednoadresno AC←AC orMEM[5] OR #22 Neposredno AC←AC or 22 OR R6 Registarsko AC←AC or R6 OR M5, M10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] or MEM[10] OR M5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] or 22 OR M5, R2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] or R2 OR R2, M5 Dvoadresno registarsko, direktno R2 ← R2 or MEM[5] OR R2, #22 Dvoadresno registarsko, neposredno R2 ← R2 or 22 OR R2, R4 Dvoadresno registarsko, registarsko R2 ← R2 oi R4

Page 12: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

12

NOT D (eng. not - ne)

Opkod – 1001 Instrukcijom NOT se izvršava logička operacija negacije nad sadržajem AC, a rezultat se smešta u AC. Instrukcija Način adresiranja Tok

NOT jednoadresno AC←not AC

NOT M22 Direktno MEM[22] ←not MEM[22] NOT R3 Registarsko R3 ←not R3

Instrukcije za rad sa mem. lokacijama

ST X (eng. store- smesti). Instrukcijom za prenos podataka ST se

izvršava operacija učitavanja sadržaja akumulatora u memorijsku lokaciju specificiranu instrukcijom. Izvrešenje ove instrukcije nema uticaj na postavaljanje statusnih markera. Opkod – 0110 Operacija – (akumulator)- Memorija

LD Y (eng. load – učitaj). Instrukcijom za prenos podataka LD se

izvršava operacija upisivanja sadržaja izvorišnog operanda specificiranog instrukcijom u akumulator . U zavisnosti od načina adresiranja srećemo sledece varijante: Opkôd: 0111

Instrukcija Način adres. Tok ST M1 Direktno AC→MEM[1] ST R0 Registarsko AC→R0

Instrukcija Način adres. Tok LD 0Ah Direktno MEM[10]→AC LD #12 Neposredno 12→AC LD R4 Registarsko R4→AC

Page 13: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

13

Instrukcije grananja Instrukcija bezuslovnog skoka JMP D (eng. jump - skok) Instrukcijom JMP se izvršava operacija bezuslovnog grananja (skoka) na

memorijsku lokaciju speificiranu instrukcijom. Izvršenje ove instrukcije nema efekat na postavljanje statusnih markera. Opkôd: 1000

Instrukcije uslovnog skoka JZ (jump if zero) Opkod – 0010 Modifikator-000 if ZERO = {1} then (operand) → PC else continue Instrukcijom JZ se izvršava operacija uslovnog grananja (skoka) na

memorijsku lokaciju specificiranu instrukcijom ako je marker ZERO postavljen na {1}. Izvršenje ove instrukcije nema efekat na postavljanje statusnih markera.

JNZ (jump if not zero) Opkod – 0010 Modifikator - 001 if ZERO = {0} then (operand) → PC else continue Instrukcijom JNZ se izvršava operacija uslovnog grananja (skoka) na

memorijsku lokaciju specificiranu instrukcijom ako je marker ZERO postavljen na {0}. Izvršenje ove instrukcije nema efekat na postavljanje statusnih markera.

Page 14: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

14

2.4. Adresni načini rada Svakom operandu instrukcije pridružuje se podatak. Da bi izvršio instrukciju, procesor treba da pribavi tekuću vrednost podatka. Lokacija na kojoj se nalazi podatak može se specifirati na nekoliko načina. Specifikaciju lokacije operanda nazivamo način adresiranja. U zavisnosti od toga na koji način se obavlja specifikacija kažemo da postoje nekoliko različitih načina adresiranja. Za konkretni slučaj, IRQSim podržava sledeće načine adresiranja: 1. Direktno – jedno-operandsko 2. Direktno – dvo-operandsko 3. Direktno - neposredno 4. Direktno - registarsko 5. Neposredno – jedno-operandsko 6. Registarsko – jedno-operandsko 7. Registarsko - registarsko 8. Registarsko – direktno 9. Registarsko – neposredno

Direktno jedno-operandsko adresiranje

Kod direktnog načina adresiranja polje operand specificira adresu memorijske lokacije koja odgovara podatku kome se pristupa. Naime, adresni deo instrukcije predstavlja adresu na osnovu koje se vrši obraćanje memoriji, pa se zbog toga ova adresa naziva direktna adresa. Prednost ovakvog načina adresiranja je jednostavnost izvođenja, a nedostatak ograničeni adresni opseg.

Dužina instrukcije je 2 reči. Format mašinske instrukcije dat jeu sledećoj tabeli: 1 reč opkod modifikator Ne koristi se

X X X X 0 1 0 0 0 0 0 0 0 0 0 0 2 reč

Operand A A A A A A A A A A A A A A A A

Page 15: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

15

Direktno dvo-operandsko adresiranje

Dužina instrukcije je 3 reči. Format mašinske instrukcije dat je u sledećoj tabeli:

1 reč opkod modifikator Ne koristi se

X X X X 0 1 0 1 0 0 0 0 0 0 0 0 2 reč

Operand 1 A A A A A A A A A A A A A A A A

3 reč

Operand 2 A A A A A A A A A A A A A A A A Dvo-operandsko direktno neposredno adresiranje Dužina instrukcije je 3 reči. Format mašinske instrukcije dat je u sledećoj tabeli:

1 reč opkod modifikator Ne koristi se

X X X X 0 1 1 0 0 0 0 0 0 0 0 0 2 reč

Operand 1 A A A A A A A A A A A A A A A A

3 reč

Operand 2 N N N N N N N N N N N N N N N N

Page 16: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

16

Dvo-operandsko direktno registarsko adresiranje Dužina instrukcije je 2 reči. Format mašinske instrukcije dat je u sledećoj tabeli:

1 reč opkod modifikator ne koristi se Operand2

X X X X 0 1 1 1 0 0 0 0 0 R R R

2 reč

Operand 1 A A A A A A A A A A A A A A A A

Neposredno adresiranje

Kod neposrednog adresiranja adresni deo instrukcije (polje operand) specificira vrednost operanda, tj. operand je konstanta i sastavni je deo instrukcije.

Osnovne karakteristike neposrednog načina adresiranja su: • Koristi se da definiše konstante, ili da postavi na inicijalne vrednosti

promenljive u programu. Obično, brojevi se memorišu u prezentaciji dvoičnog komplementa. Bit najveće težine u polju operanda se koristi kao bit znaka. Kada se operand puni u registar, vrši se znakovno proširenje do obima koji odgovara punoj reči.

• Operand se pribavlja u CPU u trenutku kada se pribavlja i instrukcija; na ovaj način se štedi jedan memorijski ili keš ciklus po instrukciji.

• Obim podatka koji se pribavlja ograničen je obimom adresnog polja, i kod najvećeg broja skupova instrukcija mali je u odnosu na dužinu reči.

Neposredno jedno-operandsko adresiranje Dužina instrukcije je 2 reči. Format mašinske instrukcije dat je u sledećoj tabeli:

1 reč opkod modifikator Ne koristi se

X X X X 1 0 0 0 0 0 0 0 0 0 0 0 2 reč

Operand N N N N N N N N N N N N N N N N

Page 17: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

17

Registarsko adresiranje

Kod registarskog adresiranja, odgovarajućim poljem operanda se specificira registar u kome je smešten operand.

Prednosti registarskog adresiranja su: • Adresno polje instrukcije kojim se specificira registar je malo i obima je

nekoliko bitova. • Ne vrši se obraćanje memoriji; • Instrukcije koje manipulišu sa sadržajem registra brzo se izvršavaju.

Regitarsko jedno-operandsko adresiranje Dužina instrukcije je 1 reč. Format mašinske instrukcije dat je u sledećoj tabeli:

1 reč opkod modifikator Ne kroristi se Operand1

X X X X 1 1 0 0 0 0 0 0 0 R R R Dvo-operandsko registarsko-direktno adresiranje

Dužina instrukcije je 2 reč. Format mašinske instrukcije dat je u sledećoj tabeli:

1 reč opkod modifikator Ne kroristi se Operand1

X X X X 1 1 0 0 0 0 0 0 0 R R R 2 reč

Operand 2 A A A A A A A A A A A A A A A A

Dvo-operandno registarsko registarsko adresiranje 1 reč

opkod modifikator Operand1 Operand2 X X X X 1 1 0 0 0 R R R 0 R R R

Page 18: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

18

3. Instalacija i pokretanje programa Postupak pokretanja programa IRQSim je sledeći:

1. Izabrati programsku ikonu IRQSim for Windows lociranu na Desktop-u.

2. Aktivirati IRQSim – aktiviranje se izvodi dvostrukim klikom levim tasterom miša na odabranu ikonu IRQSim

3. Startovanjem IRQSim -a na ekranu se pojavljuje aplikacioni prozor

pod nazivom IRQSim – untiled.asm (vidi Sliku 2) 4. U oblasti aktivne površine Editor-a pozicionirati kursor u krajnje

gornjoj levoj poziciji. Kada je kursor pozicioniran u krajnje gornjoj levoj poziciji, vrednost linijskog brojača je 0, tj. prikazuje se broj linije 0.

5. U svakoj liniji aktivne površine unosi se po jedna instrukcija. Prelazak na novu liniju se vrši pritiskom na dirku Enter. Nakon svakog unosa instrukcije vrednost linijskog brojača inkrementira se za 1.

3.1. Text Editor Nakon pokretanja programa AMSim pojavljuje se glavni aplikacioni prozor koji predstavlja Text Editor u kome se pripremaju sekvence programa. On se satoji iz 3 dela prikazanih na slici 2.

1. Menu-bar 2. Text editor 3. Pokazivač linije u kojoj se nalazi kursor

Slika 2. – Prozor text editora

2

1

3

Page 19: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

19

Sekcija na vrhu se odnosi na polje Menu-bar. Menu-bar omogućava

selekciju File, Edit, View, Assemble i Help operacije. File – selekcijom ove operacije otvara se padajući meni koji sadrži sledeće opcije (vidi Sliku 3):

■ New – (selekcijom ove operacije) kreira se nova programska sekvenca ■ Open – učitava se fajl izvornog programa nazvan ime-prezime.asm ■ Save – pamti fajl koji se tekuće koriguje ili ažurira na mestu gde je bio prethodno zapamćen ■ Save as... – dodeljuje ime fajlu (ime-prezime.asm) koji se tekuće kreira, bira lokaciju gde će se taj fajl zapamtiti ■ Exit - izlazak iz Text editora.

Slika 3. File meni

Page 20: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

20

Edit – selekcijom ove operacije otvara se padajući meni (vidi Sliku 4) koji sadrži sledeće opcije: ■ Cut – kopiranje selektovanog sadržaja. Kopiranjem, selektovani sadržaj se briše iz izvornog fajla. ■ Copy - kopiranje selektovanog sadržaja. Kopiranjem, selektovani sadržaj se ne briše iz izvornog fajla. ■ Paste – lepljenje prethodno kopiranog selektovanog sadržaja iz izvornog fajla. ■ Delete – brisanje selektovanog sadržaja iz izvornog fajla. ■ Select All – selektovanje celokupnog (integralnog) sadržaja izvornog fajla.

Slika 4. Edit meni

Page 21: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

21

Assemble – koristi se za asembliranje sadržaja izvornog programa izvornog fajla sa ekstenzijom .asm koji se unosi preko Text-editor-a.

Aktiviranje izvršenja programa na displeju prati generisanje prozora Assembler. Ovaj prozor biće opisan kasnije.

Help – opcija služi za dobijanje pomoćnih informacija o programu.

Sekcija Text editor aktivira se klikom levog tastera miša. Kao efekat

pojavljuje se kursor pozicioniran na krajnje gornjoj levoj poziciji aktivne površine Editor-a koja se koristi za unos izvornog programa.

Unešeni tekst se u realnom vremenu (odmah po unosu) "boji" u odgovarujuću boju kao što je to prikazano u sledećem primeru: Primer:

Ako nema teksta koji je obojen u crvenu boju znači da je unešeni tekst

sintaksno ispravan i da se može asemblirati u protivnom je potrebno ispraviti crveno obojeni tekst jer postoji sitaksna greška.

Sekcija Pokazivač kursora – predstavlja linijski brojač, brojna vrednost ukazuje na liniju u kojoj se unosi asemblerski kôd i broj karaktera u tekućoj liniji.

lsc - nepravilano napisan tekst (crveno) ; komentar - komentar počinje sa znakom ;

(plavo) add 0ah ;komentar u liniji koda - pravilno napisana komanda add 12 - pravilno napisan numerički

operand (zeleno) sub ah - pravilno napisan operand registar (teget) and r0 - pravilno napisan specijalni zank (braon) add #23

Page 22: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

22

3.2. Asembliranje

Izborom opcije Assemble iz glavnog menija tekst editora otvra se prozor Assembler prikazan na Slici 5.

Slika 5. – Prozor Assembler

U ovom prozoru se može videti izveštaj o toku procesa asembliranja kao i izveštaj o eventualnim greškama. U donjem delu se nalazi poruka o tome kako je završen proces asembliranja da li uspešno ili koliko grešaka postoji.

Izveštaj o procesu asembliranja ima seledeću formu:

Memory[0]=1110000000001010: ADD AH Memory[1]=1110000000001100: ADD 12 Memory[2]=1111000000001010: SUB 0AH Memory[3]=1101010000000000: AND R0 Memory[4]=1110001000000000: ADD #23 Memory[5]=0000000000010111

U izveštaju za svaku uspešno asembliranu instrukciju imamo označenu memorijsku lokaciju na koju se upisuje mašinski kod te instrukcije, mašinski kod je prikazan sa označenim delom za opkod (plava boja) modifikator (zelena boja) i operand, i na kraju asemblerski kod instrukcije.

U slučaju da postoji greška, prikazuje se poruka o grešci koja se satoji iz

broja linije u kojoj se greška nalazi, koda greške i objašnjenja greške. Asembeler ume da prepozna sledeće tipove grešaka:

Page 23: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

23

kod

greške Objašnenje

0 nepostojeća naredba 2 neprhvatljiv način adresiranje za tu naredbu 4 postoji nešto iza operanda u liniji 5 naredba ne treba da ima operand 6 prekoračena vrednost operanda

7 registar SP se ne koristi za aritmetičke i logičke operacije

Tabela – Greške koje asembler prepoznaje

Nakon uspešnog asembliranja mogu se izabrati dve opcije OK ili Start CPU. Izborom opcije OK zatvara se prozor asembelra otvaraju se tri nova prozora Processor Graph, Memory i Register prozor ali se ne startuje izvršavanje programa dok se izborom opcije Start CPU otvaraju ova tri nova prozora i počinje izvršavanje programa.

3.3. Praćenje toka izvršavanja programa

Processor Graph, Register, Memory i Trace prozori

Posle asembliranja programa otvaraju nam se tri nova prozora koja treba da posluže za praćenje toka izvršavanja programa i to su Processor Graph (slika 6) na kome je prikazana blok šema procesora, Register prozor (slika 7) u kome su date tekuće vrednosti registara procesora i Memory prozor (slika 8) u kome su prikazane tekuće vrednosti u meoriji koja je grupisana po memorijskim lokacijama dužine mašinske reči od 2 bajta (16 bita). Pored ovih postoji i prozor Trace (slika 9) u kome se mogu pratiti vrednosti registara PC, AC, IR, IND posle svake faze izvršenja instrikcije.

Page 24: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

24

3.3.1. Processor Graph prozor

Slika 6. – Processor Graph prozor

U ovom prozoru prikazna je blok-šema procesora na kojoj se prikazuje tok izvršavanja isntrukcija. U okviru blok šeme prikazani su registri procesora, Aritmetičko-logička jedinica, Memorija, magistrale koje ih povezuju i kontrolni signali koji kontrolišu rad procesora.

Page 25: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

25

Registri su na blok šemi prikazani pravougaonikom u kome se nalazi ime registra, a sa strane su prikazani konrolni ulazi koji su označeni kontrolnim signalima i to mogu biti sledeći signali:

- En – enabale signal dozvole upisa u registar; - Inc – signal inkrementrianja sadržaja registra; - Dec – signal dekrementrianja sadržaja registra; - S0, S1, S2 – selektorsku ulazi za registre opšte namena R0 ... R7. Signali su označeni crnim slovima kada su neaktivni, a crvenim kada su

aktivni.

Na blok-šemi označeni su sledeći registri - PC – program counter – 16 bitni registar programskog brojača. Ima dva

kontrolna ulza En i Inc; - AC – akumulator – 16 bitni registar akumulator. Ima tri kontrolna ulaza

En, Inc i Dec; - IR1 – Instruction Register – 16-bitni instrukcioni registar koji ima tri

izlaza i to 8-bitni izlaz za operand za adresiranje registarskog polja, 4-bitni izlaz za modifikator i 4-bitni izlaz za opcode;

- IR2 i IR3 - Instruction Register – 16-bitni instrukcioni registri u kojima se cuvaju druga i treca reč instrukcije

- R0..R7 – 16-bitni registri opšte namene; - Registar A, Registar B pomoćni registri za držanje vrednosti; - MAR, MDR – pomoćni registri za pristup memoriji; - PSW – program status word – je šestbitni registar koji sadrži bitove

kojima se očitava stanje markera CARRY, SIGN, PARITY, OVER FLOW, ZERO i IRQ.

CARRY (prenos) – postavlja se na logičku {1} ako se izvršenjem operacije javio prenos kod operacije sabiranja, ili je došlo do pozajmljivanja kod operacije oduzimanja, na mestu bita najveće težine,

SIGN (znak) – odgovara bitu znaka rezultata dobijen zadnjom operacijom,

ZERO (nula) – postavlja se na logičku {1} kada je rezultat operacije jednak 0,

PARITY (parnost) – postavlja se na logičku {1} kada je broj jedinica u rezultatu nakon zadnje operacije paran, tj. broj jedinica u akumulatoru paran

Crnim linijama na blok-šemi prikazana je 16-bitna magistrala, a stelicama je prikazan smer toka signala kroz magistralu. Aktivni deo magistrale u toku izvršenja instrukcije označava se plavom bojom.

Za kontrolu rada magistrale koriščeni su 16-bitni trostatički baferi koji su prikazani simbolom:

Page 26: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

26

Kada je ovaj simbol prikazan crnom bojom bafer je neaktivan, a na njegovom izlazu je stanje visoke impendanse. Kada je simbol prikazan crvenom bojom, bafer se nalazi u aktivnom stanju i na njegovom izlazu se preslikava stanje sa ulaza.

Na vrhu prozora nalazi se Menu bar u kome se nalaze opcije za konrolu rada procesora i to su sledeće opcije:

- Start CPU - ovom opcijom pokreće se rad procesora, počinje animacija kojom se prikazje protok informacije crvenim tačkama koje se kreću duž magistrale i aktivni kontrolni signali se prikazini crvenom bojom.

- STOP – ovom opcijom se zaustavlja rad procesora. Po izboru ove opcije treba sačekati da se završi animacija kojom se prikazuje tekuća faza izvršavanja instrukcije.

- Reset - ovom opcijom procesor se dovodi u početno stanje, vrednost registara se postavlja na 0.

- STEP_FWD – kada je procesor zaustavljen opcijom STOP ovom opcijom se može narediti izvršenje sledeće faze izvršenja instrukcije posle čega se procesor ponovo zaustavlja.

Pored opcija za kontrolu rada procesora u Menu bar-u nalazi se još i podmeni View u kome se mogu izbrai sledeće opcije:

- Register - Register Edit - Memory - Memory Edit - Trace

Page 27: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

27

3.3.2 Register prozor i Register Edit prozor

Slika 7. Registers i Register Edit prozor

Prozor Register se otvara istovremno sa prozorom Processor Graph i u njemu se prikazuju trenutne vrednosti registara procesora u binarnom brojnom sitemu. Ovom prozoru se može pristupiti i iz menija przora Processor Graph izborom opcije View| Register.

Na vrhu ovog prozora nalazi se Menu bar u kome se nalazi opcija Reister Edit kojom se poziva istoimeni prozor u kome se mogu psotaviti vrednosti registara. Vrednosti registara se unose u decimalnom brojnom sitemu. Ovom prozoru se može pristupiti i iz menija prozora Processor Graph izborom opcije View| Register Edit.

Page 28: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

28

3.3.3. Memory i Memory Editor prozor

Slika 8. Memory i Memory Edit prozor

Prozor Memory se otvara istovremeno sa prozorom Processor Grpah i služi

za prikaz sadržaja memorije. Ovom prozoru se može pristupiti i iz menija prozora Processor Graph izborom opcije View| Memory.

Sadržaj memorije prikazan je u formi tabele sa dve kolone prva kolona označava memorijsku lokaciju a druga vrednost koja je upisana na toj memorijskoj lokaciji u binarnom brojnom sitemu. Žuto označeno polje predstavlja memorijsku lokaciju koja je trenutno selektovana na adresnom ulazu memorije. Crvenom bojom označene su memorijske lokacije na kojima su upisne instrukcije programa koji se izvršava.

Na vrhu ovog prozora nalazi se Menu bar koji ima opciju Memory Edit kojom se poziva prozor Memory Edit.

U prozoru Memory Edit se nalazi slična tabela ali se u njoj mogu uneti vrednosti na odgovarajućim memorijskim lokacijama u memoriji u decimalnom brojnom sistemu. Ovom prozoru se može pristupiti i iz menija prozora Processor Graph izborom opcije View| Memory Edit.

Page 29: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

29

3.3.4. Trace Prozor

Slika 9. Trace prozor

Trace prozoru se pristupa iz menija prozora Processor Graph izborom

opcije View| Trace. U prozoru Trace u formi liste prkazana je aktivnost procesora po fazama izvršavanja instrukcija kao i vrednosti registara PC, IR, AC i IND posle svake izvršene faze.

3.4. Faze izvršavanja instrukcije

Kao što je prikazano na slici 10 program koji izvršava procesor čini skup instrukcija (1 < I < N). U opštem slučaju izvršenje instrukcije može se podeliti na dve faze, fazu pribavljanja, FETCH, koja uključuje ciklus pribavljanja i dekodiranja instrukcije, i fazu izvršenja, EX. Svaku od faza čini veći broj koraka koji mogu da uključe paralelno izvršenje većeg broja mikrooperacija. Mikrooperacije su atomizirane akcije, tj. elementarne operacije koje se ne mogu dalje razbijati.

Faza pribavljanja, FETCH, je identična za sve instrukcije. Faza dekodiranja

se odnosi na određivanje tipa instrukcije i smatra se da je to aktivnost tipa višestruko-grananje (multi-way branch), i obavlja se trenutno (zbog toga je na Slici njeno vreme trajanja nula). Faza EX je različita za sve tipove instrukcija.

Page 30: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

30

Slika 10. Nivoi izvršavanja programa

U konkretnom slučaju fazu FETCH čine sledeća tri koraka:

FETCH1 : MAR ← PC FETCH2 : IR1 ← MDR ← M , PC ← PC + 1 FETCH3 : Decode ir1

gde su FETCH1, FETCH2 i FETCH3 koraci, a aktivnosti tipa MAR ← PC , PC ← PC + 1, itd. predstavljaju mikrooperacije. U koraku FETCH1 sadržaj programskog brojača, PC, se upisuje u memorijsko adresni registar, MAR. Adresira se memorija MEM i generiše signal Read . U koraku FETCH2 čita se sadržaj adresirane memorijske lokacije i upisuje u registar MDR i u . Istovremeno se sadržaj PC-a inkrementira sa ciljem da ukaže na narednu lokaciju u memoriji kojoj treba pristupiti. FETCH 3 faza dekodira IR registar Radi pojednostavljenja usvaja se da se svaki od koraka FETCH1, FETCH2 i FETCH3 obavlja za jedan taktni interval što znači da se faza pribavljanja izvršava za tri,5,7 taktna intervala. Broj mikrooperacija u fazi izvršenja, EX, zavisi od tipa instrukcija i adresnog načina rada. Algoritam FETCH faze dat je na sledecoj slici.

PROGRAM

INSTRUKCIJA NINSTRUKCIJA 2INSTRUKCIJA 1nivo

instrukcija

nivo programa

nivo faze FETCH EX FETCH EX FETCH EX

nivo mikrooperacija

Page 31: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

31

Slika 11. Algoritam FETCH faze

3.4.1. Instrukcije kod kojih faza izvršenja EX traje jedan taktni interval

Skup instrukcija kod kojih faza izvršenja EX traje jedan taktni interval (jedan korak) prikazan je u daljem tekstu . Broj mikrooperacija u okviru faze EX u zavisnosti od tipa instrukcije može biti različit .

NOP no operation JMP PC ← MAR JZ provera flag zero i izvršava NOP1 ili JMP1 JNZ provera flag zero i izvršava NOP1 ili JMP1 RET vraća iz steka poziciju u PC LD_registarsko LD1 AC ← Rx LD_neposredno LD1 AC ← IR2 ST_registarsko ST1 AC ← Rx MOV_registarsko_neposredno MOV1 Rx ←IR2 INC AC ← AC + 1

Page 32: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

32

3.4.2. Instrukcije kod kojih faza izvršenja EX traje dva taktna intervala

Skup instrukcija kod kojih faza izvršenja EX traje dva taktna intervala prikazan je u daljem tekstu . Broj mikrooperacija u okviru faze EX u zavisnosti od tipa instrukcije može biti različit .

OR_registarsko_neposredno RN1: B ← IR2 , A ← Rx RN2: Rx ← A OR B

XOR_registarsko_neposredno

RN1: B ← IR2 , A ← Rx RN2: Rx ← A XOR B

AND_registarsko_neposredno

RN1: B ← IR2 , A ← Rx RN2: Rx ← A AND B

ADD_registarsko_neposredno

RN1: B ← IR2 , A ← Rx RN2: Rx ← A ADD B

SUB_registarsko_neposredno

RN1: B ← IR2 , A ← Rx RN2: Rx ← A SUB B

OR_registarsko_jednoadresno R1: B ← Rx , A ← AC R2: Ac ← A OR B

XOR_registarsko_jednoadresno

R1: B ← Rx , A ← AC R2: Ac ← A XOR B

AND_registarsko_jednoadresno

R1: B ← Rx , A ← AC R2: Ac ← A AND B

ADD_registarsko_jednoadresno

R1: B ← Rx , A ← AC R2: Ac ← A ADD B

SUB_registarsko_jednoadresno R1: B ← Rx , A ← AC R2: AC ← A SUB B

Page 33: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

33

OR_neposredno_jednoadresno N1: B ← IR2 , A ← AC

N2: AC ← A OR B

XOR_neposredno_jednoadresno N1: B ← IR2 , A ← AC

N2: AC ← A XOR B

AND_neposredno_jednoadresno N1: B ← IR2 , A ← AC

N2: AC ← A AND B

ADD_neposredno_jednoadresno N1: B ← IR2 , A ← AC

N2: AC ← A ADD B

SUB_neposredno_jednoadresno N1: B ← IR2 , A ← AC

N2: AC ← A SUB B

NOT NOT1: A ← AC

NOT2: AC ← NOT A

NOT_registarsko NOT1: A ← Rx

NOT2: AC ← NOT A

NEG NEG1: A ← AC

NEG2: AC ← NEG A

NEG_registarsko NEG1: A ← Rx

NEG2: AC ← NEG A

Page 34: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

34

3.4.3. Instrukcije kod kojih faza izvršenja EX traje tri taktna intervala

Skup instrukcija kod kojih faza izvršenja EX traje tri taktna intervala prikazan je u daljem tekstu . Broj mikrooperacija u okviru faze EX u zavisnosti od tipa instrukcije može biti različit .

OR_direktno_jednoadresno

D11: MAR ← IR2 D12: B ← MDR ← M[MAR], A ← AC D13: AC ← A OR B

XOR_direktno_jednoadresno

D11: MAR ← IR2 D12: B ← MDR ← M[MAR], A ← AC D13: AC ← A XOR B

AND_direktno_jednoadresno

D11: MAR ← IR2 D12: B ← MDR ← M[MAR], A ← AC D13: AC ← A AND B

ADD_direktno_jednoadresno

D11: MAR ← IR2 D12: B ← MDR ← M[MAR], A ← AC D13: AC ← A ADD B

SUB_direktno_jednoadresno

D11: MAR ← IR2 D12: B ← MDR ← M[MAR], A ← AC D13: AC ← A SUB B

OR_direktno_neposredno DN1: MAR ← IR2 DN2: A ← MDR ← M[MAR], B ← IR3 DN3: M[MAR] ← A OR B

XOR_direktno_neposredno

DN1: MAR ← IR2 DN2: A ← MDR ← M[MAR], B ← IR3 DN3: M[MAR] ← A XOR B

AND_direktno_neposredno

DN1: MAR ← IR2 DN2: A ← MDR ← M[MAR], B ← IR3 DN3: M[MAR] ← A AND B

Page 35: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

35

ADD_direktno_neposredno DN1: MAR ← IR2 DN2: A ← MDR ← M[MAR], B ← IR3 DN3: M[MAR] ← A ADD B

SUB_direktno_neposredno

DN1: MAR ← IR2 DN2: A ← MDR ← M[MAR], B ← IR3 DN3: M[MAR] ← A SUB B

OR_direktno_registarsko DR1: MAR ← IR2 DR2: A ← MDR ← M[MAR], B ← RX DR3: M[MAR] ← A OR B

XOR_direktno_registarsko

DR1: MAR ← IR2 DR2: A ← MDR ← M[MAR], B ← RX DR3: M[MAR] ← A XOR B

AND_direktno_registarsko

DR1: MAR ← IR2 DR2: A ← MDR ← M[MAR], B ← RX DR3: M[MAR] ← A AND B

ADD_direktno_registarsko

DR1: MAR ← IR2 DR2: A ← MDR ← M[MAR], B ← RX DR3: M[MAR] ← A ADD B

SUB_direktno_registarsko

DR1: MAR ← IR2 DR2: A ← MDR ← M[MAR], B ← RX DR3: M[MAR] ← A SUB B

OR_registarsko_registarsko RR1: A ← RX1 RR2: B ← RX2 RR3: AC ← A OR B

XOR_registarsko_registarsko

RR1: A ← RX1 RR2: B ← RX2 RR3: AC ← A XOR B

AND_registarsko_registarsko

RR1: A ← RX1 RR2: B ← RX2 RR3: AC ← A AND B

Page 36: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

36

ADD_registarsko_registarsko RR1: A ← RX1 RR2: B ← RX2 RR3: AC ← A ADD B

SUB_registarsko_registarsko RR1: A ← RX1 RR2: B ← RX2 RR3: AC ← A SUB B

OR_registarsko_direktno RD1: MAR ← IR2 RD2: B ← MDR ← M[MAR], A ← RX RD3: RX ← A OR B

XOR_registarsko_direktno

RD1: MAR ← IR2 RD2: B ← MDR ← M[MAR], A ← RX RD3: RX ← A XOR B

AND_registarsko_direktno RD1: MAR ← IR2 RD2: B ← MDR ← M[MAR], A ← RX RD3: RX ← A AND B

ADD_registarsko_direktno RD1: MAR ← IR2 RD2: B ← MDR ← M[MAR], A ← RX RD3: RX ← A ADD B

SUB_registarsko_direktno RD1: MAR ← IR2 RD2: B ← MDR ← M[MAR], A ← RX RD3: RX ← A SUB B

NOT_direktno NOT1: MAR ← IR2 NOT2: A ← M[MAR] NOT3: M[MAR] ← NOT A

NEG_direktno NEG1: MAR ← IR2 NEG2: A ← M[MAR] NEG3: M[MAR] ← NEG A

Page 37: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

37

3.4.4. Instrukcije kod kojih faza izvršenja EX traje četiri taktna intervala

Skup instrukcija kod kojih faza izvršenja EX traje četiri taktna intervala prikazan je u daljem tekstu . Broj mikrooperacija u okviru faze EX u zavisnosti od tipa instrukcije može biti različit .

MOV_direktno_direktno

MOV1: MAR ← IR3 MOV2: MDR ← M[MAR] MOV3: MAR ← IR2 MOV4: M[MAR] ← MDR

3.4.5. Instrukcije kod kojih faza izvršenja EX traje pet taktna intervala

Skup instrukcija kod kojih faza izvršenja EX traje pet taktna intervala

prikazan je u daljem tekstu . Broj mikrooperacija u okviru faze EX u zavisnosti od tipa instrukcije može biti različit .

OR_direktno_direktno D21: MAR ← IR3 D22: B ← MDR ← M[MAR] D23: MAR ← IR2 D24: A ← MDR ← M[MAR] D25: M[MAR] ← A OR B

XOR_direktno_direktno

D21: MAR ← IR3 D22: B ← MDR ← M[MAR] D23: MAR ← IR2 D24: A ← MDR ← M[MAR] D25: M[MAR] ← A XOR B

AND_direktno_direktno

D21: MAR ← IR3 D22: B ← MDR ← M[MAR] D23: MAR ← IR2 D24: A ← MDR ← M[MAR] D25: M[MAR] ← A AND B

ADD_direktno_direktno

D21: MAR ← IR3 D22: B ← MDR ← M[MAR] D23: MAR ← IR2

Page 38: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

38

D24: A ← MDR ← M[MAR] D25: M[MAR] ← A ADD B

SUB_direktno_direktno

D21: MAR ← IR3 D22: B ← MDR ← M[MAR] D23: MAR ← IR2 D24: A ← MDR ← M[MAR] D25: M[MAR] ← A SUB B

Page 39: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

39

4. Laboratorijska vežba IRQSim 4.1. Pokazni primer

Kroz reprezentativni primer prikazaćemo korake izvršenja test sekvence.

Primer: add r0, m20 eint add m18, m20 inc nop add r0, m20 dint jmp 0 U text editor se unosi sledeća sekvenca :

Prelazak na sledeću liniju test sekvence se vrši pritiskom na taster Enter.

1

Page 40: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

40

Klikom levog tastera miša na polje Assemble (1) vrši se asembliranje unete sekvence.

Otvara se prozor Assembler u kome možemo da vidimo da li je asembliranje

uspešno (3) i izgled instrukcije u asemblerskom jeziku (Slika 21).

2 3

Slika. 21. Prozor Assembler

Sadržaji memorijskih lokacija koje je asembler dodelio instukcijama su:

MEM[0]=1110110100000000 | ADD R0,M20 MEM[1]=0000000000010100 MEM[2]=0011000000000000 | EINT MEM[3]=1110010100000000 | ADD M18,M20 MEM[4]=0000000000010010 MEM[5]=0000000000010100 MEM[6]=1000000000000000 | INC MEM[7]=0000000000000000 | NOP MEM[8]=1110110100000000 | ADD R0,M20 MEM[9]=0000000000010100 MEM[10]=0011000100000000 | DINT MEM[11]=0001010000000000 | JMP 0 MEM[12]=0000000000000000

Asemblerska instrukcija se sastoji od 16 bitova od kojih prva četiri predstavljaju instrukciju (bitovi plave boje), naredna četiti bita način adresiranja (

Page 41: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

41

bitovi zelene boje), a ostalih osam bitova operand, koji u ovom slučaju, predstavlja memorijsku lokaciju na kojoj se nalazi podatak nad kojim se izvršava zadata instrukcija (bitovi ljubičaste boje).

Startujemo IRQSim, klikom levog tastera miša na polje OK (2), program

počinje sa izvršavanjem. Da bismo uočili pravilan rad programa i proverili ispravnost pratićemo izvršenje unete test sekvence tako što ćemo uneti u R0 i R2 neku proizvoljnu vrednost klikom na Register edit , Slika 22. (npr. 10 u R0 i 30 unesemo broj zatim kliknemo na ) i proizvoljne vrednost u memorijske lokacije levim klikom na Memory edit, Slika 23. (npr. u memorijskoj lokaciji 18 unesemo vrednost 15 u memorijskoj lokaciji 15 vrednosti 20.

U oba editora unose se isključivo decimalne vrednosti.

Slika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije

Page 42: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

42

Slika 24. Vrednosti registra i memorije U prozoru IRQcodeForm , slika 25, unosimo rutinu koja će se izvršavati kada

dođe do zahteva za prekid.

Slika 25. Prekidna rutina

Klikom levog tastera miša na polje Start počinje izvršavanje simulacije. Prekid se zadaje klikom levog tastera miša na polje Interrupt request slika 26.

Page 43: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

43

Slika 26. Početak simulacije i zadavanje prekida Koraci izvršenja su sledeći:

PC= 0000000000000000 IR1= 0000000000000000 IR2= 0000000000000000 IR3= 0000000000000000 AC= 0000000000000000 PC= 0000000000000000 IR1= 0000000000000000 IR2= 0000000000000000 IR3= 0000000000000000 AC= 0000000000000000 prva instrukcija: add r0, m20 F2: M[MAR] -> MDR -> IR, INC(PC) PC= 0000000000000001 IR1= 1110110100000000 IR2= 0000000000000000 IR3= 0000000000000000 AC= 0000000000000000 F2-2: PC -> MAR PC= 0000000000000001 IR1= 1110110100000000 IR2= 0000000000000000 IR3= 0000000000000000 AC= 0000000000000000

Page 44: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

44

F2-3: M[MAR] -> MDR -> IR2, INC(PC) PC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 Decode IR PC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 IR2 -> MAR PC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 Rx -> A PC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 M[MAR] -> MDR -> B PC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 A + B -> Rx PC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 druga isntrukcija: EINT PC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 F2: M[MAR] -> MDR -> IR, INC(PC) PC= 0000000000000011 IR1= 0011000000000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 Decode IR PC= 0000000000000011 IR1= 0011000000000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 EINT: enable interrupt PC= 0000000000000011 IR1= 0011000000000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 treća instrukcija: add m18, m20 PC= 0000000000000011 IR1= 0011000000000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 F2: M[MAR] -> MDR -> IR, INC(PC)

Page 45: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

45

PC= 0000000000000100 IR1= 1110010100000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 F2-2: PC -> MAR PC= 0000000000000100 IR1= 1110010100000000 IR2= 0000000000010100 IR3= 0000000000000000 AC= 0000000000000000 F2-3: M[MAR] -> MDR -> IR2, INC(PC) PC= 0000000000000101 IR1= 1110010100000000 IR2= 0000000000010010 IR3= 0000000000000000 AC= 0000000000000000 F2-4: PC -> MAR PC= 0000000000000101 IR1= 1110010100000000 IR2= 0000000000010010 IR3= 0000000000000000 AC= 0000000000000000 F2-5: M[MAR] -> MDR -> IR3, INC(PC) PC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 Decode IR PC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 IR3 -> MAR PC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 M[MAR] -> MDR -> B PC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 IR2 -> MAR PC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 M[MAR] -> MDR -> A PC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 A + B -> M[MAR] PC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000

Page 46: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

46

Tokom izvršenja treće instrukcije zadali smo zahtev za prekid. Sledi izvršavanje zadate prekidne rutine. PUSH PC PC= 0000001100000000 IR1= 1110010100000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 PC= 0000001100000000 IR1= 1110010100000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 F2: M[MAR] -> MDR -> IR, INC(PC) PC= 0000001100000001 IR1= 0000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 Decode IR PC= 0000001100000001 IR1= 0000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 NOP PC= 0000001100000001 IR1= 0000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 PC= 0000001100000001 IR1= 0000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 F2: M[MAR] -> MDR -> IR, INC(PC) PC= 0000001100000010 IR1= 0100000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 Decode IR PC= 0000001100000010 IR1= 0100000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 RET Nakon izvršene prekidne rutine nastavljamo sa izvršenjem sledeće instrukcije. PC= 0000000000000110 IR1= 0100000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 četvrta instrukcija: inc PC= 0000000000000110 IR1= 0100000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000

Page 47: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

47

F2: M[MAR] -> MDR -> IR, INC(PC) PC= 0000000000000111 IR1= 1000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 Decode IR PC= 0000000000000111 IR1= 1000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000 INC AC PC= 0000000000000111 IR1= 1000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000001 peta instrukcija: nop PC= 0000000000000111 IR1= 1000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000001 F2: M[MAR] -> MDR -> IR, INC(PC) PC= 0000000000001000 IR1= 0000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000001 Decode IR PC= 0000000000001000 IR1= 0000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000001 NOP PC= 0000000000001000 IR1= 0000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000001 šesta instrukcija: add r0, m20 PC= 0000000000001000 IR1= 0000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000001 F2: M[MAR] -> MDR -> IR, INC(PC) PC= 0000000000001001 IR1= 1110110100000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000001 F2-2: PC -> MAR PC= 0000000000001001 IR1= 1110110100000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000001 F2-3: M[MAR] -> MDR -> IR2, INC(PC) PC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001

Page 48: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

48

Decode IR PC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 IR2 -> MAR PC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 Rx -> A PC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 M[MAR] -> MDR -> B PC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 A + B -> Rx PC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 sedma instrukcija: dint PC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 F2: M[MAR] -> MDR -> IR, INC(PC) PC= 0000000000001011 IR1= 0011000100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 Decode IR PC= 0000000000001011 IR1= 0011000100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 DINT: disable interrupt PC= 0000000000001011 IR1= 0011000100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 osma instrukcija: jmp 0 PC= 0000000000001011 IR1= 0011000100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 F2: M[MAR] -> MDR -> IR, INC(PC) PC= 0000000000001100 IR1= 0001010000000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001

Page 49: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

49

F2-2: PC -> MAR PC= 0000000000001100 IR1= 0001010000000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 F2-3: M[MAR] -> MDR -> IR2, INC(PC) PC= 0000000000001101 IR1= 0001010000000000 IR2= 0000000000000000 IR3= 0000000000010100 AC= 0000000000000001 Decode IR PC= 0000000000001101 IR1= 0001010000000000 IR2= 0000000000000000 IR3= 0000000000010100 AC= 0000000000000001 JMP: IR2 -> PC PC= 0000000000001101 IR1= 0001010000000000 IR2= 0000000000000000 IR3= 0000000000010100 AC= 0000000000000001 PC=0000000000000000 IR1= 0000000000000000 IR2=0000000000010111 IR3= 0000000000000000 AC=0000000000000000 R2 = 0000000000011110 M[23]=0000000000001100 M[19] = 0000000000001011

Page 50: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

50

4.2. Zadatak za studente Cilj vežbe: Opsluživanje prekidnog programa kod simulatora IRQSim uz praćenje svih aktivnosti koje se odvijaju od strane procesora. Zadatak vežbe: Na osnovu skupa instrukcija, načina adresiranja i predhodnog primera naprave sopstveni primer za simulaciju. Potrebno je zadati nekoliko instrukcija i prekidni kod. Tokom izvršenja glavnog dela programa, pritiskom na taster interrupt request zadati prekid. Program će završiti izvršenje započete instrukcije, a zatim preći na prekidni kod. Nakon izvršenja prekidnog koda simulacija se vraća ne sledeću instrukciju glavnog dela programa kod koje je stalo izvršenje.

Rezultate, korake izvršenja student može naći u Trace prozoru u meniju View.

Da bi se ostvario ovaj cilj neophodno je kreirati dve programske sekvence: - glavni program - prekidni program

Smatrati da je program IRQSim instaliran na Desktop-u računara. Koraci koje treba preduzeti su sledeći: - Pokrenuti program:

1. Izabrati programsku ikonu IRQSim for Windows lociranu na Desktop-u.

2. Aktivirati IRQSim – aktiviranje se izvodi dvostrukim klikom levim tasterom miša na odabranu ikonu IRQSim

3. Startovanjem IRQSim -a na ekranu se pojavljuje aplikacioni prozor

pod nazivom IRQSim – untiled.asm (vidi Sliku 27)

4. U oblasti aktivne površine Editor-a pozicionirati kursor u krajnje gornjoj levoj poziciji. Kada je kursor pozicioniran u krajnje gornjoj levoj poziciji, vrednost linijskog brojača je 0, tj. prikazuje se broj linije 0.

5. U svakoj liniji aktivne površine unosi se po jedna instrukcija. Prelazak na novu liniju se vrši pritiskom na dirku Enter. Nakon svakog unosa instrukcije vrednost linijskog brojača inkrementira se za 1.

Page 51: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

51

Slika 27. Text editor

- uneti u Text Editor glavni program

Napomena: Glavni program treba da sadrži do osam linija.

- Izvršiti asembliranje glavnog programa pritiskom levog tastera miša na polje ASSEMBLE,kao što je prikazano na slici 28.

Page 52: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

52

Slika 28. Asembliranje

Ukoliko je asembliranje uspešno u donjem desnom uglu prozora će biti

natpis Successfull assembled, kao što je prikazano na slici 29.

Slika 29.Uspešno asembliranje

- Ukoliko se javila greška prilikom asembliranja pojaviće se natpis Postoji Greška, kao što je prikazano na slici 30.

Page 53: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

53

Slika 30. Greška pri asembliranju

U tom slučaju proveriti i ispraviti linije glavnog programa i ponoviti

asembliranje. Ukoliko je asembliranje uspešno kliknuti levim tasterom miša na polje

ok,kao na slici 31.

Slika 31.

- Uneti u polje IRQcodeForm prekidni program kao na slici 32.

Page 54: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

54

Slika 32.Unošenje prekidnog programa

Napomena:Uneti do tri linije prekidnog programa.U poslednjoj liniji

prekidnog programa staviti naredbu RET. Da bismo uočili pravilan rad programa i proverili ispravnost pratićemo

izvršenje unete test sekvence tako što ćemo uneti proizvoljne vrednosti stanja registara i memorijskih lokacija koje koriste glavni i prekidni program. Vrednosti stanja registra postaviti klikom na Register edit , Slika 33. (unesemo broj zatim kliknemo na ). Vrednosti memorijskih lokacija postaviti levim klikom na Memory edit, Slika 34. (npr. u memorijskoj lokaciji 18 unesemo vrednost 15 u memorijskoj lokaciji 15 vrednosti 20 a zatim kliknemo na ).

Page 55: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

55

U oba editora unose se isključivo decimalne vrednosti.

Slika 33. Editor vrednosti registra Slika 34. Editor vredonsti memoriske lokacije

Slika 35. Vrednosti registra i memorije

Page 56: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

56

- Klikom levog tastera miša (slika 36.) na polje Start počinje izvršavanje

simulacije.

Slika 36. Početak simulacije Pratitti faze izvršenja instrukcija i nakon druge ili treće instrukcije zadati zahtev za prekid.

Page 57: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

57

- Prekid se zadaje klikom levog tastera miša na polje

Interrupt request slika 37.

Slika 37. Zadavanje prekida

Nakon završetka tekuće instrukcije, uslediće izvršavanje prekidnog programa. Kada se izvrše sve instrukcije prekidnog programa, nastaviće se izvršavanje glavnog programa.

Page 58: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

58

Nakon završetka rada simulatora levim klikom na opciju Trace u menu-ju View. Kao što je prikazano na slici 38.

Slika 38. Opcija Trace

Generisan izveštaj koji se nalazi u Trace prozoru štampati.

Slika 39. Trace prozor

Page 59: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

59

Izveštaj o radu:

Page 60: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

60

4.3. Zaključak Naš zadatak, IRQSim je dvoadresna 16-bitna mašina koja podržava tri načina adresiranja: direktno, neposredno i registarsko. Obim adresne magistrale je 16 bitova (može da se adresira do 216 memorijskih lokacija). Dužina instrukcije je promenjljiva, može da bude jedna, dve ili tri reči. Procesor može da prihvati i obradi zahtev za hardverski prekid. U programskom jeziku Delphi odradili smo simulaciju pomenutog zadatka. Uz simulaciju napravili smo i prateću tehničku dokumentaciju za lakše razumevanje simulacije. Pripremili smo i laboratorijsku vežbu sa primerom na osnovu koga studenti mogu odraditi samostalno laboratorijsku vežbu. Nadamo se da će naša simulacija biti od značajne koristi studentima za lakše razumevanje i savladavanje obradjene materije.

Nenad Ivković

Bratislav Stojiljković Boban Zdravković

Dragan Manojlović

Page 61: IRQSim - University of Nišes.elfak.ni.ac.rs/Papers/IRQSim new.pdf · RISC instrukcija mora da bude isti što bitno pojednostavljuje mikrokod koji ih prepoznaje. Najzad, RISC procesori

61

5. Literatura

- Dr. Prof. Mile Stojčev - RISC, CISC i DSP Procesori - Jocić Ivan – Jednostavni 16-bitni procesor sa podrškom za obradu

interapta – seminarski rad

- Marko Ilić, Nebojša Pejčić, Aleksandar Stojadinović, Bojan

Janićijević – SimCPU – seminarski rad - Slađan Ljubenov, Aleksandar Dinić, Nikola Đorđević, Dejan

Stamenković – Troadresni 16-bitni procesor sa mikroprogramskim upravljanjem – seminarski rad

- Vesić Dejan, Mitov Vladan, Jakovljević Predrag, Božić Vladan,

Milenović Darko – AdressSim – seminarski rad