Beispiel
Ergebnis ist ein Bit
Eingang n Bit
…
Kombinatorische Schaltung
…
Zeit
Wir wollen das Ergebnis einer kombinatorischen Schaltung in einem D‐Latch speichern. Q soll wohldefiniert entweder den Inhalt vor
oder nach der „Berechnung“ speichern.
D‐Latch D (Daten)
Q
NOT(Q) C (Clock)
Problem: Wann liegt das Ergebnis‐Bit stabil an D an?
Lösung: Taktung
Ergebnis ist ein Bit
Eingang n Bit
…
Kombinatorische Schaltung
…
Zeit
Wir wollen das Ergebnis einer kombinatorischen Schaltung in einem D‐Latch speichern. Q soll wohldefiniert entweder den Inhalt vor
oder nach der „Berechnung“ speichern.
D‐Latch D (Daten)
Q
NOT(Q) C (Clock)
Letztes Clock‐Signal
Nächstes Clock‐Signal Takt‐Zyklus
D‐Latches sind Transparent bzgl. Taktsignal
R
S
D
C
Q
D‐Flip‐Flop (ist nicht transparent)
Ausgang ändert sich nur bei einer fallenden Taktflanke.
D Latch D
C
Q D
Latch D
C D Q
C
!Q
D
C
Q
Logische Bausteine
Blockschaltdiagramme
Bausteine als Black‐Box
Wir haben jetzt einige Basisbausteine kennen gelernt.
In dieser Vorlesung sind wir mit Blockschaltbildern in der Regel eine Abstraktionsebene höher.
Die betrachteten Bausteine sind „Kästen“ mit Eingangsleitungen und
Ausgangsleitungen. Die Leitungen können entweder Daten (Datenleitungen) oder Steuersignale (Steuerleitungen) transportieren.
Wie die Bausteine der Blockschaltbilder intern mit Grundbausteinen aufgebaut sind und wie die Taktung der einzelnen Bausteine genau abläuft betrachten wir in dieser Vorlesung nicht weiter.
Bemerkung: In Blockschaltbildern wird das für sequentielle Bausteine erforderliche Clock‐Signal häufig der Übersicht halber weg gelassen.
Baustein
Ausgangsleitungen Eingangsleitungen
Beispiel eines abstrakten Bausteins
Verschaltung von Bausteinen
n Bits Einzelne Leitung
Bus (lassen häufig die Markierung n‐Bits weg)
Verbinden von Bauelementen Datenflussrichtung
Eingabe eines logischen Bausteins Ausgabe
eines logischen Bausteins
Kreuzungen und Verbindungen Beispiel
Leitungen kreuzen sich, sind aber nicht verbunden
Verbindungen außerhalb der
Leitungsendpunkte sind durch einen
Punkt gekennzeichnet.
Baustein A
Baustein B
Baustein C
Arithmetische, logische Einheit (ALU)
ALU
Zero (1) Result (n) Overflow (1) ALU Operation (k)
CarryOut (1) A (n)
B (n)
Angabe in Klammern ist die Anzahl Bits.
Beispiel‐Funktionen
AND OR NOT
Addition Subtraktion Vergleich
Ggf. ist die ALU auf eine Operation festgelegt. Dann Entfällt der Eingang und ALU wird mit dem Namen der Operation ersetzt.
Kombinatorisch?
Sequentiell?
Register und Shift‐Register
Speichert n Bits Eingang (n)
Ausgang (n)
Shift (1) Load (1) Reset (1)
Kombinatorisch?
Sequentiell?
Control
Kombinatorisch?
Sequentiell?
Control
Ein Baustein der das Zusammenarbeiten von anderen Bausteinen koordiniert.
In Abhängigkeit der Eingänge werden die passenden Steuerleitungen geschaltet.
Ausgänge sind Steuerleitungen in andere Bausteine Eingänge sind
Datenleitungen aus anderen Bausteinen
Control Beispiel
4‐Bit‐Register R1
Store R1 4‐Bit‐Register R2
R2 Bit 0
Control
Zero
Store R2
SUB
Control soll folgenden Algorithmus implementieren:
wenn R2 gerade und R1-R2=0, dann R1 = 0
wenn R2 ungerade und R1-R2!=0, dann R2 = R1-R2
R2 Bit 0
Zero Store R1
Store R2
0 0
0 1
1 0
1 1
Control wird als kombinatorische Schaltung realisiert.
Hierzu die Wahrheitstabelle:
Anhand der Wahrheitstabelle wird dann die Schaltung gebaut.
Rückgekoppelte Register haben immer einen wohldefinierten Zustand, da Register nur zur Clock‐Flanke aktualisiert werden.
Eingabe Ausgabe
Multiplikation
Multiplikation nach der Schulmethode
Gegeben seien die Binärzahlen A und B. Was ist a * b? Beispiel:
Multiplikand A: 1 1 0 1 0 Multiplikator B: * 1 1 0 1 ---
Produkt:
Maximale Länge des Ergebnisses
Beobachtung: Multiplikand der Länge n Bits und Multiplikator der Länge m Bits ergibt Produkt einer Länge mit maximal n+m Bits.
Das Verfahren als Algorithmus
Beispiel 1001*0101:
1 0 0 1
* 0 1 0 1 --- 1 0 0 1 + 0 0 0 0 ---
1 0 0 1 + 1 0 0 1
--- 1 0 1 1 0 1 + 0 0 0 0
--- 0 1 0 1 1 0 1
Start Teste erstes Multiplikator
‐Bit
Shifte Multiplikand ein Bit nach Links
Shifte Multiplikator ein Bit nach Rechts Addiere Multiplikand
zum Produkt
5ter Durch‐
lauf?
Ende
0 1
ja
nein Beispiel für
4‐Bit‐Zahlen
Das Verfahren in Hardware
8‐Bit Multiplikand
8‐Bit ALU
8‐Bit Produkt Control
Test
4‐Bit Multiplikator
Rechts‐Shift
Links‐Shift Demonstration mit
1001 * 0110 = 110110
1. Produkt = Produkt + Multiplikand, wenn Bit 0 des Multiplikators = 1
2.Links‐Shift
3.Rechts‐Shift
4. Anzahl Durch‐
läufe = 5Ende
Vorzeichenbehaftete Multiplikation
• Möglichkeit 2:
Tausche im Verfahren der vorigen Folie das Produkt‐
register mit einem vor‐
zeichenbehafteten Rechts‐
Shift‐Register aus.
‐ Betrachte Multiplikand x und Multiplikator y.
‐ Sei x‘ = x wenn x nicht‐negativ bzw. x‘ = ‐x sonst.
‐ Sei y‘ = y wenn y nicht‐negativ bzw. y‘ = ‐y sonst.
‐ Berechne z‘ = x‘ * y‘.
‐ Ergebnis z = z‘ wenn x und y nicht‐negativ oder x und y negativ, ansonsten ist z = ‐z‘.
Weitere Beschleunigungen
Beobachtung:
1 0 1 1 (Y)
* 1 1 1 0 (X) ---
0 0 0 0 + 1 0 1 1 ---
= 1 0 1 1 + 1 0 1 1 ---
= 1 0 0 0 0 + 1 0 1 1
---
=1 0 0 1 1 0 1 0 (Z) 4‐Bit‐ALU
c s3 s2 s1 s0
Eine ALU für jede Summation
4‐Bit‐ALU
c s3 s2 s1 s0
4‐Bit‐ALU
c s3 s2 s1 s0
x0*y0 x0*y3y2y1
x1*y x2*y
x3*y
z7z6z5z4z3 z2 z1 z0
Weitere Beschleunigungen
Jede ALU‐Operation verbrauche einen Taktzyklus. Wie viele Taktzyklen dauert die Multiplikation von 32‐Bit‐Zahlen?
Parallele Organisation der ALUs in einen Binärbaum (keine weiteren Details hier)
Division
Division nach der Schulmethode
Gegeben seien die Binärzahlen A und B. Was ist a : b? Beispiel:
Dividend Divisor Quotient 1 0 0 1 0 1 0 : 1 0 0 0 =
Rest:
Das Verfahren als Algorithmus
Beispiel 1001 : 10:
Dvdt :Dvsr= Qtnt 001001 : 10 = 00100 -000000 100000
--- 01001
-00000 10000 ---
1001
-1000 1000 ----
001
-000 100 ---
01
-00 10 --
1 Rest Start
Teste Rest
Shifte Divisor ein Bit nach Rechts Shifte Quotient nach
Links und setze dessen LSB=1.
6ter Durch‐
lauf?
Ende
<0
≥0
ja
nein Subtrahiere
Divisor vom Rest
Restauriere den alten Rest. Shifte Quotient
nach Links und setze dessen LSB=0.
Beispiel für 4‐Bit‐Zahlen
Das Verfahren in Hardware
8‐Bit Divisor
8‐Bit ALU
8‐Bit Rest Control
Test
4‐Bit Quotient
Links‐Shift
Rechts‐Shift Demonstration mit
1001 : 0010 = 100 Rest 1
1. Rest=Rest‐Divisor, wenn Divisor < Rest
2. Links‐Shift; LSB=Rest wurde verändert 3. Rechts‐Shift
4. Anzahl Durch‐
läufe = 6Ende
Vorzeichenbehaftete Division
• Umgang mit dem Quotienten (analog wie für Multiplikation):
‐ Betrachte Divisor x und Dividend y (also: Quotient z von y:x).
‐ Sei x‘ = x wenn x nicht‐negativ bzw. x‘ = ‐x sonst.
‐ Sei y‘ = y wenn y nicht‐negativ bzw. y‘ = ‐y sonst.
‐ Berechne Quotient z‘ von y‘ : x‘.
‐ Ergebnis z = z‘ wenn x und y nicht‐negativ oder x und y negativ, ansonsten ist z = ‐z‘.
• Und was ist das Vorzeichen des Rests? Beispiel:
•Also: Vorzeichen des Rests ist Vorzeichen des Dividend.
Dividend : Divisor Quotient Rest Quotient * Divisor + Rest = Dividend
7 : 2 3 1 3 * 2 + 1 = 7
-7 : 2 -3 -1 -3 * 2 – 1 = -7
7 : -2 -3 1 -3 * -2 + 1 = 7
-7 : -2 3 -1 3 * -2 – 1 = -7
Beschleunigungen
• Beschleunigung der Division mit vielen Addieren wie mit der Multiplikation nicht möglich (Vorzeichen der Differenz von Rest und Divisor muss in jedem Schritt bekannt sein)
• Techniken, um mehr als ein Bit des Quotienten in einem Schritt zu erzeugen
• Populär ist die SRT (Sweeney, Robertson, und Tocher)
Divisions‐Methode: Lookup‐Tabelle auf Basis des Dividenden und des Divisors, um mehrere Quotient‐Bits per Schritt aus einer Menge von Möglichen vorherzusagen
• Nachgeschaltet Korrekturmechanismus, wenn die Vorhersage nicht korrekt war (z.B. 4 Bits sind typisch)
• Trivia: Intel Pentium Floating‐Point‐Division‐Bug (1994) resultierte aus einer solchen inkorrekt codierten Lookup‐Tabelle.