Архитектура рачунара/Август 2020
1. задатак
Поставка
[5п] У посматраном рачунарском систему процесор има један пар линија којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 4 улазно/излазних уређаја које треба некако повезати помоћу тог пара линија на процесор користећи посебна уређај који се назива контролер прекида тако да се омогући за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида. Нацртати као та 4 узлазно/излазна уређаја треба повезати на процесор користећи контролер прекида и пар линија.
2. задатак
Поставка
[5п]
- Нацртати структуру контролера улазно/излазне периферије са директним приступом меморији.
- Објаснити којим битовима и у којим регистрима се задају могући режими рада контролера и добијају информације како се добија пренос података.
- Објаснити на који начин је реализовано држање магистрале код блоковског трансфера података.
3. задатак
Поставка
[5п] Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој C функцији која проналази прво појављивање карактера c у првих n бајта низа str;
void *memchr(const void *str, int c, int n);
Функција као резултат враћа показивач на пронађени карактер или 0 у случају да карактер није пронађен. Формати инструкција и података су као у задатку 2. На располагању стоје и сложене инструкције.
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 указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове називе треба писати описно и семантички исправно. Обавезно је писање концизних коментара над семантичким целинама