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