Arhitektura računara/K 2021

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu

Zadatak 1

Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Postavka

[7p] Posmatra se procesor iz zadatka 3 kod koga postoji selektivno maskiranje prekida koristeći registar maske IMR kod koga vrednost 1 bita na poziciji i dozvoljava prekid po liniji IRQMi, a vrednost 0 zabranjuje.

  1. Napisati program kojim se zabranjuje prekid od periferije povezane na liniju IRQM1 a prekid od periferija IRQM0 i IRQM2 ne menja.
  2. Napisati program kojim se dozvoljava prekid od periferije povezane na liniju IRQM1 a prekid od periferija IRQM0 i IRQM2 ne menja.
  3. Ukoliko dati procesor u registru PSW ne bi posedovao bite L šta (napisati deo koda) treba i gde (glavni program ili neka prekidna rutina) uraditi kako bi se obezbedilo da se u okviru prekidne rutine periferije PERi (i: 0, 1, 2) prihvata samo prekid višeg nivoa prioriteta.

Zadatak 2

Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Postavka

[8p] Nacrtati sistem u kome postoje dve magistrale od kojih je jedna sinhrona a druga asinhrona. Nacrtati i objasniti kako se kod ovakvog sistema na ove dve magistrale obično povezuje procesor, memorija i ulazno/izlazni uređaji i koje su dobre strane takvog povezivanja.

Zadatak 3

Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

Postavka

[25p] Adresni prostor procesora je veličine 128KB, adresibilna jedinica je 16 bitna reč. Procesor je jednoadresni sa razdvojenim memorijskim i U/I adresnim prostorom, mehanizam prekida je vektorisan, tabela prekidnih rutina počinje od adrese na koju ukazuje registar IVTP, a registar IVTP ima vrednost 0002h.

Procesor ima tri ulazne linije IRQM0, IRQM1 i IRQM2 za spoljašnje maskirajuće prekide i jednu ulaznu liniju IRQN za spoljašnje nemaskirajuće prekide na koje su vezane periferije PER0, PER1, PER2 i PER3, respektivno. Adrese 16 bitnih registara kontrolera periferija PER0, PER1 i PER2 u kojima se čuvaju brojevi ulaza u IV tabelu su Ah, Bh i Ch, respektivno. Pridruženi brojevi ulaza u tabeli prekidnih rutina sa periferije PER0, PER1 i PER2 su 2,3 i 4. Zahtevima za prekid koji dolaze po lini[sic] IRQN odgovara fiksan ulaz 0 u tabeli prekidnih rutina. Zahtevi za prekidom se pamte u flip-flopovima PRM0, PRM1, PRM2 i PRN za periferije PER0, PER1, PER2 i PER3, respektivno. Od spoljašnjih maskirajućih najviši prioritet ima zahtev koji dolazi po liniji IRQM0, pa zatim po lini[sic] IRQM1, i najniži prioritet ima zahtev koji dolazi po liniji IRQM2. Ne prihvataju se prekidi istog nivoa prioriteta. Procesor reaguje i na prekide zbog zadatog režima rada prekid posle svake instrukcije - ako je bit T registra PSW postavljen na vrednost 1 za koji je fiksno određen ulaz 1 IV tabele. Procesor ne poseduje instrukciju za izvršavanje softverskog zahteva za prekidom. U registru PSW redom od nižih ka višim bitovima se nalazi odgovarajući broj L bita (kodovi nivoa režima rada su podeljeni redom, tako da najmanja vrednost L bitova odgovara nivou glavnog programa, dok najveća vrednost L bitova odgovara režimu rada prekidne rutine najprioritetnijeg maskirajućeg zahteva za prekidom), pa zatim bitovi I i T. Registri PSW i ACC su širine 16 bita. Instrukcije INTE, INTD, TRPE, TRPD i RTI ne reaguju na prekide. U koraku za obradu prekida na stek se hardverski stavljaju ACC, PC i PSW, tim redom. Stek raste prema višim lokacijama, a SP ukazuje na poslednju zauzetu lokaciju i ima vrednost F000h. U procesoru ne postoji registar maske IMR, kao ni registri opšte namene.

Na slici 1, dat je deo koda koji je učitan u operativnu memoriju računara. Instrukcija na adresi 1000h označena je kao 1. (prva) po redosledu izvršavanja, a svaka sledeća instrukcija koja se izvršava označena je sledećim rednim brojem. Na slici 2, dati su trenuci pristizanja spoljašnjih zahteva za prekid.

  1. [16p] Napisati sekvencu adresa naredbi koje se redom izvršavaju počev od adrese 1000h. Na početku bit I registra PSW je postavljen na 1, bit T registra PSW je postavljen na 0, dok su svi ostali bitovi registra PSW postavljeni na 0. Rezultat dati nakon faze izvršenja instrukcije i ukoliko je u fazi opsluživanja prekida prihvaćen prekid i nakon faze opsluživanja prekida. Tabelu prikazati do završene instrukcije koja se nalazi na adresi 1009h. Pri crtanju stanja steka, potrebno je naznačiti adresu svake memorijske lokacije, kao i na koju adresu ukazuje registar SP.
  2. [2p] Koja vrednost se nalazi na lokaciji 0000h i 0001h nakon izvršenog programa pod a).
  3. [3p] Napisati deo programa kojim treba da se izmeni sadržaj IV tabele tako što će se međusobno zameniti prekidne rutine periferija PER0 i PER2. Obezbediti da se tokom ove izmene zabrane maskirajući prekidi, a nakon toga da se dozvole maskirajući prekidi. Ne treba uzimati konkretne vrednosti adresa sa slike 1. Na raspolaganju je slobodna memorijska lokacija na adresi 0100h.
  4. [4p] Proširiti odgovarajuću prekidnu rutinu kojom bi se obezbedilo da se maksimalno jednom prihvati zahtev za prekidom koji dolazi od periferije PER2, dok za zahteve ostalih periferija ne treba uvesti ovo ograničenje. Sve adresne instrukcije smatrati da su dužine 3 reči, a sve bezadresne 1 reč. Smatrati da se u glavnom programu neće naći ni jedna instrukcija koja manipuliše stekom. Rešenje treba prikazati u datoj tabeli navođenjem adrese i instrukcije koja će se nalaziti na toj adresi. Nije dozvoljeno korišćenje globalnih promenljivih.
Slika 1 - deo operativne memorije
Adresa
Naredba Adresa Naredba
Adresa Naredba Adresa Vrednost
1000 LD #6h 3000 LD 1h 4000 LD 1h 0 3004h
1003 TRPE 3003 INTE 4003 OR #2h 1 0h
1004 INTD 3004 INC 4006 ST 0h 2 3000h
1005 SUB #3h 3005 ST 1h 4009 RTI 3 400Dh
1008 INC 3009 LD #1h 400A LD 0h 4 400Ah
1009 TRPD 300C ST 200h 400D XOR 1h 5 4000h
300F RTI 4010 ST 1h 6 3009h
4013 RTI
Slika 2 - pristigli zahtevi
Prekid Instrukcija
IRQM1 2
IRQN
4
IRQM0, IRQM2 9

Rešenje

Tačka a)

R.B. Adresa Instrukcija ACC[H] Stek I T L PRN PRM2 PRM1 PRM0
0 - - - 1 1 0

Tačka v)

INTD ; Забрана маскирајућих прекида
PUSH
LD 4h
ST 100h
LD 6h
ST 4h
LD 100h
ST 6h
POP
INTE ; Дозвола маскирајућих прекида

Tačka g)

3009 LD #1h
300C ST 200h
300F POP
3010 ADD #1h
3013 PUSH
3014 RTI

Pošto su poslednje na steku sačuvani L biti, i pošto se ova prekidna rutina može izvršiti samo iz konteksta glavnog programa, u kome su L biti 00, dovoljno je promeniti upamćenu vrednost PSW i zameniti je sa 01 (prioritetom prekidne rutine za PER2). Ovo se može postići dodavanjem sa 1 ili OR-ovanjem sa 1. Vrednost vraćamo na stek i izlazimo iz prekida. Svaki sledeći zahtev je maskiran prioritetom iz L biti.