TWI744289B - 使用多個最後階層快取線提供記憶體帶寬壓縮之以一中央處理單元(cpu)為基礎之系統及方法 - Google Patents
使用多個最後階層快取線提供記憶體帶寬壓縮之以一中央處理單元(cpu)為基礎之系統及方法 Download PDFInfo
- Publication number
- TWI744289B TWI744289B TW106107193A TW106107193A TWI744289B TW I744289 B TWI744289 B TW I744289B TW 106107193 A TW106107193 A TW 106107193A TW 106107193 A TW106107193 A TW 106107193A TW I744289 B TWI744289 B TW I744289B
- Authority
- TW
- Taiwan
- Prior art keywords
- llc
- memory
- line
- lines
- cache
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/04—Addressing variable-length words or parts of words
-
- 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/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
- 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
-
- 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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/1016—Performance improvement
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本發明揭示在一以中央處理單元(CPU)為基礎之系統中使用多個最後階層快取記憶體(LLC)線提供記憶體頻寬壓縮。在一些態樣中,一種經壓縮記憶體控制器(CMC)提供包含多個LLC線之一LLC,每一LLC線提供大小與一系統快取記憶體線相同之複數個副線。儲存於一單一LLC線內的該(等)系統快取記憶體線之內容被壓縮且儲存於對應於該LLC線之記憶體副線區內之系統記憶體中。一主資料表儲存指示如何藉由儲存用於每一LLC線內之每一副線之一位移值及一長度值而將用於一LLC線之經壓縮資料儲存於系統記憶體中的資訊。藉由將多個系統快取記憶體線壓縮在一起且將經壓縮資料儲存於通常分配至多個未經壓縮系統線之一空間中,該
CMC使壓縮大小能夠小於該系統記憶體之記憶體讀取/寫入粒度。
Description
本發明之科技大體上係關於電腦記憶體系統,且尤其係關於用於提供具有至記憶體之記憶體存取介面之中央處理單元(CPU)的電腦記憶體系統中之記憶體控制器。
微處理器執行用於廣泛多種應用之計算任務。典型的微處理器應用包括執行軟體指令之一或多個中央處理單元(CPU)。軟體指令可指示CPU自記憶體中之位置提取資料,使用經提取資料來執行一或多個CPU操作,且產生結果。接著可將結果儲存於記憶體中。作為非限制性實例,此記憶體可為在CPU本端之快取記憶體、在CPU區塊中之CPU之間的共用本端快取記憶體、在多個CPU區塊之間的共用快取記憶體,或微處理器之主記憶體。
就此而言,圖1為包括以CPU為基礎之系統102之例示性系統單晶片(SoC)100的示意圖。在此實例中,以CPU為基礎之系統102包括複數個CPU區塊104(0)至104(N),其中「N」等於所要CPU區塊104(0)至104(N)之任何數目。在圖1之實例中,CPU區塊104(0)至104(N)中之每一者含有兩(2)個CPU
106(0)、106(1)。CPU區塊104(0)至104(N)分別進一步含有共用階層2(L2)快取記憶體108(0)至108(N)。亦提供系統快取記憶體110(例如,階層3(L3)快取記憶體)以用於儲存由CPU區塊104(0)至104(N)中之每一者中之任一者使用或在CPU區塊104(0)至104(N)中之每一者之間共用的經快取資料。提供內部系統匯流排112以使CPU區塊104(0)至104(N)中之每一者能夠存取系統快取記憶體110以及其他共用資源。由CPU區塊104(0)至104(N)經由內部系統匯流排112而存取之其他共用資源可包括用於存取主外部記憶體(例如,作為一非限制性實例,雙速率動態隨機存取記憶體(DRAM)(DDR))之記憶體控制器114、周邊設備116、其他儲存體118、快速周邊組件互連(PCI)(PCI-e)介面120、直接記憶體存取(DMA)控制器122,及/或整合式記憶體控制器(IMC)124。
隨著在圖1中之以CPU為基礎之系統102中執行的以CPU為基礎之應用程式的複雜度及效能增加,對記憶體頻寬之限制可對以CPU為基礎之系統102強加約束。若對外部記憶體之存取達到記憶體頻寬極限,則以CPU為基礎之系統102之記憶體控制器114可被強制將記憶體存取請求排入佇列。記憶體存取請求之此等排入佇列可增加記憶體存取之潛時,此又可減低以CPU為基礎之系統102之效能。
可藉由使用記憶體頻寬壓縮方案以潛在地縮減由給定記憶體存取所消耗之頻寬來實現記憶體頻寬節省。然而,在以CPU為基礎之系統102之系統記憶體底層的記憶體架構可將至系統記憶體之讀取及寫入限制於具有指定最小大小(在本文中被稱作「記憶體讀取/寫入粒度」)之記憶體顆粒。因此,習知的記憶體頻寬壓縮方案將「位元子(bin)」或經壓縮區塊之大小限制於與使用記憶體頻寬壓縮方案之系統記憶體之記憶體讀取/寫入粒度相同的大小。因此,舉例而言,具有64個位元組之記憶體讀取/寫入粒度及
128個位元組之記憶體線大小的記憶體系統可針對每一記憶體線僅提供兩(2)種經壓縮記憶體大小:64個位元組(亦即,1個位元子)或128個位元組(亦即,2個位元子)。
因此,需要提供一種可有效地提供較大數目個位元子之記憶體頻寬壓縮機制。
本文中所揭示之態樣包括在一以中央處理單元(CPU)為基礎之系統中使用多個最後階層快取記憶體(LLC)線提供記憶體頻寬壓縮。在一個態樣中,一種經壓縮記憶體控制器(CMC)經組態以藉由改良可運用限制於一特定記憶體讀取/寫入粒度之記憶體而達成的一線壓縮比來縮減記憶體頻寬要求。該CMC以通信方式耦接至具有一特定系統快取記憶體線大小(例如,128個位元組)之一系統快取記憶體。在一些態樣中,作為非限制性實例,該系統快取記憶體可包含一階層2(L2)快取記憶體或一階層3(L3)快取記憶體。該CMC進一步耦接至包含多個LLC線之一LLC,該多個LLC線中之每一者提供大小各自與該系統快取記憶體線大小相同之複數個副線。每一LLC線儲存未經壓縮資料,且對應於一系統快取記憶體線的該LLC線之一或多個副線可被獨立地標記為有效。
儲存於一單一LLC線內的該(等)系統快取記憶體線之內容被壓縮且儲存於對應於該LLC線之記憶體副線區內之系統記憶體中。一主資料表(及視情況,一主資料表(MT)快取記憶體)用以儲存指示如何將對應於一給定LLC線之經壓縮資料儲存於系統記憶體中(例如,藉由儲存用於每一LLC線內之每一副線之一位移值及一長度值)的資訊。藉由將一或多個系統快取記憶體線壓縮在一起且將經壓縮資料儲存於通常分配至多個未經壓縮系統線的該系統記憶體中之一空間中,由該LLC及該主資料表提供之頻寬壓縮機制使位元子大小能夠小於該系
統記憶體之記憶體顆粒大小。該CMC可藉由在擷取用於同一LLC線內之另一副線之經壓縮資料時有效地預提取用於一副線之經壓縮資料來改良記憶體頻寬。藉由以組合方式自該LLC讀取及/或寫入多個副線,該CMC可能夠利用原本將歸因於該記憶體讀取/寫入粒度而被浪費之記憶體存取頻寬。
在另一態樣中,提供一種CMC。該CMC包含經組態以經由一系統匯流排來存取一系統記憶體及一系統快取記憶體之一記憶體介面。該CMC以通信方式耦接至包含複數個LLC線之一LLC,該複數個LLC線中之每一者經定大小以儲存對應於該系統快取記憶體之複數個系統快取記憶體線之複數個副線。該CMC經組態以自該系統快取記憶體接收包含一記憶體位址之一記憶體讀取請求。該CMC經進一步組態以判定該記憶體位址是否對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一有效副線。該CMC亦經組態以回應於判定該記憶體位址不對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一有效副線而自該系統記憶體中之一主資料表讀取含有用於該LLC線之一位移值及一長度值之一主資料表項目。該CMC另外經組態以基於該記憶體位址、該位移值及該長度值而自該系統記憶體擷取一或多個區塊。該CMC經進一步組態以將來自該等經擷取之一或多個區塊之資料儲存於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一副線中。該CMC亦經組態以將來自該等經擷取之一或多個區塊之該資料傳回至該系統快取記憶體。
在另一態樣中,提供一種CMC。該CMC包含經組態以經由一系統匯流排來存取一系統記憶體及一系統快取記憶體之一記憶體介面。該CMC以通信方式耦接至包含複數個LLC線之一LLC,該複數個LLC線中之每
一者經定大小以儲存對應於該系統快取記憶體之相連複數個系統快取記憶體線之複數個副線。該CMC經組態以自該系統快取記憶體接收包含寫入資料及一記憶體位址之一記憶體寫入請求。該CMC經進一步組態以判定該記憶體位址是否對應於該LLC之該複數個LLC線內之一LLC線的該複數個副線中之一副線。該CMC亦經組態以回應於判定該記憶體位址不對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一副線而選擇該LLC之該複數個LLC線內之一LLC線作為一收回LLC線。該CMC另外經組態以針對含有經修改資料的該收回LLC線之該複數個副線中之每一副線壓縮來自該副線之資料。該CMC經進一步組態以基於來自該副線之該經壓縮資料來產生用於該副線之一經更新位移值及一經更新長度值。該CMC亦經組態以基於用於該副線之該經更新位移值及該經更新長度值將用於該副線之該經壓縮資料儲存於該系統記憶體之一或多個區塊中。該CMC另外經組態以將該經更新位移值及該經更新長度值儲存於一主資料表中的用於該副線之一主資料表項目中。該CMC經進一步組態以將該寫入資料儲存於該收回LLC線之該複數個副線中之該副線中。
在另一態樣中,提供一種用於提供用於記憶體讀取操作之記憶體頻寬壓縮之方法。該方法包含由一CMC自一系統快取記憶體接收包含一記憶體位址之一記憶體讀取請求。該方法進一步包含判定該記憶體位址是否對應於一LLC之複數個LLC線中之一LLC線內的複數個副線中之一有效副線。該方法亦包含回應於判定該記憶體位址不對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一有效副線而自一系統記憶體中之一
主資料表讀取含有用於該LLC線之一位移值及一長度值之一主資料表項目。該方法另外包含基於該記憶體位址、該位移值及該長度值而自該系統記憶體擷取一或多個區塊。該方法進一步包含將來自該等經擷取之一或多個區塊之資料儲存於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一
副線中。該方法亦包含將來自該等經擷取之一或多個區塊之該資料傳回至該系統快取記憶體。
在另一態樣中,提供一種用於提供用於記憶體寫入操作之記憶體頻寬壓縮之方法。該方法包含由一CMC自一系統快取記憶體接收包含寫入資料及一記憶體位址之一記憶體寫入請求。該方法進一步包含判定該記憶體位址是否對應於一LLC之複數個LLC線中之一LLC線內的複數個副線中之一副線。該方法亦包含回應於判定該記憶體位址不對應於該LLC之複數個LLC線中之一LLC線內的該複數個副線中之一副線而選擇該LLC之該複數個LLC線內之一LLC線作為一收回LLC線。該方法另外包含針對含有經修改資料的該收回LLC線之該複數個副線中之每一副線壓縮來自該副線之資料。該方法進一步包含基於來自該副線之該經壓縮資料來產生用於該副線之一經更新位移值及一經更新長度值。該方法亦包含基於用於該副線之該經更新位移值及該經更新長度值將用於該副線之該經壓縮資料儲存於一系統記憶體之一或多個區塊中。該方法另外包含將該經更新位移值及該經更新長度值儲存於一主資料表中的用於該副線之一主資料表項目中。該方法進一步包含將該寫入資料儲存於該收回LLC線之該複數個副線中之一副線中。
在另一態樣中,提供一種CMC。該CMC包含一用於自一系統快取記憶體接收包含一記憶體位址之一記憶體讀取請求的構件。該CMC進一步包含一用於判定該記憶體位址是否對應於一LLC之複數個LLC線中之一LLC線內的複數個副線中之一有效副線的構件。該CMC亦包含一用於回應於判定該記憶體位址不對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一有效副線而自一系統記憶體中之一主資料表讀取含有用於該LLC線之一位移值及一長度值之一主資料表項目的構件。該
CMC另外包含一用於基於該記憶體位址、該位移值及該長度值而自該系統記憶體擷取一或多個區塊的構件。該CMC進一步包含一用於將來自該等經擷取之一或多個區塊之資料儲存於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一副線中的構件。該CMC亦包含一用於將來自該等經擷取之一或多個區塊之該資料傳回至該系統快取記憶體的構件。
在另一態樣中,提供一種CMC。該CMC包含一用於自一系統快取記憶體接收包含寫入資料及一記憶體位址之一記憶體寫入請求的構件。該CMC進一步包含一用於判定該記憶體位址是否對應於一LLC之複數個LLC線中之一LLC線內的複數個副線中之一副線的構件。該CMC亦包含一用於回應於判定該記憶體位址不對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一副線而選擇該LLC之該複數個LLC線內之一LLC線作為一收回LLC線的構件。該CMC另外包含一用於壓縮來自含有經修改資料的該收回LLC線之該複數個副線中之每一副線之資料的構件。該CMC進一步包含一用於針對含有經修改資料的該收回LLC線之該複數個副線中之每一副線而基於來自該副線之該經壓縮資料來產生一經更新位移值及一經更新長度值的構件。該CMC亦包含一用於針對含有經修改資料的該收回LLC線之該複數個副線中之每一副線而基於用於該副線之該經更新位移值及該經更新長度值將該經壓縮資料儲存於一系統記憶體之一或多個區塊中的構件。該CMC另外包含一用於針對含有經修改資料的該收回LLC線之該複數個副線中之每一副線將該經更新位移值及該經更新長度值儲存於一主資料表中的用於該副線之一主資料表項目中的構件。該CMC進一步包含一用於將該寫入資料儲存於該收回LLC線之該複數個副線中之一副線中的構件。
100:系統單晶片
102:以中央處理單元為基礎之系統
104(0):中央處理單元區塊
104(N):中央處理單元區塊
106(0):中央處理單元
106(1):中央處理單元
108(0):共用階層2快取記憶體
108(N):共用階層2快取記憶體
110:系統快取記憶體
112:內部系統匯流排
114:記憶體控制器
116:周邊設備
118:儲存體
120:快速周邊組件互連介面
122:直接記憶體存取控制器
124:整合式記憶體控制器
200:系統單晶片
202:以中央處理單元為基礎之系統
204:經壓縮記憶體控制器
206:系統記憶體
208(0):雙資料速率動態隨機存取記憶體
208(R):雙資料速率動態隨機存取記憶體
300:單獨半導體晶粒
302(0):半導體晶粒
302(1):半導體晶粒
304(0):記憶體介面
304(P):記憶體介面
306:壓縮控制器
308:本端記憶體
310:靜態隨機存取記憶體
312:階層4控制器
314:內部記憶體
316:內部記憶體控制器
400:記憶體頻寬壓縮機制
402(0):記憶體顆粒
402(1):記憶體顆粒
402(X):記憶體顆粒
404(0):區塊
404(E):區塊
406(0):區塊
406(E):區塊
408(0):區塊
408(E):區塊
410(0):系統快取記憶體線
410(1):系統快取記憶體線
410(V-1):系統快取記憶體線
410(V):系統快取記憶體線
412:最後階層快取記憶體
414:記憶體讀取請求
416:記憶體位址
418:記憶體寫入請求
420:寫入資料
422:記憶體位址
424(0):最後階層快取記憶體線
424(Y):最後階層快取記憶體線
426(0):副線
426(X):副線
428(0):副線
428(X):副線
430:主資料表
432(0):主資料表項目
432(Y):主資料表項目
434(0):位移值
434(W):位移值
436(0):位移值
436(W):位移值
438(0):長度值
438(W):長度值
440(0):長度值
440(W):長度值
442:經更新位移值
444:經更新長度值
446:主資料表快取記憶體
448(0):主資料表快取記憶體項目
448(Z):主資料表快取記憶體項目
500(0):記憶體副線區
500(1):記憶體副線區
502:經壓縮資料
504:元素
506(0):記憶體副線區
506(1):記憶體副線區
508:經壓縮資料
510(0):記憶體副線區
510(1):記憶體副線區
512:經壓縮資料
514:元素
516(0):記憶體副線區
516(1):記憶體副線區
518:經壓縮資料
520:經壓縮資料
522(0):記憶體副線區
522(1):記憶體副線區
524:元素
602:決策區塊
604:區塊
606:決策區塊
608:區塊
610:區塊
612:決策區塊
614:區塊
616:區塊
618:決策區塊
620:區塊
622:決策區塊
624:區塊
626:決策區塊
628:區塊
630:區塊
632:區塊
634:決策區塊
636:區塊
638:區塊
640:區塊
642:區塊
644:區塊
646:區塊
648:區塊
700:區塊
702:區塊
704:區塊
706:區塊
708:決策區塊
710:區塊
712:區塊
714:區塊
716:區塊
800:區塊
802:決策區塊
804:區塊
806:區塊
808:區塊
810:區塊
812:區塊
814:區塊
816:區塊
818:決策區塊
820:區塊
822:區塊
824:區塊
826:決策區塊
828:區塊
830:決策區塊
832:區塊
834:決策區塊
836:區塊
838:區塊
844:區塊
900:以處理器為基礎之系統
902:中央處理單元
904:處理器
906:快取記憶體
908:系統匯流排
910:記憶體系統
912:輸入裝置
914:輸出裝置
916:網路介面裝置
918:顯示控制器
920:網路
922(0):記憶體單元
922(N):記憶體單元
924:顯示器
926:視訊處理器
圖1為包括以中央處理單元(CPU)為基礎之系統之例示性系統單晶片(SoC)的示意圖;圖2為包括具有複數個CPU及經組態以提供記憶體頻寬壓縮之經壓縮記憶體控制器(CMC)的例示性以CPU為基礎之系統之SoC的示意圖;圖3為圖2之CMC的較詳細示意圖,其中CMC進一步以通信方式耦接至可用以提供記憶體頻寬壓縮之選用內部記憶體;圖4為說明可由圖2及圖3之CMC實施以用於提供記憶體頻寬壓縮之例示性記憶體頻寬壓縮機制的圖解;圖5為說明可由圖2之CMC應用以用於產生用於待儲存於系統記憶體中之經壓縮資料之位移值之分配規則的方塊圖;圖6A至圖6E為說明用於由圖2之CMC使用記憶體頻寬壓縮來執行記憶體讀取操作之例示性操作的流程圖;圖7為說明在記憶體讀取操作期間由圖2之CMC將經收回之最後階層快取記憶體(LLC)線之副線儲存於系統記憶體中之例示性操作的流程圖;圖8A至圖8D為說明用於由圖2之CMC使用記憶體頻寬壓縮來執行記憶體寫入操作之例示性操作的流程圖;且圖9為可包括使用圖2之CMC的圖1之SoC的例示性以處理器為基礎之系統的方塊圖。
現在參考圖式,描述本發明之若干例示性態樣。詞語「例示性」在本文中用以意謂「充當實例、例子或說明」。在本文中被描述為「例示性」之任何態樣未必被認作比其他態樣較佳或有利。
本文中所揭示之態樣包括在一以中央處理單元(CPU)為基礎之系統中使用多個最後階層快取記憶體(LLC)線提供記憶體頻寬壓縮。在一些態樣中,經壓縮記憶體控制器(CMC)經組態以提供用於記憶體讀取請求及/或記憶體寫入請求之記憶體頻寬壓縮。就此而言,圖2為包括相似於圖1中之以CPU為基礎之系統102的具有複數個CPU區塊104(0)至104(N)之以CPU為基礎之系統202之系統單晶片(SOC)200的示意圖。圖2中之以CPU為基礎之系統202包括與圖1中之以CPU為基礎之系統102共同的一些組件,其係由圖1與圖2之間的共同元件編號附註。出於簡潔起見,將不重新描述此等元件。然而,在圖2中之以CPU為基礎之系統202中,提供CMC 204。CMC 204控制對系統記憶體206之存取。作為一非限制性實例,系統記憶體206可包含一或多個雙資料速率(DDR)動態隨機存取記憶體(DRAM)208(0)至208(R)(在下文中被稱作「DRAM 208(0)至208(R)」)。在此實例中,CMC 204使用根據本文及下文所揭示之態樣的記憶體頻寬壓縮。相似於圖1之以CPU為基礎之系統102的記憶體控制器114,圖2中之以CPU為基礎之系統202中的CMC 204係由CPU區塊104(0)至104(N)經由內部系統匯流排112而共用。出於說明起見,在圖3中提供圖2中之CMC 204之例示性內部組件的較詳細示意圖。在此實例中,在來自含有圖2中之CPU區塊104(0)至104(N)之半導體晶粒302(0)、302(1)的單獨半導體晶粒300上提供CMC 204。替代地,在一些態樣中,可將CMC 204包括於具有CPU區塊104(0)至104(N)之共同半導體晶粒(未圖示)中。不管晶粒組態,提供CMC 204,使得CPU區塊104(0)至104(N)可經由內部系統匯流排112而對CMC 204進行記憶體存取請求,且經由CMC 204自記憶體接收資料。
繼續參考圖3,CMC 204控制用於對系統記憶體206之記憶體存取的操作,系統記憶體206在圖2及圖3中被展示為包含DRAM 208(0)至208(R)。CMC 204包括用以服務於記憶體存取請求(未圖示)之複數個記憶體介面(MEM
I/F)304(0)至304(P)(例如,DDR DRAM介面)。就此而言,在此實例中,CMC 204包括壓縮控制器306。壓縮控制器306回應於來自CPU區塊104(0)至104(N)之記憶體存取請求而控制儲存至系統記憶體206之資料的壓縮及自系統記憶體206擷取之資料的解壓縮。壓縮控制器306亦可經組態以執行經由內部系統匯流排112提供至CPU區塊104(0)至104(N)之資訊的頻寬壓縮。
如下文將更詳細地所論述,壓縮控制器306可執行任何數目個壓縮技術及演算法以提供記憶體頻寬壓縮。針對由壓縮控制器306所需要以執行此等壓縮技術及演算法之資料結構及其他資訊提供本端記憶體308。就此而言,以靜態隨機存取記憶體(SRAM)310之形式提供本端記憶體308。本端記憶體308具有足夠大小以用於可為壓縮控制器306所需要以執行壓縮技術及演算法之資料結構及其他資料儲存體。本端記憶體308亦可經分割以含有快取記憶體(諸如階層4(L4)快取記憶體)以提供額外快取記憶體以用於CMC 204內之內部使用。因此,亦可在CMC 204中提供L4控制器312以提供對L4快取記憶體之存取。增強型壓縮技術及演算法可需要較大內部記憶體。舉例而言,本端記憶體308可提供128個千位元組(kB)之記憶體。
另外,如圖3所展示,亦可針對CMC 204提供選用的額外內部記憶體314。作為一實例,可提供額外內部記憶體314作為DRAM。相比於本端記憶體308中之儲存量,額外內部記憶體314可促進資料結構及其他資料之額外或較大儲存量,以用於使CMC 204提供記憶體頻寬壓縮及解壓縮機制以增加以CPU為基礎之系統202之記憶體頻寬壓縮。在CMC 204中提供內部記憶體控制器316以控制對額外內部記憶體314之記憶體存取以用於
壓縮。內部記憶體控制器316不可由CPU區塊104(0)至104(N)存取或檢視。
如上文所提及,圖3中之CMC 204可執行記憶體頻寬壓縮,在一些態樣中包括零線壓縮。本端記憶體308可用以儲存用於此等壓縮之較大資料結構。如下文更詳細地所論述,記憶體頻寬壓縮可縮減記憶體存取潛時,且允許較多CPU 106(0)、106(1)或其各別執行緒存取相同數目個記憶體通道,同時最小化對記憶體存取潛時之影響。在一些態樣中,與在CMC 204不執行此等壓縮之情況下的記憶體通道之較大數目相比較,可縮減記憶體通道之數目,同時達成相似潛時結果,此可引起系統階層功率消耗縮減。
針對圖3中之CMC 204中之記憶體頻寬壓縮而提供的資源中之每一者(包括本端記憶體308及額外內部記憶體314)可個別地或彼此結合地用以達成資源及面積、功率消耗、經由記憶體容量壓縮之增加記憶體容量及經由記憶體頻寬壓縮之增加效能之間的所要平衡。可按需要而啟用或停用記憶體頻寬壓縮。另外,可啟用或停用上文所描述之供CMC 204使用之資源,以達成記憶體容量及/或頻寬壓縮效率、功率消耗及效能之間的所要取捨。現在將論述使用可用於CMC 204之此等資源的例示性記憶體頻寬壓縮技術。就此而言,圖4說明可由圖2及圖3之CMC 204實施以提供記憶體頻寬壓縮之例示性記憶體頻寬壓縮機制400的示意圖。在記憶體頻寬壓縮機制400中,系統記憶體206包括用於儲存經壓縮資料之複數個記憶體顆粒402(0)至402(X)。記憶體顆粒402(0)至402(X)中之每一者的大小表示系統記憶體206之記憶體讀取/寫入粒度(亦即,可在記憶體讀取操作中自系統記憶體206讀取或在記憶體寫入操作中寫入至系統記憶體206之資料的最小量)。舉例而言,在一些例示性記憶體架構中,記憶體顆粒402(0)至402(X)中之每一者可包含64個位元組之資料。經壓縮資料可儲存於記憶體顆粒402(0)至402(X)內之區塊404(0)至404(E)、406(0)至406(E)及408(0)至408(E)中。區塊404(0)至404(E)、406(0)至406(E)及408(0)至408(E)
中之每一者具有小於系統記憶體206之記憶體讀取/寫入粒度的大小。在上述實例中,記憶體顆粒402(0)至402(X)中之每一者包含64個位元組之資料,且區塊404(0)至404(E)、406(0)至406(E)及408(0)至408(E)中之每一者可包含32個位元組之資料。
一些態樣可規定記憶體顆粒402(0)至402(X)中之每一者可包含更多或更少位元組之資料(例如,作為非限制性實例,256個位元組或64個位元組)。相似地,根據一些態樣,取決於所利用之壓縮機制之能力,記憶體顆粒402(0)至402(X)內之區塊404(0)至404(E)、406(0)至406(E)、408(0)至408(E)可更大或更小(例如,作為非限制性實例,128個位元組或16個位元組)。在一些態樣中,記憶體讀取操作可讀取少於記憶體顆粒402(0)至402(X)中之每一者(例如,區塊404(0)至404(E)、406(0)至406(E)、408(0)至408(E)中之一者)之大小的位元組,但仍消耗量與記憶體顆粒402(0)至402(X)中之一者相同的記憶體頻寬。記憶體頻寬壓縮機制400進一步提供包含複數個系統快取記憶體線410(0)至410(V)之系統快取記憶體110。複數個系統快取記憶體線410(0)至410(V)中之每一者可經定大小以儲存系統記憶體206之多個記憶體顆粒402(0)至402(X)之內容。舉例而言,在記憶體顆粒402(0)至402(X)之大小為64個位元組的態樣中,複數個系統快取記憶體線410(0)至410(V)中之每一者的大小可為128個位元組。
為了提供記憶體頻寬壓縮,CMC 204以通信方式耦接至用於轉譯系統快取記憶體110與系統記憶體206之間的記憶體讀取操作(諸如來自記憶體位址416之記憶體讀取請求414)及記憶體寫入操作(諸如用以將寫入資料420儲存至記憶體位址422之記憶體寫入請求418)的LLC 412(例如,階層4(L4)快取記憶體)。LLC 412包含複數個LLC線424(0)至424(Y)。複數個LLC線424(0)至424(Y)中之每一者係由複數個副線(諸如LLC線424(0)之
副線426(0)至426(X)及LLC線424(Y)之副線428(0)至428(X))構成。在一些態樣中,複數個LLC線424(0)至424(Y)各自可包括兩(2)個副線426(0)至426(X)、428(0)至428(X)。一些態樣可規定複數個LLC線424(0)至424(Y)內之副線426(0)至426(X)、428(0)至428(X)之數目為二(2)的冪。副線426(0)至426(X)、428(0)至428(X)中之每一者的大小對應於複數個系統快取記憶體線410(0)至410(V)中之每一者的大小。因此,舉例而言,若系統快取記憶體線410(0)至410(V)之大小為128個位元組,則含有兩(2)個副線426(0)至426(X)、428(0)至428(X)之LLC線424(0)至424(Y)的大小為256個位元組。
如下文更詳細地所論述,CMC 204可藉由在自LLC 412收回LLC線424(0)至424(Y)後就壓縮及儲存用於系統記憶體206中之LLC線424(0)至424(Y)中之每一者的資料來提供記憶體頻寬壓縮。因為LLC線424(0)至424(Y)中之每一者包括對應於系統快取記憶體110之多個系統快取記憶體線410(0)至410(V)的副線426(0)至426(X)、428(0)至428(X),所以用於多個系統快取記憶體線410(0)至410(V)之資料可被壓縮及寫入至系統記憶體206。在一些態樣中,作為一非限制性實例,用於多個系統快取記憶體線410(0)至410(V)之資料視情況可被同時壓縮及一起寫入至系統記憶體206,及/或可被一起讀取及同時解壓縮。
歸因於系統記憶體206之記憶體讀取/寫入粒度,用於副線426(0)至426(X)、428(0)至428(X)中之特定副線之經壓縮資料的後續讀取亦可傳回用於同一LLC線424(0)至424(Y)內之其他副線426(0)至426(X)、428(0)至428(X)之資料。此可有效地提供同一LLC線424(0)至424(Y)內之其他副線426(0)至426(X)、428(0)至428(X)內之資料之全部或部分的預提取,而不消耗與在單獨記憶體讀取操作中讀取其他副線426(0)至426(X)、428(0)至428(X)所消耗之頻寬一樣多的頻寬。
系統記憶體206亦包括主資料表430,主資料表430包括多個主資料表項目432(0)至432(Y)。主資料表項目432(0)至432(Y)中之每一者為與記憶體顆粒402(0)至402(X)相同的大小。在圖4之實例中,主資料表項目432(0)至432(Y)儲存用於副線426(0)至426(X)、428(0)至428(X)中之每一者的位移值434(0)至434(W)、436(0)至436(W)及長度值438(0)至438(W)、440(0)至440(W),用於副線426(0)至426(X)、428(0)至428(X)之經壓縮資料儲存於系統記憶體206中之區塊404(0)至404(E)、406(0)至406(E)、408(0)至408(E)中。應理解,在一些態樣中,位移值434(0)至434(W)、436(0)至436(W)及長度值438(0)至438(W)、440(0)至440(W)之數目可大於或小於圖4所說明之數目。CMC 204使用位移值434(0)至434(W)、436(0)至436(W)以判定用於特定副線426(0)至426(X)、428(0)至428(X)之經壓縮資料相對於對應於被壓縮之LLC線424(0)至424(Y)的系統記憶體206中記憶體之記憶體線區之開始位於何處。CMC 204使用長度值438(0)至438(W)、440(0)至440(W)以判定儲存有用於副線426(0)至426(X)、428(0)至428(X)之經壓縮資料的區塊404(0)至404(E)、406(0)至406(E)、408(0)至408(E)之數目。CMC 204可一起使用位移值434(0)至434(W)、436(0)至436(W)及長度值438(0)至438(W)、440(0)至440(W)以判定哪些及多少區塊404(0)至404(E)、406(0)至406(E)、408(0)至408(E)存取用於系統記憶體206中之副線426(0)至426(X)、428(0)至428(X)之經壓縮資料上的記憶體操作。在一些態樣中,長度值438(0)至438(W)、440(0)至440(W)中之一或多者可表示指示對應副線426(0)至426(X)、428(0)至428(X)含有指定型樣之編碼。作為一非限制性實例,具有值零(0)之長度值438(0)至438(W)、440(0)至440(W)可指示對應副線426(0)至426(X)、428(0)至428(X)含有全零(0),且因此CMC 204可避免至記憶體的不必要的讀取或寫入。
如下文更詳細地所論述,CMC 204可使用一或多個分配規則以增加副線預提取之可能性來產生位移值434(0)至434(W)、436(0)至436(W)。當壓縮用於儲存於系統記憶體206中之資料時,CMC 204之一些態樣可產生經更新位移值442及/或經更新長度值444。若資料已經儲存於系統記憶體206中之待寫入位置處,則CMC 204可藉由比較經更新長度值444與長度值438(0)至438(W)、440(0)至440(W)中之一者來判定如何將經壓縮資料儲存於系統記憶體206中。
在一些態樣中,CMC 204可進一步包括主資料表(MT)快取記憶體446,MT快取記憶體446包含用於快取主資料表430之主資料表項目432(0)至432(Y)之子集的主資料表(MT)快取記憶體項目448(0)至448(Z)。在使用MT快取記憶體446之情況下,CMC 204可縮減可藉由讀取系統記憶體206中之主資料表430而招致的記憶體存取潛時。
為了說明可由圖4之CMC 204應用以確保用於儲存經壓縮資料之系統記憶體206之高效使用的例示性分配規則的效應,提供圖5。當產生用於經壓縮資料之位移值(諸如位移值434(0))時(亦即,當判定經壓縮資料應在對應於被壓縮之LLC線424(0)的系統記憶體206中記憶體之記憶體線區內儲存於何處時),CMC 204可應用一或多個分配規則。藉由應用分配規則,CMC 204可運用一(1)或多個記憶體讀取操作來最大化預提取多個副線426(0)至426(X)、428(0)至428(X)之可能性。在一些態樣中,一或多個分配規則可用以藉由運用用於具有給定資料位置及大小之另一現有副線(諸如副線426(X))的經壓縮資料來預產生指示用於副線(諸如副線426(0))之經更新的經壓縮資料區塊可最佳地在系統記憶體206中儲存於何處的分配資料表(未圖示)。
在一些態樣中,一或多個分配規則可包括防止經壓縮資料跨越對應於多於一個副線的系統記憶體206之記憶體副線區。舉例而言,在圖5中,可使用系統記憶體206之兩(2)個鄰近記憶體副線區500(0)及500(1)以儲存經壓縮資料
502,兩(2)個鄰近記憶體副線區500(0)及500(1)中之每一者為與LLC 412之副線426(0)至426(X)、428(0)至428(X)相同的大小。然而,如圖5所展示之經壓縮資料502經定位使得其跨越記憶體副線區500(0)、500(1),且將需要讀取記憶體副線區500(0)、500(1)兩者以擷取經壓縮資料502。因此,如由元素504所指示,經壓縮資料502之定位將違反關於跨越之分配規則。
一些態樣可規定一或多個分配規則包括使經壓縮資料在系統記憶體206之記憶體副線區內對準。如在圖5中所見,記憶體副線區506(0)及506(1)儲存經壓縮資料508。在此實例中,經壓縮資料508與記憶體副線區506(0)之開始對準。與此對比,記憶體副線區510(0)及510(1)儲存經壓縮資料512,經壓縮資料512不與記憶體副線區510(0)之開始或結束對準。因此,如由元素514所指示,經壓縮資料512之定位將違反關於對準之分配規則。
根據一些態樣,一或多個分配規則可包括對用於複數個副線之經壓縮資料分組。舉例而言,在可能的情況下應將經壓縮資料之奇數長度區塊一起置放於記憶體副線區內,以便增加能夠預提取資料之機會。在圖5中,舉例而言,記憶體副線區516(0)及516(1)儲存經壓縮資料518及520。經壓縮資料518及520兩者均儲存於記憶體副線區516(0)內,因此允許運用單一記憶體讀取操作來讀取此兩者。與此對比,在記憶體副線區522(0)及522(1)中,不對經壓縮資料518及520分組。因此,可錯過預提取機會。因此,如由元素524所指示,記憶體副線區522(0)及522(1)內的經壓縮資料518及520之定位將違反關於分組之分配規則。
圖6A至圖6E為說明用於由圖4之CMC 204使用記憶體頻寬壓縮來執行記憶體讀取操作之例示性操作的流程圖。出於清楚起見,在描述圖6A至圖6E時參考圖4之元件。在圖6A中,操作開始於CMC 204自系統快取
記憶體110接收包含記憶體位址416之記憶體讀取請求414(區塊600)。就此而言,CMC 204可在本文中被稱作「用於自系統快取記憶體接收包含記憶體位址之記憶體讀取請求的構件」。CMC 204判定記憶體位址416是否對應於LLC 412之複數個LLC線424(0)至424(Y)中之LLC線424(0)內的複數個副線426(0)至426(X)中之有效副線426(0)(區塊602)。因此,CMC 204可在本文中被稱作「用於判定記憶體位址是否對應於LLC之複數個LLC線中之LLC線內的複數個副線中之有效副線的構件」。在一些態樣中,判定記憶體位址416是否對應於有效副線426(0)可藉由以下操作而實現:CMC 204判定記憶體位址416是否對應於複數個LLC線424(0)至424(Y)內之現有LLC線424(0)之副線426(0),且若對應,則判定現有LLC線424(0)之副線426(0)是否有效。
在一些態樣中,若CMC 204在決策區塊602處判定記憶體位址416對應於有效副線426(0)(亦即,LLC 412上之快取命中),則CMC 204將來自有效副線426(0)之資料傳回至系統快取記憶體110(區塊604)。若記憶體位址416被判定為不對應於有效副線426(0)(例如,因為記憶體位址416不對應於現有LLC線424(0),或記憶體位址416所對應之副線426(0)無效),則在一些態樣中CMC 204接下來判定MT快取記憶體446是否在使用中(區塊
606)。若MT快取記憶體446不在使用中,則CMC 204自系統記憶體206中之主資料表430讀取含有用於LLC線424(0)之位移值434(0)及長度值438(0)之主資料表項目432(0)(區塊608)。因此,CMC 204可在本文中被稱作「用於回應於判定記憶體位址不對應於LLC之複數個LLC線中之LLC線內的複數個副線中之有效副線而自系統記憶體中之主資料表讀取含有用於LLC線之位移值及長度值之主資料表項目的構件」。接著,處理在圖6C中之區塊610處恢復執行。
在一些態樣中,若CMC 204在決策區塊606處判定MT快取記憶體446在使用中,則CMC 204判定記憶體位址416是否對應於MT快取記憶體446之複數個MT快取記憶體項目448(0)至448(Z)中之MT快取記憶體項目448(0)(區塊612)。若不對應(亦即,MT快取記憶體446上之快取未命中),則處理在圖6B之區塊614處恢復執行。然而,若CMC 204在決策區塊612處判定記憶體位址416確實對應於MT快取記憶體項目448(0)(亦即,MT快取記憶體446上之快取未命中),則處理在圖6B之區塊616處繼續。
現在參考圖6B。應理解,在一些態樣中,圖6B所說明之操作中之一或多者可並行地執行,及/或可以除了圖6B所展示之次序以外的次序執行。如在圖6B中所見,回應於MT快取記憶體446上之快取未命中,CMC 204讀取用於LLC線424(0)之主資料表430中之主資料表項目,諸如主資料表項目432(0)(區塊614)。CMC 204可判定是否收回MT快取記憶體446之當前MT快取記憶體項目448(0)(區塊618)。若不收回,則處理在圖6B之區塊620處恢復執行。然而,若CMC 204在決策區塊618處判定當前MT快取記憶體項目448(0)應被收回,則CMC 204判定當前MT快取記憶體項目448(0)是否已被更新(例如,藉由檢查用於當前MT快取記憶體項目448(0)之已變更位元)(區塊622)。若當前MT快取記憶體項目448(0)尚未被更新,則處理在圖6B之區塊620處恢復執行。若CMC 204在決策區塊622處判定當前MT快取記憶體項目448(0)已被更新,則CMC 204將當前MT快取記憶體項目448(0)之內容寫入至主資料表430(區塊624)。接著,CMC 204將在圖6B之區塊
614中讀取的主資料表項目432(0)寫入至MT快取記憶體446之MT快取記憶體項目448(0)(區塊620)。接著,處理在圖6C之區塊610處恢復
執行。若CMC 204在圖6A之決策區塊612處判定記憶體位址416確實對應於MT快取記憶體446之複數個MT快取記憶體項目448(0)至448(Z)中之MT快取記憶體項目448(0),則CMC 204讀取MT快取記憶體446之MT快取記憶體項目448(0)(區塊616)。接著,處理在圖6C之區塊610處恢復執行。
現在轉至圖6C,CMC 204接下來基於記憶體位址416、位移值434(0)及長度值438(0)而自系統記憶體206擷取一或多個區塊404(0)至404(E)(區塊610)。就此而言,CMC 204可在本文中被稱作「用於基於記憶體位址、位移值及長度值而自系統記憶體擷取一或多個區塊的構件」。一些態樣可規定CMC 204接著可判定是否自LLC 412收回LLC線424(0)(例如,以將自系統記憶體206讀取之資料儲存於LLC 412中)(區塊626)。若CMC 204在決策區塊626處判定不收回LLC線424(0),則處理在圖6D之區塊628處恢復執行。然而,若CMC 204判定LLC線424(0)應被收回,則CMC 204選擇複數個LLC線424(0)至424(Y)中之LLC線424(0)作為收回LLC線424(0)(區塊630)。接著,CMC 204將來自收回LLC線424(0)之複數個副線426(0)至426(X)之資料儲存於系統記憶體206中(區塊632)。因此,CMC 204可在本文中被稱作「用於將來自經擷取之一或多個區塊之資料儲存於LLC之複數個LLC線中之LLC線內的複數個副線中之副線中的構件」。在一些態樣中,CMC 204可回應於判定來自複數個副線426(0)至426(X)之資料已被修改而將來自收回LLC線424(0)之複數個副線426(0)至426(X)之資料儲存於系統記憶體206中。作為一非限制性實例,CMC 204可查閱與複數個副線426(0)至426(X)相關聯之一或多個已變更指示符(未圖示)以判定儲存於其中之資料是否已被修改。處理在圖6D之區塊628處繼續。
在一些態樣中,圖6D所說明之操作中之一或多者可並行地執行,及/或可以除了圖6D所展示之次序以外的次序執行。如在圖6D中所見,CMC204接下來將來自經擷取之一或多個區塊404(0)至404(E)之資料儲存於LLC 412之複數
個LLC線424(0)至424(Y)中之LLC線424(0)內的複數個副線426(0)至426(X)中之副線426(0)中(區塊628)。在一些態樣中,用於儲存資料之區塊628之操作可包含CMC 204首先判定來自經擷取之一或多個區塊404(0)至404(E)之資料是否被壓縮(區塊634)。若未被壓縮,則CMC 204將來自經擷取之一或多個區塊404(0)至404(E)之資料儲存於LLC 412之複數個LLC線424(0)至424(Y)中之LLC線424(0)內的副線426(0)中(區塊636)。然而,若CMC 204在決策區塊634處判定來自經擷取之一或多個區塊404(0)至404(E)之資料被壓縮,則CMC 204解壓縮來自經擷取之一或多個區塊404(0)至404(E)之資料(區塊638)。接著,CMC 204將經解壓縮資料儲存於LLC 412之複數個LLC線424(0)至424(Y)中之LLC線424(0)內的副線426(0)中(區塊640)。接著,處理在圖6E之區塊642處恢復執行。
現在參看圖6E,CMC 204接下來將來自經擷取之一或多個區塊404(0)至404(E)之資料傳回至系統快取記憶體110(區塊642)。因此,CMC 204可在本文中被稱作「用於將來自經擷取之一或多個區塊之資料傳回至系統快取記憶體的構件」。一些態樣可規定CMC 204進一步執行「副線預提取」以讀取與來自經擷取之一或多個區塊404(0)至404(E)之資料相連的資料。在此等態樣中,CMC 204可讀取含有用於LLC線424(0)之複數個副線426(0)至426(X)中之一或多個剩餘副線426(X)之一或多個位移值436(0)至436(W)及一或多個長度值440(0)至440(W)的一或多個主資料表項目432(Y)(區塊644)。接著,CMC 204可基於一或多個位移值436(0)至436(W)及一或多個長度值440(0)至440(W)而自系統記憶體206擷取一或多個區塊406(0)至406(E)(區塊646)。CMC 204將來自經擷取之一或多個區塊406(0)至406(E)之資料儲存於LLC線424(0)之複數個副線426(0)至426(X)中之一或多個剩餘副線426(X)中(區塊648)。
為了說明用於由CMC 204在記憶體讀取操作期間將來自收回LLC線424(0)之複數個副線426(0)至426(X)之資料儲存於系統記憶體206中的圖6C之區塊632之例示性操作,提供圖7。出於清楚起見,可在描述圖7時參考圖4之元件。在圖7中,操作開始於CMC 204讀取含有用於收回LLC線424(0)之複數個副線426(0)至426(X)中之每一對應副線426(0)至426(X)之位移值434(0)至434(W)、436(0)至436(W)及長度值438(0)至438(W)、440(0)至440(W)之複數個主資料表項目432(0)至432(Y)的主資料表項目432(0)至432(Y)(區塊700)。接著,CMC 204進行用於含有經修改資料的收回LLC線424(0)之複數個副線426(0)至426(X)中之每一副線426(0)的一系列指令(區塊702)。CMC 204首先壓縮來自副線426(0)之資料(區塊704)。接著,CMC 204基於來自副線426(0)之經壓縮資料(諸如圖5之經壓縮資料508)來產生用於副線426(0)之經更新長度值444(區塊706)。CMC 204判定用於副線426(0)之經更新長度值444是否不同於用於副線426(0)之長度值438(0)至438(W)、440(0)至440(W)(區塊708)。若用於副線426(0)之經更新長度值444並非不同於用於副線426(0)之長度值438(0)至438(W)、440(0)至440(W)(亦即,經壓縮資料為與先前儲存於系統記憶體206中之資料相同的大小),則CMC 204基於用於副線426(0)之位移值434(0)至434(W)、436(0)至436(W)及長度值438(0)至438(W)、440(0)至440(W)將用於副線426(0)之經壓縮資料寫入至系統記憶體206之一或多個區塊404(0)至404(E)(區塊710)。
然而,若CMC 204在決策區塊708處判定用於副線426(0)之經更新長度值444不同於用於副線426(0)之長度值438(0)至438(W)、440(0)至440(W),則CMC 204產生用於副線426(0)之經更新位移值442(區塊712)。在一些態樣中,產生經更新位移值442可基於如上文關於圖5所論述之一或多個分配規則。接著,CMC 204基於用於副線426(0)之經更新位移值442及經更新長
度值444將用於副線426(0)之經壓縮資料寫入至系統記憶體206之一或多個區塊404(0)至404(E)(區塊714)。CMC 204運用經更新位移值442及經更新長度值444來更新用於副線426(0)之主資料表項目432(0)(區塊716)。
圖8A至圖8D為說明用於由圖4之CMC 204使用記憶體頻寬壓縮來執行記憶體寫入操作之例示性操作的流程圖。出於清楚起見,在描述圖8A至圖8D時參考圖4之元件。圖8A中之操作開始於CMC 204自系統快取記憶體
110接收包含寫入資料420及記憶體位址422之記憶體寫入請求418(區塊800)。就此而言,CMC 204可在本文中被稱作「用於自系統快取記憶體接收包含寫入資料及記憶體位址之記憶體寫入請求的構件」。CMC 204判定記憶體位址422是否對應於LLC 412之複數個LLC線424(0)至424(Y)中之LLC線424(0)的複數個副線426(0)至426(X)中之副線426(0)(區塊802)。因此,CMC 204可在本文中被稱作「用於判定記憶體位址是否對應於LLC之複數個LLC線中之LLC線內的複數個副線中之副線的構件」。若記憶體位址422對應於LLC線424(0)之副線426(0)(亦即,LLC 412上之命中),則在一些態樣中CMC 204可將寫入資料420儲存於LLC線424(0)之副線426(0)中(區塊804)。
然而,若CMC 204在決策區塊802處判定記憶體位址422不對應於LLC線424(0)之副線426(0)(亦即,LLC 412上之未命中),則CMC 204選擇LLC412之複數個LLC線424(0)至424(Y)內之LLC線424(0)作為收回LLC線424(0)(區塊806)。因此,CMC 204可在本文中被稱作「用於回應於判定記憶體位址不對應於LLC之複數個LLC之LLC線內的複數個副線中之副線而選擇LLC之複數個LLC線內之LLC線作為收回LLC線的構件」。接下來,CMC 204執行用於含有經修改資料的收回LLC線424(0)之複數個
副線426(0)至426(X)中之每一副線426(0)的一系列操作(亦即,基於用於複數個副線426(0)至426(X)中之每一者的已變更旗標)(區塊808)。CMC 204首先壓縮來自副線426(0)之資料(區塊810)。就此而言,CMC 204可在本文中被稱作「用於壓縮來自含有經修改資料的收回LLC線之複數個副線中之每一副線之資料的構件」。接著,處理在圖8B之區塊812處繼續。
現在轉至圖8B,CMC 204接下來基於來自副線426(0)之經壓縮資料來產生用於副線426(0)之經更新位移值442及經更新長度值444(區塊812)。因此,CMC 204可在本文中被稱作「用於針對含有經修改資料的收回LLC線之複數個副線中之每一副線而基於來自副線之經壓縮資料來產生經更新位移值及經更新長度值的構件」。一些態樣可規定可基於上文關於圖5所論述之一或多個分配規則來產生經更新位移值442。
在一些態樣中,用於產生經更新位移值442及經更新長度值444之區塊812之操作可包括CMC 204基於經壓縮資料來產生用於副線426(0)之經更新長度值444(區塊814)。接著,CMC 204可讀取用於副線426(0)之位移值434(0)至434(W)、436(0)至436(W)及長度值438(0)至438(W)、440(0)至440(W)(區塊816)。對於MT快取記憶體446在使用中的態樣,CMC 204可首先判定是否可自MT快取記憶體446讀取位移值434(0)至434(W)、436(0)至436(W)及長度值438(0)至438(W)、440(0)至440(W)。若在檢查MT快取記憶體446後就發生未命中,則CMC 204接著可自主資料表430讀取位移值434(0)至434(W)、436(0)至436(W)及長度值438(0)至438(W)、440(0)至440(W)。在未使用MT快取記憶體446的態樣中,CMC 204可自系統記憶體206中之主資料表430讀取位移值434(0)至434(W)、436(0)至436(W)及長度值438(0)至438(W)、440(0)至440(W)。CMC 204判定用於副線426(0)之經更新長度值444是否不同於用於副線426(0)之長度值438(0)至438(W)、440(0)至440(W)(區塊818)。
若CMC 204在決策區塊818處判定用於副線426(0)之經更新長度值444不同於用於副線426(0)之長度值438(0)至438(W)、440(0)至440(W),則CMC 204可基於經壓縮資料來產生經更新位移值442(區塊820)。然而,若用於副線426(0)之經更新長度值444並非不同於長度值438(0)至438(W)、440(0)至440(W),則CMC 204可使用位移值434(0)至434(W)、436(0)至436(W)作為經更新位移值442(區塊822)。接著,處理在圖8C之區塊824處恢復執行。
現在參看圖8C,CMC 204基於用於副線426(0)之經更新位移值442及經更新長度值444將用於副線426(0)之經壓縮資料儲存於系統記憶體206之一或多個區塊404(0)至404(E)中(區塊824)。因此,CMC 204可在本文中被稱作「用於針對含有經修改資料的收回LLC線之複數個副線中之每一副線而基於用於副線之經更新位移值及經更新長度值將經壓縮資料儲存於系統記憶體之一或多個區塊中的構件」。根據一些態樣,CMC 204接下來可判定MT快取記憶體446是否在使用中(區塊826)。若MT快取記憶體446不在使用中,則處理在圖8D之區塊828處恢復執行。若CMC 204在決策區塊826處判定MT快取記憶體446在使用中,則CMC 204判定記憶體位址422是否對應於MT快取記憶體446之複數個MT快取記憶體項目448(0)至448(Z)中之MT快取記憶體項目448(0)(區塊830)。若對應(亦即,MT快取記憶體446上之命中),則處理在圖8D之區塊832處恢復執行。
然而,若CMC 204在決策區塊830處判定記憶體位址422不對應於複數個MT快取記憶體項目448(0)至448(Z)中之MT快取記憶體項目448(0)(亦即,MT快取記憶體446上之未命中),則CMC 204判定是否收回MT快取記憶體446之當前MT快取記憶體項目448(0)(區塊834)。若不需要收回,則處理在圖8D之區塊832處恢復執行。若CMC 204在決策區塊834
處判定應自MT快取記憶體446收回當前MT快取記憶體項目448(0),則CMC 204判定當前MT快取記憶體項目448(0)是否已被修改(例如,基於用於MT快取記憶體項目448(0)之已變更旗標位元)(區塊836)。若MT快取記憶體項目448(0)尚未被修改,則處理在圖8D之區塊832處恢復執行。若MT快取記憶體項目448(0)已被修改,則CMC 204將MT快取記憶體項目448(0)之內容寫入至主資料表430(區塊838)。接著,處理在圖8D之區塊832處恢復執行。
現在參考圖8D。在一些態樣中,圖8D所說明之操作中之一或多者可並行地執行,及/或以除了圖8D所展示之次序以外的次序執行。在圖8D中,CMC 204將經更新位移值442及經更新長度值444儲存於MT快取記憶體446之MT快取記憶體項目448(0)中(區塊832)。接著,處理在區塊844處恢復執行。若CMC 204在圖8C之決策區塊826處判定MT快取記憶體446不在使用中,則CMC 204將經更新位移值442及經更新長度值444儲存於主資料表430中的用於副線426(0)之主資料表項目432(0)中(區塊828)。就此而言,CMC 204可在本文中被稱作「用於針對含有經修改資料的收回LLC線之複數個副線中之每一副線將經更新位移值及經更新長度值儲存於主資料表中的用於副線之主資料表項目中的構件」。CMC 204將寫入資料420儲存於收回LLC線424(0)之複數個副線426(0)至426(X)中之副線426(0)中(區塊844)。因此,CMC 204可在本文中被稱作「用於將寫入資料儲存於收回LLC線之複數個副線中之副線中的構件」。
根據本文中所揭示之態樣在以CPU為基礎之系統中使用多個LLC線提供記憶體頻寬壓縮可提供於或整合至任何以處理器為基礎之裝置中。在無限制之情況下,實例包括機上盒、娛樂單元、導航裝置、通信裝置、固定位置資料單元、行動位置資料單元、行動電話、蜂巢式電話、智慧型電話、平板電腦、平板手機、伺服器、電腦、攜帶型電腦、桌上型電腦、個人數位助理(PDA)、監
視器、電腦監視器、電視、調諧器、無線電、衛星無線電、音樂播放器、數位音樂播放器、攜帶型音樂播放器、數位視訊播放器、視訊播放器、數位視訊光碟(DVD)播放器、攜帶型數位視訊播放器,及汽車。
就此而言,圖9說明可使用具有圖2之CMC 204之SoC 200的以處理器為基礎之系統900之實例。在此實例中,以處理器為基礎之系統900包括一或多個CPU 902,每一CPU 902包括一或多個處理器904。CPU 902可具有快取記憶體906,快取記憶體906耦接至處理器904以用於對臨時儲存之資料進行快速存取。CPU 902耦接至系統匯流排908且可使包括於以處理器為基礎之系統900中的裝置相互耦接。如所熟知,CPU 902藉由經由系統匯流排908來交換位址、控制及資料資訊而與此等其他裝置通信。舉例而言,作為從屬裝置之實例,CPU 902可將匯流排異動請求傳達至CMC 204。儘管圖9中未說明,但可提供多個系統匯流排908。
其他裝置可連接至系統匯流排908。如圖9所說明,作為實例,此等裝置可包括記憶體系統910、一或多個輸入裝置912、一或多個輸出裝置914、一或多個網路介面裝置916,及一或多個顯示控制器918。輸入裝置912可包括任何類型之輸入裝置,包括但不限於輸入按鍵、開關、語音處理器等等。輸出裝置914可包括任何類型之輸出裝置,包括但不限於音訊、視訊、其他視覺指示器等等。網路介面裝置916可為經組態以允許至及自網路920之資料交換的任何裝置。網路920可為任何類型之網路,包括但不限於有線或無線網路、私用或公用網路、區域網路(LAN)、廣域網路、無線區域網路、藍芽(BT),及網際網路。網路介面裝置916可經組態以支援任何類型之所要通信協定。記憶體系統910可包括一或多個記憶體單元922(0)至922(N)。
CPU 902亦可經組態以經由系統匯流排908來存取顯示控制器918以控制發送至一或多個顯示器924之資訊。顯示控制器918經由一或多個視訊處理器926將資訊發送至顯示器924以供顯示,視訊處理器926將待顯示之資訊處理成適合於顯示器924之格式。顯示器924可包括任何類型之顯示器,包括但不限於陰極射線管(CRT)、液晶顯示器(LCD)、發光二極體(LED)顯示器、電漿顯示器等等。
作為實例,可在任何電路、硬體組件、積體電路(IC)或IC晶片中使用本文中所描述之裝置。本文中所揭示之記憶體可為任何類型及大小之記憶體,且可經組態以儲存任何類型之所要資訊。為了清楚地說明此可互換性,上文已大體上在功能性方面描述各種說明性組件、區塊、模組、電路及步驟。如何實施此功能性取決於特定應用、設計選擇,及/或強加於整個系統之設計約束。熟習此項技術者可針對每一特定應用而以變化的方式實施所描述之功能性,但此等實施決策不應被解釋為造成脫離本發明之範疇。
可運用經設計以執行本文中所描述之功能的處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯裝置、離散閘或電晶體邏輯、離散硬體組件或其任何組合來實施或執行結合本文中所揭示之態樣而描述的各種說明性邏輯區塊、模組及電路。處理器可為微處理器,但在替代例中,處理器可為任何習知之處理器、控制器、微控制器或狀態機。處理器亦可被實施為計算裝置之組合,例如,DSP與微處理器之組合、複數個微處理器、結合DSP核心之一或多個微處理器,或任何其他此類組態。
亦應注意,描述本文中在例示性態樣中之任一者中所描述之操作步驟以提供實例及論述。可以除了所說明之序列以外的眾多不同序列來執行所描述之操作。此外,單一操作步驟中所描述之操作可實際上以數個不同步驟執行。另
外,可組合例示性態樣中所論述之一或多個操作步驟。應理解,對於熟習此項技術者而言將容易地顯而易見,流程圖中所說明之操作步驟可經受眾多不同修改。熟習此項技術者亦將理解,可使用多種不同科技及技術中之任一者來表示資訊及信號。舉例而言,可藉由電壓、電流、電磁波、磁場或磁性粒子、光場或光學粒子或其任何組合來表示可遍及以上描述而參考之資料、指令、命令、資訊、信號、位元、符號及碼片。
提供本發明之先前描述以使任何熟習此項技術者均能夠製造或使用本發明。在不脫離本發明之精神或範疇的情況下,對本發明之各種修改對於熟習此項技術者而言將容易地顯而易見,且本文中所定義之一般原理可適用於其他變化。因此,本發明並不意欲限於本文中所描述之實例及設計,而應符合與本文中所揭示之原理及新穎特徵相一致的最廣泛範疇。
110:系統快取記憶體
204:經壓縮記憶體控制器
206:系統記憶體
400:記憶體頻寬壓縮機制
402(0):記憶體顆粒
402(1):記憶體顆粒
402(X):記憶體顆粒
404(0):區塊
404(E):區塊
406(0):區塊
406(E):區塊
408(0):區塊
408(E):區塊
410(0):系統快取記憶體線
410(1):系統快取記憶體線
410(V-1):系統快取記憶體線
410(V):系統快取記憶體線
412:最後階層快取記憶體
414:記憶體讀取請求
416:記憶體位址
418:記憶體寫入請求
420:寫入資料
422:記憶體位址
424(0):最後階層快取記憶體線
424(Y):最後階層快取記憶體線
426(0):副線
426(X):副線
428(0):副線
428(X):副線
430:主資料表
432(0):主資料表項目
432(Y):主資料表項目
434(0):位移值
434(W):位移值
436(0):位移值
436(W):位移值
438(0):長度值
438(W):長度值
440(0):長度值
440(W):長度值
442:經更新位移值
444:經更新長度值
446:主資料表快取記憶體
448(0):主資料表快取記憶體項目
448(Z):主資料表快取記憶體項
Claims (22)
- 一種以一中央處理單元(CPU)為基礎之系統,其包括:一系統記憶體;一系統快取記憶體;一最後階層快取記憶體(LLC),其包含複數個LLC線,每一LLC線經定大小以儲存對應於該系統快取記憶體之複數個系統快取記憶體線之複數個副線;及一種經壓縮記憶體控制器(CMC),其包含經組態以經由一系統匯流排來存取該系統記憶體及該系統快取記憶體之一記憶體介面,且以通信方式耦接至該LLC;該CMC經組態以進行以下操作:自該系統快取記憶體接收包含一記憶體位址之一記憶體讀取請求;判定該記憶體位址是否對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一有效副線;及回應於判定該記憶體位址不對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一有效副線而進行以下操作:自該系統記憶體中之一主資料表讀取含有用於該LLC線之一位移值及一長度值之一主資料表項目;基於該記憶體位址、該位移值及該長度值而自該系統記憶體擷取一或多個區塊; 將來自該等經擷取之一或多個區塊之資料儲存於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一副線中;及將來自該等經擷取之一或多個區塊之該資料傳回至該系統快取記憶體。
- 如請求項1之以CPU為基礎之系統,其中該CMC經組態以藉由經組態以進行以下操作來判定該記憶體位址是否對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一有效副線:判定該記憶體位址是否對應於該複數個LLC線內之一現有LLC線之一副線;及回應於判定該記憶體位址對應於該複數個LLC線內之一現有LLC線之一副線而判定該現有LLC線之該副線是否有效。
- 如請求項1之以CPU為基礎之系統,其中該CMC經進一步組態以回應於判定該記憶體位址對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一有效副線而將來自該有效副線之資料傳回至該系統快取記憶體。
- 如請求項1之以CPU為基礎之系統,其中該CMC經組態以藉由經組態以進行以下操作而將來自該等經擷取之一或多個區塊之該資料儲存於該LLC之該複數個LLC線中之該LLC線內的該複數個副線中之該副線中:基於該長度值來判定來自該等經擷取之一或多個區塊之該資 料是否被壓縮;回應於判定來自該等經擷取之一或多個區塊之該資料未被壓縮而將來自該等經擷取之一或多個區塊之該資料儲存於該LLC之該複數個LLC線中之該LLC線內的該複數個副線中之該副線中;及回應於判定來自該等經擷取之一或多個區塊之該資料被壓縮而進行以下操作:解壓縮來自該等經擷取之一或多個區塊之該資料;及將該經解壓縮資料儲存於該LLC之該複數個LLC線中之該LLC線內的該複數個副線中之該副線中。
- 如請求項1之以CPU為基礎之系統,其中該CMC經進一步組態以在將來自該等經擷取之一或多個區塊之該資料儲存於該LLC之該複數個LLC線中之該LLC線內的該複數個副線中之該副線中之前進行以下操作:選擇該複數個LLC線中之一LLC線作為一收回LLC線;將來自該收回LLC線之該複數個副線之資料儲存於該系統記憶體中;及將來自該等經擷取之一或多個區塊之該資料儲存於該收回LLC線內之該複數個副線中之一副線中。
- 如請求項5之以CPU為基礎之系統,其中該CMC經組態以藉由經組態以進行以下操作而將來自該收回LLC線之該複數個副線之該資料儲存於該系統記憶體中: 讀取複數個主資料表項目,每一主資料表項目含有用於該收回LLC線之該複數個副線中之每一對應副線之一位移值及一長度值;及針對含有經修改資料的該收回LLC線之該複數個副線中之每一副線進行以下操作:壓縮來自該副線之資料;基於來自該副線之該經壓縮資料來產生用於該副線之一經更新長度值;判定用於該副線之該經更新長度值是否不同於用於該副線之該長度值;回應於判定用於該副線之該經更新長度值並非不同於用於該副線之該長度值而基於用於該副線之該位移值及該長度值將用於該副線之該經壓縮資料寫入至該系統記憶體之一或多個區塊;及回應於判定用於該副線之該經更新長度值不同於用於該副線之該長度值而進行以下操作:產生用於該副線之一經更新位移值;基於用於該副線之該經更新位移值及該經更新長度值將用於該副線之該經壓縮資料寫入至該系統記憶體之一或多個區塊;及運用該經更新位移值及該經更新長度值來更新用於該副線之一主資料表項目。
- 如請求項6之以CPU為基礎之系統,其中該CMC經組態以基於一或多個分配規則來產生用於該副線之該經更新位移值,該一或多個分配規則包含防止該經壓縮資料跨越對應於多於一個副線的該系統記憶體之記憶體副線區,使該經壓縮資料在該系統記憶體之該等記憶體副線區內對準,及對用於該複數個副線之該經壓縮資料分組。
- 如請求項1之以CPU為基礎之系統,其中該CMC進一步包含一主資料表(MT)快取記憶體,該MT快取記憶體包含複數個MT快取記憶體項目,每一MT快取記憶體項目經組態以儲存一經先前讀取之主資料表項目;該CMC經進一步組態以在讀取該主資料表項目之前判定該記憶體位址是否對應於該MT快取記憶體之該複數個MT快取記憶體項目中之一MT快取記憶體項目;該CMC經組態以回應於判定該記憶體位址不對應於該MT快取記憶體之該複數個MT快取記憶體項目中之一MT快取記憶體項目而讀取該主資料表中之該主資料表項目;且該CMC經進一步組態以進行以下操作:回應於判定該記憶體位址不對應於該MT快取記憶體之該複數個MT快取記憶體項目中之一MT快取記憶體項目而將該主資料表項目寫入至該MT快取記憶體之該複數個MT快取記憶體項目中之一MT快取記憶體項目;及回應於判定該記憶體位址對應於該MT快取記憶體之該複數個MT快取記憶體項目中之一MT快取記憶體項目而讀取該MT快取 記憶體之該MT快取記憶體項目。
- 如請求項8之以CPU為基礎之系統,其中該CMC經進一步組態以在將該主資料表項目寫入至該MT快取記憶體之該複數個MT快取記憶體項目中之該MT快取記憶體項目之前進行以下操作:判定該MT快取記憶體之該複數個MT快取記憶體項目中之一當前MT快取記憶體項目是否應被收回;及回應於判定該當前MT快取記憶體項目應被收回而進行以下操作:判定該當前MT快取記憶體項目是否已被更新;及回應於判定該當前MT快取記憶體項目已被更新而將該當前MT快取記憶體項目之內容寫入至該主資料表。
- 如請求項1之以CPU為基礎之系統,其中該CMC經進一步組態以進行以下操作:讀取含有用於該LLC之該複數個LLC線中之該LLC線內的該複數個副線中之一或多個剩餘副線之一或多個位移值及一或多個長度值的一或多個主資料表項目;基於該一或多個位移值及該一或多個長度值而自該系統記憶體擷取該一或多個區塊;及將來自該等經擷取之一或多個區塊之該資料儲存於該LLC之該複數個LLC線中之該LLC線內的該複數個副線中之該一或多個剩餘副線中。
- 如請求項1之以CPU為基礎之系統,其整合至一積體電路(IC)中。
- 如請求項1之以CPU為基礎之系統,其整合至選自由以下各者組成之群組的一裝置中:一機上盒;一娛樂單元;一導航裝置;一通信裝置;一固定位置資料單元;一行動位置資料單元;一行動電話;一蜂巢式電話;一智慧型電話;一平板電腦;一平板手機;一電腦;一攜帶型電腦;一桌上型電腦;一個人數位助理(PDA);一監視器;一電腦監視器;一電視;一調諧器;一無線電;一衛星無線電;一音樂播放器;一數位音樂播放器;一攜帶型音樂播放器;一數位視訊播放器;一視訊播放器;一數位視訊光碟(DVD)播放器;一攜帶型數位視訊播放器;及一汽車。
- 一種用於提供用於記憶體讀取操作之記憶體頻寬壓縮之方法,其包含:由一經壓縮記憶體控制器(CMC)自一系統快取記憶體接收包含一記憶體位址之一記憶體讀取請求;判定該記憶體位址是否對應於一最後階層快取記憶體(LLC)之複數個LLC線中之一LLC線內的複數個副線中之一有效副線;及回應於判定該記憶體位址不對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一有效副線而進行以下操作:自一系統記憶體中之一主資料表讀取含有用於該LLC線之 一位移值及一長度值之一主資料表項目;基於該記憶體位址、該位移值及該長度值而自該系統記憶體擷取一或多個區塊;將來自該等經擷取之一或多個區塊之資料儲存於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一副線中;及將來自該等經擷取之一或多個區塊之該資料傳回至該系統快取記憶體。
- 如請求項13之方法,其中判定該記憶體位址是否對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一有效副線包含:判定該記憶體位址是否對應於該LLC之該複數個LLC線中之一現有LLC線內的該複數個副線中之一副線;及回應於判定該記憶體位址對應於該LLC之該複數個LLC線中之一現有LLC線內的該複數個副線中之一副線而判定該現有LLC線之該副線是否有效。
- 如請求項13之方法,其進一步包含回應於判定該記憶體位址對應於該LLC之該複數個LLC線中之一LLC線內的該複數個副線中之一有效副線而將來自該有效副線之資料傳回至該系統快取記憶體。
- 如請求項13之方法,其中將來自該等經擷取之一或多個區塊之該資料儲存於該LLC之該複數個LLC線中之該LLC線內的該複數個副線中之 該副線中包含:基於該長度值來判定來自該等經擷取之一或多個區塊之該資料是否被壓縮;回應於判定來自該等經擷取之一或多個區塊之該資料未被壓縮而將來自該等經擷取之一或多個區塊之該資料儲存於該LLC之該複數個LLC線中之該LLC線內的該複數個副線中之該副線中;及回應於判定來自該等經擷取之一或多個區塊之該資料被壓縮而進行以下操作:解壓縮來自該等經擷取之一或多個區塊之該資料;及將該經解壓縮資料儲存於該LLC之該複數個LLC線中之該LLC線內的該複數個副線中之該副線中。
- 如請求項13之方法,其進一步包含在將來自該等經擷取之一或多個區塊之該資料儲存於該LLC之該複數個LLC線中之該LLC線內的該複數個副線中之該副線中之前進行以下操作:選擇該複數個LLC線中之一LLC線作為一收回LLC線;將來自該收回LLC線之該複數個副線之資料儲存於該系統記憶體中;及將來自該等經擷取之一或多個區塊之該資料儲存於該收回LLC線內之該複數個副線中之一副線中。
- 如請求項13之方法,其中將來自該收回LLC線之該複數個副線之該資料儲存於該系統記憶體中包含: 讀取複數個主資料表項目,每一主資料表項目含有用於該收回LLC線之該複數個副線中之每一對應副線之一位移值及一長度值;及針對含有經修改資料的該收回LLC線之該複數個副線中之每一副線進行以下操作:壓縮來自該副線之資料;基於來自該副線之該經壓縮資料來產生用於該副線之一經更新長度值;判定用於該副線之該經更新長度值是否不同於用於該副線之該長度值;回應於判定用於該副線之該經更新長度值並非不同於用於該副線之該長度值而基於用於該副線之該位移值及該長度值將用於該副線之該經壓縮資料寫入至該系統記憶體之一或多個區塊;及回應於判定用於該副線之該經更新長度值不同於用於該副線之該長度值而進行以下操作:產生用於該副線之一經更新位移值;基於用於該副線之該經更新位移值及該經更新長度值將用於該副線之該經壓縮資料寫入至該系統記憶體之一或多個區塊;及運用該經更新位移值及該經更新長度值來更新用於該副線之該主資料表項目。
- 如請求項13之方法,其中產生用於該副線之該經更新位移值係基於一或多個分配規則,該一或多個分配規則包含防止該經壓縮資料跨越對應於多於一個副線的該系統記憶體之記憶體副線區,使該經壓縮資料在該系統記憶體之該等記憶體副線區內對準,及對用於該複數個副線之該經壓縮資料分組。
- 如請求項13之方法,其進一步包含:在讀取該主資料表中之該主資料表項目之前判定該記憶體位址是否對應於一主資料表(MT)快取記憶體之複數個MT快取記憶體項目中之一MT快取記憶體項目,每一MT快取記憶體項目經組態以儲存一經先前讀取之主資料表項目;回應於判定該記憶體位址不對應於該MT快取記憶體之該複數個MT快取記憶體項目中之一MT快取記憶體項目而進行以下操作:讀取該主資料表中之該主資料表項目;及將該主資料表項目寫入至該MT快取記憶體之該複數個MT快取記憶體項目中之一MT快取記憶體項目;及回應於判定該記憶體位址對應於該MT快取記憶體之該複數個MT快取記憶體項目中之一MT快取記憶體項目而讀取該MT快取記憶體之該複數個MT快取記憶體項目中之該MT快取記憶體項目。
- 如請求項20之方法,其進一步包含在將該主資料表項目寫入至該MT快取記憶體之該複數個MT快取記憶體項目中之該MT快取記憶體項 目之前進行以下操作:判定該MT快取記憶體之該複數個MT快取記憶體項目中之一當前MT快取記憶體項目是否應被收回;及回應於判定該當前MT快取記憶體項目應被收回而進行以下操作:判定該當前MT快取記憶體項目是否已被更新;及回應於判定該當前MT快取記憶體項目已被更新而將該當前MT快取記憶體項目之內容寫入至該主資料表。
- 如請求項13之方法,其進一步包含:讀取含有用於該LLC之該複數個LLC線中之一LLC線的該複數個副線中之一或多個剩餘副線之一或多個位移值及一或多個長度值的一或多個主資料表項目;基於該一或多個位移值及該一或多個長度值而自該系統記憶體擷取一或多個區塊;及將來自該等經擷取之一或多個區塊之該資料儲存於該LLC之該複數個LLC線中之該LLC線內的該複數個副線中之該一或多個剩餘副線中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/086,817 | 2016-03-31 | ||
US15/086,817 US10191850B2 (en) | 2016-03-31 | 2016-03-31 | Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201737095A TW201737095A (zh) | 2017-10-16 |
TWI744289B true TWI744289B (zh) | 2021-11-01 |
Family
ID=58361201
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106107193A TWI744289B (zh) | 2016-03-31 | 2017-03-06 | 使用多個最後階層快取線提供記憶體帶寬壓縮之以一中央處理單元(cpu)為基礎之系統及方法 |
Country Status (9)
Country | Link |
---|---|
US (2) | US10191850B2 (zh) |
EP (1) | EP3436955A1 (zh) |
JP (1) | JP6859361B2 (zh) |
KR (1) | KR102504728B1 (zh) |
CN (1) | CN108885585B (zh) |
AU (2) | AU2017240430A1 (zh) |
BR (1) | BR112018069720A2 (zh) |
TW (1) | TWI744289B (zh) |
WO (1) | WO2017172335A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10191850B2 (en) | 2016-03-31 | 2019-01-29 | Qualcomm Incorporated | Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system |
US10176090B2 (en) | 2016-09-15 | 2019-01-08 | Qualcomm Incorporated | Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems |
SE544272C2 (en) * | 2018-11-14 | 2022-03-22 | Zeropoint Tech Ab | Accessing compressed computer memory |
US10942851B2 (en) * | 2018-11-29 | 2021-03-09 | Intel Corporation | System, apparatus and method for dynamic automatic sub-cacheline granularity memory access control |
CN112053712B (zh) * | 2019-06-06 | 2024-05-10 | 意法半导体国际有限公司 | 具有集成偏差元件的存储器内计算阵列 |
US11630770B2 (en) * | 2019-07-11 | 2023-04-18 | Meta Platforms Technologies, Llc | Systems and methods for reading and writing sparse data in a neural network accelerator |
KR20210049602A (ko) | 2019-10-25 | 2021-05-06 | 삼성전자주식회사 | 컴퓨팅 장치 및 그 동작 방법 |
US11947835B2 (en) * | 2021-09-21 | 2024-04-02 | Black Sesame Technologies Inc. | High-performance on-chip memory controller |
US11573899B1 (en) | 2021-10-21 | 2023-02-07 | International Business Machines Corporation | Transparent interleaving of compressed cache lines |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015142341A1 (en) * | 2014-03-20 | 2015-09-24 | Hewleet-Packard Development Company, L. P. | Dynamic memory expansion by data compression |
TW201543217A (zh) * | 2014-02-28 | 2015-11-16 | Intel Corp | 在分散式快取組織上處置壓縮資料之技術 |
US20150339239A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | PROVIDING MEMORY BANDWIDTH COMPRESSION USING COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM |
US20150339237A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5376968A (en) | 1993-03-11 | 1994-12-27 | General Instrument Corporation | Adaptive compression of digital video data using different modes such as PCM and DPCM |
US6170047B1 (en) | 1994-11-16 | 2001-01-02 | Interactive Silicon, Inc. | System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities |
US6002411A (en) | 1994-11-16 | 1999-12-14 | Interactive Silicon, Inc. | Integrated video and memory controller with data processing and graphical processing capabilities |
US5696927A (en) | 1995-12-21 | 1997-12-09 | Advanced Micro Devices, Inc. | Memory paging system and method including compressed page mapping hierarchy |
US6523102B1 (en) | 2000-04-14 | 2003-02-18 | Interactive Silicon, Inc. | Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules |
US6557083B1 (en) | 2000-06-30 | 2003-04-29 | Intel Corporation | Memory system for multiple data types |
US7047382B2 (en) | 2000-11-29 | 2006-05-16 | Quickshift, Inc. | System and method for managing compression and decompression and decompression of system memory in a computer system |
US6877081B2 (en) | 2001-02-13 | 2005-04-05 | International Business Machines Corporation | System and method for managing memory compression transparent to an operating system |
US6735673B2 (en) | 2002-01-10 | 2004-05-11 | Hewlett-Packard Development Company, L.P. | Apparatus and methods for cache line compression |
US6640283B2 (en) | 2002-01-16 | 2003-10-28 | Hewlett-Packard Development Company, L.P. | Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size |
US6795897B2 (en) | 2002-05-15 | 2004-09-21 | International Business Machines Corporation | Selective memory controller access path for directory caching |
US6775751B2 (en) | 2002-08-06 | 2004-08-10 | International Business Machines Corporation | System and method for using a compressed main memory based on degree of compressibility |
US6981119B1 (en) | 2002-08-29 | 2005-12-27 | Advanced Micro Devices, Inc. | System and method for storing performance-enhancing data in memory space freed by data compression |
JP3808058B2 (ja) * | 2003-05-27 | 2006-08-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 複数のホストが圧縮データを記憶するメモリ・セクタの集合を共用できるようにするための装置 |
US7162669B2 (en) | 2003-06-10 | 2007-01-09 | Hewlett-Packard Development Company, L.P. | Apparatus and method for compressing redundancy information for embedded memories, including cache memories, of integrated circuits |
US20050071566A1 (en) | 2003-09-30 | 2005-03-31 | Ali-Reza Adl-Tabatabai | Mechanism to increase data compression in a cache |
US7636810B2 (en) | 2003-11-26 | 2009-12-22 | Intel Corporation | Method, system, and apparatus for memory compression with flexible in-memory cache |
US7162583B2 (en) | 2003-12-29 | 2007-01-09 | Intel Corporation | Mechanism to store reordered data with compression |
US7512750B2 (en) | 2003-12-31 | 2009-03-31 | Intel Corporation | Processor and memory controller capable of use in computing system that employs compressed cache lines' worth of information |
US7257693B2 (en) | 2004-01-15 | 2007-08-14 | Intel Corporation | Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system |
US7302543B2 (en) | 2004-06-16 | 2007-11-27 | Nec Laboratories America, Inc. | Compressed memory architecture for embedded systems |
JP4479530B2 (ja) | 2004-12-28 | 2010-06-09 | カシオ電子工業株式会社 | データ圧縮装置、及びデータ復元装置 |
US7636813B2 (en) | 2006-05-22 | 2009-12-22 | International Business Machines Corporation | Systems and methods for providing remote pre-fetch buffers |
US7808507B1 (en) | 2006-09-18 | 2010-10-05 | Nvidia Corporation | Compression tag state interlock |
JP4448866B2 (ja) | 2007-03-30 | 2010-04-14 | 日立ビアメカニクス株式会社 | 描画装置 |
US8037251B2 (en) | 2008-03-04 | 2011-10-11 | International Business Machines Corporation | Memory compression implementation using non-volatile memory in a multi-node server system with directly attached processor memory |
KR101717644B1 (ko) * | 2009-09-08 | 2017-03-27 | 샌디스크 테크놀로지스 엘엘씨 | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 |
US8341380B2 (en) | 2009-09-22 | 2012-12-25 | Nvidia Corporation | Efficient memory translator with variable size cache line coverage |
WO2011041269A2 (en) | 2009-09-30 | 2011-04-07 | Samplify Systems, Inc. | Enhanced multi-processor waveform data exchange using compression and decompression |
US8510518B2 (en) | 2010-06-22 | 2013-08-13 | Advanced Micro Devices, Inc. | Bandwidth adaptive memory compression |
US8539163B1 (en) | 2010-12-17 | 2013-09-17 | Amazon Technologies, Inc. | Speculative reads |
US8806108B2 (en) | 2011-06-07 | 2014-08-12 | Hitachi, Ltd. | Semiconductor storage apparatus and method of controlling semiconductor storage apparatus |
KR101888074B1 (ko) | 2012-01-09 | 2018-08-13 | 삼성전자주식회사 | 저장 장치 및 불휘발성 메모리 장치, 그리고 그것의 동작 방법 |
US8751830B2 (en) | 2012-01-23 | 2014-06-10 | International Business Machines Corporation | Memory address translation-based data encryption/compression |
US9098202B2 (en) | 2012-04-27 | 2015-08-04 | Hitachi, Ltd. | Storage apparatus and data management method |
US8830716B2 (en) | 2012-09-29 | 2014-09-09 | Intel Corporation | Intelligent far memory bandwith scaling |
US9807189B2 (en) | 2012-10-19 | 2017-10-31 | Nec Corporation | Data transfer device and data transfer system using adaptive compression algorithm |
US9495288B2 (en) * | 2013-01-22 | 2016-11-15 | Seagate Technology Llc | Variable-size flash translation layer |
US9852055B2 (en) | 2013-02-25 | 2017-12-26 | International Business Machines Corporation | Multi-level memory compression |
CN104133780B (zh) | 2013-05-02 | 2017-04-05 | 华为技术有限公司 | 一种跨页预取方法、装置及系统 |
US10838862B2 (en) | 2014-05-21 | 2020-11-17 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
US9690780B2 (en) * | 2014-05-23 | 2017-06-27 | International Business Machines Corporation | Document translation based on predictive use |
US9355038B2 (en) | 2014-09-11 | 2016-05-31 | Qualcomm Incorporated | Cache bank spreading for compression algorithms |
US9880939B2 (en) * | 2015-09-04 | 2018-01-30 | Toshiba Memory Corporation | Memory system and information processing system |
US10191850B2 (en) | 2016-03-31 | 2019-01-29 | Qualcomm Incorporated | Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system |
US10176090B2 (en) | 2016-09-15 | 2019-01-08 | Qualcomm Incorporated | Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems |
-
2016
- 2016-03-31 US US15/086,817 patent/US10191850B2/en active Active
-
2017
- 2017-03-06 TW TW106107193A patent/TWI744289B/zh active
- 2017-03-13 BR BR112018069720A patent/BR112018069720A2/pt unknown
- 2017-03-13 EP EP17712402.1A patent/EP3436955A1/en not_active Withdrawn
- 2017-03-13 JP JP2018550799A patent/JP6859361B2/ja active Active
- 2017-03-13 AU AU2017240430A patent/AU2017240430A1/en not_active Abandoned
- 2017-03-13 KR KR1020187028201A patent/KR102504728B1/ko active IP Right Grant
- 2017-03-13 WO PCT/US2017/022060 patent/WO2017172335A1/en active Application Filing
- 2017-03-13 CN CN201780018219.6A patent/CN108885585B/zh active Active
- 2017-09-28 US US15/718,449 patent/US10146693B2/en active Active
-
2022
- 2022-06-08 AU AU2022203960A patent/AU2022203960B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201543217A (zh) * | 2014-02-28 | 2015-11-16 | Intel Corp | 在分散式快取組織上處置壓縮資料之技術 |
WO2015142341A1 (en) * | 2014-03-20 | 2015-09-24 | Hewleet-Packard Development Company, L. P. | Dynamic memory expansion by data compression |
US20150339239A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | PROVIDING MEMORY BANDWIDTH COMPRESSION USING COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM |
US20150339237A1 (en) * | 2014-05-21 | 2015-11-26 | Qualcomm Incorporated | Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods |
Also Published As
Publication number | Publication date |
---|---|
KR20180129799A (ko) | 2018-12-05 |
CN108885585A (zh) | 2018-11-23 |
AU2022203960B2 (en) | 2024-03-07 |
US20170286308A1 (en) | 2017-10-05 |
BR112018069720A2 (pt) | 2019-02-05 |
US10191850B2 (en) | 2019-01-29 |
AU2022203960A1 (en) | 2022-06-23 |
WO2017172335A1 (en) | 2017-10-05 |
US20180018268A1 (en) | 2018-01-18 |
KR102504728B1 (ko) | 2023-02-27 |
US10146693B2 (en) | 2018-12-04 |
AU2017240430A1 (en) | 2018-09-06 |
JP2019513271A (ja) | 2019-05-23 |
EP3436955A1 (en) | 2019-02-06 |
TW201737095A (zh) | 2017-10-16 |
JP6859361B2 (ja) | 2021-04-14 |
CN108885585B (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI744289B (zh) | 使用多個最後階層快取線提供記憶體帶寬壓縮之以一中央處理單元(cpu)為基礎之系統及方法 | |
US10503661B2 (en) | Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system | |
TWI773683B (zh) | 使用在以一中央處理器單元為基礎的系統中之適應性壓縮提供記憶體頻寬壓縮 | |
US9823854B2 (en) | Priority-based access of compressed memory lines in memory in a processor-based system | |
US10236917B2 (en) | Providing memory bandwidth compression in chipkill-correct memory architectures | |
US20160224241A1 (en) | PROVIDING MEMORY BANDWIDTH COMPRESSION USING BACK-TO-BACK READ OPERATIONS BY COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM | |
US10191682B2 (en) | Providing efficient lossless compression for small data blocks in processor-based systems | |
US10061698B2 (en) | Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur | |
US10152261B2 (en) | Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system |