CN107111461A - 在基于中央处理单元(cpu)的系统中通过经压缩存储器控制器(cmc)使用背靠背读取操作来提供存储器带宽压缩 - Google Patents
在基于中央处理单元(cpu)的系统中通过经压缩存储器控制器(cmc)使用背靠背读取操作来提供存储器带宽压缩 Download PDFInfo
- Publication number
- CN107111461A CN107111461A CN201680006158.7A CN201680006158A CN107111461A CN 107111461 A CN107111461 A CN 107111461A CN 201680006158 A CN201680006158 A CN 201680006158A CN 107111461 A CN107111461 A CN 107111461A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory block
- data
- compressed
- write
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Abstract
本发明揭示在基于中央处理单元CPU的系统中通过经压缩存储器控制器CMC使用背靠背读取操作来提供存储器带宽压缩。在这点上,在一些方面中,CMC经配置以接收对系统存储器中的物理地址的存储器读取请求,并从与所述物理地址相关联的存储器线中的第一存储器块的错误校正码ECC位读取用于所述物理地址的压缩指示符CI。基于所述CI,所述CMC确定所述第一存储器块是否包括经压缩数据。如果不,那么所述CMC与返回所述第一存储器块并行地执行对所述存储器线的一或多个额外存储器块的背靠背读取。一些方面可通过将经压缩数据写入到所述存储器线的多个存储器块中的每一者而不是仅写入到所述第一存储器块来进一步改善存储器存取等待时间。
Description
优先权申请
本申请案要求2015年2月3日申请且标题为“用使用改善的等待时间的背靠背读取操作的存储器带宽压缩的存储器控制器、和相关的基于处理器的系统和方法(MEMORYCONTROLLERS EMPLOYING MEMORY BANDWIDTH COMPRESSION EMPLOYING BACK-TO-BACKREAD OPERATIONS FOR IMPROVED LATENCY,AND RELATED PROCESSOR-BASED SYSTEMS ANDMETHODS)”的第62/111,347号美国临时专利申请案的优先权,所述专利申请案以全文引用的方式并入本文中。
本申请案还要求2015年9月3日申请且标题为“在基于中央处理单元(CPU)的系统中通过经压缩存储器控制器(CMC)使用背靠背读取操作来提供存储器带宽压缩(PROVIDINGMEMORY BANDWIDTH COMPRESSION USING BACK-TO-BACK READ OPERATIONS BY COMPRESSEDMEMORY CONTROLLERS(CMCs)IN A CENTRAL PROCESSING UNIT(CPU)-BASED SYSTEM)”的第14/844,516号美国专利申请案的优先权,所述专利申请案以全文引用的方式并入本文中。
技术领域
本发明的技术大体上涉及计算机存储器系统,且确切地说,涉及用于提供具有到存储器的存储器存取接口的中央处理单元(CPU)的计算机存储器系统中的存储器控制器。
背景技术
微处理器在广泛多种应用程序中执行计算任务。典型的微处理器应用程序包含执行软件指令的一或多个中央处理单元(CPU)。软件指令可发指令给CPU从存储器中的位置取数据、使用取到的数据来执行一或多个CPU操作并产生结果。结果接着可存储于存储器中。作为非限制性实例,这个存储器可为在CPU本地的高速缓冲存储器、在CPU块中的CPU之间的共享本地高速缓冲存储器,在多个CPU块之间的共享高速缓冲存储器,或微处理器的主存储器。
正这点上,图1是包含基于CPU的系统12的示范性芯片上系统(SoC)10的示意图。在此实例中,基于CPU的系统12包含多个CPU块14(1)到14(N),其中“N”等于所需的CPU块14(1)到14(N)的任何数目。在图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,存储器控制器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确定所述第一存储器块是否包括经压缩数据。如果所述第一存储器块不包括经压缩数据,那么所述CMC可通过与返回所述第一存储器块(前提是所述第一存储器块包括需求字)并行地执行对所述存储器线的一或多个额外存储器块的背靠背读取来改善存储器存取等待时间。在一些方面中,由所述CMC读取的所述存储器块可以是含有如由所述存储器读请求的需求字指示符指示的所述需求字的存储器块。一些方面可通过将经压缩数据写入到所述存储器线的多个存储器块中的每一者而不是仅写入到所述第一存储器块来提供另外的存储器存取等待时间改善。在此些方面中,所述CMC可读取由所述需求字指示符指示的存储器块,且保证所述读取存储器块(不管其含有经压缩数据还是未经压缩数据)将提供所述需求字。以此方式,所述CMC可更高效地读取且写入经压缩和未经压缩数据,从而产生减少的存储器存取等待时间和改善的系统性能。
在另一方面中,提供一种CMC,其包括经配置以经由系统总线存取系统存储器的存储器接口。所述CMC经配置以接收存储器读取请求,所述存储器读取请求包括第一存储器线的物理地址,所述第一存储器线包括所述系统存储器中的多个存储器块。所述CMC经进一步配置以读取所述第一存储器线的所述多个存储器块中的第一存储器块。所述CMC还经配置以基于所述第一存储器块的CI而确定所述第一存储器块是否包括经压缩数据。所述CMC另外经配置以响应于确定所述第一存储器块不包括所述经压缩数据而执行对所述第一存储器线的所述多个存储器块中的一或多个额外存储器块的背靠背读取。所述CMC经进一步配置以与所述背靠背读取并行地确定读取存储器块是否包括需求字并响应于确定所述读取存储器块包括所述需求字而返回所述读取存储器块。
在另一方面中,提供一种CMC,其包括经配置以经由系统总线存取系统存储器的存储器接口。所述CMC经配置以接收存储器读取请求,所述存储器读取请求包括第一存储器线的物理地址,所述第一存储器线包括所述系统存储器中的多个存储器块,且所述存储器读取请求包括指示所述第一存储器线的所述多个存储器块当中的含有需求字的存储器块的需求字指示符。所述CMC经进一步配置以读取由所述需求字指示符指示的所述存储器块。所述CMC还经配置以基于所述存储器块的CI而确定所述存储器块是否包括经压缩数据。所述CMC另外经配置以:响应于确定所述存储器块不包括所述经压缩数据,与返回所述存储器块并行地执行对所述第一存储器线的所述多个存储器块中的一或多个额外存储器块的背靠背读取。
在另一方面中,一种用于提供存储器带宽压缩的方法。所述方法包括接收存储器读取请求,所述存储器读取请求包括第一存储器线的物理地址,所述第一存储器线包括系统存储器中的多个存储器块。所述方法进一步包括读取所述第一存储器线的所述多个存储器块中的第一存储器块。所述方法还包括基于所述第一存储器块的CI而确定所述第一存储器块是否包括经压缩数据。所述方法另外包括:响应于确定所述第一存储器块不包括所述经压缩数据而执行对所述第一存储器线的所述多个存储器块中的一或多个额外存储器块的背靠背读取。所述方法进一步包括:与所述背靠背读取并行地确定读取存储器块是否包括需求字,并响应于确定所述读取存储器块包括所述需求字而返回所述读取存储器块。
在另一方面中,一种用于提供存储器带宽压缩的方法。所述方法包括接收存储器读取请求,所述存储器读取请求包括第一存储器线的物理地址,所述第一存储器线包括系统存储器中的多个存储器块,且所述存储器读取请求包括指示所述第一存储器线的所述多个存储器块当中的含有需求字的存储器块的需求字指示符。所述方法进一步包括读取由所述需求字指示符指示的所述存储器块。所述方法还包括基于所述存储器块的CI而确定所述存储器块是否包括经压缩数据。所述方法另外包括:响应于确定所述存储器块不包括所述经压缩数据,与返回所述存储器块并行地执行对所述第一存储器线的所述多个存储器块中的一或多个额外存储器块的背靠背读取。
在其它方面中,揭示可非常适合小数据块压缩的压缩方法和格式。这些压缩方法和格式可用于本文所揭示的存储器带宽压缩方面。
对于这些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存取用于使用背靠背读取、早期返回和/或多重经压缩数据写入来提供存储器带宽压缩的系统存储器的示范性元件;
图7A到7C是说明图3的CMC的在使用背靠背读取和早期返回来提供存储器带宽压缩的过程中执行读取操作的示范性操作的流程图;
图8是说明图3的CMC的在使用背靠背读取和早期返回来提供存储器带宽压缩的过程中执行写入操作的示范性操作的流程图;
图9A到9C是说明图3的CMC的在使用背靠背读取和多重经压缩数据写入来提供存储器带宽压缩的过程中执行读取操作的示范性操作的流程图;
图10是说明图3的CMC的在使用背靠背读取和多重经压缩数据写入来提供存储器带宽压缩的过程中执行写入操作的示范性操作的流程图;
图11到17说明示范性数据块压缩格式和机制,数据块压缩格式和机制中的任何一者可由图3的CMC用来压缩并解压缩存储器块;且
图18是可包含使用图2的CMC的图1的SoC的示范性计算装置的框图。
具体实施方式
现参考各图,描述本发明的若干示范性方面。词语“示范性”在本文中使用以表示“充当实例、例子或说明”。本文中描述为“示范性”的任何方面未必理解为比其它方面优选或有利。
本文中所揭示的方面包含在基于中央处理单元(CPU)的系统中通过经压缩存储器控制器(CMC)使用背靠背读取操作来提供存储器带宽压缩。在这点上,在一些方面中,CMC经配置以提供针对存储器读取请求和/或存储器写入请求的存储器带宽压缩。根据一些方面,在接收到对系统存储器中的物理地址的存储器读取请求后,CMC可即刻从与系统存储器中的物理地址相关联的存储器线中的第一存储器块的错误校正码(ECC)位读取用于物理地址的压缩指示符(CI)。基于CI,CMC确定第一存储器块是否包括经压缩数据。如果第一存储器块不包括经压缩数据,那么CMC可通过与返回第一存储器块(前提是第一存储器块包括需求字)并行地执行对存储器线的一或多个额外存储器块的背靠背读取来改善存储器存取等待时间。在一些方面中,由CMC读取的存储器块可以是含有如由存储器读请求的需求字指示符指示的需求字的存储器块。一些方面可通过将经压缩数据写入到存储器线的多个存储器块中的每一者而不是仅写入到第一存储器块来提供另外的存储器存取等待时间改善。在此些方面中,CMC可读取由需求字指示符指示的存储器块,且保证读取存储器块(不管其含有经压缩数据还是未经压缩数据)将提供需求字。以此方式,CMC可更高效地读取且写入经压缩和未经压缩数据,从而产生减少的存储器存取等待时间和改善的系统性能。
在这点上,图2是包含示范性基于CPU的系统12'的SoC 10'的示意图,系统12'类似于图1中的基于CPU的系统12的具有多个CPU块14(1)到14(N)。图2中的基于CPU的系统12'包含一些与图1中的基于CPU的系统12通用的组件,所述组件由图1与2之间的通用元件编号表示。出于简洁起见,将不重新描述这些元件。然而,在图2中的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的存储器存取的操作,系统存储器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的示意图。在图4的存储器带宽压缩机制60中,系统存储器38包括多个存储器线62,存储器线62中的每一者与物理地址相关联。多个存储器线62中的每一者可由CMC 36使用存储器读取或写入请求(未展示)的物理地址来存取。数据(未展示)可以经压缩或未经压缩形式存储于系统存储器38中的存储器线62中的每一者内。在一些方面中,包括CI 64的一或多个错误校正码(ECC)位可与每一存储器线62相关联地存储以指示存储器线62是否以经压缩形式存储。以此方式,当执行对系统存储器38的存储器存取请求时,作为存储器存取请求的处理的一部分,CMC 36可检查与对应于待寻址的物理地址的存储器线62相关联的CI64,以确定存储器线62是否被压缩。
还在系统存储器38中提供主目录66。主目录66针对系统存储器38中的对应于物理地址的每个存储器线62含有一个条目68。主目录66还针对每条目68含有一(1)个CI 64,以指示存储器线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的存储器存取请求时,作为存储器存取请求的处理的一部分,CMC36可首先检查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个字节中。
还可能需要为图4中的存储器带宽压缩机制60提供额外高速缓冲存储器。在这点上,图5说明类似于图2中的SoC 10'的替代性SoC 10”的实例。然而,图5中的SoC 10”另外包含任选的高速缓冲存储器78,任选的高速缓冲存储器78在此实例中是L4高速缓冲存储器。CMC 36可同时查找L4高速缓冲存储器78和CI高速缓冲存储器70两者中的物理地址以将等待时间减到最小。L4高速缓冲存储器78中的地址是未经压缩的物理地址。在L4高速缓冲存储器78中的物理地址命中后,CI高速缓冲存储器70中的物理地址查找是冗余的。在L4高速缓冲存储器78中的物理地址未命中后,需要CI高速缓冲存储器70中的物理地址查找来从系统存储器38获得数据。并且,为了避免CPU 16(1)、16(2)存取L4高速缓冲存储器78和CI高速缓冲存储器70两者的额外等待时间,L4高速缓冲存储器78和CI高速缓冲存储器70可以是待发的。
提供图6A和6B以说明可由图3的CMC 36存取以用于提供存储器带宽压缩的图2的系统存储器38的示范性通信流和示范性元件。确切地说,图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)和86(0)到86(Z),如由系统存储器38的基础存储器架构确定。在一些方面中,存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)中的每一者的大小表示可在存储器读取操作中从系统存储器38读取的数据的最小量。举例来说,在一些示范性存储器架构中,存储器线80(0)到80(X)中的每一者可包括128个字节的数据,细分成两个64字节存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)。一些方面可假定存储器线80(0)到80(X)中的每一者可包括更多或更少字节的数据(例如256个字节或64个字节,作为非限制性实例)。类似地,根据一些方面,存储器线80(0)到80(X)内的存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)可更大或更小(例如128个字节或32个字节,作为非限制性实例)。在一些方面中,存储器读取操作可读取比存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)中的每一者的大小少的字节,但仍消耗与存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)中的每一者相同量的存储器带宽。
存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)中的每一者与一或多个对应ECC位88(0)到88(Z)、90(0)到90(Z)、92(0)到92(Z)相关联。例如ECC位88(0)到88(Z)、90(0)到90(Z)、92(0)到92(Z)等ECC位常规上用以检测并校正存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)内的通常遭遇的类型的内部数据损坏。在图6A和6B的实例中,ECC位88(0)到88(Z)、90(0)到90(Z)、92(0)到92(Z)中的一或多者重新用以存储相应存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)的CI 94(0)到94(Z)、96(0)到96(Z)、98(0)到98(Z)。虽然图6A和6B中的ECC位88(0)到88(Z)、90(0)到90(Z)、92(0)到92(Z)被描绘为邻近于其相应存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z),但是应理解,ECC位88(0)到88(Z)、90(0)到90(Z)、92(0)到92(Z)可定位于系统存储器38内的其它处。
CI 94(0)到94(Z)、96(0)到96(Z)、98(0)到98(Z)各自可包括指示存储于系统存储器38的对应存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)处的数据的压缩状态。在一些方面中,CI 94(0)到94(Z)、96(0)到96(Z)、98(0)到98(Z)中的每一者可包括指示对应存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)中的数据是经压缩还是未经压缩的单个位。根据一些方面,CI 94(0)到94(Z)、96(0)到96(Z)、98(0)到98(Z)中的每一者可包括多个位,多个位可用以指示对应存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)中的每一者的压缩模式(例如,由经压缩数据占用的存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)的数目,作为非限制性实例)。
在图6A的实例中,指定物理地址102的存储器读取请求100由CMC 36接收,如由箭头104指示。存储器读请求100进一步包含指示含有需求字的存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)的需求字指示符106。出于说明的目的,首先假设物理地址102对应于存储器线80(0)。当接收到存储器读请求100时,CMC 36不知晓存储于存储器线80(0)的存储器块82(0)到82(Z)内的数据是否经压缩。CMC 36可继续读取整个存储器线80(0),但如果所请求数据以经压缩形式仅存储在存储器块82(0)中,那么存储器块82(Z)的读取将是不必要的,且将导致增加的存储器存取等待时间。
因此,CMC 36读取第一存储器块82(0)(在本文中也被称作“读取存储器块82(0)”)。CMC 36基于存储于ECC位88(0)中的CI 94(0)而确定第一存储器块82(0)是否存储经压缩数据。如图6A中所见,存储器块82(0)到82(Z)不存储经压缩数据,但实际上存储未经压缩数据108(0)到108(Z)。因此,在确定了第一存储器块82(0)不存储经压缩数据之后,CMC36即刻执行对存储器线80(0)的额外存储器块82(Z)的背靠背读取。与对存储器块82(Z)的背靠背读取并行地,CMC 36基于需求字指示符106而确定读取存储器块82(0)是否对应于需求字。如果是,那么CMC 36返回读取存储器块82(0)而同时执行对存储器块82(Z)的背靠背读取(即,“早期返回”)。以此方式,可减少用于存取存储器块82(0)的存储器存取等待时间。
继续参考图6A,现假设物理地址102对应于存储器线80(1)。在此状况下,CMC 36在一些方面中读取存储器线80(1)的第一存储器块84(0),并基于存储于ECC位90(0)中的CI96(0)而确定第一存储器块84(0)含有经压缩数据110。因此,CMC 36将第一存储器块84(0)的经压缩数据110解压缩成经解压缩存储器块112(0)到112(Z)。CMC 36可接着基于需求字指示符106而识别经解压缩存储器块112(0)到112(Z)中的含有需求字的一者(例如,经解压缩存储器块112(0)),并在返回剩余经解压缩存储器块112(0)到112(Z)之前返回经解压缩存储器块112(0)。
CMC 36的一些方面可使用在本文中被称作“多重经压缩数据写入”之物,其中经压缩数据110(例如)可存储于存储器线80(1)的存储器块84(0)到84(Z)中的每一者中,而非仅存储于第一存储器块84(0)中。在此些方面中,CMC 36可通过读取由需求字指示符106指示的存储器块中的一者(例如存储器块82(Z)或84(Z))而非读取第一存储器块82(0)或84(0)来改善存储器存取等待时间。如果由CMC 36读取的存储器线80(0)到80(X)确定为含有未经压缩数据未经压缩数据108(0)到108(Z)(例如,存储器线80(0)),那么CMC 36将首先读取含有需求字的存储器块82(Z),并与执行背靠背读取操作以读取如上文所描述的一或多个额外存储器块82(0)到82(Z)并行地返回需求字。这可在读取并返回未经压缩数据108(0)到108(Z)时产生改善的存储器读存取次数。如果由CMC 36读取的存储器线80(0)到80(X)确定为含有经压缩数据110(例如,存储器线80(1)),那么由需求字指示符106指示且由CMC 36读取的存储器块84(Z)将含有经压缩数据110。因此,不论哪一存储器块84(0)到84(Z)由需求字指示符106指示,CMC 36可继续将经压缩数据110解压缩成经解压缩存储器块112(0)到112(Z)。CMC 36可接着识别并返回含有如上文所描述的需求字的经解压缩存储器块112(0)到112(Z)。
在一些方面中,CMC 36可通过提供适应性模式来进一步改善存储器存取等待时间,在适应性模式下可相比于读取和/或写入的总数目跟踪经压缩数据110的读取和/或写入的数目,且可基于这些跟踪而选择性地经修改用于执行读取操作的操作。根据一些方面,作为非限制性实例,可在每CPU基础、每工作负荷基础、每虚拟机(VM)基础、每容器基础上和/或在每服务质量(QoS)标识符(QoSID)基础上执行这些跟踪。在这点上,CMC 36在一些方面中,可经配置以提供压缩监视器114。压缩监视器114经配置以(作为非限制性实例)基于经压缩数据110的读取的数目、读取操作的总数目、经压缩数据110的写入的数目和写入操作的总数目中的至少一者而跟踪压缩比116。在一些方面中,压缩监视器114可提供用于跟踪以下各者的一或多个计数器118:由CMC 36执行的经压缩数据110的读取的数目、读取操作的总数目、经压缩数据110的写入的数目和写入操作的总数目。压缩比116可接着确定为总读取操作与经压缩读取操作的比和/或总写入操作与经压缩写入操作的比。
CMC 36可进一步提供阈值120,压缩监视器114可比较阈值120与压缩比116。如果压缩比116不低于阈值120,那么CMC 36可得出结论有可能压缩待读取的数据,且可执行如上文所描述的读取操作。然而,如果压缩比116低于阈值120,那么CMC 36可确定不太可能压缩待读取的数据。在这些状况下,可能存在CMC 36必须执行多个读取操作以从存储器块82(0)到82(Z)、84(0)到84(Z)、86(0)到86(Z)检索未经压缩数据的更高可能性。因此,代替如在以上实例中仅读取存储器线80(0)的第一存储器块82(0),CMC 36可读取所有存储器块82(0)到82(Z)。CMC 36可接着基于第一存储器块82(0)的ECC位88(0)的CI 94(0)而确定第一存储器块82(0)是否含有经压缩数据110。如果第一存储器块82(0)不含有经压缩数据110,那么CMC 36可立刻返回所有存储器块82(0)到82(Z),而不必执行额外读取以检索存储于存储器线80(0)中的所有未经压缩数据。如果第一存储器块82(0)的确含有经压缩数据110,那么CMC 36可解压缩并返回如上文所描述的数据。
现参考图6B,CMC 36在一些方面中可接收存储器写入请求122,如由箭头124指示。存储器写入请求122包含待写入到系统存储器38的未经压缩写入数据126以及未经压缩写入数据126待写入到的系统存储器38的物理地址102两者。出于说明的目的,首先假设物理地址102对应于存储器线80(0)。在接收到存储器写入请求122之后,CMC 36即刻首先将未经压缩写入数据126压缩成经压缩写入数据128。CMC 36接着确定经压缩写入数据128的大小是否大于存储器线80(0)的每一存储器块82(0)到82(Z)的大小。在此实例中,经压缩写入数据128太大而不能存储于存储器块82(0)到82(Z)中的单个者内。因此,对经压缩写入数据128的后续读取将需要多个读取操作以及解压缩操作。由多个读取操作和解压缩操作引发的开销可能抵消通过以经压缩形式存储经压缩写入数据128所实现的任何性能收益。因此,CMC 36将未经压缩写入数据126作为未经压缩数据130(0)到130(Z)存储于存储器块82(0)到82(Z)中。CMC 36还设置存储器线80(0)的第一存储器块82(0)的CI 94(0)以指示第一存储器块82(0)的压缩状态(例如,未经压缩)。
继续参考图6B,现假设物理地址102对应于存储器线80(1),且在压缩未经压缩写入数据126之后,CMC 36即刻确定经压缩写入数据128的大小小于或等于存储器线80(1)的每一存储器块84(0)到84(Z)的大小。在此状况下,CMC 36将经压缩写入数据128作为经压缩数据132写入到存储器线80(1)的第一存储器块84(0)。CMC 36进一步设置存储器线80(1)的第一存储器块84(0)的CI 96(0)以指示第一存储器块84(0)的压缩状态(例如,经压缩)。
如上文所提及,在一些方面中,CMC 36可支持多重经压缩数据写入。在图6B的实例中,使用多重经压缩数据写入的CMC 36可将经压缩数据132写入到存储器线80(1)的存储器块84(0)到84(Z)中的每一者,而非仅将经压缩数据132写入到第一存储器块84(0)。此可使得CMC 36能够通过使用图6A的需求字指示符106来读取未经压缩数据130(0)到130(Z)的需求字来进一步改善存储器读存取次数,同时确保适当地读取经压缩数据132,而不论需求字指示符106的值。
图7A到7C是说明图3的CMC 36的在使用读取数据的背靠背读取和早期返回来提供存储器带宽压缩的过程中执行读取操作的示范性操作的流程图。为清楚起见,在描述图7A到7C时,参考图2、3和6A到6B的元件。在图7A中,CMC 36在一些方面中可使用压缩监视器114来跟踪压缩比116(框134)。根据一些方面,压缩比116可基于经压缩数据110的读取的数目、读取操作的总数目、经压缩数据110的写入的数目和写入操作的总数目中的至少一者。CMC36接着接收存储器读取请求100,存储器读取请求100包括第一存储器线80(0)、80(1)的物理地址102,所述第一存储器线80(0)、80(1)包括系统存储器38中的多个存储器块82(0)到82(Z)、84(0)到84(Z)(框136)。在CMC 36使用压缩监视器114的方面中,CMC 36可确定压缩比116是否低于阈值120(框138)。如果CMC 36在决策框138处确定压缩比116不低于阈值120,或如果CMC 36并未使用压缩监视器114,那么处理在图7B的框140处继续。然而,如果CMC 36在决策框138处确定压缩比116低于阈值120,那么处理在图7C的框142处继续。
现参考图7B,CMC 36读取第一存储器线80(0)、80(1)的多个存储器块82(0)到82(Z)、84(0)到84(Z)中的第一存储器块82(0)、84(0)(框140)。CMC 36基于第一存储器块82(0)、84(0)的CI 94(0)、96(0)而确定第一存储器块82(0)、84(0)是否包括经压缩数据110(框144)。如果CMC 36在决策框144处确定第一存储器块82(0)、84(0)不包括经压缩数据110,那么CMC 36执行对第一存储器线80(0)的多个存储器块82(0)到82(Z)中的一或多个额外存储器块82(Z)的背靠背读取(框146)。与背靠背读取并行地,CMC 36还确定读取存储器块82(0)是否包括需求字(框148)。如果是,CMC 36与背靠背读取并行地返回读取存储器块82(0)(框150)。如果读取存储器块82(0)不包括需求字,那么处理返回到框148。
如果CMC 36在图7B的决策框144处确定第一存储器块82(0)、84(0)的确包括经压缩数据110,那么CMC 36将第一存储器块84(0)的经压缩数据110解压缩成一或多个经解压缩存储器块112(0)到112(Z)(框154)。CMC 36接下来识别一或多个经解压缩存储器块112(0)到112(Z)中的包括需求字的经解压缩存储器块112(0)(框156)。在返回剩余经解压缩存储器块112(0)到112(Z)之前,接着由CMC 36返回经解压缩存储器块112(0)(框158)。应理解,不包括需求字的剩余经解压缩存储器块112(0)到112(Z)接着随后由CMC 36返回。
如上文所提及,如果CMC 36在图7A的决策框138处确定压缩比116低于阈值120,那么处理在图7C的框142处继续。现转而参看图7C,CMC 36读取多个存储器块,例如分别属于第一存储器线80(0)、80(1)的存储器块82(0)到82(Z)、84(0)到84(Z)(框142)。CMC 36基于第一存储器线80(0)、80(1)的多个存储器块82(0)到82(Z)、84(0)到84(Z)中的第一存储器块82(0)、84(0)的CI 94(0)、96(0)而确定第一存储器块82(0)、84(0)是否包括经压缩数据110(框160)。如果第一存储器块82(0)、84(0)不包括经压缩数据110,那么CMC 36返回多个存储器块82(0)到82(Z)(框162)。然而,如果CMC 36在决策框160处确定第一存储器块82(0)、84(0)包括经压缩数据110,那么CMC 36将第一存储器块84(0)的经压缩数据110解压缩成一或多个经解压缩存储器块112(0)到112(Z)(框164)。CMC 36接下来识别一或多个经解压缩存储器块112(0)到112(Z)中的包括需求字的经解压缩存储器块112(0)(框166)。在返回剩余经解压缩存储器块112(0)到112(Z)之前,接着由CMC 36返回经解压缩存储器块112(0)(框168)。
为了说明图3的CMC 36的在使用读取数据的背靠背读取和早期返回来提供存储器带宽压缩的过程中执行写入操作的示范性操作,提供图8。为清楚起见,在描述图8时参考图2、3和6A到6B的元件。在一些方面中,图8中的操作开始于CMC 36接收存储器写入请求122(框152),存储器写入请求122包括未经压缩写入数据126和包括系统存储器38中的多个存储器块82(0)到82(Z)、84(0)到84(Z)的第二存储器线80(0)、80(1)的物理地址102。CMC 36可将未经压缩写入数据126压缩成经压缩写入数据128(框170)。接下来,CMC 36可确定经压缩写入数据128的大小是否大于第二存储器线80(0)、80(1)的多个存储器块82(0)到82(Z)、84(0)到84(Z)中的每一存储器块82(0)到82(Z)、84(0)到84(Z)的大小(框172)。如果经压缩写入数据128的大小不大于每一存储器块82(0)到82(Z)、84(0)到84(Z)的大小,那么CMC 36将经压缩写入数据128写入到第二存储器线80(1)的第一存储器块84(0)(框174)。然而,如果CMC 36在决策框172处确定经压缩写入数据128的大小大于每一存储器块82(0)到82(Z)、84(0)到84(Z)的大小,那么CMC 36将未经压缩写入数据126写入到第二存储器线80(0)的多个存储器块82(0)到82(Z)中的多者(框176)。CMC 36接着设置第二存储器线80(0)、80(1)的第一存储器块82(0)、84(0)的CI 94(0)、96(0)以指示第一存储器块82(0)、84(0)的压缩状态(框178)。
图9A到9C是说明图3的CMC 36的在使用背靠背读取和多重经压缩数据写入来提供存储器带宽压缩的过程中执行读取操作的示范性操作的流程图。为清楚起见,在描述图9A到9C时参考图2、3和6A到6B的元件。在图9A中,根据一些方面的操作开始于CMC 36使用压缩监视器114来跟踪压缩比116(框180)。一些方面可假定压缩比116是基于经压缩数据110的读取的数目、读取操作的总数目、经压缩数据110的写入的数目和写入操作的总数目中的至少一者。CMC 36接着接收存储器读取请求100,存储器读取请求100包括第一存储器线80(0)、80(1)的物理地址102(所述第一存储器线80(0)、80(1)包括系统存储器38中的多个存储器块82(0)到82(Z)、84(0)到84(Z)),且包括指示第一存储器线80(0)、80(1)的多个存储器块82(0)到82(Z)、84(0)到84(Z)当中的含有需求字的存储器块82(0)、84(0)的需求字指示符106(框182)。
在CMC 36使用压缩监视器114的方面中,CMC 36可确定压缩比116是否低于阈值120(框184)。如果压缩比116不低于阈值120,或如果CMC 36并未使用压缩监视器114,那么处理在图9B的框186处继续。然而,如果CMC 36在决策框184处确定压缩比116低于阈值120,那么处理在图9C的框188处继续。
现参考图9B,CMC 36读取由需求字指示符106指示的存储器块82(Z)、84(Z)(框186)。CMC 36接下来基于存储器块82(Z)、84(Z)的CI 94(Z)、96(Z)而确定存储器块82(Z)、84(Z)是否包括经压缩数据110(框190)。如果确定存储器块82(Z)、84(Z)不包括经压缩数据110,那么CMC 36与返回存储器块82(Z)并行地执行对第一存储器线80(0)的多个存储器块82(0)到82(Z)中的一或多个额外存储器块82(0)到82(Z)的背靠背读取(框192)。
然而,如果CMC 36在决策框190处确定存储器块82(Z)、84(Z)包括经压缩数据110,那么CMC 36将存储器块84(Z)的经压缩数据110解压缩成一或多个经解压缩存储器块112(0)到112(Z)(框196)。CMC 36识别一或多个经解压缩存储器块112(0)到112(Z)中的含有需求字的经解压缩存储器块112(Z)(框198)。在返回剩余经解压缩存储器块112(0)到112(Z)之前,接着由CMC 36返回经解压缩存储器块112(Z)(框200)。
如上文所提及,如果CMC 36在图9A的决策框184处确定压缩比116低于阈值120,那么处理在图9C的框188处继续。在图9C中,CMC 36读取第一存储器线80(0)、80(1)的多个存储器块82(0)到82(Z)、84(0)到84(Z)(框188)。CMC 36接着基于第一存储器线80(0)、80(1)的多个存储器块82(0)到82(Z)、84(0)到84(Z)中的第一存储器块82(0)、84(0)的CI 94(0)、96(0)而确定第一存储器块82(0)、84(0)是否包括经压缩数据110(框202)。如果第一存储器块82(0)、84(0)不包括经压缩数据110,那么CMC 36返回多个存储器块82(0)到82(Z)(框204)。
如果CMC 36在决策框202处确定第一存储器块82(0)、84(0)包括经压缩数据110,那么CMC 36将第一存储器块84(0)的经压缩数据110解压缩成一或多个经解压缩存储器块112(0)到112(Z)(框206)。CMC 36识别一或多个经解压缩存储器块112(0)到112(Z)中的含有需求字的经解压缩存储器块112(0)(框208)。在返回剩余经解压缩存储器块112(0)到112(Z)之前,接着由CMC 36返回经解压缩存储器块112(0)(框210)。
为了说明图3的CMC 36的在使用背靠背读取和多重经压缩数据写入来提供存储器带宽压缩的过程中执行写入操作的示范性操作,提供图10。为清楚起见,在描述图10时参考图2、3和6A到6B的元件。在一些方面中,图10中的操作开始于CMC 36接收存储器写入请求122(框194),存储器写入请求122包括未经压缩写入数据126和包括系统存储器38中的多个存储器块82(0)到82(Z)、84(0)到84(Z)的第二存储器线80(0)、80(1)的物理地址102。CMC36可将未经压缩写入数据126压缩成经压缩写入数据128(框212)。CMC 36可接着确定经压缩写入数据128的大小是否大于第二存储器线80(0)、80(1)的多个存储器块82(0)到82(Z)、84(0)到84(Z)中的每一存储器块82(0)到82(Z)、84(0)到84(Z)的大小(框214)。如果经压缩写入数据128的大小大于每一存储器块82(0)到82(Z)、84(0)到84(Z)的大小,那么CMC 36可将未经压缩写入数据126写入到第二存储器线80(1)的多个存储器块84(0)到84(Z)中的多者(框216)。然而,如果CMC 36在决策框214处确定经压缩写入数据128的大小不大于每一存储器块82(0)到82(Z)、84(0)到84(Z)的大小,那么CMC 36可将经压缩写入数据128写入到第二存储器线80(1)的多个存储器块84(0)到84(Z)中的每一存储器块84(0)到84(Z)(框218)。CMC 36接着设置第二存储器线80(0)、80(1)的多个存储器块82(0)到82(Z)、84(0)到84(Z)中的每一存储器块82(0)到82(Z)、84(0)到84(Z)的CI 94(0)到94(Z)、96(0)到96(Z)以指示第一存储器块82(0)到82(Z)、84(0)到84(Z)的压缩状态(框220)。
在一些方面中,包括多个位的CI的值可指示存储于存储器块(例如存储器块82(0)到82(Z)中的一者)中的压缩状态和/或固定数据模式。作为非限制性实例,对于两(2)位的CI,值“00”可指示对应存储器块未经压缩,而值“01”可指示对应存储器块经压缩。值“11”可指示固定模式(例如全零(0)或全一(1))存储于对应存储器块中。
在这点上,图11说明频繁模式压缩数据压缩机制222。在这点上,待压缩的源数据格式224中的源数据例如展示为128个字节。下文展示经压缩数据格式226。以前缀码Px和所述前缀后面作为Datax的数据的格式提供经压缩数据格式226。前缀是3位。所述前缀码在频繁模式编码表230中的前缀码列228中展示,频繁模式编码表230展示编码在用于前缀码列228中的给定前缀码的经模式编码列232中的模式。经编码的模式的数据大小提供于频繁模式编码表230的数据大小列234中。
图12说明32位频繁模式压缩数据压缩机制236。在这点上,待压缩的源数据格式238中的源数据例如展示为128个字节。下文展示经压缩数据格式240。以前缀Px和紧接在前缀后面作为Datax的数据的格式提供经压缩数据格式240。以经组织以出于效率目的而分组在一起的不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式242。前缀码是3位。所述前缀码在频繁模式编码表246中的前缀码列244中展示,频繁模式编码表246展示编码在用于前缀码列244中的给定前缀码的经模式编码列248中的模式。经编码的模式的数据大小提供于频繁模式编码表246的数据大小列250中。前缀码000表示未经压缩模式,其将为呈新的经压缩数据格式242的32位的全大小的数据。前缀码001表示全零数据块,其可提供作为新的经压缩数据格式242的数据中的0位。对于3位前缀,可使用前缀码010到111来对在源数据中辨识的其它特定模式进行编码,特定模式在此实例中分别是0、4、8、12、16和24位中的模式。
图13说明32位频繁模式压缩数据压缩机制252的实例。在这点上,待压缩的源数据格式254中的源数据例如展示为128个字节。下文展示经压缩数据格式256。以前缀Px和前缀后面作为Datax的数据的格式提供经压缩数据格式256。以经组织以出于效率目的而分组在一起的不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式258。前缀码是3位。所述前缀码在频繁模式编码表262中的前缀码列260中展示,频繁模式编码表262展示编码在用于前缀码列260中的给定前缀码的经模式编码列264中的模式。经编码的模式的数据大小提供于频繁模式编码表262的数据大小列266中。前缀码000表示未经压缩模式,其将是呈新的经压缩数据格式258的32位的全大小的数据。前缀码001表示全零数据块,全零数据块可提供为新的经压缩数据格式258的数据中的0位。前缀码010表示模式0xFFFFFFFF,其为特定模式且因此根据新的经压缩数据格式258而在经压缩数据中需要0位数据大小。在用于前缀码011到111的频繁模式编码表262中展示其它模式。新的经压缩数据格式258中的旗标字段指示用于前缀码001到111的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么将所述模式存储于新的经压缩数据格式258中,接着可查询新的经压缩数据格式258来重新创建未经压缩的数据。数据字段包含根据与新的经压缩数据格式258中的数据字段相关联的前缀码的经压缩数据。
图14说明64位频繁模式压缩数据压缩机制268的另一实例。在这点上,待压缩的源数据格式270中的源数据例如展示为128个字节。以经组织以出于效率目的而分组在一起的不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式272。前缀码是4位。所述前缀码在频繁模式编码表278中的前缀码列274、276中展示,频繁模式编码表278展示编码在用于前缀码列274、276中的给定前缀码的经模式编码列280、282中的模式。经编码的模式的数据大小提供于频繁模式编码表278的数据大小列284、286中。前缀码0000表示全零数据块,其可提供作为新的经压缩数据格式272的数据中的0位。在用于前缀码0001到1111的频繁模式编码表278中展示其它模式,所述其它模式包含用于频繁发生ASCII模式的ASCII模式。新的经压缩数据格式272中的旗标字段指示用于前缀码0001到1111的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么将所述模式存储于新的经压缩数据格式272中,接着可查询新的经压缩数据格式272来重新创建未经压缩的数据。数据字段包含根据与新的经压缩数据格式272中的数据字段相关联的前缀码的经压缩数据。
图15说明64位频繁模式压缩数据压缩机制288的另一实例。在这点上,待压缩的源数据格式290中的源数据例如展示为128个字节。以经组织以出于效率目的而分组在一起的不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式292。前缀码是4位。所述前缀码在频繁模式编码表298中的前缀码列294、296中展示,频繁模式编码表298展示编码在用于前缀码列294、296中的给定前缀码的经模式编码列300、302中的模式。经编码的模式的数据大小提供于频繁模式编码表298的数据大小列304、306中。前缀码0000表示全零数据块,全零数据块可提供为新的经压缩数据格式292的数据中的0位。在用于前缀码0001到1111的频繁模式编码表298中展示其它模式,其它模式可包含固定模式的组合。新的经压缩数据格式292中的旗标字段指示用于前缀码0001到1111的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么将所述模式存储于新的经压缩数据格式292中,接着可查询新的经压缩数据格式292来重新创建未经压缩的数据。前缀码P0到P31可链接到模式,模式连同对应数据(Datax)使用来以未经压缩格式重新创建全长数据。数据字段包含根据与新的经压缩数据格式292中的数据字段相关联的前缀码的经压缩数据。
图16中的表308中展示可结合图15中的频繁模式压缩数据压缩机制288一起使用的固定模式的实例,其中固定模式提供于模式列310中,其长度在长度列312中且所述模式的定义在模式定义列314中。在旗标定义表316中展示旗标定义,以允许CMC 36使链接到前缀码的给定模式与用以创建未经压缩数据的定义相关。旗标定义表316包含用于旗标列318中的给定旗标的位,用于旗标值列320中的给定旗标的位的值,和用于旗标定义列322中的给定旗标的旗标定义。
图17说明64位频繁模式压缩数据压缩机制324的另一实例。在这点上,待压缩的源数据格式326中的源数据例如展示为128个字节。以经组织以出于效率目的而分组在一起的不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式328。前缀码是4位。所述前缀码在频繁模式编码表334中的前缀码列330、332中展示,频繁模式编码表表展示编码在用于前缀码列330、332中的给定前缀码的经模式编码列336、338中的模式。经编码的模式的数据大小提供于频繁模式编码表334的数据大小列340、342中。前缀码0000表示全零数据块,其可提供作为新的经压缩数据格式328的数据中的0位。前缀码1111表示不是以新的经压缩数据格式328压缩的数据块。在用于前缀码0001到1110的频繁模式编码表334中展示其它模式,其它模式可包含如本文所示的限定模式的组合。新的经压缩数据格式328中的旗标字段指示用于前缀码0000到1110的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么将所述模式存储于新的经压缩数据格式328中,接着可查询新的经压缩数据格式328来重新创建未经压缩的数据。新的经压缩数据格式328展示为仅含有模式0到5,这是因为在此实例中,这些是源数据中存在的前缀码0000到1110中所考虑的仅有模式。数据字段包含根据与新的经压缩数据格式328中的数据字段相关联的前缀码的经压缩数据。
根据本文中所揭示的各方面的在基于CPU的系统中通过CMC使用背靠背读取操作来提供存储器带宽压缩可设置于任何基于处理器的装置中或集成到任何基于处理器的装置中。实例包含(但不限于)机顶盒、娱乐单元、导航装置、通信装置、固定位置数据单元、移动位置数据单元、移动电话、蜂窝式电话、计算机、便携式计算机、台式计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光盘(DVD)播放器和便携式数字视频播放器。
在这点上,图18说明可结合图2的CMC 36使用图1的SoC 10的基于处理器的系统344的实例。在此实例中,基于处理器的系统344包含一或多个CPU 346,每一CPU包含一或多个处理器348。CPU 346可具有耦合到处理器348以用于快速存取临时存储数据的高速缓冲存储器350。CPU 346耦合到系统总线352,且可将包含在基于处理器的系统344中装置互相耦合。众所周知,CPU 346通过经由系统总线352交换地址、控制和数据信息而与这些其它装置通信。举例来说,CPU 346可将总线事务请求传达到作为从属装置的实例的存储器控制器354。虽然图18中未说明,但是可提供多个系统总线352。
其它装置可连接到系统总线352。如图18中所说明,作为实例,这些装置可包含存储器系统356、一或多个输入装置358、一或多个输出装置360、一或多个网络接口装置362和一或多个显示器控制器364。输入装置358可包含任何类型的输入装置,包含(但不限于)输入按键、开关、语音处理器等。输出装置360可包含任何类型的输出装置,包含(但不限于)音频、视频、其它视觉指示符等。网络接口装置362可以是经配置以允许将数据交换到网络366并交换来自网络366的数据的任何装置。网络366可以是任何类型的网络,包含(但不限于)有线或无线网络、私用或公用网络、局域网(LAN)、广局域网、无线局域网、蓝牙(BT)和因特网。网络接口装置362可经配置以支持所要的任何类型的通信协议。存储器系统356可包含一或多个存储器单元368(0)到368(N)。
CPU 346还可经配置以经由系统总线352存取显示器控制器364以控制发送到一或多个显示器370的信息。显示器控制器364将待经由一或多个视频处理器372显示的信息发送到显示器370,视频处理器372将待显示的信息处理成适合于显示器370的格式。显示器370可包含任何类型的显示器,包含(但不限于)阴极射线管(CRT)、液晶显示器(LCD)、发光二极管(LED)显示器、等离子显示器等。
所属领域的技术人员将进一步了解,结合本文中所揭示的各方面所描述的各种说明性逻辑块、模块、电路和算法可被实施为电子硬件、存储于存储器或另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或此两者的组合。本文中所描述的装置可在任何电路中使用,例如硬件组件、集成电路(IC)或IC芯片。本文中所揭示的存储器可以是任何类型和大小的存储器,并且可经配置以存储所需的任何类型的信息。为清楚说明这个可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。如何实施这些功能性取决于特定应用、设计选项和/或外加于整个系统的设计约束。所属领域的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但这些实施决策不应被解译为引起对本发明的范围的偏离。
结合本文中所揭示的方面描述的各种说明性逻辑块、模块和电路可通过以下各项来予以实施或执行:处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或经设计以执行本文中所描述的功能的其任何组合。处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器、一或多个微处理器结合DSP核心或任何其它这些配置。
本文中所揭示的各方面可以硬件和存储于硬件中的指令来体现,且可驻存于(例如)随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CD-ROM或所属领域中已知的任何其它形式的计算机可读媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息且将信息写入到存储媒体。在替代方案中,存储媒体可以与处理器成一体式。处理器和存储媒体可驻存于ASIC中。ASIC可驻存于远程站中。在替代方案中,处理器和存储媒体可作为离散组件驻存于远程站、基站或服务器中。
还应注意,描述在本文中的示范性方面中的任一者中所描述的操作步骤是为了提供实例和论述。所描述操作可按除所说明序列之外的大量不同序列予以执行。此外,单个操作步骤中所描述的操作实际上可在许多不同步骤中执行。另外,可组合在示范性方面中所论述的一或多个操作步骤。应理解,所属领域的技术人员将易于显而易见,流程图中所说明的操作步骤可以经受大量不同修改。所属领域的技术人员还将理解,可使用多种不同技术和技艺中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示可能贯穿上述描述参考的数据、指令、命令、信息、信号、位、符号和码片。
提供本发明的前述描述以使所属领域的技术人员能够制造或使用本发明。所属领域的技术人员将易于显而易见对本发明的各种修改,且本文中所定义的一般原理可应用于其它变化形式而不会脱离本发明的精神或范围。因此,本发明并非意图限于本文中所描述的实例和设计,而应被赋予与本文中所揭示的原理和新颖特征相一致的最广范围。
Claims (29)
1.一种经压缩存储器控制器CMC,其包括经配置以经由系统总线存取系统存储器的存储器接口;
所述CMC经配置以:
接收存储器读取请求,所述存储器读取请求包括第一存储器线的物理地址,所述第一存储器线包括所述系统存储器中的多个存储器块;
读取所述第一存储器线的所述多个存储器块中的第一存储器块;
基于所述第一存储器块的压缩指示符CI而确定所述第一存储器块是否包括经压缩数据;以及
响应于确定所述第一存储器块不包括所述经压缩数据而:
执行对所述第一存储器线的所述多个存储器块中的一或多个额外存储器块的背靠背读取;以及
与所述背靠背读取并行地:
确定读取存储器块是否包括需求字;以及
响应于确定所述读取存储器块包括所述需求字而返回所述读取存储器块。
2.根据权利要求1所述的CMC,其经进一步配置以响应于确定所述第一存储器块包括所述经压缩数据而:
将所述第一存储器块的所述经压缩数据解压缩成一或多个经解压缩存储器块;以及
确定所述一或多个经解压缩存储器块中的包括所述需求字的经解压缩存储器块;
以及
在返回所述剩余一或多个经解压缩存储器块之前返回包括所述需求字的所述经解压缩存储器块。
3.根据权利要求1所述的CMC,其经进一步配置以:
接收存储器写入请求,所述存储器写入请求包括未经压缩写入数据和包括所述系统存储器中的多个存储器块的第二存储器线的物理地址;
将所述未经压缩写入数据压缩成经压缩写入数据;
确定所述经压缩写入数据的大小是否大于所述第二存储器线的所述多个存储器块中的每一存储器块的大小;
响应于确定所述经压缩写入数据的所述大小不大于所述第二存储器线的所述多个存储器块中的每一存储器块的所述大小,将所述经压缩写入数据写入到所述第二存储器线的第一存储器块;
响应于确定所述经压缩写入数据的所述大小大于所述第二存储器线的所述多个存储器块中的每一存储器块的所述大小,将所述未经压缩写入数据写入到所述第二存储器线的所述多个存储器块中的多者;以及
设置所述第二存储器线的所述多个存储器块中的所述第一存储器块的所述CI以指示所述第一存储器块的压缩状态。
4.根据权利要求1所述的CMC,其进一步包括压缩监视器,所述压缩监视器经配置以基于所述经压缩数据的读取的数目、读取操作的总数目、所述经压缩数据的写入的数目和写入操作的总数目中的至少一者而跟踪压缩比。
5.根据权利要求4所述的CMC,其中所述压缩监视器经配置以作为非限制性实例在每中央处理单元CPU基础、每工作负荷基础、每虚拟机VM基础、每容器基础中的一或多者上和在每服务质量QoS标识符QoSID基础上跟踪所述压缩比。
6.根据权利要求4所述的CMC,其中所述压缩监视器包括用于跟踪以下各者中的所述至少一者的一或多个计数器:所述经压缩数据的读取的所述数目、所述读取操作的所述总数目、所述经压缩数据的写入的所述数目和所述写入操作的所述总数目。
7.根据权利要求4所述的CMC,其经进一步配置以:
响应于接收到所述存储器读请求而确定所述压缩比是否低于阈值;以及
响应于确定所述压缩比低于所述阈值而:
读取所述第一存储器线的所述多个存储器块;
基于所述第一存储器线的所述多个存储器块中的所述第一存储器块的所述CI而确定所述第一存储器块是否包括所述经压缩数据;
响应于确定所述第一存储器块包括所述经压缩数据而:
将所述第一存储器块的所述经压缩数据解压缩成一或多个经解压缩存储器块;
识别所述一或多个经解压缩存储器块中的含有所述需求字的经解压缩存储器块;以及
返回所述经解压缩存储器块;以及
响应于确定所述第一存储器块不包括所述经压缩数据而返回所述多个存储器块;且
所述CMC经配置以响应于确定所述压缩比等于或超出所述阈值而读取所述第一存储器线的所述多个存储器块中的所述第一存储器块。
8.根据权利要求1所述的CMC,其集成到集成电路IC中。
9.根据权利要求1所述的CMC,其集成到选自由以下各项组成的群组的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;
移动电话;蜂窝式电话;计算机;便携式计算机;台式计算机;个人数字助理PDA;
监视器;计算机监视器;电视机;调谐器;无线电;卫星无线电;音乐播放器;数字音乐播放器;便携式音乐播放器;数字视频播放器;视频播放器;数字视频光盘DVD播放器;和便携式数字视频播放器。
10.一种经压缩存储器控制器CMC,其包括经配置以经由系统总线存取系统存储器的存储器接口;
所述CMC经配置以:
接收包括以下各者的存储器读取请求:
包括所述系统存储器中的多个存储器块的第一存储器线的物理地址;以及需求字指示符,其指示所述第一存储器线的所述多个存储器块当中的含有需求字的存储器块;
读取由所述需求字指示符指示的所述存储器块;
基于所述存储器块的压缩指示符CI而确定所述存储器块是否包括经压缩数据;以及
响应于确定所述存储器块不包括所述经压缩数据,与返回所述存储器块并行地,执行对所述第一存储器线的所述多个存储器块中的一或多个额外存储器块的背靠背读取。
11.根据权利要求10所述的CMC,其经进一步配置以响应于确定所述存储器块包括所述经压缩数据而:
将所述存储器块的所述经压缩数据解压缩成一或多个经解压缩存储器块;
识别所述一或多个经解压缩存储器块中的包括所述需求字的经解压缩存储器块;
以及
在返回所述剩余一或多个经解压缩存储器块之前返回包括所述需求字的所述经解压缩存储器块。
12.根据权利要求10所述的CMC,其经进一步配置以:
接收存储器写入请求,所述存储器写入请求包括未经压缩写入数据和包括所述系统存储器中的多个存储器块的第二存储器线的物理地址;
将所述未经压缩写入数据压缩成经压缩写入数据;
确定所述经压缩写入数据的大小是否大于所述第二存储器线的所述多个存储器块中的每一存储器块的大小;
响应于确定所述经压缩写入数据的所述大小不大于所述第二存储器线的所述多个存储器块中的每一存储器块的所述大小,将所述经压缩写入数据写入到所述第二存储器线的所述多个存储器块中的每一存储器块;
响应于确定所述经压缩写入数据的所述大小大于所述第二存储器线的所述多个存储器块中的每一存储器块的所述大小,将所述未经压缩写入数据写入到所述第二存储器线的所述多个存储器块中的多者;以及
设置所述第二存储器线的所述多个存储器块中的每一存储器块的对应CI以指示所述第二存储器线的所述多个存储器块中的每一存储器块的压缩状态。
13.根据权利要求10所述的CMC,其进一步包括压缩监视器,所述压缩监视器经配置以基于所述经压缩数据的读取的数目、读取操作的总数目、所述经压缩数据的写入的数目和写入操作的总数目中的至少一者而跟踪压缩比。
14.根据权利要求13所述的CMC,其中所述压缩监视器经配置以作为非限制性实例在每中央处理单元CPU基础、每工作负荷基础、每虚拟机VM基础、每容器基础中的一或多者上和在每服务质量QoS标识符QoSID基础上跟踪所述压缩比。
15.根据权利要求13所述的CMC,其中所述压缩监视器包括用于跟踪以下各者中的所述至少一者的一或多个计数器:所述经压缩数据的读取的所述数目、所述读取操作的所述总数目、所述经压缩数据的写入的所述数目和所述写入操作的所述总数目。
16.根据权利要求13所述的CMC,其经进一步配置以:
响应于接收到所述存储器读请求而确定所述压缩比是否低于阈值;以及
响应于确定所述压缩比低于所述阈值而:
读取所述第一存储器线的所述多个存储器块;
基于所述第一存储器线的所述多个存储器块中的第一存储器块的CI,确定所述第一存储器块是否包括所述经压缩数据;
响应于确定所述多个存储器块中的所述第一存储器块包括所述经压缩数据而:
将所述第一存储器块的所述经压缩数据解压缩成一或多个经解压缩存储器块;以及
识别所述一或多个经解压缩存储器块中的含有所述需求字的经解压缩存储器块;以及
返回所述经解压缩存储器块;以及
响应于确定所述第一存储器块不包括所述经压缩数据而返回所述多个存储器块;且
所述CMC经配置以响应于确定所述压缩比等于或超出所述阈值而读取由所述需求字指示符指示的所述存储器块。
17.一种用于提供存储器带宽压缩的方法,所述方法包括:
接收存储器读取请求,所述存储器读取请求包括第一存储器线的物理地址,所述第一存储器线包括系统存储器中的多个存储器块;
读取所述第一存储器线的所述多个存储器块中的第一存储器块;
基于所述第一存储器块的压缩指示符CI而确定所述第一存储器块是否包括经压缩数据;以及
响应于确定所述第一存储器块不包括所述经压缩数据而:
执行对所述第一存储器线的所述多个存储器块中的一或多个额外存储器块的背靠背读取;以及
与所述背靠背读取并行地:
确定读取存储器块是否包括需求字;以及
响应于确定所述读取存储器块包括所述需求字而返回所述读取存储器块。
18.根据权利要求17所述的方法,其进一步包括响应于确定所述第一存储器块包括所述经压缩数据而:
将所述第一存储器块的所述经压缩数据解压缩成一或多个经解压缩存储器块;
识别所述一或多个经解压缩存储器块当中的包括所述需求字的经解压缩存储器块;以及
在返回所述剩余一或多个经解压缩存储器块之前返回包括所述需求字的所述经解压缩存储器块。
19.根据权利要求17所述的方法,其进一步包括:
接收存储器写入请求,所述存储器写入请求包括未经压缩写入数据和包括所述系统存储器中的多个存储器块的第二存储器线的物理地址;
将所述未经压缩写入数据压缩成经压缩写入数据;
确定所述经压缩写入数据的大小是否大于所述第二存储器线的所述多个存储器块中的每一存储器块的大小;
响应于确定所述经压缩写入数据的所述大小不大于所述第二存储器线的所述多个存储器块中的每一存储器块的所述大小,将所述经压缩写入数据写入到所述第二存储器线的第一存储器块;
响应于确定所述经压缩写入数据的所述大小大于所述第二存储器线的所述多个存储器块中的每一存储器块的所述大小,将所述未经压缩写入数据写入到所述第二存储器线的所述多个存储器块中的多者;以及
设置所述第二存储器线的所述多个存储器块中的所述第一存储器块的CI以指示所述第一存储器块的压缩状态。
20.根据权利要求17所述的方法,其进一步包括使用压缩监视器,基于所述经压缩数据的读取的数目、读取操作的总数目、所述经压缩数据的写入的数目和写入操作的总数目中的至少一者而跟踪压缩比。
21.根据权利要求20所述的方法,其中所述压缩监视器包括用于跟踪以下各者中的所述至少一者的一或多个计数器:所述经压缩数据的读取的所述数目、所述读取操作的所述总数目、所述经压缩数据的写入的所述数目和所述写入操作的所述总数目。
22.根据权利要求20所述的方法,其进一步包括:
响应于接收到所述存储器读请求而确定所述压缩比是否低于阈值;以及
响应于确定所述压缩比低于所述阈值而:
读取所述第一存储器线的所述多个存储器块;
基于所述第一存储器线的所述多个存储器块中的所述第一存储器块的所述CI而确定所述第一存储器块是否包括所述经压缩数据;
响应于确定所述第一存储器块包括所述经压缩数据而:
将所述第一存储器块的所述经压缩数据解压缩成一或多个经解压缩存储器块;
识别所述一或多个经解压缩存储器块中的含有所述需求字的经解压缩存储器块;以及
返回所述经解压缩存储器块;以及
响应于确定所述第一存储器块不包括所述经压缩数据而返回所述多个存储器块;且
其中读取所述第一存储器线的所述多个存储器块中的所述第一存储器块响应于确定所述压缩比等于或超出所述阈值。
23.一种用于提供存储器带宽压缩的方法,所述方法包括:
接收包括以下各者的存储器读取请求:
包括系统存储器中的多个存储器块的第一存储器线的物理地址;以及
需求字指示符,其指示所述第一存储器线的所述多个存储器块当中的含有需求字的存储器块;
读取由所述需求字指示符指示的所述存储器块;
基于所述存储器块的压缩指示符CI而确定所述存储器块是否包括经压缩数据;
以及
响应于确定所述存储器块不包括所述经压缩数据,与返回所述存储器块并行地,执行对所述第一存储器线的所述多个存储器块中的一或多个额外存储器块的背靠背读取。
24.根据权利要求23所述的方法,其进一步包括响应于确定所述存储器块包括所述经压缩数据而:
将所述存储器块的所述经压缩数据解压缩成一或多个经解压缩存储器块;
识别所述一或多个经解压缩存储器块中的含有所述需求字的经解压缩存储器块;
以及
返回所述经解压缩存储器块。
25.根据权利要求23所述的方法,其进一步包括:
接收存储器写入请求,所述存储器写入请求包括未经压缩写入数据和包括所述系统存储器中的多个存储器块的第二存储器线的物理地址;
将所述未经压缩写入数据压缩成经压缩写入数据;
确定所述经压缩写入数据的大小是否大于所述第二存储器线的所述多个存储器块中的每一存储器块的大小;
响应于确定所述经压缩写入数据的所述大小不大于所述第二存储器线的所述多个存储器块中的每一存储器块的所述大小,将所述经压缩写入数据写入到所述第二存储器线的所述多个存储器块中的每一存储器块;
响应于确定所述经压缩写入数据的所述大小大于所述第二存储器线的所述多个存储器块中的每一存储器块的所述大小,将所述未经压缩写入数据写入到所述第二存储器线的所述多个存储器块中的多者;以及
设置所述第二存储器线的所述多个存储器块中的每一存储器块的CI以指示所述第二存储器线的所述多个存储器块中的每一存储器块的压缩状态。
26.根据权利要求23所述的方法,其进一步包括使用压缩监视器,基于所述经压缩数据的读取的数目、读取操作的总数目、所述经压缩数据的写入的数目和写入操作的总数目中的至少一者而跟踪压缩比。
27.根据权利要求26所述的方法,其中使用所述压缩监视器来跟踪所述压缩比包括作为非限制性实例在每中央处理单元CPU基础、每工作负荷基础、每虚拟机VM基础、每容器基础中的一或多者上和在每服务质量QoS标识符QoSID基础上进行跟踪。
28.根据权利要求26所述的方法,其中所述压缩监视器包括用于跟踪以下各者中的所述至少一者的一或多个计数器:所述经压缩数据的读取的所述数目、所述读取操作的所述总数目、所述经压缩数据的写入的所述数目和所述写入操作的所述总数目。
29.根据权利要求26所述的方法,其进一步包括:
响应于接收到所述存储器读请求而确定所述压缩比是否低于阈值;以及
响应于确定所述压缩比低于所述阈值而:
读取所述第一存储器线的所述多个存储器块;
基于所述第一存储器线的所述多个存储器块中的第一存储器块的CI,确定所述第一存储器块是否包括所述经压缩数据;
响应于确定所述多个存储器块中的所述第一存储器块包括所述经压缩数据而:
将所述第一存储器块的所述经压缩数据解压缩成一或多个经解压缩存储器块;以及
识别所述一或多个经解压缩存储器块中的含有所述需求字的经解压缩存储器块;以及
返回所述经解压缩存储器块;以及
响应于确定所述第一存储器块不包括所述经压缩数据而返回所述多个存储器块;且
其中读取由所述需求字指示符指示的所述存储器块响应于确定所述压缩比等于或超出所述阈值。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562111347P | 2015-02-03 | 2015-02-03 | |
US62/111,347 | 2015-02-03 | ||
US14/844,516 | 2015-09-03 | ||
US14/844,516 US20160224241A1 (en) | 2015-02-03 | 2015-09-03 | PROVIDING MEMORY BANDWIDTH COMPRESSION USING BACK-TO-BACK READ OPERATIONS BY COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM |
PCT/US2016/012801 WO2016126376A1 (en) | 2015-02-03 | 2016-01-11 | PROVIDING MEMORY BANDWIDTH COMPRESSION USING BACK-TO-BACK READ OPERATIONS BY COMPRESSED MEMORY CONTROLLERS (CMCs) IN A CENTRAL PROCESSING UNIT (CPU)-BASED SYSTEM |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107111461A true CN107111461A (zh) | 2017-08-29 |
Family
ID=56553074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680006158.7A Pending CN107111461A (zh) | 2015-02-03 | 2016-01-11 | 在基于中央处理单元(cpu)的系统中通过经压缩存储器控制器(cmc)使用背靠背读取操作来提供存储器带宽压缩 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20160224241A1 (zh) |
EP (1) | EP3254200A1 (zh) |
JP (1) | JP2018503924A (zh) |
KR (1) | KR20170115521A (zh) |
CN (1) | CN107111461A (zh) |
WO (1) | WO2016126376A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113743573A (zh) * | 2020-05-29 | 2021-12-03 | 辉达公司 | 用于访问和利用压缩数据及其状态信息的技术 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10033411B2 (en) * | 2015-11-20 | 2018-07-24 | Intel Corporation | Adjustable error protection for stored data |
US20180060235A1 (en) * | 2016-08-30 | 2018-03-01 | Intel Corporation | Non-volatile memory compression devices and associated methods and systems |
US10402349B2 (en) * | 2017-02-08 | 2019-09-03 | Arm Limited | Memory controller having data access hint message for specifying the given range of one or more memory addresses |
US11886713B2 (en) | 2019-07-18 | 2024-01-30 | Nec Corporation | Memory control method, memory control device, program |
CN111176583B (zh) * | 2019-12-31 | 2021-03-30 | 北京百度网讯科技有限公司 | 一种数据写入方法、装置和电子设备 |
US11444836B1 (en) * | 2020-06-25 | 2022-09-13 | Juniper Networks, Inc. | Multiple clusters managed by software-defined network (SDN) controller |
US11550762B2 (en) * | 2021-02-24 | 2023-01-10 | Sap Se | Implementation of data access metrics for automated physical database design |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385703B1 (en) * | 1998-12-03 | 2002-05-07 | Intel Corporation | Speculative request pointer advance for fast back-to-back reads |
US20050268046A1 (en) * | 2004-05-28 | 2005-12-01 | International Business Machines Corporation | Compressed cache lines incorporating embedded prefetch history data |
US20080059728A1 (en) * | 2006-09-06 | 2008-03-06 | David Michael Daly | Systems and methods for masking latency of memory reorganization work in a compressed memory system |
CN101149714A (zh) * | 2006-09-18 | 2008-03-26 | 国际商业机器公司 | 用于执行直接存储器存取的方法和系统 |
US20120072641A1 (en) * | 2010-09-21 | 2012-03-22 | Hitachi, Ltd. | Semiconductor storage device and data control method thereof |
US20120319334A1 (en) * | 2011-01-11 | 2012-12-20 | Andreas Praller | Internal gas pressure method for producing plastic parts |
CN103106925A (zh) * | 2013-01-04 | 2013-05-15 | 苏州兆芯半导体科技有限公司 | 串联rom单元及其读取方法 |
CN103927269A (zh) * | 2014-04-23 | 2014-07-16 | 东南大学 | 一种基于块匹配的可重构配置信息缓存系统及压缩方法 |
CN104303162A (zh) * | 2012-01-12 | 2015-01-21 | 才智知识产权控股公司(2) | 用于管理缓存接纳的系统和方法 |
US9529535B2 (en) * | 2013-03-13 | 2016-12-27 | Hitachi, Ltd. | Storage system and method of control for storage system |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6879266B1 (en) * | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
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 |
WO2012168960A1 (en) * | 2011-06-07 | 2012-12-13 | Hitachi, Ltd. | Semiconductor storage apparatus and method of controlling semiconductor storage apparatus |
US9582426B2 (en) * | 2013-08-20 | 2017-02-28 | International Business Machines Corporation | Hardware managed compressed cache |
TWI493446B (zh) * | 2013-09-23 | 2015-07-21 | Mstar Semiconductor Inc | 記憶體管理方法及記憶體管理裝置 |
US9124295B2 (en) * | 2013-11-14 | 2015-09-01 | Nicolas Thomas Mathieu Dupont | System and method for data compression and transmission |
CN104699219B (zh) * | 2013-12-10 | 2020-06-23 | 联想(北京)有限公司 | 一种电子设备及信息处理方法 |
US9391646B2 (en) * | 2014-03-25 | 2016-07-12 | Samsung Electronics Co., Ltd. | Joint source-channel encoding and decoding for compressed and uncompressed data |
-
2015
- 2015-09-03 US US14/844,516 patent/US20160224241A1/en not_active Abandoned
-
2016
- 2016-01-11 KR KR1020177021376A patent/KR20170115521A/ko unknown
- 2016-01-11 EP EP16701231.9A patent/EP3254200A1/en not_active Withdrawn
- 2016-01-11 CN CN201680006158.7A patent/CN107111461A/zh active Pending
- 2016-01-11 JP JP2017540588A patent/JP2018503924A/ja active Pending
- 2016-01-11 WO PCT/US2016/012801 patent/WO2016126376A1/en active Application Filing
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6385703B1 (en) * | 1998-12-03 | 2002-05-07 | Intel Corporation | Speculative request pointer advance for fast back-to-back reads |
US20050268046A1 (en) * | 2004-05-28 | 2005-12-01 | International Business Machines Corporation | Compressed cache lines incorporating embedded prefetch history data |
US20080059728A1 (en) * | 2006-09-06 | 2008-03-06 | David Michael Daly | Systems and methods for masking latency of memory reorganization work in a compressed memory system |
CN101149714A (zh) * | 2006-09-18 | 2008-03-26 | 国际商业机器公司 | 用于执行直接存储器存取的方法和系统 |
US20120072641A1 (en) * | 2010-09-21 | 2012-03-22 | Hitachi, Ltd. | Semiconductor storage device and data control method thereof |
US20120319334A1 (en) * | 2011-01-11 | 2012-12-20 | Andreas Praller | Internal gas pressure method for producing plastic parts |
CN104303162A (zh) * | 2012-01-12 | 2015-01-21 | 才智知识产权控股公司(2) | 用于管理缓存接纳的系统和方法 |
CN103106925A (zh) * | 2013-01-04 | 2013-05-15 | 苏州兆芯半导体科技有限公司 | 串联rom单元及其读取方法 |
US9529535B2 (en) * | 2013-03-13 | 2016-12-27 | Hitachi, Ltd. | Storage system and method of control for storage system |
CN103927269A (zh) * | 2014-04-23 | 2014-07-16 | 东南大学 | 一种基于块匹配的可重构配置信息缓存系统及压缩方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113743573A (zh) * | 2020-05-29 | 2021-12-03 | 辉达公司 | 用于访问和利用压缩数据及其状态信息的技术 |
Also Published As
Publication number | Publication date |
---|---|
US20160224241A1 (en) | 2016-08-04 |
KR20170115521A (ko) | 2017-10-17 |
WO2016126376A1 (en) | 2016-08-11 |
JP2018503924A (ja) | 2018-02-08 |
EP3254200A1 (en) | 2017-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107111461A (zh) | 在基于中央处理单元(cpu)的系统中通过经压缩存储器控制器(cmc)使用背靠背读取操作来提供存储器带宽压缩 | |
CN106462496B (zh) | 在基于中央处理单元cpu的系统中使用经压缩存储器控制器cmc来提供存储器带宽压缩 | |
CN106462495B (zh) | 存储器控制器以及基于处理器的系统和方法 | |
TWI596603B (zh) | 用於快取壓縮資料之設備、系統及方法 | |
US10169246B2 (en) | Reducing metadata size in compressed memory systems of processor-based systems | |
JP6768928B2 (ja) | アドレスを圧縮するための方法及び装置 | |
CN106462494A (zh) | 使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法 | |
CN109085997A (zh) | 用于非易失性存储器的存储器高效持续键值储存 | |
CN109690500A (zh) | 使用在以处理器为基础的系统中的空间服务质量(QoS)标记提供异质存储器系统的弹性管理 | |
JP6859361B2 (ja) | 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと | |
US10176090B2 (en) | Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems | |
CN109661655A (zh) | 在芯片删除校正存储器架构中提供存储器带宽压缩 | |
CN108780420A (zh) | 在基于处理器的系统中的存储器中的经压缩存储器线的基于优先级的存取 | |
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 | |
US20160378396A1 (en) | Accelerated address indirection table lookup for wear-leveled non-volatile memory | |
CN104808950B (zh) | 对嵌入式存储器元件的模式依赖性访问 | |
US20180225224A1 (en) | Reducing bandwidth consumption when performing free memory list cache maintenance in compressed memory schemes of processor-based systems | |
CN108780422A (zh) | 在基于中央处理单元cpu的系统中使用压缩指示符ci提示目录来提供存储器带宽压缩 | |
CN110235110A (zh) | 当停顿的写入操作发生时减少或避免来自压缩存储器系统中的未压缩高速缓冲存储器的经逐出高速缓冲存储数据的缓冲 | |
JPH04308945A (ja) | キャッシュメモリ装置 |
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 | ||
AD01 | Patent right deemed abandoned |
Effective date of abandoning: 20201013 |
|
AD01 | Patent right deemed abandoned |