第 八 章 运 算 方 法

Click here to load reader

Upload: arlais

Post on 23-Jan-2016

215 views

Category:

Documents


1 download

DESCRIPTION

第 八 章 运 算 方 法. 执行算术和逻辑运算的指令以及微操作是任何 CPU 的一个必不可少的重要部分。. 1. 几种 常用数据格式 的 算术运算算法 和它们的 硬件实现 。包括 定点数 表示及其加、减、乘、除过程和硬件实现, 二 — 十进制 (或 BCD ) 码 的格式和操作。. 2. 提高算术操作性能的 专用硬件 。 (流水线、查找表、华莱士树). 3. 介绍 浮点数 的格式和它们的算术操作。包括浮点数的格式,性质,以及加、减、乘、除过程和硬件实现,还有 IEEE 754 浮点数标准。. 8.1 无符号表示法. - PowerPoint PPT Presentation

TRANSCRIPT

  • 1. BCD 2. 3. IEEE 754 CPU

  • 8.1 0n0 02n-112n -2n-12n-1-11000211

  • -5450101101011011

    88.1

  • 8.1.1 XY8 ADDXX+Y 02n-12-2n-12n-1-1 8.1 XX+Y

  • 8255 +11111 1111 + 0000 0001 1 0000 000098

  • 8.2 acbd

  • X YX +-YY Y YXX Y[X Y]=[X]+[-Y]SUBXXY8.3 XXY

  • 2n-10120000 0001+1111 1110 = 1111 1111255bdac 8.4 2 XYX +Y 01

  • 8.1.2 nnxy z = 0 FOR i = 1 TO y DO { z = z + x } xyx y x = 2 7 y = 2 5 3 8 1 1 3 5 5 4 6 8 3 1

  • x = 2 7 y = 2 5 3 8 1 1 3 5 1 4 3 1 5 4 6 8 3 1

  • x = 27 y = 253 81 81 1 135 1431 1431 3 1 54 6831 6831

  • 010X0 = 0X1 = X nXY nUV UnVn C U = 0 FOR i = 1 TO n DO { IF Y0 = 1 THEN CU = U + X CUV Y }

  • 131111011011 X = 1101Y = 1011

  • RTLi = 0Z = 1123123 1 U0in Y02 CUU + X 2 ii-1 3 shr(CUV)cir(Y) Z3 GOTO 2 Z 3 FINISH1 8.31311RTLX = 1101Y = 10118.38.2

  • 8.3 RTL

  • RTL X n YUV n SHR i n CFINISH RTL iZi0i = 0Z1

  • 8.5 3

  • 8.5RTL START1State CounterFINISHDecoderDecoder1Uni State Counter101 Decoder2i1Y0 = 1U + XCUY0 = 0CU State Counter110 Decoder3CUVZ = 0State Counter01 Decoder2GOTO 2

    Z = 1FINISH1Decoder0123

  • YVUVX VVV01RTL

    1 U0in V02 CUU + X 2 ii-1 3 shr(CUV) Z3 GOTO 2 Z 3 FINISH1 CUU + XY02V02cir(Y) CULDV02Y8.5

  • RTL13 118.4 RTL VY8.3

  • 8.1.2.1 13 11 1101 10113-5+151000 1111 113 IF < 0 THEN - IF < 0 THEN - IF THEN -

  • booths booths11111 U = 0Y-1 = 0FOR i = 1 TO n DO {IF 1 THEN U = U X= U + X + 1 IF 1 THEN U = U + X UV YY0Y-1 } boothsUVXYUVXYnY-11

  • Y1YYY0 1011 0101 111 00 1Y-10Y1

    8.5X = -31101Y = -510110000 1111+15

  • 8.5 booths 1

  • RTLSTARTFINISHUVXYnY-1in0

    1 U0Y-1 0in Y0Y-1 2 UU + X + 1 Y0Y-1 2 UU + X 2 ii-1 3 ashr(UV)cir(Y)Y-1 Y0 Z3 GOTO 2 Z 3 FINISH1

    Y0Y-11Y0Y-11

    Y0Y-12UU +XY0+ Y0

  • RTL35X1101Y1011 8.6 boothsRTL YVY

  • RTL8.6 booths 31

  • 8.1.3 z = xy

    Z0 WHILE xy DO { zz1xxy }

    z 096 71 6827 639 437 426 11 716871680

  • 096 71 6827 00 68 71 0 682 682 639 682 71 9 437 437 426 437 71 6 11 6871

  • 68272nn7196nnnn

    7827714278 > 7132

    0

  • 0110 UVUnVnnXYUC1U U X THEN Y = 0C = 0 FOR i = 1 TO n DO { CUV Y IF CU X THEN {Y0 = 1U = CU X}} 1127n =4UV = 0111 0000X = 0111UX0111161 000001 00004Y

  • 14713U = 1001V = 0011X = 1101n = 4 8.7

  • RTLXUVYnCOVERFLOW1i = 0Z = 1UXG = 1FINISHI11234 G 1 FINISH1OVERFLOW1 2 Y0C0OVERFLOW0in 3 shl(CUV)shl(Y)ii-1C + G4 Y0 1UU + X + 1 Z4 GOTO 3 Z 4 FINISH1 RTL CUX UXGC =1C + GU U + X + 1U = CU X

  • RTL14713U = 1001V = 0011X = 1101n = 4 8.8 RTL

  • 8.7

  • CU XU U XCU XCUXCU < XU U + XU CUXCU XU CU XU U XCU < XU U + XU

  • UVXYUUVXYnC1 CU = U + X + 1 U = U + XIF C = 1 THEN Y = 0 FOR i = 1 TO n DO { CUV Y IF C = 1 THEN { U= U+ X +1} ELSE{ CU= U+ X +1 } IF C = 1 THEN { Y0 = 1} ELSE { U = U + X } } CUXC = 1CUXU U + X + 1C1CU XC = 0CU U + X + 1CU XC1U = U XCU XC10

  • CUX

    C U = U + X + 1U = U X UXU XC1C0 abC1U X

    cC0U < X 8.8 C U = U + X + 1UXabc

  • UXU XU U + X + 1C1C0UY CUVY U = U XCUXCU XC = 1 C = 1CU XY01C = 0CU < XU C = 1CUXU U + X + 1C1CU XC = 0CU U + X + 1CU XC1U = U XCU XC10

  • 225138.9aX = 1101n = 4C122513 = 17 4171 00014U 8.9 a 147138.9bY

  • 14713114 8.9 b / YU

  • RTL

    OVERFLOW110 FINISH11FINISH1RTL in0i = 0Z = 1 GOTO11122341421112141424

  • 11 CUU + X + 1 12 UU + X C 12 FINISH1OVERFLOW1 2 Y0OVERFLOW0in 3 shl(CUV)shl(Y)ii-1 C 41 UU + X + 1 C41 CUU + X + 1 C 42 Y0 1 C42 UU + X Z 42 FINISH1 Z42 GOTO 3 CU = U + X + 1 U = U + XIF C = 1 THEN Y = 0 FOR i = 1 TO n DO { CUV Y IF C = 1 THEN { U= U+ X +1} ELSE{ CU= U+ X +1 } IF C = 1 THEN { Y0 = 1} ELSE { U = U + X } }

  • 8.10 RTL 14713

  • GU + XU X6 8.9 42

  • IF < 0 THEN - IF < 0 THEN - IF THEN -

  • 8. 2 signed_magnitude notationsigned_twos complement notation8.2.1 signed_magnitude notation 1001n XsX Xs1Xn +3-33+300011-310011

  • 8.2.1.1 UsUXsXYsYASAS =0 =1PM =XsASYsXsASYs8PMX =3Y =5X =5Y =38 8.11 PM

  • PMXYX > YX = YX < YPM = 0PM = 1 PM = 0 XY Xs UsXsUX + Y CUX + YUX + YC PM = 0RTL

    PM1UsXsCUX + Y PM2OVERFLOWC

  • PM = 1 XYX > YUX Y X + Y + 1X < YX YY X2X Y + 1CUX + Y + 1XYCX Y 0X = YCUX + Y + 1U = 0C = 10 +00 XY8.11X > YUsXsX < YUsXs

  • PM = 1RTL

    X > YC = 1Z = 0X = YC = 1Z = 1X < YC = 0OVERFLOW0PM = 1

    PM 1CUX + Y + 1OVERFLOW0 CZPM 2UsXs CZ PM 2Us0 CPM 2UsXsUU + 1 CZC = 1Z = 0X > YUX YXsUs CZC = 1Z = 1X = YU00 +0 CC = 0X < YUX YY XXs

  • RTLPM = 0PM = 1 PM1UsXsCUX + Y PM 1CUX + Y + 1OVERFLOW0 PM2OVERFLOWC CZPM 2UsXs CZ PM 2Us0 CPM 2UsXsUU + 1 2FINISH1 8.12XsXYsYRTLPM = 0PM = 1X > YPM = 1X = YPM = 1X < Y

  • 8.12

  • RTL 8.10

  • 8.2.1.2 CUXYRTLXsXYsY 1UsXsYsVsXsYsU0in Y02CUU + X 2 ii-1 3 shr(CUV)cir(Y) Z3 GOTO 2 ZT 3 Us0Vs0 Z 3 FINISH1 UV = 0T = 1T = 0i = 0Z = 1

  • RTL-13+11 8.13 RTL 1311UsVs

  • RTL RTLRTL

    RTL

  • 8.2.2 signed_twos complement notation 1nXsX2 +530010111101 +500101500101

  • n + 1

    booths

  • 8.3 BCDbinary coded decimal BCDbinary coded decimalBCDBCD

  • 8.3.1 BCD BCD40000010019 BCD9410101111 nn4270010 01110001 1011 BCD01 : +27: 00010 0111 27: 10010 0111

  • 8.3.2 BCDBCD BCDBCD968.11BCDBCDBCD 5 + 6 = 0101 + 0110 = 1011 8 + 9 = 1000 + 1001 = 1000111 BCD9999 99n9110BCD

  • 8.11 BCD Adder 1S3S2S1S0BCDS3S2 = 1S3S1 = 1X + YCout1 =1160110S3S2S1S0 XY06BCD

  • BCD9BCD9 8.12 9 6319999 631 = 36810368 + 1 = 369210BCD

  • BCD BCD9YPM 1UCPM 2Xs1CPM 2Xs9Xs RTL PM1UsXsCUX + Y PM 1CUX + Y + 1OVERFLOW0 PM2OVERFLOWC CZPM 2UsXs CZ PM 2Us0 CPM 2UsXsUU + 1 2FINISH1

  • RTLPMX > YX = YX < Y 8.14 BCD

  • BCD 8.13 BCD

  • 8.3.2 BCDBCDBCD

    BCD9BCD BCD0 ~ 99 1BCD4dshr Cd1BCD1

  • BCDBCDUsUVXsXYsYRTL nYYd0YBCD4Yd0 = 0ZY0 = 1i = 0Z = 1 1UsXsYsVsXsYsU0inCd0ZY0 2CdUCdU + XYd0Yd0 1GOTO 2 ZY0 2ii 1 3dshr(CdUV)dshr(Y) Z3GOTO 2 ZT 3Us0Vs0 Z 3FINISH1 CdCdYd03dshr

  • BCD7123

    RTL8.15 BCD RTL

  • 8.4 Wallace 8.4.1 throughput

  • FOR i =1 TO 100 DO {A[i] (B[i]C[i]) +D[i]}

    10 nsA[i]20 ns2000 ns A[i]1010 ns 10 nsB[1]C[1]10 nsD[1]A[1]B[2]C[2]10 nsB[3]C[3]A[2]

  • speedupSnnk T1TkkTkT1 = 20 nsTk = 10 ns Sn = n T1 (k + n 1) Tk T1 nn * T1kkTknk + n 1

  • S100 = n T1 = 10020ns =1.98 (k + n 1) Tk (2 + 100 1)10ns n

    S = T1 / Tk

    S = T1 = T1 = k Tk (T1 / k) T1 / kT1 / kTkTk > T1 / k

  • 2 ns S100 = n T1 = 10020ns =1.65 (k + n 1) Tk (2 + 100 1)12ns A[1]1 S1 = n T1 = 120ns =0.83 (k + n 1) Tk (2 + 1 1)12ns 11CPU

  • 8.4.2 ROMROMROM 41ROM2 ROMROMROMXYROM

  • ROMUVXYXYXYUV UVXY4XY 82561011 11011000 1111143101111110113 8.16

  • ROM8.168.5 ROM4ROM2568864K16ROM 8.4.3 Wallace WallaceWallace

  • S8.17 SiXiYiZiCi+1SC X = 0111Y = 1011Z = 0010S = 1110C = 00110 SC101002001117+ 101111+ 00102SiCi+1SC

  • x = 111 y = 110 000 PP0 111 PP1 111 PP2 101010 Y10X0 PP2Y2X1112PP211100PP1Y11 8.18

  • 8.18 Wallace

  • 5PP0PP1PP2SCXY 8.19 33

  • 10111110PP0 = 000 0000PP1 = 001 0110PP2 = 010 1100PP3 = 101 1000S = 011 1010C = 0000 1000S = 0110 1010C = 0 0011 00001001 1010 PP0PP1PP2PP3 SC 8.20 44Wallace

  • Wallace8Wallace

  • 8.5 8.5.1 1234.5678 1.23456781031.234567893 102 01234.567.12345671041.2345671031234567.10-3

  • 000 /NaNNaNNaN 1XXSXFXE XSXFXE1234.5678= 1.2345678104 XS = 1XF = 12345678XE = 4

  • XE878XE8 8 + 8 = 0 000077 + 8 = 15 = 1111 0+/- NaN1

  • 8.5.2 88CPU .1011 1010232.1011 101123.1011 100123.0000 000123 = 2-5X2X E precision 814 8 ~ 7 .1111 111127 ~ .1111 111127 127.5 ~ +127.5

  • 1812823IEEE 754 23 .111 1111 1111 1111 1111 11112127 ~ .111 1111 1111 1111 1111 111121271.7 1038 ~ +.71038 .121272127 23= 2104 .1 2-1282-128 23= 2 -151 848 .126 .125 .01211 = .12107 +/- NaN1

  • 0.12-6.12-5 .12 -120 .12 80 CPU816 .1011 01014 .1100 +/- 0.5LSBLSB

  • 8.16 + - 121

  • .101123-.110022101111001 .110022 .0110238.5.3 0NaN0 //0NaN

  • XYUXYXYAS = 0AS = 1 1IF Y = 0THEN UX0 = XUX ELSE 2IF X = 0YNaNTHEN U0Y IF AS = 0 THEN UYUY ELSE 3IF X = NaNTHEN UX= NaN ELSE 4IF Y = NaNTHEN UY= NaN ELSE 5IF X = THEN UX ELSE 6IF Y = THEN AS = 0UYU Y ELSE 7U 8.17

  • 31USnUFmUE IXNY + NX + ZY 1UXFINISH1NYZX ZY +IXIYNX1U(YSAS)YFYEFINISH1 IY NX + NXNY1UYFINISH1 EXY2shr(YF)YEYE + 1GOTO 2 EYX2shr(XF)XEXE + 1GOTO 2 PM3CUFXF + YF PM 3CUFXF + YF + 1 3USXSUEXECE0 CPM 4shr(CUF)CEUEUE + 1 CE PM5UUS PM 5FINISH1 CPM 4USUSUFUF + 1 ZUCEUF(n 1) PM 5shl(UF)CEUEUE 1GOTO 5 (ZU + CE)PM 5U0FINISH1 CEUF(n 1)PM5FINISH1 AS = 0AS = 1PM =XSASYSREGXY= NaNNREG = 1REG = 0 ZREG = 1REG = IREG = 1XE > YE EXY = 1YE > XEEYX = 1

  • 1XY0NaN 21X = .110125Y = .100023 YUF2Y2YF = 0010YE = 5 .001025 3 PM = 0C11.xxxx18.18.110123+.111022PM = 0

  • 8.18 X = .110123+Y = .111022RTL 1 2XE > YE EXY = 1YY12XE = YE XE = YE EXY EXY 03 PM = 03CCE 0 41.xxxxC114 5 FNISH1 .110123+.111022=.1010246.5 + 3.5 =10 PM = 0

  • PM = 1C0UF UF + 1US US44 .0xxx .1xxx 0UFn-113UFn-1= 1UF = 0CE = 10 8.19.110123.111022

  • 123 4 505 .110123.111022=.1100226.53.5 = 38.19 X = .110123Y = .111022RTL PM = 1

  • 8.5.4 .1xxx .01xx .01xx.01 .1000.1000 = .01xx 1 0NaN 000NaNNaN0NaN

  • .110123.111022811=3+810=2+821821313 = 21 8213211102113255 = 13 8 10 0

  • RTLURUGUTUUE < 0 ME = 1i = 0Zi = 1 ZX + ZY1U0FINISH1 NX + NYZXZY1UNaNFINISH1NXNYZXZYIX+IY1U(XSYS) FINISH1 NXNY ZXZYI X IY1CEUEXE + YE biasUSXSYS CE2UUS FINISH1 ME2U0FINISH1 3UF0in YF(0) 4CUFUF + XF 4ii 1 5shr(CUFURUG)UTUGUTshr(YF) Zi 5GOTO 4 UF(n 1) 6UFUF + ((UR(UGUT))(UF(n 1)UR))FINISH1 UF(n 1) 6shl(UFURUGUT)UEUE 1 ME 7U0FINISH1 ME7UFUF + ((UR UG) (UF(0) UR) )FINISH1 1XY0NaN8.17 RTL

  • 2345 UFn-1= 1611x1011 UF= .1011 0011UR =1UG =1UT =0 .1011 0011 110 .1011 0100UG = 0UT = 0 .1011 0011 10010UF01 .01xx610 .110123.1110226.53.50XS = 0XF = .1101XE = 0011YS = 0YF = .1110YE = 00108.20

  • 8.20 X = .110123Y = .111022RTL

  • 123UF45XF YF46.101125 = 2222.754 X > YXF > YFXF XE1

  • 8.6 IEEE 754 70 IEEE 754 IEEE 754CPU8.6.1 IEEE 754

  • 321823 112 127 126 +1270000 0000= -1271111 1111= +1288.21a+ 19.510011.11.0011124112741000 0011131 641115211023 1022 +1023 1023 +1024

  • 0 NaN0001 + -NaN01 IEEE 7548.6.2 1IEEE 754008.21

  • 8.21 IEEE 754ab 0 0000 0001= -126000 0000 0000 0000 0000 0000=1.011.02126 1100 0000 0000 0000 0000 00000.12 126 = 2 127000 0000 0000 0000 0000 00012 126 = 2 1492 1074 ab

  • 8.7 boothsRTL BCD

  • ROMWallace