Rechnerstrukturen Michael Engel und Peter Marwedel TU Dortmund, Fakultät für Informatik SS 2013 Hinweis: Folien a. d. Basis von Materialien von Gernot Fink und Thomas Jansen Repräsentation von Daten 15. April 2013 Boole. Fkt. 1 Repräsentation von Daten Repräsentation von Texten (Wiederholung) Repräsentation ganzer Zahlen (Wiederholung) Repräsentation rationaler Zahlen (Wiederholung) Repräsentation anderer Daten 2 Boolesche Funktionen und Schaltnetze Einleitung Boolesche Algebra Repräsentationen boolescher Funktionen Normalformen boolescher Funktionen Repräsentation boolescher Funktionen mit OBDDs Repräsentation von Daten Boole. Fkt. Repräsentation von Texten: Unicode Prinzip: Standardisierte numerische Kodierung von Zeichen aktueller Standard Unicode 6.2 (26. September 2012) ◮ verwaltet vom Unicode-Konsortium (http://www.unicode.org) ◮ unterstützt verschiedene Codierungsformate (Unicode Transformation Format): UTF-8, UTF-16, UTF-32 mit 8, 16, 32 Bits ◮ längere Formate erweitern kürzere Formate ◮ vereinbart auch weitere Informationen (z. B. Schreibrichtung, Kombination von Zeichen (Codepoints)) Repräsentation von Daten Boole. Fkt. Repräsentation ganzer Zahlen: Überblick feste Länge ℓ = 5, (2ℓ = 32, 2ℓ−1 = 16, 2ℓ−1 − 1 = 15) z 1 −1 0 15 −15 16 −16 VZ-Betrag 00001 10001 00000 10000 01111 11111 — — Bias b = 16 10001 01111 10000 Bias b = 15 10000 01110 01111 11111 00001 — 00000 11110 00000 11111 — 1er-K. 00001 11110 00000 11111 01111 10000 — — 2er-K. 00001 11111 00000 01111 10001 — 10000 Zweierkomplement bei weitem gebräuchlichste Darstellung Repräsentation von Daten Boole. Fkt. Repräsentation rationaler Zahlen Wunsch rationale Zahlen q ∈ Q repräsentieren können Vereinbarung feste Repräsentationslänge l Bits Feste Position des Kommas ⇒ Festkommazahlen Beispiel 24 = 16 1 16 = 22,625 23 =8 0 22 =4 1 +4 21 =2 1 +2 20 =1 0, 2−1 = 0,5 1 +0,5 2−2 = 0,25 0 2−3 = 0,125 1 +0,125 allgemein bei v Vorkomma- und m Nachkommastellen vP −1 zi · 2i z= i =−m Repräsentation von Daten Boole. Fkt. Gleitkommazahlen: IEEE-754 1985 z = (−1)s · m · 2e mit s ∈ {0, 1}, e ∈ Z, m ∈ Q und 1 ≤ m < 2 Festlegungen ◮ ◮ ◮ führende 1 der Mantisse“ wird nicht mit abgespeichert (heißt ” implizite Eins“) ” Mantisse in Binärcodierung (Festkommazahlen mit Ziffern ausschließlich hinter dem Komma) Exponent in Exzessdarstellung mit Bias b = 2ℓe −1 − 1 Gesamtlänge Vorzeichen Exponent Mantisse 32 1 8 23 single 64 1 11 52 double Repräsentation von Daten Precision Boole. Fkt. IEEE 754-1985: ein Beispiel ℓ = 32, ℓs = 1, ℓe = 8, ℓm = 23 b = 27 − 1 = 127, emin = −b + 1 = −126, emax = 28 − b − 2 = 127 Wir wollen −3 darstellen. negativ, also Vorzeichenbit 1 Darstellung als Summe von Zweierpotenzen 3 = 2 + 1 = 21 + 20 = 20 + 2−1 · 21 Exponent 1 Exzessdarstellung 1 + b = 128 darstellen 128 = (1000 0000)2 Mantisse 1,1, implizite Eins entfällt, also 100 0000 0000 · · · Ergebnis |{z} 1 1000 0000 0000 0000} | {z0000} 100 | 0000 0000{z VZ Repräsentation von Daten Exponent Mantisse Boole. Fkt. Repräsentation anderer Daten hier für uns interessant primitive Daten“ ” (von Hardware direkt unterstützt) zentral Programme in der Regel Bitmuster fester Länge (z.B. 4 Byte): Befehl, Operand Problem Was repräsentiert ein Byte im Speicher? kaum verwendet: Repräsentation von Daten Typbits Boole. Fkt. Repräsentation von Datenfolgen Speicher oft in Worten organisiert Wort je nach Rechner 2 Bytes, 4 Bytes, . . . heterogene Daten hintereinander in den Speicher schreiben dabei manchmal Wortgrenzen beachten dann leere Zellen (Bytes) möglich homogene Daten Problem Arrays Wie erkennt man das Ende der Folge? ◮ feste Anzahl vereinbaren ◮ Länge am Anfang speichern ◮ spezielles Endezeichen verwenden Repräsentation von Daten Boole. Fkt. Boolesche Funktionen und Schaltnetze Repräsentation von Daten Boole. Fkt. Boolesche Funktionen vielleicht schon bekannt Aussagenlogik Satz ist Aussage mit eindeutigem Wahrheitswert Wahrheitswerte wahr, falsch neue zusammengesetzte Aussagen durch Verknüpfung von Aussagen Verknüpfungen ◮ ◮ ◮ Negation (¬, nicht“) ” Konjunktion (∧, und“) ” Disjunktion (∨, oder“) ” Repräsentation von Daten Boole. Fkt. Definition der Verknüpfungen Seien A, B zwei Aussagen. A Definition Negation falsch wahr ¬A wahr falsch A falsch Definition Konjunktion falsch wahr wahr A falsch Definition Disjunktion falsch wahr wahr Repräsentation von Daten B falsch wahr falsch wahr B falsch wahr falsch wahr A∧B falsch falsch falsch wahr A∨B falsch wahr wahr wahr Boole. Fkt. Boolesche Algebra Definition 2 Wir nennen (B, ∪, ∩,− ) mit B = {0, 1} und x ∪ y = max{x, y }, x ∩ y = min{x, y }, x = 1 − x für alle x, y ∈ B boolesche Algebra. George Boole, englischer Mathematiker, 1815–1864 beobachte Entsprechungen: Repräsentation von Daten falsch wahr ∧ ∨ ¬ ⇔ ⇔ ⇔ ⇔ ⇔ 0 1 ∩ ∪ − Boole. Fkt. Rechengesetze Satz 3 In der booleschen Algebra (B, ∪, ∩,− ) gilt für alle x, y , z ∈ B: Kommutativität: x ∪ y = y ∪ x, x ∩ y = y ∩ x Assoziativität: (x ∪ y ) ∪ z = x ∪ (y ∪ z), (x ∩ y ) ∩ z = x ∩ (y ∩ z) Distributivität: x ∩ (y ∪ z) = (x ∩ y ) ∪ (x ∩ z), x ∪ (y ∩ z) = (x ∪ y ) ∩ (x ∪ z) Neutralelemente: x ∪ 0 = x, x ∩ 1 = x Nullelemente: x ∪ 1 = 1, x ∩ 0 = 0 Repräsentation von Daten Boole. Fkt. Rechengesetze II Satz 3 (cont.) In der booleschen Algebra (B, ∪, ∩,− ) gilt für alle x, y , z ∈ B auch: Idempotenz: x = x ∪ x = x ∩ x Involution: x = x = ¬¬x Absorption: (x ∪ y ) ∩ x = x, (x ∩ y ) ∪ x = x Resolution: (x ∪ y ) ∩ (x ∪ y ) = y , (x ∩ y ) ∪ (x ∩ y ) = y Komplementarität: x ∪ (y ∩ y ) = x, x ∩ (y ∪ y ) = x de Morgansche Regeln: x ∪ y = x ∩ y , x ∩ y = x ∪ y Repräsentation von Daten Boole. Fkt. Beweis Absorption Absorption: (x ∪ y ) ∩ x = x x 0 0 1 1 y 0 1 0 1 x ∪y 0 1 1 1 Repräsentation von Daten linke Seite (x ∪ y ) ∩ x 0 0 1 1 rechte Seite x 0 0 1 1 √ √ √ √ Boole. Fkt. Repräsentationen boolescher Funktionen Definition 4 Seien n, m ∈ N. Eine Funktion f : B n → B m heißt boolesche Funktion. B n = Menge aller n-stelligen Tupel über B Beispiel B 2 = {(0, 0), (0, 1), (1, 0), (1, 1)} Notation Anzahl boolescher Funktionen boolesche Funktion f : B n → B m als Wertetabelle darstellbar mit |B n | = 2n Zeilen und |B m | = 2m Möglichkeiten je Zeile ⇒ 2m 2n Beispiel n = 2m·2 boolesche Funktionen f : B n → B m 2 21·2 = 24 = 16 boolesche Funktionen f : B 2 → B Repräsentation von Daten Boole. Fkt. Alle booleschen Funktionen f : B 2 → B x y f1 f2 f3 f4 f5 f6 f7 f8 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 Nullfkt. AND 0 ∧ Proj. x Proj. XOR OR y ⊕ ∨ x y f9 f10 f11 f12 f13 f14 f15 f16 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 1 NOR Äquiv. Negation Negation Impl. NAND Einsfkt. ⇔ ¬y ¬x ⇒ 1 Verwenden im Weiteren ∧ (Konjunktion), ∨ (Disjunktion), ¯ (Negation) Repräsentation von Daten Boole. Fkt. Darstellung boolescher Funktionen gerade gesehen x 0 0 1 1 y 0 1 0 1 Wertetabelle (Orientierung meistens wie hier) f7 0 1 1 0 bei fester Reihenfolge Wertevektor f7 : (0, 1, 1, 0) Repräsentation von Daten Boole. Fkt. Index und Minterm Index 0 1 2 3 x 0 0 1 1 y 0 1 0 1 f7 0 1 1 0 nicht einschlägig einschlägig einschlägig nicht einschlägig Definition Die boolesche Funktion, für die nur der Index i einschlägig ist, heißt Minterm zum Index i . Ein Minterm ist nur mit Negationen und Konjunktionen darstellbar: ( 0 xj xj = 1 xj ˆ [negierte] Variable) und dann Konjunktion all dieser Literale (= Repräsentation von Daten Boole. Fkt. Beispiel zu Index und Minterm Index 0 1 2 3 x1 0 0 1 1 x2 0 1 0 1 f7 0 1 1 0 nicht einschlägig einschlägig einschlägig nicht einschlägig Beispiel Minterm zum Index 2 = (1 0)2 , m2 (x1 , x2 ) = x1 ∧ x2 Index 0 1 2 3 Repräsentation von Daten x1 0 0 1 1 x2 0 1 0 1 x1 x2 0 0 1 0 also Hinweis: In der Regel abkürzende Notation der Konjunktion, z.B.: x1 x2 x1 ∧ x2 Boole. Fkt. Normalformen Für wie viele Eingaben liefert ein Minterm 1? klar für genau 1 Folgerungen ◮ Disjunktion aller Minterme zu einschlägigen Indizes einer booleschen Funktion f ist wieder f ◮ XOR-Verknüpfung aller Minterme zu einschlägigen Indizes einer booleschen Funktion f ist wieder f Repräsentation von Daten Boole. Fkt. Normalformen ◮ ◮ Definition 8 Die Darstellung von f als Disjunktion all ihrer Minterme zu einschlägigen Indizes heißt disjunktive Normalform (DNF). Die Darstellung von f als XOR-Verknüpfung all ihrer Minterme zu einschlägigen Indizes heißt Ringsummen-Normalform (RNF). Anmerkung Normalformen sind eindeutig. Index x y 0 0 0 Beispiel 0 1 1 2 1 0 1 1 3 DNF von f7 x y ∨ x y Repräsentation von Daten f7 0 1 1 0 Minterm xy xy xy xy RNF von f7 xy ⊕xy Boole. Fkt. Funktionale Vollständigkeit Beobachtung jede boolesche Funktion f : B n → B nur mittels Konjunktion, Disjunktion und Negation darstellbar (z. B. durch ihre DNF) Definition 5 Eine Menge F von booleschen Funktionen heißt funktional vollständig, wenn sich jede boolesche Funktion durch Einsetzen und Komposition von Funktionen aus F darstellen lässt. Satz 6 {∧, ∨, ¬} ist funktional vollständig. Repräsentation von Daten Boole. Fkt. Funktionale Vollständigkeit Gibt es kleinere funktional vollständige Mengen? Behauptung Beobachtung {∨, ¬} und {∧, ¬} sind beide funktional vollständig. Zum Beweis genügt es zu zeigen, dass {∧, ∨, ¬} darstellbar ist. Beweis. Anwendung der de Morgan-Regeln (Satz 3) x ∨ y = x ∧ y ⇒ {∨} mit {∧, ¬} darstellbar x ∧ y = x ∨ y ⇒ {∧} mit {∨, ¬} darstellbar Repräsentation von Daten Boole. Fkt. Kleinste funktional vollständige Mengen Wie viele Funktionen für funktionale Vollständigkeit mindestens? Satz 7 {NAND} ist funktional vollständig. Beweis. Es genügt, {¬, ∨} mit NAND darzustellen. x ¬x NAND(x, x) ¬x = NAND(x, x) 0 1 1 1 0 0 x ∨ y = NAND(NAND(x, x), NAND(y , y )) x y x ∨ y ¬x ¬y NAND(NAND(x, x), NAND(y , y )) 0 0 0 1 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 1 Repräsentation von Daten Boole. Fkt. Vorsicht, Notation! Anmerkung x y 6= x y x y = ¬(x y ) x y = (¬x) ∧ (¬y ) x 0 0 1 1 y 0 1 0 1 Repräsentation von Daten xy 1 1 1 0 xy 1 0 0 0 Boole. Fkt. Maxterme Minterm-Darstellung betont Funktionswert 1. Definition Die boolesche Funktion, für die nur der Index i nicht einschlägig ist, heißt Maxterm zum Index i . Beobachtung Definition Maxterm unterscheidet sich nur in nicht“ ” von Definition Minterm Beobachtung mi Minterm zum Index i , Mi Maxterm zum Index i ⇒ Mi = ¬mi Beobachtung Konjunktion aller Maxterme zu nicht einschlägigen Indizes einer booleschen Funktion f ist wieder f Repräsentation von Daten Boole. Fkt. Normalformen ◮ Fortsetzung von Definition 8 Die Darstellung von f als Konjunktion all ihrer Maxterme zu nicht einschlägigen Indizes heißt konjunktive Normalform (KNF). Beispiel Index 0 1 2 3 4 5 6 7 Repräsentation von Daten x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 z 0 1 0 1 0 1 0 1 fbsp 1 0 0 0 1 1 1 1 x ∨y ∨z 1 0 1 1 1 1 1 1 x ∨y ∨z 1 1 0 1 1 1 1 1 x ∨y ∨z 1 1 1 0 1 1 1 1 Boole. Fkt. Darstellungen boolescher Funktionen ◮ ◮ ◮ ◮ ◮ ◮ ◮ ◮ ◮ ◮ Wozu stellt man boolesche Funktionen dar? Realisierung Verifikation Fehleranalyse Synthese ... Wo stellt man boolesche Funktionen dar? auf dem Papier im Computer Probleme Wertetabelle, Wertevektor immer groß Normalformen oft groß Normalformen unterstützen gewünschte Operationen kaum Wunsch Repräsentation von Daten andere Repräsentation Boole. Fkt. Eine Datenstruktur für boolesche Funktionen Ziel f : B n → B darstellen Wünsche ◮ zu einer Belegung x1 , x2 , . . . , xn schnell den Funktionswert f (x1 , x2 , . . . , xn ) ausrechnen können ◮ Funktionen schnell auf Gleichheit testen können ◮ Funktionen schnell manipulieren (z. B. eine Variable konstant setzen) können ◮ schnell eine Null-Eingabe/eine Eins-Eingabe finden können ◮ Funktionen möglichst klein repräsentieren ◮ ... Ordered Binary Decision Diagrams Repräsentation von Daten Boole. Fkt. OBDDs erster Schritt dann ◮ ◮ ◮ ◮ ◮ ◮ Festlegen einer Variablenordnung π (z. B. π = (x3 , x1 , x2 , x4 )) x4 1 oder Baue πOBDD aus Knoten 1 x3 x2 und Kanten nach folgenden Regeln: Knoten mit Variablen, 0 oder 1 markiert Kanten mit 0 oder 1 markiert Variablen-Knoten mit je einer ausgehenden 0- und 1-Kante Konstanten-Knoten ohne ausgehende Kante genau ein Knoten ohne eingehende Kante Kanten zwischen Variablenknoten beachten π Repräsentation von Daten Boole. Fkt. πOBDD – Ein Beispiel Variablenordnung π = (x1 , x2 , x3 ) Beispiel Auswertung f (1, 0, 1) x1 = 1, x2 = 0, x3 = 1 f (1, 0, 1) = 1 x1 0 1 x2 x2 0 1 x3 0 x3 1 x3 x3 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 Repräsentation von Daten Boole. Fkt. πOBDD-Größe gleichartige Senken verschmelzen x1 0 1 x2 x2 0 1 x3 1 x3 0 Repräsentation von Daten 0 0 1 1 x3 0 x3 0 1 1 0 1 Boole. Fkt. πOBDD-Größe gleichartige Knoten verschmelzen x1 0 1 x2 x2 0 1 x3 1 x3 0 Repräsentation von Daten 0 0 1 1 x3 0 0 1 1 Boole. Fkt. πOBDD-Größe Knoten ohne Einfluss eliminieren x1 0 1 x2 x2 0 1 x3 1 1 x3 0 Repräsentation von Daten 0 0 1 0 1 Boole. Fkt. πOBDD-Größe Knoten ohne Einfluss eliminieren x1 0 1 x2 0 1 x3 1 x3 0 Repräsentation von Daten 0 1 0 1 Boole. Fkt. πOBDD-Größe Knoten ohne Einfluss eliminieren x1 0 1 x2 0 Größe minimal 1 x3 1 0 Repräsentation von Daten 0 1 Boole. Fkt. Alternative Darstellung eines πOBDDs x1 x2 x3 Repräsentation von Daten 0 1 Boole. Fkt. OBDD-Reduzierung Satz 9 Die erschöpfende Anwendung der ◮ Verschmelzungsregel Knoten mit gleicher Markierung und gleichen ” Nachfolgern können verschmolzen werden“ und ◮ Eliminationsregel Ein Knoten mit gleichem Null- und ” Einsnachfolger kann entfernt werden“ in beliebiger Reihenfolge führt zum reduzierten πOBDD. reduziert = minimale Größe und eindeutig Repräsentation von Daten Boole. Fkt.