CN1158596C - 使用相关矩阵的调度操作 - Google Patents

使用相关矩阵的调度操作 Download PDF

Info

Publication number
CN1158596C
CN1158596C CNB99812298XA CN99812298A CN1158596C CN 1158596 C CN1158596 C CN 1158596C CN B99812298X A CNB99812298X A CN B99812298XA CN 99812298 A CN99812298 A CN 99812298A CN 1158596 C CN1158596 C CN 1158596C
Authority
CN
China
Prior art keywords
project
micro
order
scheduling queue
row
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
CNB99812298XA
Other languages
English (en)
Other versions
CN1331816A (zh
Inventor
A��A��÷Ǯ��
A·A·梅钱特
D·J·萨格尔
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 CN1331816A publication Critical patent/CN1331816A/zh
Application granted granted Critical
Publication of CN1158596C publication Critical patent/CN1158596C/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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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/3838Dependency mechanisms, e.g. register scoreboarding

Abstract

使用相关矩阵(520)的方法和装置。子操作依赖于父操作的完成,比如当子操作的其中一个源是父操作的目的时。对应子操作的项目与调度队列(510)中的其它项目比较。比较的结果存储在相关矩阵(520)。相关矩阵(520)中每一行对应调度队列(510)中一个项目的相关性。然后,调度队列(510)中的项目可以根据相关矩阵(520)中的信息来调度,诸如当对应项目的整个行被清除时。

Description

使用相关矩阵的调度操作
发明领域
本发明涉及处理器内的调度操作。更进一步说,本发明涉及使用相关矩阵的调度操作的方法和装置。
发明背景
处理器的主要功能是执行操作流,如计算机指令流。一些处理器设计为执行完流的一项操作后,才能开始执行下一项操作。用这些“按顺序的”处理器,一项操作的结果可以为后面的依赖于它的操作正确使用。请看下面的指令:
装载存储器-1---寄存器-X
添加寄存器-X寄存器-Y----寄存器-Z
第一条指令把存储器-1的内容装入寄存器-X。第二条指令把寄存器-X的内容添加到寄存器-Y,并将结果存储到寄存器-Z。第二条指令是依赖于第一条指令或“父”操作的“子”操作。如果第一条指令的结果在执行第二条指令之前没有存入寄存器-X,不正确的结果将被存入寄存器-Z。应该注意,一个操作可能有不止一个父操作,不止一个子操作,或对不同的操作而言,可能既是父操作又是子操作。
为了提高处理器的性能,可以“不按顺序的”执行操作。比方说,如果流中一条指令的数据在特定的时间没有准备好,处理器可以执行流中后面的其它指令。这种情况下,“调度器”可以调度指令,以便让子指令不在其父指令之前执行。这样,在第一条指令的数据准备好之前,处理器用不着保持等待,因而改进了处理器的性能。
计算机指令不只是操作具有这样的相关性。比如,存储操作可以被调度,以使信息在被随后的操作从该存储单元读出之前,可以存入一个存储单元。其它示例包括基于有限的执行资源、存储资源、寄存器资源、可用的插槽或可用的总线的调度操作。借助示例,也被记为“uops”或“μops”的微指令的调度操作,将用来描述已知的调度技术。
图1为处理指令和微指令的已知系统的略图。系统包括取指令和解码引擎110。它把指令流解码为一串有顺序的微指令,微指令表明指令流的数据流动。指令可以被解码为,如具有两个逻辑源和一个逻辑目标的微指令。微指令从取指令和解码引擎110“发送”到重命名和分配单元120。如果处理器的物理寄存器数量有限,重命名和分配单元120变换逻辑寄存器索引为物理寄存器索引。
之后,微指令被送到调度器130,调度器130存储了几个待定的微指令并从这个组或“队列”中选出接下来要执行的微指令。调度器130选择微指令,使子微指令不能在其父微指令之前执行。也就是说,调度器130判定微指令使用的每一个源寄存器是否都准备好了。如果该微指令的所有源都准备好,而且执行资源也是可以使用的,就将微指令送,或“发送”到执行操作的执行资源140。因此,微指令是根据数据流动约束条件和可使用的资源发送的,而不是根据其在流中的原始顺序发送。
已知的调度器一般是根据“Tomasulo”调度器。图2是这种Tomasulo调度器的方框图,示出了两个已经被调度器200接收的微指令。Add1和Add2。每个微指令有两个源和一个目的。Add1求寄存器1(r1)和寄存器2(r2)的内容的和。其结果存储在r3。Add2求r3和r2的内容的和,并把结果存储在r4。正如所见,Add2依赖于Add1,是Add1的子操作。调度器200有一个10位的记分板210,用来跟踪准备好的寄存器。每一位代表一个寄存器,如“0”表示寄存器没有准备好,“1”表示寄存器已经准备好了。如果Add1没有执行,记分板210内关于r3的那一位就设为“0”,表明r3没有准备好。
活动的调度器220使用记分板210判断微指令是否准备好发送。比如,涉及到Add2时,活动的调度器220查看关于r3和r2的位。如果记分板210上表明两个源都已经准备好,活动的调度器220就发送将执行的微指令。如果其中一个源不能使用,就不发送微指令。执行微指令后,记分板210被更新,表明:现在4已经准备好。
图3,图示关于Tomasulo调度器的电路原理。当微指令被写或分配到Tomasulo调度器时,它的源就从记分板210读取。如果记分板210表明源已经准备好,微指令就可以发送。在记分板210内准备好的源在调度器内记为准备好。没有准备好的源将监视结果总线。待定的微指令的源寄存器310的值与在其目的、或结果、使用比较器组320的总线上完成了的微指令的值相反。比较器组320的输出,输入到普通的或门330,普通或门330的输出被存储为第一个源的准备位340。执行相同的逻辑(图3未示出),生成待定微指令的第二个源的准备位。通过逻辑门350的输出判断,待定的微指令的源准备好时,微指令就准备好发送。对每一个待定的微指令重复使用这一逻辑,就象从项目1到n。如果有多个微指令准备好发送,优先逻辑360决定将发送哪一个微指令。执行查找,以判定发送的微指令的目的寄存器370以及该值在结果总线上的驱动。
如图4所示,Tomasulo调度器使用“紧密的”调度回路。对每个待定的微指令,调度器监视结果总线,并在410比较执行了的微指令的目的与待定的微指令的源。接下来,调度器执行准备好的目的逻辑420,去判定待定微指令的发送准备就绪。对待定微指令使用的每一个源,在410执行比较的结果在430进行或运算。然后,每个源的结果在440进行与运算。只有当每个源都准备好了,调度器才判定微指令已经准备好发送。
几条微指令可能同时准备好发送。如果不止一条微指令准备好了,在450执行按优先顺序排列,决定首先发送哪一条准备好的微指令。最后,在460发送待定的微指令。发送微指令后,调度器重复执行上述操作,使紧密的调度回路判断待定的微指令什么时候准备好执行。
然而,已知的调度技术存在许多缺点。比方说,提高时钟频率的基本出发点是为了减少指令延时。假设一个程序的一部分含有连续的N条指令I1、I2、…,IN。程序的这一部分也可以包含任何其它指令,又假设每条指令要求将在之前的指令的结果作为输入。这一程序的执行时间不能少于T=L1+L2+…+LN,这里Ln是指令In的延时,即使处理器能够并行的执行大量的指令。因此,想更快执行该程序的唯一途径就是减少指令的延时。
此外,当流中的每条微指令依赖于先前的微指令时,对每条发送的微指令,调度器都必须完全重复执行紧密的调度回路。这变成了每条微指令的最小的“延时”。微指令的延时可以定义为从它的输入操作码准备好开始到其结果被其它微指令使用为止的一级时间。另外,通过如图1所示的多级系统的指令的速度受到链路中最慢的单元,或“薄弱环节”的限制。
处理器的速度,记为微指令每秒,或S,可以表示为S=P/L,其中的P为平均并行操作,L为平均的微指令延时,单位为秒。调度器的主要优点是它增加了P的值,提高了处理器的性能。但是,执行单元一般能够用比紧密的调度回路延时更少的延时执行普通的微指令,如加法运算。所以,使用调度器也增加了L的值,从而又限制了处理器的性能。
比如,比较发送的微指令的目的寄存器与所有待定的微指令的所有源可能要用很长时间,如从4到6的门电路的操作。这种额外的准备判断逻辑需要1个或2个门,按优先顺序排列还需要1或2个门,目的查找需要2或3个门,结果是紧密的回路需要8到13个门电路操作。还有,调度器还要监视大量不同的结果总线,这增加了必须执行的比较的数量。处理器使用的寄存器的数量增加了,也增加了处理器操作的频率,使得当前的调度操作系统是不实用的。
发明概述
按照本发明的实施方案,一个将在处理器中被调度的操作被接收。判断接收到的操作是否依赖于父操作的完成,以及接收到的操作在父操作之后被调度。
本发明公开了一种在处理器中调度操作的方法,包括:接收要调度的第一操作;判断无序调度队列中哪些位置可获得用以存储接收到的操作;根据所述判断,把对应第一操作的项目放到该无序调度队列的一个位置中;比较第一操作与调度队列中的其它项目,判断是否有另一个项目对应第一操作的父操作;把对应于所说的比较结果的父操作状态信息存储到相关矩阵;至少部分地根据存储在相关矩阵中的父操作状态信息,发送调度队列中的一个项目;以及复位对应于所发送项目的指示符,以指示无序调度队列中的对应位置可用于再使用。
本发明还公开了一种在处理器中调度新发布的操作的方法,新发布的操作具有一个源和一个目的,包括:当确定对于项目的位置可获得时,把操作分配到无序调度队列中的项目;比较分配的操作的源与调度队列中待定的操作的目的;根据所说的比较的结果,设定对应分配的操作的项目的相关矩阵的行,相关矩阵中的各列对应调度队列中的一个项目;根据相关矩阵中对应该项目的行的信息,判断分配的操作是否准备好发送;如果所述判断确定分配的操作准备好发送,则发送分配的操作用于执行;当所发送的操作已被执行时,清除和所发送的操作相关的相关矩阵中的列;以及解除分配和所发送操作相关的调度队列中的项目。
附图简述
图1是处理指令和微指令的已知的系统略图。
图2是已知的处理器中调度操作的Tomasulo调度器的方框图。
图3图示了关于Tomasulo调度器的电路。
图4图示了已知的在处理器中的调度操作方法的流程图。
图5图示根据本发明实施方案的矩阵调度器。
图6A到图6C图示了根据本发明实施方案的使用相关矩阵的调度操作。
图7是根据本发明实施方案的调度电路的方框图。
图8图示了根据本发明实施方案的5级流水线矩阵调度器。
图9是根据本发明实施方案的调度操作方法的流程图。
发明详述
本发明的一个实施方案是一种使用相关矩阵的调度操作的方法和装置。现在请参见附图,其中相同的部分从头至尾用相同的数字标识,图5图示了根据本发明实施方案的矩阵调度器500。输入矩阵调度器500的各个微指令被放入调度队列中的一个位置或项目。如图5所示的矩阵调度器含有4个这样的项目,标记“0”到“3”。每个项目有一个有效位表示是否有微指令在该位置上。在图5中用”V”表示,位置1包含微指令B。应当理解“V”能够表示,如,位具有值“1”。同样的,位置3包含微指令A,以及位置0和位置2为空。调度队列510也包括各项目的目的寄存器。并将目的寄存器的集合称作“目的寄存器文件”。如图5所示,微指令B的结果将放入寄存器1(r1),微指令A的结果将放入r3
输入微指令的流是按顺序的,所以输入微指令的父指令或是矩阵调度器500中待定的或是已经发送了的。也就是说,父微指令绝不会在子微指令之后输入矩阵调度器500。如果调度队列510的项目之间的相关性易于设定和保持,比较起结合图4所描述的调度回路来说,时间消耗可以减少。根据本发明实施方案,这可以通过使用相关矩阵520来完成。
相关矩阵520中的每一位或元素,符合在一个队列位置与另一个队列位置的相关性。比如,1行3列中的“D”表示在项目1或微指令B中的微指令依赖于在项目3或微指令A中的微指令生成的结果。也就是说,微指令B将微指令A的目的,或r3用作源。应当可以理解,“D”能够代表,比如,具有值“1”的位。由于微指令不能依赖于它自己,沿着相关矩阵520的对角线的各块都标记为“X”。注意:“行”和“列”具有特殊相关性的相关矩阵在这里用作示例,其它结构,如经过“行”和“列”变换的矩阵也可以使用。
当一条新的微指令输入调度队列510时,分配逻辑确定使用哪一个可得到的位置。之后,输入的微指令就用写入端口(图5中未示出)写入该位置,以及输入微指令的源与使用比较(CAM)口(图5也未示出)的寄存器文件匹配。输入微指令的源与待定的微指令的目的之间的匹配表示输入微指令依赖于待定的项目,以及“D”被存储在相关矩阵520的适当的位置。
用这样的方法。相关矩阵520表明哪一条微指令已经准备好发送。具有任何相关位设定的微指令必须等待相应该位的父指令发送。如图5所示,微指令A可以发送,因为在3行中没有“D”,而微指令B不能准备发送,由于它必须等待其在微指令A的相关性发送,如1行3列中的“D”所示。矩阵调度器500内的各个项目的发送状态,由准备判断逻辑决定,可以存储为发送逻辑位530。如果同时有许多微指令准备好发送,可以使用优先逻辑来决定首先发送哪一条微指令。最后,再分配逻辑判断调度队列510中的哪一条微指令需要“重新分配”,或判断队列中的哪一个位置为空,可以再使用。
发送微指令时,相关矩阵520中的相应列被清除,由于对应依赖于发送了的微指令的微指令的列中的所有位已经被设定。图5中用箭头表示,微指令A发送时,3列被清除。这里清除了1行3列中的“D”,并为下一个周期发送微指令B作准备。这就是矩阵调度器500的调度回路,它比传统的Tomasulo调度器更快,图4中所示的比较和目的查找都被取消了。准备判断逻辑,仅仅是查看整行是否被清除,可以象多米诺逻辑中简单的有线或门结构一样实现。这样的电路的频率可以设计得很高。
图6A到图6C,图示了微指令是如何运行的,通过具有按照本发明的实施方案的相关矩阵620的调度器。如图6A所示,调度器包括8位的无顺序的调度队列610,标记“0”到“7”,但是所有位置的编号都可以使用。调度队列610中的各个位置包含有效指示和关于微指令的信息,包括微指令的目的。当时间T=0,调度队列610具有5个项目,其有效位设定为“V”。因此,比如,队列位置0为空,队列位置1包含一个项目,该项目把寄存器11当作目的。
相关矩阵620中的各行对应调度队列610中的一个位置。相关矩阵620中的各列对应调度队列610中一个位置的相关性。如前所述,由于微指令不能依赖于它自己,沿着相关矩阵620的对角线的各个块都标记为“X”。1行7列的“D”表示在队列位置1的微指令依赖于队列位置7的微指令。也就是说,队列位置1的操作是队列位置7的操作的子操作。在调度队列610的5个项目中,只有在队列位置7的项目不依赖任何其它的项目。因此,只有在队列位置7的项目被标记为“准备好”,并可以又调度器发送。
现在,考虑两个新发布的准备放入调度队列610的微指令。第一微指令的第一源(S11)是寄存器11,第二源(S12)是寄存器2。第一微指令的目的(D1)是寄存器17。也就是,第一微指令使用寄存器11和2生成的值放到寄存器17。第二微指令的第一源(S21)是寄存器14,第二源(S22)是寄存器12,目的(D2)是寄存器19。如图6A所示,为了说明,调度队列610和相关矩阵620使用可以同时处理两个微指令的超标量处理器。这样,在任何一个周期内,可以把两个微指令分配到调度器,可以调度两个微指令。第一微指令放到了队列位置0,尽管也可以放到,比如,队列位置3。第二微指令被放到队列位置6。
请参见图6B,当时间T=1时,队列位置7的项目已经发送,该位置为空。注意在相关矩阵620内的对应队列位置7,或7列,已经被清除,并且在1行和4行的“D”已经移位。这是因为所有依赖于发送了的微指令的子操作不再需要等待目的变为准备好。因此,每次队列中的项目被发送时,矩阵中相应该项目的整个列就被清除。由于7列已经被清除,1行和4行的两个新项目就准备好发送。
当微指令输入调度器时,相关性就以相关矩阵的形式记录下来。由于放在队列位置0的微指令用寄存器11作为源,矩阵中对应队列位置1的位就设定为“D”。这是因为队列位置1把寄存器11用作目的,因而需要使用寄存器11的值的位置0的微指令,不能在队列位置1的微指令之前执行。输入到队列位置0的微指令,也把寄存器2作为源,但队列中没有项目把寄存器2用作目的。所以,寄存器2中值已经是有效的,没有建立相关性。考虑到输入队列位置6的微指令,2列和4列中的块被分别地标记为寄存器14和12上的相关性。
时间T=2的情形示于如图6C。队列位置1和4的微指令已经发送,对应这些项目的两列已经清除。因此在队列位置0的微指令准备好发送。但是,在队列位置5的微指令仍然依赖于队列位置2的项目,因为它们需要把寄存器14中的值用作源。
注意,在超标量处理器中,两个微指令可以同时到达调度器,如果父指令到达一个通道而其子指令到达另一个通道时,必须留心。这时,输入的子微指令不能在队列610中找到其父指令,但这一信息还是需要正确建立相关矩阵620。在这种情况下,需要在放到相关矩阵620的同时发生的微指令之间,进行相关性检查。程序命令保证只有后面的微指令的源必须与前面的微指令的目的相比较,于是就用不着双向进行比较。然后,当设定相关矩阵620时,就可以把比较的结果,或并发位,考虑在内。
图7是根据本发明实施方案的调度电路的方框图。该电路包括连接到准备判断单元720的相关矩阵710。准备判断单元720检测是否行的所有位都清除了。如果判断单元720检测到行的所有位都清除了,对应该行的操作就准备好发送。不止一个操作准备好时,优先逻辑730判定调度哪一个准备好的操作。发送了的操作也清除相关矩阵710内相应的列,因为其它项目不需要再等待发送的项目了。
参见图8,它图示了按照本发明实施方案的5级流水线矩阵调度器,流水线的第一级把微指令分配到调度器的队列位置。根据先前的周期内的位置的重新分配来判断空插槽,并决定可以分配多少微指令,如果所有输入的微指令都分配到队列中的自由位置,以及生成正确的写矢量,在流水的下一级使用。
在流水线的第二级,输入微指令的源与现存的目的寄存器文件相比较,并存储比较的结果,以备下一级使用。同时,目的被写入分配的项目,使用上一级产生的写矢量。由于新写过的目的的有效位还没有被写,源就可以不与新写的目的相比较。
在流水线的第三级,比较结果用于设定新写的项目的矩阵。之后,有效位被写到下一个周期内的能够赋值的矩阵。
流水线的第四级是调度回路。发送了的微指令使得所有的列被清除,传送到矩阵位。然后,各列赋值为准备就绪。如果微指令没有准备好,赋值将在下一个周期再次执行。如果微指令已经准备好,对比其它准备好的微指令,按发送优先顺序排列。一旦微指令准备好发送,发送矢量就送到寄存器文件,读取必要的信息和重新分配项目。同时也产生一个信号,清除矩阵中相应的列,允许所有子操作或从属微指令准备在后面的周期中发送。
流水线的第五级,重新分配先前从调度器发送的项目。这一级也同时从寄存器文件读取必要的信息,送到执行单元。这些信息包括,比如,操作数,源,目的寄存器,立即值和标识符。
图9是按照本发明实施方案的调度操作方法的流程图。首先,判断调度器中的哪一个项目是空的,或可以用来存储输入的指令,如910所示。这可以,比如,对应图8所示的流水线的第一级。
再请看图9,在920,新的微指令的源和已经在调度队列中的有效项目的目的相比较,比较结果或采样数,被记录以备进一步处理。如922所示,目的或结果,寄存器也被写入分配的项目。这些操作可以对应图8所示的流水线的第二级。然后,在930,使用先前的计算过的位,设定矩阵,并在932写有效位。这些操作对应图8所示的流水线的第三级。
如940所示,通过监测相关矩阵各个周期的相关位,矩阵被赋值。如果不是微指令的行的所有位都清除了,赋值继续。如果行的所有位都被清除了,微指令准备好发送,并在942执行优先排序。在944,发送微指令并清除相关矩阵中的相应列。如此依次地允许其它微指令发送。这些操作构成了按照本发明实施方案的调度回路,并对应图8所示的流水线的第四级。接下来,在950,微指令被重新分配,有效位被复位,允许项目被再使用。在952,发送了的微指令的信息被读出来送到执行单元,这一操作对应图8所示的流水线的第五级。
尽管这里详细地图解和说明了各种实施方案,应当可以理解,不背离本发明实质和所指的范围的改进和变化为上述的技术所包含并属于后面的权利声明的范围。比如,尽管微指令的调度器被用来解释本发明的实施方案,应当可以理解其它类型的操作的调度器也在本发明的范围内。同样可以理解,上述的特殊的结构只是用于解释目的。其它矩阵调度器结构也属于本发明的范围。另外,尽管参考特殊的处理器结构解释了本发明,任何变化的结构都是可以使用的,并且各个结构中可以有很多细微的变化。最后,尽管软件或硬件被描述来控制某一功能,这样的功能的实施可以用软件或硬件和软件硬件相结合来完成,正如本领域所熟知的那样。也如所熟知的,软件可以以适合处理器执行的指令的形式,存储在媒体内,诸如,硬盘和软盘或光盘只读存储器(CD-ROM)。指令可以以压缩和/或加密格式存储在媒体上。这里所使用的短语“适合处理器执行的”,意味着以压缩和/或加密格式存储的指令,以及在由处理器执行之前,由安装程序编译或安装的指令。

Claims (9)

1.一种在处理器中调度操作的方法,包括:
接收要调度的第一操作;
判断无序调度队列中哪些位置可获得用以存储接收到的操作;
根据所述判断,把对应第一操作的项目放到该无序调度队列的一个位置中;
比较第一操作与调度队列中的其它项目,判断是否有另一个项目对应第一操作的父操作;
把对应于所说的比较结果的父操作状态信息存储到相关矩阵;
至少部分地根据存储在相关矩阵中的父操作状态信息,发送调度队列中的一个项目;以及
复位对应于所发送项目的指示符,以指示无序调度队列中的对应位置可用于再使用。
2.如权利要求1的方法,其中的相关矩阵具有行和列,每一行对应调度队列中的一个项目,各列中的每个元素对应调度队列中的一个项目相关性。
3.如权利要求2的方法,其中所说的存储包括存储与第一操作相应的行以及与父操作相应的列中的相关性的指示。
4.如权利要求3的方法,其中所说的调度包括如果与该项目相应的行不含有表示相关性的元素,则调度在调度队列中的项目。
5.如权利要求1的方法,还包括:
当与发送了的项目对应的操作已经执行时,从调度队列中去除发送了的项目;和
清除相关矩阵中对应发送了的操作的列。
6.如权利要求1的方法,其中的操作是微操作。
7.如权利要求1的方法,还包括:
当不止一个项目准备好被调度时,按优先秩序排列调度队列中准备好的项目。
8.一种在处理器中调度新发布的操作的方法,新发布的操作具有一个源和一个目的,包括:
当确定对于项目的位置可获得时,把操作分配到无序调度队列中的项目;
比较分配的操作的源与调度队列中待定的操作的目的;
根据所说的比较的结果,设定对应分配的操作的项目的相关矩阵的行,相关矩阵中的各列对应调度队列中的一个项目;
根据相关矩阵中对应该项目的行的信息,判断分配的操作是否准备好发送;
如果所述判断确定分配的操作准备好发送,则发送分配的操作用于执行;
当所发送的操作已被执行时,清除和所发送的操作相关的相关矩阵中的列;以及
解除分配和所发送操作相关的调度队列中的项目。
9.如权利要求8的方法,其中,当任何操作从调度队列中去除时,重复所说的判断和发送。
CNB99812298XA 1998-08-18 1999-08-18 使用相关矩阵的调度操作 Expired - Fee Related CN1158596C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/135,170 US6334182B2 (en) 1998-08-18 1998-08-18 Scheduling operations using a dependency matrix
US09/135,170 1998-08-18

Publications (2)

Publication Number Publication Date
CN1331816A CN1331816A (zh) 2002-01-16
CN1158596C true CN1158596C (zh) 2004-07-21

Family

ID=22466869

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB99812298XA Expired - Fee Related CN1158596C (zh) 1998-08-18 1999-08-18 使用相关矩阵的调度操作

Country Status (6)

Country Link
US (1) US6334182B2 (zh)
CN (1) CN1158596C (zh)
DE (1) DE19983476B4 (zh)
GB (1) GB2357869B (zh)
HK (1) HK1042566B (zh)
WO (1) WO2000011545A1 (zh)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060165606A1 (en) 1997-09-29 2006-07-27 Nektar Therapeutics Pulmonary delivery particles comprising water insoluble or crystalline active agents
US6434557B1 (en) 1999-12-30 2002-08-13 Decode Genetics Ehf. Online syntheses programming technique
US7016910B2 (en) * 1999-12-30 2006-03-21 Decode Genetics Ehf. Indexing, rewriting and efficient querying of relations referencing semistructured data
US6356900B1 (en) * 1999-12-30 2002-03-12 Decode Genetics Ehf Online modifications of relations in multidimensional processing
US8404217B2 (en) 2000-05-10 2013-03-26 Novartis Ag Formulation for pulmonary administration of antifungal agents, and associated methods of manufacture and use
MXPA02001323A (es) 2000-05-10 2004-07-16 Alliance Pharma Microgranulos con base fosfolipida para la liberacion de farmaco.
US7871598B1 (en) 2000-05-10 2011-01-18 Novartis Ag Stable metal ion-lipid powdered pharmaceutical compositions for drug delivery and methods of use
GB0022189D0 (en) * 2000-09-11 2000-10-25 Univ Loughborough Method and apparatus for analytical problem solving
JP3567878B2 (ja) * 2000-10-02 2004-09-22 日本電気株式会社 パケット交換装置
US6950927B1 (en) * 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
GB2380825B (en) * 2001-10-12 2004-07-14 Siroyan Ltd Processors and compiling methods for processors
US7055021B2 (en) * 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
JP3577052B2 (ja) * 2002-03-19 2004-10-13 株式会社東芝 命令発行装置及び命令発行方法
US7571302B1 (en) * 2004-02-04 2009-08-04 Lei Chen Dynamic data dependence tracking and its application to branch prediction
US20050216900A1 (en) * 2004-03-29 2005-09-29 Xiaohua Shi Instruction scheduling
US7730282B2 (en) * 2004-08-11 2010-06-01 International Business Machines Corporation Method and apparatus for avoiding data dependency hazards in a microprocessor pipeline architecture using a multi-bit age vector
US20070043932A1 (en) * 2005-08-22 2007-02-22 Intel Corporation Wakeup mechanisms for schedulers
US20070136699A1 (en) * 2005-12-08 2007-06-14 International Business Machines Corporation Dependency matrices and methods of using the same for testing or analyzing an integrated circuit
US20080320016A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
US20080320274A1 (en) * 2007-06-19 2008-12-25 Raza Microelectronics, Inc. Age matrix for queue dispatch order
JP5142132B2 (ja) * 2007-11-01 2013-02-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 設計プロセスの順序の決定を支援する技術
US7958336B2 (en) * 2008-06-30 2011-06-07 Intel Corporation System and method for reservation station load dependency matrix
US8239661B2 (en) * 2008-08-28 2012-08-07 International Business Machines Corporation System and method for double-issue instructions using a dependency matrix
US8135942B2 (en) 2008-08-28 2012-03-13 International Business Machines Corpration System and method for double-issue instructions using a dependency matrix and a side issue queue
US8099582B2 (en) * 2009-03-24 2012-01-17 International Business Machines Corporation Tracking deallocated load instructions using a dependence matrix
US8127116B2 (en) * 2009-04-03 2012-02-28 International Business Machines Corporation Dependency matrix with reduced area and power consumption
US20100257341A1 (en) * 2009-04-03 2010-10-07 International Business Machines Corporation Selective Execution Dependency Matrix
US20100257339A1 (en) * 2009-04-03 2010-10-07 International Business Machines Corporation Dependency Matrix with Improved Performance
US9286075B2 (en) * 2009-09-30 2016-03-15 Oracle America, Inc. Optimal deallocation of instructions from a unified pick queue
WO2013106032A2 (en) * 2011-04-08 2013-07-18 Altera Corporation Systems and methods for using memory commands
US10235180B2 (en) * 2012-12-21 2019-03-19 Intel Corporation Scheduler implementing dependency matrix having restricted entries
US20140258697A1 (en) * 2013-03-07 2014-09-11 Mips Technologies, Inc. Apparatus and Method for Transitive Instruction Scheduling
US9400653B2 (en) 2013-03-14 2016-07-26 Samsung Electronics Co., Ltd. System and method to clear and rebuild dependencies
US9665280B2 (en) * 2014-09-30 2017-05-30 International Business Machines Corporation Cache coherency verification using ordered lists
US10296337B2 (en) 2016-03-21 2019-05-21 International Business Machines Corporation Preventing premature reads from a general purpose register
US11803389B2 (en) * 2020-01-09 2023-10-31 Microsoft Technology Licensing, Llc Reach matrix scheduler circuit for scheduling instructions to be executed in a processor
US11934834B2 (en) * 2021-10-19 2024-03-19 Ampere Computing Llc Instruction scheduling in a processor using operation source parent tracking
US20230195517A1 (en) * 2021-12-22 2023-06-22 Advanced Micro Devices, Inc. Multi-Cycle Scheduler with Speculative Picking of Micro-Operations
US20240004657A1 (en) * 2022-06-30 2024-01-04 Advanced Micro Devices, Inc. Encoded data dependency matrix for power efficiency scheduling

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US5546597A (en) * 1994-02-28 1996-08-13 Intel Corporation Ready selection of data dependent instructions using multi-cycle cams in a processor performing out-of-order instruction execution
US6216200B1 (en) * 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US5745726A (en) * 1995-03-03 1998-04-28 Fujitsu, Ltd Method and apparatus for selecting the oldest queued instructions without data dependencies
US5710902A (en) * 1995-09-06 1998-01-20 Intel Corporation Instruction dependency chain indentifier
EP0870228B1 (en) * 1995-10-06 2003-08-13 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US5884059A (en) * 1996-01-26 1999-03-16 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US5778438A (en) 1995-12-06 1998-07-07 Intel Corporation Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests
US5796975A (en) * 1996-05-24 1998-08-18 Hewlett-Packard Company Operand dependency tracking system and method for a processor that executes instructions out of order
US5913925A (en) * 1996-12-16 1999-06-22 International Business Machines Corporation Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
US6016540A (en) * 1997-01-08 2000-01-18 Intel Corporation Method and apparatus for scheduling instructions in waves
US5923862A (en) * 1997-01-28 1999-07-13 Samsung Electronics Co., Ltd. Processor that decodes a multi-cycle instruction into single-cycle micro-instructions and schedules execution of the micro-instructions
US5850533A (en) * 1997-06-25 1998-12-15 Sun Microsystems, Inc. Method for enforcing true dependencies in an out-of-order processor

Also Published As

Publication number Publication date
GB2357869A (en) 2001-07-04
GB2357869B (en) 2003-05-21
CN1331816A (zh) 2002-01-16
GB0103430D0 (en) 2001-03-28
US6334182B2 (en) 2001-12-25
HK1042566B (zh) 2005-04-22
DE19983476T1 (de) 2001-07-26
WO2000011545A1 (en) 2000-03-02
HK1042566A1 (en) 2002-08-16
DE19983476B4 (de) 2006-12-14

Similar Documents

Publication Publication Date Title
CN1158596C (zh) 使用相关矩阵的调度操作
CN100340950C (zh) 采用耗电控制用功能节制机构的微处理器
CN1188778C (zh) 处理指令的方法、处理器和数据处理系统
US8156495B2 (en) Scheduling threads on processors
CN1045024C (zh) 在超标量处理机系统中提高指令调度效率的方法
US6557095B1 (en) Scheduling operations using a dependency matrix
CN100557570C (zh) 多处理器系统
CN1117765A (zh) 计算机系统内部处理指令的装置
CN1042863C (zh) 用于在超标量处理机系统中索引中间存储器缓冲区的指定的方法和系统
CN1945525A (zh) 从队列处理指令刷新的生存期计数器设计的系统和方法
US20080294884A1 (en) Thread Priority Method for Ensuring Processing Fairness in Simultaneous Multi-Threading Microprocessors
CN104781786B (zh) 使用延迟重构程序顺序的选择逻辑
CN1782988A (zh) 用于选择性地禁止猜测性的条件分支执行的方法和设备
KR20010095074A (ko) 다중 스레드 초장 명령어 프로세서, 명령어 처리 방법 및그 제품, 및 명령어 컴파일링 제품 및 컴파일러
CN1601475A (zh) 用于在smt处理器中进行cpi负载平衡的系统和方法
CN1967471A (zh) 用于中止软件线程的方法和系统
CN1867891A (zh) 用于实时多线程处理的方法和装置
CN1363063A (zh) 减少处理器中写入通信量的方法和系统
CN1333890A (zh) 具有回放单元的计算机处理器
CN1818875A (zh) 嵌入式操作系统分组硬实时任务调度的实现方法
CN1680917A (zh) 用于跟踪完成表中更大量未完成指令的方法和处理器
WO2007065308A1 (en) Speculative code motion for memory latency hiding
CN1092188A (zh) 采用独立存取中间存储器的超标量处理器系统中加强指令调度的方法和系统
CN1095506A (zh) 具有最新分配比特的数据处理器及其操作方法
CN101763251A (zh) 多线程微处理器的指令译码缓冲装置

Legal Events

Date Code Title Description
C06 Publication
C10 Entry into substantive examination
PB01 Publication
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1042566

Country of ref document: HK

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

Granted publication date: 20040721

Termination date: 20110818