CN106462495B - 存储器控制器以及基于处理器的系统和方法 - Google Patents

存储器控制器以及基于处理器的系统和方法 Download PDF

Info

Publication number
CN106462495B
CN106462495B CN201580026261.3A CN201580026261A CN106462495B CN 106462495 B CN106462495 B CN 106462495B CN 201580026261 A CN201580026261 A CN 201580026261A CN 106462495 B CN106462495 B CN 106462495B
Authority
CN
China
Prior art keywords
memory
data
cache
controller
pmd
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.)
Expired - Fee Related
Application number
CN201580026261.3A
Other languages
English (en)
Other versions
CN106462495A (zh
Inventor
马托伊斯·科内利斯·安东尼乌斯·阿德里安努·黑德斯
纳塔拉詹·瓦伊迪安阿坦
科兰·比顿·韦里利
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 CN106462495A publication Critical patent/CN106462495A/zh
Application granted granted Critical
Publication of CN106462495B publication Critical patent/CN106462495B/zh
Expired - Fee Related 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/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/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/45Caching of specific data in cache memory
    • 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/602Details relating to cache prefetching
    • 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/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明揭示结合下一读取地址预取来使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法。在某些方面,使用可提供存储器容量压缩的存储器控制器。在本文所揭示的某些方面,存储器控制器可使用下一读取地址预取方案来在除所述当前所存取地址之外的另一地址处从系统存储器推测地预取数据。因此,当在经压缩存储器中寻址存储器数据时,如果所述下一读取地址存储在与所存取地址处的存储块相关联的元数据中,那么所述下一读取地址处的所述存储器数据可由所述存储器控制器预取,以在中央处理单元CPU所发布的后续读取操作已由所述存储器控制器预取的情况下可用。

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日申请且标题为“结合下一读取地址预取使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法(MEMORYCONTROLLERS EMPLOYING MEMORY CAPACITY AND/OR BANDWIDTH COMPRESSION WITH NEXTREAD ADDRESS PREFETCHING,AND RELATED PROCESSOR-BASED SYSTEMS AND METHODS)”的第14/716,108号美国专利申请案的优先权,所述申请案以全文引用的方式并入本文中。
技术领域
本发明的技术大体上涉及计算机存储器系统,且尤其涉及用于提供具有到存储器的存储器存取接口的中央处理单元(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性能的影响将是合意的。
发明内容
详细描述中所揭示的方面包含结合下一读取地址预取使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法。在某些方面,使用可提供存储器容量压缩的存储器控制器。在本文所揭示的某些方面,下一读取地址预取方案可与存储器带宽压缩方案和/或存储器容量压缩方案组合。下一读取地址预取方案可由存储器控制器用来在除当前所存取地址之外的另一地址处从系统存储器推测地预取数据。将从系统或主存储器预取的下一读取地址可存储为与存储在经压缩存储器中的经压缩存储器数据相关联的元数据,因为存储块中可能留下将经压缩存储器数据保持在经压缩存储器中的空间。因此,当在经压缩存储器中寻址存储器数据时,如果下一读取地址存储在与所存取地址处的存储块相关联的元数据中,那么下一读取地址处的存储器数据可由存储器控制器预取,以在中央处理单元(CPU)所发布的后续读取操作已由存储器控制器预取的情况下可用。结合存储器带宽和/或存储器容量压缩方案使用,可实现额外的性能,同时使用经压缩存储器中的存储块中留下的空间。
在这点上,在一个方面中,提供存储器控制器。存储器控制器包括:存储器接口,其经配置以存取系统存储器;以及控制器。所述控制器经配置以经由系统总线接收第一存储器读取请求,其包括将在系统存储器中读取的第一物理地址(PA)。所述控制器还经配置以存取系统存储器中的第一PA,以执行接收到的第一存储器读取请求。所述控制器进一步经配置以经由系统总线接收下一存储器读取请求,其包括将在系统存储器中读取的下一PA。所述控制器还经配置以基于所述下一PA来存取系统存储器,以执行接收到的第一存储器读取请求。所述控制器进一步经配置以将下一PA存储在与第一PA相关联的系统存储器中。
在另一方面,提供存储器控制器。所述存储器控制器包括用于经由系统总线接收包括将在系统存储器中读取的第一PA的第一存储器读取请求的装置。所述存储器控制器还包括用于在所述系统存储器中存取第一PA以执行接收到的第一存储器读取请求的装置。所述存储器控制器还包括用于经由系统总线接收包括将在系统存储器中读取的下一PA的下一存储器读取请求的装置。所述存储器控制器还包括用于基于所述系统存储器中的下一PA来存取系统存储器以执行所述接收到的下一存储器读取请求的装置。所述存储器控制器还包括用于将与所述第一PA相关联的下一PA存储在系统存储器中的装置。
在另一方面,提供一种压缩用于对基于中央处理单元(CPU)的系统中的系统存储器的存储器读取请求的数据的方法。所述方法包括经由系统总线接收包括将在系统存储器中读取的第一PA的第一存储器读取请求。所述方法还包括存取所述系统存储器中的第一PA,以执行所述第一存储器读取请求。所述方法还包括经由系统总线接收包括将在系统存储器中读取的下一PA的下一存储器读取请求。所述方法还包括存取系统存储器中的下一PA,以执行所述接收到的下一存储器读取请求。所述方法还包括将与第一PA相关联的所述下一PA存储在系统存储器中。
在另一个方面,提供一种CPU系统。所述CPU系统包括系统总线。所述CPU系统还包括至少一个CPU内核,其以通信方式耦合到所述系统总线。所述CPU系统还包括存储器控制器,其以通信方式耦合到所述系统总线。所述CPU系统还包括系统存储器,其以通信方式耦合到所述系统总线,所述系统存储器经配置以存储存储器数据。所述CPU系统还包括预取元数据数据(PMD)高速缓冲存储器,其包括多个高速缓存条目,每一高速缓存条目包括地址条目和对应的下一读取地址,所述PMD高速缓冲存储器以通信方式耦合到存储器控制器。所述存储器控制器包括控制器。所述控制器经配置以经由系统总线接收第一存储器读取请求,其包括将在系统存储器中读取的第一PA。所述控制器还经配置以存取系统存储器中的第一PA,以执行接收到的第一存储器读取请求。所述控制器还经配置以经由系统总线接收下一存储器读取请求,其包括将在系统存储器中读取的下一PA。所述控制器还经配置以基于所述下一PA来存取系统存储器,以执行接收到的下一存储器读取请求。所述控制器还经配置以将与所述第一PA相关联的下一PA存储在所述系统存储器中。
在其它方面中,揭示可非常适合小数据块压缩的压缩方法和格式。这些压缩方法和格式可用于本文所揭示的存储器容量和/或存储器带宽压缩方面。
对于这些存储器控制器和压缩方案中的一些或全部,可有可能增加基于CPU的系统的存储器容量,同时随着基于CPU的应用程序的复杂性和性能要求增加而减少物理存储器大小的增加,同时还降低带宽和电力消耗。
附图说明
图1是包含基于中央处理单元(CPU)的系统的示范性芯片上系统(SOC)的示意图;
图2是包含具有多个CPU的示范性基于CPU的系统以及使用存储器容量和/或存储器带宽压缩的存储器控制器的SOC的示意图;
图3是图2中的存储器控制器的较详细示意图,其中所述经压缩存储器控制器进一步以通信方式耦合到用以提供存储器容量和/或存储器带宽压缩的任选的内部存储器;
图4是可由图3中的经压缩存储器控制器实施的示范性基于线的缓冲存储器容量压缩方案的示意图;
图5是存储在经压缩存储器中的可由图3中的经压缩存储器控制器存取以提供基于页的缓冲存储器容量压缩方案的示范性数据页(PD)的示意图;
图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说明示范性数据块压缩格式和方案,其中的任一者可由经压缩存储器控制器用来压缩存储器数据块,并解压缩经压缩的存储器数据块。
图22A是组织在存储器数据块/线中的呈未经压缩形式的示范性存储器数据的说明;
图22B是在由所述存储器控制器结合读取地址预取方案使用存储器带宽压缩方案来压缩之后的图22A中的存储器数据的说明;
图22C是在由存储器控制器结合下一读取地址预取方案使用存储器容量压缩方案来压缩之后的图22A中的存储器数据的说明;
图23是图3中的SOC的替代SOC的架构图,其使用示范性存储器控制器,所述存储器控制器经配置以结合下一读取地址预取方案使用存储器容量压缩方案来执行存储器数据压缩;
图24A到24C是可在图23中的SOC中使用以允许存储器控制器结合下一读取地址预取方案使用存储器容量压缩方案来执行存储器数据压缩的示范性数据结构的示意图;以及
图25说明图23中的SOC,其包含任选的高速缓冲存储器来提供额外的带宽减少。
具体实施方式
现参考各图,描述本发明的数个示范性方面。词语“示范性”在本文中用于表示“充当实例、例子或说明”。本文中描述为“示范性”的任何方面未必解释为比其它方面优选或有利。
详细描述中所揭示的方面包含结合下一读取地址预取使用存储器容量和/或带宽压缩的存储器控制器,以及相关的基于处理器的系统和方法。在某些方面,使用可提供存储器容量压缩的存储器控制器。在本文所揭示的某些方面,下一读取地址预取方案可与存储器带宽压缩方案和/或存储器容量压缩方案组合。下一读取地址预取方案可由存储器控制器用来在除当前所存取地址之外的另一地址处从系统存储器推测地预取数据。将从系统或主存储器预取的下一读取地址可存储为与存储在经压缩存储器中的经压缩存储器数据相关联的元数据,因为存储块中可能留下将经压缩存储器数据保持在经压缩存储器中的空间。因此,当在经压缩存储器中寻址存储器数据时,如果下一读取地址存储在与所存取地址处的存储块相关联的元数据中,那么下一读取地址处的存储器数据可由存储器控制器预取,以在中央处理单元(CPU)所发布的后续读取操作已由存储器控制器预取的情况下可用。结合存储器带宽和/或存储器容量压缩方案使用,可实现额外的性能,同时使用经压缩存储器中的存储块中留下的空间。
在论述下一读取地址预取的实例之前,下文关于图2到21论述可使用下一读取地址预取的示范性基于CPU的系统和存储器压缩方案。下一读取地址预取的实例在下文的图22A处开始。
在这点上,图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的操作。如果用于系统存储器38中的所要PB大小的PB池62(1)到62(Q)的自由节点列表64中不存在可用的PB,那么经压缩存储器控制器36在PBA处从PB池62读取整个页,用来子PB池62的整个页补充对应的自由节点列表64,且更新对应于TLB 68中用于写入操作的写入地址的PA的PBA和PBA长度,且在所述PBA处将压紧的PB写回到系统存储器38中。如果在压紧之后,用于PB池62(1)到62(Q)的自由节点列表64中可用的PB仍不足,那么经压缩存储器控制器36可从含有较大PB的另一PB池62(1)到62(Q)的另一自由节点列表64检索较大的PB,并将原始PB传回到用于原始PB池62(1)到62(Q)的自由节点列表64。如果经压缩大小使得可使用较小大小的PB,那么还可从含有较小大小的PB的另一PB池62(1)到62(Q)的自由节点列表64获得较小大小的PB。并且,将原始PB传回到用于原始PB池62(1)到62(Q)的自由节点列表64。
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允许与图4中的基于线的压缩方案60相比,将在图3中的SRAM54中提供较小的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 84中的每一高速缓存线86表示系统存储器38中的DP。PA包含于每一有效高速缓存线86中的标记阵列90中的标记88中。DPA存储在TLB 84中的数据阵列92中的对应于PA的高速缓存线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相关联的高速缓存线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的大小的若干DPA,但不必将连续DPA指派给给定DP。在每一DPA自由列表98(1)到98(R)内的是自由DPA 100(1)到100(R)的列表。当需要指派新的DPA来将经压缩数据存储在DP的PB中时,将来自自由节点列表96的对应于DP大小的一或多个自由DPA 100(1)到100(R)拉到本地拉动缓冲器102中。头部指针104提供于头部自由DPA 100(1)中,以遍历自由节点列表96。提供尾部指针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。图4中的自由节点列表64可类似地存储在图4中的系统存储器38的DB内,且由经压缩存储器控制器36在其中存取。
用以在需要时(当系统存储器38中仅较小DP可用时)创建较大DP的另一DP管理方法是保持若干对DP。举例来说,1Kb DP可与3kB DP配对。2kB DP可与另一2kB DP配对。在系统存储器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。在此实例中,高速缓冲存储器142为L4高速缓冲存储器。经压缩存储器控制器36可在L4高速缓冲存储器142和TLB 68两者或主目录66中并行地查找PA(在本文中被称作经压缩PA(CPA)144),以最小化等待时间。L4高速缓冲存储器142中的地址是未经压缩的PA。在L4高速缓冲存储器142中的PA命中后,CPA 144中的PA查找即为冗余。在L4高速缓冲存储器142中的PA未中后,需要CPA144中的PA查找来获得经翻译的经压缩PA。
为了避免CPU 16存取L4高速缓冲存储器142和CPA 144两者的额外等待时间,L4高速缓冲存储器142和CPA 144可为启发的。在这点上,图11B说明图11A中的SOC 10(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可从具有小等待时间的寄存器建构。在CPA 144中的未中后,任选的预取可由经压缩存储器控制器36在主目录66中执行。CPA 144的启发可提供改进的CPA 144读取命中率。当共享L3高速缓冲存储器42中发生未中时,检查历史缓冲器146,以确定L4高速缓冲存储器142中是否出现命中。如果L4高速缓冲存储器142中发生命中,那么传回来自L4高速缓冲存储器142的数据。如果L4高速缓冲存储器142中出现未中,那么接着检查CPA历史缓冲器148。如果基于CPA历史缓冲器144的检查,CPA144中发生命中,那么经压缩PA可直接从CPA 144读取;否则(即,L4高速缓冲存储器142未中和CPA 144未中),主目录66由经压缩存储器控制器36读取,以为待执行的读取操作获得经压缩PA。
归因于可由本文所揭示的经压缩存储器控制器36提供的存储器容量压缩,与物理上存在的存储器空间相比,可使较多存储器地址空间可供操作系统(OS)使用。举例来说,可给予OS16Gb的存储空间,但可仅提供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是示范性动态存储器大小设计的示意图。举例来说,提供主机OS150,其可在图1中的SOC 10中的CPU 16上运行。主机OS150支持一或多个客户OS152(1)到152(T)。主机OS150将到系统存储器38的接口提供给客户OS152(1)到152(T)。在图12中的实例中,系统存储器38可为32GB可寻址的,其可分配给主机OS150,但大小为16GB,使用预期2倍压缩比。在主机OS150中作为管理程序运行的存储器控制器驱动器154通过设置缓冲器池、客户OS152(1)到152(T)属性、服务质量(QOS)要求、所分配的存储器(PA)的大小以及存储器故障来初始化硬件。
继续参看图12,数据压缩驱动器(DCD)156(1)到156(T)安装在每一客户OS152(1)到152(T)上。当经压缩存储器控制器36在系统存储器38中的自由经压缩存储缓冲器上低运行时,经压缩存储器控制器36以压力数据158的形式向客户OS152(1)到152(T)提供指示,这增加了数据压缩驱动器156(1)到156(T)上的压力。经压缩存储器控制器36监视自由缓冲器状态,并将压力数据158提供给每一客户OS152(1)到152(T)。这可为为指派给每一数据压缩驱动器156(1)到156(T)的存储器映射的寄存器。当经压缩存储器控制器36检测到自由缓冲器池正在系统存储器38中耗尽时,经压缩存储器控制器36可依据属性增加到每一客户OS152(1)到152(T)的压力寄存器值。
作为响应,客户OS152(1)到152(T)中的数据压缩驱动器156(1)到156(T)从主机OS150请求更多的存储器,其断言主机OS150上从使用系统存储器38的其它来源到自由存储器的压力。举例来说,主机OS150可使用页高速缓存和进程堆来释放存储器。举例来说,数据压缩驱动器156(1)到156(T)可经配置以在与压力寄存器值成比例的层级,从其相应的客户OS152(1)到152(T)请求页。客户OS152(1)到152(T)可提供页,且如果需要,将页从其它池,例如页高速缓冲存储器释放。客户OS152(1)到152(T)还可将用过的页从所述堆页出,等等。
当数据压缩驱动器156(1)到156(T)从系统存储器38获得较多存储器时,它们钉住所述存储器,且接着可将可高度压缩的模式写入到系统存储器38。在这点上,数据压缩驱动器156(1)到156(T)可将零(0)写入到页,且经压缩存储器控制器36可将下面的缓冲器有效地释放回到自由池。因此,不需要管理程序或翻译支持。上文所论述的DP管理方案可用以将DP再分配给所需的自由DP。可保持“紧急”气球,以便吸收突发。
如上文所论述,经压缩存储器控制器36还可使用存储器带宽压缩方案。举例来说,可希望压缩存储器总线,例如内部系统总线22上的128字节数据块,以减少内部系统总线22上的带宽。减少带宽还可减少总线等待时间并降低电力消耗。CPU 16和/或CPU 16中提供的硬件线程的数目可能够增加,并且不影响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中的数据字段相关联的前缀码的经压缩数据。
如上文所论述,可使用存储器容量压缩和/或存储器带宽压缩方案来实现所要的压缩比。举例来说,图22A是系统存储器38中以未经压缩形式组织在存储器数据块/线中的示范性存储器数据302的说明,所述存储器数据可使用存储器容量压缩和/或存储器带宽压缩方案来压缩,以实现所要的压缩比。图22B是在由经压缩存储器控制器36使用存储器带宽压缩方案压缩之后的图22A中的存储器数据302的说明。如在上文的实例中所论述,存储器带宽压缩涉及压缩总线上的数据以减少总线上的带宽。减少总线上的带宽可减少总线等待时间和电力消耗。另外,存储器带宽压缩方案并不涉及类似于在存储器容量压缩方案中所执行的对PA的进一步翻译的需要,因为数据存储在PA位置处,但仅以经压缩或未经压缩形式。图22C是在由经压缩存储器控制器36使用存储器容量压缩方案压缩之后的图22A中的存储器数据302的说明。如上文的实例中还论述,存储器容量压缩涉及以经压缩形式将数据存储在存储器中。然而,归因于与经压缩存储器控制器36相关联的额外开销,等待时间可能因此压缩而受影响。可需要为了性能而舍弃一些压缩效率。
在这点上,下一读取地址预取方案可与存储器带宽压缩方案和/或存储器容量压缩方案组合,如分别在图22B和22C中说明。下一读取地址预取方案可由经压缩存储器控制器36用来在除当前所存取PA之外的另一地址处从系统存储器38推测地预取数据。将从系统存储器38预取的下一读取地址可存储为与存储在系统存储器38中的存储器数据302相关联的元数据304,如图22B和22C中示出,因为存储块306中可能留下将保持经压缩存储器数据的空间。举例来说,存储在特定存储块306处的经压缩存储器数据可不向下压缩到其存储块306边界,且因此,存储块306中留下额外的存储空间。举例来说,如果存储块306的大小是32个字节,且经压缩存储器数据向下压缩到50个字节,那么所述经压缩存储器数据存储在总共64个字节的两(2)个存储块306上,有十四(14)个字节未用。因此,当在系统存储器38中寻址存储器数据302时,如果下一读取地址存储在与存储块308相关联的元数据304中,那么下一读取地址处的存储器数据302可由系统存储器38中的经压缩存储器控制器36预取,以下一读取地址是经压缩存储器控制器36接收到的下一PA的情况下可用。结合存储器带宽和/或存储器容量压缩方案使用,可实现额外的性能,同时使用系统存储器38中的存储块306中留下的空间。
在这点上,图23是可在图2中的SOC 10'的替代SOC 10(3)中提供的存储器相关组件的架构图,其使用经压缩存储器控制器36,所述经压缩存储器控制器经配置以结合下一读取地址预取方案使用存储器容量压缩方案来执行存储器数据压缩。如本文所示,在此实例中,另外提供预取存储器数据(PMD)高速缓冲存储器310。在此实例中,提供CI高速缓冲存储器168,以执行存储器带宽压缩方案。还提供任选的L4高速缓冲存储器142。图24A到24C是可在图23的SOC 10(3)中使用来允许经压缩存储器控制器36通过结合下一读取地址预取方案使用存储器容量压缩方案来执行存储器数据压缩的示范性数据结构的示意图,现在论述所述方案。可为每一CPU 16(见图2)中的每一硬件线程提供这些数据结构,使得每一硬件线程能够提供存储器容量压缩。
在这点上,图24A是含有将从系统存储器38预取的当前先前读取地址的先前地址数据寄存器312,在此实例中,其为0x9800。图24B说明具有若干高速缓存线的PMD高速缓冲存储器310,所述高速缓存线含有由经压缩存储器控制器36存取的所存取地址314,其结合对联合所存取的地址314存储的下一读取地址316用于存储器存取。图24C说明如先前描述的可任选地提供以高速缓存存储器数据的L4高速缓冲存储器142。图25说明图23中的SOC10(3)的存储器组件。返回参考图24A到24C,例如,如果最初所存取地址314为0x1000,那么无下一读取地址316将与此所存取地址314相关联。然而,在此实例中,如果经压缩存储器控制器36接收到的待存取的下一存储器地址为0x1080,那么经压缩存储器控制器36将与所存取地址0x1000相关联的地址0x1080存储在PMD高速缓冲存储器310中。因此,在下次将存储器地址0x1000提供到经压缩存储器控制器36以从系统存储器38存取时,经压缩存储器控制器36可在PMD高速缓冲存储器310中执行查找,以在相关联的下一读取地址316是所存取的实际下一读取地址316的情况下,确定存储器地址0x1000是否具有将推测地预取的相关联的下一读取地址316。PMD高速缓冲存储器310最终将在发生存储器地址存取时填充。
如图22B和22C中示出,如果经压缩PA处的存储块中存在可用空间,那么当为经压缩PA存储经压缩数据时,经压缩存储器控制器36还将下一读取地址316作为元数据304存储在与经压缩PA相关联的系统存储器38中。因此,如果下一读取地址316不存在于PMD高速缓冲存储器310中,那么经压缩存储器控制器36可为系统存储器38中的所存取经压缩数据存取下一读取地址316以用于预取。如下文将论述,存储在系统存储器38中的下一读取地址316还可用于在PMD高速缓冲存储器310中的收回后即刻填充PMD高速缓冲存储器310。
因此,在存储器读取操作后,经压缩存储器控制器36即刻经配置以将与当前读取地址相关联的先前读取地址存储在PMD高速缓冲存储器310中。必要时,将收回PMD高速缓冲存储器310中高速缓存线。在对L4高速缓冲存储器142的针对当前读取地址的命中后,如果在存取PMD高速缓冲存储器310中的当前读取地址时发生命中,那么经压缩存储器控制器36即刻从PMD高速缓冲存储器310获得下一读取地址316,以在下一读取地址316处将存储器数据从系统存储器38预取到L4高速缓冲存储器142中。在对L4高速缓冲存储器142的未中后,即刻从L4高速缓冲存储器142收回高速缓存线,且在经压缩PA处在读取地址处从系统存储器38读取数据,并将其存储在L4高速缓冲存储器142中。如果与L4高速缓冲存储器142相关联的下一读取地址316在PMD高速缓冲存储器310中,那么使用存储在PMD高速缓冲存储器310中的下一读取地址316来在下一读取地址316处预取存储器数据。如果与L4高速缓冲存储器142相关联的下一读取地址316不在PMD高速缓冲存储器310中,那么使用存储在与系统存储器38中的下一读取地址316处的经压缩PA相关联的元数据304中的下一读取地址316,以在下一读取地址316处预取存储器数据。在此后一情形中,如果元数据304中的下一读取地址316在系统存储器38中经压缩PA处有效,那么此下一读取地址316也将存储在与正存取的读取地址相关联的PMD高速缓冲存储器310中。
在存储器写入操作后,且在基于将存取的地址对L4高速缓冲存储器142的命中后,经压缩存储器控制器36用具有从系统存储器38存取的存储器数据的新高速缓存线来代替旧的高速缓存线。
在对L4高速缓冲存储器142的任何未中后,即刻从L4高速缓冲存储器142收回高速缓存线,且来自系统存储器38的下一存储器数据存储在L4高速缓冲存储器142中。在从L4高速缓冲存储器142收回后,为来自PMD高速缓冲存储器310的与L4高速缓冲存储器142中的收回的高速缓存线相关联的地址获得下一读取地址316。如果从L4高速缓冲存储器142收回的高速缓存线已更改,那么将下一读取地址316写回到系统存储器38中的元数据304中。否则,如果下一读取地址316已更改,以可配置概率将下一读取地址316写回到元数据304。
所属领域的技术人员将进一步了解,结合本文中所揭示的各方面所描述的各种说明性逻辑块、模块、电路和算法可被实施为电子硬件、存储于存储器或另一计算机可读媒体中且由处理器或其它处理装置执行的指令,或此两者的组合。本文所揭示的存储器可为任何类型和大小的存储器,并且可经配置以存储期望的任何类型的信息。为了清楚地说明这种可互换性,上文已大体上关于其功能性而描述了各种说明性组件、块、模块、电路和步骤。如何实施此功能性取决于特定应用、设计选项和/或强加于整个系统的设计约束。熟练的技术人员可针对每一特定应用以不同方式实施所描述的功能性,但此类实施决策不应被解释为引起偏离本发明的范围。
结合本文中所揭示的方面描述的各种说明性逻辑块、模块和电路可用以下各项来实施或执行:处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件,或经设计以执行本文中所描述的功能的其任何组合。处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器、一或多个微处理器结合DSP核心,或任何其它此类配置。
本文中所揭示的方面可以硬件和存储于硬件中的指令来体现,且可驻留于(例如)随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可装卸式磁盘、CD-ROM或此领域中已知的任何其它形式的计算机可读媒体中。示范性存储媒体耦合到处理器,使得处理器可从存储媒体读取信息并且将信息写入到存储媒体。在替代方案中,存储媒体可集成到处理器。处理器和存储媒体可驻留在ASIC中。ASIC可驻留在远程站中。在替代方案中,处理器和存储媒体可作为离散组件驻留在远程台、基站或服务器中。
还应注意,描述本文中的示范性方面中的任一者中所描述的操作步骤是为了提供实例和论述。可用除了所说明的序列之外的大量不同序列执行所描述的操作。另外,单个操作步骤中所描述的操作实际上可在许多不同步骤中执行。另外,可组合在示范性方面中所论述的一或多个操作步骤。将理解,如所属领域的技术人员将容易显而易见,流程图中所说明的操作步骤可经受众多不同修改。所属领域的技术人员还将理解,可使用多种不同技术和技法中的任一者来表示信息和信号。举例来说,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
提供本发明的前述描述是为了使所属领域的技术人员能够制作或使用本发明。所属领域的技术人员将容易明白对本发明的各种修改,且本文中界定的一般原理可应用于其它变化而不脱离本发明的精神或范围。因此,本发明无意限于本文中所描述的实例和设计,而是将被赋予与本文中所揭示的原理和新颖特征相一致的最广范围。

Claims (28)

1.一种存储器控制器,其包括:
存储器接口,其经配置以存取系统存储器;以及
控制器,其经配置以:
经由系统总线接收第一存储器读取请求,其包括将在所述系统存储器中读取的第一物理地址PA;以及
存取所述系统存储器中的所述第一PA,以执行所述接收到的第一存储器读取请求;且
所述控制器进一步经配置以:
经由所述系统总线接收下一存储器读取请求,其包括将在所述系统存储器中读取的下一PA;
基于所述下一PA存取所述系统存储器,以执行所述接收到的下一存储器读取请求;
将所述下一PA联合所述第一PA存储在所述系统存储器中;以及
其中所述控制器进一步经配置以将所述下一PA存储在预取元数据PMD高速缓冲存储器中与所述第一PA相关联的高速缓存条目中,所述PMD高速缓冲存储器包括多个高速缓存条目,所述多个高速缓存条目各自包括第一PA条目和对应的下一PA条目,所述PMD高速缓冲存储器通信地耦合到所述存储器控制器。
2.根据权利要求1所述的存储器控制器,其中所述控制器经配置以将所述下一PA作为元数据存储在与所述系统存储器中的所述第一PA相关联的存储块中。
3.根据权利要求2所述的存储器控制器,其中所述控制器经配置以:
确定与所述第一PA相关联的所述存储块是否含有可用空间来存储所述下一PA;以及
如果与所述第一PA相关联的所述存储块含有用于所述下一PA的所述可用空间,
那么将所述下一PA作为所述元数据存储在与所述系统存储器中的所述第一PA相关联的所述存储块中。
4.根据权利要求3所述的存储器控制器,其中与所述第一PA相关联的所述存储块中的所述可用空间是基于存储在所述存储块中的经压缩存储器数据的大小。
5.根据权利要求1所述的存储器控制器,其中所述控制器进一步经配置以:
响应于所述控制器对接收到的存储器读取请求的当前PA执行读取操作,确定所述当前PA是否包含于存储库中;以及
如果所述下一PA联合所述接收到的存储器读取请求的所述当前PA存储在所述存储库中,那么:
读取与所述系统存储器中的所述当前PA相关联的所述下一PA;以及
在所述系统存储器中在所述下一PA处预取存储器数据,以获得存储在所述下一PA处的所述存储器数据作为所预取的存储器数据。
6.根据权利要求5所述的存储器控制器,其中所述控制器进一步经配置以经由所述系统总线提供所述所预取的存储器数据。
7.根据权利要求1所述的存储器控制器,其中所述控制器经配置以将所述下一PA存储在各自与处理器核心相关联的多个PMD高速缓冲存储器之中的所述PMD高速缓冲存储器中与所述第一PA相关联的所述高速缓存条目中,所述多个PMD高速缓冲存储器中的每一者包括所述多个高速缓存条目,所述多个高速缓存条目各自包括所述第一PA条目以及所述对应的下一PA条目,所述PMD高速缓冲存储器以通信方式耦合到所述存储器控制器。
8.根据权利要求1所述的存储器控制器,其中所述控制器进一步经配置以:
确定接收到的存储器读取请求的当前PA是否包含于所述PMD高速缓冲存储器中;以及
如果所述当前PA包含于所述PMD高速缓冲存储器中,那么:
响应于所述控制器对所述当前PA执行读取操作,在所述PMD高速缓冲存储器中读取与所述当前PA相关联的所述下一PA;以及
在所述系统存储器中在所述下一PA处预取存储器数据,以获得存储在所述下一PA处的所述存储器数据作为所预取的存储器数据。
9.根据权利要求8所述的存储器控制器,其中所述控制器进一步经配置以经由所述系统总线提供存储在所述系统存储器中在所述下一PA处的用于所述接收到的存储器读取请求的所述所预取的存储器数据。
10.根据权利要求8所述的存储器控制器,其中如果所述接收到的存储器读取请求的所述当前PA不包含于所述PMD高速缓冲存储器中,那么所述控制器进一步经配置以:
存取所述系统存储器中的所述当前PA,以获得存储在所述系统存储器中的所述当前PA中的对应存储器数据;以及
更新所述PMD高速缓冲存储器中对应于其中存储所述所预取的存储器数据的所述PMD高速缓冲存储器中的所述高速缓存条目的所述当前PA的所述高速缓存条目。
11.根据权利要求10所述的存储器控制器,其中所述控制器进一步经配置以:
确定所述PMD高速缓冲存储器中是否存在可用的高速缓存条目;以及
如果所述PMD高速缓冲存储器中不存在可用的高速缓存条目,那么收回所述PMD高速缓冲存储器中的所述高速缓存条目,以将所述当前PA存储在所述PMD高速缓冲存储器中的所述所收回的高速缓存条目中。
12.根据权利要求8所述的存储器控制器,其进一步包括包含多个数据高速缓存条目的数据高速缓冲存储器,所述数据高速缓存条目各自经配置以存储与地址条目相关联的存储器数据,
其中所述控制器进一步经配置以:
确定所述当前PA是否与所述数据高速缓冲存储器中的所述多个数据高速缓存条目中的数据高速缓存条目中的地址条目匹配;以及
如果所述当前PA包含于所述数据高速缓冲存储器中的所述数据高速缓存条目中的所述地址条目中,那么在所述数据高速缓冲存储器中的所述当前PA处提供存储在所述系统存储器中的对应存储器数据,作为用于所述接收到的存储器读取请求的所述所预取的存储器数据。
13.根据权利要求12所述的存储器控制器,其中如果所述当前PA包含于所述数据高速缓冲存储器中的所述数据高速缓存条目中的所述地址条目中,那么所述控制器进一步经配置以:
在所述PMD高速缓冲存储器中读取与所述当前PA相关联的所述下一PA;以及
在所述系统存储器中在所述下一PA处预取存储器数据,以获得存储在所述下一PA处的所述存储器数据,作为用于所述接收到的存储器读取请求的所述所预取的存储器数据。
14.根据权利要求12所述的存储器控制器,其中如果所述当前PA与所述数据高速缓冲存储器的所述数据高速缓存条目中的所述地址条目不匹配,那么所述控制器进一步经配置以:
收回所述数据高速缓冲存储器中的所述多个数据高速缓存条目中的数据高速缓存条目;
在所述当前PA处从所述系统存储器读取所述存储器数据,并将所述存储器数据存储在所述数据高速缓冲存储器中;
确定所述下一PA是否包含于所述PMD高速缓冲存储器中;以及
如果所述下一PA包含于所述PMD高速缓冲存储器中,那么在所述下一PA处从所述系统存储器预取存储器数据,作为用于所述接收到的存储器读取请求的所述所预取的存储器数据。
15.根据权利要求14所述的存储器控制器,其中如果所述当前PA与所述数据高速缓冲存储器中的所述数据高速缓存条目中的所述地址条目不匹配,那么所述控制器进一步经配置以:
在所述PMD高速缓冲存储器中存取与所述当前PA相关联的所述下一PA;
如果所述收回的数据高速缓存条目已更改,那么将与所述当前PA相关联的所述下一PA写回到所述系统存储器中;以及
如果与所述PMD高速缓冲存储器中的所述当前PA相关联的所述下一PA为已更改,那么以可配置概率将与所述当前PA相关联的所述下一PA写回到所述系统存储器中。
16.根据权利要求13所述的存储器控制器,其中如果所述下一PA不包含于所述PMD高速缓冲存储器中,那么所述控制器进一步经配置以:
在所述系统存储器中读取与所述当前PA相关联的所述下一PA;
如果与所述系统存储器中的所述当前PA相关联的所述下一PA是有效的,那么在所述下一PA处从所述系统存储器预取所述存储器数据,作为用于所述接收到的存储器读取请求的所述所预取的存储器数据;以及
将所述下一PA联合所述当前PA写回到所述PMD高速缓冲存储器中。
17.根据权利要求12所述的存储器控制器,其中所述控制器进一步经配置以:
经由所述系统总线接收存储器写入请求,其包括将存储在所述系统存储器中的第二PA和写入存储器数据;
确定所述第二PA是否与所述数据高速缓冲存储器中的所述多个数据高速缓存条目中的数据高速缓存条目中的地址条目匹配;
如果所述第二PA包含于所述数据高速缓冲存储器中的所述数据高速缓存条目中的所述地址条目中,那么将与所述第二PA相关联的所述写入存储器数据存储在所述数据高速缓冲存储器中;以及
如果所述第二PA不包含于所述数据高速缓冲存储器中的所述数据高速缓存条目中的所述地址条目中,那么从所述数据高速缓冲存储器收回数据高速缓存条目,并将与所述第二PA相关联的所述写入存储器数据存储在所述数据高速缓冲存储器中。
18.根据权利要求17所述的存储器控制器,其中如果所述第二PA不包含于所述数据高速缓冲存储器中的所述数据高速缓存条目中的所述地址条目中,那么所述控制器进一步经配置以:
在所述PMD高速缓冲存储器中存取与所述第二PA相关联的下一PA;
如果所述收回的数据高速缓存条目已更改,那么将与所述第二PA相关联的所述下一PA写回到所述系统存储器中;以及
如果所述PMD高速缓冲存储器中与所述第二PA相关联的所述下一PA为已更改,那么以可配置概率将与所述第二PA相关联的所述下一PA写回到所述系统存储器中。
19.根据权利要求1所述的存储器控制器,其集成到集成电路IC中。
20.根据权利要求1所述的存储器控制器,其集成到选自由以下各者组成的群组的装置中:机顶盒;娱乐单元;导航装置;通信装置;固定位置数据单元;移动位置数据单元;移动电话;蜂窝式电话;计算机;便携式计算机;桌上型计算机;个人数字助理PDA;监视器;计算机监视器;电视机;调谐器;无线电;卫星无线电;音乐播放器;数字音乐播放器;便携式音乐播放器;数字视频播放器;视频播放器;数字视频光盘DVD播放器,以及便携式数字视频播放器。
21.一种存储器控制器,其包括:
用于经由系统总线接收包括将在系统存储器中读取的第一物理地址PA的第一存储器读取请求的装置;
用于存取所述系统存储器中的所述第一PA以执行所述接收到的第一存储器读取请求的装置;
用于经由所述系统总线接收包括将在所述系统存储器中读取的下一PA的下一存储器读取请求的装置;
用于基于所述系统存储器中的所述下一PA来存取所述系统存储器以执行所述接收到的下一存储器读取请求的装置;
用于将所述下一PA联合所述第一PA存储在所述系统存储器中的装置;以及
用于将所述下一PA存储在预取元数据PMD高速缓冲存储器中与所述第一PA相关联的高速缓存条目中的装置,所述PMD高速缓冲存储器包括多个高速缓存条目,
所述多个高速缓存条目各自包括第一PA条目和对应的下一PA条目,所述PMD高速缓冲存储器通信地耦合到所述存储器控制器。
22.一种用于控制存储器的方法,其包括:
经由系统总线接收第一存储器读取请求,其包括将在系统存储器中读取的第一物理地址PA;
存取所述系统存储器中的所述第一PA,以执行所述第一存储器读取请求;
经由所述系统总线接收下一存储器读取请求,其包括将在所述系统存储器中读取的下一PA;
存取所述系统存储器中的所述下一PA,以执行所述接收到的下一存储器读取请求;
将所述下一PA存储在与所述第一PA相关联的所述系统存储器中;以及
将所述下一PA存储在预取元数据PMD高速缓冲存储器中与所述第一PA相关联的高速缓存条目中,所述PMD高速缓冲存储器包括多个高速缓存条目,所述多个高速缓存条目各自包括第一PA条目和对应的下一PA条目。
23.根据权利要求22所述的方法,其包括将所述下一PA作为元数据存储在与所述系统存储器中的所述第一PA相关联的存储块中。
24.根据权利要求23所述的方法,其包括:
确定与所述第一PA相关联的所述存储块是否含有可用空间来存储所述下一PA;以及
如果与所述第一PA相关联的所述存储块含有用于所述下一PA的所述可用空间,
那么将所述下一PA作为所述元数据存储在与所述系统存储器中的所述第一PA相关联的所述存储块中。
25.根据权利要求22所述的方法,其进一步包括:
响应于控制器对接收到的存储器读取请求的当前PA执行读取操作,确定所述当前PA是否包含于存储库中;以及
如果所述下一PA联合用于所述接收到的存储器读取请求的所述当前PA存储在所述存储库中,那么:
在所述系统存储器中读取与所述当前PA相关联的所述下一PA;以及
在所述系统存储器中在所述下一PA处预取存储器数据,以获得存储在所述下一PA处的所述存储器数据作为所预取的存储器数据。
26.根据权利要求22所述的方法,其进一步包括:
响应于控制器对所述接收到的存储器读取请求的当前PA执行读取操作,确定所述当前PA是否包含于所述PMD高速缓冲存储器中;
如果所述当前PA包含于所述PMD高速缓冲存储器中,那么:
响应于所述控制器对所述当前PA执行所述读取操作,在所述PMD高速缓冲存储器中读取与所述当前PA相关联的所述下一PA;以及
在所述系统存储器中在所述下一PA处预取存储器数据,以获得存储在所述下一PA处的所述存储器数据作为所预取的存储器数据;以及
经由所述系统总线在所述接收到的存储器读取请求的所述下一PA处提供存储在所述PMD高速缓冲存储器中的所述所预取的存储器数据。
27.根据权利要求26所述的方法,其中如果所述接收到的存储器读取请求的所述当前PA不包含于所述PMD高速缓冲存储器中,那么方法进一步包括:
存取所述系统存储器中的所述当前PA,以获得存储在所述系统存储器中的所述当前PA中的对应存储器数据;
更新所述PMD高速缓冲存储器中对应于其中存储所述所预取的存储器数据的所述PMD高速缓冲存储器中的高速缓存条目的所述当前PA的所述高速缓存条目;
确定所述PMD高速缓冲存储器中是否存在可用的高速缓存条目;以及
如果所述PMD高速缓冲存储器中不存在可用的高速缓存条目,那么收回所述PMD高速缓冲存储器中的所述高速缓存条目,以将所述当前PA存储在所述PMD高速缓冲存储器中的所述所收回的高速缓存条目中。
28.一种中央处理单元CPU系统,其包括:
系统总线;
至少一个CPU内核,其以通信方式耦合到所述系统总线;
存储器控制器,其以通信方式耦合到所述系统总线;
系统存储器,其以通信方式耦合到所述系统总线,所述系统存储器经配置以存储存储器数据;
预取元数据PMD高速缓冲存储器,其包括多个高速缓存条目,所述高速缓存条目各自包括地址条目和对应的下一读取地址,所述PMD高速缓冲存储器以通信方式耦合到所述存储器控制器;
所述存储器控制器包括控制器,所述控制器经配置以:
经由所述系统总线接收包括将在所述系统存储器中读取的第一物理地址PA的第一存储器读取请求;以及
存取所述系统存储器中的所述第一PA,以执行所述接收到的第一存储器读取请求;且
所述控制器进一步经配置以:
经由所述系统总线接收下一存储器读取请求,其包括将在所述系统存储器中读取的下一PA;
基于所述下一PA存取所述系统存储器,以执行所述接收到的下一存储器读取请求;
将所述下一PA联合所述第一PA存储在所述系统存储器中;以及
将所述下一PA存储在所述PMD高速缓冲存储器中与所述第一PA相关联的高速缓存条目中,所述PMD高速缓冲存储器包括所述多个高速缓存条目,所述多个高速缓存条目各自包括第一PA条目和对应的下一PA条目,所述PMD高速缓冲存储器通信地耦合到所述存储器控制器。
CN201580026261.3A 2014-05-21 2015-05-21 存储器控制器以及基于处理器的系统和方法 Expired - Fee Related CN106462495B (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
US201462092409P 2014-12-16 2014-12-16
US201462092326P 2014-12-16 2014-12-16
US62/092,326 2014-12-16
US62/092,409 2014-12-16
US14/716,108 2015-05-19
US14/716,108 US9740621B2 (en) 2014-05-21 2015-05-19 Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods
PCT/US2015/031885 WO2015179591A1 (en) 2014-05-21 2015-05-21 Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods

Publications (2)

Publication Number Publication Date
CN106462495A CN106462495A (zh) 2017-02-22
CN106462495B true CN106462495B (zh) 2019-06-04

Family

ID=53373596

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580026261.3A Expired - Fee Related CN106462495B (zh) 2014-05-21 2015-05-21 存储器控制器以及基于处理器的系统和方法

Country Status (5)

Country Link
US (1) US9740621B2 (zh)
EP (1) EP3146435A1 (zh)
JP (1) JP2017516234A (zh)
CN (1) CN106462495B (zh)
WO (1) WO2015179591A1 (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US9740621B2 (en) * 2014-05-21 2017-08-22 Qualcomm Incorporated Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods
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
US9652384B2 (en) 2014-12-16 2017-05-16 Intel Corporation Apparatus, system and method for caching compressed data
JP6605323B2 (ja) * 2015-12-24 2019-11-13 ルネサスエレクトロニクス株式会社 半導体装置、データ処理システム及び半導体装置の制御方法
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
US10176090B2 (en) 2016-09-15 2019-01-08 Qualcomm Incorporated Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
US10126979B2 (en) 2016-10-04 2018-11-13 Qualcomm Incorporated Bus encoding using metadata
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
WO2018165939A1 (en) * 2017-03-16 2018-09-20 Intel Corporation Flash data compression decompression method and apparatus
US10169246B2 (en) * 2017-05-11 2019-01-01 Qualcomm Incorporated Reducing metadata size in compressed memory systems of processor-based systems
CN108268381B (zh) * 2017-12-15 2021-12-24 中国航空工业集团公司西安飞行自动控制研究所 一种安全实现数据快速寻址的方法
US11449428B2 (en) * 2018-06-19 2022-09-20 Western Digital Technologies, Inc. Enhanced read-ahead capability for storage devices
US11086534B2 (en) 2018-06-28 2021-08-10 Apple Inc. Memory data distribution based on communication channel utilization
US10664325B1 (en) * 2018-09-06 2020-05-26 Rockwell Collins, Inc. System for limiting shared resource access in multicore system-on-chip (SoC)
SE544272C2 (en) * 2018-11-14 2022-03-22 Zeropoint Tech Ab Accessing compressed computer memory
US10606775B1 (en) * 2018-12-28 2020-03-31 Micron Technology, Inc. Computing tile
CN109857463B (zh) * 2019-01-30 2020-12-01 上海兆芯集成电路有限公司 加速压缩方法以及加速压缩装置
US11010059B2 (en) * 2019-07-30 2021-05-18 EMC IP Holding Company LLC Techniques for obtaining metadata and user data
TWI739227B (zh) * 2019-12-03 2021-09-11 智成電子股份有限公司 避免多餘記憶體存取的系統單晶片模組
CN114428764B (zh) * 2022-01-26 2024-04-02 重庆紫光华山智安科技有限公司 文件写入方法、系统、电子设备及可读存储介质

Family Cites Families (32)

* 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
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
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
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
US7636813B2 (en) 2006-05-22 2009-12-22 International Business Machines Corporation Systems and methods for providing remote pre-fetch buffers
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
US8595437B1 (en) 2008-11-21 2013-11-26 Nvidia Corporation Compression status bit cache with deterministic isochronous latency
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
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
US8830716B2 (en) 2012-09-29 2014-09-09 Intel Corporation Intelligent far memory bandwith scaling
CN104133780B (zh) * 2013-05-02 2017-04-05 华为技术有限公司 一种跨页预取方法、装置及系统
CN107608912B (zh) * 2013-08-20 2020-10-16 华为技术有限公司 内存物理地址查询方法和装置
US9740621B2 (en) * 2014-05-21 2017-08-22 Qualcomm Incorporated Memory controllers employing memory capacity and/or bandwidth compression with next read address prefetching, and related processor-based systems and methods
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
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
KR20160104387A (ko) * 2015-02-26 2016-09-05 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP2017072981A (ja) * 2015-10-07 2017-04-13 富士通株式会社 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム

Also Published As

Publication number Publication date
WO2015179591A1 (en) 2015-11-26
EP3146435A1 (en) 2017-03-29
CN106462495A (zh) 2017-02-22
US9740621B2 (en) 2017-08-22
JP2017516234A (ja) 2017-06-15
US20150339237A1 (en) 2015-11-26

Similar Documents

Publication Publication Date Title
CN106462495B (zh) 存储器控制器以及基于处理器的系统和方法
CN106462494B (zh) 使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法
CN106462496B (zh) 在基于中央处理单元cpu的系统中使用经压缩存储器控制器cmc来提供存储器带宽压缩
US9792221B2 (en) System and method for improving performance of read/write operations from a persistent memory device
KR101139565B1 (ko) 인-메모리, 인-페이지 디렉토리 캐시 일관성 기법
JP6859361B2 (ja) 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと
JP6821879B2 (ja) 非対称セットの結合キャッシュ
JP2008507019A (ja) メモリ管理システム
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US9208088B2 (en) Shared virtual memory management apparatus for providing cache-coherence
CN102968386B (zh) 数据供给设备、缓存设备及数据供给方法
CN107111461A (zh) 在基于中央处理单元(cpu)的系统中通过经压缩存储器控制器(cmc)使用背靠背读取操作来提供存储器带宽压缩
JP2008129712A (ja) 情報処理装置およびデータ検索方法
CN104461932B (zh) 一种面向大数据应用的目录缓存管理方法
CN103778070A (zh) 多个块一致性操作的并行处理
US11126573B1 (en) Systems and methods for managing variable size load units
CN112631962A (zh) 存储管理装置、存储管理方法、处理器和计算机系统
US20020174304A1 (en) Performance improvement of a write instruction of a non-inclusive hierarchical cache memory unit
EP2562652B1 (en) System and method for locking data in a cache memory
US20130275683A1 (en) Programmably Partitioning Caches
US7685372B1 (en) Transparent level 2 cache controller
US20220398198A1 (en) Tags and data for caches
US20150095611A1 (en) Method and processor for reducing code and latency of tlb maintenance operations in a configurable processor
US10061698B2 (en) Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
US20090164732A1 (en) Cache memory system and cache memory control method

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190604

Termination date: 20200521

CF01 Termination of patent right due to non-payment of annual fee