CN100538626C - 利用跳转指令清除冒险的方法及设备 - Google Patents

利用跳转指令清除冒险的方法及设备 Download PDF

Info

Publication number
CN100538626C
CN100538626C CNB038211904A CN03821190A CN100538626C CN 100538626 C CN100538626 C CN 100538626C CN B038211904 A CNB038211904 A CN B038211904A CN 03821190 A CN03821190 A CN 03821190A CN 100538626 C CN100538626 C CN 100538626C
Authority
CN
China
Prior art keywords
instruction
risk
pipeline microprocessor
jump
logic
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
CNB038211904A
Other languages
English (en)
Other versions
CN1692331A (zh
Inventor
N·G·耶佩森
M·G·乌勒
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.)
Imagination Technologies Ltd
MIPS Tech LLC
Original Assignee
MIPS Technologies 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 MIPS Technologies Inc filed Critical MIPS Technologies Inc
Publication of CN1692331A publication Critical patent/CN1692331A/zh
Application granted granted Critical
Publication of CN100538626C publication Critical patent/CN100538626C/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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

描述了用于在流水线微处理器中采用跳转指令覆盖冒险清除的方法及设备。该设备包括检测跳转指令指定作为跳转操作的组成部分清除冒险的时间的冒险逻辑。如果要清除冒险,则冒险逻辑对跳转指令禁用转移预测,从而使跳转指令沿流水线继续进行,直到它最终被解决为止,以及冲洗跳转指令之后的流水线。对跳转指令禁用转移预测有效地清除在跳转指令之前的所有执行和/或指令冒险。或者,冒险逻辑使发出控制逻辑在n个周期停止跳转指令,直到所有冒险被清除为止。可提供状态跟踪逻辑以确定造成冒险的任何指令是否正在流水线中执行。如果是这样,则冒险逻辑正常执行。如果不是,则状态跟踪逻辑禁用冒险逻辑的作用。

Description

利用跳转指令清除冒险的方法及设备
发明领域
一般来说,本发明涉及计算机体系结构的领域,更具体来说,涉及用于通过采用跳转指令覆盖冒险清除来管理流水线体系结构内指令冒险的方法及设备。
发明背景
参照图1,表示早期微处理器100的四级单完成指令流水线的框图。流水线级包括:1)取;2)算术运算(ALU);3)存储器存取;以及4)回写。在操作中,微处理器在周期1中取指令用于执行,在周期2中执行该指令,在周期3中执行对存储器的读或写,以及在周期4将ALU运算(从周期2)或者存储器读取(从周期3)的结果写入其寄存器文件。如果每个流水线级需要一个处理器时钟来完成其功能,则在四级流水线中,指令需要四个时钟来完成执行。在本例中,流水线的执行速率为每四个时钟周期一个指令。
微处理器设计领域的技术人员会知道,图1的单完成指令流水线的问题之一在于,在任何给定时钟周期,只有流水线级之一被用于指令执行。例如,在时钟周期1,取级正忙于取指令用于执行,但ALU、存储器和写级则基本上空闲。空闲处理级被认为是低效的,因此在处理系统中是不希望的。
对上述空闲的矫正如图2所示,下面针对这一方面进行说明。图2包括与图1所示相似的四级流水线微处理器200。但是,在微处理器200中,不是在可以取下一条指令之前等待一条指令的完成(四个时钟周期),而是每个时钟周期取一条新指令。在此四级流水线中,四条指令同时处于执行过程中,流水线的每级一个。虽然第一指令完成仍然需要四个时钟周期,但此后每个时钟周期均完成一条新指令。因此,以上图1所示的空闲已经被消除,以及整体处理效率得到提高。
但是,在图2的并行流水线中,当某条指令在它可开始之前依靠前一条指令的完成或解决时,产生一个问题。这个问题如图3所示,下面针对这个方面进行说明。
图3说明如图2所示的并行流水线微处理器300。但是,在此图中,指令2在可开始之前依靠指令1的解决。例如,假定指令1为LOAD REG1,MEM的形式。即,指令1使得来自存储单元MEM的值从存储器中取出,并存储在微处理器300的寄存器REG1中。这时,假定指令2为ADD REG1,2的形式。即,指令2将REG1寄存器的内容与数值2相加,并将结果存储在REG1寄存器中。在四级流水线300中,指令1在时钟周期3结束之前未取回存储单元MEM的内容。而且,存储单元MEM的取回内容在时钟周期4结束之前没有存储到寄存器REG1。如果允许指令2在时钟周期3进入流水线的ALU级,则要被加入值2的REG1寄存器的内容尚未采用来自MEM的内容进行更新。因此,加法的结果或者是未知的或者完全不正确。在本例中,确保采用寄存器REG1的正确内容执行指令2的唯一方法是将指令2的执行保持或停止至少两个时钟周期。
图3中所示的只是称作流水线冒险的情况的一个实例。一般来说,有两种流水线冒险:1)执行冒险;以及2)指令冒险。执行冒险是执行一条指令造成的并通过执行另一条指令所看到的冒险,如图3所示。指令冒险是执行一条指令造成的并通过另一条指令的取指令所看到的冒险。例如,第一指令可能更新TLB表中的TLB条目,以及第二指令将采用更新的TLB条目来取指令。如果第二指令试图在更新之前从TLB条目中取指令,则会提取不正确的指令。在任一种情况下,为了确保所有指令在流水线微处理器中正确执行,必须保证依靠前一条指令的解决的指令至少在它所依靠的指令完成之前被停止或延迟。用来确保相关指令的正确执行的方法称作冒险保护或冒险清除。
冒险保护通常以硬件或者以软件方式执行。当冒险保护是以硬件方式提供时,微处理器的一部分专门用于跟踪要执行的每条指令,以便检测指令相关性。当检测到指令相关性时,硬件对相关指令产生互锁,从而停止相关指令,直到它所依靠的指令完成执行为止。设计微处理器来结合硬件冒险保护的一个益处在于,使软件程序员免于与指令执行相关联的错综复杂性。也就是说,程序员不必担心在开始第二相关指令之前让第一指令得到解决需要多少级。她/他可以只按照执行所需的顺序编写指令,并且相信微处理器中的冒险硬件将确保正确执行。以硬件方式提供冒险保护的一个不利之处在于,这种硬件对微处理器增加了大量复杂度,并且影响微处理器的设计成本和最终成本。另外,在冒险硬件中必须考虑体系结构中影响执行顺序、流水线中的级数或执行定时的设计变化,从而使冒险硬件中的设计变化是必需的。对于许多类型的微处理器,与通过硬件提供冒险保护相关的附加复杂度被认为是不适当的。对于这些微处理器,冒险保护通常经由软件提供。
软件冒险保护将防止冒险的负担放到软件程序员或者软件程序员所用的编译程序的设计人员身上。为了说明软件程序员如何解决图3所示的冒险,考虑以下程序:
LOAD REG1,MEM
     NOP
     NOP
ADD REG1,2
了解微处理器300的流水线结构的程序员理解,指令2依靠指令1的解决,以及在指令1与指令2之间要解决此相关性,需要两个附加的时钟周期。因此,她/他将两个NOP(空操作)指令插入指令1与指令2之间。或者,如果程序员采用专门为微处理器300设计的编译程序,则她/他可相信编译程序会检测指令1与指令2之间的相关性,以及会在这两条指令之间插入必要数量的NOP指令。从微处理器300的角度来看,仅仅是每个时钟周期取一条指令,并将所取指令沿流水线传递下去以便执行。微处理器300不需要任何附加硬件来解决冒险,但仍然防止了冒险。
对于软件冒险清除的一个问题在于,它将了解特定微处理器实现中指令执行的细微差别的负担放到程序员或者放到微处理器的编译程序的设计人员身上。虽然这种负担在现代微处理器领域内普遍存在,但仍然是一个明显的问题。程序员不仅必须了解她/他正在为之编码的处理器的实现,她/他还必须了解多少延迟与其它指令所依靠的每个指令关联。在深层流水线微处理器(12级或更多级)中,程序员必须在相关指令之间插入1至10个NOP,这取决于相关指令在程序中分隔的距离,以及取决于第一指令在它被解决之前在流水线中必须继续进行多远。为了对深层流水线微处理器正确编码,程序员必须非常精通处理器的实现冒险。
对于采用软件冒险清除的另一个问题在于,一旦对微处理器开发了程序,该程序未经大量重新编写便在以后数代微处理器上工作是不可能的。例如,如果微处理器从具有五级流水线发展到具有十二级流水线,则用于五级流水线的任何冒险清除方法将在十二级流水线中正确工作是不可能的。即使五级和十二级流水线的软件体系结构(即指令)相同,情况也是这样。
本发明的发明人非常清楚,需要一种冒险清除机制,它可由程序员或编译程序的设计人员使用,可在多代微处理器体系结构上实现,消除了对于数代处理器之间重新编写冒险清除代码的需要,以及减轻了程序员理解特定微处理器冒险的细微差别的负担。
还需要一种方法及设备,它允许程序员指定应当清除冒险的时间,而不考虑冒险与相关指令之间的级数。
还需要一种用于冒险清除的方法及设备,它可与硬件冒险跟踪结合使用。
概述
本发明提供用于采用跳转操作覆盖冒险清除的方法及设备。
在一个方面,本发明提供一种流水线微处理器,用于执行与执行跳转结合来清除指令冒险的指令。流水线微处理器包括发出控制以及具有冒险障碍跟踪逻辑的跳转。发出控制发出由流水线微处理器执行的指令,并且具有在接收到停止指示信号时在n个周期停止发出指令的能力。具有冒险障碍跟踪逻辑的跳转耦合到发出控制,以及检测何时将执行与执行跳转结合来清除指令冒险的指令。当情况是这样时,它向发出控制提供停止指示信号。
在另一个方面,本发明提供一种具有冒险清除逻辑的流水线微处理器。流水线微处理器包括转移预测逻辑以及具有冒险障碍跟踪逻辑的跳转。转移预测逻辑预测使流水线微处理器在跳转指令完成执行之前跳转到预测目标地址的转移目标地址。具有冒险障碍跟踪逻辑的跳转耦合到转移预测逻辑,以及检测跳转指令表明要清除冒险的时间。当跳转指令表明要清除冒险时,跟踪逻辑发信号通知转移预测逻辑禁用跳转指令的转移预测。
在另一个方面,以上两种设备还包括状态变化跟踪逻辑,以便确定产生指令冒险的指令是否正在流水线微处理器中执行。如果没有任何产生指令冒险的指令正执行,则冒险跟踪逻辑的作用被取消。
在另一个方面,本发明提供一种在流水线微处理器上执行的具有冒险障碍指令的跳转。具有冒险障碍指令的跳转包括操作码字段、寄存器字段以及冒险障碍提示字段。操作码字段指定到目标地址的跳转操作。寄存器字段指定包含用来确定目标地址的值的寄存器。冒险障碍提示字段指明作为跳转指令执行的组成部分,指令冒险将被清除。
在又一个方面,本发明提供一种与执行跳转操作结合来清除流水线微处理器中的指令冒险的方法。该方法包括:确定是否要执行跳转操作;如果是这样,则确定跳转操作是否指定是否要清除指令冒险;以及如果是这样,则作为跳转操作的组成部分清除指令冒险。该方法可包括检测是否造成指令冒险的任何指令正在流水线微处理器中执行,如果不是,则取消清除操作。
在另一个方面,本发明提供一种与计算装置配合使用的计算机程序产品。计算机程序产品包括计算机可用媒体,其中具有包含在媒体中的计算机可读程序代码,使得提供具有冒险清除机制的流水线微处理器。计算机可读程序代码包括:第一程序代码,提供用于发出由流水线微处理器执行的指令的发出控制逻辑,发出控制逻辑在接收到停止指示信号时在n个周期停止发出指令;第二程序代码,提供具有冒险障碍跟踪逻辑的跳转,该跳转耦合到发出控制,用于检测何时要执行与执行跳转结合来清除指令冒险的指令,以及在这时,用于向发出控制提供停止指示信号。
在又一个方面,本发明提供一种包含在传输媒体中的计算机数据信号,其中包括计算机可读程序代码,用于提供具有冒险清除逻辑的流水线微处理器。程序代码包括:第一程序代码,用于提供预测目标地址以及在跳转指令完成执行之前使流水线微处理器跳转到预测目标地址的转移预测逻辑;第二程序代码,用于提供具有冒险障碍跟踪逻辑的跳转,该跳转耦合到转移预测逻辑,用于检测跳转指令表明要清除冒险的时间,以及当跳转指令表明要清除冒险时,用于发信号通知转移预测逻辑禁用跳转指令的转移预测。
通过阅读说明及附图的其余部分,本发明的其它特征和优点将变得非常明显。
附图概述
图1是现有技术的四级流水线微处理器的框图。
图2是现有技术的并行流水线微处理器的框图。
图3是现有技术的并行流水线微处理器的框图,其中正执行具有指令冒险的指令序列。
图4是列出MIPS32体系结构中的指令冒险的表格。
图5是列出MIPS32体系结构中的指令冒险的表格。
图6是MPS32体系结构中的跳转指令,它由冒险清除指示符覆盖。
图7是根据本发明的一个实施例、结合了冒险清除机制的流水线微处理器的框图。
图8是流程图,说明根据本发明、采用冒险清除覆盖跳转指令的方法。
图9是根据本发明的一个备选实施例、结合了冒险清除机制的流水线微处理器的框图。
图10是MIPS32体系结构中的另一个跳转指令,它由冒险清除指示符覆盖。
详细说明
虽然以下所述的发明在许多不同的流水线微处理器中得到应用,但为了更好地理解本概念,将以它在MIPS32体系结构(MIPSTechnologies,Inc.of Mountain View,CA)中实现来具体描述。更具体来说,本发明将明确的冒险清除指令加入MIPS32体系结构。冒险清除指令覆盖在现有调用和返回指令之上,同时具体指明应当清除冒险的时间。微处理器中的执行逻辑检测调用和返回涉及到冒险的时间,并在注意到这种情况时采取动作以有效地清除冒险。作为处理器的体系结构的组成部分的指令在多代体系结构中实行冒险清除,而不需要程序员理解处理器对于冒险的细微差别,以及不需要插入预定数量的NOP。
在提供新的冒险清除指令之前,首先提供对于MIPS32体系结构中出现的冒险类型的概述。
执行冒险
执行冒险是执行一条指令造成的并通过另一条指令的执行所看到的那些冒险。图4提供MIPS32体系结构中的执行冒险的列表。“生产商”是程序中的一条指令,它在执行时,对以下指令-“消费者”造成冒险。关于所列出的每个指令的完整描述,读者可参照从www.mips.com可获取的“MIPS32 Architecture for ProgrammersVolume II:The MIPS32 Instruction Set”。本领域的技术人员会理解,大部分执行冒险是在进行至/自协处理器0的移动时造成的(MIPS处理器支持虚拟存储系统的部分处理异常情况等)。
指令冒险
指令冒险是执行一条指令造成的并通过另一条指令的取指令所看到的冒险。图5提供MIPS32体系结构中的指令冒险的列表。这些指令的描述也可见于“MIPS32 Architecture for Programmers Volume II:The MIPS32 Instruction Set”。
冒险障碍跳转指令
在MIPS32体系结构微处理器中,一直要求程序员在生产商指令与消费者指令之间插入例如图4和图5中列出的那些NOP(SSNOP)指令,以便克服这些指令之间的冒险。另外,如以上“背景”中所述,所需的NOP的数量取决于微处理器中的级数、“生产商”与“消费者”之间的间隔、以及其中解决“生产商”指令的级。
下面参照图6,引入第一新指令JALR.HB 600,它采用跳转指令覆盖冒险清除指示符。本领域的技术人员会理解,为了本发明,转移和跳转在这种指令的含义方面是等效的。现在描述这个新32位指令。
采用前一个JALR指令的提示字段的位10对JALR.HB指令编码。选择这种编码以便与现有MIPS实现兼容,包括许多早于MIPS32体系结构的实现。JALR.HB指令的目的是执行对寄存器中的指令地址的过程调用,以及作为过程调用的组成部分清除所有执行和指令冒险。指令的格式为JALR.HBrs(暗含rd=31),或者JALR.HBrd,rs。当这个指令执行时,返回地址(return_addr)存储在通用寄存器rd中,以及rs寄存器中指定的值存储到程序计数器(PC)中。在MIPS32体系结构中,返回地址为紧接JALR.HB指令的第二指令的地址。另外,对于比特位置10中的“1”值,JALR.HB指令还清除所有执行和指令冒险。
更具体来说,JALR.HB指令实现一种软件障碍,它解决了协处理器0状态变化造成的所有执行和指令冒险。从JALR.HB指令跳转到的目标地址处取指令和指令解码开始,看到这种障碍的作用。
JALR.HB指令以及它对冒险清除的作用可通过许多方式来实现。以下论述提供对本发明的两个实施例的描述。在一个实施例中,处理器在看到JALR.HB指令时,在n个周期停止发出进一步的指令,直到所有先前协处理器0指令已经完成执行,包括影响紧接JALR.HB之后的指令的协处理器0状态的更新。处理器被停止的周期数取决于结合了本发明的流水线的长度。在第二实施例中,冒险指示符用来暂时禁用转移预测机制、取指令等,否则会改变程序顺序执行。也就是说,冒险指示符使处理器先行放弃从与跳转关联的预测目标地址取指令。相反,处理器继续它的取指令,最终在JALR.HB指令完成执行时冲洗流水线。
现在参照图7,表示结合了冒险清除发明的各方面的流水线微处理器700的框图。处理器700包括N深度流水线,其中包括:取级702,用于取指令;解码级704,用于对所取指令解码;ALU级706,用于执行逻辑和算术运算;以及回写级708,用于把结果写入存储器或者写入处理器700中的寄存器。本领域的技术人员会理解,可存在其它级,它们在取级702之前,或者分别在取、解码或ALU级702、704、706之后。处理器700中所示的各级只是表示现代深层流水线微处理器中的一些级,因为它们提供了更好地理解本发明的上下文。
在一个实施例中,冒险清除逻辑710设置在处理器700的取级702内。其它实施例可能将冒险清除逻辑710设置在处理器700的其它级,例如在取级702之后。冒险清除逻辑710包括:具有冒险障碍跟踪逻辑的跳转712;状态变化跟踪逻辑714;以及发出控制716。冒险清除逻辑710的操作参照以下指令序列、尤其是该序列的最后两个指令来描述:
 
操作码 操作数 注释
mfc0 vo,C0_EntryHi 读取当前ASID
li v1,-M_EntryHiASID 获取字段的负掩码
and vo,vo,v1 清除当前ASID值
or vo,vo,a0 新ASID值中的OR
mtc0 vo,C0_EntryHi 用新ASID改写EntryHi
jalr.hb a1 调用例程,清除冒险
nop
上述序列用来修改协处理器0中的ASID,然后调用已建立新映射的例程。新ASID存储在寄存器a0中,并用于对要调用的例程寻址。
在新ASID值替换现有ASID值之后,指令MTC0被提取到处理器700的取级702。MTC0指令将ASID的新值移入协处理器0寄存器。当MTC0指令在取级702中时,状态变化跟踪逻辑714检测MTC0指令,以及注意到,这个指令属于将通过会对消费指令造成冒险的方式改变处理器700的状态的类型。级变化跟踪逻辑714理解让MTC0指令完成执行需要多少周期,并监测后续时钟周期以“跟踪”MTC0指令,直到它可将该指令标记为完成为止。本领域的技术人员会理解,许多备选方案可用来通过处理器700的N级流水线检测及跟踪生产商“类型”指令。
在第二时钟周期中,指令MTC0进入流水线中的下一级,以及取指令JALR.HB。这时,具有冒险障碍跟踪逻辑的跳转712检测这个指令。具有冒险障碍跟踪逻辑的跳转耦合到状态变化跟踪逻辑,以便确定这时是否检测到JALR.HB指令;将会影响处理器700的状态的一个或多个指令仍然在流水线中。如果是这样,则具有冒险障碍跟踪逻辑的跳转712(或者状态变化跟踪逻辑714)使发出控制逻辑716停止JALR.HB指令,直到改变处理器700的状态的先前指令已经完成为止。当这些指令完成时,发出控制716释放JALR.HB指令,并允许它与后续指令一起沿流水线继续进行。如果具有冒险障碍跟踪逻辑的跳转712发信号通知发出控制逻辑716,则通过利用信号线718向所述发出控制提供停止指示信号来进行。发出控制逻辑716则在n个周期停止发出JALR.HB指令。如果状态变化跟踪逻辑714发信号通知发出控制716,则它在信号线720上进行。
在一个实施例中,发出控制716在接收到停止指示信号时,在n个周期自动停止JALR.HB指令。在一个备选实施例中,发出控制716在接收到停止指示信号718以及通过信号线720来自状态变化跟踪逻辑的信号时,只停止JALR.HB指令。这样,当状态变化跟踪逻辑714确定已经清除所有冒险时,它停止向发出控制716发信号通知,从而允许JALR.HB指令继续进行。在又一个实施例中,当已经清除所有冒险创建指令时,来自状态变化跟踪逻辑的信号用来禁用来自冒险障碍跟踪逻辑712的停止指示信号的作用。
应当理解,没有JALR.HB指令中的清除任何未解决冒险的指示,则空操作之后的指令、大概是由JALR.HB指令跳转到的序列中的第一指令将会不正确地执行。或者,N个NOP必须设置在MTC0指令与JALR指令之间(或者在新例程的前几个指令空间中),以便确保正确执行。但是,通过采用跳转指令覆盖清除冒险指示符,本发明允许程序员确保冒险被清除,而不需要具体了解处理器700中的流水线级、或者MTC0指令造成的特定冒险。
现在参照图8,表示一个流程图,说明根据本发明清除冒险的方法。流程在框802开始,并进入判定框804。
在判定框804,确定是否要执行跳转指令。如果不是,则流程进入框814,在其中,允许指令沿流水线继续执行。已经执行指令时,流程进入框816。在框816,指令已经完成执行。但是,如果要执行跳转指令,则流程进入判定框806。
在判定框806,确定跳转指令是否包括冒险障碍指示符。如果没有,则流程进入框814,在其中,允许跳转指令沿流水线继续执行,如上所述。但是,如果跳转指令确实包含冒险障碍指示符,则流程进入判定框808。
在判定框808,确定在跳转指令之前的任何冒险产生指令是否仍然在处理器中执行。如果不是,则流程进入框814,其中,允许具有冒险指示符的跳转指令沿流水线继续执行。但是,如果任何冒险产生指令仍然在流水线中执行,则流程进入框810。
在框810,在一个时钟周期停止具有冒险指示符的跳转指令。然后,流程进入判定框812。注意:框810可在与参照以下图9所述的实施例结合使用时禁用转移预测。
在判定框812,确定任何冒险产生指令是否仍然在处理器中执行。如果不是,则流程进入框814,在其中,允许具有冒险指示符的跳转指令沿流水线继续执行。但是,如果任何冒险产生指令仍然在流水线中执行,则流程回到框810。流程在框810与判定框812之间继续进行,直到流水线中的所有冒险产生指令已经完成执行。一旦所有冒险产生指令已经完成执行,则允许具有冒险指示符的跳转指令沿流水线继续进行。
在一个备选实施例中,不是停止具有冒险指示符的跳转指令直到所有冒险产生指令已经完成执行,本发明人认识到,如果它们只允许跳转指令沿流水线继续进行,则当处理器实际上进行该指令所指定的跳转时,作为跳转的组成部分,跳转之后的其它所有级都将被冲洗,并且跳转之后的指令的执行将开始。如果跳转是在流水线的后续级之一中进行,则到它进行时,所有冒险产生指令都将已经完成执行。另外,由于跳转之后的所有指令都因跳转而被冲洗,因此没有任何应当执行的指令会有时间使用不正确状态开始执行。
但是,这种方法存在的一个问题是,在跳转指令实际执行之前的很长时间,大部分现代处理器、尤其是深度流水线微处理器都采用转移预测机制来预测跳转的目标地址以及从预测目标地址提取并执行指令。这种转移预测机制的论述超出了本论述的范围。但是,应当理解,这些机制设计成消除与在新目标地址取指令之前冲洗流水线相关的延迟。但是,如果这些转移预测机制与具有冒险指示符的跳转指令结合使用,则不会出现预期结果(流水线的冲洗)。因此,在具有冒险指示符的跳转指令的执行过程中,本发明的发明人在本发明的跳转指令中采用冒险指示符有效地禁用与预测目标地址相关的取指令。这样一种实施例如图9所示,下面针对这个方面进行说明。
图9表示与参照图7所述相似的流水线微处理器900。相似的数字具有相同参考,百位由9取代。现在采用以上参照图7提供的指令序列来提供对处理器900的操作的描述。
在第一时钟周期中,取MTC0指令。状态变化跟踪逻辑914检测MTC0指令是否属于可能对后续指令产生冒险的类型。
在第二时钟周期中,取JALR.HB指令。具有冒险障碍跟踪逻辑的跳转912把这个指令检测为也希望清除任何先前冒险的跳转指令。如果跳转指令没有表明要清除冒险,则转移预测逻辑916将使处理器900的程序计数器开始从预测目标地址取指令。这样,处理器900的流水线中的跳转指令之后的指令是与预测目标地址关联的新指令流,而不是存储器中按顺序排列在跳转指令之后的指令。如上所述,这通常是有益的。
但是,如果程序员希望确保作为跳转的组成部分清除冒险,则她/他采用具有冒险清除指示符的跳转指令。具有冒险障碍跟踪逻辑的跳转912检测这个需求,以及如果状态变化跟踪逻辑914表明冒险产生指令仍然正在执行,则对当前跳转禁用转移预测逻辑916。然后,允许该跳转沿流水线继续进行,之后跟随当跳转执行时最终将从管道中冲洗出去的指令。另外,如上所述,到跳转最后执行、且流水线被冲洗时,将已经清除MTC0指令造成的所有冒险。
在这一点上,本领域的技术人员应当理解,如参照图7-9所述的本发明不需要采用状态变化跟踪逻辑714、914。相反,具有冒险障碍跟踪的跳转712、912可单独指定N个周期的停止(参照图7),或者可禁用转移预测916(参照图9),而不管先前指令是否造成冒险。也就是说,在没有实现状态变化跟踪逻辑的情况下,具有冒险障碍跟踪逻辑的跳转将使发出控制停止n个周期,或者使转移预测对当前跳转指令禁用,而不考虑冒险当前是否在处理器的流水线中。这样一种实施例将简化本发明的实现,以及不需要与冒险产生指令的跟踪相关的硬件。但是,状态变化跟踪逻辑714、914的应用使本发明优化为仅在冒险产生指令正在执行时才产生作用。否则,冒险障碍指示符仅象没有冒险障碍指示符的跳转指令一样执行。
现在参照图10,表示采用跳转指令覆盖冒险清除的附加指令JR.HB的框图1000。JR.HB指令的形式为JR.HBrs,执行到寄存器rs中指定的指令地址的转移,并清除所有执行和指令冒险。JR.HB指令完全和上述JALR.HB指令一样执行。但是,不是自动指定返回链接地址(如JALR.HB指令中那样),而是为程序员提供了采用另一个JR.HB指令来指定他自己的返回地址的选择。
以上参照图4-10的描述已经说明了备选实施例以及用于采用跳转操作覆盖冒险清除指示符的方法。虽然已经详细描述了本发明及其目的、特征和优点,但本发明还包含其它实施例。除了本发明采用硬件的实现之外,本发明还可通过放置在配置成存储代码的计算机可用(例如可读)媒体中的计算机可读程序代码(例如软件)来实施。代码使本文所公开的本发明的功能、制造、建模、模拟和/或测试得以实现。例如,这可通过采用通用编程语言(如C、C++等)、GDSII、包括VerilogHDL、VHDL、AHDL(Altera硬件描述语言)等硬件描述语言(HDL)、或者本领域可得到的其它数据库、编程和/或电路(即原理图)捕捉工具的形式的计算机可读程序代码来实现。代码可放置在任何已知的计算机可用媒体中,其中包括半导体存储器、磁盘、光盘(例如CD-ROM、DVD-ROM等),以及作为计算机数据信号包含在计算机可用(如可读)传输媒体(例如载波或其它任何媒体,包括基于数字、光或模拟的媒体)中。因此,代码可通过通信网络、包括因特网和内联网传送。应当理解,以上所述的本发明所实现的功能和/或所提供的结构可通过以代码(例如HDL、GDSII等)实施的处理器来表示,以及可传送给作为集成电路制造的一部分的硬件。另外,本发明可作为硬件和代码的组合来实施。
另外,本领域的技术人员会理解,图7-9所示的原理框图虽然表示为耦合到微处理器的取级,但也可共同设置在微处理器的另一级中,或者可被单独设置在不同的处理级。也就是说,转移预测逻辑可位于处理器的取级,而具有冒险障碍跟踪的跳转则可位于处理器的解码级。重要的是,具有冒险障碍跟踪逻辑的跳转能够实现作为跳转操作的组成部分的冒险清除的功能性,如以上所述。
最后,本领域的技术人员应当知道,可以方便地使用所公开的概念及特定实施例作为设计或修改用于实现本发明的相同目的的其它结构的基础,而没有背离所附权利要求定义的本发明的精神和范围。

Claims (34)

1.一种流水线微处理器,用于执行与执行跳转结合来清除指令冒险的指令,所述流水线微处理器包括:
发出控制单元,用于发出由所述流水线微处理器执行的指令,所述发出控制单元具有在接收到停止指示信号时在n个周期停止发出指令的能力;以及
具有冒险障碍跟踪逻辑的跳转单元,耦合到所述发出控制单元,用于检测何时将执行与执行跳转结合来清除指令冒险的指令,以及在这样的时候,用于向所述发出控制单元提供所述停止指示信号;
所述具有冒险障碍跟踪逻辑的跳转单元区分不清除指令冒险的跳转指令以及与执行跳转结合来清除指令冒险的指令。
2.如权利要求1所述的流水线微处理器,其特征在于,通过检测何时要执行与执行跳转结合来清除指令冒险的所述指令,以及在n个周期停止发出所述指令,清除所述流水线微处理器中的所有指令冒险。
3.如权利要求2所述的流水线微处理器,其特征在于,所述指令冒险在消费指令要求来自造成冒险的生产指令的结果的时间之前被清除。
4.如权利要求1所述的流水线微处理器,其特征在于,所述指令冒险是通过生产商指令的执行造成的并且通过消费者指令的执行看到的冒险。
5.如权利要求1所述的流水线微处理器,其特征在于,由所述发出控制单元停止的n个周期的数量取决于所述流水线微处理器中清除所有指令冒险所需的周期数量。
6.如权利要求1所述的流水线微处理器,其特征在于,由所述发出控制单元停止的n个周期的数量在所述发出控制单元中预定义。
7.如权利要求1所述的流水线微处理器,其特征在于,与执行跳转结合来清除指令冒险的所述跳转指令包括用于指明是否要清除指令冒险的提示字段。
8.如权利要求1所述的流水线微处理器,其特征在于还包括:
状态变化跟踪逻辑,耦合到所述发出控制单元,用于检测由所述流水线微处理器执行的指令何时属于造成指令冒险的类型。
9.如权利要求8所述的流水线微处理器,其特征在于,所述状态变化跟踪逻辑跟踪被检测为造成指令冒险的类型的指令的进程。
10.如权利要求8所述的流水线微处理器,其特征在于,所述状态变化跟踪逻辑当作为造成指令冒险的类型的指令正在所述流水线微处理器中执行时向所述发出控制单元提供信号。
11.如权利要求10所述的流水线微处理器,其特征在于,所述发出控制单元在它接收到来自所述状态变化跟踪逻辑的所述信号以及来自所述具有冒险障碍跟踪逻辑的跳转单元的所述停止指示信号时,停止发出与执行跳转结合来清除指令冒险的指令。
12.如权利要求11所述的流水线微处理器,其特征在于,所述发出控制单元在来自所述状态变化跟踪逻辑的所述信号表明所有指令冒险被清除时,发出与执行跳转结合来清除指令冒险的指令。
13.一种具有冒险清除逻辑的流水线微处理器,所述流水线微处理器包括:
转移预测逻辑单元,用于预测目标地址,使所述流水线微处理器在所述跳转指令完成执行之前跳转到所述预测目标地址;以及
具有冒险障碍跟踪逻辑的跳转单元,耦合到所述转移预测逻辑单元,用于检测所述跳转指令表明要清除冒险的时间,以及当所述跳转指令表明要清除冒险时,用于发信号通知所述转移预测逻辑单元对所述跳转指令禁用转移预测;
所述具有冒险障碍跟踪逻辑的跳转单元区分不清除指令冒险的跳转指令以及与执行跳转结合来清除指令冒险的指令。
14.如权利要求13所述的流水线微处理器,其特征在于,所述具有冒险障碍跟踪逻辑的跳转单元发信号通知所述转移预测逻辑单元对所述跳转指令禁用转移预测,无论在所述流水线微处理器中是否存在实际的冒险。
15.如权利要求13所述的流水线微处理器,其特征在于,所述跳转指令指定所述目标地址以及要清除指令冒险。
16.如权利要求13所述的流水线微处理器,其特征在于,所述转移预测逻辑单元设置在所述流水线微处理器的取级中。
17.如权利要求13所述的流水线微处理器,其特征在于,当对所述跳转指令禁用所述转移预测逻辑单元时,所述转移预测逻辑单元不会使所述流水线微处理器跳转到所述预测目标地址。
18.如权利要求17所述的流水线微处理器,其特征在于,所述流水线微处理器在所述跳转指令完成执行时跳转到所述跳转指令指定的目标地址。
19.如权利要求13所述的流水线微处理器,其特征在于还包括:
状态变化跟踪逻辑,耦合到所述转移预测逻辑单元,用于确定产生指令冒险的指令是否正在所述流水线微处理器中执行。
20.如权利要求19所述的流水线微处理器,其特征在于,如果所述状态变化跟踪逻辑确定产生指令冒险的指令正在所述流水线微处理器中执行,则所述状态变化跟踪逻辑发信号通知所述转移预测逻辑单元。
21.如权利要求20所述的流水线微处理器,其特征在于,所述转移预测逻辑单元只在它接收到来自所述状态变化跟踪逻辑的所述信号时才对所述跳转指令禁用转移预测。
22.一种用于与执行跳转操作结合来清除流水线微处理器中的指令冒险的方法,所述方法包括:
确定是否要执行跳转操作;
如果是这样,则还确定所述跳转操作是否指定是否要清除指令冒险,所述还确定包括区分不清除指令冒险的跳转指令以及与执行跳转结合来清除指令冒险的指令;
如果是这样,则作为所述跳转操作的组成部分清除所述指令冒险。
23.如权利要求22所述的用于清除指令冒险的方法,其特征在于,确定是否要执行跳转操作的所述步骤包括在指令执行之前检查其操作码字段。
24.如权利要求22所述的用于清除指令冒险的方法,其特征在于,确定所述跳转操作是否指定是否要清除指令冒险的所述步骤包括在指令执行之前检查其提示字段。
25.如权利要求22所述的用于清除指令冒险的方法,其特征在于,所述清除步骤包括:
对所述跳转操作禁用转移预测。
26.如权利要求22所述的用于清除指令冒险的方法,其特征在于,所述清除步骤包括:
在n个周期停止所述流水线微处理器。
27.如权利要求22所述的用于清除指令冒险的方法,其特征在于还包括:
检测造成指令冒险的任何指令是否正在所述流水线微处理器中执行;
如果不是这样,取消所述清除步骤。
28.一种能提供冒险清除机制的产品,包括:
第一单元,提供发出控制逻辑,用于发出要由流水线微处理器执行的指令,所述发出控制在接收到停止指示信号时在n个周期停止发出指令;以及
第二单元,提供具有冒险障碍跟踪逻辑的跳转,所述跳转耦合到所述发出控制,用于检测何时要执行与执行跳转结合来清除指令冒险的指令,以及当这样的时候,用于向所述发出控制提供所述停止指示信号;
其中所述具有冒险障碍跟踪逻辑的跳转区分不清除指令障碍的跳转指令和与执行跳转结合来清除指令冒险的指令。
29.如权利要求28所述的产品,其特征在于还包括:
第三单元,提供耦合到所述发出控制的状态变化跟踪逻辑,用于检测在所述流水线微处理器中执行的指令造成指令冒险的时间。
30.如权利要求29所述的产品,其特征在于,当所述状态跟踪逻辑没有检测到在所述流水线微处理器中执行的、造成指令冒险的任何指令时,所述状态跟踪逻辑发信号通知所述发出控制取消所述停止指示信号的作用。
31.一种能提供冒险清除机制的产品,包括:
第一单元,提供转移预测逻辑,用于预测跳转的目标地址以及用于使流水线微处理器在跳转指令完成执行之前跳转到所述预测目标地址;以及
第二单元,提供具有冒险障碍跟踪逻辑的跳转,耦合到所述转移预测逻辑,用于检测所述跳转指令表明要清除冒险的时间,以及当所述跳转指令表明要清除冒险时,用于发信号通知所述转移预测逻辑对所述跳转指令禁用转移预测;
其中所述具有冒险障碍跟踪逻辑的跳转区分不清除指令障碍的跳转指令和与执行跳转结合来清除指令冒险的指令。
32.如权利要求31所述的产品,其特征在于,当所述转移预测逻辑接收到来自所述具有冒险障碍跟踪逻辑的跳转的信号通知时,所述转移预测逻辑没有跳转到所述跳转指令指定的目标地址,直到所述跳转指令完全执行为止。
33.如权利要求31所述的产品,其特征在于还包括:
状态变化跟踪逻辑,耦合到所述转移预测逻辑,用于确定产生指令冒险的指令是否正在所述流水线微处理器中执行。
34.如权利要求33所述的产品,其特征在于,如果所述状态变化跟踪逻辑确定产生冒险的指令正在所述流水线微处理器中执行,则所述状态变化跟踪逻辑发信号通知所述转移预测逻辑对所述跳转指令禁用转移预测。
CNB038211904A 2002-09-06 2003-08-25 利用跳转指令清除冒险的方法及设备 Expired - Fee Related CN100538626C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/238,993 2002-09-06
US10/238,993 US7000095B2 (en) 2002-09-06 2002-09-06 Method and apparatus for clearing hazards using jump instructions

Publications (2)

Publication Number Publication Date
CN1692331A CN1692331A (zh) 2005-11-02
CN100538626C true CN100538626C (zh) 2009-09-09

Family

ID=31977751

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB038211904A Expired - Fee Related CN100538626C (zh) 2002-09-06 2003-08-25 利用跳转指令清除冒险的方法及设备

Country Status (6)

Country Link
US (2) US7000095B2 (zh)
EP (1) EP1540465A2 (zh)
JP (1) JP4030999B2 (zh)
CN (1) CN100538626C (zh)
AU (1) AU2003270000A1 (zh)
WO (1) WO2004023292A2 (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7272748B1 (en) * 2004-03-17 2007-09-18 Symantec Corporation Method and apparatus to detect and recover from a stack frame corruption
US7278011B2 (en) * 2004-04-08 2007-10-02 International Business Machines Corporation Completion table configured to track a larger number of outstanding instructions without increasing the size of the completion table
US20050273559A1 (en) 2004-05-19 2005-12-08 Aris Aristodemou Microprocessor architecture including unified cache debug unit
US7725695B2 (en) 2005-05-31 2010-05-25 Arm Limited Branch prediction apparatus for repurposing a branch to instruction set as a non-predicted branch
US20070022277A1 (en) * 2005-07-20 2007-01-25 Kenji Iwamura Method and system for an enhanced microprocessor
WO2007049150A2 (en) * 2005-09-28 2007-05-03 Arc International (Uk) Limited Architecture for microprocessor-based systems including simd processing unit and associated systems and methods
US8510596B1 (en) 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US7594079B2 (en) 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US20080222393A1 (en) * 2007-03-09 2008-09-11 On Demand Microelectronics Method and arrangements for pipeline processing of instructions
US20080222392A1 (en) * 2007-03-09 2008-09-11 On Demand Microelectronics Method and arrangements for pipeline processing of instructions
US9384003B2 (en) * 2007-10-23 2016-07-05 Texas Instruments Incorporated Determining whether a branch instruction is predicted based on a capture range of a second instruction
US20110179254A1 (en) * 2010-01-15 2011-07-21 Sun Microsystems, Inc. Limiting speculative instruction fetching in a processor
US8782435B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
US8868886B2 (en) 2011-04-04 2014-10-21 International Business Machines Corporation Task switch immunized performance monitoring
US9342432B2 (en) 2011-04-04 2016-05-17 International Business Machines Corporation Hardware performance-monitoring facility usage after context swaps
US20130055033A1 (en) 2011-08-22 2013-02-28 International Business Machines Corporation Hardware-assisted program trace collection with selectable call-signature capture
US11029997B2 (en) * 2013-07-15 2021-06-08 Texas Instruments Incorporated Entering protected pipeline mode without annulling pending instructions
WO2015038944A1 (en) 2013-09-12 2015-03-19 Virsec Systems, Inc. Automated runtime detection of malware
US9830159B2 (en) 2014-06-02 2017-11-28 International Business Machines Corporation Suspending branch prediction upon entering transactional execution mode
US10235172B2 (en) 2014-06-02 2019-03-19 International Business Machines Corporation Branch predictor performing distinct non-transaction branch prediction functions and transaction branch prediction functions
US10503538B2 (en) 2014-06-02 2019-12-10 International Business Machines Corporation Delaying branch prediction updates specified by a suspend branch prediction instruction until after a transaction is completed
US10261826B2 (en) 2014-06-02 2019-04-16 International Business Machines Corporation Suppressing branch prediction updates upon repeated execution of an aborted transaction until forward progress is made
US9477469B2 (en) 2014-06-02 2016-10-25 International Business Machines Corporation Branch predictor suppressing branch prediction of previously executed branch instructions in a transactional execution environment
US10289414B2 (en) 2014-06-02 2019-05-14 International Business Machines Corporation Suppressing branch prediction on a repeated execution of an aborted transaction
AU2015279920B2 (en) 2014-06-24 2018-03-29 Virsec Systems, Inc. Automated root cause analysis of single or N-TIERED applications
CA2953793C (en) 2014-06-24 2021-10-19 Virsec Systems, Inc. System and methods for automated detection of input and output validation and resource management vulnerability
CA3027728A1 (en) 2016-06-16 2017-12-21 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
CN109101276B (zh) * 2018-08-14 2020-05-05 阿里巴巴集团控股有限公司 在cpu中执行指令的方法
JP7208448B2 (ja) * 2019-02-01 2023-01-19 富士通株式会社 情報処理装置、情報処理プログラム、及び情報処理方法
US11609764B2 (en) * 2020-08-03 2023-03-21 Qualcomm Incorporated Inserting a proxy read instruction in an instruction pipeline in a processor

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US5805878A (en) * 1997-01-31 1998-09-08 Intel Corporation Method and apparatus for generating branch predictions for multiple branch instructions indexed by a single instruction pointer
CN1349160A (zh) * 2001-11-28 2002-05-15 中国人民解放军国防科学技术大学 流水线控制相关延迟消除方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5228131A (en) * 1988-02-24 1993-07-13 Mitsubishi Denki Kabushiki Kaisha Data processor with selectively enabled and disabled branch prediction operation
US5019967A (en) 1988-07-20 1991-05-28 Digital Equipment Corporation Pipeline bubble compression in a computer system
EP0463966B1 (en) * 1990-06-29 1998-11-25 Digital Equipment Corporation High-performance multi-processor having floating point unit and operation method
KR100299691B1 (ko) * 1991-07-08 2001-11-22 구사마 사부로 확장가능알아이에스씨마이크로프로세서구조
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
US5761473A (en) * 1993-01-08 1998-06-02 International Business Machines Corporation Method and system for increased instruction synchronization efficiency in a superscalar processsor system utilizing partial data dependency interlocking
JP2748822B2 (ja) * 1993-07-05 1998-05-13 日本電気株式会社 情報処理装置
DE69408769T2 (de) 1993-10-18 1998-07-09 Cyrix Corp Fliessbandsteuerung und Registerübersetzung in Mikroprozessor
JP3599409B2 (ja) * 1994-06-14 2004-12-08 株式会社ルネサステクノロジ 分岐予測装置
JP3113792B2 (ja) * 1995-04-27 2000-12-04 松下電器産業株式会社 最適化装置
US5809275A (en) * 1996-03-01 1998-09-15 Hewlett-Packard Company Store-to-load hazard resolution system and method for a processor that executes instructions out of order
US5889974A (en) * 1996-12-30 1999-03-30 Intel Corporation Method and apparatus for the detection of reordering hazards
JPH11259437A (ja) * 1998-03-12 1999-09-24 Hitachi Ltd 不要バリア命令の削減方式
US6317821B1 (en) * 1998-05-18 2001-11-13 Lucent Technologies Inc. Virtual single-cycle execution in pipelined processors
US6260189B1 (en) * 1998-09-14 2001-07-10 Lucent Technologies Inc. Compiler-controlled dynamic instruction dispatch in pipelined processors
US6216174B1 (en) * 1998-09-29 2001-04-10 Silicon Graphics, Inc. System and method for fast barrier synchronization
WO2000070483A2 (en) 1999-05-13 2000-11-23 Arc International U.S. Holdings Inc. Method and apparatus for processor pipeline segmentation and re-assembly
JP3683439B2 (ja) * 1999-08-24 2005-08-17 富士通株式会社 分岐予測を抑止する情報処理装置および方法
US6643767B1 (en) * 2000-01-27 2003-11-04 Kabushiki Kaisha Toshiba Instruction scheduling system of a processor
US6606702B1 (en) * 2000-06-06 2003-08-12 International Business Machines Corporation Multiprocessor speculation mechanism with imprecise recycling of storage operations
US7028165B2 (en) * 2000-12-06 2006-04-11 Intel Corporation Processor stalling

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US5805878A (en) * 1997-01-31 1998-09-08 Intel Corporation Method and apparatus for generating branch predictions for multiple branch instructions indexed by a single instruction pointer
CN1349160A (zh) * 2001-11-28 2002-05-15 中国人民解放军国防科学技术大学 流水线控制相关延迟消除方法

Also Published As

Publication number Publication date
US8171262B2 (en) 2012-05-01
US20040049660A1 (en) 2004-03-11
AU2003270000A1 (en) 2004-03-29
JP4030999B2 (ja) 2008-01-09
WO2004023292A2 (en) 2004-03-18
JP2005538450A (ja) 2005-12-15
US20060101255A1 (en) 2006-05-11
CN1692331A (zh) 2005-11-02
WO2004023292A3 (en) 2004-11-11
US7000095B2 (en) 2006-02-14
EP1540465A2 (en) 2005-06-15

Similar Documents

Publication Publication Date Title
CN100538626C (zh) 利用跳转指令清除冒险的方法及设备
US5526498A (en) Pipeline processor, with a return address stack and two stack pointers, for storing pre-return processed addresses
CN101160561B (zh) 通过循环结束分支来抑制分支历史寄存器的更新
JP5734980B2 (ja) 条件付き非ブランチング命令の非実行を予測するための方法および機器
CN101523344B (zh) 用于解析同时所预测分支指令的方法及系统
KR930009756B1 (ko) 분기명령 실행장치 및 분기명령 트레이싱방법
EP1003095A2 (en) A computer system for executing branch instructions
CN101763248A (zh) 用于多模式分支预测器的系统和方法
MX2009001911A (es) Metodo y aparato para emular el comportamiento de pronostico de ramificacion de una llamada de subrutina explicita.
CN101965554A (zh) 选择性地提交已执行指令的结果的系统和方法
CN101479700A (zh) 用于积极主动分支目标地址高速缓冲存储器管理的方法和设备
CN101601009A (zh) 用于被错误预测分支的分段管线冲洗
JP4727491B2 (ja) 分岐予測コントロール
EP3887942B1 (en) Loop exit predictor
WO2016048651A1 (en) Dependency-prediction of instructions
KR102379886B1 (ko) 벡터 명령 처리
US5713012A (en) Microprocessor
CN103713881A (zh) 推测性特权提升
KR100244472B1 (ko) 분기예측회로
JPS59183434A (ja) 命令先取り制御方式
JP4564025B2 (ja) 情報処理装置における割り込み処理方法
CN114116004A (zh) 一种基于优选通道的跳转指令处理方法及系统
JPH04247522A (ja) 並列演算処理装置
JPH01258032A (ja) パイプライン処理機構を持つデータ処理装置
JP2000076065A (ja) 情報処理装置、及びその割込み制御方法

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
CP01 Change in the name or title of a patent holder

Address after: California, USA

Patentee after: Imagination Technologies Ltd.

Address before: California, USA

Patentee before: Imagination Technology Co.,Ltd.

Address after: California, USA

Patentee after: Imagination Technology Co.,Ltd.

Address before: California, USA

Patentee before: Mips Technologies, Inc.

CP01 Change in the name or title of a patent holder
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090909

Termination date: 20200825

CF01 Termination of patent right due to non-payment of annual fee