Musterlösung 5 - auf Matthias

Werbung
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
Herunterladen