Befehlsregister (IR)
Übersicht
- Zweck: Das Befehlsregister (IR, Instruction Register) ist ein spezialisiertes Register innerhalb einer CPU, das den aus dem Speicher geholten Maschinencodebefehl temporär speichert, während er vom Steuerwerk decodiert und ausgeführt wird.
- Symbol: Das Befehlsregister wird durch einen rechteckigen Block mit Eingängen für Daten aus dem Speicher, Takt und Ladefreigabe sowie Ausgängen, die die Befehlsbits an den Decoder liefern, dargestellt.
- DigiSim.io-Rolle: Dient als kritische Komponente in CPU-Designs, verbindet die Hol- und Decodierphasen des Befehlszyklus und bietet stabilen Zugriff auf den Opcode und die Operanden des Befehls.

Funktionsbeschreibung
Logikverhalten
Das Befehlsregister erfasst und hält die Befehlsdaten aus dem Speicher während des Holzyklus, sodass sie dem Befehlsdecoder während der Decodier- und Ausführungszyklen zur Verfügung stehen. Es fungiert in erster Linie als Speicherelement mit Ladesteuerung.
Funktionstabelle:
| LD | CLK | A_OE | Aktion | Opcode (OP0-OP3) | Adresse (A0-A3) |
|---|---|---|---|---|---|
| 1 | ↑ | X | Neuen Befehl laden | Geladene Daten[3:0] | Geladene Daten[7:4] oder Hi-Z |
| 0 | ↑ | X | Aktuellen Wert halten | Aktueller Wert | Aktueller Wert oder Hi-Z |
| X | 0 | X | Keine Änderung | Aktueller Wert | Aktueller Wert oder Hi-Z |
| X | X | 1 | Adress-Ausgangsfreigabe | Aktueller Wert | Aktueller Wert |
| X | X | 0 | Adresse Hi-Z | Aktueller Wert | Hi-Z |
Hinweis: ↑ steht für eine steigende Taktflanke, X steht für „don't care".
Eingänge und Ausgänge
Eingänge:
- I0-I7: 8-Bit-Dateneingänge, die mit dem Speicherdatenbus verbunden sind, um geholte Befehle zu empfangen.
- LD: 1-Bit-Ladefreigabe-Eingang, der das Laden eines neuen Befehls aktiviert, wenn aktiv.
- CLK: 1-Bit-Takteingang, der den Ladevorgang synchronisiert.
- A_OE: 1-Bit-Adress-Ausgangsfreigabe, die steuert, ob die Adressbits an den Ausgängen anliegen.
Ausgänge:
- OP0-OP3: 4-Bit-Opcode-Ausgänge, die dem Steuerwerk den Operationscode liefern (immer aktiv).
- A0-A3: 4-Bit-Adressausgänge, die Adressinformationen liefern (gesteuert durch A_OE).
- Die Opcode-Ausgänge sind nach dem Laden immer verfügbar, da das Steuerwerk sofortigen Zugriff benötigt.
- Die Adressausgänge können über A_OE in den Tri-State versetzt werden, um den Bus während Speicheroperationen gemeinsam zu nutzen.
Konfigurierbare Parameter
- Registerbreite: Die Anzahl der Bits, die das IR speichern kann, entsprechend der Befehlswortgröße der CPU.
- Taktflankenempfindlichkeit: Ob das Register auf steigende oder fallende Taktflanken reagiert.
- Ladeverhalten: Wie das Ladesteuersignal mit dem Takt interagiert.
- Signallaufzeit: Die Zeit, die die Ausgänge benötigen, um sich nach einem auslösenden Ereignis zu ändern.
Visuelle Darstellung in DigiSim.io
Das Befehlsregister wird als rechteckiger Block mit beschrifteten Eingängen auf der linken Seite (DATA[n:0], CLK, LOAD) und Ausgängen (IR_OUT[n:0]) auf der rechten Seite dargestellt. Der Takteingang ist üblicherweise mit einem Dreieckssymbol gekennzeichnet, das die Flankenempfindlichkeit anzeigt. In einer Schaltung visualisiert die Komponente ihren aktuellen Zustand durch den an den Ausgängen dargestellten Befehlswert und durch Farbänderungen auf den verbundenen Leitungen.
Pädagogischer Wert
Schlüsselkonzepte
- Befehlszyklus: Veranschaulicht eine zentrale Stufe im Hol-Decodier-Ausführungs-Zyklus einer CPU.
- Befehlsdecodierung: Zeigt, wie Maschinencodebefehle für die Interpretation vorbereitet werden.
- CPU-Architektur: Stellt eine grundlegende Komponente in CPU-Steuerwerken vor.
- Sequenzielle Verarbeitung: Zeigt, wie Daten in diskreten Stufen durch eine CPU fließen.
- Befehlssatzarchitektur: Hilft zu visualisieren, wie Maschinencodebefehle behandelt werden.
Lernziele
- Die Rolle des Befehlsregisters im CPU-Ausführungszyklus verstehen.
- Lernen, wie Befehle erfasst und während des CPU-Betriebs stabil gehalten werden.
- Erkennen, wie das IR mit dem Speicher und dem Befehlsdecoder zusammenarbeitet.
- IR-Konzepte beim Entwurf einfacher CPU-Architekturen anwenden.
- Die Beziehung zwischen Befehlsformaten und CPU-Organisation verstehen.
Anwendungsbeispiele/Szenarien
- Grundlegendes CPU-Design: Kernkomponente bei der Implementierung eines Hol-Decodier-Ausführungs-Zyklus.
- Befehlsdecodierung: Bereitstellung stabiler Befehlsdaten für die Decoder-Schaltung.
- Pipeline-Architektur: Trennung der Hol- und Decodierstufen in einer CPU-Pipeline.
- Mikrocode-Implementierung: Halten von Befehlen, während das Steuerwerk durch Mikrooperationen schreitet.
- Pädagogische CPU-Modelle: Demonstration der Grundprinzipien des CPU-Betriebs.
- Fest verdrahtete Steuerwerke: Bereitstellung der Befehlsbits direkt an die kombinatorische Steuerlogik.
Technische Hinweise
- Die Breite des Befehlsregisters entspricht der Befehlsgröße der Prozessorarchitektur.
- Das IR wird typischerweise während der Holphase des Befehlszyklus geladen.
- In einer einfachen, nicht-pipelined CPU hält das IR jeden Befehl für die gesamte Ausführungsdauer.
- In Pipeline-Architekturen können mehrere IRs an verschiedenen Pipeline-Stufen vorhanden sein.
- Die Ausgänge des IR werden oft in Felder aufgeteilt, die je nach Befehlsformat spezifische Bedeutungen haben.
- Einige komplexe Befehlssätze erfordern zusätzliche Logik zur Behandlung von Befehlen variabler Länge.
- Das IR isoliert das Steuerwerk vom Datenbus, sodass der Speicher für andere Operationen genutzt werden kann, während der aktuelle Befehl ausgeführt wird.
graph LR
DATA[Data Bus<br/>from Memory] --> IR[Instruction Register]
CLK[Clock] --> IR
LOAD[Load Enable] --> IR
IR --> OUT[Output to Decoder<br/>Opcode & Operands]
Hinweis: Die Größe des IR entspricht der Befehlsgröße der Architektur. Die Ausgänge werden zur Befehlsdecoder-Logik geleitet.
Wahrheitstabelle / Funktionstabelle
Das IR fungiert in erster Linie als Speicherelement:
| LOAD | CLK | An der Taktflanke ausgeführte Aktion | IR-Ausgang (Folgezustand) |
|---|---|---|---|
| 1 | ↑ | Eingangsdaten laden | Eingangsdaten |
| 0 | ↑ | Aktuellen Wert halten | IR-Ausgang (aktuell) |
| X | 0/↓ | Keine Änderung | IR-Ausgang (aktuell) |
Der Ausgang ist üblicherweise zwischen Ladevorgängen stabil und steht dem Befehlsdecoder kontinuierlich zur Verfügung.
Eigenschaften
Eingangskonfiguration:
- Dateneingänge (I0-I7): 8-Bit-Paralleleingänge, die mit dem Speicherdatenbus verbunden sind, um geholte Befehle zu empfangen.
- Ladefreigabe (LD): Steuersignal, das während des Holzyklus aktiviert wird, um den Befehl zu übernehmen.
- Takteingang (CLK): Synchronisiert den Ladevorgang an der steigenden Flanke.
- Adress-Ausgangsfreigabe (A_OE): Steuert das Tri-State-Verhalten der Adressausgänge zur gemeinsamen Busnutzung.
Ausgangskonfiguration:
- Opcode-Ausgänge (OP0-OP3): 4-Bit-Ausgänge, die den Operationscode liefern, immer aktiv für den sofortigen Zugriff durch das Steuerwerk.
- Adressausgänge (A0-A3): 4-Bit-Ausgänge, die Adressinformationen liefern und über A_OE in Tri-State versetzt werden können.
- Opcode-Bits werden typischerweise direkt zum Steuerwerk zur Befehlsdecodierung geleitet.
- Adressbits werden für Speicheradressierung und Sprungoperationen verwendet, wenn aktiviert.
Funktionalität:
- Speichert den aktuell geholten Befehl temporär.
- Hält den Befehl stabil, während er decodiert und ausgeführt wird.
- Isoliert das Steuerwerk nach dem Holzyklus von Änderungen am Datenbus.
- Liefert die rohen Befehlsbits, die der Befehlsdecoder benötigt.
Signallaufzeit:
- Takt-zu-Ausgang-Verzögerung: Zeit, bis der Befehl nach der Taktflanke während eines Ladevorgangs an den Ausgängen verfügbar ist.
- Setup-/Hold-Zeit-Anforderungen für die Dateneingänge relativ zum Takt- und Ladesignal.
Schaltungskomplexität:
- Kern: Ein Parallel-In-Parallel-Out-Register aus D-Flip-Flops (eines pro Bit der Befehlsbreite).
- Steuerlogik für das LOAD-Signal.
Implementierungsmethoden
- Array von D-Flip-Flops: Die häufigste Methode, bei der ein D-Flip-Flop pro Bit des Befehlsworts verwendet wird, alle gleichzeitig mit einem gemeinsamen LOAD-Signal getaktet.
- Standard-Register-IC: Verwendung handelsüblicher Register-ICs (z. B. 74HC374, 74HC574 für 8-Bit-Befehle).
- FPGA/ASIC-Implementierung: Aus HDL-Code innerhalb eines größeren CPU-Designs synthetisiert.
Anwendungen
- Befehlsdecodier- und Ausführungszyklus: Zentrale Komponente im Hol-Decodier-Ausführungs-Zyklus einer CPU.
- CPU-Steuerwerk: Liefert die Eingabe für die Befehlsdecoder-Logik, die wiederum Steuersignale für den Rest der CPU erzeugt.
- Pipeline-Stufen: In pipelined Prozessoren befindet sich das IR oft innerhalb der Befehlsdecodierstufe (ID).
Einschränkungen
- Feste Breite: Die Größe des IR bestimmt die maximale Befehlsgröße, die die CPU direkt verarbeiten kann.
- Engpass: In einigen älteren Architekturen konnte das Holen in das IR ein Leistungsengpass sein, der durch Techniken wie Befehls-Prefetching und Pipelining behoben wird.
Schaltungsdetails
Ein 8-Bit-IR, realisiert mit D-Flip-Flops:
graph LR
D0[Data_In 0] --> FF0[D Flip-Flop 0]
D1[Data_In 1] --> FF1[D Flip-Flop 1]
D2[Data_In 2] --> FF2[D Flip-Flop 2]
D7[Data_In 7] --> FF7[D Flip-Flop 7]
CLK[Clock] --> FF0
CLK --> FF1
CLK --> FF2
CLK --> FF7
LOAD[Load Enable] --> FF0
LOAD --> FF1
LOAD --> FF2
LOAD --> FF7
FF0 --> OUT0[IR_Out 0]
FF1 --> OUT1[IR_Out 1]
FF2 --> OUT2[IR_Out 2]
FF7 --> OUT7[IR_Out 7]
Alle Flip-Flops teilen dasselbe Takt- (CLK) und Ladefreigabesignal (LOAD).
Verwandte Komponenten
- Befehlszähler (PC): Liefert die Adresse zum Holen des Befehls, der in das IR geladen wird.
- Speicher (RAM/ROM): Speichert die Befehle.
- Datenbus: Transportiert den Befehl vom Speicher zum IR.
- Steuerwerk: Enthält das IR und den Befehlsdecoder.
- Befehlsdecoder: Liest den Ausgang des IR, um den Befehl zu interpretieren.
- ALU: Führt die durch den decodierten Befehl spezifizierte Operation aus.
- Register: Können Operanden enthalten, die durch Felder im im IR gespeicherten Befehl spezifiziert werden.