<?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%88%D1%83%D0%BD_2023</id>
	<title>АОР2/Јун 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%88%D1%83%D0%BD_2023"/>
	<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;action=history"/>
	<updated>2026-06-04T20:32:32Z</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%88%D1%83%D0%BD_2023&amp;diff=7644&amp;oldid=prev</id>
		<title>Jaksa: /* Решење */</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;diff=7644&amp;oldid=prev"/>
		<updated>2024-06-02T17:25:46Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 2. јун 2024. у 19:25&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l197&quot;&gt;Ред 197:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 197:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ADDI R0, R17, #0&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ADDI R0, R17, #0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  LD R16, (R0)adr&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  LD R16, (R0)adr&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ADDI &lt;/del&gt;R0, R0, #1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ADDIS &lt;/ins&gt;R0, R0, #1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  BNEZPI R16, (PC)-3 * len(mInst)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  BNEZPI R16, (PC)-3 * len(mInst)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ADDIS &lt;/del&gt;R0, R0, #-1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ADDI &lt;/ins&gt;R0, R0, #-1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| За ову ставку је речено на колоквијуму да може да се претпостави како PC броји микроинструкције уместо инструкције. Главне идеје су да се уклони хазард тиме што радимо &amp;lt;code&amp;gt;ADD&amp;lt;/code&amp;gt; инструкцију испод &amp;lt;code&amp;gt;LD&amp;lt;/code&amp;gt;, да се акумулатор користи уместо неког новог регистра за чување &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; (јер се свакако увећава сваке итерације) и да након петље која обухвата другу, трећу и четврту микроинструкцију морамо смањити акумулатор за један, јер нам је претходна петља ефективно била &amp;#039;&amp;#039;do-while&amp;#039;&amp;#039; уместо &amp;#039;&amp;#039;while&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| За ову ставку је речено на колоквијуму да може да се претпостави како PC броји микроинструкције уместо инструкције. Главне идеје су да се уклони хазард тиме што радимо &amp;lt;code&amp;gt;ADD&amp;lt;/code&amp;gt; инструкцију испод &amp;lt;code&amp;gt;LD&amp;lt;/code&amp;gt;, да се акумулатор користи уместо неког новог регистра за чување &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; (јер се свакако увећава сваке итерације) и да након петље која обухвата другу, трећу и четврту микроинструкцију морамо смањити акумулатор за један, јер нам је претходна петља ефективно била &amp;#039;&amp;#039;do-while&amp;#039;&amp;#039; уместо &amp;#039;&amp;#039;while&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jaksa</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;diff=7643&amp;oldid=prev</id>
		<title>Jaksa: /* Решење */</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;diff=7643&amp;oldid=prev"/>
		<updated>2024-06-02T16:52:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 2. јун 2024. у 18:52&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l195&quot;&gt;Ред 195:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 195:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  END WHILE&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  END WHILE&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ADDIS &lt;/del&gt;R0, R17, #0&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ADDI &lt;/ins&gt;R0, R17, #0&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  LD R16, (R0)adr&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  LD R16, (R0)adr&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ADDIS &lt;/del&gt;R0, R0, #1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ADDI &lt;/ins&gt;R0, R0, #1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  BNEZPI R16, (PC)-3 * len(mInst)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  BNEZPI R16, (PC)-3 * len(mInst)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ADDIS R0, R0, #-1&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ADDIS R0, R0, #-1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jaksa</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;diff=6233&amp;oldid=prev</id>
		<title>KockaAdmiralac: /* Решење */ Sad zapravo</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;diff=6233&amp;oldid=prev"/>
		<updated>2023-06-05T22:18:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење: &lt;/span&gt; Sad zapravo&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 6. јун 2023. у 00:18&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l184&quot;&gt;Ред 184:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 184:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ACC = 0.Rx&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ACC = 0.Rx&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ANDIS R0, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;R0&lt;/del&gt;, #00FF&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ANDIS R0, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;RX&lt;/ins&gt;, #00FF&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;diff=6232&amp;oldid=prev</id>
		<title>KockaAdmiralac: /* Решење */ Opet nepotreban ADD</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;diff=6232&amp;oldid=prev"/>
		<updated>2023-06-05T22:17:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење: &lt;/span&gt; Opet nepotreban ADD&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 6. јун 2023. у 00:17&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l184&quot;&gt;Ред 184:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 184:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ACC = 0.Rx&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ACC = 0.Rx&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; ADDIS R0, Rx, #0&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ANDIS R0, R0, #00FF&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  ANDIS R0, R0, #00FF&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;diff=6231&amp;oldid=prev</id>
		<title>KockaAdmiralac: /* Решење */ Napomena za MUL R1</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;diff=6231&amp;oldid=prev"/>
		<updated>2023-06-05T21:25:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Решење: &lt;/span&gt; Napomena za MUL R1&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sr&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Старија измена&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Верзија на датум 5. јун 2023. у 23:25&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l236&quot;&gt;Ред 236:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Ред 236:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  BNEZPI R18, (PC)-3 * len(mInst)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  BNEZPI R18, (PC)-3 * len(mInst)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  SUB R0, R0, R16&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  SUB R0, R0, R16&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Идеја јесте да R16 користимо као претходну вредност акумулатора и R18 као бројач итерација који почиње од R1 и завршава се са 0. Уколико би нам провера за &amp;lt;code&amp;gt;R18 == 0&amp;lt;/code&amp;gt; била на врху, наша петља би се састојала из четири микроинструкције: провере, сабирања, декрементирања и безусловног скока. Уместо тога, проверу стављамо на дно па се наша петља састоји од три микроинструкције (резултујући у мањем укупном броју извршених микроинструкција), али због тога што смо опет ефективно направили &amp;#039;&amp;#039;do-while&amp;#039;&amp;#039; петљу ефекат последње итерације морамо да поништимо на крају. Као и за &amp;lt;code&amp;gt;STRLEN&amp;lt;/code&amp;gt;, за ову ставку може да се претпостави како PC броји микроинструкције уместо инструкције.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Идеја јесте да R16 користимо као претходну вредност акумулатора и R18 као бројач итерација који почиње од R1 и завршава се са 0. Уколико би нам провера за &amp;lt;code&amp;gt;R18 == 0&amp;lt;/code&amp;gt; била на врху, наша петља би се састојала из четири микроинструкције: провере, сабирања, декрементирања и безусловног скока. Уместо тога, проверу стављамо на дно па се наша петља састоји од три микроинструкције (резултујући у мањем укупном броју извршених микроинструкција), али због тога што смо опет ефективно направили &amp;#039;&amp;#039;do-while&amp;#039;&amp;#039; петљу ефекат последње итерације морамо да поништимо на крају. Као и за &amp;lt;code&amp;gt;STRLEN&amp;lt;/code&amp;gt;, за ову ставку може да се претпостави како PC броји микроинструкције уместо инструкције. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(На колоквијуму је накнадно речено да је податак у R1 означен, али то у овом решењу није узето у обзир јер такво коришћење и нема смисла.)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Користимо укупно седам RISC инструкција у овом сету:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Користимо укупно седам RISC инструкција у овом сету:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key si:diff::1.12:old-6230:rev-6231 --&gt;
&lt;/table&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
	<entry>
		<id>https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;diff=6230&amp;oldid=prev</id>
		<title>KockaAdmiralac: Današnji rok</title>
		<link rel="alternate" type="text/html" href="https://siwiki.rs/w/index.php?title=%D0%90%D0%9E%D0%A02/%D0%88%D1%83%D0%BD_2023&amp;diff=6230&amp;oldid=prev"/>
		<updated>2023-06-05T21:23:03Z</updated>

		<summary type="html">&lt;p&gt;Današnji rok&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{tocright}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Јунски рок 2023. године&amp;#039;&amp;#039;&amp;#039; одржан је 5. јуна и трајао је 120 минута.&lt;br /&gt;
&lt;br /&gt;
== 1. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[5п]&amp;#039;&amp;#039;&amp;#039; Описати технику оптимизације векторских инструкција која се заснива на коришћењу регистра маски вектора (&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Vector mask registers&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;). На примеру израчунавања максимума кореспондентних елемената низа (&amp;lt;code&amp;gt;Z[i] = MAX(X[i], Y[i])&amp;lt;/code&amp;gt;) приказати коришћење овог регистра.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Регистар маске вектора служи како би се одређене операције над векторима извршиле само над њиховим одређеним члановима, тиме што на одређеним битовима регистра маске стоје нуле или јединице. На пример, следећи код за рачунање максимума:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
for (int i = 0; i &amp;lt; n; ++i)&lt;br /&gt;
    if (X[i] &amp;gt; Y[i])&lt;br /&gt;
        Z[i] = X[i];&lt;br /&gt;
    else&lt;br /&gt;
        Z[i] = Y[i];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
би могао да се преведе у следећу секвенцу векторских инструкција:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
LV V1, X        # Учитавамо део низа X у вектор V1&lt;br /&gt;
LV V2, Y        # Учитавамо део низа Y у вектор V2&lt;br /&gt;
SGTVS.D V1, V2  # Постављамо регистар маске на 1 на местима где важи X[i] &amp;gt; Y[i]&lt;br /&gt;
MOVVV.D V3, V1  # Постављамо елементе V3 на елементе V1 на местима где је маска 1&lt;br /&gt;
MVFM V1, VM     # Учитавамо маску у V1&lt;br /&gt;
NOTV V1         # Негирамо V1&lt;br /&gt;
MVTM V1, VM     # Учитавамо V1 у маску&lt;br /&gt;
MOVVV.D V3, V2  # Постављамо елементе V3 на елементе V2 на местима где је маска 1&lt;br /&gt;
SV V3, Z        # Уписујемо део низа Z&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[5п]&amp;#039;&amp;#039;&amp;#039; Посматра се предвиђање скока коришћењем &amp;#039;&amp;#039;gshare&amp;#039;&amp;#039; предиктора. Описати рад овог предиктора. Упоредити рад овог предиктора и корелисаног предиктора који користи исти број бита одговарајућих улазних података.&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
&amp;#039;&amp;#039;gshare&amp;#039;&amp;#039; предиктор садржи следеће елементе:&lt;br /&gt;
* &amp;#039;&amp;#039;Branch History Register&amp;#039;&amp;#039; (BHR) који функционише као &amp;#039;&amp;#039;shift&amp;#039;&amp;#039; регистар који чува глобалну историју скокова (да ли је услов испуњен или није),&lt;br /&gt;
* &amp;#039;&amp;#039;Pattern History Table&amp;#039;&amp;#039; (PHT) која садржи аутомате стања који одређују крајња предвиђања, и&lt;br /&gt;
* хеш функцију која комбинује BHR и битове адресе скока како би адресирала PHT.&lt;br /&gt;
За разлику од &amp;#039;&amp;#039;gshare&amp;#039;&amp;#039;, корелисани предиктор одвојено адресира једну од више PHT помоћу BHR, а затим један од аутомата у оквиру PHT помоћу адресе скока. Може се приметити да је корелисани предиктор, због свог већег броја PHT, за исте ширине улазних података доста скупљи од &amp;#039;&amp;#039;gshare&amp;#039;&amp;#039;. Такође се показало да је већина улаза у овакве PHT неискоришћено, па је &amp;#039;&amp;#039;gshare&amp;#039;&amp;#039; направљен како би побољшао ово искоришћење и смањио цену производње корелисаног предиктора.&lt;br /&gt;
&lt;br /&gt;
== 3. задатак ==&lt;br /&gt;
=== Поставка ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;[10п]&amp;#039;&amp;#039;&amp;#039; Разматра се рачунарски систем у коме се извршавање одређене инструкција одвија у 6 фаза помоћу измењеног процесора са стандардном проточном обрадом (слика 3.1.). У процесор са стандардом проточном обрадом је додата као други степен јединица PD (&amp;#039;&amp;#039;Instruction PreDecode&amp;#039;&amp;#039;) који&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; обавља трансформацију инструкција задате архитектуре у инструкције RISC архитектуре. Сматрати да приступ меморији траје два сигнала такта. Архитектура процесора дефинише 16 регистра&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; опште намене. Адресе и подаци су величине 16 бита.&lt;br /&gt;
[[Датотека:AOR2 organizacija PreDecode.svg|thumb|center|500px|Слика 4.1.&amp;lt;sup&amp;gt;[sic]&amp;lt;/sup&amp;gt; — организација процесора]]&lt;br /&gt;
&amp;lt;div class=&amp;quot;abc-list&amp;quot;&amp;gt;&lt;br /&gt;
# Написати секвенцу инструкција (микроинструкција) циљне RISC архитектуре у коју се обавља пресликавање за део инструкцијског сета из табеле 3.1. изворишне CISC архитектуре. Уколико је потребно проширити број регистара опште намене у регистарском фајлу, онда треба за сваки додат регистар написати чему служи. Регистар R13 представља указивач на врх стека (SP) и показује на последњу слободну локацију. Стек расте према вишим адресама. Регистар R14 представља указивач на базну адресу стека (BP). Регистар R0 се користи као акумулатор, регистар R12 се користи као бројачки регистар и као такав има посебне инструкције које га користе. У табели 3.1. акције нису оптимизовано написане, већ описно.&lt;br /&gt;
# Нацртати формат инструкција циљне RISC архитектуре (на основу инструкција из табеле 3.1.).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Табела 3.1. — део инструкцијског сета процесора&lt;br /&gt;
! Асемблерска инструкција&lt;br /&gt;
! Акција&lt;br /&gt;
! Микро инструкције&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SWP Rx&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 MEM[Rx] ↔ ACC&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DEC&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ACC = ACC - 1&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 POP PC&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;LOOP disp&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 R12 = R12 - 1&lt;br /&gt;
 IF R12 == 0 THEN&lt;br /&gt;
     PC = PC + disp&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;JMP adr&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 PC = adr&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ADD (adr)&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ACC = ACC + MEM[MEM[adr]]&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;LDB Rx&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ACC = 0.Rx&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;STRLEN adr&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ACC = 0&lt;br /&gt;
 WHILE MEM[adr] != 0 DO&lt;br /&gt;
     ACC = ACC + 1&lt;br /&gt;
     adr = adr + 1&lt;br /&gt;
 END WHILE&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VECADD adr&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 R1 = R1 + MEM[adr]&lt;br /&gt;
 R2 = R2 + MEM[adr]&lt;br /&gt;
 R3 = R3 + MEM[adr]&lt;br /&gt;
 R4 = R4 + MEM[adr]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MUL R1&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 TMP = ACC&lt;br /&gt;
 ACC = 0&lt;br /&gt;
 FOR X = 0; X &amp;lt; R1; X++ DO&lt;br /&gt;
     ACC = ACC + TMP&lt;br /&gt;
 END FOR&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Решење ===&lt;br /&gt;
Претпоставља се да се под AX регистром у задатку мисли на акумулатор. Уводимо регистре:&lt;br /&gt;
* R16: привремени регистар&lt;br /&gt;
* R17: вредност 0&lt;br /&gt;
* R18: још један привремени регистар&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Решење трећег задатка.&lt;br /&gt;
! Асемблерска инструкција&lt;br /&gt;
! Акција&lt;br /&gt;
! Микро инструкције&lt;br /&gt;
! Коментар&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SWP Rx&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 MEM[Rx] ↔ ACC&lt;br /&gt;
|&lt;br /&gt;
 LD R0, (Rx)0&lt;br /&gt;
 ADDIS R16, R0, #0&lt;br /&gt;
 ST R16, (Rx)0&lt;br /&gt;
| Уколико би после ове секвенце микроинструкција дошла микроинструкција која користи меморију, то би био хазард по подацима.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DEC&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ACC = ACC - 1&lt;br /&gt;
|&lt;br /&gt;
 ADDIS R0, R0, #-1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;RTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 POP PC&lt;br /&gt;
|&lt;br /&gt;
 LD R16, (R13)-1&lt;br /&gt;
 ADDI R13, R13, #-1&lt;br /&gt;
 BEQZ R17, (R17+R16)&lt;br /&gt;
| У последњој инструкцији се кроз горњи мултиплексер пропушта вредност R17 (0), која се користи и као услов скока, а кроз доњи вредност R16, која садржи жељену вредност PC, па стога и специфичан начин обележавања (који је еквивалентан са &amp;lt;code&amp;gt;(R16)0&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;LOOP disp&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 R12 = R12 - 1&lt;br /&gt;
 IF R12 == 0 THEN&lt;br /&gt;
     PC = PC + disp&lt;br /&gt;
|&lt;br /&gt;
 SUB R12, R12, #1&lt;br /&gt;
 BEQZPI R12, (PC)disp&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;JMP adr&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 PC = adr&lt;br /&gt;
|&lt;br /&gt;
 BEQZI R17, (R17)adr&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ADD (adr)&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ACC = ACC + MEM[MEM[adr]]&lt;br /&gt;
|&lt;br /&gt;
 LD R16, (R17)adr&lt;br /&gt;
 LD R16, (R16)0&lt;br /&gt;
 ADDS R0, R0, R16&lt;br /&gt;
| Дешава се хазард по подацима између прве и друге и између друге и треће микроинструкције.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;LDB Rx&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ACC = 0.Rx&amp;lt;sub&amp;gt;7..0&amp;lt;/sub&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ADDIS R0, Rx, #0&lt;br /&gt;
 ANDIS R0, R0, #00FF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;STRLEN adr&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ACC = 0&lt;br /&gt;
 WHILE MEM[adr] != 0 DO&lt;br /&gt;
     ACC = ACC + 1&lt;br /&gt;
     adr = adr + 1&lt;br /&gt;
 END WHILE&lt;br /&gt;
|&lt;br /&gt;
 ADDIS R0, R17, #0&lt;br /&gt;
 LD R16, (R0)adr&lt;br /&gt;
 ADDIS R0, R0, #1&lt;br /&gt;
 BNEZPI R16, (PC)-3 * len(mInst)&lt;br /&gt;
 ADDIS R0, R0, #-1&lt;br /&gt;
| За ову ставку је речено на колоквијуму да може да се претпостави како PC броји микроинструкције уместо инструкције. Главне идеје су да се уклони хазард тиме што радимо &amp;lt;code&amp;gt;ADD&amp;lt;/code&amp;gt; инструкцију испод &amp;lt;code&amp;gt;LD&amp;lt;/code&amp;gt;, да се акумулатор користи уместо неког новог регистра за чување &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; (јер се свакако увећава сваке итерације) и да након петље која обухвата другу, трећу и четврту микроинструкцију морамо смањити акумулатор за један, јер нам је претходна петља ефективно била &amp;#039;&amp;#039;do-while&amp;#039;&amp;#039; уместо &amp;#039;&amp;#039;while&amp;#039;&amp;#039;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VECADD adr&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 R1 = R1 + MEM[adr]&lt;br /&gt;
 R2 = R2 + MEM[adr]&lt;br /&gt;
 R3 = R3 + MEM[adr]&lt;br /&gt;
 R4 = R4 + MEM[adr]&lt;br /&gt;
|&lt;br /&gt;
 LD R16, (R17)adr&lt;br /&gt;
 ADDI R18, R17, #adr&lt;br /&gt;
 LD R16, (R18)1&lt;br /&gt;
 ADD R1, R1, R16&lt;br /&gt;
 LD R16, (R18)2&lt;br /&gt;
 ADD R2, R2, R16&lt;br /&gt;
 LD R16, (R18)3&lt;br /&gt;
 ADD R3, R3, R16&lt;br /&gt;
 ADD R4, R4, R16&lt;br /&gt;
| Разлог из ког ова секвенца микроинструкција може изгледати чудно јесте избегавање хазарда по подацима. Са учитавањем првог податка почиње се већ у првој микроинструкцији, али како у међувремену треба обавити чување &amp;lt;code&amp;gt;adr&amp;lt;/code&amp;gt; у новом привременом регистру и започињање новог учитавања, она се не сабира са регистром R1 до четврте микроинструкције (када је та вредност и даље доступна у одговарајућем регистру). Након тога се логика понавља неколико пута: започели смо учитавање наредног податка, а док се тај податак учитава ми радимо сабирање претходно учитаног податка са одговарајућим регистром. Како је до девете микроинструкције завршено учитавање и последњег податка, можемо извршити последње сабирање.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;MUL R1&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 TMP = ACC&lt;br /&gt;
 ACC = 0&lt;br /&gt;
 FOR X = 0; X &amp;lt; R1; X++ DO&lt;br /&gt;
     ACC = ACC + TMP&lt;br /&gt;
 END FOR&lt;br /&gt;
|&lt;br /&gt;
 ADDI R16, R0, #0&lt;br /&gt;
 ADDIS R0, R17, #0&lt;br /&gt;
 ADDI R18, R1, #0&lt;br /&gt;
 ADDS R0, R0, R16&lt;br /&gt;
 ADDI R18, R18, #-1&lt;br /&gt;
 BNEZPI R18, (PC)-3 * len(mInst)&lt;br /&gt;
 SUB R0, R0, R16&lt;br /&gt;
| Идеја јесте да R16 користимо као претходну вредност акумулатора и R18 као бројач итерација који почиње од R1 и завршава се са 0. Уколико би нам провера за &amp;lt;code&amp;gt;R18 == 0&amp;lt;/code&amp;gt; била на врху, наша петља би се састојала из четири микроинструкције: провере, сабирања, декрементирања и безусловног скока. Уместо тога, проверу стављамо на дно па се наша петља састоји од три микроинструкције (резултујући у мањем укупном броју извршених микроинструкција), али због тога што смо опет ефективно направили &amp;#039;&amp;#039;do-while&amp;#039;&amp;#039; петљу ефекат последње итерације морамо да поништимо на крају. Као и за &amp;lt;code&amp;gt;STRLEN&amp;lt;/code&amp;gt;, за ову ставку може да се претпостави како PC броји микроинструкције уместо инструкције.&lt;br /&gt;
|}&lt;br /&gt;
Користимо укупно седам RISC инструкција у овом сету:&lt;br /&gt;
# LD&lt;br /&gt;
# ST&lt;br /&gt;
# ADD&lt;br /&gt;
# SUB&lt;br /&gt;
# AND&lt;br /&gt;
# BEQZ&lt;br /&gt;
# BNEZ&lt;br /&gt;
Ово нам оставља следећи формат инструкције:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Формат инструкције у четвртом задатку&lt;br /&gt;
! 36 !! 35 !! 34 !! 33 !! 32 !! 31 !! 30 !! 29 !! 28 !! 27 !! 26 !! 25 !! 24 !! 23 !! 22 !! 21 !! 20 !! 19 !! 18 !! 17 !! 16 !! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 9 !! 8 !! 7 !! 6 !! 5 !! 4 !! 3 !! 2 !! 1 !! 0&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | Код&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; | PIS флегови&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Одредишни регистар&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Изворишни регистар 1&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | Изворишни регистар 2&lt;br /&gt;
| colspan=&amp;quot;16&amp;quot; | Непосредна вредност&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Категорија:Рокови]]&lt;br /&gt;
[[Категорија:АОР2]]&lt;/div&gt;</summary>
		<author><name>KockaAdmiralac</name></author>
	</entry>
</feed>