專利名稱:用于硬件鎖省略(hle)的后期鎖獲取機(jī)制的制作方法
用于硬件鎖省ffl^(HLE)的后期鎖獲取機(jī)制
領(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ù)的常用解決方案包括利用鎖來確m共享數(shù)據(jù)多個訪問上的互斥。然而, 執(zhí)行多個軟件線程的日益增加的能力潛在可能導(dǎo)致錯誤競爭和執(zhí)行的串行化。
例如,考慮一種持有共享數(shù)據(jù)的散列表。利用鎖系統(tǒng),程序員就可對整個 散列表加鎖,從而允許一個線程訪問整個散列表。然而,其它線程的吞吐量和 性能潛在可能受到不利影響,因為在鎖被釋放之前他們不能訪問散列表中的任 何項。或者,散列表中的每個項可被加鎖。然而,這增加了編程復(fù)雜度,因為 禾Mi芋員不得不考慮在散列乾t內(nèi)更多的鎖。
另一種數(shù)據(jù)同步技術(shù)包括使用事務(wù)性存儲教TM)。通常事務(wù)性執(zhí)行包括投 機(jī)地執(zhí)行多個微操作,操作,或者指令的編組。在上面的例子中,兩個線程皆 在散列表內(nèi)執(zhí)行,且其訪問l鵬掛足跟宗。如果兩個線程訪問欣變相同的項,則 可能中斷這兩個事務(wù)中的一個來解決沖突。然而, 一些應(yīng)用禾聘可能不能利用 事務(wù)性存儲器編程,結(jié)果,通常稱為硬^H貞省^(HLE)的硬件繊同步技術(shù)I細(xì) 于取消鎖以獲f戦似于事務(wù)性存儲器的同步效果。
結(jié)果,HLE能夠檢領(lǐng)拼且預(yù)側(cè)代碼的臨界段。但是,對于事務(wù)性存儲器或者通過HLE在臨界段的執(zhí)行期間,當(dāng)HLE預(yù)側(cè)不正確的時候,試探性訪問跟 蹤使存儲器溢出,或者遇到不可取消事件,通常,中斷并且重新開始臨界段。 然而,中斷臨界段可能浪費了在中斷之前所執(zhí)行的操作執(zhí)行周期。
本發(fā)明m舉例進(jìn)行說明并且不希望受到附形的限制。 圖1示出包括后期鎖獲取機(jī)制的多處理部件處理器的實施例。 圖2示出對于臨界段執(zhí)行后期鎖獲取的邏輯的實施例。 圖3a示出對于當(dāng)前臨界段執(zhí)行后期鎖獲取方法的流程圖的實施例。 圖3b示出在對于當(dāng)前臨界段的后期鎖獲取期間停止后續(xù)臨界段操作方法的 流禾呈圖的實施例。
圖3c示出在對于當(dāng)前臨界段的后期鎖獲取期間停止后續(xù)臨界段操作方法的 流程圖的另一個實施例。
詳細(xì)說明
在下面的說明中,闡述了很多特定的細(xì)節(jié),比如硬件鎖省略(HLE)的特定硬 件支持的例子、特定的卿敘元 方法、處理器中局激存儲器的特定類型、以 及存儲器存取和位置的特定類型等等,以便提供對本發(fā)明的徹底理解。但是, 本領(lǐng)域技術(shù)人員將會明白可不必采用這些細(xì)節(jié)來實施本發(fā)明。在其它的例子中, 沒有詳細(xì)地描述公知的組件或者方法,比如軟件中臨界段的編碼,臨界段的劃 界,特定的多核和多線程處理器體系結(jié)構(gòu),中斷生瓛處理,高速緩存組織,和 微處理器特定的操作細(xì)節(jié),以免帶來對本發(fā)明不必要的混淆。
此處所描述的方法和 是用于在臨界段執(zhí)行期間的后期鎖(late-lock)獲 取的方案。具體地說,主要關(guān)于多核處理器計算機(jī)系統(tǒng)來討論后期鎖獲取方案。 但是,用于后期鎖獲取方案的方法和裝置并不因此受限,因為它們可能在任何 集成電路裝置或者系統(tǒng)上或與其相關(guān)聯(lián)以及與諸如執(zhí)行臨界段的硬件/軟件線程 的其它資源結(jié)合地實現(xiàn),所述集成電路裝置或者系統(tǒng)比如為蜂窩電話,個人數(shù) 字助理,^A式控制器,移動式平臺,桌面平臺,和服務(wù)器平臺。此外,還關(guān) 于在硬fH貞省B^HLE)期間的臨界段執(zhí)行來主要地討論后期鎖獲取方案。然而, 在任何臨界段執(zhí)行方案期間,比如在事務(wù)性執(zhí)行期間,都可使用后期鎖的獲取。參考圖1,示出多核處理器100的實施例,其能夠執(zhí)行用于臨界段的后期鎖 獲取。如圖所示,物理處理器100包括{對可數(shù)量的處理部件。處理部件指代線 程、進(jìn)程、上下文、邏輯處理器、硬件線程、核和/或任何可能共享對處理器資 源訪問的處理部件,比如保留單元、執(zhí)行單元、流水線和上級高速緩存/存儲器。
物理處理器通常指f^成電路,其可包^i午任何數(shù)量的處理部件,比如核或者 硬件線程。
核通常指代位于集成電路上能夠維持獨立體系結(jié)構(gòu)狀態(tài)的邏輯,其中每一 個獨立維持的體系結(jié)構(gòu)狀態(tài)都與至少一些專用執(zhí)行資源有關(guān)。與核相反,硬件 線程通常指代位于集成電路上能夠維持3拉體系結(jié)構(gòu)狀態(tài)的任何邏輯,其中獨 立維持的體系結(jié)構(gòu)狀態(tài)共享對執(zhí)行資源的訪問。如圖1中所示出的,物理處理 器100包括雙核,核101和102,它們共享對上級高速緩存110的訪問。此外, 核101包括兩個硬件線程101a和101b,而核102包括兩個硬件線程102a和102b。 因此,諸如操作系統(tǒng)或者應(yīng)用,旨的軟件實體可能將處理器100視為四個獨立 的處理器,同時處理器腦會,執(zhí)行四個軟件線程。
如同所看見的,當(dāng)某些資源是共享的而其它資源專用于一個體系結(jié)構(gòu)狀態(tài) 的時候,硬件線程和核的術(shù)語之間的界線是重疊的。然而通常,操作系統(tǒng)將核 和硬件線程視為獨立的邏輯處理器,其中操作系統(tǒng)f,獨立地在每個邏輯處理 器上調(diào)度操作。因此,處理部件包括任何能夠維持上下文的戰(zhàn)實體,比如核, 線程,硬件線程,邏輯處理機(jī),虛擬機(jī),或者其它的處理資源。
在一個實施例中,處理器腦是能夠并行地執(zhí)行多個線程的多核處理器。 這里,第一線程與體系結(jié)構(gòu)狀態(tài)寄存器101a相關(guān)聯(lián),第二線程與體系結(jié)構(gòu)狀態(tài) 寄存器101b相關(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位于相同的域級別中,線程101a和101b位于核101 中的相同域級別中,而線程101a、 101b、 102a和102b位于核101禾卩102中的 相同域級別中。
盡管處理器100可包括不對稱的核,即具有不同配置、功能單元和/或邏輯 的核,但是在圖1中示出對稱的核。結(jié)果,將不雜細(xì)地討論示出為與核101相同的核102,以避免使說明模糊不清。
如同所說明的,在體系結(jié)構(gòu)狀態(tài)寄存器101b中復(fù)制了體系結(jié)構(gòu)狀態(tài)寄存器
101a,因此倉的多為處理部件101a和處理部件101b存儲獨立的體系結(jié)構(gòu)狀態(tài)/上 下文。還可能為線程101a和101b復(fù)帝唭它較小的資源,比如指令指針和在重 命名分配器邏輯130中的重命名邏輯??赏ㄟ^分割來共享一些資源,比如在重 排序/退役單元135中的重排序緩沖器、ILTB120、加歡存儲緩沖器180以及隊 列??蓮氐椎毓蚕砥渌馁Y源,比如通用內(nèi)部寄存器、頁表基址寄存器、低級 數(shù)據(jù)-高速緩存以及M-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包括輸滿出(1/0)緩沖器以錢和接收在互連 170上的總線信號?;ミB170的例子包括射電收發(fā)器邏輯(GTL)總線,GTL+總 線,雙倍i^鄉(xiāng)DR)總線,并發(fā)總線,差分總線,高速緩存相干總線,點對點 總線,多站總線或者其它實現(xiàn)任何已知總線助、議的已知互連。如所示,總線接 口單元105還與上級高速緩存110通信。
上級或遠(yuǎn)端高速緩存110用于高速緩沖近期在元件上所取回禾口/或操作的元 素。注意上級或遠(yuǎn)端指的是高速緩存級別的增加或者更遠(yuǎn)離執(zhí)行單元。在一個 實施例中,上級高速緩存110是第二級 高速緩存。但是,上級高速緩存110 并不如此受到限制,因為它可能是被稱為蹤跡高速緩存的指令高速緩存或包括 該指令高速緩存。蹤跡高速緩存可代替±鵬禺合在譯碼器125之后以存f,期解 碼的蹤跡。模±央120還可能包括用于預(yù)測執(zhí)行/采用分支的分支目標(biāo)緩沖器和用 于存儲指令的地址翻譯項的指令-翻譯緩沖器(I-TLB)。這里,會巨夠進(jìn)行投機(jī)執(zhí) 行的處理器可能預(yù)取回以及投拋也執(zhí)行戶顧湖啲分支。
解碼?!姥?25與取回單元120相耦合以解碼取回的元素。在一個實施例中, 處理器100與指令集體系結(jié)構(gòu)(ISA湘關(guān)聯(lián),其定力規(guī)定在處理器100上的可執(zhí) 行指令。這里,由ISA所識別的通常機(jī)器代碼指令包括一部分稱為操作碼 (opcode)的指令,其參考湖定魏行附旨令或操作。在一個例子中,分配器和重命名器區(qū)塊130包括分配器以以保留諸如為存
儲指令處理結(jié)果的寄存器堆之類的資源。但是,線程101a和101b可能能夠無 序地執(zhí)行,其中分配器和重命名器區(qū)塊130還保留其它的資源,諸如重排序緩 沖器以足服對旨令結(jié)果。單元130還可包括寄存器重命名器來將禾號/指令參考寄 存器重命名為其它的在處理器100內(nèi)部的寄存器。
重排序器/退役單元135包蹄如上述的重排序器緩沖器以及加薪存儲緩沖 器180之類的組件以支持無,行以及,執(zhí)行的指令的稍后退役。在一個實 施例中,緩沖器180能夠保存字段/值以指示將要P且敏停止的相關(guān)的存儲器存取, 直到完成在進(jìn)程中對臨界段獲得后期鎖。盡管將緩沖器180顯示為位于一個區(qū) 域中,緩沖器畫以及后期鎖獲取邏輯不因此受到限制。事實上,跟蹤邏輯180 可能分布在整個處理器100上,此外還與處理器^7乂線的前端或者后端的任何 部分相關(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í)行單元、瑕瞎執(zhí)行單元、加載執(zhí)行單元、 存儲執(zhí)行單元及其它己知的執(zhí)行單元。
^U:面可以發(fā)現(xiàn),如所說明的,處理器100會,執(zhí)行至少四個軟件線程。 此外,在一個實施例中,處理器100能夠進(jìn)行事務(wù)性執(zhí)行。事務(wù)性執(zhí)^S常包 括將多個指令或操作編組為事務(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)行衝特貞省B^(HLE),其中硬件 會旨夠取消臨界段的鎖定并且同時執(zhí)行它們。這里,沒有事務(wù)性支持的預(yù)編譯的 二進(jìn)制碼(binaries)或者禾擁鎖定編程的新編譯的二進(jìn)制編碼能夠通過HLE的 支持從同時執(zhí)行中受益。由于提供了透明的兼容性,HLE通常包括用于檢測臨 界段并跟蹤存儲器存取的硬件。事實上,由于取消了確自數(shù)據(jù)排除的鎖,可 以以如同在事務(wù)執(zhí)行期間類似的方式來^^存儲器存取。因而,可以在事務(wù)執(zhí) 行期間利用在此討論的后期鎖獲取方案,HLE,另一個存儲器存鵬艮蹤方案, 或者它們的組合。因此,在下面臨界段執(zhí)行的討論可能包括對事務(wù)臨界段或者 由HLE檢出的臨界段的參考。
在一個實施例中,禾U用所訪問的存儲設(shè)備鄉(xiāng)艮蹤來自臨界段的訪問。例如, 利用下級數(shù)據(jù)高速緩存150鄉(xiāng)艮蹤來自臨界段的訪問;與事務(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)以存if^期X寸物理地址翻譯 的虛JW線性化。
如所示,線151、 152和153包括區(qū)段以及字段,例如區(qū)段151a和字段151b。 在一個實施例中,字段151b、 152b和153b以及區(qū)段151a、 152a和153a屬于組 成線151、152和153的相同存儲器陣列的一部分。在另一個實施例中,字段151b、 152b和153b是從線151a、 152a和153aMil單獨的專用端口訪問的單獨陣列的 一部分。然而,即使當(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)行存儲和/ 或操作。通常,還將邏輯電平、邏輯值或邏輯的值的使用稱為1和0,其簡單地 表示二進(jìn)制邏輯狀態(tài)。例如,l指的是高邏輯電平,而0指的是低邏輯電平。已 經(jīng)使用了在計算機(jī)系統(tǒng)其它的值表示,如邏輯值或二進(jìn)制值的十進(jìn)制和十六進(jìn) 帝'康示。例如,以 制數(shù)10為例,其按二進(jìn)制表示為1010,按十六進(jìn)制表示 為字母A。
在圖l說明的實施例中,足跟宇對線151、 152和153的訪問以支持臨界段的 執(zhí)行。訪問包括諸如讀取、寫入、存儲、加載、收回、監(jiān)聽或其它已知的對存 儲器單元的訪問等操作。使用諸如字段151b、 152b和153b之類的訪問3毀宗字 段鄉(xiāng)跟宗對它們相應(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)或者Wt到硬件 或軟件查找表中的存儲器線151a或151b。
如簡化說明的例子,假定訪問足跟宗字段151b、 152b和153b包括兩個事務(wù) 位第一讀跟蹤位和第二寫跟蹤位。在缺省狀態(tài)中——即第一邏輯值,在訪問 S郎宗字段151b、 152b和153b中的第一和第二位分別表示高速緩存線151、 152 和153在臨界段執(zhí)行期間沒有被訪問。
假定在臨界段中遇到從線1513加載的加 作。將第一讀足ISi位從缺省狀 態(tài)更新為第二訪問狀態(tài),例如第二邏輯值。這里,持有第二邏輯值的第一讀取 足跟對立表示從高速緩存線151的讀聰加載發(fā)生在臨界段執(zhí)行期間??梢园搭愃?方式來處理存儲操作以更新第一寫"艮蹤位來表明在臨界段執(zhí)行期間發(fā)生了對 存儲器單元的存儲。
因而,如果檢查了在與線151相關(guān)聯(lián)的字段151b中的足鵬位,并且事別立 表示缺省狀態(tài),那么高速緩存線151在臨界段的未決期間沒有l(wèi)皮訪問。相反地, 如果第一讀鵬跟宇、位表示為第二值,那么高速緩存線151在臨界段執(zhí)行期間先
前己被讀取。此外,如果第一寫入足跟宗位表示第二值,那么在臨界段的未決期 間就發(fā)生了對線151的寫入。訪問字段151b、 152b和153b可用于支持任何類型的事務(wù)性執(zhí)行或HLE。 在其中處理器畫能夠進(jìn)行硬件事務(wù)性執(zhí)行的一個實施例中,訪問字段151b、 152b和153b將檢測沖突并且執(zhí)行確認(rèn)。在其中硬件事務(wù)性存儲^(mM)、軟件 ,性存儲教STM)或它們的組合用于事務(wù)性執(zhí)行的另一個實施例中,訪問足g^宇、 字段151b、 152b和153b提供相似的足跟宗以及確認(rèn)功能。
如同第一個例子中如何將訪問字段~~#別題艮蹤位~"^在地用于幫助 事務(wù)性執(zhí)行那樣,序列號為11/349,787的題為'TIardware Acceleration for A Software Transactional Memory System (用于軟件事務(wù)性存儲器系統(tǒng)的硬件加 速)"的共同待審批申請公開了訪問字段/事務(wù)位對于加快SIM的使用。作為另 一個例子,在序列號為11/479,902以及代理記錄編號為042390.P23547、題為 "Global Overflow Method for Virtualized Transactional Memory (用于虛擬化事務(wù)性 存儲器的全局溢出方法)"的共同待審批申請中論述了包括將訪問字掛事務(wù)足跟宗 位的狀態(tài)存儲到第二存儲器中的擴(kuò)展/虛擬化事務(wù)性存儲器。
轉(zhuǎn)向圖2,示出對于臨界段啟動后期鎖獲取邏輯的實施例。如上所述,事務(wù) 通常由開始事務(wù)以及終止事務(wù)指令來劃分,其提供了對臨界段容易的標(biāo)識。但 是,HLE包括檢測/fgi只以及可能地預(yù)測臨界段、取消劃分臨界段的鎖、用于對 臨界段異常中斷的重新運行的檢查點寄存器狀態(tài)、^^嘗試的存儲器更新以及 檢測潛在性數(shù)據(jù)沖突。在檢測銜識臨界段中的一個困難是在常規(guī)鎖指令以及區(qū) 別臨界段的鎖/鎖解除指令之間劃出輪廓,其中常規(guī)鎖指令沒有定義臨界段。
在一個實施例中,對于HLE,由鎖指令(即開始臨界段指令)以及匹配的 鎖解除指令(即終止臨界段指令)定義臨界段。鎖指令可包括從尋址單元的加
載~一即檢查鎖是否可用,以及對尋址單元的修改寫入一即對該尋址單^a
行更新以獲取鎖??梢杂米麈i指令的幾個指令的例子包括比較和交換指令、位 測i舒卩設(shè)置指令以及交換和加法指令。在英特爾的IA-32和IA-64指令集中,上 述指,括CMPXCHG、 BTS和XADD,如同在以上討論的英特爾@64和IA-32 指令集文件中所描述的。
作為其中檢出/認(rèn)識諸如CMPXCHG、 BTS和XADD的預(yù)定指令的例子, 檢測邏 [1/或解碼邏輯檢測到利用操作碼字段或指令其它字段的指令。作為例 子,CMPXCHG與以下操作碼相關(guān)OF B0/r, REX +0F B0/r和REX.W+OF B1 /r。 在另一個實施例中,禾,與指令有關(guān)的操作來檢測鎖指令。例如,在x86中以下三個存儲器微-操作通常用于執(zhí)行原子存儲器更新來指示可能的鎖指令(l)具
有操作碼0x63的Load—Store—Intent(L一S—I); (2)具有操作碼0x76的STA;以及(3) 具有操作碼0x7F的STD。這里,L一SJ以獨占擁有狀態(tài)獲取存儲器單元并且執(zhí) 行對存儲器單元的讀取,盡管STA和STD操作修改并且寫入存儲器單元。換句 話說,檢測邏輯搜索有存儲意向的加載(L—S—I)來定義臨界段的開始。注意鎖指 令可能具有任意數(shù)量的其它與讀取、寫入、修改存儲器操作相關(guān)聯(lián)的非-存儲器 以及其它存儲器操作。
通常利用堆棧,例如鎖堆棧205來保持項,例如與鎖指令相關(guān)的項206。鎖 指令項(L正)206可能包括任意數(shù)量的字段來存儲臨界段相關(guān)的信息,如鎖指令 存儲物理地址(LIStrPA)、鎖指令加載f直以及加載大小、解鎖j直、鎖指令存儲《直 以及大小、鎖定值、微操作計數(shù)、釋放標(biāo)志、后期鎖獲取標(biāo)志以及最后指令指 針字段。
這里與鎖指令相對應(yīng)的鎖釋放指令戈吩臨界段的末端。檢測邏輯搜索對應(yīng) 于由鎖指令修改的地址的鎖釋放指令。注意由鎖指令修改的地址可保持在鎖堆 棧205上的L正206中。結(jié)果,在一個實施例中,鎖釋放指夠括任何將由相應(yīng) 的鎖指令所修改的地址設(shè)置回解鎖值的存儲操作。將由存儲在鎖堆棧206中的 L—S—I指令所引用的地址與后續(xù)的存儲指令相比較來檢觀湘應(yīng)的鎖釋放指令???以在題為"A CRITICAL SECTION DETECTION AND PREDICTION MECHANISM FOR HARDWARE LOCK ELISION (對硬件鎖省略的臨界段檢測 和預(yù)測機(jī)制)"的申請序列號為11/599,009的共同待審批申請中找到更多的有關(guān) 檢測和預(yù)觀lj臨界段的信息。
換句話說,在一個實施例中,對于HLE,臨界段由L_SJ指令禾啪應(yīng)的鎖 釋放存儲指令來劃分。類似的,由開始事務(wù)指令和終止事務(wù)指令來定義事務(wù)的 臨界段。因此,對開始臨界尉喿作/指令的參考包括樹可開始HLE、事務(wù)性存儲 器或其它臨界段的指令,而對終止臨界M作/指令的參考包括開始HLE、事務(wù) 性存儲器或其它臨界段終止指令。
在一個實施例中,訪問緩沖^""^f加載緩沖器220和/或存^M沖器280 將保持與存儲器存取操作相關(guān)聯(lián)的訪問項。每個訪問緩沖器項都包括阻塞代碼 字掛區(qū)段。作為默認(rèn),卩腫代碼字段將保持第一值,如未P腺值,以指示可以 自由地分配相應(yīng)的存儲器存取操作。但是,當(dāng)對于當(dāng)前臨界段啟動后期鎖獲取時,與后續(xù)臨界段相關(guān)聯(lián)的用于緩沖器項的阻塞代碼字段被更新為第二值或者 P腺值以指示將阻敷停止相關(guān)聯(lián)的存儲器存取操作。
如同所說明的,加載緩沖器220包括多個加載緩沖器項,例如項228-233。 當(dāng)遇到加載操作的時候,在加載緩沖器220中創(chuàng)敷存儲力喊緩沖器項。在一個 實施例中,加載緩沖器220以程序)l醉存儲加載緩沖器項,即在禾驕代碼中對 指令或操作進(jìn)行排序的順序。這里,由加辦指針235來參考最近的加載緩沖 器項228,即最近存儲的加載緩沖器項。相反的,由加載頭指針236來參考最早 的加載緩沖器項230,其不是高級加載。
在按順序執(zhí)行的處理元素中,以存儲在加載緩沖器中的程序川 來執(zhí)行力口 載操作。結(jié)果,首先執(zhí)行最早的緩沖器項,并且將力喊頭指針236重新指向下 一個最早的項,例如項229。相反的,在游機(jī)器中,以任意的順序來執(zhí)行操作。 但是, 一般會在禾歸順序中移除記錄,即從加載緩沖器中去分配。結(jié)果,加載 頭指針236和加f^指針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 DURING TRANSACTIONAL EXECUTION(用于足郎宗在事務(wù)性執(zhí)行期間嘗試性 訪問的后退出方案)"的申請序列號為11/517,029的共同待審批申請更加詳細(xì)地 討論了用于假設(shè)存儲器存取的后退出訪問S跟宗。此外,申請序列號為11/936, 243的題為"A PRE-POST RETIRE HYBRID HARDWARE LOCK ELISION (HLE) SCHEME (預(yù)先-后退出混合硬件鎖省B^(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可能包括將 邏輯0再寫入字段225、以及沒有動作而使字段225保持邏輯0。
與上述討論的方案相反,假定加載項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ù)先^i牛的第一例,括等待未決填充緩沖器項被全局地排序。這里,
當(dāng)對高速緩存270的訪問未命中時,即線不是呈現(xiàn)修改或者獨占的狀態(tài)中,那 么分配填充緩沖器項以依據(jù)檢索來接收所請求的元素。在一個實施例中,全局 排序包括至少在后期鎖獲取存儲之前的存儲的任何排序,以保證存儲器相干性, 即沒有存儲器排序違規(guī)。
用于后期鎖獲取可能的預(yù)先條件的另一個例子包括確定當(dāng)前臨界段的開始 臨界段操作已經(jīng)將鎖堆棧更新為鎖值。正如以上所討論的,開始臨界段操作可
能包括加i^/讀取以確定鎖是否保持鎖定或剖軍鎖值,以及存儲操作以對鎖位置
執(zhí)行鎖值的存儲。但是,在HLE中鎖被取消并且嘗試性地執(zhí)行臨界段。因此, 沒有執(zhí)行與存儲緩沖器280中的存儲項283相關(guān)聯(lián)的、用于更新線271a的存儲, 而是將更新鎖堆棧205。事實上,當(dāng)嘗試后期鎖獲取的時候,來自鎖堆棧項206 的鎖值用于將高速緩存存儲器線271a更新為鎖定值。換句話說,對于HLE,沒 有獲取在高速緩存線271a中的鎖,直到M31用來自項206的鎖定值更新高速緩 存線271a來執(zhí)行后期鎖。但是,在一個實施例中,響應(yīng)于后期鎖獲取的啟動,來阻敏停止存儲,例 如高級存儲。因而,如果沒有執(zhí)行用鎖fM新鎖堆棧項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ù)臨界,作。這里,更 f il輯210將字段225更新為阻塞值。響應(yīng)于字段225持有PM值,沒有分派 與項230相關(guān)聯(lián)的LSI。作為一個例子,調(diào)度器沒有基于^W阻塞值的字段225 來調(diào)度后續(xù)臨界段LSI。注意更新邏輯可能將任何數(shù)量的類似于字段225的字段 設(shè)置為阻塞值以阻敏停止fti可其它的操作。
在一個實施例中,阻塞值包括標(biāo)識符(ID)。結(jié)果,當(dāng)解鎖諸如與項230相關(guān) 聯(lián)的加載之類的存取操作的條件滿足的時候,由更新邏輯210廣播該ID。釋放 ——即解鎖包括ID的全部字段。例如,當(dāng)字段225包括諸如 MOB一BLOCK一CODE值之類的P腺值時,就響應(yīng)于存儲緩沖器的枯竭,由更 新邏輯210來廣播ID。釋放即解鎖與ID相匹配的所有加載項。作為另一 個例子,字段225可以是HLE一BLOCK一CODE字段。這里,響應(yīng)于后期鎖獲取 的完成,將ID廣播給在加載緩沖器220中的項,加載緩沖器220釋^/解鎖與 ID匹配的加載項。
如上戶員,在一個實施例中,在后期鎖獲取期間停止了高級存儲。這里諸 如邏輯225的邏輯將諸如字段283a的字段更新為阻塞值停止高級存儲。這里, 避免了諸如鎖釋放操作之類的終止臨界段操作與后期鎖獲取操作之間的競爭狀 態(tài)。作為一個例子,假定在高速緩存線271a中保持鎖。取消獲取鎖的開始臨界 段操作并且在鎖堆棧項206中存儲獲得鎖的值。然后,檢測出后期鎖獲取事件。這里,弓間解鎖值的鎖釋放存儲將可能與后期鎖獲取存儲爭用以獲得鎖。結(jié)果, 停止高級存儲分派以避免這種潛在的爭用。
注意,如所示,鎖堆棧205包括多個堆棧項。在一個實施例中,鎖堆棧205
能夠為諸如嵌套臨界段之類的多個臨界段維持多個項。作為一個例子,當(dāng)將要
為一個嵌套在堆棧205上的臨界段執(zhí)行后期鎖獲取的時候,將為群毆它在堆棧 205上參考的臨界段執(zhí)行后期鎖獲取。為了說明,由LIE206參考的臨界段是在 由L正207參考的第二個臨界段之內(nèi)所嵌套的最里面的臨界段。此外,第二臨界 段嵌套在與項208相關(guān)聯(lián)的最外面的臨界段之內(nèi)。
這里,當(dāng)要為最里面的臨界段執(zhí)行后期鎖獲取的時候,還為第二個和最外 面的臨界段執(zhí)行后期鎖獲取。但是,在另一個實施例中,當(dāng)已經(jīng)對最里面的臨 界段觀察至U鎖釋放并且為第二個臨界段執(zhí)行后期鎖獲取的時候,就為最外面的 臨界段,而不是最里面的臨界段執(zhí)行后期鎖獲取。換句話說,在該實施例中對 于所有的位于比當(dāng)前后期鎖獲取的更高嵌,度的臨界M執(zhí)行后期鎖獲取。
轉(zhuǎn)向圖3a-3c,示出了在臨界段的硬件鎖省B^l行期間所進(jìn)行的后期鎖獲取 的方法的流程圖實施例。雖然該流程圖以合理地線性方式說明了流程,但是在 不同實施例中流程可以任何順序發(fā)生。例如,可在確定是否當(dāng)前臨界段鎖值是 否己經(jīng)更新鎖堆棧之后發(fā)生確定是否全局上觀察到過濾器緩沖器項。
在流程305中,檢測到后期鎖獲取事件。這里,已經(jīng)檢測到并且取消了開 始臨界段操作。例如,將鎖值存儲在位于鎖堆棧上的鎖指令項(L正)中,該鎖值 將獲取臨界段的鎖。后期鎖獲取事件的例子包括計時器的到期,±真滿的高速緩 存集合,以及不可撤回事件。
在一個實施例中,計時器的至嗍包括監(jiān)視計時器的到期。這里,響應(yīng)于檢 領(lǐ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真滿的高速緩存集合的收回來啟動后期鎖獲取。
作為另一個例子,后期鎖獲取事件可以包括不可撤回事件的檢測,即可能
是不容易廢止的事件、過程或訪問。作為具體的例子,1/o訪問通常是不可撤回
的,因為x寸i/o設(shè)備的訪問t歐隹是不恰當(dāng)?shù)摹R虼?,響?yīng)于檢測到i/o訪問,來
啟動后期鎖獲取。
然后,在流程310中,在檢測到后期鎖獲取之后,確定是否已經(jīng)全局B見 察到先前的填充緩沖器項(FBE)。如果沒有全局上觀察到先前的項,那么停止后 期鎖獲取^即沒有啟動后期鎖獲取,直到在流程315中全局上觀察至U/排序先 前的FBE。在一個實施例中,全局上觀察到包括以任何方式排序,例如在總紛 互連上要完成的分派。還是作為一個例子,后期鎖獲取的停止包括更新與具有 PM值的后期鎖獲取存儲相關(guān)聯(lián)的存儲緩沖器項。
作為另一個后期鎖獲取的可能預(yù)先條件,在流程320中確定當(dāng)前臨界段鎖 值是否已經(jīng)更新了鎖堆棧。如上所述,臨界段的開始臨界段指令通常包括通過 對鎖位置存儲鎖值來獲取鎖的存儲指令。但是,在HLE期間,對鎖位置取消了 存儲并且在與臨界段有關(guān)的鎖堆棧項中記錄鎖值。在一個實施例中,比如在流 程335中,停止高級存儲。但是,因為在后期鎖獲取期間將利用來自鎖堆棧的 鎖值,在存儲高級停止之前,停止了后期鎖獲取直到在流程325中鎖f鼓新了 鎖堆棧。
然后,在流程330中啟動后期鎖獲取。在一個實施例中,啟動后期鎖獲取 包括啟動存儲操作以將來自鎖堆棧的鎖值存儲到鎖位置以獲取鎖。注意后期鎖 獲取可能失敗,如同在流程345中那樣,并且在流程355中可中斷并重試臨界 段。例如,在后期鎖獲取期間,可能已經(jīng)由另一個處理部件獲取了該鎖。這里, 后期鎖獲取可能自旋直到鎖被釋放然后當(dāng)它由另 一個處理部件釋放的時候獲取 鎖。換句話說,后期鎖獲取鼓即規(guī)的并且中斷/重新開始臨界段。
在一個實施例中,如在流程335中所示,在后期鎖獲取期間停止高級存儲。 注意,可在流程345中成功地完成后期鎖獲取,而不檢測后續(xù)的臨界段;而在 這樣情況下,對力喊以及高級存《縦fi^率鎖,而在流程350中臨界段與鎖的執(zhí) 《預(yù)繼續(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—SJ去創(chuàng)建檢査點。這里,可以利用 與上述的阻塞代碼字段類似的阻塞代碼字段來阻塞訪問。為了說明,第一個阻 塞代碼字段是MOB—BLOCK—CODE字段并且第二個阻塞代碼字段是 HLE_BLOCK—CODE字段。類似地,當(dāng)完成后期鎖獲取的時候,將值廣播以釋 鐘鎖L—S—Io
如同上述所說明的,可以禾lJ用事務(wù)性存儲器和/或硬件鎖省ffl^HLE)來執(zhí)行 臨界段。作為中斷臨界段以及通過再試臨界段而浪費先前執(zhí)行周期的替代,后 期鎖獲取可以嘗試?yán)^續(xù)向前執(zhí)行臨界段。但是,為了避免死鎖以及無效數(shù)據(jù), 在啟動后期鎖獲取之前以及在后期鎖獲取期間,可以選擇地施加某些條件。例 如,可以停止后續(xù)連貫的臨界段直到對于當(dāng)前臨界段完成后期鎖獲取以保證相 干性以及 有效性。
可以通過存儲在機(jī)器可訪問或者機(jī)器可讀介質(zhì)上的、可由處理部##1行的 指令或者代碼來實5Lh面所闡述的方法、軟件、固件或代碼的實施例。機(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、一種裝置,包括處理部件,其執(zhí)行臨界段,所述臨界段由開始臨界段操作和終止臨界段操作來劃界,其中所述開始臨界段操作參考鎖值和地址;存儲區(qū),其與處理部件相關(guān)聯(lián)以保持與所述臨界段相關(guān)聯(lián)的項,所述項保持所述鎖值;以及后期鎖獲取邏輯,其與所述存儲區(qū)耦合,以響應(yīng)于在所述臨界段的未決期間遇到后期鎖獲取事件來嘗試對地址的鎖值更新。
2、 如權(quán)利要求1戶脫的裝置,^)t征在于,還包括與所述處理部件相 關(guān)聯(lián)的高速緩存存儲器,其中所述高速緩存存儲器的線將與戶;mj:也址相關(guān),并 且其中嘗試對地址鎖值更新的后期鎖獲取邏輯包括后期鎖獲取邏輯以嘗試對高 速緩存存儲器線的鎖值更新。
3、 如權(quán)利要求2戸;m的裝置,其特征在于,存儲區(qū)將在項堆棧中保存項并且所述項還將保持地址的表示,并且其中所述開始臨界段操作包括對所述地 址的鎖值存儲操作,當(dāng)通過所述處理部#^行所述鎖值的存儲操作時,對與所 述臨界段相關(guān)聯(lián)的項而不是戶,地址進(jìn)行所述鎖值的存儲操作。
4、 如權(quán)利要求3所述的裝置,其特征在于,與所述處理部件相關(guān)聯(lián)的 存儲緩沖器將保持與所述鎖值的存儲相關(guān)的存儲項,所述存儲項包括阻塞代碼 字段,其中與所述存儲緩沖器相關(guān)的更新邏輯將響應(yīng)于所遇到的后期鎖獲取事 件將所述卩M代碼字段,為阻塞值。
5、 如權(quán)利要求4所述的裝置,其特征在于,更新邏輯響應(yīng)于由后期鎖 獲取邏輯嘗i^ffi所述鎖值更新高速緩存存儲器線是成功的來將所述PM代碼字 段更新為解鎖值。
6、 如權(quán)利要求5所述的裝置,其特征在于,由后期鎖獲取邏輯嘗試更 新高速緩存存儲器線是成功的包括在所述高速緩存存儲器線中表,鎖值的當(dāng)前值允許執(zhí)行由鎖值的后期鎖獲取邏輯戶,行的Mi 。
7、 如權(quán)利要求1所述的裝置,其特征在于,后期鎖獲取事件是從由計 時器到期事件、填滿的高速緩存集合事件以及不可撤回事件所組成的分組中挑 選出來。
8、 一種裝置,包括處理部件,其執(zhí)行當(dāng)前臨界段以及后續(xù)的臨界段;與所述處理部件相關(guān)聯(lián)的訪問緩沖器,其保持與來自所述后續(xù)臨界段的訪 問操作相關(guān)聯(lián)的訪問項,所述訪問緩沖器項包括阻塞代碼字段,其中所述阻塞代碼字段將保持卩IM直以指示將卩M^M訪問操作的分派;以及與所述訪問緩沖器相耦合的更新邏輯,其響應(yīng)于檢須倒與所述當(dāng)前臨界段相關(guān)聯(lián)的后期鎖獲取事件來:^i 所述ffis代碼字段以保持阻塞值。
9、 如權(quán)利要求8所述的裝置,其特征在于,所述PM代碼字段將默認(rèn) 地保持解鎖值以指示將要分派所述訪問操作。
10、 如權(quán)利要求8所述的裝置,其特征在于,所述后期鎖獲取事件是從 由計時器期滿事件、i真滿的高速緩存集合事件以及不可撤回事件所組成的分組 中衫,出來。
11、 如權(quán)禾腰求8所述的裝置,其特征在于,所述更縦輯響應(yīng)于檢測 至U所述后期鎖獲取事件以及響應(yīng)于滿足后期鎖獲取預(yù)先條件來將所述阻塞代碼 字段更新為所述卩im值。
12、 如權(quán)利要求11所述的裝置,其特征在于,所述后期鎖獲取預(yù)先割牛 包括允^^局上觀察到多個未解決的±真充緩沖器項。
13、 如權(quán)利要求11所述的裝置,其特征在于,戶,訪問緩沖器是加載緩 沖器,并且其中所述訪問操作包括后續(xù)的具有存儲意圖的加載(L_S_I)操作以 指明所述后續(xù)臨界段的開始。
14、 如權(quán)利要求13所述的裝置,其特征在于,還包括鎖堆棧,其包括與 指明當(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所述的裝置,其特征在于,臓隨值包括標(biāo)識符, 并且其中響應(yīng)于后期鎖獲取的完成,戶腿更新邏輯將所述標(biāo)識符廣播到所述加 載緩沖器項以允許分派L—S_I操作。
16、 一種方法,包括 在當(dāng)前臨界段執(zhí)行期間檢測后期鎖獲取事件; 啟動對于所述當(dāng)前臨界段的后期鎖獲取;以及 響應(yīng)于對于所述當(dāng)前臨界段啟動所述后期鎖獲取來卩M:多個高級存儲。
17、 如權(quán)利要求16所述的方法,其特征在于,所述后期鎖獲取事件是從 包括監(jiān)視計時器到期、對于已經(jīng)在所述臨界段的執(zhí)行期間跟蹤存儲器存取的收 回選擇高速緩存線、以及遇到不可撤回事件的分組中選出來的。
18、 如權(quán)利要求16所述的方法,其特征在于,對于所述當(dāng)前臨界段啟動 后期鎖獲取包括啟動參考鎖地址的鎖值存儲,所述鎖值以及地址保持在與戶, 當(dāng)前臨界段的開始臨界段操作相關(guān)聯(lián)的鎖堆棧項中。
19、 如權(quán)利要求18所述的方法,其特征在于,所述多個高級存儲被保持 在存儲緩沖器中,并且其中所述多個高級存儲被解鎖,以響應(yīng)于參照所述鎖地 址退役的鎖值的存儲來分配。
20、 如權(quán)禾腰求16戶脫的方法,其特征在于,響應(yīng)于全局上觀察至眵個 未決的填充緩沖器項來啟動所述臨界段的所述后期鎖獲取,并且用鎖值來更新 確定與所述臨界段相關(guān)聯(lián)的鎖堆棧項。
21、 如權(quán)利要求20所述的方法,其特征在于,還包括 對后續(xù)臨界段檢測后續(xù)開始臨界段操作;及 阻塞與戶腿后續(xù)臨界段相關(guān)的檢査點的創(chuàng)建。
22、 如權(quán)禾腰求21所述的方法,其特征在于,卩腫與后續(xù)臨界段相關(guān)的 檢查點的創(chuàng)建是響應(yīng)于檢觀倒所述后續(xù)的開始臨界段操作的。
23、 如權(quán)禾腰求21戶脫的方法,其特征在于,還包括確定戶脫后續(xù)的 臨界段不是嵌套臨界段,其中阻塞所述檢査點的創(chuàng)建是響應(yīng)于確定所述后續(xù)的 臨界段不是嵌套臨界段的。
24、 如權(quán)禾腰求23所述的方法,其特征在于,確定戶脫后續(xù)的臨界段不 是嵌套臨界段包括響應(yīng)于戶腿存條l沖器保持存儲緩沖器項來排空存儲緩沖器; 響應(yīng)于戶脫存儲緩沖器是排空的對沒有檢觀倒當(dāng)前終止臨界段操作作出響應(yīng)來確定所述后續(xù)臨界段是 嵌套臨界段;以及對檢湖倒當(dāng)前終止臨界鵬作作出響應(yīng)來確定所述后續(xù)臨界段不是嵌 套臨界段。
25、 如權(quán)利要求21所述的方法,其特征在于,對于所述后續(xù)臨界段的所 述開始臨界段操作包括具有存儲意向的加載(L—SJ)操作,并且其中阻塞與所述后續(xù)臨界段相關(guān)的檢查點的倉犍包括阻塞戶脫L—SJ操作l鈔人加載緩沖器中分 配。
全文摘要
本發(fā)明描述了用于硬件鎖省略(HLE)的后期鎖獲取機(jī)制的方法和裝置。響應(yīng)于檢測到后期鎖獲取事件,如計時器期滿、填滿的高速緩存集合以及不可撤回事件,可啟動后期鎖獲取。停止連貫的臨界段直到利用與連貫的臨界段操作相關(guān)聯(lián)的訪問緩沖器項的字段來完成后期鎖獲取。
文檔編號G06F9/52GK101458636SQ20081019083
公開日2009年6月17日 申請日期2008年11月7日 優(yōu)先權(quán)日2007年11月7日
發(fā)明者H·阿卡瑞, R·拉杰瓦, S·T·斯里尼瓦桑 申請人:英特爾公司