TWI446261B - 用於保存硬體內有損耗元資料之擬實體位址空間 - Google Patents

用於保存硬體內有損耗元資料之擬實體位址空間 Download PDF

Info

Publication number
TWI446261B
TWI446261B TW098143894A TW98143894A TWI446261B TW I446261 B TWI446261 B TW I446261B TW 098143894 A TW098143894 A TW 098143894A TW 98143894 A TW98143894 A TW 98143894A TW I446261 B TWI446261 B TW I446261B
Authority
TW
Taiwan
Prior art keywords
metadata
data
address
item
entity
Prior art date
Application number
TW098143894A
Other languages
English (en)
Other versions
TW201030609A (en
Inventor
Gad Sheaffer
Shlomo Raikin
Vadim Bassin
Raanan Sade
Ehud Cohen
Oleg Margulis
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW201030609A publication Critical patent/TW201030609A/zh
Application granted granted Critical
Publication of TWI446261B publication Critical patent/TWI446261B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)

Description

用於保存硬體內有損耗元資料之擬實體位址空間 發明領域
本發明係有關於處理器執行領域及,尤其,有關於成組指令的執行。
交互參考相關申請案
此申請案係有關於下面一併提出的專利申請案:Gad Sheaffer等人2008年12月30日提出之美國專利申請案第12/346,518號(具有代理人案號P29129),名稱為"Registering a User-Handler in Hardware for Transactional Memory Event Handling,";Gad Sheaffer等人2008年12月30日提出之美國專利申請案第12/346,539號(具有代理人案號P29131),名稱為"Memory Model for Hardware Attributes Within a Transactional Memory System,";Gad Sheaffer等人2009年12月30日提出之美國專利申請案第12/346,530號(具有代理人案號P29130),名稱為"Read and Write Monitoring Attributes in Transactional Memory(TM) Systems,";Gad Sheaffer等人2008年12月30日提出之美國專利申請案第12/346,543號(具有代理人案號P29132),名稱為"Extending Cache Coherency Protocols to Support Locally Buffered Data,"。
發明背景
半導體處理及邏輯設計上的發展已允許增加可能存在積體電路裝置上的邏輯數量。結果,電腦系統組態已從一系統中一單或多積體電路演變成多核心及多邏輯處理器出現在個別的積體電路上。一處理器或積體電路典型地包含一單處理器晶片,其中該處理器晶片可包括任一數目的核心或邏輯處理器。
積體電路上越來越多的核心及邏輯處理器使得更多的軟體執行緒可被並行執行。然而,可被同時執行之軟體執行緒的增加隨著同步該等軟體執行緒之間的共享資料已造成問題。用於存取多核心或多邏輯處理器系統中的共享資料之一常見解決方法包含使用鎖定來保證共享資料多數存取間的互斥。然而,執行多軟體執行緒能力的日益增加可能導致假競爭及序列化執行。
例如,考慮一保存共享資料之散列表。使用一鎖定系統,一程式設計師可鎖定整個散列表,允許一執行緒存取整個散列表。然而,其它執行緒的通量及性能可能受到不利影響,因為直到該鎖定被解除前它們不能存取該散列表中的任一項。可選擇地,在該散列表中的每一項可被鎖定。不管怎樣,在將此簡單範例外插至一大的可擴充程式,明顯的是,鎖定競爭、序列化、微粒同步、及死鎖避免的複雜度變成程式設計師的極沉重負擔。
另一最近的資料同步技術包括使用事務記憶體(TM)。常見的事務執行包括執行一成組之多個微操作、操作、或指令。在上面範例中,這兩執行緒都在散列表中執行,且它們的記憶體存取被監視/追蹤。如果這兩執行緒存取/改變同一項,衝突解決可被執行以確保資料有效。一種類型的事務執行包括軟體事務記憶體(STM),其中追蹤記憶體存取、衝突解決、放棄任務、及其它事務任務在軟體中執行,經常沒有硬體支援。
另一類型的事務執行包括一硬體事務記憶體(HTM)系統,其中硬體被包括以支援存取追蹤、衝突解決、及其它事務任務。以往,用額外的位元擴充實際記憶體陣列來保存資訊,諸如關於軌道讀取、寫入、及緩衝之硬體屬性,結果,該資料與自處理器至記憶體的資料一起行進。因為資訊隨著資料行進於整個記憶體階層,通常此資訊被認為是持續的,即其在一快取逐出之後不丟失。然而,此持續性在整個記憶體階層系統上加上更多費用。
儲存類似資訊之其它先前嘗試已透過擴充或加入其它與一資料陣列分離的結構而實施,這些其它結構經常保存有損耗資訊,即因該資訊並不隨著資料在整個記憶體階層中行進,在逐出之後要被丟失的資訊。然而,保存此資料之額外結構可能是昂貴的。
依據本發明之一實施例,係特定提出一種裝置,其包含:一資料快取記憶體,其包括用以保存與一資料項目相關聯的有損耗元資料之一第一資料項,該資料項目係欲被保存於該資料快取記憶體之一第二資料項中。
圖式簡單說明
本發明以範例方式被說明且無意受該等附圖的圖示限制。
第1圖說明一處理器的一實施例,該處理器包括能夠並行執行多軟體執行緒之多處理元件。
第2a圖說明用於保存資料的元資料之一擬實體位址空間之一實施例。
第2b圖說明用於保存資料的元資料之一擬實體位址空間之另一實施例。
第3a圖說明支援存取一擬實體位址空間之結構的一實施例。
第3b圖說明支援存取一擬實體位址空間之結構的另一實施例。
第4圖說明壓縮資料成元資料之一實施例。
第5圖說明壓縮資料成元資料之另一實施例。
第6圖說明存取資料的元資料之一方法的一流程圖。
詳細說明
在下面的說明中,提出許多特定細節,諸如用於事務執行之特定硬體結構的範例、特定類型及存取監視的實施、特定快取實施、特定類型快取一致性模型、特定資料粒化、及特定類型的記憶體存取及位址等以提供對本發明的一徹底理解。然而,對於熟於此技者將明顯的是,這些特定細節不需要被使用來實施本發明。在其它實例中,習知的組件或方法,諸如軟體事務代碼、事務劃分、特定及可選擇對多核心及多執行緒處理器架構、特定編譯器方法/實施、及微處理器的特定操作細節,沒有被詳細描述以避免不必要地模糊本發明。
本文描述的方法及裝置是為了支援用於保存有損耗元資料之一擬實體位址空間。特定地,針對元資料的一擬實體位址空間主要參考一支援一事務記憶體系統而討論。然而,支援用於保存元資料的擬實體位址空間的該等方法及裝置並不這樣受限制,因為它們可在記憶體架構中被實施來保存針對相關聯的資料項目之元資料。
參考第1圖,能夠並行執行多執行緒的一處理器之一實施例被說明。注意,處理器100可包括針對硬體事務執行之硬體支援。結合硬體事務執行,或單獨地,處理器100也可提供針對一軟體事務記憶體(STM)的加速、一STM的單獨執行、或其等的一組合(諸如一混合事務記憶體(TM)系統)之硬體加速。處理器100包括任一處理器,諸如一微處理、一嵌入式處理器、一數位信號處理器(DSP)、一網路處理器、或其它裝置來執行代碼。處理器100,如所說明,包括多個處理元件。
在一實施例中,一處理元件指一執行緒單元、一處理單元、一上下文、一邏輯處理器、一硬體執行緒、一核心、及/或能夠保存一處理器的狀態(諸如一執行狀態或架構狀態)之任何其它元件。換言之,一處理元件在一實施例中指能夠獨立地與代碼相關聯之任何硬體,諸如一軟體執行緒、作業系統、應用、或其它代碼。一實體處理器典型地指一積體電路,其可能包括任何數目的其它處理元件,諸如核心或硬體執行緒。
一核心經常指設置在能夠維持一獨立架構狀態之一積體電路上的邏輯,其中每一獨立維持的架構狀態與至少一些專用的執行資源相關聯。與核心對比,一硬體執行緒典型地指設置在能夠維持一獨立架構狀態之一積體電路上的任一邏輯,其中該等獨立維持的架構狀態共享存取來執行資源。如可見,當某些資源被共享時及其它資源為一架構狀態所專用,一硬體執行緒與核心之間的命名之該線重疊。但往往,一核心與一硬體執行緒被一作業系統視為個別的邏輯處理器,其中該作業系統能夠個別地排程在每一邏輯處理器上的操作。
實體處理器100,如在第1圖中說明,包括兩核心,核心101及102,它們共享對較高階快取110的存取。雖然處理器100可包括非對稱的核心,即具有不同組態、功能單元、及/或邏輯的核心,但是說明的是對稱的核心。結果,被說明為等同於核心101之核心102將不詳細討論以避免重複討論。另外,核心101包括兩硬體執行緒101a及101b,而核心102包括兩硬體執行緒102a及102b。因此,軟體實體,諸如一作業系統,可能將處理器100視為四獨立的處理器,即能夠並行執行四軟體執行緒之四邏輯處理器或處理元件。
這裡,一第一執行緒與架構狀態暫存器101a相關聯,一第二執行緒與架構狀態暫存器101b相關聯,一第三執行緒與架構狀態暫存器102a相關聯,一第四執行緒與架構狀態暫存器102b相關聯。如所說明,架構狀態暫存器101a在架構狀態暫存器101b中被複製,這樣個別的架構狀態/上下文能夠針對邏輯處理器101a及邏輯處理器101b被儲存。其它較小資源,諸如指令指標及重命名分配器邏輯130中的重命名邏輯也可針對執行緒101a及101b而被複製。一些資源,諸如重排序/退出單元135中的重排序緩衝、ILTB 120、載入/儲存緩衝、及隊列可透過分區而被共享。其它資源,諸如通用內部暫存器、分頁表基底暫存器、低階資料快取及資料TLB 115、執行單元140、及無序單元135的部分可能被完全共享。
處理器100往往包括其它資源,這些其它資源可被完全共享、透過分區共享、或被處理元件專用/專用於處理元件。在第1圖中,說明具有一處理器的說明性功能單元/資源之一純示範處理器的一實施例。注意的是,一處理器可包括或忽略這些功能單元中的任一功能單元,且包括未描繪的任何其它習知功能單元、邏輯、或韌體。
如所說明,處理器100包括匯流排介面模組105來與處理器100外部的裝置通訊,諸如系統記憶體175、一晶片組、一北橋、或其它積體電路。記憶體175可專用於處理器100或與一系統中的其它裝置共享。較高階或深層(further out)快取110係用以快取最近自較高階快取110提取的元素。注意的是較高階或深層指增加或進一步遠離該(等)執行單元之快取階。在一實施例中,較高階快取110是一第二級資料快取。然而,較高階快取110並不這樣被限制,因為其可與一指令快取相關聯或包括一指令快取。一追蹤快取,即一類型的指令快取,在解碼器125儲存最近解碼的追蹤之後可代之被耦合。模組120也可能包括一支路目標緩衝器來預測被執行/取的支路及一指令轉換緩衝器(I-TLB)來儲存針對指令的位址轉換項。
解碼模組125被耦合以提取單元120來解碼提取的元素。在一實施例中,處理器100與一指令集架構(ISA)相關聯,該指令集架構(ISA)定義/指定在處理器100上可執行的指令。這裡,被該ISA識別的機器代碼指令往往包括被稱為一操作碼之指令的一部分,操作碼引用/指定要被執行的一指令或操作。
在一實施例中,分配器及重命名器區塊130包括一分配器來保存資源,諸如儲存指令處理結構之暫存器檔案。然而,執行緒101a及101b可能能夠無序執行,其中分配器及重命名器區塊也保存其它資源,諸如追蹤指令結果的重排序緩衝器。單元130也可包括一暫存重命名器來將程式/指令引用暫存器重命名為在處理器100內部的其它暫存器。重排序/退出單元135包括組件,諸如上面提到的該等重排序緩衝器、載入緩衝器、及儲存緩衝器,來支援無序執行及後面無序執行之指令的有序退出。
排程器及執行單元區塊140在一實施例中包括排程在執行單元上的指令/操作之一排程器單元。例如,一浮點指令在具有一可利用浮點執行單元之一執行單元的一埠上排程。與該等執行單元相關聯之暫存器檔案也被包括以儲存資料指令處理結果。示範的執行單元包括一浮點執行單元、一整數執行單元、一跳越執行單元、一載入執行單元、一儲存執行單元、及其它習知執行單元。
較低階資料快取及資料轉換緩衝器(D-TLB)150被耦合至執行單元140。該資料快取係用以儲存最近使用/操作的元素,諸如可能被保存在記憶體一致性狀態中的資料運算元。該D-TLB係用以儲存最近虛擬/線性至實體位置的轉換。作為一特定範例,一處理器可包括一頁表結構來將實體記憶體劃分為多個虛擬頁。
在一實施例中,處理器100能進行硬體事務執行、軟體事務執行、或其等的一組合或混合。一事務,亦可被稱為一臨界或原子代碼區段,包括以一原子組而被執行之一成組指令、操作或微操作。例如,指令或操作可用來劃分一事務或一臨界區段。在一實施例中,下面較詳細描述,這些指令是一指令集的一部分,諸如被處理器100的硬體(諸如上面描述的解碼器)識別之一指令集架構(ISA)。往往,這些指令,一旦自一高級語言被編譯為硬體可識別的組合語言,包括操作碼(opcode)、或在一解碼階段期間解碼器可識別之其它指令部分。
典型地,在一事務執行期間,直至該事務被提交完成前記憶體的更新並非全局可見。到一位置的一事務寫入可能為一本地執行緒可見,但是,響應於另一執行緒的一讀取,該寫入資料直至包括該事務寫入的事務被提交完成前不被轉送。在該事務仍擱置時,自一記憶體被載入及寫入至一記憶體中的資料項/元素被追蹤,如下文中更詳細討論。一旦該事務到達一提交完成點,如果針對該事務沒有檢測到衝突,則該事務被提交完成及在該事務期間所作的更新成為全局可見。
然而,如果該事務在其擱置期間失效,該事務被中止且有可能重新啟動而未使該等更新全局可見。結果,本文所使用之一事務擱置指已開始執行但未被提交完成或中止(即擱置)的一事務。
一軟體事務記憶體(STM)系統經常指執行存取追蹤、衝突解決、或在或至少部分地在軟體中之其它事務記憶體任務。在一實施例中,處理器100能夠執行一編譯器以編譯程式碼來支援事務執行。這裡,該編譯器可插入操作、呼叫、函數、及其它代碼使事務得以執行。
一編譯器常常包括將源文本/代碼轉換成目標文本/代碼之一程式或程式集。通常,用一編譯器編譯程式/應用碼在多階段完成並轉向將高級程式化語言代碼轉換成低級機器或組合語言代碼。但是,單次編譯器仍可用於簡單編譯。一編譯器可利用任何習知編譯技術並執行任何習知編譯器操作,諸如詞彙分析、預處理、剖析、語義分析、代碼產生、代碼轉換、及代碼優化。
較大的編譯器往往包括多階段,但最經常這些階段被包括在兩一般階段中:(1)一前端,即一般地在語法處理、語義處理、及一些轉換/優化可發生的情況下,及(2)一後端,及一般地在分析、轉換、優化、及代碼產生的情況下。一些編譯器指一中端,其說明一編譯器的前端與後端之間描繪的模糊。結果,對一編譯器插入、關聯、產生、或其它操作的引用可在前面提到的任一階段或趟,及一編譯器之任何其它習知階段或趟發生。作為一說明性範例,一編譯器在編譯的一或多個階段中可能插入事務操作、呼叫、函數等,諸如在編譯的一前端階段插入呼叫/操作並接著在一事務記憶體轉換階段將呼叫/操作轉換成低級代碼。
然而,不論一編譯器的執行環境及動態或靜態性質,該編譯器在一實施例中編譯程式碼來使事務能夠執行。因此,對程式碼的引用在一實施例中指(1)執行(一)編譯器程式(無論動態地或靜態地)以編譯主程式碼來維持事務結構,或執行其它與事務相關的操作,(2)執行包括事務操作/呼叫的主程式碼,(3)執行其它程式碼,諸如與主程式碼相關聯的庫或(4)其等的一組合。
在一實施例中,處理器100能夠執行利用硬體/邏輯的事務,即在一硬體事務記憶體(HTM)系統中。當實施一HTM時,自一架構及微架構透視存在許多特定的實施細節;這些細節中的大多數文中並未討論以避免不必要的模糊本發明。然而,一些結構及實施被揭露是為了說明。但是,應該注意的是,這些結構及實施並不必需且可用具有不同實施細節的其它結構擴充及/或代替。
本地處理元件及可能地其它處理元件可對資料項作存取及請求。在一事務記憶體系統中沒有安全機制,這些存取中的一些存取將可能導致無效的資料及執行,即對資料的一寫入使一讀取無效,或無效資料的一讀取。結果,為了識別可能的衝突,處理器100可能包括追蹤或監視記憶體對資料項目的存取及自資料項目存取之邏輯。
一資料項目或資料元素可包括如被硬體、軟體或其等的一組合所定義之在任一粒化級的資料。資料、資料元素、資料項、或引用其等之一非詳盡無遺的範例列表包括一記憶體位址、一資料對象、一類、一類型的動態語言代碼之一欄位、一類型的動態語言代碼、一變數、一運算元、一資料結構、及對一記憶體位址之一間接引用。然而,任一習知成組資料可被認為是資料項目的一資料元素。上面的幾個範例,諸如一類型動態語言代碼的一欄位及一類型動態語言代碼指動態語言代碼的資料結構。為了說明,動態語言代碼,諸如Sun Microsystems公司的JavaTM ,是一強類型語言。每一變數具有在編譯時間已知的一類型。類型被劃分成兩類別:基本類型(布爾及數字,例如整、浮點)及引用類型(類、介面及陣列)。引用類型的值是對對象的引用。在JavaTM 中,由欄位構成的一對象可以是一類實例或一陣列。給定類A的一對象,習慣於使用符號A::x來指類型A的欄位x及a.x指類A之對象a的欄位x。例如,一表式可被表達為a.x=a.y+a.z。這裡,欄位y及欄位z被載入來相加及結果被寫入至欄位x。
因此,監視/緩衝記憶體存取資料項目可在任一資料級粒化被執行。例如,在一實施例中,記憶體存取資料在一類型級被監視。這裡,對一欄位A::x的一事務寫入及欄位A::y的一非事務載入可被監視為同一資料項目,即類型A。在另一實施例中,記憶體存取監視/緩衝在一欄位級粒化被執行。這裡,對A::x的一事務寫入及A::y的一非事務載入可被監視為同一資料項目,因為它們是對單獨欄位的引用。注意的是,其它資料結構或程式化技術可納入考量追蹤記憶體對資料項目的存取。作為一範例,假設,類型A的對象的欄位x及y(即A::x及A::y),指向類型B的對象,被初始化為最近分配的對象,且在初始化後未被寫入。在一實施例中,對由A::x指向之一對象的一欄位B::z之一事務寫入關於由A::y指向之一對象的欄位B::z之一非事務載入並不監視為記憶體存取同一資料項目。根據這些範例的外插,可能判定的是,監視程式可在任一資料粒化級執行監視/緩衝。
在一實施例中,監視程式包括讀取監視程式及寫入監視程式用以相應地追蹤被決定受監視的載入及儲存。作為一範例,硬體讀取監視程式及寫入監視程式係用以監視在資料項的一粒化之資料項而不論基本儲存結構的粒化。在一實施例中,一資料項藉由在儲存結構的粒化相關聯的追蹤機制來被定界以確保該至少整個資料項被適當監視。Gad Sheaffer等人於此一道提出之共同待決申請案(代理人卷號D71720),名稱為“Read and Write Monitoring Attributes in Transactional Memory(TM) Systems”中較詳細討論利用讀取監視程式/屬性來監視資料項之一範例。然而,監視程式、屬性、注解、或其它追蹤機制可被用來檢測與事務執行(利用任何粒度的資料或結構來保存該資料)相關聯的衝突。
讀取或寫入屬性包括用以保存與資料項目相關聯的狀態之任何邏輯、韌體、或結構。例如,針對一資料項目的屬性包括一位元向量,其中在該位元向量中的每一位元表示一資料項目的一屬性,諸如事務性載入、事務性寫入、非事務性載入、非事務性寫入、不是事務性載入、不是事務性寫入、檢測到存取衝突、沒有檢測到存取衝突、一讀取請求、沒有讀取請求、一寫入請求、沒有寫入請求、一擁有請求、沒有擁有請求、或與一資料項目或用以保存該資料項目的記憶體位置相關聯的任何其它屬性或狀態。作為另一範例,針對一資料項目的屬性包括一編碼值。例如,狀態,諸如該四狀態:(1)事務性寫入;(2)事務性讀取;(3)不是事務性寫入;及(4)不是事務性讀取,利用兩屬性(即00、01、11、及10的四個二元值)來被編碼。
基於該設計,快取線之快取一致性請求及受監視的一致性狀態之不同組合導致可能的衝突,諸如保存處於一共享讀取狀態的一資料項目之一快取線及指示對該資料項目的一寫入請求之一探聽(snoop)。相反地,保存處於一緩衝寫入狀態的一資料項目之一快取線及指示對該資料項目的一讀取請求之一外部探聽可視為可能衝突。在一實施例中,為了檢測這些組合的存取請求及屬性狀態探聽邏輯被耦合至衝突/報告邏輯,諸如用於衝突檢測/報告之監視程式及/或邏輯。
在一實施例中,元資料,諸如資料的一屬性或特性,被本地保存在一記憶體中。作為一範例,資料在一快取記憶體之一項中被快取,而該資源的元資料被保存在該快取的另一項中。雖然,在此範例中,元資料可能與資料競爭快取記憶體中的空間,毋需額外擴充資料陣列或額外分離儲存結構而本地保存元資料的能力可能致使,在不需整個記憶體階層中激增之持續元資料的高昂成本、或增加額外儲存結構的情況下,有效支援元資料。
在一實施例中,硬體中元資料對資料的實體映射並不直接為軟體可見。結果,在此範例中,元資料存取操作及引用資料位址依賴該硬體來執行正確的轉換,即映射以使當地存取該元資料。在一實施例中,一或多個擬實體位址空間在一實體位址空間中被覆蓋以存取元資料。實質上,保存在一記憶體中的一資料位址引用資料被轉換/操作來獲得一元資料位址,該元資料位址被用來存取在同一記憶體中但在一不同轉換位置之元資料。
為了說明,一擬實體值被後附於一資料位址上以獲得一元資料位址。將一第一位址轉換成一第二位置的任何方法可被使用。將一資料位址轉換成一元資料位址的一範例包括使用一實體位址或一虛擬位址加上加入一擬實體值來將資料位址自元資料位址中分離出來。作為另一範例,一資料位址可使用單獨的轉換表/邏輯來轉換以獲得一不同的元資料位址。
因此,一記憶體能以一相對於軟體透通的方式來保存資料項的元資料。當硬體檢測到對元資料的一存取操作時,透過顯式操作碼(一指令的操作碼)或將一指令解碼成一元資料存取微操作,該硬體執行由存取操作引用之資料位址必需轉換相應地存取該元資料。這裡,該元資料可能是有損耗的,即在選擇一保存該元資料之項供逐出後被丟失。然而,元資料的損耗能以一類似方式來保存以處理監視屬性的衝突或損耗,如Gad Sheaffer等人與此案一起提出申請,代理人卷號P29129,名稱為“Registering a User-Handler in Hardware for Transactional Memory Event Handling”的申請案中所描述。
如上述首次參照第1圖所述,處理器100的架構僅是說明性的,便於討論。類似地,轉換針對引用元資料的資料位址之特定範例也是示範性地,因為可使用將同一記憶體內單獨項中的資料與元資料相關聯的任一方法。
參考第2a圖,其描繪了用於保存與資料相關聯的元資料之一擬實體位址空間的一實施例。說明部分的一快取記憶體,諸如控制邏輯250、標籤陣列205、及資料陣列207,而特定的控制電路,諸如快取詢查、命中、及不命中電路、及其它較大結構未被說明以簡化本討論。一快取的最常見的範例包括一資料快取,諸如在第1圖中說明之一第一級快取或第二級快取。
雖然快取架構並未詳細描述以避免不必要地模糊本討論,但是一快取能以許多方式來被組織。例如,一快取可以完全相關聯,即記憶體位址可被保存在快取、相關聯的集合(其中某些範圍的記憶體位址被限於快取的特定集合)、或直接映射的快取(其中多位址被保存在快取內的單一位置中)中的任何地方。
如所說明,該快取包括資料部分207(也稱為一資料快取記憶體或一資料陣列)、與資料陣列207相關聯之標籤陣列205、及與標籤陣列205及資料陣列207相關聯之控制邏輯230。資料部分207包括元素210、215、220、及225。本中所用的一快取元素指一快取之任一粒化的結構元素,諸如一快取線、一快取項、一快取位置、或一快取集合。例如,元素210包括多個項中之一項,諸如一集合內多個線中的一線。
如所說明,元資料209及資料項目208被保存在資料陣列207的單獨項中。然而,元資料209與資料項目208的關聯在於:它表示資料項目208的屬性或特性及資料項目208的一資料位址,資料項目208的該資料位址與項210相關聯,可被用作或轉換成一元資料位址以引用項215中的元資料209。在一實施例中,以此方式保存元資料209被視為是有損耗的。換言之,元資料209被視為有損耗的元資料。
例如,如果控制邏輯250選擇項215來逐出,則元資料209被逐出。由於元資料209在一資料位址位置並不存在,資訊並不維持或寫回到一較高級記憶體,即元資料209丟失。這裡,如下詳細描述,快取控制邏輯250由於線215的一快取一致性狀態諸如一無效狀態,或由於保存一元資料值以指示項215之擴充欄位217保存了元資料209可不執行該寫回。
如上所述,元資料209包括與資料項目208有關的任一屬性、特性、或資訊。在一事務記憶體系統中,元資料209能以一些有用方式來使用。作為一第一範例,元資料209包括資料項目208的屬性,諸如一讀取屬性、寫入屬性、及/或緩衝屬性。這裡,當資料項目208被事務性讀取時,元資料209被更新以指示該資料項目208受讀取監視,即對資料項目208的一外部寫入則被視為一衝突。在此實施中,探聽邏輯可被修改以執行對項215 中元資料209 的一探聽,即對項215中元資料的一測試。
作為另一範例,元資料包括與其它事務有關的資訊,諸如若資料項目208先前已在一事務內被存取及/或備份,若資料項目208與一不可撤銷的/頑固性事務相關聯,若資料項目209已丟失之下,針對事務性寫入資料項目208的一備份位置,或與其它已知事務相關的說明性資訊。此外,如上所述,元資料209也可包括與資料項目208相關聯之資訊、特性、屬性、或狀態。
如所述,標籤陣列205包括對應於資料陣列207的資料項210、215、220、225之標籤項211、216、221、及226。典型地,一標籤項(諸如項211)係用以保存與被保存於項210中之資料項目208相關聯之一位址的一部分。在存取一快取之後,利用該存取操作位址的一標籤值來搜尋/詢查標籤陣列205以索引到正確相對應項。在一實施例中,用標籤擴充欄位212、217、222及227中被保存在標籤陣列205內之擴充位元來擴充一位址(諸如位址201)。這裡,一擴充欄位係用以保存一值以指示一相對應資料項是否保存資料或元資料。作為一範例,擴充欄位212保存一資料值以指示資料,諸如在資料項210中保存之資料項目208,而擴充欄位217保存一擬實體值以指示保存元資料(諸如元資料209)的資料項215。
被保存在一擴充欄位(諸如擴充欄位217)中的一擬實體值可包括任一值以指示保存元資料之一相對應的項。此外,該擬實體值可由硬體提供,諸如一控制暫存器或快取控制邏輯250中的預設設定(由指令參數提供)或其等的一組合。
在一實施例中,擴充欄位217係用以保存單一位元,諸如標籤項216的最高有效位元(MSB)。這裡,當項215保存元資料時,則項217保存一第一邏輯值,諸如一邏輯高值。相比之下,擴充欄位212保存一第二邏輯值(諸如一邏輯低值)以指示項210保存資料。為了說明,一簡化範例在一資料位址至一元資料位址之間之最基本變化方法環境中被討論,即其中標籤項211及216對於資料項目208及209相同而僅擴充欄位不同。這裡,位址201的一部分,諸如一實體位置部分係被保存在標籤陣列205的標籤項中。
假定接收到引用資料項目208的一資料位址之一存取操作。控制邏輯208執行對標籤陣列205的一搜尋以決定該資料位址是否存在一標籤匹配。這裡,如果該存取操作是存取資料項目208的一正常資料存取操作,則該資料值與該資料位址相關聯且該搜尋致使與項211及擴充欄位212的一匹配。這裡,項216之間不存在一匹配,因為擴充欄位217包括一擬實體值,即在此範例中一邏輯值。相比之下,如果該存取操作包括一元資料存取操作,則一邏輯值的擬實體值被後附於該資料位址且該搜尋致使對具有擴充欄位217 之項216 的一命中。類似地,沒有命中項211,因為擴充欄位212保存一資料值。
如此範例說明,一程式可包括獨立操作,諸如引用一資料項(諸如資料項目208)的同一位址之一資料存取操作或一元資料存取操作,及硬體可將這些存取映射至不同位址空間,諸如一實體位置空間及一擬實體位址空間。在不同值被用於資料及元資料的標籤項中的情況下,該位址空間是正交的,即一元資料存取操作未命中或修改一資料項,因為保存一資料項目之一相對應的資料項的擴充欄位並不匹配一元資料存取操作之一詢查擴充值。然而,由於元資料及資料位址空間競爭快取中的空間,它們可透過競爭相互影響。
另外,在有損耗元資料之一實施例中,對於一元資料存取操作,一標籤陣列205的未命中並不為在快取記憶體域外的未命中服務。實質上,由於有損耗元資料209被本地保存在快取域中,沒有理由外部轉送該未命中來服務請求。結果,對有損耗元資料的未命中可能以一快速且有效的方式來服務。作為一範例,一快取區塊為元資料被分配並被初始化為一預定預設值而不用等待一外部響應。
除了上面的範例之外,在一實施例中,標籤陣列205的擴充欄位包括多個位元。作為一第一範例,在標籤陣列205中的多個位元可能包括在資料位址空間上被覆蓋之多個分離的擬實體位址空間。這裡,每一位元或位元組對應於分離元資料、與相同或不同元資料相關聯之離散處理元件、具有相同或不同元資料之一程式的不同部分、具有相同或不同元資料之不同子系統、或與一位址空間相關聯之任一其它已知元件的一擬實體位址空間。
例如,假定兩處理元件(諸如兩核心)共享對快取的存取。這裡,擴充欄位217的一第一位元是針對與一第一處理元件相關聯之一擬實體位址空間及擴充欄位218的一第二位元是針對與一第二處理元件相關聯之一第二擬實體位址空間。基於上面的範例,當一第一處理元件遇到一元資料存取資料位址201時,利用設定為該擬實體邏輯值之第一位元來執行標籤陣列205的搜尋,這確保了對該第二處理元件之該擬實體位址空間的一命中不出現。
注意在一些實例中,較佳的是一處理元件存取一不同的擬實體位址空間,諸如如果該第一處理元件係用以核對是否一屬性已被在該第二擬實體位址空間中的一第二處理元件設定。在一實施例中,一擴充欄位包括其它資訊。例如,除了多處理元件的多個位元以外,一處理元件識別符(諸如一上下文ID)可被表示於該多個位元中。再者,該擴充欄位的位元可使用控制暫存器值、指令參數值、或其它值來填充。
元資料存取操作可包括用以存取資料之顯式指令/操作。這裡,一處理器的解碼器透過一指令集架構的一操作(op)碼可識別元資料存取操作。另外,一較大更複雜指令當被解碼時,可包括一元資料存取微操作。為了說明,用於備份資料項目208的一指令被解碼以便一第一微操作執行將資料項目的前一版本寫入至一備份位置及一第二微操作係用以更新元資料209以保存該備份位置的一位址。
如上面提到,在一實施例中,在硬體中元資料209與資料項目208相關聯。如所描繪,資料項目208及元資料209未壓縮,即元資料與資料之間是一對一關係。換言之,元資料209的大小與資料項目208的一樣。元資料的壓縮在下面較詳細討論。然而,在一實施例中,在硬體中元資料209與資料項目208的關聯包括將資料項目208之一對項210作索引的資料位址轉換成元資料209之一對項215作索引的資料位址的邏輯。轉換的範例包括無加入一擬實體值的轉換、加入一擬實體值的標準資料位址轉換、及利用擬實體轉換邏輯之獨立轉換。
參考第3a-3b圖下面較詳細討論元資料到資料的事務之此非詳盡無遺的範例列表。
快速參考第2b圖,用於保存於資料相關聯的元資料之一擬實體位址空間的另一實施例被描述。如上所述,元資料當被保存在與資料相同的陣列中時,可與資料競爭快取空間。因此,如第2b圖所描繪,在一實施例中,元資料被保存在一平行快取記憶體260中。這裡,上面與下面描述的方法及裝置,諸如自一資料位址獲得一元資料位址能以相同方式來執行。然而,與針對一元資料位址選擇一項資料陣列207不同,在平行元資料陣列260中的一項被選擇。作為一範例,一多工器可被用於基於一擬實體識別符值(諸如被保存在位址擴充230中的一擬實體值)來在陣列、集合、方式、區塊等之間選擇。因此,與本文說明類似,一元資料位址可自一給定資料項目的一資料位址獲得。然而,在此範例中,在平行陣列260中選擇一項而非在資料陣列270中。注意的是,元資料209以相同方式與資料項目208相關聯,但被保存在一不同實體儲存結構中。
轉向第3a圖,說明支援對一擬實體位址空間的存取之結構的一實施例。這裡,位址產生單元(AGU)320係用以產生可響應於存取操作(如上所述)的位址。定址及轉換在下面參考利用虛擬位址轉換的處理器被討論,即,經常利用在一處理器中定義的頁表來將被引用的虛擬位址轉換成實體位址之實體記憶體的一虛擬視圖。然而,定址能以許多方式被實施,且相應地,本文所描述的方法及裝置可利用任一定址方法被實施。
在一實施例中,一資料項目經由資料位址301轉換至一元資料位址而與元資料相關聯。作為一第一範例,轉換包括在沒有一虛擬位址至實體位址之傳統轉換的情況下資料位址301的擴充。實質上,該資料位址的虛擬位址被用於元資料位址。相比之下,貫穿一轉換結構一元資料位址能以類似方式被轉換成資料位址。
如所描繪,轉換後備緩衝器(TLB)325係用以將一虛擬位址(諸如虛擬位址201)轉換成一實體位址。在一些處理器架構中,一虛擬位址及實體位址共享位址的一部分,諸如對於位址201的4K位元組頁位元0-11。作為一第一範例,該元資料位址與該資料位址相同。結果,除了區分資料及資料項的擴充欄位,在陣列305中的快取標籤針對資料及相關聯的元資料是相同的。
為了說明,快速回參第2a圖。這裡,對應於元資料項215之標籤項216與對應於資料項210的標籤項211相同。然而,擴充欄位212保存一資料值以指示項210保存了資料及擴充欄位217保存一元資料值以指示項210保存了元資料。因此,在一快取詢查元資料209由資料項215之讀取之後,該元資料值被後附於該標籤值以命中對應於項215之標籤項217。類似地,用元資料209的一儲存操作,基於一指令參數或被保存在一暫存器中的值,項215被分配(在資料陣列207中)被載入於擴充欄位217中之一擬實體值。
自上面討論注意到,一元資料存取,即使具有相同的資料位址,僅命中元資料項,因為被保存於擴充標籤項中的資料值並不匹配後附的/擴充的元資料值。在資料標籤值在除了一擴充欄位以外沒有被修改時,元資料對資料的局部性是一潛在優勢。在此範例中,由於用於選擇資料陣列207中的一集合之位址部分相同,項210及215可在一集合關聯快取的同一集合中。
參考第3b圖,描繪用以支援對一擬實體位址空間的存取之結構的另一實施例。這裡,TLB 325仍用於將虛擬位址301轉換成一實體位址。TLB 325以類似方式操作一詢查表來保存最近轉換。另外,當一最近轉換未被找到時,一虛擬位址經常基於在與該TLB相關聯的該處理元件之暫存器中所定義的頁表被轉換。在一實施例中,擬實體位址轉換(MAT)緩衝器350被提供用於將資料位址轉換成元資料位址供元資料存取。作為一範例,MAT緩衝器350以與TLB 325類似的方式來操作。MAT緩衝器350在一實施例中係用以基於在暫存器中所定義的擬實體頁表或其它資料來將資料位址301轉換成一元資料位址。耦合至事務邏輯350之快取詢查邏輯係用以響應於該元資料位址之一標籤部分匹配保存在被包括於標籤陣列中之標籤項中的一標籤值決定對一標籤項的一命中。這裡,一元資料值也可被後附於該位址(即使被單獨轉換)以幫助分離擬實體與實體位址空間。結果,對一元資料存取操作所引用之一資料位址的一命中在此範例中包括透過擬實體轉換邏輯350來將位址301轉換成一元資料位址並將該元資料位址匹配於標籤陣列305中的一快取標籤。如下討論,擬實體位址轉換邏輯350基於一壓縮率將一資料位址轉換成一元資料位址。
然而,不論一轉換方法,即單獨的表中無修改或變化,在一實施例中,元資料對資料被壓縮。換言之,一壓縮比是與元資料比較的一資料數量。例如,一壓縮比8,即8:1,包括8資料位元比1元資料位元或8資料位元組(四字)比一元資料位元組。
第4圖說明資料對元資料的一壓縮比8之一實施例。控制邏輯係用以接收一元資料存取操作所引用的資料位址401。對於壓縮,log2 (N)個位元被移位及/或移除,其中N是資料對元資料的壓縮比。在所說明的範例中,對於一壓縮比8,針對元資料位址402三位元被向下移位及移除。實質上,位址401(包括64位元來引用記憶體中的一特定資料位元組)被三位元截短以形成元資料位元組位址402,用來在一位元組粒化上引用記憶體中的元資料;其中元資料的一位元被選擇(使用前面自該位址移除的該三位元)以形成該元資料位元組位址。
被移位/移除的該等位元在一實施例中被其他位元替換。如所說明,高階位元在位址401被移位之後被用零替換。然而,該等被移除/移位位元可被其它資料或資訊替換,諸如與該元資料存取操作相關聯之一上下文識別符(ID)。雖然在此範例中移除最低數目的位元,但是任何位元位置可基於任意個因素(諸如快取組織、快取電路時序、及最小化資料與元資料的衝突)被移除及替換。
例如,一資料位址可不被log2 (N)移位,而是位址位元0:2被歸零。結果,實體位址與虛擬位址相同的位元沒有如上面範例(允許用未修改的位元諸如位元11:3預選擇一集合及一記憶庫)被移位。這裡,處理利用被移除的位元0:2選擇一位元以外,使用一不同的三位元,諸如一高階三位元完成自一位元組選擇一位元。此實施可能是時序合適的,然而,元資料可不鄰近於資料,即因高階標籤值不同而無資料對元資料的局部性。
無論位址401具有位元移位、移除、或替換,在一實施例中,包含擬實體值之位址擴充標籤被後附於元資料位址402。如所說明,該擬實體值包括一邏輯1值以指示位址402是一元資料位址。如上所述,該擬實體值可包括由硬體、韌體、軟體、或其等的一組合(諸如一控制暫存器或指令參數)所定義之任一固定的值。另外,如上所述,在一實施中,移位的及歸零的位元(諸如位元63-65)或一擴充欄位(包括在第4圖中未顯示的擬實體值)內額外的位元被用其它資訊增加。例如,一處理元件ID,諸如一核心、文本,或執行緒ID被後附於位址402作為一擴充。
一旦適當的擴充欄位被後附,則利用元資料位址402的一標籤部分(包括具有位元64的擴充欄位)搜尋標籤陣列405。注意對於一元資料載入/測試操作或一寫入操作,標籤陣列405被搜尋一匹配標籤值,即擴充位元與被包括於元資料位址402與標籤陣列405中一標籤項之間的標籤匹配中的一部分虛擬位址,諸如包括擴充欄位417之標籤項416。
然而,當一寫入元資料操作未命中標籤陣列405時,即元資料還沒有被創建,則對於針對該元資料的一快取記憶體一項以一正常方式被分配。例如,基於元資料位址402及一快取替換演算法,諸如一最近最後使用(LRU)演算法選擇、分配、及初始化一項,諸如項415。結果,元資料可能競爭空間的常規資料。
轉向第5圖,描繪將資料壓縮成元資料及利用一擴充欄位之另一實施例。這裡,一元資料位元表示64位元組,即512:1的一比率。與上類似,透過向下移位資料位址501log2 (512)位元(即9位元)轉換/修改資料位址501以形成元資料位址502。這裡,位元6:8仍被用來選擇一位元,除了位元0:2以外,透過在512位元的一粒化之選擇有效地創建壓縮。結果,該被移位虛擬位址的剩餘部分,即位元63:21被用作元資料位址502的部分標籤值503。
然而,由於位址502被移位9位元,位址502的高階部分具有9個開放式位元位置來保存資訊。在一實施例中,該9位元係用以保存識別符,諸如上下文ID及/或執行緒ID。另外,擬實體空間值也可被保存於這些位元或該位址可用該等擬實體空間位元來擴充。以上面所述之一類似的方式來搜尋及替換,用元資料標籤503搜尋標籤陣列505。這裡,如果該等識別符與位址空間不匹配,則沒有命中被發現,即一未命中被確定。因此,此範例可能提供一執行緒ID及/或上下文ID粒化之元資料的能力。然而,在一些實施中,一存取交叉ID可能是有利的,諸如當對另一執行緒監視元資料被一執行緒核對以確定是否一相關聯的資料項目受另一執行緒監視時為然。在此情形中,一遮罩可被施於一標籤比較值以允許一執行緒命中另一執行緒的元資料。
在一實施例中,用常規資料存取多工元資料之該被移位的位址。這裡,擬實體空間值可被用作多工器輸入以在一常規資料快取存取與一元資料快取存取之間作選擇。另外地,儲存元資料資訊能以與前面實施中轉送的儲存相類似的一方式來被轉送至元資料載入。然而,在一實施例中,額外的限制強加在元資料位址上,諸如阻止轉送交叉壓縮比。
在一實施例中,多並行壓縮比受硬體支援。這裡,一壓縮比的一表示被保存在擴充標籤位元中。結果,在一標籤的一搜尋期間,考慮該壓縮比。此外,該壓縮比可被測試以判定一元資料儲存是否應該被轉送至一元資料載入。
在一實施例中,快取硬體被利用一單一壓縮比來實施,但包括其它硬體支援來表示對軟體的多壓縮比。作為一範例,如第4圖所述,假定利用一8:1壓縮比來實施硬體快取。但是,用於存取在不同粒化的元資料之一元資料存取操作被解碼以包括一微操作來讀取一預設數量的元資料及一測試微操作來測試該元資料讀取的一適當部分。作為一範例,該預設數量的元資料讀取是32位元。然而,對於一不同粒化/壓縮8:1之一測試操作測試元資料讀取之該32位元的正確位元,這可基於一位址之某一數目的位元,諸如一元資料位址的一些LSB、及/或一上下文ID。
作為一說明,在支援元資料(對於針對每資料位元組一元資料位元之未對齊的資料)的一方案中,基於一元資料位址的該三LSB自元資料的該32讀取位元之最低有效八位元中選擇一單一位元。對於一資料字,基於該位址的該三LSB自讀取元資料的該32位元之最低有效16位元選擇兩連續元資料,對於一128位元元資料大小並一直持續到16位元。
在一實施例中,對於上述方案,基於傳達的元資料位址位元透過一左移位操作產生一遮罩。作為用以產生一左移位操作之遮罩的一說明包括:
8:1壓縮:0xFFFE<<位址[2:0];
16:1壓縮:0xFFFC<<位址[2:0];
32:1壓縮:0xFFF0<<位址[2:0];
64:1壓縮:0xFF00<<位址[2:0];
128:1壓縮:0x0000<<位址[2:0]
透過載入/讀取微操作,此遮罩是按位元與元資料讀取的該32位元邏輯被邏輯相或(OR),且該生成32位元接著被邏輯相與(AND)以測試該資料元/設定一旗標。
作為另一實施範例,使用針對一給定資料大小之一單一位元,因而不允許未對齊的資料支援。在此方案中,透過基於傳達的元資料位址位元與處理元件ID位元之一子集的一左移位操作產生一遮罩。這樣,對於每一位元組的一位元,對於每一位元組使用所有的元資料位元。對於位元每字壓縮元資料,僅使用每一第二位元等直至對於一32位元組資料運算元僅使用該32元資料位元讀取的一單一位元。由於該元資料儲存就較大資料大小(較高壓縮率)而言變得越來越稀疏,有一機會使用額外空間來儲存多個並排上下文的元資料,這意味著基於位址LSB位元及上下文ID(CID)之一組合字該32元資料位元讀取中選擇正確的元資料。
作為用以產生一左移位操作之遮罩的一說明包括:8:1 compression: 0x0001<<00 & Address[2:0];16:1 compression: 0x0001<<00 & CID[0] & 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位元邏輯相與(AND),及該生成32位元接著被邏輯相或(OR)以測試該元資料及可能設定一旗標。
參考第6圖,說明存取資料的元資料之一方法的一流程圖。雖然第6圖的流程以一實質上連續的方式來被說明,但是流程可至少部分地平行及可能以一不同順序來執行。在流程620,遇到引用針對一給定資料項的一資料位址之一元資料操作。元資料操作的範例包括載入/測試及儲存/寫入/清除操作或微操作。然而,元資料存取操作可以是用以存取元資料之顯式軟體指令/操作及作為部分的一較大更複雜指令被解碼之隱式微操作,諸如對隱式需要相關聯的元資料的一更新之資料項的一存取。另外地,實施可基於某些系統事件,諸如保護環過渡、過渡到一不同的處理器操作模式、或記憶體頁的一解映射,選擇成批清除所有針對一給定上下文的元資料、執行緒或處理器。
根據該引用資料位址決定一元資料位址。決定一元資料位址的範例包括:利用正常資料虛擬到實體位址轉換將該資料位址轉換成一資料位址,並將一擬實體擴充後附於該資料位址來形成該元資料位址;將一擬實體擴充後附於該虛擬資料位址以形成該元資料位址;使用擬實體轉換表邏輯將該資料位址轉換成一實體元資料位址,並將一擬實體擴充後附於該實體元資料位址以形成該元資料位址。
此外,該轉換可包含,即基於,資料對元資料的一壓縮比以便對於每一壓縮比單獨儲存元資料。
在流程630,基於元資料位址決定該快取記憶體的一元資料項。作為一範例,該元資料位址的一標籤部分被用於搜尋一標籤陣列。如果包括該擬實體值之該標籤部分不匹配一標籤項,則一未命中出現。在一實施例中,發出一監聽請求來服務該快取未命中改為該未命中在無需快取域外請求下由被本地服務,因為該元資料是僅保存在該快取記憶體中之有損耗的元資料。結果,依據正常的快取分配政策來分配一項同時適當的元資料標籤被保存在該項中及該資料儲存元件用該預設元資料值被初始化。因此,元資料相對於相關聯的資料項目之局部性及時序也可能被改進。相比之下,如果一命中出現,該元資料項被直接決定。
無論該決定該項是透過對該項的一命中或未命中及分配而決定,該元資料被適當存取。例如,對於一載入或測試操作,該元資料被讀取。相比之下,對於一儲存操作,該元資料在相對應的元資料項中被更新。因此,如可見,元資料能以一有損耗的方式被保存在一本地快取記憶體中而無需位元對快取記憶體之一資料陣列的注解或昂貴的額外的儲存結構。此外,元資料能以一壓縮方式來被保存,即資料對元資料的一壓縮比。此外,硬體可實行一單一或多個壓縮比,及在任一情況下,對軟體表示多個壓縮比。
如本文所使用的一模組可指任一硬體、軟體、韌體、或其等的一組合。往往模組邊界被說明為獨立通常不同及可能重疊。例如,一第一及一第二模組可共享硬體、軟體、韌體、或其等的一組合,而可能保留一斜獨立的硬體、韌體、或韌體。在一些實施例中,使用邏輯一詞包括硬體,諸如電晶體、暫存器、或其它硬體(諸如可程式化邏輯裝置)。然而,在另一實施例中,邏輯也包括軟體或用硬體整合的代碼,諸如韌體或微代碼。
本文所使用的一值包括對一數、一狀態、一邏輯狀態、或一種二元邏輯狀態之任一已知表示。往往,邏輯級、邏輯值、或邏輯值的使用也指1與0,它們簡單地表示二元邏輯狀態。例如,一1指一高邏輯級及0指一低邏輯級。在一實施例中,諸如一電晶體或快閃單元之一儲存單元可能能夠被表示為1010的一個二元值或一個十六進位字母A。因此,一值包括對能夠被保存在一電腦系統中之任一資訊表示。
再者,可用值或部分值表示狀態。如一範例,一第一值,諸如一邏輯值,可表示一預設或初始狀態,而一第二值,諸如一邏輯零,可表示一非預設狀態。另外,重置及設定等詞在一實施例中分別指一預設及一更新的值或狀態。例如,一預設值可能包括一高邏輯值,即重置,而一更新值可能包括一低邏輯值,即設定。注意的是,值的任一組合可被用來表示任一數目的狀態。
上面提出的方法、硬體、軟體、韌體或代碼的實施例可透過儲存在一處理元件可執行之一機器可存取或機器可讀取媒體上之指令或代碼而實施。一機器可存取/讀取媒體包括以一機器(諸如一電腦或電子系統)可讀取的形式提供(即儲存及/或發射)資訊之任一機制。例如,一機器可存取媒體包括隨機存取記憶器(RAM),諸如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁或光儲存媒體;快閃記憶體裝置;電儲存裝置、光儲存裝置、聲學儲存裝置或其它形式的傳播信號(載波、紅外信號、數位信號)儲存裝置;等。例如,一機器可藉由自能夠保存傳播信號所發射的資訊之一媒體接收一傳播信號(諸如一載波)存取一儲存裝置。
貫穿本說明書提及「一個實施例」或「一實施例」意思是,集合實施例所描述的一特定特徵、結構、或特性被包括在本發明之至少一實施例中。因此,在整個說明書各不同地方出現的片語「在一個實施例」或「在一實施例」未必都指同一實施例。此外,在一或多個實施例中能以任一適當方式來結合特定特徵、結構、或特性。
在前面說明中,參考特定示範實施例已給出一詳細說明。然而,顯而易見的是,在不背離後附申請專利範圍所提出之本發明的較廣精神及範圍的情況下可對此說明作各種修改及改變。因此,說明書及圖示係以一說明性意義而非一限制性意義來看待。此外,上面使用實施例及其它示範性語言未必指同一實施例及同一範例,而可指不同及有區別的實施例,以及可能指同一實施例。
101、102...核心
101a、101b、102a、102b...硬體執行緒
105...匯流排介面模組
110...較高階快取
120、121...ILTB、模組、單元
125...解碼器、解碼模組
130...重命名分配邏輯、單元
135...重排序/退出單元
140...執行單元
150...較低階資料快取及資料轉換緩衝器
201...位址
205、305、405、505...標籤陣列
207...資料陣列
208...資料項目
209...元資料
210、215、220、225...項
211、216、221、226...標籤項
212、217、222、227...標籤擴充欄位
230...位址擴充
250...控制邏輯
260...元資料陣列
301、501...資料位址
320...位址產生單元
325...轉換後備緩衝器
350...擬實體位址轉換緩衝器、轉換邏輯
401...資料位址、位址
402、502...元資料位址
415...項
416...標籤項
417...擴充欄位
503...元資料標籤、標籤值
512...元資料標籤
620、625、630、635...流程
第1圖說明一處理器的一實施例,該處理器包括能夠並行執行多軟體執行緒之多處理元件。
第2a圖說明用於保存資料的元資料之一擬實體位址空間之一實施例。
第2b圖說明用於保存資料的元資料之一擬實體位址空間之另一實施例。
第3a圖說明支援存取一擬實體位址空間之結構的一實施例。
第3b圖說明支援存取一擬實體位址空間之結構的另一實施例。
第4圖說明壓縮資料成元資料之一實施例。
第5圖說明壓縮資料成元資料之另一實施例。
第6圖說明存取資料的元資料之一方法的一流程圖。
201...位址
205...標籤陣列
207...資料陣列
208...資料項目
209...元資料
210、215、220、225...項
211、216、221、226...標籤項
212、217、222、227...標籤擴充欄位
230...位址擴充
250...控制邏輯

Claims (11)

  1. 一種處理器,其包含:一快取記憶體,以及耦合至該快取記憶體的邏輯組件,用以:接收一位址的至少一部分以引用一資料項目;使該位址之該部分與一擬實體擴充相關聯,其中該擬實體擴充包括僅一個擬實體識別符位元及每該處理器之處理元件一個的位址空間識別符位元,該擬實體識別符位元被設定時會指出該快取記憶體的一快取線具有與一資料項相關聯的元資料;及決定該快取記憶體的一元資料項,以基於該位址和該擬實體擴充來存取與被保存於該快取記憶體之一資料項目項中的一資料項目相關聯的元資料。
  2. 如申請專利範圍第1項所述之處理器,其中用於接收該位址之至少一部分以引用該資料項目的該邏輯組件是對接收到引用該位址的一元資料存取操作的控制邏輯組件作響應。
  3. 如申請專利範圍第1項所述之處理器,其中用於使該位址之該部分與該擬實體擴充相關聯的該邏輯組件包含:該邏輯組件將該擬實體擴充後附於該位址之該部分的一最高有效位元(MSB)。
  4. 如申請專利範圍第3項所述之處理器,其中該等多個擬 實體擴充位元各對應於各別的一擬實體位址空間。
  5. 如申請專利範圍第1項所述之處理器,其中與該資料項目相關聯的該元資料在該元資料項被從該快取記憶體逐出後會丟失,並且其中該元資料包括針對該資料項目的數個屬性。
  6. 一種用於資料處理的方法,其包含以下步驟:遭遇引用一資料位址的一元資料操作,該資料位址係針對被保存在該快取記憶體之一資料項中的一資料項目;藉由利用虛擬至實體位址轉換而轉換該資料位址並將一擬實體擴充後附至該資料位址來形成一元資料位址,而自該資料位址決定該元資料位址,其中該擬實體擴充包括僅一個擬實體識別符位元及每該處理器之處理元件一個的位址空間識別符位元,該擬實體識別符位元被設定時會指出該快取記憶體的一快取線具有與一資料項相關聯的元資料;基於該元資料位址而決定該快取記憶體的一元資料項;以及響應於決定出該元資料項,存取在該元資料項中的元資料,其中該元資料是針對該資料項目的備份資料之位置。
  7. 如申請專利範圍第6項所述之方法,其中自該資料位址決定該元資料位址之步驟包含以下步驟:利用擬實體轉換表邏輯組件而將該資料位址轉換 成一實體元資料位址,以及將一擬實體擴充後附於該實體元資料位址以形成該元資料位址。
  8. 如申請專利範圍第7項所述之方法,其中利用擬實體轉換表邏輯組件而將該資料位址轉換成一實體元資料位址之步驟是以資料對元資料的一壓縮比為基礎。
  9. 如申請專利範圍第6項所述之方法,其中該資料位址包括一虛擬資料位址。
  10. 如申請專利範圍第6項所述之方法,其中該元資料操作包括用於儲存新資料的一儲存元資料操作,並且存取該元資料項中之元資料的步驟包括將新的該元資料儲存於該元資料項。
  11. 如申請專利範圍第6項所述之方法,其中該元資料操作包括用於載入該元資料的一載入元資料操作,並且存取該元資料項中之元資料的步驟包括自該元資料項載入該元資料。
TW098143894A 2008-12-30 2009-12-21 用於保存硬體內有損耗元資料之擬實體位址空間 TWI446261B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/346,500 US8806101B2 (en) 2008-12-30 2008-12-30 Metaphysical address space for holding lossy metadata in hardware

Publications (2)

Publication Number Publication Date
TW201030609A TW201030609A (en) 2010-08-16
TWI446261B true TWI446261B (zh) 2014-07-21

Family

ID=42286183

Family Applications (1)

Application Number Title Priority Date Filing Date
TW098143894A TWI446261B (zh) 2008-12-30 2009-12-21 用於保存硬體內有損耗元資料之擬實體位址空間

Country Status (6)

Country Link
US (1) US8806101B2 (zh)
JP (1) JP5451776B2 (zh)
KR (1) KR101299317B1 (zh)
CN (1) CN101770429B (zh)
TW (1) TWI446261B (zh)
WO (1) WO2010077842A2 (zh)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652210B2 (en) * 2007-08-28 2017-05-16 Red Hat, Inc. Provisioning a device with multiple bit-size versions of a software component
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8806101B2 (en) 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US8370577B2 (en) 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata
US8250331B2 (en) * 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US8356166B2 (en) * 2009-06-26 2013-01-15 Microsoft Corporation Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers
US8812796B2 (en) 2009-06-26 2014-08-19 Microsoft Corporation Private memory regions and coherence optimizations
US20100332768A1 (en) * 2009-06-26 2010-12-30 Microsoft Corporation Flexible read- and write-monitored and buffered memory blocks
US8489864B2 (en) * 2009-06-26 2013-07-16 Microsoft Corporation Performing escape actions in transactions
US8229907B2 (en) * 2009-06-30 2012-07-24 Microsoft Corporation Hardware accelerated transactional memory system with open nested transactions
US8825936B2 (en) * 2009-08-03 2014-09-02 Quantum Corporation Systems and methods for increasing data volume sparseness
US8539465B2 (en) * 2009-12-15 2013-09-17 Microsoft Corporation Accelerating unbounded memory transactions using nested cache resident transactions
US9092253B2 (en) * 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8402218B2 (en) * 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8533440B2 (en) 2009-12-15 2013-09-10 Microsoft Corporation Accelerating parallel transactions using cache resident transactions
US10223204B2 (en) 2011-12-22 2019-03-05 Intel Corporation Apparatus and method for detecting and recovering from data fetch errors
US8886883B1 (en) * 2012-03-31 2014-11-11 Emc Corporation System and method for improving cache performance
CN103207844B (zh) * 2013-04-18 2017-06-06 上海云间半导体科技有限公司 缓存系统及缓存访问方法
US9411745B2 (en) * 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
US9418018B2 (en) * 2013-12-31 2016-08-16 Samsung Electronics Co., Ltd. Efficient fill-buffer data forwarding supporting high frequencies
US10235338B2 (en) 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US9514061B1 (en) * 2015-05-20 2016-12-06 Qualcomm Incorporated Method and apparatus for cache tag compression
US9507628B1 (en) 2015-09-28 2016-11-29 International Business Machines Corporation Memory access request for a memory protocol
KR20180078253A (ko) * 2015-11-04 2018-07-09 삼성전자주식회사 다중 프로세서 시스템에서 코히어런트 메모리를 구현하기 위한 시스템 및 방법
US10936713B2 (en) 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10235176B2 (en) * 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10607665B2 (en) * 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US10191791B2 (en) * 2016-07-02 2019-01-29 Intel Corporation Enhanced address space layout randomization
US20180088829A1 (en) * 2016-09-29 2018-03-29 Qualcomm Incorporated Area efficient architecture for multi way read on highly associative content addressable memory (cam) arrays
US10324857B2 (en) * 2017-01-26 2019-06-18 Intel Corporation Linear memory address transformation and management
US10061698B2 (en) 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
TWI661300B (zh) * 2017-09-15 2019-06-01 旺宏電子股份有限公司 記憶體的資料管理方法及記憶體裝置
GB2568059B (en) * 2017-11-02 2020-04-08 Advanced Risc Mach Ltd Method for locating metadata
US11150910B2 (en) 2018-02-02 2021-10-19 The Charles Stark Draper Laboratory, Inc. Systems and methods for policy execution processing
US20210042100A1 (en) 2018-02-02 2021-02-11 Dover Microsystems, Inc. System and method for translating mapping policy into code
WO2019213061A1 (en) 2018-04-30 2019-11-07 Dover Microsystems, Inc. Systems and methods for checking safety properties
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11372580B2 (en) * 2018-08-07 2022-06-28 Marvell Asia Pte, Ltd. Enabling virtual functions on storage media
CN115576867A (zh) * 2018-08-28 2023-01-06 上海忆芯实业有限公司 存储设备的扩展地址空间
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
TW202022678A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
US20220012329A1 (en) * 2018-11-12 2022-01-13 Dover Microsystems, Inc. Systems and methods for metadata encoding
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
CN113168293A (zh) * 2019-01-31 2021-07-23 华为技术有限公司 用于访问集群存储系统中的缓存的方法和装置
US11656995B2 (en) * 2019-11-26 2023-05-23 Micron Technology, Inc. Dynamic access granularity in a cache media
US11366774B2 (en) * 2020-09-24 2022-06-21 Adesto Technologies Corporation Memory latency reduction in XIP mode
US20230029331A1 (en) * 2021-07-26 2023-01-26 Microsoft Technology Licensing, Llc Dynamically allocatable physically addressed metadata storage

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8728494D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
JP2651037B2 (ja) 1990-04-23 1997-09-10 株式会社日立製作所 アドレスバス制御装置
US6549996B1 (en) 1999-07-02 2003-04-15 Oracle Corporation Scalable multiple address space server
EP1111511B1 (en) * 1999-12-06 2017-09-27 Texas Instruments France Cache with multiple fill modes
US7035963B2 (en) 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US20030005219A1 (en) * 2001-06-29 2003-01-02 Royer Robert J. Partitioning cache metadata state
US7032125B2 (en) * 2002-04-25 2006-04-18 Lsi Logic Corporation Method for loosely coupling metadata and data in a storage array
US6990557B2 (en) * 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6868485B1 (en) * 2002-09-27 2005-03-15 Advanced Micro Devices, Inc. Computer system with integrated directory and processor cache
US7010645B2 (en) * 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
US7047390B2 (en) * 2003-06-17 2006-05-16 International Business Machines Corporation Method, system, and program for managing a relationship between one target volume and one source volume
FR2859307A1 (fr) * 2003-08-27 2005-03-04 St Microelectronics Sa Memoire cache a lecture asynchrone et dispositif de controle de l'acces a une memoire de donnees comprenant une telle memoire cache
US7644239B2 (en) * 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
JP4753549B2 (ja) * 2004-05-31 2011-08-24 パナソニック株式会社 キャッシュメモリおよびシステム
CN100553209C (zh) * 2004-08-19 2009-10-21 诺基亚公司 为控制网络上多媒体数据的部署而对目录服务器数据进行高速缓存
KR100704037B1 (ko) * 2005-04-15 2007-04-04 삼성전자주식회사 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법
US7533215B2 (en) * 2005-09-15 2009-05-12 Intel Corporation Distributed and packed metadata structure for disk cache
US8225297B2 (en) * 2005-12-07 2012-07-17 Microsoft Corporation Cache metadata identifiers for isolation and sharing
US8001538B2 (en) * 2005-12-07 2011-08-16 Microsoft Corporation Software accessible cache metadata
US7991965B2 (en) * 2006-02-07 2011-08-02 Intel Corporation Technique for using memory attributes
US8195832B2 (en) 2007-12-12 2012-06-05 Alcatel Lucent Facilitating management of layer 2 hardware address table based on packet priority information
JP2008305424A (ja) * 2008-07-28 2008-12-18 Hitachi Ltd ディスクシステムとそのキャッシュ制御方法
US8806101B2 (en) 2008-12-30 2014-08-12 Intel Corporation Metaphysical address space for holding lossy metadata in hardware
US8370577B2 (en) * 2009-06-26 2013-02-05 Microsoft Corporation Metaphysically addressed cache metadata

Also Published As

Publication number Publication date
CN101770429A (zh) 2010-07-07
KR20110050719A (ko) 2011-05-16
TW201030609A (en) 2010-08-16
US8806101B2 (en) 2014-08-12
KR101299317B1 (ko) 2013-08-26
CN101770429B (zh) 2014-09-10
WO2010077842A3 (en) 2010-09-23
JP5451776B2 (ja) 2014-03-26
US20100169382A1 (en) 2010-07-01
JP2012512491A (ja) 2012-05-31
WO2010077842A2 (en) 2010-07-08

Similar Documents

Publication Publication Date Title
TWI446261B (zh) 用於保存硬體內有損耗元資料之擬實體位址空間
US10387324B2 (en) Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
JP5860450B2 (ja) ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張
US8769212B2 (en) Memory model for hardware attributes within a transactional memory system
JP5608738B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
US20180011748A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
US9280397B2 (en) Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata
JP2012509529A (ja) トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録
JP6023765B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化
JP6318440B2 (ja) 無制限トランザクショナルメモリ(utm)システムの最適化

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees