指令执行高效率生产线方法及装置的制作方法

文档序号:6405649阅读:399来源:国知局
专利名称:指令执行高效率生产线方法及装置的制作方法
技术领域
本发明涉及数据处理系统,更明确地说是涉及一种按流水线方式执行指令的系统。
众知周知,数据处理系统包含用以存贮指令和操作数的存贮器和用以执行指令的处理器。处理器从存贮器中取出指令、产生操作数地址並从存贮器中取出操作数。然后处理器执行该指令並把得到的操作数存回到存贮器中的指定单元。然后处理器取出下一条指令。
串行操作,特别是对存贮器的顺序存取往往是对系统吞吐量的限制因素。因此对系统增加一些高速暂存器来改善其性能。最初,一个高速暂存器存贮指令和操作数两者,但在后来,设计出指令高速暂存器和数据高速暂存器。
几乎在相同时期,数据处理系统的设计出现了流水线操作方式。然而,对此系统而言,指令的执行仍然是顺序的。也就是说,只有当前一条指令的执行完成后才取出下一条指令,按照新的设计,指令的执行是流水线式的。按照流水线的操作方式,系统被组织成为若干阶段例如取出和分析指令的指令阶段、产生操作数地址的地址阶段,取出操作数的存贮器或高速暂存器阶段和完成该指令的执行阶段。诸指令被顺序地放进流水线。在指令阶段刚一完成指令的操作,该指令就被传递到地址阶段,並取出要被执行的下一条指令。因此,在上述的四阶段系统中,在同一时间将有四条指令的不同部分在被执行。
但是上述那种流水线操作方式的吞吐量还是有限的,因为每条指令的执行都需要在流水线的各个阶段中进行传递。为了改进其性能,某些系统尽可能地使由流水线的某些阶段所执行的操作能重叠进行。
这种流水线机器的一个例子是美国专利4760519号中所描述的那个系统,该专利的标题是“利用碰撞检测和预测法的数据处理装置和方法”。该系统包括两个独立的流水线,一个是三阶段的指令流水线,另一个是三阶段的执行流水线。指令流水线的最后阶段与执行流水线的第一阶段重迭连接。在这种系统中,一条指令仍然还要至少五个周期才能完成。
因此,本发明的主要目标是提供一个高性能的流水线系统。
本发明的另一个目标是给出一个系统,它能利用尽可能少的流水线阶段来完成各指令的执行。
利用一个优选的处理部件实施例,本发明可实现上述目标和其它一些目标,该处理部件是按生产流水线系统方式组织起来的,其中包括若干个部件,每个部件完成对生产流水线的各条指令的不同操作。某些类型的指令由前头几个部件执行並脱离此生产线。这就使前头的几个部件免得去执行后随的指令。另一些类型指令放在此生产线的末端执行。这就改善了系统的总吞吐量。
更具体地说,在第一个周期内,第一个部件(即指令部件)从存贮器中取出指令,在第二个周期,该指令部件对指令进行译码並执行某些转移指令。第二个部件对应于地址部件(A),它从指令部件那里接收此指令並在第三周期内,要么产生一个地址、要么执行一条“寄存器”型的指令。所产生的地址指出了在随后的一个周期内为执行一条“存贮器”型指令所需要的操作数在存贮器中的位置。对于“存贮器”型指令,将在第四个周期内从存贮器中取出操作数,这个操作数将由生产线顺序中的下一个部件来执行,然后在第五个周期内离开此生产线。在第二个操作周期内执行的转移指令和在第三个操作周期内已被执行的“寄存器”型指令实际上脱离了此生产线,所以,不需要在此生产线中占用另外的周期。因而,改善了系统的吞吐量。


图1是包含本发明装置的整个系统的方块图。
图2是图1所示的整个系统的更详细的方块图。
图3是生产流水线周期的主要部份的逻辑框图。
图4展示了用以说明本发明的一些指令在工型高速暂存器下的位置。
图5展示了在生产流水线各周期内被处理的一系列指令。
图6A表示固件的流程图,这个固件用以控制地址部件中的逻辑元素。地址部件产生一个操作数的存贮器地址用于执行部件中执行一条指令。
图6B也是该固件的流程框图,这个固件所控制的逻辑元素完成执行部件中的、指令的执行。
图7也是固件的流程框图,这个固件所控制的逻辑执行软件可见的寄存器指令。
图1展示了以生产流水线方式工作的一个数据处理系统1的方块图,其中包括中央处理器(CPU)2、虚存管理部件(VMMU)4、高速暂存器6、存贮子系统8和入/出外部设备10。高速暂存器6、存贮器8以及入出外部设备10都接到系统总线12。存贮器8用以存贮指令和操作数。最有可能被立即执行的那些操操数和指令从存贮子系统8传送到高速暂存器6。
CPU2从高速暂存器6中接收指令並在执行这些指令时把指令的虚地址部分送到VMMU4。VMMU把此虚地址转换为物理地址,这个物理地址被加到暂存器6用以取出必要的操作数,以便使CPU能够执行该指令。
输入/输出部件10通常代表任意数量的外部控制器及它们的设备,或者是用以控制外围控制器和设备的入/出处理机,部件10也可以是一个通讯子系统。
图2以方块图形式展示了构成CPU2和高速暂存器6的主要成份。CPU2包括指令(I)部件2-2、地址部件(A)2-4和若干执行(E)部件2-6。执行部件2-6可能是一个科学指令处理器或者是一个商用指令处理器。但是为了说明简单起见,只描述执行部件2-6的其中之一的操作过程,这对理解本发明已经足够了。
高速暂存器6包括I型高速暂存器6-2和E型高速暂存器6-4。I型高速暂存器存贮要被执行的指令,E型高速暂存器存贮该指令对之要操作的操作数。指令部件2-2本质上完成两种功能。它从I型高速暂存器6-2中予取出指令,然后分解这些指令以确定A部件2-4和E部件2-6如何进一步处理这些指令。此外,I部件2-2还执行某些分枝指令,这些指令从此之后就从本生产线中去掉了。
A部件2-4从I部件2-2中接收指令,並当这条指令是寄存器一寄存器型指令时就执行它。当该指令需要由E部件2-6执行时,A部件2-4发送一个虚地址给VMMU4,VMMU4把这个虚地址翻译为供E型高速暂存器6-4用的物理地址。E型高速暂存器6-4把操作数送到E部件2-6,以便完成原来由指令部件2-2从I型高速暂存器6-2中接收到的那条指令的执行。
A部件2-4也将确认转移指令的执行,並把转移地址送回到指令部件2-2,指令部件2-2这时已经请求在I型高速暂存器6-2中的由I部件2-2预先取出的转移地址所确定的那个单元中的下一条指令。A部件2-4和E部件2-6均包括寄存器文件,这些寄存器文件存贮便于程序员使用的那些寄存器的内容,所谓便于程序员使用的寄存器就是软件看得见的寄存器。I型高速暂存器6-2和E型高速暂存器6-4都被接到系统总线12,它们的内容随着从存贮器8中取出的指令和操作数而更新。
各指令都由CPU2的诸成份以生产流水线的方式执行。也就是说,I部件2-2从I型高速暂存器6-2中接收一条指令,对它进行分解,接着把此指令送到A部件2-4。A部件2-4要么就执行这条指令,要么把此虚地址送到VMMU4去转换,以便得到E型高速暂存器6-4中的地址。E型高速暂存器把指定的操作数送到E部件2-6。
在A部件2-4正在执行从I部件2-2中得到的第一条指令的地址部分时,I部件2-2则从I型高速暂存器6-2中取出第二条和随后的各条指令。当A部件2-4把第一条指令规定的虚地址送到VMMU4並把这一情况通知I部件2-2时,I部件2-2就把第二条指令送到A部件2-4。正当A部件2-4在此管道线中处理第二条指令时,VMMU4就访问E型高速暂存器6-4。当E部件2-6正在执行第一条指令时,VMMU4可以对E型高速暂存器进行寻址以取出第二条指令的操作数,与此同时,A部件2-4产生第三条指令的虚地址。在此期间,I部件2-2正在分解第四条指令並取出后续指令之一。因此,在这个典型的例子中,可能有多至五条指令正在此生产线中推进。
但是,因为I部件2-2能够执行某些转移指令,並且A部件能够执行一些软件可见的寄存器型指令,所以一旦这些指令的执行结束,它们就从生产线中消失。类似的情况是,当A部件2-4正在处理一条转移指令並且转移条件满足,那么A部件2-4立即认可I部件2-2的转移地址,而那条转移指令也将从生产线中去掉。这种操作方式和方法与先前的技术相比,能够提高吞吐量。
图3展示了指令部件2-2、A部件2-4、执行部件2-6和它们之间衔接关系的细节。A部件2-4把虚地址送入指令部件2-2的P计数器2-200。这个虚地址是要被放到流水线中去的下一条指令在I型高速暂存器6-2中的单元地址。在IFETCH周期内,这一虚地址经由加法器2-202和寄存器VAO2-204或寄存器VAI2-206中的一个送到I型高速暂存器6-2。寄存器VAO2-204或VA12-206被用到取出一条转移指令为止。然后,倘若寄存器VAO2-204在起作用,那么这条转移指令所要求的地址将被存入寄存器VAI2-206。
把转移地址分别保存在P计数器2-200和程序计数器2-416寄存器中的理由是如果它是一条条件转移指令,其条件可能满足,也可能不满足。若条件不满足,就不会产生转移。这给系统一种选择要么使用该转移所要求的地址,要么不用。受固件控制的P计数器2-200对于单个字的指令是计数加1,对于双字指令是加2,对于转移指令则由A部件2-4中的转移地址所替代。
从I型高速暂存器6-2中读出的指令被送入串缓冲器A2-220或串缓冲器B2-221。在这儿再次指出,两组串缓冲器中的一组连续地从I型高速暂存器6-2中接收指令,直到出现转移指令为止。之后,紧接着转移指令之后的那条指令被存贮在另一串缓冲器中。举例说,如果串缓冲区A2-220正在被使用,那么转移指令之后的指令将被存贮在串缓冲区B2-221中。由于在另一转移条件满足,I部件2-4从串缓冲区B2-221中取出分枝串的情状下,存贮了两组指令从而改善了吞吐能力。
上面提到过的指令接下来被送到指令分析逻辑2-210,以便确定它是哪种指令。这就是说,如果它是一条软件可见的寄存器到寄存器型的指令,那么将由A部件执行它,如果它是一条存贮器型指令,那么将由E部件2-6执行它。
该指令从分析逻辑2-210送到A部件的固件地址生成器2-208,该地址生成器访问A部件的控制存储器2-430。被寻址单元的内容被存放在A部件2-4中的RDR(A)寄存器2-406中。来自串缓冲器2-220或2-221的该指令的信号I-INSTR0-31被传送到A部件2-4的指令(RINSTR)寄存器。如果该指令将由E部件2-6执行,那么这条指令也被存入到E部件2-6中的先进先出(FIFO)的指令寄存器2-600中。该指令在来自I部件2-4的一个信号I-BEGIN的控制下也被存入到A部件2-6的OP-CODE寄存器2-402中。RINSTR寄存器2-400和OP-CODE寄存器2-402两者都能存放每个字长为32位的双字。如果某条指令要求2或3个双字,那么在该指令的每一个双字依次被存放到指令寄存器2-400中的时候,关于那条指令的OP-CODE保留在OP-CODE寄存器2-402中。
OP-CODE寄存器2-402的输出主要用于在OPCODE和固件位的控制下访问寄存器文件2-404,OPCODE和固件位分别存放在OPCODE寄存器2-402和寄存器RDR(A)2-406之中。寄存器文件2-404包含软件可见的寄存器。如果正在被执行的指令是一条存贮器型指令,那么就产生一个虚地址並通过算术逻辑部件(ALU)2-412把此虚地址送到VMMU4。对于ALU2-412的输入取决于正在由A部件2-6执行的那条指令,可以借助于RINSTR寄存器2-400、OPCODE寄存器2-402、寄存器文件2-404或者程序计数器2-416加到ALU的A输入端。ALU的B端的输入由用于变址或位移操作的变址移位器2-410所提供(通过加法器2-408或者根据寄存器文件2-404提供)。如果这是一条寄存器型指令,比如是一个在寄存器文件2-404中的一个软件可见的寄存器内容的移位操作,那么该寄存器文件2-404的输出可加到移位器2-414上、移动由该指令所规定的位数、並把移位结果存回曾被读出那条指令的同一个寄存器中的寄存器文件2-404中。
指示寄存器2-412包含对于包括转移指令在内的某些指令的程序状态指示。寄存器的各位包括溢出指示(or)、进位指示(c)(用以指出上一次操作对这一位的补偿情况)、位测试指示(B)(代表被测试最后一位的状态)以及输入/输出指示(I)(代表最后一次外部查询的状态)。程序状态指示还包括大于(G)、小于(L)和异号(U)符号的指示,它们反映了最后一次的比较结果。
类似的指示位被用于科学和商用指令。
因此,条件转移指令的功能是测试一个指示位並在条件满足时产生转移。另一些条件转移指令将测试寄存器文件2-404和2-610中的被选择的软件可见的寄存器的条件。转移指令的OP码指出被选择的软件可见的寄存器的真实状态,所指的状态有小于零、大于零、等于零、不等于零、小于或等于零、奇或者偶等等。
转移指令的类型包括高达16位的短位移、30位的大位移。转移指令可以是无条件型的,或者是条件转移型的。I部件2-2将为所有短位移的转移指令产生出转移地址。这是借助于加法器2-202,把串缓冲器2-220或2-221中的位移字段的内容与P计数器2-200的内容相加而得到的。
转向的指令流从I型高速暂存器6-2读到串缓冲器2-220或2-221。
如果该转移指令是无条件转移指令,那么I部件2-2执行该转移指令並开始分析转移指令流中的下一条指令。
如果该转移指令是一条件转移指令,那么I部件2-2等待A部件2-4作出判决I部件2-2应该分析哪一个指令流。来自操作(OP)码2-402、寄存器文件2-404和指示寄存器2-417的信号都加到转移逻辑2-401。RDR(A)2-406产生一个信号A-P-LD,然后来自ALU2-412的转移地址信号被取到P计数器2-200,转移逻辑2-401则根据46位到50位即十六进制07来产生输出。信号A-BRANCH和A-P-LD被加到P计数器2-200,A-BRANCH信号是根据指定转移类型的OPCODE寄存器信号、状态指示寄存器2-417各位的状态以及寄存器文件2-404中的某些软件可见的寄存器的状态而产生的。
如果信号A-BRANCH和A-P-LD两者都为真,则I部件2-2就开始分析转移指令流中的指令。如果信号A-P-LD为真而A-BRANCH为假,I部件2-2就继续分析原来的指令流。
如果在I部件2-2中,该指令要求转移並给出了一个位移,那么此位移将从分析部件2-210送到加法器2-202,以便与P计数器2-200中的内容相加,並把结果存入寄存器VAO2-204或寄存器VAI2-206,並同时送到I型高速暂存器6-2。
当A部件2-4做完上述指令后,一个A-DONE信号被送到I部件2-2的分析逻辑2-210。这就是通知I部件2-2把存贮在串缓冲器2-220或2-221中的下一条指令发送到A部件2-4,並在必要时送到E部件2-6。如果有一条指令要求由E部件2-6执行,那末I部件2-2在信号I-E-LAST和信号I-E-FIRST的控制下把那条指令送到该指令的FIFO寄存器2-600中。这些信号用来控制指令寄存器FIFO2-600的写入。
在附录中有描述上述信号的布尔表达式,在适当的地方可以参考之。当CRACK信号产生时,系统又不处于保持方式而且包含有时钟逻辑的逻辑块不处于延迟方式的情况下,A部件2-4就接收I-BEGIN信号。
CRACK信号是在就绪逻辑和触发器2-222准备分析该指令的时候产生的。本缓冲器A2-220或B2-221至少存贮一条指令,A部件2-4产生了ADONE信号以指出此A部件已可用于处理下一条指令。
如果正在被分析的指令需要由E部件2-6执行,那么I部件2-2通过就绪逻辑和触发器2-222产生I-EFIRST和I-ELAST信号。这两个信号都被加到I-FIFO的(2-600)上。I-EFIRST信号使I-FIFO2-600能够贮存双字指令。I-ELAST信号使I-FIFO2-600能贮存单字指令。
请注意,I部件2-2通常是把此指令送到A部件2-4中去执行,仅当该指令要在E部件2-6中执行时才把它送到FIFO2-600。在E部件2-6中,由FJFO将要执行的下一条指令被送到下一地址产生器2-602,它产生E部件的存控2-604的地址单元。这个固件字被存贮在寄存器RDR(E)2-606中。指令寄存器FIFO2-600最多存贮4条指估。
当A部件2-4把它的虚地址送到VMMU4时,VMMU4产生用以访问E型高速暂存器6-4的物理地址。该编址单元的内容借助于信号LD-DAT-0015和LD-DAT-1631被存贮在E部件2-6的数据FIFO2-630之中,这两个信号分别对应于单字传送和双字传送。信号LD-DAT-0015的增量也为1,使得FIFO2-630能够写下接收下一次传输的地址。这个数据是该指令将对之操作的操作数。E部件2-6执行那些其操作数被存贮在寄存器文件2-630的软件可见的寄存器之中。
在E部件2-6执行一条指令期间,标志位的状态可能会被标志位逻辑2-623所修改。标志位逻辑根据从ALU2-608中接收到的信号产生信号E-IDAT0-8。信号E-IDAT0-8用以更新A部件2-4中的标志位寄存器2-417。
对于某些由E部件2-6执行的不要求操作数的一些指令,A部件2-4发送一个虚地址(十六进制40)给VMMU4,从而产生一个空周期。这使E-CAHE6-4向FIFO2-630发送一个信号LD-DAT1631和一个“空”操作数,从而产生一个空周期。
乘法器2-616被连接到寄存器文件2-610的A端和B端,以产生並贮存与移位器2-618和Q寄存器2-620相关联的部分乘积。这个部分乘积加到一个结果多路转换器(MUX)2-622並存贮在寄存器文件2-610中的累加器单元中。在相乘结束后,最终结果被存放在寄存器文件中的一个软件可见的寄存器中。
交换逻辑2-612从寄存器文件2-610的B端接收操作数来交换双字中的各个字和交换单字中的各个字节。16位的单字由两个8位的字节组成。一个双字则由两个16位的单字或四个8位的字节组成。符号扩充器2-614重复位于一个双字的第一个有效位左边的所有高位的符号。
CT1和CT2计数器2-624用于计算浮点结果的指数。浮点操作数的尾数通过ALU2-608和移位器2-618来处理,上述这些都是按常规方式完成的。
与A部件2-4有关的寄存器文件2-404和与E部件2-6有关的寄存器文件2-610中的软件可见的寄存器在相继的周期内被更新,所以它们两者包含有相同的信息。这是由来自寄存器RDR(A)2-406的固件信号来实现的,固件信号被送到逻辑2-420以产生更新信号A-UPDT,使寄存器文件2-610和将被送到寄存器文件2-610地址端的六个A-ADR信号,把数据从寄存器文件2-404D端存贮到寄存器文件2-610的D端。类似地,来自寄存器RDR(E)2-606的E-UPDT信号使得寄存器文件2-404存入位于逻辑2-601的信号E-ADR所指定地址上的数据。逻辑2-601从指令寄存器FIFO正600的指令信号和RDR(E)2-606的固件信号中产生信号E-ADR。
A部件2-4的程序计数器2-416贮存下一条指令的地址。I部件2-2中的P计数器2-200也贮存下一条指令的地址。使用两个寄存器的理由是另一遇到条件转移时,I部件2-2中P计数器2-200贮存转移地址(如果它将被用到的话),而程序计数器2-416则不贮存转移地址而是贮存当前正在被执行的指令串中的下一个地址。
下述例子展示了使用本发明的流水线操作方式的优点。图4展示了I型高速暂存器6-2中的若干单元的内容。单元和数据均以十六进制表示。在本例中,单元1000和1001存放着32位的双字寄存器型指令LoadB1,该指令的位移是十六进制4F。这就意味着地址1000加1再加4F或者说是十六进制1050作为虚地址被送到VMMU4。这个虚地址将指向E型高速暂存器6-4的一个物理地址单元。这个物理地址单元的内容将被送入寄存器B1,它是一个软件可见的寄存器,位于A部件2-4中的寄存器文件2-404中和E部件2-6中的寄存器文件2-610中。类似地,寄存器B2将由32位的双字指令“加载寄存器B2”来送入数据,这条指令存放在单元1002和1003。单元1004存放一条单字指令把寄存器R1的内容打开和左移3位,R1寄存器是寄存器文件2-404和2-610中的另一个软件可见的寄存器。单元1005存放一条转移指令,它使程序计数器2-416的内容增加正5,从而指向一条双字指令“加载寄存器R7”,该指令位于I型高速暂存器6-2中的单元100A和100B。
单元1006和1007存贮着一条加法指令“ADDR30010”,其中寄存器R3的内容被加到存贮器单元0010(在E型高速暂存器6-4中)的内容上,其结果存入寄存器R3。单元1008和1009存放着一条乘法指令MULR66731,其中寄存器R6的内容乘以操作数6731並把结果存回寄存器R6。
因为在单元1005有一条无条件转移指令,所以上述的加法和乘法指令均不会被执行,然而这两条指令都将从I型高速暂存器6-2中取出但不被分析。
图5展示了那些指令通过流水线各阶段时的执行过程。图5展示的诸阶段包括从I型高速暂存器6-2中取出一条指令的I型高速暂存器阶段;检查该指令並确定由哪个部件来执行本指令的I型高速暂存器阶段;产生一个虚地址或执行寄存器型或转移型指令的A部件阶段;把虚地址转换为物理地址的VMMU阶段;把指定单元中的操作数送到E部件2-6的E型高速暂存器阶段,以及最终执行本指令的E部件阶段。
参照图5,在周期1内,I-FETCH从I型高速暂存器6-2中由VAO寄存器2-204的内容(十六进制1000)所指定的一个单元中取出“LoadB1”指令,即十六进制9CCO004F並把它存入串缓冲区A2-220。P计数器2-200由A部2-4初始化,它的内容1000则经由加法器2-202传送到VAO2-204。I型高速暂存器6-2从单元1000和1001中读出此双字。
在周期2内,I-CRACK分析“LoadB1”这条指令。因为这是一条存贮器型指令,所以I部件2-2送给A部件2-4一个I-BEGIN信号使操作码寄存器2-402打开,同时向E部件2-6送出信号I-EFIRST和I-ELAST而使I-FIFO2-600打开。并且,该指令被送到A部件2-4的RINSTR寄存器2-400和E部件2-6的I-FIFO2-600中。操作码寄存器2-402中送入该指令的操作码部份0到8位(二进制10011100)。A部件的控制存贮器2-430被找到並且把此固件字存入寄存器RDR(A)2-406。
在第三周期,A部件产生一个虚地址。ALU2-412把存贮在RINSTR寄存器2-400中的低位字,即十六进制004F加到程序计数器2-416的内容十六进制1000上再加上1,从而产生这个虚地址十六进制1050,它被送到VMMU4。
在VMMU的第四个周期内,VMMU4产生一个访问E型高速暂存器6-4的物理地址,十六进制201050(一个任意的地址)。
在E型高速暂存器的第五周期内,这个被访问的操作数、十六进制12345678(一个任选的操作数)被存贮在数据FIFO2-630中。
在E部件的第六周期,该操作数经符号扩充器2-614、ALU2-608和RESULTMUX2-622存入寄存器文件2-610。
取数到B2这条指令,ACCO0050,按类似的方式在生产线中通过。在此情形下,I高速存贮器6-2的地址(十六进制)1001被存贮在VAO2-202中。因为“取数到B”指令为双字长,所以P计数器2-200的内容增加2。
在E部件的第7周期,操作数十六进制24681357被存入寄存器文件2-610的寄存器B2之中。
在I-FETCH的周期3内,从I高速暂存器6-2中读出单元1004的内容。每个奇地址单元导致两个16位长单字被读出。“取数到B2”这条指令是双字指令,在访问单元1004时读出的那个双字包含两条指令一条是“R1左移3位”(ShiftR1Left3)即十六进制1003,另一条是转移指令十六进制OF85。两条指令都被送到串缓冲器A2-220。
在I-CRACK的周期4内,I部件2-2只访问A部件2-4,因为该指令只能在A部件2-4中执行。信号I-BEGIN把OP码送入OPCODE寄存器2-402。该指令被送入到寄存器RINSTER2-400,而固件字则被送到寄存器RDR(A)2-406。
在A部件的周期5,R1的内容十六进制12345678通过2-414移位器並以十六进制91A2B3C0存入R1。
注意到这条移位指令在三个周期后才被执行,然后就从流水线中消失。
称为I-CRACK的周期5把转移指令十六进制OF85取到寄存器RINSTR2-400。寄存器VAI2-206现在存放着十六进制100A(1005+5)。来自分析控制2-210的位移5被加到转移地址上。
虽然在I-FETCH周期(即周期4)内,有一条无条件转移指令从单元1005转到100A,但是仍然取出加法指令BAOO0010並把它放入串缓冲器A2-202中。在I-CRACK这个周期6内,这条指令並不被分析,因为这时的串缓冲器B2-221正在工作。I-CRACK的周期6是一空周期。
在周期6,A部件产生信号A-P-LD和A-BRANCH把转移地址送入P计数器2-200。A部件也把此转移地址送入程序计数器2-416。
在I-FETCH周期5内,上述的乘法指令被送入串缓冲器A2-220,它也不被分析。但是在I-CRACK的周期7时,LDR7这条指令将被分解。
图6A和6B以方块图形式分别展示了A部件2-4和E部件2-6在执行图4所示的LoadB1(取数到B1)指令时所采取的固件步骤。
每一方框展示了RDR(A)2-406或RDR(E)2-606寄存器的固件位和它们的值。方框中下横线表示的是由固件识别的记忆符,这是该框所具有的功能。
作为一个例子,图6A的2-458这一框表示寄存器RDR(a)2-406中的34-37位有一个十六进制值1(二进制0001)。要被执行的功能是把ALU2-412的A输入端的值加上ALU2-412的B输入端的值再加上1以产生一个虚地址。
参考图6A,A部件2-4产生操作数的虚地舞、然后把此虚地址送到VMMU4,並通知I部件2-2A部件2-4已经完成它对“LoadB1”这条指令应该做的部份。在一个周期内,即图5所示的A部件的周期3内,所有的固件步骤都被完成。图中所示的固件框基本上是按照它们被执行的顺序表示的。
从方框2-450可以看出,RDR(A)寄存器2-406的位16是二进制O。微操作RB-OPW把RINSTR寄存器2-406中的内容,十六进制9CCO004F传送到方框2-452。
方框2-452,即MICROINOX0(RDR(A)2-406的19和20位为二进制00)选出该指令(16进制0050)的右边一个字,方框2-454,即微AUB-RB1631(29-31位为0)把选出的右边那个字送到ALU2-412的B输入端上。
方框2-456,即MICROAUA-P(26-28位为0)把程序计数器2-416的内容十六进制1000送到ALU2-412的A输入端。
方框2-458,即MICROAU-A+B+I(34-37位为十六进制1)在ALU2-412中产生一个十六进制1050(1000+4F+1)的虚地址。
方框2-460,即MICROVALU-P(位41-42为十六进制3)借助于MUX(未画出)从ALU2-412中选出其虚地址。
方框2-462,即MICROOFFSET(位32-33为二进制0)测试E型高速暂存器6-4中的操作数是否位于字边界。若不是,该固件将调用两个E高速暂存器周期来读出存放着操作数的两个双字的内容。因此E-OFF为二进制0。E-OFFSET从变址移位器2-410中被送到位移FIFO2-634中。
方框2-464,即MICROQLD(位43为二进制1),把此虚地址送到Q寄存器2-418作为后备。
方框2-468,即MICROPP2(44-45位为二进制10)使程序计数器2-416增加1,接子束I部件2-2中的P计数器2-200地加1以便从I高速暂存器6-2中读出下一条指令。
方框2-470,即MICROA-DONE(位53为二进制1)向I部件2-2发送一个A-DONE信号。从而,I部件向A部件2-4送来下一条指令。
参考图6B,E部件2-6从E型高速暂存器6-4中接收其操作数並把它存入寄存器文件2-610的B1之中,从而完成了LDB1这条指令的执行。
方框2-654表示RDR(E)寄存器2-606的45-46位为二进制01。MICRODW操作使DFIFO2-630中的双字操作数按双字边界对齐。E-OFF为二进制0表示无位移。
方框2-652,即MICROAUADAT(47位为1)把此操作数从O-FIFO2-630传送到ALU2-608的A输入端。
方框2-658,即MICROALU-DW(88-89位为01)构造ALU2-608,作为双字来处理这个操作数。
在方框2-660中,即MICRORSLT-RTR(66-67位为01)中,RESULTMUX2-622从REF-FJFO2-632中选出操作数的0和1位,即环号,並从ALU2-608中选出该操作数的2-31位。
方框2-662,即MICROA-BX(31-37位为二进制10010001)根据固件字的各位001和指令字的各位1-3来产生寄存器文件2-610A的地址。
方框2-664,即MICRORFW(A)(79-82位为十六进制01)把此双字操作数从RESULTMUX2-622写到寄存器文件2-610的B1寄存器中。
方框2-666,即MICRODONE(63位为1)发送一个E-DONE信号给I部件2-2,这个信号使与“LoadB1”这条指令有关联的指令分析逻辑2-210重置。
方框2-668,即MICROMBFMTMBR(位29和位1-3为十六进制04)转移到下一个E部件的控制存贮器2-604的单元並把下一固件字取到RDR(E)2-606。
图7以方框形式展示了为执行把R1左移3位(ShiftR1Left3)这样一条指令,A部件2-4所采取的固件步骤。参考图7,I-FETCH阶段的周期3从I型高速暂存器6-2中取出“使R1左移3位”(SOL)这条指令,16进制为1003,並把它送到串缓冲器A2-220中。该指令在周期4内被分解並被送到RINSTR寄存器2-400和OPCODE寄存器2-402。信号I-BEGIN打开OP-CODE寄存器2-402,在周期5内,从寄存器文件2-404中读出R1的内容(十六进制12345678)、左移3位並把结果(十六进制91A2B3C0)存回R1,从而执行完了这条SOC指令。
A部件2-4受从控制存贮器2-430中读出后存贮在ROR(A)寄存器2-406中的那个固件字的控制。
从方框2-480中可以看出,值为十六进制为04的由RDR(A)2-406中的6-11位指出的宏指令MICROB-DX产生出寄存器文件2-404中的RFB地址,十六进制01)。该地址是这样生成的把操作码寄存器2-402的1到3位附在000的后面,以获得R1的地址(000001)。
方框2-482MICKOSIN2-RB(27-29位为十六进制0)把R1的内容读到移位寄存器2-618。方框2-484MICROSIN3-0(30-31位为二进制11)把移位器2-618的32个低阶位置“0”。方框Z-486,即MICROSHIF-L(位16为0)对移位器2-618置上左移操作的条件。框2-488,MICROSHSI(17-19位为十六进制2)按照操作码2-402位12-15的规定,使移位器2-618移位3。
方框2-490,即MICRORFB-SHFT(12-13位为二进制10)使操作数左移3位并把结果存回寄存器文件2-404的R1之中。
方框2-492,即MICROI-C-SHFT(46-51位为十六进制38)为移位顺序生成指示寄存器2-417中的C指示位(未画出)。
方框2-494,即MICRODONE(第53位为二进制1)发送一个A-DONE信号给I部件2-2。然后I部件2-2分析要被执行的下一条指令並把它送到A部件2-4。
方框2-496,也即MICROPP1(44-45位为二进制01)使程序计数器2-416增加1,这是因为SOL是一条单字指令。
虽然本发明是参照上述的优先实施例提出並加以描述的,但是同行者借此例将会理解可以对上述的实施例在形式上和细节上作出这样或那样的改变,而並不脱离本发明的精神和范围。
附录A下列资料中列出的那些指令的记忆符选自商业上可以得到的HoneywellBull公司的DPS6程序员袖珍指南cu75-02的硬件版本(84年8月)。在下列布尔表达式中的记述法含义如下EQ0100等于16进制0100GT3大于16进制3NQ2不等于16进制2NLT018不小于16进制018NGT01E不大于16进制01ELT3小于16进制3I-BIGIN信号由下列布尔等式产生I-BIGIN=CRACK&∧STALL&∧HOLDCRACK=REDADY&∧NONELEFT&∧ADONE其中表示非信号,也即HOLD被读作为“非HOLD”信号关于I-EFIRST和I-ELAST信号的布尔等式是I-EFIRST=CRACK&∧STALL&EINSTRI-ELAST=I-EFIRST(∧MSK+(SIEEEQ2)+BII)+(∧HOLD&MSK&∧EII&CRACK&∧STALL&NOTSTO&RSISEEQ2)信号EINSTR的布尔等式是按照要由E部件执行的各种指令的各位的组合函数来产生的。布尔等式为EINSTR=GCS+(IO+IOLD+SC+MASK+BIT4+LB+LEV+INCDEC&∧RAS+MTM+MUL+DIV+STM+SSBP)&∧EII+(BSTORE+EBIMO)&IMO+EMSK&
EII+MLV&(SI+ESI&EII1)+(ESO+EDO)&(∧ERAS&(EII1+EII23)+AS3EII45)+EEII&(EII1+EII23)+(SDO+SO)&∧.RAS&∧IMO&∧EII等式中各项的说明普通的、商用或科学计算用指令GCS=I-INST(0-8)EQ;
IO指令IO=(I-INST(0-8)EQ0100)IOLD指令IOLD=I-INST(0-8)EQ0103单操作数指令SO=(I-INSTCO-3)EQ8&((I-INST(4-8)EQ1)+(I-INST(4-8)GT3))使用E部件2-6中的B寄存器的单操作数指令SSBP=I-INST(0-8)EQ0106使用溢出条件的单操作数指令(NEG,CAD,AID,SID,INC,DEC等指令)SOV=SO&((I-INST(4-8)EQ4)+(I-INST(4-8)EQ01D+(I-INST(4-7)EQ4))+INCDECLB指令LB=SO&(I-INST(4-8)EQ05)位操作指令(LBF、LBT、LBC、LBS)BIT4=(I-INST(0-5)EQ022)&(I-INST(8)EQ0)基本的双操作数或科学计算指令SDO=(I-INST(0-3)GT8)&(I-INST(4-8)NEQ2)带有在线屏蔽字的基本指令(SRM、NSAVE、NRSTR、SAVE、RSTR)MASK=(I-INST(0)EQ1)&(RLBPNEQ)&(I-INST(4-8)EQ015)+(I-INST(0-7)EQ085)+(I-INST(0-7)EQ08F)科学计算用单字和双字操作数指令SC=((I-INST(0-3)GT8)&((I-INST(4-8)EQ011)+(I-INST(4-8)EQ013+(I-INST(4-8)EQ018)+(I-INST(4-8)EQ01A)))&EII1&∧EII23&∧AS3EII45使用M寄存器並且不停止流水线的双操作数指令STM=(I-INST(0)EQ1)&(RLBPNEQ0)&
(I-INST(4-8)EQOE)其中RLBP=I-INST(1-3)乘法指令MUL=(I-INST(0)EQ1)&(RLBPNEQ0)&(I-INST(4-8)EQ016)除法指令DIV=(I-INST(0)EQ1)&(RLBPNEQ0)&(I-INST1(4-8)EQ06)修改测试寄存器M指令
MTM=(I-INST(0-3)GT8)&(I-INST(4-8)EQ0)如果指令包括直接操作数,则停止流水线操作的指令(IMO)NEG,SSBP,CPL,CALL,CL,CLH,LBF,DEC,LBT,LBS,INC,LBC,STS,SDI,CAD(ALSOLE)STM,STH,SRM,SWR,SWB,STR,STB,ARESO,DOBSTORE=SO&((I-INST(4-8)EQ4)+(I-INST(4-8)EQ6)+(I-INST(4-6)EQ3)+(I-INST(4-7)EQOA)+(I-INST(4-7)EQ8)+(I-INST(4-8)EQ018)+(IINST(4-8)EQ01A)+(I-INST(4-7)EQOE))+BIT4+SDO&((I-INST(5-7)EQ7)+(I-INST(4-8)EQ015)+(I-INST(4-6)EQ7))短值立即型指令SI=(I-INST(0).EQ.0)&(RLBP.NEQ.0)&(I-INST(4-7).GT.OB)使用E部件2-6中的B寄存器的IMO指令(LDB、LAB、STB、SWB)EBIMO=(I-INST(0-3)GT8)&((I-INST(4-8)EQ019)+(I-INST(4-8)EQ017)+(I-INST(4-8)EQ01D)+(I-INST(4-8)EQ01F))LEV指令LEV=SO&(I-INST(4-8)EQ01C)INC和DEC指令
INCDEC=SO&((I-INST(48)EQ011)+(I-INST(4-8)EQ015))MLV或MLVK指令MLV=I-INST(6-7)EQ3扩充的整型单操作数指令ESO=(I-INST(0-3)EQ8)&(I-INST(4-8)NLT018)&(I-INST(4-8)NEQ01B)&(I-INST(4-8)NGT01E)使用溢出条件且不停止流水线的EII指令KINC、KDEC,KNEC,KNEGBINSTRUCTIONSESOV=ESO&(I-INST(6-7)LT3)&(I-INST(6-8)NEQ1)EII短值直接型指令ESI=EBK&(I-INST(8)EQ1)扩充的整型双操作数指令EDD=(I-INST(0-3)GT8)&(I-INST(4-7)NLT4)带有在线双字屏蔽的扩展的整型指令(EII)INSTREMSK=(I-INST(0)EQ1)&(RLBPNEQ0)&(I-INST(4-8)EQOF)其中RLBP=I-INSTR(1-3)在E部件2-6中执行的E11指令,这些指令包括一个寄存器地址字节(RAS)或者是一条(IMO)(KDIV、KMUL、KMULP、KDIVP、KSKM指令)EEII=KDIV+KMUL+KDIVP+KMULP
KDIV=(I-INST(0)EQ1)&(RLBPNEQ0)&(I-INST(4-8)EQ017)KMUL=(I-INST(0)EQ1)&(RLBPNEQ0)&(I-INST(4-8)EQ01C)KDIVP=(I-INST(0)EQ1)&RLBPNEQ0)&(I-INST(4-8)EQ0IC)KMUIP=(I-IXST(0)EQ1)&(RLBPNEQ0)&(I-INST(4-8)EQ01E)EII1=I-INST(9-15)EQ06CEII23=I-INST(9-15)EQ07C)AS3EII45=I-INST(9-15)EQ058RAS=(I-INST(9-11)EQ5)&(I-INST(12)EQ0)&(I-INST(13-15)NEQ0)IMO=I-INST(9-15)EQ070KAS=(I-INST(23-28)EQ01A)&NCERAS=(I-INST(24-28)EQ01A)&NCNC=I-INST(29-31)NEQOII=EII1+EII23+AS3EII4权利要求
1.一个由许多串联的流水线部件组成的数据处理系统,这些流水线部件形成了一条生产线,每个阶段对送到所述的各个生产线部件的每条指令执行各种不同的操作,所说的系统包括用来存储操作数和所述的一组指令及操作数的存储机构;带有取数机构的第一个部件,这个部件被连接到上述的存储机构,用以响应一系列地址信号而从所说的存储机构中取出并存储每一条指令;上述的第一个部件还具有连到上述的取数机构的分析机构,用以对每组指令进行译码并产生两个信号,第一个信号指出指令的第一种类型,第二个信号指示指令的第二种类型;带有寄存器机构的第二个部件,它响应上述的第一个信号以储存上述的第一和第二种指令,所说的第二个部件还包括用以执行上述的第一种指令然后把这第一种指令从生产线中去掉的第一种机构,所说的第二个部件还包括生成虚地址信号的机构,虚地址信号指出在执行所说的第二种指令时操作数在所说的存储机构中的位置;与上述的第二个部件相连的用以把所说的虚地址信号翻译为物理地址信号的第三部件;与上述第三部件相连的能够响应所述的物理地址信号从所说的存储器中恢复所说的操作数的第四部件;与上述第一和第四部件相连的第五部件,它能响应上述的第二种信号所储存第二种指令,它使第二种机构响应上述的第二种指令和操作数,从而执行这第二种指令。
2.权利要求1所述的系统,其中所说的第二个部件还包括能够产生第三信号的机构,这个信号用于指示所说的第二部件完成对第一和第二种指令的操作的时间。
3.权利要求2所述的系统,其中所说的分析机构能响应所述的第三信号,对一连串指令的下一条译码。
4.权利要求1所述的系统,其中所说的存储机构包括用以存储所说的一组指令的指令型高速暂存器和用以存储所述的操作数的数据型高速暂存器。
5.权利要求4所述的系统,其中所说的取数机构包括地址计数器机构,它产生指令高速暂存器中一系列指令的每个指令的地址,所述的指令高速暂存器能够响应上述的地址,读出所说的地址单元。以及用来存储从所述的指令高速暂存器中收到的每条指令的串缓冲器机构。
6.权利要求5所述的系统,其中所说的分析机构包括能够响应上述的第三信号所产生上述的第一信号的就绪机构;以及指令分析机构,它响应上述的第三信号和从所述的串缓冲器机构来的一组指令信号而产生所说的第二信号。
7.权利要求6所述的系统,其中所说的第一执行机构包括用以产生第一组控制信号的第一控制存储器机构;能够响应存储在所述的寄存器中的第一类指令的第一类信号和所述的第一组控制信号以执行所说的第一类指令的第一逻辑机构。
8.权利要求7所述的系统,其中所说的第一执行机构进一步包括用以产生第二组控制信号的第一控制存储机构;能够响应上述的第二组控制信号和第二类指令的第二种信号以产生所述的存储器地址的第二逻辑机构。
9.权利要求8所述的系统,其中所说的第二执行机构包括用以产生第三组控制信号的第二控制存储机构;能够对所说的第三组控制信号、对来自所述的指令寄存器的第二类指令的第三信号,以及对存储在数据存储器中的操作出响应而执行所述的指令的第三逻辑机构。
10.具有双流水线的一个数据处理系统,所述的双流水线是用于执行指令的,所说的系统包括带有第一组串接的流水线部件的第一流水线,每个部件对送到此流水线的各条指令完成一个不同的操作;与上述第一流水线串联的第二流水线,它具有第二组串联流水线部件,每个部件完成一个不同的操作;所说的第一流水线的第一个部件有着下述机构能够确定所述的每条指令是第一类还是第二类指令;能够选适第一类指令到所述的第一组串联流水线部件的第一个予定的部件;能够选送第二类指令到所述的第二组串联的流水线部件的第一个予定部件和第二个予定部件;所述的第一予定部件有能够执行第一类指令的机构和能够产生一个操作数在内存中的单元地址的机构,所指的操作数用在第二个予定的部件以执行所述的第二种指令。
11.能够以生产线方式处理一系列指令的一个数据处理系统,该系统包括用以存储指令和数据的存储机构;与上述存储机构相连的译码机构,它能够指出上述的这一组指令中的每一条的类型是第一类还是第二类,它能把所说的第一类和第二类指令存入第一寄存器并把第一类指令存入第二寄存器;能够对第一类指令的第一种信号作出响应以执行所说的指令然后把第一类指令从生产线中去掉的第一执行机构,这一机构还能对来自第二类指令的第二信号作出响应以产生一个存储器地址;能够对上述的存储地址作出响应从而读出数据寄存器中储存操作数的存储器机构;能够根据第二类指令对第二信号作出响应以执行这第二类指令的第二执行机构。
12.权利要求11所述的系统,其中所说的存储机构包含用于在指令高速暂存器中存放指令的机构和用于在数据高速暂存器中存放操作数构。
13.权利要求12述的系统,其中所说的取数机构包括能够产生在指令型高速暂存器中每一条指令的单元地址的地址计数器,所说的指令型高速暂存器能对所说的地址作出响应从而读出这个单元;用以存储从所述的指令高速暂存器中接收到的每条指令的串缓冲器机构。
14.权利要求13所说的系统,其中所说的译码机构包括指令分析机构,该机构能对代表每条指令之第一位组的信号作出响应而产生指示第一类指令的第一信号和指示第二类指令的第二信号。
15.权利要求14述和系统,其中所要的第一执行机构包括能产生第一组控制信号的第一控制存储机构;能对上述第一组控制信号和来自所说的第一指令逻辑的、存储在所说的寄存器中的第一信号作出响应以执行上述第一类指令的第一逻辑机构。
16.权利要求15所说的系统,其中说的第一执行机构进一步包括用以产生第二组控制信号的第一控制存储机构;能够对上述的第二组控制信号和来自所说的第二类指令的第二信号作出响应以生成所述的存储器地址的第二逻辑机构。
17.权利要求16所述的系统,其中所说的第二执行机构包括用以产生第三组控制信号的第二控制存储机构;能对上述第三组控制信号、来自指令寄存器的第二类指令的第三信号和数据寄存器中的操作数作出响应以执行所述指令的第三逻辑机构。
18.一个数据处理系统,它具有若干串连的流水线部件,这些部件按照生产线方式工作,每个部件对各条指令执行一个不同的操作,这个系统包括用以存储一组指令和一组操作数的存储机构;在第一周期内工作的第一部件,这个部件连接到所述的存储机构,它带有取数机构和第一存储机构,存储机构能响应来自第一部件的一系列第一地址信号把从所述的存储机构中接收到的每一条指令存放起来;在第二周期阶段内工作的第二部件,它带有连接到上述第一存储机构的分析机构,用以对每条指令进行译码并产生第一和第二信号;在第三周期内工作并带有第二机构的第三部件,它响应根据第一信号以存储上述的第一种和第二种指令,所说的第三部件包括与所述的第二存储机构相连的第一机构,用来执行第一种指令并由此而把这第一种指令从所说的生产线中移走;所说的第三部件还有与上述第二存储机构相连接的机构,用以产生第二地址信号以指出在执行所述的第二种指令时用到的操作数的单元;与上述第三部件相连的所述的存储机构在第四周期响应所述的第二地址信号从而恢复所述的操作数;与上述第二部件相连的第四部件,该部件有一第三机构,它能响应上述的第二信号以便在第二操作周期内存储第二类指令,这个第四部件还与上述的存储机构相连,它带有存储操作数用的第四机构,所说的第四部件还有与上述第三和第四存储机构相连的用来在第五操作周期内执行上述第二类指令的第二机构。
19.把一个数据处理系统组织起来的一种方法,它有一组以流水线方式工作的部件,每个部件对送到该部件的各条指食执行一个不同的操作,这一方法包括下列各步A.由第一部件在第一操作周期内从一个存储器中取出指令并存放到串缓冲器之中;B.由第一部件对存储在所述的串缓冲器中的一组指令进行译码并给出一个指示,以指明这一组指令中的第一条是第一类还是第二类,从而把所说的第一、二类指令送到第二部件的一个寄存器,把第一类指令送到第五部件的指令寄存器,这些工作都是在第二操作周期内完成的;C.在第三操作周期内执行第二种指令;D.由上述的第二部件在第三操作周期内产生一个操作数的虚地址,这个操作数在随后的操作周期内用于执行上述的第一种指令;E.由第三部件在第四操作周期内把虚地址转换为第一类指令的物理地址;F.在第五操作周期内,读存储器,即按照上述的物理地址指定的单元读出其中的操作数并把它存入所说的第四部件的一个数据寄存器中;G.在随后一个周期内,所说的第四部件执行第一种指令;
20.含有若干相互串联的流水线部件形成了一条生产线的一个数据处理系统,每个部件对送到生产线诸部件中的各条指令执行一个不同的操作,所述的这个系统包括用以存放操作数和一组指令的存储机构;与上述存储机构相连的第一部件,该部件的第一机构用来存储从所述的存储机构中取出的每条指令;上述的第一部件还有与上述存储机构相连的译码机构,用来确定第一、第二和第三类指令;与上述第一部件和存储机构相连的第二部件,它有一个第二机构用来存储上述的第一、第二和第三类指令;所说的第二部件的第一机构用来执行第二类指令并由此把这第二类指令从所述的生产线中移走,所说的第二部件的第一机构根据第一类指令生成第一地址,所说的第一部件的第二机构根据这第一地址去执行这第一类指令并由此把这第一类指令从这生产线中移走,所述的第二部件还有能根据第三类指令来产生所述的操作在上述的存储机构中的第二单元地址的第二机构;所述的存储机构与所述的第二部件相连,能根据上述的第二地址来读出所说的操作数。与上述第一部件和存储机构相连的第三部件,它的第三机构用来存储第三种指令和操作数,所说的第三部件还有能执行所述的第三类指令并由此而把这类指令从所述的生产线中移走的第三机构。
21.权利要求20所说的系统,其中的存储机构包括用来存储一组指令的指令高速暂存器和用以存储所说的操作数的数据高速暂存器。
22.权利要求21所指的系统,其中的第一存储机构包括用来存储所说的每一条指令在指令高速暂存器中的单元地址的第一计数器机构;用以存储从所述的指令高速暂存器中接收到的每一条指令的串缓冲器机构。
23.权利要求22所述的系统,其中的译码机构被连接到串缓冲器机构以便对在指令总线上传送的每一条指令生成第一信号,对在指令总线上传送的每一条第三类指令生成第二信号。
24.权利要求23所述的系统,其中所说的用于存储的第二机构包括能够响应上述的第一信号把从所说的指令总线上接收到的每条指令存储起来的第一寄存器机构。
25.权利要求24述的系统,其中与执行有关的第一机构包括用于存放第二类指令的第一寄存器机构;用于产生第一组固件信号的第一控制存储机构;带有一组软件可访问的寄存器的第一寄存器文件机构;与上述的第一寄存器机构、第一寄存器文件机构和第一控制存储机构相联接的第一算术逻辑部件机构,这个逻辑部件能根据上述的第一组固件信号、第二类指令信号以及来自软件可访问寄存器中一个特定寄存器的信号,再按照所述的第二类指令来更新所述的那个指定寄存器的内容,由此而完成对这第二类指令的执行。
26.权利要求25所述的系统,其中所述的第一生成机构包括用以存储第一种指令的上述的第一寄存器机构;用以生成第二组固件信号的上述的第一控制存储机构;能够响应上述第二组固件信号和来自第一类指令的信号以产生上述第一地址的第一算术逻辑部件机构;与上述第一算术逻辑部件机构相连的能够响应所说的第二组固件信号以存放所说的第一地址的第二寄存器机构;与上述第一寄存器机构和第一控制存储机构连接的用来产生第三信号的逻辑机构。
27.权利要求25所说的系统,其中说述的第二执行机构包括与上述第二寄存器机构相连并能根据上述的第三信号来产上述第一地址的第三寄存器机构;与上述的第三寄存器机构相连的第四存储器机构,此机构用来存储上述的第一地址和第三地址,第三地址规定后续的一条指令在第一类指令之后的指令流中的地址,所说的指令高速暂存器读出由上述第一地址规定的一个单元中的下一条指令,然后把它存入上述的串缓冲器机构,从而把所说的第一类指令从所说的生产线中移走。
28.权利要求27所述的系统,其中所述的第二生成机构包括用以产生第三组固件信号的第一控制存储机构;上述的第一算术逻辑部件机构,它能响应上述的第三组固件信号和第三类指令信号以产生上述的第地址。
29.权利要求28所述的系统,其中所说的第三存储机构包括指令的FIFO机构,它能依据上述的第二信号来存放经由上述指令总线接收到的第三类指令;用来存储从述数据高速暂存器中接收到的操作数的数据FIFO机构,以及有一组软件可见寄存器的第二寄存器文件机构。
30.权利要求29所述的系统,其中所说的第三执行机构包括用来产生第四组固件信号的第二控制存储机构;与上述指令FIFO机构、上述数据FIFO机构和上述第二寄存器机构相连接的第二算术逻辑部件机构,它能响应上述一组固件信号、上述的第三类指令信号和上述的软件可见的寄存器信号以执行所说的第三类指令。
31.权利要求30所述的系统,其中所说的第一类指令是转移型指令,所说的第二类指令是软件可见的寄存器型指令,所说的第三类指令是存储器型指令。
全文摘要
以生产线的方式工作的一个数据处理系统,该系统有若干流水线部件,每个部件按在此生产线过程中的各条指令执行各不相同的操作。某些类型指令由较前面的一个部件执行并移出此生产线,而另一些指令则在该生产线的尾部执行,因此改进了系统的总吞吐量。
文档编号G06F9/38GK1044354SQ8910939
公开日1990年8月1日 申请日期1989年12月19日 优先权日1988年12月19日
发明者明泽·牟, 托玛斯·F·约斯 申请人:布尔·Hn·信息系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1