Kapitel 2.1: Rechnerarithmetik

Werbung
Teil 2: Rechnerorganisation
Inhalt:
• Zahlendarstellungen
• Rechnerarithmetik
• Mikroprogrammierung
• schrittweiser Entwurf eines hypothetischen Prozessors mit
Daten-, Adreß- und Kontrollpfad
• Speicherorganisation
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
1
Zahlendarstellungen
Zahlendarstellungen in positionaler Notation :
• n-stellige ganze Dezimalzahl x:
x = (xn-1 xn-2 ... x2 x1 x0)10
= 10n-1 xn-1 + 10n-2 xn-2 + ... + 101 x1 + 100 x0
mit xi ∈ {0,1,2,3,4,5,6,7,8,9}
• n-stellige ganze Binär- oder Dualzahl y:
y = (yn-1 yn-2 ... y2 y1 y0)2
= 2n-1 yn-1 + 2n-2 yn-2 + ... + 22 y2 + 21 y1 + 20 y0
mit yi ∈ {0,1}
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
2
Zahlendarstellungen (Forts.)
Allgemein: b-adisches Zahlensystem
• Jede natürliche Zahl z mit 0 ≤ z ≤ 2n–1 ist eindeutig als
n-stellige Zahl zur Basis b darstellbar:
z = (zn-1 zn-2 ... z2 z1 z0)b
= bn-1 zn-1 + bn-2 zn-2 + ... + b2 z2 + b1 z1 + b0 z0
mit Ziffer zi ∈ {0,1,2, ... ,b–1}
• Typische Werte für Basis b:
b=2: Dualzahl
b=8: Oktalzahl
b=10: Dezimalzahl
b=16: Hexadezimalzahl mit zi ∈ {0,1,2, ... ,9,A,B,C,D,E,F}
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
3
Zahlendarstellungen (Forts.)
Verallgemeinerung für Festkommazahlen :
• Zahl zur Basis b mit k Vor- und m Nachkommastellen :
z = (zk-1 zk-2 ... z1 z0 , z-1 z-2 ... z-m)b
= bk-1 zk-1 + bk-2 zk-2 + ... + b2 z2 + b1 z1 + b0 z0
+ b-1 z-1 + b-2 z-2 + ... + b-m z-m
• Ziffern zk-1 zk-2 ... z1 z0 stellen ganzzahligen Teil,
Ziffern z-1 z-2 ... z-m stellen gebrochenen Teil von z dar
• gesamte Stellenzahl: n = k + m Ziffern
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
4
Zahlendarstellungen (Forts.)
Darstellung positiver und negativer Zahlen in n Stellen:
• höchstwertige Ziffer zn-1 stellt das Vorzeichen dar (Zahl ist
positiv bei zn-1 = 0, negativ bei zn-1= b–1)
• für positive Zahl gilt stets: z = (0 zn-2 zn-3 ... z1 z0)b
• drei Möglichkeiten für negative Zahlen (mit zi = b–1–zi):
A) Vorzeichen und Betrag : –z = (b–1 zn-2 zn-3 ... z1 z0)b
B) (b–1)-Komplement : –z = (b–1 zn-2 zn-3 ... z1 z0)b = bn –1 –z
C) b-Komplement : –z = (b–1 zn-2 zn-3 ... z1 z0)b +1 = bn –z
• bei A und B hat die Zahl 0 zwei Darstellungen
• für Binärzahlen (d.h. für b=2) heißt B das Einerkomplement und
C das Zweierkomplement
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
5
Zahlendarstellungen im Digitalrechner
• ausschließliche Verwendung von Binärzahlen
• Darstellung negativer Zahlen i.a. im Zweierkomplement
• Abbildung aller Zahlen auf Worte der Länge w, ggf. durch
Ergänzung führender Vorzeichenbits
• typische Wortlängen:
w=8
(byte, in Mikroprozessoren der ersten Generation, wie z.B. Intel
8080 oder Z80)
w = 16 (word / half word, in Minicomputern und Mikroprozessoren der
zweiten Generation, wie z.B. PDP-11, Intel 8086, Motorola 68000)
w = 32 (double word / word, in Mikroprozessoren der dritten Generation,
wie z.B. Intel Pentium, Motorola 68040)
w = 64 (quad word / double word, in aktuellen Hochleistungsprozessoren,
wie z.B. PowerPC, Alpha 21264, UltraSPARC)
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
6
Binäre Addition
• Addition zweier positiver n-stelliger Binärzahlen a und b kann
einfach spaltenweise durchgeführt werden:
• für Addition in letzter Spalte wird ein Halbaddierer benötigt,
der aus a0 und b0 Summe s0 und Übertrag (Carry) c0 ermittelt:
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
7
Binäre Addition (Forts.)
• für Addition in Spalten 1 bis n wird ein Volladdierer benötigt,
der Summe si und Übertrag (Carry) ci aus den Eingangssignalen
ai, bi und ci–1 ermittelt:
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
8
Binäre Addition (Forts.)
• paralleles binäres Addierwerk für zwei n-Bit Worte:
• serielles binäres Addierwerk für zwei n-Bit Worte:
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
9
Binäre Subtraktion
• Statt der Entwicklung eines eigenen Subtrahierwerkes ist es
sinnvoller, für die binäre Subtraktion die gleiche Hardware wie
für die Addition einzusetzen ⇒ Idee: a–b = a+(–b)
• einfach bei Verwendung des Zweierkomplements für b:
• korrektes Ergebnis bei Unterdrückung des Überlaufs
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
10
Binäre Subtraktion (Forts.)
• Realisierung eines parallelen binären Addier-/Subtrahierwerkes
(C=0 : Addition a+b, C=1: Subtraktion a–b)
• (wirklicher) Überlauf nur bei cout ≠ cin im FA der Stelle n–1
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
11
Weitere Addierwerke
Problem des parallelen binären n-Bit Addierwerkes, das auch als
„Ripple Carry Adder“ (RCA) bezeichnet wird:
Propagation des Carry Signals bis zur Stelle n–1 ist sehr langsam;
max. Verzögerung: 2n ∆t (mit ∆t Gatterlaufzeit)
alternative Addierwerke:
• „Carry Look Ahead“ Addierer (CLA)
• „Carry Select“ Addierer
• „Carry Save“ Addierer (CSA) für m Summanden
gemeinsam ist die Vermeidung der Propagation des Carry-Signals
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
12
„Carry Look Ahead“ Addierer (CLA)
• Idee: a priori Berechnung der Carry-Signale ci für alle n Stellen
• für i-ten Volladdierer gilt: ci+1 = aibi + (ai+bi)ci := Gi + Pici
– Gi = aibi gibt an, ob in Stelle i Carry-Signal erzeugt wird („Generate“)
– Pi = ai+bi gibt an, ob Stelle i das Carry-Signal propagiert (=1) oder nicht (=0)
• für die ci der ersten Stellen ergibt sich:
c1 = a0b0 + (a0 + b0)c0 := G0 + P0c0
c2 = G1 + P1G0 + P1P0c0
c3 = G2 + P2G1 + P2P1G0 + P2P1P0c0
c4 = G3 + P3G2 + P3P2G1 + P3P2P1G0 + P3P2P1P0c0
• alle Signale ci lassen sich prinzipiell mit Gatterlaufzeit 2 ∆t
bestimmen, jedoch sind UND-Gatter mit max. i+1 Eingängen
und ODER-Gatter mit max. i Eingängen nötig
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
13
„Carry Look Ahead“ Addierer (Forts.)
• Beispiel:
4-Bit CLA
Addierer
• Kaskadierung möglich durch Ausgangssignale G („Block
Generate“) und P („Block Propagate“):
G = G3 + P3G2 + P3P2G1 + P3P2P1G0 , P = P3P2P1P0
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
14
„Carry Select“ Addierer
• In einem n-Bit „Carry Select“ Addierblock werden die
Summenbits sn-1, sn-2, ... ,s0 sowohl für c0= 0 als auch für c0=1
bestimmt und das Ergebnis über Multiplexer ausgewählt
• Beispiel: 4-Bit „Carry Select“ Addierer
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
15
„Carry Save“ Addierer (CSA)
•
Baustein zur Realisierung
eines mehrstufigen Addiernetzes für die Addition von
m Binärzahlen
•
Idee: Carry-Signale werden
nicht propagiert, sondern erst
bei Addition des nächsten
Summanden berücksichtigt
•
zur Addition von m Zahlen
werden m–2 CSA-Bausteine
benötigt
•
ein RCA oder CLA-Addierer
dient der Addition der noch
verbleibenden Überträge
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
16
Binäre Multiplikation
• Multiplikation zweier 1-Bit Werte entspricht einer logischen
UND-Verknüpfung 0×0=0, 0×1=0, 1×0=0, 1×1=1
• Multiplikation zweier mehrstelliger Zahlen ist zurückführbar auf
wiederholte bedingte Additionen und Schiebeoperationen
(in einfachen Prozessoren wird daher oft auf Multiplizierwerke verzichtet)
• Multiplikation zweier positiver n-stelliger Zahlen a und b ergibt
2n-stelliges Produkt p
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
17
Multiplizierwerke
Implementierungsvariante A
•
serielle Multiplikation durch
Addition und Rechtsschieben
•
Register p = (pH, pL) doppelter
Wortbreite zur Addition
partieller Produkte
•
durch Schieben von b wird nur
Multiplikatorbit b0 benötigt
•
mit zwei n-Bit Registern, einem
2n-Bit Register, einem n-Bit
Addierer und Steuerwerk direkt
in Hardware implementierbar
•
Multiplikation zweier n-Bit
Zahlen benötigt n Takte
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
18
Multiplizierwerke (Forts.)
Implementierungsvariante B
•
Idee: Implementierung des
Multiplikationsschemas in
Hardware („multiplier array“
zur parallelen Multiplikation)
•
max. Zeitverzögerung bei der
Multiplikation zweier 4-Bit
Zahlen: 15 ∆t
(mit Gatterlaufzeit ∆t)
•
max. Zeitverzögerung bei der
Multiplikation zweier n-Bit
Zahlen: 2(2n–1)+1 ∆t
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
19
Multiplizierwerke (Forts.)
Implementierungsvariante C
•
Idee: Addition der n Zeilen zi
aus n×n Bit Multiplikationsschema mit CSA-Bausteinen
•
entweder als CSA-Kette oder
CSA-Baum realisierbar
•
max. Zeitverzögerung bei der
Multiplikation zweier n-Bit
Zahlen (mit RCA am Ende):
(2(n-2) + 4n) ∆t
[Kette]
~ (2 log2 n + 4n) ∆t [Baum]
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
20
Multiplizierwerke (Forts.)
Implementierungsvariante D
•
Idee: Herleitung eines Schaltnetzes aus Wahrheitstabelle
eines n×n Bit Multiplizieres
•
Realisierung als ROM
•
max. Zeitverzögerung bei der
Multiplikation zweier n-Bit
Zahlen: 2∆t
•
Aufwand jedoch extrem hoch:
ROM mit 22n × 2n Bit nötig
•
Alternative: Verwendung von
k×k Bit Multiplizierern im ROM
und Addition der geschobenen
partiellen Produkte
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
21
Binäre Multiplikation negativer Zahlen
• bislang Betrachtung ausschließlich positiver Multiplikatoren
und Multiplikanden
• Was passiert bei negativen im Zweierkomplement kodierten
n-Bit Multiplikatoren und n-Bit Multiplikanden ?
a × –b = a × (2n –b) = a×2n – a×b
– a × b = (2n –a) × b = b×2n – a×b
– a × –b = (2n –a) × (2n –b) = 22n – a×2n – b×2n + a×b
(statt 2n – a×b)
(statt 2n – a×b)
(statt [22n ]+ a×b)
• ohne besondere Maßnahme (Addition von Korrekturtermen)
liefert binärer Multiplizierer falsche Ergebnisse !
• Alternative: Trennung von Vorzeichen und Betrag und separate
Generierung des korrekten Vorzeichens (⇒ hoher Aufwand)
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
22
Multiplizierer nach Booth
•
Idee: Vereinfachung der Multiplikation mit einer 1-Folge im Multiplikator,
z.B.: a × 001110 = a × 010000 – a × 000010
•
Analyse zweier benachbarter Bits bi und bi-1 im Multiplikator:
– Addition von a×2i bei (bibi-1) = 01
– Addition von –a×2i bei (bibi-1) = 10 (im Zweierkomplement, ergänzt)
– keine Addition bei (bibi-1) = 00 oder (bibi-1) = 11
•
Ergänzung von b-1 = 0 erforderlich
•
Beispiele:
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
23
Multiplizierer nach Booth (Forts.)
•
Multiplikation nach Booth funktioniert für beliebige positive und negative
Multiplikanden und Multiplikatoren
•
Algorithmus für serielle Multiplikation nach Booth mit doppelt breitem
Schieberegister p:
•
parallele Multiplikation nach Booth und schnelle Addition der resultierenden
Zeilen des Multiplikationsschemas mittels Wallace-Baum ist in den meisten
modernen Prozessoren implementiert
(jedoch häufig ergänzt mit Registern zwischen manchen Stufen zur
des Durchsatzes, auch als „pipelined multiplier“ bezeichnet)
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
24
Binäre Division
• Umkehrung der Multiplikation: Berechnung von q = a/b durch
wiederholte bedingte Subtraktionen und Schiebeoperationen
• in jedem Schritt wird Divisor b testweise vom Dividenden a
subtrahiert: qi = 1, falls a–b > 0
qi = 0 und Korrektur durch a = a + b, falls a–b < 0
• Beispiel: 10310 / 910 = 1110
mit Rest 410
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
25
Binäre Division (Forts.)
•
serieller Algorithmus zur Division
zweier n-Bit Zahlen a und b:
•
mit einem n-Bit Register b, einem
2n-Bit Register q, einem n-Bit
Addierer/Subtrahierer direkt in
Hardware implementierbar
•
nach n Schritten befindet sich der
Quotient q in qL, der Rest in qH
•
in aktuellen Prozessorarchitekturen
eingesetzte Divisionsverfahren:
– iterative Approximation (durch
Multiplikation und Addition)
– SRT Algorithmus (simultane
tabellenbasierte Generierung
mehrerer Quotientenbits)
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
26
Gleitkommazahlen
• in vielen technischen und wissenschaftlichen Anwendungen
erforderlich:
– hohe Präzision und Genauigkeit
– große Dynamik
möglich durch Verwendung von Gleitkommazahlen
• allgemeine Gleitkommazahl zur Basis r („radix“) definiert
durch x = a × re mit
Argument oder Mantisse a
Exponent oder Charakteristik e
• eine Gleitkommazahl x ≠ 0 zur Basis r heißt normalisiert, wenn
für die Mantisse a gilt: 1/r ≤ a < 1
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
27
Binäre Gleitkommazahlen
• Verwendung der Basis 2, d.h. eine binäre Gleitkommazahl x ist
definiert durch x = a × 2e
mit m-stelliger Mantisse a
und p-stelligem Exponent e
• eine binäre Gleitkommazahl x ≠ 0 heißt normalisiert, wenn das
höchstwertige Mantissenbit den Wert 1 hat
⇒ zwei Interpretationen: 1.XXXXXXX und [0].1XXXXXX
• häufig Darstellung des Exponenten mit Bias b: x = a × 2e−b
Wahl von b = 2p–1 – 1 bewirkt Transformation des Bereiches für
den Exponenten e von 0 ... 2p – 1 in –(2p–1 –1) ... 2p–1
⇒ einfache Kodierung positiver und negativer Exponenten
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
28
Binäre Gleitkommazahlen (Forts.)
• Mantisse und Exponent können positiv und negativ sein
• viele Variationsmöglichkeiten bei der Definition eines Formates
zur Kodierung binärer Gleitkommazahlen:
1) Wahl der Gesamtwortbreite n
2) Wahl vom m und p = n–m
3) Wahl einer Reihenfolge von a und e
4) Darstellung der Mantisse im Einerkomplement, im Zweierkomplement
oder mittels Vorzeichen und Betrag
5) Darstellung des Exponenten im Einer- oder Zweierkomplement,
mittels Vorzeichen und Betrag oder durch Subtraktion eines Bias
• früher unterschiedliches Gleitkommaformat in jedem Prozessor,
heute überwiegend Verwendung des IEEE 754 Standard
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
29
IEEE 754 Standard
• allgemeine Definition: x = (–1)s × 1.f × 2e–b
• Mantisse aus Vorzeichen s und normalisiertem Betrag a = 1.f
im Bereich 1.00..00 bis 1.11..11
(1 vor dem Komma wird nicht kodiert ⇒ erhöhte Präzision)
• Aufbau einer n-Bit
IEEE Gleitkommazahl:
• p-stelliger Exponent mit Bias b = 2p–1–1, gültiger Exponent e
nur im Bereich emin= 0 < e < emax = 2p–1 = 2b+1
⇒ darstellbarer Zahlenbereich: ± 21–b ... (2–2–m) × 2b
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
30
IEEE 754 Standard (Forts.)
• 3 verschiedene Formate spezifiziert:
single precision
double precision
quad precision
n
32
64
128
m
23
52
112
s
1
1
1
p
8
11
15
emin
0
0
0
emax
255
2047
32767
b
127
1023
16383
| xmin |
2–126 ≈ 10–38
2–1022 ≈ 10–308
2–16382 ≈ 10–4932
| xmax | (2–2–23)×2127 ≈ 1038 (2–2–52)×21023 ≈ 10308 (2–2–112)×216383 ≈ 104932
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
31
IEEE 754 Standard (Forts.)
• e = emin = (00..00)2 und e = emax = (11..11)2 werden zur
Kodierung besonderer Zahlen verwendet:
x = +0 („positive Zero“): e = 0, f = 0, s = 0
x = −0 („negative Zero“): e = 0, f = 0, s = 1
x = +∞ („positive Infinity“): e = emax , f = 0, s = 0
x = −∞ („negative Infinity“): e = emax , f = 0, s = 1
x = NaN („Not a Number“): e = emax , f ≠ 0, s beliebig
x = (–1)s × 0.f × 21−b („Denormalized Number“): e = 0, f ≠ 0
• Denormalisierte Gleitkommazahlen ermöglichen die Darstellung
sehr kleiner Werte im Bereich 21−b−m ... 21−b
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
32
Multiplikation von Gleitkommazahlen
Algorithmus zur Multiplikation zweier IEEE-Gleitkommazahlen
x = (– 1)s × a × 2α−bias und y = (– 1)t × b × 2β–bias :
1) Multipliziere Mantissen: c = a × b
a=1.fa und b=1.fb haben m+1 Stellen ⇒ c hat 2m+2 Stellen !
2) Addiere Exponenten: γ = α + β – bias
3) Berechne Vorzeichen des Produktes: u = s ⊕ t
γ-bias
4) Normalisiere Ergebnis z = (– 1) × c × 2
a) Falls c ≥ 2, schiebe c um 1 nach rechts und inkrementiere γ
b) Schiebe c um 1 nach links
c) Setze c = 1.fc = (c2m+1 c2m c2m–1 ... cm+1), ggf. mit Rundung
5) Behandlung von Sonderfällen:
a) Überlauf, falls γ ≥ 2p – 1 ⇒ z := +∞ oder z := −∞ (bei u = 0 bzw. 1)
b) Unterlauf, falls γ < 1 ⇒ Denormalisierung durchführen
c) Zero, falls c = 0 ⇒ z := 0
u
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
33
Addition/Subtraktion von Gleitkommazahlen
Algorithmus zur Addition/Subtraktion zweier Gleitkommazahlen
x = (– 1)s × a × 2α−bias und y = (– 1)t × b × 2β−bias im IEEE Format:
1) Sortiere x und y derart, daß x die Zahl mit kleinerem Exponenten ist
2) Anpassung der Exponenten: Transformiere x in die Gleitkommazahl
x´ = (– 1)s × a´× 2β−bias durch Rechtsschieben von a um β−α Bitstellen
3) Addiere/Subtrahiere Mantissen:
a) Falls nötig, bilde Zweierkomplement von a´ oder b
b) Berechne c = a´ + b bzw. c = a´ + ( b)
c) Falls c < 0, setze Vorzeichenbit u = 1 und bilde Zweierkomplement
4) Normalisiere Ergebnis z = (– 1) × c × 2β–bias
a) Falls c ≥ 2, schiebe c nach rechts (ggf. Rundung) und inkrementiere β
b) Falls c < 1, schiebe c nach links und dekrementiere β
c) Wiederhole a) bzw. b), bis 1 ≤ c < 2 oder c = 0
5) Behandlung von Sonderfällen (Überlauf ? , Unterlauf ? , c = 0 ? )
u
Technische Informatik I, SS 2001
A. Strey, Universität Ulm
Kapitel 2 : Rechnerarithmetik
34
Herunterladen