專利名稱:虛擬化事務(wù)存儲(chǔ)器的全局溢出方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器執(zhí)行領(lǐng)域,具體來說,涉及執(zhí)行操作組。
背景技術(shù):
半導(dǎo)體加工和邏輯設(shè)計(jì)方面的進(jìn)步允許在集成電路器件上可存在 的邏輯數(shù)量的增加。因此,計(jì)算機(jī)系統(tǒng)配置已經(jīng)從系統(tǒng)中的單個(gè)或多 個(gè)集成電路發(fā)展到各個(gè)集成電路上存在的多個(gè)核心和多個(gè)邏輯處理 器。處理器或集成電路通常包括單個(gè)處理器管芯,在其中,處理器管 芯可包括任何數(shù)量的核心或邏輯處理器。
作為一個(gè)實(shí)例,單個(gè)集成電路可能具有一個(gè)或多個(gè)核心。術(shù)語"核 心"通常表示集成電路上的邏輯保持獨(dú)立體系結(jié)構(gòu)狀態(tài)的能力,在其 中,各獨(dú)立體系結(jié)構(gòu)狀態(tài)與至少一部分專用執(zhí)行資源關(guān)聯(lián)。作為另一 個(gè)實(shí)例,單個(gè)集成電路或單個(gè)核心可具有用于執(zhí)行多個(gè)軟件線程的多 個(gè)硬件線程,這又稱作多線程集成電路或多線程核心。多個(gè)硬件線程 通常共享公共數(shù)據(jù)高速緩存、指令高速緩存、執(zhí)行單元、分支預(yù)測器、
控制邏輯、總線接口及其它處理器資源,同時(shí)保持各邏輯處理器的特 有體系結(jié)構(gòu)狀態(tài)。
集成電路上數(shù)量不斷增加的核心和邏輯處理器使更多軟件線程能 夠被執(zhí)行。但是,可同時(shí)執(zhí)行的軟件線程的數(shù)量的增加對(duì)于使軟件線 程之間共享的數(shù)據(jù)同步造成問題。多個(gè)核心或多個(gè)邏輯處理器系統(tǒng)中 訪問共享數(shù)據(jù)的一個(gè)常見解決方案包括使用鎖定來保證對(duì)共享數(shù)據(jù)的 多個(gè)訪問的互斥。但是,執(zhí)行多個(gè)軟件線程的不斷增加的能力可能引 起錯(cuò)誤爭用和執(zhí)行的串行化。
另 一個(gè)數(shù)據(jù)同步技術(shù)包括事務(wù)存儲(chǔ)器(TM)的使用。事務(wù)執(zhí)行往往
包括推測地執(zhí)行一組的多個(gè)微操作、操作或指令。但是,在先前的硬
件TM系統(tǒng)中,如果事務(wù)對(duì)于存儲(chǔ)器變得過大、即溢出,則通常重啟
事務(wù)。在這里,執(zhí)行事務(wù)一直到溢出所花費(fèi)的時(shí)間可能被浪費(fèi)。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供一種裝置,包括執(zhí)行事務(wù)的執(zhí)行 模塊;耦合到所述執(zhí)行模塊的第一存儲(chǔ)器,所述第一存儲(chǔ)器包括多個(gè) 存儲(chǔ)器行,其中,所述多個(gè)存儲(chǔ)器行中的存儲(chǔ)器行與對(duì)應(yīng)的跟蹤字段 關(guān)聯(lián),以便跟蹤所述事務(wù)執(zhí)行期間對(duì)所述存儲(chǔ)器行的訪問;以及溢出 邏輯,在所述事務(wù)執(zhí)行期間,響應(yīng)與所述存儲(chǔ)器行關(guān)聯(lián)的溢出事件, 支持所述笫 一存儲(chǔ)器到第二存儲(chǔ)器的擴(kuò)充。
根據(jù)本發(fā)明的另一方面,提供一種裝置,包括執(zhí)行組合為事務(wù) 的多個(gè)操作的執(zhí)行單元;耦合到所述執(zhí)行模塊的事務(wù)存儲(chǔ)器,所述存 儲(chǔ)器包括多個(gè)塊;以及耦合到所述執(zhí)行單元、存儲(chǔ)事務(wù)溢出標(biāo)記的寄 存器,如果組合為所述事務(wù)的所述多個(gè)操作之一使所述存儲(chǔ)器溢出, 則將設(shè)置所述事務(wù)溢出標(biāo)記。
根據(jù)本發(fā)明的又一方面,提供一種裝置,包括處理器,其中包 括執(zhí)行事務(wù)中的多個(gè)操作的執(zhí)行單元;耦合到所述執(zhí)行單元的高速緩 存,所述高速緩存包括多個(gè)高速緩存行;響應(yīng)與所述事務(wù)中的所述多 個(gè)操作中的操作關(guān)聯(lián)的溢出事件而存儲(chǔ)全局溢出表的基址的表示的基 址寄存器。
根據(jù)本發(fā)明的又一方面,提供一種裝置,包括執(zhí)行事務(wù)的執(zhí)行 模塊;耦合到所述執(zhí)行模塊的存儲(chǔ)器,所述存儲(chǔ)器包括多個(gè)塊,其中,
所述多個(gè)塊中的塊與第一位和第二位關(guān)聯(lián),以便跟蹤在所述事務(wù)執(zhí)行
期間對(duì)所述塊的訪問;存儲(chǔ)溢出標(biāo)記的第一存儲(chǔ)元件,如果當(dāng)前訪問 將逐出所述塊,以及所述第一或第二位跟蹤到在所述事務(wù)執(zhí)行期間對(duì) 所述塊的先前訪問,則在對(duì)所述存儲(chǔ)器的所述當(dāng)前訪問時(shí)將設(shè)置所述 溢出標(biāo)記;以及在設(shè)置了所述溢出標(biāo)記時(shí)存儲(chǔ)全局溢出表的基址的,
二存儲(chǔ)元件。
根據(jù)本發(fā)明的又一方面,提供一種系統(tǒng),包括微處理器,其中 包括執(zhí)行事務(wù)的執(zhí)行單元;耦合到所述執(zhí)行單元的事務(wù)存儲(chǔ)器(TM), 所述TM包括多行,其中,各行包括跟蹤在所述事務(wù)執(zhí)行期間的訪問 的對(duì)應(yīng)事務(wù)跟蹤字段;響應(yīng)在所述事務(wù)執(zhí)行期間發(fā)生的溢出事件而支 持所述TM的虛擬化的溢出邏輯;以及存儲(chǔ)所述虛擬化TM的在存儲(chǔ) 器分級(jí)結(jié)構(gòu)中比所述TM更高級(jí)的第二存儲(chǔ)器。
根據(jù)本發(fā)明的又一方面,提供一種方法,包括檢測與將作為事 務(wù)的一部分^皮執(zhí)行的操作關(guān)聯(lián)的溢出事件,所述操作引用事務(wù)存儲(chǔ)器 中的存儲(chǔ)器行;如果當(dāng)前沒有設(shè)置溢出位,則響應(yīng)所述溢出事件而設(shè) 置溢出位;以及響應(yīng)設(shè)置溢出位而把所述事務(wù)存儲(chǔ)器擴(kuò)充到第二存儲(chǔ) 器。
根據(jù)本發(fā)明的又一方面,提供一種方法,包括執(zhí)行組合為事務(wù) 的多個(gè)操作中的操作;根據(jù)所述操作選擇高速緩存中要逐出的高速緩 存行;以及如果先前在所述事務(wù)未決期間訪問了所選高速緩存行如 果當(dāng)前沒有設(shè)置全局溢出,則設(shè)置全局溢出位;如果當(dāng)前沒有分配用 于全局溢出表的第 一頁面,則為所述全局溢出表分配第二存儲(chǔ)器中的 存儲(chǔ)器的第一頁面,其中,所述全局溢出表存儲(chǔ)與所述事務(wù)關(guān)聯(lián)的狀 態(tài)信息;以及在為所述全局溢出表分配所述第一頁面時(shí),把系統(tǒng)存儲(chǔ) 器中的第 一 頁面的基址寫入基址寄存器。
附圖中的各圖以舉例而不是限定的方式來說明本發(fā)明。 圖1說明能夠擴(kuò)充事務(wù)存儲(chǔ)器的多核心處理器的一個(gè)實(shí)施例。 圖2a說明包括讓各核心存儲(chǔ)溢出標(biāo)記的寄存器的多核心處理器 的一個(gè)實(shí)施例。
圖2b說明包括存儲(chǔ)溢出標(biāo)記的全局寄存器的多核心處理器的另 一個(gè)實(shí)施例。
圖3說明包括讓各核心存儲(chǔ)溢出表的基址的基址寄存器的多核心 處理器的一個(gè)實(shí)施例。
圖4a說明溢出表的一個(gè)實(shí)施例。
圖4b說明溢出表的另一個(gè)實(shí)施例。
圖5說明包括多個(gè)頁面的溢出表的另一個(gè)實(shí)施例。
圖6說明虛擬化事務(wù)存儲(chǔ)器的系統(tǒng)的一個(gè)實(shí)施例。
圖7說明用于虛擬化事務(wù)存儲(chǔ)器的流程圖的一個(gè)實(shí)施例。
圖8說明用于虛擬化事務(wù)存儲(chǔ)器的流程圖的另 一個(gè)實(shí)施例。
具體實(shí)施例方式
在以下描述中,闡述了大量具體細(xì)節(jié),諸如用于事務(wù)執(zhí)行的具體 硬件支持的實(shí)例、處理器中本地/存儲(chǔ)器的具體類型以及存儲(chǔ)器訪問和 位置的具體類型等,以便提供對(duì)本發(fā)明的透徹理解。然而,本領(lǐng)域的 技術(shù)人員會(huì)清楚,這些具體細(xì)節(jié)不一定要用于實(shí)施本發(fā)明。在其它情 況下,沒有詳細(xì)描述諸如采用軟件的事務(wù)的編碼、事務(wù)的劃分、具體 多核心和多線程處理器體系結(jié)構(gòu)、中斷生成/處理、高速緩存組織以及 微處理器的具體操作細(xì)節(jié)之類的眾所周知的組件或方法,以免不必要 地影響對(duì)本發(fā)明的理解。
本文所述的方法及裝置用于擴(kuò)充和/或虛擬化事務(wù)存儲(chǔ)器(TM),以 便在事務(wù)執(zhí)行期間支持本地存儲(chǔ)器的溢出。具體來說,主要參照多核 心處理器計(jì)算機(jī)系統(tǒng)來論述虛擬化和/或擴(kuò)充事務(wù)存儲(chǔ)器。但是,用于 擴(kuò)充/虛擬化事務(wù)存儲(chǔ)器的方法及裝置不限于此,因?yàn)樗鼈兛稍谥T如蜂 窩電話、個(gè)人數(shù)字助理、嵌入控制器、移動(dòng)平臺(tái)、桌面平臺(tái)和服務(wù)器 平臺(tái)之類的任何集成電路裝置或系統(tǒng)上實(shí)現(xiàn)或者與其關(guān)聯(lián)地實(shí)現(xiàn),以 及結(jié)合利用事務(wù)存儲(chǔ)器的其它資源、如硬件/軟件線程來實(shí)現(xiàn)。
參照圖1,說明能夠擴(kuò)充事務(wù)存儲(chǔ)器的多核心處理器100的一個(gè) 實(shí)施例。事務(wù)執(zhí)行通常包括把多個(gè)指令或操作組合為事務(wù)、代碼的原 子段或者代碼的臨界段。在某些情況中,單詞"指令"的使用表示由多個(gè)操作組成的宏指令。有兩種常見方式來標(biāo)識(shí)事務(wù)。第一實(shí)例包括 以軟件劃分事務(wù)。在這里,某種軟件劃分包含在代碼中以便標(biāo)識(shí)事務(wù)。 在可結(jié)合前述軟件劃分來實(shí)現(xiàn)的另 一個(gè)實(shí)施例中,事務(wù)通過硬件來組 合或者通過表明事務(wù)的開始和事務(wù)的結(jié)束的指令來識(shí)別。
在處理器中,推測地執(zhí)行或者非推測地執(zhí)行事務(wù)。在第二種情況 中,以某種形式的鎖定或保證對(duì)于待訪問存儲(chǔ)器位置的有效訪問來執(zhí) 行指令組。在該備選方案中,事務(wù)的推測執(zhí)行更普遍,在其中,事務(wù) 被推測地執(zhí)行和在事務(wù)結(jié)束時(shí)提交。本文所使用的"事務(wù)未決"表示 已經(jīng)開始執(zhí)行但沒有提交或中止、即未決的事務(wù)。
在事務(wù)的推測執(zhí)行期間,在提交事務(wù)之前通常沒有使對(duì)存儲(chǔ)器的 更新全局可見。在事務(wù)仍然未決的同時(shí),跟蹤從存儲(chǔ)器加載以及寫入 存儲(chǔ)器的位置。在成功驗(yàn)證那些存儲(chǔ)器位置時(shí),事務(wù)被提交,以及使 事務(wù)期間進(jìn)行的更新全局可見。但是,如果事務(wù)在其未決期間失效, 則重新開始事務(wù)而沒有使更新全局可見。
在所述實(shí)施例中,處理器100包括兩個(gè)核心、即核心101和102;
但是,可存在任何數(shù)量的核心。核心通常表示位于集成電路上的能夠
保持獨(dú)立體系結(jié)構(gòu)狀態(tài)的任何邏輯,其中,各獨(dú)立保持的體系結(jié)構(gòu)狀 態(tài)與至少一部分專用才丸行資源關(guān)jf關(guān)。例如,在圖i中,核心10i包括
執(zhí)行單元110,而核心102包括執(zhí)行單元115。即使執(zhí)行單元110和 115表示為在邏輯上是分離的,它們也可在物理上設(shè)置成同一個(gè)單元 的組成部分或者非常接近。但是,作為一個(gè)實(shí)例,調(diào)度器120不能在 執(zhí)行單元115上為核心101調(diào)度才丸行。
與核心相比,硬件線程通常表示位于集成電路上的能夠保持獨(dú)立 體系結(jié)構(gòu)狀態(tài)的任何邏輯,其中,獨(dú)立保持的體系結(jié)構(gòu)狀態(tài)共享對(duì)執(zhí) 行資源的訪問??梢钥吹?,由于某些處理資源被共享而其它的專用于 體系結(jié)構(gòu)狀態(tài),所以硬件線程與核心的命名之間界限重疊。然而,核 心和硬件線程常被操作系統(tǒng)看作是單獨(dú)的邏輯處理器,其中各邏輯處 理器能夠執(zhí)行線程。因此,處理器、如處理器100能夠執(zhí)行諸如線程
160、 165、 170和175之類的多個(gè)線程。雖然各核心、如核心101表 示為能夠執(zhí)行諸如線程160和165之類的多個(gè)軟件線程,但是核心有 可能也只能夠執(zhí)行單個(gè)線程。
在一個(gè)實(shí)施例中,處理器100包括對(duì)稱核心101和102。在這里, 核心101和核心102是具有相似組件和體系結(jié)構(gòu)的相似核心?;蛘?, 核心101和核心102可以是具有不同組件和配置的不對(duì)稱核心。然而, 由于核心101和102^皮表示為對(duì)稱核心,所以將論述核心101中的功 能塊,避免對(duì)核心102進(jìn)行重復(fù)論述。注意,所示的功能塊是邏輯功 能塊,它們可包括在其它功能塊之間共享或者與其它功能塊的邊界重 疊的邏輯。另外,功能塊中的每個(gè)不一定都需要,并且可能以不同配 置來互連。例如,取和解碼塊140可包括取和/或預(yù)取單元、耦合到取
單元的解碼單元以及耦合在取單元之前、解碼單元之后或者耦合到取 和解碼這兩個(gè)單元的指令高速緩存。
在一個(gè)實(shí)施例中,處理器100包括用于與外部裝置進(jìn)行通信的總 線接口單元150以及在核心101與102之間共享的高級(jí)高速緩存145、 如二級(jí)高速緩存。在一個(gè)備選實(shí)施例中,核心101和102各包括分開 的二級(jí)高速緩存。
取、解碼和分支預(yù)測單元140耦合到二級(jí)高速緩存145。在一個(gè) 實(shí)例中,核心101包括取指令的取單元,對(duì)所取指令解碼的解碼單元, 以及存儲(chǔ)所取指令、已解碼指令或者所取和已解碼指令的組合的指令 高速緩存或跟蹤高速緩存。在另一個(gè)實(shí)施例中,取和解碼塊140包括 具有分支預(yù)測器和/或分支目標(biāo)纟爰沖器的預(yù)取器。另外,只讀存儲(chǔ)器、 如微碼ROM 135可能用來存儲(chǔ)更長或更復(fù)雜的已解碼指令。
在一個(gè)實(shí)例中,分配器和重命名器塊130包括分配器,用于預(yù)留 資源、如寄存器文件,以便存儲(chǔ)指令處理結(jié)果。但是,核心101可能 能夠無序執(zhí)行,在其中,分配器和重命名器塊130還預(yù)留其它資源、 如重排序緩沖器,以便跟蹤指令。塊130還可包括寄存器重命名器, 以便把程序/指令參考寄存器重命名為核心101內(nèi)部的其它寄存器。重
排序/退出單元125包括諸如上述重排序緩沖器之類的組件,以便支持 無序執(zhí)行以及無序執(zhí)行的指令的稍后退出。作為一個(gè)實(shí)例,加載到重 排序緩沖器中的微操作由執(zhí)行單元無序執(zhí)行,然后再以與微操作進(jìn)入 重排序緩沖器相同的順序從重排序緩沖器中取出、即退出。
在一個(gè)實(shí)施例中,調(diào)度器和寄存器文件塊120包括在執(zhí)行單元110 上調(diào)度指令的調(diào)度器單元。實(shí)際上,可能按照其類型以及執(zhí)行單元110 的可用性在執(zhí)行單元110上調(diào)度指令。例如,在具有可用浮點(diǎn)執(zhí)行單 元的執(zhí)行單元110的端口上調(diào)度浮點(diǎn)指令。還包括與執(zhí)行單元110關(guān) 聯(lián)的寄存器文件,以便存儲(chǔ)信息指令處理結(jié)果。核心101中可用的示 范執(zhí)行單元包括浮點(diǎn)執(zhí)行單元、整數(shù)執(zhí)行單元、轉(zhuǎn)移執(zhí)行單元、加載 執(zhí)行單元、存儲(chǔ)執(zhí)行單元以及其它已知的執(zhí)行單元。在一個(gè)實(shí)施例中, 執(zhí)行單元110還包括保留臺(tái)和/或地址生成單元。
在所述實(shí)施例中,低級(jí)高速緩存103用作事務(wù)存儲(chǔ)器。具體來說, 低級(jí)高速緩存103是存儲(chǔ)當(dāng)前使用/操作的元素、如數(shù)據(jù)操作數(shù)的一級(jí) 高速緩存。高速緩存103包括諸如行104、 105和106之類的高速緩存 行,它們又可稱作高速緩存103中的存儲(chǔ)器位置或塊。在一個(gè)實(shí)施例 中,高速緩存103被組織成集合關(guān)聯(lián)高速緩存;但是,高速緩存103 可被組織成全關(guān)聯(lián)、集合關(guān)聯(lián)、直接映射或者其它已知的高速緩存組 織。
如圖所示,行104、 105和106包括部分或字段,例如部分104a 和字段104b。在一個(gè)實(shí)施例中,行、位置、塊或字,例如行104、 105 和106的部分104a、 105a和106a能夠存儲(chǔ)多個(gè)元素。元素表示任何 指令、操作數(shù)、數(shù)據(jù)操作數(shù)、變量或者共同存儲(chǔ)在存儲(chǔ)器中的其它邏 輯值組。作為一個(gè)實(shí)例,高速緩存行104在部分104a中存儲(chǔ)四個(gè)元素, 其中包含指令和三個(gè)操作數(shù)。高速緩存行104a中存儲(chǔ)的元素可處于打 包或壓縮狀態(tài)以及未壓縮狀態(tài)。此外,元素可能存儲(chǔ)在沒有與高速緩 存103的行、集合或路的邊界對(duì)齊的高速緩存103中。下面參照示范 實(shí)施例更詳細(xì)地論述存儲(chǔ)器103。
處理器100中的高速緩存103以及其它特征和裝置存儲(chǔ)邏輯值和/ 或?qū)ζ溥M(jìn)行操作。邏輯電平、邏輯值的使用又常稱作1和O,它只是 表示二元邏輯狀態(tài)。例如,1表示高邏輯電平,以及0表示低邏輯電 平。在計(jì)算機(jī)系統(tǒng)中已經(jīng)使用值的其它表示,例如邏輯值或二進(jìn)制值 的十進(jìn)制和十六進(jìn)制表示。例如,以十進(jìn)制數(shù)10為例,它以二進(jìn)制值 表示為1010,以及以十六進(jìn)制表示為字母A。
在圖l所示的實(shí)施例中,跟蹤對(duì)行104、 105和106的訪問,以便 支持事務(wù)執(zhí)行。諸如字段104b、 105b和106b之類的訪問跟蹤字段用 來跟蹤對(duì)其相應(yīng)的存儲(chǔ)器行的訪問。例如,存儲(chǔ)器行/部分104a與對(duì) 應(yīng)的跟蹤字段104b關(guān)聯(lián)。在這里,訪問跟蹤字段104b與高速緩存行 104a關(guān)聯(lián)并且與其對(duì)應(yīng),因?yàn)楦欁侄?04b包含作為高速緩存行104 的一部分的位。關(guān)聯(lián)可通過如圖所示的物理布置進(jìn)行,或者通過其它 關(guān)聯(lián),例如在硬件或軟件查找表中把訪問跟蹤字段104b與地址引用存 儲(chǔ)器行104a或104b相關(guān)或者映射。實(shí)際上,事務(wù)訪問字段以硬件、 軟件、固件或者它們的任何組合來實(shí)現(xiàn)。
因此,在事務(wù)執(zhí)行期間對(duì)行104a訪問時(shí),訪問跟蹤字段104b跟 蹤該訪問。訪問包括諸如讀取、寫入、存儲(chǔ)、加載、逐出、窺探或者 對(duì)存儲(chǔ)器位置的其它已知訪問之類的操作。
作為一個(gè)筒化的說明性實(shí)例,假定訪問跟蹤字段104b、 105b和 106b包括兩個(gè)事務(wù)位第一讀取跟蹤位和第二寫入跟蹤位。在缺省狀 態(tài)、即第一邏輯值,訪問跟蹤字段104b、 105b和106b中的第一和第 二位分別表示高速緩存行104、 105和106在事務(wù)執(zhí)行期間、即事務(wù)未 決期間沒有被訪問。在來自高速緩存行104a或者與高速緩存行104a 關(guān)聯(lián)的系統(tǒng)存儲(chǔ)器位置的加載操作產(chǎn)生從行104a的加載時(shí),訪問字段 104b中的第一讀取跟蹤位被設(shè)置為第二狀態(tài)/值、如第二邏輯值,以表 示在事務(wù)執(zhí)行期間已經(jīng)發(fā)生從高速緩存行104的讀取。類似地,在寫 入高速緩存行105a時(shí),訪問字段105b中的第二寫入跟蹤位被設(shè)置為 笫二狀態(tài),以表示事務(wù)執(zhí)行期間發(fā)生了對(duì)高速緩存行105的寫入。
因此,如果與行104a關(guān)聯(lián)的字段104a中的事務(wù)位被檢查,以及 事務(wù)位表示缺省狀態(tài),則高速緩存行104在事務(wù)未決期間沒有被訪 問。相反,如果第一讀取跟蹤位表示第二值,則高速緩存行104先前 在事務(wù)未決期間已經(jīng)^皮訪問。更具體來說,在事務(wù)執(zhí)行期間發(fā)生從行 104a的加載,如所設(shè)置的訪問字段104b中的第一讀取跟蹤位表示。
訪問字段104b、 105b和106b在事務(wù)執(zhí)行期間也可能具有其它用 途。例如,事務(wù)的驗(yàn)證在傳統(tǒng)上以兩種方式進(jìn)行。首先,如果跟蹤到 使事務(wù)中止的無效訪問,則在無效訪問時(shí),事務(wù)坤皮中止以及可能重新 開始?;蛘撸聞?wù)執(zhí)行期間被訪問的行/位置的驗(yàn)證在提交之前在事務(wù) 結(jié)束時(shí)進(jìn)行。在那個(gè)時(shí)候,如果驗(yàn)證成功,則提交事務(wù),或者如果驗(yàn) 證不成功,則中止事務(wù)。在任一種情況中,訪問跟蹤字段104b、 105b 和106b是有用的,因?yàn)樗鼈儤?biāo)識(shí)哪些行在事務(wù)執(zhí)行期間已經(jīng)被訪問。
作為另一個(gè)簡化的說明性實(shí)例,假定第一事務(wù)正在執(zhí)行,以及在 第一事務(wù)執(zhí)行期間,發(fā)生來自行105a的加載。因此,對(duì)應(yīng)的訪問跟蹤 字段105b表示在事務(wù)執(zhí)行期間發(fā)生了對(duì)行105的訪問。如果第二事務(wù) 導(dǎo)致對(duì)于行105a的沖突,則第一或者第二事務(wù)可根據(jù)第二事務(wù)對(duì)行 105的訪問而立即中止,因?yàn)樵L問跟蹤字段105b表示由第一未決事務(wù) 從行105加載。
在一個(gè)實(shí)施例中,在第二事務(wù)導(dǎo)致對(duì)于行105的沖突時(shí),其中對(duì) 應(yīng)的字段105b表明由第一未決事務(wù)進(jìn)行的先前訪問,則產(chǎn)生中斷。當(dāng) 沖突在兩個(gè)未決事務(wù)之間發(fā)生時(shí),那個(gè)中斷由缺省處理機(jī)和/或發(fā)起第 一或第二事務(wù)的中止的中止處理機(jī)來處理。
在中止或提交事務(wù)時(shí),在事務(wù)執(zhí)行期間設(shè)置的事務(wù)位-波清除,以 便確保事務(wù)位的狀態(tài)重置為缺省狀態(tài),用于以后在后續(xù)事務(wù)中的訪問 的跟蹤。在另一個(gè)實(shí)施例中,訪問跟蹤字段還可存儲(chǔ)諸如核心ID或線 程ID之類的資源ID以及事務(wù)ID。
如上所述以及接下來參照圖1所述,低級(jí)高速緩存103用作事務(wù) 存儲(chǔ)器。但是,事務(wù)存儲(chǔ)器不受此限制。實(shí)際上,高級(jí)高速緩存1^5
可能用作事務(wù)存儲(chǔ)器。在這里,對(duì)高速緩存145的行的訪問被跟蹤。 如上所述,標(biāo)識(shí)符、如線程ID或事務(wù)ID可能用于高級(jí)存儲(chǔ)器、如高 速緩存145中,以便跟蹤哪一個(gè)事務(wù)、線程或資源執(zhí)行了在高速緩存 145中跟蹤的訪問。
作為可能的事務(wù)存儲(chǔ)器的又一個(gè)實(shí)例,與處理元件或資源關(guān)聯(lián) 的、作為存儲(chǔ)變量、指令或數(shù)據(jù)的執(zhí)行空間或高速暫存區(qū)的多個(gè)寄存 器用作事務(wù)存儲(chǔ)器。在這個(gè)實(shí)例中,存儲(chǔ)器位置104、 105和106是包 括寄存器104、 105和106的一組寄存器。事務(wù)存儲(chǔ)器的其它實(shí)例包括 高速緩存、多個(gè)寄存器、寄存器文件、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、 多個(gè)鎖存器或其它存儲(chǔ)元件。注意,在從存儲(chǔ)器位置讀取或?qū)懭肫渲?時(shí),處理器100或者處理器100上的任何處理資源可對(duì)系統(tǒng)存儲(chǔ)器位 置、虛擬存儲(chǔ)器地址、物理地址或其它地址進(jìn)行尋址。
只要事務(wù)沒有使事務(wù)存儲(chǔ)器、如低級(jí)高速緩存103溢出,則事務(wù) 之間的沖突通過分別跟蹤對(duì)于對(duì)應(yīng)的行104、 105和106的訪問的訪問 字段104b、 105b和106b的操作來檢測。如上所述,事務(wù)可采用訪問 跟蹤字段104b、 105b和106b來驗(yàn)證、提交、失效和/或中止。但是, 當(dāng)事務(wù)使存儲(chǔ)器103溢出時(shí),溢出模塊107將支持事務(wù)存儲(chǔ)器103的 虛擬化和/或擴(kuò)充,即響應(yīng)溢出事件而把事務(wù)的狀態(tài)存儲(chǔ)到第二存儲(chǔ) 器。因此,不是在存儲(chǔ)器103溢出時(shí)中止事務(wù),這導(dǎo)致與執(zhí)行事務(wù)中 的先前操作關(guān)聯(lián)的執(zhí)行時(shí)間的損失,而是使事務(wù)狀態(tài)虛擬化以便繼續(xù) 執(zhí)行。
溢出事件可包括存儲(chǔ)器103的任何實(shí)際溢出或者存儲(chǔ)器103的溢 出的任何預(yù)測。在一個(gè)實(shí)施例中,溢出事件選擇先前在當(dāng)前未決事務(wù) 的執(zhí)行期間被訪問的存儲(chǔ)器103中的行的逐出或?qū)嶋H逐出。換言之, 操作正使存儲(chǔ)器103溢出,因?yàn)榇鎯?chǔ)器103充滿了已經(jīng)由當(dāng)前未決事 務(wù)訪問的存儲(chǔ)器行。因此,存儲(chǔ)器103選擇待逐出的與未決事件關(guān)聯(lián) 的行。存儲(chǔ)器103基本上已滿,并且嘗試通過逐出與仍然未決的事務(wù) 關(guān)聯(lián)的行來創(chuàng)建空間。已知或者可用的技術(shù)可用于高速緩存替換、行 的逐出、提交、訪問跟蹤、事務(wù)沖突檢查以及事務(wù)驗(yàn)證。
但是,溢出事件可能不限于存儲(chǔ)器103的實(shí)際溢出。例如,關(guān)于 事務(wù)對(duì)于存儲(chǔ)器103來說過大的預(yù)測可構(gòu)成溢出事件。在這里,算法 或其它預(yù)測方法用來確定事務(wù)的大小,并在存儲(chǔ)器103實(shí)際溢出之前 創(chuàng)建溢出事件。在另一個(gè)實(shí)施例中,溢出事件是嵌套事務(wù)的開始。由 于嵌套事務(wù)更為復(fù)雜并且在傳統(tǒng)上采用更多存儲(chǔ)器來支持,所以一級(jí) 嵌套事務(wù)或后續(xù)級(jí)嵌套事務(wù)的檢測可能產(chǎn)生溢出事件。
在一個(gè)實(shí)施例中,溢出邏輯107包括存儲(chǔ)溢出位的溢出存儲(chǔ)元 件、如寄存器以及基址存儲(chǔ)元件。雖然溢出邏輯107在相同功能塊中 表示為高速緩存控制邏輯,但是存儲(chǔ)溢出位的溢出寄存器和基址寄存 器可能出現(xiàn)在微處理器100中的任何位置。作為一個(gè)實(shí)例,處理器100 上的各核心包括存儲(chǔ)全局溢出表的基址的表示和溢出位的溢出寄存 器。但是,溢出位和基址的實(shí)現(xiàn)不受此限制。實(shí)際上,處理器100上 的所有核心或線程均可見的全局寄存器可包括溢出位和基址。或者, 各核心或硬件線程包括基址寄存器,以及全局寄存器包括溢出位???以看到,可實(shí)現(xiàn)任何數(shù)量的配置來存儲(chǔ)溢出表的溢出位和基址。
溢出位根據(jù)溢出事件來設(shè)置。繼續(xù)上述實(shí)施例,在其中,選擇先 前在未決事務(wù)的執(zhí)行期間被訪問的存儲(chǔ)器103中的行供逐出構(gòu)成溢出 事件,溢出位根據(jù)用于逐出的先前在未決事務(wù)的執(zhí)行期間被訪問的存 儲(chǔ)器103中的行的選擇來設(shè)置。
在一個(gè)實(shí)施例中,當(dāng)諸如行104之類的行被選擇用于逐出并且先 前在未決事務(wù)期間被訪問時(shí),溢出位采用硬件、如設(shè)置溢出位的邏輯 來設(shè)置。例如,高速緩存控制器107根據(jù)任何數(shù)量的已知或者可用的 高速緩存替換算法來選擇行104供逐出。實(shí)際上,高速緩存替換算法 可能對(duì)替換先前在未決事務(wù)的執(zhí)行期間被訪問的高速緩存行、如行104 存在偏見。然而,在選擇行104供逐出時(shí),高速緩存控制器或者其它 邏輯檢查訪問跟蹤字段104b。邏輯根據(jù)字段104b中的值來確定是否 在未決事務(wù)的執(zhí)行期間已經(jīng)訪問了高速緩存行104,如上所述。如果
先前在未決事務(wù)期間已經(jīng)訪問高速緩存行104,則處理器100中的邏 輯設(shè)置全局溢出位。
在另一個(gè)實(shí)施例中,軟件或固件設(shè)置全局溢出位。在一個(gè)類似的 情況中,在確定先前在未決事務(wù)期間訪問了行104時(shí),產(chǎn)生中斷。那 個(gè)中斷由設(shè)置全局溢出位的執(zhí)行單元110中執(zhí)行的用戶處理機(jī)和/或中 止處理機(jī)來處理。注意,如果當(dāng)前設(shè)置了全局溢出位,則硬件和/或軟 件無需再次設(shè)置該位,因?yàn)榇鎯?chǔ)器103已經(jīng)溢出。
作為溢出位的使用的一個(gè)說明性實(shí)例, 一旦設(shè)置了溢出位,硬件 和/或軟件跟蹤對(duì)高速緩存行104、 105和106的訪問,驗(yàn)證事務(wù),檢 查沖突,以及執(zhí)行通常與存儲(chǔ)器103和采用擴(kuò)展事務(wù)存儲(chǔ)器的訪問字 段104b、 105b和106b關(guān)聯(lián)的其它事務(wù)相關(guān)操作。
基址用來標(biāo)識(shí)虛擬化事務(wù)存儲(chǔ)器的基址。在一個(gè)實(shí)施例中,虛擬 化事務(wù)存儲(chǔ)器存儲(chǔ)在大于存儲(chǔ)器103的第二存儲(chǔ)器裝置、如高級(jí)高速 緩存145或者與處理器100關(guān)聯(lián)的系統(tǒng)存儲(chǔ)器裝置中。因此,第二存 儲(chǔ)器能夠處理使存儲(chǔ)器103溢出的事務(wù)。
在一個(gè)實(shí)施例中,已擴(kuò)充事務(wù)存儲(chǔ)器稱作存儲(chǔ)事務(wù)的狀態(tài)的全局 溢出表。因此,基址表示存儲(chǔ)事務(wù)的狀態(tài)的全局溢出表的基址。對(duì)于 訪問跟蹤字段104b、 105b和106b,全局溢出表在操作上與存儲(chǔ)器103 相似。作為一個(gè)說明性實(shí)例,假定行106被選擇供逐出。但是,訪問 字段106b表示先前在未決事務(wù)的執(zhí)行期間已經(jīng)訪問行106。如上所 述,如杲當(dāng)前沒有設(shè)置全局溢出位,則全局溢出位根據(jù)溢出事件來設(shè) 置。
如果全局溢出表仍未建立,則為該表分配第二存儲(chǔ)器的大小。作 為一個(gè)實(shí)例,產(chǎn)生頁面錯(cuò)誤,表明仍未分配溢出表的初始頁面。操作 系統(tǒng)則向全局溢出表分配第二存儲(chǔ)器的范圍。第二存儲(chǔ)器的范圍可稱 作全局溢出表的頁面。全局溢出表的基址的表示則存儲(chǔ)在處理器100 中。
在逐出行106之前,事務(wù)的狀態(tài)存儲(chǔ)在全局溢出表中。在一個(gè)實(shí)
施例中,存儲(chǔ)事務(wù)的狀態(tài)包括在全局溢出表中存儲(chǔ)對(duì)應(yīng)于操作和/或行
106的條目,它與溢出事件關(guān)聯(lián)。該條目可包括與行106關(guān)聯(lián)的諸如 物理地址之類的地址、訪問跟蹤字段106b的狀態(tài)、與行106關(guān)聯(lián)的數(shù) 據(jù)元素、行106的大小、操作系統(tǒng)控制字段和/或其它字段的任何組合。 下面參照圖3-5更詳細(xì)地論述全局溢出表和第二存儲(chǔ)器。
因此,當(dāng)作為事務(wù)的組成部分的指令或操作通過處理器100的流 水線傳遞時(shí),跟蹤對(duì)事務(wù)存儲(chǔ)器、如高速緩存103的訪問。此外,當(dāng) 事務(wù)存儲(chǔ)器已滿、即溢出時(shí),事務(wù)存儲(chǔ)器被擴(kuò)充到處理器100上或者 與處理器100關(guān)^7耦合的其它存儲(chǔ)器。另外,整個(gè)處理器100上的寄 存器可能存儲(chǔ)溢出標(biāo)記,以便表示事務(wù)存儲(chǔ)器溢出,并且存儲(chǔ)基址以 標(biāo)識(shí)已擴(kuò)充事務(wù)存儲(chǔ)器的基址。
雖然參照圖1所示的示范多核心體系結(jié)構(gòu)具體論述了事務(wù)存儲(chǔ) 器,但是事務(wù)存儲(chǔ)器的擴(kuò)充和/或虛擬化可通過用于對(duì)數(shù)據(jù)執(zhí)行指令/ 進(jìn)行操作的任何處理系統(tǒng)來實(shí)現(xiàn)。作為一個(gè)實(shí)例,能夠并行執(zhí)行多個(gè) 事務(wù)的嵌入處理器可能實(shí)現(xiàn)虛擬化事務(wù)存儲(chǔ)器。
來看圖2a,說明多核心處理器200的一個(gè)實(shí)施例。在這里,處理 器200包括四個(gè)核心、即核心205-208,但可采用其它任何數(shù)量的核 心。在一個(gè)實(shí)施例中,存儲(chǔ)器210是高速緩沖存儲(chǔ)器。在這里,存儲(chǔ) 器210表示為處于核心205-208的功能框的外部。在一個(gè)實(shí)施例中, 存儲(chǔ)器210是共享高速緩存,例如二級(jí)或其它高級(jí)高速緩存。但是, 在一個(gè)實(shí)施例中,功能塊205-208表示核心205-208的體系結(jié)構(gòu)狀態(tài), 以及存儲(chǔ)器210是分配給核心之一、如核心205或核心205-208/與其 關(guān)聯(lián)的一級(jí)或低級(jí)高速緩存。因此,所示的存儲(chǔ)器210可能是諸如圖1 所示的存儲(chǔ)器103之類的核心中的低級(jí)高速緩存、諸如圖1所示的高 速緩存145之類的高級(jí)高速緩存、或者諸如以上所述的寄存器集合的 實(shí)例的其它存儲(chǔ)元件。
各核心包括寄存器,例如寄存器230、 235、 240和245。在一個(gè) 實(shí)施例中,寄存器230、 235、 240和245是機(jī)器特定寄存器(MSR)。 然而,寄存器230、 235、 240和245可以是處理器200中的任何寄存 器,例如作為各核心的體系結(jié)構(gòu)狀態(tài)寄存器集合的一部分的寄存器。
寄存器中的每個(gè)包括事務(wù)溢出標(biāo)記標(biāo)記231、 236、 241和246。 如上所述,在溢出事件時(shí),設(shè)置事務(wù)溢出標(biāo)記。溢出標(biāo)記通過硬件、 軟件、固件或它們的任何組合來設(shè)置。在一個(gè)實(shí)施例中,溢出標(biāo)記為 一位,它可能具有兩種邏輯狀態(tài)。但是,溢出標(biāo)記可能是任何數(shù)量的 位或者是標(biāo)識(shí)存儲(chǔ)器已經(jīng)溢出的時(shí)間的狀態(tài)的其它表示。
例如,如果作為在核心205上執(zhí)行的事務(wù)的一部分的操作使高速 緩存210溢出,則被調(diào)用以處理溢出中斷的諸如邏輯之類的硬件或者 諸如用戶處理機(jī)之類的軟件設(shè)置標(biāo)記231。在作為缺省狀態(tài)的第一邏 輯狀態(tài)中,核心205采用存儲(chǔ)器210執(zhí)行事務(wù)。常規(guī)逐出、訪問跟蹤、 沖突檢查和驗(yàn)證采用高速緩存210來完成,它包括塊215、 220和225 以及對(duì)應(yīng)的字段216、 221和226。但是,當(dāng)標(biāo)記231設(shè)置為第二狀態(tài) 時(shí),高速緩存210被擴(kuò)充。根據(jù)所設(shè)置的一個(gè)標(biāo)記、如標(biāo)記231,也 可設(shè)置其余的標(biāo)記236、 241和246。
例如,在核心205-208之間發(fā)送的協(xié)議消息根據(jù)所設(shè)置的一個(gè)溢 出位來設(shè)置其它標(biāo)記。作為一個(gè)實(shí)例,假定溢出標(biāo)記231根據(jù)在存儲(chǔ) 器210中發(fā)生的溢出事件來設(shè)置,在本例中,存儲(chǔ)器210是核心205 中的一級(jí)數(shù)據(jù)高速緩存。在一個(gè)實(shí)施例中,在設(shè)置標(biāo)記231之后,廣 播消息在總線互連核心205-208上發(fā)送,以便設(shè)置標(biāo)記236、 241和 246。在核心205-208以點(diǎn)到點(diǎn)、環(huán)形或其它格式連接的另 一個(gè)實(shí)施例 中,來自核心205的消息被發(fā)送給各核心或者逐個(gè)核心轉(zhuǎn)發(fā),以便設(shè) 置標(biāo)記236、 241和246。注意,類似的消息傳遞等等可采用多處理器 格式來進(jìn)行,以便確保在多個(gè)物理處理器之間設(shè)置標(biāo)記,下面進(jìn)行論 述。當(dāng)設(shè)置了核心205-208中的標(biāo)記時(shí),通知后續(xù)事務(wù)執(zhí)行,以便針 對(duì)訪問跟蹤、沖突檢查和/或驗(yàn)證來檢查虛擬/擴(kuò)充存儲(chǔ)器。
前面的論述包括其中包含多個(gè)核心的單個(gè)物理處理器200。但是, 當(dāng)核心205-208是在系統(tǒng)中分離的物理處理器時(shí),采用類似的配置、
協(xié)議、硬件和軟件。在這種情況中,各處理器具有溢出寄存器,例如
具有其相應(yīng)溢出標(biāo)記的寄存器230、 235、 240和245。在設(shè)置一個(gè)溢 出標(biāo)記時(shí),也可通過在處理器之間的互連上的協(xié)議通信的類似方式來 設(shè)置其余標(biāo)記。在這里,廣播總、線或點(diǎn)到點(diǎn)互連上的通信的交換傳遞 設(shè)置為表示已發(fā)生溢出事件的值的溢出標(biāo)記的值。
隨后參照圖2b,說明具有溢出標(biāo)記的多核心處理器的另一個(gè)實(shí)施 例。與圖2a相比,不是各核心205-208包括溢出寄存器和溢出標(biāo)記, 而是在處理器200中存在單個(gè)溢出寄存器250和溢出標(biāo)記251。因此, 在溢出事件時(shí),標(biāo)記251被設(shè)置,并且對(duì)于核心205-208中的每個(gè)是 全局可見的。因此,如果設(shè)置了標(biāo)記251,則訪問跟蹤、驗(yàn)證、沖突 檢查和其它事務(wù)執(zhí)行操作采用全局溢出表來執(zhí)行。
作為一個(gè)說明性實(shí)例,假定存儲(chǔ)器210在事務(wù)執(zhí)行期間已經(jīng)溢 出,因而設(shè)置了寄存器250中的溢出位251。另外,已經(jīng)采用虛擬化 事務(wù)存儲(chǔ)器來跟蹤后續(xù)操作。如果在提交事務(wù)之前只有存儲(chǔ)器210被 檢查是否有沖突或者用于驗(yàn)證,則溢出存儲(chǔ)器跟蹤的沖突/訪問不會(huì)被 發(fā)現(xiàn)。但是,如果沖突檢查和驗(yàn)證采用溢出存儲(chǔ)器來進(jìn)行,則可檢測 到?jīng)_突,并且事務(wù)被中止而不是提交有沖突的事務(wù)。
如上所述,在設(shè)置當(dāng)前未設(shè)置的溢出標(biāo)記時(shí),如果仍未分配空間, 則請求/分配用于全局溢出表的空間。相反,當(dāng)事務(wù)^皮提交或中止時(shí), 對(duì)應(yīng)于事務(wù)的全局溢出表中的條目被釋放。在一個(gè)實(shí)施例中,釋放條 目包括清除條目中的訪問跟蹤狀態(tài)或其它字段。在另一個(gè)實(shí)施例中, 釋放條目包括從全局溢出表中刪除該條目。當(dāng)溢出表中的最后條目被 釋放時(shí),全局溢出位重新清除到缺省狀態(tài)。實(shí)質(zhì)上,釋放全局溢出表 中的最后條目表示任何未決事務(wù)適合高速緩存210,以及溢出存儲(chǔ)器 當(dāng)前沒有用于事務(wù)執(zhí)行。圖3-5更詳細(xì)地論述溢出存儲(chǔ)器、具體來說 為全局溢出表。
再來看圖3,說明包括耦合到高級(jí)存儲(chǔ)器的多個(gè)核心的處理器的 一個(gè)實(shí)施例。存儲(chǔ)器310包括行315、 320和325。訪問跟蹤字段316、 321和326分別對(duì)應(yīng)于行315、 320和325。訪問字段中的每個(gè)將跟蹤 對(duì)存儲(chǔ)器310中它們的對(duì)應(yīng)行的訪問。處理器300還包括核心305-308。注意,存儲(chǔ)器310可以是核心305-308中的任何核心中的低級(jí)高 速緩存、核心305-308共享的高級(jí)高速緩存或者在處理器中將用作事 務(wù)存儲(chǔ)器的其它任何已知或者可用的存儲(chǔ)器。各核心包括存儲(chǔ)全局溢 出表的基址的寄存器,諸如寄存器330、 335、 340和345。當(dāng)采用存 儲(chǔ)器310執(zhí)行事務(wù)時(shí),基址331、 336、 341和346可能沒有存儲(chǔ)全局 溢出表的基址,因?yàn)榭赡軟]有分配全局溢出表。
但是,在使存儲(chǔ)器310溢出時(shí),分配溢出表355。在一個(gè)實(shí)施例 中,當(dāng)仍未分配溢出表355時(shí),根據(jù)使存儲(chǔ)器310溢出的操作產(chǎn)生中 斷或頁面錯(cuò)誤。用戶處理機(jī)或內(nèi)核級(jí)軟件根據(jù)中斷或頁面錯(cuò)誤向溢出 表355分配高級(jí)存儲(chǔ)器350的范圍。作為另一個(gè)實(shí)例,全局溢出表根 據(jù)所設(shè)置的溢出標(biāo)記來分配。在這里,當(dāng)設(shè)置了溢出標(biāo)記時(shí),嘗試對(duì) 全局溢出表的寫入。如果寫入失敗,則分配全局溢出表中的新頁面。
高級(jí)存儲(chǔ)器350可以是高級(jí)高速緩存、僅與處理器300關(guān)聯(lián)的存 儲(chǔ)器、包括處理器300的系統(tǒng)共享的系統(tǒng)存儲(chǔ)器或者比存儲(chǔ)器310更 高級(jí)的其它任何存儲(chǔ)器。分配給溢出表355的存儲(chǔ)器350的第一范圍 稱作溢出表355的第一頁面。參照圖5更詳細(xì)地論述多頁面溢出表。
在向溢出表355分配空間時(shí)或者在向溢出表355分配存儲(chǔ)器之 后,溢出表355的基址被寫入寄存器330、 335、 340和/或345。在一 個(gè)實(shí)施例中,內(nèi)核級(jí)代碼把全局溢出表的基址寫入基址寄存器330、 335、 340和345中的每一個(gè)?;蛘撸布?、軟件或固件把基址寫A^ 址寄存器330、 335、 340或345之一,以及那個(gè)基址通過核心305-308 之間的消息傳遞協(xié)議傳播到其余的基址寄存器。
如圖所示,溢出表355包括條目360、 365和370。條目360、 365 和370包括地址字段361、 366和371以及事務(wù)狀態(tài)信息(T.S.I)字段 362、 367和372。作為溢出表355的操作的一個(gè)非常簡化的實(shí)例,假 定來自第一事務(wù)的操作已經(jīng)訪問行315、 320和325,如對(duì)應(yīng)的訪問字
段316、 321和326的狀態(tài)所表示。在第一事務(wù)未決期間,行315被選 擇用于逐出。由于訪問跟蹤字段316的狀態(tài)表示先前在仍然未決的第 一事務(wù)期間訪問了行315,發(fā)生溢出事件。如上所述,可能設(shè)置溢出 標(biāo)記/位。另外,如果沒有分配頁面或者需要附加頁面,則向溢出表355 分配存儲(chǔ)器350中的頁面。
如果不需要頁面分配,則全局溢出表的當(dāng)前基址由寄存器330、 335、 340或345存儲(chǔ)?;蛘?,在初始分配時(shí),溢出表355的基址被寫 入/傳播到寄存器330、 335、 340或345。根據(jù)溢出事件,條目360被 寫入溢出表355。條目360包括存儲(chǔ)與行315關(guān)聯(lián)的地址的表示的地 址字段361。
在一個(gè)實(shí)施例中,與行315關(guān)聯(lián)的地址是行315中存儲(chǔ)的元素的 位置的物理地址。例如,物理地址是元素存儲(chǔ)在其中的主機(jī)存儲(chǔ)裝置、 如系統(tǒng)存儲(chǔ)器中的位置的物理地址的表示。通過把物理地址存儲(chǔ)在溢 出表355中,溢出表可能檢測到核心305-308進(jìn)行的所有訪問之間的 沖突。
相反,當(dāng)虛擬存儲(chǔ)器地址存^ft在地址字段361、 366和367時(shí),具 有不同虛擬存儲(chǔ)器基址和偏移的處理器或核心具有存儲(chǔ)器的不同邏輯 視圖。因此,對(duì)相同物理存儲(chǔ)器位置的訪問可能不會(huì)凈皮檢測為沖突, 因?yàn)樵诤诵闹g可能以不同方式看待物理存儲(chǔ)器位置的虛擬存儲(chǔ)器地 址。但是,如果虛擬地址存儲(chǔ)器位置結(jié)合OS控制字段中的上下文標(biāo) 識(shí)符存儲(chǔ)在溢出表355中,則全局沖突可能是可發(fā)現(xiàn)的。
與行315關(guān)聯(lián)的地址的表示的其它實(shí)施例包括部分或整個(gè)虛擬存 儲(chǔ)器地址、高速緩存行地址或其它物理地址。地址的表示包括十進(jìn)制、 十六進(jìn)制、二進(jìn)制、散列值或者地址的所有或任何部分的其它表示/處 理。在一個(gè)實(shí)施例中,作為地址的一部分的標(biāo)簽值是地址的表示。
除了地址字段361之外,條目360還包括事務(wù)狀態(tài)信息362。在 一個(gè)實(shí)施例中,T.S.I.字段362將存儲(chǔ)訪問跟蹤字段316的狀態(tài)。例如, 如杲訪問跟蹤字段316包括兩個(gè)位、即事務(wù)寫入位和事務(wù)讀取位,以
便跟蹤分別對(duì)行315的寫入和讀取,則事務(wù)寫入位和事務(wù)讀取位的邏 輯狀態(tài)存儲(chǔ)到T.S.I.字段362。但是,任何事務(wù)相關(guān)信息可存儲(chǔ)在T.S丄 362中。參照圖4a-4b論述溢出表355和溢出表355中可能存儲(chǔ)的其它 字段。
圖4a說明全局溢出表的一個(gè)實(shí)施例。全局溢出表400包括條目 405、 410和415,它們對(duì)應(yīng)于在事務(wù)執(zhí)行期間已經(jīng)使存儲(chǔ)器溢出的操 作。作為一個(gè)實(shí)例,執(zhí)行事務(wù)中的操作使存儲(chǔ)器溢出。條目405被寫 入全局溢出表400。條目405包4舌物理地址字段406。在一個(gè)實(shí)施例中,
行關(guān)聯(lián)的物理地址。
作為 一個(gè)說明性實(shí)例,假定作為事務(wù)的一部分所執(zhí)行的第一操作 引用具有物理地址ABCD的系統(tǒng)存儲(chǔ)器位置。根據(jù)該操作,高速緩存 控制器選擇通過物理地址的一部分ABC映射到高速緩存行供逐出的 高速緩存行,從而產(chǎn)生溢出事件。注意,ABC的映射還可包括到與地 址ABC關(guān)聯(lián)的虛擬存儲(chǔ)器地址的轉(zhuǎn)換。由于發(fā)生了溢出事件,因此與 操作和/或高速緩存行關(guān)聯(lián)的條目405被寫入溢出表400。在這個(gè)實(shí)例 中,條目405包括物理地址字段406中的物理地址ABCD的表示。由 于許多高速緩存組織、如直接映射和集合關(guān)聯(lián)組織把多個(gè)系統(tǒng)存儲(chǔ)器 位置映射到單個(gè)高速緩存行或高速緩存行集合,因此高速緩存行地址 可能引用多個(gè)系統(tǒng)存儲(chǔ)器位置,例如ABCA、 ABCB、 ABCC、 ABCE 等。因此,通過把物理地址ABCD或者它的某種表示存儲(chǔ)在物理地址 406中,可能易于檢測事務(wù)沖突。
除了物理地址字段406之外,其它字段包括數(shù)據(jù)字段407、事務(wù) 狀態(tài)字段408和操作系統(tǒng)控制字段409。數(shù)據(jù)字段407將存儲(chǔ)元素, 諸如與使存儲(chǔ)器溢出的操作關(guān)聯(lián)的指令、操作數(shù)、數(shù)據(jù)或者其它邏輯 信息。注意,各存儲(chǔ)器行可能能夠存儲(chǔ)多個(gè)數(shù)據(jù)元素、指令或其它邏 輯信息。在一個(gè)實(shí)施例中,數(shù)據(jù)字段407將把一個(gè)或多個(gè)數(shù)據(jù)元素存 儲(chǔ)在將^l逐出的存儲(chǔ)器行中。在這里,可能可選地使用數(shù)據(jù)字段407。
例如,在溢出事件時(shí),元素沒有存儲(chǔ)在條目405中,除非要被逐出的 存儲(chǔ)器行處于修改狀態(tài)或者其它高速緩存相干狀態(tài)。另外,對(duì)于指令、 操作數(shù)、數(shù)據(jù)元素和其它邏輯信息,數(shù)據(jù)字段407還可包括其它信息、 如存儲(chǔ)器行的大小。事務(wù)狀態(tài)字段408將存儲(chǔ)與使事務(wù)存儲(chǔ)器溢出的操作關(guān)聯(lián)的事務(wù) 狀態(tài)信息。在一個(gè)實(shí)施例中,高速緩存行的附加位是用于存儲(chǔ)與高速 緩存行的訪問相關(guān)的事務(wù)狀態(tài)信息的訪問跟蹤字段。在這里,附加位 的邏輯狀態(tài)存儲(chǔ)在事務(wù)狀態(tài)字段408中。實(shí)質(zhì)上,被逐出的存儲(chǔ)器行 4皮虛擬化并與物理地址和事務(wù)狀態(tài)信息一起存儲(chǔ)在高級(jí)存儲(chǔ)器中。
此外,條目405包括操作系統(tǒng)控制字段409。在一個(gè)實(shí)施例中, OS控制字段409將跟蹤執(zhí)行上下文。例如,OS控制字段409是存儲(chǔ) 上下文ID的表示以便跟蹤與條目405關(guān)聯(lián)的執(zhí)行上下文的64位字 段。多個(gè)條目、如條目410和415包括類似字段,例如物理地址字段 411和416、數(shù)據(jù)字段412和413、事務(wù)狀態(tài)字段413和418以及OS 字段414和419。
隨后參照圖4b,說明存儲(chǔ)事務(wù)狀態(tài)信息的溢出表的一個(gè)具體說明 性實(shí)施例。溢出表400包括與參照圖4a所述相似的字段。相比之下, 條目405、 410和415包括事務(wù)讀取(Tr)字段451、 456和461以及事務(wù) 寫入(Tw)字段452、 457和462。在一個(gè)實(shí)施例中,Tr字段451、 456 和461以及Tw字段452、 457和462將分別存儲(chǔ)讀取位和寫入位的狀 態(tài)。在一個(gè)實(shí)例中,讀取位和寫入位將分別跟蹤對(duì)關(guān)聯(lián)高速緩存行的 讀取和寫入。在把條目405寫入溢出表400時(shí),讀取位的狀態(tài)凈皮存儲(chǔ) 在Tr字段451中,以及寫入位的狀態(tài)被存儲(chǔ)在Tw字段452中。因此, 通過在Tr和Tw字段中表明在事務(wù)未決期間已經(jīng)訪問哪些條目,事務(wù) 的狀態(tài)被存儲(chǔ)到溢出表400 。
來看圖5,說明多頁面溢出表的一個(gè)實(shí)施例。在這里,存儲(chǔ)在存 儲(chǔ)器500中的溢出表505包括多個(gè)頁面,例如頁面510、 515和520。 在一個(gè)實(shí)施例中,處理器中的寄存器存儲(chǔ)第一頁面510的基址。在寫
入表505時(shí),偏移、基址、物理地址、虛擬地址或者它們的組合引用 表505中的位置。
頁面510、 515和520可能在溢出表505中是鄰接的,但不要求是 鄰接的。實(shí)際上,在一個(gè)實(shí)施例中,頁面510、 515和520是頁面的鏈 表。在這里,前一頁面、如頁面510把下一頁面515的基址存儲(chǔ)在某 個(gè)條目、如條目511中。
溢出表505中的多個(gè)頁面最初可能不存在。例如,在沒有發(fā)生溢 出時(shí),可能沒有向溢出表505分配空間。在使未示出的另一個(gè)存儲(chǔ)器 溢出時(shí),則向溢出表505分配頁面510。頁面510中的條目隨著溢出
狀態(tài)中事務(wù)執(zhí)行延續(xù)被寫入。
在一個(gè)實(shí)施例中,當(dāng)頁面510已滿時(shí),對(duì)溢出表505的嘗試寫入 導(dǎo)致頁面錯(cuò)誤,因?yàn)樵陧撁?10中沒有更多空間。在這里,分配附加 的或下一頁面515。條目的前一次嘗試寫入通過把條目寫入頁面515 來完成。另外,頁面515的基址存儲(chǔ)在頁面510中的字段511中,以 便形成溢出表505的頁面的鏈表。類似地,在分配了頁面520時(shí),頁 面515把頁面520的基址存儲(chǔ)在字段516中。
隨后參照圖6,說明能夠虛擬化事務(wù)存儲(chǔ)器的系統(tǒng)的一個(gè)實(shí)施例。 微處理器600包括為高速緩沖存儲(chǔ)器的事務(wù)存儲(chǔ)器610。在一個(gè)實(shí)施 例中,TM 610是核心630中的一級(jí)高速緩存,與圖l中的高速緩存 103的說明相似。類似地,TM610可以是核心635中的低級(jí)高速緩存。 在該備選方案中,高速緩存610是處理器600中的高級(jí)高速緩存或者 存儲(chǔ)器的可用段。高速緩存610包括行615、 620和625。與高速緩存 行615、 620和625關(guān)聯(lián)的附加字段是事務(wù)讀取(Tr)字段616、 621和 626以及事務(wù)寫入(Tw)字段617、 622和627。作為一個(gè)實(shí)例,Tr字段 616和Tw字段617對(duì)應(yīng)于高速緩存行615,并且將跟蹤對(duì)高速緩存行 615的訪問。
在一個(gè)實(shí)施例中,Tr字段616和Tw字段617均為高速緩存行615 中的單個(gè)位。缺省情況下,Tr字段616和Tw字段617^皮設(shè)置為缺省
值、例如邏輯一。在未決事務(wù)的執(zhí)行期間從行615讀取或加載時(shí),Tr 字段616設(shè)置為第二值、例如邏輯零,以表示在未決事務(wù)的執(zhí)行期間 發(fā)生的讀取/加載。相應(yīng)地,如杲對(duì)行615的寫入或存儲(chǔ)在未決事務(wù)期 間發(fā)生,則Tw字段617設(shè)置為第二值,以表示在未決事務(wù)的執(zhí)行期 間發(fā)生的寫入或存儲(chǔ)。在中止或提交事務(wù)時(shí),與待提交或中止的事務(wù) 關(guān)聯(lián)的所有Tr字段和Tw字段;波重置為缺省狀態(tài),以便實(shí)現(xiàn)對(duì)于對(duì)應(yīng) 高速緩存行的訪問的后續(xù)跟蹤。
微處理器600還包括執(zhí)行事務(wù)的核心630和核心635。核心630 包括具有溢出標(biāo)記632和基址633的寄存器631。此外,在TM610處 于核心630中的實(shí)施例中,TM610是核心630中的一級(jí)高速^_存或者 可用存儲(chǔ)區(qū)。類似地,核心635包括溢出標(biāo)記637、基址638和可能 的TM610,如上所述。雖然寄存器631和636在圖6中表示為分離的 寄存器,但是,用于存儲(chǔ)溢出標(biāo)記和基址的其它配置是可行的。例如, 微處理器600上的單個(gè)寄存器存儲(chǔ)溢出標(biāo)記和基址,以及核心630和 635全局查看寄存器?;蛘?,微處理器400或核心630和635上的分 離寄存器包括分離的溢出寄存器和分離的基址寄存器。
初始事務(wù)執(zhí)行采用事務(wù)存儲(chǔ)器610來執(zhí)行事務(wù)。訪問的跟蹤、沖 突檢查、驗(yàn)證和其它事務(wù)執(zhí)行技術(shù)采用Tr和Tw字段來執(zhí)行。但是, 在使事務(wù)存儲(chǔ)器610溢出時(shí),事務(wù)存儲(chǔ)器610被擴(kuò)充到存儲(chǔ)器650。 如圖所示,存儲(chǔ)器650是專用于處理器600或者在系統(tǒng)中共享的系統(tǒng) 存儲(chǔ)器。但是,存儲(chǔ)器650還可能是處理器600上的存儲(chǔ)器、如二級(jí) 高速緩存,如上所述。在這里,存儲(chǔ)在存儲(chǔ)器650中的溢出表655用 來擴(kuò)充事務(wù)存儲(chǔ)器610。到高級(jí)存儲(chǔ)器的擴(kuò)充也可能稱作虛擬化事務(wù) 存儲(chǔ)器或者擴(kuò)充到虛擬存儲(chǔ)器。基址字段633和638將把全局溢出表 655的基址存儲(chǔ)在系統(tǒng)存儲(chǔ)器650中。在溢出表655是多頁面溢出表 的一個(gè)實(shí)施例中,先前頁面、如頁面660把溢出表655的下一頁面、 即頁面665的下一個(gè)基址存儲(chǔ)在某個(gè)字段、如字段661中。通過把下 一頁面地址存儲(chǔ)在先前頁面中,創(chuàng)建存儲(chǔ)器650中的頁面的鏈表,從
而形成多頁面溢出表655。
為了說明虛擬化事務(wù)存儲(chǔ)器的系統(tǒng)的一個(gè)實(shí)施例的操作,論述以 下實(shí)例。第一事務(wù)從行615加栽、從行625加載,執(zhí)行計(jì)算操作,把 結(jié)果回寫到行620中,然后在嘗試驗(yàn)證/提交之前執(zhí)行其它各種操作。 在從行615加載時(shí),Tr字段616從缺省邏輯狀態(tài)1設(shè)置為邏輯值0, 以表示在仍然未決的第一事務(wù)的^L行期間發(fā)生了從行615的加載。類 似地,Tr字段626設(shè)置為邏輯值0,以表示從行625的加載。當(dāng)寫入 行620發(fā)生時(shí),Tw字段622設(shè)置為邏輯0,以表示在第一事務(wù)未決期 間發(fā)生了對(duì)行620的寫入。
現(xiàn)在假定第二事務(wù)包括未命中高速緩存行615的操作,并且通過 替換算法、如最近最少使用算法,高速緩存行615被選擇供逐出,同 時(shí)第 一事務(wù)仍然是未決的。高速緩存控制器或未示出的其它邏輯檢測 行615的逐出,這產(chǎn)生溢出事件,因?yàn)門r字段616設(shè)置為邏輯零,表 示在仍然未決的第一事務(wù)的執(zhí)^"期間從行615讀取。在一個(gè)實(shí)施例 中,邏輯根據(jù)溢出事件設(shè)置溢出標(biāo)記、如溢出標(biāo)記632。在另一個(gè)實(shí) 施例中,當(dāng)高速緩存行615被選擇供逐出、其中Tr字段616設(shè)置為邏 輯零時(shí),產(chǎn)生中斷。溢出標(biāo)記632則由處理機(jī)根據(jù)中斷的處理來設(shè)置。 核心630與636之間的通信協(xié)議用來設(shè)置溢出標(biāo)記637,因此,兩個(gè) 核心得到關(guān)于發(fā)生了溢出事件并且事務(wù)存儲(chǔ)器610將被虛擬化的通 知。
在逐出高速緩存行615之前,事務(wù)存儲(chǔ)器610凈皮擴(kuò)充到存儲(chǔ)器 650。在這里,事務(wù)狀態(tài)信息存儲(chǔ)在溢出表655中。最初,如果沒有分 配溢出表655,則產(chǎn)生頁面錯(cuò)誤、中斷或者對(duì)內(nèi)核級(jí)程序的其它通信, 以便請求分配溢出表655。然后,在存儲(chǔ)器650中分配溢出表655的 頁面660。溢出表655、即頁面660的基址被寫入基址字段633和638。 如上所述,基址可被寫入一個(gè)核心、如核心635,并且通過消息傳遞 協(xié)議,溢出表655的基址被寫入另一個(gè)基址字段633。
如果已經(jīng)分配溢出表655的頁面660,則條目^^皮寫入頁面660。在
一個(gè)實(shí)施例中,條目包括與行615中存儲(chǔ)的元素關(guān)聯(lián)的物理地址的表 示。也可以說,物理地址也與高速緩存行615以及使事務(wù)存儲(chǔ)器610 溢出的操作關(guān)聯(lián)。條目還包括事務(wù)狀態(tài)信息。在這里,條目包括分別 為邏輯0和邏輯1的Tr字段616和Tw字段617的當(dāng)前狀態(tài)。
條目中的其它可能的字段包括存儲(chǔ)操作數(shù)、指令或存儲(chǔ)在高速緩 存行615中的其它信息的元素字段以及存儲(chǔ)OS控制信息、如上下文 標(biāo)識(shí)符的操作系統(tǒng)控制字段。元素字段和/或元素大小字段可根據(jù)高速 緩存行615的高速緩存相干狀態(tài)來可選地使用。例如,如果高速緩存 行是MESI協(xié)議中的修改狀態(tài),則元素存儲(chǔ)在該條目中。或者,如果 元素處于獨(dú)占、共享或無效狀態(tài),則元素不存儲(chǔ)在該條目中。
假定對(duì)頁面660的條目的寫入因頁面660充滿條目而導(dǎo)致頁面錯(cuò) 誤,則對(duì)于附加頁面進(jìn)行對(duì)內(nèi)核級(jí)程序、如操作系統(tǒng)的請求。向溢出 表655分配附加頁面665。頁面665的基址存儲(chǔ)在前一頁面660中的 字段661中,以便形成頁面的鏈表。該條目則被寫入新增頁面667。
在另一個(gè)實(shí)施例中,與第一事務(wù)關(guān)聯(lián)的其它條目、如基于從行625 的加載以及對(duì)行620的寫入的條目根據(jù)溢出被寫入溢出表655,以便 虛擬化整個(gè)第一事務(wù)。但是,不需要把事務(wù)所訪問的所有行復(fù)制到溢 出表。實(shí)際上,訪問跟蹤、驗(yàn)證、沖突檢查和其它事務(wù)執(zhí)行技術(shù)可在 事務(wù)存儲(chǔ)器610以及存儲(chǔ)器650中執(zhí)行。
例如,如果第二事務(wù)寫入與行625中當(dāng)前存儲(chǔ)的元素相同的物理 存儲(chǔ)器位置,則可檢測到第一與第二事務(wù)之間的沖突,因?yàn)門r626表 示從行625加載的第一事務(wù)。因此,產(chǎn)生中斷,并且用戶處理機(jī)/中止 處理機(jī)發(fā)起第一或第二事務(wù)的中止。另外,如果笫三事務(wù)將寫入作為 與行615關(guān)聯(lián)的頁面660中的條目的一部分的物理地址。溢出表用來 檢測訪問與發(fā)起類似中斷/中止處理機(jī)例程之間的沖突。
如果在第 一事物的執(zhí)行期間沒有檢測到無效訪問/沖突或者驗(yàn)證 成功,則提交第一事務(wù)。與第一事務(wù)關(guān)聯(lián)的溢出表655中的所有條目 被釋放。在這里,釋放條目包括從溢出表655中刪除該條目?;蛘?,
釋放條目包括重置條目中的Tr字段和Tw字段。當(dāng)溢出表655中的最 后條目被釋放時(shí),溢出標(biāo)記632和637被重置為缺省狀態(tài),從而表明 事務(wù)存儲(chǔ)器610當(dāng)前沒有溢出。溢出表655可以可選地^L取消分配, 以便對(duì)存儲(chǔ)器650進(jìn)行有效利用。
來看圖7,說明虛擬化事務(wù)存儲(chǔ)器的方法的流程圖的一個(gè)實(shí)施例。 在流程705中,檢測到與將作為事務(wù)的一部分被執(zhí)行的操作關(guān)聯(lián)的溢 出事件。操作引用事務(wù)存儲(chǔ)器中的存儲(chǔ)器行。在一個(gè)實(shí)施例中,存儲(chǔ) 器是物理處理器上的多個(gè)核心中的一個(gè)核心中的低級(jí)數(shù)據(jù)高速緩存。 在這里,第一核心包括事務(wù)存儲(chǔ)器,而其它核心通過能夠窺探/請求低 級(jí)高速緩存中存儲(chǔ)的元素來共享對(duì)存儲(chǔ)器的訪問?;蛘撸聞?wù)存儲(chǔ)器 是在多個(gè)核心之間直接共享的二級(jí)或高級(jí)高速緩存。
引用存儲(chǔ)器行的地址包括對(duì)地址的引用,它通過轉(zhuǎn)換、處理或其 它計(jì)算,引用與存儲(chǔ)器行關(guān)聯(lián)的地址。例如,操作引用虛擬存儲(chǔ)器地 址,它在被轉(zhuǎn)換時(shí),引用系統(tǒng)存儲(chǔ)器中的物理位置。高速緩存往往通 過地址的一部分或標(biāo)簽值來索引。因此,對(duì)高速緩存的共享行進(jìn)行索 引的地址的標(biāo)簽值通過被轉(zhuǎn)換和/或處理為標(biāo)簽值的虛擬存儲(chǔ)器地址 來引用。
在一個(gè)實(shí)施例中,如果未決事務(wù)先前訪問了存儲(chǔ)器中的行,則溢 出事件包括在操作所引用的存儲(chǔ)器中逐出該行或選擇該行供逐出。或 者,溢出的任何預(yù)測或?qū)е乱绯龅氖录部梢暈橐绯鍪录?br>
在流程710中,根據(jù)溢出事件來設(shè)置溢出位/標(biāo)記。在一個(gè)實(shí)施例 中,當(dāng)存儲(chǔ)器溢出時(shí),訪問在調(diào)度成執(zhí)行事務(wù)的核心或處理器中存儲(chǔ) 溢出位/標(biāo)記的寄存器,以便設(shè)置溢出標(biāo)記。寄存器中的單個(gè)溢出位可 由所有核心或處理器全局查看,以便確保各核心都了解存儲(chǔ)器已經(jīng)溢 出并且已經(jīng)虛擬化?;蛘撸骱诵幕蛱幚砥靼ㄍㄟ^消息傳遞協(xié)議設(shè) 置的溢出位,以便通知各處理器關(guān)于溢出和虛擬化。
如果設(shè)置了溢出位,則存儲(chǔ)器4皮虛擬化。在一個(gè)實(shí)施例中,虛擬 化存儲(chǔ)器包括在全局溢出表中保存與存儲(chǔ)器行關(guān)聯(lián)的事務(wù)狀態(tài)信息。 實(shí)質(zhì)上,涉及存儲(chǔ)器的溢出的存儲(chǔ)器的行的表示被虛擬化、擴(kuò)充和/或 在高級(jí)存儲(chǔ)器中部分復(fù)制。在一個(gè)實(shí)施例中,與操作所引用的存儲(chǔ)器 的行關(guān)聯(lián)的訪問跟蹤字段的狀態(tài)和物理地址存儲(chǔ)在高級(jí)存儲(chǔ)器中的全 局溢出表中。通過跟蹤訪問、檢測沖突、執(zhí)行事務(wù)驗(yàn)證等,以與存儲(chǔ) 器相同的方式使用高級(jí)存儲(chǔ)器中的條目。
參照圖8,說明虛擬化事務(wù)存儲(chǔ)器的系統(tǒng)的流程圖的一個(gè)說明性 實(shí)施例。在流程805,執(zhí)行事務(wù)。事務(wù)包括一組的多個(gè)操作或指令。 如上所述,事務(wù)以軟件、通過硬件或者通過它們的組合來劃分。操作 通常引用虛擬存儲(chǔ)器地址,它在^^皮轉(zhuǎn)換時(shí),引用系統(tǒng)存儲(chǔ)器中的線性 和/或物理地址。在事務(wù)執(zhí)行期間,在處理器或核心之間共享的事務(wù)存 儲(chǔ)器、如高速緩存用來跟蹤訪問,檢測沖突,執(zhí)行驗(yàn)證等。在一個(gè)實(shí) 施例中,各高速緩存行對(duì)應(yīng)于用于執(zhí)行上述操作的訪問字段。
在流程810,高速緩存中的高速緩存行被選擇以便逐出。在這里, 嘗試訪問存儲(chǔ)器位置的另 一個(gè)事務(wù)或操作引起待逐出的高速緩存行的 選擇。任何已知或者可用的高速緩存替換算法可由高速緩存控制器或 其它邏輯用來選擇供逐出的行。
然后,在判定流程815,確定先前在事務(wù)未決期間是否訪問了所 選高速緩存行。在這里,檢查訪問跟蹤字段,以便確定是否發(fā)生了對(duì) 所選高速緩存行的訪問。如果沒有跟蹤到訪問,則該高速緩存行在流 程820中被逐出。如果逐出是事務(wù)中的操作的結(jié)果,則可跟蹤逐出/訪 問。但是,如果在仍然未決的事務(wù)的執(zhí)行期間跟蹤到訪問,則在流程 825,確定當(dāng)前是否設(shè)置了全局溢出位。
在流程830,如果當(dāng)前沒有設(shè)置全局溢出位,則通過逐出在未決 事務(wù)的執(zhí)行期間被訪問的高速緩存行來設(shè)置全局溢出位,因?yàn)橐寻l(fā)生 高速緩存的溢出。注意,在一個(gè)備選實(shí)現(xiàn)中,流程825可在流程815、 820和830之前執(zhí)行,以及如果當(dāng)前設(shè)置了表明高速緩存已經(jīng)溢出的 全局溢出位,則流程815、 820和830可省略。實(shí)質(zhì)上,在備選實(shí)現(xiàn)中, 不需要檢測溢出事件,因?yàn)橐绯鑫灰呀?jīng)表示高速緩存溢出。
但是,回到所示流程圖,如果設(shè)置了全局溢出位,則在流程835, 確定是否分配了全局溢出表的第一頁面。在一個(gè)實(shí)施例中,確定是否 分配了全局溢出表的第 一頁面包《^舌與內(nèi)核級(jí)程序進(jìn)行通信以確定是否 分配了該頁面。如果沒有分配全局溢出表,則在流程840中分配第一 頁面。在這里,要求操作系統(tǒng)分配存儲(chǔ)器頁面的請求引起全局溢出表 的分配。在另一個(gè)實(shí)施例中,下面更詳細(xì)論述的流程855-870用來確 定是否分配了第一頁面并分配第一頁面。這個(gè)實(shí)施例包括嘗試采用基 址對(duì)全局溢出表進(jìn)行寫入,它在沒有分配該表時(shí)導(dǎo)致頁面錯(cuò)誤,然后 根據(jù)頁面錯(cuò)誤來分配頁面??傊?,在分配溢出表的初始頁面時(shí),溢出 表的基址被寫入執(zhí)行事務(wù)的處理器/核心中的寄存器。因此,后續(xù)寫入 可引用偏移或其它地址,它與被寫入寄存器的基址結(jié)合,引用條目的 正確物理存儲(chǔ)器位置。
在流程850,與高速緩存行關(guān)聯(lián)的條目被寫入全局溢出表。如上 所述,全局溢出表可能包括下列字段的任何組合地址;元素;高速 緩存行的大小;事務(wù)狀態(tài)信息;以及操作系統(tǒng)控制字段。
在流程855,確定在寫入時(shí)是否發(fā)生頁面錯(cuò)誤。如上所述,頁面 錯(cuò)誤可能是沒有溢出表的初始分配的結(jié)果或者溢出表當(dāng)前已滿。如果 寫入成功,則常規(guī)執(zhí)行、驗(yàn)證、訪問跟蹤、提交、中止等繼續(xù)返回到 流程805。但是,如果發(fā)生頁面4昔誤,表明在溢出表中需要更多空間, 則在流程860,為全局溢出表分配附加頁面。在流程870,附加頁面的 基址被寫入前一頁面。這形成鏈表類型的多頁面表。然后通過把條目 寫入新分配的附加頁面來完成嘗i式的寫入。
如上所述,對(duì)于較小的不太復(fù)雜的事務(wù)獲得采用本地事務(wù)存儲(chǔ)器 以硬件來執(zhí)行事務(wù)的好處。另外,當(dāng)所執(zhí)行的事務(wù)的數(shù)量以及那些事 務(wù)的復(fù)雜度增加時(shí),事務(wù)存儲(chǔ)器4皮虛擬化,以便在本地共享事務(wù)存儲(chǔ) 器的溢出時(shí)支持連續(xù)執(zhí)行。不是中止事務(wù)和浪費(fèi)執(zhí)行時(shí)間,而是事務(wù) 執(zhí)行、沖突檢查、驗(yàn)證和提交采用全局溢出表來完成,直到事務(wù)存儲(chǔ) 器不再溢出為止。全局溢出可能存儲(chǔ)物理地址,以便確保具有虛擬存 儲(chǔ)器的不同視圖的上下文之間的沖突被檢測。
以上闡述的方法、軟件、固件或代碼的實(shí)施例可經(jīng)由機(jī)器可訪問 或機(jī)器可讀媒體中存儲(chǔ)的、處理元件可執(zhí)行的指令或代碼來實(shí)現(xiàn)。機(jī) 器可訪問/可讀々某體包括以機(jī)器、如計(jì)算機(jī)或電子系統(tǒng)可讀形式提供(即
存儲(chǔ)和/或傳送)信息的任何機(jī)構(gòu)。例如,機(jī)器可訪問々某體包括隨機(jī)存 取存儲(chǔ)器(RAM),例如靜態(tài)RAM(SRAM)或動(dòng)態(tài)RAM(DRAM); ROM;磁或光存儲(chǔ)i^某體;閃速存儲(chǔ)裝置;電、光、聲或其它形式的傳 播信號(hào)(例如載波、紅外信號(hào)、數(shù)字信號(hào))等等。
在以上說明中,參照具體示范實(shí)施例提供詳細(xì)描述。但是顯然可 對(duì)其進(jìn)行各種修改及變更,而沒有背離所附權(quán)利要求闡述的本發(fā)明的 廣義精神和范圍。因此,說明書和附圖將被看作是說明性而不是限制 性的。此外,實(shí)施例及其它示范語言的上述使用不一定表示相同的實(shí) 施例或者相同的實(shí)例,而是可能表示不同和有區(qū)別的實(shí)施例以及可能 相同的實(shí)施例。
權(quán)利要求
1.一種裝置,包括執(zhí)行事務(wù)的執(zhí)行模塊;耦合到所述執(zhí)行模塊的第一存儲(chǔ)器,所述第一存儲(chǔ)器包括多個(gè)存儲(chǔ)器行,其中,所述多個(gè)存儲(chǔ)器行中的存儲(chǔ)器行與對(duì)應(yīng)的跟蹤字段關(guān)聯(lián),以便跟蹤所述事務(wù)執(zhí)行期間對(duì)所述存儲(chǔ)器行的訪問;以及溢出邏輯,在所述事務(wù)執(zhí)行期間,響應(yīng)與所述存儲(chǔ)器行關(guān)聯(lián)的溢出事件,支持所述第一存儲(chǔ)器到第二存儲(chǔ)器的擴(kuò)充。
2. 如權(quán)利要求l所述的裝置,其特征在于,所述第二存儲(chǔ)器響應(yīng) 所述溢出事件而存儲(chǔ)與所述存儲(chǔ)器行關(guān)聯(lián)的事務(wù)狀態(tài)信息。
3. 如權(quán)利要求2所述的裝置,其特征在于,所述溢出邏輯包括 存儲(chǔ)元件,存儲(chǔ)響應(yīng)所述溢出事件而要設(shè)置的溢出位; 基址存儲(chǔ)元件,在所述第二存儲(chǔ)器中存儲(chǔ)全局溢出表的基址的表示,其中,所述全局溢出表將存儲(chǔ)與所述存儲(chǔ)器行關(guān)聯(lián)的所述事務(wù)狀 態(tài)信息。
4. 如權(quán)利要求3所述的裝置,其特征在于,跟蹤在所述事務(wù)執(zhí)行 期間對(duì)所述存儲(chǔ)器行的訪問的所述對(duì)應(yīng)跟蹤字段包括跟蹤在所述事務(wù)執(zhí)行期間從所述存儲(chǔ)器行的加載的第一位; 跟蹤在所述事務(wù)執(zhí)行期間對(duì)所述存儲(chǔ)器行的存儲(chǔ)的第二位。
5. 如權(quán)利要求4所述的裝置,其特征在于,存儲(chǔ)與所述存儲(chǔ)器行關(guān)聯(lián)的所述事務(wù)狀態(tài)信息的所述全局溢出表包括:在所述溢出條目中存儲(chǔ)所述對(duì)應(yīng)跟蹤字段的第一位的狀態(tài)的事務(wù) 讀取狀態(tài)字段;以及在所述溢出條目中存儲(chǔ)所述對(duì)應(yīng)跟蹤字段的第二位的狀態(tài)的事務(wù) 寫入狀態(tài)字段。
6. 如權(quán)利要求5所述的裝置,其特征在于,所述第一存儲(chǔ)器是高 速緩沖存儲(chǔ)器,以及所述第二存儲(chǔ)器是在多個(gè)核心之間共享的高級(jí)存 儲(chǔ)器,以及如果設(shè)置了所述溢出位,則所述多個(gè)核心中的各核心在驗(yàn) 證期間檢查所述全局溢出表以查找沖突。
7. 如權(quán)利要求4所述的裝置,其特征在于,溢出事件包括,當(dāng)所 述第一位跟蹤到在所述事務(wù)執(zhí)行期間從所述存儲(chǔ)器行的先前加載時(shí)或 者所述第二位跟蹤到在所述事務(wù)執(zhí)行期間對(duì)所述存儲(chǔ)器行的先前存儲(chǔ) 時(shí),選擇所述存儲(chǔ)器行供逐出。
8. 如權(quán)利要求4所述的裝置,其特征在于,溢出事件包括執(zhí)行在 所述事務(wù)中嵌套的第二事務(wù)的開始事務(wù)指令。
9. 一種裝置,包括執(zhí)行組合為事務(wù)的多個(gè)操作的執(zhí)行單元;耦合到所述執(zhí)行;漠塊的事務(wù)存儲(chǔ)器,所述存儲(chǔ)器包括多個(gè)塊;以及耦合到所述執(zhí)行單元、存儲(chǔ)事務(wù)溢出標(biāo)記的寄存器,如果組合為 所述事務(wù)的所述多個(gè)操作之一使所述存儲(chǔ)器溢出,則將設(shè)置所述事務(wù) '溢出才示i己。
10. 如權(quán)利要求9所述的裝置,其特征在于,所述寄存器中的所 述事務(wù)溢出標(biāo)記是多個(gè)核心可見的。
11. 如權(quán)利要求9所述的裝置,其特征在于,存儲(chǔ)所述事務(wù)溢出 標(biāo)記的所述寄存器處于執(zhí)行組合為所述事務(wù)的所述多個(gè)操作的多個(gè)核 心之一中。
12. 如權(quán)利要求10所述的裝置,其特征在于,在檢查沖突時(shí),如 果設(shè)置了所述事務(wù)溢出標(biāo)記,則所述多個(gè)核心中的每個(gè)訪問全局溢出 表以檢查沖突。
13. 如權(quán)利要求12所述的裝置,其特征在于,當(dāng)所述全局溢出表 中的最后條目被釋放時(shí),所迷事務(wù)溢出標(biāo)記被清除。
14. 如權(quán)利要求9所述的裝置,其特征在于,存儲(chǔ)所述事務(wù)溢出 標(biāo)記的所述寄存器是機(jī)器特定寄存器(MSR)。
15. 如權(quán)利要求9所述的裝置,其特征在于,使所述存儲(chǔ)器溢出 的組合為所述事務(wù)的所述多個(gè)操作之一包括組合為所述事務(wù)的所述 多個(gè)操作之一,在凈皮,執(zhí)行時(shí),逐出所述存儲(chǔ)器中的所述多個(gè)塊中先前 在所述事務(wù)執(zhí)行期間訪問的塊。
16. —種裝置,包括 處理器,包括執(zhí)行事務(wù)中的多個(gè)操作的執(zhí)行單元;耦合到所述執(zhí)行單元的高速緩存,所述高速緩存包括多個(gè)高速緩 存行;響應(yīng)與所述事務(wù)中的所述多個(gè)操作中的操作關(guān)聯(lián)的溢出事件而存 儲(chǔ)全局溢出表的基址的表示的基址寄存器。
17. 如權(quán)利要求16所述的裝置,其特征在于,所述全局溢出表將 存儲(chǔ)與所述多個(gè)操作中的所述:f喿作所引用的所述多個(gè)高速緩存行中的 高速緩存行關(guān)聯(lián)的條目,所述條目包括與所述高速緩存行關(guān)聯(lián)的物理 地址和事務(wù)狀態(tài)信息。
18. 如權(quán)利要求17所述的裝置,其特征在于,事務(wù)狀態(tài)信息包括 與所述操作所引用的所述高速緩存行關(guān)聯(lián)的第一位的狀態(tài)和第二位的 狀態(tài),所述第一位跟蹤從所述高速緩存行的讀取,以及所述第二位跟 蹤對(duì)所述高速緩存行的寫入。
19. 如權(quán)利要求18所述的裝置,其特征在于,如果所述高速緩存 行處于修改狀態(tài),則所述條目還包括與所述高速緩存行關(guān)聯(lián)的數(shù)據(jù)元 素的副本。
20. 如權(quán)利要求18所述的裝置,其特征在于,所述條目還包括 操作系統(tǒng)(OS)控制字段。
21. 如權(quán)利要求16所述的裝置,其特征在于,溢出表還在所述溢 出表中存儲(chǔ)下一頁面的物理地址。 ..
22. —種裝置,包括 執(zhí)行事務(wù)的執(zhí)行模塊;耦合到所述執(zhí)行模塊的存儲(chǔ)器,所述存儲(chǔ)器包括多個(gè)塊,其中, 所述多個(gè)塊中的塊與第一位和第二位關(guān)聯(lián),以便跟蹤在所述事務(wù)執(zhí)行 期間對(duì)所述塊的訪問;存儲(chǔ)溢出標(biāo)記的第一存儲(chǔ)元件,如果當(dāng)前訪問將逐出所述塊,以 及所述第一或第二位跟蹤到在所述事務(wù)執(zhí)行期間對(duì)所述塊的先前訪 問,則在對(duì)所述存儲(chǔ)器的所述當(dāng)前訪問時(shí)將設(shè)置所述溢出標(biāo)記;以及在設(shè)置了所述溢出標(biāo)記時(shí)存儲(chǔ)全局溢出表的基址的笫二存儲(chǔ)元件。
23. 如權(quán)利要求22所述的裝置,其特征在于,跟蹤在事務(wù)執(zhí)行期 間對(duì)所述塊的訪問的所述第一位和所述第二位包括在所述事務(wù)執(zhí)行期間從所述塊加載時(shí)設(shè)置所述第一位的邏輯; 在所述事務(wù)執(zhí)行期間對(duì)所述塊存儲(chǔ)時(shí)設(shè)置所述第二位的邏輯;以及如果在所述事務(wù)執(zhí)行期間設(shè)置了所述第一位,在提交所述事務(wù)時(shí) 清除所述第 一和第二位的邏輯。
24. 如權(quán)利要求23所述的裝置,其特征在于,如果設(shè)置了所述全 局溢出位,則所述全局溢出表將存儲(chǔ)與所述塊關(guān)聯(lián)的條目,所迷條目 包括與所述塊關(guān)聯(lián)的物理地址;如果所述塊處于第一狀態(tài),與所述塊關(guān)聯(lián)的數(shù)據(jù)元素;以及所述第一位的邏輯值;所述第二位的邏輯值;操作系統(tǒng)(OS)控制字段。
25. 如權(quán)利要求24所述的裝置,其特征在于,所述存儲(chǔ)器是高速 緩存,以及所述第一狀態(tài)是修改狀態(tài)。
26. 如權(quán)利要求22所述的裝置,其特征在于,所述溢出標(biāo)記和所 述基址存儲(chǔ)在機(jī)器特定寄存器(MSR)中。
27. 如權(quán)利要求22所述的裝置,其特征在于,所述第一存儲(chǔ)元件 是溢出寄存器,以及所述第二存儲(chǔ)元件是基址寄存器。
28. 如權(quán)利要求22所述的裝置,其特征在于,所述溢出標(biāo)記是溢 出位,所述存儲(chǔ)器是高速緩沖存儲(chǔ)器,以及所述全局溢出表的所述基 址是存儲(chǔ)器分級(jí)結(jié)構(gòu)中比所迷高速緩沖存儲(chǔ)器更高級(jí)的存儲(chǔ)器中的物 理基址。
29. —種系統(tǒng),包括 微處理器,包括 執(zhí)行事務(wù)的執(zhí)行單元;耦合到所述執(zhí)行單元的事務(wù)存儲(chǔ)器(TM),所述TM包括多行,其 中,各行包括跟蹤在所述事務(wù)執(zhí)行期間的訪問的對(duì)應(yīng)事務(wù)跟蹤字段;響應(yīng)在所述事務(wù)執(zhí)行期間發(fā)生的溢出事件而支持所述TM的虛擬 化的溢出邏輯;以及存儲(chǔ)所述虛擬化TM的在存儲(chǔ)器分級(jí)結(jié)構(gòu)中比所述TM更高級(jí)的 第二存儲(chǔ)器。
30. 如權(quán)利要求29所述的系統(tǒng),其特征在于,所述TM的虛擬化 包括把所述事務(wù)的狀態(tài)保存在全局溢出表中,以及所述第二存儲(chǔ)器將 存儲(chǔ)所述全局溢出表。
31. 如權(quán)利要求30所述的系統(tǒng),其特征在于,所述溢出邏輯包括 存儲(chǔ)響應(yīng)在所述事務(wù)執(zhí)行期間發(fā)生的所述溢出事件而要設(shè)置的溢出位的第一寄存器;在所述系統(tǒng)存儲(chǔ)器中存儲(chǔ)所述全局溢出表的物理基址的第二寄存器。
32. 如權(quán)利要求31所述的系統(tǒng),其特征在于,所述第二存儲(chǔ)器中 的所述全局溢出表包括多個(gè)頁面,所述多個(gè)頁面中的各頁面將存儲(chǔ)所 述全局溢出表的下一頁面的下一個(gè)物理基址。
33. 如權(quán)利要求31所述的系統(tǒng),其特征在于,所述TM是高速緣 沖存儲(chǔ)器,以及所述第二存儲(chǔ)器是系統(tǒng)存儲(chǔ)器,以及溢出事件包括, 如果所述對(duì)應(yīng)的事務(wù)跟蹤字段先前跟蹤到在所述事務(wù)執(zhí)行期間對(duì)所述 高速緩存行的訪問,選擇所述多個(gè)高速緩存行中要逐出的高速緩存 行。
34. 如權(quán)利要求33所述的系統(tǒng),其特征在于,選擇所述多個(gè)高速 緩存行中要逐出的高速緩存行由高速緩存控制器來完成,以及如果所 述對(duì)應(yīng)的事務(wù)跟蹤字段先前跟蹤到在所述事務(wù)執(zhí)行期間對(duì)所述高速緩 存行的訪問,根據(jù)選擇所述多個(gè)高速緩存行中要逐出的高速緩存行來 設(shè)置所述溢出位包括如果所述對(duì)應(yīng)的事務(wù)跟蹤字段先前跟蹤到在所述事務(wù)執(zhí)行期間對(duì) 所述高速緩存行的訪問,則產(chǎn)生中斷;以及采用被調(diào)用以處理所述中斷的處理機(jī)來設(shè)置所述溢出位。
35. —種方法,包括檢測與將作為事務(wù)的一部分被執(zhí)行的操作關(guān)聯(lián)的溢出事件,所述 操作引用事務(wù)存儲(chǔ)器中的存儲(chǔ)器行;如果當(dāng)前沒有設(shè)置溢出位,則響應(yīng)所述溢出事件而設(shè)置溢出位;以及響應(yīng)設(shè)置溢出位而把所述事務(wù)存儲(chǔ)器擴(kuò)充到第二存儲(chǔ)器。
36. 如權(quán)利要求35所述的方法,其特征在于,響應(yīng)設(shè)置所述溢出 位而把所述事務(wù)存儲(chǔ)器擴(kuò)充到第二存儲(chǔ)器包括響應(yīng)設(shè)置所述溢出位 而把所述事務(wù)的狀態(tài)存儲(chǔ)在全局溢出表中。
37. 如權(quán)利要求35所述的方法,其特征在于,檢測與將作為事務(wù) 的 一部分被執(zhí)行的操作關(guān)聯(lián)的溢出事件包括選擇要逐出的存儲(chǔ)器行;從與所述存儲(chǔ)器行關(guān)聯(lián)的訪問跟蹤字段中確定先前在所述事務(wù)執(zhí) 行期間是否訪問了所述存儲(chǔ)器行;以及如果確定先前在所述事務(wù)執(zhí)行期間已經(jīng)訪問所述存儲(chǔ)器行,則檢 測溢出事件。
38. 如權(quán)利要求35所述的方法,其特征在于,所述溢出位存儲(chǔ)在 多個(gè)核心可查看的機(jī)器特定寄存器(MSR)中。
39. 如權(quán)利要求36所述的方法,其特征在于,在所述全局溢出表 中存儲(chǔ)所述事務(wù)的狀態(tài)包括把條目寫入所迷全局溢出表,其中所迷條目包括 與所述存儲(chǔ)器行關(guān)聯(lián)的物理地址;用于跟蹤在所述事務(wù)執(zhí)行期間從所述存儲(chǔ)器行的加載的第 一跟蹤 字段的狀態(tài);用于跟蹤在所述事務(wù)執(zhí)行期間對(duì)所述存儲(chǔ)器行的存儲(chǔ)的第二跟蹤 字l爻的狀態(tài);以及如果所述存儲(chǔ)器行處于修改狀態(tài),與所述物理地址關(guān)聯(lián)的數(shù)據(jù)元素。
40. —種方法,包括執(zhí)行組合為事務(wù)的多個(gè)操作中的操作; 根據(jù)所述操作選擇高速緩存中要逐出的高速緩存行;以及 如果先前在所述事務(wù)未決期間訪問了所選高速緩存行 如果當(dāng)前沒有設(shè)置全局溢出,則設(shè)置全局溢出位; 如果當(dāng)前沒有分配用于全局溢出表的第一頁面,則為所述全局溢出表分配第二存儲(chǔ)器中的存儲(chǔ)器的第一頁面,其中,所述全局溢出表存儲(chǔ)與所述事務(wù)關(guān)聯(lián)的狀態(tài)信息;以及在為所述全局溢出表分配所述第一頁面時(shí),把系統(tǒng)存儲(chǔ)器中的第一頁面的基址寫入基址寄存器。
41. 如權(quán)利要求40所述的方法,其特征在于,還包括如果先前在所迷事務(wù)未決期間訪問了所選高速緩存行,則產(chǎn)生中 斷;以及采用處理機(jī)來處理所述中斷,其中,所述全局溢出位根據(jù)所述中 斷的處理來設(shè)置。
42. 如權(quán)利要求41所述的方法,其特征在于,與所述事務(wù)關(guān)聯(lián)的 狀態(tài)信息包括跟蹤在所述事務(wù)未決期間對(duì)所述高速緩存行的訪問的訪 問跟蹤字段的狀態(tài)。
43. 如權(quán)利要求42所述的方法,其特征在于,所述全局溢出表還 存儲(chǔ)與所述高速緩存行關(guān)聯(lián)的物理地址;以及 操作系統(tǒng)(OS)控制字段信息。
44. 如權(quán)利要求43所述的方法,其特征在于,所述OS將根據(jù)所 述中斷來分配所述第二存儲(chǔ)器中的存儲(chǔ)器的笫一頁面。
45. 如權(quán)利要求40所述的方法,其特征在于,還包括 如果發(fā)生溢出頁面錯(cuò)誤,并且當(dāng)前為所述全局溢出表分配了至少所述第 一頁面,則為所述全局溢出表分配所述第二存儲(chǔ)器中的附加頁 面;以及把所述第二存儲(chǔ)器中的所迷附加頁面的附加基址寫入所述第二存 儲(chǔ)器中的前一頁面,在所述全局溢出表中所述前一頁面在邏輯上處于 所述附加頁面之前。
全文摘要
本文描述用于虛擬化和/或擴(kuò)充事務(wù)存儲(chǔ)器的方法及裝置。事務(wù)采用本地共享事務(wù)存儲(chǔ)器、如高速緩沖存儲(chǔ)器來執(zhí)行。在使共享事務(wù)存儲(chǔ)器溢出時(shí),事務(wù)存儲(chǔ)器被虛擬化和/或擴(kuò)充到高級(jí)存儲(chǔ)器、如系統(tǒng)存儲(chǔ)器。在溢出事件、如先前在當(dāng)前未決事務(wù)期間訪問的高速緩存行的逐出時(shí),設(shè)置溢出標(biāo)記,以便通知處理器/核心事務(wù)存儲(chǔ)器將在全局溢出表中虛擬化。全局溢出表的基址也可能被存儲(chǔ),以便引用高級(jí)存儲(chǔ)器中的全局溢出表的基址。
文檔編號(hào)G06F12/08GK101097544SQ20071012900
公開日2008年1月2日 申請日期2007年6月30日 優(yōu)先權(quán)日2006年6月30日
發(fā)明者J·巴恩斯, R·拉瓦 申請人:英特爾公司