<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Branch_Delay_Slot</id>
	<title>Branch Delay Slot - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Branch_Delay_Slot"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Branch_Delay_Slot&amp;action=history"/>
	<updated>2026-06-03T02:50:29Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Branch_Delay_Slot&amp;diff=985209&amp;oldid=prev</id>
		<title>imported&gt;Joschi71: typos</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Branch_Delay_Slot&amp;diff=985209&amp;oldid=prev"/>
		<updated>2025-03-23T01:28:08Z</updated>

		<summary type="html">&lt;p&gt;typos&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Belege fehlen}}&lt;br /&gt;
&lt;br /&gt;
In der [[Rechnerarchitektur]] ist eine &amp;#039;&amp;#039;&amp;#039;Branch Delay Instruction&amp;#039;&amp;#039;&amp;#039; ein [[Maschinenbefehl]], der direkt einem bedingten [[Sprunganweisung|Verzweigungsbefehl]] folgt. Unabhängig davon, ob die Verzweigung genommen wurde oder nicht, wird dieser Befehl immer ausgeführt. Die Position eines solchen Maschinenbefehls in der Pipeline heißt &amp;#039;&amp;#039;&amp;#039;Branch Delay Slot&amp;#039;&amp;#039;&amp;#039; (Warteplatz).&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
Branch Delay Slots werden verwendet, um die [[Pipeline (Prozessor)|Pipeline]] besser auszulasten. Bei [[Prozessor]]en, die eine Pipeline verwenden, wird die Ausführung eines Befehls in mehrere Stufen aufgeteilt. Dabei werden mehrere Befehle parallel ausgeführt, wobei in jeder Stufe genau ein Befehl bearbeitet wird. &lt;br /&gt;
&lt;br /&gt;
Bei Verzweigungsbefehlen tritt dabei ein sogenannter [[Pipeline-Hazard|Hazard]] auf: wenn der nächste Befehl geladen wird, ist der Verzweigungsbefehl noch nicht fertig ausgeführt; deshalb ist nicht klar, welcher Befehl geladen werden soll. Daher muss nach einem Verzweigungsbefehl gewartet werden.&lt;br /&gt;
&lt;br /&gt;
Um diese Wartezeit überbrücken zu können, wird die Branch Delay Instruction verwendet. Sie wird in jedem Fall ausgeführt, unabhängig vom Resultat des Verzweigungsbefehls. &lt;br /&gt;
&lt;br /&gt;
== Code-Beispiel ==&lt;br /&gt;
Im folgenden [[Assemblersprache|Assemblercode]] werden nach jedem Sprungbefehl die nachfolgenden 3 Befehle unabhängig vom Ergebnis des Sprungs immer ausgeführt.&lt;br /&gt;
&lt;br /&gt;
  do&lt;br /&gt;
    *r3++ = *r1++ + *r2++;&lt;br /&gt;
  while (--r4);&lt;br /&gt;
&lt;br /&gt;
 .repeat&lt;br /&gt;
     dec  r4&lt;br /&gt;
     brz  .repeat&lt;br /&gt;
     ld   r0,r1+    ; diese drei Befehle&lt;br /&gt;
     add  r0,r2+    ; werden immer ausgeführt&lt;br /&gt;
     st   r3+,r0    ; unabhängig vom Sprungbefehl&lt;br /&gt;
&lt;br /&gt;
Die Effizienz dieser Optimierungsstrategie hängt davon ab, wie gut es gelingt, Anweisungen zu finden, die unabhängig vom Sprungergebnis sind. Im Extremfall gelingt dies nicht, und die Slots müssen durch [[Nulloperation|NOPs]] aufgefüllt werden.&lt;br /&gt;
&lt;br /&gt;
Nachteilig ist die schlechte [[Menschenlesbarkeit]] des Codes: Um das Programm richtig interpretieren zu können, muss ein menschlicher [[Softwareentwickler|Entwickler]] wissen, wie viele Branch Delay Instructions (in diesem Beispiel: drei) nach dem Sprungbefehl folgen, was aus dem Code selbst nicht zweifelsfrei hervorgeht. Er benötigt also zwingend die [[Technische Dokumentation|Dokumentation]] des [[Befehlssatz]]es.&lt;br /&gt;
&lt;br /&gt;
== Prozessoren mit Branch Delay Slot ==&lt;br /&gt;
Das Branch Delay Slot stellt eine elegante und einfache Alternative zur [[Sprungvorhersage]] dar. Zur Sprungvorhersage ist viel Hardware-Aufwand (viele [[Transistor]]en) nötig, die wiederum viel Strom verbrauchen.&lt;br /&gt;
&lt;br /&gt;
Daher wird diese Technologie hauptsächlich in energiesparenden oder kostengünstigen Prozessoren (u.&amp;amp;nbsp;a. [[Mikrocontroller]]n) eingesetzt, beispielsweise in:&lt;br /&gt;
* [[Reduced Instruction Set Computing|RISC]]-Architekturen:&lt;br /&gt;
** [[MIPS-Architektur|MIPS]]&lt;br /&gt;
** [[PA-RISC]]&lt;br /&gt;
** [[Sun SPARC|SPARC]]&lt;br /&gt;
** [[SuperH]]&lt;br /&gt;
* [[Digitaler Signalprozessor|DSP]]-Architekturen:&lt;br /&gt;
** [[µPD77230]]&lt;br /&gt;
** [[TMS320C3x]]/[[TMS320C4x]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Rechnerarchitektur]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Joschi71</name></author>
	</entry>
</feed>