Asynchrone Schaltungen Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2013 Asynchrone Schaltungen 1/25 2013/07/18
Asynchrone Schaltungen Motivation überall gleichzeitiger(!) Takt auf Chip aufwändig langsamste Komponente legt Takt fest Ein-Synchronisieren von externen Ereignissen nicht sicher... Asynchrone Schaltungen 2/25 2013/07/18
Takt-Verteilung in synchronen Automaten sauberer Takt: Problematisch: Entfernung von Taktquelle (Pin am Gehäuse) bis zu allen Register u.u. unterschiedlich (=> Taktbaum). Asynchrone Schaltungen 3/25 2013/07/18
Takt-Verteilung in synchronen Automaten Taktbaum: Problem: Leiterbahn-Routing schwierig! Asynchrone Schaltungen 4/25 2013/07/18
Takt-Verteilung in synchronen Automaten Stromspar-Modi erfordern häufig Takt-Abschaltmöglichkeiten. => unterschiedliche Taktzeitpunkte! Asynchrone Schaltungen 5/25 2013/07/18
Frequenz-Domains Viele Bereiche mit unterschiedlichen Frequenzen: Asynchrone Schaltungen 6/25 2013/07/18
Asynchrone Schaltungen Frequenz-Domains Übernahme eines externen Signals in einen Frequenz-Domain: Asynchrone Schaltungen 7/25 2013/07/18
Asynchrone Schaltungen Frequenz-Domains Übernahme eines externen Signals in einen Frequenz-Domain (häufigste Lösung ): Die Wahrscheinlichkeit, dass es funktioniert, ist hoch aber nicht 1! Asynchrone Schaltungen 8/25 2013/07/18
Asynchrone Schaltungen Pipeline Asynchrone Pipeline: Asynchrone Schaltungen 9/25 2013/07/18
Asynchrone Schaltungen Hand-Shaking Hand-Shaking ( single rail ): 4-Phasen-Protokoll: 2-Phasen-Protokoll: Asynchrone Schaltungen 10/25 2013/07/18
Asynchrone Schaltungen Hand-Shaking Extra-Logik muss Req solange verzögern, bis restliche Kombinatorik fertig ist. kommt Req zu früh => Fehlfunktion kommt Req zu spät => unnötige Verzögerung Asynchrone Schaltungen 11/25 2013/07/18
Asynchrone Schaltungen Hand-Shaking Wunsch: Req geht genau dann auf 1, wenn Kombinatorik fertig ist. Probleme: Wärme beeinflusst Rechenzeit von Gattern. Unterschiedliche Erwärmung der Req - bzw. der restlichen Logik problematisch! Z.B. ein Addierer braucht je nach Operanden unterschiedlich lang. Lösung: Wer hat eine Idee? Asynchrone Schaltungen 12/25 2013/07/18
Asynchrone Schaltungen Hand-Shaking Verknüpfung Daten+Hand-Shaking ( dual rail ): Zwei Leitungen für die Übertragung eines Bits: 00: idle 10: 0 01: 1 Asynchrone Schaltungen 13/25 2013/07/18
Asynchrone Schaltungen Hand-Shaking Beispiel: AND -Gatter mit Dual-Rail-Ein- und -Ausgängen: a 0 a 1 b 0 b 1 c 0 c 1 0 0 - - 0 0 - - 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 1 Asynchrone Schaltungen 14/25 2013/07/18
Asynchrone Schaltungen Hand-Shaking Andere Implementierung des Dual-Rail-AND-Gatters: Korrekt? Asynchrone Schaltungen 15/25 2013/07/18
Asynchrone Schaltungen Hand-Shaking Andere Implementierung des Dual-Rail-AND-Gatters: => Synthese der Schaltungen sehr schwierig! Asynchrone Schaltungen 16/25 2013/07/18
Asynchrone Schaltungen Muller C-Element Von einer Kombinatorik berechnete Werte müssen in das nächste Pipeline-Stufen-Register übernommen werden genau dann, wenn alle Bits berechnet wurden. Ein neuer Wert darf erst übernommen werden, wenn vorher alle Bits im Idle -Zustand waren. Problem: Die Abfrage Alle fertig? darf nicht zu lange dauern! Lösung: Muller C-Element Asynchrone Schaltungen 17/25 2013/07/18
Asynchrone Schaltungen Muller C-Element Muller C-Element: Erweiterung auf mehr Eingänge möglich effiziente Implementierung in C-MOS möglich Asynchrone Schaltungen 18/25 2013/07/18
Asynchrone Schaltungen Muller C-Element Muller C-Element: Wahrheitstabelle: A B C 0 0 0 0 1 C n 1 1 0 C n 1 1 1 1 C = A B C (A B) ( C n 1 : alter Zustand von C) Asynchrone Schaltungen 19/25 2013/07/18
Asynchrone Schaltungen Muller-Pipeline Muller-Pipeline (ohne Berechnungen): Asynchrones FIFO! Asynchrone Schaltungen 20/25 2013/07/18
Asynchrone Schaltungen Flip-Flops Bisher ignoriert: Flip-Flops brauchen auch Zeit (Setup-/Hold-Zeiten) = C: Capture Cd: Capture Done P: Pass Pd: Pass Done Asynchrone Schaltungen 21/25 2013/07/18
Asynchrone Schaltungen Muller-Pipeline Muller-Pipeline (mit Berechnungen): Micro-Pipeline Asynchrone Schaltungen 22/25 2013/07/18
Asynchrone Schaltungen Addierer Beispiel 1-Bit-Volladdierer a b c in c out s? - -?? -? -?? 0 0? 0? 0 1??? 1 0??? 1 1? 1? 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 a b c in c out s 00 00 00 00 00 00 01 01? 01 00 01 10? 00 00 10 01? 00 00 10 10? 10 00 01 01 01 01 01 01 01 10 01 10 01 10 01 01 10 01 10 10 10 10 10 01 01 01 10 10 01 10 10 01 10 10 01 10 01 10 10 10 10 10 Asynchrone Schaltungen 23/25 2013/07/18
Asynchrone Schaltungen Addierer Wie schnell ist ein asynchroner Ripple-Carry-Addierer im Mittel? Wie schnell ist ein asynchroner Multiplizierer im Mittel? Asynchrone Schaltungen 24/25 2013/07/18
Asynchrone Schaltungen Pipeline-Hazards Wie kann man in asynchronen Pipelines mit Hazards umgehen? Daten-Hazards Kontroll-Hazards Struktur-Hazards Asynchrone Schaltungen 25/25 2013/07/18