专利名称:对指令缓冲器进行装入的方法和设备的利记博彩app
技术领域:
本发明一般地涉及用于数据处理的方法和设备,尤其涉及用于对指令缓冲器进行装入的方法和设备。更具体地,本发明涉及对能不按序发出指令的超标量处理机的指令缓冲器进行装入的方法和设备。
即使不是全部,大部分的超标量处理机能够执行不按序地发出指令。虽然存在许多用于不按序发出指令的实现方法,所有这些方法的关键因素是一个发出队列(或发出逻辑),它根据对数据相关性的求解以及执行资源的可使用性,以代替程序中出现的顺序,确定实际的执行顺序。
然而,典型地是把指令按照程序次序存储在处理机的指令超高速缓存(I-超高速缓存)内的超高速缓存线上。此外,每次对指令超高速缓存访问的单位通常大于一条指令。例如,对于具有四字节指令长度的处理机体系结构,每次指令超高速缓存访问可能是32字节宽,这相当于每次指令超高速缓存访问总共为八条指令。即使在最简单的指令超高速缓存设计下,在发送到发出队列之前,必须把这些指令多路传送到具有八个或更少的隙的指令缓冲器中。
顺着上述的例子,接着从该指令超高速缓存读出八条指令。然后利用第一条指令的取地址控制一个8对1的多路复用器以把前四条指令选通到一个具有四个隙的指令缓冲器中。该取地址还用于从八条指令中选择一条目标指令以及随后的三条指令以选通到该指示缓冲器中。以替代程序次序的执行次序把全部四条指令选通到指令缓冲器。在这种结构下,当取地址是一条(预测的或实际的)转移指令的结果时,选通到指令缓冲器中的第一条指令可能是八条指令中的任一条。从而,如果转移指令的目标地址指向指令超高速缓存访问的最后一条指令、倒数第二条指令或者甚至倒数第三条指令时,则不会全部填满指令缓冲器内的全部四个隙,这造成损失调度带宽。因此,需要提供一种改进的方法和设备,用于在不损失调度带宽或超高速缓存效率下对指令缓冲器进行装入。
鉴于上述,本发明的一个目的是提供一种用于数据处理的改进型方法和设备。
本发明的另一个目的是提供一种改进型的方法和设备,用于装入指令缓冲器。
本发明的再一个目的是提供一种改进型的方法和设备,用于对能不按序发出指令的超标量处理机的指令缓冲器进行装入。
根据本发明的方法和设备,一种能不按序发出指令的处理机包括一个具有多条超高速缓存线的指令超高速缓存。经过一个多路复用器该指令超高速缓存和一个指令缓冲器连接。该指令缓冲器包括几个隙,在该多路复用器的监督下用来自该指令超高速缓存的指令顺序地填这些隙。第一指令所驻留的隙是由取地址确定的。如果第一指令不驻留在该指令缓冲器的第一个隙内时,将用来自该指令超高速缓存的相继超高速缓存线的指令填指令缓冲器中的任何空隙。
本发明的所有目的、特征和优点将在下述详细书面说明中变为清晰。
通过连带着附图一起阅读示范实施方式的下述详细说明会最好地理解本发明本身、最佳使用方式、其他目的及优点,附图是
图1是根据本发明的一种最佳实施方式的能够不按序发出指令的处理机的方块图;图2是用于图1的处理机的不按序发出指令的机制的方块图;图3是一种根据本发明的一种最佳实施方式用于向指令缓冲器装入指令的设备;以及图4是一个逻辑电路图,表示根据本发明的一种最佳实施方式的用以分析指令缓冲器中指令间相关性的所需逻辑。
可以在各种超标量处理机中实施本发明。出于说明的目的,本发明如下面所说明的一种最佳实施方式是在国际商用机器公司制造的PowerPCTM类处理机中实施的。另外,虽然下面说明的最佳实施方式是和根据精简指令集计算机(RISC)体系结构的定长指令集有关的,所示的原理仍可应用于任何类型的指令集体系结构。
现参照附图尤其图1,图1示出一种根据本发明的一种实施方式的能够不按序发出指令的处理机的方块图。在处理机10内,总线接口部件12和数据超高速缓存13及指令超高速缓存14连接。数据超高速缓存13以及指令超高速缓存14都是高速缓冲存储器,它们使处理机10能对事先从主存储器(未示出)传送的数据的或者指令的子集达到相对快的访问时间。指令超高速缓存14还和指令部件11连接,后者可以从指令超高速缓存14取指令。
处理机10包括三个执行部件,即,整数部件15,装入/存储部件16以及浮点部件17。每个执行部件15-17可以执行一类或多类的指令,在每个处理机周期内,所有的执行部件15-17并发地运行。在终止执行后,取决于指令类型,执行部件15-17把数据结果存储到更名缓冲器。接着,任一个执行部件15-17通知完成部件20已经结束一条指令的执行。最后,通过从各个更名缓冲器分别向通用寄存器18或浮点寄存器19传送结果数据按照程序的次序完成各条指令。
现参照图2,其中示出用于图1的处理机10的不按序发出指令的机制的方块图。如图所示,取指令器21生成从指令超高速缓存14(从图1)取某指令的地址。然后从指令超高速缓存14把取出的指令组(如前面所述,典型地从指令超高速缓存中取出多于一条的指令)锁存到指令缓冲器23。逐个地分析指令缓冲器23内的指令,以确定它们对应的源地址和目标地址、所需的执行部件的类型以及任何其它实际执行这些指令所需的信息。那些拥有寄存器目标的指令必须使它们的寄存器目标更名。还必须确定寄存器操作数源的更名后的名。在寄存器更名缓冲器24内执行上述二个操作。
另外,指令缓冲器23中的指令可能具有相关性。例如,指令缓冲器23中的指令2可能使用由指令1存储的寄存器目标。由指令相关性分析部件25分析指令缓冲器23内的指令之间的这些相关性,该部件25的输出修改寄存器更名缓冲器24内的更名逻辑的行为。由于寄存器更名缓冲器24尚未具有有关指令缓冲器23内各指令的信息,这样做是需要的。接着把分析过的指令数据和带有更名寄存器信息的正文移入发出队列26中。发出队列26经过状态线27从对应的一个执行部件28(即,图1的执行部件15-17)接收信息以确定发出队列26内某已具有执行所需的全部数据的指令。这样的指令被认为是“准备好发出的”,并且可被发送到当前“自由的”一个执行部件28中。图2中所描述的部件除了指令超高速缓存14和执行部件28之外,最好都驻留在图1的指令部件11内。
现参照图3,图中示出一种根据本发明的一种实施方式的用于对指令缓冲器装入指令的设备。在该实现中,最好把指令超高速缓存14(图2)划分成偶单元阵列31和奇单元阵列32,以保持最大面密度所需的正方几何形状。偶单元阵列31和奇单元阵列32分别和单元阵列输出寄存器33和34连接。二个输出寄存器33和34都和四个2对1的多路复用器36a-36d连接。每个多路复用器36a-36d独立地和指令缓冲器23内的一个隙连接。
由取指令器21(图2)生成的用于取指令的有效地址(EA)典型地为一个EA以及一个EA+访问宽度的形式。这意味着,如果一次指令超高速缓存访问为每条指令为四字节下的四条指令,则产生一个EA以及一个EA+16(假定采用字节寻址方式)。可以理解对于该操作不需要附加的逻辑(运算),它可以简单地通过移位地址的译码以选择指令超高缓存内的一条相邻字线(或超高速缓存线)来实现。该增量以字线的尺寸取模,以考虑到读出宽度。若生成的地址是偶数,则把生成的地址馈入偶单元阵列31并且把增量地址将用于奇单元阵列32。若生成的地址是奇数,则把生成的地址馈入奇单元阵列32并且把增量地址用于偶单元阵列31。以这种方式,从指令超高速缓存中读出相继程序次序下的二组的四条指令,并且分别置于输出寄存器33和34中。利用被请求指令的二个低位位(在该四字节情况下,以指令长度取模)并且利用所使用的起始EA是偶数还是奇数(以访问宽度取模)控制多路复用器36a-36d,以把指令的位组引导到指令缓冲器23中。
如所示,指令缓冲器23内的每个隙顺序地标记成I0至I3。此外,还把输出寄存器33、34内的隙标记为用于来自偶单元阵列31的各超高速缓存线的E0至E3以及用于来自奇单元阵列32的各超高速缓存线的O0至O3。在被请求指令的二个低位位为二进制的“00”并且该被请求指令的EA是偶数的情况下,则按如下装入指令缓冲器23I0=E0,I1=E1,I2=E2和I3=E3,其中E0是该被请求的指令。结果,以程序次序把各指令装入到指令缓冲器23。然而,若被请求的二个低位位是二进制的“10”并且该被请求的指令的EA是奇数,则按如下装入指令缓冲器23I0=E0,I1=E1,I2=O2,I3=O3,其中E0是该被请求的指令。结果,不按程序次序地把指令装入到指令缓冲器23中。事实上,装入到指令缓冲器23的正确的程序次序是I2、I3、I0、I1。表Ⅰ中综合了是否应按程序次序把指令装入到指令缓冲器的所有不同情况。
表Ⅰ
在现有技术中,指令相关性分析部件25(图2)利用指令缓冲器23内的指令已经按程序次序的事实,从而为分析指令之间的相关性只需要一组比较器。在本发明中,指令缓冲器23中的指令并非总是按程序次序的。当指令缓冲器23中的指令不按程序次序时,指令相关性分析部件25将不能正确地确定指令间的相关性。从而,作为本发明的一种最佳实施方式,采用一个译码器37以帮助指令相关性分析部件25定位指令缓冲器23内的第一指令。如图所示,译码器37具有四个“与”门,一些“与”门具有负输入端。译码器37的输入来自图2的取指令器21,并且是按照程序次序的指令缓冲器23内第一条指令的取地址。译码器37对指令缓冲器23内按程序次序的第一条指令(它可能位于四个隙中的任一隙内)的二个低位位译码。译码器37的输出通向图4中所示的逻辑电路。四种可能的输出用A、B、C、D标记。
现参照图4,图中示出根据本发明的一种最佳实施方式的逻辑电路图,其表示为分析指令缓冲器23中指令间的相关性所需的逻辑电路。最好把该逻辑电路包含在指令相关性分析部件25中。为了说明该逻辑电路,假设一种RISC指令集,其中各条指令具有一个操作码、一个源寄存器A、一个源寄存器B、一个目标寄存器以及另一项的形式,如在指令41-44中所描述,它们分别缩写为OP、RA、RB、RT和O。
如图所示,示范性指令缓冲器23含有四条必须对相关性进行分析的指令41-44,并且分析结果将由寄存器更名缓冲器24(图2)使用。该相关性分析部分是由一组比较器46执行的,它们从指令41-44取出相关字段,并对各个对应的源及目标的寄存器标志进行比较。和现有技术不同,本发明的寄存器相关性分析必须考虑到这个事实,即指令缓冲器23内的指令41-44可能不按程序次序。例如,正被分析的某指令左侧的指令实际上在程序次序上可能在它的前面或后面。从而,若指令43的目标操作数字段RT2等于源操作数字段中的一个,例如等于指令42的RB1,这会由某个比较器46的输出为“真”指示,如果在程序次序中指令42位于指令43之后,指令42的RB1的更名标记的值应为指令43的RT2的目标寄存器标记的值。与此相反,如果在程序次序中指令43在指令42的后面,则应采用另一个值,该值是由寄存器更名逻辑电路24确定的。
译码器37(图3)生成的四个输出信号用于选通每个比较器46的输出,这些比较器46把各条指令中的目标寄存器号和所有可能也使用该目标寄存器的源寄存器号进行比较。若存在匹配并且在程序次序中该目标指令位于采用该源操作数的指令的前面,则必须用更名目标寄存器标记代替源标记。每个“与”门47和一个比较器46并且和来自译码器37(图3)的至少一个输出信号连接。各输出信号之间的“+”符号表示逻辑“或”运算。仅当源操作数使用之前目标指令出现相等比较(按程序次序)时,各“与”门47选通可能相等的比较信号。例如,如果取地址的低位位等于“11”,利用信号45a通知寄存器更名缓冲器24为指令43的源寄存器标记RB2使用指令44中的用于目标寄存器的更名寄存器标记,因为“11”意味着指令43逻辑上(按程序次序)位于指令44之后。
从而可以以任何次序把指令缓冲器23中的带有更名寄存器标记的指令传送到发出队列26(图2)中。发出队列26将只利用更名寄存器标记判定何时指令准备好以发出,而且这些标记已如上述得到适当的修改反映着指令缓冲器23内各指令的恰当次序。
如已说明,本发明提供一种改进型的方法和设备,用于对能够不按序发出指令的超标量处理机内的指令缓冲器进行装入。本发明的一个特点是在已知指令可能不按程序次序下允许指令相关性分析部件分析指令缓冲器内的各指令。本发明的另一个特点是利用发出队列以及利用能够不按序发出指令的所有超标量处理机中都能得到的其它不按序指令的排序硬件来解决甚至指令缓冲器内的指令不按正常程序次序下的指令次序(问题)。
通过允许以不同于程序次序的顺序把指令存储到指令缓冲器内,改进了指令超高速缓存的有效带宽,并且减少了指令超高速缓存和指令缓冲器之间的以及指令缓冲器和发出队列之间的多路复用量。适用于本发明的发出队列可以为任何类型,只要它仅根据解出的数据相关性以及执行部件的可使用性确定“准备好发出”。
虽然参照一种最佳实施方式具体地显示并说明了本发明,熟练的技术人员可以理解在不背离本发明的精神和范围下能对其在形式上以及细节上做出各种修改。
权利要求
1.一种用于对能够不按序发出指令的处理机的指令缓冲器进行装入的方法,其中所述处理机包括一个具有多条超高速缓存线的指令超高速缓存,所述方法特征在于包括步骤利用一个多路复用器把所述指令超高速缓存和所述指令缓冲器相连接,其中所述指令缓冲器包括多个隙;在所述多路复用器的监视下顺序地把来自所述指令超高速缓存的指令填到所述指令缓冲器的所述多个隙中,其中用取地址确定驻留着第一指令的某个隙;以及然后,若第一指令未驻留在所述指令缓冲器的第一隙,用来自所述指令超高速缓存的指令填所述指令缓冲器的任何空隙。
2.根据权利要求1的对能够不按序发出指令的处理机的指令缓冲器进行装入的方法,其中所述方法还包括一个通过指令相关性分析部件确定驻留在所述指令缓冲器内的各指令的实际程序次序的步骤。
3.根据权利要求2的对能够不按序发出指令的处理机的指令缓冲器进行装入的方法,其中所述方法还包括一个通过所述指令相关性分析部件接收指示在其中驻留第一指令的某所述指令缓冲器的隙的信号的步骤。
4.根据权利要求3的对能够不按序发出指令的处理机的指令缓冲器进行装入的方法,其中所述方法还包括一个通过把所述取地址作为输入的译码器生成所述信号的步骤。
5.根据权利要求4的对能够不按序发出指令的处理机的指令缓冲器进行装入的方法,其中所述生成步骤还包括通过具有多个“与”门的译码器生成所述信号的步骤。
6.一种用于对能够不按序发出指令的处理机的指令缓冲器进行装入的设备,其中所述处理机包括一个具有多条超高速缓存线的指令超高速缓存,所述设备特征在于包括一个连接在所述指令超高速缓存和所述指令缓冲器之间的多路复用器,其中所述指令缓冲器包括多个隙;一个填入装置,用于在所述多路复用器的监视下顺序地用来自所述指令超高速缓存的指令填所述指令缓冲器的所述多个隙,其中用取地址确定驻留着第一指令的某个隙,其中若第一指令未驻留在所述指令缓冲器的第一隙所述填入装置继续用来自所述指令超高速缓存的指令填所述指令缓冲器的任何空隙。
7.根据权利要求6的用于对能够不按序发出指令的处理机的指令缓冲器进行装入的设备,其中所述设备还包括一个指令相关性分析部件,用于对驻留在所述指令缓冲器内的指令确定实际的程序次序。
8.根据权利要求7的用于对能够不按序发出指令的处理机的指令缓冲器进行装入的设备,其中所述指令相关性分析部件接收指示在其中驻留第一指令的某所述指令缓冲器的隙的信号。
9.根据权利要求8的用于对能够不按序发出指令的处理机的指令缓冲器进行装入的设备,其中所述信号是由一个把所述取地址作为输入的译码器生成的。
10.根据权利要求9的用于对能够不按序发出指令的处理机的指令缓冲器进行装入的设备,其中所述译码器包括多个“与”门。
11.一个能够不按序发出指令的处理机,包括具有多条超高速缓存线的指令超高速缓存;和所述指令超高速缓存连接的并具有一个指令缓冲器的指令部件;连接在所述指令超高速缓存和所述指令缓冲器之间的多路复用器,其中所述指令缓冲器包括多个隙;和填入装置,用于在所述多路复用器的监视下顺序地用来自所述指令超高速缓存的指令填所述指令缓冲器的所述多个隙,其中用取地址确定驻留着第一指令的某个隙,其中若第一指令未驻留在所述指令缓冲器的第一隙所述填入装置继续用来自所述指令超高速缓存的指令填所述指令缓冲器的任何空隙。
12.根据权利要求11的能够不按序发出指令的处理机,其中所述指令部件还包括一个指令相关性分析部件,用于对驻留在所述指令缓冲器内的指令确定实际的程序次序。
13.根据权利要求12的能够不按序发出指令的处理机,其中所述指令相关性分析部件接收在其中驻留第一指令的某所述指令缓冲器的隙的信号。
14.根据权利要求13的能够不按序发出指令的处理机,其中所述信号是由一个把所述取地址作为输入的译码器生成的。
15.根据权利要求14的能够不按序发出指令的处理机,其中所述译码器包括多个“与”门。
全文摘要
公开一种用于对能够不按序发出指令的处理机的指令缓冲器进行装入的方法和设备。该能够不按序发出指令的处理机包括一个具有多条超高速缓存线的指令超高速缓存。经过一个多路复用器该指令超高速缓存和一个指令缓冲器连接。该指令缓冲器具有若干隙,在该多路复用器的监视下顺序地用来自指令超高速缓存的指令填这些隙。用取地址确定在其中驻留着第一指令的隙。
文档编号G06F9/32GK1226024SQ99101610
公开日1999年8月18日 申请日期1999年1月28日 优先权日1998年2月9日
发明者戴维·梅茨尔, 朱尔·阿布拉汉·西尔伯曼 申请人:国际商业机器公司