您好、欢迎来到现金彩票网!
当前位置:秒速时时彩 > 算术下溢 >

计算机组成原理(1)

发布时间:2019-07-24 21:15 来源:未知 编辑:admin

  计算机组成原理第四章 数值的机器运算 第四章 运算器是计算机进行算术运算和逻辑运算的主要部件 运算器的逻辑结构取决于机器的指令系统、 数据表示方法和运算方法等 本章主要讨论数值数据在计算机中实现算术运算和逻辑运算的方法, 以及运算部件的基本结构和工作原理 4.1 基本算术运算的实现4.1.1 加法器加法器是由全加器再配以其他必要的逻辑电路组成的。1.全加器基本的加法单元称为全加器, 它要求三个输入量:操作数Ai和Bi、 低位传来的进位Ci-1, 并产生两个输出量: 本位和Si、 向高位的进位Ci。FAAiBiSiCi-1Ci 4.1 基本算术运算的实现全加器的逻辑表达...

  计算机组成原理第四章 数值的机器运算 第四章 运算器是计算机进行算术运算和逻辑运算的主要部件 运算器的逻辑结构取决于机器的指令系统、 数据表示方法和运算方法等 本章主要讨论数值数据在计算机中实现算术运算和逻辑运算的方法, 以及运算部件的基本结构和工作原理 4.1 基本算术运算的实现4.1.1 加法器加法器是由全加器再配以其他必要的逻辑电路组成的。1.全加器基本的加法单元称为全加器, 它要求三个输入量:操作数Ai和Bi、 低位传来的进位Ci-1, 并产生两个输出量: 本位和Si、 向高位的进位Ci。FAAiBiSiCi-1Ci 4.1 基本算术运算的实现全加器的逻辑表达式为Si=Ai Bi Ci-1Ci=AiBi+(Ai Bi)Ci-12.串行加法器与并行加法器在串行加法器中, 只有一个全加器, 数据逐位串行送入加法器进行运算。如果操作数长n位, 加法就要分n次进行, 每次只能产生一位和。 4.1 基本算术运算的实现 并行加法器由多个全加器组成, 其位数的多少取决于机器的字长, 数据的各位同时运算。 并行加法器虽然操作数的各位是同时提供的, 但低位运算所产生的进位有可能会影响高位的运算结果。 例如: 1111和0001相加, 最低位产生的进位将逐位影响至最高位。 因此, 并行加法器的最长运算时间主要是由进位信号的传递时间决定的。 提高并行加法器速度的关键是尽量加快进位产生和传递的速度。 4.1 基本算术运算的实现4.1.2 进位的产生和传递进位表达式Ci=AiBi+(Ai Bi)Ci-1AiBiAi Bi进位产生函数用Gi表示进位传递函数用Pi表示Gi的含义是: 若本位的两个输入均为1, 必然要向高位产生进位。Pi的含义是: 当两个输入中有一个为1, 低位传来的进位Ci-1将超越本位向更高的位传送。Ci=Gi+PiCi-1 4.1 基本算术运算的实现把n个全加器串接起来, 就可进行两个n位数的相加。 串行进位又称行波进位, 每一级进位直接依赖于前一级的进位, 即进位信号是逐级形成的。C1=G1+P1C0C2=G2+P2C1Cn=Gn+PnCn-1 4.1 基本算术运算的实现Sn串 行进位链的总延迟时间与字长成正比。 假定, 将一级门的延迟时间定为ty, 从上述公式中可看出, 每形成一级进位的延迟时间为2ty。 在字长为n位的情况下, 若不考虑Gi、 Pi的形成时间, 从C0Cn的最长延迟时间为2nty。FAFAFAC1C2Cn-1CnA1B1A2 B2AnBnS1S2C0 4.1 基本算术运算的实现4.1.3 并行加法器的快速进位1.并行进位方式并行进位又叫先行进位、 同时进位, 其特点是各级进位信号同时形成。C1=G1+P1C0C2=G2+P2C1=G2+P2G1+P2P1C0C3=G3+P3G2+P3P2G1+P3P2P1C0C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0  上述各式中所有各位的进位均不依赖于低位的进位, 各位的进位可以同时产生。 这种进位方式是快速的, 若不考虑Gi、 Pi的形成时间, 从C0Cn的最长延迟时间仅为2ty。 随着加法器位数的增加, Ci的逻辑表达式会变得越来越长 所以, 完全采用并行进位是不现实的。4.1 基本算术运算的实现 4.1 基本算术运算的实现2.分组并行进位方式实际上, 通常采用分组并行进位方式。 这种进位方式是把n位字长分为若干小组, 在组内各位之间实行并行快速进位, 在组间既可以采用串行进位方式, 也可以采用并行快速进位方式, 因此有两种情况。 4.1 基本算术运算的实现(1)单级先行进位方式这种进位方式又称为组内并行、 组间串行方式。 以16位加法器为例, 可分为四组, 每组四位。第1小组组内的进位逻辑函数C1、 C2、 C3、 C4的表达式与前述相同, C1~C4信号是同时产生的, 从C0出现到产生C1~C4的延迟时间是2ty。4位CLA加法器4位CLA加法器4位CLA加法器4位CLA加法器A4~A1A8~A5A12~A9A16~A13B4~B1B8~B5B12~B9B16~B13S4~S1S8~S5S12~S9S16~S13C4C8C12C16C0 4.1 基本算术运算的实现         C16C12C8C4C0C1City2468   =G1*+P1*C04.1 基本算术运算的实现(2)多级先行进位方式多级先行进位又称组内并行、 组间并行进位方式。字长为16位的两级先行进位加法器, 第一小组的最高位进位C4:C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0组进位产生函数G1*组进位传递函数P1*依次类推:C8=G2*+P2*G1*+P2*P1*C0C12=G3*+P3*G2 C16=G4*+P4*G3*+P4*P3*G2*+P4*P3*P2*G1*+P4*P3*P2*P1*C0*+P3*P2*G1*+P3*P2*P1*C0 4.1 基本算术运算的实现CLA电路4位BCLA加法器4位BCLA加法器4位BCLA加法器4位BCLA加法器A4~A1A8~A5A12~A9A16~A13B16~B13B12~B9B8~B5B4~B1S4~S1S8~S5S12~S9S16~S13C0C16P2P1P3P4G1G2G3G4C4C8C12 若不考虑Gi、 Pi的形成时间, C0经过2ty产生第1小组的C1、 C2、 C3及所有组进位产生函数Gi*和组进位传递函数Pi*; 再经过2ty, 产生C4、C8、 C12、 C16; 最后经过2ty后, 才能产生第2、3、 4小组内的C5~C7、 C9~C11、 C13~C15。4.1 基本算术运算的实现   C16C12C8C4C0C1City246      4.1 基本算术运算的实现 4位CLA加法器A4~A1B4~B1S4~S1C4C0四位CLA加法器四位BCLA加法器BCLA加法器A4~A1B4~B1S4~S1C0P1G14.1 基本算术运算的实现 4.2 定点加减运算4.2.1 原码加减运算对原码表示的两个数进行加减运算时, 符号位不参与运算, 仅仅是两数的绝对值参与运算。计算机的实际操作是加还是减, 不仅取决于指令的操作码, 还取决于两个操作数的符号, 例如: 加法时可能要做减法(两数异号) ; 减法时又可能做加法(两数异号) , 所以原码加减运算的实现是比较复杂的。 4.2 定点加减运算4.2.2 补码加减运算1.补码加法两个补码表示的数相加, 符号位参加运算, 且两数和的补码等于两数补码之和, 即[X+Y]补=[X]补+[Y]补2.补码减法根据补码加法公式可推出:[X-Y]补=[X+(-Y)]补=[X]补+[-Y]补已知[Y]补求[-Y]补的方法是: 将[Y]补连同符号位一起求反, 末尾加“1”。 4.2 定点加减运算[-Y]补被称为[Y]补的机器负数, 由[Y]补求[-Y]补的过程称为对[Y]补变补(求补) , 表示为:[-Y]补=[[Y]补]变补 4.2 定点加减运算我们要注意将“ 某数的补码表示” 与“ 变补” 这两个概念区分开来。 一个负数由原码表示转换成补码表示时, 符号位是不变的, 仅对数值位的各位变反, 末尾加“1” 。 而变补则不论这个数的真值是正是负, 一律连同符号位一起变反, 末尾加“1” 。[Y]补表示的真值如果是正数, 则变补后[-Y]补所表示真值变为负数, 反之亦然。 4.2 定点加减运算例1: Y=-0.0110[Y]补=1.1010, [-Y]补=0.0110例2: Y=0.0110[Y]补=0.0110, [-Y]补=1.1010 4.2 定点加减运算3.补码加减运算规则补码加减运算规则如下:⑴ 参加运算的两个操作数均用补码表示;⑵ 符号位作为数的一部分参加运算;⑶ 若做加法, 则两数直接相加; 若做减法,则将被减数与减数的机器负数相加;⑷ 运算结果用补码表示。 4.2 定点加减运算例1: A=0.1011, B=-0.1110, 求: A+B∵[A]补=0.1011, [B]补=1.00100.1011+ 1.00101.1101[A+B]补=1.1101, A+B=-0.0011 4.2 定点加减运算0.1101[A-B]补=0.1101,A-B=0.1101例2: A=0.1011, B=-0.0010, 求: A-B∵[A]补=0.1011, [B]补=1.1110,[-B]补=0.00100.1011 + 0.0010 4.2 定点加减运算4.2.3 补码的溢出判断与检测方法1.溢出的产生在补码加减运算中, 有时会遇到这样的情况: 两个正数相加, 而结果的符号位却为1(结果为负) ; 两个负数相加, 而结果的符号位却为0(结果为正) 。例1: X=1011B=11D, Y=111B=7D[X]补=0,1011, [Y]补=0,01110,1 0 1 1+ 0,0 1 1 11,0 0 1 0 4.2 定点加减运算[X+Y]补=1,0010, X+Y=-1110B=-14D两正数相加结果为-14D, 显然是错误的。例2: X=-1011B=-11D, Y=-111B=-7D[X]补=1,0101 [Y]补=1,1001[X+Y]补=0,1110, X+Y=1110B=14D两负数相加结果为14D, 显然也是错误的。1,0 1 0 1+ 1,1 0 0 10,1 1 1 0 4.2 定点加减运算为什么会发生这种错误呢? 原因在于两数相加之和的数值已超过了机器允许的表示范围。字长为n+1位的定点整数(其中一位为符号位) , 采用补码表示, 当运算结果大于2n-1或小于-2n时, 就产生溢出。 4.2 定点加减运算设参加运算的两数为X、 Y, 做加法运算。若X、 Y异号, 不会溢出。若X、 Y同号, 运算结果为正且大于所能表示的最大正数或运算结果为负且小于所能表示的最小负数(绝对值最大的负数) 时, 产生溢出。将两正数相加产生的溢出称为正溢; 反之, 两负数相加产生的溢出称为负溢。 4.2 定点加减运算2. 溢出检测方法设: 被操作数为: [X]补=Xs,X1X2Xn操作数为: [Y]补=Ys,Y1Y2Yn其和(差) 为: [S]补=Ss,S1S2Sn(1)采用一个符号位两正数相加, 结果为负表明产生正溢; 两负数相加, 结果为正表明产生负溢。 因此可得出采用一个符号位检测溢出的方法:当Xs=Ys=0, Ss=1时, 产生正溢。当Xs=Ys=1, Ss=0时, 产生负溢。溢出=XsYsSs+XsYsSs 4.2 定点加减运算(2)采用进位位两数运算时, 产生的进位为Cs,C1C2Cn,其中: Cs为符号位产生的进位, C1为最高数值位产生的进位。两 正 数 相 加 ,当 最 高 有 效 位 产 生 进 位(C1=1) 而符号位不产生进位(Cs=0) 时, 发生正溢。两 负 数 相 加 ,当 最 高 有 效 位 没 有 进 位(C1=0) 而符号位产生进位(Cs=1) 时, 发生负溢。 4.2 定点加减运算(3)采用变形补码(双符号位补码)在双符号位的情况下, 把左边的符号位Ss1叫做真符, 因为它代表了 该数真正的符号, 两个符号位都作为数的一部分参加运算。 这种编码又称为变形补码。双符号位的含义如下:Ss1Ss2=00 结果为正数, 无溢出Ss1Ss2=01 结果正溢Ss1Ss2=10 结果负溢Ss1Ss2=11 结果为负数, 无溢出 4.2 定点加减运算当两位符号位的值不一致时, 表明产生溢出。溢出=Ss1 SS2 4.2 定点加减运算前例中字长为5位, 数的表示范围为-16~15,采用变形补码(双符号位) 运算, 则有:11+7=18(正溢)0 0,1 0 1 1+ 0 0,0 1 1 10 1,0 0 1 0-11+(-7)=-18(负溢)1 1,0 1 0 1+ 1 1,1 0 0 11 0,1 1 1 0 AC&BF0 10 1XXsYsFs寄存器寄存器加法器 YFYFF XFXX FXF1 F F__YY寄存器X寄存器加法器CPXCPX4.2 定点加减运算4.2.4 补码定点加减运算的实现补码加法: XF、 YF、 FX、 CPX&&1 AC A&C&BF0 10 1XXsYsFs寄存器寄存器加法器 YFF XFXX FXF1 F1F FYF__YY寄存器X寄存器加法器CPXCPX4.2 定点加减运算补码减法: XF、 YF、 1F、 FX、 CPX&1 AC 4.3.1 带符号数的移位操作算术移位应保持数的符号不变, 而数值的大小则要发生变化。 左移一位使数值增大一倍, 相当于该数乘以2, 而右移一位则使数值缩小一倍,相当于该数除以2。1. 原码的移位规则负数的原码移位后的空出位补0左移左移X1X2X2X3Xn-1XnXn011右移右移X10X2X1Xn-1Xn-2XnXn-1114.3 带符号数的移位和舍入操作 2. 补码的移位规则负数的补码左移后的空出位补0, 右移后的空出位补1。左移左移X1X2X2X3Xn-1XnXn011右移右移X11X2X1Xn-1Xn-2XnXn-1114.3 带符号数的移位和舍入操作 3. 移位功能的实现通常移位操作由移位寄存器来实现。 但也有一些计算机不设置专门的移位寄存器, 而在加法器的输出端加一个实现直传、 左移一位和右移一位的控制逻辑电路(称为移位器) 。分别用2FL、 FL和F/2L 这三个不同控制信号选择左移、 直传和右移操作。4.3 带符号数的移位和舍入操作 4.3.2 带符号数的舍入操作在算术右移中, 由于受硬件的限制, 运算结果有可能需要舍去一定的尾数, 会造成一些误差。 为了缩小误差, 就要进行舍入处理。1.恒舍(切断)这是一种最容易实现的舍入方法, 无论多余部分q位为何代码, 一律舍去, 保留部分p位不作任何改变。保留部分p位多余部分q位p+q位4.3 带符号数的移位和舍入操作 2. 冯诺依曼舍入法这种舍入法又称为恒置1法, 即不论多余部分q位为何代码, 都把p位的最低位置1。保留部分p位多余部分q位p+q位1保留部分p位多余部分q位p+q位0 1保留部分最低位为1保留部分最低位为04.3 带符号数的移位和舍入操作 3. 下舍上入法下舍上入就是0舍1入。 用将要舍去的q位部分的最高位作为判断标志, 如该位为0, 则舍去整个q位部分, 如该位为1, 则在前面的p位部分的最低位上加1。多余部分最高位为0保留部分p位 多余部分q位p+q位多余部分最高位为1 0保留部分p位 多余部分q位p+q位11+1114.3 带符号数的移位和舍入操作 4.查表舍入法用ROM存放下溢处理表, 每次经查表来读得相应的处理结果。 ROM表的容量为2K个单元, 每个单元字长为K-1位。 下溢处理表的内容设置一般采用的方法是: 当K位数据的高K-1位为全“1”时, 让那些单元按截断法填入K-1位全“1”, 其余单元都按最低位(即附加位) 0舍1入的结果来填其内容。地址 内容000 00001 01010 01011 10100 10101 11110 11111 114.3 带符号数的移位和舍入操作 4.4 定点乘法运算4.4.1 原码一位乘法用原码实现乘法运算是十分方便的。 原码一位乘法是从手算演变而来的, 即用两个操作数的绝对值相乘, 乘积的符号为两操作数符号的异或值(同号为正, 异号为负) 。乘积 P=XY符号Ps=Xs Ys例如: X=0.1101, Y=-0.1011, 列出手算乘法算式为 4.4 定点乘法运算0.1 1 0 1×0.1 0 1 11 1 0 11 1 0 10 0 0 0+ 1 1 0 10.1 0 0 0 1 1 1 1因为Ps=Xs Ys=0 1=1所以X×Y=-0.10001111 4.4 定点乘法运算原码一位乘法的规则为:① 参加运算的操作数取其绝对值;② 令乘数的最低位为判断位, 若为“1” , 加被乘数, 若为“0” , 不加被乘数(加0) ;③ 累加后的部分积右移一位;④ 重复n次②和③;⑤ 符号位单独处理, 同号为正, 异号为负。 4.4 定点乘法运算乘法运算需要3个寄存器:A寄存器: 部分积与最后乘积的高位部分, 初值为0。B寄存器: 被乘数X。C寄存器: 乘数Y, 运算后C寄存器中不再需要保留乘数, 改为存放乘积的低位部分。 4.4 定点乘法运算XB,YC0A,0CRCn=1(A+B)AC CCR+1CR.CR=n?EndYNAACCXS YSPSNY 4.4 定点乘法运算4.4.2 补码一位乘法比较法-Booth乘法设: 被乘数[X]补=Xs.X1X2Xn, 乘数[Y]补=Ys.Y1Y2Yn。在乘数的最低位之后增加一位附加位Yn+1,它的初值为0, 增加附加位不会影响运算结果。每次运算取决于乘数相邻两位Yi、 Yi+1的值, 把它们称为乘法的判断位。 根据校正法的统一表达式推出 : 由 乘数相邻两位的 比 较结果(Yi+1-Yi) 来确定运算操作。 4.4 定点乘法运算Booth乘法规则如下:① 参加运算的数用补码表示;② 符号位参加运算;③ 乘数最低位后面增加一位附加位Yn+1, 其初值为0;④ 由于每求一次部分积要右移一位, 所以乘数的最低两位Yn、 Yn+1的值决定了 每次应执行的操作; 4.4 定点乘法运算操 作判断位YnYn+10 0 原部分积右移一位0 1 原部分积加[X]补后右移一位1 0 原部分积加[-X]补后右移一位1 1 原部分积右移一位 4.4 定点乘法运算⑤ 移位按补码右移规则进行;⑥ 共需做n+1次累加, n次移位, 第n+1次不移位。例: 已知X=-0.1101, Y=0.1011; 求XY。[X]补=1.0011B, [Y]补=0.1011C, 0A[-X]补=0.1101 4.4 定点乘法运算∵[XY]补=1. 01110001XY=-0. 10001111 4.4 定点乘法运算[X]补B,[Y]补C0A,0CR,0Cn+1CnCn+1=?A-BACR+1CR.CR=n+1?EndYNA+BAAACC011000/11 4.4 定点乘法运算4.4.3 补码两位乘法为了 提高乘法的执行速度, 可以选用两位乘法的方案。 所谓两位乘法, 就是每次处理乘数中的两位, 从而使乘法的速度提高了 一倍。 两位乘法又可分为原码两位乘法和补码两位乘法, 在此只讨论补码两位乘法。根据前面介绍的Booth乘法方便地推导出补码两位乘法, 即把补码两位乘理解为将Booth乘法的两次合并为一次来做。 4.4 定点乘法运算补码两位乘法可以通过Yi-1YiYi+1三位的不同组合来判断原部分积与[X]补的运算情况, 然后右移两位得到新的部分积。 4.4 定点乘法运算补码两位乘法规则如下: ① 参加运算的数用补码表示;② 符号位参加运算;③ 乘数最低位后增加一位附加位Yn+1, 初值为0;④ 根据乘数的最低三位Yn-1YnYn+1的值决定每次应执行的操作; ⑤ 移位按补码右移规则进行。比较结果(Yi+1+Yi-2Yi-1) 4.4 定点乘法运算Yn-1YnYn+10 0 0 +0, 右移2位0 0 1 +[X]补, 右移2位0 1 0 +[X]补, 右移2位0 1 1 +2[X]补, 右移2位1 0 0 +2[-X]补, 右移2位1 0 1 +[-X]补, 右移2位1 1 0 +[-X]补, 右移2位1 1 1 +0, 右移2位 4.4 定点乘法运算被乘数和部分积取三符号位, 当乘数的数值位n 为偶数时, 乘数取两符号位, 共需作(n/2)+1次累加, n/2次移位(最后一次不移位) ; 当n为奇数时, 乘数只需一个符号位, 共需(n+1)/2次累加和移位, 但最后一次仅移一位。 4.5 定点除法运算4.5.1 原码除法运算X=0.1011, Y=0.11010.1 1 0 1 商0.1 1 0 1 0.1 0 1 1 01 1 0 11 0 0 1 01 1 0 11 0 1 0 01 1 0 10.0 0 0 01 1 1 余数X÷Y=商+ =0.1101+0.0111×2-4/0.11010.0 0 0 0 0余数除数0.00.00.0 00.0 0 0 4.5 定点除法运算1.原码比较法和恢复余数法(1) 比较法比较法类似于手工运算, 只是为了 便于机器操作, 将除数右移改为余数左移。比较法要对两个操作数进行比较(A>B?),这就需要设置比较线路, 从而增加了 硬件的代价。 4.5 定点除法运算(2)恢复余数法恢复余数法是直接作减法试探方法, 不管被除数(或余数) 减除数是否够减, 都一律先做减法。 若余数为正, 表示够减, 该位商上“1” ;若余数为负, 表示不够减, 该位商上“0” , 并要恢复原来的被除数(或余数) 。0CnA+BA1CnA <0?A-BAYN 4.5 定点除法运算由于余数的正、 负是根据不同的操作数组合随机出现的, 这就使得除法运算的实际操作次数不固定, 从而导致控制电路比较复杂。 而且在恢复余数时, 要多作一次加法, 降低了 执行速度。因此, 原码恢复余数法在计算机中 一般很少采用。 4.5 定点除法运算2.原码不恢复余数法(原码加减交替法)原码不恢复余数法是对恢复余数法的一种改进。 在恢复余数法中, 若第i-1次求商的余数为ri-1, 则第i次求商操作为: ri=2ri-1-Y若够减, ri=2ri-1-Y> 0, 商1。 若不够减,ri=2ri-1-Y<0, 商0, 恢复余数后, ri=ri+Y=2ri-1,然后再左移一位, 进行第i+1次操作: ri+1=2ri-Y=2(ri+Y)-Y=2ri+2Y-Y=2ri+Y 4.5 定点除法运算上式表明, 当出现不够减(负余数) 的情况下并不需要恢复余数, 可以直接做下一次操作,但操作是2ri+Y, 其结果与恢复余数后左移一位再减Y是等效的。ri+1=2ri+(1-2Qi)×Y 4.5 定点除法运算除法运算需要3个寄存器:A寄存器: 存放被除数X, 最后A寄存器中剩下的是扩大了 若干倍的余数。 运算过程中A寄存器的内容将不断地发生变化。B寄存器: 存放除数Y。C寄存器: 存放商Q, 它的初值为0。 4.5 定点除法运算XA,YB0C,0CR0Cn2A+BA2C C1Cn2A-BA2C CCR+1CRCR=n?N1CnNA <0?0CnA+BAA-BAYYYNA <0?XS YSQS 4.5 定点除法运算需要指出的是, 在定点小数除法运算时,为了 防止溢出, 要求被除数的绝对值小于除数的绝对值, 即 X< Y, 且除数不能为 0。 另外, 在原码加减交替法中, 当最终余数为负数时, 必须恢复一次余数, 使之变为真余数, 注意此时不需要再左移了。 4.5 定点除法运算4.5.2 补码除法运算被除数和除数都用补码表示, 符号位参加运算。1.够减的判断参加运算的两个数符号任意, 够减的情况如下:⑴同号X>0, Y>0, X-Y>0 ><<>X<0, Y<0, -X-(-Y) >0X-Y<0⑵异号X>0, Y<0, X-(-Y)=(X+Y)>0X<0, Y>0, (-X)-Y>0X+Y<0><><部分余数与除数同号部分余数与除数同号部分余数与除数异号部分余数与除数异号 4.5 定点除法运算2.上商规则如果[X]补和[Y]补同号, 则商为正数, 上商规则与原码除法相同, 即够减时上商“1”, 不够减时上商“0”; 如果[X]补和[Y]补异号, 则商为负数, 上商规则与同号时相反, 即够减时上商“0”, 不够减时上商“1”。将上商规则与够减的判断结合起来, 可得到本次余数[ri]补和除数[Y]补同号, 商上“1”, 反之,商上“0”。 4.5 定点除法运算3.商符的确定商符是在求商的过程中自动形成的, 按补码上商规则, 第一次得出的商, 就是实际应得的商符。4.求新部分余数求新余数[ri+1]补的通式如下:[ri+1]补=2[ri]补+(1-2Qi)×[Y]补Qi表示第i步的商。 若商上“1”, 下一次操作为余数左移一位, 减去除数; 若商上“0”, 下一次操作为余数左移一位, 加上除数。5. 末位恒置1 4.5 定点除法运算补码加减交替除法规则:[ri+1]补=2[ri]补+[Y]补0②异号(够减)[ri+1]补=2[ri]补-[Y]补1①同号(不够减)[X]补+[Y]补异号[ri+1]补=2[ri]补+[Y]补0②异号(不够减)[ri+1]补=2[ri]补-[Y]补1①同号(够减)[X]补-[Y]补同号求新余数[ri+1]补的操作上商[ri]补与[Y]补第一次操作[X]补与[Y]补 4.5 定点除法运算已知: X=0. 1000, Y=-0. 1010; 求X÷Y[X]补=0. 1000A, [Y]补=1. 0110B, 0C, [-Y]补=0. 1010 4.5 定点除法运算[商]补=1.0011[余数]补=1.11102-4商=-0.1101余数=-0.00102-4X÷Y= -0.1101+1.11102-41.0110[X÷Y]补=1.0011+-0.00102-4-0.1010 4.5 定点除法运算[X]补A,[Y]补B0C,0CR0Cn2A+BA2C C1Cn2A-BA2C CCR+1CR.CR=n?EndN1CnYAs Bs=0?A+BAA-BANYAs  Bs=0?NY. 4.6 规格化浮点运算4.6.1 浮点加减运算设两个非0的规格化浮点数分别为A=MA×2EAB=MB×2EBAB=(MA,EA)(MB,EB)=2)(EEM),2(),)(BBAAEEBAEMEMMABBABABAEEEE 4.6 规格化浮点运算1. 浮点数加减运算步骤(1)对阶两个浮点数相加或相减, 首先要把小数点的位置对齐, 而浮点数的小数点的实际位置取决于阶码的大小。 因此, 对齐两数的小数点, 就是使两数的阶码相等, 这个过程称为对阶。要对阶, 首先应求出两数阶码EA和EB之差,即: E=EA-EB 4.6 规格化浮点运算若 E=0, 表示两数阶码相等, 即EA=EB;若 E>0, 表示EA>EB; 若 E<0, 表示EA<EB。当EAEB时, 要通过尾数的移位来改变EA或EB, 使EA=EB相等。对阶的规则是: 小阶向大阶看齐。 采用这一规则的原因是当阶码小的数的尾数右移并相应增加阶码时, 舍去的仅是尾数低位部分, 误差比较小。 要使小阶的阶码增大, 则相应的尾数右移,直到两数的阶码相等为止。 对于r=2, 每右移一位, 阶码加1。 4.6 规格化浮点运算EA=EB, 不须对阶。EA> EB,则 MB右 移 。EB+1EB, 直至EA=EB为止。EA< EB,则 MA右 移 。EA+1EA, 直至EA=EB为止。尾数右移后, 应对尾数进行舍入。(2)尾数加/减对阶之后, 就可以进行尾数加/减, 即MAMBMC每 右 移 一 位 ,每 右 移 一 位 , 4.6 规格化浮点运算(3)尾数结果规格化尾数加/减运算之后得到的数可能不是规格化数, 为了 增加有效数字的位数, 提高运算精度,必须进行结果规格化操作。规格化的尾数M应满足:1/2M<1设尾数用双符号位补码表示, 经过加/减运算之后, 可能出现以下六种情况: 4.6 规格化浮点运算① 00.1 x x x② 11.0 x x x③ 00.0 x x x④ 11.1 x x x⑤ 01.x x x x⑥ 10.x x x x第①、 ②种情况, 已是规格化数。第③、 ④种情况需要使尾数左移以实现规格化,这个过程称为左规。 4.6 规格化浮点运算尾数每左移一位, 阶码相应减1(EC-1EC), 直至成为规格化数为止。 (左规可能需进行多次) 只要满足下列条件:左规=Cs1Cs2C1+Cs1Cs2C1第⑤、 ⑥种情况在定点加减运算中称为溢出;但在浮点加减运算中, 只表明此时尾数的绝对值大于1, 而并非真正的溢出。 这种情况应将尾数右移以实现规格化。 这个过程称为右规。 尾数每右移一位, 阶码相应加1(EC+1EC) 。 (右规最多进行一次) 右规的条件如下:右规=Cs1 Cs2 4.6 规格化浮点运算(4)舍入由于受到硬件的限制, 在对阶和右规处理之后有可能将尾数的低位丢失, 这会引起一些误差。 舍入方法已在前面做过介绍, 这里不再赘述。 4.6 规格化浮点运算(5)溢出判断当尾数之和(差) 出现10.x x x x或01.x x x x时, 并不表示溢出, 只有将此数右规后, 再根据阶码来判断浮点运算结果是否溢出。浮点数的溢出情况由阶码的符号决定, 若阶码也用双符号位补码表示, 当: 4.6 规格化浮点运算[EC]补=01, x x x x, 表示上溢。 此时, 浮点数真正溢出, 机器需停止运算, 做溢出中断处理。[EC]补=10, x x x x, 表示下溢。 浮点数值趋于零, 机器不做溢出处理, 而是按机器零处理。 4.6 规格化浮点运算2. 浮点数加减运算举例有两浮点数为A=0.101110×2-01B=-(0.101011)×2-10假设这两数的格式: 阶码4位, 用移码表示(偏置值为23) ; 尾数8位, 用补码表示, 包含一位符号位, 即ms[A]浮=0111; 0.1011100[B]浮=0110; 1.0101010Em 4.6 规格化浮点运算(1)对阶求阶差: E=EA-EB=-1-(-2)=1 E=1, 表示EA>EB。 按对阶规则, 将MB右移一位, 其阶码加1, 得:[B]浮=0111; 1.1010101(2)尾数求和00.1011100+ 11.101010100.0110001 4.6 规格化浮点运算(3)尾数结果规格化由于结果的尾数是非规格化的数, 故应左规。 尾数每左移一位, 阶码减1, 直至尾数成为规格化数为止。[A+B]尾补=00.0110001[A+B]尾补 =00.1100010×2-01最后结果为[A+B]浮 =0110; 0.1100010A+B=(0.110001)×2-10 4.6 规格化浮点运算4.6.2 浮点乘除运算设两个非0的规格化浮点数分别为A=MA×2EAB=MB×2EB则浮点乘法和除法为AB=(MAMB)2(EA+EB)A÷B=(MA÷MB)2(EA-EB) 4.6 规格化浮点运算1.乘法步骤(1)阶码相加两个浮点数的阶码相加, 当阶码用移码表示的时候, 应注意要减去一个偏置值2n。因为[EA]移=2n+EA, [EB]移=2n+EB[EA+EB]移=2n+(EA+EB)而[EA]移+[EB]移=2n+EA+2n+EB显然, 此时阶码和中多余了 一个偏置值2n,应将它 减去。 另外, 阶码相加后有可能产生溢出, 此时应另作处理。 4.6 规格化浮点运算(2)尾数相乘与定点小数乘法算法相同。(3)尾数结果规格化因为1/2<MA<1, 1/2<MB<1, 所以1/4<MAMB<1。当 1/2< MAMB< 1时, 乘积已 是规格化数, 不须再进行规格化操作; 当1/4< MAMB<1/2时, 则需要左规一次。 4.6 规格化浮点运算2.除法步骤(1)尾数调整首先须要检测MA<MB。 如果不小于, 则MA右移一位, EA+1EA, 称为尾数调整。 因为A、 B都是规格化数, 所以最多调整一次。(2)阶码相减两浮点数的阶码相减, 当阶码用 移码表示时, 应注意要加上一个偏置值2n。(3)尾数相除与定点小数除法算法相同。 4.7 十进制整数的加减运算4.7.1 一位十进制加法运算1.8421码加法运算因 为 一位8421码用 四 位二进制数表示, 所以8421码十位数的“1” 是个位数的进位。 按四位二进制数而言, 这个进位的值是16, 而不是8421码的10。 因此, 必须+6校正, 才能使该进位正确。 8421码的加法规则:①两个8421码相加时,②当和9, 无需校正;③当和>9, 则+6校正;④在做+6校正的同时, 将产生向上一位的进位。“逢二进一” ; 4.7 十进制整数的加减运算8421码C4S4S3S2S1+6校正0 1 0 1 00 1 0 1 10 1 1 0 00 1 1 0 10 1 1 1 00 1 1 1 11 0 0 0 01 0 0 0 11 0 0 1 01 0 0 1 11 0 0 0 01 0 0 0 11 0 0 1 01 0 0 1 11 0 1 0 01 0 1 0 11 0 1 1 01 0 1 1 11 1 0 0 01 1 0 0 171819不校正0 0 0 0 0|0 1 0 0 10 0 0 0 0|0 1 0 0 10|9校正与否校正前的二进制数C4S4S3S2S1十进制数+6校正函数=C4+S4S3+S4S2 4.7 十进制整数的加减运算2.余3码加法运算十进制余3码加法规则:①两个余3码相加, “逢二进一” ;②若其和没有进位, 则减3(即+1101) 校正;③若其和有进位, 则加3(即+0011) 校正。 4.7 十进制整数的加减运算余3码C4S4S3S2S1+3校正1 0 0 0 01 0 0 0 1|1 1 0 0 01 1 0 0 11 0 0 1 11 0 1 0 0|1 1 0 1 11 1 1 0 01011|1819-3校正0 0 1 1 00 0 1 1 1|0 1 1 1 00 1 1 1 10 0 0 1 10 0 1 0 0|0 1 0 1 10 1 1 0 001|89校正与否校正前的二进制数C4S4S3S2S1十进制数-3校正函数=C4+3校正函数=C4 4.7 十进制整数的加减运算4.7.2十进制加法器1.一位8421码加法器S2B1B2B3B4C0S3FAHAFAA1A4A2A3S1S4S3FAFAFA忽略HAS2S1S4C4&C41& 4.7 十进制整数的加减运算2. 一位余3码加法器S2B1B2B3B4C0S3FAFAA1A4A2A3S1S4S3FAFAFA忽略S2S1S4C4C4FAFA11 4.8 逻辑运算与实现逻辑运算比算术运算要简单得多, 这是因为逻辑运算是按位进行的, 位与位之间没有进位/借位的关系。1.逻辑非逻辑非又称求反操作, 它对某个寄存器或主存单元中各位代码按位取反。2.逻辑乘逻辑乘就是将两个寄存器或主存单元中的每一相应位的代码进行“与”操作。 4.8 逻辑运算与实现3.逻辑加逻辑加就是将两个寄存器或主存单元中的每一相应位的代码进行“或”操作。4.按位异或按位异或是计算机中一个特定的逻辑操作,它对寄存器或主存单元中各位的代码求模2和, 又称模2加或半加, 也叫异或。 4.9 运算器的基本组成与实例运算器是在控制器的控制下实现其功能的,运算器不仅可以完成数据信息的算逻运算, 还可以作为数据信息的传送通路。 4.9 运算器的基本组成与实例5.9.1 运算器结构1.运算器的基本组成基本的运算器包含以下几个部分:实现基本算术、 逻辑运算功能的ALU,提供操作数与暂存结果的寄存器组,有关的判别逻辑和控制电路等。 4.9 运算器的基本组成与实例(1)带多路选择器的运算器移位器选择器R0~Rn-1选择器R0~Rn-1R0Rn-1+1ALU内部总线 运算器的基本组成与实例(2)带输入锁存器的运算器移位器锁存器1锁存器2+1ALUMS0S3内部总线 运算器的基本组成与实例2.运算器的内部总线)单总线结构运算器运算器实现一次双操作数的运算需要分成三步。(2)双总线结构运算器运算器实现一次双操作数的运算需要两步。 4.9 运算器的基本组成与实例通用寄存器特殊寄存器特殊寄存器缓冲器ALU总线 运算器的基本组成与实例(3)三总线结构运算器实现一次双操作数的运算仅需要一步。通用寄存器特殊寄存器总线总线 运算器的基本组成与实例4.9.2 ALU举例1. ALU电路ALU即算术逻辑单元, 它是既能完成算术运算又能完成逻辑运算的部件。 前面已经讨论过,无论是加、 减、 乘、 除运算, 最终都能归结为加法运算。 因此, ALU的核心首先应当是一个并行加法器, 同时也能执行像“与”、 “或”、 “非”、 “异或”这样的逻辑运算。 由于ALU能完成多种功能,所以ALU又称多功能函数发生器。 4. 9 运算器的基本组成与实例2.4位ALU芯片74181是四位算术逻辑运算部件(ALU) , 又称多功能函数发生器, 能执行16种算术运算和16种逻辑运算。A0、 B0~A3、 B3: 操作数输入端;F0~F3: 输出端;Cn : 进位输入端;Cn+4 :进位输出端;G* : 组进位产生函数输出端;P*: 组进位传递函数输出端; 4.9 运算器的基本组成与实例M: 工作方式, M=0为算术操作, M=1为逻辑操作;S0~S3: 功能选择线位作为一个小组, 组间既可以采用串行进位, 也可以采用并行进位。当采用组间串行进位时, 只要把前片的Cn+4与下一片的Cn相连即可。 4.9 运算器的基本组成与实例A0__A0。 。A1A2A3B0B1B2B3F0F1F2F3S0S1S2S3MGPA=B__Cn___Cn+4。。181A=BS0S1S2S3MCnCn+49。。。。1011139。B2。B3。A3。 。B1。A1。。23_G_P____A2____B0________F0__F1__F2__F3(a)(b) 4.9 运算器的基本组成与实例 4.9 运算器的基本组成与实例3. ALU的应用当采用组间并行进位时, 需要增加一片先行进位部件(74182) 。74182。。。G3_。 。P2。G1112_P__P3。__G0。 。____P1__P0。____G2__GCnCn+x Cn+yCn+z 14 4.9 运算器的基本组成与实例74182可以产生三个进位信号Cn+x、 Cn+y、Cn+z, 并且还产生大组进位产生函数G**和大组进位传递函数P**, 可供组成位数更长的多级先行进位ALU时用。C16=G4*+P4*G3*+P4*P3*G2*+P4*P3*P2*G1*+P4*P3*P2*P1*C0大组进位产生函数G1**大组进位传递函数P1**=G1**+P1**C0 4.9 运算器的基本组成与实例74181和74182的结合可组成各种位数的ALU部件。8片74181和2片74182构成的32位两级行波ALU。 各片74181输出的组进位产生函数和组进位传递函数作为74182的输入, 而74182输出的进位 信 号 Cn+x、 Cn+y、 Cn+x作 为 74181 的 输 入 ,74182输出的大组进位产生函数和大组进位传递函数可作为更高一级74182的输入。 第四章 小结4.1 基本运算的实现 加法器串行加法器与并行加法器 进位的产生和传递 并行加法器快速进位4.2 定点加减运算 补码加法运算 补码减法运算已知[Y]补求[-Y]补的方法 补码的溢出判断与检测方法一位符号位, 进位位, 双符号位补码 第四章 小结4.3 带符号数的移位运算和舍入操作 补码的移位运算 舍入操作4.4 定点乘法运算 原码一位乘法 补码一位乘法4.5 定点除法运算 原码加减交替除法 补码加减交替除法 第四章 小结4.6 规格化浮点运算算法 浮点加减运算 浮点乘除运算4.7 十进制整数的加减运算 十进制加法运算的校正4.8 逻辑运算与实现4.9 运算器的基本组成与实例 运算器的基本结构 ALU举例

http://allpennsylvania.com/suanshuxiayi/104.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有