Архитектура рачунара/Август 2020

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу

1. задатак

Поставка

[5п] У посматраном рачунарском систему процесор има један пар линија којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 4 улазно/излазних уређаја које треба некако повезати помоћу тог пара линија на процесор користећи посебна уређај који се назива контролер прекида тако да се омогући за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида. Нацртати као та 4 узлазно/излазна уређаја треба повезати на процесор користећи контролер прекида и пар линија.

2. задатак

Поставка

[5п]

  1. Нацртати структуру контролера улазно/излазне периферије са директним приступом меморији.
  2. Објаснити којим битовима и у којим регистрима се задају могући режими рада контролера и добијају информације како се добија пренос података.
  3. Објаснити на који начин је реализовано држање магистрале код блоковског трансфера података.

3. задатак

Поставка

[5п] Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој C функцији која пореди првих n бајта низа str1 и низа str2.

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

Функција као резултат враћа лексикографски поредак ова два низа: вредност мању од 0 ако је str1 мањи од str2, вредност већу од 0 ако је str1 већи од str2 и вредност 0 ако су str1 и str2 једнаки. На располагању је процесор код кога аритметичке, логичке и померачке инструкције имају формату: OC reg, reg, reg/imm где је OC код операције, одредишни операнд и први операнд морају бити у регистру (reg), док други може бити или у регистру или непосредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дато одредишни регистар (reg), а другим извориште. Инструкција STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), а другим одредиште. На располагању стоји 8 регистара опште намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној јединици. На располагању стоје и сложене инструкције.

4. задатак

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Поставка

[25п] У рачунарском систему се налази једноадресни процесор, меморија и периферије PER0, PER1 до PERN. Сматрати да је[sic] број N припада скупу од 0h до FFh и да може да се користи као непосредна вредност у програму (#N). Све компоненте рачунара су повезане системском магистралом са 16 битном адресном и 16 битном магистралом података. Адресирање је на нивоу 16 битних речи. Сви подаци и адресе су ширине 16 бита. Улазно-излазни адресни простор и меморијски адресни простор су мапирани. Адресе релевантних регистара се формирају на следећи начин:

PERXX_CONTROL FXX0h
PERXX_STATUS FXX1h
PERXX_DATA FXX2h

где XX припада скупу од 0h до N. Нпр. за периферију PER5 адреса контролног, статусног и регистра података биле би F050h, F051h и F052h, респективно. У управљачким регистрима бит 0 је Start којим се дозвољава почетак операције, бит 1 одређују тип преноса података (1 - улаз (input), 0 - излаз (output)), бит 2 је Enable којим се дозвољава прекид, а у статусним регистрима бит 0 је Ready који сигнализира спремност контролера периферије. Написати главни програм, одговарајући потпрограм и прекидне рутине којима се обавља следећи пренос. Периферија PERN шаље бесконачан низ података који се смешта у кружни бафер величине 100h у меморију почев од адресе 1000h. Пријем података од периферије PERN престаје када се напуни бафер и почиње опет када се у истом ослободи простор. У паралели са примањем података са периферије PERN, из кружног бафера је потребно слати податке на периферије PER0 до PERN-1. Податке треба слати тако да све периферије приме текући податак пре слања следећег податка из бафера. Нпр. податак на адреси 1000h треба послати периферијама PER0 до PERN-1 пре слања података на адреси 1001h. Периферије PER0 до PERN-1 престају са радом када се испразан[sic] бафер, а почињу опет када се у истом појави нови податак. Примање података са периферије PERN реализовати коришћењем механизма прекида. Слање података са периферија PER0 до PERN-1 реализовати испитивањем бита спремности. За слање једног податка из бафера на периферију XX, XX припада скупу од 0 до N-1, потребно реализовати потпрограм

bool sendDataToPERX(int value, int x)

који кроз акумулатор враћа јединицу ако аргумент value јесте послат на периферију PERX, где аргумент x одговара редном броју периферије на коју се шаље податак. У супротном враћа нулу. Аргументи value и x се приликом позива потпрограма преноси[sic] путем стека и позивалац потпрограма је дужан да аргумент скине са стека након извршавања. Сматрати да су доступни регистри BP и SP приликом писања потпрограма. Процесор не поседује регистре опште намене. Стек расте од виших ка нижим локацијама, а SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове називе треба писати описно и семантички исправно. Обавезно је писање концизних коментара над семантичким целинама