TWI551990B - 由n個核共用的快取記憶體、用於由n個核共用的快取記憶體的方法及處理器 - Google Patents

由n個核共用的快取記憶體、用於由n個核共用的快取記憶體的方法及處理器 Download PDF

Info

Publication number
TWI551990B
TWI551990B TW103143209A TW103143209A TWI551990B TW I551990 B TWI551990 B TW I551990B TW 103143209 A TW103143209 A TW 103143209A TW 103143209 A TW103143209 A TW 103143209A TW I551990 B TWI551990 B TW I551990B
Authority
TW
Taiwan
Prior art keywords
core
cores
information
pieces
cache memory
Prior art date
Application number
TW103143209A
Other languages
English (en)
Other versions
TW201619830A (zh
Inventor
趙博
陳忠民
賴瑾
Original Assignee
上海兆芯集成電路有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 上海兆芯集成電路有限公司 filed Critical 上海兆芯集成電路有限公司
Publication of TW201619830A publication Critical patent/TW201619830A/zh
Application granted granted Critical
Publication of TWI551990B publication Critical patent/TWI551990B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed

Description

由N個核共用的快取記憶體、用於由N個核共用的快取記憶體的方法及處理器
本發明係有關於一種快取記憶體、用於快取記憶體的方法以及包括快取記憶體的處理器,特別是關於由N個核共用的包括統一標籤和片化資料的快取記憶體、用於快取記憶體的方法以及包括快取記憶體的處理器。
在當前的具有快取記憶體(cache memory)的多核處理器的設計中,如何保持快取記憶體資料一致性(cache coherency)和記憶體連貫性(consistency)是必須解決的問題。一些實現方式使用共用匯流排,而另一些使用共用末級快聯記憶體(shared last level cache,shared LLC)。一般,共用LLC用在要求高記憶體性能的應用中,其中LLC可以是級2或級3快取記憶體。流水線的延遲和輸送量是衡量共用LLC的性能的重要指標。在保持輸送量高的同時減少延遲是合意的。
在一個方面中,本發明提供一種由N個核共用的快取記憶體。所述快取記憶體包括統一標籤部分和片化(sliced)資料部分,其中片化資料部分被劃分成N個資料片(slice)。N個資料片中的每個資料片對於N個核中的各自一個是物理上本 地的並且對於其它N-1個核子物理上遠端的,其中N是大於一的整數。對於N個核中的每個核,快取記憶體將由核引起的分配偏向於核的物理上本地的片,其中,物理上本地的片是N個資料片中的一個並且對於核是物理上本地的。
在另一個方面,本發明提供一種用於由N個核共用的快取記憶體的方法,所述快取記憶體包括統一標籤部分和被劃分成N個資料片的片化資料部分,其中,N個資料片中的每個資料片對於N個核中的各自一個是物理上本地的並且對於其它N-1個核是物理上遠端的,其中N是大於一的整數。所述方法包括回應於來自N個核中的核的對來自快取記憶體的資料的請求,首先存取統一標籤部分以確定所述請求的位址是否在統一標籤部分中命中,如果所述請求的位址在統一標籤部分中命中,則隨後存取N個資料片中的一個,並且將來自N個資料片中的被存取的一個的資料返回到核,該步驟具有存取延遲,當N個資料片中的被存取的一個資料片是N個資料片中對於核是物理上本地的一個資料片時的存取延遲比當N個資料片中被存取的一個資料片是N個資料片中對核是物理上遠端的一個資料片時的存取延遲更小。
在又一個方面中,本發明提供一種處理器。所述處理器包括N個核,其中,N是大於一的整數。處理器還包括被集合相聯地(set-associatively)佈置為M路的快取記憶體。M是至少與N一樣大的整數。N個核共用快取記憶體。快取記憶體包括維持N個核之間的資料一致性的統一標籤部分。對於M路中的每路和N個核中的每個核,路提供資料給核時有相關延 遲,其中,相關延遲在M路和N個核的不同組合之間變化。對於N個核中的每個核,快取記憶體將關於核的分配偏向于M路中提供資料給核的相關延遲最低的路。
為讓本發明之特徵和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下:
100‧‧‧多核處理器
102-0‧‧‧核0
102-1‧‧‧核1
102-2‧‧‧核2
102-3‧‧‧核3
104-0~104-3‧‧‧專用快取記憶體分級結構
106‧‧‧共用的統一標籤片化資料末級快取記憶體
108‧‧‧互連
112-0~112-4‧‧‧載入/儲存介面
202‧‧‧統一標籤部分
204‧‧‧分派佇列
206-0‧‧‧資料片0
206-1‧‧‧資料片1
206-2‧‧‧資料片2
206-3‧‧‧資料片3
212‧‧‧請求位址
214‧‧‧相關回應
216‧‧‧請求
218-0~218-3‧‧‧資料
300‧‧‧條目
302‧‧‧標籤
304‧‧‧快取狀態
306‧‧‧資料片指示符
308‧‧‧核識別碼欄位
400‧‧‧替換資訊
402‧‧‧跨片替換位
404-0‧‧‧片0替換位
404-1‧‧‧片1替換位
404-2‧‧‧片2替換位
404-3‧‧‧片3替換位
406-0~406-3‧‧‧指示符
502-0‧‧‧片0載入計算器
502-1‧‧‧片1載入計算器
502-2‧‧‧片2載入計算器
502-3‧‧‧片3載入計算器
504-0‧‧‧片0逐出計數器
504-1‧‧‧片1逐出計數器
504-2‧‧‧片2逐出計數器
504-3‧‧‧片3逐出計數器
506‧‧‧活動監視器
602、604、6060、608、612、614、702、704、706、708、802、804、806、808、812、814、902、904‧‧‧步驟
第1圖係為多核處理器的方塊圖。
第2圖係為第1圖的UTSD LLC 106的方塊圖。
第3圖係為統一標籤部分中的條目的方塊圖。
第4圖係為第1圖的UTSD LLC的替換信息的方塊圖。
第5圖是更詳細地圖示包括其活動監視器的第1圖的UTSD LLC的方塊圖。
第6圖顯示第1圖的處理器存取UTSD LLC的操作的流程圖。
第7圖顯示第2圖的UTSD LLC的分派佇列的操作的流程圖。
第8圖顯示第1圖的UTSD LLC執行分配的操作的流程圖。
第9圖顯示第1圖的UTSD LLC執行從遠端的資料片的分配的操作的流程圖。
詞彙
本發明中的資料片(或簡單而言,片)是被配置為儲存從系統記憶體緩衝的資料的儲存結構。例如,片可以包 括記憶體單元的陣列。
如果與任何其它核相比,一個片在物理上更靠近一個核,則該片是該核的物理上本地的(或簡單而言,本地的)片,這導致了該核與其物理上本地的片之間的延遲小於該物理上本地的片與其它核之間的延遲。其它片被表示為該核的物理上遠端的(或簡單而言,遠程的)片。
現在參照第1圖,其顯示多核處理器100的方塊圖。處理器100包括多個處理核102、互連108(也被稱為匯流排介面單元108)以及共用的統一標籤片化資料(Unified Tag Sliced Data,UTSD)末級快取(LLC)記憶體106。在第1圖所顯示的實施例中,有被表示為核0 102-0、核1 102-1、核2 102-2和核3 102-3的四個核102,它們被統稱為核102並且一般被單獨稱為核102。核102-0、102-1、102-2、102-3中的每一個經由各自的載入/儲存介面112-0、112-1、112-2、112-3存取UTSD LLC 106,所述載入/儲存介面112-0、112-1、112-2、112-3被統稱為載入/儲存介面112並一般被單獨稱為載入/儲存介面112。匯流排介面單元108也經由載入/儲存介面112-4存取UTSD LLC 106。處理器100是包括系統記憶體和外設(未示出)的更大的計算系統(也未示出)的一部分,UTSD LLC 106經由匯流排介面單元108與所述系統記憶體和外設通信。雖然第1圖的實施例圖示了具有四個核102的處理器100,但是具有不同數量的核102的其它實施例是預期的,並且核102的數量可以被認為是N,其中N大於一。而且,雖然第1圖的實施例圖示了快取記憶體106是末級快取記憶體,但是具有不同類型的共用快取記憶體的其它實 施例是預期的。
所有核102共用UTSD LLC 106。UTSD LLC 106包括統一標籤部分(第2圖的202),其維持共用UTSD LLC 106的核102之間的資料一致性。然而,UTSD LLC 106的資料儲存部分在物理上被劃分成N個資料片(第2圖的206),每個資料片的位置在物理上靠近各自的核102。資料片206離其相應的核102的靠近的物理位置有利地使核102對其物理上靠近的資料片206的存取的延遲能夠小於核102對其它資料片206的存取的延遲。進一步有利地,雖然所有核102都共用UTSD LLC 106,但UTSD LLC 106將由核102引起的分配偏向於其物理上本地的片,所述“物理上本地的片”是N個資料片206中的一個並且在物理上靠近該核102。下面更詳細地描述UTSD LLC 106及其操作。
核102-0、102-1、102-2、102-3中的每一個包括其各自的專用快取記憶體分級結構(hierarchy)104-0、104-1、104-2、104-3,它們被統稱為專用快取記憶體分級結構104並一般被單獨稱為專用快取記憶體分級結構104。優選地,專用快取記憶體分級結構104的快取記憶體小於UTSD LLC 106並且具有相對較小的存取延遲。核102還包括功能單元,其可以包括但不限於,指令快取記憶體、指令提取單元、分支預測單元、指令解碼器、指令翻譯器、微代碼、結構和非結構暫存器組、重命名單元、重排序緩衝器、保留站、指令分派器以及執行單元,所述執行單元可以包括整數單元、浮點單元、介質單元、分支單元、載入單元和儲存單元。各種微結構特徵可以被包括 在核102中,例如,核102可以是超標量或標量並且可以按順序或不按順序運行指令。在一個實施例中,核102實質上符合x86指令集合結構,雖然核102不受限於特定指令集合結構。
現在參照第2圖,其顯示第1圖的UTSD LLC 106的方塊圖。UTSD LLC 106包括統一標籤部分202、分派佇列204和被劃分成多個資料片206的片化資料部分。在第2圖的實施例中,UTSD LLC 106的片化資料部分被劃分成被表示為資料片0 206-0、資料片1 206-1、資料片2 206-2和資料片3 206-3的四個資料片206,它們被統稱為資料片206並一般被單獨稱為資料片206。資料片206也被簡稱為片206。優選地,資料片206的數量對應於核102的數量。
優選地,UTSD LLC 106被佈置為具有多路的集合相聯的快取記憶體,多路被稱為M路,其中M大於一。集體地,資料片206保存(hold)UTSD LLC 106所儲存的資料的所有快取線。統一標籤部分202保存與資料片206中保存的資料的快取線相關聯的標籤、狀態和其它有關資訊。優選地,在資料片206當中劃分UTSD LLC 106的M路。例如,在N(資料片206的數量)是4且M(路的數量)是16的情況下,則以獨佔方式給每個資料片206劃分4路。例如,路0-3可以被劃分給資料片0 206-0,路4-7可以被劃分給資料片1 206-1,路8-11可以被劃分給資料片2 206-2,並且路12-15可以被劃分給資料片3 206-3;然而,統一標籤部分202包括全部16路。
每個資料片206是被配置為儲存從系統記憶體快取的資料的儲存結構。例如,片206可以包括記憶體單元的陣 列。資料片206中的每一個的位置相對於其它核102而言在物理上更靠近於某個特定的核102。如果片206相對於任何其它核102在物理上更靠近於某個核102,則它對於該核102是物理上本地的(或簡單而言,本地的),這導致該核102和它的本地片206之間的延遲小於該本地片206和其它核102之間的延遲。其它片206被表示為離核102物理上遠端(或簡單而言,遠程)。例如,如果資料片0 206-0相對於核1 102-1、核2 102-2和核3 102-3在物理上更靠近於核0 102-0,則資料片0 206-0對核0 102-0是物理上本地的,這導致核0 102-0和其物理上本地的片206-0之間的延遲小於片206-0和其它核102(核1 102-1、核2 102-2或核3 102-3)之間的延遲。更具體地,本地的片206與其關聯的核102的物理靠近可以使本地的片206和該核102之間的延遲能夠小於對於所有核具有相同延遲的常規統一資料儲存結構的延遲。
分派佇列204接收核102對於序取UTSD LLC 106的請求以及來自統一標籤部分202的相關回應214,並將這些請求和回應進行排隊。優選地,統一標籤部分202是多埠的,並且UTSD LLC 106包括多個標籤管線,它們併發地存取統一標籤部分202以獲得多個併發的回應並且併發地向分派佇列204提供多核102請求和其相關回應。如下面特別是針對第7圖更詳細地描述的,分派佇列204檢查排隊的請求以確定何時向資料片206分派請求216。特別地,分派佇列204保證在相同時間只有一個資料片206將向一個核102返回資料218。也就是說,分派佇列204將請求216分派給資料片206以保證不存在以下將導致 衝突的情況:兩個或更多個資料片206同時在其各自的介面112上向相同的一個核102返回資料218。相對於包括額外的介面112以允許一個核102同時從多個資料片206接收資料的實施例,該實施例是以性能下降換取所消耗的晶片面積的減少。在一個實施例中,分派佇列204包括保存核102存取UTSD LLC 106的請求的單個佇列結構。在替換實施例中,分派佇列204包括與每個資料片206相關聯的各自的佇列結構,其保存目的地為對應各個資料片206的核102請求。
如可被觀察到的,UTSD LLC 106是分階段的共用快取。一般而言,分階段的共用快取用延遲的增加來換取功耗的減少,這對於相對較大的快取記憶體是重要的,因為它們趨向於消耗相當大量的功率。然而,在此描述的實施例透過將快取線資料儲存切片(slice)成多個資料片206並將本地的片206的位置在物理上靠近其關聯核102,以及將關於核102的分配偏向其物理上本地的片206,有利地潛在地減少了總計的核102的共用快取記憶體106的延遲。更具體地,回應於一個核102的請求,首先存取統一標籤部分202,然後基於來自統一標籤部分202的響應存取適當的一個資料片206,如下面針對例如第6圖所描述的。因為在給定的快取線中的資料通常被一個核102而不被其它核102存取,並因為UTSD LLC 106將分配偏向該核102的物理上本地的資料片206,以及因為物理上本地的片206比常規的共用的統一資料儲存結構的固定延遲具有更低的延遲,所以這裡描述的實施例可以總體上減少多核102從UTSD LLC 106存取延遲,與此同時,保持UTSD LLC 106的高輸送量 品質並保持其在核102之間的共用屬性。
現在參照第3圖,示出了圖示統一標籤部分202中的條目300的方塊圖。雖然在第3圖中示出單個條目300,但是應當理解,條目300代表統一標籤部分202的所有條目。條目300包括標籤302,標籤302保存在資料片206之一中保存的相應快取線的位址的較高位(例如,不用於索引到UTSD LLC 106的集合中的位元)。將標籤302與請求位址212的相應位進行比較以確定是否在UTSD LLC106中發生命中(hit)。條目300還包括相應快取線的快取狀態304。在一個實施例中,快取狀態304對應於公知的MESI(Modified-Exclusive-Shared-Invalid,修改-獨佔-共用-無效)協定,雖然其它資料一致協定也可以被採用。
條目300還包括指定哪個資料片206當前保存有資料的相應快取線的資料片指示符306。如下所述,分派佇列204使用從統一標籤部分202獲得的資料片指示符306值來確定要存取哪個資料片206以讀/寫資料的快取線。條目300還包括核識別碼欄位308,其標識引起分配並將當前資料帶入快取線中的核102。因此,每條快取線可以被分類為本地的快取線或遠端的快取線。如果快取線存在於由核識別碼欄位308所標識的核102的物理上本地的片206中,則它是本地的,而如果快取線存在於由核識別碼欄位308所標識的核102的物理上遠端的片206中,則它是遠程的。當使用片替換位元404確定從一個資料片206內的哪些路或快取線分配時,可以參考核識別碼欄位308,並且將在第4圖中描述細節。
現在參照第4圖,其顯示第1圖的UTSD LLC 106的 替換信息400的方塊圖。為UTSD LLC 106維持替換資訊400。在一個實施例中,替換資訊400被儲存在統一標籤部分202中。在替換實施例中,替換資訊400被儲存在與統一標籤部分202類似的以集合相聯的方式存取和佈置的UTSD LLC 106中的獨立結構(未示出)中。
替換資訊400包括跨片(trans-slice)替換位402。UTSD LLC 106使用跨片替換位402來確定從哪個資料片206分配條目。更具體地,在UTSD LLC 106決定從一個物理上遠端的資料片206分配的情況下(例如,在第8圖的方塊812處),UTSD LLC 106使用跨片替換位402來確定從哪個物理上遠端的資料片206分配。用於選擇物理上遠端的資料片206的各種方法是可以預期的。例如,在一個實施例中,以輪詢方式(on a round-robin basis)選擇物理上遠端的資料片206。在另一個實施例中,以最近最少使用(LRU)或虛擬最近最少使用(PLRU)為基礎選擇物理上遠端的資料片206。在另一個實施例中,相對於其它物理上遠端的資料片206,UTSD LLC 106將對遠端的資料片206的選擇偏向與引起分配的核102相關延遲最低的物理上遠端的資料片206。因此,例如,假定:(1)核0 102-0引起分配;(2)資料片1 206-1將資料提供給核0 102-0的相關延遲比資料片2 206-2將資料提供給核0 102-0的相關延遲少一個時脈週期;以及(3)資料片1 206-1將資料提供給核0 102-0的相關延遲比與資料片3 206-3將資料提供給核0 102-0的相關延遲小兩個時脈週期。在那種情況下,UTSD LLC 106相比於從資料片2 206-2或資料片3 206-3分配更喜歡從資料片1 206-1分 配,並且相比於從資料片3 206-3分配更喜歡從資料片2 206-2分配。
替換資訊400還包括片0替換位404-0、片1替換位404-1、片2替換位404-2和片3替換位404-3,它們被統稱為片替換位404並一般被單獨稱為片替換位404。每個片替換位404被用來在相關聯的資料片206內選擇從其分配的一路(way)或一組快取線。用於選擇路的各種方法是預期的。例如,在一個實施例中,輪詢地選擇路。在另一個實施例中,以LRU或PLRU為基礎選擇路。在另一個實施例,如果發生快取未命中(miss)並且所有路都已被佔用,則在這種情況下,必須在分配之前執行逐出(eviction)。每個片替換位元404根據核識別字欄位308選擇遠端的快取線來執行逐出。
替換資訊400還包括指示符406-0,其指示UTSD LLC 106中當前分配給核0 102-0的路的數量,指示符406-1,其指示UTSD LLC 106中當前分配給核1 102-1的路的數量,指示符406-2,其指示UTSD LLC 106中當前分配給核2 102-2的路的數量,以及指示符406-3,其指示UTSD LLC 106中當前分配給核3 102-3的路的數量。指示符406-0、406-1、406-2和406-3被統稱為指示符406並一般被單獨稱為指示符406。下面特別是針對第8圖更詳細地描述使用替換資訊400來在UTSD LLC 106中分配條目。
現在參照第5圖,其顯示包括其活動監視器506的第1圖的UTSD LLC 106的方塊圖。UTSD LLC 106包括活動監視器506和計數器。計數器包括片0載入計數器502-0、片1載入 計數器502-1、片2載入計數器502-2和片3載入計數器502-3,它們被統稱為片載入計數器502並一般被單獨稱為片載入計數器502。在一個實施例中,每個片載入計數器502對其相應資料片206讀取請求的數量進行計數。讀取請求包括來自核102的從其相應資料片206讀取資料的請求。也就是說,每個片載入計數器502對從資料片206讀取的讀取請求的數量進行計數。這裡是假設核102只從UTSD LLC 106讀取資料而從不將資料寫入UTSD LLC 106中,則這個可以優選地被實現。在另一個實施例中,如果核102從UTSD LLC 106讀取資料並也將資料寫入UTSD LLC 106中,則每個片載入計數器502對對於資料片206的存取(讀/寫)請求的總數進行計數。
計數器還包括片0逐出計數器504-0、片1逐出計數器504-1、片2逐出計數器504-2和片3逐出計數器504-3,它們被統稱為片逐出計數器504並一般被單獨稱為片逐出計數器504。每個片逐出計數器504對從其相應資料片206逐出快取線的數量進行計數。如果片逐出計數器504的計數增加,則這個可以指示當寫到相應資料片206或從相應資料片206讀取時發生未命中的次數相應增加,並且可以指示相應資料片206的記憶體空間不足以保存新的快取線。新的快取線包括例如,被從核102寫入UTSD LLC 106中的快取線或者從DRAM(例如,在圖中未示出的系統記憶體)讀取的快取線,其要求舊的快取線被寫回到系統記憶體以釋放被佔用的記憶體空間。如果在舊的快取線中的資料是對於資料片206遠端的核102而非物理上本地的核102也需要的,則將舊的快取線寫回到系統記憶體會降低性能, 因為對於遠端的核102,存取系統記憶體的延遲比存取物理上遠端的資料片206更長。
活動監視器506從片載入計數器502和片逐出計數器504接收計數,並從包括第4圖的替換資訊400在內的統一標籤部分202接收回應。活動監視器506使用所接收到的資訊來確定要從哪個資料片206分配。具體地,活動監視器506基於物理上本地的片206的最近活動決定是從核102的物理上本地的片206還是從核102的物理上遠端的片206分配,如下面特別是針對第8圖更詳細地描述的。在一個實施例中,UTSD LLC 106將由核102引起的分配偏向其物理上本地的片206。也就是說,UTSD LLC 106從其物理上本地的片206分配,除非物理上本地的片206的未命中率超過臨界值。在一個實施例中,基於由活動監視器506接收到的來自片載入計數器502和片逐出計數器504的計數確定未命中率。如果物理上本地的片206的未命中率超過臨界值,則它可能意味著與物理上本地的片206相對應的核102是忙碌的,並且僅從物理上本地的片206分配不能滿足忙碌的核的需要。這個將在下面特別是針對第8圖更詳細地描述。
優選地,片載入計數器502和片逐出計數器504中的計數代表在要求分配的時間之前的最近時段內的存取/逐出的數量。例如,計數可以指示最近的N個時脈週期內的存取/逐出的數量,其中N是可配置值。在一個實施例中,每個資料片206的單個飽和可逆計數器被初始化為作為計數器的最大值的一半的值,並且計數器在每次發生逐出時被遞增,而在每次 發生命中時被遞減;如果在需要分配時(例如,在第8圖的方塊802處)計數器已達到其最大值(或超出預定值),則(例如,在第8圖的判定方塊804處)UTSD LLC 106判定物理上本地的資料片206的未命中率足夠高,以至於考慮從物理上遠端的資料片206分配。基於其它測量來確定本地的資料片206的高未命中率的其它實施例是預期的。
現在參照第6圖,其顯示第1圖的處理器100存取UTSD LLC 106的操作的流程圖。流程在方塊602處開始。
在方塊602處,核102請求從UTSD LLC 106讀取資料或將資料寫入UTSD LLC 106中。流程進行到方塊604。
在方塊604處,UTSD LLC 106回應於核102請求存取統一標籤部分202。流程進行到判定方塊606。
在判定方塊606處,UTSD LLC 106確定請求的位址是否在統一標籤部分202中命中。如果如此,則流程進行到方塊612;否則,流程進行到方塊608。
在方塊608處,UTSD LLC 106為請求的核102分配快取線。通常,UTSD LLC 106將分配偏向該核的物理上本地的片,具體在第8圖進行更詳細的描述。在一個實施例中,如下面在第8圖中所述的快取線分配流程將使得在讀取未命中發生時UTSD LLC 106分配快取線以容納從DRAM(例如,系統記憶體)讀取的資料,或者分配快取線來容納從核102寫入的資料。在一個實施例中,UTSD LLC 106進一步將一未命中的回應返回到方塊102。流程在方塊608處結束。
在方塊612處,UTSD LLC 106根據統一標籤部分 202所返回的資訊確定哪個資料片206當前正保存由核102請求所指定的快取線。UTSD LLC 106然後存取由資料片指示符306所指定的資料片206。在一個實施例中,UTSD LLC 106從資料片指示符306的值確定哪個資料片206當前正保存快取線。在替換實施例中,UTSD LLC 106基於由統一標籤部分202所返回的資訊指示命中的路和路劃分資訊(即,命中的路被劃分到N個資料片206中的哪個)的資訊來進行確定。流程進行到方塊614。
在方塊614處,所存取的資料片206將所請求的資料(當讀取時)或者完成回應(當寫入時)返回到請求的核102。如上所述,與存取UTSD LLC 106相關聯的延遲可能會隨著哪個資料片206被核102存取而變化。有利地,在核102正從其物理上本地的資料片206接收的情況下,延遲被最小化。更具體地說,該延遲少於在儲存資料的快取線的統一儲存結構的可比較的常規設計中的固定延遲。流程在方塊614處結束。
現在參照第7圖,其顯示第2圖的UTSD LLC 106的分派佇列204的操作的流程圖。在分派佇列204為非空的時間中(例如,在一個時脈週期期間)的給定情況下,分派佇列204將來自核102的請求發送到資料片206。優選地,分派佇列204被配置為在可能時併發地向資料片206中的每一個分派至少一個請求。優選地從佇列的開頭開始,分派佇列204察看其排隊的請求,以確定要分派哪個請求給資料片206。第7圖描述了分派佇列204用來判斷是否分派一個給定請求的過程。然而,應當理解,分派佇列204針對其它排隊的請求併發地進行類似的 判斷,從而在可能時,分派佇列204併發地向多於一個的資料片206發出請求,並且優選地,併發地向所有資料片206發出請求。流程在方塊702處開始。
在方塊702處,分派佇列204分析想要被分派給資料片206的請求,更具體地,該請求是由統一標籤部分202的回應214所返回的資料片指示符306所指定的資料片206的請求。該請求還指定請求資料的核102。分派佇列204判斷該請求是否會在另一資料片206針對已經被分派給該資料片206的請求而返回資料到請求核102的同時(例如,在相同時脈週期中)返回資料到該請求的核102。例如,假定將資料從核0 102-0的物理上本地的資料片206(資料片0 206-0)提供給核0 102-0的相關延遲比將資料從遠端的資料片206(例如,資料片3 206-3)提供給核0 102-0的相關延遲少三個時脈週期。此外,假定三個時脈週期之前,分派佇列204將來自核0 102-0的請求分派到資料片3 206-3,而現在分派佇列204正分析來自核0 102-0的到資料片0 206-0的請求。在這種情況下,分派佇列204將判斷到如果分派佇列204將請求分派到資料片0 206-0,則兩個資料片206將同時把資料返回到核0 102-0,即到核0 102-0的介面112-0上將發生衝突。流程進行到判定方塊704。
在判定方塊704處,如果分派請求將導致資料片206與另一資料片206同時將資料返回到請求的核102,則流程進行到方塊708;否則,流程進行到方塊706。
在方塊706處,分派佇列204將請求分派給所指定的資料片206。流程在方塊706處結束。
在方塊708處,分派佇列204延遲向所指定的資料片206分派請求。最後(例如,在緊接著的一個時脈週期中),分派佇列204將把該請求分派給資料片206。如以上所討論的,雖然分派佇列204不分派所述請求,但是此時分派佇列204可以向資料片206分派另一個排隊的請求,具體來說,由另一個核102做出的請求。流程在方塊708處結束。
如從根據第7圖的UTSD LLC 106的操作可觀察到的,分派佇列204以調度方式向資料片206分派請求,從而對於每個核102,一次僅一個資料片206向該核102返回資料,雖然多個核102(包括所有核102)可以同時從不同的資料片206接收資料。
現在參照第8圖,示出了圖示第1圖的UTSD LLC 106執行分配的操作的流程圖。流程在方塊802處開始。
在方塊802處,UTSD LLC 106通常回應於UTSD LLC 106中的未命中(miss),確定其需要為快取線分配條目。未命中在幾種情形下發生。例如,當從核102接收到將資料寫入UTSD LLC 106中的寫請求但沒有與請求位址212相對應的UTSD LLC 106的快取線,並且新的快取線被分配以容納來自核102的新資料時,寫未命中發生。另舉一例,當從核102接收到從UTSD LLC 106讀取資料的讀請求但沒有與請求位址212相對應的UTSD LLC 106的快取線,並且新的快取線被分配以容納從DRAM(例如,系統記憶體)讀取的資料時,讀未命中發生。在核102只從UTSD LLC 106讀取資料但從不將資料寫入UTSD LLC 106的實施例中,未命中只意味著讀未命中的情形。 分配條目的需要由這裡被稱為核X的核102之一所作出的請求引起。流程進行到判定方塊804。
在判定方塊804,第5圖的活動監視器506確定核X的物理上本地的資料片206的未命中率是否為高。在一個實施例中,如果與核X相關聯的片逐出計數器504和片載入計算器502的值的比率超預定臨界值,則核X的物理上本地的資料片206的未命中率為高。如果比率超過預定臨界值,則這可能是以下指示:物理上本地的資料片206的路不能滿足核X的當前需求,使得應當分配更多的路(即,來自遠端的資料片206的路)。上面描述了用於確定核X的本地的資料片206的未命中率是否為高的其它實施例。即使將資料從遠端的資料片206提供到核X的相關延遲大於將資料從其物理上本地的資料片206提供到核X的相關延遲,在這樣的情況下透過從遠端的資料片206分配而有利地提高性能也是可能的,因為如果逐出的快取線一旦被遠端的核102(例如,核Y)而非核X請求,則核Y從核X的物理上本地的資料片206讀取快取線將比從系統記憶體讀取它們更高效。如果本地的資料片206的未命中率高,則流程進行到判定方塊808;否則,流程進行到方塊806。
在方塊806處,UTSD LLC 106從核X的本地的資料片206分配。流程進行到方塊814。
在判定方塊808處,UTSD LLC 106確定UTSD LLC 106中已經分配給核X的路的數量是否超過臨界值,優選地該臨界值是可配置的。在一個實施例中,UTSD LLC 106的路的數量是16並且路的臨界值數量默認是7。其中在UTSD LLC 106是 集合相聯的一個實施例中,已經分配給核X的所索引的集合中的路的數量根據與核X相關聯的第4圖的指示符406來確定。在替換實施例中,不存在指示分配給每個核102的路的數量的指示符406;替代地,所索引的集合中已經分配給核X的路的數量透過計數該集合中核識別字308值匹配於核X的核識別字的路(條目)的數量來確定。如果所索引的集合中分配給核X的路的數量超過臨界值,則流程進行到方塊806;否則,流程進行到方塊812。應當注意,方塊808是可選步驟並且在一些實施例中可以被省略。
在方塊812處,UTSD LLC 106從核X的遠端的資料片206分配,這針對第9圖更詳細地描述。流程進行到方塊814。
在方塊814處,UTSD LLC 106更新每個第4圖的指示符406以指示分配給每個核102的路的數量。要注意,當UTSD LLC 106中的條目被無效時,指示符406可以被更新。另外,用核X的核識別字值更新核識別字308。流程在方塊814處結束。
現在參照第9圖,示出了圖示第1圖的UTSD LLC 106執行從遠端的資料片206的分配的操作的流程圖。特別地,第9圖更詳細地描述了在第8圖的方塊812處的操作。流程在方塊902處開始。
在方塊902處,UTSD LLC 106確定從引起分配的核102的哪個遠端的資料片206分配。優選地,UTSD LLC 106基於第4圖的跨片替換位402來這樣做。在一個實施例中,當UTSD LLC 106在方塊812處從遠端的片206分配時,相對於其它遠端的片206,遠端的片替換策略偏向具有用於分配的核102的最低 延遲的遠程的片206。流程進行到方塊904。在另一個實施例中,根據跨片替換位元402輪詢地選擇物理上遠端的資料片206。在另一個實施例中,根據跨片替換位元402以LRU或PLRU為基礎選擇物理上遠端的資料片206。
在方塊904處,UTSD LLC 106基於與在方塊902處選擇的遠端的資料片206相關聯的第4圖的替換位404來確定要從所選的遠端的資料片206內的哪路分配。流程在方塊904處結束。
在一個實施例中,本發明的處理器包括:N個核,其中N是大於一的整數;以及被集相聯地佈置為M路的快取記憶體,其中M是至少與N一樣大的整數,其中快取記憶體被N個核共用。快取記憶體包括:在N個核之間維持資料一致性的統一標籤部分。對於M路中的每路和N個核中的每個核,路將資料提供給核時有相關延遲。相關延遲在M路和N個核的不同組合之間變化,並且對於N個核中的每個核,快取記憶體將由該核引起的分配偏向于M路中提供資料給該核的相關延遲最低的路。M路被劃分為多個資料片,其中,多個資料片中的每個資料片在物理上的位置比相對於任何其它N-1個核在物理上更靠近所述N個核中的一個,並且與向任何其它N-1個核提供資料相比,向所述N個核中的一個提供資料的相關延遲更小。快取記憶體還包括分派佇列,其中,所述分派佇列以調度的方式向N個資料片分派請求,使得對於N個核中的每個核,一次僅N個資料片中的一個向核返回資料。
雖然在這裡已經描述了本發明的各種實施例,但 是應當理解,它們是作為示例而非限制被呈現。對於相關電腦領域的技術人員將顯然的是,可以在不脫離本發明的範圍的情況下在其中進行形式和細節上的各種改變。例如,軟體可以使能這裡描述的裝置和方法的例如功能、製造、建模、模擬、描述和/或測試。這可以透過使用通用程式設計語言(例如,C、C++)、包括Verilog HDL、VHDL等等在內的硬體描述語言(HDL)或者其它可用的程式來實現。這樣的軟體可以被佈置在任何公知的電腦可用介質(諸如磁帶、半導體、磁片或光碟(例如,CD-ROM、DVD-ROM等等))、網路、線纜、無線或其它通信介質中。這裡描述的裝置和方法的實施例可以被包括在半導體智慧財產權核中,諸如處理器核(例如,用HDL具體化或指定)並在積體電路的生產中被轉換成硬體。另外,這裡描述的裝置和方法可以被具體化為硬體和軟體的組合。因此,本發明不應被這裡描述的任何示例性實施例限制,而是應當僅按照申請專利範圍及其等效物來定義。具體地,本發明可以在可用於通用電腦中的處理器設備內實現。最終,本領域技術人員應當領會,他們可以容易地使用公開的構思和具體實施例作為設計或變更用於完成本發明相同目的的其它結構的基礎而不脫離由所附申請專利範圍所限定的發明的範圍。
106‧‧‧共用的統一標籤片化資料末級快取記憶體
202‧‧‧統一標籤部分
204‧‧‧分派佇列
206-0~206-3‧‧‧資料片0~資料片3
212‧‧‧請求位址
214‧‧‧相關回應
216‧‧‧請求
218-0~218-3‧‧‧資料

Claims (19)

  1. 一種由N個核共用的快取記憶體,所述快取記憶體包括:統一標籤部分;以及;片化資料部分,其中所述片化資料部分被劃分成N個資料片,其中所述N個資料片中的每個資料片對於N個核中的各自一個是物理上本地的並且對於其它N-1個核是物理上遠端的,其中N是大於一的整數;並且其中對於所述N個核中的每個核,所述快取記憶體將由該核引起的分配偏向於該核的物理上本地的片,其中所述物理上本地的片是所述N個資料片中的一個並且對於該核是物理上本地的,並且該核存取所述物理上本地的片的存取延遲比該核存取其它N-1個資料片的存取延遲小。
  2. 如申請專利範圍第1項所述的由N個核共用的快取記憶體,其中,回應於來自所述N個核中的核的對來自所述快取記憶體的資料的請求,所述快取記憶體首先存取統一標籤部分以確定所述請求的位址是否在所述統一標籤部分中命中,如果所述請求的位址在所述統一標籤部分中命中,則隨後存取所述N個資料片中的所述一個。
  3. 如申請專利範圍第1項所述的由N個核共用的快取記憶體,其中,對於所述N個資料片中的每個資料片,所述資料片將資料返回到對所述資料片是物理上本地的核的延遲比所述資料片將資料返回到對所述資料片是物理上遠端的其它N-1個核的延遲更小。
  4. 如申請專利範圍第1項所述的由N個核共用的快取記憶體, 其中,為了將所述分配偏向所述核的物理上本地的片,所述快取記憶體從所述核的物理上本地的片分配,除非所述物理上本地的片的未命中率超過臨界值。
  5. 如申請專利範圍第4項所述的由N個核共用的快取記憶體,其中,所述未命中率包括從所述物理上本地的片的逐出的計數與對所述物理上本地的片的存取請求的計數的比率。
  6. 如申請專利範圍第1項所述的由N個核共用的快取記憶體,其中,所述快取記憶體被佈置為具有M路的集合相聯的快取記憶體;並且,為了將所述分配偏向所述核的物理上本地的片,所述快取記憶體從所述核的物理上本地的片分配,除非所述物理上本地的片的未命中率超過第一臨界值並且所述M路中已經分配給所述核的數量不超過第二臨界值。
  7. 如申請專利範圍第1項所述的由N個核共用的快取記憶體,其中,所述快取記憶體被佈置為具有M路的集合相聯的快取記憶體,其中,所述M路在所述N個資料片當中被劃分;所述快取記憶體維持與所述N個資料片相關聯的第一替換資訊,並且維持與所述N個資料片中的各自一個相關聯的N個第二替換資訊;其中,當從所述N個核中的一個核的物理上遠端的資料片之一執行用於所述一個核的分配時,所述快取記憶體使用所述第一替換資訊來選擇所述物理上遠端的資料片之一以用於所述分配;以及所述快取記憶體使用N個第二替換資訊中的與所選的一個物理上遠端的資料片相關聯的一個第二替換資訊來從M路中被劃分給前述所選的物理上遠端的資料片的路中選擇一路來從其分配。
  8. 如申請專利範圍第1項所述的由N個核共用的快取記憶體,還包括:分派佇列,其以調度的方式向所述N個資料片分派請求,使得對於所述N個核中的每個核,一次僅所述N個資料片中的一個向所述核返回資料。
  9. 如申請專利範圍第8項所述的由N個核共用的快取記憶體,其中,所述統一標籤部分提供所述N個資料片中的哪一個當前正保存由所述N個核之一所請求的資料的指示;並且所述分派佇列向所述N個資料片中被所述指示所標識的一個資料片分派對於資料的請求。
  10. 一種用於由N個核共用的快取記憶體的方法,所述快取記憶體包括統一標籤部分和被劃分成N個資料片的片化資料部分,其中,所述N個資料片中的每個資料片對於N個核中的各自一個是物理上本地的,並且對於其它N-1個核是物理上遠端的,其中N是大於一的整數,所述方法包括:回應於來自N個核中的核的對來自所述快取記憶體的資料的請求,首先存取統一標籤部分以確定所述請求的位址是否在所述統一標籤部分中命中;如果所述請求的位址在所述統一標籤部分中命中,則隨後存取所述N個資料片中的一個;將來自所述N個資料片中被存取的一個資料片的資料返回到所述核;以及如果所述請求的位址在所述統一標籤部分中未命中,則為所述核從所述快取記憶體中分配,其中所述分配偏向於所 述核的物理上本地的片,所述核存取所述物理上本地的片的存取延遲比所述核存取其它N-1個資料片的存取延遲小。
  11. 如申請專利範圍第10項所述的用於由N個核共用的快取記憶體的方法,還包括:將由所述核引起的分配偏向於所述核的物理上本地的片,其中所述物理上本地的片是所述N個資料片中的一個並且對於所述核是物理上本地的。
  12. 如申請專利範圍第11項所述的用於由N個核共用的快取記憶體的方法,其中,所述將所述分配偏向於所述核的物理上本地的片的步驟包括:從所述核的物理上本地的片分配,除非所述物理上本地的片的未命中率超過臨界值。
  13. 如申請專利範圍第12項所述的用於由N個核共用的快取記憶體的方法,其中,所述未命中率包括從所述物理上本地的片的逐出的計數與對所述物理上本地的片的存取請求的計數的比率。
  14. 如申請專利範圍第11項所述的用於由N個核共用的快取記憶體的方法,其中,所述快取記憶體被佈置為具有M路的集合相聯的快取記憶體,其中,所述將所述分配偏向於所述核的物理上本地的片的步驟包括:從所述核的物理上本地的片分配,除非所述物理上本地的片的未命中率超過第一臨界值並且所述M路中已經分配給所述核的數量不超過第二臨界值。
  15. 如申請專利範圍第11項所述的用於由N個核共用的快取記憶體的方法,其中,所述快取記憶體被佈置為具有M路的集合相聯的快取記憶體,其中所述M路在所述N個資料片當中被劃分,所述方法還包括:維持與所述N個資料片相關聯的第一替換資訊,並且維持與所述N個資料片中的各自一個相關聯的N個第二替換資訊;以及透過以下步驟從所述核的物理上遠端的資料片之一執行分配:使用該第一替換資訊來選擇所述物理上遠端的資料片之一用於所述分配;以及使用所述N個第二替換資訊中的與所選的一個物理上遠端的資料片相關聯的一個第二替換資訊來從M路中的被劃分給前述所選的物理上遠端的資料片的路中選擇一路來從其分配。
  16. 如申請專利範圍第11項所述的用於由N個核共用的快取記憶體的方法,還包括:以調度的方式向所述N個資料片分派請求,使得對於所述N個核中的每個核,一次僅所述N個資料片中的一個資料片向所述核返回資料。
  17. 一種處理器,包括:N個核,其中N是大於一的整數;以及被集合相聯地佈置為M路的快取記憶體,其中M是至少與N一樣大的整數,其中所述快取記憶體被所述N個核共用,其 中所述快取記憶體包括:維持所述N個核之間的資料一致性的統一標籤部分;其中對於所述M路中的每路和所述N個核中的每個核,所述路提供資料給所述核時有相關延遲,其中所述相關延遲在所述M路和N個核的不同組合之間變化;並且其中對於所述N個核中的每個核,所述快取記憶體將由該核引起的分配偏向于M路中提供資料給該核的相關延遲最低的路。
  18. 如申請專利範圍第17項所述的處理器,其中,所述M路被劃分為多個資料片,其中,所述多個資料片中的每個資料片的位置比相對於任何其它N-1個核在物理上更靠近所述N個核中的一個,並且與向任何其它N-1個核提供資料相比,向所述N個核中的所述一個提供資料的相關延遲更小。
  19. 如申請專利範圍第18項所述的處理器,其中,所述快取記憶體還包括分派佇列,其中,所述分派佇列以調度的方式向所述N個資料片分派請求,使得對於所述N個核中的每個核,一次僅所述N個資料片中的一個資料片向所述核返回資料。
TW103143209A 2014-11-25 2014-12-11 由n個核共用的快取記憶體、用於由n個核共用的快取記憶體的方法及處理器 TWI551990B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410686730.1A CN104407989B (zh) 2014-11-25 2014-11-25 具有统一标签和片化数据的高速缓冲存储器

Publications (2)

Publication Number Publication Date
TW201619830A TW201619830A (zh) 2016-06-01
TWI551990B true TWI551990B (zh) 2016-10-01

Family

ID=52645622

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103143209A TWI551990B (zh) 2014-11-25 2014-12-11 由n個核共用的快取記憶體、用於由n個核共用的快取記憶體的方法及處理器

Country Status (3)

Country Link
US (1) US9514051B2 (zh)
CN (1) CN104407989B (zh)
TW (1) TWI551990B (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9632832B2 (en) * 2014-02-27 2017-04-25 Empire Technology Development Llc Thread and data assignment in multi-core processors based on cache miss data
US10459892B2 (en) 2014-04-23 2019-10-29 Qumulo, Inc. Filesystem hierarchical aggregate metrics
US10095729B2 (en) 2016-12-09 2018-10-09 Qumulo, Inc. Managing storage quotas in a shared storage system
US10884752B2 (en) 2017-11-29 2021-01-05 International Business Machines Corporation Slice-based allocation history buffer
US11360936B2 (en) 2018-06-08 2022-06-14 Qumulo, Inc. Managing per object snapshot coverage in filesystems
US10534758B1 (en) 2018-12-20 2020-01-14 Qumulo, Inc. File system cache tiers
US11237973B2 (en) 2019-04-09 2022-02-01 SK Hynix Inc. Memory system for utilizing a memory included in an external device
KR20200132047A (ko) * 2019-05-15 2020-11-25 에스케이하이닉스 주식회사 메모리 시스템에서 맵 데이터를 전송하는 방법 및 장치
KR20210014338A (ko) 2019-07-30 2021-02-09 에스케이하이닉스 주식회사 데이터 저장 장치, 데이터 처리 시스템 및 데이터 저장 장치의 동작 방법
KR20210011201A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템 및 그의 온도 조절 방법
KR20210011216A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 메타 데이터 관리 방법 및 장치
KR20210011176A (ko) 2019-07-22 2021-02-01 에스케이하이닉스 주식회사 메모리 시스템의 액세스 동작 방법 및 장치
KR20200119059A (ko) 2019-04-09 2020-10-19 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
CN112148665B (zh) * 2019-06-28 2024-01-09 深圳市中兴微电子技术有限公司 缓存的分配方法及装置
CN111045960B (zh) * 2019-11-21 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 一种多像素格式存储的Cache电路
US10795796B1 (en) 2020-01-24 2020-10-06 Qumulo, Inc. Predictive performance analysis for file systems
US10860372B1 (en) 2020-01-24 2020-12-08 Qumulo, Inc. Managing throughput fairness and quality of service in file systems
US11151001B2 (en) 2020-01-28 2021-10-19 Qumulo, Inc. Recovery checkpoints for distributed file systems
US11775481B2 (en) 2020-09-30 2023-10-03 Qumulo, Inc. User interfaces for managing distributed file systems
CN112395242B (zh) * 2020-11-30 2024-01-30 重庆紫光华山智安科技有限公司 多芯片控制方法、装置、电子设备和计算机可读存储介质
US11157458B1 (en) 2021-01-28 2021-10-26 Qumulo, Inc. Replicating files in distributed file systems using object-based data storage
US11461241B2 (en) * 2021-03-03 2022-10-04 Qumulo, Inc. Storage tier management for file systems
US11132126B1 (en) 2021-03-16 2021-09-28 Qumulo, Inc. Backup services for distributed file systems in cloud computing environments
US11567660B2 (en) 2021-03-16 2023-01-31 Qumulo, Inc. Managing cloud storage for distributed file systems
US11669255B2 (en) 2021-06-30 2023-06-06 Qumulo, Inc. Distributed resource caching by reallocation of storage caching using tokens and agents with non-depleted cache allocations
US11294604B1 (en) 2021-10-22 2022-04-05 Qumulo, Inc. Serverless disk drives based on cloud storage
US11354273B1 (en) 2021-11-18 2022-06-07 Qumulo, Inc. Managing usable storage space in distributed file systems
US11599508B1 (en) 2022-01-31 2023-03-07 Qumulo, Inc. Integrating distributed file systems with object stores
US11722150B1 (en) 2022-09-28 2023-08-08 Qumulo, Inc. Error resistant write-ahead log
US11729269B1 (en) 2022-10-26 2023-08-15 Qumulo, Inc. Bandwidth management in distributed file systems
US11921677B1 (en) 2023-11-07 2024-03-05 Qumulo, Inc. Sharing namespaces across file system clusters
US11934660B1 (en) 2023-11-07 2024-03-19 Qumulo, Inc. Tiered data storage with ephemeral and persistent tiers

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059876A1 (en) * 2002-09-25 2004-03-25 Ashwini Nanda Real time emulation of coherence directories using global sparse directories
TW201101178A (en) * 2008-12-30 2011-01-01 Intel Corp Extending cache coherency protocols to support locally buffered data
US20110004729A1 (en) * 2007-12-19 2011-01-06 3Leaf Systems, Inc. Block Caching for Cache-Coherent Distributed Shared Memory
TW201333820A (zh) * 2011-12-28 2013-08-16 Intel Corp 於多核心處理器中的先前存取資料之檢索技術

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6834327B2 (en) * 2002-02-08 2004-12-21 Hewlett-Packard Development Company, L.P. Multilevel cache system having unified cache tag memory
US7457922B2 (en) * 2004-11-20 2008-11-25 International Business Machines Corporation Cache line placement prediction for multiprocessor non-uniform cache architecture systems
WO2006056900A1 (en) * 2004-11-24 2006-06-01 Koninklijke Philips Electronics N.V. Coherent caching of local memory data
US7490200B2 (en) * 2005-02-10 2009-02-10 International Business Machines Corporation L2 cache controller with slice directory and unified cache structure
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
EP2689336A1 (en) * 2011-03-25 2014-01-29 BlackBerry Limited Dynamic power management of cache memory in a multi-core processing system
CN102270180B (zh) * 2011-08-09 2014-04-02 清华大学 一种多核处理器系统的管理方法
US8984228B2 (en) * 2011-12-13 2015-03-17 Intel Corporation Providing common caching agent for core and integrated input/output (IO) module
US9323679B2 (en) * 2012-08-14 2016-04-26 Nvidia Corporation System, method, and computer program product for managing cache miss requests
US9361233B2 (en) * 2013-12-20 2016-06-07 Intel Corporation Method and apparatus for shared line unified cache
CN105426319B (zh) * 2014-08-19 2019-01-11 超威半导体产品(中国)有限公司 动态缓存分区设备和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040059876A1 (en) * 2002-09-25 2004-03-25 Ashwini Nanda Real time emulation of coherence directories using global sparse directories
US20110004729A1 (en) * 2007-12-19 2011-01-06 3Leaf Systems, Inc. Block Caching for Cache-Coherent Distributed Shared Memory
TW201101178A (en) * 2008-12-30 2011-01-01 Intel Corp Extending cache coherency protocols to support locally buffered data
TW201333820A (zh) * 2011-12-28 2013-08-16 Intel Corp 於多核心處理器中的先前存取資料之檢索技術

Also Published As

Publication number Publication date
TW201619830A (zh) 2016-06-01
CN104407989B (zh) 2019-02-12
CN104407989A (zh) 2015-03-11
US20160147654A1 (en) 2016-05-26
US9514051B2 (en) 2016-12-06

Similar Documents

Publication Publication Date Title
TWI551990B (zh) 由n個核共用的快取記憶體、用於由n個核共用的快取記憶體的方法及處理器
US9921972B2 (en) Method and apparatus for implementing a heterogeneous memory subsystem
CN104272279B (zh) 具有缓存和转换后备缓冲器的数据处理装置
US9755994B2 (en) Mechanism for tracking age of common resource requests within a resource management subsystem
US9195606B2 (en) Dead block predictors for cooperative execution in the last level cache
US8521982B2 (en) Load request scheduling in a cache hierarchy
TWI509519B (zh) 維持公平和秩序的資源管理子系統
US7640399B1 (en) Mostly exclusive shared cache management policies
US20140289479A1 (en) Bounding box prefetcher
EP1612683A2 (en) An apparatus and method for partitioning a shared cache of a chip multi-processor
US10095548B2 (en) Mechanism for waking common resource requests within a resource management subsystem
US20110276762A1 (en) Coordinated writeback of dirty cachelines
US9317448B2 (en) Methods and apparatus related to data processors and caches incorporated in data processors
US20110276763A1 (en) Memory bus write prioritization
JP5328792B2 (ja) プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構
US20140129806A1 (en) Load/store picker
CN103198025A (zh) 用于近邻数据高速缓存共享的方法和系统
US20170177488A1 (en) Dynamic victim cache policy
Bock et al. Concurrent page migration for mobile systems with OS-managed hybrid memory
US20170212840A1 (en) Providing scalable dynamic random access memory (dram) cache management using tag directory caches
JP2023507078A (ja) プリフェッチレベルの降格
WO2013101138A1 (en) Identifying and prioritizing critical instructions within processor circuitry
US20140006716A1 (en) Data control using last accessor information
Agarwal et al. Reuse-distance-aware write-intensity prediction of dataless entries for energy-efficient hybrid caches
US9372795B2 (en) Apparatus and method for maintaining cache coherency, and multiprocessor apparatus using the method