Arhitektura računara/Jun 2021
Pređi na navigaciju
Pređi na pretragu
Postavka
- [5p] U posmatranom računarskom sistemu procesor ima 3 para linija po kojima ulazno/izlazni uređaji mogu procesoru da šalju zahteve za prekid i od procesora dobijaju signale potvrda. U datom sistemu ima 8 ulazno/izlaznih uređaja koje treba nekako povezati pomoću ta 3 para linija na procesor i omogućiti za svaki ulazno/izlazni uređaj skok na odgovarajuću prekidnu rutinu vektorisanim mehanizmom prekida.
- a) Nacrtati kako tih 8 ulazno/izlaznih uređaja treba povezati pomoću ta 3 para linija na procesor.
- b) Nacrtati internu strukturu kontrolera periferije koji dozvoljava serijsko slanje prekida narednoj periferiji u lancu.
- [5p] Hapisati optimalnu sekvencu instrukcija neophodnih za sračunavanje izraza:
int a,b,c,d,e,f; ... a = (b+c) - (d+e); if (a == 0) f = (b+c); else f = (d+e);
- Na raspolaranju je procesor kod koga aritmetičke, logičke i pomeračke instrukcije imaju format: OS reg, reg, reg/imm gde je OS kod operacije, odredišni operand i prvi operand moraju biti u registru (reg), dok drugi može biti ili u registru ili dat neposredno (reg/imm). Instrukcija LOAD ima format: LOAD reg, mem gde je prvim operandom dat odredišni registar (reg), a drugim izvorište. Instrukcija STORE ima format: STORE reg, mem gde je prvim operandom dat izvorišni registar (reg), a drugim odredište. A, V, S, D, E i F su globalne promenljive koje odgovaraju simboličkim oznakama adresa memorijskih lokacija u kojima se nalaze operandi. Sadržaj memorijskih lokacija označenih adresama V, S, D i E treba da ostane nepromenjen, sadržaj odgovarajućih registara je dozvoljeno menjati. Na raspolaganju stoji 8 registara opšte namene. Pretpostaviti da su svi podaci i adrese iste dužine koja je jednaka adresibilnoj jedinici
- [5] Napisati optimalnu sekvencu instrukcija koja odgovara sledećoj standardnoj bibliotečkoj S funkciji koja kopira n bajta niza src y niz dst:
void *memсру (void *dst, const void *src, int n);
- Funkcija kao rezultat vraća pokazivač na odredišni niz dst. Formati instrukcija i podataka su kao u zadatku 2. Na raspolaganju stoje i složene instrukcije.
- [25] U računarskom sistemu se nalazi jednoadresni procesor, memorija i periferije RER0. PER1 do RERN. Cmatrati da broj N pripada skupu od 1 do 15 i da može da se koristi kao neposredna vrednost u programu (#N). Periferiji RER0 je pridružen DMA0 kontroler. Sve komponente računara su povezane sistemskom magistralom sa 16 bitnom adresnom i 16 bitnom magistralom podataka. Adresiranje je na nivou 16 bitnih reči. Svi podaci i adrese su širine 16 bita. Uzeti da je tip podataka іnt dužine 16 bita. Ulazno-izlazni adresni prostor i memorijski adresni prostor su preklopljeni. Adrese relevantnih registara periferija RER0 i DMA0 kontrolera su:
PER0_CONTROL F000h DMA0_CONTROL F003h DMA0_ADDR F006h PER0_STATUS F001h DMA0_STATUS F004h DMA0_CNT F007h PER0_DATA F002h DMA0_DATA F005h - Adrese relevantnih registara periferija RERI do RERN se dobijaju kao rezultat potprograma
int* getPеrRegAddr (unsigned int N, unsigned int typеe)
- Gde N predstavlja broj periferije, type predstavlja tip registra (1 - ENTRY ,, 2 -CONTROL, 3 -STATUS, 4-DATA). Potprogram getPerRegAddr ne treba implementirati, već samo pozivati na odgovarajućem mestu u programu.
- U upravljačkim registrima bit 0 je Start kojim se dozvoljava početak operacije, bit 1 određuju tip prenosa podataka (1 -ulaz (input), 0 - izlaz (output)), bit 2 je Enable kojim se dozvoljava prekid. Bit 3 upravljačkog registra kontrolera DMA0 se zadaje režim rada (0-blokovski (burst), 1-diklus po ciklus (susle stealing)). U statusnim registrima bit 0 je Ready koji signalizira spremnost kontrolera periferije.
- Napisati glavni program, odgovarajući potprogram i prekidnu rutinu kojima se obavlja sledeći prenos.
- Periferija RER0 šalьe niz od 100h označenih celih brojeva koji se smeštaju u memoriju počev od adrese 5000h. Hakon učitanog niza u memoriju potrebno je proslediti maksimalnu vrednost niza periferijama RER1 do RERN. Prenos maksimalne vrednosti periferijama treba obavljati u paraleli, čim periferija bude spremna da primi podatak. Nakon što je svaka periferija primila maksimalnu vrednost, potrebno je da RER0 učita nov niz (od 100h označenih celih brojeva koji se smeštaju u memoriju počev od adrese 5000h), da se prosledi nova maksimalna vrednost niza periferijama RER1 do PERN i tako ciklično da radi program.
- Periferije PER1 do RERN kada se jednom uključe, nije dozvoljeno da se potom isključe. Radi evidencije kojoj periferiji je prosleđena trenutna maksimalna vrednost niza potrebno je uvesti promenljivu mask. Brednost bita maski treba da ima vrednost 1 ukoliko je trenutna maksimalna vrednost niza prosleđena periferiji RERi, a da ima vrednost 0 ukoliko trenutna maksimalna vrednost niza nije još prosleđena periferiji RERi. Nakon prosleđene maksimalne vrednosti svim periferijama, vrednost promenlьivu mask treba resetovati na 0.
- Potrebno je implementirati i u programu na odgovarajuhem mestu pozvati potprogram
int max (int* arrAddr, unsigned int length)
- Koji vraća maksimalnu vrednost niza zadatom početnom adresom arrAddr i dužine 1ength elemenata.
- Primanje podataka sa periferije RERO realizovati korišćenjem DMA0 kontrolera u blokovskom režimu rada. Slanje podataka na periferije RER1 do RERN pealizovati ispitivanjem bita spremnosti.
- Smatrati da su dostupni registri VR i SP prilikom pisanja potprograma. Obratiti pažnju da potprogram ne sme da koristi globalne promenljive, već samo parametre potprograma i lokane promenljive. Pozivalac potprograma je dužan da ukloni parametre sa steka. Rezultat potprograma se vraća kroz akumulator. Procesor ne poseduje registre opšte namene, kao ni registar IMR. Stek raste od viših ka nižim lokacijama, a SP ukazuje na poslednju zauzetu lokaciju. Dozvoljeno je koristiti dodatne promenljive, ali njihove nazive treba pisati opisno i semantički ispravno. Obavezno je pisanje konciznih komentara nad semantičkim celinama.