亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

線程活鎖單元的制作方法

文檔序號(hào):6656880閱讀:163來源:國(guó)知局
專利名稱:線程活鎖單元的制作方法
技術(shù)領(lǐng)域
本發(fā)明的公開內(nèi)容總體涉及信息處理系統(tǒng),并且尤其涉及檢測(cè)和校正多線程處理系統(tǒng)內(nèi)的多個(gè)并發(fā)線程之間的活鎖(livelock)。
背景技術(shù)
為了改進(jìn)信息處理系統(tǒng)(比如那些包括微處理器的信息處理系統(tǒng))的性能,已經(jīng)采用了硬件和軟件技術(shù)。在硬件側(cè),用于改進(jìn)信息處理器系統(tǒng)的性能的微處理器設(shè)計(jì)方法已經(jīng)包括提高時(shí)鐘速度、流水線式處理、分支預(yù)測(cè)、超標(biāo)量執(zhí)行、無序執(zhí)行以及高速緩存。許多此類方法已經(jīng)導(dǎo)致晶體管數(shù)量的增加,并且在某些事例中,晶體管數(shù)量的增加速率已經(jīng)大于性能改進(jìn)的速率。
除了嘗試只通過附加的晶體管來改進(jìn)性能之外,其他的性能增強(qiáng)涉及軟件技術(shù)。已經(jīng)被采用來改進(jìn)處理器性能的一種軟件方法被稱作“多線程”。在軟件多線程中,可以把一個(gè)指令流劃分成多個(gè)指令流,所述多個(gè)指令流可以被并行執(zhí)行?;蛘?,可以并行執(zhí)行多個(gè)獨(dú)立的軟件流。
在一種被稱作時(shí)間片多線程或者時(shí)間復(fù)用(“TMUX”)多線程的方法中,單個(gè)處理器在預(yù)定的時(shí)間周期之后在各線程之間進(jìn)行切換。在另一種方法中,單個(gè)處理器在出現(xiàn)觸發(fā)事件之后在各線程之間進(jìn)行切換,所述觸發(fā)事件例如是長(zhǎng)等待時(shí)間高速緩存器錯(cuò)失(cachemiss)。在被稱作基于事件切換的多線程(“SoEMT”)的后一種方法中,在給定時(shí)間最多只有一個(gè)線程激活。
在硬件中越來越多地支持多線程。例如,在一種方法中,在例如芯片多處理器(“CMP”)系統(tǒng)的多處理器系統(tǒng)中的各處理器可以并發(fā)地對(duì)多個(gè)軟件線程當(dāng)中的一個(gè)進(jìn)行操作。在被稱作同時(shí)多線程(“SMT”)的另一種方法中,使得單個(gè)物理處理器對(duì)于操作系統(tǒng)和用戶程序表現(xiàn)為多個(gè)邏輯處理器。對(duì)于SMT,在不需要切換的情況下,多個(gè)軟件線程可以單個(gè)處理器上同時(shí)激活并且執(zhí)行。也就是說,每一個(gè)邏輯處理器維持一整套所述體系結(jié)構(gòu)狀態(tài),但是所述物理處理器的許多其他資源被共享,比如高速緩存器、執(zhí)行單元、分支預(yù)測(cè)器、控制邏輯以及總線。從而對(duì)于SMT,來自多個(gè)軟件線程的指令在每個(gè)邏輯處理器上并發(fā)地執(zhí)行。
對(duì)于支持軟件線程的并發(fā)執(zhí)行的系統(tǒng)(比如SMT和/或CMP系統(tǒng)),存在發(fā)生以下情況的可能性在兩個(gè)或多個(gè)并發(fā)激活線程之間對(duì)共享資源的爭(zhēng)用可能會(huì)阻止至少其中一個(gè)線程繼續(xù)前進(jìn)。由于與另一個(gè)激活線程的資源爭(zhēng)用而導(dǎo)致一個(gè)線程不能繼續(xù)前進(jìn)的情況可以被稱作“活鎖”。
附圖簡(jiǎn)述可以參照附圖來理解本發(fā)明的實(shí)施例,其中相同的附圖標(biāo)記指代相同的元件。這些附圖不是限制性的,而是用于說明其中的設(shè)備、系統(tǒng)和方法的所選實(shí)施例,所述設(shè)備、系統(tǒng)和方法用于檢測(cè)和校正多線程處理系統(tǒng)內(nèi)的多個(gè)并發(fā)線程之間的活鎖。


圖1是一個(gè)處理器的至少一個(gè)實(shí)施例的方框圖,該處理器包括多個(gè)線程活鎖單元,其中的每一個(gè)用來確定對(duì)應(yīng)于多個(gè)邏輯處理器的其中之一的線程前進(jìn)。
圖2的方框圖示出能夠執(zhí)行所公開的技術(shù)的多線程系統(tǒng)的至少一個(gè)實(shí)施例。
圖3的方框圖示出一個(gè)處理器的至少一個(gè)實(shí)施例的前端和執(zhí)行內(nèi)核,該處理器包括對(duì)應(yīng)于多個(gè)邏輯處理器當(dāng)中的每一個(gè)的線程活鎖單元。
圖4的方框圖示出一個(gè)處理系統(tǒng)的至少一個(gè)實(shí)施例的存儲(chǔ)器分層結(jié)構(gòu),該處理系統(tǒng)包括對(duì)應(yīng)于多個(gè)邏輯處理器當(dāng)中的每一個(gè)的線程活鎖單元。
圖5和6的狀態(tài)圖示出用于檢測(cè)和減輕多個(gè)并發(fā)線程之間的活鎖的方法的至少一個(gè)實(shí)施例。
圖7的方框圖示出進(jìn)入圖5和6所示的方法的空閑狀態(tài)的復(fù)位條件。
圖8的流程圖示出用于在多個(gè)處理器之間仲裁活鎖優(yōu)先權(quán)請(qǐng)求的方法的至少一個(gè)實(shí)施例。
圖9的方框圖示出在各線程活鎖單元和一個(gè)存儲(chǔ)器活鎖單元之間共享的活鎖破壞器邏輯的至少一個(gè)實(shí)施例。
詳細(xì)描述在下面的描述中闡述了多個(gè)具體細(xì)節(jié)以便提供對(duì)本發(fā)明的更為全面的理解,所述細(xì)節(jié)例如是處理器類型、多線程環(huán)境以及微體系結(jié)構(gòu)。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以在無需這種具體細(xì)節(jié)的情況下實(shí)踐本發(fā)明。此外,沒有詳細(xì)示出某些公知的結(jié)構(gòu)、電路等等,以避免模糊本發(fā)明。
這里公開的方法、設(shè)備和系統(tǒng)可以檢測(cè)并且避免多線程處理系統(tǒng)中的活鎖。對(duì)于至少一個(gè)所公開的實(shí)施例,線程活鎖單元包括用于跟蹤邏輯處理器的軟件線程的指令的退休(retirement)的機(jī)制。跟蹤退休只是跟蹤線程是否在前進(jìn)的一種方法。雖然這里討論的實(shí)施例專注于指令退休以作為前進(jìn)指標(biāo),但是本領(lǐng)域技術(shù)人員將意識(shí)到,其他實(shí)施例可以利用不同的或者附加的指標(biāo)來確定線程是否在前進(jìn)。例如,可以評(píng)估線程進(jìn)展信號(hào)或寄存器,可以跟蹤指令指針的前進(jìn),或者可以評(píng)估任何其他指示進(jìn)展的信號(hào)或指標(biāo)。
圖1示出了用來執(zhí)行多線程的處理器104和仲裁器180的至少一個(gè)實(shí)施例。處理器104和仲裁器180可以駐留在單個(gè)芯片封裝103內(nèi)。處理器104可以包括多個(gè)邏輯處理器150a-150n,以便支持并發(fā)多線程。對(duì)于至少一個(gè)實(shí)施例,處理器104利用其多個(gè)邏輯處理器150a-150n來提供SMT處理能力。對(duì)于這種實(shí)施例,每個(gè)邏輯處理器150a-150n具有其自身的指令定序器(例如參見圖3的340)。對(duì)于這種實(shí)施例,邏輯處理器150維持其自身的體系結(jié)構(gòu)狀態(tài)版本,但是可以在所有的并發(fā)SMT軟件線程之間共享單個(gè)處理器內(nèi)核104的執(zhí)行資源。
對(duì)于SMT,多個(gè)軟件線程可以并發(fā)地運(yùn)行,其中的每一個(gè)軟件線程在多個(gè)邏輯處理器150的其中之一上運(yùn)行。邏輯處理器150a-150n在這里可以被互換地稱作“物理線程”。除非另行明確指明,在沒有“物理”或“軟件”的前綴時(shí),這里使用的術(shù)語(yǔ)“線程”總體指代激活邏輯處理器以及該邏輯處理器正在執(zhí)行的相關(guān)軟件指令流。
圖1示出了可以與每一個(gè)邏輯處理器150a-150n相關(guān)的線程活鎖單元(“TLU”)165a-165n。因此,對(duì)于至少一個(gè)實(shí)施例,對(duì)于處理器104的每一個(gè)物理線程150a-150n,在每線程的基礎(chǔ)上復(fù)制TLU165。在這里,對(duì)應(yīng)于特定物理線程150的TLU 165可以被簡(jiǎn)單地稱作該物理線程的“TLU”。
圖1示出處理器104還可以包括存儲(chǔ)器活鎖單元(“MLU”)166。存儲(chǔ)器活鎖單元166可以執(zhí)行以下操作1)基于存儲(chǔ)器活鎖指標(biāo)檢測(cè)來自單個(gè)處理器104的各并發(fā)線程的各存儲(chǔ)器操作之間的活鎖,以及2)采取動(dòng)作以解決這種活鎖。
下面結(jié)合圖5到7更詳細(xì)地討論TLU 165的操作。一般來說,線程活鎖單元165可以執(zhí)行以下操作1)基于特定的線程活鎖指標(biāo)確定對(duì)應(yīng)于其相關(guān)邏輯處理器的軟件線程無法前進(jìn)(“被活鎖”),以及2)采取動(dòng)作以解決這種活鎖。對(duì)于至少一個(gè)實(shí)施例,線程活鎖單元165通過對(duì)自從其邏輯處理器已經(jīng)退休了一個(gè)指令之后的周期數(shù)進(jìn)行計(jì)數(shù)來確定沒有前進(jìn),或者已經(jīng)以其他方式證明了可能的前進(jìn)。線程活鎖單元165所能檢測(cè)的其中一個(gè)特定狀況被稱作“指令饑餓”。指令饑餓是這樣一個(gè)狀況,其中第一線程可能阻斷或者過度延遲另一個(gè)線程的指令獲取。結(jié)果,我們稱該另一個(gè)線程“指令饑餓”或者I饑餓。正在經(jīng)歷指令饑餓的線程正在經(jīng)歷可用于執(zhí)行的指令的缺乏,即該線程由于沒有用來退休的指令而無法前進(jìn)。
當(dāng)線程活鎖單元165采取動(dòng)作以嘗試解決活鎖時(shí),該線程活鎖單元165在這里被稱為“激活”。線程活鎖單元165可以變?yōu)椤凹せ睢币员銏?zhí)行幾個(gè)活鎖破壞器動(dòng)作當(dāng)中的任何一個(gè),進(jìn)行所述活鎖破壞器動(dòng)作以便嘗試刺激與該TLU 165相關(guān)的線程的前進(jìn)。例如,響應(yīng)于其相關(guān)邏輯處理器150不能前進(jìn),第一邏輯處理器150的TLU 165可以采取動(dòng)作以便請(qǐng)求停滯一個(gè)或多個(gè)其他邏輯處理器150,或者請(qǐng)求對(duì)一個(gè)或多個(gè)其他邏輯處理器150的微體系結(jié)構(gòu)狀態(tài)進(jìn)行復(fù)位(這里有時(shí)被稱作“核爆(nuke)”)。此外,例如激活的TLU 165可以調(diào)用活鎖破壞器(例如參見下面結(jié)合圖9對(duì)共享活鎖破壞器950的討論),以便采取動(dòng)作來減輕指令饑餓。此外,如果檢測(cè)到長(zhǎng)等待時(shí)間高速緩存器錯(cuò)失,激活的TLU 165可以從仲裁器180請(qǐng)求優(yōu)先權(quán)。下面結(jié)合圖5-7更詳細(xì)地討論采取這種行動(dòng)的某些實(shí)施例。
因此,根據(jù)一個(gè)實(shí)施例,各TLU 165a-165n連同仲裁器180在處理器104的各邏輯處理器150a-150n和MLU 166之間強(qiáng)加優(yōu)先權(quán),以便在SMT軟件線程的執(zhí)行期間檢測(cè)并減輕活鎖狀況。此外,各TLU165a-165n自身可以在邏輯處理器150a-150n之間強(qiáng)加優(yōu)先權(quán),以便減輕線程活鎖。然而,在各種不同實(shí)施例中,這些特征當(dāng)中的一部分或全部可以存在也可以不存在。
圖2的方框圖示出多內(nèi)核多線程計(jì)算系統(tǒng)200的至少一個(gè)實(shí)施例,該系統(tǒng)200能夠執(zhí)行所公開的技術(shù),以便檢測(cè)并減輕多個(gè)并發(fā)線程之間的活鎖。圖1和2中的相同元件具有相同的附圖標(biāo)記。
圖2示出計(jì)算系統(tǒng)200包括至少一個(gè)處理器內(nèi)核104a和存儲(chǔ)器202。存儲(chǔ)器202可以存儲(chǔ)用于控制處理器104a-104n的操作的數(shù)據(jù)240和指令241。對(duì)于至少一個(gè)實(shí)施例,處理器104a可以是駐留在單個(gè)芯片封裝103內(nèi)的多個(gè)處理器內(nèi)核104a-104n當(dāng)中的一個(gè)。包括104n的附加的處理器是可選的。在圖2中用橢圓和虛線表示附加處理器的可選特性。
圖2示出除了處理內(nèi)核104a-104n之外,附加邏輯280可以駐留在芯片封裝103上。這種附加邏輯280在這里有時(shí)被稱作“非內(nèi)核(uncore)”。附加邏輯280可以包括高速緩存器251以及仲裁和控制邏輯252當(dāng)中的一個(gè)或多個(gè)。高速緩存器251可以是在處理器104a-104n之間共享的最后一級(jí)共享的統(tǒng)一數(shù)據(jù)和指令高速緩存器。仲裁和控制邏輯252可以包括點(diǎn)對(duì)點(diǎn)通信控制器、全局通信隊(duì)列和/或仲裁邏輯180(見圖1)。
附加邏輯280還可以可選地包括集成的存儲(chǔ)器控制器253。集成存儲(chǔ)器控制器253可以提供到芯片外存儲(chǔ)器202的接口。對(duì)于這種實(shí)施例,芯片組255主要支持圖形相關(guān)的功能。芯片組255還可以提供與一個(gè)或多個(gè)輸入/輸出(I/O)設(shè)備290的連接。對(duì)于至少一個(gè)實(shí)施例,芯片組255可以包括一個(gè)或多個(gè)芯片組設(shè)備,其中的每個(gè)芯片組設(shè)備提供單獨(dú)的接口功能。例如,其中一個(gè)芯片組設(shè)備可以支持圖形功能,而另一個(gè)芯片組設(shè)備可以支持I/O連接和/或與固件集線器(未示出)的接口。
對(duì)于在芯片封裝103內(nèi)不包括集成存儲(chǔ)器控制器253的實(shí)施例,芯片組255可以提供到芯片外存儲(chǔ)器202的接口。對(duì)于這種實(shí)施例,芯片組255除了存儲(chǔ)器控制功能之外還可以提供上面描述的圖形、I/O和/或固件功能。
雖然這里討論的系統(tǒng)200的實(shí)施例具有作為仲裁和控制邏輯252的一部分的點(diǎn)對(duì)點(diǎn)通信控制器,但是這種控制器并不是對(duì)于所有實(shí)施例都需要的。實(shí)際上,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,這里討論的活鎖檢測(cè)和校正機(jī)制的實(shí)施例可以在一個(gè)采用多分支(multi-drop)總線或其他通信拓?fù)涞南到y(tǒng)中執(zhí)行。
如圖1所示的那樣,圖2示出系統(tǒng)200的一個(gè)或多個(gè)處理器內(nèi)核104a-104n的至少一個(gè)實(shí)施例可以是一個(gè)多線程內(nèi)核,該多線程內(nèi)核包括用于每個(gè)邏輯處理器150a-150n的TLU 165并且還包括存儲(chǔ)器活鎖單元166。
對(duì)于包括多個(gè)處理器內(nèi)核104a-104n的處理系統(tǒng)200的一個(gè)實(shí)施例,如果對(duì)應(yīng)于處理器內(nèi)核104a-104n上的其中一個(gè)物理處理器150a-150n的TLU已經(jīng)采取了校正動(dòng)作但是其相關(guān)物理線程150仍然不能在其相關(guān)軟件線程的指令執(zhí)行過程中前進(jìn),則該TLU可以向仲裁邏輯180發(fā)信號(hào)。在這種情況下,可能是另一個(gè)處理器內(nèi)核104的動(dòng)作正在干擾第一處理器內(nèi)核104a的前進(jìn)的能力。正如下面將詳細(xì)解釋的那樣,仲裁邏輯180可以向發(fā)出請(qǐng)求的內(nèi)核104授予優(yōu)先權(quán),以及/或者采取動(dòng)作來對(duì)其他內(nèi)核進(jìn)行“核爆”。
相應(yīng)地,每個(gè)處理器內(nèi)核104的TLU 165a-165n連同每個(gè)內(nèi)核的MLU 166以及仲裁器180可以一起形成一個(gè)協(xié)調(diào)活鎖縮減器。該活鎖縮減器因此可以包括對(duì)應(yīng)于每個(gè)內(nèi)核104的活鎖電路,其中該活鎖電路可以包括對(duì)應(yīng)于該內(nèi)核的TLU 165a-165n和MLU 166。正如下面將進(jìn)一步詳細(xì)描述的那樣,該活鎖縮減器可以從第一處理器內(nèi)核104a接收關(guān)于一個(gè)線程的線程進(jìn)展信息,并且可以響應(yīng)于來自第一處理器內(nèi)核104a的關(guān)于第一線程的該線程進(jìn)展信息來調(diào)節(jié)第二處理器內(nèi)核104n的線程的行為。
正如下面將進(jìn)一步詳細(xì)解釋的那樣,處理器104的至少一個(gè)實(shí)施例可以被設(shè)計(jì)成響應(yīng)于由TLU 165檢測(cè)到物理線程150不能在其當(dāng)前指令流中前進(jìn)而調(diào)用MLU 166的動(dòng)作邏輯。例如,如果TLU 165采取動(dòng)作以減輕指令側(cè)(I側(cè))饑餓,則可以調(diào)用MLU 166。(參見下面對(duì)圖6的狀態(tài)604的討論)。
圖3的方框圖示出處理器104的至少一個(gè)實(shí)施例的其他細(xì)節(jié),該處理器104能夠執(zhí)行所公開的技術(shù),以便檢測(cè)并減輕多個(gè)并發(fā)線程之間的活鎖狀況。處理器104可以包括前端320,該前端預(yù)取可能被執(zhí)行的指令。
對(duì)于至少一個(gè)實(shí)施例,前端320包括獲取/解碼單元322,其包括對(duì)應(yīng)于一個(gè)或多個(gè)邏輯處理器150a-150n當(dāng)中的每一個(gè)的邏輯上獨(dú)立的定序器340a-340n。該獲取解碼單元322可以從指令高速緩存器(例如參見圖4中的I高速緩存器444)獲取適當(dāng)?shù)闹噶?。該獲取/解碼單元322可以包括解碼邏輯,該解碼邏輯把所述指令解碼成最終格式或中間格式。
因此,所述物理獲取/解碼單元322包括多個(gè)邏輯上獨(dú)立的定序器340a-340n,其中的每一個(gè)對(duì)應(yīng)于一個(gè)物理線程150。對(duì)應(yīng)于物理線程150的定序器140確定將要由物理線程150執(zhí)行的相關(guān)軟件指令流(這里也被稱作“軟件線程”)的下一個(gè)指令。定序器104a-104n可以利用來自分支預(yù)測(cè)器(見圖4的432)的信息,以便確定接下來將執(zhí)行哪一個(gè)指令。
圖3示出處理器104的至少一個(gè)實(shí)施例包括執(zhí)行內(nèi)核330,該執(zhí)行內(nèi)核準(zhǔn)備用于執(zhí)行的指令、執(zhí)行所述指令并且退休執(zhí)行過的指令。執(zhí)行內(nèi)核330可以包括無序邏輯以便調(diào)度用于無序執(zhí)行的指令。執(zhí)行內(nèi)核330可以包括一個(gè)或多個(gè)資源362,當(dāng)所述指令流過執(zhí)行流水線并且被調(diào)度來執(zhí)行時(shí),該執(zhí)行內(nèi)核利用所述資源來平滑所述指令流并且對(duì)其進(jìn)行重新排序。這些資源362可以包括以下各項(xiàng)當(dāng)中的一項(xiàng)或多項(xiàng)用來維持未調(diào)度的指令的指令隊(duì)列,存儲(chǔ)器排序緩沖器,用來維持對(duì)應(yīng)于未完成的負(fù)載指令的條目的負(fù)載請(qǐng)求緩沖器,用來維持對(duì)應(yīng)于未完成的存儲(chǔ)指令的存儲(chǔ)請(qǐng)求緩沖器,以及MLU(見圖1的166)等等。
執(zhí)行內(nèi)核330可以包括退休邏輯,其把按照無序方式執(zhí)行過的指令重新排序回到原始的程序順序。這種退休邏輯可以包括至少一個(gè)退休隊(duì)列364來維持對(duì)應(yīng)于所述執(zhí)行流水線中的指令的信息,直到所述指令被退休為止。對(duì)于至少一個(gè)實(shí)施例,可以在各邏輯處理器150a-150n之間分割該退休隊(duì)列364,從而把該退休隊(duì)列的一部分分配給每個(gè)邏輯處理器150a-150n?;蛘?,可以對(duì)于每個(gè)邏輯處理器150a-150n利用單獨(dú)的退休隊(duì)列364。
所述退休邏輯可以從各執(zhí)行單元360接收?qǐng)?zhí)行過的指令的完成狀態(tài),并且可以處理所述結(jié)果,從而根據(jù)所述程序順序來提交(或退休)適當(dāng)?shù)捏w系結(jié)構(gòu)狀態(tài)。該退休邏輯還可以包括線程活鎖單元165a-165n。對(duì)于至少一個(gè)實(shí)施例,處理器104包括對(duì)應(yīng)于每個(gè)邏輯處理器150a-150n的TLU 165a-165n。
當(dāng)然,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,執(zhí)行內(nèi)核330可以按照程序順序來處理指令,并且不必提供無序處理。在這種情況下,退休隊(duì)列364不是重新排序緩沖器,而僅僅是按照程序順序維持指令直到所述指令退休為止的緩沖器。類似地,對(duì)應(yīng)于這種有序處理器的執(zhí)行資源362不包括其功能是對(duì)指令進(jìn)行重新排序和跟蹤以用于無序處理的結(jié)構(gòu)。
圖4的方框圖示出多線程無序處理系統(tǒng)400的至少一個(gè)實(shí)施例,該系統(tǒng)能夠?qū)嵺`所公開的技術(shù)。圖4以及圖1、2和/或3的相同元件具有相同的附圖標(biāo)記。圖4示出所述處理系統(tǒng)可以包括存儲(chǔ)器子系統(tǒng)490、處理器404和存儲(chǔ)器控制器453。
圖4示出處理器404可以包括沿著上面結(jié)合圖3描述的前端320的線的前端420。前端420提供指令信息給執(zhí)行內(nèi)核430。對(duì)于至少一個(gè)實(shí)施例,前端420可以按照程序順序提供該指令信息給執(zhí)行內(nèi)核430。
前端420可以包括獲取/解碼單元322,其具有多個(gè)獨(dú)立的邏輯定序器340a-340n,其中的每一個(gè)對(duì)應(yīng)于多個(gè)邏輯處理器150a-150n當(dāng)中的每一個(gè)。對(duì)于至少一個(gè)實(shí)施例,前端420預(yù)取有可能被執(zhí)行的指令。分支預(yù)測(cè)單元432可以提供分支預(yù)測(cè)信息,以便幫助前端420確定有可能執(zhí)行哪些指令。
執(zhí)行內(nèi)核430的至少一個(gè)實(shí)施例準(zhǔn)備指令以用于無序執(zhí)行、執(zhí)行所述指令并且退休執(zhí)行過的指令。執(zhí)行內(nèi)核430可以包括TLU 165。對(duì)應(yīng)于處理器404的執(zhí)行資源462可以包括MLU 166、指定隊(duì)列、負(fù)載請(qǐng)求緩沖器以及存儲(chǔ)請(qǐng)求緩沖器。
MLU 166被設(shè)計(jì)成減輕與下列設(shè)計(jì)特征相關(guān)的活鎖邏輯處理器150a-150n可以共享存儲(chǔ)器系統(tǒng)490的資源。相應(yīng)地,來自一個(gè)邏輯處理器150的較早的(按照程序順序)存儲(chǔ)器指令可能被來自另一個(gè)邏輯處理器150的較近的存儲(chǔ)器指令所阻斷。MEU 166被設(shè)計(jì)成檢測(cè)并校正這種情況。該MEU可以停滯一個(gè)邏輯處理器,從而使得另一個(gè)邏輯處理器可以完成一個(gè)或多個(gè)存儲(chǔ)器操作。
執(zhí)行內(nèi)核430可以包括退休邏輯,其在退休隊(duì)列464(稱作重新排序緩沖器“ROB”)中把按照無序方式執(zhí)行過的指令重新排序回到原始的程序順序。該退休邏輯從各執(zhí)行單元360接收?qǐng)?zhí)行過的指令的完成狀態(tài)。執(zhí)行內(nèi)核430可以包括多于一個(gè)重新排序緩沖器464。也就是說,單個(gè)已分割的重新排序緩沖器464的一部分可以維持對(duì)應(yīng)于所有邏輯處理器150a-150n的未退休的指令信息。或者,可以對(duì)于每個(gè)邏輯處理器150維持單獨(dú)的重新排序緩沖器464。
執(zhí)行內(nèi)核430還可以向處理器404的前端420處的分支預(yù)測(cè)器432報(bào)告分支歷史信息,以便告知最后已知的良好分支歷史信息。
這里使用的術(shù)語(yǔ)“指令信息”指的是可以由執(zhí)行內(nèi)核430理解并執(zhí)行的最終格式下的基本工作單位。指令信息可以被存儲(chǔ)在高速緩存器425中。高速緩存器425可以被實(shí)現(xiàn)為執(zhí)行指令高速緩存器或者執(zhí)行蹤跡高速緩存器。對(duì)于利用執(zhí)行指令高速緩存器的實(shí)施例,“指令信息”包括已經(jīng)從指令高速緩存器444獲取的指令。在這種所獲取的指令被存儲(chǔ)在執(zhí)行指令高速緩存器中之前,它們可以(也可以不)被解碼成微操作。對(duì)于利用蹤跡高速緩存器的實(shí)施例,術(shù)語(yǔ)“指令信息”可以包括已經(jīng)從宏指令解碼的微操作的蹤跡。對(duì)于既不利用執(zhí)行指令高速緩存器也不利用蹤跡高速緩存器的實(shí)施例,“指令信息”還可以包括對(duì)應(yīng)于可以被存儲(chǔ)在指令高速緩存器(例如I高速緩存器444)中的指令的原始字節(jié)。
處理系統(tǒng)400包括存儲(chǔ)器子系統(tǒng)490,其可以包括一個(gè)或多個(gè)高速緩存器442、444以及存儲(chǔ)器202。雖然在圖4中沒有示出,但是本領(lǐng)域技術(shù)人員可以意識(shí)到,高速緩存器442、444的其中之一或二者的全部或部分可以被物理地實(shí)現(xiàn)為處理器404本地的管芯上高速緩存器。存儲(chǔ)器子系統(tǒng)490可以被實(shí)現(xiàn)為存儲(chǔ)器分層結(jié)構(gòu),并且還可以包括互連453以便從存儲(chǔ)器202向該分層結(jié)構(gòu)的各層傳輸信息,比如數(shù)據(jù)240和/或指令241。本領(lǐng)域技術(shù)人員將意識(shí)到,對(duì)于存儲(chǔ)器分層結(jié)構(gòu)可以采用多種配置,其中包括非包含性的分層結(jié)構(gòu)配置。
本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,雖然在圖4中只示出了無序處理系統(tǒng)400,但是這里討論的實(shí)施例同樣適用于有序處理系統(tǒng)。這種有序處理系統(tǒng)典型地不包括ROB 464。然而,這種有序處理系統(tǒng)仍然可以包括退休隊(duì)列(見圖3的364),以便跟蹤未退休的指令。
圖5、6和7一起表示一個(gè)狀態(tài)圖,該狀態(tài)圖示出用于確定在多個(gè)并發(fā)線程之間存在活鎖狀況并且用于采取動(dòng)作以減輕該活鎖狀況的方法500的至少一個(gè)實(shí)施例。對(duì)于至少一個(gè)實(shí)施例,比如圖1-4中示出的TLU 165的線程活鎖單元可以執(zhí)行方法500。該TLU 165可以是把方法500實(shí)施為狀態(tài)機(jī)的硬件單元。
現(xiàn)在參照?qǐng)D3和4來討論圖5。作為圖5的背景,應(yīng)當(dāng)理解,對(duì)于SMT處理器(比如分別在圖3和4中示出的處理器104和404)的至少一個(gè)實(shí)施例,每個(gè)邏輯處理器150維持一整套體系結(jié)構(gòu)狀態(tài)。此外,該處理器的某些特征(比如退休隊(duì)列364或ROB 464以及執(zhí)行資源362、462)可以維持對(duì)應(yīng)于每一個(gè)當(dāng)前激活的軟件線程的微體系結(jié)構(gòu)狀態(tài)信息。在特定條件下,可以停滯一個(gè)激活的線程,并且可以從SMT邏輯處理器150中沖刷(或者說“核爆”)掉對(duì)應(yīng)于該線程的微體系結(jié)構(gòu)狀態(tài)。通過停滯并且“核爆”未選擇的邏輯處理器(其可能正在前進(jìn))的微體系結(jié)構(gòu)狀態(tài),則所選擇的邏輯處理器可以從當(dāng)前節(jié)奏模式中解脫出來,并且其能夠在不與未選擇的邏輯處理器發(fā)生干擾的情況下前進(jìn)。
圖5示出所述方法500包括空閑狀態(tài)502。圖5還示出,當(dāng)滿足一個(gè)或多個(gè)復(fù)位條件501時(shí),可以進(jìn)入該空閑狀態(tài)502。為了簡(jiǎn)化圖5和6,方框501和狀態(tài)502之間的箭頭表示滿足任何復(fù)位條件501。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,對(duì)于一個(gè)或多個(gè)復(fù)位條件,如圖5和6所示,可以從其他狀態(tài)504、506、508、602、604、606當(dāng)中的一個(gè)發(fā)生到狀態(tài)502的過渡。然而,為了簡(jiǎn)單起見,在圖5和6中沒有示出表示這種過渡的箭頭。
轉(zhuǎn)到圖7,其中示出所述一個(gè)或多個(gè)復(fù)位條件501的至少一個(gè)實(shí)施例。圖7是參照?qǐng)D4和5進(jìn)行討論的。對(duì)于至少一個(gè)實(shí)施例,可以在單內(nèi)核處理系統(tǒng)或多內(nèi)核處理系統(tǒng)中應(yīng)用復(fù)位條件501。在下面的討論中,術(shù)語(yǔ)“當(dāng)前邏輯處理器”表示與正在執(zhí)行方法500以確定復(fù)位條件501是否為真的TLU 165相關(guān)的邏輯處理器150。因此,雖然處理器104中的一個(gè)或多個(gè)其他TLU 165a-165n也可以并發(fā)地執(zhí)行方法500,但是與處理器104的其他邏輯處理器150不同,“當(dāng)前邏輯處理器”是感興趣的那個(gè)邏輯處理器。
圖7示出,當(dāng)TLU 165是圖5和6中所示的任何其他狀態(tài)(包括狀態(tài)502、504、506、508、602、606和604)時(shí),一個(gè)或多個(gè)復(fù)位條件501可以變?yōu)檎妗H绻粋€(gè)或多個(gè)復(fù)位條件501變?yōu)檎?,則觸發(fā)到狀態(tài)502的過渡。如上所述,從任何其他狀態(tài)到狀態(tài)502的過渡由箭頭551所包含,該箭頭表示從任何其他狀態(tài)到空閑狀態(tài)502的過渡。
圖7示出,復(fù)位條件501的條件A表明,如果TLU 165已經(jīng)被禁用,則該TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。該條件A反映了這樣一個(gè)假設(shè),即對(duì)于至少一個(gè)實(shí)施例,TLU 165可能被禁用。例如,對(duì)于至少一個(gè)實(shí)施例,TLU 165可能在執(zhí)行異常處理例程期間被禁用。在可以由微代碼或者其他固件執(zhí)行的這種例程期間,可能會(huì)禁用活鎖檢測(cè)??赡軐?dǎo)致TLU 165被禁用的異常的一個(gè)例子是聲明(assertion)一個(gè)信號(hào)(比如停止時(shí)鐘信號(hào)),該信號(hào)表明所述芯片組(例如見圖2的255)已經(jīng)請(qǐng)求處理器104過渡到低功率狀態(tài)。
圖7示出,復(fù)位條件501的條件B表明,如果檢測(cè)到復(fù)位觸發(fā)則TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。在檢測(cè)到這種復(fù)位觸發(fā)之后,TLU 165通過保持在/返回到空閑狀態(tài)502來復(fù)位其活鎖確定行為。對(duì)于至少一個(gè)實(shí)施例,復(fù)位觸發(fā)可以由用戶發(fā)起的事件激活,所述事件例如是激活初始化引腳或者斷電復(fù)位。
圖7示出,復(fù)位條件501的條件C表明,如果TLU 165的相關(guān)邏輯處理器空閑并且因此當(dāng)前不嘗試執(zhí)行軟件線程,則該TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。對(duì)于至少一個(gè)實(shí)施例,該條件可以由TLU165檢測(cè)到,這是通過檢查一個(gè)寄存器以及隨后維持對(duì)應(yīng)于該TLU 165的“線程激活”指標(biāo)。
圖7示出,復(fù)位條件501的條件D表明,如果處理器內(nèi)核104的另一個(gè)邏輯處理器150處于排他性訪問模式,則TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。在排他性訪問模式期間,一個(gè)邏輯處理器可能正在采取所有其他邏輯處理器都需要知道的動(dòng)作。例如,有些時(shí)候一個(gè)邏輯處理器可能正在執(zhí)行一個(gè)影響對(duì)共享資源(例如ROB 464)的重新分割的指令?;蛘?,例如一個(gè)邏輯處理器可能執(zhí)行一個(gè)做出全局改變的指令,比如在控制寄存器中設(shè)置高速緩存器禁用比特。在這種情況下,所有其他邏輯處理器應(yīng)當(dāng)停滯執(zhí)行,直到所述排他性訪問操作完成為止。在這段時(shí)間期間,停滯的TLU 165不應(yīng)當(dāng)預(yù)期其邏輯處理器前進(jìn),因此應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。對(duì)于至少一個(gè)實(shí)施例,TLU 165可以確定是否滿足條件D,這是通過檢查一個(gè)共享信號(hào)(其例如可能在微體系結(jié)構(gòu)寄存器中被反映)以便確定處理器104的另一個(gè)邏輯處理器150是否處于排他性訪問模式。
圖7示出,復(fù)位條件501的條件E表明,如果TLU 165的邏輯處理器150已經(jīng)過渡出I側(cè)饑餓動(dòng)作狀態(tài)604(圖6),則TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。這種過渡表明已經(jīng)采取了成功的動(dòng)作(下面結(jié)合狀態(tài)604討論)以便嘗試減輕當(dāng)前邏輯處理器150上的I側(cè)饑餓,因此TLU 165應(yīng)當(dāng)返回到空閑狀態(tài)502,以便開始新的活鎖檢測(cè)序列,從而為所述饑餓避免動(dòng)作給出生效的時(shí)間。
圖7還示出,復(fù)位條件501的條件F表明,如果所述存儲(chǔ)器活鎖單元166當(dāng)前激活,則TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。通過該條件F,TLU 165把優(yōu)先權(quán)讓給存儲(chǔ)器活鎖單元166。這種優(yōu)先權(quán)排序方案可用于防止由TLU 165和MLU 166之間的爭(zhēng)用而引發(fā)的活鎖。也就是說,如上所述,MLU 166可以停滯一個(gè)邏輯處理器150的存儲(chǔ)器操作,從而另一個(gè)邏輯處理器可以完成一個(gè)或多個(gè)存儲(chǔ)器操作。如果沒有復(fù)位條件F,被停滯的邏輯處理器可能會(huì)錯(cuò)誤地確定其由于所不希望的活鎖狀況而不能前進(jìn)。條件F確保在這種情況下TLU 165把優(yōu)先權(quán)讓給MLU 166。因此,復(fù)位條件F確保每個(gè)TLU 165和MLU166知道彼此,并且彼此協(xié)作。
圖7示出,復(fù)位條件501的條件G表明,如果已經(jīng)對(duì)于TLU 165的邏輯處理器聲明了“核爆”動(dòng)作,則該TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。對(duì)于邏輯處理器150的核爆動(dòng)作具有如下結(jié)果當(dāng)前指令以及對(duì)于完全完成當(dāng)前宏操作的執(zhí)行所必需的任何其他指令都被完成。所有進(jìn)一步的指令執(zhí)行被停滯,并且對(duì)應(yīng)于該邏輯處理器150的所有流水線以及相關(guān)的微體系結(jié)構(gòu)狀態(tài)都被沖刷掉。按照這種方式,不僅對(duì)應(yīng)于該線程的處理被停滯,并且其微體系結(jié)構(gòu)狀態(tài)也被沖刷掉。
例如,如果已經(jīng)由另一個(gè)邏輯處理器150a-150n發(fā)起了全部“核爆”動(dòng)作,則條件G對(duì)于當(dāng)前邏輯處理器可能為真。例如,如果作為狀態(tài)606完成的結(jié)果已經(jīng)由另一個(gè)邏輯處理器發(fā)起了全部“核爆”動(dòng)作,則可能會(huì)滿足該條件。在這種情況下,對(duì)于至少一個(gè)實(shí)施例,當(dāng)前邏輯處理器將被停滯,并且其微體系結(jié)構(gòu)狀態(tài)將被沖刷掉;因此,對(duì)應(yīng)于當(dāng)前邏輯處理器的TLU 165應(yīng)當(dāng)返回到空閑狀態(tài)502。
或者,即使另一個(gè)邏輯處理器尚未完成狀態(tài)606,對(duì)于一個(gè)特定的邏輯處理器也可能會(huì)滿足條件G。相反地,對(duì)于當(dāng)前邏輯處理器150的“核爆”動(dòng)作可以由該處理器中的幾個(gè)其他事件當(dāng)中的任何一個(gè)發(fā)起,所述其他事件與方法500的各狀態(tài)不相關(guān)。例如,該“核爆”事件可以作為當(dāng)前邏輯處理器150上的中斷的結(jié)果而被聲明,以便為無序處理器104提供精確的異常處理。
圖7還示出,復(fù)位條件501的條件H表明,如果另一個(gè)邏輯處理器的TLU 165已經(jīng)變?yōu)椤凹せ睢辈⑶姨幱诓扇』铈i破壞器動(dòng)作的過程中,則TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。根據(jù)條件H,如果第一TLU 165已經(jīng)從檢測(cè)階段(見502、504、506)過渡到第一TLU 165的“激活”階段(見508、602、606、604)(其中該第一TLU 165采取某種類型的校正動(dòng)作以嘗試減輕活鎖狀況),則第二TLU 165讓步于第一TLU 165。滿足條件H使得以下情況成為必要每個(gè)TLU 165知道該處理器上的其他TLU 165的狀態(tài)(圖3示出,對(duì)于至少一個(gè)實(shí)施例,所有的TLU 165a-165n彼此通信)。
可能會(huì)出現(xiàn)一種“平局”情況,其中多于一個(gè)TLU 165嘗試在同一時(shí)鐘周期期間過渡到激活狀態(tài)。在這種情況下,只能把優(yōu)先權(quán)授予其中一個(gè)發(fā)出請(qǐng)求的TLU 165。例如,可以把優(yōu)先權(quán)指定給具有最低編號(hào)的TLU(也就是說,165a具有比165b更高的優(yōu)先權(quán),因此165b回到空閑狀態(tài)502)?;蛘?,可以利用許多其他優(yōu)先權(quán)選擇機(jī)制。對(duì)于至少一個(gè)實(shí)施例,由一個(gè)仲裁器(例如見圖1的180)強(qiáng)加所述優(yōu)先權(quán)機(jī)制。在這種情況下用來指定優(yōu)先權(quán)的仲裁策略可以(但不必)是在下面結(jié)合圖8描述的在方框806處利用的相同策略。
圖7還示出,復(fù)位條件501的條件I表明,如果TLU 165已經(jīng)表現(xiàn)出貪婪行為因此很可能導(dǎo)致在另一個(gè)邏輯處理器150上的活鎖狀況時(shí),該TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。這種貪婪行為可以按照幾種方式當(dāng)中的任何一種來識(shí)別。也就是說,如果TLU 165的處理器150的ROB 364部分為空的原因不是I側(cè)饑餓,例如處理器150的ROB 364部分為空的原因是它的其中一種執(zhí)行資源已滿,則該TLU165不一定應(yīng)當(dāng)保持在非空閑狀態(tài)中。
例如,邏輯處理器150可能表現(xiàn)出貪婪行為,這是由于其發(fā)出占滿系統(tǒng)的存儲(chǔ)器帶寬的一系列存儲(chǔ)指令,并且導(dǎo)致對(duì)應(yīng)于當(dāng)前邏輯處理器150的存儲(chǔ)緩沖器充滿了存儲(chǔ)指令。對(duì)于至少一個(gè)實(shí)施例,邏輯處理器150對(duì)于指令的處理可以被停滯,直到所述執(zhí)行資源(例如存儲(chǔ)緩沖器)不再滿為止。在邏輯處理器150被如上停滯的時(shí)間內(nèi),對(duì)應(yīng)于當(dāng)前邏輯處理器的ROB 364部分可能為空,但是另一種執(zhí)行資源(即存儲(chǔ)緩沖器)已滿。因此,對(duì)于條件I,當(dāng)ROB 364的對(duì)應(yīng)于當(dāng)前邏輯處理器150的所分配部分為空但是其存儲(chǔ)緩沖器(或者任何其他所指定的執(zhí)行資源)充滿了已退休存儲(chǔ)指令(其數(shù)據(jù)尚未被提交給高速緩存器或存儲(chǔ)器)時(shí),可以識(shí)別出所述貪婪行為。在這種情況下,當(dāng)前邏輯處理器150返回到空閑狀態(tài),并且在另一個(gè)邏輯處理器的TLU165需要激活時(shí)隱含地讓出優(yōu)先權(quán)。
圖7還示出,復(fù)位條件501的條件J表明,如果TLU 165的邏輯處理器具有可用于執(zhí)行的指令并且另一個(gè)邏輯處理器正在執(zhí)行高優(yōu)先權(quán)鎖定序列,則該TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。例如,高優(yōu)先權(quán)鎖定序列可以是原子指令。對(duì)于原子指令,處理器的存儲(chǔ)器邏輯僅在鎖定的線程上工作,直到完成該鎖定的操作,而不管其花費(fèi)多長(zhǎng)的時(shí)間。這種類型的高優(yōu)先權(quán)鎖定序列可以代表處理器中的最高優(yōu)先權(quán)。因此,如果另一個(gè)邏輯處理器當(dāng)前正在執(zhí)行這種類型的高優(yōu)先權(quán)鎖定操作,則復(fù)位條件J通過保持在/返回到空閑狀態(tài)502來強(qiáng)加該優(yōu)先權(quán)。如果另一個(gè)處理器正在執(zhí)行一系列高優(yōu)先權(quán)鎖定操作,從而當(dāng)前邏輯處理器150在較長(zhǎng)時(shí)間段內(nèi)無法執(zhí)行其自身的一個(gè)存儲(chǔ)器指令,則可以預(yù)測(cè)MLU 166將被調(diào)用,以便允許當(dāng)前邏輯處理器執(zhí)行其存儲(chǔ)器指令。因此,按照兩個(gè)邏輯處理器之間的競(jìng)爭(zhēng)的存儲(chǔ)器指令,MLU 166可以保護(hù)一個(gè)邏輯處理器,從而當(dāng)在另一個(gè)邏輯處理器上有一系列高優(yōu)先權(quán)鎖定時(shí),受保護(hù)的該邏輯處理器不會(huì)被停滯不可接受的長(zhǎng)時(shí)間量。
然而,如果當(dāng)前邏輯處理器沒有要執(zhí)行的指令(即當(dāng)前邏輯處理器的ROB 464為空),則不滿足復(fù)位條件J。也就是說,如果另一個(gè)邏輯處理器當(dāng)前正在執(zhí)行高優(yōu)先權(quán)鎖定操作,但是當(dāng)前邏輯處理器的ROB 464為空,那么TLU 165不返回到空閑狀態(tài)502。如果ROB部分464為空,則當(dāng)前邏輯處理器沒有要處理的指令。因此,不能依賴MLU166來保護(hù)當(dāng)前邏輯處理器以防止其遭受由另一個(gè)邏輯處理器執(zhí)行的一系列高優(yōu)先權(quán)鎖定操作。在這種情況下,在面對(duì)這種一系列高優(yōu)先權(quán)鎖定操作時(shí),TLU 165負(fù)責(zé)保護(hù)當(dāng)前邏輯處理器以防止其被停滯太長(zhǎng)時(shí)間。相應(yīng)地,如果當(dāng)前邏輯處理器150具有空的ROB 464并且在另一線程上正在進(jìn)行高優(yōu)先權(quán)鎖定,則當(dāng)前TLU 165應(yīng)當(dāng)在階段506確定其是否應(yīng)當(dāng)執(zhí)行I側(cè)饑餓避免動(dòng)作。
圖7還示出,復(fù)位條件501的條件K表明,如果當(dāng)前邏輯處理器150已經(jīng)接收到長(zhǎng)等待時(shí)間數(shù)據(jù),則TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)。對(duì)于至少一個(gè)實(shí)施例,當(dāng)作為高速緩存器錯(cuò)失的結(jié)果而一直在等待數(shù)據(jù)或指令的邏輯處理器最終接收到所述數(shù)據(jù)或指令時(shí),滿足條件K。此時(shí),當(dāng)前邏輯處理器應(yīng)當(dāng)返回到空閑狀態(tài)502。這是由于如果當(dāng)前邏輯處理器150不響應(yīng)于滿足條件K而返回到空閑狀態(tài)502,那么該邏輯處理器150可能會(huì)錯(cuò)誤地向仲裁器180(圖1和2)發(fā)送與高速緩存器錯(cuò)失相關(guān)的優(yōu)先權(quán)請(qǐng)求530(見下面對(duì)狀態(tài)506的討論)。
圖7還示出,復(fù)位條件501的條件L表明,如果當(dāng)前邏輯處理器150在相關(guān)時(shí)間幀期間已經(jīng)退休了至少一個(gè)最終格式指令,則TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。對(duì)于至少一個(gè)實(shí)施例,該最終格式指令是微操作,并且該相關(guān)時(shí)間段是單個(gè)時(shí)鐘周期。如果滿足條件L,則可以說當(dāng)前邏輯處理器150已經(jīng)在其線程指令流的執(zhí)行中前進(jìn)。相應(yīng)地,不存在活鎖狀況,并且TLU 165應(yīng)當(dāng)返回到或者保持在空閑狀態(tài)502。
圖7還示出,復(fù)位條件501的條件M表明,如果邏輯處理器向仲裁器(圖1和2的180)發(fā)送優(yōu)先權(quán)請(qǐng)求530的能力(見下面對(duì)狀態(tài)506的討論)已經(jīng)被禁用,則TLU 165應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502。當(dāng)邏輯處理器150向仲裁器180(圖1和2)發(fā)送優(yōu)先權(quán)請(qǐng)求530的能力被禁用時(shí),可以說“缺陷(defeature)”為真。當(dāng)1)可能以其他方式導(dǎo)致從狀態(tài)506發(fā)送優(yōu)先權(quán)請(qǐng)求530的任何條件為真并且2)所述缺陷為真時(shí),條件M可能得到滿足。在這種情況下,即使用于從狀態(tài)506發(fā)送優(yōu)先權(quán)請(qǐng)求530的條件為真,邏輯處理器150也無法發(fā)送該請(qǐng)求。因此,邏輯處理器150應(yīng)當(dāng)保持在/返回到空閑狀態(tài)502,而不是過渡到/保持在特設(shè)情況狀態(tài)506(如下討論)。
對(duì)于至少一個(gè)實(shí)施例,如果邏輯處理器150正在經(jīng)歷內(nèi)核上高速緩存器錯(cuò)失(數(shù)據(jù)或指令)并且正在等待來自內(nèi)核外來源(例如內(nèi)核外共享高速緩存器251或芯片外存儲(chǔ)器202)的指令或數(shù)據(jù),則條件M的第一部分(即“1)可能以其他方式導(dǎo)致從狀態(tài)506發(fā)送優(yōu)先權(quán)請(qǐng)求530的任何條件為真”)可能被滿足。例如,如果出現(xiàn)以下情況則可能會(huì)發(fā)生所述錯(cuò)失1)對(duì)于負(fù)載指令發(fā)生高速緩存器錯(cuò)失,并且該負(fù)載指令處于退休狀態(tài),但是由于所述負(fù)載數(shù)據(jù)在處理器內(nèi)核104上不可用而無法退休(即在任何內(nèi)核上高速緩存器中不可用,并且在負(fù)載緩沖器(“LDRB’s”)中也不可用)。例如,如果出現(xiàn)以下情況則也可能會(huì)發(fā)生所述錯(cuò)失2)邏輯處理器150正在經(jīng)歷對(duì)應(yīng)于指令獲取的內(nèi)核上錯(cuò)失,并且正在等待來自內(nèi)核外來源(例如內(nèi)核外共享高速緩存器251或芯片外存儲(chǔ)器202)的指令信息;或者3)邏輯處理器150正在經(jīng)歷對(duì)應(yīng)于STA微操作(其可以是與存儲(chǔ)宏指令相關(guān)的最終格式存儲(chǔ)地址微操作)的內(nèi)核上錯(cuò)失,因此正在等待對(duì)由該存儲(chǔ)地址微操作指示的存儲(chǔ)器位置的內(nèi)核外取回。
同樣,如果所述STA微操作處于退休狀態(tài),但是由于與所述存儲(chǔ)指令相關(guān)的數(shù)據(jù)所應(yīng)被寫入的存儲(chǔ)器位置(存儲(chǔ)地址)不在處理器內(nèi)核104上(在高速緩存器或存儲(chǔ)緩沖器(“STRB’s”)中)而無法退休,則滿足所述第三條件。一般來說,所述三個(gè)條件當(dāng)中的任何一個(gè)將導(dǎo)致TLU 165過渡到特殊情況狀態(tài)506。然而,如果所述缺陷為真,則復(fù)位條件M表明這種過渡不應(yīng)當(dāng)發(fā)生,這是由于邏輯處理器150在這種條件下發(fā)送優(yōu)先權(quán)請(qǐng)求530的能力已經(jīng)被禁用。
回到圖5,可以看出存在其他狀態(tài)504、506,TLU 165可以進(jìn)入所述狀態(tài)以便確定是否存在活鎖狀況。這種狀態(tài)504、506連同空閑狀態(tài)502在這里被稱作“檢測(cè)”狀態(tài)。當(dāng)TLU 165處于這種檢測(cè)狀態(tài)502、504、506中時(shí),其不被認(rèn)為是“激活的”,這是由于其僅僅監(jiān)視特定條件并且不采取任何肯定動(dòng)作以嘗試破壞活鎖。這樣,當(dāng)處于其中一個(gè)檢測(cè)狀態(tài)502、504、506中時(shí),邏輯處理器150將不觸發(fā)結(jié)合圖7討論的復(fù)位條件501的復(fù)位條件H,因此將不會(huì)使得其他邏輯處理器(見150a-150n)把優(yōu)先權(quán)讓給當(dāng)前邏輯處理器150。
進(jìn)入兩個(gè)剩余檢測(cè)狀態(tài)504和506的區(qū)別在于導(dǎo)致邏輯處理器150過渡出空閑狀態(tài)502的條件是下面的哪一種情況1)通過向仲裁器180(圖1和2)發(fā)送優(yōu)先權(quán)請(qǐng)求530而可能最終獲益的情況;或者2)邏輯處理器150可能正遭受I側(cè)饑餓,但是由于另一個(gè)線程上的高優(yōu)先權(quán)鎖定而被阻斷從而無法采取動(dòng)作(這些條件在這里被稱作“特殊情況”)。如果是這樣,則TLU 165從空閑狀態(tài)502過渡552到特殊情況狀態(tài)506。否則,TLU 165從空閑狀態(tài)502過渡553到初始計(jì)數(shù)狀態(tài)504。下面將分別詳細(xì)討論狀態(tài)504、506當(dāng)中的每一個(gè)。
在出現(xiàn)以下情況時(shí)從空閑狀態(tài)502進(jìn)入552特殊情況狀態(tài)5061)沒有一個(gè)復(fù)位條件501為真;并且2)a.邏輯處理器150正在經(jīng)歷內(nèi)核上高速緩存器錯(cuò)失;或者b.邏輯處理器150具有空的ROB 464,但是在另一個(gè)邏輯處理器上正有高優(yōu)先權(quán)(“HP”)鎖定。
在后一種情況下(條件2b),當(dāng)前邏輯處理器150可能正在經(jīng)歷I側(cè)饑餓。然而,當(dāng)前邏輯處理器150還由于另一個(gè)線程正執(zhí)行高優(yōu)先權(quán)鎖定操作而遭受停滯。相應(yīng)地,直到該高優(yōu)先權(quán)鎖定操作被解除為止,當(dāng)前邏輯處理器150才應(yīng)當(dāng)前進(jìn)到任何“激活”狀態(tài)。
在前一種情況下(2a),邏輯處理器150正在經(jīng)歷內(nèi)核上高速緩存器錯(cuò)失。對(duì)于至少一個(gè)實(shí)施例,可以通過檢查上面結(jié)合復(fù)位條件501的條件M所討論的三個(gè)條件來確定這種內(nèi)核上高速緩存器錯(cuò)失退休中的負(fù)載或STA指令,或者無法完成的指令獲取。當(dāng)然,本領(lǐng)域技術(shù)人員將意識(shí)到,本實(shí)施例不是限制性的,并且可以通過評(píng)估其他的或附加的條件而對(duì)于其他實(shí)施例確定檢測(cè)到內(nèi)核上高速緩存器錯(cuò)失。在任何情況下,當(dāng)邏輯處理器150正在經(jīng)歷內(nèi)核上高速緩存器錯(cuò)失(并且所述缺陷不為真)時(shí),TLU 165過渡552到特殊情況狀態(tài)506以便允許向仲裁器180發(fā)送優(yōu)先權(quán)請(qǐng)求信號(hào)530(這對(duì)于其他邏輯處理器的破壞性最小),而不是直接過渡到更為嚴(yán)重動(dòng)作狀態(tài),例如停滯聲明狀態(tài)508,其明確地與其他邏輯處理器的處理發(fā)生干擾。
在特殊情況狀態(tài)506期間,TLU 165可以利用一個(gè)計(jì)數(shù)器來對(duì)自從進(jìn)入特殊情況狀態(tài)506后所經(jīng)過的時(shí)鐘周期的數(shù)量進(jìn)行計(jì)數(shù)。對(duì)于替換實(shí)施例,可以采用任何用于測(cè)量所經(jīng)過的時(shí)間的方法以作為對(duì)時(shí)鐘周期進(jìn)行計(jì)數(shù)的替換或補(bǔ)充。在預(yù)定數(shù)量的時(shí)鐘周期(X)過期之后,TLU 165可以聲明一個(gè)優(yōu)先權(quán)請(qǐng)求530。在下面的情況下發(fā)出該優(yōu)先權(quán)請(qǐng)求5301)當(dāng)前邏輯處理器150正在經(jīng)歷高速緩存器錯(cuò)失;并且2)自從TLU 165進(jìn)入此次出現(xiàn)的特殊情況狀態(tài)506后已經(jīng)經(jīng)過了預(yù)定時(shí)間量(X)。
所述優(yōu)先權(quán)請(qǐng)求530到達(dá)仲裁器180(圖1和2),并且其請(qǐng)求仲裁器180為當(dāng)前邏輯處理器150的存儲(chǔ)器請(qǐng)求給出高于來自其他邏輯處理器(見150a-150n)的存儲(chǔ)器請(qǐng)求的優(yōu)先權(quán)?;蛘?,在多內(nèi)核實(shí)施例中(見圖2的104a-104n),所述優(yōu)先權(quán)請(qǐng)求530可以請(qǐng)求仲裁器180為當(dāng)前處理器內(nèi)核104給出高于其他處理器內(nèi)核的優(yōu)先權(quán)。因此,對(duì)于單內(nèi)核實(shí)施例的特定于內(nèi)核的優(yōu)先權(quán)請(qǐng)求530的可選特性在圖5中由點(diǎn)線表示。在發(fā)出優(yōu)先權(quán)請(qǐng)求530之后,TLU 165可以保持在特殊情況狀態(tài)506中,直到下面討論的其中一個(gè)退出條件變?yōu)檎妗?br> 只要ROB 464的與TLU 165的邏輯處理器150相關(guān)的該部分為空并且對(duì)應(yīng)于處理器內(nèi)核104的任何其他邏輯處理器(見150a-150n)正在執(zhí)行高優(yōu)先權(quán)鎖定操作,該邏輯處理器就保持555在特殊情況狀態(tài)506中。然而,如果TLU 165在特殊情況狀態(tài)506期間確定對(duì)應(yīng)于另一個(gè)邏輯處理器的表明HP鎖定正在進(jìn)行中的指標(biāo)從真過渡到假,則TLU165退出特殊情況狀態(tài)506并且進(jìn)入554一個(gè)“激活”狀態(tài),即停滯聲明狀態(tài)508,在該狀態(tài)期間當(dāng)前邏輯處理器150可以向其他邏輯處理器聲明停滯。因此,如果所述ROB 464部分為空,則繞過初始計(jì)數(shù)狀態(tài)504。當(dāng)ROB 464為空時(shí)從狀態(tài)506到狀態(tài)508的過渡554實(shí)施高優(yōu)先權(quán)處理,這是由于其不花時(shí)間來執(zhí)行初始倒計(jì)數(shù)狀態(tài)504。如果ROB464為空,則所述倒計(jì)數(shù)花費(fèi)的時(shí)間過長(zhǎng);所述邏輯處理器在這種情況下不具有任何指令,因此TLU 165被設(shè)計(jì)成盡可能快地往ROB 464中裝入更多指令。
圖5示出如果TLU 165確定對(duì)應(yīng)于其內(nèi)核104的存儲(chǔ)器活鎖單元166已經(jīng)被觸發(fā),則該TLU 165可以過渡556出特殊情況狀態(tài)506。在這種情況下,TLU 165從特殊情況狀態(tài)506過渡556到初始計(jì)數(shù)狀態(tài)504。在這種操作下,TLU 165把暫時(shí)的優(yōu)先權(quán)讓給MLU 166,以便允許MLU 166嘗試破壞潛在的活鎖,所述潛在的活鎖作為邏輯處理器150可能正在經(jīng)歷的長(zhǎng)等待時(shí)間內(nèi)核上高速緩存器錯(cuò)失(例如參見上面對(duì)于進(jìn)入特殊情況狀態(tài)506所討論的條件2a)的結(jié)果而正在形成。在MLU166的處理期間,該MLU 166可以為特定線程指定優(yōu)先權(quán)。通過在過渡556處把優(yōu)先權(quán)讓給MLU 166,TLU 165避免在MLU 166已經(jīng)把優(yōu)先權(quán)指定給不同的邏輯處理器150的同時(shí)為當(dāng)前邏輯處理器指定優(yōu)先權(quán)。按照這種方式,各TLU 165與MLU 166一起工作,以便每次只為一個(gè)線程指定優(yōu)先權(quán)。因此,在確定MLU 166一直不能減輕存儲(chǔ)器活鎖并且當(dāng)前邏輯處理器150在可接受的時(shí)間量之后仍然不能前進(jìn)之前,TLU 165過渡556到初始計(jì)數(shù)狀態(tài)504,以便允許MLU 166在整個(gè)預(yù)定時(shí)間段Y內(nèi)運(yùn)行(參見下面對(duì)狀態(tài)504的進(jìn)一步討論)。
應(yīng)當(dāng)注意到,根據(jù)上面結(jié)合圖7討論的復(fù)位條件K,如果MLU 166能夠成功地破壞存儲(chǔ)器活鎖從而最終接收到所錯(cuò)失的高速緩存器信息(數(shù)據(jù)或指令),則TLU 165從初始計(jì)數(shù)狀態(tài)504過渡551回到空閑狀態(tài)502。
應(yīng)當(dāng)注意到,根據(jù)復(fù)位條件K,如果作為正常處理器操作的一部分而最終接收到所請(qǐng)求的數(shù)據(jù)或所獲取的指令,則即使沒有MLU 166的幫助也可以發(fā)生從特殊情況狀態(tài)506回到空閑狀態(tài)502的過渡551。
如上所述,如果不存在任何特殊情況(內(nèi)核上高速緩存器錯(cuò)失或者空ROB+HP鎖定)并且沒有復(fù)位條件501為真,則TLU 165從空閑狀態(tài)502過渡553到初始計(jì)數(shù)狀態(tài)504。在該初始計(jì)數(shù)狀態(tài)期間,TLU165維持一個(gè)定時(shí)器,以便確定TLU 165是否已經(jīng)在初始計(jì)數(shù)狀態(tài)504中停留了預(yù)定時(shí)間量Y。該預(yù)定時(shí)間量Y可以被確定成反映這樣的時(shí)間量如果當(dāng)前邏輯處理器150一直不能前進(jìn),那么在該時(shí)間量之后就假定當(dāng)前邏輯處理器150正在經(jīng)歷活鎖狀況。
對(duì)于至少一個(gè)實(shí)施例,TLU 165在初始計(jì)數(shù)狀態(tài)504期間維持一個(gè)倒計(jì)數(shù)定時(shí)器,其中該定時(shí)器被設(shè)置到所述預(yù)定時(shí)間量Y,隨后每個(gè)時(shí)鐘周期遞減該計(jì)數(shù)器。如果該計(jì)數(shù)器到達(dá)0(或者某一其他預(yù)定最小值),則邏輯處理器150可能處在活鎖狀況下,并且可以被準(zhǔn)許過渡到一個(gè)“激活”狀態(tài)。因此,對(duì)于至少一個(gè)實(shí)施例,所述定時(shí)器從預(yù)定定時(shí)器值Y到預(yù)定最小值的倒計(jì)數(shù)表示所能夠容許的不發(fā)生前進(jìn)的時(shí)鐘周期的預(yù)定數(shù)量。
應(yīng)當(dāng)注意到,如果在初始計(jì)數(shù)狀態(tài)504期間任何復(fù)位條件501變?yōu)檎妫瑒tTLU 165將過渡到空閑狀態(tài)502,并且在初始計(jì)數(shù)狀態(tài)504期間所利用的計(jì)數(shù)器可以被重新初始化。一個(gè)這樣的復(fù)位條件(條件L)是最終格式指令的退休。如果所述退休不在初始計(jì)數(shù)狀態(tài)504期間發(fā)生,則當(dāng)前邏輯處理器沒有在其指令的執(zhí)行中前進(jìn)。其他的復(fù)位條件A-K和M可以提供可能的前進(jìn)的某種其他指示。如果在預(yù)定數(shù)量的時(shí)鐘周期期間沒有發(fā)生任何復(fù)位條件,則TLU 165從初始計(jì)數(shù)狀態(tài)504過渡557到停滯聲明狀態(tài)508。
因此,圖5示出可以從初始計(jì)數(shù)狀態(tài)504(見過渡557)或者特殊情況狀態(tài)506(見過渡554)進(jìn)入停滯聲明狀態(tài)508。在停滯聲明狀態(tài)508期間,除了其自身的邏輯處理器(即當(dāng)前邏輯處理器)之外,TLU165向處理器104的每個(gè)邏輯處理器150a-150n聲明一個(gè)停滯信號(hào)。這種動(dòng)作在對(duì)應(yīng)于處理器104的所有邏輯處理器150a-150n之間強(qiáng)加一個(gè)優(yōu)先權(quán)。對(duì)于至少一個(gè)實(shí)施例,在停滯聲明狀態(tài)508期間聲明的該停滯信號(hào)使得在該停滯信號(hào)被聲明時(shí)其他邏輯處理器(見150a-150n)不能向各執(zhí)行單元360發(fā)出指令。TLU 165保持在該停滯聲明狀態(tài)中,并且繼續(xù)向處理器104的每個(gè)其他邏輯處理器150聲明該停滯信號(hào),直到滿足下面的各退出條件的其中之一為止。
圖5示出,當(dāng)可以被反映為一定數(shù)量(Z1)的時(shí)鐘周期的預(yù)定時(shí)間段已經(jīng)過期并且與當(dāng)前邏輯處理器相關(guān)的ROB 464的所述部分不為空時(shí),TLU 165的至少一個(gè)實(shí)施例可以退出558所述停滯聲明狀態(tài)508。在這種情況下,由于所述適當(dāng)?shù)腞OB 464部分不為空,因此當(dāng)前邏輯處理器150沒有在經(jīng)歷指令饑餓。然而,當(dāng)前邏輯處理器150已經(jīng)在Z1個(gè)時(shí)鐘周期的時(shí)間段內(nèi)向所有其他邏輯處理器聲明了停滯信號(hào),并且仍然未能夠經(jīng)歷前進(jìn)。使得其他邏輯處理器停滯并沒有允許當(dāng)前邏輯處理器150前進(jìn),因此需要附加的動(dòng)作來嘗試減輕活鎖狀況。因此,當(dāng)所述退出條件為真時(shí),TLU 165過渡558到圖6的狀態(tài)602。
另一方面,如果對(duì)應(yīng)于當(dāng)前邏輯處理器150的ROB 464的所指定的部分為空,則上面討論的對(duì)應(yīng)于狀態(tài)508的第一退出條件不為真。由于所述ROB 464部分為空,因此當(dāng)前邏輯處理器150可能正在經(jīng)歷指令饑餓。因此,如果該ROB 464部分為空,則TLU 165在過渡559到圖6的狀態(tài)604之前等待預(yù)定的時(shí)間量Z2,其中該邏輯處理器150可以采取動(dòng)作來減輕指令饑餓。
轉(zhuǎn)到圖6,這里參照?qǐng)D4對(duì)其進(jìn)行討論,從中可以看出,可以響應(yīng)于其ROB 464在至少所述預(yù)定時(shí)間量Z2內(nèi)為空而從停滯聲明狀態(tài)508進(jìn)入I側(cè)饑餓動(dòng)作狀態(tài)604。在所述I側(cè)饑餓動(dòng)作狀態(tài)604期間,TLU 165采取一個(gè)或多個(gè)動(dòng)作以便往當(dāng)前邏輯處理器的ROB 464部分中裝入更多的指令。這些動(dòng)作在這里被稱作饑餓避免動(dòng)作。在狀態(tài)604期間,TLU 165向其他邏輯處理器150a-150n去聲明(de-assert)在狀態(tài)508期間所聲明的所述停滯信號(hào)。在這種聲明期間,當(dāng)前邏輯處理器150未能前進(jìn);所述停滯并沒有起到幫助,并且當(dāng)前邏輯處理器150仍然在經(jīng)歷指令匱乏(即其ROB 464仍然為空)。實(shí)際上,在進(jìn)入狀態(tài)604時(shí)可能是這樣的情況在狀態(tài)508期間聲明的該停滯信號(hào)阻止了另一個(gè)邏輯處理器完成宏指令,這可能阻止了釋放當(dāng)前邏輯處理器150所需要的資源。
在進(jìn)入狀態(tài)604時(shí),假設(shè)當(dāng)前邏輯處理器確實(shí)正遭受指令側(cè)饑餓(也就是說其缺少可用于執(zhí)行的指令)。這種饑餓可能是由于幾種因素當(dāng)中的任何一種而造成的。對(duì)于至少一個(gè)實(shí)施例,所述因素可以包括其指令獲取請(qǐng)求在存儲(chǔ)器指令仲裁邏輯(未示出)處被阻斷;一個(gè)或多個(gè)其他邏輯處理器一直在執(zhí)行一系列高優(yōu)先權(quán)鎖定操作;或者當(dāng)前邏輯處理器150的指令獲取一直重復(fù)地從被用來處理對(duì)存儲(chǔ)器系統(tǒng)的請(qǐng)求的任何結(jié)構(gòu)接收“未被確認(rèn)”響應(yīng)。
在I側(cè)饑餓狀態(tài)604期間,TLU 165可以采取以下動(dòng)作1)向處理器內(nèi)核104的所有其他邏輯處理器150a-150n去聲明所述停滯信號(hào);以及2)請(qǐng)求把“線程優(yōu)先權(quán)”給予當(dāng)前邏輯處理器。該“線程優(yōu)先權(quán)”請(qǐng)求可以對(duì)線程優(yōu)先權(quán)邏輯(未示出)提出。如果當(dāng)前邏輯處理器取得線程優(yōu)先權(quán),則可以調(diào)用MLU 166。
簡(jiǎn)要地參照?qǐng)D9,其中示出了可以在I側(cè)饑餓動(dòng)作狀態(tài)604(圖6)的至少一個(gè)實(shí)施例期間一起工作的TLU 165和MLU 166的某些特征。參照?qǐng)D3、5和6來討論圖9。圖9示出每一個(gè)TLU 165a-165n可以包括活鎖檢測(cè)器920和活鎖破壞器930。對(duì)于至少一個(gè)實(shí)施例,活鎖檢測(cè)器920監(jiān)視復(fù)位條件501并且執(zhí)行檢測(cè)階段502、504、506。對(duì)于至少一個(gè)實(shí)施例,活鎖破壞器930負(fù)責(zé)執(zhí)行所述“激活”狀態(tài)508、602、604和606的動(dòng)作。
圖9示出MLU 166包括存儲(chǔ)器活鎖破壞器940。對(duì)于至少一個(gè)實(shí)施例,該存儲(chǔ)器活鎖破壞器940負(fù)責(zé)采取動(dòng)作以便減輕存儲(chǔ)器活鎖狀況,比如上面討論的長(zhǎng)時(shí)間的內(nèi)核上高速緩存器錯(cuò)失狀況。
圖9示出MLU 166的存儲(chǔ)器活鎖破壞器940可以包括共享的活鎖破壞器邏輯950。該共享的活鎖破壞器邏輯950可以在I側(cè)饑餓動(dòng)作狀態(tài)604期間響應(yīng)于當(dāng)前邏輯處理器獲得“線程優(yōu)先權(quán)”而被調(diào)用。該共享的活鎖破壞器邏輯950可以由處理器內(nèi)核104上的任何邏輯處理器150a-150n的TLU 165調(diào)用。
返回圖6,可以看出,自從當(dāng)前邏輯處理器最初被給予“線程優(yōu)先權(quán)”后,當(dāng)遭受I側(cè)饑餓的該邏輯處理器150已經(jīng)在連續(xù)的預(yù)定時(shí)間N(其可以反映時(shí)鐘周期數(shù))內(nèi)具有被指定給它的線程優(yōu)先權(quán)時(shí),可以退出所述I側(cè)饑餓動(dòng)作狀態(tài)604。在這種情況下,TLU 165過渡651到核爆狀態(tài)606。
應(yīng)當(dāng)注意到,只有當(dāng)I側(cè)饑餓動(dòng)作狀態(tài)604期間所采取的動(dòng)作不成功時(shí)才進(jìn)行過渡651。例如,重復(fù)檢測(cè)到由另一個(gè)邏輯處理器發(fā)起的自修改代碼(SMC)可能迫使饑餓的線程持續(xù)丟棄及重新獲取指令,從而使其ROB 464部分保持為空。然而,在狀態(tài)604期間采取的I側(cè)饑餓避免動(dòng)作在減輕指令饑餓狀況方面可能很成功。如果是這樣,則將會(huì)獲取指令,并且將指令發(fā)送到當(dāng)前邏輯處理器150的ROB 464的所分配部分。在這種情況下,對(duì)于至少一個(gè)實(shí)施例,當(dāng)前邏輯處理器150將已經(jīng)過渡出指令饑餓狀況。相應(yīng)地,復(fù)位條件E(見圖7的501)將為真,并且TLU 165將從I側(cè)饑餓動(dòng)作狀態(tài)604過渡501到空閑狀態(tài)502(見圖5)。
圖6示出可以從停滯聲明狀態(tài)508進(jìn)入核爆倒計(jì)數(shù)狀態(tài)602。同樣,在核爆倒計(jì)數(shù)狀態(tài)602期間,TLU 165向其他邏輯處理器150a-150n去聲明在狀態(tài)508期間聲明的停滯信號(hào)。在這種去聲明期間,當(dāng)前邏輯處理器150未能前進(jìn);所述停滯沒有幫助。實(shí)際上,在進(jìn)入狀態(tài)602時(shí)可能是這種情況在狀態(tài)508期間聲明的停滯信號(hào)阻止了另一個(gè)邏輯處理器150完成宏指令的執(zhí)行,這可能阻止了釋放當(dāng)前邏輯處理器150所需要的資源。然而,所述停滯可能干擾了其他邏輯處理器的定時(shí),這對(duì)于當(dāng)前邏輯處理器150的前進(jìn)可能是有益的。
當(dāng)進(jìn)入核爆倒計(jì)數(shù)狀態(tài)602時(shí),當(dāng)前邏輯處理器150可能處于最終將導(dǎo)致前進(jìn)的狀態(tài)。例如,當(dāng)前邏輯處理器150可能正經(jīng)歷存儲(chǔ)器活鎖,其中MLU 166當(dāng)前激活,但是需要更多的時(shí)間來完成其活鎖破壞器處理。在核爆倒計(jì)數(shù)狀態(tài)602期間,TLU 165等待預(yù)定的時(shí)間量(其例如可以被反映為M個(gè)周期的計(jì)數(shù)),以期望當(dāng)前邏輯處理器150將達(dá)到其中一個(gè)復(fù)位條件501。對(duì)于至少一個(gè)實(shí)施例,在圖6中所示的M和N的計(jì)數(shù)可以是相同的數(shù)字,但是并非所有實(shí)施例都要求這一點(diǎn)。
對(duì)于至少一個(gè)實(shí)施例,圖6示出TLU 165在下面的條件下從核爆倒計(jì)數(shù)狀態(tài)602過渡652到核爆狀態(tài)606當(dāng)前邏輯處理器已經(jīng)被指定了“線程優(yōu)先權(quán)”,并且已經(jīng)在連續(xù)時(shí)間幀M內(nèi)保有線程優(yōu)先權(quán)。在這段時(shí)間期間,盡管當(dāng)前邏輯處理器150具有線程優(yōu)先權(quán),但是其未能在線程中前進(jìn)。如上所述,如果當(dāng)前邏輯處理器處于指令饑餓狀況,則TLU 165也可以過渡651到核爆狀態(tài)606;也就是說如果在狀態(tài)604期間采取的I側(cè)饑餓動(dòng)作不成功的話。
在狀態(tài)606期間,TLU 165向處理器104的每一個(gè)其他邏輯處理器(見150a-150n)發(fā)出一個(gè)內(nèi)核內(nèi)部“核爆”信號(hào)。作為該動(dòng)作的結(jié)果,希望當(dāng)前邏輯處理器150現(xiàn)在將能夠前進(jìn)。對(duì)于單內(nèi)核實(shí)施例,如圖1所示,對(duì)應(yīng)于方法500的處理可以從狀態(tài)606過渡654到空閑狀態(tài)502(見連接符“C”)。
圖6示出還可以響應(yīng)于外部事件而不是作為上述狀態(tài)過渡的其中之一的結(jié)果進(jìn)入655核爆狀態(tài)606。例如,所述外部事件可以是接收到由可選狀態(tài)608下的另一個(gè)內(nèi)核上的TLU 165產(chǎn)生的全線程核爆請(qǐng)求(如下討論)。
如果在狀態(tài)606期間發(fā)出的所述內(nèi)核內(nèi)部全線程“核爆”信號(hào)沒有導(dǎo)致當(dāng)前邏輯處理器150在預(yù)定時(shí)間量P內(nèi)前進(jìn),則可以發(fā)生從狀態(tài)606的可選狀態(tài)過渡653。應(yīng)當(dāng)注意到,在圖6中用點(diǎn)線表示狀態(tài)608。出現(xiàn)這種情況是由于過渡653和狀態(tài)608是可選的,它們僅適用于多內(nèi)核實(shí)施例,比如圖2中所示的實(shí)施例200。在狀態(tài)608處,向仲裁器180(圖1和2)發(fā)送全內(nèi)核核爆請(qǐng)求。響應(yīng)于在狀態(tài)608處產(chǎn)生的該請(qǐng)求,仲裁器180的至少一個(gè)實(shí)施例啟動(dòng)下列動(dòng)作從所有內(nèi)核104a-104n上的所有線程150a-150n(當(dāng)前邏輯處理器除外)上排空由仲裁器180維持的所有隊(duì)列。此外,阻斷所有新的全內(nèi)核核爆請(qǐng)求(見圖8的方框806),從當(dāng)前邏輯處理器150發(fā)出的除外。最后,對(duì)于每個(gè)其他處理器內(nèi)核104a-104n發(fā)出全線程核爆請(qǐng)求(見上面對(duì)狀態(tài)508的討論),并且對(duì)于與當(dāng)前邏輯處理器150相關(guān)的處理器內(nèi)核104上的每個(gè)其他線程150a-150n(當(dāng)前邏輯處理器除外)發(fā)出全線程核爆請(qǐng)求。(如上所述,當(dāng)其他處理器內(nèi)核的邏輯處理器接收到該核爆請(qǐng)求時(shí),該核爆請(qǐng)求可以導(dǎo)致對(duì)應(yīng)于所述邏輯處理器的TLU 165進(jìn)入狀態(tài)606,參見上面對(duì)方框620的討論)。TLU 165從狀態(tài)608返回到空閑狀態(tài)(見連接符“D”)。
圖8的流程圖示出用于處理全內(nèi)核核爆請(qǐng)求的方法800,所述全內(nèi)核核爆請(qǐng)求例如是在狀態(tài)608期間從多內(nèi)核實(shí)施例發(fā)出的。對(duì)于至少一個(gè)實(shí)施例,方法800可以由仲裁器執(zhí)行,例如圖1和2中所示的仲裁器180。對(duì)于至少一個(gè)實(shí)施例,該仲裁器可以被包括作為在這里稱作“非內(nèi)核”的邏輯的內(nèi)核外部分280(圖2)的一部分。
圖8示出方法800從方框802開始并且行進(jìn)到方框804。如果已經(jīng)產(chǎn)生了單個(gè)全內(nèi)核核爆請(qǐng)求(即來自第一處理器內(nèi)核104a上的TLU165),則所述處理行進(jìn)到方框806。正如上面結(jié)合與狀態(tài)608相關(guān)的處理所描述的那樣,在方框806為發(fā)出請(qǐng)求的內(nèi)核104a指定優(yōu)先權(quán),并且來自其余的內(nèi)核104a-104n的所有后續(xù)的全內(nèi)核核爆請(qǐng)求被無視。
所述處理從方框806行進(jìn)到方框808。在方框808處,向所有其他內(nèi)核104a-104n發(fā)起全線程核爆請(qǐng)求,所述原始全內(nèi)核核爆請(qǐng)求所源自的該內(nèi)核除外。所述請(qǐng)求可以由其他內(nèi)核接收,并且使得它們過渡到核爆狀態(tài)606(見圖6的方框620)。所述處理隨后在方框814結(jié)束。
然而,如果從多個(gè)內(nèi)核接收到兩個(gè)或多個(gè)同時(shí)的全內(nèi)核核爆請(qǐng)求,則所述處理從方框804行進(jìn)到方框810。在方框810處,方法800應(yīng)用一個(gè)仲裁策略以便選擇多個(gè)發(fā)出請(qǐng)求的內(nèi)核的其中之一以作為優(yōu)先權(quán)內(nèi)核。對(duì)于至少一個(gè)實(shí)施例,該發(fā)出請(qǐng)求的內(nèi)核可以把內(nèi)核ID與所述核爆請(qǐng)求一起提供給仲裁器。仲裁器180隨后可以應(yīng)用簡(jiǎn)單的選擇算法,從而把具有最高或最低ID的內(nèi)核選擇作為優(yōu)先權(quán)內(nèi)核。所述處理從方框810行進(jìn)到方框808并且隨后行進(jìn)到方框814,正如在上一段中所描述的那樣。
上面的討論描述了用來在多個(gè)線程之間協(xié)調(diào)線程優(yōu)先權(quán)的方法、設(shè)備和系統(tǒng)的所選實(shí)施例,以便允許在線程指令的執(zhí)行中前進(jìn),同時(shí)在活鎖破壞器邏輯、I側(cè)饑餓避免邏輯和高優(yōu)先權(quán)鎖定處理之間維持優(yōu)先權(quán)。這里描述的機(jī)制可以由單內(nèi)核或多內(nèi)核多線程系統(tǒng)利用。在前面的描述中,描述了所述方法、設(shè)備和系統(tǒng)的多個(gè)方面。出于解釋的目的,闡述了特定的數(shù)字、實(shí)例、系統(tǒng)和配置以便提供更全面的理解。然而,本領(lǐng)域技術(shù)人員可以明顯看出,可以在沒有所述具體細(xì)節(jié)的情況下實(shí)踐所述方法和設(shè)備。在其他事例中,省略或者簡(jiǎn)化了公知的特征,以免模糊所述方法和設(shè)備。
這里描述的方法的實(shí)施例可以用硬件、硬件模擬軟件或其他軟件、固件或者所述實(shí)施方法的組合來實(shí)現(xiàn)。可以對(duì)于可編程系統(tǒng)實(shí)現(xiàn)本發(fā)明的實(shí)施例,該可編程系統(tǒng)包括至少一個(gè)處理器、數(shù)據(jù)存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備。為了本申請(qǐng)的目的,處理系統(tǒng)包括具有處理器的任何系統(tǒng),所述處理器例如是數(shù)字信號(hào)處理器(DSP)、微控制器、專用集成電路(ASIC)或者微處理器。
程序可以被存儲(chǔ)在存儲(chǔ)介質(zhì)或設(shè)備(例如硬盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、只讀存儲(chǔ)器(ROM)、CD-ROM設(shè)備、閃存設(shè)備、數(shù)字通用盤(DVD)或其他存儲(chǔ)設(shè)備)上,其可以由通用或?qū)S每删幊烫幚硐到y(tǒng)讀取。當(dāng)所述存儲(chǔ)介質(zhì)或設(shè)備由處理系統(tǒng)讀取以便執(zhí)行這里描述的程序時(shí),可以由該處理系統(tǒng)中的處理器訪問的所述指令提供對(duì)于該處理系統(tǒng)的配置和操作。本發(fā)明的實(shí)施例可以被實(shí)現(xiàn)為機(jī)器可讀存儲(chǔ)介質(zhì),其可以被配置成與處理系統(tǒng)一起使用,其中,如此配置的所述存儲(chǔ)介質(zhì)使得該處理系統(tǒng)以特定的預(yù)定義方式操作,以便執(zhí)行這里描述的功能。
在圖4中示出了所述處理系統(tǒng)的一個(gè)例子的至少一個(gè)實(shí)施例。例如,樣本系統(tǒng)400可以被用來檢測(cè)活鎖狀況以及采取校正動(dòng)作以嘗試減輕這種狀況。樣本系統(tǒng)400代表基于可以從Intel公司獲得的Pentium、PentiumPro、PentiumII、PentiumIII、Pentium4以及Itanium和Itanium2微處理器的處理系統(tǒng),但是也可以使用其他系統(tǒng)(包括具有其他微處理器的個(gè)人計(jì)算機(jī)(PC)、工程工作站、個(gè)人數(shù)字助理和其他手持式設(shè)備、機(jī)頂盒等等)。對(duì)于一個(gè)實(shí)施例,樣本系統(tǒng)可以執(zhí)行能夠從Microsoft公司獲得的WindowsTM操作系統(tǒng)的一個(gè)版本,但是例如也可以使用其他操作系統(tǒng)和圖形用戶界面。
參考圖4,樣本處理系統(tǒng)400可以包括存儲(chǔ)器系統(tǒng)490和處理器404。存儲(chǔ)器系統(tǒng)490可以存儲(chǔ)用于控制處理器404的操作的指令241和數(shù)據(jù)240。
存儲(chǔ)器系統(tǒng)490意圖作為存儲(chǔ)器的一般化表示并且可以包括多種形式的存儲(chǔ)器,比如硬盤驅(qū)動(dòng)器、CD-ROM、隨機(jī)存取存儲(chǔ)器(RAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、閃存以及相關(guān)電路。存儲(chǔ)器系統(tǒng)490可以存儲(chǔ)由數(shù)據(jù)信號(hào)代表的指令241和/或數(shù)據(jù)240,所述數(shù)據(jù)信號(hào)可以由處理器404執(zhí)行。所述指令241和/或數(shù)據(jù)240可以包括用于執(zhí)行這里討論的某些或所有技術(shù)的代碼。
雖然已經(jīng)示出并說明了本發(fā)明的特定實(shí)施例,但是本領(lǐng)域技術(shù)人員顯然可以看出,在不背離本發(fā)明的最廣范圍的情況下可以做出許多改變和修改。例如,上面討論的計(jì)數(shù)器值X、Y、Z1、Z2、M、N、P可以被用作向上計(jì)數(shù)或倒計(jì)數(shù)的計(jì)數(shù)器值。每個(gè)所述計(jì)數(shù)器值可以(但不必)是不同的值。例如,對(duì)于至少一個(gè)實(shí)施例有P>>M、P>>N、Z1>Y、Z2>Y、P>Z1、P>Z2以及X>Z1??梢栽谟布性O(shè)置這些計(jì)數(shù)器值的缺省值。對(duì)于某些實(shí)施例,所述缺省計(jì)數(shù)器值可以是可編程的,從而例如可以用微代碼或者其他固件或軟件代碼對(duì)其進(jìn)行修改。
因此,本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,可以在不背離本發(fā)明的最廣范圍的情況下做出許多改變和修改。所附權(quán)利要求書意圖包含落在本發(fā)明的真實(shí)范圍內(nèi)的所有這種改變和修改。
權(quán)利要求
1.一種處理器,包括包括第一邏輯處理器和第二邏輯處理器的處理器內(nèi)核;耦合到第一邏輯處理器的第一線程活鎖單元;耦合到第二邏輯處理器的第二線程活鎖單元;其中,所述第一活鎖單元用來響應(yīng)于缺少可用于由第一活鎖單元執(zhí)行的指令而請(qǐng)求對(duì)第二活鎖單元的停滯;以及仲裁器;其中,所述第一和第二線程活鎖單元以及所述仲裁器還用來在所述第一邏輯處理器和所述第二邏輯處理器之間強(qiáng)加優(yōu)先權(quán)。
2.權(quán)利要求1的處理器,其中所述第一線程活鎖單元還用來確定第一邏輯處理器是否在對(duì)應(yīng)于第一軟件線程的指令執(zhí)行期間未能前進(jìn);以及所述第二線程活鎖單元用來確定第二邏輯處理器是否在對(duì)應(yīng)于第二軟件線程的指令執(zhí)行期間未能前進(jìn)。
3.權(quán)利要求1的處理器,還包括耦合到所述第一和第二邏輯處理器的存儲(chǔ)器活鎖單元。
4.權(quán)利要求3的處理器,其中所述存儲(chǔ)器活鎖單元還用來啟動(dòng)存儲(chǔ)器活鎖避免動(dòng)作。
5.權(quán)利要求1的處理器,其中所述仲裁器用來在第一邏輯處理器和第二邏輯處理器之間強(qiáng)加優(yōu)先權(quán),以便解決長(zhǎng)等待時(shí)間高速緩存器錯(cuò)失。
6.權(quán)利要求3的處理器,其中所述第一和第二活鎖單元還用來把優(yōu)先權(quán)讓給所述存儲(chǔ)器活鎖單元。
7.權(quán)利要求1的處理器,其中所述活鎖單元還用來響應(yīng)于缺乏可用于執(zhí)行的指令而啟動(dòng)饑餓避免動(dòng)作。
8.權(quán)利要求6的處理器,其中所述第一活鎖單元還用來對(duì)于與第一邏輯處理器相關(guān)的第一軟件線程確定是否缺乏可用指令;以及所述第二活鎖單元還用來對(duì)于與第二邏輯處理器相關(guān)的第二軟件線程確定是否缺乏可用指令。
9.權(quán)利要求2的處理器,其中所述第一活鎖單元還用來響應(yīng)于確定第一邏輯處理器在對(duì)應(yīng)于第一軟件線程的指令執(zhí)行期間未能前進(jìn)而變?yōu)榧せ睢?br> 10.權(quán)利要求9的處理器,其中如果第一邏輯處理器激活,則所述第二活鎖單元用來把優(yōu)先權(quán)讓給第一邏輯處理器。
11.權(quán)利要求2的處理器,其中所述第二活鎖單元還用來響應(yīng)于確定第二邏輯處理器在對(duì)應(yīng)于第二軟件線程的指令執(zhí)行期間未能前進(jìn)而變?yōu)榧せ睢?br> 12.權(quán)利要求11的處理器,其中如果第二邏輯處理器激活,則所述第一活鎖單元用來把優(yōu)先權(quán)讓給第二邏輯處理器。
13.權(quán)利要求12的處理器,其中所述第一活鎖單元用來在由第二邏輯處理器執(zhí)行的高優(yōu)先權(quán)鎖定操作把優(yōu)先權(quán)讓給第二邏輯處理器。
14.權(quán)利要求1的處理器,其中所述處理器內(nèi)核包括至少一個(gè)附加的邏輯處理器,其中的每一個(gè)附加邏輯處理器耦合到附加的活鎖單元;以及所述至少一個(gè)附加活鎖單元連同所述第一和第二活鎖單元以及所述仲裁器用來在第一邏輯處理器、第二邏輯處理器和所述至少一個(gè)附加邏輯處理器之間強(qiáng)加優(yōu)先權(quán)。
15.一種系統(tǒng),包括存儲(chǔ)器系統(tǒng);以及第一處理器內(nèi)核,其具有至少第一邏輯處理器;以及第二處理器內(nèi)核;第一處理器內(nèi)核還包括第一活鎖單元,以用來確定在第一邏輯處理器中是否存在多個(gè)條件,以及基于滿足所述多個(gè)條件而確定第一邏輯處理器被活鎖;其中,第一活鎖單元還用來響應(yīng)于確定第一邏輯處理器被活鎖而請(qǐng)求對(duì)第二處理器內(nèi)核的停滯。
16.權(quán)利要求15的系統(tǒng),其中所述第一活鎖單元還用來響應(yīng)于確定第一邏輯處理器被活鎖而請(qǐng)求沖刷與第二處理器內(nèi)核相關(guān)的至少一個(gè)微體系結(jié)構(gòu)。
17.權(quán)利要求15的系統(tǒng),其中所述第一活鎖單元還用來基于滿足所述多個(gè)條件而確定第一邏輯處理器是否處于指令饑餓狀態(tài)。
18.權(quán)利要求17的系統(tǒng),其中所述第一活鎖單元還用來響應(yīng)于確定第一邏輯處理器處于指令饑餓狀態(tài)而啟動(dòng)饑餓避免動(dòng)作。
19.權(quán)利要求15的系統(tǒng),還包括用來在第一和第二處理器之間仲裁優(yōu)先權(quán)請(qǐng)求的仲裁器,其中所述優(yōu)先權(quán)請(qǐng)求是基于活鎖確定。
20.權(quán)利要求15的系統(tǒng),其中所述存儲(chǔ)器系統(tǒng)還包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。
21.一種方法,包括確定對(duì)應(yīng)于第一處理器的第一邏輯處理器是否在至少一個(gè)指令的執(zhí)行中未能前進(jìn);如果是的話,聲明對(duì)第二邏輯處理器的停滯操作;確定所述停滯是否導(dǎo)致第一邏輯處理器的前進(jìn);如果不是的話,確定所述第一邏輯處理器是否處于指令饑餓狀態(tài),并且如果是的話則采取饑餓避免動(dòng)作;以及請(qǐng)求對(duì)第二邏輯處理器的停滯。
22.權(quán)利要求21的方法,還包括請(qǐng)求沖刷與第二邏輯處理器相關(guān)的流水線。
23.權(quán)利要求21的方法,還包括請(qǐng)求對(duì)第二處理器的停滯。
24.權(quán)利要求21的方法,其中,對(duì)第二邏輯處理器的停滯操作還包括除非所述第二邏輯處理器處于激活的活鎖避免狀態(tài),否則聲明所述停滯。
25.權(quán)利要求21的方法,其中,對(duì)第二邏輯處理器的停滯操作還包括除非所述第二邏輯處理器正在執(zhí)行高優(yōu)先權(quán)鎖定操作,否則聲明所述停滯。
26.權(quán)利要求21的方法,其中,對(duì)第二邏輯處理器的停滯操作還包括響應(yīng)于確定第一邏輯處理器已經(jīng)在至少預(yù)定時(shí)間量?jī)?nèi)未能前進(jìn)而聲明所述停滯。
27.在多線程處理器中,一種在多個(gè)線程和存儲(chǔ)器活鎖單元之間指定線程優(yōu)先權(quán)的方法,包括確定在該處理器的該存儲(chǔ)器活鎖單元和至少兩個(gè)線程之間是否存在多個(gè)條件,所述至少兩個(gè)線程包括第一線程和一組剩余線程;基于滿足所述多個(gè)條件而確定第一線程是否被活鎖;以及如果是的話,為第一線程而不是該組剩余線程當(dāng)中的任何一個(gè)線程指定優(yōu)先權(quán)。
28.權(quán)利要求27的方法,還包括確定第一線程是否已經(jīng)在至少預(yù)定時(shí)間長(zhǎng)度內(nèi)被活鎖。
29.權(quán)利要求27的方法,還包括采取動(dòng)作以便刺激第一線程前進(jìn)。
30.權(quán)利要求29的方法,其中,采取動(dòng)作還包括向至少其中一個(gè)剩余線程發(fā)出停滯。
31.權(quán)利要求29的方法,其中,采取動(dòng)作還包括響應(yīng)于確定指令側(cè)饑餓而調(diào)用活鎖破壞器。
32.權(quán)利要求31的方法,還包括評(píng)估退休隊(duì)列的一部分是否為空。
33.權(quán)利要求29的方法,其中,采取動(dòng)作還包括響應(yīng)于高速緩存器錯(cuò)失而向仲裁器發(fā)出優(yōu)先權(quán)請(qǐng)求。
34.權(quán)利要求29的方法,其中,采取動(dòng)作還包括向另一個(gè)處理器發(fā)出停滯請(qǐng)求。
35.一種多內(nèi)核多線程處理器,包括多個(gè)處理器內(nèi)核,所述多個(gè)處理器內(nèi)核當(dāng)中的每一個(gè)是能夠執(zhí)行多個(gè)線程的多線程處理器;適于與所述多個(gè)處理器內(nèi)核當(dāng)中的每一個(gè)通信的活鎖縮減器,所述活鎖縮減器從第一處理器內(nèi)核接收關(guān)于第一線程的線程進(jìn)展信息,并且響應(yīng)于來自第一處理器內(nèi)核的關(guān)于所述第一線程的該線程進(jìn)展信息來調(diào)節(jié)所述多個(gè)處理器內(nèi)核當(dāng)中的第二處理器內(nèi)核的第二線程的行為。
36.權(quán)利要求35的處理器,其中所述活鎖縮減器包括多個(gè)活鎖電路,其中的至少一個(gè)活鎖電路與所述多個(gè)處理器內(nèi)核的其中之一相關(guān)。
37.權(quán)利要求35的多內(nèi)核多線程處理器,其中,所述活鎖縮減器包括耦合到所述多個(gè)處理器內(nèi)核的仲裁控制邏輯,所述仲裁控制邏輯用來從所述多個(gè)內(nèi)核接收線程進(jìn)展信息以及仲裁優(yōu)先權(quán),以便確定應(yīng)當(dāng)幫助哪些線程。
38.權(quán)利要求35的多內(nèi)核多線程處理器,其中,每個(gè)處理器內(nèi)核包括線程活鎖單元,其耦合到所述內(nèi)核以便測(cè)量線程活鎖指標(biāo);以及存儲(chǔ)器活鎖單元,其耦合到所述內(nèi)核以便測(cè)量存儲(chǔ)器活鎖指標(biāo)。
39.權(quán)利要求38的多內(nèi)核多線程處理器,還包括用來從所述多個(gè)內(nèi)核當(dāng)中的每一個(gè)的所述線程活鎖單元和/或所述存儲(chǔ)器活鎖單元接收活鎖信息的仲裁器,所述仲裁器用來響應(yīng)于所述活鎖信息而使得一個(gè)線程優(yōu)先于另一個(gè)線程。
全文摘要
本發(fā)明涉及用來在線程不能隨著指令退休而前進(jìn)時(shí)為該線程指定優(yōu)先權(quán)的方法、設(shè)備和系統(tǒng)實(shí)施例。對(duì)于至少一個(gè)實(shí)施例,所述線程是多處理器系統(tǒng)中的多個(gè)激活線程的其中之一,該多處理器系統(tǒng)包括存儲(chǔ)器活鎖破壞器邏輯和/或饑餓避免邏輯。此外還描述了其他實(shí)施例并且要求保護(hù)所述其他實(shí)施例。
文檔編號(hào)G06F9/38GK101031877SQ200580032259
公開日2007年9月5日 申請(qǐng)日期2005年9月13日 優(yōu)先權(quán)日2004年9月23日
發(fā)明者D·博恩斯, K·文卡特拉曼 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1