TWI795470B - 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體 - Google Patents
資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體 Download PDFInfo
- Publication number
- TWI795470B TWI795470B TW107141184A TW107141184A TWI795470B TW I795470 B TWI795470 B TW I795470B TW 107141184 A TW107141184 A TW 107141184A TW 107141184 A TW107141184 A TW 107141184A TW I795470 B TWI795470 B TW I795470B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- victim
- location
- buffer
- data
- 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/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/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/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/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/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
-
- 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/6042—Allocation of cache space to multiple users or processors
- G06F2212/6046—Using a specific cache allocation policy other than replacement policy
-
- 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
Abstract
一種用於計算機系統的資料管理方法,所述計算機系統包括至少一個處理器及至少第一快取、第二快取、犧牲緩衝器(VB)及被分配給所述至少一個處理器的記憶體,所述方法包括:選擇欲自所述第一快取逐出的犧牲快取行;自一組所述VB中找到與所述犧牲快取行對應的VB位置;將所述犧牲快取行的資料複製至所述VB位置的資料欄位;將與所述犧牲快取行相關聯的後向指針(BP)複製至所述VB位置的BP欄位;以及利用所述VB回收所述第一快取的犧牲空間。
Description
本申請案主張在2017年11月20日在美國專利與商標局提出申請的美國臨時申請案第62/588,712號的優先權,所述美國臨時申請案的揭露內容全文併入本案供參考。
本發明概念的至少一些示例性實施例大體而言是有關於存取計算機記憶體裝置中的資料的方法及系統,且更具體而言是有關於用於構建無標籤緩衝器的機制及技術。
如今的處理器常常配備有快取,快取可儲存於一些大容量記憶體中儲存的資料及指令的副本。此種大容量記憶體如今最流行的實例是動態隨機存取記憶體(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))系統。
當CPU 101請求快取中存在的資料(稱為「快取命中(cache hit)」)時,所述請求可較對快取中不存在的資料進行存取(稱為「快取未命中(cache miss)」)快得多地得到服務。通常,假設兩種版本的應用原本具有相似的性質,則在CPU 101上運行的經歷較少快取未命中的應用與遭受較多快取未命中的相同應用相較將執行得更快並消耗較少的能量。因此,已對用於避免快取未命中的技術投入了相當大的努力,且亦設計了可使快取命中及快取未命中就它們的存取延遲以及該些記憶體事務所消耗的能量而言高效的構建方式。
為了理解如何開發針對此快取命中/快取未命中問題的解決方案,理解快取組織及術語將是有用的。通常,資料是以較處理器的字的大小大的固定塊(被稱為快取行)的形式配置至快取中。如今常用的快取行大小例如為32位元組、64位元組及128位元組,但如熟習此項技術者將理解,對於各種快取構建方式而言亦存在更大及更小的快取行大小。對於一些快取構建方式而言,快取行大小亦可為可變的。
在記憶體208中組織資料佈局的常用方式是採用對每一個資料字進行靜態映射以使每一個資料字駐留於一個特定快取行中的方式。每一個快取通常具有索引功能,所述索引功能對快取的可供每一個快取行駐留的部分(被稱為組)進行辨識。所述組可包含用於同時容納一或多個快取行的空間。組可容納的快取行的數目被稱為組的關聯性。常常說,快取中所有組的關聯性是相同的。該些快取常常被稱為組關聯快取。關聯性亦可在各個組之間變化。組中的每一個可容納快取行的空間被稱為通路。
為確定儲存於每一組中的每一個快取行的身份,快取中的快取行各自具有相關聯的某一辨識符。此種辨識符的一個常用實例是位址標籤。當在快取中查找特定快取行時,可使用快取行的位址來確定快取中可供所述快取行駐留的組。將對應組的快取行的位址標籤與用於辨識快取行的位址的標籤部分(參見,例如圖3所繪示的且在以下闡述的TAG及ATAG)進行比較來判斷所需要的快取行是否駐留於所述快取中,且若是,則判斷所需要的快取行駐留於哪一通路中,即所需要的快取行駐留於可容納快取行的組中的空間中的哪一個空間中。通常,該些ADDR位址標籤的大小相當大且可處於30位元至40位元的範圍內,所述範圍為典型的快取行的大小的6%至10%。
常常,每一個快取具有內置方略來判斷將哪一個快取行保留於組中且將哪一個快取行逐出(亦被稱為「替換」)以為被放入至所述組中的新的快取行騰出空間,此被稱為快取的替換策
略。被替換的快取行被稱為犧牲行或被替換的快取行。與快取記憶體結合使用的流行的替換策略包括但不限於:最近最少使用(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快取。此使對所請求資料所駐留的位置進行定位的任務更複雜,此乃因始終對下一更高的快取層階中的資料進行搜索將不再足夠。需要用於搜索其他節點的快取以及用於使資料的儲存於不同節點中的多個副本保持同調的機制。
作為進一步的背景資訊,圖4是示出無標籤快取的示例性構建方式的方塊圖。此種快取依賴於與匹配的快取表項(cache table entry,CTE)的所請求快取行(有時被稱為區位置)對應的
位置資訊(location information,LI)(有時被稱為快取行指針(cache line pointer,CP))來指示所請求快取行駐留於哪一快取中以及所述快取中的哪一位置中。此將使計算機系統在合適的快取處實行直接快取查找。圖4所示無標籤快取的示例性構建方式包括二層階快取層次結構以及二層階快取位置緩衝器(cache location buffer,CLB)層次結構,其中第一層階以虛擬方式進行存取且第二層階以物理方式存取。
舉例而言,在圖4所示系統(所述系統可為多處理器系統中的節點)中,位置資訊可將L1快取與L2快取區分開。所述位置資訊亦可能夠將在多處理器系統的未在此圖中示出的其餘部分中存在的其他快取區分開。圖4示出無標籤節點,所述無標籤節點可連接至多處理器系統中的其他節點,所述多處理器系統具有由組關聯快取及CPU(所述CPU可包含一或多個傳統快取,此處繪示為L0)形成的二層階快取層次結構,其中CPU 401產生位址(ADDR)402。圖4亦示出由組關聯CLB形成的二層階CLB層次結構,其中第一層階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儲存對應區(亦被稱為微頁面)的快取行的位置資訊(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。
對於由關聯性相同的組關聯快取組成的快取層次結構而言,每一條LI中的位元的數目取決於通路的數目以及快取層次結構的被CLB覆蓋的快取的數目。可為無效圖案(「MEM」)預留一
個LI值。在此構建方式中,LI的位元數目等於通路的數目加上被CLB覆蓋的快取層階的數目加上1(即,(通路+層階+1))的以2為底的對數。若不同的快取層階的通路的數目發生變化,或者若使用除組關聯快取之外的快取,則熟習此項技術者應理解,可存在其他LI表示形式。通常,LI的大小較典型的位址標籤的大小小得多。可利用具有5個位元的LI來對在每一層階處具有16路關聯快取的3層階快取層次結構進行編碼。
在圖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層階的數目不需要為相同的。
圖5是示出包括兩個CPU的計算機系統的一部分的方塊圖,所述兩個CPU連接至二層階快取層次結構及二層階快取位置緩衝器(CLB)層次結構。舉例而言,圖5所示計算機系統包括兩個CPU節點(580及590),所述兩個CPU節點中的每一者在它們各自的一層階快取層次結構內各自具有一個CLB(CLB1A 503及CLB1B 513)以及專有快取L1快取(504及514)。系統亦包含在所述兩個CPU 501與CPU 511之間共享的全域共享L2快取523(有時被稱為末層階快取(last-level cache,LLC))。
在CLB1(513或503)中進行的查找例如利用與CLB1 410相似的技術、基於由各自相應的CPU(501、511)產生的位址來選擇單個LI。如由CLB1A 503及CLB1B 513中所示出的所述兩個CLT項發出的三個箭頭所表示,所選擇的LI可將位置辨識為處於對應的L1快取(分別為504及514)中、處於L2快取523中或處於其他節點(分別由570及571示出)中。在此實例中,CLB1A 503將其存取的資料辨識為共享L2快取523中的505,同時CLB1B 513將其存取的資料辨識為其L1 514中的DATA(由實線箭頭示出)。
圖6是示出包括具有單個單片式末層階快取(monolithic
last level cache)的無標籤快取層次結構的計算機系統的一部分的方塊圖。轉至圖6,圖6示出無標籤多處理器記憶體系統的概括圖。此實例由介於節點-1 601至節點-N 699範圍內的N個節點組成。每一個節點具有X層階CLB及Y層階專有快取(即,節點專有的快取)。節點藉由晶片上網路(network on chip,NoC)650電路彼此連接於一起。NoC 650亦將節點連接至目錄(directory,DIR)660、全域末層階快取(LLC)670及記憶體680。DIR 660是以與CLB相似的方式進行組織的且具有由至少位址標籤(AT)661以及快取位置表(CLT)662組成的項。項亦可包含額外的資訊(例如,區資訊(RI)663),所述額外的資訊會在下文中更詳細地闡述。節點中的最高層階CLB(CLB-X 630、693)溢出至目錄/自DIR進行填充。DIR亦在使快取的內容與CLB的內容保持同調及一致的同調性協定中發揮核心作用。
CLB與DIR可被視為形成一個包容性「快取層次結構」,以用於對具有與資料快取層次結構的內容相關的資訊的元資料進行快取。包含L-1至L-Y以及LLC的資料層次結構可被視為單獨的快取層次結構而不具有強加於所述資料層次結構的包容性質。所述資料層次結構可例如為非包容性的、包容性的或獨佔性的。
在圖6所示實例中,每一個節點具有一個CPU,所述一個CPU可能包含零個、一或多個傳統的基於標籤的快取(繪示為LO-D及LO-1)。無法由任一個傳統的L0快取滿足的記憶體請求將在節點的CLB-1(例如,610)中產生查找以搜索對應的CLB
項的CLT,此可能利用與圖4中的CLB-1 410相似的方案來進行。若在CLB-1中找到對應的項,則與所請求資料單元對應的位置資訊(LI)可位於所述對應項的CLT欄位(612)中。LI辨識可從中找到所請求資料單元的位置。駐留於節點-1 601中的CLB 610中的LI可將節點各自的快取(L-1 620至L-Y 640)中的一者、LLC(670)、記憶體680或其他節點(節點-2 690至節點-N 699)中的任何節點辨識為正在追蹤的資料單元的位置。LI亦可對所辨識的快取內的資料單元的位置進行辨識。LI亦可指示資料單元是否駐留於與節點連接的CPU 602的傳統快取LO-D或LO-1中的任何傳統快取中。
若快取位置(或記憶體)被辨識為可從中找到資料的位置,則藉由直接對所述快取進行讀取而無需查詢目錄(DIR)660便可滿足所述請求。若節點被辨識為可從中找到所請求資料的位置,則向所述節點的CLB-X發送請求並採用與針對圖4所論述的EXTERNAL REQUESTS相似的方式來滿足所述請求。仍然不需要查詢目錄來找到資料。此與最傳統的基於目錄的同調方案不同,在最傳統的基於目錄的同調方案中,則查詢並更新目錄來進行節點外的存取。
即使圖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中位置更低的CLB層階)之間可強制執行包容。作為實例,為使資料在快取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 670與節點中的快取(例如,快取L-1 620至L-Y 640)之間存在包容性。舉例而言,與特定位址對應的有效資料可存在於L1快取620中,但不存在於快取L-Y 640中或LLC快取670中。此為快取旁通優化開闢了道路,
舉例而言此時僅需要在L1快取中配置流資料(實際上,若存在L0快取,則僅在L0快取中配置流資料)即可,而不在其他層階處配置串流資料。然而,需要在全部層階處配置對應的CLB項(其通常小於對應的資料區的50分之一)。
目錄(DIR)660包含CLB類資訊:位址標籤(AT)661、快取位置表(CLT)662及區資訊(RI)663。儘管該些欄位具有與CLB(例如,CLB-X 630)的欄位相同的名稱,然而該些欄位的內容可不同於對應的CLB欄位。DIR 660的RI欄位663可包含N個存在位元(presence bit,PB),所述存在位元指示哪些節點正在追蹤所述區,其中N對應於系統中節點的數目。若PB中的位元K被設置,則意味著在節點K的CLB-X中存在對應的項。此亦意味著在節點K的快取層階L-1至L-Y中的任何快取層階中可存在經快取的資料,且亦意味著在節點K中在CLB-1中可存在對應的項,此將使節點K中的CPU能夠對對應區的任何快取行進行存取。儘管參照PB資訊的N位元構建方式進行了說明,然而熟習此項技術者將認識到,可使用用於目錄構建的許多可擴展技術(包括但不限於粗粒度、受限指針以及鏈接列表)來構建相似的功能。
可使用PB來對區進行分類。若對應項在目錄660中的PB中的確切的一個PB被設置,則將區分類為專有區(private region,PR)。在大量的研究基準中,經驗研究表明所有被存取的區中平均大約80%為PR區。區分類PR意味著所述區的資料可僅存在於其對應的PB被設置的一個節點中,且亦保證此時其他節點
不可存取來自所述區的資料。其PB是DIR中唯一被設置的位元的節點601可被告知對應區是專有區(PR)且可將該些區分類記錄於節點601的CLB中的(例如,CLB-1 610至CLB-X 630中的)對應的區資訊(RI)中。PR可在許多方面進行高效存取。舉例而言,不需要全域同調來使節點獲得對於節點中存在的資料單元的寫入許可(所述節點當前僅具有對節點中存在的資料單元的讀取許可)(不需要將資料單元自狀態S升級至狀態E),此乃因只有一個節點可具有所述節點的資料的快取副本且其他節點不可存取所述區的資料單元中的任何資料單元。亦可高效地構建PR的資料單元的移動,此乃因資料可在整個快取層次結構中上下移動(例如,自L-X至LLC實行逐出或者將資料自LLC移動至L-1),而無需告知節點外部的任何結構。亦需要將移動記錄於節點本地的CLB(610至630)中。此意味著儲存於節點的CLB(610至630)中的PR的CLT資訊可不同於(例如,更新於)儲存於DIR 660中的區的CLT資訊。
當第二節點(例如,690)對PR進行存取(經驗研究表明此是相對罕見的事件)時,在第二節點的全部CLB 691至693中皆將出現未命中,且第二節點將向DIR 660發送請求以得到對於存取資料而言所需的合適的位置資訊LI且亦使得能夠在CLB 691至693中創建第二節點自己的CLB項。由於此請求是針對PR的,因此DIR 660可不具有最新資訊,目錄660需要自節點601得到最新位置資訊並確保節點601的CLB不再將所述區標記為
PR,更新各自的關於所述區的CLT資訊,對與節點-2 690對應的PB進行設置並將所述區的合適的CLB資訊發送至節點690。節點-2 690現在可創建節點-2 690各自的與所述區相關聯的本地CLB項。可要求節點601在將最新位置資訊發送至DIR 660之前完成節點601的所有正在進行的針對所述區的直接對資料(direct-to-data)記憶體請求。
若亦有另一節點(例如,節點-N 699)對所述區進行存取,則此另一節點亦會在其所有的CLB中出現未命中且亦將向DIR 660發送請求,DIR 660現在便會具有關於所述區的最新資訊且可向節點-N 699回覆合適的資訊且亦將對所述區的針對請求節點(即,節點699)的PB進行設置。
多於一個PB被設置的區被分類成共享區(shared region,SR)。此意味著多於一個節點具有追蹤此區的位置資訊的CLB。此亦意味著對應PB被設置的節點可將所述區的資料單元儲存於所述節點的快取(例如,620至640)中的任何快取中。若所述區被分類為SR,則來自CPU(例如,602)的存取資料單元的請求在無法在節點內在本地得到滿足(例如,藉由快取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頁且此20%中75%不需要對DIR進行存取,則在利用上述快取結構及技術中的至少一些時,所述全域同調事務中95%不需要對DIR進行存取,而對於傳統的基於目錄的協定,所有全域同調事務皆需要對DIR進行存取。
由於SR具有若干節點追蹤其資料單元的位置,因此該些資料單元移動需要反映於追蹤所述區的所有節點中(即,該些節點具有所述區的現用的CLB項)且發生移動的資料單元的位置資訊會在該些節點中進行更新。應採用同調方式更新追蹤資料單元的不同節點的CLB的位置資訊以使得CLB就資料駐留於何處(被稱為其主位置)達成共識。極有可能或者作為另外一種選擇亦可保證基於自CLB取回的位置資訊進行存取的資料單元位置包含正確資料(被稱為確定性)。
此種資料單元移動的一個常見原因是全域同調寫入請求,即當前不具有對資料單元的寫入許可的請求節點藉由全域同調請求(例如無效請求或獨佔性讀取請求)來請求得到寫入許可。在已完成所述請求之後,資料單元將只駐留於發出請求的節點中。
發出請求的節點(例如,601)可將全域同調寫入請求發送至目錄660,目錄660對對應的目錄項進行定位、取回所述區的對應的PB並向對應PB被設置的所有節點(除發出請求的節點之
外)轉發請求,該些節點被稱為從節點(例如,節點690及699)。在從節點已確認在從節點中發起的對於資料單元的任何未來的請求皆將被引導至發出請求的節點時,從節點發送ACK消息。此可例如藉由將節點的對於位於所述節點的CLB中的資料單元的位置資訊改變成指向發出請求的節點(601)來達成,其將成為新的主節點。ACK消息可被發送至DIR 660,DIR 660匯總ACK消息且一旦已接收到所有ACK便向發出請求的節點發送ACK,或者被直接發送至發出請求的節點601。一旦發出請求的節點知曉已接收到所有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(660)將請求轉發至從節點(例如,690及699)。一旦從節點已將從節點的對應位置資訊更新至新位置(671),從節點便發送ACK消息。一
旦發出請求的節點知曉所有ACK皆已發送,則發出請求的節點便已獲得對於資料單元的逐出許可且可回收舊位置並完成請求。在請求完成後可向DIR 660發送完成消息。
從節點在其對於所請求快取行的未決請求(例如,所有直接對主機請求)中的一些請求完成之前可不發送ACK消息。
目錄660可構建阻止機制,所述阻止機制確保對於每一資料單元而言可存在至多一個特定類型的未決全域請求。該些請求類型的實例可為全域同調寫入請求及全域同調逐出請求。對於快取行進行的此種阻止會在已完成所述請求之後結束,或者對於快取行進行的阻止的結束是由同調性協定以其他方式規定。阻止機制可為精確的,例如在目錄中由每個資料單元一個鎖來構建,或者可為過於近似的,此時位址散列至有限的鎖池且對資料單元的阻止將會阻止對散列至同一鎖的所有其他資料單元的存取。
所述阻止可以區粒度而非資料單元粒度來進行,且CLB/目錄溢出/填充請求中的一些請求亦需要被阻止直至它們的更新已完成為止。此會保證在節點及目錄使CLB資訊溢出/填充的同時不存在正在進行的全域同調寫入請求。
另一種有用的區分類是與區相關聯的PB在DIR 660中皆未被設置的區。此意味著對於所述區而言,資料單元無法存在於節點的快取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)仍可具有與其快取資料單元相關聯的位址標籤。
總結以上參照圖3至圖6進行的論述,熟習此項技術者應理解,快取層次結構可利用無標籤快取來構建,所述無標籤快取可提供更高效的方式來表示快取。在無標籤快取中,資料單元(快取行)不具有相關聯的位址標籤。而是,後向指針指向CLB項,所述CLB項藉由利用位置資訊指針「指向」所述快取行的位置來追蹤快取行。然而,若需要自快取快速地移除快取行,則無標籤快取無法提供簡單手段來將快取行放置於傳統的緩衝器(例如,犧牲緩衝器)中。通常,傳統犧牲緩衝器中的快取行需要為可搜索的,且因此需要具有附加至快取行的位置標籤。
因此,期望提供在無標籤快取層次結構中提供高效緩衝器功能的系統及方法。
根據本發明概念的至少一些示例性實施例,提供一種用於計算機系統的資料管理方法,所述計算機系統包括至少一個處理器及至少第一快取、第二快取、犧牲緩衝器(victim buffer,VB)及被分配給所述至少一個處理器的記憶體,所述方法包括:選擇欲自所述第一快取逐出的犧牲快取行;自一組所述VB中找到與所述犧牲快取行對應的VB位置;將所述犧牲快取行的資料複製至所述VB位置的資料欄位;將與所述犧牲快取行相關聯的後向指針(BP)複製至所述VB位置的BP欄位;以及利用所述VB回收所述第一快取的犧牲空間。
根據本發明概念的至少一些示例性實施例,一種多處理器系統包括:記憶體;多個節點,所述多個節點中的每一者包括至少一個處理器、多個快取及多個快取位置緩衝器(CLB);以及一或多個犧牲緩衝器(VB),其中,所述多個節點中的第N個節點的處理器被配置成自所述一或多個VB中的VB找到與被自所述第N個節點的所述多個快取中的第一快取逐出的犧牲快取行對應的VB位置,將所述犧牲快取行的資料及與所述犧牲快取行相關聯的後向指針複製至所述VB位置的欄位,並利用所述VB回收所述第一快取的犧牲空間。
根據本發明概念的至少一些示例性實施例,提供一種包括計算機可執行指令的非暫態計算機可讀取儲存媒體,所述計算機可執行指令在由至少一個處理器執行時使所述至少一個處理器實行包括以下的操作:選擇欲自被分配給所述至少一個處理器的
第一快取逐出的犧牲快取行,自被分配給所述至少一個處理器的一組犧牲緩衝器(VB)中找到與所述犧牲快取行對應的犧牲緩衝器位置,將所述犧牲快取行的資料複製至所述VB位置的資料欄位,將與所述犧牲快取行相關聯的後向指針(BP)複製至所述VB位置的BP欄位,利用所述VB回收所述第一快取的犧牲空間,以及控制對以下進行的回寫操作:被分配給所述至少一個處理器的第二快取,或者被分配給所述至少一個處理器的記憶體。
101、301、401、501、511、602:中央處理單元(CPU)
102:第一層階專有快取/L1快取/1層階快取
103:第二層階快取/快取
104:磁碟/輔助儲存裝置
105、680:記憶體
200:指令快取
201:指令轉譯旁查緩衝器(ITLB)
202:CPU核心
205、303:資料轉譯旁查緩衝器(DTLB)
206:資料快取
207:2層階快取
208:大容量記憶體/記憶體
302:虛擬位址
304、308:位址標籤(ATAG)
305:物理頁訊框(PPF)
306、310、415、416:多工器(MUX)
307、430、830:L1快取
309:資料
311:L2快取
316:物理位址(PADDR)
317:L1未命中
318、319:邏輯
402:位址(ADDR)
410:第一層階CLB CLB1/CLB-1
411、421、661:位址標籤(AT)
412:快取位置表
413:區資訊
414:位置資訊(LI)
417、418:位址
420:第二層階CLB CLB2
422、762、662:快取位置表(CLT)
423:CLB1指針(CIP)
431:快取行(DATA)
432:後向指針
440:L2快取/快取
441:快取行(DATA)/資料單元
442、832:後向指針(BP)
503:CLB1A/CLB1
504:專有快取L1快取/L1快取
505:快取行
513:CLB1B/CLB1
514:專有快取L1快取/L1快取/L1
523:全域共享L2快取/L2快取/共享L2快取
570、571、790、799:節點
580、590:CPU節點
601:節點-1/節點/發出請求的節點
610:CLB-1/CLB
612:CLT欄位
620:L-1/快取L-1/L1快取/快取
630、693:CLB-X/CLB
640:L-Y/快取L-Y/快取
641:位置/舊位置
650:晶片上網路(NoC)
660、760:目錄(DIR)
663:區資訊(RI)/RI欄位
670:全域末層階快取(LLC)/LLC快取/末層階快取
671:新位置
690:節點-2/第二節點/節點/從節點
691:CLB
699:節點-N/節點/從節點
701:多處理器節點/節點/NODE
720:專有快取L-1
740:專有快取/L-Y
770:共享快取LLC
771:VB
802:虛擬ADDR/ADDR
813:區資訊(RI)
814:層階/通路資訊
831:髒快取行/資料
860:緩衝器/組關聯VB/VB
藉由參照附圖詳細闡述本發明概念的示例性實施例,本發明概念的示例性實施例的以上及其他特徵及優點將變得更顯而易見。所述附圖旨在繪示本發明概念的示例性實施例而不應被解釋為限制申請專利範圍的預期範圍。除非明確地注明,否則所述附圖不應被視為按比例繪示。
圖1是示出計算機系統的一部分的方塊圖。
圖2是用於闡釋計算機系統的示例性快取層次結構的方塊圖。
圖3是用於闡釋包括組關聯快取及組關聯資料轉譯旁查緩衝器(TLB)的二層階快取層次結構的傳統構建方式的方塊圖。
圖4是示出無標籤快取的示例性構建方式的方塊圖。
圖5是示出包括兩個CPU的計算機系統的一部分的方塊圖,所述兩個CPU連接至二層階快取層次結構及二層階快取位置緩衝器(CLB)層次結構。
圖6是示出包括具有單個單片式末層階快取的無標籤快取層次結構的計算機系統的一部分的方塊圖。
圖7是示出根據本發明概念至少一些示例性實施例的包括無標籤快取層次結構以及犧牲緩衝器的計算機系統的一部分的方塊圖,所述無標籤快取層次結構具有單個單片式末層階快取。
圖8是示出根據本發明概念至少一些示例性實施例的包括兩個CPU以及犧牲緩衝器的計算機系統的一部分的方塊圖,所述兩個CPU連接至二層階快取層次結構及二層階CLB層次結構。
按照本發明概念的所述領域中的傳統,在圖式中採用功能區塊、單元及/或模組來闡述及示出實施例。熟習此項技術者應理解,該些區塊、單元及/或模組是由例如邏輯電路、分立部件、微處理器、硬接線電路(hard-wired circuit)、記憶體元件、配線連接件等可利用基於半導體的製作技術或其他製造技術形成的電子(或光學)電路以實體方式構建。在所述區塊、單元及/或模組由微處理器或類似元件構建的情形中,所述區塊、單元及/或模組可利用軟體(例如,微代碼)進行程式化以執行本文所論述的各種功能且可視需要由韌體及/或軟體來驅動。作為另外一種選擇,每一區塊、單元及/或模組皆可由專用硬體來構建,或者作為用於實行一些功能的專用硬體與用於實行其他功能的處理器(例如,一或多個經過程式化的微處理器及相關聯的電路系統)的組合來構建。另外,實施例的每一區塊、單元及/或模組皆可在不背離本
發明概念的範圍的條件下在實體上分成二或更多個交互作用且分立的區塊、單元及/或模組。另外,實施例的區塊、單元及/或模組可在不背離本發明概念的範圍的條件下在實體上組合成更複雜的區塊、單元及/或模組。
駐留於快取中的快取行可被逐出且可被其他快取行替換。因此,可能需要將被逐出的快取行自快取移除以為新的快取行騰出空間。若被逐出的快取行是髒的,則可能需要將被逐出的快取行回寫至下一層階快取或者回寫至記憶體。
如圖4及圖5中所繪示,無標籤快取的優點之一在於在各個快取層階之間不強制執行包容(inclusion)。不需要分別在下一層階L2快取440及523中給駐留於L1快取430或514中的快取行分配空間。無標籤快取亦可不需要在下一層階L3或末層階快取(LLC)670中給所述快取行分配空間,如圖6所繪示。因此,可能需要將自無標籤L1快取逐出的快取行回寫至記憶體。在無標籤快取的多處理器構建方式中,將髒快取行自L1逐出至記憶體可採用以下三個步驟來實行:首先將快取行複製至記憶體;一旦可保證已全域地實行了向記憶體的複製,便將新主訊息(NewMaster message)發送至具有對應區的快取位置緩衝器(CLB)項的其他節點以通知所述其他節點:記憶體並非快取行的新主位置;且最後,可回收L1快取中的快取行的位置。由於記憶體相對慢且通常駐留於很遠的位置,因此自發起L1快取逐出直至完成L1快取逐出所耗費的時間可非常長且遠長於自L2放入新的快取行所耗費
的時間。因此,為了不耽擱執行的進度,確定更高效的方式來安置被逐出的快取行可為有利的。
計算機系統可利用犧牲緩衝器(VB)來快速地安置來自L1快取的犧牲行。VB是用於儲存正在被逐出的快取行(以及所述快取行的位址標籤)的小的及關聯性的緩衝器。對於某些讀取請求以及來自系統的其餘部分的外部請求而言,需要搜索VB中的快取行的位址標籤來進行匹配。在匹配的情形中,可藉由讀取對應的快取行來滿足讀取請求。VB的優點在於被逐出的快取行可自L1快取被快速地移除且L1快取中的被逐出的快取行的前一位置可在幾個循環內由新的快取行重複使用。然而,在無標籤系統中,並非所有的請求皆攜帶其所請求快取行的完整位址,由此使得可能難以或者作為另外一種選擇無法在構建無標籤快取層次結構的計算機系統中基於位址來實行犧牲緩衝器搜索。另外,無標籤快取避免了成本高昂的基於位址的關聯性搜索以提供能量高效的構建方式。因此,開發新的無標籤緩衝器解決方案可為有利的。
圖7是示出根據本發明概念至少一些示例性實施例的包括無標籤快取層次結構以及犧牲緩衝器的計算機系統的一部分的方塊圖,所述無標籤快取層次結構具有單個單片式末層階快取。圖8是示出根據本發明概念至少一些示例性實施例的包括兩個CPU以及犧牲緩衝器的計算機系統的一部分的方塊圖,所述兩個CPU連接至二層階快取層次結構及二層階CLB層次結構。
轉至圖8,圖8中的計算機系統可具有與圖4所示計算機
系統的結構相似的結構。根據至少一些示例性實施例,圖8所示計算機系統與圖4所示計算機系統的不同之處可在於,圖8所示計算機系統被擴展成具有無標籤組關聯犧牲緩衝器(tag-less set-associative victim buffer)VB(緩衝器860)。VB被以與L1快取及L2快取相似的方式加上索引。索引可利用虛擬ADDR 802的位元由虛擬索引形成(假設ADDR是虛擬位址)、被形成為來自ADDR 802的物理索引(假設ADDR是物理位址)或者藉由利用作為與每一區相關聯的區資訊(RI)813的一部分進行儲存的一些物理位址(PA)而被形成為物理位址。另外,根據本發明概念的至少一些示例性實施例,組關聯VB 860的通路資訊是以與L1快取及L2快取的通路資訊的生成方式類似的方式生成的。組關聯VB 860的通路資訊被儲存為位置資訊(LI)的一部分且由層階/通路資訊814攜帶。根據本發明概念的至少一些示例性實施例,VB 860可看起來像CLB1的又一個組關聯快取層階。然而,VB 860的關聯性可不同於L1快取及L2快取中的一者或兩者的關聯性。因此,用於VB 860的項的LI編碼可具有與用於L1快取及L2快取中的一者或兩者的項的LI編碼不同的格式。
因此,根據本發明概念的至少一些示例性實施例,圖8所示計算機系統可接收對於犧牲快取行的請求。因應於對於犧牲快取行的請求,計算機系統可將請求中所包括的位址與和第一快取(例如,L1快取)及第二快取(例如,L2快取)中的至少一者相關聯的CLB中的多個項進行匹配。另外,計算機系統可基於對請
求中所包括的位址的所述匹配而產生層階及/或通路資訊;以及利用所產生的層階及/或通路資訊自VB(例如,VB 860)讀取所請求犧牲快取行的資料。
根據本發明概念的至少一個示例性實施例,VB 860中的每一個項是由至少以下三部分形成:快取行資料DAT;後向指針BP,對儲存與VB項相關聯的LI的CLB項進行辨識;以及犧牲空間辨識符(victim space identifier,VS),儲存犧牲快取行應被寫入至的較高層階快取的LI或者犧牲快取行應被寫入至的記憶體中的位址。根據本發明概念的至少一些示例性實施例,一種特殊狀態機汲取VB的項並實行實際的回寫操作。
根據本發明概念的至少一個示例性實施例,VB 860用於容納以較高層階快取(例如,L3或LLC)或記憶體為目標的L1快取及L2快取二者的犧牲行(即,被逐出的快取行),儘管在下文中僅闡釋L1逐出功能。
根據本發明概念的至少一個示例性實施例,藉由以下步驟自L1快取830逐出快取行:
1)選擇欲自L1快取830逐出的髒快取行831。
2)在VB組中找到與所選擇的快取行對應的VB 860中通路=W的自由位置,其被稱為VB位置。
3)將DATA 831複製至VB位置的DAT欄位且將與犧牲快取行相關聯的後向指針(BP)寫入至VB位置的VB欄位。
4)使用BP 832來找到CLB內對DATA 831進行追蹤的對應區(無
需進行位址比較來找到所述區)。
5)將所述區中的位置資訊改變成指向VB位置。舉例而言,將所述區內的LI改變成指向VB位置(層階=VB,通路=W);且自區的RI 813讀取物理位址部分(即,RI的包括物理位址的一部分)。
6)現在可回收L1快取中的犧牲空間。
7)在針對記憶體進行犧牲的情形中,將物理位址寫入至VB位置的VS欄位。另外,舉例而言,在針對另一快取(根據本發明概念的至少一些示例性實施例,所述另一快取可為較高層階的快取,例如,L2快取)進行犧牲的情形中,將目的地的LI(例如,L2快取的位置資訊)寫入至VS欄位。
8)實行回寫操作。舉例而言,狀態機可開始其回寫工作並將快取行複製至記憶體位置或複製至較高層階記憶體(例如,L2快取位置);發送新主訊息;以及將CLB中的LI改變成指向記憶體(即,藉由儲存值「Mem」作為LI值)。CLB項是利用VB中與犧牲快取行相關聯的BP找到的。
9)當上述回寫操作完成時,可釋放所述VB位置。
根據本發明概念的至少一些示例性實施例,上述回寫操作可包括:自VB位置的犧牲空間辨識符欄位讀取物理位址;以及將資料欄位的犧牲快取行的資料複製至記憶體中與物理位址對應的空間。根據本發明概念的至少一些示例性實施例,上述回寫操作可包括:在CLB中找到被BP欄位的BP指向的項;以及將所述項的位置資訊改變成指向記憶體中的被實行回寫操作的空間。根據
本發明概念的至少一些示例性實施例,上述回寫操作可包括:自VB位置的犧牲空間辨識符欄位讀取位置資訊;以及將資料欄位的犧牲快取行的資料複製至第二快取的與所述位置資訊對應的項。
VB可為處於2層階快取層次結構的邊緣處的位置(如圖8所示),可位於L1快取與L2快取(未示出)之間,或者可位於多處理器節點701的專有快取L-1 720至L-Y 740與多處理器系統中的共享快取LLC 770之間(如圖7所示)。在此種配置中,可使用VB緩衝器來快速安置自節點本地的快取被逐出的快取行,如結合圖8所論述,且亦可加速自節點701進行的強制逐出。
如圖7所示,根據本發明概念的至少一些示例性實施例,一種計算機系統可包括記憶體;多個節點(例如,節點NODE 1至NODE N),其中所述多個節點中的每一者包括至少一個處理器(例如,CPU CPU-1及CPU-2)、多個快取(例如,節點NODE 1至NODE N中的快取L-1至L-Y)及多個快取位置緩衝器(CLB)(例如,節點NODE 1至NODE N中的快取位置緩衝器CLB-1至CLB-X)。根據本發明概念的至少一些示例性實施例,圖7所示計算機系統亦包括一或多個犧牲緩衝器(VB)(例如,VB BUFF 1及BUFF 2)。另外,根據本發明概念的至少一些示例性實施例,所述多個節點(例如,節點NODE 1至NODE N)中的第N個節點的處理器(例如,圖7中的NODE N的CPU,圖中未示出)被配置成自所述一或多個VB(例如,VB BUFF 1及BUFF 2)中與被自所述第N個節點的所述多個快取中的第一快取(例如,圖7
中的NODE N的L-1快取,圖中未示出)逐出的犧牲快取行對應的VB找到VB位置,將犧牲快取行的資料及與犧牲快取行相關聯的BP複製至VB位置的欄位,並利用VB回收第一快取的犧牲空間。
根據本發明概念的至少一些示例性實施例,所述第N個節點的處理器可更被配置成利用後向指針(BP)找到所述第N個節點中的快取位置緩衝器(CLB)中用於追蹤所述犧牲快取行的所述資料的區,並將所述區中的位置資訊改變成指向所述VB位置。根據本發明概念的至少一些示例性實施例,所述第N個節點的處理器可更被配置成自所述區的區資訊讀取第二快取的位置資訊,將第二快取的位置資訊寫入至VB位置的欄位中,並利用VB控制對第二快取的回寫操作,所述第二快取是所述第N個節點的快取中第一快取的上層層階。
根據本發明概念的至少一些示例性實施例,所述第N個節點的處理器可更被配置成:因應於接收到對於犧牲快取行的請求,將所述請求中所包括的位址分別與所述多個CLB中的多個項進行匹配;基於對所述請求中所包括的位址的所述匹配產生層階及/或通路資訊;以及利用所產生的層階及/或通路資訊讀取犧牲快取行的資料。
根據本發明概念的至少一些示例性實施例,所述多個節點(例如,節點NODE 1至NODE E)共享多個VB(例如,VB BUFF 1及BUFF 2)中的一個VB。作為另外一種選擇,根據本發明概念
的至少一些示例性實施例,所述多個節點(例如,節點NODE 1至NODE N)中的每一個節點包括各自的VB。
現參照圖6,根據本發明概念的至少一些示例性實施例,若CLB-X 630中的項被逐出,則應自快取L-1 620至L-Y 640逐出對應的區的所有資料。另外,亦需要將同一節點的所有CLB項向下逐出至CLB-1 610。此被稱為強制逐出。
儘管根據本發明概念的至少一些示例性實施例,用於CLB-X的替換演算法應使強制逐出相當少,然而最差情形的強制逐出可能仍需要逐出多達16個髒快取行。在強制逐出期間,被逐出的區的一些快取行可能已駐留於VB中,且可能已正在被逐出。若未小心地處置強制逐出,則強制逐出可能會花費長的時間,且亦可能會因失去對正在被逐出的快取行的追蹤而危及系統的正確性。
返回圖7,根據本發明概念的至少一個示例性實施例,在強制逐出之後,利用以上針對圖8的VB逐出過程概述的步驟,將NODE 701區中的髒快取行快速轉移至VB 771。接著,強制撤銷被逐出的區以為另一區釋放CLB-X中的空間。在此步驟期間,在被逐出的區可完成其逐出之前,所述區的仍指向VB 771的位置的任意LI將會將DIR 760中對應的CLT 762的對應位置LI及節點790至799中的任意對應CLB位置改變成亦指向所述VB位置。
應注意,可在駐留於無標籤VB中的快取行駐留於VB中同時藉由利用在無標籤快取層次結構中對快取行進行定位的正常
方式讀取請求及外部請求來找到駐留於無標籤VB中的快取行:藉由正常CLB查找來找到LI且接著跟隨所述LI來存取所辨識位置的快取行。
儘管出於清晰目的,本文中的大部分說明大體闡述了如何定位快取行並將快取行返回至發出請求的CPU的技術,然而對於熟習此項技術者而言將顯而易見,存在其中可對快取行內所包含的所請求字進行選擇並將所述字返回至CPU的各種方式。
為清晰起見,本文中闡述對快取層次結構的資料進行處置的大部分說明闡述了獨佔性快取層次結構。熟習此項技術者將理解示例性實施例中的一或多者可擴展至亦涵蓋包容性記憶體層次結構及非獨佔性記憶體層次結構。
儘管上述本發明概念的示例性實施例中的一或多者適用於單處理器系統及多處理器系統二者,例如以上分別參照圖1及圖2所示出及所闡述者,然而本發明概念的示例性實施例中的一或多者主要是與單處理器系統相關聯地示出。然而,熟習此項技術者將理解,與單處理器系統相關聯地示出的本發明概念的一或多個示例性實施例並不限於此種構建方式。舉例而言,儘管圖8出於簡潔目的而示出單個CPU,然而圖8所示計算機系統的一部分可為根據本發明概念至少一些示例性實施例的多處理器系統的一部分。
儘管以上在特定示例性計算機架構的上下文中進行闡述,然而在圖7及圖8所示示例性計算機系統內以及外部的諸多
其他設定中亦存在快取,且熟習此項技術者將理解以上在計算機系統的上下文內闡述的本發明概念的至少一些示例性實施例亦可應用於該些其他上下文。該些使用情況的實例是自慢的大容量儲存裝置(例如磁碟或快閃記憶體)向較快且較小的大容量記憶體(其可使用動態RAM來構建)中快取資料的虛擬記憶體系統。在計算機系統中進行快取的其他實例包括但不限於磁碟快取、網頁快取及名稱快取。該些快取的組織及快取機制可與以上論述的快取的組織及快取機制不同,例如組的大小、組的構建方式及關聯性等發生變化。不論快取機制本身的構建方式如何,本發明概念的所述至少一些示例性實施例適用於構建各種快取方案。
本申請案中提供的方法或流程圖可在計算機程式、軟體或者韌體中構建,所述計算機程式、軟體或者韌體是以有形方式實施於計算機可讀取儲存媒介中以由通用計算機或處理器執行。
由此已闡述了本發明概念的示例性實施例,顯然,本發明概念的示例性實施例可以諸多方式變化。該些變化不應被視為背離本發明概念的示例性實施例的預期精神及範圍,且對熟習此項技術者而言顯而易見,所有該些潤飾皆旨在包括於以下申請專利範圍的範圍內。
701‧‧‧多處理器節點/節點/NODE
720‧‧‧專有快取L-1
740‧‧‧專有快取/L-Y
760‧‧‧DIR
762‧‧‧快取位置表(CLT)
770‧‧‧共享快取LLC
771‧‧‧VB
790、799‧‧‧節點
Claims (20)
- 一種用於計算機系統的資料管理方法,所述計算機系統包括至少一個處理器及至少第一快取、第二快取、犧牲緩衝器(VB)及被分配給所述至少一個處理器的記憶體,所述方法包括:選擇儲存在所述第一快取中的快取行作為欲自所述第一快取逐出的犧牲快取行;自所述犧牲緩衝器的第一組中找到與所述犧牲快取行對應的犧牲緩衝器位置,所述犧牲緩衝器位置是所述犧牲緩衝器中的位置,所述犧牲緩衝器是包括多個組的組關聯緩衝器,所述多個組包括所述第一組;將所述犧牲快取行的資料複製至所述犧牲緩衝器位置的資料欄位;將與所述犧牲快取行相關聯的後向指針(BP)複製至所述犧牲緩衝器位置的後向指針欄位;藉由在所述第一快取的犧牲空間中儲存新快取行的資料來回收所述犧牲空間,所述犧牲空間是所述第一快取中的位置,在所述犧牲快取行自所述第一快取逐出之前,將所述犧牲快取行的所述資料儲存在所述位置;以及藉由將複製至所述犧牲緩衝器位置的所述資料欄位的所述犧牲快取行的所述資料寫入至所述第二快取及所述記憶體中的至少一者來實行回寫操作。
- 如申請專利範圍第1項所述的方法, 其中所述計算機系統更包括快取位置緩衝器(CLB),所述快取位置緩衝器包括用於儲存一或多個快取行的資料的位置資訊的一或多個快取位置緩衝器項,其中回收所述犧牲空間包括:利用所述後向指針找到第一快取位置緩衝器項,所述第一快取位置緩衝器項是所述一或多個快取位置緩衝器項中的快取位置緩衝器項,所述第一快取位置緩衝器項儲存所述犧牲快取行的所述資料的位置資訊;以及將所述第一快取位置緩衝器項的所述位置資訊改變成指向所述犧牲緩衝器位置。
- 如申請專利範圍第2項所述的方法,其中所述第一快取位置緩衝器項包括區資訊,且所述區資訊包括物理位址,以及其中回收所述犧牲空間更包括:讀取所述第一快取位置緩衝器項的所述區資訊中所包括的所述物理位址;以及將所述物理位址寫入至所述犧牲緩衝器位置的犧牲空間辨識符欄位,所述犧牲空間辨識符欄位是所述犧牲緩衝器位置的欄位,所述犧牲空間辨識符欄位辨識所述第二快取或所述記憶體中的位置,所述犧牲快取行的所述資料將藉由所述回寫操作回寫至所述第二快取或所述記憶體中的所述位置。
- 如申請專利範圍第2項所述的方法,其中回收所述犧牲 空間更包括:自所述第一快取位置緩衝器項讀取所述第二快取的位置資訊;以及將所述第二快取的所述位置資訊寫入至所述犧牲緩衝器位置的犧牲空間辨識符欄位,所述犧牲空間辨識符欄位是所述犧牲緩衝器位置的欄位,所述犧牲空間辨識符欄位辨識所述第二快取或所述記憶體中的位置,所述犧牲快取行的所述資料將藉由所述回寫操作回寫至所述第二快取或所述記憶體中的所述位置。
- 如申請專利範圍第4項所述的方法,其中所述第二快取較所述第一快取處於更高的層階。
- 如申請專利範圍第1項所述的方法,其中回收所述第一快取的所述犧牲空間包括在完成將複製至所述犧牲緩衝器位置的所述資料欄位的所述犧牲快取行的所述資料寫入至所述第二快取及所述記憶體中的至少一者之前,將所述新快取行的所述資料儲存在所述犧牲空間中。
- 如申請專利範圍第6項所述的方法,其中對所述記憶體實行所述回寫操作更包括:自所述犧牲緩衝器位置的犧牲空間辨識符欄位讀取物理位址,所述犧牲空間辨識符欄位是所述犧牲緩衝器位置的欄位,所述犧牲空間辨識符欄位辨識所述第二快取或所述記憶體中的位置,所述犧牲快取行的所述資料將藉由所述回寫操作回寫至所述第二快取或所述記憶體中的所述位置;以及 將所述資料欄位的所述犧牲快取行的所述資料複製至所述記憶體中與所述物理位址對應的空間。
- 如申請專利範圍第6項所述的方法,其中所述計算機系統更包括快取位置緩衝器(CLB),所述快取位置緩衝器包括用於儲存一或多個快取行的資料的位置資訊的一或多個快取位置緩衝器項,其中對所述記憶體實行所述回寫操作包括:在所述快取位置緩衝器(CLB)中找到被所述後向指針欄位的所述後向指針指向的項;以及將所述項的位置資訊改變成指向所述記憶體中的空間,藉由所述回寫操作將所述犧牲快取行的所述資料儲存在所述記憶體中的所述空間。
- 如申請專利範圍第6項所述的方法,其中對所述第二快取實行所述回寫操作包括:自所述犧牲緩衝器位置的犧牲空間辨識符欄位讀取位置資訊,所述犧牲空間辨識符欄位是所述犧牲緩衝器位置的欄位,所述犧牲空間辨識符欄位辨識所述第二快取或所述記憶體中的位置,所述犧牲快取行的所述資料將藉由所述回寫操作回寫至所述第二快取或所述記憶體中的所述位置;以及將所述資料欄位的所述犧牲快取行的所述資料複製至所述第二快取的與所述位置資訊對應的項。
- 如申請專利範圍第6項所述的方法,更包括: 當所述回寫操作完成時,釋放所述犧牲緩衝器的所述犧牲緩衝器位置。
- 如申請專利範圍第1項所述的方法,其中所述犧牲緩衝器、所述第一快取及所述第二快取各自是組關聯的,並且其中所述犧牲緩衝器的關聯性不同於所述第一快取的關聯性及所述第二快取的關聯性。
- 如申請專利範圍第1項所述的方法,其中所述計算機系統更包括快取位置緩衝器(CLB),所述快取位置緩衝器包括用於儲存一或多個快取行的資料的位置資訊的一或多個快取位置緩衝器項,所述方法更包括:接收對於所述犧牲快取行的請求;因應於對於所述犧牲快取行的所述請求,將所述請求中所包括的位址與所述快取位置緩衝器中的一或多個項中的至少一個項進行匹配,所述至少一個項與所述第一快取及所述第二快取中的至少一者相關聯;基於對所述請求中所包括的所述位址的匹配,產生層階及/或通路資訊;以及利用所產生的所述層階及/或通路資訊自所述犧牲緩衝器讀取所述犧牲快取行的所述資料。
- 一種多處理器系統,包括:記憶體; 多個節點,所述多個節點中的每一者包括至少一個處理器、多個快取及多個快取位置緩衝器(CLB);以及一或多個犧牲緩衝器(VB),其中,所述多個節點中的第N個節點的處理器被配置成自所述一或多個犧牲緩衝器中的第一犧牲緩衝器找到犧牲緩衝器位置,所述犧牲緩衝器位置是與被自所述第N個節點的所述多個快取中的第一快取逐出的犧牲快取行對應的所述第一犧牲緩衝器中的位置,將所述犧牲快取行的資料及與所述犧牲快取行相關聯的後向指針(BP)複製至所述犧牲緩衝器位置的欄位,並藉由在所述第一快取的犧牲空間中儲存新快取行的資料來回收所述犧牲空間,所述犧牲空間是所述第一快取中的位置,在所述犧牲快取行自所述第一快取逐出之前,將所述犧牲快取行的所述資料儲存在所述位置,藉由將複製至所述犧犧牲緩衝器位置的所述資料欄位的所述犧牲快取行的所述資料寫入至第二快取及所述記憶體中的至少一者來實行回寫操作。
- 如申請專利範圍第13項所述的系統,其中包括在所述第N個節點的所述多個快取位置緩衝器包括第一快取位置緩衝器,且所述第一快取位置緩衝器包括用於儲存一或多個快取行的資料的位置資訊的一或多個快取位置緩衝器項,其中所述第N個節點的所述處理器更被配置成利用所述後向指針(BP)找到第一快取位置緩衝器項,所述第一快取位置緩衝器項是所述一或多個 快取位置緩衝器項中的快取位置緩衝器項,所述第一快取位置緩衝器項儲存所述犧牲快取行的所述資料的位置資訊,並將所述第一快取位置緩衝器項的所述位置資訊改變成指向所述犧牲緩衝器(VB)位置。
- 如申請專利範圍第14項所述的系統,其中所述第一快取位置緩衝器項包括區資訊,且所述區資訊包括所述第二快取的位置資訊,其中所述第二快取是所述第N個節點的所述快取中所述第一快取的上層層階,以及其中所述第N個節點的所述處理器更被配置成自所述區資訊讀取所述第二快取的所述位置資訊,將所述第二快取的所述位置資訊寫入至所述犧牲緩衝器位置的欄位中,並控制所述回寫操作,使所述犧牲快取行的所述資料回寫至所述第二快取。
- 如申請專利範圍第14項所述的系統,其中所述第N個節點的所述處理器更被配置成:因應於接收到對於所述犧牲快取行的請求,將所述請求中所包括的位址與所述第一快取位置緩衝器的所述一或多個快取位置緩衝器項中的至少一個快取位置緩衝器項進行匹配,基於對所述請求中所包括的所述位址的匹配,產生層階及/或通路資訊;以及利用所產生的所述層階及/或通路資訊讀取所述犧牲快取行的所述資料。
- 如申請專利範圍第13項所述的系統,其中所述多個節點被配置成共享所述一或多個犧牲緩衝器中的至少一個犧牲緩衝器。
- 如申請專利範圍第13項所述的系統,其中所述一或多個犧牲緩衝器是多個犧牲緩衝器,且所述多個犧牲緩衝器分別包括於所述多個節點中。
- 如申請專利範圍第13項所述的系統,其中所述第一犧牲緩衝器的位置資訊編碼格式不同於所述多個快取的位置資訊編碼格式。
- 一種包括計算機可執行指令的非暫態計算機可讀取儲存媒體,所述計算機可執行指令在由至少一個處理器執行時使所述至少一個處理器實行計算機系統的操作,所述計算機系統包括至少一個處理器及至少第一快取、第二快取、犧牲緩衝器(VB)及被分配給所述至少一個處理器的記憶體,所述操作包括:選擇儲存在所述第一快取中的快取行作為欲自所述第一快取逐出的犧牲快取行,自所述犧牲緩衝器的第一組中找到與所述犧牲快取行對應的犧牲緩衝器位置,所述犧牲緩衝器位置是所述犧牲緩衝器中的位置,所述犧牲緩衝器是包括多個組的組關聯緩衝器,所述多個組包括所述第一組,將所述犧牲快取行的資料複製至所述犧牲緩衝器位置的資料欄位, 將與所述犧牲快取行相關聯的後向指針(BP)複製至所述犧牲緩衝器位置的後向指針欄位,藉由在所述第一快取的犧牲空間中儲存新快取行的資料來回收所述犧牲空間,所述犧牲空間是所述第一快取中的位置,在所述犧牲快取行自所述第一快取逐出之前,將所述犧牲快取行的所述資料儲存在所述位置,以及藉由將複製至所述犧牲緩衝器位置的所述資料欄位的所述犧牲快取行的所述資料寫入至所述第二快取及所述記憶體中的至少一者來實行回寫操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762588712P | 2017-11-20 | 2017-11-20 | |
US62/588,712 | 2017-11-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201928680A TW201928680A (zh) | 2019-07-16 |
TWI795470B true TWI795470B (zh) | 2023-03-11 |
Family
ID=64402110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107141184A TWI795470B (zh) | 2017-11-20 | 2018-11-20 | 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10884925B2 (zh) |
EP (1) | EP3486787B1 (zh) |
KR (1) | KR102252377B1 (zh) |
CN (1) | CN109815168A (zh) |
TW (1) | TWI795470B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767639B (zh) * | 2020-05-25 | 2022-12-13 | 西北工业大学 | 一种多传感器航迹关联方法 |
US11467972B2 (en) * | 2020-12-01 | 2022-10-11 | Centaur Technology, Inc. | L1D to L2 eviction |
CN112612727B (zh) * | 2020-12-08 | 2023-07-07 | 成都海光微电子技术有限公司 | 一种高速缓存行替换方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110161589A1 (en) * | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Selective cache-to-cache lateral castouts |
US20140129744A1 (en) * | 2011-07-06 | 2014-05-08 | Kishore Kumar MUPPIRALA | Method and system for an improved i/o request quality of service across multiple host i/o ports |
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 |
TW201602784A (zh) * | 2014-03-21 | 2016-01-16 | 三星電子股份有限公司 | 機會式快取注入資料至快取階層之較低延遲層級的技術 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829038A (en) * | 1996-06-20 | 1998-10-27 | Intel Corporation | Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure |
KR100505695B1 (ko) * | 2003-07-12 | 2005-08-03 | 삼성전자주식회사 | 동적으로 할당 또는 해제되는 버퍼를 가지는 캐쉬 메모리장치, 이를 구비한 디지털 데이터 처리 시스템 및 그 방법 |
US7558920B2 (en) * | 2004-06-30 | 2009-07-07 | Intel Corporation | Apparatus and method for partitioning a shared cache of a chip multi-processor |
KR101064178B1 (ko) | 2010-08-24 | 2011-09-14 | 한국과학기술원 | 버퍼 캐시 관리 시스템 및 방법 |
WO2015075674A1 (en) * | 2013-11-21 | 2015-05-28 | Green Cache AB | Systems and methods for direct data access in multi-level cache memory hierarchies |
US9582329B2 (en) * | 2015-02-17 | 2017-02-28 | Qualcomm Incorporated | Process scheduling to improve victim cache mode |
US10754777B2 (en) * | 2015-11-04 | 2020-08-25 | Samsung Electronics Co., Ltd. | Systems and methods for implementing coherent memory in a multiprocessor system |
US10713166B2 (en) * | 2017-05-05 | 2020-07-14 | Samsung Electronics Co., Ltd. | Efficient early ordering mechanism |
US10649901B2 (en) * | 2017-08-03 | 2020-05-12 | International Business Machines Corporation | Victim cache line selection |
-
2018
- 2018-11-20 TW TW107141184A patent/TWI795470B/zh active
- 2018-11-20 CN CN201811384401.6A patent/CN109815168A/zh active Pending
- 2018-11-20 KR KR1020180143907A patent/KR102252377B1/ko active IP Right Grant
- 2018-11-20 EP EP18207302.3A patent/EP3486787B1/en active Active
- 2018-11-20 US US16/196,065 patent/US10884925B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110161589A1 (en) * | 2009-12-30 | 2011-06-30 | International Business Machines Corporation | Selective cache-to-cache lateral castouts |
US20140129744A1 (en) * | 2011-07-06 | 2014-05-08 | Kishore Kumar MUPPIRALA | Method and system for an improved i/o request quality of service across multiple host i/o ports |
TW201602784A (zh) * | 2014-03-21 | 2016-01-16 | 三星電子股份有限公司 | 機會式快取注入資料至快取階層之較低延遲層級的技術 |
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 |
Also Published As
Publication number | Publication date |
---|---|
CN109815168A (zh) | 2019-05-28 |
KR20190058356A (ko) | 2019-05-29 |
KR102252377B1 (ko) | 2021-05-14 |
TW201928680A (zh) | 2019-07-16 |
US10884925B2 (en) | 2021-01-05 |
EP3486787B1 (en) | 2022-09-28 |
US20190155732A1 (en) | 2019-05-23 |
EP3486787A1 (en) | 2019-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11615026B2 (en) | Systems and methods for implementing coherent memory in a multiprocessor system | |
TWI784084B (zh) | 資料管理方法、多處理器系統以及非暫態電腦可讀取儲存媒體 | |
EP3486784B1 (en) | Systems and methods for efficient compressed cache line storage and handling | |
US10402344B2 (en) | Systems and methods for direct data access in multi-level cache memory hierarchies | |
EP3486786B1 (en) | System and methods for efficient virtually-tagged cache implementation | |
US11354242B2 (en) | Efficient early ordering mechanism | |
TWI795470B (zh) | 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體 |