TW201617896A - 過濾轉譯後備緩衝區無效 - Google Patents

過濾轉譯後備緩衝區無效 Download PDF

Info

Publication number
TW201617896A
TW201617896A TW104110650A TW104110650A TW201617896A TW 201617896 A TW201617896 A TW 201617896A TW 104110650 A TW104110650 A TW 104110650A TW 104110650 A TW104110650 A TW 104110650A TW 201617896 A TW201617896 A TW 201617896A
Authority
TW
Taiwan
Prior art keywords
screening program
processing unit
mapping
entry
translation lookaside
Prior art date
Application number
TW104110650A
Other languages
English (en)
Inventor
夏河杜 塞克哈 穆可吉
Original Assignee
凱為公司
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 凱為公司 filed Critical 凱為公司
Publication of TW201617896A publication Critical patent/TW201617896A/zh

Links

Classifications

    • 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
    • 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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一種篩檢程式,包括篩檢程式條目,每個條目對應於虛擬記憶體位址與實體記憶體位址之間的映射,並包括存在指標,其指示哪些處理單元具有存在於它們的各自的轉譯後備緩衝區(TLB)中的映射。用於第一映射的TLB無效(TLBI)指令被接收。如果對應於第一映射的第一篩檢程式條目存在於篩檢程式中,則基於第一篩檢程式條目的存在指標,多個處理單元被劃分成具有存在於它們的轉譯後備緩衝區中的第一映射的零個或更多個處理單元的第一分區和不具有存在於它們的轉譯後備緩衝區中的第一映射的零個或更多個處理單元的第二分區。TLBI指令被發送到被包括在第一分區中的處理單元,而不是被包括在第二分區中的處理單元。

Description

過濾轉譯後備緩衝區無效
本發明涉及計算系統中的轉譯後備緩衝區的管理。
許多計算系統利用虛擬記憶體系統以允許程式設計者存取記憶體位址,而無須考慮記憶體位址駐留在計算系統的實體記憶體層級的何處。為了這樣做,虛擬記憶體系統維護由程式設計者使用的虛擬記憶體位址至儲存了由虛擬記憶體位址引用的實際資料的實體記憶體位址的映射。實體記憶體位址可駐留在任意類型的儲存裝置(如,SRAM、DRAM、磁片等)中。
當程式存取虛擬記憶體位址時,虛擬記憶體系統執行位址轉換以確定哪個實體記憶體位址由虛擬記憶體位址引用。儲存在確定的實體位址處的資料從實體記憶體位址中被讀取,作為在記憶體頁面內的偏移,並被返回由程式使用。虛擬位址至實體位址的映射被儲存在“頁表”中。在一些情況下,虛擬記憶體位址可能位於大虛擬位址空間的頁面中,該頁轉換成當前沒有駐留在主記憶體中的實體記憶體的頁面(即,分頁錯誤),以使得該頁面然後被複製到主記憶體中。
現代計算系統包括作為用於頁表的快取記憶體的一個或多個轉譯後備緩衝區(TLB),該轉譯後備緩衝區由虛擬記憶體系統用來提高虛擬記憶體位址到實體記憶體位址的轉換速度。很通常的,TLB包括多個來自頁表的條目,每個條目包含從虛擬位址至實體位址的映射。通常,TLB的條目僅覆蓋對計算系統可用的總 記憶體的部分。在一些示例中,TLB的條目被維護,以使得由TLB覆蓋的總的可用記憶體的部分包括最近被存取的、最常被存取的,或最可能被存取的總的可用記憶體的部分。
在一個方面中,一般來說,一種用於管理多個轉譯後備緩衝區的方法,每個轉譯後備緩衝區包括多個轉譯後備緩衝區條目,並與多個處理單元中的對應的處理單元關聯,本方法包括:維護包括多個篩檢程式條目的篩檢程式,每個篩檢程式條目對應於在虛擬記憶體位址與實體記憶體位址之間的映射並包括存在指標,其指示多個處理單元中的哪些處理單元具有出現在它們相應轉譯後備緩衝區中的映射;接收用於在第一虛擬記憶體位址與第一實體記憶體位址之間的第一映射的轉譯後備緩衝區無效指令;確定對應於第一映射的第一篩檢程式條目是否存在於篩檢程式中;如果第一篩檢程式條目存在於篩檢程式中,則基於第一篩檢程式條目的存在指標,將多個處理單元劃分成具有存在於它們的轉譯後備緩衝區中的第一映射的零個或更多個處理單元的第一分區和不具有存在於它們的轉譯後備緩衝區中的第一映射的零個或更多個處理單元的第二分區;向被包括在處理單元的第一分區中的處理單元發送轉譯後備緩衝區無效指令;以及抑制向被包括在處理單元的第二分區中的處理單元發送轉譯後備緩衝區無效指令。
本發明的方面可以包括下述特徵中的一個或多個特徵。
所述方法進一步包括,如果第一篩檢程式條目不存在於篩檢程式中,則創建對應於篩檢程式中第一映射的第一篩檢程式條目,向多個處理單元的全部處理單元中發送轉譯後備緩衝區無效指令,並為第一篩檢程式條目設定存在指標,以指示多個處理單元中沒有處理單元具有存在於它們的轉譯後備緩衝區的條目中的第 一映射。
過濾器具有有限數量的篩檢程式條目的容量,並且本方法進一步包括:在創建第一篩檢程式條目之前,根據篩檢程式條目驅逐策略(eviction policy),從篩檢程式中移除篩檢程式條目。
篩檢程式條目驅逐策略包括最近最少使用驅逐策略。
所述方法進一步包括,在向被包括在處理單元的第一分區中的處理單元發送轉譯後備緩衝區無效指令時,為第一篩檢程式條目設定存在指標,以指示多個處理單元中沒有處理單元具有存在於它們的轉譯後備緩衝區條目中的第一映射。
多個處理單元中沒有任何處理單元被包括在處理單元的第一分區中。
多個處理單元的第一處理單元的第一轉譯後備緩衝區的第一轉譯後備緩衝區條目包括在第二虛擬記憶體位址與第二實體記憶體位址之間的第二映射,且篩檢程式不包括對應於第二映射的第二篩檢程式條目。
向被包括在處理單元第一分區中的處理單元發送轉譯後備緩衝區無效指令引起與被包括在處理單元的第一分區中的處理單元的每個處理單元的轉譯後備緩衝區中的第一映射關聯的相應轉譯後備緩衝區條目的無效。
第一篩檢程式條目的存在指標包括多個存在條目,每個存在條目對應於多個處理單元中的不同的處理單元,並指示第一映射是否存在於對應的處理單元。
多個篩檢程式條目中的每個條目包括中繼資料。
中繼資料與轉譯後備緩衝區無效指令中分離地被接收。
中繼資料包含塊(block)大小。
中繼資料包含上下文資訊。
上下文資訊包括以下中的至少一個:虛擬機器識別字(VMID)、位址空間識別字(ASID)或異常等級(EL)中。
在另一方面中,一般來說,一種設備,該設備包括:多個處理單元,每個處理單元與對應的轉譯後備緩衝區關聯,每個轉譯後備緩衝區包括多個轉譯後備緩衝區條目;包括多個篩檢程式條目的篩檢程式,每個篩檢程式條目對應於在虛擬記憶體位址與實體記憶體位址之間的映射,並包括存在指標,該存在指標指示多個處理單元中的哪些處理單元具有存在於它們的相應轉譯後備緩衝區中的映射;以及電路,該電路被配置為:接收用於在第一虛擬記憶體位址與第一實體記憶體位址之間的第一映射的轉譯後備緩衝區無效指令;確定對應於第一映射的第一篩檢程式條目是否存在於篩檢程式中;如果第一篩檢程式條目存在於篩檢程式中,則基於第一篩檢程式條目的存在指標,將多個處理單元劃劃分成具有存在於它們的轉譯後備緩衝區中的第一映射的零個或更多個處理單元的第一分區和不具有存在於它們的轉譯後備緩衝區中的第一映射的零個或更多個處理單元的第二分區;向被包括在處理單元的第一分區中的處理單元發送轉譯後備緩衝區無效指令;並抑制向被包括在處理單元的第二分區中的處理單元發送轉譯後備緩衝區無效指令。
本發明的方面可以包括下述特徵的一個或多個特徵。
電路被進一步配置為,如果第一篩檢程式條目不存在於篩檢程式中,則在篩檢程式中創建對應於第一映射的第一篩檢程式條目,向多個處理單元的全部處理單元發送轉譯後備緩衝區無效指令,並為第一篩檢程式條目設定存在指標,以指示多個處理單元中沒有處理單元具有存在於它們的轉譯後備緩衝區條目中的第一映射。
過濾器具有有效數量的篩檢程式條目的容量,並且該 設備進一步包括:在生成第一篩檢程式條目之前,根據篩檢程式條目驅逐策略,將篩檢程式條目從篩檢程式中移除。
篩檢程式條目驅逐策略包括至少最近最少使用驅逐策略。
電路被進一步配置為,在向被包括在處理單元的第一分區中的處理單元發送轉譯後備緩衝區無效指令時,為第一篩檢程式條目設定存在指標,以指示多個處理單元中沒有處理單元具有存在於它們的轉譯後備緩衝區條目中的第一映射。
多個處理單元中沒有任何處理單元被包括在處理單元的第一分區中。
多個處理單元的第一處理單元的第一轉譯後備緩衝區的第一轉譯後備緩衝區條目包括在第二虛擬記憶體位址和第二實體記憶體位址之間的第二映射,且篩檢程式不包括對應於第二映射的第二篩檢程式條目。
向被包括在處理單元的第一分區中的處理單元發送轉譯後備緩衝區無效指令,引起與被包括在處理單元的第一分區中的處理單元的每個處理單元的轉譯後備緩衝區中的第一映射關聯的相應轉譯後備緩衝區的無效。
第一篩檢程式條目的存在指標包括多個存在指標,每個存在指標對應於多個處理單元中的不同處理單元,且指示第一映射是否存在於對應的處理單元中。
多個篩檢程式條目中的每個條目包括中繼資料。
中繼資料與轉譯後備緩衝區無效指令中分離地被接收。
中繼資料包括塊大小。
中繼資料包括上下文資訊。
上下文資訊包括以下中的至少一個:虛擬機器識別字(VMID)、位址空間識別字(ASID)或異常等級(EL)。
本發明的其他特徵和優點將通過下面的說明書和申請專利範圍變得顯而易見。
102‧‧‧處理單元
104‧‧‧L2快取記憶體
106‧‧‧主記憶體
108‧‧‧次級儲存裝置
110‧‧‧輸入/輸出(I/O)設備
112‧‧‧處理匯流排
114‧‧‧記憶體匯流排
116‧‧‧I/O匯流排
118‧‧‧橋接器
202‧‧‧處理單元
220‧‧‧處理器核心
222‧‧‧L1資料快取記憶體
224‧‧‧L1指令快取記憶體
226‧‧‧記憶體管理單元(MMU)
227‧‧‧頁表走查器
228‧‧‧匯流排介面
230‧‧‧資料TLB
232‧‧‧指令TLB
333‧‧‧TLB目錄快取記憶體控制器
334‧‧‧TLB目錄快取記憶體
436‧‧‧行數
438‧‧‧列數
440‧‧‧TLB
442‧‧‧TLB
444‧‧‧TLB
446‧‧‧TLB
560‧‧‧條目
562‧‧‧條目
第一圖是計算系統。
第二圖是被耦合至處理器匯流排的處理單元。
第三圖是包含了TLB目錄快取記憶體的電腦系統的部分。
第四圖是包含了TLB目錄快取記憶體的計算系統的簡化表示。
第五圖示出了使用TLB目錄快取記憶體執行選擇性無效的計算系統的簡化表示。
第六圖示出了使用TLB目錄快取記憶體阻止TLBI指令的發送的計算系統的簡化表示。
第七圖示出了在TLB目錄快取記憶體未命中之後廣播TLBI指令的計算系統的簡化表示。
第八圖示出了執行TLB目錄快取記憶體管理程式的計算系統的簡化表示。
第九圖示出了執行TLB目錄快取記憶體條目管理程式的計算系統的簡化表示。
1.綜述
由於各種原因(例如,上下文切換),在虛擬位址與實體位址之間的映射可能變為無效。如果映射被儲存為TLB中的條目,則TLB中的條目必須被無效,以避免將錯誤的資料返回至使用虛擬位址的程式。在一些示例中,計算系統提供用於使TLB條目無效的指令,該指令有時被稱作TLB無效指令(TLBI)。當在虛擬位址與實體位址之間的映射變為無效時,發佈對映射的TLBI。 當TLB接收到用於映射的TLBI指令時,對應於映射的TLB中的任意條目被無效(或被移除)。
在一些示例中,當虛擬位址和實體位址之間的映射變為無效時,即使TLB不包括用於映射的條目,TLBI仍被發佈並被發送到TLB。將這種不必要的TLBI發送到TLB可能負面地影響計算系統的性能。此外,在具有多個處理單元(例如,多核處理器的核心)的計算系統中,可能存在多個TLB(即,每個處理單元一個TLB)且由於將不必要的TLBI發送到處理單元,因此負面影響被加重。
本文中所描述的方法目標在於降低不必要地被發送到計算系統的處理單元的TLBI的數量,由此減少不必要地將TLBI發送到處理單元的關聯負面影響。
2.計算系統
參考第一圖,計算系統100包括多個處理單元102、2級(L2)快取記憶體104(例如,SRAM)、主記憶體106(例如,DRAM)、次級儲存裝置(例如,磁片)108,以及一個或多個輸入/輸出(I/O)設備110(例如,鍵盤或滑鼠)。處理單元102和L2快取記憶體104與處理匯流排112連接,主記憶體106與記憶體匯流排114連接,以及I/O設備110和次級儲存裝置108與I/O匯流排116連接。處理匯流排112、記憶體匯流排114以及I/O匯流排116經由橋接器118彼此連接。
2.1記憶體層級
通常,處理單元102執行一個或多個電腦程式的指令,包括從被包括在計算系統100中的記憶體中讀取處理器指令和資料。如在本領域中已熟知的,基於記憶體或儲存裝置的相對時延,計算系統100中的各種記憶體或儲存裝置被組織為記憶體層級。這種記憶體層級的一個示例在頂層處具有處理器寄存器(未示出),後跟第一層(L1)快取記憶體(未示出),後跟L2快取記憶體104, 後跟主記憶體106,以及最後後跟次級儲存裝置108。當給定的處理單元102嘗試存取記憶體位址時,記憶體層級中的每個記憶體或每個儲存裝置以從記憶體層級的頂層向下的順序被檢查,來確定記憶體位址的資料是否被儲存在儲存裝置或記憶體設備中。
例如,為使處理單元102的第一處理單元存取針對僅儲存在次級儲存裝置108中的資料的記憶體位址,處理單元首先確定記憶體位址和資料是否被儲存在其L1快取記憶體中。由於記憶體位址和資料沒有被儲存在其L1快取記憶體中,因此快取記憶體未命中發生,其使得處理器經由處理器匯流排112與L2快取記憶體140進行通信,以確定記憶體位址和資料是否被儲存在L2快取記憶體140中。由於記憶體位址和資料沒有被儲存在L2快取記憶體中,因此又一快取記憶體未命中發生,其使得處理器經由處理匯流排112、橋接器118以及記憶體匯流排114與主記憶體106進行通信,以確定記憶體位址和資料是否被儲存在主記憶體106中。由於記憶體位址和資料沒有被儲存在主記憶體106中,又一未命中發生(也被稱作“分頁錯誤”),其使得主記憶體106經由處理器匯流排、橋接器118以及I/O匯流排116與次級儲存裝置108進行通信,以確定記憶體位址和資料是否被儲存在次級儲存裝置108中。由於記憶體位址和資料被儲存在次級儲存裝置108中,資料從次級儲存裝置108中被取回並經由I/O匯流排116、橋接器118和處理器匯流排112被返回至處理單元。記憶體位址和資料可能在記憶體層級中的任意數量的記憶體或儲存裝置中被快取記憶體,以使得記憶體位址和資料今後更加容易被存取。
2.2處理單元
參考第二圖,第一圖的處理單元102的處理單元202的一個示例與處理匯流排112連接。處理單元202包括處理器核心220、L1資料快取記憶體222、L1指令快取記憶體224、記憶體管理單元(MMU)226和匯流排介面228。處理器核心220(也被簡 稱為“核心”)是單獨的處理器(也稱作中央處理單元(CPU)),該處理器核心與其他處理器核心共同協調以形成多核處理器。MMU 226包括頁表走查器227、資料轉譯後備緩衝區(TLB)230以及指令轉譯後備緩衝區(TLB)232,下面將對上述每個部分進行詳細描述。注意到,在一些示例中,資料TLB 230和指令TLB 232之間的區別是邏輯性的,且二者TLB 230和232共用相同的結構或被組合成單個TLB。
很通常的,處理器核心220執行在一些情況下要求存取計算系統100的記憶體層級中的記憶體位址的指令。由第二圖的處理單元202執行的指令使用虛擬記憶體位址。
2.2.1資料記憶體存取
當記憶體核220要求存取與資料關聯的虛擬記憶體位址時,記憶體核220將針對虛擬記憶體位址的記憶體存取請求發送到L1資料快取記憶體222。L1資料快取記憶體222儲存有限數量的最近或通常被使用的由它們的虛擬記憶體位址標記的資料值。如果L1資料快取記憶體222具有用於虛擬記憶體位址的條目(即,快取記憶體命中),則與虛擬記憶體位址相關的資料被返回至處理器核心220,而不要求記憶體層級中的任何進一步記憶體存取操作。可替換地,在一些實施方案中,L1資料快取記憶體222通過它們的實體記憶體位址標記條目,其要求甚至對快取記憶體命中的位址轉換。
如果L1資料快取記憶體222不具有用於虛擬記憶體位址的條目(即,快取記憶體未命中),記憶體存取請求將被發送到MMU 226。通常,MMU 226使用資料TLB 230將虛擬記憶體位址轉換為對應的實體記憶體位址,並將針對實體記憶體位址的記憶體存取請求發送出處理器202並經由匯流排介面228發送到記憶體層級的其他元件。通過存取(可能層級化地)儲存在記憶體的一個或多個層級中的完整頁表,頁表走查器227處理沒有被儲存在資 料TLB 230中的映射的檢索。頁表儲存虛擬記憶體位址與實體記憶體位址之間完整的映射集合,頁表走查器227存取該映射集合以將虛擬記憶體位址轉換為對應的實體記憶體位址。
為了加快將虛擬記憶體位址轉換為實體記憶體位址的過程,資料TLB 230包括在虛擬記憶體位址與實體記憶體位址之間多個最近或通常被使用的映射。如果資料TLB 230具有用於虛擬記憶體位址的映射,則對與虛擬記憶體位址關聯的實體記憶體位址的記憶體存取請求(如從儲存在資料TLB 230中的映射確定的)經由匯流排介面228被發送出處理器202。
如果資料TLB 230不具有用於虛擬記憶體位址的映射(即,TLB未命中)則頁表走查器227遍歷(或“走查”)頁表的層級,以確定與虛擬儲存位址關聯的實體記憶體位址,並且對實體記憶體位址的記憶體請求(如通過儲存在頁表的映射確定的)經由匯流排介面228被發送出處理器202。
在一些示例中,資料TLB 230和頁表被並行存取,以保證在TLB未命中發生時,沒有額外的時間損失被發生。
由於L1資料快取記憶體222和資料TLB 230只能儲存有限數量的條目,因此,快取記憶體管理演算法被要求以確保儲存在L1資料快取記憶體222和資料TLB 230中的條目是可能被多次重複使用的那些。這種演算法基於準則,諸如最少被使用準則,將儲存在L1資料快取記憶體222和資料TLB 230中的條目驅逐並替換。
2.2.2指令記憶體存取
當處理器核心220要求對與處理器指令關聯的虛擬記憶體位址的存取時,處理器核心220將針對虛擬記憶體位址的記憶體存取請求發送到L1指令快取記憶體224。L1指令快取記憶體224儲存由它們的虛擬記憶體位址標記的有限數量的處理器指令。如果L1指令快取記憶體224具有用於虛擬記憶體位址的條目(即, 快取記憶體命中),則與虛擬記憶體位址相關的處理器指令被返回至處理器核心220,而不要求在記憶體層級中的任何其他的記憶體存取操作。可替換地,在一些實施方式中,L1指令快取記憶體224通過它們的實體記憶體位址標記條目,其要求甚至對快取記憶體命中的位址轉換。
然而,如果L1指令快取記憶體224不具有用於虛擬記憶體位址的條目(即,快取記憶體未命中),則記憶體存取請求被發送到MMU 226。通常,MMU 226使用指令TLB將虛擬記憶體位址轉換成對應的實體記憶體位址,並將針對實體記憶體位址的記憶體存取請求發送出處理器202,並經由匯流排介面228發送到記憶體層級的其他元件中。如上述指示的,使用頁表走查器227完成該轉換,該頁表走查器227處理在虛擬記憶體位址與實體記憶體位址之間的映射的從頁表中的檢索。
為加快將虛擬記憶體位址轉換成實體記憶體位址的過程,指令TLB 232包括多個最近或通常被使用的在虛擬記憶體位址與實體記憶體位址之間的映射。如果指令TLB 232具有用於虛擬記憶體位址的映射,則針對與虛擬記憶體位址關聯的實體記憶體位址的請求(如從儲存在指令TLB 232中的映射中確定的)經由匯流排介面228被發送出處理器202。
如果指令TLB 232不具有用於虛擬記憶體位址的映射(即,TLB未命中),則頁表走查器227走查頁表以確定與虛擬記憶體位址關聯的實體記憶體位址,並且針對實體記憶體位址的記憶體請求(如從儲存在頁表中的映射中確定的)經由匯流排介面228被發送出處理器202。
在一些示例中,指令TLB 232和頁表被並行存取,以確保當TLB未命中發生時,沒有額外的時間損失被發生。
由於L1指令快取記憶體224和指令TLB 232只能儲存有限數量的條目,因此快取記憶體管理演算法被要求以確保儲存 在L1指令快取記憶體224和指令TLB 232中的映射是可能被多次重複使用的那些。這種演算法基於準則,如最近最少被使用準則,將儲存在L1資料快取記憶體222和資料TLB 230中的條目驅逐並替換。
2.3轉譯後備緩衝區無效(TLBI)指令
在一些示例中,計算系統的虛擬記憶體系統可改變虛擬記憶體位址與實體記憶體位址之間的它的映射。在這種情況下,用於虛擬記憶體位址的轉譯後備緩衝區無效指令(TLBI)被發佈(例如,通過作業系統或通過硬體實體)至計算系統中的TLB(即,每個處理單元202的資料TLB 230和指令TLB 232)。通常,TLBI指令包括虛擬記憶體位址,並使得與虛擬記憶體位址關聯的任何TLB條目的無效。也就是說,當TLB接收用於給定虛擬記憶體位址的TLBI時,儲存了在給定的虛擬記憶體位址和實體記憶體位址之間映射的TLB中的任意條目被無效。
2.4 TLB目錄快取記憶體
參考第三圖,在一些示例中,要求使將被發送到處理單元202的TLBI的數量最小化。一種實現其的方式是包括儲存用於有限映射集合的篩檢程式篩檢程式,該篩檢程式可由處理單元202用來在特定情況下避免至所有處理單元202的不必要的TLBI廣播。這種篩檢程式的示例在本文中被稱作TLB目錄快取記憶體334,並且在計算系統的記憶體層級中(例如,在L2快取記憶體104中)被實現。通常,TLB目錄快取記憶體334包括有限數量(例如,2500)的條目,每個條目與虛擬記憶體位址關聯,並指示在計算系統100中的哪個記憶元件202具有它們的TLB中的在虛擬記憶體位址和實體記憶體位址之間的映射。當計算系統100的虛擬記憶體系統為給定的虛擬記憶體位址發佈TLBI時,在將TLBI發送到處理單元202之前,與TLB目錄快取記憶體334相關的TLB目錄快取記憶體控制器333徵詢(consult)TLB目錄快取記憶體334, 以確定,如果存在,處理單元202中的哪個處理單元應該被發送,並將TLBI只發送到那些處理單元202。也就是說,在TLB目錄快取記憶體控制器333的控制下,TLB目錄快取記憶體334被用作篩檢程式,其將不需要的TLBI濾除。
在一些實施方式中,TLB目錄快取記憶體334是‘排他性的’快取記憶體,因為,如果在計算系統100的給定處理單元的TLB中存在條目,則對應的條目不是必須存在於TLB目錄快取記憶體334中。在這樣的實施方式中,TLB目錄快取記憶體334必須能夠包含用於映射的條目,該映射的條目指示處理單元202中沒有任何TLB具有用於映射的條目。在其他實施方式中,TLB目錄快取記憶體334不必須是嚴格地‘排他性的’快取記憶體,而且也不受制於會要求每個存在於處理單元202的TLB的任意TLB中的映射具有TLB目錄快取記憶體334中的對應條目的‘包容性的’快取記憶體。
參考第四圖,計算系統100的簡化版本400包括經由處理器匯流排112與L2快取記憶體104通信的四個處理單元202(即,第一處理單元P1、第二處理單元P2、第三處理單元P3以及第四處理單元P4)。每個處理單元202包括TLB(即,P1包括第一TLB 440、P2包括第二TLB 442、P3包括第三TLB 444以及P4包括第四TLB 446)。為簡單起見,四個TLB 440、442、444、446被一般性地表示,而沒有明確指示指定它們是資料TLB還是指令TLB。由於通過TLB目錄快取記憶體334和TLB目錄快取記憶體控制器333的對TLBI的處理是相同的,而不考慮是否四個TLB是資料TLB還是指令TLB,因此該四個TLB的一般性表示是有效的。
L2快取記憶體104包括TLB目錄快取記憶體334和TLB目錄快取記憶體控制器333。TLB目錄快取記憶體控制器333(在其他指令中間)從處理器匯流排112(或從另一個網路)接收TLBI並使用TLB目錄快取記憶體334處理TLBI以確定,如果存 在,哪個處理單元應該接收TLBI。TLB目錄快取記憶體控制器333將TLBI發送到被確定應該經由處理器匯流排112接收TLBI的那些處理單元。
為了圖示性的目的,TLB目錄快取記憶體334被表示為包括行數436和列數438的表。表中的每一行表示虛擬記憶體位址和實體記憶體位址之間的不同映射,每一行被稱為‘TLB目錄快取記憶體條目’,或簡單地稱為‘條目’。為簡單起見,使用字母表的字母表示虛擬記憶體位址與實體記憶體位址之間的單個映射。
在第四圖的示例中,TLB目錄快取記憶體334包括八個條目,用於映射H的第一條目、用於映射F的第二條目、用於映射A的第三條目、用於映射Z的第四條目、用於映射R的第五條目、用於映射B的第六條目、用於映射T的第七條目和用於映射L的第八條目。在一些示例中,TLB目錄快取記憶體334中的條目包括上下文資訊,諸如虛擬機器識別字(VMID)、位址空間識別字(ASID)或異常等級級別(EL)。
表中的每一列表示處理單元202中的不同一個處理單元。在第四圖的示例中,TLB目錄快取記憶體334包括四列:與第一處理單元P1關聯的第一列,與第二處理單元P2關聯的第二列,與第三處理單元P3關聯的第三列,以及與第四處理單元P4關聯的第四列。
在TLB目錄快取記憶體334的每一行和每一列的交叉處的單元包含關於與列關聯的處理單元是否具有用於與儲存在其TLB中的行相關的映射條目的指示。例如,行可被儲存為資料結構中的位元向量(例如,點陣圖),並且位向量中的每個位可表示對應的處理單元202的TLB的條目中映射的存在或不存在。為圖示性的目的,第四圖在單元中利用X表示映射的存在。
在第四圖中的示例中,TLB目錄快取記憶體334中的 第一條目在其與第三處理單元P3關聯的單元中具有X,且條目中的剩餘單元被留空,指示第三處理單元P3是具有用於儲存在其TLB中的映射H的條目的唯一處理單元。TLB目錄快取記憶體334的第二條目在其與第三處理單元P3關聯的單元中具有X,且條目中的剩餘單元被留空,指示第三處理單元P3是具有用於儲存在其TLB中的映射F的條目的唯一處理單元。TLB目錄快取記憶體334中的第三條目在其與第一、第二和第四處理單元P1、P2和P4關聯的單元中具有X,且第三處理單元P3被留空,指示只有第一、第二和第四處理單元P1、P2和P4具有用於儲存在它們的TLB中的映射A的條目。
TLB目錄快取記憶體334中的第四條目具有所有在條目中被留空的單元,指示沒有任何處理單元202具有儲存在它們的TLB中的映射Z的條目。TLB目錄快取記憶體334中的第五條目在與第一處理單元P1關聯的單元中具有X,且條目中的剩餘單元被留空,指示第一處理單元P1是具有儲存在其TLB中的映射R的條目的唯一處理單元。TLB目錄快取記憶體334中的第六條目在與第一處理單元P1相關的單元中具有X,且條目中的剩餘單元被留空,指示第一處理單元P1是具有用於儲存在其TLB中的映射B的條目的唯一處理單元。TLB目錄快取記憶體334中的第七條目在與第一和第二處理單元P1和P2相關的單元中具有X,且條目中的剩餘單元被留空,指示第一處理單元P1和P2是具有用於儲存在其TLB中的映射T的條目的唯一處理單元。TLB目錄快取記憶體334中的第八條目在與第二處理單元P2相關的單元中具有X,且條目中的剩餘單元被留空,指示第二處理單元P2是具有用於儲存在其TLB中的映射L的條目的唯一處理單元。
注意到,與第一、第二、第三和第四處理單元相關的TLB 440、442、444和446包括與TLB目錄快取記憶體334的條目一致的條目。同樣注意到,由於TLB目錄快取記憶體334不是 包容性的快取記憶體,因此用於第四處理單元P4的TLB 446具有用於未在TLB目錄快取記憶體334中呈現的映射Q的條目。
2.4.1選擇性無效
在一些示例中,當用於在虛擬記憶體位址和實體記憶體位址之間的給定的映射的TLBI在TLB目錄快取記憶體控制器處被接收時,TLB目錄快取記憶體控制器可能指示,只有處理單元的子集具有儲存在它們的TLB中的映射。在這種情況下,TLB目錄快取記憶體控制器只將TLBI發送到具有儲存在它們的TLB中的映射的處理單元子集中的那些處理單元。
參考第五圖,在TLB目錄快取記憶體控制器333處,從處理器匯流排112中接收用於映射A的TLBI。當接收用於映射A的TLBI時,TLB目錄快取記憶體控制器333搜索TLB目錄快取記憶體334以確定在TLB目錄快取記憶體334中是否存在用於映射A的條目。由於TLB目錄快取記憶體334的第三行的確包括針對映射A的條目560,TLB目錄快取記憶體控制器333檢查第三行中的條目560以確定,如果存在,哪個處理單元202具有儲存在它們的TLB中的映射A。基於TLB目錄快取記憶體334的第三行中的條目560,TLB目錄快取記憶體控制器333確定第一處理單元P1,第二處理單元P2,和第四處理單元P4,具有儲存在它們的TLB 440、442、446中的映射A。
確定只有第一處理單元P1,第二處理單元P2和第四處理單元P4具有儲存在它們的TLB中的映射A之後,TLB目錄快取記憶體控制器333只將TLBI經由處理器匯流排112發送到第一、第二和第四處理單元。通過只將TLBI發送到第一、第二和第四處理單元,TLB目錄快取記憶體控制器333避免將不必要的TLBI指令發送到第三處理單元。
當第一、第二和第四處理單元的TLB 440、442、446從TLB目錄快取記憶體控制器333中接收各自的TLBI時,TLBI 使它們為映射A儲存的條目562無效。
2.4.2 TLBI阻止
在其他示例中,TLB目錄快取記憶體可指示處理單元中沒有任何處理單元在它們的TLB中具有在虛擬記憶體位址和實體記憶體位址之間的給定的映射。在這種情況下,TLBI不被發送到處理單元的任何處理單元。
參考第六圖,在TLB目錄快取記憶體控制器333處,用於映射A的TLBI從處理器匯流排112被接收。在接收用於映射A的TLBI時,TLB目錄快取記憶體控制器333搜索TLB目錄快取記憶體334,以確定在TLB目錄快取記憶體334中是否存在用於映射A的條目。TLB目錄快取記憶體控制器333確定TLB目錄快取記憶體334的確包括針對映射A的條目664。注意到,由於對於映射A,TLBI最近被接收(即,如前面部分所描述的),因此,映射已從TLB目錄快取記憶體表的第三段(slot)移動至第一段,指示它是在快取記憶體中最近被使用的條目。同樣注意到,由於用於映射A的TLBI最近被接收,映射A的條目指示沒有處理單元202在它們的TLB中具有用於映射A的條目。
基於TLB目錄快取記憶體334的第一行中的條目664,TLB目錄快取記憶體控制器333確定處理單元202中沒有任何處理單元具有儲存在它們的TLB中的映射A。確定處理單元202中沒有任何處理單元具有儲存在它們的TLB中的映射之後,TLB目錄快取記憶體控制器333不將TLBI發送到處理單元202的任何處理單元,由此,阻止了將不必要的TBLI指令發送到處理單元202。
如果用於映射Z的TLBI在TLB目錄快取記憶體控制器333處被接收,則類似的阻止操作會發生。
2.4.3 TLB目錄快取記憶體未命中
然而在又一個示例中,TLB目錄快取記憶體可能不具有關於哪個處理單元202在它們的TLB中具有虛擬記憶體位址與 實體記憶體位址之間的給定的映射的任何資訊。在這種情況下,TLBI被發送到處理單元202的所有處理單元。
參考第七圖,在TLB目錄快取記憶體控制器333處,用於映射Q的TLBI從處理器匯流排112中被接收。在接收映射Q的TLBI時,TLB目錄快取記憶體控制器333搜索TLB目錄快取記憶體334,以確定用於映射Q的條目是否存在於在TLB目錄快取記憶體334中。TLB目錄快取記憶體控制器333確定在TLB目錄快取記憶體334中沒有用於映射Q的條目存在。在沒有用於映射Q的條目存在於TLB目錄緩衝器334的情況下,沒有辦法確定是否處理單元202的任何處理單元具有儲存在它們TLB中的映射Q。為此,TLB目錄快取記憶體控制器333經由處理器匯流排112將TBLI發送到處理單元202的所有處理單元。
注意到,由於第四處理單元P4恰好具有在它的TLB 446中儲存為條目766的映射Q,因此儲存在它的TLB 446中的映射Q由TLBI無效。由於其他處理單元202中沒有任何處理單元具有儲存在它們的440、442、444中的映射Q,因此,沒有映射在它們的TLB 440、442、444中由TLBI無效。
2.4.4 TLB目錄快取記憶體條目添加和驅逐
參考第八圖,在映射Q的TLBI被發送到處理單元202的所有處理單元之後,用於映射Q的新的條目848在TLB目錄快取記憶體334中被生成。由於剛剛將映射Q的TLBI發送到處理單元202的所有處理單元,因此,用於映射Q的條目848指示處理單元202中沒有任何處理單元具有儲存在它們的TLB 440、442、444、446(即,新條目848的單元全都為空)中的映射Q。在一些示例中,使用上下文資訊、塊大小以及與映射Q相關的其他中繼資料資訊生成新條目。在一些示例中,上下文資訊、塊大小以及其他中繼資料資訊在分別的事務中的TLB目錄快取記憶體處從處理單元中被接收。
如之前所提到的,TLB目錄快取記憶體334只可能儲存有限數量的條目。為此,在用於映射Q的新條目848被添加至TLB目錄快取記憶體334之前,另一條目必須從TLB目錄快取記憶體334中被驅逐,以為新條目848讓出空間。在第八圖中,用於映射L的條目850被驅逐。
注意到,在第八圖中,用於映射Q的新條目848被添加至TLB目錄快取記憶體334表的頂部,並且被驅逐的用於映射L的條目850位於TLB目錄快取記憶體334表的底部。這種在TLB目錄快取記憶體334中管理條目的方式與最近最少使用的快取記憶體管理演算法一致,其中,最近最多被使用的條目位於快取記憶體的頂部,且最近最少被使用的條目位於快取記憶體的底部。當將新條目添加至快取記憶體的頂部時,位於快取記憶體底部的最近最少被使用的條目被從快取記憶體中驅逐以為新條目讓出空間。當然,可使用許多其他快取記憶體管理演算法來管理TLB目錄快取記憶體334。
2.4.5 TLB目錄快取記憶體條目管理
參考第九圖,為了在第四處理單元P4的TLB 446中的在虛擬記憶體位址與實體記憶體位址之間的映射A,新的條目952已經被創建。為了在TLB 466中生成新的條目,MMU(未示出)發佈對與映射A關聯的實體位址的讀取請求。與映射A關聯的虛擬位址同樣與由MMU發佈的讀取請求一起被發送。讀取請求通過TLB目錄快取記憶體控制器333被發送,該TLB目錄快取記憶體控制器處理讀取指令並確定第四處理單元P4已經發佈了與映射A相關的讀取請求。
TLB目錄快取記憶體控制器333搜索TLB目錄快取記憶體334,以確定是否TLB目錄快取記憶體334具有用於映射A的條目。在第九圖的示例中,TLB目錄快取記憶體334的確具有映射A的條目(即,在第二行)。已確定TLB目錄快取記憶體334具 有用於映射A的條目,則TLB目錄快取記憶體控制器333將用於映射A的條目更新以指示第四處理單元P4的TLB 446具有用於映射A的條目(在圖中以利用X 954標記與映射A關聯的單元並且標記第四處理單元P4的方式示出)。當處理單元202的TLB被更新的任何時候,通過更新TLB目錄快取記憶體334,TLB目錄快取記憶體334被確保正確。
3.實現方式
實現上述技術的系統可以在軟體、韌體、數位電子電路或電腦硬體、或它們的組合中實現。系統可以包括有形地被包括在機器可讀儲存裝置中用於由可程式設計處理器執行的電腦程式產品,和可以由執行指令程式的可程式設計處理器執行的方法步驟,以通過在輸入資料上進行操作和生成輸出來執行功能。系統可在可程式設計系統上執行的一個或多個電腦程式中實現,該可程式設計系統包括至少一個被耦合的可程式設計處理器以從資料儲存系統中接收資料和指令,並將資料和指令發送到資料儲存系統,至少一個輸入裝置,以及至少一個輸出設備。每個電腦程式可以在高階程序程式設計語言或物件導向的程式設計語言中實現,或如果需要,在組合語言或機器語言中實現;並且在任何情況下,語言可以是編譯性或解釋性的語言。通過示例的方式,適當的處理器包括通用和特殊用途的微處理器二者。通常,處理器將從唯讀記憶體和/或隨機記憶體中接收指令和資料。通常,電腦將包括一個或多個用於儲存資料檔案的大型儲存區設備;這樣的設備包括磁片,諸如內部硬碟和可換磁片;磁光碟;和光碟。適於有形地包含電腦程式指令和資料的儲存裝置包括所有形式的非易揮發記憶體,包括以示例性方式的半導體記憶體設備,諸如EPROM,EEPROM和快閃記憶體設備;磁片,諸如內部硬碟和可換磁片;磁光碟;和CD ROM盤。前述的任意形式可由ASIC(特定用途積體電路)補充,或被併入ASIC(特定用途積體電路)中。
其他實施例在所附的申請專利範圍書的範圍內。
104‧‧‧L2快取記憶體
112‧‧‧處理匯流排
202‧‧‧處理單元
333‧‧‧TLB目錄快取記憶體控制器
334‧‧‧TLB目錄快取記憶體
436‧‧‧行數
438‧‧‧列數
440‧‧‧TLB
442‧‧‧TLB
444‧‧‧TLB
446‧‧‧TLB

Claims (28)

  1. 一種用於管理多個轉譯後備緩衝區的方法,每個轉譯後備緩衝區包括多個轉譯後備緩衝區條目並且與多個處理單元中的對應的處理單元關聯,所述方法包括:維護包括多個篩檢程式條目的篩檢程式,每個篩檢程式條目對應於在虛擬記憶體位址與實體記憶體位址之間的映射並且包括存在指標,所述存在指標指示所述多個處理單元中的哪些處理單元具有存在於它們的相應轉譯後備緩衝區中的所述映射;接收用於在第一虛擬記憶體位址和第一實體記憶體位址之間的第一映射的轉譯後備緩衝區無效指令;確定對應於所述第一映射的第一篩檢程式條目是否存在於所述篩檢程式中;如果所述第一篩檢程式條目存在於所述篩檢程式中,則基於所述第一篩檢程式條目的所述存在指標,將所述多個處理單元劃分成具有存在於它們的轉譯後備緩衝區中的所述第一映射的零個或更多個處理單元的第一分區和不具有存在於它們的轉譯後備緩衝區中的所述第一映射的零個或更多個處理單元的第二分區;向被包括在處理單元的所述第一分區中的所述處理單元發送所述轉譯後備緩衝區無效指令;以及抑制向被包括在處理單元的所述第二分區中的所述處理單元發送所述轉譯後備緩衝區無效指令。
  2. 根據申請專利範圍第1項所述的方法,進一步包括:如果所述第一篩檢程式條目不存在於所述篩檢程式中,則在所述篩檢程式中創建對應於所述第一映射的所述第一篩檢程式條目,向所述多個處理單元中的全部所述處理單元發送所述轉譯後備緩衝區無效指令,以及為所述第一篩檢程式條目設定所述存在指標,以指示所述多個 處理單元中沒有處理單元具有存在於它們的轉譯後備緩衝區的所述條目中的所述第一映射。
  3. 根據申請專利範圍第2項所述的方法,其中所述過濾器具有有限數量的篩檢程式條目的容量,並且所述方法進一步包括:在創建所述第一篩檢程式條目之前,根據篩檢程式條目驅逐策略從所述篩檢程式中移除篩檢程式條目。
  4. 根據申請專利範圍第3項所述的方法,其中所述篩檢程式條目驅逐策略包括最近最少使用驅逐策略。
  5. 根據申請專利範圍第1項所述的方法,進一步包括:在向被包括在處理單元的所述第一分區中的所述處理單元發送所述轉譯後備緩衝區無效指令時,為所述第一篩檢程式條目設定所述存在指標,以指示所述多個處理單元中沒有處理單元具有存在於它們的轉譯後備緩衝區的所述條目中的所述第一映射。
  6. 根據申請專利範圍第1項所述的方法,其中所述多個處理單元中沒有處理單元被包括在處理單元的所述第一分區中。
  7. 根據申請專利範圍第1項所述的方法,其中所述多個處理單元中的第一處理單元的第一轉譯後備緩衝區的第一轉譯後備緩衝區條目包括在第二虛擬記憶體位址與第二實體記憶體位址之間的第二映射,並且所述篩檢程式不包括對應於所述第二映射的第二篩檢程式條目。
  8. 根據申請專利範圍第1項所述的方法,其中向被包括在處理單元的所述第一分區中的所述處理單元發送所述轉譯後備緩衝區無效指令引起與被包括在處理單元的所述第一分區中的所述處理單元中的每個處理單元的所述轉譯後備緩衝區中的所述第一映射關聯的相應轉譯後備緩衝區的無效。
  9. 根據申請專利範圍第1項所述的方法,其中所述第一篩檢程式條目的所述存在指標包括多個存在條目,每個存在條目對應於所述多個處理單元中的不同處理單元並且指示所述第一映射是否 存在於對應的所述處理單元中。
  10. 根據申請專利範圍第1項所述的方法,其中所述多個篩檢程式條目中的每個條目包括中繼資料。
  11. 根據申請專利範圍第10項所述的方法,其中所述中繼資料與所述轉譯後備緩衝區無效指令分離地被接收。
  12. 根據申請專利範圍第10項所述的方法,其中所述中繼資料包括塊大小。
  13. 根據申請專利範圍第10項所述的方法,其中所述中繼資料包括上下文資訊。
  14. 根據申請專利範圍第13項所述的方法,其中所述上下文資訊包括以下中的至少一個:虛擬機器識別字(VMID)、位址空間識別字(ASID)或異常等級(EL)。
  15. 一種設備,包括:多個處理單元,每個處理單元與對應的轉譯後備緩衝區關聯,每個轉譯後備緩衝區包括多個轉譯後備緩衝區條目;篩檢程式,所述篩檢程式包括多個篩檢程式條目,每個篩檢程式條目對應於在虛擬記憶體位址與實體記憶體位址之間的映射並且包括存在指標,所述存在指標指示所述多個處理單元中的哪些處理單元具有存在於它們的相應轉譯後備緩衝區中的所述映射;以及電路,所述電路被配置為:接收用於在第一虛擬記憶體位址和第一實體記憶體位址之間的第一映射的轉譯後備緩衝區無效指令;確定對應於所述第一映射的第一篩檢程式條目是否存在於所述篩檢程式中;如果所述第一篩檢程式條目存在於所述篩檢程式中,則基於所述第一篩檢程式條目的存在指標,將所述多個處理單元劃分成具有存在於它們的轉譯後備緩衝區中的所述第一映射的零個或更多個處理單元的第一分區和不具有存在於它們的轉譯後備緩衝區中的 所述第一映射的零個或更多個處理單元的第二分區;向被包括在處理單元的所述第一分區中的所述處理單元發送所述轉譯後備緩衝區無效指令;以及抑制向被包括在處理單元的所述第二分區中的所述處理單元發送所述轉譯後備緩衝區無效指令。
  16. 根據申請專利範圍第15項所述的設備,其中所述電路被進一步配置為:如果所述第一篩檢程式條目不存在於所述篩檢程式中,則在所述篩檢程式中創建對應於所述第一映射的所述第一篩檢程式條目,向所述多個處理單元中的全部所述處理單元發送所述轉譯後備緩衝區無效指令,以及為所述第一篩檢程式條目設定所述存在指標,以指示所述多個處理單元中沒有處理單元具有存在於它們的轉譯後備緩衝區的所述條目中的所述第一映射。
  17. 根據申請專利範圍第16項所述的設備,其中所述過濾器具有有限數量的篩檢程式條目的容量,並且所述設備進一步包括在創建所述第一篩檢程式條目之前,根據篩檢程式條目驅逐策略從所述篩檢程式中移除篩檢程式條目。
  18. 根據申請專利範圍第17項所述的設備,其中所述篩檢程式條目驅逐策略包括最近最少使用驅逐策略。
  19. 根據申請專利範圍第15項所述的設備,其中所述電路被進一步配置為:在向被包括在處理單元的所述第一分區中的所述處理單元發送所述轉譯後備緩衝區無效指令時,為所述第一篩檢程式條目設定所述存在指標,以指示所述多個處理單元中沒有處理單元具有存在於它們的轉譯後備緩衝區的所述條目中的所述第一映射。
  20. 根據申請專利範圍第15項所述的設備,其中所述多個處 理單元中沒有處理單元被包括在處理單元的所述第一分區中。
  21. 根據申請專利範圍第15項所述的設備,其中所述多個處理單元的第一處理單元的第一轉譯後備緩衝區的第一轉譯後備緩衝區條目包括在第二虛擬記憶體位址與第二實體記憶體位址之間的第二映射,並且所述篩檢程式不包括對應於所述第二映射的第二篩檢程式條目。
  22. 根據申請專利範圍第15項所述的設備,其中向被包括在處理單元的所述第一分區中的所述處理單元發送所述轉譯後備緩衝區無效指令引起與被包括在處理單元的所述第一分區中的所述處理單元中的每個處理單元的所述轉譯後備緩衝區中的所述第一映射關聯的相應轉譯後備緩衝區的無效。
  23. 根據申請專利範圍第15項所述的設備,其中所述第一篩檢程式條目的所述存在指標包括多個存在條目,每個存在條目對應於所述多個處理單元中的不同處理單元並且指示所述第一映射是否存在於對應的所述處理單元中。
  24. 根據申請專利範圍第15項所述的設備,其中所述多個篩檢程式條目中的每個條目包括中繼資料。
  25. 根據申請專利範圍第24項所述的設備,其中所述中繼資料與所述轉譯後備緩衝區無效指令分離地被接收。
  26. 根據申請專利範圍第24項所述的設備,其中所述中繼資料包括塊大小。
  27. 根據申請專利範圍第24項所述的設備,其中所述中繼資料包括上下文資訊。
  28. 根據申請專利範圍第27項所述的設備,其中所述上下文資訊包括以下中的至少一個:虛擬機器識別字(VMID)、位址空間識別字(ASID)或異常等級(EL)。
TW104110650A 2014-11-14 2015-04-01 過濾轉譯後備緩衝區無效 TW201617896A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/541,807 US9697137B2 (en) 2014-11-14 2014-11-14 Filtering translation lookaside buffer invalidations

Publications (1)

Publication Number Publication Date
TW201617896A true TW201617896A (zh) 2016-05-16

Family

ID=55961801

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104110650A TW201617896A (zh) 2014-11-14 2015-04-01 過濾轉譯後備緩衝區無效

Country Status (2)

Country Link
US (1) US9697137B2 (zh)
TW (1) TW201617896A (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9684606B2 (en) 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US10296465B2 (en) * 2016-11-29 2019-05-21 Board Of Regents, The University Of Texas System Processor using a level 3 translation lookaside buffer implemented in off-chip or die-stacked dynamic random-access memory
US10289562B2 (en) * 2017-06-15 2019-05-14 International Business Machines Corporation Incorporating purge history into least-recently-used states of a translation lookaside buffer
US11243891B2 (en) * 2018-09-25 2022-02-08 Ati Technologies Ulc External memory based translation lookaside buffer
EP3948549B1 (en) * 2019-03-29 2024-05-08 INTEL Corporation Apparatus, method, and system for collecting cold pages
US11210233B2 (en) 2020-01-07 2021-12-28 International Business Machines Corporation System and method for handling address translation invalidations using an address translation invalidation probe

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4779188A (en) * 1983-12-14 1988-10-18 International Business Machines Corporation Selective guest system purge control
US4980816A (en) * 1987-12-18 1990-12-25 Nec Corporation Translation look-aside buffer control system with multiple prioritized buffers
US5497480A (en) * 1990-12-31 1996-03-05 Sun Microsystems, Inc. Broadcast demap for deallocating memory pages in a multiprocessor system
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5826057A (en) * 1992-01-16 1998-10-20 Kabushiki Kaisha Toshiba Method for managing virtual address space at improved space utilization efficiency
US5437017A (en) * 1992-10-09 1995-07-25 International Business Machines Corporation Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system
US5764944A (en) * 1995-09-08 1998-06-09 United Microelectronics Corp. Method and apparatus for TLB invalidation mechanism for protective page fault
US5893152A (en) * 1996-03-08 1999-04-06 Sun Microsystems, Inc. Method and apparatus that detects and tolerates inconsistencies between the cache and main memory, and the translation lookaside buffer and the virtual memory page table in main memory
US5906001A (en) * 1996-12-19 1999-05-18 Intel Corporation Method and apparatus for performing TLB shutdown operations in a multiprocessor system without invoking interrup handler routines
US5956754A (en) * 1997-03-03 1999-09-21 Data General Corporation Dynamic shared user-mode mapping of shared memory
US6105113A (en) * 1997-08-21 2000-08-15 Silicon Graphics, Inc. System and method for maintaining translation look-aside buffer (TLB) consistency
US6260131B1 (en) * 1997-11-18 2001-07-10 Intrinsity, Inc. Method and apparatus for TLB memory ordering
US6370632B1 (en) * 1997-11-18 2002-04-09 Intrinsity, Inc. Method and apparatus that enforces a regional memory model in hierarchical memory systems
US6119204A (en) 1998-06-30 2000-09-12 International Business Machines Corporation Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization
US6212613B1 (en) * 1999-03-22 2001-04-03 Cisco Technology, Inc. Methods and apparatus for reusing addresses in a computer
US6453387B1 (en) * 1999-10-08 2002-09-17 Advanced Micro Devices, Inc. Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
EP1182568A3 (en) * 2000-08-21 2004-07-21 Texas Instruments Incorporated TLB operation based on task-id
US6920516B2 (en) * 2000-08-31 2005-07-19 Hewlett-Packard Development Company, L.P. Anti-starvation interrupt protocol
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US7617378B2 (en) 2003-04-28 2009-11-10 International Business Machines Corporation Multiprocessor system with retry-less TLBI protocol
US7073043B2 (en) * 2003-04-28 2006-07-04 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US9454490B2 (en) * 2003-05-12 2016-09-27 International Business Machines Corporation Invalidating a range of two or more translation table entries and instruction therefore
US20050080934A1 (en) * 2003-09-30 2005-04-14 Cota-Robles Erik C. Invalidating translation lookaside buffer entries in a virtual machine (VM) system
US7222221B1 (en) * 2004-02-06 2007-05-22 Vmware, Inc. Maintaining coherency of derived data in a computer system
US7386670B2 (en) * 2004-10-19 2008-06-10 Platform Solutions, Inc. Processing of self-modifying code in multi-address-space and multi-processor systems
US7386669B2 (en) 2005-03-31 2008-06-10 International Business Machines Corporation System and method of improving task switching and page translation performance utilizing a multilevel translation lookaside buffer
US20070005932A1 (en) * 2005-06-29 2007-01-04 Intel Corporation Memory management in a multiprocessor system
US7383415B2 (en) * 2005-09-09 2008-06-03 Sun Microsystems, Inc. Hardware demapping of TLBs shared by multiple threads
US7454590B2 (en) * 2005-09-09 2008-11-18 Sun Microsystems, Inc. Multithreaded processor having a source processor core to subsequently delay continued processing of demap operation until responses are received from each of remaining processor cores
US7360022B2 (en) * 2005-12-29 2008-04-15 Intel Corporation Synchronizing an instruction cache and a data cache on demand
US7555628B2 (en) 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US7853754B1 (en) 2006-09-29 2010-12-14 Tilera Corporation Caching in multicore and multiprocessor architectures
US7631147B2 (en) * 2006-12-06 2009-12-08 Microsoft Corporation Efficient flushing of translation lookaside buffers in a multiprocessor environment
JP5300407B2 (ja) * 2008-10-20 2013-09-25 株式会社東芝 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
US8301865B2 (en) 2009-06-29 2012-10-30 Oracle America, Inc. System and method to manage address translation requests
US8412911B2 (en) 2009-06-29 2013-04-02 Oracle America, Inc. System and method to invalidate obsolete address translations
JP2011018182A (ja) * 2009-07-08 2011-01-27 Panasonic Corp アドレス変換装置
US8521963B1 (en) 2009-09-21 2013-08-27 Tilera Corporation Managing cache coherence
US8214598B2 (en) * 2009-12-22 2012-07-03 Intel Corporation System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US8719543B2 (en) * 2009-12-29 2014-05-06 Advanced Micro Devices, Inc. Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices
JP2011198091A (ja) * 2010-03-19 2011-10-06 Toshiba Corp 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
JP5459006B2 (ja) 2010-03-24 2014-04-02 富士通株式会社 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
WO2013101104A1 (en) 2011-12-29 2013-07-04 Intel Corporation Sharing tlb mappings between contexts
US9081706B2 (en) 2012-05-10 2015-07-14 Oracle International Corporation Using a shared last-level TLB to reduce address-translation latency
US9182984B2 (en) * 2012-06-15 2015-11-10 International Business Machines Corporation Local clearing control
US20130339656A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Compare and Replace DAT Table Entry
US9009446B2 (en) * 2012-08-02 2015-04-14 Oracle International Corporation Using broadcast-based TLB sharing to reduce address-translation latency in a shared-memory system with electrical interconnect
US9235529B2 (en) * 2012-08-02 2016-01-12 Oracle International Corporation Using broadcast-based TLB sharing to reduce address-translation latency in a shared-memory system with optical interconnect
US9086987B2 (en) * 2012-09-07 2015-07-21 International Business Machines Corporation Detection of conflicts between transactions and page shootdowns
US9081707B2 (en) * 2012-12-29 2015-07-14 Intel Corporation Apparatus and method for tracking TLB flushes on a per thread basis
US20150058520A1 (en) * 2013-08-22 2015-02-26 International Business Machines Corporation Detection of hot pages for partition migration
US9645941B2 (en) * 2013-09-26 2017-05-09 Cavium, Inc. Collapsed address translation with multiple page sizes
US9268694B2 (en) * 2013-09-26 2016-02-23 Cavium, Inc. Maintenance of cache and tags in a translation lookaside buffer
US9639476B2 (en) * 2013-09-26 2017-05-02 Cavium, Inc. Merged TLB structure for multiple sequential address translations
US9208103B2 (en) * 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
US9411745B2 (en) * 2013-10-04 2016-08-09 Qualcomm Incorporated Multi-core heterogeneous system translation lookaside buffer coherency
US9619387B2 (en) * 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
US9317443B2 (en) 2014-04-17 2016-04-19 International Business Machines Corporation Managing translations across multiple contexts using a TLB with entries directed to multiple privilege levels and to multiple types of address spaces
US9323692B2 (en) 2014-04-17 2016-04-26 International Business Machines Corporation Managing translation of a same address across multiple contexts using a same entry in a translation lookaside buffer
US10162655B2 (en) * 2014-06-23 2018-12-25 Vmware, Inc. Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels
CN105993004B (zh) 2014-07-21 2019-04-02 上海兆芯集成电路有限公司 转译后备缓冲器、操作其的方法以及包含其的处理器
US9501425B2 (en) * 2014-11-14 2016-11-22 Cavium, Inc. Translation lookaside buffer management
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations

Also Published As

Publication number Publication date
US9697137B2 (en) 2017-07-04
US20160140040A1 (en) 2016-05-19

Similar Documents

Publication Publication Date Title
US9405702B2 (en) Caching TLB translations using a unified page table walker cache
US9501425B2 (en) Translation lookaside buffer management
US10552339B2 (en) Dynamically adapting mechanism for translation lookaside buffer shootdowns
US8176282B2 (en) Multi-domain management of a cache in a processor system
TWI646421B (zh) 轉譯後備緩衝器無效抑制
EP3433747B1 (en) Adaptive extension of leases for entries in a translation lookaside buffer
US9697137B2 (en) Filtering translation lookaside buffer invalidations
US20160140042A1 (en) Instruction cache translation management
US20150089184A1 (en) Collapsed Address Translation With Multiple Page Sizes
US9772943B1 (en) Managing synonyms in virtual-address caches
US10078588B2 (en) Using leases for entries in a translation lookaside buffer
US9208088B2 (en) Shared virtual memory management apparatus for providing cache-coherence
US11392508B2 (en) Lightweight address translation for page migration and duplication
JP2018511120A (ja) キャッシュ保守命令
JP6027562B2 (ja) キャッシュメモリシステムおよびプロセッサシステム
US11803482B2 (en) Process dedicated in-memory translation lookaside buffers (TLBs) (mTLBs) for augmenting memory management unit (MMU) TLB for translating virtual addresses (VAs) to physical addresses (PAs) in a processor-based system
TWI664571B (zh) 用於進行中操作的指令排序
US9442856B2 (en) Data processing apparatus and method for handling performance of a cache maintenance operation
US20230103230A1 (en) Translation lookaside buffer entry allocation system and method