Grundlagen der Rechnerarchitektur
Binäre Logik und Arithmetik
Binäre Logik und Arithmetik
Übersicht
• Logische Operationen
• Addition Subtraktion und negative Zahlen Addition, Subtraktion und negative Zahlen
• Logische Bausteine
• Darstellung von Algorithmen
• Multiplikation
• Multiplikation
• Division
• Gleitkommazahlen
• Gleitkommaarithmetik
• Gleitkommaarithmetik
Logische Operationen
AND, OR und XOR
A B AND 0 0
A B OR 0 0
A B XOR 0 0
0 0 0 1
0 0 0 1
0 0 0 1 1 0
1 1
1 0 1 1
1 0 1 1
Notationen: Notationen: Notation:
Beispiele:
1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 AND 0 1 1 1 1 OR 1 1 1 0 1 XOR 1 0 1 0 1 --- --- ---
NOT, NAND und NOR
A NOT 0
A B NAND 0 0
A B NOR 0 0
0 1
0 0 0 1
0 0 0 1
N i 1 0
1 1
1 0 1 1 Notationen:
Beispiele:
1 1 0 0 1 1 1 0 0 1 NOT 1 1 0 0 1 NAND 1 1 1 0 1 NOR 1 0 1 0 1 --- --- ---
Logischer Links‐ und Rechts‐Shift
Logischer Links‐Shift „b << x“:
Verschiebe Bits in b nach links, um den angegebenen Wert x.
Di l St ll d it 0 f füllt
Die neuen leeren Stellen werden mit 0 aufgefüllt.
Logischer Rechts‐Shift „b >> x“:
Verschiebe Bits nach rechts, um den angegeben Wert x.
Verschiebe Bits nach rechts, um den angegeben Wert x.
Die neuen leeren Stellen werden mit 0 aufgefüllt.
Links‐ und Rechts‐Shift am Beispiel von 8‐Bit‐Zahlen:
0 1 0 0 1 1 1 1 << 1
0 1 0 0 1 1 1 1 << 1 = 0 0 1 1 1 1 0 0 << 2 = 0 1 0 0 1 1 1 1 >> 1 = 1 1 1 1 0 0 0 0 >> 2 = 1 1 1 1 0 0 0 0 >> 2 =
Was bedeutet Shift um i?
Links‐Shift:
Rechts‐Shift:
Links‐ und Rechts‐Rotation
Links‐Rotation von b um x Stellen:
Verschiebe Bits in b nach links, um den angegebenen Wert x.
Di l St ll d it d h h b f füllt
Die leeren Stellen werden mit den herausgeschobenen aufgefüllt.
Rechts‐Rotation von b um x Stellen:
Verschiebe Bits nach rechts, um den angegeben Wert x.
Verschiebe Bits nach rechts, um den angegeben Wert x.
Die leeren Stellen werden mit den herausgeschobenen aufgefüllt.
Links‐ und Rechts‐Rotation am Beispiel von 8‐Bit‐Zahlen:
Li k R t ti 2 St ll Links‐Rotation um 2 Stellen:
0 1 0 0 1 1 1 1 -->
Rechts‐Rotation um 2 Stellen:
1 1 1 1 0 0 0 1 -->
Addition, Subtraktion und negative Zahlen
Addition und Subtraktion von binären Zahlen
Beispiel C = A + B:
(Carry)
1 1 1 0 1 0 (A)
1 1 1 0 1 0 (A) + 1 0 1 0 1 1 (B) ---
= (C)
Beispiel C = A – B:
1 1 1 0 1 0 (A) - 1 0 1 0 1 1 (B)
(Carry) ---
= (C)
= (C)
Darstellung von negativen binären Zahlen
Beobachtung für eine beliebige Binärzahl B, z.B. B=110010:
B B
+ NOT(B)
---
= B + NOT(B) 1
+ (Carry)
---
Also gilt:
Also gilt:
Quiz
Zweierkomplement‐Binärzahl B=...1111011 als Dezimalzahl?
Was ist die Dezimalzahl –7 als Binärzahl B in Zweierkomplement?
Subtraktion von binären Zahlen nochmal
Beispiel C = A – B:
1 1 1 0 1 0 (A)
- 1 0 1 0 1 1 (B)
- 1 0 1 0 1 1 (B) Bestimme Zweierkomplement zu B, also –B:p ,
Also ist C:
(Carry) (Carry) 1 1 1 0 1 0 (A)
+ ... 1 1 0 1 0 1 0 1 (-B) ---
= (C)
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:
Beispiel vorzeichenbehaftete 8‐Bit‐Binärzahlen:
0 0 0 0 0 0 0 0 = 0 1 0 0 0 0 0 0 0 = -128 0 0 0 0 0 0 0 1 = 1 1 0 0 0 0 0 0 1 = -127 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 127 0 0 0 0 0 0 1 0 = 2 1 0 0 0 0 0 1 0 = -126
. .
. .
. .
0 1 1 1 1 1 0 1 = 125 1 1 1 1 1 1 0 1 = -3 0 1 1 1 1 1 1 0 = 126 1 1 1 1 1 1 1 0 = -2 0 1 1 1 1 1 1 1 = 127 1 1 1 1 1 1 1 1 = -1
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:
Beispiel nicht‐vorzeichenbehaftete 8‐Bit‐Binärzahlen:
0 0 0 0 0 0 0 0 = 0 1 0 0 0 0 0 0 0 = 128 0 0 0 0 0 0 0 1 = 1 1 0 0 0 0 0 0 1 = 129 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 129 0 0 0 0 0 0 1 0 = 2 1 0 0 0 0 0 1 0 = 130
. .
. .
. .
0 1 1 1 1 1 0 1 = 125 1 1 1 1 1 1 0 1 = 253 0 1 1 1 1 1 1 0 = 126 1 1 1 1 1 1 1 0 = 254 0 1 1 1 1 1 1 1 = 127 1 1 1 1 1 1 1 1 = 255
Signed‐N‐Bit Binär in Dezimal umrechnen
l hl
Beispiel 8‐Bit‐Binärzahl B:
1 1 1 1 1 1 0 1 binär ist dezimal:
1 1 1 1 1 1 0 1 binär ist dezimal:
Beobachtung für folgende 8‐Bit‐Zahl C (g g (Erinnerung: 10000000 binär ist –128g ):) 1 0 0 0 0 1 0 1
Also für signed n‐Bit‐Binärzahl b = bn‐1 bn‐2 ... b0 gilt:
Sign‐Extension
Gegeben 6 und –3 in 16‐Bit‐Darstellung.
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1
Wie sieht die 32‐Bit‐Binärdarstellung aus?
6 in 16‐Bit‐Binärdarstellung –3 in 16‐Bit‐Binärdarstellung Wie sieht die 32 Bit Binärdarstellung aus?
6 in 32‐Bit‐Binärdarstellung?
6 in 32‐Bit‐Binärdarstellung?
3 i 32 Bit Bi ä d t ll ? –3 in 32‐Bit‐Binärdarstellung?
Erinnerung: n Bit Darstellung ist ein Fenster auf die ersten n Stellen der Binär Zahl Erinnerung: n‐Bit‐Darstellung ist ein Fenster auf die ersten n Stellen der Binär‐Zahl
…0000000000000000000000000000000000000000000000000110 = 6 1111111111111111111111111111111111111111111111111101 = 3
…1111111111111111111111111111111111111111111111111101 = -3
Arithmetischer Rechts‐Shift
Arithmetischer Rechts‐Shift von b um x Stellen:
Verschiebe Bits nach rechts, um den angegeben Wert x.
Di l St ll d it d Si Bit f füllt
Die neuen leeren Stellen werden mit dem Sign‐Bit aufgefüllt.
Arithmetischer Rechts‐Shift am Beispiel von 8‐Bit‐Zahlen:
A ith ti h R ht Shift 2 St ll 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 -->
Overflow
Einschränkung auf n‐Bit kann einen Overflow bei Addition erzeugen:
(C )
(Carry) (A)
+ (B)
0 1 0 1 1 0 1 0 0 1 1 0 0 1 1 1
+ (B) ---
= (C) 0 1 1 0 0 1 1 1
Addition von negativer und nicht‐negativer Zahl. Overflow möglich?
O fl f d t d i d t ilt
Overflow erfordert, dass mindestens gilt:
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
≥ 0
A+B < 0 < 0 ≥ 0
A–B ≥ 0 < 0 < 0
A B < 0 ≥ 0 ≥ 0
A–B < 0 ≥ 0 ≥ 0
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 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 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 Wertg p
Logische Bausteine
Logische Bausteine
K bi t i h S h lt
Kombinatorische Schaltungen
Gatter
Funktion Eingabe Symbol Ausgabe Verallgemeinerung auf n Eingänge
AND A AND B
B
A A1
A2 A1 AND A2 ... AND An Und‐Gatter
Und‐Gatter mit n Eingängen An
OR
Oder‐Gatter
Und Gatter mit n Eingängen A
B
A OR B
A1 Oder Gatter
NOT A
A1 A2
A1 OR A2 ... OR An NOT
Inverter
A NOT A
An
Oder‐Gatter mit n Eingängeng g
Kombinatorische Schaltungen
Jede boolesche Funktion (gegeben als logischer Ausdruck) wie z.B.
f( ) ( ( ) )
f(A,B) = NOT( NOT(A) OR B)
Lässt sich als kombinatorische Schaltung realisieren Das Beispiel:
Lässt sich als kombinatorische Schaltung realisieren. Das Beispiel:
Inverter werden häufig abgekürzt dargestellt. Das Beispiel:
Wahrheitstabellen
Jede boolesche Funktion lässt mit einer Wahrheitstabelle darstellen.
l f( ) ( ) l h h b ll
Beispiel: f(A,B,C) = A AND NOT(B OR C) als Wahrheitstabelle
A B C B OR C NOT(B OR C) f(A,B,C)=A AND NOT(B OR C) 0 0 0
0 0 1 0 1 0 0 1 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1
Wahrheitstabellen
Jede Wahrheitstabelle kann man mit einem logischen Ausdruck darstellen. Beispiel:
A B C f(A,B,C)
0 0 0 1
0 0 0 1
0 0 1 1
0 1 0 0
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 1
Ziel ist aber nicht irgend einen Ausdruck zu finden, sondern einen möglichst kleinen (also eine
möglichst kleine kombinatorische Schaltung).
möglichst kleine kombinatorische Schaltung).
Mehr dazu in der Vorlesung Digitaltechnik.
Wahrheitstabellen
Bei der Suche nach möglichst kleinen kombinatorischen Schaltungen können auch sogenannte Don‘t ‐Care‐Terme recht hilfreich sein.
A B C f(A,B,C)
0 0 0 1
0 0 0 1
0 0 1 1
0 1 0 0
0 1 0 0
0 1 1 X
Don‘t‐Care Terme: In der kombinatorischen
1 0 0 1
1 0 1 X
Schaltung, die diese Funktion implementiert, ist es egal welche Ausgabe die Schaltung für die Eingaben 011, 101 und 110 produziert.
1 1 0 X
1 1 1 1
Wahrheitstabellen
In einer Wahrheitstabelle kann für die Eingaben auch mehrere Ausgabe‐Bits festgelegt werden. Beispiel:
Eingabe Bit 0
Eingabe Bit 1
Eingabe Bit 2
Ausgabe Bit 0
Ausgabe Bit 1
0 0 0 1 1
0 0 1 1 1
0 0 1 1 1
0 1 0 0 1
0 1 1 0 1
0 1 1 0 1
1 0 0 1 0
1 0 1 1 1
1 0 1 1 1
1 1 0 1 0
1 1 1 1 0
Beispiel: Addition zweier Bits mit Übertrag
A B s(A,B)=A+B c(A,B)=Carry
Wahrheitstabelle Boolesche Ausdrücke 0 0
0 1 1 0 1 1 1 1
Kombinatorische Schaltung
Ist das eine gute Schaltung?
Wie sieht n‐Bit‐Addition aus?
Mehr dazu in der Vorlesung Mehr dazu in der Vorlesung Digitaltechnik.
Hier nehmen wir logische
B l l Bl kb i
Bauelemente als Blackbox mit Eingängen und Ausgängen an. Die Funktion des Bausteins wird nur textuell beschrieben.
Logische Bausteine
S ti ll S h lt
Sequentielle Schaltungen
Sequentielle Schaltungen
n Eingänge m Ausgänge n Eingänge m Ausgänge
…
n Eingänge m Ausgänge
Zustand …
n Eingänge m Ausgänge
…… Zustand ……
Ausgänge hängen nur von den Eingängen ab Wie schon
Ausgänge hängen von den Eingängen und dem aktuellen Eingängen ab. Wie schon
gezeigt, ist dies durch eine Wahrheitstabelle beschreibbar.
Eingängen und dem aktuellen Zustand des Bausteins ab. Wie kann man dieses Verhalten beschreiben?
Kombinatorische Schaltungen Sequentielle Schaltungen
beschreiben?
Kombinatorische Schaltungen Sequentielle Schaltungen
Zustandsautomat
Ei B i i l
Eingabe 00 / Ausgabe 11 Eingabe 10 / Ausgabe 01 Eingabe 01 / Ausgabe 00
Ein Beispiel:
Eingabe 10 / Ausgabe 01 Eingabe 11 / Ausgabe 10
Zustand 00
Zustand 01
gabe 2‐BitZustand 01
Eingabe 11 / Ausgabe 00
‐Bit Eing t Ausgag / g
2‐ be
Zustand 10
Speichern von Zuständen
R S l Q Q
Speichern eines Bits am Beispiel R‐S‐Latch (S=Set, R=Reset)
R S altes Q neues Q
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
Beobachtung: das Speichern von Zustand erfordert Rückkopplungen (d.h. Ausgang ist wieder Eingang) in der Schaltung.
Speichern von Zuständen
Erweiterung eines R‐S‐Latch zu einem D‐Latch (D=Data, C=Clock)
C D l Q Q
C D altes Q neues Q
0 0 0
R
0 0 1
0 1 0
0 1 1
1 0 0
S
1 0 1
1 1 0
R S altes Q neues Q
0 0 0 0
1 1 1
Weitere Details zu Latches und Flip‐Flops“
0 0 1 1
0 1 0 1
0 1 1 1 Weitere Details zu Latches und „Flip Flops
0 1 1 1
Beispiel
Wir wollen das Ergebnis einer kombinatorischen Schaltung in einem Wir wollen das Ergebnis einer kombinatorischen Schaltung in einem D‐Latch speichern. Q soll wohldefiniert entweder den Inhalt vor
oder nach der „Berechnung“ speichern.
Kombinatorische Schaltung
oder nach der „Berechnung speichern.
Q Ergebnis
ist ein Bit
n Bit D‐Latch
Q C (Clock)
ist ein Bit
Eingang
…
…D (Daten) NOT(Q)
Zeit
P bl W li t d E b i Bit t bil D ? Problem: Wann liegt das Ergebnis‐Bit stabil an D an?
Lösung: Taktung
Wir wollen das Ergebnis einer kombinatorischen Schaltung in einem Wir wollen das Ergebnis einer kombinatorischen Schaltung in einem D‐Latch speichern. Q soll wohldefiniert entweder den Inhalt vor
oder nach der „Berechnung“ speichern.
Kombinatorische Schaltung
oder nach der „Berechnung speichern.
Q Ergebnis
ist ein Bit
n Bit D‐Latch
Q C (Clock)
ist ein Bit
Eingang
…
…D (Daten) NOT(Q)
Letztes Zeit Clock‐Signal
Nächstes Clock‐Signal
Clock Signal g
Takt‐Zyklus
Logische Bausteine
Bl k h ltdi
Blockschaltdiagramme
Bausteine als Black‐Box
Wir haben jetzt einige Basisbausteine kennen gelernt.
In dieser Vorlesung sind wir mit Blockschaltbildern in der Regel eine Abstraktionsebene höher.
Die betrachteten Bausteine sind „Kästen“ mit Eingangsleitungen und
Ausgangsleitungen. Die Leitungen können entweder Daten (Datenleitungen) oder Steuersignale (Steuerleitungen) transportieren
Steuersignale (Steuerleitungen) transportieren.
Wie die Bausteine der Blockschaltbilder intern mit Grundbausteinen aufgebaut sind und wie die Taktung der einzelnen Bausteine genau abläuft betrachten wir in dieser
V l i ht it M h d k i d V l Di it lt h ik l
Vorlesung nicht weiter. Mehr dazu kann man in der Vorlesung Digitaltechnik lernen.
Eingangsleitungen
B k I Bl k h ltbild
Baustein Bemerkung: In Blockschaltbildern
wird das für sequentielle Bausteine erforderliche Clock‐Signal häufig der
Übersicht halber weg gelassen Ausgangsleitungen
Übersicht halber weg gelassen.
Beispiel eines abstrakten Bausteins
Verschaltung von Bausteinen
Bus (lassen häufig die
Verbinden von Bauelementen Datenflussrichtung
Eingabe Ausgabe i
n Bits Einzelne Leitung
Markierung n‐Bits weg) eines
logischen Bausteins eines
logischen Bausteins g
K d V bi d B i i l
Kreuzungen und Verbindungen Beispiel
Verbindungen
Baustein A
Baustein C Leitungen kreuzen
sich, sind aber nicht verbunden
g außerhalb der
Leitungsendpunkte
sind durch einen Baustein B Punkt gekennzeichnet.
Arithmetische, logische Einheit (ALU)
ALU Operation (k) Angabe in Klammern ist die Anzahl Bits
Beispiel‐Funktionen
A (n)
ist die Anzahl Bits.
AND OR Zero (1)
( ) OR
NOT ALU Result (n)
Overflow (1)
Addition Subtraktion B (n)
Subtraktion Vergleich
Ggf. ist die ALU auf eine Operation festgelegt. Dann
CarryOut (1)
festgelegt. Dann Entfällt der Eingang und ALU wird mit
dem Namen der Kombinatorisch?
Sequentiell?
Operation ersetzt. Sequentiell?
Register und Shift‐Register
Eingang (n)
Reset (1) Speichert n Bits
Shift (1) Load (1)
( )
Ausgang (n)
Kombinatorisch?
Sequentiell?
Sequentiell?
Control
Eingänge sind
Control
Ausgänge sind Steuerleitungen in andere Bausteine Eingänge sind
Datenleitungen aus anderen Bausteinen
Control
Ein Baustein der das Zusammenarbeiten von anderen Bausteinen koordiniert Ein Baustein der das Zusammenarbeiten von anderen Bausteinen koordiniert.
In Abhängigkeit der Eingänge werden die passenden Steuerleitungen geschaltet.
Kombinatorisch?
Sequentiell?
Sequentiell?
Control Beispiel
4 Bit Register R1
Store R1 4 Bit Register R2 Store R2
Control wird als kombinatorische Schaltung realisiert.
Hierzu die Wahrheitstabelle:
4‐Bit‐Register R1 4‐Bit‐Register R2
R2 Bit R2
Bit 0
Zero Store R1
Store R2
Eingabe Ausgabe
t 0
Zero
SUB 0 0
0 1
Control
1 0
1 1
Control soll folgenden Algorithmus implementieren:
Anhand der Wahrheitstabelle wird dann die Schaltung gebaut.
g g p
wenn R2 gerade und R1-R2=0, dann R1 = 0
wenn R2 ungerade und R1-R2!=0, dann
Rückgekoppelte Register haben immer einen wohldefinierten Zustand, da Register nur zum R2 = R1-R2
sonst
Zustand, da Register nur zum Clock‐Signal aktualisiert werden.
Darstellung von Algorithmen
Pseudo‐Code‐Darstellungen
Elementaranweisungen
Variablenzuweisungen, z.B.:
x = 42
Arithmetik, z.B.:
y = 10
x = (42 + y) * 20
Das Symbol „=“ beinhaltet implizit eine zeitliche Abfolge, damit ist z.B. sinnvoll:
1 x = x + 1
Abkürzende Schreibweise für voriges Konstrukt: x++
Allgemein: als Elementaranweisung betrachten wir jede
Anweisung, die auf der betrachteten Abstraktionsebene nicht weiter sinnvoll in eine Folge von einfacheren Anweisungen
weiter sinnvoll in eine Folge von einfacheren Anweisungen unterteilbar ist.
Felder
Felder für den Zugriff auf den Speicher, z.B.: A[]
Zugriff auf ite Speicherstelle: A[i]
B i i l Beispiel:
0x0f00 : 14 A[0]
0x0f00 : 14 A[0]
0x0f01 : 15 A[1]
0x0f02 : 42 A[2]
0x0f03 : 43 A[3]
...
...
0x0f0f : 255 A[15]
Sequenz von Elementaranweisungen
Jedes Programm beginnt an einer Stelle und terminiert
(hoffentlich) irgendwann. Start
( ) g
Im Flussdiagramm ist Beginn und Ende des Programms mit den ovalen Symbolen dargestellt
Setze i auf i+1
mit den ovalen Symbolen dargestellt.
Im Beispiel also „Start“ und „Ende“.
Setze j auf 2*i usw.
Das einfachste Programm arbeitet einfach eine Sequenz von elementaren Anweisungen ab.
Im Flussdiagramm wird so eine Sequenz durch ein Rechteck dargestellt.
Die Abarbeitungsrichtung des Programms wird durch
die Pfeile gekennzeichnet.g Ende
If‐then‐else
if‐then‐else am Beispiel:
if(i<10) then
<Code-Block 1> i<10?Ist nein else
<Code-Block 2>
i<10?
ja
Code‐Block 1 Code‐Block 2
Switch‐Statement
Switch‐Statement am
Beispiel: ja
Beispiel:
switch(i)
i=1? ja Code‐Block 1
case 1: nein
<Code-Block 1>
2
nein
case 2: ja
<Code-Block 2>
Code‐Block 2
i=2? ja
... nein
defaut:
<Code-Block n>
nein
...
Code‐Block n
For‐Schleife
For‐Schleife am Beispiel:
for(i=0; i<10; i++) { Start for(i 0; i<10; i++) {
<das innere der Schleife>
} Setze i auf 0
Bedeutet:
• Initialisiere i mit 0 i<10?Ist
nein
• Führe das innere der Schleife aus
• Erhöhe i um eins
Wi d h l i h i 10
ja
• Wiederhole wenn immer noch i<10
Innere der Schleife
Ende Erhöhe i um 1
While‐Schleife
While‐Schleife an Beispiel: Start i=0
while(i<10) {
Setze i auf 0
<das innere
der Schleife>
i
Ist i<10?
nein
i++
}
Bedeutet:
ja
Bedeutet:
• Initialisiere i mit 0
• Führe das innere der Schleife aus
Innere der Schleife
• Erhöhe i um eins
• Wiederhole wenn immer noch i<10 Erhöhe i um 1 Ende
Beispiel
Gegeben seien die ganzzahligen Variablen n und m.
Bestimme größtes k welches nk < m erfüllt:
Multiplikation
Multiplikation nach der Schulmethode
Gegeben seien die Binärzahlen A und B. Was ist a * b? Beispiel:
Multiplikand A: 1 1 0 1 0 Multiplikator B: * 1 1 0 1 ---
Produkt:
Maximale Länge des Ergebnisses
Beobachtung: Multiplikand der Länge n Bits und Multiplikator der Länge m Bits ergibt Produkt einer Länge mit maximal n+m Bits.
Das Verfahren als Algorithmus
Beispiel 1001*0101:
1 0 0 1
Start Teste erstes
0
1 1 0 0 1
* 0 1 0 1 ---
Multiplikator
‐Bit Addiere Multiplikand
0 1
1 0 0 1 + 0 0 0 0
Shifte Multiplikand ein p
zum Produkt
--- 1 0 0 1 + 1 0 0 1
Shifte Multiplikand ein Bit nach Links
Shifte Multiplikator
+ 1 0 0 1
--- 1 0 1 1 0 1
p
ein Bit nach Rechts 5ter
i 0 0
+ 0 0 0 0
---
Durch‐
lauf?
ja
nein
Beispiel für
0 1 0 1 1 0 1
p ja
4‐Bit‐Zahlen
Das Verfahren in Hardware
Links‐Shift D t ti it
8‐Bit Multiplikand
Links Shift Demonstration mit
1001 * 0110 = 110110
2.Links‐Shift
R ht Shift
4‐Bit Multiplikator
Rechts‐Shift
8‐Bit ALU
3.Rechts‐Shift
8‐Bit Produkt Control
1. Produkt = Produkt + Multiplikand, wenn Bit 0 des Multiplikators = 1
Control Test
4 A hl D h 4. Anzahl Durch‐
läufe = 5Ende
Beschleunigung des Verfahrens
Beobachtung: Jeder Teilschritt verbrauche einen Taktzyklus. Wie viele Taktzyklen c dauert die Multiplikation von zwei n‐Bit‐Zahlen?
Start Start
Teste 0
1
Verbesserung: Parallele Operationen.
Initiales Produktregister:
Shif Li k Addiere
000...000|Multiplikator
Shifte Links Shifte Rechts
Fertig? nein
M ltiplikation mit n Z klen fertig ja Multiplikation mit n Zyklen fertig.
Vorzeichenbehaftete Multiplikation
• Möglichkeit 1:
‐ Betrachte Multiplikand x und Multiplikator y.
‐ Sei x‘ = x wenn x nicht‐negativ bzw. x‘ = ‐x sonst.
‐ Sei y‘ = y wenn y nicht‐negativ bzw. y‘ = ‐y sonst.
Berechne z‘ = x‘ * y‘
‐ Berechne z = x y .
‐ Ergebnis z = z‘ wenn x und y nicht‐negativ oder x und y negativ, ansonsten ist z = ‐z‘.
• Möglichkeit 2:g
Tausche im Verfahren der vorigen Folie das Produkt‐
register mit einem vor‐
zeichenbehafteten Rechts‐
Shift Register aus Shift‐Register aus.
Weitere Beschleunigungen
Beobachtung:
1 0 1 1 (Y)
* 1 1 1 0 (X) Eine ALU für jede Summation
x0·y0 x0·y3y2y1
x1·y x2·y
x3·y
* 1 1 1 0 (X) ---
0 0 0 0
4‐Bit‐ALU 0 0 0 0
+ 1 0 1 1 --- 4 Bit ALU
c s3 s2 s1 s0
= 1 0 1 1 + 1 0 1 1 4‐Bit‐ALU
c s3 s2 s1 s0
---
= 1 0 0 0 0 + 1 0 1 1 + 1 0 1 1
---
=1 0 0 1 1 0 1 0 (Z) 4‐Bit‐ALU
c s3 s2 s1 s0
z z z z z z z z
Weitere Beschleunigungen
P ll l O i i d ALU i i Bi ä b
Parallele Organisation der ALUs in einen Binärbaum (keine weiteren Details hier)
Jede ALU‐Operation verbrauche einen Taktzyklus Wie viele Jede ALU‐Operation verbrauche einen Taktzyklus. Wie viele Taktzyklen dauert die Multiplikation von 32‐Bit‐Zahlen?
Division
Division nach der Schulmethode
Gegeben seien die Binärzahlen A und B. Was ist a : b? Beispiel:
Dividend Divisor Quotient Dividend Divisor Quotient 1 0 0 1 0 1 0 : 1 0 0 0 =
Rest:
Das Verfahren als Algorithmus
Start l
Beispiel 1001 : 10:
Dvdt :Dvsr= Qtnt 001001 : 10 = 00100 Start
Subtrahiere Divisor vom Rest
-000000 100000 ---
01001 Teste
Rest
<0
≥0 01001
-00000 10000 ---
1001 Rest
Shifte Quotient nach Links und setze
Restauriere den alten Rest. Shifte Quotient
nach Links und setze 1001
-1000 1000 ----
001 Shift Di i i Bit
dessen LSB=1. nach Links und setze dessen LSB=0.
001
-000 100 ---
Shifte Divisor ein Bit nach Rechts
6t 01
-00 10 --
6ter Durch‐
lauf?
j
nein
Beispiel für
1 Rest p ja
4‐Bit‐Zahlen
Das Verfahren in Hardware
Rechts‐Shift D t ti it
8‐Bit Divisor
Rechts Shift Demonstration mit
1001 : 0010 = 100 Rest 1
3. Rechts‐Shift
Links‐Shift
4‐Bit Quotient 8‐Bit ALU 2. Links‐Shift; LSB=Rest wurde verändert
4. Anzahl Durch‐
8‐Bit Rest Control
1. Rest=Rest‐Divisor, wenn Divisor < Rest
läufe = 6Ende
Control Test
Beschleunigung des Verfahrens
l
• Analog zur Multiplikation
– Einsparung vonEinsparung von Rest |Quotient
Taktzyklen durch
parallele Operationen R d i t i b i d
|
– Reduziert wie bei der Multiplikation die
ALU‐Größe und A hl R i
Anzahl Register
• Kann man analog zur
Skizze (ohne Details)
• Kann man analog zur Multiplikation durch viele parallel p
arbeitende ALUs die Geschwindigkeit
weiter steigern?
weiter steigern?
Vorzeichenbehaftete Division
• Umgang mit dem Quotienten (analog wie für Multiplikation):
‐ Betrachte Divisor x und Dividend y (also: Quotient z von y:x).
S i ‘ i ht ti b ‘ t
‐ Sei x‘ = x wenn x nicht‐negativ bzw. x‘ = ‐x sonst.
‐ Sei y‘ = y wenn y nicht‐negativ bzw. y‘ = ‐y sonst.
‐ Berechne Quotient z‘ von y‘ : x‘Berechne Quotient z von y : x .
‐ Ergebnis z = z‘ wenn x und y nicht‐negativ oder x und y negativ, ansonsten ist z = ‐z‘.
• Und was ist das Vorzeichen des Rests? Beispiel:
Dividend : Divisor QuotientQ Rest Quotient * Divisor + Rest = DividendQ
7 : 2 3 1 3 * 2 + 1 = 7
-7 : 2 -3 -1 -3 * 2 – 1 = -7
7 : -2 -3 1 -3 * -2 + 1 = 7
-7 : -2 3 -1 3 * -2 – 1 = -7
•Also: Vorzeichen des Rests ist Vorzeichen des Dividend.
Gleitkommazahlen
Reelle Gleitkommazahlen
Kleine Zahl Große Zahl Beispielp
Wissenschaftliche D t ll
Darstellung
(eine Ziffer rechts des Kommas)
des Kommas) Normalisierte Darstellungarstellung
(keine führende Null)
Binäre Gleitkommazahlen
Was ist der Dezimalwert der binären Gleitkommazahl 101,1001?
Was bedeutet 11,011 · 22?
Also: mit 2i multiplizieren verschiebt das Komma um i Stellen nach rechts Also: mit 2i multiplizieren verschiebt das Komma um i Stellen nach rechts.
Binäre Gleitkommazahlen
Was ist die wissenschaftliche, normalisierte Darstellung der binären Gleitkommazahl zur dezimalen Gleitkommazahl 0,625?
Betrachte die recht harmlose Dezimalzahl 0 8
Nebenbemerkung
Betrachte die recht harmlose Dezimalzahl 0,8.
Für die folgende unendliche Reihe rechnet man leicht nach:
Für die folgende unendliche Reihe rechnet man leicht nach:
(2‐1 + 2‐2) + (2‐5 + 2‐6) + (2‐9 + 2‐10) + (2‐13 + 2‐14) + ... = 4/5 = 0.8 Folglich ist die Binärdarstellung von 0.8 unendlich lang, nämlich:
0 , 1100 1100 1100 1100 1100 1100 1100 ...
Annahme wir speichern nur die ersten 32 Bits. Rechnet man in den Dezimalwert x zurück, dann ergibt sich:e a e t u üc , da e g bt s c
x = (2‐1 + 2‐2) + (2‐5 + 2‐6) + (2‐9 + 2‐10) + ... + (2‐29 + 2‐30)
= 858.993.459 / 1.073.741.824 = 0,79999999981373548508 ≠ 0,8 Oha, 0,8 ist scheinbar doch nicht so harmlos. Es gibt folglich Zahlen mit endlicher dezimaler Gleitkommadarstellung die binär nicht mit mit endlicher dezimaler Gleitkommadarstellung, die binär nicht mit
N‐Bit Darstellung von Gleitkommazahlen
Normalisierte, wissenschaftliche Darstellung zur Basis 2. Beispiel:
Allgemein:
Allgemein:
Sign‐and‐Magnitude‐Darstellung für beispielsweise 32 Bits:
s exponent fraction
1 Bit 8 Bits 23 Bits
(s=0 für „+“ und s=1 für „‐“)
Tradeoff:
Viele Fraction‐Bits: hohe Genauigkeit der Fraction
1 Bit 8 Bits 23 Bits
g
Viele Exponent‐Bits: großer darstellbarer Zahlenbereich
Beispiel
s exponent fraction
Was ist der Dezimalwert x des folgenden Bit‐Strings?
1 Bit 8 Bits 23 Bits
Was ist der Dezimalwert x des folgenden Bit Strings?
100000101101100000000000000000000
Wertebereiche, Overflow und Underflow
s exponent fraction
1 Bit 8 Bits 23 Bits
Kleinste darstellbare nicht‐negative Zahl annähernd 2,0 · 10‐38 Größte darstellbare Zahl annähernd 2,0 · 1038
Was, wenn die darzustellende Zahl außerhalb dieses Bereichs ist?
Overflow: Zahl zu groß
(Exponent ist zu groß um im Exponent‐Feld darstellbar zu sein) (Exponent ist zu groß um im Exponent Feld darstellbar zu sein)
Underflow: Zahl zu klein
(Negativer Exponent ist zu groß um im Exponent‐Feld darstellbar zu sein)
Double‐ und Single‐Precision
Beispiel:
f i
Insgesamt 32 Bits Single‐
s exponent fraction
1 Bit 8 Bits 23 Bits
Insgesamt 64 Bits Single‐
Precision
s exponent fraction
1 Bit 11 Bits 52 Bits
Insgesamt 64 Bits Double‐
Precision
Double‐Precision hat höhere Genauigkeit der Fraction und mit
öß E t h i öß d t llb
größerem Exponent auch einen größeren darstellbaren Zahlenbereich.
Double‐Precision in diesem Beispiel:
Kleinste darstellbare nicht‐negative Zahl annähernd 2,0 · 10‐308 Größte darstellbare Zahl annähernd 2,0 · 10308
Der Zahlenformatstandard IEEE 754
Insgesamt 32 Bits
s exponent fraction
1 Bit 8 Bits 23 Bits
Insgesamt 32 Bits Single‐
Precision
I t 64 Bit
s exponent fraction
1 Bit 11 Bits 52 Bits
Insgesamt 64 Bits Double‐
Precision
Bit‐Aufteilungen in dieser Form sind in IEEE 754 spezifiziert.
Betrachte die wissenschaftliche, normalisierte Darstellung:
[+ oder ‐] 1,xxxxxxxx · 2yyyy
Beobachtung: die 1“ vor dem Komma ist redundant Beobachtung: die „1 vor dem Komma ist redundant.
Somit: Bei IEEE 754 wird die „1“ implizit angenommen und in „ p g
„fraction“ nicht codiert. „fraction“ speichert nur Nachkommastellen.
Beispiel
s exponent fraction
1 Bit 8 Bits 23 Bits
Es sei die „1“ vor dem Komma implizit angenommen. „Fraction“
1 Bit 8 Bits 23 Bits
speichere damit nur die Nachkommastellen. Was ist der Dezimalwert x des folgenden Bit‐Strings?
1000001010110000000000000000000
Weitere Eigenschaften von IEEE 754
Unterscheidung von „Fraction“ und „1+Fraction“ in der Darstellung ( 1)S (1 + Fraction) 2Exponent
(‐1)S · (1 + Fraction) · 2Exponent
1+Fraction wird als Significant (deutsch: Mantisse) bezeichnet.
1+Fraction wird als Significant (deutsch: Mantisse) bezeichnet.
Motivation für eine geeignete Exponent‐Darstellung
Annahme: Exponent wäre mit Zweierkomplement dargestellt. Wie macht man einen Größer‐Kleiner‐Vergleich der folgenden beiden Zahlen?
Zahlen?
Zahl 1: 000000111101000100000000000000000 Zahl 2: 011010111010010000010000000000000 Zahl 2: 011010111010010000010000000000000
1. Vergleiche erst mal die Vorzeichenbits. Bei unterschiedlichen V i h bit i t d V l i h b d t
Vorzeichenbits ist der Vergleich beendet.
2. Vergleiche die Exponenten. Ist einer größer als der andere, ist der Vergleich beendet (Signed‐Vergleich)
der Vergleich beendet. (Signed Vergleich)
3. Vergleiche die Fractions. (Unsigned‐Vergleich) Kann man Schritt 2 und 3 in einem durchführen?
Kleinster Exponent müsste 00000000 und größter Exponent müsste 11111111 sein dann könnte man Exponent und Fraction für einen Vergleich einfach
sein, dann könnte man Exponent und Fraction für einen Vergleich einfach
Darstellung des Exponenten in Biased‐Notation
E i Bi d N i (hi i 8 Bi d Bi 127)
Erinnerung: Biased‐Notation (hier mit 8‐Bit und Bias 127):
0000 0000 = -127 (0-Bias = -127) 0000 0001 = -126 (1-Bias = -126)
...
0111 1110 = -1 (126-Bias = -1)( ) 0111 1111 = 0 (127-Bias = 0) 1000 0000 = 1 (128-Bias = 1)
...
1111 1110 = 127 (254-Bias = 127) 1111 1111 = 128 (255-Bias = 128)
Zusammengefasst: Der Wert x einer Zahl in IEEE 754 Darstellung ist
IEEE 754 Encoding
Wie stellt man im IEEE 754 Format eigentlich die „0“ dar!?
(‐1)
S· (1 + Fraction) · 2
(Exponent—Bias)Single‐Precision (Bias=127)
Double‐Precision
(Bias=1023) Dargestelltes Objekt
Exponent Fraction Exponent Fraction
0 0 0 0 0
0 Nicht‐Null 0 Nicht‐Null (+/‐ Denormalised Number) 1 bis 254 Beliebig 1 bis 2046 Beliebig +/‐ Gleitkommazahl 1 bis 254 Beliebig 1 bis 2046 Beliebig +/ Gleitkommazahl
255 0 2047 0 +/‐ Unendlich
255 Ni ht N ll 2047 Ni ht N ll N N (N t N b ) 255 Nicht‐Null 2047 Nicht‐Null NaN (Not a Number)
Quiz
Betrachte IEEE 754 Single‐Precision, also Bias = 127. Was ist der Dezimalwert der folgenden Binärzahl?
010000000110000000000000000000000
(‐1)
S· (1 + Fraction) · 2
(Exponent—Bias)( ) ( )
Quiiiiz
Bestimme S, Fraction und Exponent der IEEE 754 Single‐Precision Repräsentation (also Bias = 127) der Dezimalzahl ‐0.75.
( 1)
S(1 + Fraction) 2
(Exponent—Bias)(‐1)
S· (1 + Fraction) · 2
(Exponent Bias)Gleitkommaarithmetik
Gleitkommaarithmetik
Additi bi ä Bit Gl itk hl
Addition von binären n‐Bit Gleitkommazahlen
Vorüberlegung
Addition mit gleichem Exponent (Nachkomma mit 4 Bits kodiert):
Addition mit unterschiedlichen Exponenten (Nachkomma 4 Bits):
Vorüberlegung
Ergebnis muss unter Umständen wieder normalisiert werden:
Bei Einschränkung auf n Bit (z.B. Nachkomma auf 4 Bit einge‐
schränkt) kann dies anschließendes Auf‐ bzw. Abrunden erfordern.
Beispiel: Runden nach der „Schulmethode“
Vorüberlegung
Das Runden kann ggf. neues Normalisieren erforderlich machen:
Normalisierungen können Overflows und Underflows hervorrufen.
Beispiel: IEEE 754 Single‐Precision erlaubt Exponenten von ‐126 bis 127. Somit ist zum Beispiel:
Additionsalgorithmus
2 Beispiele: 4 Bit für die Mantisse
und 8 Bit für den Exponenten. Start
(1) Vergleiche Exponenten der beiden Zahlen Shifte die Beispiel 1 Beispiel 2
1,000 · 2‐1 1 110 2 2
1,001 · 210
1 101 211 der beiden Zahlen. Shifte die kleinere Zahl nach rechts, so
dass der Exponent mit dem
‐ 1,110 · 2‐2 + 1,101 · 211 (1)
Exponent der größeren Zahl übereinstimmt. (Mantissen‐
Ali t) Alignment) (2)
(2) Addiere die Mantissen.
Additionsalgorithmus
2 Beispiele: 4 Bit für die Mantisse
und 8 Bit für den Exponenten. (3) Normalisiere die Summe,(3) Normalisiere die Summe, entweder durch Rechts‐Shift
und hoch setzen oder durch Beispiel 1 Beispiel 2
(2) 0,001 · 2‐1 10,001 · 211
Links‐Shift und runter setzen des Exponenten.
(2) 0,001 2 10,001 2 (3)
Im Beispiel 8‐Bit für den Exponenten.
Overflow oder
Underflow? ja
E ti “
nein „Exception“
Additionsalgorithmus
zurücknach (3) 2 Beispiele: 4 Bit für die Mantisse
und 8 Bit für den Exponenten.
( )
(4) Runde die Mantisse auf die verfügbare Anzahl Bits.
Beispiel 1 Beispiel 2
(3) 1 000 2‐4 1 0001 212 (3) 1,000 · 2 1,0001 · 2 (4)
Immer noch
li i ? i
normalisiert?
j
nein
Fertig ja Fertig
Noch eine Bemerkung
h d f l d b l
Betrachte die folgende binäre Floats mit 8‐Bit Mantisse:
x = −1 100 000 · 2100 y = 1 100 000 · 2100 z = 1 000 0000
x = 1,100 000 · 2 , y = 1,100 000 · 2 , z = 1,000 0000 Was ist x + (y + z)?(y )
Was ist (x + y) + z?
S it i t + ( + ) ≠ ( + ) + d h di Gl itk dditi i t Somit ist x + (y + z) ≠ (x + y) + z, d.h. die Gleitkommaaddition ist nicht assoziativ!
Quiz: Was ist die Konsequenz, wenn man x1 + x2 + ... + x parallel Quiz: Was ist die Konsequenz, wenn man x1 + x2 + ... + xn parallel berechnen möchte?
Gleitkommaarithmetik
M lti lik ti bi ä Bit Gl itk hl Multiplikation von binären n‐Bit Gleitkommazahlen
Vorüberlegung
Multiplikation von zwei beliebigen binären Floats in normalisierter Darstellung. Was ist der Exponent des Ergebnisses?
Multiplikation der Mantissen Wo kommt das Komma hin?
Multiplikation der Mantissen. Wo kommt das Komma hin?
Was ist das Vorzeichen v von x · y?
Algorithmus
Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
Start
1 2 Start
1,101 · 2‐1 · ‐1,100 · 2‐2 (1)
(1) Addiere die Exponenten.
(S bt hi Bi i F ll (Subtrahiere Bias im Falle
von Biased‐Notation )
Algorithmus
Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
(1) Der Exponent ist ‐3 Die Mantissen sind:
1 101 und 1 100
(2) Multipliziere die 1,101 und 1,100
(2)
(2) Multipliziere die Mantissen.
Algorithmus
Beispiel: 4 Bit für die Mantisse
und 8 Bit für den Exponenten. (3) Normalisiere das Produkt(3) Normalisiere das Produkt Falls notwendig.
Normalisierung erfolgt durch (2) 10,011100 · 2‐3
(3) Rechts‐Shift und erhöhen
des Exponenten.
(3)
Im Beispiel 8‐Bit für den Exponenten.
Overflow oder
Underflow? ja
E ti “
nein „Exception“
Algorithmus
zurücknach (3)Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
1 2
(4) Runde die Mantisse auf die verfügbare Anzahl Bits (Eingabe: 1,101 · 2‐1 · ‐1,100 · 2‐2) die verfügbare Anzahl Bits.
(3) 1,0011100 · 2‐2
Immer noch
normalisiert? nein (3) 1,0011100 2
(4)
ja
(5) Setze Vorzeichen auf +“
(5)
(5) Setze Vorzeichen auf „+
wenn die Vorzeichen der Eingaben gleich waren. Sonst g g
setze Vorzeichen auf „‐“.
Fertig
Gleitkommaarithmetik
E höh d G i k it Erhöhen der Genauigkeit
Guard‐Bit, Round‐Bit und Sticky‐Bit
Bei der Darstellung der Addition und Multiplikation haben wir vereinfacht die beim Mantissen‐Alignment rechst heraus
geschobenen Bits einfach abgeschnitten Zum Beispiel:
geschobenen Bits einfach abgeschnitten. Zum Beispiel:
Mantissen‐Alignment um 5 Stellen
10111001000111011010110 Mantisse
In Wirklichkeit (z.B. IEEE 754 Spezifikation) wird zur Steigerung der Genauigkeit etwas geschickter vorgegangen. Obiges Beispiel:
Mantisse Mantisse
Rechenoperationen finden auf dieser erweiterten Mantisse statt.
Quiz
Wir betrachten 8‐Bit Mantissen. Es seien die folgenden beiden binären Zahlen zu addieren.
1 , 100 0110 · 2
6+ 1 , 011 1010 · 2
2Wie sehen Mantisse, Guard‐Bit, Round‐Bit und Sticky‐Bit nach dem Mantissen‐Alignment aus?
6 2
1 , 100 0110 · 2
61 , 011 1010 · 2
28‐Bit‐Mantisse 8‐Bit‐Mantisse
IEEE 754 Rounding‐Modes
+ / −
S E b i B i i l 21 7 B i i l 21 7
Mantisse M G R S
Synonym Ergebnis Beispiel 21,7 Beispiel ‐21,7 Round
toward
Ceil Kleinster Wert nicht
+∞ kleiner als M
Round
t d
Floor Größter Wert i ht öß toward
−∞
nicht größer als M
Round Truncate Genau M toward
0
R d W t d
Round to
nearest
Wert, der am nächsten zu M liegt