<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mm190436d</id>
	<title>SI Wiki - Кориснички доприноси [sr]</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mm190436d"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/wiki/%D0%9F%D0%BE%D1%81%D0%B5%D0%B1%D0%BD%D0%BE:%D0%94%D0%BE%D0%BF%D1%80%D0%B8%D0%BD%D0%BE%D1%81%D0%B8/Mm190436d"/>
	<updated>2026-06-04T09:50:51Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2022&amp;diff=4766</id>
		<title>Архитектура рачунара/Септембар 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2022&amp;diff=4766"/>
		<updated>2022-09-21T21:45:11Z</updated>

		<summary type="html">&lt;p&gt;Mm190436d: /* Поставка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; У посматраном рачунарском систему процесор има 2 пара линија по којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 6 улазно/излазних уређаја које треба некако повезати помоћу та 2 пара линија на процесор и омогућити за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида.&lt;br /&gt;
а) Нацртати како тих 6 улазно/излазних уређаја треба повезати пооћу та 2 пара линија на процесор.&lt;br /&gt;
б) Објаснити како тих 6 улазно/излазних уређаја шаљу захтеве за прекид и добијају дозволе, и како се реализује скок на одговарајућу прекидну рутину.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; Написати оптималну секвецу инструкција неопходних за срачунавање израза:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int a, b, c, d, e, f;&lt;br /&gt;
...&lt;br /&gt;
a = (b + c);&lt;br /&gt;
if (a &amp;gt; 0) f = (d + e);&lt;br /&gt;
else f = (b + c);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
На располагању је процесор код кога аритметичке, логичке и померачке инструкције имају формат: ОС reg, reg, reg/imm где је ОС код операције, одредишни операнд и први операнд маорају бити у регистру (reg), док други може бити или у регистру или непосредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дат одредишни регистар (reg), а другим извориште. Инструкција STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), а другим одредиште. A, B, C, D, E и F су глобалне променљиве које одговарају симболичким ознакама адреса меморијских локација у којиа се налазе операнди. Садржај меморијских локација означених адресама B, C, D и E треба да остане непромељен, садржај одговарајућих регистара је дозвољено мењати. На располагању стоји 8 регистара опште намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној јединици.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој С функцији која пореди првих n бајта низа str1 и низа str2:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int memcmp(const void *str1, const void *str2, int n);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Функција као резултат враћа лексикографски поредак ова два низа: вредност мању од 0 ако је str1 мањи од str2, вредност већу од 0 ако је str1 већи од str2 и вредност 0 ако су str1 и str2 једнаки. Формати инструкција и података су као у задатку 2. На располаганју стоје и сложене инструкције.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[15]&#039;&#039;&#039; У рачунарском систему се налази једноадресни процесор, меморија и периферије PER0 и PER1 са придруженим контролером са директним приступом меморији DMA. Све копонентерачунара су повезане системском магистралом са 16 битном адресном и 32 битном магистралом података. Адресирање је на нивоу 32 битних речи. Улазно/излазни адресни простор и меморијски простор су раздвојени. Адресерелевантних регистара су:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| PER0_CONTROL&lt;br /&gt;
| F000h&lt;br /&gt;
| DMA_PER0_CONTROL&lt;br /&gt;
| F010h&lt;br /&gt;
| PER1_CONTROL&lt;br /&gt;
| F100h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_STATUS&lt;br /&gt;
| F001h&lt;br /&gt;
| DMA_PER0_STATUS&lt;br /&gt;
| F011h&lt;br /&gt;
| PER1_STATUS&lt;br /&gt;
| F101h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_DATA&lt;br /&gt;
| F002h&lt;br /&gt;
| DMA_PER0_DATA&lt;br /&gt;
| F012h&lt;br /&gt;
| PER1_DATA&lt;br /&gt;
| F102h&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| DMA_PER0_ADDR&lt;br /&gt;
| F013h&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| DMA_PER0_CNT&lt;br /&gt;
| F014h&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
У управљачким регистрима бит 31 је Start којим се дозвољава почетак операције, бит 0 одређују тип преноса података (1 - улаз, 0 - излаз), бит 1 је Enable којим се дозвољава прекид, а у статусним регистрима бит 0 је Ready који сигнализира спремност контролера периферије. Бит 2 управљачког регистра DMA контролера задаје режим рада (0 - блоковски, 1 - циклус по циклус).&lt;br /&gt;
&lt;br /&gt;
Периферија PER0 шање низ A[i] дужине 50h података који се смештају у меморију почев од адресе 1000h. Подаци су целобројне величине које представљају датум кодиран тако да битови A[i]&amp;lt;small&amp;gt;4..0&amp;lt;/small&amp;gt; представљају дан, битови A[i]&amp;lt;small&amp;gt;8..5&amp;lt;/small&amp;gt; представљају месец, A[i]&amp;lt;small&amp;gt;19..9&amp;lt;/small&amp;gt; представљају годину. Након пријема података потребо је да се сваи елемент (датум) конвертује у текстуални облик и да се такав текст пошаље периферији PER1. За конвертовање датума представљен бројем у текстуални облик користити функцију void convert(int intDate, int* stringDate). Ова функција конвертује задати датум intDate у текстуални датум облика &amp;quot;yyyymmdd&amp;quot; и уписује га као резултат на меморијску локацију која је одређена параметром stringDate (сваки карактер је дужине 8 бита, па се користе само две узастопне адресе - прва адреса за yyyy и друга за mmdd). Слање текстуалног датума периферији PER1 треба реализовати слањем два податка: yyyy и mmdd, респективно. Програм треба да се изврши само једном.&lt;br /&gt;
&lt;br /&gt;
Написати главни програм, прекидну рутину DMA и функцију convert којима се обнавља описани пренос. Примање података са периферије PER0 реализовати коришћењем придруженог DMA контролера у блоковском режиму рада, а слање података на периферију PER1 испитивањем бита спремности. За резултат функције convert користити меморијски простор 100h и 101h.&lt;br /&gt;
&lt;br /&gt;
Процесор има регистар SP и BP. Стек расте према вишим адресама и указује на последњу заузету локацију. Регистар BP се може користити за базно адресирање са померајем. Функција локалне променљиве алоцира на стеку и није дозвољено коришћење глобалних променљивих унутар функције. Сматрати да је тип int ширине 32 бита. Карактери су дужине 8 бита и кодирају се ASCII8 таблицом, где је ASCII8(&#039;0&#039;) = 30h, ASCII8(&#039;1&#039;) = 31h итд. Дозвољено је коришћење инструкција DIV и MOD за рачунање целобројног дељења и рачунање остатка при дељењу.&lt;br /&gt;
&lt;br /&gt;
Дозвољено је користити додатне променљиве.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Наставити са копирањем одељака изнад уколико има још задатака. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&amp;lt;!-- Заменити са називом предмета --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mm190436d</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2022&amp;diff=4765</id>
		<title>Архитектура рачунара/Септембар 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2022&amp;diff=4765"/>
		<updated>2022-09-21T21:44:55Z</updated>

		<summary type="html">&lt;p&gt;Mm190436d: /* Поставка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; У посматраном рачунарском систему процесор има 2 пара линија по којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 6 улазно/излазних уређаја које треба некако повезати помоћу та 2 пара линија на процесор и омогућити за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида.&lt;br /&gt;
а) Нацртати како тих 6 улазно/излазних уређаја треба повезати пооћу та 2 пара линија на процесор.&lt;br /&gt;
б) Објаснити како тих 6 улазно/излазних уређаја шаљу захтеве за прекид и добијају дозволе, и како се реализује скок на одговарајућу прекидну рутину.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; Написати оптималну секвецу инструкција неопходних за срачунавање израза:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int a, b, c, d, e, f;&lt;br /&gt;
...&lt;br /&gt;
a = (b + c);&lt;br /&gt;
if (a &amp;gt; 0) f = (d + e);&lt;br /&gt;
else f = (b + c);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
На располагаљу је процесор код кога аритметичке, логичке и померачке инструкције имају формат: ОС reg, reg, reg/imm где је ОС код операције, одредишни операнд и први операнд маорају бити у регистру (reg), док други може бити или у регистру или непосредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дат одредишни регистар (reg), а другим извориште. Инструкција STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), а другим одредиште. A, B, C, D, E и F су глобалне променљиве које одговарају симболичким ознакама адреса меморијских локација у којиа се налазе операнди. Садржај меморијских локација означених адресама B, C, D и E треба да остане непромељен, садржај одговарајућих регистара је дозвољено мењати. На располагању стоји 8 регистара опште намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној јединици.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој С функцији која пореди првих n бајта низа str1 и низа str2:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int memcmp(const void *str1, const void *str2, int n);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Функција као резултат враћа лексикографски поредак ова два низа: вредност мању од 0 ако је str1 мањи од str2, вредност већу од 0 ако је str1 већи од str2 и вредност 0 ако су str1 и str2 једнаки. Формати инструкција и података су као у задатку 2. На располаганју стоје и сложене инструкције.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[15]&#039;&#039;&#039; У рачунарском систему се налази једноадресни процесор, меморија и периферије PER0 и PER1 са придруженим контролером са директним приступом меморији DMA. Све копонентерачунара су повезане системском магистралом са 16 битном адресном и 32 битном магистралом података. Адресирање је на нивоу 32 битних речи. Улазно/излазни адресни простор и меморијски простор су раздвојени. Адресерелевантних регистара су:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| PER0_CONTROL&lt;br /&gt;
| F000h&lt;br /&gt;
| DMA_PER0_CONTROL&lt;br /&gt;
| F010h&lt;br /&gt;
| PER1_CONTROL&lt;br /&gt;
| F100h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_STATUS&lt;br /&gt;
| F001h&lt;br /&gt;
| DMA_PER0_STATUS&lt;br /&gt;
| F011h&lt;br /&gt;
| PER1_STATUS&lt;br /&gt;
| F101h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_DATA&lt;br /&gt;
| F002h&lt;br /&gt;
| DMA_PER0_DATA&lt;br /&gt;
| F012h&lt;br /&gt;
| PER1_DATA&lt;br /&gt;
| F102h&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| DMA_PER0_ADDR&lt;br /&gt;
| F013h&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| DMA_PER0_CNT&lt;br /&gt;
| F014h&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
У управљачким регистрима бит 31 је Start којим се дозвољава почетак операције, бит 0 одређују тип преноса података (1 - улаз, 0 - излаз), бит 1 је Enable којим се дозвољава прекид, а у статусним регистрима бит 0 је Ready који сигнализира спремност контролера периферије. Бит 2 управљачког регистра DMA контролера задаје режим рада (0 - блоковски, 1 - циклус по циклус).&lt;br /&gt;
&lt;br /&gt;
Периферија PER0 шање низ A[i] дужине 50h података који се смештају у меморију почев од адресе 1000h. Подаци су целобројне величине које представљају датум кодиран тако да битови A[i]&amp;lt;small&amp;gt;4..0&amp;lt;/small&amp;gt; представљају дан, битови A[i]&amp;lt;small&amp;gt;8..5&amp;lt;/small&amp;gt; представљају месец, A[i]&amp;lt;small&amp;gt;19..9&amp;lt;/small&amp;gt; представљају годину. Након пријема података потребо је да се сваи елемент (датум) конвертује у текстуални облик и да се такав текст пошаље периферији PER1. За конвертовање датума представљен бројем у текстуални облик користити функцију void convert(int intDate, int* stringDate). Ова функција конвертује задати датум intDate у текстуални датум облика &amp;quot;yyyymmdd&amp;quot; и уписује га као резултат на меморијску локацију која је одређена параметром stringDate (сваки карактер је дужине 8 бита, па се користе само две узастопне адресе - прва адреса за yyyy и друга за mmdd). Слање текстуалног датума периферији PER1 треба реализовати слањем два податка: yyyy и mmdd, респективно. Програм треба да се изврши само једном.&lt;br /&gt;
&lt;br /&gt;
Написати главни програм, прекидну рутину DMA и функцију convert којима се обнавља описани пренос. Примање података са периферије PER0 реализовати коришћењем придруженог DMA контролера у блоковском режиму рада, а слање података на периферију PER1 испитивањем бита спремности. За резултат функције convert користити меморијски простор 100h и 101h.&lt;br /&gt;
&lt;br /&gt;
Процесор има регистар SP и BP. Стек расте према вишим адресама и указује на последњу заузету локацију. Регистар BP се може користити за базно адресирање са померајем. Функција локалне променљиве алоцира на стеку и није дозвољено коришћење глобалних променљивих унутар функције. Сматрати да је тип int ширине 32 бита. Карактери су дужине 8 бита и кодирају се ASCII8 таблицом, где је ASCII8(&#039;0&#039;) = 30h, ASCII8(&#039;1&#039;) = 31h итд. Дозвољено је коришћење инструкција DIV и MOD за рачунање целобројног дељења и рачунање остатка при дељењу.&lt;br /&gt;
&lt;br /&gt;
Дозвољено је користити додатне променљиве.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Наставити са копирањем одељака изнад уколико има још задатака. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&amp;lt;!-- Заменити са називом предмета --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mm190436d</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2022&amp;diff=4764</id>
		<title>Архитектура рачунара/Септембар 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2022&amp;diff=4764"/>
		<updated>2022-09-21T21:44:16Z</updated>

		<summary type="html">&lt;p&gt;Mm190436d: /* Поставка */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; У посматраном рачунарском систему процесор има 2 пара линија по којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 6 улазно/излазних уређаја које треба некако повезати помоћу та 2 пара линија на процесор и омогућити за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида.&lt;br /&gt;
а) Нацртати како тих 6 улазно/излазних уређаја треба повезати пооћу та 2 пара линија на процесор.&lt;br /&gt;
б) Објаснити како тих 6 улазно/излазних уређаја шаљу захтеве за прекид и добијају дозволе, и како се реализује скок на одговарајућу прекидну рутину.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; Написати оптималну секвецу инструкција неопходних за срачунавање израза:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int a, b, c, d, e, f;&lt;br /&gt;
...&lt;br /&gt;
a = (b + c);&lt;br /&gt;
if (a &amp;gt; 0) f = (d + e);&lt;br /&gt;
else f = (b + c);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
На располагаљу је процесор код кога аритметичке, логичке и померачке инструкције имају формат: ОС reg, reg, reg/imm где је ОС код операције, одредишни операнд и први операнд маорају бити у регистру (reg), док други може бити или у регистру или непосредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дат одредишни регистар (reg), а другим извориште. Инструкција STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), а другим одредиште. A, B, C, D, E и F су глобалне променљиве које одговарају симболичким ознакама адреса меморијских локација у којиа се налазе операнди. Садржај меморијских локација означених адресама B, C, D и E треба да остане непромељен, садржај одговарајућих регистара је дозвољено мењати. На располагању стоји 8 регистара опште намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној јединици.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој С функцији која пореди првих n бајта низа str1 и низа str2:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int memcmp(const void *str1, const void *str2, int n);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Функција као резултат враћа лексикографски поредак ова два низа: вредност мању од 0 ако је str1 мањи од str2, вредност већу од 0 ако је str1 већи од str2 и вредност 0 ако су str1 и str2 једнаки. Формати инструкција и података су као у задатку 2. На располаганју стоје и сложене инструкције.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[15]&#039;&#039;&#039; У рачунарском систему се налази једноадресни процесор, меморија и периферије PER0 и PER1 са придруженим контролером са директним приступом меморији DMA. Све копонентерачунара су повезане системском магистралом са 16 битном адресном и 32 битном магистралом података. Адресирање је на нивоу 32 битних речи. Улазно/излазни адресни простор и меморијски простор су раздвојени. Адресерелевантних регистара су:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| PER0_CONTROL&lt;br /&gt;
| F000h&lt;br /&gt;
| DMA_PER0_CONTROL&lt;br /&gt;
| F010h&lt;br /&gt;
| PER1_CONTROL&lt;br /&gt;
| F100h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_STATUS&lt;br /&gt;
| F001h&lt;br /&gt;
| DMA_PER0_STATUS&lt;br /&gt;
| F011h&lt;br /&gt;
| PER1_STATUS&lt;br /&gt;
| F101h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_DATA&lt;br /&gt;
| F002h&lt;br /&gt;
| DMA_PER0_DATA&lt;br /&gt;
| F012h&lt;br /&gt;
| PER1_DATA&lt;br /&gt;
| F102h&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| DMA_PER0_ADDR&lt;br /&gt;
| F013h&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| DMA_PER0_CNT&lt;br /&gt;
| F014h&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
У управљачким регистрима бит 31 је Start којим се дозвољава почетак операције, бит 0 одређују тип преноса података (1 - улаз, 0 - излаз), бит 1 је Enable којим се дозвољава прекид, а у статусним регистрима бит 0 је Ready који сигнализира спремност контролера периферије. Бит 2 управљачког регистра DMA контролера задаје режим рада (0 - блоковски, 1 - циклус по циклус).&lt;br /&gt;
&lt;br /&gt;
Периферија PER0 шање низ A[i] дужине 50h података који се смештају у меморију почев од адресе 1000h. Подаци су целобројне величине које представљају датум кодиран тако да битови A[i]&amp;lt;small&amp;gt;4..0&amp;lt;/small&amp;gt; представљају дан, битови A[i]&amp;lt;small&amp;gt;8..5&amp;lt;/small&amp;gt; представљају месец, A[i]&amp;lt;small&amp;gt;19..9&amp;lt;/small&amp;gt; представљају годину. Након пријема података потребо је да се сваи елемент (датум) конвертује у текстуални облик и да се такав текст пошаље периферији PER1. За конвертовање датума представљен бројем у текстуални облик користити функцију void convert(int intDate, int* stringDate). Ова функција конвертује задати датум intDate у текстуални датум облика &amp;quot;yyyymmdd&amp;quot; и уписује га као резултат на меморијску локацију која је одређена параметром stringDate (сваки карактер је дужине 8 бита, па се користе само две узастопне адресе - прва адреса за yyyy и друга за mmdd). Слање текстуалног датума периферији PER1 треба реализовати слањем два податка: yyyy и mmdd, респективно. Програм треба да се изврши само једном.&lt;br /&gt;
&lt;br /&gt;
Написати главни програм, прекидну рутину DMA и функцију convert којима се обнавља описани пренос. Примање података са периферије PER0 реализовати коришћењем придруженог DMA контролера у блоковском режиму рада, а слање података на периферију PER1 испитивањем бита спремности. За резултат функције convert користити меморијски простор 100h и 101h.&lt;br /&gt;
&lt;br /&gt;
Процесор има регистар SP и BP. Стек расте према вишим адресама и указује на последњу заузету локацију. Регистар BP се може користити за базно адресирање са померајем. Функција локалне променљиве алоцира на стеку и није дозвољено коришћење глобалних променљивих унутар функције. Сматрати да је тип int ширине 32 бита. Карактери су дужине 8 бита и кодирају се ASCII8 таблицом, где је ASCII8(&#039;0&#039;) = 30h, ASCII8(&#039;1&#039;) = 31h итд. Дозвољено је коришћење инструкција DIV и MOD за рачунање целобројног дељења и рачунање остатка при дељењу.&lt;br /&gt;
&lt;br /&gt;
Дозвољено је користити додатне променљиве.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Наставити са копирањем одељака изнад уколико има још задатака. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&amp;lt;!-- Заменити са називом предмета --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mm190436d</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2022&amp;diff=4763</id>
		<title>Архитектура рачунара/Септембар 2022</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D1%80%D0%B0%D1%87%D1%83%D0%BD%D0%B0%D1%80%D0%B0/%D0%A1%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B1%D0%B0%D1%80_2022&amp;diff=4763"/>
		<updated>2022-09-21T21:43:13Z</updated>

		<summary type="html">&lt;p&gt;Mm190436d: Нова страница: {{tocright}} {{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки з…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; У посматраном рачунарском систему процесор има 2 пара линија по којима улазно/излазни уређаји могу процесору да шаљу захтеве за прекид и од процесора добијају сигнале потврда. У датом систему има 6 улазно/излазних уређаја које треба некако повезати помоћу та 2 пара линија на процесор и омогућити за сваки улазно/излазни уређај скок на одговарајућу прекидну рутину векторисаним механизмом прекида.&lt;br /&gt;
а) Нацртати како тих 6 улазно/излазних уређаја треба повезати пооћу та 2 пара линија на процесор.&lt;br /&gt;
б) Објаснити како тих 6 улазно/излазних уређаја шаљу захтеве за прекид и добијају дозволе, и како се реализује скок на одговарајућу прекидну рутину.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; Написати оптималну секвецу инструкција неопходних за срачунавање израза:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int a, b, c, d, e, f;&lt;br /&gt;
...&lt;br /&gt;
a = (b + c);&lt;br /&gt;
if (a &amp;gt; 0) f = (d + e);&lt;br /&gt;
else f = (b + c);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
На располагаљу је процесор код кога аритметичке, логичке и померачке инструкције имају формат: ОС reg, reg, reg/imm где је ОС код операције, одредишни операнд и први операнд маорају бити у регистру (reg), док други може бити или у регистру или непосредно (reg/imm). Инструкција LOAD има формат: LOAD reg, mem где је првим операндом дат одредишни регистар (reg), а другим извориште. Инструкција STORE има формат: STORE reg, mem где је првим операндом дат изворишни регистар (reg), а другим одредиште. A, B, C, D, E и F су глобалне променљиве које одговарају симболичким ознакама адреса меморијских локација у којиа се налазе операнди. Садржај меморијских локација означених адресама B, C, D и E треба да остане непромељен, садржај одговарајућих регистара је дозвољено мењати. На располагању стоји 8 регистара опште намене. Претпоставити да су сви подаци и адресе исте дужине која је једнака адресибилној јединици.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[5]&#039;&#039;&#039; Написати оптималну секвенцу инструкција која одговара следећој стандардној библиотечкој С функцији која пореди првих n бајта низа str1 и низа str2:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int memcmp(const void *str1, const void *str2, int n);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Функција као резултат враћа лексикографски поредак ова два низа: вредност мању од 0 ако је str1 мањи од str2, вредност већу од 0 ако је str1 већи од str2 и вредност 0 ако су str1 и str2 једнаки. Формати инструкција и података су као у задатку 2. На располаганју стоје и сложене инструкције.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 4. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&#039;&#039;&#039;[15]&#039;&#039;&#039; У рачунарском системз се налази једноадресни процесор, меморија и периферије PER0 и PER1 са придруженим контролером са директним приступом меморији DMA. Све копонентерачунара су повезане системском магистралом са 16 битном адресном и 32 битном магистралом података. Адресирање је на нивоу 32 битних речи. Улазно/излазни адресни простор и меморијски простор су раздвојени. Адресерелевантних регистара су:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| PER0_CONTROL&lt;br /&gt;
| F000h&lt;br /&gt;
| DMA_PER0_CONTROL&lt;br /&gt;
| F010h&lt;br /&gt;
| PER1_CONTROL&lt;br /&gt;
| F100h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_STATUS&lt;br /&gt;
| F001h&lt;br /&gt;
| DMA_PER0_STATUS&lt;br /&gt;
| F011h&lt;br /&gt;
| PER1_STATUS&lt;br /&gt;
| F101h&lt;br /&gt;
|-&lt;br /&gt;
| PER0_DATA&lt;br /&gt;
| F002h&lt;br /&gt;
| DMA_PER0_DATA&lt;br /&gt;
| F012h&lt;br /&gt;
| PER1_DATA&lt;br /&gt;
| F102h&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| DMA_PER0_ADDR&lt;br /&gt;
| F013h&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| DMA_PER0_CNT&lt;br /&gt;
| F014h&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
У управљачким регистрима бит 31 је Start којим се дозвољава почетак операције, бит 0 одређују тип преноса података (1 - улаз, 0 - излаз), бит 1 је Enable којим се дозвољава прекид, а у статусним регистрима бит 0 је Ready који сигнализира спремност контролера периферије. Бит 2 управљачког регистра DMA контролера задаје режим рада (0 - блоковски, 1 - циклус по циклус).&lt;br /&gt;
&lt;br /&gt;
Периферија PER0 шање низ A[i] дужине 50h података који се смештају у меморију почев од адресе 1000h. Подаци су целобројне величине које представљају датум кодиран тако да битови A[i]&amp;lt;small&amp;gt;4..0&amp;lt;/small&amp;gt; представљају дан, битови A[i]&amp;lt;small&amp;gt;8..5&amp;lt;/small&amp;gt; представљају месец, A[i]&amp;lt;small&amp;gt;19..9&amp;lt;/small&amp;gt; представљају годину. Након пријема података потребо је да се сваи елемент (датум) конвертује у текстуални облик и да се такав текст пошаље периферији PER1. За конвертовање датума представљен бројем у текстуални облик користити функцију void convert(int intDate, int* stringDate). Ова функција конвертује задати датум intDate у текстуални датум облика &amp;quot;yyyymmdd&amp;quot; и уписује га као резултат на меморијску локацију која је одређена параметром stringDate (сваки карактер је дужине 8 бита, па се користе само две узастопне адресе - прва адреса за yyyy и друга за mmdd). Слање текстуалног датума периферији PER1 треба реализовати слањем два податка: yyyy и mmdd, респективно. Програм треба да се изврши само једном.&lt;br /&gt;
&lt;br /&gt;
Написати главни програм, прекидну рутину DMA и функцију convert којима се обнавља описани пренос. Примање података са периферије PER0 реализовати коришћењем придруженог DMA контролера у блоковском режиму рада, а слање података на периферију PER1 испитивањем бита спремности. За резултат функције convert користити меморијски простор 100h и 101h.&lt;br /&gt;
&lt;br /&gt;
Процесор има регистар SP и BP. Стек расте према вишим адресама и указује на последњу заузету локацију. Регистар BP се може користити за базно адресирање са померајем. Функција локалне променљиве алоцира на стеку и није дозвољено коришћење глобалних променљивих унутар функције. Сматрати да је тип int ширине 32 бита. Карактери су дужине 8 бита и кодирају се ASCII8 таблицом, где је ASCII8(&#039;0&#039;) = 30h, ASCII8(&#039;1&#039;) = 31h итд. Дозвољено је коришћење инструкција DIV и MOD за рачунање целобројног дељења и рачунање остатка при дељењу.&lt;br /&gt;
&lt;br /&gt;
Дозвољено је користити додатне променљиве.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Наставити са копирањем одељака изнад уколико има још задатака. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:Архитектура рачунара]]&amp;lt;!-- Заменити са називом предмета --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mm190436d</name></author>
	</entry>
</feed>