Arhitektura računara/Jul 2021

Izvor: SI Wiki
< Архитектура рачунара
Datum izmene: 8. jul 2021. u 12:14; autor: Fedja (razgovor | doprinosi) (truce luka 🤝)
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

  1. Nacrtati strukturu kontrolera ulazno/izlazne periferije sa direktnim pristupom memoriji.
  2. Objasniti funkciju svih delova kontrolera.
  3. Objasniti kojim bitovima i u kojim registrima se zadaju mogući režimi rada kontrolera i dobijaju informacije kako se odvija prenos podataka.

2. zadatak

Postavka

Kontroler izlazne periferije i izlazna periferija za međusobno povezivanje koriste paralelni interfejs koji se sastoji od linija podataka, jedne statusne linije i jedne upravljačke linije. Statusnom linijom izlazna periferija daje indikaciju kontroleru periferije da li je spremna da primi podatak koji je dostupan na linijama podataka, dok kontroler periferije upravljačkom linijom obezbeđuje čitanje podatka sa linija podataka u svoj interni registar. Navesti po kom redosledu se navedene linije koriste za sinhronizaciju i slanje podataka iz kontrolera periferije na periferiju. Odgovor dati tabelarno. Naznačiti koja je početna vrednost na ovim linijama.

Redosled Linija(statusna/upravljačka/podaci) Vrednost Značenje Ko postavlja

3. zadatak

Postavka

Napisati optimalnu sekvencu instrukcija koja odgovara sledećoj standardnoj bibliotečkoj C funkciji koja nadovezuje niz src na kraj niza dest:

 char *strcat (char *dest, const char *src);

Funkcija kao rezultat vraća pokazivač na rezultujući niz dest . Pretpostaviti da je niz dest dovoljne veličine da se u njega može smestiti rezultujući niz, kao i da nema preklapanja između src i dest. Ha raspolaganju je procesor kod koga aritmetičke, logičke i pomeračke instrukcije imaju format: OC reg, reg, reg/imm gde je OS kod operacije, odredišni operand i 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. 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

Postavka

U računarskom sistemu se nalazi jednoadresni procesor, memorija i periferije PER0, i PER1. Periferiji PER0 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 int dužine 16 bita. Ulazno-izlazni adresni prostor i memorijski adresni prostor su preklopljeni. Adrese relevantnih registara periferija PER0 i DMA0 kontrolera su:

PER0_CONTROL F000h DMA0_CONTROL F003h PER1_CONTROL F010h
PER0_STATUS F001h DMA0_STATUS F004h PER1_STATUS F011h
PER0_DATA F002h DMA0_DATA F005h PER1_DATA F012h
DMA0_ADDR F006h
DMA0_CNT F007h

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-ciklus po ciklus (cycle stealing)). Bitovi od 4 do 7 upravljačkog registra DMA0 kontrolera sadrže vrednost za koliko se uvećava adresni registar nakon svakog prenetog podatka. 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.

Sa periferija PER0 i PER1 uporedo se šalju elementi niza. Niz se smešta u memoriju počev od adrese 1000h i ima 100h elemenata. Periferija PER0 šalje elemente koje treba smeštati na mesta u nizu sa parnim indeksom, a elemente sa PER1 treba smeštati na mesta sa neparnim indeksom.

Nakon prijema niza, periferiji koja je prva završila slanje šalje se kompletan neopadajuće sortirani niz. Za sortiranje niza potrebno je implementirati i na odgovarajućem mestu u programu pozvati funkciju

void sort (int* arrAddr, int length)

Gde je arrAddr adresa niza, a length dužina niza. Ne treba voditi računa koji algoritam se koristi za sortiranje.

Primanje elementa sa periferije PER0 realizovati korišćenjem DMA0 kontrolera u blokovskom režimu rada, a eventualno slanje sortiranog niza korišćenjem DMA0 kontrolera u režimu ciklus po ciklus. Primanje elemenata sa PER1 i eventualno slanje sortiranog niza na PER1 realizovati korišćenjem mehanizma prekida.

Smatrati da su dostupni registri XR, BP i SP prilikom pisanja potprograma, kao i da je dozvoljeno registarsko indirektno adresiranje sa registrom XR. Obratiti pažnju da potprogram ne sme da koristi globalne promenljive, već samo parametre potprograma i lokalne promenljive. Pozivalac potprograma je dužan da ukloni parametre sa steka. 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.