專利名稱:用于亂序發(fā)布隊列中相關(guān)指令的接續(xù)發(fā)布的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
在此公開和要求保護的本發(fā)明主要涉及一種選擇亂序發(fā)布隊列中的相關(guān)指令用于從隊列中進行發(fā)布的方法和設(shè)備。更特別地,本發(fā)明涉及允許相關(guān)指令的接續(xù)發(fā)布的上述類型的一種方法。甚至更特別地,本發(fā)明涉及一種上述類型的方法,其允許在隊列的一個周期期間考慮多個指令,使得可以選擇它們中的一個用于在緊接著下一個周期期間從隊列中進行發(fā)布。
背景技術(shù):
正如那些本計算機領(lǐng)域的技術(shù)人員所周知的那樣,在連續(xù)的周期(cycle)周期期間指令被置于發(fā)布隊列中,用于按序發(fā)布和執(zhí)行。但是在亂序發(fā)布隊列中,可以選擇指令中的一些以用于在較老的或者較早的指令之前進行發(fā)布。正如進一步所周知的,當(dāng)前可用的亂序發(fā)布隊列通常不允許比每個其它周期更頻繁地發(fā)布相關(guān)指令,并且由此不支持相關(guān)指令的接續(xù)(back to back)發(fā)布。相關(guān)指令是必須等待較早的指令的發(fā)布和執(zhí)行,以便確保相關(guān)指令所要求的基本數(shù)據(jù)可用的一種指令。接續(xù)發(fā)布指的是在隊列操作的兩個連續(xù)周期中的每一個周期期間發(fā)布來自隊列的指令。
為了說明當(dāng)前可用設(shè)計的亂序發(fā)布隊列,可以考慮下面的碼序列1)Add 1,x,x,2)Add x,1,x當(dāng)前設(shè)計的亂序發(fā)布隊列在初始選擇了指令1后,將采用三個周期以發(fā)布這兩個指令。如下是針對該隊列示出連續(xù)的管線階段(pipeline stage)的時序圖
周期 0 1 2 31)add 1,x,x 選擇 發(fā)布2)add x,1,x 對比 選擇 發(fā)布在周期0期間選擇指令1以便進行發(fā)布,而實際上是在周期1期間發(fā)布指令1。同時在周期1期間,通過對比目的(destination)和源(source),解析了所有發(fā)布隊列中指令的相關(guān)性。通過此舉,確定了指令2的源寄存器匹配指令1的目標(biāo)目的寄存器。因此,指令2的源被設(shè)置為就緒,以指示指令2所需要的數(shù)據(jù)將可用。在周期2中,選擇指令2用于發(fā)布,并且在周期3期間,發(fā)布指令2。
為了改進上述當(dāng)前設(shè)計,并且由此避免所浪費的周期時間,提供一種其中允許發(fā)生相關(guān)指令的接續(xù)發(fā)布的亂序發(fā)布隊列將是有利的。特別地,很明顯在周期1期間選擇指令2使得指令2在周期2期間發(fā)布,比在周期2期間選擇指令2使得指令2在周期3期間發(fā)布有優(yōu)勢。這將會使發(fā)布時間減少一個完整的周期周期。盡管為了實現(xiàn)接續(xù)發(fā)布,之前已經(jīng)提出了一些解決方案,但是這樣的解決方案通常要求強大的硬件。例如,當(dāng)一個指令被置于發(fā)布隊列時,所提出的解決方案中的一些要預(yù)計算該指令的所有相關(guān)性。這需要大量的對比和鎖存器,以便于保持預(yù)計算的狀態(tài)。
由此將希望提供一種亂序發(fā)布隊列,其支持相關(guān)指令的接續(xù)發(fā)布,并且同時僅要求最小量的附加硬件。
發(fā)明內(nèi)容
在本發(fā)明的實施方式中,在亂序發(fā)布隊列的特定周期期間對該隊列中包含的兩個或者更多指令進行估計,以便選擇指令用于下一后續(xù)周期期間發(fā)布。當(dāng)已預(yù)先指定了指令用于特定周期期間發(fā)布時,則估計隊列中的一個或者多個指令以確定它們中的任何一個是否與指定的指令相關(guān)。為執(zhí)行該估計,每個置于隊列中的指令都伴隨有一組邏輯單元。給定指令的邏輯單元提供對于該給定指令的目的地與源對比的信息,如上所述。在本發(fā)明的一個實施方式中,用于在特定周期期間選擇指令用于下一周期期間發(fā)布的方法確認特定周期期間隊列中最早就緒的指令。如果預(yù)先選擇了指令用于該特定周期期間發(fā)布,則確定是否至少隊列中的第一指令遵從一組條件中的每個條件。該組條件至少包括第一指令與先前選擇的指令具有相關(guān)性的條件,以及第一指令早于最早就緒的指令的條件。只有當(dāng)?shù)谝恢噶钭駨脑摻M中的每個條件時,才選擇第一指令用于下一個后續(xù)周期期間發(fā)布。
本發(fā)明的特征所支持的新特點在所附的權(quán)利要求書中闡述。而通過參考下面結(jié)合附圖時閱讀的對示例性實施方式的詳細描述,得到對本發(fā)明本身使用的優(yōu)選模式以及其目的和優(yōu)勢的最好的理解。其中圖1是示出了可以用于執(zhí)行本發(fā)明的實施方式的計算機或者數(shù)據(jù)處理系統(tǒng)的框圖。
圖2是根據(jù)本發(fā)明的實施方式的方法的各個步驟的流程圖。
圖3是示出了用于執(zhí)行圖2的實施方式的復(fù)用器和相關(guān)組件的配置示意圖。
具體實施例方式
參考圖1,其示出了通用的數(shù)據(jù)處理系統(tǒng)100的框圖,該數(shù)據(jù)處理系統(tǒng)可以用于實現(xiàn)本發(fā)明的實施方式。數(shù)據(jù)處理系統(tǒng)100示出一個計算機,用于執(zhí)行本發(fā)明的處理的代碼或者指令可以位于其中。數(shù)據(jù)處理系統(tǒng)100有效地使用外圍組件互連(PCI)本地總線體系結(jié)構(gòu),雖然可選地也可使用其它諸如加速圖形端口(AGP)和工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)的總線體系結(jié)構(gòu)。圖1示出了通過主橋接器/PCI橋接器108與PCI本地總線106相連接的處理器102和主存儲器104。PCI橋接器108還可以包括集成存儲控制器和用于處理器102的高速緩沖存儲器。
進一步參考圖1,其示出了局域網(wǎng)(LAN)適配器112、小型計算機系統(tǒng)接口(SCSI)主總線適配器110以及通過直接組件連接相應(yīng)地與PCI本地總線106相連接的擴展總線接口114。音頻適配器116、圖形適配器118以及通過插入擴展槽的附加板與PCI本地總線106相連接的音頻/視頻適配器122。SCSI主總線適配器110提供用于硬盤驅(qū)動120的連接,并且還提供用于CD-ROM驅(qū)動124的連接。
操作系統(tǒng)在處理器102上運行,并且操作系統(tǒng)用于對圖1所示數(shù)據(jù)處理系統(tǒng)100中的不同組件進行協(xié)調(diào)并提供控制。操作系統(tǒng)可以是在商業(yè)上可獲得的操作系統(tǒng),諸如可以從微軟公司獲得的Windows XP。用于操作系統(tǒng)和用于應(yīng)用或者程序的指令位于諸如硬盤驅(qū)動120的存儲設(shè)備上,并且可以將其加載到主存儲器104,以用于由處理器102執(zhí)行。
本發(fā)明中,每個插入或者接收到亂序發(fā)布隊列的指令伴隨以一組相應(yīng)的邏輯單元。針對指令的邏輯單元為該指令提供目的地與源的對比信息,并且還提供其它信息以指示該指令是否就緒準(zhǔn)備發(fā)布。一組邏輯單元恰好在其相應(yīng)的指令被插進隊列之前形成或者產(chǎn)生,并且該組邏輯單元和其相應(yīng)的指令在隊列中一起移動。將進一步地結(jié)合圖3對一組邏輯單元進行描述。通過提供邏輯單元組已經(jīng)發(fā)現(xiàn)為了確定在指令和另一個先前所選擇的指令之間是否存在接續(xù)相關(guān)性,僅需要完成最小量的對比。
本發(fā)明的實施方式中,在當(dāng)前周期期間可以考慮隊列中的三個或者更多指令,用于進行選擇以便下一個緊接周期期間發(fā)布。更特別地,如果指令在上一個周期期間被指定在當(dāng)前周期期間發(fā)布,則對恰好順序地位于被指定的指令之后的指令進行估計,以確定它們是否與所指定的指令具有接續(xù)相關(guān)性。將對應(yīng)于所估計的指令的邏輯單元組用于該過程中。在當(dāng)前周期期間,選擇被發(fā)現(xiàn)就緒的所估計的指令之一、或者最早就緒的周期以在下一個緊接周期期間發(fā)布。結(jié)合圖2更詳盡地描述估計過程。
參考圖2,其示出了描述本發(fā)明的實施方式的連續(xù)步驟的流程圖,包括一種為亂序發(fā)布隊列中的發(fā)布選擇指令的方法。一旦開始圖2的方法,根據(jù)步驟202,首先需要確定在上一個周期期間是否選擇或者指定了任何指令以在當(dāng)前周期期間發(fā)布。如果沒有選擇指令,則在步驟204為發(fā)布隊列選擇在當(dāng)前周期期間就緒的最早指令。另一方面,如果在上一個周期期間選擇了指令,則需要執(zhí)行步驟206。也就是,必須確定第一指令是否與上一個周期期間所選擇的指令具有相關(guān)性。正如在此所使用的,第一指令是位于上一個周期期間所選擇的指令上方的一行或者位置的指令,其用于在當(dāng)前周期發(fā)布。由此,第一指令緊跟發(fā)布隊列中上一個周期所選擇的指令。如果步驟206的結(jié)果是正的,則用于建立第一指令就緒的重要條件已經(jīng)滿足。因此使得需要進行步驟208。
步驟208需要確定第一指令是否與指令相關(guān)聯(lián)的任何其它源,而不是與上一個周期所選擇的指令相關(guān)。如果是這樣,需要確定所有這些源是否就緒。如果它們就緒,則步驟208的結(jié)果是正,以指示第一指令為發(fā)布就緒。之后,必須執(zhí)行步驟210。在步驟210,相對于在步驟204所選擇的最早就緒的指令估計第一指令,以確定兩個指令中的哪一個是實際上最早的。如果發(fā)現(xiàn)第一指令是較早的,正如步驟212所示,則為隊列中的下一個周期期間的發(fā)布選擇第一指令,從而結(jié)束圖2的方法。
將理解如果在步驟206或者步驟208發(fā)現(xiàn)未就緒,則不能選擇第一指令發(fā)布。即使其就緒,如果在步驟210發(fā)現(xiàn)第一指令不是最早的指令,也不能選擇它。因此,圖2還示出了如果步驟206-步驟210的任何步驟的結(jié)果是負,則圖2的方法進行到步驟214。除了所涉及的是第二指令以外,步驟214非常類似于上文所描述的步驟206,包括位于上一個周期期間所選擇的指令上方兩行的指令。提供步驟214以確定第二指令是否與上一個周期期間所選擇的這一指令具有相關(guān)性。如果步驟214的結(jié)果是正,則使得需要進行到步驟216。
步驟216需要確定第二指令是否與指令相關(guān)聯(lián)的任何其它源相關(guān),而不是與上一個周期所選擇的指令相關(guān)。如果是這樣,需要確定所有這些源是否就緒。如果它們就緒,則步驟216的結(jié)果是正,以指示第二指令為發(fā)布就緒。之后,必須執(zhí)行步驟218。在步驟218,相對于在步驟204所選擇的最早就緒的指令估計第二指令,以確定兩個指令中的哪一個是較早的。如果發(fā)現(xiàn)第二指令是較早的,正如步驟220所示,則選擇第二指令用于隊列中下一個周期期間發(fā)布,從而結(jié)束圖2的方法。
類似于第一指令,如果步驟214-218之中的任何步驟是負,則不能選擇第二指令。這將指示第二指令未就緒發(fā)布,或者第二指令不如最早就緒的指令早。因此,圖2示出如果步驟214-218中的任何步驟產(chǎn)生負結(jié)果,則選擇步驟204的最早就緒的指令用于下一個隨后的周期期間發(fā)布。
參考圖3,其示出已經(jīng)被構(gòu)建以執(zhí)行圖2的方法的各個步驟的復(fù)用器和邏輯組件的配置。圖3包括指令組302,包括指令(a)-(f)。這些指令位于亂序發(fā)布隊列中連續(xù)排列的位置,以用于隨后的發(fā)布和執(zhí)行。組302中的指令在從組302的頂部到其底部的進行中逐漸地變得更早,如在圖3所見。由此,指令(d)是較早的,即比(a)-(c)中的任何指令在隊列中的時間都更長。
正如上文所描述,指令必須在能被發(fā)布出隊列之前就緒。因此,圖3示出了包含控制邏輯的塊304,其中塊304中的每排(a)-(f)對應(yīng)于指令(a)-(f)之一,并且包括一組邏輯單元??刂七壿嬛甘靖鱾€指令源是否就緒,其中指令與隊列中的較早指令(即指令組302的較低行中的指令)相關(guān)。邏輯塊304中的字段如下所示V=有效S0 rdy=源0就緒S1 rdy=源1就緒S0 1r=源0與當(dāng)前行的下一行具有接續(xù)相關(guān)性S1 1r=源1與當(dāng)前行的下一行具有接續(xù)相關(guān)性S0 2r=源0與當(dāng)前行下的第二行具有接續(xù)相關(guān)性
S1 2r=源1與當(dāng)前行下的第二行具有接續(xù)相關(guān)性根據(jù)包含在塊304中的邏輯單元組,邏輯組件306能夠確定各個相關(guān)指令是否就緒。根據(jù)該信息,復(fù)用器控制產(chǎn)生器308提供信息信號E,其被路由到復(fù)用器310。信息信號E確認經(jīng)查明是隊列的當(dāng)前周期期間最早就緒的指令的指令。圖3示出了復(fù)用器310還與組302的對應(yīng)的指令相連接。因此,響應(yīng)于信息信號E,復(fù)用器310選擇最早就緒的指令,并且耦合這些指令作為到復(fù)用器312的輸入。
圖3還示出了信息信號E被提供作為到復(fù)用器314的輸入,復(fù)用器314接收復(fù)用器316的輸出作為附加輸入。將復(fù)用器314的輸出提供給鎖存器318。如下文將進一步描述的,鎖存器318包含指示在上一個周期期間為當(dāng)前周期期間的發(fā)布所選擇或者指定的組302中指令的信息。鎖存器318與邏輯組件320和322相連接,以便為組件320和322兩者確認上一個周期所選擇的指令??蛇x地,鎖存器318提供沒有為上一個周期期間的發(fā)布選擇指令的通知。
響應(yīng)于鎖存器318所提供的信息,邏輯組件320產(chǎn)生復(fù)用器選擇信號A,其選擇(作為第一指令)上一個周期所選擇的指令之上緊鄰一行中的指令。更特別地,邏輯組件320發(fā)送復(fù)用器選擇信號A到與組302的各個指令相連接的復(fù)用器324。一接收到選擇信號A,復(fù)用器324就提供第一指令作為輸出,并且將這樣的輸出耦合到復(fù)用器328作為輸入。例如,如果指令(d)是在上一個周期期間選擇的指令用于在當(dāng)前周期期間發(fā)布,則指令(c)將是第一指令,如塊302所示。
以類似的方式,邏輯組件322通過產(chǎn)生復(fù)用器選擇信號B響應(yīng)于鎖存器318所提供的信息。信號B選擇(作為第二指令)上一個周期所選擇的指令上兩行的指令。復(fù)用器選擇信號B被引導(dǎo)到復(fù)用器326,復(fù)用器326也與組302的各個指令相連接。一接收到選擇信號B,復(fù)用器326就提供第二指令作為輸出,并且將這些輸出耦合到復(fù)用器328作為其第二輸入。如果上一個周期所選擇的指令是指令(d),則指令(b)將是第二指令。
進一步參考圖3,其示出了耦合到邏輯塊304的邏輯組件330。組件330中的就緒邏輯基于源對比確定各個指令是否就緒,并且將該信息提供給復(fù)用器332和334兩者。復(fù)用器332和334還分別地接收復(fù)用器選擇信號A和B。
響應(yīng)于選擇信號A,復(fù)用器332如上所述提供涉及第一指令的輸出。如果用于第一指令的邏輯單元組顯示第一指令就緒,則復(fù)用器332被配置為提供是1的輸出信號C。否則,輸出信號C將是0。信號C被耦合到復(fù)用器328作為選擇信號,以便分別根據(jù)輸出C是0還是1選擇復(fù)用器324的輸出或者復(fù)用器326的輸出。由此,如果發(fā)現(xiàn)第一指令就緒,則復(fù)用器328的輸出將涉及第一指令。否則,復(fù)用器328的輸出將涉及第二指令。除了表示最早就緒的指令的輸入,復(fù)用器328的輸出還作為到復(fù)用器312的第二輸入。
響應(yīng)于選擇信號B,復(fù)用器334提供涉及第二指令的輸出,以指示第二指令是否就緒。施加復(fù)用器334的輸出作為邏輯組件336的輸入。組件336還接收信號C和E作為輸入,并且生成復(fù)用器選擇信號D作為輸出,將其施加于復(fù)用器312。
構(gòu)建邏輯組件336使得當(dāng)輸出信號C指示第一指令就緒時,組件336操作為確定第一指令是否早于最早就緒的指令。該確定的結(jié)果通過復(fù)用器選擇信號D表示,如果發(fā)現(xiàn)第一指令較早,該選擇信號D將使得復(fù)用器312選擇復(fù)用器328的輸出。否則,復(fù)用器312將選擇復(fù)用器310的輸出。
當(dāng)輸出信號C指示第一指令未就緒時,邏輯組件336操作以確定第二指令是否就緒,當(dāng)其就緒時,則確定第二指令是否早于最早就緒的指令。該確定的結(jié)果再次用選擇信號D表示。如果第二指令就緒,則信號D將分別根據(jù)是第二指令還是最早就緒的指令被查明是較早的,使得復(fù)用器312選擇復(fù)用器328的輸出或者復(fù)用器310的輸出。
來自復(fù)用器332和334的發(fā)送至邏輯組件336的輸出可以指示上一個周期沒有為當(dāng)前周期期間發(fā)布選擇指令,或者第一指令和第二指令都未就緒。當(dāng)其中之一的事件發(fā)生時,組件336發(fā)送使得復(fù)用器312選擇復(fù)用器310的輸出的復(fù)用器選擇信號D,并且由此選擇最早就緒的指令。
圖3示出了部署用于接收復(fù)用器312的輸出所提供的指令、并保持指令直到其被發(fā)布到FPU340的鎖存器338。圖3還分別示出通過選擇信號C和D所操作的復(fù)用器314和316,以將所選擇的指令加載到用于下一個后續(xù)周期期間使用的鎖存器318。
本發(fā)明的上述實施方式考慮了上一個周期所選擇的行之上的兩行,以確定接續(xù)相關(guān)性。但是,本發(fā)明的其它實施方式可以包括考慮更多行,以便發(fā)布接續(xù)相關(guān)性指令。
本發(fā)明可以采用完全硬件實施方式的形式、完全軟件實施方式或者包含硬件和軟件單元兩者的實施方式。在優(yōu)選的實施方式中,本發(fā)明以硬件執(zhí)行,其包括但不限于集成電路、固件、微代碼等。
而且,本發(fā)明可采用從計算機可用/計算機可讀介質(zhì)訪問的計算機程序產(chǎn)品的形式,該介質(zhì)提供由計算機或者任何指令執(zhí)行系統(tǒng)使用或者與計算機或者任何指令執(zhí)行系統(tǒng)相結(jié)合使用的程序代碼。出于所描述的目的,計算機可用介質(zhì)或者計算機可讀介質(zhì)可以是包含、存儲、通信、傳播、或者傳送由指令執(zhí)行系統(tǒng)、裝置或者設(shè)備使用或者與其相結(jié)合使用的程序的任何有形設(shè)備。
介質(zhì)可以是電、磁、光、電磁、紅外線、或者半導(dǎo)體系統(tǒng)(或者裝置或者設(shè)備)或者傳播介質(zhì)。計算機可讀介質(zhì)的示例包括半導(dǎo)體或者固態(tài)存儲器、磁帶、可移動計算機磁盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、固定磁盤以及光盤。光盤的當(dāng)前示例包括只讀存儲器壓縮盤(CD-ROM),讀/寫壓縮盤(CD-R/W)和DVD。
適合于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括至少一個直接或者間接地通過系統(tǒng)總線耦合到存儲器單元的處理器。存儲器單元可以包括程序代碼的實際執(zhí)行期間使用的本地存儲器、塊存儲、高速緩沖存儲器,它們提供至少一些程序代碼的臨時存儲,以便于減少執(zhí)行期間必須從塊存儲中取回代碼的次數(shù)。
輸入/輸出或者I/O設(shè)備(包括但不限于鍵盤、顯示器、定位設(shè)備等)可以直接耦合到系統(tǒng)或者通過介入I/O控制器被耦合到系統(tǒng)。網(wǎng)絡(luò)適配器還可以被耦合到系統(tǒng),使得數(shù)據(jù)處理系統(tǒng)通過介入專用或者公共網(wǎng)絡(luò),變成與其它數(shù)據(jù)處理系統(tǒng)或者遠程打印機或者存儲設(shè)備相耦合。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡正是一些當(dāng)前可用類型的網(wǎng)絡(luò)適配器。
已經(jīng)出于說明和描述的目的提供了本發(fā)明的描述,其不是窮舉的并且不限于公開的本發(fā)明的形式。許多修改和改變將對本領(lǐng)域的任何技術(shù)人員變得明顯。選擇和描述該實施方式,以便最好地解釋本發(fā)明的原理、實際應(yīng)用,以及使得本領(lǐng)域的其它普通技術(shù)人員能理解本發(fā)明具有各種修改的各種實施方式適用于能想到的特定應(yīng)用。
權(quán)利要求
1.一種在具有包含指令的亂序發(fā)布隊列的計算機系統(tǒng)中,用于在特定周期期間選擇指令用于下一個周期期間發(fā)布的方法,其中所述隊列在連續(xù)的周期期間被操作以在至少一些所述周期期間發(fā)布指令,所述方法包括以下步驟確認所述特定周期期間所述隊列中最早就緒的指令;當(dāng)指令在先前的周期期間被指定用于在所述特定周期期間發(fā)布時,確定是否所述隊列中至少第一指令遵從一組條件中的每個條件,所述一組條件至少包括所述第一指令與所述指定的指令具有相關(guān)性的條件,以及所述第一指令早于所述最早就緒的指令的條件;以及只有當(dāng)所述第一指令遵從所述組中的每個條件時,才選擇所述第一指令用于所述下一個后續(xù)周期期間發(fā)布。
2.根據(jù)權(quán)利要求1所述的方法,其中所述第一指令包括在分別與所述指定的指令相關(guān)聯(lián)的多個指令中,并且所述方法還包括順序地估計所述多個指令以確定所述多個指令中的任何指令是否遵從所述組中的每個條件。
3.根據(jù)權(quán)利要求2所述的方法,其中當(dāng)發(fā)現(xiàn)所述多個指令中的給定指令遵從所述組中的每個條件時,選擇所述給定指令用于所述下一個周期期間發(fā)布,并且當(dāng)所述多個指令中沒有發(fā)現(xiàn)有指令遵從所述組的每個條件時,選擇所述最早就緒的指令用于所述下一個周期期間發(fā)布。
4.根據(jù)權(quán)利要求2所述的方法,其中所述多個指令的每個指令具有相應(yīng)的一組邏輯單元,其中在確定所述多個指令的給定指令是否與所述指定的指令具有相關(guān)性時使用對應(yīng)于所述給定指令的所述邏輯單元組。
5.根據(jù)權(quán)利要求4所述的方法,其中對應(yīng)于所述給定指令的所述邏輯單元組恰好在所述給定指令進入所述發(fā)布隊列之前生成。
6.根據(jù)權(quán)利要求5所述的方法,其中復(fù)用器和邏輯門的配置與所述給定指令的邏輯單元組一起操作,以便確定所述給定指令是否至少遵從所述組中的一些條件。
7.根據(jù)權(quán)利要求2所述的方法,其中所述條件組還包括所述多個指令中的指令必須與所述指定的指令相關(guān)的條件,以及當(dāng)所述指令與一個或者多個源相關(guān)而不是與所述指定的指令相關(guān)時,所述其它源必須全部就緒的條件。
8.根據(jù)權(quán)利要求1所述的方法,其中當(dāng)沒有預(yù)先指定指令用于所述特定周期期間發(fā)布時,選擇所述最早就緒的指令用于所述下一個周期期間發(fā)布。
9.根據(jù)權(quán)利要求2所述的方法,其中指令分別位于所述隊列中順序排列的位置,并且所述多個指令中每個指令的所述位置與所述指定的指令的位置具有規(guī)定的關(guān)系。
10.根據(jù)權(quán)利要求9所述的方法,其中所述多個指令的所述第一指令和第二指令分別位于所述順序排列的隊列中所述指令位置之后的一個位置和之后的兩個位置。
11.一種在具有包含指令的亂序發(fā)布隊列的計算機系統(tǒng)中,用于在特定周期期間選擇指令用于下一個周期期間發(fā)布的、計算機可讀介質(zhì)中的計算機程序產(chǎn)品,其中所述隊列在連續(xù)的周期期間被操作以在至少一些所述周期期間發(fā)布指令,所述計算機程序產(chǎn)品包括用于執(zhí)行權(quán)利要求1到10中任意一項的步驟的指令。
12.一種在具有包含指令的亂序發(fā)布隊列的計算機系統(tǒng)中,用于在特定周期期間選擇指令用于下一個周期期間發(fā)布的設(shè)備,其中所述隊列在連續(xù)的周期期間被操作以在至少一些所述周期期間發(fā)布指令,所述設(shè)備包括第一邏輯組件,用于確認所述特定周期期間所述隊列中最早就緒的指令;復(fù)用器和邏輯門的配置,用于確定在先前的周期期間是否指定了指令用于所述特定周期期間發(fā)布,并且還確定是否至少所述隊列中的第一指令遵從一組條件中的每一個條件,所述一組條件至少包括所述第一指令與所述指定的指令具有相關(guān)性的條件,以及所述第一指令早于所述最早就緒的指令的條件;并且第二邏輯組件,用于只有當(dāng)所述第一指令遵從所述組中的每個條件時,才選擇所述第一指令用于所述下一個后續(xù)周期期間發(fā)布。
13.根據(jù)權(quán)利要求12所述的裝置,其中所述第一指令包括在分別與所述指定的指令相關(guān)聯(lián)的多個指令中,并且所述第二邏輯組件適合于順序地估計所述多個指令以確定所述多個指令中的任何指令是否遵從所述組中的每個條件。
14.根據(jù)權(quán)利要求13所述的裝置,其中當(dāng)發(fā)現(xiàn)所述多個指令中的給定指令遵從所述組中的每個條件時,所述第二邏輯組件選擇所述給定指令用于所述下一個周期期間發(fā)布,并且當(dāng)所述多個指令中沒有發(fā)現(xiàn)有指令遵從所述組的每個條件時,所述第二邏輯組件選擇所述最早就緒的指令用于所述下一個周期期間發(fā)布。
15.根據(jù)權(quán)利要求12所述的裝置,其中所述配置與對應(yīng)于所述多個指令中每個指令的一組邏輯單元相連接,其中在確定所述給定指令與所述指定指令是否具有相關(guān)性時,利用所述配置使用對應(yīng)于所述多個指令中給定指令的所述邏輯單元組。
16.根據(jù)權(quán)利要求15所述的裝置,其中對應(yīng)于所述給定指令的所述邏輯單元組恰好在所述給定指令進入所述發(fā)布隊列之前生成。
全文摘要
在亂序發(fā)布隊列的特定周期期間對該隊列的兩個或者更多指令估計,選擇指令用于下一后續(xù)周期期間發(fā)布的方法。當(dāng)預(yù)先指定指令用于特定周期期間發(fā)布,則估計隊列中的一個或者多個指令以確定其是否與指定的指令相關(guān)。針對該估計,每個置于隊列中的指令都伴隨有相應(yīng)的為指令提供目的地與源對比的邏輯單元。包括方法的實施方式中,確認特定周期期間隊列中最早就緒的指令。當(dāng)預(yù)先指定了指令用于特定周期期間發(fā)布時,確定是否至少隊列中的第一指令遵從一組條件中的每個條件,該組至少包括第一指令與指定的指令具有相關(guān)性的條件,和第一指令早于最早就緒的指令的條件。只有當(dāng)?shù)谝恢噶钭駨脑摻M中的每個條件時,才選擇第一指令用于下一個后續(xù)周期期間發(fā)布。
文檔編號G06F9/38GK101063933SQ200710092210
公開日2007年10月31日 申請日期2007年3月30日 優(yōu)先權(quán)日2006年4月25日
發(fā)明者R·C·耶昂格, W·E·伯基 申請人:國際商業(yè)機器公司