T13-ReTI-Datenpfade-und-Kontrolllogik

ReTI Datenpfade & Kontrolllogik

Zusammenfassung

Die ReTI-CPU besteht aus 4 benutzersichtbaren Registern (PC, ACC, IN1, IN2), einem Instruktionsregister I, einer ALU, einem -Wort-SRAM und internen Bussen (, , , , ). Die Datenpfade werden durch Tristate-Treiber gesteuert, die über Output-Enable-Signale aktiviert werden. Die Kontrolllogik ist ein endlicher Automat, der in 8 Takten pro Befehl arbeitet (4 Fetch + 4 Execute), gesteuert durch die Phasensignale .


Exam-Relevanz

MEDIUM. Unterstützt das Verständnis von A2 (ReTI Maschinencode). Wissen über Datenpfade hilft beim Nachvollziehen, welche Befehle welche Register/Treiber verwenden.


SRAM

Ein -Bit Static Random-Access Memory (SRAM) mit hat:

  • Adress-Eingänge
  • Dateneingang
  • Datenausgang
  • Kontrollsignal (write)

Funktionalität

Der Speicher enthält Speicherzellen . Zelle wird durch Adresse ausgewählt.

  • Lesen: zeigt Inhalt von
  • Schreiben: Schreibpuls an übernimmt nach

-Bit-SRAM

Ein -Bit-SRAM besteht aus -Bit-SRAMs mit gemeinsamen Adress- und Schreibsignalen. heißt Bitbreite.

Bei ReTI: Wörter, Wortbreite 32 Bit.


Tristate-Treiber

Ein Tristate-Treiber hat Eingang , Ausgang und ein Output-Enable-Signal (active low):

= Zustand hoher Impedanz (high-Z): weder mit noch mit Masse verbunden.

Wahrheitstabelle

0 0 0
1 0 1
0 1 Z
1 1 Z

Busse

Ausgänge von Tristate-Treibern können zusammengeschaltet werden (Bus), wenn zu jeder Zeit höchstens ein Treiber enabled ist (Bus Contention vermeiden — sonst physikalische Zerstörung!).

Ein -Bit-Bus verbindet die Ausgänge mehrerer -Bit-Treiber. Vorteile gegenüber Multiplexer: leicht erweiterbar, bidirektionaler Datentransport.

Treiberbäume

Ein Treiber berechnet (Identität). Wird eingesetzt, um Fanout-Beschränkungen zu überwinden (elektrisch bedingte Begrenzung der Anzahl Gattereingänge pro Leitung).


ReTI Datenpfade

Register und Komponenten

Komponente Beschreibung
PC Programmzähler (Zähler)
ACC Akkumulator (Register)
IN1 Indexregister 1 (Register)
IN2 Indexregister 2 (Register)
I Instruktionsregister (Register)
ALU Arithmetic Logic Unit, 32-Bit

Busse

Bus Funktion
Linker Operand der ALU
Rechter Operand der ALU
Interner Datenbus
Adressbus (zum SRAM)
Datenbus (zum SRAM)

Alle Busse und Register sind 32 Bit breit.

Treiber (Auswahl)

Treiber Funktion
PCAd PC → Bus
IAd I → Bus
ALUAd ALU → Bus
SMDd SRAM → Bus
DDId Bus → Bus
ALUDId ALU → Bus
ACCLd ACC → Bus
PCLd PC → Bus
IN1Ld IN1 → Bus
IN2Ld IN2 → Bus
0Ld 0 → Bus
IRd I → Bus
DRd Bus → Bus
0Rd 0 → Bus
ASMd Bus → SRAM (immer enabled)

Namenskonvention: Treiber zwischen X und Y heißt XYd; Output-Enable-Signal XYdoe.

Instruktionsregister I

  • : Befehlskodierung (für Steuersignale)
  • : Speicheradresse oder Konstante für ALU
Verwendung Transformation Treiber
Speicheradresse auf Bus IAd
Natürliche 24-Bit-Konstante auf IRd
Ganzzahlige 24-Bit-Konstante auf IRd

Kontrollsignal sext: sext = 0 → ; sext = 1 → .

Datenpfade pro Befehlstyp

Fetch-Phase (alle Befehle):

PC → PCAd → A → SRAM(ASMd) → D → I

Compute Immediate:

I → IRd → R → ALU
ACC → ACCLd → L → ALU
ALU → ALUDId → DI → ACC

Compute Memory:

I → IRd → R → ALU
ACC → ACCLd → L → ALU
I → IAd → A → SRAM(ASMd) → D → DRd → R → ALU
ALU → ALUDId → DI → ACC

JUMP:

I → IRd → R → ALU
PC → PCLd → L → ALU
ALU → ALUDId → DI → PC

LOAD i:

I → IAd → A → SRAM(ASMd) → D → DDId → DI → ACC

LOADIN1 i:

I → IRd → R → ALU
ACC → ACCLd → L → ALU
ALU → ALUAd → A → SRAM(ASMd) → D → DDId → DI → IN1

LOADI i:

0 → 0Ld → L → ALU
I → IRd → R → ALU
ALU → ALUDId → DI → ACC

STORE i:

I → IAd → A → SRAM(ASMd)
ACC → D → SRAM (SMw)

STOREIN1 i:

I → IRd → R → ALU
IN1 → IN1Ld → L → ALU
ALU → ALUAd → A → SRAM(ASMd)
ACC → D → SRAM (SMw)

MOVE ACC IN1:

ACC → ACCLd → L → ALU
0 → 0Rd → R → ALU
ALU → ALUDId → DI → IN1

Kontrolllogik

Phasensignale

Befehlsabarbeitung in Takten: Fetch- und Execute-Phase bestehen jeweils aus 4 Takten.

Signal Bedeutung
Fetch-Phase
Execute-Phase
Binärkodierung des Takts innerhalb der Phase (0–3)
  • Steigende Flanken (Taktanfang):
  • Fallende Flanken (Taktmitte):

Ein 2-Bit-Zähler erzeugt ; schaltet zwischen Fetch und Execute. Sreset setzt PC := 0.

Zu generierende Kontrollsignale

  • Clock-Enable für alle Register : rcken
  • Output-Enable (active low) für alle Treiber XYd: /XYdoe
  • Funktions-Select für ALU
  • /PCclear, /PCload für PC
  • sext für Sign Extension
  • /SMDdoe (active low), SMw für Speicher

Aufbau

Die Kontrolllogik ist ein endlicher Automat:

  1. Kombinatorischer Schaltkreis berechnet aus Eingängen (/reset, , , ) die Pre-Signale (z.B. Ickenpre, PCLdoepre)
  2. D-Flipflops speichern die Pre-Signale
  3. Active-low Signale werden durch Negation erzeugt

Ein Teil der D-FFs wird mit ck geclockt, ein anderer mit /ck (Verschiebung um halben Takt für Adressbus-Signale).

Beispiel: Icken

Ickenpre steigende Flanke bei , fallende bei der Fetch-Phase:

Beispiel: ACCcken

ACCckenpre steigende Flanke bei , fallende bei der Execute-Phase, aber nur bei bestimmten Befehlen:

Register-Kodierung S/D

/ Register
0 0 PC
0 1 IN1
1 0 IN2
1 1 ACC

Beispiel: /PCLdoe

PCLdoepre aktiviert für JUMP, Compute mit D=PC, MOVE mit S=PC:

Speicheransteuerung

/SMDdoe (Lesezugriff) aktiviert von bis bei:

  • Fetch (alle Befehle)
  • Compute Memory
  • LOAD, LOADINj

SMw (Schreibzugriff) aktiviert von bis der Execute-Phase bei:

  • STORE, STOREINj

Clock-Enable vs. berechnetes Clock-Signal

In modernen Designs erhält jedes Register einen MUX am Eingang, gesteuert durch Regcken (Clock-Enable), während ck die globale Clock bleibt. Berechnete Clock-Signale sind verboten wegen:

  • Clock-Tree-Synthese wird verhindert
  • Timing-Analyse-Werkzeuge können nicht damit umgehen
  • Höhere Anforderungen an Flankensteilheit

Befehlsdekodierung

Befehlsformat (32 Bit)

Bits 31 30 29 28 27 26 25 24 23 ... 0
Load 0 1 M * D
Store 1 0 M S D
Compute 0 0 MI F D
Jump 1 1 C *

Legende: M – Modus; S – Source; D – Destination; MI – memory/immediate; F – Function; C – Condition

Opcode → Befehlstyp

Befehlstyp
0 0 Compute
0 1 Load
1 0 Store
1 1 Jump

Die Kontrolllogik decodiert kombinatorisch und kombiniert mit den Phasensignalen zu den konkreten Steuer- und Treibersignalen.


Übungsblätter

Blatt Aufgabe Thema Punkte
Blatt11 2 Welche Treiber werden bei welchen Befehlen enabled? (/IAdoe, /IN1Ldoe, /ALUAdoe) 1.5
Blatt11 3 Minimale Befehlsmenge, die jeden Treiber (außer PCAd) verwendet 2.5
Blatt11 4 Tristate-Treiber Gatter-Implementierung ( und ) 2
Blatt11 5 ITE-Operator: alle binären Operatoren zurückführen 4
Blatt11 6a ReTI Fibonacci-Programm 5
Blatt11 6b Zeitbedarf bei 6.78 ns Zykluszeit, 8 Zyklen/Befehl 2 (Bonus)

Quellen


Priorität

MEDIUM. Unterstützt A2 (ReTI Maschinencode). Beherrsche:

  1. SRAM-Struktur und Adressierung
  2. Tristate-Treiber: high-Z, Bus Contention, active-low OE
  3. ReTI-Datenpfade für alle Befehlstypen (Fetch, Compute, Load, Store, Jump)
  4. Phasensignale : 4 Takte Fetch + 4 Takte Execute
  5. Befehlsdekodierung: Opcode-Bits , S/D-Kodierung
  6. Kontrollsignal-Berechnung (z.B. Ickenpre = E' \cdot s_1' \cdot s_0)