欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于硬件鎖省略(hle)的后期鎖獲取機(jī)制的制作方法

文檔序號:6366371閱讀:346來源:國知局
專利名稱:用于硬件鎖省略(hle)的后期鎖獲取機(jī)制的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及處理器執(zhí)行領(lǐng)域,并且尤其涉及獲取用于代碼段執(zhí)行的鎖定。
背景技術(shù)
在半導(dǎo)體處理和邏輯設(shè)計方面的進(jìn)步已經(jīng)允許在集成電路器件中可存在的邏輯數(shù)量上的增加。結(jié)果,計算機(jī)系統(tǒng)配置已經(jīng)從系統(tǒng)中的單個或者多個集成電路演進(jìn)成存在于單個集成電路上的多核以及多邏輯處理器。處理器或者集成電路通常包括單個處理器管 芯,其中處理器管芯可包括任意數(shù)量的核或者邏輯處理器。在集成電路上的核以及邏輯處理器數(shù)量的不斷增加使得能夠執(zhí)行更多的軟件線程。然而,可同時執(zhí)行的軟件線程數(shù)量上的增加已經(jīng)造成了關(guān)于使諸軟件線程間共享的數(shù)據(jù)同步的問題。一種在多核或者多邏輯處理器系統(tǒng)中訪問共享數(shù)據(jù)的常用解決方案包括利用鎖來確保對共享數(shù)據(jù)多個訪問上的互斥。然而,執(zhí)行多個軟件線程的日益增加的能力潛在可能導(dǎo)致錯誤競爭和執(zhí)行的串行化。例如,考慮一種持有共享數(shù)據(jù)的散列表。利用鎖系統(tǒng),程序員就可對整個散列表加鎖,從而允許一個線程訪問整個散列表。然而,其它線程的吞吐量和性能潛在可能受到不利影響,因為在鎖被釋放之前他們不能訪問散列表中的任何項?;蛘撸⒘斜碇械拿總€項可被加鎖。然而,這增加了編程復(fù)雜度,因為程序員不得不考慮在散列表之內(nèi)更多的鎖。另一種數(shù)據(jù)同步技術(shù)包括使用事務(wù)性存儲器(TM)。通常事務(wù)性執(zhí)行包括投機(jī)地執(zhí)行多個微操作,操作,或者指令的編組。在上面的例子中,兩個線程皆在散列表內(nèi)執(zhí)行,且其訪問被監(jiān)控/跟蹤。如果兩個線程訪問/改變相同的項,則可能中斷這兩個事務(wù)中的一個來解決沖突。然而,一些應(yīng)用程序可能不能利用事務(wù)性存儲器編程,結(jié)果,通常稱為硬件鎖省略(HLE)的硬件數(shù)據(jù)同步技術(shù)被用于取消鎖以獲得類似于事務(wù)性存儲器的同步效果。結(jié)果,HLE能夠檢測并且預(yù)側(cè)代碼的臨界段。但是,對于事務(wù)性存儲器或者通過HLE在臨界段的執(zhí)行期間,當(dāng)HLE預(yù)側(cè)不正確的時候,試探性訪問跟蹤使存儲器溢出,或者遇到不可取消事件,通常,中斷并且重新開始臨界段。然而,中斷臨界段可能浪費了在中斷之前所執(zhí)行的操作執(zhí)行周期。


本發(fā)明通過舉例進(jìn)行說明并且不希望受到附形的限制。圖I示出包括后期鎖獲取機(jī)制的多處理部件處理器的實施例。圖2示出對于臨界段執(zhí)行后期鎖獲取的邏輯的實施例。圖3a示出對于當(dāng)前臨界段執(zhí)行后期鎖獲取方法的流程圖的實施例。
圖3b示出在對于當(dāng)前臨界段的后期鎖獲取期間停止后續(xù)臨界段操作方法的流程圖的實施例。圖3c示出在對于當(dāng)前臨界段的后期鎖獲取期間停止后續(xù)臨界段操作方法的流程圖的另一個實施例。詳細(xì)說明在下面的說明中,闡述了很多特定的細(xì)節(jié),比如硬件鎖省略(HLE)的特定硬件支持的例子、特定的跟蹤/元數(shù)據(jù)方法、處理器中局部/存儲器的特定類型、以及存儲器存取和位置的特定類型等等,以便提供對本發(fā)明的徹底理解。但是,本領(lǐng)域技術(shù)人員將會明白可不必采用這些細(xì)節(jié)來實施本發(fā)明。在其它的例子中,沒有詳細(xì)地描述公知的組件或者方法,比如軟件中臨界段的編碼,臨界段的劃界,特定的多核和多線程處理器體系結(jié)構(gòu),中斷生成/處理,高速緩存組織,和微處理器特定的操作細(xì)節(jié),以免帶來對本發(fā)明不必要的混淆。此處所描述的方法和裝置是用于在臨界段執(zhí)行期間的后期鎖(Iate-Iock)獲取的方案。具體地說,主要關(guān)于多核處理器計算機(jī)系統(tǒng)來討論后期鎖獲取方案。但是,用于后期鎖獲取方案的方法和裝置并不因此受限,因為它們可能在任何集成電路裝置或者系統(tǒng)上或與其相關(guān)聯(lián)以及與諸如執(zhí)行臨界段的硬件/軟件線程的其它資源結(jié)合地實現(xiàn),所述集成電路裝置或者系統(tǒng)比如為蜂窩電話,個人數(shù)字助理,嵌入式控制器,移動式平臺,桌面平臺,和服務(wù)器平臺。此外,還關(guān)于在硬件鎖省略(HLE)期間的臨界段執(zhí)行來主要地討論后期鎖獲取方案。然而,在任何臨界段執(zhí)行方案期間,比如在事務(wù)性執(zhí)行期間,都可使用后期鎖的獲取。參考圖1,示出多核處理器100的實施例,其能夠執(zhí)行用于臨界段的后期鎖獲取。如圖所示,物理處理器100包括任何數(shù)量的處理部件。處理部件指代線程、進(jìn)程、上下文、邏輯處理器、硬件線程、核和/或任何可能共享對處理器資源訪問的處理部件,比如保留單元、執(zhí)行單元、流水線和上級高速緩存/存儲器。物理處理器通常指代集成電路,其可包括許任何數(shù)量的處理部件,比如核或者硬件線程。核通常指代位于集成電路上能夠維持獨立體系結(jié)構(gòu)狀態(tài)的邏輯,其中每一個獨立維持的體系結(jié)構(gòu)狀態(tài)都與至少一些專用執(zhí)行資源有關(guān)。與核相反,硬件線程通常指代位于集成電路上能夠維持獨立體系結(jié)構(gòu)狀態(tài)的任何邏輯,其中獨立維持的體系結(jié)構(gòu)狀態(tài)共享對執(zhí)行資源的訪問。如圖I中所示出的,物理處理器100包括雙核,核101和102,它們共享對上級高速緩存110的訪問。此外,核101包括兩個硬件線程IOla和IOlb,而核102包括兩個硬件線程102a和102b。因此,諸如操作系統(tǒng)或者應(yīng)用程序的軟件實體可能將處理器100視為四個獨立的處理器,同時處理器100能夠執(zhí)行四個軟件線程。如同所看見的,當(dāng)某些資源是共享的而其它資源專用于一個體系結(jié)構(gòu)狀態(tài)的時候,硬件線程和核的術(shù)語之間的界線是重疊的。然而通常,操作系統(tǒng)將核和硬件線程視為獨立的邏輯處理器,其中操作系統(tǒng)能夠獨立地在每個邏輯處理器上調(diào)度操作。因此,處理部件包括任何能夠維持上下文的上述實體,比如核,線程,硬件線程,邏輯處理機(jī),虛擬機(jī),或者其它的處理資源。在一個實施例中,處理器100是能夠并行地執(zhí)行多個線程的多核處理器。這里,第一線程與體系結(jié)構(gòu)狀態(tài)寄存器IOla相關(guān)聯(lián),第二線程與體系結(jié)構(gòu)狀態(tài)寄存器IOlb相關(guān)聯(lián),第三線程與體系結(jié)構(gòu)狀態(tài)寄存器102a相關(guān)聯(lián),并且第四線程與體系結(jié)構(gòu)狀態(tài)寄存器102b、相關(guān)聯(lián)。在一個實施例中,對處理器100中的處理部件的參考,包括對核101和102、以及線程101a、101b、102a和102b的參考。在另一個實施例中,處理部件指的是在處理域的層級中在相同級別上的元件。例如,核101和102位于相同的域級別中,線程IOla和IOlb位于核101中的相同域級別中,而線程101a、101b、102a和102b位于核101和102中的相同域
級別中。盡管處理器100可包括不對稱的核,即具有不同配置、功能單元和/或邏輯的核,但是在圖I中示出對稱的核。結(jié)果,將不會詳細(xì)地討論示出為與核101相同的核102,以避免使說明模糊不清。如同所說明的,在體系結(jié)構(gòu)狀態(tài)寄存器IOlb中復(fù)制了體系結(jié)構(gòu)狀態(tài)寄存器101a,因此能夠為處理部件IOla和處理部件IOlb存儲獨立的體系結(jié)構(gòu)狀態(tài)/上下文。還可能為 線程IOla和IOlb復(fù)制其它較小的資源,比如指令指針和在重命名分配器邏輯130中的重命名邏輯??赏ㄟ^分割來共享一些資源,比如在重排序/退役單元135中的重排序緩沖器、ILTB 120、加載/存儲緩沖器180以及隊列。可徹底地共享其它的資源,比如通用內(nèi)部寄存器、頁表基址寄存器、低級數(shù)據(jù)-高速緩存以及數(shù)據(jù)-TLB 110、執(zhí)行單元140以及無序單元135。注意可以任何共享核101資源的方式來實現(xiàn)線程??偩€接口模塊105和諸如系統(tǒng)存儲器175、芯片組、北橋或其它的集成電路等處理器100外部的設(shè)備通信。存儲器175可專用于處理器100或被系統(tǒng)中的其它設(shè)備共享。存儲器175的例子包括動態(tài)隨機(jī)存取存儲器(DRAM),靜態(tài)RAM(SRAM),非易失性存儲器(NV存儲器),以及長期存儲器。通常地,總線接口單元105包括輸入/輸出(I/O)緩沖器以發(fā)送和接收在互連170上的總線信號?;ミB170的例子包括射電收發(fā)器邏輯(GTL)總線,GTL+總線,雙倍數(shù)據(jù)率(DDR)總線,并發(fā)總線,差分總線,高速緩存相干總線,點對點總線,多站總線或者其它實現(xiàn)任何已知總線協(xié)議的已知互連。如所示,總線接口單元105還與上級高速緩存110通信。上級或遠(yuǎn)端高速緩存110用于高速緩沖近期在元件上所取回和/或操作的元素。注意上級或遠(yuǎn)端指的是高速緩存級別的增加或者更遠(yuǎn)離執(zhí)行單元。在一個實施例中,上級高速緩存110是第二級數(shù)據(jù)高速緩存。但是,上級高速緩存110并不如此受到限制,因為它可能是被稱為蹤跡高速緩存的指令高速緩存或包括該指令高速緩存。蹤跡高速緩存可代替地耦合在譯碼器125之后以存儲近期解碼的蹤跡。模塊120還可能包括用于預(yù)測執(zhí)行/采用分支的分支目標(biāo)緩沖器和用于存儲指令的地址翻譯項的指令-翻譯緩沖器(I-TLB)。這里,能夠進(jìn)行投機(jī)執(zhí)行的處理器可能預(yù)取回以及投機(jī)地執(zhí)行所預(yù)測的分支。解碼模塊125與取回單元120相耦合以解碼取回的元素。在一個實施例中,處理器100與指令集體系結(jié)構(gòu)(ISA)相關(guān)聯(lián),其定義/規(guī)定在處理器100上的可執(zhí)行指令。這里,由ISA所識別的通常機(jī)器代碼指令包括一部分稱為操作碼(opcode)的指令,其參考/規(guī)定要執(zhí)行的指令或操作。在一個例子中,分配器和重命名器區(qū)塊130包括分配器以以保留諸如為存儲指令處理結(jié)果的寄存器堆之類的資源。但是,線程IOla和IOlb可能能夠無序地執(zhí)行,其中分配器和重命名器區(qū)塊130還保留其它的資源,諸如重排序緩沖器以跟蹤指令結(jié)果。單元130還可包括寄存器重命名器來將程序/指令參考寄存器重命名為其它的在處理器100內(nèi)部的寄存器。
重排序器/退役單元135包括諸如上述的重排序器緩沖器以及加載/存儲緩沖器180之類的組件以支持無序執(zhí)行以及無序執(zhí)行的指令的稍后退役。在一個實施例中,緩沖器180能夠保存字段/值以指示將要阻塞/停止的相關(guān)的存儲器存取,直到完成在進(jìn)程中對臨界段獲得后期鎖。盡管將緩沖器180顯示為位于一個區(qū)域中,緩沖器180以及后期鎖獲取邏輯不因此受到限制。事實上,跟蹤邏輯180可能分布在整個處理器100上,此外還與處理器流水線的前端或者后端的任何部分相關(guān)聯(lián)。在一個實施例中,調(diào)度器以及執(zhí)行單元區(qū)塊140包括在執(zhí)行單元上調(diào)度指令/操作的調(diào)度器單元。事實上,可根據(jù)它們的類型可用性來在執(zhí)行單元上調(diào)度指令/操作。例如,在具有可用的浮點執(zhí)行單元的執(zhí)行單元的端口上來調(diào)度浮點指令。還包括與執(zhí)行單元相關(guān)聯(lián)的寄存器堆以存儲信息指令處理結(jié)果。示例性的執(zhí)行單元包括浮點執(zhí)行單元、整型執(zhí)行單元、跳轉(zhuǎn)執(zhí)行單元、加載執(zhí)行單元、存儲執(zhí)行單元及其它已知的執(zhí)行單元。從上面可以發(fā)現(xiàn),如所說明的,處理器100能夠執(zhí)行至少四個軟件線程。此外,在 一個實施例中,處理器100能夠進(jìn)行事務(wù)性執(zhí)行。事務(wù)性執(zhí)行通常包括將多個指令或操作編組為事務(wù)、代碼的原子段或者代碼的臨界段。在一些情況中,字指令的使用引用宏-指令,其由多個操作組成。在處理器中,通常投機(jī)地執(zhí)行事務(wù)并且在事務(wù)的結(jié)尾提交事務(wù)。如同此處所使用的,事務(wù)的未決指的是事務(wù)已經(jīng)開始執(zhí)行并且沒有提交或中斷,即未決。通常,當(dāng)事務(wù)仍未決時,跟蹤存儲器中的被加載和寫入的位置。當(dāng)那些存儲器位置成功確認(rèn)時,提交事務(wù),并且使事務(wù)期間所作的更新全局可見。然而,如果在事務(wù)未決期間事務(wù)是無效的,那么重新開始事務(wù)而不使更新全局可見。通常,將軟件劃界歸入編碼來識別事務(wù)。例如,可通過指示事務(wù)開始以及事務(wù)終止的指令來對事務(wù)進(jìn)行分組。然而,事務(wù)執(zhí)行通常利用程序員或者編譯器來插入事務(wù)的開始以及終止指令。因此,在一個實施例中,處理器100能夠進(jìn)行硬件鎖省略(HLE),其中硬件能夠取消臨界段的鎖定并且同時執(zhí)行它們。這里,沒有事務(wù)性支持的預(yù)編譯的二進(jìn)制碼(binaries)或者利用鎖定編程的新編譯的二進(jìn)制編碼能夠通過HLE的支持從同時執(zhí)行中受益。由于提供了透明的兼容性,HLE通常包括用于檢測臨界段并跟蹤存儲器存取的硬件。事實上,由于取消了確保對數(shù)據(jù)排除的鎖,可以以如同在事務(wù)執(zhí)行期間類似的方式來跟蹤存儲器存取。因而,可以在事務(wù)執(zhí)行期間利用在此討論的后期鎖獲取方案,HLE,另一個存儲器存取跟蹤方案,或者它們的組合。因此,在下面臨界段執(zhí)行的討論可能包括對事務(wù)臨界段或者由HLE檢出的臨界段的參考。在一個實施例中,利用所訪問的存儲設(shè)備來跟蹤來自臨界段的訪問。例如,利用下級數(shù)據(jù)高速緩存150來跟蹤來自臨界段的訪問;與事務(wù)性執(zhí)行或者HLE相關(guān)聯(lián)。高速緩存150存儲近期訪問的元素,例如數(shù)據(jù)操作數(shù),其可能被保持為存儲器相干狀態(tài),例如修改、獨占、共享以及無效(MESI)狀態(tài)。高速緩存150可以組織為完全相關(guān)聯(lián)、集合相關(guān)聯(lián)、直接映射或者其它已知的高速緩存組織。雖然沒有說明,但D-TLB可與高速緩存150相關(guān)聯(lián)以存儲近期對物理地址翻譯的虛擬/線性化。如所示,線151、152和153包括區(qū)段以及字段,例如區(qū)段151a和字段151b。在一個實施例中,字段151b、152b和153b以及區(qū)段151a、152a和153a屬于組成線151,152和153的相同存儲器陣列的一部分。在另一個實施例中,字段151b、152b和153b是從線151a、152a和153a通過單獨的專用端口訪問的單獨陣列的一部分。然而,即使當(dāng)字段151b、152b和153b是單獨陣列的一部分時,字段151b、152b和153b分別與區(qū)段151a、152a和153a相關(guān)聯(lián)。結(jié)果,當(dāng)參考高速緩存150的線151時,線151可能包括區(qū)段151a、151b或它們的組合。例如,當(dāng)從線151加載時,可以從區(qū)段151a加載。此外,當(dāng)設(shè)置跟蹤字段來跟蹤來自線151的加載時,訪問字段151b。在一個實施例中,線、位置、區(qū)塊或字——如線151a、152a和153a——能夠存儲多個元素。元素指的是任何指令、操作數(shù)、數(shù)據(jù)操作數(shù)、變量或其它邏輯值的分組,其通常存儲在存儲器中。作為例子,高速緩存 線151在區(qū)段151a中存儲四個元素,如四個操作數(shù)。存儲在高速緩存線151a中的元素可處于打包或壓縮狀態(tài)以及解壓縮狀態(tài)中。此外,可以將元素與線的邊界,集合,或者高速緩存150的路線對準(zhǔn)或者不對準(zhǔn)地存儲在高速緩存150中。在下面將關(guān)于示例性的實施例來更詳細(xì)地討論存儲器150。高速緩存150和其它在處理器100中的特征和設(shè)備都對邏輯值進(jìn)行存儲和/或操作。通常,還將邏輯電平、邏輯值或邏輯的值的使用稱為I和0,其簡單地表示二進(jìn)制邏輯狀態(tài)。例如,I指的是高邏輯電平,而O指的是低邏輯電平。已經(jīng)使用了在計算機(jī)系統(tǒng)其它的值表示,如邏輯值或二進(jìn)制值的十進(jìn)制和十六進(jìn)制表示。例如,以十進(jìn)制數(shù)10為例,其按二進(jìn)制表示為1010,按十六進(jìn)制表示為字母A。在圖I說明的實施例中,跟蹤對線151、152和153的訪問以支持臨界段的執(zhí)行。訪問包括諸如讀取、寫入、存儲、加載、收回、監(jiān)聽或其它已知的對存儲器單元的訪問等操作。使用諸如字段151b、152b和153b之類的訪問跟蹤字段來跟蹤對它們相應(yīng)存儲器線的訪問。例如,存儲器線/區(qū)段151a與相應(yīng)的跟蹤字段151b相關(guān)聯(lián)。這里,訪問跟蹤字段151b與高速緩存線151a相關(guān)并相對應(yīng),因為跟蹤字段151b包括作為高速緩存線151 —部分的位。如所示,相關(guān)聯(lián)可通過物理布局,或者其它的相關(guān)聯(lián),如將訪問跟蹤字段151關(guān)聯(lián)或者映射到硬件或軟件查找表中的存儲器線151a或151b。如簡化說明的例子,假定訪問跟蹤字段151b、152b和153b包括兩個事務(wù)位第一讀跟蹤位和第二寫跟蹤位。在缺省狀態(tài)中——即第一邏輯值,在訪問跟蹤字段151b、152b和153b中的第一和第二位分別表示高速緩存線151、152和153在臨界段執(zhí)行期間沒有被訪問。假定在臨界段中遇到從線151a加載的加載操作。將第一讀跟蹤位從缺省狀態(tài)更新為第二訪問狀態(tài),例如第二邏輯值。這里,持有第二邏輯值的第一讀取跟蹤位表示從高速緩存線151的讀取/加載發(fā)生在臨界段執(zhí)行期間??梢园搭愃品绞絹硖幚泶鎯Σ僮饕愿碌谝粚懭敫櫸粊肀砻髟谂R界段執(zhí)行期間發(fā)生了對存儲器單元的存儲。因而,如果檢查了在與線151相關(guān)聯(lián)的字段151b中的跟蹤位,并且事務(wù)位表示缺省狀態(tài),那么高速緩存線151在臨界段的未決期間沒有被訪問。相反地,如果第一讀取跟蹤位表示為第二值,那么高速緩存線151在臨界段執(zhí)行期間先前已被讀取。此外,如果第一寫入跟蹤位表示第二值,那么在臨界段的未決期間就發(fā)生了對線151的寫入。訪問字段151b、152b和153b可用于支持任何類型的事務(wù)性執(zhí)行或HLE。在其中處理器100能夠進(jìn)行硬件事務(wù)性執(zhí)行的一個實施例中,訪問字段151b、152b和153b將檢測沖突并且執(zhí)行確認(rèn)。在其中硬件事務(wù)性存儲器(HTM)、軟件事務(wù)性存儲器(STM)或它們的組合用于事務(wù)性執(zhí)行的另一個實施例中,訪問跟蹤字段151b、152b和153b提供相似的跟蹤以及確認(rèn)功能。
如同第一個例子中如何將訪問字段——特別是跟蹤位——潛在地用于幫助事務(wù)性執(zhí)行那樣,序列號為 11/349,787 的題為 “Hardware Acceleration for A SoftwareTransactional Memory System(用于軟件事務(wù)性存儲器系統(tǒng)的硬件加速)”的共同待審批申請公開了訪問字段/事務(wù)位對于加快STM的使用。作為另ー個例子,在序列號為11/479,902 以及代理記錄編號為 042390. P23547、題為 “Global Overflow Method forVirtualized Transactional Memory (用于虛擬化事務(wù)性存儲器的全局溢出方法)”的共同待審批申請中論述了包括將訪問字段/事務(wù)跟蹤位的狀態(tài)存儲到第二存儲器中的擴(kuò)展/虛擬化事務(wù)性存儲器。轉(zhuǎn)向圖2,示出對于臨界段啟動后期鎖獲取邏輯的實施例。如上所述,事務(wù)通常由開始事務(wù)以及終止事務(wù)指令來劃分,其提供了對臨界段容易的標(biāo)識。但是,HLE包括檢測/標(biāo)識以及可能地預(yù)測臨界段、取消劃分臨界段的鎖、用于對臨界段異常中斷的重新運行的檢查點寄存器狀態(tài)、跟蹤嘗試的存儲器更新以及檢測潛在性數(shù)據(jù)沖突。在檢測/標(biāo)識臨界段中的ー個困難是在常規(guī)鎖指令以及區(qū)別臨界段的鎖/鎖解除指令之間劃出輪廓,其中常規(guī)鎖指令沒有定義臨界段。
在一個實施例中,對于HLE,由鎖指令(即開始臨界段指令)以及匹配的鎖解除指令(即終止臨界段指令)定義臨界段。鎖指令可包括從尋址単元的加載——即檢查鎖是否可用,以及對尋址單元的修改/寫入——即對該尋址單元進(jìn)行更新以獲取鎖??梢杂米麈i指令的幾個指令的例子包括比較和交換指令、位測試和設(shè)置指令以及交換和加法指令。在英特爾的IA-32和IA-64指令集中,上述指令包括CMPXCHG、BTS和XADD,如同在以上討論的英特爾 .64和IA-32指令集文件中所描述的。作為其中檢出/認(rèn)識諸如CMPXCHG、BTS和XADD的預(yù)定指令的例子,檢測邏輯和/或解碼邏輯檢測到利用操作碼字段或指令其它字段的指令。作為例子,CMPXCHG與以下操作碼相關(guān)0F B0/r, REX+0F BO/r和REX. W+0F Bl/r。在另ー個實施例中,利用與指令有關(guān)的操作來檢測鎖指令。例如,在x86中以下三個存儲器微-操作通常用于執(zhí)行原子存儲器更新來指示可能的鎖指令(I)具有操作碼0x63的Load_Store_Intent (L_S_I) ; (2)具有操作碼0x76的STA ;以及(3)具有操作碼0x7F的STD。這里,L_S_I以獨占擁有狀態(tài)獲取存儲器単元并且執(zhí)行對存儲器単元的讀取,盡管STA和STD操作修改并且寫入存儲器単元。換句話說,檢測邏輯搜索有存儲意向的加載(L_S_I)來定義臨界段的開始。注意鎖指令可能具有任意數(shù)量的其它與讀取、寫入、修改存儲器操作相關(guān)聯(lián)的非-存儲器以及其它存儲器操作。通常利用堆棧,例如鎖堆棧205來保持項,例如與鎖指令相關(guān)的項206。鎖指令項(LIE) 206可能包括任意數(shù)量的字段來存儲臨界段相關(guān)的信息,如鎖指令存儲物理地址(LIStr PA)、鎖指令加載值以及加載大小、解鎖值、鎖指令存儲值以及大小、鎖定值、微操作計數(shù)、釋放標(biāo)志、后期鎖獲取標(biāo)志以及最后指令指針字段。這里與鎖指令相對應(yīng)的鎖釋放指令劃分臨界段的末端。檢測邏輯搜索對應(yīng)于由鎖指令修改的地址的鎖釋放指令。注意由鎖指令修改的地址可保持在鎖堆棧205上的LIE206中。結(jié)果,在一個實施例中,鎖釋放指令包括任何將由相應(yīng)的鎖指令所修改的地址設(shè)置回解鎖值的存儲操作。將由存儲在鎖堆棧206中的L_S_I指令所引用的地址與后續(xù)的存儲指令相比較來檢測相應(yīng)的鎖釋放指令。可以在題為“A CRITICAL SECTION DETECTION ANDPREDICTION MECHANISM FOR HARDWARE LOCK ELISION(對硬件鎖省略的臨界段檢測和預(yù)測機(jī)制)”的申請序列號為11/599,009的共同待審批申請中找到更多的有關(guān)檢測和預(yù)測臨界段的信息。換句話說,在一個實施例中,對于HLE,臨界段由L_S_I指令和相應(yīng)的鎖釋放存儲指令來劃分。類似的,由開始事務(wù)指令和終止事務(wù)指令來定義事務(wù)的臨界段。因此,對開始臨界段操作/指令的參考包括任何開始HLE、事務(wù)性存儲器或其它臨界段的指令,而對終止臨界段操作/指令的參考包括開始HLE、事務(wù)性存儲器或其它臨界段終止指令。在一個實施例中,訪問緩沖器——如加載緩沖器220和/或存儲緩沖器280將保持與存儲器存取操作相關(guān)聯(lián)的訪問項。每個訪問緩沖器項都包括阻塞代碼字段/區(qū)段。作為 默認(rèn),阻塞代碼字段將保持第一值,如未阻塞值,以指示可以自由地分配相應(yīng)的存儲器存取操作。但是,當(dāng)對于當(dāng)前臨界段啟動后期鎖獲取時,與后續(xù)臨界段相關(guān)聯(lián)的用于緩沖器項的阻塞代碼字段被更新為第二值或者阻塞值以指示將阻塞/停止相關(guān)聯(lián)的存儲器存取操作。如同所說明的,加載緩沖器220包括多個加載緩沖器項,例如項228-233。當(dāng)遇到加載操作的時候,在加載緩沖器220中創(chuàng)建/存儲加載緩沖器項。在一個實施例中,加載緩沖器220以程序順序存儲加載緩沖器項,即在程序代碼中對指令或操作進(jìn)行排序的順序。這里,由加載尾指針235來參考最近的加載緩沖器項228,即最近存儲的加載緩沖器項。相反的,由加載頭指針236來參考最早的加載緩沖器項230,其不是高級加載。在按順序執(zhí)行的處理元素中,以存儲在加載緩沖器中的程序順序來執(zhí)行加載操作。結(jié)果,首先執(zhí)行最早的緩沖器項,并且將加載頭指針236重新指向下ー個最早的項,例如項229。相反的,在無序機(jī)器中,以任意的順序來執(zhí)行操作。但是,一般會在程序順序中移除記錄,即從加載緩沖器中去分配。結(jié)果,加載頭指針236和加載尾指針235在兩種類型的執(zhí)行之間以相似的方式進(jìn)行操作。加載緩沖器項230可能包括任何類型的信息,諸如存儲器更新值、指針值、對相關(guān)加載操作的參考、對與加載操作相關(guān)地址的參考、從地址加載的值及其它相關(guān)加載緩沖值、標(biāo)志或者參考。注意存儲緩沖器280可能以相似的方式來操作以加載緩沖器220,如同存儲緩沖器280所描述的包括項281-286以及用于項283的阻塞代碼字段283a。此外,加載緩沖器220以及存儲緩沖器280兩者分別包括高級加載區(qū)段250以及280。結(jié)果,在事務(wù)性執(zhí)行或者HLE期間,預(yù)先退出訪問、后退出訪問或者它們的混合可用來更新訪問跟蹤位271-273a-b。題為 “A POST-RETIRE SCHEME FOR TRACKING TENTATIVE ACCESSES DURINGTRANSACTIONAL EXE⑶TION(用于跟蹤在事務(wù)性執(zhí)行期間嘗試性訪問的后退出方案)”的申請序列號為11/517,029的共同待審批申請更加詳細(xì)地討論了用于假設(shè)存儲器存取的后退出訪問跟蹤。此外,申請序列號為11/936,243的題為“A PRE-POST RETIRE HYBRIDHARDWARE LOCK ELISION (HLE) SCHEME (預(yù)先-后退出混合硬件鎖省略(HLE)方案)”的共同未決申請討論了用于嘗試性訪問跟蹤的混合方案。在一個實施例中,每個加載緩沖器項——如項230包括阻塞代碼字段,例如阻塞代碼字段225。作為ー個例子,假定與加載項230有關(guān)的有存儲意圖的加載(LSI)操作參考系統(tǒng)存儲器地址。無論初始擁有的且位于高速緩存線271a中或者響應(yīng)于對高速緩存270的未命中所取回的如何,假定由系統(tǒng)存儲器地址參考的元素當(dāng)前駐留在高速緩存線271a中。在該例子中,高速緩存線271a保持用于在臨界段執(zhí)行期間要訪問的地址或地址范圍的鎖值。因此,在加載線271a中讀取鎖值。這里,確定鎖271a是否保存鎖定值或者解鎖值。當(dāng)分配加載操作時,存儲器更新字段225被默認(rèn)地更新為解鎖值以指示能夠分配處理加載操作。注意更新位、值或者字段不一定指示對位、值或者字段的改變。例如,如果字段225已經(jīng)設(shè)置為邏輯0,那么更新為邏輯O可能包括將邏輯O再寫入字段225、以及沒有動作而使字段225保持邏輯O。與上述討論的方案相反,假定加載項230與后續(xù)的臨界段——如后續(xù)的開始臨界段操作相關(guān)聯(lián)。此外,當(dāng)前臨界段遇到后期鎖獲取事件。后期鎖獲取事件的例子包括計時器的到期、高速緩存裝置是滿的以及檢測不可撤回事件。在下面討論關(guān)于后期鎖獲取事件的更多細(xì)節(jié)。響應(yīng)于檢測后期鎖獲取事件,將字段225更新為阻塞值以阻塞/停止后續(xù)的開始臨界段操作。在下面還將更詳細(xì)地討論后續(xù)的開始臨界段操作的阻塞和停止以及用于后續(xù)臨界段檢查點的阻塞創(chuàng)建。
在一個實施例中,當(dāng)前臨界段確定在啟動后期鎖獲取之前是否滿足了預(yù)先的條件。預(yù)先條件的第一例子包括等待未決填充緩沖器項被全局地排序。這里,當(dāng)對高速緩存270的訪問未命中吋,即線不是呈現(xiàn)修改或者獨占的狀態(tài)中,那么分配填充緩沖器項以依據(jù)檢索來接收所請求的元素。在一個實施例中,全局排序包括至少在后期鎖獲取存儲之前的存儲的任何排序,以保證存儲器相干性,即沒有存儲器排序違規(guī)。用于后期鎖獲取可能的預(yù)先條件的另ー個例子包括確定當(dāng)前臨界段的開始臨界段操作已經(jīng)將鎖堆棧更新為鎖值。正如以上所討論的,開始臨界段操作可能包括加載/讀取以確定鎖是否保持鎖定或者解鎖值,以及存儲操作以對鎖位置執(zhí)行鎖值的存儲。但是,在HLE中鎖被取消并且嘗試性地執(zhí)行臨界段。因此,沒有執(zhí)行與存儲緩沖器280中的存儲項283相關(guān)聯(lián)的、用于更新線271a的存儲,而是將更新鎖堆棧205。事實上,當(dāng)嘗試后期鎖獲取的時候,來自鎖堆棧項206的鎖值用于將高速緩存存儲器線271a更新為鎖定值。換句話說,對于HLE,沒有獲取在高速緩存線271a中的鎖,直到通過用來自項206的鎖定值更新高速緩存線271a來執(zhí)行后期鎖。但是,在一個實施例中,響應(yīng)于后期鎖獲取的啟動,來阻塞/停止存儲,例如高級存儲。因而,如果沒有執(zhí)行用鎖值更新鎖堆棧項206的存儲且啟動了后期鎖獲取,那么可能發(fā)生死鎖的情況。這里,沒有對鎖堆棧205執(zhí)行用于后期鎖獲取的鎖值的存儲,并且現(xiàn)在在后期鎖獲取期間停止那個存儲。換句話說,后期鎖獲取在等待鎖定堆棧205的存儲,并且存儲在等待后期鎖獲取在它更新鎖堆棧205之前完成。因此,在一個實施例中,預(yù)先條件包括在為當(dāng)前臨界段啟動后期鎖獲取之前確定對于具有用于當(dāng)前臨界段鎖值的鎖堆棧205的存儲已經(jīng)執(zhí)行。如上所述,在一個實施例中,在對于當(dāng)前臨界段的后期鎖獲取期間,當(dāng)遇到后續(xù)的臨界段時,停止后續(xù)的臨界段。在一個實施例中,停止臨界段包括阻塞諸如與加載項230相關(guān)聯(lián)的LSI之類的開始臨界段操作創(chuàng)建檢查點。通常,當(dāng)LSI解除的時候創(chuàng)建檢查點。因此,在對于當(dāng)前臨界段的后期鎖獲取期間,將阻塞諸如與加載項230相關(guān)聯(lián)的LSI之類的開始后續(xù)臨界段操作。這里,更新邏輯210將字段225更新為阻塞值。響應(yīng)于字段225持有阻塞值,沒有分派與項230相關(guān)聯(lián)的LSI。作為ー個例子,調(diào)度器沒有基于持有阻塞值的字段225來調(diào)度后續(xù)臨界段LSI。注意更新邏輯可能將任何數(shù)量的類似于字段225的字段設(shè)置為阻塞值以阻塞/停止任何其它的操作。
在一個實施例中,阻塞值包括標(biāo)識符(ID)。結(jié)果,當(dāng)解鎖諸如與項230相關(guān)聯(lián)的加載之類的存取操作的條件滿足的時候,由更新邏輯210廣播該ID。釋放——即解鎖包括ID的全部字段。例如,當(dāng)字段225包括諸如M0B_BL0CK_C0DE值之類的阻塞值時,就響應(yīng)于存儲緩沖器的枯竭,由更新邏輯210來廣播ID。釋放——即解鎖與ID相匹配的所有加載項。作為另ー個例子,字段225可以是HLE_BL0CK_C0DE字段。這里,響應(yīng)于后期鎖獲取的完成,將ID廣播給在加載緩沖器220中的項,加載緩沖器220釋放/解鎖與ID匹配的加載項。如上所述,在一個實施例中,在后期鎖獲取期間停止了高級存儲。這里諸如邏輯225的邏輯將諸如字段283a的字段更新為阻塞值停止高級存儲。這里,避免了諸如鎖釋放操作之類的終止臨界段操作與后期鎖獲取操作之間的競爭狀態(tài)。作為ー個例子,假定在高速緩存線271a中保持鎖。取消獲取鎖的開始臨界段操作并且在鎖堆棧項206中存儲獲得鎖的值。然后,檢測出后期鎖獲取事件。這里,引用解鎖值的鎖釋放存儲將可能與后期鎖獲取存儲爭用以獲得鎖。結(jié)果,停止高級存儲分派以避免這種潛在的爭用。注意,如所不,鎖堆棧205包括多個堆棧項。在一個實施例中,鎖堆棧205能夠為 諸如嵌套臨界段之類的多個臨界段維持多個項。作為ー個例子,當(dāng)將要為一個嵌套在堆棧205上的臨界段執(zhí)行后期鎖獲取的時候,將為其他在堆棧205上參考的臨界段執(zhí)行后期鎖獲取。為了說明,由LIE206參考的臨界段是在由LIE 207參考的第二個臨界段之內(nèi)所嵌套的最里面的臨界段。此外,第二臨界段嵌套在與項208相關(guān)聯(lián)的最外面的臨界段之內(nèi)。這里,當(dāng)要為最里面的臨界段執(zhí)行后期鎖獲取的時候,還為第二個和最外面的臨界段執(zhí)行后期鎖獲取。但是,在另ー個實施例中,當(dāng)已經(jīng)對最里面的臨界段觀察到鎖釋放并且為第二個臨界段執(zhí)行后期鎖獲取的時候,就為最外面的臨界段,而不是最里面的臨界段執(zhí)行后期鎖獲取。換句話說,在該實施例中對于所有的位于比當(dāng)前后期鎖獲取的更高嵌套深度的臨界段來執(zhí)行后期鎖獲取。轉(zhuǎn)向圖3a_3c,示出了在臨界段的硬件鎖省略執(zhí)行期間所進(jìn)行的后期鎖獲取的方法的流程圖實施例。雖然該流程圖以合理地線性方式說明了流程,但是在不同實施例中流程可以任何順序發(fā)生。例如,可在確定是否當(dāng)前臨界段鎖值是否已經(jīng)更新鎖堆棧之后發(fā)生確定是否全局上觀察到過濾器緩沖器項。在流程305中,檢測到后期鎖獲取事件。這里,已經(jīng)檢測到并且取消了開始臨界段操作。例如,將鎖值存儲在位于鎖堆棧上的鎖指令項(LIE)中,該鎖值將獲取臨界段的鎖。后期鎖獲取事件的例子包括計時器的到期,填滿的高速緩存集合,以及不可撤回事件。在一個實施例中,計時器的到期包括監(jiān)視計時器的到期。這里,響應(yīng)于檢測到具有存儲意圖(LSI)操作和/或分配了相關(guān)聯(lián)的LIE來啟動監(jiān)視計時器。如果在監(jiān)視計時器期滿之前沒有檢測出相應(yīng)的鎖釋放指令那么執(zhí)行后期鎖獲取。換句話說,當(dāng)預(yù)知臨界段開始并且在相當(dāng)?shù)臅r間內(nèi)沒有發(fā)現(xiàn)相應(yīng)的臨界段末端時,將獲取鎖。在另ー個實施例中,后期鎖獲取包括填滿的高速緩存集合。例如,在臨界段的執(zhí)行期間,對訪問進(jìn)行跟蹤以檢測數(shù)據(jù)沖突。但是,高速緩存集合可以用在臨界段的執(zhí)行期間跟蹤的嘗試性訪問來填充滿。因此,后續(xù)的訪問可以導(dǎo)致選擇高速緩存線用于收回,其中那個線包括對于先前嘗試性訪問的跟蹤信息。結(jié)果,可響應(yīng)于指示填滿的高速緩存集合的收回來啟動后期鎖獲取。作為另ー個例子,后期鎖獲取事件可以包括不可撤回事件的檢測,即可能是不容易廢止的事件、過程或訪問。作為具體的例子,I/o訪問通常是不可撤回的,因為對I/O設(shè)備的訪問很難是不恰當(dāng)?shù)?。因此,響?yīng)于檢測到I/o訪問,來啟動后期鎖獲取。然后,在流程310中,在檢測到后期鎖獲取之后,確定是否已經(jīng)全局上觀察到先前的填充緩沖器項(FBE)。如果沒有全局上觀察到先前的項,那么停止后期鎖獲取——即沒有啟動后期鎖獲取,直到在流程315中全局上觀察到/排序先前的FBE。在一個實施例中,全局上觀察到包括以任何方式排序,例如在總線/互連上要完成的分派。還是作為ー個例子,后期鎖獲取的停止包括更新與具有阻塞值的后期鎖獲取存儲相關(guān)聯(lián)的存儲緩沖器項。作為另ー個后期鎖獲取的可能預(yù)先條件,在流程320中確定當(dāng)前臨界段鎖值是否已經(jīng)更新了鎖堆棧。如上所述,臨界段的開始臨界段指令通常包括通過對鎖位置存儲鎖值來獲取鎖的存儲指令。但是,在HLE期間,對鎖位置取消了存儲并且在與臨界段有關(guān)的鎖堆棧項中記錄鎖值。在一個實施例中,比如在流程335中,停止高級存儲。但是,因為在后期鎖獲取期間將利用來自鎖堆棧的鎖值,在存儲高級停止之前,停止了后期鎖獲取直到在流 程325中鎖值更新了鎖堆棧。然后,在流程330中啟動后期鎖犾取。在個實施例中,啟動后期鎖犾取包括啟動存儲操作以將來自鎖堆棧的鎖值存儲到鎖位置以獲取鎖。注意后期鎖獲取可能失敗,如同在流程345中那樣,并且在流程355中可中斷并重試臨界段。例如,在后期鎖獲取期間,可能已經(jīng)由另ー個處理部件獲取了該鎖。這里,后期鎖獲取可能自旋直到鎖被釋放然后當(dāng)它由另ー個處理部件釋放的時候獲取鎖。換句話說,后期鎖獲取是立即失敗的并且中斷/重新開始臨界段。
在一個實施例中,如在流程335中所示,在后期鎖獲取期間停止高級存儲。注意,可在流程345中成功地完成后期鎖獲取,而不檢測后續(xù)的臨界段;而在這樣情況下,對加載以及高級存儲進(jìn)行解鎖,而在流程350中臨界段與鎖的執(zhí)行還繼續(xù)。但是,如果后續(xù)的臨界段在流程340中,那么流程通過連接流程360繼續(xù)到圖3a和3b。圖3a示出在對臨界段后期鎖獲取的期間,處理后續(xù)臨界段的一個實施例,該后續(xù)臨界段例如為連貫的臨界段。這里,在流程365停止了后續(xù)的開始臨界段操作。例如,在加載緩沖器中阻塞了具有存儲意圖的加載操作直到完成了后期鎖的獲取。圖3b說明了在對當(dāng)前臨界段后期鎖獲取期間,處理后續(xù)臨界段的另ー個實施例。在流程370中,確定是否排空存儲緩沖器。如果沒有排空存儲緩沖器,那么阻塞后 續(xù)臨界段的加載直到在流程375中排空存儲緩沖器。在一個實施例中,加載緩沖器項包括阻塞代碼(blOCk_COde)字段。當(dāng)阻塞代碼字段持有阻塞值的時候,阻塞來自分派的相關(guān)聯(lián)加載。這里,當(dāng)排空存儲緩沖器的時候,將諸如ID之類的值廣播給加載緩沖器。對于分派解鎖/釋放與該值匹配的加載緩沖器項。在排空存儲緩沖器之后,在流程380中確定后續(xù)的臨界段是否是嵌套臨界段。在
一個實施例中,當(dāng)排空存儲緩沖器的時候,如果沒有檢測到關(guān)于當(dāng)前臨界段的鎖釋放——即釋放鎖的存儲,那么后續(xù)的臨界段是嵌套臨界段。這里,沒有創(chuàng)建檢查點,因為關(guān)于最外面的臨界段的初始檢查點就可能足夠了。相反,阻塞后續(xù)臨界段訪問,例如具有存儲意圖的加載訪問,直到完成后期鎖獲取。在一個實施例中,停止L_S_I包括阻塞L_S_I去創(chuàng)建檢查點。這里,可以利用與上述的阻塞代碼字段類似的阻塞代碼字段來阻塞訪問。為了說明,第ー個阻塞代碼字段是M0B_BL0CK_C0DE字段并且第二個阻塞代碼字段是HLE_BL0CK_C0DE字段。類似地,當(dāng)完成后期鎖獲取的時候,將值廣播以釋放/解鎖L_S_I。如同上述所說明的,可以利用事務(wù)性存儲器和/或硬件鎖省略(HLE)來執(zhí)行臨界段。作為中斷臨界段以及通過再試臨界段而浪費先前執(zhí)行周期的替代,后期鎖獲取可以嘗試?yán)^續(xù)向前執(zhí)行臨界段。但是,為了避免死鎖以及無效數(shù)據(jù),在啟動后期鎖獲取之前以及在后期鎖獲取期間,可以選擇地施加某些條件。例如,可以停止后續(xù)連貫的臨界段直到對于當(dāng)前臨界段完成后期鎖獲取以保證相干性以及數(shù)據(jù)有效性??梢酝ㄟ^存儲在機(jī)器可訪問或者機(jī)器可讀介質(zhì)上的、可由處理部件執(zhí)行的指令或者代碼來實現(xiàn)上面所闡述的方法、軟件、固件或代碼的實施例。機(jī)器可訪問的/可讀介質(zhì)包括以由諸如計算機(jī)或者電子系統(tǒng)之類的機(jī)器可讀的形式來提供(即,存儲和/或發(fā)送)信息的任何機(jī)制。例如,機(jī)器可訪問的介質(zhì)包括隨機(jī)存取存儲器(RAM),如靜態(tài)RAM (SRAM)或動態(tài)RAM(DRAM);只讀存儲器(ROM);磁或光存儲介質(zhì);以及閃存設(shè)備。作為另ー個例子,機(jī)器可訪問/可讀介質(zhì)包括接收、復(fù)制、存儲、發(fā)送或者以其它方式操作電、光、聲或其它傳播 信號(例如,載波,紅外信號,數(shù)字信號)形式的任何機(jī)制;等等,包括了上面所提出方法、軟件、固件或代碼的實施例。貫穿本說明書的對“ー個實施例”或者“實施例”的參考指的是結(jié)合實施例描述的特定的特征、結(jié)構(gòu)或特性被包括在本發(fā)明的一個實施例中并且沒有必要在所有討論的實施例中出現(xiàn)。因此,在貫穿于本說明書中不同地方中出現(xiàn)的短語“在一個實施例中”或者“在實施例中”不必完全指代相同的實施例。此外,可以在ー個或多個實施例中以任何適合的方式來組合特定的特征、結(jié)構(gòu)或特性。在上述說明書中,已經(jīng)參考具體的示例性實施例給出了詳細(xì)說明。但是,顯然地可以對其進(jìn)行不同的修改和變化而不背離所附權(quán)利要求所提出的本發(fā)明寬廣的精神和范圍。相應(yīng)地,將說明書和附圖作為說明的意義而非限制的意義。此外,上述實施例及其它示例性語言的使用不一定指代相同的實施例或者相同的例子,但是可能參考不同的和個別的實施例,并且可能是相同的實施例。
權(quán)利要求
1.一種設(shè)備,包括 解碼邏輯,用于識別在臨界段的開始處的、獲取用于所述臨界段的鎖的鎖指令; 執(zhí)行邏輯,用于將所述獲取用于所述臨界段的鎖的鎖指令的至少一部分省略,將所述鎖指令所參考的地址和鎖值存儲在鎖項中,并執(zhí)行所述臨界段而不需要對所述臨界段的鎖;以及 后期鎖獲取邏輯,與所述執(zhí)行邏輯耦合,所述后期鎖獲取邏輯用于使得所述執(zhí)行邏輯響應(yīng)于在所述臨界段的未決期間遇到后期鎖獲取事件時嘗試在所述臨界段開始之后執(zhí)行所述獲取用于所述臨界段的鎖的鎖指令的至少一部分,而不需要重新開始所述臨界段。
2.如權(quán)利要求I所述的設(shè)備,其特征在于,還包括與所述執(zhí)行邏輯相關(guān)聯(lián)的高速緩存存儲器,其中所述鎖指令參考所述鎖值以及將與高速緩存存儲器的線相關(guān)聯(lián)的地址,并且其中所述后期鎖獲取邏輯用于使得所述執(zhí)行邏輯嘗試執(zhí)行所述獲取用于所述臨界段的鎖的鎖指令包括如果所述高速緩存存儲器的線表示所述臨界段的鎖是可用的,則所述后期鎖獲取邏輯用于使得所述執(zhí)行邏輯執(zhí)行將所述鎖值存儲到與所述地址相關(guān)聯(lián)的所述高速緩存存儲器的線。
3.如權(quán)利要求2所述的設(shè)備,其特征在于,還包括 存儲區(qū),耦合到所述執(zhí)行邏輯和所述后期鎖獲取邏輯,所述存儲區(qū)用于將與所述鎖值相關(guān)聯(lián)的地址保持在鎖項堆棧的鎖項中;以及 檢測邏輯,耦合到所述解碼邏輯和所述執(zhí)行邏輯,所述檢測邏輯用于識別所述鎖指令的至少一部分將被省略以及所述執(zhí)行邏輯省略所述鎖指令的至少一部分的原因,其中所述鎖指令的至少一部分包括對所述鎖值的地址的存儲。
4.如權(quán)利要求3所述的設(shè)備,其特征在于,與所述指令邏輯相關(guān)聯(lián)的存儲緩沖器用于保持與所述鎖值的地址的存儲相關(guān)的存儲緩沖器項,所述存儲緩沖器項用于保持阻塞代碼字段,其中與所述存儲緩沖器相關(guān)聯(lián)的更新邏輯響應(yīng)于所遇到的后期鎖獲取事件而將所述阻塞代碼字段更新為阻塞值。
5.如權(quán)利要求4所述的設(shè)備,其特征在于,所述更新邏輯響應(yīng)于后期鎖獲取邏輯使所述執(zhí)行邏輯成功地完成對獲取用于所述臨界段的鎖的鎖指令的嘗試執(zhí)行,而將所述阻塞代碼字段更新為解鎖值。
6.如權(quán)利要求5所述的設(shè)備,其特征在于,所述鎖指令包括讀取修改寫入(RMW)指令,且RMW指令的讀取操作包括有存儲意圖的加載(LSI)操作,并且其中所述后期鎖獲取邏輯使所述執(zhí)行邏輯成功地完成對獲取用于所述臨界段的鎖的鎖指令的嘗試執(zhí)行包括所述后期鎖獲取邏輯使所述執(zhí)行邏輯執(zhí)行所述LSI操作以從所述地址加載一加載值;執(zhí)行修改操作以將所述加載值從可用值修改為所述鎖值;并將所述鎖值寫入所述地址以獲取所述鎖。
7.如權(quán)利要求I所述的設(shè)備,其特征在于,所述后期鎖獲取事件是從包括下述的組中選擇的計時器的到期,其指示在預(yù)定量的時間內(nèi)所述解碼邏輯沒有檢測到與所述鎖指令相對應(yīng)的鎖釋放指令;高速緩存集合中的所有線均包括投機(jī)信息的檢測;以及不可撤回事件的發(fā)生。
8.一種裝置,包括 處理部件,用于執(zhí)行當(dāng)前臨界段以及后續(xù)臨界段,其中所述處理部件進(jìn)一步用于省略所述當(dāng)前臨界段的開始處以及后續(xù)臨界段的鎖獲??; 訪問緩沖器,與所述處理部件相關(guān)聯(lián),所述訪問緩沖器用于保持與來自所述后續(xù)臨界段的訪問操作相關(guān)聯(lián)的訪問項,所述訪問緩沖器項用于括阻塞代碼字段,其中響應(yīng)于所述訪問項保持包括阻塞值的阻塞代碼字段,而將阻止來自所述后續(xù)臨界段的訪問操作的分派;以及 更新邏輯,與所述訪問緩沖器相耦合,所述更新邏輯在所述處理部件省略了用于當(dāng)前臨界段的鎖獲取之后,響應(yīng)于所述處理部件嘗試用于當(dāng)前臨界段的后期鎖獲取而更新所述阻塞代碼字段為包括阻塞值,而不需要重新開始當(dāng)前臨界 段。
9.如權(quán)利要求8所述的設(shè)備,其特征在于,所述阻塞代碼字段用于默認(rèn)地保持解鎖值,其中響應(yīng)于所述阻塞代碼字段包括所述解鎖值,所述訪問操作無須被分派。
10.如權(quán)利要求8所述的設(shè)備,其特征在于,嘗試用于當(dāng)前臨界段的所述后期鎖獲取是響應(yīng)于在所述處理部件省略了用于當(dāng)前臨界段的鎖獲取之后在所述當(dāng)前臨界段的執(zhí)行期間檢測到后期鎖獲取事件,并且所述后期鎖獲取事件是從由計時器期滿事件、填滿的高速緩存集合事件以及不可撤回事件所組成的組中選擇的。
11.如權(quán)利要求8所述的設(shè)備,其特征在于,所述更新邏輯在所述處理部件省略了用于當(dāng)前臨界段的鎖獲取之后,響應(yīng)于所述處理部件嘗試用于當(dāng)前臨界段的后期鎖獲取而更新所述阻塞代碼字段為包括阻塞值,而不需要重新開始當(dāng)前臨界段包括所述更新邏輯響應(yīng)于檢測到所述后期鎖獲取事件以及響應(yīng)于滿足后期鎖獲取預(yù)先條件而將所述阻塞代碼字段更新為包括所述阻塞值。
12.如權(quán)利要求11所述的設(shè)備,其特征在于,所述后期鎖獲取預(yù)先條件包括允許全局上觀察到多個未決的填充緩沖器項。
13.如權(quán)利要求11所述的設(shè)備,其特征在于,所述訪問緩沖器是加載緩沖器,并且其中所述訪問操作包括后續(xù)的具有存儲意圖的加載(L_S_I)操作以指明所述后續(xù)臨界段的開始。
14.如權(quán)利要求13所述的設(shè)備,其特征在于,還包括鎖堆棧,所述鎖堆棧包括與指明當(dāng)前臨界段開始的當(dāng)前L_S_I操作相關(guān)聯(lián)的鎖堆棧項,其中所述后期鎖獲取預(yù)先條件包括等待與當(dāng)前臨界段的當(dāng)前L_S_I相關(guān)的存儲操作以更新鎖堆棧項。
15.如權(quán)利要求13所述的設(shè)備,其特征在于,所述阻塞值包括標(biāo)識符,并且其中響應(yīng)于后期鎖獲取的完成,所述更新邏輯將所述標(biāo)識符廣播到所述加載緩沖器項以將所述阻塞代碼字段更新為解鎖值。
16.—種方法,包括 在當(dāng)前臨界段的開始處省略鎖獲取操作; 在當(dāng)前臨界段的執(zhí)行期間檢測后期鎖獲取事件; 響應(yīng)于在當(dāng)前臨界段的執(zhí)行期間檢測到所述后期鎖獲取事件,啟動對于所述當(dāng)前臨界段的后期鎖獲取,而不需要重新開始所述當(dāng)前臨界段; 響應(yīng)于訪問緩沖器保持對于后續(xù)鎖獲取操作的參考,阻止用于后續(xù)臨界段的后續(xù)鎖獲取操作,并啟動用于當(dāng)前臨界段的后期鎖獲取。
17.如權(quán)利要求16所述的方法,其特征在于,所述后期鎖獲取事件是從包括監(jiān)視計時器到期、選擇已經(jīng)在當(dāng)前臨界段的執(zhí)行期間跟蹤存儲器存取的高速緩存線以便回收、以及遇到不可撤回事件的組中選出來的。
18.如權(quán)利要求16所述的方法,其特征在于,對于當(dāng)前臨界段啟動后期鎖獲取包括啟動參考鎖地址的鎖值存儲,所述鎖值以及地址將被保持在鎖堆棧項中,所述鎖堆棧項參考關(guān)聯(lián)于與所述當(dāng)前臨界段的鎖獲取操作。
19.如權(quán)利要求18所述的方法,其特征在于,還包括響應(yīng)于啟動用于當(dāng)前臨界段的后期鎖獲取而阻止多個高級存儲,所述多個高級存儲被保持在存儲緩沖器中,并且其中響應(yīng)于參考所述鎖地址退役的鎖值的存儲,所述多個高級存儲被解鎖以用于分配。
20.如權(quán)利要求16所述的方法,其特征在于,啟動臨界段的后期鎖獲取進(jìn)一步是響應(yīng)于全局上觀察到多個未決的填充緩沖器項以及確定與所述臨界段相關(guān)聯(lián)的鎖堆棧項用鎖值來更新。
21.如權(quán)利要求20所述的方法,其特征在于,還包括 響應(yīng)于阻止用于后續(xù)臨界段的后續(xù)鎖獲取操作,阻塞與后續(xù)臨界段相關(guān)的檢查點的創(chuàng)建。
22.如權(quán)利要求21所述的方法,其特征在于,還包括確定所述后續(xù)的臨界段不是嵌套臨界段,其中阻塞所述檢查點的創(chuàng)建進(jìn)一步是響應(yīng)于確定所述后續(xù)的臨界段不是嵌套臨界段。
23.如權(quán)利要求22所述的方法,其特征在于,確定所述后續(xù)的臨界段不是嵌套臨界段包括 響應(yīng)于所述存儲緩沖器保持存儲緩沖器項,排空存儲緩沖器; 響應(yīng)于所述存儲緩沖器是排空的 對沒有檢測到當(dāng)前終止臨界段操作而作出響應(yīng),確定所述后續(xù)臨界段是嵌套臨界段;以及 對檢測到當(dāng)前終止臨界段操作而作出響應(yīng),確定所述后續(xù)臨界段不是嵌套臨界段。
24.如權(quán)利要求21所述的方法,其特征在于,對于所述后續(xù)臨界段的后續(xù)鎖獲取操作包括具有存儲意向的加載(L_S_I)操作,并且其中阻塞與所述后續(xù)臨界段相關(guān)的檢查點的創(chuàng)建包括阻塞所述L_S_I操作被從加載緩沖器中分配。
全文摘要
本發(fā)明描述了一種用于硬件鎖省略(HLE)的后期鎖獲取機(jī)制,其中描述了用于后期鎖獲取機(jī)制的方法和裝置。響應(yīng)于檢測到后期鎖獲取事件,如計時器期滿、填滿的高速緩存集合以及不可撤回事件,可啟動后期鎖獲取。停止連貫的臨界段直到利用與連貫的臨界段操作相關(guān)聯(lián)的訪問緩沖器項的字段來完成后期鎖獲取。
文檔編號G06F9/52GK102722418SQ20121006742
公開日2012年10月10日 申請日期2008年11月7日 優(yōu)先權(quán)日2007年11月7日
發(fā)明者H·阿卡瑞, R·拉杰瓦, S·T·斯里尼瓦桑 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
化隆| 吉木乃县| 虎林市| 许昌县| 柘城县| 旺苍县| 杭锦旗| 普格县| 察哈| 盘锦市| 乌海市| 长治市| 大荔县| 双江| 丘北县| 湛江市| 连州市| 米脂县| 东源县| 辉南县| 新竹市| 巴青县| 东乌珠穆沁旗| 廉江市| 罗江县| 神农架林区| 大新县| 周口市| 内乡县| 壶关县| 襄汾县| 双鸭山市| 静宁县| 和田市| 贵德县| 遂溪县| 海口市| 个旧市| 皋兰县| 汝阳县| 墨脱县|