2.2.2 Befehlssatz

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
 
(24 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<loop_area type="definition">'''Definition: Befehlssatz'''<br />
 
<br />
== Definition: Befehlssatz ==
<p>
<loop_index id="5fa978461fd51">Befehlssatz, CPU|CPU, Befehlssatz</loop_index>
<loop_area type="definition">
<p>
Unter dem '''Befehlssatz einer CPU''' versteht man die Menge der von einer CPU unterstützten Befehle.
Unter dem '''Befehlssatz einer CPU''' versteht man die Menge der von einer CPU unterstützten Befehle.
</p>
</loop_area>
</loop_area>
</p>
<br />
== Beispiel Befehlssatz ==
<p>
Ein Beispiel für einen ganz einfachen Befehlssatz ist in dem bereits bekannten Video [http://youtu.be/cX5XLc9e_g4 Vom Quellcode zum Prozessor] zu sehen:
Ein Beispiel für einen ganz einfachen Befehlssatz ist in dem bereits bekannten Video [http://youtu.be/cX5XLc9e_g4 Vom Quellcode zum Prozessor] zu sehen:
<p><loop_figure title="Einfacher Befehlssatz" description="" copyright="CC-BY" index=true show_copyright=true>[[Datei:Einfacher_befehlssatz.JPG]]</loop_figure></p>
</p>
Die Auflistung der einzelnen Befehle erfolgt in dem vorangegangenen Bild jeweils in Maschinencode (3 Bit) als auch als Assemblerbefehl.


Innerhalb des Befehlssatzes lassen sich einzelne '''Befehlsarten''' unterscheiden. Zu den Befehlsarten zählen unter anderem:
<p>
* Datenbewegungsbefehle (z.B. LOAD, STORE)
<loop_index id="5fa978461fd57">NOOP-Befehl|Befehl, NOOP|LOAD-Befehl|Befehl, LOAD|STORE-Befehl|Befehl, STORE|ADD-Befehl|Befehl, ADD|SUB-Befehl|Befehl, SUB|EQUAL-Befehl|Befehl, EQUAL|JUMP-Befehl|Befehl, JUMP|HALT-Befehl|Befehl, HALT</loop_index>
* Arithmetisch-logische Befehle (z.B. ADD, SUB)
<loop_figure title="Einfacher Befehlssatz" description="" copyright="CC-BY" index=true show_copyright=true id="5fa978461fd5c">[[Datei:Einfacher_befehlssatz.JPG]]</loop_figure></p>
* Programmsteuerbefehle (z.B. JUMP, EQUAL)
* Systemsteuerbefehle (z.B. HALT)
Eine umfassendere Auflistung und Erläuterung der Befehlsarten ist bei  <cite>Brinkschulte+et.al.+2010</cite> zu finden.


Neben der Festlegung der Namen der einzelnen Befehle (bzw. deren binärer Codierung), ist die Festlegung des sogenannten '''Befehlsformats''' eine wichtige Entscheidung bei der Entwicklung einer CPU.
<p>
Die Auflistung der einzelnen Befehle erfolgt in dem vorangegangenen Bild jeweils in Maschinencode (3 Bit) als auch als Assemblerbefehl.
</p>


Das '''Befehlsformat''' definiert für jeden einzelnen Befehl, wie dieser codiert ist. Im Video [http://youtu.be/cX5XLc9e_g4 Vom Quellcode zum Prozessor] entspricht dies dem aus drei Teilen bestehende Format:
<br />
== Befehlsarten ==
<p>
Innerhalb des Befehlssatzes lassen sich einzelne <loop_index id="5fa978461fd5f">Befehlsart</loop_index>'''Befehlsarten''' unterscheiden. Zu den Befehlsarten zählen unter anderem:
* <loop_index id="5fa978461fd63">Datenbewegungsbefehl|Befehl, Datenbewegungsbefehl</loop_index>Datenbewegungsbefehle (z.B. LOAD, STORE)
* <loop_index id="5fa978461fd67">Arithmetisch-logischer Befehl|Befehl, arithmetisch-logisch</loop_index>Arithmetisch-logische Befehle (z.B. ADD, SUB)
* <loop_index id="5fa978461fd69">Programmsteuerbefehl</loop_index><loop_index id="5fa9789e9dc42">Befehl, Programmsteuerbefehl</loop_index>Programmsteuerbefehle (z.B. JUMP, EQUAL)
* <loop_index id="5fa978461fd6d">Systemsteuerbefehl</loop_index><loop_index id="5fa978464bbf9">Befehl, Systemsteuerbefehl</loop_index>Systemsteuerbefehle (z.B. HALT)
</p>


'''<Befehl><Num><Operand>'''
<br />
 
<p>
Dabei wird <Befehl> mit drei Bit codiert, <Num> mit einem Bit und <Operand> mit sechs Bit. Die im Video gezeigte Reserve dient lediglich dazu, die gesamte Befehlslänge auf ein Vielfaches eines Bytes (= acht Bit) zu ergänzen. Die Befehlslänge aus dem Beispiel im Video beträgt somit für alle Befehle 16 Bit.
<loop_area type="notice">'''Weiterführende Literatur'''
 
<p>
 
<cite id="5fa978461fd70">Brinkschulte+et+al.+2010</cite> erläutern in Kapiteln 2.1.4 (Befehlssatz) weitere Hintergründe zum Thema. Die Lektüre dieser Quelle sei ausdrücklich empfohlen.
 
</p>
Auch bei den Befehlsformaten werden verschiedene Klassifizierungen unterschieden, <cite>Brinkschulte+et.al.+2010</cite> gibt diese Klassen ausführlich an. An dieser Stelle werden lediglich drei unterschiedliche Varianten betrachtet:
<p>
 
<small>Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten [[Hinweise für Studierende#Downloadbare Bücher von Springerlink|über ihre Hochschulen von Springerlink zu beziehen.]]</small>
* Einadressformat
</p>
* Zweiadressformat
* Dreiadressformat
 
Das '''Einadressformat''' entspricht dem Format aus dem Video [http://youtu.be/cX5XLc9e_g4 Vom Quellcode zum Prozessor]. Hier wird für die einzelnen Befehle nur eine Adresse eines Operaden (deshalb ''Einadressformat'') angegeben. Wird ein zweiter Operand benötigt, so wird vorausgesetzt, dass dieser sich im Register Akkumulator befindet. Das bei der Abarbeitung des Befehls berechnete Ergebnis wird per Definition wieder im Akkumulator gespeichert.
 
<loop_area type="task">'''Aufgabe 1'''<br />
Betrachte die Befehle NOOP, LOAD, STORE, ADD, SUB, EQUAL, JUMP, HALT aus dem Video [http://youtu.be/cX5XLc9e_g4 Vom Quellcode zum Prozessor]. Welche dieser Befehle benötigen einen Operaden, welche benötigen keinen Operanden?
</loop_area>
</loop_area>
 
</p>
Das Zweiadressformat
<br />
<hr />
<sub>Diese Seite steht unter der [http://creativecommons.org/licenses/by/3.0/deed.de Creative Commons Namensnennung 3.0 Unported Lizenz] [http://creativecommons.org/licenses/by/3.0/deed.de http://i.creativecommons.org/l/by/3.0/80x15.png]
</sub>

Aktuelle Version vom 10. November 2020, 16:06 Uhr


Definition: Befehlssatz

Definition

Unter dem Befehlssatz einer CPU versteht man die Menge der von einer CPU unterstützten Befehle.


Beispiel Befehlssatz

Ein Beispiel für einen ganz einfachen Befehlssatz ist in dem bereits bekannten Video Vom Quellcode zum Prozessor zu sehen:

Einfacher befehlssatz.JPG

Die Auflistung der einzelnen Befehle erfolgt in dem vorangegangenen Bild jeweils in Maschinencode (3 Bit) als auch als Assemblerbefehl.


Befehlsarten

Innerhalb des Befehlssatzes lassen sich einzelne Befehlsarten unterscheiden. Zu den Befehlsarten zählen unter anderem:

  • Datenbewegungsbefehle (z.B. LOAD, STORE)
  • Arithmetisch-logische Befehle (z.B. ADD, SUB)
  • Programmsteuerbefehle (z.B. JUMP, EQUAL)
  • Systemsteuerbefehle (z.B. HALT)


Hinweis

Weiterführende Literatur

Brinkschulte et al. 2010 erläutern in Kapiteln 2.1.4 (Befehlssatz) weitere Hintergründe zum Thema. Die Lektüre dieser Quelle sei ausdrücklich empfohlen.

Studierende sind oftmals berechtigt, eine PDF-Version dieses Buches ohne entstehende Kosten über ihre Hochschulen von Springerlink zu beziehen.