專利名稱:使用停滯機制避免由于存儲隊列滿而導(dǎo)致的清除的方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及命令隊列的操作,更具體地,涉及在命令隊列中停滯(stall)機制的使用。
背景技術(shù):
在傳統(tǒng)計算機體系結(jié)構(gòu)中,存在各種應(yīng)用命令隊列的設(shè)備,諸如直接存儲器存取(DMA)設(shè)備。命令隊列通過接收和存儲由處理器或處理設(shè)備發(fā)出的命令來進行操作。這些命令通過流水線被傳送到命令隊列,在命令隊列中每個命令進入一個命令條目位置或槽(slot)。然后,展開邏輯將每個命令從命令隊列中發(fā)送出去。問題在于命令隊列的深度是有限的。
通常,命令隊列不足以處理流水線中的命令數(shù)量。因此,命令隊列在處理比在命令隊列核心中可用的條目位置或槽的數(shù)量更大的緊接的命令時可能會具有困難。結(jié)果通常是使用清除(flush)機制。清除機制使得指令單元在嘗試的命令發(fā)出失敗時,備份命令的代碼流。一指令備份命令并試圖重新發(fā)出命令。問題在于該命令是在讀取階段在隊列開始處重新開始的。在讀取階段重新開始命令會導(dǎo)致大大增加的等待時間。
因此,需要改進命令隊列中清除機制的操作,以解決與用于操作命令隊列的傳統(tǒng)方法和裝置相關(guān)的問題中的至少一些問題。
發(fā)明內(nèi)容
本發(fā)明提供了一種用于在命令執(zhí)行系統(tǒng)中停滯命令執(zhí)行的裝置。提供了一種停滯邏輯,其中該停滯邏輯至少具有基于至少對命令流水線和命令隊列中的命令數(shù)量的已知計數(shù)和對未來命令的未知計數(shù)預(yù)測的使用,來停滯處理器所發(fā)出的多個命令的執(zhí)行的能力。
為了更完全地理解本發(fā)明及其優(yōu)點,現(xiàn)在參考下面結(jié)合附圖的說明,其中圖1是表示具有傳統(tǒng)清除機制的傳統(tǒng)處理器系統(tǒng)的方框圖;圖2是表示具有傳統(tǒng)清除機制的傳統(tǒng)處理器系統(tǒng)的操作的流程圖;圖3是表示具有停滯機制的改進的處理器系統(tǒng)的方框圖;圖4A和4B是表示具有停滯機制的改進的處理器系統(tǒng)的操作的流程圖。
具體實施例方式
在下面的討論中,提出了許多特定細節(jié)以提供對本發(fā)明的徹底理解。然而,本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在沒有這樣的特定細節(jié)的情況下來實施。在其他情況下,以示意圖或方框圖的形式來顯示已知部件,以不會以不必要的細節(jié)來遮蔽本發(fā)明。此外,在大多數(shù)情況下,省略了有關(guān)網(wǎng)絡(luò)通信、電磁信號傳送技術(shù)等的細節(jié),只要對于要獲得本發(fā)明的完全理解來說,這樣的細節(jié)被認為不是必需的,且被認為處于相關(guān)領(lǐng)域的普通技術(shù)人員的理解范圍之內(nèi)。
此外應(yīng)該指出,除非有相反說明,否則這里所描述的所有功能都可在硬件或軟件、或它們的結(jié)合中實現(xiàn)。然而,在一個優(yōu)選實施例中,除非有相反說明,否則這些功能由諸如計算機或電子數(shù)據(jù)處理器的處理器根據(jù)諸如計算機程序代碼、軟件的代碼來實現(xiàn),和/或由被編碼為實現(xiàn)這些功能的集成電路來實現(xiàn)。
參照附圖的圖1,標號100一般性地指具有傳統(tǒng)清除機制的傳統(tǒng)處理器系統(tǒng)。處理器系統(tǒng)100包括指令取102、指令調(diào)度104、發(fā)出/執(zhí)行邏輯106、清除機制108、和總線110。
一般地,傳統(tǒng)處理器系統(tǒng)100通過總線110對命令的發(fā)出和執(zhí)行進行操作。指令取102取指令。然后,取出的指令通過第一通信通道112被傳送給指令調(diào)度104。指令調(diào)度104存儲該命令以準備最終的執(zhí)行。然后,指令調(diào)度104將該命令通過第二通信通道114傳送給發(fā)出/執(zhí)行邏輯106。然后,發(fā)出/執(zhí)行邏輯106試圖執(zhí)行該命令。在發(fā)出/執(zhí)行邏輯106和總線110之間的第三通信通道116使該命令能夠有效地被傳送給其他系統(tǒng)部件(未示出),以便可以執(zhí)行。
但是,如果該命令不能被執(zhí)行,則使用一個不同的機制來減輕該問題。不能執(zhí)行一個命令稱作“失敗”(miss)。如果發(fā)出/執(zhí)行邏輯106不能執(zhí)行一個命令,則該失敗命令通過第四通信通道118被傳送給清除機制108。然后,清除機制108能夠通過第五通信通道120將該失敗命令傳送回給指令調(diào)度104,在其中可以重新開始對于該失敗命令的發(fā)出/執(zhí)行處理。
清除機制的理由在于命令隊列的深度是有限的。通常,命令是持續(xù)地、或非??焖俚乇话l(fā)出的。當發(fā)生失敗時,在隊列中可能已不再有空間了。因此,將這些命令備份并在清除點處再次呈現(xiàn)。
參照附圖的圖2,標號200一般性地指表示具有傳統(tǒng)清除機制的傳統(tǒng)處理器系統(tǒng)的操作的流程圖。
在步驟202和204,命令從圖1的指令取102傳送到圖1的發(fā)出/執(zhí)行邏輯106。步驟202是取階段。步驟204a和204b分別是第一調(diào)度階段和第二調(diào)度階段。第一調(diào)度階段204a和第二調(diào)度階段204b統(tǒng)稱為調(diào)度階段204。在階段202和204內(nèi),從生成該命令的處理器(未示出)中取出該命令并將其調(diào)度到圖1的發(fā)出/執(zhí)行邏輯106。而且,可以存在多個取階段,或如圖2中所示的單個取階段,這可以隨著處理器的類型而變化。也可存在單個調(diào)度階段,或如圖2中所示的多個調(diào)度階段,這可以隨著處理器的類型而變化。
在步驟206,發(fā)出該命令。發(fā)出階段206進一步包括第一發(fā)出階段206a和第二發(fā)出階段206b。在第一發(fā)出階段206a和第二發(fā)出階段206b內(nèi),存在可能發(fā)生以為該命令的最終執(zhí)行作準備的多種過程,諸如識別該命令的類型。例如,圖1的發(fā)出/執(zhí)行單元106可檢測依賴性、預(yù)編碼操作數(shù)等。同樣可存在單個發(fā)出階段或如圖2中所示的多個發(fā)出階段,這可以隨著處理器的類型而變化。
在步驟208,由圖1的發(fā)出/執(zhí)行邏輯106對該命令進行解碼。步驟208進一步包括第一解碼階段208a和第二解碼階段208b。在第一解碼階段208a和第二解碼階段208b內(nèi),存在可能發(fā)生以為該命令的最終執(zhí)行作準備的多種過程,諸如確定在執(zhí)行該命令中所涉及的具體過程。例如,圖1的發(fā)出/執(zhí)行邏輯106可識別諸如加載、存儲、高速緩存操作等的操作。同樣可存在單個解碼階段或如圖2所示的多個解碼階段,這可以隨著處理器的類型而變化。
在步驟210中,圖1的發(fā)出/執(zhí)行邏輯106開始該命令的執(zhí)行。執(zhí)行階段210進一步包括第一執(zhí)行階段210a、第二執(zhí)行階段210b、第三執(zhí)行階段210c、第四執(zhí)行階段210d、和第五執(zhí)行階段210e。存在可能發(fā)生以執(zhí)行該命令的多種過程,諸如確定將數(shù)據(jù)通過總線110傳送給其他系統(tǒng)部件(未示出)的具體過程。而且,也可以存在單個執(zhí)行階段或如圖2所示的多個執(zhí)行階段,這可以隨著處理器的類型而變化。
在最后執(zhí)行階段之后,對該命令是否已失敗及是否存在溢出進行判斷212。存在多種信號和數(shù)據(jù)可從發(fā)出/執(zhí)行邏輯106通過圖1的總線110傳送到其他系統(tǒng)部件(未示出),以判定該命令將被執(zhí)行還是會失敗。如果該命令將執(zhí)行216,則與該命令相對應(yīng)的數(shù)據(jù)在圖1的總線110上轉(zhuǎn)移。
另一方面,如果存在伴隨著隊列溢出的失敗,則將使用另一組步驟。如果其他系統(tǒng)部件(未示出)或圖1的發(fā)出/執(zhí)行邏輯106使得該命令隨著隊列溢出而失敗,則該命令被清除214。通過清除該命令214,執(zhí)行的處理終止。然后,存儲該命令并在取階段202重新取該命令。
清除一個命令可能是代價很高的過程。在過程中途由于命令隊列的溢出而停止該命令的執(zhí)行,則發(fā)出和解碼所花費的時間被浪費了。存在著在執(zhí)行之前命令可能失敗多次的情況。因此,使失敗命令的重復(fù)地和不必要地發(fā)出和解碼占用了有限的計算機資源,增加了等待時間。
參照附圖的圖3,標號300一般性地指具有用于存儲命令的停滯機制的處理器系統(tǒng)。該改進的處理器系統(tǒng)300包括指令取302、指令調(diào)度304、發(fā)出/執(zhí)行邏輯306、停滯計算器308、中斷/停滯機制310、計數(shù)器312、和總線314。
一般地,常規(guī)處理器系統(tǒng)300通過總線314對命令的發(fā)出和執(zhí)行進行操作。指令取302取命令。然后,取出的命令通過第一通信通道316傳送給指令調(diào)度304。指令調(diào)度304將該命令通過第二通信通道318傳送給發(fā)出/執(zhí)行邏輯。然后,發(fā)出/執(zhí)行邏輯306試圖執(zhí)行并實現(xiàn)該命令。發(fā)出/執(zhí)行邏輯306和總線314之間的第三通信通道330使該命令能夠有效地傳送給其他系統(tǒng)部件(未示出),以便可以執(zhí)行。
然而,如果該命令不能被執(zhí)行,則使用一個不同的機制來減輕該問題。不能執(zhí)行一個命令稱作“失敗”。計數(shù)器312通過第四通信通道322連接到指令調(diào)度304,并通過第五通信通道324連接到發(fā)出/執(zhí)行邏輯306。通過第四通信通道322和第五通信通道324,計數(shù)器312能夠確定兩個計數(shù)已知計數(shù)和未知計數(shù)。已知計數(shù)是在發(fā)出/執(zhí)行邏輯306的命令隊列內(nèi)的命令及在第一通信通道316和第二通信通道318的流水線中的命令的數(shù)量。未知計數(shù)是對可以被導(dǎo)向適當隊列、但越過了該命令在其處可以被停滯的點(未示出)的命令的預(yù)測。
然后,已知和未知計數(shù)可以用于引發(fā)停滯。計數(shù)器312通過第六通信通道328將已知和未知計數(shù)傳送到停滯計算器308。停滯計算器308所實現(xiàn)的停滯計算是根據(jù)已知和未知計數(shù)的和。已知和未知計數(shù)的和從不應(yīng)當超過發(fā)出/執(zhí)行邏輯306的命令隊列中的條目總數(shù)。因此,未知計數(shù)可以變化,以允許對進入命令隊列的命令流的更大的控制。一旦停滯計算器確定已完成停滯計算,則通過第七通信通道326向中斷/停滯機制310傳送中斷或停滯信號。然后,中斷/停滯機制310可以通過第八通信通道320中斷或停滯發(fā)出/執(zhí)行邏輯306內(nèi)的命令流。換句話說,中斷/停滯機制310防止發(fā)出/執(zhí)行邏輯306內(nèi)的隊列溢出。
參照附圖的圖4A和4B,標號400一般性地指具有停滯機制的處理器系統(tǒng)的操作的流程圖。
在步驟402和404,命令從圖3的指令取被傳送到圖3的發(fā)出/執(zhí)行邏輯306。步驟402是取階段。步驟404a和404b分別是第一調(diào)度階段和第二調(diào)度階段。第一調(diào)度階段404a和404b統(tǒng)稱為調(diào)度階段404。在階段402和404內(nèi),命令從產(chǎn)生該命令的處理器(未示出)中取出并被調(diào)度到圖3的發(fā)出/執(zhí)行邏輯306。而且,可以存在多個取階段或如圖4A中所示的單個取階段,這可以隨著處理器的類型而變化。也可以存在單個調(diào)度階段或如圖4A中所示的多個調(diào)度階段,這可以隨著處理器的類型而變化。
在步驟406,發(fā)出該命令。發(fā)出階段406進一步包括第一發(fā)出階段406a和第二發(fā)出階段406b。在第一發(fā)出階段406a和第二發(fā)出階段406b內(nèi),存在可能發(fā)生以為該命令的最終執(zhí)行作準備的多種過程,諸如識別命令的類型。例如,圖3的發(fā)出/執(zhí)行單元306可以檢測依賴性、預(yù)編碼操作數(shù)等。也可以存在單個發(fā)出階段或如圖4A中所示的多個發(fā)出階段,這可以隨著處理器的類型而變化。
在步驟408中,由圖3的發(fā)出/執(zhí)行邏輯306對該命令進行解碼。步驟408進一步包括第一解碼階段408a和第二解碼階段408b。在第一解碼階段408a和第二解碼階段408b內(nèi),存在可能發(fā)生以為該命令的最終執(zhí)行作準備的多種過程,諸如確定在執(zhí)行該命令中所涉及的具體過程。例如,圖3的發(fā)出/執(zhí)行邏輯306可以識別諸如加載、存儲、高速緩存操作等的操作。也可存在單個解碼階段或如圖4A中所示的多個解碼階段,這可以隨著處理器的類型而變化。
在步驟410中,圖3的發(fā)出/執(zhí)行邏輯306開始該命令的執(zhí)行。執(zhí)行階段410進一步包括第一執(zhí)行階段410a、第二執(zhí)行階段410b、第三執(zhí)行階段410c、第四執(zhí)行階段410d、和第五執(zhí)行階段410e。存在可能發(fā)生以執(zhí)行該命令的多種過程,諸如確定通過圖3的總線314將數(shù)據(jù)傳送到其他系統(tǒng)部件(未示出)的具體過程。同樣,可以有單個執(zhí)行階段或如圖4所示的多個執(zhí)行階段,這可以隨著處理器的類型而變化。
在第四執(zhí)行階段410d,如果該命令是加載命令,則判定是否有一個加載命令已失敗426。存在多種信號和數(shù)據(jù)可從發(fā)出/執(zhí)行邏輯306通過圖3的總線314傳送到其他系統(tǒng)部件(未示出),以判定該命令是將被執(zhí)行還是會失敗。如果該命令將被執(zhí)行430,則對應(yīng)于該命令的數(shù)據(jù)在圖3的總線314上轉(zhuǎn)移,且在發(fā)出階段406在圖3的發(fā)出/執(zhí)行邏輯306內(nèi)傳送完成信號。在發(fā)出階段406,可對依賴性進行更新,以表明該加載命令已完成。
但如果存在加載命令失敗,則將使用另一組步驟。加載命令被傳送到加載命令隊列428。然后,一旦圖3的處理器系統(tǒng)300可以執(zhí)行該加載命令時,則執(zhí)行430它。
同樣,如果該命令是存儲命令,則在第四執(zhí)行階段410d,判斷該存儲命令是否已失敗412。存在多種信號和數(shù)據(jù)可以從發(fā)出/執(zhí)行邏輯306通過圖3的總線314傳送到其他系統(tǒng)部件(未示出),以判定該命令將被執(zhí)行還是會失敗。
然而,無論該存儲命令實際上是否失敗,該存儲命令都被計為失敗。這樣,任何已解碼的存儲命令都是一存儲失敗。所有存儲命令都被傳送到存儲執(zhí)行隊列414。一旦執(zhí)行了一個存儲命令430,則完成信號被傳送到定步階段432的已知計數(shù)階段416,如圖4B中所示。
然而,為了停滯該過程,需要來自該過程的各階段的更多輸入。每當在解碼階段408解碼了一個存儲命令,便向已知計數(shù)階段416(圖4B)傳送一個存儲操作信號。已知計數(shù)是根據(jù)退出(retire)或完成414的存儲命令的數(shù)量及已解碼存儲命令408中的存儲命令的數(shù)量而制定的。最初,已知計數(shù)是0。然而,隨著存儲命令被解碼,已知計數(shù)遞增。而且,隨著存儲命令被退出或完成,已知計數(shù)則遞減。
與已知計數(shù)計算的同時,也預(yù)測未知計數(shù)。最初,未知計數(shù)被設(shè)為包含了從計算停滯時到圖3的發(fā)出/執(zhí)行邏輯306作為響應(yīng)進行停滯時的等待時間的值,例如5。如果該初始值大于等待時間,則將會有不必要的停滯。如果初始值小于等待時間,則可能會有清除。
根據(jù)已知和未知計數(shù),則在必要時可以實現(xiàn)停滯。然后,將未知計數(shù)418和已知計數(shù)416加在一起422(圖4B)。然后,應(yīng)該進行判定以確定已知和未知計數(shù)是否大于圖3的發(fā)出/執(zhí)行邏輯306的隊列深度424(圖4B)。如果已知和未知計數(shù)的和小于圖3的發(fā)出/執(zhí)行邏輯306的隊列深度,則不從定步階段432發(fā)出停滯命令。如果已知和未知計數(shù)的和大于圖3的發(fā)出/執(zhí)行邏輯306的隊列深度,則向發(fā)出階段406發(fā)出一個停滯。該停滯阻止存儲命令從第一發(fā)出階段406a移動到第二發(fā)出階段406b,停滯調(diào)度階段404和取階段402。
此外,為了對圖3的系統(tǒng)300進行操作,還應(yīng)該對未知計數(shù)進行修改。停滯請求和存儲命令可位于第一發(fā)出階段406a、第二發(fā)出階段406b、第一解碼階段408a、和第二解碼階段408b。跟蹤階段420(圖4B)不是監(jiān)視在每一階段的命令是什么,而是計算在第一發(fā)出階段406a、第二發(fā)出階段406b、第一解碼階段408a、和第二解碼階段408b中可能有多少存儲命令。當發(fā)出了一個停滯信號時,該停滯信號遞減未知計數(shù)418,因為已經(jīng)知道了在至少第一發(fā)出階段406a、第二發(fā)出階段406b、第一解碼階段408a、和第二解碼階段408b中存在一個停滯。一旦已完成了一個停滯,則跟蹤階段420遞增未知計數(shù)。
停滯的使用增加了諸如圖3的系統(tǒng)300的處理器系統(tǒng)的性能。停滯或中斷使得命令延遲進入命令隊列。延遲進入使得已超過了隊列條目位置數(shù)量的或溢出的失敗命令更快地執(zhí)行,而不會增加隨溢出而產(chǎn)生的等待時間。
根據(jù)前述的說明將進一步理解,在本發(fā)明的優(yōu)選實施例中可以實現(xiàn)各種修改和變化,而不脫離本發(fā)明的真正精神。這一說明只是為了例示的目的,不應(yīng)被解釋為限制的意義。本發(fā)明的范圍只應(yīng)由所附權(quán)利要求的語言來限定。
權(quán)利要求
1.一種用于執(zhí)行命令的裝置,包括執(zhí)行邏輯,其中該執(zhí)行邏輯至少被設(shè)置為執(zhí)行由處理器發(fā)出的多個命令,且其中該執(zhí)行邏輯進一步包括具有預(yù)定數(shù)量的用于存儲由該處理器發(fā)出的該多個命令的槽的命令隊列;命令流水線,其中該命令流水線至少將由該處理器發(fā)出的多個命令傳送給上述執(zhí)行邏輯;多個計數(shù)器,其中該多個計數(shù)器至少確定在上述命令流水線和上述命令隊列中的命令數(shù)量的已知計數(shù),且其中該多個計數(shù)器至少預(yù)測未來命令的未知計數(shù);以及停滯邏輯,其中該停滯邏輯至少具有根據(jù)至少該未知計數(shù)和該已知計數(shù)的使用停滯由該處理器發(fā)出的該多個命令的執(zhí)行的能力。
2.權(quán)利要求1的裝置,其中上述執(zhí)行邏輯進一步包括取邏輯,其中該取邏輯至少從上述命令流水線中提取出該多個命令,以至少提供多個取出的命令;解碼邏輯,其中該解碼邏輯至少對該多個取出的命令進行解碼,以至少提供多個解碼的命令;發(fā)出邏輯,其中該發(fā)出邏輯至少將該多個解碼的命令發(fā)出到上述執(zhí)行邏輯的命令隊列;以及執(zhí)行邏輯,其執(zhí)行該命令隊列中的該多個解碼的命令。
3.權(quán)利要求1的裝置,其中上述多個計數(shù)器進一步包括已知計數(shù)器,其中該已知計數(shù)器至少確定上述已知計數(shù);以及未知計數(shù)器,其中該未知計數(shù)器至少確定上述未知計數(shù)。
4.權(quán)利要求3的裝置,其中上述停滯邏輯進一步包括停滯監(jiān)視器,其中如果上述未知計數(shù)和已知計數(shù)的和大于上述命令隊列中槽的預(yù)定數(shù)量,則該停滯監(jiān)視器至少停滯由該處理器發(fā)出的該多個命令的執(zhí)行。
5.權(quán)利要求1的裝置,其中上述停滯邏輯進一步包括跟蹤流水線,其中該跟蹤流水線監(jiān)視該多個命令和停滯請求的進展,以至少提供一控制信號;遞增器,其中該遞增器根據(jù)該控制信號遞增該未知計數(shù);以及遞減器,其中該遞減器根據(jù)該控制信號遞減該未知計數(shù)。
6.權(quán)利要求4的裝置,其中上述停滯邏輯進一步包括跟蹤流水線,其中該跟蹤流水線監(jiān)視該多個命令和停滯請求的進展,以至少提供一控制信號;遞增器,其中該遞增器根據(jù)該控制信號遞增該未知計數(shù);以及遞減器,其中該遞減器根據(jù)該控制信號遞減該未知計數(shù)。
7.一種用于停滯命令執(zhí)行系統(tǒng)中命令的執(zhí)行的裝置,包括停滯邏輯,其中該停滯邏輯至少具有根據(jù)至少命令流水線和命令隊列中命令數(shù)量的已知計數(shù)和未來命令的未知計數(shù)預(yù)測的使用,停滯由處理器發(fā)出的多個命令的執(zhí)行的能力。
8.權(quán)利要求7的裝置,其中上述停滯邏輯進一步包括已知計數(shù)器,其中該已知計數(shù)器至少確定上述已知計數(shù);以及未知計數(shù)器,其中該未知計數(shù)器至少確定上述未知計數(shù)。
9.權(quán)利要求8的裝置,其中上述停滯邏輯進一步包括停滯監(jiān)視器,其中如果上述已知計數(shù)和上述未知計數(shù)的和大于上述命令隊列中槽的預(yù)定數(shù)量,則該停滯監(jiān)視器至少停滯由該處理器發(fā)出的該多個命令的執(zhí)行。
10.權(quán)利要求7的裝置,其中上述停滯邏輯進一步包括跟蹤流水線,其中該跟蹤流水線監(jiān)視該多個命令和停滯請求的進展,以至少提供一控制信號;遞增器,其中該遞增器根據(jù)該控制信號遞增上述未知計數(shù);以及遞減器,其中該遞減器根據(jù)該控制信號遞減該未知計數(shù)。
11.權(quán)利要求9的裝置,其中上述停滯邏輯進一步包括跟蹤流水線,其中該跟蹤流水線監(jiān)視上述多個命令和停滯請求的進展,以至少提供一控制信號;遞增器,其中該遞增器根據(jù)該控制信號遞增該未知計數(shù);以及遞減器,其中該遞減器根據(jù)該控制信號遞減該未知計數(shù)。
12.一種停滯命令執(zhí)行系統(tǒng)中命令的執(zhí)行的方法,包括執(zhí)行多個命令;在執(zhí)行期間向停滯邏輯報告該多個命令的命令進展;在執(zhí)行期間判定該執(zhí)行是否失敗;如果該執(zhí)行失敗,則將該命令存儲在命令隊列中;以及根據(jù)失敗和該多個命令的進展,停滯命令執(zhí)行。
13.權(quán)利要求12的方法,其中上述停滯命令執(zhí)行的步驟進一步包括當所存儲的命令被執(zhí)行時,接收完成信號。
14.權(quán)利要求13的方法,其中上述停滯命令執(zhí)行的步驟進一步包括確定在命令流水線中和在命令隊列中的命令數(shù)量的已知計數(shù);以及確定未來命令的未知計數(shù)預(yù)測。
15.權(quán)利要求14的方法,其中上述停滯命令執(zhí)行的步驟進一步包括確定上述已知計數(shù)和上述未知計數(shù)的和;判定該和是否大于上述命令隊列中槽的預(yù)定數(shù)量;以及如果該和大于上述命令隊列中槽的預(yù)定數(shù)量,則請求停滯。
16.一種用于停滯命令執(zhí)行系統(tǒng)中命令的執(zhí)行的計算機程序產(chǎn)品,該計算機程序產(chǎn)品具有一介質(zhì),該介質(zhì)具有包含在其上的計算機程序,該計算機程序包括用于執(zhí)行多個命令的計算機代碼;用于在執(zhí)行期間向停滯邏輯報告該多個命令的命令進展的計算機代碼;用于在執(zhí)行期間判定該執(zhí)行是否失敗的計算機代碼;如果該執(zhí)行失敗,用于將該命令存儲在命令隊列中的計算機代碼;以及用于根據(jù)失敗和該多個命令的進展,停滯該命令執(zhí)行的計算機代碼。
17.權(quán)利要求16的計算機程序產(chǎn)品,其中上述用于停滯命令執(zhí)行的計算機代碼進一步包括當所存儲的命令被執(zhí)行時,接收完成信號。
18.權(quán)利要求17的計算機程序產(chǎn)品,其中上述用于停滯命令執(zhí)行的計算機代碼進一步包括用于確定在命令流水線中和在命令隊列中的命令數(shù)量的已知計數(shù)的計算機代碼;以及用于確定未來命令的未知計數(shù)預(yù)測的計算機代碼。
19.權(quán)利要求18的計算機程序產(chǎn)品,其中上述用于停滯命令執(zhí)行的計算機代碼進一步包括用于確定上述已知計數(shù)和上述未知計數(shù)的和的計算機代碼;用于判定該和是否大于上述命令隊列中槽的預(yù)定數(shù)量的計算機代碼;以及如果該和大于上述命令隊列中槽的預(yù)定數(shù)量,用于請求停滯的計算機代碼。
全文摘要
本發(fā)明提供了一種用于停滯命令的執(zhí)行的裝置、方法和計算機程序。在一般執(zhí)行系統(tǒng)中,存在多個為了命令能夠被執(zhí)行而必須完成的步驟。然而,由于多種原因,命令可能不被執(zhí)行。通常,系統(tǒng)將使用清除機制來減輕沒有被執(zhí)行的命令的累積。但是,清除可能是代價很高的。因此,開發(fā)出了停滯命令的執(zhí)行的更有效的系統(tǒng),以減輕失敗的命令執(zhí)行的問題和與系統(tǒng)清除相關(guān)的問題。
文檔編號G06F9/00GK1645316SQ200510000198
公開日2005年7月27日 申請日期2005年1月6日 優(yōu)先權(quán)日2004年1月22日
發(fā)明者B·巴里克 申請人:國際商業(yè)機器公司