<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sr">
	<id>https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%9E%D0%A02%2F%D0%9A1%D0%9F_2023</id>
	<title>АОР2/К1П 2023 - Историја измена</title>
	<link rel="self" type="application/atom+xml" href="https://siwiki.rs/w/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%9E%D0%A02%2F%D0%9A1%D0%9F_2023"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A1%D0%9F_2023&amp;action=history"/>
	<updated>2026-06-04T20:33:23Z</updated>
	<subtitle>Историја измена ове странице на пројекту</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A1%D0%9F_2023&amp;diff=6181&amp;oldid=prev</id>
		<title>Kiclu: Додат АОР2 К1П 2023</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%9A1%D0%9F_2023&amp;diff=6181&amp;oldid=prev"/>
		<updated>2023-05-13T15:04:28Z</updated>

		<summary type="html">&lt;p&gt;Додат АОР2 К1П 2023&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{tocright}}&lt;br /&gt;
{{nerešeno}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Поправни први колоквијум 2023. године&amp;#039;&amp;#039;&amp;#039; одржан је 12. маја и трајао је 90 минута.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
Посматра се кеш меморија реализована у техници сет асоцијативног пресликавања са 4 улаза по сету која користи &amp;#039;&amp;#039;SLRU&amp;#039;&amp;#039; (&amp;#039;&amp;#039;Segmented LRU&amp;#039;&amp;#039;) алгоритам замене. Објаснити овај алгоритам. Дати садржаје свих улаза &amp;#039;&amp;#039;TAG&amp;#039;&amp;#039; дела кеш меморије после сваког приступа уколико се обављају приступи меморији за исти сет који имају следеће вредности поља Tag: 0, 1, 2, 1, 2, 5, 4, 2, 3, 6, 3.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
{{делимично решено}}&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
У процесору се налази &amp;#039;&amp;#039;L1 Data&amp;#039;&amp;#039; асоцијативна кеш меморија величине 512KiB, која користи &amp;#039;&amp;#039;write-back&amp;#039;&amp;#039; алгоритам за ажурирање садржаја оперативне меморије са &amp;#039;&amp;#039;write allocated&amp;#039;&amp;#039; политиком довлачења. Користи се LRU алгоритам замене. Величина блока кеш меморије је 64B.&lt;br /&gt;
&lt;br /&gt;
Дат је програм који имплементира &amp;#039;&amp;#039;Stencil&amp;#039;&amp;#039; оператор. У матрици &amp;lt;code&amp;gt;current&amp;lt;/code&amp;gt; се налазе реалне вредности типа &amp;lt;code&amp;gt;double&amp;lt;/code&amp;gt; (ширине 64 бита). Матрица &amp;lt;code&amp;gt;next&amp;lt;/code&amp;gt; представља резултат операције. Претпоставити да ниједна матрица на почетку није учитана у кеш меморију, као и да су прве ћелије матрица поравнате са блоком кеш меморије. Матрице су смештене у меморији тако што је свака 2D подматрица смештена по врстама, а подматрице се налазе једна до друге у меморији.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void stencil ( double *current, double *next, int nx, int ny, int nz, double f ) {&lt;br /&gt;
    for (int i = 1; i &amp;lt; (nx - 1); ++i ) {&lt;br /&gt;
        for( int j = 1; j &amp;lt; (ny - 1); ++j ) {&lt;br /&gt;
            for( int k = 1; k &amp;lt; (nz - 1); ++k ) {&lt;br /&gt;
                double ku  = current[index3D ( nx, ny, i    , j    , k + 1)];&lt;br /&gt;
                double kd  = current[index3D ( nx, ny, i    , j    , k - 1)];&lt;br /&gt;
                double ju  = current[index3D ( nx, ny, i    , j + 1, k    )];&lt;br /&gt;
                double jd  = current[index3D ( nx, ny, i    , j - 1, k    )];&lt;br /&gt;
                double iu  = current[index3D ( nx, ny, i + 1, j    , k    )];&lt;br /&gt;
                double id  = current[index3D ( nx, ny, i - 1, j    , k    )];&lt;br /&gt;
                double c   = current[index3D ( nx, ny, i    , j    , k    )];&lt;br /&gt;
                double sum = ku + kd + ju + jd + iu + id;&lt;br /&gt;
&lt;br /&gt;
                next[index3D( nx, ny, i, j, k)] = sum * f - c * (1 - f);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Уколико се зна да је оригинална слика димензија 8x8x8, наћи број промашаја приликом приступа кеш меморији. Узети у обзир само промашаје чији је узрок приступ матрици &amp;lt;code&amp;gt;current&amp;lt;/code&amp;gt;&lt;br /&gt;
# Потребно је оптимизовати дати код тако да се резултат програма не промени, а да се при томе искористе карактеристике дате кеш меморије. Није дозвољено коришћење наменских инструкција за манипулацију кеш меморије. У програму је доступно за коришћење још 10 регистара опште намене.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АОР2]]&lt;/div&gt;</summary>
		<author><name>Kiclu</name></author>
	</entry>
</feed>