<?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=Visnjicaleksa</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=Visnjicaleksa"/>
	<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/Visnjicaleksa"/>
	<updated>2026-06-04T03:15:28Z</updated>
	<subtitle>Кориснички доприноси</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A2_%D0%9E%D0%BA%D1%82%D0%BE%D0%B1%D0%B0%D1%80-1_2025&amp;diff=8120</id>
		<title>Базе података 2/К2 Октобар-1 2025</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%91%D0%B0%D0%B7%D0%B5_%D0%BF%D0%BE%D0%B4%D0%B0%D1%82%D0%B0%D0%BA%D0%B0_2/%D0%9A2_%D0%9E%D0%BA%D1%82%D0%BE%D0%B1%D0%B0%D1%80-1_2025&amp;diff=8120"/>
		<updated>2025-10-17T22:35:59Z</updated>

		<summary type="html">&lt;p&gt;Visnjicaleksa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{нерешено}}&lt;br /&gt;
&#039;&#039;&#039;Други колоквијум у року Октобар-1 2025. године&#039;&#039;&#039; одржан је 12. октобра. Трајао је 60 минута и била је доступна литература са предавања.&lt;br /&gt;
&lt;br /&gt;
== Поставка ==&lt;br /&gt;
За део базе података који обухвата четири табеле одредити најбољи план извршавања и проценити цену за дати упит. За сваку операцију из плана навести како се израчунава и по којој цени.&lt;br /&gt;
 Odeljenje (&amp;lt;u&amp;gt;IDOde&amp;lt;/u&amp;gt;, Opis)&lt;br /&gt;
 Zaposleni (&amp;lt;u&amp;gt;IDZap&amp;lt;/u&amp;gt;, Ime, IDOde)&lt;br /&gt;
 Projekat (&amp;lt;u&amp;gt;IDPro&amp;lt;/u&amp;gt;, Naziv)&lt;br /&gt;
 Radi (&amp;lt;u&amp;gt;IDZar&amp;lt;/u&amp;gt;,&amp;lt;u&amp;gt;IDPro&amp;lt;/u&amp;gt;, Procenat)&lt;br /&gt;
Упит:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT  R.Procenat, R.IDPro, Z.Ime&lt;br /&gt;
FROM Radi R, Zaposleni Z&lt;br /&gt;
WHERE Z.IDZap = R.IDZap AND Z.Ime = &#039;Petar&#039; AND R.IDPro = 5001&lt;br /&gt;
ORDER BY R.Procenat&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При томе је познато да:&lt;br /&gt;
* табела &amp;lt;code&amp;gt;Zaposleni&amp;lt;/code&amp;gt; има 10000 редова, табела &amp;lt;code&amp;gt;Radi&amp;lt;/code&amp;gt; 20000 редова,&lt;br /&gt;
* у табелама &amp;lt;code&amp;gt;Zaposleni&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;Radi&amp;lt;/code&amp;gt; има по 40 редова по страници,&lt;br /&gt;
* бафер је величине 30 страница,&lt;br /&gt;
* табела &amp;lt;code&amp;gt;Projekat&amp;lt;/code&amp;gt; има 50 редова,&lt;br /&gt;
* за атрибут &amp;lt;code&amp;gt;Ime&amp;lt;/code&amp;gt; постоји 2000 различитих вредности,&lt;br /&gt;
* домен атрибута &amp;lt;code&amp;gt;Procenat&amp;lt;/code&amp;gt; се састоји од целобројних вредности у опсегу од 1 до 100,&lt;br /&gt;
* у табели &amp;lt;code&amp;gt;Zaposleni&amp;lt;/code&amp;gt; постоји &#039;&#039;unclustered B+ index&#039;&#039; од 2 нивоа по атрибуту &amp;lt;code&amp;gt;Ime&amp;lt;/code&amp;gt;, и&lt;br /&gt;
* у табели &amp;lt;code&amp;gt;Radi&amp;lt;/code&amp;gt; постоји &#039;&#039;unclustered B+ index&#039;&#039; од 2 нивоа по атрибуту &amp;lt;code&amp;gt;IDZap&amp;lt;/code&amp;gt;, и &#039;&#039;clustered B+ index&#039;&#039; од 2 нивоа по пару атрибута &amp;lt;code&amp;gt;(IDPro,IDZap)&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Индекси се не чувају у меморији.&lt;br /&gt;
&lt;br /&gt;
== Решење ==&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Базе података 2]]&lt;br /&gt;
[[Категорија:Рокови]]&lt;/div&gt;</summary>
		<author><name>Visnjicaleksa</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7299</id>
		<title>АОР2/Фебруар 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7299"/>
		<updated>2024-02-11T15:29:26Z</updated>

		<summary type="html">&lt;p&gt;Visnjicaleksa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. (5)&#039;&#039;&#039; Описати технику оптимизације векторских инструкција која се заснива на дохватању изабраних елемената &#039;&#039;&#039;(Scatter-gather)&#039;&#039;&#039; приликом приступа подацима. Дати пример инструкција процесора које омогућавају ову технику и пример програма ког кога се јасно види предност коришћења ове технике.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. (5)&#039;&#039;&#039; Дата је функција која враћа најмањи позитиван елемент низа &#039;&#039;&#039;а&#039;&#039;&#039;. Елементи низа &#039;&#039;&#039;а&#039;&#039;&#039; су означени реални бројеви дужине 64 бита. Уколико у низу а не постоји ниједан позитиван број, резултат функције треба да буде 0. Потребно је преправити код функције тако да има исти резултат извршавања коришћењем векторских инструкција које су дате у прилогу испита.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;double&#039;&#039;&#039; minPositive(&#039;&#039;&#039;double[]&#039;&#039;&#039; a, &#039;&#039;&#039;unsigned int&#039;&#039;&#039; length)&lt;br /&gt;
 &#039;&#039;&#039;{&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(length==0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
    &#039;&#039;&#039;double&#039;&#039;&#039; min = a[0];&lt;br /&gt;
    &#039;&#039;&#039;for&#039;&#039;&#039;(&#039;&#039;&#039;int&#039;&#039;&#039; i=0; i&amp;lt;length; i++)&lt;br /&gt;
        &#039;&#039;&#039;if&#039;&#039;&#039;(a[i]&amp;gt;0 &amp;amp;&amp;amp; a[i]&amp;lt;min)&lt;br /&gt;
             min = a[i];&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(min&amp;lt;0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. (5)&#039;&#039;&#039; Код процесора који користе предвиђање скока и спекулативно извршавање могу се јавити одређене ранјивости хардверског система. Описати како изгледа напад типа &#039;&#039;Meltdown&#039;&#039; који користи технику Изваци и учитај (&#039;&#039;Flush and Reload&#039;&#039;) и у којој случајевима се овај напад може применити.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.(5)&#039;&#039;&#039; Разматра се рачунарски систем у коме се извршавање одређене инструкције одвија у 6 фаза помоћу измењеног процесора са проточном обрадом (слика 4.1). У процесор са стандардном проточном обрадом је додата као други степен јединица PD (&#039;&#039;Instruction PreDecode&#039;&#039;) који обавља трансформацију инструкција задате архитектуре у инструкције RISC архитектуре. Сматрати да приступ меморији траје два сигнала такта. Архитектура процесора дефинише 16 регистара опште намене. Адресе и величине су 16 бита.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
AOR2 organizacija PreDecode.svg|Слика 4.1 - организација процесора&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а) Написати секвенцу инструкција (микроинструкција) циљне RISC архитектуре у коју се обавља пресликавање за део инструкцијског сета из табеле 4.1. извршна CISC архитектуре. Уколико је потребно проширити број регистара опште намене у регистарском фајлу онда треба за сваки додат регистар написати чему служи. Регистар R13 представља указивач на врх стека (SP) и показује на последњу слободну локацију. Стек расте према вишим адресама. Регистар R14 представља указивач на базну адресу стека (BP), регистар R15&amp;lt;ref name=&amp;quot;greska&amp;quot;&amp;gt;Напомена: У поставци задатка је била грешка, речено је било да регистар R13 представља PSW, па је узета претпоставка да је то R15.&amp;lt;/ref&amp;gt; представља статусни регистар PSW. Регистар R0 се користи као акумулатор. У табели 4.1 акције нису оптимизовано написане, већ описно. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Тебла 4.1. - део инструкцијског сета процесора&lt;br /&gt;
|-&lt;br /&gt;
!Асемблерска инструкција !! Акција !! Микро инструкције&lt;br /&gt;
|-&lt;br /&gt;
| SHL Rx || Rx&amp;lt;small&amp;gt;15..0&amp;lt;/small&amp;gt; = Rx&amp;lt;small&amp;gt;14..0&amp;lt;/small&amp;gt;.0 || &lt;br /&gt;
|-&lt;br /&gt;
| LEAVE || SP=BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP PC|| &lt;br /&gt;
|-&lt;br /&gt;
| RTI || PSW=MEM[SP--]&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[SP--] || &lt;br /&gt;
|-&lt;br /&gt;
| SWP(Rx) || MEM[Rx] &amp;lt;big&amp;gt;↔&amp;lt;/big&amp;gt; ACC || &lt;br /&gt;
|-&lt;br /&gt;
| INS entry || PUSH PC&amp;lt;br&amp;gt;&lt;br /&gt;
PUSH PSW&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[IVTP+entry] || &lt;br /&gt;
|-&lt;br /&gt;
| SUB (adr) || ACC=ACC-MEM[MEM[adr]] || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
б) Нацртати формат инструкција циљне РИСЦ архитектуре (на основу инструкција из табеле 4.1)&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
==== Подсетник ====&lt;br /&gt;
У подсетнику је била дата документација за следеће инструкције:&lt;br /&gt;
&lt;br /&gt;
 _mm256_loadu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_storeu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_max_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_min_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_setzero_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_add_pd&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Документација за ове инструкције може се наћи са званичног Интеловог [https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=6633,4687,2629,5149,4124,2629,491,823,337,823&amp;amp;techs=MMX,SSE_ALL,SVML&amp;amp;avxnewtechs=AVX,FMA,AVX2 сајта] и овде неће бити поновљена.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АОР2 Фебруар 2024]]&lt;/div&gt;</summary>
		<author><name>Visnjicaleksa</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7298</id>
		<title>АОР2 Фебруар 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7298"/>
		<updated>2024-02-11T15:22:09Z</updated>

		<summary type="html">&lt;p&gt;Visnjicaleksa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. (5)&#039;&#039;&#039; Описати технику оптимизације векторских инструкција која се заснива на дохватању изабраних елемената &#039;&#039;&#039;(Scatter-gather)&#039;&#039;&#039; приликом приступа подацима. Дати пример инструкција процесора које омогућавају ову технику и пример програма ког кога се јасно види предност коришћења ове технике.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. (5)&#039;&#039;&#039; Дата је функција која враћа најмањи позитиван елемент низа &#039;&#039;&#039;а&#039;&#039;&#039;. Елементи низа &#039;&#039;&#039;а&#039;&#039;&#039; су означени реални бројеви дужине 64 бита. Уколико у низу а не постоји ниједан позитиван број, резултат функције треба да буде 0. Потребно је преправити код функције тако да има исти резултат извршавања коришћењем векторских инструкција које су дате у прилогу испита.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;double&#039;&#039;&#039; minPositive(&#039;&#039;&#039;double[]&#039;&#039;&#039; a, &#039;&#039;&#039;unsigned int&#039;&#039;&#039; length)&lt;br /&gt;
 &#039;&#039;&#039;{&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(length==0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
    &#039;&#039;&#039;double&#039;&#039;&#039; min = a[0];&lt;br /&gt;
    &#039;&#039;&#039;for&#039;&#039;&#039;(&#039;&#039;&#039;int&#039;&#039;&#039; i=0; i&amp;lt;length; i++)&lt;br /&gt;
        &#039;&#039;&#039;if&#039;&#039;&#039;(a[i]&amp;gt;0 &amp;amp;&amp;amp; a[i]&amp;lt;min)&lt;br /&gt;
             min = a[i];&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(min&amp;lt;0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. (5)&#039;&#039;&#039; Код процесора који користе предвиђање скока и спекулативно извршавање могу се јавити одређене ранјивости хардверског система. Описати како изгледа напад типа &#039;&#039;Meltdown&#039;&#039; који користи технику Изваци и учитај (&#039;&#039;Flush and Reload&#039;&#039;) и у којој случајевима се овај напад може применити.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.(5)&#039;&#039;&#039; Разматра се рачунарски систем у коме се извршавање одређене инструкције одвија у 6 фаза помоћу измењеног процесора са проточном обрадом (слика 4.1). У процесор са стандардном проточном обрадом је додата као други степен јединица PD (&#039;&#039;Instruction PreDecode&#039;&#039;) који обавља трансформацију инструкција задате архитектуре у инструкције RISC архитектуре. Сматрати да приступ меморији траје два сигнала такта. Архитектура процесора дефинише 16 регистара опште намене. Адресе и величине су 16 бита.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
AOR2 organizacija PreDecode.svg|Слика 4.1 - организација процесора&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а) Написати секвенцу инструкција (микроинструкција) циљне RISC архитектуре у коју се обавља пресликавање за део инструкцијског сета из табеле 4.1. извршна CISC архитектуре. Уколико је потребно проширити број регистара опште намене у регистарском фајлу онда треба за сваки додат регистар написати чему служи. Регистар R13 представља указивач на врх стека (SP) и показује на последњу слободну локацију. Стек расте према вишим адресама. Регистар R14 представља указивач на базну адресу стека (BP), регистар R15&amp;lt;ref name=&amp;quot;greska&amp;quot;&amp;gt;Напомена: У поставци задатка је била грешка, речено је било да регистар R13 представља PSW, па је узета претпоставка да је то R15.&amp;lt;/ref&amp;gt; представља статусни регистар PSW. Регистар R0 се користи као акумулатор. У табели 4.1 акције нису оптимизовано написане, већ описно. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Тебла 4.1. - део инструкцијског сета процесора&lt;br /&gt;
|-&lt;br /&gt;
!Асемблерска инструкција !! Акција !! Микро инструкције&lt;br /&gt;
|-&lt;br /&gt;
| SHL Rx || Rx&amp;lt;small&amp;gt;15..0&amp;lt;/small&amp;gt; = Rx&amp;lt;small&amp;gt;14..0&amp;lt;/small&amp;gt;.0 || &lt;br /&gt;
|-&lt;br /&gt;
| LEAVE || SP=BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP PC|| &lt;br /&gt;
|-&lt;br /&gt;
| RTI || PSW=MEM[SP--]&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[SP--] || &lt;br /&gt;
|-&lt;br /&gt;
| SWP(Rx) || MEM[Rx] &amp;lt;big&amp;gt;↔&amp;lt;/big&amp;gt; ACC || &lt;br /&gt;
|-&lt;br /&gt;
| INS entry || PUSH PC&amp;lt;br&amp;gt;&lt;br /&gt;
PUSH PSW&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[IVTP+entry] || &lt;br /&gt;
|-&lt;br /&gt;
| SUB (adr) || ACC=ACC-MEM[MEM[adr]] || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
б) Нацртати формат инструкција циљне RISC архитектуре (на основу инструкција из табеле 4.1)&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
==== Подсетник ====&lt;br /&gt;
У подсетнику је била дата документација за следеће инструкције:&lt;br /&gt;
&lt;br /&gt;
 _mm256_loadu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_storeu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_max_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_min_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_setzero_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_add_pd&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Документација за ове инструкције може се наћи са званичног Интеловог [https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=6633,4687,2629,5149,4124,2629,491,823,337,823&amp;amp;techs=MMX,SSE_ALL,SVML&amp;amp;avxnewtechs=AVX,FMA,AVX2 сајта] и овде неће бити поновљена.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;greska /&amp;gt;&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АОР2]]&lt;/div&gt;</summary>
		<author><name>Visnjicaleksa</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7297</id>
		<title>АОР2 Фебруар 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7297"/>
		<updated>2024-02-11T15:19:10Z</updated>

		<summary type="html">&lt;p&gt;Visnjicaleksa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. (5)&#039;&#039;&#039; Описати технику оптимизације векторских инструкција која се заснива на дохватању изабраних елемената &#039;&#039;&#039;(Scatter-gather)&#039;&#039;&#039; приликом приступа подацима. Дати пример инструкција процесора које омогућавају ову технику и пример програма ког кога се јасно види предност коришћења ове технике.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. (5)&#039;&#039;&#039; Дата је функција која враћа најмањи позитиван елемент низа &#039;&#039;&#039;а&#039;&#039;&#039;. Елементи низа &#039;&#039;&#039;а&#039;&#039;&#039; су означени реални бројеви дужине 64 бита. Уколико у низу а не постоји ниједан позитиван број, резултат функције треба да буде 0. Потребно је преправити код функције тако да има исти резултат извршавања коришћењем векторских инструкција које су дате у прилогу испита.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;double&#039;&#039;&#039; minPositive(&#039;&#039;&#039;double[]&#039;&#039;&#039; a, &#039;&#039;&#039;unsigned int&#039;&#039;&#039; length)&lt;br /&gt;
 &#039;&#039;&#039;{&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(length==0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
    &#039;&#039;&#039;double&#039;&#039;&#039; min = a[0];&lt;br /&gt;
    &#039;&#039;&#039;for&#039;&#039;&#039;(&#039;&#039;&#039;int&#039;&#039;&#039; i=0; i&amp;lt;length; i++)&lt;br /&gt;
        &#039;&#039;&#039;if&#039;&#039;&#039;(a[i]&amp;gt;0 &amp;amp;&amp;amp; a[i]&amp;lt;min)&lt;br /&gt;
             min = a[i];&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(min&amp;lt;0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. (5)&#039;&#039;&#039; Код процесора који користе предвиђање скока и спекулативно извршавање могу се јавити одређене ранјивости хардверског система. Описати како изгледа напад типа &#039;&#039;Meltdown&#039;&#039; који користи технику Изваци и учитај (&#039;&#039;Flush and Reload&#039;&#039;) и у којој случајевима се овај напад може применити.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.(5)&#039;&#039;&#039; Разматра се рачунарски систем у коме се извршавање одређене инструкције одвија у 6 фаза помоћу измењеног процесора са проточном обрадом (слика 4.1). У процесор са стандардном проточном обрадом је додата као други степен јединица PD (&#039;&#039;Instruction PreDecode&#039;&#039;) који обавља трансформацију инструкција задате архитектуре у инструкције RISC архитектуре. Сматрати да приступ меморији траје два сигнала такта. Архитектура процесора дефинише 16 регистара опште намене. Адресе и величине су 16 бита.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
AOR2 organizacija PreDecode.svg|Слика 4.1 - организација процесора&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а) Написати секвенцу инструкција (микроинструкција) циљне RISC архитектуре у коју се обавља пресликавање за део инструкцијског сета из табеле 4.1. извршна CISC архитектуре. Уколико је потребно проширити број регистара опште намене у регистарском фајлу онда треба за сваки додат регистар написати чему служи. Регистар R13 представља указивач на врх стека (SP) и показује на последњу слободну локацију. Стек расте према вишим адресама. Регистар R14 представља указивач на базну адресу стека (BP), регистар R15&amp;lt;ref name=&amp;quot;greska&amp;quot;&amp;gt;Напомена: У поставци задатка је била грешка, речено је било да регистар R13 представља PSW, па је узета претпоставка да је то R15.&amp;lt;/ref&amp;gt; представља статусни регистар PSW. Регистар R0 се користи као акумулатор. У табели 4.1 акције нису оптимизовано написане, већ описно. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Тебла 4.1. - део инструкцијског сета процесора&lt;br /&gt;
|-&lt;br /&gt;
!Асемблерска инструкција !! Акција !! Микро инструкције&lt;br /&gt;
|-&lt;br /&gt;
| SHL Rx || Rx&amp;lt;small&amp;gt;15..0&amp;lt;/small&amp;gt; = Rx&amp;lt;small&amp;gt;14..0&amp;lt;/small&amp;gt;.0 || &lt;br /&gt;
|-&lt;br /&gt;
| LEAVE || SP=BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP PC|| &lt;br /&gt;
|-&lt;br /&gt;
| RTI || PSW=MEM[SP--]&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[SP--] || &lt;br /&gt;
|-&lt;br /&gt;
| SWP(Rx) || MEM[Rx] &amp;lt;big&amp;gt;↔&amp;lt;/big&amp;gt; ACC || &lt;br /&gt;
|-&lt;br /&gt;
| INS entry || PUSH PC&amp;lt;br&amp;gt;&lt;br /&gt;
PUSH PSW&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[IVTP+entry] || &lt;br /&gt;
|-&lt;br /&gt;
| SUB (adr) || ACC=ACC-MEM[MEM[adr]] || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
б) Нацртати формат инструкција циљне RISC архитектуре (на основу инструкција из табеле 4.1)&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
==== Подсетник ====&lt;br /&gt;
У подсетнику је била дата документација за следеће инструкције:&lt;br /&gt;
&lt;br /&gt;
 _mm256_loadu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_storeu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_max_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_min_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_setzero_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_add_pd&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Документација за ове инструкције може се наћи са званичног Интеловог [https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=6633,4687,2629,5149,4124,2629,491,823,337,823&amp;amp;techs=MMX,SSE_ALL,SVML&amp;amp;avxnewtechs=AVX,FMA,AVX2 сајта] и овде неће бити поновљена.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;greska /&amp;gt;&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АОР2 Фебруар 2024]]&lt;/div&gt;</summary>
		<author><name>Visnjicaleksa</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7296</id>
		<title>АОР2 Фебруар 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7296"/>
		<updated>2024-02-11T15:18:15Z</updated>

		<summary type="html">&lt;p&gt;Visnjicaleksa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. (5)&#039;&#039;&#039; Описати технику оптимизације векторских инструкција која се заснива на дохватању изабраних елемената &#039;&#039;&#039;(Scatter-gather)&#039;&#039;&#039; приликом приступа подацима. Дати пример инструкција процесора које омогућавају ову технику и пример програма ког кога се јасно види предност коришћења ове технике.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. (5)&#039;&#039;&#039; Дата је функција која враћа најмањи позитиван елемент низа &#039;&#039;&#039;а&#039;&#039;&#039;. Елементи низа &#039;&#039;&#039;а&#039;&#039;&#039; су означени реални бројеви дужине 64 бита. Уколико у низу а не постоји ниједан позитиван број, резултат функције треба да буде 0. Потребно је преправити код функције тако да има исти резултат извршавања коришћењем векторских инструкција које су дате у прилогу испита.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;double&#039;&#039;&#039; minPositive(&#039;&#039;&#039;double[]&#039;&#039;&#039; a, &#039;&#039;&#039;unsigned int&#039;&#039;&#039; length)&lt;br /&gt;
 &#039;&#039;&#039;{&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(length==0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
    &#039;&#039;&#039;double&#039;&#039;&#039; min = a[0];&lt;br /&gt;
    &#039;&#039;&#039;for&#039;&#039;&#039;(&#039;&#039;&#039;int&#039;&#039;&#039; i=0; i&amp;lt;length; i++)&lt;br /&gt;
        &#039;&#039;&#039;if&#039;&#039;&#039;(a[i]&amp;gt;0 &amp;amp;&amp;amp; a[i]&amp;lt;min)&lt;br /&gt;
             min = a[i];&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(min&amp;lt;0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. (5)&#039;&#039;&#039; Код процесора који користе предвиђање скока и спекулативно извршавање могу се јавити одређене ранјивости хардверског система. Описати како изгледа напад типа &#039;&#039;Meltdown&#039;&#039; који користи технику Изваци и учитај (&#039;&#039;Flush and Reload&#039;&#039;) и у којој случајевима се овај напад може применити.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.(5)&#039;&#039;&#039; Разматра се рачунарски систем у коме се извршавање одређене инструкције одвија у 6 фаза помоћу измењеног процесора са проточном обрадом (слика 4.1). У процесор са стандардном проточном обрадом је додата као други степен јединица PD (&#039;&#039;Instruction PreDecode&#039;&#039;) који обавља трансформацију инструкција задате архитектуре у инструкције RISC архитектуре. Сматрати да приступ меморији траје два сигнала такта. Архитектура процесора дефинише 16 регистара опште намене. Адресе и величине су 16 бита.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
AOR2 organizacija PreDecode.svg|Слика 4.1 - организација процесора&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а) Написати секвенцу инструкција (микроинструкција) циљне RISC архитектуре у коју се обавља пресликавање за део инструкцијског сета из табеле 4.1. извршна CISC архитектуре. Уколико је потребно проширити број регистара опште намене у регистарском фајлу онда треба за сваки додат регистар написати чему служи. Регистар R13 представља указивач на врх стека (SP) и показује на последњу слободну локацију. Стек расте према вишим адресама. Регистар R14 представља указивач на базну адресу стека (BP), регистар R15&amp;lt;ref name=&amp;quot;greska&amp;quot;&amp;gt;Напомена: У поставци задатка је била грешка, речено је било да регистар R13 представља PSW, па сам узео претпоставку да је то R15.&amp;lt;/ref&amp;gt; представља статусни регистар PSW. Регистар R0 се користи као акумулатор. У табели 4.1 акције нису оптимизовано написане, већ описно. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Тебла 4.1. - део инструкцијског сета процесора&lt;br /&gt;
|-&lt;br /&gt;
!Асемблерска инструкција !! Акција !! Микро инструкције&lt;br /&gt;
|-&lt;br /&gt;
| SHL Rx || Rx&amp;lt;small&amp;gt;15..0&amp;lt;/small&amp;gt; = Rx&amp;lt;small&amp;gt;14..0&amp;lt;/small&amp;gt;.0 || &lt;br /&gt;
|-&lt;br /&gt;
| LEAVE || SP=BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP PC|| &lt;br /&gt;
|-&lt;br /&gt;
| RTI || PSW=MEM[SP--]&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[SP--] || &lt;br /&gt;
|-&lt;br /&gt;
| SWP(Rx) || MEM[Rx] &amp;lt;big&amp;gt;↔&amp;lt;/big&amp;gt; ACC || &lt;br /&gt;
|-&lt;br /&gt;
| INS entry || PUSH PC&amp;lt;br&amp;gt;&lt;br /&gt;
PUSH PSW&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[IVTP+entry] || &lt;br /&gt;
|-&lt;br /&gt;
| SUB (adr) || ACC=ACC-MEM[MEM[adr]] || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
б) Нацртати формат инструкција циљне RISC архитектуре (на основу инструкција из табеле 4.1)&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
==== Подсетник ====&lt;br /&gt;
У подсетнику је била дата документација за следеће инструкције:&lt;br /&gt;
&lt;br /&gt;
 _mm256_loadu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_storeu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_max_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_min_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_setzero_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_add_pd&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Документација за ове инструкције може се наћи са званичног Интеловог [https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=6633,4687,2629,5149,4124,2629,491,823,337,823&amp;amp;techs=MMX,SSE_ALL,SVML&amp;amp;avxnewtechs=AVX,FMA,AVX2 сајта] и овде неће бити поновљена.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;greska /&amp;gt;&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АОР2 Фебруар 2024]]&lt;/div&gt;</summary>
		<author><name>Visnjicaleksa</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7295</id>
		<title>АОР2 Фебруар 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7295"/>
		<updated>2024-02-11T15:17:23Z</updated>

		<summary type="html">&lt;p&gt;Visnjicaleksa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. (5)&#039;&#039;&#039; Описати технику оптимизације векторских инструкција која се заснива на дохватању изабраних елемената &#039;&#039;&#039;(Scatter-gather)&#039;&#039;&#039; приликом приступа подацима. Дати пример инструкција процесора које омогућавају ову технику и пример програма ког кога се јасно види предност коришћења ове технике.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. (5)&#039;&#039;&#039; Дата је функција која враћа најмањи позитиван елемент низа &#039;&#039;&#039;а&#039;&#039;&#039;. Елементи низа &#039;&#039;&#039;а&#039;&#039;&#039; су означени реални бројеви дужине 64 бита. Уколико у низу а не постоји ниједан позитиван број, резултат функције треба да буде 0. Потребно је преправити код функције тако да има исти резултат извршавања коришћењем векторских инструкција које су дате у прилогу испита.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;double&#039;&#039;&#039; minPositive(&#039;&#039;&#039;double[]&#039;&#039;&#039; a, &#039;&#039;&#039;unsigned int&#039;&#039;&#039; length)&lt;br /&gt;
 &#039;&#039;&#039;{&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(length==0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
    &#039;&#039;&#039;double&#039;&#039;&#039; min = a[0];&lt;br /&gt;
    &#039;&#039;&#039;for&#039;&#039;&#039;(&#039;&#039;&#039;int&#039;&#039;&#039; i=0; i&amp;lt;length; i++)&lt;br /&gt;
        &#039;&#039;&#039;if&#039;&#039;&#039;(a[i]&amp;gt;0 &amp;amp;&amp;amp; a[i]&amp;lt;min)&lt;br /&gt;
             min = a[i];&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(min&amp;lt;0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. (5)&#039;&#039;&#039; Код процесора који користе предвиђање скока и спекулативно извршавање могу се јавити одређене ранјивости хардверског система. Описати како изгледа напад типа &#039;&#039;Meltdown&#039;&#039; који користи технику Изваци и учитај (&#039;&#039;Flush and Reload&#039;&#039;) и у којој случајевима се овај напад може применити.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.(5)&#039;&#039;&#039; Разматра се рачунарски систем у коме се извршавање одређене инструкције одвија у 6 фаза помоћу измењеног процесора са проточном обрадом (слика 4.1). У процесор са стандардном проточном обрадом је додата као други степен јединица PD (&#039;&#039;Instruction PreDecode&#039;&#039;) који обавља трансформацију инструкција задате архитектуре у инструкције RISC архитектуре. Сматрати да приступ меморији траје два сигнала такта. Архитектура процесора дефинише 16 регистара опште намене. Адресе и величине су 16 бита.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
AOR2 organizacija PreDecode.svg|Слика 4.1 - организација процесора&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а) Написати секвенцу инструкција (микроинструкција) циљне RISC архитектуре у коју се обавља пресликавање за део инструкцијског сета из табеле 4.1. извршна CISC архитектуре. Уколико је потребно проширити број регистара опште намене у регистарском фајлу онда треба за сваки додат регистар написати чему служи. Регистар R13 представља указивач на врх стека (SP) и показује на последњу слободну локацију. Стек расте према вишим адресама. Регистар R14 представља указивач на базну адресу стека (BP), регистар R15&amp;lt;ref name=&amp;quot;greska&amp;quot;&amp;gt;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/ref&amp;gt; представља статусни регистар PSW. Регистар R0 се користи као акумулатор. У табели 4.1 акције нису оптимизовано написане, већ описно. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Тебла 4.1. - део инструкцијског сета процесора&lt;br /&gt;
|-&lt;br /&gt;
!Асемблерска инструкција !! Акција !! Микро инструкције&lt;br /&gt;
|-&lt;br /&gt;
| SHL Rx || Rx&amp;lt;small&amp;gt;15..0&amp;lt;/small&amp;gt; = Rx&amp;lt;small&amp;gt;14..0&amp;lt;/small&amp;gt;.0 || &lt;br /&gt;
|-&lt;br /&gt;
| LEAVE || SP=BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP PC|| &lt;br /&gt;
|-&lt;br /&gt;
| RTI || PSW=MEM[SP--]&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[SP--] || &lt;br /&gt;
|-&lt;br /&gt;
| SWP(Rx) || MEM[Rx] &amp;lt;big&amp;gt;↔&amp;lt;/big&amp;gt; ACC || &lt;br /&gt;
|-&lt;br /&gt;
| INS entry || PUSH PC&amp;lt;br&amp;gt;&lt;br /&gt;
PUSH PSW&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[IVTP+entry] || &lt;br /&gt;
|-&lt;br /&gt;
| SUB (adr) || ACC=ACC-MEM[MEM[adr]] || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
б) Нацртати формат инструкција циљне RISC архитектуре (на основу инструкција из табеле 4.1)&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
Напомена: У поставци задатка је била грешка, речено је било да регистар R13 представља PSW, па сам узео претпоставку да је то R15.&lt;br /&gt;
&lt;br /&gt;
==== Подсетник ====&lt;br /&gt;
У подсетнику је била дата документација за следеће инструкције:&lt;br /&gt;
&lt;br /&gt;
 _mm256_loadu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_storeu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_max_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_min_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_setzero_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_add_pd&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Документација за ове инструкције може се наћи са званичног Интеловог [https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=6633,4687,2629,5149,4124,2629,491,823,337,823&amp;amp;techs=MMX,SSE_ALL,SVML&amp;amp;avxnewtechs=AVX,FMA,AVX2 сајта] и овде неће бити поновљена.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;greska /&amp;gt;&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АОР2 Фебруар 2024]]&lt;/div&gt;</summary>
		<author><name>Visnjicaleksa</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7294</id>
		<title>АОР2 Фебруар 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7294"/>
		<updated>2024-02-11T15:15:28Z</updated>

		<summary type="html">&lt;p&gt;Visnjicaleksa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{tocright}}&lt;br /&gt;
{{нерешено}}&amp;lt;!-- Ово ставити уколико НИЈЕДАН задатак није решен, док уколико само неки задаци нису решени на првом месту у њиховој секцији поставити {{делимично решено}}. Уколико се користи било који од ова два шаблона, ОБАВЕЗНО проверити да ли постоји излиставање тих рокова коришћењем {{рокови}} шаблона на страници предмета у одељку за потребну помоћ (како би се знало да нерешени рокови постоје). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. (5)&#039;&#039;&#039; Описати технику оптимизације векторских инструкција која се заснива на дохватању изабраних елемената &#039;&#039;&#039;(Scatter-gather)&#039;&#039;&#039; приликом приступа подацима. Дати пример инструкција процесора које омогућавају ову технику и пример програма ког кога се јасно види предност коришћења ове технике.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. (5)&#039;&#039;&#039; Дата је функција која враћа најмањи позитиван елемент низа &#039;&#039;&#039;а&#039;&#039;&#039;. Елементи низа &#039;&#039;&#039;а&#039;&#039;&#039; су означени реални бројеви дужине 64 бита. Уколико у низу а не постоји ниједан позитиван број, резултат функције треба да буде 0. Потребно је преправити код функције тако да има исти резултат извршавања коришћењем векторских инструкција које су дате у прилогу испита.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;double&#039;&#039;&#039; minPositive(&#039;&#039;&#039;double[]&#039;&#039;&#039; a, &#039;&#039;&#039;unsigned int&#039;&#039;&#039; length)&lt;br /&gt;
 &#039;&#039;&#039;{&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(length==0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
    &#039;&#039;&#039;double&#039;&#039;&#039; min = a[0];&lt;br /&gt;
    &#039;&#039;&#039;for&#039;&#039;&#039;(&#039;&#039;&#039;int&#039;&#039;&#039; i=0; i&amp;lt;length; i++)&lt;br /&gt;
        &#039;&#039;&#039;if&#039;&#039;&#039;(a[i]&amp;gt;0 &amp;amp;&amp;amp; a[i]&amp;lt;min)&lt;br /&gt;
             min = a[i];&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(min&amp;lt;0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. (5)&#039;&#039;&#039; Код процесора који користе предвиђање скока и спекулативно извршавање могу се јавити одређене ранјивости хардверског система. Описати како изгледа напад типа &#039;&#039;Meltdown&#039;&#039; који користи технику Изваци и учитај (&#039;&#039;Flush and Reload&#039;&#039;) и у којој случајевима се овај напад може применити.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.(5)&#039;&#039;&#039; Разматра се рачунарски систем у коме се извршавање одређене инструкције одвија у 6 фаза помоћу измењеног процесора са проточном обрадом (слика 4.1). У процесор са стандардном проточном обрадом је додата као други степен јединица PD (&#039;&#039;Instruction PreDecode&#039;&#039;) који обавља трансформацију инструкција задате архитектуре у инструкције RISC архитектуре. Сматрати да приступ меморији траје два сигнала такта. Архитектура процесора дефинише 16 регистара опште намене. Адресе и величине су 16 бита.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
AOR2 organizacija PreDecode.svg|Слика 4.1 - организација процесора&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а) Написати секвенцу инструкција (микроинструкција) циљне RISC архитектуре у коју се обавља пресликавање за део инструкцијског сета из табеле 4.1. извршна CISC архитектуре. Уколико је потребно проширити број регистара опште намене у регистарском фајлу онда треба за сваки додат регистар написати чему служи. Регистар R13 представља указивач на врх стека (SP) и показује на последњу слободну локацију. Стек расте према вишим адресама. Регистар R14 представља указивач на базну адресу стека (BP), регистар R15&amp;lt;ref&amp;gt;name=&amp;quot;greska&amp;quot;&amp;gt;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/ref&amp;gt; представља статусни регистар PSW. Регистар R0 се користи као акумулатор. У табели 4.1 акције нису оптимизовано написане, већ описно. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Тебла 4.1. - део инструкцијског сета процесора&lt;br /&gt;
|-&lt;br /&gt;
!Асемблерска инструкција !! Акција !! Микро инструкције&lt;br /&gt;
|-&lt;br /&gt;
| SHL Rx || Rx&amp;lt;small&amp;gt;15..0&amp;lt;/small&amp;gt; = Rx&amp;lt;small&amp;gt;14..0&amp;lt;/small&amp;gt;.0 || &lt;br /&gt;
|-&lt;br /&gt;
| LEAVE || SP=BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP PC|| &lt;br /&gt;
|-&lt;br /&gt;
| RTI || PSW=MEM[SP--]&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[SP--] || &lt;br /&gt;
|-&lt;br /&gt;
| SWP(Rx) || MEM[Rx] &amp;lt;big&amp;gt;↔&amp;lt;/big&amp;gt; ACC || &lt;br /&gt;
|-&lt;br /&gt;
| INS entry || PUSH PC&amp;lt;br&amp;gt;&lt;br /&gt;
PUSH PSW&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[IVTP+entry] || &lt;br /&gt;
|-&lt;br /&gt;
| SUB (adr) || ACC=ACC-MEM[MEM[adr]] || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
б) Нацртати формат инструкција циљне RISC архитектуре (на основу инструкција из табеле 4.1)&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
Напомена: У поставци задатка је била грешка, речено је било да регистар R13 представља PSW, па сам узео претпоставку да је то R15.&lt;br /&gt;
&lt;br /&gt;
==== Подсетник ====&lt;br /&gt;
У подсетнику је била дата документација за следеће инструкције:&lt;br /&gt;
&lt;br /&gt;
 _mm256_loadu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_storeu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_max_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_min_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_setzero_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_add_pd&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Документација за ове инструкције може се наћи са званичног Интеловог [https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=6633,4687,2629,5149,4124,2629,491,823,337,823&amp;amp;techs=MMX,SSE_ALL,SVML&amp;amp;avxnewtechs=AVX,FMA,AVX2 сајта] и овде неће бити поновљена.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;greska /&amp;gt;&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АОР2 Фебруар 2024]]&lt;/div&gt;</summary>
		<author><name>Visnjicaleksa</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7293</id>
		<title>АОР2 Фебруар 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02_%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7293"/>
		<updated>2024-02-11T15:09:24Z</updated>

		<summary type="html">&lt;p&gt;Visnjicaleksa: Нова страница: {{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;
&#039;&#039;&#039;1. (5)&#039;&#039;&#039; Описати технику оптимизације векторских инструкција која се заснива на дохватању изабраних елемената &#039;&#039;&#039;(Scatter-gather)&#039;&#039;&#039; приликом приступа подацима. Дати пример инструкција процесора које омогућавају ову технику и пример програма ког кога се јасно види предност коришћења ове технике.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. (5)&#039;&#039;&#039; Дата је функција која враћа најмањи позитиван елемент низа &#039;&#039;&#039;а&#039;&#039;&#039;. Елементи низа &#039;&#039;&#039;а&#039;&#039;&#039; су означени реални бројеви дужине 64 бита. Уколико у низу а не постоји ниједан позитиван број, резултат функције треба да буде 0. Потребно је преправити код функције тако да има исти резултат извршавања коришћењем векторских инструкција које су дате у прилогу испита.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;double&#039;&#039;&#039; minPositive(&#039;&#039;&#039;double[]&#039;&#039;&#039; a, &#039;&#039;&#039;unsigned int&#039;&#039;&#039; length)&lt;br /&gt;
 &#039;&#039;&#039;{&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(length==0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
    &#039;&#039;&#039;double&#039;&#039;&#039; min = a[0];&lt;br /&gt;
    &#039;&#039;&#039;for&#039;&#039;&#039;(&#039;&#039;&#039;int&#039;&#039;&#039; i=0; i&amp;lt;length; i++)&lt;br /&gt;
        &#039;&#039;&#039;if&#039;&#039;&#039;(a[i]&amp;gt;0 &amp;amp;&amp;amp; a[i]&amp;lt;min)&lt;br /&gt;
             min = a[i];&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(min&amp;lt;0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. (5)&#039;&#039;&#039; Код процесора који користе предвиђање скока и спекулативно извршавање могу се јавити одређене ранјивости хардверског система. Описати како изгледа напад типа &#039;&#039;Meltdown&#039;&#039; који користи технику Изваци и учитај (&#039;&#039;Flush and Reload&#039;&#039;) и у којој случајевима се овај напад може применити.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.(5)&#039;&#039;&#039; Разматра се рачунарски систем у коме се извршавање одређене инструкције одвија у 6 фаза помоћу измењеног процесора са проточном обрадом (слика 4.1). У процесор са стандардном проточном обрадом је додата као други степен јединица PD (&#039;&#039;Instruction PreDecode&#039;&#039;) који обавља трансформацију инструкција задате архитектуре у инструкције RISC архитектуре. Сматрати да приступ меморији траје два сигнала такта. Архитектура процесора дефинише 16 регистара опште намене. Адресе и величине су 16 бита.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
AOR2 organizacija PreDecode.svg|Слика 4.1 - организација процесора&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а) Написати секвенцу инструкција (микроинструкција) циљне RISC архитектуре у коју се обавља пресликавање за део инструкцијског сета из табеле 4.1. извршна CISC архитектуре. Уколико је потребно проширити број регистара опште намене у регистарском фајлу онда треба за сваки додат регистар написати чему служи. Регистар R13 представља указивач на врх стека (SP) и показује на последњу слободну локацију. Стек расте према вишим адресама. Регистар R14 представља указивач на базну адресу стека (BP), регистар R15&amp;lt;ref&amp;gt;name=&amp;quot;greska&amp;quot;&amp;gt;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/ref&amp;gt; представља статусни регистар PSW. Регистар R0 се користи као акумулатор. У табели 4.1 акције нису оптимизовано написане, већ описно. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Тебла 4.1. - део инструкцијског сета процесора&lt;br /&gt;
|-&lt;br /&gt;
!Асемблерска инструкција !! Акција !! Микро инструкције&lt;br /&gt;
|-&lt;br /&gt;
| SHL Rx || Rx&amp;lt;small&amp;gt;15..0&amp;lt;/small&amp;gt; = Rx&amp;lt;small&amp;gt;14..0&amp;lt;/small&amp;gt;.0 || &lt;br /&gt;
|-&lt;br /&gt;
| LEAVE || SP=BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP PC|| &lt;br /&gt;
|-&lt;br /&gt;
| RTI || PSW=MEM[SP--]&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[SP--] || &lt;br /&gt;
|-&lt;br /&gt;
| SWP(Rx) || MEM[Rx] &amp;lt;big&amp;gt;↔&amp;lt;/big&amp;gt; ACC || &lt;br /&gt;
|-&lt;br /&gt;
| INS entry || PUSH PC&amp;lt;br&amp;gt;&lt;br /&gt;
PUSH PSW&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[IVTP+entry] || &lt;br /&gt;
|-&lt;br /&gt;
| SUB (adr) || ACC=ACC-MEM[MEM[adr]] || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
б) Нацртати формат инструкција циљне RISC архитектуре (на основу инструкција из табеле 4.1)&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
Напомена: У поставци задатка је била грешка, речено је било да регистар R13 представља PSW, па сам узео претпоставку да је то R15.&lt;br /&gt;
&lt;br /&gt;
==== Подсетник ====&lt;br /&gt;
У подсетнику је била дата документација за следеће инструкције:&lt;br /&gt;
&lt;br /&gt;
 _mm256_loadu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_storeu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_max_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_min_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_setzero_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_add_pd&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Документација за ове инструкције може се наћи са званичног Интеловог [https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=6633,4687,2629,5149,4124,2629,491,823,337,823&amp;amp;techs=MMX,SSE_ALL,SVML&amp;amp;avxnewtechs=AVX,FMA,AVX2 сајта] и овде неће бити поновљена.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АОР2 Фебруар 2024]]&lt;/div&gt;</summary>
		<author><name>Visnjicaleksa</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7291</id>
		<title>АОР2/Фебруар 2024</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%A4%D0%B5%D0%B1%D1%80%D1%83%D0%B0%D1%80_2024&amp;diff=7291"/>
		<updated>2024-02-11T15:08:05Z</updated>

		<summary type="html">&lt;p&gt;Visnjicaleksa: Нова страница: {{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;
&#039;&#039;&#039;1. (5)&#039;&#039;&#039; Описати технику оптимизације векторских инструкција која се заснива на дохватању изабраних елемената &#039;&#039;&#039;(Scatter-gather)&#039;&#039;&#039; приликом приступа подацима. Дати пример инструкција процесора које омогућавају ову технику и пример програма ког кога се јасно види предност коришћења ове технике.&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. (5)&#039;&#039;&#039; Дата је функција која враћа најмањи позитиван елемент низа &#039;&#039;&#039;а&#039;&#039;&#039;. Елементи низа &#039;&#039;&#039;а&#039;&#039;&#039; су означени реални бројеви дужине 64 бита. Уколико у низу а не постоји ниједан позитиван број, резултат функције треба да буде 0. Потребно је преправити код функције тако да има исти резултат извршавања коришћењем векторских инструкција које су дате у прилогу испита.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;double&#039;&#039;&#039; minPositive(&#039;&#039;&#039;double[]&#039;&#039;&#039; a, &#039;&#039;&#039;unsigned int&#039;&#039;&#039; length)&lt;br /&gt;
 &#039;&#039;&#039;{&#039;&#039;&#039;&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(length==0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
    &#039;&#039;&#039;double&#039;&#039;&#039; min = a[0];&lt;br /&gt;
    &#039;&#039;&#039;for&#039;&#039;&#039;(&#039;&#039;&#039;int&#039;&#039;&#039; i=0; i&amp;lt;length; i++)&lt;br /&gt;
        &#039;&#039;&#039;if&#039;&#039;&#039;(a[i]&amp;gt;0 &amp;amp;&amp;amp; a[i]&amp;lt;min)&lt;br /&gt;
             min = a[i];&lt;br /&gt;
    &#039;&#039;&#039;if&#039;&#039;&#039;(min&amp;lt;0)&lt;br /&gt;
        &#039;&#039;&#039;return&#039;&#039;&#039; 0;&lt;br /&gt;
 &#039;&#039;&#039;}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. (5)&#039;&#039;&#039; Код процесора који користе предвиђање скока и спекулативно извршавање могу се јавити одређене ранјивости хардверског система. Описати како изгледа напад типа &#039;&#039;Meltdown&#039;&#039; који користи технику Изваци и учитај (&#039;&#039;Flush and Reload&#039;&#039;) и у којој случајевима се овај напад може применити.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.(5)&#039;&#039;&#039; Разматра се рачунарски систем у коме се извршавање одређене инструкције одвија у 6 фаза помоћу измењеног процесора са проточном обрадом (слика 4.1). У процесор са стандардном проточном обрадом је додата као други степен јединица PD (&#039;&#039;Instruction PreDecode&#039;&#039;) који обавља трансформацију инструкција задате архитектуре у инструкције RISC архитектуре. Сматрати да приступ меморији траје два сигнала такта. Архитектура процесора дефинише 16 регистара опште намене. Адресе и величине су 16 бита.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
AOR2 organizacija PreDecode.svg|Слика 4.1 - организација процесора&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
а) Написати секвенцу инструкција (микроинструкција) циљне RISC архитектуре у коју се обавља пресликавање за део инструкцијског сета из табеле 4.1. извршна CISC архитектуре. Уколико је потребно проширити број регистара опште намене у регистарском фајлу онда треба за сваки додат регистар написати чему служи. Регистар R13 представља указивач на врх стека (SP) и показује на последњу слободну локацију. Стек расте према вишим адресама. Регистар R14 представља указивач на базну адресу стека (BP), регистар R15&amp;lt;ref&amp;gt;ref name=&amp;quot;greska&amp;quot;&amp;gt;&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/ref&amp;gt; представља статусни регистар PSW. Регистар R0 се користи као акумулатор. У табели 4.1 акције нису оптимизовано написане, већ описно. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Тебла 4.1. - део инструкцијског сета процесора&lt;br /&gt;
|-&lt;br /&gt;
!Асемблерска инструкција !! Акција !! Микро инструкције&lt;br /&gt;
|-&lt;br /&gt;
| SHL Rx || Rx&amp;lt;small&amp;gt;15..0&amp;lt;/small&amp;gt; = Rx&amp;lt;small&amp;gt;14..0&amp;lt;/small&amp;gt;.0 || &lt;br /&gt;
|-&lt;br /&gt;
| LEAVE || SP=BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP BP&amp;lt;br&amp;gt;&lt;br /&gt;
POP PC|| &lt;br /&gt;
|-&lt;br /&gt;
| RTI || PSW=MEM[SP--]&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[SP--] || &lt;br /&gt;
|-&lt;br /&gt;
| SWP(Rx) || MEM[Rx] &amp;lt;big&amp;gt;↔&amp;lt;/big&amp;gt; ACC || &lt;br /&gt;
|-&lt;br /&gt;
| INS entry || PUSH PC&amp;lt;br&amp;gt;&lt;br /&gt;
PUSH PSW&amp;lt;br&amp;gt;&lt;br /&gt;
PC=MEM[IVTP+entry] || &lt;br /&gt;
|-&lt;br /&gt;
| SUB (adr) || ACC=ACC-MEM[MEM[adr]] || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
б) Нацртати формат инструкција циљне РИСЦ архитектуре (на основу инструкција из табеле 4.1)&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
Напомена: У поставци задатка је била грешка, речено је било да регистар R13 представља PSW, па сам узео претпоставку да је то R15.&lt;br /&gt;
&lt;br /&gt;
==== Подсетник ====&lt;br /&gt;
У подсетнику је била дата документација за следеће инструкције:&lt;br /&gt;
&lt;br /&gt;
 _mm256_loadu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_storeu_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_max_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_min_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_setzero_pd&amp;lt;br&amp;gt;&lt;br /&gt;
 _mm256_add_pd&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Документација за ове инструкције може се наћи са званичног Интеловог [https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#ig_expand=6633,4687,2629,5149,4124,2629,491,823,337,823&amp;amp;techs=MMX,SSE_ALL,SVML&amp;amp;avxnewtechs=AVX,FMA,AVX2 сајта] и овде неће бити поновљена.&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АОР2 Фебруар 2024]]&lt;/div&gt;</summary>
		<author><name>Visnjicaleksa</name></author>
	</entry>
</feed>