k450-Anwendung_Datenpfade_von_ReTI

k450-Anwendung_Datenpfade_von_ReTI

Page 1

page-01.png

Kapitel 4 – Sequentielle Logik

  1. Speichernde Elemente
  2. Sequentielle Schaltkreise
  3. Entwurf sequentieller Schaltkreise
  4. SRAM
  5. Anwendung: Datenpfade von ReTI
  6. Anwendung: Kontrolllogik von ReTI

Albert-Ludwigs-Universität Freiburg
Prof. Dr. Armin Biere
Institut für Informatik

Page 2

page-02.png

Zur Erinnerung: ReTI bisher

Register der CPU:

Register Bedeutung
ACC Akkumulator
IN1 Indexregister 1
IN2 Indexregister 2
PC Befehlszähler

Befehle: load, store

Page 3

page-03.png

Zur Erinnerung: Datenpfade von ReTI

ReTI besteht aus:

  • 4 benutzersichtbaren Registern PC, ACC, IN1, IN2
    → Realisiert durch Zähler (PC) bzw. Register.
  • Einem -Wort-Speicher (Wortbreite von 32 Bit), der Daten und Befehle enthält
    → Realisiert durch SRAM.
  • ReTI unterstützt Load-/Store-, Compute-, Indexregister- und Sprungbefehle.

Befehlsformat (32 Bit):

31 30 29 ... 24 23 ... 0
Typ Spezifikation Parameter

Page 4

page-04.png

Zur Erinnerung: ReTI-Befehle im Überblick

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

Page 5

page-05.png

Umsetzung von ReTI: Externe Sicht

3-Bus-Architektur zur Ansteuerung von Speicher und I/O-Geräten:

  • 32 Bit breiter Datenbus ,
  • 32 Bit breiter Adressbus ,
  • Kontrollbus (Breite später festgelegt).

Page 6

page-06.png

Umsetzung von ReTI: Interne Sicht

CPU besteht aus:

  • Programmzähler PC.
  • 3 weitere für Benutzer sichtbaren Registern ACC, IN1, IN2,
  • Instruktionsregister I,
  • ALU,
  • CPU-internen Bussen:
    • , für linken bzw. rechten Operanden der ALU,
    • internem Datenbus .

Register, PC, ALU, Busse und die zugehörigen Treiber sind 32 Bit breit.

Page 7

page-07.png

Interner Aufbau der ReTI-CPU

Siehe Schaltbild auf der Folie. Enthält: PC, IN1, IN2, ACC, ALU, I, Busse A, D, DI, R, L sowie Treiber:

DDId, ALUDId, 0Ld, PCLd, IN1Ld, IN2Ld, ACCLd, 0Rd, IRd, DRd, IAd, ALUAd, PCAd, ASMd

Page 8

page-08.png

Hinweise zum Schaltbild

Namenskonvention für Treiber: Treiber zwischen Bus/Baustein X und Bus/Baustein Y: XYd;
Output-Enable-Signal: XYdoe.

  • 0Ld und 0Rd können auf bzw. legen.
  • Busse und sind an den Speicher (sowie I/O-Geräte) angeschlossen, s. nächste Folie.

Das Bild enthält keine Steuerleitungen:

  • Output-Enable-Signale der Treiber,
  • Funktionsauswahl der ALU,
  • Clock-Signale und „Clock-Enable-Signale" der Register.

Page 9

page-09.png

Speicher von ReTI

  • Datenein- und ausgänge mit Datenbus der CPU verbunden.
  • Adressleitungen mit Adressbus der CPU verbunden.
  • Treiber ASMd immer enabled.

Kontrollsignale: /SMDdoe (active low), SMw

Page 10

page-10.png

Verfeinerung des Schaltbilds

Siehe Folie: vollständiges Schaltbild inkl. SRAM mit Treiber ASMd.

Page 11

page-11.png

Verarbeitung der Daten im Register I

Gerade verarbeiteter Befehl im Instruktionsregister I:

  • : Befehlskodierung (für die im Schaltbild nicht dargestellten Steuersignale benötigt)
  • : Speicheradresse oder Konstante für die ALU.
Verwendung Transformation Treiber
Speicheradresse wird auf Bus gelegt IAd enabled
„Natürliche" 24-Bit-Konstante wird auf gelegt IRd enabled
Ganzzahlige 24-Bit-Konstante wird auf gelegt IRd enabled

Page 12

page-12.png

Verfeinerung

Neues Kontrollsignal sext:

  • sext = 0: Ersetze durch .
  • sext = 1: Ersetze durch .

Page 13

page-13.png

Weitere Verfeinerung für Register (1/3)

Im Buch von Keller / Paul werden die Clockeingänge aller Register Reg
mit einem Clocksignal Regck verbunden, das durch die Kontrolllogik
berechnet wird.

⇒ Datenübernahme zu ausgewählten Zeitpunkten

Vorgehen bei Realisierung der ReTI auf einer Platine mit diskreten
Bausteinen OK!

Nicht OK bei heutigen Designs, die Prozessoren auf einem einzigen
Chip integrieren.

Page 14

page-14.png

Weitere Verfeinerung für Register (2/3)

Gründe für „Designrule" (Entwurfsregel), die es verbietet, Clockeingänge mit
berechneten Datensignalen zu verbinden:

  • „Clock-Tree-Synthese" gewährleistet, dass die steigende Flanke der
    globalen Clock an allen Clockeingängen zum gleichen Zeitpunkt
    ankommt (z. B. durch Ausgleich des Effekts unterschiedlicher
    Leitungsverzögerungen m. H. von Treibern).
    Datensignale auf Clockeingängen verhindern Clock-Tree-Synthese.
  • Heutige Werkzeuge zur automatischen Timing-Analyse
    (und Berechnung der maximalen Clockfrequenz) sind nicht in der Lage,
    mit berechneten Clocksignalen umzugehen.
  • Höhere Anforderungen an „Flankensteilheit" der Clocksignale.

Page 15

page-15.png

Weitere Verfeinerung für Register (3/3)

Transformation bzw. Verfeinerung: Statt berechnetem Clocksignal erhält jedes
Register einen MUX am Eingang, gesteuert durch Regcken (Clock-Enable),
während ck die globale Clock bleibt.

Page 16

page-16.png

Programmabarbeitung durch ReTI

Zwei sich abwechselnde Phasen der CPU:
bedingt durch „Von-Neumann-Architektur"
(gemeinsamer Befehls- und Daten-Speicher)

  • Fetch-Phase: Lädt nächsten auszuführenden Befehl aus Memory ins Instruktionsregister I der CPU.
  • Execute-Phase: Befehl, der in I steht, wird ausgeführt.

Vorgehen:

  1. Definition der Datenpfade, d.h. der benötigten Datenverbindungen zwischen den Komponenten der CPU.
  2. Herleitung der Kontrollsignale zur Ansteuerung der im Punkt 1 hergeleiteten Datenpfade:
    • Treiber-OE
    • ALU-Funktionsselektion
    • Enable für Register-Clocks
  3. Sequentielle Synthese.

Page 17

page-17.png

Datenpfade: Fetch-Phase

Siehe Schaltbild auf der Folie.

Page 18

page-18.png

Fetch-Phase, Treiber

Welche Treiber müssen in der Fetch-Phase enabled sein?

a. ALUAd
b. ASMd
c. DDId
d. IAd
e. IRd
f. PCAd
g. PCLd
h. SMDd

Page 19

page-19.png

Datenpfade: Fetch-Phase

Siehe Schaltbild auf der Folie.

Page 20

page-20.png

Bedeutung des Diagramms

In der Fetch-Phase muss:

  • Bus mit PC verbunden sein, d.h. PCAd enabled.
  • Bus mit Speicher verbunden sein, d.h. SMDd enabled.
  • Register I den Wert von Bus übernehmen, d.h. Icken muss enabled werden.
  • Alle anderen Treiber (außer denen, die stets enabled sind) sind disabled, um Bus Contentions zu vermeiden.

Die Steuersignale müssen in der Fetch-Phase entsprechend gesetzt sein.

Z.B. Icken = 1, /PCAdoe = 0, /SMDdoe = 0, /ALUAdoe = 1, usw. (Output-Enable-Signale active low!)

Page 21

page-21.png

Fetch: Die durchgeschalteten Pfade

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

Page 22

page-22.png

Datenpfade in der Execute-Phase

Betrachte die Execute-Phase unterschiedlicher Befehlstypen:

  • Compute Immediate,
  • Compute Memory,
  • JUMP,
  • LOAD,
  • LOADIN1 (LOADIN2 analog),
  • LOADI,
  • STORE,
  • STOREIN1,
  • MOVE.

Page 23

page-23.png

Datenpfade: Compute Immediate (1/2)

Siehe Schaltbild auf der Folie.

Page 24

page-24.png

Datenpfade: Compute Immediate (2/2)

Durchgeschaltete Pfade:

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

Page 25

page-25.png

Datenpfade: Compute Memory (1/2)

Siehe Schaltbild auf der Folie.

Page 26

page-26.png

Datenpfade: Compute Memory (2/2)

Durchgeschaltete Pfade:

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

Page 27

page-27.png

Datenpfade: JUMP (1/2)

Siehe Schaltbild auf der Folie.

Page 28

page-28.png

Datenpfade: JUMP (2/2)

Durchgeschaltete Pfade:

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

Page 29

page-29.png

Datenpfade: LOAD i (1/2)

Siehe Schaltbild auf der Folie.

Page 30

page-30.png

Datenpfade: LOAD i (2/2)

Durchgeschaltete Pfade:

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

Page 31

page-31.png

Datenpfade: LOADIN1 i (1/2)

Siehe Schaltbild auf der Folie.

Page 32

page-32.png

Datenpfade: LOADIN1 i (2/2)

Durchgeschaltete Pfade:

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

Page 33

page-33.png

Datenpfade: LOADI i (1/2)

Siehe Schaltbild auf der Folie.

Page 34

page-34.png

Datenpfade: LOADI i (2/2)

Durchgeschaltete Pfade:

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

Page 35

page-35.png

Datenpfade: STORE i (1/2)

Siehe Schaltbild auf der Folie.

Page 36

page-36.png

Datenpfade: STORE i (2/2)

Durchgeschaltete Pfade:

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

Page 37

page-37.png

Datenpfade: STOREIN1 i (1/2)

Siehe Schaltbild auf der Folie.

Page 38

page-38.png

Datenpfade: STOREIN1 i (2/2)

Durchgeschaltete Pfade:

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

Page 39

page-39.png

Datenpfade: MOVE ACC IN1 (1/2)

Siehe Schaltbild auf der Folie.

Page 40

page-40.png

Datenpfade: MOVE ACC IN1 (2/2)

Durchgeschaltete Pfade:

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

Page 41

page-41.png

Zusätzliche Befehle

Man kann weitere Befehle ohne zusätzliche Hardware realisieren!

  • Load- und Compute-Befehle mit beliebigem Zielregister .
  • Kein , wenn .
  • Befehlsformat: LOAD r i; ADD r i; etc.

Befehlskodierung:

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