两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

事務(wù)存儲器(tm)系統(tǒng)中的讀和寫監(jiān)控屬性的制作方法

文檔序號:6587912閱讀:215來源:國知局
專利名稱:事務(wù)存儲器(tm)系統(tǒng)中的讀和寫監(jiān)控屬性的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及處理器執(zhí)行領(lǐng)域,并且具體來說,涉及多組指令的執(zhí)行。相關(guān)申請的交叉引用本申請涉及以下與其一同遞交的專利申請Gad Sheaffer等于2008年12月30 日遞交的代理人卷號為 P29132、標(biāo)題為“Extending Cache CoherencyProtocols to Support Locally Buffered Data,,的美國專利申請 no. 12/346,543 ;Gad Sheaffer 等于 2008年12月30日遞交的代理人卷號為P29131、標(biāo)題為“Memory Model for Hardware Attributes Within a Transactional MemorySystem" W^H^^J^it no. 12/346, 539 ; Gad Sheaffer等于2008年12月30日遞交的代理人卷號為P29129、標(biāo)題為“Registering a User-Handler inHardware for Transactional Memory Event Handling,,的美國專利申 請no. 12/346, 518 ;Gad Sheaffer等于2008年12月30日遞交的代理人卷號為P29128、標(biāo) 題為“Metaphysical Address Space for Holding Lossy Meta-data inHardware,,的美國 專利申請 no. 12/346,500。
背景技術(shù)
半導(dǎo)體工藝和邏輯設(shè)計(jì)技術(shù)的進(jìn)步已經(jīng)使得集成電路設(shè)備上可以存在的邏輯的 數(shù)量得到增加。因此,計(jì)算機(jī)系統(tǒng)配置已經(jīng)從一個系統(tǒng)中有單個或多個集成電路演進(jìn)到在 單獨(dú)集成電路上存在多個核心和多個邏輯處理器。處理器或集成電路通常包括單個處理器 管芯,其中,處理器管芯可以包括任意數(shù)量的核心或邏輯處理器。集成電路上數(shù)量不斷增加的核心和邏輯處理器使得能夠同時執(zhí)行更多軟件線程。 然而,可以同時執(zhí)行的軟件線程的數(shù)量的增加已經(jīng)造成了與同步這些軟件線程之間共享的 數(shù)據(jù)有關(guān)的問題。訪問多核或多邏輯處理器系統(tǒng)中的共享數(shù)據(jù)的一種通用方案包括使用鎖 來確保對共享數(shù)據(jù)進(jìn)行的多個訪問上的互斥性。然而,不斷提高的執(zhí)行多個軟件線程的能 力仍然可能導(dǎo)致執(zhí)行的誤競爭(false contention)和串行化。例如,考慮保存有共享數(shù)據(jù)的哈希表。對于鎖系統(tǒng),程序員可以鎖定整個哈希表, 允許一個線程訪問整個哈希表。然而,其他線程的吞吐量和性能可能受到不利影響,因?yàn)?在鎖被釋放之前它們不能訪問該哈希表中的任何條目??商娲?,哈希表中的每個條目都 可以被鎖定。對于任何一種方式,在將該簡單示例外推到大型可擴(kuò)展程序之后,顯而易見的 是,鎖競爭、串行化、細(xì)粒度同步以及避免死鎖的復(fù)雜性會成為程序員的極繁重的負(fù)擔(dān)。另一種近來的數(shù)據(jù)同步技術(shù)包括使用事務(wù)存儲器(transaCti0nalmem0ry,TM)。通 常,事務(wù)執(zhí)行包括執(zhí)行由多個微操作、操作或指令組成的組。在上面的示例中,兩個線程均 在哈希表中執(zhí)行,并且它們的存儲器訪問被監(jiān)控/跟蹤。如果兩個線程訪問/改變同一條 目,則可以執(zhí)行沖突解決來保證數(shù)據(jù)的有效性。一種事務(wù)執(zhí)行包括軟件事務(wù)存儲器(STM), 其中,用軟件來執(zhí)行存儲器訪問的跟蹤、沖突解決、中止任務(wù)和其他事務(wù)任務(wù),通常沒有硬 件的支持。在強(qiáng)原子性軟件事務(wù)存儲器(STM)系統(tǒng)中,為了保證不發(fā)生事務(wù)存儲器操作和非事務(wù)存儲器操作之間的運(yùn)行時沖突,編譯器將每個非事務(wù)存儲器操作視為單個操作事務(wù)。 換言之,在事務(wù)存儲器訪問處和非事務(wù)存儲器訪問處插入事務(wù)屏障(barrier),以將事務(wù)彼 此之間以及與非事務(wù)存儲器訪問進(jìn)行隔離。然而,在每個事務(wù)存儲器操作和非事務(wù)存儲器 操作處執(zhí)行事務(wù)屏障可能是昂貴且復(fù)雜的。 另一種事務(wù)執(zhí)行包括硬件事務(wù)存儲器(HTM)系統(tǒng),其中,硬件被包括在內(nèi)來支持 訪問跟蹤、沖突解決以及其他事務(wù)任務(wù)。然而,之前在對事務(wù)執(zhí)行的硬件支持方面上的嘗試 并未有效地將軟件事務(wù)的優(yōu)點(diǎn)(例如,在任何數(shù)據(jù)粒度級上進(jìn)行訪問跟蹤和沖突檢測)集 成到硬件中。


通過舉例的方式來說明本發(fā)明,并且附圖并不意圖限制本發(fā)明。圖1說明了包括能夠同時執(zhí)行多個軟件線程的多個處理部件的處理器的實(shí)施例。圖2說明了處理器中支持事務(wù)執(zhí)行的結(jié)構(gòu)的實(shí)施例。圖3說明了在存儲器訪問監(jiān)控的選擇性關(guān)聯(lián)模式下或者在存儲器訪問監(jiān)控的非 選擇性關(guān)聯(lián)模式下工作的方法的流程圖的實(shí)施例。圖4說明了包括額外監(jiān)控的高速緩存一致性狀態(tài)的高速緩存一致性狀態(tài)的狀態(tài) 轉(zhuǎn)變圖的另一實(shí)施例。圖5說明了監(jiān)控存儲器訪問的方法的流程圖的實(shí)施例。
具體實(shí)施例方式在以下描述中,為了提供對本發(fā)明的透徹理解,闡述了許多特定細(xì)節(jié),例如,事務(wù) 執(zhí)行的特定硬件結(jié)構(gòu)、訪問監(jiān)控器的特定類型和實(shí)現(xiàn)、特定的高速緩存實(shí)現(xiàn)、特定類型的高 速緩存一致性模型、特定的數(shù)據(jù)粒度,以及存儲器訪問和位置的特定類型等的示例。然而, 將對本領(lǐng)域技術(shù)人員顯而易見的是,實(shí)踐本發(fā)明并不一定要采用這些特定細(xì)節(jié)。在其他示 例中,為了避免不必要地混淆本發(fā)明,未詳細(xì)描述熟知的組件或方法,例如,軟件中事務(wù)的 編碼、事務(wù)的劃分、特定且可選的多核與多線程處理器架構(gòu)、特定的編譯器方法/實(shí)現(xiàn),以 及微處理器的特定操作細(xì)節(jié)。本文所描述的方法和裝置用于提供存儲器訪問監(jiān)控器來支持事務(wù)執(zhí)行。特別地, 主要參照與高速緩沖存儲器結(jié)構(gòu)相關(guān)聯(lián)、用于跟蹤對存儲器地址的訪問的監(jiān)控器,來討論 提供存儲器訪問監(jiān)控器。實(shí)際上,在下面圖2和4中具體參照與高速緩沖存儲器相關(guān)聯(lián)的 監(jiān)控器。然而,用于提供存儲器訪問監(jiān)控器的方法和裝置并不限于此,它們可以結(jié)合用于跟 蹤對數(shù)據(jù)元素的存儲器訪問的任何結(jié)構(gòu)來實(shí)現(xiàn)。參照圖1,說明了能夠同時執(zhí)行多個線程的處理器的實(shí)施例。注意,處理器100可 以包括對硬件事務(wù)執(zhí)行的硬件支持。以結(jié)合硬件事務(wù)執(zhí)行的方式或者以單獨(dú)進(jìn)行的方式, 處理器100還可以對以下項(xiàng)提供硬件支持軟件事務(wù)存儲器(STM)的硬件加速、STM的單獨(dú) 執(zhí)行,或者其組合,例如混合型事務(wù)存儲器(TM)系統(tǒng)。處理器100包括任意處理器,例如, 微處理器、嵌入式處理器、數(shù)字信號處理器(DSP)、網(wǎng)絡(luò)處理器,或執(zhí)行代碼的其他設(shè)備。如 所示出的,處理器100包括多個處理部件。在一個實(shí)施例中,處理部件是指線程單元、處理單元、上下文、邏輯處理器、硬件線程、核心,和/或能夠保持處理器的狀態(tài)(例如,執(zhí)行狀態(tài)或架構(gòu)狀態(tài))的任何其他部件。換 言之,在一個實(shí)施例中,處理部件是指能夠與代碼(例如,軟件線程、操作系統(tǒng)、應(yīng)用程序或 其他代碼)獨(dú)立相關(guān)的任何硬件。物理處理器通常是指集成電路,其可以包括任意數(shù)量的 其他處理部件,例如多個核心或多個硬件線程。核心通常是指位于集成電路上能夠維持獨(dú)立的架構(gòu)狀態(tài)(其中,每個獨(dú)立維持的 架構(gòu)狀態(tài)與至少一些專用執(zhí)行資源相關(guān)聯(lián))的邏輯。與核心相對地,硬件線程通常是指位 于集成電路上能夠維持獨(dú)立的架構(gòu)狀態(tài)(其中,獨(dú)立維持的架構(gòu)狀態(tài)共享對執(zhí)行資源的訪 問)的任何邏輯。如可以看到的,當(dāng)某些資源被共享而其他資源專用于一個架構(gòu)狀態(tài)時,硬 件線程和核心的命名之間的界線有重疊。然而通常來說,核心和硬件線程被操作系統(tǒng)視為 單獨(dú)的邏輯處理器,其中,操作系統(tǒng)能夠單獨(dú)調(diào)度每個邏輯處理器上的操作。如圖1中所示,物理處理器100包括兩個核心,核心101和102,它們共享對更高 級高速緩存110的訪問。盡管處理器100可以包括非對稱的核心,即,多個核心具有不同的 配置、功能單元和/或邏輯,但是所說明的是對稱的核心。因此,為了避免重復(fù)討論,將不 詳細(xì)討論被示出為與核心101等同的核心102。另外,核心101包括兩個硬件線程IOla和 101b,而核心102包括兩個硬件線程102a和102b。因此,諸如操作系統(tǒng)這樣的軟件實(shí)體可 以將處理器100視為四個單獨(dú)的處理器,S卩,能夠同時執(zhí)行四個軟件線程的四個邏輯處理 器或處理 部件。這里,第一線程與架構(gòu)狀態(tài)寄存器IOla相關(guān)聯(lián),第二線程與架構(gòu)狀態(tài)寄存器IOlb 相關(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)寄存器IOlb中復(fù)制架構(gòu)狀態(tài)寄存器101a,因此,能夠針對邏輯 處理器IOla和邏輯處理器IOlb存儲單獨(dú)的架構(gòu)狀態(tài)/上下文。還可以針對線程IOla和 IOlb復(fù)制其他更小的資源,例如,指令指針和重命名分配器邏輯130中的重命名邏輯。一些 資源,例如,重排序/引退單元135中的重排序緩沖器、ILTB 120、載入/存儲緩沖器以及隊(duì) 列,可以通過分區(qū)來共享。而其他資源,例如通用內(nèi)部寄存器、頁表基址寄存器、低級數(shù)據(jù)高 速緩存與數(shù)據(jù)TLB 115、執(zhí)行單元140,以及亂序單元135的部分,可以被完全共享。處理器100通常包括其他資源,這些資源可以被完全共享、通過分區(qū)來共享,或者 被處理部件專用/專用于處理部件。在圖1中,說明了僅示例性的處理器的實(shí)施例,其具有 處理器的說明性功能單元/資源。注意,處理器可以包括或者省略任何這些功能單元,也可 以包括任何其他未示出的已知功能單元、邏輯或固件。如所示出的,處理器100包括總線接口模塊105,用于與處理器100外部的設(shè)備 (例如,系統(tǒng)存儲器175、芯片組、北橋或其他集成電路)進(jìn)行通信。存儲器175可以專用于 處理器100,或者為系統(tǒng)中的其他設(shè)備所共享。更高級或更靠外的高速緩存110用于對最近 從更高級高速緩存110獲取的元素進(jìn)行緩存。注意,更高級或更靠外是指高速緩存級別增 加或者離執(zhí)行單元更遠(yuǎn)。在一個實(shí)施例中,更高級高速緩存110是二級數(shù)據(jù)高速緩存。然 而,更高級高速緩存110并不限于此,它可以與指令高速緩存相關(guān)聯(lián)或者包括指令高速緩 存。跟蹤高速緩存(即,一種指令高速緩存)可以替代地耦合在譯碼器125之后,用于存儲 最近譯碼的跟蹤。模塊120還可以包括用于預(yù)測要執(zhí)行/采用的分支的分支目標(biāo)緩沖器, 和用于存儲指令的地址轉(zhuǎn)換條目的指令轉(zhuǎn)換緩沖器(I-TLB)。譯碼模塊125被耦合到獲取單元120,以對獲取的元素進(jìn)行譯碼。在一個實(shí)施例中,處理器100與指令集架構(gòu)(ISA)相關(guān)聯(lián),所述指令集架構(gòu)定義/規(guī)定了處理器100上可執(zhí)行的指令。這里,被ISA識別的機(jī)器碼指令通常包括該指令中的被稱為操作碼(opcode) 的那一部分,其涉及/規(guī)定要執(zhí)行的指令或操作。在一個示例中,分配器和重命名器模塊130包括分配器,用于保留諸如寄存器文 件這樣的資源,以存儲指令處理結(jié)果。然而,線程IOla和IOlb可能能夠進(jìn)行亂序執(zhí)行,在 這種情況下,分配器和重命名器模塊130還保留諸如重排序緩沖器這樣的其他資源,以跟 蹤指令結(jié)果。單元130還可以包括寄存器重命名器,用于將程序/指令引用寄存器重命名 為處理器100內(nèi)部的其他寄存器。重排序/引退單元135包括諸如上面提及的重排序緩沖 器、載入緩沖器和存儲緩沖器這樣的組件,以支持亂序執(zhí)行和亂序執(zhí)行的指令之后的有序 引退。在一個實(shí)施例中,調(diào)度器和執(zhí)行單元模塊140包括調(diào)度器單元,用于調(diào)度執(zhí)行單 元上的指令/操作。例如,在具有可用浮點(diǎn)執(zhí)行單元的執(zhí)行單元的端口上調(diào)度浮點(diǎn)指令。與 這些執(zhí)行單元相關(guān)聯(lián)的寄存器文件也被包括來存儲信息指令處理結(jié)果。示例性執(zhí)行單元包 括浮點(diǎn)執(zhí)行單元、整數(shù)執(zhí)行單元、跳轉(zhuǎn)執(zhí)行單元、載入執(zhí)行單元、存儲執(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),以將物理存儲器分成多個虛擬頁。在一個實(shí)施例中,處理器100能夠進(jìn)行事務(wù)執(zhí)行。事務(wù)也可以被稱為代碼的臨界 或原子段,其包括要作為原子組被執(zhí)行的由指令、操作或微操作組成的組。例如,指令或操 作可以用來劃分事務(wù)或臨界段。在一個實(shí)施例中,如下面更詳細(xì)描述的,這些指令是諸如 指令集架構(gòu)(ISA)這樣的指令集的一部分,其可被處理器100的諸如上述譯碼器這樣的 硬件識別。通常,一旦從高級語言被編譯成硬件可識別的匯編語言,這些指令包括操作碼 (opcode),或者這些指令的在譯碼階段由譯碼器識別的其他部分。通常,在執(zhí)行事務(wù)期間,在事務(wù)被提交(commit)之前,對存儲器的更新不是全局 可見的。例如,對一位置的事務(wù)寫操作對本地線程可能是可見的,但是,在包括該事務(wù)寫操 作的事務(wù)被提交之前,對于來自另一線程的讀操作,并不轉(zhuǎn)發(fā)寫數(shù)據(jù)來作為響應(yīng)。如下面所 更詳細(xì)討論的,當(dāng)事務(wù)仍未決時,從存儲器載入和寫入存儲器的數(shù)據(jù)項(xiàng)/元素被跟蹤。一旦 事務(wù)到達(dá)提交點(diǎn),如果未檢測到對于該事務(wù)的沖突,則該事務(wù)被提交,并且使該事務(wù)期間所 進(jìn)行的更新為全局可見。然而,如果事務(wù)在其未決期間被無效,則事務(wù)被中止并且可能被重啟,而不使更新 為全局可見。因此,如本文所使用的,事務(wù)的未決是指事務(wù)已經(jīng)開始執(zhí)行,但是還未被提交 或中止,也即未決。事務(wù)執(zhí)行的示例性實(shí)現(xiàn)包括硬件事務(wù)存儲器(HTM)系統(tǒng)、軟件事務(wù)存儲 器(STM)系統(tǒng),及其組合或混合。軟件事務(wù)存儲器(STM)系統(tǒng)通常是指用軟件或至少部分用軟件來執(zhí)行訪問跟蹤、 沖突解決,或其他事務(wù)存儲器任務(wù)。在一個實(shí)施例中,處理器100能夠執(zhí)行編譯器來編譯程 序代碼,以支持事務(wù)執(zhí)行。這里,編譯器可以插入操作、調(diào)用、函數(shù)以及其他代碼,以使得能 夠執(zhí)行事務(wù)。
編譯器通常包括程序或程序集,用于將源文本/代碼轉(zhuǎn)換成目標(biāo)文本/代碼。通 常,用編譯器對程序/應(yīng)用程序代碼進(jìn)行的編譯以多個階段和多遍來實(shí)現(xiàn),以將高級編程 語言代碼轉(zhuǎn)換成低級機(jī)器或匯編語言代碼。然而,仍然可以將單遍編譯器用于簡單編譯。編 譯器可以使用任何已知編譯技術(shù),并執(zhí)行任何已知編譯器操作,例如,詞法分析、預(yù)處理、句 法分析、語義分析、代碼生成、代碼轉(zhuǎn)換以及代碼優(yōu)化。
盡管較大的編譯器通常包括多個階段,但是這些階段最常見的是包括在兩個通用 階段內(nèi)(1)前端,即,一般在其中可以進(jìn)行句法處理、語義處理和一些轉(zhuǎn)換/優(yōu)化;以及 (2)后端,即,一般在其中進(jìn)行分析、轉(zhuǎn)換、優(yōu)化和代碼生成。一些編譯器涉及中端,其說明編 譯器的前端和后端之間的界定模糊。因此,所涉及的編譯器的插入、關(guān)聯(lián)、生成或其他操作 可以在前述多個階段或多遍以及編譯器的任何其他已知的多個階段或多遍中的任何一個 內(nèi)進(jìn)行。作為說明性示例,編譯器可以將事務(wù)操作、調(diào)用、函數(shù)等插入編譯的一個或更多階 段中,例如,在編譯的前端階段中插入調(diào)用/操作,然后在事務(wù)存儲器轉(zhuǎn)換階段期間將調(diào)用 /操作轉(zhuǎn)換成低級代碼。然而,不管編譯器的執(zhí)行環(huán)境和動態(tài)或靜態(tài)特性是何種情況,在一個實(shí)施例中,編 譯器都編譯程序代碼來使得能夠進(jìn)行事務(wù)執(zhí)行。因此,在一個實(shí)施例中,所涉及的程序代碼 的執(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)的其他程序代碼,例如庫;或者⑷它們的組合。在一個實(shí)施例中,處理器100能夠利用硬件/邏輯(即,在硬件事務(wù)存儲器(HTM) 系統(tǒng)內(nèi))執(zhí)行事務(wù)。當(dāng)實(shí)現(xiàn)HTM時,許多具體實(shí)現(xiàn)細(xì)節(jié)來自于架構(gòu)和微架構(gòu)這兩種角度;這 些細(xì)節(jié)中的大部分在本文中未作討論,以免不必要地模糊本發(fā)明。然而,出于說明的目的, 公開了一些結(jié)構(gòu)和實(shí)現(xiàn)。然而,應(yīng)該注意,這些結(jié)構(gòu)和實(shí)現(xiàn)并非必需的,并且可以用具有不 同實(shí)現(xiàn)細(xì)節(jié)的其他結(jié)構(gòu)來補(bǔ)充和/或替換這些結(jié)構(gòu)和實(shí)現(xiàn)。作為實(shí)現(xiàn)設(shè)計(jì)選擇的示例,HTM可以工作在本地更新(update-in-place)方式下 或者工作在寫緩沖方式下。在本地更新式HTM中,對涉及的存儲器地址執(zhí)行事務(wù)寫操作,以 修改其中保存的之前數(shù)據(jù)。然而,不將所修改的數(shù)據(jù)提供給外部請求線程,即,不使該數(shù)據(jù) 為全局可見,而將該數(shù)據(jù)提供給本地讀操作來用于本地存儲器排序目的。另外,之前數(shù)據(jù)通 常被“記錄”,以便當(dāng)中止事務(wù)時,能夠恢復(fù)該之前數(shù)據(jù)以獲得線程在事務(wù)的執(zhí)行開始之前 的狀態(tài)。為了進(jìn)行說明,假定數(shù)據(jù)高速緩存150包括一級數(shù)據(jù)高速緩存來保存來自諸如高 速緩存110和系統(tǒng)存儲器175這樣的更高級存儲器的數(shù)據(jù)。因此,在寫回式高速緩存的一個 實(shí)施例中,一旦遇到將之前數(shù)據(jù)項(xiàng)寫入數(shù)據(jù)高速緩存150的事務(wù)寫操作,則將該之前數(shù)據(jù) 項(xiàng)寫回更高級高速緩存110。可替代地,之前數(shù)據(jù)可以被記錄在處理器100內(nèi)部或外部的另 一單獨(dú)存儲器中。在記錄了之前數(shù)據(jù)項(xiàng)之后,執(zhí)行事務(wù)寫操作來更新高速緩存150中的數(shù) 據(jù)項(xiàng)。因此,諸如本地線程IOla這樣的本地線程,S卩,與該事務(wù)寫操作相關(guān)聯(lián)的線程,可以 讀取高速緩存150中的所修改的數(shù)據(jù)項(xiàng)。然而,如果包括該事務(wù)寫操作的事務(wù)還未被提交, 則響應(yīng)于讀請求,不向諸如線程102b這樣的另一線程提供所修改的數(shù)據(jù),而是提供所記錄 的數(shù)據(jù)。當(dāng)事務(wù)提交時,所記錄的數(shù)據(jù)被無效或忽略。然而,如果事務(wù)中止,則之前數(shù)據(jù)被 重新載入或者被全局標(biāo)識為有效數(shù)據(jù)。
相對地,在寫緩沖式HTM中,事務(wù)寫操作被緩沖在寫緩沖器中,而之前數(shù)據(jù)駐留在 其原始位置。如果諸如線程102b這樣的本地線程執(zhí)行針對被事務(wù)性地寫入的數(shù)據(jù)的讀操 作,則從寫緩沖器轉(zhuǎn)發(fā)修改的數(shù)據(jù)。作為必然結(jié)果,如果外部線程請求讀取該數(shù)據(jù),而包括 該事務(wù)寫操作的事務(wù)仍然未決,則提供來自原始位置的之前數(shù)據(jù)。此外,一旦提交事務(wù),則 將修改的數(shù)據(jù)拷貝到對應(yīng)的存儲器地址,而一旦中止,則忽略被緩沖的數(shù)據(jù)。如可以從上面的討論所看到的,對數(shù)據(jù)項(xiàng)的訪問和請求均可以通過本地處理部件 進(jìn)行,并且也可以通過其他處理部件來進(jìn)行。在沒有安全機(jī)制的情況下,這些訪問中的一些 可能會導(dǎo)致無效的數(shù)據(jù)和執(zhí)行,即,對數(shù)據(jù)的寫操作使讀操作無效,或者讀取無效的數(shù)據(jù)。 因此,處理器100可以包括用于跟蹤或監(jiān)控存儲器訪問的邏輯,以識別可能的沖突。在一個實(shí)施例中,處理器100包括讀和寫監(jiān)控器,用于監(jiān)控和/或跟蹤存儲器訪 問。作為第一示例,這些監(jiān)控器以數(shù)據(jù)元素的粒度來監(jiān)控對數(shù)據(jù)元素的存儲器訪問,而不考 慮保存數(shù)據(jù)元素的物理存儲器結(jié)構(gòu)/位置的粒度的限制。數(shù)據(jù)項(xiàng)或數(shù)據(jù)元素可以包括硬 件、軟件或其組合定義的任何粒度級別的數(shù)據(jù)。數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)項(xiàng)或?qū)ζ涞囊玫氖纠姆歉F舉列表包括存儲器地址、數(shù) 據(jù)對象、類、動態(tài)語言代碼的類型的字段、動態(tài)語言代碼的類型、變量、操作數(shù)、數(shù)據(jù)結(jié)構(gòu),以 及對存儲器地址的間接引用。然而,任何已知的數(shù)據(jù)組都可以被稱為數(shù)據(jù)元素或數(shù)據(jù)項(xiàng)。上 面示例中的一些,例如動態(tài)語言代碼的類型的字段和動態(tài)語言代碼的類型,是指動態(tài)語言 代碼的數(shù)據(jù)結(jié)構(gòu)。為了進(jìn)行說明,諸如Sim Microsystems公司的Java 這樣的動態(tài)語言代 碼是強(qiáng)類型語言。在編譯時,每個變量都具有已知的類型。這些類型被分成兩類——基元 類型(布爾型和數(shù)值型,例如,整型、浮點(diǎn)型)和引用類型(類、接口和數(shù)組)。引用類型的 值是對對象的引用。在Java 中,由字段組成的對象可以是類實(shí)例或數(shù)組。給定類A的對 象a,習(xí)慣使用記法A: :x來指代類型A的字段X,使用a. χ來指代類A的對象a的字段χ。 例如,一個表達(dá)式可以表達(dá)為a. χ = a. y+a. ζ。這里,字段y和字段ζ被載入以相加,并將結(jié) 果寫入字段X。因此,可以以任何數(shù)據(jù)級粒度來執(zhí)行對數(shù)據(jù)項(xiàng)的存儲器訪問的監(jiān)控。例如,在一個 實(shí)施例中,可以以類型級來監(jiān)控對數(shù)據(jù)的存儲器訪問。這里,對字段A: :χ的事務(wù)寫操作和 字段A::y的非事務(wù)載入可以作為對同一數(shù)據(jù)項(xiàng)(即,類型A)的訪問而被監(jiān)控。在另一實(shí) 施例中,以字段級粒度執(zhí)行存儲器訪問的監(jiān)控。這里,對A: :x的事務(wù)寫操作和A: :y的非事 務(wù)載入不作為對同一數(shù)據(jù)項(xiàng)的訪問而被監(jiān)控,因?yàn)樗鼈兪菍Σ煌侄蔚脑L問。注意,在跟蹤 對數(shù)據(jù)項(xiàng)的存儲器訪問中,可以考慮其他數(shù)據(jù)結(jié)構(gòu)或編程技術(shù)。例如,假設(shè)類A的對象的指 向類B的對象的字段χ和y (即,A: :X和A: :y)被初始化給新分配的對象,并且在初始化之 后從未被進(jìn)行寫操作。在一個實(shí)施例中,對于A::y所指向?qū)ο蟮淖侄蜝::z的非事務(wù)載入 來說,對A::X所指向?qū)ο蟮淖侄蜝::z的事務(wù)寫操作不作為對與其相同的數(shù)據(jù)項(xiàng)的存儲器 訪問而被監(jiān)控。從這些示例外推,可以確定監(jiān)控器可以以任何數(shù)據(jù)粒度級別來執(zhí)行監(jiān)控。在一個實(shí)施例中,監(jiān)控器包括讀監(jiān)控器和寫監(jiān)控器,相應(yīng)地用于跟蹤被確定要監(jiān)控的載入和存儲。例如,硬件讀監(jiān)控器和寫監(jiān)控器至少以數(shù)據(jù)項(xiàng)的粒度來執(zhí)行數(shù)據(jù)項(xiàng)的有 界(bounded)監(jiān)控,而不管保存所述數(shù)據(jù)項(xiàng)的存儲結(jié)構(gòu)的粒度。在一個實(shí)施例中,數(shù)據(jù)項(xiàng)的 讀監(jiān)控器包括與該數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的第一數(shù)量的讀屬性。類似地,數(shù)據(jù)項(xiàng)的寫監(jiān)控器包括與 該數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的第二數(shù)量的寫屬性。注意,第一數(shù)量的讀屬性和第二數(shù)量的寫屬性可以相同;然而,它們并不限于此,并且可以包括不同數(shù)量的屬性。讀或?qū)憣傩园ㄓ糜诒4媾c數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的狀態(tài)或信息的任何邏輯、固件或結(jié) 構(gòu)。例如,數(shù)據(jù)項(xiàng)的屬性包括位向量,其中,位向量中的每個位代表數(shù)據(jù)項(xiàng)的一種屬性,例 如,被事務(wù)性地載入、被事務(wù)性地寫入、被非事務(wù)性地載入、被非事務(wù)性地寫入、未被事務(wù)性 地載入、未被事務(wù)性地寫入、未被非事務(wù)性地載入、未被非事務(wù)性地寫入、檢測到訪問沖突、 未檢測到訪問沖突、有讀請求、無讀請求、有寫請求、無寫請求、有所有權(quán)請求、無所有權(quán)請 求,或者與數(shù)據(jù)項(xiàng)或保存該數(shù)據(jù)項(xiàng)的存儲器位置相關(guān)聯(lián)的任何其他屬性或狀態(tài)。作為另一示例,數(shù)據(jù)項(xiàng)的屬性包括編碼值。例如,使用兩個屬性位(即,四個二進(jìn) 制值00、01、11和10)來對諸如以下四種狀態(tài)的狀態(tài)進(jìn)行編碼(1)被事務(wù)性地寫入;(2)被 事務(wù)性地讀取;(3)被非事務(wù)性地寫入;以及( 4)被非事務(wù)性地讀取。注意,這四種狀態(tài)可 以包括示例監(jiān)控寫狀態(tài)、監(jiān)控讀狀態(tài)、非監(jiān)控寫狀態(tài)以及非監(jiān)控讀狀態(tài)。如上面所涉及的,讀和寫屬性可以以任何已知方式與數(shù)據(jù)項(xiàng)/元素相關(guān)聯(lián)。例如, 由此可以將處理器100內(nèi)的通用存儲設(shè)備用來保存與要監(jiān)控的數(shù)據(jù)項(xiàng)的讀和寫相對應(yīng)的 讀和寫屬性。用于關(guān)聯(lián)屬性與數(shù)據(jù)項(xiàng)的方式的數(shù)量太多而無法詳述所有方法。作為第一示例,屬性是與高速緩存行的字節(jié)的子集相關(guān)聯(lián)。例如,假定高速緩存 150的高速緩存行長度為64字節(jié),并且可以以8字節(jié)段被處理器100所訪問。這里,屬性 可以與任何物理存儲粒度相關(guān)聯(lián),例如,作為說明性示例的2、4、8、16、32、64或128字節(jié)的 數(shù)據(jù),并且可以在高速緩存150中改變,例如,對于高速緩存150的一部分與物理存儲的每 4個字節(jié)相關(guān)聯(lián),而對于高速緩存150的另一部分與每8個字節(jié)相關(guān)聯(lián)。在一個實(shí)施例中,無論或不管物理存儲的邊界,監(jiān)控器/屬性都要以數(shù)據(jù)項(xiàng)的粒 度級別來執(zhí)行該數(shù)據(jù)項(xiàng)的有界監(jiān)控,而不管處理器100中的物理存儲(即高速緩存150和 屬性存儲中的一個或二者)的粒度。例如,假定高速緩存150包括可以以4字節(jié)段訪問的 16字節(jié)行,S卩,每個高速緩存行內(nèi)有四個可訪問段。此外,假定讀和寫屬性與每個16字節(jié)行 的每個8字節(jié)段相關(guān)聯(lián)。因此,該高速緩存能夠讀和寫每4字節(jié)的數(shù)據(jù),而屬性能夠監(jiān)控每 8字節(jié)的數(shù)據(jù)。進(jìn)一步說明該示例,被監(jiān)控的載入使得載入20字節(jié)大小的數(shù)據(jù)項(xiàng),跨越高速緩存 150的兩個高速緩存行的一部分,即,第一行的所有16個字節(jié)和第二行的前4個字節(jié)。因 此,與高速緩存150的第一高速緩存行的16個字節(jié)相關(guān)聯(lián)的讀屬性被更新,以指示發(fā)生了 所監(jiān)控的載入。此外,與高速緩存150的第二高速緩存行的前8個字節(jié)相關(guān)聯(lián)的讀屬性也被 類似地更新,盡管所述數(shù)據(jù)項(xiàng)僅占據(jù)第二高速緩存行的4個字節(jié)。實(shí)質(zhì)上,在該實(shí)施例中, 至少以數(shù)據(jù)項(xiàng)的粒度級別來提供對該數(shù)據(jù)項(xiàng)的監(jiān)控,并且可以以更大的粒度來提供對該數(shù) 據(jù)項(xiàng)的監(jiān)控,以保證監(jiān)控(即,有界監(jiān)控)完整數(shù)據(jù)項(xiàng)。換言之,這里,通過保證即使在由于 物理存儲的粒度而使得包括更多數(shù)據(jù)的情況下數(shù)據(jù)項(xiàng)也被監(jiān)控,屬性對該數(shù)據(jù)項(xiàng)的監(jiān)控進(jìn) 行限界,而不考慮物理存儲粒度限制或?qū)傩躁P(guān)聯(lián)。相反,如果屬性提供與高速緩存150相比 較更小的粒度,則基于屬性關(guān)聯(lián)對數(shù)據(jù)項(xiàng)的跟蹤可能比以高速緩存150的可訪問粒度進(jìn)行 的跟蹤更準(zhǔn)確。上面的示例假定屬性/監(jiān)控器與預(yù)定大小靜態(tài)關(guān)聯(lián),例如,監(jiān)控器用于16字節(jié)高 速緩存行的每8個字節(jié)。注意,這些關(guān)聯(lián)僅僅是說明性的并且可以有顯著改變,例如,包括 更小或更大的監(jiān)控器關(guān)聯(lián)粒度。然而,在另一實(shí)施例中,在進(jìn)行數(shù)據(jù)項(xiàng)的載入或存儲時,從屬性池動態(tài)指派屬性。為了進(jìn)行說明,在該環(huán)境下重新檢驗(yàn)上面的示例。這里,當(dāng)使用被監(jiān) 控的載入來載入20字節(jié)數(shù)據(jù)項(xiàng)時,讀屬性此時與從中載入該數(shù)據(jù)項(xiàng)的高速緩存150的20 個字節(jié)相關(guān)聯(lián)。這里,數(shù)據(jù)項(xiàng)的監(jiān)控真正地與物理存儲結(jié)構(gòu)的粒度去耦合。在兩種示例中, 數(shù)據(jù)均通過監(jiān)控器來限界,而不管基礎(chǔ)存儲結(jié)構(gòu)(即,高速緩存150)的粒度。然而,在第一 示例中,必須考慮監(jiān)控器與高速緩存150的部分關(guān)聯(lián)的靜態(tài)粒度,以保證數(shù)據(jù)通過正確的 監(jiān)控來被限界。然而,在第二示例中,監(jiān)控器以數(shù)據(jù)項(xiàng)的具體粒度被動態(tài)關(guān)聯(lián)。 在一個實(shí)施例中,在第一模式下的處理器100內(nèi)的監(jiān)控器用于監(jiān)控所有的存儲器 訪問。例如,當(dāng)正在執(zhí)行事務(wù)時,監(jiān)控所有的事務(wù)存儲器訪問。此外,在另一模式下,處理器 100能夠選擇性監(jiān)控存儲器訪問。存儲器訪問的選擇性監(jiān)控在下文中參照圖3來更詳細(xì)地 討論。在一個實(shí)施例中,用于監(jiān)控存儲器訪問操作的硬件監(jiān)控器被用來進(jìn)行沖突檢測, 例如,檢測使存儲器訪問無效的情況(其可能要求中止事務(wù))。不管如何實(shí)現(xiàn)硬件監(jiān)控器或 屬性的關(guān)聯(lián),如本文所更詳細(xì)討論的,監(jiān)控器的訪問狀態(tài)可以被沖突檢測邏輯、固件、軟件 或其組合用來檢測可能的存儲器訪問沖突。為了進(jìn)行說明,假定與高速緩存150中保存的 數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的讀硬件監(jiān)控器指示該數(shù)據(jù)項(xiàng)之前已經(jīng)被一事務(wù)載入,并且隨后,另一線程 作出的寫該數(shù)據(jù)項(xiàng)的請求被高速緩存150的高速緩存控制邏輯所接收?;谠搶懻埱蠛妥x 監(jiān)控器的當(dāng)前狀態(tài),即被事務(wù)性地載入,在一個實(shí)施例中與高速緩存控制邏輯一起被包括 或者耦合到高速緩存控制邏輯的沖突邏輯檢測可能的沖突。響應(yīng)于可能的沖突,可以用硬 件、軟件或其組合來進(jìn)行任意數(shù)量的操作。參照圖2更詳細(xì)討論的示例包括響應(yīng)于沖突而 設(shè)置狀態(tài)寄存器中的一位或者設(shè)置一標(biāo)志,并且響應(yīng)于設(shè)置所述位或所述標(biāo)志而將控制轉(zhuǎn) 移給處理機(jī)來處理可能的沖突。因此,如上面的示例中所推斷的,在一個實(shí)施例中,在屬性與諸如數(shù)據(jù)高速緩存 150這樣的高速緩沖存儲器相關(guān)聯(lián)的情況下,現(xiàn)有已知的一致性和通信/監(jiān)聽協(xié)議可以與 硬件監(jiān)控器/屬性相組合來用于檢測沖突。這里,基于該設(shè)計(jì),高速緩存一致性請求和監(jiān)控 器/屬性的狀態(tài)的不同組合導(dǎo)致可能的沖突,例如,上面的讀監(jiān)控器指示數(shù)據(jù)項(xiàng)的被監(jiān)控 的載入,而監(jiān)聽指示對該數(shù)據(jù)項(xiàng)的寫請求。反過來,寫監(jiān)控器指示對數(shù)據(jù)項(xiàng)的被監(jiān)控的寫操 作,而監(jiān)聽指示對該數(shù)據(jù)項(xiàng)的讀請求可以被認(rèn)為可能相沖突。在一個實(shí)施例中,為了檢測訪 問請求和屬性狀態(tài)的此類組合,監(jiān)聽邏輯被耦合到?jīng)_突檢測/報告邏輯,例如用于沖突檢 測/報告的監(jiān)控器和/或邏輯。然而,在一個實(shí)施例中,檢測沖突并不限于使用通常的一致性協(xié)議。例如,采用圖1 中說明的處理器100的架構(gòu)。這里,單獨(dú)的物理線程共享對數(shù)據(jù)高速緩存150和更高級高 速緩存110 二者的訪問。因此,如果監(jiān)控器與作為要在線程IOla和IOlb之間共享的共享 高速緩存的高速緩存150相關(guān)聯(lián),則由于缺少響應(yīng)于來自線程IOla和IOlb的訪問而產(chǎn)生 的與高速緩存150的互連請求,所以不能充分檢測線程IOla和IOlb之間可能的沖突。因此,在一個實(shí)施例中,基于每個處理部件來復(fù)制監(jiān)控器/屬性。在該示例中,可 以每線程地復(fù)制屬性,即,針對線程IOla和IOlb復(fù)制相同的屬性。注意,屬性復(fù)制可以包 括單個組的屬性與不同線程標(biāo)識符相關(guān)聯(lián),以指示哪個線程與該單個組的屬性的狀態(tài)相關(guān) 聯(lián)。相對地,復(fù)制可以包括多個單獨(dú)組的復(fù)制屬性,其中每一個與一個線程相關(guān)聯(lián)。例如, 針對數(shù)據(jù)項(xiàng)的一組屬性與線程IOla相關(guān)聯(lián),而針對該數(shù)據(jù)項(xiàng)的第二組屬性與線程IOlb相關(guān)聯(lián)。因此,檢測共享對高速緩存150的訪問的線程IOla和IOlb之間的沖突包括基于 每個處理部件(例如,每個線程)進(jìn)行訪問跟蹤。為了進(jìn)行說明,假定線程IOla設(shè)置與數(shù) 據(jù)項(xiàng)D相關(guān)聯(lián)的監(jiān)控器。這里,與線程IOla相關(guān)聯(lián)的復(fù)制屬性被設(shè)置為適當(dāng)?shù)谋O(jiān)控值。因 此,如果線程IOlb作出對數(shù)據(jù)項(xiàng)D的沖突請求,則檢測到?jīng)_突。在一個實(shí)施例中,耦合到控 制邏輯以檢測沖突的報告邏輯報告沖突以進(jìn)行適當(dāng)處理。例如,諸如邏輯“或”這樣的邏輯 運(yùn)算組合了不同的沖突事件,例如,由于外部原因(驅(qū)逐或外部監(jiān)聽)和由于共享高速緩存 線程訪問沖突造成的監(jiān)控的丟失。在一個實(shí)施例中,使用暫時或?qū)S写鎯韺?shí)現(xiàn)與高速緩存150中保存的數(shù)據(jù)項(xiàng)相 關(guān)聯(lián)的屬性。這里,屬性可以被保存在高速緩存150的任何位置,例如,高速緩存150的行 自身內(nèi)。例如,上面描述的HTM的一個示例包括本地更新型HTM。這里,事務(wù)修改的數(shù)據(jù)被 保存在當(dāng)前的存儲器位置,而之前數(shù)據(jù)被記錄/備份在例如更高級存儲器中。因此,在一個 實(shí)施例中,當(dāng)針對一數(shù)據(jù)項(xiàng)來訪問高速緩存150時,將屬性與該數(shù)據(jù)項(xiàng)一起暫時存儲在高 速緩存150中。這里,該數(shù)據(jù)項(xiàng)被保持在專有或暫時一致性狀態(tài),這允許高速緩存控制邏輯 保證支持事務(wù)語義。換言之,保持在暫時狀態(tài)下的數(shù)據(jù)項(xiàng)未被提供給其他線程。然而,如果從高速緩存150中驅(qū)逐該數(shù)據(jù)項(xiàng),則所專有保存的屬性可能丟失。實(shí)質(zhì) 上,這些屬性被系統(tǒng)創(chuàng)建來監(jiān)控數(shù)據(jù)項(xiàng),并且不被寫回更高級存儲器。在當(dāng)驅(qū)逐或其他事件 發(fā)生時屬性消失(即,丟失)的場景中,可能以類似于上述的檢測可能的訪問沖突的方式來 觸發(fā)可能的沖突,。一個版本的暫時存儲和專有狀態(tài),例如,被緩沖的存儲和被緩沖的狀態(tài), 在與本申請一起遞交的代理人卷號為P29132、標(biāo)題為“Extending the MESIprotocol to support locally buffered data” 的相關(guān)申請中有討論。如上面討論的示例所說明的,與高速緩存中的數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的硬件屬性可以被保 存在高速緩存外部、高速緩存邏輯內(nèi)、高速緩存的陣列內(nèi)、高速緩存的其他結(jié)構(gòu)內(nèi),或者甚 至?xí)簳r在高速緩存的數(shù)據(jù)部分內(nèi)。通常,在沒有通過執(zhí)行用戶指令來進(jìn)行指引操縱的情況 下,這些硬件屬性由硬件來維護(hù)。例如,軟件程序包括對數(shù)據(jù)項(xiàng)的事務(wù)寫操作。當(dāng)處理器遇 到事務(wù)寫操作并確定其要被監(jiān)控時,硬件適當(dāng)?shù)馗屡c該數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的寫屬性。例如,暫 時存儲被插入并執(zhí)行,以向高速緩存150更新該數(shù)據(jù)項(xiàng)和相關(guān)聯(lián)的寫屬性。作為另一示例, 屬性被附加在高速緩存150的一致性狀態(tài)位上,并響應(yīng)于事務(wù)寫操作,更新高速緩存150中 用于保存該數(shù)據(jù)項(xiàng)的行的一致性狀態(tài)。然而,在一個實(shí)施例中,除了硬件監(jiān)控器/屬性的硬件管理之外,指令也可以被硬 件識別來直接操縱屬性。例如,這些指令或操作是處理器100可識別的指令集架構(gòu)(ISA) 的一部分,用于對屬性執(zhí)行操作。例如,ISA包括操作碼,用于當(dāng)被處理器100的譯碼器檢 測到時相應(yīng)地修改所述屬性。可以使用的指令的示例包括設(shè)置指令,用于將與數(shù)據(jù)項(xiàng)相關(guān) 聯(lián)的屬性設(shè)置為一狀態(tài);重置指令,用于將與數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的屬性重置為默認(rèn)狀態(tài);測試 或讀指令,用于讀取屬性的狀態(tài);以及清除指令,用于清除用于一個事務(wù)的所有屬性或在高 速緩存內(nèi)的所有屬性。前述示例中的一個包括用于清除屬性的清除指令。在一個實(shí)施例中,批清除指令 被用來清除一批讀和寫監(jiān)控器。注意,批清除指令可以用于多個場景。第一,在事務(wù)提交或 中止時,可以清除/重置針對該事務(wù)的讀和寫監(jiān)控器。第二,處理器100從一個域到另一個域的轉(zhuǎn)變可以被配置來清除/重置讀和寫監(jiān)控器。英特爾的IA 32架構(gòu)中的域的示例包括讀取域、大實(shí)域(big real domain)和虛擬域。第三,在發(fā)生異常或中斷時,它可以用來清 除讀和寫監(jiān)控器。因此,當(dāng)遇到清除指令時,清除滿足特定條件的一個監(jiān)控器、一范圍內(nèi)的 監(jiān)控器、所有監(jiān)控器,或者高速緩存內(nèi)的所有監(jiān)控器。如上面開始參照圖1時所闡述的,處理器100的架構(gòu)僅僅是用于討論目的的說明 性的架構(gòu)。類似地,將屬性與數(shù)據(jù)項(xiàng)/元素進(jìn)行關(guān)聯(lián)的特定示例也是示例性的,因?yàn)榭梢允?用以不同粒度來關(guān)聯(lián)硬件監(jiān)控器/屬性與數(shù)據(jù)項(xiàng)的任何方法。參照圖2進(jìn)一步討論將屬性 與高速緩存中的數(shù)據(jù)項(xiàng)進(jìn)行關(guān)聯(lián)的示例。參照圖2,說明了將屬性與高速緩沖存儲器中的數(shù)據(jù)項(xiàng)進(jìn)行關(guān)聯(lián)的實(shí)施例。處理 器250包括任何類型的已知處理器,其具有任意數(shù)量的能夠進(jìn)行事務(wù)執(zhí)行的處理部件。如 上面所討論的,屬性可以與任何物理大小的物理存儲結(jié)構(gòu)靜態(tài)關(guān)聯(lián),或者被動態(tài)地指派給 數(shù)據(jù)項(xiàng)。圖2的實(shí)施例說明了分別與高速緩存205的靜態(tài)部分(即,部分210-225)相關(guān)聯(lián) 的屬性,即,屬性211. r-226. r和211. w-226. w。例如,部分210-225是高速緩存250的高速 緩存行。高速緩存250包括與處理器相關(guān)聯(lián)的任何高速緩存,例如,一級高速緩存或二級高 速緩存。如所示出的,讀屬性211. r與高速緩存行210相關(guān)聯(lián),并且寫屬性211. w與高速緩 存行210相關(guān)聯(lián)。在一個實(shí)施例中,陣列235包括具有屬性211. r和211. w的標(biāo)記陣列。在 另一實(shí)施例中,陣列235包括狀態(tài)陣列,例如一致性狀態(tài)陣列,屬性211. r和211. w被包括 在狀態(tài)位內(nèi),以實(shí)質(zhì)地創(chuàng)建高速緩存205的新的一致性狀態(tài)。使用一致性狀態(tài)的示例在下 文中參照圖4來更詳細(xì)地描述。在又一實(shí)施例中,陣列235包括高速緩存控制邏輯230中 的任何陣列(如圖中所示),或者包括在控制邏輯外部并且在處理器250內(nèi)的屬性的任何其 他結(jié)構(gòu)(未示出)。在一個實(shí)施例中,屬性211. r-226. r和211. w_226. w監(jiān)控對諸如數(shù)據(jù)元素201這 樣的數(shù)據(jù)項(xiàng)/元素的存儲器訪問,而不管存儲結(jié)構(gòu)的物理邊界,例如高速緩存205中的高速 緩存行的邊界。實(shí)際上,數(shù)據(jù)項(xiàng)可以不與高速緩存205的諸如高速緩存行這樣的邊界對齊。 這里,不管高速緩存205的物理邊界而對數(shù)據(jù)項(xiàng)進(jìn)行的監(jiān)控包括對未對齊數(shù)據(jù)項(xiàng)進(jìn)行限 界,其中基于監(jiān)控屬性與高速緩存205的部分的關(guān)聯(lián)來進(jìn)行監(jiān)控。這里,屬性以每個行為基 礎(chǔ)而被關(guān)聯(lián);因此,包含有被監(jiān)控的數(shù)據(jù)項(xiàng)的任何行都被進(jìn)行監(jiān)控,即使它們保存了其它數(shù) 據(jù)也是如此,以保證該數(shù)據(jù)項(xiàng)被正確監(jiān)控。上面討論了不同數(shù)據(jù)項(xiàng)的多個示例。在圖2中,數(shù)據(jù)項(xiàng)201被描繪為大小是I1Zi個 高速緩存行。作為說明性的示例,假定執(zhí)行事務(wù)載入操作,以從涉及數(shù)據(jù)元素201的存儲器 地址進(jìn)行載入,這使得將數(shù)據(jù)元素201載入高速緩存行210和215。處理器250通過模式或 一組條件來確定要監(jiān)控該事務(wù)載入。因此,控制邏輯230確定要對數(shù)據(jù)項(xiàng)201進(jìn)行限界,即,至少該數(shù)據(jù)項(xiàng)被監(jiān)控,并且 可能監(jiān)控比所需更多的數(shù)據(jù)以保證正確的沖突檢測。這里,控制邏輯230更新字段2111 和 216r,以指示從高速緩存行215和216進(jìn)行的被監(jiān)控的載入已經(jīng)發(fā)生。作為第一示例,將字 段211r和216r從非監(jiān)控邏輯值(例如,邏輯0)更新為監(jiān)控邏輯值(例如,邏輯1)。在陣 列235是一致性狀態(tài)陣列的實(shí)施例中,如下面所描述的,將字段211和216轉(zhuǎn)變到適當(dāng)?shù)囊?致性狀態(tài),例如,被監(jiān)控的讀共享一致性狀態(tài)。因此,例如,當(dāng)控制邏輯230中的監(jiān)聽邏輯檢測到對高速緩存行210或205的寫請求時,檢測到可能的沖突。盡管圖2主要關(guān)注于與高速緩存的數(shù)據(jù)部分205分離的屬性,但是如上面所提到 的,也可以將屬性保存在數(shù)據(jù)部分205內(nèi)。使用上述示例,響應(yīng)于被監(jiān)控的載入,不更新屬 性211i 和216r,而是將這些屬性專有地存儲在高速緩存行210、215或二者中。高速緩存 行210和215的狀態(tài)被轉(zhuǎn)變到緩沖或?qū)S袪顟B(tài)。因此,在有寫請求時,使用專有保存的屬性 信息檢測類似的沖突。然而,在進(jìn)行行210或215的驅(qū)逐時,該屬性信息可能消失,即丟失。 因此,可以觸發(fā)類似的沖突處理。還要注意,參照圖2進(jìn)行的討論針對每個高速緩存行僅包 括一組屬性。然而,如上面參照圖1的高速緩存150所闡述的,可以針對處理器250的每個 線程來復(fù)制屬性。例如,針對共享高速緩存205的每個線程來復(fù)制屬性。另外,可以提供數(shù) 量不同的讀和寫屬性,而不是所說明那樣提供數(shù)量相同的讀和寫屬性。在一個實(shí)施例中,可以包括在高速緩存控制邏輯230中或者與其相關(guān)聯(lián)的沖突邏 輯用于檢測與屬性相關(guān)聯(lián)的沖突。基于設(shè)計(jì)實(shí)現(xiàn),屬性狀態(tài)、請求、通信協(xié)議或一致性協(xié)議 的任何組合可以用來確定沖突的存在。作為非常簡化的基本示例,對于被監(jiān)控的讀操作來 說,寫操作是可能的沖突,而對于被監(jiān)控的寫操作來說,讀操作或?qū)懖僮魇强赡艿臎_突。在一個實(shí)施例中,一旦檢測到?jīng)_突,報告邏輯就報告該沖突。該沖突可以通過硬 件、固件、軟件或其組合來進(jìn)行處理。在一個實(shí)施例中,報告邏輯包括存儲部件,例如,寄存 器245。該存儲部件可以包括處理器250內(nèi)用于保存信息的任何結(jié)構(gòu),例如,存儲器、通用寄 存器或模型專用寄存器(MSR)。作為第一示例,寄存器245包括狀態(tài)寄存器。響應(yīng)于檢測到 沖突,可以在寄存器245中將一值設(shè)置為沖突值,以指示沖突已經(jīng)發(fā)生。這里,軟件可以輪 詢寄存器245來查看該值是否被設(shè)置為沖突值。作為另一示例,處理器250包括標(biāo)志寄存 器,以包含諸如溢出標(biāo)志這樣的標(biāo)志,其要被諸如跳轉(zhuǎn)指令這樣的指令來測試。為了進(jìn)行說 明,載入指令之后的條件跳轉(zhuǎn)指令能夠用來測試事務(wù)的讀設(shè)置的一致性。如上面所提及的,由于驅(qū)逐或其他事件造成的屬性數(shù)據(jù)的丟失也被認(rèn)為是沖 突。這里,可以以類似的方式將寄存器245用來指示屬性數(shù)據(jù)的丟失。在一個實(shí)施例中, 響應(yīng)于屬性數(shù)據(jù)的丟失,報告邏輯將處理器250的操作重新指引到軟件處理機(jī),以適應(yīng) 用于監(jiān)控屬性的有限存儲容量。響應(yīng)于溢出事件而對事務(wù)存儲器進(jìn)行虛擬化的示例在 共同未決的序列號為 11/479,902、標(biāo)題為 “Global Overflow Method for Virtualized TransactionalMemory"的申請中有討論。另外,使用諸如寄存器245這樣的存儲部件來 寄存用戶處理機(jī)以處理諸如沖突這樣的事務(wù)事件的示例,在Gad Sheaffer等于2008年 12月30日與本申請一起遞交的序列號為12/346,518并且代理人卷號為P29129、標(biāo)題為 “Registering a User-Handler in Hardware forTransactional Memory Event Handling,, 的申請中有討論。在一個實(shí)施例中,寄存器245要保存一值來指示處理器250的工作模式,例如,非 監(jiān)控模式、非選擇性監(jiān)控模式和選擇性監(jiān)控模式。在選擇性監(jiān)控模式中,寄存器245或其他 寄存器還可以定義用于監(jiān)控訪問的選擇準(zhǔn)則。注意,關(guān)于將寄存器245用作狀態(tài)寄存器、用 于寄存用戶處理機(jī)的寄存器、用于定義工作模式的寄存器以及用于定義選擇準(zhǔn)則的寄存器 的討論,可以指單個寄存器或寄存器的組合,用于實(shí)現(xiàn)前述對存儲部件245的可能使用的 任何組合。接下來參照圖3,說明了以不同模式進(jìn)行監(jiān)控的方法的流程圖的實(shí)施例。注意,圖3和5的流程圖基本上以串行方式來說明。然而,這些圖所說明的方法并不限于此,它們可以以任何順序進(jìn)行,并且可以至少部分被并行地執(zhí)行。在流程305中,確定是否要監(jiān)控涉及數(shù)據(jù)元素的存儲器訪問。在一個實(shí)施例中,提供了多種監(jiān)控的模式,例如,不監(jiān)控、非選擇性監(jiān)控和選擇性監(jiān)控。例如,軟件能夠設(shè)置監(jiān)控 模式。例如,用戶指令能夠?qū)ぶ返街T如圖2的寄存器245這樣的用于指示監(jiān)控模式的寄存 器。這里,軟件確定要監(jiān)控哪些讀和寫。例如,可以通過軟件代碼(例如,靜態(tài)或運(yùn)行時期 間的編譯器、應(yīng)用程序代碼、操作系統(tǒng)代碼、管理程序代碼或事務(wù)運(yùn)行時代碼)來作出該確 定。在一個實(shí)施例中,在選擇性監(jiān)控模式期間,監(jiān)控除落入特定準(zhǔn)則內(nèi)的讀和寫之外 的讀和寫,所述特定準(zhǔn)則可以用任何方式來定義。對存儲器地址的存儲器訪問可以不被監(jiān) 控的選擇準(zhǔn)則的非窮舉示例性列表包括對以下項(xiàng)的存儲器訪問落入或未在范圍內(nèi)或者匹 配掩碼(mask)的虛擬地址;落入或未在范圍內(nèi)或者匹配掩碼的物理地址;屬于特定存儲器 類型的地址;輸入/輸出(I/O)空間內(nèi)的地址;在一個保護(hù)域中執(zhí)行的代表另一保護(hù)域中 的操作的地址;特定操作碼或前綴以及諸如浮點(diǎn)數(shù)或向量操作這樣的特定數(shù)據(jù)類型標(biāo)識的 指令所訪問的地址。另外,可以響應(yīng)于特定識別的指令來設(shè)置監(jiān)控屬性,例如,僅用于用戶 標(biāo)識出的并且處理器250的硬件可識別的顯式事務(wù)載入和顯式事務(wù)存儲操作。一旦在流程350中確定是否要應(yīng)用監(jiān)控,則或者在流程315中通過更新與數(shù)據(jù)元 素相關(guān)聯(lián)的監(jiān)控器來應(yīng)用監(jiān)控,或者在流程310中不執(zhí)行監(jiān)控,而正常地執(zhí)行訪問。如本文 所討論的,更新諸如屬性這樣的與數(shù)據(jù)元素相關(guān)聯(lián)的監(jiān)控器包括適當(dāng)?shù)匦薷挠糜诒O(jiān)控訪問 的屬性的任何方法。下面討論基于被監(jiān)控和未被監(jiān)控的讀/寫來將監(jiān)控器更新為不同的一 致性狀態(tài)的示例。接下來參照圖4,示出了包括被監(jiān)控的一致性狀態(tài)的一致性狀態(tài)之間的轉(zhuǎn)變的方 法的狀態(tài)轉(zhuǎn)變圖的實(shí)施例。注意,為了簡化圖,圖4中的狀態(tài)轉(zhuǎn)變圖是部分狀態(tài)圖,未示出 諸如監(jiān)控屬性的清除這樣的一些狀態(tài)轉(zhuǎn)變。此外,狀態(tài)和狀態(tài)之間的轉(zhuǎn)變僅僅是說明性的。 例如,狀態(tài)之間可以發(fā)生多階段狀態(tài)轉(zhuǎn)變,而不是圖4中所說明的一些直接轉(zhuǎn)變。所描繪的高速緩存一致性狀態(tài)的列表包括(1)修改(M 420)狀態(tài),即,地址被進(jìn) 行寫操作并且沒有與其相關(guān)聯(lián)的屬性;(2)修改讀(MR 430)狀態(tài),即,地址被進(jìn)行讀操作并 且具有與其相關(guān)聯(lián)的讀屬性(例如,當(dāng)之前對該地址進(jìn)行讀操作,然后對地址進(jìn)行事務(wù)寫 操作時);(3)修改寫(MW425)狀態(tài),即,地址被進(jìn)行寫操作,并且具有與其相關(guān)聯(lián)的寫屬性; (4)修改讀寫(MRW 435)狀態(tài),即,地址被進(jìn)行讀操作,然后被進(jìn)行寫操作,并且具有與其相 關(guān)聯(lián)的讀屬性和寫屬性二者;(5)獨(dú)占(E 440)狀態(tài),即,地址被進(jìn)行讀操作,并且沒有與其 相關(guān)聯(lián)的屬性;(6)獨(dú)占寫(ER 445)狀態(tài),即,地址被進(jìn)行讀操作,并且具有與其相關(guān)聯(lián)的 讀屬性;(7)共享(S 410),S卩,地址被進(jìn)行讀操作,并且沒有與其相關(guān)聯(lián)的屬性;(8)共享讀 (SR 415)狀態(tài),即,地址被進(jìn)行讀操作,并且具有與其相關(guān)聯(lián)的讀屬性。在一個實(shí)施例中,這些狀態(tài)可以根據(jù)圖2的示例來實(shí)現(xiàn),其中,屬性被包括在高速 緩存的狀態(tài)位內(nèi),由此創(chuàng)建這些新的被監(jiān)控的一致性狀態(tài)。例如,當(dāng)行被保持在共享狀態(tài) 410并且發(fā)生了涉及包括所述行的數(shù)據(jù)項(xiàng)的存儲器地址的被監(jiān)控的讀操作時,所述行的一 致性狀態(tài)被轉(zhuǎn)變到SR 415狀態(tài)。因此,在一個實(shí)施例中,由于一致性狀態(tài)為SR 415,所以對 所述行進(jìn)行寫操作的外部請求導(dǎo)致可能的沖突??赡艽嬖谄渌赡艿臎_突,這些沖突基于一致性狀態(tài)與其他存儲器訪問請求類型的組合,例如,當(dāng)包括數(shù)據(jù)項(xiàng)的至少一部分的高速 緩存行被保持在MW —致性狀態(tài)425時,對該數(shù)據(jù)項(xiàng)的外部讀請求。轉(zhuǎn)至圖5,說明了執(zhí)行存儲器訪問的流程圖的實(shí)施例。在流程505中,遇到涉及與 數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的存儲器地址的存儲器訪問。遇到存儲器訪問包括在執(zhí)行的任何階段檢測存 儲器訪問的任何方法。遇到操作的不同階段的示例包括譯碼器識別用于存儲器訪問的操 作碼;從指令高速緩存中獲取存儲器訪問操作;調(diào)度存儲器訪問以在諸如載入/存儲單元 這樣的執(zhí)行單元上執(zhí)行;以及引退存儲器訪問。在流程510中,確定處理器是否正工作在選擇性工作模式下。如上面所闡述的,在 一個實(shí)施例中,軟件設(shè)置處理器的模式。這里,當(dāng)執(zhí)行時,軟件更新諸如寄存器這樣的存儲 部件,以指示工作模式。例如,當(dāng)事務(wù)的執(zhí)行開始時 ,軟件將所述模式設(shè)置為非選擇性的, 艮口,監(jiān)控所有存儲器訪問。當(dāng)該事務(wù)結(jié)束時,所述模式翻轉(zhuǎn)到選擇性監(jiān)控或不監(jiān)控。然而, 在另一實(shí)施例中,由處理器中的硬件確定工作模式。如果確定模式為選擇性的,則在流程515中確定是否要監(jiān)控特定存儲器訪問。在 該確定中可以應(yīng)用任意數(shù)量的選擇準(zhǔn)則,例如,所涉及的存儲器地址是否落入規(guī)定的地址 范圍內(nèi),或者數(shù)據(jù)項(xiàng)是否具有特定類型。另外,所述準(zhǔn)則可以簡單地包括存儲器訪問是否被 軟件標(biāo)識為要被監(jiān)控,例如,被標(biāo)識為顯式的事務(wù)存儲器訪問。如果不監(jiān)控存儲器訪問,則 在流程525中正常執(zhí)行存儲器訪問。然而,如果要監(jiān)控存儲器訪問,則在流程520中,相應(yīng) 地更新與數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的訪問監(jiān)控器。這里,可以在流程520中更新監(jiān)控器之前、期間或之 后,在流程525中執(zhí)行訪問。因此,如可以從上文所看到的,諸如屬性這樣的監(jiān)控器提供了對存儲器訪問的至 少數(shù)據(jù)項(xiàng)/元素粒度的監(jiān)控,而不受物理存儲結(jié)構(gòu)粒度的限制。因此,硬件屬性在硬件中提 供了對存儲器地址和相關(guān)聯(lián)的數(shù)據(jù)項(xiàng)的訪問的監(jiān)控,同時維持了以軟件的數(shù)據(jù)結(jié)構(gòu)級別來 監(jiān)控并檢測沖突的能力。此外,通過支持在屬性信息消失時溢出到軟件,屬性還可以用作大 事務(wù)的過濾器。另外,在一個實(shí)施例中,包括用戶機(jī)構(gòu)來允許對屬性的訪問,以對它們執(zhí)行 直接操作。在這里使用的模塊是指任何硬件、軟件、固件或其組合。通常被示出為分離的模塊 邊界一般是變化的并且有可能重疊。例如,第一模塊和第二模塊可以共享硬件、軟件、固件 或其組合,同時可以保留一些獨(dú)立的硬件、軟件或固件。在一個實(shí)施例中,術(shù)語邏輯的使用 包括硬件,例如,晶體管、寄存器或者其它硬件,例如可編程邏輯器件。然而,在另一實(shí)施例 中,邏輯也可以包括與硬件集成的軟件或代碼,例如固件或微碼。在這里使用的值包括數(shù)字、狀態(tài)、邏輯狀態(tài)或二值邏輯狀態(tài)的任何已知表示。通 常,對邏輯電平或者邏輯值的使用也被稱為1或0,這簡單地表示二值邏輯狀態(tài)。例如,1指 代高邏輯電平而0指代低邏輯電平。在一個實(shí)施例中,存儲單元,例如晶體管或閃存單元, 可以具有保存單個邏輯值或者多個邏輯值的能力。然而,已經(jīng)使用了計(jì)算機(jī)系統(tǒng)中值的其 它表示。例如,十進(jìn)制數(shù)字10也可以被表示為二進(jìn)制值1010,以及十六進(jìn)制字母A。因此, 值包括能夠被保存在計(jì)算機(jī)系統(tǒng)中的信息的任何表示。此外,狀態(tài)可以由值或者值的部分來表示。例如,第一值,例如邏輯1,可以表示默 認(rèn)或初始狀態(tài),而第二值,例如邏輯0,可以表示非默認(rèn)狀態(tài)。另外,在一個實(shí)施例中,術(shù)語重 置和設(shè)置分別指默認(rèn)的和更新的值或狀態(tài)。例如,默認(rèn)值可能包括高邏輯值,即重置,而更新的值可能包括低邏輯值,即設(shè)置。注意,值的任何組合可以被用來表示任意數(shù)量的狀態(tài)。上面闡述的方法、硬件、軟件、固件或代碼集的實(shí)施例可以通過存儲在機(jī)器可訪問或機(jī)器可讀介質(zhì)上的可由處理部件執(zhí)行的指令或代碼來實(shí)現(xiàn)。機(jī)器可訪問/可讀介質(zhì)包括 提供(即存儲和/或傳送)機(jī)器(例如,計(jì)算機(jī)或電子系統(tǒng))可讀形式的信息的任何機(jī)制。 例如,機(jī)器可訪問介質(zhì)包括隨機(jī)存取存儲器(RAM),如靜態(tài)RAM(SRAM)或動態(tài)RAM(DRAM); ROM ;磁或光存儲介質(zhì);閃存器件;電存儲器件、光存儲器件、聲存儲器件或其它形式的傳播 信號(例如,載波、紅外信號、數(shù)字信號)存儲器件等等。例如,機(jī)器可以通過從能夠保存要 在傳播信號上傳送的信息的介質(zhì)接收所述傳播信號(例如,載波)來訪問存儲器件。在說明書中通篇提到“一個實(shí)施例”或者“一實(shí)施例”意指結(jié)合該實(shí)施例描述的特 定特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一個實(shí)施例中。因此,短語“在一個實(shí)施例中” 或“在一實(shí)施例中”在說明書中各處出現(xiàn)并非必須全都指同一實(shí)施例。此外,所述特定的特 征、結(jié)構(gòu)或特性可以在一個或更多實(shí)施例中以任何適當(dāng)?shù)姆绞浇M合。在前述說明書中,已經(jīng)參照特定的示例性實(shí)施例給出了詳細(xì)的描述。然而顯而易 見的是,可以對本發(fā)明作出各種修改和改變而不偏離如所附權(quán)利要求書中所給出的本發(fā)明 的寬泛精神和范圍。因此,說明書和附圖是要被視為說明性的而非限制性的。此外,前面對 實(shí)施例和其它示例性語言的使用并非必須指同一實(shí)施例或同一實(shí)例,而是可以指不同的或 相異的實(shí)施例,以及可能地指同一實(shí)施例。
權(quán)利要求
一種裝置,包括執(zhí)行邏輯,用于執(zhí)行涉及與數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的存儲器地址的事務(wù)存儲器訪問操作;存儲器,其耦合到處理邏輯,用于響應(yīng)于所述執(zhí)行邏輯執(zhí)行所述事務(wù)存儲器訪問操作而保存所述數(shù)據(jù)項(xiàng);以及硬件監(jiān)控器,其與所述存儲器相關(guān)聯(lián),用于在不管所述存儲器的粒度的情況下響應(yīng)于所述執(zhí)行邏輯執(zhí)行所述事務(wù)存儲器訪問操作,而執(zhí)行所述數(shù)據(jù)項(xiàng)的有界訪問監(jiān)控。
2.根據(jù)權(quán)利要求1所述的裝置,其中,所述硬件監(jiān)控器是響應(yīng)于所述執(zhí)行邏輯執(zhí)行用 戶級指令而可讀并且可修改的。
3.根據(jù)權(quán)利要求1所述的裝置,其中,所述存儲器包括數(shù)據(jù)高速緩存,并且其中,與所 述數(shù)據(jù)高速緩存相關(guān)聯(lián)的硬件監(jiān)控器包括與所述數(shù)據(jù)高速緩存的多個高速緩存行相對應(yīng) 的多個讀監(jiān)控器和多個寫監(jiān)控器。
4.根據(jù)權(quán)利要求3所述的裝置,其中,所述數(shù)據(jù)高速緩存的所述多個高速緩存行中的 數(shù)個高速緩存行保存與所述多個高速緩存行的邊界未對齊的數(shù)據(jù)項(xiàng)。
5.根據(jù)權(quán)利要求4所述的裝置,其中,所述事務(wù)存儲器訪問操作包括事務(wù)載入,并且其 中,與所述數(shù)據(jù)高速緩存相關(guān)聯(lián)、用于在不管所述存儲器的粒度的情況下響應(yīng)于所述執(zhí)行 邏輯執(zhí)行所述事務(wù)載入而執(zhí)行所述數(shù)據(jù)項(xiàng)的有界訪問監(jiān)控的硬件監(jiān)控器包括所述多個讀 監(jiān)控器中的數(shù)個讀監(jiān)控器,所述數(shù)個讀監(jiān)控器對應(yīng)于所述多個高速緩存行中保存所述數(shù)據(jù) 項(xiàng)的至少一部分的數(shù)個高速緩存行,所述數(shù)個讀監(jiān)控器響應(yīng)于所述執(zhí)行邏輯執(zhí)行所述事務(wù) 載入而被更新到監(jiān)控讀狀態(tài)。
6.根據(jù)權(quán)利要求5所述的裝置,其中,所述事務(wù)存儲器訪問操作包括事務(wù)存儲,并且其 中,與所述數(shù)據(jù)高速緩存相關(guān)聯(lián)、用于在不管所述存儲器的粒度的情況下響應(yīng)于所述執(zhí)行 邏輯執(zhí)行所述事務(wù)存儲而執(zhí)行所述數(shù)據(jù)項(xiàng)的有界訪問監(jiān)控的硬件監(jiān)控器包括所述多個寫 監(jiān)控器中的數(shù)個寫監(jiān)控器,所述數(shù)個寫監(jiān)控器對應(yīng)于所述多個高速緩存行中保存所述數(shù)據(jù) 項(xiàng)的至少一部分的數(shù)個高速緩存行,所述數(shù)個寫監(jiān)控器響應(yīng)于所述執(zhí)行邏輯執(zhí)行事務(wù)寫操 作而被更新到監(jiān)控寫狀態(tài)。
7.根據(jù)權(quán)利要求6所述的裝置,其中,當(dāng)所述數(shù)個讀監(jiān)控器中對應(yīng)于所述數(shù)個高速緩 存行中的一高速緩存行的一讀監(jiān)控器被更新到所述監(jiān)控讀狀態(tài)時,響應(yīng)于控制邏輯檢測到 對所述一高速緩存行的外部寫請求,所述控制邏輯檢測到事務(wù)沖突。
8.根據(jù)權(quán)利要求6所述的裝置,其中,當(dāng)所述數(shù)個寫監(jiān)控器中對應(yīng)于所述數(shù)個高速緩 存行中的一高速緩存行的一寫監(jiān)控器被更新到所述監(jiān)控寫狀態(tài)時,響應(yīng)于控制邏輯檢測到 對所述一高速緩存行的外部讀請求,所述控制邏輯檢測到事務(wù)沖突。
9.根據(jù)權(quán)利要求6所述的裝置,其中,響應(yīng)于所述執(zhí)行邏輯執(zhí)行用戶級清除操作,所述 數(shù)個讀監(jiān)控器和所述數(shù)個寫監(jiān)控器要被重置為非監(jiān)控狀態(tài)。
10.根據(jù)權(quán)利要求6所述的裝置,其中,所述數(shù)個包括大于1的整數(shù)個。
11.根據(jù)權(quán)利要求1所述的裝置,其中,所述硬件監(jiān)控器基于所述數(shù)據(jù)項(xiàng)的大小來與所 述存儲器動態(tài)相關(guān)聯(lián)。
12.根據(jù)權(quán)利要求11所述的裝置,其中,所述硬件監(jiān)控器基于所述數(shù)據(jù)項(xiàng)的大小來與 所述存儲器動態(tài)相關(guān)聯(lián)包括邏輯響應(yīng)于所述數(shù)據(jù)項(xiàng)的大小大于所述存儲器的一行并且所 述執(zhí)行邏輯執(zhí)行所述事務(wù)存儲器訪問操作,動態(tài)地從讀監(jiān)控器和寫監(jiān)控器的池向所述存儲器的多個行指派讀監(jiān)控器和寫監(jiān)控器,所述多個行保存所述數(shù)據(jù)項(xiàng)的至少一部分。
13.根據(jù)權(quán)利要求12所述的裝置,其中,與所述存儲器相關(guān)聯(lián)、用于在不管所述存儲器 的粒度的情況下響應(yīng)于所述執(zhí)行邏輯執(zhí)行所述事務(wù)存儲器訪問操作而執(zhí)行所述數(shù)據(jù)項(xiàng)的 有界訪問監(jiān)控的硬件監(jiān)控器包括指派給所述多個行、響應(yīng)于所述執(zhí)行邏輯執(zhí)行事務(wù)載入 操作而被設(shè)置為監(jiān)控讀狀態(tài)的讀監(jiān)控器,和指派給所述多個行、響應(yīng)于所述執(zhí)行邏輯執(zhí)行 事務(wù)存儲操作而被設(shè)置為監(jiān)控寫狀態(tài)的寫監(jiān)控器。
14.一種處理器,包括用戶可訪問寄存器,其保存用于指示所述處理器的非選擇性工作模式的非選擇性值, 和用于指示所述處理器的選擇性工作模式的選擇性值;控制邏輯,其耦合到所述用戶可訪問寄存器,用于響應(yīng)于所述用戶可訪問寄存器保存 有所述選擇性值,而基于選擇準(zhǔn)則來確定是否要監(jiān)控存儲器訪問操作;以及硬件屬性,用于響應(yīng)于所述用戶可訪問寄存器保存有所述非選擇性值或者所述控制邏 輯基于所述選擇準(zhǔn)則確定要監(jiān)控所述存儲器訪問操作,而跟蹤對存儲器進(jìn)行的所述存儲器 訪問操作。
15.根據(jù)權(quán)利要求14所述的裝置,其中,所述硬件屬性與高速緩沖存儲器相關(guān)聯(lián),所述 高速緩沖存儲器保存與所述存儲器訪問操作涉及的存儲器地址相關(guān)聯(lián)的數(shù)據(jù)元素,并且其 中,所述硬件屬性跟蹤對存儲器進(jìn)行的所述存儲器訪問操作包括響應(yīng)于所述處理器執(zhí)行 所述存儲器訪問操作,將所述硬件屬性更新為已訪問狀態(tài),來指示所述數(shù)據(jù)元素已經(jīng)被訪 問。
16.根據(jù)權(quán)利要求14所述的裝置,其中,所述非選擇性值包括第一邏輯值,而所述選擇 性值包括第二邏輯值。
17.根據(jù)權(quán)利要求14所述的裝置,其中,所述選擇準(zhǔn)則包括譯碼邏輯可識別的、用來指 示操作要被監(jiān)控的操作碼,并且其中,所述控制邏輯基于所述操作碼來確定是否要監(jiān)控存 儲器訪問操作包括所述譯碼邏輯檢測到所述操作碼與所述存儲器訪問操作相關(guān)聯(lián)。
18.根據(jù)權(quán)利要求14所述的裝置,其中,所述選擇準(zhǔn)則包括從以下項(xiàng)組成的組中選擇 的、由用戶級軟件在第二用戶可訪問寄存器中規(guī)定的準(zhǔn)則一范圍內(nèi)的虛擬地址、一范圍內(nèi) 的物理地址、存儲器類型、輸入/輸出(I/O)地址空間、保護(hù)域地址空間、操作碼、前綴,以及 數(shù)據(jù)類型。
19.根據(jù)權(quán)利要求18所述的裝置,其中,所述控制邏輯基于選擇準(zhǔn)則來確定是否要監(jiān) 控存儲器訪問操作包括將與所述存儲器訪問操作相關(guān)聯(lián)的準(zhǔn)則與所述選擇準(zhǔn)則進(jìn)行比 較,并基于所述準(zhǔn)則與所述選擇準(zhǔn)則的比較來確定要監(jiān)控所述存儲器訪問操作。
20.根據(jù)權(quán)利要求18所述的裝置,其中,所述選擇準(zhǔn)則是由用戶級軟件在第二用戶可 訪問寄存器中規(guī)定的。
21.一種裝置,包括遇到存儲器訪問操作的邏輯,所述存儲器訪問操作涉及與要被監(jiān)控的數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的 存儲器地址;包括多個行的高速緩沖存儲器的數(shù)據(jù)陣列,其中,響應(yīng)于所述邏輯遇到所述存儲器訪 問操作,所述多個行中的數(shù)個行保存所述數(shù)據(jù)項(xiàng);以及所述高速緩沖存儲器的一致性狀態(tài)陣列,其包括對應(yīng)于所述多個行中的每一個的狀態(tài)條目,其中,響應(yīng)于第一數(shù)個行保存有所述數(shù)據(jù)項(xiàng),對應(yīng)于保存有所述數(shù)據(jù)項(xiàng)的數(shù)個行的狀 態(tài)條目中的每一個被更新為表示被監(jiān)控的一致性狀態(tài)。
22.根據(jù)權(quán)利要求21所述的裝置,其中,所述被監(jiān)控的一致性狀態(tài)包括從以下項(xiàng)組成 的組中選擇的一致性狀態(tài)修改讀(MR)狀態(tài)、修改寫(MW)狀態(tài)、修改讀寫(MRW)狀態(tài)、獨(dú)占 讀(ER)狀態(tài),以及共享寫(SR)狀態(tài)。
23.根據(jù)權(quán)利要求22所述的裝置,其中,與不是所述數(shù)個行之一的行相關(guān)聯(lián)的狀態(tài)條 目表示非監(jiān)控狀態(tài),并且其中,所述非監(jiān)控狀態(tài)包括修改獨(dú)占共享無效(MESI)狀態(tài)。
24.根據(jù)權(quán)利要求21所述的裝置,響應(yīng)于接收到與所述被監(jiān)控的一致性狀態(tài)沖突的外 部訪問請求,與所述高速緩沖存儲器相關(guān)聯(lián)的控制邏輯檢測到?jīng)_突。
25.根據(jù)權(quán)利要求24所述的裝置,其中,與所述被監(jiān)控的一致性狀態(tài)沖突的外部訪問 請求包括所述外部訪問請求包括外部寫請求,而所述被監(jiān)控的一致性狀態(tài)包括修改獨(dú)占 共享無效(MESI)狀態(tài)的讀版本。
26.根據(jù)權(quán)利要求24所述的裝置,還包括狀態(tài)寄存器,響應(yīng)于所述控制邏輯檢測到所 述沖突,所述狀態(tài)寄存器被所述控制邏輯更新為沖突值。
27.根據(jù)權(quán)利要求21所述的裝置,其中,涉及與要被監(jiān)控的數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的存儲器地 址的存儲器訪問操作在用戶級軟件中被標(biāo)識為要被監(jiān)控的存儲器訪問操作。
28.根據(jù)權(quán)利要求27所述的裝置,其中,遇到所述存儲器訪問操作的邏輯包括譯碼器 邏輯。
29.根據(jù)權(quán)利要求21所述的裝置,其中,所述數(shù)個行包括數(shù)目多于一個的行。
30.一種系統(tǒng),包括處理器,其包括高速緩沖存儲器,其保存要被所述處理器執(zhí)行的事務(wù)存儲器訪問操作涉及的數(shù)據(jù)項(xiàng);硬件屬性,其與所述高速緩沖存儲器相關(guān)聯(lián),用于響應(yīng)于所述處理器執(zhí)行所述存儲器 訪問操作,以與所述高速緩沖存儲器的行未對齊的所述數(shù)據(jù)項(xiàng)的粒度來表示所述數(shù)據(jù)項(xiàng)的 訪問狀態(tài),其中,所述訪問狀態(tài)與所述事務(wù)存儲器訪問操作的類型相關(guān)聯(lián);以及系統(tǒng)存儲器,其被耦合到所述處理器,用于保存所述數(shù)據(jù)項(xiàng)的非緩存的拷貝。
31.根據(jù)權(quán)利要求30所述的系統(tǒng),其中,與所述事務(wù)存儲器訪問操作的類型相關(guān)聯(lián)的 訪問狀態(tài)包括響應(yīng)于所述事務(wù)存儲器訪問的類型為載入類型的事務(wù)讀狀態(tài),和響應(yīng)于所 述事務(wù)存儲器訪問的類型為存儲類型的事務(wù)寫狀態(tài)。
32.根據(jù)權(quán)利要求30所述的系統(tǒng),其中,與所述高速緩沖存儲器相關(guān)聯(lián)的、用于表示訪 問狀態(tài)的硬件屬性是從以下項(xiàng)組成的組中選擇的位向量、編碼值和狀態(tài)值。
33.根據(jù)權(quán)利要求30所述的系統(tǒng),其中,所述硬件屬性包括與第一線程相關(guān)聯(lián)的、用于 響應(yīng)于所述處理器的所述第一線程執(zhí)行所述存儲器訪問操作而以與所述高速緩沖存儲器 的行未對齊的所述數(shù)據(jù)項(xiàng)的粒度來表示所述數(shù)據(jù)項(xiàng)的針對所述第一線程的訪問狀態(tài)的硬 件屬性,并且其中,所述硬件屬性被復(fù)制,以與共享對所述高速緩沖存儲器的訪問的第二線 程相關(guān)聯(lián),用于響應(yīng)于所述處理器的所述第一線程執(zhí)行涉及所述數(shù)據(jù)項(xiàng)的第二存儲器訪問 操作而以與所述高速緩沖存儲器的行未對齊的所述數(shù)據(jù)項(xiàng)的粒度來表示所述數(shù)據(jù)項(xiàng)的針 對所述第二線程的第二訪問狀態(tài)。
34.一種方法,包括確定是否要監(jiān)控涉及數(shù)據(jù)項(xiàng)的存儲器訪問操作;在高速緩存的數(shù)個行中緩存所述數(shù)據(jù)項(xiàng);以及響應(yīng)于確定要監(jiān)控所述存儲器訪問操作,而進(jìn)行以下操作確定與所述高速緩存相關(guān)聯(lián)的硬件屬性,以對所述數(shù)據(jù)項(xiàng)進(jìn)行限界;以及更新所述硬件屬性,以表示與所述存儲器訪問操作的類型相關(guān)聯(lián)的訪問狀態(tài)。
35.根據(jù)權(quán)利要求34所述的方法,其中,確定是否要監(jiān)控涉及數(shù)據(jù)項(xiàng)的存儲器訪問操 作是基于執(zhí)行所述存儲器訪問操作的處理器的工作模式。
36.根據(jù)權(quán)利要求34所述的方法,其中,確定是否要監(jiān)控涉及數(shù)據(jù)項(xiàng)的存儲器訪問操 作是基于用戶級軟件將所述存儲器訪問操作標(biāo)識為要被監(jiān)控的操作。
37.根據(jù)權(quán)利要求34所述的方法,其中,確定與所述高速緩存相關(guān)聯(lián)的硬件屬性以對 所述數(shù)據(jù)項(xiàng)進(jìn)行限界包括動態(tài)地指派與未和所述數(shù)個行對齊的所述數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的硬件 屬性。
38.根據(jù)權(quán)利要求34所述的方法,其中,確定與所述高速緩存相關(guān)聯(lián)的硬件屬性以對 所述數(shù)據(jù)項(xiàng)進(jìn)行限界包括確定一致性狀態(tài)條目中與所述數(shù)個行相關(guān)聯(lián)的硬件屬性位,并 且其中,更新所述硬件屬性以表示與所述存儲器訪問操作相關(guān)聯(lián)的訪問狀態(tài)包括更新一 致性狀態(tài)條目中與數(shù)個行相關(guān)聯(lián)的硬件屬性,以表示與所述存儲器訪問操作的類型相關(guān)聯(lián) 的被監(jiān)控的一致性狀態(tài)。
39.根據(jù)權(quán)利要求34所述的方法,其中,與所述存儲器訪問操作的類型相關(guān)聯(lián)的訪問 狀態(tài)包括響應(yīng)于所述存儲器訪問操作的類型包括讀類型的監(jiān)控讀狀態(tài),和響應(yīng)于所述存 儲器訪問操作的類型包括寫類型的監(jiān)控寫狀態(tài)。
40.根據(jù)權(quán)利要求34所述的方法,還包括響應(yīng)于所述存儲器訪問操作的執(zhí)行之后的外部訪問請求,基于所述外部訪問的類型和 與所述存儲器訪問操作的類型相關(guān)聯(lián)的訪問狀態(tài)來檢測沖突;響應(yīng)于檢測到所述沖突,使用所述處理器中的狀態(tài)寄存器來向軟件報告所述沖突;以及響應(yīng)于使用所述處理器中的狀態(tài)寄存器向軟件報告所述沖突,執(zhí)行軟件處理機(jī)來處理 所述沖突。
全文摘要
本文描述了用于用硬件來監(jiān)控存儲器訪問以支持事務(wù)執(zhí)行的方法和裝置。屬性監(jiān)控對數(shù)據(jù)項(xiàng)的訪問,其中不用考慮以物理存儲結(jié)構(gòu)粒度進(jìn)行檢測,但是保證至少以數(shù)據(jù)項(xiàng)粒度進(jìn)行監(jiān)控。例如,屬性被添加到高速緩存的狀態(tài)位,以實(shí)現(xiàn)新的高速緩存一致性狀態(tài)。一旦對數(shù)據(jù)項(xiàng)進(jìn)行了可以選擇性確定的被監(jiān)控的存儲器訪問,與所述數(shù)據(jù)項(xiàng)相關(guān)聯(lián)的一致性狀態(tài)被更新為監(jiān)控狀態(tài)。因此,通過將請求類型與所述數(shù)據(jù)項(xiàng)的被監(jiān)控的一致性狀態(tài)相組合來檢測對所述數(shù)據(jù)項(xiàng)的無效請求。
文檔編號G06F9/38GK101814018SQ20091100028
公開日2010年8月25日 申請日期2009年12月25日 優(yōu)先權(quán)日2008年12月30日
發(fā)明者E·科亨, G·謝弗, O·馬古利斯, R·薩德, S·賴金, V·巴辛 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
读书| 东宁县| 法库县| 吉木萨尔县| 临城县| 无棣县| 湖州市| 广安市| 当涂县| 四会市| 金溪县| 昭通市| 鄂伦春自治旗| 驻马店市| 屯昌县| 陇南市| 建平县| 勃利县| 九江市| 长岛县| 临沂市| 宜君县| 泊头市| 密云县| 裕民县| 兴文县| 吉林省| 兰西县| 交城县| 赣榆县| 垫江县| 玉山县| 积石山| 焦作市| 易门县| 滨州市| 盐池县| 江川县| 肃宁县| 当雄县| 含山县|