N‐Bit binäre Zahlen (signed) n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl …0000000000000000000000000000000000000000000000000110 = 6 …1111111111111111111111111111111111111111111111111101 = -3 Beispiel: 16‐Bit MSB bestimmt das Vorzeichen. MSB=0 bedeutet nicht‐negativ, MSB=1 bedeutet negativ. Beispiel vorzeichenbehaftete 8‐Bit‐Binärzahlen: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 . . . 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 = 0 1 = 1 0 = 2 1 = 125 0 = 126 1 = 127 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 . . . 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 0 = -128 1 = -127 0 = -126 1 = -3 0 = -2 1 = -1 16 Nicht‐vorzeichenbehaftete Zahlen (unsigned) n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl …0000000000000000000000000000000000000000000000000110 = 6 …0000000000000000000000000000000000001111111111111101 = 65533 Beispiel: 16‐Bit MSB bestimmt das Vorzeichen nicht. Zahl ist immer nicht‐negativ. Beispiel nicht‐vorzeichenbehaftete 8‐Bit‐Binärzahlen: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 . . . 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 = 0 1 = 1 0 = 2 1 = 125 0 = 126 1 = 127 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 . . . 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 0 = 128 1 = 129 0 = 130 1 = 253 0 = 254 1 = 255 17 Signed‐N‐Bit Binär in Dezimal umrechnen Beispiel 8‐Bit‐Binärzahl B: 1 1 1 1 1 1 0 1 binär ist dezimal: Beobachtung für folgende 8‐Bit‐Zahl C (Erinnerung: 10000000 binär ist –128): 1 0 0 0 0 1 0 1 Also für signed n‐Bit‐Binärzahl b = bn‐1 bn‐2 ... b0 gilt: Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 18 Sign‐Extension Gegeben 6 und –3 in 16‐Bit‐Darstellung. 0000000000000110 6 in 16‐Bit‐Binärdarstellung 1111111111111101 –3 in 16‐Bit‐Binärdarstellung Wie sieht die 32‐Bit‐Binärdarstellung aus? 6 in 32‐Bit‐Binärdarstellung? –3 in 32‐Bit‐Binärdarstellung? Erinnerung: n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl …0000000000000000000000000000000000000000000000000110 = 6 …1111111111111111111111111111111111111111111111111101 = -3 Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 19 Arithmetischer Rechts‐Shift Arithmetischer Rechts‐Shift von b um x Stellen: Verschiebe Bits nach rechts, um den angegeben Wert x. Die neuen leeren Stellen werden mit dem Sign‐Bit aufgefüllt. Arithmetischer Rechts‐Shift am Beispiel von 8‐Bit‐Zahlen: Arithmetischer Rechts‐Shift um 2 Stellen: 0 1 0 0 1 1 1 1 --> Arithmetischer Rechts‐Shift um 2 Stellen: 1 1 1 1 0 0 0 1 --> Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 20 Overflow Einschränkung auf n‐Bit kann einen Overflow bei Addition erzeugen: (Carry) 0 1 0 1 1 0 1 0 (A) + (B) 0 1 1 0 0 1 1 1 -------------------------= (C) Addition von negativer und nicht‐negativer Zahl. Overflow möglich? Overflow erfordert, dass mindestens gilt: Also Overflow in diesem Fall nicht möglich. Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 21 Overflow Subtraktion von zwei negativen Zahlen x und y. Overflow möglich? Der Fall „zwei nicht‐negativen Zahlen“ ist analog. Also: Overflow in diesem Fall nicht möglich. Zusammenfassung: Wann kann ein Overflow eintreten? Operation Operand A Operand B Ergebnis welches Overflow anzeigt A+B ≥0 ≥0 < 0 A+B <0 <0 ≥0 A–B ≥0 < 0 < 0 A–B < 0 ≥0 ≥0 Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 22 Randbemerkung Andere Darstellungsformen für negative Binärzahlen: • Einerkomplement: Negativer Wert von B ist NOT(B) • Sign‐and‐Magnitude: MSB ist das Vorzeichen. Rest ist der Wert. • Biased‐Notation (Beispielsweise mit 0 auf 1000...0000): 0000 0000 0000 0000 0000 0000 0000 0000 = kleinster negativer Wert 0000 0000 0000 0000 0000 0000 0000 0001 = kleinster negativer Wert + 1 ... 0111 1111 1111 1111 1111 1111 1111 1111 = ‐1 1000 0000 0000 0000 0000 0000 0000 0000 = 0 1000 0000 0000 0000 0000 0000 0000 0001 = 1 ... 1111 1111 1111 1111 1111 1111 1111 1110 = größter positiver Wert ‐1 1111 1111 1111 1111 1111 1111 1111 1111 = größter positiver Wert Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 23 Logische Bausteine Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 24 Logische Bausteine Kombinatorische Schaltungen Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 25 Gatter Funktion Eingabe Symbol Ausgabe AND A A AND B Verallgemeinerung auf n Eingänge A1 A2 A1 AND A2 ... AND An B Und‐Gatter OR A An B A1 A2 Oder‐Gatter NOT Und‐Gatter mit n Eingängen A OR B NOT A A Inverter A1 OR A2 ... OR An An Oder‐Gatter mit n Eingängen Bildquelle: Symbole kopiert aus David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 26 Kombinatorische Schaltungen Jede boolesche Funktion (gegeben als logischer Ausdruck) wie z.B. f(A,B) = NOT( NOT(A) OR B) Lässt sich als kombinatorische Schaltung realisieren. Das Beispiel: Inverter werden häufig abgekürzt dargestellt. Das Beispiel: Bildquelle: Symbole kopiert aus David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 27 Wahrheitstabellen Jede boolesche Funktion lässt mit einer Wahrheitstabelle darstellen. Beispiel: f(A,B,C) = A AND NOT(B OR C) als Wahrheitstabelle A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C B OR C NOT(B OR C) f(A,B,C)=A AND NOT(B OR C) 0 1 0 1 0 1 0 1 Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 28 Wahrheitstabellen Jede Wahrheitstabelle kann man mit einem logischen Ausdruck darstellen. Beispiel: A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C f(A,B,C) 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 1 Als Disjunktive Normalform (DNF); Oder‐ Verknüpfung aller Minterme: Ziel ist aber nicht irgend einen Ausdruck zu finden, sondern einen möglichst kleinen (also eine möglichst kleine kombinatorische Schaltung). Mehr dazu gleich. Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 29 Wahrheitstabellen A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C f(A,B,C) 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 1 Neben der disjunktiven Normalform gibt es noch die Konjunktive Normalform (KNF); Und‐Verknüpfung aller Maxterme Allgemein: für den Entwurf von digitalen Schaltungen verwendet man in der Regel eine Darstellung von booleschen Funktionen mittels Normalformen. Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 30 Wahrheitstabellen Bei der Suche nach möglichst kleinen kombinatorischen Schaltungen können auch sogenannte Don‘t ‐Care‐Terme recht hilfreich sein. A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C f(A,B,C) 0 1 1 1 0 0 1 X 0 1 1 X 0 X 1 1 Don‘t‐Care Terme: In der kombinatorischen Schaltung, die diese Funktion implementiert, ist es egal welche Ausgabe die Schaltung für die Eingaben 011, 101 und 110 produziert. Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 31 Wahrheitstabellen In einer Wahrheitstabelle kann für die Eingaben auch mehrere Ausgabe‐Bits festgelegt werden. Beispiel: Eingabe Bit 0 0 0 0 0 1 1 1 1 Eingabe Bit 1 0 0 1 1 0 0 1 1 Eingabe Ausgabe Ausgabe Bit 2 Bit 0 Bit 1 0 1 1 1 1 1 0 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 32 Beispiel: Addition zweier Bits mit Übertrag Wahrheitstabelle A 0 0 1 1 Boolesche Ausdrücke B s(A,B)=A+B c(A,B)=Carry 0 1 0 1 Kombinatorische Schaltung Ist das eine gute Schaltung? Wie sieht n‐Bit‐Addition aus? Mehr dazu gleich. (Im Folgenden nehmen wir häufig logische Bauelemente als Blackbox mit Eingängen und Ausgängen an. Die Funktion des Bausteins wird nur textuell beschrieben.) Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 33 Logische Bausteine Minimierung Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 34 Minimierung mittels Rechenregeln Beispiel: Minimierung der folgenden DNF (!A * !B * C) + (!A * B * !C) + (A * !B * !C) + (A * !B * C) + (A * B * !C) Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 35 Minimierung mittels KV‐Diagramm A B C D f(A,B,C,D) 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 Ordne Variablen einer 2‐, 3‐ oder 4‐Stelligen Funktion in Tabelle so an, dass sich benachbarte Felder nur in einer Variablen unterscheiden. Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik 36 Minimierung mittels KV‐Diagramm A B C D f(A,B,C,D) 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 Trage für alle Minterme eine 1 in dem Diagramm ein. A A D C D C D B B Grundlagen der Rechnerarchitektur ‐ Logik und Arithmetik B 37