79
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 1

IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET

KATEDRA ZA ELEKTRONIKU

MIKROPROCESORSKI SISTEMI

IRQSim

Mentor:Prof. dr Mile Stojčev

Na projektu radili:

Nenad Ivković 9925Dragan Manojlović 9970Bratislav Stojiljković 9815Boban Zdravković 11063

JUN 2007

1

Page 2: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Sadržaj:

1. Uvod 31.1. RISC procesori 31.2. Prekidi 41.3. Prioritet kod prekida 6

2. Format instrukcije i adresiranje 72.1. Format mašinske instrukcije 72.2. Klase instrukcija IRQSim-a 82.3. Skup instrukcija 92.4. Adresni načini rada 14

3. Instalacija i pokretanje programa 183.1. Text Editor 183.2. Asembliranje 223.3. Praćenje toka izvršavanja programa 23

3.3.1. Processor Graph prozor 243.3.2 Register prozor i Register Edit prozor 273.3.3. Memory i Memory Editor prozor 283.3.4. Trace Prozor 29

3.4. Faze izvršavanja instrukcije 293.4.1. Instrukcije kod kojih faza izvršenja EX traje jedan taktni interval 313.4.2. Instrukcije kod kojih faza izvršenja EX traje dva taktna intervala 323.4.3. Instrukcije kod kojih faza izvršenja EX traje tri taktna interval 343.4.4. Instrukcije kod kojih faza izvršenja EX traje četiri taktna intervala 373.4.5. Instrukcije kod kojih faza izvršenja EX traje pet taktna intervala 37

4. Laboratorijska vežba IRQSim 394.1. Pokazni primer 394.2. Zadatak za studente 504.3. Zaključak 60

5. Literatura 61

2

Page 3: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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)

3

Page 4: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

su Digitalovi miniračunari iz serije VAX - postoji instrukcija njihovog procesora 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.4

Page 5: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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)

89()

prekid

5

Page 6: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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

6

Page 7: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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 operandX X X X Y Y Y Y A A A A A A A Ad15 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 OperationJMP 0001 Bezuslovno grananje (skok)Jx 0010 jz, jnz

EINT,DINT 0011

EINT- naredba za dozvolu prekidamodifikator=0DINT- naredba za zabranu prekidamodifikator=1

RET 0100 Naredba za povratak iz prekidaLD 0101 Kopiranje iz memorije u akumulatorST 0110 Kopiranje iz akumulatora u memoriju

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

XOR 1100 Logička ExOR operacijaAND 1101 Logička AND operacijaADD 1110 Aritmetička operacija sabiranjaSUB 1111 Aritmetička operacija oduzimanja

7

Page 8: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Tabela 1. Instrukcije procesora sa definisanim opkôd poljem

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 instrukcije0000 Nema adresiranja Jedna reč0001001000110100 Jednoadresno: direktno Dve reči0101 Dvoadresno: direktno, direktno Tri reči0110 Dvoadresno: direktno, neposredno Tri reči0111 Dvoadresno: direktno,registarsko Dve reči1000 jednoadresno:neposredno Dve reči1001101010111100 Jednoadresno: registarsko Jedna reč1101 Dvoadresno:registarsko, direktno Jedna reč1110 Dvoadresno:registarsko,neposredno Dve reči1111 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 .

8

Page 9: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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 TokADD M5 Direktno jednoadresno AC←AC+MEM[5]ADD #22 Neposredno AC←AC+22ADD R6 Registarsko AC←AC+R6ADD M5, M10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] + MEM[10]ADD M5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] + 22ADD M5, R2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] + R2ADD R2, M5 Dvoadresno registarsko, direktno R2 ← R2 + MEM[5]ADD R2, #22 Dvoadresno registarsko, neposredno R2 ← R2 + 22ADD 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 prenosSIGN – 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.

9

Page 10: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Instrukcije oduzimanja

SUB D (eng. subtract - oduzmi) 

Opkod – 1111

Instrukcija Način adresiranja TokSUB M5 Direktno jednoadresno AC←AC - MEM[5]SUB #22 Neposredno AC←AC - 22SUB R6 Registarsko AC←AC - R6SUB M5, M10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] - MEM[10]SUB M5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] - 22SUB M5, R2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] - R2SUB R2, M5 Dvoadresno registarsko, direktno R2 ← R2 - MEM[5]SUB R2, #22 Dvoadresno registarsko, neposredno R2 ← R2 - 22SUB 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 = 7NEG 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

10

Page 11: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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 TokAND M5 Direktno jednoadresno AC←AC and MEM[5]AND #22 Neposredno AC←AC and 22AND R6 Registarsko AC←AC and R6AND M5, M10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] and MEM[10]AND M5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] and 22AND M5, R2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] and R2AND R2, M5 Dvoadresno registarsko, direktno R2 ← R2 and MEM[5]AND R2, #22 Dvoadresno registarsko, neposredno R2 ← R2 and 22AND 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 TokOR M5 Direktno jednoadresno AC←AC orMEM[5]OR #22 Neposredno AC←AC or 22OR R6 Registarsko AC←AC or R6OR M5, M10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] or MEM[10]OR M5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] or 22OR M5, R2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] or R2OR R2, M5 Dvoadresno registarsko, direktno R2 ← R2 or MEM[5]OR R2, #22 Dvoadresno registarsko, neposredno R2 ← R2 or 22OR R2, R4 Dvoadresno registarsko, registarsko R2 ← R2 oi R4

11

Page 12: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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 TokNOT 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 – 0110Operacija – (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. TokST M1 Direktno AC→MEM[1]ST R0 Registarsko AC→R0

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

12

Page 13: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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 – 0010Modifikator-000 if ZERO = {1} then (operand) → PC else continueInstrukcijom 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 – 0010Modifikator - 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.

13

Page 14: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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-operandsko2. Direktno – dvo-operandsko3. Direktno - neposredno4. Direktno - registarsko5. Neposredno – jedno-operandsko6. Registarsko – jedno-operandsko7. Registarsko - registarsko8. Registarsko – direktno9. 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

14

Page 15: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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

15

Page 16: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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 N16

Page 17: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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

17

Page 18: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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

18

2

13

Page 19: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

2. Text editor3. Pokazivač linije u kojoj se nalazi kursor

Slika 2. – Prozor text editora

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

19

Page 20: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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

20

Page 21: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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.

21

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 (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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 AHMemory[1]=1110000000001100: ADD 12Memory[2]=1111000000001010: SUB 0AHMemory[3]=1101010000000000: AND R0Memory[4]=1110001000000000: ADD #23Memory[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:

22

Page 23: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

kod greške Objašnenje

0 nepostojeća naredba2 neprhvatljiv način adresiranje za tu naredbu4 postoji nešto iza operanda u liniji5 naredba ne treba da ima operand6 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.

23

Page 24: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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.

24

Page 25: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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:

25

Page 26: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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

26

Page 27: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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.

27

Page 28: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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.

28

Page 29: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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

29

Page 30: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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.

Slika 10. Nivoi izvršavanja programa

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

FETCH1 : MAR ← PCFETCH2 : IR1 ← MDR ← M , PC ← PC + 1FETCH3 : 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

nivoprograma

nivofaze FETCH EX FETCH EX FETCH EX

nivomikrooperacija

30

Page 31: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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 operationJMP PC ← MARJZ provera flag zero i izvršava NOP1 ili JMP1JNZ provera flag zero i izvršava NOP1 ili JMP1RET vraća iz steka poziciju u PCLD_registarsko LD1 AC ← RxLD_neposredno LD1 AC ← IR2ST_registarsko ST1 AC ← RxMOV_registarsko_neposredno MOV1 Rx ←IR2INC AC ← AC + 1

31

Page 32: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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 ← ACR2: Ac ← A OR B

XOR_registarsko_jednoadresno R1: B ← Rx , A ← ACR2: Ac ← A XOR B

AND_registarsko_jednoadresno R1: B ← Rx , A ← ACR2: Ac ← A AND B

ADD_registarsko_jednoadresno R1: B ← Rx , A ← ACR2: Ac ← A ADD B

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

32

Page 33: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

OR_neposredno_jednoadresnoN1: B ← IR2 , A ← ACN2: AC ← A OR B

XOR_neposredno_jednoadresnoN1: B ← IR2 , A ← ACN2: AC ← A XOR B

AND_neposredno_jednoadresnoN1: B ← IR2 , A ← ACN2: AC ← A AND B

ADD_neposredno_jednoadresnoN1: B ← IR2 , A ← ACN2: AC ← A ADD B

SUB_neposredno_jednoadresnoN1: B ← IR2 , A ← ACN2: AC ← A SUB B

NOTNOT1: A ← ACNOT2: AC ← NOT A

NOT_registarskoNOT1: A ← RxNOT2: AC ← NOT A

NEGNEG1: A ← ACNEG2: AC ← NEG A

NEG_registarskoNEG1: A ← RxNEG2: AC ← NEG A

33

Page 34: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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 ← ACD13: AC ← A OR B

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

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

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

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

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

XOR_direktno_neposredno DN1: MAR ← IR2 DN2: A ← MDR ← M[MAR], B ← IR3DN3: M[MAR] ← A XOR B

AND_direktno_neposredno DN1: MAR ← IR2 DN2: A ← MDR ← M[MAR], B ← IR3DN3: M[MAR] ← A AND B

34

Page 35: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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

SUB_direktno_neposredno DN1: MAR ← IR2 DN2: A ← MDR ← M[MAR], B ← IR3DN3: M[MAR] ← A SUB B

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

XOR_direktno_registarsko DR1: MAR ← IR2 DR2: A ← MDR ← M[MAR], B ← RXDR3: M[MAR] ← A XOR B

AND_direktno_registarsko DR1: MAR ← IR2 DR2: A ← MDR ← M[MAR], B ← RXDR3: M[MAR] ← A AND B

ADD_direktno_registarsko DR1: MAR ← IR2 DR2: A ← MDR ← M[MAR], B ← RXDR3: M[MAR] ← A ADD B

SUB_direktno_registarsko DR1: MAR ← IR2 DR2: A ← MDR ← M[MAR], B ← RXDR3: M[MAR] ← A SUB B

OR_registarsko_registarsko RR1: A ← RX1 RR2: B ← RX2RR3: AC ← A OR B

XOR_registarsko_registarsko RR1: A ← RX1 RR2: B ← RX2RR3: AC ← A XOR B

AND_registarsko_registarsko RR1: A ← RX1 RR2: B ← RX2RR3: AC ← A AND B

35

Page 36: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

ADD_registarsko_registarsko RR1: A ← RX1 RR2: B ← RX2RR3: AC ← A ADD B

SUB_registarsko_registarsko RR1: A ← RX1 RR2: B ← RX2RR3: AC ← A SUB B

OR_registarsko_direktnoRD1: MAR ← IR2 RD2: B ← MDR ← M[MAR], A ← RXRD3: RX ← A OR B

XOR_registarsko_direktnoRD1: MAR ← IR2 RD2: B ← MDR ← M[MAR], A ← RXRD3: RX ← A XOR B

AND_registarsko_direktnoRD1: MAR ← IR2 RD2: B ← MDR ← M[MAR], A ← RXRD3: RX ← A AND B

ADD_registarsko_direktnoRD1: MAR ← IR2 RD2: B ← MDR ← M[MAR], A ← RXRD3: RX ← A ADD B

SUB_registarsko_direktnoRD1: MAR ← IR2 RD2: B ← MDR ← M[MAR], A ← RXRD3: RX ← A SUB B

NOT_direktnoNOT1: MAR ← IR2 NOT2: A ← M[MAR]NOT3: M[MAR] ← NOT A

NEG_direktnoNEG1: MAR ← IR2 NEG2: A ← M[MAR]NEG3: M[MAR] ← NEG A

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 .

36

Page 37: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

MOV_direktno_direktnoMOV1: MAR ← IR3 MOV2: MDR ← M[MAR]MOV3: MAR ← IR2MOV4: 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 ← IR2D24: A ← MDR ← M[MAR]D25: M[MAR] ← A OR B

XOR_direktno_direktno D21: MAR ← IR3 D22: B ← MDR ← M[MAR]D23: MAR ← IR2D24: A ← MDR ← M[MAR]D25: M[MAR] ← A XOR B

AND_direktno_direktno D21: MAR ← IR3 D22: B ← MDR ← M[MAR]D23: MAR ← IR2D24: A ← MDR ← M[MAR]D25: M[MAR] ← A AND B

ADD_direktno_direktno D21: MAR ← IR3 D22: B ← MDR ← M[MAR]D23: MAR ← IR2D24: A ← MDR ← M[MAR]D25: M[MAR] ← A ADD B

SUB_direktno_direktno D21: MAR ← IR3 D22: B ← MDR ← M[MAR]

37

Page 38: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

D23: MAR ← IR2D24: A ← MDR ← M[MAR]D25: M[MAR] ← A SUB B

4. Laboratorijska vežba IRQSim

4.1. Pokazni primer

38

Page 39: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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

Primer:add r0, m20eintadd m18, m20incnopadd r0, m20dintjmp 0

U text editor se unosi sledeća sekvenca :

Prelazak na sledeću liniju test sekvence se vrši pritiskom na taster Enter.Klikom levog tastera miša na polje Assemble (1) vrši se asembliranje unete

sekvence.

39

1

Page 40: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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]=0000000000010100MEM[2]=0011000000000000 | EINT MEM[3]=1110010100000000 | ADD M18,M20 MEM[4]=0000000000010010MEM[5]=0000000000010100MEM[6]=1000000000000000 | INC MEM[7]=0000000000000000 | NOP MEM[8]=1110110100000000 | ADD R0,M20 MEM[9]=0000000000010100MEM[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 ( 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).

40

Page 41: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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

41

Page 42: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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.

42

Page 43: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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= 0000000000000000IR3= 0000000000000000 AC= 0000000000000000 F2-2: PC -> MARPC= 0000000000000001 IR1= 1110110100000000 IR2= 0000000000000000IR3= 0000000000000000 AC= 0000000000000000

43

Page 44: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

F2-3: M[MAR] -> MDR -> IR2, INC(PC)PC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000

Decode IRPC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000

IR2 -> MARPC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000

Rx -> APC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000

M[MAR] -> MDR -> B PC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000

A + B -> RxPC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000

druga isntrukcija: EINT

PC= 0000000000000010 IR1= 1110110100000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000

F2: M[MAR] -> MDR -> IR, INC(PC)PC= 0000000000000011 IR1= 0011000000000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000

Decode IRPC= 0000000000000011 IR1= 0011000000000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000

EINT: enable interruptPC= 0000000000000011 IR1= 0011000000000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000 treća instrukcija: add m18, m20

PC= 0000000000000011 IR1= 0011000000000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000

F2: M[MAR] -> MDR -> IR, INC(PC)

44

Page 45: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

PC= 0000000000000100 IR1= 1110010100000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000 F2-2: PC -> MARPC= 0000000000000100 IR1= 1110010100000000 IR2= 0000000000010100IR3= 0000000000000000 AC= 0000000000000000

F2-3: M[MAR] -> MDR -> IR2, INC(PC)PC= 0000000000000101 IR1= 1110010100000000 IR2= 0000000000010010IR3= 0000000000000000 AC= 0000000000000000 F2-4: PC -> MARPC= 0000000000000101 IR1= 1110010100000000 IR2= 0000000000010010IR3= 0000000000000000 AC= 0000000000000000

F2-5: M[MAR] -> MDR -> IR3, INC(PC)PC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000000

Decode IRPC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000000

IR3 -> MARPC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000000

M[MAR] -> MDR -> B PC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000000

IR2 -> MARPC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000000

M[MAR] -> MDR -> APC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000000

A + B -> M[MAR]PC= 0000000000000110 IR1= 1110010100000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000000

45

Page 46: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Tokom izvršenja treće instrukcije zadali smo zahtev za prekid.

Sledi izvršavanje zadate prekidne rutine.

PUSH PCPC= 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= 0000000000010010IR3= 0000000000010100 AC= 0000000000000000

Decode IRPC= 0000001100000001 IR1= 0000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000

NOPPC= 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= 0000000000000000Decode IR PC= 0000001100000010 IR1= 0100000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000000RET

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= 0000000000010010IR3= 0000000000010100 AC= 0000000000000000

46

Page 47: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

F2: M[MAR] -> MDR -> IR, INC(PC)PC= 0000000000000111 IR1= 1000000000000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000000

Decode IRPC= 0000000000000111 IR1= 1000000000000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000000

INC ACPC= 0000000000000111 IR1= 1000000000000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000001 peta instrukcija: nop

PC= 0000000000000111 IR1= 1000000000000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000001

F2: M[MAR] -> MDR -> IR, INC(PC)PC= 0000000000001000 IR1= 0000000000000000 IR2= 0000000000010010 IR3= 0000000000010100 AC= 0000000000000001

Decode IRPC= 0000000000001000 IR1= 0000000000000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000001

NOPPC= 0000000000001000 IR1= 0000000000000000 IR2= 0000000000010010IR3= 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 -> MARPC= 0000000000001001 IR1= 1110110100000000 IR2= 0000000000010010IR3= 0000000000010100 AC= 0000000000000001

F2-3: M[MAR] -> MDR -> IR2, INC(PC)PC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001

47

Page 48: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Decode IRPC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100IR3= 0000000000010100 AC= 0000000000000001

IR2 -> MARPC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001

Rx -> APC= 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 -> RxPC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001 sedma instrukcija: dint

PC= 0000000000001010 IR1= 1110110100000000 IR2= 0000000000010100IR3= 0000000000010100 AC= 0000000000000001

F2: M[MAR] -> MDR -> IR, INC(PC)PC= 0000000000001011 IR1= 0011000100000000 IR2= 0000000000010100 IR3= 0000000000010100 AC= 0000000000000001

Decode IRPC= 0000000000001011 IR1= 0011000100000000 IR2= 0000000000010100IR3= 0000000000010100 AC= 0000000000000001

DINT: disable interrupt

PC= 0000000000001011 IR1= 0011000100000000 IR2= 0000000000010100IR3= 0000000000010100 AC= 0000000000000001 osma instrukcija: jmp 0

PC= 0000000000001011 IR1= 0011000100000000 IR2= 0000000000010100IR3= 0000000000010100 AC= 0000000000000001

F2: M[MAR] -> MDR -> IR, INC(PC)PC= 0000000000001100 IR1= 0001010000000000 IR2= 0000000000010100IR3= 0000000000010100 AC= 0000000000000001

48

Page 49: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

F2-2: PC -> MARPC= 0000000000001100 IR1= 0001010000000000 IR2= 0000000000010100IR3= 0000000000010100 AC= 0000000000000001

F2-3: M[MAR] -> MDR -> IR2, INC(PC)PC= 0000000000001101 IR1= 0001010000000000 IR2= 0000000000000000IR3= 0000000000010100 AC= 0000000000000001

Decode IRPC= 0000000000001101 IR1= 0001010000000000 IR2= 0000000000000000IR3= 0000000000010100 AC= 0000000000000001

JMP: IR2 -> PCPC= 0000000000001101 IR1= 0001010000000000 IR2= 0000000000000000IR3= 0000000000010100 AC= 0000000000000001

PC=0000000000000000 IR1= 0000000000000000IR2=0000000000010111 IR3= 0000000000000000AC=0000000000000000 R2 = 0000000000011110M[23]=0000000000001100 M[19] = 0000000000001011

49

Page 50: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

4.2. Zadatak za studente

Cilj vežbe:Opsluživanje prekidnog programa kod simulatora IRQSim uz praćenje svih aktivnosti koje se odnose na glavni i prekidni program a odvijaju se od strane procesora.Zadatak vežbe:Na osnovu definisanog skupa instrukcija, načina adresiranja i strukture procesora kreirati programske sekvence tipa glavni program i prekidni program i pratiti njihovo izvršenje pomoću simulatora IRQSim. Radi efikasnijeg praćenja izvršenja kreiranih programskih sekvenci preporučljivo je da glavni program ne bude duži od 8 instrukcija, a prekidni program od 5 instrukcija. Glavni program se aktivira komandom Start čime počinje izvršenje asembliranog programa. Tokom izvršenja glavnog programa, na proizvoljnoj lokaciji, pritiskom na taster interrupt request zadaje se zahtev za iniciranje izvršenja prekidnoog programa. Završetkom tekuće instrukcije glavnog programa prelazi se na izvršenje prekidnog programa. Stanje programskog brojača i statusnog registra, po automatizmu se pamti u magacinu sa ciljem da bi se nakon završetka prekidnog programa ponovo vratili na izvršenje glavnog programa, sa onog mesta gde je i došlo do prekida.

Rezultate izvršenja, kao i korake koji prate to izvršenje, student može videti u Trace prozoru u meniju View.

Da bi obavio ovaj zadatak student treba da kreira sledeće 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 IRQSim:

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.

50

Page 51: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Nakon svakog unosa instrukcije vrednost linijskog brojača inkrementira se za 1.

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.

51

Page 52: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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.

52

Page 53: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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.

53

Page 54: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Slika 32.Unošenje prekidnog programa

Napomena: U cilju efikasnijeg praćenja izvršenja prekidnog programa uneti do pet linija prekidnog programa. Poslednju liniju prekidnog programa završiti naredbom RET. U slučaju pojave greške ponoviti proceduru unošenja i asembliranja koda koja važi za glavni program.

Da bi se uočio pravilan rad programa i proverila ispravnost treba pratiti izvršenje kreirane sekvence glavnog programa tako što će se pre pokretanja simulacije definisati vrednosti stanja registara i memorijskih lokacija koje se koriste od strane glavnog i prekidnog programa. Vrednosti stanja registra se postavljaju klikom na Register edit , Slika 33. (uneti broj a zatim kliknuti na ). Vrednosti memorijskih lokacija se definišu levim klikom na Memory edit,

54

Page 55: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Slika 34. (npr. u memorijskoj lokaciji 18 unosi se vrednost 15, u memorijskoj lokaciji 15 vrednost 20, a zatim, da bi se vrednosti prihvatile, klikne se na ).

U oba editora unose se isključivo decimalne vrednosti.

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

55

Page 56: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Slika 35. Vrednosti registra i memorije

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

Slika 36. Početak simulacije

56

Page 57: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Pratiti faze izvršenja instrukcija (manifestacije se vide na slici 36.). Nakon izvršenja proizvoljne instrukcije glavnog programa, zadati zahtev za prekid.

- Prekid se zadaje klikom levog tastera miša na polje Interrupt request slika 37.

Slika 37. Zadavanje prekida

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

57

Page 58: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Nakon završetka rada glavnog programa, levim klikom na opciju Trace u menu-ju View, može se videti ceo tok izvršenja glavnog i prekidnog programa, kao što je prikazano na slici 38.

Slika 38. Opcija Trace

U izveštaju o urađenoj laboratorijskoj vežbi priložiti:a) kod glavnog programa,b) kod prekidnog programa,c) ukazati na mesto gde je generisan zahtev za prekid (u toku koje instrukcije),d) odštampan izveštaj koji se generiše u Trace prozoru.

58

Page 59: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

Slika 39. Trace prozor

Izveštaj o radu:

59

Page 60: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

4.3. Zaključak

Naš zadatak je bio da kreiramo simulacioni program, IRQSim, kojim se simulira rad dvoadresne 16-bitne mašine. Ova mašina 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.Za opis simulatora, IRQSim, koristili smo programski jezik Delphi. Uz simulator priložili smo i prateću tehničku dokumentaciju radi lakšeg razumevanja procesa simulacije.Pripremili smo i laboratorijsku vežbu sa primerom na osnovu koga studenti mogu samostalno odraditi svoju 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ć

60

Page 61: IRQSim (Interrupt Request Sim)es.elfak.ni.ac.rs/Files/IRQSim.doc · Web viewSlika 22. Editor vrednosti registra Slika 23. Editor vredonsti memoriske lokacije Slika 24. Vrednosti registra

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

61