运算功能及其硬件实现.ppt

上传人:小飞机 文档编号:5016887 上传时间:2023-05-29 格式:PPT 页数:43 大小:262.50KB
返回 下载 相关 举报
运算功能及其硬件实现.ppt_第1页
第1页 / 共43页
运算功能及其硬件实现.ppt_第2页
第2页 / 共43页
运算功能及其硬件实现.ppt_第3页
第3页 / 共43页
运算功能及其硬件实现.ppt_第4页
第4页 / 共43页
运算功能及其硬件实现.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《运算功能及其硬件实现.ppt》由会员分享,可在线阅读,更多相关《运算功能及其硬件实现.ppt(43页珍藏版)》请在三一办公上搜索。

1、1,第一单元运算器部件,第三讲运算功能及其硬件实现,2,复习,计算机组成原理单台计算机完整的硬件系统的基本原理与内部运行机制计算机的层次结构理解计算机系统和结构的钥匙计算机的发展历史以史为鉴,可知兴替,可明得失。,3,原 反 补码表示复习,正数的 原码,反码,补码表示均相同,符号位为 0,数值位同数的真值。零的原码和反码均有2个编码,补码只一个码负数的 原码,反码,补码表示均不同,符号位为 1,数值位:原码为数的绝对值;反码为每一位均取反码;补码为反码再在最低位+1;由X补求-X补:每一位取反后再在最低位+1;由X补求X的真值:X=-1+Xi*2-i,i=1,n,4,内容提要,ALU需要实现的

2、功能一位ALU设计加法的实现和加法器设计减法的实现4位ALU设计乘法实现除法实现,5,运算器基本功能,完成算术、逻辑运算+、。取得操作数寄存器组、立即数输出、存放运算结果寄存器组、数据总线暂存运算的中间结果Q寄存器、移位寄存器,6,运算器基本功能,获得运算结果的状态C、Z、V、S理解、响应控制信号,7,1位 ALU,最低位,其他位,8,全加器电路,Sum=(A*B*CarryIn)+(A*B*CarryIn)+(A*B*CarryIn)+(A*B*CarryIn)CarryOut=(B*CarryIn)+(A*CarryIn)+(A*B),9,加法器设计过程,输入条件:根据输入条件,得到真值表

3、,并写出逻辑表达式;根据逻辑表达式实现逻辑电路。如何实现4位的加法器呢?,10,4位加法器设计,思路1:同1位加法器设计,写真值表,逻辑表达式,实现逻辑电路。思路2:用1位加法器串联起来,得到4位的加法器。,11,4位加法器设计,FA,FA,FA,FA,1,0,0,1,1,1,0,1,0,1,0,1,1,1,0,0,0,最低位进位为0,低位的进位输出是高位的进位输入,12,超前进位生成,如何能提前得到Cout?显然:1.当a=b=0时,Cout=0;2.当a=b=1时,Cout=1;3.当a=1,b=0或a=0,b=1时,Cout=Cin.由此可得:C1=a1b1+(a1+b1)C0;C2=a

4、2b2+(a2+b2)C1;C3=a3b3+(a3+b3)C2;C4=a4b4+(a4+b4)C3.,定义:Pi=ai+bi;Gi=aibi通过单独的进位电路,可以同时得到计算结果和进位,13,其它结果标志,Z=F1 F2 F3 F4S=最高位OV=f1*f2*fs+f1*f2*fs,14,补码减法,根据算术运算规则:a-b补=a补+-b补-b的补码为:将b补的各位求反,并加1。由此,我们可以用加法器实现减法。,加法器,15,将加法和减法组合,给定控制命令C=0,则ALU完成加法a+b;C=1,完成减法a-b。可以用选择器实现如下:,16,原码乘法,从一个简单的例子开始:,17,二进制乘法算法

5、描述,基本算法:若乘数的当前位=1,将被乘数和部分积求和。若乘数的当前位=0,则跳过。将部分积移位。所有位都完成后,部分积即为最终结果。N 位乘数*M 位被乘数=N+M 位的积 乘法显然比加法更复杂但比10进制乘法要简单,18,乘法算法实现(一),19,原码乘法的实现(一),64-位被乘数寄存器,64-位 ALU,64-位 部分积寄存器,32-位乘数寄存器,20,32-位被乘数寄存器,32-位 ALU,64-位 部分积寄存器,32-位乘数寄存器,Product,Multiplier,Multiplicand,32-bit ALU,Shift Right,Write,Control,32 bit

6、s,32 bits,64 bits,Shift Right,原码乘法的实现(二),21,实现(二)与(一)比较,实现(一)的不足:被乘数的一半存储的只是0,浪费存储空间每次加法实际上只有一半的位有效,浪费了计算能力实现(二)的改进:只在部分积左边进行加法。在减少加法器位数的同时,并没有减低积的位数。,22,乘法算法实现(二),23,32-位被乘数寄存器,32-位ALU,64-位部分积寄存器(0-位乘数寄存器),Product,(Multiplier),Multiplicand,32-bit ALU,Write,Control,32 bits,64 bits,Shift Right,原码乘法的实

7、现(三),24,实现(三)的优点,实现(二)解决了对加法器位数的浪费需要注意的是,乘数寄存器也存在浪费的情况:我们把已经完成的乘数位移出,移入的是0解决这个浪费,可以把乘数和部分积的低位结合起来。,25,补码乘法,方案一:将补码转换为原码绝对值,进行原码的正数乘法最后,根据以下原则得到符号位,并转换回补码表示:同号为正异号为负方案二:补码直接乘布斯算法,26,i=0,补码乘法运算,补码乘法的实现算法,先复习几个概念:补补ss12XnX+Y补=X补+Y补 X-Y补=X补-Y补=X补+-Y补X补-X0 i*2-i补码乘法X补=X0 X1 X2.XnY补=Y0 Y1 Y2.Yn,i=1,n,i=1,

8、n,n,Y=-Y0+Yi*2-i=(Yi+1-Yi)*2-i,27,补码乘法运算,1.当Y为正数时,Y补=Y0Y1Y2 YnX*Y补=X补*(0.Y1Y2 Yn)=X补*(-Y0+Yi*2-i)2.当Y为负数时,Y补=Y0Y1Y2 YnY=Y补-2=0.Y1Y2 Yn-1 X*Y=X*(0.Y1Y2 Yn-1)=X*0.Y1Y2 Yn-XX*Y补=X补*(0.Y1Y2 Yn)-X补=X补*(-Y0+Yi*2-i)因此,X*Y补=X补*(-Y0+Yi*2-i)=X补*(Yi+1-Yi)*2-i,i=1,n,i=1,n,i=1,n,i=0,n,28,补码乘法运算,用的值乘补,达到补乘补,求出补,不

9、必区分符号与数值位。乘数最低一位之后要补初值为的一位附加线路,并且每次乘运算需要看附加位和最低位两位取值的不同情况决定如何计算部分积,其规则是:被乘数被乘数,29,0 0 0 0 0 00 0 0 0 0 01 1 0 0 1 11 1 0 0 1 11 1 1 0 0 11 1 1 1 0 00 0 1 1 0 10 0 1 0 0 10 0 0 1 0 01 1 0 0 1 11 1 0 1 1 1,部分积,乘数,附加位,1 0 1 1 0 0 开始情形0 1 0 1 1 0 00+0并右移 10-X1 0 1 0 1 1 并右移1 1 0 1 0 1 11+0并右移 01+X1 1 1

10、0 1 0 并右移 10-X1 1 1 0 1 0 且不再移位,X*Y补=1 0 1 1 1 1 1 1 0即 X*Y=-0.1 0 0 0 0 0 1 0,X=+0.1 1 0 1Y=-0.1 0 1 0,30,布斯算法,布斯算法原理:虽然乘法是加法的重复,但也可以将它理解成加法和减法的组合。例如:十进制乘法 6 x 99.6x99=6x100 6x1=600 6=594,31,二进制举例:0111 x 0011=?,我们也可以把它看成是下面计算过程:0 7*1+7*4=0 7+28=21,布斯算法,32,Booths Implementation overview,33,乘法:小结,在加法

11、器上增加硬件:Q寄存器控制部分实现上可以进行一些优化只介绍了基本原理,还有许多技术可以提高乘法性能,34,除法运算,在计算机内实现除运算时,存在与乘法运算类似的几个问题:加法器与寄存器的配合,被除数位数更长,商要一位一位地计算出来等。这可以用左移余数得到解决,且被除数的低位部分可以与最终的商合用同一个寄存器,余数与上商同时左移。除法可以用原码或补码计算,都比较方便,也有一次求多位商的快速除法方案,还可以用快速乘法器完成快速除法运算。,35,原码一位除运算,Y/X 原=(X+Y)(Y X)原码一位除是指用原码表示的数相除,求出原码表示的商。除操作的过程中,每次求出一位商。从理解原理考虑,用恢复余

12、数除法讲解计算机内的实现方法更直观方便,即确定上商应为还是为时,必须用被除数或中间余数减去除数,通过检查本次求得的余数为正还是为负才能知道,而不象人计算时用眼睛直接看出来的。若求出一个为负的余数来,通常应首先恢复其值为正,再求下一位商才有道理。但计算机内从来不用这种办法,而是直接用求得的负余数求下一位商。可以吗?为什么?,36,原码一位除运算,Y/X 原=(X+Y)(Y/X)例如:X=-0.1101 Y=0.1011 0.1101 00 1011 00000初态 0.1101 0.1011001 0110 00000第次 110101 0010 00010第次 1001000 1010 001

13、10第次 110101 0100 01100第次1010000 0111 01101第次 1101 0111,X 和 Y 符号异或为负 最终商原码表示为:1 1101余数为:0.0111*2-4,37,加减交替除法原理证明,1.若第 i-1次求商余数为+R,商1 余数左移得 2R。2.则第 i 次求商 R=2R-Y3.则第 i+1次求商 R=2(R+Y)-Y=2R+Y实质是:对上次负差直接左移,本次用+Y求商即可.,i-1,i-1,i,i-1,若 R 0 则,i,若 R 0 商 0,i,恢复余数为正且左移得 2(R+Y),i,i+1,i,i,38,0 0 1 0 1 11 1 0 0 1 11

14、 1 1 1 1 01 1 1 1 0 00 0 1 1 0 10 0 1 0 0 10 1 0 0 101 1 0 0 1 10 0 0 1 0 10 0 1 0 1 01 1 0 0 1 11 1 1 1 0 11 1 1 0 1 00 0 1 1 010 0 0 1 1 1,0 0 0 0 0 开始情形-Y0 0 0 0 0 0,商10 0 0 1 0 左移1位-Y0 0 0 1 1 0,商10 0 1 1 0 左移1位-Y0 0 1 1 0 0,商1,被除数(余数),商,+),+),+),+),+),39,原码一位除运算,Y/X 原=(X+Y)(Y/X)例如:X=-0.1101 Y=0

15、.1011 0.1101 00 1011 00000初态 0.1101 0.1011011 1100 00000第次 110101 0010 00010第次 1001000 1010 00110第次 110111 1010 01100第次1010000 0111 01101第次 1101 0111,X 和 Y 符号异或为负 最终商原码表示为:1 1101余数为:0.0111*2-4,40,补码除法运算,补码除法与原码除法很类似差别仅在于:被除数与除数为补码表示,直接用补码除,求出反码商,再修正为近似的补码商.实现中,求第一位商要判数符号的同异,同号,作减法运算,异号,则作加运算;上商,余数与除

16、数同号,商,作减求下位商,余数与除数异号,商,作加求下位商;商的修正:多求一位后舍入,或最低位恒置,41,1 1 0 1 1 10 0 1 1 0 10 0 0 1 0 00 0 1 0 0 01 1 0 0 1 11 1 1 0 1 11 1 0 1 1 00 0 1 1 0 10 0 0 0 1 10 0 0 1 1 01 1 0 0 1 11 1 1 0 0 11 1 0 0 1 0,+),+),+),+),被除数,0 0 0 0 0 开始情形+Y,二数异号0 0 0 0 1 符号同,商10 0 0 1 0 余数左移-Y0 0 0 1 0 符号异,商00 0 1 0 0 余数左移+Y0 0 1 0 1 符号同,商10 1 0 1 0 余数左移-Y0 1 0 1 0 符号异,商0 1 0 1 0 1 左移,最低位商1,商,结果 1 0 1 0 1,42,32-位除数寄存器,32-位ALU,64-位余数(被除数)寄存器,余数,(商),除数,32-bit ALU,Write,Control,32 bits,64 bits,左移,除法的实现,43,小结,ALU的基本功能:算术、逻辑运算1位ALU:最基本的功能:加法、与、或位数扩展:快速进位功能扩展:减法、乘法、除法,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号