CN1244049C - 推测寄存器的调整 - Google Patents

推测寄存器的调整 Download PDF

Info

Publication number
CN1244049C
CN1244049C CNB018210325A CN01821032A CN1244049C CN 1244049 C CN1244049 C CN 1244049C CN B018210325 A CNB018210325 A CN B018210325A CN 01821032 A CN01821032 A CN 01821032A CN 1244049 C CN1244049 C CN 1244049C
Authority
CN
China
Prior art keywords
register
counter
instruction
streamline
speculative
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
CNB018210325A
Other languages
English (en)
Other versions
CN1481530A (zh
Inventor
C·P·罗斯
R·P·辛格
G·A·奥弗坎普
Original Assignee
Analog Devices Inc
Intel Corp
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 Analog Devices Inc, Intel Corp filed Critical Analog Devices Inc
Publication of CN1481530A publication Critical patent/CN1481530A/zh
Application granted granted Critical
Publication of CN1244049C publication Critical patent/CN1244049C/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, look ahead
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Abstract

本发明涉及一种设备,它包括:推测寄存器;结构寄存器;以及一组用于监视推测寄存器和结构寄存器之间差值的计数器。推测寄存器、结构寄存器和计数器组位于由一控制单元控制的多级流水线中。计数器组包括位于推测寄存器所在级上的第一计数器以及位于推测寄存器所在级之后的各级上的附加计数器。在流水线中中止了一个指令之后,控制单元对推测寄存器调整一个量,该调整量是由发生中止的级上的计数器确定的。在本发明中,当推测寄存器因一检测到的条件而被调整时,控制单元使计数器增值,而当与条件相关的指令离开与相应计数器有关的对应级时,控制单元使相应计数器减值。本发明还涉及一种调整推测寄存器的相应方法,以及使用本发明设备的系统。

Description

推测寄存器的调整
发明领域
本发明涉及在可编程处理器中实施的推测寄存器。
背景技术
常规可编程处理器,例如,数字信号处理器,可包括为改进处理器的性能和提高软件指令的执行速度而设计的各种硬件。然而,这些附加的硬件一般都会增加处理器的功率消耗。
“流水线”是一项在常规可编程处理器中使用的技术,在该项技术中,为了提高整体处理的速度,指令是交迭执行的。流水线式处理器一般采用多级方式来处理指令。指令根据系统时钟从一级移动到下一级,系统时钟的时钟速率一般由流水线中最慢的一级所确定。
在处理指令时,“冒险”有时可防止执行指令流中的下一条指令。例如,在一条指令依赖于流水线中尚未结束处理的前一次指令的结果时,便会出现数据冒险。只有流水线中正在处理的指令已经结束时,才能将其结果写入结构寄存器,而所述结果一般可以被流水线中的后续指令所访问。因此,数据冒险会使流水线“停止”,并且降低流水线的性能。
用于提高流水线吞吐量和避免停止的一类硬件附加电路是推测寄存器。推测寄存器是这样一种寄存器,它用于推测或预测当已结束对流水线中一个指令的处理时所述结构寄存器所具有数值。然而,有时对推测寄存器作写操作的指令会在它对结构寄存器作写操作之前被终止。在这种情况下,推测寄存器就需要调整。
发明内容
依照本发明的一个方面,提供了一种方法,该方法包括以下步骤:
检测处理器中的一个条件;
为单个寄存器计算多个调整数值,其中计算多个调整数值的所述步骤是在所述处理器之流水线中多个相应的硬件级上并行发生的;以及,
当在所述流水线内中止了与所述条件有关的指令时,用所述调整数值中的一个来更新所述寄存器。
依照本发明的另一方面,提供了一种设备。该设备包括:
第一寄存器;
第二寄存器;以及,
一组计数器,用于监视所述第一寄存器和所述第二寄存器之间的差值,其中所述第一寄存器、所述第二寄存器和所述计数器组位于由一控制单元控制的多级流水线中,并且所述计数器组包括位于第一寄存器所在级上的第一计数器以及位于第一寄存器所在级之后的各级上的附加计数器,并且在所述流水线中中止了一个指令之后,所述控制单元对所述第一寄存器调整一个量,该调整量是由发生所述中止的级上的计数器确定的。
依照本发明的再一方面,提供了一种设备。该设备包括:
推测寄存器;
结构寄存器;以及
一组计数器,用于监视所述推测寄存器和所述结构寄存器之间的差值,其中所述推测寄存器、所述结构寄存器和所述计数器组位于由一控制单元控制的多级流水线中,并且所述计数器组包括位于所述推测寄存器所在级上的第一计数器以及位于所述推测寄存器所在级之后的各级上的附加计数器,并且在所述流水线中中止了一个指令之后,所述控制单元对所述推测寄存器调整一个量,该调整量是由发生所述中止的级上的计数器确定的。
依照本发明的又一方面,提供了一种系统。该系统包括:
静态随机存取存储器件;
第一寄存器;
第二寄存器;
一组计数器,用于监视所述第一寄存器和所述第二寄存器之间的差值;以及,
处理器,它与所述静态随机存取存储器件耦合,所述处理器包括一执行流水线和一控制单元,其中所述控制单元用于:
当所述第一寄存器因一检测到的条件而被调整时,使所述计数器增值;以及
当与所述条件相关的指令离开了所述流水线中与相应计数器有关的对应级时,使所述相应计数器减值,每个计数器位于分立的一相应硬件级上;
其中在所述流水线中中止了一个指令之后,所述控制单元对所述第一寄存器调整一个量,该调整量是由所述流水线中发生所述中止的级上的计数器确定的。
附图说明
图1是说明根据本发明实施例的可编程处理器的方框图。
图2是说明根据本发明实施例所举例的流水线的方框图。
图3是说明由根据本发明实施例推测寄存器的使用实现的时序优点的流程图。
图4是说明有关根据本发明实施例的推测寄存器调整的工作模式的流程图。
图5是说明用于调整根据本发明实施例的推测计数寄存器的有效方法的流程图。
图6是说明在根据本发明实施例电路中的计数器的方框图。
图7是说明根据本发明实施例的混合模式操作的流程图。
图8是说明根据本发明实施例的混合电路的方框图。
图9说明用于在根据本发明实施例的硬件环路假设中推测寄存器的增量的举例电路。
具体实施方式
图1是说明可编程处理器2的方框图。处理器2可以包括执行流水线4和控制单元6。控制单元6可以根据系统时钟控制流过流水线的指令和/或数据。例如,在处理一指令期间,控制单元6可以命令流水线4中的各种部件对所述指令进行解码,并正确执行对应的操作,例如,所述操作包括将操作结果写回到存储器中。
可以将指令装入流水线4的第一级,然后通过后续各级对其进行处理。每一级都可以与其它各级并行处理。数据可以在系统的一个周期中在流水线4的各级之间传递。指令结果可以快速连续地出现在流水线4的终点。
处理器2可以包括一个或多个结构寄存器,用于存储一个或多个已在流水线4中处理完毕的指令的结果。此外,处理器2还可以包括一个或多个推测寄存器,用于预测结构寄存器未来的数值。正如以下所讨论的,在一些情况下,推测寄存器会需要调整。因此,处理器2可以用本文所述的一种或多种技术,来调整推测寄存器。
图2是举例说明一流水线的方框图。流水线4具有多个级,以便并行执行多条指令。在流水线4中,一条指令在第一时钟周期进入指令获取(IF,instructionfetch)级12。然后,在后续的时钟周期期间,该指令继续沿流水线下行。一般来说,其它指令可以在后续的时钟周期中分别进入IF级12。流水线4中的级的数量定义了流水线4能够同时服务的指令数量。
流水线4的不同级可以如下进行操作。获取单元13在IF级12期间获取指令,然后在解码(DEC)级14期间,对来自指令寄存器15的指令解码。在地址计算(AC)级18期间,一个或多个数据地址发生器19计算用于进行所述操作的任何存储器地址。
在执行级22A-22N期间,执行单元23进行指定的操作,例如,两个数的相加或相乘。执行单元23可以包含进行所述操作的特定硬件,例如包括:一个或多个算术逻辑单元(ALU)、浮点单元(FPU)和桶型移位寄存器,但是本发明范围并不限制于这些方面。可以将多种数据提供给执行单元23,例如数据地址发生器19所产生的地址、从存储器中恢复的数据,或者从数据寄存器恢复的数据。在写回级(WB)30期间,将结果写入位于流水线4外部的一存储单元或数据寄存器,或者写入流水线4内的数据寄存器,例如结构寄存器32。流水线4中的各级可以包括一个或多个用于存储数据的存储电路,例如触发器。
一旦指令在流水线4中处理完毕并“交付给”系统,通常会装载结构寄存器32。这一般发生在例如WB级30的结尾处。因此,通常是在指令进入流水线4后的几个时钟周期时对结构寄存器32进行写操作的。
然而,在许多几种情况下,在指令交付前访问与该指令有关的数据是有益的。为此,流水线4可以用一个或多个推测寄存器34推测或“预测”结构寄存器32的数值。一般来说,可以在交付指令之前,将与该指令有关的数据写入推测寄存器34。
与结构寄存器32不同是,处理器2的指令集一般不支持推测寄存器34。因此,不能用程序代码直接访问推测寄存器34。因此,编程者不能按他(她)操作推测寄存器34的相同方式将数据移入或移出结构寄存器32。
例如,一种使用推测寄存器较为有利的场合是“硬件环路”。硬件环路是用于处理一环路结构中软件指令的专用硬件。例如,一个环路的设置指令可以将硬件初始化。随后,将环路指令高速缓存在本地寄存器或缓存器中,并由那些本地寄存器发出所述环路指令,用于环路的迭代。这样,不需要多次从存储器获取缓存在硬件环路中的指令。
在硬件环路的环境中,推测寄存器34是非常有利的,因为它们允许处理器2更快速地检测和初始化硬件环路。如上所述,在指令交付之前,环路设置指令中的数据并没有写入结构寄存器32中。因此,如果用结构寄存器32对硬件环路初始化,那么硬件环路的第一条指令就不能进入流水线4,直至该环路设置指令交付为止。例如,如果在环路设置指令交付之前环路中的第一条指令就已进入流水线4,那么就不用设置结构寄存器32,来将该指令识别为环路的一部分。但是,随着流水线4深度的增加,这个问题也会增大。
由于这些原因,可以用一个环路设置指令将硬件环路的环路条件,例如环路的顶层数值、底层数值和计数数值等,写入推测寄存器34。随后,可以在环路设置指令交付之前,用推测寄存器34设置一硬件环路。因此,采用一个或多个推测寄存器34可以减小或避免环路设置的损失,从而提高处理器2的处理速度。
在例举的硬件环路中,写入推测寄存器34A的顶层数值指向环路的第一条指令;写入推测寄存器34B的低层数值指向环路的最后一条指令。写入推测寄存器34C的计数数值限定了环路的迭代次数。通过在一程序计数器指向顶层指令时使硬件环路初始化,以及每当程序计数器指向低层指令时使计数值减值(例如,使推测计数寄存器34C减值),便可建立一硬件环路,并由处理器2有效地执行该硬件环路。
有利使用推测寄存器的另一例子是与监视点一起使用。监视点可以在可编程处理器调试处理中用来帮助编程者。设置监视点用于监测或者“监视”特殊指令、特殊类型的指令、对一特定存储单元的方法,或与一指令有关的任何其他条件。例如,如果在流水线中对一个正被监视的指令执行了某一规定的次数,那么该系统可以实现一特定的异常。
监视点还适用于确定何时应该使用一特殊的代码集。例如,在一特殊指令出现10次以上或者一特殊存储单元被访问10次以上时,会需要使用一校正算法或者“代码补丁”。监视点可以用于监视该特殊指令,并且每当执行了该特殊指令时使监视计数寄存器减值。
类似于硬件环路的设置数值,需要尽早地检测监视点。为此,例如,可以用推测寄存器34对已经进入系统的“被监视”指令的数量进行计数。通过使用推测寄存器,可以发现这些和其他情况下的系统性能得到了改善。
图3是一流程图,说明了使用推测寄存器所实现的时序优点。如图3所示,将一个或多个条件装入一个或多个推测寄存器(40)中。随后,在将这些条件写入推测寄存器的指令交付之前(44),检测这些条件(42)。
伴随着这些优点,使用推测寄存器也会引入一些挑战。例如,因为推测寄存器数据需要调整,所以使用推测寄存器会引发一个挑战。如果流水线4必须服务于一事件(例如,中断或异常),则需要中止流水线的当前操作。如果该中止是在写入推测寄存器34之后,但在写入其相应的结构寄存器32之前发生的,则推测寄存器34的数值会与相应结构寄存器的数值不一致。在这种情况下,就需要调整推测寄存器中的一个。换言之,因为推测寄存器34写入得早,所以在指令交付之前流水线4中的中止就需要对推测寄存器34中的一个进行调整。
图4是一流程图,说明了对推测寄存器34进行调整的一种操作模式。如图4所示,对推测寄存器34写入(50)。在图4的实施例中,推测寄存器具体是用来处理硬件环路的推测顶层34A、推测低层34B,以及推测计数34C的寄存器。如果在写入结构寄存器32之前(54),流水线中的中止出现(52),则会从流水线4流出未被中断的指令(56),并且通过写入相应结构寄存器32中包含的数据,来调整推测寄存器34(58)。
当处理背对背的硬件环路时,图4所示的操作模式特别有用。例如,如果第二环路在其交付之前就中止了,则第一环路可能仍需要执行其在流水线中的剩余指令。图4中的调整技术提供了一种通过相应地调整推测寄存器来处理这种变换的方法。
调整推测计数寄存器会遇到特殊的挑战。如上所述,推测计数寄存器可用来对硬件环路中的指令、具有监视点的指令,或者其它情况进行计数。然而,当一影响推测计数寄存器的指令在其交付之前就中止了,则推测计数寄存器中的数据可能是不正确的。
一种在中止之后用于校正推测计数寄存器数据的方法是,允许将中止前的指令交付,并随后用相应的结构寄存器对推测寄存器进行写入。然而,如果转移损失小于其流出流水线所需的时间,这就会增加附加的损失。
图5说明了一种调整推测计数寄存器的有效方法。图5说明了在硬件环路环境中的调整,但本发明并不限制于该方面。如图所示,在环路设置指令进入AC级之后(80),对推测计数寄存器写入(82)。这时,将计数数据沿流水线向下发送(84)。如果发生中止(85),则未被中断的指令可以流出(86),并且将相应的结构寄存器中的数据写入推测计数寄存器(87)。
在低层匹配时(90),例如当一程序计数器正指向一指令环路的低层指令时,可以将一有效减量位沿流水线向下发送(92)。当引起有效减量位之发送的指令退出每个流水线级时(94),在该流水线退出级上的计数器就被减1(96)。换句话说,当发送有效减量位(即,在92处)时,对流水线各级上的计数器增值,而当引起有效减量位发送的指令退出所述流水线级(94)时,则对个别计数器减值(即,在96处)。每级上的相应计数器表示驻留在该级与推测计数寄存器所在级之间流水线中有效减量的次数。于是,任何时候当在某一级发生中止时,该级的计数器可以用来调整推测计数寄存器。
如果中止发生在流水线中(98),则可以对推测计数寄存器调整下述数值,即在中止级处的计数器所计数得到的有效减量位的次数(88)。图5中的步骤可以重复,直至所有的环路指令退出了流水线(100)。
推测计数寄存器可以在每一次低层匹配(例如,说明每次通过硬件环路)时被减值。然而,并不是要在每一次低层匹配后将整个计数数值沿流水线向下传播,可以只将单个有效减量位沿流水线向下发送。这样,可以在处理器2中减少硬件。计数器组可以监视有效减量位,以及引起这些位发送的相关指令。如此,计数器组可以对推测计数寄存器与其相应结构寄存器之间的差异保持一运行表。
图6是说明流水线中计数器的方框图。如图所示,可以在流水线DEC之后的每一级上提供计数器(110,111,112和113)。因此,可以将单个有效减量位沿流水线向下传播,以便计算推测计数寄存器与其相应结构寄存器之间的差异。将计数器与复用器120的输入端相连。复用器120用于确定哪一个计数器(如果要的话)用于调整推测寄存器34C。如果需要,复用器120可以输出调整信号156,以便进行适当的调整。
在其他实施例中,在一些级上不会产生中止,或者当某个指令位于某个级上时限制中止。在这些实施例中,在限制中止的级上不设置计数器可以减少硬件。
计数器110,111,112和113的宽度可以根据需要而变化。例如,计数器110可以是1位计数器,而计数器111可以是2位计数器。计数器112和113的最小深度取决于流水线中级的数量。计数器110可以是1位计数器,因为它的值为1或0。例如,如果低层匹配的指令正在AC级,则其值为1。当指令离开AC级时,则该计数器返回到零。
计数器111和下一个计数器(例如,对于EX 2级)可以是2位计数器,但是本发明的范围并不限制于此方面。这是因为计数器111(即,EX 1级的计数器)的最大数值可以为2,而EX 2级计数器的最大数值可以为3。EX 3级计数器的最大数据为4,因此它需要3位。同样,下面3个计数器(例如,EX 4级至EX 6级)可以是3位计数器,它能够分别表示5至7之间的数值。
通过考虑计数器所需持有的最大数值可以确定每级的计数器宽度。在该举例的硬件环路中,这对应于环路是单个指令环路的情况。因此,计数器的深度可以简单地对应于该计数器与AC级之间的级的数量。然而,该尺寸也依赖于在一特定级上是否发生中止,因此有些级不需要计数器。
另一种操作模式是一种用于调整推测计数寄存器的混合方法。如果与流出流水线有关的损失大于转移的损失,那么可以用流水线中一些选定级上的寄存器来调整推测计数寄存器,然而,如果流出流水线的损失小于或等于转移的损失,则允许交付流水线中的指令,从而根据相应结构寄存器调整推测寄存器。系统操作可以根据中止发生在流水线中的哪里来选择。在一种情况下,流水线具有3个执行级,如果中止发生在EX 3级或WB级,则可以退出该流水线;但是如果中止发生在EX 3级之前,就不能流出流水线并且需要调整推测寄存器。
图7是说明一操作混合模式的流程图。如图所示,如果中止(130)发生在流水线的第n级之前,一计数器可以调整一推测计数数值(128)。然而,如果中止(130)发生在第n级之后,则允许流水线中的指令流过流水线并且交付(132)。随后,用相应的结构寄存器中的数据更新推测寄存器(133)。变量n定义了这样一点,在该点处允许指令流过流水线所须用的时间小于或等于转移的损失(134)。
图8说明了在AC级上以及在第一个到第n-1个执行级上含有计数器的混合电路。如果中止发生在第n执行级或之后的执行级,那么该电路允许流水线在中止之后执行其指令。然而,如果中止发生在第(n-1)级或以前的级上,那么该电路在中止之后调整推测计数寄存器。同样,变量n定义了这样一点,在该点处允许指令流过流水线所须用的时间小于或等于转移的损失(134)。在其它情况下,变量n可以位于流水线中较早的位置(例如,在转移的损失较大的情况下)。在另一些情况下,变量n用级的数量,而不是执行级的数量来定义。
图9例示了在硬件环路的情况中对推测计数寄存器增值的电路。在每次通过环路时,复用器154都对推测计数寄存器150减值。然而,如果调整是必需(例如,如果环路指令在其交付之前被中止)的,则调整信号156可以调整推测计数寄存器150。一旦环路结束了它的最后一次迭代,比较器158会发出信号160作为指示。
已经讨论了本发明的各个实施例。例如,已经讨论了用于调整推测寄存器的各种技术,以便在处理器中实施。处理器可以用在各种系统中,而所述系统可以包括通用计算系统、数字处理系统、膝上计算机、个人数字助理(PDA)和蜂窝式电话。在这类系统中,处理器可以与存储器相耦合,例如用于存储一操作系统和其它软件应用程序的闪存存储器或静态随机存取存储器(SRAM)。这些和其他实施例都落在后附权利要求的保护范围内。

Claims (16)

1.一种方法,其特征在于,包括以下步骤:
检测处理器中的一个条件;
为单个寄存器计算多个调整数值,其中计算多个调整数值的所述步骤是在所述处理器之流水线中多个相应的硬件级上并行发生的;以及,
当在所述流水线内中止了与所述条件有关的指令时,用所述调整数值中的一个来更新所述寄存器。
2.如权利要求1所述的方法,其特征在于,用于计算调整数值的所述步骤包括:
当检测到所述条件时,对所述调整数值增值;以及,
当所述指令离开各级时,对所述调整数值减值。
3.如权利要求1所述的方法,其特征在于,用于检测条件的所述步骤包括检测对一特定存储单元的访问。
4.如权利要求1所述的方法,其特征在于,用于检测条件的所述步骤包括检测硬件环路中的指令。
5.如权利要求4所述的方法,其特征在于,用于检测硬件环路中的指令的所述步骤包括检测低层匹配。
6.如权利要求1所述的方法,其特征在于,用于检测条件的所述步骤包括检测一监视点。
7.如权利要求1所述的方法,其特征在于,用所述调整数值中的一个来更新寄存器的所述步骤包括对所述寄存器调整一个量,所述调整量是由位于发生中止的级上的计数器所确定的。
8.如权利要求1所述的方法,其特征在于,用于更新寄存器的步骤包括更新一推测寄存器。
9.一种设备,其特征在于,包括:
第一寄存器;
第二寄存器;以及,
一组计数器,用于监视所述第一寄存器和所述第二寄存器之间的差值,其中所述第一寄存器、所述第二寄存器和所述计数器组位于由一控制单元控制的多级流水线中,并且所述计数器组包括位于第一寄存器所在级上的第一计数器以及位于第一寄存器所在级之后的各级上的附加计数器,并且在所述流水线中中止了一个指令之后,所述控制单元对所述第一寄存器调整一个量,该调整量是由发生所述中止的级上的计数器确定的。
10.一种设备,其特征在于,包括:
推测寄存器;
结构寄存器;以及
一组计数器,用于监视所述推测寄存器和所述结构寄存器之间的差值,其中所述推测寄存器、所述结构寄存器和所述计数器组位于由一控制单元控制的多级流水线中,并且所述计数器组包括位于所述推测寄存器所在级上的第一计数器以及位于所述推测寄存器所在级之后的各级上的附加计数器,并且在所述流水线中中止了一个指令之后,所述控制单元对所述推测寄存器调整一个量,该调整量是由发生所述中止的级上的计数器确定的。
11.如权利要求10所述的设备,其特征在于,所述推测寄存器是推测计数寄存器,所述结构寄存器是结构计数寄存器。
12.如权利要求10所述的设备,其特征在于,所述计数器组包括位于一流水线第n级之前的各级上的计数器,其中n定义了这样一点,在该点处,允许指令流过整个流水线所需用的时间小于等于转移的损失。
13.如权利要求10所述的设备,其特征在于,所述控制单元用于:
当所述推测寄存器因一检测到的条件而被调整时,使所述计数器增值;以及,
当与所述条件相关的指令离开与相应计数器有关的对应级时,使所述相应计数器减值。
14.一种系统,其特征在于,包括:
静态随机存取存储器件;
第一寄存器;
第二寄存器;
一组计数器,用于监视所述第一寄存器和所述第二寄存器之间的差值;以及,
处理器,它与所述静态随机存取存储器件耦合,所述处理器包括一执行流水线和一控制单元,其中所述控制单元用于:
当所述第一寄存器因一检测到的条件而被调整时,使所述计数器增值;以及
当与所述条件相关的指令离开了所述流水线中与相应计数器有关的对应级时,使所述相应计数器减值,每个计数器位于分立的一相应硬件级上;
其中在所述流水线中中止了一个指令之后,所述控制单元对所述第一寄存器调整一个量,该调整量是由所述流水线中发生所述中止的级上的计数器确定的。
15.如权利要求14所述的系统,其特征在于,所述第一寄存器是推测计数寄存器,所述第二寄存器是结构计数寄存器。
16.如权利要求15所述的系统,其特征在于,所述控制单元用于在流水线第n级之后的一个级上发生中止时,使未中断的指令流出,并用所述结构计数寄存器中的数据对所述推测计数寄存器进行写操作。
CNB018210325A 2000-12-20 2001-10-31 推测寄存器的调整 Expired - Fee Related CN1244049C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/742,745 US6920547B2 (en) 2000-12-20 2000-12-20 Register adjustment based on adjustment values determined at multiple stages within a pipeline of a processor
US09/742,745 2000-12-20

Publications (2)

Publication Number Publication Date
CN1481530A CN1481530A (zh) 2004-03-10
CN1244049C true CN1244049C (zh) 2006-03-01

Family

ID=24986028

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018210325A Expired - Fee Related CN1244049C (zh) 2000-12-20 2001-10-31 推测寄存器的调整

Country Status (6)

Country Link
US (1) US6920547B2 (zh)
JP (1) JP3759729B2 (zh)
KR (1) KR100576560B1 (zh)
CN (1) CN1244049C (zh)
TW (1) TWI285329B (zh)
WO (1) WO2002050667A2 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6898695B2 (en) * 2001-03-28 2005-05-24 Intel Corporation Use of a future file for data address calculations in a pipelined processor
US7013382B1 (en) * 2001-11-02 2006-03-14 Lsi Logic Corporation Mechanism and method for reducing pipeline stalls between nested calls and digital signal processor incorporating the same
US7366877B2 (en) * 2003-09-17 2008-04-29 International Business Machines Corporation Speculative instruction issue in a simultaneously multithreaded processor
US8266414B2 (en) 2008-08-19 2012-09-11 Freescale Semiconductor, Inc. Method for executing an instruction loop and a device having instruction loop execution capabilities
US11620134B2 (en) 2021-06-30 2023-04-04 International Business Machines Corporation Constrained carries on speculative counters

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
JP2539974B2 (ja) * 1991-11-20 1996-10-02 富士通株式会社 情報処理装置におけるレジスタの読出制御方式
US5421020A (en) 1993-01-08 1995-05-30 International Business Machines Corporation Counter register implementation for speculative execution of branch on count instructions
US5943494A (en) 1995-06-07 1999-08-24 International Business Machines Corporation Method and system for processing multiple branch instructions that write to count and link registers
US5996063A (en) * 1997-03-03 1999-11-30 International Business Machines Corporation Management of both renamed and architected registers in a superscalar computer system
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
JP3420091B2 (ja) * 1998-11-30 2003-06-23 Necエレクトロニクス株式会社 マイクロプロセッサ
US6189088B1 (en) * 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location

Also Published As

Publication number Publication date
CN1481530A (zh) 2004-03-10
KR20030061002A (ko) 2003-07-16
WO2002050667A2 (en) 2002-06-27
JP2004516572A (ja) 2004-06-03
KR100576560B1 (ko) 2006-05-08
WO2002050667A3 (en) 2003-04-17
US20020078326A1 (en) 2002-06-20
US6920547B2 (en) 2005-07-19
TWI285329B (en) 2007-08-11
JP3759729B2 (ja) 2006-03-29

Similar Documents

Publication Publication Date Title
EP3407203B1 (en) Statically schedulable feed and drain structure for systolic array architecture
US20230350674A1 (en) Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
US11847185B2 (en) Systems and methods of instructions to accelerate multiplication of sparse matrices using bitmasks that identify non-zero elements
US6073215A (en) Data processing system having a data prefetch mechanism and method therefor
CN1138205C (zh) 以不同等待时间调度指令
KR20170133364A (ko) 신경망 프로세서에서의 배치 프로세싱
CN111142938B (zh) 一种异构芯片的任务处理方法、任务处理装置及电子设备
EP1794674A1 (en) Dynamic loading and unloading for processing unit
US11579883B2 (en) Systems and methods for performing horizontal tile operations
US9582422B2 (en) Hardware prefetcher for indirect access patterns
CN1240279A (zh) 具有分支控制的数据处理系统及其方法
EP3974966A1 (en) Large scale matrix restructuring and matrix-scalar operations
CN1244049C (zh) 推测寄存器的调整
CN112667289A (zh) 一种cnn推理加速系统、加速方法及介质
CN108205447B (zh) 使用早期和后期地址以及循环计数寄存器来跟踪架构状态的流引擎
EP0518575A1 (en) Memory unit for data processing system
CN1690951A (zh) 优化的处理器和指令对准
CN1159648C (zh) 有限游程转移预测方法
US20130262779A1 (en) Profile-based hardware prefetching
US20220220644A1 (en) Warp scheduling method and stream multiprocessor using the same
CN1257450C (zh) 节省资源的硬件环路
CN116048627B (zh) 指令缓冲方法、装置、处理器、电子设备及可读存储介质
CN115878188B (zh) 一种基于sve指令集的池化层函数的高性能实现方法
CN111158757A (zh) 并行存取装置和方法以及芯片
CN1695115A (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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20090206

Address after: Massachusetts, USA

Patentee after: ANALOG DEVICES, Inc.

Address before: California, USA

Co-patentee before: ANALOG DEVICES, Inc.

Patentee before: INTEL Corp.

ASS Succession or assignment of patent right

Owner name: ANALOG DEVICES, INC.

Free format text: FORMER OWNER: INTEL CORP

Effective date: 20090206

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

Granted publication date: 20060301

Termination date: 20201031