naČini adresiranja - tf.uns.ac.rsomorr/radovan_omorjan_003_pri/predavanja/skripta... · kod tog...

18
69 NAČINI ADRESIRANJA UVOD Prilikom izvođenja programa upravljačka jedinica mora znati gde se nalaze instrukcije i operandi nad kojima će se izvoditi operacije. Načini na koje se pribavljaju instrukcije i određeni operandi za vreme izvođenja instrukcijskog ciklusa nazivaju se načini adresiranja. Instrukcijska reč se sastoji od tri dela (Sl.42): -polja operacijskog koda, -polja načina adresiranja, -adresnog polja. Dužina instrukcijske reči zavisi od računara i operacije koju treba izvesti. Osmobitna reč mikroprocesora, međutim, omogućava samo 2 8 =256 kombinacija za operacijski kod i adresu. To je, očito, premalo da bi se mogao dosegnuti čitav adresni prostor (npr. 64KB memorije). Zbog toga se u mikroprocesorima upotrebljavaju instrukcijske reči sastavljene od dva ili tri bajta. U većini slučajeva prvi bajt se upotrebljava za predstavljanje operacijskog koda i koda načina adresiranja, dok preostali bajt (ili preostala dva bajta) služi kao adresa ili kao osnova za određivanje stvarne adrese operanda. Operacijski kod Način adresiranja Polje adrese n-1 0 Sl.27 - Organizacija n-bitne instrukcijske reči Više načina adresiranja prisutno u mikroprocesorskoj arhitekturi omogućava efikasnije rukovanje različitim strukturama podataka, a time i efikasnije izvođenje programa. NAČINI ADRESIRANJA ZA MIKROPROCESOR M6800 Za ilustraciju različitih načina adresiranja upotrebićemo programski model mikroračunara, uz pridodan instrukcijski registar. Programski model mikroprocesora čini skup registara koji su “vidljivi” i dostupni programeru, memorija podataka, te programska memorija. Sl.28 prikazuje programski model za mikroračunar M6800. Programabilni registri su: akumulatori A i B, 6-bitni registar uslova (CCR), 16- bitno programsko brojilo (PB), 16-bitni pokazivač steka (SP) i 16-bitni indeksni registar (IX). Na slici je registar podataka (DC) izostavljen. Programeru moraju biti na raspolaganju načini adresiranja internih registara mikroprocesora i adresiranja svih memorijskih lokacija. Sl.28 - Programski model za mikroračunar na bazi mikroprocesora M6800

Upload: buidan

Post on 20-Feb-2018

227 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

69

NAČINI ADRESIRANJA UVOD Prilikom izvođenja programa upravljačka jedinica mora znati gde se nalaze instrukcije i operandi nad kojima će se izvoditi operacije. Načini na koje se pribavljaju instrukcije i određeni operandi za vreme izvođenja instrukcijskog ciklusa nazivaju se načini adresiranja. Instrukcijska reč se sastoji od tri dela (Sl.42): -polja operacijskog koda, -polja načina adresiranja, -adresnog polja. Dužina instrukcijske reči zavisi od računara i operacije koju treba izvesti. Osmobitna reč mikroprocesora, međutim, omogućava samo 28=256 kombinacija za operacijski kod i adresu. To je, očito, premalo da bi se mogao dosegnuti čitav adresni prostor (npr. 64KB memorije). Zbog toga se u mikroprocesorima upotrebljavaju instrukcijske reči sastavljene od dva ili tri bajta. U većini slučajeva prvi bajt se upotrebljava za predstavljanje operacijskog koda i koda načina adresiranja, dok preostali bajt (ili preostala dva bajta) služi kao adresa ili kao osnova za određivanje stvarne adrese operanda. Operacijski kod Način adresiranja Polje adrese n-1 0

Sl.27 - Organizacija n-bitne instrukcijske reči Više načina adresiranja prisutno u mikroprocesorskoj arhitekturi omogućava efikasnije rukovanje različitim strukturama podataka, a time i efikasnije izvođenje programa.

NAČINI ADRESIRANJA ZA MIKROPROCESOR M6800 Za ilustraciju različitih načina adresiranja upotrebićemo programski model mikroračunara, uz pridodan instrukcijski registar. Programski model mikroprocesora čini skup registara koji su “vidljivi” i dostupni programeru, memorija podataka, te programska memorija. Sl.28 prikazuje programski model za mikroračunar M6800. Programabilni registri su: akumulatori A i B, 6-bitni registar uslova (CCR), 16-bitno programsko brojilo (PB), 16-bitni pokazivač steka (SP) i 16-bitni indeksni registar (IX). Na slici je registar podataka (DC) izostavljen. Programeru moraju biti na raspolaganju načini adresiranja internih registara mikroprocesora i adresiranja svih memorijskih lokacija.

Sl.28 - Programski model za mikroračunar na bazi mikroprocesora M6800

Page 2: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

70

Mikroprocesor M6800 ima sedam načina adresiranja: - uključno (Inherent, Implied), - adresiranje akumulatora, - usputno (Immediate), - direktno (Direct), - direktno prošireno (Extended), - indeksno (Indexed), - odnosno tj. relativno (Relative). Tako raznolik izbor načina adresiranja omogućava efikasno programiranje u pogledu brzine izvođenja programa i iskorištenja memorijskog prostora.

Uključno adresiranje i adresiranje akumulatora Ovim načinom adresiranja operand se određuje implicitno u samoj instrukciji. Uključnim se adresiranjem koristimo pri adresiranju registra kao što su indeksni (IX) ili pokazivač steka (SP). Adresiranjem akumulatora ili akumulatorskim adresiranjem označava se akumulator (ili dva akumulatora). Takve instrukcije (tipa uključnog i akumulatorskog adresiranja) imaju mnemonički kod koji određuje jedan ili dva registra (akumulatora) - kao izvor i/ili odredište. Drugim rečima, u mnemoničkom kodu same instrukcije uključena je i adresa operanda. Primeri takvih instrukcija: ABA Saberi sadržaje akumulatora A i B, te rezultat skladišti u A. TSTB Ispitaj sadržaj akumulatora B. CLRA Izbriši sadržaj akumulatora A. DES Umanji sadržaj pokazivača steka za 1. INX Povećaj sadržaj indeksnog registra za 1. PULA Sadržaj iz steka prenesi u akumulator A Sl.29 prikazuje primer izvođenja instrukcije PULA na programskom modelu (heksadekadni broj 32 je kod instrukcije PULA). Sl.29a prikazuje pribavljanje operacijskog koda instrukcije PULA. Sl.29b prikazuje stanje nakon izvođenja instrukcije PULA.

Sl.29 - Primer izvođenja instrukcije PULA na programskom modelu: a) faza PRIBAVI; b) faza IZVRŠI

Page 3: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

71

Usputno adresiranje Kod ovog načina adresiranja operand je prisutan u instrukcijskoj reči. On je sadržan u bajtu koji sledi bajt operacijskog koda. Instrukcijska reč ovog tipa adresiranja je dužine dva bajta, ako je operand dužine 8 bita. Ukoliko je operand 16-bitni (kod instrukcija LDX i LDS), tada se instrukcijska reč sastoji od tri bajta. Sl.30a, Sl.30b, Sl.31a i Sl.31b prikazuju oba slučaja na primeru instrukcija ADDA #$3F i LDX #$012A. Oznaka # određuje usputno adresiranje, a znak $ označava heksadekadni broj.

Sl.30 - Primer izvođenja instrukcije ADD A #$3F (pribroji sadržaju akumulatora A3F)

a) početak faze PRIBAVI, b) završetak faze IZVRŠI

Sl.31 - Primer izvođenja 3-bajtne instrukcije LDX # $012A (pohrani 012A u indeksni registar)

a) početak faze PRIBAVI, b) završetak faze IZVRŠI

Direktno i direktno prošireno adresiranje Kod ovog načina adresiranja operand se nalazi u memorijskoj lokaciji, čija je adresa direktno zadata u adresnom delu instrukcijske reči. Instrukcijska se reč sastoji od dva ili tri bajta. Instrukcija koja se sastoji od dva bajta omogućava adresiranje samo 256 reči (adresiranje memorijskih lokacija 0000-00FF). Direktni način adresiranja često se naziva i adresiranje nulte stranice (zero-page addressing). Upotrebom tih lokacija i skladištenjem u njih postiže se ušteda u vremenu izvođenja instrukcija. Na primer, instrukcija LDAA $A0 (direktno adresiranje ili adresiranje nulte stranice) se izvodi u tri ciklusa,

Page 4: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

72

dok su istoj instrukciji LDAA $00A0 (direktno prošireno adresiranje) potrebna četiri ciklusa. Sl.32 prikazuje primer direktnog načina adresiranja (instrukcija ADDA $30 - pribroji operand s adrese 0030 sadržaju akumulatora).

Sl.32 - Primer direktnog adresiranja ADDA $30 (pribroji sadržaju akumulatora A operand sa adrese 0030)

a) početak faze PRIBAVI, b) završetak faze IZVRŠI Da bi se dosegao celi memorijski prostor od 64KB reči, koristi se direktno prošireno adresiranje. Instrukcijska reč se sastoji od tri bajta, s tim da su zadnja dva 16-bitna adresa operanda. Sl.33 prikazuje primer direktno proširenog načina adresiranja (STAA $1FA0 - skladišti sadržaj akumulatora A na memorijsku lokaciju 1FA0).

Sl.33 - Primer direktno proširenog adresiranja instrukcije STAA $1FA0 (pohrani sadržaj akumulatora A na memorijsku

lokaciju 1FA0): a) početak faze PRIBAVI, b) završetak faze IZVRŠI

Indeksno adresiranje Instrukcijska reč se kod ovog načina adresiranja sastoji od dva bajta (drugi bajt je adresni deo). Adresni deo instrukcijske reči (0-255) pribraja se manje značajnom bajtu indeksnog registra, dok se eventualni prenos kod spomenutog zbrajanja pribraja značajnijem bajtu indeksnog registra. Rezultat je adresa operanda. Pri tome se sadržaj indeksnog registra ne menja. Sl.34 prikazuje izvođenje instrukcije ADDA 2,X. Oznaka X upotrebljava se za označavanje indeksnog načina adresiranja.

Page 5: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

73

Sl.34 - Primer indeksnog adresiranja instrukcije ADDA 2, X: a) početak faze PRIBAVI, b) završetak faze IZVRŠI Sadržaj indeksnog registra se često povećava (izvođenjem instrukcije INX) ili smanjuje (DEX) prilikom izvođenja programske petlje u cilju pristupa do podataka skladištenih u memoriji u obliku tablica.

Odnosno (relativno) adresiranje Instrukcije grananja i uslovnog grananja upotrbljavaju odnosno (relativno) adresiranje. Ove se instrukcije sastoje od dva bajta, s tim da je drugi bajt binarni broj s predznakom u notaciji dvojnog komplementa koji se pribraja sadržaju programskog brojila i omogućava grananje u dva smera. To znači da je obim relativnog adresiranja ±127 u odnosu na lokaciju same instrukcije grananja. Međutim, kako se obim računa u odnosu na sledeću instrukciju koja bi bila izvršena kada uslov grananja ne bi bio ispunjen, odredišna adresa D je u obimu:

(PC+2) − 127 < D < (PC+2) + 127 PC − 125 < D < PC + 129

Sl.51 prikazuje izvođenje BRA (bezuslovno grananje) za mikroprocesor M6800. Odnos između relativne adrese i apsolutne adrese dat je izrazom:

D = (PC + 2) + R, gde su: R - 8-bitna reč u notaciji dvojnog komplementa, skladištena u drugom bajtu instrukcije grananja; PC - tekući sadržaj programskog brojila; D - odredišna adresa.

Page 6: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

74

Sl.35 - Primer odnosnog adresiranja (instrukcija BRA $06): a) početak faze PRIBAVI, b) završetak faze IZVRŠI

PITANJA (M6800- načini adresiranja) uključno (Inherent, Implied) adresiranje adresiranje akumulatora, usputno (Immediate), adresiranje direktno (Direct), adresiranje direktno prošireno (Extended), adresiranje indeksno (Indexed), adresiranje odnosno tj. relativno (Relative), adresiranje

ULAZNO-IZLAZNI (U/I) PRENOS UVOD Prenos podataka (u širem smislu reči - informacije) između logike koja je deo sastava mikroračunara i logike izvan mikroračunara omogućava ulazno-izlazni (U/I) podsistem mikroračunara. Granica između internih logičkih sklopova mikroračunara i spoljnih logičkih sklopova sklopova (procesa) je sledeća: interni logički sklopovi-komponente mikroračunara-deluju u uskoj vezi sa mikroprocesorom (npr. memorija RAM, ROM, U/I međusklop), dok su spoljni logički sklopovi u sprezi sa procesom. Ovde se pod procesom podrazumeva širi pojam, npr. upravljanje tehnološkim postupkom. Međusklop između mikroračunara i spoljne logike ima četiri osnovne funkcije: - međuskladištenje (buffering), - dekodiranje adrese ili izbor uređaja, - dekodiranje komandi, - vremensko vođenje (timing) i upravljanje.

Page 7: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

75

Međuskladištenjem se vrši sinhronizacija izmene podataka između mikroračunara i spoljnih logičkih sklopova. Funkcija dekodiranja adrese ili izbora uređaja potrebna je zbog izbora spoljnjeg logičkog sklopa. Dekodiranje komandi je potrebno u sisitemima u kojima vanjska logika pored uloge u prenosu podataka ima i zadatak pobližeg definisanja funkcije prenosa podataka. Sve gornje funkcije zahtevaju vremensko vođenje i upravljanje. Način izmene podataka između mikroračunara i spoljne logike može se svrstati u tri grupe: - programirani U/I, - prekidni U/I, - direktan pristup memoriji DMA (Direct Memory Access). Pri programiranom U/I, prenosom podataka u potpunosti upravlja mikroračunar, odnosno program koji se izvodi. Kod prekidnog U/I, spoljna logika zahteva da mikroračunar prekine sa svojim tekućim operacijama i da posveti pažnju spoljnjoj logici. Prenos podataka bez učestvovanja mikroprocesora (MPU) i ometanja njegova rada sprovodi se direktnim pristupom memoriji.

ORGANIZACIJA PROGRAMIRANOG U/I PRENOSA Veliki računari imaju višesabirničku arhitekturu - sabirnicu operanda, rezultata, posebnu sabirnicu za komunikaciju sa memorijom (memorijska sabirnica), te sabirnicu povezanu sa U/I međusklopovima (U/I sabirnica). Mikroprocesor zbog ograničenog broja izvoda na integrisanom kućištu, upotrebljava zajedničku sabirnicu za saobraćanje sa memorijom i U/I međusklopovima. Zbog toga se na mikroprocesorskoj sabirnici ne razlikuju adrese U/I međusklopova od adresa memorijskih lokacija. Postoje dva načina adresiranja U/I međusklopova: - memorijsko preslikavanje U/I registara međusklopova, - izdvojeno adresiranje U/I registara međusklopova Kod metode memorijskog preslikavanja U/I registra, mikroprocesor smatra ulazno/izlazne i upravljačke registre U/I međusklopa delom memorijskog adresnog prostora. Samim tim je stvarni memorijski adresni prostor umanjen za taj deo. U takvoj U/I organizaciji mikroprocesor nema ulazne niti izlazne instrukcije. Mikroprocesor rukovodi U/I podacima koji se nalaze u registrima U/I međusklopa pomoću istih instrukcija koje se upotrebljavaju za rukovanje podacima skladištenim u memorijskim lokacijama (memorijski odnosne instrukcije). Primer takve organizacije je mikroprocesor M6800. Na primer, izvođenje instrukcija: LDAA #$A0 STAA $8008 ima kao posledicu da se podatak A0 skladišti u izlaznom registru i šalje spoljnoj logici, ako je 8008 adresa izlaznog registra u U/I međusklopu PIA, na primer. Pri izdvojenoj U/I organizaciji mikroprocesor specifira s jednom ili dve izlazne upravljačke linije da li je podatak na adresnoj sabirnici adresa memorijske lokacije ili je to adresa registra U/I međusklopa. Na primer, postavljanjem određene upravljačke linije u logičko stanje 1 označava adresnoj sabirnici i komponentama mikroračunara da je prisutna adresa namenjena memoriji. Kada je ta upravljačka linija u stanju logičke 0, adresa prisutna na sabirnici namenjena je ulazno/izlaznom registru U/I međusklopa.

TIPOVI PROGRAMIRANOG U/I PRENOSA

Page 8: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

76

S obzirom na odnos mikroračunara i spoljnih logičkih sklopova, programirani U/I prenos može se podeliti na: - programirani bezuslovni prenos, - programirani uslovni prenos. Bezuslovni se prenos upotrebljava samo tamo gde je vreme odziva spoljnih logičkih sklopova poznato i stalno. Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje podataka) u trenutku izvođenja U/I instrukcije. Zbog jednostavnosti i direktnosti ovaj tip prenosa predstavlja minimalne zahteve za programe i sklopove.

Primeri programiranog U/I prenosa a) primer bezuslovnog programiranog prenosa za M6800. Program: Objašnjenje: - - LDAA #$FF Napuni akumulator A sa 00FF STAA $8008 Skladišti na $8008 (izlazni registar) - - (druge programske instrukcije) - - LDAA $800A Napuni akumulator A sa memorijske lokacije $800A - Uz pretpostavku da je $8008 adresa izlaznog registra podataka, a $800A adresa ulaznog registra podataka, instrukcija STAA $8008 šalje podatke (u ovom primeru sa 00FF) spoljnjem logičkim sklopovima preko izlaznog registra. Instrukcija LDAA $800A prenosi podatke s ulaznog registra u akumulator A. b) Primer programiranog uslovnog prenosa za M6800 - Paralelni U/I međusklop PIA omogućava jednostavan prenos podataka. Programski odsečak za unos podataka ima sledeći oblik: - OPET LDAA $8009 Ispitivanje bita b7 upravljačke reči PIA BPL OPET granaj ako je b7=0 LDAA $8008 Podatak je spreman, unesi ga u akumulator A -

Postupak prozivanja (Polling)

U sistemima gde više spoljnjih logičkih sklopova komunicira preko više U/I međusklopova sa jednim mikroprocesorom, upotrebljava se U/I tehnika prozivamja (polling) ili cikličkog ispitivanja. Mikroračunar periodički proziva svaki spoljni logički sklop i ispituje da li je zahtevao posluživanje. Ako spoljni logički sklop ne zahteva posluživanje, mikroračunar ispituje sledeći spoljni logički sklop itd. Ako jedan od njih zahteva posluživanje, mikroračunar prelazi na izvođenje programa za posluživanje dotičnog vanjskog logičkog sklopa (Sl.36). U program za posluživanje uključene su funkcije U/I prenosa (prenos reči ili bloka podataka).

Page 9: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

77

Sl.36 - Postupak prozivanja

Nakon prozivanja tih spoljnih logičkih sklopova postupak prozivanja se ponavlja, tako da program čini petlju prozivanja (Sl.53).

Page 10: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

78

PREKIDNI U/I PRENOS

UVOD Ukoliko se bezuslovni prenos, uslovni prenos ili postupak prozivanja pokažu nepogodnim, bilo zbog nepoznavanja tačnih vremena odziva spoljnih logičkih sklopova, bilo zbog rasipanja vremena računara u petljama čekanja ili sporosti u prozivanju pojedinih spoljnih logičkih sklopova, može se upotrebiti prekidni prenos. Pri prekidnom prenosu, na zahtev spoljne logike, mikroračunar prekida izvođenje svog tekućeg programa i prelazi na izvođenje prekidnog programa (Sl.37)

Sl.37 - Šematski prikaz prekidnog prenosa Prekidna struktura omogućava da mikroprocesor odgovori na asinhrone događaje, odnosno zahteve od strane spoljne logike, a da ne čeka u petlji kojom ispituje stanje spoljnog logičkog sklopa. Mikroprocesor ima jednu ili više upravljačkih linija (prekidne linije) preko kojih spoljnih logički sklopovi zahtevaju posluživanje. Postupak prekidnog prenosa izvodi se obično u sledećim koracima (Sl.38): a) Spoljna logika generiše zahtev za prekid i šalje ga prekidnom linijom mikroprocesoru (Sl.39).

b) Ukoliko mikroprocesor prihvata zahtev za prekid, na kraju izvršenja tekuće instrukcije odgovara signalom potvrde (IACK) i onemogućava dalje prekide.

c) Skladište se svi tekući sadržaji radnih registara, sadržaj registra uslova i programskog brojila. d) Program se grana na memorijsku adresu, sa kojom započinje prekidni program (u njega je

uključen i programski odsečak za U/I prenos podataka). e) Nakon izvršenja prekidnog programa nastavlja se izvođenje prekinutog (tekućeg) programa s

tim, da se svi sadržaji radnih i uslovnih registara obnavljaju. Većina mikroprocesora ima mogućnost programskog maskiranja prekida u zavisnosti od nivoa prioriteta. Ukoliko je bit prekida u registra uslova postavljen u 1 (npr. instrukcijom SEI kod M6800), mikroprocesor ne prihvata zahtev za prekid i nastavlja sa izvođenjem sledeće instrukcije tekućeg programa. Prvi korak u postupku prekidnog prenosa je onemogućavanje sledećih prekida (postavljanjem prekidne maske sprečava se gnežđenje prekida, Sl.40). U nekim se situacijama mikroračunar mora prekidati i kad se nalazi u prekidnom programu (gnežđenje prekida, Sl.40b); to se omogućava brisanjem prekidne maske (npr. instrukcijom CLI kod mikroprocesora M6800).

Page 11: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

79

Sl.38 - Postupak pri prekidu

Sl.39 - Šematski prikaz prekidne strukture mikroračunara

Page 12: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

80

Sl.40 - Primer prekida sa postavljanjem prekidne maske i bez postavljanja prekidne maske:

a) bez gniježđenja (uglavljivanja), b) gniježđenje prekida Sledeći korak u postupku prekida je slanje signala potvrde prekida na kraju izvršenja tekuće instrukcije (neki mikroprocesori nemaju signal potvrde, npr M6800). Na kraju prekidnog programa omogućava se nov prekid (briše se prekidna maska u registru uslova) te mikroprocesor prelazi na izvođenje sledeće instrukcije iz tekućeg prekinutog programa. Taj prelaz na dalje izvođenje prekinutog programa vrši se pomoću instrukcije povratka iz prekidnog programa (npr. RTI, RET). Napomenimo da kod nekih mikroračunara postoji zamena u redosledu koraka c) i d). Budući da je više U/I međusklopova priključeno na istu prekidnu liniju (Sl.39), mikroprocesor mora ustanoviti koji je U/I međusklop, odnosno spoljni logički sklop, zahtevao posluživanje. Postoje dve metode utvrđivanja uzročnika prekida: - metoda prozivanja prekida, - metoda vektorskog prekida. Metoda prozivanja prekida slična je metodi prozivanja već ranije opisanoj kod programiranog prenosa. U prekidnom programu obavlja se prozivanje pojedinih U/I međusklopova i ispituje se njihovo stanje, odnosno, ispituje se da li je određeni međusklop prouzročio prekid. Ispitivanja stanja međusklopa znači ispitivanje njegovih registara, odnosno onih registara koji upućuju da je aktiviran prekidni prenos od strane međusklopa. Ukoliko je ispitani međusklop uzrok prekida, program se grana na odgovarajući programski odsečak za prenos podataka. Pri tom se u redosledu ispitivanja međusklopova krije i prioritet pojedinih U/I međusklopova. Kod metode vektorskog prekida adresu grananja generše U/I međusklop koji zahteva posluživanje. U sisitemima mikroračunara često se upotrebljavaju prekidi u više nivoa koji su obično kombinacija metoda prozivanja i vektorskog prekida. Prednost prekidnog programa je u brzom odgovoru, jer se spoljni logički sklopovi poslužuju u vrlo kratkom vremenu nakon generisanog zahteva. Prekidni prenosi se obično zbog toga upotrebljavaju u sistemima s odzivom u realnom vremenu. Nedostatak prekidnog prenosa je u tome što zahteva dodatne sklopove u slučaju simultanih i višenivovskih zahteva za prekid. Pri svakom posluživanju zahteva mikroprocesor gubi vreme u dodatnom poslu skladištenja stanja tekućeg programa. Dalji je nedostatak asinhrono međudelovanje programa za posluživanje i glavnog programa, tako da mogu nastati konflikti u pogledu zahteva za memorijskim prostorom ili u pogledu vremena izvođenja programa. Nedostatak prekida je u tome što se prenos podataka obavlja pod programskim upravljanjem mikroprocesora. Pri analizi prekidnog sistema pojedinog mikroprocesora obično treba odgovoriti na sledeća pitanja: - Koliko prekidnih linija poseduje mikroprocesor? - Kakav je odziv mikroprocesora na prekid?

- Na koji način mikroprocesor određuje izvor (uzročnik) prekida ako je broj izvora veći od broja prekidnih linija?

- Da li mikroprocesor može razlikovati važan prekid od nevažnog (prioritetna struktura prekida)? - Kada i kako se prekid omogućava ili onemogućava? PITANJA

Page 13: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

81

Tipovi prenosa podataka tipovi programiranog prenosa prekidni prenos

ORGANIZACIJA PREKIDNOG SISTEMA ZA MIKROPROCESOR M6800 Mikroprocesor M6800 ima tri prekidna ulaza: Reset (RES), Non-Maskable Interrupt (NMI - nemaskirajući prekid) i Interrupt Request (IRQ). Prekidni sled može započeti upotrebom odgovarajućih upravljačkih signala na ta tri prekidna ulaza, ili upotrebom instrukcije SWI (softverski, programski prekid). Rezultirajući prekidni sled različit je za svaki od gornjih slučajeva. Sklopovski (hardverski) zahtev za prekidom (IRQ) obično generišu međusklopovi U/I (PIA, ACIA), i sklopovi koje projektuju korisnici. Postavljanjem linije IRQ u logičku 0 zahtev se aktivira. Sl.41 prikazuje prekidni sled pri aktiviranju linije IRQ.

Sl.41 - Prekidni sled za prekid IRQ Nakon pojave IRQ=0 i ispitivanja prekidne maske u registru uslova, sledi skladištenje programibilnih registara (PC, IX, ACCA, ACCB, CCR) u memoriju određenu sadržajem pokazivača steka SP. Postupak skladištenja traje sedam memorijskih ciklusa. Po dva su ciklusa potrebna za skladištenje sadržaja programskog brojila i indeksnog registra, a po jedan za akumulator A, akumulator B, te registar uslova CCR. Sadržaj pokazivača steka umanjiće se za sedam i pokazivati sledeću praznu memorijsku lokaciju. Adresa prekidnog programa pribavlja se sa memorijskih lokacija FFF8 i FFF9. Postavljanje prekidne maske važna je operacija u organizaciji prekidnog sistema. Postavljanjem maske definisan je postupak rukovanja u slučaju pojave više zahtava za prekid. Ukoliko se želi omogućiti gnežđenje prekidnih programa, mora se “obrisati” prekidna maska instrukcijom CLI na početku prekidnog programa. Međutim, ako se ne želi gnežđenje prekida, prekidna maska se ne briše. Maska se automatski briše tek izvođenjem instrukcije RTI (Return from Interrupt - povratak iz prekidnog

Page 14: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

82

programa). Izvođenjem instrukcije RTI, iz steka se vraćaju sva skladištena stanja radnih registara, te sadržaj programskog brojila i registra uslova (Sl.42). Budući da je pre prekida prekidna maska bila obrisana (inače ne bi ni došlo do prekida), nakon izvođenja instrukcije RTI, odnosno vraćanja u prekinuti tekući program, ponovno je omogućen prekid.

Sl.42 - Izvođenje instrukcije RTI: a) pre izvođenja instrukcije RTI, b) nakon izvođenja instrukcije RTI

Na Sl.41 prikazana je situacija u kojoj nakon postavljanja prekidne maske sledi grananje na prvu instrukciju u prekidnom programu. To se postiže punjenjem programskog brojila sadržajem memorijskih lokacija FFF8 i FFF9. Mikroprocesor pribavlja prvu instrukciju iz lokacije koja je određena novim sadržajem programskog brojila. Sadržaj u memorijskim lokacijama FFF8 i FFF9 naziva se vektorom. Mikroprocesor šalje na adresnu sabirnicu adresu FFF8 i postavlja liniju R/W u 1 te se sa izabrane lokacije pribavlja značajniji bajt nove vrednosti programskog brojila (PC8-15). Nakon toga sledi adresa FFF9 i pribavljanje drugog bajta nove vrednosti programskog brojila (PC0-7). Na taj se način pribavlja vektor. Nemaskirajući prekid NMI Sa zadnjim bridom (prelazom logičke 0 u 1) signala na ulazu NMI inicira se u mikroprocesoru prekidni sled. Kako sam naziv kaže, taj se prekid ne može maskirati. Prekidna maska u registru uslova CCR ne utiče na nemaskirajući prekid. Na ovu prekidnu liniju obično se priključuju spoljni logički sklopovi sa najvišim prioritetima u pogledu zahteva za posluživanje. Izuzev činjenice da taj tip prekida ne može biti maskiran, prekidni sled je u potpunosti jednak sledu izvođenja IRQ prekida. Nakon završetka izvođenja tekuće instrukcije mikroprocesor skladišti stanja, postavlja masku i pribavlja vektor sa memorijskih lokacija FFFC i FFFD (Sl.43).

Page 15: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

83

Sl.43 - Prekidni sled za prekid NMI

Nemaskirajući prekid upotrebljava se i za sisteme gde se stanje tekućeg programa moraju sačuvati prilikom ispada napajanja (stanja se skladište u memoriju sa baterijskim napajanjem). Reset (RES) Kada je RESET=0, mikroprocesor postavlja masku prekida i sa memorijskih lokacija FFFE i FFFF pribavlja vektor (adresu prve instrukcije u prekidnom programu), (Sl.44). Taj prekid koristi se za startanje mikroprocesora nakon uspostavljanja napona napajanja. Budući da se upotrebljava za start mikroprocesora (start-up mode), nije potrebno skladištenje stanja u stek.

Sl.44 - Prekidni sled za prekid RES Programski (softverski) prekid SWI

Page 16: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

84

Mikroprocesor M6800 poseduje takođe softverski prekid. Izvođenje softverskog prekida (SWI - instrukcija) inicira sled prikazan na Sl.45. Vektor se pri softverskom prekidu pribavlja iz memorijskih lokacija FFFA i FFFB.

Sl.45 - Sled izvođenja prekida SWI

Softverski prekid se upotrebljava kao ispitna tačka (break-point) pri otkrivanju i otklanjanju grešaka u programu. - U slučaju istovremenih zahteva za prekid, prioritet prekida je sledeći: 1.) RESET, 2.) NMI, 3.) SWI, 4.) IRQ. Prioritet prekida Vektor pribavljen sa memorijskih lokacija koje su specifične za pojedinu vrstu prekida, određuje početnu adresu prekidnog programa. Ako je na svaku prekidnu liniju (IRQ, NMI) priključen jedan spoljni logički sklop, izvor prekida je poznat i određeno je grananje na odnosni prekidni program. Problem prioriteta prekida javlja se pojavom više istovremenih zahteva za prekid na istoj prekidnoj liniji. Metodom prozivanja prioritet se određuje redosledom ispitivanja stanja spoljnih logičkih sklopova ili U/I međusklopova; Sl.46 prikazuje postupak ispitivanja za tri U/I međusklopa. Postoje modifikacije metode prozivanja kod kojih se najpre prikupljaju sva stanja, a zatim se određuje redosled posluživanja u zavisnosti od vremena proteklog od poslednjeg posluživanja spoljnjeg logičkog sklopa.

Page 17: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

85

Sl.46 - Postupak ispitivanja stanja tri U/I međusklopa, potencijalna izvora zahteva za prekid U primeru priključenja više spoljnjih logičkih sklopova na istu prekidnu liniju, metoda prozivanja može biti prespora za utvrđivanje izvora prekida i njegovog posluživanja. U tom slučaju primenjuje se hardverska organizacija pririteta prekida. Interesantan način za realizaciju strukture vektorskih prekida sa prioritetima je kodiranje prioriteta i korištenje koda pririteta umesto određenog broja adresnih linija adresne sabirnice. Jedan primer ovakve strukture prikazan je na Sl.47. Struktura obezbeđuje osam nivoa prioriteta prekida. Ako bi se, na primer, ova struktura prioriteta prekida primenila na Motorolu 6800, najpogodnije bi bilo da se vektori prekida smesta na lokacijama od (FFF9, FFF8) do (FFFB, FFFA) kako je to prikazano na Sl.48. Odgovarajuća tabela istine za koder prioriteta sa Sl.47 data je na Sl.49.

Sl.47- Struktura prekida sa osam nivoa prioriteta

Page 18: NAČINI ADRESIRANJA - tf.uns.ac.rsomorr/radovan_omorjan_003_prI/Predavanja/skripta... · Kod tog tipa prenosa spoljna logika mora biti spremna na saobraćanje (prihvatanje ili slanje

86

Sl.48 - Vektori prekida za višenivovsku strukturu prekida sa osam nivoa prioriteta Motorole 6800

Nivoi prioriteta

U l a z i 0 1 2 3 4 5 6 7

I z l a z i A4 A3 A2 A1

IRQ Lokacija vektora

1 (najvi{i) 1 x x x x x x x 1 1 0 0 1 FFF9 FFF8 2 0 1 x x x x x x 1 0 1 1 1 FFF7 FFF6 3 0 0 1 x x x x x 1 0 1 0 1 FFF5 FFF4 4 0 0 0 1 x x x x 1 0 0 1 1 FFF3 FFF2 5 0 0 0 0 1 x x x 1 0 0 0 1 FFF1 FFF0 6 0 0 0 0 0 1 x x 0 1 1 1 1 FFEF FFEE 7 0 0 0 0 0 0 1 x 0 1 1 0 1 FFED FFEC 8 0 0 0 0 0 0 0 1 0 0 1 0 1 FFEB FFEA 9 0 0 0 0 0 0 0 0 0 0 0 0 0

Sl.49 - Tabela istine kodera prioriteta