Codes () Beispiele für die Bedeutung eines n-bit-wortes: Befehl (instruction) Zahl (number) Zeichen (character) Bildelement (pixel) Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (2) ASCII (bzw, ISO 7-bit) Zeichencode DEZ HEX Zeichen DEZ HEX Zeichen DEZ HEX Zeichen DEZ HEX Zeichen NUL 32 2 SP 64 4 @ 96 6 ` SOH 33 2! 65 4 A 97 6 a 2 2 STX 34 22 " 66 42 B 98 62 b 3 3 ETX 35 23 # 67 43 C 99 63 c 4 4 EOT 36 24 $ 68 44 D 64 d 5 5 ENQ 37 25 % 69 45 E 65 e 6 6 ACK 38 26 & 7 46 F 2 66 f 7 7 BEL 39 27 ' 7 47 G 3 67 g 8 8 BS 4 28 ( 72 48 H 4 68 h 9 9 HT 4 29 ) 73 49 I 5 69 i A LF 42 2A * 74 4A J 6 6A j B VT 43 2B + 75 4B K 7 6B k 2 C FF 44 2C, 76 4C L 8 6C l 3 D CR 45 2D - 77 4D M 9 6D m 4 E SO 46 2E. 78 4E N 6E n 5 F SI 47 2F / 79 4F O 6F o 6 DLE 48 3 8 5 P 2 7 p 7 DC 49 3 8 5 Q 3 7 q 8 2 DC2 5 32 2 82 52 R 4 72 r 9 3 DC3 5 33 3 83 53 S 5 73 s 2 4 DC4 52 34 4 84 54 T 6 74 t 2 5 NAK 53 35 5 85 55 U 7 75 u 22 6 SYN 54 36 6 86 56 V 8 76 v 23 7 ETB 55 37 7 87 57 W 9 77 w 24 8 CAN 56 38 8 88 58 X 2 78 x 25 9 EM 57 39 9 89 59 Y 2 79 y 26 A SUB 58 3A : 9 5A Z 22 7A z 27 B ESC 59 3B ; 9 5B [ 23 7B { 28 C FS 6 3C < 92 5C \ 24 7C 29 D GS 6 3D = 93 5D ] 25 7D } 3 E RS 62 3E > 94 5E ^ 26 7E ~ 3 F US 63 3F? 95 5F _ 27 7F DEL Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (3) Erweiterungen des ASCII-Codes: ISO 646 (Latin-) ISO 8859 (code pages) ISO 8859- (Latin-, Westeuropa) ISO 8859-2 (Latin-2, Zentral- und Osteuropa, slawische Sprachen) ISO 8859-3 (Latin-3, Südeuropa, z.b. türkisch, maltesisch, Esperanto) ISO 8859-4 (Latin-4, Nordeuropa, z.b. baltische Sprachen) ISO 8859-5 (Kyrillisch, z.b. Bulgarisch, Russisch, Serbisch)... ISO 646 (Unicode) Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (4) Unicode 65,536 code points enthält Latin- als Untermenge (336 code points) weitere Sprachenbeispiele: griechisch (44), kyrillisch (256), armenisch (96), hebräisch (2) code points für Sonderzeichen: z.b. Indizes (48), Währungssymbole (48), math. Symbole (256) Symbole für chinesisch, japanisch, koreanisch 6,4 code points frei definierbar für den lokalen Gebrauch steigende Akzeptanz, wird schon unterstützt von einigen Programmiersprachen (Java) und Betriebssystemen (Windows NT Windows 8, Linux, Mac OSX) Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (5) Beispiel für die Verwendung von graphischen Symbolen (Teletext): Zeichensatztabelle (westeuropäische Sprachen) für den Videotext Decoder SAA528 (Philips) Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (6) Bit-map: Transformation eines Bildes in ein rechteckiges Feld mit Bildpunkten (Pixel) Pixel: kleinste Bildinformationseinheit (Analogie zu bit) Pixel kann Attribute besitzen (z.b. Farbe) sehr kapazitätsintensiv (Speicher, Bandbreite) komplexe Komprimierungstechniken (z.b. MPEG zur Bildübertragung) Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (7) Distanz zwischen 2 Binärworten Wort Wort 2 Unterschied Hamming-Abstand x x x x 3 x x 2 x Der Hamming-Abstand ist einfach die Anzahl von Positionen, in denen sich zwei binäre Folgen unterscheiden. Der 4-bit GRAY CODE Dezimalwert Binärwert Graycode Dezimalwert Binärwert Graycode 2 3 4 5 6 7 8 9 2 3 4 5 Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (8) Optischer Codierer mit BINÄR CODES Sektor Winkel Binärcode 2 3 4 5 6 7-45 45-9 9-35 35-8 8-225 225-27 27-35 35-36 Optischer Codierer mit GRAY CODES Lichtdetektoren Lichtquellen binäre Ausgänge Sektor Winkel Graycode 2 3 4 5 6 7-45 45-9 9-35 35-8 8-225 225-27 27-35 35-36 undurchsichtig - logisch transparent - logisch Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (9) Umwandlung Binär Codes in Gray Codes Umwandlung Gray Codes in Binär Codes binary gray gray binary b = g g = b b = g g = b b 2 = g 2 g 2 = b 2 b 3 = g 3 g 3 = b 3 b 4 g 4 g 4 b 4 Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes () Beispiel einer Codierscheibe Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes () Fehlererkennende (EDC) bzw. fehlerkorrigierende Codes (ECC) Einsatz von ECCs insbesondere bei: stark gestörten Übertragungswegen militärische Datenübertragungen auf Funkwegen bei Computerspeichern, um Lesefehler ohne Wiederholvorgang zu beheben z.b. ECC-RAM, CD, Plattenspeicher Definitionen: Codewort:= mit zusätzlichen (redundanten) Kontrollbits versehenes Quellwort m:= Länge des Quellwortes (Anzahl der Nutzdatenbits) r:= Anzahl der Kontrollbits n:= m + r := Länge des Codewortes Ein binärer Code ist eine Teilmenge von R 2 n. Seine Elemente können auch als Codevektoren (Spaltenvektoren) aufgefasst werden m r Codewort Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (2) Hammingdistanz: Seien x und y Codewörter im R 2 n. Dann heißt die Funktion d(x,y):= Σ x i + y i mit i=,..., n Hammingdistanz von x und y. Hammingdistanz eines Codes: Sei C R 2 n ein Code. Dann ist d(c) := min(d(x,y) x,y C x y) Die Hammingdistanz des gesamten Codes (Menge aller Codewörter), d.h. gleich der minimalen Hammingdistanz zwischen beliebigen 2 beliebigen Codewörtern dieses Codes. Hammingdistanz als Metrik: Seien x,y Elemente der Menge O, mit d: O x O R eine Funktion auf O. d heißt Metrik, wenn die Axiome der Metrik für alle x,y,z O gelten: d(x,y) ; d(x,y) = x = y (Nichtnegativität) d(x,y) = d(y,x) (Symmetrie) d(x,y) d(x,z) + d(z,y) (Dreiecksungleichung) die Hammingdistanz d ist eine Metrik auf R 2 n. Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (3) Prüfbarkeit auf p-bit-fehler: Sei C R 2 n ein Code. C heißt auf p-bit-fehler prüfbar wenn für jedes x aus C gilt: K(x,p) C ={x}, wobei K(x,p):= {y d(y,x) p} C ist auf p-bit-fehler prüfbar genau dann wenn für alle x,y aus C gilt: d(x,y) p+ Korrigierbarkeit von p-bit-fehlern: C heißt auf p-bit-fehler korrigierbar, wenn für alle x,y aus C gilt: K(x,p) K(y,p) = { }. C ist auf p-bit- Fehler korrigierbar genau dann wenn für alle x,y aus C gilt: d(x,y) 2p+ Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (4) Veranschaulichung des Codeprinzips: m 2 gültige Codewörter n 2 mögliche Codewörter räumliche Darstellung von Codes: Ungültiges Codewort Gültiges Codewort Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (5) Paritätscode mit geraden und ungeraden Paritäten: Nachricht Codewort (gerade Parität) Codewort (ungerade Parität) gerades Paritätsbit (even) ungerades Paritätsbit (odd) Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (6) Paritätscode für einen Block von Quellworten (geblockter Paritätscode): Bit Wort Wort 2 Wort 3 Wort 4 Wort 5 Wort 6 D D D 2 Bit Wort Wort 2 Wort 3 Wort 4 Wort 5 Wort 6 Wort 7 D D D 2 D 3 Vertikale Paritätsbits Horizontale Paritätswort Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (7) Paritätscode für einen Block von Quellworten (geblockter Paritätscode): Bit Wort Wort 2 Wort 3 Wort 4 Wort 5 Wort 6 Wort 7 D D D 2 D 3 ok X ok ok ok ok X ok ok ok ok Durch Erkennung des Paritätsfehlers in einer Zeile kann die fehlerhafte Bitposition gefunden werden (z.b. D.). Durch Erkennung eines Paritätsfehlers in einer Spalte kann das fehlerhafte Wort gefunden erkannt werden (z.b. Wort 3). Nun kann der Fehler lokalisiert werden: Bit D im Wort 3. Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (8) Anzahl der benötigten Kontrollbits für einen Einfach-ECC: Wortbreite Prüfbits Gesamtgröße Overhead in % 8 6 32 64 28 256 52 4 5 6 7 8 9 2 2 38 7 36 265 522 5 3 9 6 4 2 Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (9) Kurzdarstellung des Hamming-Algorithmus:. Kodierung auf der Sender (Schreib-)seite: Die Bits des Codewortes werden von bis n (n=m+r) durchnumeriert, wobei die Positionsnummer als binäres Polynom dargestellt wird. Als r Kontrollbits p i werden jene Bits verwendet, deren Positionsnummer eine Zweierpotenz darstellt, also die Bits,2,4,...,2 r-. Die restlichen Bits mit den Positionsnummern 3,5,6,7,9... werden mit den m Datenbits d i an der Position x i belegt. Die Kontrollbits dienen als Paritätsbits. Das Kontrollbit p i stellt die Parität aller Nutzdatenbits d j mit x j = her, deren i-ter Polynomial-Koeffizient (Positionsnummer an der Stelle i) eine enthält. Bit-Nr. x i 7 6 5 4 3 2 Zuordnung d 3 d 2 d p 2 d p p Polynomial- Koeffizienten 2 2 2 2 P 2 = d 3 xor d 2 xor d P = d 3 xor d 2 xor d P = d 3 xor d xor d Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (2) Kurzdarstellung des Hamming-Algorithmus: 2. Fehlerkontrolle auf der Empfänger (Lese-)seite: Auf der Basis des vorliegenden Codewortes werden erneut nach der gleichen Regel wie oben Kontrollbits p * i erzeugt Es wird das Syndrom S gebildet, wobei S i = p i xor p * i für i =,2,4,...,2 r-. Ist das zu kontrollierende Codewort fehlerfrei S = Existiert genau ein Fehler S als Binärzahl gelesen identifiziert die Positionsnummer des zu korrigierenden Bits. Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (2) Prinzipielle Idee hinter dem Hamming-Algorithmus: A B C Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (22) Prinzipielle Idee hinter dem Hamming-Algorithmus: d p p d 3 d d 2 p 2 Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (23) Beispiel: Codiertes Wort: 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 2 2 Paritäts-Bits Paritätsbit falsch (,3,5,7,9,,3,5,7,9,2 enthalten zusammen 5 Einsen) Paritätsbit 2 richtig (2,3,6,7,,,4,5,8,9, enthalten zusammen 6 Einsen) Paritätsbit 4 falsch (4,5,6,7,2,3,4,5,2,2 enthalten zusammen 5 Einsen) Paritätsbit 8 richtig (8,9,,,2,3,4,5 enthalten zusammen 2 Einsen) Paritätsbit 6 richtig (6,7,8,9,2,2 enthalten zusammen 4 Einsen) Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (23a) Beispiel zum Erzeugen einer Hamming-Codierung Bitposition 2 3 4 5 6 7 Kontrollbits p p p 2 Datenbits c c c 2 c 3 Durchnumerieren der Bit-Positionen beginnend mit Markieren der Kontrollbit-Positionen an den Stellen 2 bis 2 r, also, 2, 4, 8... Auffüllen der restlichen (freien) Positionen durch Datenbits Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (23b) Beispiel zum Prüfen einer Hamming-Codierung Bitposition 2 3 4 5 6 7 Kontrollbits p p p 2 Datenbits c c c 2 c 3 Datencode: Eintragen der zu übertragenden Datenbits Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (23c) Beispiel zum Prüfen einer Hamming-Codierung Bitposition 2 3 4 5 6 7 Kontrollbits p p p 2 Datenbits c c c 2 c 3 Datencode: für p : für p : für p 2 : Eintragen der Polynolialcodes für jede Bit-Nr. zur Gruppierung von Kontroll- und Datenbits Alle mit markierten Positionen gehören zu einer Gruppe Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (23d) Beispiel zum Prüfen einer Hamming-Codierung Bitposition 2 3 4 5 6 7 Kontrollbits p p p 2 Datenbits c c c 2 c 3 Datencode: für p : für p : für p 2 : Übertragen der bekannten Datenbits an die vorher markierten Positionen Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (23e) Beispiel zum Prüfen einer Hamming-Codierung Bitposition 2 3 4 5 6 7 Kontrollbits p p p 2 Codebits c c c 2 c 3 Datencode: für p : für p : für p 2 : Ergebnis: Ein Kontrollbit wird so gesetzt, dass die Anzahl der gesetzten Bits des kontrollierten Bereiches gerade ist. Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (23f) Beispiel zum Prüfen einer Hamming-Codierung Bitposition 2 3 4 5 6 7 Kontrollbits p p p 2 Datenbits c c c 2 c 3 Code: Durchnumerieren der Bit-Positionen beginnend mit Markieren der Kontrollbit-Positionen an den Stellen 2 bis 2 r, also, 2, 4, 8... Auffüllen der restlichen (freien) Positionen durch Datenbits Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (23g) Beispiel zum Prüfen einer Hamming-Codierung Bitposition 2 3 4 5 6 7 Kontrollbits p p p 2 Datenbits c c c 2 c 3 Code: für p : für p : für p 2 : Zuordnung der Codebits zu Gruppen entsprechend der durch die Polynomialcodes der Bit-Nummern mit einer markierten Positionen Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (23h) Beispiel zum Prüfen einer Hamming-Codierung Bitposition 2 3 4 5 6 7 Kontrollbits p p p 2 p* Datenbits c c c 2 c 3 Code: für p : für p : für p 2 : Bilden des Syndroms S Nochmaliges Erzeugen der Kontrollbits und Verknüpfung dieser mittels XOR mit den mitgelieferten Kontrallbits Aufgrund gleicher logischer Operationen für Kontrollbit- und Syndromerzeugung kann das Syndrom auch durch Ermitteln der Parität über die gesamte Gruppe gebildet werden Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (23i) Beispiel zum Prüfen einer Hamming-Codierung Bitposition 2 3 4 5 6 7 Kontrollbits p p p 2 p* S Datenbits c c c 2 c 3 Code: für p* : 2 für p* : 2 für p* 2 : 2 2 4 Korrektur: Interpretation des Syndroms S als Polynomialcode wenn S=, so trat kein Fehler auf wenn S, so gibt S sie Nummer des fehlerhaften Bits an ggf. Korrektur des fehlerhaften Bits Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (24) Weitere Eigenschaften von Hamming-Codes: Die (Komponentenweise gebildete) Summe mod2 zweier Codewörter ist wieder ein Codewort. Damit ist der Code auffaßbar als ein Vektorraum über einem Körper mit 2 Elementen. Dafür gibt es eine mathematische. Theorie (Lineare C.) Die Kugeln mit Radius um Codewörter sind nicht nur disjunkt, sondern enthalten alle möglichen Wörter der Länge n. Jedes Wort der Länge n kann decodiert werden. Ein Code dieser Eigenschaft heißt perfekt. Geht man von x x 2...x n über zu x 2...x n x (zyklischer Shift), so entsteht aus einem Codewort wiederum ein Codewort. Ein Code dieser Eigenschaft heißt zyklisch. Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (25) Polynomialcodes Algorithmus zur Berechnung der Prüfsumme:. r sei der Grad des Polynoms G(x). Füge r Null-Bits zum niederwertigen Ende des Frames (Quellwortes) hinzu, so dass er nun m+r Bits enthält und mit dem Polynom x r M(x) korrespondiert. 2. Dividiere den Polynom x r M(x) durch den Polynom G(x) unter Nutzung der Modulo-2-Division. 3. Subtrahiere den Rest, der immer r oder weniger Bits enthält, vom Polynom x r M(x) unter Nutzung der Modulo-2-Subtraktion. Das Ergebnis ist der Frame mit Prüfsumme, der übertragen wird. Dieser Polynom heißt T(x). Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Polynomialcodes Beispiel: : = Rest Codes (26) Frame (Quellwort): Generator: Nachricht nach dem Anfügen von vier Nullen: G(x)=4 Rest: Übertragener Frame: Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (27) Drei (Generator-)Polynome sind zum internationalen Standard geworden: CRC-2 = x 2 + x + x 3 + x 2 + x + CRC-6 = x 6 + x 5 + x 2 + CRC-CCITT = x 6 + x 2 + x 5 + Eigenschaften der 6-Bit Prüfsumme (z.b. CRC-6 and CRC-CCITT): entdeckt werden: alle Einfach- und Doppelfehler alle Fehler mit einer ungeraden Anzahl von Bits alle Burst-Fehler mit der Länge 6 oder weniger 99.997% der 7-Bit-Burst-Fehler 99.998% der 8-Bit-Fehler und längere Burst-Fehler Vorlesung Rechnerarchitektur und Rechnertechnik SS 24
Codes (28) Huffman - Code: Kodierung von 4 Lebensmittelartikeln mit einem 2 Bit - Binärcode: Der entsprechende Huffman - Code: Element Code Element Prozentsatz der Übertragung Code Kartoffeln Zwiebeln Bohnen Avocado Kartoffeln Zwiebeln Bohnen Avocado 7 4 9 7 Beispiel für die Darstellung des Huffman - Codes als Binärbaum: Kartoffeln Bohnen Start Avocado Zwiebeln Vorlesung Rechnerarchitektur und Rechnertechnik SS 24