TWI784085B - 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體 - Google Patents
資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體 Download PDFInfo
- Publication number
- TWI784085B TWI784085B TW107141175A TW107141175A TWI784085B TW I784085 B TWI784085 B TW I784085B TW 107141175 A TW107141175 A TW 107141175A TW 107141175 A TW107141175 A TW 107141175A TW I784085 B TWI784085 B TW I784085B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- cache line
- line
- data
- lines
- Prior art date
Links
Images
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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F2015/761—Indexing scheme relating to architectures of general purpose stored programme computers
- G06F2015/765—Cache
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
Abstract
一種多處理器系統包括:多個節點及至少一個記憶體,所述多個節點中的每一節點包含至少一個處理器;第一快取,被配置成儲存多個第一快取行,所述第一快取是所述多個節點中的至少一個節點專有的;以及第二快取,被配置成儲存多個第二快取行,所述第二快取較所述第一快取處於更高的層階,其中所述第一快取行中的至少一者包括指向所述第二快取行中的一者的位置的第一關聯指針,且其中所述第二快取行中的至少一者包括指向所述第一快取行中的一者的位置的第二關聯指針。
Description
本發明概念的至少一些示例性實施例大體而言是有關於存取計算機記憶體裝置中的資料的方法及系統,且更具體而言是有關於用於構建同調快取層次結構的機制及技術。
如今的處理器常常配備有快取,快取可儲存於一些大容量記憶體中儲存的資料及指令的副本。此種大容量記憶體如今最流行的實例是動態隨機存取記憶體(dynamic random access memory,DRAM)。在本文中,將使用用語「記憶體」來籠統地指代所有現有的及未來的記憶體構建方式。快取記憶體(或簡稱為「快取」)通常是由較其他記憶體構建方式小得多且快得多的記憶體構建的且隨後僅可在任何給定時間容納於主記憶體或輔助儲存裝置中儲存的資料中的一部分資料的副本。如今,快取常常使用靜態隨機存取記憶體(static random access memory,SRAM)來實施且大的快取可使用DRAM來構建。本文所述快取可使用任何現有的及未來的記憶體技術來構建。在下文中,將僅闡述與本發明的發明概念相關的內容及配置。
常常,計算機系統的記憶體系統包括一系列快取,其中靠近主記憶體的快取(此處稱為較高層階的快取)更大且更慢且靠近處理器的快取(此處稱為較低層階的快取)更小且更快。此種配置通常被稱為快取層次結構、記憶體層次結構或記憶體系統。快取層次結構中的每一層階被稱為快取層階。圖1是示出計算機系統的一部分的方塊圖。在圖1所示實例中,計算機系統是多處理器系統,其中每一個中央處理單元(central processing unit,CPU) 101皆被指派有各自的第一層階專有快取102(L1快取)。CPU 101及L1快取102的更詳細實例在下文中參照圖2加以闡述。專有快取是其中資料單元的空間僅可因應於所述快取本地的CPU(或者與所述快取處於同一節點中的CPU,其中所述快取是該節點專有的)的活動的快取。在此實例中,第二層階快取103是由所有CPU 101共享且可包含由所有CPU 101存取的資料及指令。快取103是全域快取,此乃因資料單元的空間可因應於任何CPU 101的活動。另外,快取103是共享快取,此乃因每一個資料單元僅可存在於一個共享副本中(而每一個專有快取皆可具有各自的複製副本)。記憶體105亦儲存由所有CPU 101存取的指令及資料。(主)記憶體105通常是利用物理位址(或簡稱為PA)來存取的,而CPU 101產生的位址通常是虛擬位址。具有若干CPU及若干專有快取的計算機系統(例如圖1所示系統)需要高效的機制來尋找快取中的一個快取中的所請求資料單元以及使資料的儲存於不同節點中的多個副本保持同調。
除包括主記憶體及快取記憶體之外,此種計算機系統通常亦將包括一或多個輔助儲存裝置。該些輔助儲存裝置可包括硬碟驅動器、光碟驅動器、快閃驅動器等中的一或多者,硬碟驅動器、光碟驅動器、快閃驅動器等在此處由磁碟104來籠統地表示。磁碟或輔助儲存裝置104可儲存較記憶體105的資料多出若干數量級的資料,但不能利用物理位址直接存取。若CPU 101欲對儲存於磁碟104上的資料進行存取,則虛擬記憶體系統(圖1未示出)將資料塊(通常被稱為「頁」)自磁碟104移動至記憶體105,並進行自與所述頁對應的虛擬位址至物理位址的轉譯。一種特殊種類的轉譯快取(圖1未示出)(通常被稱為「轉譯旁查緩衝器(translation look-aside buffer)」或簡稱為TLB)對自虛擬頁至物理頁的轉譯映射進行快取。虛擬記憶體系統可被視為快取系統,所述快取系統將位於磁碟104中的資料的一部分儲存於記憶體105中。
圖2是用於闡釋計算機系統的示例性快取層次結構的方塊圖。圖2示出圖1中的快取組織的更詳細的視圖,其中CPU 101被示出為包含若干快取式結構,例如指令TLB(ITLB,201)及資料TLB(DTLDB,205)以及CPU核心202。1層階快取102被示出為包括指令快取200及資料快取206,指令快取200及資料快取206夾置於CPU 101與2層階(及潛在較高層階的)快取207之間。圖2亦示出連接至快取層次結構的大容量記憶體208。儘管如此,圖2中的計算機系統被示出為單處理器(即,一個處理器(one-processor))系統,圖2中的計算機系統可為多處理器系統的一部分。
當CPU 101請求快取中存在的資料(稱為「快取命中(cache hit)」)時,所述請求可較對快取中不存在的資料進行存取(稱為「快取未命中(cache miss)」)快得多地得到服務。通常,假設兩種版本的應用原本具有相似的性質,則在CPU 101上運行的經歷較少快取未命中的應用與遭受較多快取未命中的相同應用相較將執行得更快並消耗較少的能量。因此,已對用於避免快取未命中的技術投入了相當大的努力,且亦設計了可使快取命中及快取未命中就它們的存取延遲以及該些記憶體事務所消耗的能量而言高效的構建方式。
為了理解如何開發針對此快取命中/快取未命中問題的解決方案,理解快取組織及術語將是有用的。通常,資料是以較處理器的字的大小大的固定塊(被稱為快取行)的形式配置至快取中。如今常用的快取行大小例如為32位元組、64位元組及128位元組,但如熟習此項技術者將理解,對於各種快取構建方式而言亦存在更大及更小的快取行大小。對於一些快取構建方式而言,快取行大小亦可為可變的。
在記憶體208中組織資料佈局的常用方式是採用對每一個資料字進行靜態映射以使每一個資料字駐留於一個特定快取行中的方式。每一個快取通常具有索引功能,所述索引功能對快取的可供每一個快取行駐留的部分(被稱為組)進行辨識。所述組可包含用於同時容納一或多個快取行的空間。組可容納的快取行的數目被稱為組的關聯性。常常說,快取中所有組的關聯性是相同的。該些快取常常被稱為組關聯快取。關聯性亦可在各個組之間變化。組中的每一個可容納快取行的空間被稱為通路。
為確定儲存於每一組中的每一個快取行的身份,快取中的快取行各自具有相關聯的某一辨識符。此種辨識符的一個常用實例是位址標籤。當在快取中查找特定快取行時,可使用快取行的位址來確定快取中可供所述快取行駐留的組。將對應組的快取行的位址標籤與用於辨識快取行的位址的標籤部分(參見,例如圖3所繪示的且在以下闡述的TAG及ATAG)進行比較來判斷所需要的快取行是否駐留於所述快取中,且若是,則判斷所需要的快取行駐留於哪一通路中,即所需要的快取行駐留於可容納快取行的組中的空間中的哪一個空間中。
常常,每一個快取具有內置方略來判斷將哪一個快取行保留於組中且將哪一個快取行逐出(亦被稱為「替換」)以為被放入至所述組中的新的快取行騰出空間,此被稱為快取的替換策略。被替換的快取行被稱為犧牲行或被替換的快取行。與快取記憶體結合使用的流行的替換策略包括但不限於:最近最少使用(least-recently used,LRU)替換策略、偽最近最少使用(pseudo-LRU)替換策略及隨機替換策略。
包容性快取層次結構(inclusive cache hierarchy)要求存在於一個快取層階中的資料塊(例如,L1快取中的資料塊)的副本(例如,快取行)亦存在於更高的快取層階(此處,更高是指具有較1高的編號的快取層階)中,例如存在於L2快取及L3快取中。獨佔性快取層次結構僅具有存在於整個快取層次結構中的資料塊的一個副本(例如,快取行),而非包容性層次結構可具有此兩種方略的混合。在獨佔性快取層次結構及非包容性快取層次結構中,快取行在自給定的快取層階被逐出之後一般會配置於下一更高的快取層階中。
在知曉關於快取及快取行的此種背景的情況下,現在繼續進行此論述來例示一種用於辨識快取層次結構(比如圖1及圖2所示快取層次結構)內的特定快取位置的傳統技術。圖3是用於闡釋包括組關聯快取(set-associative cache)及組關聯資料轉譯旁查緩衝器(look-aside buffer,TLB)的二層階快取層次結構的傳統構建方式的方塊圖。圖3示出包含CPU 301、DTLB 303、L1快取307及L2快取311的計算機系統節點的組織的實例。CPU 301產生包含虛擬位址302(VADDR)的記憶體請求,虛擬位址302(VADDR)用於在DTLB 303中實行關聯查找。虛擬位址302在此實例中被劃分成三部分:P_OFFSET(頁偏移,例如由低層階位元組成)、TAG及INDEX。虛擬位址302的INDEX部分用於辨識DTLB 303內可儲存位址轉譯的組。
此實例中所使用的所示DTLB 303具有兩路關聯組織,所述兩路關聯組織示出所辨識的組的兩個項。每一個項由位址標籤(ATAG)304及物理頁訊框(physical page frame,PPF)305組成。將虛擬位址302的TAG部分與所辨識的組的每一個項的ATAG 304進行比較。邏輯318判斷是否存在與各個項中的任何項的匹配,且若存在,則控制多工器(multiplexer,MUX) 306來選擇對應的PPF 305。物理位址PADDR 316是藉由對由MUX 306選擇的PPF 305與虛擬位址302的P_OFFSET部分進行串接(concatenating)而構成。作為另外一種選擇,若所辨識的組中的各個項皆不與虛擬位址302的TAG部分匹配,則實行TLB填充操作且將所需要的轉譯項放入至DTLB 303中。
使用PADDR 316在L1快取307中實行查找。更具體而言,使用PADDR 316的INDEX部分來辨識可儲存包含所請求資料的快取行的組。(應注意,該L1 INDEX可包含與DTLB INDEX不同的位元)。所繪示的L1快取307具有兩路關聯組織,所述兩路關聯組織在所標識的組中具有兩個項。每一個項由對應的快取行的位址標籤(ATAG)308及資料309組成。將PADDR 316的TAG部分與所辨識的組的每一個項的ATAG進行比較。邏輯319判斷是否存在與各個項中的任何項的匹配,並控制MUX 310來選擇對應的資料。若所述各個項皆不匹配(由L1未命中317繪示),則需要在L2快取311中進行查找。儘管針對L2快取查找將PADDR 316劃分成INDEX部分及TAG部分可與針對L1快取查找作出的劃分不同,然而針對L2快取查找進行的其餘步驟通常相似於針對在L1快取中的查找實行的其餘步驟。若確定在L2快取中未命中,則可需要在更高層階的快取中進行新的查找或對記憶體進行存取。可注意到,若L1快取使用的PADDR 316的INDEX部分完全由P_OFFSET部分的位元構成,則在來自MUX 306的PPF資訊可用之前便可開始對L1快取307的存取。此常常被稱為帶虛擬索引、帶物理標籤的(virtually indexed, physically tagged cache,VIPT)快取。
熟習此項技術者應理解,可將各自具有與圖3所示記憶體層次結構相似的記憶體層次結構的若干「節點」連接於一起以形成同調多處理器系統。圖1示出多處理器的另一個實例,其中每一個CPU具有各自的專有L1快取。此使對所請求資料所駐留的位置進行定位的任務更複雜,此乃因始終對下一更高的快取層階中的資料進行搜索將不再足夠。需要用於搜索其他節點的快取以及用於使資料的儲存於不同節點中的多個副本保持同調的機制。通常,將構建全域快取同調協定來使每一快取行的資料值保持同調。此種協定將向不同的快取發送同調訊息(有時被稱為同調請求)。舉例而言,圖1及圖2所示L1快取可自同調協定接收讀取請求或無效化請求。此種同調請求通常攜帶用於辨識所請求快取行的物理位址。
圖5是示出用於構建快取的三個選項的方塊圖。圖5示出處於高層階的三個快取構建方式選項。藉由帶物理索引、帶物理標籤的(physically indexed, physically tagged,PIPT)快取500來闡述用於在L1快取307中找到資料的功能。使用虛擬位址VA 502的一部分在TLB 503中實行查找以得到物理頁訊框(PPF),所述物理頁訊框部分地用於形成INDEX(索引)504,INDEX 504用於對L1快取505進行存取。將PPF的一些其他部分與由INDEX 504辨識的L1快取505(圖中所示2路關聯快取)中的組的物理位址標籤PAT進行比較。使用所述比較的結果來選擇與由CPU核心501存取的虛擬位址(VA)502相關聯的DATA。
VIPT快取510可使得對與由CPU核心511產生的虛擬位址512相關聯的資料的存取時間更快,此乃因VIPT快取510僅使用虛擬位址位元來形成其INDEX 514。可與自L1快取515中的帶索引的組讀出所述兩個物理位址標籤(physical address tag,PAT)並行地實行TLB 513中的查找,所述查找用於找到對應的物理頁訊框PPF。由於與PAT查找並行地實行TLB存取,因此相較於在PIPT快取500中進行的存取,可更快地存取與虛擬位址512相關聯的那一通路。為了使VIPT快取510實用,常常對此種快取施加大小限制。快取大小與快取的關聯性的組合必須使得當TLB 513將虛擬位址512轉譯成物理位址時,不應對索引514中的任何位元進行轉譯。舉例而言,若計算機系統具有4千位元組的頁大小,則用於索引功能的位元可僅為虛擬位址512的較低的12個位元。
圖5所示最頂部快取520是帶虛擬索引、帶虛擬標籤的(virtually indexed virtually tagged,VIVT)快取。最頂部快取520僅將虛擬位址522的位元用於其INDEX位元524以及用於位址位元523來與L1快取525的帶索引的位址標籤進行比較。接著,儲存於L1快取525中的位址標籤是儲存虛擬位址位元的虛擬位址標籤(VAT)。VIVT快取520相較於其他兩個快取具有若干優點。首先,不需要進行TLB轉譯來對L1 520進行存取,此為L1命中節省了能量,L1命中目前是記憶體層次結構中最常見的存取類型。其次,VIVT快取520可較PIPT快取500更快地進行存取,此乃因VIVT快取520的索引位元524不需要進行TLB查找。最後,VIVT快取520不具有大小限制。
然而,存在由VIVT快取施加的新問題需要解決。首先,可能使用不同的虛擬位址來引用同一物理快取行。若VIVT快取儲存同一物理快取行的若干虛擬副本,則使用不同的虛擬位址來引用同一物理快取行可能會導致VIVT快取的異名問題(synonym problem)。此問題通常藉由施加會保證兩個或更多個異名快取行無法同時駐留於VIVT快取中的機制來解決。其次,不同的進程使用的同一虛擬位址可能引用不同的物理快取行。此被稱為假訊號問題(aliasing problem)。若CPU核心521產生的虛擬位址522包括一些進程辨識符(常常被稱為位址空間辨識符),則所述假訊號問題可得到解決。當在多核心系統(例如,圖1中所繪示的多核心系統)中存在若干專有快取時會引入第三個問題。L2及更高層階的快取常常為PIPT類型且使用物理位址來定址。因此,該些L2快取與L1快取之間的任何通訊通常皆攜帶物理位址。此種通訊的實例包括但不限於由同調協定產生的同調請求以及對在L1快取與L2及更高層階的快取之間施加的一些包容性質(inclusion property)引起的所謂的後無效化請求(back-invalidate request)。儘管PIPT快取與VIPT快取二者皆可基於物理位址實行快取查找並找到該些外部請求所針對的快取行,但是VIVT快取仍無法使用物理位址來存取。
圖4是示出無標籤快取的示例性構建方式的方塊圖。作為背景資訊,圖4繪示無標籤快取的可能的構建方式。此種快取可依賴於與匹配的快取表項CTE的所請求快取行(有時被稱為區位置)對應的位置資訊LI(有時被稱為快取行指針(cache line pointer,CP))來指示所請求快取行駐留於哪一快取中以及所述快取中的哪一位置中。此將使一些系統在合適的快取處實行直接快取查找。舉例而言,在圖4所示系統(所述系統可為多處理器系統中的節點)中,位置資訊可將L1快取與L2快取區分開。所述位置資訊亦可能夠將在多處理器系統的未在圖4中示出的其餘部分中存在的其他快取區分開。圖4示出無標籤節點,所述無標籤節點可連接至多處理器系統中的其他節點,所述多處理器系統具有由組關聯快取及CPU(所述CPU可包含一或多個傳統快取,此處繪示為L0)形成的二層階快取層次結構,其中CPU 401產生位址(ADDR)402。圖4亦示出由組關聯快取位置緩衝器(cache location buffer,CLB)形成的二層階CLB(有時亦被稱為元資料快取-MD快取)層次結構,其中第一層階CLB CLB1 410及第二層階CLB CLB2 420是以ADDR作為索引。本揭露中所用的用語「CLB1」可指第一層階CLB,且用語「CLB2」可指第二層階CLB。CLB1 410中的每一項包括至少位址標籤(address tag,AT)411及快取位置表(cache location table,CLT)412。CLB1 410中的每一項可儲存額外的資訊,例如區資訊(region information,RI)413。CLT 412儲存對應區(亦被稱為微頁面)的快取行的位置資訊(LI)。作為實例,圖4對每個區示出四條LI。發明人作出的經驗研究表明,每個區8至16條LI(即,每個區8至16個資料單元(快取行))將具有成本效益且為高效的。位置資訊對多處理器系統內可從中找到對應快取行的位置進行編碼。位置資訊可例如包含可從中找到資料單元的快取的身份。位置資訊亦可包含可從中找到資料單元的快取內的位置。作為另外一種選擇,位置資訊可包含可從中找到資料單元的節點的身份或者包含某個提供關於資料單元位置的資訊的符號,例如符號「MEM」指示可在記憶體中找到資料單元。在至少一些情形中,符號「不知曉」可指示對應資料單元的位置未被記錄在與區對應的CLT中。
MUX 416選擇具有與ADDR 402的TAG部分匹配的AT 411的CLT且MUX 415基於ADDR 402的L-OFFSET部分來選擇與所請求快取行對應的LI 414。若儲存於所選擇的LI中的快取身份對應於L2快取440,則利用位址402的INDEX部分以及位置資訊414的一部分來形成對L2快取440中的所請求資料單元進行存取的位址417。在組關聯L2快取440的實例中,所述部分包含與儲存所請求資料單元的關聯通路對應的資訊。若儲存於所選擇的LI中的快取身份對應於L1快取430,則以相似的方式來形成對L1快取430中的所請求資料單元進行存取的位址418。
在圖4所示實例中,L1快取430及L2快取440中的每一項分別具有後向指針(backward pointer,BP)432及442,後向指針432及442分別與其快取行(DATA)431及441相關聯。在此實例中,各個BP指針指向CLB2 420中各自相應的相關聯的CTE。CLB2 420中的每一個CTE包含位址標籤(AT)421、CLT 422以及CLB1指針(CIP)423。若CLB2項有對應的CLT駐留於CLB1 410中,則其CIP將指向所述項。在此種情形中,CLB1 410將包含此區的最新資訊(up-to-date information)。在此種情形中,將CLB1中的CTE稱為現用CLB項,同時CLB2 420中針對所述區的CLB項包含被動項。若CLB1 410包含區的現用項,則CLB2 420可能需要包含所述區的被動項。
當在CLB1 410中未能夠找到匹配的CTE時,可在CLB2 420中查找對應的CTE並將所述對應的CTE複製至CLB1,同時將CLB1中舊的項複製至CLB2 420中,此被稱為溢出及填充或者簡稱為溢出/填充(圖4中的SPILL及FILL)。例如在傳統的包容性快取將資料單元逐出至下一層階以為可自下一快取層階放入(填充)的新的資料單元騰出空間時,亦會實行溢出。相似的溢出/填充活動將在不同的CLB層階之間實行,其中CLB項在CLB層階之間移動,此乃因各CLB層階形成包容性層次結構。目錄DIR可處於CLB層次結構的根處且使最高層階的CLB溢出/填充。
可與溢出/填充活動並行地開始對所請求資料單元的存取。
多層階CLB構建方式的CLB的內容可與由其管理的多層階快取系統的資料單元的位置保持一致。在快取層次結構中移動資料單元會使得在一或多個CLB中更新所述資料單元的對應的位置資訊,所述移動資料單元包括但不限於:由來自CPU的對於資料單元的請求造成的移動、資料單元的逐出、預取活動及相干活動。舉例而言,在圖4中,自快取440逐出資料單元441可涉及以下步驟:跟隨資料單元441的相關聯的BP 442指針來找到其對應的CTE(所述對應的CTE在此實例中處於CLB2 420中)以及將其對應的位置資訊更新成指向資料單元的新位置(例如,儲存MEM符號)。並且,若對應的CLB2的CLE的CIP指針是有效的,則跟隨CIP在CLB1 410中找到其對應的CTE並更新與所述快取行相關聯的位置資訊。若存在有效的CIP指針,則可不更新CLB2中的項。舉例而言,可以僅更新現用的CLT的方式來更新CLT。
如自上述內容將理解,利用上述無標籤快取系統(即,其中儲存於快取中的資料單元不具有與所述資料單元相關聯的位址標籤的快取系統)將使得在CPU 401請求位於不同的儲存裝置中的各種快取行時將發生多種不同類型的事務。圖4中所繪示的節點可為由若干此種快取節點構成的較大的多處理器系統的子系統(或節點)。使許多節點中的快取的資料保持同調需要快取同調性協定(cache coherence protocol),例如,構建窺探同調(snooping coherence)或基於目錄的同調(directory-based coherence)。同調性協定將向圖4中的所繪示節點發送同調請求(EXTERNAL REQUEST)。該些請求將通常首先轉向CLB2 420,其可確定該快取系統不具有所請求快取行(CLB2未命中或者CLB2命中CIP為非現用的項,且所請求快取行的位置資訊保持有值記憶體圖案)。若如此,則不需要對資料快取L1及L2進行另外的操作(被稱為同調過濾),但無論如何皆需要對現用的CLT中對應的LI進行更新以追蹤與資料單元相關聯的新位置。否則,CLB2查找可提供所請求位置資訊(CLB2命中且所請求快取行的位置資訊保持儲存所述快取行的位置),或者其可確定CLB1 410儲存相關聯的位置資訊(CLB2命中及有效CIP)。在後一種情形中,在CLB1 410中進行查找需要確定所請求快取行的位置或者需要確定所述快取行未駐留於此快取子系統中。(CLB1中對應的位置資訊包含記憶體圖案)。端視同調請求的性質(例如,無效請求、讀取請求或獨佔性讀取請求)而定,同調性協定將對所請求資料單元實行一些操作且可能會改變所請求資料單元的狀態。可能亦需要更新現用CLT中對應的LI來追蹤與資料單元相關聯的新位置。
即使圖4示出的節點由兩個快取層階組成,然而熟習此項技術者應理解,節點可利用其他數目的層階來構成且可包含多於一個CPU。另外,節點中快取層階的數目與CLB層階的數目不需要為相同的。
總結以上參照圖3及圖5的論述,熟習此項技術者應理解,快取層次結構的現今構建方式可能需要在可確定所請求的快取行的位置之前在TLB中以及在不同的快取層階處實行諸多關聯查找。另外,每一轉譯項及被快取的快取行皆需要帶有位址標籤且需要將多個此種標籤與該些層階中的每一層階處的位址的一部分進行比較。總體而言,在每一次關聯查找的動態能量方面,此種構建方式可能會帶來相當大的成本。亦需要相當大的靜態能量及記憶體容量開銷來儲存實行比較所需的額外的標籤資訊。另外,包含若干CPU或若干節點(其分別具有各自的專有快取層次結構)的多處理器需要額外的成本高昂的搜索機制來對駐留於專有快取中的資料進行定位以及需要成本高昂的同調活動來使專有快取中同一資料的複製副本保持同調。
因此,可期望提供避免與對資料及指令進行的TLB查找相關聯的上述問題及缺陷的系統及方法。舉例而言,若可利用虛擬位址而非物理位址來對其較低層階快取(例如,L1快取)中的資料及指令進行存取,則可為有利的。若較低層階快取中的資料及指令的位址標籤包含虛擬位址標籤,則可達成進一步的實施效率。如此一來,對於L1命中而言,可完全避免由TLB施加的額外延遲及能量消耗,L1命中是目前對記憶體層次結構進行的最常見類型的記憶體存取。為達成此目的,需要一種關於帶物理標籤的L2及更高層階的快取可如何與帶虛擬標籤的L1快取進行交互的解決方案。
根據本發明概念的至少一個示例性實施例,快取行儲存於多處理器系統的節點中的專有快取中,每一節點包含至少一個處理器(CPU)、所述節點專有的至少一個快取。根據一個實施例,所述節點專有的快取可由所述節點中的核心利用虛擬位址來存取,此被稱為虛擬快取。所述系統中的另一快取可由核心以及源自於所述系統中的其他核心的請求使用物理位址來存取,此被稱為物理快取。為解決對於此種以虛擬方式存取的快取而言通常存在的轉譯問題,虛擬快取中的每一快取行位置儲存與其快取行相關聯的快取行指針(CP),其中所述指針辨識物理快取中的快取行位置。同樣,物理快取中的每一快取行位置儲存與其快取行相關聯的快取行指針(CP)。物理快取中由虛擬快取中的快取行位置的快取行指針指向的快取行位置將使其快取行指針指向虛擬快取中的快取行位置。
根據本發明概念的至少一些示例性實施例,一種多處理器系統包括:多個節點及至少一個記憶體,每一節點包含至少一個處理器;第一快取,被配置成儲存多個第一快取行,所述第一快取是所述多個節點中的至少一個節點專有的;以及第二快取,被配置成儲存多個第二快取行,所述第二快取較所述第一快取處於更高的層階,其中所述第一快取行中的至少一者包括指向所述第二快取行中的一者的位置的第一關聯指針,且其中所述第二快取行中的至少一者包括指向所述第一快取行中的一者的位置的第二關聯指針。
根據本發明概念的至少一些示例性實施例,提供一種用於系統的資料管理方法,所述系統包括至少一個節點,所述至少一個節點包括處理器,所述處理器被分配有第一快取、第二快取及記憶體,所述第一快取儲存多個第一快取行且是所述至少一個節點專有的,且所述第二快取儲存多個第二快取行且較所述第一快取處於更高的層階,所述資料管理方法包括:將指向所述第二快取行中的一個第二快取行的位置的第一關聯指針儲存於所述第一快取行中的一個第一快取行中;以及將指向儲存有所述第一關聯指針的所述第一快取行的位置的第二關聯指針儲存於由所述第一關聯指針指向的所述第二快取行中。
根據本發明概念的至少一些示例性實施例,提供一種包括計算機可執行指令的非暫態計算機可讀取儲存媒體,所述計算機可執行指令在由被分配有帶虛擬標籤的快取、帶物理標籤的快取及記憶體的至少一個處理器執行時使所述至少一個處理器實行包括以下的操作:將第一關聯指針儲存於被儲存於所述帶虛擬標籤的快取中的多個第一快取行中的一個第一快取行中,所述第一關聯指針指向被儲存於所述帶物理標籤的快取中的多個第二快取行中的一個第二快取行的位置;以及將指向所述第一快取行中的一個第一快取行的位置的第二關聯指針儲存於所述第二快取行中的一個第二快取行中。
按照本發明概念的所述領域中的傳統,在圖式中採用功能區塊、單元及/或模組來闡述及示出實施例。熟習此項技術者應理解,該些區塊、單元及/或模組是由例如邏輯電路、分立部件、微處理器、硬接線電路(hard-wired circuit)、記憶體元件、配線連接件等可利用基於半導體的製作技術或其他製造技術形成的電子(或光學)電路以實體方式構建。在所述區塊、單元及/或模組由微處理器或類似元件構建的情形中,所述區塊、單元及/或模組可利用軟體(例如,微代碼)進行程式化以執行本文所論述的各種功能且可視需要由韌體及/或軟體來驅動。作為另外一種選擇,每一區塊、單元及/或模組皆可由專用硬體來構建,或者作為用於實行一些功能的專用硬體與用於實行其他功能的處理器(例如,一或多個經過程式化的微處理器及相關聯的電路系統)的組合來構建。另外,實施例的每一區塊、單元及/或模組皆可在不背離本發明概念的範圍的條件下在實體上分成二或更多個交互作用且分立的區塊、單元及/或模組。另外,實施例的區塊、單元及/或模組可在不背離本發明概念的範圍的條件下在實體上組合成更複雜的區塊、單元及/或模組。在下文中,將僅闡述與本發明的發明概念相關的內容及配置。
帶虛擬標籤的快取與帶物理標籤的快取(在下文中簡稱為虛擬快取與物理快取)之間進行介面通訊及交互作用的一般問題在於虛擬快取與帶物快取不講相同的「語言」,而是,虛擬快取與物理快取分別以虛擬名稱或由物理名稱來稱呼同一快取行。每次在虛擬快取與物理快取之間存在交互作用時在虛擬位址空間與物理位址空間之間實行全轉譯皆需要新的複雜的及成本高昂的硬體。
圖6是用於闡釋根據本發明概念至少一些示例性實施例的二層階快取層次結構的構建方式的方塊圖,其中第一層階是帶虛擬索引、帶虛擬標籤的快取,且第二層階是帶物理索引、帶物理標籤的(PIPT)快取。根據本發明概念的至少一些示例性實施例,圖6所示實例提供簡單及快速的機制來支持虛擬快取與物理快取之間的交互作用。應注意,L1-VIVT快取625中的快取行位置627及L2-PIPT快取605中的快取行位置607二者相較於圖5所示標準的帶虛擬索引、帶虛擬標籤的(VIVT)快取及帶物理索引、帶物理標籤的(PIPT)快取而言擴展成具有新的快取行指針(CP)欄位。
在圖6的底部處是虛擬快取625,虛擬快取625可使用由CPU核心621生成的虛擬位址622來提供快速且能量高效的存取,此乃因虛擬位址622的索引位元624與虛擬位址622的VAT比較位元623皆由虛擬位址位元組成。可快速地判斷所請求快取行是否駐留於其快取625中,且若是,則將所請求資料返回至CPU核心621。
若確定所請求快取行未存在於虛擬快取625中,則選擇犧牲快取行位置。在此實例中,假設選擇L1快取中所選擇組(由索引位元624確定的)的最右側快取行位置627並將最右側快取行位置627的快取行逐出。同時,將所述請求的虛擬位址發送至虛擬-物理位址轉譯器640(例如,轉譯旁查緩衝器(TLB))以生成物理位址L2請求602,物理位址L2請求602可用於在L2快取(及更高層階的快取)中搜索所請求快取行。根據本發明概念的至少一些示例性實施例,虛擬-物理位址轉譯器640可為被分配給CPU核心621的虛擬-物理位址轉譯器(例如,TLB)。
L2請求602亦攜帶犧牲快取行位置,即,L1快取的所選擇組的最右側快取行位置627。可使用犧牲快取行位置的快取索引及快取通路來對位置資訊進行編碼。然而,假設當位址在虛擬位址與物理位址之間轉譯時,用作L1快取的索引位元624的一些位址位元將不發生改變,位置資訊僅需要包含索引的無法自物理位址確定的部分,即,若系統的頁大小是4千位元組,則不需要包括12個最低位址位元。若L1快取625是直接映射的(即,每一組僅具有一個快取行位置),則L2請求602攜帶的犧牲快取行位置僅需要辨識所選擇組且不需要辨識任何通路。
L2快取中的查找是藉由自L2請求602的物理位址選擇索引位元604以選擇所請求快取行應駐留的組(若存在)來實行的。在此實例中,在L2快取的所選擇組的PAT與位址位元603之間進行的比較確定所請求快取行駐留於所述組的最左側快取行位置607中。此位置在本文中被稱為「命中快取行位置」。
現在將採取以下若干步驟:(1)將犧牲快取行位置的CP儲存於快取605中的命中快取行位置的CP中;(2)物理快取605將快取行返回至CPU核心621及L1虛擬快取625並將所述快取行寫入至L1虛擬快取625中的犧牲快取行位置中;以及(3)將命中快取行位置的CP儲存於犧牲快取行位置的CP中。總而言之,在已自L2快取向L1快取填充所請求快取行之後,提供資料的L2快取中的快取行位置將會儲存指向L1快取中安裝(例如,儲存)所述快取行的快取行位置的CP指針,且L1快取中安裝(例如,儲存)所述快取行的快取行位置將會儲存指向提供資料的L2快取中的快取行位置的CP指針。如此一來,L1快取與L2快取中的對應的快取行位置將會儲存指向彼此的交叉式CP指針。
根據本發明概念的至少一個示例性實施例,在圖6中的虛擬L1快取625與物理L2快取605之間強制進行包容。此意味著若快取行駐留於L1快取中的位置中,則所述快取行必須具有駐留於L2快取中的對應的位置。根據本發明概念的至少一個示例性實施例,L1快取為直寫類型(例如,直寫快取),即,當L1快取中的快取行被寫入時,L2快取中的對應的快取行(由L1快取中的被寫入快取行的CP辨識)亦被寫入。根據本發明概念的至少一個示例性實施例,L1快取為寫入無效化類型(例如,寫入無效化快取),即,駐留於L1快取中(且隨後亦駐留於L2快取中)的快取行對於對所述快取行實行的寫入無效化,且反而更新L2快取中的對應的快取行。對於此兩種快取類型而言,L1快取中的快取行將不再儲存與L2快取中的對應快取行不同的髒資料。
然而,根據本發明概念的至少一個示例性實施例,L1快取為回寫類型(例如,回寫快取),即,可對L1快取中的快取行進行修改而無需修改L2快取中與L1快取中的所述快取行對應的快取行。L1快取中的快取行因此將變髒。根據本發明概念的至少一個示例性實施例,在自L1快取逐出髒的快取行之後,L2快取中的對應的快取行得到更新。根據本發明概念的至少一個示例性實施例,使用儲存髒的快取行的快取行位置的CP找到L2快取中適合的快取行來進行更新。根據本發明概念的至少一個示例性實施例,L2快取中對應的快取行的CP改變其狀態以反映當其對應的L1快取行中的CP變髒時L2快取中對應的快取行是不可讀取的。根據本發明概念的至少一個示例性實施例,當將與L2快取中的對應的快取行對應的乾淨的(即,不髒的)快取行自L1快取逐出時,L2快取中所述對應的快取行的CP進行CP更新。
圖6中的L2-PIPT快取可接收外部請求608,例如,由快取同調協定生成的讀取請求或無效化請求。此意味著將需要對駐留於L2-PIPT快取及/或L1-VIVT快取中的快取行進行讀取或無效化。根據本發明概念的至少一個示例性實施例,外部請求608攜帶物理位址,物理位址可用於對L2-PIPT快取實行查找,但不直接用於在L1-VIVT快取中實行查找。而是,首先在L2-PIPT快取中搜索對應的快取行,在L2-PIPT快取中舉例而言確定所請求快取行處於所選擇組的最左側快取行位置607中。若最左側快取行位置607的CP包含有效指針,則可接著使用所述CP來確定L1-VIVT快取中的快取行的位置。根據本發明概念的至少一個示例性實施例,若外部請求608是無效化請求,則將所辨識的兩個快取行位置無效化,且若外部請求608是讀取請求,則對所辨識的快取行位置中的至少一者進行讀取。
根據本發明概念的至少一個示例性實施例,若L2-PIPT快取中的所辨識快取行位置的CP可確定L1-VIVT快取中的所辨識的快取行位置是髒的,則作為外部讀取請求的回應而對L1-VIVT中的所辨識的快取行位置進行讀取,否則將對L2-PIPT快取中的所辨識的快取行位置進行讀取。熟習此項技術者會理解,亦存在諸多其他替代方式來對L1-VIVT快取中的快取行進行編碼並確定所述快取行是髒的,所述方式包括但不限於將專用快取行狀態儲存於所選擇的L2-PIPT快取行位置中。
根據本發明概念的至少一個示例性實施例,若L2-PIPT快取中的所辨識的快取行位置的CP可確定L1-VIVT快取中的所辨識的快取行位置是可寫入的,則作為外部讀取請求的回應而對L1-VIVT中的所辨識的快取行位置進行讀取,否則將對L2-PIPT快取中的所辨識的快取行位置進行讀取。熟習此項技術者會理解,存在諸多替代方式來對L1-VIVT快取中的快取行進行編碼並確定所述快取行是可寫入的,所述方式包括但不限於將專用快取行狀態儲存於所選擇的L2-PIPT快取行位置中。
熟習此項技術者會理解,L1快取有諸多可能的替代配置可有利地採用以上針對圖6所闡釋的轉譯方案。L1快取可例如為帶虛擬索引、帶虛擬標籤的(VIPT)快取510,帶虛擬索引、帶虛擬標籤的快取510的大小/關聯性使得其索引位元中的一些索引位元將藉由自虛擬位址至物理位址的轉譯而被轉譯。此種配置亦將受益於以上闡釋的機制,此乃因無法自物理位址確定在VIPT快取中選擇哪一索引。熟習此項技術者會理解,圖6所闡釋的機制廣泛適用於任何如下的較低層階的快取:對於所述較低層階的快取而言,無法藉由由針對所述快取的一些種類的存取請求提供的位址(物理位址、虛擬位址或其他位址)來確定快取行的快取行位置。
以下是根據本發明概念的至少一些示例性實施例的因應於一些請求採取的一些步驟。
根據本發明概念的至少一些示例性實施例,因應於對於由在L1-VIVT快取中未命中且在L2-PIPT快取中命中的虛擬位址VA1辨識的資料的讀取請求,將採取以下步驟:
1) 使用虛擬位址VA1在L1快取625內選擇一組。
2) 將所選擇的組的VAT與虛擬位址VA1的位元623中的一些位元進行比較。
3) 所述比較確定資料未存在於VIVT快取625中。
4) 選擇犧牲快取行位置627。
5) 將儲存於此位置處的前一快取行逐出
6) 實行自虛擬位址VA1至物理位址PA1的轉譯。
7) 使用物理位址PA1來存取L2-PIPT快取605。
8) 確定所請求資料駐留於命中快取行位置607中。
9) 將命中快取行位置607的CP更新成容納指向犧牲快取行位置627的指針。
10) 將所請求資料返回至CPU核心621。
11) 將犧牲快取行位置627的CP更新成容納指向命中快取行位置607的指針。
根據本發明概念的至少一些示例性實施例,因應於對於由在L1-VIVT快取中未命中且在L2-PIPT快取中未命中的虛擬位址VA1辨識的資料的讀取請求,將採取一些額外的步驟。
· 實行如上所概述的步驟1至步驟7。
· 在步驟8處,將確定所請求資料未存在於L2-PIPT中且將包括額外的步驟來向「更高層階的快取」發送請求並選擇L2-犧牲位置。一旦已自「更高層階的快取」返回資料,L2-犧牲位置便將假設存在唯一的命中快取位置且將繼續進行步驟9至步驟11。
根據本發明概念的至少一些示例性實施例,因應於自L1-VIVT快取中的犧牲位置逐出髒的犧牲快取行,將採取以下步驟。
1) 辨識出髒的快取行的L2快取中的目標位置為由犧牲快取行的CP指向的位置。
2)將所述髒的快取行發送至L2快取中的目標位置。
3) 改變目標位置的CP以反映L1快取不再包含髒的犧牲快取行的事實。
根據本發明概念的至少一些示例性實施例,當在外部請求608上接收到對於物理位址PA1的同調讀取請求時,採取以下步驟:
1) 判斷與物理位址PA1對應的快取行是否駐留於L2快取605中並辨識出快取行位置607容納所述快取行。
2) 確定儲存於快取行位置607中的快取行無法用於答覆所述請求。此可例如是由於位置607的CP進行以下編碼:L1快取625中的對應的快取行位置具有髒的快取行或者儲存可寫入的快取行(所述可寫入的快取行在此循環中可能變髒),或者由於一些其他原因而使L2快取605中的快取行無法用於一些同調請求。
3) 作為同調請求的回應而讀取L1快取625中由CP指向的快取行位置627,且返回快取行位置627的資料。
4) 將L1快取625中的快取行降級成不再為可寫入的。
5) 改變L2快取605中快取行位置607的CP以反映L1快取625中的快取行不再為可寫入的或髒的。
根據本發明概念的至少一些示例性實施例,因應於在外部請求608上接收到對於物理位址PA1的同調無效化請求,採取以下步驟:
1) 判斷與物理位址PA1對應的快取行是否駐留於L2快取605中並辨識出快取行位置607容納所述快取行。
2) 將儲存於快取行位置607中的快取行無效化。
3) 檢查快取行位置607的CP以判斷在L1快取625中是否儲存有對應的快取行(例如,判斷快取行位置607的CP是否有效)。
4) 將L1快取625中的由CP指向的快取行位置無效化並標記為對於CPU核心621而言不可讀取的或不可寫入的。
5)作為同調請求的回應而可發送確認訊息(acknowledgement message)。
圖7是用於闡釋根據本發明概念至少一些示例性實施例的三層階快取層次結構的構建方式的方塊圖,其中第一層階是帶虛擬索引、帶虛擬標籤的VIVT快取,且第二層階及第三層階是無標籤帶物理索引、無標籤的PINT快取。圖7示出部分地由所謂的無標籤快取構建的系統。無標籤快取不儲存與其快取行位置相關聯的位址標籤。而是,專用元資料快取層次結構藉由儲存快取行指針來追蹤系統的快取行的位置。根據本發明概念至少一些示例性實施例的無標籤快取的詳細實例可見於圖4中。圖7僅示出最低層階元資料快取(MD快取)740。MD快取740採用與正常的快取相似的方式進行組織,例如,圖5中的快取配置中的任意快取配置皆可用於本發明概念的一或多個示例性實施例。所述快取配置可為組關聯快取結構、扭曲關聯快取結構(skewed-associative cache structure)、全關聯快取結構或者為任何其他常見的快取結構。當以位址(例如,圖7所示VA 722)呈現時,將判斷與位址對應的元資料是否包含於其MD快取740中。根據本發明概念的至少一個示例性實施例,MD快取740的元資料被組織成多個區,其中每一區具有辨識由若干相鄰的快取行組成的區的位址標籤(圖7中的VAT)。區可例如由16個快取行組成,但亦可為任何數目的快取行。關於VAT匹配,區位置由在MD快取740中進行的關聯查找來辨識。儲存於所辨識的區位置中的區資訊包含與所述區位置的對應的快取行相關聯的資訊。舉例而言,所辨識的區位置可儲存其對應的快取行中的每一者的快取行指針(圖中的CP)。所述CP可例如由關於CacheID的資訊(例如,快取層階)以及快取內的可從中找到每一對應快取行的關聯通路組成。所辨識的區位置亦可儲存在對應的快取中進行查找所欲使用的部分索引(partial index)。元資料位置亦可儲存適用於其所有相關聯的快取行的資訊。元資料位置可例如儲存物理位址資訊(圖7所示MD快取740中的PA)。儲存於區中的其他區範圍資訊(region-wide information)可包括許可位元(permission bit)以及適用於區的所有快取行的一些部分索引資訊。
快取行請求728可例如在MD快取740中實行查找並確定MD快取740的對應的CP(741)。此CP資訊可足以在L2快取745或L3快取750中的快取行位置中找到對應的快取行。若該些快取帶有物理索引,則可使用來自所辨識的區位置的PA資訊來形成索引資訊742或752。
圖7示出如何在L2快取745及L3快取750中找到對應的快取行位置的邏輯圖。首先,將CP的CacheID資訊與747中的「L2」進行比較。若存在匹配,則使用CP的通路來選擇L2快取745中的快取行位置。若反而在757中存在CacheID=「L3」的匹配,則轉而使用與CP的通路資訊對應的快取行位置來找到對應的快取行。熟習此項技術者將理解,知曉所請求快取行的CacheID、通路資訊及索引資訊使得能夠對此快取進行直接存取,而無需進行比較747或多工器746(其僅作為邏輯實例示出)。熟習此項技術者亦將理解,L2快取745及L3快取750可使用普通的記憶體陣列(例如,靜態隨機存取記憶體(Static Random Access Memory,SRAM)、動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)、非揮發性記憶體(Nonvolatile Memory,NVM)或任何其他記憶體技術)來構建。由於圖7中的L2快取745及L3快取750不包含標籤且為物理定址的,因此將L2快取745及L3快取750稱為帶物理索引的無標籤的(PINT)。
圖7所示「PINT L2及更高的快取」儲存與其快取行位置中的每一者相關聯的CP資訊。相似於圖6所示系統,L1快取725及L2快取745中的對應的快取行位置將儲存指向彼此的交叉式CP指針。接收到外部請求760將使得能夠藉由MD快取740查找來辨識L2快取745中的對應的快取行位置,進而辨識對應的CP及PA。圖6所闡述的用於闡述交叉式CP指針的初始化的步驟以及對外部請求進行答覆並自L1快取逐出快取行的步驟亦適用於L2快取745與L1快取725如何交互來實施該些活動。根據本發明概念的至少一個示例性實施例,作為L2快取605的指向L1-VIVT 625中的對應快取行的CP的一部分進行儲存的部分索引資訊轉而可作為圖7所示系統中的MD快取740中的對應區位置的一部分進行儲存。根據本發明概念的至少一個示例性實施例,若可確定區的所有快取行始終具有相同的部分索引資訊來索引至L1-VIVT快取725中,則所述部分區資訊可被儲存為對應的區位置中的區範圍資訊,此較分別儲存每一快取行的此種索引資訊更高效。根據本發明概念的至少一個示例性實施例,L1-VIVT快取725被直接映射且不需要在L2快取745的CP中儲存通路資訊。對於此種配置而言,將L2快取745中的CP構建為單個有效位元來指示對應的快取行是否存在於L1快取725中便可足夠。在此種配置中,可使用儲存於MD快取740中的區範圍索引資訊來找到L1快取725中的對應的快取行位置。
圖8是用於闡釋根據本發明概念至少一些示例性實施例的三層階快取層次結構的構建方式的方塊圖,其中第一層階是無標籤帶虛擬索引、無標籤的VINT快取,且第二層階及第三層階是無標籤帶物理索引、無標籤的PINT快取。圖8與圖7的相似之處在於圖8繪示相同的「PINT L2及更高的快取」。然而,825中的L1快取是帶虛擬索引、無標籤的(VINT)無標籤快取。MD快取840的CP此處已被擴展成儲存L1快取825的位置資訊823。此後,在L1快取825中不包括VAT標籤。而是,使用MD快取840的經擴展的位置資訊823來選擇L1-VIVT快取的對應的快取行。根據本發明概念的至少一個示例性實施例,L1-VIVT被直接映射,因此L1快取的位置資訊823可僅限於單個位元。
根據本發明概念的至少一個示例性實施例,圖7及圖8所示MD快取是使用虛擬位址進行存取。在此種情形中,需要沿來自L1-VIVT快取及L1-VINT快取的請求728及828的路徑進行虛擬-物理轉譯。
根據本發明概念的至少一個示例性實施例,圖7及圖8所示MD快取是使用虛擬位址進行存取。在此種情形中,需要沿外部請求760及860的路徑進行物理-虛擬轉譯。
根據本發明概念的至少一個示例性實施例,圖7及圖8所示MD快取是沿路徑728及828使用來自L1-VIVT快取及L1-VINT快取的虛擬位址進行存取,且外部請求760及860攜帶用於辨識MD快取740及840內與所請求快取行相關聯的區位置的資訊。根據本發明概念的至少一個示例性實施例,使用與圖4所示CLB2 420相似的結構來將由EXTERNAL REQUEST攜帶的物理位址轉譯成CLB1指針(CIP 423),CLB1指針(CIP 423)辨識CLB1內與MD快取740及840對應的快取位置項CLE(亦被稱為區位置)。
為了克服具有低關聯性的直接映射VIVT快取或VINT快取的一些假像(artifacts),尤其是考慮到可能使用同時多執行緒(simultaneous multithreading,SMT)核心,L1快取可帶有部分加擾索引(partially scrambled index)。L1快取的索引[15-12]由一些位址位元與一些位址空間辨識符(address space identifier,ASID)位元之間的互斥或函數構成。如此一來,在SMT執行緒上同時運行兩個相同的程式(例如,規範(specification,SPEC)速率)不太可能破壞快取。另外,來自同一進程的兩個執行緒不太可能彼此破壞,即使所述兩個執行緒的並列運行時系統(parallel runtime system)分配具有二次冪對齊的專有堆疊/堆(一些早期多執行緒運行時系統便為此種情形)。加擾索引函數存在許多選項供使用。所述加擾索引函數可能是一些ASID位元、一些更高位址位元及一些更低位址位元之間的互斥或函數,例如,INDEX[15-12] = VA[15-12] XOR VA{21,22,25,27} XOR ASID[3-0]。
使用此種加擾索引位元會促進對快取725使用4個額外的L1 VAT標籤位元,此乃因在INDEX[15-12]與VA [15-12]之間不再存在1:1映射。
MD快取中的新欄位SI(4) --(加擾索引)可儲存每一區的加擾索引[15-12]以允許外部請求對L1快取中的資料進行存取。
結合圖6闡述的步驟可採用各種次序來實行,且一些步驟可並列地或依序地實行。該些方法實施例、上述系統實施例及其他實施例可提供各種有益結果。舉例而言,已根據本發明概念的一或多個示例性實施例實行的詳細模擬研究已表明,與本發明概念的一或多個示例性實施例相關聯的快取構建方式與傳統的快取系統相較可節省大量能量且亦可使快取具有明顯更短的存取時間。
儘管出於清晰目的,本文中的大部分說明大體闡述了如何定位快取行並將快取行返回至發出請求的CPU的技術,然而對於熟習此項技術者而言將顯而易見,存在其中可對快取行內所包含的所請求字進行選擇並將所述字返回至CPU的各種方式。
為清晰起見,本文中闡述對快取層次結構的資料進行處置的大部分說明闡述了獨佔性快取層次結構。熟習此項技術者將理解本發明概念的示例性實施例中的一或多者可擴展至亦涵蓋包容性記憶體層次結構及非獨佔性記憶體層次結構。
儘管上述本發明概念的示例性實施例中的一或多者適用於單處理器系統及多處理器系統二者,例如以上分別參照圖1及圖2所示出及所闡述者,然而本發明概念的示例性實施例中的一或多者主要是與單處理器系統相關聯地示出。然而,熟習此項技術者將理解,與單處理器系統相關聯地示出的本發明概念的一或多個示例性實施例並不限於此種構建方式。舉例而言,儘管圖6至圖8出於簡潔目的而示出單個CPU,然而圖6至圖8所示計算機系統的任何或所有部分可為根據本發明概念至少一些示例性實施例的多處理器系統的一部分。
儘管以上在特定示例性計算機架構的上下文中進行闡述,然而在圖6至圖8所示示例性計算機系統內以及外部的諸多其他設定中亦存在快取,且熟習此項技術者將理解以上在計算機系統的上下文內闡述的本發明概念的至少一些示例性實施例亦可應用於該些其他上下文。該些使用情況的實例是自慢的大容量儲存裝置(例如磁碟或快閃記憶體)向較快且較小的大容量記憶體(其可使用動態RAM來構建)中快取資料的虛擬記憶體系統。在計算機系統中進行快取的其他實例包括但不限於磁碟快取、網頁快取及名稱快取。該些快取的組織及快取機制可與以上論述的快取的組織及快取機制不同,例如組的大小、組的構建方式及關聯性等發生變化。不論快取機制本身的構建方式如何,本發明概念的至少一些示例性實施例等同地適用於構建各種快取方案。
本申請案中提供的方法或流程圖可在計算機程式、軟體或者韌體中構建,所述計算機程式、軟體或者韌體是以有形方式實施於計算機可讀取儲存媒介中以由通用計算機或處理器執行。
由此已闡述了本發明概念的示例性實施例,顯然,本發明概念的示例性實施例可以諸多方式變化。該些變化不應被視為背離本發明概念的示例性實施例的預期精神及範圍,且對熟習此項技術者而言顯而易見,所有該些潤飾皆旨在包括於以下申請專利範圍的範圍內。
101、301、401‧‧‧中央處理單元(CPU)
102‧‧‧第一層階專有快取/L1快取/1層階快取
103‧‧‧第二層階快取/快取
104‧‧‧磁碟/輔助儲存裝置
105‧‧‧記憶體
200‧‧‧指令快取
201‧‧‧指令轉譯旁查緩衝器(ITLB)
202、501、511、521‧‧‧CPU核心
205、303‧‧‧資料轉譯旁查緩衝器(DTLB)
206‧‧‧資料快取
207‧‧‧2層階快取
208‧‧‧大容量記憶體/記憶體
302、502、512、522、722‧‧‧虛擬位址(VA)
304、308‧‧‧位址標籤(ATAG)
305‧‧‧物理頁訊框(PPF)
306、310、415、416‧‧‧多工器(MUX)
307、505、515、525、825‧‧‧L1快取
309‧‧‧資料
311、745‧‧‧L2快取
316‧‧‧物理位址(PADDR)
317‧‧‧L1未命中
318、319‧‧‧邏輯
402‧‧‧位址(ADDR)
410‧‧‧第一層階CLB CLB1/CLB-1
411、421‧‧‧位址標籤(AT)
412‧‧‧快取位置表/CLT
413‧‧‧區資訊
414、823‧‧‧位置資訊(LI)
417、418‧‧‧位址
420‧‧‧第二層階CLB CLB2/CLB2
422‧‧‧快取位置表(CLT)
423‧‧‧CLB1指針(CIP)
431‧‧‧快取行(DATA)
432、442‧‧‧後向指針(BP)
440‧‧‧L2快取/快取
441‧‧‧快取行(DATA)/資料單元
500‧‧‧帶物理索引、帶物理標籤的(PIPT)快取
503、513‧‧‧TLB
504、514‧‧‧INDEX(索引)
510‧‧‧帶虛擬索引、帶虛擬標籤的(VIPT)快取
520‧‧‧最頂部快取/L1
523‧‧‧位址標籤
524‧‧‧INDEX位元
602‧‧‧物理位址L2請求/L2請求
603‧‧‧位址位元
604‧‧‧索引位元
605‧‧‧快取
607、627‧‧‧快取行位置
608‧‧‧外部請求
621‧‧‧CPU核心
622‧‧‧虛擬位址
623‧‧‧VAT比較位元
624‧‧‧索引位元
625‧‧‧L1快取
640‧‧‧虛擬-物理位址轉譯器
725‧‧‧L1快取/L1-VIVT快取/快取
728‧‧‧快取行請求/請求/路徑
740‧‧‧最低層階元資料快取/MD快取
741‧‧‧CP
742、752‧‧‧索引資訊
746‧‧‧多工器
747、757‧‧‧比較
750‧‧‧L3快取
760、860‧‧‧外部請求
828‧‧‧請求/路徑
840‧‧‧MD快取
藉由參照附圖詳細闡述本發明概念的示例性實施例,本發明概念的示例性實施例的以上及其他特徵及優點將變得更顯而易見。所述附圖旨在繪示本發明概念的示例性實施例而不應被解釋為限制申請專利範圍的預期範圍。除非明確地注明,否則所述附圖不應被視為按比例繪示。
圖1是示出計算機系統的一部分的方塊圖。
圖2是用於闡釋計算機系統的示例性快取層次結構的方塊圖。
圖3是用於闡釋包括組關聯快取及組關聯資料轉譯旁查緩衝器(TLB)的二層階快取層次結構的傳統構建方式的方塊圖。
圖4是示出無標籤快取的示例性構建方式的方塊圖。
圖5是示出用於構建快取的三個選項的方塊圖。
圖6是用於闡釋根據本發明概念至少一些示例性實施例的二層階快取層次結構的構建方式的方塊圖,其中第一層階是帶虛擬索引、帶虛擬標籤的快取,且第二層階是帶物理索引、帶物理標籤的(PIPT)快取。
圖7是用於闡釋根據本發明概念至少一些示例性實施例的三層階快取層次結構的構建方式的方塊圖,其中第一層階是帶虛擬索引、帶虛擬標籤的VIVT快取,且第二層階及第三層階是無標籤帶物理索引、無標籤的PINT快取。
圖8是用於闡釋根據本發明概念至少一些示例性實施例的三層階快取層次結構的構建方式的方塊圖,其中第一層階是無標籤帶虛擬索引、無標籤的VINT快取,且第二層階及第三層階是無標籤帶物理索引、無標籤的PINT快取。
602‧‧‧物理位址L2請求/L2請求
603‧‧‧位址位元
604‧‧‧索引位元
605‧‧‧快取
607、627‧‧‧快取行位置
608‧‧‧外部請求
621‧‧‧CPU核心
622‧‧‧虛擬位址
623‧‧‧VAT比較位元
624‧‧‧索引位元
625‧‧‧L1快取
640‧‧‧虛擬-物理位址轉譯器
Claims (20)
- 一種多處理器系統,包括:多個節點及至少一個記憶體,每一節點包含至少一個處理器;第一快取,被配置成儲存多個第一快取行,所述第一快取是所述多個節點中的至少一個節點專有的;以及第二快取,被配置成儲存多個第二快取行,所述第二快取較所述第一快取處於更高的層階,其中所述第一快取行中的至少一者包括指向所述第二快取行中的一者的位置的第一關聯指針,其中所述第一快取行中的所述至少一者儲存所述第二快取行中的所述一者提供的資料,且其中所述第二快取行中的至少一者包括指向所述第一快取行中的一者的位置的第二關聯指針,其中所述第二快取行中的所述至少一者提供儲存於所述第一快取行中的所述一者的資料。
- 如申請專利範圍第1項所述的多處理器系統,其中因應於所述至少一個節點的所述至少一個處理器的資料請求在所述第一快取中造成快取未命中且在所述第二快取中造成快取命中,所述第一快取行中的新的快取行容納資料及指針,其中所述新的快取行的所述指針指向儲存有所述資料的第二快取行的位置。
- 如申請專利範圍第1項所述的多處理器系統,其中,所述第一快取是帶虛擬標籤的快取,所述第一快取行中的每一者包括虛擬標籤, 所述第二快取是帶物理標籤的快取,且所述第二快取行中的每一者包括物理標籤。
- 如申請專利範圍第1項所述的多處理器系統,其中所述第一快取是直寫快取,且因應於資料被寫入至所述第一快取行中的一者,所述資料亦被寫入至所述第二快取行中由所述資料所寫入的所述第一快取行中所設置的指針指向的一個第二快取行。
- 如申請專利範圍第1項所述的多處理器系統,其中所述第一快取是寫入無效化快取,且因應於所述第一快取行中的一個第一快取行對由所述至少一個節點的所述至少一個處理器實行的寫入無效化,所述第二快取行中由無效化的所述第一快取行中所設置的指針指向的一個第二快取行亦被更新成無效。
- 如申請專利範圍第1項所述的多處理器系統,其中所述第一快取是回寫快取,且因應於所述第一快取行中的一個第一快取行被寫入且是髒的,所述第二快取行中由髒的所述第一快取行中所設置的指針指向的一個第二快取行會:在髒的所述第一快取行被逐出時更新,或者被改變狀態以反映髒的所述第一快取行是不可讀取的。
- 一種用於系統的資料管理方法,所述系統包括至少一個節點,所述至少一個節點包括處理器,所述處理器被分配有第一 快取、第二快取及記憶體,所述第一快取儲存多個第一快取行且是所述至少一個節點專有的,且所述第二快取儲存多個第二快取行且較所述第一快取處於更高的層階,所述資料管理方法包括:將指向所述第二快取行中的一個第二快取行的位置的第一關聯指針儲存於所述第一快取行中的一個第一快取行中,其中所述第一快取行中的所述一個第一快取行儲存所述第二快取行中的所述一個第二快取行提供的資料;以及將指向儲存有所述第一關聯指針的所述第一快取行的位置的第二關聯指針儲存於由所述第一關聯指針指向的所述第二快取行中。
- 如申請專利範圍第7項所述的資料管理方法,更包括:向所述第一快取及所述第二快取請求資料;以及因應於在所述第一快取中出現快取未命中及在所述第二快取中出現快取命中,將所述資料及指針容納於所述第一快取行中的新的快取行中,其中所述新的快取行的所述指針指向儲存有所述資料的第二快取行的位置。
- 如申請專利範圍第7項所述的資料管理方法,更包括:因應於資料被寫入至所述第一快取行中的一個第一快取行,將所述資料寫入於由所述資料所寫入的第一快取行中所設置的指針指向的第二快取行。
- 如申請專利範圍第7項所述的資料管理方法,更包括:因應於所述第一快取行中的一個第一快取行對由所述處理器 實行的寫入無效化,將由在無效化的所述第一快取行中設置的指針指向的第二快取行無效化。
- 如申請專利範圍第7項所述的資料管理方法,更包括:因應於所述第一快取行中的一個第一快取行被寫入且是髒的,改變由髒的所述第一快取行中所設置的指針指向的第二快取行的狀態以反映髒的所述第一快取行是不可讀取的。
- 如申請專利範圍第7項所述的資料管理方法,更包括:接收由快取同調協定生成的外部請求;在所述第二快取中實行查找並選擇所述第二快取行中的一個第二快取行;以及存取由在所選擇的所述第二快取行中設置的指針指向的第一快取行。
- 如申請專利範圍第12項所述的資料管理方法,更包括:當所述外部請求是無效化請求時,將所存取的所述第一快取行及所選擇的所述第二快取行二者無效化。
- 如申請專利範圍第12項所述的資料管理方法,更包括:當所述外部請求是讀取請求時,讀取被儲存於所存取的所述第一快取行及所選擇的所述第二快取行中的至少一者中的資料。
- 如申請專利範圍第7項所述的資料管理方法,其中所 述處理器更被分配有虛擬-物理位址轉譯器,所述第一快取是帶虛擬標籤的快取且所述第二快取是帶物理標籤的快取,基於自所述處理器產生的資料請求中所包括的虛擬位址,在所述第一快取中實行查找;當所述資料在所述第一快取中未命中時,選擇所述第一快取行中的一者作為犧牲快取行並基於所述資料請求而自所述虛擬-物理位址轉譯器產生物理位址;以及基於所述物理位址而在所述第二快取中實行查找。
- 如申請專利範圍第15項所述的資料管理方法,其中所述物理位址包括所述犧牲快取行的位置。
- 一種包括計算機可執行指令的非暫態計算機可讀取儲存媒體,所述計算機可執行指令在由被分配有帶虛擬標籤的快取、帶物理標籤的快取及記憶體的至少一個處理器執行時使所述至少一個處理器實行包括以下的操作:將第一關聯指針儲存於被儲存於所述帶虛擬標籤的快取中的多個第一快取行中的一個第一快取行中,所述第一關聯指針指向被儲存於所述帶物理標籤的快取中的多個第二快取行中的一個第二快取行的位置,其中所述多個第一快取行中的所述一個第一快取行儲存所述多個第二快取行中的所述一個第二快取行提供的資料;以及將指向所述第一快取行中的一個第一快取行的位置的第二關聯指針儲存於所述第二快取行中的一個第二快取行中,其中所述 第二快取行中的所述一個第二快取行提供儲存於所述第一快取行中的所述一個第一快取行的資料。
- 如申請專利範圍第17項所述的非暫態計算機可讀取儲存媒體,其中所述操作更包括:因應於資料被寫入至所述第一快取行中的一個第一快取行,將所述資料寫入於由所述資料所寫入的第一快取行中所設置的指針指向的第二快取行。
- 如申請專利範圍第17項所述的非暫態計算機可讀取儲存媒體,其中所述操作更包括:因應於所述第一快取行中的一個第一快取行對由所述至少一個處理器實行的寫入無效化,將由在無效化的所述第一快取行中設置的指針指向的第二快取行無效化。
- 如申請專利範圍第17項所述的非暫態計算機可讀取儲存媒體,其中所述操作更包括:因應於所述第一快取行中的一個第一快取行被寫入且是髒的,改變由髒的所述第一快取行中所設置的指針指向的第二快取行的狀態以反映髒的所述第一快取行是不可讀取的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762588720P | 2017-11-20 | 2017-11-20 | |
US62/588,720 | 2017-11-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201923592A TW201923592A (zh) | 2019-06-16 |
TWI784085B true TWI784085B (zh) | 2022-11-21 |
Family
ID=64402076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107141175A TWI784085B (zh) | 2017-11-20 | 2018-11-20 | 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11023376B2 (zh) |
EP (1) | EP3486786B1 (zh) |
KR (1) | KR102151180B1 (zh) |
CN (1) | CN109815167A (zh) |
TW (1) | TWI784085B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10761988B2 (en) * | 2018-07-25 | 2020-09-01 | Arm Limited | Methods and apparatus of cache access to a data array with locality-dependent latency characteristics |
US11194718B2 (en) * | 2019-07-24 | 2021-12-07 | Arm Limited | Instruction cache coherence |
US11321344B2 (en) * | 2019-09-20 | 2022-05-03 | Sap Se | Virtual database tables with updatable logical table pointers |
KR20220066741A (ko) | 2020-11-16 | 2022-05-24 | 삼성전자주식회사 | 스토리지 장치 및 그 동작 방법 |
TWI774183B (zh) * | 2021-01-08 | 2022-08-11 | 瑞昱半導體股份有限公司 | 具有位址打亂機制的記憶體存取裝置及其記憶體存取方法 |
KR20220132339A (ko) * | 2021-03-23 | 2022-09-30 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
KR102570030B1 (ko) * | 2023-04-19 | 2023-08-28 | 메티스엑스 주식회사 | 멀티프로세서 시스템 및 이의 데이터 관리 방법 |
KR102641481B1 (ko) * | 2023-04-19 | 2024-02-28 | 메티스엑스 주식회사 | 멀티프로세서 시스템 및 이의 데이터 관리 방법 |
CN117331853B (zh) * | 2023-10-11 | 2024-04-16 | 上海合芯数字科技有限公司 | 缓存处理方法、装置、电子设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8195890B1 (en) * | 2006-08-22 | 2012-06-05 | Sawyer Law Group, P.C. | Method for maintaining cache coherence using a distributed directory with event driven updates |
US20160092359A1 (en) * | 2013-09-26 | 2016-03-31 | International Business Machines Corporation | Multi-granular cache management in multi-processor computing environments |
US20160179700A1 (en) * | 2014-12-22 | 2016-06-23 | Texas Instruments Incorporated | Hiding Page Translation Miss Latency in Program Memory Controller By Selective Page Miss Translation Prefetch |
TW201638774A (zh) * | 2015-04-23 | 2016-11-01 | 上海芯豪微電子有限公司 | 一種基於指令和資料推送的處理器系統和方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US1021009A (en) * | 1910-05-14 | 1912-03-26 | Noah Q Speer | Sand-washing apparatus. |
JP2839060B2 (ja) * | 1992-03-02 | 1998-12-16 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理システムおよびデータ処理方法 |
JP4006445B2 (ja) * | 2002-11-21 | 2007-11-14 | 富士通株式会社 | キャッシュ制御方法及びプロセッサシステム |
US8656083B2 (en) * | 2007-12-21 | 2014-02-18 | Spansion Llc | Frequency distributed flash memory allocation based on free page tables |
EP2441005A2 (en) * | 2009-06-09 | 2012-04-18 | Martin Vorbach | System and method for a cache in a multi-core processor |
WO2013058745A1 (en) * | 2011-10-18 | 2013-04-25 | Soft Machines, Inc. | Methods and systems for managing synonyms in virtually indexed physically tagged caches |
WO2013084315A1 (ja) * | 2011-12-07 | 2013-06-13 | 富士通株式会社 | 演算処理装置、及び、演算処理装置の制御方法 |
US9110830B2 (en) * | 2012-01-18 | 2015-08-18 | Qualcomm Incorporated | Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods |
US9916253B2 (en) * | 2012-07-30 | 2018-03-13 | Intel Corporation | Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput |
US9558121B2 (en) * | 2012-12-28 | 2017-01-31 | Intel Corporation | Two-level cache locking mechanism |
US9323774B2 (en) * | 2013-05-03 | 2016-04-26 | Nvidia Corporation | Compressed pointers for cell structures |
US9535700B2 (en) * | 2013-06-14 | 2017-01-03 | Arm Limited | Data processing systems |
GB2516477A (en) * | 2013-07-24 | 2015-01-28 | Ibm | Method and system for handling virtual memory address synonyms in a multi-level cache hierarchy structure |
US9229866B2 (en) * | 2013-11-25 | 2016-01-05 | Apple Inc. | Delaying cache data array updates |
US10409725B2 (en) | 2014-05-29 | 2019-09-10 | Samsung Electronics Co., Ltd. | Management of shared pipeline resource usage based on level information |
CN108475234B (zh) * | 2015-11-04 | 2022-07-12 | 三星电子株式会社 | 多处理器系统及其方法 |
-
2018
- 2018-11-16 KR KR1020180141959A patent/KR102151180B1/ko active IP Right Grant
- 2018-11-19 CN CN201811375097.9A patent/CN109815167A/zh active Pending
- 2018-11-20 TW TW107141175A patent/TWI784085B/zh active
- 2018-11-20 US US16/196,086 patent/US11023376B2/en active Active
- 2018-11-20 EP EP18207242.1A patent/EP3486786B1/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8195890B1 (en) * | 2006-08-22 | 2012-06-05 | Sawyer Law Group, P.C. | Method for maintaining cache coherence using a distributed directory with event driven updates |
US20160092359A1 (en) * | 2013-09-26 | 2016-03-31 | International Business Machines Corporation | Multi-granular cache management in multi-processor computing environments |
US20160179700A1 (en) * | 2014-12-22 | 2016-06-23 | Texas Instruments Incorporated | Hiding Page Translation Miss Latency in Program Memory Controller By Selective Page Miss Translation Prefetch |
TW201638774A (zh) * | 2015-04-23 | 2016-11-01 | 上海芯豪微電子有限公司 | 一種基於指令和資料推送的處理器系統和方法 |
CN106066787A (zh) * | 2015-04-23 | 2016-11-02 | 上海芯豪微电子有限公司 | 一种基于指令和数据推送的处理器系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
KR102151180B1 (ko) | 2020-09-02 |
US11023376B2 (en) | 2021-06-01 |
US20190155733A1 (en) | 2019-05-23 |
CN109815167A (zh) | 2019-05-28 |
TW201923592A (zh) | 2019-06-16 |
KR20190058317A (ko) | 2019-05-29 |
EP3486786B1 (en) | 2022-01-26 |
EP3486786A1 (en) | 2019-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI784085B (zh) | 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體 | |
US10402344B2 (en) | Systems and methods for direct data access in multi-level cache memory hierarchies | |
US11615026B2 (en) | Systems and methods for implementing coherent memory in a multiprocessor system | |
TWI784084B (zh) | 資料管理方法、多處理器系統以及非暫態電腦可讀取儲存媒體 | |
US10031849B2 (en) | Tracking alternative cacheline placement locations in a cache hierarchy | |
TW201937372A (zh) | 多處理器系統、資料管理方法以及非暫態電腦可讀取儲存媒體 | |
US11354242B2 (en) | Efficient early ordering mechanism | |
TWI795470B (zh) | 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體 | |
JP6027562B2 (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
Goel et al. | E-cache memory becoming a boon towards memory management system |