Kapitel 3 Arithmetische Schaltkreise 3.1 Addierer 3.2 Subtrahierer Multiplizierer ALU TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAAAAAAA
Wiederholung: Sei a = an-1 ... a0 eine Folge von Ziffern, ai Î {0,1} Binärdarstellung: <a> = ai 2i Zweierkomplement: [anan-1 ... a0] = ai2i – an2n Rechenregel: mit RW-Systemarchitektur Kap. 3
3.1 Addierer Gegeben: 2 positive Binärzahlen <a> = <an-1 ... a0>, <b> = <bn-1 ... b0>, Eingangsübertrag c Î {0,1} Gesucht: Schaltkreis, der Binärdarstellung s von <a> + <b> +c berechnet Wegen <a> + <b> + c £ 2×(2n – 1) + 1 = 2n+1 - 1 genügen n+1 Stellen für s, d.h. ein Schaltkreis mit n+1 Ausgängen RW-Systemarchitektur Kap. 3
Definition 3.1 Ein n-Bit Addierer ist ein Schaltkreis, der die folgende Boolesche Funktion berechnet: +n : B2n+1 ® B2n+1 , (an-1, ..., a0 , bn-1, ..., b0 , c) ® (sn, ..., s0) mit <s> = <sn ... s0> = <an-1 ... a0> + <bn-1 ... b0> + c n+1 n a b c s Schaltbild eines n-Bit-Addierers: ADDn RW-Systemarchitektur Kap. 3
Beispiel Addieren nach der Schulmethode: 1 0 1 1 + 0 1 1 0 + 0 ¾¾¾¾¾ + 0 1 1 0 + 0 ¾¾¾¾¾ 1 1 1 0 1 0 0 0 1 Eingangsübertrag RW-Systemarchitektur Kap. 3
Der Halbaddierer (HA) Der Halbaddierer dient zur Addition zweier 1-Bit-Zahlen ohne Eingangsübertrag. Er berechnet die Funktion: ha : B2 ® B2 mit ha(a0, b0) = (s1, s0) mit 2s1 + s0 = a0 + b0 RW-Systemarchitektur Kap. 3
Funktionstabelle des HA 1 1 1 1 1 1 1 Folglich: RW-Systemarchitektur Kap. 3
Schaltkreis eines Halbaddierers Å a0 b0 s0 s1 dabei: C(HA) = 2, depth(HA) = 1 RW-Systemarchitektur Kap. 3
Der Volladdierer (FA) Der Volladdierer dient zur Addition zweier 1-Bit-Zahlen mit Eingangsübertrag. Er berechnet die Funktion: fa : B3 ® B2 mit fa(a0, b0, c) = (s1, s0) mit 2s1 + s0 = a0 + b0 + c RW-Systemarchitektur Kap. 3
Funktionstabelle des FA 1 fa0 fa1 c b0 a0 RW-Systemarchitektur Kap. 3
Volladdierer als Funktion von HAs b0 c s0 s1 Aus der Tabelle folgt: FA a0 b0 c s1 s0 Kosten und Tiefe eines FA: C(FA) = 5, depth(FA) = 3 RW-Systemarchitektur Kap. 3
Schaltkreis eines Volladdierers b0 c s0 s1 FA a0 b0 c s1 s0 RW-Systemarchitektur Kap. 3
Realisieren der Schulmethode: Carry Ripple Addierer (CR ) cn-1 = sn FA bn-1 an-1 bn-2 an-2 cn-2 sn-1 sn-2 cn-3 FA b1 a1 s1 c0 FA b0 a0 s0 c-1
Realisieren der Schulmethode: Carry Ripple Addierer (CR ) Hierarchisches Vorgehen: (induktive Definition) Für n=1: CR1 = FA Für n>1: Schaltkreis CRn wie folgt definiert Bezeichnung: Bezeichne den Eingangsübertrag mit c-1, den Übertrag von Stelle i nach i+1 mit ci . RW-Systemarchitektur Kap. 3
Aufbau des n-Carry Ripple Addierers (CRn) (rekursiv) FA c0 a0 b0 c-1 s0 CR n-1 an-1 a1 ... bn-1 b1 ...... sn s1
Satz 3.1 Der Schaltkreis CRn ist ein n-Bit-Addierer. D.h. er berechnet die Funktion +n : B2n+1 ® B2n+1 , (an-1, ..., a0 , bn-1, ..., b0 , c) ® (sn, ..., s0) mit <s> = <sn ... s0> = <an-1 ... a0> + <bn-1 ... b0> + c RW-Systemarchitektur Kap. 3
Satz 3.1 (ff) Beweis durch Induktion: n=1: ü n-1 n: Eingabe an CRn: (an-1, ..., a0, bn-1, ... b0, c-1) Zeige für Ausgabe (sn, ..., s0) von CRn <s> = <sn ... s0> = <an-1 ... a0> + <bn-1 ... b0> +c-1 Nach I.V.: <c0, s0> = a0 + b0 + c-1 (FA) Für CRn-1: <sn ... s1> = <an-1 ... a1> + <bn-1 ... b1> + c0 Insgesamt: <sn ... s0> = 2 × <sn ... s1> + s0 I.V.b) = 2 × (<an-1 ... a1> + <bn-1 ... b1> + c0) + s0 I.V.a) = 2 × <an-1 ... a1> + a0 + 2 × <bn-1 ... b1> + b0 + c-1 = <a> + <b> + c-1 RW-Systemarchitektur Kap. 3
Komplexität und Tiefe eines Carry Ripple-Addierers cn-1 = sn FA bn-1 an-1 bn-2 an-2 cn-2 sn-1 sn-2 cn-3 FA b1 a1 s1 c0 FA b0 a0 s0 c-1 Kosten eines CRn: C(CRn) = n × C(FA) = 5n Tiefe eines CRn: depth(CRn) = 3 + 2(n-1) RW-Systemarchitektur Kap. 3
Komplexität und Tiefe eines Carry Ripple-Addierers (rekursiv) FA c0 a0 b0 c-1 s0 CR n-1 an-1 a1 ... bn-1 b1 ...... sn s1 Kosten eines CRn: C(CRn) = C(FA) + C(CRn-1) = 5 + C(CRn-1) Tiefe eines CRn: depth(CRn) = 3 + depth(CRn-1) = 3 + 2(n-1) RW-Systemarchitektur Kap. 3
Einige weitere wichtige Schaltkreise: Der n-Bit Inkrementer Der n-Bit Multiplexer RW-Systemarchitektur Kap. 3
Definition 3.2 Ein n-Bit Inkrementer berechnet die Funktion: incn : Bn+1 ® Bn+1 , (an-1, ..., a0 , c) ® (sn, ..., s0) mit <sn ... s0> = <a> + c RW-Systemarchitektur Kap. 3
Inkrementer Ein Inkrementer ist ein Addierer mit bi = 0 i Ersetze in CRn die FA durch HA. Kosten und Tiefe: C(INCn) = n × C(HA) = 2n depth(INCn) = n × depth(HA) = n RW-Systemarchitektur Kap. 3
Definition 3.3 Ein n-Bit-Multiplexer (MUXn) ist ein Schaltkreis, der die folgende Funktion berechnet: seln : B2n+1 ® Bn mit a b s sel 1 n Schaltbild RW-Systemarchitektur Kap. 3
Schaltbild zum n-Bit Multiplexer Prinzip der Konstruktion: an-1 bn-1 a0 b0 s Kosten und Tiefe eines MUX: C(MUXn) = 3n + 1 depth(MUXn) = 3 ... seln-1 sel0
Rückkehr zum Addierer Gibt es billigere Addierer als CRn ? Untere Schranken: C(+n) ³ 2 × n, depth(+n) ³ log(n) + 1 Binäre Bäume mit 2n+1 Blättern haben 2n innere Knoten. Binäre Bäume mit n Blättern haben mindestens Tiefe élog nù. Im folgenden sei n = 2k. RW-Systemarchitektur Kap. 3
Der Conditional Sum Addierer (CSA) Idee: Nutze Parallelverarbeitung, um Tiefe zu reduzieren! RW-Systemarchitektur Kap. 3
Schaltbild des CSAn ah bh al bl c-1 1 sh sl n/2 n/2 n/2 CSAn/2 CSAn/2 1 CSAn/2 CSAn/2 CSAn/2 (n/2)+1 (n/2)+1 n/2 1 MUX sh sl
Zur Komplexität des CSAn Ein CSAn besteht aus 3 CSAn/2 Dabei steht xh für die n/2 höchstwertigen Bits, xl für die n/2 niederwertigen Bits der Eingabe Es gilt: CSA1 = FA RW-Systemarchitektur Kap. 3
Satz 3.2. Der CSAn hat Tiefe £ 3 log n + 3. Beweis: n=1: depth(CSA1) = depth(FA) = 3 n>1: depth(CSAn) £ depth(CSAn/2) + depth(MUX(n/2)+1) £ depth(CSAn/2) + 3 £ depth(CSAn/4) + 3 + 3 £ depth(CSAn/8) + 3 + 3 + 3 ...... £ depth(CSAn/(2k )) + k × 3 £ 3 × (k + 1) = 3 log(n) + 3 RW-Systemarchitektur Kap. 3
Kosten eines CSAn C(CSA1) = C(FA) = 5 C(CSAn) = 3 × C(CSAn/2) + C(MUX(n/2)+1) = 3 × C(CSAn/2) + 3 × n/2 + 4 Zu lösen ist also ein Gleichungssystem der Form und Betrachte dabei nur RW-Systemarchitektur Kap. 3
Kosten eines CSAn (ff) RW-Systemarchitektur Kap. 3
Kosten eines CSAn (ff) RW-Systemarchitektur Kap. 3
Lemma 3.1 Sei f : N ® N mit Dann gilt wegen Beweis durch Induktion über k. RW-Systemarchitektur Kap. 3
Beispiel zu Lemma 3.1 Wir erinnern uns: C(CSA1) = 3 × C(CSAn/2) + 3 × n/2 + 4 d.h. a = 3, c = 5, und Also sagt das Lemma mit RW-Systemarchitektur Kap. 3
Beispiel (ff) geometrische Reihe: RW-Systemarchitektur Kap. 3
Beispiel (ff) Bemerkung: Man kann CSAn in einfacher Weise modifizieren, so dass Tiefe = O(log n) und Kosten = O(n log n). RW-Systemarchitektur Kap. 3
Ausblick Gibt es Addierer mit linearen Kosten und logarithmischer Tiefe? Carry Lookahead Addierer Idee: Schnelle Vorberechnung der Übertragsbits ci. Sind die ci bekannt, so ergibt sich si durch ai Å bi Å ci-1. Berechnung der ci durch parallele Präfix-Berechnung: Sei M eine Menge und 0 assoziative Operation 0: MM M parallele Präfix-Funktion PPn: Mn Mn mit PPn (xn-1, …, x0) = (xn-1 0 xn-2 … 0 x0, xn-2 0 xn-3 0 … 0 x0,…, x0) Ergebnis: C(CLAn) £ 11n und depth(CLAn) £ 4 log(n) + 2 RW-Systemarchitektur Kap. 3
Addition von Zweierkomplementzahlen Wiederholung: Formale Darstellung: RW-Systemarchitektur Kap. 3
Behauptung Zur Addition von (n+1)-Bit-Zweierkomplementzahlen kann man (n+1)-Bit-Binäraddierer benutzen. Der Test, ob das Ergebnis durch eine (n+1)-Bit- Zweierkomplementzahl darstellbar ist, d.h. ob das Ergebnis aus Rn = {-2n, ..., 2n-1} ist, läßt sich zurückführen auf die Betrachtung von an, bn und sn. RW-Systemarchitektur Kap. 3
n-Bit Addierer an bn a0 b0 c ADDn+1 Å cn sn sn-1 s0 Å an = bn sn RW-Systemarchitektur Kap. 3 Überlauf
Satz 3.3 Seien a,b Î Bn+1, c-1 Î {0,1} und s Î {0,1}n+1, so dass <cn,s> = <a> + <b> + c-1. Dann gilt: Beweis durch Fallunterscheidung [a], [b] beide positiv, beide negativ bzw. o.E. [a] negativ, [b] positiv und Nachrechnen ... Alternativ kann man den folgenden Überlauftest verwenden. RW-Systemarchitektur Kap. 3