Information Technology Reference
In-Depth Information
Operand wird entweder explizit über die im Befehl codierte Adresse oder implizit
als Inhalt des Akkumulators adressiert. Das Ergebnis einer Operation überschreibt
normalerweise den Inhalt des Akkumulators, kann jedoch auch in den Speicher
geschrieben werden, und zwar unter die im Befehl codierte einzelne Adresse.
Letzteres ist meist auf monadische Operationen beschränkt, da sonst auf einen z.B.
im Hauptspeicher befindlichen Operanden zeitsequentiell zuerst lesend und
anschließend schreibend zugegriffen werden müsste. Dies ist aufwendiger zu imple-
mentieren, als pro Befehl ausschließlich lesend oder schreibend auf den Hauptspei-
cher zuzugreifen. Unabhängig davon sind 1-Adressarchitekturen im Vergleich zu 2-
und 3-Adressarchitekturen sehr einfach realisierbar. Zum Beispiel wird statt vieler
nur ein einzelnes nicht zu adressierendes Register benötigt, dass über nicht schalt-
bare Pfade mit einem Rechenwerk verbunden ist (siehe Abschnitt 2.1.6).
Ein einzelner 1-Adressbefehl kann i.Allg. kompakter codiert werden als die funkti-
onsgleichen Befehle oder Befehlsfolgen für 2- oder 3-Adressarchitekturen. Dafür
haben 1-Adressarchitekturen jedoch den Nachteil, dass Zwischenergebnisse nicht
im Registerspeicher, sondern im Hauptspeicher abgelegt werden müssen, wodurch
Programme für 1-Adressarchitekturen etwas mehr Speicherplatz belegen als funkti-
onsgleiche Programme für 2- bzw. 3-Adressarchitekturen. Einige reale 1-Adressar-
chitekturen verfügen deshalb über mehrere Akkumulatoren, die explizit adressiert
werden müssen. Obwohl zwei Adressen in den Befehlen codiert sind, wird dies
noch nicht als 2-Adressarchitektur bezeichnet, da die Akkumulatoren normaler-
weise weniger flexibel nutzbar sind als die Register einer echten 2-Adressarchitek-
tur. So können die Ergebnisse dyadischer Operationen normalerweise nur in einem
Akkumulator und nicht, wie bei 2-Adressarchitekturen meist möglich, im Haupt-
speicher abgelegt werden.
Die Anzahl der Hauptspeicherzugriffe lässt sich auch dadurch vermindern, dass
zusätzlich zu einem Akkumulator ein Arbeitsregistersatz oder ein Arbeitsspeicher
geringer Kapazität vorgesehen wird. Zugriffe darauf werden schneller als Zugriffe
auf den Hauptspeicher ausgeführt. Außerdem lassen sich direkte Adressen wegen
der geringen Kapazitäten in wenigen Bits codieren. Die Addition des Akkumulato-
rinhalts mit dem Inhalt eines Arbeitsregisters ist beim i8051 von Intel bzw. Siemens
z.B. in einem acht Bit breiten Befehl codiert (siehe [159]).
Neben Akkumulatoren und Arbeitsregistern bzw. einem Arbeitsspeicher verfügen
viele 1-Adressarchitekturen noch über separate Index - bzw. Adressregister , um indi-
rekt auf den Hauptspeicher zugreifen zu können. Zwar ist es prinzipiell möglich,
indirekt über den Inhalt eines Akkumulators, Arbeitsregisters oder einer Arbeits-
speicherzelle auf den Hauptspeicher zuzugreifen, jedoch ist dies komplizierter, als
hierzu spezialisierte Register zu verwenden. Zum Beispiel sind die Arbeitsregister
und der Arbeitsspeicher normalerweise byteadressierbar, eine Adresse jedoch meist
wenigstens 16 Bit breit, so dass für einen indirekten Zugriff zwei Einträge benötigt
werden, die zeitsequentiell oder parallel gelesen werden müssen.
Die Anzahl der Akkumulatoren, Arbeitsregister oder Arbeitsspeicherzellen einiger
1-Adressarchitekturen ist in Tabelle 1.5 zusammen mit den Registerbreiten, den
Breiten für unmittelbare Operanden und den minimalen Befehlsbreiten angegeben.
Search WWH ::




Custom Search