Arhitektura računara/Septembar 2022

Izvor: SI Wiki
Pređi na navigaciju Pređi na pretragu
Ovaj rok nije rešen. Pomozite SI Wiki tako što ćete ga rešiti.

1. zadatak

Postavka

[5] U posmatranom računarskom sistemu procesor ima 2 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 6 ulazno/izlaznih uređaja koje treba nekako povezati pomoću ta 2 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 6 ulazno/izlaznih uređaja treba povezati pooću ta 2 para linija na procesor. b) Objasniti kako tih 6 ulazno/izlaznih uređaja šalju zahteve za prekid i dobijaju dozvole, i kako se realizuje skok na odgovarajuću prekidnu rutinu.

Rešenje

2. zadatak

Postavka

[5] Napisati optimalnu sekvecu instrukcija neophodnih za sračunavanje izraza:

int a, b, c, d, e, f;
...
a = (b + c);
if (a > 0) f = (d + e);
else f = (b + c);
...

Na raspolagalju 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 maoraju 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 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, B, C, D, E i F su globalne promenljive koje odgovaraju simboličkim oznakama adresa memorijskih lokacija u kojia se nalaze operandi. Sadržaj memorijskih lokacija označenih adresama B, C, D i E treba da ostane nepromeljen, 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.

Rešenje

3. zadatak

Postavka

[5] Napisati optimalnu sekvencu instrukcija koja odgovara sledećoj standardnoj bibliotečkoj S funkciji koja poredi prvih n bajta niza str1 i niza str2:

int memcmp(const void *str1, const void *str2, 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. Formati instrukcija i podataka su kao u zadatku 2. Na raspolaganju stoje i složene instrukcije.

Rešenje

4. zadatak

Postavka

[15] U računarskom sistemu se nalazi jednoadresni procesor, memorija i periferije PER0 i PER1 sa pridruženim kontrolerom sa direktnim pristupom memoriji DMA. Sve koponenteračunara su povezane sistemskom magistralom sa 16 bitnom adresnom i 32 bitnom magistralom podataka. Adresiranje je na nivou 32 bitnih reči. Ulazno/izlazni adresni prostor i memorijski prostor su razdvojeni. Adreserelevantnih registara su:

PER0_CONTROL F000h DMA_PER0_CONTROL F010h PER1_CONTROL F100h
PER0_STATUS F001h DMA_PER0_STATUS F011h PER1_STATUS F101h
PER0_DATA F002h DMA_PER0_DATA F012h PER1_DATA F102h
DMA_PER0_ADDR F013h
DMA_PER0_CNT F014h

U upravljačkim registrima bit 31 je Start kojim se dozvoljava početak operacije, bit 0 određuju tip prenosa podataka (1 - ulaz, 0 - izlaz), bit 1 je Enable kojim se dozvoljava prekid, a u statusnim registrima bit 0 je Ready koji signalizira spremnost kontrolera periferije. Bit 2 upravljačkog registra DMA kontrolera zadaje režim rada (0 - blokovski, 1 - ciklus po ciklus).

Periferija PER0 šanje niz A[i] dužine 50h podataka koji se smeštaju u memoriju počev od adrese 1000h. Podaci su celobrojne veličine koje predstavljaju datum kodiran tako da bitovi A[i]4..0 predstavljaju dan, bitovi A[i]8..5 predstavljaju mesec, A[i]19..9 predstavljaju godinu. Nakon prijema podataka potrebo je da se svai element (datum) konvertuje u tekstualni oblik i da se takav tekst pošalje periferiji PER1. Za konvertovanje datuma predstavljen brojem u tekstualni oblik koristiti funkciju void convert(int intDate, int* stringDate). Ova funkcija konvertuje zadati datum intDate u tekstualni datum oblika "yyyymmdd" i upisuje ga kao rezultat na memorijsku lokaciju koja je određena parametrom stringDate (svaki karakter je dužine 8 bita, pa se koriste samo dve uzastopne adrese - prva adresa za yyyy i druga za mmdd). Slanje tekstualnog datuma periferiji PER1 treba realizovati slanjem dva podatka: yyyy i mmdd, respektivno. Program treba da se izvrši samo jednom.

Napisati glavni program, prekidnu rutinu DMA i funkciju convert kojima se obnavlja opisani prenos. Primanje podataka sa periferije PER0 realizovati korišćenjem pridruženog DMA kontrolera u blokovskom režimu rada, a slanje podataka na periferiju PER1 ispitivanjem bita spremnosti. Za rezultat funkcije convert koristiti memorijski prostor 100h i 101h.

Procesor ima registar SP i BP. Stek raste prema višim adresama i ukazuje na poslednju zauzetu lokaciju. Registar BP se može koristiti za bazno adresiranje sa pomerajem. Funkcija lokalne promenljive alocira na steku i nije dozvoljeno korišćenje globalnih promenljivih unutar funkcije. Smatrati da je tip int širine 32 bita. Karakteri su dužine 8 bita i kodiraju se ASCII8 tablicom, gde je ASCII8('0') = 30h, ASCII8('1') = 31h itd. Dozvoljeno je korišćenje instrukcija DIV i MOD za računanje celobrojnog deljenja i računanje ostatka pri deljenju.

Dozvoljeno je koristiti dodatne promenljive.

Rešenje