Arhitektura računara/Avgust 2020
1. zadatak
Postavka
[5p] U posmatranom računarskom sistemu procesor ima jedan par linija kojima ulazno/izlazni uređaji mogu procesoru da šalju zahteve za prekid i od procesora dobijaju signale potvrda. U datom sistemu ima 4 ulazno/izlaznih uređaja koje treba nekako povezati pomoću tog para linija na procesor koristeći posebna uređaj koji se naziva kontroler prekida tako da se omogući za svaki ulazno/izlazni uređaj skok na odgovarajuću prekidnu rutinu vektorisanim mehanizmom prekida. Nacrtati kao ta 4 uzlazno/izlazna uređaja treba povezati na procesor koristeći kontroler prekida i par linija.
2. zadatak
Postavka
[5p]
- Nacrtati strukturu kontrolera ulazno/izlazne periferije sa direktnim pristupom memoriji.
- Objasniti kojim bitovima i u kojim registrima se zadaju mogući režimi rada kontrolera i dobijaju informacije kako se dobija prenos podataka.
- Objasniti na koji način je realizovano držanje magistrale kod blokovskog transfera podataka.
3. zadatak
Postavka
[5p] Napisati optimalnu sekvencu instrukcija koja odgovara sledećoj standardnoj bibliotečkoj C funkciji koja pronalazi prvo pojavljivanje karaktera c u prvih n bajta niza str;
void *memchr(const void *str, int c, int n);
Funkcija kao rezultat vraća pokazivač na pronađeni karakter ili 0 u slučaju da karakter nije pronađen. Formati instrukcija i podataka su kao u zadatku 2. Na raspolaganju stoje i složene instrukcije.
4. zadatak
- Ovaj zadatak nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.
Postavka
[25p] U računarskom sistemu se nalazi jednoadresni procesor, memorija i periferije PER0, PER1 do PERN. Smatrati da je[sic] broj N pripada skupu od 0h do FFh i da može da se koristi kao neposredna vrednost u programu (#N). 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. Ulazno-izlazni adresni prostor i memorijski adresni prostor su mapirani. Adrese relevantnih registara se formiraju na sledeći način:
| PERXX_CONTROL | FXX0h |
| PERXX_STATUS | FXX1h |
| PERXX_DATA | FXX2h |
gde XX pripada skupu od 0h do N. Npr. za periferiju PER5 adresa kontrolnog, statusnog i registra podataka bile bi F050h, F051h i F052h, respektivno. 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, a u statusnim registrima bit 0 je Ready koji signalizira spremnost kontrolera periferije. Napisati glavni program, odgovarajući potprogram i prekidne rutine kojima se obavlja sledeći prenos. Periferija PERN šalje beskonačan niz podataka koji se smešta u kružni bafer veličine 100h u memoriju počev od adrese 1000h. Prijem podataka od periferije PERN prestaje kada se napuni bafer i počinje opet kada se u istom oslobodi prostor. U paraleli sa primanjem podataka sa periferije PERN, iz kružnog bafera je potrebno slati podatke na periferije PER0 do PERN-1. Podatke treba slati tako da sve periferije prime tekući podatak pre slanja sledećeg podatka iz bafera. Npr. podatak na adresi 1000h treba poslati periferijama PER0 do PERN-1 pre slanja podataka na adresi 1001h. Periferije PER0 do PERN-1 prestaju sa radom kada se isprazan[sic] bafer, a počinju opet kada se u istom pojavi novi podatak. Primanje podataka sa periferije PERN realizovati korišćenjem mehanizma prekida. Slanje podataka sa periferija PER0 do PERN-1 realizovati ispitivanjem bita spremnosti. Za slanje jednog podatka iz bafera na periferiju XX, XX pripada skupu od 0 do N-1, potrebno realizovati potprogram
bool sendDataToPERX(int value, int x)
koji kroz akumulator vraća jedinicu ako argument value jeste poslat na periferiju PERX, gde argument x odgovara rednom broju periferije na koju se šalje podatak. U suprotnom vraća nulu. Argumenti value i x se prilikom poziva potprograma prenosi[sic] putem steka i pozivalac potprograma je dužan da argument skine sa steka nakon izvršavanja. Smatrati da su dostupni registri BP i SP prilikom pisanja potprograma.
Procesor ne poseduje registre opšte namene. 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