TWI676891B - 轉譯後備緩衝器管理 - Google Patents
轉譯後備緩衝器管理 Download PDFInfo
- Publication number
- TWI676891B TWI676891B TW104110402A TW104110402A TWI676891B TW I676891 B TWI676891 B TW I676891B TW 104110402 A TW104110402 A TW 104110402A TW 104110402 A TW104110402 A TW 104110402A TW I676891 B TWI676891 B TW I676891B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- processing unit
- received
- unit
- synchronization command
- 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]
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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]
-
- 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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明涉及計算系統中的轉譯後備緩衝器的管理。多個轉譯後備緩衝器(TLB)中的每個轉譯後備緩衝器與相應的處理單元相關聯。第一TLB無效(TLBI)指令在第一處理單元處被發出,並且被發送至第二處理單元。特定於單元的同步指令在第一處理單元處被發出。同步命令被廣播,並且在第二處理單元處被接收。特定於單元的同步指令阻止在第一處理單元處額外的TLBI指令的發出,直到回應於同步命令的應答在第一處理單元處被接收。在同步命令被接收之前在第二處理單元處發出的任何TLBI指令的完成之後,應答從第二處理單元被發送至第一處理單元,應答指示了在同步命令被接收之前在第二處理單元處發出的任何TLBI指令是完成的。
Description
本發明涉及計算系統中的轉譯後備緩衝器的管理。
許多計算系統利用虛擬記憶體系統以允許程式師存取記憶體位址,而無須考慮記憶體位址駐留在計算系統的物理記憶體層次結構的何處。為了這樣做,虛擬記憶體系統維護由程式使用的虛擬記憶體位址至物理記憶體位址的映射,該物理記憶體位址存儲了由虛擬記憶體位址引用的實際資料。物理記憶體位址可以駐留在任何類型的存放裝置中(例如,SRAM、DRAM、磁片等)。
當程式存取虛擬記憶體位址時,虛擬記憶體系統執行位址轉譯以確定哪個物理記憶體位址由虛擬記憶體位址引用。在所確定的物理記憶體位址處存儲的資料從物理記憶體位址中被讀取,作為記憶體頁面中的偏移,並且由程式返回以供使用。虛擬位址至物理位址映射被存儲在“頁表”中。在一些情況下,虛擬記憶體位址可以位於大的虛擬位址空間中的頁面,該大的虛擬位址空間中的頁面轉譯成當前沒有被駐留在主記憶體中的物理記憶體的頁面(即,缺頁),使得頁面然後被複製到主記憶體中。
現代計算系統包括用於頁表的快取(caches)的一個或多個轉譯後備緩衝器(TLB),該一個或多個轉譯後備緩衝器由虛擬記憶體系統用來提高虛擬記憶體位址至物理記憶體位址的轉換速度,該一個或者多個轉譯後備緩衝器是用於頁表的快取。通常,TLB包括來自頁表的若干條目,每個條目包含從虛擬位址至物理位
址的映射。一般而言,TLB的條目僅覆蓋可用於計算系統的全部記憶體的一部分。在一些示例中,TLB的條目被維護使得由TLB覆蓋的全部可用記憶體的部分包括總的可用記憶體的最近被存取的、最常被存取的或者最可能被存取的部分。
一般而言,在一個方面中,一種用於管理多個轉譯後備緩衝器的方法,每個轉譯後備緩衝器與多個處理單元中的相應的處理單元相關聯,該方法包括:在多個處理單元的第一處理單元處發出第一轉譯後備緩衝器無效指令,並且向多個處理單元中的第二處理單元發送第一轉譯後備緩衝器無效指令;在第二處理單元處接收轉譯後備緩衝器無效指令,該轉譯後備緩衝器無效指令包括第一轉譯後備緩衝器無效指令;在第一處理單元處發出特定於單元的同步指令,包括廣播同步命令,該特定於單元的同步指令阻止在第一處理單元處附加的轉譯後備緩衝器無效指令的發出,直到回應於同步命令的應答在第一處理單元處被接收;在第二處理單元處接收同步命令;以及在同步命令在第二處理單元處被接收之前,當在第二處理單元處發出的包括第一轉譯後備緩衝器無效指令的任何轉譯後備緩衝器無效指令的完成之後,向第一處理單元發送來自第二處理單元的應答,該應答指示了在同步命令在第二處理單元處被接收之前,在第二處理單元處發出的包括第一轉譯後備緩衝器無效指令的任何轉譯後備緩衝器無效指令是完成的。
本發明的方面可以包括以下特徵中的一個或多個特徵。
應答指示了在同步命令在第二處理單元處被接收之前,在第二處理單元處發出的多條轉譯後備緩衝器無效指令是完成的。
在第二處理單元處從多個處理單元中的其他處理單元接收了多條轉譯後備緩衝器無效指令中的兩條或更多條轉譯後備緩衝器無效指令。
應答進一步指示了存在於第二處理單元的寫緩衝器中的任何寫操作在同步命令在第二處理單元處被接收之前是完成的。
向第二處理單元發送第一轉譯後備緩衝器無效指令包括,向廣播單元發送第一轉譯後備緩衝器無效指令,並且隨後從廣播單元向第二處理單元發送第一轉譯後備緩衝器無效指令。
廣播單元維護自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目。
本方法進一步包括在廣播單元處接收第二同步命令,以及基於自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目,來確定是否向多個處理單元中的一個或多個處理單元發送第二同步命令。
本方法進一步包括,如果自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目大於零,則向多個處理單元的一個或多個處理單元發送第二同步命令,以及如果自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目等於零,則禁發第二同步命令。
在接收到第一轉譯後備緩衝器無效指令時,廣播單元增加自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目。
廣播同步命令包括,向廣播單元發送同步命令,並且隨後從廣播單元向第二處理單元發送同步命令。
在接收到同步命令時,廣播單元將自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目重置為零。
該方法進一步包括從廣播單元向第二廣播單元發送同步指令,其中第二廣播單元隨後向第二多個處理器單元中的一個或多個處理器單元發送同步指令。
一般而言,在另一方面中,一種設備,包括:多個處理單元,每個處理單元與相應的轉譯後備緩衝器相關聯;其中多個處理單元中的第一處理單元被配置為發出第一轉譯後備緩衝器無效指令,並且向多個處理單元的第二處理單元發送第一轉譯後備緩衝器無效指令;其中第二處理單元被配置為接收轉譯後備緩衝器無效指令,該轉譯後備緩衝器無效指令包括第一轉譯後備緩衝器無效指令;其中第一轉譯後備緩衝器無效指令被配置為發出特定於單元的同步指令,包括廣播同步命令,該特定於單元的同步指令在第一處理單元處阻止附加的轉譯後備緩衝器無效指令的發出,直到回應於同步命令的應答在第一處理單元處被接收;其中第二處理單元被配置為接收同步命令;並且其中在同步命令在第二處理單元處被接收之前,當在第二處理單元處發出的包括第一轉譯後備緩衝器無效指令的任何轉譯後備緩衝器無效指令的完成之後,第二處理單元被配置為向第一處理單元發送應答,該應答指示了在同步命令在第二處理單元處被接收之前,在第二處理單元處發出的包括第一轉譯後備緩衝器無效指令的任何轉譯後備緩衝器無效指令是完成的。
本發明的方面可以包括以下特徵中的一個或多個特徵。
應答指示了在同步命令在第二處理單元處被接收之前,在第二處理單元處發出的多條轉譯後備緩衝器無效指令是完成的。
在第二處理單元處從多個處理單元的其他處理單元接收了多條轉譯後備緩衝器無效指令的兩條或更多條轉譯後備緩衝器無效指令。
應答進一步指示了存在於第二處理單元的寫緩衝器中的任何寫操作在同步命令在第二處理單元處被接收之前是完成的。
向第二處理單元發送第一轉譯後備緩衝器無效指令包括,向廣播單元發送第一轉譯後備緩衝器無效指令,並且隨後從廣播單元向第二處理單元發送第一轉譯後備緩衝器無效指令。
廣播單元維護自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目。
廣播單元被配置為接收第二同步命令,並且基於自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目,確定是否向多個處理單元中的一個或多個處理單元發送第二同步命令。
廣播單元被進一步配置為,如果自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目大於零,則向多個處理單元中的一個或多個處理單元發送第二同步命令,以及如果自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目等於零,則禁發第二同步命令。
在接收到第一轉譯後備緩衝器無效指令時,廣播單元增加自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目。
廣播同步命令包括,向廣播單元發送同步命令並且隨後從廣播單元向第二處理單元發送同步命令。
在接收到同步命令時,廣播單元將自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的數目重置為零。
廣播單元被配置為,向第二廣播單元發送同步指令,其中第二廣播單元隨後向第二多個處理器單元中的一個或多個處理器單元發送同步指令。
本發明的方面可以具有以下優點中的一個或多個優點。
在其他優點中,本發明的方面同步若干轉譯後備緩衝器中的部分,而同時減少了通過處理器匯流排在處理單元之間發送的應答消息的數目。
本發明的其他特徵和優點將通過下述實施方式以及申請專利範圍變得明顯。
102‧‧‧處理單元
104‧‧‧二級(L2)快取
105‧‧‧廣播單元
105’‧‧‧附加的廣播單元
106‧‧‧主記憶體
108‧‧‧二級存放裝置
110‧‧‧輸入/輸(I/O)出設備
112‧‧‧處理匯流排
114‧‧‧記憶體匯流排
116‧‧‧I/O匯流排
118‧‧‧橋
202‧‧‧處理單元
220‧‧‧處理器核心
222‧‧‧L1資料快取
224‧‧‧L1指令快取
226‧‧‧記憶體管理單元
227‧‧‧頁表遍歷器
228‧‧‧匯流排界面
230‧‧‧資料轉譯後備緩衝器
232‧‧‧指令轉譯後備緩衝器
348‧‧‧第一處理單元
351‧‧‧第二處理單元
352‧‧‧第三處理單元
354‧‧‧第四處理單元
356‧‧‧第一遠端TLBI計數器
358‧‧‧第二遠端TLBI計數器
360‧‧‧第三遠端TLBI計數器
362‧‧‧第四遠端TLBI計數器
364‧‧‧廣播TLBI指令計數器
466‧‧‧第一廣播TLBI指令TLBIB(A)
468‧‧‧第一本地TLBI指令TLBIL(F)
469‧‧‧TLBIL(D)
670‧‧‧第二廣播TLBI指令
672‧‧‧第三本地TLBI指令TLBIL(G)
674‧‧‧第二本地TLBI指令TLBIL(E)
876‧‧‧第四本地TLBI指令TLBIL(C)
第一圖是計算系統。
第二圖是被耦合至處理匯流排的處理單元。
第三圖是第一圖的計算系統的第一簡化的視圖。
第四圖示出第三圖的計算系統中的第一執行步驟。
第五圖示出第三圖的計算系統中的第二執行步驟。
第六圖示出第三圖的計算系統中的第三執行步驟。
第七圖示出第三圖的計算系統中的第四執行步驟。
第八圖示出第三圖的計算系統中的第五執行步驟。
第九圖示出第三圖的計算系統中的第六執行步驟。
第十圖示出第三圖的計算系統中的第七執行步驟。
第十一圖示出第三圖的計算系統中的第八執行步驟。
第十二圖示出第三圖的計算系統中的第九執行步驟。
第十三圖是第一圖的計算系統的第二簡化的視圖,包括若干廣播單元。
1.綜述
由於各種原因,在虛擬位址與物理位址之間的映射可能變為無效的。如果將映射存儲為TLB中的條目,則必須使TLB中的條目無效,以避免將不正確的資料返回至使用虛擬位址的程式。在一些示例中,計算系統提供用於使TLB條目無效的指令,該指令有時被稱為TLB無效指令(TLBI)。當在虛擬位址與物理位址之間的映射變為無效時,發出針對映射的TLBI指令。當針對映射的TLBI指令被接收時,TLB中對應於映射的任何條目是無效的(或者被刪除)。
在具有多個處理單元(例如,多核處理器的核)的計算系統中,可以向計算系統中的其他的、遠端的處理單元中的一些或全部處理單元,廣播在第一處理單元處發出的特定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中的任何一個處理單元向處理單元102中的其他處理單元通過處理匯流排112廣播命令或指令。
2.1記憶體層次結構
通常,處理單元102執行一條或多條電腦程式的指令,包括從包括在計算系統100中的記憶體中讀取處理器指令和資料。如在本領域公知的,基於記憶體或存放裝置的相對延遲,計算系統100中的各種記憶體或存放裝置被組織為記憶體層次結構。這樣的記憶體層次結構的一個示例在頂部具有處理器寄存器(未示出),然後是一級(L1)快取(未示出),然後是L2快取104,然後是主記憶體106以及最後緊跟的是二級存放裝置108。當給定的處理單元102嘗試存取記憶體位址時,記憶體層次結構中的每個記憶體或存放裝置,從記憶體層次結構的頂層往下的順序來被檢查,以確定記憶體位址的資料是否被存儲在存放裝置或記憶體設備中。
例如,對於存取用於僅在二級存放裝置108中存儲的資料的記憶體位址的處理單元102的第一處理單元348,處理單元首先確定記憶體位址和資料是否被存儲在其L1快取中。由於記憶體位址和資料沒有被存儲在其L1快取中,因此快取未命中(cache miss)發生,使得處理器經由處理匯流排112與L2快取140進行通信,以確定記憶體位址和資料是否被存儲在L2快取140中。由於記憶體位址和資料沒有被存儲在L2快取140中,因此另一快取未命中發生,使得處理器經由處理匯流排112、橋118以及記憶體匯流排114與主記憶體116通信,以確定記憶體位址和資料是否被
存儲在主記憶體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,下面將更詳細地描述其中的每一個。注意,在一些示例中,資料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甚至要求針對快取命中的位址轉譯。
如果L1資料快取222沒有用於虛擬記憶體位址的條目(即,快取未命中),則記憶體存取請求被發送至MMU 226。通常,MMU 226使用資料TLB 230來將虛擬記憶體位址轉譯為相應的物理記憶體位址,並且將針對物理記憶體位址的記憶體存取請求經由匯流排界面228發送出處理器202並發送至記憶體層次結構中的其他單元。頁表遍歷器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甚至要求針對快取命中的位址轉譯。
然而,如果L1指令快取224不具有虛擬記憶體位址的條目(即,緩存未命中),則記憶體存取請求被發送至MMU 226。通常,MMU 226使用指令TLB將虛擬記憶體位址轉譯成對應的物理記憶體位址,並且將針對物理記憶體位址的記憶體存取請求經由匯流排界面228發送出處理器202,並發送至記憶體層次結構的其他單元中。如以上指出的,使用頁表遍歷器227來完成這一轉譯,該頁表遍歷器227處理從頁表檢索虛擬記憶體位址與物理記憶體位址之間的映射。
為了加快將虛擬記憶體位址轉換成物理記憶體位址的過程,指令TLB 232包括在虛擬記憶體位址與物理記憶體位址之間的若干最近或經常被使用的映射。如果指令TLB 232具有針對虛
擬記憶體位址的映射,則針對與虛擬記憶體位址相關聯的物理記憶體位址的記憶體存取請求(如從存儲在指令TLB 232中的映射中確定的)經由匯流排界面228從處理器202被發出。
如果指令TLB 232不具有針對虛擬記憶體位址的映射(即,TLB未命中),則頁表遍歷器227遍歷頁表以確定與虛擬記憶體位址相關聯的物理記憶體位址,並且針對物理記憶體位址的記憶體請求(如從存儲在指令TLB 232中的映射中確定的)經由匯流排界面228被發送出處理器202。
在一些示例中,指令TLB 232和頁表被並行地存取,以確保當TLB未命中發生時,沒有造成附加的時間損失。
由於L1指令快取224和指令TLB 232可以僅存儲有限數目的條目,因此需要快取管理演算法以確保存儲在L1指令快取224和指令TLB 232中的映射是那些可能被多次重複使用的映射。這樣的演算法基於準則、諸如最近最少使用準則來逐出並替換存儲在L1資料快取222和資料TLB 230中的條目。
2.3轉譯後備緩衝器無效(TLBI)指令
在一些示例中,計算系統的虛擬記憶體系統可以改變其虛擬記憶體位址與物理記憶體位址之間的映射。在這樣的情況下,向計算系統中的TLB(即,每個處理單元202的資料TLB 230和指令TLB 232)發出(例如,由作業系統或由硬體實體)用於虛擬記憶體位址的轉譯後備緩衝器無效指令(TLBI)。
在一些示例中,TLBI指令包括虛擬記憶體位址,並且使得與虛擬記憶體位址相關聯的任何TLB條目的無效。即,當TLB接收用於給定的虛擬記憶體位址的TLBI時,存儲了給定的虛擬記憶體位址和物理記憶體位址之間的映射的TLB中的任何條目是無效的。應當指出,儘管TLBI指令通常包括作為參數(argument)的用於無效的虛擬記憶體位址,但是在一些示例中,出於簡化的目的,TLBI在本文中被描述為包括作為參數的用於無效的映射。在
一些示例中,TLBI指令包括上下文資訊,諸如進程識別字、虛擬機器器識別字或者異常級別。
2.3.1廣播TLBI指令
在一些示例中,TLBI指令可以被指定為“本地的”或“廣播的”。當本地TLBI指令在給定的、起始處理單元處被發出,則本地TLBI指令使得與虛擬記憶體位址相關聯的任何TLB條目或者起始處理單元的TLB中的上下文的無效。
當廣播TLBI指令在給定的、起始處理單元處被發出時,廣播TLBI指令使得與起始處理單元的TLB中的虛擬記憶體位址相關聯的任何TLB條目的無效,並且還使得TLBI指令經由廣播單元被發送至一個或多個其他的、遠端的處理單元。在一個或多個遠端處理單元處,TLBI指令發出並且使得與一個或多個遠端處理單元的TLB中的虛擬記憶體位址相關聯的任何TLB條目的無效。在一些示例中,一個或多個遠端處理單元中的每個處理單元經由廣播單元將應答發送回起始處理單元,包括該應答指示TLBI指令在遠端處理單元處是完成的。
2.3.2廣播TLBI指令的全域同步
在特定情況下,在起始處理單元發出任何進一步的指令之前,由起始處理單元發出的所有的廣播TLBI指令被完成是重要的。為了完成這一點,資料同步障礙(DSB)指令可以在起始處理單元處被發出,以在起始處理單元處暫停處理,直到所有在起始處理單元處發出的TLBI指令,包括任何廣播TLBI指令被完成。當在一條或多條廣播TLBI指令之後發出DSB指令時,同步指令被廣播至遠端處理單元,並且在起始處理單元處處理被暫停,直到所有本地TLBI指令已經完成並且指示了在遠端處理單元處廣播TLBI指令已經完成的應答被接收。
在一些示例中,在從起始處理單元處接收的每個TLBI指令完成時,遠端處理單元可以將單獨的應答發送回起始處
理單元。然而,當大量的TLBI指令從起始處理單元被廣播時,不被期望的大量的應答經由廣播單元被發送回至起始處理單元。這種不被期望的大量的應答可以消耗處理匯流排上的過量的頻寬。
為了避免經由處理匯流排發送大量的應答,本文中描述的方法實質上將在遠端處理單元中的每個處理單元處的應答合併為針對每個遠端處理單元的單個應答。該合併的應答被發送回廣播塊,廣播塊反過來向起始處理單元發送應答,該應答指示了在起始處理單元處發出的所有廣播TLBI指令在DSB指令的發出之前在所有遠端處理單元處是完成的。
2.3.2.1示例
參考第三圖,計算系統100的簡化版本300包括四個處理單元(即,第一處理單元348、第二處理單元351、第三處理單元352和第四處理單元354)和廣播單元105。
每個處理單元包括TLB(未示出),每個TLB包括若干TLB條目,每個條目包括虛擬記憶體位址和物理記憶體位址之間的映射。每個處理單元還包括遠端TLBI計數器(TLBIR)。即,第一處理單元348包括第一遠端TLBI計數器356,第二處理單元351包括第二遠端TLBI計數器358,第三處理單元352包括第三遠端TLBI計數器360以及第四處理單元354包括第四遠端TLBI計數器362。針對每個處理單元,遠端TLBI計數器指示在其處理流水線中的從遠端處理單元接收的若干TLBI指令。最初,所有的遠端TLBI計數器356、358、360、362具有為“0”的值。
處理單元348、351、352、354中的每個處理單元與廣播單元105進行通信,這些處理單元能夠通過該廣播單元105彼此通信。廣播單元105包括廣播TLBI指令計數器(TLBIB)364,該廣播TLBI指令計數器(TLBIB)364指示了自廣播單元105上一次接收了同步指令之後若干廣播TLBI已經由廣播單元105被廣播。儘管在圖式中沒有明確地示出,但是處理單元和廣播單元105之間
的所有通信通過處理匯流排112發生。
參考第四圖,在第一次,第一廣播TLBI指令、TLBIB(A)466在第一處理單元348(即,起始處理單元)處被發出,並且第一本地TLBI指令、TLBIL(F)468在第四處理單元354處被發出。注意,由於沒有TLBI已經被廣播,因此在第一次,遠端TLBI計數器356、358、360、362中沒有一個被增加。
參考第五圖,在第二、隨後的一次,第一處理單元348向廣播單元105發送對應於第一廣播TBLI指令466的TLBI指令、TLBI(A)。第一處理單元348將其遠端TLBI計數器356增加至‘1’,指示了第一處理單元已經發出了一條廣播TLBI指令。廣播單元105然後將其廣播TLBI指令計數器364增加至‘1’並且向其他的、遠端的處理單元351、352、354中的每個處理單元發送TLBI指令、TLBI(A)。在接收到TLBI指令、TLBI(A)時,遠端處理單元351、352、354將TLBI指令、TLBI(A)添加至它們各自的處理流水線(pipelines)並且將它們各自的遠端TLBI計數器358、360、362增加至‘1’。注意,在已經在遠端處理單元351、352、354的處理流水線中的任何TLBI指令之後,TLBI指令、TLBI(A)被添加。
參考第六圖,在第三、隨後的一次,第二廣播TLBI指令、TLBIB(B)在第一處理單元處348被發出,第二本地TLBI指令、TLBIL(E)674在第三處理單元352處被發出,並且第三本地TLBI指令、TLBIL(G)672在第四處理單元354處被發出。
參考第七圖,在第四、隨後的一次,第一處理單元348向廣播單元105發送對應於第二廣播TLBI指令670的TLBI指令、TLBI(B)。第一處理單元348將其遠端TLBI計數器356增加至‘2’,指示了第一處理單元348已經發出兩條廣播TLBI指令。廣播單元105然後將其廣播TLBI指令計數器364增加至‘2’,並且向其他的、遠端的處理單元351、352、354中的每個處理單元發送TLBI指令、TLBI(B)。在接收到TLBI指令、TLBI(B)時,遠端處
理單元351、352、354將TLBI指令、TLBI(B)添加至它們各自的處理流水線並且將它們各自的遠端TBLI計數器358、360、362增加至‘2’。再一次,在已經在遠端處理單元351、352、354的處理流水線中的任何TLBI指令之後,TLBI指令、TLBI(B)被添加。
參考第八圖,在第五、隨後的一次,第四本地TLBI指令、TLBIL(C)876在第一處理單元348處被發出。參考第九圖,在第六、隨後的一次,DSB指令876在第一處理單元348處被發出。DSB指令使得第一處理單元348以確定一條或多條遠端TLBI指令是否在DSB的發出之前由第一處理單元發出。為將其實現,第一處理單元348確定其遠端TLBI計數器356是否大於零。由於遠端TLBI計數器356大於零(即,2),DSB指令使得第一處理單元348暫停處理,直到由第一處理單元348廣播的所有TLBI指令已經完成。參考第十圖,為此,DSB指令857使得同步指令(‘Sync’)被發送至廣播單元105。當廣播單元105接收了同步指令時,廣播單元105檢查其廣播TLBI指令計數器364以確定計數器的值是否大於零。如果廣播TLBI指令計數器364大於零,則向遠端處理單元351、352、354發送同步指令,因為在遠端處理單元的處理流水線中存在TLBI指令,該TLBI指令在遠端處理單元351、352、354處經由廣播單元105被接收。如果廣播TLBI指令計數器364的值等於零,則廣播單元105不向遠端處理單元351、352、354發送同步指令,因為在遠端處理單元的處理流水線中不存在如下TLBI指令,該TLBI指令經由廣播單元105在遠端處理單元351、352、354處被接收。
在這種情況下,廣播TLBI指令計數器具有為‘2’的值,並且同步指令從廣播單元105被發送至遠端處理單元351、352、354。
當同步指令在遠端處理單元351、352、354處被接收時,遠端處理單元檢查它們各自的遠端TLBI計數器358、360、
362以確定在同步指令之前從其他處理單元接收的多少TLBI指令在遠端處理單元處是未完成的。隨著未完成的TLBI指令在遠端處理單元處完成,遠端TLBI計數器被減小。
參考第十一圖,一旦在遠端處理單元351、352、354的流水線中的所有的TLBI指令已經完成,這些TLBI指令是在遠端處理單元351、352、354處接收的同步指令之前發出的,則遠端處理單元351、352、354重置它們的遠端TLBI計數器358、360、362並且向廣播單元105發送完成應答。一旦廣播單元105已經接收了來自遠端處理單元351、352、354中的每個遠端處理單元的完成應答(‘Ack(2)’、‘Ack(2)’、‘Ack(4)’),廣播單元105將其廣播TLBI指令計數器364重置為零並且向第一處理單元348發送完成應答(‘Ack(2,3,4)’)。從廣播單元105向第一處理單元348發送的完成應答指示了在第一處理單元348處發出的所有廣播TLBI指令已經在所有的遠端處理單元351、352、354處完成。
在接收來自廣播單元105的完成應答之後,任何廣播TLBI指令(例如,第一廣播TLBI指令、TLBIB(A)466和第二廣播TLBI指令、TLBIB(B)670)被標記為完成。
參考第十二圖,當廣播TLBI指令在第一處理單元348處完成的情況下,一旦在第一處理單元處本地發出的任何TLBI指令已經完成,則DSB指令是完成的並且處理在第一處理單元348處重新開始。
參考第十三圖,在一些示例中,計算系統100可以包括一個或多個附加的廣播單元105’,每個廣播單元與若干附加的處理單元(未示出)進行通信。通常,TLBI指令和同步指令兩者均可以在不同的廣播單元105,105’之間通過,並且到達被連接至不同廣播單元105,105’的處理單元。任何完成應答也可以在不同的廣播單元105,105’之間通過,並且到達被連接至不同廣播單元105,105的處理單元。
通常,在同步指令在遠端處理單元處被接收的時間之前,在遠端處理單元處已經被發出的所有TLBI指令在完成應答被發送至廣播塊之前必須完成。
當同步指令在遠端處理單元處被接收時,遠端處理單元不一定暫停處理,並且可以繼續發出指令。
在一些示例中,當同步指令在遠端處理單元處被接收時,與被TLBI指令無效的映射相關的任何未完成的寫操作從遠端處理單元的寫緩衝器(或者任何其他可能保存修改的記憶體資料的地點)被刷出(flushed)。在一些示例中,這可以通過刷新整個寫緩衝器來完成。在其他示例中,這可以通過選擇性地刷新寫緩衝器來完成。在一些示例中,已經修改了在其緩存中的資料的系統可能需要將緩存刷新。
在一些示例中,廣播單元被包括在L2快取中。在一些示例中,TLBI指令從起始的、本地的處理單元開始,貫穿其餘的剩餘處理單元被流水線化。在一些示例中,在任何給定時刻針對給定的處理單元僅有一條同步指令可以是未完成的。在一些示例中,所有的廣播TLBI指令和同步指令被路由通過序列化點,諸如最後一級快取控制器。
在一些示例中,TLB與L1快取可以被存取的順序取決於它們如何被編址。即,當L1快取被物理地標記時,TLB需要在L1快取之前被存取。當L1快取被虛擬地標記時,在存取L1緩存之前不需要TLB存取。
3.實施方式
實現上述技術的系統可以在軟體、固件、資料電子電路、電腦硬體或者它們的組合中實現。系統可以包括有形地體現在機器可讀存放裝置中用於由可程式設計處理器執行的電腦程式產品,以及可以由可程式設計處理器執行的方法步驟,該可程式設計處理器執行指令的程式以通過對輸入資料進行操作和產生輸出
來實現功能。系統可以被實現在一個或多個電腦程式中,該一個或多個電腦程式是在可程式設計系統上可執行的,包括被耦合以從資料存儲系統接收資料和指令的以及將資料和指令傳輸至資料存儲系統的至少一個可程式設計處理器、至少一個輸入裝置以及至少一個輸出設備。每個電腦程式可以以高級的過程式的程式設計語言或物件導向的程式設計語言,或者如果需要以組合語言或機器語言來實現;並且在任何情況下,語言可以是編譯性或解釋性的語言。通過示例的方式,適當的處理器包括通用微處理器和專用微處理器兩者。通常,處理器將從唯讀記憶體和/或隨機存取記憶體中接收指令和資料。通常,電腦將包括用於存儲資料檔案的一個或多個大量存放區;這樣的設備包括磁片,諸如內部硬碟和可拆卸磁片;磁光碟;和光碟。適用於有形地體現電腦程式指令和資料的存放裝置包括所有形式的非揮發性記憶體,包括以示例性方式的半導體記憶體設備,諸如EPROM、EEPROM和快閃記憶體設備;磁片,諸如內部硬碟和可拆卸磁片;磁光碟;和CD-ROM盤。前述的任何形式可由ASIC(專用積體電路)來補充,或者被併入ASIC(專用積體電路)中。
其他實施例在以下申請專利範圍的範疇內。
Claims (26)
- 一種用於管理多個轉譯後備緩衝器的方法,每個轉譯後備緩衝器與多個處理單元的相應的一處理單元相關聯,所述方法包括:在所述多個處理單元中的一第一處理單元處發出一第一轉譯後備緩衝器無效指令,並且向所述多個處理單元中的一第二處理單元發送所述第一轉譯後備緩衝器無效指令;在所述第二處理單元處接收轉譯後備緩衝器無效指令,所述轉譯後備緩衝器無效指令包括所述第一轉譯後備緩衝器無效指令;在所述第一處理單元處發出一特定於單元的同步指令,並廣播一同步命令至多個處理單元,所述特定於單元的同步指令未被廣播至多個處理單元且所述特定於單元的同步指令阻止在所述第一處理單元處附加的轉譯後備緩衝器無效指令的發出,直到在所述第一處理單元處接收到回應於所述同步命令的一應答;在所述第二處理單元處接收所述同步命令;以及在所述第二處理單元處接收到所述同步命令之前,當在所述第二處理單元處發出的包括所述第一轉譯後備緩衝器無效指令的任何轉譯後備緩衝器無效指令的完成之後,向所述第一處理單元發送來自所述第二處理單元的所述應答,所述應答指示在所述第二處理單元處接收到所述同步命令之前、在所述第二處理單元處發出的包括所述第一轉譯後備緩衝器無效指令的任何轉譯後備緩衝器無效指令是完成的。
- 如申請專利範圍第1項所述的方法,其中所述應答指示在所述第二處單元處接收到所述同步命令之前、在所述第二處理單元處發出的多條轉譯後備緩衝器無效指令是完成的。
- 如申請專利範圍第2項所述的方法,其中在所述第二處理單元處從所述多個處理單元中的其他處理單元接收所述多條轉譯後備緩衝器無效指令中的兩條或更多條轉譯後備緩衝器無效指令。
- 如申請專利範圍第1項所述的方法,其中所述應答進一步指示在所述第二處理單元處接收到所述同步命令之前存在於所述第二處理單元的寫緩衝器中的任何寫操作是完成的。
- 如申請專利範圍第1項所述的方法,其中向所述第二處理單元發送所述第一轉譯後備緩衝器無效指令包括:向廣播單元發送所述第一轉譯後備緩衝器無效指令,並且隨後從所述廣播單元向所述第二處理單元發送所述第一轉譯後備緩衝器無效指令。
- 如申請專利範圍第5項所述的方法,其中所述廣播單元維護自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的一計數。
- 如申請專利範圍第6項所述的方法,進一步包括:在所述廣播單元處接收第二同步命令,並且基於自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的所述計數來確定是否向所述多個處理單元中的一個或多個處理單元發送所述第二同步命令。
- 如申請專利範圍第7項所述的方法,進一步包括:如果自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的所述計數大於零,則向所述多個處理單元中的所述一個或多個處理單元發送所述第二同步命令,以及如果自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的所述計數等於零,則禁發所述第二同步命令。
- 如申請專利範圍第6項所述的方法,其中在接收到所述第一轉譯後備緩衝器無效指令時,所述廣播單元增加自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的所述計數。
- 如申請專利範圍第5項所述的方法,其中廣播所述同步命令包括:向所述廣播單元發送所述同步命令,並且隨後從所述廣播單元向所述第二處理單元發送所述同步命令。
- 如申請專利範圍第10項所述的方法,其中在接收到所述同步命令時,所述廣播單元將自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的所述計數重置為零。
- 如申請專利範圍第5項所述的方法,進一步包括:從所述廣播單元向第二廣播單元發送所述同步指令,其中所述第二廣播單元隨後向第二多個處理器單元中的一個或多個處理器單元發送所述同步指令。
- 如申請專利範圍第1項所述方法,其中廣播所述同步命令包含經由一廣播單元廣播所述同步命令,該廣播單元維持自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令。
- 一種設備,包括:多個處理單元,每個處理單元與相應的轉譯後備緩衝器相關聯;其中所述多個處理單元中的第一處理單元被配置為發出第一轉譯後備緩衝器無效指令,並且向所述多個處理單元中的第二處理單元發送所述第一轉譯後備緩衝器無效指令;其中所述第二處理單元被配置為接收轉譯後備緩衝器無效指令,所述轉譯後備緩衝器無效指令包括所述第一轉譯後備緩衝器無效指令;其中所述第一處理單元被配置為發出特定於單元的同步指令,並廣播一同步命令至多個處理單元,所述特定於單元的同步指令未被廣播至多個處理單元且所示特定於單元的同步指令阻止在所述第一處理單元處附加的轉譯後備緩衝器無效指令的發出,直到回應於所述同步命令的一應答在所述第一處理單元處被接收;其中所述第二處理單元被配置為接收所述同步命令;並且其中在所述第二處理單元處接收到所述同步命令之前,當在所述第二處理單元處發出的包括所述第一轉譯後備緩衝器無效指令的任何轉譯後備緩衝器無效指令的完成之後,所述第二處理單元被配置為向所述第一處理單元發送所述應答,所述應答指示在所述第二處理單元處接收到所述同步命令之前,在所述第二處理單元處發出的包括所述第一轉譯後備緩衝器無效指令的任何轉譯後備緩衝器無效指令是完成的。
- 如申請專利範圍第14項所述的設備,其中所述應答指示在所述第二處理單元處接收到所述同步命令之前、在所述第二處理單元處發出的多條轉譯後備緩衝器無效指令是完成的。
- 如申請專利範圍第15項所述的設備,其中在所述第二處理單元處從所述多個處理單元中的其他處理單元接收所述多條轉譯後備緩衝器無效指令中的兩條或更多條轉譯後備緩衝器無效指令。
- 如申請專利範圍第14項所述的設備,其中所述應答進一步指示在所述第二處理單元處接收到所述同步命令之前存在於所述第二處理單元的寫緩衝器中的任何寫操作是完成的。
- 如申請專利範圍第14項所述設備,其中向所述第二處理單元發送所述第一轉譯後備緩衝器無效指令包括:向廣播單元發送所述第一轉譯後備緩衝器無效指令,並且隨後從所述廣播單元向所述第二處理單元發送所述第一轉譯後備緩衝器無效指令。
- 如申請專利範圍第18項所述的設備,其中所述廣播單元維護自上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的計數。
- 如申請專利範圍第19項所述的設備,其中所述廣播單元被配置為接收第二同步命令,並且基於自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的所述計數來確定是否向所述多個處理單元中的一個或多個處理單元發送所述第二同步命令。
- 如申請專利範圍第20項所述的設備,其中所述廣播單元被進一步配置為:如果自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的所述計數大於零,則向所述多個處理單元中的所述一個或多個處理單元發送所述第二同步命令,以及如果自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的所述計數等於零,則禁發所述第二同步命令。
- 如申請專利範圍第19項所述的設備,其中在接收到所述第一轉譯後備緩衝器無效指令時,所述廣播單元增加自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的所述計數。
- 如申請專利範圍第18項所述的設備,其中廣播所述同步命令包括:向所述廣播單元發送所述同步命令,並且隨後從所述廣播單元向所述第二處理單元發送所述同步命令。
- 如申請專利範圍第23項所述的設備,其中在接收到所述同步命令時,所述廣播單元將自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令的所述計數重置為零。
- 如申請專利範圍第18項所述的設備,其中所述廣播單元被配置為向第二廣播單元發送所述同步指令,其中所述第二廣播單元隨後向第二多個處理器單元中的一個或多個處理器單元發送所述同步指令。
- 如申請專利範圍第14項所述的設備,其中廣播所述同步命令包含經由一廣播單元廣播所述同步命令,該廣播單元維持自所述上一同步命令被接收之後接收的轉譯後備緩衝器無效指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/541,498 | 2014-11-14 | ||
US14/541,498 US9501425B2 (en) | 2014-11-14 | 2014-11-14 | Translation lookaside buffer management |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201617895A TW201617895A (zh) | 2016-05-16 |
TWI676891B true TWI676891B (zh) | 2019-11-11 |
Family
ID=55961806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104110402A TWI676891B (zh) | 2014-11-14 | 2015-03-31 | 轉譯後備緩衝器管理 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9501425B2 (zh) |
TW (1) | TWI676891B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5507780B2 (ja) | 2000-06-08 | 2014-05-28 | ザ リージェンツ オブ ザ ユニバーシティ オブ カリフォルニア | 視覚的サーボ制御光学顕微鏡 |
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 |
US9870328B2 (en) | 2014-11-14 | 2018-01-16 | Cavium, Inc. | Managing buffered communication between cores |
US9665505B2 (en) | 2014-11-14 | 2017-05-30 | Cavium, Inc. | Managing buffered communication between sockets |
US9779028B1 (en) | 2016-04-01 | 2017-10-03 | Cavium, Inc. | Managing translation invalidation |
US10540292B2 (en) * | 2016-06-08 | 2020-01-21 | Google Llc | TLB shootdowns for low overhead |
US9772945B1 (en) * | 2016-10-25 | 2017-09-26 | International Business Machines Corporation | Translation entry invalidation in a multithreaded data processing system |
US9785557B1 (en) * | 2016-10-25 | 2017-10-10 | International Business Machines Corporation | Translation entry invalidation in a multithreaded data processing system |
US20190087217A1 (en) * | 2017-09-19 | 2019-03-21 | Microsoft Technology Licensing, Llc | Hypervisor memory cache invalidation |
US11327759B2 (en) | 2018-09-25 | 2022-05-10 | Marvell Asia Pte, Ltd. | Managing low-level instructions and core interactions in multi-core processors |
US10817300B2 (en) | 2018-10-26 | 2020-10-27 | Marvell Asia Pte, Ltd. | Managing commit order for an external instruction relative to two unissued queued instructions |
US10740239B2 (en) * | 2018-12-11 | 2020-08-11 | International Business Machines Corporation | Translation entry invalidation in a multithreaded data processing system |
US11263043B1 (en) | 2019-07-19 | 2022-03-01 | Marvell Asia Pte, Ltd. | Managing processor core synchronization using interrupts |
CN112463657B (zh) | 2019-09-09 | 2024-06-18 | 阿里巴巴集团控股有限公司 | 一种地址转换缓存清除指令的处理方法和处理装置 |
US11645208B2 (en) | 2021-03-29 | 2023-05-09 | International Business Machines Corporation | Translation bandwidth optimized prefetching strategy through multiple translation lookaside buffers |
US11556475B2 (en) | 2021-03-29 | 2023-01-17 | International Business Machines Corporation | Power optimized prefetching in set-associative translation lookaside buffer structure |
US20230385127A1 (en) * | 2022-05-25 | 2023-11-30 | Arm Limited | Apparatus and method in which control functions and synchronization events are performed |
US12045615B1 (en) | 2022-09-16 | 2024-07-23 | Apple Inc. | Processing of synchronization barrier instructions |
CN116383102B (zh) * | 2023-05-30 | 2023-08-29 | 北京微核芯科技有限公司 | 转译后备缓冲器访问方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US8543772B2 (en) * | 2003-09-30 | 2013-09-24 | Intel Corporation | Invalidating translation lookaside buffer entries in a virtual machine (VM) system |
TW201413454A (zh) * | 2012-06-15 | 2014-04-01 | Ibm | 比較及取代動態位址轉譯表項 |
CN103778072A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US7853752B1 (en) | 2006-09-29 | 2010-12-14 | Tilera Corporation | Caching in multicore and multiprocessor architectures |
US8185717B2 (en) | 2009-07-20 | 2012-05-22 | Mips Technologies, Inc. | Apparatus and method for profiling software performance on a processor with non-unique virtual addresses |
US8392661B1 (en) | 2009-09-21 | 2013-03-05 | Tilera Corporation | Managing cache coherence |
US8832381B2 (en) | 2011-02-21 | 2014-09-09 | Advanced Micro Devices, Inc. | Cache and a method for replacing entries in the cache |
US9323715B2 (en) | 2013-11-14 | 2016-04-26 | Cavium, Inc. | Method and apparatus to represent a processor context with fewer bits |
US9665505B2 (en) | 2014-11-14 | 2017-05-30 | Cavium, Inc. | Managing buffered communication between sockets |
US9870328B2 (en) | 2014-11-14 | 2018-01-16 | Cavium, Inc. | Managing buffered communication between cores |
-
2014
- 2014-11-14 US US14/541,498 patent/US9501425B2/en active Active
-
2015
- 2015-03-31 TW TW104110402A patent/TWI676891B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US8543772B2 (en) * | 2003-09-30 | 2013-09-24 | Intel Corporation | Invalidating translation lookaside buffer entries in a virtual machine (VM) system |
US8751752B2 (en) * | 2003-09-30 | 2014-06-10 | Intel Corporation | Invalidating translation lookaside buffer entries in a virtual machine system |
TW201413454A (zh) * | 2012-06-15 | 2014-04-01 | Ibm | 比較及取代動態位址轉譯表項 |
CN103778072A (zh) * | 2012-10-25 | 2014-05-07 | 辉达公司 | 多线程处理单元中的高效存储器虚拟化 |
Also Published As
Publication number | Publication date |
---|---|
US20160140047A1 (en) | 2016-05-19 |
US9501425B2 (en) | 2016-11-22 |
TW201617895A (zh) | 2016-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI676891B (zh) | 轉譯後備緩衝器管理 | |
TWI646421B (zh) | 轉譯後備緩衝器無效抑制 | |
EP3433747B1 (en) | Adaptive extension of leases for entries in a translation lookaside buffer | |
JP4737691B2 (ja) | 排他的所有権のスヌープフィルタ | |
JP3924206B2 (ja) | 不均一メモリ・アクセス(numa)データ処理システム | |
US10078588B2 (en) | Using leases for entries in a translation lookaside buffer | |
KR101593107B1 (ko) | 메모리 요청들을 처리하기 위한 시스템들 및 방법들 | |
US7669011B2 (en) | Method and apparatus for detecting and tracking private pages in a shared memory multiprocessor | |
US8195881B2 (en) | System, method and processor for accessing data after a translation lookaside buffer miss | |
US7523260B2 (en) | Propagating data using mirrored lock caches | |
JP2018504694A (ja) | 仮想アドレスを使用してアクセスされるキャッシュ | |
JP2018504694A5 (zh) | ||
US20160140042A1 (en) | Instruction cache translation management | |
TW201107974A (en) | Cache coherent support for flash in a memory hierarchy | |
US9208088B2 (en) | Shared virtual memory management apparatus for providing cache-coherence | |
US20240045803A1 (en) | Hardware coherence signaling protocol | |
US9697137B2 (en) | Filtering translation lookaside buffer invalidations | |
US10339054B2 (en) | Instruction ordering for in-progress operations | |
US20180143903A1 (en) | Hardware assisted cache flushing mechanism | |
US11392508B2 (en) | Lightweight address translation for page migration and duplication | |
US7797495B1 (en) | Distributed directory cache | |
US9639467B2 (en) | Environment-aware cache flushing mechanism | |
JP2019533239A (ja) | アトミックセットのデータアクセスを提供するための装置および方法 | |
US9983995B2 (en) | Delayed write through cache (DWTC) and method for operating the DWTC |