Control Beispiel
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 69 4‐Bit‐Register R1
Store R1 4‐Bit‐Register R2
R2 Bit 0
Control
Zero
Store R2
SUB
Control soll folgenden Algorithmus implementieren:
wenn R2 gerade und R1-R2=0, dann R1 = 0
wenn R2 ungerade und R1-R2!=0, dann R2 = R1-R2
sonst
R1 = R1-R2
R2 Bit 0
Zero Store R1
Store R2
0 0
0 1
1 0
1 1
Control wird als kombinatorische Schaltung realisiert.
Hierzu die Wahrheitstabelle:
Anhand der Wahrheitstabelle wird dann die Schaltung gebaut.
Rückgekoppelte Register haben immer einen wohldefinierten Zustand, da Register nur zum Clock‐Signal aktualisiert werden.
Eingabe Ausgabe
Darstellung von Algorithmen
Grundlagen der Rechnerarchitektur ‐Einführung 70
Pseudo‐Code‐Darstellungen
Grundlagen der Rechnerarchitektur ‐Assembler 71
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:
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 unterteilbar ist.
Felder
Grundlagen der Rechnerarchitektur ‐Assembler 72
Felder für den Zugriff auf den Speicher, z.B.: A[]
Zugriff auf ite Speicherstelle: A[i]
Beispiel:
0x0f00 : 14 A[0]
0x0f01 : 15 A[1]
0x0f02 : 42 A[2]
0x0f03 : 43 A[3]
...
...
0x0f0f : 255 A[15]
Sequenz von Elementaranweisungen
Grundlagen der Rechnerarchitektur ‐Assembler 73
Setze i auf i+1 Setze j auf 2*i
usw.
Jedes Programm beginnt an einer Stelle und terminiert (hoffentlich) irgendwann.
Im Flussdiagramm ist Beginn und Ende des Programms mit den ovalen Symbolen dargestellt.
Im Beispiel also „Start“ und „Ende“.
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.
Start
Ende
If‐then‐else
Grundlagen der Rechnerarchitektur ‐Einführung 74
if‐then‐else am Beispiel:
if(i<10) then
<Code-Block 1>
else
<Code-Block 2>
Ist i<10?
Code‐Block 1 Code‐Block 2 ja
nein
Switch‐Statement
Grundlagen der Rechnerarchitektur ‐Einführung 75
Switch‐Statement am Beispiel:
switch(i) case 1:
<Code-Block 1>
case 2:
<Code-Block 2>
...
defaut:
<Code-Block n>
i=1?
Code‐Block 2 Code‐Block 1 ja
Code‐Block n i=2?
nein
ja
nein
...
For‐Schleife
Grundlagen der Rechnerarchitektur ‐Assembler 76
For‐Schleife am Beispiel:
for(i=0; i<10; i++) {
<das innere der Schleife>
}
Bedeutet:
• Initialisiere i mit 0
• Führe das innere der Schleife aus
• Erhöhe i um eins
• Wiederhole wenn immer noch i<10
Ist i<10?
Ende Start
Innere der Schleife Setze i auf 0
Erhöhe i um 1 ja
nein
While‐Schleife
Grundlagen der Rechnerarchitektur ‐Assembler 77
While‐Schleife an Beispiel:
i=0
while(i<10) {
<das innere
der Schleife>
i++
}
Bedeutet:
• Initialisiere i mit 0
• Führe das innere der Schleife aus
• Erhöhe i um eins
• Wiederhole wenn immer noch i<10
Ist i<10?
Ende Start
Innere der Schleife Setze i auf 0
Erhöhe i um 1 ja
nein
Gegeben seien die ganzzahligen Variablen n und m.
Bestimme größtes k welches nk < m erfüllt:
Beispiel
Grundlagen der Rechnerarchitektur ‐Assembler 78
Multiplikation
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 79
Multiplikation nach der Schulmethode
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 80
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
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 81
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
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 82
Beispiel 1001*0101:
1 0 0 1
* 0 1 0 1 --- 1 0 0 1 + 0 0 0 0 ---
1 0 0 1 + 1 0 0 1
--- 1 0 1 1 0 1 + 0 0 0 0
--- 0 1 0 1 1 0 1
Start Teste erstes Multiplikator
‐Bit
Shifte Multiplikand ein Bit nach Links
Shifte Multiplikator ein Bit nach Rechts Addiere Multiplikand
zum Produkt
5ter Durch‐
lauf?
Ende
0 1
ja
nein Beispiel für
4‐Bit‐Zahlen
Das Verfahren in Hardware
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 83
8‐Bit Multiplikand
8‐Bit ALU
8‐Bit Produkt Control
Test
4‐Bit Multiplikator
Beispiel für 4‐Bit‐Zahlen Rechts‐Shift
Links‐Shift Demonstration mit
1001 * 0110 = 110110
1. Produkt = Produkt + Multiplikand
2.Links‐Shift
3.Rechts‐Shift
4. Anzahl Durch‐
läufe = 5Ende
Vorzeichenbehaftete Multiplikation
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 84
• Möglichkeit 2:
Tausche im Verfahren der vorigen Folie das Produkt‐
register mit einem vor‐
zeichenbehafteten Rechts‐
Shift‐Register aus.
• 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‘.
‐ Ergebnis z = z‘ wenn x und y nicht‐negativ oder x und y negativ, ansonsten ist z = ‐z‘.
Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Weitere Beschleunigungen
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 85
Beobachtung:
1 0 1 1 (Y)
* 1 1 1 0 (X) ---
0 0 0 0 + 1 0 1 1 + 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
Eine ALU für jede Summation
4‐Bit‐ALU
c s3 s2 s1 s0
4‐Bit‐ALU
c s3 s2 s1 s0
x0¢y0 x0¢y3y2y1
x1¢y x2¢y
x3¢y
z7z6z5z4z3 z2 z1 z0 Beispiel für 4‐Bit‐Zahlen
Weitere Beschleunigungen
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 86 Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012
Jede ALU‐Operation verbrauche einen Taktzyklus. Wie viele Taktzyklen dauert die Multiplikation von 32‐Bit‐Zahlen?
Parallele Organisation der ALUs in einen Binärbaum (keine weiteren Details hier)
Division
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 87
Division nach der Schulmethode
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 88
Gegeben seien die Binärzahlen A und B. Was ist a : b? Beispiel:
Dividend Divisor Quotient 1 0 0 1 0 1 0 : 1 0 0 0 =
Rest:
Das Verfahren als Algorithmus
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 89
Beispiel 1001 : 10:
Dvdt :Dvsr= Qtnt 001001 : 10 = 00100 -000000
--- 01001 -00000 --- 1001 -1000 ---- 001 -000 --- 01 -00 --
1 Rest Start
Teste Rest
Shifte Divisor ein Bit nach Rechts Shifte Quotient nach
Links und setze dessen LSB=1.
6ter Durch‐
lauf?
Ende
<0
¸0
ja
nein Subtrahiere
Divisor vom Rest
Restauriere den alten Rest. Shifte Quotient
nach Links und setze dessen LSB=0.
Beispiel für 4‐Bit‐Zahlen
Das Verfahren in Hardware
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 90
8‐Bit Divisor
8‐Bit ALU
8‐Bit Rest Control
Test
4‐Bit Quotient
Beispiel für 4‐Bit‐Zahlen Links‐Shift
Rechts‐Shift Demonstration mit
1001 : 0010 = 100 Rest 1
1. Rest=Rest‐Divisor, wenn Divisor < Rest
2. Links‐Shift; LSB=Rest wurde verändert 3. Rechts‐Shift
4. Anzahl Durch‐
läufe = 6Ende
Vorzeichenbehaftete Division
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 91
• Umgang mit dem Quotienten (analog wie für Multiplikation):
‐ Betrachte Divisor x und Dividend y (also: Quotient z von y:x).
‐ 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‘.
‐ 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:
•Also: Vorzeichen des Rests ist Vorzeichen des Dividend.
Dividend : Divisor Quotient Rest Quotient * Divisor + Rest = Dividend
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
Gleitkommazahlen
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 92
Reelle Gleitkommazahlen
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 93
Kleine Zahl Große Zahl Beispiel
Wissenschaftliche Darstellung
(eine Ziffer rechts des Kommas)
Normalisierte Darstellung
(keine führende Null)
Binäre Gleitkommazahlen
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 94
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.
Analog: mit 2‐i multiplizieren verschiebt das Komma um i Stellen nach links.
Binäre Gleitkommazahlen
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 95
Was ist die wissenschaftliche, normalisierte Darstellung der binären Gleitkommazahl zur dezimalen Gleitkommazahl 0,625?
Grundlagen der Rechnerarchitektur ‐Logik und Arithmetik 96
Betrachte die recht harmlose Dezimalzahl 0,8.
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:
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 endlicher Anzahl Bits darstellbar sind.