CN106462494B - 使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法 - Google Patents

使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法 Download PDF

Info

Publication number
CN106462494B
CN106462494B CN201580026204.5A CN201580026204A CN106462494B CN 106462494 B CN106462494 B CN 106462494B CN 201580026204 A CN201580026204 A CN 201580026204A CN 106462494 B CN106462494 B CN 106462494B
Authority
CN
China
Prior art keywords
memory
data
address
controller
compression
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
CN201580026204.5A
Other languages
English (en)
Other versions
CN106462494A (zh
Inventor
马托伊斯·科内利斯·安东尼乌斯·阿德里安努斯·黑德斯
纳塔瑞詹·维颜纳森
C·B·韦里利
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 CN106462494A publication Critical patent/CN106462494A/zh
Application granted granted Critical
Publication of CN106462494B publication Critical patent/CN106462494B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • 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/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
    • 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/10Providing a specific technical effect
    • G06F2212/1056Simplification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/305Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本文所揭示的方面包含使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法。在某些方面,使用可提供存储器容量压缩的经压缩存储器控制器。在一些方面,可使用基于线的存储器容量压缩方案,其中执行物理地址PA到物理缓冲器地址的额外翻译,以允许系统存储器中在所述物理缓冲器地址处的经压缩数据用于高效经压缩数据存储。还可使用翻译旁视缓冲器TLB来存储包括对应于所述系统存储器中的物理缓冲器地址的PA标记的TLB条目,以更高效地执行所述PA到所述系统存储器中的所述物理缓冲器地址的所述翻译。在某些方面,可使用基于线的存储器容量压缩方案、基于页的存储器容量压缩方案,或混合的基于线‑页的存储器容量压缩方案。

Description

使用存储器容量压缩的存储器控制器,以及相关的基于处理 器的系统和方法
优先权申请
本申请案主张2014年5月21日申请且标题为“使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法(MEMORY CONTROLLERS EMPLOYINGMEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION,AND RELATED PROCESSOR-BASEDSYSTEMS AND METHODS)”的第62/001,545号美国临时专利申请案的优先权,所述专利申请案以全文引用的方式并入本文中。
本申请案还主张2014年12月16日申请且标题为“使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法(MEMORY CONTROLLERS EMPLOYINGMEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION,AND RELATED PROCESSOR-BASEDSYSTEMS AND METHODS)”的第62/092,326号美国临时专利申请案的优先权,所述专利申请案以全文引用的方式并入本文中。
本申请案还主张2014年12月16日申请且标题为“结合下一读取地址预取使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法(MEMORYCONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION WITH NEXTREAD ADDRESS PREFETCHING,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第62/092,409号美国临时专利申请的优先权,所述专利申请以全文引用的方式并入本文中。
本申请案还主张2015年5月19日申请且标题为“使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法(MEMORY CONTROLLERS EMPLOYING MEMORYCAPACITY COMPRESSION,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第14/716,001号美国专利申请案的优先权,所述专利申请案以全文引用的方式并入本文中。
技术领域
本发明的技术大体上涉及计算机存储器系统,且尤其涉及用于提供具有到存储器的存储器存取接口的中央处理单元(CPU)的计算机存储器系统中的存储器控制器。
背景技术
微处理器在广泛多种应用程序中执行计算任务。典型的微处理器应用程序包含一或多个中央处理单元(CPU),其执行软件指令。所述软件指令指示CPU从存储器中的位置取数据,使用取到的数据来执行一或多个CPU操作,并产生结果。所述结果接着可存储在存储器中。举例来说,此存储器可为在CPU本地的高速缓冲存储器、在CPU块中的CPU之间的共享本地高速缓冲存储器,在多个CPU块之间的共享高速缓冲存储器,或微处理器的主存储器。
就此来说,图1是包含基于CPU的系统12的示例性芯片上系统(SOC)10的示意图。在此实例中,基于CPU的系统12包含多个CPU块14(1)到14(N),其中“N”等于所要的任何数目的CPU块14。每一CPU块块14(1)到14(N)分别含有两个CPU 16(1)、16(2),以及共享层级2(L2)高速缓冲存储器18(1)到18(N)。还提供共享等级3(L3)高速缓冲存储器20,用于存储由CPU块14(1)到14(N)中的任一者使用或在其之间共享的高速缓存的数据。提供内部系统总线22,其允许CPU块14(1)到14(N)中的每一者存取共享L3高速缓冲存储器20以及其它共享资源。可通过内部系统总线22由CPU块14(1)到14(N)存取的其它共享资源可包含存储器控制器24,用于存取主、外部存储器(例如双速率动态随机存取存储器(DRAM)(DDR))、外围装置26、其它存储装置28、快速外围部件互连标准(PCI)(PCI-e)接口30、直接存储器存取(DMA)控制器32和IMC 34。
随着在图1中的基于CPU的系统12中执行的基于CPU的应用程序的复杂性和性能增加,共享L2高速缓冲存储器18和共享L3高速缓冲存储器20,以及可通过所述存储器控制器24存取的外部存储器的存储器容量要求也可增加。然而,在基于CPU的系统中提供额外存储器容量增加了集成电路上的存储器所需的成本和面积。举例来说,如果基于CPU的系统,例如图1中的基于CPU的系统12提供于SOC中,那么添加额外的存储器容量可增加SOC封装。可使用数据压缩来增加基于CPU的系统的有效存储器容量,而不增加物理存储器容量。然而,数据压缩可减少CPU存储器存取时间,且因此降低CPU性能,因为数据以经压缩形式存储,且于是必须在存储器存取期间解压缩。
因此,增加基于CPU的系统的存储器容量,同时随和基于CPU的应用程序的复杂性和性能要求增加,减少物理存储器大小的增加,同时也最小化对CPU性能的影响将是合意的。
发明内容
本文所揭示的方面包含使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法。在某些方面,使用可提供存储器容量压缩的经压缩存储器控制器。在一些方面,可使用基于线的存储器容量压缩方案,其中执行物理地址(PA)到物理缓冲器地址的额外翻译,以允许系统存储器中在物理缓冲器地址处的经压缩数据用于高效经压缩数据存储。还可使用翻译旁视缓冲器(TLB)来存储包括对应于系统存储器中的物理缓冲器地址的PA标记的TLB条目,以更高效地执行PA到系统存储器中的物理缓冲器地址的翻译。在某些方面,可使用基于线的存储器容量压缩方案、基于页的存储器容量压缩方案,或混合的基于线-页的存储器容量压缩方案。可使用特殊存储器压缩容量方案,例如零线压缩,来进一步优化数据压缩。
在这点上,在一个方面中,提供经压缩存储器控制器。经压缩存储器控制器包括存储器接口,其经配置以存取系统存储器。经压缩存储器控制器还包括经压缩控制器。经压缩控制器经配置以接收存储器存取请求,其包括将经由系统总线在系统存储器中存取的PA。经压缩控制器进一步经配置以基于PA到主目录中的条目中的物理缓冲器地址的映射,将接收到的存储器存取请求中的接收到的PA翻译为物理缓冲器地址,所述主目录包括各自对应于系统存储器中的PA的多个物理缓冲器地址。经压缩控制器还经配置以基于物理缓冲器地址来存取系统存储器,以执行接收到的存储器存取请求。
在另一方面,提供经压缩存储器控制器。经压缩存储器控制器包括用于存取系统存储器的装置,以及用于压缩的装置。所述用于压缩的装置是用于接收包括将经由系统总线在系统存储器中存取的PA的存储器存取请求。所述用于压缩的装置还用于经由存储器接口基于所述PA存取系统存储器,以执行接收到的存储器存取请求。所述用于压缩的装置还用于基于PA到主目录中的条目中的物理缓冲器地址的映射,将接收到的存储器存取请求中的接收到的PA翻译为物理缓冲器地址中,所述主目录包括各自对应于系统存储器中的PA的多个物理缓冲器地址。所述用于压缩的装置还用于存取系统存储器中的物理缓冲器地址,以执行接收到的存储器存取请求。
在另一方面,提供一种压缩对基于中央处理单元(CPU)的系统中的系统存储器的存储器存取请求的数据的方法。所述方法包括接收存储器存取请求,其包括将经由系统总线在系统存储器中存取的PA。所述方法进一步包括基于PA到主目录中的条目中的物理缓冲器地址的映射,将接收到的存储器存取请求中的接收到的PA翻译为物理缓冲器地址中,所述主目录包括各自对应于系统存储器中的PA的多个物理缓冲器地址。所述方法还包括基于物理缓冲器地址来存取系统存储器,以执行接收到的存储器存取请求。
在另一个方面,提供CPU系统。所述CPU系统包括:系统总线;至少一个CPU内核,其以通信方式耦合到系统总线;以及经压缩存储器控制器,其以通信方式耦合到所述系统总线。所述CPU系统还包括系统存储器,其以通信方式耦合到所述系统总线。所述系统存储器经配置以存储存储器数据。所述CPU系统进一步包括翻译旁视缓冲器(TLB),其由标记阵列和数据阵列中的多个TLB条目组成。所述多个TLB条目中的每一TLB条目经配置以将来自主目录的包括标记阵列中对应于PA和至少一个物理缓冲器地址的标记的条目存储到系统存储器中,以压缩对应于所述PA的数据。所述CPU系统还包括高速缓冲存储器,其以通信方式耦合到所述系统总线。所述高速缓冲存储器包括多个高速缓存条目,其各自经配置以存储对应于所述PA的未经压缩的存储器数据。所述高速缓冲存储器经配置以经由系统总线接收来自至少一个CPU内核和经压缩存储器控制器的存储器存取请求。如果PA包含于高速缓冲存储器中的高速缓存条目中,所述高速缓冲存储器进一步经配置以提供对应于接收到的存储器存取请求的PA的存储器数据。经压缩存储器控制器经配置以接收存储器存取请求,其包括将经由系统总线在系统存储器中存取的PA。如果所述存储器存取请求的PA不包含于高速缓冲存储器中的高速缓存条目中,那么经压缩存储器控制器进一步经配置以确定用于接收到的存储器存取请求的PA是否包含于TLB中的TLB条目中。如果PA包含于TLB中的TLB条目中,那么经压缩存储器控制器经配置以翻译接收到的存储器存取请求中的接收到的PA,因为TLB条目中的物理缓冲器地址含有TLB。如果PA不包含于TLB中的TLB条目中,那么经压缩存储器控制器经配置以翻译接收到的存储器存取请求中的接收到的PA,因为所述条目处的物理缓冲器地址对应于主目录中的PA。经压缩存储器控制器进一步经配置以基于物理缓冲器地址来存取系统存储器,以执行接收到的存储器存取请求。
在其它方面中,揭示可非常适合小数据块压缩的压缩方法和格式。这些压缩方法和格式可用于本文所揭示的存储器容量和/或存储器带宽压缩方面。
对于这些经压缩存储器控制器和压缩方案中的一些或全部,可有可能增加基于CPU的系统的存储器容量,同时随着基于CPU的应用程序的复杂性和性能要求增加而减少物理存储器大小的增加,同时还最小化对CPU性能的影响。
附图说明
图1是包含基于中央处理单元(CPU)的系统的示范性芯片上系统(SOC)的示意图;
图2是包含具有多个CPU的示范性基于CPU的系统以及使用存储器容量和/或存储器带宽压缩的经压缩存储器控制器的SOC的示意图;
图3是图2中的经压缩存储器控制器的较详细示意图,其中所述经压缩存储器控制器进一步以通信方式耦合到用以提供存储器容量和/或存储器带宽压缩的任选的内部存储器;
图4是可由图3中的经压缩存储器控制器实施的示范性基于线的缓冲存储器容量压缩方案的示意图;
图5是存储在经压缩存储器中的可由图3中的经压缩存储器控制器存取以提供基于页的缓冲存储器容量压缩方案的示范性数据页(DP)的示意图;
图6是示范性翻译旁视缓冲器(TLB)的示意图,所述TLB经配置以使物理地址(PA)与到存储在经压缩存储器中的经压缩数据页的数据页地址(DPA)相关,且可由图3中的经压缩存储器控制器存取,以提供基于页的缓冲存储器容量压缩方案;
图7是包含在图4到6中的可用于基于页或基于线的缓冲存储器容量压缩方案中的示范性自由列表缓冲器的示意图;
图8是可由图3中的经压缩存储器控制器实施的示范性混合基于线/页的缓冲存储器容量压缩方案的示意图;
图9是由各自包括存储在可由图3中的经压缩存储器控制器存取的经压缩存储器中的多个数据存储器块的多个数据缓冲器(DB)组成的示范性数据页(DP)的示意图,因为存储经压缩高速缓冲存储器行提供图8中的混合的基于线/页的缓冲存储器容量压缩方案;
图10是说明图3中的经压缩存储器控制器根据图8中的用于存储器存取的混合基于线/页的缓冲存储器容量压缩方案将PA翻译为图9中的所分配数据页(DP)内的所分配DB的示范性过程的流程图;
图11A说明图3中的另外包含任选的L4高速缓冲存储器来补偿归因于经压缩存储器控制器中的地址翻译的性能损失的SOC的实例;
图11B说明图11A中的SOC的实例,其启发经压缩存储器控制器中的L4高速缓冲存储器和翻译旁视缓冲器(TLB),以在L4高速缓冲存储器中确定命中或未中之前查找PA;
图12是示范性动态存储器大小设计的示意图;
图13是可由图3中的经压缩存储器控制器实施的示范性存储器带宽压缩方案的示意图;
图14说明图3中的包含任选的L4高速缓冲存储器来补偿归因于经压缩存储器控制器中的地址翻译的性能损失的SOC的实例;以及
图15到21说明示范性数据块压缩格式和方案,其中的任一者可由经压缩存储器控制器用来压缩存储器数据块,并解压缩经压缩的存储器数据块。
具体实施方式
现参考各图,描述本发明的数个示范性方面。词语“示范性”在本文中用于表示“充当实例、例子或说明”。本文中描述为“示范性”的任何方面未必解释为比其它方面优选或有利。
本文所揭示的方面包含使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法。在某些方面,使用可提供存储器容量压缩的经压缩存储器控制器。在一些方面,可使用基于线的存储器容量压缩方案,其中执行物理地址(PA)到物理缓冲器地址的额外翻译,以允许系统存储器中在物理缓冲器地址处的经压缩数据用于高效经压缩数据存储。还可使用翻译旁视缓冲器(TLB)来存储包括对应于系统存储器中的物理缓冲器地址的PA标记的TLB条目,以更高效地执行PA到系统存储器中的物理缓冲器地址的翻译。在某些方面,可使用基于线的存储器容量压缩方案、基于页的存储器容量压缩方案,或混合的基于线-页的存储器容量压缩方案。可使用特殊存储器压缩容量方案,例如零线压缩,来进一步优化数据压缩。
在这点上,图2是包含类似于图1中的基于CPU的系统12的具有多个CPU块14(1)到14(N)的示范性基于CPU的系统12'的SOC 10'的示意图。图2中的基于CPU的系统12'包含与图1中的基于CPU的系统12共用的一些组件,其由图1与2之间共用的元件编号表示,且因此将不再重新描述。然而,在图2中的基于CPU的系统12'中,提供经压缩存储器控制器36。经压缩存储器控制器36控制对系统存储器38的存取。系统存储器38可包括一或多个双数据速率(DDR)动态随机存取存储器(DRAM)40(1)到40(R)(下文称为DRAM 40(1)到40(R)),作为非限制性实例。在此实例中,经压缩存储器控制器36使用根据本文和下文所揭示的方面的存储器容量和/或存储器带宽压缩。如下文将在示范性方面中更详细地论述,经压缩存储器控制器36允许基于CPU的系统12'具有存储器容量的有效增加,而不必增加图1中的基于CPU的系统12上的物理存储器大小,并且以最小化对CPU性能的影响或不影响CPU性能的方式。类似于图1中的基于CPU的系统12的存储器控制器24,图2中的基于CPU的系统12'的经压缩存储器控制器36通过内部系统总线22由CPU块14(1)到14(N)共享。
另外,关于图2,每一CPU块14(1)到14(N)中的CPU 16(1)和16(2)可包含单个硬件线程或多个硬件线程。如果CPU 16(1)和16(2)中的每一者中提供多个硬件线程,那么因此可增加CPU 16(1)和16(2)的等待时间。因此,可能希望将共享高速缓冲存储器的增加的存储器容量提供给基于CPU的系统12'中的CPU块14(1)到14(N),以存储用于CPU块14(1)到14(N)的每一CPU 16(1)和16(2)中的多个线程的信息。在这点上,如下文将更详细地论述,基于CPU的系统12'还可包含经压缩高速缓冲存储器42,其为所有CPU块14(1)到14(N)的共享高速缓冲存储器。在此实例中,经压缩高速缓冲存储器42是L3高速缓冲存储器。通过提供经压缩高速缓冲存储器42,可增加共享高速缓冲存储器的存储器容量,而例如不必增加图1中的基于CPU的系统12中的共享L3高速缓冲存储器20上的物理存储器大小。
因此综上所述,通过提供图2中的基于CPU的系统12'中的经压缩存储器控制器36和/或经压缩高速缓冲存储器42,可增加基于CPU的系统12'的存储器容量,而不必增加或最低限度地增加图1中的基于CPU的系统12上的物理存储器大小,并且以最小化对CPU性能的影响或不影响CPU性能的方式。本发明的其余部分将论述图2中的基于CPU的系统12'中的经压缩存储器控制器36和/或经压缩高速缓冲存储器42的示范性方面和特征。
在这点上,图3说明图2中的经压缩存储器控制器36的示范性内部组件的较详细示意图。在此实例中,在与含有图2中的CPU块14(1)到14(N)的半导体裸片46(1)、46(2)分开的半导体裸片44上提供经压缩存储器控制器36。或者,经压缩存储器控制器36可包含于与CPU块14(1)到14(N)共用的半导体裸片中。不管裸片配置如何,提供经压缩存储器控制器36,使得CPU块14(1)到14(N)可经由内部系统总线22向经压缩存储器控制器36作出存储器存取请求,且通过经压缩存储器控制器36从存储器接收数据。
继续参看图3,经压缩存储器控制器36控制对系统存储器38的存储器存取的操作,所述系统存储器在图2和3中示出为DRAM 40(1)到40(R)。经压缩存储器控制器36包含用以服务存储器存取请求的多个DRAM接口48(1)到48(P)(例如DDR接口)。在这点上,在此实例中,经压缩存储器控制器36包含经压缩控制器50。经压缩控制器50响应于来自图2中的CPU块14(1)到14(N)的存储器存取请求,控制压缩存储到系统存储器38的数据以及解压缩从系统存储器38检索的数据。以此方式,可向CPU块14(1)到14(N)提供大于经压缩存储器控制器36所存取的存储器的实际容量的虚拟存储器地址空间。经压缩控制器50还可经配置以执行经由内部系统总线22提供到CPU块14(1)到14(N)的信息的带宽压缩。
如下文将更详细地论述,经压缩控制器50可执行任何数目的压缩技术和算法,来提供存储器容量和/或带宽压缩。为经压缩控制器50所需的数据结构和其它信息提供本地存储器52,以执行此类压缩技术和算法。在这点上,在此实例中以静态随机存取存储器(SRAM)54的形式提供的本地存储器52也提供于经压缩存储器控制器36中,以存储经压缩控制器50所需的数据结构和其它信息,以执行压缩技术和算法。本地存储器52具有将用于经压缩控制器50可需要用来执行压缩技术和算法的数据结构和其它数据存储的足够大小。本地存储器52还可经分割以含有高速缓冲存储器,例如L4高速缓冲存储器(L4),以提供额外的高速缓冲存储器,在经压缩存储器控制器36内内部使用。因此,L4控制器55也可提供于经压缩存储器控制器36中,以提供对L4高速缓冲存储器(L4)的存取。如下文将更详细地论述,增强型压缩技术和算法可需要较大的内部存储器。举例来说,本地存储器52可为128千字节(kB)。
另外,如图3中示出且如将在下文更详细地描述,还可为经压缩存储器控制器36提供任选的额外内部存储器56。作为一实例,可提供额外内部存储器56作为DRAM。如下文将更详细地论述,额外内部存储器56可促进额外的或比用于经压缩存储器控制器36的本地存储器52中大的量的数据结构和其它数据,从而提供存储器压缩和解压缩方案,以增加基于CPU的系统12'的存储器容量和/或存储器带宽压缩。内部存储器控制器58提供于经压缩存储器控制器36中,以控制对额外内部存储器56的存储器存取来用于压缩。内部存储器控制器58不可供CPU块14(1)到14(N)存取或检视。
因此,综上所述,关于图3,提供具有对本地存储器52和额外内部存储器56的存取权的经压缩存储器控制器36来用于存储压缩数据结构信息可以与提供额外物理存储器相比较低的成本,提供存储器容量压缩以实现增加的存储器容量。避免增加基于CPU的系统12'的物理存储器可节约电力消耗,且与提供额外物理存储器相比,减小封装占用面积和成本。经压缩存储器控制器36所提供的存储器容量和/或带宽压缩对CPU块14(1)到14(N)的操作系统控制操作透明。
另外,图3中的经压缩存储器控制器36还可执行存储器带宽压缩和零线压缩。本地存储器52可用以存储用于此类压缩的较大数据结构。举例来说,带宽压缩可由在所述数据也未经压缩的情况下存储较大数据结构的经压缩存储器控制器36实现。举例来说,如果传送128个字节,那么在带宽压缩方案中可传送64个字节以减少存储器带宽,但所述128字节块的其它64个字节可保持未使用,从而提供增加的经压缩数据结构。然而,如果还使用存储器容量压缩,所述128字节块的其余64个字节可再用于另一存储器块。增加的存储器带宽可减少存储器存取等待时间,且允许较多的CPU 16(1)、16(2)或其相应线程存取相同数目的存储器信道,而不影响等待时间或最小化对等待时间的影响。或者,如果经压缩存储器控制器36不执行此类压缩,那么与存储器信道的较大数目相比,可减小存储器信道的数目,同时实现类似的等待时间结果,从而降低系统层级电力。
通过提供供图3中的经压缩存储器控制器36使用的额外内部存储器56,可使用于经压缩存储器控制器36执行压缩的更大量的数据结构和数据可用于进一步减少归因于压缩的等待时间效应。可通过压缩和/或存储器信道的减少,将额外CPU 16(1)、16(2)和/或其中的硬件线程提供到图3中的具有增加的有效存储器容量的基于CPU的系统12'。如果用于供经压缩存储器控制器36执行压缩的数据结构和数据需要更多的存储器,可提供额外的内部存储器56,如上文所论述。然而,因为额外内部存储器56在经压缩存储器控制器36外部,例如在不同的半导体裸片上,例如对额外内部存储器56的存储器存取等待时间可大于对本地存储器52的存储器存取等待时间,但额外内部存储器56的增加的大小可允许增强的压缩和/或每CPU 16容纳较大数目的CPU 16(1)、16(2)和/或硬件线程。
为图3中的经压缩存储器控制器36中的存储器容量和/或带宽压缩提供的资源中的每一者,包含本地存储器52和额外内部存储器56,可个别地或彼此组合使用,以实现资源和面积、电力消耗、通过存储器容量压缩实现的增加的存储器容量,以及通过存储器带宽压缩实现的增加的性能之间的所要的均衡。在需要时,可启用或停用存储器容量和存储器带宽压缩。另外,可启用或停用上文所述的由经压缩存储器控制器36使用的资源,以实现存储器容量和/或带宽压缩效率、电力消耗和性能之间的所要折衷。现在将论述使用可供经压缩存储器控制器36使用的这些资源的示范性存储器容量和/或带宽压缩技术。
在论述结合下一读取地址预取使用存储器容量和/或带宽压缩的存储器控制器之前,首先关于图4到21论述图2和3中的经压缩存储器控制器36可使用的不同类型的存储器压缩方案的若干实例。可结合这些不同的存储器压缩方案,使用结合下一读取地址预取使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法。
在这点上,图4是可由图3中的经压缩存储器控制器36实施的示范性基于线的缓冲存储器容量压缩方案60(下文“基于线的压缩方案60”)的示意图。如下文将更详细地论述,基于线的压缩方案60将超出虚地址(VA)的向用于CPU操作系统中的物理地址(PA)的新等级的翻译,以提供比图2中的基于CPU的系统12'中的可用物理存储器多的存储器容量。所存取的存储器位置的物理地址(PA)另外翻译为物理缓冲器地址(PBA)。PBA含有到经压缩存储器控制器36可存取的经压缩存储器(例如系统存储器38)中的地址(图4中的PB地址),其中由CPU 16提供到经压缩存储器控制器36的PA的经压缩数据贮存在其中。因此,通过在经压缩存储器控制器36中提供PBA的此额外翻译层,系统存储器38可有效地存储比通常将在系统存储器38中物理可寻址的PA多的PA。
在这点上,参考图4,在此基于线的压缩方案60中,经压缩存储器控制器36将经压缩数据存储到系统存储器38,并从系统存储器38存取经压缩数据。在此实例中,经压缩存储器控制器36经配置以针对存储器存取中寻址的每一PA,一次存取存储器线大小的128字节存储器数据块(以未经压缩的形式)。这可因为当一次存取128个字节时,在此实例中呈DRAM形式的系统存储器38是高效的。或者,存储器数据块可为其它字节长度,例如64个字节。返回到本实例,经压缩存储器控制器36压缩系统存储器38中的128字节存储器数据块,以增加用经压缩存储器控制器36可寻址的有效存储器容量,超过经压缩存储器控制器36可存取的物理存储器的大小。
继续参看图4,注意不是每个128字节存储器数据块均可由经压缩存储器控制器36以相同压缩字节大小压缩。一些存储器数据块可压缩到比其它存储器数据块小的大小,取决于包含于所述存储器数据块中的数据的性质以及所使用的压缩方案。因此,在此实例中,将系统存储器38分割成多个位长度池62(1)到62(Q),其各自可由PBA寻址。池62(1)到62(Q)各自将128字节数据块的经压缩数据以经压缩形式存储在物理缓冲器(PB)中。提供每一PB池62(1)到62(Q),以存储不同大小的经压缩数据,使得可压缩到较小大小的存储器数据块可分组在一起,以避免压缩之后的未用位存储。尽管在图4中将PB池62(1)到62(Q)示出为分组在连续PBS中,但注意,不要求PB池62(1)到62(Q)含有连续的PB。如下文将更详细地论述,每一PB池62(1)到62(Q)的大小可由经压缩存储器控制器36动态地指派。
在此实例中,PB池62(1)用于存储可存储在经压缩的至多达32个字节中的经压缩存储器数据块。PB池62(2)用于存储可存储在经压缩的至多达64个字节中的经压缩存储器数据块。PB池62(3)用于存储可存储在至多达96个字节中的经压缩存储器数据块。PB池62(4)用于存储可存储在至多达128个字节中的经压缩存储器数据块,其将包含无法在其原生128字节长度下压缩的任何存储器数据块。每一PB池62(1)到62(Q)包含由经压缩存储器控制器36压缩在为PB池62(1)到62(Q)指定的数据压缩大小内的PB。如将在下文更详细地描述,每一PB池62(1)到62(Q)还含有相应的自由节点列表64(1)到64(Q)(图4仅示出64(1)),其将自由PBA列表包含在其将由经压缩存储器控制器36用来在写入事务期间将未来PB存储在自由PBA处的相应PB池62(1)到62(Q)中。
注意,所提供的PB池62的数目(“Q”)可取决于设计和存储器数据块大小而变化。举例来说,如果存储器数据块大小为256个字节,那么可提供八(8)个PB池62,各自经配置而以32个字节的增量(例如32个字节、64个字节、96个字节、…256个字节)来存储经压缩存储器数据块。增加用于给定存储器数据块大小的PB池62的数目可提供增加的存储器压缩比率,因为所述存储器数据块大小分为较小的字节大小,但还可增加管理较大数目的PB池62的开销。另外,增加存储器设计中的存储器数据块大小可实现改进的存储器压缩比,但还可减小每一PB池62(1)到62(Q)的大小,或需要较多的存储器以提供每一PB池62(1)到62(Q),来允许所要的PB池62(1)到62(Q)大小。
在图4中的基于线的压缩方案60的初始化时,所有PB包含于自由节点列表64中,意味着尚未将任何PB分配到PA。在存储器事务操作期间,经压缩存储器控制器36存取系统存储器38,以基于从CPU 16(图2)接收到的PA来存取用于存储器存取的PB。经压缩存储器控制器36可解压缩所述PB,以经由内部系统总线22将未经压缩的数据提供到请求CPU 16。或者,经压缩存储器控制器36可经由内部系统总线22将PB以未经压缩形式提供到请求CPU 16,同时还执行存储器带宽压缩。因为系统存储器38中的PB可由PBA存取,所以经压缩存储器控制器36必须执行用于存储器存取请求的接收到的PA到PBA的翻译,来存取对应于所述存储器存取请求中的PA的正确PB。在这点上,主目录66可提供于存储PA到PBA翻译的系统存储器38中。经压缩存储器控制器36使用经翻译的PA来执行主目录66中的查找,以获得如在先前建立PB时指派给PA且在写入事务期间基于PB的压缩大小存储在PB池62(1)到62(Q)中的对应PBA。PBA可与所指派的PB池62(1)到62(Q)中的任何PB相关联,以在发生存储器存取时,获得将经压缩数据存储在任何PB中的灵活性,而邻近PB不必对应于邻近PBA。这允许实现较大的压缩速率。
继续参看图4,可希望允许经压缩存储器控制器36更快地将PA翻译为最近已经翻译的PBA,而不要求存取主目录66。在这点上,在所述实例中,本地存储器52可在此实例中配置为n向关联高速缓冲存储器,以提供翻译旁视缓冲器(TLB)68。在这点上,本地存储器52中的TLB 68以可类似于n向高速缓冲存储器而组织的SRAM 54的形式提供。TLB 68含有具有PA的标记72作为包含在其中的TLB条目74的一部分的标记阵列70。数据阵列76提供于含有多个TLB条目74的SRAM 54中,每一TLB条目包括来自主目录66的针对每一标记72的PBA的数据条目和对应地址长度78。提供提供于SRAM 54中的n向关联TLB 68的宽度,来促进存储在每一TLB条目74中的所要量的PBA,以及所述PBA的所要地址长度78。PBA的地址长度78确定在PB池62(1)到62(Q)中存取PB到什么粒度(例如页、字节等)。
在这点上,继续参看图4,当经压缩存储器控制器36执行存储器存取时,经压缩存储器控制器36使用经翻译的PA来执行SRAM 54的标记阵列70中的查找。如果标记阵列70中的TLB条目74具有与经翻译的PA匹配的标记72,那么TLB 68中发生TLB命中。因此,对应于包含在主目录66中的PA的PBA包含于对应于标记72的TLB条目74中的数据阵列76。在此情境下,经压缩存储器控制器36无需存取主目录66来将PA翻译为PBA,因此减少所涉及的等待时间,因为存取系统存储器38中的主目录66可大于对SRAM 54的存取。经压缩存储器控制器36可使用PBA以及匹配TLB条目74中的对应地址长度78来知晓要将系统存储器38中寻址哪一PB,以及要读取指派给所述PB的多少字节来存储完全经压缩存储器数据。如果事务是读取事务,那么在PBA位置处从系统存储器38读取经压缩线。如果事务是写入事务,那么经压缩数据存储在系统存储器38的PB中的PBA处。
如果图4中的TLB 68中发生TLB未中,那么经压缩存储器控制器36使用所述PA来执行主目录66中的查找。根据替代策略,从TLB 68收回TLB条目74。将主目录66中对应于PA的PBA放置到TLB 68中。从用于PA的主目录66获得的PB起始位置和地址长度78由经压缩存储器控制器36用来存取PB中的经压缩数据。如果事务是读取事务,那么在PBA位置处从系统存储器38读取经压缩线。
如果事务是写入事务,那么经压缩数据存储在系统存储器38的PB中的PBA处。如果PBA处的PB的长度与经压缩线的压缩大小相同,那么可将经压缩线写入到系统存储器38中的PBA位置处的相同PB中。如果PBA处的PB的长度不同于经压缩线的压缩大小,那么经压缩存储器控制器36将基于将容纳待存储在系统存储器38中的经压缩线的系统存储器38,来寻找另一PB池62(1)到62(Q)中的自由节点列表64中的自由PB。下文将在图7中更详细地论述自由节点列表64的操作。如本文所论述,含有自由PB的本地拉动缓冲器可从对应池的自由节点列表补给。
SRAM 54中的TLB条目74大小可为任何所要大小,例如64个字节、128个字节或256个字节。在此实例中,TLB条目74含有来自主目录66的四(4)个PBA,因为经压缩存储器控制器36经配置以一次将四(4)个PBA从系统存储器38加载到SRAM 54,如图4中示出。在每一PBA中提供两(2)位编码80,如图4中示出,以指示所述PBA对应于哪一PB池62(1)到62(4)。经压缩存储器控制器36接着使用对应于所述PA的PBA来存取对应PB池62(1)到62(4)中的PBA的位置处的正确PB。
在图4的此实例中,可为全部为0的PA(即,零线)的存储器数据提供特殊情况。在此情况下,经作为特殊情况,压缩存储器控制器36可将PBA编码为SRAM 54中的PA的PBA地址0,意味着尚未指派PB。经压缩存储器控制器36将PBA中的0PB地址辨识为对应于全部为0的PA的存储器数据。因此,将全部为0的存储器数据压缩到有效0字节,因为不要求PB地址0处的PB用于经压缩存储器控制器36。因此,从不需要存取PB池62(1)到62(Q)来获得全部为0的存储器数据。对于零线压缩情况,由于不必存取系统存储器38,因此电力消耗也减小。
如果特定PB池62(1)到62(Q)中的可用PB耗尽,则经压缩存储器控制器36可经配置以将PA指派给另一PB池62(1)到62(Q)中的其它PBA。可将此功能性提供作为经压缩存储器控制器36所进行的背景任务的一部分。耗尽意味着特定PB池62(1)到62(Q)中的可用PB下降到低于阈值,因为在给定PB池62(1)到62(Q)中无剩余PB可用之前,可能需要将PA指派给另一PB池62(1)到62(Q)中的其它PBA。如果给定PB池62(1)到62(Q)耗尽,可使其它PB池62(1)到62(Q)中的其它PB可用。举例来说,如果可通过经压缩存储器控制器36将存储器数据压缩到32字节或更低,且例如32字节PB池62(1)中不再有可用的PB,则经压缩存储器控制器36可在PB分离操作中,将64字节PB池62(2)中的PB重新指派到PB池62(1)的两(2)个32字节PB中。然而,如果例如128字节PB池62(4)中不再有可用PB,则经压缩存储器控制器36可重新指派64字节PB池62(3)中的两(2)个PB,以在合并PB操作中形成PB池62(4)的一个128字节PB。然而,在此实例中,64字节PB池62(3)中的两个64字节PB必须是连续,以在合并PB操作中重新指派给128字节PB池62(4)。
基于线的压缩方案60的一个特征是提供于PBA中的较大PB地址存储在SRAM 54中,因为在PB池62(1)到62(Q)中,在每线基础上(例如,相对于每页基础)存取PB。因此,SRAM 54所提供的TLB 68的大小可因此较大,因为大量的位存储在每一TLB条目74中的每一PBA中。在经压缩存储器控制器36执行的存储器容量压缩中,可能希望具有较小的TLB 68来将PA提供到PBA地址翻译。
在这点上,参考图5,基于页的缓冲存储器容量压缩方案82(下文“基于页的压缩方案82”)可由图3中的经压缩存储器控制器36执行,以存储和存取经压缩数据。基于页的压缩方案82类似于图4中的基于线的压缩方案60,且可使用提供于图2中的基于CPU的系统12'中的相同资源。因此,本文所论述的基于页的压缩方案82将参考图2和3。如下文将更详细地论述,提供基于页的压缩方案82允许在图3中的SRAM 54中提供与图4中的基于线的压缩方案60相比较小的TLB 68大小,因为存储在SRAM 54中的地址充当整个存储器页而不是缓冲器线的TLB 68地址。因此,存储在SRAM 54中的地址的大小不必为全地址长度。然而,在基于页的压缩方案82中,存储器页大小(例如1kB、2kB、3kB、4kB)的数据页(DP)的池分配在系统存储器38(图3)中,而不是例如图4的实例中的32、64、96和128字节的较低字节大小的线大小PB的所分配池。并且,类似于图4中的基于线的压缩方案60,基于页的压缩方案82将DP池保持在系统存储器38中。
参考图5,示出系统存储器38,其针对基于页的压缩方案82含有单个DP。在此实例中,DP的大小为2kB。将系统存储器38中的DP分成相等大小的六十四(64)个物理缓冲器(PB),在此实例中,其为32个字节。物理缓冲器(PB)类似于上文的基于线的压缩方案60中的PB,只是经压缩数据可横跨DP内的连续PB。线0仅占用图5中的示范性DP中的一个32字节PB。线1占用图5中的示范性DP中的三(3)个连续32字节PB。线31占用两(2个连续32字节PB。横跨多于一个PB的线始终存储在DP中的连续PB中。DP以及包含在其中的PB可通过数据页地址(DPA)寻址,所述DPA可通过经压缩存储器控制器36从PA翻译。类似于图4中的主目录66,系统存储器38的存储DP的部分将用于主目录,以将PA翻译为用于存储在系统存储器38中的所存取经压缩DP的DPA。
图6说明可提供于SRAM 54中以针对最近翻译的PA将PA更快地翻译为数据页地址(DPA)的TLB 84。TLB 84类似于高速缓冲存储器而组织,但具有TLB条目86。TLB 84中的每一TLB条目86表示系统存储器38中的DP。PA包含于每一有效TLB条目86中的标记阵列90中的标记88中。DPA存储在TLB 84中的数据阵列92中的对应于PA的TLB条目86中。DPA可存储在比PB的全地址位大小少的位中,因为DPA需要在系统存储器38中寻址页。如图6中示出,为含有多个线位置(例如L0Pos、L1Pos、……Ln Pos)以及对应于存储器页面中对应于DPA处的DP的PB的对应线长度(例如L0Len、L1Len、……Ln Len)的每一DPA提供管理信息94,如图5所示。线位置指示DP中的线的开始,且线长度指示包含在DP中的线中的PB的数目。在TLB 84中的TLB未中后,TLB 84加载有与DPA相关联的TLB条目86,其小于图4中的基于线的压缩方案60中的TLB条目74。
图5和6中的基于页的压缩方案82还使用自由节点列表来在系统存储器38中分配自由DP,以用于压缩存储器页,类似于图4中的基于线的压缩方案60中的自由节点列表64。图7示出可用以在系统存储器38中分配自由DP以用于在基于页的压缩方案82中中压缩存储器页的示范性自由节点列表96。如本文所示,自由节点列表96是链表。假设自由节点列表96中的DPA自由列表98(1)到98(R)的数目足以涵盖所有DP的所有DPA。在此实例中,DPA自由列表98(1)到98(R)实际上是也被称作自由列表DP的DP本身。尽管将DPA自由列表98(1)到98(R)示出为分为具有等于DP的大小的若干DPA,但不必将连续DPA指派给给定DP。在每一DPA自由列表98(1)到98(R)内的是自由DPA100(1)到100(R)的列表。当需要指派新的DPA来将经压缩数据存储在DP的PB中时,将来自自由节点列表96的对应于DP大小的一或多个自由DPA100(1)到100(R)拉到本地拉动缓冲器102中。头部指针104提供于头部自由DPA100(1)中,以遍历自由节点列表96。每DP大小的本地推动缓冲器108含有对应池的最近释放的DPA。当将包含在DPA自由列表98内的所有DPA传送到本地拉动缓冲器102时,DP本身可经由本地推动缓冲器108传回到自由节点列表64。提供尾部指针106,以允许不再指派给将从本地推动缓冲器108推送到自由节点列表96的尾部中的DP中的DB的DPA的释放。类似于图7中的基于页的压缩方案82的方案也可用于图4中的基于线的压缩方案60的自由节点列表64。可为从用于基于页的存储器压缩方案82的自由节点列表96拉动的DPA一次指派一存储器页,而可为从用于图4中的基于线的压缩方案60的自由节点列表64拉动的DPA一次指派一缓冲线。并且,因为下一组DP的本地拉动缓冲器102和本地推动缓冲器108维持,所以这允许经压缩存储器控制器36在来自DRAM的单个突发中将指向自由DP的主指针读取或写入到自由节点列表96,例如为了效率目的。
对于图4中的基于线的压缩方案60或图5和6中的基于页的压缩方案82,本文可提供的另一特征是用以存储DB(对于基于线的压缩方案60)或DP(对于基于页的压缩方案82)的系统存储器38可用以存储DBA(对于基于线的压缩方案60)或DPA(对于基于页的压缩方案82)的自由节点列表64或96。这节约了用于存储自由节点列表64或96的存储器。参考图7中的自由节点列表96,头部指针104允许经压缩存储器控制器36知晓存储具有系统存储器38的DP内的DP自由节点的开头。尾部指针106允许经压缩存储器控制器36知晓存储在具有系统存储器38的DP内的DP自由节点的结尾。将从自由节点列表96新分配的DPA添加到系统存储器38中的自由节点列表96的结尾,使得当经压缩存储器控制器36请求分配新的DPA时,将不重新分配所分配的DPA。当DPA指针在自由节点列表96中释放时,其返回到自由节点列表96。当自由节点列表64在尾部为满时,可从本地拉动缓冲器102分配新的自由DP,并将其添加到自由节点列表64。图4中的自由节点列表64可类似地存储在图4中的系统存储器38的DB内,且由经压缩存储器控制器36在其中存取。
用以在需要时(当系统存储器38中仅较小DP可用时)创建较大DP的另一DP管理方法是保持若干对DP。举例来说,1Kb DP可与3kB DP配对。2kB DP可与另一2kBDP配对。在系统存储器38内,小于最大页大小(例如4kB)的所占用的DP可保持指向对应PA的后指针。在背景任务中,一旦达到DP的阈值分配,经压缩存储器控制器36可扫描自由节点列表96,并寻找也具有自由DP对的自由DP 100。自由DP 100及其配对可组合以在系统存储器38中提供较大DP。如果达到第二阈值,那么在背景任务中,经压缩存储器控制器36可扫描自由节点列表96,并在对应DP对的另一DP中查看,来看其是否被经压缩数据占用。如果是,经压缩存储器控制器36可获得指向PA的尾部指针106,将所占用的DP从用于相同DP大小的自由节点列表96移动到另一DP,将两(2)个邻近DP合并到较大DP中,并更新自由节点列表96。经压缩存储器控制器36可接着使用指向PA的尾部指针106来更新主目录66,且任选地更新TLB 68,以指向用于所占用的DP的新DPA。
可希望提供存储器容量压缩方案,其包含上文关于图4所述的基于线的压缩方案60和上文关于图5到7所述的基于页的压缩方案82两者的特性。在这点上,图8是可由图3中的经压缩存储器控制器36实施的示范性混合基于线/页的缓冲存储器容量压缩方案110的示意图。如下文将论述,混合基于线/页的缓冲存储器容量压缩方案110含有基于线的缓冲存储器容量压缩方案和基于页的缓冲存储器容量压缩方案两者的特征。混合基于线/页的缓冲存储器容量压缩方案110含有与图4中说明的基于线的压缩方案60共用的组件,其用共用元件编号来表示。
在这点上,参看图8,在混合基于线/页的缓冲存储器容量压缩方案110中,经压缩存储器控制器36经配置以针对存储器存取中寻址的每一PA,一次存取若干128字节存储器数据块(以未经压缩形式)。将系统存储器38分成相同大小(例如1kB)的多个物理块(PB)112(1)到112(Q),其各自可由TLB 68的数据阵列76中的TLB条目74中的缓冲器指针114寻址。每一PA是映射到多个缓冲器指针114(1)到114(S)的页地址(例如4kB),所述缓冲器指针各自对应于系统存储器38中的对应的多个PB 112(1)到112(Q)(例如各自1kB)。因此,通过将PA页地址分为若干PB 112(1)到112(Q),每一PB 112可具有相同大小,以实现类似于基于线的存储器容量压缩方案的益处,但数据压缩仍由经压缩存储器控制器36在数据页大小基础(例如4kB)上管理,类似于基于页的存储器容量压缩方案。另外,如下文将论述,每一PB 112内的存储器数据块中的每一者具有相同大小(例如32个字节)。
图9是根据图8中的混合基于线/页的缓冲存储器压缩方案110的由提供于系统存储器38中的多个1kB PB 112(1)到112(4)组成的4kB大小的示范性数据页(DP)的示意图。如本文所示,每一PB 112(1)到112(4)包括多个存储器数据块116,其各自具有相同大小(例如在此实例中,各自32个字节)。注意,对对应于将连续地存储在系统存储器38中的给定PA的PB 112(1)到112(4)不存在要求。因为数据页(DP)由相同大小的PB 112(1)到112(4)组成,所以PB 112(1)到112(4)的大小设计不必由经压缩存储器控制器36动态地指派。
在此实例中,每一PB 112(1)到112(Q)用于存储可存储在经压缩的至多达32个字节中的经压缩存储器数据块。如果经压缩存储器数据块无法向下压缩到32个字节,那么可指派给定PB 112内的连续存储器数据块116来用于经压缩数据的存储。TLB 68中的每一TLB条目74经配置以含有多个缓冲器指针114(1)到114(S),在此实例中,其为至多达四(4)个缓冲器指针114(1)到114(4)(例如如果PA寻址4kB的页面大小,且PB 112(1)到112(4)各自为1kB)。缓冲器指针114(1)到114(4)不必指向连续PB 112(1)到112(4)。在需要时,给定PA的TLB条目74中的缓冲器指针114(1)到114(4)由经压缩存储器控制器36设定,以在分配时指向特定PB 112(1)到112(4)。如先前所阐释,TLB条目74从主目录66填充。如果尚未分配PB112,那么用于标记72的TLB条目74中的对应缓冲器指针114将为空,或一些其它信息将指示对应于缓冲器指针114的PB 112尚未由经压缩存储器控制器36分配。
继续参看图9,当经压缩存储器控制器36接收到PA时,将PA与TLB 68中的标记72进行比较,以查找对应于所述PA的TLB条目74。经压缩存储器控制器36使用所述PA的地址来查询用于对应DP的TLB条目74,且确定对应于PA的PB 112(1)到112(4)在对应PB内的地址。举例来说,如图9中示出,如果PA对应于TLB 68中的选定TLB条目74中的第四缓冲器指针114(4),那么缓冲器指针114(4)可指向系统存储器38中的PB 112(4)。存储在每一TLB条目74中且对应于经压缩数据的页的页信息118进一步由经压缩存储器控制器36基于所述PA来存取。在此实例中,页信息118含有三十二(32)个条目,因为在此实例中,每数据页存在三十二(32)个TLB条目74。基于将根据所述PA存取的字来存取页信息118中的存储器线高速缓存线,以确定起始存储器数据块116以及选定PB 112(4)中的经压缩存储器数据的长度。在此实例中,对应于所述PA的经压缩存储器数据对应于具有值‘2’的起始存储器数据块116Bl#‘96’,意味着长度为三(3)(以节约位),且意味着经压缩存储器数据是在存储器数据块116Bl#96中开始的三(3)个字节。
图10是说明图3中的经压缩存储器控制器36根据图8中的用于存储器存取的混合基于线/页的缓冲存储器容量压缩方案110将PA翻译为图9中的所分配DP内的所分配PB 112的示范性过程的流程图。如本文所示,经压缩存储器控制器36接收PA作为输入数据120(框122)。所述PA具有操作码作为读取或写入存储器事务(框122)。如果存储器事务为写入事务,那么输入数据120还可含有压缩长度(框122)。经压缩存储器控制器36查询如图8和9中所示的TLB 68,以将PA转换为具有起始块数目以及读取或写入事务的操作码的PB 112(框124)。如果PA不包含于TLB 68中,经压缩存储器控制器36收回TLB 68中的现有TLB条目74,来为新接收到的PA腾空间(框126)。如果TLB条目74是重写状态,那么收回的TLB条目74存储回到主目录66中(框126)。主目录66中对应于接收到的PA的TLB条目74是从主目录66取得,且放置到TLB 68中(框126)。
继续参看图10,如果PA包含于TLB 68中,且框126中的收回过程已完成,那么经压缩存储器控制器36确定存储器存取是读取还是写入操作(框128)。如果存储器存取是读取操作,那么经压缩存储器控制器36使用TLB条目74来存取对应于TLB 68中的缓冲器指针114和页信息118的存储器数据块116,以读取经压缩存储器数据,且过程完成(框130)。如果存储器事务是写入操作,那么经压缩存储器控制器36确定来自输入数据120的经压缩长度是否已改变(框132)。如果不是,那么经压缩存储器控制器36使用TLB条目74来存取对应于TLB68中的缓冲器指针114和页信息118的存储器数据块116,以写入经压缩存储器数据,且过程完成(框130)。如果经压缩存储器控制器36确定来自输入数据120的经压缩长度已改变(框132),且增加(框134),那么经压缩存储器控制器36释放系统存储器38中对应于所述PA的当前存储器数据块116,并将新的存储器数据块116分配给PA(框136),并更新TLB 68以及用于对应TLB条目74的重写状态位(框138)。如果经压缩存储器控制器36确定来自输入数据120的经压缩长度尚未增加(框134),那么经压缩存储器控制器36释放系统存储器38中对应于所述PA的过多存储器数据块116(框140)(或者释放所有的存储器数据块116,并在系统存储器38中再分配新的存储器数据块116),更新页信息118中对应于所述PA的存储器数据块116的长度,并设定TLB 68中的TLB条目74中的重写状态位(框140)。
还可希望为图2中的SOC 10'提供额外的高速缓冲存储器,其可补偿归因于经压缩存储器控制器36的操作的任何性能损失,以将接收到的PA翻译为系统存储器38中存在的经压缩PA。在这点上,图11A说明类似于图2中的SOC 10'的替代SOC 10(1)的实例,但图11A中的SOC 10(1)另外包含任选的高速缓冲存储器142,其在此实例中为L4高速缓冲存储器。经压缩存储器控制器36可在L4高速缓冲存储器142和TLB 68两者或主目录66中并行地查找PA(在本文中被称作经压缩PA(CPA)144),以最小化等待时间。L4高速缓冲存储器142中的地址是未经压缩的PA。在L4高速缓冲存储器142中的PA命中后,CPA 144中的PA查找即为冗余。在L4高速缓冲存储器142中的PA未中后,需要CPA 144中的PA查找来获得经翻译的经压缩PA。
为了避免CPU 16存取L4高速缓冲存储器142和CPA 144两者的额外等待时间,L4高速缓冲存储器142和CPA144可为启发的。在这点上,图11B说明图11A中的SOC10(1)的实例,其启发经压缩存储器控制器36中的L4高速缓冲存储器142和CPA 144,以在共享L3高速缓冲存储器42中确定命中或未中之前查找PA。当共享L3高速缓冲存储器42由CPU 16存取来用于读取操作时,可通过进行其中的PA的早期查找来启发L4高速缓冲存储器142和CPA144。这些查找的结果可存储在与L4高速缓冲存储器142相关联的历史缓冲器146和与CPA144相关联的CPA历史缓冲器148中。作为一实例,历史缓冲器146和/或CPA历史缓冲器148可从具有小等待时间的寄存器建构。在CPA144中的未中后,任选的预取可由经压缩存储器控制器36在主目录66中执行。CPA 144的启发可提供改进的CPA144读取命中率。当共享L3高速缓冲存储器42中发生未中时,检查历史缓冲器146,以确定L4高速缓冲存储器142中是否出现命中。如果L4高速缓冲存储器142中发生命中,那么传回来自L4高速缓冲存储器142的数据。如果L4高速缓冲存储器142中出现未中,那么接着检查CPA历史缓冲器148。如果基于CPA历史缓冲器144的检查,CPA 144中发生命中,那么经压缩PA可直接从CPA 144读取;否则(即,L4高速缓冲存储器142未中和CPA 144未中),主目录66由经压缩存储器控制器36读取,以为待执行的读取操作获得经压缩PA。
归因于可由本文所揭示的经压缩存储器控制器36提供的存储器容量压缩,与物理上存在的存储器空间相比,可使较多存储器地址空间可供操作系统(OS)使用。举例来说,可给予OS 16Gb的存储空间,但可仅提供8Gb的物理系统存储器38。随着压缩比变化(即,变得较差),系统存储器38中的所有自由DP可减少。希望提供经压缩存储器控制器36能够回收来自客户OS的存储器的能力。然而,可能需要遵循一些基本操作原理或规则。举例来说,可需要第一示范性规则来规定无法将已经指派给OS的DP从所述OS带离。并且,另一示范性规则可为规定OS对页的检视维持作为完整的非翻译地址(例如VA为VA,PA为PA)。换句话说,由经压缩存储器控制器36执行的压缩以及可导致系统存储器38中的DP的基础存储器分段从OS隐藏,且完全由经压缩存储器控制器36的硬件处置。另外,作为另一示范性规则,OS所进行的写入必须始终成功,意味着即使在系统存储器38小于VA空间时,OS的全PA空间也必须可写。
在这点上,为了允许OS符合这些规则,可将压缩驱动器安装到在CPU 16上执行的每一OS中,以允许动态存储器大小设计。压缩驱动器是对OS的扩展,且并不影响OS的存储器管理方案。当系统存储器38在自由经压缩PB上逐渐减少时,这增加了从OS请求页的气球驱动器上的压力。这些压缩驱动器从OS请求更多存储器。当压缩驱动器获得更多存储器时,它们钉住(pin)所述页,意味着无法将所述页换出到磁盘,且因此VA到PA翻译映射必须由OS保存。压缩驱动器接着将高度可压缩的模式写入到存储器。因此,不需要管理程序或翻译支持。上文所论述的DP管理方案可用以将DP再分配给所需的自由DP。可保持“紧急”气球,以便吸收突发。
图12是示范性动态存储器大小设计的示意图。举例来说,提供主机OS 150,其可在图1中的SOC 10中的CPU 16上运行。主机OS 150支持一或多个客户OS 152(1)到152(T)。主机OS 150将到系统存储器38的接口提供给客户OS 152(1)到152(T)。在图12中的实例中,系统存储器38可为32GB可寻址的,其可分配给主机OS 150,但大小为16GB,使用预期2倍压缩比。在主机OS 150中作为管理程序运行的存储器控制器驱动器154通过设置缓冲器池、客户OS 152(1)到152(T)属性、服务质量(QOS)要求、所分配的存储器(PA)的大小以及存储器故障来初始化硬件。
继续参看图12,数据压缩驱动器(DCD)156(1)到156(T)安装在每一客户OS 152(1)到152(T)上。当经压缩存储器控制器36在系统存储器38中的自由经压缩存储缓冲器上低运行时,经压缩存储器控制器36以压力数据158的形式向客户OS 152(1)到152(T)提供指示,这增加了数据压缩驱动器156(1)到156(T)上的压力。经压缩存储器控制器36监视自由缓冲器状态,并将压力数据158提供给每一客户OS 152(1)到152(T)。这可为为指派给每一数据压缩驱动器156(1)到156(T)的存储器映射的寄存器。当经压缩存储器控制器36检测到自由缓冲器池正在系统存储器38中耗尽时,经压缩存储器控制器36可依据属性增加到每一客户OS 152(1)到152(T)的压力寄存器值。
作为响应,客户OS 152(1)到152(T)中的数据压缩驱动器156(1)到156(T)从主机150请求更多的存储器,其断言主机OS 150上从使用系统存储器38的其它来源到自由存储器的压力。举例来说,主机OS 150可使用页高速缓存和进程堆来释放存储器。举例来说,数据压缩驱动器156(1)到156(T)可经配置以在与压力寄存器值成比例的层级,从其相应的客户OS 152(1)到152(T)请求页。客户OS 152(1)到152(T)可提供页,且如果需要,将页从其它池,例如页高速缓冲存储器释放。客户OS 152(1)到152(T)还可将用过的页从所述堆页出,等等。
当数据压缩驱动器156(1)到156(T)从系统存储器38获得较多存储器时,它们钉住所述存储器,且接着可将可高度压缩的模式写入到系统存储器38。在这点上,数据压缩驱动器156(1)到156(T)可将零(0)写入到页,且经压缩存储器控制器36可将下面的缓冲器有效地释放回到自由池。因此,不需要管理程序或翻译支持。上文所论述的DP管理方案可用以将DP再分配给所需的自由DP。可保持“紧急”气球,以便吸收突发。
如上文所论述,经压缩存储器控制器36还可使用存储器带宽压缩方案。举例来说,可希望压缩存储器总线,例如内部系统总线22上的128字节数据块,以减少内部系统总线22上的带宽。减少带宽还可减少总线等待时间并降低电力消耗。CPU 16和/或CPU16中提供的硬件线程的数目可能够增加,并且不影响CPU 16性能。或者,可提供减少用于给定总线带宽的存储器信道的数目的选项。
在这点上,图13是可由图3中的经压缩存储器控制器36实施以提供存储器带宽压缩的示范性存储器带宽压缩方案160的示意图。在存储器容量压缩方案的此实例中,以经压缩或未经压缩形式,将数据存储在系统存储器38中的PA位置处。在这点上,提供由多个数据线162组成的系统存储器38。数据线162由经压缩存储器控制器36通过接收到的PA存取。ECC压缩指示符166以与每一数据线162的关联存储,以指示数据线162是否以经压缩形式存储。以此方式,当执行对系统存储器38的存储器存取请求时,经压缩存储器控制器36可检查与对应于待寻址的PA的数据线162相关联的ECC压缩指示符166,以确定是否压缩数据线162,作为存储器存取请求的处理的一部分。
还仍提供主目录66,其在对应于PA的系统存储器38中,每数据线162含有一个条目165。主目录66还每条目165含有一(1)个压缩指示符166,以表示数据线162是否经压缩存储在数据线162中,且如果是,那么还含有压缩长度,如果支持多个压缩长度。举例来说,如果数据线162的长度是128个字节,且存储在其中的数据可压缩到64个字节或更少,那么主目录66中对应于存储在系统存储器38中的数据的压缩指示符166可设定成指示数据存储在128字节数据线162的第一64个字节中。
继续参看图13,在写入操作期间,经压缩存储器控制器36可压缩待写入到系统存储器38中的存储器块。举例来说,压缩数据(例如128个字节,或256个字节)。如果数据块小于或等于系统存储器38的突发大小(例如64个字节),那么可写入64个字节,否则写入128个字节。可将256个字节写入为64、128、192、或256个字节,取决于经压缩数据大小。与系统存储器38中的数据线162相关联的ECC压缩指示符166还可设定成表示数据线162处的数据是否经压缩。
在读取操作实例期间,经压缩存储器控制器36可读取将从系统存储器38存取的数据的一部分。如果待读取的数据在系统存储器38中压缩,如由ECC压缩指示符166指示,那么进行读取操作,因为所读取的数据的所述部分是整个数据块,但是以经压缩形式。经压缩数据可以经压缩形式经由内部系统总线22(图2)由经压缩存储器控制器36提供,以实现带宽压缩。如果所读取的数据的所述部分在系统存储器38中未经压缩,那么这具有等待时间影响,因为待读取的存储器线的额外部分必须也从系统存储器38读取。可为若干地址范围部署训练机制,其中系统“学习”在两次存取中从系统存储器38读取数据是否更好,或从系统存储器38读取全量数据以避免等待时间影响是否更好。
在此实例中,还可提供含有高速缓存条目170的压缩指示符(CI)高速缓冲存储器168。在系统存储器38外部的单独高速缓冲存储器中提供CI高速缓冲存储器168。CI高速缓冲存储器168是在系统存储器38中每数据线162含有一个高速缓存条目170以表示系统存储器38中的数据线162是否以经压缩形式存储的高速缓冲存储器。以此方式,当执行对系统存储器38的存储器存取请求时,经压缩存储器控制器36可首先检查CI高速缓冲存储器168中对应于待寻址的PA的高速缓存条目170,以确定是否压缩系统存储器38中的PA处的数据线162,作为存储器存取请求的处理的一部分,而不必读取数据线162。因此,如果CI高速缓冲存储器168指示数据线162是经压缩存储的,那么经压缩存储器控制器36不必读出整个数据线162,因此减少等待时间。如果CI高速缓冲存储器168指示数据线162是未经压缩存储的,那么经压缩存储器控制器36可读出整个数据线162。如果CI高速缓冲存储器168中发生未中,那么可查询主目录66中对应于所存取的数据线162的对应ECC经压缩指示符166,并将其加载到CI高速缓冲存储器168中,以用于后续对同一PA的存储器存取请求。
举例来说,CI高速缓冲存储器168可组织为常规高速缓冲存储器。CI高速缓冲存储器168可含有标记阵列,且可组织成n向或其它向。CI高速缓冲存储器168将具有收回策略,其可由经压缩存储器控制器36实施。CI高速缓冲存储器168中的每一存储器线高速缓存线172可存储多个高速缓存条目170。每一高速缓存条目170含有一个压缩指示符174,以指示系统存储器38中与高速缓存条目170相关联的数据线162是否经压缩,和/或表示对应于高速缓存条目170的数据的压缩大小的选项(例如如果可将数据压缩到32、64、96或128个字节,则用于四(4)个选项的两(2)个高速缓冲存储器指示符)。注意,在此实例中,ECC压缩指示符166是冗余的,因为此信息也存储在高速缓存条目170中的压缩指示符174中。举例来说,如果数据线162的长度是128个字节,且存储在其中的数据可压缩到64个字节或更少,则CI高速缓冲存储器168中对应于系统存储器38中的数据线162的高速缓存条目170中的压缩指示符174可设定成指示所述数据存储在128字节数据线162的第一64个字节中。
在当使用CI高速缓冲存储器168时的读取操作的另一实例中,经压缩存储器控制器36维持CI高速缓冲存储器168,其针对数据线162中的若干128字节存储器块,记得所述数据块是否经压缩(例如每128字节块1个位,或每256字节块2个位)。可每4K页寻址CI高速缓冲存储器168:在此实例中,一个页地址,以及用于旗标的32位条目。对于读取操作,检查CI高速缓冲存储器168,看待存取的地址是否包含于CI高速缓冲存储器168中。如果所请求的数据在CI高速缓冲存储器168中,则经压缩存储器控制器36可根据CI高速缓冲存储器168中的高速缓存条目170,从系统存储器38读取所述量的数据。如果所请求的数据不在CI高速缓冲存储器168中,则存在两个示范性选项。假定是最差情况,经压缩存储器控制器36可读取全高速缓存条目170大小(例如128个字节)。或者,经压缩存储器控制器36可根据上文所论述双存取读取过程来读取。还可使用学习扩展。如果待读取的数据不在CI高速缓冲存储器168中,可如下更新CI高速缓冲存储器168。可根据已知技术(例如LRU、伪LRU等)从CI高速缓冲存储器168收回高速缓存条目170。注意,无需将收回的高速缓存条目170写入到存储器,可仅将其从CI高速缓冲存储器168去除。可创建新的高速缓存条目170,其中将所有的高速缓存条目170设定成最大读取大小,但刚刚从系统存储器38读取的框除外,其设定成其实际大小。作为最佳化方案,如果从系统存储器38读取的块未经压缩(即,其最大大小),可跳过此收回。
继续参看图13,在提供CI高速缓冲存储器168的情况下,写入到系统存储器38中的数据线162后,经压缩存储器控制器36可经配置以始终写入经压缩大小,其中ECC压缩指示符166表示高速缓存条目170在系统存储器38中是否经压缩。如果压缩指示符174存在于CI高速缓冲存储器168中与数据线162相关联的高速缓存条目170中,那么在CI高速缓冲存储器168中更新压缩指示符174。如果针对与数据线162相关联的高速缓存条目170,压缩指示符174不存在于CI高速缓冲存储器168中,那么可更新CI高速缓冲存储器168。如果经压缩长度大于频段大小(例如64B),那么更新CI高速缓冲存储器168。收回一个高速缓存条目170,且新存储器线高速缓存线172安装有来自主目录66的CI高速缓冲存储器168。在CI高速缓冲存储器168中更新用于对应数据线162的压缩指示符174。如果经压缩长度小于或等于频段大小,那么不必更新CI高速缓冲存储器168,尽管可更新所述CI高速缓冲存储器168。举例来说,可以某一概率(其可配置为100%,即始终)更新CI高速缓冲存储器168。如果将此概率设定成100%,那么主目录66在一些情况下可始终准确。否则,主目录66将表示大于实际经压缩线长度的经压缩线长度。这是更新主目录66时的带宽与存储器读出期间的带宽节省之间的折衷。
继续参看图13,在从系统存储器38读取后,如果ECC压缩指示符166存在于用于所存取数据线162的CI高速缓冲存储器168中的高速缓存条目170中,那么这意味着用于此数据线162的经压缩大小信息是已知的。在这点上,从CI高速缓冲存储器168存取存储器线高速缓存线172,以确定读取大小,且可从对应数据线162读取所述量的数据。如果压缩指示符174不存在于CI高速缓冲存储器168中的所存取存储器线高速缓存线172中,那么经压缩存储器控制器36从系统存储器38读取全线大小,并使用ECC压缩指示符166来确定所述数据是否经压缩。同时,经压缩存储器控制器36可以可配置概率(例如10%)从主目录66刷新CI高速缓冲存储器168。
或者,经压缩存储器控制器36可经配置以不使用系统存储器38中的ECC压缩指示符166。在此实例中,主目录66将始终反映线在系统存储器38中是否经压缩。在与系统存储器38的写入事务后,经压缩数据将即刻始终由经压缩存储器控制器36写入。经压缩存储器控制器36将始终更新CI高速缓冲存储器168中压缩指示符174,其导致收回以及存取主目录66,如果需要的话。在与系统存储器38的读取事务后,经压缩存储器控制器36经配置以始终首先从CI高速缓冲存储器168中的压缩指示符174读取,且如果不存在,那么存储器线高速缓存线172将从CI高速缓冲存储器168收回,且将存取CI高速缓冲存储器168。接着,基于ECC压缩指示符166中指定的长度,从系统存储器38读取线。
在读取操作的另一实例中,经压缩存储器控制器36可维持CI高速缓冲存储器168,其针对若干128字节存储器块,记得块是否经压缩(例如每128字节块1个位,或每256字节块2个位)。可每4K页寻址CI高速缓冲存储器168:一个页地址,以及用于旗标的32位条目。对于读取操作,检查CI高速缓冲存储器168,看待存取的地址是否包含于CI高速缓冲存储器168中。如果所请求的数据在CI高速缓冲存储器168中,那么经压缩存储器控制器36可根据CI高速缓冲存储器168中的高速缓存条目170,从系统存储器38读取所述量的数据。如果所请求的数据不在CI高速缓冲存储器168中,那么存在两个示范性选项。假定最差情况情形,经压缩存储器控制器36可读取全高速缓存条目170大小(例如128个字节)。或者,经压缩存储器控制器36可根据上文所论述双存取读取过程来读取。还可使用学习扩展。如果待读取的数据不在CI高速缓冲存储器168中,那么可如下更新CI高速缓冲存储器168。可根据已知技术(例如LRU、伪LRU等)从CI高速缓冲存储器168收回高速缓存条目170。注意,无需将收回的高速缓存条目170写入到存储器,可仅将其从CI高速缓冲存储器168去除。可创建新的高速缓存条目170,其中将所有的高速缓存条目170设定成最大读取大小,不同之处在于仅从系统存储器38读取的框,其设定成其实际大小。作为最佳化,如果从系统存储器38读取的块未经压缩(即,其最大大小),那么可跳过此收回。
继续参看图13,在对系统存储器38的写入后,经压缩存储器控制器36可经配置以始终写入经压缩大小,其中ECC压缩指示符166表示高速缓存条目170在系统存储器38中是否经压缩。如果压缩指示符174存在于用于高速缓存条目170的CI高速缓冲存储器168中,那么在CI高速缓冲存储器168中更新压缩指示符174。如果压缩指示符174不存在于CI高速缓冲存储器168中,那么可更新CI高速缓冲存储器168。如果经压缩长度大于频段大小(例如64B),那么更新CI高速缓冲存储器168。收回一个高速缓存条目170,且新存储器线高速缓存线172安装有主目录66。在CI高速缓冲存储器168中更新用于对应数据线162的压缩指示符174。如果经压缩长度小于或等于频段大小,那么不必更新CI高速缓冲存储器168,尽管可更新所述CI高速缓冲存储器168。举例来说,可以某一概率(其可配置为100%,即始终)更新CI高速缓冲存储器168。如果将此概率设定成100%,那么主目录66在一些情况下可始终准确。否则,主目录66将表示大于实际经压缩线长度的经压缩线长度。这是更新主目录66时的带宽与存储器读出期间的带宽节省之间的折衷。
继续参看图13,在从系统存储器38读取后,如果ECC压缩指示符166存在于用于所存取数据线162的CI高速缓冲存储器168中,那么这意味着用于此数据线162的经压缩大小信息是已知的。在这点上,从CI高速缓冲存储器168存取存储器线高速缓存线172,以确定读取大小,且可从对应数据线162读取所述量的数据。如果压缩指示符174不存在于CI高速缓冲存储器168中的所存取存储器线高速缓存线172中,那么经压缩存储器控制器36从系统存储器38读取全线大小,并使用ECC压缩指示符166来确定所述数据是否经压缩。同时,经压缩存储器控制器36可以可配置概率(例如10%)从主目录66刷新CI高速缓冲存储器168。
或者,经压缩存储器控制器36可经配置以不使用系统存储器38中的ECC压缩指示符166。在此实例中,主目录66将始终反映线在系统存储器38中是否经压缩。在与系统存储器38的写入事务后,经压缩数据将即刻始终由经压缩存储器控制器36写入。经压缩存储器控制器36将始终更新CI高速缓冲存储器168中压缩指示符174,其导致收回以及存取主目录66,如果需要的话。在与系统存储器38的读取事务后,经压缩存储器控制器36经配置以始终首先从CI高速缓冲存储器168中的压缩指示符174读取,且如果不存在,那么存储器线高速缓存线172将从CI高速缓冲存储器168收回,且将存取主目录66。接着,基于ECC压缩指示符166中指定的长度,从系统存储器38读取线。
还可希望为存储器带宽压缩方案提供额外高速缓冲存储器。在这点上,图14说明类似于图2中的SOC 10'的替代SOC 10(2)的实例,但图14中的SOC 10(2)另外包含任选的高速缓冲存储器142,其在此实例中为L4高速缓冲存储器。经压缩存储器控制器36可同时在L4高速缓冲存储器142和CI高速缓冲存储器168两者中查找PA,以最小化等待时间。L4高速缓冲存储器142中的地址是未经压缩的PA。在L4高速缓冲存储器142中的PA命中后,CI高速缓冲存储器168中的PA查找即为冗余。在L4高速缓冲存储器142中的PA未中后,需要CI高速缓冲存储器168中的PA查找来从系统存储器38获得数据。并且,为了避免CPU 16存取L4高速缓冲存储器142和CI高速缓冲存储器168两者的额外等待时间,可启发L4高速缓冲存储器142和CI高速缓冲存储器168,类似于上述关于图11B所述的启发。
如上文所论述,可希望提供全部为0的存储器数据块的压缩,作为最佳压缩到特殊情况。举例来说,如果存储器数据块(例如128个字节)全部为0,那么不读取或写入数据,而是在单独数据结构中表示为全部为0。可在系统存储器38中提供零位,以表示存储器线是否经压缩,因此每存储器数据块添加一(1)个位。经压缩存储器控制器36可维持高速缓冲存储器,其例如针对若干128字节存储器块,记得块是否全为0。对于写入操作,如果存储器数据块的线全为0,那么经压缩存储器控制器36并不将所述线写入到系统存储器38,但更新CI高速缓冲存储器168。对于读取操作,为所述线检查CI高速缓冲存储器168中的零位。如果所述线在CI高速缓冲存储器168中,那么取决于所述零位,从系统存储器38读取所述线,或传回全0。如果所述线不在CI高速缓冲存储器168中,那么其从系统存储器38读取。如果所述线为零,那么可更新CI高速缓冲存储器168。可根据已知技术(例如LRU、伪LRU等)更新CI高速缓冲存储器168,以收回TLB条目74。如果收回线,那么需要将具有其零位集合的所有线写入到主存储器。这可组织为写入全零队列。可能的最佳化将为使用两(2)个位,其中一个位表示所述线是否为全零,且另一位表示所述线是否为重写状态(即,尚未写入到主存储器)。经压缩存储器控制器36的背景任务可检查CI高速缓冲存储器168,并将具有“写入全零”队列中的重写状态位的线排队。对于上文所述的存储器容量压缩方案,经压缩存储器控制器36可按照需要使用不同的存储器压缩方案。举例来说,可希望使用针对小数据块(例如64、128和256个字节)优化的存储器压缩方案,因为上文的实例中所描述的高速缓冲存储器行包含这些大小作为实例。
在这点上,图15说明频繁模式压缩数据压缩方案180。在这点上,待压缩的源数据格式182中的源数据例如示出为128个字节。下文示出经压缩数据格式184。以前缀码Px以及所述前缀后面作为Datax的数据的格式提供经压缩数据格式184。所述前缀为3位。所述前缀码在频繁模式编码表188中的前缀码列186中示出,所述频繁模式编码表示出编码在用于前缀码列186中的给定前缀码的模式经编码列190中的模式。经编码的模式的数据大小提供于频繁模式编码表188的数据大小列192中。
图16说明32位频繁模式压缩数据压缩方案194。在这点上,待压缩的源数据格式196中的源数据例如示出为128个字节。下文示出经压缩数据格式198。以前缀码Px以及紧接在所述前缀后面作为Datax的数据的格式提供经压缩数据格式198。以不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式200,其经组织以出于效率目的而分组在一起。所述前缀码为3位。所述前缀码在频率模式编码表204中的前缀码列202中示出,其示出编码在用于前缀码列202中的给定前缀码的模式经编码列206中的模式。经编码的模式的数据大小提供于频率模式编码表204的数据大小列208中。前缀码000表示未经压缩模式,其将为呈新的经压缩数据格式200的32位的全大小的数据。前缀码001表示全零数据块,其可提供作为新的经压缩数据格式200的数据中的0位。对于3位前缀,可使用前缀码010到111来编码在源数据中辨识的其它特定模式,其在此实例中分别为0、4、8、12、16和24位中的模式。
图17说明32位频繁模式压缩数据压缩方案210。在这点上,待压缩的源数据格式212中的源数据例如示出为128个字节。下文示出经压缩数据格式214。以前缀Px以及所述前缀后面作为Datax的数据的格式提供经压缩数据格式214。以不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式216,其经组织以出于效率目的而分组在一起。所述前缀码为3位。所述前缀码在频率模式编码表220中的前缀码列218中示出,其示出编码在用于前缀码列218中的给定前缀码的模式经编码列222中的模式。经编码的模式的数据大小提供于频率模式编码表220的数据大小列224中。前缀码000表示未经压缩模式,其将为呈新的经压缩数据格式216的32位的全大小的数据。前缀码001表示全零数据块,其可提供作为新的经压缩数据格式216的数据中的0位。前缀码010表示模式0xFFFFFFFF,其为特定模式,且因此根据新的经压缩数据格式216,在经压缩数据中需要0位数据大小。用于前缀码011到111的频率模式编码表220中示出其它模式。新的经压缩数据格式216中的旗标字段指示用于前缀码001到111的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么将所述模式存储在新的经压缩数据格式216中,接着可查询所述经压缩数据格式,来重新创建未经压缩的数据。所述数据字段包含根据与新的经压缩数据格式216中的数据字段相关联的前缀码的经压缩数据。
图18说明64位频繁模式压缩数据压缩方案226的另一实例。在这点上,待压缩的源数据格式228中的源数据例如示出为128个字节。以不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式230,其经组织以出于效率目的而分组在一起。所述前缀码为4位。在频率模式编码表236中的前缀码列232、234中示出前缀码,所述频率模式编码表示出编码在用于前缀码列232、234中的给定前缀码的模式经编码列238、240中的模式。经编码的模式的数据大小提供于频率模式编码表236的数据大小列242、244中。前缀码0000表示全零数据块,其可提供作为新的经压缩数据格式230的数据中的0位。用于前缀码0001到1111的频率模式编码表236中示出其它模式,其包含用于频繁发生ASCII模式的ASCII模式。新的经压缩数据格式230中的旗标字段指示用于前缀码0001到1111的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么将所述模式存储在新的经压缩数据格式230中,接着可查询所述经压缩数据格式,来重新创建未经压缩的数据。所述数据字段包含根据与新的经压缩数据格式230中的数据字段相关联的前缀码的经压缩数据。
图19说明64位频繁模式压缩数据压缩方案246的另一实例。在这点上,待经压缩的源数据格式248中的源数据例如示出为128个字节。以不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式250,其经组织以出于效率目的而分组在一起。所述前缀码为4位。在频率模式编码表256中的前缀码列252、254中示出前缀码,所述频率模式编码表示出编码在用于前缀码列252、254中的给定前缀码的模式经编码列258、260中的模式。经编码的模式的数据大小提供于频率模式编码表256的数据大小列262、264中。前缀码0000表示全零数据块,其可提供作为新的经压缩数据格式250的数据中的0位。用于前缀码0001到1111的频率模式编码表256中示出其它模式,其可包含固定模式的组合。新的经压缩数据格式250中的旗标字段指示用于前缀码0001到1111的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么所述模式以新的经压缩数据格式250存储,接着可在数据压缩期间查询所述模式,以重新创建未经压缩的数据。前缀码P0到P31可链接到模式,其连同对应数据(Datax)使用,来以未经压缩格式重新创建全长数据。所述数据字段包含根据与新的经压缩数据格式250中的数据字段相关联的前缀码的经压缩数据。
图20中的表266中示出可结合图19中的频繁模式压缩数据压缩方案246使用的固定模式的实例,其中所述固定模式提供于模式列268中,其长度在长度列270中,且所述模式的定义在模式定义列272中。旗标定义在旗标定义表274中示出,以允许经压缩存储器控制器36使链接到前缀码的给定模式与用以创建未经压缩数据的定义相关。旗标定义表274包含用于旗标列276中的给定旗标的位,用于给定旗标的位的值在旗标值列278中,且用于给定旗标的旗标定义在旗标定义列280中。
图21说明64位频繁模式压缩数据压缩方案282的另一实例。在这点上,待压缩的源数据格式284中的源数据例如示出为128个字节。以不同格式的前缀码Px、数据Datax、旗标和模式来提供新经压缩数据格式286,其经组织以出于效率目的而分组在一起。所述前缀码为4位。在频率模式编码表292中的前缀码列288、290中示出前缀码,所述频率模式编码表示出编码在用于前缀码列288、290中的给定前缀码的模式经编码列294、296中的模式。经编码的模式的数据大小提供于频率模式编码表292的数据大小列298、300中。前缀码0000表示全零数据块,其可提供作为新的经压缩数据格式286的数据中的0位。前缀码1111表示不是以新的经压缩数据格式286压缩的数据块。用于前缀码0001到1110的频率模式编码表292中示出其它模式,其包含如本文所示的所定义模式的组合。新的经压缩数据格式286中的旗标字段指示用于前缀码0000到1110的哪些模式存在于经压缩数据的数据部分(即,Datax)中。如果所述模式存在于经压缩数据中,那么将所述模式存储在新的经压缩数据格式286中,接着可查询所述经压缩数据格式,来重新创建未经压缩的数据。新的经压缩数据格式286示出为仅含有模式0到5,因为在此实例中,这些是源数据中存在的前缀码0000到1110中所导致的仅有模式。所述数据字段包含根据与新的经压缩数据格式286中的数据字段相关联的前缀码的经压缩数据。
所属领域的技术人员将进一步了解,结合本文中所揭示的各方面所描述的各种说明性逻辑块、模块、电路和算法可被实施为电子硬件、存储于存储器或另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或此两者的组合。本文所揭示的存储器可为任何类型和大小的存储器,并且可经配置以存储期望的任何类型的信息。为了清楚地说明这种可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。如何实施此功能性取决于特定应用、设计选项和/或强加于整个系统的设计约束。熟练的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为引起偏离本发明的范围。
结合本文中所揭示的方面描述的各种说明性逻辑块、模块和电路可用以下各项来实施或执行:处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或经设计以执行本文中所描述的功能的其任何组合。处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器、一或多个微处理器结合DSP核心,或任何其它此类配置。
本文中所揭示的方面可以硬件和存储于硬件中的指令来体现,且可驻留于(例如)随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可装卸式磁盘、CD-ROM或此领域中已知的任何其它形式的计算机可读媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并且将信息写入到存储媒体。在替代方案中,存储媒体可集成到处理器。处理器和存储媒体可驻留在ASIC中。ASIC可驻留在远程站中。在替代方案中,处理器和存储媒体可作为离散组件驻留在远程台、基站或服务器中。
还应注意,描述本文中的示范性方面中的任一者中所描述的操作步骤是为了提供实例和论述。可用除了所说明的序列之外的大量不同序列执行所描述的操作。另外,单个操作步骤中所描述的操作实际上可在许多不同步骤中执行。另外,可组合在示范性方面中所论述的一或多个操作步骤。将理解,如所属领域的技术人员将容易显而易见,流程图中所说明的操作步骤可经受众多不同修改。所属领域的技术人员还将理解,可使用多种不同技术和技法中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
提供本发明的前述描述是为了使所属领域的技术人员能够制作或使用本发明。所属领域的技术人员将容易明白对本发明的各种修改,且本文中界定的一般原理可应用于其它变化而不脱离本发明的精神或范围。因此,本发明无意限于本文中所描述的实例和设计,而是将被赋予与本文中所揭示的原理和新颖特征相一致的最广范围。

Claims (27)

1.一种经压缩存储器控制器,其包括:
存储器接口,其经配置以存取系统存储器;以及
控制器,其经配置以:
接收存储器存取请求,其包括将经由系统总线在所述系统存储器中存取的物理地址PA;
确定用于所述接收到的存储器存取请求的所述PA是否包含在转译后备缓冲器TLB中的多个TLB条目之中的TLB条目中,所述多个TLB条目之中的每一TLB条目经配置以存储来自主目录的条目,其包括:
标记阵列中对应于PA的标记;以及
所述系统存储器中对应于所述PA的至少一个物理缓冲器地址,其中所述系统存储器中的每一物理缓冲器地址包含池指示符,其指示所述系统存储器中的多个不同大小的物理缓冲器池之中的物理缓冲器池,每一不同大小的物理缓冲器池对应于经压缩数据的不同压缩大小;
如果所述PA包含在所述TLB中的所述TLB条目中,则将所述接收到的存储器存取请求中的所述接收到的PA翻译为包含所述PA的所述TLB条目中的所述至少一个物理缓冲器地址中的物理缓冲器地址;
如果所述PA不包含在所述TLB中,则基于所述PA到所述主目录中的所述条目中的物理缓冲器地址的映射,将所述接收到的存储器存取请求中的所述接收到的PA翻译为所述物理缓冲器地址,所述主目录包括各自对应于PA且包括由多个数据线组成的所述系统存储器中的数据线地址的多个物理缓冲器地址;以及
基于所述物理缓冲器地址存取所述系统存储器中的所述数据线地址,以执行所述接收到的存储器存取请求。
2.根据权利要求1所述的经压缩存储器控制器,其中所述控制器经配置以基于到所述物理缓冲器地址的偏移以及与所述主目录中的所述条目相关联的长度来存取所述系统存储器,以执行所述接收到的存储器存取请求。
3.根据权利要求1所述的经压缩存储器控制器,其中所述控制器经配置以接收所述存储器存取请求,其包括写入数据,以及包括待写入所述系统存储器的所述PA的存储器写入操作;
所述控制器进一步经配置以:
将在所述存储器写入操作中接收到的所述写入数据压缩成经压缩写入数据;以及
基于所述经压缩写入数据,确定所述系统存储器中用于所述存储器写入操作的可用物理缓冲器地址;以及
所述经压缩存储器控制器经配置以基于所述所确定的可用物理缓冲器地址来存取所述系统存储器,以存储用于所述存储器写入操作的所述经压缩写入数据。
4.根据权利要求3所述的经压缩存储器控制器,其中所述控制器进一步经配置以更新所述主目录,以将用于所述存储器写入操作的所述物理缓冲器地址存储在所述主目录的对应于所述PA的所述条目中。
5.根据权利要求3所述的经压缩存储器控制器,其中所述存储器控制器经配置以通过进一步经配置以存储到所述物理缓冲器地址的偏移以及与所述主目录中的所述条目相关联的长度来更新所述主目录。
6.根据权利要求3所述的经压缩存储器控制器,其中所述控制器进一步经配置以确定用于所述存储器写入操作的所述写入数据是否为固定模式;
如果用于所述存储器写入操作的所述写入数据为所述固定模式,则所述控制器经配置以:
更新所述主目录中对应于所述PA的所述条目,以指示用于所述存储器写入操作的所述固定模式;以及
不在所述系统存储器中的所述物理缓冲器地址处写入用于所述存储器写入操作的所述经压缩写入数据。
7.根据权利要求3所述的经压缩存储器控制器,
其中所述控制器经配置以:
确定所述物理缓冲器池中对应于用于所述存储器写入操作的所述物理缓冲器地址中的所述池指示符的所述可用物理缓冲器地址;以及
存取对应于所述系统存储器中的所述物理缓冲器地址中的所述池指示符的所述物理缓冲器池,以基于所述物理缓冲器地址,将用于所述存储器写入操作的所述经压缩写入数据存储在所述系统存储器中。
8.根据权利要求7所述的经压缩存储器控制器,其中所述控制器经配置以存取对应于所述系统存储器中的所述物理缓冲器地址中的所述池指示符的所述物理缓冲器池,以基于从所述物理缓冲器地址的偏移,将用于所述存储器写入操作的所述经压缩写入数据存储在所述系统存储器中。
9.根据权利要求7所述的经压缩存储器控制器,其中所述控制器经配置以从对应于所述物理缓冲器池的指示所述系统存储器中的至少一个自由物理缓冲器地址的自由节点列表,确定所述物理缓冲器池中用于所述存储器写入操作的所述可用物理缓冲器地址。
10.根据权利要求9所述的经压缩存储器控制器,其中所述控制器进一步经配置以告知操作系统OS所述自由节点列表中的可用物理缓冲器地址的数目何时低于经定义阈值。
11.根据权利要求9所述的经压缩存储器控制器,其中响应于确定所述物理缓冲器池中的所述可用物理缓冲器地址,所述控制器经配置以将至少一个自由物理缓冲器从所述自由节点列表拉入用于所述可用物理缓冲器地址的本地拉动缓冲器。
12.根据权利要求9所述的经压缩存储器控制器,其中所述自由节点列表存储在所述系统存储器中。
13.根据权利要求1所述的经压缩存储器控制器,其中所述控制器经配置以:
接收包括存储器读取操作的所述存储器存取请求,所述存储器读取操作包含待在所述系统存储器中读取的所述PA;
基于用来读取经压缩读出数据的所述物理缓冲器地址来存取所述系统存储器;
将所述经压缩读出 数据解压缩为未经压缩的读取数据;以及
在所述系统总线上提供所述未经压缩的读取数据,以用于所述存储器读取操作。
14.根据权利要求13所述的经压缩存储器控制器,其中所述控制器进一步经配置以确定用于所述存储器读取操作的所述经压缩读取数据是否包含预定义固定模式;
如果用于所述存储器读取操作的所述经压缩读取数据包含所述预定义固定模式,则所述控制器进一步经配置以不基于用来读取所述经压缩读取数据的所述物理缓冲器地址存取所述系统存储器。
15.根据权利要求1所述的经压缩存储器控制器,其中所述存储器存取请求由存储器写入操作组成,且
所述控制器经配置以基于用于可用物理缓冲器地址的存储器写入操作的压缩线大小,在所述多个不同大小的物理缓冲器池之中选择物理缓冲器池。
16.根据权利要求15所述的经压缩存储器控制器,其中如果所述选定物理缓冲器池不包含任何可用物理缓冲器地址,则所述控制器经配置以选择经指派以从指派给较大物理缓冲器的另一物理缓冲器池分配所述物理缓冲器地址的物理缓冲器池。
17.根据权利要求16所述的经压缩存储器控制器,其中所述控制器进一步经配置以在所述物理缓冲器地址在指派给所述较大物理缓冲器的所述物理缓冲器池中不可用的情况下:
将所述物理缓冲器地址传回到对应于用于指派给所述较大物理缓冲器的所述物理缓冲器地址的所述物理缓冲器池的自由节点列表。
18.根据权利要求1所述的经压缩存储器控制器,其中所述控制器经配置以:
基于起始位置以及距所述系统存储器中的数据页地址的长度,将所述接收到的存储器存取请求中的所述接收到的PA翻译为所述主目录中的所述物理缓冲器地址;
以及
存取所述起始位置处距所述系统存储器中的所述数据页地址的所述长度的经压缩数据,以执行所述接收到的存储器存取请求。
19.根据权利要求18所述的经压缩存储器控制器,其中所述数据页地址包括所述系统存储器中在各自指派给数据页大小的多个数据页之中的数据页。
20.根据权利要求18所述的经压缩存储器控制器,其中所述控制器经配置以通过进一步经配置以基于所述接收到的PA的至少一部分,从多个起始位置和与所述主目录中的所述数据页地址相关联的长度选择所述起始位置和所述长度,来翻译所述接收到的PA。
21.根据权利要求1所述的经压缩存储器控制器,其中所述控制器经配置以:
基于对应于所述接收到的PA的数据页、所述数据页中的起始数据块,以及距所述起始数据块的数据块长度,将所述接收到的存储器存取请求中的所述接收到的PA翻译为包括块地址的所述物理缓冲器地址;以及
存取所述起始数据块处距所述系统存储器中的页缓冲器中的所述块地址的所述数据块长度的经压缩数据,以执行所述接收到的存储器存取请求。
22.根据权利要求21所述的经压缩存储器控制器,其中所述控制器经配置以基于多个相等大小的数据页之中的数据页、对应于所述接收到的PA的所述数据页、所述数据页中的所述起始数据块,以及距所述起始数据块的所述数据块长度,将所述接收到的存储器存取请求中的所述接收到的PA翻译为包括所述块地址的所述物理缓冲器地址。
23.根据权利要求1所述的经压缩存储器控制器,其中如果所述PA不包含在所述TLB中,则所述控制器进一步经配置以:
收回所述TLB中的现有TLB条目;以及
将存储在对应于用于所述接收到的存储器存取请求的所述PA的所述主目录中的条目存储至所述TLB中作为所述现有TLB条目。
24.根据权利要求1所述的经压缩存储器控制器,其被集成到集成电路IC中。
25.根据权利要求1所述的经压缩存储器控制器,其被集成到选自由以下各者组成的群组的装置中:机顶盒;导航装置;通信装置;移动电话;计算机;个人数字助理PDA;监视器;电视机;调谐器;无线电;音乐播放器;视频播放器以及数字视频光盘DVD播放器。
26.一种压缩用于对基于中央处理单元CPU的系统中的系统存储器的存储器存取请求的数据的方法,其包括:
接收存储器存取请求,其包括将经由系统总线在系统存储器中存取的物理地址PA;
确定用于所述接收到的存储器存取请求的所述PA是否包含在转译后备缓冲器TLB中的多个TLB条目之中的TLB条目中,所述多个TLB条目之中的每一TLB条目经配置以存储来自主目录的条目,其包括:
标记阵列中对应于PA的标记;以及
所述系统存储器中对应于所述PA的至少一个物理缓冲器地址,其中所述系统存储器中的每一物理缓冲器地址包含池指示符,其指示所述系统存储器中的多个不同大小的物理缓冲器池之中的物理缓冲器池,每一不同大小的物理缓冲器池对应于经压缩数据的不同压缩大小;
如果所述PA包含在所述TLB中的所述TLB条目中,则将所述接收到的存储器存取请求中的所述接收到的PA翻译为包含所述PA的所述TLB条目中的所述物理缓冲器地址;
如果所述PA不包含在所述TLB中,则基于所述PA到所述主目录中的所述条目中的物理缓冲器地址的映射,将所述接收到的存储器存取请求中的所述接收到的PA翻译为所述物理缓冲器地址,所述主目录包括各自对应于PA且包括由多个数据线组成的所述系统存储器中的数据线地址的多个物理缓冲器地址;以及
基于所述物理缓冲器地址存取所述系统存储器中的所述数据线地址,以执行所述接收到的存储器存取请求。
27.一种中央处理单元CPU系统,其包括:
系统总线;
至少一个CPU内核,其以通信方式耦合到所述系统总线;
存储器控制器,其以通信方式耦合到所述系统总线;
系统存储器,其以通信方式耦合到所述系统总线,所述系统存储器经配置以存储存储器数据;
转译后备缓冲器TLB,其由标记阵列和数据阵列中的多个TLB条目组成;
所述多个TLB条目中的每一TLB条目经配置以存储来自主目录的条目,其包括:
所述标记阵列中对应于PA的标记;以及
所述系统存储器中对应于所述PA的至少一个物理缓冲器地址,其中所述系统存储器中的每一物理缓冲器地址包含池指示符,其指示所述系统存储器中的多个不同大小的物理缓冲器池之中的物理缓冲器池,每一不同大小的物理缓冲器池对应于经压缩数据的不同压缩大小;
高速缓冲存储器,其以通信方式耦合到所述系统总线,所述高速缓冲存储器包括多个高速缓存条目,其各自经配置以存储对应于所述PA的未经压缩的存储器数据;
所述高速缓冲存储器经配置以:
经由所述系统总线从所述至少一个CPU内核和所述存储器控制器接收存储器存取请求;以及
如果所述PA包含在所述高速缓冲存储器中的高速缓存条目中,则提供对应于所述接收到的存储器存取请求的所述PA的所述未经压缩的存储器数据;以及所述存储器控制器经配置以接收所述存储器存取请求,其包括将经由所述系统总线在所述系统存储器中存取的所述PA;以及
如果所述存储器存取请求的所述PA不包含在所述高速缓冲存储器中的所述高速缓存条目中,则所述存储器控制器进一步经配置以:
确定用于所述接收到的存储器存取请求的所述PA是否包含在所述TLB中的TLB条目中;
如果所述PA包含在所述TLB中的所述TLB条目中,则将所述接收到的存储器存取请求中的所述接收到的PA翻译为包含所述PA的所述TLB条目中的所述物理缓冲器地址;
如果所述PA不包含在所述TLB中,则基于所述PA到所述主目录中的所述条目中的所述物理缓冲器地址的映射,将所述接收到的存储器存取请求中的所述接收到的PA翻译为所述物理缓冲器地址,所述主目录包括各自对应于PA且包括由多个数据线组成的所述系统存储器中的数据线地址的多个物理缓冲器地址;以及
基于所述物理缓冲器地址存取所述系统存储器中的所述数据线地址,以执行所述接收到的存储器存取请求。
CN201580026204.5A 2014-05-21 2015-05-20 使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法 Active CN106462494B (zh)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201462001545P 2014-05-21 2014-05-21
US62/001,545 2014-05-21
US201462092326P 2014-12-16 2014-12-16
US201462092409P 2014-12-16 2014-12-16
US62/092,326 2014-12-16
US62/092,409 2014-12-16
US14/716,001 US10838862B2 (en) 2014-05-21 2015-05-19 Memory controllers employing memory capacity compression, and related processor-based systems and methods
US14/716,001 2015-05-19
PCT/US2015/031717 WO2015179483A1 (en) 2014-05-21 2015-05-20 Memory controllers employing memory capacity compression, and related processor-based systems and methods

Publications (2)

Publication Number Publication Date
CN106462494A CN106462494A (zh) 2017-02-22
CN106462494B true CN106462494B (zh) 2019-07-30

Family

ID=53276320

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580026204.5A Active CN106462494B (zh) 2014-05-21 2015-05-20 使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法

Country Status (6)

Country Link
US (1) US10838862B2 (zh)
EP (1) EP3146433A1 (zh)
JP (1) JP6505132B2 (zh)
KR (1) KR20170008233A (zh)
CN (1) CN106462494B (zh)
WO (1) WO2015179483A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10503661B2 (en) 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US9703722B2 (en) * 2014-11-14 2017-07-11 Cavium, Inc. Method and system for compressing data for a translation look aside buffer (TLB)
US10884945B2 (en) * 2015-06-30 2021-01-05 International Business Machines Corporation Memory state indicator check operations
US20170161203A1 (en) * 2015-12-03 2017-06-08 Intel Corporation Increased memory capacity
JP6605323B2 (ja) * 2015-12-24 2019-11-13 ルネサスエレクトロニクス株式会社 半導体装置、データ処理システム及び半導体装置の制御方法
US10474385B2 (en) 2016-02-23 2019-11-12 Google Llc Managing memory fragmentation in hardware-assisted data compression
US10067706B2 (en) * 2016-03-31 2018-09-04 Qualcomm Incorporated Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system
US10191850B2 (en) 2016-03-31 2019-01-29 Qualcomm Incorporated Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system
US20180060235A1 (en) * 2016-08-30 2018-03-01 Intel Corporation Non-volatile memory compression devices and associated methods and systems
US10191682B2 (en) * 2016-09-08 2019-01-29 Qualcomm Incorporated Providing efficient lossless compression for small data blocks in processor-based systems
US10176090B2 (en) 2016-09-15 2019-01-08 Qualcomm Incorporated Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
US10236917B2 (en) * 2016-09-15 2019-03-19 Qualcomm Incorporated Providing memory bandwidth compression in chipkill-correct memory architectures
US10055158B2 (en) * 2016-09-22 2018-08-21 Qualcomm Incorporated Providing flexible management of heterogeneous memory systems using spatial quality of service (QoS) tagging in processor-based systems
US10061698B2 (en) * 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
US10198362B2 (en) * 2017-02-07 2019-02-05 Qualcomm Incorporated Reducing bandwidth consumption when performing free memory list cache maintenance in compressed memory schemes of processor-based systems
CN106980541B (zh) * 2017-03-10 2019-11-19 浙江大学 一种大页内存压缩回收系统及方法
US10169246B2 (en) * 2017-05-11 2019-01-01 Qualcomm Incorporated Reducing metadata size in compressed memory systems of processor-based systems
CN110609708B (zh) * 2018-06-15 2023-10-27 伊姆西Ip控股有限责任公司 用于数据处理的方法、设备和计算机可读介质
US20190243780A1 (en) * 2019-04-10 2019-08-08 Vinodh Gopal Scalable application-customized memory compression
CN110399314B (zh) * 2019-06-25 2021-10-15 苏州浪潮智能科技有限公司 一种cpu、一种电子设备以及一种cpu缓存控制方法
CN113448891B (zh) * 2020-03-25 2023-07-21 澜起科技股份有限公司 存储器控制器以及用于监测对存储模块的访问的方法
CN111597128B (zh) * 2020-05-21 2023-07-14 北京泽石科技有限公司 固态非易失存储设备中数据的管理方法以及管理装置
US11875036B2 (en) 2021-01-13 2024-01-16 Samsung Electronics Co., Ltd. Computing system including host and storage system and having increased write performance
CN115525417A (zh) * 2021-06-24 2022-12-27 北京图森智途科技有限公司 数据通信方法、通信系统及计算机可读存储介质
WO2023055459A1 (en) * 2021-09-29 2023-04-06 Micron Technology, Inc. Early detection of compression status using inline metadata
US11829292B1 (en) 2022-01-10 2023-11-28 Qualcomm Incorporated Priority-based cache-line fitting in compressed memory systems of processor-based systems
US11868244B2 (en) * 2022-01-10 2024-01-09 Qualcomm Incorporated Priority-based cache-line fitting in compressed memory systems of processor-based systems

Family Cites Families (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2831602B2 (ja) * 1995-01-13 1998-12-02 富士通株式会社 圧縮データ管理装置及び圧縮データ管理方法
US5696927A (en) 1995-12-21 1997-12-09 Advanced Micro Devices, Inc. Memory paging system and method including compressed page mapping hierarchy
JPH09259040A (ja) 1996-03-25 1997-10-03 Sharp Corp キャッシュメモリ装置
US6212603B1 (en) 1998-04-09 2001-04-03 Institute For The Development Of Emerging Architectures, L.L.C. Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US6341325B2 (en) 1999-01-12 2002-01-22 International Business Machines Corporation Method and apparatus for addressing main memory contents including a directory structure in a computer system
US6353871B1 (en) 1999-02-22 2002-03-05 International Business Machines Corporation Directory cache for indirectly addressed main memory
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
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
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
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
US6944740B2 (en) 2002-03-27 2005-09-13 International Business Machines Corporation Method for performing compressed I/O with memory expansion technology
US6795897B2 (en) 2002-05-15 2004-09-21 International Business Machines Corporation Selective memory controller access path for directory caching
US6981119B1 (en) 2002-08-29 2005-12-27 Advanced Micro Devices, Inc. System and method for storing performance-enhancing data in memory space freed by data compression
JP3808058B2 (ja) 2003-05-27 2006-08-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数のホストが圧縮データを記憶するメモリ・セクタの集合を共用できるようにするための装置
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
US7702964B2 (en) 2004-05-11 2010-04-20 Qualcomm Incorporated Compression of data traces for an integrated circuit with multiple memories
US7225297B2 (en) 2004-05-28 2007-05-29 International Business Machines Corporation Compressed cache lines incorporating embedded prefetch history data
CN100414519C (zh) * 2004-11-24 2008-08-27 中国科学院计算技术研究所 一种从虚拟地址向物理地址变换的方法及其装置
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US7636813B2 (en) 2006-05-22 2009-12-22 International Business Machines Corporation Systems and methods for providing remote pre-fetch buffers
US7533497B2 (en) * 2006-07-10 2009-05-19 Dallaire Industries Ltd. Snubber system for windows
US8122216B2 (en) 2006-09-06 2012-02-21 International Business Machines Corporation Systems and methods for masking latency of memory reorganization work in a compressed memory system
US7975109B2 (en) * 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
EP2259251A4 (en) 2008-03-07 2011-07-27 Victor Company Of Japan SERVER DEVICE, TERMINAL, PLAYBACK DEVICE
US8595437B1 (en) 2008-11-21 2013-11-26 Nvidia Corporation Compression status bit cache with deterministic isochronous latency
US8700862B2 (en) 2008-12-03 2014-04-15 Nvidia Corporation Compression status bit cache and backing store
US7987162B2 (en) 2009-03-06 2011-07-26 Bluearc Uk Limited Data compression in a file storage system
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
TWI435215B (zh) 2009-08-26 2014-04-21 Phison Electronics Corp 下達讀取指令與資料讀取方法、控制器與儲存系統
US8341380B2 (en) 2009-09-22 2012-12-25 Nvidia Corporation Efficient memory translator with variable size cache line coverage
US8627041B2 (en) 2009-10-09 2014-01-07 Nvidia Corporation Efficient line and page organization for compression status bit caching
US8838853B2 (en) * 2010-01-18 2014-09-16 Marvell International Ltd. Access buffer
CN102906714A (zh) 2010-05-05 2013-01-30 马维尔国际贸易有限公司 缓存存储适配器架构
CH703561A1 (de) * 2010-08-06 2012-02-15 Ferag Ag Vorrichtung zur Ausrichtung eines flächigen Produktes.
US8880847B2 (en) 2010-09-28 2014-11-04 Texas Instruments Incorporated Multistream prefetch buffer
US8683135B2 (en) 2010-10-31 2014-03-25 Apple Inc. Prefetch instruction that ignores a cache hit
US8356153B2 (en) * 2010-11-19 2013-01-15 International Business Machines Corporation Adaptive wear leveling via monitoring the properties of memory reference stream
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
US10031850B2 (en) 2011-06-07 2018-07-24 Sandisk Technologies Llc System and method to buffer data
US9164676B2 (en) 2011-11-30 2015-10-20 International Business Machines Corporation Storing multi-stream non-linear access patterns in a flash based file-system
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
FR2992453B1 (fr) * 2012-06-22 2014-07-04 Ldl Technology Dispositif de communication d'un systeme de surveillance des roues d'un vehicule et procede de communication
US9148172B2 (en) 2012-06-22 2015-09-29 Micron Technology, Inc. Data compression and management
US9003123B2 (en) 2012-06-26 2015-04-07 Arm Limited Data processing apparatus and method for reducing storage requirements for temporary storage of data
US8830716B2 (en) 2012-09-29 2014-09-09 Intel Corporation Intelligent far memory bandwith scaling
JP6323445B2 (ja) 2013-03-15 2018-05-16 日本電気株式会社 ストレージ装置と方法及びプログラム
CN104133780B (zh) 2013-05-02 2017-04-05 华为技术有限公司 一种跨页预取方法、装置及系统
CN107608912B (zh) 2013-08-20 2020-10-16 华为技术有限公司 内存物理地址查询方法和装置
US10817178B2 (en) * 2013-10-31 2020-10-27 Hewlett Packard Enterprise Development Lp Compressing and compacting memory on a memory device wherein compressed memory pages are organized by size
CN104866497B (zh) 2014-02-24 2018-06-15 华为技术有限公司 分布式文件系统列式存储的元数据更新方法、装置、主机
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
US10503661B2 (en) 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9639472B2 (en) 2014-07-15 2017-05-02 International Business Machines Corporation Prefetch list management in a computer system
US20160025310A1 (en) * 2014-07-25 2016-01-28 David Gurrola Accessory Clip System
US9658963B2 (en) 2014-12-23 2017-05-23 Intel Corporation Speculative reads in buffered memory
US9569357B1 (en) 2015-01-08 2017-02-14 Pure Storage, Inc. Managing compressed data in a storage system
KR20160104387A (ko) 2015-02-26 2016-09-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10303622B2 (en) 2015-03-06 2019-05-28 Hewlett Packard Enterprise Development Lp Data write to subset of memory devices
JP2017072981A (ja) 2015-10-07 2017-04-13 富士通株式会社 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム
US10282808B2 (en) 2016-05-27 2019-05-07 Intel Corporation Hierarchical lossless compression and null data support

Also Published As

Publication number Publication date
JP2017516232A (ja) 2017-06-15
EP3146433A1 (en) 2017-03-29
US10838862B2 (en) 2020-11-17
WO2015179483A1 (en) 2015-11-26
JP6505132B2 (ja) 2019-04-24
KR20170008233A (ko) 2017-01-23
US20150339228A1 (en) 2015-11-26
CN106462494A (zh) 2017-02-22

Similar Documents

Publication Publication Date Title
CN106462494B (zh) 使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法
CN106462495B (zh) 存储器控制器以及基于处理器的系统和方法
US20230315342A1 (en) Memory system and control method
US11416387B2 (en) Memory system and method for controlling nonvolatile memory
CN109240938B (zh) 存储系统以及控制非易失性存储器的控制方法
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
CN106462496B (zh) 在基于中央处理单元cpu的系统中使用经压缩存储器控制器cmc来提供存储器带宽压缩
US9727570B2 (en) Mount-time unmapping of unused logical addresses in non-volatile memory systems
KR101139565B1 (ko) 인-메모리, 인-페이지 디렉토리 캐시 일관성 기법
US20110153976A1 (en) Methods and apparatuses to allocate file storage via tree representations of a bitmap
CN107844267A (zh) 缓冲区分配和存储器管理
US9208088B2 (en) Shared virtual memory management apparatus for providing cache-coherence
US10198357B2 (en) Coherent interconnect for managing snoop operation and data processing apparatus including the same
CN102968386B (zh) 数据供给设备、缓存设备及数据供给方法
CN103778070A (zh) 多个块一致性操作的并行处理
US11126573B1 (en) Systems and methods for managing variable size load units
US7500073B1 (en) Relocation of virtual-to-physical mappings
US10198362B2 (en) Reducing bandwidth consumption when performing free memory list cache maintenance in compressed memory schemes of processor-based systems
US20130275683A1 (en) Programmably Partitioning Caches
US9507729B2 (en) Method and processor for reducing code and latency of TLB maintenance operations in a configurable processor
JP7337228B2 (ja) メモリシステムおよび制御方法

Legal Events

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