TWI768039B - 多處理器系統、資料管理方法及非暫時性電腦可讀媒體 - Google Patents
多處理器系統、資料管理方法及非暫時性電腦可讀媒體 Download PDFInfo
- Publication number
- TWI768039B TWI768039B TW107115139A TW107115139A TWI768039B TW I768039 B TWI768039 B TW I768039B TW 107115139 A TW107115139 A TW 107115139A TW 107115139 A TW107115139 A TW 107115139A TW I768039 B TWI768039 B TW I768039B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- node
- location
- buffer
- clb
- 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
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0893—Caches characterised by their organisation or structure
-
- 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/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- 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/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- 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/60—Details of cache memory
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- 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)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Hardware Redundancy (AREA)
Abstract
資料單元儲存於多處理器系統的節點的專用快取,各節
點包含至少一個處理器、節點專用的至少一個快取以及節點專用的至少一個快取位置緩衝器。在各快取位置緩衝器中儲存位置資訊值,各位置資訊值指示與相應資料單元相關聯的位置,其中儲存於給定快取位置緩衝器的各位置資訊值指示位置在與給定快取位置緩衝器設置於同節點的專用快取內位置、其它節點之一中的位置或主記憶體的位置。用快取一致性協定維持資料單元的值的一致性。通過快取一致性協定根據相應資料單元的移動更新儲存在快取位置緩衝器的位置資訊值。
Description
本文所揭露的主題的實施例大體涉及用於存取電腦記憶體裝置中的資料的方法和系統,且更具體地說,涉及用於實施一致性快取層次的機制和技術。
如今的處理器常常配備有可以儲存資料和指令的複本的快取,所述資料和指令儲存於一些大量存放區中。如今的此類大量存放區的風行實例為動態隨機存取記憶體(dynamic random access memory;DRAM)。在本文中,術語“記憶體”將用來共同地指代所有現有及將來的記憶體實施方案。快取記憶體或簡稱為“快取”通常是由相比其它記憶體實施方案小得多及快得多的記憶體構建,且隨後可在任何給定時間僅保持一部分儲存在主記憶體或輔助儲存裝置中的資料的複本。如今,常使用SRAM來實施快取且可使用DRAM來實施大型快取。本文所描述的快取可使用
任何現有及將來的記憶體技術來實施。
通常,電腦系統的記憶體系統包含一系列快取,其中較大及較慢快取(此處被稱作較高級快取)接近主記憶體,且較小及較快快取(此處被稱作較低級快取)更接近處理器。這種配置通常被稱作快取層次、記憶體層次或記憶體系統。快取層次中的每一級別被稱作快取級別。圖1描繪電腦系統,其中為每一處理器(CPU)101指配其自有的1級專用快取102(L1快取)。專用快取是其中用於資料單元的空間僅可能對在快取本地的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,並產生從對應於所述頁面的虛擬位址到物理位址的轉譯。通常被稱為“轉譯後備緩衝器”或簡稱為TLB的一類特殊的轉譯快取(圖1中未繪示)對從虛擬頁面到物理頁面的轉譯映射進行快取。虛擬記憶體系統可被視為快取系統,其將位於磁碟104中的資料的一部分儲存在記憶體105中。
圖2繪示來自圖1的快取組織的更詳細視圖,其中CPU 204經繪示為含有若干快取類結構,如指令TLB(ITLB,201)及資料TLB(DTLDB,205)以及CPU核心202。1級快取102經繪示為包含插入在CPU 204與2級(且潛在地較高級)快取207之間的指令快取200及資料快取206。圖2還繪示連接到快取層次的大量存放區208。
當CPU 204請求存在於快取中的資料(其被稱作快取命中)時,可相比對不存在於快取中的資料的存取而更快地為所述請求提供服務,其被稱作快取未命中。通常,假設兩個版本的應用程式另外具有類似特性,相比相同應用程式遭受更多快取未命中的情況,在經歷更少快取未命中的CPU 204上運行的應用程式將更快地執行並消耗較少能量。因此,已將相當大的努力投入在
用於避免快取未命中的技術中,並且還設計出可使快取命中及快取未命中相對于其存取時延及這些記憶體事務所消耗的能量高效的實施方案。
為了理解如何開發對此快取命中/未命中問題的解決方案,對快取組織及技術的部分理解將是有用的。通常,資料安設到比處理器的字長大的固定區塊中的快取(被稱為快取線)中。如今的共同快取線大小為(例如)32、64及128個位元組,但如所屬領域的技術人員將瞭解,針對各種快取實施方案存在較大及較小的快取線大小。快取線大小對於一些快取實施方案來說也可以是可變的。
組織記憶體208中的資料放置的常見方式是將每一資料字靜態地映射為駐留在一個特定快取線的方式。每一快取通常具有索引功能,其識別每一快取線可駐留的快取的一部分(被稱為集合)中。所述集合可含有同時保持一或多個快取線的空間。所述集合可保持的快取線的數量被稱作其關聯性。通常,快取中的所有集合的關聯性是相同的。此類快取常常被稱作集合相聯快取。關聯性還可在集合之間變化。集合中的可保持快取線的每一個空間被稱作路徑。
為了確定儲存于每個集合中的每個快取線的身份,快取中的快取線各自具有與其相關聯的一些識別符。此類識別符的一個常見實例是位址標籤。在查找快取中的特定快取線時,其位址可用於確定所述特定快取線可能駐留的快取的集合。將對應集合
的快取線的位址標籤與用於識別快取線的位址的標籤部分(參見例如圖3所描繪及下文所描述的標籤(TAG)及ATAG),以確定所需快取線是否駐留在快取中,且若如此,則確定其所駐留的途徑,即,其駐留在可保持快取線的集合中的哪個空間中。
通常,每一快取具有內置策略以確定哪一快取線保持在集合中且將收回哪一快取線(還被稱作替換),以使新快取線的空間進入集合中,被稱作其替換策略。所替換的快取線被稱為犧牲或替換快取。與快取記憶體結合使用的常用替換策略包含但不限於:最近最少使用(least-recently used;LRU)策略、偽-LRU策略及隨機替換策略。
所謂的包含性快取層次要求存在於一個快取級別中的資料塊(例如快取線)的複本(例如L1快取中的資料塊)也存在於較高級快取級別中(此處,較高是指具有比1大的編號的快取級別),例如存在於2級(L2)及3級(L3)快取中。排它性的快取層次僅具有存在於整個快取層次的資料塊(例如快取線)的一個複本,而非包含性層級可具有兩種策略的混合。在排它性及非包含性快取層次中,常見的是,在從給定快取級別收回後,快取線安設在下一較高快取級別中。
出於對關於快取及快取線的這種背景的考慮,此論述現繼續進行以說明一種用於識別快取層次(如同圖1及圖2中所繪示的快取層次)內的特定快取位置的常規技術。圖3繪示含有CPU 301、DTLB 303、L1快取307及L2快取311的電腦系統節點的組
織的實例。CPU 301產生含有虛擬位址302(VADDR)的記憶體請求,其用於在DTLB 303中執行相聯查找。在此實例中,虛擬位址302分成三個部分:P_OFFSET(頁面偏移,例如由低級位元組成)、TAG及索引(INDEX)。虛擬位址302的INDEX部分用於識別可儲存位址轉譯的DTLB 303內的集合。
此實例中所使用的所說明DTLB 303具有雙途徑相聯組織,其示出所識別集合中的兩個條目。每一條目由位址標籤(address tag;ATAG)304及物理頁框(physical page frame;PPF)305組成。將虛擬位址302的標籤部分與所識別集合中的每一條目的ATAG 304相比較。邏輯318確定是否存在對於任何條目的匹配,並且若如此,則控制多工器(MUX)306選擇對應PPF 305。物理位址PADDR 316通過將由MUX 306所選擇的PPF 305與虛擬位址302的P_OFFSET部分串接組成。替代地,如果所識別集合中的條目無一者與虛擬位址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中查找。雖然將PADDR 316劃分成用於L2快取查找的INDEX部分及TAG部分可能不同於為L1快取查找所進行的劃分,但用於L2快取查找的剩餘步驟通常類似於針對L1快取中的查找所執行的步驟。如果確定L2快取中的未命中,那麼可能需要在較高級快取中的新查找或對記憶體的存取。可注意,如果L1快取所使用的PADDR 316的INDEX部分完全由P_OFFSET位元組成,那麼可在來自MUX 306的PPF資訊可用之前開始對L1快取307的存取。這常被稱作虛擬索引物理標籤快取(virtually indexed,physically tagged;VIPT)。
本領域的技術人員將瞭解,若干“節點”(其各自具有與圖3中所描繪的記憶體層次類似的記憶體層次)可連接在一起以形成一致性多處理器系統。多處理器的另一實例繪示於圖1中,其中每一CPU具有其自有的專用L1快取。這進一步使定位所請求資料的駐留位置的任務變複雜,是因為其不再足以一直搜索下一較高快取級別中的資料。需要用於搜索其它節點的快取以及用於保持儲存於不同節點中的資料的多個複本一致性的機制。
為概述與圖3相關聯的論述,所屬領域的技術人員應瞭解,快取層次的當代實施方案可能需要可在確定所請求快取線的位置之前在TLB中以及在不同快取級別下執行相聯查找。此外,每一轉譯條目及經快取的快取線需要配上位址標籤,且多個這些
標籤需要在這些級別中的每一級別下與位址的一部分相比較。大體上,這種實施方案在用於每一相聯查找的動態能量的方面付出巨大代價。其還需要在靜態能量及記憶體容量方面的實質開銷,以儲存執行比較所需要的額外標籤資訊。此外,含有若干CPU或若干節點的多處理器(其各自具有自有的專用快取層次)需要用於定位駐留在專用快取中的資料以及保持專用快取中的同一日期的複製複本一致性的昂貴一致性活動的需要的額外昂貴搜索機制。
因此,將期望提供避免與對資料的快取查找相關聯的前述問題及缺點的系統和方法。
[用於基於地點資訊實施一致性記憶體的系統和方法]
根據實施例,資料單元儲存於多處理器系統的節點中的專用快取中,每一節點含有至少一個處理器(CPU)、節點專用的至少一個快取以及節點專用的至少一個快取位置緩衝器(CLB)。在每一CLB中儲存位置資訊值,每一位置資訊值指示與相應資料單元相關聯的位置,其中儲存於給定CLB中的每一位置資訊值指示所述位置是在與給定CLB設置於同一節點中的專用快取內的位置,是在其它節點中的一個節點中的位置,或是在主記憶體中的位置。使用快取一致性協定維持資料單元的值的一致性。通過快取一致性協定根據位置資訊值的相應資料單元的移動來更新儲存
在CLB中的位置資訊值。
根據實施例,下文涵蓋並描述用於實施上述方法的系統。
[用於實施促進附近全域快取的一致性記憶體的系統和方法]
根據實施例,一種方法將資料單元儲存在多處理器系統的節點中的專用快取中及全域快取中以及記憶體中,其中每一節點含有至少一個處理器(CPU)、節點專用的至少一個快取。使用快取一致性協定維持儲存在專用快取及全域快取中的資料單元的值的一致性,所述快取一致性協定在儲存資料單元的地點資訊的目錄中執行查找。位置資訊將資料單元所駐留的位置識別為以下中的一個:節點、全域快取或記憶體。
根據實施例,下文涵蓋並描述用於實施上述方法的系統。
[用於通過封堵一致性實施一致性記憶體的系統和方法]
根據實施例,資料單元儲存在多處理器系統的節點中的專用快取中及全域快取中以及記憶體中,其中每一節點含有至少一個處理器(CPU)、節點專用的至少一個快取。節點經由網路連接。通過在網路上發送一致性消息的分散式快取一致性協定維持儲存在快取中的資料單元的值的一致性。阻止一些一致性消息在網路上發送。如果其它一致性消息是用於與一致性消息相同的位址區域,那麼所發送的一致性資訊觸發封堵功能以封堵其它一致性消息。
根據實施例,下文涵蓋並描述用於實施上述方法的系統。
101、204、301、401、501、511、610、710:處理器
102、200、206、307、430、504、514、620、640、692、694:1級快取
103、207、311、440、523:2級快取
104:磁碟
105、208、680:記憶體
200:指令快取
201:指令轉譯後備緩衝器
202、301:處理器核心
205、303:資料轉譯後備緩衝器
206:資料快取
208:大量存放區
302:虛擬位址
304、308、312、411、421、661:位址標籤
305:物理頁框
306、310:多工器
309、313:資料
316:物理位址
317:L1未命中
318、319:邏輯
402、417、418:位址
410、503、513、610、691:快取位置緩衝器1
412、422、662、712:快取位置表
413、425、663:區域資訊
414:位置資訊
415、416:多工器
420:快取位置緩衝器2
423:快取位置緩衝器1指針
432、442:後向指針
431、441:快取線
315、505:資料
570、571:箭頭
580、590、601、690、699、701、771、790、799:節點
612:快取位置表格欄位
641、671、773、774:位置
650、750:片上網路
660、760:目錄
670:全域末級快取
630、691、693:快取位置緩衝器
663:區域資訊欄位
710、791:快取位置緩衝器-1
630、693、730:快取位置緩衝器-X
745、772、779:末級快取切片
774:資料單元
775、776、777:替換計數器
800、1400、1500:方法
802、804、806、808、901、902、903、904、1001、1002、1003、1004、1005、1006、1007、1008、1009、1010、1101、1102、1103、1104、1105、1106、1107、1108、1109、1110、1111、1112、1113、1201、1202、1203、1204、1205、1206、1207、1208、1209、1210、1301、1302、1303、1304、1305、1306、1307、1308、1309、1310、1311、1402、1404、1406、1502、1504、1506、1508:步驟
併入到說明書中並且構成說明書的一部分的附圖說明了一個或多個實施例,並且連同描述一起闡釋這些實施例。在圖中:圖1是多處理器系統的框圖。
圖2是單一處理器系統快取層次的框圖。
圖3說明由集合相聯快取及集合相聯資料轉譯後備緩衝器組成的兩級快取層次的常規實施方案。
圖4是說明包含兩級快取層次及兩級CLB層次的實施例的框圖,其中以虛擬方式存取第一級且以物理方式存取第二級。
圖5是說明包含連接到兩級快取層次和兩級CLB層次的兩個CPU的實施例的框圖。
圖6是說明根據實施例的具有單一整體式末級快取的一般化無標籤快取層次的框圖。
圖7是說明根據實施例的具有末級快取的許多切片的一般化無標籤快取層次的框圖。
圖8是說明方法實施例的流程圖。
圖9至圖13描繪根據實施例的一起實施用於資料一致性和CLB一致性的集成一致性方案的局部和全域活性的順序。
圖14至圖15是說明方法實施例的流程圖。
實施例的以下描述參考附圖。不同圖中的相同參考標號標識相同或類似的元件。以下詳細描述並不限制本發明。實際上,本發明的範圍由所附權利要求書界定。為簡單起見,論述關於特定快取層次的術語及結構以及用於在此類層次中執行查找的方法的一些以下實施例。然而,隨後將論述的實施例不限於這些配置,但可延伸到如稍後論述的其它佈置。
說明書中各處提到“一個實施例”或“一實施例”意味著結合一實施例描述的特定特徵、結構或特性包含在所揭示的主題的至少一個實施例中。因此,短語“在一個實施例中”或“在一實施例中”在說明書各處的出現並不一定需要指代相同實施例。另外,特定特徵、結構或特性可以任何合適方式組合在一或多個實施例中。
在以下描述中,大量細節提供對實施例的透徹理解。這些細節包含功能塊及示範性快取位置緩衝器CLB以用於實施對傳統快取標籤方案的高效替代。此外,雖然參考特定快取及電腦架構描述了實施例的CLB方案,但所述實施例適用於大範圍記憶體及系統架構。在其它情況下,並未詳細描述眾所周知的電路及結構,以免不必要地混淆實施例。
根據本文所描述的各種實施例,除了其它以外,方法和
系統提供明確儲存位置資訊(location information;LI)的快取處理方案(cache handling scheme;CHS)。LI是用來高效地存取具有主記憶體及一或多個處理器的電腦系統的多路快取。CHS追蹤所謂快取層次的內容,但由於本文所描述的一些特徵的性質,記憶體系統的拓撲未必需要是層次。通過快取位置緩衝器(CLB)或CLB的部分層次執行追蹤。快取包含多個快取線,其分成對應於途徑的數量的多個片段。
根據實施例,代替丟棄每次已知的可用位置資訊,在層次中的級別之間及在節點之間移動快取線,將位置資訊儲存(例如更新)在CHS中並用於稍後的快取存取。以相聯途徑組織CLB。因此,每一CLB條目包含位址標籤欄位及與所述位址標籤欄位相關聯的多個LI,但根據其它實施例,其它用於儲存位置資訊的技術是可能的。隨後,儲存於CLB中的位置資訊可用於快速存取所請求資料的位置而不需要另外的相聯查找。更確切地說,CLB提供可自其確定適宜快取身份以及快取內的適宜位置的位置資訊LI而不需要存取快取的任何位址標籤。LI還可將遠端節點識別為相聯資料的位置。因此,使用根據這些實施例的技術,可更快速地在快取層次中並以消耗較少能量的方式找到所請求資料。所描述技術還使得更靈活及較少層次的快取拓撲能夠高效地實施。
對於由具有相同關聯性的集合相聯快取組成的快取層次來說,每一LI中的位的數量取決於途徑的數量、不同快取的數量以及由CLB覆蓋的節點的數量。可保留一些LI值以儲存具有某
些硬解碼含義的某些圖案。舉例來說,可為記憶體圖案保留一個LI值,意味著資料不在由CHS覆蓋的記憶體層次的一部分中。在一個實施方案中,假設節點的數量小於所識別的快取的數量乘以途徑的數量,LI位的數量等於途徑的數量加上由CLB覆蓋的快取的數量加1的對數底2(即log2(途徑+級別+1))。如果不同快取級別的途徑的數量變化或如果使用除集合相聯快取以外的快取,那麼所屬領域的技術人員應瞭解,其它LI表示是可能的。
可例如如下根據實施例大體執行通過CHS經由CLB存取快取。在接收到目標快取線的位址後,CLB嘗試匹配一個快取位置條目(cache location entry;CLE)的位址欄位,所述快取位置條目在其中儲存位址的TAG部分。如果存在匹配,那麼使用位址的LI偏移部分檢索CLB條目的LI。CHS使用LI值及位址的索引部分直接索引到快取的單一快取線中。因此,快取並不需要儲存任何位址標籤資訊。
因此,根據實施例,系統(如圖1及圖2中所說明的系統)還可包含如本文所描述的快取處理方案(CHS)。所述方案包含快取位置緩衝器(CLB)或跟蹤儲存於快取層次中的資料單元的位置的CLB的層次。每當資料單元在快取層次中移動時,其新位置記錄在CLB中。
根據此類實施例的CLB可實施為相聯組織,其儲存多個快取位置條目(CLE)。每一CLE含有用於相聯查找的位址標籤及一些有效載荷(例如,儲存多個位置資訊(LI)的快取位置表
(cache location table;CLT))。實際上,CLB自身可被視為儲存位置資訊的快取。
為說明各種實施例的這些及其它特徵,現將參考圖4到圖15描述此類實施例。為清楚起見,所屬領域的技術人員應瞭解,這些圖說明實施例的邏輯實施方案而非實際物理實施方案。因此,所屬領域的技術人員應理解,這些圖繪示實施方案的邏輯表示且物理實施方案在其實施細節方面可實質上不同。
在一個實施例中,所追蹤的資料單元對應於快取線,且以集合相聯方式組織儲存所述資料單元的快取。
在一個實施例中,對應於匹配CLE的所請求快取線的位置資訊(LI)可指示所請求快取線駐留在哪一快取中。這將引起實施例在適當快取處執行直接快取查找。舉例來說,在圖4中所繪示的系統(其可為多處理器系統中的節點)中,位置資訊可區分L1快取與L2快取。其還可能夠區分存在於此圖中未繪示的多處理器系統剩餘部分中的其它快取。圖4繪示無標籤節點,其可連接到具有集合相聯快取的兩級快取層次及CPU(其可含有一或多個傳統快取,此處描繪為0級(L0))的多處理器系統中的其它節點,其中CPU 401產生位址(ADDR)402。圖4還繪示集合相聯CLB的兩級CLB層次,其中利用ADDR索引CLB1 410及CLB2 420。CLB1中的每一條目由至少一個位址標籤(AT)411、快取位置表(CLT)412組成。其可儲存額外資訊,如區域資訊(region information;RI)413。CLT儲存對應區域(還被稱作微頁面)的
快取線的位置資訊(LI)。圖4繪示每個區域四個LI作為一實例。發明人的經驗研究示出每個區域8到16個LI(即每個區域8到16個資料單元(快取線))是有成本效益的及高效的。位置資訊編碼其中可在多處理器系統內找到對應快取線的位置。位置資訊可例如含有其中可找到資料單元的快取的身份。位置資訊還可含有在可在其中找到資料單元的所述快取內的位置。替代地,位置資訊可含有可在其中找到資料單元的節點的身份或含有提供關於其位置的資訊的一些符號,例如符號“MEM”指示可在記憶體中找到資料單元。在一個實施例中,符號“不知道”指示對應資料單元的位置並未記錄在對應於區域的CLT中。
MUX 416選擇其中AT 411匹配ADDR 402的TAG部分的CLT且MUX 415基於ADDR 402的L-OFFSET(LI偏移)部分選擇對應於所請求快取線的LI 414。如果儲存於所選擇LI中的快取身份對應於L2快取440,那麼用於存取L2快取440中的所請求資料單元的位址417使用位址402的INDEX部分及位置資訊414的一部分形成。在集合相聯L2快取440的實例中,所述部分含有對應於其中儲存所請求資料單元的相聯途徑的資訊。如果儲存於所選擇LI中的快取身份對應於L1快取430,那麼用於存取L1快取430中的所請求資料單元的位址418形成於類似途徑中。
圖4繪示其中L1快取430及L2快取440中的每一條目分別具有與其快取線(DATA)431及快取線(DATA)441分別相關聯的後向指針(BP)432及後向指針(BP)442的實施例。在
此實例中,BP指標指向其在CLB2 420中的相應相關聯CLE。CLB2 420中的每一CLE含有位址標籤(AT)421、CLT 422以及CLB1指標(CIP)423。如果CLB2條目具有駐留在CLB1 410中的對應CLT,其CIP將指向所述條目。在所述情況下,CLB1 410將含有此區域的最新資訊。在所述情況下,CLB1中的CLE被稱為有源CLB條目,而CLB2 420中的區域的CLB條目含有無源條目。在一個實施例中,如果CLB1 410含有區域的有源條目,那麼要求CLB2 420含有區域的無源條目。
在一個實施例中,當未在CLB1 410中找到匹配的CLE時,在CLB2 420中查找對應CLE並複製到CLB1,而CLB1中的舊條目複製到CLB2 420,其被稱為溢出及填充或簡稱為溢出/填充(圖4中的溢出及填充)。例如,在傳統包含性快取將資料單元收回到下一級別時另外執行溢出,以為新資料單元騰出空間,其可自下一快取級別帶來(填充)。將在不同CLB級別之間執行類似溢出/填充活動,其中CLB條目在CLB級別之間移動,是因為CLB級別形成包含性層次。在一個實施例中,目錄DIR處於CLB層次及具有最高級CLB的溢出/填充的根部。
有可能在溢出/填充活動的同時起始對所請求資料單元的存取。
在一個實施例中,保持多級CLB實施方案的CLB的內容與其管理的多級快取系統的資料單元的位置一致。在快取層次中移動的資料單元(包含但不限於由對於來自CPU的資料單元的
請求、收回資料單元、預取活動及一致性活動引起的移動)引起在一個或多個CLB中對其對應位置資訊的更新。舉例來說,在圖4中,從快取440中收回資料單元441可涉及以下步驟:跟隨其相關聯BP 442指針以找到其對應CLE(其在此實例中處於CLB2 420中)及更新其對應位置資訊以指向資料單元的新位置(例如儲存MEM符號)。並且,如果對應CLB2的CLE的CIP指針有效,那麼跟隨CIP找到其在CLB1 410中的對應CLE及更新其與快取線相關聯的位置資訊。在一個實施例中,如果存在有效CIP指標,那麼不更新CLB2中的條目。在一個實施例中,僅更新有源CLT。
如將從前文瞭解,使用根據這些實施例的無標籤快取系統(即,儲存在快取中的資料單元不具有與其相關聯的位址標籤的快取系統)將產生多個不同類型的事務,其將在由CPU 401請求位於不同儲存裝置中的各種高速存取線時出現。圖4中所描繪的節點可為由若干此類快取節點構成的較大多處理器系統的子系統(或節點)。保持快取的資料在許多節點中一致性需要(例如)實施偵聽或基於目錄的一致性的快取一致性協定。一致性協定將發送一致性請求到圖4中描繪的節點(外部請求)。這些請求通常將轉到CLB2 420,其可確定此快取系統不具有所請求的快取線(CLB2未命中或CLB2命中到具有無源CIP及保持值記憶體圖案的所請求快取線的位置資訊的條目)。若如此,則不需要關於資料快取L1及資料快取L2的另外行為(被稱為一致性濾波),雖然如此,但有源CLT中的對應LI可能需要更新以追蹤與資料單元相關
聯的新位置。否則,CLB2查找可提供所請求位置資訊(CLB2命中及保持儲存快取線的位置的所請求快取線的位置資訊),或其可確定CLB1 410儲存相關聯位置資訊(CLB2命中及有效CIP)。在後一種情況下,需要在CLB1 410中查找以確定所請求快取線的位置或確定快取線不駐留在此快取子系統中。(CLB1中的對應位置資訊含有記憶體圖案)。取決於一致性請求(例如失效請求、讀取請求或排它性讀取請求)的性質,一致性協定將對所請求資料單元執行一些操作且可能改變其狀態。有源CLT中的對應LI還可能需要更新以追蹤與資料單元相關聯的新位置。
即使圖4中所繪示的節點由兩個快取級別組成,但本領域的技術人員將理解,節點可使用其它數量的級別來裝配且可含有超過一個CPU。此外,節點中的快取級別的數量及CLB級別的數量不需要是相同的。
實施例還可應用於具有若干共用CLB所管理的快取的CPU的系統上。舉例來說,圖5繪示根據實施例的從兩個CPU節點(CPU節點580及CPU節點590)構建的系統,各節點在其自有的具有一個CLB1(CLB1 503及CLB1 513)及專用快取L1快取(L1快取504及L1快取514)的一級快取層次內。所述系統還含有全域共用L2快取523(有時被稱作末級快取LLC),其在兩個CPU 501、511之間共用。
CLB1(513或503)中的查找基於由其相應CPU(501、511)產生的位址(例如使用類似於CLB1 410的技術)來選擇單
一LI。如由CLB1A 503及CLB1B 513中的兩個示出CLT條目所起始的三個箭頭指示,所選擇LI可識別所述位置是在對應L1快取(分別為L1快取504及L1快取514),在L2快取523中或在另一節點(分別由570及571示出)中。在此實例中,CLB1A 503在共用L2 523中將其存取的資料識別為505,而CLB1A 503在其L1 514中將其存取的資料識別為505(由實線箭頭繪示)。
圖6繪示無標籤多處理器記憶體系統的概括圖片。此實例由範圍從節點-1 601到節點-N 699的N個節點組成。每一節點具有X個級別的CLB及Y個級別的專用快取(即,節點專用的快取)。所述節點通過片上網路(network on chip;NoC)650電路彼此連接在一起。NoC 650還將節點連接到目錄(DIR)660、全域末級快取(last level cache;LLC)670及記憶體680。DIR 660以CLB類似方式組織並具有由至少位址標籤(AT)661及快取位置表(CLT)662組成的條目。條目還可含有額外資訊,如區域資訊(RI)663,其在下文得以更詳細描述。節點中的最高級CLB(CLB-X 630、693)溢出/填充到DIR/從DIR溢出/填充。DIR也在保持快取及CLB的內容一致性及一致的一致性協議中發揮核心重要。
可查看CLB及DIR以形成一個包含性“快取層次”,其利用關於資料快取層次的內容的資訊對中繼資料進行快取。含有L-1到L-Y及LLC的資料階層可被視為單獨快取層次而不包含強加於其的屬性。其可例如是意味著非包含性的。
在圖6中所繪示的實施例中,每一節點具有一個CPU,
可能含有零個、一個或許多個傳統的基於標籤的快取,其描繪為LO-D及LO-1。無法由傳統L0快取中的任一個滿足的記憶體請求將可能使用類似於圖4中的CLB-1 410的方案產生在節點的CLB-1(例如CLB-1 610)中的查找以搜索對應CLB條目CLT。如果在CLB-1中找到對應條目,那麼對應於所請求資料單元的位置資訊(LI)可位於其CLT欄位(612)中。LI識別可找到所請求資料單元的位置。在一個實施例中,駐留在節點-1 601中的CLB 610中的LI可將節點的自有快取(快取L-1 620到快取L-Y 640)中的任一個、LLC(LLC 670)、記憶體680或其它節點(節點-2 690到節點-N 699)中的任一個識別為其追蹤的資料單元的位置。在一個實施例中,LI還可識別資料單元在所識別快取內的位置。在一個實施例中,LI可指示資料單元是否駐留在連接到節點的CPU 610的傳統快取LO-D或LO-1中的任一個中。
如果將快取位置(或記憶體)識別為可找到資料的位置,那麼可以通過在不查閱目錄(DIR)660的情況下直接讀取所述快取來滿足請求。如果將節點識別為可找到所請求資料的位置,那麼將請求發送到所述節點的CLB-X且所滿足的請求類似於針對圖4所論述的外部請求。但並不需要查閱目錄來找到資料。這不同于大部分基於傳統目錄的一致性方案,其中查閱及更新目錄以獲得超出節點範圍的存取。
即使圖6繪示每個節點中的一個CPU,但本領域的技術人員將認識到,節點可含有任何數量(包含零個)CPU、GPU、加
速器或可存取記憶體的其它裝置(如I/O裝置)。此外,CLB及快取的配置及大小在節點之間可有極大差異。
在一個實施例中,在包含性CLB/DIR層次中存在嚴格的逐級層次搜索。如果未在級別CLB-i處找到位置資訊,那麼在下一級CLB-(i+1)處執行查找。如果無法在節點的最高級(CLB-X)中找到位置資訊,那麼在DIR執行查找。如果在CLB級別或在DIR中找到位置資訊,那麼可將讀取請求發送到由其在所述級別處的對應位置資訊所識別的資料位置,且在CLB-1中創建對應於所請求區域的新CLE條目。在一個實施例中,CLB/DIR層次是包含性的。這暗示如果存在於級別CLB-L處可用的CLB條目,那麼必須存在安設於級別CLB-(L+1)處的條目。最接近於CPU的CLB條目是有源的。在一個實施例中,可能會在快取級別K(以及較低快取,即在圖6中更高)與某一CLB級別C(以及所有較高CLB級別,即在圖6中更低)之間執行包含。作為一實例,為了使資料在快取L-1 620到快取L-Y 640中的任一個中可用,在CLB-X 630中必須有對應條目。如果收回CLB-X 630中的所述條目,那麼應從快取L-1 620到快取L-Y 640收回對應區域的所有資料。這被稱作強制收回。此外,還需要收回同一節點直到CLB-1 610的所有CLB條目。
應注意,在節點內的快取級別(例如快取L-1 620到L-Y 640)之間或在LLC 660與節點中的快取(例如快取L-1 620到L-Y 640)之間不存在包含要求。舉例來說,對應於特定位址的有效資
料可存在於L1快取620中,但既不存在於快取L-Y 640中,也不存在於LLC快取670中。其開放以用於快取旁通優化,其中(例如)流式資料僅需要安設在L1(實際上,若其存在,則僅安設在L0)且不安設在其它級別下。然而,對應的CLB條目(其通常比其對應資料區域小50倍)需要安設在所有級別下。
目錄(DIR)660含有CLB類資訊:位址標籤(AT)661、快取位置表(CLT)及區域資訊(RI)。雖然這些欄位的名稱與CLB(例如CLB-X 630)的欄位相同,但這些欄位的內容可不同於對應的CLB欄位。在一個實施例中,DIR 660的RI欄位663含有N個所謂的存在位(presence bit;PB),其指示哪些節點在追蹤所述區域,其中N對應於系統中的節點的數量。如果設置了PB中的位K,那麼其暗示在節點K的CLB-X中存在對應條目。這進一步暗示在節點K的快取級別L1到快取級別L-Y中的任一個中可能存在經過快取的資料,並且還暗示在節點K中的CLB-1中可能存在對應條目,其將使得節點K中的CPU能夠存取對應區域的任何快取線。雖然所述描述是指PB資訊的N位元實施方案,但本領域的技術人員將認識到,用於目錄實施方案的許多可擴展技術(包含但不限於粗粒局限指標及鏈表)可用於實施類似功能性。
PB位元可用於對區域進行分類。如果恰好設置了目錄660中的對應條目的一個PB位元,那麼區域被分類為專用區域(private region;(PR))。經驗研究顯示,平均約80%的所有存取區域跨越許多種所研究基準是PR區域。區域分類PR暗示區域的
資料可僅存在於其對應PB位經過設置的一個節點中,並且還保證此時沒有其它節點可及時從區域存取資料。可以通知其PB位是DIR中僅經過設置的位元的節點601對應區域是專用區域(PR)且可能將其對應區域資訊(RI)中的區域分類中記錄在其CLB中(例如在CLB-1 610到CLB-×630中)。可在許多方面高效存取PR區域。舉例來說,節點不需要全域一致性(即,不需要存取DIR 660)來獲取對於存在於節點中的資料單元的寫入許可權(節點目前僅具有讀取許可權(用以將資料單元從狀態S升級到狀態E)),是因為僅一個節點可對其資料的複本進行快取且沒有其它節點能夠存取區域的任何資料單元。並且,可高效實施PR區域的資料單元的移動,因為資料可在整個快取層次上下移動(例如,執行從L-X到LLC的收回或將資料從LLC移動到L-1)而不需要告知在節點外的任何結構。所述移動還需要記錄在節點本地的CLB(CLB 610到CLB 630)中。這暗示儲存於節點的CLB(CLB 610到CLB 630)中的PR區域的CLT資訊可與儲存於DIR 660中的區域的CLT資訊不同(例如,為最新的)。
當第二節點(例如節點690)存取PR區域(經驗研究顯示其是相對罕見事件)時,所述第二節點將未命中其所有CLB 691到CLB 693,並將向DIR 660發送請求以獲得存取資料所需的適當位置資訊LI並且還允許在CLB 691到CLB 693中創建其自有的CLB條目。由於此請求是用於PR區域,所以660可能不具有最新資訊,其需要從節點601獲得最新位置是資訊並確保節點601
的CLB不再將區域標籤為PR,更新其用於所述區域的自有的CLT資訊,並設置對應於節點-2 690的PB位元,並且將用於區域的適當CLB資訊發送到節點690。節點-2 690現可創建其與所述區域相關聯的自有本地CLB條目。在一個實施例中,在將最新位置資訊發送到DIR 660之前,節點601必須完成其對所述區域的所有進行中的導入到資料記憶體請求。
如果另一節點(例如節點-N 699)存取區域,其將還會未命中其所有CLB且還將向DIR 660發送請求,所述請求現具有關於所述區域的最新資訊,並可用適當資訊對節點-N 699作出回復並且還將會針對請求節點(即節點699)設置區域的PB位元。
超過一個PB位元經過設置的區域被分類為共用區域(shared region;SR)。這暗示著超過一個節點有CLB在追蹤此區域的位置資訊。這還暗示,對應PB位經過設置的節點可將區域的資料單元儲存在其快取(例如快取620到快取640)中的任一個中。如果所述區域被分類為SR,那麼來自CPU(例如CPU 610)的存取資料單元的請求可能需要起始全域一致性事務,所述請求無法在節點內在本地得到滿足(例如,通過快取L-1 620到快取L-Y 640)。
在一個實施例中,到SR或PR區域的全域一致性讀取事務(無法從本地快取(例如,快取L-1 620到快取L-Y 640))滿足的讀取)可利用從其本地CLB(例如,CLB-1 610到CLB-X 630)檢索的位置資訊來直接存取資料而不會涉及DIR 660或不會
與除了可由位置資訊識別的節點以外的任何節點通信。這在本文中被稱作導入到主控裝置存取。經驗研究顯示出到SR區域的75%的所有一致性事務是導入到主控裝置的讀取事務存取。因此,如果由CPU起始的20%的全域事務是到SR頁面且75%的全域事務不需要存取DIR,那麼在使用根據這些實施例的快取結構及技術時,95%的全域一致性事務不需要存取DIR,而所有全域一致性事務需要存取傳統的基於目錄的協定的DIR。
由於SR區域有若干節點在追蹤其資料單元的位置,所以其資料單元移動必須反映在追蹤所述區域的所有節點(即,具有用於所述區域的有源CLB條目的那些節點)中,且所移動的資料單元的位置資訊在所述節點中更新。在一個實施例中,追蹤資料單元的不同節點的CLB的位置資訊應以一致性方式更新,使得CLB約定資料駐留位置(被稱作其主控裝置位置)。在一個實施例中,還保證基於從CLB檢索的位置資訊存取的資料單元位置含有校正資料(被稱作確定性)。
此類資料單元移動的一個常見原因是全域一致性寫入請求,即,目前沒有對資料單元的寫入許可權的請求節點通過全域一致性請求(例如失效請求或排它式讀取請求)來請求寫入許可權。在請求完成後,資料單元將僅駐留在請求節點中。
在一個實施例中,通過請求節點(例如節點601)將全域一致性寫入請求發送到目錄660,其定位對應的目錄條目,檢索所述區域的對應PB位元並將請求轉發到對應PB位經過設置的所
有節點(除請求節點以外),所述節點被稱作從節點(例如節點690及節點699)。當從節點確保起源於從節點的對於資料單元的任何進一步請求將導入到請求節點時,所述從節點發送應答(ACK)消息。這可能(例如)通過在其CLB中改變資料單元的位置資訊以指向請求節點(601)來實現,所述請求節點將變為新的主節點。ACK消息可發送到DIR 660或直接發送到請求節點601,所述DIR 660聚集所述ACK消息並在所有ACK已被接收後向請求節點發送ACK。一旦請求節點瞭解到已接收所有ACK,則所述請求節點獲取對於快取線的排它性寫入許可權並完成請求。在一個實施例中,在完成請求後,將完成資訊發送到DIR 660。
資料移動的另一常見原因是收回(也被稱為替換)。在節點本地的收回(例如,從L-1 620到L-Y 640的收回)是在本地處理,通過其本地CLB條目追蹤且在節點外是不可見的。然而,主資料單元的全域收回(例如,從L-Y 640中的位置641到LLC 670中的新位置671)必須由所有追蹤所述區域的節點(即,具有用於所述區域的CLB條目的所有節點)反映。在一個實施例中,通過首先複製儲存於其舊位置(641)到新位置(671)中的資料單元的值同時保持儲存在舊位置(641)中的資料有效來實施全域收回。隨後,將具有關於新位置(671)的資訊的全域一致性收回請求從請求節點(例如節點601)發送到DIR(660),所述DIR將請求轉發到從節點(例如,節點690及節點699)。一旦從節點已將其對應位置資訊更新為新位置(671),那麼其發送ACK消息。
一旦請求節點瞭解到已發送所有ACK,則所述請求節點獲取對於資料單元的收回許可權並可回收舊位置,且所述請求完成。在一個實施例中,在完成請求後,將完成資訊發送到DIR 660。
在一個實施例中,從節點不會發送ACK消息,直到其待處理的對於所請求快取線的請求(例如,所有導入到主控裝置請求)中的一些已完成為止。
在一個實施例中,目錄660實施封堵機制,其確保對於每一資料單元可存在至多一個特定類型的待處理全域請求。此類請求類型的實例可為全域一致性寫入請求及全域一致性收回請求。對於快取線的封堵在請求完成後結束,或如另外由一致性協議所指定。封堵機制可為準確的,例如通過在目錄中每一資料單元一個鎖實施,或可為過近似,其中位址散列到有限鎖池且資料單元的封堵將封堵對於所有其它資料單元的存取散列到同一鎖。
在一個實施例中,利用區域細微性而非資料單元細微性來進行封堵,且一些CLB/目錄溢出/填充請求還需要封堵,直到其更新完成為止。這保證沒有全域一致性寫入請求正在進行中,同時節點及目錄溢出/填充CLB資訊。
另一有用區域分類是在DIR 660中的沒有與所述區域相關聯的PB位元經過設置的區域。這暗示,區域資料單元無法存在於節點的快取L-1到快取L-Y中的任一個中,且沒有一個節點目前可存取其資料單元。這被稱作未追蹤區域(untracked region;UR)。UR區域的資料仍可在LLC中快取。在一個實施例中,可從
LLC 670收回UR區域的資料單元而無需任何全域一致性請求。DIR 660中的沒有對應條目的區域被分類為記憶體區域(memory region;MR)。MR區域的資料單元既無法在節點中也無法在LLC中快取。替換來自DIR 660的CLT條目暗示所述區域的所有資料單元應從LLC強力收回。
在一個實施例中,圖6的快取系統是無標籤快取系統,即,其中儲存在快取(例如,節點的快取L-1到快取L-Y及LLC)中的資料單元沒有與其相關聯的位址標籤的快取系統。相反,具有與其相關聯的位址標籤的位置資訊將識別儲存資料單元的位置。但圖6中所包含的傳統快取(LO-1及LO-D)仍可具有與其快取資料單元相關聯的位址標籤。
圖7與圖6不同,是因為LLC已切成LLC切片(LLC-1 771、LLC-2 772以及LLC-N 779)並放置在接近節點的片上網路(NoC)750的另一側上。每一切片分別配置有替換計數器(replacement counter;RC)775、替換計數器776及替換計數器777。這些計數器對每一LLC切片中的快取替換的數量進行計數。應注意,圖7的實施例將LLC切片放置在每一節點(由虛線框表示)之外。即使每一LLC切片(例如切片771)靠近每一節點且可利用極短時延從節點的CPU(710)存取,其仍可被看作一件大型全域LLC。從CLB-X(例如CLB-X 730)收回區域條目不必要求駐留在接近節點(例如節點771)的LLC切片中的對應區域資料強力收回。此外,節點(例如節點701)可將位置資訊儲存在其
CLB(例如CLB 710)中,所述CLB直接指向靠近遠端節點的遠端LLC切片中的位置(例如,切片772中的位置),且所述節點可存取所述資料而不需要間接通過DIR 760或者所述節點(790)的任一CLB。
如今可存在LLC實施方案,其是對圖7的聯想(僅從某種意義來說,LLC在物理上劃分成儲存體,其物理放置為接近節點且並非參考圖7的其它元件放置)。然而,如今的解決方案(例如來自因特爾的伺服器晶片)將資料單元根據其位址放置在LLC儲存體中,這導致假設有四個節點,命中LLC儲存體的25%存取將命中接近節點的儲存體。根據實施例(例如基於位置資訊指標)描述的快取存取技術允許對資料單元的放置有完全靈活性且並不取決於資料單元的位址,其可潛在地增加LLC命中的本地部分。一個選項將為複製在所有存取所述資料單元的LLC切片中的所有共用資料。然而,複製所有LLC切片中的所有共用資料將消耗LLC容量。如先前所陳述,通常共用20%區域。假設所有共用區域將需要複製在所有節點中,四節點系統將用完其儲存所複製LLC資料的80%的LLC容量。這是明確次佳的,促進對更智慧LLC分配/複製決策的需要。
當首先將資料單元分配給LLC切片時,始終將其放在靠近存取所述資料單元的CPU的LLC切片中可表現為有益的。然而,由於在不同CPU中運行的執行緒可具有不同LLC容量需求,將資料單元放置在遠端LLC切片中且因此“竊取”其本地LLC容
量的部分有時可是有益的。在一個實施例中,基於LLC切片快取壓力作出分配決策。每一LLC切片具有替換計數器(RC 775、776、777),其登記發生在切片中的替換的數量。在一個實施例中,定期監測這些計數器以確定每一LLC切片的快取壓力,其中較高計數指示較高壓力。在為資料單元分配LLC空間時,如果其快取壓力最低,則始終在本地LLC切片中分配空間。否則,將對當前具有最低壓力的遠端LLC切片進行其分配的可配置部分,而在本地LLC切片中進行其餘分配。在一個實施例中,在遠端LLC切片中分配空間將僅僅會在某些情況下(例如,在本地LLC切片的快取壓力高於某一閾值的情況下)發生。
在傳統快取拓撲中,在單個末級快取(如圖1的L2 103或圖6的LLC 670)由若干節點共用的情況下,通常存在駐留在LLC(被稱作共用快取)中的每一資料單元的至多一個複本,而節點專用的快取(還被稱作專用快取)(如圖1的L1快取102)可各自儲存同一資料單元的複製複本。圖7的LLC切片具有以下選項:將資料單元的單個複本儲存在一個LLC切片中且使用相同位置資訊存取所有節點;或將資料單元的若干所謂的複製複本儲存在若干LLC切片中。
舉例來說,資料單元774可以僅為資料單元的LLC複本,且CLB-1 710中的CLT 712及CLB-1 791中的CLT兩者具有其指向位置774的相關聯位置資訊。這在本文中被稱作共用LLC資料。在已作出複製資料的決策後,可將資料複本放在位置773
且將CLT 712中的相關聯位置資訊變為指向位置773。儲存於773中的資料單元被稱作本地LLC資料單元。儲存在位置773中的本地資料僅可通過節點1 701本地的CLB中的查找間接存取,而儲存在位置774中的全域資料仍可由(例如)節點N 799通過使用指向位置774的位置資訊直接存取。
在一個實施例中,通過指令未命中(例如指令快取LO-1中的未命中)對遠端LLC切片的存取可導致資料單元被複製並且還駐留在靠近請求CPU的節點的LLC切片中。這由對於指令的快取未命中通常導致相比資料未命中的較大性能下降的事實促發。
在一個實施例中,存取遠端LLC切片中的所謂“熱”資料單元可導致資料單元被複製並且還駐留在靠近請求CPU的節點的LLC切片中。熱資料單元為頻繁存取的資料單元。熱資料可例如通過測量從上次存取資料以來的持續時間來檢測。這可例如通過提供與資料單元相關聯或與位置資訊相關聯的“存取時間戳記”來實施。熱資料還可以通過快取替換演算法(例如LRU演算法或偽LRU演算法)檢測,所述演算法可檢測最近是否存取資料單元。在一個實施例中,標示為集合中的最近使用(MRU)的資料單元的所存取資料單元被分類為熱資料單元並引起複製。發明人自身的經驗研究顯示出,智慧分配及複製決策(如上文所論述的決策)可使平均80%的LLC存取命中本地LLC切片。
在一個實施例中,存取遠端LLC切片可導致資料單元遷移到靠近請求CPU的節點的LLC切片。可基於區域的類別作出遷
移決策。舉例來說,存取專用區域可導致資料單元遷移到靠近請求CPU的節點的LLC切片。更具體地說,如果所存取區域被分類為專用區域(PR),那麼指令存取或對熱資料的存取可導致遷移。
在一個實施例中,圖7的快取系統是無標籤快取系統,即,其中儲存在快取(例如,節點的快取L-1到快取L-Y及LLC)中的資料單元沒有與其相關聯的位址標籤的快取系統。相反,具有與其相關聯的位址標籤的位置資訊將識別儲存資料單元的位置。但圖7中所包含的傳統快取(LO-1及LO-D)仍可具有與其快取資料單元相關聯的位址標籤。
圖8說明將在下文詳細描述的方法實施例以及其它方法實施例。
通過參考實際記憶體存取事務來更好地理解前述實施例的操作,所述實際記憶體存取事務將發生在採用此類實施例的多處理器系統中。舉例來說,圖9到圖13描述可由實施例用來維持資料快取層次與圖6中描繪的CLB層次之間的某些一致性及確定性的序列。類似序列還可用來保持圖7中描繪的多處理器系統的一致性及確定性。
圖9到圖13繪示有編號步驟,包含在圖6中所識別的四個不同元件之間的通信步驟,所述四個不同元件由在圖9到圖13的頂部處的塊表示。具體地說,這些四個不同元件包含:1)請求者節點(例如節點601),其是例如通過源自節點內部的請求開始活動的節點,所述請求無法在所述節點內在本地得到滿足;2)
DIR 660,其充當用於儲存在節點1到節點N中的CLB資訊的後備儲存(溢出/填充)並且還參加全域一致性活動以保持資料單元一致性;3)資料單元的主位置,例如LLC 670中的位置671;以及4)共同表示“PB節點”(即,DIR 660中的其對應PB位經過設置並且對應於所請求資料單元的節點,而非請求節點)的元件,其還被稱作從節點。通常,請求並非是從節點且並不被視為PB節點,即使其對應PB位經過設置。
在這些實施例中將所採用的步驟描述為一個有編號的序列,即使本領域的技術人員將認識到,一些步驟可並行地執行且在所述步驟之間可能存在其它可能的次序。
轉向圖9,此圖描繪根據實施例的結合請求節點601中的CLB命中(即,針對不存在於節點601中的資料單元在節點-1 601中起始的讀取請求)解析全域一致性“讀取未命中”所需的全域步驟及局部步驟。資料單元的主位置處於LLC 670內的位置671。此實例可適用於PR區域及SR區域兩者。採用以下步驟:
步驟901)節點601命中其CLB中的一個,從LI確定需要全域讀取請求,並利用LI資訊形成將資料單元的主位置671作為目標的讀取請求(ReadReq)。
步驟902)ReadReq請求中提供的資訊足以找到快取(LLC 670)及資料單元在其內的駐留位置(671)。這導致資料回應(資料)發送回到節點-1 601。
步驟903)節點601尋找在節點內的適當本地位置(LL)(例
如自由位置,即可使其自由的位置或在其它方面可用的位置),並將與資料單元相關聯的對應的本地CLB條目的位置資訊(LI)變為指向所述本地位置。
步驟904)將本地位置標示為具有共用狀態(S)以指示複本是可讀而非可寫的。
此資料單元的主複本保持位置671,其是不需要與DIR 660或從節點通信的原因(或經由位置671與“PB節點690及PB節點699”塊之間的信號示出)。
轉向圖10,此圖描繪根據實施例的結合請求節點中的CLB未命中的解析全域一致性“讀取未命中”所需的全域步驟及局部步驟。此實例適用於SR區域及UR區域兩者(在對應於所請求資料單元的DIR中的設置的PB位的數量不等於1)。採用以下步驟:
步驟1001)節點601無法在其本地CLB中找到對應條目,且形成以DIR 660作為目標的讀取請求CLB未命中(ReadReqCM)。
步驟1002)DIR 660將此區域標示為封堵的(可能通過採用來自有限散列鎖池中的鎖定)。
步驟1003)DIR 660將對應於節點601的PB位設置為等於1。
步驟1004)DIR 660確定主位置是位置671且向所述位置發送讀取請求。
步驟1005)同時,DIR 660將CLB資訊發送到節點601,以
允許其創建與資料單元相關聯的本地CLB條目。
步驟1006)將資料從主位置671發送到請求節點601。
步驟1007)節點601在節點內找到適當本地位置(LL)並改變本地CLB條目以指向所述本地位置。
步驟1008)將本地位置標示為共用狀態(S)以指示複本是可讀而非可寫的。
步驟1009)請求節點601將完成消息(Cmp)發送到DIR 660。
步驟1010)DIR 660解除對區域的封堵。
轉向圖11,此圖描繪根據實施例的結合請求節點中的CLB未命中的解析全域一致性“讀取未命中”所需的全域步驟及局部步驟。此實例適用於PR區域(在對應於所請求資料單元的DIR中的設置的PB位的數量等於1)。所述實例假設PB位元是僅針對節點690而設置。採用以下步驟:
步驟1101)節點601無法在其本地CLB中找到對應條目,且形成以DIR 660作為目標的讀取請求CLB未命中(ReadReqCM)。
步驟1102)DIR 660將此區域標示為封堵的。
步驟1103)DIR 660設置對應於節點601的PB位。
步驟1104)DIR 660確定所述區域為PR且其沒有最新CLB資訊。將CLBReq發送到節點690,是因為所述CLB使其對應的PB位設置於DIR的RI欄位663中。
步驟1105)節點690的CLB清除區域資訊(RI),其指示用
於所述區域的分類PR。
步驟1106)一旦其完成待完成的導入到資料讀取請求,節點690以CLB資訊回復DIR 660。
步驟1107)DIR 660將CLB資訊轉發到請求節點601,以允許其創建與資料單元相關聯的本地CLB條目。
步驟1108)節點690確定所請求資料的主位置是位置671並向所述位置發送讀取請求。
步驟1109)將資料發送到請求節點601。
步驟1110)節點601在節點(LL)內找到本地位置(LL)並改變本地CLB條目以指向所述本地位置。
步驟1111)將本地位置標示為共用狀態(S)以指示複本是可讀而非可寫的。
步驟1112)節點601將完成消息(Cmp)發送到DIR 660
步驟1113)DIR 660解除對區域的封堵。
轉向圖12,此圖描繪根據實施例的結合請求節點中的CLB命中的解析全域一致性“寫入升級未命中中”所需的全域步驟及局部步驟。此實例適用於SR區域(在對應於所請求資料單元的DIR中的設置的PB位的數量大於1)。所述實例假設PB位元僅針對節點690及節點699而設置。採用以下步驟:
步驟1201)節點601在其本地CLB中找到對應條目並確定其具有在共用狀態(S)下的資料單元的本機複本,並形成以DIR 660作為目標的失效請求(InvReg)。
步驟1202)DIR 660將此區域標示為封堵的。
步驟1203)DIR 660將對應於所請求資料單元的LI設置為指向節點601。
步驟1204)DIR 660將失效請求(Inv)發送到兩個從屬裝置,其對應PB位元設置於DIR 660(即,節點690及節點699)中。
步驟1205)兩個從節點(節點690及節點699)將其對應於所請求資料單元的LI設置為指向601。
步驟1206)兩個從節點(節點690及節點699)確保其可能具有的資料單元的任何本機複本不能再存取(由狀態變化到無效狀態(狀態:=I)所描繪)。
步驟1207)兩個從節點(節點690及節點699)將應答消息發送到請求節點(601)。
步驟1208)在請求節點已接收所有應答消息(一定數量的待接收的消息可由消息本身承載)後,將節點601中的資料單元的複本標示為排它式狀態(E),以指示複本是可讀取及可寫入的。
步驟1209)節點601將完成消息(Cmp)發送到DIR 660。
步驟1210)DIR 660解除對區域的封堵。
轉向圖13,此圖描繪根據實施例的解析來自節點601的全域一致性收回請求所需的全域步驟及局部步驟。舉例來說,節點601可將資料單元的髒複本儲存在其快取L-Y 640中,所述髒複本應收回到LLC 670中的位置671。所述實例假設對應於DIR 660中的相關資料單元的PB位元是針對節點690及節點699而設
置。採用以下步驟:
步驟1301)節點601將資料單元的資料值複製到新位置671(複製資料)。
步驟1302)在此步驟期間,確定複製資料操作已達到可受到保證的點,使得將保證以此資料單元作為目標的任何ReadReq返回資料單元的更新複本。在已接收到複製資料信號後,這可例如通過網路排序屬性通過從網路內部產生的信號,或如圖13的實施例中所示,通過將複製信號發送回節點601的目標位置771來實現。
步驟1303)請求節點601將收回資料(EvictReq)的請求發送到DIR 660。
步驟1304)DIR 660封堵區域。
步驟1305)DIR 660將目標位置671標示為用於資料單元的LI。
步驟1306)DIR 660將新位置資訊(NewLI)發送到兩個從屬裝置,其對應PB位元設置於DIR 660(即,節點690及節點699)中。
步驟1307)兩個從節點(節點690及節點699)設置其對應於目標位置671的LI。
步驟1308)兩個從節點(節點690及節點699)將應答消息發送到請求節點(601)。
步驟1309)在請求節點已接收所有應答消息後,其可釋放由
收回的資料單元保持的空間(描繪為狀態:=I)。
步驟1310)節點601將完成消息(Cmp)發送到DIR 660。
步驟1311)DIR 660解除對區域的封堵。
排序屬性
上述協議執行三個任務:第一,確保儲存於參考同一快取線的若干CLB中的LI與彼此一致,且還基於來自請求者(例如請求者601)的CLB的LI資訊確保確定性(即導入到主存取請求(例如,ReadReq 901)得到保證以返回快取線的有效資料。第二,其將在僅一個節點中具有CLB條目的區域分類為專用區域(PR)並避免某些存取請求與這些區域的全域一致性(例如避免存取DIR 660)。第三,其通過發送全域一致性請求(例如發送到DIR 660的請求)保持快取線的多個複本的一致性,所述快取線可駐留在快取(例如快取620、快取692及快取670中)。
如果某些全域一致性請求以及由一致性協議回應於所述請求執行的一些動作實現了某些排序屬性,那麼一旦其對應LI從請求節點(601)的CLB(610或630)中讀取,作為對於來自CPU(例如CPU 610)的讀取請求的回應而發送的導入到主讀取請求(例如請求901)可考慮以總記憶體次序排序。即使所請求快取線的資料必須從遠端節點(例如節點669),從LLC(670)或從記憶體(680)讀取,即,即使所述請求導致可能花費100個迴圈來實現的傳統快取未命中,仍是這種情況。排序讀取請求的傳統途徑在其所請求快取線的資料返回到CPU時是另外將其視為有序
的。
此外,在其對應LI從請求節點(601)的CLB(610或630)讀取時,可將一些寫入事務視為有序的。在一個實施例中,在LI從CLB中讀取時,到專用區域(PR)的在請求節點的CLB中尋找其對應LI的寫入請求可被視為按總記憶體次序來排序。
在一個實施例中,在其發送到DIR 660的請求(例如ReadReqCM 1001或1101)已相對于回應於寫入請求(例如InvReq 1201)而發送到DIR 660的請求而排序時,並未在請求節點(601)的CLB(610或630)中找到LI的一些事務被視為有序的。
本領域的技術人員將認識到,提前對讀取或寫入請求排序具有許多優點。這對於導致快取未命中的請求(如由CPU 610在節點601中產生的請求)尤其寶貴,所述請求可不能由L1快取620查找滿足,或略糟的是可不能由L2 640查找滿足,或甚至更糟的是,在其對應LI從一級CLB 610中或略糟的是從在請求節點601本地的某一其它級別讀取時,即使通過LLC 670查找仍不能滿足,所述LLC 670查找需要存取緩慢記憶體或甚至需要存取共用DIR 660,可比排序此類請求的傳統途徑早多個數量級。
為了實施特定記憶體模型,例如總儲存次序(total store order;TSO),可不從CPU發送新讀取請求直到所有較早讀取請求已排序為止。此外,在特定亂序流水線實施方案中,CPU可開始在所有先前讀取已排序之前返回推測性資料的推測性讀取請求。不排序推測性讀取直到排序所有先前讀取並且同時由致使推
測性讀取請求再執行的一致性協定使得推測性資料可失效為止。這暗示可不釋放由推測性讀取使用的許多流水線資源直到其排序為止。還暗示可能需要再執行利用推測性資料的任何指令。在依序流水線中,如果沒有排序讀取請求,那麼因為可不實施再執行且因此可既不送出推測性讀取請求也不開始執行使用推測性資料的指令,所以通常需要停止流水線。
在一個實施例中,如果需要由儲存用於兩個儲存的LI資訊的所有其它CPU按相同次序觀測在兩個儲存(例如兩個儲存到共用區域)之間的可不由存取本地快取到請求節點滿足(例如在節點601中產生的可不由存取快取620或快取640滿足的寫入請求以及在節點690中的可不由快取692或快取694滿足的寫入請求)的全域次序,那麼可以實現較早LI存取排序。
在一個實施例中,這可通過以下來實現:第一,在兩個寫入之間建立次序(例如來自節點601的寫入A在來自節點690的寫入B之前產生);以及第二,確保作為對兩個寫入請求(例如Inv Req 1201)的回應發送到PB節點(例如699)的一致性事務(例如Inv 1204)將按所述次序將它們的改變(1205)應用於它們相應的LI。在與寫入B相關的改變1205改變與B相關的LI以儲存節點690的身份(LI:=690)之前,與寫入A相關的改變1205應改變與相關A的LI以儲存節點601的身份(LI:=601)。
在一個實施例中,這可通過在DIR 660中排序兩個儲存來實現,其效果是發送到PB節點的一致性事務(例如Inv 1204)
按所述次序發送到每一節點,在DIR與每一PB之間的通信並不重新排序這些事務並且它們的相應LI改變按所述次序應用。
被較早排序的寫入事務暗示可以開始下一個寫入事務來自相同請求節點(601),即使尚未執行先前寫入(快取線的值尚未改變),同時仍可保證總儲存次序(TSO)。
在一個實施例中,除了Inv事務(1214)以外,還有一個額外重新排序(ORDERED)事務(圖12中未繪示)被從DIR發送到請求者601。ORDERED事務的排序要求與上文實施例中論述的Inv事務1214的要求相同。在ORDERED事務已被請求者接收之前,請求節點中的寫入請求不能被視為排序並且不能執行寫入。在一個實施例中,一旦ORDERED事務已接收,寫入請求就可以視為排序,但是在接收所有預期ACK事務1207之前可不執行寫入。
在一個實施例中,一旦相關的LI已從本地CLB(610或630)讀取到請求節點(601),由CPU(610)起始到專用區域(PR)的寫入事務就可以視為排序。
較早排序讀取請求或寫入請求的優勢包含(但不限於)得到亂序流水線的指示,即請求自身將不造成所謂的回退(即需要產生所述請求的指令並且擠壓所有隨後指令),這可能允許較早釋放與指令相關的資源(重新排序緩衝器(reorder buffer;ROB)條目、物理寄存器等)。即使較早指令致使快取未命中,較早排序請求也可以允許按序停止使用的流水線能夠啟動新的讀取指令或
寫入指令。即使新指令也致使快取未命中,可啟動在其等之後的指令。允許更嚴格的記憶體模型(例如TSO或依序一致性)具有發出更多指令的優勢,同時存在尚未解決的致使快取未命中的舊指令(例如尚未傳回用於讀取指令的資料或尚未授予用於寫入指令的寫入許可權)。
在一個實施例中,一旦排序所有較早讀取指令,但在其全部接收資料之前,極其簡單的流水線可開始新的讀取指令。每一寄存器具有與其相關的有效位。在新指令被允許執行時,取決於尚未含有有效資料的寄存器的指令被停放。在相應寄存器接收有效資料時停放的指令被喚醒。在推測分支指令之後執行的指令將不標籤為有效直到已確定所述分支的推測行為實際上為正確的為止。由分支控制的有效位元可與資料寫入到寄存器時設置的有效位不同。
如果分支錯誤推測,那麼程式計數器改變以再執行分支指令以及其之後的所有指令。
可注意到,在圖12的步驟1204中,DIR 660使用有效CLB條目將Inv消息發送到所有節點。這可能潛在地導致比常規基於目錄的一致性協定發送更多Inv消息,所述常規基於目錄的一致性協定僅將Inv消息發送到已知已讀取請求資料單元的節點。在一個實施例中,這效果由被稱為CLB清理(CLB weeding)的技術達成,其中如果檢測到節點接收不必要的Inv消息,那麼一些CLB條目被收回。舉例來說,如果沒有對應區域的資料單元
存在於節點的快取且Inv消息被接收以用於區域,那麼CLB條目可以被收回。本發明人在經驗上已展示不管發送更多Inv消息的潛能,由實施例中所提出的系統發送的消息總數量比由常規基於目錄的一致性系統發送的消息的數量低一半。
在一個實施例中,如果仍檢測到由於DIR中的PB位元表示,區域產生太多一致性消息,那麼可將所述區域轉換為被稱為微粒區域(fine-grain region;FR)的特殊類別。FR區域(預期極少)在DIR中具有特殊條目,所述條目可能使用目錄表示技術(如全映射、DirN-B、DirN-NB或粗粒表示)追蹤具有與每一快取線相關聯的共用複本的節點的集合。區域的CLB條目將被標籤為FR區域,且將初始地使其位置條目設置為符號“不知道”(don't know;DK)。這將促使全域一致性讀取請求查閱DIR以找到資料單元的位置,使得DIR追蹤具有與所請求資料單元相關聯的共用複本的節點。此資訊使得DIR僅將Inv消息發送到已請求快取線的節點。
在一個實施例中,節點在其CLB條目(例如,610到630)中將PB位元儲存為區域資訊(region information;RI)的一部分。這使得請求一致性寫入許可權的節點將失效請求直接發送到從屬裝置,而非通過目錄間接進入。
如果提供封堵機制(如結合DIR 660描述的機制),那麼將大大簡化多處理器系統的快取一致性協定。然而,存在節點之間的直接通信優於間接通過目錄的情況,例如其中PB位元在節
點CLB中儲存為區域資訊(RI)的一部分的一些實例中,從而允許在節點之間直接發送失效消息而不需要目錄查找。使封堵機制自目錄解除將為有益的。這將不僅節省額外目錄查找時延及能量;還可能導致發送更少NoC事務及更少時鐘域的交叉點。
在一個實施例中,網路實施封堵功能性,阻止某些消息在網路上發送。這可由網路中整合的鎖陣列來實施,其中與消息相關聯的位址的一部分用於選擇與消息對應的鎖。當在網路上發送某些類型的消息時,可獲取對應的鎖(設定鎖)。當保持獲取鎖時,阻止某些類型的其它消息在網路上發送。在可發送與鎖相關聯的封堵消息之前,將需要通過由一致性協定指定的某一事件來釋放鎖。
獲取鎖的消息可為廣播類型,這意味著可能存在超過一個節點接收消息。在一個實施例中,在可發送封堵消息之前,接收消息的一或多個節點需要採取行動(如由一致性協議指定)以釋放相關聯的鎖。在一個實施例中,當鎖釋放時告知發送節點。
在一個實施例中,由請求節點所起始的單個寫入請求可產生發送到若干從節點的失效廣播消息,這將使得獲取到鎖。從節點中的每一個使其資料單元失效且將釋放機制應用於鎖。一旦所有從節點已應用其釋放機制,則鎖經釋放,且請求節點得以告知並將授予寫入許可權。這將與傳統的基於目錄的一致性系統進行比較,其中在節點中起始的寫入請求將包含以下步驟:將寫入請求發送到目錄;目錄鎖定失效消息並將其發送到從節點;從節
點使資料單元失效並發送ACK消息;請求請節檢測何時接收到所有ACK並獲得寫入許可權;在目錄中使鎖呈解鎖狀態。
相較使用傳統的基於標籤的快取構建的常規的基於目錄的一致性快取記憶體系統,本文中所描述的機制具有許多顯著差異。已描述具有以下唯一特性中的一或多個的實施例:
1)標識可在何處發現資料單元的可讀複本的快取位置資訊在靠近CPU的所謂的快取位置緩衝器(cached location buffer;CLB)中快取。
2)CLB形成單獨的包含性“CLB快取層次”,其中目錄DIR處於其根部,儲存關於資料單元在何處儲存於單獨的“資料快取層次”的“中繼資料”資訊。這不同於儲存與每條快取線相關聯的位址標籤“中繼資料”的常規的快取,以識別其標識且因此需要檢索所請求的資料單元的每個級別。以層次方式組織及搜索CLBs+DIR。
3)不需要以層次方式組織及檢索“資料快取層次”的資料快取,如常規的快取一般。
4)目錄使用“PB位元”追蹤可具有區域的快取線的複本的節點(或可存取所述區域)。此資訊用於操控一些一致性消息,例如失效消息(Inv)。這不同於追蹤可具有與每條快取線相關聯的共用複本的節點的集合的常規目錄。
5)檢測到專用區域,其中僅一個節點可存取且可快取區域的資料單元的複本。
這些特徵使得若干獨特屬性能夠不存在於常規的基於目錄的一致性記憶體系統中:
●全域一致性請求的80%不需要將一致性考慮其中,因為其例如歸因於上文特徵(5)可保證僅一個節點可存取資料且可能具有存取的資料的快取複本。
●全域一致性的讀取請求不需要查閱目錄,因為在本地快取的位置資訊可告知資料所位於的位置(例如歸因於上文特徵(1)),且追蹤可具有與每一快取線相關聯的共用複本的節點集合(例如歸因於上文特徵(4))。
●LLC被劃分成LLC切片,其中資料單元到LLC切片的分配可以自由完成且不視資料單元的位址而定(例如歸因於上文特徵(1))。LLC切片被置於節點附近,且將智慧探試法用於增加節點將存取其LLC切片中的資料單元的可能性。
●讀取存取可尋找所述局部LLC中的所請求資料單元(如歸因於上文特徵(1)),可尋找一個(1)切片而不需要查閱目錄(例如歸因於上文特徵(4))。
本發明人進行的經驗性研究已展示,所提出技術跨廣泛應用將全域NoC消息的數量、跨NoC發送的資料的數量和應用程式的全部平均減少超過50%,同時將L1未命中的平均時延平均削減30%。
根據前述實施例,可能注意到所述實施例的各種一般特徵。這些特徵在一些實施例中可以一起使用,或在其它實施例中
以各種組合和子組合使用。舉例而言,快取位置緩衝器(CLB)用於追蹤快取線在多處理器快取層次中的位置。所述快取層次可能包含不同大小和/或存取時間的一個或許多個快取。每一快取可以儲存以相聯途徑儲存(例如劃分成數個集合)的多個快取線,每一快取線含有數個途徑。雖然識別快取線的位址可以用來識別快取內將駐留快取線的集合,但其途徑位置的身份無法在不進行搜索的情況下通過其位址來確定。
根據一些實施例的CLB的一個任務是高效地尋找快取和所述快取級別內儲存特定快取線的位置、儲存所述快取線的節點或有效地確定快取線根本未駐留於快取層次中。在此情形下,“高效地”可能指使用較少能量、更快速地操作、使用較少儲存空間、其某一組合或其它有益結果。
CLB可以根據一些實施例實施為相聯結構,從而儲存多個快取表條目(CTE)。每一這類條目儲存例如用於由所述CTE識別的快取線群組的位址標籤和位置資訊。CLB可能使用由較大但較慢CLB支持的較小且較快CLB以層次方式實施。不同CLB級別可被設計成使用虛擬或物理位址存取。
所請求的快取線的位置藉由CLB中的查找來確定,之後可以在不需要任何其它相聯查找的情況下在其所確定級別和位置處存取所述快取線。這樣去除將額外位址標籤儲存在快取層次中的要求。
涵蓋以上實施例的眾多變化形式及置換。舉例而言,在
一個實施例中,對於不同CLB級別而言,與CTE相關聯的位置資訊位元元的數量可能不同,且所述CLB級別之間的LI資訊的複製可以是部分複製操作。在另一實施例中,第一級CLB的功能性與TLB的功能性集成或含有通常在TLB中發現的功能性的部分。在這個實施方案的實例中,CLB條目可能含有虛擬位址標籤(virtual address tag;VAT)、快取位置表格(cache location table;CLT)、存取許可編碼和實際位址轉譯以及通常在TLB實施方案中發現的其它中繼資料的某一組合。此外,即使以上實例含有高達兩個快取級別並且高達兩個CLB級別,但本領域的技術人員將理解本文中所描述的技術可以被一般化以適用於更多級別的快取和更多級別的CLB。不要求快取級別的數量與CLB級別的數量相同。還將理解上一級別的CLB可能溢出並填充到傳統(主)記憶體中的專用區域,且如此充當CLB快取。
在一個實施例中,CTE的資訊可以含有與其相關快取線相關聯的其它中繼資料,包含(但不限於)關於其存取圖案和過去使用的資訊、快取線狀態、一般儲存在TLB中的保護資訊以及產生實際位址所需的實際位址部分。一些所述資料可以儲存在例如413和425的區域資訊(RI)欄位中。
實施例還可以表達為方法,其實例作為方法800提供在圖8的流程圖中。其中,在步驟802處,資料單元儲存在多處理器系統的節點中的專用快取中,其中每一節點含有至少一個處理器(CPU)、節點專用的至少一個快取以及節點專用的至少一個快
取位置緩衝器(CLB)。在步驟804處,在每一CLB中,儲存位置資訊值,每一位置資訊值指示與相應資料單元相關聯的位置,其中儲存於給定CLB中的每一位置資訊值指示所述位置是在與給定CLB設置於同一節點中的專用快取內的位置、是在其它節點中的一個節點中的位置,或是在主記憶體中的位置。在步驟806處使用快取一致性協定維持資料單元的值的一致性。通過快取一致性協定根據其相應資料單元的移動來更新儲存在CLB中的位置資訊值。
根據圖14的流程圖中說明的另一方法實施例,方法1400包含在步驟1402處將資料單元儲存於多處理器系統的節點中的專用快取中以及全域快取和記憶體中,其中每一節點含有至少一個處理器(CPU)、節點專用的至少一個快取。在步驟1404處,使用快取一致性方案維持儲存在專用和全域快取中的資料單元的值的一致性,所述快取一致性協定在儲存資料單元的地點資訊的目錄中執行查找。如由步驟1406指示,位置資訊識別資料單元作為以下中的一者駐留的位置:節點、全域快取或記憶體。
根據圖15中說明的另一方法實施例,方法1500包含:在步驟1502處,將資料單元儲存在多處理器系統的節點中的專用快取中以及全域快取和記憶體中,其中每一節點含有至少一個處理器(CPU)、節點專用的至少一個快取,所述節點經由網路連接。在步驟1504處,通過在網路上發送一致性消息的分散式快取一致性協定維持儲存在快取中的資料單元的值的一致性。在步驟1506
處,封堵一些一致性消息在網路上發送,其中如果其它一致性消息是用於與一致性消息相同的位址區域(步驟1508所示),那麼發送一致性消息觸發封堵功能以封堵其它一致性消息。
圖8、圖14以及圖15中描繪的步驟可能以各種次序執行,且一些步驟可以並行或依序執行。這些方法實施例、上文所描述的系統實施例以及其它實施例可提供各種有益結果。舉例而言,申請人已進行詳細的模擬研究,其已展示與本文中所描述的實施例相關聯的快取實施方案與常規快取系統相比較可以節省大量能量,並且還可以產生具有實質上較短存取時間的快取。
為了清晰起見,本文中的大多數描述通常描述如何使快取線定位並返回到請求CPU的技術。這些描述並不詳細描述選擇快取線內所含的所請求字和使其返回到CPU的各種方式,其對於本領域的技術人員將顯而易見並且會不必要地混淆本發明。
為了清晰起見,本文中描述快取層次的資料的處理的大多數描述描述了排他性快取層次。本領域的技術人員將理解所描述的實施例可以延伸以同樣覆蓋包含性記憶體層次及非排他性記憶體層次。
儘管上文在某些示範性電腦架構的情形中進行了描述,但快取存在於電腦系統內和外的許多其它設置中,並且前述實施例同樣適用於這類其它情形。這類使用的實例為虛擬記憶體系統,其將來自緩慢的大量存放區(例如磁碟或快閃記憶體)的資料快取到可以使用動態RAM實施的更快且較小的大量存放
區。電腦系統中的快取的其它實例包含(但不限於)磁碟快取、網站快取以及名稱快取。這類快取的組織和快取機制可能不同于上文所論述的快取的組織和快取機制,例如,一個集合的大小的變化、其集合實施方案以及關聯性等。無論快取機制自身的實施方案如何,本文中所描述的實施例同樣適用於實施各種快取方案。
所揭露的實施例描述例如與各種快取層次相關聯的系統和方法。應理解,本說明書並不意圖限制本發明。相反,示範性實施例意圖涵蓋包含在本發明的精神和範圍中的替代方案、修改以及等效物。此外,在示範性實施例的詳細描述中,闡述眾多具體細節以便提供對本發明的全面理解。然而,本領域的技術人員將理解,可在不具有這類具體細節的情況下實踐各種實施例。
雖然本發明的實施例的特徵和元件是以特定組合在實施例中描述的,但是可以在不具有所述實施例的其它特徵和元件的情況下單獨使用每個特徵或元件,或者在具有或不具有本文所揭露的其它特徵和元件的情況下可以以各種組合使用每個特徵或元件。本申請中所提供的方法或流程圖可以在電腦程式、軟體或固件有形地實施於電腦可讀儲存媒體中以用於通過通用電腦或處理器執行來實施。
本書面描述使用了所揭露的主題的實例以使得本領域的技術人員能夠實踐本發明,包含製作和使用任何裝置或者系統並且執行任何所併入方法。主題的可獲專利的範圍由權利要求書界定,並且可以包含本領域的技術人員構想出的其它實例。這類
其它實例意圖涵蓋在權利要求書的範圍內的。
401:處理器
402、417、418:位址
410:快取位置緩衝器1
411、421:位址標籤
412、422:快取位置表
413、425:區域資訊
414:位置資訊
415、416:多工器
420:快取位置緩衝器2
423:快取位置緩衝器1指針
430:1級快取
431、441:快取線
432、442:後向指針
440:2級快取
450:資料
Claims (19)
- 一種多處理器系統,包括:多個節點、片上網路、目錄、全域末級快取及至少一個記憶體,其中每一節點包含至少一個處理器、第一快取及所述節點專用的第二快取以及所述節點專用的第一快取位置緩衝器,其中所述第一快取位置緩衝器儲存多個第一快取位置緩衝器條目,每一所述第一快取位置緩衝器條目包含位址標籤欄位及快取位置表,其包含多個具有所述位址標籤欄位的位置資訊值,每一位置資訊值指示與相應資料單元相關的位置,其中所述位置資訊值用於從所述第一快取或所述第二快取搜索目標快取線,其中所述片上網路配置為連接所述目錄、所述全域末級快取、所述至少一個記憶體到所述節點,其中所述目錄配置為包含區域資訊,所述區域資訊由指示哪個節點正在跟踪目標資料的位置信息的第一存在位組成的,其中所述目錄配置為,響應於所述多個節點中的第一節點所發送的請求,所述目錄基於所述第一存在位發送與全域一致性操作相關聯的請求至所述多個節點中的一或多個節點,其中所述多個節點中的至少一第二節點配置為基於所述第二節點專用的快取位置緩衝器所包含的第二存在位發送與全域一致性操作相關聯的請求至所述多個節點中的一或多個節點。
- 如申請專利範圍第1項所述的多處理器系統,其中 所述第一快取的級別層次與所述第二快取的級別層次不同。
- 如申請專利範圍第1項所述的多處理器系統,其中所述處理器同樣地存取所述第一快取及所述第二快取,以使用對應於所述目標快取線的所述位置資訊值來搜索所述目標快取線。
- 如申請專利範圍第3項所述的多處理器系統,其中當所述目標快取線儲存於所述第一快取中時,所述處理器從所述第一快取獲取所述目標緩存線的資料單元作為所述搜索的結果。
- 如申請專利範圍第1項所述的多處理器系統,其中所述第一快取及所述第二快取儲存多個快取條目,且所述快取條目包含用於更新所述第一快取位置緩衝器的後向指標及包含資料單元的快取線。
- 如申請專利範圍第5項所述的多處理器系統,更包括所述節點專用的第二快取位置緩衝器,所述第二快取位置緩衝器儲存多個第二快取位置緩衝器條目,每一所述第二快取位置緩衝器條目包含快取位置表及到所述第一快取位置緩衝器的指針。
- 如申請專利範圍第6項所述的多處理器系統,其中所述第一快取位置緩衝器的級別層次與所述第二快取位置緩衝器的級別層次不同。
- 如申請專利範圍第6項所述的多處理器系統,其中 所述後向指標指向至少一個所述第二快取位置緩衝器條目,其中所指出的所述第二快取位置緩衝器條目的所述指標指向所述第一快取位置緩衝器條目,所述第一快取位置緩衝器條目所包含的所述快取位置表對應於所指出的所述第二快取位置緩衝器條目的所述快取位置表。
- 如申請專利範圍第8項所述的多處理器系統,其中在所述第一快取位置緩衝器條目中的一個由所述指標指出時,所述處理器使用所述第一快取位置緩衝器來更新所述目標快取線的位置資訊值。
- 如申請專利範圍第8項所述的多處理器系統,其中在所有所述第一快取位置緩衝器條目並非由所述指針指出時,所述處理器將所述第二快取位置緩衝器條目中的至少一個複製到所述第一快取位置緩衝器,並將所述第一快取位置緩衝器條目中的至少一個複製到所述第二快取位置緩衝器。
- 如申請專利範圍第1項所述的多處理器系統,其中所述處理器通過將對應於所述目標快取線的位址與所述第一快取位置緩衝器條目匹配而獲取對應於所述目標快取線的所述位置資訊值。
- 如申請專利範圍第11項所述的多處理器系統,其中所述位址包含用於與所述位址標籤欄位匹配的標籤部分及用於選擇對應於所述目標快取線的所述位置資訊值的偏移部分。
- 一種包含多個節點及至少一個記憶體的多處理器系統的資料管理方法,每一節點包含至少一個處理器、第一快取及所述節點專用的第二快取以及所述節點專用的第一快取位置緩衝器,所述方法包括:基於與目標快取線相關聯的位址及儲存於多個節點中的第一節點的所述第一快取位置緩衝器中的多個第一快取位置緩衝器條目執行匹配操作,所述第一節點的所述第一快取位置緩衝器的所述多個第一快取位置緩衝器條目的每一者包含位址標籤欄位及快取位置表,所述快取位置表包含與所述位址標籤欄位相關聯的多個位置資訊值,每一位置資訊值能夠將下述任一者識別為與所述位置資訊值相對應的資料單元的位置,所述第一節點的所述第一快取,所述第一節點的所述所二快取,所述至少一個記憶體,以及所述多個節點中所述第一節點之外的節點;以及基於所述匹配操作的結果獲取對應於所述目標快取線的目標資料單元,所述獲取包含:基於將第二節點識別為所述目標資料單元的位置的所述第一節點的所述第一快取位置緩衝器的位置資訊,從所述第一節點發送所述目標資料單元的請求到所述第二節點的快取位置緩衝器。
- 如申請專利範圍第13項所述的資料管理方法,其中所述匹配所述目標快取線更包括:將所述位址的標籤部分與所述第一快取位置緩衝器條目的所述位址標籤欄位元匹配;從所述第一快取位置緩衝器條目獲取所述目標快取線的所述位置資訊值,所述第一快取位置緩衝器條目包含與所述位址的所述標籤部分匹配的所述位址標籤欄位。
- 如申請專利範圍第14項所述的資料管理方法,其中所述獲取所述位置資訊值更包括:通過使用所述位址的偏移部分來從對應於匹配的所述位址標籤欄位的所述快取位置表中選擇所述位置資訊值。
- 如申請專利範圍第13項所述的資料管理方法,其中所述獲取所述目標資料單元更包括:存取所述第一快取或所述第二快取;使用對應於所述目標快取線的所述位置資訊值及所述位址的索引部分從儲存於所述第一快取或所述第二快取中的資料單元中選擇所述目標資料單元。
- 如申請專利範圍第13項所述的資料管理方法,更包括:在更新儲存於所述第一快取或所述第二快取的資料單元的所述位置資訊值時,基於所述第一快取位置緩衝器是否為所述第一快取位置緩衝器條目中的有源條目來確定是否使用所述第一快取位置緩衝器進行更新。
- 如申請專利範圍第17項所述的資料管理方法,更包括:其中所述第一快取及所述第二快取儲存多個快取條目,且所述快取條目包含用於更新所述第一快取位置緩衝器的後向指標及包含資料單元的快取線,其中所述是否使用所述第一快取位置緩衝器進行更新進一步包括:將儲存於第二快取位置緩衝器中的第二快取位置緩衝器條目的快取位置表與對應於所述第二快取位置緩衝器條目的所述第一快取位置緩衝器條目的所述快取位置表進行比較,所述第二快取位置緩衝器的級別層次與所述第一快取位置緩衝器的級別層次不同,所述第二快取位置緩衝器條目分別由所述後向指針指出;以及基於比較結果確定所述有源條目是否用於所述第一快取位置緩衝器條目。
- 一種非暫時性電腦可讀媒體,其儲存致使電腦執行用於呈現包含多個節點及至少一個記憶體的多處理器系統的資訊的過程的程式,每一節點包含至少一個處理器、第一快取及所述節點專用的第二快取以及所述節點專用的第一快取位置緩衝器,其特徵在於,所述過程包括:基於與目標快取線相聯的關位址及儲存於多個節點中的第一節點的所述第一快取位置緩衝器中的多個第一快取位置緩衝器條目執行匹配操作, 所述第一節點的所述第一快取位置緩衝器的所述多個第一快取位置緩衝器條目的每一者包含位址標籤欄位及快取位置表,所述快取位置表包含與所述位址標籤欄位相關聯的多個位置資訊值,每一位置資訊值能夠將下述任一者識別為與所述位置資訊值相對應的資料單元的位置,所述第一節點的所述第一快取,所述第一節點的所述所二快取,所述至少一個記憶體,以及所述多個節點中所述第一節點之外的節點;以及基於所述匹配操作的結果獲取對應於所述目標快取線的目標資料單元,所述獲取包含:基於將第二節點識別為所述目標資料單元的位置的所述第一節點的所述第一快取位置緩衝器的位置資訊,從所述第一節點發送所述目標資料單元的請求到所述第二節點的快取位置緩衝器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762502008P | 2017-05-05 | 2017-05-05 | |
US62/502,008 | 2017-05-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201843593A TW201843593A (zh) | 2018-12-16 |
TWI768039B true TWI768039B (zh) | 2022-06-21 |
Family
ID=62116261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107115139A TWI768039B (zh) | 2017-05-05 | 2018-05-04 | 多處理器系統、資料管理方法及非暫時性電腦可讀媒體 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10713166B2 (zh) |
EP (2) | EP4180973A1 (zh) |
KR (1) | KR20180122969A (zh) |
CN (1) | CN108804349A (zh) |
TW (1) | TWI768039B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3486787B1 (en) * | 2017-11-20 | 2022-09-28 | Samsung Electronics Co., Ltd. | Systems and methods for tag-less buffer implementation |
CN110032407B (zh) * | 2019-03-08 | 2020-12-22 | 创新先进技术有限公司 | 提升cpu并行性能的方法及装置和电子设备 |
US11086791B2 (en) * | 2019-08-29 | 2021-08-10 | Micron Technology, Inc. | Methods for supporting mismatched transaction granularities |
TWI813284B (zh) * | 2021-07-29 | 2023-08-21 | 美商萬國商業機器公司 | 用於使用緩衝概要群組之向量處理之電腦程式產品、電腦系統及電腦實施方法 |
CN114721722B (zh) * | 2022-06-06 | 2022-09-02 | 深流微智能科技(深圳)有限公司 | 多级高速缓存系统及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040030843A1 (en) * | 2002-08-08 | 2004-02-12 | International Business Machines Corporation | Asynchronous non-blocking snoop invalidation |
TW201246066A (en) * | 2011-01-27 | 2012-11-16 | Soft Machines Inc | Guest instruction block with near branching and far branching sequence construction to native instruction block |
TW201245976A (en) * | 2011-01-27 | 2012-11-16 | Soft Machines Inc | Hardware acceleration components for translating guest instructions to native instructions |
US20150347297A1 (en) * | 2014-05-29 | 2015-12-03 | Green Cache AB | Systems and methods for implementing a tag-less shared cache and a larger backing cache |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69810098T2 (de) * | 1997-04-14 | 2003-09-25 | Ibm | Leseoperationen in einem multiprozessorrechnersystem |
US7802058B1 (en) * | 2003-04-30 | 2010-09-21 | Silicon Graphics International | Method for performing cache coherency in a computer system |
US8205046B2 (en) * | 2005-01-31 | 2012-06-19 | Hewlett-Packard Development Company, L.P. | System and method for snooping cache information using a directory crossbar |
US7805588B2 (en) * | 2005-10-20 | 2010-09-28 | Qualcomm Incorporated | Caching memory attribute indicators with cached memory data field |
EP2227749B1 (en) * | 2007-12-06 | 2014-08-27 | Technion Research & Development Foundation Ltd. | Bus enhanced network on chip |
US10402344B2 (en) * | 2013-11-21 | 2019-09-03 | Samsung Electronics Co., Ltd. | Systems and methods for direct data access in multi-level cache memory hierarchies |
US9923730B2 (en) * | 2014-12-17 | 2018-03-20 | Intel Corporation | System for multicast and reduction communications on a network-on-chip |
KR20180078253A (ko) * | 2015-11-04 | 2018-07-09 | 삼성전자주식회사 | 다중 프로세서 시스템에서 코히어런트 메모리를 구현하기 위한 시스템 및 방법 |
-
2018
- 2018-05-02 US US15/968,905 patent/US10713166B2/en active Active
- 2018-05-03 EP EP23150147.9A patent/EP4180973A1/en active Pending
- 2018-05-03 EP EP18170614.4A patent/EP3399422A1/en not_active Ceased
- 2018-05-04 TW TW107115139A patent/TWI768039B/zh active
- 2018-05-04 CN CN201810420118.8A patent/CN108804349A/zh active Pending
- 2018-05-08 KR KR1020180052796A patent/KR20180122969A/ko not_active IP Right Cessation
-
2020
- 2020-05-29 US US16/887,235 patent/US11354242B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040030843A1 (en) * | 2002-08-08 | 2004-02-12 | International Business Machines Corporation | Asynchronous non-blocking snoop invalidation |
TW201246066A (en) * | 2011-01-27 | 2012-11-16 | Soft Machines Inc | Guest instruction block with near branching and far branching sequence construction to native instruction block |
TW201245976A (en) * | 2011-01-27 | 2012-11-16 | Soft Machines Inc | Hardware acceleration components for translating guest instructions to native instructions |
US20150347297A1 (en) * | 2014-05-29 | 2015-12-03 | Green Cache AB | Systems and methods for implementing a tag-less shared cache and a larger backing cache |
US20150347298A1 (en) * | 2014-05-29 | 2015-12-03 | Green Cache AB | Tracking alternative cacheline placement locations in a cache hierarchy |
Also Published As
Publication number | Publication date |
---|---|
US11354242B2 (en) | 2022-06-07 |
TW201843593A (zh) | 2018-12-16 |
US10713166B2 (en) | 2020-07-14 |
KR20180122969A (ko) | 2018-11-14 |
EP4180973A1 (en) | 2023-05-17 |
CN108804349A (zh) | 2018-11-13 |
EP3399422A1 (en) | 2018-11-07 |
US20180322053A1 (en) | 2018-11-08 |
US20200293449A1 (en) | 2020-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11237969B2 (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 | |
TWI768039B (zh) | 多處理器系統、資料管理方法及非暫時性電腦可讀媒體 | |
EP3486786B1 (en) | System and methods for efficient virtually-tagged cache implementation | |
TW201937372A (zh) | 多處理器系統、資料管理方法以及非暫態電腦可讀取儲存媒體 | |
EP3486787B1 (en) | Systems and methods for tag-less buffer implementation | |
KR20240082308A (ko) | 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법 |