1、第4章,计算机中的运算器部件,本章主要内容,运算器部件概述定点运算器的功能、组成与设计浮点运算与浮点运算器,运算器功能与组成概述,计算机五大功能部件之一,在控制器的指挥控制下,完成指定给它的运算处理功能。运算器通常包括定点运算器和浮点运算器两种类型:定点运算器:完成对整数类型数据的算术运算、逻辑类型数据的逻辑运算浮点运算器:完成对浮点类型数据的算术运算,运算器设计需要解决的问题,需要明确参加运算的数据来源,运算结果的去向。运算器能直接运算的数据,通常来自于运算器本身的寄存器。这些寄存器本身是暂存数据用的,是由触发器构成的时序逻辑电路。需要明确将要执行的运算功能,是对数值数据的何种算术运算功能,
2、还是对逻辑数据的何种逻辑运算功能。完成数据运算功能的线路是组合逻辑电路。运算器完成一次数据运算过程由多个时间段组成,其时序关系示意表示在下图。运算器部件只有和计算机的其他部件连接起来才能协同完成指令的执行过程。,本章主要内容,运算器部件概述定点运算器的功能、组成与设计浮点运算与浮点运算器,定点运算器功能与组成,完成算术与逻辑运算功能 算术逻辑单元(ALU) 暂存参加运算的数据和中间结果 通用寄存器组 乘除法运算的硬件线路支持 乘商寄存器(Q寄存器)作为处理机内部数据通路(Data Path),通过几组多路选择器电路实现相互连接,以便数据传送。,教学计算机硬件系统的组成,计算机 终端,PC机,微
3、程序 控制器,运算器 (16 位),主存储器 (16位),按键 开关 指示灯,串行接口,接口实验 中断实验 内存扩展实验,电 源 +5V,硬布线 控制器,RESET,START 按键,运行功能选择开关,两个12位的 微型开关,16位的 手拨输入开关,微程序 控制器小板,串行口接线座,5V直流电源,电源开关,组合逻辑 控制器,运算器,内存储器,串口电路,I86 I53 I20 SST SCI SSH A口 B口,教学计算机运算器实例,教学计算机运算器字长16位,用4片4位的位片结构的Am2901组成。Am2901芯片的内部组成和实现的功能怎样连接4片Am2901成为16位的运算器怎样解决运算器实
4、用中的几个问题:(1) 运算器最低位进位输入信号 Cin 的形成 (2) 运算器4位标志位信号的接收与记忆线路 (3) 移位时最高、最低位的移位输入信号设计,二选一,B 16个 A 通用寄存器,三选一,二选一,三选一,三选一,A L U S R,B锁存器,A锁存器,乘商寄存器Q,Cn,/OE,Q3,Q0,RAM0,RAM3,F,输出Y,F3 F=0000 OVR Cn+4,输入D,A口地址,B口地址,Am2901内部组成,组成 算逻运算部件 通用寄存器组 乘商寄存器 Q功能 8种运算功能 8种数据组合 8种结果处理,A L U S R,Cn,F,F3 F=0000 OVR Cn+4,Am290
5、1芯片是一个 4位的位片结构的运算器器件,其内部组成如下:,第一个组成部分是算逻运算部件ALU,完成 3 种算术运算 和 5 种逻辑运算,共计 8 种功能。,其输出为 F,两路输入为 S、R,最低位进位Cn,4个状态输出信号如图所示,符号位 结果为零 结果溢出 进位输出,RS RS,8种运算功能,000 001 010 011 100 101 110 111,3位功能选择码,R+S SR RS R S RS,RS,B 16个 A 通用寄存器,A L U S R,B锁存器,A锁存器,Cn,F,F3 F=0000 OVR Cn+4,A口地址,B口地址,第二个组成部分 是通用寄存器组 由16个寄存器
6、构 成,并通过B口 与A口地址选择 被读的寄存器, B口地址还用于 指定写入寄存器,通过B口地址、 A口地址读出的 数据将送到B、 A锁存器,要写 入寄存器的数据 由一个多路选择 器送来。,(写入),B 16个 A 通用寄存器,A L U S R,B锁存器,A锁存器,Q寄存器,Cn,F,F3 F=0000 OVR Cn+4,A口地址,B口地址,第三个组成部分 是乘商寄存器Q 它能对自己的内 容完成左右移位 功能,其输出可 以送往ALU,并 可接收ALU的输 出结果。,该芯片的第四个 组成部分是 5 组 多路选通门,包括,B 16个 A 通用寄存器,三选一,二选一,A L U S R,B锁存器,
7、A锁存器,Q寄存器,Cn,F,F3 F=0000 OVR Cn+4,输入D,A口地址,B口地址,一组三选一门和 另一组二选一门 用来选择送向 ALU的 R、S输 入端的数据来源 ,包括Q寄存器、 A口、 B口、外 部输入D数据的 8 种不同组合。,8种数据组合(R,S) AQ AB 0Q 0B 0A DA DQ D0,3位数据选择码,000 001 010 011 100 101 110 111,B 16个 A 通用寄存器,三选一,二选一,三选一,三选一,A L U S R,B锁存器,A锁存器,Q寄存器,Cn,Q3,Q0,RAM0,RAM3,F,F3 F=0000 OVR Cn+4,输入D,A
8、口地址,B口地址,一组三选一门 完成把ALU的 输出、或左移 一位、或右移 一位的值送往 通用寄存器组 ,最高、最低 位移位信号有 双向入/出问题,一组三选一门 完成Q寄存器 的左移一位、 或右移一位、 或接收ALU输 出值的功能, 最高、最低位 移位信号有双 向入/出问题。,二选一,B 16个 A 通用寄存器,三选一,二选一,三选一,三选一,A L U S R,B锁存器,A锁存器,Q寄存器,Cn,/OE,Q3,Q0,RAM0,RAM3,F,输出Y,F3 F=0000 OVR Cn+4,输入D,A口地址,B口地址,一组二选一门, 选择把A口数据 或ALU结果送出芯片,以给出输出Y的数据,Y输出
9、的有无还受输出使能 /OE信号的控制,仅当 /OE为低是才有Y输出 , /OE为高,Y输出为高阻态。,8 种结果处理,3位控制码 通用寄存器 Q寄存器 Y输出000 QF F001 F010 BF A011 BF F100 BF/2 QQ/2 F101 BF/2 F110 B2F Q2Q F111 B2F F,Am2901的控制信号,编码 I8 I7 I6 I5 I4 I3 I2 I1 I0 000 Q F F R + S A Q 001 F S R A B 010 B F A R S 0 Q 011 B F F R S 0 B 100 B F/2 Q Q/2 F RS 0 A 101 B F
10、/2 F RS D A 110 B 2F Q 2Q F RS D Q 111 B 2F F RS D 0,B Q Y,R S,存移输出巧安排,存移输出巧安排,存移输出巧安排,存移输出巧安排,运算器,三大件 运算暂存乘除快 多路选通连起来,数据组合选择 I2 I1 I0,运算功能选择 I5 I4 I3,运算结果处理 I8 I7 I6,运算,暂存,乘除快,数据组合有内外,运算功能指明白,多路选通连起来,二选一,B 16个 A 通用寄存器,三选一,二选一,三选一,三选一,A L U S R,B锁存器,A锁存器,乘商寄存器Q,Cn,/OE,Q3,Q0,RAM0,RAM3,F,输出Y,F3 F=0000
11、 OVR Cn+4,输入D,A口地址,B口地址,Am2901内部组成,组成 算逻运算部件 通用寄存器组 乘商寄存器 Q功能 8种运算功能 8种数据组合 8种结果处理,I5I3,I2I0,I8I6,运算器的时钟脉冲信号,运算器的时钟脉冲信号 CP 教学计算机的主频: 1.8432MH z/6,A、B口锁存,通用寄存器接受,Q 接受,周期,和低电平的作用注意两个跳变沿,Am2901的操作使用,操作功能,控制信号 B口 A口 I8 I7 I6 I5 I4 I3 I2 I1 I0 Cn,R0R0+R1,R2R2R0,QR0,右移 R0R0+R1,R0R0R1,Y A口,Y F,0000,011,000
12、1,000,001,0,0010,0000,010,001,001,1,0000,101,0001,000,001,0,0000,000,000,100,0,/,0000,010,0001,100,001,0,R0R0R1,Y F,0000,011,0001,100,001,0,入出信号及引脚,Y3Y0,D3D0,RAM3,Q3,RAM0,Q0,CP,OE,Cn,Cn+4 F=0 Over F3,Am2901,A3A0,B3B0,I8I6,I5I3,I2I0,Y118,Y30,D118,D74,D30,Cin,RAM0,Q0,Y74,4 片Am2901之间的连接,Vcc R,片间高速进位用 A
13、m2902,高位 Am2901,Am2901,Am2901,低位 Am2901,Am2902 Cn+z Cn+y Cn+x,/G/P,Y1512,Y118,Y74,Y30,D1512,D118,D74,D30,OVER,F=0,F15,Cy,Cin,CP,RAM15,Q15,RAM0,Q0,A口,B口,I86 I53 I20,Vcc R,入出信号及引脚,Y15Y0,D15D0,RAM15,Q15,RAM0,Q0,CP,OE,Cin,Cy F=0 Over F15,运 算 器 部 件,A3A0,B3B0,I8I6 I5I3 I2I0,运算器实用中的几个问题,运算器最低位进位输入信号 Cin 的形
14、成运算器4位标志位信号的接收与记忆线路移位时最高、最低位的移位输入信号设计,如何提供ALU最低位进位信号,不同指令需求 Cin 例子最低位进位 控制码 ADD指令 0 R0+R1 + 0 INC指令 1 R0+0 + 1 ADC指令 C R0+R1 + C SUB指令 1 R0+/R1 + 1 DEC指令 0 R0+/0 + 0 SBB指令(原理)C R0+/R1 + C,加运算,减运算,SCI,最低位进位信号由 SCI 编码决定,00 01 10 01 00 10,最低位进位信号Cin的逻辑表达式,Cin = /SCI1* SCI0+ SCI1*/SCI0*C,16位的 运算器,16 位运算
15、器最低位进位输入信号Cin,Cy F=0 OVR F15,RAM15 Q15,RAM0 Q0,最低位进位 GAL3,SCI,0 1 C,Y150,D150,B口,A口,I8I0,Cin,如何处理计算结果标志位,算术与逻辑的运算指令结果产生标志位的值 该标志位的值只在执行运算步骤接收输入算术运算指令的结果会影响 C 、 Z、V、S逻辑运算指令的结果只影响 Z 、S其他指令或其他执行步骤不接受标志位的值 由此可见: 若设置标志位寄存器,会有依据什么指令的什么时刻接收或不接收ALU 输出的标志位的值这样两种处理,几条影响 C触发器的指令,指令中有 STC(C1)、CLC指令(C 0 ) 指令中有RC
16、L、RCR、SHL、SHR指令, 它们的移位输出要传送进 C, 还需要决定寄存器的移位输入是什么值。,C,通 用 寄 存 器,通 用 寄 存 器,C,0,0,RCL,RCR,SHR,SHL,RAM15,RAM0,RAM0,RAM15,对乘除法指令的支持,指令中 MUL SR 指令,DIV SR指令 它们的运行用到了移位输出要传送进 C (还决定寄存器的移位输入),C,通用寄存器,通用寄存器,Q 寄存器,乘法,联合右移位,Q 寄存器,除法,联合左移位(即为商),/F15,Q0,Cy,状态寄存器的控制,用3位码控制 有8处来源 SST 20 C Z V S 000 不变 三位不变 (C,Z,V,S
17、) 001 接受ALU状态输出(Cy,ZR,OV,F15) 010 接收内部总线输出 (IB7 6 5 4) 011 0 三位不变 100 1 三位不变 101 RAM0 三位不变 110 RAM15 三位不变 111 Q0 三位不变,状态寄存器的逻辑表达式,C := /SST2*/SST1*/SST0* C V := /SST2*/SST1*/SST0* V+ /SST2*/SST1* SST0* Cy + /SST2*/SST1* SST0* OV+ /SST2* SST1*/SST0* IB7 + /SST2* SST1*/SST0* IB5+ SST2*/SST1*/SST0 + /S
18、ST2* SST1* SST0* V+ SST2*/SST1* SST0* RAM0 + SST2* V+ SST2* SST1*/SST0* RAM15+ SST2* SST1* SST0* Q0Z := /SST2*/SST1*/SST0* Z S := /SST2*/SST1*/SST0* S + /SST2*/SST1* SST0* ZR + /SST2*/SST1* SST0* F15 + /SST2* SST1*/SST0* IB6 + /SST2* SST1*/SST0* IB4 + /SST2* SST1* SST0* Z + /SST2* SST1* SST0*S + SST
19、2* Z + SST2* S,0,1,RAM0 Q0,RAM15,16位的 运算器,16 位运算器的状态寄存器,四位标志位 GAL1,SST,C Z V S,Cy F=0 OV F15,来自内部总线 IB,RAM15 Q15,RAM0 Q0,Y150,D150,B口,A口,I8I0,Cin,寄存器移位输入信号,2 位控制码 左移(I7) 右移(/I7) 指令 SSH10 RAM0 Q0 RAM15 Q1500 0 / 0 / SHL SHR01 C / C / RCL RCR10 Q15 /F15 Cy F0 DIV MUL实现中,具体移位输入信号是用SSH 编码和 ALU 中的结果处理控制信
20、号 I7(移位方向)共同决定的。,左右移位输入信号逻辑表达式,RAM15 = /SSH1* SSH0* C+ SSH1 */SSH0* Cy Q15 = SSH1 */SSH0* F0 RAM0 = /SSH1* SSH0* C+ SSH1 */SSH0* Q15 Q0 = SSH1 */SSH0* /F15RAM15 .OE= /I7 Q15 .OE= /I7 RAM0 .OE= I7 Q0 .OE= I7,16位的 运算器,16 位运算器的最高位、最低位移位输入信号,右移输入信号 GAL3,左移输入信号 GAL3,Cy F=0 OVR F15,SSH,SSH,右移控制,左移控制,RAM15
21、 Q15,RAM0 Q0,0 C Q15 /F15,0 C Cy F0,Y150,D150,B口,A口,I8I0,Cin,0,1,RAM0 Q0,RAM15,16位的 运算器,16 位运算器的完整组成,四位标志位 GAL1,右移输入信号 GAL3,SST,左移输入信号 GAL3,最低位进位 GAL3,C Z V S,Cy F=0 OVR F15,来自内部总线 IB,SSH,SSH,SCI,右移控制,左移控制,RAM15 Q15,RAM0 Q0,0 C Q15 /F15,0 C Cy F0,0 1 C,Y150,D150,B口,A口,I8I0,Cin,运算器用的GAL20V8的控制信号,GAL1
22、:状态寄存器 GAL3: 进位输入 SST C Z V S SCI 运算 Cin 000 C Z V S 00 加 0 001 Cy ZR OV F15 01 加 1 010 内部总线的一位 10 加 C 移位输入 011 1 Z V S RAM0 Q0 RAM15 Q15 100 0 Z V S SSH 左移位 右移位 101 RAM0 Z V S 00 0 X 0 X 110 RAM15 Z V S 01 C X C X 111 Q0 Z V S 10 Q15 /F15 Cy F0,脱机的运算器实验,在已经设计好并实现了运算器部件之后,如何控制它完成指定的运算功能并检查它的执行结果呢?最简
23、单的办法是:(1)通过开关向其提供将要使用的数据,(2)通过开关向其提供必要的控制信号,(3)通过开关按钮控制寄存器接收运算结果,(4)通过指示灯显示运算结果和控制信号的值。其实这就是把计算机的运算器部件从计算机系统中孤立出来,用手工方式操作其运行过程,这不会涉及计算机的其他功能部件,事情变得更单纯简单,更容易理解,学懂这一部分内容之后,很容易与通过计算机的控制器控制运算器运行的具体实现方案联系起来,更有利于把复杂的事情简单化。,16位运算器脱机实验,Y15Y0,D15D0,RAM15,Q15,RAM0,Q0,Cin,Cy F=0 Over F15,运 算 器 部 件,A30,B30,I86,
24、(用16个开关提供输入数据),C Z V S,SSH,SST,SCI,I53,I20,A口 B口 SCI SSH,I86 I53 I20 SST,通过24位微型开关 提供控制信号,用四个指示灯显示状态,(用16个指示灯显示结果),本章主要内容,运算器部件概述定点运算器的功能、组成与设计浮点运算与浮点运算器,浮点运算器与浮点数运算,浮点运算器通常由 处理阶码的 和 处理尾数的 两个定点运算器组成 在早期的小或微型机中,浮点运算器通常以 任选件方式提供给用户 , 主要用于计算浮点数 浮点数加减运算对阶 执行加减 规格化 舍入 (右归)判溢出 浮点数乘除运算 阶码加减 尾数乘除 舍入与规格化处理 判
25、溢出,浮点数在计算机内的格式,浮点数: X = MS ES Em-1 .E2 E1 M-1M-2.M-n,符号位 阶码位 尾数数码位 总位数,短浮点数: 1 8 23 32,长浮点数: 1 11 52 64,临时浮点数: 1 15 64 80,IEEE 标准:阶码用移码,基为2;尾数用原码,浮点数的阶码的位数决定数的表示范围,尾数的位数决定数的有效精度。,浮点数在计算机内的格式,IEEE 标准:尾数用原码,浮点数是数学中实数的子集合,由一个纯小数乘上一个指数值来组成。在计算机内,其纯小数部分被称为浮点数的尾数,对非 0 值的浮点数,要求尾数的绝对值必须 = 1/2,称满足这种表示要求的浮点数为
26、规格化表示;把不满足这一表示要求的尾数,变成满足这一要求的尾数的操作过程,叫作浮点数的规格化处理,通过尾数移位和修改阶码实现。,浮点数在计算机内的格式,IEEE 标准:尾数用原码,按国际电子电气工程师协会规定的标准,浮点数的尾数要用原码表示,即符号位 Ms: 0 表示正,1 表示负,且非 0 值尾数数值的最高位 M-1 必为 1, 才能满足浮点数规格化表示的要求;既然非 0 值浮点数的尾数数值最高位必定为 1,则在保存浮点数到内存前,通过尾数左移, 强行把该位去掉, 用同样多的尾数位就能多存一位二进制数,有利于提高数据表示精度,称这种处理方案使用了隐藏位技术。当然,在取回这样的浮点数到运算器执
27、行运算时,必须先恢复该隐藏位。,浮点数在计算机内的格式,X = Ms Es Em-1 .E1 E0 M-1 M-2 .M-n,IEEE 标准:阶码用移码,基为2,按国际电子电气工程师协会规定的国际通用标准,浮点数的阶码用整数给出,并且要用移码表示,用作为以 2为底的指数的幂。既然该指数的底一定为 2 ,可以不必在浮点数的格式中明确表示出来, 只需给出阶码的幂值即可。移码表示只用于表示整数,只用在浮点数的阶码部分,其定义类似于整数的补码定义,差别在符号位。移码的符号位是 0 表示负,1 表示正,与补码的符号位正好相反,移码是指机器数在数轴上有个移位关系;移码的数值位则与补码的数值位完全相同。,浮
28、点数格式:关于移码的知识,移码表示只用于表示整数,只用在浮点数的阶码部分。 一位符号位和 n 位数值位组成的移码, 其定义为; E移 = 2n + E -2n=E2n 表示范围: 00000000 11111111,浮点数格式:关于移码的知识,一位符号位和 n 位数值位组成的移码, 其定义为; E移 = 2n + E -2n=E2n 表示范围: 00000000 11111111 负数 正数 机器数,0,移码只执行二数的加减运算与增 1、 减 1 操作。加减运算时,符号位计算结果求反后, 才是加减运算的正确符号位的值。,8 位的阶码能表示-128+127,当阶码为-128时,其补码表示为 00
29、000000,该浮点数的绝对值2-128,人们规定此浮点数的值为零,若尾数不为 0 就清其为 0,并特称此值为机器零。,8 位移码表示的机器数为数的真值 在数轴上向右平移了 128 个位置,-128,+127,浮点数算术运算,(1)对阶操作,求阶差: E= MX -MY,使阶码小的数的尾数右移E位,其阶码取大的阶码值; (2)尾数加减; (3)规格化处理; (4)舍入操作,可能带来又一次规格化; (5)判结果的正确性,即检查阶码上下溢出,浮点数加减运算,浮点数加运算举例,X=2010*0.1101111, Y=2100*(-0.1010110) 写出X、Y的正确的浮点数表示:阶码用 4 位移码
30、 尾数用 8 位原码(含符号位 ) (含符号位 )X浮 = 0 1010 1101111Y浮 = 1 1100 1010110 为运算方便,尾数的符号为写在数值位之前:MX浮= 1010 0 1101111MY浮= 1100 1 1010110,浮点数加运算举例,X=2010*0.1101111, Y=2100*(-0.1010110) (1)计算阶差: E = EX -EY= EX +(-EY) = 1 010 + 0 100 = 0 110注意:阶码计算结果的符号位在此变了一次反,结果为 -2 的 移码,是X的阶码值小,使其取 Y 的阶码值1100(即 +4);因此,相应地修改 MX补 =
31、00 001101111(即右移 2 位) (2)尾数求和:1 1010110 此处是原码加法,符号不相- 0 0011011 11 同,绝对值大的减小的,结1 0111011 11 果符号取决于绝对值大的数. 移出部分不参与运算.,浮点数加运算举例,X=2010*0.1101111,Y=2100*(-0.1010110) (3)规格化处理: 相加结果,数值的最高位为0,应执行1次左规操作,故得 MX原 = 1 1110110,阶码减1,EX移 = 1 011 (4)舍入处理:结果为负,警戒位为正,在最低位减 11 1110110- 0 00000011 1110101(5)检查溢出否:和的阶
32、码为 1011,不溢出计算后的 X浮 = 1 1011 1110101 ,即数的实际值为 23*(-0.1110101),浮点数算术运算,(1) 阶码加、减:乘:EX+EY ,除:EX- EY (2) 尾数乘、除:乘:EX*EY , 除:EX / EY (3) 规格化处理; (4) 舍入操作,可能带来又一次规格化; (5) 判结果的正确性,即检查阶码上下溢出,浮点数乘除运算,浮点数乘法运算举例,X=2010*0.1011, Y=2100*(-0.1101)写出X、Y的正确的浮点数表示:阶码用 4 位移码 尾数用 9 位原码(含符号位 ) (含符号位 )X浮 = 0 1010 1011Y浮 =
33、1 1100 1101,浮点数乘运算举例,X=2010*0.1011, Y=2100*(-0.1101)(1)阶码相加: 积的阶码 = EX + EY = 1 010 + 1 100 = 1 110注意:计算结果的阶码符号位在此变了一次反,移码结果为 +6(2)尾数相乘:MX*MY = 0.1011*(-0.1101)= -0.10001111(3) (4) (5) 已是规格化数, 不必舍入, 也不溢出最终乘积 MX浮= 1 1110 10001111,即 26 * (-0.10001111),浮点数除运算举例,X=2010*0.1011, Y=2100*(-0.1101)(1) 阶码相减:
34、积的阶码 = EX - EY = EX + (-EY) = 1 010 + 0 100 = 0 110注意:计算结果的阶码符号位在此变了一次反,为移码 -2 (2) 尾数相除:MX/MY = 0.1011/(-0.1101)= -0.1101(3) (4) (5) 已是规格化数, 不必舍入, 也不溢出最终的商 MX浮= 1 0110 1101,即 2-2 *(-0.1101),IEEE 浮点数标准 754,浮点数: X = MS ES Em-1 .E2 E1 M-1M-2.M-n,符号位 阶码位 尾数数码位 总位数,短浮点数: 1 8 23 32,长浮点数: 1 11 52 64,临时浮点数:
35、 1 15 64 80,IEEE 标准:阶码用移码,基为2;尾数用原码,对长、短浮点数的尾数选用隐藏位技术,IEEE浮点数标准754,规定对长、短浮点数的尾数使用隐藏位技术,即把非 0 值的尾数的最高位上的 1 经过左移操作后强行去掉,则原来不能表示的更低一位就进到最低一位,使 23 位的尾数数值位就能给出 24 位的精度,此时还应把阶码位相应的减 1,变原来的移 128 为移 127。正常的阶码值范围:01hFEh,表示 -126+127 特定的阶码:00h,23位的非 0 尾数表示非规格化浮点数(隐藏位此时一定为0);FFh, 尾数为全 0 时表示无穷大的浮点数,可正可负,由符号位决定。尾数非全 0 时属于非法数值,