CN1323412A - 以不同等待时间调度指令 - Google Patents

以不同等待时间调度指令 Download PDF

Info

Publication number
CN1323412A
CN1323412A CN99812003A CN99812003A CN1323412A CN 1323412 A CN1323412 A CN 1323412A CN 99812003 A CN99812003 A CN 99812003A CN 99812003 A CN99812003 A CN 99812003A CN 1323412 A CN1323412 A CN 1323412A
Authority
CN
China
Prior art keywords
register
stand
period
instruction
expection
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.)
Granted
Application number
CN99812003A
Other languages
English (en)
Other versions
CN1138205C (zh
Inventor
E·格罗肖夫斯基
H·穆尔德尔
D·C·林
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.)
Intel Corp
Original Assignee
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 Intel Corp filed Critical Intel Corp
Publication of CN1323412A publication Critical patent/CN1323412A/zh
Application granted granted Critical
Publication of CN1138205C publication Critical patent/CN1138205C/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/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

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)
  • Complex Calculations (AREA)

Abstract

一种装置(30、50)包含产生脉冲(25、27)的时钟(20)及具有多行(14、16、18)及一或多个端口(12)的电子硬件结构(10)。各行(14、16、18)适应于记录通过端口(12)之一写入的独立等待时间矢量(24、26、28)。记录在其中的等待时间矢量(24、26、28)是对时钟(20)敏感的。在处理器(30、50)中分派指令的方法包括对寄存器等待时间表(10)的一部分行(14、16、18)更新多个等待时间,及响应时钟脉冲(25、27)减少其它行(14、16、18)中剩余的预期等待时间。这一部分的行(14、16、18)对应于特定寄存器(32、33、34)。

Description

以不同等待时间调度指令
本发明一般涉及计算机及处理器,而更具体地涉及以不同等待时间调度指令。
处理器检索及执行存储在一或多个存储器中的一序列指令。所执行的许多指令对于序列中较早的指令具有数据与/或控制相关性。处理器通常以考虑这些相关性的方式调度供执行的指令。
这种相关性之一考虑源与目的操作数的可获得性。源与目的操作数可以是指令读与写的相应寄存器地址.在指令序列的较早指令完成它们的写入之后将正确的数据存储在其中时便可获得源操作数。在指令序列中所有较早指令已完成了它们的读该地址之后该指令能写入该地址时便可获得目的操作数。许多处理器响应判定可以获得该指令的操作数调度供执行的指令。当在各调度周期中必须检验大量操作数时判定操作数的可获得性是费时的并可能减慢指令处理。
现代处理器可包含各种特征将处理速度提高到顺序(按次序)处理器的速度以上。这种特征之一为推测性执行。在推测性执行中,处理器在执行前确定关于相关性的预期并在执行后检验预期是否正确。当预期出错时,处理器重新执行受影响的指令。在关于相关性的预期准确时,推测性执行能降低未解决的指令相关性所导致的延迟。某些处理器采用的第二种特征为超量标处理。在超标量处理中,存在带独立入口的若干执行单元。超标量处理器能在一个时钟周期中分派若干指令的发布群。将该发布群的各指令分派给不同的入口。推测性执行及超量处理通常需要处理未解决的指令相关性的技术。
一些处理器流水线停止以便在执行后面的指令之前解决操作数可获得性。可停止的流水线利用停止控制网来处理停止。停止控制网包含用于从各流水线阶段发送状态信号到停止控制器的网及用于从停止控制器广播“停止”或“前进”信号到流水线的各阶段的网。状态信号通知停止控制器是否能将结果以一个阶段发送给下一阶段供进一步处理。“前进”信号起动诸如一组并行触发器将结果从一个阶段传输给下一阶段。由于接收与广播网使用带电容与相关过渡时间的线路,这些网络导致时延,这限制了用于在流水线阶段之间传输结果所能达到的最小时间。
在能达到相当大的物理尺寸及使用具有许多阶段的流水线的现代芯片中,停止控制网络的时延能加重。这两种性质都趋向于增加停止控制网络所需的线路,从而增加电容导致的相关时延。
不用停止网络,处理器必须在各调度周期中调度一个发布群。如果处理器必须在调度接连的发布群之间的时间中确定呈现为该发布群的各指令的操作数的寄存器是否可以获得,这种定时要求可能是难于达到的。随着发布群的规模的增加,这些定时要求甚至更难于达到。
本发明指向克服或至少降低上面提出的一或多个问题的后果。
在本发明的一个方面中,提供了一种装置。该装置包含产生脉冲的时钟及拥有多行及一或多个端口的电子硬件结构。各行适合于记录通过端口之一写入的独立等待时间矢量。记录在其中的等待时间矢量是对时钟敏感的。
在本发明的另一方面中,提供了在处理器中调度指令的方法。该方法包含对寄存器等待时间表的一部分行更新多个期望的等待时间,及响应时钟脉冲减少留在其它行中的期望等待时间。这一部分行对应于特定寄存器。
在阅读以下详细描述及参照附图时本发明的其它目的与优点将是显而易见的,附图中:
图1为展示寄存器等待时间表的高层图;
图2展示用时钟脉冲更新图1的寄存器等待时间表的一行中的等待时间矢量的一个实施例;
图3展示采用图1的寄存器等待时间表来调度供在并行执行单元上执行的指令的一部分处理器;
图4A为调度供在关行执行单元上执行的指令的处理器的高层框图;
图4B展示图4A的处理器的一个实施例的流水线;
图5为展示用图1、3与4A的寄存器等待时间表调度指令的方法的流程图;
图6为展示在图4A的处理器中处理指令的第一方法的流程图;
图7示出用延时N个时钟周期的矢量等待时间的快速复制重放寄存器等待时间表中的等待时间矢量的结构,以及
图8为展示图7的重放结构的操作的流程图。
下面描述本发明的示例性实施例。为了清楚起见,在本说明书中并不描述实际实现的所有特征。当然会理解在任何这种实际实施例的开发中,必须作出许多实现特定的决定来达到开发者的特定目标,诸如逐个实现不同的与系统相关及企业相关的制约的一致性。再者,应理解这一开发工作可能是复杂与费时的,但对具有本公开的教益的普通技术人员则是例行事务。
此后,发布群表示供基本上同时执行,即在同一时钟或调度周期中,调度的一组指令。在一些实施例中,发布群只包含一条指令。
特定指令的“实际等待时间”取决于该特定指令是否写或读寄存器。如果该特定指令读寄存器,则“实际等待时间”定义为执行对该寄存器写的指令序列中的较早指令的时间。如果该特定指令写该寄存器,则“实际等待时间”为指令序列中较早指令执行写入与读取该寄存器的时间。本发明的实施例根据“预期等待时间”调度各指令。本发明的实施例采用与该指令执行读或写无关的“预期等待时间”。
本发明的实施例根据“预期”而不是“实际”寄存器等待时间的确定来调度指令。在起动处理器时将“预期”寄存器等待时间复位到零。然后根据指令类型更新“预期”寄存器等待时间。例如,一个实施例分别用2、1与5个时钟脉冲的时间更新由任何加载、任何整数算术运算、及任何浮点算术运算指令写寄存器的预期寄存器等待时间。对预期寄存器等待时间的特定更新值取决于特定硬件实现而对本发明不是主要的。由于调度使用预期寄存器等待时间,一些实施例每次调度新指令时更新预期值,而其它实施例每次分派新指令供执行时更新预期值。
图1展示用于调度供执行的指令中的寄存器等待时间表10的一个实施例。寄存器等待时间表10为具有用于存储二进制等待时间矢量(即对应寄存器(未示出)的寄存器等待时间)的数行14、16、18的电子硬件结构。该寄存器等待时间表10还具有分别用于从其读出及向其写入等待时间矢量的至少一个端口12。寄存器等待时间表10的各行14、16、18响应来自时钟20的脉冲倒计数剩余预期等待时间段,即行14、16、18在时间上跟踪预期寄存器等待时间。
图2展示图1的寄存器等待时间表10的行14、16、18的一个特定实施例22,但本发明不限于此。对于所示的实施例,各行14、16、18为移位寄存器,它通过移位矢量(即除以整数2)倒计数存储在其中的等待时间矢量。寄存器等待时间表10的各行14、16、18作为“有限状态机”工作。“有限状态机”为硬件与一或多个寄存器的组合,硬件适用于推算存储在寄存器中的物理量,例如,行14、16、18适合于临时推算反映当前值的预期寄存器等待时间。
图2展示图1的寄存器等待时间表10的一个实施例中的行14、16、18之一的状态的时间演变。初始时,控制逻辑(未示出)将M个二进制位的二进制等待时间矢量24并行加载到存储M个二进制位的移位寄存器中。对应于N个时钟周期的等待时间的等待时间矢量具有N个带值1的接连的位及M-N个具有值0的接连的位。来自图1的时钟20的第一个脉冲25之后,寄存器将等待时间矢量24移位一个二进制位以生成具有N-1个接连的值1的位及M-N+1个接连的值0的位的新的等待时间矢量26。来自图1的时钟20的第二个脉冲27之后,寄存器将等待时间矢量26移位另一二进制位以生成具有N-2个值1的接连的位及M-N+2个值0的接连的位的新的等待时间矢量28。N个时钟周期之后,等待时间矢量(未示出)将包含M个值为0的位。图1的寄存器等待时间表10的各行14、16、18在图1的时钟20的每一个脉冲上将存储在其中的等待时间矢量移位一个二进制位。通过移位预期的等待时间,寄存器等待时间表10“跟踪”预期寄存器等待时间并从而存储预期寄存器等待时间的剩余部分。
预期寄存器等待时间的剩余部分为减去从上一次更新起经过的时间后剩余的预期寄存器等待时间。各种实施例可响应检索指令、调度指令、分派指令或在执行前的指令处理序列中另一时间上更新预期寄存器等待时间。
其它实施倒可使用跟踪寄存器等待时间表10的各行14、16、18中的预期寄存器等待时间的剩余部分的其它方法。在一个这种实施例中,寄存器等待时间表的行14、16、18可作为递减计数器工作,即在时钟20的每一个脉冲上从当前预期寄存器等待时间中减1。行14、16、18作为修改存储在其中的预期等待时间以反映当前物理值的“有限状态机”工作。
图3展示采用图1的寄存器等待时间表10来调度供执行的指令的分派的处理器30的部分。处理器30包含多个内部寄存器32、33、34用于存储指令读与写的数据。寄存器32、33、34构成寄存器堆36。在一些实施例中,寄存器等待时间表10与寄存器堆36具有相同数目的读端口12、37及相同数目的写端口12、37。寄存器等待时间表10的各行14、16、18为寄存器32、33、34之一存储静态等待时间矢量。寄存器等待时间表10与寄存器堆36两者都具有各内部寄存器32、34、36的一行。处理器30具有多个执行单元46、48。处理器30在预期其中的指令的寄存器32、33、34可以获得时或之后,即如用寄存器等待时间表10的等待时间矢量所确定的,调度要分派给执行单元46、48的一个指令发布群。
仍参见图3,处理器30利用寄存器等待时间表10来静态地实施程序相关性,即实施作为指令类型的函数的预期相关性。寄存器等待时间表10提供指令读或写的寄存器32、33、34的部分的等待时间的静态预期值。在静态预期等待时间之前,即在写寄存器32、33、34的部分的较早的指令的预期等待时间终止之前,处理器30并不分派指令。基于静态预期等待时间的调度能降低违犯指令相关性的次数。
在替代实施例中,指令是调度与分派给在执行阶段之前的流水线阶段的,使得指令以适当的预期等待时间最终到达执行阶段。
图4A示出采用图1的寄存器等待时间表10的流水作业处理器50。取出器/译码器52从存储器(未示出)中检索指令并生成可在硬件执行单元46、48上执行的经过译码的发布指令群。重新命名器54将处理器50内部的寄存器32、33、34的一部分分配给译码后的指令的哑操作数(dummy operand)。调度器56为各发布群静态地确定预期等待时间,并将该发布群与预期等待时间写到指令队列58的行(未示出)中。“静态地确定”表示处理器硬件根据指令类别分配固定的“预期等待时间”给指令。例如,一个实施例可分配给由所有加载、所有整数算术运算、及所有浮点指令写入的寄存器各自2、1与5个时钟脉冲的预期等待时间。指令队列58适应于分派各发布群给多个对齐的执行单元46、48以便并行地起动该发布群的指令的执行。处理器50利用寄存器等待时间表10来确定各发布群的预期等待时间,即该发布群的所有指令准备好分派的时段。退出单元60退出该发布群的指令及更新正常执行的发布群的指令队列58。
图4B示出图4A的处理器50的一个实施例的流水线62。在取出/译码阶段(FD)上,取出器/译码器52生成发送给重新命名器54的指令发布群。在重新命名阶段(RE)上,重新命名器54将一部分内部寄存器32、33、34分配给指令的哑操作数。在等待时间确定阶段(LA)上,调度器56在图4A的寄存器等待时间表10中搜索指令的寄存器32、34、36的等待时间矢量以确定在可以获得指令的源寄存器之前的预期时钟数。在LA阶段中,调度器56还确定发布群本身的预期等待时间。在排队阶段(QU)中,在一些实施例中调度器56完成发布群的预期等待时间。在QU阶段中,调度器56将附加预期等待时间的二进制代码段的发布群写到指令队列58中的地址上。在QU阶段中,调度器56还更新寄存器等待时间表10的等待时间矢量。在执行阶段(EX)中,在倒计数该发布群的预期等待时间之后,指令队列58分派下一发布群供执行。在退出阶段(RT)上,退出单元60退出适当地执行的指令。如熟悉本技术的人员所理解的,处理器流水线62中的FD、RE、LA、QU、EX及RT阶段的划分可以不象图4B中呈现的那样分明。例如,一或多个阶段可与其它阶段重叠。
仍参见图4B,阶段FD、RE、LA、QU、EX、及RT只是代表性的并且既不是穷尽的也不排斥可能出现在各种替代实施例中的阶段。从而,流水线62的阶段的精确结构与本发明的实践无关。
图5为展示用图1、3与4A的寄存器等待时间表10调度指令的方法63的流程图。在框64上,调度器56读取作为来自进入的发布群的指令的操作数出现的一部分寄存器32、33、34的预期等待时间,即图4B中的LA阶段。在框65上,调度器56从出现在其中的该部分寄存器32、33、34的预期等待时间中生成发布群的预期等待时间,即图4B中的LA或QU阶段。在一个实施例中,发布群的预期等待时间等于要由该发布群的指令写入的寄存器的最大等待时间。在框66上,指令队列58响应发布群的预期等待时间的终止分派发布群给执行单元46、48,即图4B中的QU至EX阶段。在框67上,调度器56确定寄存器32、33、34中哪些将由发布群写入,即QU阶段。在框68上,调度器56对将由发布群写入的寄存器32、33、34部分更新寄存器等待时间表10,例如通过从这些寄存器的剩余等待时间中减去发布群的等待时间。在框69上,寄存器等待时间表10响应时钟脉冲减少不由发布群写入的各寄存器的预期等待时间。框67、68与69是在逐个寄存器基础上执行的。在一个实施例中,更新发生在图4B的阶段QU中。在其它实施例中,更新发生在图4B的阶段EX中,即在分派而不是调度期间。
仍参见图5,各实施例在框68上采用不同公式用于更新预期寄存器等待时间。例如,更新可用当前预期寄存器等待时间与将要写入该寄存器的下一发布群的预期等待时间中的较大者替换寄存器等待时间表10的预期寄存器等待时间。用于更新寄存器的其它公式也是可能的。各种公式在分派各发布群时或之前起动更新预期寄存器等待时间。
参见图4A,指令队列58可以是顺序地分派发布群的循环缓冲器。指令队列58的指针(未示出)指示最后分派的发布群。指令队列58倒计数下一发布群的剩余等待时间,并响应下一发布群的等待时间终止相进指针来分派下一发布群。指令队列58在正在倒计数等待时间的分派周期中分派无指令发布群,即不执行操作的发布群。执行单元46、48不执行无指令发布群,且退出单元60退出无指令发布群而不从其提交任何结果给体系结构状态。在一些实施例中,执行与退出单元46、48、60用保留用来指示“无指令(NO-INSTRUCTION)”状态的一或多个专用位来识别无指令发布群。从而,当不预期有发布群准备好执行时,图4A的处理器50不停止图4B的指令流水线62。在图4B的流水线62中的RE阶段之后响应异常或执行错误,图4A的处理器50分派无指令发布群,而执行单元46、48不执行来自它的指令。图4A的处理器50可具有处理图4B的流水线62的LA阶段前面的阶段中出现的错误的其它装置与/或队列。图4B的流水线62没有停止网,否则它有可能降低操作速度,如在可停止的流水线中。
参见图4A与5,在框68上处理器50可使用第二公式来更新寄存器等待时间表10。在诸如IG1与IG2等两个顺序发布群之间,处理器50分派等于第二发布群的预期等待时间的X个无指令发布群,即X为IG2的预期等待时间。如果在调度上出现由IG2引起的更新,即框68与框64或65同时,上述第一更新公式可能过高估计后面的发布群的等待时间。例如,在分派IG2的X个无指令发布群时下一个发布群IG3将在指令队列58中等待。寄存器等待时间表10预期值计入IG2的分派与完成之间的时间,但并不考虑分派X个无指令时的等待。
仍参见图4A与5,在调度IG2时更新等待时间表的第二公式具有两个步骤。首先,调度器56从寄存器等待时间表10的所有预期寄存器等待时间中减去IG2的预期等待时间X。将负的预期寄存器等待时间取作零。第二,调度器56用剩余预期寄存器等待时间与将写入寄存器的发布群IG2的等待时间中的较大者替代寄存器等待时间表10中的各剩余预期寄存器等待时间。采用第二公式的实施例能够对后面的发布群(即IG3)提供较短的等待时间。
图6为在图4A的处理器50中处理指令的方法70的流程图。在框7l上调度器56从重新命名器54接收一新的指令发布群。在框72上,调度器56从寄存器等待时间表10中的预期寄存器等待时间中为该发布群确定预期等待时间。在一个实施例中,预期等待时间为作为该发布群的指令的源操作数的寄存器32、33、34的部分的最大等待时间。在框73上,调度器56将该发布群及预期等待时间写到指令队列58的下一位置上。在框74上,指令队列58响应发布群的预期等待时间的终止分派该发布群到执行单元46、48。在框75上,调度器56确定该发布群是否要写入各寄存器32、33、34。在框76上,调度器56更新确定要为分派的发布群写入的寄存器32、33、34的部分的等待时间。在框77上,时钟20响应时钟脉冲减少该发布群不写入的寄存器等待时间表10的寄存器32、33、34的部分的等待时间。在框76、77中执行的等待时间更新与减少为在框72上调度后面的发布群“跟踪”寄存器等待时间表10中的等待时间。
图7示出图1、3与4A的寄存器等待时间表10的重放(replay)结构100的一个实施例。线路102将进入等待时间矢量带给寄存器等待时间表10。线路102连接在多路复用器(MUX)104的第一组输入端上。MUX 104的输出端连接在寄存器等待时间表10的写端口108及第一组影子寄存器112的写端口110上。第一组影子寄存器112具有寄存器等待时间表10的各行14、16、18的独立寄存器,如图1与3中所示。第一组影子寄存器112为具有串联的输出端与输入端的相同的影子寄存器组112、116的系列114的第一成员。时钟122控制影子寄存器112、116的起动输入端118、120,从而时钟脉冲导致数据沿系列114向下传输。所示的系列114输出已延时了Q个时钟脉冲的寄存器等待时间表10的状态。最后一组影子寄存器116的输出端124连接在MUX 104的第二组输入端126上。重放控制128选择进入等待时间矢量的线路102或延时了影子系列114的等待时间矢量的第二输入端126,即重放的等待时间矢量。
仍参见图7,重放控制128能选择将来自线路102的新等待时间存储到或来自线路126的延时了时钟122的Q个周期的老等待时间矢量重新拷贝到寄存器等待时间表10中。系列114的各影子寄存器组112、114将重放的等待时间矢量延时时钟122的一个周期。重放控制128响应异常或执行错误选择重新拷贝延时的等待时间矢量到寄存器等待时间表10中。重新拷贝的步骤通过用寄存器等待时间表10的延时的拷贝重新播放图4B的流水线的剩余部分使得能从RE阶段后面的流水线阶段中出现的错误与异常中恢复。硬件(未示出)检测异常与/或错误及命令重放的时间延迟确定所需的延时及系列114的长度。从而,系列114的长度是与实现相关的。
参见图4A、4B与7,可命令在寄存器等待时间表10中重放等待时间矢量来处理与/或纠正异常与/或执行错误。将寄存器等待时间表10返回到与重新分派供重新执行以便从图4A-4D的不停止的流水线50、62中的异常与/或执行错误恢复的发布群关联的较早状态。重放结构100为用于延时与重放图1、3、4A的寄存器等待时间表的等待时间矢量的装置及用于通过重放处理图4B的不能停止的流水线62中的执行异常与错误的实施例。
图8为展示用图7的重放结构100重放寄存器等待时间表10的等待时间矢量的方法134的流程图。在框135上,图3或4A的处理器30、50判定是否要重放RE阶段后面的图4B的流水线62的部分,例如从执行异常或错误中恢复。在框136上,如果图3或4A的处理器30、50决定重放,重放控制128选择将新等待时间矢量带给MUX 104,即更新的线路102。在框138上,调度器56通过将新的等待时间矢量写入其中更新寄存器等待时间表10。调度器56同时将更新写入第一组影子寄存器112。在框140上,来自时钟122的定时脉冲将等待时间矢量沿影子寄存器组112、116的系列114向下传输。在框142上,重放控制器128响应图4A的处理器50决定重放RE阶段后面的流水线62,选择MUX 104的第二输入端126来接收来自最后的影子寄存器组116的经过延时的等待时间矢量。在框144上,重放结构100用来自MUX 104的延时的等待时间矢量更新寄存器等待时间表10及第一组影子寄存器112。然后图4A的指令队列58通过重新分派与寄存器等待时间表10的重新拷贝与延时的项关联的发布群实行重放。
从而,本发明提供了静态高度不同等待时间的指令的执行的机制,使得在执行时能获得操作数。该机制事先确定操作数的预期可获得性并根据需要分派无指令以便无须停止流水线便能获得发布群供执行。从而,虽然本发明不限于此,本发明在诸如采用重放而非停止的不能停止的流水线中特别有用。在这种不能停止的流水线中,本发明起动引入延时,而传统上这是在面对非单位等待时间的指令时通过停止流水线引入的。
上面公开的特定实施例只是示例性的,由于对具有这里的教益的本技术中的熟练技术人员,显而易见可以以不同但等效的方式修改与实践本发明。此外,除了下面权利要求中所描述的以外,没有对这里所示的构造或设计的细节进行限定的意图。因此显而易见可以改变或修正上面公开的特定实施例并将所有这些改变认为是在本发明的范围与精神之内。从而,这里寻求的保护是在下面的权利要求中陈述的。

Claims (47)

1.一种装置,包括:
时钟;以及
具有多行及一或多个端口的电子硬件结构,各行适用于记录通过端口之一写入的等待时间矢量,存储在其中的等待时间矢量是对时钟敏感的。
2.权利要求1中所述装置,其中各行包含移位寄存器,它进一步包含电连接在时钟上的移位控制。
3.权利要求1中所述装置,还包括:
多个寄存器;以及
其中各行为一有限状态机。
4.权利要求3中所述装置,其中该等待时间矢量为调度的指令与调度的指令发布群之一的预期等待时间。
5.权利要求3中所述装置,其中该多个寄存器属于一个寄存器堆,该寄存器堆与该电子硬件结构具有相同数目的读端口及相同数目的写端口。
6.权利要求3中所述装置,其中该多个寄存器属于一个寄存器堆,该寄存器堆与该电子硬件结构具有相同数目的行,行数为该寄存器堆中的寄存器数。
7.权利要求1中所述装置,还包括:
至少一个执行单元;以及
根据假定这些操作数是可获得的预期的指令的操作数的等待时间矢量将指令分派给执行单元的设备。
8.权利要求7中所述装置,还包括至少一个其它执行单元、根据假定发布群的指令的操作数是可获得的预期的等待时间矢量分派发布群给执行单元的设备。
9.权利要求1中所述装置,还包括:
适应于将输入信号延时预选择的时钟周期数的一系列影子寄存器组,各组具有用于该电子硬件结构的各行的一个寄存器;以及
具有第一与第二输入端及输出端的多路复用器,第一输入端接收等待时间矢量,第二输入端接收来自影子寄存器组的系列的输出端的信号,多路复用器的输出端同时与电子硬件结构及影子寄存器组系列的输入端连接。
10.权利要求1中所述装置,还包括用于在电子硬件结构中延时及重放等待时间矢量的装置。
11.一种处理器,包括:
包含多个寄存器的寄存器堆;
执行指令的多个执行单元,一部分指令执行写入与读出寄存器之一;
跟踪这些寄存器的预期寄存器等待时间的寄存器等待时间表;以及
更新该寄存器等待时间表的等待时间的时钟。
12.权利要求11中所述处理器,其中该寄存器等待时间表及该寄存器堆都具有用于每一个寄存器的一行。
13.权利要求12中所述处理器,其中该寄存器等待时间表及该寄存器堆具有相同数目的读端口及相同数目的写端口。
14.权利要求11中所述处理器,还包括利用寄存器等待时间表的预期寄存器等待时间调度发布群供分派给执行单元的调度程序。
15.权利要求14中所述处理器,其中该调度程序调度发布群供分派,该分派是响应发布群的指令的一部分寄存器的预期寄存器等待时间的终止执行的。
16.权利要求14中所述处理器,还包括指令队列,该调度程序适应于将第一发布群与第一发布群的预期等待时间写到指令队列中,该指令队列响应倒计数第一发布群的预期等待时间分派第一发布群。
17.权利要求16中所述处理器,其中该执行单元、调制程序、及指令队列是流水线的元件,该流水线是不能停止的。
18.权利要求11中所述处理器,还包括:
将输入信号延时预选择的时钟周期数的影子寄存器组系列;以及
具有接收等待时间矢量的第一输入端及接收来自该影子寄存器组系列的信号的第二输入端的多路复用器,该多路复用器的输出端并行连接在寄存器等待时间表的输入端及影子寄存器组系列的输出端上。
19.权利要求18中所述处理器,还包括适应于响应选择的执行错误与异常选择多路复用器的第二输出的重放控制器。
20.一种在处理器中分派指令的方法,包括:
对寄存器等待时间表的一部分行更新多个预期等待时间,这部分行对应于特定寄存器;以及
响应时钟脉冲减少其它行中剩余的预期等待时间。
21.权利要求20中所述方法,还包括:
读取第二部分行的预期等待时间,第二部分行对应于分配给第一发布群的指令的寄存器部分;以及
响应读出第二部分行的预期等待时间的终止,分派第一发布群供执行。
22.权利要求21中所述方法,其中该第一发布群只包含一条指令。
23.权利要求20中所述方法,其中更新预期等待时间的动作是响应调度一或多条指令的,各该一或多条指令读取特定寄存器之一及写入特定寄存器之一。
24.权利要求20中所述方法,其中该更新动作是响应调度第二指令发布群执行的,第二发布群写入特定寄存器。
25.权利要求24中所述方法,其中该减少动作是响应判定第二发布群将不写入对应于其它行的寄存器而对其它行执行的。
26.权利要求21中所述方法,其中该更新预期等待时间的动作是响应分派一或多条指令的动作的,各该一或多条指令执行读取特定寄存器之一及写入特定寄存器之一中的一种。
27.权利要求21中所述方法,其中该分派动作包括将第一发布群的各指令发送到不同的执行端口。
28.权利要求21中所述方法,还包括:
将第一发布群的指令写到指令队列的行中;以及
其中该分派动作响应该行指令的预期寄存器等待时间的终止,发送来自指令队列一行的所有指令供执行。
29.权利要求28中所述方法,其中该更新、读取、分派及写入动作并不包含在以其传输结果给下一阶段之前判定处理器的下一阶段是否准备好。
30.一种在处理器中执行指令的方法,包括:
接收指令的发布群;
从分配给该发布群的指令的一部分寄存器的预期等待时间中确定该发布群的预期等待时间;
更新该发布群要写入的寄存器的预期寄存器等待时间,该发布群的预期等待时间确定预期寄存器等待时间的更新;
将该发布群写到指令队列中;以及
响应该发布群的预期等待时间的终止,分派该发布群供执行。
31.权利要求30中所述方法,其中指令的预期等待时间为在该指令的源寄存器可获得时的静态预期值。
32.权利要求30中所述方法,进一步包括响应时钟脉冲跟踪预期寄存器等待时间。
33.权利要求30中所述方法,其中该写入动作将发布群放置在指令队列的下一个顺序位置中,及其中该调度动作在分派了较早的发布群之后发送写入的发布群。
34.权利要求30中所述方法,其中该更新预期寄存器等待时间的动作是响应分派发布群供执行而进行的。
35.权利要求30中所述方法,其中该接收、更新、确定、放置、及分派动作并不包含在从其传输结果给下一阶段之前判定处理器的下一阶段是否准备好。
36.一种处理器,包括:
检索指令的指令取出单元;
多个寄存器;
跟踪寄存器的预期寄存器等待时间的寄存器等待时间表;
存储多个指令发布群的指令队列;
为从指令队列接收的各发布群的指令的并行执行对齐的多个执行单元;以及
将发布群写到指令队列中的调度程序,该指令队列响应特定发布群的预期等待时间的终止分派该特定发布群。
37.权利要求36中所述处理器,该调度程序为发布群确定预期等待时间及将预期等待时间写到指令队列中。
38.权利要求37中所述处理器,其中发布群的第一个的预期等待时间是作为该第一个发布群的指令的源操作数出现的寄存器的预期寄存器等待时间中的最大者。
39.权利要求36中所述处理器,其中该寄存器等待时间表适应于响应给定指令的分派更新给定寄存器的预期寄存器等待时间,该给定指令是写入与读出该给定寄存器中的一种。
40.权利要求36中所述处理器,其中该寄存器等待时间表适应于响应时钟脉冲跟踪预期寄存器等待时间。
41.权利要求36中所述处理器,其中该指令队列适应于以先进先出方式分派发布群给执行单元。
42.权利要求36中所述处理器,包括:
包括一或多个影子寄存器组的系列,适应于将输入信号延时预选择的时钟周期数,该组的一个寄存器对应于寄存器等待时间表的各行;以及
具有接收等待时间矢量的第一输入端及接收来自该系列的最后一组的信号的第二输入端的多路复用器,该多路复用器的输出端同时连接在寄存器等待时间表及影子寄存器组系列的输入端上。
43.权利要求39中所述处理器,还包括用于延时预期寄存器等待时间的更新的装置及用于响应执行异常与错误之一重放预期寄存器等待时间的装置。
44.权利要求39中所述处理器,其中该处理器具有不能停止的流水线的形式。
45.一种执行与重放指令的方法,包括:
响应调度发布群将分配给该指令发布群的寄存器部分的等待时间矢量写到寄存器等待时间表及影子寄存器组系列中;
分派该发布群给执行单元而不判定执行单元是否可以获得;
将写入系列的等待时间矢量延时预选择的时段,以及
响应在执行该发布群中检测到执行异常与错误之一将延时的等待时间矢量从系列写到寄存器等待时间表中。
46.权利要求45中所述方法,还包括响应检测到指令部分中的执行异常及错误将该发布群的一部分指令重新分派给执行单元。
47.权利要求46中所述方法,还包括响应判定要分派的下一个发布群具有非零预期等待时间,分派无指令发布群给执行单元。
CNB998120030A 1998-08-11 1999-08-10 以不同等待时间调度指令 Expired - Fee Related CN1138205C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/132043 1998-08-11
US09/132,043 US6035389A (en) 1998-08-11 1998-08-11 Scheduling instructions with different latencies

Publications (2)

Publication Number Publication Date
CN1323412A true CN1323412A (zh) 2001-11-21
CN1138205C CN1138205C (zh) 2004-02-11

Family

ID=22452183

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB998120030A Expired - Fee Related CN1138205C (zh) 1998-08-11 1999-08-10 以不同等待时间调度指令

Country Status (6)

Country Link
US (1) US6035389A (zh)
JP (1) JP3984786B2 (zh)
CN (1) CN1138205C (zh)
AU (1) AU5550699A (zh)
HK (1) HK1041947B (zh)
WO (1) WO2000010076A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103309759A (zh) * 2012-03-06 2013-09-18 智邦科技股份有限公司 一种操作系统中断服务的检测方法

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3881763B2 (ja) * 1998-02-09 2007-02-14 株式会社ルネサステクノロジ データ処理装置
US6304953B1 (en) * 1998-07-31 2001-10-16 Intel Corporation Computer processor with instruction-specific schedulers
US6304955B1 (en) * 1998-12-30 2001-10-16 Intel Corporation Method and apparatus for performing latency based hazard detection
US6219781B1 (en) * 1998-12-30 2001-04-17 Intel Corporation Method and apparatus for performing register hazard detection
US6631452B1 (en) * 2000-04-28 2003-10-07 Idea Corporation Register stack engine having speculative load/store modes
US7127422B1 (en) * 2000-05-19 2006-10-24 Etp Holdings, Inc. Latency monitor
US20040064678A1 (en) * 2002-09-30 2004-04-01 Black Bryan P. Hierarchical scheduling windows
US20040064679A1 (en) * 2002-09-30 2004-04-01 Black Bryan P. Hierarchical scheduling windows
US7454747B2 (en) * 2003-02-07 2008-11-18 Sun Microsystems, Inc. Determining maximum acceptable scheduling load latency using hierarchical search
US20040158694A1 (en) * 2003-02-10 2004-08-12 Tomazin Thomas J. Method and apparatus for hazard detection and management in a pipelined digital processor
US7590063B2 (en) * 2003-11-10 2009-09-15 Honeywell International Inc. Real-time estimation of event-driven traffic latency distributions when layered on static schedules
US7502912B2 (en) * 2003-12-30 2009-03-10 Intel Corporation Method and apparatus for rescheduling operations in a processor
US20050147036A1 (en) * 2003-12-30 2005-07-07 Intel Corporation Method and apparatus for enabling an adaptive replay loop in a processor
US20050216900A1 (en) * 2004-03-29 2005-09-29 Xiaohua Shi Instruction scheduling
US7257700B2 (en) * 2004-06-03 2007-08-14 Sun Microsystems, Inc. Avoiding register RAW hazards when returning from speculative execution
US7418625B2 (en) * 2004-09-09 2008-08-26 Broadcom Corporation Deadlock detection and recovery logic for flow control based data path design
WO2006134693A1 (ja) * 2005-06-15 2006-12-21 Matsushita Electric Industrial Co., Ltd. プロセッサ
US20160098279A1 (en) * 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
GB2447907B (en) * 2007-03-26 2009-02-18 Imagination Tech Ltd Processing long-latency instructions in a pipelined processor
US7913067B2 (en) * 2008-02-20 2011-03-22 International Business Machines Corporation Method and system for overlapping execution of instructions through non-uniform execution pipelines in an in-order processor
US20090271237A1 (en) * 2008-04-28 2009-10-29 Rail Insight, Llc Optimizing Rail Shipments for Commodity Transactions
US9405975B2 (en) 2010-03-26 2016-08-02 Brain Corporation Apparatus and methods for pulse-code invariant object recognition
US8467623B2 (en) * 2010-03-26 2013-06-18 Brain Corporation Invariant pulse latency coding systems and methods systems and methods
US9122994B2 (en) 2010-03-26 2015-09-01 Brain Corporation Apparatus and methods for temporally proximate object recognition
US9311593B2 (en) 2010-03-26 2016-04-12 Brain Corporation Apparatus and methods for polychronous encoding and multiplexing in neuronal prosthetic devices
US9152915B1 (en) 2010-08-26 2015-10-06 Brain Corporation Apparatus and methods for encoding vector into pulse-code output
JP2012173755A (ja) * 2011-02-17 2012-09-10 Nec Computertechno Ltd 情報処理装置及び情報処理方法
US9070039B2 (en) 2013-02-01 2015-06-30 Brian Corporation Temporal winner takes all spiking neuron network sensory processing apparatus and methods
US9047568B1 (en) 2012-09-20 2015-06-02 Brain Corporation Apparatus and methods for encoding of sensory data using artificial spiking neurons
US9098811B2 (en) 2012-06-04 2015-08-04 Brain Corporation Spiking neuron network apparatus and methods
US9224090B2 (en) 2012-05-07 2015-12-29 Brain Corporation Sensory input processing apparatus in a spiking neural network
US9129221B2 (en) 2012-05-07 2015-09-08 Brain Corporation Spiking neural network feedback apparatus and methods
US9412041B1 (en) 2012-06-29 2016-08-09 Brain Corporation Retinal apparatus and methods
US9311594B1 (en) 2012-09-20 2016-04-12 Brain Corporation Spiking neuron network apparatus and methods for encoding of sensory data
US9183493B2 (en) 2012-10-25 2015-11-10 Brain Corporation Adaptive plasticity apparatus and methods for spiking neuron network
US9111226B2 (en) 2012-10-25 2015-08-18 Brain Corporation Modulated plasticity apparatus and methods for spiking neuron network
US9218563B2 (en) 2012-10-25 2015-12-22 Brain Corporation Spiking neuron sensory processing apparatus and methods for saliency detection
US9275326B2 (en) 2012-11-30 2016-03-01 Brain Corporation Rate stabilization through plasticity in spiking neuron network
US9123127B2 (en) 2012-12-10 2015-09-01 Brain Corporation Contrast enhancement spiking neuron network sensory processing apparatus and methods
US9177245B2 (en) 2013-02-08 2015-11-03 Qualcomm Technologies Inc. Spiking network apparatus and method with bimodal spike-timing dependent plasticity
US9009545B2 (en) * 2013-06-14 2015-04-14 International Business Machines Corporation Pulsed-latch based razor with 1-cycle error recovery scheme
US9239985B2 (en) 2013-06-19 2016-01-19 Brain Corporation Apparatus and methods for processing inputs in an artificial neuron network
US9436909B2 (en) 2013-06-19 2016-09-06 Brain Corporation Increased dynamic range artificial neuron network apparatus and methods
US11210098B2 (en) * 2013-07-15 2021-12-28 Texas Instruments Incorporated Variable latency instructions
US9552546B1 (en) 2013-07-30 2017-01-24 Brain Corporation Apparatus and methods for efficacy balancing in a spiking neuron network
US9489623B1 (en) 2013-10-15 2016-11-08 Brain Corporation Apparatus and methods for backward propagation of errors in a spiking neuron network
US9939253B2 (en) 2014-05-22 2018-04-10 Brain Corporation Apparatus and methods for distance estimation using multiple image sensors
US10194163B2 (en) 2014-05-22 2019-01-29 Brain Corporation Apparatus and methods for real time estimation of differential motion in live video
US9713982B2 (en) 2014-05-22 2017-07-25 Brain Corporation Apparatus and methods for robotic operation using video imagery
US9848112B2 (en) 2014-07-01 2017-12-19 Brain Corporation Optical detection apparatus and methods
US10057593B2 (en) 2014-07-08 2018-08-21 Brain Corporation Apparatus and methods for distance estimation using stereo imagery
US10055850B2 (en) 2014-09-19 2018-08-21 Brain Corporation Salient features tracking apparatus and methods using visual initialization
US9881349B1 (en) 2014-10-24 2018-01-30 Gopro, Inc. Apparatus and methods for computerized object identification
US9563428B2 (en) * 2015-03-26 2017-02-07 International Business Machines Corporation Schedulers with load-store queue awareness
US10197664B2 (en) 2015-07-20 2019-02-05 Brain Corporation Apparatus and methods for detection of objects using broadband signals
TWI587218B (zh) * 2016-09-10 2017-06-11 財團法人工業技術研究院 記憶體事務層級模型模擬方法及系統
US10558460B2 (en) * 2016-12-14 2020-02-11 Qualcomm Incorporated General purpose register allocation in streaming processor
CN108334326A (zh) * 2018-02-06 2018-07-27 江苏华存电子科技有限公司 一种低延迟指令调度器的自动管理方法
US11263013B2 (en) * 2020-04-07 2022-03-01 Andes Technology Corporation Processor having read shifter and controlling method using the same
US11829187B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Microprocessor with time counter for statically dispatching instructions
US11954491B2 (en) 2022-01-30 2024-04-09 Simplex Micro, Inc. Multi-threading microprocessor with a time counter for statically dispatching instructions
US11829767B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Register scoreboard for a microprocessor with a time counter for statically dispatching instructions
US11829762B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Time-resource matrix for a microprocessor with time counter for statically dispatching instructions

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5657315A (en) * 1995-06-01 1997-08-12 International Business Machines Corporation System and method for ring latency measurement and correction
US5745724A (en) * 1996-01-26 1998-04-28 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US5828868A (en) * 1996-11-13 1998-10-27 Intel Corporation Processor having execution core sections operating at different clock rates

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103309759A (zh) * 2012-03-06 2013-09-18 智邦科技股份有限公司 一种操作系统中断服务的检测方法

Also Published As

Publication number Publication date
CN1138205C (zh) 2004-02-11
JP3984786B2 (ja) 2007-10-03
JP2002522841A (ja) 2002-07-23
US6035389A (en) 2000-03-07
HK1041947B (zh) 2004-12-10
WO2000010076A1 (en) 2000-02-24
HK1041947A1 (en) 2002-07-26
AU5550699A (en) 2000-03-06

Similar Documents

Publication Publication Date Title
CN1138205C (zh) 以不同等待时间调度指令
CN100382061C (zh) 按照类型对中断计数的方法和装置
CN100407147C (zh) 为记录事件提供前置与后置处理程序的方法
JP3093639B2 (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
CN100449499C (zh) 在微处理器恢复单元中进行写队列读数据的方法和装置
US5463745A (en) Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
US8855994B2 (en) Method to simulate a digital system
US6542985B1 (en) Event counter
CN101706713B (zh) 改善乱序超纯量执行单元的微处理器及方法
KR100280161B1 (ko) 순서를 벗어난 작업처리 방법 및 장치
CN1340760A (zh) 分区的发送队列和分配策略
US20140164746A1 (en) Tracking Multiple Conditions in a General Purpose Register and Instruction Therefor
RU2142157C1 (ru) Способ функционирования системы обработки
US20170357508A1 (en) Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US4943915A (en) Apparatus and method for synchronization of a coprocessor unit in a pipelined central processing unit
EP0927931B1 (en) Interruptable multiple execution unit processing during operations utilizing multiple assignment of registers
US20180004527A1 (en) Operation of a multi-slice processor implementing prioritized dependency chain resolution
KR0122527B1 (ko) 슈퍼스칼라 프로세서 시스템에서 비순차적 명령어의 디스패치 및 실행을 위한 방법 및 시스템
CN1151047A (zh) 将指令装入指令高速缓冲存储器中的方法
JPH096612A (ja) カウント・レジスタおよびリンク・レジスタへの書込みを行う多重分岐命令を処理するための方法と装置
JP3170472B2 (ja) レジスタ・リマップ構造を有する情報処理システム及び方法
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
KR100639146B1 (ko) 카테시안 제어기를 갖는 데이터 처리 시스템
US6360315B1 (en) Method and apparatus that supports multiple assignment code
CN1242546A (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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20040211

Termination date: 20110810