计算机组成原理08-计算机的运算方法

上传人:san****019 文档编号:70825121 上传时间:2019-01-18 格式:PPT 页数:38 大小:992.31KB
返回 下载 相关 举报
计算机组成原理08-计算机的运算方法_第1页
第1页 / 共38页
计算机组成原理08-计算机的运算方法_第2页
第2页 / 共38页
计算机组成原理08-计算机的运算方法_第3页
第3页 / 共38页
计算机组成原理08-计算机的运算方法_第4页
第4页 / 共38页
计算机组成原理08-计算机的运算方法_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《计算机组成原理08-计算机的运算方法》由会员分享,可在线阅读,更多相关《计算机组成原理08-计算机的运算方法(38页珍藏版)》请在金锄头文库上搜索。

1、,系 统 总 线,存储器,运算器,控制器,接口与通信,输入/输出设备, 计算机组成原理 ,第六章 计算机的运算方法,运算器的基本结构:(P 281-283) ALU、移位门、寄存器组、 输入选择门和数据总线组成。 问题1、ALU电路没有记忆功能。 参与运算的数、运算的结果放那里? (A+B)+(C+D) 答:存放在寄存器组(多个寄存器)中。 问题2、ALU两个参加运算数与一个运算结果。 一次只有两个数参加运算, 究竟让哪个寄存器参加工作呢? 答:要进行选择(选择门电路)。,移位门,ALU,选择门 A,选择门 B,通用 寄存器组,数据总线,数据总线,运算器基本结构框图,参加运算的数 X,Y 参加

2、运算的数,运算结果,Review: 第六章 计算机的运算方法,1、 数据的表示方式 1.1、符号的处理(正数、负数) 1.2、数值的处理(数制转换) 1.3、小数点的处理(定点、浮点) 1.4、原码的表示方法 1.5、反码的表示方法 1.6、补码的表示方法(重点研究) 1.7、移码的表示方法 1.8、字符、汉字的表示方法( ASCII 码、内码) 1.9、校验码(奇偶校验、海明威校验、CRC校验),机器数的 表示方法,实际数的 表示方法,研究在机器中怎样用二进制表示十进制数,研究哪种机器数的表示方法更利简化运算,Review: 第六章 计算机的运算方法,2、定点加、减法运算与实现 2.1、补码

3、定点加、减运算(减法通过加法来实现) 2.2、溢出概念与检测方法(数值超出了表示范围) 2.3、补码定点加法器,注释: 前面我们讨论了数的补码表示方法,采用补码表示,减法可用加法来实现,对设计硬件来讲,只要设计一个加法器就可以实现加、减运算了,不需要再配一个减法器了。,Review: 第六章 计算机的运算方法,CPA,2.3、补码定点加法器,+A,+B,- B,实现加法运算的逻辑示例,A+B A AB A,Q,/Q,延迟时间 与非 1T 或非 1T 与门 2T 或门 2T 异或 3T 异或非 3T,关于设计电路的延迟时间,扩充:提高电路运算效率,一位全加器,对一位全加器来说,和Fn的时间延迟为

4、 3T+3T=6T。 设计电路时,电路总的延迟时间应该越小越好。,扩充:提高电路运算效率,Review:加法器,超前进位加法器(当前计算机中使用的) 从加快进位信号的传送速度考虑,可以实现多位的并行进位。 即各位之间几乎同时产生送到高位的进位输出信号。 采用“超前进位产生电路”来同时形成各位进位,从而实现快速加法。,只要同时输入X1X4,Y1Y4和C0,几乎同时输出C14和F1F4。,用四片4位ALU电路可组成16位ALU。(1110 1101 0101 0001) 片内进位是并行快速的,但片间进位是串行慢速的,计算时间长。,Review:算术逻辑单元,把16位ALU中的每四位作为一组,用类似

5、四位超前进位加法器 “位间快速进位” 的方法来实现16位ALU的 “组间快速进位” 。,16位快速ALU,第六章 计算机的运算方法,3、定点乘法运算 3.1、原码一位乘法 3.2、补码一位乘法 3.3、补码两位乘法 3.4、阵列乘法器,注释: 前面讲的内容帮助同学们打开思路:怎么设计运算器; 机器数采用什么表示(原、反、补)对运算最有利。 硬件设计时,还要考虑提高硬件运算速度。 所以,讲乘除法要逐渐从提高计算机的运算速度来考虑。,乘法运算可以通过硬件实现,也可以通过软件来实现; 硬件实现乘法是以加法器为基础逐步累加而成。 1)、软件方法:通过乘法子程序,把乘法编程为累次加法运算, 从而在加法器

6、中实现。该方法经济,但运算速度慢。 2)、硬件方法: A、在加法器中增加一些移位和控制部件来实现。 这种方法在早期的计算机采用。 B、随着大规模集成电路的发展,现在设计了阵列乘法器。 设置专门的多位乘法部件。,3、定点乘法运算,根据数的表示方法,乘法器又有: 原码乘法器,补码乘法器。 原码实现乘法运算方法简单, 补码实现加/减运算比较简单。 在以加/减运算为主的机器中多采用补码乘法器。 下面分别介绍原码、补码乘法。,3、定点乘法运算,第六章 计算机的运算方法,3、定点乘法运算 3.1、原码一位乘法 3.2、补码一位乘法 3.3、补码两位乘法 3.4、阵列乘法器,注释: 书上讲的原码两位乘法在计

7、算机中不是那么实现的, 所以该算法不做推广,不讲了。,原码一位乘法基本上是从手算演变过来,符号位单独处理。 两个原码表示的数相乘,它的运算规则是: 乘积的符号位 = 两数的符号相异或 乘积 = 两数的绝对值相乘 设 n 位被乘数X 和 乘数Y 用定点小数表示(定点整数同样) 被乘数: X原 = Xf . Xn-1 X1 X0 乘数: Y原 = Yf . Yn-1 Y1 Y0 乘积符号: Xf Yf 乘积:|X| |Y| Z原= ( Xf Yf ) + (0.Xn-1 X1 X0) (0.Yn-1 Y1 Y0) 于是原码与原码相乘就变成如何进行两个正数相乘的问题了。,3.1、原码一位乘法,设 X

8、 = 0.1101, Y = - 0.1011。 让我们先用习惯的笔算方法求其乘积,其过程如下:,0 . 1101 乘数 X(4位) 0 . 1011 被乘数 Y(4位) 0 . 1101 0 . 1101 0 . 0000 + 0 . 1101 0 . 10001111 乘积 Z(8位),3.1、原码一位乘法,注意:原码的符号位单独处理。, XY 原 = 1 . 10001111,手算方法存在的问题: 1、小数点是移动的。 2、常规加法器中, 一次只能进行两个数相加, 无法解决n个数一次性相加。 3、n位数相乘用2n-1位加法器。 所以需要解决的问题: 1、小数点固定。 2、一次只进行两个数

9、相加。 3、由n位加法器完成。,3.1、原码一位乘法,3.1、原码一位乘法,算法改造: X Y = X * 0.1011 = X *(0.1+0.00+0.001+0.0001) = 0.1*X + 0.00*X + 0.001*X + 0.0001*X = 0.1 X+ 0.0*X + 0.01*X + 0.001*X = 0.1 X + 0.1 0 + 0.1*X + 0.01*X = 0.1 X + 0.1 0 + 0.1 X + 0.1*(X+0) 0.1 = 2-1 对应操作:右移一位。 XY = 2-1 X + 2-1 0 + 2-1 X + 2-1(X+0),0 . 0000 0

10、 + 0 . 1101 +X 0 . 1101 X+0 0 . 0110 1 2-1 (X+0) + 0 . 1101 +X 1 . 0011 1 X+2-1 (X+0) 0 . 1001 11 2-1 (X+2-1 (X+0) + 0 . 0000 +0 0 . 1001 11 0+2-1 (X+2-1 (X+0) 0 . 0100 111 2-10+2-1 (X+2-1 (X+0) + 0 . 1101 +X 1 . 0001 111 X+ 2-10+2-1 (X+2-1 (X+0) 0 . 1000 1111 2-1X+ 2-10+2-1 (X+2-1 (X+0),设: X = 0.11

11、01, Y = - 0.1011。 XY = 2-1 X + 2-1 0 + 2-1 X + 2-1(X+0) 步骤如下:,3.1、原码一位乘法,1,1,0,1,Y, XY 原 = 1 . 10001111,改造算法以后分析: 1、小数点固定了。 2、一次只进行两个数相加。 3、由于相加在高n位进行,所以只设n位加法器就可以了。 上述三个问题得到了解决。 但是只能说这个算法可行,如果引入计算机执行, 还要与计算机的具体实现电路相结合。 考虑电路执行效率:用的电路器件越少越好。,3.1、原码一位乘法,实施方案: 1、运算法则: 若 Yi =1 则 +X; 若 Yi =0 则 +0。 说明 Yi

12、起到判断运算的作用,运算后,Y 的值无需保留。 这样,可以将 Yi 判断操作固定在最低位, 即要求乘数Y每完成一步操作,右移一位。 2、由于相加在高 n 位进行,乘积右移出的低位部分, 可存入乘数Y的寄存器高位空出部分。 3、为了在机器中实现乘法运算,运算器必须设置三个寄存器 A、B、C。 寄存器 A 存放部分积XY(初始为 0,最后存放乘积的高位部分) 寄存器 B 存放被乘数 X(运算过程中不变) 寄存器 C 存放乘数 Y(判断后不再保留,最后存放乘积的低位部分),3.1、原码一位乘法,1,1,0,1,Y,0 . 0000 0 + 0 . 1101 +X 0 . 1101 X+0 0 . 0

13、110 1 2-1 (X+0) + 0 . 1101 +X 1 . 0011 1 X+2-1 (X+0) 0 . 1001 11 2-1 (X+2-1 (X+0) + 0 . 0000 +0 0 . 1001 11 0+2-1 (X+2-1 (X+0) 0 . 0100 111 2-10+2-1 (X+2-1 (X+0) + 0 . 1101 +X 1 . 0001 111 X+ 2-10+2-1 (X+2-1 (X+0) 0 . 1000 1111 2-1X+ 2-10+2-1 (X+2-1 (X+0),设: X = 0.1101, Y = - 0.1011。,3.1、原码一位乘法,1,1,

14、0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,Y,Y最初是乘数,最后是积的低位部分。, XY 原 = 1 . 10001111,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,3.1、原码一位乘法,0,0,0,0,0,1,1,0,1,0,0,1,0,0,1,0,0,0,0,1,部分乘A积初始=0,设: X = 0.1101, Y = 1.1011。 (绝对值相乘),符号位 = 0 1 = 1,ALU,0,0,0,寄存器A,1,1,0,1,寄存器C(Y),1,0,1,1,寄存器B(X),Cn=1,+X,Cn=1,+X,Cn=0,+0,Cn

15、=1,+X,0,当堂做题,实现原码一位乘法的逻辑电路框图,X = 1101,Y = 1011 X*Y低位: 1111,X = 0.1101 被乘数 Y = 0.1011 乘数 X*Y =0.10001111,X*Y 初始: 0000 X*Y 高位: 1000,Yn判断位,Yn判断位,X = 0.1101 被乘数,Y = - 0.1011 乘数,X*Y = 1.10001111 1、A寄存器被清零,作为初始部分积XY。 被乘数X放在 B寄存器中,乘数Y放在 C寄存器中。 2、给出控制命令 AALU 和 BALU, 在ALU完成部分积XY+被乘数X。 3、ALU的输出经过移位电路向右移一位送入 A寄存器中。 4、C寄存器是用移位寄存器实现的,最低位为BALU的控制命令。 相乘之积最低一位的值右移时将移入C寄存器的最高数值位, 使相乘之积的低位部分保存进C寄存器中,原乘数Y逐位丢失。,3.1、原码一位乘法,第六章 计算机的运算方法,3、定点乘法运算 3.1、原码一位乘法 3.2、补码一位乘法(重点:布斯乘法) 3.3、补码两位乘法 3.4、阵列乘法

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

当前位置:首页 > 高等教育 > 大学课件

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