TWI646421B - 轉譯後備緩衝器無效抑制 - Google Patents
轉譯後備緩衝器無效抑制 Download PDFInfo
- Publication number
- TWI646421B TWI646421B TW104113187A TW104113187A TWI646421B TW I646421 B TWI646421 B TW I646421B TW 104113187 A TW104113187 A TW 104113187A TW 104113187 A TW104113187 A TW 104113187A TW I646421 B TWI646421 B TW I646421B
- Authority
- TW
- Taiwan
- Prior art keywords
- context
- translation lookaside
- lookaside buffer
- instruction
- processing element
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/682—Multiprocessor TLB consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明涉及管理多個轉譯後備緩衝器(TLB),包括:在第一處理元件處發佈用於使與關聯於第一處理元件相關聯的第一TLB中的第一上下文相關聯的一個或多個TLB條目無效的第一指令。該發佈包括:決定指示符的狀態是否指示與關聯於第二處理元件的第二TLB中的第一上下文相關聯的所有TLB條目被無效;如果不是:則向第二處理元件發送對應的指令,引起與第二TLB中的第一上下文相關聯的所有TLB條目的無效;並且改變指示符的狀態;並且如果是:則抑制向第二處理元件發送引起與第二TLB中的第一上下文相關聯的任何TLB條目的無效的任何對應的指令。
Description
本發明涉及計算系統中的轉譯後備緩衝器的管理。
許多計算系統利用虛擬記憶體系統以允許程式設計師存取記憶體位址,而無需考慮該記憶體位址駐留在計算系統的物理記憶體層級中的位置。為了這麼做,虛擬記憶體系統維護由程式設計師使用的虛擬記憶體位址到存儲由虛擬記憶體位址引用的實際資料的物理記憶體位址的映射。物理記憶體位址可以駐留在任意類型的存放裝置(例如SRAM、DRAM、磁片等)中。
當程式存取虛擬記憶體位址時,虛擬記憶體系統執行位址轉譯以決定虛擬記憶體位址引用的物理記憶體位址。存儲在決定的物理記憶體位址的資料從物理記憶體位址被讀取來作為記憶體頁面內的偏移,並且被返回以供該程式使用。虛擬到物理的位址映射被存儲在“頁表”中。在一些情況下,虛擬記憶體位址可以位於大的虛擬位址空間的頁面中,該大的虛擬位址空間的頁面轉譯到當前並未駐留在主記憶體的物理記憶體的頁面(即分頁錯誤),從而使得頁面隨後被拷貝到主記憶體中。
現代計算系統包括一個或多個轉譯後備緩衝器(TLB),他們是由虛擬記憶體系統用來提高虛擬到物理記憶體位址的轉譯速度的用於頁表的快取記憶體。很普遍地,TLB包括來自頁表的多個條目,每個條目包括從虛擬位址到物理位址的映射。通常,TLB
的條目僅覆蓋對計算系統可用的總的記憶體的一部分。在一些示例中,TLB的條目被維護以使得由TLB覆蓋的總可用記憶體的部分包括最近存取的、最常存取的、或者總的可用記憶體中的最有可能被存取的部分。
在一個方面中,一般來說,一種用於管理多個轉譯後備緩衝器的方法,每個轉譯後備緩衝器包括多個轉譯後備緩衝器條目並與對應於多個處理元件中的處理元件相關聯,該方法包括:在多個處理元件的第一處理元件處發佈用於使與關聯於第一處理元件的第一轉譯後備緩衝器中的第一上下文相關聯的一個或多個轉譯後備緩衝器條目無效的第一指令。該發佈包括:在第一處理元件處決定指示符的狀態是否指示與關聯於第二處理元件的第二轉譯後備緩衝器中的第一上下文相關聯的全部轉譯後備緩衝器條目被無效;如果該指示符的狀態指示與第二轉譯後備緩衝器中的第一上下文相關聯的全部轉譯後備緩衝器條目未被無效:則向多個處理元件中的第二處理元件發送對應的指令,對應的指令引起與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目的無效,改變指示符的狀態以指示與第二轉譯後備緩衝器中的第一上下文相關聯的全部轉譯後備緩衝器條目被無效;並且如果指示符的狀態指示與關聯於第二處理元件的第二轉譯後備緩衝器中的該第一上下文相關聯的所有轉譯後備緩衝器條目被無效:則抑制向該第二處理元件發送引起與第二轉譯後備緩衝器中的第一上下文相關聯的任何轉譯後備緩衝器條目的無效的任何對應的指令。
本發明可包括一個或多個下列特徵。
該方法進一步包括:在決定指示符的狀態是否指示與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目被無效之前,決定與指示符相關聯的第二上下文是否和與第一指
令相關聯的第一上下文相同;並且如果第二上下文不同於第一上下文,則改變指示符的狀態以指示與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
該方法進一步包括在第一處理元件處發佈同步指令,該同步指令引起在第一處理元件處的任何未決的轉譯後備緩衝器無效的指令,得以完成,並且一旦完成,改變該指示符的狀態以指示與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
該方法進一步包括,在第一處理元件處決定指示符的狀態是否指示與對應於多個處理元件中的多個其他處理元件的多個其他轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目被無效;如果指示符的狀態指示與多個其他轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目未被無效,則向多個其他處理元件發送對應的指令,該對應指令使得與多個其他轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目的無效;並且如果指示符的狀態指示與多個其他轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目被無效:則抑制向第二處理元件發送引起與多個其他轉譯後備緩衝器中的第一上下文相關聯的任意轉譯後備緩衝器條目的無效的任何對應的指令。
該方法進一步包括,生成包括將用於使與第一轉譯後備緩衝器中的第一上下文相關聯的一個或多個轉譯後備緩衝器條目無效的第一指令,轉換為用於引起與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目的無效的對應的指令的對應的指令。
指示符的狀態使用單個位元被表示。
第一上下文包括位址空間識別字(ASID)。
第一上下文包括虛擬機器識別字(VMID)。
第一上下文包括異常水準(EL)。
第一上下文包括SCR_EL3.NS位元的狀態。
該方法進一步包括接收同步消息,並且回應於同步消息,改變指示符的狀態以指示與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
該方法進一步包括接收中斷,並且回應於接收中斷,改變指示符的狀態以指示與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
在另一個方面,一般來說,一種裝置,包括:多個處理元件,每個處理元件與對應的轉譯後備緩衝器相關聯,每個轉譯後備緩衝器包括多個轉譯後備緩衝器條目;其中該多個處理元件中的第一處理元件被配置為發佈用於使與關聯於該第一處理元件的第一轉譯後備緩衝器中的第一上下文相關聯的一個或多個轉譯後備緩衝器條目無效的第一指令,該發佈包括:在第一處理元件處決定指示符的狀態是否指示與關聯於第二處理元件第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目被無效;如果該指示符的狀態指示與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目未被無效:則發送向多個處理元件中的第二處理元件發送對應的指令,該對應的指令引起與第二轉譯後備緩衝器中的第一上下文相關聯的全部轉譯後備緩衝器條目的無效,並改變該指示符的狀態以指示與第二轉譯後備緩衝器中第一上下文相關聯的所有轉譯後備緩衝器條目被無效;並且如果該指示符的狀態指示與關聯於第二處理元件的該第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯備緩衝器條目被無效:則抑制向第二處理元件發送使得與第二轉譯後備緩衝器中的第一上下文相關聯的
任意轉譯後備緩衝器條目的無效的任何對應的指令。
本發明可以包括一個或多個以下特徵。
該發佈進一步包括,在決定該指示符的狀態是否指示與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目被無效之前,確定與指示符相關聯的第二上下文是否和與第一指令相關聯的第一上下文相同;如果該第二上下文不同於第一上下文,則改變指示符的狀態以指示與第二轉譯後備緩衝器中的第一上下文關聯的所有轉譯後備緩衝器條目未被無效。
該第一處理元件被配置為發佈同步指令,該同步指令引起在第一處理元件處的任何未決的轉譯後備緩衝器無效指令得以完成,並且一旦完成,改變指示符的狀態以指示與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
該第一處理元件進一步被配置為:決定指示符的狀態是否指示與對應於多個處理元件中的多個其他處理元件的多個其他轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目被無效;如果指示符的狀態指示與多個其他轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目未被無效,則向多個其他處理元件發送對應的指令,該對應的指令引起與多個其他轉譯後備緩衝器中的第一上下文相關聯的全部轉譯後備緩衝器條目的無效;並且如果指示符的狀態指示與多個其他轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目被無效:則向第二處理元件發送抑制引起與多個轉譯後備緩衝器中的第一上下文相關聯的任何轉譯後備緩衝器條目無效的任何對應的指令。
第一處理元件被配置為生成包括將用於使與第一轉譯後備緩衝器中的第一上下文相關聯的一個或多個轉譯後備緩衝器條目無效的第一指令轉換為用於引起與第二轉譯後備緩衝器中的第
一上下文相關聯的所有轉譯後備緩衝器條目的無效的對應的指令的對應的指令。
指示符的狀態使用單個的位元被表示。
第一上下文包括位址空間識別字(ASID)。
第一上下文包括虛擬機器識別字(VMID)。
第一上下文包括異常水準(EL)。
第一上下文包括SCR_EL3.NS位元的狀態。
第一處理元件被配置為接收同步消息,並且回應於同步消息,改變指示符的狀態以指示與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
第一處理元件被配置為接收中斷,並且回應於接收中斷,改變指示符的狀態以指示與第二轉譯後備緩衝器中的第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
本發明可具有一個或多個以下優點。
除了其他優點,用於其關聯的上下文在遠端核心處已經被無效的映射的TLBI指令的廣播的抑制,減少了在處理匯流排上廣播的TLBI指令的數量和在處理匯流排發送的TLBI確認的數量,從而降低了處理匯流排上的頻寬消耗。更進一步地,減少了等待在遠端處理元件處完成的如此大量的TLBI指令所花費的時間。
本發明的其他特徵和優點將會從下面的說明書和專利範圍中變得顯而易見。
102‧‧‧處理元件
104‧‧‧二級(L2)快取記憶體
105‧‧‧廣播元件
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
300‧‧‧計算系統
340‧‧‧第一TLB
342‧‧‧第二TLB
344‧‧‧第三TLB
346‧‧‧第四TLB
348‧‧‧第一處理元件
351‧‧‧第二處理元件
1000‧‧‧計算系統
1040‧‧‧第一TLB
1042‧‧‧第二TLB
1044‧‧‧第三TLB
1046‧‧‧第四TLB
1048‧‧‧第一處理元件
1050‧‧‧指示符
352‧‧‧第三處理元件
354‧‧‧第四處理元件
1051‧‧‧第二處理元件
1052‧‧‧第三處理元件
1054‧‧‧第四處理元件
第一圖為計算系統。
第二圖是耦合到處理匯流排的處理元件。
第三圖是第一圖的計算系統的第一簡化視圖。
第四圖是執行第一廣播TLBI指令的第三圖的計算系統。
第五圖是執行第二廣播TLBI指令的第三圖的計算系統。
第六圖是執行第三廣播TLBI指令的第三圖的計算系統。
第七圖是執行第四廣播TLBI指令的第三圖的計算系統。
第八圖是執行第五廣播TLBI指令的第三圖3的計算系統。
第九圖是執行DSB指令的第三圖的計算系統。
第十圖是第一圖的計算系統的第二簡化視圖。
第十一圖是執行第一廣播TLBI指令的第十圖的計算系統。
第十二圖是執行第二廣播TLBI指令的第十圖的計算系統。
第十三圖是執行第三廣播TLBI指令的第十圖的計算系統。
第十四圖是執行第四廣播TLBI指令的第十圖的計算系統。
第十五圖是執行第五廣播TLBI指令的第十圖的計算系統。
第十六圖是執行DSB指令的第十圖的計算系統。
1 綜述
由於各種原因(例如,上下文切換),虛擬位址和物理位址之間的映射可能變得無效。如果該映射被存儲為TLB中的條目,TLB中的條目必須被無效以避免向使用虛擬位址的程式返回錯誤資料。在一些示例中,計算系統提供用於無效TLB條目的指令,這些指令有時被稱作TLB無效指令(TLBI)。當虛擬位址和物理位址之間的映射變得無效時,用於映射的TLBI指令被發佈。當用於該映射的該TLBI指令被接收時,TLB中與映射對應的任何條目被無效(或者被移除)。
在具有多個處理元件(例如,多核處理器中的核心)的計算系統中,可能有大量的TLBI指令在處理元件之間被發送。這可能導致處理匯流排上不必要的頻寬消耗。更進一步地,等待在遠端處理元件處完成的大量TLBI指令會引發嚴重的時間損失。
這裡描述的方法旨在減少經由處理匯流排發送的TLBI指令的數量,從而降低與大量的TLBI指令相關聯的不利影響。
2 計算系統
參考第一圖,計算系統100包括多個處理元件102、二級(L2)快取記憶體104(例如,SRAM)、廣播元件105、主記憶體106(例如,DRAM)、次級存放裝置(例如,磁片)108以及一個或多個輸入/輸出(I/O)設備110(例如,鍵盤或滑鼠)。處理元件102、L2快取記憶體104和廣播元件105與處理匯流排112相連,主記憶體106與存儲匯流排114相連,I/O設備110和次級存放裝置108與I/O匯流排116相連。處理匯流排112、記憶體匯流排114和I/O匯流排116經由橋接器118相互連接。
一般而言,廣播元件105允許處理器元件102中的任何一個處理器元件在處理匯流排112上向處理元件102中的其他處理元
件廣播命令或指令。
2.1 存儲層級
通常,處理元件102執行一個或多個電腦程式的指令,包括從被包括在計算系統100中的記憶體讀取處理器指令和資料。如本領域技術人員所熟知的,計算系統100中的各種記憶體或者存放裝置基於記憶體或者存放裝置的相對延遲而被組織成存儲層級。這種存儲層級的一個示例在最上面具有處理器寄存器(未示出),然後是一級(L1)快取記憶體(未示出),然後是L2快取記憶體103,然後是主記憶體106,最後是次級存儲108。當給定的處理元件102試圖存取記憶體位址時,存儲層級中的每個記憶體或者存放裝置按照存儲層級從上之下的順序被檢查,以決定用於記憶體位址的資料是否存儲在存放裝置或者記憶體設備中。
例如,對於要存取用於僅存儲在次級存放裝置108中的資料的記憶體位址的處理元件102中的第一處理元件348而言,處理元件首先決定記憶體位址和資料是否存儲於它的L1快取記憶體中。由於該記憶體位址和資料沒有存儲在它的L1快取記憶體中,快取記憶體未命中(cache miss)發生,使得該處理器經由處理匯流排112與L2快取記憶體140通信,以決定該記憶體位址和資料是否存儲在L2快取記憶體140中。由於記憶體位址和資料沒有存儲在L2快取記憶體140中,另一個快取記憶體未命中發生,使得L2快取記憶體140經由處理匯流排12、橋接器110和存儲匯流排118與主記憶體106通信,以確定該記憶體位址和資料是否存儲在主記憶體106中。由於該記憶體位址和資料沒有存儲在主記憶體106中,另一個未命中發生(也被稱為“分頁錯誤”),使得主記憶體106經由記憶體匯流排114、橋接器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,其中的每個將在下面被詳細描述。
通常,處理器核心220在某些情況下執行要求存取計算系統100的存儲層級中的記憶體位址的指令。由第二圖中的處理元件202執行的指令使用虛擬記憶體位址。
2.2.1 資料記憶體存取
當處理器核心220要求存取與資料相關聯的虛擬記憶體位址時,處理器核心220向L1資料快取記憶體222發送用於虛擬記憶體位址的記憶體存取請求。L1資料快取記憶體222存儲由它們的虛擬記憶體位址標籤的有限數量的最近或者經常使用的資料值。如果L1資料快取記憶體222具有用於虛擬記憶體位址的條目(即,快取記憶體命中,cache hit),則與虛擬記憶體位址相關聯的資料被返回到處理器核心220,而不需要存儲層級中的進一步的記憶體存取操作。備選地,在一些實施例中,L1資料快取記憶體222通過它們的物理記憶體位址標記條目,這要求甚至對於快取記憶體
命的位址轉譯。
如果L1資料快取記憶體222沒有用於虛擬記憶體位址的條目(即,快取記憶體未命中),則記憶體存取請求被發送到MMU 226。通常,MMU 226使用資料TLB 230將該虛擬記憶體位址轉譯為對應的物理記憶體位址,並將用於物理記憶體位址的記憶體存取請求經由匯流排界面228發送出處理器202、並發送到存儲層級的其他元件。頁表走查器227通過存取存儲(潛在地層級性的)在記憶體的一個或多個層級的完整頁表來處理未存儲在資料TLB230中的映射的取回。頁表存儲在虛擬記憶體位址和物理記憶體內置之間的完整的映射集,頁表走查器227存取該映射集以將虛擬記憶體位址轉譯成對應的物理記憶體位址。
為了加速虛擬記憶體位址到物理記憶體位址的轉譯過程,資料TLB 230包括在虛擬記憶體位址和物理記憶體位址之間多個最近或者經常使用的映射。如果資料TLB230具有用於虛擬記憶體位址的映射,則用於與該虛擬記憶體位址相關聯的物理記憶體位址(如從存儲在資料TLB230中的映射所確定的)的記憶體存取請求經由匯流排界面228被發送出處理器202。
如果資料TLB230沒有用於虛擬記憶體位址的映射(即,TLB未命中),頁表走查器227遍歷(或“走查”)頁表的層級以決定與虛擬記憶體位址相關聯的物理記憶體位址,並且用於物理記憶體位址(如從存儲在頁表中的映射所決定的)的記憶體存取請求經由匯流排界面228被發送出處理器202。
在一些示例中,資料TLB 230和頁表被並行存取以確保當發生TLB未命中時不產生額外的時間損失。
由於L1資料快取記憶體222和資料TLB 230只能存儲有限數量的條目,因此需要快取記憶體管理演算法來確保存儲在L1
資料快取記憶體222和資料TLB 230中的條目是有可能被多次重用的條目。這種演算法基於諸如最近最少被使用等的標準驅逐(evict)和替換存儲在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來完成的。
為了加速虛擬記憶體位址到物理記憶體位址的轉譯過程,指令TLB 232包括在虛擬記憶體位址和物理記憶體位址之間的多個最近或者經常使用的映射。如果指令TLB 232具有用於虛擬記憶體位址的映射,則用於與該虛擬記憶體位址相關聯的物理記憶體位
址(比如從指令TLB 230存儲的映射中確定)的記憶體存取請求被經由匯流排界面228發送出處理器202。
如果指令TLB 232沒有用於虛擬記憶體位址的映射(即,TLB未命中),則頁表走查器227走查頁表以決定與虛擬記憶體位址相關聯的物理記憶體位址,並且用於物理記憶體位址(如從存儲在頁表中的映射所決定的)的記憶體存取請求經由匯流排界面228被發送出處理器202。
在一些示例中,指令TLB 232和頁表被並行存取以確保當發生TLB未命中時不產生額外的時間損失。
由於L1指令快取記憶體224和指令TLB 232只能存儲有限數量的條目,因此需要快取記憶體管理演算法來保證存儲在L1指令快取記憶體224和指令TLB 232中的映射是有可能被多次重用的映射。這種演算法基於諸如最近最少使用等的標準驅逐和替換存儲在L1指令快取記憶體223和資料TLB 232中的條目。
2.3 轉譯後備緩衝器無效(TLBI)指令
在一些示例中,計算系統的虛擬記憶體系統可以改變虛擬記憶體位址與物理記憶體位址之間的映射。在這種情況下,用於虛擬記憶體位址的轉譯後備緩衝器指令(TLBI)被發佈(例如,由作業系統或者由硬體實體)到計算系統中的TLB(即,每個處理元件202的資料TLB 230和指令TLB 232)。
在一些示例中,TLBI指令包括虛擬記憶體位址並使得與虛擬記憶體位址相關聯的任何TLB條目無效。也就是說,當TLB接收到用於給定虛擬記憶體位址的TLBI時,存儲在給定虛擬記憶體位址和物理記憶體位址之間的映射的TLB中的任何條目被無效。在其他示例中,TLBI指令包括整個上下文的引用並使得與上下文相關聯的任何TLB條目無效。在電腦中,上下文本質上是進程或
者執行緒(thread)的存儲狀態。當TLB接收用於給定上下文的TLBI時,存儲用於給定上下文的虛擬記憶體位址和物理記憶體位址之間的映射的任何條目被無效。值得注意的是,雖然TLBI指令通常包括用於無效的虛擬記憶體位址作為參數,但是在一些示例中出於簡單考慮,TLBI指令在本文中被描述為包括用於無效的映射作為參數。
2.3.1 廣播TLBI指令
更進一步地,在一些例子中,TLBI指令可以被指定為“本地”或者“廣播”。當本地TLBI指令在給定的本地處理元件處被發佈時,本地TLBI指令使得與虛擬記憶體位址相關聯的任何TLB條目或者給定處理元件的TLB中的上下文無效。
當廣播TLBI指令在給定的本地處理元件處被發佈時,廣播TLBI指令使得該與虛擬記憶體位址相關聯的任何TLB條目或者本地處理元件的TLB中的上下文無效,也使得TLBI指令經由廣播元件被發送到一個或多個其他遠端處理元件。TLBI指令在一個或多個遠端處理元件處發佈並使得與虛擬記憶體位址相關聯的任何TLB條目或者一個或者多個處理元件的TLB中的上下文無效。以下是在以下章節中將被詳細描述的在沒有某些優化的情況下,廣播TLBI指令如何被處理的最初示例。
2.3.1.1 廣播TLBI指令示例
參考第三圖,計算系統100的簡化版本300包括四個處理元件(即,第一處理元件348、第二處理元件351、第三處理元件352和第四處理元件354)和廣播元件105。
每個處理元件包括TLB(即,第一處理元件348包括第一TLB 340,第二處理元件351包括第二TLB 342,第三處理元件352包括第三TLB 344,以及第四處理元件354包括第四TLB 346)。
出於簡單考慮,四個TLB 340、342、344、346被一般表示,而沒有指定它們是資料TLB還是指令TLB。因為下面所描述的TLB管理技術是相同的,而不管四個TLB是資料TLB還是指令TLB,所以這四個TLB的一般性表示是有效的。TLB 340、342、344、346中的每個TLB包括多個TLB條目,每個條目包括在虛擬記憶體位址和物理記憶體位址之間的映射。
處理元件348、351、352、354中的每個處理元件與廣播元件105通信,通過廣播元件105處理元件之間可以相互通信。儘管在圖中未明確示出,但是處理元件和廣播元件105之間的所有通信在處理匯流排112上發生。當用於映射的廣播TLBI指令在第一處理元件348處被發佈時,用於映射的對應的TLBI指令從第一處理元件348被發送到廣播元件105。廣播元件105向其他遠端處理元件351、352、354中的每個處理元件發送TLBI指令。一旦TLBI指令在遠端處理元件351、352、354中每個處理元件處完成,它們就各自經由廣播元件105向第一處理元件348送回確認。
在圖示計算系統300中的廣播TLBI指令的操作的示例性場景中,第一處理元件348連續發佈五條廣播TLBI指令,其後跟隨DSB(資料同步屏障)指令,如下所示:TLBIB(AC1) TLBIB(FC1) TLBIB(CC1) TLBIB(LC2) TLBIB(EC1) DSB
在以上指令序列中,TLBIB表示一個廣播TLBI指令。為
廣播TLBI指令中的每個指令提供的參數包括對映射(或者與映射對應的虛擬記憶體位址)的引用和它的相關聯的上下文。例如,第一指令TLBIB(AC1)是用於無效用於映射A的任何TLB條目的廣播TLBI指令,該映射A與上下文C1相關聯。在一些示例中,上下文作為可以連同寄存器中的虛擬位址一起被指定的ASID(即,進程識別字)被提供。在一些示例中,上下文作為VMID(虛擬機器識別字)被提供,該VMID可以從處理器內的系統控制寄存器提供。在一些示例中,上下文作為被編碼在TLBI指令操作碼中的異常水準被提供。DSB指令使得第一處理元件348停止處理,直到先於DSB的發佈而發佈的TLBIB指令完成。在一些示例中,一旦完成每個TLBIB指令的確認(即,ACK)在第一處理元件348處從所有遠端處理元件(即,處理元件351、352、354)被接收,DSB指令被滿足。
參考第四圖,當第一指令TLBIB(AC1)在第一處理元件348處被發佈時,該TLBIB(AC1)指令使得第一處理元件348的第一TLB 340中的AC1條目無效。由於TLBIB(AC1)是廣播TLBI指令,因此第一處理元件348向廣播元件105發送對應的TLBI指令TLBI(A-C1)。廣播元件105隨後向遠端處理元件351、352、354中的每個處理元件發送TLBI(A-C1)。TLBI(A-C1)指令使得遠端處理元件351、352、354中的每個處理元件的TLB中的AC1映射無效。遠端處理元件351、352、354中的每個處理元件隨後向廣播元件105發送TLBI指令已經在處理元件處被完成的確認(例如,ACKP2,ACKP3,ACKP4)。廣播元件105向第一處理元件348發送確認。一旦第一處理元件348接收到所有遠端處理元件351、352、354均已經完成TLBI(A-C1)指令的確認,第一處理元件348將TLBIB(AC1)指令標記為完成。
參考第五圖,當第二指令TLBIB(FC1)在第一處理元件348
處被發佈時,TLBIB(FC1)指令使得第一處理元件348的第一TLB 340中的FC1條目無效。由於TLBIB(FC1)是廣播TLBI指令,所以第一處理元件348向廣播元件105發送對應的TLBI指令TLBI(FC1)。廣播元件105隨後向遠端處理元件351、352、354中的每個處理元件發送TLBI(FC1)指令。TLBI(FC1)指令使得遠端處理元件351、352、354中的每個處理元件的TLB中的FC1映射無效。遠端處理元件351、352、354中的每個處理元件隨後向廣播元件105發送TLBI(FC1)指令在處理元件處被完成的確認(例如,ACKP2,ACKP3,ACKP4)。廣播元件105隨後向第一處理元件348發送確認。一旦第一處理元件348接收到所有遠端處理元件351、352、354均已完成TLBI(FC1)指令的確認,第一處理元件348將TLBIB(FC1)指令標記為完成。
參考第六圖,當第三指令TLBIB(CC1)在第一處理元件348處被發佈時,TLBIB(CC1)指令使得第一處理元件348的第一TLB 340中的CC1條目無效。由於TLBIB(CC1)是廣播TLBI指令,因此第一處理元件348向廣播元件105發送對應的TLBI指令TLBI(CC1)。廣播元件105隨後向遠端處理元件351、352、354中的每個處理元件發送TLBI(CC1)指令。TLBI(CC1)指令使得遠端處理元件351、352、354中的每個處理元件的TLB中的CC1映射無效。遠端處理元件351、352、354中的每個處理元件隨後向廣播元件105發送TLBI(CC1)指令在處理元件處被完成的確認(例如,ACKP2、ACKP3、ACKP4)。廣播元件105隨後向第一處理元件348發送確認。一旦第一處理元件348接收到所有遠端處理元件351、352、354均已完成TLBI(CC1)指令的確認,第一處理元件348將TLBIB(CC1)指令標記為完成。
參考第七圖,當第四指令TLBIB(LC2)在第一處理元件348處被發佈時,TLBIB(LC2)指令使得第一處理元件348的第一TLB 340中的LC2條目無效。由於TLBIB(LC2)是廣播TLBI指令,因此第一處理元件348向廣播元件105發送對應的TLBI指令TLBI(LC2)。
廣播元件105隨後向遠端處理元件351、352、354中的每個處理元件發送TLBI(LC2)指令。TLBI(LC2)指令使得遠端處理元件351、352、354中的每個處理元件的TLB中的LC2映射無效。遠端處理元件351、352、354中的每個處理元件隨後向廣播元件105發送TLBI(LC2)指令在處理元件處被完成的確認(例如,ACKP2,ACKP3,ACKP4)。廣播元件105隨後向第一處理元件348發送確認。一旦第一處理元件348接收到所有遠端處理元件351、352、354均已完成TLBI(LC2)指令的確認,第一處理元件348將TLBIB(LC2)指令標記為完成。
參考第八圖,當第五指令TLBIB(EC1)在第一處理元件348處被發佈時,TLBIB(EC1)指令使得第一處理元件348的第一TLB 340中的EC1條目無效。由於TLBIB(EC1)是廣播TLBI指令,因此第一處理元件348向廣播元件105發送對應的TLBI指令TLBI(EC1)。廣播元件105隨後向遠端處理元件351、352、354中的每個處理元件發送TLBI(EC1)指令。TLBI(EC1)指令使得遠端處理元件351、352、354中的每個處理元件的TLB中的EC1映射無效。遠端處理元件351、352、354中的每個處理元件隨後向廣播元件105發送TLBI(EC1)指令在處理元件處被完成的確認(例如,ACKP2,ACKP3,ACKP4)。廣播元件105隨後向第一處理元件348發送確認。一旦第一處理元件348接收到所有遠端處理元件351、352、354均已完成TLBI(EC1)指令的確認,第一處理元件348將TLBIB(EC1)指令標記為完成。
最後,參考第九圖,當第六指令DSB在第一處理元件348處被發佈時,第一處理元件348停止處理,直到先於DSB的發佈而發佈的所有廣播TLBI指令被標記為完成(即,直到所有確認已經從所有遠端處理元件351、352、354被接收)。一旦先於DSB的發佈而發佈的所有廣播TLBI指令被標記為完成,第一處理元件348恢復處理。注意第一處理元件348在發佈每個獨立的廣播TLBI指令之後並不停止處理,而是在繼續和發佈下一條廣播TLBI指令之
前等待接收該廣播TLBI指令已經在所有遠端處理元件處完成的確認。事實上,只有DSB指令在第一處理元件348處停止處理。
如從以上示例可以看出,潛在的大量的TLBI指令和TLBI完成確認經在處理匯流排112上在處理元件和廣播元件105之間被發送,導致處理匯流排112上不必要的頻寬消耗。更進一步地,等待如此大量的TLBI指令在遠端處理元件351、352、354處完成可能引發顯著地時間損失。
2.3.2 優化廣播TLBI指令
為了降低在處理匯流排上在處理元件和廣播元件105之間發送的TLBI指令和TLBI完成確認的數量,做出了由處理元件處理的廣播TLBI指令的方式的兩種優化。
第一,當用於映射的廣播TLBI指令在給定處理元件處被發佈時,被發送到遠端處理元件的對應的TLBI指令從無效映射的TLBI指令轉換為無效與映射相關聯的整個上下文的TLBI指令。也就是說,被廣播至遠端處理元件的TLBI指令在遠端核心處潛在地使得用於與上下文相關聯的映射的多個TLB條目無效,而不是僅僅在遠端核心處使得映射的條目無效。無效遠端核心的整個上下文的該步驟有時被稱為過度無效。
第二,在用於映射的TLBI指令在遠端核心的TLB處使得整個上下文無效之後,在一些情況中,處理器抑制用於無效與在遠端核心的TLB處之前被無效的上下文相關聯的映射的後續TLBI指令的廣播。具體地,用於與之前無效的上下文相關聯的、並且在遠端核心處使得上下文無效的TLBI指令之後立即發佈的映射的任何TLBI指令序列被抑制。
通過抑制用於其上下文在遠端核心處已經被無效的映射的TLBI指令的廣播,減少了在處理匯流排上廣播的TLBI指令的
數量和在處理匯流排發送的TLBI確認的數量,從而降低處理匯流排上的頻寬消耗。更進一步地,減少了等待在遠端處理元件處完成的如此大量的TLBI指令所花費的時間。
2.3.2.1 優化的廣播TLBI指令示例
參考第十圖,計算系統100的另一個簡化版本1000包括四個處理元件1002(即,第一處理元件1048、第二處理元件1051、第三處理元件1052和第四處理元件1054)和廣播元件105。
每個處理元件包括TLB(即,第一處理元件1048包括第一TLB 1040,第二處理元件1051包括第二TLB 1042,第三處理元件1052包括第三TLB 1044,和第四處理元件包括第四TLB 1046)和上下文指示符1050。TLB 1040、1042、1044、1046中的每個包括多個TLB條目,每個條目包括在虛擬記憶體位址和物理記憶體位址之間的映射。又一次地,出於簡單考慮,四個TLB 1040、1042、1044、1046為一般表示,而沒有指定它們是資料TLB還是指令TLB。
上下文指示符1050包括與在處理元件處發佈的最後的TLBIB指令相關聯的上下文的指示。最初,上下文指示符具有空值‘-’。注意在圖中,由於示例僅集中於第一處理元件1048處發佈的指令,因此上下文指示符1050僅在第一處理元件1048中被示出。然而,通常而言,每個處理元件1002均包括上下文指示符1050。
處理元件1002中的每個處理元件與廣播元件105相連,通過該廣播元件105它們能夠相互通信。儘管未在圖中明確示出,處理元件和廣播元件105之間的所有通信均在處理匯流排112上進行。當映射的TLBI指令在第一處理元件1048處被發佈時,用於與該映射相關聯的上下文的TLBI指令可能被從第一處理元件1048被發送到廣播元件105。在廣播元件105處接收到的任何TLBI指
令被發送到其他遠端處理元件1051、1052、1054中的每個處理元件。一旦任何TLBI指令在遠端處理元件1051、1052、1054中的每個處理元件處被完成,它們各自經由廣播元件105向第一處理元件1048送回確認。
上文所使用的相同的示例性場景用於圖示計算系統1000中的經優化的廣播TLBI指令的操作。在該示例性場景中,第一處理元件1048連續發佈五條廣播TLBI指令,其後跟隨DSB(資料同步屏障)指令,如下所示:TLBIB(AC1) TLBIB(FC1) TLBIB(CC1) TLBIB(LC2) TLBIB(EC1) DSB
又一次地,在以上指令序列中,TLBIB表示廣播TLBI指令。為每一個廣播TLBI指令所提供的參數包括對映射(或者與映射對應的虛擬記憶體位址)的引用和它的相關聯的上下文。例如,第一指令TLBIB(AC1)是用於無效用於映射A的任何條目的廣播TLBI指令,該映射A與上下文C1相關聯。
DSB指令使得第一處理元件1048停止處理,直到所有先於DSB的發佈而發佈的TLBIB指令完成。
參考第十一圖,當第一指令TLBIB(AC1)在第一處理元件1048處被發佈時,TLBIB(AC1)指令使得第一處理元件1048的第一TLB 1040中的AC1條目無效。第一處理元件1048隨後檢查上下文指示符1050,以決定與用於最後發佈的廣播TLBI指令的映射相關
聯的上下文是否和與AC1映射相關聯的上下文相同。由於沒有廣播TLBI指令先於第一指令發佈,因此第一處理元件1048確定上下文指示符1050的值(即,‘-’)不同於與AC1映射相關聯的上下文(即,C1)。由於上下文指示符1050的值和與AC1映射相關聯的上下文不同,第一處理元件1048向廣播元件105發送TLBI指令TLBI(C1)。第一處理元件1048然後將上下文指示符1050的值修改為‘C1’以指示上下文C1是與最近發佈的廣播TLBI指令相關聯的上下文。
廣播元件105向遠端處理元件1051、1052、1054發送TLBI(C1)指令,使得遠端處理元件1051、1052、1054中的每個處理元件的TLB中與上下文C1相關聯的全部映射無效。每一個遠端處理元件1051、1052、1054隨後向廣播元件105發送TLBI(C1)指令已經在處理元件處完成的確認(例如,ACKP2,ACKP3,ACKP4)。廣播元件105向第一處理元件1048發送確認。一旦第一處理元件1048接收到所有遠端處理元件1051、1052、1054已經完成TLBI(C1)指令的確認,第一處理元件1048將TLBIB(AC1)指令標記為完成。
參考第十二圖,當第二指令TLBIB(FC1)在第一處理元件1048處被發佈時,TLBIB(FC1)指令使得第一處理元件1048的第一TLB 1040中的FC1條目無效。第一處理元件1048隨後檢查上下文指示符1050以確定它是否和與FC1映射相關聯的上下文相同。在這種情況下,上下文指示符1050的值C1與FC1映射關聯的上下文C1相匹配。確定上下文指示符1050的值和FC1所關聯的上下文相匹配之後,第一處理元件1048抑制向廣播元件105和遠端處理元件1051、1052、1054發送任何TLBI指令。事實上,由於整個C1上下文之前在遠端處理器核心的TLB中被無效,用於遠端處理器核心的TLB中的FC1的任何條目已經被無效,從而避免發送任何額外的TLBI指令。第一處理元件1048標記TLBIB(FC1)指令為完成,而不用等待來自遠端處理元件的任何確認。由於上下文指示符1050
的值和與FC1映射關聯的上下文相匹配,不用對上下文指示符1050做改動。
參考第十三圖,當第三指令TLBIB(CC1)在第一處理元件1048處被發佈時,TLBIB(CC1)指令使得第一處理元件1048的第一TLB 1040中的CC1條目無效。第一處理元件1048隨後檢查上下文指示符1050以決定它是否和與CC1映射關聯的上下文相同。在這種情況下,上下文指示符1050的值C1與CC1映射所關聯的上下文C1相匹配。確定上下文指示符1050的值和CC1所關聯的上下文相匹配之後,第一處理元件1048抑制向廣播元件105和遠端處理元件1051、1052、1054發送任何TLBI指令。又一次地,由於整個C1上下文之前在遠端處理器核心的TLB中被無效,遠端處理器核心的TLB中CC1的任意條目已經被無效,從而避免發送任何額外的TLBI指令。第一處理元件1048將TLBIB(CC1)指令標記為完成,而不用等待來自遠端處理元件的任何確認。由於上下文指示符1050的值和與CC1映射關聯的上下文相匹配,不用對上下文指示符1050做改動。
參考第十四圖,當第四指令TLBIB(LC2)在第一處理元件1048處被發佈時,TLBIB(LC2)指令使得第一處理元件1048的第一TLB 1040中的LC2條目無效。第一處理元件1048隨後檢查上下文指示符1050以決定與用於最後發佈的廣播TLBI指令的映射相關聯的上下文是否和與LC2映射相關聯的上下文相同。在這種情況下,第一處理元件1048確定上下文指示符1050的值(即,‘C1’)不同於與LC2映射關聯的上下文(即,C2)。決定上下文指示符1050的值與LC2所關聯的上下文不匹配之後,第一處理元件1048向廣播元件105發送TLBI指令TLBI(C2)。第一處理元件1048隨後將上下文指示符1050的值修改為‘C2’以指示上下文C2是與最近發佈的廣播TLBI指令相關聯的上下文。
廣播元件105向遠端處理元件1051、1052、1054發送TLBI(C2)指令,使得與遠端處理元件1051、1052、1054中的每個處理元件的TLB中上下文C2相關聯的全部映射無效。遠端處理元件1051、1052、1054中的每個處理元件隨後向廣播元件105發送TLBI(C2)指令已經在處理元件處完成的確認(例如,ACKP2,ACKP3,ACKP4)。廣播元件105向第一處理元件1048發送確認。一旦第一處理元件1048接收到所有遠端處理元件1051、1052、1054已經完成TLBI(C2)指令的確認,第一處理元件1048將TLBIB(LC2)指令標記為完成。
參考第十六圖,當第五指令TLBIB(EC1)在第一處理元件1048處被發佈時,TLBIB(EC1)指令使得第一處理元件1048的第一TLB 1040中的EC1條目無效。第一處理元件1048隨後檢查上下文指示符1050以決定與用於最後發佈的廣播TLBI指令的映射相關聯的上下文是否和與EC1映射相關聯的上下文相同。在這種情況下,第一處理元件1048確定上下文指示符1050的值(即,‘C2’)不同於與EC1映射關聯的上下文(即,C1)。確定上下文指示符1050的值與EC1所關聯的上下文不匹配之後,第一處理元件1048向廣播元件105發送TLBI指令TLBI(C1)。第一處理元件1048隨後將上下文指示符1050的值修改為‘C1’以指示上下文C1是與最近發佈的廣播TLBI指令相關聯的上下文。
廣播元件105向遠端處理元件1051、1052、1054發送TLBI(C1)指令,使得遠端處理元件1051、1052、1054中的每個處理元件的TLB中與上下文C1相關聯的全部映射無效。遠端處理元件1051、1052、1054中的每個處理元件隨後向廣播元件105發送TLBI(C1)指令已經在處理元件處完成的確認(例如,ACKP2,ACKP3,ACKP4)。廣播元件105向第一處理元件1048發送確認。一旦第一處理元件1048接收到所有遠端處理元件1051、1052、1054已經完
成TLBI(C1)指令的確認,第一處理元件1048將TLBIB(EC1)指令標記為完成。
最後,參考第十六圖,當第七指令DSB在第一處理元件1048處被發佈時,第一處理元件1048停止處理,直到先於DSB的發佈而發佈的所有廣播TLBI指令被標記為完成(即,直到全部確認消息已經從所有遠端處理元件1051、1052、1054被接收)。一旦先於DSB指令的發佈而發佈的所有廣播TLBI指令被標記為完成,第一處理元件1048將上下文指示符1050的值重置為‘-’並恢復處理。注意第一處理元件1048在發佈每一個獨立的廣播TLBI指令之後沒有停止處理,並且在繼續和發佈下一條廣播TLBI指令之前等待接收該廣播TLBI指令已經在所有遠端處理元件處完成的確認。事實上,只有DSB指令在第一處理元件1048處停止處理。
從上面的例子可以明顯的看出,抑制用於映射的TLBI指令序列的廣播減少了在處理匯流排上被廣播的TLBI指令的數量和在處理匯流排上被發送的TLBI確認的數量,映射與之前被無效的上下文相關聯並且在遠端核心處使得上下文的無效的TLBI指令之後立即被發佈。
3 備選
廣播TLBI指令優化的上述示例涉及抑制用於映射的TLBI指令序列,該映射與之前被無效的上下文相關聯並且在遠端核心處使得上下文的無效的TLBI指令之後立即被發佈。然而,在一些示例中,並不需要與之前無效的上下文關聯的映射的廣播TLBI指令序列是連續的TLBI指令序列。也就是說,一旦上下文已經被無效一次,與該無效的上下文相關聯的映射相關聯的(並且在DSB的發佈之前而被發佈)任何TLBI指令均被抑制。實現該方案的一種方式是為每一個上下文維護一個有效/無效指示符。另一個
方法是維護一個無效的上下文的列表。
在一些示例中,上下文指示符由處理元件使用一個或多個位元來實現。
在前文描述的方法中,從起始核心廣播的每一個TLBI向該起始核心送回它已經完成的確認。然而,在一些示例中,被廣播的TLBI不向起始核心送回任何確認。相反,DSB指令確保所有廣播TLBI指令已經被完成。
4 實施
實施上述技術的系統可以被實施在軟體、固件、數位電子電路或者電腦硬體或者它們的組合中。系統可以包括有形地嵌入在機器可讀存放裝置中、用於由可程式設計處理器執行的電腦程式產品,並且可以由可程式設計處理器來執行方法步驟,該處理器執行指令程式以通過操作輸入資料並且生成輸出來執行功能。該系統可以被實施在可程式設計系統上可執行的一個或多個電腦程式中,該系統包括:至少一個可程式設計處理器,其被耦合以從資料存儲系統接收資料和指令並且向資料存儲系統傳送資料和指令;至少一個輸入裝置;以及至少一個輸出設備。每個電腦程式可以用高級的面向過程或物件導向的程式語言來實施,或者如果需要的話,用彙編或機器語言來實施;並且在任何情況下,該語言可以為編譯的語言或者解譯的語言。合適的處理器包括:舉例來說,通用和專用微處理器二者。總體上,處理器會從唯讀記憶體和/或隨機訪問記憶體接收指令和資料。總體上,電腦將包括用於存儲資料檔案的一個或多個大型存放區設備;這樣的設備包括磁片,諸如內部硬碟和可移動盤;磁-光碟;以及光碟。適於有形地包含電腦程式指令和資料的存放裝置包括所有形式的非揮發性記憶體,包括舉例來說半導體存放裝置,諸如EPROM、EEPROM和快閃記憶體設備;磁片,比
如內部硬碟和可移動盤;磁-光碟;以及CD-ROM盤。上述任何內容可以由ASIC(專用積體電路)補充或者被併入在ASIC中。
其它實施例在所附的申請專利範圍內。
Claims (24)
- 一種用於管理多個轉譯後備緩衝器的方法,每個轉譯後備緩衝器包括多個轉譯後備緩衝器條目並且與多個處理元件中的對應的處理元件相關聯,所述方法包括:在所述多個處理元件中的第一處理元件處發佈用於使與關聯於所述第一處理元件的第一轉譯後備緩衝器中的第一上下文相關聯的一個或多個轉譯後備緩衝器條目無效的第一指令,所述發佈包括:在所述第一處理元件處確定指示符的狀態是否指示與關聯於第二處理元件的第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效;如果所述指示符的所述狀態指示與所述第二譯換後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效:則向所述多個處理元件中的所述第二處理元件發送對應的指令,所述對應的指令引起與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目的無效,並且改變所述指示符的狀態以指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效;並且如果所述指示符的所述狀態指示與關聯於所述第二處理元件的所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效:則抑制向所述第二處理元件發送用於引起與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的任何轉譯後備緩衝器條目的無效的任何對應的指令。
- 如申請專利範圍第1項所述的方法,進一步包括,在決定所述指示符的所述狀態是否指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效之前,決定與所述指示符相關聯的第二上下文是否和與所述第一指令相關聯的所述第一上下文相同;並且如果所述第二上下文不同於所述第一上下文,則改變所述指示符的所述狀態以指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
- 如申請專利範圍第1項所述的方法,進一步包括在所述第一處理元件處發佈同步指令,所述同步指令在所述第一處理元件處引起任何未決的轉譯後備緩衝器無效指令完成,並且在它們完成時,改變所述指示符的所述狀態以指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
- 如申請專利範圍第1項所述的方法,進一步包括,在所述第一處理元件處確定所述指示符的狀態是否指示與對應於所述多個處理元件中的多個其他處理元件的多個其他轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效;並且如果所述指示符的所述狀態指示與所述多個其他轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效,則向所述多個其他處理元件發送所述對應的指令,所述對應的指令引起與所述多個其他轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目的無效;並且如果所述指示符的所述狀態指示與所述多個其他轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效:則抑制向所述第二處理元件發送用於引起與所述多個其他 轉譯後備緩衝器中的所述第一上下文相關聯的任何轉譯後備緩衝器條目的無效的任何對應的指令。
- 如申請專利範圍第1項所述的方法,進一步包括生成包括將用於使與所述第一轉譯後備緩衝器中的所述第一上下文相關聯的一個或多個轉譯後備緩衝器條目無效的所述第一指令,轉換為用於引起與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目的無效的所述對應的指令的所述對應的指令。
- 如申請專利範圍第1項所述的方法,其中所述指示符的所述狀態使用單個位元被表示。
- 如申請專利範圍第1項所述的方法,其中所述第一上下文包括位址空間識別字(ASID)。
- 如申請專利範圍第1項所述的方法,其中所述第一上下文包括虛擬機器識別字(VMID)。
- 如申請專利範圍第1項所述的方法,其中所述第一上下文包括異常級別(EL)。
- 如申請專利範圍第1項所述的方法,其中所述第一上下文包括SCR_EL3.NS位元的狀態。
- 如申請專利範圍第1項所述的方法,進一步包括接收同步消息,並且回應於所述同步消息,改變所述指示符的所述狀態以指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
- 如申請專利範圍第1項所述的方法,進一步包括接收中斷,並且回應於接收所述中斷,改變所述指示符的所述狀態以指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
- 一種裝置,包括:多個處理元件,每個處理元件與對應的轉譯後備緩衝器相關聯, 每個轉譯後備緩衝器包括多個轉譯後備緩衝器條目;其中所述多個處理元件中的第一處理元件被配置為發佈用於使與關聯於所述第一處理元件的第一轉譯後備緩衝器中的第一上下文相關聯的一個或多個轉譯後備緩衝器條目無效的第一指令,所述發佈包括:在所述第一處理元件處決定指示符的狀態是否指示與關聯於第二處理元件的第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效;如果所述指示符的所述狀態指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效:則向所述多個處理元件中的所述第二處理元件發送對應的指令,所述對應的指令引起與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目的無效,並且改變所述指示符的狀態以指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效;並且如果所述指示符的所述狀態指示與關聯於所述第二處理元件的所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效:則抑制向所述第二處理元件發送用於引起與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的任何轉譯後備緩衝器條目的無效的任何對應的指令。
- 如申請專利範圍第13項所述的裝置,其中所述發佈進一步包括,在確定所述指示符的所述狀態是否指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效之前, 決定與所述指示符相關聯的第二上下文是否和與所述第一指令相關聯的所述第一上下文相同;並且如果所述第二上下文不同於所述第一上下文,則改變所述指示符的所述狀態以指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
- 如申請專利範圍第13項所述的裝置,其中所述第一處理元件被配置為發佈同步指令,所述同步指令在所述第一處理元件處引起任何未決的轉譯後備緩衝器無效指令完成,並且在它們完成時,改變所述指示符的所述狀態以指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
- 如申請專利範圍第13項所述的裝置,其中所述第一處理元件被進一步配置為:決定所述指示符的狀態是否指示與對應於所述多個處理元件中的多個其他處理元件的多個其他轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效;並且如果所述指示符的所述狀態指示與所述多個其他轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效,則向所述多個其他處理元件發送所述對應的指令,所述對應的指令引起與所述多個其他轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目的無效;並且如果所述指示符的所述狀態指示與所述多個其他轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目被無效:則抑制向所述第二處理元件發送用於引起與所述多個其他轉譯後備緩衝器中的所述第一上下文相關聯的任何轉譯後備緩衝器條目的無效的任何對應的指令。
- 如申請專利範圍第13項所述的裝置,其中所述第一處理 元件被配置為生成包括將用於使與所述第一轉譯後備緩衝器中的所述第一上下文相關聯的一個或多個轉譯後備緩衝器條目無效的所述第一指令轉譯為用於引起與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目的無效的所述對應的指令的所述對應的指令。
- 如申請專利範圍第13項所述的裝置,其中所述指示符的所述狀態使用單個位元被表示。
- 如申請專利範圍第13項所述的裝置,其中所述第一上下文包括位址空間識別字(ASID)。
- 如申請專利範圍第13項所述的裝置,其中所述第一上下文包括虛擬機器識別字(VMID)。
- 如申請專利範圍第13項所述的裝置,其中所述第一上下文包括異常級別(EL)。
- 如申請專利範圍第13項所述的裝置,其中所述第一上下文包括SCR_EL3.NS位元的狀態。
- 如申請專利範圍第13項所述的裝置,其中所述第一處理元件被配置為接收同步消息,並且回應於所述同步消息,改變所述指示符的所述狀態以指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
- 如申請專利範圍第13項所述的裝置,其中所述第一處理元件被配置為接收中斷,並且回應於接收所述中斷,改變所述指示符的所述狀態以指示與所述第二轉譯後備緩衝器中的所述第一上下文相關聯的所有轉譯後備緩衝器條目未被無效。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/541,726 US9684606B2 (en) | 2014-11-14 | 2014-11-14 | Translation lookaside buffer invalidation suppression |
US14/541,726 | 2014-11-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201617878A TW201617878A (zh) | 2016-05-16 |
TWI646421B true TWI646421B (zh) | 2019-01-01 |
Family
ID=55961810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104113187A TWI646421B (zh) | 2014-11-14 | 2015-04-24 | 轉譯後備緩衝器無效抑制 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9684606B2 (zh) |
TW (1) | TWI646421B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10216430B2 (en) * | 2015-07-01 | 2019-02-26 | Cavium, Llc | Local ordering of instructions in a computing system |
US9830198B2 (en) * | 2015-12-22 | 2017-11-28 | International Business Machines Corporation | Translation entry invalidation in a multithreaded data processing system |
US9898416B2 (en) | 2015-12-22 | 2018-02-20 | International Business Machines Corporation | Translation entry invalidation in a multithreaded data processing system |
US9715459B2 (en) | 2015-12-22 | 2017-07-25 | International Business Machines Corporation | Translation entry invalidation in a multithreaded data processing system |
US10540292B2 (en) * | 2016-06-08 | 2020-01-21 | Google Llc | TLB shootdowns for low overhead |
US10169233B2 (en) | 2017-06-05 | 2019-01-01 | International Business Machines Corporation | Translation lookaside buffer purging with concurrent cache updates |
US10318436B2 (en) * | 2017-07-25 | 2019-06-11 | Qualcomm Incorporated | Precise invalidation of virtually tagged caches |
US10977183B2 (en) | 2018-12-11 | 2021-04-13 | International Business Machines Corporation | Processing a sequence of translation entry invalidation requests with regard to draining a processor core |
US10740239B2 (en) | 2018-12-11 | 2020-08-11 | International Business Machines Corporation | Translation entry invalidation in a multithreaded data processing system |
US10817434B2 (en) | 2018-12-19 | 2020-10-27 | International Business Machines Corporation | Interruptible translation entry invalidation in a multithreaded data processing system |
CN112540938B (zh) * | 2019-09-20 | 2024-08-09 | 阿里巴巴集团控股有限公司 | 处理器核、处理器、装置和方法 |
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 |
US11263150B2 (en) | 2020-02-11 | 2022-03-01 | International Business Machines Corporation | Testing address translation cache |
US12045615B1 (en) | 2022-09-16 | 2024-07-23 | Apple Inc. | Processing of synchronization barrier instructions |
US12001343B1 (en) * | 2022-12-30 | 2024-06-04 | International Business Machines Corporation | Selective distribution of translation entry invalidation requests in a multithreaded data processing system |
US20240320157A1 (en) * | 2023-03-22 | 2024-09-26 | Qualcomm Incorporated | Filtering remote data synchronization barrier (dsb) instruction execution in processor-based devices |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6647472B2 (en) * | 2000-12-29 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Fast suspend to disk |
TW200604934A (en) * | 2004-07-16 | 2006-02-01 | Benq Corp | Firmware management system and method thereof |
US20080195801A1 (en) * | 2007-02-13 | 2008-08-14 | Cheon Won-Moon | Method for operating buffer cache of storage device including flash memory |
US20090172259A1 (en) * | 2007-12-27 | 2009-07-02 | Pliant Technology, Inc. | Mass storage controller volatile memory containing metadata related to flash memory storage |
US20140189285A1 (en) * | 2012-12-29 | 2014-07-03 | Shaun M. Conrad | Apparatus and Method For Tracking TLB Flushes On A Per Thread Basis |
Family Cites Families (66)
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 |
WO2006045029A1 (en) * | 2004-10-19 | 2006-04-27 | 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 |
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 |
US7383415B2 (en) * | 2005-09-09 | 2008-06-03 | Sun Microsystems, Inc. | Hardware demapping of TLBs shared by multiple threads |
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 |
US7853752B1 (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 |
US8219989B2 (en) * | 2007-08-02 | 2012-07-10 | International Business Machines Corporation | Partition adjunct with non-native device driver for facilitating access to a physical input/output device |
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 | アドレス変換装置 |
US8392661B1 (en) | 2009-09-21 | 2013-03-05 | 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 | 富士通株式会社 | メモリ管理装置、メモリ管理方法及びメモリ管理プログラム |
US9703566B2 (en) * | 2011-12-29 | 2017-07-11 | 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 |
US20130339656A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Compare and Replace DAT Table Entry |
US9182984B2 (en) * | 2012-06-15 | 2015-11-10 | International Business Machines Corporation | Local clearing control |
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 |
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 |
US9086987B2 (en) * | 2012-09-07 | 2015-07-21 | International Business Machines Corporation | Detection of conflicts between transactions and page shootdowns |
US20150058520A1 (en) | 2013-08-22 | 2015-02-26 | International Business Machines Corporation | Detection of hot pages for partition migration |
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 |
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 |
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 | 上海兆芯集成电路有限公司 | 转译后备缓冲器、操作其的方法以及包含其的处理器 |
US9697137B2 (en) | 2014-11-14 | 2017-07-04 | Cavium, Inc. | Filtering translation lookaside buffer invalidations |
US9501425B2 (en) * | 2014-11-14 | 2016-11-22 | Cavium, Inc. | Translation lookaside buffer management |
-
2014
- 2014-11-14 US US14/541,726 patent/US9684606B2/en active Active
-
2015
- 2015-04-24 TW TW104113187A patent/TWI646421B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6647472B2 (en) * | 2000-12-29 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Fast suspend to disk |
TW200604934A (en) * | 2004-07-16 | 2006-02-01 | Benq Corp | Firmware management system and method thereof |
US20080195801A1 (en) * | 2007-02-13 | 2008-08-14 | Cheon Won-Moon | Method for operating buffer cache of storage device including flash memory |
US20090172259A1 (en) * | 2007-12-27 | 2009-07-02 | Pliant Technology, Inc. | Mass storage controller volatile memory containing metadata related to flash memory storage |
US20140189285A1 (en) * | 2012-12-29 | 2014-07-03 | Shaun M. Conrad | Apparatus and Method For Tracking TLB Flushes On A Per Thread Basis |
Also Published As
Publication number | Publication date |
---|---|
US9684606B2 (en) | 2017-06-20 |
TW201617878A (zh) | 2016-05-16 |
US20160140051A1 (en) | 2016-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI646421B (zh) | 轉譯後備緩衝器無效抑制 | |
US9501425B2 (en) | Translation lookaside buffer management | |
US10261916B2 (en) | Adaptive extension of leases for entries in a translation lookaside buffer | |
US10078588B2 (en) | Using leases for entries in a translation lookaside buffer | |
KR102448124B1 (ko) | 가상 주소들을 사용하여 액세스된 캐시 | |
CN104583976B (zh) | 具有预取的转译后备缓冲器 | |
US9405702B2 (en) | Caching TLB translations using a unified page table walker cache | |
JP5526626B2 (ja) | 演算処理装置およびアドレス変換方法 | |
KR102613645B1 (ko) | 캐시의 콘텐츠 트랙킹 | |
US9405703B2 (en) | Translation lookaside buffer | |
US20160140042A1 (en) | Instruction cache translation management | |
US10339054B2 (en) | Instruction ordering for in-progress operations | |
US9697137B2 (en) | Filtering translation lookaside buffer invalidations | |
GB2507759A (en) | Hierarchical cache with a first level data cache which can access a second level instruction cache or a third level unified cache | |
US11392508B2 (en) | Lightweight address translation for page migration and duplication | |
US9639467B2 (en) | Environment-aware cache flushing mechanism | |
JPWO2007105256A1 (ja) | マルチプロセッサシステム、プロセッサ、およびキャッシュ制御方法 | |
US20150269079A1 (en) | Data processing apparatus and method for handling performance of a cache maintenance operation |