计算机组成原理08-计算机的运算方法03.ppt_第1页
计算机组成原理08-计算机的运算方法03.ppt_第2页
计算机组成原理08-计算机的运算方法03.ppt_第3页
计算机组成原理08-计算机的运算方法03.ppt_第4页
计算机组成原理08-计算机的运算方法03.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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的时间延迟为 3T+3T

4、=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 = 0.1

8、101, 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、一次只进行两个数相加。 3、

9、由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 . 00000 + 0 .

10、1101 +X 0 . 1101X+0 0 . 0110 12-1 (X+0) + 0 . 1101+X 1 . 0011 1X+2-1 (X+0) 0 . 1001 11 2-1 (X+2-1 (X+0) + 0 . 0000+0 0 . 1001 110+2-1 (X+2-1 (X+0) 0 . 0100 1112-10+2-1 (X+2-1 (X+0) + 0 . 1101+X 1 . 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。

11、 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 起到判断运算的作用,运算后,Y 的

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

13、. 1101+X 1 . 0011 1X+2-1 (X+0) 0 . 1001 11 2-1 (X+2-1 (X+0) + 0 . 0000+0 0 . 1001 110+2-1 (X+2-1 (X+0) 0 . 0100 1112-10+2-1 (X+2-1 (X+0) + 0 . 1101+X 1 . 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、原码一位乘法,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1,

14、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=1,+X,0,当堂做题,实现原码一位乘法的逻辑电路框图

15、,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寄存器是用移位寄存器实现的,最低位为B

16、ALU的控制命令。 相乘之积最低一位的值右移时将移入C寄存器的最高数值位, 使相乘之积的低位部分保存进C寄存器中,原乘数Y逐位丢失。,3.1、原码一位乘法,第六章 计算机的运算方法,3、定点乘法运算 3.1、原码一位乘法 3.2、补码一位乘法(重点:布斯乘法) 3.3、补码两位乘法 3.4、阵列乘法器,方法:充当计算机! 严格按照运算法则去做, 不加思考,态度认真, 保证结果正确。,1)校正法 采用补码后,正数的补码与原码相同,算法可以相同。 负数的补码与原码不同,所以不能套用原码一位乘法法则。 是否可以将补码按照原码一位法则运算,然后对乘的结果进行校 正,得到正确的XY补?,X补=X0. X

17、1 X2 Xn Y补=Y0. Y1 Y2 Yn ( X0 Y0 为符号位 ) X*Y补 = X补 * (0. Y1 Y2 Yn )+ -X补* Y0 X符号任意,Y0 X * Y 补 = X补 * Y补 (算法与原码相同) X符号任意,Y0 X * Y 补 = X补 * (0. Y1 Y2 Yn )+ -X补,3.2、补码一位乘法,00 . 0000 设部分乘积A=0 + 00 . 1101 Yn=1,+X补 00 . 1101 00 . 0110 1 A、C 同时右移一位 + 00 . 0000 Yn=0,+0 00 . 0110 00 . 0011 01 A、C 同时右移一位 + 00 .

18、 1101 Yn=1,+X补 01 . 0000 00 . 1000 001 A、C 同时右移一位 + 00 . 0000 Yn=0, 00 . 1000 00 . 0100 0001 A、C 同时右移一位 + -X补 11 . 0011 XY补= 11 . 0111 0001,设: X原 = 0.1101,Y原 = 1.1011。 XY原 = 1 . 1000 1111 X补 = 0.1101,Y补 = 1.0101。 XY补 = 1 . 0111 0001 = |X|Y|+ -X补,3.2、补码一位乘法,补码运算的符号位不用单独处理。,因为现在的计算机都是补码运算,所以不用校正法,用比较法

19、, 但是讲校正法要在比较法的基础上才好理解,所以先讲校正法。 2) 比较法(难点 、重点) 比较法是由 布斯 (Booth)夫妇提出的,故有称为Booth乘法。 校正法由公式: X补 * Y补 = X补 * (0. Y1 Y2 Yn )+ -X补* Y0 进一步推倒变换,按机器执行顺序求出每一步的部分积如下:,3.2、补码一位乘法,Z0补=0 Z1补= 2-1 Z0补 + (Yn+1-Yn)X补 设:Yn+1=0 Z2补= 2-1 Z1补 + (Yn-Yn-1)X补 Zn补= 2-1 Zn-1补 + (Y2-Y1)X补 所以:XY补 = Zn+1补=Zn补 + (Y1-Y0)X补,根据以上公式

20、,在机器中具体实现时要做适当修正。 比较乘数Y相邻两位Yn+1 和 Yn,于是补码一位乘法法则为: 判断位 Yi Yi+1 操作内容 00部分积 + 0,右移1位 11部分积 + 0,右移1位 10部分积 +-X补,右移1位 01部分积 +X补,右移1位,1) 被乘数 X 与 部分积 P 取双符号位,符号位一并参加运算。 2) 乘数 Y 末增设 Yn+1=0 ;根据Yn,Yn+1判断位,进行n+1步加 法,最后一步不移位。 3) 设部分积初值=0。,3.2、补码一位乘法,补码右移 前面补符号位,X补 = 00.11011 -X补 = 11.00101 Y补 = 1.101110 部分积初始=0

21、 乘数Y 设Yn+1=0判断 YnYn+1 00.00000 11011100 + 00.0000000 : +0 00.00000 00.00000 0 1101110 + 11.00101 10:+ -X补 11.00101 11.10010 10 110111 + 00.0000011 : + 0 11.10010 11.11001 010 11011 + 00.00000 11:+0 11.11001 11.11100 1010 1101 + 00.11011 01 : + X补 00.10111 00.01011 11010110 + 11.00101 10:+ -X补 11.100

22、00 11.11000 01101011 11:+0,A,C,Yn Yn+1,LDR0,LDR1,+,B,原码,反码,&,Yn,Yn+1,&,Yn,Yn+1,+1,多路开关,被乘数X,乘数Y 积的低位部分,部分积X*Y 积的高位部分,01,10,步数计数器,3.2、补码一位乘法,ALU,第六章 计算机的运算方法,3、定点乘法运算 3.1、原码一位乘法 3.2、补码一位乘法 3.3、补码两位乘法 3.4、阵列乘法器,方法:充当计算机! 严格按照运算法则去做, 不加思考,态度认真, 保证结果正确。,将补码一位乘法(比较法)合成两步进而得补码两位乘法法则为:,3.3、补码两位乘法,1)初始设置:设部分积为0,Yn+1=0 2)符号参加运算:设置部分积与被乘数三个符号位。 乘数Y数值位数n为偶数设两个符号位;为奇数设一个符号位; 3)运算步骤:根据 Yn-1, Yn, Y n+1 判断操作; 4)最后一步:乘数Y数值位数n为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论