首页 第5章:运算方法与运算器

第5章:运算方法与运算器

举报
开通vip

第5章:运算方法与运算器通过前面的学习,我们已经知道了数据在计算机中是如何表示,那么它们是怎么参加运算的呢?或者说运算器是怎样工作的呢?要明白这个问题就是我们在这一章要学习的算术、逻辑运算的方法。第5章运算方法和运算器§1移位运算和舍入操作一、移位运算1、意义移位运算是计算机中最基本、最常见的运算操作之一。任何计算机都含有移位指令。移位操作有两种:(1)逻辑移位:寄存器中整组数据进行移位,空位补0,只有数字位置的变化,无数量变化。(2)算术移位:寄存器中带符号数的移位,移位时,符号位保持不变,仅数量变化。在此仅讨论算术移位:当机...

第5章:运算方法与运算器
通过前面的学习,我们已经知道了数据在计算机中是如何表示,那么它们是怎么参加运算的呢?或者说运算器是怎样工作的呢?要明白这个问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 就是我们在这一章要学习的算术、逻辑运算的方法。第5章运算方法和运算器§1移位运算和舍入操作一、移位运算1、意义移位运算是计算机中最基本、最常见的运算操作之一。任何计算机都含有移位指令。移位操作有两种:(1)逻辑移位:寄存器中整组数据进行移位,空位补0,只有数字位置的变化,无数量变化。(2)算术移位:寄存器中带符号数的移位,移位时,符号位保持不变,仅数量变化。在此仅讨论算术移位:当机器字长固定,左、右移位时,出现空位怎么办?2、算术移位的规则大前提是:移位后,符号位保持不变。(1)正数:正数的符号位为0,且[x]原=[x]反=[x]补,故进行算术移位时,出现的空位均补0.例如:[x]原=0.1001,2[x]原=0.0010;[x]反=0.0011,[x]反=0.0001;[x]补=0.10012[x]补=0.0010;(2)负数:原码的移位:除符号位外,原码的数值部分与真值相同,故移位后都补0.[x]原=1,01112[x]原=1,1110[x]原=1,0011反码的移位:除符号位外,反码的数值部分与原码相反,故移位后都补1.[x]反=1,01112[x]反=1,1111[x]反=1,1011补码的移位:除符号位外,左移补0,右移补13、练习设X=-0.1001010,求:(1)X的原码左移2位、右移2位各是多少?(2)X的反码左移2位、右移2位各是多少?(3)X的补码左移2位、右移2位各是多少?思考:2[x]补=[2x]补成立吗?[x]补=[x]补成立吗?解答:当x>=0时,在不溢出的情况下,上述二式成立;当x<0时,在不溢出的情况下,2[x]补=[2x]补成立,而[x]补=[x]补不成立。如:x=-0.0001,字长5位。x=-0.0000[x]补=1.1111,[x]补=1.1111[x]补=0.0000又如:x=-0.10101,字长6位。[x]补=1.10101[x]补=1.10110二、舍入操作在算术移位时,由于硬件的限制,会失去一定的位数,造成一些误差。为减少误差,就要进行舍入操作。(1)恒舍(切断):多余的部分全部舍去(2)冯·诺依曼舍入法:末位恒置1(3)0舍1入法:(4)ROM舍入法(查表法)§2定点数加减法我们来分析一下:由该例可知真值X和Y所表示的十进制数分别为(69)10和(103)10,其和为(172)10,该数用二进制数为+10101100,在机器中表示这个数需要9位。而现在机器的字长为8位,无法表示,我们把这种现象称为“溢出”(overflow)。类似的,当两个负相加,如果和正,也同样属于溢出现象。而两个异号数相加是不可能产生溢出现象的。我们再看一个例子。例2:设机器字长为8位,X=-1000011,Y=-0100001,求X+Y解:[X]补=10111101+[Y]补=11011111[X]补+[Y]补=110011100即[X+Y]补=[X]补+[Y]补=10011100求得X+Y=-1100100结果正确从上面两个例子来看,一会儿是溢出,一会儿又是对,同学们是不是会问:我们怎么知道哪一种是溢出,哪一种又不是?有没有办法一下子就能判断出来呢?回答是肯定的。那就是采用多个符号位。我们把符号位用多位表示所得机器数的表示形式称为变形码。变形码也有变形原码,变形反码和变形补码三种形式。变形码的原码,反码和补码之间的关系和一般的原码、反码和补码之间的关系一样。三、变形补码加法对于变形补码,同样有:[X+Y]变补=[X]变补+[Y]变补用这个式子进行加法运算就能及时判断出溢出。我们用这个式子来计算上述例1和例2(符号用两位表示)。其结果为01,0101100和11,0011100。前者溢出,后者没溢出。这说明,当和的两个符号位不相同时,就说明发生了溢出。讲到这里,判断溢出是解决了,但怎么解决溢出呢?§3定点原码乘法利用原码作乘法,其方法是:1、乘积的符号等于两数的符号位异或的结果。2、乘积的数值等于两数绝对值的积△原码乘法的实质是两个正数相乘。由此例可以看出:手算乘法是通过移位和加法来实现的。存在如下缺点:(1)n位乘法,需n个数相加的部分积,而全加器只有三个输入端,故实现不了。(2)n位乘法,乘积为2n位,要用2n位的寄存器来存放积,造成浪费。(3)若用加法器做加法,n位乘法,需2n位的加法器,也造成硬件浪费。于是,在计算机中不能采用这种手算乘法,我们必须想办法达到:(1)n位乘法,只用n位的加法器,且只用两数相加的加法器。(2)n位乘法,只用n位的寄存器来存放积。下面将两数做乘法的过程作一些变形。设被乘数为X,乘数为Y=0.1011X×Y=X×0.1011=X×0.1+X×0.00+X×0.001+X×0.0001=2-1(X+2-1(0+2-1(X+2-1×X)))=2-1(X+2-1(0+2-1(X+2-1×(X+0))))由上式可以推导出如下规则:(1)两数相乘之前,设初始部分积为全0(位数和被乘数的位数相同)。(2)从乘数的个位乘起,乘数位为1,部分积加被乘数后结果右移一位;乘数位为0,部分积加0后结果右移一位。(3)重复上述操作,直到乘数位全部乘完为止。2、部分积右移法方法是:部分积相加后右移一位,直到乘数各位都乘完为止。二、原码2位乘法(不作要求)对乘数从右至左,每两位分成一组,称为判断位,共有四种可能:00,01,10,11(1)对于00:将上次部分积右移2位(2)对于01:上次部分积加被乘数,再右移2位(3)对于10:上次部分积加被乘数的2倍(被乘数左移1位),再右移2位(4)对于11:上次部分积减被乘数,右移2位,再在下一个判断位+1例:-0.1101×0.1011§4定点原码除法定点除法只考虑被除小数小于除数的情况,因为这样总能保证商的小数点就在最左边1位有效数字的前面。一、恢复余数法方法:1、将Y与2Ri(Ri左移1位,Ri为上次的余数)比较如果2Ri≥y表示够减,则商为1如果2Ri<Y,表示不够减,则商为02、够减和不够减的方法2Ri+[-Y]补,即2Ri-y补如果余数为正,则说明够减,商为1,如果余数为负,则说明不够减,商为0。这一步操作仅是为了判断减和不够减的问题,所以是不该做,因此要把除数再加回去,以恢复成原来的余数。恢复余数法由此而得名二、加减交替法我们先回顾一下恢复余数法,采用=2Ri-1+(-Y),当Ri<0时,同时恢复余数,采取的方法是Ri+Y,则Ri+1=2(Ri+Y)+(-Y)=2Ri+Y这个式子说明:当<0,商0时,Ri+1可直接将Ri左移一位,再加上Y得出,而不必将Ri左移+[-Y],然后再+Y。不管是余数恢复法还是加减交替法,都有两点值得提醒同学们:1、当有余数的时候,除到什么时候为止?(1)视题目要求的精度(2)商的位数和被除数的位数一样即可2、当商的最后位为0时,余数不要忘了加上除数,才是真正的余数。§5规格化浮点运算一、规格化浮点补码加减法要对两浮点数进行加减法,需使其阶码相等。如x=0.110110×2011,y=-0.001011×21101、对阶——小阶向大阶看齐要使两数的阶码相等,可通过移动尾数来进行。尾数左移,阶码减小,尾数高位损失;尾数右移,阶码增加,尾数精度损失。一般采取后一种办法。移动位数:△J=Jx-Jy[X]补=00,011;00.110110[Y]补=00,110;11.110101[△J]补=[Jx]补+[-Jy]补=00,011+11,010=11,101△J=-3说明:X要向Y看齐,得[X]补=00,110;00.0001102、尾数求和00.00011000.000110+11.110101+00.00101111.11101100.010001[X+Y]补=00,110;11.111011[X-Y]补=00,110;00.010001观察结果是否为规格化形式,如果不是必须规格化。3、结果规格化根据规格化的定义:补码正数应满足00.1的形式;补码负数应满足11.0的形式。(1)若尾数求和后出现以下情况:01.×××或10.×××时,表示运算结果产生溢出,需要进行向右规格化。右规的方法是:尾数连同符号位右移1位,阶码加1,直到成为规格化数。(2)若尾数求和后出现以下情况:00.0×××或11.1×××时,表示运算结果为非规格化数,需要进行向左规格化。左规的方法是:尾数连同符号位左移1位,阶码减1,直到成为规格化数。[X+Y]补=00,011;11.011000左移3位[X-Y]补=00,101;00.100010左移1位4、舍入对阶右规时,都要右移尾数,使尾数的低位丢失,造成误差,故都要进行舍入处理。(1)0舍1入法(2)末位恒置15、溢出检查:若阶码超出表示范围为浮点溢出,正溢出称为上溢,为软件故障,应请求CPU予以处理,负溢出称为下溢,置运算结果为浮点形式的机器零。练习:设浮点数格式为××,×××;×.×××××××,X=-19/128,Y=117/128,用浮点补码规则求X±Y=?二、规格化浮点补码乘除法运算(不作要求)规则:(1)阶码运算:阶码求和(乘法)或阶码求差(除法)(定点整数加法)。(2)浮点数的尾数处理:采用定点小数的乘除法运算,结果要进行舍入处理。§6定点运算器设计运算器是实现数据的算术运算和逻辑运算的部件,是CPU的一个重要组成部分。一、运算器的基本结构(如下图)(1)ALU:算术逻辑运算单元,是运算器的核心部件。(2)寄存器A:既存放原始数据,又存放中间结果,故称为累加器(3)寄存器B:具有求反功能(4)”+1”:实现求补,连同B的求反功能(5)移位寄存器:乘除运算时使用。二、加减法运算器1、基本的算术逻辑运算部件——全加器(如下图)输入端3个:Ai,Bi本位操作数,Ci-1低位来的进位。输出端2个:Si本位和,Ci本位向高位的进位。2、串行的加减法运算器(如下图)(1)A,B:具有移位功能的寄存器,且A存放运算结果(2)D触发器:保存进位。串行运算器所用元器件少(1位全加器),但速度低,因此,现在用的不多,现在惯常使用的是并行加法器。3、并行加法器参加运算的两个数各位同时进行加法运算,即两数相加一次完成,为了实现这种要求,必须要解决两个问题:(1)加法器如何构成?(2)进位问题如何解决?对于第一个问题解决起来较容易:只要保证参加运算的数据有几位,就用几位全加器就可以,而参加运算的数据的位数与计算机的字长相同。例如:计算机字长为8位,并行加法器就需要8个全加器来组成。对于第二个问题比较麻烦,但解决的方法不少。(1)串行进位法:将各全加器的进位用一根据号线串接在一起。如右图所示这种方法的优缺点:优点:电路简单。缺点:运行速度慢。因为每一位进位的产生是需要延迟时间的,随着全加器数目的增多,累计延迟时间将会越来越大。(2)并行进位法(超前进位,先行进位):指所有的进位都由C0直接产生。全加器(FA)的函数表达式Si=AiBiCi-1Ci=AiBi+(Ai+Bi)Ci-1令Gi=AiBi,Pi=Ai+Bi,则Ci=Gi+PiCi-1其中Gi称为产生函数:只有本位两个输入全为1时,才会产生向高位的进位。Pi称为进位传递函数:只要本位两个输入有一个为1时,低位来的进位就能传送到高位。上述各式中所有各位的进位均不依赖于低位的进位,各位的进位可以同时产生。特点:(1)一旦C0,G,P形成后,最多只有两级门的延时即可形成Cn,是速度最快的一种进位链。(2)n位字长,Cn产生共需2T延时,但此 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 的扇入系数太大(一个门需要的输入端太多),n位要n+1个输入端,无法用元器件实现。故称为理想进位链。(3)分组进位法(若干位分成一组)组内并行进位,组间串行进位;组内串行进位,组间并行进位;组内并行进位,组间并行进位。将n位加法分组,组内用并行进位链,组间用串行进位链。如12位加法器可以分成4组,每组3位。加法器共延时=2T×4+4T=12T采用这种做法有一个问题需要思考:分组可以多种多样,共分几组?多少位一组?组内位数是否相等?这取决于机器的字长,对进位链速度的要求以及元器件的性能等。特点:速度高,但线路复杂,成本高。三、基本结构运算器的基本结构有三种形式:(1)单总线结构(2)双总线结构(3)三总线结构1、单总线结构只有一条数据总线,因此,参加运算的数据必须分步送入锁存器A和B。这样一来就导致了运行速度慢的缺点,但由于只采用一条总线,控制是工作的电路简单。2、双总线结构采用两条数据总线,这样就可以把参加运算的两个操作的同时送人ALU进行运算,结果送人锁存器通用寄存器锁存器标志寄存器很显然,这种结构同但总线结构相比,速度快,但增加了一条总线,控制电路自然要复杂一些3、三总线结构采用三条数据总线,其中两条用于同时送操作数进入ALU,另一条直接送出结果,整个运算一次完成。通用寄存器状态标志寄存器总线旁路器优点:运算速度快。缺点:增加了总线旁路器,控制复杂。§7协处理器协处理器是专门用来实现浮点运算的。当然它必须与处理器配对使用。协处理器有8087,80287,80387三种。其中8087与8086/8088配对,80287与80286,82386配对;80387与80386以上的处理器配对。早期的协处理器是一个独立的芯片,安装在主板上,到了80586以后,已经集成到了CPU中。我们在本节主要简单介绍一下80287和80387一、性能80287和80387都是高性能的协处理器,80387在80287的基础上扩展了三角函数的功能。1、都具有80位体系结构2、时钟频率高(1)287工作频率为8MHZ12MHZ(2)387工作频率为16MHZ20MHZ3、能处理7种数据类型①单字整数(16位)②短整数(32位)③长整数(64位)④装配十进制数(80位)⑤单精度(32位)⑥双精度(64位)⑦临时浮点数(80位)4、可工作于两种模式(1)实模式:把80286/80386当作高速8086使用,使用24位地址中的低20位,全部可用存储空间是整个主存的最低1MB(2)保护模式:可使用16MB的主存空间支持虚拟存储器管理。5、能检测数据运算的六种错误:(1)非法处理(2)非法操作数(3)零作除数(4)上溢(5)下溢(6)精度下降二、协处理器的内部结构不管是8087还是80287,80387,其内部结构基本相同,都含有:(1) 8个80位的寄存器堆栈(先进后出)(2) 3个16位的寄存器(控制字,状态字,特征字)(3) 2个32位的寄存器(指令指针,数据指针)1、特征字寄存器:16位长,每两位表示寄存器栈一个寄存器的状态,该寄存器的内容允许用户读写。2、控制字寄存器:16位长,用于控制协处理器的内部操作。3、状态字寄存器:16位长,用于表示协处理器的处理情况。4、寄存器堆栈:8个,每个80位。(1)8个寄存器是一个头尾相接的整体。单分别用0~7表示其编号。(2)位于顶上的一个称为栈顶寄存器,并用ST表示。(3)用ST(i)访问相对于栈顶寄存器的偏移量为i的寄存器。i不是寄存器的编号。三、80287和80387的硬件特性:1、80287的硬件特性(1) 采用HMOS工艺,40引脚,双列直插式封装(2) 分两级操作,彼此相互独立。第一级同系统总线连接,接收并译码指令。请求同系统存储器传送操作数,以及执行协处理的控制指令。第二级执行实际的数值运算。(3) 具有84位宽度的内部数据通路。(4) 一次操作仅能执行一条指令。2、80387的硬件特性:(1) 采用1.5μm的高速CHMOS工艺、68引脚、PGA封装,速度快,功耗低。(2) 采用彼此独立的三级操作:第一级同系统总线连接;第二级是数据接口和控制接口;第三级执行浮点运算(3) 具有84位宽度的内部数据通路(4) 一次操作仅能执行一条指令。四、协处理器的工作方式1、作为80386等处理器的外设(1) 80387的指令是由80386进行读取。(2) 80387访问存储器由80386生产地址。2、占用专用的I/O端口:800000F8H~800000FFH3、80387与80386同步工作。§8应用举例例1:写出下列十进制数的单精度IEEE754编码(1)x=0.625(2)x=-9解:(1)0.625D=0.101B=1.01×2-1,根据IEEE754的单精度表达式,该二进制数可表示为:(-1)0×1.01×2126-127。其中,尾数符号位s=0(为正数),f为小数点后的数值,f=01,实际阶码为-1,e-127=-1,得e=126D=01111110Bx的IEEE754的单精度数表示为:00111111001000000000000000000000(2)-9D=-1001B=-1.001×23,根据IEEE754的单精度表达式,该二进制数可表示为:(-1)-1×1.001×2130-127。其中,尾数符号位s=1(为负数),f为小数点后的数值,f=001,实际阶码为3,e-127=3,得e=130D=10000010Bx的IEEE754的单精度数表示为:11000001000100000000000000000000【点评】:求IEEE754编码时,首先要把任意进制的数转换成形式为±(1.XX…XXX)×2k的二进制数,然后再转化成为IEEE754的单精度表达式(-1)s×1.f×2e-127。这样就可得s,e,f的值,最后根据s,e,f的值写出对应的IEEE754标准代码。例2:求IEEE754单精度数C0400000H对应的是进制数。解:c0400000H=11000000010000000000000000000000,符号位为1,f为1(0.5),e为10000000B=128D,则IEEE754表达式为:(-1)1×(1+0.5)128-127=-1×1.5×21=-1.5×2=-3.0例3:已知:x=B4H,y=5DH,求:xΛy,xνy,x⊕y。解:x=B4H=10110100B,y=5DH=01011101B则xΛy=10110100Λ01011101=14HXνy=10110100ν01011101=FDHx⊕y=10110100⊕01011101=E9H例4:设阶码为4位补码,尾数为7为补码,均包含符号位,用浮点运算计算x+y。(1)x=2-3×0.010101,y=2-5×(-0.001001)(2)=x=-25,y=35解:(1)[x]补=1101,00.010101,[y]补=1011,11.110111对阶:y的阶码比x的阶码小2,y的尾数右移2位,阶码加2[y]补=1011,11.110111=1101,11.11110111尾数相加:00.010101+11.11110111=00.01001011规格化:将尾数左移1位,阶码减1[x+y]补=1101,00.01001011=1100,00.1001011舍入:按“0”舍“1”入规则[x+y]补=1100,00.1001011=1100,00.100110故x+y=2-4×0.100110(2)x=-25D=-11001B=25×(-0.110010),y=35D=100011B=26×0.100011[x]补=0101,11.001110,[y]补=0110,00.100011对阶:x的阶码比y的阶码小1,x的尾数右移1位,阶码加1[x]补=0101,11.001110=0110,11.100111尾数相加:11.100111+00.100011=00.001010规格化:将尾数左移2位,阶码减2[x+y]补=0110,00.001010=0100,00.101000故x+y=24×0.101000例5:已知X为下列数据:0.1010,0,-0,-0.1010,请写出每一个数的:[X]原,[X]补,[X/2]原,[X/2]补,[2X]原,[2X]补。解:(1)当X=0.1010时,[X]原=0.1010,[X]补=0.1010,[X/2]原=0.01010,[X/2]补=0.01010,[2X]原和[2X]补因溢出无法表示(2)当X=0时,[X]原=0.0000,[X]补=0.0000,[X/2]原=0.0000,[X/2]补=0.0000,[2X]原=0.0000,[2X]补=0.0000(3)当X=-0时,[X]原=1.0000,[X]补=0.0000,[X/2]原=1.0000,[X/2]补=0.0000,[2X]原=1.0000,[2X]补=0.0000(4)当X=-0.1010时,[X]原=1.1010,[X]补=1.0110,[X/2]原=1.01010,[X/2]补=1.10110,[2X]原和[2X]补因溢出无法表示
本文档为【第5章:运算方法与运算器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xxj7584
暂无简介~
格式:ppt
大小:275KB
软件:PowerPoint
页数:0
分类:建造师考试
上传时间:2020-03-21
浏览量:3