Архитектура рачунара/Јун 2021 — разлика између измена
Пређи на навигацију
Пређи на претрагу
(Ispit iz 2021 godinu JUN) |
|||
Ред 19: | Ред 19: | ||
#:Функција као резултат враћа показивач на одредишни низ ''dst''. Формати инструкција и података су као у задатку 2. На располагању стоје и сложене инструкције. | #:Функција као резултат враћа показивач на одредишни низ ''dst''. Формати инструкција и података су као у задатку 2. На располагању стоје и сложене инструкције. | ||
# '''[25]''' У рачунарском систему се налази једноадресни процесор, меморија и периферије РЕR0. PER1 до РERN. Cматрати да број N припада скупу од 1 до 15 и да може да се користи као непосредна вредност у програму (#N). Периферији РER0 jе придружен DMA0 контролер. Све компоненте рачунара су повезане системском магистралом са 16 битном адресном и 16 битном магистралом података. Адресирање је на нивоу 16 битних речи. Сви подаци и адресе су ширине 16 бита. Узети да је тип података '''іnt''' дужине 16 бита. Улазно-излазни адресни простор и меморијски адресни простор су преклопљени. Адресе релевантних регистара периферија РER0 и DМА0 контролера су: | # '''[25]''' У рачунарском систему се налази једноадресни процесор, меморија и периферије РЕR0. PER1 до РERN. Cматрати да број N припада скупу од 1 до 15 и да може да се користи као непосредна вредност у програму (#N). Периферији РER0 jе придружен DMA0 контролер. Све компоненте рачунара су повезане системском магистралом са 16 битном адресном и 16 битном магистралом података. Адресирање је на нивоу 16 битних речи. Сви подаци и адресе су ширине 16 бита. Узети да је тип података '''іnt''' дужине 16 бита. Улазно-излазни адресни простор и меморијски адресни простор су преклопљени. Адресе релевантних регистара периферија РER0 и DМА0 контролера су: | ||
#:<table class="tg"><tr>< | #:<table class="tg"><tr><td>PER0_CONTROL</td><td>F000h</td><td>DMA0_CONTROL</td><td>F003h</td><td>DMA0_ADDR</td><td>F006h</td></tr><tr><td>PER0_STATUS<br></td><td>F001h</td><td>DMA0_STATUS</td><td>F004h</td><td>DMA0_CNT</td><td>F007h</td></tr><tr><td>PER0_DATA</td><td>F002h</td><td>DMA0_DATA</td><td>F005h</td><td></td><td></td></tr></table> | ||
#:Адресе релевантних регистара периферија РERI до РERN се добијају као резултат потпрограма | #:Адресе релевантних регистара периферија РERI до РERN се добијају као резултат потпрограма | ||
#:<syntaxhighlight lang="C">int* getPеrRegAddr (unsigned int N, unsigned int typеe)</syntaxhighlight> | #:<syntaxhighlight lang="C">int* getPеrRegAddr (unsigned int N, unsigned int typеe)</syntaxhighlight> |
Верзија на датум 18. јун 2021. у 10:30
Поставка
- [5п] У посматраном рачунарском систему процесор има 3 пара линија по којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 8 улазно/излазних уређаја које треба некако повезати помоћу та 3 пара линија на процесор и омогућити за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида.
- a) Нацртати како тих 8 улазно/излазних уређаја треба повезати помоћу та 3 пара линија на процесор.
- б) Нацртати интерну структуру контролера периферије који дозвољава серијско слање прекида наредној периферији у ланцу.
- [5п] Haписати оптималну секвенцу инструкција неопходних за срачунавање израза:
int a,b,c,d,e,f; ... a = (b+c) - (d+e); if (a == 0) f = (b+c); else f = (d+e);
- На располаrању је процесор код кога аритметичке, логичке и померачке инструкције имају формат: ОС reg, reg, reg/imm где је ОС код операције, одредишни операнд и први операнд морају бити у регистру (reg), док други може бити или у регистру или дат непосредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дат одредишни регистар (reg), a другим извориште. Инструкцијa STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), a другим одредиште. А, В, С, D, E и F су глобалне променљиве које одговарају симболичким ознакама адреса меморијских локација у којима се налазе операнди. Садржај меморијских локација означених адресама В, С, D и Е треба да остане непромењен, садржај одговарајућих регистара је дозвољено мењати. На располагању стоји 8 регистара опште намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној јединици
- [5] Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој С функцији која копира n бајта низа src y низ dst:
void *memсру (void *dst, const void *src, int n);
- Функција као резултат враћа показивач на одредишни низ dst. Формати инструкција и података су као у задатку 2. На располагању стоје и сложене инструкције.
- [25] У рачунарском систему се налази једноадресни процесор, меморија и периферије РЕR0. PER1 до РERN. Cматрати да број N припада скупу од 1 до 15 и да може да се користи као непосредна вредност у програму (#N). Периферији РER0 jе придружен DMA0 контролер. Све компоненте рачунара су повезане системском магистралом са 16 битном адресном и 16 битном магистралом података. Адресирање је на нивоу 16 битних речи. Сви подаци и адресе су ширине 16 бита. Узети да је тип података іnt дужине 16 бита. Улазно-излазни адресни простор и меморијски адресни простор су преклопљени. Адресе релевантних регистара периферија РER0 и DМА0 контролера су:
PER0_CONTROL F000h DMA0_CONTROL F003h DMA0_ADDR F006h PER0_STATUS F001h DMA0_STATUS F004h DMA0_CNT F007h PER0_DATA F002h DMA0_DATA F005h - Адресе релевантних регистара периферија РERI до РERN се добијају као резултат потпрограма
int* getPеrRegAddr (unsigned int N, unsigned int typеe)
- Где N представља број периферије, type представља тип регистра (1 - ENTRY ,, 2 -CONTROL, 3 -STATUS, 4-DATA). Потпрограм getPerRegAddr не треба имплементирати, већ само позивати на одговарајућем месту у програму.
- У управљачким регистрима бит 0 је Start којим се дозвољава почетак операције, бит 1 одрeђују тип преноса података (1 -улаз (input), 0 - излаз (output)), бит 2 је Enable којим се дозвољава прекид. Бит 3 управљачког регистра контролера DMA0 се задаје режим рада (0-блоковски (burst), 1-диклус по циклус (сусle stealing)). У статусним регистрима бит 0 је Ready који сигнализира спремност контролера периферије.
- Написати главни програм, одговарајући потпрограм и прекидну рутину којима се обавља следећи пренос.
- Периферија РER0 шалье низ од 100h означених целих бројева који се смештају у меморију почев од адресе 5000h. Hакон учитаног низа у меморију потребно је проследити максималну вредност низа периферијама РER1 до РЕRN. Пренос максималне вредности периферијама треба обављати у паралели, чим периферија буде спремна да прими податак. Након што је свака периферија примила максималну вредност, потребно је да РER0 учита нов низ (од 100h означених целих бројева који се смештају у меморију почев од адресе 5000h), да се проследи нова максимална вредност низа периферијама РER1 до PERN и тако циклично да ради програм.
- Периферије PER1 до РERN када се једном укључе, није дозвољено да се потом искључе. Ради евиденције којoј периферији је прослеђена тренутна максимална вредност низа потребно је увести променљиву mask. Bредност бита maski треба да има вредност 1 уколико је тренутна максимална вредност низа прослеђена периферији РERi, a да има вредност 0 уколико тренутна максимална вредност низа није још прослеђена периферији РERi. Након прослеђене максималне вредности свим периферијама, вредност променльиву mask треба ресетовати на 0.
- Потребно је имплементирати и у програму на одговарајуhем месту позвати потпрограм
int max (int* arrAddr, unsigned int length)
- Који враћа максималну вредност низа задатом почетном адресом аrrAddr и дужине 1ength eлемената.
- Примање података са периферије РERO реализовати коришћењем DMА0 контролера у блоковском режиму рада. Слање података на периферије РER1 до РERN peализовати испитивањем бита спремности.
- Сматрати да су доступни регистри ВР и SP приликом писања потпрограма. Обратити пажњу да потпрограм не сме да користи глобалне променљиве, већ само параметре потпрограма и локане променљиве. Позивалац потпрограма је дужан да уклони параметре са стека. Резултат потпрограма се враћа кроз акумулатор. Процесор не поседује регистре опште намене, као ни регистар IМR. Стек расте од виших ка нижим локацијама, а SP указује на последњу заузету локацију. Дозвољено је користити додатне променљиве, али њихове називе треба писати описно и семантички исправно. Обавезно је писање концизних коментара над семантичким целинама.