專利名稱::用于將處理器置于逐漸緩慢的操作模式的系統(tǒng)和方法
技術領域:
:本發(fā)明總體涉及一種改進的數(shù)據(jù)處理系統(tǒng)和方法。具體地,本發(fā)明涉及一種用于將處理器置于逐漸緩慢的操作模式(gradualslowmodeofoperation)的系統(tǒng)和方法。處理器的緩慢操作模式被用于擺脫處理器核內(nèi)的活鎖狀態(tài)(livelockcondition)。
背景技術:
:在現(xiàn)代處理器設計中,尤其在同步多線程(SMT)處理器設計中,活鎖狀態(tài)是在設計階段最難以發(fā)現(xiàn)和解決的問題之一,常常是直到后來在該設計實施在硬件中時才被發(fā)現(xiàn)?;铈i狀態(tài)可被描述為處理器重復地執(zhí)行相同指令集而不做任何實際前進。進入活鎖狀態(tài)的根本原因之一是由于在一個處理器單元和另一個之間的“諧和(harmonic)”固定周期交互(interaction)。活鎖狀態(tài)的其它原因是指令的重復刷新和重新讀取、來自發(fā)行隊列的重復的重新發(fā)行以及由于在不能夠騰出的資源滿或者忙狀態(tài)時發(fā)生重復刷新(flush)狀態(tài)而從來沒有完成指令?!爸C和”固定周期交互是下述事實的產(chǎn)物在處理器流水線中,固定數(shù)目的周期被用于處理和完成指令的執(zhí)行。來自個多線程的指令將以諧和方式通過該處理器流水線而被處理,使得每個線程中的每個指令以基本上相同的時間完成處理。如果在執(zhí)行的線程之間具有從屬性(dependency),使得一個線程需要另一個執(zhí)行的線程中的指令的結果,則活鎖狀態(tài)可能發(fā)生,因為兩個指令同時通過該處理器流水線被處理以及存在資源和從屬性的沖突。由于另一個線程中的指令的結果尚未獲得,因此從屬指令將不能夠完成。如果另一個線程中的指令遇到資源沖突,則來自兩個線程的指令將被重復地刷新并重新發(fā)行到該流水線。圖6A和6B示出了導致活鎖狀態(tài)的代碼的例子和雙指令發(fā)行處理器設計。圖6A表示SMT和雙指令發(fā)行處理器流水線設計,其中,每隔一個周期就從每個線程發(fā)行兩個指令。圖6B表示示例性的用戶代碼,當其在圖6A所示的處理器流水線上被執(zhí)行時,導致兩個線程試圖訪問處理器的專用寄存器(SPR)。線程0用不相等分支(Branch-Not-Equal)(bneq)指令編碼以等待線程1代碼完成其SPR訪問。線程0代碼將堅持分支返回(branching)并堅持檢查線程1的“存儲”指令是否完成。圖6A所示的處理器流水線設計中的SPR隊列每次僅僅能夠支持兩個SPR指令。因此,線程1中的第三個SPR指令以及在第三個SPR指令后面的所有指令將一直被刷新和重新發(fā)行。如果線程0和線程1兩者的指令以下面表1中所示的順序進行編譯,則在“mtsprCR1”前面的所有線程1的指令將完成。線程1的“mtsprCR1”將最初被刷新,因為該SPR隊列忙于“mtsprAR3”和“mtsprBR2”。只要線程1的“存儲R40x100”不被執(zhí)行,在“bneqCheckThread1SPR”后面的所有的線程0的指令都將被發(fā)行和刷新。表1-產(chǎn)生活鎖狀態(tài)的示例性代碼流表2表示由于在由于兩個線程中的剩余指令被重新發(fā)行、刷新和再次重新發(fā)行而導致在n+1和n+3處的線程1的指令完成之后發(fā)生的新代碼序列。如表2中所示,由于線程0的“mtsprDR6”和“mtsprER7”在線程1的“mtsprCR1”的前面發(fā)行,因此線程1的“mtsprCR1”將再次得到刷新。由于分支錯誤預測,線程0中的這兩個“移動到SPR”指令將最終得到刷新。來自兩個線程的這兩個刷新狀態(tài)(線程0的分支錯誤預測刷新和線程1的第三個移動到SPR指令)連續(xù)地刷新并且該發(fā)行單元(issueunit)處于“諧和”窗口。因此,表2中的線程0和線程1兩者的指令將一再地重新發(fā)行和刷新。這將迫使處理器進入活鎖狀態(tài)。表2-產(chǎn)生活鎖狀態(tài)的示例性代碼流諸如上述的活鎖狀態(tài)經(jīng)常會在真實應用程序在處理器硬件上運行時被檢測到。此刻來確定該設計常常是既昂貴又太遲了。因此,重要的是,在處理器核內(nèi)建立一種通用方法來檢測和解決在硬件有效期中發(fā)現(xiàn)的這種不希望的活鎖狀態(tài)。通常,采用基于硬件的檢測機制來檢測這種活鎖狀態(tài),該檢測機制可以被硬編碼在處理器設計本身中,諸如被硬編碼在處理器的發(fā)行單元中。該檢測機制可以檢測活鎖狀態(tài)的方式取決于特定的實施手段(implementation)。例如,該檢測機制可以通過計數(shù)特殊指令的刷新數(shù)目或者指令在沒有完成的情況下重新發(fā)行的次數(shù)來檢測活鎖狀態(tài)。這種情況表示沒有向前前進的狀態(tài)改變,并且因此表示一種潛在的活鎖情況(scenario)。在已知設計中,響應于使用該活鎖檢測機制檢測到活鎖狀態(tài)的發(fā)生,處理器的流水線被置于單步操作模式中,使得在一個或多個線程上每次僅僅完成一個指令。但是,在每次檢測到活鎖狀態(tài)時將處理器的流水線置于單步模式中會顯著地影響處理器的整體性能,因為該活鎖狀態(tài)在程序的執(zhí)行中會非常頻繁地發(fā)生。如果這個活鎖狀況具有活鎖窗口,即具有僅僅少數(shù)處理器周期的其中活鎖狀態(tài)將在處理器中繼續(xù)被檢測的時間段,則這個方法也是不必要的過度行為(overkill)。
發(fā)明內(nèi)容示例性實施例提供了一種用于將處理器置于一種逐漸減慢的操作模式的系統(tǒng)和方法。處理器的逐漸減慢允許處理器擺脫活鎖狀態(tài)。而且,由于減慢是漸漸的,因此處理器可以靈活地避免各種程度的活鎖狀態(tài)。通過對不嚴重的活鎖狀態(tài)采取小的性能影響以及僅僅在活鎖狀態(tài)是更嚴重時增加該處理器性能影響,示例性實施例的機智基于活鎖狀態(tài)的嚴重性來影響整體處理器性能。采用示例性實施例的機制,伴隨相關的活鎖狀態(tài)處理邏輯一起提供了活鎖狀態(tài)檢測的多個階段。相關的活鎖狀態(tài)處理邏輯使用試圖擺脫活鎖狀態(tài)的不同動作。多個階段中的每個隨后階段與活鎖狀態(tài)的增加嚴重性相關聯(lián)。早期階段與僅僅是少數(shù)處理器周期的活鎖窗口相關聯(lián),而后期階段與更長的活鎖窗口相關聯(lián)。對于每個階段,處理器的性能被逐漸地降低,而擺脫活鎖狀態(tài)的可能性增加。在一個示例性實施例中,減慢模式控制邏輯被設置在處理器流水線的發(fā)行單元中。該減慢模式控制邏輯耦接到懸停(hang)檢測控制邏輯,該懸停檢測控制邏輯負責基于預定準則,例如特殊指令刷新數(shù)目或者指令在沒有完成的情況下重新發(fā)行的次數(shù),來檢測活鎖狀態(tài)。響應于檢測到活鎖狀態(tài),該懸停檢測控制邏輯向該減慢模式控制邏輯發(fā)出一個表示存在活鎖狀態(tài)的信號。該減慢模式控制邏輯開始處理器的逐漸減慢的操作。根據(jù)該逐漸減慢的操作,所述減慢模式控制邏輯輸出信號以減緩(stall)通過處理器流水線的指令的流動。該輸出信號諸如通過或門與來自諸如數(shù)據(jù)從屬性控制邏輯的其它控制邏輯的輸出信號邏輯地組合。因此,如果所述減慢模式控制邏輯或者其它控制邏輯輸出信號以減緩通過處理器流水線的指令的移動,則該指令被減緩。當這些信號沒有被發(fā)出時,則該指令允許以正常方式流動通過該流水線。根據(jù)被硬連接到或者編程到該減慢模式控制邏輯中的分階段方案,該減慢模式控制邏輯輸出該信號以減緩指令的流動。例如,如果所述懸停檢測控制邏輯檢測到活鎖(或者懸停)狀態(tài),即在沒有指令被提交(commit)的情況下存在X刷新數(shù)目(這里X可以在硬件確認之后被編程),則減慢模式控制邏輯可以減慢發(fā)行單元,使得發(fā)行單元僅僅每隔N個處理器周期發(fā)行指令(這里N可以在硬件確認之后被編程)。發(fā)行單元的減慢可以通過發(fā)出信號來減緩通過流水線的指令的移動來實現(xiàn)。這個信號可以針對預定數(shù)目的周期例如N個周期被發(fā)出,使得每隔N個處理器周期僅僅一個指令被發(fā)行。如果這種相同的活鎖狀態(tài)再次發(fā)生,即在沒有指令被提交的情況下存在X次刷新數(shù)目,則發(fā)行單元被再次減慢,使得發(fā)行單元可以每隔2N個處理器周期發(fā)行一個指令。如果活鎖狀態(tài)被再次檢測到,則發(fā)行單元被再次減慢,使得發(fā)行單元可以每隔4N個處理器周期發(fā)行一個指令。此后,如果活鎖狀態(tài)被再一次檢測到,則處理器被確定為處于嚴重的活鎖狀態(tài)。在這種情況下,發(fā)行單元被強制進入連續(xù)單步模式,該連續(xù)單步模式允許僅僅一個指令發(fā)行,而不允許發(fā)行其它指令,直到在前一指令完成為止。當該發(fā)行單元排出了該發(fā)行單元的發(fā)行和調(diào)度流水線中的所有指令時,該處理器被恢復到正常的全速操作模式。如果該活鎖狀態(tài)不再被檢測到,則該處理器在所述分階段方案的任何一個在前階段中被恢復到該正常的全速操作模式。在一個示例性實施例中,提供一種用于擺脫活鎖狀態(tài)的方法。該方法包括例如檢測數(shù)據(jù)處理裝置中的活鎖狀態(tài)以及在持續(xù)檢測到所述活鎖狀態(tài)的同時,使得由數(shù)據(jù)處理裝置進行的指令的處理逐漸地減緩增加數(shù)目的處理器周期。該方法還可以包括響應于檢測到所述活鎖狀態(tài)已被打破,使得所述數(shù)據(jù)處理裝置恢復到全速操作模式。所述使得由數(shù)據(jù)處理裝置進行的指令的處理逐漸地減緩可以包括根據(jù)分階段方案,響應于檢測到所述活鎖狀態(tài),將數(shù)據(jù)處理裝置設置到減速操作模式。所述分階段方案可具有多個階段,所述多個階段按照不同的處理周期數(shù)量來減慢指令的處理。所述將數(shù)據(jù)處理裝置設置到減速操作模式包括將由數(shù)據(jù)處理裝置進行的指令的處理減慢到一第一操作減慢階段,以及確定所述活鎖狀態(tài)在減慢由數(shù)據(jù)處理裝置進行的指令的處理之后是否持續(xù)。所述將數(shù)據(jù)處理裝置設置到減速操作模式還可包括如果所述活鎖狀態(tài)在將指令的處理減慢到第一操作減慢階段之后持續(xù),則將由數(shù)據(jù)處理裝置進行的指令的處理減慢到一第二操作減慢階段。與第一操作減慢階段相比,第二操作減慢階段使得由數(shù)據(jù)處理裝置進行的指令的發(fā)行延遲更大數(shù)目的處理周期。第二操作減慢階段使得由數(shù)據(jù)處理裝置進行的指令的發(fā)行延遲的處理周期數(shù)目是第一操作減慢階段使得由數(shù)據(jù)處理裝置進行的指令的發(fā)行延遲的處理周期數(shù)目的2倍。與第一操作減慢階段相比,第二操作減慢階段與更嚴重的活鎖狀態(tài)相關聯(lián)。所述檢測數(shù)據(jù)處理裝置中的活鎖狀態(tài)可以包括檢測在沒有完成指令的情況下達到預定閾值的特殊指令刷新的數(shù)目。而且,所述檢測數(shù)據(jù)處理裝置中的活鎖狀態(tài)還可以包括在沒有完成指令的情況下達到預定閾值的指令重新發(fā)行的次數(shù)。所述分階段方案的最后階段可將由數(shù)據(jù)處理裝置進行的指令的處理減慢到連續(xù)的單步操作模式,該連續(xù)的單步操作模式僅僅允許一個指令發(fā)行,而不允許其它指令發(fā)行,直到所述一個指令完成為止。所述數(shù)據(jù)處理裝置是處理器,并且其中由處理器進行的指令的處理通過延遲處理器流水線中的指令的發(fā)行而被逐漸地減緩。該方法在處理器的發(fā)行單元中實施。由處理器進行的指令的處理通過減緩通過所述發(fā)行單元的發(fā)行和調(diào)度流水線的指令的移動而被逐漸地減緩。在數(shù)據(jù)處理裝置的硬件制造之后,用于檢測活鎖狀態(tài)的準則被編程到該數(shù)據(jù)處理裝置中。而且在數(shù)據(jù)處理裝置的硬件制造之后,針對所述分階段方案的每個階段使得指令的發(fā)行延遲的處理周期的基本數(shù)目被編程到數(shù)據(jù)處理裝置中。在另一個示例性實施例中,提供了一種計算機程序產(chǎn)品,其包括具有計算機可讀程序的計算機可用介質(zhì)。該計算機可讀程序在計算裝置上被執(zhí)行時,使該計算裝置完成相對于上述示例性實施例方法而在上面概括出的操作中的各種操作以及組合。在又一個示例性實施例中,提供了一種用于擺脫活鎖狀態(tài)的系統(tǒng)。該系統(tǒng)可以包括發(fā)行單元和耦接到所述發(fā)行單元的處理器流水線。所述發(fā)行單元可以檢測處理器流水線中的活鎖狀態(tài);在持續(xù)檢測到所述活鎖狀態(tài)的同時,使得由處理器流水線進行的指令的處理逐漸地減緩增加數(shù)目的處理器周期;以及響應于檢測到所述活鎖狀態(tài)已被打破,使得所述處理器流水線恢復到全速操作模式。而且,該發(fā)行單元還可以完成相對于上述方法示例性實施例而在上面概括出的操作的各種操作和組合。鑒于本發(fā)明示例性實施例的下面詳細說明,對于本領域普通技術人員來說,本發(fā)明的上述和其它特征及優(yōu)點將被說明或者將變得清楚。在所附權利要求中給出了認為為本發(fā)明特征的新穎特征。然而,當結合附圖閱讀時,通過參考示例性實施例的下述詳細說明,將更好地理解本發(fā)明自身以及其使用的優(yōu)選模式、其它目的和優(yōu)點,其中圖1是其中可以實現(xiàn)示例性實施例的各個方案的分布式數(shù)據(jù)處理系統(tǒng)的示例性示意圖;圖2是其中可以實現(xiàn)示例性實施例的各個方案的數(shù)據(jù)處理裝置的示例性方框圖;圖3是表示根據(jù)一個示例性實施例的處理器流水線的示例性示意圖;圖4是表示根據(jù)一個示例性實施例的發(fā)行單元的細節(jié)的示例性示意圖;圖5是表示根據(jù)一個示例性實施例的用于活鎖狀態(tài)檢測和減慢機制的操作的分階段方案(stagingscheme)的示例性示意圖;圖6A表示SMT和雙指令發(fā)行處理器流水線設計,其中每隔一個周期就從每個線程發(fā)行兩個指令;圖6B表示示例性的用戶代碼,當其在圖6A所示的處理器流水線上被執(zhí)行時,導致兩個線程企圖訪問處理器的專用寄存器(SPR);以及圖7是概括用于根據(jù)一個示例性實施例檢測活鎖狀態(tài)和減慢處理器流水線操作的示例性操作的流程圖。具體實施例方式各個示例性實施例提供了一種用于將處理器置于逐漸減慢的操作模式以便擺脫活鎖狀態(tài)的系統(tǒng)和方法。這些示例性實施例可以在任何計算裝置的任何處理器中實現(xiàn)。例如,這些示例性實施例可以被用在服務器計算裝置、客戶計算裝置、通信裝置、便攜式計算裝置等的任何一個中。圖1-2此后作為其中可以實現(xiàn)這些示例性實施例的各個示例性方案的分布式數(shù)據(jù)處理環(huán)境和計算裝置的例子。圖1-2僅僅是示例性的,并不是為了說明或暗示對于可以實現(xiàn)這些示例性實施例的計算裝置的類型的任何限制。相反,這些示例性實施例可以被實現(xiàn)在任何處理器中,而與其中處理器最終正在操作的特殊機器或者計算裝置無關?,F(xiàn)在參考附圖,圖1描述了其中可以實現(xiàn)示例性實施例的各個方案的示例性分布式數(shù)據(jù)處理系統(tǒng)的圖示表示。分布式數(shù)據(jù)處理系統(tǒng)100可以包括其中可以實現(xiàn)這些示例性實施例之實施例的計算機的網(wǎng)絡。該分布式數(shù)據(jù)處理系統(tǒng)100包含至少一個網(wǎng)絡102,其是用于在分布式數(shù)據(jù)處理系統(tǒng)100內(nèi)在各種裝置和連接在一起的計算機之間提供通信鏈路的中介。網(wǎng)絡102可以包括諸如電線、無線通信鏈路或者光纜的連接。在描述的例子中,服務器104和服務器106與存儲單元108一起被連接到網(wǎng)絡102。另外,客戶機110,112和114也被連接到網(wǎng)絡102。這些客戶機110,112和114例如可以是個人計算機、網(wǎng)絡計算機等。在描述的例子中,服務器104將諸如根文件、操作系統(tǒng)圖像和應用程序的數(shù)據(jù)提供給客戶機110,112和114。客戶機110,112和114在所描述的例子中是針對服務器104的客戶機。分布式數(shù)據(jù)處理系統(tǒng)100可以包括另外的服務器、客戶機以及其它沒有示出的裝置。在描述的例子中,分布式數(shù)據(jù)處理系統(tǒng)100是因特網(wǎng),其具有表示全球網(wǎng)絡集合的網(wǎng)絡102和使用傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)套裝協(xié)議以相互通信的網(wǎng)關。因特網(wǎng)的中心是在主節(jié)點或者主計算機之間的高速數(shù)據(jù)通信線路的主干網(wǎng),由路由數(shù)據(jù)和消息的成千上萬個商業(yè)、政府、教育和其它的計算機系統(tǒng)構成。當然,分布式數(shù)據(jù)處理系統(tǒng)100還可以被實現(xiàn)為包括若干不同類型的網(wǎng)絡,諸如例如為內(nèi)部網(wǎng)絡、局域網(wǎng)絡(LAN)、廣域網(wǎng)絡(WAN)等。如上述,圖1是用作為例子,而不是用作為對于本發(fā)明不同實施例的體系結構限制。因此,圖1中所示的特殊部件不應當被認為是對于其中可以實現(xiàn)本發(fā)明各個示例性實施例的環(huán)境的限制?,F(xiàn)在參考圖2,其中示出了其中可以實現(xiàn)各個示例性實施例的各個方案的示例性數(shù)據(jù)處理系統(tǒng)的方框圖。數(shù)據(jù)處理系統(tǒng)200是諸如圖1中服務器104或者客戶機110的計算機的例子,其中可以位于(locate)用來實現(xiàn)用于本發(fā)明示例性實施例的各個處理的計算機可用代碼或者指令。在描述的例子中,數(shù)據(jù)處理系統(tǒng)200采用集線器體系結構,包括北橋和存儲器控制器集線器(NB/MCH)202以及南橋和輸入/輸出(I/O)控制器集線器(SB/ICH)204。處理單元206、主存儲器208和圖形處理器210被連接到NB/MCH202。圖形處理器210可以通過加速圖形端口(AGP)被連接到NB/MCH202。在描述的例子中,局域網(wǎng)絡(LAN)適配器212連接到SB/ICH204。音頻適配器216、鍵盤和鼠標適配器220、調(diào)制解調(diào)器222、只讀存儲器(ROM)224、硬盤驅(qū)動器(HDD)226、CD-ROM驅(qū)動器230、通用串行總線(USB)端口和其它通信端口232、以及PCI/PCIe裝置234通過總線238和總線240連接到SB/ICH204。PCI/PCIe裝置可以包括例如以太網(wǎng)適配器、內(nèi)插卡、以及用于筆記本計算機的PC卡。PCI使用卡總線控制器,而PCIe不使用。ROM224可以是例如閃爍二進制輸入/輸出系統(tǒng)(BIOS)。HDD226和CD-ROM驅(qū)動器230通過總線240連接到SB/ICH204。HDD226和CD-ROM驅(qū)動器230可以使用例如集成驅(qū)動器電子設備(IDE)或者串行先進技術附加裝置(SATA)接口。超級I/O(SIO)裝置236可以被連接到SB/ICH204。操作系統(tǒng)在處理單元206上運行。操作系統(tǒng)在圖2的數(shù)據(jù)處理系統(tǒng)200內(nèi)協(xié)調(diào)和提供各種部件的控制。作為客戶機,操作系統(tǒng)可以是商業(yè)上可獲得的操作系統(tǒng),例如為MicrosoftWindowsXP(Microsoft和Windows是微軟公司在美國、其它國家或者兩者都注冊的商標)。面向?qū)ο蟮木幊滔到y(tǒng),諸如JavaTM編程系統(tǒng)可以與操作系統(tǒng)協(xié)作運行,并且提供從在數(shù)據(jù)處理系統(tǒng)200上執(zhí)行的JavaTM程序或者應用程序中調(diào)用操作系統(tǒng)(Java是太陽微系統(tǒng)公司在美國、其它國家或者兩者都注冊的商標)。作為服務器,數(shù)據(jù)處理系統(tǒng)200可以是例如IBMeServerTMpSeries計算機系統(tǒng),運行先進交互執(zhí)行(AIX)操作系統(tǒng)或者LINUX操作系統(tǒng)(eServer、pSeries和AIX是國際商用機器公司在美國、其它國家或者兩者注冊的商標,而LINUX是LinusTorvalds在美國、其它國家或者兩者注冊的商標)。數(shù)據(jù)處理系統(tǒng)200可以是在處理單元206中包括多個處理器的對稱多處理器(SMP)系統(tǒng)。選擇地,可以采用單處理器系統(tǒng)。用于操作系統(tǒng)、面向?qū)ο蟮木幊滔到y(tǒng)、以及應用程序或者程序的指令可以位于在諸如HDD226的存儲裝置上,并且可以被裝載到主存儲器208中用于由處理單元206執(zhí)行。用于本發(fā)明各個示例性實施例的處理可以由使用計算機可用程序代碼的處理單元206執(zhí)行,所述計算機可用程序代碼可以被位于在諸如例如主存儲器208、ROM224的存儲器中或者在例如一個或多個外圍裝置226和230中。諸如圖2中所示的總線238或者總線240的系統(tǒng)總線可以由一個或多個總線構成。當然,使用任何類型的通信結構或者體系結構都可以實現(xiàn)該總線系統(tǒng),其用于在連接到所述結構或者體系結構的不同部件或者裝置之間的數(shù)據(jù)的傳遞。諸如圖2的調(diào)制解調(diào)器222或者網(wǎng)絡適配器212的通信單元可以包括用于發(fā)送和接收數(shù)據(jù)的一個或者多個裝置。存儲器可以是例如主存儲器208、ROM224、或者諸如在圖2的NB/MCH中發(fā)現(xiàn)的高速緩存器。本領域的普通技術人員將會理解圖1-2中的硬件可以根據(jù)實現(xiàn)方案而改變。除了或者替代圖1-2中描述的硬件,可以使用其它的內(nèi)部硬件或者外圍裝置,諸如閃存器、等效非易失性存儲器、或者光盤驅(qū)動器等。而且,在不脫離本發(fā)明的精神和范圍的情況下,除了前面述及的SMP系統(tǒng),示例性實施例的處理還可以被應用于多處理器數(shù)據(jù)處理系統(tǒng)。而且,數(shù)據(jù)處理系統(tǒng)200可以采取若干個不同數(shù)據(jù)處理系統(tǒng)的任何形式,所述不同數(shù)據(jù)處理系統(tǒng)包括客戶機計算裝置、服務器計算裝置、圖形輸入(tablet)計算機、膝上型計算機、電話或者其它通信裝置、個人數(shù)字助手(PDA)等。在一些示例性例子中,數(shù)據(jù)處理系統(tǒng)200可以例如是配置有閃存器的便攜式計算裝置,以提供用于存儲操作系統(tǒng)文件和/或用戶產(chǎn)生數(shù)據(jù)的非易失性存儲。實質(zhì)上,數(shù)據(jù)處理系統(tǒng)200可以是任何公知的或者后來開發(fā)的數(shù)據(jù)處理系統(tǒng),沒有體系結構限制。圖3是表示根據(jù)一個示例性實施例的處理器流水線的示例性示意圖。如圖3中所示,處理器300包括處理器流水線,由讀取地址多路復用器304、讀取單元310、解碼單元320、發(fā)行單元330、執(zhí)行單元340、完成單元350、和分支單元360構成。處理器300例如耦接到存儲器子系統(tǒng)370、主機總線380、總線控制單元390、主存儲器單元392、以及其它處理器和外部裝置394、諸如圖2中描述的那些部件。通過部件的上述配置,活鎖狀態(tài)通常被描述為處理器中相同的指令集一再多次地從讀取地址多路復用器304流到讀取單元310、解碼單元320、發(fā)行單元330、完成單元350和通過刷新地址路徑323返回到讀取地址多路復用器304,而不通過提交(committing)任何指令來進行任何實際的前進。如上所述,這種活鎖狀態(tài)的根本原因之一是在一個處理器單元和另一個之間的“諧和”固定周期交互、指令重復地刷新和重新讀取、或者由于在不能夠騰出的資源滿或者忙狀態(tài)的時候發(fā)生的重復的刷新(flush)狀態(tài)而從發(fā)行單元330的發(fā)行隊列重復地進行重新發(fā)行并永不完成。示例性實施例提供了一種用于響應于活鎖狀態(tài)的檢測緩慢地減緩由發(fā)行單元330進行的發(fā)行的指令的機制。在一個示例性實施例中,活鎖狀態(tài)檢測的多個階段(stages)與相關的活鎖狀態(tài)處理邏輯一起被設置在發(fā)行單元330中。該相關的活鎖狀態(tài)處理邏輯使用試圖擺脫活鎖狀態(tài)的不同動作。所述多個階段中的每個隨后階段與活鎖狀態(tài)的增加的嚴重性相關聯(lián)。早期階段與僅僅是少數(shù)處理器周期的活鎖窗口相關聯(lián),而后期階段與更長的活鎖窗口相關聯(lián)。對于每個階段,處理器的性能被逐漸地降低,而擺脫活鎖狀態(tài)的可能性增加。在一個示例性實施例中,減慢模式控制邏輯被設置在處理器流水線的發(fā)行單元330中。該減慢模式控制邏輯耦接到活鎖(或者懸停)檢測控制邏輯,該活鎖檢測控制邏輯負責基于預定準則,例如特殊指令刷新數(shù)目或者指令在沒有完成的情況下重新發(fā)行的次數(shù),來檢測活鎖狀態(tài)。響應于檢測到活鎖狀態(tài),該活鎖檢測控制邏輯向該減慢模式控制邏輯發(fā)出一個表示存在活鎖狀態(tài)的信號。該減慢模式控制邏輯通過減緩來自發(fā)行單元330的指令的發(fā)行開始處理器300的逐漸減慢的操作。根據(jù)該逐漸減慢的操作,所述減慢模式控制邏輯輸出信號以減緩通過處理器流水線的指令的流動。該輸出信號諸如通過或門與來自發(fā)行單元330的諸如數(shù)據(jù)從屬性控制邏輯的其它控制邏輯的輸出信號邏輯地組合。因此,如果所述減慢模式控制邏輯或者其它控制邏輯輸出信號以減緩通過發(fā)行單元330的發(fā)行和調(diào)度流水線的指令的移動,則該指令被減緩。當這些信號沒有被發(fā)出時,則該指令允許以正常方式流動通過發(fā)行單元330的發(fā)行和調(diào)度流水線。根據(jù)被硬連接到或者編程到該減慢模式控制邏輯中的分階段方案,該減慢模式控制邏輯輸出該信號以減緩指令的流動。例如,如果所述活鎖檢測控制邏輯檢測到活鎖(或者懸停)狀態(tài),即在沒有指令被提交(commit)的情況下存在X刷新數(shù)目(這里X可以在硬件確認之后被編程),則減慢模式控制邏輯可以減慢發(fā)行單元330,使得發(fā)行單元330僅僅每隔N個處理器周期發(fā)行指令(這里N可以在硬件確認之后被編程)。發(fā)行單元330的減慢可以通過發(fā)出信號來減緩通過發(fā)行單元330的指令的移動來實現(xiàn)。這個信號可以針對預定數(shù)目的周期例如N個周期被發(fā)出,使得每隔N個處理器周期僅僅一個指令被發(fā)行。發(fā)行單元330被減緩的周期的數(shù)目可以隨著每個隨后檢測到該相同活鎖狀態(tài)而增加。換言之,當用指令的每個隨后連續(xù)的重新發(fā)行檢測到該活鎖狀態(tài)時,發(fā)行單元被減緩的周期的數(shù)目就增加。當活鎖狀態(tài)被檢測到預定數(shù)目的次數(shù)時,處理器300可以被確定為處于嚴重的活鎖狀態(tài)。在這種情況下,發(fā)行單元300可以被強制進入連續(xù)單步模式,該連續(xù)單步模式允許僅僅一個指令發(fā)行,而不允許發(fā)行其它指令,直到在前一指令完成為止。當該發(fā)行單元330排出了該發(fā)行單元330的發(fā)行和調(diào)度流水線中的所有指令時,該處理器300被恢復到正常的全速操作模式。如果該活鎖狀態(tài)不再被檢測到,則該處理器300在所述分階段方案的任何一個在前階段中被恢復到該正常的全速操作模式。圖4是表示根據(jù)一個示例性實施例的發(fā)行單元的細節(jié)的示例性示意圖。如圖4所示,發(fā)行單元330包括多個寄存器410-414,其共同構成發(fā)行單元330的發(fā)行和調(diào)度流水線。發(fā)行單元330還包括活鎖(或者懸停)檢測控制邏輯420、慢模式控制邏輯430、以及用于控制通過所述發(fā)行和調(diào)度流水線的指令的移動的其它控制邏輯440。來自該慢模式控制邏輯430和其它控制邏輯440的輸出被提供給或門450,該或門將減緩/移位信號輸出到寄存器410-414,以將這些寄存器中存儲的指令移位到所述發(fā)行和調(diào)度流水線中的下一個寄存器(或者將指令發(fā)行到執(zhí)行單元340),或者使得該指令減緩處理器周期。采用圖4中所示的處理器流水線,多路復用器304從程序計數(shù)器地址輸入321、來自分支單元360的分支地址輸入322、復位地址325、來自完成單元350的刷新地址323、或者來自完成單元350的打破地址324中選擇指令讀取地址。該讀取地址被提供給從存儲器中讀取合適指令的讀取單元310。該讀取單元310通常將試圖從L1指令高速緩存器中讀取指令,并且在該指令沒有出現(xiàn)在L1指令高速緩存器中時,該讀取單元310將企圖從L2存儲器高速緩存器中獲取該指令。如果該指令也不出現(xiàn)在L2存儲器高速緩存器中,則讀取單元310將從較慢的系統(tǒng)存儲器中獲取該指令。在讀取單元310讀取指令之后,讀取單元310將該指令提供給解碼單元320。解碼單元320負責確定特定指令做什么。解碼單元320查閱在處理器300內(nèi)存在的存儲器(未示出),例如只讀存儲器(ROM),其存儲了處理器理解的每個指令的微碼。用于指令的微碼對于該特殊指令將如何由處理器300的例如執(zhí)行單元340的執(zhí)行單元執(zhí)行提供了一步一步的指導。例如,如果裝載的指令是a+b,則微碼將告訴解碼單元320其需要兩個參數(shù)即a和b。然后,解碼單元320將請求讀取單元310獲取在接著的兩個存儲位置上出現(xiàn)的適合于a和b之值的數(shù)據(jù)。在解碼單元320已經(jīng)解碼和“翻譯”該指令、并且檢索了用于執(zhí)行該指令的所有所需的數(shù)據(jù)之后,該數(shù)據(jù)和該解碼的指令被傳遞到發(fā)行單元330。該指令和數(shù)據(jù)被置于發(fā)行和調(diào)度流水線的第一寄存器410中,并且除非減緩狀態(tài)被活鎖檢測控制邏輯420或者其它控制邏輯440檢測到,否則該指令和數(shù)據(jù)被允許用每個處理器周期通過流水線從一個寄存器移位到另一個,直到該指令和數(shù)據(jù)被發(fā)行到執(zhí)行單元340為止。為了簡便起見,盡管圖4示出了單個執(zhí)行單元340,但應當理解,大多數(shù)現(xiàn)代計算機具有超過一個的相同或者不同類型的執(zhí)行單元340。因此,執(zhí)行單元340意味著表示例如為整數(shù)、浮點等相同或者不同類型的一個或者多個執(zhí)行單元。所述活鎖檢測控制邏輯420監(jiān)控所述完成單元350以確定在指令沒有被成功地完成的情況下是否已經(jīng)發(fā)生了預定數(shù)目的處理器周期。就是說,基于由執(zhí)行單元340執(zhí)行的指令的處理,所述執(zhí)行單元340通知所述完成單元350是否已發(fā)生了例外、所述發(fā)行和調(diào)度流水線的刷新是否應當被執(zhí)行、或者指令是否將被提交,即是否成功地完成。然后,完成單元350可以將這種信息通信到發(fā)行單元330。所述活鎖檢測控制邏輯420可以包括計數(shù)器422或者其它邏輯,用于維持計算在由完成單元350提交的指令之間消逝了多少處理器周期。例如,每次在所述發(fā)行和調(diào)度流水線被刷新和指令被重新發(fā)行到發(fā)行單元330的發(fā)行和調(diào)度流水線時,可以遞增(increment)這個計數(shù)器422或者其它邏輯的計數(shù)。當計數(shù)器422或者其它邏輯到達預定數(shù)目的刷新閾值X而沒有因指令被提交而導致被重置時,所述活鎖檢測控制邏輯420就向所述慢模式控制邏輯430發(fā)出慢模式信號,該慢模式信號指示所述慢模式控制邏輯430應當轉換到處理器300的減慢控制的下一個狀態(tài)。例如,當計數(shù)器值達到計數(shù)閾值時,所述慢模式控制邏輯430中的計數(shù)器432可以被遞增,并且向與門450發(fā)出適當?shù)臏p緩信號。該減緩信號使通過發(fā)行和調(diào)度流水線,即寄存器410-414,的指令的流動減緩一個處理器周期。所述慢模式控制邏輯430在高達閾值數(shù)目的處理器周期(計數(shù)器)×N的隨后處理器周期內(nèi)持續(xù)發(fā)出減緩指令,其中N是要減緩的處理器周期的基本閾值數(shù)目。因此,例如,如果N是4,則在該慢模式信號被發(fā)出到所述慢模式控制邏輯430的第一時間,所述慢模式控制邏輯430將發(fā)出用于4個處理器周期的減緩信號并且隨后允許指令從發(fā)行單元330中發(fā)行,即允許該指令從寄存器移位到在發(fā)行和調(diào)度流水線中的寄存器410-414,直到一個指令從發(fā)行單元330中發(fā)行為止。下一個指令在能夠被發(fā)行之前不得不等待4個處理器周期。例如,要減緩的處理器周期的基本閾值數(shù)目N可以在硬件確認之后被編程到所述慢模式控制邏輯430中。這樣,所述發(fā)行和調(diào)度流水線被減慢,使得每隔N個數(shù)目的處理器周期,僅僅一個指令被允許從發(fā)行單元330發(fā)行。通過所述活鎖檢測控制邏輯420繼續(xù)監(jiān)控指令是否被提交以及在被提交的指令之間的刷新數(shù)目,這個處理可以重復。在發(fā)出慢模式信號之后,所述活鎖檢測控制邏輯420將其計數(shù)復位回到初始值并開始計數(shù)發(fā)行和調(diào)度流水線在提交指令之間的刷新數(shù)目。每次在所述活鎖檢測控制邏輯420中的計數(shù)器422達到預定刷新數(shù)目的閾值時,所述活鎖檢測控制邏輯420就給所述慢模式控制邏輯430發(fā)出慢模式信號。所述慢模式控制邏輯430中的計數(shù)器433被遞增,并且新的計數(shù)器值被用于使所述慢模式控制邏輯430將通過發(fā)行和調(diào)度流水線的指令的移動減緩(計數(shù)器)×N個處理器周期。以上述N即4個處理器周期為例,在所述活鎖檢測控制邏輯420檢測到活鎖狀態(tài)的第一時間,由寄存器410-414構成的發(fā)行和調(diào)度流水線中的指令被減緩4個處理器周期。此后,根據(jù)隨后活鎖檢測,這些指令被減緩倍數(shù)個4個處理器周期,例如為8、12、和16個處理器周期。一旦計數(shù)器432的值達到預定的嚴重活鎖狀態(tài)的閾值,所述慢模式控制邏輯430就使發(fā)行和調(diào)度流水線被置于連續(xù)的單步操作模式。該連續(xù)的單步操作模式類似于公知單步操作模式,在公知單步操作模式中,僅僅一個指令被允許發(fā)行,直到其成功地完成為止。一旦發(fā)行和調(diào)度流水線中的所有指令被發(fā)行,發(fā)行單元330才被允許返回到全速操作模式,在全速操作模式中,指令被允許流過發(fā)行和調(diào)度流水線直到再一次地檢測到活鎖狀態(tài)為止。類似地,在每個減慢階段即在慢模式信號發(fā)出之后的每次減慢中,如果在沒有看見沒有一個指令被提交的情況下的X次刷新的情況下,發(fā)行和調(diào)度流水線中的所有指令被排出,則發(fā)行單元330被允許返回到全速模式。圖5概括出當檢測到更嚴重的活鎖狀態(tài)時所述慢模式控制邏輯420所行進的各種減慢階段。應當注意,盡管示例性實施例使用了在被提交的指令之間的刷新數(shù)目的特殊倍數(shù)以及用來減緩發(fā)行和調(diào)度流水線中的指令的處理器周期數(shù)目的特殊倍數(shù),但本發(fā)明不局限于這種倍數(shù)。相反,在不脫離本發(fā)明的精神和范圍的情況下,可以使用用于在被提交的指令之間的刷新數(shù)目或者對于每一個階段要減緩的處理器周期數(shù)目的任何值。事實上,在一些示例性實施例中,這些值可以根本不是彼此的倍數(shù),并且可以被編程到所述活鎖檢測控制邏輯420和/或慢模式控制邏輯430中的特定值。圖5是表示根據(jù)一個示例性實施例的用于活鎖狀態(tài)檢測和減慢機制的操作的分階段方案的示例性示意圖。如圖5中所示,通常,處理器,即處理器的發(fā)行單元,以全速操作模式510操作。當檢測到第一活鎖狀態(tài)時,即在沒有一個指令提交的情況下存在刷新數(shù)目X時,該處理器將轉換到處理器減慢階段1520。在處理器減慢階段1520中,發(fā)行單元將每隔N個周期僅僅發(fā)行一個指令。如果在沒有看見在沒有一個指令被提交的情況下的X次刷新的狀態(tài)的情況下,發(fā)行單元排出了發(fā)行和調(diào)度流水線中的所有指令的話,則處理器返回到全速操作模式510。否則,處理器轉換到處理器減慢階段2530,在該階段,發(fā)行單元將每隔2N個周期發(fā)行一個指令。在處理器減慢階段2530中,如果在沒有看見在沒有一個指令被提交的情況下的X次刷新的狀態(tài)的情況下,發(fā)行單元排出了發(fā)行和調(diào)度流水線中的所有指令的話,則處理器返回到全速操作模式510。否則,處理器轉換到處理器減慢階段3540,在該階段中,發(fā)行單元將每隔4N個周期僅僅發(fā)行一個指令。如果在沒有看見在沒有一個指令被提交的情況下的X次刷新的狀態(tài)的情況下,發(fā)行單元排出了發(fā)行和調(diào)度流水線中的所有指令的話,則處理器返回到全速操作模式510。如果遇到了在沒有一個指令被提交的情況下出現(xiàn)X次刷新的狀態(tài),則處理器被確定為處于嚴重的活鎖狀態(tài),并且轉換到處理器減慢階段4550。在處理器減慢階段4550中,發(fā)行單元被強制進入到連續(xù)的單步操作模式,在該連續(xù)的單步操作模式中,僅僅一個指令被發(fā)行直到其完成為止。當發(fā)行單元排出了發(fā)行和調(diào)度流水線中的所有指令時,處理器隨后返回到全速操作模式510。作為示例性實施例的操作例子,再次考慮在上述本發(fā)明背景中討論的圖6A和6B中所示的情形(scenario)。假設這種情況在程序的執(zhí)行中經(jīng)常發(fā)生并且在發(fā)行和調(diào)度流水線中有12個指令。如果活鎖窗口僅僅是4個處理器周期,則在第三個move-to-spr(移動到spr)指令mtsprCR1在第二個move-to-spr(移動到spr)指令mtsprER7之后的4個周期內(nèi)被發(fā)行時,活鎖狀態(tài)將出現(xiàn)。如果每個指令完成要花費10個處理器周期,則當處理器從全速模式轉換到連續(xù)單步模式時,從發(fā)行和調(diào)度流水線中排出所有指令將大約花費120個周期。但是,根據(jù)這里說明的示例性實施例,如果在處理器減慢階段1520中N被設置為4,則排出所有指令可以花費少于60個處理器周期。因此,與立即轉換到連續(xù)的單步操作模式的公知機制相比較,本示例性實施例加倍了處理器的性能。當這個類型的活鎖狀態(tài)在程序中經(jīng)常發(fā)生時,本示例性實施例顯著地將活鎖狀態(tài)對處理器整體性能的沖擊最小化。圖7是概括根據(jù)一個示例性實施例的用于檢測活鎖狀態(tài)和減慢處理器流水線操作的示例性操作的流程圖。圖7中概括的操作可以在例如處理器的發(fā)行單元諸如上述圖3和4的發(fā)行單元330中執(zhí)行。因此,圖7中所示的各種操作可以在處理器的硬件中實現(xiàn)。處理器可以為單處理器系統(tǒng)或者多處理器系統(tǒng)。在一個示例性實施例中,處理器可以是微處理器或者芯片上系統(tǒng)的一部分。微處理器或者芯片上系統(tǒng)可以包括對相同或者不同指令集進行操作的多個處理器。例如,微處理器或者芯片上系統(tǒng)可以是異構型裝置(heterogeneousdevice),其中一些處理器使用第一指令集例如RISC指令集來操作,而同時其它處理器使用第二指令集例如向量指令集來操作。其中可以實現(xiàn)處理器的裝置的類型和配置不受到本發(fā)明的該說明或者精神和范圍的限制。如圖7中所示,操作以運行在全速操作模式的處理器并且這樣的發(fā)行單元開始(步驟710)。發(fā)行單元確定是否檢測到活鎖狀態(tài)(步驟720)。如果沒有,則操作返回到步驟710,并且處理器和發(fā)行單元繼續(xù)以全速運行。如果檢測到活鎖狀態(tài),例如如在圖4中所述活鎖檢測控制邏輯420所確定的那樣,則處理器和發(fā)行單元轉換到處理器減慢階段1,在該階段,每隔N個處理器周期才發(fā)行指令(步驟730)。如圖7中所示,活鎖狀態(tài)出現(xiàn)的確定可以基于例如活鎖檢測控制邏輯420檢測到在沒有提交一個指令的情況下已經(jīng)發(fā)生了X次的刷新。之后,發(fā)行單元確定是否再次檢測到活鎖狀態(tài)(步驟740)。如果沒有,則處理器和發(fā)行單元可以返回到全速操作模式(步驟710)。如果再次檢測到活鎖狀態(tài),則處理器和發(fā)行單元轉換到處理器減慢階段2,在該階段,每隔2N個處理器周期發(fā)行一個指令(步驟750)。如圖所示,活鎖狀態(tài)是否再次被檢測到的確定可以基于例如所述活鎖檢測控制邏輯420檢測到在沒有提交一個指令的情況下已經(jīng)發(fā)生了2X次的刷新。之后,發(fā)行單元再次確定是否檢測到活鎖狀態(tài)(步驟760)。如果沒有,則處理器和發(fā)行單元可以返回到全速操作模式(步驟710)。如果再次檢測到活鎖狀態(tài),則處理器和發(fā)行單元轉換到處理器減慢階段3,在該階段,每隔4N個處理器周期發(fā)行一個指令(步驟770)。如圖所示,活鎖狀態(tài)是否再次被檢測到的確定可以基于例如所述活鎖檢測控制邏輯420檢測到在沒有提交一個指令的情況下已經(jīng)發(fā)生了3X次的刷新。之后,發(fā)行單元確定是否再次檢測到活鎖狀態(tài)(步驟780)。如果沒有,則處理器和發(fā)行單元可以返回到全速操作模式(步驟710)。如果再次檢測到活鎖狀態(tài),則處理器和發(fā)行單元轉換到處理器減慢階段4,在該階段,發(fā)行單元進入到諸如在現(xiàn)有技術中普遍公知的連續(xù)的單步操作模式(步驟790)。如圖所示,活鎖狀態(tài)是否再次被檢測到的確定可以基于例如所述活鎖檢測控制邏輯420檢測到在沒有提交一個指令的情況下已經(jīng)發(fā)生了4X次的刷新。此后,通過如在本領域普遍公知的連續(xù)的單步操作模式,活鎖狀態(tài)將被打破。因此,處理器和發(fā)行單元被返回到全速操作模式(步驟710)。這個操作在處理器運作時繼續(xù),并且當處理器脫機時可以被終止。因此,通過在提供一種用于減慢處理器中指令發(fā)行的逐漸減慢機制,示例性實施例提供了一種用于擺脫處理器中的活鎖狀態(tài)的機制。活鎖檢測控制邏輯用于檢測活鎖狀態(tài)的發(fā)生,慢模式控制邏輯用于在減慢分階段方案中使得處理器的發(fā)行單元從一個減慢階段轉換到下一個。在所述減慢分階段方案的任何階段中,如果活鎖狀態(tài)不再被檢測到,則處理器和發(fā)行單元可以被轉換回到全速操作模式。這樣,通過不立即轉換到連續(xù)的單步操作模式,能夠獲得更好的處理器性能。上述處理器電路可以是集成電路芯片的設計的一部分。芯片設計可以在圖形計算機編程語言中創(chuàng)建,并且被存儲在計算機存儲媒體中(諸如盤、磁帶、物理硬驅(qū)動器、或者諸如在存儲訪問網(wǎng)絡中的虛擬硬驅(qū)動器)。如果設計者不制作芯片或者用于制作芯片的光刻掩模,則設計者通過物理手段(例如通過提供存儲該設計的存儲媒體的拷貝)或者電子方式(例如通過因特網(wǎng))將所得的設計直接或者間接地傳輸給這種實體(entity)。所存儲的設計然后可以被轉換成合適的格式(例如GDSII)用于光刻掩模的制作,其通常包括要被形成在晶片上的所述芯片設計的多個拷貝。光刻掩模被用于限定將要被刻蝕的或者否則要被處理的晶片(和/或者其上的各層)的區(qū)域。所得集成電路芯片可以以作為裸模的未加工晶片形式(即作為具有多個未封裝芯片的單個晶片)或者以封裝形式由制作者分發(fā)。在后者的情況下,芯片可以被安裝在單個芯片封裝中(諸如塑料載體,具有被附著到母板或其它更高級載體上的引線)或者在多芯片封裝中(諸如具有表面互相連接或者嵌置(buried)互相連接的任何一個或者兩者的陶瓷載體)。在任何情況下,該芯片然后可以作為(a)諸如母板的中間產(chǎn)品或者(b)最終產(chǎn)品的一部分與其它芯片、分立電路元件、和/或者其它信號處理裝置集成。最終產(chǎn)品可以是包括集成電路芯片的任何產(chǎn)品,范圍是從玩具和其它低檔應用到具有顯示器、鍵盤或其它輸入裝置以及中央處理器的高級計算機產(chǎn)品。而且,其中可以提供集成電路芯片的最終產(chǎn)品可以包括游戲機、游戲控制臺、手持計算裝置、個人數(shù)字助手、諸如無線電話等的通信裝置、膝上型計算裝置、臺面計算裝置、服務器計算裝置、或者任何其它計算裝置。重要的是注意盡管本發(fā)明已經(jīng)在完全功能數(shù)據(jù)處理系統(tǒng)的上下文中進行了說明,但是本領域普通技術人員將會理解,本發(fā)明的處理能夠以指令的計算機可讀媒體的形式和各種形式來分發(fā),并且本發(fā)明可相等地應用而不管實際用于實現(xiàn)該分發(fā)的信號承載媒體的特殊類型。計算機可讀媒體的例子包括諸如軟盤、硬盤驅(qū)動器、RAM、CD-ROM、DVD-ROM的可記錄類型媒體以及諸如數(shù)字和模擬通信鏈路、使用諸如例如無線電頻率和光波傳輸之傳輸形式的有線或者無線通信鏈路。計算機可讀媒體可以采用編碼格式的形式,其被解碼用于特殊的數(shù)據(jù)處理系統(tǒng)。本發(fā)明的說明是為了示例和描述的目的而展現(xiàn)的,它不是詳盡的或者以公開的形式來限定本發(fā)明。對于本領域技術人員來說,許多改進和改變將是顯然的。選擇和描述實施例,目的是更好解釋本發(fā)明的原理、實際應用以及當適合于預期特殊使用時對于具有各種改進的各種實施例,使得本領域其它的普通技術人員能夠理解本發(fā)明。權利要求1.一種在數(shù)據(jù)處理裝置中用于擺脫活鎖狀態(tài)的方法,包括檢測所述數(shù)據(jù)處理裝置中的活鎖狀態(tài);在持續(xù)檢測到所述活鎖狀態(tài)的同時,使得由數(shù)據(jù)處理裝置進行的指令的處理逐漸地減緩增加數(shù)目的處理器周期;以及響應于檢測到所述活鎖狀態(tài)已被打破,使得所述數(shù)據(jù)處理裝置恢復到全速操作模式。2.如權利要求1所述的方法,其中,所述使得由數(shù)據(jù)處理裝置進行的指令的處理逐漸地減緩包括根據(jù)分階段方案,響應于檢測到所述活鎖狀態(tài),將數(shù)據(jù)處理裝置設置到減速操作模式,其中,所述分階段方案具有多個階段,所述多個階段按照不同的處理周期數(shù)量來減慢指令的處理。3.如權利要求2所述的方法,其中,所述將數(shù)據(jù)處理裝置設置到減速操作模式包括將由數(shù)據(jù)處理裝置進行的指令的處理減慢到一第一操作減慢階段;確定所述活鎖狀態(tài)在減慢由數(shù)據(jù)處理裝置進行的指令的處理之后是否持續(xù);和如果所述活鎖狀態(tài)在將指令的處理減慢到第一操作減慢階段之后持續(xù),則將由數(shù)據(jù)處理裝置進行的指令的處理減慢到一第二操作減慢階段。4.如權利要求3所述的方法,其中,與第一操作減慢階段相比,第二操作減慢階段使得由數(shù)據(jù)處理裝置進行的指令的發(fā)行延遲更大數(shù)目的處理周期。5.如權利要求4所述的方法,其中,第二操作減慢階段使得由數(shù)據(jù)處理裝置進行的指令的發(fā)行延遲的處理周期數(shù)目是第一操作減慢階段使得由數(shù)據(jù)處理裝置進行的指令的發(fā)行延遲的處理周期數(shù)目的2倍。6.如權利要求3所述的方法,其中,與第一操作減慢階段相比,第二操作減慢階段與更嚴重的活鎖狀態(tài)相關聯(lián)。7.如權利要求1所述的方法,其中,所述檢測數(shù)據(jù)處理裝置中的活鎖狀態(tài)包括檢測在沒有完成指令的情況下特殊指令刷新的數(shù)目達到預定閾值以及在沒有完成指令的情況下指令重新發(fā)行的次數(shù)達到預定閾值中的至少一個。8.如權利要求2所述的方法,其中,所述分階段方案的最后階段將由數(shù)據(jù)處理裝置進行的指令的處理減慢到連續(xù)的單步操作模式,該連續(xù)的單步操作模式僅僅允許一個指令發(fā)行,而不允許其它指令發(fā)行,直到所述一個指令完成為止。9.如權利要求1所述的方法,其中,所述數(shù)據(jù)處理裝置是處理器,并且其中由處理器進行的指令的處理通過延遲處理器流水線中的指令的發(fā)行而被逐漸地減緩。10.如權利要求9所述的方法,其中,該方法在處理器的發(fā)行單元中實施。11.如權利要求10所述的方法,其中,由處理器進行的指令的處理通過減緩通過所述發(fā)行單元的發(fā)行和調(diào)度流水線的指令的移動而被逐漸地減緩。12.如權利要求4所述的方法,其中,在數(shù)據(jù)處理裝置的硬件制造之后,用于檢測活鎖狀態(tài)的準則被編程到該數(shù)據(jù)處理裝置中,并且其中,在數(shù)據(jù)處理裝置的硬件制造之后,針對所述分階段方案的每個階段使得指令的發(fā)行延遲的處理周期的基本數(shù)目被編程到數(shù)據(jù)處理裝置中。13.一種用于擺脫活鎖狀態(tài)的系統(tǒng),包括發(fā)行單元;和耦接到所述發(fā)行單元的處理器流水線,其中,所述發(fā)行單元檢測處理器流水線中的活鎖狀態(tài);在持續(xù)檢測到所述活鎖狀態(tài)的同時,使得由處理器流水線進行的指令的處理逐漸地減緩增加數(shù)目的處理器周期;以及響應于檢測到所述活鎖狀態(tài)已被打破,使得所述處理器流水線恢復到全速操作模式。14.如權利要求13所述的系統(tǒng),其中,所述發(fā)行單元通過下述步驟逐漸地減緩由處理器流水線進行的指令的處理根據(jù)分階段方案,響應于檢測到所述活鎖狀態(tài),將處理器流水線設置到減速操作模式,其中,所述分階段方案具有多個階段,所述多個階段按照不同的處理周期數(shù)量來減慢指令的處理。15.如權利要求14所述的系統(tǒng),其中,所述發(fā)行單元通過下述步驟將處理器流水線設置到減速操作模式將由處理器流水線進行的指令的處理減慢到一第一操作減慢階段;確定所述活鎖狀態(tài)在減慢由處理器流水線進行的指令的處理之后是否持續(xù);和如果所述活鎖狀態(tài)在將指令的處理減慢到第一操作減慢階段之后持續(xù),則將由處理器流水線進行的指令的處理減慢到一第二操作減慢階段。16.如權利要求15所述的系統(tǒng),其中,與第一操作減慢階段相比,第二操作減慢階段使得由處理器流水線進行的指令的發(fā)行延遲更大數(shù)目的處理周期。17.如權利要求16所述的系統(tǒng),其中,第二操作減慢階段使得由處理器流水線進行的指令的發(fā)行延遲的處理周期數(shù)目是第一操作減慢階段使得由處理器流水線進行的指令的發(fā)行延遲的處理周期數(shù)目的2倍。18.如權利要求15所述的系統(tǒng),其中,與第一操作減慢階段相比,第二操作減慢階段與更嚴重的活鎖狀態(tài)相關聯(lián)。19.如權利要求13所述的系統(tǒng),其中,所述發(fā)行單元通過下述步驟檢測處理器流水線中的活鎖狀態(tài)檢測在沒有完成指令的情況下特殊指令刷新的數(shù)目達到預定閾值以及在沒有完成指令的情況下指令重新發(fā)行的次數(shù)達到預定閾值中的至少一個。20.如權利要求14所述的系統(tǒng),其中,所述分階段方案的最后階段將由處理器流水線進行的指令的處理減慢到連續(xù)的單步操作模式,該連續(xù)的單步操作模式僅僅允許一個指令發(fā)行,而不允許其它指令發(fā)行,直到所述一個指令完成為止。21.如權利要求13所述的系統(tǒng),其中,所述發(fā)行單元通過減緩通過所述發(fā)行單元的發(fā)行和調(diào)度流水線的指令的移動而逐漸地減緩由處理器流水線進行的指令的處理。22.如權利要求16所述的系統(tǒng),其中,在數(shù)據(jù)處理裝置的硬件制造之后,用于檢測活鎖狀態(tài)的準則被編程到該數(shù)據(jù)處理裝置中,并且其中,在處理器流水線的硬件制造之后,針對所述分階段方案的每個階段使得指令的發(fā)行延遲的處理周期的基本數(shù)目被編程到數(shù)據(jù)處理裝置中。全文摘要本發(fā)明提供了一種用于將處理器置于逐漸減慢的操作模式的系統(tǒng)和方法。所述逐漸減慢的操作模式包括處理器中發(fā)行單元的多個階段的減慢操作,其中指令的發(fā)行根據(jù)分階段方案被減慢。處理器的逐漸減慢使得處理器能擺脫活鎖狀態(tài)。而且,由于減慢是漸漸的,因此處理器可以靈活地避免各種程度的活鎖狀態(tài)。通過對不嚴重的活鎖狀態(tài)采取小的性能影響以及在活鎖狀態(tài)很嚴重時僅僅增加處理器性能影響,示例性實施例的機制基于活鎖狀態(tài)的嚴重性來影響整體處理器性能。文檔編號G06F9/46GK101055531SQ20071009678公開日2007年10月17日申請日期2007年4月12日優(yōu)先權日2006年4月14日發(fā)明者羅納德·霍爾,克里斯托弗·M·阿伯納西,庫爾特·A·費斯特,小阿爾伯特·J·范諾斯特蘭申請人:國際商業(yè)機器公司