版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章微程序控制器9.1微程序控制的基本原理9.2微程序控制器的组成与工作过程9.3微程序设计技术9.4模型机的微程序控制器组合逻辑控制器存在的两个比较突出的缺点:设计复杂、繁琐,缺乏规律性,设计效率低。不易修改和扩充,缺乏灵活性。微程序的概念和原理:英国剑桥大学的M.V.Wilkes教授于1951年提出的主要缺点:速度比较慢基本思想用二进制编码字(称为微指令字)来代替组合逻辑控制器中的微操作控制信号的产生。例:用“1”表示进行相应的微操作,“0”表示不进行操作,则图中的微指令字所对应的微操作集合为:
{PC+4,读指令}(假设其他各位都是0)9.1微程序控制的基本原理9.1微程序控制的基本原理把在一条指令的执行过程中各节拍要进行的微操作集合都用一个微指令字来表示,然后把他们按节拍的先后顺序存放到一个特殊的存储器中(称为控制存储器CM)。执行该指令时,按顺序依次读出微指令字。实质:
用程序设计的思想方法来组织操作控制逻辑,用规整的存储逻辑来代替繁杂的组合逻辑。9.1微程序控制的基本原理几个基本概念微操作和微操作控制信号微操作控制信号(微命令):控制部件向执行部件发出的各种控制命令。例如:打开或关闭某个控制门,多路器选择哪个输入等。微操作:指执行部件接受控制信号后所进行的最基本的、不可再细分的操作。分为两种:相容的微操作:可以同时进行的微操作。互斥的微操作:不能同时进行的微操作。9.1微程序控制的基本原理微指令和微程序微指令:用来产生微控制信号的二进制编码字。用于控制完成一组微操作。微程序:一序列微指令构成的有序集合。每一条机器指令都对应于一段微程序,通过解释执行这段微程序,完成指令所规定的操作。微指令周期微指令周期:微程序控制器的工作周期。从控制存储器读取一条微指令到执行完相应的微操作所需时间的最大值。Wilkes微程序控制器的原理图控制存储器CM简称控存,用于存放实现整个指令系统的所有微程序。每个单元存放一条微指令字。微指令寄存器μIR用来存放从控存读出的当前微指令。微指令中包含两个字段操作控制字段:直接与控制信号线连接,控制相关的部件完成微指令所规定的微操作。9.2微程序控制器的组成与工作过程9.2微程序控制器的组成与工作过程图9.2Wilkes微程序控制器原理图9.2微程序控制器的组成与工作过程地址控制字段:用于控制下一条微指令地址的产生。微地址形成电路该电路根据控制地址字段中的信息产生后续微地址。微地址寄存器μMAR
接受微地址形成电路送来的地址,为读取下一条微指令做好准备。地址译码器将μMAR中的微地址进行译码,找到被访问的控存单元,将其中的微指令读出并存放于μIR中。9.2微程序控制器的组成与工作过程微程序控制器的工作过程(假设其微程序已经在控存中准备好)启动取指微程序,把要执行的机器指令(其地址由PC给出)从主存取到指令寄存器IR中,并完成对PC的增量操作(参照图9.2中的①)。根据IR中指令的操作码,微地址形成电路产生该指令的微程序的入口地址,并送入μMAR。μMAR中的微地址经过译码,从控存中读取相应的微指令,送入μIR
。μIR中微指令的操作控制字段直接(或经过译码)产生一组微命令,送往相应的功能部件,控制它们完成所规定的微操作。9.2微程序控制器的组成与工作过程微地址形成电路根据μIR中微指令的地址控制字段和机器的状态信息(如程序状态字PSW),产生下一条微指令的地址并送往μMAR。重复上述步骤第三到第五步,直到该机器指令的微程序全部执行完毕。目标减少微指令的宽度,减少微程序的长度,提高执行速度,保持微程序设计的灵活性。一条微指令由两部分构成微操作控制字段地址控制字段对微操作控制字段进行编码的方法有4种直接控制编码、最短字长编码分段直接编码、分段间接编码9.3微程序设计技术9.3.1微指令的编码方法9.3微程序设计技术直接控制编码法(不译码法)微操作控制字段的每一位直接对应一个微操作。当某位为1时,就表示执行相应的微操作;为0时就不执行该微操作。优点:结构简单,并行性最好,操作速度快。缺点:微指令字太长。
9.3微程序设计技术最短字长编码法将所有的微命令进行统一的二进制编码,每条指令只定义一个微操作。微操作控制字段的长度L与微命令的总数N的关系
L≥log2N优缺点微指令的字长最短,但要经过译码后才能得到所需要的微命令,执行速度会受到影响。在一条微指令中只能产生一个微命令,无法利用硬件所具有的并行性。9.3微程序设计技术需对整个微操作控制字段进行译码,产生相应的一组微命令。
9.3微程序设计技术字段直接编码法把微操作控制字段进一步划分为若干个字段,每个字段单独编码,每个码点表示一个微命令。上面两种方法的折中方案:字段之间采用直接控制,字段内部采用最短字长编码。进行字段划分时,需要注意以下原则:可以按功能和部件划分,对于机器中的每一种功能类型或每一个部件,分配一个字段;把互斥的微操作分在同一字段,把相容的微操作分到不同的字段;字段的划分应与数据通路相适应;一般每个字段应留出一个码点,用于表示不发任何微命令。9.3微程序设计技术既能缩短微指令字长,又能实现较高的并行性,执行速度比较快。
字段间接编码字段的编码的含义(即表示什么微命令)要由另外一个字段的编码来解释确定。一个解释字段要同时对多个字段进行控制(解释),才能有效地缩短字长。解释字段应有某些分类的特征
9.3微程序设计技术常数源字段的设置作用:提供常数参与其他字段的间接编码9.3微程序设计技术
分为两大类:水平型微指令和垂直型微指令。水平型微指令一次能定义并执行多个微操作的微指令。具有以下特点:微指令字较长,一般为几十位到上百位。例如:VAX-11/780机的微指令字长为96位。
微指令中描述并行微操作的能力强,在一个微周期中,能并行执行多个微操作。微指令译码简单,一般采用直接控制编码法和分段直接编码法。9.3.2微指令格式9.3微程序设计技术优缺点并行操作能力强、执行速度快、代码长度短。微指令字比较长,明显增加了控存的宽度。编制微程序比较复杂,难度较大,也不易实现设计的自动化。垂直型微指令一次只能定义一两个微操作(一般是数据传送),而且微指令字长比较短。例如,一条垂直型运算操作的微指令的格式为:9.3微程序设计技术其中:μOP:微操作码把两个源寄存器中的内容进行μOP所规定的操作,结果存入目的寄存器字段所指定的寄存器中。特点微指令字短,一般为一、二十来位;微指令的并行微操作能力差,一条微指令只能控制数据通路的一两种信息传送;垂直型微指令是通过一个称为微操作码的字段来定义微指令的基本功能和信息传送路径。执行时,需进行完全译码,译码比较复杂。微指令的各二进制位与数据通路的各个控制点之间完全不存在直接对应关系。9.3微程序设计技术优点直观、规整,易于编制微程序和实现设计自动化。微指令字比较短,控存的横向比较窄。可以直接应用现有程序设计语言的结果。缺点微程序比较长,而且垂直型微指令产生微命令要经过译码,程序执行速度慢。描述并行微操作的能力很差,不适合用于数据通路有较多并行性的机器。9.3微程序设计技术微程序的顺序控制问题(微程序地址控制问题)初始微地址:机器指令所对应的微程序的入口地址形成下一条微指令的地址(称为后继微地址)微程序入口地址的形成公用的“取指令”微程序一般存放在控存中第0号单元或其它指定的控存单元开始的一片控存区域中。(这个地址是固定不变的)根据IR中的操作码,找到该指令所对用的微程序的入口地址。9.3.3微程序的顺序控制9.3微程序设计技术实际上是一个从操作码到入口地址的映象问题。两种实现方法:直接对应法
所有指令的操作码的位数和位置都相同时直接把操作码与微地址码的部分位对应。例如,可指定微地址:Const|Op
(Op:操作码,Const:常数)
操作码一般是连续编码的,所以直接对应过去的地址是连续的。改进:在上述拼接的微地址后面再拼接若干位0(设为n位),使得每个操作码在所对用的区域中有一片单元(2n个)可用。9.3微程序设计技术如果操作码的位数和位置不固定,但在每一类指令中,操作码的位数和位置都是相同的,则可以采用两级分转。查表法在操作码的位数或位置不固定的情况下,需要用专门的硬件实现操作码到入口地址的映象。用PLA或ROM实现一个表格,该表格给出了各操作码所对应的微程序的入口地址。使用该表时,只要用操作码作为输入,就能在其输出端得到该指令的微程序入口地址。9.3微程序设计技术后继微地址的形成两种方式:增量方式,断定方式。增量方式设置一个微程序计数器μPC。顺序执行时,给μPC增加一个增量(通常为1)给出下一条微指令的地址。遇到转移时,由微指令给出转移目标的微地址。采用这种方式的微指令格式:9.3微程序设计技术微地址字段SCF分成两个字段转移控制字段BCF
用于规定是顺序执行还是转移。如果是转移,就由BCF指出转移地址的来源。转移地址字段BAF转移地址的来源有3种由BAF给出的地址;机器指令所对应的微程序的入口地址;微子程序入口地址和返回地址(存放在返回地址寄存器中)。9.3微程序设计技术举例:假设BCF为3位,用于控制实现顺序执行、初始转移、无条件转移、条件转移、测试循环、转微子程序、微子程序返回等,如表所示。
RR:微子程序返回地址寄存器。当执行转微子程序指令时,把返回地址(μPC+1)送入返回地址寄存器RR中,并将转移地址送入μPC中。当执行返回微指令时,将RR中的返回地址送入μPC,返回微主程序。
9.3微程序设计技术BCF转移控制方式测试条件后继微地址及有关操作000顺序执行μPC+1→μPC001初始转移由操作码形成010条件转移不成立μPC+1→μPC成立BAF→μPC011无条件转移BAF→μPC100循环测试不成立μPC+1→μPC成立BAF→μPC101转微子程序μPC+1→RR,BAF→μPC110微子程序返回RR→μPC111备用9.3微程序设计技术微地址控制方式的原理框图9.3微程序设计技术优点
SCF字段比较短,后继微地址生成逻辑比较简单,编制微程序也比较容易。缺点:不能直接实现多路转移。断定方式按以下方式确定后继微地址由微程序设计者直接指定;由微程序设计者指定的测试判别逻辑字段控制产生。后继微地址由两部分组成非测试地址微程序设计者直接指定的,是不变的,构成微地址的高位部分。9.3微程序设计技术测试地址在微程序的执行过程中,通过测试一些状态位而动态决定的,它构成微地址的低位部分。微地址格式
9.3微程序设计技术微指令格式
测试地址的位数决定了并行分支的路数,而且也决定了测试控制字段的个数。当测试地址位数为m时,分支的路数为2m,而测试字段的个数为m。至于测试字段的位数n,则是取决于测试条件的个数N,一般地,有n=[log2N]+1。HF为非测试地址,直接送CMAR。TC1、TC2是测试地址TF1和TF2的测试控制字段。实现4路并行转移功能。
例如:微地址8位,微程序能实现4路并行转移。可控制微程序的测试条件共23个,分成2组,第一组8个,第二组15个。9.3微程序设计技术优点能够实现快速多路转移,提高微程序的执行速度。而且微程序在控存中的存放位置也很灵活、方便。缺点后继微地址的生成方法比较复杂,微程序的执行顺序不直观。9.3微程序设计技术执行一条微指令的过程分两步进行按给定的微地址从控存取出微指令,并打入μIR;执行微指令所规定的微操作。根据取后继微指令和执行现行微指令之间的时间关系的不同,微指令的执行方式可分为两种串行执行并行执行9.3.4微指令的执行方式9.3微程序设计技术串行执行方式取微指令和执行微指令串行进行。在前一条的微指令执行完之后,才能取下一条微指令。时间关系
设备效率低,执行速度慢。控制简单,易于实现。
9.3微程序设计技术并行执行方式当前微指令的执行和下一条微指令的取出重叠进行。时间关系优点:提高了执行速度和设备利用率。遇到需要根据当前微指令的执行结果进行转移时,存在一些问题。有两种处理方法供选择。一种是推迟下一条微指令的取出,使之取出的时间跟串行执行方式时相同。另一种方法是猜测法,即猜测性地选择两条分支中的一个作为后继微指令。9.3微程序设计技术并行执行方式
假设执行当前微指令和取下一条微指令所需要的时间相同。采用字段直接编码,给每一个部件分配一个字段。各字段的功能如表所示9.4模型机的微程序控制器9.4.1模型机的微指令格式图9.12模型机的微指令格式
9.4模型机的微程序控制器字段名字段的功能IRWrite控制IR的写入。ALUCtrl指定ALU所进行的操作。SRC1指定ALU的第一个操作数的来源。SRC2指定ALU的第二个操作数的来源。RegCtrl指定对寄存器组进行的操作(读或写);对于写操作,指定写入值的来源。MemCtrl指定对存储器进行的操作(读或写);对于读操作,指定目标寄存器;对于写操作,指定写入值的来源。PCCtrl控制对PC的写操作,指定写入内容的来源。Sequencing指定怎样选取下一条将执行的微指令。表9.5微指令各个字段所允许的取值、各种取值情况下所形成的控制信号以及功能
字段名字段值控制信号(激活)功能IRWrite0无操作1对IR进行写入操作ALUCtrlAddALUOp=00使ALU进行加操作SubtALUOp=11使ALU进行减操作functcodeALUOp=10用机器指令的funct字段来决定ALU的操作SRC1PC+4ALUSrcA=0选PC+4为ALU的第一个输入AALUSrcA=1选寄存器A为ALU的第一个输入SRC2BALUSrcB=00选寄存器B为ALU的第二个输入ExtendALUSrcB=01选“Imm”部件的输出作为ALU的第二个输入ExtshftALUSrcB=10选“左移两位”部件的输出作为ALU的第二个输入9.4模型机的微程序控制器字段名字段值控制信号(激活)功能RegCtrlRead(00)使用IR的rs和rt字段作为寄存器地址来读两个寄存器,将数据写入寄存器A和BWriteALU(01)RegWrite=1RegDst=1DMtoReg=1以IR的rd字段作为寄存器地址,以ALUOut的内容作为数据,写入寄存器组WriteLMD(10)RegWrite=1RegDst=0DMtoReg=0以IR的rt字段作为寄存器地址,以LMD的内容作为数据,写入寄存器组DMCtrlReadALU(0)DMRead=1用ALUo作为地址来读存储器,结果写入LMDWriteALU(1)DMWrite=1用ALUo作为地址,B的内容作为数据来写存储器PCCtrlPC+4(0)PCWrite=1Branch=0将PC+4写入PCBranchALU(1)PCWrite=1Branch=1如果cond为1,将ALUo的内容写入PC9.4模型机的微程序控制器在模型机中,确定下一条微指令地址的来源有3种方法(由Sequencing字段指出)当前微指令地址加1(即顺序执行)转移到“取指令”的公共入口根据指令操作码散转到该指令(或该类指令)的入口用操作码作为索引,去查一个用硬件实现的表格,得到相应的转移地址(微程序地址)。采用两级散转,即先散转到相关的一类指令的公共操作微程序入口。等公共操作完成后,再进行第二次的散转,转移到具体指令的微程序入口。(减少微程序所占的空间)ROM1散转表OpOp名称符号地址值000000R型RFORMAT1000100beqBEQ1100011loadLDST1101011storeLDST1OpOp名称符号地址值100011loadLOAD2101011storeSTORE2ROM2散转表9.4模型机的微程序控制器模型机的微程序控制器9.4模型机的微程序控制器散转ROM1和散转ROM2分别用于第一级和第二级散转。Fetch表示“取指令”公共微程序的入口AddrCtrl:微指令地址多路器MUX的控制信号当AddrCtrl的值分别为00,01,10,11时,MUX分别选择以下4个来源:“取指令”公共微程序的入口Fetch从散转表ROM1查到的地址从散转表ROM2查到的地址当前微指令地址加19.4模型机的微程序控制器字段名字段值控制信号(激活)功能SequencingFetchAddrCtrl=00跳转到“取指令”的公共入口,开始取和执行一条新的机器指令Dispatch1AddrCtrl=01用ROM1进行散转Dispatch2AddrCtrl=10用ROM2进行散转SeqAddrCtrl=11顺序选择下一个微指令地址9.4模型机的微程序控制器在下面的微程序中,有些字段为空,它们表示以下情况:用于写控制信号或者功能部件控制码,表示不进行操作;用于多路器的控制信号,表示不关心该多路器的输出。公共操作的微程序模型机中的公共操作取指令、PC加4和根据机器指令的操作码进行第一级散转。9.4.2构造微程序9.4模型机的微程序控制器该微程序段由以下两条微指令构成(其入口地址为Fetch)第一条微指令:完成把所取指令写入IR的操作第2条微指令:根据机器指令的操作码进行第一级散转LableALUCtrlSRC1SRC2RegCtrlDMCtrlPCCtrlIRWriteSequencingFetch1Seq(11)Dispatch1(01)9.4模型机的微程序控制器R型指令的微程序入口地址为:RFORMAT1(标号)两条微指令构成第一条完成ALU操作第2条将计算结果写入寄存器组。执行完后,再跳转到整个微程序的第一条的地址Fetch。LableALUCtrlSRC1SRC2RegCtrlDMCtrlPCCtrlIRWriteSequencingRFORMAT1functcode(10)A(1)B(00)Seq(11)WriteALU(01)PC+4(0)Fetch(00)9.4模型机的微程序控制器BEQ指令的微程序入口地址:BEQ1(标号)BranchALU表示:如果cond中的值为1,则将ALUo的内容写入PC。
LableALUCtrlSRC1SRC2RegCtrlDMCtrlPCCtrlIRWriteSequencingBEQ1Add(00)PC+4(0)Extshft(10)Seq(11)BranchALU(1)Fetch(00)9.4模型机的微程序控制器load指令和store指令的微程序load和store指令的入口相同,都是LDST1。在完成访存地址计算后,进行第2级散转,跳转到LOAD2(load指令)或STORE2(store指令)。LableALUCtrlSRC1SRC2RegCtrlDMCtrlPCCtrlIRWriteSequencingLDST1Add(00)A(1)Extend(10)Dispatch2(10)LOAD2ReadALU(0)PC+4(0)Seq(11)WriteLMD(10)Fetch(00)STORE2WriteALU(01)PC+4(0)Fetch(00)模型机的微程序LableALUCtrlSRC1SRC2RegCtrlDMCtrlPCCtrlIRWriteSequencingFetch1SeqDispatch1RFORMAT1functcodeABSeqWriteALUPC+4FetchBEQ1AddPC+4ExtshfSeqBranchALUFetchLDST1AddAExtendDispatch2LOAD2ReadALUPC+4SeqWriteLMDFetchSTORE2WriteALUPC+4Fetch第10章运算方法与运算器10.1 移位运算10.2 定点数的加减法运算10.3定点数的乘除法运算10.4 定点运算器的构成10.5 浮点运算移位操作时,要指明:移位的方向:左移或右移一次移位的位数移位的性质根据移位性质划分的3种移位运算:逻辑移位算术移位循环移位10.1移位运算逻辑移位被移位的数据是逻辑数,既无符号,也没有数值的大小。逻辑左移shl:将数据的各位依次向左移一位,最高位移出丢弃,最低位移入“0”。逻辑右移shr:将数据的各位依次向右移一位,最低位移出丢弃,最高位移入“0”。例如,若X=10110101,则shlX和shrX的操作如图所示。移位运算循环移位循环移位中将被移位数据的左右两端连接起来,形成闭合的移位环路。例如,若X=10110010,则cilX和cirX的操作如图所示。算术移位对带符号的数进行移位,移位会引起数值的变化。算术右移一位相当于将该数除以2(乘以1/2)算术左移一位相当于将该数乘以2原码算术移位符号位不参加移位,只是将相应的数值位依次左移(或右移),移出去的最高位(或最低位)自动丢弃,最低位(或最高位)移入“0”。例如,若[X]原=10110101,则原码ashlX和ashrX的操作如下。移位运算补码算术移位对补码表示的数进行算术移位时,符号位一起参加移位,其移位规则为:算术左移:连同符号位一起各位依次向左移一位,最高位(符号位)移出丢弃,最低位移入“0”。算术右移:连同符号位一起各位依次向右移一位,符号位保持不变,最低位移出丢弃。例如,若[X]补=11010011,则补码ashlX和ashrX的操作如下。移位运算
对补码数进行算术左移时,可能发生溢出,即移位后的数超出了机器表示数的范围。
设[X]补与[Y]补均为n位补码数,其中包含一位符号位。则
[X+Y]补=[X]补+[Y]补
[X-Y]补=[X]补+[-Y]补(modM)如果X、Y是定点小数,则M=2;如果X、Y是定点整数,则M=2n。10.2.1补码加减法运算规则只讨论补码的加减法运算。10.2定点数的加减法运算定点数的加减法运算补码加减运算的基本规则:参加运算的两个操作数和运算结果均用补码表示;符号位与数值位一起参加运算;补码加法时,将两个补码数直接相加,即得两数之和的补码;补码减法运算转化为加法运算进行,将[X]补与[-Y]补相加,即得两数之差的补码;如果运算结果超过了模(即符号位运算产生了进位),则将该进位自动丢弃。定点数的加减法运算例1[X]补=01001,[Y]补=00101,求[X+Y]补,[X-Y]补。解:
[X+Y]补=[X]补+[Y]补=01001+00101=01110[X-Y]补=[X]补+[-Y]补=01001+11011=00100例2[X]补=01001,[Y]补=11011,求[X+Y]补,[X-Y]补。解:
[X+Y]补=[X]补+[Y]补=01001+11011=00100[X-Y]补=[X]补+[-Y]补=01001+00101=01110例3[X]补=11010,[Y]补=11101,求[X+Y]补,[X-Y]补。解:
[X+Y]补=[X]补+[Y]补=11010+11101=1011[X-Y]补=[X]补+[-Y]补=11010+00011=11101定点数的加减法运算
设[X]补和[Y]补是两个n位的补码操作数,保存在两个n位的寄存器中。
[F]补=[X±Y]补(保存在一个n位寄存器中)10.2.2补码加减法运算的硬件实现定点数的加减法运算as:加减控制信号(1)as为0[F]补=[X]补+(
[X]补+[Y]补=[X+Y]补该电路做加法运算。(2)as为1
[F]补=[X]补+(=[X]补+[-Y]补=[X-Y]补该电路做减法运算。定点数的加减法运算看一个例子:例4[X]补=10101,[Y]补=10011,求[X+Y]补=?解:
10.2.3溢出的判断两个负数相加,得到的结果却为正数,出错了。溢出:运算结果超过了定点数的表示范围。如果两个正数相加的结果大于机器所能表示的最大正数,则称为正溢出。如果两个负数相加的结果小于机器所能表示的最小负数,则称为负溢出。3种常用的溢出判断方法采用两个操作数和结果的符号来判断。当两个同号数的补码相加,若得到的结果的符号与两个操作数的符号不同,则发生了溢出。溢出的判断条件定点数的加减法运算当overflow=1时,则发生了溢出。其中:Xf、Yf:两个操作数的符号位
Ff:运算结果的符号位。采用最高数值位产生的进位与符号位产生的进位是否相同来判断。当不相同时,则发生了溢出。例5①[X]补=01010,[Y]补=01001,求[X+Y]补=?
②[X]补=10000,[Y]补=11111,求[X+Y]补=?
定点数的加减法运算溢出的判断条件其中:Cf、Cn-1分别是最高数值位的进位和符号位产生的进位。采用变形补码来判断采用两位符号位表示的补码叫变形补码。例6已知①X=+1110,②X=-0110,求X的变形补码。解:①[X]补=01110[X]变形补=001110②[X]补=11010[X]变形补=111010采用变形补码运算时,两个符号位与数值部分一起参加运算。如果运算结果的两个符号位相异(为10或01),则产生了溢出。定点数的加减法运算若结果符号位为01,则表示结果为正溢出;若结果符号位为10,则表示结果为负溢出。溢出的判断条件其中:Ff1、Ff2为运算结果的两个符号位。重新计算一下例5中的两个加法运算:定点数的加减法运算计算机中一般是用加法运算与移位运算来实现乘除法运算。可以采用以下3种方式:采用计算机中的加减运算指令、移位指令以及控制指令组成循环程序,通过反复的加减操作,得到运算结果。(速度太慢)采用加法器、移位寄存器、计数器等逻辑器件组成乘除运算部件。采用专用的运算部件,提高乘除法运算的速度。本节主要介绍后面两种硬件实现的方法。10.3定点数的乘除法运算定点数的乘除法运算
设:被乘数XfX=XfXn-1Xn-2…X1X0
乘数YfY=YfYn-1Yn-2…Y1Y0
乘积UfUV=X×YX、Y:n位;UV:2n位,其中U为乘积的高n位,V为乘积的低n位;Xf、Yf、Uf分别为被乘数、乘数、乘积的符号位。乘法运算规则:符号位单独处理:同号相乘,乘积为正;异号相乘,乘积为负。10.3.1原码乘法运算定点数的乘除法运算结果的数值部分是两个数的绝对值相乘,即两个正数相乘。看一下人工乘法运算的过程两个正数X=1011Y=1101定点数的乘除法运算为便于硬件实现,对上述计算过程作两个修改:每求出一个位积后就与部分积相加求和,而不是在乘法的最后一步将多个位积一次求和。用右移部分积来代替左移位积。每当产生一个新的位积并与部分积相加后,得到的和就右移一位。原码一位乘法的运算规则(1)符号位单独处理。用被乘数和乘数的数值位部分进行运算。设部分积的初值为0。(2)若乘数Y的最低位Y0=0,则将上一次的部分积右移一位,得新的部分积;若乘数Y的最低位Y0=1,则将上一次的部分积与被乘数X相加,然后右移一位,得新的部分积。定点数的乘除法运算乘数Y循环右移一位。(3)将上述过程(2)重复n遍,n为被乘数和乘数数值位的位数。最后得到的部分积就是乘积的数值部分。原码一位乘法的运算流程其中:C为加法的进位
U=0;C=0;
FORi=1TOnDO{IFY0=1THENCU=U+X;逻辑右移
CUV;循环右移Y}例7已知[XfX]原=01101,[YfY]原=11011,n=4,求[UfUV]原=[XfX]原×[YfY]原=?解:符号位Uf==1得:[UfUV]原=[XfX]原×[YfY]原=110001111定点数的乘除法运算定点数的乘除法运算步数n操作进位C部分积UV乘数Y初值00000××××10114Y0=1,+X01101××××C和UV一起右移一位Y循环右移一位001101×××11013Y0=1,+X10011C和UV一起右移一位Y循环右移一位0100111××11102Y0=0,不做加法C和UV一起右移一位Y循环右移一位00100111×01111Y0=1,+X10001C和UV一起右移一位Y循环右移一位0100011111011定点数的乘除法运算实现原码一位乘法的逻辑电路
定点数的乘除法运算其中:被乘数X保存在n位寄存器中;乘数Y、部分积高位部分U、部分积低位部分V保存在n位移位寄存器中,运算结束后,UV中分别存放乘积的高n位和低n位。计数器为减1计数器,初始值为n。用来控制乘法运算的步数。控制电路用来产生运算过程中所需的控制信号。它根据计数器的值、Y0的值以及CP脉冲,产生寄存器C、U的“载入”信号,U、V、Y的“右移”一位信号,计数器的“减1”信号。定点数的乘除法运算Booth乘法。它是由英国的布斯(A.D.Booth)夫妇首先提出的。若参加运算的为两个n位的定点补码数,则乘积为2n位的补码数。其中各自包含一位符号位。设被乘数X=Xn-1Xn-2…X1X0
乘数Y=Yn-1Yn-2…Y1Y0
则乘积UV=X×Y
10.3.2补码一位乘法定点数的乘除法运算Booth乘法的运算规则(1)参加运算的数都是补码表示的,符号位一同参加运算,得到的结果也是补码数。(2)乘数Y的末尾增设一位附加位Y-1,初始值为0。部分积的初值为0。(3)根据乘数Y的最低两位Y0Y-1的值,进行相应的操作。具体操作如表所示。其中“-X”是通过“+[-X]补”来实现。(4)将上述过程(3)重复n遍,最后得到的部分积就是运算结果。定点数的乘除法运算
Booth乘法的操作Y0Y-1操作00上次部分积右移一位(补码算术移位);乘数Y循环右移一位,Y0→Y-101上次部分积+被乘数X,右移一位;乘数Y循环右移一位,Y0→Y-110上次部分积-被乘数X,右移一位;乘数Y循环右移一位,Y0→Y-111上次部分积右移一位;乘数Y循环右移一位,Y0→Y-1Booth乘法的运算流程其中:U=U-X通过U=U+[-X]补来实现。U=0;Y-1=0;FORi=1TOnDO{IFY0Y-1=10THENU=U–X
(=U+X+1);
IFY0Y-1=01THENU=U+X;算术右移UV;循环右移Y并将Y0复制给Y-1}定点数的乘除法运算例8已知[X]补=1101,[Y]补=1011,n=4,求[UV]补=[X]补×[Y]补=?解:[-X]补=0011得:[UV]补=[X]补×[Y]补=00001111步数i操作UVYY-1初始化0000××××101104Y0Y-1=10,-X0011UV算术右移一位Y循环右移一位,1→Y-100011×××110113Y0Y-1=11UV算术右移一位Y循环右移一位,1→Y-1000011××111012Y0Y-1=01,+X1101UV算术右移一位Y循环右移一位,0→Y-11110111×011101Y0Y-1=10,-X0001UV算术右移一位Y循环右移一位,1→Y-10000111110111Booth乘法的逻辑框图
无符号阵列乘法器设有两个无符号的4位二进制定点数:
X=X3X2X1X0Y=Y3Y2Y1Y0人工计算U=X×Y的过程10.3.3阵列乘法器定点数的乘除法运算一个4×4位的阵列乘法器
阵列乘法器所用的加法器数量很多,但内部规则性强,运算速度快。定点数的乘除法运算带符号阵列乘法器对补码数进行运算的阵列乘法器。可以用两种方法来实现。带求补级的阵列乘法器。首先用两个算前求补器将两个补码表示的加数和被加数转化为正整数,然后采用上面介绍的无符号阵列乘法器计算出结果;最后再用一个算后求补器,根据结果的符号位,将运算结果转化为补码数。直接用补码进行运算,构成直接补码阵列乘法器。(但这种方法实现比较复杂,这里就不讨论了)定点数的乘除法运算定点数的乘除法运算人工除法计算过程:设被除数UV=10010011除数X=1101运算规则(1)商的符号位单独处理。(2)把部分余数(初始值为被除数的高n位,n为除数的位数)与除数进行比较。若部分余数大于等于除数,则相应位上商1,将部分余数减去除数得新的部分余数;若部分余数小于除数,则相应位上商0,不做减法,部分余数不变。10.3.4原码一位除法定点数的乘除法运算定点数的乘除法运算(3)从被除数中取下一位,接在部分余数的后面,形成新的部分余数。重复(2)和(3),直到得到所需的结果。作两点修改部分余数减去除数,根据运算结果是正数还是负数来判定它们的大小。当部分余数小于除数时,要将部分余数加上除数,恢复原值。采用这种方法的除法算法叫做恢复余数法。用左移部分余数来代替除数的向右错开,而除数的位置则可以保持不动。定点数的乘除法运算原码恢复余数法设被除数:UfUV
除数:XfX得到:余数RfR
商YfYU、V分别是被除数数值位的高n位和低n位X、Y、R分别是除数、商、余数的n位数值位Uf、Xf、Rf、Yf为各自的符号位
UV=X×Y+R以定点整数为例,讨论原码恢复余数除法的算法。定点数的乘除法运算原码恢复余数除法的运算规则
(1)符号位单独处理。用被除数和除数的数值位部分进行运算。
Rf=Uf
(2)首先是判断溢出。如果被除数的高n位数值(作为余数R的初始值)大于除数X,则除法发生溢出。做减法运算:R=R-X若运算结果为正,则发生溢出,算法终止;否则做R=R+X,继续进行下面的步骤。定点数的乘除法运算
(3)余数左移一位,同时将被除数的下一位移入余数的低位。然后用余数减去除数。(4)若所得余数为正,表示够减,相应位上商为1;若所得余数为负,表示不够减,相应位上商为0,余数加上除数(即恢复余数)。(5)重复(3)到(4),直到求得商的各位为止。原码恢复余数除法的流程将减法转化为补码加法来实现
[R]补=[R-X]补=[R]补+[-X]补运算时,余数和除数都需增设一位符号位。为了不使余数左移时破坏符号位的值,余数需再增设一位符号位,采用两位符号位。定点数的乘除法运算例9已知被除数UfUV=010010011,除数XfX=11101,n=4,求商YfY和余数RfR。解:Yf=1,Rf=0,RV=0010010011,X=001101,
[-X]补=110011
所以,商YfY=11011,余数RfR=00100。定点数的乘除法运算步数i操作余数RV商Y初始化00100100110000判溢出:R=R-X111100余数为负,无溢出R=R+X0010014RV左移一位0100100110R=R-X000101余数为正,Y左移一位,Y0←100013RV左移一位0010101100R=R-X111101余数为负,Y左移一位,Y0←0恢复余数R=R+X0010100010定点数的乘除法运算步数i操作余数RV商Y2RV左移一位0101011000R=R-X001000余数为正,Y左移一位,Y0←101011RV左移一位0100010000R=R-X000100余数为正,Y左移一位,Y0←110110结束定点数的乘除法运算
例10已知被除数UfUV=011100001,除数XfX=01101,n=4,求商YfY和余数RfR。解:Yf=0,Rf
=0,RV=0011100001,X=001101[-X]补=110011步数i操作余数RV商Y初始化00111000010000判溢出:R=R-X000010余数为正,溢出算法终止实现原码恢复余数法的逻辑框图
其中:被除数R和V、商Y分别保存在3个移位寄存器中,运算结束后R为余数;除数X保存在n位寄存器中;Rn+1、Rn为增设的附加位;Uf、Xf、Yf、Rf分别是被除数、除数、商、余数的符号位。计数器为减1计数器,初始值为n,控制乘法运算的步数。控制电路根据计数器的值、Rn+1、Rn以及CP脉冲产生运算过程中所需的控制信号,包括寄存器R的“载入”信号,R、V、Y的“左移”一位信号,计数器的“减1”信号。“加减”控制信号控制并行加法器实现加法还是减法运算,当它为1时,做R+X;当它为0时,做R-X。“上商”控制信号控制商“0”还是商“1”。当余数为正时,该信号控制Y0置1。定点数的乘除法运算原码加减交替除法修改恢复余数除法在恢复余数除法中,当第i步的余数Ri<0时,执行的操作是:加除数(Ri+X),然后在下一步(第i-1步)将之左移一位,减除数得到新余数Ri-1。
Ri-1
=2(Ri+X)-X=2Ri+X修改为:当第i步的余数Ri<0时,执行以下操作:
Ri左移一位,然后加被除数X得到新余数Ri-1。原码加减交替除法的运算规则(1)符号位单独处理。
Rf=Uf(2)首先是判断溢出。如果被除数的高n位数值(作为余数R的初始值)大于除数X,则除法发生溢出。算法终止;否则继续进行下面的步骤。
(通过减法运算来实现,即做R=R-X)(3)若余数为正,表示够减,相应位上商为1;余数左移一位后减去除数;若余数为负,表示不够减,相应位上商为0;余数左移一位后加上除数。(4)重复(3),直到求得商的各位为止。如果最后一次所得余数为负,则需再做一次加除数的操作以恢复余数。定点数的乘除法运算原码加减交替除法的流程定点数的乘除法运算例11已知被除数UfUV=010010011,除数XfX=11101,n=4,求余数RfR和商YfY。解:Yf
=1,Rf
=0,RV=0010010011,X=001101[-X]补=110011
由此可得:商YfY=11011,余数RfR=00100步数i操作余数RV商Y初始化00100100110000判溢出:R=R-X111100余数为负,无溢出00004RV左移一位,Y左移一位11100001100000R=R+X000101余数R为正,Y0←100013RV左移一位,Y左移一位00101011000010R=R-X111101余数R为负,Y0←000102RV左移一位,Y左移一位11101110000100R=R+X001000余数R为正,Y0←101011RV左移一位,Y左移一位01000100001010R=R-X000100余数R为正,Y0←110110结束定点数的乘除法运算介绍采用加减交替除法思想构成的阵列除法器。可控加减单元CAS由一个全加器和异或门组成4个输入端和4个输出端Xi、Yi:本位输入Ci-1:低位来的进位输入Fi:本位的“和”或者“差”Ci:向高位的进位输出P:加减控制信号10.3.5阵列除法器定点数的乘除法运算把一行CAS按横向串接起来连接成处理行
X=X3X2X1X0Y=Y3Y2Y1Y0F=F3F2F1F0P、C、Q分别为加减控制信号、最低位的进位输入、最高位的进位输出。P=0,[F]补=[X+Y]补P=1,[F]补=[X-Y]补
6位除3位的阵列除法器的逻辑框图被除数X=X5X4X3X2X1X0
除数Y=Y2Y1Y0
都是正整数商Q=Q2Q1Q0
余数R=R2R1R0定点数的乘除法运算例12已知被除数X=101001,除数Y=111,求余数R和商Q。解:由逻辑运算部件、算术运算部件以及多路选择器3部分组成。逻辑运算部件直接用相应的逻辑门就能实现基本的逻辑运算。能完成两个n位数A和B的与运算、或运算、异或运算的逻辑运算单元。10.4定点运算器的构成10.4.1算术逻辑运算单元ALU定点运算器的构成n位的逻辑运算部件
定点运算器的构成
算术运算部件主要完成加法和减法运算核心:一个二进制并行加法器定点运算器的构成n位的ALU定点运算器的构成寄存器组的两种实现方法:单端口寄存器组一个寄存器地址端和一个数据端多端口寄存器组有多个数据输入端口和多个数据输出端口有多个寄存器的选择信号同时从不同的寄存器中读出多个数和写入多个数10.4.2寄存器组定点运算器的构成单总线结构的运算器所有部件都连到同一条总线上,任意两个寄存器之间、或者任一寄存器与ALU之间都可以进行数据传送,但在同一时间内,只能有一个操作数在总线上传送。优点:控制简单,但速度比较慢。10.4.3运算器的基本结构定点运算器的构成定点运算器的构成双总线结构的运算器操作部件连接到两条不同的总线上,可以同时传输两个数据。定点运算器的构成三总线结构的运算器速度最快,但控制最复杂。设有两个规格化浮点数X和Y,分别为:
X:XEXMY:YEYM其中:XE和YE:阶码
XM和YM:尾数浮点加减法运算的步骤:
判0操作、对阶、尾数加/减、规格化与舍入
(在规格化的过程中还要判断运算结果是否溢出)10.5浮点运算10.5.1浮点加减运算浮点运算判0操作两个操作数X和Y中有为“0”的,则不需要进行运算,直接就能设置运算结果(为0),运算结束。否则进入下一步。对阶使小数点对齐需要对其中的一个操作数进行变换,使两个操作数的阶码相等。分两步实现求阶差△E=XE-YE。浮点运算若△E>0,则表示X的阶码大于Y的阶码,需调整操作数Y。将Y的尾数YM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于支付货款的通知函8篇范本
- 校园反诈试题及答案
- 八下地理期末试题及答案
- 传统文化教育不可少小学主题班会课件
- 节目表演:展示才能的小学主题班会课件
- 维修电工操作试题及答案
- 消声器排气管市场投资前景分析及供需格局研究研究报告
- 医疗区块链数据检测认证现状与发展趋势预测
- 中国铸铁锅行业销售状况与投资质战略预测分析研究报告版
- 航空航天领域智能化航天器设计与发射方案
- 2025年陕煤集团神木电化发展有限公司招聘笔试参考题库及答案详解(新)
- 驾驶证学法减分考试试题及答案
- 学堂在线 会计学原理 章节测试答案
- 《中央企业安全生产管理评价办法》
- 溶剂周转桶管理办法
- 四升五数学(暑假青岛版40天)
- GB/T 19316-2025小艇操舵轮
- 水利工程安全生产资料(全套有内容)
- 接收抵债资产管理办法
- 湖北省中小学生命安全教育课程标准(实验)
- 包扎伤口急救课件
评论
0/150
提交评论