Information Technology Reference
In-Depth Information
Jede dieser Gruppen wird anschließend einzeln codiert, wobei die Breiten der Ope-
rationscodes möglichst umgekehrt proportional zur Häufigkeit gewählt wird, mit der
die Befehle einer Gruppe in einem repräsentativen Programm benutzt werden 1 (die
Befehle werden quasi huffmancodiert [154]). Die Kompaktheit, mit der die Befehle
eines Befehlssatzes im Durchschnitt codiert sind, ist quantitativ durch die sog.
Codedichte erfassbar. Um sie zu ermitteln, muss man den Speicherbedarf eines
repräsentativen Programms durch die Anzahl der darin statisch codierten Befehle
teilen.
Die Codedichte erlaubt noch keine Aussage darüber, wie kompakt sich ein Pro-
gramm codieren lässt, da die Mächtigkeit der Befehle darin unberücksichtigt bleibt.
Dies ist erst mit Hilfe der sog. Semantikdichte möglich. Um sie zu berechnen, wird
angenommen, dass funktionsgleiche Programme, die unter Verwendung unter-
schiedlicher Befehlssätze und Befehlscodierungen programmiert sind, nur deshalb
in ihrer Größe voneinander abweichen, weil in ihnen Redundanzen enthalten sind.
Werden die einzelnen Programme mit Hilfe eines optimalen Kompressors umcodiert
und die Redundanzen dabei entfernt, sollten deshalb Bitfolgen entstehen, die in
ihrem Speicherbedarf weder vom Befehlssatz noch von der Befehlscodierung
abhängen. Die Semantikdichte ergibt sich, indem das Mittel der Quotienten, jeweils
gebildet aus dem Speicherplatzbedarf mehrerer repräsentativer optimal komprimier-
ter sowie unkomprimierter Programme, berechnet wird. Die maximale Semantik-
dichte entsprechend dieser Definition ist gleich Eins. Sie wird in der Realität nicht
erreicht, da hierzu jeder redundant auftretende Algorithmus als Einzelbefehl defi-
niert und entsprechend seiner Häufigkeit codiert werden müsste. Der klassische
Befehlssatz enthält hingegen nur ausgewählte Befehle. Redundanzen von Befehls-
folgen können hierbei nicht vermieden werden [107].
Beispiel 1.12. Befehlscodierung . In Tabelle 1.9 ist der Befehlssatz einer einfachen nach dem
Lade-Speichere-Prinzip arbeitenden 3-Adressarchitektur dargestellt (die umfangreich genug ist, um
damit gemäß der Churchen These beliebige Algorithmen verarbeiten zu können). Es wird vorausge-
setzt, dass der Prozessor auf den Hauptspeicher über 16 Bit breite Byteadressen zugreift und dass
die Befehle eine einheitliche Breite besitzen, die gleich dem ganzen Vielfachen eines Bytes ist.
Zuerst soll die absolute Breite eines Befehls festgelegt werden: Zur Unterscheidung der neun
Befehlsvarianten (sechs Befehle, von denen drei Befehle in jeweils zwei Varianten existieren) wer-
den insgesamt vier Bits benötigt. Die Codierung der Befehle in einem Byte ist somit möglich,
würde jedoch dazu führen, dass die drei in einem dyadischen Befehl benötigten Registeradressen
jeweils nur ein Bit breit sein dürften. Da dies für eine 3-Adressarchitektur zu gering ist, wird die
Befehlsbreite hier auf 16 Bit festgelegt. Eine Registeradresse darf damit vier Bit breit sein. Insge-
samt lassen sich somit 16 Register direkt adressieren.
Es ist nicht möglich, in einem 16 Bit breiten Befehl einen Operationscode und eine 16 Bit breite
Byteadresse für direkte Zugriffe auf den Hauptspeicher zu codieren. Für die Lade- und Speichere-
befehle (ld und st) ist dies unproblematisch, weil ein Datenzugriff auf eine absolute Adresse
dadurch nachbildbar ist, dass die Adresse zuerst in ein Register geladen und anschließend ein indi-
rekter Zugriff auf den Hauptspeicher durchgeführt wird. Bei einem Unterprogrammaufruf (call)
1.
Ein Programm wird als repräsentativ bezeichnet, wenn es dem typischen Einsatzfeld eines Pro-
zessors entspricht. Der Begriff ist rein theoretisch und lässt sich definieren als proportional zur
Ausführungshäufigkeit gewichtete Zusammenfassung aller für einen Prozessor formulierbaren
Programme.
Search WWH ::




Custom Search