运算功能及其硬件实现

上传人:豆浆 文档编号:50742418 上传时间:2018-08-10 格式:PPT 页数:43 大小:264KB
返回 下载 相关 举报
运算功能及其硬件实现_第1页
第1页 / 共43页
运算功能及其硬件实现_第2页
第2页 / 共43页
运算功能及其硬件实现_第3页
第3页 / 共43页
运算功能及其硬件实现_第4页
第4页 / 共43页
运算功能及其硬件实现_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《运算功能及其硬件实现》由会员分享,可在线阅读,更多相关《运算功能及其硬件实现(43页珍藏版)》请在金锄头文库上搜索。

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

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

3、8加法器设计过程 输入条件: 根据输入条件,得到真值表,并写出逻 辑表达式; 根据逻辑表达式实现逻辑电路。 如何实现4位的加法器呢?94位加法器设计 思路1: 同1位加法器设计,写真值表,逻辑表达式 ,实现逻辑电路。 思路2: 用1位加法器串联起来,得到4位的加法器。104位加法器设计FAFAFAFA10011101010111000 最低位 进位为0低位的进位输 出是高位的进 位输入11超前进位生成如何能提前得到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+

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

5、11001x0001原码乘法 从一个简单的例子开始:16二进制乘法算法描述 基本算法: 若乘数的当前位 = 1, 将被乘数和部分积求 和。 若乘数的当前位= 0,则跳过。 将部分积移位。 所有位都完成后,部分积即为最终结果。 N 位乘数 * M 位被乘数 = N+M 位的积 乘法显然比加法更复杂 但比10进制乘法要简单17乘法算法实现 (一)3. 将乘数寄存器右移1位DoneYes2. 将被乘数寄存器左移1位.No1.乘数最低位 是否为0?Multiplier0 = 0Multiplier0 = 11a. 将被乘数和部分积求和并存入部分 积寄存器中是否 结束?开始18原码乘法的实现 (一) 6

6、4-位被乘数寄存器, 64-位 ALU, 64-位 部分积寄存器, 32-位乘数寄存器ProductMultiplierMultiplicand64-bit ALUShift LeftShift RightWrite Control32 bits64 bits64 bitsMultiplier = datapath + control19 32-位被乘数寄存器,32 -位 ALU, 64-位 部分积寄存器, 32-位乘数寄存器ProductMultiplierMultiplican d32-bit ALUShift RightWriteControl32 bits32 bits64 bitsS

7、hift Right原码乘法的实现 (二)20实现(二)与(一)比较 实现(一)的不足: 被乘数的一半存储的只是0,浪费存储空间 每次加法实际上只有一半的位有效,浪费了 计算能力 实现(二)的改进: 只在部分积左边进行加法。 在减少加法器位数的同时,并没有减低积的 位数。21乘法算法实现 (二)3. 将乘数寄存器右移1位DoneYes2. 将部分积寄存器右移1位.No1.乘数最低位 是否为0?Multiplier0 = 0Multiplier0 = 11a. 将被乘数和部分积左半部分求和 并存入部分积寄存器左半部分中是否 结束?开始22 32-位被乘数寄存器, 32 -位ALU, 64-位部

8、分积寄存器 (0-位乘数寄存器)Product (Multiplier)Multiplican d32-bit ALUWriteControl32 bits64 bitsShift Right原码乘法的实现 (三)23实现(三)的优点 实现(二)解决了对加法器位数的浪费 需要注意的是,乘数寄存器也存在浪费 的情况: 我们把已经完成的乘数位移出,移入的是0 解决这个浪费,可以把乘数和部分积的低位 结合起来。24补码乘法 方案一: 将补码转换为原码绝对值,进行原码的正数 乘法 最后,根据以下原则得到符号位,并转换回 补码表示: 同号为正 异号为负 方案二:补码直接乘 布斯算法25i=0补码乘法运算

9、补码乘法的实现算法,先复习几个概念:补 补 ss12Xn X+Y补 = X补+ Y补 X-Y补 = X补- Y补 = X补+ -Y补X补 -X0 i * 2-i 补码乘法 X补 =X0 X1 X2 . Xn Y补 =Y0 Y1 Y2 . Yni=1ni=1nn Y = -Y0 + Yi * 2-i = (Yi+1 - Yi ) * 2-i 26补码乘法运算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-1X*Y =

10、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-ii=1ni=1ni=1ni=0n27补码乘法运算用的值乘补,达到补乘补, 求出补,不必区分符号与数值位。 乘数最低一位之后要补初值为的一位附加线 路,并且每次乘运算需要看附加位和最低位两 位取值的不同情况决定如何计算部分积,其规 则是: 被乘数 被乘数 280 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1

11、 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 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 0 1 0 并右移10 -X 1 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 0X= +0. 1 1 0 1Y= -0. 1 0 1

12、0 29布斯算法 布斯算法原理: 虽然乘法是加法的重复,但也可以将它理解 成加法和减法的组合。 例如:十进制乘法 6 x 99 6x99 = 6x100 6x1=600 6 = 59430 二进制举例: 0111 x 0011 = ?101010000000000111011101100x1110z 我们也可以把它看成是下面计算过程: y0 7*1 + 7*4 = 0 7 + 28 = 21 布斯算法31Booths Implementation overview32乘法:小结 在加法器上增加硬件: Q寄存器 控制部分 实现上可以进行一些优化 只介绍了基本原理,还有许多技术可以 提高乘法性能3

13、3除法运算 在计算机内实现除运算时,存在与乘法 运算类似的几个问题:加法器与寄存器 的配合,被除数位数更长,商要一位一 位地计算出来等。这可以用左移余数得 到解决,且被除数的低位部分可以与最 终的商合用同一个寄存器,余数与上商 同时左移。 除法可以用原码或补码计算,都比较方 便,也有一次求多位商的快速除法方案 ,还可以用快速乘法器完成快速除法运 算。34原码一位除运算 Y / X 原 =( X + Y )( Y X )原码一位除是指用原码表示的数相除,求出原 码表示的商。除操作的过程中,每次求出一位商。从理解原理考虑,用恢复余数除法讲解计算机 内的实现方法更直观方便,即确定上商应为还是 为时,必须用被除数或中间余数减去除数,通过 检查本次求得的余数为正还是为负才能知道,而不 象人计算时用眼睛直接看出来的。若求出一个为负 的余数来,通常应首先恢复其值为正,再求下一位 商才有道理。但计算机内从来不用这种办法,而是 直接用求得的负余数求下一位商。可以吗?为什么 ?35原码一位除运算 Y / X 原 =( X + Y ) ( Y / X ) 例如: X = - 0.1101 Y = 0.10110.1101 00 1011 00000 初态0.1101 0.1011001 0110 00000 第次110101

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号