Alternative Rechnerarchitekturen (Teil 3)

Basisarchitektur rRISC

Die Wahl des RISC-Grundmodells als vierstufige Pipeline ist grundsätzlich keine Beschränkung. Wie noch zu zeigen ist, geht nicht die Anzahl der Pipeline-Stufen in die Gewinn-/Verlustrechnung zur CPI-Bestimmung ein, sondern die Anzahl der verlorenen Takte bei Fehlvorhersage (und spekulativer Ausführung). Bedingt durch diesen Umstand kann die vergleichsweise einfache Architektur zur Darstellung aller Effekte genutzt werden.

Die angestrebte Instruktionsparallelität selbst lässt sich nur durch parallel ausführende Teileinheiten erreichen. Zu diesem Zweck klassifizieren wir zunächst alle Instruktionen in folgender Weise :

1. Load-/Store-Befehle: Hierzu zählen neben den Befehlen Load und Store auch Push- und Pop-Instruktionen, die einen Zugriff auf den Stack ermöglichen.

2. Move-Befehle: Alle Kopier- (Move) und Austausch-Instruktionen (Xchg) zwischen Registern des Prozessors sind hier zusammengefasst.

3. Befehle zur Integer-Arithmetik.

4. Logische Befehle: In dieser Klasse sind alle logischen Operationen einschließlich der Shift- und Rotationsoperationen zusammengefasst.

5. Foating-Point-Operationen (entfallen in diesem Fall).

6. Kontrollflussbefehle: Bedingte und unbedingte Sprungbefehle bilden - unabhängig von der Sprungzieladressierung - eine weitere Klasse von Befehlen.

7. NOP (No Operation): Die NOP-Instruktion wird gegebenenfalls zur programmtechnischen Verzögerung genutzt. Sie dient allerdings gelegentlich auch als Fülloperation, die im Programmspeicher selbst als Platzhalter fungiert, ohne irgendeine Funktion zu haben.

8. Weitere Kontrollflussbefehle: Je nach Mikroprozessortyp können weitere Befehle wie STOP und WAIT existieren, die direkten Einfluss auf Ausführungsmodi haben. Sämtliche weiteren Instruktionen sind in der letzten Klasse zusammengefasst. Weitere Kommandos, die die Flags beeinflussen (zum Beispiel SEC, Set Carry) und darüber den Kontrollfluss steuern können, zählen in diesen Bereich.

Bei einer angestrebten Parallelisierung der Befehlsausführung bietet es sich im einfachsten Fall an, mehreren Instruktionen aus disjunkten Klassen einen Ausführungs-Slot anzubieten. Bei der hier gewählten Architektur ist die Klasse 5 leer. Als erster Ansatz zur parallelen Ausführung werden sämtliche Befehle der Klasse 1 zur Klasse M (Memory Access), alle Befehle der Klassen 2, 3 und 4 zur Klasse I (interne Befehlsausführung) und alle Kontrollflussbefehle der Klasse 6 zur Klasse C (Kontrollfluss, Control Flow) gezählt. Je ein Befehl der Klassen M, I und C können parallel zur Ausführung kommen und werden in einer Struktur im FLAB gespeichert. Diese Version bezeichnet man als rRISC Level 1.

Die Befehlsklasse 7 ist eine Besonderheit. Kommt ein NOP-Befehl als Platzhalter zum Einsatz, kann seine Ausführung gänzlich entfallen. In diesem Fall bedeutet die Integration des NOP in einer Befehlszusammenfassung nur, dass ein Befehlszähler um eine Einheit inkrementiert werden muss, andere Informationen sind nicht notwendig. Befehle der Klasse 8 bleiben bei der Auswertung paralleler Instruktionen aktuell unberücksichtigt.