TW201814518A - 使用在以一中央處理器單元為基礎的系統中之適應性壓縮提供記憶體頻寬壓縮 - Google Patents
使用在以一中央處理器單元為基礎的系統中之適應性壓縮提供記憶體頻寬壓縮 Download PDFInfo
- Publication number
- TW201814518A TW201814518A TW106127866A TW106127866A TW201814518A TW 201814518 A TW201814518 A TW 201814518A TW 106127866 A TW106127866 A TW 106127866A TW 106127866 A TW106127866 A TW 106127866A TW 201814518 A TW201814518 A TW 201814518A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- compression
- lines
- compressed data
- cmc
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/38—Flow control; Congestion control by adapting coding or compression rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本發明揭示使用在以中央處理單元(CPU)為基礎之系統中的適應性壓縮提供記憶體頻寬壓縮。在一個態樣中,一經壓縮記憶體控制器(CMC)經組態以實施兩個壓縮機制:一第一壓縮機制,其用於壓縮相對較小量之資料(例如,一單一記憶體線);及一第二壓縮機制,其用於壓縮大量資料(例如,多個相關聯之記憶體線)。當使用包括多個相關聯之記憶體線的寫入資料執行一記憶體寫入操作時,該CMC使用該第一壓縮機制單獨地壓縮該等記憶體線中之每一者,以及使用該第二壓縮機制一起壓縮該等記憶體線。若第二壓縮之結果小於第一壓縮之結果,則該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存取之其他共用資源可包括記憶體控制器114,該記憶體控制器用於存取主外部記憶體(例如,雙速率動態隨機存取記憶體(DRAM) (DDR),作為非限制性實例)、周邊裝置116、其他儲存器118、快速周邊組件互連(PCI) (PCI-e)介面120及/或直接記憶體存取(DMA)控制器122。 隨著在圖1中之以CPU為基礎之系統102中執行的以CPU為基礎之應用程式的複雜度及效能增加,對記憶體頻寬之限制可對以CPU為基礎之系統102強加約束。若對外部記憶體之存取達到記憶體頻寬限制,則以CPU為基礎之系統102之記憶體控制器114可被強制將記憶體存取請求排入佇列。記憶體存取請求之此排入佇列可增加記憶體存取之潛時,此又可降低以CPU為基礎之系統102之效能。 可藉由使用記憶體頻寬壓縮方案潛在地減少由給定記憶體存取所消耗之頻寬來實現記憶體頻寬節省。習知記憶體頻寬壓縮方案係有關於壓縮對應於以CPU為基礎之系統102之記憶體線(memory line)大小的量。雖然增加以CPU為基礎之系統102之記憶體線大小在一些情況下可產生較高資料壓縮比,但記憶體線大小之增加亦可引起浪費記憶體頻寬之增加。因此,需要提供一種實現較高壓縮比同時亦減少記憶體頻寬消耗之記憶體頻寬壓縮方案。
本文中所揭示之態樣包括使用在以中央處理單元(CPU)為基礎之系統中的適應性壓縮提供記憶體頻寬壓縮。在一個態樣中,藉由一以中央處理單元(CPU)為基礎之系統提供一記憶體頻寬壓縮系統。該記憶體頻寬壓縮系統包括經組態以協作從而提供一適應性壓縮方案之一經壓縮記憶體控制器(CMC)及一系統快取記憶體。使用該適應性壓縮方案,該以CPU為基礎之系統的一系統記憶體經組織成相關聯之記憶體線(例如,在一些情況下,鄰近記憶體線對)之群組。該CMC經組態以實施兩(2)個壓縮機制:一第一壓縮機制,其適合於壓縮相對較小量之資料(例如,一單一記憶體線);及一第二壓縮機制,其適合於壓縮相對較大量之資料(例如,相關聯之記憶體線之一群組)。當使用由該系統快取記憶體發送之寫入資料來執行一記憶體寫入操作時,該CMC可判定該寫入資料包括一單一記憶體線抑或複數個相關聯之記憶體線。在後一狀況下,該CMC藉由以下操作來執行適應性壓縮:使用該第一壓縮機制單獨地壓縮該複數個相關聯之記憶體線中之每一者以產生一第一壓縮結果;以及使用該第二壓縮機制一起壓縮該複數個記憶體線以產生一第二壓縮結果。若該第二壓縮結果之一大小小於該第一壓縮結果之一大小,則該CMC將該第二壓縮結果儲存於該系統記憶體中。否則,將該第一壓縮結果儲存於該系統記憶體中。在一些態樣中,該CMC使用儲存於該系統記憶體中之一主表來追蹤經壓縮資料如何儲存於該系統記憶體中(例如,作為非限制性實例,每一記憶體線之一經壓縮長度、用於每一記憶體線之一壓縮類型及一經壓縮資料區域內之哪些記憶體區組被該記憶體線佔用的一指示)。在一些態樣中,該系統快取記憶體經組態以提供一預提取準確度指示符,該預提取準確度指示符可經提供至該CMC且由其使用以判定自該系統記憶體讀取一單一記憶體線抑或多個記憶體線之經壓縮資料。 在另一態樣中,提供一以CPU為基礎之系統的一記憶體頻寬壓縮系統。該記憶體頻寬壓縮系統包括一CMC,該CMC經組態以存取一系統記憶體且經由一系統匯流排以通信方式耦接至一系統快取記憶體。該CMC經進一步組態以自該系統快取記憶體接收包含一記憶體寫入位址及寫入資料之一記憶體寫入請求。該CMC亦經組態以使用一第一壓縮機制單獨地壓縮該寫入資料之複數個相關聯之記憶體線中的每一記憶體線以產生一第一壓縮結果。該CMC經進一步組態以使用一第二壓縮機制一起壓縮該複數個相關聯之記憶體線以產生一第二壓縮結果。該CMC亦經組態以判定該第二壓縮結果之一大小是否小於該第一壓縮結果之一大小。該CMC另外經組態以回應於判定該第二壓縮結果之一大小小於該第一壓縮結果之一大小,將該第二壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之一經壓縮資料區域。該CMC經進一步組態以回應於判定該第二壓縮結果之一大小不小於該第一壓縮結果之一大小,將該第一壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域。 在另一態樣中,提供一以CPU為基礎之系統的一記憶體頻寬壓縮系統。該記憶體頻寬壓縮系統包括用於接收包含一記憶體寫入位址及寫入資料之一記憶體寫入請求的一構件。該記憶體頻寬壓縮系統亦包括用於使用一第一壓縮機制單獨地壓縮該寫入資料之複數個相關聯之記憶體線中的每一記憶體線以產生一第一壓縮結果的一構件。該記憶體頻寬壓縮系統另外包括用於使用一第二壓縮機制一起壓縮該複數個相關聯之記憶體線以產生一第二壓縮結果的一構件。該記憶體頻寬壓縮系統進一步包括用於判定該第二壓縮結果之一大小是否小於該第一壓縮結果之一大小的一構件。該記憶體頻寬壓縮系統亦包括用於回應於判定該第二壓縮結果之一大小小於該第一壓縮結果之一大小,將該第二壓縮結果寫入至一系統記憶體中對應於該記憶體寫入位址之一經壓縮資料區域的一構件。該記憶體頻寬壓縮系統另外包括用於回應於判定該第二壓縮結果之一大小不小於該第一壓縮結果之一大小,將該第一壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域的一構件。 在另一態樣中,提供一種用於提供適應性記憶體頻寬壓縮之方法。該方法包括藉由一CMC自一系統快取記憶體接收包含一記憶體寫入位址及寫入資料之一記憶體寫入請求。該方法亦包括使用一第一壓縮機制單獨地壓縮該寫入資料之複數個相關聯之記憶體線中的每一記憶體線以產生一第一壓縮結果。該方法另外包括使用一第二壓縮機制一起壓縮該複數個相關聯之記憶體線以產生一第二壓縮結果。該方法進一步包括判定該第二壓縮結果之一大小是否小於該第一壓縮結果之一大小。該方法亦包括回應於判定該第二壓縮結果之一大小小於該第一壓縮結果之一大小,將該第二壓縮結果寫入至一系統記憶體中對應於該記憶體寫入位址之一經壓縮資料區域。該方法另外包括回應於判定該第二壓縮結果之一大小不小於該第一壓縮結果之一大小,將該第一壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域。
現參看圖式,描述本發明之若干例示性態樣。詞「例示性」在本文中用以意謂「充當實例、例項或說明。」本文中被描述為「例示性」之任何態樣未必被解釋為比其他態樣較佳或較有利。 本文中所揭示之態樣包括使用在以中央處理單元(CPU)為基礎之系統中的適應性壓縮提供記憶體頻寬壓縮。在一些態樣中,經壓縮記憶體控制器(CMC)經組態以藉由解壓縮記憶體讀取請求及/或壓縮記憶體寫入請求來提供適應性記憶體頻寬壓縮。如本文中所使用,「適應性壓縮」係指單獨地使用第一壓縮機制抑或一起使用第二壓縮機制來壓縮及解壓縮多個記憶體線,單獨地使用第一壓縮機制抑或一起使用第二壓縮機制係取決於哪一方法提供較大壓縮比及/或取決於預提取相關聯之記憶體線的經判定效果。 就此而言,圖2為系統單晶片(SoC) 200之示意圖,該系統單晶片包括類似於圖1中之以CPU為基礎之系統102的具有複數個CPU區塊104(0)至104(N)之以CPU為基礎之系統202。圖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而共用。具有對應於圖1之系統快取記憶體110之功能性的系統快取記憶體210經組態以與CMC 204協調以提供適應性記憶體頻寬壓縮,如下文關於圖4及圖5更詳細地描述。應理解,如本文中所使用之「適應性記憶體頻寬壓縮」通常係指由CMC 204及系統快取記憶體210進行以用於壓縮待寫入至系統記憶體206之資料以及解壓縮自系統記憶體206讀取之資料兩者的操作。 為說明圖2中之CMC 204之例示性內部組件的較詳細示意圖,提供圖3。在圖3之實例中,在來自含有圖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進行之記憶體存取的操作,該系統記憶體在圖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之記憶體存取以用於壓縮 如上文所提到,圖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(D)。在此實例中,經壓縮資料區域402(0)至402(D)中之每一者包括一對鄰近記憶體線,諸如經壓縮資料區域402(0)之記憶體線404(0)及404(1)。儘管圖4中未展示,但應理解,經壓縮資料區域402(D)亦包括一對鄰近記憶體線。應進一步理解,雖然圖4說明經壓縮資料區域402(0)內之兩個記憶體線404(0)、404(1),但經壓縮資料區域402(0)至402(D)中之每一者可包括比本文中所展示多的記憶體線。 記憶體線404(0)、404(1)中之每一者分別由記憶體區組406(0)、406(1)與406(2)、406(3)組成。記憶體區組406(0)至406(3)中之每一者的大小表示系統記憶體206之記憶體讀取/寫入粒度(亦即,可在記憶體讀取操作中自系統記憶體206讀取或在記憶體寫入操作中寫入至系統記憶體206之資料的最小量)。舉例而言,在記憶體線404(0)、404(1)中之每一者之大小為128個位元組的一些例示性記憶體架構中,記憶體區組406(0)至406(3)中之每一者可提供64個位元組之資料。對應於與記憶體線404(0)、404(1)相關聯之記憶體位址的經壓縮資料可儲存於經壓縮資料區域402(0)之記憶體區組406(0)至406(3)內。一些態樣可規定:記憶體區組406(0)至406(3)中之每一者可包含更多或更少位元組之資料(例如,作為非限制性實例,256個位元組或64個位元組)。在一些態樣中,記憶體讀取操作可讀取比記憶體區組406(0)至406(3)之大小少的位元組,但仍消耗與記憶體區組406(0)至406(3)中之一者相同的記憶體頻寬量。 記憶體頻寬壓縮機制400進一步提供經組態以快取複數個記憶體線408(0)至408(X)之系統快取記憶體210,該複數個記憶體線中之每一者與系統記憶體206之記憶體線404(0)、404(1)具有相同大小。如下文更詳細地論述,系統快取記憶體210經組態以與CMC 204協調以提供適應性壓縮。特定而言,在一些態樣中,系統快取記憶體210經組態以自CMC 204接收一或多個記憶體線408(0)至408(X)之資料作為單一請求,且可經組態以在儲存及/或收回記憶體線408(0)、408(1)時使鄰近記憶體線(諸如,記憶體線408(0)、408(1))相關聯。舉例而言,系統快取記憶體210可經組態以儲存同一集合內之相關聯之記憶體線408(0)、408(1),且可優先一起收回相關聯之記憶體線408(0)、408(1)中之兩者,即使一者並不含有已變更資料亦如此。系統快取記憶體210亦可經組態以收回相關聯之記憶體線408(0)、408(1)中之一選定者,但寫回另一相關聯之記憶體線408(0)、408(1)。系統快取記憶體210亦可經組態以自CMC 204接受多個記憶體線(例如,「預提取」記憶體線)。 另外,系統快取記憶體210之一些態樣可經組態以維持關於預提取準確度之資料,且將此資料提供至CMC 204。舉例而言,系統快取記憶體210可針對記憶體線408(0)至408(X)中之每一者維持位元或其他指示符(未圖示),位元或其他指示符指示記憶體線408(0)至408(X)是否經預提取(亦即,並非特定地向CMC 204請求,但連同所請求記憶體線408(0)至408(X)自CMC 204接收)。系統快取記憶體210亦可連同來自CMC 204之全部經預提取記憶體線408(0)至408(X)之計數維持自CMC 204接收之隨後經存取(亦即,讀取或寫入)的經預提取記憶體線408(0)至408(X)之計數。基於此資料,系統快取記憶體210之一些態樣可將預提取準確度指示符410產生為隨後經存取之所接收經預提取線之計數與所接收之全部經預提取線之計數的比率,且可將預提取準確度指示符410提供至CMC 204。在一些態樣中,預提取準確度指示器410可包括二進位值,該二進位值指示隨後經存取之所接收經預提取線之計數與所接收之全部經預提取線之計數的比率是否超過指定臨限值。CMC 204可在判定多少經壓縮資料待在記憶體讀取操作期間自系統記憶體206讀取時使用預提取準確度指示符410。 系統記憶體206亦包括主表412,該主表包括多個主表條目414(0)至414(Z)。主表條目414(0)至414(Z)儲存壓縮指示符(CI) 416(0)至416(D),該等壓縮指示符中之每一者提供關於系統記憶體206之對應經壓縮資料區域402(0)至402(D)之壓縮狀態的資訊。作為非限制性實例,CI 416(0)至416(D)中之每一者可編碼對應經壓縮資料區域402(0)至402(D)之經壓縮長度、壓縮類型及/或經佔用記憶體區組指示符。在一些態樣中,CI 416(0)至416(D)具有六(6)個至八(8)個位元之大小,其中每一可能位元組合表示經壓縮長度、壓縮類型及經佔用記憶體區組406(0)至406(3)之一個可能組合。在一些態樣中,CMC 204可進一步包括用於快取先前自主表412讀取之CI 422(0)至422(V)的提供複數個CI快取記憶體條目420(0)至420(C)的CI快取記憶體418。使用CI快取記憶體418,CMC 204可減少可藉由讀取系統記憶體206中之主表412而引發的記憶體存取潛時。 為提供適應性記憶體頻寬壓縮,CMC 204可自系統快取記憶體210接收對記憶體寫入操作之請求(諸如,將寫入資料426儲存至記憶體寫入位址428之記憶體寫入請求424)及對記憶體讀取操作之請求(諸如,自記憶體讀取位址432讀取之記憶體讀取請求430)。CMC 204經組態以提供第一壓縮機制434及第二壓縮機制436以用於執行資料壓縮。在一些態樣中,第一壓縮機制434可包括適合於壓縮相對較小量之資料(例如,單一128位元組記憶體線408(0)至408(X))的壓縮演算法,而第二壓縮機制436可包括適合於壓縮相對較大量之資料(諸如,由一對相關聯之記憶體線408(0)、408(1)提供之256個位元組之資料)的壓縮演算法。 當執行記憶體寫入操作(例如,回應於一或多個記憶體線408(0)至408(X)之收回時,CMC 204可首先判定自系統快取記憶體210接收之寫入資料426是否僅包括單一記憶體線(例如,記憶體線408(0))或寫入資料426是否包括複數個相關聯之記憶體線(諸如,該對記憶體線408(0)、408(1))。根據一些態樣,此判定可基於多少記憶體線408(0)至408(X)藉由系統快取記憶體210寫回至系統記憶體206而進行。一些態樣可規定:系統快取記憶體210可針對寫入資料426中之記憶體線408(0)至408(X)中之每一者提供已變更位元或其他指示符(未圖示)。在此等態樣中,即使寫入資料426包括多個記憶體線408(0)至408(X),CMC 204仍可基於用於記憶體線408(0)至408(X)之已變更位元而判定僅單一記憶體線408(0)至408(X)應寫入至系統記憶體206。 在寫入資料426包括單一記憶體線408(0)之狀況下,CMC 204使用第一壓縮機制434壓縮寫入資料426以產生第一壓縮結果438。接著將第一壓縮結果438寫入至對應於記憶體寫入位址428之經壓縮資料區域(諸如,經壓縮資料區域402(0))。 然而,若寫入資料426包括複數個相關聯之記憶體線408(0)、408(1),則CMC 204使用第一壓縮機制434單獨地壓縮相關聯之記憶體線408(0)、408(1)中之每一者以產生第一壓縮結果438。CMC 204亦使用第二壓縮機制436一起壓縮相關聯之記憶體線408(0)、408(1)以產生第二壓縮結果440。在一些態樣中,CMC 204可並行地執行壓縮之兩個集合。CMC 204接著藉由比較第二壓縮結果440之大小與第一壓縮結果438之大小來判定哪一壓縮方法達成較好壓縮比。若第二壓縮結果440之大小較小,則CMC 204將第二壓縮結果440寫入至經壓縮資料區域402(0)。否則,藉由CMC 204將第一壓縮結果438寫入至經壓縮資料區域402(0)。 在將經壓縮資料寫入至系統記憶體206之後,CMC 204亦可針對與記憶體寫入位址428對應之經壓縮資料區域402(0)而用經更新CI (諸如,CI 416(0)或CI 422(0))更新主表412及/或CI快取記憶體418。作為非限制性實例,CI 416(0)、422(0)可包括儲存於經壓縮資料區域402(0)中之經壓縮資料之長度、儲存於經壓縮資料區域402(0)中之資料之壓縮類型(例如,第一壓縮機制434或第二壓縮機制436),及/或指示記憶體區組406(0)至406(3)中之哪一者用以將經壓縮資料儲存於經壓縮資料區域402(0)內之經佔用記憶體區組指示符。在一些態樣中,CMC 204可將資料寫入至經壓縮資料區域402(0)之一或多個未佔用記憶體區組406(0)至406(3),及/或可寫入至先前用以儲存用於記憶體寫入位址428之資料的一或多個記憶體區組406(0)至406(3)。以此方式,CMC 204可避免需要執行讀取-修改-寫入(RMW)操作來更新記憶體區組406(0)至406(3)。下文關於圖5更詳細地論述經壓縮資料區域402(0)內之記憶體區組406(0)至406(3)用於儲存及更新經壓縮資料的例示性使用。 在一些態樣中,CMC 204亦可自系統快取記憶體210接收記憶體讀取請求430 (例如,作為系統快取記憶體210上之快取未命中的結果)。記憶體讀取請求430可包括記憶體讀取位址432,待自該記憶體讀取位址讀取資料。在一些態樣中,記憶體讀取請求430亦可包括由系統快取記憶體210提供以指示歷史上如何已成功地預提取記憶體線408(0)至408(X)之預提取準確度指示符410。CMC 204可判定待自系統記憶體206讀取之記憶體線408(0)至408(X)之數目。一些態樣可規定:CMC 204可基於預提取準確度指示符410而判定待讀取之記憶體線408(0)至408(X)之數目。舉例而言,若預提取準確度指示符410低於指定臨限值,則CMC 204可選擇不使用額外記憶體頻寬用於預提取,且因此可自系統記憶體206讀取僅單一記憶體線408(0)至408(X)之資料。 基於待讀取之記憶體線408(0)至408(X)之經判定數目連同來自主表412之主表條目414(0)之CI (諸如,CI 416(0)),CMC 204可自系統記憶體206之經壓縮資料區域402(0)讀取一或多個記憶體線408(0)至408(X)之經壓縮資料。CMC 204可接著解壓縮經壓縮資料,且可將一或多個記憶體線408(0)至408(X)傳回至系統快取記憶體210。在CI快取記憶體418處於使用中之態樣中,CMC 204可在存取主表412之前查詢CI快取記憶體418。若CMC 204判定CI快取記憶體418之CI快取記憶體條目420(0)至420(C)對應於記憶體讀取位址432,則CMC 204可自CI快取記憶體418讀取CI (諸如,CI 422(0)),因此藉由避免對主表412之不必要讀取來節約記憶體頻寬。 根據一些態樣,CMC 204亦可基於記憶體匯流排利用率及/或記憶體控制器佇列佔用率(作為非限制性實例)而判定多少記憶體線408(0)至408(X)待讀取。舉例而言,若記憶體匯流排被訊務擁塞,則CMC 204可減少對額外資料之提取。CMC 204可進一步考量儲存於經壓縮資料區域402(0)中之經壓縮資料之大小,且可僅在經壓縮資料之大小小於或等於指定臨限值之情況下才選擇預提取資料。一旦記憶體線408(0)至408(X)之數目經判定,CMC 204便可藉由提供是否將傳回大於一個記憶體線408(0)至408(X)之指示(「IND」) 442來通知系統快取記憶體210將傳回多少記憶體線408(0)至408(X)。在一些態樣中,指示442可作為回應於記憶體讀取請求430而發送至系統快取記憶體210之讀取應答訊息(「READ ACK」) 444之部分而提供。 如上文所提到,在經壓縮資料如何儲存於經壓縮資料區域402(0)之記憶體區組(諸如,記憶體區組406(0)至406(3))內方面,CMC 204可為靈活的。為說明經壓縮資料區域402(0)內之記憶體區組406(0)至406(3)用於儲存及更新經壓縮資料的例示性使用,提供圖5。在圖5中,記憶體區組406(0)至406(3)之內容係說明為一系列記憶體寫入操作及記憶體讀取操作。出於此實例之目的,假設記憶體區組406(0)至406(3)中之每一者的大小為64個位元組。由箭頭500指示之第一記憶體寫入操作將來自藉由「A」及「B」表示之兩個相關聯之128位元組記憶體線(例如,圖4之記憶體線408(0)、408(1))的資料寫入至經壓縮資料區域402(0)之記憶體區組406(0)至406(3)中。在此實例中,A及B之256個位元組藉由CMC 204一起壓縮成192個資料位元組。A所獨有之經壓縮資料儲存於記憶體區組406(0)中,而B所獨有之經壓縮資料儲存於記憶體區組406(2)中。由壓縮演算法產生且識別及編碼在未經壓縮資料中頻繁出現之圖案的用於A及B兩者之複數個共同壓縮圖案儲存於位於中心之記憶體區組406(1)中,而記憶體區組406(3)未使用。因為用於A及B之壓縮圖案儲存於位於中心之記憶體區組406(1)中,所以對A之任何後續記憶體讀取操作僅需要讀取及解壓縮記憶體區組406(0)及406(1)之內容,如由箭頭502所指示。同樣地,對B之稍後記憶體讀取操作僅需要讀取記憶體區組406(1)及406(2)之內容。應注意,在一些態樣中,若A所獨有之經壓縮資料及B所獨有之經壓縮資料中的任一者或兩者太大而無法分別適配於記憶體區組406(0)及/或記憶體區組406(2)內,則A所獨有之經壓縮資料及B所獨有之經壓縮資料可溢位至記憶體區組406(1)中。 在圖5中之箭頭504處繼續,針對A寫入新資料。新資料不可壓縮,且因此需要128個位元組之儲存空間。在一些態樣中,CMC 204經組態以回收記憶體區組406(0)以儲存64個位元組之未經壓縮資料(「A0
」),其中剩餘的64個位元組資料(「A1
」)儲存於先前未使用之記憶體區組406(3)中。記憶體區組406(1)及406(2)不受干擾,使B之經壓縮資料無損且可由CMC 204存取。在箭頭506處,針對A寫入額外新資料。雖然此額外新資料亦不可壓縮,但A的前64個位元組資料不變。因此,CMC 204可經組態以僅覆寫儲存有經修改資料(「A0
'」)之記憶體區組406(0)。在新資料之每一例項寫入至A之後,主表412中對應於A之CI 416(0)至416(D) (及在一些態樣中,CI快取記憶體418中對應於A之CI 422(0)至422(V))經更新以反映A之經壓縮資料之壓縮狀態及儲存位置。記憶體區組406(1)及406(2)中之B的經壓縮資料保持不變。 最後,在箭頭508處,針對B寫入新資料。在此實例中,B之128個位元組之新資料藉由CMC 204壓縮成64個位元組之經壓縮資料。CMC 204因此將B之新資料(經壓縮資料及對應壓縮圖案資料兩者)儲存於記憶體區組406(1)中。不再需要記憶體區組406(2)來儲存B之資料,且將該記憶體區組標記為未由CMC 204使用。記憶體區組406(0)及406(3)中之A之先前所儲存資料保持無損且可由CMC 204存取。 為說明由圖2至圖4之CMC 204及系統快取記憶體210使用適應性記憶體頻寬壓縮來執行記憶體寫入操作之例示性操作,提供圖6A及圖6B。在描述圖6A及圖6B時,為清楚起見而參考圖1至圖5之元件。在圖6A中,操作以CMC 204自系統快取記憶體210接收包括記憶體寫入位址428及寫入資料426之記憶體寫入請求424開始(區塊600)。因此,CMC 204可在本文中被稱作「用於接收包含記憶體寫入位址及寫入資料之記憶體寫入請求的構件。」在一些態樣中,CMC 204接下來判定寫入資料426包括單一經快取記憶體線408(0)抑或複數個相關聯之經快取記憶體線408(0)、408(1) (區塊602)。若CMC 204在決策區塊602處判定寫入資料426包括單一經快取記憶體線408(0),則處理在圖6B之區塊604處重新繼續。 然而,若在決策區塊602處判定寫入資料426包括複數個相關聯之經快取記憶體線408(0)、408(1),則CMC 204藉由首先使用第一壓縮機制434單獨地壓縮複數個相關聯之經快取記憶體線408(0)、408(1)中之每一經快取記憶體線以產生第一壓縮結果438來執行適應性記憶體頻寬壓縮(區塊606)。CMC 204因此可在本文中被稱作「用於使用第一壓縮機制單獨地壓縮寫入資料之複數個相關聯之記憶體線中的每一記憶體線以產生第一壓縮結果的構件。」作為非限制性實例,第一壓縮機制434可包括將最佳用於相對較小之資料大小的壓縮演算法應用於相關聯之經快取記憶體線408(0)、408(1)中之每一者。CMC 204亦使用第二壓縮機制436一起壓縮複數個相關聯之經快取記憶體線408(0)、408(1)以產生第二壓縮結果440 (區塊608)。因此,CMC 204可在本文中被稱作「用於使用第二壓縮機制一起壓縮複數個相關聯之記憶體線以產生第二壓縮結果的構件。」在一些態樣中,第二壓縮機制436可包括將較好地適合於壓縮相對較大之資料大小的壓縮演算法應用於相關聯之經快取記憶體線408(0)、408(1)。一些態樣可規定:CMC 204經組態以與產生第一壓縮結果438並行地產生第二壓縮結果440。 CMC 204接著判定第二壓縮結果440之大小是否小於第一壓縮結果438之大小(區塊610)。就此而言,CMC 204可在本文中被稱作「用於判定第二壓縮結果之大小是否小於第一壓縮結果之大小的構件。」若不小於(亦即,若一起壓縮相關聯之經快取記憶體線408(0)、408(1)相比單獨地壓縮相關聯之經快取記憶體線408(0)、408(1)並不產生較小經壓縮大小),則處理在圖6B之區塊612處重新繼續。若CMC 204在決策區塊610處判定第二壓縮結果440之大小小於第一壓縮結果438之大小,則CMC 204將第二壓縮結果440寫入至系統記憶體206中對應於記憶體寫入位址428之經壓縮資料區域402(0) (區塊614)。CMC 204因此可在本文中被稱作「回應於判定第二壓縮結果之大小小於第一壓縮結果之大小,將第二壓縮結果寫入至系統記憶體中對應於記憶體寫入位址之經壓縮資料區域的構件。」處理接著在圖6B之區塊616處重新繼續。 現參看圖6B,若CMC 204在圖6A之決策區塊602處判定寫入資料426包括單一經快取記憶體線408(0)而非複數個相關聯之經快取記憶體線408(0)、408(1),則CMC 204使用第一壓縮機制434壓縮單一經快取記憶體線408(0)以產生第一壓縮結果438 (區塊604)。CMC 204接著將第一壓縮結果438寫入至系統記憶體206中對應於記憶體寫入位址428之經壓縮資料區域402(0) (區塊612)。在一些態樣中,用於將第一壓縮結果438寫入至經壓縮資料區域402(0)之區塊612的操作可包括CMC 204基於用於經壓縮資料區域402(0)之主表條目414(0)而將第一壓縮結果438寫入至經壓縮資料區域402(0)之未佔用記憶體區組406(0)至406(3)中之一或多者或經壓縮資料區域402(0)中先前儲存用於記憶體寫入位址428之資料的一或多個記憶體區組406(0)至406(3) (區塊618)。一些態樣亦可規定:CMC 204接著針對系統記憶體206中對應於記憶體寫入位址428之經壓縮資料區域402(0)而將經壓縮長度、壓縮類型及經佔用記憶體區組指示符儲存於系統記憶體206中之主表412的複數個主表條目414(0)至414(Z)中之主表條目414(0)中(區塊616)。 圖7A及圖7B說明由圖2至圖4之CMC 204及系統快取記憶體210使用適應性記憶體頻寬壓縮來執行記憶體讀取操作之例示性操作。在描述圖7A及圖7B時,為清楚起見而參考圖2至圖4之元件。在圖7A中,操作以CMC 204自系統快取記憶體210接收包含記憶體讀取位址432之記憶體讀取請求430開始(區塊700)。CMC 204回應於記憶體讀取請求430而判定待自系統記憶體206讀取之記憶體線408(0)至408(X)之數目(區塊702)。作為非限制性實例,CMC 204可基於記憶體匯流排利用率及/或基於儲存於系統記憶體206中對應於記憶體讀取位址432之經壓縮資料區域402(0)中的經壓縮資料之大小而作出關於待自系統記憶體206讀取多少記憶體線408(0)至408(X)的判定。一些態樣可規定:CMC 204可基於作為記憶體讀取請求430之部分由系統快取記憶體210提供的預提取準確度指示符410而判定待自系統記憶體206讀取多少記憶體線408(0)至408(X)。 在CI快取記憶體418處於使用中之態樣中,CMC 204可接下來判定CI快取記憶體418之複數個CI快取記憶體條目420(0)至420(C)中之CI快取記憶體條目420(0)是否對應於記憶體讀取位址432 (區塊704)。若對應,則CMC 204基於待讀取之記憶體線408(0)至408(X)之經判定數目及CI快取記憶體條目420(0)而自系統記憶體206中對應於記憶體讀取位址432之經壓縮資料區域402(0)讀取一或多個記憶體線408(0)至408(X)之經壓縮資料(區塊706)。處理接著在圖7B之區塊708處重新繼續。若CI快取記憶體418並不在使用中,或若CMC 204在決策區塊704處判定CI快取記憶體418之複數個CI快取記憶體條目420(0)至420(C)中無一者對應於記憶體讀取位址432,則CMC 204基於待讀取之記憶體線408(0)至408(X)之經判定數目及主表412中對應於經壓縮資料區域402(0)之主表條目414(0)而自系統記憶體206中對應於記憶體讀取位址432之經壓縮資料區域402(0)讀取一或多個記憶體線408(0)至408(X)之經壓縮資料(區塊710)。處理在圖7B之區塊708處重新繼續。 現參看圖7B,CMC 204接下來解壓縮一或多個記憶體線408(0)至408(X)之經壓縮資料(區塊708)。在一些態樣中,CMC 204可將是否將傳回大於一個記憶體線408(0)至408(X)之指示442提供至系統快取記憶體210 (區塊712)。在一些態樣中,作為非限制性實例,可將此指示442作為讀取應答訊息444之部分而提供至系統快取記憶體210 (區塊714)。在一些態樣中,用於解壓縮一或多個記憶體線408(0)至408(X)之經壓縮資料的區塊708之操作可取決於以下各者而變化:多少記憶體線408(0)至408(X)經讀取、多少記憶體區組406(0)至406(3)儲存經壓縮資料及/或第一壓縮機制434抑或第二壓縮機制436用以壓縮經壓縮資料。作為非限制性實例,一或多個記憶體線408(0)至408(X)可已使用第二壓縮機制436一起經壓縮至記憶體區組406(0)至406(3)中之兩個(2)或四個(4)中,可已使用第一壓縮機制434一起經壓縮至記憶體區組406(0)至406(3)中之兩個(2)中,或可已使用第一壓縮機制434或第二壓縮機制436單獨地經壓縮。CMC 204因此可使用主表條目414(0) (或CI快取記憶體條目420(0))判定待使用之適當解壓縮機制且判定待解壓縮多少經壓縮資料。因為經壓縮資料可位於經壓縮資料區域402(0)內之任何位置處,所以CMC 204亦可使用主表條目414(0) (或CI快取記憶體條目420(0))判定供讀取經壓縮資料所自的記憶體區組406(0)至406(3)。CMC 204接著將一或多個記憶體線408(0)至408(X)傳回至系統快取記憶體210 (區塊716)。根據一些態樣,系統快取記憶體210經組態以回應於指示442而接收複數個記憶體線408(0)至408(X) (區塊718)。 根據本文中所揭示之態樣的使用在以CPU為基礎之系統中的適應性壓縮提供記憶體頻寬壓縮可提供於任何以處理器為基礎之裝置中或整合至該裝置中。實例包括但不限於機上盒、娛樂單元、導航裝置、通信裝置、固定位置資料單元、行動位置資料單元、全球定位系統(GPS)裝置、行動電話、蜂巢式電話、智慧型手機、會話起始協定(SIP)電話、平板電腦、平板手機、伺服器、電腦、攜帶型電腦、行動計算裝置、可穿戴式計算裝置(例如,智慧型手錶、保健或健康跟蹤器、護目鏡等)、桌上型電腦、個人數位助理(PDA)、監視器、電腦監視器、電視、調諧器、無線電、衛星無線電、音樂播放器、數位音樂播放器、攜帶型音樂播放器、數位視訊播放器、視訊播放器、數位影音光碟(DVD)播放器、攜帶型數位視訊播放器、汽車、車輛組件、航空電子系統、無人飛機及多旋翼飛行器。 就此而言,圖8說明可使用具有圖2之CMC 204之SoC 200的以處理器為基礎之系統800之實例。在此實例中,以處理器為基礎之系統800包括一或多個CPU 802,其各自包括一或多個處理器804。CPU 802可具有耦接至處理器804以用於快速存取臨時儲存之資料的快取記憶體806。CPU 802耦接至系統匯流排808且可將包括於以處理器為基礎之系統800中的裝置相互耦接。如所熟知的,CPU 802藉由在系統匯流排808上交換位址、控制及資料資訊而與此等其他裝置通信。舉例而言,CPU 802可將匯流排異動請求傳達至作為從屬裝置之實例的CMC 204。儘管圖8中未說明,但可提供多個系統匯流排808。 其他裝置可連接至系統匯流排808。作為實例,如圖8中所說明,此等裝置可包括一記憶體系統810、一或多個輸入裝置812、一或多個輸出裝置814、一或多個網路介面裝置816及一或多個顯示控制器818。輸入裝置812可包括任何類型之輸入裝置,包括但不限於輸入按鍵、開關、語音處理器等。輸出裝置814可包括任何類型之輸出裝置,包括但不限於音訊、視訊、其他視覺指示器等。網路介面裝置816可為經組態以允許至網路820及來自網路820之資料交換的任何裝置。網路820可為任何類型之網路,包括但不限於有線或無線網路、私用或公用網路、區域網路(LAN)、廣域網路、無線區域網路、藍芽(BT)及網際網路。網路介面裝置816可經組態以支援任何類型之所要通信協定。記憶體系統810可包括一或多個記憶體單元822(0)至822(N)。 CPU 802亦可經組態以經由系統匯流排808存取顯示控制器818,從而控制發送至一或多個顯示器824之資訊。顯示控制器818經由一或多個視訊處理器826將資訊發送至顯示器824以供顯示,該一或多個視訊處理器將待顯示之資訊處理成適合於顯示器824之格式。顯示器824可包括任何類型之顯示器,包括但不限於陰極射線管(CRT)、液晶顯示器(LCD)、發光二極體(LED)顯示器、電漿顯示器等。 作為實例,可在任何電路、硬體組件、積體電路(IC)或IC晶片中使用本文中所描述之裝置。本文中所揭示之記憶體可為任何類型及大小之記憶體,且可經組態以儲存所需的任何類型之資訊。為清楚地說明此可互換性,上文已大體上關於功能性描述了各種說明性組件、區塊、模組、電路及步驟。如何實施此功能性取決於特定應用、設計選項及/或強加於整個系統上之設計約束。熟習此項技術者可針對每一特定應用而以變化之方式實施所描述之功能性,但不應將此等實施決策解譯為致使背離本發明之範疇。 結合本文中所揭示之態樣描述的各種說明性邏輯區塊、模組、控制器及電路可用以下各項來實施或執行:處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯裝置、離散閘或電晶體邏輯、離散硬體組件或其經設計以執行本文中所描述之功能的任何組合。處理器可為微處理器,但在替代例中,處理器可為任何習知處理器、控制器、微控制器或狀態機。處理器亦可經實施為計算裝置之組合,例如,一DSP與一微處理器之組合、複數個微處理器、一或多個微處理器結合DSP核心,或任何其他此組態。 亦應注意,在本文中任何例示性態樣中描述之操作步驟係經描述以提供實例及論述。可按不同於所說明之序列的眾多不同序列執行所描述之操作。此外,以單一操作步驟描述之操作可實際上以數個不同步驟執行。此外,可組合例示性態樣中論述之一或多個操作步驟。應理解,如熟習此項技術者將容易地顯而易見,流程圖圖式中所說明之操作步驟可經受眾多不同修改。熟習此項技術者亦將理解,可使用多種不同技術及技法中之任一者表示資訊及信號。舉例而言,可由電壓、電流、電磁波、磁場或磁性粒子、光場或光學粒子或其任何組合來表示可貫穿以上描述所參考之資料、指令、命令、資訊、信號、位元、符號及碼片。 提供本發明之先前描述以使得任何熟習此項技術者皆能夠製作或使用本發明。熟習此項技術者將容易地顯而易見對本發明之各種修改,且本文中所定義之一般原理可在不背離本發明之精神或範疇的情況下應用於其他變體。因此,本發明並不意欲限於本文中所描述之實例及設計,而應符合與本文中所揭示之原理及新穎特徵相一致的最廣泛範疇。
100‧‧‧系統單晶片(SoC)
102‧‧‧以中央處理單元(CPU)為基礎之系統
104(0)‧‧‧中央處理單元(CPU)區塊
104(N)‧‧‧中央處理單元(CPU)區塊
106(0)‧‧‧中央處理單元(CPU)
106(1)‧‧‧中央處理單元(CPU)
108(0)‧‧‧共用2階(L2)快取記憶體
108(N)‧‧‧共用2階(L2)快取記憶體
110‧‧‧系統快取記憶體
112‧‧‧內部系統匯流排
114‧‧‧記憶體控制器
116‧‧‧周邊裝置
118‧‧‧儲存器
120‧‧‧快速周邊組件互連(PCI)(PCI-e)介面
122‧‧‧直接記憶體存取(DMA)控制器
200‧‧‧系統單晶片(SOC)
202‧‧‧以中央處理單元(CPU)為基礎之系統
204‧‧‧經壓縮記憶體控制器(CMC)
206‧‧‧系統記憶體
208(0)‧‧‧雙資料速率(DDR)動態隨機存取記憶體(DRAM)
208(R)‧‧‧雙資料速率(DDR)動態隨機存取記憶體(DRAM)
210‧‧‧系統快取記憶體
300‧‧‧半導體晶粒
302(0)‧‧‧半導體晶粒
302(1)‧‧‧半導體晶粒
304(0)‧‧‧記憶體介面(MEM I/F)
304(1)‧‧‧記憶體介面(MEM I/F)
304(P)‧‧‧記憶體介面(MEM I/F)
306‧‧‧壓縮控制器
308‧‧‧本端記憶體
310‧‧‧靜態隨機存取記憶體(SRAM)
312‧‧‧L4控制器
314‧‧‧內部記憶體
316‧‧‧內部記憶體控制器
400‧‧‧記憶體頻寬壓縮機制
402(0)‧‧‧經壓縮資料區域
402(D)‧‧‧經壓縮資料區域
404(0)‧‧‧記憶體線
404(1)‧‧‧記憶體線
406(0)‧‧‧記憶體區組
406(1)‧‧‧記憶體區組
406(2)‧‧‧記憶體區組
406(3)‧‧‧記憶體區組
408(0)‧‧‧記憶體線
408(1)‧‧‧記憶體線
408(X)‧‧‧記憶體線
410‧‧‧預提取準確度指示符
412‧‧‧主表
414(0)‧‧‧主表條目
414(Z)‧‧‧主表條目
416(0)‧‧‧壓縮指示符(CI)
416(D)‧‧‧壓縮指示符(CI)
418‧‧‧CI快取記憶體
420(0)‧‧‧CI快取記憶體條目
420(C)‧‧‧CI快取記憶體條目
422(0)‧‧‧壓縮指示符(CI)
422(V)‧‧‧壓縮指示符(CI)
424‧‧‧記憶體寫入請求
426‧‧‧寫入資料
428‧‧‧記憶體寫入位址
430‧‧‧記憶體讀取請求
432‧‧‧記憶體讀取位址
434‧‧‧第一壓縮機制
436‧‧‧第二壓縮機制
438‧‧‧第一壓縮結果
440‧‧‧第二壓縮結果
442‧‧‧指示(「IND」)
444‧‧‧讀取應答訊息(「READ ACK」)
500‧‧‧箭頭
502‧‧‧箭頭
504‧‧‧箭頭
506‧‧‧箭頭
508‧‧‧箭頭
600‧‧‧區塊
602‧‧‧決策區塊
604‧‧‧區塊
606‧‧‧區塊
608‧‧‧區塊
610‧‧‧決策區塊
612‧‧‧區塊
614‧‧‧區塊
616‧‧‧區塊
618‧‧‧區塊
700‧‧‧區塊
702‧‧‧區塊
704‧‧‧決策區塊
706‧‧‧區塊
708‧‧‧區塊
710‧‧‧區塊
712‧‧‧區塊
714‧‧‧區塊
716‧‧‧區塊
718‧‧‧區塊
800‧‧‧以處理器為基礎之系統
802‧‧‧中央處理單元(CPU)
804‧‧‧處理器
806‧‧‧快取記憶體
808‧‧‧系統匯流排
810‧‧‧記憶體系統
812‧‧‧輸入裝置
814‧‧‧輸出裝置
816‧‧‧網路介面裝置
818‧‧‧顯示控制器
820‧‧‧網路
822(0)‧‧‧記憶體單元
822(N)‧‧‧記憶體單元
824‧‧‧顯示器
826‧‧‧視訊處理器
圖1為包括以中央處理單元(CPU)為基礎之系統之例示性系統單晶片(SoC)的示意圖; 圖2為包括例示性以CPU為基礎之系統之SoC的示意圖,該以CPU為基礎之系統具有複數個CPU及經組態以提供記憶體頻寬壓縮之經壓縮記憶體控制器(CMC); 圖3為圖2之CMC的較詳細示意圖,其中CMC進一步以通信方式耦接至可用以提供記憶體頻寬壓縮之可選內部記憶體; 圖4為說明例示性記憶體頻寬壓縮系統之圖,該記憶體頻寬壓縮系統可由圖2及圖3之CMC及系統快取記憶體實施以用於提供適應性記憶體頻寬壓縮; 圖5為說明壓縮資料區域內之可用記憶體區組用於儲存及更新經壓縮記憶體線之例示性使用的方塊圖; 圖6A及圖6B為說明由圖2之CMC及系統快取記憶體使用適應性記憶體頻寬壓縮來執行記憶體寫入操作之例示性操作的流程圖; 圖7A及圖7B為說明由圖2之CMC及系統快取記憶體使用適應性記憶體頻寬壓縮來執行記憶體讀取操作之例示性操作的流程圖;及 圖8為例示性以處理器為基礎之系統的方塊圖,該以處理器為基礎之系統可包括使用圖2之CMC及系統快取記憶體的圖2之SoC。
Claims (33)
- 一種屬於一以中央處理單元(CPU)為基礎之系統的記憶體頻寬壓縮系統,其包含經組態以經由一系統匯流排存取一系統記憶體且以通信方式耦接至一系統快取記憶體之一經壓縮記憶體控制器(CMC); 該CMC經進一步組態以: 自該系統快取記憶體接收包含一記憶體寫入位址及寫入資料之一記憶體寫入請求; 使用一第一壓縮機制單獨地壓縮該寫入資料之複數個相關聯之記憶體線中的每一記憶體線以產生一第一壓縮結果; 使用一第二壓縮機制一起壓縮該複數個相關聯之記憶體線以產生一第二壓縮結果; 判定該第二壓縮結果之一大小是否小於該第一壓縮結果之一大小; 回應於判定該第二壓縮結果之一大小小於該第一壓縮結果之一大小,將該第二壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之一經壓縮資料區域;及 回應於判定該第二壓縮結果之一大小不小於該第一壓縮結果之一大小,將該第一壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域。
- 如請求項1之記憶體頻寬壓縮系統,其經進一步組態以: 在接收到包含該記憶體寫入位址及該寫入資料之該記憶體寫入請求之後: 判定該寫入資料包含一單一記憶體線抑或該複數個相關聯之記憶體線;及 回應於判定該寫入資料包含一單一記憶體線: 使用該第一壓縮機制壓縮該單一記憶體線以產生該第一壓縮結果;及 將該第一壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域; 該記憶體頻寬壓縮系統經組態以回應於判定該寫入資料包含該複數個相關聯之記憶體線而使用該第一壓縮機制單獨地壓縮該寫入資料之該複數個相關聯之記憶體線中的每一記憶體線以產生該第一壓縮結果及使用該第二壓縮機制一起壓縮該複數個相關聯之記憶體線以產生該第二壓縮結果。
- 如請求項2之記憶體頻寬壓縮系統,其中: 該系統快取記憶體經組態以提供包含以下各者之該寫入資料: 該複數個相關聯之記憶體線;及 複數個已變更位元,其各自指示儲存於該複數個相關聯之記憶體線中的一對應記憶體線中之資料是否已經修改;且 該CMC經組態以基於該複數個已變更位元而判定該寫入資料包含一單一記憶體線抑或複數個相關聯之記憶體線。
- 如請求項2之記憶體頻寬壓縮系統,其中該CMC經進一步組態以針對該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域而將一經壓縮長度、一壓縮類型及一經佔用記憶體區組指示符儲存於該系統記憶體中之一主表的複數個主表條目中之一主表條目中。
- 如請求項4之記憶體頻寬壓縮系統,其中該CMC經組態以藉由基於用於該經壓縮資料區域之該主表條目而將該第一壓縮結果寫入至該經壓縮資料區域之未佔用記憶體區組中之一或多者或該經壓縮資料區域中先前儲存用於該記憶體寫入位址之資料的一或多個記憶體區組來將該第一壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域。
- 如請求項4之記憶體頻寬壓縮系統,其中該CMC經進一步組態以將用於該複數個相關聯之記憶體線的複數個共同壓縮圖案寫入至該經壓縮資料區域中之一位於中心之記憶體區組中。
- 如請求項4之記憶體頻寬壓縮系統,其中該CMC經進一步組態以: 自該系統快取記憶體接收包含一記憶體讀取位址之一記憶體讀取請求; 回應於該記憶體讀取請求而判定待自該系統記憶體讀取之記憶體線之一數目; 基於待讀取之記憶體線之該經判定數目及該主表中對應於一經壓縮資料區域的一主表條目而自該系統記憶體中對應於該記憶體讀取位址之該經壓縮資料區域讀取一或多個記憶體線之經壓縮資料; 將該經壓縮資料解壓縮成該一或多個記憶體線;及 將該一或多個記憶體線傳回至該系統快取記憶體。
- 如請求項7之記憶體頻寬壓縮系統,其中該CMC經組態以基於記憶體匯流排利用率而判定待讀取之記憶體線之該數目。
- 如請求項7之記憶體頻寬壓縮系統,其中該CMC經組態以基於儲存於該系統記憶體中對應於該記憶體讀取位址之該經壓縮資料區域中的該經壓縮資料之一大小而判定待讀取之記憶體線之該數目。
- 如請求項7之記憶體頻寬壓縮系統,其中: 該系統快取記憶體經組態以提供進一步包含一預提取準確度指示符之該記憶體讀取請求;且 該CMC經組態以基於該預提取準確度指示符而判定待讀取之記憶體線之該數目。
- 如請求項10之記憶體頻寬壓縮系統,其中該系統快取記憶體經組態以: 維持自該CMC接收之隨後經存取的經預提取線之一計數; 維持自該CMC接收之全部經預提取線之一計數;及 基於隨後經存取之所接收經預提取線之該計數與所接收之全部經預提取線之該計數的一比率而產生該預提取準確度指示符。
- 如請求項7之記憶體頻寬壓縮系統,其中: 該CMC進一步包含一壓縮指示符(CI)快取記憶體,其包含對應於該主表之該複數個主表條目中的一或多個先前存取之主表條目的複數個CI快取記憶體條目; 該CMC經進一步組態以在自該經壓縮資料區域讀取該一或多個記憶體線之該經壓縮資料之前: 判定該複數個CI快取記憶體條目中之一CI快取記憶體條目是否對應於該記憶體讀取位址;及 回應於判定該複數個CI快取記憶體條目中之一CI快取記憶體條目對應於該記憶體讀取位址,基於該CI快取記憶體條目而自該系統記憶體中對應於該記憶體讀取位址之該經壓縮資料區域讀取該一或多個記憶體線之該經壓縮資料;且 該CMC經組態以回應於判定該複數個CI快取記憶體條目中無CI快取記憶體條目對應於該記憶體讀取位址,自該系統記憶體中對應於該記憶體讀取位址之該經壓縮資料區域讀取該一或多個記憶體線之該經壓縮資料。
- 如請求項7之記憶體頻寬壓縮系統,其中該CMC經進一步組態以在將該一或多個記憶體線傳回至該系統快取記憶體之前將是否將傳回大於一個記憶體線之一指示提供至該系統快取記憶體。
- 如請求項13之記憶體頻寬壓縮系統,其中該CMC經組態以將是否將傳回大於一個記憶體線之該指示作為至該系統快取記憶體之一讀取應答訊息之部分而提供至該系統快取記憶體。
- 如請求項13之記憶體頻寬壓縮系統,其中該系統快取記憶體經進一步組態以回應於由該CMC提供之該指示而接收複數個記憶體線。
- 如請求項1之記憶體頻寬壓縮系統,其整合至一積體電路(IC)中。
- 如請求項1之記憶體頻寬壓縮系統,其整合至選自由以下各者組成之群組的一裝置中:一機上盒、一娛樂單元、一導航裝置、一通信裝置、一固定位置資料單元、一行動位置資料單元、一全球定位系統(GPS)裝置、一行動電話、一蜂巢式電話、一智慧型手機、一會話起始協定(SIP)電話、一平板電腦、一平板手機、一伺服器、一電腦、一攜帶型電腦、一行動計算裝置、一可穿戴式計算裝置(例如,一智慧型手錶、一保健或健康跟蹤器、護目鏡等)、一桌上型電腦、一個人數位助理(PDA)、一監視器、一電腦監視器、一電視、一調諧器、一無線電、一衛星無線電、一音樂播放器、一數位音樂播放器、一攜帶型音樂播放器、一數位視訊播放器、一視訊播放器、一數位影音光碟(DVD)播放器、一攜帶型數位視訊播放器、一汽車、一車輛組件、航空電子系統、一無人飛機及一多旋翼飛行器。
- 一種屬於一以中央處理單元(CPU)為基礎之系統的記憶體頻寬壓縮系統,其包含: 用於接收包含一記憶體寫入位址及寫入資料之一記憶體寫入請求的一構件; 用於使用一第一壓縮機制單獨地壓縮該寫入資料之複數個相關聯之記憶體線中的每一記憶體線以產生一第一壓縮結果的一構件; 用於使用一第二壓縮機制一起壓縮該複數個相關聯之記憶體線以產生一第二壓縮結果的一構件; 用於判定該第二壓縮結果之一大小是否小於該第一壓縮結果之一大小的一構件; 用於回應於判定該第二壓縮結果之一大小小於該第一壓縮結果之一大小,將該第二壓縮結果寫入至一系統記憶體中對應於該記憶體寫入位址之一經壓縮資料區域的一構件;及 用於回應於判定該第二壓縮結果之一大小不小於該第一壓縮結果之一大小,將該第一壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域的一構件。
- 一種用於提供適應性記憶體頻寬壓縮之方法,其包含: 藉由一經壓縮記憶體控制器(CMC)自一系統快取記憶體接收包含一記憶體寫入位址及寫入資料之一記憶體寫入請求; 使用一第一壓縮機制單獨地壓縮該寫入資料之複數個相關聯之記憶體線中的每一記憶體線以產生一第一壓縮結果; 使用一第二壓縮機制一起壓縮該複數個相關聯之記憶體線以產生一第二壓縮結果; 判定該第二壓縮結果之一大小是否小於該第一壓縮結果之一大小; 回應於判定該第二壓縮結果之一大小小於該第一壓縮結果之一大小,將該第二壓縮結果寫入至一系統記憶體中對應於該記憶體寫入位址之一經壓縮資料區域;及 回應於判定該第二壓縮結果之一大小不小於該第一壓縮結果之一大小,將該第一壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域。
- 如請求項19之方法,其進一步包含在接收到包含該記憶體寫入位址及該寫入資料之該記憶體寫入請求之後: 判定該寫入資料包含一單一記憶體線抑或該複數個相關聯之記憶體線;及回應於判定該寫入資料包含一單一記憶體線: 使用該第一壓縮機制壓縮該單一記憶體線以產生該第一壓縮結果;及 將該第一壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域; 其中使用該第一壓縮機制單獨地壓縮該複數個相關聯之記憶體線中的每一記憶體線以產生該第一壓縮結果及使用該第二壓縮機制一起壓縮該複數個相關聯之記憶體線以產生該第二壓縮結果係回應於判定該寫入資料包含該複數個相關聯之記憶體線而進行。
- 如請求項20之方法,其中判定該寫入資料包含一單一記憶體線抑或複數個相關聯之記憶體線係基於隨該寫入資料提供之複數個已變更位元,每一已變更位元指示儲存於該複數個相關聯之記憶體線中的一對應記憶體線中之資料是否已經修改。
- 如請求項20之方法,其進一步包含針對該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域而將一經壓縮長度、一壓縮類型及一經佔用記憶體區組指示符儲存於該系統記憶體中之一主表的複數個主表條目中之一主表條目中。
- 如請求項22之方法,其中將該第一壓縮結果寫入至該系統記憶體中對應於該記憶體寫入位址之該經壓縮資料區域包含基於用於該經壓縮資料區域之該主表條目而將該第一壓縮結果寫入至該經壓縮資料區域之未佔用記憶體區組中之一或多者或該經壓縮資料區域中先前儲存用於該記憶體寫入位址之資料的一或多個記憶體區組。
- 如請求項22之方法,其進一步包含將用於該複數個相關聯之記憶體線的複數個共同壓縮圖案寫入至該經壓縮資料區域中之一位於中心之記憶體區組中。
- 如請求項22之方法,其進一步包含: 自該系統快取記憶體接收包含一記憶體讀取位址之一記憶體讀取請求; 回應於該記憶體讀取請求而判定待自該系統記憶體讀取之記憶體線之一數目; 基於待讀取之記憶體線之該經判定數目及該主表中對應於該經壓縮資料區域的一主表條目而自該系統記憶體中對應於該記憶體讀取位址之一經壓縮資料區域讀取一或多個記憶體線之經壓縮資料; 將該經壓縮資料解壓縮成該一或多個記憶體線中;及 將該一或多個記憶體線傳回至該系統快取記憶體。
- 如請求項25之方法,其中判定待讀取之記憶體線之該數目係基於記憶體匯流排利用率。
- 如請求項25之方法,其中判定待讀取之記憶體線之該數目係基於儲存於該系統記憶體中對應於該記憶體讀取位址之該經壓縮資料區域中的該經壓縮資料之一大小。
- 如請求項25之方法,其中判定待讀取之記憶體線之該數目係基於由該記憶體讀取請求提供之一預提取準確度指示符。
- 如請求項28之方法,其中該預提取準確度指示符係藉由該系統快取記憶體基於隨後經存取之所接收經預提取線之一計數與所接收之全部經預提取線之一計數的一比率而產生。
- 如請求項25之方法,其進一步包含在自該經壓縮資料區域讀取該一或多個記憶體線之該經壓縮資料之前: 判定一壓縮指示符(CI)快取記憶體之複數個CI快取記憶體條目中之一CI快取記憶體條目是否對應於該記憶體讀取位址;及 回應於判定該複數個CI快取記憶體條目中之一CI快取記憶體條目對應於該記憶體讀取位址,基於待讀取之記憶體線之該經判定數目及該CI快取記憶體條目而自該系統記憶體中對應於該記憶體讀取位址之該經壓縮資料區域讀取該一或多個記憶體線之該經壓縮資料; 其中基於待讀取之記憶體線之該經判定數目及該主表中對應於該經壓縮資料區域之該主表條目而自該系統記憶體中對應於該記憶體讀取位址之該經壓縮資料區域讀取該一或多個記憶體線之該經壓縮資料係回應於判定該複數個CI快取記憶體條目中無CI快取記憶體條目對應於該記憶體讀取位址而進行。
- 如請求項25之方法,其進一步包含在將該一或多個記憶體線傳回至該系統快取記憶體之前,將是否將傳回大於一個記憶體線之一指示提供至該系統快取記憶體。
- 如請求項31之方法,其中將是否將傳回大於一個記憶體線之該指示提供至該系統快取記憶體包含將該指示作為一讀取應答訊息之部分而傳回至該系統快取記憶體。
- 如請求項31之方法,其進一步包含回應於該指示而藉由該系統快取記憶體接收複數個記憶體線。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/266,765 US10176090B2 (en) | 2016-09-15 | 2016-09-15 | Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems |
| US15/266,765 | 2016-09-15 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201814518A true TW201814518A (zh) | 2018-04-16 |
| TWI773683B TWI773683B (zh) | 2022-08-11 |
Family
ID=59714177
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW106127866A TWI773683B (zh) | 2016-09-15 | 2017-08-17 | 使用在以一中央處理器單元為基礎的系統中之適應性壓縮提供記憶體頻寬壓縮 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US10176090B2 (zh) |
| TW (1) | TWI773683B (zh) |
| WO (1) | WO2018052653A1 (zh) |
Families Citing this family (8)
| 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 |
| US10866897B2 (en) * | 2016-09-26 | 2020-12-15 | Samsung Electronics Co., Ltd. | Byte-addressable flash-based memory module with prefetch mode that is adjusted based on feedback from prefetch accuracy that is calculated by comparing first decoded address and second decoded address, where the first decoded address is sent to memory controller, and the second decoded address is sent to prefetch buffer |
| US11481158B2 (en) | 2018-12-05 | 2022-10-25 | International Business Machines Corporation | Enabling compression based on queue occupancy |
| US10725911B2 (en) * | 2018-12-10 | 2020-07-28 | Sap Se | Non-Uniform pagination of columnar data |
| US11567872B1 (en) * | 2021-07-08 | 2023-01-31 | Advanced Micro Devices, Inc. | Compression aware prefetch |
| US11868244B2 (en) * | 2022-01-10 | 2024-01-09 | Qualcomm Incorporated | Priority-based cache-line fitting in compressed memory systems of processor-based systems |
| US11829292B1 (en) | 2022-01-10 | 2023-11-28 | Qualcomm Incorporated | Priority-based cache-line fitting in compressed memory systems of processor-based systems |
| US12379841B2 (en) | 2022-09-20 | 2025-08-05 | Samsung Electronics Co., Ltd. | Systems and methods for performing data compression in memory |
Family Cites Families (49)
| 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 |
| US6660227B2 (en) * | 2002-09-20 | 2003-12-09 | Innovatek Corporation | Device and method for detecting, isolating and eliminating hazardous microbiological polluting agents |
| 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 |
| CN102696010B (zh) | 2009-09-08 | 2016-03-23 | 才智知识产权控股公司(2) | 用于将数据高速缓存在固态存储设备上的装置、系统和方法 |
| US8341380B2 (en) | 2009-09-22 | 2012-12-25 | Nvidia Corporation | Efficient memory translator with variable size cache line coverage |
| JP2013506917A (ja) | 2009-09-30 | 2013-02-28 | サンプリファイ システムズ インコーポレイテッド | 圧縮及び復元を用いたマルチ・プロセッサの波形データ交換の改善 |
| 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 |
| WO2012168960A1 (en) | 2011-06-07 | 2012-12-13 | Hitachi, Ltd. | Semiconductor storage apparatus and method of controlling semiconductor storage apparatus |
| CN104011660B (zh) * | 2011-12-22 | 2017-03-01 | 英特尔公司 | 用于处理位流的基于处理器的装置和方法 |
| 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 |
| US9734548B2 (en) * | 2012-10-26 | 2017-08-15 | Nvidia Corporation | Caching of adaptively sized cache tiles in a unified L2 cache with surface compression |
| 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 | 华为技术有限公司 | 一种跨页预取方法、装置及系统 |
| US10572378B2 (en) | 2014-03-20 | 2020-02-25 | Hewlett Packard Enterprise Development Lp | Dynamic memory expansion by data compression |
| US10503661B2 (en) | 2014-05-21 | 2019-12-10 | Qualcomm Incorporated | Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system |
| US10838862B2 (en) | 2014-05-21 | 2020-11-17 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
| US9740621B2 (en) | 2014-05-21 | 2017-08-22 | Qualcomm Incorporated | Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods |
| 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 |
-
2016
- 2016-09-15 US US15/266,765 patent/US10176090B2/en active Active
-
2017
- 2017-08-17 TW TW106127866A patent/TWI773683B/zh active
- 2017-08-18 WO PCT/US2017/047532 patent/WO2018052653A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| US20180074949A1 (en) | 2018-03-15 |
| TWI773683B (zh) | 2022-08-11 |
| US10176090B2 (en) | 2019-01-08 |
| WO2018052653A1 (en) | 2018-03-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| AU2022203960B2 (en) | Providing memory bandwidth compression using multiple last-level cache (llc) lines in a central processing unit (cpu)-based system | |
| TWI773683B (zh) | 使用在以一中央處理器單元為基礎的系統中之適應性壓縮提供記憶體頻寬壓縮 | |
| US10169246B2 (en) | Reducing metadata size in compressed memory systems of processor-based systems | |
| US10503661B2 (en) | Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system | |
| US10236917B2 (en) | Providing memory bandwidth compression in chipkill-correct memory architectures | |
| KR102780546B1 (ko) | 프로세서―기반 시스템의 메모리 내의 압축된 메모리 라인들의 우선순위―기반 액세스 | |
| US10198362B2 (en) | Reducing bandwidth consumption when performing free memory list cache maintenance in compressed memory schemes of processor-based systems | |
| 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 | |
| US20180173623A1 (en) | Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compressed memory system to avoid stalling write operations | |
| 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 | |
| BR112018069720B1 (pt) | Provisão de compactação de largura de banda de memória utilizando múltiplas linhas de cache de último nível (llc) em um sistema baseado em unidade central de processamento (cpu) |