1 Einordnung G Zahlendarstellung und Rechnerarithmetik Ebene 6 Problemorientierte Sprache Ebene 5 Assemblersprache Ebene 4 Betriebssystem Ebene 3 ISA (Instruction Set Architecture) Ebene 2 Mikroarchitektur Ebene 1 Digitale Logik Ebene 0 Physik G.1 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 2 Zahlendarstellung 2.1 Positive ganze Zahlen (2) 2.1 Positive ganze Zahlen ■ Dualsystem, Binärsystem ◆ Beispiel: ■ Positionale Zahlendarstellung 3 2 1 1011 2 = ( 1, 0, 1, 1 ) 2 = 1 ⋅ 2 + 0 ⋅ 2 + 1 ⋅ 2 + 1 ⋅ 2 ◆ Ziffern ◆ Position der Ziffern gewichtet ihren Wert 0 ◆ Allgemein: n-stellige Dualzahl ( z n – 1, z n – 2, …, z 2, z 1, z 0 ) 2 = z n – 1 ⋅ 2 n – 1 + z n – 2 ⋅ 2 n – 2 + …+ z 2 ⋅ 2 2 + z 1 ⋅ 2 1 + z 0 ⋅ 2 0 ■ Dezimalsystem ◆ Beispiel: G.2 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 3 2 1 4711 = ( 4, 7, 1, 1 )10 = 4 ⋅ 10 + 7 ⋅ 10 + 1 ⋅ 10 + 1 ⋅ 10 0 mit z i ∈ {0, 1 } ◆ Allgemein: n-stellige Dezimalzahl ( z n – 1, z n – 2, …, z 2, z 1, z 0 ) 10 = z n – 1 ⋅ 10n – 1 + z n – 2 ⋅ 10 n – 2 + …+ z 2 ⋅ 10 2 + z 1 ⋅ 101 + z 0 ⋅ 10 0 mit z i ∈ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } G.3 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ G.4 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 2.1 Positive ganze Zahlen (3) 2.2 Konvertierung der Darstellung ■ Allgemein ■ Umwandlung von einer Zahlendarstellung in die andere ◆ Darstellung natürlicher Zahlen durch Zahlensystem zu einer beliebigen Basis b≥1 ( z n – 1, z n – 2, …, z 2, z 1, z 0 ) b = z n – 1 ⋅ b n – 1 + z n – 2 ⋅ b n – 2 + …+ z 2 ⋅ b 2 + z 1 ⋅ b 1 + z 0 ⋅ b 0 ◆ Basis des Ziel-Zahlensystems als Divisor ◆ Reste bilden die Ziffern der Darstellung ◆ Beispiel: 1910 → x 2 mit z i ∈ {0, 1, …, b – 1 } ■ Typische Basen für Rechnerarithmetik ◆ b = 2 Dualsystem ◆ b = 8 Oktalsystem z i ∈ {0, 1, 2, 3, 4, 5, 6, 7 } 19 ÷ 2 = 9 9÷2 = 4 Rest 1 Rest 1 4÷2 = 2 2÷2 = 1 Rest 0 Rest 0 1÷2 = 0 Rest 1 least significant digit most significant digit ◆ b = 10 Dezimalsystem x = ( 1, 0, 0, 1, 1 ) 2 ◆ b = 16 Hexadezimalsystem z i ∈ {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } G.5 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ G.6 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 2.2 Konvertierung der Darstellung (2) 2.3 Darstellung positiver Zahlen im Rechner ■ Alternative ■ Zahlenspeicherung in Registern ◆ Finden der Stufenzahlen und deren Vielfache ◆ einzelne Flip-Flops speichern eine Ziffer (Bit) ◆ Beispiel: 1910 → x 8 ◆ mehrere Flip-Flops speichern eine Zahl • Stufenzahlen des Oktalsystems: 1, 8, 64, 512 ... ■ Registerbreite • Welche Stufenzahl passt gerade noch hinein: 8 • Wie oft passt sie hinein: 19 ÷ 8 = 2 Rest 3 = 1 Byte ◆ Wort = 16 Bit / 32 Bit (Word) ◆ Doppelwort = 32 Bit / 64 Bit (Double Word) • Wiederholung mit Rest und nächst kleinerer Stufenzahl: 3÷1 = 3 ◆ 8 Bit ◆ Vierfachwort = 64 Bit / 128 Bit (Quad Word) Rest 0 • Wiederholung bis Stufenzahl 1 erreicht wurde ■ Wortbreite hängt von Prozessorarchitektur ab • Ergebnis der Divisionen bilden die Ziffern: x = 238 G.7 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ G.8 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 3 Binäre Addition 3.1 Halbaddierer ■ Schriftliche Addition ■ Addition in erster (rechter) Spalte ◆ Verfahren wie beim Dezimalsystem 10011 +1001 11 11100 Übertrag ◆ zwei Eingänge: erste Ziffer von jeder Zahl Kontrolle: ◆ zwei Ausgänge: erste Ziffer des Ergebnisses, Carry 19 + 9 = 28 ◆ Wahrheitstabelle: a 0 0 1 1 ◆ Übertrag wird auch Carry genannt ■ Feste Registerbreite und Addition, z.B. vier Bit 1011 +1001 1 11 0100 Kontrolle: Übertrag b 0 1 0 1 s 0 1 1 0 Blockschaltbild: c 0 0 0 1 a b c HA s ◆ Schaltung: 11 + 9 = 20 = 16 + 4 c a ◆ letzter Übertrag gehört zum Ergebnis b ◆ kann aber nicht mehr dargestellt werden + c = a⋅ b s = a⋅ b+ a⋅ b = a⊕ b s G.9 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 3.2 Volladdierer G.10 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 3.2 Volladdierer ■ Addition in anderen Spalten ■ Schaltung ◆ drei Eingänge: je eine Ziffer der Summanden und Carry von vorheriger Ziffer ◆ zwei Ausgänge: Summenziffer und Carry ◆ Aufbau mit Halbaddierern c a ◆ Wahrheitstabelle: a b cin s cout b 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 1 1 cin HA s c cout s s HA ◆ realer Aufbau als zweistufiges Schaltnetz (geringere Gatterlaufzeiten) ■ Blockschaltbild a b cin G.11 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ cout FA s G.12 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 3.3 Paralleles Addierwerk 3.4 Serielles Addierwerk ■ Schaltnetz zur Addition n-Bit langer Summanden an-1 bn-1 a2 b2 a 1 b1 ■ Synchrones Schaltwerk zur Addition n-Bit langer Summanden a0 b0 Clk cin FA FA ... c FA c an-1 bn-1 FA c a1 a0 FA b1 b0 c s sn-1 c D s1 s0 cout Q cout sn-1 s2 s1 s0 ◆ Schieberegister für Summanden und Ergebnis ◆ je eine Stelle pro Takt wird addiert (Ergebnis nach n Takten) ◆ lange Gatterlaufzeit bis Endergebnis stabil ◆ Carry-Flip-Flop muss initialisiert werden • Gatterlaufzeit: t = 2n ⋅ Δt ◆ Ripple Carry Adder (RCA) G.13 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 3.5 Carry-Look-Ahead-Addierer G.14 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 3.5 Carry-Look-Ahead-Addierer (2) ■ Beschleunigung der Addition ■ Berechnung der Überträge mit maximal 2 Gatterlaufzeiten möglich ◆ Vermeidung des sequentiellen Durchlaufs der Überträge ◆ max. Anzahl der Gattereingänge hängt von der Breite des Addierers ab ◆ Idee: parallele Berechnung aller Stellenüberträge für jede Stelle i a0 a1 a2 a3 ■ Es gilt für Stelle i ◆ ci + 1 = a i ⋅ bi + ( a i + b i ) ⋅ c i = G i + Pi ⋅ c i mit b0 b1 b2 b3 G i = a i ⋅ b i gibt an, ob Stelle i Carry generiert (Generate) P i = ai + b i gibt an, ob Stelle i Carry weitergeben muss (Propagate), c0 falls vorherige Stelle Carry generiert oder weitergibt carry logic ◆ Schaltfunktionen für Überträge c1 = G 0 + P 0 ⋅ c 0 c2 = G 1 + P 1 ⋅ c 1 = G 1 + P 1 ⋅ G 0 + P 1 ⋅ P 0 ⋅ c 0 c3 = G 2 + P 2 ⋅ G 1 + P 2 ⋅ P 1 ⋅ c1 = G 2 + P 2 ⋅ G 1 + P 2 ⋅ P 1 ⋅ G 0 + P 2 ⋅ P 1 ⋅ P 0 ⋅ c0 ... c4 carry logic FA c s c3 s3 carry logic FA c s c2 carry logic FA c s s2 c1 s1 FA c s s0 ◆ Kaskadierung möglich G.15 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ • pro CLA-Addierer nur 4Δt Verzögerung G.16 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 3.6 Carry-Select-Addierer 3.7 Carry-Save-Addierer ■ Beschleunigung der Addition ■ Mehr als zwei Summanden ◆ Idee: nicht auf das Carry des niederwertigen Blocks warten, sondern beide Ergebnisse berechnen und später selektieren a3 a2 a1 a0 b3 b2 b1 b0 a3 a2 a1 a0 b3 b2 b1 b0 4-Bit RCA Addierer 4-Bit RCA Addierer c 1 c ◆ Überträge aus ersten Addition werden in der nächsten Addition berücksichtigt (keine Weitergabe der Überträge in der laufenden Addition) ■ Beispiel: 4-Bit CSA für vier Summanden a3 b3 c3 0 c FA s d3 c3 a2 b2 c2 c FA s d2 c0 c FA s a1 b1 c1 c FA a0 b0 c0 s c d1 c FA s FA s d0 c FA HA c s s s3 s2 s1 s0 Standardaddierer ◆ Multiplexer selektiert Endergebnis G.17 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 4 Binäre Subtraktion G.18 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 4.2 Einerkomplement-Darstellung ■ Subtrahierer kann ähnlich wie Addierer entwickelt werden ■ Berechnung des Einerkomplements einer Zahl N bei n Ziffern ◆ C = 2 n – N – 1 bei n Ziffern/Bits ✱ Verwendung von Addierern zur Subtraktion ◆ Komplement C entspricht dem Wert –N ◆ Idee: a – b = a + ( – b ) ■ Darstellung positiver ganzer Zahlen 4.1 Darstellung negativer ganzer Zahlen ◆ höherwertigste Ziffer z n – 1 = 0 ◆ andere Ziffern unbeschränkt ■ Vorzeichen und Betrag ◆ Wert: ( z n – 1 , …, z 1, z 0 ) 2 = ◆ ein Bit repräsentiert Vorzeichen ∑zi ⋅ 2 i i ◆ andere Bits repräsentieren Betrag der Zahl ■ Darstellung negativer ganzer Zahlen ◆ Beispiel: ◆ höherwertigste Ziffer z n – 1 = 1 01001 2 = 9 ◆ andere Ziffern unbeschränkt 11001 2 = – 9 ◆ Wert: ( z n – 1 , …, z 1, z 0 ) b = – 2 n + 1 + ∑z i⋅ 2 ▲ Nachteil: Vorzeichen muss für Berechnungen ausgewertet werden i i G.19 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ G.20 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 4.2 Einerkomplement-Darstellung (2) 4.2 Einerkomplement-Darstellung (3) ■ Beispiel: Darstellungslänge n=4 ◆ 10002 = – 24 ■ Addition + 1 + 8 = –7 kleinste negative Zahl ◆ 11112 = – 2 4 + 1 + 15 = 0 größte (negative) Zahl ◆ Einsatz von leicht modifizierten Standardaddierern für Zahlen in Einerkomplement-Darstellung ◆ Carry-out muss zum Ergebnis addiert werden • ohne Überlauf kommt Carry-out nur bei Addition von ein oder zwei negativen Zahlen vor ▲ Nachteil ◆ Null hat zwei unterschiedliche Darstellungen (0000 und 1111 bei Länge 4) • X + ( – Y ) mit – Y als 2 n – Y – 1 wird zu X + 2 n – Y – 1 Übertrag 2 n gleicht –1 aus ✱ Vorteil der Einerkomplement-Darstellung • ( –X ) + ( –Y ) wird zu 2 n – X – 1 + 2 n – Y – 1 Übertrag 2 n gleicht –1 aus, übrig bleibt 2 n – ( X + Y ) – 1 also eine Zahl im Einerkomplement ◆ einfache Umwandlung von positiver zu negativer Zahl und umgekehrt • jede Ziffer wird „invertiert“: z i' = 2 – 1 – z i • Beispiel: aus 1000 2 wird 01112 (aus –7 wird 7) ■ Subtraktion ◆ vorherige Komplementbildung durch Invertierung der Ziffern G.21 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 4.2 Einerkomplement-Darstellung (4) 4.2 Einerkomplement-Darstellung (5) ■ Additionsschaltwerk für Einerkomplement an-1 bn-1 a2 b2 G.22 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ ■ Einerkomplement heute kaum mehr im Einsatz a 1 b1 a0 ◆ doppelte Darstellung der Null b0 ◆ Verwendung modifizierter Standardaddierer FA FA ... c FA c • je ein Schaltnetz für rein positive Zahlen und Zahlen im Einerkomplement erforderlich (oder ein umschaltbares Schaltnetz) HA c c cout HA ... c HA HA c sn-1 HA c s2 c s1 s0 ◆ Rückführen und Addieren des Carry-out-Signals G.23 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ G.24 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 4.3 Zweierkomplement-Darstellung 4.3 Zweierkomplement-Darstellung (2) ■ Berechnung des Zweierkomplements einer Zahl N bei n Ziffern ◆C = ■ Beispiel: Darstellungslänge n=4 – N bei n Ziffern/Bits ◆ 1000 2 = – 2 4 + 8 = – 8 kleinste negative Zahl ◆ Komplement C entspricht dem Wert –N ◆ 1111 2 = – 2 4 + 15 = –1 größte negative Zahl 2n ■ Darstellung positiver ganzer Zahlen ✱ Vorteil der Zweierkomplement-Darstellung ◆ höherwertigste Ziffer z n – 1 = 0 ◆ eindeutige Darstellung der Null (0000 bei Länge n=4) ◆ andere Ziffern unbeschränkt ◆ Wert: ( z n – 1, …, z 1, z 0 )2 = ∑zi ⋅ 2 ◆ einfache Umwandlung von positiver zu negativer Zahl und umgekehrt i • jede Ziffer wird „invertiert“: z i' = 2 – 1 – z i i • anschließend 1 auf niederwertigste Stelle addieren (Zweierkomplement ist um eins größer als Einerkomplement) ■ Darstellung negativer ganzer Zahlen ◆ höherwertigste Ziffer z n – 1 = 1 • Beispiel: aus 1001 2 wird 0110 2 und dann 01112 (aus –7 wird 7) ◆ andere Ziffern unbeschränkt ◆ Wert: ( z n – 1, …, z 1, z 0 )2 = – 2 n + ∑z i ⋅ 2 i i G.25 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 4.3 Zweierkomplement-Darstellung (3) G.26 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 4.4 Subtraktion im Zweierkomplement ▲ Nachteil ■ Addier- und Subtrahierwerk ◆ für kleinste negative Zahl ist das Zweierkomplement nicht mehr darstellbar a3 b3 a2 b2 a1 b1 a0 b0 • ( 1000 ) 2 = –8 wird zu ( 1000 ) 2 = 8 (?) ◆ Einsatz von Standardaddierern für Zahlen im Zweierkomplement Standardaddierer s3 ✱ Subtraktion + cout + ✱ Addition + + • 8 bereits außerhalb des Darstellungsbereichs (Überlauf) s2 s1 cin ADD, SUB s0 ◆ beim Subtrahieren: ◆ vorherige Komplementbildung eines Summanden erfordert • Invertieren der b-Eingänge durch XOR-Gatter • Invertierung der Ziffern • Addieren von 1 durch gesetztes Carry-in • Addition von 1 kann durch gesetzten Carry-Eingang erzielt werden ◆ Überlauferkennung: c out ≠ cin • bei Subtraktion ist gesetztes Carry-out der Normalfall G.27 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ G.28 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 4.5 Zahlenraum der ZweierkomplementDarstellung 5 Binäre Multiplikation ■ Schriftliche Multiplikation auf Binärzahlen (rein positive Zahlen) ■ Zahlenraum für n-stellige Register 0011 x 1010 ◆ Beispiel: n=4 1111 15 1110 14 –1 –2 1101 13 –3 0000 0 0 0001 1 0010 1 2 2 0011 3 3 1100 12 –4 1011 positiver Wert Wert im Zweierkomplement 5 –7 9 1001 6 7 –8 ◆ Realisierung in Hardware: Addierer und Schieberegister 1000 ◆ Realisierung in Software: Addition und Bittest/Schieberegister • einige Prozessoren besitzen keine Multiplikationshardware 0101 6 7 8 5 Kontrolle: 3 x 10 = 30 111102 = 30 1 0 1 0 ■ Übertragung auf den Rechner 4 4 0100 –5 11 –6 10 1010 Binärdarstellung 0011 0000 0011 + 0000 00011110 0110 0111 G.29 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 5.1 Vorzeichenlose Multiplikation 5.1 Vorzeichenlose Multiplikation (2) ■ Alternative A: serielles Schaltwerk zur Multiplikation an-1 n cout ... a1 n a0 n-Bit-Addierer n bn-1 ... b1 ■ Alternative B: Array-Multiplizierer ◆ Schaltwerk für das schriftliche Multiplikationsschema b0 ◆ Beispiel: n = 4 shift right b add p2n-1 ... pn+1 pn pn-1 ... a3 Steuerwerk shift right p clear p p1 G.30 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ p0 a2 a3b3 + ◆ Lösche p (clear p) p7 ◆ n-mal: • ermittle b0 (shift right b) a1 p6 a0 x a3b1 a3b2 a2b2 a2b3 a1b3 p5 p4 b3 b2 b1 b0 UND-Verknüfung a3b0 a2b0 a1b0 a0b0 a2b1 a1b1 a0b1 0 a1b2 a0b2 0 0 a0b3 0 0 0 p3 p2 p1 p0 ◆ Einsatz von Carry-Save-Addierern für die einzelnen Zeilen • addiere a auf (p2n-1,...pn+1, pn)2 oder nicht je nach b0 (add) • verschiebe p einschließlich cout der vorherigen Addition (shift right p) G.31 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ G.32 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 5.1 Vorzeichenlose Multiplikation (3) 5.1 Vorzeichenlose Multiplikation (4) ■ Alternative B: Array-Multiplizierer ■ Alternative C: Alternative B und Wallace-Baum von CS-Addierern ◆ Schaltwerk für n = 4 sin ai ◆ baumförmige statt sequentielle Anordnung der CSA a3 a2 a1 a0 ◆ Beispiel: n = 8 z3 z 2 z1 bi bi cout cin FA ai b0 b1 sout z4 z5 z6 b2 b3 z7 z8 z8 z7 z6 z5 z4 z 3 z2 z 1 CSA CSA CSA CSA CSA p6 p5 p4 p3 p2 p1 p0 CSA CSA Wallace-Baum CSA CSA CSA RCA CSA p7 CSA Vorteil: geringere Gatterlaufzeit RCA CSA-Kette G.33 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 5.1 Vorzeichenlose Multiplikation (5) G.34 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 5.2 Multiplikation für ZweierkomplementDarstellung ■ Alternative D: zweistufiges Schaltnetz für Multiplizierer ■ n-Bit-breites Ergebnis bei Multiplikation n-Bit breiter Zahlen auch für Zweierkomplement korrekt ◆ z.B. als PROM/ROM ✱ Schnellste Variante ◆ Beispiel: –2 x 3 = –6 (bein n = 4) ▲ Extrem aufwändig 1110 x 0011 ◆ 2 2n ⋅ 2n Bits notwendig 0000 0000 1110 + 1110 00101010 ■ Übergang zu kleineren Blockmultiplizierer (Radixmultiplizierer) ◆ Blockmultiplizierer für k-Bit als ROM-Implementierung ◆ blockweises Multipliziereren ◆ Addieren der Blöcke mit CSA 0 0 1 1 10102 = –6 ▲ Problem: Überlauf — Ergebnis passt meist nicht in n Bits ◆ 2n-Bit-breites Ergebnis ist nicht korrekt 001010102 = 42 G.35 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ G.36 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 5.2 Multiplikation für Zweierkomplement (2) 5.2 Multiplikation für Zweierkomplement (3) ■ Alternative A: Erweiterung der Faktoren auf 2n-Bit ■ Alternative B: Addition eines Korrektursummanden ◆ Vorzeichenerweiterung ◆ a ⋅ ( –b) = a ⋅ ( 2n – b) = 2n ⋅ a – ( a ⋅ b ) ◆ ( –a ) ⋅ b = ( 2n – a ) ⋅ b = 2n ⋅ b – ( a ⋅ b ) • z.B. aus 1110 wird 11111110, aus 0011 wird 00000011 ◆ ( – a ) ⋅ ( –b ) = ( 2 n – b ) ⋅ ( 2 n – a ) = 2 2n – 2 n ⋅ a – 2 n ⋅ b + a ⋅ b ▲ Nachteil statt 2 2n – a ⋅ b bzw. a ⋅ b ◆ 2n-Bit-breiter Addierer ◆ 2n statt n Runden/Additionen (bei seriellem Addierer) ◆ Korrektursummand für a ⋅ ( – b ) : 2 2n – 2 n ⋅ a = 2 n ⋅ ( 2 n – a ) ◆ Korrektursummand für ( – a ) ⋅ b : 2 2n – 2 n ⋅ b = 2 n ⋅ ( 2 n – b ) ◆ Korrektursummand für ( – a ) ⋅ ( –b ) : 2n ⋅ a + 2n ⋅ b ▲ Nachteil: Zusatzaufwand G.37 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 5.2 Multiplikation für Zweierkomplement (4) G.38 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 5.2 Multiplikation für Zweierkomplement (5) ■ Alternative C: getrennte Behandlung des Vorzeichens ■ Alternative D: Verfahren nach Booth ◆ Umwandlung der Faktoren in positive Zahlen ◆ Idee: a × 0111 = a × 1000 – a × 0001 ◆ Berechnung des Ergebnisvorzeichens • gilt auch für skalierte Bitfolge, z.B. a × 011100 = a × 100000 – a × 000100 ◆ Anpassen des Ergebnisses • Folge von 1-Bits lässt sich durch eine Addition und eine Subtraktion multiplizieren ▲ Nachteil: Zusatzaufwand ◆ Algorithmus nach Booth • betrachte alle Bits b i und gleichzeitig Bit b i – 1 ( b –1 wird als 0 definiert) i • ( bi, bi – 1 )2 = 01 2 addiere a × 2 (Beginn einer 1-Folge) • ( bi, bi – 1 )2 = 10 2 subtrahiere a × 2 (Ende einer 1-Folge) i • ( bi, bi – 1 )2 = 00 2 oder ( b i, b i – 1 )2 = 11 2 tue nichts G.39 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ G.40 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 5.2 Multiplikation für Zweierkomplement (6) 5.2 Multiplikation für Zweierkomplement (7) ■ Alternative D: Verfahren nach Booth ■ Alternative D: Verfahren nach Booth ◆ Subtraktion durch Addition des Zweierkomplements ◆ Beispiel: –2 x 3 = –6 (bei n = 4) ◆ gültige Ergebnisse auch für negative Zahlen (Zweierkomplement) 1110 x 00110 ◆ n-Bit breiter Addierer ausreichend durch geschicktes Schieben 00000000 –1110 00100000 00010000 • Schiebeoperation mit Vorzeichenpropagierung (Vorzeichen wird verdoppelt) 00001000 +1110 11101000 11110100 11111010 Start 00110 Shift 00110 Shift 00110 Shift 00110 Shift 111110102 = –6 G.41 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 5.2 Multiplikation für Zweierkomplement (8) 6 Binäre Division ■ Alternative D: Verfahren nach Booth ■ Papier- und Bleistift-Version ◆ Beispiel: 3 x –2 = –6 ◆ Beispiel: 103 / 9 = ? 0011 x 11100 00000000 00000000 –0011 11010000 11101000 G.42 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 01100111 / 1001 = 1011 –1001 Quotient 00111 –1001 1110 Unterlauf / negatives Ergebnis +1001 Korrektur 01111 –1001 01101 –1001 Rest 0100 Start 11100 Shift 11100 Shift 11110100 11100 Shift 11111010 1110 Shift Kontrolle: 103 / 9 = 11 Rest 4 ◆ Verfahren auch Restoring-Division genannt, da durch Korrektur ursprünglicher Divident wiederhergestellt wird 111110102 = –6 G.43 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ G.44 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 6 Binäre Division (2) 6.1 Restoring Division ■ Mathematisch ■ Einsatz von Addition/Subtraktion und Schiebeoperationen ◆ Divident / Divisor = Quotient + Rest / Divisor oder Divident = Quotient x Divisor + Rest ◆ in jedem Schritt testweise Subtraktion des skalierten Divisors b vom Dividenten a • qi = 1 falls a – b ≥ 0 • qi = 0 und Korrektur falls a – b < 0 ◆ häufig verlangt: Rest hat gleiches Vorzeichen wie Divident ◆ Nachholen signifikanter Ziffern zum Zwischenergebnis durch Schiebeoperation ◆ Überlauf möglich, wenn Quotient nicht so breit wie Divident G.45 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ 6.1 Restoring Division (2) 6.1 Restoring Division (3) ■ Serielles Dividierwerk für vorzeichenlose Zahlen bn-1 ... n cout b1 n ■ Vorzeichenbehaftete Division mit Zweierkomplement-Darstellung ◆ Verfahren im Prinzip identisch b0 n-Bit-Addierer/ Subtrahierer n G.46 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ ◆ jedoch: add/sub load q q2n-1 ... qn+1 qn qn-1 ... • unterschiedliche Erkennung von Unterläufen Steuerwerk shift left q q1 • Propagierung des Vorzeichens in oberer Hälfte von q beim Laden q0 ◆ lade q: obere Hälfte = 0, untere Hälfte = a (load q) ◆ n-mal: • schiebe q nach links (shift left q) • subtrahiere b von obere Hälfte q (sub): negativ: q0 = 0 und addiere b zurück (add) / positiv: q0 = 1 ◆ Ergebnis: obere Hälfte q = Rest, untere Hälfte q = Quotient G.47 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/ G.48 © 2002-2007, Franz J. Hauck, Verteilte Systeme, Univ. Ulm, [2007s-TI1-G-Arith.fm, 2007-05-21 12.38] http://www-vs.informatik.uni-ulm.de/teach/ss07/ti1/