CN108885585B - 在基于中央处理单元(cpu)的系统中使用多个末级高速缓冲存储器(llc)线提供存储器带宽压缩 - Google Patents

在基于中央处理单元(cpu)的系统中使用多个末级高速缓冲存储器(llc)线提供存储器带宽压缩 Download PDF

Info

Publication number
CN108885585B
CN108885585B CN201780018219.6A CN201780018219A CN108885585B CN 108885585 B CN108885585 B CN 108885585B CN 201780018219 A CN201780018219 A CN 201780018219A CN 108885585 B CN108885585 B CN 108885585B
Authority
CN
China
Prior art keywords
cache
last level
line
level cache
lines
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201780018219.6A
Other languages
English (en)
Other versions
CN108885585A (zh
Inventor
C·B·韦里利
M·C·A·A·黑德斯
M·A·里纳迪
N·瓦伊德亚纳坦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN108885585A publication Critical patent/CN108885585A/zh
Application granted granted Critical
Publication of CN108885585B publication Critical patent/CN108885585B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed 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)的系统中使用多个末级高速缓冲 存储器(LLC)线提供存储器带宽压缩
优先权申请
本申请案主张2016年3月31日申请且名为“在基于中央处理单元(CPU)的系统中使用多个末级高速缓冲存储器(LLC)线提供存储器带宽压缩(PROVIDING MEMORY BANDWIDTHCOMPRESSION USING MULTIPLE LAST-LEVEL CACHE(LLC)LINES IN A CENTRAL PROCESSINGUNIT(CPU)-BASED SYSTEM)”的美国专利申请案第15/086,817号的优先权,所述美国专利申请案的全文以引用的方式并入本文中。
技术领域
本发明的科技大体上涉及计算机存储器系统,且尤其涉及用于提供具有到存储器的存储器存取接口的中央处理单元(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线的所述多个副线中的副线中的装置。
附图说明
图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进行存储器存取请求,且经由CMC204从存储器接收数据。
继续参考图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)或其相应线程存取相同数目个存储器信道,同时最小化对存储器存取时延的影响。在一些方面中,与在CMC204不执行此类压缩的情况下的存储器信道的较大数目相比较,可缩减存储器信道的数目,同时实现相似时延结果,这可引起系统级功率消耗缩减。
针对图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中所见,CMC 204接下来将来自经检索的一或多个块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选择LLC 412的多个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在使用中的方面,CMC204可首先确定是否可从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的方面中,CMC204可从系统存储器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)、广域网、无线局域网、蓝牙(BLUETOOTH;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核心的一或多个微处理器,或任何其它此类配置。
还应注意,描述了本文中在示范性方面中的任一者中所描述的操作步骤以提供实例及论述。可以除了所说明的序列以外的众多不同序列来执行所描述的操作。此外,单一操作步骤中所描述的操作可实际上以数个不同步骤执行。另外,可组合示范性方面中所论述的一或多个操作步骤。应理解,对于所属领域的技术人员而言将容易地显而易见,流程图中所绘示的操作步骤可服从众多不同修改。所属领域的技术人员还将理解,可使用多种不同科技及技术中的任一者来表示信息及信号。举例来说,可通过电压、电流、电磁波、磁场或磁性粒子、光场或光学粒子或其任何组合来表示可遍及以上描述而参考的数据、指令、命令、信息、信号、位、符号及码片。
提供了本发明的先前描述以使任何所属领域的技术人员均能够制造或使用本发明。在不脱离本发明的精神或范围的情况下,对本发明的各种修改对于所属领域的技术人员而言将容易地显而易见,且本文中所定义的一般原理可适用于其它变化。因此,本发明并不意图限于本文中所描述的实例及设计,而应符合与本文中所揭示的原理及新颖特征相一致的最广泛范围。

Claims (38)

1.一种经压缩存储器控制器CMC,其包括经配置以经由系统总线来存取系统存储器及系统高速缓冲存储器的存储器接口,且以通信方式耦合到包括多个末级高速缓冲存储器线的末级高速缓冲存储器,每一末级高速缓冲存储器线经定大小以存储对应于所述系统高速缓冲存储器的多个系统高速缓冲存储器线的多个副线;
所述CMC经配置以进行以下操作:
从所述系统高速缓冲存储器接收包括存储器地址的存储器读取请求;
确定所述存储器地址是否对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的有效副线;及
响应于确定所述存储器地址不对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的有效副线而进行以下操作:
从所述系统存储器中的主表读取含有用于所述末级高速缓冲存储器线的偏移值及长度值的主表条目;
基于所述存储器地址、所述偏移值及所述长度值而从所述系统存储器检索一或多个块;
将来自经检索的一或多个块的数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的副线中;及
将来自所述经检索的一或多个块的所述数据返回到所述系统高速缓冲存储器。
2.根据权利要求1所述的CMC,其经配置以通过经配置以进行以下操作来确定所述存储器地址是否对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的有效副线:
确定所述存储器地址是否对应于所述多个末级高速缓冲存储器线内的现有末级高速缓冲存储器线的副线;及
响应于确定所述存储器地址对应于所述多个末级高速缓冲存储器线内的现有末级高速缓冲存储器线的副线而确定所述现有末级高速缓冲存储器线的所述副线是否有效。
3.根据权利要求1所述的CMC,其经进一步配置以响应于确定所述存储器地址对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的有效副线而将来自所述有效副线的数据返回到所述系统高速缓冲存储器。
4.根据权利要求1所述的CMC,其经配置以通过经配置以进行以下操作而将来自所述经检索的一或多个块的所述数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的所述末级高速缓冲存储器线内的所述多个副线中的所述副线中:
基于所述长度值来确定来自所述经检索的一或多个块的所述数据是否被压缩;
响应于确定来自所述经检索的一或多个块的所述数据未被压缩而将来自所述经检索的一或多个块的所述数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的所述末级高速缓冲存储器线内的所述多个副线中的所述副线中;及
响应于确定来自所述经检索的一或多个块的所述数据被压缩而进行以下操作:
解压缩来自所述经检索的一或多个块的所述数据;及
将经解压缩数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的所述末级高速缓冲存储器线内的所述多个副线中的所述副线中。
5.根据权利要求1所述的CMC,其经进一步配置以在将来自所述经检索的一或多个块的所述数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的所述末级高速缓冲存储器线内的所述多个副线中的所述副线中之前进行以下操作:
选择所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线作为收回末级高速缓冲存储器线;
将来自所述收回末级高速缓冲存储器线的所述多个副线的数据存储在所述系统存储器中;及
将来自所述经检索的一或多个块的所述数据存储在所述收回末级高速缓冲存储器线内的所述多个副线中的副线中。
6.根据权利要求5所述的CMC,其经配置以通过经配置以进行以下操作而将来自所述收回末级高速缓冲存储器线的所述多个副线的所述数据存储在所述系统存储器中:
读取多个主表条目,每一主表条目含有用于所述收回末级高速缓冲存储器线的所述多个副线中的每一对应副线的偏移值及长度值;及
针对含有经修改数据的所述收回末级高速缓冲存储器线的所述多个副线中的每一副线进行以下操作:
压缩来自所述副线的数据;
基于来自所述副线的经压缩数据来产生用于所述副线的经更新长度值;
确定用于所述副线的所述经更新长度值是否不同于用于所述副线的所述长度值;
响应于确定用于所述副线的所述经更新长度值并非不同于用于所述副线的所述长度值而基于用于所述副线的所述偏移值及所述长度值将用于所述副线的所述经压缩数据写入到所述系统存储器的一或多个块;及
响应于确定用于所述副线的所述经更新长度值不同于用于所述副线的所述长度值而进行以下操作:
产生用于所述副线的经更新偏移值;
基于用于所述副线的所述经更新偏移值及所述经更新长度值将用于所述副线的所述经压缩数据写入到所述系统存储器的一或多个块;及
运用所述经更新偏移值及所述经更新长度值来更新用于所述副线的主表条目。
7.根据权利要求6所述的CMC,其经配置以基于一或多个分配规则来产生用于所述副线的所述经更新偏移值,所述一或多个分配规则包括防止所述经压缩数据跨越对应于多于一个副线的所述系统存储器的存储器副线区,使所述经压缩数据在所述系统存储器的所述存储器副线区内对准,及对用于所述多个副线的所述经压缩数据分组。
8.根据权利要求1所述的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高速缓冲存储器条目。
9.根据权利要求8所述的CMC,其经进一步配置以在将所述主表条目写入到所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的所述MT高速缓冲存储器条目之前进行以下操作:
确定所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的当前MT高速缓冲存储器条目是否应被收回;及
响应于确定所述当前MT高速缓冲存储器条目应被收回而进行以下操作:
确定所述当前MT高速缓冲存储器条目是否已被更新;及
响应于确定所述当前MT高速缓冲存储器条目已被更新而将所述当前MT高速缓冲存储器条目的内容写入到所述主表。
10.根据权利要求1所述的CMC,其经进一步配置以进行以下操作:
读取含有用于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的所述末级高速缓冲存储器线内的所述多个副线中的一或多个剩余副线的一或多个偏移值及一或多个长度值的一或多个主表条目;
基于所述一或多个偏移值及所述一或多个长度值而从所述系统存储器检索所述一或多个块;及
将来自所述经检索的一或多个块的所述数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的所述末级高速缓冲存储器线内的所述多个副线中的所述一或多个剩余副线中。
11.根据权利要求1所述的CMC,其集成到集成电路IC中。
12.根据权利要求1所述的CMC,其集成到选自由以下各者组成的群组的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;移动电话;蜂窝式电话;智能电话;平板计算机;平板手机;计算机;便携式计算机;桌上型计算机;个人数字助理PDA;监视器;计算机监视器;电视;调谐器;无线电;卫星无线电;音乐播放器;数字音乐播放器;便携式音乐播放器;数字视频播放器;视频播放器;数字视频光盘DVD播放器;便携式数字视频播放器;及汽车。
13.一种经压缩存储器控制器CMC,其包括经配置以经由系统总线来存取系统存储器及系统高速缓冲存储器的存储器接口,且以通信方式耦合到包括多个末级高速缓冲存储器线的末级高速缓冲存储器,每一末级高速缓冲存储器线经定大小以存储对应于所述系统高速缓冲存储器的相连多个系统高速缓冲存储器线的多个副线;
所述CMC经配置以进行以下操作:
从所述系统高速缓冲存储器接收包括写入数据及存储器地址的存储器写入请求;
确定所述存储器地址是否对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的副线;及
响应于确定所述存储器地址不对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的副线而进行以下操作:
选择所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线内的末级高速缓冲存储器线作为收回末级高速缓冲存储器线;
针对含有经修改数据的所述收回末级高速缓冲存储器线的所述多个副线中的每一副线进行以下操作:
压缩来自所述副线的数据;
基于来自所述副线的经压缩数据来产生用于所述副线的经更新偏移值及经更新长度值;
基于用于所述副线的所述经更新偏移值及所述经更新长度值将用于所述副线的所述经压缩数据存储在所述系统存储器的一或多个块中;及
将所述经更新偏移值及所述经更新长度值存储在主表中的用于所述副线的主表条目中;及
将所述写入数据存储在所述收回末级高速缓冲存储器线的所述多个副线中的副线中。
14.根据权利要求13所述的CMC,其经进一步配置以响应于确定所述存储器地址对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的副线而将所述写入数据存储在所述末级高速缓冲存储器线的所述副线中。
15.根据权利要求13所述的CMC,其经配置以基于一或多个分配规则来产生用于所述副线的所述经更新偏移值,所述一或多个分配规则包括防止所述经压缩数据跨越对应于多于一个副线的所述系统存储器的存储器副线区,使所述经压缩数据在所述系统存储器的所述存储器副线区内对准,及对用于所述多个副线的所述经压缩数据分组。
16.根据权利要求13所述的CMC,其经进一步配置以进行以下操作:
在基于用于所述副线的所述经更新偏移值及所述经更新长度值将用于所述副线的所述经压缩数据存储在所述系统存储器的所述一或多个块中之前读取用于所述副线的偏移值及长度值;
确定用于所述副线的所述经更新长度值是否不同于用于所述副线的所述长度值;
响应于确定用于所述副线的所述经更新长度值不同于用于所述副线的所述长度值而进行以下操作:
产生用于所述副线的所述经更新偏移值;
基于用于所述副线的所述经更新偏移值及所述长度值将用于所述副线的所述经压缩数据存储在所述系统存储器的一或多个块中;及
运用所述经更新偏移值及所述长度值来更新所述主表中的用于所述副线的所述主表条目;且
所述CMC经配置以响应于确定用于所述副线的所述经更新长度值并非不同于用于所述副线的所述长度值而基于用于所述副线的所述偏移值及所述长度值将用于所述副线的所述经压缩数据存储在所述系统存储器的所述一或多个块中。
17.根据权利要求13所述的CMC,其进一步包括主表MT高速缓冲存储器,所述MT高速缓冲存储器包括多个MT高速缓冲存储器条目,每一MT高速缓冲存储器条目经配置以存储经先前读取的主表条目;
所述CMC经进一步配置以在将所述经更新偏移值及所述经更新长度值存储在所述主表中的用于所述副线的所述主表条目中之前确定所述存储器地址是否对应于所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的MT高速缓冲存储器条目;且
所述CMC经进一步配置以进行以下操作:
响应于确定所述存储器地址不对应于所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的MT高速缓冲存储器条目而将所述经更新偏移值及所述经更新长度值存储在所述MT高速缓冲存储器的MT高速缓冲存储器条目中;及
响应于确定所述存储器地址对应于所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的MT高速缓冲存储器条目而运用所述经更新偏移值及所述经更新长度值来更新所述MT高速缓冲存储器的所述MT高速缓冲存储器条目。
18.根据权利要求17所述的CMC,其经进一步配置以在将所述主表条目写入到所述MT高速缓冲存储器的所述MT高速缓冲存储器条目之前进行以下操作:
确定所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的当前MT高速缓冲存储器条目是否应被收回;及
响应于确定所述当前MT高速缓冲存储器条目应被收回而进行以下操作:
确定所述当前MT高速缓冲存储器条目是否已被修改;及
响应于确定所述当前MT高速缓冲存储器条目已被修改而将所述MT高速缓冲存储器条目的所述主表条目写入到所述主表。
19.根据权利要求13所述的CMC,其集成到集成电路IC中。
20.根据权利要求13所述的CMC,其集成到选自由以下各者组成的群组的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;移动电话;蜂窝式电话;智能电话;平板计算机;平板手机;计算机;便携式计算机;桌上型计算机;个人数字助理PDA;监视器;计算机监视器;电视;调谐器;无线电;卫星无线电;音乐播放器;数字音乐播放器;便携式音乐播放器;数字视频播放器;视频播放器;数字视频光盘DVD播放器;便携式数字视频播放器;及汽车。
21.一种用于提供用于存储器读取操作的存储器带宽压缩的方法,其包括:
由经压缩存储器控制器CMC从系统高速缓冲存储器接收包括存储器地址的存储器读取请求;
确定所述存储器地址是否对应于末级高速缓冲存储器的多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的多个副线中的有效副线;及
响应于确定所述存储器地址不对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的有效副线而进行以下操作:
从系统存储器中的主表读取含有用于所述末级高速缓冲存储器线的偏移值及长度值的主表条目;
基于所述存储器地址、所述偏移值及所述长度值而从所述系统存储器检索一或多个块;
将来自经检索的一或多个块的数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的副线中;及
将来自所述经检索的一或多个块的所述数据返回到所述系统高速缓冲存储器。
22.根据权利要求21所述的方法,其中确定所述存储器地址是否对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的有效副线包括:
确定所述存储器地址是否对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的现有末级高速缓冲存储器线内的所述多个副线中的副线;及
响应于确定所述存储器地址对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的现有末级高速缓冲存储器线内的所述多个副线中的副线而确定所述现有末级高速缓冲存储器线的所述副线是否有效。
23.根据权利要求21所述的方法,其进一步包括响应于确定所述存储器地址对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的有效副线而将来自所述有效副线的数据返回到所述系统高速缓冲存储器。
24.根据权利要求21所述的方法,其中将来自所述经检索的一或多个块的所述数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的所述末级高速缓冲存储器线内的所述多个副线中的所述副线中包括:
基于所述长度值来确定来自所述经检索的一或多个块的所述数据是否被压缩;
响应于确定来自所述经检索的一或多个块的所述数据未被压缩而将来自所述经检索的一或多个块的所述数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的所述末级高速缓冲存储器线内的所述多个副线中的所述副线中;及
响应于确定来自所述经检索的一或多个块的所述数据被压缩而进行以下操作:
解压缩来自所述经检索的一或多个块的所述数据;及
将经解压缩数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的所述末级高速缓冲存储器线内的所述多个副线中的所述副线中。
25.根据权利要求21所述的方法,其进一步包括在将来自所述经检索的一或多个块的所述数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的所述末级高速缓冲存储器线内的所述多个副线中的所述副线中之前进行以下操作:
选择所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线作为收回末级高速缓冲存储器线;
将来自所述收回末级高速缓冲存储器线的所述多个副线的数据存储在所述系统存储器中;及
将来自所述经检索的一或多个块的所述数据存储在所述收回末级高速缓冲存储器线内的所述多个副线中的副线中。
26.根据权利要求25所述的方法,其中将来自所述收回末级高速缓冲存储器线的所述多个副线的所述数据存储在所述系统存储器中包括:
读取多个主表条目,每一主表条目含有用于所述收回末级高速缓冲存储器线的所述多个副线中的每一对应副线的偏移值及长度值;及
针对含有经修改数据的所述收回末级高速缓冲存储器线的所述多个副线中的每一副线进行以下操作:
压缩来自所述副线的数据;
基于来自所述副线的经压缩数据来产生用于所述副线的经更新长度值;
确定用于所述副线的所述经更新长度值是否不同于用于所述副线的所述长度值;
响应于确定用于所述副线的所述经更新长度值并非不同于用于所述副线的所述长度值而基于用于所述副线的所述偏移值及所述长度值将用于所述副线的所述经压缩数据写入到所述系统存储器的一或多个块;及
响应于确定用于所述副线的所述经更新长度值不同于用于所述副线的所述长度值而进行以下操作:
产生用于所述副线的经更新偏移值;
基于用于所述副线的所述经更新偏移值及所述经更新长度值将用于所述副线的所述经压缩数据写入到所述系统存储器的一或多个块;及
运用所述经更新偏移值及所述经更新长度值来更新用于所述副线的所述主表条目。
27.根据权利要求26所述的方法,其中产生用于所述副线的所述经更新偏移值是基于一或多个分配规则,所述一或多个分配规则包括防止所述经压缩数据跨越对应于多于一个副线的所述系统存储器的存储器副线区,使所述经压缩数据在所述系统存储器的所述存储器副线区内对准,及对用于所述多个副线的所述经压缩数据分组。
28.根据权利要求21所述的方法,其进一步包括:
在读取所述主表中的所述主表条目之前确定所述存储器地址是否对应于主表MT高速缓冲存储器的多个MT高速缓冲存储器条目中的MT高速缓冲存储器条目,每一MT高速缓冲存储器条目经配置以存储经先前读取的主表条目;
响应于确定所述存储器地址不对应于所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的MT高速缓冲存储器条目而进行以下操作:
读取所述主表中的所述主表条目;及
将所述主表条目写入到所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的MT高速缓冲存储器条目;及
响应于确定所述存储器地址对应于所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的MT高速缓冲存储器条目而读取所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的所述MT高速缓冲存储器条目。
29.根据权利要求28所述的方法,其进一步包括在将所述主表条目写入到所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的所述MT高速缓冲存储器条目之前进行以下操作:
确定所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的当前MT高速缓冲存储器条目是否应被收回;及
响应于确定所述当前MT高速缓冲存储器条目应被收回而进行以下操作:
确定所述当前MT高速缓冲存储器条目是否已被更新;及
响应于确定所述当前MT高速缓冲存储器条目已被更新而将所述当前MT高速缓冲存储器条目的内容写入到所述主表。
30.根据权利要求21所述的方法,其进一步包括:
读取含有用于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线的所述多个副线中的一或多个剩余副线的一或多个偏移值及一或多个长度值的一或多个主表条目;
基于所述一或多个偏移值及所述一或多个长度值而从所述系统存储器检索一或多个块;及
将来自所述经检索的一或多个块的所述数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的所述末级高速缓冲存储器线内的所述多个副线中的所述一或多个剩余副线中。
31.一种用于提供用于存储器写入操作的存储器带宽压缩的方法,其包括:
由经压缩存储器控制器CMC从系统高速缓冲存储器接收包括写入数据及存储器地址的存储器写入请求;
确定所述存储器地址是否对应于末级高速缓冲存储器的多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的多个副线中的副线;
响应于确定所述存储器地址不对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的副线而进行以下操作:
选择所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线内的末级高速缓冲存储器线作为收回末级高速缓冲存储器线;
针对含有经修改数据的所述收回末级高速缓冲存储器线的所述多个副线中的每一副线进行以下操作:
压缩来自所述副线的数据;
基于来自所述副线的经压缩数据来产生用于所述副线的经更新偏移值及经更新长度值;
基于用于所述副线的所述经更新偏移值及所述经更新长度值将用于所述副线的所述经压缩数据存储在系统存储器的一或多个块中;及
将所述经更新偏移值及所述经更新长度值存储在主表中的用于所述副线的主表条目中;及
将所述写入数据存储在所述收回末级高速缓冲存储器线的所述多个副线中的副线中。
32.根据权利要求31所述的方法,其进一步包括响应于确定所述存储器地址对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的副线而将所述写入数据存储在所述末级高速缓冲存储器线的所述副线中。
33.根据权利要求31所述的方法,其中产生用于所述副线的所述经更新偏移值是基于一或多个分配规则,所述一或多个分配规则包括防止所述经压缩数据跨越对应于多于一个副线的所述系统存储器的存储器副线区,使所述经压缩数据在所述系统存储器的所述存储器副线区内对准,及对用于所述多个副线的所述经压缩数据分组。
34.根据权利要求31所述的方法,其中基于来自所述副线的所述经压缩数据来产生用于所述副线的所述经更新偏移值及所述经更新长度值包括:
基于所述经压缩数据来产生用于所述副线的所述经更新长度值;
读取用于所述副线的偏移值及长度值;
确定用于所述副线的所述经更新长度值是否不同于用于所述副线的所述长度值;
响应于确定用于所述副线的所述经更新长度值不同于用于所述副线的所述长度值而基于所述经压缩数据来产生所述经更新偏移值;及
响应于确定用于所述副线的所述经更新长度值并非不同于用于所述副线的所述长度值而使用所述偏移值作为所述经更新偏移值。
35.根据权利要求31所述的方法,其进一步包括:
在将所述经更新偏移值及所述经更新长度值存储在所述主表中的用于所述副线的所述主表条目中之前确定所述存储器地址是否对应于主表MT高速缓冲存储器的多个MT高速缓冲存储器条目中的MT高速缓冲存储器条目,每一MT高速缓冲存储器条目经配置以存储经先前读取的主表条目;
响应于确定所述存储器地址不对应于所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的MT高速缓冲存储器条目而进行以下操作:
将所述经更新偏移值及所述经更新长度值存储在所述主表中的用于所述副线的所述主表条目中;及
将所述主表条目写入到所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的MT高速缓冲存储器条目;及
响应于确定所述存储器地址对应于所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的MT高速缓冲存储器条目而运用所述主表条目来更新所述MT高速缓冲存储器的所述MT高速缓冲存储器条目。
36.根据权利要求35所述的方法,其进一步包括在将所述主表条目写入到所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的所述MT高速缓冲存储器条目之前进行以下操作:
确定所述MT高速缓冲存储器的所述多个MT高速缓冲存储器条目中的当前MT高速缓冲存储器条目是否应被收回;及
响应于确定所述当前MT高速缓冲存储器条目应被收回而进行以下操作:
确定所述当前MT高速缓冲存储器条目是否已被修改;及
响应于确定所述当前MT高速缓冲存储器条目已被修改而将所述MT高速缓冲存储器条目的内容写入到所述主表。
37.一种经压缩存储器控制器CMC,其包括:
用于从系统高速缓冲存储器接收包括存储器地址的存储器读取请求的装置;
用于确定所述存储器地址是否对应于末级高速缓冲存储器的多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的多个副线中的有效副线的装置;
用于响应于确定所述存储器地址不对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的有效副线而从系统存储器中的主表读取含有用于所述末级高速缓冲存储器线的偏移值及长度值的主表条目的装置;
用于基于所述存储器地址、所述偏移值及所述长度值而从所述系统存储器检索一或多个块的装置;
用于将来自经检索的一或多个块的数据存储在所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的副线中的装置;及
用于将来自所述经检索的一或多个块的所述数据返回到所述系统高速缓冲存储器的装置。
38.一种经压缩存储器控制器CMC,其包括:
用于从系统高速缓冲存储器接收包括写入数据及存储器地址的存储器写入请求的装置;
用于确定所述存储器地址是否对应于末级高速缓冲存储器的多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的多个副线中的副线的装置;
用于响应于确定所述存储器地址不对应于所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线中的末级高速缓冲存储器线内的所述多个副线中的副线而选择所述末级高速缓冲存储器的所述多个末级高速缓冲存储器线内的末级高速缓冲存储器线作为收回末级高速缓冲存储器线的装置;
用于压缩来自含有经修改数据的所述收回末级高速缓冲存储器线的所述多个副线中的每一副线的数据的装置;
用于针对含有经修改数据的所述收回末级高速缓冲存储器线的所述多个副线中的每一副线而基于来自所述副线的经压缩数据来产生经更新偏移值及经更新长度值的装置;
用于针对含有经修改数据的所述收回末级高速缓冲存储器线的所述多个副线中的每一副线而基于用于所述副线的所述经更新偏移值及所述经更新长度值将所述经压缩数据存储在系统存储器的一或多个块中的装置;
用于针对含有经修改数据的所述收回末级高速缓冲存储器线的所述多个副线中的每一副线将所述经更新偏移值及所述经更新长度值存储在主表中的用于所述副线的主表条目中的装置;及
用于将所述写入数据存储在所述收回末级高速缓冲存储器线的所述多个副线中的副线中的装置。
CN201780018219.6A 2016-03-31 2017-03-13 在基于中央处理单元(cpu)的系统中使用多个末级高速缓冲存储器(llc)线提供存储器带宽压缩 Active CN108885585B (zh)

Applications Claiming Priority (3)

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
PCT/US2017/022060 WO2017172335A1 (en) 2016-03-31 2017-03-13 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
CN108885585A CN108885585A (zh) 2018-11-23
CN108885585B true CN108885585B (zh) 2022-11-01

Family

ID=58361201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780018219.6A Active CN108885585B (zh) 2016-03-31 2017-03-13 在基于中央处理单元(cpu)的系统中使用多个末级高速缓冲存储器(llc)线提供存储器带宽压缩

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)

* Cited by examiner, † Cited by third party
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004355124A (ja) * 2003-05-27 2004-12-16 Internatl Business Mach Corp <Ibm> 直接アドレス指定共用圧縮メモリ・システム
US20110066808A1 (en) * 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, System, and Method for Caching Data on a Solid-State Storage Device
US20140208003A1 (en) * 2013-01-22 2014-07-24 Lsi Corporation Variable-size flash translation layer
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
US20170068621A1 (en) * 2015-09-04 2017-03-09 Kabushiki Kaisha Toshiba Memory system and information processing system

Family Cites Families (45)

* Cited by examiner, † Cited by third party
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
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
US8341380B2 (en) 2009-09-22 2012-12-25 Nvidia Corporation Efficient memory translator with variable size cache line coverage
CN102754078B (zh) 2009-09-30 2015-05-20 阿尔特拉公司 使用压缩和解压缩的增强型多处理器波形数据交换
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
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
WO2013160969A1 (en) 2012-04-27 2013-10-31 Hitachi, Ltd. Storage apparatus and data management method
US8830716B2 (en) 2012-09-29 2014-09-09 Intel Corporation Intelligent far memory bandwith scaling
JPWO2014061481A1 (ja) 2012-10-19 2016-09-05 日本電気株式会社 適応的圧縮アルゴリズムを用いたデータ転送装置及びデータ転送システム
US9852055B2 (en) 2013-02-25 2017-12-26 International Business Machines Corporation Multi-level memory compression
CN104133780B (zh) 2013-05-02 2017-04-05 华为技术有限公司 一种跨页预取方法、装置及系统
US9612833B2 (en) * 2014-02-28 2017-04-04 Intel Corporation Handling compressed data over distributed cache fabric
WO2015142341A1 (en) 2014-03-20 2015-09-24 Hewleet-Packard Development Company, L. P. Dynamic memory expansion by data compression
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
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
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004355124A (ja) * 2003-05-27 2004-12-16 Internatl Business Mach Corp <Ibm> 直接アドレス指定共用圧縮メモリ・システム
US20110066808A1 (en) * 2009-09-08 2011-03-17 Fusion-Io, Inc. Apparatus, System, and Method for Caching Data on a Solid-State Storage Device
US20140208003A1 (en) * 2013-01-22 2014-07-24 Lsi Corporation Variable-size flash translation layer
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
CN106462496A (zh) * 2014-05-21 2017-02-22 高通股份有限公司 在基于中央处理单元cpu的系统中使用经压缩存储器控制器cmc来提供存储器带宽压缩
US20170068621A1 (en) * 2015-09-04 2017-03-09 Kabushiki Kaisha Toshiba Memory system and information processing system

Also Published As

Publication number Publication date
EP3436955A1 (en) 2019-02-06
US20170286308A1 (en) 2017-10-05
JP6859361B2 (ja) 2021-04-14
TWI744289B (zh) 2021-11-01
CN108885585A (zh) 2018-11-23
TW201737095A (zh) 2017-10-16
US10191850B2 (en) 2019-01-29
KR102504728B1 (ko) 2023-02-27
JP2019513271A (ja) 2019-05-23
AU2017240430A1 (en) 2018-09-06
WO2017172335A1 (en) 2017-10-05
US20180018268A1 (en) 2018-01-18
KR20180129799A (ko) 2018-12-05
AU2022203960B2 (en) 2024-03-07
AU2022203960A1 (en) 2022-06-23
BR112018069720A2 (pt) 2019-02-05
US10146693B2 (en) 2018-12-04

Similar Documents

Publication Publication Date Title
CN108885585B (zh) 在基于中央处理单元(cpu)的系统中使用多个末级高速缓冲存储器(llc)线提供存储器带宽压缩
US10503661B2 (en) Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US10176090B2 (en) Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
US9823854B2 (en) Priority-based access of compressed memory lines in memory in a processor-based system
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
US10198362B2 (en) Reducing bandwidth consumption when performing free memory list cache maintenance in compressed memory schemes of 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
EP3420460B1 (en) Providing scalable dynamic random access memory (dram) cache management using dram cache indicator caches

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant