首页> 中国专利> 在基于中央处理单元CPU的系统中使用经压缩存储器控制器CMC来提供存储器带宽压缩

在基于中央处理单元CPU的系统中使用经压缩存储器控制器CMC来提供存储器带宽压缩

摘要

本发明揭示在基于中央处理单元CPU的系统中使用经压缩存储器控制器CMC来提供存储器带宽压缩。在这点上,在一些方面,CMC经配置以接收对系统存储器中的物理地址的存储器读取请求,且从主目录和/或从所述物理地址的错误校正码ECC位读取用于所述物理地址的压缩指示符CI。基于所述CI,所述CMC确定将为所述存储器读取请求读取的存储器块的数目,且读取所述所确定数目的存储器块。在一些方面,CMC经配置以接收对所述系统存储器中的物理地址的存储器写入请求,且基于所述写入数据的压缩模式来产生用于写入数据的CI。CMC用所述所产生的CI来更新所述主目录和/或所述物理地址的所述ECC位。

著录项

  • 公开/公告号CN106462496A

    专利类型发明专利

  • 公开/公告日2017-02-22

    原文格式PDF

  • 申请/专利权人 高通股份有限公司;

    申请/专利号CN201580026643.6

  • 申请日2015-05-21

  • 分类号G06F12/02;

  • 代理机构北京律盟知识产权代理有限责任公司;

  • 代理人宋献涛

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 01:44:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-03

    授权

    授权

  • 2017-03-22

    实质审查的生效 IPC(主分类):G06F12/02 申请日:20150521

    实质审查的生效

  • 2017-02-22

    公开

    公开

说明书

优先权申请

本申请案主张2014年5月21日申请且标题为“使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法(MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第62/001,545号美国临时专利申请案的优先权,所述专利申请案以全文引用的方式并入本文中。

本申请案还主张2014年12月16日申请且标题为“使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法(MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第62/092,326号美国临时专利申请案的优先权,所述专利申请案以全文引用的方式并入本文中。

本申请案还主张2014年12月16日申请且标题为“结合下一读取地址预取使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法(MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION WITH NEXT READ ADDRESS PREFETCHING,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第62/092,409号美国临时专利申请的优先权,所述专利申请以全文引用的方式并入本文中。

本申请案还主张2015年5月19日申请且标题为“使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法(MEMORY CONTROLLERS EMPLOYING MEMORY CAPACITY COMPRESSION,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第14/716,001号美国专利申请案的优先权,所述专利申请案以全文引用的方式并入本文中。

本申请案还主张2015年5月20日申请且标题为“在基于中央处理单元(CPU)的系统中使用经压缩存储器控制器(CMC)来提供存储器带宽压缩(PROVIDING MEMORY BANDWIDTH COMPRESSION USING COMPRESSED MEMORY CONTROLLERS (CMCs)IN A CENTRAL PROCESSING UNIT(CPU)-BASED SYSTEM)”的第14/717,552号美国专利申请案的优先权,所述专利申请案以全文引用的方式并入本文中。

技术领域

本发明的技术大体上涉及计算机存储器系统,且尤其涉及用于提供具有到存储器的存储器存取接口的中央处理单元(CPU)的计算机存储器系统中的存储器控制器。

背景技术

微处理器在广泛多种应用程序中执行计算任务。典型的微处理器应用程序包含一或多个中央处理单元(CPU),其执行软件指令。所述软件指令可指令CPU从存储器中的位置取数据,使用取到的数据来执行一或多个CPU操作,并产生结果。所述结果接着可存储在存储器中。作为非限制性实例,此存储器可为在CPU本地的高速缓冲存储器、在CPU块中的CPU之间的共享本地高速缓冲存储器,在多个CPU块之间的共享高速缓冲存储器,或微处理器的主存储器。

就此来说,图1是包含基于CPU的系统12的示例性芯片上系统(SoC)10的示意图。在此实例中,基于CPU的系统12包含多个CPU块14(1)到14(N),其中“N”等于所要的任何数目的CPU块14。在图1的实例中,CPU块14(1)到14(N)中的每一者含有两个CPU 16(1)、16(2)。CPU块14(1)到14(N)进一步分别含有共享等级2(L2)高速缓冲存储18(1)到18(N)。还提供共享等级3(L3)高速缓冲存储器20,用于存储由CPU块14(1)到14(N)中的任一者使用或在其之间共享的高速缓存的数据。提供内部系统总线22,来使CPU块14(1)到14(N)中的每一者能够存取共享的L3高速缓冲存储器20以及其它共享资源。CPU块14(1)到14(N)通过内部系统总线22存取的其它共享资源可包含存储器控制器24,其用于存取主要外部存储器(例如双速率动态随机存取存储器(DRAM)(DDR),作为非限制性实例)、外围装置26、其它存储装置28、快速外围组件互连(PCI)(PCI-e)接口30、直接存储器存取(DMA)控制器32,和/或集成存储器控制器(IMC)34。

随着在图1中的基于CPU的系统12中执行的基于CPU的应用程序的复杂性和性能增加,共享L2高速缓冲存储器18(1)到18(N)和共享L3高速缓冲存储器20,以及可通过所述存储器控制器24存取的外部存储器的存储器容量要求也可增加。可使用数据压缩来增加基于CPU的系统12的有效存储器容量,而不增加物理存储器容量。然而,数据压缩的使用可增加存储器存取等待时间且消耗额外的存储器带宽,因为可需要多个存储器存取请求来检索数据,取决于数据是经压缩的还是未经压缩的。因此,期望使用数据压缩来增加基于CPU的系统12的存储器容量,同时减轻对存储器存取等待时间和存储器带宽的影响。

发明内容

本文所揭示的方面包含在基于中央处理单元(CPU)的系统中使用经压缩存储器控制器(CMC)来提供存储器带宽压缩。在这点上,在一些方面,CMC经配置以提供针对存储器读取请求和/或存储器写入请求的存储器带宽压缩。根据一些方面,在接收到对系统存储器中的物理地址的存储器读取请求后,CMC可即刻从主目录和/或从与所述系统存储器中的物理地址相关联的错误校正码(ECC)位读取用于所述物理地址的压缩指示符(CI)。在一些方面中,CI可向CMC提供压缩模式(例如指示数据是经压缩的还是未经压缩的,和/或指示其中经压缩数据存储在所述物理地址处的存储器块的数目)。基于所述CI,CMC确定将为所述存储器读取请求读取的存储器块的数目,且读取在所述物理地址处开头的所述所确定数目的存储器块。在一些方面,在接收到对所述系统存储器中的物理地址的存储器写入请求后,CMC可即刻为将写入的写入数据确定压缩模式,且可基于所述压缩模式产生用于所述写入数据的CI。CMC接着可更新主目录和/或与所述物理地址相关联的ECC位,且基于所产生的CI将写入数据写入到系统存储器。CMC的一些方面可进一步提供用于高速缓存先前读取的CI的CI高速缓冲存储器。以此方式,CMC可更高效地读取和写入经压缩和未经压缩的数据,从而产生减少的存储器存取等待时间和改进的系统性能。

在另一方面,提供CMC。CMC包括存储器接口,其经配置以经由系统总线存取系统存储器。CMC经配置以接收存储器读取请求,其包括将在系统存储器中的存储器线内存取的存储器块的物理地址。CMC进一步经配置以从所述系统存储器中的主目录读取含有对应于所述物理地址的CI的主目录存储器块。CMC还经配置以基于所述CI确定系统存储器中的所述存储器线内的存储器块的数目,来为所述存储器读取请求读取。CMC另外经配置以在所述物理地址处开始读取系统存储器中的所述存储器线内的所述所确定数目的存储器块。

在另一方面,提供CMC。CMC包括存储器接口,其经配置以经由系统总线存取系统存储器。CMC经配置以接收包括写入数据的存储器写入请求,以及待写入在系统存储器中的存储器线内的存储器块的物理地址。CMC进一步经配置以为所述写入数据确定压缩模式。CMC还经配置以基于所述压缩模式产生用于写入数据的CI。CMC另外经配置以用所产生的CI来更新所存储的对应于主目录中的物理地址的CI。CMC进一步经配置以基于所产生的CI,将所述写入数据写入到所述系统存储器中的所述存储器线中的一或多个存储器块。CMC还经配置以将所产生的CI写入到系统存储器的所述存储器线中的一或多个存储器块中的每一者的一或多个ECC位中。

在另一方面,提供一种用于为存储器读取请求提供存储器带宽压缩的方法。所述方法包括通过CMC经由系统总线接收存储器读取请求,其包括将在系统存储器中的存储器线内存取的存储器块的物理地址。所述方法进一步包括从所述系统存储器中的主目录读取含有对应于物理地址的CI的主目录存储器块。所述方法还包括基于所述CI确定将为所述存储器读取请求读取的系统存储器中的存储器线内的存储器块的数目。方法另外包括在所述物理地址处开始读取系统存储器中的所述存储器线内的所述所确定数目的存储器块。

在另一方面,提供一种用于为存储器写入请求提供存储器带宽压缩的方法。所述方法包括通过CMC经由系统总线接收包括写入数据的存储器写入请求,以及待写入在系统存储器中的存储器线内的存储器块的物理地址。所述方法进一步包括为所述写入数据确定压缩模式。所述方法还包括基于所述压缩模式产生用于所述写入数据的CI。所述方法另外包括用所述所产生的CI来更新所存储的对应于主目录中的物理地址的CI。所述方法进一步包括基于所产生的CI,将所述写入数据写入到所述系统存储器中的所述存储器线中的一或多个存储器块。所述方法还包括将所产生的CI写入到系统存储器的所述存储器线中的一或多个存储器块中的每一者的一或多个ECC位中。

在其它方面中,揭示可非常适合小数据块压缩的压缩方法和格式。这些压缩方法和格式可用于本文所揭示的存储器带宽压缩方面。

对于这些CMC和压缩机制的一些或所有方面,可有可能减少存储器存取等待时间,且有效地增加基于CPU的系统的存储器带宽,同时减少物理存储器大小的增加,且最小化对系统性能的影响。

附图说明

图1是包含基于中央处理单元(CPU)的系统的示范性芯片上系统(SoC)的示意图;

图2是包含具有多个CPU的示范性基于CPU的系统以及经配置以提供存储器带宽压缩的经压缩存储器控制器(CMC)的SoC的示意图;

图3是图2的CMC的较详细示意图,其中所述CMC进一步以通信方式耦合到可用于提供存储器带宽压缩的任选的内部存储器;

图4是可由图3的CMC实施的示范性存储器带宽压缩机制的示意图;

图5说明图1的SoC的实例,其包含任选的等级4(L4)高速缓冲存储器以补偿归因于CMC中的地址翻译的性能损失;

图6A和6B分别是说明存储器读取操作和存储器写入操作期间的示范性通信流,以及可由图3的CMC存取以用于提供存储器带宽压缩的图4的系统存储器和主目录的示范性元件的图;

图7是说明用于使用存储器带宽压缩来执行图6A的CMC的存储器读取操作的示范性操作的流程图;

图8是说明用于使用存储器带宽压缩来执行图6B的CMC的存储器写入操作的示范性操作的流程图;

图9A和9B分别是说明存储器读取操作和存储器写入操作期间的示范性通信流,以及可由图3的CMC的一些方面提供以用于提供存储器带宽压缩的压缩指示符(CI)高速缓冲存储器的示范性元件的图;

图10A到10C是说明用于使用CI高速缓冲存储器来执行图9A的CMC的存储器读取操作的示范性操作的流程图;

图11A到11C是说明使用CI高速缓冲存储器来执行图9B的CMC的存储器写入操作的示范性操作的流程图;

图12到18说明示范性数据块压缩格式和机制,其中的任何一者可由图3的CMC用来压缩和解压缩存储器数据块;以及

图19是可包含使用图2的CMC的的图1的SoC的示范性计算装置的框图。

具体实施方式

现参考各图,描述本发明的若干示范性方面。词语“示范性”在本文中用于表示“充当实例、例子或说明”。本文中描述为“示范性”的任何方面未必解释为比其它方面优选或有利。

本文所揭示的方面包含在基于中央处理单元(CPU)的系统中使用经压缩存储器控制器(CMC)来提供存储器带宽压缩。在这点上,在一些方面,CMC经配置以提供针对存储器读取请求和/或存储器写入请求的存储器带宽压缩。根据一些方面,在接收到对系统存储器中的物理地址的存储器读取请求后,CMC可即刻从主目录和/或从与所述系统存储器中的物理地址相关联的错误校正码(ECC)位读取用于所述物理地址的压缩指示符(CI)。在一些方面中,CI可向CMC提供压缩模式(例如指示数据是经压缩的还是未经压缩的,和/或指示其中经压缩数据存储在所述物理地址处的存储器块的数目)。基于所述CI,CMC确定将为所述存储器读取请求读取的存储器块的数目,且读取在所述物理地址处开头的所述所确定数目的存储器块。在一些方面,在接收到对所述系统存储器中的物理地址的存储器写入请求后,CMC可即刻为将写入的写入数据确定压缩模式,且可基于所述压缩模式产生用于所述写入数据的CI。CMC接着可更新主目录和/或与所述物理地址相关联的ECC位,且基于所产生的CI将写入数据写入到系统存储器。CMC的一些方面可进一步提供用于高速缓存先前读取的CI的CI高速缓冲存储器。以此方式,CMC可更高效地读取和写入经压缩和未经压缩的数据,从而产生减少的存储器存取等待时间和改进的系统性能。

在这点上,图2是包含类似于图1中的基于CPU的系统12的具有多个CPU块14(1)到14(N)的示范性基于CPU的系统12'的SoC 10'的示意图。图2中的基于CPU的系统12'包含一些与图1中的基于CPU的系统12共用的组件,其由图1和2之间的共用元件编号表示。为了简洁起见,将不再描述这些元件。然而,在图2中的基于CPU的系统12'中,提供CMC 36。CMC 36控制对系统存储器38的存取。作为非限制性实例,系统存储器38可包括一或多个双数据速率(DDR)动态随机存取存储器(DRAM)40(1)到40(R)(下文称为“DRAM 40(1)到40(R)”)。在此实例中,CMC 36使用根据本文和下文所揭示的方面的存储器带宽压缩。类似于图1的基于CPU的系统12的存储器控制器24,图2中的基于CPU的系统12'中的CMC 36通过内部系统总线22由CPU块14(1)到14(N)共享。

为了说明图2中的CMC 36的示范性内部组件的较详细示意图,提供图3。在此实例中,在来自含有图2中的CPU块14(1)到14(N)的半导体裸片46(1)、46(2)的单独半导体裸片44上提供CMC 36。或者,在一些方面中,可将CMC 36包含于具有CPU块14(1)到14(N)的常见半导体裸片(未图示)中。不管裸片配置如何,提供CMC 36,使得CPU块14(1)到14(N)可经由内部系统总线22向CMC 36做出存储器存取请求,且通过CMC 36从存储器接收数据。

继续参看图3,CMC 36控制对系统存储器38的存储器存取的操作,其在图2和3中示出为包括DRAM 40(1)到40(R)。CMC 36包含用以服务存储器存取请求(未图示)的多个存储器接口(MEM I/F)48(1)到48(P)(例如DDR DRAM接口)在这点上,在此实例中,CMC 36包含压缩控制器50。压缩控制器50响应于来自图2中的CPU块14(1)到14(N)的存储器存取请求,控制压缩存储到系统存储器38的数据以及解压缩从系统存储器38检索的数据。以此方式,CPU块14(1)到14(N)可具备大于CMC 36所存取的存储器的实际容量的虚拟存储器地址空间。压缩控制器50还可经配置以执行经由内部系统总线22提供到CPU块14(1)到14(N)的信息的带宽压缩。

如下文将更详细地论述,压缩控制器50可执行任何数目的压缩技术和算法,来提供存储器带宽压缩。为压缩控制器50所需的数据结构和其它信息提供本地存储器52,以执行此类压缩技术和算法。在这点上,以静态随机存取存储器(SRAM)54的形式提供本地存储器52。本地存储器52具有将用于压缩控制器50可需要用来执行压缩技术和算法的数据结构和其它数据存储的足够大小。本地存储器52还可经分割以含有高速缓冲存储器,例如等级4(L4)高速缓冲存储器,以提供额外的高速缓冲存储器用于在CMC 36内内部使用。因此,L4控制器55还可提供于CMC 36中,以提供对L4高速缓冲存储器的存取。如下文将更详细地论述,增强型压缩技术和算法可需要较大的内部存储器。举例来说,本地存储器52可提供128千字节(kB)的存储器。

另外,如图3中示出且如将在下文更详细地描述,还可为CMC 36提供任选的额外内部存储器56。作为一实例,可提供额外内部存储器56作为DRAM。如下文将更详细地论述,额外内部存储器56可促进额外的或比用于CMC 36的本地存储器52中大的量的数据结构和其它数据的存储,其提供存储器压缩和解压缩机制来增加基于CPU的系统12'的存储器带宽压缩。在CMC 36中提供内部存储器控制器58来控制对用于压缩中的额外内部存储器56的存储器存取。内部存储器控制器58不可供CPU块14(1)到14(N)存取或检视。

如上所述,图3中的CMC 36可执行存储器带宽压缩,在一些方面中包含零线压缩。本地存储器52可用以存储用于此类压缩的较大数据结构。如下文更详细地论述,存储器带宽压缩可减少存储器存取等待时间,且允许较多的CPU 16(1)、16(2)或其相应线程存取相同数目的存储器信道,同时最小化对存储器存取等待时间的影响。在一些方面,如果CMC 36不执行此类压缩,那么与存储器信道的较大数目相比,可减小存储器信道的数目,同时实现类似的等待时间结果,这可导致减少的系统层级电力消耗。

为图3中的CMC 36中的存储器带宽压缩提供的资源中的每一者,包含本地存储器52和额外的内部存储器56,可个别地或彼此结合使用,以实现资源和面积、电力消耗、通过存储器容量压缩而增加的存储器容量,以及通过存储器带宽压缩而增加的性能之间的所要均衡。可按需要启用或停用存储器带宽压缩。另外,可启用或停用上文所述的供CMC 36使用的资源,以实现存储器容量和/或带宽压缩效率、电力消耗和性能之间的所要折衷。现将论述使用可用于CMC 36的这些资源的示范性存储器带宽压缩技术。

在这点上,图4是可由图3的CMC 36实施以提供存储器带宽压缩德示范性存储器带宽压缩机制60的示意图。在存储器带宽压缩机制60中,系统存储器38包括多个存储器线62,其中的每一者与物理地址相关联。所述多个存储器线62中的每一者可由CMC 36使用存储器读取或写入请求(未图示)的物理地址来存取。数据(未图示)可以经压缩或未经压缩形式存储在系统存储器38中的存储器线62中的每一者内。在一些方面,包括CI 64的一或多个ECC位可联合每一存储器线62存储,以指示所述存储器线62是否以经压缩形式存储。以此方式,当执行对系统存储器38的存储器存取请求时,CMC 36可检查与对应于待寻址的物理地址的存储器线62相关联的CI 64,以确定所述存储器线62是否经压缩,作为所述存储器存取请求的处理的一部分。

还在系统存储器38中提供主目录66。主目录66针对系统存储器38中对应于所述物理地址的每个存储器线62含有一个条目68。主目录66还针对每条目68含有一(1)个CI 64,以表示所述存储器线62是否存储为压缩在所述存储器线62中,且如果是,那么在支持多个压缩长度的方面中,压缩模式指示数据的压缩长度。举例来说,如果所述存储器线62的长度是128个字节,且存储在其中的数据可压缩到64个字节或更少,那么主目录66中对应于存储在系统存储器38中的数据的CI 64可设定成指示所述数据存储在128字节存储器线62的前64个字节中。

继续参看图4,在写入操作期间,CMC 36可压缩待写入到系统存储器38中的存储器块。举例来说,压缩数据(例如128个字节或256个字节)。如果经压缩数据块小于或等于系统存储器38的存储器块大小(例如64个字节),那么可写入64个字节,否则写入128个字节。可将256个字节写入为64、128、192、或256个字节,取决于经压缩数据大小。存储在与系统存储器38中的所述存储器线62相关联的一或多个ECC位中的CI 64也可设定成表示所述存储器线62处的数据是否经压缩。

在读取操作实例期间,CMC 36可从主目录66读取CI 64,以确定待读取的数据是否在系统存储器38中经压缩。基于CI 64,CMC 36可从系统存储器38读取待存取的数据。如果待读取的数据在系统存储器38中经压缩,如由CI 64指示,那么CMC 36可用一个存储器读取操作读取整个经压缩数据块。如果数据读取的所述部分在系统存储器38中未经压缩,那么因为待读取的所述存储器线62的额外部分也必须从系统存储器38读取,因此可不利地影响存储器存取等待时间。在一些方面,对于若干地址范围,可使用训练机制,其中CMC 36可经配置以“学习”在一组给定情境下在两次存取中从系统存储器38读取所述数据是否较好,或从系统存储器38读取全部量的数据以避免等待时间影响是否较好。

在图4的实例中,还可在系统存储器38之外的单独高速缓冲存储器中提供CI高速缓冲存储器70。CI高速缓冲存储器70针对系统存储器38中的每个存储器线62提供一个高速缓存条目72,以表示系统存储器38中的存储器线62是否以经压缩形式存储。以此方式,当执行对系统存储器38的存储器存取请求时,CMC 36可首先检查CI高速缓冲存储器70中对应于待寻址的物理地址的高速缓存条目72,以确定是否压缩系统存储器38中的物理地址处的所述存储器线62,作为存储器存取请求的处理的一部分,而不必读取所述存储器线62。因此,如果CI高速缓冲存储器70指示存储器线62存储为经压缩,那么CMC 36不必读出整个存储器线62,因此减少等待时间。如果CI高速缓冲存储器70指示存储器线62存储为未经压缩,那么CMC 36可读出整个存储器线62。如果CI高速缓冲存储器70中发生未中,那么可查询存储在主目录66中的对应CI 64,并将其加载到CI高速缓冲存储器70中,以用于对同一物理地址的后续存储器存取请求。

在一些方面,CI高速缓冲存储器70可组织为常规高速缓冲存储器。CI高速缓冲存储器70可含有标记阵列,且可组织为n向关联高速缓冲存储器,作为非限制性实例。CMC 36可相对于CI高速缓冲存储器70实施收回策略。在图4中所示的CI高速缓冲存储器70中,每一高速缓冲存储器线74可存储多个高速缓存条目72。每一高速缓存条目72可含有CI 76以指示系统存储器38中与高速缓存条目72相关联的存储器线62经压缩,和/或表示指示对应于高速缓存条目72的数据的压缩大小的压缩模式。举例来说,CI 76可包括两(2)个位,其表示四(4)个潜在压缩大小(例如32、64、96或128个字节)。注意,在此实例中,CI 64是冗余的,因为此信息也存储在高速缓存条目72中的CI 76中。举例来说,如果存储器线62的长度是128个字节,且存储在其中的数据可压缩到64个字节或更少,那么CI高速缓冲存储器70中对应于系统存储器38中的存储器线62的高速缓存条目72中的CI 76可设定成指示所述数据存储在128字节存储器线62的前64个字节中。

还可希望为存储器带宽压缩机制提供额外高速缓冲存储器。在这点上,图5说明类似于图2中的SoC 10'的替代SoC 10”的实例,但图5中的SoC 10”另外包含任选的高速缓冲存储器78,其在此实例中为L4高速缓冲存储器。CMC 36可同时查找L4高速缓冲存储器78和CI高速缓冲存储器70两者中的物理地址,以最小化等待时间。L4高速缓冲存储器78中的地址是未经压缩的物理地址。在L4高速缓冲存储器78中的物理地址命中后,CI高速缓冲存储器70中的物理地址查找即刻为冗余。在L4高速缓冲存储器78中的物理地址未中后,需要CI高速缓冲存储器70中的物理地址查找来从系统存储器38获得数据。并且,为了避免CPU 16存取L4高速缓冲存储器78和CI高速缓冲存储器70两者的额外等待时间,L4高速缓冲存储器78和CI高速缓冲存储器70可为启发的。

提供图6A和6B来说明可由图3的CMC 36存取以用于提供存储器带宽压缩的图4的系统存储器38和主目录66的示范性通信流和示范性元件。明确地说,分别地,图6A说明存储器读取操作期间的示范性通信流,而图6B说明存储器写入操作期间得示范性通信流。为描述图6A和6B时,为清楚起见,参考图3和4的元件。

在图6A和6B中,系统存储器38包含用于存储经压缩和未经压缩数据的多个存储器线80(0)到80(X)。存储器线80(0)到80(X)各自细分为相应的存储器块82(0)到82(Z)以及84(0)到84(Z),如由系统存储器38的基础存储器架构确定。在一些方面,存储器块82(0)到82(Z)、84(0)到84(Z)中的每一者的大小表示在存储器读取操作中可从系统存储器38读取的数据的最小量。举例来说,在一些示范性存储器架构中,存储器线80(0)到80(X)中的每一者可包括128个字节的数据,细分为两个64字节存储器块82(0)到82(Z)、84(0)到84(Z)。一些方面可假定存储器线80(0)到80(X)中的每一者可包括较多或较少字节的数据(例如256个字节或64个字节,作为非限制性实例)。类似地,根据一些方面,存储器线80(0)到80(X)内的存储器块82(0)到82(Z)、84(0)到84(Z)可较大或较小(例如128个字节或32个字节,作为非限制性实例)。在一些方面,存储器读取操作可读取比所述存储器块82(0)到82(Z)、84(0)到84(Z)中的每一者的大小少的字节,但仍消耗与存储器块82(0)到82(Z)、84(0)到84(Z)中的一者相同量的存储器带宽。

存储器块82(0)到82(Z)、84(0)到84(Z)中的每一者与一或多个对应ECC位86(0)到86(Z)、88(0)到88(Z)相关联。按照惯例使用例如ECC位86(0)到86(Z)、88(0)到88(Z)等ECC位来检测和校正存储器块82(0)到82(Z)、84(0)到84(Z)内的通常碰到的类型的内部数据讹用。在图6A和6B的实例中,可使ECC位86(0)到86(Z)、88(0)到88(Z)中的一或多者改变用途为存储用于相应存储器块82(0)到82(Z)、84(0)到84(Z)的CI 90(0)到90(Z)、92(0)到92(Z)。尽管将图6A和6B中的ECC位86(0)到86(Z)、88(0)到88(Z)描绘为邻近于其相应的存储器块82(0)到82(Z)、84(0)到84(Z),但应理解,位86(0)到86(Z)、88(0)到88(Z)可位于系统存储器38内的其它地方。

在图6A和6B的实例中,系统存储器38还包含主目录66,其包含多个主目录存储器块94(0)到94(Y)。主目录存储器块94(0)到94(Y)中的每一者具有与存储器块82(0)到82(Z)、84(0)到84(Z)相同的大小。主目录存储器块94(0)到94(Y)存储CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W),其中的每一者对应于存储器块82(0)到82(Z)、84(0)到84(Z)中的一者的物理地址。如下文更详细地论述,在一些方面,存储在ECC位86(0)到86(Z)、88(0)到88(Z)中的CI 90(0)到90(Z)、92(0)到92(Z),以及存储在主目录存储器块94(0)到94(Y)中的CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)可维持,以便针对存储器块82(0)到82(Z)、84(0)到84(Z)中的给定一者,始终存储相同的值。一些方面可假定与主目录存储器块94(0)到94(Y)中的CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)相比,存储在ECC位86(0)到86(Z)、88(0)到88(Z)中的CI 90(0)到90(Z)、92(0)到92(Z)可更频繁地更新。

CI 90(0)到90(Z)、92(0)到92(Z)以及CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)各自可包括一或多个位,其指示存储在系统存储器38的对应存储器块82(0)到82(Z)、84(0)到84(Z)处的数据的压缩状态。在一些方面,CI 90(0)到90(Z)、92(0)到92(Z)以及CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)中的每一者可包括单个位,其指示对应存储器块82(0)到82(Z)、84(0)到84(Z)中的数据是经压缩的还是未经压缩的。根据一些方面,CI 90(0)到90(Z)、92(0)到92(Z)以及CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)中的每一者可包括多个位,其可用于指示对应存储器块82(0)到82(Z)、84(0)到84(Z)中的每一者的压缩模式(例如若干存储器块82(0)到82(Z)、84(0)到84(Z)由经压缩数据占用,作为非限制性实例)。

在图6A的实例中,指定物理地址104的存储器读取请求102由CMC 36接收,如由箭头106指示。出于说明的目的,在此实例中,假定物理地址104对应于存储器块82(0),其为128字节存储器线80(0)的64字节分部。在接收到存储器读取请求102时,CMC 36不知道存储在存储器块82(0)处的数据是否经压缩。CMC 36可继续读取整个存储器线80(0),但如果所请求的数据以经压缩形式仅存储在存储器块82(0)中,那么存储器块82(Z)的读取将是不必要的,且将导致增加的存储器存取等待时间。或者,CMC 36可仅读取存储器块82(0),基于其内容确定存储在其中的数据是否经压缩,且接着如果所述数据未经压缩,那么读取存储器块82(Z)。然而,此方法还可导致因发布两个单独的存储器读取操作而产生的增加的存储器存取等待时间。因此,在不知道存储器块82(0)的压缩状态的情况下,CMC 36冒险执行可不利地影响存储器存取等待时间的不必要的存储器读取操作。

通过使用CI 90(0)到90(Z)、92(0)到92(Z)和/或CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W),CMC 36可确定应读取多少存储器块82(0)到82(Z),来确保用于给定存储器读取请求102的所有数据(经压缩或未经压缩)均高效地从系统存储器38读取。因此,在接收到存储器读取请求102之后,CMC 36可读取主目录66的主目录存储器块94(0),以存取对应于存储器块82(0)的物理地址104的CI 96(0),如由箭头108指示。CI 96(0)接着可由CMC 36用来确定读取存储器线80(0)内的多少存储器块82(0)到82(Z),来确保存储器读取请求102所请求的数据被高效地检索。

在一些方面,CMC 36可通过确定CI 96(0)所指示的压缩模式(未图示)来确定读取多少存储器块82(0)到82(X)。在以上实例中,CI 96(0)可为单个位,其指示所述数据是经压缩的(即,应仅读取存储器块82(0))或未经压缩的(即,应读取存储器块82(0)和82(Z)两者)。根据其中系统存储器38的存储器线80(0)到80(X)各自含有两个以上存储器块82(0)到82(Z)、84(0)到84(Z)的方面,CI 96(0)可包括多个位,其指示多少存储器块82(0)到82(Z)含有经压缩数据。举例来说,如果存储器线80(0)到80(X)是细分为四个64字节存储器块82(0)到82(Z)的256字节存储器线,那么CI 96(0)可指示经压缩数据存储在64字节、128字节或192字节(分别对应于存储器块82(0)、存储器块82(0)到82(1)以及存储器块82(0)到82(2))中。基于CI 96(0),CMC 36接着可发布适当数目的存储器读取操作,来读取存储器线80(0)内的所述所确定数目的存储器块82(0)到82(Z),如由箭头110指示。一些方面可假定CMC 36可确定CI 96(0)所指示的压缩模式包括零线指示符,其向CMC 36指示存储在物理地址104处的数据全部由零值组成。在此情况下,CMC 36可读取零存储器块82(0)到82(Z)。根据一些方面,CMC 36可确定CI 96(0)所指示的压缩模式包括存储在物理地址104处的其它固定数据模式的指示符(例如全一(1),作为非限制性实例)。

在一些方面,对于CMC 36接收到的存储器读取请求102的仅某一百分比,可能需要从主目录66读取CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)。举例来说,在一些方面,可仅针对CMC 36接收到的存储器读取请求102的百分之十(10%)存取主目录66。在此些方面中,在接收到存储器读取请求102后,CMC 36可概率性地确定(例如基于随机数产生器(未图示))是否从主目录66读取用于存储器块82(0)的CI 96(0),或者是否从ECC位86(0)读取用于存储器块82(0)的CI 90(0)。在后一种情况下,CMC 36可读取CI 90(0),如虚线箭头112所指示,且在使用CI 90(0)来确定从存储器线80(0)读取多少存储器块82(0)到82(Z)。

现参看图6B,CMC 36接收存储器写入请求114,如由箭头116指示。存储器写入请求114包含待写入到系统存储器38的写入数据118,以及写入数据118待写入到的系统存储器38的物理地址104两者。出于说明的目的,再次假定物理地址104对应于存储器块82(0)。在接收到存储器写入请求114后,CMC 36可即刻进行操作来压缩写入数据118,且基于压缩写入数据118的结果,可确定用于写入数据118的压缩模式。作为非限制性实例,压缩模式可指示写入数据118是否成功地压缩,和/或经压缩写入数据118所占用的存储器块82(0)到82(Z)的数目。基于所述压缩模式,CMC 36产生用于写入数据118的CI 120。

CMC 36接着可用所述所产生的CI 120来更新存储在主目录66中的用于存储器块82(0)的物理地址104的CI 96(0),如由箭头122指示。根据一些方面,可为CMC 36接收到的存储器写入请求114的仅某一百分比更新主目录66。举例来说,在一些方面,可仅针对CMC 36接收到的存储器写入请求114的百分之十(10%)更新主目录66。因此,在此些方面中,CMC 36可概率性地确定(例如基于随机数产生器(未图示))是否更新所存储的用于主目录66中的存储器块82(0)的CI 96(0)。如果不更新,那么可忽略此操作。CMC 36接着将写入数据118写入到存储器块82(0)到82(Z)中的一或多者,如由箭头124指示。CMC 36还将所产生的CI 120写入到存储在写入数据118写入到的一或多个存储器块82(0)到82(Z)的ECC位86(0)到86(Z)中的CI 90(0)到90(Z),如由箭头126指示。

图7是说明图3的CMC 36使用存储器带宽压缩来执行存储器读取操作的示范性操作的流程图,如相对于图6A所论述。为清楚起见,在描述图7时参考图2、3和6A的元件。在图7中,操作以CMC 36经由内部系统总线22接收存储器读取请求102开始,所述存储器读取请求包括将在系统存储器38中的存储器线80(0)内存取的存储器块82(0)的物理地址104(框128)。在一些方面,CMC 36任选地可概率性地确定是否应从主目录66读取CI 96(0)(框130)。如果CMC 36确定不应从主目录66读取CI 96(0),那么CMC 36连同读取存储器块82(0)从一或多个ECC位86(0)读取CI 90(0),且使用CI 90(0)作为CI 96(0)(框132)。然而,如果CMC 36不使用概率确定,或如果CMC 36在决策框130处概率性地确定应从主目录66读取CI 96(0),那么CMC 36从系统存储器38中的主目录66读取含有对应于物理地址104的CI 96(0)的主目录存储器块94(0)(框134)。

CMC 36接着基于CI 96(0)确定系统存储器38中的存储器线80(0)内的存储器块82(0)到82(Z)的数目,来为存储器读取请求102读取(框136)。在一些方面,框136的用于确定要读取的存储器块82(0)到82(Z)的数目的操作可包括确定CI 96(0)所指示的压缩模式(框138)。举例来说,CMC 36可确定CI 96(0)包括零线指示符,其指示应读取零存储器块82(0)到82(Z)(框140)。CMC 36接着在物理地址104处开始读取系统存储器38中的存储器线80(0)内的所述所确定数目的存储器块82(0)到82(Z)(框142)。

为了说明图3的CMC 36使用存储器带宽压缩来执行存储器写入操作的示范性操作,如上文相对于图6B所论述,提供图8。在这点上,为清楚起见,在描述图8时参考图2、3和6B的元件。图8中的操作以CMC 36经由内部系统总线22接收存储器写入请求114开始,所述存储器写入请求包括写入数据118以及将写入在系统存储器38中的存储器线80(0)内的存储器块82(0)的物理地址104(框144)。在尝试压缩写入数据118之后,CMC 36确定写入数据118的压缩模式(例如写入数据118是否经压缩,和/或需要多少存储器块82(0)到82(Z)来存储写入数据118)(框146)。基于所述压缩模式,CMC 36基于所述压缩模式产生用于写入数据118的CI 120(框148)。

根据一些方面,CMC 36任选地可概率性地确定存储在主目录66中的CI 96(0)是否应更新(框150)。如果CMC 36确定主目录66中所存储的CI 96(0)不应更新,那么处理在图8的框152处恢复。然而,如果CMC 36在决策框150处确定主目录66中所存储的CI 96(0)应更新,或如果CMC 36不使用概率性确定,那么CMC 36用所述所产生的CI 120来更新所存储的对应于主目录66中的物理地址104的CI 96(0)(框154)。

CMC 36接下来基于所产生的CI 120将写入数据118写入到系统存储器38中的存储器线80(0)中的存储器块82(0)到82(Z)中的一或多者(框152)。CMC 36还将所产生的CI 120写入到系统存储器38的存储器线80(0)中的存储器块82(0)到82(Z)中的每一者的一或多个ECC位86(0)到86(Z)中(框156)。在一些方面,将所产生的CI 120写入到ECC位86(0)中,作为将写入数据118写入到第一存储器块82(0)的相同存储器写入操作的一部分。

如上文相对于图4所提到,CMC 36所提供的存储器带宽压缩在一些方面可通过图4的CI高速缓冲存储器70的使用进一步增强。在这点上,提供图9A和9B,来说明可由图3的CMC 36存取以用于提供存储器带宽压缩的CI高速缓冲存储器70的示范性通信流和示范性元件。明确地说,图9A和9B分别使用CI高速缓冲存储器70来说明存储器读取操作和存储器写入操作期间的示范性通信流。在描述图9A和9B时,为清楚起见,参考图3、4、6A和6B的元件。

如图9A中所见,CMC 36的CI高速缓冲存储器70包含存储高速缓存的CI 160(0)到160(W)、162(0)到162(W)以及164(0)到164(W)的多个CI高速缓存条目158(0)到158(T)。高速缓存条目158(0)到158(T)中的每一者具有与主目录存储器块94(0)到94(Y)相同的大小,且在一些方面,经配置以存储在CMC 36的存储器读取操作或存储器写入操作的过程中读取的主目录存储器块94(0)到94(Y)中的一者。以此方式,CMC 36可在后续的存储器读取操作和存储器写入操作上存取高速缓存的CI 160(0)到160(W)、162(0)到162(W)和164(0)到164(W),而不必存取系统存储器38来读取CI 90(0)到90(Z)、92(0)到92(Z)和/或CI 96(0)到96(W)、98(0)到98(W)、100(0)到100(W)。因为与从系统存储器38读取和写入到系统存储器38相比,CMC 36可更快地从CI高速缓冲存储器70读取和写入到CI高速缓冲存储器70,因此CI高速缓冲存储器70的使用可使CMC 36能够进一步减少存储器存取等待时间。

在图9A的实例中,提供CI高速缓冲存储器70的CMC 36接收包括物理地址104的存储器读取请求102,如由箭头166指示。假定物理地址104对应于系统存储器38的存储器线80(0)的存储器块82(0)。CMC 36接着可确定物理地址104是否对应于CI高速缓存条目158(0)到158(T)中的一者。如果CI高速缓存条目158(0)到158(T)中的一者,例如CI高速缓存条目158(0),对应于存储器块82(0)的物理地址104(即,高速缓冲存储器“命中”),那么CMC 36已识别包含用于存储器块82(0)的CI指示符(例如CI 160(0))的CI高速缓存条目158(0)。CMC 36接着从CI高速缓冲存储器70的CI高速缓存条目158(0)读取CI 160(0),且基于所述CI 160(0)确定要读取的存储器块82(0)到82(Z)的数目,如上文相对于图6A所论述。

然而,如果CMC 36确定物理地址104不对应于CI高速缓存条目158(0)到158(T)中的任一者,那么CMC 36可读取主目录66的主目录存储器块94(0),以存取对应于存储器块82(0)的物理地址104的CI 96(0),如由箭头168指示。如上所述,在一些方面,可能需要CMC 36为CMC 36接收到的存储器读取请求102的仅某一百分比读取主目录66。因此,在此些方面中,CMC 36可概率性地确定(例如基于随机数产生器(未图示))是否从主目录66读取主目录存储器块94(0),或者是否从ECC位86(0)读取用于存储器块82(0)的CI 90(0)。在后一种情况下,CMC 36可读取CI 90(0),如由虚线箭头170指示。CMC 36接着可使用CI 90(0),而不进一步更新CI高速缓冲存储器70。

CMC 36接着可将主目录存储器块94(0)作为新的CI高速缓存条目158(0)写入到CI高速缓冲存储器70中。在一些方面,在将主目录存储器块94(0)作为新的CI高速缓存条目158(0)写入之前,CI高速缓冲存储器70可首先确定是否必须收回当前CI高速缓存条目158(0)。如果是,那么那么CI高速缓冲存储器70可进一步确定自从写入到CI高速缓冲存储器70开始是否当前CI高速缓存条目158(0)是否已经修改(例如通过确定自从从主目录66读取开始至少一个高速缓存的CI 160(0)到160(W)是否已改变)。在一些方面,CI高速缓冲存储器70可通过检查来看与当前CI高速缓存条目158(0)相关联的重写状态位(未图示)是否已设定,来确定当前CI高速缓存条目158(0)是否已经修改。如果当前CI高速缓存条目158(0)已经修改,那么CMC 36将当前CI高速缓存条目158(0)写入到主目录存储器块94(0)到94(Y)中的所述对应一者。CMC 36接着从CI高速缓冲存储器70的CI高速缓存条目158(0)读取CI 160(0),且基于所述CI 160(0)确定要读取的存储器块82(0)到82(Z)的数目,如上文所论述。接着CMC 36读取所述所确定数目的存储器块82(0)到82(Z),如由箭头172指示。

在一些方面,CMC 36可基于存储器读取请求102向系统存储器38发出早期存储器读取请求174,同时确定物理地址104是否对应于CI高速缓存条目158(0)到158(T)中的一者。早期存储器读取请求174可与CMC 36基于CI 160(0)确定要读取的存储器块82(0)到82(Z)的数目并行地处理。在确定要读取的存储器块82(0)到82(Z)的数目后,可即刻基于CI 160(0)修改早期存储器读取请求174。作为非限制性实例,可修改早期存储器读取请求174,以读取所述所确定数目的存储器块82(0)到82(Z)。以此方式,可通过早期存储器读取请求174和所述CI高速缓冲存储器70读取和/或写入的并行处理来提供额外的存储器带宽压缩和减少的存储器存取等待时间。

此外,根据上文相对于图5所论述的一些方面,CMC 36还可执行高速缓冲存储器读取操作(未图示),以在L4高速缓冲存储器78中查找物理地址104,同时确定物理地址104是否对应于CI高速缓冲存储器70中的CI高速缓存条目158(0)到158(T)中的一者。藉此,CMC 36可进一步最小化存储器存取等待时间。

现参看图9B,CMC 36接收存储器写入请求114,如由箭头176指示。存储器写入请求114包含待写入到系统存储器38的写入数据118,以及写入数据118待写入到的系统存储器38的物理地址104两者。出于说明的目的,再次假定物理地址104对应于存储器块82(0)。在接收到存储器写入请求114后,CMC 36可即刻进行操作来压缩写入数据118,且基于压缩写入数据118的结果,可确定用于写入数据118的压缩模式。作为非限制性实例,压缩模式可指示写入数据118是否成功地压缩,和/或经压缩写入数据118所占用的存储器块82(0)到82(Z)的数目。基于所述压缩模式,CMC 36产生用于写入数据118的CI 120。

CMC 36接着可确定物理地址104是否对应于CI高速缓存条目158(0)到158(T)中的一者。如果CI高速缓存条目158(0)到158(T)中的一者,例如CI高速缓存条目158(0),对应于存储器块82(0)的物理地址104(即,高速缓冲存储器“命中”),那么CMC 36已识别包含用于存储器块82(0)的CI指示符(例如CI 160(0))的CI高速缓存条目158(0)。因此,CMC 36用所述所产生的CI 120更新CI高速缓存条目158(0)的CI 160(0),如由箭头178指示。CMC 36接下来将写入数据118写入到存储器线80(0)中的存储器块82(0)到82(Z)中的一或多者,如由箭头180指示。CMC 36还将所产生的CI 120写入到所述写入数据118写入到的存储器块82(0)到82(Z)中的一或多者的ECC位86(0)到86(Z)中的一或多者中,如由箭头182指示。根据一些方面,将所产生的CI 120写入到ECC位86(0)中,作为将写入数据118写入到第一存储器块82(0)的相同存储器写入操作的一部分。

然而,如果CMC 36确定物理地址104不对应于CI高速缓存条目158(0)到158(T)中的任一者(即,高速缓冲存储器未中),那么CMC 36可用所述所产生的CI 120来更新所存储的对应于主目录66中的物理地址104的CI 96(0),如由箭头184指示。CMC 36接着可将主目录存储器块94(0)作为新的CI高速缓存条目158(0)写入到CI高速缓冲存储器70中,如由箭头186指示。在一些方面,在将主目录存储器块94(0)作为新的CI高速缓存条目158(0)写入之前,CI高速缓冲存储器70可首先确定是否必须收回当前CI高速缓存条目158(0)。如果是,那么CI高速缓冲存储器70可进一步确定自从写入到CI高速缓冲存储器70中开始,当前CI高速缓存条目158(0)是否已经修改。在一些方面,CI高速缓冲存储器70可通过检查来看与当前CI高速缓存条目158(0)相关联的重写状态位(未图示)是否已设定,来确定当前CI高速缓存条目158(0)是否已经修改。如果当前CI高速缓存条目158(0)已经修改,那么在将主目录存储器块94(0)作为新的CI高速缓存条目158(0)写入到CI高速缓冲存储器70之前,CMC 36将当前CI高速缓存条目158(0)写入到主目录存储器块94(0)到94(Y)中的所述对应一者,如由箭头188指示。

在一些方面,针对CMC 36接收到的存储器写入请求114的仅某一百分比,可响应于CI高速缓冲存储器70中的高速缓冲存储器未中,更新主目录66。因此,在此些方面中,CMC 36可概率性地确定(例如基于随机数产生器(未图示))是否更新所存储的用于主目录66中的存储器块82(0)的CI 96(0)。如果不是,那么省略上文相对于高速缓冲存储器未中所述的操作(即,既不更新主目录66也不更新CI高速缓冲存储器70,且所产生的CI 120存储在存储器块82(0)到82(Z)中的一或多者的ECC位86(0)到86(Z)中)。

图10A到10C是说明用于通过图3的CMC 36使用图9A和9B的CI高速缓冲存储器70执行存储器读取操作的示范性操作的流程图。明确地说,图10A说明用于接收存储器读取请求102并确定CI高速缓冲存储器70针对对应于存储器读取请求102的物理地址104的CI 160(0)的搜索导致命中还是未中的操作。图10B说明由于CI高速缓冲存储器70上的高速缓冲存储器未中而进行的操作,而图10C说明由于CI高速缓冲存储器70上的高速缓存命中而进行的操作。清楚起见,在描述图10A到10C时,参考图2、3和9A的元件。

图10A中的操作以CMC 36经由内部系统总线22接收存储器读取请求102开始,所述存储器读取请求包括将在系统存储器38中的存储器线80(0)内存取的存储器块82(0)的物理地址104(框190)。在一些方面,CMC 36可将早期存储器读取请求174发送到系统存储器38,同时进行后续操作(框192)。根据一些方面,CMC 36可在L4高速缓冲存储器(例如图5的L4高速缓冲存储器78)上执行高速缓冲存储器读取操作,同时进行后续操作(框194)。接着做出关于L4高速缓冲存储器78上的高速缓冲存储器读取操作是否导致高速缓存命中的确定(框195)。如果是,那么传回高速缓冲存储器读取操作的结果,且对系统存储器38的读取变为未决议(框196)。

CMC 36接下来确定物理地址104是否对应于CI高速缓冲存储器70的多个CI高速缓存条目158(0)到158(T)中的CI高速缓存条目158(0)(框197)。如果CMC 36在决策框196处确定物理地址104并不对应于所述多个CI高速缓存条目158(0)到158(T)中的CI高速缓存条目158(0)(即,高速缓冲存储器未中),那么处理在图10B的框198处恢复。如果确定物理地址104对应于CI高速缓存条目158(0)(即,高速缓存命中),那么处理在图10C的框200处恢复。

现参看图10B,在一些方面中,CMC 36可响应于高速缓冲存储器未中,概率性地确定是否应从主目录66读取CI 96(0)(框198)。注意,在此些方面中,存储器块82(0)到82(Z)、84(0)到84(Z)中的一或多者的ECC位86(0)到86(Z)、88(0)到88(Z)将存储CI 90(0)到90(Z)、92(0)到92(Z)。作为非限制性实例,可使用随机数产生器来进行所述概率性确定。如果在决策框198处确定应从主目录66读取CI 96(0),那么CMC 36从系统存储器38中的主目录66读取含有对应于物理地址104的CI 96(0)的主目录存储器块94(0)(框202)。如果CMC 36在决策框198处确定不应从主目录66读取CI 96(0),那么CMC 36从一或多个ECC位86(0)读取CI 90(0),连同读取存储器块82(0)(框204)。处理接着在图10C的框214处恢复。

继续参看图10B,根据一些方面,CMC 36可接下来确定是否应收回CI高速缓冲存储器70的当前CI高速缓存条目158(0)(框206)。如果不应收回,那么处理在图10B的框208处恢复。如果CMC 36在决策框206处确定应收回当前CI高速缓存条目158(0),那么CMC 36接下来确定当前CI高速缓存条目158(0)是否已经修改(框210)。作为非限制性实例,此确定可基于确定用于CI高速缓存条目158(0)的重写状态位是否已设定。如果在决策框210处确定当前CI高速缓存条目158(0)将不变,那么处理在图10B的框208处恢复。否则,CMC 36将当前CI高速缓存条目158(0)写入到主目录66(框212)。接着将主目录存储器块94(0)写入到CI高速缓冲存储器70的CI高速缓存条目158(0)(框208)。处理接着在图10C的框200处恢复。

现在转向图10C,CMC 36从CI高速缓冲存储器70的CI高速缓存条目158(0)读取CI 160(0)(框200)。CMC 36接下来基于所述CI 160(0),确定为存储器读取请求102读取的系统存储器38中的存储器线80(0)内的存储器块82(0)到82(Z)的数目(框214)。CMC 36接着在物理地址104处开始读取系统存储器38中的存储器线80(0)内的所述所确定数目的存储器块82(0)到82(Z)(框216)。在发出早期存储器读取请求174的方面中,框216的用于读取所述所确定数目的存储器块82(0)到82(Z)的操作可包含基于所述CI 160(0)修改早期存储器读取请求174(框218)。

为了说明图3的CMC 36使用图8的CI高速缓冲存储器70执行存储器写入操作的示范性操作,提供图11A到11C。图11A说明用于接收存储器写入请求114并确定CI高速缓冲存储器70针对对应于存储器写入请求114的物理地址104的CI高速缓存条目158(0)到158(T)的搜索导致命中还是未中的操作。图11B说明由于CI高速缓冲存储器70上的高速缓冲存储器未中而进行的操作,而图11C说明由于CI高速缓冲存储器70上的高速缓存命中而进行的操作。清楚起见,在描述图11A到11C时,参考图2、3和9B的元件。

在图11A中,操作以CMC 36经由内部系统总线22存储器写入请求114开始,所述存储器写入请求包括写入数据118以及待写入在系统存储器38中的存储器线80(0)内的存储器块82(0)的物理地址104(框220)。CMC 36为写入数据118确定压缩模式(框222)。在一些方面,压缩模式可指示写入数据118是经压缩的还是未经压缩的,和/或写入数据118占用的存储器块82(0)到82(Z)的数目。基于所述压缩模式,CMC 36基于所述压缩模式产生用于写入数据118的CI 120(框224)。

CMC 36接下来确定物理地址104是否对应于CI高速缓冲存储器70的多个CI高速缓存条目158(0)到158(T)中的CI高速缓存条目158(0)(框226)。如果在决策框226处确定物理地址104不对应于所述多个CI高速缓存条目158(0)到158(T)中的CI高速缓存条目158(0)(即,高速缓冲存储器未中),那么处理在图11B的框228处恢复。然而,如果CMC 36在决策框226处确定物理地址104对应于CI高速缓存条目158(0)(即,高速缓存命中),那么处理在图11C的框230处恢复。

现参看图11B,CMC 36的一些方面可概率性地确定压缩指示符96(0)是否应在主目录66中更新(框228)。如果在决策框228处确定不应更新CI 96(0),那么处理在图11C的框242处恢复。然而,如果CMC 36在决策框228处确定更新CI 96(0),或如果CMC 36不经配置以使用概率性确定,那么CMC 36用所述所产生的CI 120来更新所存储的对应于主目录66中的物理地址104的CI 96(0)(框232)。

在一些方面,CMC 36可接下来确定是否应收回CI高速缓冲存储器70的当前CI高速缓存条目158(0)(框234)。如果不应收回,那么处理在图11B的框236处恢复。如果CMC 36在决策框234处确定应收回当前CI高速缓存条目158(0),那么CMC 36确定当前CI高速缓存条目158(0)是否已经修改(框238)。作为非限制性实例,确定CI高速缓存条目158(0)是否已经修改可包括确定CI高速缓存条目158(0)的重写状态位是否已设定。如果在决策框238处确定当前CI高速缓存条目158(0)将不变,那么处理在图11B的框236处恢复。然而,如果CMC 36在决策框238处确定当前CI高速缓存条目158(0)已经修改,那么CMC 36将当前CI高速缓存条目158(0)写入到主目录66(框240)。CMC 36接着将所存储的CI 96(0)写入到CI高速缓冲存储器70的CI高速缓存条目158(0)(框236)。处理接着在图11C的框242处恢复。

在图11C中,CMC 36用所述所产生的CI 120来更新CI高速缓冲存储器70的CI高速缓存条目158(0)(框230)。CMC 36接着基于所产生的CI 120将写入数据118写入到系统存储器38中的存储器线80(0)中的一或多个存储器块82(0)到82(Z)(框242)。将所产生的CI 120写入到系统存储器38的存储器线80(0)中的一或多个存储器块82(0)到82(Z)中的每一者的一或多个ECC位86(0)到86(Z)中(框244)。在一些方面,将所产生的CI 120写入到ECC位86(0)中,作为将写入数据118写入到第一存储器块82(0)的相同存储器写入操作的一部分。

如上文所论述,可需要提供具有可配置固定数据模式的存储器数据块82(0)到82(Z)的压缩,作为最佳化压缩的特殊情况。举例来说,如果存储器数据块82(0)到82(Z)(例如128个字节)全部为0,那么不读取或写入数据,而是在单独数据结构中表示为全部为0。可在系统存储器38中提供零位,以表示存储器线80(0)到80(X)如果经压缩,从而每存储器数据块82(0)到82(Z)添加一(1)个位。CMC 36可维持高速缓冲存储器,其例如针对若干128字节存储器块82(0)到82(Z),记得块是否全为0。对于写入操作,如果存储器数据块82(0)到82(Z)的线全为0,那么CMC 36并不将所述线写入到系统存储器38,而是更新CI高速缓冲存储器70。对于读取操作,为所述线检查CI高速缓冲存储器70中的零位。如果所述线在CI高速缓冲存储器70中,那么取决于所述零位,从系统存储器38读取所述线,或传回全0。如果所述线不在CI高速缓冲存储器70中,那么其从系统存储器38读取。如果所述线为零,那么可更新CI高速缓冲存储器70。

可根据已知技术(例如LRU、伪LRU等)更新CI高速缓冲存储器70,以收回高速缓冲存储器线74。如果收回线,那么需要将具有其零位集合的所有线写入到主存储器。这可组织为写入全零队列。可能的最佳化将为使用两(2)个位,其中一个位表示所述线是否为全零,且另一位表示所述线是否已使用(即,尚未写入到主存储器)。CMC 36的背景任务可检测CI高速缓冲存储器70,并将具有重写状态位的线排入“写入全零”队列中。使用上文所述的存储器带宽压缩机制,CMC 36可按需要使用不同的存储器压缩机制。举例来说,可希望使用针对小数据块(例如64、128和256个字节)优化的存储器压缩机制,因为上文的实例中所描述的高速缓冲存储器线74包含这些大小作为实例。

在一些方面,包括多个位的CI的值可指示存储于存储器块(例如存储器块82(0)到82(Z)中的一者)中的压缩状态和/或固定数据模式。作为非限制性实例,对于两(2)位的CI,值“00”可指示对应存储器块未经压缩,而值“01”可指示对应存储器块经压缩。值“11”可指示固定模式(例如全零(0)或全1(1))存储在对应存储器块中。在此些方面中,将始终更新而不是在概率性确定之后更新主目录66。

在这点上,图12说明频繁模式压缩数据压缩机制246。在这点上,待经压缩的源数据格式248中的源数据例如示出为128个字节。下文示出经压缩数据格式250。以前缀码Px以及所述前缀后面作为Datax的数据的格式提供经压缩数据格式250。所述前缀为3位。所述前缀码在频繁模式编码表254中的前缀码列252中示出,所述频繁模式编码表示出编码在用于前缀码列252中的给定前缀码的模式经编码列256中的模式。经编码的模式的数据大小提供于频繁模式编码表254的数据大小列258中。

图13说明32位频繁模式压缩数据压缩机制260。在这点上,待压缩的源数据格式262中的源数据例如示出为128个字节。下文示出经压缩数据格式264。以前缀Px以及紧接在所述前缀后面作为Datax的数据的格式提供经压缩数据格式264。以不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式266,其经组织以出于效率目的而分组在一起。所述前缀码为3位。所述前缀码在频率模式编码表270中的前缀码列268中示出,其示出编码在用于前缀码列268中的给定前缀码的模式经编码列272中的模式。经编码的模式的数据大小提供于频繁模式编码表270的数据大小列274中。前缀码000表示未经压缩模式,其将为呈新的经压缩数据格式266的32位的全大小的数据。前缀码001表示全零数据块,其可提供作为新的经压缩数据格式266的数据中的0位。对于3位前缀,可使用前缀码010到111来编码在源数据中辨识的其它特定模式,其在此实例中分别为0、4、8、12、16和24位中的模式。

图14说明32位频繁模式压缩数据压缩机制276的实例。在这点上,待压缩的源数据格式278中的源数据例如示出为128个字节。下文示出经压缩数据格式280。以前缀Px以及所述前缀后面作为Datax的数据的格式提供经压缩数据格式280。以不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式282,其经组织以出于效率目的而分组在一起。所述前缀码为3位。所述前缀码在频率模式编码表286中的前缀码列284中示出,其示出编码在用于前缀码列284中的给定前缀码的模式经编码列288中的模式。经编码的模式的数据大小提供于频繁模式编码表286的数据大小列290中。前缀码000表示未经压缩模式,其将为呈新的经压缩数据格式282的32位的全大小的数据。前缀码001表示全零数据块,其可提供作为新的经压缩数据格式282的数据中的0位。前缀码010表示模式0xFFFFFFFF,其为特定模式,且因此根据新的经压缩数据格式282,在经压缩数据中需要0位数据大小。用于前缀码011到111的频率模式编码表286中示出其它模式。新的经压缩数据格式282中的旗标字段指示用于前缀码001到111的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么将所述模式存储在新的经压缩数据格式282中,接着可查询所述经压缩数据格式,来重新创建未经压缩的数据。所述数据字段包含根据与新的经压缩数据格式282中的数据字段相关联的前缀码的经压缩数据。

图15说明64位频繁模式压缩数据压缩机制292的另一实例。在这点上,待压缩的源数据格式294中的源数据例如示出为128个字节。以不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式296,其经组织以出于效率目的而分组在一起。所述前缀码为4位。在频率模式编码表302中的前缀码列298、300中示出前缀码,所述频率模式编码表示出编码在用于前缀码列298、300中的给定前缀码的模式经编码列304、306中的模式。经编码的模式的数据大小提供于频繁模式编码表302的数据大小列308、310中。前缀码0000表示全零数据块,其可提供作为新的经压缩数据格式296的数据中的0位。用于前缀码0001到1111的频率模式编码表302中示出其它模式,其包含用于频繁发生ASCII模式的ASCII模式。新的经压缩数据格式296中的旗标字段指示用于前缀码0001到1111的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么将所述模式存储在新的经压缩数据格式296中,接着可查询所述经压缩数据格式,来重新创建未经压缩的数据。所述数据字段包含根据与新的经压缩数据格式296中的数据字段相关联的前缀码的经压缩数据。

图16说明64位频繁模式压缩数据压缩机制312的另一实例。在这点上,待压缩的源数据格式314中的源数据例如示出为128个字节。以不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式316,其经组织以出于效率目的而分组在一起。所述前缀码为4位。在频率模式编码表322中的前缀码列318、320中示出前缀码,所述频率模式编码表示出编码在用于前缀码列318、320中的给定前缀码的模式经编码列324、326中的模式。经编码的模式的数据大小提供于频繁模式编码表322的数据大小列328、330中。前缀码0000表示全零数据块,其可提供作为新的经压缩数据格式316的数据中的0位。用于前缀码0001到1111的频率模式编码表322中示出其它模式,其可包含固定模式的组合。新的经压缩数据格式316中的旗标字段指示用于前缀码0001到1111的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么所述模式以新的经压缩数据格式316存储,接着可在数据压缩期间查询所述模式,以重新创建未经压缩的数据。前缀码P0到P31可链接到模式,其连同对应数据(Datax)使用,来以未经压缩格式重新创建全长数据。所述数据字段包含根据与新的经压缩数据格式316中的数据字段相关联的前缀码的经压缩数据。

图17中的表332中示出可结合图16中的频繁模式压缩数据压缩机制312使用的固定模式的实例,其中所述固定模式提供于模式列334中,其长度在长度列336中,且所述模式的定义在模式定义列338中。旗标定义表340中示出旗标定义,以允许CMC 36使链接到前缀码的给定模式与用以创建未经压缩数据的定义相关。旗标定义表340包含用于旗标列342中的给定旗标的位,用于旗标值列344中的给定旗标的位的值,以及用于旗标定义列346中的给定旗标的旗标定义。

图18说明64位频繁模式压缩数据压缩机制348的另一实例。在这点上,待压缩的源数据格式350中的源数据例如示出为128个字节。以不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式352,其经组织以出于效率目的而分组在一起。所述前缀码为4位。在频率模式编码表358中的前缀码列354、356中示出前缀码,所述频率模式编码表示出编码在用于前缀码列354、356中的给定前缀码的模式经编码列360、362中的模式。经编码的模式的数据大小提供于频繁模式编码表358的数据大小列364、366中。前缀码0000表示全零数据块,其可提供作为新的经压缩数据格式352的数据中的0位。前缀码1111表示不是以新的经压缩数据格式352压缩的数据块。用于前缀码0001到1110的频率模式编码表358中示出其它模式,其可包含如本文所示的限定模式的组合。新的经压缩数据格式352中的旗标字段指示用于前缀码0000到1110的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么将所述模式存储在新的经压缩数据格式352中,接着可查询所述经压缩数据格式,来重新创建未经压缩的数据。新的经压缩数据格式352示出为仅含有模式0到5,因为在此实例中,这些是源数据中存在的前缀码0000到1110中所导致的仅有模式。所述数据字段包含根据与新的经压缩数据格式352中的数据字段相关联的前缀码的经压缩数据。

使用根据本文所揭示的各方面的基于CPU的系统中的CMC来提供存储器带宽压缩可提供于任何基于处理器的装置中或集成到其中。实例包含(但不限于)机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、桌上型计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字影音光盘(DVD)播放器和便携式数字视频播放器。

在这点上,图19说明可结合图2的CMC 36使用图2的SoC 10'的基于处理器的系统368的实例。在此实例中,基于处理器的系统368包含一或多个CPU 370,每一CPU包含一或多个处理器372。CPU 370可具有耦合到处理器372以用于快速存取临时存储的数据的高速缓冲存储器374。CPU 370耦合到系统总线376,且可互耦包含于基于处理器的系统368中的裝置。众所周知,CPU 370通过经由系统总线376交换地址、控制和数据信息而与这些其它装置通信。举例来说,CPU 370可将总线事务请求传送到存储器控制器378(作为从属装置的实例)。尽管图19中未说明,但可提供多个系统总线376。

其它装置可连接到系统总线376。如图19中所说明,作为实例,这些装置可包含存储器系统380、一或多个输入装置382、一或多个输出装置384、一或多个网络接口装置386以及一或多个显示器控制器388。输入装置382可包含任何类型的输入装置,包含但不限于输入按键、开关、话音处理器等。输出装置384可包含任何类型的输出装置,包含(但不限于)音频、视频、其它视觉指示器等。网络接口装置386可为经配置以允许将数据交换到网络390并从网络390交换数据的任何装置。网络390可为任何类型的网络,包含但不限于有线或无线网络、私用或公用网络、局域网(LAN)、广局域网、无线局域网、蓝牙(BT)和因特网。网络接口装置386可经配置以支持所要的任何类型的通信协议。存储器系统380可包含一或多个存储器单元392(0)到392(N)。

CPU 370还可经配置以经由系统总线376存取显示器控制器388,以控制发送到一或多个显示器394的信息。显示器控制器388将信息发送到显示器394以经由一个或多个视频处理器396显示,所述视频处理器将待显示的信息处理成适合于显示器394的格式。显示器394可包含任何类型的显示器,包含但不限于阴极射线管(CRT)、液晶显示器(LCD)、发光二极管(LED)显示器、等离子显示器等。

所属领域的技术人员将进一步了解,结合本文中所揭示的各方面所描述的各种说明性逻辑块、模块、电路以及算法可被实施为电子硬件、存储于存储器或另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或此两者的组合。本文所述的裝置可在任何电路中使用,例如硬件组件、集成电路(IC)或IC芯片。本文所揭示的存储器可以是任何类型和大小的存储器,且可经配置以存储期望的任何类型的信息。为清楚地说明这种可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。如何实施此功能性取决于特定应用、设计选项和/或强加于整个系统的设计约束。熟练的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为引起偏离本发明的范围。

结合本文中所揭示的各方面所描述的各种说明性逻辑块、模块和电路可用以下各项来实施或执行:处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或经设计以执行本文中所描述的功能的其任何组合。处理器可以是微处理器,但在替代例中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、一或多个微处理器结合DSP核心,或任何其它此类配置。

本文中所揭示的各方面可以硬件和存储于硬件中的指令来体现,且可驻留于(例如)随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可装卸式磁盘、CD-ROM或此领域中已知的任何其它形式的计算机可读媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并且将信息写入到存储媒体。在替代方案中,存储媒体可集成到处理器。处理器和存储媒体可驻留在ASIC中。ASIC可驻留在远程站中。在替代方案中,处理器和存储媒体可作为离散组件驻留在远程台、基站或服务器中。

还应注意,描述本文中的示范性方面中的任一者中所描述的操作步骤是为了提供实例和论述。可用除了所说明的序列之外的大量不同序列执行所描述的操作。另外,单个操作步骤中所描述的操作实际上可在许多不同步骤中执行。另外,可组合在示范性方面中所论述的一或多个操作步骤。应理解,如所属领域的技术人员将容易显而易见,流程图中所说明的操作步骤可以经受众多不同修改。所属领域的技术人员还将了解,可使用多种不同技术和技法中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。

提供本发明的前述描述以使所属领域的技术人员能够制造或使用本发明。所属领域的技术人员将容易显而易见对本发明的各种修改,且本文中界定的一般原理可应用于其它变化而不脱离本发明的精神或范围。因此,本发明并不希望限于本文中所描述的实例和设计,而是应被赋予与本文中所揭示的原理和新颖特征相一致的最广范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号