Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Ähnliche Dokumente
Multiplizierer. Beispiel komplexer arithmetischer Schaltung. Langsamer als Addition, braucht mehr Platz. Sequentielle Multiplikation

6. Zahlendarstellungen und Rechnerarithmetik

Rechnernetze und Organisation

Algorithmen zur Integer-Multiplikation

Mikroarchitekturen. Peter Marwedel Informatik 12 TU Dortmund 2013/07/16. technische universität dortmund. fakultät für informatik informatik 12

Das negative Zweierkomplementzahlensystem. Ines Junold 23. Februar 2010

Computerarithmetik (15b)

Inhalt. Zahlendarstellungen

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

Rechnergrundlagen SS Vorlesung

Algorithmen zur Division

Rückblick. Zahlendarstellung zu einer beliebigen Basis b. Umwandlung zwischen Zahlendarstellung (214) 5 = (278) 10 =(?) 8

N Bit Darstellung von Gleitkommazahlen

Computerarithmetik (6a)

Rechnergrundlagen SS Vorlesung

3. Mikroarchitekturen

Das Verfahren in Hardware

Rechnerstrukturen, Teil 1

Rechnerstrukturen. Michael Engel und Peter Marwedel SS TU Dortmund, Fakultät für Informatik

Grundlagen der Rechnerarchitektur

Control Beispiel. Control wird als kombinatorische Schaltung realisiert. Hierzu die Wahrheitstabelle: Control

Kap.2 Befehlsschnittstelle. Prozessoren, externe Sicht

Motivation 31. Mai 2005

Algorithmen zur Division

Grundlagen der Technischen Informatik. 4. Übung

6.2 Kodierung von Zahlen

Das negative Zweierkomplementzahlensystem

Rechnerstrukturen. Michael Engel und Peter Marwedel WS 2013/14. TU Dortmund, Fakultät für Informatik

Grundlagen der Technischen Informatik. 4. Übung

Rechnerstrukturen WS 2012/13

Zur Multiplikation von Gleitkommazahlen müssen die Mantissen inkl. führender 1, als Festkommazahlen multipliziert werden.

Zahlendarstellungen und Rechnerarithmetik*

12. Tutorium Digitaltechnik und Entwurfsverfahren

Multiplikation. Grundlagen der Rechnerarchitektur Logik und Arithmetik 79

Rechnerstrukturen, Teil 1. Vorlesung 4 SWS WS 14/15

Speichern von Zuständen

Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen Darstellung ganzer Zahlen

1. Aufgabe (4 + 6 Punkte) = + (n + 1) i=0. IV n (n + 1) n (n + 1) + 2 (n + 1) = n (n + 1) 2 (n + 1) (n + 1) (n + 2) = Behauptung. n = 0 = 6.

Übungen zur Vorlesung Technische Informatik I, SS 2002 Hauck / Guenkova-Luy / Prager / Chen Übungsblatt 5 Rechenwerke / Scheduling

Rechnerarchitektur (RA)

Wertebereiche, Overflow und Underflow

Rechnergrundlagen SS Vorlesung

Grundlagen der Rechnerarchitektur. Binäre Logik und Arithmetik

Aufgabe 1. Aufgabe 2. Abbildung 1: Schaltung für die Multiplikation mit 4

Minimierung nach Quine Mc Cluskey Ermitteln der Primtermtabelle

Assembler Integer-Arithmetik

bereits in A,3 und A.4: Betrachtung von Addierschaltungen als Beispiele für Schaltnetze und Schaltwerke

Integrierte Schaltungen

Carry Lookahead Adder

x x y x y Informatik II Schaltkreise Schaltkreise Schaltkreise Rainer Schrader 3. November 2008

Darstellung von negativen binären Zahlen


Computer Arithmetik. Computer Arithmetik Allgemein

ALU ALU. ALU-Aufbau. Eine ALU (arithmetisch-logische Einheit) besteht in der Regel aus. Addierer. Logischer Einheit. Shifter

Grundlagen der Technischen Informatik. 4. Übung

Grundlagen der Technischen Informatik. 4. Übung

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

Isomorphismus. Definition Gruppen-Isomorphismus. Seien (G, +) und (G, ) Gruppen. Die Abbildung f : G G heißt Gruppen-Isomorphismus, falls gilt

Grundlagen der Technischen Informatik. 4. Übung

Lösungsvorschlag 9. Übung Technische Grundlagen der Informatik II Sommersemester 2009

Informatik I Modul 5: Rechnerarithmetik (2)

Teil 2: Rechnerorganisation

3 Rechnen und Schaltnetze

2.1.2 Gleitkommazahlen

3.8 Sequentieller Multiplizierer 159

GTI ÜBUNG 12. Komparator und Addierer FRIEDRICH-ALEXANDER UNIVERSITÄT ERLANGEN-NÜRNBERG JAN SPIECK 1

Darstellung von Zeichen und Zahlen

GTI ÜBUNG 4 BINÄR-, HEX- UND GLEITKOMMAZAHLEN-ARITHMETIK

2 Initialisierung clk_mkand= clk_produkt= multiplexer= init/>>1= 6 Schieben clk_mkand= clk_produkt= multiplexer= init/>>1=

Binäre Division. Binäre Division (Forts.)

BB/CS- SS00 Rechner im Überblick 1/1. Ein Stellenwertsystem (Zahlensystem) ist ein Tripel S = (b, Z, δ) mit den folgenden Eigenschaften:

GTI ÜBUNG 12 KOMPARATOR UND ADDIERER

Minimierung nach Quine Mc Cluskey

Informatik 12 Kapitel 3 - Funktionsweise eines Rechners

Der Zahlenformatstandard IEEE 754

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Multiplikation

Digitaltechnik. 4 Arithmetik. Revision 1.1

Teil 2: Rechnerorganisation

Teil 2: Rechnerorganisation

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Vorzeichenbehaftete ganze Zahlen

Rechnerstrukturen, Teil 1. Vorlesung 4 SWS WS 14/15

Übungen zur Vorlesung Technische Informatik I, SS 2001 Strey / Guenkova-Luy / Prager Übungsblatt 4 Zahlendarstellung/Rechenarithmetik/Rechenwerke

Musterlösung 1. Mikroprozessortechnik und Eingebettete Systeme 1 WS2015/2016

N Bit binäre Zahlen (signed)

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Addierschaltungen

Outline Schieberegister Multiplexer Barrel-Shifter Zähler Addierer. Rechenschaltungen 1. Marc Reichenbach

Informationsmenge. Maßeinheit: 1 Bit. 1 Byte. Umrechnungen: Informationsmenge zur Beantwortung einer Binärfrage kleinstmögliche Informationseinheit

Mikroprozessor als universeller digitaler Baustein

Binäre Darstellung ganzer Zahlen

Multiplikationschip. Multiplikation. Beitrag zu "Werkstattunterricht Multiplikation" Allgemeine Didaktik - Seminar SS95. Oberwiesenstr.

Computerarithmetik (1)

Lösungsvorschlag zu 1. Übung

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

2 Darstellung von Zahlen und Zeichen

Transkript:

Kap.2 Befehlsschnittstelle Prozessoren, externe Sicht

RA Überblick Einleitung Befehlsschnittstelle Mikroarchitektur Speicherarchitektur Ein-/Ausgabe Multiprozessorsysteme,... CS - RA - SS01 Kap. 2.1 2.1/2

von Neumann-Architektur CPU Speichereinheit RAM/ROM Steuerbus Adressbus Datenbus Ein-/Ausgabeeinheit CS - RA - SS01 Kap. 2.1 2.1/3

2 Befehlsschnittstelle 2.1 elementare Datentypen, Operationen 2.2 logische Speicherorganisation 2.3 Maschinenbefehlssatz 2.4 Klassifikation von Befehlssätzen 2.5 Unterbrechungen 2.6 Prozesse CS - RA - SS01 Kap. 2.1 2.1/4

2.1 Elementare Datentypen, Operationen Bitvektoren Natürliche Zahlen, ganze Zahlen Gleitkommazahlen CS - RA - SS01 Kap. 2.1 2.1/5

2.1.1 Bitvektoren, natürliche Zahlen, ganze Zahlen

Bitvektoren Befehlssätze unterstützen Operationen auf auf Bitvektoren begrenzter Länge Schiebeoperationen Test Bit i, Set Bit i, Clear Bit i, Kopieroperationen, Mustersuche CS - RA - SS01 Kap. 2.1 2.1/7

Schiebeoperationen Verschieben eines Operanden um k Bitstellen Man unterscheidet (gemäß Behandlung der Datenformatgrenzen) logisches Schieben arithmetisches Schieben CS - RA - SS01 Kap. 2.1 2.1/8

srl/sll (shift right/left logical) Verschieben um k Stellen Nachziehen von Nullen sra/sla (shift right/left arithmetic) Verschieben um k Stellen sra zieht von links das Bit mit höchster Wertigkeit nach sla behält Vorzeichen bei. sra=div durch 2 k, sla=mult mit 2 k overflow-bit muß bei sla geeignet gesetzt werden CS - RA - SS01 Kap. 2.1 2.1/9

Schieben um 1 Bit srl1( an 1,..., a0) = ( 0, an 1,..., a1) sll sra sla ( a,..., a ) ( a,...,, 0) 1 n 1 0 = n 2 a0 ( an 1,..., a0) = ( an 1, an 1,..., 1) 1 a ( a,..., a ) ( a, a...,, 0) 1 n 1 0 = n 1 n 3 a0 CS - RA - SS01 Kap. 2.1 2.1/10

Arithmetisches Schieben um 1 Bit Es gilt: sra sla ( an 1,..., a0) = ( an 1, an 1,..., 1) 1 a [ sra a 1 ( an 1,..., a0)] 2 = [ an 1,..., 0] 2 / ( a,..., a ) ( a, a...,, 0) 1 n 1 0 = n 1 n 3 a0 Bei sla muß gegebenfalls ein overflow-flag im Statusregister des Prozessors gesetzt werden. (Nebenbem.: Arithmetische Operationen führen zu Setzen bzw. Rücksetzen von Statusbits in einem Statusregister. Bsp.: overflow flag, carry flag, zero flag, sign flag) 2 CS - RA - SS01 Kap. 2.1 2.1/11

Arithmetisches Schieben um 1 Bit sla ( a,..., a ) ( a, a...,, 0) 1 n 1 0 = n 1 n 3 a0 Lemma: Es gilt: [ sla a falls a n a. Bei sla 1 muß overflow-flag gesetzt werden, genau dann wenn a n a. Es gilt: falls 1 = n 2 1 n 2 [ sla ( 0 n 1 1( an 1,..., a0)] 2 = ( 2 [ an 1,..., a0] 2) mod2 a n 1,..., a0) ( 11,, 0,..., 0),( 1, 0,..., ) 1 2 n noch im darstellbaren (Sonderfall, da Zahlenbereich liegt.) 1( an 1,..., a0)] 2 = 2 [ an 1,..., 0] 2 CS - RA - SS01 Kap. 2.1 2.1/12

Fragen zur internen Sicht Wie kann man das durch HW realisieren? 1-bit Shift --> k-bit Shift? k-bit Shift durch Folge von k 1-bit Shifts Barrel-Shifter zum direkten Shiften um k Bits CS - RA - SS01 Kap. 2.1 2.1/13

Barrel-Shifter für logischen Linksshift Gesucht: Realisierung der Funktion n+ k n shift : B B,( an 1,..., a0, wk 1,..., w0) a ( bn 1,..., b0) wobei sich ( b n 1,..., b0) aus ( a n 1,..., a0) ergibt durch k < w k 1,..., w0 > 2-fachen logischen Linksshift ( n = 2 ). Idee: k 1 i < w k 1,...,w0 > 2= w 2 i= 0 i Zerlege in Folge von k=log n potentiellen Shifts. i Falls = 1, shifte in Schritt i um 2 Bit Falls w i w i = 0, shifte in Schritt i nicht. Multiplexer-Schaltkreis mit k=log n Stufen und O(n log n) Gattern. CS - RA - SS01 Kap. 2.1 2.1/14

Barrel-Shifter für logischen Linksshift Schritt i: c n PSLL 2 i n d w i c n-1-2 i c 0 0 0 c n-1 c 2 i c 2 i -1...... MUX 1 0 MUX 1 0 MUX 0 MUX 1 0 1 c 0 w i Falls w = 0, liefert PSLL 2 idie Eingabe c, sonst (c) i d n-1 d 2 i sll i CS - RA - SS01 Kap. 2.1 2.1/15 d 2 i -1 d 0 2

Barrel-Shifter für logischen Linksshift a n PSLL 2 0 n PSLL 2 1 n w 0 w 1......... PSLL 2 n-1 b n w k-1 CS - RA - SS01 Kap. 2.1 2.1/16

Natürliche und ganze Zahlen Sei a = ( a,..., 0) n 1 a Natürliche Zahlen: < a,..., a Ganze Zahlen: Darstellung im Zweierkomplement n 2 1 1 0 = i n n,..., a ai 2 2 an 1 i= 0 [ a ] n 1 i n 1 0 > = a i 2 i= 0 CS - RA - SS01 Kap. 2.1 2.1/17

Im Vergleich zu anderen Darstellungen Darstellung redundant / irredundant Betrag und Vorzeichen Einer- Komplement Zweierkomplement symmetrischer Zahlenbereich geeignet zum Rechnen redundant ja bedingt redundant ja gut irredundant nein sehr gut CS - RA - SS01 Kap. 2.1 2.1/18

Operationen Addition (vgl. TI 2) Subtraktion (vgl. TI 2) Größenvergleich Multiplikation (z.t. vgl. TI 2) Division Zusätzlich zu beachten: Bei allen Operationen muß eine Überlauferkennung gewährleistet werden, um das overflow flag korrekt zu setzen. CS - RA - SS01 Kap. 2.1 2.1/19

Addition (Wiederholung) Carry-Ripple-Addierer: Addition von n-bit-zahlen mit O(n) Gattern und Tiefe O(n). Conditional-Sum-Addierer: Addition von n-bit-zahlen mit O(n log 3 ) Gattern und Tiefe O(log n) (bzw. in modifizierter Version mit O(n log n) Gattern). Carry-Lookahead-Addierer: Addition von n-bit-zahlen mit O(n) Gattern und Tiefe O(log n). CS - RA - SS01 Kap. 2.1 2.1/20

Carry-Ripple-Addierer (Wdh.) Volladdierer zur Addition von 1-Bit-Zahlen Inputs Outputs A B CarryIn CarryOut Sum Comments 0 0 0 0 0 0 + 0 + 0 = 00 0 0 1 0 1 0 + 0 + 1 = 01 0 1 0 0 1 0 + 1 + 0 = 01 EXOR-Gatter ( out=in 1 in 2 ) OR-Gatter (out=in 1 in 2 ) 0 1 1 1 0 0 + 1 + 1 = 10 1 0 0 0 1 1 + 0 + 0 = 01 1 0 1 1 0 1 + 0 + 1 = 10 A B c in Sum 1 1 0 1 0 1 + 1 + 0 = 10 1 1 1 1 1 1 + 1 + 1 = 11 AND-Gatter (out=in 1 in 2 ) c out Carry-Ripple-Addierer als Kette von Volladdierern CS - RA - SS01 Kap. 2.1 2.1/21

Conditional-Sum-Addierer (Wdh.) berechnet auf den höherwertigen Bitstellen sowohl die Summe als auch die Summe+1 A[7:4] 4 B[7:4] 4 0 ALU C0 X[7:4] 4 A[7:4] 4 B[7:4] A[3:0] 4 B[3:0] ALU 4 Y[7:4] 4 C1 0 2 to 1 MUX 1 C4 Sel CarryOut 1 4 ALU C4 Sel 0 1 2 to 1 MUX CarryIn Result[3:0] 4 Result[7:4] 4 CS - RA - SS01 Kap. 2.1 2.1/22

Carry-Lookahead-Addierer (Wdh.) Addition wird zurückgeführt auf schnelle Berechnung der Carry-Bits. Parallele Präfix-Berechnung, um schnelle Berechnung von generate-/propagate-signalen durchzuführen. Carry-Bits ergeben sich aus generate-/propagate- Signalen. CS - RA - SS01 Kap. 2.1 2.1/23

Addierer für natürliche Zahlen Es muß noch erkannt werden, ob ein Ausgangscarry / Überlauf vorliegt! Situation 1: Addierer liefert Ausgangscarry c n-1 klar Situation 2: Addierer liefert c n-1 nicht, aber c n-2 c n = ( an 1bn 1) + ( an 1 bn 1) cn Situation 3: Addierer liefert weder c n-1 nochc n-2 c ( a b ) + ( a b ) s 1 2 n 1 = n 1 n 1 n 1 n 1 n 1 CS - RA - SS01 Kap. 2.1 2.1/24

Addierer für natürliche Zahlen: Weiterrechnen bei Überläufen wrap-around Arithmetik: Überträge werden weggelassen bei Audio-, Videoanwendungen: Ausgabe des größten darstellbaren Wertes besser ---> Sättigungsarithmetik auf sie kann bei vielen Prozessoren für die digitale Signalverarbeitung umgeschaltet werden CS - RA - SS01 Kap. 2.1 2.1/25

Wrap-around vs. Sättigungsarithmetik Wrap-around Arithmetik Sättigungs- Arithmetik a 1000 1000 b 1000 1000 a+b 0000 1111 Bei Bereichsüberlauf wird der größte darstellbare Wert zurückgeliefert. CS - RA - SS01 Kap. 2.1 2.1/26

Wrap-around vs. Sättigungsarithmetik Wrap-around Arithmetik Sättigungs- Arithmetik a 0001 0001 b 0011 0011 a-b 1110 0000 Bei Bereichsunterlauf wird der kleinste darstellbare Wert zurückgeliefert. CS - RA - SS01 Kap. 2.1 2.1/27

Addierer für ganze Zahlen im Zweierkomplement (1) Es kann ein Addierer für natürliche Zahlen verwendet werden, abzuändern ist lediglich die Überlaufserkennung (vgl. TI 2). Situation 1: Addierer liefert c n-1 und c n-2 overflow= c n 1 cn 2 (vgl. TI 2, Vorlesung) Situation 2: Addierer liefert c n-1 und c n-2 nicht overflow= ( an 1 bn 1) ( sn 1 an 1) (vgl. TI 2, Übung) Also gilt: Überlauf ist unabhängig vom Ausgangscarry c n-1! CS - RA - SS01 Kap. 2.1 2.1/28

Addierer für ganze Zahlen im Zweierkomplement (2) Sättigungsarithmetik ähnlich wie bei natürlichen Zahlen. Fallunterscheidung bei Überlauf: Fall 1: a n b 0 1 = n 1 = Liefere bei Überlauf 011..11 als Ergebnis (größte darstellbare Zahl). Fall 2: a n 1 = b n 1 = 1 Liefere bei Überlauf 100..00 als Ergebnis (kleinste darstellbare Zahl). CS - RA - SS01 Kap. 2.1 2.1/29

Subtrahierer Ganze Zahlen im Zweierkomplement: Verwende Zweierkomplementaddierer wegen a b = a + ( b) [ b b n 1,..., b0] = [ bn 1,..., 0] + 1 Natürliche Zahlen mit n Bit: Verwende (n+1)-bit-subtrahierer für ganze Zahlen (ergänze vor der Subtraktion jeweils 0 als Vorzeichenbit) Überlauf, wenn s n = 1 (wenn Ergebnis negativ). Genauere Betrachtung zeigt: n-bit-subtrahierer für ganze Zahlen genügt! Grund: s n läßt sich rekonstruieren aus a n-1, b n-1 und s n-1 (siehe Übung) CS - RA - SS01 Kap. 2.1 2.1/30

Größenvergleich für ganze Zahlen Bei vielen Rechnern führen arithmetische Operationen zu Setzen bzw. Rücksetzen von Statusbits in einem Statusregister (Condition Code Register). Hier: Vergleiche zwei Zweierkomplementzahlen a und b durch Subtraktion a-b Verwendung von overflow flag, zero flag und sign flag, um Vergleichergebnis zu bestimmen Insbesondere soll Vergleichsergebnis auch beim Auftreten eines Overflows berechenbar sein! ov:= overflow flag sf := sign flag, sf = 1 gdw. s n-1 =1 zf := zero flag, zf = 1 gdw. s i = 0 für i=0,...,n-1 CS - RA - SS01 Kap. 2.1 2.1/31

Größenvergleich für ganze Zahlen ov = n ( an 1 bn 1) ( sn 1 an 1) = ( an 1 bn 1) ( sf a 1) sf = 1 ov = a n 1bn 1 sf ov = a n b = 0 1 n 1 ov sf Kommentar 0 0 kein Überlauf, s = a-b 0 a a a a 0 1 Kein Überlauf, s = a-b neg. 1 0 a, a neg., b 0 n 1 = 1, bn 1 = 0 1 1 a, b 1, a 0, b neg. n 1 = 0 n 1 = < b ov sf b ( a < b) ( a = b) ( ov sf ) > b b ( a b) ( ov a < b ov sf sf ) ( ov Ergebnis a b a < b a < b a > b CS - RA - SS01 Kap. 2.1 2.1/32 zf zf sf ) zf

Größenvergleich Die erwähnten Beziehungen werden vielfach genutzt, um anhand der Werte im Condition-Code-Register Verzweigungsbedingungen abzutesten, die vom Größenvergleich zweier ganzer Zahlen abhängen. (Hierbei ist zu beachten, daß Größenvergleiche wegen der möglichen Überläufe nicht einfach durch Subtraktion und Vorzeichentest des Ergebnisses erfolgen dürfen.) Größenvergleich natürlicher Zahlen: Analog. CS - RA - SS01 Kap. 2.1 2.1/33

Multiplikation natürlicher und ganzer Zahlen... liefert Produkt natürlicher bzw. ganzer Zahlen, soweit dies aufgrund der üblichen festen Datenwortlänge möglich ist n Natürliche Zahlen mit n Bit liegen im Bereich { 0,..., 2 1} 2 Produkt liegt im Bereich { 0,..., 2 n 1 2 n+ + 1} Produkt darstellbar mit 2n Bit Ganze Zweierkomplementzahlen mit n Bit liegen im n 1 n 1 Bereich { 2,..., 2 1} 2n 2 Produkt liegt im Bereich{ 2 Produkt darstellbar mit 2n-1 Bit n 1 2n 2 + 2,..., 2 n 2 + 1} CS - RA - SS01 Kap. 2.1 2.1/34

Multiplikation natürlicher und ganzer Zahlen Lösung auf Maschinenspracheebene: Produkt wird meist durch einen Bitvektor dargestellt, der doppelte Länge wie Argumente hat Auf niederwertige und höherwertige Hälfte des Produkts kann getrennt zugegriffen werden (Kopieren, Abspeichern etc.) Grund für Darstellung des vollen Ergebnisses: Bei softwaremäßigem Multiplizieren sehr großer Zahlen (> n Bit) ist es von Vorteil, das volle Ergebnis der Multiplikation von n-bit- Zahlen zur Verfügung zu haben. Höhere Programmiersprachen: Vergrößerter Zahlenbereich steht meist nicht zur Verfügung Overflow-Behandlung nötig! CS - RA - SS01 Kap. 2.1 2.1/35

Multiplikation natürlicher und ganzer Zahlen Multiplikation ganzer Zahlen wird meist zurückgeführt auf die Multiplikation natürlicher Zahlen. Berechnung der Beträge Multiplikation Berechnung des Vorzeichens des Produkts ( ) Bei negativem Ergebnis: Berechnung des Inversen im Zweierkomplement Ausnahme: Verfahren von Booth a n b 1 n 1 CS - RA - SS01 Kap. 2.1 2.1/36

Zur Erinnerung: Multiplikation natürlicher Zahlen Parallele (kombinatorische) Multiplizierer (TI 2): ( ) ( ) n 1 i n 1 j a 2 2 = i= 0 i b j= 0 j ( ) n 1 j =< a > b 2 = j = n 1 Berechne Partialprodukte P j parallel durch n 2 AND-Gatter. < j= 0 j= 0 n 1 j < a = > = 0 1 0 2 j n b j,..., a bj 14442 4443 P j a > b j 2 n 1 j= 0 j P j Lineares Aufsummieren: O(n 2 ) Gatter, Tiefe O(n logn) Baumartiges Ausummieren: O(n 2 ) Gatter, Tiefe O(log 2 n) Wallace-Tree : O(n 2 ) Gatter, Tiefe O(log n) CS - RA - SS01 Kap. 2.1 2.1/37

Multiplikation natürlicher Zahlen Sequentielle Multiplizierer : Faktoren und Zwischenergebnisse sind in Registern abgespeichert Nutze 1 vorhandenen Addierer zum Aufsummieren CS - RA - SS01 Kap. 2.1 2.1/38

Booth-Verfahren als Verbesserung der Multiplikation nach der Schulmethode Sequentielle Multiplikation nach der Schulmethode x 0 0 1 1 y 0 1 0 1 x y 0 0 0 1 1 shift 0 0 0 1 1 x y 1 0 0 0 0 add 0 0 0 1 1 shift 0 0 0 0 1 1 x y 2 0 0 1 1 add 0 0 1 1 1 1 shift 0 0 0 1 1 1 1 x y 3 0 0 0 0 add 0 0 0 1 1 1 1 Insgesamt werden n Additionen in n Takten ausgeführt, insbesondere Additionen mit Null sind überflüssig. CS - RA - SS01 Kap. 2.1 2.1/39

Verfahren von Booth A. Booth. A Signed Binary Multiplication Scheme. Q.J.Mech.Appl.Math. 4:236:240 (1951) Beobachtung Enthält der Multiplikator y einen Nullblock der Länge k, so kann die Multiplikation durch ein Shift der Zwischensumme um k Stellen beschleunigt werden. Enthält der Multiplikator y einen Einsblock von Stelle u bis Stelle v, z.b.: 0...01...10...0 so können die zum Einsblock gehörigen (v-u+1) Additionen der Multiplikation nach Schulmethode wegen <0...01...10...0>=2 v+1-2 u durch eine Addition an der Stelle v+1 und eine Substraktion an der Stelle u ersetzt werden v u CS - RA - SS01 Kap. 2.1 2.1/40

Verfahren von Booth Arithmetische Operationen sind nur bei 0 1 und 1 0 Wechsel im Multiplikator erforderlich. Um diese Wechsel zu erkennen, muß man in Schritt i noch das Bit y i-1 des Multiplikators zusätzlich betrachten. Man erhält die Rechenvorschrift y i y i-1 Operation 0 0 shift 0 1 add; shift 1 0 sub; shift 1 1 shift mit y -1 =0 CS - RA - SS01 Kap. 2.1 2.1/41

Verfahren von Booth: Beispiel x y 3 y 2 y 1 y 0 Operation Zwischenergebnis 0010 0 1 1 0 0000 shift 0000 0 sub (add 1110) 1110 0 shift 1111 00 shift 1111 100 add 0010 0001 100 shift 0000 1100 Daß das Verfahren von Booth auch für Zweierkomplementzahlen das richtige Ergebnis liefert, ist nicht unmittelbar einsichtig... CS - RA - SS01 Kap. 2.1 2.1/42

Korrektheit des Verfahrens von Booth Satz Das Verfahren von Booth multipliziert sowohl positive als auch negative Zahlen im Zweierkomplement. Beweis Wir betrachten im Verfahren von Booth an jeder Stelle die Differenz (y i-1 -y i ) und berechnen das Multiplikationsergebnisses durch die Summe S = (y -1 -y 0 ) 2 0 <x> + (y 0 -y 1 ) 2 1 <x> +... (y n-3 -y n-2 ) 2 n-2 <x> + (y n-2 -y n-1 ) 2 n-1 <x> = <x> (-y n-1 2 n-1 + y n-2 2 n-2 +...+ y 1 2 1 + y 0 2 0 ) = <x> <y> y i y i-1 Operation 0 0 shift 0 1 add; shift 1 0 sub; shift 1 1 shift mit y -1 =0 CS - RA - SS01 Kap. 2.1 2.1/43

Hardwarerealisierung der Methode von Booth Multiplikation wird unter der Verwendung der Additionshardware implementiert: Multiplicand 32 bits 32-bit ALU 32 bits Multiplier 32 bits Shift right 32 bits Product 64 bits Shift right write Control Vor der j-ten Iteration nur die Belegung der j signifikantesten Bitstellen von Bedeutung CS - RA - SS01 Kap. 2.1 2.1/44

Billigere Realisierung Multiplicand 32 bits 32-bit ALU 32 bits 32 bits Product 64 bits Shift right write Speichere den Multiplikator in die hinteren 32 Bitstellen Control CS - RA - SS01 Kap. 2.1 2.1/45

Verfahren von Booth Was haben wir bisher durch das Verfahren von Booth gewonnen? Einsparung von Additionen bzw. Subtraktionen durch Berücksichtigung von 0-Blöcken bzw. 1-Blöcken Aber: Weiterhin n Takte (n Shifts) nötig! Verbesserung: Zusammenfassen von k 1-Bit-Shifts in k Takten zu k-bit-shifts in einem Takt Barrelshifter Dazu muß am Ende des (geshifteten) Multiplikators die Länge des aktuellen 0- bzw. 1-Blocks bestimmt werden. Benutze dazu Prioritätsencoder CS - RA - SS01 Kap. 2.1 2.1/46

Prioritätsencoder k n = 2 x n-1... x 0 PE_FIRST_0... x n-1... x 0 PE_FIRST_1... z y k-1 y 0 z y k-1 y 0 z = 1, < y >= i, falls i : xi = 0 und j < i : x j = 1 z = 0, y bel., falls xi = 1 i z = 1, < y >= i, falls i : und j < i : x j = z = 0, y bel., falls xi = 0 i x i = 1 0 Prioritätsencoder lassen sich mit O(n) Gattern in Tiefe O(log n) realisieren. CS - RA - SS01 Kap. 2.1 2.1/47