Information Technology Reference
In-Depth Information
sprechenden Spalte stehenden Bindestrichs nicht berücksichtigt. Das Ausgangssig-
nal ist daher ausschließlich davon abhängig, was in dem im Befehl enthaltenen Feld
COND ( condition ) codiert ist. Der Wert always bewirkt, dass der Decoder das Steu-
ersignal „ verbinde +“ erzeugt und einen unbedingten Sprung zur befehlszählerrelati-
ven Adresse ADDR ausführt. Der Wert never bewirkt, dass der Decoder das Steuer-
signal „ verbinde +1“ erzeugt und keinen Sprung ausführt. In Verknüpfungsbefehlen
muss in COND immer never codiert sein.
Bemerkung. Soll ein Eingangssignal in einem als ROM realisierten Decoder ignoriert werden, ist
dies möglich, wenn man statt eines Eintrags mehrere Einträge mit den möglichen Kombinationen
der zu ignorierenden Eingangsleitungen vorsieht. Unabhängigkeit vom Bedingungsbit Z lässt sich
z.B. erreichen, indem zwei Einträge im ROM vorgesehen werden, die sich nur darin unterscheiden,
dass in einem Z gelöscht und im anderen Z gesetzt ist. Da ein Bedingungsbit nur gesetzt oder
gelöscht sein kann, und hier in beiden Fällen dasselbe Ausgangssignal erzeugt wird, ist der Zustand
von Z für das Ausgangssignal offensichtlich ohne Bedeutung. Mit jeder weiteren zu ignorierenden
Eingangssignalleitung verdoppelt sich hierbei natürlich die Anzahl der im ROM benötigten Ein-
träge. Deshalb realisiert man entsprechende Decoder normalerweise als PLA, die mit jedem Eintrag
nur die wirklich zu berücksichtigenden Eingangssignale auswerten, so dass die oberen beiden Ein-
träge des in Bild 2.11a dargestellten Decoders jeweils nur einen Eintrag erfordern.
Angenommen, die im Befehl codierten Felder ALU und COND in Bild 2.11a sind
jeweils vier Bit breit, so dass insgesamt 16 unterschiedliche Operationen und ebenso
viele Bedingungen in einem Befehl codiert werden können, dann ist der Operations-
code insgesamt 17 Bit breit. Da viele der damit möglichen 131072 Operationscodes
entweder Redundanzen aufweisen oder keine sinnvolle Funktion besitzen, lassen
sich die Befehle eines Programmiermodells auch kompakter codieren, indem ihnen
nämlich eindeutige Nummern zugeordnet werden. Weil reale Prozessoren mit 1-
Adressarchitektur selten über mehr als 512 Befehle verfügen (der MC68HC11 von
Motorola z.B. 145 Befehle mit teilweise unterschiedlichen Adressierungsarten, so
dass insgesamt 316 Befehlsvarianten existieren [129]), reichen neun Bits aus, um
die Operationen eindeutig unterscheidbar zu codieren. Allerdings müssen die Steu-
ersignale hierbei durch Umcodierung aus dem Operationscode gewonnen werden.
In Bild 2.11b ist ein Befehlsdecoder dargestellt, der aus dem im Befehl codierten
Operationscode, in dem die Operation und die auszuwertende Bedingung enthalten
ist, Steuersignale erzeugt. Im Prinzip handelt es sich hierbei um eine Erweiterung
des in 2.11a gezeigten Decoders, nur dass bei der Adressierung eines Eintrags
zusätzlich die jeweils auszuführende Operation ausgewertet wird. Bei einer Addi-
tion wird z.B. der oberste Eintrag des Befehlsdecoders selektiert und auf diese
Weise die zu den Ausgangsleitungen angegebenen Signalpegel erzeugt. Die im Feld
COND codierte Bedingung und die Zustände der Bedingungsbits werden dabei
ignoriert. Sie sind nur für bedingte Befehle, z.B. Sprünge, von Bedeutung.
Dies ist beispielhaft in den letzten beiden Zeilen des Befehlsdecoders dargestellt.
Mit ihnen wird ein bedingter Sprungbefehl decodiert, der nur verzweigt, wenn das
Bedingungsbit Z ein Ergebnis gleich Null anzeigt. Eingangsseitig unterscheiden
sich die Zeilen nur dadurch, dass die obere selektiert wird, wenn Z gesetzt ist, und
die untere, wenn Z gelöscht ist. Ausgangsseitig wird entsprechend dafür gesorgt,
dass M 5 einmal den Wert „ verbinde +“ und einmal der Wert „ verbinde +1“ führt. Es
sei angemerkt, dass das Signal ME mit dem gesteuert wird, ob auf den Datenspei-
 
Search WWH ::




Custom Search