k530-Exaktes_Timing_von_ReTI
k530-Exaktes_Timing_von_ReTI
Page 1
Kapitel 5 – Timing:
- Physikalische Eigenschaften
- Timing wichtiger Komponenten
- Exaktes Timing von ReTI
Albert-Ludwigs-Universität Freiburg
Prof. Dr. Armin Biere
Institut für Informatik
Page 2
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
Schritte der Analyse
- Einhalten von Setup- und Hold-Zeiten der Kontrolllogik
- Vermeidung von Bus-Contention
- PC-Inkrementierung
- Compute-Befehle: OE: Compute Memory
- Fetch, Load, Store, Jump
Wir werden uns auf Compute-Befehle beschränken.
Page 4
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
Dateneingänge (
Page 5
Timing der Kontrolllogik (2/3)
Wähle eine beliebige steigende Taktflanke
Die Dateneingänge sind also bereit zur Zeit
Die nächste steigende Taktflanke von /ck ist bei
Für /ck:
Für ck:
Page 6
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
Constraints
tc ≥ 2.26
Page 8
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
(ReTI-Schaltplan mit nummerierten Analysepunkten 1–10)
Page 10
Analyse allgemein
Beginn der Analyse bei
(ReTI Timing-Diagramm: Phasen P0–P3, N0–N3)
Page 11
I-Ausgänge (1/2)
I-Ausgänge gültig bei:
| 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
Constraints
τ1 = [0.12, 0.26]
tc ≥ 2.26
Page 13
I-Ausgänge (2/2)
IAd enabled bei
/IAdoe wird verteilt auf 32 Tristate-Treiber von IAd, also wieder 4 Treiber mit Tiefe 1. /IAdoe kommt bei IAd an zur Zeit:
Page 14
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
Gültiges A (1/2)
→
| Tristate-Treiber | ||
|---|---|---|
| 0.03 | 0.10 | |
| 0.03 | 0.11 | |
| 0.03 | 0.11 | |
| 0.03 | 0.10 | |
| 0.02 | 0.07 | |
| 0.03 | 0.10 |
Page 16
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
Gültiges A (2/2)
ASMd immer enabled → nur Treiber-Verzögerung berücksichtigt.
→
Page 18
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
Daten am Speicherausgang (1/3)
Lesezugriffszeit von SRAM:
→ Gültige Daten am Speicherausgang bei:
Das ist aber nur korrekt, wenn der Ausgangstreiber durch /SMDdoe rechtzeitig enabled ist!
Page 20
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
Daten am Speicherausgang (3/3)
Daten am Speicherausgang gültig zur Zeit
Bedingung für
Wir nehmen ab jetzt an, dass die Taktperiode
(Es gilt auf jeden Fall
Page 22
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
Daten auf R
DRd enabled bei
→ Enable nicht kritisch
→ Daten auf R spätestens bei:
Page 24
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
Daten auf L
Registerausgänge
→ nicht kritisch
Treiber rLd enabled bei
Page 26
I-Ausgänge aber schon gültig bei
→ völlig unkritisch verglichen mit
Page 27
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
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
ALU-Ausgänge
Spätestens gültig bei:
Page 30
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
DI
/ALUDIdoe wird wie /SMDdoe aktiviert bei
Mit
→ Berücksichtige nur Treiberverzögerung.
→ Gültig spätestens bei:
Page 32
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
Datenübernahme in Register
Clocksignale bei
Minimale Taktperiode wird aus Setup-Zeit von
(ReTI Timing-Diagramm: Phasen P0–P3, N0–N3)
Page 34
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
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
Setup-Zeit von Zähler
Setup-Zeit:
→ Bedingung:
Page 37
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
Es bleiben zu beachten:
Hold-Zeit
Maximal bei
Unproblematisch, da alle Treiber noch mindestens
(ReTI Timing-Diagramm: Phasen P0–P3, N0–N3)
Page 39
Setup- und Hold-Zeiten von rcken
rcken aktiv bei
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
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
(ReTI Timing-Diagramm: Phasen P0–P3, N0–N3)
Page 41
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
Hold: Am kritischsten, wenn sich /PCload ändert, d. h. bei
→ Beide unkritisch im Vergleich zu bisherigen Constraints.
Page 42
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
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
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
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












































