使用相关矩阵的调度操作的制作方法

文档序号:6419202阅读:149来源:国知局
专利名称:使用相关矩阵的调度操作的制作方法
技术领域
本发明涉及处理器内的调度操作。更进一步说,本发明涉及使用相关矩阵的调度操作的方法和装置。
背景技术
处理器的主要功能是执行操作流,如计算机指令流。一些处理器设计为执行完流的一项操作后,才能开始执行下一项操作。用这些“按顺序的”处理器,一项操作的结果可以为后面的依赖于它的操作正确使用。请看下面的指令装载存储器-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)。指令可以以压缩和/或加密格式存储在媒体上。这里所使用的短语“适合处理器执行的”,意味着以压缩和/或加密格式存储的指令,以及在由处理器执行之前,由安装程序编译或安装的指令。
权利要求
1.一种在处理器中调度操作的方法,包括接收要调度的操作;判断接收到的操作是否依赖于父操作;存储该判断的结果;和在父操作之后调度接收到的操作。
2.如权利要求1的方法,其中所说的存储还包括把所说的判断的结果存储到相关矩阵;和其中所说的调度是根据存储在相关矩阵内的信息执行的。
3.一种在处理器中调度操作的方法,包括接收要调度的第一操作;把对应第一操作的项目放到调度队列中;比较第一操作与调度队列中的其它项目,判断其它项目是否符合第一操作的父操作;把所说的比较的结果存储到相关矩阵;和根据存储在相关矩阵的信息调度调度队列中的项目。
4.如权利要求3的方法,其中的相关矩阵具有行和列,每一行对应调度队列中的一个项目,各列中的每个元素对应调度队列中的一个项目相关性。
5.如权利要求4的方法,其中所说的存储包括存储与第一操作相应的行以及与父操作相应的列中的相关性指示。
6.如权利要求5的方法,其中所说的调度包括如果与该项目相应的行不含有表示相关性的元素调度在调度队列中的项目。
7.如权利要求3的方法,还包括当与发送了的项目对应的操作已经执行时,从调度队列中去除发送了的项目;和清除相关矩阵中对应发送了的操作的列。
8.如权利要求3的方法,其中的操作是微操作。
9.如权利要求3的方法,还包括当不止一个项目准备好被调度时,按优先秩序排列调度队列中的项目。
10.一种在处理器中调度微操作的方法,新发布的微操作具有一个源和一个目的,包括把微操作分配到调度队列中的项目;比较分配的微操作的源与队列中待定的微操作的目的;根据所说的比较的结果,设定对应分配的微操作的项目的相关矩阵的行,相关矩阵中的各行对应调度队列中的的一个项目;和根据相关矩阵中对应该项目的行的信息,判断分配的微操作是否准备好发送。
11.如权利要求10的方法,还包括如果所说的判断判断出分配的微操作已经准备好发送,就发送分配的微操作去执行;完成发送操作后,清除相关矩阵中对应发送了的操作的列;和释放对应发送了的操作的项目。
12.如权利要求10的方法,其中,当任何操作从调度队列中去除时,重复所说的判断和发送。
13.一种矩阵调度器,包括具有多个保存操作的项目的调度队列;具有行和列的相关矩阵,每行对应所说的调度队列中的一个项目,以及每列对应所说的调度队列中项目的相关性;和调度单元,根据在所说的相关矩阵中的信息选择在所说的调度队列中的一个项目。
14.如权利要求13的矩阵调度器,其中当在所说的相关矩阵中对应该项目的行不含有在所说的调度队列中的其它项目的相关性指示时,所说的调度单元选择在所说的调度队列中的一个项目。
15.如权利要求13的矩阵调度器,其中的操作是具有一个源和一个目的的微操作,第一操作依赖于第二操作,把第二操作的目的作为源。
16.一种周期发送的操作调度方法,包括根据先前的周期发送的操作,更新相关矩阵;根据更新后的矩阵判断哪些调度队列中的项目已经准备好发送;和发送对应已经准备好的项目的操作。
17.如权利要求16的方法,其中,根据优先级判据,只有限定数量的项目可以发送。
18.如权利要求16的方法,其中所说的更新包括清除相关矩阵中的列,去除已经发送的操作的相关性。
19.如权利要求16的方法,其中所说的判断包括检验相关矩阵中的每一行,判断行是否去除了所有的相关性。
20.一种产品,包括能够将适合处理器执行的指令存储在其上的计算机可读媒体,执行指令使得处理器调度操作,通过接收要调度的操作;判断接收到的操作是否依赖于父操作的完成;和在父操作之后,调度接收到的操作。
21.如权利要求20的条款,其中的判断还包括把所说的判断的结果存储到相关矩阵;和其中所说的调度的执行是根据存储在相关矩阵中的信息。
22.一种产品,包括能够将适合处理器执行的指令存储在其上的计算机可读媒体,执行指令使得处理器调度操作,通过接收要调度的第一操作;把对应第一操作的项目放到调度队列中;比较第一操作与调度队列中的其它项目,判断其它项目是否符合第一操作的父操作;把所说的比较的结果存储到相关矩阵;和根据存储在相关矩阵的信息调度调度队列中的项目。
全文摘要
使用相关矩阵(520)的方法和装置。子操作依赖于父操作的完成,比如当子操作的其中一个源是父操作的目的时。对应子操作的项目与调度队列(510)中的其它项目比较。比较的结果存储在相关矩阵(520)。相关矩阵(520)中每一行对应调度队列(510)中一个项目的相关性。然后,调度队列(510)中的项目可以根据相关矩阵(520)中的信息来调度,诸如当对应项目的整个行被清除时。
文档编号G06F9/45GK1331816SQ99812298
公开日2002年1月16日 申请日期1999年8月18日 优先权日1998年8月18日
发明者A·A·梅钱特, D·J·萨格尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1