e TI II S Sommersemester 2008 Prof. Dr. Mesut Güneş Distributed embedded Systems D 5. Exercise with Solutions Problem 1: Gleitkomma-Darstellung (2+2+2+2+2+2=12) Gehen Sie bei der binären Gleitkommadarstellung von 2-Byte großen Zahlen aus. Der Charakteristik stehen 4 Bit zur Verfügung, der Mantisse 11 und ein Vorzeichenbit. Geben Sie folgende Zahlen in binärer Gleitkomma- und in der normalen dezimalen Festkommadarstellung an, bzw. berechnen Sie den nächsten Nachbarn, falls die Zahl selbst nicht darstellbar ist: a) die kleinste in dieser binären Gleitkommadarstellung darstellbare Zahl. b) die größte in dieser binären Gleitkommadarstellung darstellbare Zahl. c) 11/10 d) 17 + 2−3 e) 77 f) 0, F16 Solution 1 (i) Variante 1 aus dem Skript: 0,M bzw. 0,1Mantisse (implizites 0,1) Bias(Exzess) = 2n−1 ⇒ Charakteristik = Exp + 2n−1 ⇔ Exp = Charakteristik − 2n−1 (ii) Variante 2: 1,M (implizite 1,) Bias = 2n−1 − 1 ⇒ Charakteristik = Exp + 2n−1 − 1 ⇔ Exp = Charakteristik − 2n−1 + 1 Vergleich: Mantisse gleich (i) + (ii), Charakteristik in Variante (i) um 2 höher als ind (ii), weil Bias um eins höher (wird ja zum Exp. addiert um Ch. zu erhalten, und Komma um eins nach rechts gerückt). Aufgabe: Gebe die folgenden Zahlen in binärer Gleitkommadarstellung (VZ: 1B, Ch: 4B, M: 11B) und dezimaler Festkommadarstellung an. (a) kleinste in binärer Gleitkommadarstellung darstellbare Zahl: (i) 3 betragsmäßig: 0/1 0000 00000000000 = ±0, 1000000000002 ∗ 20−2 = 219 ≈ ±0, 001953125 4 3 absolut: 1 1111 11111111111 = −, 1111111111112 ∗ 22 −1−2 = −1111111, 111112 = −(27 − 1 + 1/2 + 1/4 + 1/8 + 1/16 + 1/32) = −127, 96875 (ii) 3 betragsmäßig: 0/1 0000 00000000000 = ±1, 000000000002 ∗ 20−2 +1 = 217 ≈ ±0, 0078125 4 3 absolut: 1 1111 11111111111 = −1, 111111111112 ∗ 22 −1−2 +1 = −111111111, 1112 = −(29 − 1 + 1/2 + 1/4 + 1/8) = −511, 875 (b) (i) größte darstellbare Zahl: 127, 96875 (ii) größte darstellbare Zahl: 511, 875 1 e S Distributed embedded Systems D TI II Sommersemester 2008 Prof. Dr. Mesut Güneş (c) (i) 11 10 = 1, 110 = 1, 000112 = 0, 1000112 ∗ 21 VZ = 0 Exp = 1 ⇒ Charakteristik = 1 + 23 = 910 = 10012 M = 00011001100/1 Gleitkommazahl: 0 1001 00011001100/1 (ii) 11 10 = 1, 110 = 1, 000112 ≈ 1, 000110011002 VZ = 0 Exp = 0 ⇒ Charakteristik = 0 + 23 − 1 = 710 = 01112 M = 0001100110/1 Gleitkommazahl: 0 0111 00011001100/1 (d) (i) 5 17 + 2−3 = 17, 12510 = 10001, 0012 norm. = 0, 100010012 ∗ 2 VZ = 0 Exp = 5 ⇒ Charakteristik5 + 23 = 1310 = 11012 Mantisse = 00010010000 Gleitkommazahl: 0 1101 00010010000 (ii) 4 17 + 2−3 = 17, 12510 = 10001, 0012 norm. = 1, 00010012 ∗ 2 VZ = 0 Exp = 4 ⇒ Charakteristik = 4 + 23 − 1 = 1110 = 10112 M = 00010010000 Gleitkommazahl: 0 1011 00010010000 (e) (i) siehe Maximum bei (i) b) (ii) 19 77 = 823.54310 = 110010010000111101112 norm. = 1.10010010000 ∗ 2 VZ = 0 Exp = 19 ⇒ Charakteristik = 19 + 23 − 1 = 24 = 110002 (nächste darstellbare Charakteristik: 11112 = 1510 ) Gleitkommazahl = siehe Maximum bei (ii) b) (f) (i) 15 0, F16 = 16 = 0.937510 = 0, 11112 (norm.) 10 VZ = 0 Exp = 0 ⇒ Charakteristik = 0 + 23 = 810 = 10002 Mantisse = 11 Gleitkommazahl = 0 1000 11100000000 (ii) 15 −1 0, F16 = 16 = 0.937510 = 0, 11112 norm. = 1, 111 + 2 10 VZ = 0 Exp = -1 ⇒ Charakteristik = −1 + 23 − 1 = 610 = 01102 Mantisse = 111 Gleitkommazahl = 0 0110 11100000000 2 e TI II S Sommersemester 2008 Prof. Dr. Mesut Güneş Distributed embedded Systems D Problem 2: Gleitkomma-Darstellung (2+2+2+2=8) Stellen Sie die Zahlen 1/3 und −1/7 als IEEE single unter Verwendung der a) round-to-even“-Regel ” b) Rundung zum nächsten Gleitkommawert in Richtung 0 c) Rundung zum nächsten Gleitkommawert in Richtung ∞ d) Rundung zum nächsten Gleitkommawert in Richtung −∞ dar. Solution 2 IEEE-P 754 Single (Bitverteilung: 1 VZ, 8 Charakteristik, 23 Mantisse): Tabelle 1: Zusammenfassung des 32-Bit-IEEE-Formats Charakteristik Zahlenwert 0 (−1)VZ 0, Mantisse ∗ 2−126 1 (−1)VZ 1, Mantisse ∗ 2−126 2..28 − 2 = 254 (−1)VZ 1, Mantisse ∗ 2Charakteristik−127 254 (−1)VZ 1, Mantisse ∗ 2−127 255 Mantisse = 0: (−1)VZ ∞ overflow 255 Mantisse 6= 0: NaN (not a number) Bias/Exzess = 28−1 − 1 = 127 (i) 1 3 = 0, 012 = 1, 012 ∗ 2−2 VZ = 0 Exponent = -2 ⇒ Charakteristik = Exponent + Bias = −2+28−1 −1 = 12510 = 011111012 (ii) − 71 = 0, 0012 = 1, 0012 ∗ 2−3 VZ = 1 Exponent = -3 ⇒ Charakteristik = Exponent + Bias = −3+28−1 −1 = 12410 = 011111012 Tabelle 2: Mantissen nach Anwendung verschiedener Rundungsregeln (i) 13 (ii) − 71 VZ + Charakteristik 0 01111101 1 01111100 a) round-to-even (01)11 0 (001)7 00 3 b) → 0 (01)11 0 (001)7 00 c) → ∞ (01)11 1 (001)7 00 d) → −∞ (01)11 0 (001)7 01 e D S Distributed embedded Systems TI II Sommersemester 2008 Prof. Dr. Mesut Güneş Problem 3: Halbaddierer und Volladdierer (3+3+4=10) Ein NOR-Gatter ist ein Schaltnetz mit zwei Eingängen und einem Ausgang. Am Ausgang liegt genau dann eine 1 vor, wenn an keinem Eingang eine 1 anliegt. a) Entwerfen Sie eine Schaltung für einen Halbaddierer (Resultat und Übertrag), der ausschließlich aus NOR-Gattern mit 2 Eingängen besteht (Herleitung!). Verwenden Sie nicht mehr als 5 NOR-Gatter. b) Wie sieht der aus NOR-Gattern bestehende Volladdierer aus (für die Halbaddierer jeweils ein Symbol verwenden)? c) Wir nehmen nun an, daß ein NOR-Gatter eine Schaltzeit von 20 psec hat. Wann liegt bei Ihrem Halbaddierer das Resultat vor? Wann der Übertrag? Wie sehen die Zeiten für Ihren Volladdierer aus? Solution 3 (a) Halbaddierer aus nicht mehr als 5 Nor-Gattern x 0 Ausgaben des Halbaddierers: 0 1 1 y 0 1 0 1 s 0 1 1 0 c 0 0 0 1 x Verwende De Morgan’sche Regel und die Darstellung der Negation: 0 1 Summe s und Übertrag c umgeschrieben: c = xy ≡ ¬¬(xy) ≡ ¬(¬x ∨ ¬y) ≡ ¬(¬(x ∨ x) ∨ ¬(y ∨ y)) s = ¬xy ∨ x¬y ≡ ¬¬(¬xy ∨ x¬y) ≡ ¬((x ∨ ¬y)(¬x ∨ y)) ≡ ¬(xy ∨ ¬x¬y) ≡ ¬(c ∨ ¬(x ∨ y)) (b) Volladdierer aus NOR-Gattern Ausgaben: 4 ¬x = NOR(x,x) 1 0 e TI II S Sommersemester 2008 Prof. Dr. Mesut Güneş Distributed embedded Systems D Abbildung 1: Halbaddierer x 0 0 0 0 1 1 1 1 y 0 0 1 1 0 0 1 1 cin 0 1 0 1 0 1 0 1 s 0 1 1 0 1 0 0 1 cout 0 0 0 1 0 1 1 1 Ausgangsgleichungen s = x 6↔ y 6↔ cin cout = xcin ∨ yin ∨ xy Entweder langwieriges Umformen wie in a) oder Schaltung dem Skript entnehmen und das OR-Gatter durch NOR(NOR(x,y),NOR(x,y)) ersetzen: Abbildung 2: Volladdierer (c) Es habe ein NOR-Gatter eine Schaltzeit von 20 psek, dann ist für jede Ausgabe (Summe oder Übertrag) der längste Weg bzgl. der Anzahl der Gatter zu finden. Dieser gibt die Schaltzeit bis zur endgültigen Ausgabe an: HA: Übertrag: 40 psek, Summe: 60 psek 5 e TI II S Sommersemester 2008 Prof. Dr. Mesut Güneş Distributed embedded Systems D VA: Übertrag: (Übertrag(HA) + Summe(HA) + 2 x Schaltzeit NOR-Gatter) psek = 140 psek, Summe: 2*Summe(HA) = 120 psek Problem 4: Assembler (6) Schreiben Sie ein MMIX-Assemblerprogramm, das die folgende Aufgabenstellung löst: Das Programm soll den ganzzahligen Anteil x der Quadratwurzel einer gegebenen ganzen Zahl z berechnen, d.h. gesucht wir x mit x = max{x ∈ Z | x2 6 z}, bzw. √ result = value . Verwenden Sie dabei die sich aus der Newton-Methode ergebene Intervallschachtelung: a := value b := 0 while |a − b| > 1 a := (a + b)/2 b := value/a end while result := min{a, b} Solution 4 MMIX-Assemblerprogramm, dass ganzzahligen Anteil der Quadratwurzel einer ganzen Zahl berechnet nach der Newtonschen Intervallschachtelung: Listing 1: sqrt.mms 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 a b value cmp result IS $40 IS $41 IS $42 IS $10 IS $43 LOC #100 Main SET value ,30 SET a , value // a := value SET b ,0 // b := 0 while SUB cmp ,a , b // while |a - b | > 1 , ganzzahliger Rest /= 0 BZ SUB BZ ADD BZ cmp , end_while cmp , cmp ,1 cmp , end_while cmp , cmp ,2 cmp , end_while // Differenz = 0 = > Abbruch // 0 < Differenz < 1 = > Abbruch ADD DIV DIV JMP a ,a , b a ,a ,2 b , value , a while // -1 < Differenz < 0 // a := ( a + b )/2 // b := value / a 6 e Sommersemester 2008 Prof. Dr. Mesut Güneş Distributed embedded Systems D 27 28 29 30 31 32 33 TI II S end_while CMP cmp ,a , b BN cmp , a_is_min b_is_min SET result , b JMP end a_is_min SET result , a end // result := min {a , b } TRAP 0 , Halt ,0 Listing 2: Assemblieren und Abfrage des Ergebnis-Registers result ($43) 1 2 3 4 5 6 7 8 $ mmixal sqrt . mms $ mmix -I sqrt . mmo mmix > $43 $43 = l [43]=5 mmix > 43 instructions , 0 mems , 405 oops ; 11 good guesses , 2 bad ( halted at location #00 00 00 00 00 00 01 48 ) marie - hoffmanns - computer :~/ Studium / Tutorien / TI2_SS08 / Uebung / U5 Burbuliuk$ 7