Arhitektura računara/Avgust 2020

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

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]

  1. Nacrtati strukturu kontrolera ulazno/izlazne periferije sa direktnim pristupom memoriji.
  2. Objasniti kojim bitovima i u kojim registrima se zadaju mogući režimi rada kontrolera i dobijaju informacije kako se dobija prenos podataka.
  3. 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 poredi prvih n bajta niza str1 i niza str2.

int *memcmp(const void *str1, const void *st21, int n);

Funkcija kao rezultat vraća leksikografski poredak ova dva niza: vrednost manju od 0 ako je str1 manji od str2, vrednost veću od 0 ako je str1 veći od str2 i vrednost 0 ako su str1 i str2 jednaki. Na raspolaganju je procesor kod koga aritmetičke, logičke i pomeračke instrukcije imaju formatu: OC reg, reg, reg/imm gde je OC kod operacije, odredišni operand i prvi operand moraju biti u registru (reg), dok drugi može biti ili u registru ili neposredno (reg/imm). Instrukcija LOAD ima format: LOAD reg, mem gde je prvim operandom dato 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. Na raspolaganju stoji 8 registara opšte namene. Pretpostaviti da su svi podaci i adrese iste dužine koja je jednaka adresibilnoj jedinici. 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