CN1026037C - 指令执行高效率生产线方法及装置 - Google Patents

指令执行高效率生产线方法及装置 Download PDF

Info

Publication number
CN1026037C
CN1026037C CN89109392A CN89109392A CN1026037C CN 1026037 C CN1026037 C CN 1026037C CN 89109392 A CN89109392 A CN 89109392A CN 89109392 A CN89109392 A CN 89109392A CN 1026037 C CN1026037 C CN 1026037C
Authority
CN
China
Prior art keywords
instruction
parts
register
type
processing unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN89109392A
Other languages
English (en)
Other versions
CN1044354A (zh
Inventor
明泽·牟
托玛斯·F·约斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull HN Information Systems Inc
Original Assignee
Bull HN Information Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bull HN Information Systems Inc filed Critical Bull HN Information Systems Inc
Publication of CN1044354A publication Critical patent/CN1044354A/zh
Application granted granted Critical
Publication of CN1026037C publication Critical patent/CN1026037C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3873Variable length pipelines, e.g. elastic pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • General Factory Administration (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Image Processing (AREA)
  • Programmable Controllers (AREA)

Abstract

以生产线的方式工作的一个数据处理系统,该系统有若干流水线部件,每个部件按在此生产线过程中的各条指令执行各不相同的操作。某些类型指令由较前面的一个部件执行并移出此生产线,而另一些指令则在该生产线的尾部执行,因此改进了系统的总吞吐量。

Description

本发明涉及数据处理系统,更明确地说是涉及一种按流水线方式执行指令的系统。
众知周知,数据处理系统包含用以存贮指令和操作数的存贮器和用以执行指令的处理器。处理器从存贮器中取出指令、产生操作数地址並从存贮器中取出操作数。然后处理器执行该指令並把得到的操作数存回到存贮器中的指定单元。然后处理器取出下一条指令。
串行操作,特别是对存贮器的顺序存取往往是对系统吞吐量的限制因素。因此对系统增加一些高速暂存器来改善其性能。最初,一个高速暂存器存贮指令和操作数两者,但在后来,设计出指令高速暂存器和数据高速暂存器。
几乎在相同时期,数据处理系统的设计出现了流水线操作方式。然而,对此系统而言,指令的执行仍然是顺序的。也就是说,只有当前一条指令的执行完成后才取出下一条指令,按照新的设计,指令的执行是流水线式的。按照流水线的操作方式,系统被组织成为若干阶段:例如取出和分析指令的指令阶段、产生操作数地址的地址阶段,取出操作数的存贮器或高速暂存器阶段和完成该指令的执行阶段。诸指令被顺序地放进流水线。在指令阶段刚一完成指令的操作,该指令就被传递到地址阶段,並取出要被执行的下一条指令。因此,在上述的四阶段系统中,在同一时间将有四条指令的不同部分在被执行。
但是上述那种流水线操作方式的吞吐量还是有限的,因为每条指 令的执行都需要在流水线的各个阶段中进行传递。为了改进其性能,某些系统尽可能地使由流水线的某些阶段所执行的操作能重叠进行。
这种流水线机器的一个例子是美国专利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的输出主要用于在OP    CODE和固件位的控制下访问寄存器文件2-404,OP    CODE和固件位分别存放在OP    CODE寄存器2-402和寄存器RDR(A)2-406之中。寄存器文件2-404包含软件可见的寄存器。如果正在被执行的指令是一条存贮器型指令,那么就产生一个虚地址並通过算术逻辑部件(ALU)2-412把此虚地址送到VMMU4。对于ALU2-412的输入取决于正在由A部件2-6执行的那条指令,可以借助于RINSTR寄存器2-400、OP    CODE寄存器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信号是根据指定转移类型的OP    CODE寄存器信号、状态指示寄存器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位的双字寄存器型指令Load    B1,该指令的位移是十六进制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存贮着一条加法指令“ADD    R3 0010”,其中寄存器R3的内容被加到存贮器单元0010(在E型高速暂存器6-4中)的内容上,其结果存入寄存器R3。单元1008和1009存放着一条乘法指令MUL    R6    6731,其中寄存器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)所指定的一个单元中取出“Load    B1”指令,即十六进制9CCO    004F並把它存入串缓冲区A2-220。P计数器2-200由A部2-4初始化,它的内容1000则经由加法器2-202传送到VAO2-204。I型高速暂存器6-2从单元1000和1001中读出此双字。
在周期2内,I-CRACK分析“Load    B1”这条指令。因为这是一条存贮器型指令,所以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和RESULT    MUX2-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位”(Shift    R1    Left3)即十六进制1003,另一条是转移指令十六进制OF85。两条指令都被送到串缓冲器A2-220。
在I-CRACK的周期4内,I部件2-2只访问A部件2-4,因为该指令只能在A部件2-4中执行。信号I-BEGIN把OP码送入OP    CODE寄存器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,但是仍然取出加法指令BAOO    0010並把它放入串缓冲器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所示的Load    B1(取数到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-2:A部件2-4已经完成它对“Load    B1”这条指令应该做的部份。在一个周期内,即图5所示的A部件的周期3内,所有的固件步骤都被完成。图中所示的固件框基本上是按照它们被执行的顺序表示的。
从方框2-450可以看出,RDR(A)寄存器2-406的位16是二进制O。微操作RB-OPW把RINSTR寄存器2-406中的内容,十六进制9CCO    004F传送到方框2-452。
方框2-452,即MICRO    INOX    0(RDR(A)2-406的19和20位为二进制00)选出该指令(16进制0050)的右边一个字,方框2-454,即微AUB-RB16:31(29-31位为0)把选出的右边那个字送到ALU2-412的B输入端上。
方框2-456,即MICRO    AUA-P(26-28位为0)把程序计数器2-416的内容十六进制1000送到ALU2-412的A输入端。
方框2-458,即MICRO    AU-A+B+I(34-37位为十六进制1)在ALU2-412中产生一个十六进制1050(1000+4F+1)的虚地址。
方框2-460,即MICRO    VALU-P(位41-42为十六进制3)借助于MUX(未画出)从ALU2-412中选出其虚地址。
方框2-462,即MICRO    OFFSET(位32-33为二进制0)测试E型高速暂存器6-4中的操作数是否位于字边界。若不是,该固件将调用两个E高速暂存器周期来读出存放着操作数的两个双字的内容。因此E-OFF为二进制0。E-OFFSET从变址移位器2-410中被送到位移FIFO2-634中。
方框2-464,即MICRO    QLD(位43为二进制1),把此虚地址送到Q寄存器2-418作为后备。
方框2-468,即MICRO    PP2(44-45位为二进制10)使程序计数器2-416增加1,接子束I部件2-2中的P计数器2-200地加1以便从I高速暂存器6-2中读出下一条指 令。
方框2-470,即MICRO    A-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。MICRO    DW操作使DFIFO2-630中的双字操作数按双字边界对齐。E-OFF为二进制0表示无位移。
方框2-652,即MICRO    AUA    DAT(47位为1)把此操作数从O-FIFO2-630传送到ALU2-608的A输入端。
方框2-658,即MICRO    ALU-DW(88-89位为01)构造ALU2-608,作为双字来处理这个操作数。
在方框2-660中,即MICRO    RSLT-RTR(66-67位为01)中,RESULT    MUX    2-622从REF-FJFO2-632中选出操作数的0和1位,即环号,並从ALU2-608中选出该操作数的2-31位。
方框2-662,即MICROA-BX(31-37位为二进制10010    001)根据固件字的各位001和指令字的各位1-3来产生寄存器文件2-610A的地址。
方框2-664,即MICRO    RFW(A)(79-82位为十六进制01)把此双字操作数从RESULT    MUX2-622写 到寄存器文件2-610的B1寄存器中。
方框2-666,即MICRO    DONE(63位为1)发送一个E-DONE信号给I部件2-2,这个信号使与“Load    B1”这条指令有关联的指令分析逻辑2-210重置。
方框2-668,即MICRO    MBFMT    MBR(位29和位1-3为十六进制04)转移到下一个E部件的控制存贮器2-604的单元並把下一固件字取到RDR(E)2-606。
图7以方框形式展示了为执行把R1左移3位(Shift    R1    Left    3)这样一条指令,A部件2-4所采取的固件步骤。参考图7,I-FETCH阶段的周期3从I型高速暂存器6-2中取出“使R1左移3位”(SOL)这条指令,16进制为1003,並把它送到串缓冲器A2-220中。该指令在周期4内被分解並被送到RINSTR寄存器2-400和OP    CODE寄存器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位指出的宏指令MICRO    B-DX产生出寄存器文件2-404中的RFB地址,十六进制01)。该地址是这样生成的:把操作码寄存器2-402的1到3位附在000的后面,以获得R1的地址(000001)。
方框2-482MICKO    SIN2-RB(27-29位为十六进制0)把R1的内容读到移位寄存器2-618。方框2-484MICRO    SIN3-0(30-31位为二进制11)把移位器2-618的32个低阶位置“0”。方框Z-486,即MICROSHIF-L(位16为0)对移位器2-618置上左移操作的条件。框2-488,MICRO    SHSI(17-19位为十六进制2)按照操作码2-402位12-15的规定,使移位器2-618移位3。
方框2-490,即MICRO    RF∶B-SHFT(12-13位为二进制10)使操作数左移3位并把结果存回寄存器文件2-404的R1之中。
方框2-492,即MICRO    I-C-SHFT(46-51位为十六进制38)为移位顺序生成指示寄存器2-417中的C指示位(未画出)。
方框2-494,即MICRO    DONE(第53位为二进制1)发送一个A-DONE信号给I部件2-2。然后I部件2-2分析要被执行的下一条指令並把它送到A部件2-4。
方框2-496,也即MICRO    PP1(44-45位为二进制01)使程序计数器2-416增加1,这是因为SOL是一条单字指令。
虽然本发明是参照上述的优先实施例提出並加以描述的,但是同行者借此例将会理解:可以对上述的实施例在形式上和细节上作出这样或那样的改变,而並不脱离本发明的精神和范围。
附录A
下列资料中列出的那些指令的记忆符选自商业上可以得到的Honeywell    Bull公司的DPS6程序员袖珍指南cu75-02的硬件版本(84年8月)。在下列布尔表达式中的记述法含义如下:
EQ0100    等于16进制0100
GT3    大于16进制3
NQ2    不等于16进制2
NLT018    不小于16进制018
NGT01E    不大于16进制01E
LT3    小于16进制3
I-BIGIN信号由下列布尔等式产生:
I-BIGIN=CRACK    &    ∧    STALL    &    ∧    HOLD
CRACK=REDADY    &    ∧    NONELEFT    &    ∧    ADONE
其中表示非信号,也即HOLD被读作为“非HOLD”信号
关于I-EFIRST和I-ELAST信号的布尔等式是:
I-EFIRST=CRACK    &    ∧    STALL    &    EINSTR
I-ELAST=I-EFIRST(∧MSK+(SIEE    EQ2)+BII)+(∧HOLD    &    MSK    &    ∧    EII    &    CRACK    &    ∧    STALL    &    NOTSTO    &    RSISE    EQ2)
信号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-INST    CO-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))+INCDEC
LB指令
LB=SO    &(I-INST(4-8)EQ05)
位操作指令(LBF、LBT、LBC、LBS)
BIT4=(I-INST(0-5)EQ0    22)&(I-INST(8)EQ    0)
基本的双操作数或科学计算指令
SDO=(I-INST(0-3)GT    8)&(I-INST(4-8)NEQ    2)
带有在线屏蔽字的基本指令:(SRM、NSAVE、NRSTR、SAVE、RSTR)
MASK=(I-INST(0)EQ    1)&(RLBP    NEQ)&(I-INST(4-8)EQ    015)+(I-INST(0-7)EQ    085)+(I-INST(0-7)EQ    08F)
科学计算用单字和双字操作数指令
SC=((I-INST(0-3)GT    8)&((I-INST(4-8)EQ    011)+(I-INST(4-8)EQ    013+(I-INST(4-8)EQ    018)+(I-INST(4-8)EQ    01A)))&    EII1    &    ∧    EII23    &    ∧    AS3EII45
使用M寄存器並且不停止流水线的双操作数指令
STM=(I-INST(0)EQ    1)&(RLBP    NEQ    0)&(I-INST(4-8)EQ    OE)
其中RLBP=I-INST(1-3)
乘法指令
MUL=(I-INST(0)EQ    1)&(RLBP    NEQ    0)&(I-INST(4-8)EQ    016)
除法指令
DIV=(I-INST(0)EQ    1)&(RLBP    NEQ    0)&(I-INST1(4-8)EQ    06)
修改测试寄存器M指令
MTM=(I-INST(0-3)GT    8)&(I-INST(4-8)EQ    0)如果指令包括直接操作数,则停止流水线操作的指令
(IMO)NEG,SSBP,CPL,CALL,CL,CLH,LBF,DEC,LBT,LBS,INC,LBC,STS,SDI,CAD(ALSO    LE)STM,STH,SRM,SWR,SWB,STR,STB,ARE    SO,DO
BSTORE=SO    &    ((I-INST(4-8)EQ    4)+(I-INST(4-8)EQ    6)+(I-INST(4-6)EQ    3)+(I-INST(4-7)EQ    OA)+(I-INST(4-7)EQ    8)+(I-INST(4-8)EQ    018)+(I    INST(4-8)EQ    01A)+(I-INST(4-7)EQ    OE))+BIT4+SDO    &((I-INST(5-7)EQ    7)+(I-INST(4-8)EQ    015)+(I-INST(4-6)EQ    7))
短值立即型指令
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)GT    8)&((I-INST(4-8)EQ019)+(I-INST(4-8)EQ    017)+(I-INST(4-8)EQ    01D)+(I-INST(4-8)EQ    01F))
LEV指令
LEV=SO    &(I-INST(4-8)EQ    01C)
INC和DEC指令
INCDEC=SO    &((I-INST(48)EQ    011)+(I-INST(4-8)EQ    015))
MLV或MLVK指令
MLV=I-INST(6-7)EQ3
扩充的整型单操作数指令
ESO=(I-INST(0-3)EQ    8)&(I-INST(4-8)NLT    018)&(I-INST(4-8)NEQ    01B)&(I-INST(4-8)NGT    01E)
使用溢出条件且不停止流水线的EII指令:KINC、KDEC,KNEC,KNEGB    INSTRUCTIONS
ESOV=ESO    &(I-INST(6-7)LT    3)&(I-INST(6-8)NEQ    1)
EII短值直接型指令
ESI=EBK    &(I-INST(8)EQ    1)
扩充的整型双操作数指令
EDD=(I-INST(0-3)GT8)&(I-INST(4-7)NLT4)
带有在线双字屏蔽的扩展的整型指令(EII)INSTR
EMSK=(I-INST(0)EQ    1)&(RLBP    NEQ    0)&(I-INST(4-8)EQ    OF)
其中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)EQ    1)&(RLBP    NEQ    0)&(I-INST(4-8)EQ    017)
KMUL=(I-INST(0)EQ    1)&(RLBP    NEQ    0)&(I-INST(4-8)EQ    01C)
KDIVP=(I-INST(0)EQ    1)&    RLBP    NEQ    0)&(I-INST(4-8)EQ    0IC)
KMUIP=(I-IXST(0)EQ    1)&(RLBP    NEQ    0)&(I-INST(4-8)EQ    01E)
EII1=I-INST(9-15)EQ    06C
EII23=I-INST(9-15)EQ    07C)
AS3EII45=I-INST(9-15)EQ    058
RAS=(I-INST(9-11)EQ    5)&(I-INST(12)EQ    0)&(I-INST(13-15)NEQ    0)
IMO=I-INST(9-15)EQ    070
KAS=(I-INST(23-28)EQ    01A)&    NC
ERAS=(I-INST(24-28)EQ    01A)&    NC
NC=I-INST(29-31)NEQO
II=EII1+EII23+AS3EII45

Claims (6)

1、数据处理系统中以流水线方式执行指令的装置,其中的指令是以连续方式送入该设备执行的,所述指令具有至少第一、第二和第三类型,该特征在于:
以连续方式执行指令部份的互相连接的第一(2-2)、第二(2-4)和第三(2-6)处理单元;
第一处理单元(2-2)接收顺序输入的指令,并有控制地将第二和第三类型指令送给第二和第三处理单元,它还包括一个指令译码器(2-210);
该指令译码器(2-210)接收第一单元收到的每条指令并且产生用以表示指令为三种类型之一的控制信号(I-ELAST、I-BEGIN、I-EFIRST);
第一处理单元(2-2)对表示指令是第一类型的上述控制信号反应,从而执行第一类型指令;
第二处理单元(2-4)对表示指令是第二类型的上述控制信号反应,从而接收并执行第二类型指令;
第二处理单元(2-4)对表示指令是第三类型的上述控制信号反应,从而接收并执行部份第三类型指令;
第三处理单元(2-6)对表示指令是第三类型的上述控制信号反应,从而接收并执行部份第一类型指令。
2、权利要求1的装置,其中第三处理单元部份执行第三类型指令是跟在第二处理单元部份执行操作之后的。
3、权利要求2的装置,其中第三处理单元的部份执行操作包括执行第三类型指令操作数所要求的一个功能,该指令是根据第二处理单元部份执行操作产生的地址在系统中的存贮器中读出的。
4、权利要求2的装置,其中第一类型指令是一个无条件转移指令。
5、权利要求1的装置,特征在于第二处理单元在完成了第二类型指令的操作之后产生一个第一信号(A-DONE)。
6、权利要求5的装置,特征是指令译码器响应上述第一信号,产生并传送出下一指令系列的控制信号。
CN89109392A 1988-12-19 1989-12-19 指令执行高效率生产线方法及装置 Expired - Fee Related CN1026037C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US28658088A 1988-12-19 1988-12-19
US286,580 1988-12-19

Publications (2)

Publication Number Publication Date
CN1044354A CN1044354A (zh) 1990-08-01
CN1026037C true CN1026037C (zh) 1994-09-28

Family

ID=23099255

Family Applications (1)

Application Number Title Priority Date Filing Date
CN89109392A Expired - Fee Related CN1026037C (zh) 1988-12-19 1989-12-19 指令执行高效率生产线方法及装置

Country Status (15)

Country Link
EP (1) EP0378816B1 (zh)
JP (1) JPH0776922B2 (zh)
KR (1) KR940000027B1 (zh)
CN (1) CN1026037C (zh)
AU (1) AU615364B2 (zh)
BR (1) BR8906579A (zh)
CA (1) CA2005907C (zh)
DE (1) DE68928300T2 (zh)
DK (1) DK648189A (zh)
FI (1) FI896044A0 (zh)
IL (1) IL92605A0 (zh)
MX (1) MX171941B (zh)
NO (1) NO895068L (zh)
NZ (1) NZ231766A (zh)
ZA (1) ZA899554B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
JP3510729B2 (ja) * 1996-02-29 2004-03-29 三洋電機株式会社 命令実行方法および命令実行装置
FR2770660B1 (fr) 1997-11-03 2000-08-25 Inside Technologies Microprocesseur, notamment pour carte a puce
FR2770662B1 (fr) * 1997-11-03 1999-12-10 Inside Technologies Microprocesseur pipeline a saut conditionnel en un cycle d'horloge
US8082467B2 (en) 2009-12-23 2011-12-20 International Business Machines Corporation Triggering workaround capabilities based on events active in a processor pipeline
US9104399B2 (en) 2009-12-23 2015-08-11 International Business Machines Corporation Dual issuing of complex instruction set instructions
US9135005B2 (en) 2010-01-28 2015-09-15 International Business Machines Corporation History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
US8495341B2 (en) 2010-02-17 2013-07-23 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands
US8938605B2 (en) 2010-03-05 2015-01-20 International Business Machines Corporation Instruction cracking based on machine state
US8464030B2 (en) 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US8645669B2 (en) 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4598365A (en) * 1983-04-01 1986-07-01 Honeywell Information Systems Inc. Pipelined decimal character execution unit
CA1250667A (en) * 1985-04-15 1989-02-28 Larry D. Larsen Branch control in a three phase pipelined signal processor
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
JPS6395539A (ja) * 1986-10-09 1988-04-26 Nec Corp パイプライン処理方式
JP2695157B2 (ja) * 1986-12-29 1997-12-24 松下電器産業株式会社 可変パイプラインプロセッサ
JPS63197232A (ja) * 1987-02-12 1988-08-16 Toshiba Corp マイクロプロセツサ

Also Published As

Publication number Publication date
NZ231766A (en) 1992-01-29
DK648189A (da) 1990-06-20
NO895068D0 (no) 1989-12-15
DE68928300D1 (de) 1997-10-09
BR8906579A (pt) 1990-09-04
JPH0776922B2 (ja) 1995-08-16
CN1044354A (zh) 1990-08-01
JPH02224124A (ja) 1990-09-06
AU4670489A (en) 1990-06-21
AU615364B2 (en) 1991-09-26
IL92605A0 (en) 1990-08-31
MX171941B (es) 1993-11-24
EP0378816B1 (en) 1997-09-03
KR900010587A (ko) 1990-07-09
KR940000027B1 (ko) 1994-01-05
FI896044A0 (fi) 1989-12-18
ZA899554B (en) 1990-10-31
DE68928300T2 (de) 1998-04-02
EP0378816A3 (en) 1992-05-06
EP0378816A2 (en) 1990-07-25
CA2005907A1 (en) 1990-06-19
DK648189D0 (da) 1989-12-19
NO895068L (no) 1990-06-20
CA2005907C (en) 1994-05-31

Similar Documents

Publication Publication Date Title
CN100342326C (zh) 多线程处理器和操作处理器的方法
CN1185592C (zh) 并行处理器结构
CN1205553C (zh) 分优先级访问外部装置的设备
CN1026037C (zh) 指令执行高效率生产线方法及装置
CN1230759C (zh) 进行最佳数据传送的多总线信息处理系统的总线-总线桥
CN1121014C (zh) 具有risc结构的八位微控制器
CN100340975C (zh) 计算机系统、编译器装置以及编译方法
CN1147794C (zh) 具有静态转移预测支持的去耦取指令-执行引擎
CN1912926A (zh) 可中断图形处理单元处理多个程序的方法和图形处理单元
CN101051301A (zh) 用于操作计算机处理器阵列的方法和装置
CN1916962A (zh) 存储和回存状态上下文在图形处理单元的方法和装置
CN1629801A (zh) 产生早期指令结果的管线式微处理器、装置以及方法
CN1916961A (zh) 可中断图形处理单元及其控制方法
CN1383511A (zh) 通过重排序存储器请求提高总线利用率的存储器控制器
CN1399739A (zh) 并行处理器结构的sram控制器
CN101034381A (zh) 多主机系统和数据传送系统
CN1632877A (zh) 可变延滞时间堆栈快取存储器及提供资料的方法
CN1869952A (zh) 指令执行设备、调试方法、调试设备以及调试程序
CN1278226C (zh) 模拟装置、模拟方法
CN1333891A (zh) 利用页标志寄存器跟踪存储器装置内物理页的状态
CN1967506A (zh) 高速缓存存储器处理器中的合并入口
CN1035190A (zh) 基于操作数长度和对位的微码转移
CN1311357C (zh) 通用资源访问控制器
CN1068445C (zh) 指令调度方法和寄存器竞争检查方法
CN1821953A (zh) 可变群组组合分支目标地址快取传送每一快取列多目标地址

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee