專利名稱:擴展高速緩存一致性協(xié)議以支持本地緩沖的數(shù)據(jù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器執(zhí)行領(lǐng)域,并且具體地說,涉及成群指令的執(zhí)行。
背景技術(shù):
半導(dǎo)體加工和邏輯設(shè)計的發(fā)展允許增加可在集成電路裝置上存在的邏輯量。因 此,計算機系統(tǒng)配置已從系統(tǒng)中單個或多個集成電路發(fā)展到在各個集成電路上存在多核和 多個邏輯處理器。處理器或集成電路一般包括單個處理器管芯,其中處理器管芯可包括任 意數(shù)量的核或邏輯處理器。 集成電路上數(shù)量不斷增大的核和邏輯處理器允許更多軟件線程同時執(zhí)行。然而, 可同時執(zhí)行的軟件線程數(shù)量的增大造成了同步在軟件線程之間共享的數(shù)據(jù)有關(guān)的問題。在 多核或多個邏輯處理器系統(tǒng)中訪問共享數(shù)據(jù)的一個常見解決方案包括使用鎖來保證在對 共享數(shù)據(jù)的多次訪問之間的相互排斥。然而,不斷增長的執(zhí)行多個軟件線程的能力可能導(dǎo) 致錯誤爭用和執(zhí)行的串行化。 例如,假設(shè)有保存共享數(shù)據(jù)的哈希表。通過鎖系統(tǒng),程序員可鎖定整個哈希表,允 許一個線程訪問整個哈希表。然而,其它線程的吞吐量和性能可能受到不利影響,因為它們 在鎖釋放前無法訪問哈希表中的任何項目。備選,可鎖定哈希表中的每個項目。無論是哪 一種方式,在將此簡單的示例推斷到大的可擴展程序中后,鎖爭用、串行化、精細顆粒同步 及死鎖避免的復(fù)雜性對程序員明顯變成極為沉重的負擔。 另一種最近的數(shù)據(jù)同步技術(shù)包括事務(wù)存儲器(TM)的使用。事務(wù)執(zhí)行經(jīng)常包括執(zhí) 行一群多個微操作、操作或指令。在上述示例中,兩個線程均在哈希表內(nèi)執(zhí)行,并且其存儲 器訪問受到監(jiān)視/跟蹤。如果兩個線程均訪問/改變同一項目,則沖突消解可執(zhí)行以確保 數(shù)據(jù)有效性。 一種類型的事務(wù)執(zhí)行包括軟件事務(wù)存儲器(STM),其中,以軟件形式執(zhí)行存儲 器訪問的跟蹤、沖突消解、中止任務(wù)和其它事務(wù)任務(wù),而經(jīng)常無需硬件支持。
另一種類型的事務(wù)執(zhí)行包括硬件事務(wù)存儲器(HTM)系統(tǒng),其中,包括硬件以支持 訪問跟蹤、沖突消解和其它事務(wù)任務(wù)。以前的HTM利用單獨的寫入緩沖器結(jié)構(gòu)緩沖到存儲 單元(memory location)的事務(wù)寫入。然而,添加單獨的緩沖器可能增加處理器的成本和 復(fù)雜性及減緩事務(wù)提交過程。
發(fā)明內(nèi)容
本發(fā)明的第一方面在于一種設(shè)備,包括執(zhí)行資源,執(zhí)行引用與數(shù)據(jù)項相關(guān)聯(lián)的地 址的事務(wù)內(nèi)的事務(wù)存儲操作;以及耦合到所述執(zhí)行資源的存儲器,所述存儲器響應(yīng)所述執(zhí) 行資源執(zhí)行所述事務(wù)存儲操作而將所述數(shù)據(jù)項保持在緩沖一致性狀態(tài)。 本發(fā)明的第二方面在于一種處理器,包括高速緩沖存儲器,響應(yīng)執(zhí)行存儲操作而 在要保持在緩沖一致性狀態(tài)的高速緩存行中保存至少部分數(shù)據(jù)項,所述存儲操作要引用所 述數(shù)據(jù)項和要選擇用于緩沖;以及與所述高速緩沖存儲器相關(guān)聯(lián)的控制邏輯,響應(yīng)在所述 高速緩存行保持在所述緩沖一致性狀態(tài)時接收與所述高速緩存行相關(guān)聯(lián)的外部訪問請求,提供未命中響應(yīng)。 本發(fā)明的第三方面在于一種設(shè)備,包括高速緩沖存儲器,響應(yīng)所述數(shù)據(jù)項在事務(wù) 內(nèi)被事務(wù)性訪問(transactionally accessed)而在要與緩沖一致性狀態(tài)相關(guān)聯(lián)的高速緩 存行中保存至少部分數(shù)據(jù)項;以及與所述高速緩沖存儲器相關(guān)聯(lián)的控制邏輯,所述控制邏 輯響應(yīng)所述事務(wù)被提交而將所述高速緩存行從與所述緩沖一致性狀態(tài)相關(guān)聯(lián)轉(zhuǎn)變?yōu)樾薷?一致性狀態(tài)。 本發(fā)明的第四方面在于一種系統(tǒng),包括處理器,包括存儲器和耦合到所述存儲 器的控制邏輯,所述存儲器包括用于響應(yīng)所述數(shù)據(jù)項被事務(wù)性寫入而保存至少部分數(shù)據(jù)項 的、在緩沖狀態(tài)的行,以及所述控制邏輯響應(yīng)對在所述緩沖狀態(tài)的所述行的本地訪問請求 而提供命中響應(yīng)并且響應(yīng)對在所述緩沖狀態(tài)的所述行的非本地訪問請求而提供未命中響 應(yīng);以及耦合到所述處理器的輸入/輸出(I/O)裝置。 本發(fā)明的第五方面在于一種方法,包括遇到引用與數(shù)據(jù)項相關(guān)聯(lián)的地址的事務(wù) 存儲;響應(yīng)遇到所述事務(wù)存儲,執(zhí)行所述數(shù)據(jù)項的緩沖存儲以將所述數(shù)據(jù)項與緩沖狀態(tài)相 關(guān)聯(lián);以及響應(yīng)所述數(shù)據(jù)項與所述緩沖狀態(tài)相關(guān)聯(lián),為對所述數(shù)據(jù)項的本地訪問提供命中 響應(yīng),并且為對所述數(shù)據(jù)項的外部訪問提供未命中響應(yīng)。
本發(fā)明通過示例描述,并不是要限于附圖的圖形。 圖1示出包括能夠同時執(zhí)行多個軟件線程的多個處理部件(PE)的處理器的實施 例。 圖2示出將一致性狀態(tài)與高速緩沖存儲器中保存的數(shù)據(jù)項相關(guān)聯(lián)的實施例。 圖3示出包括緩沖狀態(tài)的狀態(tài)轉(zhuǎn)變圖的實施例。 圖4示出用于確定是否要緩沖訪問操作的方法的流程圖的實施例。 圖5示出用于支持緩沖數(shù)據(jù)的方法的流程圖的實施例。
具體實施例方式
在下面的說明中,陳述了許多特定的細節(jié),如用于事務(wù)執(zhí)行的特定硬件結(jié)構(gòu)、訪問 監(jiān)視器(monitor)的特定類型和實現(xiàn)、特定高速緩存實現(xiàn)、特定類型高速緩存一致性模型、 特定數(shù)據(jù)粒度及特定類型的存儲器訪問和位置等示例,以便提供本發(fā)明的詳盡理解。但是, 本領(lǐng)域的技術(shù)人員將明白,實踐本發(fā)明可無需采用這些特定細節(jié)。在其它實例中,諸如事務(wù) 軟件形式的編碼、事務(wù)的分界、特定和備選多核和多線程處理器架構(gòu)、特定的編譯器方法/ 實現(xiàn)及微處理器的特定操作細節(jié)等熟知的組件或方法未詳細描述,以免不必要地混淆本發(fā) 明。 本文中所述的方法和設(shè)備用于擴展高速緩存一致性以支持緩沖數(shù)據(jù)。具體而言,
參照硬件事務(wù)存儲器系統(tǒng)論述擴展高速緩存一致性。然而,用于支持緩沖數(shù)據(jù)的方法和設(shè)
備不受此限制,這是因為它們可為任何樣式的執(zhí)行實現(xiàn)以支持緩沖數(shù)據(jù)。 參照圖l,它示出能夠同時執(zhí)行多線程的處理器的實施例。注意,處理器100可包
括用于硬件事務(wù)執(zhí)行的硬件支持。無論是結(jié)合硬件事務(wù)執(zhí)行或以單獨的方式,處理器100
也可為軟件事務(wù)存儲器(STM)的硬件加速、STM的單獨執(zhí)行或諸如混合事務(wù)存儲器(TM)系統(tǒng)等其組合提供硬件支持。處理器100包括諸如微處理器、嵌入式處理器、數(shù)字信號處理器 (DSP)、網(wǎng)絡(luò)處理器等任何處理器或執(zhí)行代碼的其它裝置。處理器100如圖所示包括多個處 理部件。 在一個實施例中,處理部件指線程單元、進程單元(process unit)、上下文、邏輯 處理器、硬件線程、核和/或能夠為處理器保存狀態(tài)的任何其它部件,諸如執(zhí)行狀態(tài)或架構(gòu) 狀態(tài)(architectural state)等。換而言之,在一個實施例中,處理部件指能夠與諸如軟件 線程、操作系統(tǒng)、應(yīng)用程序等代碼或其它代碼獨立相關(guān)聯(lián)的任何硬件。物理處理器一般指集 成電路,它可能包括任何數(shù)量的其它處理部件,如核或硬件線程。 核經(jīng)常指位于能夠保持獨立架構(gòu)狀態(tài)的集成電路上的邏輯,其中每個獨立保持的 架構(gòu)狀態(tài)與至少一些專用執(zhí)行資源相關(guān)聯(lián)。與核不同,硬件線程一般指位于能夠保持獨立 架構(gòu)狀態(tài)的集成電路上的任何邏輯,其中獨立保持的架構(gòu)狀態(tài)共享對執(zhí)行資源的訪問。正 如可看到的一樣,在某些資源共享,并且其它資源專用于某種架構(gòu)狀態(tài)時,硬件線程與核的 命名之間的界線重疊。然而,核和硬件線程經(jīng)常被操作系統(tǒng)視為單獨的邏輯處理器,這種情 況下,操作系統(tǒng)能夠單獨調(diào)度每個邏輯處理器上的操作。 物理處理器100如圖1所示包括共享對更高級高速緩存110的訪問的兩個核,核 101和102。雖然處理器100可包括非對稱核,即,帶有不同配置、功能單元和/或邏輯的 核,但所示是對稱核。因此,示為與核101相同的核102將不詳細論述以避免重復(fù)論述。另 外,核101包括兩個硬件線程10la和101b,而核102包括兩個硬件線程102a和102b。因 此,諸如操作系統(tǒng)等軟件實體可能將處理器IOO視為四個單獨的處理器,S卩,能夠同時執(zhí)行 四個軟件線程的四個邏輯處理器或處理部件。 此處,第一線程與架構(gòu)狀態(tài)寄存器101a相關(guān)聯(lián),第二線程與架構(gòu)狀態(tài)寄存器101b 相關(guān)聯(lián),第三線程與架構(gòu)狀態(tài)寄存器102a相關(guān)聯(lián),以及第四線程與架構(gòu)狀態(tài)寄存器102b相 關(guān)聯(lián)。如圖所示,架構(gòu)狀態(tài)寄存器101a在架構(gòu)狀態(tài)寄存器101b中復(fù)制,以便各個架構(gòu)狀態(tài) /上下文能夠存儲用于邏輯處理器101a和邏輯處理器101b。諸如指令指示符和重命名分 配器邏輯(rename allocater logic) 130中的重命名邏輯等其它更小的資源也可復(fù)制用于 線程101a和101b。諸如重排序/退役單元(reorder/retirement unit) 135中的重排序 緩沖器、ILTB 120、加載/存儲緩沖器及隊列等一些資源可通過分區(qū)共享。諸如通用內(nèi)部寄 存器、頁表基址寄存器、低級數(shù)據(jù)高速緩存和數(shù)據(jù)TLB 115、執(zhí)行單元140及部分無序單元 (out-of-order unit) 135等其它資源可能被完全共享。 處理器100經(jīng)常包括其它資源,這些資源可完全共享,通過分區(qū)共享或由處理部 件專用/專用于處理部件。在圖1中,示出了帶有處理器的說明性功能單元/資源的純示 范處理器的實施例。注意,處理器可包括或忽略任何這些功能單元以及包括任何其它熟知 的未示出功能單元、邏輯或固件。 如圖所示,處理器IOO包括總線接口模塊105以便與處理器IOO外的裝置通信,諸 如系統(tǒng)存儲器175、芯片集、北橋或其它集成電路。存儲器175可專用于處理器100或與系 統(tǒng)中的其它裝置共享。更高級或更進一步向外的高速緩存(further-out cache) 110要將 最近從更高級高速緩存110獲取的元素高速緩存。注意,更高級或更進一步向外指高速緩 存級另ll增大,或者離執(zhí)行單元更遠(getting further way from theexecution皿it(s))。 在一個實施例中,更高級高速緩存110是二級數(shù)據(jù)高速緩存。然而,更高級高速緩存110并不限于此,它可以與指令高速緩存相關(guān)聯(lián)或者包括指令高速緩存。追蹤高速緩存(trace cache),即一種類型的指令高速緩存,可轉(zhuǎn)為在解碼器125后耦合以存儲最近解碼的追蹤 (decoded trace)。模塊120也可能包括預(yù)測要執(zhí)行/使用的分支的分支目標緩沖器(BTB, branch target buffer)和存儲指令的地址轉(zhuǎn)換項目的指令轉(zhuǎn)換緩沖器(I-TLB)。
解碼模塊125耦合到獲取單元120以將獲取的元素解碼。在一個實施例中,處理 器100與指令系統(tǒng)結(jié)構(gòu)(ISA)相關(guān)聯(lián),指令系統(tǒng)結(jié)構(gòu)(ISA)定義/指定可在處理器100上 執(zhí)行的指令。此處,ISA識別的機器代碼指令經(jīng)常包括稱為操作碼的部分指令,操作碼引用 /指定要執(zhí)行的指令或操作。 在一個示例中,分配器和重命名器塊130包括分配器以保留資源,諸如存儲指令 處理結(jié)果的寄存器文件。但是,線程101a和lOlb可能能夠無序執(zhí)行,這種情況下,分配器 和重命名器塊130也保留其它資源,如重排序緩沖器以跟蹤指令結(jié)果。單元130也可包括 寄存器重命名器以將程序/指令引用寄存器重命名為處理器100內(nèi)部的其它寄存器。重排 序/退役單元135包括支持無序執(zhí)行和無序執(zhí)行指令以后有序退役的組件,如上述重排序 緩沖器、加載緩沖器和存儲緩沖器。 在一個實施例中,調(diào)度器和執(zhí)行單元塊140包括在執(zhí)行單元上調(diào)度指令/操作 的調(diào)度器單元。例如,浮點指令在具有可用浮點執(zhí)行單元的執(zhí)行單元端口上調(diào)度。與執(zhí) 行單元相關(guān)聯(lián)的寄存器文件也包括在內(nèi),以存儲信息指令處理結(jié)果。示范執(zhí)行單元包 括浮點執(zhí)行單元、整數(shù)執(zhí)行單元、跳轉(zhuǎn)執(zhí)行單元(jump execution unit)、加載執(zhí)行單元 (loadexecution unit)、存儲執(zhí)行單元及其它熟知的執(zhí)行單元。 更低級數(shù)據(jù)高速緩存和數(shù)據(jù)轉(zhuǎn)換緩沖器(D-TLB) 150耦合到執(zhí)行單元140。數(shù)據(jù)高 速緩存要存儲最近使用/操作針對的元素,如數(shù)據(jù)操作數(shù),這些元素可能保持在存儲器一 致性狀態(tài)。D-TLB要用于存儲最近的虛擬/線性到物理地址轉(zhuǎn)換。作為一個特定的示例,處 理器可包括頁表結(jié)構(gòu)以將物理存儲器分成多個虛頁。 在一個實施例中,處理器100能夠硬件事務(wù)執(zhí)行、軟件事務(wù)執(zhí)行或其組合或混合。 也可稱為代碼的關(guān)鍵節(jié)段或原子節(jié)段(critical oratomic section)的事務(wù)包括要作為原 子群(atomic group)執(zhí)行的一群指令、操作或微操作。例如,指令或操作可用于將事務(wù)或 關(guān)鍵節(jié)段分界。在下面更詳細描述的一個實施例中,這些指令是諸如指令系統(tǒng)結(jié)構(gòu)(ISA) 等指令集的一部分,可由諸如上述解碼器等處理器100的硬件識別。 一旦從高級語言編譯 為硬件可識別匯編語言,這些指令經(jīng)常包括解碼器在解碼階段期間識別的操作代碼(操作 碼)或其它部分的指令。 —般情況下,在事務(wù)執(zhí)行期間,在提交事務(wù)前不使對存儲器的更新全局可見。例 如,對某個單元的事務(wù)寫入可能對本地線程可見,然而,響應(yīng)來自另一線程的讀取,在包括 事務(wù)寫入的事務(wù)被提交前,寫數(shù)據(jù)不轉(zhuǎn)發(fā)。雖然事務(wù)仍在等待處理,但如下面更詳細論述的 一樣,從存儲器內(nèi)加載和寫入存儲器內(nèi)的數(shù)據(jù)項/元素被跟蹤。 一旦事務(wù)到達提交點,如果 未檢測到事務(wù)沖突,則提交事務(wù),并且使在事務(wù)期間所做的更新全局可見。
然而,如果事務(wù)在其未決期間無效,則事務(wù)被中止并且可能重新開始而不使更新 全局可見。因此,在本文中使用時,事務(wù)的未決指已開始執(zhí)行但尚未提交或中止的事務(wù),即 等待處理。 軟件事務(wù)存儲器(STM)系統(tǒng)經(jīng)常指以軟件形式或至少部分以軟件形式執(zhí)行訪問跟蹤、沖突消解或其它事務(wù)存儲器任務(wù)。在一個實施例中,處理器100能夠執(zhí)行編譯器以編 譯程序代碼,從而支持事務(wù)執(zhí)行。此處,編譯器可插入操作、調(diào)用、函數(shù)和其它代碼以允許事
務(wù)的執(zhí)行。 編譯器經(jīng)常包括程序或程序集以將源文本/代碼轉(zhuǎn)換成目標文本/代碼。通常, 通過編譯器編譯程序/應(yīng)用碼在多個階段和多遍完成,以將高級編程語言代碼變換成低級 機器或匯編語言代碼。然而,單遍編譯器可仍用于簡單的編譯。編譯器可利用任何已知的 編譯技術(shù),并執(zhí)行任何已知的編譯器操作,如詞匯分析、預(yù)處理、句法分析、語義分析、代碼 生成、代碼變換及代碼優(yōu)化。 更大的編譯器經(jīng)常包括多個階段,但這些階段大多通常包括在兩個一般階段內(nèi)
(1) 前端,即通常可發(fā)生句法處理、語義處理及一些變換/優(yōu)化之處,以及(2)后端,即通常 發(fā)生分析、變換、優(yōu)化和代碼生成之處。 一些編譯器涉及中間端,這示出了在編譯器的前端 與后端之間輪廓的模糊性。因此,對編譯器的插入、關(guān)聯(lián)、生成或其它操作的引用可在任何 上述階段或遍中及編譯器的任何其它已知階段或遍中發(fā)生。作為說明性示例,編譯器可能 在編譯的一個或多個階段中插入事務(wù)操作、調(diào)用、函數(shù)等,諸如在編譯的前端階段插入調(diào)用 /操作和隨后在事務(wù)存儲器變換階段期間將調(diào)用/操作變換成更低級代碼。 不過,不論編譯器的執(zhí)行環(huán)境和動態(tài)或靜態(tài)性質(zhì)如何,在一個實施例中,編譯器將 程序代碼編譯以允許事務(wù)執(zhí)行。因此,在一個實施例中,對程序代碼的執(zhí)行的引用指(1)動 態(tài)或靜態(tài)執(zhí)行編譯器程序以編譯主程序代碼,維持事務(wù)結(jié)構(gòu)或執(zhí)行其它事務(wù)有關(guān)的操作,
(2) 執(zhí)行主程序代碼,包括事務(wù)操作/調(diào)用,(3)執(zhí)行與主程序代碼相關(guān)聯(lián)的其它程序代碼, 如庫,或者(4)其組合。 在一個實施例中,處理器100能夠利用硬件/邏輯,即在硬件事務(wù)存儲器(HTM)系 統(tǒng)內(nèi)執(zhí)行事務(wù)。在實現(xiàn)HTM時,從架構(gòu)和微架構(gòu)角度均存在許多特定的實現(xiàn)細節(jié);大多數(shù) 細節(jié)在本文中未論述以避免不必要地混淆本發(fā)明。然而,為說明目的,公開了一些結(jié)構(gòu)和實 現(xiàn)。但是,應(yīng)注意的是,這些結(jié)構(gòu)和實現(xiàn)不是必需的,并且可增加和/或替代為具有不同實 現(xiàn)細節(jié)的其它結(jié)構(gòu)。 對數(shù)據(jù)項的訪問和請求可由本地處理部件及可能由其它處理部件進行。如果事務(wù) 存儲器系統(tǒng)中無安全機制,則這些訪問中的一些訪問將可能導(dǎo)致無效數(shù)據(jù)和執(zhí)行,即,數(shù)據(jù) 的寫入使讀取無效或讀取無效數(shù)據(jù)。因此,處理器100可能包括邏輯以跟蹤或監(jiān)視去往和 來自數(shù)據(jù)項的存儲器訪問,以識別可能的沖突。 數(shù)據(jù)項或數(shù)據(jù)元素可包括在如由硬件、軟件或其組合定義的任何粒度級別的數(shù) 據(jù)。數(shù)據(jù)、數(shù)據(jù)元素、類和數(shù)據(jù)項或其引用的示例的非詳盡列表包括存儲器地址、數(shù)據(jù)對象、 某種類型的動態(tài)語言代碼的字段、某種類型的動態(tài)語言代碼、變量、操作符、數(shù)據(jù)結(jié)構(gòu)及對 存儲器地址的間接引用。然而,數(shù)據(jù)的任何已知分組可稱為數(shù)據(jù)元素或數(shù)據(jù)項。諸如某種 類型的動態(tài)語言代碼的字段和某種類型的動態(tài)語言代碼等上面很少的幾個示例涉及動態(tài) 語言代碼的數(shù)據(jù)結(jié)構(gòu)。舉例來說,諸如Sun Microsystems, Inc.的Java 等動態(tài)語言代碼 是強類型語言。每個變量具有在編譯時已知的類型。類型分成兩個類別-基本類型(布爾 和數(shù)字,例如,整數(shù)、浮點)和引用類型(類、接口和數(shù)組)。引用類型的值是對象引用。在 JavaTM中,由字段組成的對象可以是類實例或數(shù)組。假設(shè)有類A的對象a,通常使用符號A: :x 表示類型A的字段x, a. x表示類A的對象a的字段x。例如, 一個表達式可表示為a. x =a. y+a. z。此處,字段y和字段z被加載以相加,并且結(jié)果要寫入字段x。
因此,監(jiān)視/緩沖對數(shù)據(jù)項的存儲器訪問可在任何數(shù)據(jù)級別粒度執(zhí)行。例如,在一 個實施例中,在類型級別監(jiān)視對數(shù)據(jù)的存儲器訪問。此處,到字段A: :x的事務(wù)寫入和字段 A::y的非事務(wù)加載可作為對相同數(shù)據(jù)項,即類型A,的訪問受到監(jiān)視。在另一實施例中,在 字段級別粒度執(zhí)行存儲器訪問監(jiān)視/緩沖。此處,到A: :x的事務(wù)寫入和A: :y的非事務(wù)加 載不是作為對相同數(shù)據(jù)項的訪問受監(jiān)視,因為它們是對單獨字段的引用。注意,在跟蹤對數(shù) 據(jù)項的存儲器訪問中,可將其它數(shù)據(jù)結(jié)構(gòu)或編程技術(shù)考慮在內(nèi)。例如,假設(shè)類A對象的字段 x和y,即A: :x和A: :y,指向類B的對象,被初始化為新分配的對象,并且在初始化后從未被 寫入。在一個實施例中,關(guān)于A::y指向的對象的字段B::z的非事務(wù)加載,到A: :x指向的 對象的字段B::z的事務(wù)寫入不作為對相同數(shù)據(jù)項的存儲器訪問受到監(jiān)視。從這些示例推 斷,可能確定監(jiān)視器可在任何數(shù)據(jù)粒度級別執(zhí)行監(jiān)視/緩沖。 在一個實施例中,監(jiān)視器包括讀取監(jiān)視器和寫入監(jiān)視器以相應(yīng)地跟蹤確定要監(jiān)視 的加載和存儲。例如,硬件讀取監(jiān)視器和寫入監(jiān)視器要在數(shù)據(jù)項的某個粒度監(jiān)視數(shù)據(jù)項,而 不論基礎(chǔ)存儲結(jié)構(gòu)的粒度如何。在一個實施例中,通過在存儲結(jié)構(gòu)的粒度相關(guān)聯(lián)的跟蹤機 制約束數(shù)據(jù)項以確保至少整個數(shù)據(jù)項受到適當監(jiān)視。在Gad Sheaffer等人同本申請一起 提交,代理人案號為P29130,題為"事務(wù)存儲器(TM)系統(tǒng)中的讀取和寫入監(jiān)視屬性"(Read and Write Monitoring Attributes inTransactional Memory (TM) Systems)的共同待定申 請XX/XXX, XXX中更詳細地論述了利用讀取監(jiān)視器/屬性來監(jiān)視數(shù)據(jù)項的示例。然而,監(jiān)視 器、屬性、注釋或其它跟蹤機制可用于檢測與利用數(shù)據(jù)或結(jié)構(gòu)的任何粒度保存數(shù)據(jù)的事務(wù) 執(zhí)行相關(guān)聯(lián)的沖突。 注意,傳統(tǒng)MESI狀態(tài)可增加和/或替代為緩沖狀態(tài),諸如不受監(jiān)視緩沖狀態(tài)、寫入 受監(jiān)視緩沖狀態(tài)、讀取受監(jiān)視緩沖狀態(tài)或其它緩沖狀態(tài)。因此,現(xiàn)有已知一致性和通信/窺 探協(xié)議可與硬件監(jiān)視器/屬性組合用于檢測沖突。下面更詳細地描述保存緩沖數(shù)據(jù)的傳統(tǒng) MESI —致性狀態(tài)的擴展。 基于設(shè)計,高速緩存一致性請求和高速緩存行的受監(jiān)視一致性狀態(tài)的不同組合導(dǎo) 致可能的沖突,如將數(shù)據(jù)項保持在共享讀取狀態(tài)的高速緩存行和指示對數(shù)據(jù)項的寫入請求 的窺探。相反地,將數(shù)據(jù)項保持在緩沖寫入狀態(tài)的高速緩存行和指示對數(shù)據(jù)項的讀取請求 的外部窺探可視為可能有沖突。在一個實施例中,為檢測訪問請求和屬性狀態(tài)的此類組合, 窺探邏輯耦合到?jīng)_突檢測/報告邏輯,如監(jiān)視器和/或用于沖突檢測/報告的邏輯。
在一個實施例中,高速緩存一致性協(xié)議擴展為包括緩沖狀態(tài)以支持本地緩沖數(shù) 據(jù)。因此,事務(wù)存儲可利用現(xiàn)有高速緩存結(jié)構(gòu)而不是利用復(fù)雜的額外寫入緩沖電路,以緩沖 方式執(zhí)行。作為實現(xiàn)設(shè)計選擇的一個示例,HTM可以緩沖就地更新(update-in-place)方式 操作。在就地更新HTM中,對引用的存儲器地址執(zhí)行事務(wù)寫入以修改保存在其中的以前的 數(shù)據(jù)。然而,此已修改數(shù)據(jù)不提供到外部請求的線程,即,不使數(shù)據(jù)全局可見,而是將數(shù)據(jù)提 供到本地讀取以實現(xiàn)本地存儲器排序(ordering)目的。另外,以前的數(shù)據(jù)經(jīng)常被"記錄", 使得在事務(wù)中止時,以前的數(shù)據(jù)能夠恢復(fù)以實現(xiàn)事務(wù)的執(zhí)行開始前線程的狀態(tài)。
舉例來說,假設(shè)在圖1中處理器100的數(shù)據(jù)高速緩存150包括第一級數(shù)據(jù)高速緩 存以保存來自諸如高速緩存110和系統(tǒng)存儲器175等更高級存儲器的數(shù)據(jù)。因此,在遇到對 數(shù)據(jù)高速緩存150的事務(wù)寫入時,在寫回高速緩存的一個實施例中,將以前修改的數(shù)據(jù)項寫回更高級高速緩存110。備選,以前的數(shù)據(jù)可在處理器100內(nèi)或其外部的另一單獨存儲器
中記錄。此處,可能丟失緩沖行,因此,保留以前已修改行。在寫回時,在一個實施例中,更
高級高速緩存得知數(shù)據(jù)項仍在使用,使得更高級存儲器仍將窺探請求轉(zhuǎn)發(fā)到高速緩存150。 在記錄以前的數(shù)據(jù)項后,事務(wù)寫入以"緩沖"方式執(zhí)行以更新高速緩存150中的數(shù)據(jù)項。因 此,保存數(shù)據(jù)項的一個高速緩存行或多個高速緩存行轉(zhuǎn)到緩沖狀態(tài)。 因此,諸如本地線程101a,即與事務(wù)寫入相關(guān)聯(lián)的線程等本地線程可從高速緩存 150讀取已修改數(shù)據(jù)項。換而言之,緩沖或私有數(shù)據(jù)項在內(nèi)部對本地線程,即本地線程101a 可見以確保連續(xù)一致性。然而,不為諸如線程102b等另一線程提供緩沖數(shù)據(jù)。基本上,在事 務(wù)提交前,緩沖寫入不在外部對其它線程可見。事務(wù)提交時,已記錄數(shù)據(jù)無效或被忽略,而 緩沖數(shù)據(jù)轉(zhuǎn)變到修改狀態(tài)。此轉(zhuǎn)變導(dǎo)致數(shù)據(jù)項對其它線程的全局可見性,使得由于數(shù)據(jù)項 保持在修改一致性狀態(tài)而為對數(shù)據(jù)項的隨后外部訪問請求提供命中修改(HITM)響應(yīng)。與 此相反,如果事務(wù)中止,則以前的數(shù)據(jù)被恢復(fù)為有效數(shù)據(jù),而緩沖數(shù)據(jù)無效。
如果數(shù)據(jù)項在緩沖狀態(tài)中時從高速緩存150被驅(qū)逐,則私有保存的數(shù)據(jù)項可能丟 失?;旧希瑪?shù)據(jù)項不寫回到更高級存儲器。在數(shù)據(jù)衰變(data decays),即在驅(qū)逐或其它 事件時丟失的情形中,如上所述,可以類似方式觸發(fā)可能沖突以檢測可能的訪問沖突。
在一個實施例中,處理程序(handler)記錄在硬件中以支持由于沖突或容量原因 緩沖數(shù)據(jù)丟失的有效處理。例如,寄存器可由諸如事務(wù)運行期或應(yīng)用碼等軟件修改以記錄 事務(wù)處理程序的地址。如果檢測到感興趣的事件,如上述的信息丟失,則在一個實施例中, 控制流被引導(dǎo)到在寄存器中記錄的事務(wù)處理程序,而不干擾優(yōu)先軟件,如操作系統(tǒng)(OS)。 在Gad Sheaffer等人同本申請一起提交,代理人案號為P29129,題為"在硬件中記錄用于 事務(wù)存儲器事件處理的用戶處理程序"(Registering a User-Handler in Hardware for Transactional MemoryEvent Handling)的有關(guān)申請中論述了在硬件中記錄處理程序的一 種形式。 參照圖2,它示出將一致性狀態(tài)與高速緩沖存儲器中的數(shù)據(jù)項相關(guān)聯(lián)的實施例。處 理器250包括任何類型的已知處理器,帶有能夠事務(wù)執(zhí)行的任何數(shù)量的處理部件。雖然未 示出,但處理器205可耦合到其它系統(tǒng)組件,如芯片集,即,存儲器控制器集線器和輸入/輸 出(I/O)控制器集線器及系統(tǒng)存儲器。計算機系統(tǒng)中1/0裝置的常見示例包括網(wǎng)絡(luò)控制器、 視頻顯示適配器、圖形處理器、音頻控制器或其它輸入/輸出裝置。 在一個實施例中,處理器250包括高速緩沖存儲器。高速緩存的最相關(guān)示例包括 數(shù)據(jù)高速緩存,如圖1中所示的第一級高速緩存或第二級高速緩存。然而,高速緩存也可包 括指令高速緩存、追蹤高速緩存(trace cache)或其它已知高速緩存。雖然高速緩存架構(gòu)未 詳細描述以避免不必要地混淆論述,但高速緩存可以許多方式組織。例如,高速緩存可以是 完全聯(lián)合的,即,存儲器地址可保存在高速緩存中的任何位置,可以是組聯(lián)合高速緩存,其 中,某些范圍的存儲器地址被限制到高速緩存的特定組,或者是直接映射高速緩存,其中, 多個地址要保存在高速緩存內(nèi)的單獨位置。注意,本文中所述的方法和設(shè)備可通過任何高 速緩存組織實現(xiàn)。 如圖所示,高速緩存包括也可稱為高速緩沖存儲器或數(shù)據(jù)陣列的數(shù)據(jù)部分205和 與高速緩沖存儲器205相關(guān)聯(lián)的控制邏輯230。高速緩沖存儲器205包括行210、215、220和 225??刂七壿?30包括具有分別與高速緩存行210、215、220和225相關(guān)聯(lián)或?qū)?yīng)的項目211、216、221和226的陣列235。此外,硬件讀取和寫入監(jiān)視器211r、211w、216r、216w、221r、 221w、226r及226w類似地與高速緩存行210、215、220和225相關(guān)聯(lián)。雖然在Gad Sheaffer 等人同本申請一起提交,代理人案號為P29130,題為"事務(wù)存儲器(TM)系統(tǒng)中的讀取和寫 入監(jiān)視屬性,,(Read and Write Monitoring Attributes in Transactional Memory(TM) Systems)的共同待定申請中更詳細地描述了硬件監(jiān)視器及其各種實施例,但本文中論述了 讀取和寫入監(jiān)視器的實施例以促進緩沖狀態(tài)的論述。 在一個實施例中,讀取和寫入監(jiān)視器約束諸如數(shù)據(jù)項201等數(shù)據(jù)的監(jiān)視,而不論 保存數(shù)據(jù)的物理結(jié)構(gòu)的粒度如何。從上面的論述明白,數(shù)據(jù)項可具有任何粒度,并且起始地 址可與數(shù)據(jù)項的大小不對齊。實際上,程序員可通過提供起始地址,然后提供組成數(shù)據(jù)項的 另外的字節(jié)數(shù)量來定義數(shù)據(jù)項。因此,數(shù)據(jù)項可小于高速緩存205的行,高速緩存205的高 速緩存行的大小,或者大于高速緩存205的高速緩存行以及可能與高速緩存205的高速緩 存行的起始和結(jié)束邊界不對齊。 在圖2的示例中,數(shù)據(jù)項201跨兩個高速緩存行,包括在所有高速緩存行210和 一半高速緩存行215中的數(shù)據(jù)。雖然P29130論述監(jiān)視屬性的可能動態(tài)指配,但屬性21 lr、 211w、216r、216w、221r、221w、226r及226w基于高速緩存行提供。因此,如果數(shù)據(jù)項201要 受寫入監(jiān)視,則讀取監(jiān)視器21 lr和216r均被更新為受監(jiān)視狀態(tài)以指示對應(yīng)的高速緩存行 210和215受讀取監(jiān)視。即使行215只保存一部分數(shù)據(jù)項201,替代不更新監(jiān)視器216r并 且不監(jiān)視行215中的該部分數(shù)據(jù)項201,而是216r設(shè)為監(jiān)視行215的全部,即,包括更多的 數(shù)據(jù)以確保數(shù)據(jù)項201的一致性。換而言之,數(shù)據(jù)項201受監(jiān)視約束而不論圖2中所示監(jiān) 視器的高速緩存行粒度如何。 在一個實施例中,陣列235包括含項目211 、216、221和226的一致性狀態(tài)陣列。如 圖所示,監(jiān)視器211r、211w、216r、216w、221r、221w、226r及226w是狀態(tài)陣列235的一部分, 該陣列實質(zhì)上導(dǎo)致項目211、216、221和226中保持的一致性狀態(tài)擴展以包括讀取受監(jiān)視、 寫入受監(jiān)視和不受監(jiān)視狀態(tài)。雖然在狀態(tài)陣列235中示出包括讀取和寫入監(jiān)視器,但為簡 化下面的論述起見,擴展一致性狀態(tài)以包括緩沖狀態(tài)與讀取和寫入監(jiān)視狀態(tài)分開論述。實 際上,在另一示例中,讀取和寫入監(jiān)視器不包括在狀態(tài)陣列235中,而是以另一種方式與數(shù) 據(jù)相關(guān)聯(lián),如在每個高速緩存行內(nèi)注釋,保存在另一陣列中,或者動態(tài)指配到數(shù)據(jù)項。
因此,在一個實施例中,包括項目211、216、221和226的陣列235要保存分別對應(yīng) 于高速緩存行210、215、220和225的高速緩存一致性狀態(tài)值。常見的高速緩存一致性狀態(tài) 包括MESI,即修改(Modified)、排他(Exclusive)、共享(Shared)和無效(Invalid)高速緩 存一致性狀態(tài)。此處,緩沖狀態(tài)添加到MESI狀態(tài)以形成MESIB協(xié)議。表示狀態(tài)的任何已知 的值可保存在狀態(tài)項目中,如項目211和216。例如,比特向量包括在每個狀態(tài)項目內(nèi),其 中,每個比特對應(yīng)于一種一致性狀態(tài)。又如,狀態(tài)項目保存編碼值以表示一致性狀態(tài)。
又如,緩沖監(jiān)視器/屬性可以類似的方式添加到上述讀取和寫入監(jiān)視器,這實質(zhì) 上導(dǎo)致了一種新的緩沖一致性狀態(tài)。此外,在一個實施例中,根據(jù)新的緩沖一致性規(guī)則,緩 沖可以是獨立的,并且與讀取和寫入監(jiān)視相互無關(guān)(orthogonal)。例如,緩沖可不允許寫入 共享,即,外部寫入使緩沖行無效,但緩沖確實允許讀取共享,即,一個高速緩存中的緩沖行 不與不同高速緩存的共享行有沖突。在允許讀取共享的情形下,則采取一些一致性動作以 確保在提交前讀取有效,如使其它高速緩存中數(shù)據(jù)的所有共享副本無效。
在遇到事務(wù)緩沖存儲操作或確定用于緩沖的其它存儲操作時,執(zhí)行緩沖存儲操 作。下面參照圖4,更詳細地論述確定是否要緩沖諸如事務(wù)存儲操作等存儲操作。然而,除 執(zhí)行存儲外,還為確定要緩沖的存儲將相關(guān)聯(lián)行的一致性狀態(tài)更新為緩沖狀態(tài)。在一個實 施例中,以受約束的方式緩沖數(shù)據(jù)項,而不論基礎(chǔ)存儲結(jié)構(gòu)的粒度如何。
舉例來說,假設(shè)遇到數(shù)據(jù)元素201的事務(wù)存儲。根據(jù)MESI協(xié)議,控制邏輯230執(zhí) 行類似于正常寫入操作的所有權(quán)讀取(RFO,read-for-ownership)請求。在獲得所有權(quán)后, 寫入數(shù)據(jù)元素201并將其與緩沖一致性狀態(tài)相關(guān)聯(lián)。在此示例中,行210和215均保存至 少一部分數(shù)據(jù)元素201,因此,行轉(zhuǎn)變到緩沖一致性狀態(tài)。具體看一看高速緩存行215,對應(yīng) 的狀態(tài)項目216被更新為緩沖狀態(tài)值以指示高速緩存行215,并且其中保存的部分數(shù)據(jù)項 201是在緩沖一致性狀態(tài)。也可以說數(shù)據(jù)項201和/或行215與緩沖一致性狀態(tài)相關(guān)聯(lián)。
如上所述,與高速緩存行215關(guān)聯(lián)的寫入監(jiān)視器也可更新以指示該高速緩存行受 寫入監(jiān)視。在一個實施例中,響應(yīng)事務(wù)存儲操作,單獨應(yīng)用諸如屬性216w等硬件寫入屬性。 換而言之,這些更新可稱為寫入受監(jiān)視緩沖更新,即,應(yīng)用以緩沖方式和寫入監(jiān)視更新的地 址/數(shù)據(jù)。在外部代理嘗試更新寫入受監(jiān)視緩沖數(shù)據(jù)時,經(jīng)常檢測到?jīng)_突。
類似地,響應(yīng)高速緩存行215的事務(wù)讀取,硬件讀取監(jiān)視器216r可設(shè)為指示高速 緩存行215受讀取監(jiān)視。同樣地,這些更新可稱為讀取受監(jiān)視緩沖更新,即,應(yīng)用了以帶有 讀取監(jiān)視的緩沖方式進行的更新。此處,地址可并行在本地更新,并且在嘗試提交前,即,在 地址停止被緩沖并嘗試變得全局可見時延遲存在的沖突消解。在另一實施例中,諸如屬性 216w或216r等顯式屬性未設(shè)置,這是因為在此示例中通過定義暗示高速緩存行在緩沖狀 態(tài),受讀取或?qū)懭氡O(jiān)視。 在上述示例中,引用了受監(jiān)視緩沖狀態(tài);然而,也可發(fā)生緩沖不受監(jiān)視更新。例如, 以后不要提交的事務(wù)內(nèi)的臨時或本地值可以沒有監(jiān)視的緩沖方式更新,這是因為根據(jù)其性 質(zhì),它們不會變得全局看到。 —般情況下,控制邏輯230包括窺探邏輯(snoop logic)、替換邏輯、狀態(tài)邏輯和 執(zhí)行任何已知高速緩存操作的其它高速緩存有關(guān)的邏輯。例如,控制邏輯實現(xiàn)一致性協(xié)議, 包括支持緩沖一致性狀態(tài)的協(xié)議,其也可包括如下面參照圖3更詳細論述的在MESIB狀態(tài) 之間的轉(zhuǎn)變。在一個實施例中,控制邏輯230要單獨或以結(jié)合處理器250中的其它邏輯方 式檢測沖突。例如,沖突包括訪問沖突,如對緩沖狀態(tài)的行的外部訪問請求。
外部訪問或非本地訪問請求包括與處理部件相關(guān)聯(lián)的訪問,它不與使行要被緩沖 和/或受監(jiān)視的線程或事務(wù)相關(guān)聯(lián)。例如,假設(shè)圖1的處理部件101a與執(zhí)行包括事務(wù)存儲 的事務(wù)相關(guān)聯(lián),這使狀態(tài)項目211更新為緩沖狀態(tài)值。因此,從處理部件102a到高速緩存 行210的訪問請求包括從在線程101a的執(zhí)行外部角度而言的外部訪問。因此,重要的是從 此示例明白,外部訪問請求可包括來自在同一處理器上執(zhí)行的不同線程的訪問,而不只是 來自單獨物理處理器的訪問請求。另外,在每線程基礎(chǔ)上對于共享高速緩存復(fù)制監(jiān)視器的 情況下,可能甚至在共享高速緩存內(nèi)在線程級別檢測到外部訪問。 相反,本地或內(nèi)部訪問請求包括來自與高速緩存行的被緩沖或受監(jiān)視狀態(tài)相關(guān)聯(lián) 的處理部件的訪問請求,而不是外部訪問請求來自不與高速緩存行的被緩沖或受監(jiān)視狀態(tài) 相關(guān)聯(lián)的處理部件。繼續(xù)論述該示例,與處理部件101a相關(guān)聯(lián)的事務(wù)內(nèi)的事務(wù)存儲使項目 211從緩沖值被更新。隨后,從與處理部件101a相關(guān)聯(lián)的同一事務(wù)的加載操作是從行210讀取。此加載是要讀取緩沖數(shù)據(jù),從處理部件101a和事務(wù)兩者的角度而言被認為是內(nèi)部訪 問或本地訪問。 檢測沖突中另外的考慮事項可包括比較外部訪問類型和硬件監(jiān)視器的狀態(tài)。例 如,響應(yīng)事務(wù)內(nèi)的事務(wù)存儲操作,假設(shè)狀態(tài)項目216設(shè)為緩沖狀態(tài)值以指示高速緩存行215 在緩沖狀態(tài),并且硬件屬性216w設(shè)為指示高速緩存行215受寫入監(jiān)視。如果控制邏輯230 收到/檢測到對行215的外部訪問請求,則在檢測外部訪問請求時檢測到?jīng)_突。此處,對行 215的緩沖存儲在事務(wù)提交前不要被全局看到,這導(dǎo)致可能沖突,因為私有保存的數(shù)據(jù)可與 現(xiàn)在可能已更新或共享的全局數(shù)據(jù)不一致。換而言之,高速緩存行215是在寫入受監(jiān)視緩 沖狀態(tài),因此,行215不可由外部代理/處理部件并行更新。 與此相反,在一個實施例中,讀取受監(jiān)視緩沖行可由多線程/處理部件并行更新, 并且存在的沖突由控制邏輯230在事務(wù)的嘗試提交時通過普通一致性協(xié)議檢測到。為說明 起見,假設(shè)項目211保存緩沖狀態(tài)值以指示行210與緩沖一致性狀態(tài)相關(guān)聯(lián)。接著,收到與 高速緩存行210相關(guān)聯(lián)的外部訪問請求。在此示例中,此時未檢測到?jīng)_突。相反,事務(wù)繼續(xù) 正常操作,并且在事務(wù)提交時,數(shù)據(jù)要轉(zhuǎn)變?yōu)槿挚吹綘顟B(tài)。在下面更詳細描述的一個示例 中,此轉(zhuǎn)變包括行210的一致性狀態(tài)從緩沖狀態(tài)轉(zhuǎn)變?yōu)樾薷囊恢滦誀顟B(tài)。注意,行210從緩 沖狀態(tài)轉(zhuǎn)變?yōu)樾薷囊恢滦誀顟B(tài)可包括如本文中所述的兩階段轉(zhuǎn)變。然而,執(zhí)行此類任務(wù)的 控制邏輯230生成窺探消息(snoop message)以指示以該方式轉(zhuǎn)變行210的意圖。此時, 用于外部線程并行更新行215的另一高速緩存中的其它控制邏輯可基于在該高速緩存中 行215的一致性狀態(tài)轉(zhuǎn)變而檢測到?jīng)_突。換而言之,在此示例中,在對提交動作的準備中嘗 試獲得寫入監(jiān)視時檢測到讀取受監(jiān)視緩沖行沖突。 控制邏輯230可以結(jié)合其它控制邏輯、報告邏輯地或單獨地檢測其它類型的沖突 或可能沖突。例如,在一個實施例中,控制邏輯230在緩沖數(shù)據(jù)或硬件屬性信息丟失時檢測 到?jīng)_突。數(shù)據(jù)或?qū)傩孕畔⒌膩G失可在驅(qū)逐或其它丟失事件時發(fā)生,這是因為緩沖數(shù)據(jù)和屬 性信息是在本地,可能在驅(qū)逐時未寫回到更高級存儲器。 控制邏輯也可實現(xiàn)其它協(xié)議和執(zhí)行其它操作以支持數(shù)據(jù)的緩沖。例如,控制邏輯 要確保緩沖數(shù)據(jù)不被全局看到,以支持事務(wù)執(zhí)行的固有性質(zhì),即,已更新的數(shù)據(jù)在提交前不 被全局看到。此處,在一個實施例中,控制邏輯要向引用高速緩存行(并且高速緩存行與緩 沖一致性狀態(tài)相關(guān)聯(lián))的外部窺探請求(external snoop request)提供未命中響應(yīng)。
為了說明起見,再次假設(shè)行215在緩沖一致性狀態(tài),即,狀態(tài)項目216保存緩沖一 致性狀態(tài)值。收到引用與數(shù)據(jù)項201和高速緩存行215相關(guān)聯(lián)地址的外部訪問請求。控制 邏輯230響應(yīng)行215保存在緩沖一致性狀態(tài),向發(fā)出請求的外部代理提供未命中響應(yīng)。一般 情況下,未命中響應(yīng)包括通知請求代理數(shù)據(jù)未保存在高速緩存中或者在無效狀態(tài)的響應(yīng)。 但是,此處高速緩存行215保存用于數(shù)據(jù)項201的已更新值;然而,已更新值在緩沖狀態(tài),指 示相關(guān)聯(lián)事務(wù)尚未提交。因此,數(shù)據(jù)未轉(zhuǎn)發(fā)到外部請求代理以確保在事務(wù)提交前適當?shù)氖?務(wù)排序和數(shù)據(jù)的非全局看到。窺探響應(yīng)可以是未命中(MISS)或者新類型的響應(yīng),如類似于 HITM的命中緩沖(HITB)響應(yīng),但響應(yīng)傳遞行的緩沖狀態(tài)而不是修改狀態(tài)。
在一個實施例中,控制邏輯230可響應(yīng)在高速緩存行保持在緩沖一致性狀態(tài)時接 收與高速緩存行215相關(guān)聯(lián)的外部訪問請求而將高速緩存行215從保持在緩沖一致性狀態(tài) 轉(zhuǎn)變到無效一致性狀態(tài)。如上所述,在一個實施例中,在從外部訪問緩沖行215時,數(shù)據(jù)可已變得過時,即,已由外部請求代理更新。因此,為確保數(shù)據(jù)一致性,在此示例中,結(jié)合提供 未命中響應(yīng),在緩沖并讀取受監(jiān)視時行215轉(zhuǎn)變?yōu)闊o效狀態(tài)。例如,狀態(tài)項目216從緩沖狀 態(tài)值更新為無效狀態(tài)值。 作為協(xié)議響應(yīng)的另一示例,控制邏輯230要確保本地代理可看到內(nèi)部/本地緩沖 的數(shù)據(jù)。為了說明起見,執(zhí)行事務(wù)的第一線程包括對數(shù)據(jù)項201的事務(wù)存儲操作和對數(shù)據(jù) 項201的隨后讀取。響應(yīng)事務(wù)存儲操作,項目211和216更新為緩沖一致性狀態(tài)以指示數(shù) 據(jù)項201保持在緩沖狀態(tài)。為確保內(nèi)部順序排序,響應(yīng)隨后的內(nèi)部讀取請求,控制邏輯230 將已修改數(shù)據(jù)項201提供到本地第一線程。換而言之,本地緩沖的數(shù)據(jù)提供給本地讀取而 不給外部訪問。 在一個實施例中,提供了控制邏輯230支持一種用于以硬件方式提交事務(wù)的有效 方法。例如,控制邏輯230要將與事務(wù)相關(guān)聯(lián)的緩沖高速緩存行轉(zhuǎn)變?yōu)樾薷臓顟B(tài)。實質(zhì)上, 到修改狀態(tài)的轉(zhuǎn)變通過MESI協(xié)議的構(gòu)造指示保存在高速緩存行中的數(shù)據(jù)已由處理器修 改,即,數(shù)據(jù)被全局看到。例如,一旦在修改狀態(tài),便為對高速緩存行的外部訪問請求提供 HITM響應(yīng)。為了說明起見,假設(shè)執(zhí)行在事務(wù)內(nèi)的事務(wù)存儲,這導(dǎo)致數(shù)據(jù)項201以緩沖狀態(tài)保 存在行210和215中。響應(yīng)事務(wù)的隱式結(jié)束或顯式結(jié)束,如用戶級提交指令的執(zhí)行,隨后行 210和215從緩沖一致性狀態(tài)轉(zhuǎn)變?yōu)樾薷囊恢滦誀顟B(tài)。 在一個實施例中,從緩沖一致性狀態(tài)到修改一致性狀態(tài)的轉(zhuǎn)變包括兩階段轉(zhuǎn)變。 此處,控制邏輯230將高速緩存行210和215從與緩沖一致性狀態(tài)相關(guān)聯(lián)轉(zhuǎn)變?yōu)榫彌_修改 中間一致性狀態(tài),即,將已更新項目211和216轉(zhuǎn)變?yōu)榫彌_修改中間一致性狀態(tài)值,并隨后 清除緩沖狀態(tài)以剩下與修改狀態(tài)相關(guān)聯(lián)的高速緩存行,即,從項目211和216中的緩沖修改 中間一致性值清除緩沖值以在項目211和216中剩下修改一致性值。 作為又 一 示例,假設(shè)MESIB狀態(tài)表示如下無效(0000)、共享(0001)、排他 (0010)、修改(0100)和緩沖(1000)。將這些表示插入上述示例導(dǎo)致以下結(jié)果(l)控制邏 輯230將項目211和216從緩沖值1000轉(zhuǎn)變?yōu)?100的緩沖修改中間值,然后清除緩沖比 特1000以在項目211和216中剩下修改一致性值OIOO。此處,控制邏輯230包括諸如電路 等邏輯以響應(yīng)提交而執(zhí)行兩階段轉(zhuǎn)變。 在一個實施例中,控制邏輯230也能夠響應(yīng)用戶級指令,訪問一致性狀態(tài)。例如, 諸如解碼器等處理器250的硬件可識別用于訪問、操控或報告緩沖一致性狀態(tài)的用戶指 令。此類指令的示例包括設(shè)置指令、清除指令或測試指令。諸如SetB. size Address等設(shè) 置指令要將從Address (地址)開始和在Address (地址)加該大小處結(jié)束的數(shù)據(jù)轉(zhuǎn)變?yōu)榫?沖狀態(tài)。為了說明起見,引用與數(shù)據(jù)項201相關(guān)聯(lián)的開始地址和數(shù)據(jù)元素201的大小的類 似設(shè)置指令將保存數(shù)據(jù)項201的高速緩存行210和215轉(zhuǎn)變?yōu)榫彌_狀態(tài)。類似地,測試指 令能夠報告與地址加大小相關(guān)聯(lián)的一致性狀態(tài),而清除指令能夠從地址加大小清除緩沖一 致性狀態(tài),即,轉(zhuǎn)變?yōu)闊o效狀態(tài)。 如圖所示的處理器250包括寄存器250,該寄存器可以包括任何已知寄存器,諸如 控制寄存器或模型特定寄存器(MSR,Model specificregister)。在一個實施例中,寄存器 250可由用戶訪問以保存用戶可修改的數(shù)據(jù)。例如,寄存器250要保存選擇值信息以確定存 儲是否要緩沖。選擇值信息可包括選擇或非選擇值及選擇標準。下面參照圖4更詳細地論 述確定存儲是否要緩沖。
16
參照圖3,它示出了用于包括緩沖狀態(tài)的MESI狀態(tài)的狀態(tài)轉(zhuǎn)變圖的實施例。如 上所述,在一個實施例中,諸如圖2所示控制邏輯230等控制邏輯包括硬件邏輯、固件、存 儲裝置和/或電路以表示所示狀態(tài)以及基于對所示事件的規(guī)定協(xié)議響應(yīng),執(zhí)行所示轉(zhuǎn)變。 還要注意的是,在讀取和寫入屬性保存在狀態(tài)陣列中的一個實施例中,圖3的轉(zhuǎn)變圖可修 改以插入受監(jiān)視和不受監(jiān)視狀態(tài),諸如讀取受監(jiān)視緩沖狀態(tài)、寫入受監(jiān)視緩沖狀態(tài)、不受監(jiān) 視緩沖狀態(tài)、讀取受監(jiān)視共享狀態(tài)或其它狀態(tài)。在Gad Sheaffer等人同本申請一起提交, 代理人案號為P29130,題為"事務(wù)存儲器(TM)系統(tǒng)中的讀取和寫入監(jiān)視屬性"(Read and WriteMonitoring Attributes in Transactional Memory (TM) Systems)的申請中更詳細地 描述了受監(jiān)視和不受監(jiān)視MESI —致性狀態(tài)的示例,未包括緩沖狀態(tài)。 緩沖狀態(tài)通過用于MESI協(xié)議的一些傳統(tǒng)轉(zhuǎn)變示出,如對排他的存儲或加載鎖定 命中(store or load lock hit to exclusive) 305以從排他一致性狀態(tài)轉(zhuǎn)變?yōu)樾薷囊恢?性狀態(tài)。為避免混淆論述,轉(zhuǎn)變?yōu)榫彌_狀態(tài)和從緩沖狀態(tài)的轉(zhuǎn)變是焦點。從無效狀態(tài)、共享 狀態(tài)或排他狀態(tài)開始,到存儲器的行的事務(wù)存儲210將行轉(zhuǎn)變?yōu)榫彌_狀態(tài)。注意,在另一實 施例中,選擇用于緩沖的任何存儲可等效于事務(wù)存儲,即,將相關(guān)聯(lián)行轉(zhuǎn)到緩沖狀態(tài)。下面 參照圖4,更詳細地描述用于緩沖的存儲的選擇。類似地,在修改一致性狀態(tài)中,對已修改行 的事務(wù)存儲將已修改行轉(zhuǎn)到緩沖狀態(tài)。 —旦行在緩沖狀態(tài),丟棄311便是要將行轉(zhuǎn)變?yōu)闊o效狀態(tài)。例如,響應(yīng)接收對在緩 沖狀態(tài)中的行的外部寫入請求而發(fā)生丟棄311。響應(yīng)丟棄操作,未命中響應(yīng)提供到外部請求 代理,并且行轉(zhuǎn)到無效狀態(tài)。又如,響應(yīng)包括事務(wù)存儲的事務(wù)的中止而發(fā)生丟棄311,而存 儲操作首先負責到緩沖狀態(tài)的轉(zhuǎn)變。備選,響應(yīng)提交312,在緩沖狀態(tài)中的行轉(zhuǎn)變?yōu)樾薷臓?態(tài)。如上所述,到修改狀態(tài)的轉(zhuǎn)變可包括兩階段轉(zhuǎn)變。 轉(zhuǎn)到圖4,它示出用于確定是否要緩沖訪問操作的方法的流程圖的實施例。注意, 圖4和5的流程圖是以大致按順序的方式示出。然而,這些圖所示的方法不受此限制,因為 它們可以任何順序發(fā)生以及至少部分并行執(zhí)行。 在流程405中,確定是否要緩沖引用數(shù)據(jù)元素的存儲器訪問。從最基本的架構(gòu)意 義而言,在一個實施例中,事務(wù)存儲操作要被緩沖??衫糜糜诖_定事務(wù)存儲操作要緩沖的 任何已知方法。例如,事務(wù)存儲可通過由處理器的解碼器邏輯識別的操作碼確定。實質(zhì)上, 用戶利用事務(wù)存儲語言操作。在編譯期間,此語言變換為由處理器的硬件識別為要緩沖的 事務(wù)存儲的匯編代碼。 又如,處理器或處理部件的模式可設(shè)為指示是否要緩沖存儲。例如,在事務(wù)開始 時,更新模式以指示事務(wù)執(zhí)行。此處,執(zhí)行的存儲不是由解碼器選出為事務(wù),而是基于操作 的事務(wù)模式,存儲被緩沖。類似地,一旦提交后,模式可返回默認模式,在默認模式中,存儲 不緩沖或基于選擇標準選擇性地緩沖。 在一個實施例中,提供緩沖的多個模式,如不緩沖、非選擇緩沖和選擇緩沖。例如, 軟件能夠設(shè)置緩沖模式。例如,用戶指令能夠為諸如圖2的寄存器250等寄存器尋址以指示 緩沖的模式。軟件可確定哪些存儲要緩沖,比如事務(wù)存儲或其它非事務(wù)存儲。例如,此確定 可由軟件代碼做出,如由編譯器靜態(tài)或在運行期內(nèi)、應(yīng)用碼或事務(wù)運行期代碼做出。此處, 編譯器可能將事務(wù)存儲確定為要緩沖的存儲,比如通過前綴的識別將常規(guī)存儲轉(zhuǎn)換為緩沖 存儲。
在一個實施例中,處理器要在選擇模式中操作時,諸如圖2的寄存器250等用戶可 訪問控制寄存器要保存選擇值,并且可能要保存選擇標準。類似地,寄存器250要保存非選 擇值以指示操作的非選擇模式。在緩沖的非選擇模式期間,所有存儲器更新操作以緩沖方 式執(zhí)行。 在緩沖的選擇模式期間,在一個實施例中,基于可以任何方式定義的指定標準,緩 沖存儲器更新。基于標準進行選擇可以兩種方式完成,即,肯定標準或否定標準。為了說明 起見,為某個地址范圍為例,其中緩沖的選擇可以肯定方式執(zhí)行,即除非操作引用落在該地 址范圍內(nèi)的地址,否則不為操作執(zhí)行緩沖,或者以否定方式執(zhí)行,即為除落在該地址范圍的 那些操作外的所有操作執(zhí)行緩沖。標準可由用戶在諸如寄存器250、優(yōu)先級軟件可訪問寄存 器或其組合等用戶可訪問寄存器中指定。 對于對可不緩沖的存儲器地址的存儲器訪問,其選擇標準的非詳盡示范列表包括 對以下的存儲器訪問在某個范圍內(nèi)或匹配掩碼的虛擬地址、在某個范圍內(nèi)或匹配掩碼的 物理地址、屬于特定存儲器類型的地址、在輸入/輸出(I/O)空間內(nèi)的地址、代表另一保護 域中的操作在一個保護域中執(zhí)行的地址、通過特定操作碼或前綴確定的指令訪問的地址、 及特定數(shù)據(jù)類型,諸如浮點或向量操作。另外,可響應(yīng)諸如只用于用戶確定并且處理器250 的硬件可識別的事務(wù)存儲操作的那些指令等特定的識別的指令,或者響應(yīng)諸如上面參照圖 2所述的設(shè)置、測試和清除指令等特殊的緩沖指令而執(zhí)行緩沖。此外,在一些實現(xiàn)中,諸如對 本地棧的訪問等其它操作可默認為非緩沖。 —旦確定在流程405中是否要應(yīng)用緩沖,隨后便在流程415中通過將正常存儲與 緩沖一致性狀態(tài)相關(guān)聯(lián)來應(yīng)用緩沖,即執(zhí)行緩沖存儲,或者在流程410中不執(zhí)行緩沖,并且 正常執(zhí)行存儲。 參照圖5,它示出用于支持緩沖數(shù)據(jù)的方法的流程圖的實施例。在流程505中,遇 到引用與數(shù)據(jù)項相關(guān)聯(lián)地址的事務(wù)存儲。在處理器內(nèi)遇到操作可包括在處理器的任何級內(nèi) 遇到該操作,諸如獲取、解碼、執(zhí)行、退役等,或其它級。 在流程510,確定是否要緩沖事務(wù)存儲。上面參照圖3論述了確定是否要緩沖存 儲。然而,提供了確定是否要緩沖事務(wù)存儲的幾個示例。作為第一個示例,解碼器邏輯識別 存儲的操作碼以指示存儲是事務(wù)性的。又如,處理器在緩沖的非選擇模式中操作,其中所有 存儲操作以緩沖方式執(zhí)行。又如,處理器可在操作的選擇模式中操作,并且基于實現(xiàn),事務(wù) 存儲符合或不符合指定的選擇標準。如果存儲不要緩沖,則它在流程515中正常執(zhí)行。
然而,如果要緩沖存儲,則事務(wù)存儲以緩沖方式執(zhí)行。例如,執(zhí)行到某個高速緩存 行或多個高速緩存行的存儲,并且在流程525中更新相關(guān)聯(lián)的一致性狀態(tài)為緩沖狀態(tài)以指 示數(shù)據(jù)項與緩沖一致性狀態(tài)相關(guān)聯(lián)。從上面的示例中明白,行可只包括一部分數(shù)據(jù)項。但 是,如果其中的一部分被更新,則受約束監(jiān)視為整個高速緩存行提供緩沖。在一個實施例 中,利用緩沖狀態(tài)中行的隱式指定來檢測沖突。然而,在另一實施例中,與引用的數(shù)據(jù)項相 關(guān)聯(lián)的監(jiān)視器設(shè)為在流程525中指示數(shù)據(jù)項被緩沖。 在流程530中,確定是否要對與數(shù)據(jù)項相關(guān)聯(lián)的地址進行本地訪問。如上所述,本 地訪問可包括來自執(zhí)行事務(wù)存儲,促使轉(zhuǎn)變?yōu)榫彌_狀態(tài)的線程的訪問或來自包括事務(wù)存儲 的事務(wù)的訪問。響應(yīng)接收本地訪問,在流程535中向本地請求代理提供命中響應(yīng)。換而言 之,從本地代理的角度而言,提供了最近修改的數(shù)據(jù)以確保在本地執(zhí)行內(nèi)的順序排序。
18
然而,在流程540中,如果檢測到外部訪問,則在流程545中提供未命中響應(yīng)到外 部請求代理。實質(zhì)上,緩沖數(shù)據(jù)對本地代理可見,但不對外部全局代理可見,這為利用緩沖 數(shù)據(jù)、以有效方式的事務(wù)執(zhí)行提供了適當?shù)闹С?。此外,在一個實施例中,響應(yīng)外部訪問請 求,緩沖數(shù)據(jù)項轉(zhuǎn)變?yōu)闊o效狀態(tài)以確保全局數(shù)據(jù)一致性。 在流程555中,確定事務(wù)是否要提交。如上所述,讀取受監(jiān)視緩沖行可檢測到在嘗 試提交,即,基于一致性協(xié)議從緩沖狀態(tài)到修改狀態(tài)的嘗試轉(zhuǎn)變時的沖突。因此,如果事務(wù) 要中止,則在流程550中,數(shù)據(jù)項轉(zhuǎn)變?yōu)闊o效狀態(tài)以丟棄數(shù)據(jù)項,使得外部代理未看到現(xiàn)在 無效的數(shù)據(jù)項。然而,如果事務(wù)要提交,則在流程560中,數(shù)據(jù)項轉(zhuǎn)變?yōu)樾薷臓顟B(tài)。在一個 實施例中,從緩沖狀態(tài)到修改狀態(tài)的轉(zhuǎn)變包括兩階段轉(zhuǎn)變,即從緩沖狀態(tài)到緩沖修改狀態(tài) 的第一轉(zhuǎn)變和從緩沖修改狀態(tài)到修改狀態(tài)的第二轉(zhuǎn)變。 在本文中使用的模塊指任何硬件、軟件、固件或其組合。示為單獨的模塊邊界經(jīng)常 是通常有所不同,并可能重疊。例如,第一模塊和第二模塊可共享硬件、軟件、固件或其組 合,同時可能保留一些獨立的硬件、軟件或固件。在一個實施例中,術(shù)語邏輯的使用包括諸 如晶體管、寄存器等硬件,或諸如可編程邏輯裝置等其它硬件。然而,在另一實施例中,邏輯 也包括與硬件集成的軟件或代碼,如固件或微代碼。 在本文中使用時,值包括數(shù)字、狀態(tài)、邏輯狀態(tài)或二進制邏輯狀態(tài)的任何已知表 示。邏輯電平、邏輯的值(logic value)或邏輯值(logicalvalue)的使用也稱為l和0,這 簡單地表示二進制邏輯狀態(tài)。例如,1指高邏輯電平,并且0指低邏輯電平。在一個實施例 中,諸如晶體管或閃存單元(flash cell)等儲存單元(storage cell)可以能夠保存單個 邏輯值或多個邏輯值。然而,計算機系統(tǒng)中值的其它表示已被使用。例如,十進制數(shù)字十也 可以表示為二進制值1010和十六進制字母A。因此,值包括能夠保存在計算機系統(tǒng)中的信 息的任何表示。 另外,狀態(tài)可由值或部分值表示。例如,諸如邏輯1等第一值可表示默認或初始狀 態(tài),而諸如邏輯0等第二值可表示非默認狀態(tài)。另外,在一個實施例中,術(shù)語復(fù)位和設(shè)置分 別指默認和更新的值或狀態(tài)。例如,默認值可能包括高邏輯值,即復(fù)位,而更新的值可能包 括低邏輯值,即設(shè)置。注意,值的任何組合可用于表示任何數(shù)量的狀態(tài)。
上述方法、硬件、軟件、固件或代碼的實施例可通過在機器可訪問或機器可讀媒體 上存儲的、可由處理部件執(zhí)行的指令或代碼實現(xiàn)。機器可訪問/可讀媒體包括以機器(諸 如計算機或電子系統(tǒng))可讀形式提供(即,存儲和/或傳送)信息的任何機制。例如,機器 可訪問媒體包括諸如靜態(tài)隨機存取存儲器(SRAM)或動態(tài)RAM (DRAM)的RAM、R0M、磁性或光 學(xué)存儲媒體、閃速存儲器裝置、電氣存儲裝置、光學(xué)存儲裝置、聲學(xué)存儲裝置或其它形式的 傳播信號(例如,載波、紅外信號、數(shù)字信號)存儲裝置等。例如,機器可通過從能夠保存要 在傳播的信號上傳送的信息的媒體接收諸如載波等傳播信號,對存儲裝置進行訪問。
此說明書通篇對"一個實施例"或"實施例"的引用指結(jié)合該實施例描述的特定特 性、結(jié)構(gòu)或特征包括在本發(fā)明的至少一個實施例中。因此,在說明書通篇各個位置出現(xiàn)的 "在一個實施例"或"在實施例中"短語不一定全部指同一實施例。此外,特定的特性、結(jié)構(gòu) 或特征可在一個或多個實施例中以任何適合的方式組合。 在上述說明中,參照特定示范實施例提供了詳細說明。然而,將可明白,在不脫離 如隨附權(quán)利要求所述的本發(fā)明范圍更廣泛的精神和范圍的情況下,可對其進行各種修改和更改。相應(yīng)地,說明書和附圖要視為是說明性而不是限制性。此外,實施例和其它示范語言 的上述使用不必指同一實施例或同一示例,而是可指不同和獨特的實施例及可能同一實施 例。
權(quán)利要求
一種設(shè)備,包括執(zhí)行資源,執(zhí)行引用與數(shù)據(jù)項相關(guān)聯(lián)的地址的事務(wù)內(nèi)的事務(wù)存儲操作;以及耦合到所述執(zhí)行資源的存儲器,所述存儲器響應(yīng)所述執(zhí)行資源執(zhí)行所述事務(wù)存儲操作而將所述數(shù)據(jù)項保持在緩沖一致性狀態(tài)。
2. 如權(quán)利要求1所述的設(shè)備,其中所述存儲器包括耦合到所述執(zhí)行資源的高速緩沖存 儲器以將所述數(shù)據(jù)項保持在緩沖一致性狀態(tài),以及其中所述高速緩沖存儲器包括要保存至 少部分所述數(shù)據(jù)項、要與所述緩沖一致性狀態(tài)相關(guān)聯(lián)的高速緩存行。
3. 如權(quán)利要求2所述的設(shè)備,其中要保存至少部分所述數(shù)據(jù)項、要與所述緩沖一致性 狀態(tài)相關(guān)聯(lián)的所述高速緩沖存儲器的高速緩存行包括與保存緩沖狀態(tài)值的所述高速緩存 行相關(guān)聯(lián)的狀態(tài)項目,以指示所述高速緩存行被保持在所述緩沖一致性狀態(tài)。
4. 如權(quán)利要求2所述的設(shè)備,其中還包括與所述高速緩沖存儲器相關(guān)聯(lián)的控制邏輯。
5. 如權(quán)利要求4所述的設(shè)備,其中與所述高速緩存行相關(guān)聯(lián)的硬件監(jiān)視器也要響應(yīng)所 述執(zhí)行資源執(zhí)行所述事務(wù)存儲操作而指示所述高速緩存行被緩沖。
6. 如權(quán)利要求5所述的設(shè)備,其中所述控制邏輯要響應(yīng)所述控制邏輯接收外部訪問請 求和所述硬件監(jiān)視器指示所述高速緩存行被緩沖,在所述外部訪問請求時檢測沖突。
7. 如權(quán)利要求4所述的設(shè)備,其中與所述高速緩存行相關(guān)聯(lián)的硬件讀取監(jiān)視器也要響 應(yīng)所述執(zhí)行資源在所述事務(wù)內(nèi)執(zhí)行本地事務(wù)讀取操作而指示所述高速緩存行受讀取監(jiān)視。
8. 如權(quán)利要求4所述的設(shè)備,其中所述控制邏輯要響應(yīng)所述控制邏輯接收引用所述高 速緩存行的外部訪問請求并且所述高速緩存行與所述緩沖一致性狀態(tài)相關(guān)聯(lián)而提供未命 中響應(yīng)。
9. 如權(quán)利要求8所述的設(shè)備,其中所述控制邏輯要響應(yīng)所述控制邏輯接收引用所述高 速緩存行的本地訪問請求并且所述高速緩存行與所述緩沖一致性狀態(tài)相關(guān)聯(lián)而提供命中 響應(yīng)。
10. 如權(quán)利要求4所述的設(shè)備,其中所述控制邏輯要響應(yīng)所述事務(wù)被提交而將所述高 速緩存行從與所述緩沖一致性狀態(tài)相關(guān)聯(lián)轉(zhuǎn)變?yōu)樾薷囊恢滦誀顟B(tài)。
11. 如權(quán)利要求io所述的設(shè)備,其中所述控制邏輯要將所述高速緩存行從與所述緩沖一致性狀態(tài)相關(guān)聯(lián)轉(zhuǎn)變?yōu)樾薷囊恢滦誀顟B(tài)包括所述控制邏輯將所述高速緩存行從與所述 緩沖一致性狀態(tài)相關(guān)聯(lián)直接轉(zhuǎn)變?yōu)榕c所述修改一致性狀態(tài)相關(guān)聯(lián)。
12. 如權(quán)利要求10所述的設(shè)備,其中所述控制邏輯要將所述高速緩存行從與所述緩沖 一致性狀態(tài)相關(guān)聯(lián)轉(zhuǎn)變?yōu)樾薷囊恢滦誀顟B(tài)包括所述控制邏輯將所述高速緩存行從與所述 緩沖一致性狀態(tài)相關(guān)聯(lián)轉(zhuǎn)變?yōu)榫彌_修改中間一致性狀態(tài),然后清除所述緩沖狀態(tài)以使所述 高速緩存行與所述修改一致性狀態(tài)相關(guān)聯(lián)。
13. 如權(quán)利要求4所述的設(shè)備,其中所述控制邏輯能響應(yīng)用戶級指令而訪問要與所述 高速緩存行相關(guān)聯(lián)的所述緩沖一致性狀態(tài),以及其中所述用戶級指令從由設(shè)置一致性狀態(tài) 指令、清除一致性狀態(tài)指令和測試一致性狀態(tài)指令組成的組中選擇。
14. 一種處理器,包括高速緩沖存儲器,響應(yīng)執(zhí)行存儲操作而在要保持在緩沖一致性狀態(tài)的高速緩存行中保 存至少部分數(shù)據(jù)項,所述存儲操作要引用所述數(shù)據(jù)項和要選擇用于緩沖;以及與所述高速緩沖存儲器相關(guān)聯(lián)的控制邏輯,響應(yīng)在所述高速緩存行保持在所述緩沖一致性狀態(tài)時接收與所述高速緩存行相關(guān)聯(lián)的外部訪問請求,提供未命中響應(yīng)。
15. 如權(quán)利要求14所述的處理器,其中所述控制邏輯還要響應(yīng)在所述高速緩存行保持 在所述緩沖一致性狀態(tài)時接收與所述高速緩存行相關(guān)聯(lián)的所述外部訪問請求,將所述高速 緩存行從保持在所述緩沖一致性狀態(tài)轉(zhuǎn)變?yōu)闊o效一致性狀態(tài)。
16. 如權(quán)利要求14所述的處理器,還包括要與所述存儲操作相關(guān)聯(lián)的第一處理部件和 不與所述存儲操作相關(guān)聯(lián)的第二處理部件,其中與所述高速緩存行相關(guān)聯(lián)的所述外部訪問 請求包括訪問與所述第二處理部件相關(guān)聯(lián)的所述數(shù)據(jù)項的訪問請求。
17. 如權(quán)利要求14所述的處理器,還包括解碼器邏輯,其中要選擇用于緩沖的所述存 儲操作包括所述解碼器邏輯將所述存儲操作識別為包括要選擇用于緩沖的事務(wù)存儲操作。
18. 如權(quán)利要求14所述的處理器,還包括用戶可訪問控制寄存器以保存指示緩沖的選 擇模式的選擇值和指示緩沖的非選擇模式的非選擇值。
19. 如權(quán)利要求18所述的處理器,其中要選擇用于緩沖的所述存儲操作包括所述用戶 可訪問控制寄存器保存所述選擇值和匹配選擇標準的所述存儲操作相關(guān)聯(lián)的標準,或者所 述用戶可訪問控制寄存器保存所述非選擇值。
20. 如權(quán)利要求14所述的處理器,還包括與所述高速緩存行相關(guān)聯(lián)的一致性狀態(tài)項目,其中要保持在所述緩沖一致性狀態(tài)的所述高速緩存行包括保存緩沖一致性值的所述狀 態(tài)項目。
21. —種設(shè)備,包括高速緩沖存儲器,響應(yīng)所述數(shù)據(jù)項在事務(wù)內(nèi)被事務(wù)性訪問(transactionally accessed)而在要與緩沖一致性狀態(tài)相關(guān)聯(lián)的高速緩存行中保存至少部分數(shù)據(jù)項;以及與所述高速緩沖存儲器相關(guān)聯(lián)的控制邏輯,所述控制邏輯響應(yīng)所述事務(wù)被提交而將所 述高速緩存行從與所述緩沖一致性狀態(tài)相關(guān)聯(lián)轉(zhuǎn)變?yōu)樾薷囊恢滦誀顟B(tài)。
22. 如權(quán)利要求21的設(shè)備,其中要與緩沖一致性狀態(tài)相關(guān)聯(lián)的高速緩存行包括與所述 高速緩存行相關(guān)聯(lián)的一致性項目以便保存緩沖一致性值。
23. 如權(quán)利要求22所述的設(shè)備,其中控制邏輯將所述高速緩存行從與所述緩沖一致性 狀態(tài)相關(guān)聯(lián)轉(zhuǎn)變?yōu)樾薷囊恢滦誀顟B(tài)包括將所述一致性項目從保存所述緩沖一致性值更新 為保存修改一致性值。
24. 如權(quán)利要求23所述的設(shè)備,其中將所述一致性項目從保存所述緩沖一致性值更新 為保存修改一致性值包括將所述一致性項目從保存所述緩沖一致性值更新為保存緩沖修 改中間一致性值,然后從所述緩沖修改中間一致性值清除所述緩沖一致性值以形成所述修 改一致性值。
25. 如權(quán)利要求24所述的設(shè)備,其中所述一致性項目包括比特向量,以及其中將所述 一致性項目從保存所述緩沖一致性值更新為保存緩沖修改中間一致性值,然后從所述緩沖 修改中間一致性值清除所述緩沖一致性值以剩下所述修改一致性值包括設(shè)置所述一致性 項目的修改比特以將所述一致性項目從保存所述緩沖一致性值更新為保存所述緩沖修改 中間一致性值,然后清除所述一致性項目的緩沖比特以剩下為所述修改一致性值設(shè)置的所 述修改比特。
26. 如權(quán)利要求21所述的設(shè)備,其中所述事務(wù)被提交是響應(yīng)用戶級提交事務(wù)指令的執(zhí)行。
27. 如權(quán)利要求21所述的設(shè)備,其中所述事務(wù)被提交是響應(yīng)到達所述事務(wù)的結(jié)束而未 檢測到任何事務(wù)有關(guān)沖突。
28. —種系統(tǒng),包括處理器,包括存儲器和耦合到所述存儲器的控制邏輯,所述存儲器包括用于響應(yīng)所述 數(shù)據(jù)項被事務(wù)性寫入而保存至少部分數(shù)據(jù)項的、在緩沖狀態(tài)的行,以及所述控制邏輯響應(yīng) 對在所述緩沖狀態(tài)的所述行的本地訪問請求而提供命中響應(yīng)并且響應(yīng)對在所述緩沖狀態(tài) 的所述行的非本地訪問請求而提供未命中響應(yīng);以及耦合到所述處理器的輸入/輸出(I/O)裝置。
29. 如權(quán)利要求28所述的系統(tǒng),其中所述控制邏輯還要響應(yīng)對在所述緩沖狀態(tài)的所述 行的所述非本地訪問請求而將所述行從所述緩沖狀態(tài)轉(zhuǎn)變?yōu)闊o效狀態(tài)。
30. 如權(quán)利要求28所述的系統(tǒng),其中所述控制邏輯還要響應(yīng)為所述行執(zhí)行提交操作而 將所述行從所述緩沖狀態(tài)轉(zhuǎn)變?yōu)樾薷臓顟B(tài)。
31. 如權(quán)利要求28所述的系統(tǒng),其中所述處理器還包括硬件寫入監(jiān)視器和硬件讀取 監(jiān)視器,所述硬件寫入監(jiān)視器要設(shè)為響應(yīng)所述數(shù)據(jù)項被事務(wù)性寫入而指示所述行受寫入監(jiān) 視,所述硬件讀取監(jiān)視器要設(shè)為響應(yīng)所述數(shù)據(jù)項被事務(wù)性讀取而指示所述行受讀取監(jiān)視。
32. —種方法,包括遇到引用與數(shù)據(jù)項相關(guān)聯(lián)的地址的事務(wù)存儲;響應(yīng)遇到所述事務(wù)存儲,執(zhí)行所述數(shù)據(jù)項的緩沖存儲以將所述數(shù)據(jù)項與緩沖狀態(tài)相關(guān) 聯(lián);以及響應(yīng)所述數(shù)據(jù)項與所述緩沖狀態(tài)相關(guān)聯(lián),為對所述數(shù)據(jù)項的本地訪問提供命中響應(yīng), 并且為對所述數(shù)據(jù)項的外部訪問提供未命中響應(yīng)。
33. 如權(quán)利要求32所述的方法,其中引用所述地址的所述事務(wù)存儲包括可由處理器的 解碼器邏輯識別的操作代碼(操作碼)以指示所述事務(wù)存儲要執(zhí)行為緩沖存儲。
34. 如權(quán)利要求32所述的方法,其中執(zhí)行所述數(shù)據(jù)項的緩沖存儲以將所述數(shù)據(jù)項與緩 沖狀態(tài)相關(guān)聯(lián)包括執(zhí)行至少部分所述數(shù)據(jù)項到與所述數(shù)據(jù)項相關(guān)聯(lián)的地址相關(guān)聯(lián)的高速緩沖存儲器中 高速緩存行的緩沖存儲;以及將對應(yīng)于所述高速緩存行的一致性狀態(tài)項目更新為緩沖狀態(tài)值以將所述高速緩存行 中保存的至少所述部分所述數(shù)據(jù)項與所述緩沖狀態(tài)相關(guān)聯(lián)。
35. 如權(quán)利要求34所述的方法,還包括響應(yīng)執(zhí)行至少所述部分所述數(shù)據(jù)項到所述高速 緩存行的所述緩沖存儲,將與所述高速緩存行相關(guān)聯(lián)的寫入監(jiān)視器更新為< 受監(jiān)視狀態(tài)以指 示所述高速緩存行受寫入監(jiān)視。
36. 如權(quán)利要求34所述的方法,還包括響應(yīng)所述數(shù)據(jù)項與所述緩沖狀態(tài)相關(guān)聯(lián)并且為 對所述數(shù)據(jù)項的所述外部訪問提供未命中響應(yīng),將所述一致性狀態(tài)項目更新為無效狀態(tài)值 以將保存在所述高速緩存行中的至少所述部分所述數(shù)據(jù)項與無效狀態(tài)相關(guān)聯(lián)。
37. 如權(quán)利要求34所述的方法,還包括響應(yīng)所述數(shù)據(jù)項與所述緩沖狀態(tài)相關(guān)聯(lián)并且執(zhí) 行與所述數(shù)據(jù)項相關(guān)聯(lián)的提交,將所述一致性狀態(tài)項目更新為修改狀態(tài)值以將保存在所述 高速緩存行中的至少所述部分所述數(shù)據(jù)項與修改狀態(tài)相關(guān)聯(lián)。
38. 如權(quán)利要求34所述的方法,其中將所述一致性狀態(tài)項目更新為修改狀態(tài)值以將保存在所述高速緩存行中的至少所述部分所述數(shù)據(jù)項與修改狀態(tài)相關(guān)聯(lián)包括將所述一致性 狀態(tài)項目更新為修改緩沖狀態(tài)值,然后從所述修改緩沖狀態(tài)值清除所述緩沖狀態(tài)值以剩下 所述修改狀態(tài)值。
全文摘要
本發(fā)明的名稱為擴展高速緩存一致性協(xié)議以支持本地緩沖的數(shù)據(jù),描述了用于擴展高速緩存一致性以保存緩沖的數(shù)據(jù)從而支持事務(wù)執(zhí)行的方法和設(shè)備。引用與數(shù)據(jù)項相關(guān)聯(lián)的地址的事務(wù)存儲操作以緩沖的方式執(zhí)行。此處,與保存數(shù)據(jù)項的高速緩存行相關(guān)聯(lián)的一致性狀態(tài)轉(zhuǎn)變?yōu)榫彌_狀態(tài)。響應(yīng)對緩沖數(shù)據(jù)項的本地請求,提供數(shù)據(jù)項以確保內(nèi)部事務(wù)順序排序。然而,響應(yīng)外部訪問請求,提供未命中響應(yīng)以確保不使事務(wù)性更新的數(shù)據(jù)項在提交前全局可見。在提交后,緩沖行轉(zhuǎn)變?yōu)樾薷臓顟B(tài)以使數(shù)據(jù)項全局可見。
文檔編號G06F9/46GK101770397SQ200910261800
公開日2010年7月7日 申請日期2009年12月28日 優(yōu)先權(quán)日2008年12月30日
發(fā)明者E·科亨, G·希菲爾, O·馬古利斯, R·薩德, S·賴金, V·巴辛 申請人:英特爾公司