專利名稱:用于在硬件中保存有損失的元數(shù)據(jù)的元物理地址空間的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器執(zhí)行領(lǐng)域,具體來說,涉及指令組的執(zhí)行。
交叉引用 本申請與下列同此提交的專利申請相關(guān)美國專利申請No. 12/346518(代理 機(jī)構(gòu)巻號P29129),標(biāo)題為"在硬件中登記用戶處理程序用于事務(wù)存儲器事件處理",Gad Sheaffer等人,2008年12月30日提交;美國專利申請No. 12/346539 (代理機(jī)構(gòu)巻號 P29131),標(biāo)題為"用于事務(wù)存儲器系統(tǒng)中的硬件屬性的存儲器模型",Gad Sheaffer等人, 2008年12月30日提交;美國專利申請No. 12/346530 (代理機(jī)構(gòu)巻號P29130),標(biāo)題為"事 務(wù)存儲器(TM)系統(tǒng)中的讀和寫監(jiān)視屬性",Gad Sheaffer等人,2009年12月30日提交;美 國專利申請No. 12/346543 (代理機(jī)構(gòu)巻號P29132),標(biāo)題為"擴(kuò)展高速緩存相干性協(xié)議以支 持本地緩沖數(shù)據(jù)",Gad Sheaffer等人,2008年12月30日提交。
背景技術(shù):
半導(dǎo)體加工和邏輯設(shè)計(jì)方面的進(jìn)步允許在集成電路裝置上可存在的邏輯數(shù)量的 增加。因此,計(jì)算機(jī)系統(tǒng)配置已經(jīng)從系統(tǒng)中的單個或多個集成電路演進(jìn)成單獨(dú)集成電路上 存在的多個核和多個邏輯處理器。處理器或集成電路通常包括單個處理器芯片,其中處理 器芯片可包括任何數(shù)量的核或邏輯處理器。 集成電路上數(shù)量不斷增加的核和邏輯處理器使更多軟件線程能夠同時執(zhí)行。但 是,可同時執(zhí)行的軟件線程的數(shù)量的增加引起使軟件線程之間所共享的數(shù)據(jù)同步的問題。 多個核或者多個邏輯處理器系統(tǒng)中訪問共享數(shù)據(jù)的一種常見解決方案包括使用加鎖來保 證跨多個對共享數(shù)據(jù)訪問的互斥。但是,運(yùn)行多個軟件線程的不斷增加的能力可能引起錯 誤爭用和執(zhí)行的串行化。 例如,考慮保存共享數(shù)據(jù)的哈希表。對于加鎖系統(tǒng),編程人員可對整個哈希表加 鎖,從而允許一個線程訪問整個哈希表。但是,其它線程的吞吐量和性能可能受到不利影 響,因?yàn)樗鼈冊卺尫偶渔i之前無法訪問哈希表中的任何條目。備選地,可對哈希表中的各條
目加鎖。不管怎樣,在將這個簡單示例推延到大的可縮放程序之后,很顯然,加鎖爭用、串行 化、細(xì)粒度同步和死鎖避免的復(fù)雜度成為編程人員非常棘手的負(fù)擔(dān)。 另一種最近的數(shù)據(jù)同步技術(shù)包括使用事務(wù)存儲器(TM)。事務(wù)執(zhí)行通常包括運(yùn)行分 組的多個微操作、操作或指令。在以上示例中,兩個線程在哈希表中運(yùn)行,并且其存儲器訪 問被監(jiān)視/跟蹤。如果兩個線程訪問/改變同一個條目,則可執(zhí)行沖突解決以確保數(shù)據(jù)有 效性。一種類型的事務(wù)執(zhí)行包括軟件事務(wù)存儲器(STM),其中存儲器訪問、沖突解決、中止任 務(wù)和其它事務(wù)任務(wù)的跟蹤通過軟件來執(zhí)行,通常無需硬件支持。 另一種類型的事務(wù)執(zhí)行包括硬件事務(wù)存儲器(HTM)系統(tǒng),其中包含硬件以支持訪 問跟蹤、沖突解決和其它事務(wù)任務(wù)。先前,實(shí)際存儲器陣列采用附加位來擴(kuò)展,以便保存例 如用于跟蹤讀、寫和緩沖的硬件屬性等信息,因此,數(shù)據(jù)隨來自處理器的數(shù)據(jù)一起傳播到存 儲器。這種信息通常認(rèn)為是持久不變的,即,它在高速緩存收回(cacheeviction)時不會丟CN 101770429 A 失,因?yàn)樾畔㈦S數(shù)據(jù)在整個存儲器層級結(jié)構(gòu)中傳播。然而,這種持久不變性在整個存儲器層 級結(jié)構(gòu)系統(tǒng)施加更大開銷。 存儲相似信息的其它先前嘗試已經(jīng)通過擴(kuò)展或添加與數(shù)據(jù)陣列分離的其它結(jié)構(gòu) 來實(shí)現(xiàn),這些結(jié)構(gòu)通常保存有損失的信息(即收回時丟失的信息),因?yàn)樵撔畔]有隨數(shù)據(jù) 在整個存儲器層級結(jié)構(gòu)中傳播。但是,保存這種數(shù)據(jù)的附加結(jié)構(gòu)可能很昂貴。
發(fā)明內(nèi)容
本發(fā)明一方面提供一種設(shè)備,包括數(shù)據(jù)高速緩沖存儲器,包括用于保存與數(shù)據(jù)項(xiàng) 關(guān)聯(lián)的有損失的元數(shù)據(jù)的第一數(shù)據(jù)條目,所述數(shù)據(jù)項(xiàng)保存在所述數(shù)據(jù)高速緩沖存儲器的第 二數(shù)據(jù)條目中。 本發(fā)明另一方面提供一種設(shè)備,包括高速緩沖存儲器的數(shù)據(jù)陣列,包括第一數(shù)據(jù) 條目和第二數(shù)據(jù)條目;以及所述高速緩沖存儲器的標(biāo)簽陣列,包括與所述第一數(shù)據(jù)條目關(guān) 聯(lián)的標(biāo)簽條目,其用于保存指明所述數(shù)據(jù)條目保存數(shù)據(jù)的物理值和指明所述數(shù)據(jù)條目保存 數(shù)據(jù)項(xiàng)的元數(shù)據(jù)的元物理值,所述數(shù)據(jù)項(xiàng)保存在所述數(shù)據(jù)陣列的所述第二數(shù)據(jù)條目中。
本發(fā)明另一方面提供一種處理器,包括高速緩沖存儲器;以及耦合到所述高速 緩沖存儲器以便執(zhí)行以下操作的邏輯接收引用數(shù)據(jù)項(xiàng)的地址的至少一部分;將所述地址 的所述部分與元物理擴(kuò)展關(guān)聯(lián);以及確定高速緩沖存儲器的元數(shù)據(jù)條目,以便根據(jù)所述地 址和所述元物理擴(kuò)展來訪問與所述高速緩沖存儲器的數(shù)據(jù)項(xiàng)條目中保存的數(shù)據(jù)項(xiàng)關(guān)聯(lián)的 元數(shù)據(jù)。 本發(fā)明另一方面提供一種設(shè)備,包括高速緩沖存儲器的數(shù)據(jù)陣列;地址轉(zhuǎn)換邏 輯,用于根據(jù)數(shù)據(jù)比元數(shù)據(jù)的壓縮比將關(guān)聯(lián)所述數(shù)據(jù)陣列的數(shù)據(jù)條目中的數(shù)據(jù)項(xiàng)的數(shù)據(jù)地 址轉(zhuǎn)換成關(guān)聯(lián)所述高速緩沖存儲器中的所述數(shù)據(jù)陣列的元數(shù)據(jù)條目的元數(shù)據(jù)地址;以及控 制邏輯,耦合到所述地址轉(zhuǎn)換邏輯和數(shù)據(jù)陣列,用于響應(yīng)接收到引用所述數(shù)據(jù)地址的元數(shù) 據(jù)訪問操作和所述地址轉(zhuǎn)換邏輯轉(zhuǎn)換所述數(shù)據(jù)地址而訪問所述數(shù)據(jù)陣列的所述元數(shù)據(jù)條 目。 本發(fā)明另一方面提供一種方法,包括遇到引用所述高速緩沖存儲器的數(shù)據(jù)條目 中保存的數(shù)據(jù)項(xiàng)的數(shù)據(jù)地址的元數(shù)據(jù)操作;從所述數(shù)據(jù)地址確定元數(shù)據(jù)地址;根據(jù)所述元 數(shù)據(jù)地址來確定所述高速緩沖存儲器的元數(shù)據(jù)條目;以及響應(yīng)確定所述元數(shù)據(jù)條目而訪問 所述元數(shù)據(jù)條目中的元數(shù)據(jù)。
附圖中的各圖以舉例而不是限制的方式來說明本發(fā)明。 圖1示出包括能夠同時執(zhí)行多個軟件線程的多個處理元件的處理器的一個實(shí)施 例。 圖2a示出用于保存數(shù)據(jù)的元數(shù)據(jù)的元物理地址(met即hysicaladdress)空間的 一個實(shí)施例。 圖2b示出用于保存數(shù)據(jù)的元數(shù)據(jù)的元物理地址空間的另一個實(shí)施例。
圖3a示出支持對元物理地址空間的訪問的結(jié)構(gòu)的一個實(shí)施例。
圖3b示出支持對元物理地址空間的訪問的結(jié)構(gòu)的另一個實(shí)施例。
7
圖4示出用于將數(shù)據(jù)壓縮成元數(shù)據(jù)的一個實(shí)施例。
圖5示出用于將數(shù)據(jù)壓縮成元數(shù)據(jù)的另一個實(shí)施例。
圖6示出訪問數(shù)據(jù)的元數(shù)據(jù)的方法的流程圖。
具體實(shí)施例方式
在以下描述中,提出例如用于事務(wù)執(zhí)行的具體硬件結(jié)構(gòu)的示例、訪問監(jiān)視器的具 體類型和實(shí)現(xiàn)、具體高速緩存實(shí)現(xiàn)、高速緩存相干模型的具體類型、具體數(shù)據(jù)粒度、以及存 儲器訪問和位置的具體類型等的許多具體細(xì)節(jié),以便提供對本發(fā)明的透徹了解。然而,本領(lǐng) 域的技術(shù)人員會清楚地知道,這些具體細(xì)節(jié)不一定要用于實(shí)施本發(fā)明。在其它情況下,沒有 詳細(xì)描述例如通過軟件的事務(wù)的編碼、事務(wù)的劃分、具體和備選多核和多線程處理器架構(gòu)、 具體編譯器方法/實(shí)現(xiàn)以及微處理器的具體操作細(xì)節(jié)等的眾所周知的組件或方法,以免不 必要地混淆對本發(fā)明的理解。 本文所述的方法和設(shè)備用于支持保存有損失的元數(shù)據(jù)的元物理地址空間。具體來 說,元數(shù)據(jù)的元物理地址空間主要參照支持事務(wù)存儲器系統(tǒng)來論述。但是,用于支持保存元 數(shù)據(jù)的元物理地址空間的方法和設(shè)備并不局限于此,因?yàn)樗鼈兛赏ㄟ^保存關(guān)聯(lián)數(shù)據(jù)項(xiàng)的元 數(shù)據(jù)的存儲器架構(gòu)來實(shí)現(xiàn)。 參照圖l,說明能夠同時執(zhí)行多個線程的處理器的一個實(shí)施例。注意,處理器100
可包括用于硬件事務(wù)執(zhí)行的硬件支持。處理器ioo還可與硬件事務(wù)執(zhí)行結(jié)合或者單獨(dú)地提 供軟件事務(wù)存儲器(STM)的硬件加速、STM的單獨(dú)執(zhí)行或者其組合、如混合事務(wù)存儲器(TM) 系統(tǒng)的硬件支持。處理器100包括任何處理器,例如微處理器、嵌入式處理器、數(shù)字信號處 理器(DSP)、網(wǎng)絡(luò)處理器或者執(zhí)行代碼的其它裝置。如圖所示,處理器100包括多個處理元 件。 在一個實(shí)施例中,處理元件表示線程單元、進(jìn)程單元、上下文、邏輯處理器、硬件線 程、核和/或任何其它元件,它能夠保存處理器的狀態(tài)、如執(zhí)行狀態(tài)或架構(gòu)狀態(tài)。換言之,在 一個實(shí)施例中,處理元件表示能夠與例如軟件線程、操作系統(tǒng)、應(yīng)用程序或其它代碼等代碼 單獨(dú)關(guān)聯(liá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可包括不對稱核、即具有不同配置、功能單元和/或邏輯 的核,但示出的是對稱核。因此,示為與核101相同的核102不作詳細(xì)論述,以免重復(fù)論述。 另外,核101包括兩個硬件線程101a和101b,而核102包括兩個硬件線程102a和102b。因 此,軟件實(shí)體、如操作系統(tǒng)可能將處理器100看作4個獨(dú)立處理器,即,能夠同時執(zhí)行4個軟 件線程的4個邏輯處理器或處理元件。
在這里,第一線程與架構(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ù)制,因此單獨(dú)的架構(gòu)狀態(tài)/上下文能夠被存儲用于邏輯處理器101a和邏輯處理器101b。例如重命名分配器邏輯130中的指令指針和重命名邏輯等其它較小資源對于線程101a和101b也可復(fù)制。例如重排序/引退單元135中的重排序緩沖器、ILTB 120、加載/存儲緩沖器和隊(duì)列等部分資源可通過劃分來共享。例如通用內(nèi)部寄存器、頁表基址寄存器、低級數(shù)據(jù)高速緩存和數(shù)據(jù)TLB 115、執(zhí)行單元140和無序單元135的部分等其它資源可能完全共享。 處理器100通常包括其它資源,它們可被完全共享、通過劃分來共享或者由處理元件專用或?qū)S糜谔幚碓D1中,示出具有處理器的說明性功能單元/資源的純示范處理器的一個實(shí)施例。注意,處理器可包括或省略這些功能單元的任一個,以及包括未示出的任何其它已知功能單元、邏輯或固件。 如圖所示,處理器100包括總線接口模塊105,以便與處理器100外部的例如系統(tǒng)存儲器175、芯片組、北橋或其它集成電路等裝置進(jìn)行通信。存儲器175可以專用于處理器100或者由系統(tǒng)中的其它裝置共享。較高級或更外層高速緩存110將高速緩存從較高級高速緩存110最近取出的元素。注意,較高級或更外層表示從執(zhí)行單元增加或者進(jìn)一步遠(yuǎn)離執(zhí)行單元的高速緩存級。在一個實(shí)施例中,較高級高速緩存110是第二級數(shù)據(jù)高速緩存。但是,較高級高速緩存110并不局限于此,因?yàn)樗膳c指令高速緩存關(guān)聯(lián)或者包括指令高速緩存。追蹤高速緩存、即一種類型的指令高速緩存而是可耦合在解碼器125之后,以便存儲最近解碼的追蹤。模塊120還可能包括預(yù)測待執(zhí)行/采取的分支的分支目標(biāo)緩沖器以及存儲指令的地址轉(zhuǎn)換條目的指令轉(zhuǎn)換緩沖器(I-TLB)。 解碼模塊125耦合到取單元(fetch unit) 120,以便對所取出的元素進(jìn)行解碼。在一個實(shí)施例中,處理器100與定義/指定在處理器100上可執(zhí)行的指令的指令集架構(gòu)(ISA)關(guān)聯(lián)。在這里,ISA所識別的機(jī)器代碼指令通常包括稱作操作碼的指令的一部分,它引用/指定待執(zhí)行的指令或操作。 在一個示例中,分配器和重命名器塊130包括保留資源的分配器、如寄存器文件,以便存儲指令處理結(jié)果。但是,線程101a和101b可能能夠無序執(zhí)行,其中分配器和重命名器塊130還保留其它資源、如重排序緩沖器,以便跟蹤指令結(jié)果。單元130還可包括寄存器重命名器,以便將程序/指令引用寄存器重命名為處理器100內(nèi)部的其它寄存器。重排序/引退單元135包括例如上述重排序緩沖器、加載緩沖器和存儲緩沖器等組件,以便支持無序執(zhí)行的指令的無序執(zhí)行和稍后的按序引退。 在一個實(shí)施例中,調(diào)度器和執(zhí)行單元塊140包括調(diào)度執(zhí)行單元上的指令/操作的調(diào)度器單元。例如,在具有可用浮點(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),以便將物理存儲器分為多個虛擬頁面。
9
在一個實(shí)施例中,處理器100能夠硬件事務(wù)執(zhí)行、軟件事務(wù)執(zhí)行或者它們的組合或混合。又可稱作代碼的臨界或原子段的事務(wù)包括分組的將要作為原子組執(zhí)行的指令、操作或微操作。例如,指令或操作可用于劃分事務(wù)或臨界段。在一個實(shí)施例中,下面更詳細(xì)地進(jìn)行描述,這些指令是指令集(如指令集架構(gòu)(ISA))的一部分,它們是由處理器100的硬件、如上述解碼器可識別的。這些指令在從高級語言編譯成硬件可識別匯編語言時通常包括操作代碼(操作碼)或者解碼器在解碼階段中識別的指令的其它部分。
在事務(wù)的執(zhí)行期間,在提交事務(wù)之前,通常沒有使對存儲器的更新全局可見。作為一個示例,對某個位置的事務(wù)寫入可能是本地線程可見的,然而,響應(yīng)來自另一個線程的讀取,直到提交包括事務(wù)寫入的事務(wù)時才轉(zhuǎn)發(fā)寫數(shù)據(jù)。在事務(wù)仍然未決的同時,跟蹤從存儲器加載以及寫入存儲器的數(shù)據(jù)項(xiàng)/元素,下面更詳細(xì)地進(jìn)行論述。 一旦事務(wù)達(dá)到提交點(diǎn),如果對于該事務(wù)尚未檢測到?jīng)_突,則提交事務(wù),并且使事務(wù)期間所進(jìn)行的更新全局可見。
但是,如果事務(wù)在其未決期間失效,則該事務(wù)被中止并且可能重新開始,而沒有使更新全局可見。因此,本文所使用的"事務(wù)的未決"表示已經(jīng)開始執(zhí)行但尚未提交或中止、即未決的事務(wù)。 軟件事務(wù)存儲器(STM)系統(tǒng)通常涉及通過軟件或者至少部分通過軟件來執(zhí)行訪問跟蹤、沖突解決或者其它事務(wù)存儲器任務(wù)。在一個實(shí)施例中,處理器100能夠執(zhí)行編譯器,以便編譯程序代碼以支持事務(wù)執(zhí)行。在這里,編譯器可插入操作、調(diào)用(call)、函數(shù)和其它代碼,以便實(shí)現(xiàn)事務(wù)的執(zhí)行。 編譯器通常包括將源文本/代碼轉(zhuǎn)換成目標(biāo)文本/代碼的程序或程序集合。采用編譯器編譯程序/應(yīng)用代碼通常在多個階段和遍數(shù)進(jìn)行,以便將高級編程語言代碼變換成低級機(jī)器或匯編語言代碼。然而,單遍編譯器仍然可用于簡單編譯。編譯器可利用任何已知的編譯技術(shù),并且執(zhí)行任何已知的編譯器操作,例如詞匯分析、預(yù)處理、解析、語義分析、代碼生成、代碼變換和代碼優(yōu)化。 較大編譯器通常包括多個階段,但是這些階段幾乎常常包含在兩個一般階段中(1)前端,即,一般來說,其中可進(jìn)行語法處理、語義處理和某種變換/優(yōu)化;以及(2)后端,即,一般來說,其中進(jìn)行分析、變換、優(yōu)化和代碼生成。某些編譯器涉及中端,它說明編譯器的前端與后端之間的描繪的模糊。因此,提及編譯器的插入、關(guān)聯(lián)、生成或其它操作可在上述階段或遍數(shù)的任一個以及編譯器的任何其它已知階段或遍數(shù)中進(jìn)行。作為一個說明性示例,編譯器可能在編譯的一個或多個階段中插入事務(wù)操作、調(diào)用、函數(shù),例如在編譯的前端階段中插入呼叫/操作,然后在事務(wù)存儲器變換階段中將調(diào)用/操作變換成較低級代碼。
然而,盡管編譯器的執(zhí)行環(huán)境和動態(tài)或靜態(tài)性質(zhì),但在一個實(shí)施例中,編譯器編譯程序代碼,以便實(shí)現(xiàn)事務(wù)執(zhí)行。因此,在一個實(shí)施例中,提及程序代碼的執(zhí)行表示(l)動態(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)它們的組合。 在一個實(shí)施例中,處理器100能夠利用硬件事務(wù)存儲器(HTM)系統(tǒng)中的硬件/邏輯來執(zhí)行事務(wù)。當(dāng)實(shí)現(xiàn)HTM時,從架構(gòu)和微架構(gòu)的角度來看,都存在許多特定實(shí)現(xiàn)細(xì)節(jié);其中的大多數(shù)在本文中不作論述,以免不必要地混淆對本發(fā)明的理解。但是,為了便于說明,公開了某些結(jié)構(gòu)和實(shí)現(xiàn)。然而,應(yīng)當(dāng)注意,這些結(jié)構(gòu)和實(shí)現(xiàn)不是必需的,而是可擴(kuò)充和/或采用具有不同實(shí)現(xiàn)細(xì)節(jié)的其它結(jié)構(gòu)來替換。 可由本地處理元件以及可能由其它處理元件對數(shù)據(jù)項(xiàng)進(jìn)行訪問和請求。在沒有安全機(jī)制在事務(wù)存儲器系統(tǒng)中的情況下,這些訪問的一部分可能產(chǎn)生無效數(shù)據(jù)和執(zhí)行,即,對數(shù)據(jù)的寫入使讀取失效,或者讀取無效數(shù)據(jù)。因此,處理器100可能包括跟蹤或監(jiān)視向數(shù)據(jù)項(xiàng)以及從數(shù)據(jù)項(xiàng)的存儲器訪問的邏輯,以便識別可能的沖突。 數(shù)據(jù)項(xiàng)或數(shù)據(jù)元素可包括由硬件、軟件或者它們的組合所定義的任何粒度等級的數(shù)據(jù)。數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)項(xiàng)或者對其引用的非窮舉列表包括存儲器地址、數(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)行說明,動態(tài)語言代碼、例如來自Sun Microsystems, Inc的Java 是非常類型化的語言。各變量具有在編譯時間已知的類型。類型分為兩個類別-原語類型(布爾和數(shù)值,例如整數(shù)、浮點(diǎn))和引用類型(類、接口和陣列)。引用類型的值是對于對象的引用。在J肌aTM中,由字段組成的對象可以是類實(shí)例或陣列。給定類A的對象a,通常使用符號A: :x來表示類型A的字段x,使用a. x來表示類A的對象a的字段x。例如,表達(dá)式可表達(dá)為a. x = a. y+a.z。在這里,加載字段y和字段z以便相加,并且結(jié)果將寫入字段x。 因此,監(jiān)視/緩沖對數(shù)據(jù)項(xiàng)的存儲器訪問可在任意數(shù)據(jù)級粒度執(zhí)行。例如,在一個實(shí)施例中,對數(shù)據(jù)的存儲器訪問在類型級被監(jiān)視。在這里,對字段A: :x的事務(wù)寫入和字段A::y的非事務(wù)加載可作為對同一個數(shù)據(jù)項(xiàng)(即類型A)的訪問而被監(jiān)視。在另一個實(shí)施例中,存儲器訪問監(jiān)視/緩沖在字段級粒度執(zhí)行。在這里,對A: :x的事務(wù)寫入和A: :y的非事務(wù)加載沒有作為對同一個數(shù)據(jù)項(xiàng)的訪問而被監(jiān)視,因?yàn)樗鼈兪菍Σ煌侄蔚囊?。注意,在跟蹤對?shù)據(jù)項(xiàng)的存儲器訪問中可考慮其它數(shù)據(jù)結(jié)構(gòu)或編程技術(shù)。作為一個示例,假定類A的對象的字段x和y (即A: :x和A: :y)指向類B的對象,初始化成新分配的對象,并且在初始化之后從未被寫入。在一個實(shí)施例中,對A: : x所指向的對象的字段B: : z的事務(wù)寫入,相對于A::y所指向的對象的字段B::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)的粒度來監(jiān)視數(shù)據(jù)項(xiàng),而不管基礎(chǔ)存儲結(jié)構(gòu)的粒度。在一個實(shí)施例中,數(shù)據(jù)項(xiàng)由以存儲結(jié)構(gòu)的粒度所關(guān)聯(lián)的跟蹤機(jī)制來劃界,以便確保適當(dāng)?shù)乇O(jiān)視至少整個數(shù)據(jù)項(xiàng)。在Gad Sheaffer等人的同此提交的標(biāo)題為"事務(wù)存儲器(TM)系統(tǒng)中的讀和寫監(jiān)視器屬性"的共同未決申請No.XX/XXXXXX(代理機(jī)構(gòu)巻號D71720)中更詳細(xì)地論述利用讀監(jiān)視器/屬性來監(jiān)視數(shù)據(jù)項(xiàng)的一個示例。但是,監(jiān)視器、屬性、注釋或其它跟蹤機(jī)制可用于檢測與利用數(shù)據(jù)或結(jié)構(gòu)的任何粒度來保存數(shù)據(jù)的事務(wù)執(zhí)行關(guān)聯(lián)的沖突。 讀或?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)的屬性包括編碼值。例如,狀態(tài),例如4種狀態(tài)(1)事務(wù)
寫入,(2)事務(wù)讀取,(3)沒有事務(wù)寫入,以及(4)沒有事務(wù)讀取,利用2個屬性位(即4個二進(jìn)制值00、01、11和10)來編碼。 根據(jù)該設(shè)計(jì),高速緩存相干請求和被監(jiān)視的高速緩存線的相干狀態(tài)的不同組合引起可能的沖突,例如保存處于共享讀取狀態(tài)的數(shù)據(jù)項(xiàng)的高速緩存線,和指明對該數(shù)據(jù)項(xiàng)的寫請求的窺探。相反,保存處于緩沖寫入狀態(tài)的數(shù)據(jù)項(xiàng)的高速緩存線和指明對該數(shù)據(jù)項(xiàng)的讀請求的外部窺探可被認(rèn)為可能沖突。在一個實(shí)施例中,為了檢測訪問請求和屬性狀態(tài)的這種組合,窺探邏輯耦合到?jīng)_突檢測/報(bào)告邏輯、如用于沖突檢測/報(bào)告的監(jiān)視器和/或邏輯。 在一個實(shí)施例中,數(shù)據(jù)的元數(shù)據(jù)、如屬性或性質(zhì),本地保存在存儲器中。作為一個示例,數(shù)據(jù)高速緩存在高速緩沖存儲器的條目中,而數(shù)據(jù)的元數(shù)據(jù)保存在高速緩存的另一個條目中。在這個示例中,即使元數(shù)據(jù)可能與數(shù)據(jù)競爭高速緩沖存儲器中的空間,但是本地保存元數(shù)據(jù)而無需對數(shù)據(jù)陣列的附加擴(kuò)展或無需附加單獨(dú)存儲結(jié)構(gòu)的能力可能產(chǎn)生元數(shù)據(jù)的有效支持,而不會在整個存儲器層級結(jié)構(gòu)中激增持久不變元數(shù)據(jù)或者造成添加附加存儲結(jié)構(gòu)的昂貴成本。 在一個實(shí)施例中,硬件中的元數(shù)據(jù)到數(shù)據(jù)的物理映射不是軟件直接可見的。因此,在這個示例中,元數(shù)據(jù)訪問操作引用數(shù)據(jù)地址,并且依靠硬件來執(zhí)行正確的轉(zhuǎn)換(即映射),以便適當(dāng)?shù)卦L問元數(shù)據(jù)。在一個實(shí)施例中,一個或多個元物理地址空間在物理地址空間上重疊,用于訪問元數(shù)據(jù)。本質(zhì)上,引用存儲器中保存的數(shù)據(jù)的數(shù)據(jù)地址被轉(zhuǎn)換/操縱,以便獲得元數(shù)據(jù)地址,它用于訪問同一個存儲器內(nèi)不同的所轉(zhuǎn)換位置的元數(shù)據(jù)。
為了進(jìn)行說明,元物理值追加到數(shù)據(jù)地址,以便獲得元數(shù)據(jù)地址??衫脤⒌谝坏刂忿D(zhuǎn)換成第二地址的任何方法。將數(shù)據(jù)地址轉(zhuǎn)換成元數(shù)據(jù)地址的一個示例包括利用物理地址或虛擬地址加上元物理值到來自元數(shù)據(jù)地址的單獨(dú)數(shù)據(jù)地址的附加。作為另一個示例,數(shù)據(jù)地址可利用單獨(dú)轉(zhuǎn)換表/邏輯來轉(zhuǎn)換,以便獲得不同的元數(shù)據(jù)地址。
因此,存儲器可按照相對于軟件透明的方式來保存數(shù)據(jù)項(xiàng)的元數(shù)據(jù)。當(dāng)硬件檢測對元數(shù)據(jù)的訪問操作時,通過顯式操作代碼(指令的操作碼)或者將指令解碼為元數(shù)據(jù)訪問微操作,硬件相應(yīng)地執(zhí)行訪問元數(shù)據(jù)的訪問操作所引用的數(shù)據(jù)地址的必要轉(zhuǎn)換。在這里,元數(shù)據(jù)可以是有損失的,即,元數(shù)據(jù)在選擇保存元數(shù)據(jù)的條目供收回時丟失。但是,元數(shù)據(jù)的損失可按照與沖突的處理或者監(jiān)視屬性的損失相似的方式來保存,如Gad Sheaffer等人同此一起提交的標(biāo)題為"在硬件中登記用戶處理程序用于事務(wù)存儲器事件處理"的申請序號XX/XXXXXX(代理機(jī)構(gòu)巻號P29129)中所述。 如以上最初參照圖1所述,為了便于論述,處理器100的架構(gòu)是純說明性的。類似地,轉(zhuǎn)換用于引用元數(shù)據(jù)的數(shù)據(jù)地址的具體示例也是示范的,因?yàn)榭衫脤?shù)據(jù)與同一個存儲器的單獨(dú)條目中的元數(shù)據(jù)關(guān)聯(lián)的任何方法。 參照圖2a,示出用于保存與數(shù)據(jù)關(guān)聯(lián)的元數(shù)據(jù)的元物理地址空間的一個實(shí)施例。示出了例如控制邏輯250、標(biāo)簽陣列205和數(shù)據(jù)陣列207等的高速緩沖存儲器的部分,而沒有示出例如高速緩存查找、命中和未命中電路等具體控制電路及其它較大結(jié)構(gòu),以便簡化論述。高速緩存的最常見示例包括數(shù)據(jù)高速緩存,例如圖l所示的第一級高速緩存或第二級高速緩存。但是,高速緩存還可包括指令高速緩存、追蹤高速緩存或其它已知高速緩存。
雖然沒有詳細(xì)描述高速緩存架構(gòu)以免不必要地混淆對論述的理解,但是可按照許多方式來組織高速緩存。例如,高速緩存可以是全關(guān)聯(lián)式(即,存儲器地址可保存在高速緩存的任何位置)、集合關(guān)聯(lián)式(其中某些范圍的存儲器地址限制到高速緩存的特定集合),或者是直接映射高速緩存(其中多個地址保存在高速緩存內(nèi)的單個位置)。注意,本文所述的方法和設(shè)備可采用任何高速緩存組織來實(shí)現(xiàn)。 如圖所示,高速緩存包括數(shù)據(jù)部分207(又可稱作數(shù)據(jù)高速緩沖存儲器或數(shù)據(jù)陣列)、與數(shù)據(jù)陣列207關(guān)聯(lián)的標(biāo)簽陣列205以及與標(biāo)簽陣列205和數(shù)據(jù)陣列207關(guān)聯(lián)的控制邏輯230。數(shù)據(jù)部分207包括元件210、215、220和225。本文所使用的高速緩存元件表示高速緩存的任何粒度的結(jié)構(gòu)元件,例如高速緩存線、高速緩存條目、高速緩存位置或高速緩存集合。例如,元件210包括集合中的多個條目的一個條目,例如多條線路的一條線路。
如圖所示,元數(shù)據(jù)209和數(shù)據(jù)項(xiàng)208保存在數(shù)據(jù)陣列207的單獨(dú)條目中。但是,元數(shù)據(jù)209與數(shù)據(jù)項(xiàng)208關(guān)聯(lián),因?yàn)樗硎緮?shù)據(jù)項(xiàng)208的屬性或性質(zhì),并且與條目210關(guān)聯(lián)的數(shù)據(jù)項(xiàng)208的數(shù)據(jù)地址可用作或者轉(zhuǎn)換成元數(shù)據(jù)地址,以便引用條目215中的元數(shù)據(jù)209。在一個實(shí)施例中,以這種方式保存元數(shù)據(jù)209被認(rèn)為是有損失的。換言之,元數(shù)據(jù)209被認(rèn)為是有損失的元數(shù)據(jù)。本質(zhì)上,元數(shù)據(jù)209是本地構(gòu)造,與通過存儲器層級結(jié)構(gòu)跟蹤數(shù)據(jù)項(xiàng)208的持久不變數(shù)據(jù)不同。 例如,如果控制邏輯250選擇條目215供收回,則元數(shù)據(jù)209被收回。由于元數(shù)據(jù)209在數(shù)據(jù)地址位置不存在,所以信息沒有被保持或者回寫到較高級存儲器,即元數(shù)據(jù)209丟失。在這里,高速緩存控制邏輯250可因線路215的高速緩存相干狀態(tài)、如無效狀態(tài)或者因保存元數(shù)據(jù)值以指明條目215保存元數(shù)據(jù)209的擴(kuò)展字段217而不執(zhí)行回寫,下面更詳細(xì)地進(jìn)行描述。 如上所述,元數(shù)據(jù)209包括與數(shù)據(jù)項(xiàng)208相關(guān)的任何屬性、性質(zhì)或信息。在事務(wù)存儲器系統(tǒng)中,可按照多種有用方式來利用元數(shù)據(jù)209。作為第一示例,元數(shù)據(jù)209包括數(shù)據(jù)項(xiàng)208的例如讀屬性、寫屬性和/或緩沖屬性等屬性。在這里,當(dāng)數(shù)據(jù)項(xiàng)208經(jīng)事務(wù)讀取時,更新元數(shù)據(jù)209以指明數(shù)據(jù)項(xiàng)208經(jīng)讀監(jiān)視,即,對數(shù)據(jù)項(xiàng)208的外部寫入則被認(rèn)為是沖突。在這種實(shí)現(xiàn)中,窺探邏輯可修改成執(zhí)行條目215中的元數(shù)據(jù)209的窺探、即條目215中的元數(shù)據(jù)的測試。 作為另一個示例,元數(shù)據(jù)包括其它事務(wù)相關(guān)信息,例如事務(wù)寫入數(shù)據(jù)項(xiàng)208的備份位置、數(shù)據(jù)項(xiàng)208是否先前已經(jīng)在事務(wù)中被訪問和/或備份、數(shù)據(jù)項(xiàng)208是否與不可撤消/難抑制事務(wù)關(guān)聯(lián)、數(shù)據(jù)項(xiàng)209是否已經(jīng)丟失,或者其它已知事務(wù)相關(guān)描述信息。此外,如上所述,元數(shù)據(jù)的使用并不局限于事務(wù)信息。作為推論,元數(shù)據(jù)209還可包括與數(shù)據(jù)項(xiàng)208關(guān)聯(lián)的信息、性質(zhì)、屬性或狀態(tài)。 如圖所示,標(biāo)簽陣列205包括分別與數(shù)據(jù)陣列207的數(shù)據(jù)條目210、215、220、225對應(yīng)的標(biāo)簽條目211、216、221和226。通常,標(biāo)簽條目(如條目211)用于保存與條目210中保存的數(shù)據(jù)項(xiàng)208關(guān)聯(lián)的地址的一部分。在對高速緩存訪問時,搜索/查找標(biāo)簽陣列205利用來自訪問操作地址的標(biāo)簽值以索引到正確的對應(yīng)條目。在一個實(shí)施例中,地址(如地址201)采用擴(kuò)展位被擴(kuò)展,擴(kuò)展位保存在標(biāo)簽陣列205中的標(biāo)簽擴(kuò)展字段212、217、222和227中。在這里,擴(kuò)展字段保存指明對應(yīng)數(shù)據(jù)條目是否保存數(shù)據(jù)或元數(shù)據(jù)的值。作為一個示例,擴(kuò)展字段212保存指明數(shù)據(jù)(如數(shù)據(jù)項(xiàng)208)保存在數(shù)據(jù)條目210中的數(shù)據(jù)值,而擴(kuò)展字段217保存指明數(shù)據(jù)條目215保存元數(shù)據(jù)(如元數(shù)據(jù)209)的元物理值。
保存在擴(kuò)展字段(如擴(kuò)展字段217)中的元物理值可包括表示對應(yīng)條目保存元數(shù)據(jù)的任何值。此外,元物理值可通過硬件(如控制寄存器)或者高速緩存控制邏輯250中的缺省設(shè)定(由指令參數(shù)提供)或者它們的組合來提供。 在一個實(shí)施例中,擴(kuò)展字段217保存標(biāo)簽條目216的單個位,例如最高有效位(MSB)。在這里,當(dāng)條目215保存元數(shù)據(jù)時,條目217則保存第一邏輯值、如邏輯高值。相反,擴(kuò)展字段212保存第二邏輯值、如邏輯低值,以便指明條目210保存數(shù)據(jù)。為了進(jìn)行說明,在數(shù)據(jù)地址與元數(shù)據(jù)地址之間的最基本轉(zhuǎn)換方法的上下文中論述簡化示例,即,其中標(biāo)簽條目211和216對于數(shù)據(jù)項(xiàng)208和209是相同的,其中只有擴(kuò)展字段是不同的。在這里,地址201的一部分、如物理地址部分保存在標(biāo)簽陣列205的標(biāo)簽條目中。
假定接收到引用數(shù)據(jù)項(xiàng)208的數(shù)據(jù)地址的訪問操作??刂七壿?08執(zhí)行標(biāo)簽陣列205的搜索,以便確定對于該數(shù)據(jù)地址是否存在標(biāo)簽匹配。在這里,如果訪問操作是訪問數(shù)據(jù)項(xiàng)208的正常數(shù)據(jù)訪問操作,則數(shù)據(jù)值與數(shù)據(jù)地址關(guān)聯(lián),并且搜索產(chǎn)生與條目211和擴(kuò)展字段212的匹配。在這里,在條目216之間不存在匹配,因?yàn)閿U(kuò)展字段217包括元物理值(即這個示例中的邏輯1)。相反,如果訪問操作包括元數(shù)據(jù)訪問操作,則邏輯1的元物理值追加到數(shù)據(jù)地址,并且搜索產(chǎn)生條目216與擴(kuò)展字段217的命中。類似地,不存在對條目211的命中,因?yàn)閿U(kuò)展字段212保存數(shù)據(jù)值。 如這個示例所示,程序可包括引用數(shù)據(jù)項(xiàng)、如數(shù)據(jù)項(xiàng)208的相同地址的例如數(shù)據(jù)訪問操作或元數(shù)據(jù)訪問操作等單獨(dú)操作,并且硬件可將那些訪問映射到不同的地址空間(例如物理地址空間和元物理地址空間)。在不同的值用于數(shù)據(jù)和元數(shù)據(jù)的標(biāo)簽條目的情況下,地址空間是正交的,即,元數(shù)據(jù)訪問操作沒有命中或修改數(shù)據(jù)條目,因?yàn)楸4鏀?shù)據(jù)項(xiàng)的對應(yīng)數(shù)據(jù)條目的擴(kuò)展字段沒有匹配元數(shù)據(jù)訪問操作的查找擴(kuò)展值。但是,由于元數(shù)據(jù)和數(shù)據(jù)地址空間競爭高速緩存中的空間,所以它們可通過競爭相互影響。
另外,在有損失的元數(shù)據(jù)的一個實(shí)施例中,元數(shù)據(jù)訪問操作的標(biāo)簽陣列205的未命中不服務(wù)于高速緩沖存儲器域外部的未命中。本質(zhì)上,由于有損失的元數(shù)據(jù)209本地保存在高速緩存域中,所以沒有理由在外部轉(zhuǎn)發(fā)未命中以服務(wù)于請求。因此,可能以快速有效方式服務(wù)于對有損失的元數(shù)據(jù)的未命中。作為一個示例,高速緩存塊被分配用于元數(shù)據(jù),并且初始化成預(yù)定缺省值,而無需等待外部響應(yīng)。 除了上述示例之外,在一個實(shí)施例中,標(biāo)簽陣列205的擴(kuò)展字段包括多個位。作為第一示例,標(biāo)簽陣列205中的多個位可能包括在數(shù)據(jù)地址空間上重疊的多個單獨(dú)的元物理地址空間。在這里,對于單獨(dú)元數(shù)據(jù)、對于關(guān)聯(lián)相同或不同元數(shù)據(jù)的單獨(dú)處理元件、對于具有相同或不同元數(shù)據(jù)的程序的不同部分、對于具有相同或不同元數(shù)據(jù)的不同子系統(tǒng)或者對于與地址空間關(guān)聯(lián)的任何其它已知元件,每個位或分組的位對應(yīng)于元物理地址空間。
例如,假定兩個處理元件、如兩個核共享對高速緩存的訪問。在這里,擴(kuò)展字段217的第一位用于與第一處理元件關(guān)聯(lián)的元物理地址空間,而擴(kuò)展字段218的第二位用于與第二處理元件關(guān)聯(lián)的第二元物理地址空間?;谏鲜鍪纠?,在對于第一處理元件遇到對數(shù)據(jù)地址201的元數(shù)據(jù)訪問時,進(jìn)行標(biāo)簽陣列205的搜索,且第一位設(shè)置成元物理邏輯值,它確保對第二處理元件的元物理地址空間的命中沒有發(fā)生。 注意,在一些情況下,可能優(yōu)選的是使處理元件訪問不同的元物理地址空間,例如
14在第一處理元件檢查是否由第二處理元件在第二元物理地址空間中設(shè)置了屬性。在一個實(shí)施例中,擴(kuò)展字段包括其它信息。例如,不是多個位用于多個處理元件,而是可在多個位中表示處理元件標(biāo)識符、如上下文ID。此外,擴(kuò)展字段的位可利用控制寄存器值、指令參數(shù)值或其它值來填充。 元數(shù)據(jù)訪問操作可包括訪問數(shù)據(jù)的顯式指令/操作。在這里,處理器的解碼器可根據(jù)指令集架構(gòu)的操作代碼(操作碼)來識別元數(shù)據(jù)訪問操作。另外,較大的更復(fù)雜指令在被解碼時可包括元數(shù)據(jù)訪問微操作。為了進(jìn)行說明,將備份數(shù)據(jù)項(xiàng)208的指令解碼成對備份位置執(zhí)行數(shù)據(jù)項(xiàng)208的前一種形式的寫入的第一微操作以及將元數(shù)據(jù)209更新成保存?zhèn)浞菸恢玫牡刂返牡诙⒉僮鳌?如上所述,在一個實(shí)施例中,元數(shù)據(jù)209在硬件中與數(shù)據(jù)項(xiàng)208關(guān)聯(lián)。如圖所示,數(shù)據(jù)項(xiàng)208和元數(shù)據(jù)209未壓縮(即元數(shù)據(jù)與數(shù)據(jù)之間的一對一關(guān)系)。換言之,元數(shù)據(jù)的大小與數(shù)據(jù)項(xiàng)208相同。下面更詳細(xì)地論述元數(shù)據(jù)的壓縮。然而,在一個實(shí)施例中,在硬件中元數(shù)據(jù)209與數(shù)據(jù)項(xiàng)208的關(guān)聯(lián)包括將索引到數(shù)據(jù)項(xiàng)208的條目210的數(shù)據(jù)地址轉(zhuǎn)換成索引到元數(shù)據(jù)209的條目215的元數(shù)據(jù)地址的邏輯。轉(zhuǎn)換的示例包括添加了元物理值的無轉(zhuǎn)換、添加了元物理值的正常數(shù)據(jù)地址轉(zhuǎn)換以及采用元物理轉(zhuǎn)換邏輯的單獨(dú)轉(zhuǎn)換。下面參照圖3a-3b更詳細(xì)地論述元數(shù)據(jù)到數(shù)據(jù)的轉(zhuǎn)換的非窮舉示例的這個列表。
快速參照圖2b,示出用于保存與數(shù)據(jù)關(guān)聯(lián)的元數(shù)據(jù)的元物理地址空間的另一個實(shí)施例。如上所述,元數(shù)據(jù)當(dāng)保存在與數(shù)據(jù)相同的陣列中時可與數(shù)據(jù)競爭高速緩存空間。因此,如圖2b所示,在一個實(shí)施例中,元數(shù)據(jù)保存在并行高速緩沖存儲器260中。在這里,以上和以下描述的方法和設(shè)備、例如從數(shù)據(jù)地址獲得元數(shù)據(jù)地址的步驟可按照相同方式來執(zhí)行。但是,不是選擇條目數(shù)據(jù)陣列207用于元數(shù)據(jù)地址,而是選擇并行元數(shù)據(jù)陣列260中的條目。作為一個示例,復(fù)用器可用于根據(jù)元物理標(biāo)識符值、如地址擴(kuò)展230中保存的元物理值在陣列、集合、路、塊等之間進(jìn)行選擇。因此,與本文中的描述相似,元數(shù)據(jù)地址可從給定數(shù)據(jù)項(xiàng)的數(shù)據(jù)地址獲得。但是,在這個示例中,條目的選擇在并行陣列260而不是在數(shù)據(jù)陣列207中進(jìn)行。注意,元數(shù)據(jù)209按照相同方式與數(shù)據(jù)項(xiàng)208關(guān)聯(lián),但保存在不同的物理存儲結(jié)構(gòu)中。 來看圖3a,示出支持對元物理地址空間的訪問的結(jié)構(gòu)的一個實(shí)施例。在這里,地址生成單元(AGU)320生成地址,這可響應(yīng)訪問操作而進(jìn)行,如上所述。下面參照處理器利用虛擬地址轉(zhuǎn)換、即通常利用處理器中定義的頁表將所引用虛擬地址轉(zhuǎn)換成物理地址的物理存儲器的虛擬視圖來論述尋址和轉(zhuǎn)換。但是,尋址可按照許多方式來實(shí)現(xiàn),并且相應(yīng)地,本文所述的方法和設(shè)備可利用任何尋址方法來實(shí)現(xiàn)。 在一個實(shí)施例中,數(shù)據(jù)項(xiàng)通過數(shù)據(jù)地址301到元數(shù)據(jù)地址的轉(zhuǎn)換而與元數(shù)據(jù)關(guān)聯(lián)。作為第一示例,轉(zhuǎn)換包括數(shù)據(jù)地址301的擴(kuò)展而無需虛擬地址到物理地址的傳統(tǒng)轉(zhuǎn)換。本質(zhì)上,數(shù)據(jù)地址的虛擬地址用于元數(shù)據(jù)地址。相反,元數(shù)據(jù)地址可按照與數(shù)據(jù)地址相似的方式通過轉(zhuǎn)換結(jié)構(gòu)來轉(zhuǎn)換。 如圖所示,轉(zhuǎn)換后備緩沖器(TLB) 325將虛擬地址、如虛擬地址201轉(zhuǎn)換成物理地址。在某些處理器架構(gòu)中,虛擬地址和物理地址共享地址的一部分,例如地址201的4K字節(jié)頁面的位O-ll。作為第一示例,元數(shù)據(jù)地址與數(shù)據(jù)地址相同。因此,陣列305中的高速緩存標(biāo)簽對于數(shù)據(jù)和關(guān)聯(lián)元數(shù)據(jù)是相同的,除了擴(kuò)展字段在數(shù)據(jù)與元數(shù)據(jù)條目之間有區(qū)別。
15
為了進(jìn)行說明,又快速返回參照圖2a。在這里,對應(yīng)于元數(shù)據(jù)條目215的標(biāo)簽條目 216與對應(yīng)于數(shù)據(jù)條目210的標(biāo)簽條目211是相同的。但是,擴(kuò)展字段212保存指明條目 210保存數(shù)據(jù)的數(shù)據(jù)值,并且擴(kuò)展字段217保存指明條目215保存元數(shù)據(jù)的元數(shù)據(jù)值。因 此,在從數(shù)據(jù)條目215讀取元數(shù)據(jù)209的高速緩存查找時,元數(shù)據(jù)值追加到標(biāo)簽值,以便命 中與條目215對應(yīng)的標(biāo)簽條目217。類似地,對于元數(shù)據(jù)209的存儲操作,條目215在數(shù)據(jù) 陣列207中分配有元物理值,元物理值根據(jù)指令參數(shù)或者寄存器中保存的值加載而在擴(kuò)展 字段217中。 從以上所述注意到,即使具有相同的數(shù)據(jù)地址,元數(shù)據(jù)訪問也僅命中元數(shù)據(jù)條目, 因?yàn)閿U(kuò)展標(biāo)簽條目中保存的數(shù)據(jù)值沒有匹配追加/擴(kuò)展的元數(shù)據(jù)值。在其中除了擴(kuò)展字段 之外沒有修改數(shù)據(jù)標(biāo)簽值的情形下,元數(shù)據(jù)對數(shù)據(jù)的局部性(locality)可能是有利的。在 這個示例中,條目210和215因用于選擇數(shù)據(jù)陣列207中集合的地址的部分相同而可能在 集合關(guān)聯(lián)式高速緩存的相同集合中。 參照圖3b,示出支持對元物理地址空間的訪問的結(jié)構(gòu)的另一個實(shí)施例。在這里, TLB 325仍然將虛擬地址301轉(zhuǎn)換成物理地址。TLB325按照與查找表相似的方式進(jìn)行操作 以保存最近轉(zhuǎn)換。另外,當(dāng)沒有發(fā)現(xiàn)最近轉(zhuǎn)換時,虛擬地址通常根據(jù)在關(guān)聯(lián)TLB的處理元件 的寄存器中定義的頁表來轉(zhuǎn)換。在一個實(shí)施例中,提供元物理地址轉(zhuǎn)換(MAT)緩沖器350 用于數(shù)據(jù)地址到元數(shù)據(jù)地址的轉(zhuǎn)換供元數(shù)據(jù)訪問。作為一個示例,MAT緩沖器350按照與 TLB 325相似的方式進(jìn)行操作。在一個實(shí)施例中,MAT緩沖器350根據(jù)寄存器中定義的元物 理頁表或其它信息將數(shù)據(jù)地址301轉(zhuǎn)換成元數(shù)據(jù)地址。 耦合到轉(zhuǎn)換邏輯350的高速緩存查找邏輯響應(yīng)元數(shù)據(jù)地址的標(biāo)簽部分匹配標(biāo)簽 陣列中包含的標(biāo)簽條目所保存的標(biāo)簽值而確定對標(biāo)簽條目的命中。在這里,元數(shù)據(jù)值甚至 當(dāng)單獨(dú)轉(zhuǎn)換時也可追加到地址,以便幫助分離元物理和物理地址空間。因此,在這個示例 中,元數(shù)據(jù)訪問操作所引用的數(shù)據(jù)地址的命中包括通過元物理轉(zhuǎn)換邏輯350將地址301轉(zhuǎn) 換成元數(shù)據(jù)地址,并且將元數(shù)據(jù)地址與標(biāo)簽陣列305中的高速緩存標(biāo)簽進(jìn)行匹配。如以下 所述,元物理地址轉(zhuǎn)換邏輯350根據(jù)壓縮比將數(shù)據(jù)地址轉(zhuǎn)換成元數(shù)據(jù)地址。
但是,不管轉(zhuǎn)換方法如何,即不管是沒有修改還是通過單獨(dú)表的轉(zhuǎn)換,在一個實(shí)施 例中,元數(shù)據(jù)到數(shù)據(jù)被壓縮。換言之,壓縮比是數(shù)據(jù)與元數(shù)據(jù)相比的量。例如,壓縮比8、即 8 : 1包括8位數(shù)據(jù)與1位元數(shù)據(jù)或者8字節(jié)(四倍長字)數(shù)據(jù)與1字節(jié)元數(shù)據(jù)。
圖4示出數(shù)據(jù)到元數(shù)據(jù)的壓縮比為8的一個實(shí)施例??刂七壿嫿邮赵獢?shù)據(jù)訪問操 作所引用的數(shù)據(jù)地址401。對于壓縮,log2(N)個位經(jīng)過移位和/或刪除,其中N是數(shù)據(jù)對 元數(shù)據(jù)的壓縮比。在所示示例中,對于壓縮比為8 ,對于元數(shù)據(jù)地址402 ,三個位被向下移位 并且刪除。本質(zhì)上,地址401(包括64位以引用存儲器中的特定數(shù)據(jù)字節(jié))被截取三個位, 以便形成元數(shù)據(jù)字節(jié)地址402(其用于基于字節(jié)粒度引用存儲器中的元數(shù)據(jù));從其中選出 一位元數(shù)據(jù)使用先前從該地址刪除的三個位來形成元數(shù)據(jù)字節(jié)地址。 在一個實(shí)施例中,被移位/刪除的位由其它位取代。如圖所示,在地址401被移位 之后,高階位用零取代。但是,被刪除/移位的位可用其它數(shù)據(jù)或信息(例如與元數(shù)據(jù)訪問 操作關(guān)聯(lián)的上下文標(biāo)識符(ID))取代。雖然最低數(shù)量的位在這個示例中被刪除,但是任何 位置的位可根據(jù)任何數(shù)量的因素來刪除和取代,該因素例如高速緩存組織、高速緩存電路 定時以及使數(shù)據(jù)與元數(shù)據(jù)之間的沖突為最小等。
例如,數(shù)據(jù)地址可以不被移位log2(N),而是使地址位0:2為零。因此,相同的物理 地址和虛擬地址的位沒有如上述示例中那樣經(jīng)過移位,這允許預(yù)先選擇具有未修改位(如 位11:3)的集合或存儲體(bank)。在這里,不是利用被刪除位0:2來選擇位,而是使用不同 的三個位、如高階三個位來進(jìn)行從字節(jié)選擇一位。這種實(shí)現(xiàn)可能是定時友好的,但是,元數(shù) 據(jù)可能沒有與數(shù)據(jù)相鄰,即,沒有數(shù)據(jù)對元數(shù)據(jù)的局部性,因?yàn)楦唠A標(biāo)簽值是不同的。
在一個實(shí)施例中,無論地址401是否經(jīng)過位移位、位刪除或位取代,包含元物理值 的地址擴(kuò)展標(biāo)簽追加到元數(shù)據(jù)地址402。如圖所示,元物理值包括邏輯1值,以便指明地址 402是元數(shù)據(jù)地址。如上所述,元物理值可包括硬件、固件、軟件或者它們的組合、如通過控 制寄存器或指令參數(shù)所定義的任何固定值。另外,如上所述,在一個實(shí)施例中,不管是移位 和調(diào)零的位、如位63-65或者是包括圖4未示出的元物理值的擴(kuò)展字段中的附加位,都采用 其它信息來擴(kuò)充。例如,例如核、上下文或線程ID等處理元件ID作為擴(kuò)展追加到地址402。
—旦追加了適當(dāng)?shù)臄U(kuò)展位,則利用包括具有位64的擴(kuò)展字段的元數(shù)據(jù)地址402的 標(biāo)簽部分來搜索標(biāo)簽陣列405。注意,對于元數(shù)據(jù)加載/測試操作或者寫操作,對標(biāo)簽陣列 405搜索匹配標(biāo)簽值,即在元數(shù)據(jù)地址402與標(biāo)簽陣列405中的標(biāo)簽條目(如包括擴(kuò)展字段 417的標(biāo)簽條目416)之間匹配的標(biāo)簽中包含的虛擬地址的一部分和擴(kuò)展位。
但是,當(dāng)寫元數(shù)據(jù)操作未命中標(biāo)簽陣列405、即尚未創(chuàng)建元數(shù)據(jù)時,則以正常方式 為元數(shù)據(jù)的高速緩沖存儲器分配條目。例如,根據(jù)元數(shù)據(jù)地址402和高速緩存替代算法(如 最后最近使用(LRU)算法)來選擇、分配條目(如條目415)并且將其初始化為元數(shù)據(jù)缺省 值。因此,元數(shù)據(jù)可能與常規(guī)數(shù)據(jù)競爭空間。 現(xiàn)在來看圖5,示出用于數(shù)據(jù)到元數(shù)據(jù)的壓縮和擴(kuò)展字段的利用的另一個實(shí)施例。 在這里,一位元數(shù)據(jù)表示64個字節(jié),S卩比率512 : 1。與以上所述相似,數(shù)據(jù)地址501經(jīng)過 轉(zhuǎn)換/修改,以便通過將數(shù)據(jù)地址501向下移位log2(512)個位(即9位),來形成元數(shù)據(jù) 地址502。在這里,位6:8仍然用于選擇位而不是位0:2,實(shí)際上通過以512位的粒度進(jìn)行 選擇來創(chuàng)建壓縮。因此,移位的虛擬地址的其余部分(即位63:21)被用作元數(shù)據(jù)地址502 的標(biāo)簽值503的一部分。 但是,當(dāng)?shù)刂?02移位9位時,地址502的高階部分具有9個開放位位置來保存信 息。在一個實(shí)施例中,9個位保存標(biāo)識符(例如上下文ID和/或線程ID)。另外,元物理空 間值也可保存在這些位中,或者可將地址通過元物理空間位來擴(kuò)展。按照與以上所述搜索 和替代相似的方式,采用元數(shù)據(jù)標(biāo)簽503來搜索標(biāo)簽陣列505。在這里,如果標(biāo)識符和地址 空間不匹配,則沒有發(fā)現(xiàn)命中,即確定未命中。因此,這個示例可能具有基于線程ID和/或 上下文ID粒度提供元數(shù)據(jù)的能力。但是,在一些實(shí)現(xiàn)中,跨ID的訪問可以是有利的(例如 當(dāng)另一個線程的監(jiān)視器元數(shù)據(jù)由線程檢查以確定關(guān)聯(lián)的數(shù)據(jù)項(xiàng)是否由另一個線程來監(jiān)視 時)。在這種情形下,掩碼可應(yīng)用于標(biāo)簽比較值,以便允許一個線程命中另一個線程的元數(shù) 據(jù)。 在一個實(shí)施例中,元數(shù)據(jù)的被移位的地址與常規(guī)數(shù)據(jù)訪問被復(fù)用。在這里,元物理 空間值可用作復(fù)用器輸入,以便在常規(guī)數(shù)據(jù)高速緩存訪問與元數(shù)據(jù)高速緩存訪問之間進(jìn)行 選擇。另外,存儲元數(shù)據(jù)信息可按照與先前實(shí)現(xiàn)中執(zhí)行存儲轉(zhuǎn)發(fā)相似的方式轉(zhuǎn)發(fā)給元數(shù)據(jù) 加載。但是,在一個實(shí)施例中,附加限制強(qiáng)加到元數(shù)據(jù)地址,例如以防止跨壓縮比的轉(zhuǎn)發(fā)。
在一個實(shí)施例中,多個并發(fā)壓縮比由硬件來支持。在這里,壓縮比的表示保存在擴(kuò)展標(biāo)簽位中。因此,在標(biāo)簽陣列的搜索期間,考慮壓縮比。此外,可測試壓縮比,用于確定元 數(shù)據(jù)存儲是否應(yīng)當(dāng)轉(zhuǎn)發(fā)給元數(shù)據(jù)加載。 在一個實(shí)施例中,高速緩存硬件利用單個壓縮比來實(shí)現(xiàn),但包括其它硬件支持,以 便向軟件提供多個壓縮比。作為一個示例,假定高速緩存硬件利用8 : l壓縮比來實(shí)現(xiàn),如 圖4所示。然而,以不同粒度訪問元數(shù)據(jù)的元數(shù)據(jù)訪問操作經(jīng)過解碼以便包括讀取缺省元 數(shù)據(jù)量的微操作和測試所讀取元數(shù)據(jù)的適當(dāng)部分的測試微操作。作為一個示例,所讀取的 缺省元數(shù)據(jù)量為32位。但是,不同粒度/8 : l壓縮的測試操作測試32位所讀取的元數(shù)據(jù) 的正確位,這可基于地址的一定數(shù)量的位、如元數(shù)據(jù)地址的多個LSB和/或上下文ID。
作為說明,在一種支持每字節(jié)數(shù)據(jù)一位元數(shù)據(jù)的未對齊數(shù)據(jù)的元數(shù)據(jù)的方案中, 根據(jù)元數(shù)據(jù)地址的三個LSB從元數(shù)據(jù)的32個讀取位中的八個最低有效位中來選擇單個位。 對于數(shù)據(jù)字,根據(jù)地址的三個LSB從32位讀取元數(shù)據(jù)的16個最低有效位中選擇兩個連續(xù) 的元數(shù)據(jù)位,并且一直繼續(xù)進(jìn)行到對于128位元數(shù)據(jù)大小的16位為止。
在一個實(shí)施例中,對于上述方案,掩碼根據(jù)傳遞給它的元數(shù)據(jù)地址位通過左移位 操作來產(chǎn)生。作為掩碼的說明,產(chǎn)生左移位操作包括
8 : 1 compression :0xFFFE << Address [2:0];
16 : 1 compression :0xFFFC << Address [2:0];
32 : 1 compression :0xFFF0 << Address [2:0];
64 : 1 compression :0xFF00 << Address [2:0];
128 : 1 compression :0x0000 << Address [2:0]. 這個掩碼與加載/讀取微操作所讀取的32位元數(shù)據(jù)逐位經(jīng)過邏輯"或"操作,然 后所得32個位共同經(jīng)過邏輯"與"操作以測試元數(shù)據(jù)/設(shè)置標(biāo)志。 作為另一個實(shí)現(xiàn)示例,使用給定數(shù)據(jù)大小的單個位-因而不允許未對齊數(shù)據(jù)支
持。在這個方案中,掩碼根據(jù)傳遞給它的元數(shù)據(jù)地址位的子集和處理元件ID位通過左移位
操作來產(chǎn)生。因此,對于每字節(jié)一位壓縮的元數(shù)據(jù),所有元數(shù)據(jù)位用于各字節(jié)。對于每個字
一位壓縮的元數(shù)據(jù),僅使用每第2個位,等等,直到只有所讀取的32元數(shù)據(jù)位中的單個位
用于32字節(jié)數(shù)據(jù)操作數(shù)。由于元數(shù)據(jù)存儲對于較大數(shù)據(jù)大小變得越來越稀疏(較高壓縮
率),所以有機(jī)會利用額外空間并列存儲多個上下文的元數(shù)據(jù),這意味著,右元數(shù)據(jù)位根據(jù)
地址LSB位和上下文ID(CID)的組合從32個元數(shù)據(jù)位中選取。 作為產(chǎn)生左移位操作的掩碼的說明,包括8 : 1 compression :0x0001 << OO&Address [2:0]; 16 : 1 compression :0x0001 << 00&CID
&Address [2:1]; 32 : 1 compression :0x0001 << 00&CID [1:0]&Address [2];64 : 1 compression :0x0001 << 00&CID [2:0]; 128 : 1 compression :0x0001 << 0&CID [3:0]; 256 : 1 compression :0x0001 << CID [4:0]. 這個掩碼與第一微操作所讀取的32位元數(shù)據(jù)逐位經(jīng)過邏輯"與"操作,并且所得 32位共同經(jīng)過邏輯"或"操作,以便測試元數(shù)據(jù)以及可能設(shè)置標(biāo)志。 參照圖6,示出訪問數(shù)據(jù)的元數(shù)據(jù)的方法的流程圖。雖然圖6的流程按照基本串行 方式示出,但是流程可至少部分并行地以及可能按照不同順序來執(zhí)行。在流程620,遇到引用給定數(shù)據(jù)項(xiàng)的數(shù)據(jù)地址的元數(shù)據(jù)操作。元數(shù)據(jù)操作的示例包括加載/測試和存儲/寫/ 清除操作或微操作。但是,元數(shù)據(jù)訪問操作可以是訪問元數(shù)據(jù)的顯式軟件指令/操作以及 經(jīng)解碼作為較大的更復(fù)雜指令的一部分的隱式微操作(例如隱式要求更新關(guān)聯(lián)元數(shù)據(jù)的 對數(shù)據(jù)項(xiàng)的訪問)。另外,實(shí)現(xiàn)可選擇成根據(jù)例如保護(hù)環(huán)轉(zhuǎn)變、轉(zhuǎn)變成不同處理器操作模式 或者重新映射存儲器頁面等的某些系統(tǒng)事件大批清除給定上下文、線程或處理器的所有元 數(shù)據(jù)。
元數(shù)據(jù)地址從所引用數(shù)據(jù)地址來確定。確定元數(shù)據(jù)地址的示例包括 利用虛擬到物理地址轉(zhuǎn)換的正常數(shù)據(jù)將數(shù)據(jù)地址轉(zhuǎn)換成數(shù)據(jù)地址,并且將元物理
擴(kuò)展追加到數(shù)據(jù)地址,以便形成元數(shù)據(jù)地址; 將元物理擴(kuò)展追加到虛擬數(shù)據(jù)地址,以便形成元數(shù)據(jù)地址; 利用元物理轉(zhuǎn)換表邏輯將數(shù)據(jù)地址轉(zhuǎn)換成物理元數(shù)據(jù)地址,并且將元物理擴(kuò)展追 加到物理元數(shù)據(jù)地址,以便形成元數(shù)據(jù)地址。 此外,轉(zhuǎn)換可結(jié)合、即基于數(shù)據(jù)與元數(shù)據(jù)的壓縮比,以便單獨(dú)為各壓縮比存儲元數(shù) 據(jù)。 在流程630,高速緩沖存儲器的元數(shù)據(jù)條目根據(jù)元數(shù)據(jù)地址來確定。作為一個示 例,元數(shù)據(jù)地址的標(biāo)簽部分用于搜索標(biāo)簽陣列。如果包括元物理值的標(biāo)簽部分沒有匹配標(biāo) 簽條目,則發(fā)生未命中。在一個實(shí)施例中,不是發(fā)出服務(wù)于高速緩存未命中的窺探請求,而 是本地服務(wù)于未命中,而無需高速緩存域外部的請求,因?yàn)樵獢?shù)據(jù)是僅在高速緩沖存儲器 中保存的有損失的元數(shù)據(jù)。因此,條目按照正常高速緩存分配策略分配有條目中保存的適 當(dāng)元數(shù)據(jù)標(biāo)簽,并且數(shù)據(jù)存儲元件采用缺省元數(shù)據(jù)值來初始化。因此,元數(shù)據(jù)相對關(guān)聯(lián)數(shù)據(jù) 項(xiàng)的局部性和定時也可能得到改進(jìn)。相反,如果發(fā)生命中,則直接確定元數(shù)據(jù)條目。
無論確定條目通過命中還是未命中和條目的分配來確定,適當(dāng)?shù)卦L問元數(shù)據(jù)。例 如,對于加載或測試操作,讀取元數(shù)據(jù)。相反,對于存儲操作,在對應(yīng)元數(shù)據(jù)條目中更新元數(shù) 據(jù)。因此,可以看到,元數(shù)據(jù)可按照有損失的方式保存在本地高速緩沖存儲器中,而無需向 高速緩沖存儲器的數(shù)據(jù)陣列注釋位或者無需昂貴的附加存儲結(jié)構(gòu)。此外,元數(shù)據(jù)可按照壓 縮方式、即數(shù)據(jù)與元數(shù)據(jù)的壓縮比來保存。硬件可實(shí)現(xiàn)單個或多個壓縮比,并且在任一種情 況下,向軟件提供多個壓縮比。 本文所使用的模塊表示任何硬件、軟件、固件或者它們的組合。示為單獨(dú)的模塊邊 界一般通常可改變并且可能重疊。例如,第一和第二模塊可共享硬件、軟件、固件或者它們 的組合,同時可能保留一些獨(dú)立的硬件、軟件或固件。在一個實(shí)施例中,術(shù)語"邏輯"的使用 包括例如晶體管、寄存器等硬件或者例如可編程邏輯裝置等其它硬件。但是,在另一個實(shí)施 例中,邏輯還包括與硬件集成的軟件或代碼,例如固件或微碼。 本文所使用的值包括數(shù)值、狀態(tài)、邏輯狀態(tài)或者二進(jìn)制邏輯狀態(tài)的任何已知表示。 邏輯電平、邏輯值或邏輯的值的使用又稱作1和O,它只是表示二進(jìn)制邏輯狀態(tài)。例如,1表 示高邏輯電平,而O表示低邏輯電平。在一個實(shí)施例中,存儲元、如晶體管或閃存元可以能 夠保存單個邏輯值或多個邏輯值。但是,已經(jīng)使用計(jì)算機(jī)系統(tǒng)中的值的其它表示。例如,十 進(jìn)制數(shù)10也可表示為二進(jìn)制值1010以及十六進(jìn)制字母A。因此,值包括能夠在計(jì)算機(jī)系統(tǒng) 中保存的信息的任何表示。 此外,狀態(tài)可由值或者值的部分來表示。作為一個示例,第一值、如邏輯1可表示缺省或初始狀態(tài),而第二值、如邏輯0可表示非缺省狀態(tài)。另外,在一個實(shí)施例中,術(shù)語"重 置"和"設(shè)置"分別表示缺省和更新值或狀態(tài)。例如,缺省值可能包括高邏輯值、即重置,而 更新值可能包括低邏輯值、即設(shè)置。注意,值的任何組合可用于表示任何數(shù)量的狀態(tài)。
以上提出的方法、軟件、硬件、軟件、固件或代碼的實(shí)施例可經(jīng)由機(jī)器可訪問或機(jī) 器可讀介質(zhì)上存儲的、處理元件可執(zhí)行的指令或代碼來實(shí)現(xiàn)。機(jī)器可訪問/可讀介質(zhì)包括 以機(jī)器、如計(jì)算機(jī)或電子系統(tǒng)可讀形式來提供(即存儲和/或傳送)信息的任何機(jī)構(gòu)。例 如,機(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)或 特性可按照任何適當(dāng)方式結(jié)合在一個或多個實(shí)施例中。 在以上說明書中,參照具體示范實(shí)施例來提供具體實(shí)施方式
。但是很明顯,可對其 進(jìn)行各種修改和變更,而沒有背離所附權(quán)利要求書所提出的本發(fā)明的廣義精神和范圍。因 此,說明書和附圖將被看作是說明性而不是限制性的。此外,實(shí)施例及其它示范語言的使用 不一定表示相同的實(shí)施例或者相同的示例,而是可表示不同且有區(qū)別的實(shí)施例以及可能相 同的實(shí)施例。
20
權(quán)利要求
一種設(shè)備,包括數(shù)據(jù)高速緩沖存儲器,包括用于保存與數(shù)據(jù)項(xiàng)關(guān)聯(lián)的有損失的元數(shù)據(jù)的第一數(shù)據(jù)條目,所述數(shù)據(jù)項(xiàng)保存在所述數(shù)據(jù)高速緩沖存儲器的第二數(shù)據(jù)條目中。
2. 如權(quán)利要求l所述的設(shè)備,還包括與所述第一數(shù)據(jù)條目關(guān)聯(lián)的第一擴(kuò)展字段,用于 保存指明所述第一數(shù)據(jù)條目保存元數(shù)據(jù)的元數(shù)據(jù)值;以及與所述第二數(shù)據(jù)條目關(guān)聯(lián)的第二 擴(kuò)展字段,用于保存指明所述第二數(shù)據(jù)條目保存數(shù)據(jù)的數(shù)據(jù)值。
3. 如權(quán)利要求2所述的設(shè)備,其中,所述第一擴(kuò)展字段還用于保存指明與所述有損失 的元數(shù)據(jù)關(guān)聯(lián)的處理元件的處理元件標(biāo)識符(ID)。
4. 如權(quán)利要求1所述的設(shè)備,其中,與所述數(shù)據(jù)項(xiàng)關(guān)聯(lián)的所述有損失的元數(shù)據(jù)包括所 述數(shù)據(jù)項(xiàng)的屬性,所述屬性從讀監(jiān)視器屬性、寫監(jiān)視器屬性和緩沖屬性組成的組中選取。
5. 如權(quán)利要求2所述的設(shè)備,其中,所述第一擴(kuò)展字段保存在對應(yīng)于所述第一數(shù)據(jù)條 目的第一標(biāo)簽條目中,以及其中所述第二擴(kuò)展字段保存在對應(yīng)于所述第二數(shù)據(jù)條目的第二 標(biāo)簽條目中。
6. 如權(quán)利要求5所述的設(shè)備,還包括高速緩存控制邏輯,用于搜索包括所述第一標(biāo)簽 條目和所述第二標(biāo)簽條目的標(biāo)簽陣列,以便響應(yīng)元數(shù)據(jù)訪問操作而根據(jù)包括保存所述元數(shù) 據(jù)值的所述第一擴(kuò)展字段的所述第一標(biāo)簽條目的值來查找與所述第一數(shù)據(jù)條目對應(yīng)的所 述第一標(biāo)簽條目,所述元數(shù)據(jù)訪問操作引用與所述數(shù)據(jù)項(xiàng)關(guān)聯(lián)的地址以訪問所述有損失的 元數(shù)據(jù)。
7. 如權(quán)利要求5所述的設(shè)備,其中,所述第一標(biāo)簽條目還保存與所述有損失的元數(shù)據(jù) 關(guān)聯(lián)的處理元件標(biāo)識符(ID)以及與所述數(shù)據(jù)項(xiàng)關(guān)聯(lián)的地址的一部分。
8. 如權(quán)利要求7所述的設(shè)備,還包括高速緩存控制邏輯,用于接收引用所述數(shù)據(jù)項(xiàng)的 地址以訪問所述有損失的元數(shù)據(jù)的元數(shù)據(jù)訪問操作,其中所述高速緩存控制邏輯用于根據(jù) 壓縮比將所述地址移位多個位、將所述處理元件ID追加到所述地址,以及將所述元數(shù)據(jù)值 追加到所述地址以形成元數(shù)據(jù)地址,其中所述控制邏輯還用于采用所述元數(shù)據(jù)地址的標(biāo)簽 部分來搜索包括所述第一標(biāo)簽條目和所述第二標(biāo)簽條目的標(biāo)簽陣列以查找所述第一標(biāo)簽 條目。
9. 如權(quán)利要求l所述的設(shè)備,還包括高速緩存控制邏輯,用于選擇所述第一數(shù)據(jù)條目 供收回,以及用于響應(yīng)與所述第一數(shù)據(jù)條目關(guān)聯(lián)的保存指明所述第一數(shù)據(jù)條目保存元數(shù)據(jù) 的所述元數(shù)據(jù)值的所述第一擴(kuò)展字段而不發(fā)起所述有損失的元數(shù)據(jù)到較高級存儲器的回寫。
10. —種設(shè)備,包括高速緩沖存儲器的數(shù)據(jù)陣列,包括第一數(shù)據(jù)條目和第二數(shù)據(jù)條目;以及所述高速緩沖存儲器的標(biāo)簽陣列,包括與所述第一數(shù)據(jù)條目關(guān)聯(lián)的標(biāo)簽條目,其用于 保存指明所述數(shù)據(jù)條目保存數(shù)據(jù)的物理值和指明所述數(shù)據(jù)條目保存數(shù)據(jù)項(xiàng)的元數(shù)據(jù)的元 物理值,所述數(shù)據(jù)項(xiàng)保存在所述數(shù)據(jù)陣列的所述第二數(shù)據(jù)條目中。
11. 如權(quán)利要求IO所述的設(shè)備,還包括控制邏輯,耦合到所述標(biāo)簽陣列,用于接收具 有元數(shù)據(jù)類型的訪問操作所引用的地址,用于響應(yīng)具有所述元數(shù)據(jù)類型的所述訪問而將所 述元物理值追加到所述地址以形成元數(shù)據(jù)地址,以及用于響應(yīng)包括所述元物理值的所述元數(shù)據(jù)地址的標(biāo)簽部分匹配所述標(biāo)簽條目中保存的標(biāo)簽值而確定對所述第一數(shù)據(jù)條目的命 中。
12. 如權(quán)利要求11所述的設(shè)備,其中,用于保存指明所述數(shù)據(jù)條目保存元數(shù)據(jù)的所述 第一標(biāo)簽條目包括保存設(shè)置成指明所述數(shù)據(jù)條目保存元數(shù)據(jù)的第一邏輯值的地址擴(kuò)展位 的所述第一標(biāo)簽條目,以及其中用于將所述元物理值追加到所述地址以形成元數(shù)據(jù)地址的 所述控制邏輯包括用于將第一邏輯值追加到所述地址以形成所述元數(shù)據(jù)地址的所述控制 邏輯。
13. 如權(quán)利要求10所述的設(shè)備,還包括轉(zhuǎn)換邏輯,用于接收引用與所述數(shù)據(jù)項(xiàng)關(guān)聯(lián)的地址的元數(shù)據(jù)類型的訪問操作,以及用 于將所述地址轉(zhuǎn)換成元數(shù)據(jù)地址;高速緩存查找邏輯,耦合到所述轉(zhuǎn)換邏輯,用于響應(yīng)所述元數(shù)據(jù)地址的標(biāo)簽部分匹配 所述標(biāo)簽陣列中包含的所述標(biāo)簽條目所保存的標(biāo)簽值而確定對所述標(biāo)簽條目的命中;以及控制邏輯,耦合到所述高速緩存查找邏輯,用于響應(yīng)所述高速緩存查找邏輯確定對關(guān) 聯(lián)所述第一數(shù)據(jù)條目的所述標(biāo)簽條目的所述命中而執(zhí)行對所述第一數(shù)據(jù)條目的所述訪問 操作。
14. 如權(quán)利要求13所述的設(shè)備,其中,將所述地址轉(zhuǎn)換成所述元數(shù)據(jù)地址的所述轉(zhuǎn)換 邏輯基于壓縮比N,以及其中N是數(shù)據(jù)量比元數(shù)據(jù)量。
15. 如權(quán)利要求14所述的設(shè)備,其中,根據(jù)壓縮比N將所述地址轉(zhuǎn)換成所述元數(shù)據(jù)地址 的所述轉(zhuǎn)換邏輯包括將所述地址移位log2(N)位并且將所述元物理值追加到所述地址以形 成所述元數(shù)據(jù)地址的所述轉(zhuǎn)換邏輯。
16. 如權(quán)利要求15所述的設(shè)備,還包括控制寄存器,用于保存與所述訪問操作關(guān)聯(lián)的 處理元件的處理元件標(biāo)識符(ID),其中所述轉(zhuǎn)換邏輯根據(jù)壓縮比N將所述地址轉(zhuǎn)換成所述 元數(shù)據(jù)地址還包括從所述地址刪除log2(N)個位,并且用所述處理元件ID取代所述被刪除 的logjN)位的至少一部分。
17. 如權(quán)利要求13所述的設(shè)備,還包括用于定義元物理頁表的寄存器,其中將所述地 址轉(zhuǎn)換成所述元數(shù)據(jù)地址的所述轉(zhuǎn)換邏輯包括根據(jù)寄存器中定義的元_物理頁表將所述 地址轉(zhuǎn)換成所述元數(shù)據(jù)地址的元_物理轉(zhuǎn)換后備緩沖器(MTLB)。
18. —種處理器,包括 高速緩沖存儲器;以及耦合到所述高速緩沖存儲器以便執(zhí)行以下操作的邏輯 接收引用數(shù)據(jù)項(xiàng)的地址的至少一部分; 將所述地址的所述部分與元物理擴(kuò)展關(guān)聯(lián);以及確定高速緩沖存儲器的元數(shù)據(jù)條目,以便根據(jù)所述地址和所述元物理擴(kuò)展來訪問與所 述高速緩沖存儲器的數(shù)據(jù)項(xiàng)條目中保存的數(shù)據(jù)項(xiàng)關(guān)聯(lián)的元數(shù)據(jù)。
19. 如權(quán)利要求18所述的處理器,其中,用于接收引用所述數(shù)據(jù)項(xiàng)的所述地址的至少 一部分的所述邏輯響應(yīng)控制邏輯接收引用所述地址的元數(shù)據(jù)訪問操作。
20. 如權(quán)利要求18所述的處理器,其中,用于將所述地址的所述部分與所述元物理擴(kuò) 展關(guān)聯(lián)的所述邏輯包括用于將所述元物理擴(kuò)展追加到所述地址的所述部分的最高有效位 (MSB)的所述邏輯。
21. 如權(quán)利要求20所述的處理器,其中,所述元物理擴(kuò)展包括單個元物理擴(kuò)展位。
22. 如權(quán)利要求20所述的處理器,其中,所述元物理擴(kuò)展包括多個元物理擴(kuò)展位。
23. 如權(quán)利要求22所述的處理器,其中,所述多個元物理擴(kuò)展位分別對應(yīng)于單獨(dú)的元 物理地址空間。
24. 如權(quán)利要求22所述的處理器,其中,所述多個元物理擴(kuò)展位包括單個元物理標(biāo)識 符位和多個處理元件標(biāo)識符位。
25. 如權(quán)利要求18所述的處理器,其中,與所述數(shù)據(jù)項(xiàng)關(guān)聯(lián)的所述元數(shù)據(jù)在所述元數(shù) 據(jù)條目從所述高速緩沖存儲器收回時丟失,以及其中所述元數(shù)據(jù)包括所述數(shù)據(jù)項(xiàng)的屬性。
26. —種設(shè)備,包括 高速緩沖存儲器的數(shù)據(jù)陣列;地址轉(zhuǎn)換邏輯,用于根據(jù)數(shù)據(jù)比元數(shù)據(jù)的壓縮比將關(guān)聯(lián)所述數(shù)據(jù)陣列的數(shù)據(jù)條目中的 數(shù)據(jù)項(xiàng)的數(shù)據(jù)地址轉(zhuǎn)換成關(guān)聯(lián)所述高速緩沖存儲器中的所述數(shù)據(jù)陣列的元數(shù)據(jù)條目的元 數(shù)據(jù)地址;以及控制邏輯,耦合到所述地址轉(zhuǎn)換邏輯和數(shù)據(jù)陣列,用于響應(yīng)接收到引用所述數(shù)據(jù)地址 的元數(shù)據(jù)訪問操作和所述地址轉(zhuǎn)換邏輯轉(zhuǎn)換所述數(shù)據(jù)地址而訪問所述數(shù)據(jù)陣列的所述元 數(shù)據(jù)條目。
27. 如權(quán)利要求26所述的系統(tǒng),其中,所述地址轉(zhuǎn)換邏輯包括用于定義元物理頁表的 存儲裝置以及用于根據(jù)所述壓縮比利用所述元物理頁表將所述數(shù)據(jù)地址轉(zhuǎn)換成所述元數(shù) 據(jù)地址的元物理轉(zhuǎn)換緩沖器。
28. 如權(quán)利要求26所述的系統(tǒng),其中,所述地址轉(zhuǎn)換邏輯根據(jù)數(shù)據(jù)比元數(shù)據(jù)的所述壓 縮比將所述數(shù)據(jù)地址轉(zhuǎn)換成所述元數(shù)據(jù)地址包括將所述數(shù)據(jù)地址向下移位壓縮比以2為 底的對數(shù)個位以形成移位的地址,并且將所述移位的地址與元物理擴(kuò)展值關(guān)聯(lián)以形成所述 元數(shù)據(jù)地址。
29. 如權(quán)利要求28所述的系統(tǒng),其中,所述地址轉(zhuǎn)換邏輯根據(jù)數(shù)據(jù)比元數(shù)據(jù)的所述壓 縮比將所述數(shù)據(jù)地址轉(zhuǎn)換成所述元數(shù)據(jù)地址還包括在將所述移位的地址與所述元物理擴(kuò) 展值關(guān)聯(lián)以形成所述元數(shù)據(jù)地址之前,將處理元件標(biāo)識符與所述移位的地址關(guān)聯(lián)。
30. —種方法,包括遇到引用所述高速緩沖存儲器的數(shù)據(jù)條目中保存的數(shù)據(jù)項(xiàng)的數(shù)據(jù)地址的元數(shù)據(jù)操作;從所述數(shù)據(jù)地址確定元數(shù)據(jù)地址;根據(jù)所述元數(shù)據(jù)地址來確定所述高速緩沖存儲器的元數(shù)據(jù)條目;以及 響應(yīng)確定所述元數(shù)據(jù)條目而訪問所述元數(shù)據(jù)條目中的元數(shù)據(jù)。
31. 如權(quán)利要求30所述的方法,其中,從所述數(shù)據(jù)地址確定所述元數(shù)據(jù)地址包括將所 述數(shù)據(jù)地址轉(zhuǎn)換成數(shù)據(jù)地址,并且將元物理擴(kuò)展追加到所述數(shù)據(jù)地址以形成所述元數(shù)據(jù)地 址。
32. 如權(quán)利要求30所述的方法,其中,從所述數(shù)據(jù)地址確定所述元數(shù)據(jù)地址包括利用 元物理轉(zhuǎn)換表邏輯以及將元物理擴(kuò)展追加到所述物理元數(shù)據(jù)地址以形成所述元數(shù)據(jù)地址 從而將所述數(shù)據(jù)地址轉(zhuǎn)換成物理元數(shù)據(jù)地址。
33. 如權(quán)利要求32所述的方法,其中,利用元物理轉(zhuǎn)換表邏輯將所述數(shù)據(jù)地址轉(zhuǎn)換成物理元數(shù)據(jù)地址基于數(shù)據(jù)比元數(shù)據(jù)的壓縮比。
34. 如權(quán)利要求30所述的方法,其中,所述數(shù)據(jù)地址包括虛擬數(shù)據(jù)地址,以及從所述數(shù) 據(jù)地址確定所述元數(shù)據(jù)地址包括將元物理擴(kuò)展追加到所述虛擬數(shù)據(jù)地址以形成所述元數(shù) 據(jù)地址。
35. 如權(quán)利要求30所述的方法,其中,所述元數(shù)據(jù)操作包括用于存儲新數(shù)據(jù)的存儲元 數(shù)據(jù)操作,并且訪問所述元數(shù)據(jù)條目中的元數(shù)據(jù)包括將新的元數(shù)據(jù)存儲到所述元數(shù)據(jù)條 目。
36. 如權(quán)利要求30所述的方法,其中,所述元數(shù)據(jù)操作包括用于加載所述元_數(shù)據(jù)的加 載元數(shù)據(jù)操作,并且訪問所述元數(shù)據(jù)條目中的元數(shù)據(jù)包括從所述元數(shù)據(jù)條目加載所述元數(shù) 據(jù)。
37. 如權(quán)利要求30所述的方法,其中,所述元數(shù)據(jù)從所述數(shù)據(jù)項(xiàng)的屬性、所述數(shù)據(jù)項(xiàng)的 處理元件標(biāo)識符和所述數(shù)據(jù)項(xiàng)的備份數(shù)據(jù)的位置組成的組中選取。
全文摘要
本發(fā)明涉及用于在硬件中保存有損失的元數(shù)據(jù)的元物理地址空間。本文描述用于保存有損失的元數(shù)據(jù)的元物理地址空間的方法和設(shè)備。遇到引用數(shù)據(jù)項(xiàng)的數(shù)據(jù)地址的顯式或隱式元數(shù)據(jù)訪問操作。硬件將數(shù)據(jù)地址修改成包括元物理擴(kuò)展的元數(shù)據(jù)地址。元物理擴(kuò)展在數(shù)據(jù)地址空間上重疊一個或多個元物理地址空間。包括元物理擴(kuò)展的元數(shù)據(jù)地址的一部分用于搜索保存數(shù)據(jù)項(xiàng)的高速緩沖存儲器的標(biāo)簽陣列。因此,元數(shù)據(jù)訪問操作僅根據(jù)元數(shù)據(jù)地址擴(kuò)展來命中高速緩存的元數(shù)據(jù)條目。但是,由于元數(shù)據(jù)保存在高速緩存中,所以元數(shù)據(jù)可能與數(shù)據(jù)競爭高速緩存中的空間。
文檔編號G06F12/08GK101770429SQ20091011366
公開日2010年7月7日 申請日期2009年12月30日 優(yōu)先權(quán)日2008年12月30日
發(fā)明者E·科亨, G·希菲爾, O·馬古利斯, R·薩德, S·雷金, V·巴辛 申請人:英特爾公司