k530-Exaktes_Timing_von_ReTI

k530-Exaktes_Timing_von_ReTI

Page 1

page-01.png

Kapitel 5 – Timing:

  1. Physikalische Eigenschaften
  2. Timing wichtiger Komponenten
  3. Exaktes Timing von ReTI
    Albert-Ludwigs-Universität Freiburg
    Prof. Dr. Armin Biere
    Institut für Informatik

Page 2

page-02.png

Es gilt: Bei hinreichend langsamem Takt funktioniert der Rechner.

Frage: Wie schnell kann man den Rechner takten? Wie lange muss ein Takt mind. sein?

→ Ersetze idealisiertes Timing durch exakte Timinganalyse
→ Gesucht: Untere Grenze für Zykluszeit

(ReTI-Architektur: PC, I/E_ALU, Befehl/Daten fetch/execute mit Phasen P0–P3, N0–N3 und Kontrollsignalen /SMDdoe, s0, s1, E, A, D, L, Icken, rcken, /PCload, /PCclear, ck, /SMw)

Page 3

page-03.png

Schritte der Analyse

  1. Einhalten von Setup- und Hold-Zeiten der Kontrolllogik
  2. Vermeidung von Bus-Contention
  3. PC-Inkrementierung
  4. Compute-Befehle: OE: Compute Memory
  5. Fetch, Load, Store, Jump

Wir werden uns auf Compute-Befehle beschränken.

Page 4

page-04.png

Timing der Kontrolllogik (1/3)

Symbol Bezeichnung
Verzögerungszeit ck bis Q, active high 0.12 0.26
Verzögerungszeit ck bis Q, active low 0.12 0.41
Verzögerungszeit ck bis Q (von /ck angesteuert, active high)
Verzögerungszeit ck bis Q (von /ck angesteuert, active low)
Setupzeit von D bis ck 0.88
Setupzeit von D bis /ck 0.88
Holdzeit von D nach ck 0.06
Holdzeit von D nach /ck 0.06

Setupzeit der Dateneingänge bis ck ist , Setupzeit der Dateneingänge bis /ck ist .

Dateneingänge () müssen rechtzeitig bereit sein. Alle Dateneingänge sind Ausgangssignale von FFs, die mit ck getaktet werden.

Page 5

page-05.png

Timing der Kontrolllogik (2/3)

Wähle eine beliebige steigende Taktflanke als zeitlichen Bezugspunkt.

Die Dateneingänge sind also bereit zur Zeit (Verzögerung eines D-FF).

Die nächste steigende Taktflanke von /ck ist bei , die nächste steigende Taktflanke von ck bei .

Für /ck:

öü

Für ck:

ü

Page 6

page-06.png

Timing der Kontrolllogik (3/3)

Hold-Zeiten sind unkritisch:

  • FFs, die mit ck getaktet sind: und Eingangsdaten werden mindestens noch nach steigender Flanke von ck gehalten (Verzögerung D-FF).
  • FFs, die mit /ck getaktet sind: und Eingangsdaten werden sowieso noch einen halben Takt nach steigender Flanke von /ck gehalten (+ D-FF-Verzögerung).

Page 7

page-07.png

Constraints

tc ≥ 2.26

Page 8

page-08.png

Compute-Befehle

Am zeitkritischsten ist Compute memory!

(ReTI-Schaltplan: PC, IN1, IN2, ACC, ALU, I, SRAM mit Bussen A, D, DI, R, L)

Page 9

page-09.png

; hier:

(ReTI-Schaltplan mit nummerierten Analysepunkten 1–10)

Page 10

page-10.png

Analyse allgemein

Beginn der Analyse bei von Fetch als zeitlicher Bezugspunkt. Bei von Fetch wird der Befehl ins Instruktionsregister übernommen.

(ReTI Timing-Diagramm: Phasen P0–P3, N0–N3)

Page 11

page-11.png

I-Ausgänge (1/2)

I-Ausgänge gültig bei:

wird über Treiber IAd auf Adressbus gegeben. ist eine Konstante und steht daher ebenfalls zu bereit.

D-FF Bezeichnung
Setupzeit von D bis ck 0.08
Holdzeit von D nach ck 0.14
Verzögerungszeit von ck bis Q 0.12 0.26
Verzögerungszeit von D bis Q 0.10 0.21

Page 12

page-12.png

Constraints

τ1 = [0.12, 0.26]
tc ≥ 2.26

Page 13

page-13.png

I-Ausgänge (2/2)

IAd enabled bei von Execute, d. h. /IAdoe aktiv zur Zeit:

/IAdoe wird verteilt auf 32 Tristate-Treiber von IAd, also wieder 4 Treiber mit Tiefe 1. /IAdoe kommt bei IAd an zur Zeit:

schon gültig vor Aktivierung von IAd bei Punkt 2, falls:

Page 14

page-14.png

Constraints

τ1 = [0.12, 0.26]
τ2 = tc + τp,al⁻ = 3/2·tc + [0.15, 0.67]
tc ≥ 2.26
tc ≥ 0.08

Page 15

page-15.png

Gültiges A (1/2)

gültig zur Zeit:

Tristate-Treiber
(Enable-Zeiten) 0.03 0.10
(Enable-Zeiten) 0.03 0.11
(Disable-Zeiten) 0.03 0.11
(Disable-Zeiten) 0.03 0.10
(Umschaltverzögerung bei /OE = 0) 0.02 0.07
(Umschaltverzögerung bei /OE = 0) 0.03 0.10

Page 16

page-16.png

Constraints

τ1 = [0.12, 0.26]
τ2 = tc + τp,al⁻ = 3/2·tc + [0.13, 0.56]
τ3 = τ2 + [0.03, 0.11] = 3/2·tc + [0.18, 0.78]
tc ≥ 2.26
tc ≥ 0.08

Page 17

page-17.png

Gültiges A (2/2)

ASMd immer enabled → nur Treiber-Verzögerung berücksichtigt.

an SM bei:

Page 18

page-18.png

Constraints

τ1 = [0.12, 0.26]
τ2 = tc + τp,al⁻ = 3/2·tc + [0.13, 0.56]
τ3 = τ2 + [0.03, 0.11] = 3/2·tc + [0.18, 0.78]
τ4 = τ3 + [0.02, 0.10] = 3/2·tc + [0.20, 0.88]
tc ≥ 2.26
tc ≥ 0.09

Page 19

page-19.png

Daten am Speicherausgang (1/3)

Lesezugriffszeit von SRAM: (siehe Daten von CY7C1079DV33)

→ Gültige Daten am Speicherausgang bei:

Das ist aber nur korrekt, wenn der Ausgangstreiber durch /SMDdoe rechtzeitig enabled ist!

Page 20

page-20.png

Daten am Speicherausgang (2/3)

SRAM CY7C1079DV33 Bezeichnung
Lesezugriffszeit 12.0
Zeit von /SMDdoe = 0 bis D 7.0

/SMDdoe aktiviert zur Zeit .

Daten am Speicherausgang aufgrund Treiber-Enable gültig zur Zeit:

⇒ Daten am Speicherausgang gültig spätestens zur Zeit:

Page 21

page-21.png

Daten am Speicherausgang (3/3)

Daten am Speicherausgang gültig zur Zeit .

Bedingung für :

Wir nehmen ab jetzt an, dass die Taktperiode ist und rechnen mit weiter.

(Es gilt auf jeden Fall . Sollte sich später ergeben, dass die minimale Taktperiode , dann müssten wir die Rechnung nochmals korrigieren.)

Page 22

page-22.png

Constraints

τ1 = [0.12, 0.26]
τ2 = 3/2·tc + [0.13, 0.56]
τ3 = 3/2·tc + [0.18, 0.78]
τ4 = 3/2·tc + [0.20, 0.88]
τ5 = 3/2·tc + [0.20, 12.88]
tc ≥ 2.26
tc ≥ 0.08
tc ≤ 10.94

Page 23

page-23.png

Daten auf R

DRd enabled bei von Execute, also einen Takt vor Ausgangstreiber von SM.

→ Enable nicht kritisch

→ Daten auf R spätestens bei:

ö

Page 24

page-24.png

Constraints

τ1 = [0.12, 0.26]
τ2 = 3/2·tc + [0.13, 0.56]
τ3 = 3/2·tc + [0.18, 0.78]
τ4 = 3/2·tc + [0.20, 0.88]
τ5 = 3/2·tc + [0.20, 12.88]
τ6 = 3/2·tc + [0.22, 12.98]
tc ≥ 2.26
tc ≥ 0.08
tc ≤ 10.94

Page 25

page-25.png

Daten auf L

Registerausgänge schon seit letzter Execute-Phase gültig.

→ nicht kritisch

Treiber rLd enabled bei von Execute, d. h. wie auch bei DRd ist Zeit zum Enablen unkritisch im Vergleich zu .

Page 26

page-26.png

, cin

, cin werden durch den kombinatorischen Schaltkreis der Kontrolllogik aus berechnet.

I-Ausgänge aber schon gültig bei . Verzögerungszeit des kombinatorischen Schaltkreises .

, cin gültig spätestens bei .

→ völlig unkritisch verglichen mit .

Page 27

page-27.png

Constraints

τ1 = [0.12, 0.26]
τ2 = 3/2·tc + [0.13, 0.56]
τ3 = 3/2·tc + [0.18, 0.78]
τ4 = 3/2·tc + [0.20, 0.88]
τ5 = 3/2·tc + [0.20, 12.88]
τ6 = 3/2·tc + [0.22, 12.98]
τ7 = 1.14
tc ≥ 2.26
tc ≥ 0.08
tc ≤ 10.94

Page 28

page-28.png

Voraussetzungen für die exakte Timinganalyse von Compute memory: ALU

Analyse der ALU (32-Bit mit Conditional Sum) unter folgender Annahme:

  • Funktionsselect-Signale liegen vor den Daten an (unkritisch, da ).
  • Resultatsausgänge gültig nachdem die Daten anliegen.
Symbol Bezeichnung
0.28
Verzögerungszeit von a, b bzw. cin bis Ausgang 3.25

Page 29

page-29.png

ALU-Ausgänge

Spätestens gültig bei:

Page 30

page-30.png

Constraints

τ1 = [0.12, 0.26]
τ2 = 3/2·tc + [0.13, 0.56]
τ3 = 3/2·tc + [0.18, 0.78]
τ4 = 3/2·tc + [0.20, 0.88]
τ5 = 3/2·tc + [0.20, 12.88]
τ6 = 3/2·tc + [0.22, 12.98]
τ7 = 1.14
τ8 = max(τ6) + 3.25 = 3/2·tc + 16.23
tc ≥ 2.26
tc ≥ 0.08
tc ≤ 10.94

Page 31

page-31.png

DI

/ALUDIdoe wird wie /SMDdoe aktiviert bei von Execute. Daten kommen an ALUDId später an als am internen SRAM-Treiber. Enable-Zeit von ALUDId jedoch kürzer als bei SRAM.

Mit ist auf jeden Fall auch für ALUDId gewährleistet, dass Treiber enabled, wenn Daten kommen.

→ Berücksichtige nur Treiberverzögerung.

→ Gültig spätestens bei:

Page 32

page-32.png

Constraints

τ1 = [0.12, 0.26]
τ2 = 3/2·tc + [0.13, 0.56]
τ3 = 3/2·tc + [0.18, 0.78]
τ4 = 3/2·tc + [0.20, 0.88]
τ5 = 3/2·tc + [0.20, 12.88]
τ6 = 3/2·tc + [0.22, 12.98]
τ7 = 1.14
τ8 = 3/2·tc + 16.23
τ9 = τ8 + 0.10 = 3/2·tc + 16.33
tc ≥ 2.26
tc ≥ 0.08
tc ≤ 10.94

Page 33

page-33.png

Datenübernahme in Register

Clocksignale bei von Execute → steigende Flanke bei .

Minimale Taktperiode wird aus Setup-Zeit von berechnet (Setup-Zeit am größten, wenn ).

(ReTI Timing-Diagramm: Phasen P0–P3, N0–N3)

Page 34

page-34.png

Constraints

τ1  = [0.12, 0.26]
τ2  = 3/2·tc + [0.13, 0.56]
τ3  = 3/2·tc + [0.18, 0.78]
τ4  = 3/2·tc + [0.20, 0.88]
τ5  = 3/2·tc + [0.20, 12.88]
τ6  = 3/2·tc + [0.22, 12.98]
τ7  = 1.14
τ8  = 3/2·tc + 16.23
τ9  = 3/2·tc + 16.33
τ10 = 4·tc
tc ≥ 2.26
tc ≥ 0.08
tc ≤ 10.94

Page 35

page-35.png

Timing: Zähler

Aus einer Analyse des Zählers in einer Implementierung gemäß Kapitel 4.1 (aber mit zusätzlichem Clock-Enable für das Register!) ergeben sich folgende Zeiten:

Symbol Bezeichnung
Setup-Zeit von D vor ck 0.53
Hold-Zeit von D nach ck 0.05
Setup-Zeit von /L vor ck 0.65
Hold-Zeit von /L nach ck 0.04
Setup-Zeit von PCcken vor ck 0.35
Hold-Zeit von PCcken nach ck 0.10

Page 36

page-36.png

Setup-Zeit von Zähler

Setup-Zeit: (siehe Aufbau Zähler)

→ Bedingung:

Page 37

page-37.png

Constraints

τ1  = [0.12, 0.26]
τ2  = 3/2·tc + [0.13, 0.56]
τ3  = 3/2·tc + [0.18, 0.78]
τ4  = 3/2·tc + [0.20, 0.88]
τ5  = 3/2·tc + [0.20, 12.88]
τ6  = 3/2·tc + [0.22, 12.98]
τ7  = 1.14
τ8  = 3/2·tc + 16.23
τ9  = 3/2·tc + 16.33
τ10 = 4·tc
tc ≥ 2.26
tc ≥ 0.08
tc ≤ 10.94
tc ≥ 6.75

Page 38

page-38.png

Es bleiben zu beachten:

Hold-Zeit

Maximal bei , .

Unproblematisch, da alle Treiber noch mindestens Takt nach rck enabled sind.

(ReTI Timing-Diagramm: Phasen P0–P3, N0–N3)

Page 39

page-39.png

Setup- und Hold-Zeiten von rcken

rcken aktiv bei von Execute, inaktiv bei von Execute, d. h. aktiv von:

Setup-Zeit: Für alle :

(unkritisch im Vergleich zu bisherigen Constraints)

Hold-Zeit: Für alle :

(Analog auch für alle anderen Takte.)

Page 40

page-40.png

Setup- und Hold-Zeiten /PCload beim Zähler

  • Setup /L bis ck:
  • Hold /L nach ck:

/PCload (benötigt, wenn neue Werte in Zähler kommen) aktiv bei von Execute, inaktiv bei von Fetch.

(ReTI Timing-Diagramm: Phasen P0–P3, N0–N3)

Page 41

page-41.png

Bedingungen für Setup- und Hold-Zeiten /PCload beim Zähler

Setup: Am kritischsten, wenn /PCload seinen Wert bei der vorangegangenen Taktflanke geändert hat, d. h. bei von Execute bzw. von Fetch.

Hold: Am kritischsten, wenn sich /PCload ändert, d. h. bei von Execute und von Fetch.

→ Beide unkritisch im Vergleich zu bisherigen Constraints.

Page 42

page-42.png

Fazit: Zykluszeit und Befehlsrate

Vorläufiges Ergebnis: Falls sich durch andere Befehle keine schärferen Bedingungen an die Zykluszeit ergeben, dann lautet sie:

Taktfrequenz:

8 Takte pro Befehl → 18.5 Millionen Befehle pro Sekunde, d. h. Befehlsrate von 18.5 MIPS (= Million Instructions per Second).

Page 43

page-43.png

Anmerkungen zur Timing-Analyse

Eine „echte" Timing-Analyse müsste noch Leitungslaufzeiten auf dem Chip berücksichtigen. Dazu muss dann aber schon das Layout des Chips bekannt sein, um die Leitungslängen und -kapazitäten zu berechnen.

Leitungslaufzeiten waren früher bei einem Aufbau mit diskreten Bausteinen vernachlässigbar, sind es bei den heutigen Technologien aber nicht mehr.

⇒ Exakte Timing-Analysen sind heute daher kaum ohne maschinelle Unterstützung durchführbar.

Synthesetools sind in der Lage, durch Optimierung der Treiberstärken von Grundgattern (verschiedene Versionen in der Bibliothek!) Laufzeiten zu minimieren.

Wird das SRAM nicht auf dem Chip integriert (d. h. stattdessen ein kommerzielles externes SRAM angeschlossen), dann muss man noch Verzögerungszeiten für I/O-Pads des Chips mit eventueller Anpassung von Spannungspegeln berücksichtigen.

Page 44

page-44.png

Ausblick 1/2

Beschleunigung:

  • Schnellere Komponenten, z. B. ALU
  • Schnellere Adressberechnung (Treiber schon bei öffnen)
  • Evtl. Überdenken des kompletten Schemas des idealisierten Timings (z. B. Verkürzung des Fetch-Zyklus um 1 Takt)
  • Schnellerer Speicher, Speicherhierarchie mit „Caches"
  • Pipelining
  • ...

Page 45

page-45.png

Ausblick (2/2)

Fehlerbehandlung:

  • Z. B. Überläufe bei ALU ...

Fehlertoleranz:

  • Übertragungsfehler auf den Leitungen ⇒ Parity-Check, Hamming-Code

Verifikation:

  • Ist der Entwurf der ReTI überhaupt korrekt?
  • Automatische Methoden für den Beweis der Korrektheit

Architekturkonzepte:

  • Speicherhierarchie
  • Pipelining
  • Parallelität