IRQSim Dvoadresna 16 bitna maina sa zahtevom za
IRQSim Dvoadresna 16 -bitna mašina sa zahtevom za prekid
Definicija računara • 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.
RISC procesori RISC – (reduced instruction set computer). Osnovna ideja RISC ( kompjuteri sa smanjenim setom instrukcija) arhitektura zasniva se na pojednostavljenju i reduciranju skupa instrukcija putem eliminisanja ne esencijalnih instukcija, tako da se ostale instukcije mogu izvršavati veoma brzo. U svakom taktu se izvršava jedna instukcija.
RISC procesori Kod RISC procesora imamo direktno upravljanje (ne postoji mikroprogram), fiksni format instrukcija, ograničeni skup instrukcija i ograničeni broj adresnih načina rada. Za RISC mašinu kažemo da je uspešna ako je u stanju da prihvata instrukcije onom brzinom kojom ih keš memorija predaje.
Prekidi Mehanizam prekida kod procesora omogućava efikasniji rad računara sa periferijama koje su u najvećem broju slučajeva mnogo sporije od procesora. Prekid omogućuje procesoru da izvršava druge instrukcije dok periferija ne zatraži sledeći podatak.
Zahtev za prekid Kada periferija postane spremna za prijem novih podataka iz procesora, ona signalizira to stanje procesoru slanjem zahteva za prekid.
Prekidna rutina Posle zahteva za prekid 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 nakon prekida Izvršavanje glavnog programa se produžava od onog mesta gde je bilo prekinuto, tj nakon prihvatanja prekida CPU preuzima sledeće akcije: • odlaže izvršenje tekućeg programa, • sačuva svoj status • prelazi na rutine za obradu prekida • ponovo se vraća na prekinuti program kako bi nastavio dalje izvršenje
Klase prekida Postoje 4 klase prekida koji se koriste kod mikroprocesora, a to su: 1. 2. 3. 4. Vektorski prekidi. Nemaskirajući prekidi Nevektorski prekidi Restartujući prekidi
Vektorski prekidi – kada nekoliko spoljnih uređaja šalje zahtev za prekid CPUu, neophodno je da se identifikuje specifični izvor prekida sa ciljem da se selektuje odgovarajuća rutina za obradu prekida.
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.
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.
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.
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 stavlja 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 (M 768).
Prioritet kod prekida Prioritet kod opsluživanja zahteva za prekid je sledeći: 1. restartujući prekidi 2. nemaskirajući prekidi 3. vektoski prekidi 4. nevektorski prekidi
Definicija IRQSim-a IRQSim je dvoadresna 16 -bitna mašina koja podržava tri načina adresiranja: • • • direktno neposredno registarsko.
Karakteristike IRQSim-a • 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.
Format mašinske instrukcije opkod modifikator operand X X Y Y A A A A d d d 15 12 11 gde su: d 15 ÷ d 12 d 11 ÷ d 8 ÷ d 0 d d 9 8 7 10 d 0 – četiri bita koja označavaju kôd instrukcije ( opkod ) – četiri bita koja se odnose na načine adesiranja ( modifikator M ) – 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 Ex. OR operacija AND 1101 Logička AND operacija ADD 1110 Aritmetička operacija sabiranja SUB 1111 Aritmetička operacija oduzimanja
modifikator 0000 Način adresiranja Dužina instrukcije Nema adresiranja Jedna reč 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 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 0001 0010 0011 1001 1010 1011
Klase instrukcija IRQSim-a Instrukcije možemo podeliti u sledeće grupe: • • • prenos-podataka aritmetičke logičke programsko-upravljačke ostale instrukcije
Instrukcije za prenos-podataka U instrukcije za prenos-podataka spadaju : • MOV • LD • ST Pomoću ovih instrukcija vrši se kopiranje informacija iz jedne lokacije u drugu. Lokacije mogu pripadati registrima procesora ili memoriji.
Aritmetičke instrukcije U aritmetičke instrukcije spadaju : • ADD • SUB • NEG • INC One obavljaju aritmetičke operacije nad numeričkim podacima.
Logičke instrukcije U logičke instrukcije spadaju : • OR • AND • NOT • XOR One uključuju Booleove i druge nenumeričke operacije.
Programsko-upravljačke instrukcije U programsko-upravljačke instrukcije spadaju: • • JMP JZ JNZ RET One menjaju sekvencu programskog izvršenja.
Ostale instrukcije U grupu ostalih instrukcija spada NOP To je instrukcija operacija bez efekta.
Skup instrukcija • NOP Opkod – 0000 • ADD D (eng. add - saberi) Opkod – 1110 • INC D (eng. inerement - inkrementiraj, uvećaj za 1) - D+1 D Opkod – 1000 • SUB D (eng. subtract - oduzmi) Opkod – 1111 • NEG D (eng. negate - negiraj, promeni znak) Opkod – 1010 • AND D (eng. and - i) Opkod – 1101 • OR D, (eng. or - ili). Opkod – 1011
• NOT D (eng. not - ne) Opkod – 1001 • ST X (eng. store- smesti) Opkod – 0110 • LD Y (eng. load – učitaj) Opkôd: 0111 • JMP D (eng. jump - skok) Opkôd: 1000 • JZ (jump if zero) Opkod – 0010 • JNZ (jump if not zero) Opkod – 0010
ADD D (eng. add - saberi) Opkod – 1110 Instrukcija Način adresiranja Tok ADD M 5 Direktno jednoadresno AC←AC+MEM[5] ADD #22 Neposredno AC←AC+22 ADD R 6 Registarsko AC←AC+R 6 ADD M 5, M 10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] + MEM[10] ADD M 5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] + 22 ADD M 5, R 2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] + R 2 ADD R 2, M 5 Dvoadresno registarsko, direktno R 2 ← R 2 + MEM[5] ADD R 2, #22 Dvoadresno registarsko, neposredno R 2 ← R 2 + 22 ADD R 2, R 4 Dvoadresno registarsko, registarsko R 2 ← R 2 + R 4
SUB D (eng. subtract - oduzmi) Opkod – 1111 Instrukcija Način adresiranja Tok SUB M 5 Direktno jednoadresno AC←AC - MEM[5] SUB #22 Neposredno AC←AC - 22 SUB R 6 Registarsko AC←AC - R 6 SUB M 5, M 10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] - MEM[10] SUB M 5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] - 22 SUB M 5, R 2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] - R 2 SUB R 2, M 5 Dvoadresno registarsko, direktno R 2 ← R 2 - MEM[5] SUB R 2, #22 Dvoadresno registarsko, neposredno R 2 ← R 2 - 22 SUB R 2, R 4 Dvoadresno registarsko, registarsko R 2 ← R 2 - R 4
NEG D (eng. negate - negiraj, promeni znak) Opkod – 1010 Instrukcija Način adresiranja Tok NEG jednoadresno AC← - AC NEG M 22 Direktno MEM[22] ← -MEM[22] NEG R 3 Registarsko R 3 ← -R 3
AND D (eng. and - i) Opkod – 1101 Instrukcija Način adresiranja Tok AND M 5 Direktno jednoadresno AC←AC and MEM[5] AND #22 Neposredno AC←AC and 22 AND R 6 Registarsko AC←AC and R 6 AND M 5, M 10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] and MEM[10] AND M 5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] and 22 AND M 5, R 2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] and R 2 AND R 2, M 5 Dvoadresno registarsko, direktno R 2 ← R 2 and MEM[5] AND R 2, #22 Dvoadresno registarsko, neposredno R 2 ← R 2 and 22 AND R 2, R 4 Dvoadresno registarsko, registarsko R 2 ← R 2 and R 4
OR D, (eng. or - ili). Opkod – 1011 Instrukcija Način adresiranja Tok OR M 5 Direktno jednoadresno AC←AC or. MEM[5] OR #22 Neposredno AC←AC or 22 OR R 6 Registarsko AC←AC or R 6 OR M 5, M 10 Dvoadresno direktno, direktno MEM[5] ← MEM[5] or MEM[10] OR M 5, #22 Dvoadresno direktno, neposredno MEM[5] ←MEM[5] or 22 OR M 5, R 2 Dvoadresno direktno, registarsko MEM[5] ←MEM[5] or R 2 OR R 2, M 5 Dvoadresno registarsko, direktno R 2 ← R 2 or MEM[5] OR R 2, #22 Dvoadresno registarsko, neposredno R 2 ← R 2 or 22 OR R 2, R 4 Dvoadresno registarsko, registarsko R 2 ← R 2 oi R 4
NOT D (eng. not - ne) Opkod – 1001 Instrukcija Način adresiranja Tok NOT jednoadresno AC←not AC NOT M 22 Direktno MEM[22] ←not MEM[22] NOT R 3 Registarsko R 3 ←not R 3
ST X (eng. store- smesti) Opkod – 0110 Operacija – (akumulator)- Memorija Instrukcija Način adres. Tok ST M 1 Direktno ST R 0 Registarsko AC→R 0 AC→MEM [1]
Opkôd: 0111 LD Y (eng. load – učitaj). Instrukcija Način adres. Tok LD 0 Ah Direktno MEM[10]→AC LD #12 Neposredno 12→AC LD R 4 Registarsko R 4→AC
Adresni načini rada 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 Dužina instrukcije je 2 reči. Format mašinske instrukcije dat jeu sledećoj tabeli: 1. reč opkod X X modifikator Ne koristi se X X 0 1 0 0 0 0 0 A A A A 2. reč Operand A A
Direktno dvo-operandsko adresiranje Dužina instrukcije je 3 reči. Format mašinske instrukcije dat je u sledećoj tabeli: 1. reč modifikator Ne koristi se opkod X X 0 1 0 0 0 0 A A A A A A A 2. reč Operand 1 A A A 3. reč Operand 2 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č modifikator Ne koristi se opkod X X 0 1 1 0 0 0 0 0 A A A A N N N N 2. reč Operand 1 A A A A A 3. reč Operand 2 N N N N N
Dvo-operandsko direktno registarsko adresiranje Dužina instrukcije je 2 reči. Format mašinske instrukcije dat je u sledećoj tabeli: 1 reč modifikator ne koristi se Operand 2 opkod X X 0 1 1 1 0 0 0 R R R A A A A 2 reč Operand 1 A A A A A
Neposredno jedno-operandsko adresiranje Dužina instrukcije je 2 reči. Format mašinske instrukcije dat je u sledećoj tabeli: 1 reč modifikator Ne koristi se opkod X X 1 0 0 0 N N N N 2 reč Operand N N N N N
Regitarsko jedno-operandsko adresiranje Dužina instrukcije je 1 reč. Format mašinske instrukcije dat je u sledećoj tabeli: 1 reč modifikator Ne kroristi se Operand 1 opkod X X 1 1 0 0 0 0 R R R
Dvo-operandsko registarsko-direktno adresiranje Dužina instrukcije je 2 reči. Format mašinske instrukcije dat je u sledećoj tabeli: 1. reč modifikator Ne kroristi se Operand 1 opkod X X 1 1 0 0 0 0 R R R A A A A 2. reč Operand 2 A A A A A
Dvo-operandno registarsko adresiranje 1 reč modifikator Operand 1 Operand 2 opkod X X 1 1 0 0 0 R R R
Instalacija i pokretanje programa • Izabrati programsku ikonu IRQSim for Windows lociranu na Desktop-u. • Aktivirati IRQSim – aktiviranje se izvodi dvostrukim klikom levim tasterom miša na odabranu ikonu IRQSim • Startovanjem IRQSim -a na ekranu se pojavljuje aplikacioni prozor pod nazivom IRQSim – untitled. asm (vidi Sliku 1)
Instalacija i pokretanje programa • U oblasti aktivne površine Editor-a pozicionirati kursor u krajnje gornjoj levoj poziciji. jer je vrednost linijskog brojača je tada 0. • 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.
Izgled Text Editor-a Menu-bar Text Editora sadrži sledeće operacije: • File • Edit • Assemble • View • Help
Menu-bar Text Editora - operacija File – selekcijom ove operacije otvara se padajući meni koji sadrži sledeće opcije: • New • Open • Save As. . . • Exit Slika 2 File meni
Operacija File i opcije New, Open i Save 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 Slika 2 File meni
Operacija File i opcije Save as. . . i Exit 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 2 File meni
Menu-bar Text Editora - operacija Edit • Edit – selekcijom ove operacije otvara se padajući meni koji sadrži sledeće opcije: • Cut • Copy • Paste • Delete • Select All Slika 3. Edit meni
Operacija Edit i opcije Cut i Copy 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. Slika 3. Edit meni
Operacija Edit i opcije Paste, Delete i Select All 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 3. Edit meni
Primer lsc ; komentar add 0 ah ; komentar u liniji koda add 12 sub ah and r 0 add #23 - nepravilano napisan tekst (crveno) - komentar počinje sa znakom ; (plavo) - pravilno napisana komanda - pravilno napisan numerički operand (zeleno) - pravilno napisan operand registar (teget) - pravilno napisan specijalni zank (braon)
Asembliranje Izborom opcije Assemble iz glavnog menija tekst editora otvara se prozor Assembler prikazan na Slici 4. U ovom prozoru se može videti izveštaj o toku procesa asembliranja kao i izveštaj o eventualnim greškama. Slika 4 – Prozor Assembler
Praćenje toka izvršavanja programa Slika 5 – Processor Graph prozor
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.
Menu bar Processor Graph-a Na vrhu prozora nalazi se Menu bar u kome se nalaze opcije za konrolu rada procesora i to su sledeće opcije: • Start CPU • STOP • Reset • STEP_FWD
Register prozor Pristupa se iz menija prozora Processor Graph izborom opcije View| Register. U njemu se prikazuju trenutne vrednosti registara procesora u binarnom brojnom sitemu. Slika 6 – Register prozor
Register Edit prozor • Opcija Register Edit otvara prozor u kome se mogu postaviti vrednosti registara i unose se u decimalnom brojnom sitemu. Ovom prozoru se može pristupiti i iz menija prozora Processor Graph izborom opcije View| Register Edit prozor
Memory prozor • 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. Slika 7 – Memory proyor
Memory Editor prozor 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 prozor
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. Slika 8 - Trace prozor
Faze izvršavanja instrukcije nivo programa nivo instrukcija nivo faze PROGRAM INSTRUKCIJA 1 FETCH EX INSTRUKCIJA 2 FETCH EX nivo mikrooperacija Slika 2. Nivoi izvršavanja programa INSTRUKCIJA FETCH N EX
Faze izvršavanja instrukcije U konkretnom slučaju fazu FETCH koraka: čine sledeća tri FETCH 1 : MAR ← PC FETCH 2 : IR 1 ← MDR ← M , PC ← PC + 1 FETCH 3 : Decode ir 1 gde su FETCH 1, FETCH 2 i FETCH 3 koraci, a aktivnosti tipa MAR ← PC , PC ← PC + 1, itd. predstavljaju mikrooperacije.
Algoritam FETCH faze
Laboratorijska vežba IRQSim • Za pokretanje programa IRQSim za Windows potrebno je preduzeti aktivnosti koje su opisane u koraku 2 ove laboratorijske vežbe. • Postupak pokretanja programa IRQSim je sledeći:
Laboratorijska vežba IRQSim • Izabrati programsku ikonu IRQSim for Windows lociranu na Desktop-u. • Aktivirati IRQSim – aktiviranje se izvodi dvostrukim klikom levim tasterom miša na odabranu ikonu IRQSim
Laboratorijska vežba IRQSim • Startovanjem IRQSim -a na ekranu se pojavljuje aplikacioni prozor pod nazivom IRQSim – untiled. asm
Laboratorijska vežba IRQSim • 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.
Laboratorijska vežba IRQSim • 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.
Slika 1 – Prozor Text editora
Register prozor i Register Edit prozor Slika 6 – Registers i Register Edit prozor
Memory i Memory Editor prozor Slika 7 – Memory i Memory Edit prozor
Trace Prozor Slika 8 - Trace prozor
KRAJ
Nenad Ivković Bratislav Stojiljković Dragan Manojlović Boban Zdravković
- Slides: 81