Академический Документы
Профессиональный Документы
Культура Документы
SystemgerechteAlgorithmen
Prof.Dr.Ing.DirkTimmermann
2/1SWS,5.bzw.7.Semester,allezweiJahreangeboten
InstitutfrMikroelektronikundDatentechnik, IEF,UniversittRostock
Stand WS 2008/2009
Literatur
PeterPirsch ArchitekturenderdigitalenSignalverarbeitung B.G.Teubner,Stuttgart ISBN:9783519061571 BerozParhami ComputerArithmetics,AlgorithmsandHardwareDesigns OxfordUniversityPress ISBN:9780195125832 IsarelKoren ComputerArithmeticAlgorithms PrenticeHALL,NewJersey ISBN:9781568811604 AmosR.Omondi ComputerArithmeticSystems PrenticeHall,NewYork ISBN:9780133343014
Inhaltsverzeichnis
1 ZAHLENDARSTELLUNGEN
1.1 Stellenwertdarstellungen 1.1.1 DarstellungeinernatrlichenZahlmitnZiffern 1.1.2 DarstellungeinergebrochenenZahl(positiv) 1.1.3 WahlderZahlenbasisr 1.2 DarstellungvonvorzeichenbehafteterZahlen 1.2.1 Betrags/Vorzeichendarstellung(signmagnitude) 1.2.2 EKbzw.Einerkomplementdarstellung(allg.(r1)Komplement) 1.2.3 Zweierkomplementdarstellung(allg.rKomplement) 1.2.4 RedundanteZahlensysteme 1.3 Rundung 1.3.1 RundendurchAbschneiden(truncation) 1.3.2 RundenzurnchstliegendenZahl(roundtonearest,normalesRunden) 1.3.3 RundenzurnchstengeradenZahl(roundtonearesteven) 1.4 berlauf(overflow) 1.4.1 berlaufbeiZweierkomplementzahlen 1.4.2 berlaufbeiCarrySaveZahlenDarstellungen 1.4.3 berlaufbeivorzeichenbehafteterredundantbinrerZahlendarstellung(SD) 1.4.4 Waskannmantunbeieinemechtenberlauf? 1.5 EinfacheOperationen
5
5 5 5 5 6 6 6 7 8 14 15 15 16 17 17 18 19 20 20 21 21 21
2 ADDITION&ADDIERER
2.1 GrundbausteinederAddition 2.1.1 1bitAddierer 2.1.2 Halbaddierer(2,2)Zhler 2.1.3 Volladdierer(3,2)Zhler 2.1.4 (m,k)Zhler 2.2 bertragsbasierendeAddierer 2.2.1 RippleCarryAddierer(RCA) 2.2.2 CarrySkipAddierer(CSKA) 2.2.3 CarrySelectAdder(CSEL) 2.2.4 ConditionalSumAdder(CSUM) 2.2.5 CarryLookaheadAdder(CLA) 2.2.6 AsynchroneAddierer 2.3 bertragsfreieredundanteAddierer 2.3.1 CarrySaveAdder(CSA) 2.3.2 VorzeichenbehafteterAddierer(RBA) 2.4 MehroperandenAddierer 2.4.1 MehroperandenAdditionmitAddiererArrays 2.4.2 (m:2)Kompressoren
24
24 24 24 24 25 26 27 27 28 29 29 30 30 30 31 33 33 34 3
2.4.3
MehroperandenAddierermitAddiererBumen
35 36 36 36 37 37
2.5 SequentielleAddierer 2.5.1 LSBfirstserielleAddierer 2.5.2 MSDfirstserielleAddiererDigitOnlineArithmetik 2.5.3 Akkumulatoren 2.6 EinfacheaufAdd/SubbasierendeOperationen
3 MULTIPLIKATION
3.1 Grundlagen 3.1.1 VorzeichenloseMultiplikation 3.1.2 ZKMultiplikation 3.2 3.3 3.4 3.5 3.6 Vorzeichenloser'Baum'ArrayMultiplizierer VorzeichenbehafteterPezarisArrayMultiplizierer BoothMultiplizierer BoothWallaceMultiplizierer BewertungderverschiedenenMultiplizierer
38
38 38 39 39 40 40 41 41
4 DIVISION
4.1 4.2 4.3 4.4 4.5 4.6 Definition Grundlagen RestoringDivision(wiederherstellendeDivision) NonRestoringDivision(nichtwiederherstellendeDivision) SRTDivision MultiplikativeDivision[Anderson,1960]
42
42 42 43 43 45 46
5 BERECHNUNGELEMENTARERFUNKTIONEN
5.1 KlassifikationderMethoden
47
47 48 48 49 50 51 51 52 53
5.2 CORDIC 5.2.1 DrehungeinesVektors 5.2.2 ZerlegungdesDrehwinkelsinElementardrehwinkel 5.2.3 Rotation&Vectoring 5.2.4 VerallgemeinerungaufandereOperationen 5.2.5 bersichtderCORDICFunktionen 5.2.6 Architekturen 5.2.7 CORDICinredundanterZahlendarstellung
6 ANWENDUNGENUNDBEISPIELE
6.1 DigitaleFilter
54
54
1 Zahlendarstellungen
1.1 Stellenwertdarstellungen
Beim Stellenwertverfahren ergibt sich der Wert der Zahl als Summe der Produkte aus Ziffernwert und Stellenwert.
1.1.1 DarstellungeinernatrlichenZahlmitnZiffern
A=an1an2...a1a0 ai{0,1,...,r1}(Ziffern,Digit) r=BasisderZahlendarstellung(Radix) r=2binre r=3ternre r=8oktale r=16hexadezimale Zahlenwert=V(A)= darstellbarerZahlenbereich:0V(A)<rn
a r
i =0 i
n 1
(1.1.1)
1.1.2 DarstellungeinergebrochenenZahl(positiv)
A=an1an2...a1a0.a1...am
Zahlenwert=V(A)=
a r
i
n 1
1.1.3 WahlderZahlenbasisr
blich:r=2binresZahlensystem ImComputersystemsehrleichtdurchzweiwertigeLogikdarzustellen UVDDVSS IImaxImin Frage:WasisteineeffizienteZahlenbasisineinembitorientiertenSpeicher? speicherplatzsparend frn>1immeraufBasisr=2zurckfhrbar z.B.r=4, ai{0,1,2,3} 2ZifferninZahlenbasisr=2(ai{0,1})
Speicher [Bit]
3 2 1
r 2 3 4 5 6 7 8
FreinenpositivenZahlenwertVbentigtmanbei
r = 2 : log 2 (V ) r = 3 : log 3 (V )
BitsanSpeicherplatz.
1.2 DarstellungvonvorzeichenbehafteterZahlen
BeiDarstellungvonpositivenZahlengengtdieDarstellungnach1.1.1und1.1.2. BeizustzlichennegativenWertengibtesverschiedeneMglichkeiten.
1.2.1 Betrags/Vorzeichendarstellung(signmagnitude)
HinzufgeneinesVorzeichenbits(z.B.0=pos,(r1)=neg)zumBetragderZahl. frpositive,(n1)stelligeganzeBinrzahlen ASM=0an2an3...a1a0 ASM=1an2an3...a1a0 frnegative,(n1)stelligeganzeBinrzahlen symmetrischumNull,aberdieNullexistiertdoppelt,pos.&neg. rn1<V(A)<rn1 V(ASM)= ( 1)
an 1
ai r i
i =0
n2
Nachteil: Keine einheitliche Behandlung positiver und negativer Zahlen in den Arithmetikeinheiten (z.B. Addierern)mglich,aufgrundderdoppeltenNull.
1.2.2 EKbzw.Einerkomplementdarstellung(allg.(r1)Komplement)
DienegativeZahlwirddurchBildungdesStellenkomplements a i
= r 1 ai erzeugt.
fr r = 16 : E = 15 E = 15 (14) = 1
an1 r n 1 n 2 V ( Ar 1 ) = (r 1) + ai r i r 1 i =0
1.2.3 Zweierkomplementdarstellung(allg.rKomplement)
Vorabrechnung: Zahlenwert=V(A)= AusderIdentittfrgeometrischeReihemitElementenri n 1 r n 1 i r = r 1 i =0 erfolgtnachUmformung: n 1 n r = (r 1) r i + 1 i =0 EinsetzeninGleichung(1.2.1)ergibt:
n 1 i =0
a r
i
(1.2.1)
V(A)= r +
n
(r 1 a ) r
i =0 i
n 1
+ 1
V(A)= r +
n
a r
i =0 i n2 i =0
n 1
+ 1 (1.2.2)
n 1
) + ai r i (frbinresSystem)
Ar = r n A
r 2 r negativesA:Vorzeichenstelle=1imBinrsystembzw. 2
positivesA:Vorzeichenstelle=0imBinrsystembzw. < 7
V ( A) < r n1
1.2.4 RedundanteZahlensysteme
AlssolchewerdenZahlendarstellungenbezeichnet,diemehralseineDarstellungfreineZahlermglichen. StrenggenommenwredasauchSMund(r1)Komplementdarstellung,dadieNullmehrfachdarstellbarist. EigentlichwerdendabeijedochdiefolgendenSystemegemeint:
1.2.4.1 ZahlensystememitvorzeichenbehaftetenZiffern(SignedDigit)
JedeeinzelneZifferhateineigenesVorzeichen ai{,...,1,0,1,...,} Esgilt:
r 1 , r 1 2
x=ceiling,kleinsteganzeZahlx
a r
i =0 i
n 1
Definition: Esliegteinsymmetrisches,redundantesvorzeichenbehaftetesZahlensystemwenn=vor,ansonsten einasymmetrisches. EinsymmetrischesvorzeichenbehaftetesZahlensystemhatmaximale(minimale)Redundanzfr: r 2 3 Zahlenwerte {1,0,1} {2,1,0,1} {1,0,1,2} {2,1,0,1,2} {2,1,0,1,2}minimaleRedundanz {3,2,1,0,1}nichtmglich! {3,2,1,0,1,2,3}maximaleRedundanz =r1
r 1 = 2
BetrachteimFolgendenausschlielichr=2: redundantbinresZahlensystem ai{1,0,1} fr nstellige Zahl 3n mgliche Darstellungen, aber nur 2n+11 unterschiedliche Zahlenwerte (wg. negativemZahlenbereich) 8
Bsp.frn=3:
310 = 01 1
= 101 =1 1 1
01 1 12 = 710 = 1001 = 8 1
WeitereUmformungen:
01 10 = 0010 01 10 = 0010
FormalfrdennegativenFall:
2i + k 1 + 2i + k 2 +...+ 2i +1 + 2i = 2i
HinweisfrUmwandlung: VorzeichenloseDarstellungmitnDigits CSDDarstellungmit(n+1)Digits SDDarstellungmitnDigits CSDDarstellungmitnDigits Definition: Eine Canonical Signed Digit (CSD)Zahl ist eine SDZahl mit minimaler Anzahl von "nonzero"Digits und derzustzlichenBedingung,dasskeinebenachbartenDigitsnonzerosind. n 1 ! a = minimal i = i 0 ! fr1in1 a i a i 1 = 0 Die Umwandlung einer SDZahl in die entsprechende CSDDarstellung wird von rechts nach links unter AnwendungdergezeigtenStringUmformungendurchgefhrt. Dabei neu entstehende Einserketten sind erneut umzuwandeln ist also ein sequentieller Prozess mit ggf. mehrerenDurchlufen. Ggf.istdieStellenanzahlum1zuerhhen. Beispiel: minimaleDarstellungfrn=3(vorzeichenlos) 710=1112
a)
36610
= 0001 0110 1110 = 0001 0111 0010 = 0001 1001 0010 = 0010 1001 0010
b)
-21310
= 1111 0010 1011 = 1111 0010 1101 = 1111 0011 0101 = 1111 0101 0101 = 0001 0101 0101
DasCSDRecodingerzeugtdieminimaleAnzahlvonnonzeros,istjedocheinsequentiellesunddamitlangsames erfahren. Die Zahl muss von rechts nach links abgearbeitet werden, evtl. auftretende bertrge 1 oder 1 sind entsprechendinhherenStellenzubercksichtigen. Formallsstsichdasauchwiefolgtbeschreiben: Dualzahl CSDZahl ai+1ai ci ai ci+1 Bemerkung 000 0 0 KettevonNullen 010 1 0 eineeinzelne1 100 0 0 KettevonNullen 110 1 1 BeginneinerEinserkette 001 1 0 EndeeinerEinserkette 011 0 1 KettevonEinsen 101 1 1 eineeinzelneNULL 111 0 1 KettevonEinsen Dieminimale/mittlere/maximaleAnzahlvonnonzerosnachCSDRecodingist: 0(trivial!)/~ n 3 /
n +1 2
Wiemansieht,istsievonderZahlabhngigunddamitvariabel:Anzahldernonzerosistf(Zahl) FrdieschnelleAnwendunggeeignetistdervonBooth1951vorgeschlagenegleichnamigeAlgorithmus: Dualzahl SDZahl aiai1 ai Bemerkung 00 0 KettevonNullen 11 0 KettevonEinsen 10 1 Beginn einer Einserkette (mit a1=0) 01 1 EndeeinerEinserkette
10
Anwendung beliebig von links nach rechts oder umgekehrt oder fr alle Bits parallel da kein bertrag auftritt. Nachteiljedoch:eswirdnichtimmerdieminimaleFormgefunden Beispiel:
0 0 1 0 1 0 1 0 1 (0)
0 1 1 1 1 1 1 1 1
Dasliegtdaran,dassisolierteEinsennichtgesondertbehandeltwerden. Eine Verbesserung gelingt hier durch den modifizierten BoothAlgorithmus, der berlappend jeweils 3 Bit(overlappedbitscanning)untersucht.
a7
a6
a5
a4
a3
a2
a1
a0
a-1(=0)
a'7
Dualzahl aiai1ai2 000 010 100 110 001 011 101 111
a'6
a'5
a'4
a'3
a'2
a'1
a'0
SDZahl r=2 r=4 aiai1 00 0 01 1 10 2 01 1 01 1 10 2 01 1 00 0 Bemerkung KettevonNullen einzelneEins BeginneinerEinserkette BeginneinerEinserkette EndeeinerEinserkette EndeeinerEinserkette eineeinzelneNull KettevonEinsen
= =
0 0
0 1
1 2
0 1
0 0
1 2
Beispielfra)beimSDRecoding:
Offensichtlich keine CSDZahl, da benachbarte nonzeros existieren, aber es wurde von 6 auf 4 nonzeros reduziert. 11
VergleichderUmkodierungsverfahren METHODE Verfahren Min CSD Sequentiell 0 Booth modified Booth Parallel Parallel 0 0
#nonzeros Max ~n 3 ~n 3 ~n 3
+1 n2
Kommentar imvorausbeibekanntenZahlen keineAnwendung onlinebeibeliebigenZahlen(Multiplizierer) Hlfte der Chipflche kann eingespart werden,wegenmehrNullen
2
n +1
UmwandlungvonSDZweierkomplement (1) SDZahl D in 2 Dualzahlen D+ und D aufspalten, wobei D+ nur dort Eins ist, wo D positive Ziffern hat (D nur dortEinsen,woDnegativeZiffernhat). (2) AZK=D+D Beispiel:
010111 = 16 + 4 2 + 1 = 1310
D+ = 000101 D- = 010010 000101 + 101101 + 000001 == =========== 110011ZK = -0011012 = -1310 LaufzeitderUmwandlungistgleicheinerAddiererlaufzeitbernBit,unddamitlangsam! DarstellungvonredundantbinrenZahlen 3Werte{0,1,1}werdenin2Bitkodiert Speicherbedarf/AnzahlLeitungen/Verarbeitungseinheitenverdoppelnsich Mit4Zustndenbei2BitsindmehrereKodierungenmglich! 2KodierungenwerdeninderPraxisverwendet(aberimPrinzipauchanderemglich). 12
a 0 1 1 Vorteil
Code1(SignValue) SV 00 01 11 intuitivzuerfassen(SMDarstellung)
VorteilderredundantenDarstellung: Addition(Subtraktion)istohneCarry!(ErklrungbeiAddierer) schnellerbeiallenadditionsbasiertenAlgorithmen beifastallenAlgorithmenwiewirspternochsehenwerden Nachteile: mehrRessourcen Grenvergleich(z.B.<,=,>)aufwendiger erstnachUmwandlunginsZweierKomplement(auerbei=,wga=bab=0und0isteindeutig) langeAddiererlaufzeit Strategie: SovielwiemglichimredundantenZahlensystemerledigenunderstsosptwiemglichzurckwandeln!
Laufzeit
ZK -> SD
Operation 1
SD -> ZK
log2(n)
13
1.2.4.2 CarrySaveZahlensystem
Abgeleitet/entstandenausAddierern!
an-1 bn-1 an-2 bn-2 a1 b1 a0 b0
cn
VA
VA
VA
VA
c0
sn-1
sn-2
s1
s0
an-1
bn-1
an-2
bn-2
a1
b1
a0
b0
c0 HA HA HA HA
cn
sn-1 cn-1
sn-2
c2
s1
c1
s0 c0
a 2
i =0 i
n 1
Diese Addition in CarrySaveDarstellung bentigt nur 1. VALaufzeit, aber auch 2 Speicherbits pro Stelle! ZwischenCSundSDDarstellungbestehtprinzipiellkeinUnterschied +CS:entstehtalsZahlendarstellungamAusgangvonHA +SD:"natrliche"Vorzeichendarstellung
1.3 Rundung
Beispiel: 2nBitVektorensindzumultiplizierenunddas(2n)BitErgebnissollaufmBitgerundetwerden. Rundungsverfahrenwerdenbewertetnach GenauigkeitderErgebnisse ArtdesRundungsfehlers(numerischeEigenschaften) Kosten(Aufwand) Geschwindigkeit(HWspezifisch) Gegebensei: A=an1an2...a1a0.a1...ad B=bn1bn2...b1b0=A=AB Gesucht:BalsRundungsergebnisvonA Ziel:sollmglichstkleinsein
14
1.3.1 RundendurchAbschneiden(truncation)
Btrunc=an1an2...a1a0 Bias(mittlererFehler)= =
1 1 + d +1 2 2
d=5(frdenBeweis)
bias =
DasVorzeichenberuhtaufderTatsache,dassimmerabgeschnittenwird,derBiasalsoimmernegativist! DasDiagrammverdeutlichtdenunsymmetrischenBias:
4 3 2 1
1.3.2 RundenzurnchstliegendenZahl(roundtonearest,normalesRunden)
NeuesAbilden: A= A + 0.510 = A + 0.12 (1) Additionvon0.5 (2) Abschneiden(dazuAdditionhufiginvorhergehendeOPeinbauenmitCin,0=1) Bround=an1an2...a1a0 max.Abschneidefehlerfr: A=0.102 Bround=1max=0.1=2d min.Abschneidefehlerfr: A=0.00...0min=0 15
2 d = 2 ( d +1) Bias= 2
4 3 2 1
FastsymmetrischerBias(Ursache:AufrundenfrA=Y.1000) Abhilfe wird durch ein abwechselndes Auf und Abrunden geschafft, z.B: zur nchsten geraden oder ungeradenZahl.
1.3.3 RundenzurnchstengeradenZahl(roundtonearesteven)
Bias=0(symmetrisch)
4 3 2 1
VerwendetimIEEE754FloatingPointFormat
16
1.4 berlauf(overflow)
Trittauf,wenndieZahlnichtindiezurVerfgungstehendeWortbreitepasst.
000...0 011...1 100...0 111...1 2 n-1
-2 n-1
1.4.1 berlaufbeiZweierkomplementzahlen
ZurErinnerung:2n1V(Ar)<2n1 berlaufbeiAddition(ZweierkomplementZahlen): Falla)2pos.SummandenSummenegativ(dabertragausVorzeichenstelleverworfenwird)
(a
n 1
Fallb)2neg.SummandenSummepositiv
(a
n 1
Ein Vergleich mit allen anderen mglichen Kombinationen zeigt, dass ein berlauf durch CinCout in der Vorzeichenstelleerkanntwerdenkann. Hufig erfordern die zu realisierenden Anwendungen (Signalverarbeitung, ...), dass kein berlauf sondern eine Sttigungzumkleinsten(10...0)bzw.zumgrtenWert(01...1)vorgenommenwird:
an-1 bn-1
cout
VA
cin
sn-1
Sttigungsfunktion
overflow
sn-1
FrnichtredundanteDarstellungenisteinberlaufeindeutigfeststellbar!
17
1.4.2 berlaufbeiCarrySaveZahlenDarstellungen
ImGegensatzzunichtredundantenDarstellungexistierenzweiTypenvonberlufen,einechterberlaufund einPseudoberlauf. Bsp.: ! 0.510+(0.510)+0 = 0 carry sum Ergebnis 20 0 1 0 0 21 1 1 0 1 0 1 0 1 0 22 0 0 0 0 0 210 falschesZwischenergebnis! kannaberunterdrcktwerden 0.510 0.510 0 0
hiermitNULLauffllen
Dieses falsche Ergebnis in CSDarstellung wrde jedoch bei einer Umwandlung in eine ZKDarstellung mittels AdditionbeiderVektoren(VectorMergingAddition,VMA)wiederdierichtigeSummeergeben. 1.00 1.00 1|0.00=0 bertragflltweg.. DiesesfalscheZwischenergebnis(2)wrdeindiesemFall(derUmwandlung)nichtstren. Weitere arithmetische Operationen wrden jedoch ein falsches Ergebnis bewirken! Z.B. Multiplikation beider Vektorenmit0.510=>rechtsschiebenmitvorzeichenrichtigerErweiterung(signextension) (0.510+(0.510)+0)*0.510=0 1.00:21.10=0.510 1.00:21.10=0.510 PSEUDOBERLAUF!! 11.00=110 D.h., nach der Umwandlung in die nichtredundante Darstellung wird der Fehler offensichtlich, der durch berlaufeffekte entstanden ist, obwohl die Wortbreite an sich zur Darstellung der Ergebnisse ausreichen wrde. DieserPseudoberlaufistgekennzeichnetdurch: CinCout/(S0C1)(sieheauch1.4.1) 18
c1 , wenn c1 c0 s 0 sonst
Realisierung:S0(C1C0) Diese EXOROperation kann ohne Geschwindigkeitsverlust in die normale logische Funktion des Addierers in der Vorzeichenstelle integriert werden. Anwendbar ist diese Korrektur des Pseudoberlaufes nur unter der Bedingung,dassdaskorrekteErgebnisindieentsprechendeZKDarstellungpasst,worausS0C1folgt. AllgemeinkanneineReduktionfhrenderStelleneinerCSZahlwiefolgterreichtwerden: Voraussetzungist,dassdieCSZahlindenWertebereichderentsprechendenZKZahlpasst: 1C+S12(m1)
Danngilt:
mit S 0 ' =
S 0 , wenn S1 C1 S 0 sonst
und
1.4.3 berlaufbeivorzeichenbehafteterredundantbinrerZahlendarstellung(SD)
Ein quivalentes Schema wie in der CSDarstellung lsst sich angeben, vgl. mit Abschnitt zur vorzeichenbe haftetenredundantbinrenDarstellungundAddition. WiebeiCStretenechterberlaufundPseudoberlaufauf. Entscheidend fr das berlaufverhalten sind die MSDSummenstellen sn1 und das abgeschnittene Zwischen bertragsbitdn. EineAnalysedermglichenFllefrzurKorrekturvorschriftfrsn1:
19
dn 1 1 1 N N N 0
sn1 N 0 1 N 0 1 X
sn1 1
N sn1
DiePseudoberlaufkorrekturkannindieMSDStelledesRBAohneGeschwindigkeitsverlustintegriertwerden. DerechteberlaufmussdurchModifikationaufSystem/Algorithmusebeneverhindertwerden. Der potentielle berlauf wrde zur Unterscheidung vom echten berlauf eine Inspektion aller niederwertigen Digitserfordern(HWAufwand). Durch Beschrnkung des mglichen Wertebereiches auf Werte mit Betrag < 2n1 kann auch der potentielle berlaufvermiedenwerden.
1.4.4 Waskannmantunbeieinemechtenberlauf?
VorheraufSystemebenesimulieren Wortbreitenabschtzungnachoben HWaufdieseWortbreiteauslegen Wennzuteuer:Sttigung?Echtenberlauferkennenundbeheben?
1.5 EinfacheOperationen
Operation Schieben Vorzeichenlos ZK Rotation Erweitern Vorzeichenlos ZK Sttigung 20 Vorzeichenlos ZK l an2...a00 r 0an1...a1 l an1an3an4...a00 r an1an1...a1 l an2...a0an1 r a0an1...a1 l 0an1...a0 r an1...a00 l an1an1...a0 r an1...a00 jeweilsum1.Stelle Kommentar arithmetischesSchieben SchiebenumkBitposition,n=konstant RotierenumkBitposition,n=konstant ErweiterungderWortbreiteumkBitvonnauf(n+k)Bit(SignExtensionbeiZKDarstellung) SttigungzumjeweilshchstenWertnachberlauf
an1...an1 an1an1...an1
00...0bzw.11...1 10...0bzw.01...0
Annahme: Inverter,Buffer: A=0,T=0(alsovernachlssigen) Einfache2InputGatter(AND,NAND,OR,NOR): A=1,T=1 Spezielle2InputGatter(XOR,XNOR): A=2,T=2 Komplexgatter(zusammengefasstausEinfachgatternundmEingangsgatter): A=m1,T=log2(m)(BAUM!) Verdrahtungnichtbetrachtet,dadurchsehridealisiert,nurzumgrobenrelativenVergleich
1.6.2 ZeitundFlchenbetrachtung
Gegebensei: Eingngeai Ausgngezi Funktionf(mitgraph.Symbolh)
1.6.2.1 NichtrekursiveFunktion
a3
z3
z2
z1
z0
A=O(n) T=O(1)
21
1.6.2.2 RekursiveFunktion
AusgangziwirdbestimmtdurchalleEingngeakmitki a) ineinzigerAusgangz=zn1 i=0...n1 ti=f(ai,ti1) t1=
0 1
wahlweise
z=ta Fall1:fistnichtassoziativ
a3 a2 a1 a0
z3
FALL2:fistassoziativ
a3 a2 a1 a0
z3
wahlweise
FALL1:fistnichtassoziativ
a3 a2 a1 a0
z3
z2
z1
z0
FALL2:fistassoziativ
a3 a2 a1 a0
z3 z2 z1 z0
23
2 Addition&Addierer
2.1 GrundbausteinederAddition 2.1.1 1bitAddierer
AddiererbiszumBitsgleicherWertigkeit,also1BitZahlen ErgibtKBitSumme,Klog2(n)+1 IstquivalentzueinemEinsenZhler(m,k)Zhler
2.1.2 Halbaddierer(2,2)Zhler
a+b=2cout+s Summe: s=ab bertrag: cout=ab
s s
2.1.3 Volladdierer(3,2)Zhler
a+b+cin=2cout+s ntzlicheHilfsgren: g=ab;generate(Cout) p=ab;propagate(Cin) C0=ab C1=ab s=abcin=pcin cout =(ab)(acin)(bcin) =(ab)((ab)cin)) =g(pcin) =(pg)(pcin) =(pg)(pcin) =(cinC0)(cinC1) JederderbooleschenAusdrckeergibteinebesondersfreinebestimmteTechnologiegeeigneteRealisierung (siehenachfolgendeAbbildungen).
24
a a b
a b
HA p HA
cout
FA
cin
cout
cin
cout
cin
s s
a b a b a b
p cin cout
c0
c1 cin
s s
MultiplexersehreinfachinCMOSrealisierbardurchTransmissionGatessehrschnell.
A=7,TSum=4,Tout=2
2.1.4 (m,k)Zhler
AdditionvonmBits
a0 a1
am-1
... ( m, k ) ...
sk-1
s0
IstfrgewhnlichausVolladdierernaufgebaut. Die Assoziativitt der Addition erlaubt die Umsetzung der linearen in eine Baumstruktur schneller beigleicherVolladdiererAnzahl 25
Beispiel:(7,3)Zhler
a 0 a1 a 2 a 3 a 4 a 5 a 6
a0 a1 a2
a3 a 4 a 5 a 6
VA
VA
VA
VA
VA
VA
VA
A = 28 T = 10
s0
VA
s2 s0
s1
s2
s1
linear
Baum
2.2 bertragsbasierendeAddierer
Addiert2nBitOperandenAundBundeinoptionalerCINdurchbertragsweiterschaltung DieSummeisteinenichtredundante(n+1)BitZahl.
A + B + cin = S + cin 2n
A B
cout
CPA S
cIN
26
2.2.1 RippleCarryAddierer(RCA)
serielleAnordnungvonVolladdierern(VA) einfachster,langsamsterundkleinsterCarryPropagateAddierer(CPA)
...
a1 b1 VA s1
a0 b0 VA s0 cIN
cn-1 ... c2
c1
2.2.2 CarrySkipAddierer(CSKA)
TypA Idee: stelle fr jede Gruppe parallel fest, ob ein einkommendes cIN in diese Gruppe ein cout aus dieser Gruppe generiertoderdirektbereine'Umleitung'dieseGruppeberspringenkann(skip+propagate)
an-1: j bn-1 : j ai-1: k bi-1: k a k-1: 0 b k-1: 0
...
cout CPA cj
0 ci 1
c'i
...
sn-1: j
Pi-1 : k
s k-1: 0
ci = ( Pi 1:k c ) ( Pi 1:k c k ) Wobei: Pi 1:k = pi 1 pi 2 ...1 pk =GroupPropagate(GesamtesGruppenbzw.BlockPropagate) (erfordertkInputANDGatterproGruppe) pi = ai bi =BitPropagate Funktionder Pi 1:k :
' i
Pi 1:k = 0 ck beeinflusst ci' nicht ci aufAusgangdesMultiplexersdurchschalten Pi 1:k = 1 ck beeinflusst ci' nichtdeshalbkann c k sofortdieseGruppe'skippen'undaufdenAusgang
desMultiplexersdurchgeschaltetwerden Konsequenz:lngsterPfadineinerbeliebigenGruppe=kBits DeshalbergibtsichfolgendeFrage: WelcheGruppengrekergibtminimaleVerzgerungszeit? Annahme:FesteskfralleGruppenn/kgleichgroeGruppen TMUX=1,Tcarry=2
27
an-1: j bn-1 : j
ai-1: k
bi-1: k
a k-1: 0 b k-1: 0
...
cout CPA cj
0 ci 1
c'i
...
sn-1: j
Pi-1 : k
si-1: k
s k-1: 0
= 4k 2 + nk 1 2
' TCSKA (k ) = 4 + ( n k 2 ) = 0
4 = n k 2
k opt =
1 n (optimaleGruppengre) 2
A = 8n , T = 4 n
2.2.3 CarrySelectAdder(CSEL)
TypA Idee: Verdopple je KBit Gruppe den CarryPfad und berechne parallel je ein cout und sout fr beide Flle cIN = 0 undcIN=1 daseintreffendecINvondervorhergehendenGruppewhltnurnochdasrichtigeErgebnisausundschaltet diesesdirektweiter(select)
s.bung
TCSEL = 0( n ) 2,8 n
28
MglicheVerbesserungen: schnellereCPAjeGruppe Variable Gruppengre k, berlappe TCPA + TMUX mit TCPA der folgenden Gruppe in etwa GruppengrevomLSBzumMSBsjeweilsum1erhhen,z.B.28BitAddierer:7654321 o TCSELdanngleichderLaufzeitderletztenGruppe+SummenmuxLaufzeit Berechnunginderbung o VergleichevariableGruppengrevonCSKundCSEL AufwandgegenberRCA: 1Summenmux/Bit+[CPA+Carrymux]/Gruppe Aber es muss nicht der gesamte CPA verdoppelt werden, sondern nur das AusgangsXOR und der CarryMux
A = 14n, T = 3 n
cout
0 1 p cIN verdoppelt!
2.2.4 ConditionalSumAdder(CSUM)
TypA+B WieCSEL,aber: statt sequentieller Weiterschaltung des Carry von kBitgruppen jetzt parallele Weiterschaltung von 1 BitGruppeineinerBaumstruktur(sieheBildimWebundbung) Die richtigen nSummandenbits werden abhngig vom Ergebnis in einem log2(n) tiefen Baum vom Multiplexerweitergeschaltet SchnellsternichtredundanterAddiererdurchmax.ParallelittmitgroemAufwand
2.2.5 CarryLookaheadAdder(CLA)
TypB parallelisierbardurchBaumstruktur(BildsieheWebbzw.bung) berechnetimmerimvorausdiebertrge Aufwandsteigtstarkmitnan,daherhufigPartitionierungin4BitBlcken
(gn-1,pn-1) (g0,p0)
C'0
(g'n-1 p'n-1)
Blockgenerate and propagate
Cn-1
C0
Implementierungsvarianten(Beispiele):BrentKungCLA,HanCarlsonCLA 29
2.2.6 AsynchroneAddierer
AuchalsCarryCompletionAdderbezeichnet Erkennt den Abschluss der CarryWeiterschaltung und generiert dann ein CarryCompletionSignal, dassdieGltigkeitderSummenbitsanzeigt Es kann gezeigt werden, dass die mittlere Carrylaufstrecke in einem nBit Addierer ca. log2(n) Stufen (Bits)betrgt.DielngsteStreckeistjedochnBits
+Vorteil:
einfacherRCAverwendbar,mittlereLaufzeitO(log2(n)) eventuellfrkaskadierteOperationenaufniedrigerChipflchegeeignet(z.B.kryptologischeHardware inChipkarten) Nachteil: nicht fr synchrone Schaltungen, sondern fr selbstgetaktete, asynchrone Schaltungen (selftimed systems) ExtraHWfrccSignal A = 8n, Tmittel = 2 log 2 (n) Preisfrage:WiesiehtderWorstCasebzgl.Taus?
2.3 bertragsfreieredundanteAddierer
gemeinsamesMerkmal:vonWortbreiteunabhngigeAddiererlaufzeit
2.3.1 CarrySaveAdder(CSA)
Addiert3nBitOperandenohneCarryweiterschaltung(Carryswerdenabgespeichert,`saved`) mit: 2 cin + si = a0,i + a1,i + a2,i (miti=0...(n1))
(C , S ) = C + S = A0 + A1 + A2
A0
n
A1
n
A2
n
T = 4
CSA
RealisierungausnVolladdierern,(vgl.1.2.4.2)
a0,n-1 a1,n-1 a2,n-1 a0,1 a1,1 a2,1 a0,0 a1,0 a2,0
VA
VA
VA
cn
sn-1
c2
s1
c1
s0
30
2.3.2 VorzeichenbehafteterAddierer(RBA)
AddiertZahleninSDZahlensystem BetrachteimFolgendennurdieBasisr=2 redundantbinrerSDAddierer,kurz:redundantbinreAdd.(RBA)
AundBsindzweinBitSDZahlenmitai,bi{1,0,1} S=A+B
a n-1 b n-1
a2
b2
a1
b1
a0
b0
z n-1
d n-1
z2
d2
z1
d1
z0
s n-1
s2
s1
s0
(1) (2)
2di+1+zi=ai+bi si=zi+di
:di+1...Zwischencarry :zi...Zwischensummedi+1,zi{1,0,1}
Gleichung(1)erinnertanCarrySaveVorschrift. diundziknnenunterBercksichtigungvon(1)und(2)weitestgehendfreigewhltwerden. Bei der Berechnung von (2) entsteht kein weiterer bertrag, wenn die folgende Tabelle (Takagi,1987) beachtetwird: bi ai1 bi1 di+1 zi ai 1 1 X X 1 0 X=dontcare 1 0 1 1 beide0 a1=0 0 1 sonst 0 1 b1=0 ai+bi=0 X X 0 0 0 1 0 1 beide0 1 0 sonst 1 1 1 1 X X 1 0 FolgerungausTabelleundDiagramm: EinebeliebigeStelleibeeinflussthchstensdiebernchsteStellei+2 DieLaufzeitdieserRBAbetrgtinderGrenordnung2VALaufzeiten Beispiel: 01111 ai 00001 bi di+1 011110 zi 01110 si 10000 31
UmwandlunginZK
CarrySave RBA direkt,keinHW undZeitaufwand CPAerforderlich(RCA,CLA,CSEL...) AdditionvonCarry undSummenvektor AufsplittungderSDZahlin positiven(0und1)undnegativen (1und0)Teil,Subtraktiondesneg. Vompos.Teil CSZelle=VA=3zu2Zelle,addiertZKzuCSZahl, RBZelle,4zu2Zelle, 2kaskadierteCSZellenergeben4zu2Zelleund addiertdirekt2RBZellen sindfrAdditionenvon2CSZahlenerforderlich frgleicheFunktionalitt 22Transistorenfr(3:2)Zelleinallen Ca.42Transistorenfr(4:2)Zelle, Bibliotheken bibliotheksabhngig
2.3.2.1 berlaufbeiredundantbinrenAddierern
(NachtragzuAbschnitt1.4.3) WiebeiCarrySavetretenEchterberlaufundPseudoberlaufauf. BeispielfrPseudoberlauf: 111 (entspricht1) ai 111 (richtigwredasErgebnis2) bi di+1 111 zi 0000 si 110 (entspricht6!!!) Entscheidend fr das berlaufverhalten sind die MSDSummenstelle sn1 und der abzuschneidende Zwischenbertragdn. (Zwischenbertrag) dn dn1dn2d1 sn1 sn1s1s0 (Summe) EineAnalysedermglicheFlleergibtfolgendeTabelleundeineKorrekturvorschriftfrsn1, welchesn1ergibt: berlauftyp sn1 dn sn1 1 1 Pseudoberlauf 1 1 0 potentieller,s.u. 1 1 echterberlauf,s.u. Ggf.Sttigung 1 1 echterberlauf,s.u. 1 0 potentieller,s.u. 1 1 Pseudoberlauf 1 0 X Keinberlauf sn1 Die Pseudoberlaufkorrektur kann in die MSBStelle des RBA ohne Geschwindigkeitsverlust integriert werden. DerechteberlaufmussdurchModifikationaufSystembzw.Algorithmusebeneverhindertwerden. Der potentielle berlauf wrde zur Unterscheidung vom echten berlauf die Inspektion aller niederwertigenDigitserfordern. Durch die Beschrnkung des mglichen Wertebereichs auf Werte mit (Betrag < 2n1) kann auch der potentielleberlaufvermiedenwerden.
32
2.4 MehroperandenAddierer
Addierendreiodermehr(m>2)nBitOperanden n + log 2 (m) BitErgebnisinnichtredundanterForm
2.4.1 MehroperandenAdditionmitAddiererArrays
EsgibtprinzipiellzweiOptionen: a) lineareAnordnungvonCPAs(hierimBeispiel4OperandenRCA)
a0, n-1 a1, n-1 a0, 2 a1, 2 a0, 1 a1, 1 a0, 0 a1, 0 (m-1)-CPAs
VA VA VA HA
CPA 1
a2, n-1
a2, 2
a2, 1
a2, 0
VA
VA
VA
HA
CPA 2
a3, n-1
a3, 2
a3, 1
a3, 0
VA
VA
VA
VA
HA
CPA 3
sn
s n-1
s2
s1
s0
kritischer Pfad
b) lineareAnordnungvonCSAsmitabschlieendenCPA(hiereinRCAdafrgenutzt)
a0, n-1 a1, n-1 a2, n-1 a0, 2 a1, 2 a2, 2 a0, 1 a1, 1 a2, 1 a0, 0 a1, 0 a2, 0
VA
VA
VA
VA
CSA 1
a3, n-1
a3, 2
a3, 1
a3, 0
VA
VA
VA
HA
CSA 2
VA
VA
VA
HA
CPA (= RCA)
sn
s n-1
s2
s1
s0
kritischer Pfad
allg.DarstellungderVarianteb):
A0 A1 A2 A 3 A n-1
FreinenlogarithmischenCPAgiltalso:
2.4.2 (m:2)Kompressoren
Eine Spalte der Variante b) ohne den abschlieenden CPA komprimiert immer m Eingangsbits auf 2 Ausgangsbitsundleitetdabei(m3)ZwischencarrysandienchstehherwertigeSpalteweiter (m:2)Kompressor KeinehorizontaleCarryweiterleitung Sie lassen sich aus Volladdierern (=(3:2)Kompressor) bzw. (4:2)Addierern in lineares Array oder Baumstrukturzusammensetzen Beispiel:obiger4OperandenAddiereraus(4:2)Addierern
A = 7 ( m 2)
Allgemeingilt: Tlinear = 4 ( m 2)
34
Realisierungder(4:2)Addierer Allgemeinaus2Volladdierernaufgebaut.
DetailliertereAnsichtmitOptimierungderXORGatter(rechts).
2.4.3 MehroperandenAddierermitAddiererBumen
BestehenausnBitmOperandenredundantenAddiererninbaumfrmigerStruktur DieredundantenAddierersetzensichausnBit(m:2)Kompressorenzusammen SchnellsteMehroperandenAddierer: o Addiererbaum o LogarithmischerCPA o
AddiererbumesindschnelleralsAddiererarraysundbezglichderGatterzahlidentisch. BaumstrukturenbentigenjedochaufwendigereVerdrahtungeffektivgrer 35
FF
CLK
cout
VA
si
cin
2.5.2 MSDfirstserielleAddiererDigitOnlineArithmetik
AddiertzweinDigitZahlendigitweisebeginnendamMSD Ableitbarausparallelen(4:2)AddiererninCSTechnik(bzw.analogSD)
ZyklenMSDfirstout
2.5.3 Akkumulatoren
MitCPA(LaufzeitvonmTaktzyklen)
a 3 a0
AddiertmnBitOperandenbitparallel
CPA
S
A = ACPA + AFF
FF FF FF FF
Takt
T = TCPA + TFF L = m T
MitCSAundabschlieendemCPA(sehrvielschnelleralsersteVariante,derCPAkanngepipelinetwerden!)
a3 a0
s 3 s0
CSA
Summen- und Carryvektor
FF
FF
FF
FF
Takt
s3 s0
FF FF FF
c3 c0
FF
CPA
S
2.6 EinfacheaufAdd/SubbasierendeOperationen
Nurzurbersicht: o Inkrement/Dekrement o Zhler(rckgekoppelteInkrementer) o Komparatoren(=,,,etc.) (LaufzeitinZKundredundanterDarstellungimmer log 2 (n) ) o ErkennungderAnzahlfhrenderNullen (LaufzeitauchhierinZKundredundanterDarstellungimmer log 2 (n) ) o o FlagBitBestimmunginPs
37
3 Multiplikation
3.1 Grundlagen
wiebeischriftlicherMultiplikation multiplizieren von 2 nBit Operanden A und B ergibt ein (2n)Bit vorzeichenloses bzw. (2n1)Bit ZK Produkt
3.1.1 VorzeichenloseMultiplikation
P = A B = ai 2 i b j 2 j = ai b j 2 i + j
i =0 j =0 i =0 j =0
n 1
n 1
n 1 n 1
mit pi = ai B : P =
p 2 (vgl.1.6.2.2:rekursive,assoziativeFunktionmit1Ausgang)
i i =0 i
n 1
1
ai i = 0, ..., n -1
*
Linksshift um i CLK
T = O(log 2 (n) ) L =n
A = O(n )
CPA 2n
b)seriell(shiftandadd)mitlinearemArrayvonCSAs,allepiwerdengleichzeitigerzeugt
B
a0 a1
A CSA CSA CSA CSA 2n CPA 2n Bit breit
a2 a3
2n Ltg. (C+S)
A = O n2
( )
38
c)parallelmitMultiOperandenAddiererinBaumstruktur
B
* * *
*
A = O n2
T = O(log 2 (n) )
( )
3.1.2 ZKMultiplikation
KomplementierbareOperandenvorundErgebnisnachMultiplikation VorzeichenlosesMultiplikationsverfahrenverwenden direkteImplementierungmitspeziellenZKMultiplikationen
3.2 Vorzeichenloser'Baum'ArrayMultiplizierer
(fr4BitOperanden) a3b3 p7 p6
a0
a2 b3 a3 b2 p5
a0 b3 a1 b2 a2 b2 a3 b0 p3
a0 b2 a1 b1 a2 b0 p2
a0 b1 a1 b0
a0 b0
p1
p0
b3
b2
b1
b0
p0 a1 1 HA HA HA p1 a2 FA FA FA p2 a3 2 CSA CPA 3 p7 FA p6 FA p5 FA p4 FA FA FA p3
39
bi ai
bi
ai
pi (LSBS) pi (MSBS)
pi
A = 8 n 2 11 n
3.3 VorzeichenbehafteterPezarisArrayMultiplizierer
(=modifizierterBraunMultiplizierer,4BitOperanden) MSB=VZstelle=negativeWertigkeit a0 b3 a0 b2 a0 b1 a1b3 a1 b2 a1 b1 a1 b0 a2 b3 a2b2 a2 b2 a2 b0 a3b3 a3 b2 a3b1 a3 b0 p7 p6 p5 p4 p3 p2 p1 Unterscheide4FllefrBitsimPartialprodukt a)3positiveOperandenStandardVolladdierer a + b + cIN b)2pos.,1neg.Operanden:1Summe2 SummeBitGewicht:1 CarryOutGewicht:+2 a + b + cIN = 2 cout s c)1pos.,2neg.Operanden:2Summe1 SummeBitGewicht:+1 CarryOutGewicht:2 a b cIN = 2 cout + s
T = 6n 9
a0 b0
p0
3.4 BoothMultiplizierer
Beobachtung:Multiplikationszeit=f(Anzahld.PartialproduktePi)=f(n) FrjedeNullimMultiplikatoraikannimArrayeineZeileweggelassenwerden! KodiereMultiplikatorsoum,dassdieAnzahlNullenmaximiertwird(vgl.mitAbschnitt1.2.4)
'
40
bi
Booth Recording
ai
*
n/2 Partialprodukte
Parallele Berechnung
CSA - Array
A = 4 n2 T = 3 n
CPA
Anmerkung:EinehorizontaleKompressionderDatenwirddurchdensogenanntenDaddaMultiplizierer erreicht(Booth=vertikaleKompression).
3.5 BoothWallaceMultiplizierer
Entstehtaus3.4durchErsetzungdesCSAArraysdurcheinenWallaceBaum(vgl.2.4.3)
3.6 BewertungderverschiedenenMultiplizierer
Rekursiv seriellesArray(Braun) Booth BoothWallace Geschwindigkeit 0 + 0 + + + ++ Flche ++ 0 0 Regularitt (daSteuerungntig) ++ + Pipelinebar ++ + +
41
4 Division
4.1 Definition
A [ 0,2 2 n 1] , B , Q, R [ 0,2 n 1] , B 0
n 1
,2 n 1]
4.2 Grundlagen
BinreDivisionkannwiedieschriftlicheDivisionvorgenommenwerden,also a)VergleichezumMSBverschobenenDivisormitDividend. b)SubtrahierediebeidenAusdrckegegebenenfalls. DasErgebnisistderPartialrest. c)Setzebeia)fortmitPartialrestfrDividend. subtractandshiftAlgorithmus(Multiplikation=shiftandadd) sequentiell,nichtparallelisierbar,danichtassoziativ DezimalesBeispiel: AB qi 0,75:0,875 750:875=0,857 7000 Ri 5000 4375 6250 6125 125 Grundalgorithmus(entsprechendobigertextuellerBeschreibung): a)b)
qi = ( Ri +1 2 i B) Ri = Ri +1 q:2 i B
Rn = A (Initialisierung) R = R0 (RestnachIteration)
i = n 1,....,0 c)
Divisionsverfahren unterscheiden sich nun in der Bestimmung der qi und ob redundante Addierer verwendet werdenknnen.
42
4.3 RestoringDivision(wiederherstellendeDivision)
1 qi = 0
z.B.:
qi {0,1}
Indexi: Ri +1 B 2 < 0 qi = 0,
Ri = Ri +1
! 0 qi 1 = 1 , Ri 1 = Ri +1 B 2 i 1
Ist der Partialrest zu klein fr den Divisor, wird das Ergebnis der Iteration Ri +1 B 2
nchsteNullheruntergeholt'(identischzumVerschiebendesDivisorsumeineStellewenigerzumMSB). Ri = Ri +1 B 2 (altenWertseparatspeichern)
i
Ri = Ri +1
Subtrahiereimmerundrestaurieregegebenenfalls!
4.4 NonRestoringDivision(nichtwiederherstellendeDivision)
qi' = 1,1
{ }
Ri +1 0 qi = 1,
' !
Ri = Ri +1 B 2 i
Ri +1 B 2 i < 0 qi' 1 = 1, Ri 1 = Ri +1 B 2 i + B 2 i 1 = Ri +1 B 2 i 1
' '
qi qi 1 = 01 = qi qi 1 = 11 Beachte: Werte Vorzeichen aus, subtrahiere oder addiere, korrigiere gegebenenfalls in den nchsten Schritten durch Addition,bisderPartialrestwiederpositivwird. Die identischen Ausdrcke fr Ri1 in 4.3 und 4.4 sowie die algebraisch identischen qi und qi' zeigen die quivalenzvonNonRestoringundRestoringDivision. UmwandlungvonQ=qn1'...q0'inZKZahl
' 0 wenn qi = 1 q { 1,1} qi {0,1} qi = Beachte:qinichtredundant ' wenn q 1 = 1 i
' i
Q = (q n 1 , q n 2 , q n 3 ,..., q 0 ,1)
43
RealisierungderNonRestoringDivisioninHardware
A B
Korrekturstufe fr R
CPA=RCACPA=CLA
( 2)
Ri = Ri +1 2 qi 2 n 1 B
a2,a1,a0werdennacheinanderheruntergeholt
44
4.5 SRTDivision
nachSweeney,Robertson,Tocher,um1958 Sindentstanden,umredundanteAddiererbenutzenzuknnen. Problem: WieerkenneichbeieinerredundantenZahldasVorzeichen,ohnealleStellen derZahlzuuntersuchen(=ZeitaufwandeinernichtredundantenAddition)? Beispiel: Lsung:
B < 2 n ,gilt:
B 2 i 2 n + i 1 Ri +1 < 2 n + i 1 B 2 i
Darausergibtsich:
q i'
Q C P A
> >
( )
Umwandlung
= O (n + log 2 ( n ) )
nuretwaslangsameralsz.B.ArrayMultiplizierer StateoftheArtDividierer
45
4.6 MultiplikativeDivision[Anderson,1960]
bisher: Grundoperation=Add/Sub nMalausfhren lineareKonvergenz(proIteration1BitGenauigkeitsgewinndesErgebnisses) jetzt: Grundoperation=Multiplikation quadratischeKonvergenz(Anzahlder'genauen'BitsverdoppeltsichinjederIteration) log2(n)Malausfhren AlgorithmusSkizze:
Q=
Q = A Ri A = O n2
T = O log 2 (n)
2
( )
DividiererBewertungundRealisierung SequentielleDividierer(NR,R,SRT): o nur1Add/SubEinheit o GeringeFlcheundDurchsatz ArrayDividierer(NR,R,SRT): o nAdd/SubEinheitengroeFlche,aberregulr o groerDatendurchsatz MultiplikativeDividierer: o WiederverwendungdesohnehinvorhandenenMultiplizierers o Frgroensehrschnell
46
5 BerechnungelementarerFunktionen
ElementareFunktionensindzumBeispiel: Wurzelziehen(Radizieren, Logarithmus( log ) Exponentialfunktion( e ) PotenzierenmitBasisungleich2( x ) TrigonometrischeFunktionen( sin, cos, tan, cosh )
y
5.1 KlassifikationderMethoden
ROM: A = O (n 2 ), T = O (?) (langsam) nurfrFunktionenmit1Operandenundn<14Bitgeeignet nichtpipelinebar Polynom: TaylorReihe TschebychewReihe,konvergiertbesser,wenigerTerme
n
A = O(n ) mult.rekursivnutzen, T = O(?) nichtrealistischpipelinebar frSWsehrgutgeeignet,ebensofrgroen AlternativeZahlensysteme: LogarithmischeSysteme Residuensysteme Problem:InundUmwandlunginundausdiesenSystemen Iteration: NeutonRaphson(siehemultiplikativeDivision) DigitbyDigitVerfahren o SchriftlicheDivision o CORDICVerfahren
2
47
5.2 CORDIC
CORDIC=CoordinateRotationDigitalComputer (vonVolderundWalther1956/1958)
5.2.1 DrehungeinesVektors
Gegeben: x0 , y0 , Gesucht: x, y + 90 NutzungderEulerschenDrehmatrix:
x, y x0, y0
- x, y
(frnegativebzw.rechtsDrehung):
(frpositivebzw.linksDrehung):
mit K =
1 1 + tan 2
Elementardrehwinkel(beachteZweierpotenz):
i = atan 2 i
( )
tan ( i ) = 2 i
Iterationsgleichung(en):
x1,y1 .
90
xi +1 = K i xi + 2 i yi yi +1 = K i
( (y
) x )
i
xn,yn
x2,y2
xi +1 = K i xi 2 i yi yi +1 = K i
i
( (y
+2
) x )
i
+
30 90
. x ,y 0 0
90
48
5.2.2 ZerlegungdesDrehwinkelsinElementardrehwinkel
i 0 1 2 3 4
n 1 i =0
i = atan 2 i
45,0 26,5 14,03 7,1 3,5
( )
i 0 = +1 1 = +1 2 = +1 3 = 1
0 = = 77
1 = 77 45 = 32 2 = 32 26,5 = 5,5 3 = 5,5 14,03 = 8,53
z 0 = , zi +1 = z i i atan 2 i
( )
DasIterationszielist z i 0 !
i =
+ 1 fr z i 0 1 fr z i < 0
Waspassiertmit K ?
K =
i
1 1 + tan i
2
=
i
1 1 + 2 ( 2i )
49
5.2.3 Rotation&Vectoring
xi +1 = xi i 2 i yi yi +1 = yi + i 2 i xi zi +1 = z i i atan 2 i
( )
RotationsmodusRotation z 0 = ,Iterationszielist z i 0 !
RotationsmodusVectoring z 0 = 0 ,Iterationszielist yi 0 !
2
i =
+ 1 fr yi < 0 1 fr yi 0
y0 atan x 0
50
5.2.4 VerallgemeinerungaufandereOperationen
xi +1 = xi m i 2 i yi yi +1 = yi + i 2 xi
i
zi +1 = z i i m ,i
Ri +1 =
( 1 + m
1 m
2 ( 2i ) Ri
1,i =
1 m
i
atan m 2 i
m ,i =
atan m 2 i
0,i = 2
1,i = atanh (2 i )
5.2.5 bersichtderCORDICFunktionen
Modus m Rotation( z i 0 ) Vectoring( yi 0 )
x0
zirkular, m = 1
x0 cos z0 y0 sin z0
x0 y0
z0
2 2 x0 + y0
y0 z0 x0
y0 cos z0 + x0 sin z0
0
y0 z0 + atan x 0
x0
0
x0
x0
y0
m=0
linear,
y0 z0 x0
y0 + x0 z0
0
z0 x0
z0 +
y0 x0
2 2 x0 + y0
hyperb.,
m = 1
y0 z0
y0
z0
y0 z0 + atanh x 0
51
x0
y0
z0
xi +1
yi +1
zi +1
nfacheFlche
5.2.7 CORDICinredundanterZahlendarstellung
Motivation:VermeidungderCarryLaufzeitbeiderAddition(=Grundoperation) Vorsicht: K = BestimmungderDrehrichtung i ausdenVorzeichenvon z i und y i . 1.Problem:BestimmungdesVorzeichenseinerredundantenZahl Ansatz:AngenherteBestimmungvon i durchInspektionvon GleicheIdeewiebeiSRTDivision *von z i bzw. y i i { 1, 0,1}
1 1 + m i2 2 ( 2i )
warbisher1, m { 1,0,1}
p signifikantenDigits( p << n )*
2.Problem:Skalierungsfaktorfr i = 0 variabel VerschiedeneLsungen: KonstanterSkalierungsfaktor o Entscheidung fr eine Drehrichtung bei i = 0 i z.B. dann +1 kleiner Fehler nach einerfestgelegtenIterationszahleineIterationswiederholungntig,z.B.fr Iterationwiederholen(?) Garantie,dassdasVerfahrenauchkonvergiert zurzeitStandardverfahren StattDrehungum i immerzweiDrehungenumca. o d.h.,
p = 3 jedefnfte
i
2
(entspricht atan 2
( i +1)
) )
i = 1 2 atan (2 (i +1) ) i = 0
Skalierungsfaktorkonstant,Doppelrotationsmethode=doppelteFlche variablerSkalierungsfaktorMultiplizierererforderlich
53
6 AnwendungenundBeispiele
6.1 DigitaleFilter
2Varianten: FIRFiniteImpulseResponse IIRInfiniteImpulseResponse FIRFilterallgemein:
y n = ai x n i
i
HierFIRFilter2terOrdnung: y 2 = a 2 x0 + a1 x1 + a0 x2
a2
a1
a0
z 1
y
z 1
Koeffizientenfest,z.B.
2 3
2 6
2 8
a0
z 1
y
z 1
WeitereVerbesserungendurchZusammenfassungvonUnterausdrcken(TermSharing)
0.10100101 = 2 1 2 3 2 6 + 2 8 = 2 1 2 3 1 2 5
x
a2
)(
2 1 z 1
2 3
2 5 z 1
a0 y
54