Information Technology Reference
In-Depth Information
Eine triviale Anforderung, die bei der Codierung eines Befehlssatzes berücksichtigt
werden muss, ist, dass alle Befehle eindeutig voneinander unterscheidbar sind. Die
Menge der möglichen Befehlscodes sollte im Idealfall sogar größer als die Menge
der implementierten Befehle sein, um bei Bedarf den Befehlssatz in späteren Reali-
sierungen einer Architektur ausbauen zu können. Zwar ist ein Befehlssatz auch
erweiterbar, indem ein zusätzlicher Verarbeitungsmodus vorgesehen wird, der sich
z.B. durch Modifikation eines normalerweise vorhandenen Statusregisters ein- bzw.
ausschalten lässt, dies ist jedoch umständlicher zu handhaben, als würden die
Befehle ohne Zugriff auf ein Stausregister ausführbar sein.
Ohne zusätzliche Verarbeitungsmodi ist die Erweiterung eines Befehlssatzes immer
möglich, wenn bei variabel breiten Befehlen zumindest ein Operationscode benannt
werden kann, der keinem Befehl zugeordnet ist. Falls in einem Befehlssatz z.B. der
Befehlscode 0x12 nicht durch einem Befehl belegt ist, dann gilt dies auch für die
Befehlscode 0x1200, 0x1201 usw. Eine Variante dieser Art Befehle zu codieren, ist
in der Nemesis-Architektur realisiert, dessen Befehle einheitlich 16 Bit breit sind
und der über Präfixbefehle verfügt, mit denen die Interpretation des jeweils unmit-
telbar nachfolgenden Befehls verändert werden kann, wobei für die Decodierung
der aus Präfixbefehl und nachfolgendem Befehl bestehenden Einheit dieselbe Zeit
benötigt wird, wie für einen präfixfreien Befehl [114].
Die Qualität, mit der ein Befehlssatz codiert ist, kann daran bemessen werden, wie
aufwendig ein Decoder zu realisieren ist, wie schnell er arbeitet und wieviel Spei-
cherplatz für ein repräsentatives Programm benötigt wird. Komplexität und
Geschwindigkeit sind oft umgekehrt proportional voneinander abhängig. Dabei gilt:
Je einfacher ein Decoder ist, desto schneller werden die Befehle von ihm verarbei-
tet. Ein absolutes Optimum wird erreicht, wenn die in einem Prozessor zu erzeugen-
den Steuersignale direkt als Bits in den Befehlen codiert sind. Wegen der meist gro-
ßen Anzahl von Steuersignalen sind Programme mit in dieser Weise codierten
Befehlen jedoch sehr speicherintensiv. Außerdem sind die zu erzeugenden Steuersi-
gnale normalerweise nicht bekannt, wenn die Befehlscodes festgelegt werden.
Dies ist auch ein Grund dafür, weshalb eine systematische Optimierung der Befehls-
codierung nach Komplexität und Geschwindigkeit des Decoders zu diesem Zeit-
punkt nicht möglich ist. Um dennoch die Befehlscodierung festlegen zu können,
sollte berücksichtigt werden, dass der Decoder desto einfacher zu realisieren ist, je
weniger Fälle er zu unterscheiden hat. Zum Beispiel sollten die in den Befehlen
codierten Operationscodes, Adressen und Modusinformation vom konkreten Befehl
unabhängig, jeweils einheitlich breit und festen Bitpositionen zugeordnet sein.
Mit Befehlen, die konsequent in dieser Art und Weise codiert sind, werden unter
realistischen Annahmen keine speicherplatzsparenden Programme erzeugt werden
können, weil nämlich für Operationscode, Adressen und Modusinformationen
jeweils im Befehl Felder reserviert sein müssen, die nicht in allen Befehlen benötigt
werden. Deshalb wird der Befehlssatz zunächst in Gruppen unterteilt, die sich
bezüglich der jeweils zu codierenden Informationen entsprechen, z.B. eine Gruppe,
in der Befehle mit dyadischen, und eine, in der Befehle mit monadischen Verknüp-
fungsoperationen enthalten sind.
Search WWH ::




Custom Search