Архитектура рачунара/Август 2020 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(још прекуцавам само привремено чување)
 
(нерешено)
 
(2 међуизмене истог корисника нису приказане)
Ред 1: Ред 1:
{{tocright}}
{{tocright}}
{{нерешено}}


== 1. задатак ==
== 1. задатак ==
Ред 17: Ред 18:
== 3. задатак ==
== 3. задатак ==
=== Поставка ===
=== Поставка ===
'''[5п]''' Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој C функцији која проналази прво појављивање карактера ''c'' у првих n бајта низа ''str'';
'''[5п]''' Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој C функцији која пореди првих n бајта низа ''str1'' и низа ''str2''.
<syntaxhighlight lang="C">
<syntaxhighlight lang="C">
void *memchr(const void *str, int c, int n);
int *memcmp(const void *str1, const void *st21, int n);
</syntaxhighlight>
</syntaxhighlight>
Функција као резултат враћа показивач на пронађени карактер или 0 у случају да карактер није пронађен. Формати инструкција и података су као у задатку 2. На располагању стоје и сложене инструкције.
Функција као резултат враћа лексикографски поредак ова два низа: вредност мању од 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. задатак ==
== 4. задатак ==
{{делимично решено}}
 
=== Поставка ===
'''[25п]''' У рачунарском систему се налази једноадресни процесор, меморија и периферије PER0, PER1 до PERN. Сматрати да је<sup>[sic]</sup> број 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 престају са радом када се испразан<sup>[sic]</sup> бафер, а почињу опет када се у истом појави нови податак.
Примање података са периферије PERN реализовати коришћењем механизма прекида. Слање података са периферија PER0 до PERN-1 реализовати испитивањем бита спремности.
За слање једног податка из бафера на периферију XX, XX припада скупу од 0 до N-1, потребно реализовати потпрограм
<syntaxhighlight lang="C">
bool sendDataToPERX(int value, int x)
</syntaxhighlight>
који кроз акумулатор враћа јединицу ако аргумент <code>value</code> јесте послат на периферију PERX, где аргумент <code>x</code> одговара редном броју периферије на коју се шаље податак. У супротном враћа нулу. Аргументи <code>value</code> и <code>x</code> се приликом позива потпрограма преноси<sup>[sic]</sup> путем стека и позивалац потпрограма је дужан да аргумент скине са стека након извршавања. Сматрати да су доступни регистри BP и SP приликом писања потпрограма.
Процесор не поседује регистре опште намене. Стек расте од виших ка нижим локацијама, а SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове називе треба писати описно и семантички исправно. '''Обавезно је писање концизних коментара над семантичким целинама'''


[[Категорија:Архитектура рачунара]]
[[Категорија:Архитектура рачунара]]
[[Категорија:Рокови]]
[[Категорија:Рокови]]

Тренутна верзија на датум 1. март 2022. у 14:40

Овај рок није решен. Помозите 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. задатак