《运算方法和运算器.ppt》由会员分享,可在线阅读,更多相关《运算方法和运算器.ppt(75页珍藏版)》请在三一办公上搜索。
1、,2.5 定点运算器的组成,2.5.1 逻辑运算2.5.2 多功能算术/逻辑运算单元ALU2.5.3 内部总线 定点运算器的基本结构,2.5.1 逻辑运算,计算机中除了进行加、减、乘、除等基本算术运算外,还可对两个或一个逻辑数进行逻辑运算。所谓逻辑数,是指不带符号的二进制数。利用逻辑运算可以进行两个数的比较,或者从某个数中选取某几位等操作。计算机中的逻辑运算,主要是指逻辑非、逻辑加、逻辑乘、逻辑异四种基本运算。,1.逻辑非运算逻辑非也称求反。如:101001011,211110000,求1,2。1101101002000011112.逻辑加运算按位求它们的“或”10100001,1001101
2、1,求。1 0 1 0 0 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 3.逻辑乘运算按位求它们的“与”10111001,11110011,求。1 0 1 1 1 0 0 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 1,4.逻辑异运算按位求它们的模2和10101011,11001100,求。解:1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 即 01100111,2.5.2 多功能算术/逻辑运算单元ALU,多功能算术/逻辑运算单元ALU,本节介绍的是74LS181的基本逻辑结构是先行进位加法器,
3、通过改变其输入端Ai和Bi来实现算术运算和逻辑运算功能。怎样实现呢?基本思想:一位全加器FA的逻辑表达式:为了实现多种算术逻辑运算,可将Ai和Bi输入一个函数发生器(进位传递函数和进位产生函数)得到输出Xi和Yi,作为一位全加器的输入(见下页图)。,加法器FA、减法单元CAS和一位ALU逻辑图,一位ALU逻辑图,ALU的逻辑图与逻辑表达式,XiYi 与控制参数和输入量的关系构造如下真值表,2.5.2 多功能算术/逻辑运算单元ALU,2.5.2 多功能算术/逻辑运算单元ALU,1、可以证明:Xi+Yi=Xi Xi.Yi=Yi(自己试试看)2、,进一步化简得到下式,2.5.2 多功能算术/逻辑运算
4、单元ALU,ALU的某一位逻辑表达式见下:,例如:S3S2S0S10000代入:,则可以处理16种算术逻辑运算,每种运算只针对1位二进制编码?思考:如何设计4位ALU?16位呢?,2.5.2 多功能算术/逻辑运算单元ALU,2.5.2 多功能算术/逻辑运算单元ALU,4位ALU 问题1:片内是串行进位还是并行进位?,回答:由上图结构中可以看出 Cn1Y0X0Cn Cn2Y1X1Cn1 Cn3Y2X2Cn2 Cn4Y3X3Cn3显然是一个串行进位,速度慢,为了实现快速ALU,需加以改进。,2.5.2 多功能算术/逻辑运算单元ALU,上述片内进位采用串行,具有延时长的缺点如何改进?思考:Cni与X
5、、Y有关,而每一位中X、Y的产生是不是同时的?,由于每一位中X、Y的产生是同时的,则可以由下面方法算出并行进位的Cn4 第0位向第1位的进位公式为Cn1Y0X0Cn(1)其中C是向第0位(末位)的进位。第1位向第2位的进位公式为:Cn2Y1X1Cn1Y1Y0X1X0X1Cn(Cn1用(1)式代入)第2位向第3位的进位公式为Cn3Y2X2Cn2Y2Y1X1Y0X1X2X0X1X2Cn 第3位的进位输出(即整个4位运算进位输出)公式为Cn4Y3X3Cn3Y3Y2X3Y1X2X3Y0X1X2X3X0X1X2X3Cn,2.5.2 多功能算术/逻辑运算单元ALU,令GY3Y2X3Y1X2X3Y0X1X2
6、X3 PX0X1X2X3Cn4G+P*CnG为进位发生输出 P为进位传送输出增加P和G的目的在于实现多片(组)ALU之间的先行进位,需要配合电路,称为先行进位发生器(CLA)器件:74181,2.5.2 多功能算术/逻辑运算单元ALU,具有正逻辑和负逻辑两种,内部逻辑结构图见下页,74181ALU逻辑图(1),74181ALU逻辑图(2),74181ALU逻辑图(3),P G,X3Y3,X2Y2,X1Y1,X0Y0 C0,GY3Y2X3Y1X2X3Y0X1X2X3PX0X1X2X3,74181ALU逻辑图(总体),2.5.2 多功能算术/逻辑运算单元ALU,算术逻辑运算的实现(74181)M=
7、L时,对进位信号没有影响,做算术运算M=H时,进位门被封锁,做逻辑运算说明:74181执行正逻辑输入/输出方式的一组算术运算和逻辑运算和负逻辑输入/输出方式的一组算术运算和逻辑运算是等效的。A=B端可以判断两个数是否相等。,2.5.2 多功能算术/逻辑运算单元ALU,设计16位ALUCn+x=G0+P0Cn Cn+y=G1+P1Cn+x Cn+x=G2+P2Cn+y Cn+4=G3+P3Cn+z片内先行进位,片间串行进位,2.4.3 先行进位ALU,两级先行进位的ALU4片(组)的先行进位逻辑Cn+x=G0+P0Cn Cn+y=G1+P1Cn+x=G1+G0P1+P0P1Cn Cn+x=G2+
8、P2Cn+y=G2+G1P2+G0P1P2+P0P1P2Cn Cn+4=G3+P3Cn+z=G3+G2P3+G1P2P3+G0P1P2P3+P0P1P2P3Cn=G*+P*CnG*为成组先行进位发生输出P*为成组先行进位传送输出,成组先行进位部件CLA的逻辑图,2.5.2 先行进位ALU,32位ALU逻辑方框图,2个74L1828个4位ALU74L181,64位组间先行进位ALU,内部总线,内部总线机器内部各部份数据传送频繁,可以把寄存器间的数据传送通路加以归并,组成总线结构。分类所处位置内部总线(CPU内)外部总线(系统总线)逻辑结构单向传送总线双向传送总线图(2-14),三态门组成的双向数
9、据总线,由三态门组成的数据总线,定点运算器的基本结构,1、单总线结构的运算器,定点运算器的基本结构,2、双总线结构的运算器,定点运算器的基本结构,3、三总线结构的运算器,定点运算器的组成,运算器主要由算术逻辑部件,通用寄存器和状态寄存器组成。算术逻辑部件ALU(Arithmetic and Logic Unit):主要完成对二进制信息的定点运算,如:加、减、乘、除、与、或、非、异或、逻辑移位、算术移位等。通用寄存器:主要用来保存参加运算的操作数和运算的结果。状态寄存器:用来记录算术、逻辑运算或测试操作的状态结果。一般有零标志位,负标志位,溢出标志位、进位或借位标志位等。,2.6 浮点运算方法和
10、浮点运算器,2.6.1 浮点加法、减法运算2.6.2 浮点乘法、除法运算2.6.3 浮点运算流水线2.6.4 浮点运算器实例,2.6.1 浮点加法、减法运算,1、浮点加减运算设有两个浮点数和,它们分别为2EM2EM其中E和E分别为数和的阶码,M和M为数和的尾数。两浮点数进行加法和减法的运算规则是(M2EEM)2E,设EE,浮点数的加法、减法运算 设有两个浮点数的分别为X=Mx*2Ex,Y=My*2Ey,实现浮点加减法算的基本步骤分为四步完成:0操作数检查:用来判断两个操作数中是否有一个为0.对阶操作:即比较两个浮点数的阶码值的大小,求E=Ex-Ey,然后将小阶对大阶。尾数进行加或减运算:实现尾
11、数的加减运算,执行两个完成对阶后的浮点数的求和(差)的过程,2.6.1 浮点加法、减法运算,规格化:若得到的结果不满足规格化规则,就必须把它变成规格化的数。规格化规则:尾数的符号为01或10时,绝对值大于1,尾数右移1位,阶码+1尾数的符号为11或00时,补码表示的数往左移n位,将尾数移成1.0或0.1注意:在执行对阶或右规操作时,会使位数低位上的一位或若干位的数值被移掉,使数值精度受到影响,可以把移掉的几个高位的值保存起来供舍入使用。,浮点加减法运算,舍入(1)“0舍1入”法,即右移时丢掉的最高位为0,则舍去;是1,则将尾数的末位加1(相当于进入)。(2)“恒置1”法,即不管移掉的是0还是1
12、,都把尾数的末位置1。溢出处理阶码最高位为00或11不溢出E补=01 XXX为上溢,真正溢出,需做溢出处理。E 补=10 XXX为下溢,浮点数值趋于零,用机器零表示。,2.6.1 浮点加法、减法运算,2.6.1 浮点加法、减法运算,例25 设x220.11011011,y=-240.101011001、0操作数检查(非0)2、对阶:阶码对齐后才能加减。规则是阶码小的向阶码大的数对齐;若E0,表示两数阶码相等,即EE;若E0,表示EE;若EE。当EE 时,要通过尾数的移动以改变E或E,使之相等。,解:浮点表示为:X浮=00 010,0.11011011 Y浮=00 100,1.01010100(
13、)对阶 原则:小阶向大阶设E0,表示EE,则移动y的尾数,M右移E位,问题:为什么要小阶向大阶看齐?阶差=Ex-Ey=00 010-00 100=11 110即阶差为-2,Mx右移两位,Ex加2 X浮=00100,0.00110110(11),+,(2)尾数求和,(),(),(3)规格化和舍入处理 结果的符号位与最高符号数值位相同,应执行左规处理,所谓左规格化的规则,就是尾数左移1位,阶码减1,所以结果为1.00010101(10),阶码为00 011 舍入处理,采用0舍1入法处理,则有 1.0 0 0 1 0 1 0 1 1 1.0 0 0 1 0 1 1 0,判溢出 阶码的符号位为00,不
14、溢出。所以最终的结果为:X+Y=2011*(-0.11101010),结果规格化(1)在浮点加减运算时,尾数求和的结果也可以得到01.或10.,即两符号位不等,此时将运算结果右移以实现规格化表示,称为向右规格化。规则:尾数右移1位,阶码加1(2)结果是00.0.01.或11.1.10.时,则向左规格化规则:尾数左移1位,阶码减1,直到规格化右规,阶码加1,左规,阶码减1例子中左规为11.00010101(10),阶码减1为00011练习:01.1101 10.0001 11.1001,舍入处理(对阶和向右规格化时)就近舍入(0舍1入):类似”四舍五入”,丢弃的最高位为1,进1朝0舍入:截尾朝舍
15、入:正数多余位不全为”0”,进1;负数,截尾朝 舍入:负数多余位不全为”0”,进1;正数,截尾溢出判断和处理阶码上溢,一般将其认为是和。阶码下溢,则数值为0,设1补11.01100000,2补11.01100001,3补11.01101000,4补11.01111001,求执行只保留小数点后4位有效数字的舍入操作值。,课堂作业,例:设X=2001*(-0.111),Y=2010*0.101,求X-Y.(假设两数均以补码表示,阶码采用3位,尾数采用4位,均包括符号位.),+,(2).尾数求差:-Y补=1.011,1.1 0 0(1),1.0 1 1,1 0.1 1 1(1),丢失,1,两个负数相
16、加,结果为正数,说明产生了溢出.,但是在浮点数的运算中,只有当阶码产生溢出时,才是溢出。此时只是说明尾数的结果为不规格化数,应进行右规。,解:浮点表示为:X浮=001,1.001 Y浮=010,0.101()对阶 E补=Ex补-Ey补=001+110=111 即E为-1,X的阶码小,应使Mx右移1位,Ex加1,得:X浮=010,1.100(1),(3).规格化和舍入处理 由于结果产生了溢出,应执行右规处理,所谓右规格化的规则,就是尾数右移1位,阶码加1,所以结果为1.011(1),阶码为011 舍入处理,采用恒舍法处理,则有尾数为1.011,(4).判溢出 阶码不溢出。所以最终的结果为 X+Y
17、=2011*(-0.101),浮点乘法和除法运算,设有两个浮点数和:2EM2EM2(EE)(MM)2(EE)(MM)乘除运算分为四步0操作数检查阶码加减操作尾数乘除操作结果规格化和舍入处理,浮点乘、除法的运算步骤:浮点数的阶码运算 阶码通常用补码和移码形式表示。对于移码来说:(课本的证明)X+Y移=X移+Y补 X-Y移=X移+-Y补 在用移码进行计算时,判断溢出的条件是当结果的最高符号位为1时,则产生了溢出。,浮点乘法和除法运算,浮点乘法和除法运算,移码采用双符号位,为了对溢出进行判断01 为正 00 为负10 上溢 11 下溢,011,110,求移 和 移,并判断是否溢出。,移01 011,
18、补00 110,补11 010移移补10 001,结果上溢。移移补00 101,结果正确,为3。,浮点数的尾数处理第一种方法:无条件地丢掉正常尾数最低位之后的全部数值,这种方法称为截断处理。第二种方法:运算过程中保留右移中移出的若干高位的值,最后按某种规则用这些位上的值修正尾数,这种处理称为舍入处理。,浮点乘法和除法运算,尾数处理截断舍入*尾数用原码表示时只要尾数最低为1或者移出位中有1数值位,使最低位置10舍1入*尾数用补码表示时丢失的位全为0,不必舍入。丢失的最高位为0,以后各位不全为0时;或者最高为1,以后各位全为0时,不必舍入。丢失的最高位为1,以后各位不全为0时,则在尾数的最低位入1
19、的修正操作。,浮点乘法和除法运算,设有浮点数250.0110011,23(0.1110010),阶码用4位移码表示,尾数(含符号位)用8位补码表示。求浮。要求用补码完成尾数乘法运算,运算结果尾数保留高8位(含符号位),并用尾数低位字长值处理舍入操作。,解:移码采用双符号位,尾数补码采用单符号位,则有 M补0.0110011,M补1.0001110,E移01 011,E补00 011,E移00 011,浮00 011,0.0110011,浮01 011,1.0001110(1)判断操作是否为”0”,求阶码和EE移E移E补00 01100 01100 110,值为移码形式2。(2)尾数乘法运算可采
20、用补码阵列乘法器实现,即有M补M补0.0110011补1.0001110补 1.1010010,1001010补,(3)规格化处理 乘积的尾数符号位与最高数值位符号相同,不是规格化的数,需要左规,阶码变为00 101(-3),尾数变为 1.0100101,0010100。(4)舍入处理尾数为负数,取尾数高位字长,按舍入规则,舍去低位字长,故尾数为1.0100101。最终相乘结果为浮00 101,1.0100101 其真值为23(0.1011011),浮点乘法和除法运算,实现的逻辑框图,浮点运算流水线,1、提高并行性的两个渠道:空间并行性:增加冗余部件,如增加多操作部件处理机和超标量处理机时间并
21、行性:改善操作流程如:流水线技术,浮点运算流水线,2、流水技术原理在流水线中必须是连续的任务,只有不断的提供任务才能充分发挥流水线的效率把一个任务分解为几个有联系的子任务。每个子任务由一个专门的功能部件实现在流水线中的每个功能部件之后都要有一个缓冲寄存器,或称为锁存器流水线中各段的时间应该尽量相等,否则将会引起“堵塞”和“断流”的现象流水线需要有装入时间和排空时间,只有当流水线完全充满时,才能充分发挥效率,流水线原理,设过程段 Si所需的时间为i,缓冲寄存器的延时为l,线性流水线的时钟周期定义为maxilml流水线处理的频率为 f1/。,流水线原理,一个具有k 级过程段的流水线处理 n 个任务
22、需要的时钟周期数为Tkk(n1),所需要的时间为:TTk 而同时,顺序完成的时间为:Tnkk级线性流水线的加速比:Ck TL nk Tk k(n1),流水线浮点运算器,Aa2P,Bb2q在4级流水线加法器中实现上述浮点加法时,分为以下操作:(1)求阶差(2)对阶(3)相加(4)规格化,2.6.4浮点运算器实例,浮点运算器实例CPU之外的浮点运算器(数学协处理器)如80287完成浮点运算功能,不能单用。可以和80386或80286异步并行工作。高性能的80位字长的内部结构。有8个80位字长以堆栈方式管理的寄存器组。浮点数格式完全符合IEEE标准。CPU之内的浮点运算器(486DX以上),返回,本
23、 章 小 结,一个定点数由符号位和数值域两部分组成。按小数点位置不同,定点数有纯小数和纯整数两种表示方法。按IEEE754标准,一个浮点数由符号位S、阶码E、尾数M三个域组成。其中阶码E的值等于指数的真值e加上一个固定偏移值。为了使计算机能直接处理十进制形式的数据,采用两种表示形式:(1)字符串形式,主要用在非数值计算的应用领域;(2)压缩的十进制数串形式,用于直接完成十进制数的算术运算。,本 章 小 结,数的真值变成机器码时有四种表示方法:原码表示法,反码表示法,补码表示法,移码表示法。其中移码主要用于表示浮点数的阶码E,以利于比较两个指数的大小和对阶操作。字符信息属于符号数据,是处理非数值领域的问题。国际上采用的字符系统是七单位的ASCII码。直接使用西文标准键盘输入汉字,进行处理,并显示打印汉字,是一项重大成就。为此要解决汉字的输入编码、汉字内码、字模码等三种不同用途的编码。,本 章 小 结,为运算器构造的简单性,运算方法中算术运算通常采用补码加、减法,原码乘除法或补码乘除法。为了运算器的高速性和控制的简单性,采用了先行进位、阵列乘除法、流水线等并行技术措施。运算方法和运算器是本章的重点。定点运算器和浮点运算器的结构复杂程度有所不同。早期微型机中浮点运算器放在CPU芯片外,随着高密度集成电路技术的发展,现已移至CPU内部。,返回,
链接地址:https://www.31ppt.com/p-5387479.html