Professional Documents
Culture Documents
1
1. Ulaz/izlaz
1.1 Programirani ulaz/izlaz
Zadatak 1
Zadata je neka spora izlazna jedinica koja je preko svog kontrolera vezana na magistralu. Na istu
magistralu su vezani i procesor i memorija računara. Adresiranje je bajtovsko, sa razdvojenim
memorijskim i ulazno/izlaznim adresnim prostorima. Procesor je dvoadresni, a od registara ima:
8 16-bitnih registara opšte namene R0 do R7, programski brojač PC, programsku statusnu reč
PSW i pokazivač steka SP. Pri prekidu, na steku se hardverski čuvaju samo registri PC i PSW.
Kod dvoadresnih instrukcija jedan operand (i eventualno odredište) je obavezno u jednom od
registara R0 do R7, a jedina naredba koja koristi operand u memoriji je naredba MOV za prenos
podataka iz/ka memoriji. Naredbe mogu operisati podacima dužine bajta ili reči, što se označava
sufiksom u asemblerskoj naredbi: B za bajt i W za reč (npr. MOVB prenosi bajt, a MOVW reč).
Kontroler periferije ima tri registra dužine 1 bajt: registar podatka čija je adresa 41h, upravljački
registar čija je adresa 42h i statusni registar čija je adresa 43h (slika 1.1.).
Start Enable Ready
Slika 1.1. Formati upravljačkog, statusnog i registra podataka.
Kontroler periferije će svaki podatak upisan u registar podataka od strane procesora prosleđivati
u samu periferiju jedino ako je bit Start u upravljačkom registru postavljen na 1. Prilikom upisa
bajta podatka od strane procesora u registar podatka kontrolera periferije bit Ready u statusnom
registru se postavlja na 0. Po prosleđivanju tog podatka iz registra podataka u periferiju bit
Ready u statusnom registru se postavlja na 1 i generiše signal prekida ako je bit Enable u
upravljačkom registru postavljen na 1.
Korišćenjem tehnika programiranog izlaza napisati program za slanje 20h bajtova iz memorije u
datu periferiju počev od memorijske lokacije 1000h:
a) sa ispitivanjem bita Ready u statusnom registru,
b) uz korišćenje mehanizma prekida. Kako se obezbeđuje da se u glavnom programu ne
započne nova izlazna operacija dok se prethodna ne završi?
Rešenje:
a) Program koji obavlja traženi prenos ispitivanjem bita Ready prikazan je na slici 1.11.1.
MOVW #20H, R0 ;dužina bloka u R0
MOVW #1000H, R1 ;adresa bloka u R1
MOVB #00100000B, R3 ;Start=1
OUTB R3, 42H ;pokretanje kontrolera
LOOP: INB 43H, R3 ;ispitivanje bita Ready
ANDB #00010000B, R3
JZ LOOP ;ako nije 1, čekaj
MOVB (R1), R3 ;prenos podatka na izlaz
OUTB R3, 41H
2
INCW R1 ;sledeća adresa u bloku
DECW R0 ;smanji brojač
JNZ LOOP ;ako nije kraj, ponovi
MOVB #0, R3 ;Start=0
OUTB R3, 42H ;zaustavljanje kontrolera
Slika 1.11.1. Program koji koristi tehniku ispitivanja bita RAEDY za prenos 20h bajtova iz
memorije na periferiju.
Diskusija:
Kako jedan operand u dvoadresnim instrukcijama mora biti u registru, nije bilo moguće direktno
poslati konstantu u registar periferije (OUT #00100000b, 42h) i slično.
Kako su registri kontrolera 8-bitni, instrukcije koje operišu njihovim vrednostima imaju sufiks B,
a ostale instrukcije imaju sufiks W. Adresa bloka i dužina bloka su 16-bitne veličine, pa na to
treba obratiti pažnju.
Slika 1.1.1.2. Glavni program koji obavlja inicijalizaciju prenosa koji koristi mehanizam
prekida.
3
Glavni program sada inicijalizuje brojač bajtova za prenos u memorijskoj lokaciji MemCnt, kako
bi registri u toku prenosa bili slobodni za druge potrebe. Isto važi i za pokazivač bajta u bloku za
prenos u memorijskoj lokaciji MemSrc. Semafor koji će označiti kraj prenosa podataka i koji će
postaviti prekidna rutina, postavlja se inicijalno na 0. Na kraju se pokreće kontroler,
postavljanjem bita Start na 1, a bit Enable se postavlja na 1 kako bi kontroler generisao prekid
svaki put kada je spreman da prihvati podatak.
Kada je prenos pokrenut, glavni program može da obavlja druge poslove, pri čemu ne sme da
upisuje u blok podataka koji se prenosi. Glavni program može da koristi sve registre, jer će ih
prekidna rutina sačuvati na ulazu i restaurirati na povratku. Kada je to potrebno, glavni program
ispituje da li je prenos gotov. Na to ukazuje postavljen semafor. Posle toga, glavni program može
upisivati ponovo u blok koji je prenesen.
Prekidna rutina je prikazana na slici 1.11.3.
;Prekidna rutina
INTH: PUSHW R0 ;sačuvaj registre
PUSHW R1
MOVW MemSrc, R0 ;pokazivač u R0
MOVB (R0), R1 ;prenesi podatak u R1
OUTB R1, 41H ;pa u kontroler periferije
INCW R0 ;povećaj pokazivač
MOVW R0, MemSrc ;i vrati ga u MemSrc
MOVW MemCnt, R0 ;brojač u R0
DECW R0 ;smanji brojač
MOVW R0, MemCnt ;i vrati ga u MemCnt
JNZ BACK ;ako nije poslednji, povratak
MOVB #0, R0 ;zaustavi kontroler
OUTB R0, 42H
MOVW #1, R0 ;i postavi semafor
MOVW R0, MemSem
BACK: POPW R1 ;restauriraj registre
POPW R0
RTI ;i vrati se
Slika 1.11.3. Prekidna rutina kojom se prenosi jedan bajt iz memorije na periferiju.
Prekidna rutina najpre čuva na steku registre koje će koristiti i koje će na kraju restaurirati. To su
R0 i R1. Prekidna rutina se poziva onda kada stigne zahtev za prekidom od kontrolera periferije.
Kontroler periferije generiše prekid onda kada je spreman za prenos. Prekidna rutina, dakle,
može odmah obaviti prenos, nema potrebe za ispitivanjem bita Ready.
Prenos se obavlja na uobičajen način. Zatim se pokazivač MemSrc pripremi za prenos sledećeg
bajta, kao i brojač MemCnt. Ako je prenesen poslednji bajt, prekidna rutina treba da zaustavi
kontroler i da postavi semafor MemSem na 1, kako bi glavni program znao da je prenos završen.
Ako to nije slučaj, samo se vraća iz prekidne rutine, uz restauraciju registara.
Zadatak 2
Adresne linije i linije podataka magistrale posmatranog računara su široke po 16 bita. Procesor je
jednoadresni i operiše samo nad 16-bitnim podacima. Ulazno-izlazni i memorijski adresni
4
prostori su razdvojeni. Periferije PER0 i PER1 imaju upravljačke, statusne i registre podataka
redom na sledećim adresama: FF00h, FF01h, FF02h (PER0) i FF10h, FF11h, FF12h (PER1). U
upravljačkim registrima najmlađi bit je bit Enable Interrupt kojim se dozvoljava prekid,
najstariji je bit Start kojim se dozvoljava početak operacije, a bit 1 je bit smera operacije (0—
ulaz, 1—izlaz). U statusnim registrima najmlađi bit je bit spremnosti Ready. Napisati program
kojim se blok od 200h podataka učitava sa PER0, smešta u memoriju od lokacije F000h,
obrađuje procedurom Obrada, i rezultat šalje na PER1. Operacije ulaza i izlaza realizovati
ispitivanjem bita spremnosti. Procedura Obrada ne menja mesto ni dužinu bloka podataka. Ovu
proceduru ne treba realizovati, već je samo pozvati na odgovarajućem mestu u programu
pomoću naredbe CALL Obrada.
Rešenje:
5
OUT FF12H
LOAD MemSrc ;ažuriranje pokazivača
INC
STORE MemSrc
LOAD MemCnt ;i brojača
DEC
STORE MemCnt
JNZ LOOP2 ;ako nije poslednji, ponovi
LOAD #0 ;zaustavi kontroler
OUT FF10H ;Stop PER1
Slika 4.1.4. Program koji učitava 200h podataka sa PER0, obrađuje učitani niz i vrši slanje na
PER1; ulaz i izlaz su realizovani tehnikom ispitivanja Ready bita.
Program se sastoji iz tri faze. Prva faza je učitavanje niza podataka, druga je poziv procedure
Obrada, a treća je slanje niza na izlaz. Faze ulaza i izlaza niza podataka realizovane su na
uobičajen način, tehnikom ispitivanja bita spremnosti.
Procesor je jednoadresni, operiše sa 16 bitnim veličinama, a adresni prostori su razdvojeni, pa o
svemu tome treba voditi računa pri pisanju programa.
Zadatak 3
Rešenje:
6
…
LOOP1: LOAD MemSem ;ispitivanje vrednosti semafora
AND #1
JZ LOOP1 ;ako nije kraj prenosa, čekaj
CALL Obrada ;obrada unetih podataka
LOAD #200H ;brojač u MemCnt
STORE MemCnt
LOAD #F000H ;pokazivač u MemSrc
STORE MemSrc
LOAD #8002H ;Start=1, Smer=1, Enable=0
OUT FF10H ;pokretanje kontrolera
LOOP2: IN FF11H ;ispitivanje bita spremnosti
AND #8000H
JZ LOOP2 ;ako nije spreman, čekaj
LOAD (MemSrc) ;podatak na izlaz
OUT FF12H
LOAD MemSrc ;ažuriranje pokazivača
INC
STORE MemSrc
LOAD MemCnt ;i brojača
DEC
STORE MemCnt
JNZ LOOP2 ;ako nije poslednji, ponovi
LOAD #0 ;zaustavi kontroler
OUT FF10H ;Stop PER1
Slika 4.1.5. Glavni program koji učitava 200h reči sa PER0, obrađuje učitani niz i vrši slanje na
PER1; ulaz je realizovan mehanizmom prekida a izlaz ispitivanjem Ready bita.
7
BACK: POPA ;restauracija akumulatora
RTI ;povratak iz prekidne rutine
Slika 4.1.6. Prekidna rutina kojom se prenosi jedna reč sa PER0 u memoriju.
Zadatak 4
Rešenje:
U prethodnim zadacima su detaljno objašnjeni svi mehanizmi koji se ovde koriste. Glavni
program je prikazan na slici 4.1.7.
8
JNZ P1 ;ako nije poslednji, ponovi
LOAD #0 ;zaustavljanje kontrolera
STORE FF00H
CALL Obrada ;obrada
LOAD #100H ;inicijalizacija brojača
STORE MemCnt
LOAD #1000H ;inicijalizacija pokazivača
STORE MemAdr
LOAD #0
STORE MemSem ;inicijalizacija semafora
LOAD #8005H ;start kontrolera
STORE FF10H
….
P2: LOAD MemSem ;prenos završen?
CMP #1
JNZ P2
Slika 4.1.7. Glavni program koji učitava 100h reči sa PER0, obrađuje učitani niz i vrši slanje na
PER1; ulaz je realizovan ispitivanjem Ready bita, a izlaz korišćenjem mehanizma prekida.
Slika 4.1.8. Prekidna rutina kojom se prenosi jedna reč iz memorije na PER1.
Zadatak 5
Rešenje:
Obe ulazne operacije treba izvršavati uporedo. To znači da treba inicijalizovati oba ulazna
prenosa i pokrenuti oba kontrolera PER0 i PER1. Tokom prenosa će se pozivati prekidne rutine
od ovih periferija međusobno nezavisno, i ti prenosi će se obavljati do kraja. Glavni program
treba da ispita da li su oba prenosa završena, pre nego što pređe na obradu. Posle toga, glavni
program će izvršiti obradu, a potom preći na izlaznu operaciju. Uobičajeni mehanizmi ulaza i
izlaza opisani su detaljno u prethodnim zadacima.
Glavni program je prikazan na slici 4.1.9.
10
INC MemB
DEC MemCnt
JNZ Loop
LOAD #0
STOREB FF30h
Slika 4.1.9. Glavni program kojim se realizuje istovremeni ulaz sa periferija PER0 i PER1,
obrada unetih podataka i slanje na periferiju PER2; ulaz sa periferija PER0 i PER1 realizovan je
korišćenjem mehanizma prekida a izlaz ispitivanjem bita spremnosti.
Slika 4.1.10. Prekidne rutine za periferije PER0 i PER1 kojima se prenosi jedne reči u memoriju.
Diskusija:
Neophodno je pokrenuti obe ulazne operacije, pa onda čekati na završetak obe. Pogrešno je
čekati na završetak prve, pre nego što se pokrene druga. To bi značilo nepotrebnu
sekvencijalizaciju ovih operacija. Bitan efekat je upravo u tome što obe periferije paralelno
izvršavaju svoje operacije, čime se dobija na vremenu. Ipak, procesor ne može istovremeno
prenositi same podatke iz oba kontrolera u memoriju, to se obavlja sekvencijalno. Dobitak na
vremenu je u tome što same periferije i njihovi kontroleri rade paralelno i nezavisno.
11
Zadatak 6
Rešenje:
12
OUTB FF10h
OUTB FF20h
….
Wait1: LOADW MemSem1
CMPW #1
JNZ Wait1
Wait2: LOADW MemSem2
CMPW #1
JNZ Wait2
Slika 4.1.11.
Slika 4.1.12.
Diskusija:
Kako dve izlazne operacije rade uporedo i nezavisno, neophodno je da obe imaju zasebne
skupove promenljivih s kojima operišu (brojač, pokazivač i semafor), iako rade nad istim
blokom podataka. Prekidne rutine se pozivaju potpuno nezavisno i u nepoznatom međusobnom
poretku, pa svaka od njih operiše nad zasebnim skupom ovih promenljivih.
13
Zadatak 7
U upravljačkim registrima bit 0 je Start kojim se dozvoljava početak operacije, bit 1 određuje
smer operacije (0—ulaz, 1—izlaz), bit 4 je Enable kojim se dozvoljava prekid, a u statusnim
registrima bit 0 je Ready koji signalizira spremnost kontrolera. Napisati glavni program i
odgovarajuću prekidnu rutinu kojima se: uporedo vrši učitavanje niza A(i) (i = 0, …, 99) sa
PER0 u memorijiski blok koji počinje od adrese 1000h, i niza B(i) (i = 0, …, 99) sa PER1 u
memorijski blok počev od adrese 1100h, zatim izvrši sabiranje unetih nizova (B(i) = A(i) B(i)) i
rezultujući niz šalje na periferiju PER0. Ulaz sa PER0 realizovati korišćenjem mehanizma
prekida, ulaz sa PER1 realizovati ispitivanjem bita spremnosti, a izlaz na PER0 korišćenjem
mehanizma prekida. Kontrolni registar PER0 može da se čita.
Rešenje:
Specifičnost ovog zadatka je što je potrebno najpre sa PER0 izvršiti operaciju ulaza korišćenjem
prekida, a zatim operaciju izlaza na istu periferiju takođe korišćenjem prekida. Kako ova
periferija generiše jedinstven zahtev za prekid, kome opet pripada jedna prekidna rutina, sledi da
je neophodno u samoj prekidnoj rutini softverski utvrditi da li je u toku operacija ulaza ili izlaza.
U odnosu na to se vrši odgovarajući prenos u datom smeru. Najjednostavnije je razlikovati dve
operacije pomoću jedne promenljive MemDir koja će biti postavljena pri inicijalizaciji prenosa,
u glavnom programu, na odgovarajuću vrednost, a zatim ispitivana u prekidnoj rutini.
Druga stvar na koju treba obratiti pažnju je da ulazne operacije treba obavljati uporedo. To znači
da se u toku prenosa sa PER1 u glavnom programu generišu prekidi sa PER0, u čijim se
prekidnim rutinama obavlja prenos jednog po jednog podatka. Na ovaj način se paralelizuje rad
dve periferije i njihovih kontrolera, dok sam prenos iz memorije u kontrolere periferija vrši
procesor. Iako nema paralelizacije ovog prenosa iz memorije u kontrolere periferija (jer sve radi
procesor, nešto u glavnom programu, a nešto u prekidnoj rutini), postiže se nezavisnost rada dve
periferije, jer se ničime ne uslovljava međusobni redosled operacija prema njima. Štaviše, greška
bi bilo na bilo koji način međusobno uslovljavati tokove i redosled operacija sa ove dve
periferije.
Glavni program je prikazan na slici 4.1.14.
LOAD #100h
STORE MemCnt0
STORE MemCnt1
LOAD #1000h
STORE MemAdr0
LOAD #1100h
STORE MemAdr1
LOAD #0
14
STORE MemSem0
LOAD #0 ;smer: ulaz
STORE MemDir
LOAD #11h
OUT FF00h
LOAD #01h
OUT FF10h
Crdy: IN FF11h
AND #01h
JZ Crdy
IN FF12h
STORE (MemAdr1)
INC MemAdr1
DEC MemCnt1
JNZ Crdy
LOAD #0
OUT FF10h
Wait: LOAD MemSem0
CMP #1
JNZ Wait
LOAD #100h
STORE MemCnt
LOAD #1000h
STORE MemA
LOAD #1100h
STORE MemB
Loop: LOAD (MemA)
ADD (MemB)
STORE (MemB)
INC MemA
INC MemB
DEC MemCnt
JNZ Loop
LOAD #100h
STORE MemCnt0
LOAD #1100h
STORE MemAdr0
LOAD #0
STORE MemSem0
LOAD #1 ;smer: izlaz
STORE MemDir
LOAD #13h
15
OUT FF00h
…
Wait1: LOAD MemSem0
CMP #1
JNZ Wait1
HALT
Slika 4.1.14.
Slika 4.1.15.
Diskusija:
Zadatak se mogao rešiti i na još nekoliko načina. Prvo, umesto softverske promenljive, moguće
je u prekidnoj rutini ispitivati vrednost bita smera u kontrolnom registru koji je, prema uslovima
zadatka, povezan na magistralu tako da je moguće čitati njegovu vrednost. Drugo, moguće je
pretpostaviti i da u statusnom registru postoji isti ovakav bit smera, koji je zapravo kopija bita
smera u kontrolnom registru, i koji upravo služi za utvrđivanje smera u prekidnoj rutini. Najzad,
najsloženije rešenje se sastoji u formiranju dve prekidne rutine za PER0, jedne za ulaz a druge za
izlaz, uz obaveznu promenu vektora u glavnom programu. U svakom slučaju, sasvim je pogrešno
koristiti dve prekidne rutine bez preusmeravanja prekida sa jedne na drugu, kada se u glavnom
programu prelazi sa operacije ulaza na operaciju izlaza.
Zadatak 8
Bit 0 kontrolnih registara je Start bit, bit 1 definiše smer operacije (0—ulaz, 1—izlaz), a bit 2 je
Enable kojim se omogućuje prekid. Bit 4 statusnih registara je Ready bit. Napisati program i
odgovarajuće prekidne rutine kojima se realizuje: učitavanje niza A(i), i = 0, …, 999 sa PER0 i
slanje kvadriranog niza (A(i)A(i)) na PER1. Prijem sa PER0 i slanje na PER1 realizovati
uporedo, tj. omogućiti slanje elementa niza na PER1 čim je to moguće. Ulaz relizovati
mehanizmom prekida, a izlaz ispitivanjem bita spremnosti.
Rešenje:
U memoriji treba rezervisati prostor koji odgovara dužini niza koji se obrađuje (1000 reči).
Pretpostavimo da ulazni bafer počinje na adresi 2000h. Definišemo dva pokazivača: (a) MemWP
koji pokazuje na prvu slobodnu lokaciju u koju se može smestiti sledeći element koji dolazi sa
PER0, i (b) MemRP koji pokazuje na prvu lokaciju sa koje se može pročitati prvi sledeći element
sa slanje na PER1.
Glavni program je prikazan na slici 4.1.17.
Slika 4.1.17. Glavni program za učitavanje niza A sa PER0 i slanje niza A*A na PER1; ulaz i
izlaz se odvijaju uporedo; ulaz je realizovan korišćenjem mehanizma prekida a izlaz ispitivanjem
bita spremnosti.
Per1: IN FF02
STORE (MemWP)
INC MemWP
DEC CntW
JNZ Back
LOAD #0
OUT FF00h ;Stop PER0
17
Back: RTI
Slika 4.1.18. Prekidna rutina kojom se sa PER0 učitava jedna reč i šalje u memoriju.
Napomena:
Brojači CntR i CntW nisu bili neophodni. Za detektovanje kraja tokom ulaza odnosno izlaza
mogu se koristiti pokazivači MemWP i MemRP, respektivno.
Zadatak 1
Adresni prostor računara je kapaciteta 64 KB, a adresibilna jedinica je bajt. 16-bitne veličine se u
memoriju smeštaju tako da je na nižoj adresi niži bajt. Procesor je jednoadresni, a ulazno/izlazni
adresni prostor je memorijski preslikan. Posmatra se neka spora ulazno/izlazna jedinica sa kojom
se operacije obavljaju korišćenjem DMA kontrolera. Procesor i DMA kontroler su jedini masteri
na magistrali, pa ne postoji potreba za arbitratorom magistrale. Potrebno je preneti blok od 20h
bajtova počev od adrese 500h iz memorije u periferiju.
a) Nacrtati principijelne šeme DMA kontrolera i kontrolera periferije, naznačiti njihove
programski dostupne registre, dodeliti im adrese i opisati značenje relevantnih bitova u tim
registrima.
b) Napisati glavni program koji inicijalizuje i pokreće ovaj prenos. Obezbediti i opisati
mehanizam koji omogućava glavnom programu da ne započne sa pisanjem u blok operativne
memorije odakle se podaci šalju sve dok se prenos ne obavi do kraja.
c) Napisati prekidnu rutinu za ovaj prenos.
d) Koliko puta će DMA kontroler generisati prekid? Kakav je odgovor na ovo pitanje ako je u
pitanju brza periferija, a DMA kontroler radi u burst režimu?
Rešenje:
DMA_CONTROL FF00h
DMA_ADDRESS_LOW FF01h
DMA_ADDRESS_HIGH FF02h
DMA_COUNT_LOW FF03h
DMA_COUNT_HIGH FF04h
DMA_DATA FF05h
DMA_STATUS FF06h
Slika 1.2.2. Adrese relevantnih registara DMA kontrolera
18
DMA_CONTROL je upravljački registar DMA kontrolera. On je po pravilu predviđen samo za
upis. U njega procesor upisuje binarnu vrednost kojom kontroleru zadaje odgovarajuće
parametre režima rada i pokreće kontroler. Značenje relevantnih bitova u DMA_CONTROL
registru je prikazano na slici 1.2.3.
DMA_CONTROL
7 2 1 0
START
0—prenos nije u toku (stop)
1—prenos u toku (start)
BRZINA
0—spora periferija
(cycle stealing)
1—brza periferija
(burst)
SMER
0—ulaz
1—izlaz
End Of Operation
0—prenos je još uvek u toku
1—prenos je završen
ERROR
0—prenos je ispravno
završen
1—greška u prenosu
19
PER_CONTROL
PER_STATUS
PER_DATA
PER_CONTROL FF10h
PER_STATUS FF11h
PER_DATA FF12h
Slika 1.2.6. Adrese relevantnih registara kontrolera periferije.
PER_CONTROL
7 1 0
START
0—prenos nije u toku
1—prenos u toku
SMER
0—ulaz
1—izlaz
Slika 1.2.8. Deo glavnog programa za inicijalizaciju DMA kontolera i kontrolera periferije.
Glavni program samo inicijalizuje odgovarajuće registre DMA kontrolera prema zahtevanom
prenosu. Zatim pokreće DMA i kontroler periferije. Mehanizam kojim se obezbeđuje da glavni
20
program zna kada je prenos završen, tj. da sme da upisuje u dati blok memorije tek kada je
prenos završen je semafor. On je pre prenosa inicijalizovan na 0, a prekidna rutina, koja se
poziva kada je prenos završen, postaviće ga na 1. Glavni program ispituje njegovu vrednost i,
kada je ona 1, nastavlja na onaj deo u kome je neophodno da prenos bude završen.
c) Prekidna rutina je prikazana na slici 1.2.9.
DMAC: LOADB #0
STORE FF00h
STORE FF10h
LOADW #1
STOREW mSem
RTI
Prekidna rutina se izvršava onda kada DMA kontroler generiše prekid. To je slučaj kada je DMA
završio celokupan prenos. Zato u ovoj rutini treba samo zaustaviti oba kontrolera i postaviti
vrednost semafora na 1.
Pretpostavljeno je da je akumulator 16-bitni. Kada se izvršavaju instrukcije nad 8-bitnim
veličinama, koriste se samo nižih osam bita akumulatora. Pretpostavljeno je takođe da samo
instrukcije LOAD i STORE mogu da se izvršavaju i nad 8-bitnim (LOADB i STOREB) i nad
16-bitnim veličinama (LOADW i STOREW).
d) Jednom u oba slučaja, jer se prekid generiše samo po završenom celokupnom prenosu.
Zadatak 2
a) Navesti koje sve informacije procesor zadaje DMA kontroleru pri inicijalizaciji prenosa bloka
podataka sa ili prema periferiji.
b) Koliko puta DMA kontroler zahteva pristup magistrali pri prenosu 100 reči sa periferije u
burst režimu?
c) Koliko puta DMA kontroler zahteva prekid pri prenosu 100 reči sa periferije u burst režimu?
Rešenje:
a) Pri inicijalizaciji DMA transfera programski se zadaje DMA kontroleru:
- početna adresa za upis bloka podataka u memoriju (u režimu ulaza) ili za čitanje bloka
podataka iz memorije (u režimu izlaza),
- broj podataka,
- upravljačke informacije koje obuhvataju:
- smer prenosa—ulaz (periferijamemorija) ili izlaz (memorijaperiferija),
- način prenosa—burst ili cycle stealing režim,
- dozvolu da DMA kontroler po obavljenom prenosu celog bloka generiše signal prekida
procesoru,
- način ažuriranja adrese po obavljenom prenosu jednog podatka—da li se adrese
inkrementira ili dekrementira itd.
b) i c) U oba slučaja odgovor je jednom.
Diskusija:
Treba razlikovati zahtev za pristupom magistrali od zahteva za prekidom. Zahtev za
pristupom magistrali DMA kontroler mora da uputi procesoru (ili posebnom arbitratoru) pre
prenosa jednog svakog pojedinačnog podatka (u cycle stealing režimu rada) ili celog bloka
podataka (u burst režimu).
Zahtev za prekidom DMA kontroler može (ako mu je zadato pri inicijalizaciji) da uputi
procesoru posle prenosa kompletnog bloka podataka nezavisno od režima rada (cycle stealing
ili burst).
21
Ova dva zahteva na različit način se tretiraju od strane procesora. Arbitracija na magistrali
vrši se u potpunosti hardverski pre svakog iniciranja ciklusa na magistrali od strane procesora ili
DMA kontrolera što se može desiti i više puta u toku izvršavanja jedne procesorske instrukcije.
U slučaju zahteva za prekidom, procesor takav zahtev detektuje na kraju izvršenja instrukcije
i po se potrebi preduzima programska akcija (izvršavanje prekidne rutine—tipično zaustavljanje
DMA kontrolera i periferije) u odgovoru na takav zahtev.
Zadatak 3
Slika 1.2.10. Adrese relevantnih registara kontrolera periferija PER1 i PER2 i DMA kontrolera
DMAC1 i DMAC2.
U upravljačkim registrima periferija i DMA kontrolera bit 0 je Start, bit 1 smer prenosa (1—
ulaz), bit 2 je Interrupt Enable (dozvola prekida). Dodatno, bit 3 upravljačkih registara DMA
kontrolera je bit režima rada (1—burst, 0—cycle stealing). Potrebno je, korišćenjem DMA
prenosa, učitati sa PER1 blok od 100h podataka i smestiti u memoriju od adrese 0h, a zatim isti
blok podataka iz memorije poslati na PER2. Za vreme učitavanja podataka procesor izvršava
potprogram OBRADA (poziva se sa CALL OBRADA) nezavistan od učitanih podataka, čije
izvršavanje može da traje kraće od učitavanja podataka. Upis na PER2 treba obaviti u burst
režimu. Napisati glavni program i potrebne prekidne rutine za ostvarivanje prenosa.
Napomene:
1. Svi načini adresiranja dozvoljeni su za izvorišni i odredišni operand instrukcije osim
neposrednog adresiranja za odredišni operand.
2. Pri prekidu se hardverski čuvaju na steku PC, PSW i svi registri opšte namene.
Rešenje:
Traženi program i prekidne rutine su sledeći:
Glavni program je prikazan na slici 1.2.11.
INTD ;onemogućavanje prekida
MOV #3H, E100H ;CONTROL1 (Start = 1, Smer = 1, Enable = 0)
MOV #0H, F101H ;inicijalizacija DMAADDRESS1
MOV #100H, F102H ;inicijalizacija DMACOUNT1
MOV #7H, F100H ;(Start = 1, Smer = 1, Enable = 1, Rezim = 0)
MOV #0H, MemSem ;inicijalizacija semafora
INTE ;omogućavanje prekida
CALL OBRADA ;obrada ide paralelno sa ulazom
LOOP1: TST MemSem, #1H ;da li je semafor jednak 1 ?
JPNZ LOOP1 ;ako nije čekaj
INTD ;onemogućavanje prekida
MOV #1H, E200H ;CONTROL2 (Start = 1, Smer = 0, Enable = 0)
MOV #0H, F201H ;inicijalizacija DMAADDRESS2
22
MOV #100H, F202H ;inicijalizacija DMACOUNT2
MOV #0DH, F200H ;(Start = 1, Smer = 0, Enable = 1, Rezim = 1)
MOV #0H, MemSem ;inicijalizacija semafora
INTE ;omogućavanje prekida
LOOP2: TST MemSem, #1H ;da li je semafor jednak 1?
JPNZ LOOP2 ;ako nije čekaj
HALT ;kraj programa
Na početku programa zadaje se režim rada i startuje periferija PER1, inicijalizuju se registri
početne adrese DMAADDRESS i broja podataka DMACOUNT i zadaje režim rada i startuje
DMAC1. Primetiti da je prekid dozvoljen samo DMA kontroleru, ne i kontroleru periferije.
DMA kontroler prekidom obaveštava procesor da je završio prenos kompletnog bloka podataka;
tada se u okviru odgovarajuće prekidne rutine, zaustavljaju PER1 i DMAC1 i semaforom
signalizira glavnom programu da je prenos završen.
Dok DMAC1 obavlja učitavanje bloka podataka u memoriju u cycle stealing režimu,
procesor izvršava potprogram glavnog programa pod nazivom OBRADA. Primetiti da DMA
kontroler obavlja transfer potpuno nezavisno od procesora. Pošto po uslovu zadatka OBRADA
može da traje kraće od učitavanja, potrebno je u glavnom programu obezbediti sačekivanje kraja
učitavanja pre nego što se pređe na realizaciju izlaza. To se postiže ispitivanjem memorijske
promenljive (semafora) MemSem koja se postavlja na 1 u prekidnoj rutini. Procesor se dakle,
kada završi proceduru OBRADA, za vreme učitavanja preostalih podataka vrti u petlji koju čine
instrukcija označena labelom LOOP1 i naredna instrukcija sve dok ne bude prekinut od strane
prekidne rutine i, posle povratka u glavni program, ne izađe iz petlje.
Po obavljenom ulazu u glavnom programu inicijalizuju se PER2 i DMAC2 za realizaciju
izlaza. DMAC2 obavlja izlaz u burst režimu, dakle kada jednom preuzme sistemsku magistralu
procesor praktično čeka dok DMAC2 ne završi kompletan transfer i ne oslobodi magistralu. S
obzirom da, pre nego što počne izlazni transfer, procesor može da izvrši još (neodređen) broj
instrukcija dok PER2 ne postane spremna, potrebno je i u ovom slučaju uvesti sinhronizaciju
semaforom.
Diskusija:
Obratiti pažnju na sledeće detalje izloženog rešenja:
Registre DMAADDRESS i DMACOUNT treba inicijalizovati pre startovanja DMA
kontrolera. Dobra praksa je da se u okviru inicijalizacije zabrane maskirajući prekidi čime se
programer oslobađa razmišljanja da li MemSem treba da inicijalizuje pre startovanja DMA
kontrolera itd.
23
U okviru prekidne rutine ne bi bilo potrebno programski čuvati registre opšte namene (npr. na
steku instrukcijama PUSH ….) čak i da su u okviru prekidne rutine korišćeni jer se oni, po
uslovu zadatka, hardverski (tj. u okviru mikroprograma za opsluživanje prekida) čuvaju. Iz istog
razloga semafor ne može biti smešten u registar opšte namene jer se njegova promena u okviru
prekidne rutine anulira po izlasku iz rutine.
Zadatak 4
U upravljačkim registrima bit 0 je Start kojim se dozvoljava početak operacije, bit 1 određuje
smer operacije (0—ulaz, 1—izlaz), bit 2 je Enable kojim se dozvoljava prekid. Bit 3
upravljačkog registra DMA kontrolera zadaje režim rada (0—Burst, 1—ciklus po ciklus).
Napisati glavni program i odgovarajuće prekidne rutine kojima se: blok 100h reči učitava sa
PER0 i smešta u memoriju počev od adrese 1000h, zatim izvrši obrada unetih podataka pozivom
procedure Obrada i potom vrši prenos obrađenog bloka (dužina i početna adresa bloka ostaju
iste) iz memorije u PER1. Ulaz realizovati korišćenjem DMA kontrolera u burst režimu, a izlaz
mehanizmom prekida.
Rešenje:
Svi mehanizmi ulazno/izlaznih operacija opisani su detaljno u prethodnim zadacima.
Glavni program je prikazan na slici 1.2.15.
LOAD #1000h ;Ulaz sa PER0 preko DMA
OUT FF01h
LOAD #100h
OUT FF02h
LOAD #0
STORE mSem
LOAD #05h
OUT FF00h
LOAD #01h
OUT FF10h
….
Wait: LOAD mSem
CMP #1
JNZ Wait
CALL Obrada ;Obrada
LOAD #1000h ;Izlaz na PER1
STORE mSrc
LOAD #100h
STORE mCnt
LOAD #0
STORE mSem
LOAD #07h
24
OUT FF20h
….
End: LOAD mSem
CMP #1
JNZ End
HALT
Zadatak 5
25
prenos između bafera korišćenjem DMA kontrolera u režimu prenosa reč po reč, a izlaz
realizovati ispitivanjem bita spremnosti.
Rešenje:
U ovom slučaju DMA kontroler služi za prenos bloka podataka sa jednog mesta u memoriji
na drugo. Time se procesor oslobađa da može da radi neki nezavisni posao. DMA kontroler sam
obavlja ovu jednostavnu operaciju. Ostali mehanizmi ulaza i izlaza opisani su detaljno u
prethodnim zadacima.
Za operaciju prenosa bloka sa jednog mesta u memoriji na drugo, DMA kontroler se
inicijalizuje na sličan način kao i kod ulaza ili izlaza, samo što se odgovarajućim bitima 6 i 5
kontrolnog registra specifikuje vrsta prenosa i što se inicijalizuju dva adresna registra: jedan
ukazuje na izvorišni, a drugi na odredišni blok.
Glavni program je prikazan na slici Error: Reference source not found.
LOAD #200h ;Ulaz sa PER0
STORE MemCnt
LOAD #0h
STORE MemAdr
STORE IBSem
LOAD #51h
OUT FF10h
….
Wait1: LOAD IBSem
CMP #1
JNZ Wait1
LOAD #0 ;Prenos preko DMA
OUT FF01h
LOAD #1000h
OUT FF02h
LOAD #200h
OUT FF03h
LOAD #0
STORE OBSem
LOAD #F1h
OUT FF00h
….
Wait2: LOAD OBSem
CMP #1
JNZ Wait2
LOAD #200h ;Izlaz na PER1
STORE MemCnt
LOAD #1000h
STORE MemAdr
LOAD #21h
OUT FF20h
Wait3: IN FF21h
AND #1
JZ Wait3
LOAD (MemAdr)
OUT FF22h
INC MemAdr
DEC MemCnt
JNZ Wait3
LOAD #0
OUT FF20h
HALT
26
DmaInt: LOAD #0
OUT FF00h
INC
STORE OBSem
RTI
Zadatak 6
U upravljačkim registrima bit 0 je Start kojim se dozvoljava početak operacije, bit 1 određuje
smer operacije (0—ulaz, 1—izlaz), bit 2 je Enable kojim se dozvoljava prekid, a u statusnim
registrima bit 4 je Ready koji signalizira spremnost kontrolera. Bit 3 upravljačkog registra DMA
kontrolera zadaje režim rada (0—Burst, 1—ciklus po ciklus). Napisati glavni program i
odgovarajuće prekidne rutine kojima se: blok 200h reči učitava sa PER0 i smešta u memoriju
počev od adrese 1000h, zatim izvrši obrada unetih podataka pozivom procedure Obrada i potom
istovremeno vrši prenos obrađenog bloka (dužina i početna adresa bloka ostaju iste) iz memorije
u PER1 i PER2. Ulaz realizovati korišćenjem DMA kontrolera u burst režimu, izlaz na periferiju
PER1 mehanizmom prekida, a izlaz na periferiju PER2 ispitivanjem bita spremnosti.
Rešenje:
Ulazna operacija realizovana je korišćenjem DMA kontrolera na uobičajeni način. Dve
izlazne operacije treba da se izvršavaju uporedo, što znači da se za vreme dok se u glavnom
programu vrši prenos na PER2 ispitivanjem bita spremnosti, generišu prekidi od PER1, u čijim
se prekidnim rutinama obavlja prenos jedne po jedne reči na PER1. Na ovaj način se paralelizuje
rad dve periferije i njihovih kontrolera, dok sam prenos iz memorije u kontrolere periferija vrši
27
procesor. Iako nema paralelizacije ovog prenosa iz memorije u kontrolere periferija (jer sve radi
procesor, nešto u glavnom programu, a nešto u prekidnoj rutini), postiže se nezavisnost rada dve
periferije, jer se ničime ne uslovljava međusobni redosled operacija prema njima. Štaviše, greška
bi bilo na bilo koji način međusobno uslovljavati tokove i redosled operacija sa ove dve
periferije. Traženi program je prikazan na slikama 1.2.17, 1.2.18 i 1.2.19.
LOAD #200h
STORE FF02h
LOAD #1000H
STORE FF01h
LOAD #0
STORE MemSem0
LOAD #1
STORE FF10h ;Start PER0
LOAD #5
STORE FF00h ;Start DMA
….
Wait: LOAD memSem0
CMP #1
JNZ Wait
CALL Obrada
LOAD #200h
STORE MemCnt1
STORE MemCnt2
LOAD #1000h
STORE MemAdr1
STORE MemAdr2
LOAD #0
STORE MemSem1
LOAD #7
STORE FF20h ;Start PER1
LOAD #3
STORE FF30h ;Start PER2
Loop2: LOAD FF31h
AND #10h
JZ Loop2
LOAD (MemAdr2)
STORE FF32h
INC MemAdr2
DEC MemCnt2
JNZ Loop2
LOAD #0
STORE FF30h
End: LOAD MemSem1
CMP #1
JNZ End
HALT
28
JNZ Back
LOAD #0
STORE FF20h
LOAD #1
STORE MemSem1
Back: RTI
Zadatak 7
Na ulaz zahteva za prekid IRQ dvoadresnog porocesora vezan je signal zahteva za prekid od
DMA kontrolera. DMA kontroler ima sledeće registre: i) upravljački registar (CR) na adresi
FF00h, sa bitom Enable Interrupt u razredu 0, bitom režima rada u razredu 1 (1—burst) i bitom
smera prenosa u razredu 2 (1—izlaz); ii) statusni registar (SR) vezan na istu adresu FF00h kao i
CR, sa bitom End of Operation u razredu 0, iii) adresni registar memorije (ARM) na adresi
FF01h, iv) registar dužine bloka (WCNT) na adresi FF02h v) adresni registar periferije (ARP) na
adresi FF03h u koji se upisuje adresa registra podataka kontrolera periferije. Svaki upis bilo koje
vrednosti na adresu FF04h znači pokretanje kontrolera periferije i DMA. DMA kontroler sa
periferijom razmenjuje podatke preko sistemske magistrale. Sinhronizacija između DMA i
periferije obavlja se preko signala DREQ koji povezuje direktno DMA i kontroler periferije.
Kada kontroler periferije ima spreman podatak ili je spreman da prihvati podatak, aktivira
DREQ. Kada DMA upiše ili pročita podatak iz kontrolera periferije, automatski se obara DREQ.
Registar podataka periferije koja je povezana na DMA nalazi se na adresi FFF0h.
a) Napisati deo glavnog programa kojim se inicijalizuje DMA za prenos bloka podataka sa
periferije u memoriju u cycle stealing režimu. Blok je dužine 100h i treba ga smestiti počev od
lokacije 50h.
b) Koliko ukupno ciklusa na magistrali obavlja DMA pri prenosu iz prethodne tačke?
c) Šta još treba da poseduje DMA da bi se umesto signala DREQ koristilo ispitivanje bita
spremnosti kontrolera periferije i to preko sistemske magistrale?
Rešenje:
DMA i kontroler periferije sada međusobno komuniciraju preko sistemske magistrale. To
znači da DMA kontroler vrši očitavanje registra podataka kontrolera periferije, ili upis podatka u
njega, u zavisnosti od smera prenosa, uobičajenim ciklusom na sistemskoj magistrali.
Sinhronizacija DMA i kontrolera periferije obavlja se posebnim signalima. Zbog ovoga je
potrebno da DMA kontroler poseduje adresu registra podataka kontrolera periferije jer će njemu
pristupati preko sistemske magistrale.
a) Traženi program je prikazan na slici 1.2.20.
LOAD R1, #50H ;ARM
OUT FF01H, R1
LOAD R1, #100H ;WCNT
OUT FF02H, R1
LOAD R1, #FFF0H ;ARP
OUT FF03H, R1
LOAD R1, #1 ;CR
OUT FF00H, R1
OUT FF04H, R1 ;Start
29
b) DMA obavlja ukupno 200h ciklusa na magistrali, po dva za svaku prenesenu reč: jedan za
prenos iz periferije u DMA i jedan za prenos iz DMA u memoriju.
c) U ovom slučaju DMA i kontroler periferije više ne razmenjuju interno signale za
sinhronizaciju. Sada DMA ispituje spremnost kontrolera periferije očitavanjem njegovog
statusnog registra i to ponovo uobičajenim ciklusom na sistemskoj magistrali. To znači da DMA
u potpunosti izvršava proceduru prenosa podataka tehnikom ispitivanja bita spremnosti, baš kao
kada to radi procesor programiranim ulazom/izlazom.
Da bi ispitivao bit spremnosti u statusnom registru, DMA kontroler treba da zna: adresu
statusnog registra, položaj bita spremnosti u njemu, kao i vrednost ovog bita koja govori da je
kontroler spreman (1 ili 0). Zato DMA treba da poseduje registar u koji procesor upisuje adresu
statusnog registra kontrolera periferije i bite koji govore u kom razredu ovog statusnog registra
se nalazi Ready bit, kao i koja je njegova aktivna vrednost. Ovi biti mogu da budu i biti u
registru CR.
Zadatak 8
U upravljačkim registrima bit 0 je Start kojim se dozvoljava početak operacije, bit 1 određuje
smer operacije (0—ulaz, 1—izlaz), bit 2 je Enable kojim se dozvoljava prekid, a u statusnim
registrima bit 4 je Ready koji signalizira spremnost kontrolera. Bit 3 upravljačkog registra DMA
kontrolera zadaje režim rada (0—Burst, 1—ciklus po ciklus). Napisati glavni program i
odgovarajuće prekidne rutine kojima se: učitava blok od 100 reči sa PER0 i smešta u memoriju
počev od adrese 1000, učitava blok od 100 reči sa periferije PER1 i smešta u memoriju počev od
adrese 2000 i šalje rezultujući niz C (C(i) = A(i) B(i), i=0, …, 99) na periferiju PER1. Ulaz sa
PER0 realizovati korišćenjem DMA kontrolera koji radi u režimu ciklus po ciklus, ulaz sa PER1
korišćenjem mehanizma prekida, a izlaz ispitivanjem bita spremnosti. Ulaz sa PER0 i PER1 se
odvija uporedo, a rezultujući niz slati počev od poslednjeg elementa. Niz C ne treba smeštati u
memoriju, već samo poslati na izlaz.
Rešenje:
Niz C nije potrebno smeštati u memoriju, već je dovoljno izračunati jedan po jedan C(i) i
direktno ih slati na izlaz. Kako se zahteva da se niz C šalje u obrnutom redosledu, neophodno je
najpre učitati sve elemente nizova A i B, pa tek posle završetka obe ulazne operacije započeti
izlaznu. Program je prikazan na slici 1.2.28, 1.2.29 i 1.2..
LOAD #100
STORE FF02h
STORE MemCnt
LOAD #1000H
30
STORE FF01h
LOAD #2000
STORE MemAdr1
LOAD #0
STORE MemSem0
STORE MemSem1
LOAD #1
STORE FF10h ;Start PER0
LOAD #D
STORE FF00h ;Start DMA
LOAD #5
STORE FF20h ;Start PER1
….
Wait: LOAD MemSem0
AND MemSem1
JZ Wait
LOAD #100
STORE MemCnt
LOAD #1099
STORE MemAdr0
LOAD #2099
STORE MemAdr1
LOAD #3
STORE FF20h ;Start PER1
Check: LOAD FF21h
AND #10h
JZ Check
LOAD (MemAdr0)
ADD (MemAdr1)
STORE FF22h
DEC MemAdr0
DEC MemAdr1
DEC MemCnt
JNZ Check
LOAD #0
STORE FF20h
HALT
31
2. Memorije
2.1 Preklapanje pristupa memorijskim modulima
Zadatak 2.1.1
Operativna memorija se sastoji od osam memorijskih modula, a kapacitet modula je
128 Kbajta, što čini totalni kapacitet memorije od 1 Mbajta. Širina reči operativne memorije je 1
bajt. Adresa operativne memorije je širine 20 bita, a njeni najstariji i najmlađi bitovi su označeni
sa A19 i A0, respektivno.
a) Nacrtati i opisati koji opseg adresa memorijskog adresnog prostora je dodeljen kom od
osam modula za četiri slučaja preklapanja pristupa modulima ako je broj modula specifikovan
sledećim bitovima adrese:
a1) A19 A18 A17
a2) A19 A18 A0
a3) A19 A1 A0
a4) A2 A1 A0
i pokazati za svaki od njih koji adresni bitovi formiraju adresu bajta unutar modula.
b) Objasniti da li preplitanje memorijskih modula ubrzava rad računara koji se sastoji od
procesora, operativne memorije, nekoliko periferija i magistrale, ali ne sadrži DMA kontrolere ili
druge procesore. U slučaju da
ubrzava, objasniti na koji način se to postiže,
ne ubrzava, objasniti zašto.
c) U slučaju računara koji se sastoji od četiri procesora, četiri DMA kontrolera, operativne
memorije sa preklapanjem pristupa memorijskim modulima kao što je opisano u zadatku i
asinhrone magistrale, postoji potreba za arbitracijom magistrale gde master prvo učestvuje u
arbitraciji, pa tek onda kada primi dozvolu od arbitratora magistrale sme da izvrši ciklus na
magistrali. Za opisani računar nacrtati i objasniti:
c1) paralelnu šemu arbitracije i
c2) serijsku šemu arbitracije.
c3) Arbitracija sledećeg mastera na magistrali se vrši dok trenutni master vrši ciklus na
magistrali. Objasniti kako se novi master magistrale sprečava da započne svoj ciklus na
magistrali sve dok tekući master ne završi svoj ciklus.
d) Za računar opisan u tački c) objasniti:
d1) Koje vrste ciklusa na magistrali postoje.
d2) Koliko dugo je magistrala zauzeta za vreme svakog od navedenih vrsta ciklusa.
d3) Koliko grupa linija postoje na magistrali i čemu svaka od njih služi za svaki tip ciklusa na
magistrali.
d4) Nacrtati i objasniti vremenske dijagrame svih signala na magistrali za sve tipove ciklusa
na magistrali.
Rešenje:
a)
a1) Adrese su raspoređene po memorijskim modulima na sledeći način:
32
0217 + 0
opseg adresa 0217 + 1
0217
do M0
0217 + (217 – 1)
0217 + (217 – 1)
1217 + 0
opseg adresa 1217 + 1
1217
do M1
1217 + (217 – 1)
1217 + (217 – 1)
6217 + 0
opseg adresa 6217 + 1
6217
do M6
6217 + (217 – 1)
6217 + (217 – 1)
7217 + 0
opseg adresa 7217 + 1
7217
do M7
7217 + (217 – 1)
7217 + (217 – 1)
Bitovi A16 do A0 specifikuju adresu unutar modula.
a2) Adrese su raspoređene po memorijskim modulima na sledeći način:
0218 + 0 0218 + 1
opseg adresa 0218 + 2 0218 + 3
0218
do M0 M1
0218 + (218 – 1)
0218 + (218 – 2) 0218 + (218 – 1)
1218 + 0 1218 + 1
opseg adresa 1218 + 2 1218 + 3
1218
do M2 M3
1218 + (218 – 1)
1218 + (218 – 2) 1218 + (218 – 1)
2218 + 0 2218 + 1
opseg adresa 2218 + 2 2218 + 3
2218
do M4 M5
2218 + (218 – 1)
2218 + (218 – 2) 2218 + (218 – 1)
3218 + 0 3218 + 1
opseg adresa 3218 + 2 3218 + 3
33
3218
do M6 M7
3218 + (218 – 1)
3218 + (218 – 2) 3218 + (218 – 1)
Bitovi A17 do A1 specifikuju adresu unutar modula.
a3) Adrese su raspoređene po memorijskim modulima na sledeći način:
0219 + 0 0219 + 1 0219 + 2 0219 + 3
opseg adresa 0219 + 4 0219 + 5 0219 + 6 0219 + 7
0219
do M0 M1 M2 M3
0219 + (219 – 1)
0219 + (219 – 4) 0219 + (219 – 3) 0219 + (219 – 2) 0219 + (219 – 1)
34
BRQ 15
memory
BGR
module 0 15
BRQ 8
memory
BGR
module 7 8
BRQ 7
DMA0 BGR 7
arbiter
BRQ 4
DMA3 BGR 4
BRQ 3
processor
BGR
0 3
BRQ 0
processor
BGR
3 0
35
c3) Postoji signal na magistrali busy koji postavlja master koji trenutno ima ciklus na
magistrali. Signal je aktivan dog se ne završi ciklus na magistrali. Kada master dobije grant on
prvo proveri da li je signal busy aktivan. Ako je signal aktivan on čeka dok ne postane
neaktivan. Ako je neaktivan master, pošto ima grant, setuje signal busy, obavlja ciklus na
magistrali i na kraju resetuje signal busy.
d)
d1) Postoje tri tipa ciklusa na magistrali:
ciklus inicilajizacije operacije čitanja podatka,
ciklus upisa podatka i
ciklus vraćanja podatka.
d2) Za sva tri tipa ciklusa magistrala je zauzeta samo dok traje prenos relevantnih informacija
za taj ciklus iz registara master-a u registre slave-a.
d3) Postoje tri grupe linija:
adresne linije magistrale,
linije podataka magistrale i
upravljačke linije magistrale (RD, WR, DA, i FC).
Ove linije se koriste u sledećim ciklusima:
ciklus inicijalizacije operacije čitanja podatka
adresne linije magistrale—master šalje adresu lokacije čiji sadržaj treba očitati,
linije podtaka magistrale—master šalje svoj identifikator slave-u i
upravljačke linije magistrale—master šalje signal RD, a slave odgovara signalom FC
kada je prihvatio adresu i dentifikator;
address
data
RD
WR
FC
DA
ciklus upisa podatka
adresne linije magistrale—master šalje slave-u adresu lokacije gde se upisuje novi
sadržaj,
linije podtaka magistrale—master šalje podatak slave-u i
upravljačke linije magistrale—master šalje signal WR, a slave odgovara signalom FC
kada je prihvatio adresu i podatak;
address
data
RD
WR
FC
DA
ciklus vraćanja podatka
Ovaj tip ciklusa na magistrali je odgovor na ranije izvršen ciklus inicijalizacije čitanja
podatka. Slave iz tog ciklusa je sada master, a master slave.
adresne linije magistrale—master šalje identifikator slave-a,
linije podtaka magistrale—master šalje podatak slave-u i
upravljačke linije magistrale—master šalje signal DA slave-u identifikovanom
identifikatorom i slave odgovara signalom FC kada se prenos završi.
36
address
data
RD
WR
FC
DA
Zadatak 2.1.2
37
M0: 0000,0010,0020,0030,….,FFF0
M1: 0001,0011,0021,0031,….,FFF1
….
Mi: 000i,001i,002i,003i,….,FFFi
….
M15: 000F,001F,002F,003F,….,FFFF
Zadatak 2.1.3
Zadatak 2.1.4
38
modula je toliko da se može obaviti inicijalizacija operacije u još 14 memorijskih modula posle
modula X od strane keš memorije, dok operacija u modulu X ne bude završena.
a) Predložiti broj memorijskih modula do kojih bi se preklapao pristup.
b) Predložiti raspored adresa po ovim modulima.
c) Kako se vrši prepoznavanje modula i kako se dobija interna adresa unutar modula?
Rešenje:
a) Keš pristupa memoriji blokovski, što znači da je pristup sekvencijalan do 2 16 reči. Najveći
broj modula koji ima smisla instalirati dobija se ako se pretpostavi da se sve uzastopne operacije
upisa odnose na različite module, što je slučaj za optimalan sekvencijalni pristup. Kada je to
slučaj, onda procesor za vreme odziva prvog modula može inicirati jor najviše 14 operacija u
drugim modulima. Posle toga već može da se obrati istom, prvom modulu jer je on završio sa
operacijom, pa veći broj modula nema smisla. Prema tome, najveći broj modula koji (teorijski)
ima smisla je 15, što znači da treba instalirati 16 modula, kao broj koji je prvi naredni stepen 2.
b) Susedne adrese su u susednim modulima, zbog sekvencijalnog (blokovskog) pristupa.
c) Najniža 4 bita adrese određuju broj modula, a ostali biti internu adresu unutar modula.
39