计算机组织与糸统结构 际法、浮点数 Pentium Bug (第九讲) 程旭 200043 北京大学计算机科学技术系 计算机系统结构教研室
ñ¯M§¯æ*§cù ¯æù;étÐ@ ¯æ §ù;é ùsk Qfoujvn!Cvh ÄËZ Å È
第一种无符号移位-加法乘法器 64位被乘数寄存器、64位ALU、64位乘积寄存器、32位乘数寄存器 Shift left Multiplicand Multiplier 64-bit ALU its Product Write Control 64 bits 乘法器=数据通路+控制 北京大学计算机科学技术系 计算机系统结构教研室
ñ¯M§¯æ*§cù ¯æù;étÐ@ \0ýV'+}Ð e!,D,<Ã!$/8Ã!,Ã,<Ã!,D,< 6KLIW5LJKW ,©< DBîà { 3URGXFW 0XOWLSOLHU 0XOWLSOLFDQG ELW$/8 6KLIW/HIW :ULWH &RQWURO ELWV ELWV ELWV
第三种乘法硬件 °32位被乘数寄存器、32位ALU、64位乘积寄存器(没有乘数寄存器) Multiplicand 32 bits 32-bit al Shift Right Product: (Multiplier) Control 64 bits Write 北京大学计算机科学技术系 计算机系统结构教研室
ñ¯M§¯æ*§cù ¯æù;étÐ@ \9ý& e!,D,<Ã!$/8Ã!,Ã,<uÝ,D,< 3URGXFW 0XOWLSOLHU 0XOWLSOLFDQG ELW$/8 :ULWH &RQWURO ELWV ELWV 6KLIW5LJKW
Booth算法探奥 运行中部 middle of run) 运行尾部 运行首部 end of run)o(1111)0 I(beginning of run) 当前位右边位解释 例 1串运行的首部 0001111000 100 1串运布的中部 0001111000 1串运行的尾部 0001111000 0串运行的中部 00011110 早期,由于移位比加法速度更快,采用该算法主要为了速度 将乘数中间的1串用 在第一次看见1时的一次初始减法和在最后一个1后的一次加法代替。 北京大学计算机科学技术系 计算机系统结构教研室
ñ¯M§¯æ*§cù ¯æù;étÐ@ Ú,DÈX ü üÔõßÊXÔõñ£© ` üÔâÔþâXÔõt©·ÓÄ %RRWKÇÒ '!! Ç! · _ ¤ Xj¼ ¤ X¼ ¤ X¼ ¤ X¼ ½óbÏ!¨t©ózÈ¿ü¹k©UZóz ¤ j¼ EHJLQQLQJRIUXQ ¤ ¼ HQGRIUXQ ¤ ¼PLGGOHRIUXQ
Booth:算法 1.依赖与当前和以前的位,进行下述步骤之一: 00:a.0串的中部,不进行任何运算操作. 01:b.1串的结束,将被乘数加到乘积的左半部 10:c.1串的首部,从乘积的左半部减去被乘数 11:d.1串的中部,不进行任何运算操作. 2.象第三种乘法算法一样,将乘积算术右移1位. 被乘数乘积(2x3) 被乘数乘积(2X3) 0010 000000110 0010 000011010 北京大学计算机科学技术系 计算机系统结构教研室
ñ¯M§¯æ*§cù ¯æù;étÐ@ %RRWKÇ q*â'!`¹!X!¯ ßÄ9xÔ DX¼ ᯠÏ)¤k¡0 EX§3 Ú,Dt,ÃXº¼ FXj¼ ¢,ÃXº¼£,D GX¼ ᯠÏ)¤k¡0 5Ý¡,©k©Ô Ú,ÃkÇÏ! ,D ,à [ ,D ,à [
重温上一讲 °指令系统驱动ALU设计 移位器:从每次1位到桶式移位器逐步完善 °乘法:逐步完善 32位加法器、64位移位寄存器、32被乘数寄存器 ·可处理有符号数的 Booth算法 °可以设计出每次运算多位的乘法算法 北京大学计算机科学技术系 计算机系统结构教研室
ñ¯M§¯æ*§cù ¯æù;étÐ@ ýY:0â e۸ϳ E| $/8u eÏ!< ¢£õ! JãÏ!< ä9`X e,©ä9`X !t©<Ã!Ï!,<Ã,D,< ÃØÚÝúËDX%RRWKk© eùuΣõ¤kî!X,©k©