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

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

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

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

2、的运算方法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、补码定点加、减运算(减法通过加法来实现)2.2、溢出概念与检测方法(数值超

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

4、计算机中使用的) 从加快进位信号的传送速度考虑,可以实现多位的并行进位。 即各位之间几乎同时产生送到高位的进位输出信号。 采用“超前进位产生电路”来同时形成各位进位,从而实现快速加法。只要同时输入X1X4,Y1Y4和C0,几乎同时输出C14和F1F4。 用四片4位ALU电路可组成16位ALU。(1110 1101 0101 0001) 片内进位是并行快速的,但片间进位是串行慢速的,计算时间长。Review:算术逻辑单元把16位ALU中的每四位作为一组,用类似四位超前进位加法器“位间快速进位” 的方法来实现16位ALU的 “组间快速进位” 。16位快速ALU第六章 计算机的运算方法3、定点乘法运

5、算 3.1、原码一位乘法 3.2、补码一位乘法 3.3、补码两位乘法 3.4、阵列乘法器注释: 前面讲的内容帮助同学们打开思路:怎么设计运算器; 机器数采用什么表示(原、反、补)对运算最有利。硬件设计时,还要考虑提高硬件运算速度。 所以,讲乘除法要逐渐从提高计算机的运算速度来考虑。乘法运算可以通过硬件实现,也可以通过软件来实现; 硬件实现乘法是以加法器为基础逐步累加而成。1)、软件方法:通过乘法子程序,把乘法编程为累次加法运算,从而在加法器中实现。该方法经济,但运算速度慢。2)、硬件方法:A、在加法器中增加一些移位和控制部件来实现。这种方法在早期的计算机采用。B、随着大规模集成电路的发展,现在

6、设计了阵列乘法器。设置专门的多位乘法部件。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 = 0.1101, Y = - 0.1011。让我们先用习惯的笔算方法求其乘积,其过程如下:0 . 1101 乘数 X(4位) 0 . 1011 被乘数 Y(4位)0 . 11010 . 11010 . 00

8、00 + 0 . 11010 . 10001111 乘积 Z(8位)3.1、原码一位乘法注意:原码的符号位单独处理。 XY 原 = 1 . 10001111手算方法存在的问题:1、小数点是移动的。2、常规加法器中,一次只能进行两个数相加,无法解决n个数一次性相加。3、n位数相乘用2n-1位加法器。所以需要解决的问题:1、小数点固定。2、一次只进行两个数相加。3、由n位加法器完成。3.1、原码一位乘法0 . 1101 乘数 X 0 . 1011 被乘数 Y0 . 11010 . 11010 . 0000+ 0 . 11010 . 10001111 乘积 Z3.1、原码一位乘法算法改造:X Y =

9、 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 . 00000+ 0 . 1101 +X0 . 1101X+00 . 0110 12-1 (X+0)+ 0 . 1101+X

10、1 . 0011 1X+2-1 (X+0)0 . 1001 11 2-1 (X+2-1 (X+0)+ 0 . 0000+00 . 1001 110+2-1 (X+2-1 (X+0)0 . 0100 1112-10+2-1 (X+2-1 (X+0)+ 0 . 1101+X1 . 0001 111X+ 2-10+2-1 (X+2-1 (X+0)0 . 1000 11112-1X+ 2-10+2-1 (X+2-1 (X+0)设: X = 0.1101, Y = - 0.1011。XY = 2-1 X + 2-1 0 + 2-1 X + 2-1(X+0) 步骤如下:3.1、原码一位乘法1101Y XY

11、 原 = 1 . 10001111改造算法以后分析:1、小数点固定了。2、一次只进行两个数相加。3、由于相加在高n位进行,所以只设n位加法器就可以了。上述三个问题得到了解决。但是只能说这个算法可行,如果引入计算机执行, 还要与计算机的具体实现电路相结合。考虑电路执行效率:用的电路器件越少越好。3.1、原码一位乘法实施方案:1、运算法则: 若 Yi =1 则 +X; 若 Yi =0 则 +0。说明 Yi 起到判断运算的作用,运算后,Y 的值无需保留。这样,可以将 Yi 判断操作固定在最低位,即要求乘数Y每完成一步操作,右移一位。2、由于相加在高 n 位进行,乘积右移出的低位部分,可存入乘数Y的寄

12、存器高位空出部分。3、为了在机器中实现乘法运算,运算器必须设置三个寄存器 A、B、C。寄存器 A 存放部分积XY(初始为 0,最后存放乘积的高位部分)寄存器 B 存放被乘数 X(运算过程中不变)寄存器 C 存放乘数 Y(判断后不再保留,最后存放乘积的低位部分)3.1、原码一位乘法1101Y0 . 00000+ 0 . 1101 +X0 . 1101X+00 . 0110 12-1 (X+0)+ 0 . 1101+X1 . 0011 1X+2-1 (X+0)0 . 1001 11 2-1 (X+2-1 (X+0)+ 0 . 0000+00 . 1001 110+2-1 (X+2-1 (X+0)0

13、 . 0100 1112-10+2-1 (X+2-1 (X+0)+ 0 . 1101+X1 . 0001 111X+ 2-10+2-1 (X+2-1 (X+0)0 . 1000 11112-1X+ 2-10+2-1 (X+2-1 (X+0)设: X = 0.1101, Y = - 0.1011。3.1、原码一位乘法11011011011111111111YY最初是乘数,最后是积的低位部分。 XY 原 = 1 . 100011110 . 0000+ 0 . 1101 0 . 1101 A、C 同时右移一位0 . 0110 1+ 0 . 11011 . 0011 A、C 同时右移一位0 . 100

14、1 11 + 0 . 00000 . 1001 A、C 同时右移一位0 . 0100 111+ 0 . 11011 . 0001 A、C 同时右移一位1 . 1000 1111 110110110111111111113.1、原码一位乘法00000110100100100001部分乘A积初始=0设: X = 0.1101, Y = 1.1011。(绝对值相乘)符号位 = 0 1 = 1ALU000寄存器A1101寄存器C(Y)1011寄存器B(X)Cn=1,+XCn=1,+XCn=0,+0Cn=1,+X0当堂做题实现原码一位乘法的逻辑电路框图X = 1101Y = 1011 X*Y低位: 11

15、11X = 0.1101 被乘数 Y = 0.1011 乘数 X*Y =0.10001111X*Y 初始: 0000 X*Y 高位: 1000Yn判断位Yn判断位X = 0.1101 被乘数,Y = - 0.1011 乘数,X*Y = 1.100011111、A寄存器被清零,作为初始部分积XY。被乘数X放在 B寄存器中,乘数Y放在 C寄存器中。2、给出控制命令 AALU 和 BALU,在ALU完成部分积XY+被乘数X。3、ALU的输出经过移位电路向右移一位送入 A寄存器中。4、C寄存器是用移位寄存器实现的,最低位为BALU的控制命令。相乘之积最低一位的值右移时将移入C寄存器的最高数值位, 使相乘之积的低位部分保存进C寄存器中,原乘数Y逐位丢失。3.1、原码一位乘法第六章 计算机的运算方法3、定点

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

当前位置:首页 > 生活休闲 > 社会民生

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