《计算机组成原理AM2901》由会员分享,可在线阅读,更多相关《计算机组成原理AM2901(35页珍藏版)》请在金锄头文库上搜索。
1、定点运算器举例(AM2901)一、加法器 1.半加器:不考虑进位输入时,两个数码 Xn和Yn相加称为半加。设半加和为Hn ,则 Hn的表达式为: Hn=XnYn 2.全加器:考虑进位Cn-1输入时的相加称 为全加。设全加和为Fn ,向高位的进位为 Cn,则其功能表如下: 由表可得全加和Fn和进位输出Cn的表达式为 : Fn= XnYnCn-1 Cn=XnYn+(XnYn)Cn-1由8个全加器组成的8位加法器(串行进位) 由8个全加器组成的8位加法器 大家注意的是:加法器无存储功能 全加器的位数与操作数的位数相等的加法器 称并行加法器。 进位信号的产生与传递的逻辑结构称为进位 链。 当Xi与Yi
2、都为1时,Ci=1,即有进位信号产生 ,所以将XiYi称为进位产生函数或本地进位 ,并以Gi=XiYi表示。 当XiYi=1且Ci-1=1时,则Ci=1。这种情况可 看作是当XiYi=1时,第i-1位的进位信号Ci-1可以通过本位向高位传送。因此,把 XiYi称为进位传递函数或进位传递条件, 并以Pi=XiYi表示。组内并行、 组间串行的进位链 这种进位链每小组4位,组内采用并行进位 结构,组间采用串行进位传递结构,进位表 达式为: C1=G1+P1C0 C2=G2+P2G1+P2P1C0 C3=G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4G3+P4P3G2+P4P3P2G
3、1+P4P3P2P1C0 16位组内并行组间串行进位链框图如下图所 示。16位组内并行、组间串行进位链框图组内并行、组间并行的进位链 G1*=G4+P4G3+P4P3G2+P4P3P2G1(小组的进位产生函数) P1*=P4P3P2P1(小组的进位传递函数) 因此: C4=G1*+P1*C0 同理: C8=G2*+P2*C4 C12=G3*+P3*C8 C16=G4*+P4*C12 这是一组递推表达式,可将其展开为: C4=G1*+P1*C0 C8=G2*+P2*G1*+P2*P1*C0 C12=G3*+P3*G2*+P3*P2*G1*+P3*P2*P1*C0 C16=G4*+P4*G3*+P
4、4*P3*G2*+P4*P3*P2*G1*+P4*P3*P2*P1*C0 其中: G1*=G4+P4G3+P4P3G2+P4P3P2G1 G2*=G8+P8G7+P8P7G6+P8P7P6G5 G3*=G12+P12G11+P12P11G10+P12P11P10G9 G4*=G16+P16G15+P16P15G14+P16P15P14G13 P1*=P4P3P2P1 P2*=P8P7P6P5 P3*=P12P11P10P9 P4*=P16P15P14P1316位组内并行、组间并行进位链框图 进位产生次序: 产生第一小组的C1、C2、C3及所有G、P 产生组间的进位信号C4、C8、C12、C16
5、 产生第二、三、四小组的C5C15 至此,进位信号全部形成,和数也随之产 生。二、AM2901A简介 在此,我们将以Am2901A四位双极型位片式结构的 运算器为实例,看一个已经商品化的运算器的实际 组成。 图47给出的是该运算器的逻辑简框图。 图4.8给出了Am2901A较为具体的逻辑原理图 AM2901 给出这个实例的目的是帮助了解运算器本身的总体 结构,建立起运算器的控制与运行过程的概念。事 实上现在已有更高集成度的运算器芯片,但工作原 理是类似的。 其内部组成讲解如下: 第一个组成部分是算逻运算部件ALU,能完成 3 种算术运算和5种逻辑运算功能。其输出为F, 两路输入为 S、R,最低
6、位进位Cn,四个状态输 出信号如图所示。F3、F=0000、OVR、Cn+4 第二个组成部分是通用寄存器组 由16个寄存器构成,并通过A口与B口地址选择被读 的寄存器,B口地址还用于指定写入寄存器。通过B 口地址、A口地址读出的数据将送到B、A锁存器,要 写入寄存器的数据由一个多路选择器送来。 第三个组成部分是乘商寄存器Q,它能对自 己的内容完成左右移位功能,其输出可以 送往ALU,并可接收ALU的输出结果。 该芯片的第四个组成部分是五组多路选通 门,包括如下内容: 一组二选一门,选择把A口数据或ALU结果 送出芯片,以给出输出Y的数据。Y输出的 有无还受输出使能OE信号的控制,仅当OE 为低
7、时才有Y输出 ,OE为高,Y输出为高阻 态。 一组三选一门和另一组二选一门用来选择送 向ALU的 S、R输入端的数据来源,包括Q寄存 器、A口、 B口、外部输入D数据的8 种不同 组合。 一组三选一门完成把ALU的输出、或左移一 位、或右移一位的值送往通用寄存器组,最 高、最低位移位信号有双向入/出问题。一组 三选一门完成Q寄存器的左移一位、或右移 一位、或接收ALU输出值的功能,最高、最 低位移位信号有双向入/出问题。 AM2901A运算器有以下主要特点: 它是位片式结构,即每片内仅有四位线路,要实 现不同位数的运算器,需将几片同样的器件串接起 来使用。例如用四片可实现个16位字长的运算器
8、。 该运算器的ALU能实现八种运算功能,它每一位 上的两个输入端数据分别用R和S表示,则这八种功 能是:RS,SR和RS三种算术运算功能, 五种逻辑运算功能。这八种功能的选择控制,是用 外部送入的三位编码值I5I4I3扎实现的,其具体规 定如表41所示。 ALU的R输入端可以接收外部送入运算器的数据D, 寄存器组的组输出A,或接收逻辑0值。ALU的S输 入端可以接收寄存器组的一组输出A和另组输出B ,还可以接收Q寄存器的输出。这样,R和S接收的数 据可以有如下12种组合情况: R 0000 AAAA DDDD S ABQ0 ABQ0 ABQ0 考虑到R和S同时接收0无实用价值,OA与AO组合、
9、AA 和AB组合、DA和DB组合可以相互替代,故只需留下八 种组合情况即可、此时可用外部送来的三位控制码 来决定ALU的输入数据,即区分可用的八种组合,具 体对应关系如表4.2所示。 运算器中有1个16X4位的通用寄存器组和一个4位 的Q寄存器。寄存器组被设计成能双端口输出的部 件。每一个寄存器都可以用A地址或B地址选择,将 寄存器中的内容分别送到输出端口A或B。当A和B地 址不同时,在输出端口A和B将得到两个不同寄存器 中的内容。该寄存器组的写入控制,只能用B地址 实现,写入的数据是ALU的输出经过移位器送到寄 存器组的输入端的。移位器可执行直送、左移一位 操作,或右移一位的操作,使加减运算
10、和移位操作 可在同一个操作步骤中完成。 Q寄存器本身具有移位功能,即它可以接收自己 左移一位或右移一位的值。Q寄存器还可以接收ALU 的输出F的值。Q的输出可在经ALU的S输入端送入 ALU。 ALU还给出了Cn+4、F3(可用作符号位)、 OVR和F=0000四个状态信息,它们分别是本 四位运算器产生的向更高位的进位、本片最 高位的取值、结果溢出和结果为零的状态。 ALU的最低位还接收从更低位片送来的进位 信号Cn,ALU还给出了超前进位信号G和P。 移位器还有接收与送出移位数值的引线 ,它们分别是RAM3、RAM0、Q3和Q0,它们都 是用三态门给出的具有双向传送功能的线路 实现的。 运算
11、器的四位输出为Y3一Y0,它可以是 ALU的运算结果,也可以是寄存器组A输出 端口上的内容。这里用的是三态门电路, 仅当OE#信号为低电平时,y的值才是可用 的,否则Y输出处于高阻状态。 控制数据传送的方式(移不移位)和数据 发送的去向,是用另外三位编码不I8I7I6来 控制的,具体规定如表43所示。 我们可以用四片Am2901A组成一个16位字长的 定点运算器,其连接关系如图49所示。 四片Am2901A是串接起来的,即低位一片的Q3 端与相邻高位一片的Q0端相接,对应的RAM3 端与RAM0端相连接,低位片的进位输出CN+4与 高位邻片的进位输入Cn相连接,以保证四片 片间的左右移位功能和
12、进位关系的正确执行 。最低位一片的移位输入输出信号Q0端和 RAM0端、以及进位输入信号Cn在图中空着, 要用另外的电路控制其输入输出数据。例 如当实现左右循环移位功能时,就要连接相 应的信号。 入出信号及引脚Y3Y0D3D0RAM3 Q3RAM0 Q0CPOECnCy F=0 Over F3Am2901A3A0 B3B0I8I6 I5I3I2I0Am2901Y118Y30D118D74D30CinRAM0Q0Y74高位Am2901Y1512D1512OVERF=0F15CyCPRAM15Q15A口 B口 I86 I53 I204 片Am2901之间的连接Am2901Am2901VccR 通用
13、寄存器组RAM的两个地址控制端“A”(读)和 “B”(读写)、Q寄存器移位用的CP时钟脉冲信 号,分别送入每片Am2901A的“A”、“B”和CP 输入端;有了上述说明,就比较容易看懂下述几 条指令在运算器部件中的控制方法: (1)把主存数据寄存器中读得的数据写入通用寄存 器组中的某个寄存器中; (2)把通用寄存器组中某个寄存器的内容写进主存 数据寄存器中; (3)通用寄存器组中的两个寄存器的内容相加。结 果写回其中的一个寄存器中。 按Am2901A的功能规定,可以给出如表44所示的 一张信号分配表。 对第一条指令,把主存数据寄存器的输出接到Am2901A的D输 入端,用111作为ALU的输入
14、数据选择(D,0组合),用000作 为ALU的功能选择(加,即实现D十0),用011作为ALU的数据 传送控制,即把ALU的输出送到通用寄存器组的输入,再写 入由“B”地址选择的寄存器中。在此操作过程中,最低位 进位输入值给0。 对第二条指令,用011作为ALU的输入选择(0,B组合),用 000作为ALU的功能选择(加,即实现0+B号寄存器的内容), 用001作为Am2901A的输出选择并同时给出OE信号,Y输出即 为B寄存器的内容,可以把Y接到主存数据寄存器的输入端, 从而完成向该寄存器的写入操作。 对第三条指令,用001作为ALU的输入数据选择(A,B组合) ,000作为ALU的功能选择
15、,用010作为ALU的数据传送选择, 从而完成A寄存器的内容加B寄存器的内容,并把结果写入B 寄存器中的操作过程。此时要使OE取高电平,使输出Y处于 高阻状态,而不是输出A寄存器的内容。 这三条指令的运行结果,应按某种规定设置运算器的状态 标志触发器C、y、Z、N,这些触发器要在Am2901A芯片之外 实现,将Am2901A的最高位芯片的输出Cn+4、OVR、F0000 和F3的值写入这四个标志触发器中。图上省略了这一部分 逻辑电路。 如果用该16位的运算器完成乘除法运算,Q寄存器应被用作 乘商寄存器,此时,要特别注意通用寄存器和Q寄存器的共 同移位问题。对乘法,对每次求得的部分积要用100码接收 ,即在把F2B的同时,还完成Q2Q的操作,101码只 用于通用寄存器的右移位控制,不影响Q寄存器的内容,对 除法,要用110码接收除后的余数,即把2FB的同时,还 实现2QQ的移位操作,而111码只用于通用寄存器的左移 位控制,不影响Q寄存器中的内容。 实现原码乘除的符号运算,即求二个数符号的半加和,以 及处理上商,判求部分积是用被乘数还是0,与前一次部分 积相加等逻辑电路,也应在Am2901A之外另行给出,图中省 略了这部分电路。