CN106687937B - 用于压缩算法的高速缓冲存储体扩展 - Google Patents
用于压缩算法的高速缓冲存储体扩展 Download PDFInfo
- Publication number
- CN106687937B CN106687937B CN201580048563.0A CN201580048563A CN106687937B CN 106687937 B CN106687937 B CN 106687937B CN 201580048563 A CN201580048563 A CN 201580048563A CN 106687937 B CN106687937 B CN 106687937B
- Authority
- CN
- China
- Prior art keywords
- cache
- bank
- cache memory
- access request
- address
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0851—Cache with interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
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
方面包括用于使用高速缓冲存储体扩展来实现针对压缩数据的高速缓冲存储器访问请求的计算设备、系统和方法。在一个方面中,高速缓冲存储体扩展可以包括:确定该高速缓冲存储器访问的压缩数据是否适合于单个高速缓冲存储体。响应于确定该压缩数据适合于单个高速缓冲存储体,可以计算高速缓冲存储体扩展值来替换/恢复在数据压缩期间可能被清除的用于该高速缓冲存储器访问请求的高速缓冲存储器的物理地址的存储体选择位。高速缓冲存储器的物理空间中的高速缓冲存储体扩展地址可以包括高速缓冲存储器访问请求的物理地址加上所恢复的存储体选择位。可以使用该高速缓冲存储体扩展地址来从高速缓冲存储器设备读取压缩数据,或者向高速缓冲存储器设备写入压缩数据。
Description
背景技术
无损压缩使用可配置大小的被压缩的数据段。随后,将该压缩的数据存储在高速缓存中,直到其被写回到存储器为止。但是,通过对数据进行压缩,在物理地址空间中产生未使用的孔。根据如何将所压缩的数据存储在物理地址空间中,可能存在对系统级资源(例如,高速缓存)的不均匀使用。高速缓存按照高速缓存线粒度来存储数据,并且使用最频繁使用的比特来将数据路由到存储体。所压缩的块大小和高速缓存线大小之间的不匹配可能导致对高速缓存资源(例如,存储体)的不规则使用。这种不规则使用是通过所压缩的数据清除物理地址中的未使用比特产生的,其中这些未使用比特在高速缓存索引时使用。例如,这样的情况在将256字节块压缩成128字节时发生,其将清除物理地址中用于该压缩数据的地址位。较低的地址位通常被用于高速缓存选择决策,以便产生平衡的访问(由于它们频繁地改变)。如果通常使用较低的地址位的比特W来选择高速缓冲存储体,则压缩的数据将始终位于一半的存储体/高速缓存中,这是由于当比特W被清除时(即,在压缩比特W=0之后),该值将始终是相同的。类似地,如果通常使用两个比特(例如,比特W和比特Y)来选择高速缓冲存储体,虽然比特Y的值可以改变(即,在压缩之后,比特Y将等于0或1),但是由于比特W的值将保持静态(即,比特W=0),并且因此存储体选择位W和Y一起可以组合达四个存储体选择选项中的仅仅两个(即,比特Y和W=00或10,而不是00、01、10或11),因此压缩的数据将始终位于一半的存储体/高速缓存中。
发明内容
各个方面的方法和装置提供了用于在计算设备上针对压缩数据,执行高速缓冲存储器访问请求的电路和方法,其可以包括:恢复高速缓冲存储器访问请求的物理地址的一个或多个存储体选择位以产生高速缓冲存储体扩展地址,以及在该高速缓冲存储体扩展地址处执行高速缓冲存储器访问请求。
一个方面的方法还可以包括:确定压缩数据是否适合于高速缓冲存储器设备的单个高速缓冲存储体的高速缓存线,在其中,可以响应于确定压缩数据适合于该高速缓冲存储器设备的单个高速缓冲存储体,执行恢复高速缓冲存储器访问请求的物理地址的一个或多个存储体选择位以产生高速缓冲存储体扩展地址。在一个方面中,确定所述高速缓冲存储器访问请求的压缩数据是否适合于该高速缓冲存储器设备的单个高速缓冲存储体可以包括:确定该压缩数据的压缩比是否大于或等于2:1的压缩比。在一个方面中,确定所述高速缓冲存储器访问请求的压缩数据是否适合于该高速缓冲存储器设备的单个高速缓冲存储体可以包括:确定该压缩数据的大小是否小于或等于该高速缓冲存储器设备的高速缓存线的大小。
在一个方面中,响应于确定所述压缩数据适合于所述高速缓冲存储器设备的高速缓冲存储体,恢复所述高速缓冲存储器访问请求的物理地址的一个或多个存储体选择位以产生所述高速缓冲存储体扩展地址可以包括:选择用于高速缓冲存储体扩展函数的输入,执行所述高速缓冲存储体扩展函数,返回高速缓冲存储体扩展值,以及使用所述高速缓冲存储体扩展值来替换所述一个或多个存储体选择位。在一个方面中,选择用于所述高速缓冲存储体扩展函数的输入可以包括:选择所述高速缓冲存储器访问请求的高速缓冲存储器设备的物理地址的保留位的多个最低有效位,作为用于高速缓冲存储体扩展函数的操作数,以及执行所述高速缓冲存储体扩展函数可以包括:使用具有所述操作数的异或运算符。在一个方面中,所述高速缓冲存储体扩展函数可以包括:使用逻辑运算、算术运算中的一个,选择随机值,从表格中选择与所述高速缓冲存储器访问请求的物理地址相关联的高速缓冲存储体扩展地址。
在一个方面中,在所述高速缓冲存储器设备中的所述高速缓冲存储体扩展地址处执行针对压缩数据的高速缓冲存储器访问请求可以包括:将压缩数据写入到由所述高速缓冲存储体扩展地址的一个或多个恢复的存储体选择位指示的第一高速缓冲存储体,其中,该第一高速缓冲存储体与由所述高速缓冲存储器访问请求的高速缓冲存储器设备的物理地址的一个或多个存储体选择位指示的第二高速缓冲存储体不同,以及从由所述高速缓冲存储体扩展地址的一个或多个恢复的存储体选择位指示的第一高速缓冲存储体读取压缩数据,其中,该第一高速缓冲存储体与由所述高速缓冲存储器访问请求的高速缓冲存储器设备的物理地址的一个或多个存储体选择位指示的第二高速缓冲存储体不同。
一个方面包括一种计算设备,该计算设备具有被通信地连接到彼此的处理器、存储体扩展函数组件、高速缓冲存储器控制器和高速缓冲存储器,其中,所述处理器、存储体扩展函数组件、高速缓冲存储器控制器被配置为执行上面描述的方面的方法中的一个或多个的操作。
一个方面包括一种非暂时性处理器可读介质,其具有被存储在其上的处理器可执行指令,所述处理器可执行指令被配置为使处理器、存储体扩展函数组件和高速缓冲存储器控制器执行上面描述的方面的方法中的一个或多个的操作。
一个方面包括一种计算设备,该计算设备具有用于执行上面描述的方面的方法中的一个或多个的功能的单元。
附图说明
被并入本文并且构成本说明书的一部分的附图,示出了本发明的示例性方面,并且连同上面给出的一般性描述以及下面给出的具体实施方式用来解释本发明的特征。
图1是示出了适合于实现一个方面的计算设备的组件框图。
图2是示出了适合于实现一个方面的示例性多核处理器的组件框图。
图3A和图3B是根据一个方面示出了被配置为实现高速缓冲存储体扩展的片上系统(SoC)的例子的组件框图。
图4是根据一个方面的对高速缓冲存储器的一部分的说明,其中该高速缓冲存储器包括由用于存储压缩数据的多个高速缓冲存储体上的高速缓存空间组成的高速缓存线。
图5是根据一个方面的对高速缓冲存储器的一部分的说明,其中该高速缓冲存储器包括用于存储压缩数据的多个高速缓冲存储体上的高速缓存线。
图6是根据一个方面的对高速缓冲存储器的一部分的说明,其中该高速缓冲存储器包括用于存储压缩数据的多个高速缓冲存储体上的高速缓存线。
图7是根据一个方面的对高速缓冲存储器的一部分的说明,其中该高速缓冲存储器包括用于存储压缩数据或未压缩数据的多个高速缓冲存储体上的高速缓存线。
图8是根据一个方面示出了针对压缩数据的高速缓冲存储器访问请求的物理地址和该高速缓存中的相关联的存储体扩展物理地址之间的关系的示例性表格。
图9是示出了用于针对压缩数据的高速缓冲存储器访问请求,实现高速缓冲存储体扩展的一个方面的方法的过程流程图。
图10是示出了用于针对压缩数据的写高速缓冲存储器访问请求,实现高速缓冲存储体扩展的一个方面的方法的过程流程图。
图11是示出了用于针对压缩数据的读高速缓冲存储器访问请求,实现高速缓冲存储体扩展的一个方面的方法的过程流程图。
图12是示出了适合于与各个方面一起使用的示例性移动计算设备的组件框图。
图13是示出了适合于与各个方面一起使用的示例性移动计算设备的组件框图。
图14是示出了适合于与各个方面一起使用的示例性服务器的组件框图。
具体实施方式
将参照附图来详细地描述各个方面。只要有可能,将贯穿附图使用相同的附图标记来指代相同或者相似的部件。对于特定例子和实现方式的提及是出于说明性的目的的,并非旨在限制本发明或者权利要求的范围。
本文可互换地使用术语“计算设备”和“移动计算设备”来指代以下各项中的任何一项或者全部:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数据助理(PDA)、膝上型计算机、平板计算机、智能本、超级本、掌上型计算机、无线电子邮件接收机、具备多媒体互联网功能的蜂窝电话、无线游戏控制器、以及包括存储器和多核可编程处理器的类似个人电子设备。虽然各个方面对于诸如智能电话之类的移动计算设备(其具有有限的存储器和电池资源)特别有用,但这些方面通常可用于实现多个存储器设备和有限的功率预算的任何电子设备中,在其中,减少处理器的功耗可以延长移动计算设备的电池工作时间。
本文使用术语“片上系统”(SoC)来指代一组相互连接的电子电路,其通常但不唯一地包括:硬件内核、存储器和通信接口。硬件内核可以包括各种各样不同类型的处理器,例如,通用处理器、中央处理单元(CPU)、数字信号处理器(DSP)、图形处理单元(GPU)、加速处理单元(APU)、辅助处理器、单核处理器和多核处理器。硬件内核还可以体现其它硬件和硬件组合,例如,现场可编程门阵列(FPGA)、专用集成电路(ASCI)、其它可编程逻辑器件、分立门控逻辑器件、晶体管逻辑器件、性能监测硬件、看门狗硬件和时间基准。可以对集成电路进行配置,使得集成电路的组件存在于单片的半导体材料(例如,硅)上。
在一个方面中,可以实现高速缓冲存储体扩展,以便减少当对数据进行压缩时,由压缩数据的块大小和高速缓存线的大小的不匹配造成的、对物理地址空间中用于存储压缩数据的高速缓存资源的不均匀使用。可以向用于在高速缓存中存储压缩数据块的地址位应用算术或运算函数,以替换被清除的用于存储该压缩数据的地址位,由于减小的数据块大小不需要使用高速缓存的通过被清除的比特寻址的部分。在一个方面中,为了实现使用更多的高速缓冲存储体来用于压缩数据,可以通过向在数据压缩期间被保留的地址位应用算术或运算函数,重新生成或者恢复用于指定其它高速缓冲存储体的地址部分。换言之,通过关于地址位使用算术运算,可以向该地址添加用于指定高速缓冲存储体的比特(即,1或0),以替换通过数据压缩清除的比特。当压缩算法清除至少部分地用于确定高速缓冲存储体的地址部分时,可以向所保留的地址位中的两个或更多地址位应用算术运算,以在被清除的地址部分中生成存储体选择位。
例如,当通过数据压缩将256字节的未压缩数据块在大小上被减少到128字节或更少时,该压缩数据块只需要未压缩数据所需要的高速缓存空间的一半。在相同的例子中,高速缓冲存储器可以将256字节数据块存储在128字节高速缓存线中。在该例子中,可以将两个128字节高速缓存线划分在单独的高速缓冲存储体之中。因此,可以将128比特压缩数据存储在第一高速缓冲存储体上的第一高速缓存线中,而不需要同一高速缓存的第二高速缓冲存储体上的第二高速缓存线。在这样的例子中,当对数据进行压缩时,可以通过压缩来清除用于指定要使用的高速缓冲存储体的地址部分。如上所述,由于被清除的地址部分可能不再指定另一个高速缓冲存储体(例如,第二高速缓冲存储体),这可能导致将压缩数据写入到高速缓冲存储体的仅仅一半(例如,第一高速缓冲存储体)。高速缓冲存储体扩展可以使用将添加存储体选择位的算术或运算函数。
各个方面的高速缓冲存储体扩展操作可以选择频繁地交替值的地址部分,以便实现压缩数据跨越各个高速缓冲存储体的更频繁的分发。例如,与较高的保留的高速缓存地址位相比,较低的保留的高速缓存地址位更频繁地交替。与使用百位数字和十位数字相比,用十位数字和个位数字执行运算可能导致所寻址的高速缓冲存储体的更频繁的变化。
在至少部分地使用被清除的地址部分来确定高速缓冲存储体的方面中,可以使用两个或更多保留部分来重新生成或者恢复该被清除的部分。例如,使用二进制比特,可以对保留位和清除位进行组合来选择高速缓冲存储体。在被清除位恒定(例如,被清除位=0)并且第一保留位可变(即,保留位=0或1)的方面中,高速缓冲存储体的地址选择部分可以是00或01。在被清除位未被清除并保持可变(例如,未被清除的位=0或1)的方面中,高速缓冲存储体选择可以是00、01、10或11。因此,被清除位将高速缓冲存储体选择限制到其潜在值的一半。使用第一保留位和类似可变的第二保留位来应用算术或运算函数,并且利用该函数的结果来替换被清除位,可以恢复用于高速缓冲存储体选择的全部数组的潜在值。在一个方面中,该函数可以包括第一保留位和第二保留位的异或(XOR)。
被应用于地址位的函数可以是可以用硬件和/或软件实现的各种各样的算术或运算函数中的任何一个。用于该函数的操作数可以是以下各项的各种各样的组合中的任何一个:用于压缩数据的保留地址的部分、或者用于压缩数据的保留地址的一部分和另一个变量。例如,可以实现哈希函数来使用各种各样的操作数,并且输出有限的一组值来替换或者恢复用于压缩数据被清除的的地址部分。在一个方面中,该函数还可以包括随机数发生器。
图1示出了适合于与各个方面一起使用的包括与远程计算设备50相通信的计算设备10的系统。计算设备10可以包括具有处理器14、存储器16、通信接口18和存储接口20的SoC 12。该计算设备还可以包括诸如有线或无线调制解调器之类的通信组件22、存储组件24、用于建立到无线网络30的无线连接32的天线26、和/或用于连接到至互联网40的有线连接44的网络接口28。处理器14可以包括各种各样的硬件内核以及多个处理器内核中的任何一种。SoC 12可以包括一个或多个处理器14。计算设备10可以包括一个以上的SoC 12,从而增加处理器14和处理器内核的数量。计算设备10还可以包括与SoC 12不相关联的处理器14。各个处理器14可以是如下面参照图2描述的多核处理器。处理器14均可以被配置为用于特定目的,其可以与计算设备10的其它处理器14相同或者不同。可以将相同或不同配置的处理器14和处理器内核中的一个或多个归成一组。
SoC 12的存储器16可以是被配置用于存储由处理器14访问的数据和处理器可执行代码的易失性或者非易失性存储器。在一个方面中,存储器16可以被配置为至少临时地存储数据结构,例如,由处理器14中的一个或多个处理器输出的中间处理数据。在一个方面中,存储器16可以被配置为:使用高速缓冲存储体扩展来存储用于针对压缩数据的高速缓冲存储器访问请求的信息。存储器16可以包括非易失性只读存储器(ROM),以便保留用于高速缓冲存储体扩展的信息。
计算设备10和/或SoC 12可以包括被配置用于各种目的的一个或多个存储器16。在一个方面中,一个或多个存储器16可以被配置为专用于存储用于高速缓冲存储体扩展的信息。存储器16可以以下列方式来存储该信息:使得该信息能够被处理器或专用控制器访问以实现高速缓冲存储体扩展。
通信接口18、通信组件22、天线26和/或网络接口28可以一致地工作,以使得计算设备10能够经由无线连接32通过无线网络30和/或有线网络44,与远程计算设备50进行通信。可以使用各种各样的无线通信技术(包括例如被用于无线通信的射频频谱)来实现无线网络30,以向计算设备10提供到互联网40的连接,通过互联网40,计算设备10可以与远程计算设备50交换数据。
存储接口20和存储组件24可以一致地工作,以允许计算设备10将数据存储在非易失性存储介质上。可以非常类似于存储器16的方面,对存储组件24进行配置,其中存储组件24可以存储用于高速缓冲存储体扩展的信息,使得一个或多个处理器14可以访问该信息。即使在计算设备10的电源已经被关闭之后,存储组件24(其是非易失性的)也可以保持该信息。当电源被再次打开并且计算设备10重新启动时,被存储在存储组件24上的信息对于计算设备10可以是可用的。存储接口20可以控制对存储设备24的访问,并且允许处理器14从存储设备24读取数据和向存储设备24写入数据。
可以对计算设备10的组件中的一些或全部组件进行不同地排列和/或组合,同时仍然服务必要的功能。此外,计算设备10可以不被限制到这些组件中的每个组件中的一个,并且在计算设备10的各个配置中可以包括每个组件的多个实例。
图2示出了适合于实现一个方面的多核处理器14。多核处理器14可以具有多个同构或者异构的处理器内核200、201、202、203。处理器内核200、201、202、203可以是同构的,其在于:单个处理器14的处理器内核200、201、202、203可以被配置用于相同的目的,并且具有相同的或类似的性能特性。例如,处理器14可以是通用处理器,并且处理器内核200、201、202、203可以是同构的通用处理器内核。替代地,处理器14可以是图形处理单元或者数字信号处理器,并且处理器内核200、201、202、203可以分别是同构的图形处理器内核或者数字信号处理器内核。
通过制造工艺和材料的变化,同构处理器内核200、201、202、203的性能特性在使用相同设计的处理器内核的同一多核处理器14内或者另一个多核处理器14内可能逐处理器内核而不同。
处理器内核200、201、202、203可以是异构的,其在于:单个处理器14的处理器内核200、201、202、203可以被配置用于不同的目的,和/或具有不同的性能特性。这样的异构处理器内核的例子可以包括被称为“big.LITTLE”架构的架构,在该架构中,可以将较慢的、低功率处理器内核与更强大的和高功率(power-hungry)的处理器内核相耦合。
在图2中示出的例子中,多核处理器14包括四个处理器内核200、201、202、203(即,处理器内核0、处理器内核1、处理器内核2和处理器内核3)。为了便于解释起见,本文的例子可以指代图2中示出的四个处理器内核200、201、202、203。但是,图2中示出的和本文描述的四个处理器内核200、201、202、203只是作为例子来提供,而决不意指将各个方面限制于四核处理器系统。与本文示出和描述的四个处理器内核200、201、202、203相比,计算设备10、SoC 12或多核处理器14可以单独地或者组合地包括更少或者更多的处理器内核。
图3A和图3B根据一个方面示出了被配置为实现高速缓冲存储体扩展的示例性SoC12。SoC 12可以包括处理器14、高速缓冲存储器控制器304、高速缓冲存储器306和其它组件(诸如上面描述的SoC 12的组件)。高速缓冲存储器306可以被配置为临时地存储用于比在访问图1中的存储组件24或存储器16时更快速的访问的数据和程序指令。高速缓冲存储器306可以专用于由单个处理器14使用,或者在多个处理器14之间共享。在一个方面中,高速缓冲存储器306可以是处理器14的一部分,并且可以专用于由单个处理器内核使用,或者在处理器14的多个处理器内核之间共享。
高速缓冲存储器控制器304可以管理SoC 12的各个处理器14和子系统(未示出)对高速缓冲存储器306的访问。对高速缓冲存储器的访问管理的一部分可以包括:根据各个方面,使用高速缓冲存储体扩展,用于由处理器14针对压缩数据,向高速缓冲存储器36发出的写和读高速缓冲存储器访问请求。高速缓冲存储体扩展可以被用于针对压缩数据的高速缓冲存储器访问请求,其中该压缩数据具有使得该压缩数据小于或等于高速缓存线的大小的压缩比或数据大小。此外,压缩数据也可以不比高速缓冲存储器的高速缓冲存储体更大。向压缩数据应用高速缓冲存储体扩展,可以导致对高速缓冲存储体扩展地址、根据高速缓冲存储器访问请求的物理地址修改的高速缓冲存储器306中的物理地址的使用。对于写高速缓冲存储器访问请求而言,高速缓存冲存储器控制器304可以将压缩数据写入到用于该压缩数据的高速缓冲存储体扩展地址。对于读高速缓冲存储器访问请求而言,高速缓冲存储器控制器304可以从用于该压缩数据的高速缓冲存储体扩展地址读取该压缩数据。
在图3A中示出的方面中,SoC 12可以包括被配置为实现高速缓冲存储体扩展的高速缓冲存储体扩展地址组件300和高速缓冲存储体扩展函数组件302。高速缓冲存储器控制器304可以通过向高速缓冲存储体扩展地址组件300发送高速缓冲存储器访问请求的物理地址,来发起针对接收的高速缓冲存储器访问请求的高速缓冲存储体扩展。高速缓冲存储器控制器304可以从高速缓冲存储体扩展地址组件300接收经转换的与该高速缓冲存储器访问请求的物理地址相对应的存储体扩展地址。下面将进一步描述将高速缓冲存储器访问请求的物理地址转换成高速缓冲存储体扩展地址。
高速缓冲存储体扩展地址组件300可以是高速缓冲存储器控制器304的一部分或者与其分离的数据存储组件,其可以存储高速缓冲存储器306的一个或多个物理地址。由高速缓冲存储体扩展地址组件300存储的物理地址可以包括高速缓冲存储器访问请求的物理地址和/或高速缓冲存储体扩展地址。在一个方面中,高速缓冲存储体扩展地址组件300可以从高速缓冲存储器控制器304或者处理器14接收高速缓冲存储器访问请求的物理地址。高速缓冲存储体扩展地址组件300可以向高速缓冲存储体扩展函数组件302提供该高速缓冲存储器访问请求的物理地址,以进行转换。高速缓冲存储体扩展地址组件300可以从高速缓冲存储体扩展函数组件302接收经转换的存储体扩展地址,并使用该高速缓冲存储体扩展地址来替换高速缓冲存储器访问请求的物理地址。高速缓冲存储体扩展地址组件300可以向高速缓冲存储器控制器304或处理器14提供该高速缓冲存储体扩展地址。
在一个方面中,高速缓冲存储体扩展地址组件300可以以下列方式来存储数据:使高速缓冲存储器访问请求的一个或多个物理地址与相应的存储体扩展地址相关联。在一个方面中,可以将相关联的地址格式化成适合于链接该相关联的地址的任何数据结构,例如,表格。在一个方面中,响应于针对具有所需要的压缩比和/或大小的压缩数据的高速缓冲存储器访问请求,可以将每对相关联的地址存储到高速缓冲存储体扩展地址组件300中。
在一个方面中,在接收到针对高速缓存的任何物理地址的高速缓冲存储器访问请求之前,可以将相关联的地址中的一些或全部加载到高速缓冲存储体扩展地址组件300中。例如,高速缓冲存储器306的特定部分可以被指定用于存储压缩数据,其中该压缩数据可以使用高速缓冲存储体扩展来存储。如本文进一步描述的,可以在接收到针对高速缓冲存储器306的该部分的物理地址的任何高速缓冲存储器访问请求之前,确定用于高速缓冲存储器306的该部分的高速缓冲存储体扩展地址,并将其存储到高速缓冲存储体扩展地址组件300中。
高速缓冲存储体扩展函数组件302可以是高速缓冲存储器控制器304的一部分或者与其分离的硬件或软件实现的组件,用于将高速缓冲存储器访问请求的物理地址转换成相应的存储体扩展地址。在将高速缓冲存储器访问请求的物理地址转换成相应的存储体扩展地址时使用的高速缓冲存储体扩展函数,可以是已知的数学和/或运算函数中的任何单个或者组合的数学和/或运算函数。
在一个方面中,高速缓冲存储体扩展函数组件302可以使用逻辑运算(诸如异或(XOR)操作),其将高速缓冲存储器访问请求的物理地址位的选择用作用于高速缓冲存储体扩展函数的操作数。高速缓冲存储体扩展函数的结果可以包括:被用于替换数据压缩过程已经从该高速缓冲存储器访问请求的物理地址中清除的比特的替换位。如讨论的,在压缩期间清除的位可以是高速缓冲存储体选择位,并且作为清除高速缓冲存储体选择位的结果,高速缓冲存储器访问请求的物理地址将始终指示相同的值用于被清除高速缓冲存储体选择位。高速缓冲存储器控制器304可以使用该存储体选择位来确定向高速缓冲存储器306的哪个存储体写入或者从哪个存储体读取。
在一个方面中,高速缓冲存储器访问请求的压缩数据可以比高速缓存线的大小更小,并且因此可以被写入到单个高速缓冲存储体。当高速缓冲存储体选择位始终指示相同的值用于这样的压缩数据时,该压缩数据可能始终被存储在比整个高速缓冲存储体的集合更小的相同的高速缓冲存储体或者高速缓冲存储体集合上。例如,高速缓冲存储器访问请求的物理地址可以包括仅一个存储体选择位。单个存储体选择位指示两个值中的一个值(例如,0或1),每个值表示两个高速缓冲存储体中的一个。作为存储体选择位始终指示相同的值(例如,0)的结果,存储体选择位可以只指示对一个相应的高速缓冲存储体的使用。这有效地将用于压缩数据的高速缓冲存储体的使用减少到这些高速缓冲存储体的一半。被清除位的类似例子可以包括:高速缓冲存储器访问请求的物理地址的存储体选择位的一些任意数量或者全部。例如,包括四个高速缓冲存储体的高速缓冲存储器306可能需要在物理地址中使用两个存储体选择位。源自于数据压缩的被清除位可以包括该物理地址的存储体选择位中的一者或二者。结果,用于被压缩至其先前大小的至少一半的数据的存储体,可以被限制到高速缓冲存储体的一半或四分之一。高速缓冲存储体扩展函数组件302可以被用于针对足够小量的压缩数据,恢复对高速缓冲存储体中的一些或全部的使用。
在一个方面中,高速缓冲存储体扩展函数组件302可以从高速缓冲存储体扩展地址组件300接收物理地址。如上所述,该物理地址可以是高速缓冲存储器访问请求的物理地址,或者其可以是与被指定为存储压缩数据的高速缓冲存储器的一部分相关联的物理地址。高速缓冲存储体扩展函数组件302可以在确定高速缓冲存储体扩展函数的结果时,使用该物理地址的一部分。该结果可以被用于替换该物理地址的存储体选择位,以产生相应的存储体扩展地址。高速缓冲存储体扩展函数组件302可以向高速缓冲存储体扩展地址组件300提供该高速缓冲存储体扩展地址。
在一个方面中,处理器14可以通过向高速缓冲存储体扩展地址组件300发送高速缓冲存储器访问请求的物理地址,来发起高速缓冲存储体扩展。处理器14或者高速缓冲存储器控制器304可以从高速缓冲存储体扩展地址组件300接收经转换的存储体扩展地址。在处理器14接收该高速缓冲存储体扩展地址的方面中,处理器14可以将该高速缓冲存储体扩展地址包括在针对高速缓冲存储器控制器304的高速缓冲存储器访问请求中。在高速缓冲存储器控制器304从处理器14接收高速缓冲存储器访问请求,并且从处理器14或高速缓冲存储体扩展地址组件300接收高速缓冲存储体扩展地址的方面中,高速缓冲存储器控制器304可以使用该高速缓冲存储体扩展地址来实现高速缓冲存储器访问请求。
在图3B中示出的方面中,SoC 12可以包括压缩组件308,其被配置为针对被发送给高速缓冲存储器306的写高速缓冲存储器访问请求,对由处理器14提供的数据进行压缩。压缩组件308可以针对写高速缓冲存储器访问请求,输出由处理器14提供的压缩版本的数据。处理器14可以指示压缩组件308根据压缩参数对数据进行压缩。该压缩参数可以包括压缩比、压缩数据大小或者压缩数据质量。在一个方面中,该压缩组件可以是可以从处理器14接收程序指令的可编程硬件组件,或者可以被预先编程有用于确定数据的压缩的压缩规则或算法。在一个方面中,该压缩规则或算法可以是静态压缩参数。在一个方面中,压缩组件308可以是被配置为对数据进行压缩的程序软件。压缩组件308可以从处理器14或者用于指示压缩组件308如何对数据进行压缩的其它程序软件,接收作为压缩参数的输入值。在一个方面中,程序软件压缩组件308可以包括类似于上面描述的可编程硬件压缩组件308的压缩规则或者算法。压缩组件308可以包括诸如数据大小、压缩比、以及对于该压缩数据的输出的压缩质量之类的压缩参数。例如,可以将这些压缩参数包括在压缩数据的元数据中。
在存储体扩展函数组件302处可以接收压缩组件308的输出(压缩数据)。如上所述,高速缓冲存储体扩展函数组件302可以接收高速缓冲存储器访问请求的物理地址,并且将其转换成相应的存储体扩展地址。在将高速缓冲存储器访问请求的物理地址转换成相应的存储体扩展地址时使用的高速缓冲存储体扩展函数,可以是已知的数学和/或运算函数中的任何单个或者组合的函数。
高速缓冲存储体扩展函数组件302还可以接收用于该压缩数据的压缩参数,并且使用这些压缩参数来确定如何将物理地址转换成高速缓冲存储体扩展地址。如本文进一步详细讨论的,数据的压缩可以修改由处理器14发出的高速缓冲存储器访问请求的物理地址。这种对物理地址的修改可以包括:改变一个或多个高速缓冲存储体选择位的值。压缩参数可以向高速缓冲存储体扩展函数组件302指示:如何通过数据的压缩来对物理地址进行修改,以及该物理地址的修改中的哪些将进一步修改。
例如,高速缓冲存储体扩展函数组件302还可以例如通过恢复存储体选择位中的一个或多个来修改压缩数据的物理地址。恢复存储体选择位中的一个或多个的高速缓冲存储体扩展函数组件302,可以(或者可以不)将存储体选择位返回到它们的原始值。但是,恢复存储体选择位,可以将存储体选择位的值,从针对于类似压缩数据的所有相同存储体选择位的静态值,改变为可能基于来自物理地址的保留位改变的动态值。
在一个方面中,可以以类似于下面的伪代码的方式来实现高速缓冲存储体扩展函数:
在上面的伪代码例子中,BankSpreading函数的BaseAddr输入可以包括高速缓冲存储器访问请求的物理地址。CompressionLevel可以包括压缩参数,诸如高速缓冲存储器访问请求的压缩数据的压缩比。可以在CompressionLevel满足条件语句的条件时,确定PhysicalAddressShift。在该例子中,CompressionLevel可以等于用于该压缩数据的4:1或4:2的压缩比。为了确定PhysicalAddressShift,可以将Bit1和Bit2变量设置为BaseAddr输入的指定比特。使用Bit1和Bit2变量,可以将PhysicalShiftAddress设置为偏移Bit1异或Bit2来恢复被清除位,例如将其移动W位置,其中W是压缩期间被清除的地址位的位置。如上所述,数学或者运算函数可以替代该例子中的异或函数。BankSpreading函数的输出可以包括与PhysicalAddressShift相组合的BaseAddr输入。在一个方面中,这些值的组合可以恢复物理地址的一个或多个被清除存储体选择位,并且产生用于高速缓冲存储器访问请求的高速缓冲存储体扩展地址。
存储体扩展函数组件302可以向高速缓冲存储器控制器304转发该高速缓冲存储体扩展地址和/或高速缓冲存储器访问请求。如上所述,高速缓冲存储器控制器304可以使用该高速缓冲存储体扩展地址来实现对于高速缓冲存储器306的高速缓冲存储器访问请求。
图4根据一个方面示出了高速缓冲存储器的一部分,其包括由用于存储压缩数据412的多个高速缓冲存储体418、420、422和424上的高速缓存线408、410、414和416组成的高速缓存空间400、402、404和406。如该例子中示出的,每个高速缓存线408、410、414和416可以位于单独的高速缓冲存储体418、420、422和424上。将压缩数据412示出为占据每个高速缓存线408、410、414和416的近似一半。在该例子中,预压缩的数据和高速缓存空间400、402、404和406可以是近似256字节。高速缓存线408、410、414和416可以均是近似128字节。可以将预压缩的数据压缩到近似64字节,其产生压缩数据412。用于压缩数据412的压缩比可以是4:1。换言之,压缩数据412可以是预压缩的数据的四分之一或25%。因此,用于压缩数据412的压缩比大于或等于2:1的压缩比,或者压缩数据512的大小可以小于或等于高速缓存线408、410、414和416的大小。这可能导致压缩数据512足够小,以适合于单个高速缓存线408、410、414和416。
每个高速缓冲存储体418、420、422和424可以与高速缓冲存储器访问请求的物理地址中的存储体选择位的特定组合相关联。在该例子中,该物理地址可以包括两个存储体选择位。存储体选择位的值=00,可以与高速缓冲存储体418相关联。类似地,存储体选择位的值=01可以与高速缓冲存储体420相关联,存储体选择位的值=10可以与高速缓冲存储体422相关联,以及存储体选择位的值=11可以与高速缓冲存储体424相关联。在压缩清除了所有的存储体选择位(例如,其导致存储体选择位的值始终=00)的方面中,可以只使用如高速缓存空间400中的高速缓冲存储体418来存储压缩数据412。在压缩算法清除了最低有效存储体选择位(例如,其导致存储体选择位的值始终=00或10)的类似方面中,可以只使用高速缓冲存储体418和422来如在高速缓存空间400和406中存储压缩数据412。在一个方面中,可以将被清除存储体选择位设置为“1”而不是“0”。因此,在不具有高速缓冲存储体扩展的情况下,高速缓冲存储体418、420、422和424中的一些与导致不均匀使用(如果真会发生的话)的其它高速缓冲存储体418、420、422和424相比可以不太经常地使用。
在针对压缩数据412的高速缓冲存储器访问请求来实现高速缓冲存储体扩展的方面中,其通常可以被限定到被存储在比高速缓冲存储体418、420、422和424的所有一半或者更少的部分更少的部分中,可以被存储在比有限数量的高速缓冲存储体418、420、422和424更多的部分中。可以使用高速缓冲存储体扩展来恢复高速缓冲存储器访问请求的物理地址的被清除存储体选择位中的一个或多个。在使用两个存储体选择位的方面(其中,对所有的存储体选择位进行清除)中,可以使用高速缓冲存储体扩展来恢复存储体选择位中的一者或二者。在一个方面中,可以使用具有完全不同或者部分不同的操作数的高速缓冲存储体扩展函数,来恢复存储体选择位。例如,可以将高速缓冲存储器访问请求的物理地址的保留(或者未清除)位用作用于高速缓冲存储体扩展函数的操作数。对于针对第一被清除存储体选择位的高速缓冲存储体扩展函数的实现方式而言,该高速缓冲存储体扩展函数可以使用第一保留位和第二保留位。对于第二被清除存储体选择位而言,该高速缓冲存储体扩展函数可以使用第一保留位或第二保留位中的任一者和第三保留位,或者第三保留位和第四保留位。
不管使用的操作数,高速缓冲存储体扩展函数可以导致针对高速缓冲存储器访问请求,使用高速缓冲存储体418、420、422和424中的多个。如上所述,在压缩算法清除了两个存储体选择位的方面中,存储体选择位的值可以=00,其允许只使用如高速缓存空间400中的高速缓冲存储体418。在高速缓冲存储体扩展恢复两个被清除存储体选择位中的一个的方面中,存储体选择位的值可以=00和下列中的一个:01或10,其允许另外使用如高速缓存空间402中的高速缓冲存储体420或者如高速缓存空间406中的高速缓冲存储体422中的一个。在压缩算法清除两个存储体选择位中的一个的方面中,存储体选择位的值可以=00和下列中的一个:01或10,其允许使用如高速缓存空间400中的高速缓冲存储体418和下列各项中的一项:如高速缓存空间402中的高速缓冲存储体420或者如高速缓存空间406中的高速缓冲存储体422。在高速缓冲存储体扩展恢复被清除存储体选择位的方面中,存储体选择位的值可以=00、01、10和11,其允许使用如高速缓存空间400、402、404和406中的高速缓冲存储体418、420、422和424。
在本文的例子中使用的高速缓冲存储体的数量,并不意指以任何方式进行限制。高速缓冲存储器可以包括各种大小的高速缓存线,包括比本文例子中描述的更多或更少的高速缓冲存储体。高速缓冲存储体扩展可以被类似地应用于具有任意数量的高速缓冲存储体的高速缓冲存储器中。类似地,高速缓冲存储器的物理地址的存储体选择位可以改变。在一个方面中,存储体选择位的数量可能受到由高速缓冲存储器使用的高速缓冲存储体的数量的影响。在一个方面中,恢复的存储体选择位的数量也可以改变,其导致使用这些高速缓冲存储体中的一些或全部。
图5根据一个方面示出了高速缓冲存储器的一部分,其包括由用于存储压缩数据512的多个高速缓冲存储体418、420、422和424上的高速缓存线408、410、414和416组成的高速缓存空间500、502、504和506。图5中示出的例子类似于图4中示出的例子。这些例子之间的差别在于:压缩数据512可以比压缩数据412更大。在该例子中,预压缩的数据和高速缓存空间500、502、504和506可以是近似256字节。高速缓存线408、410、414和416均可以是近似128字节。可以将预压缩的数据压缩到近似128字节,其产生压缩数据512。用于压缩数据512的压缩比可以是2:1。换言之,压缩数据512可以是预压缩的数据的大小的一半或50%。因此,用于压缩数据512的压缩比大于或等于2:1,或者压缩数据512的大小可以小于或等于高速缓存线408、410、414和416的大小。这可能导致压缩数据512足够小,以适合于单个高速缓存线408、410、414和416。
由于压缩数据512可以适合于单个高速缓存线408、410、414和416(类似于压缩数据412),因此上面使用压缩数据412描述的所有的方面也可以应用于压缩数据512。在类似的例子中,被清除存储体选择位可以限制用于压缩数据512的存储体418、420、422和424的数量。在图5中示出的例子中,被清除存储体选择位可以导致只使用四个可用的高速缓冲存储体418、420、422和424中的一个或两个。此外,高速缓冲存储体扩展可以被用于恢复被清除存储体选择位中的一个或多个,增加可使用的高速缓冲存储体418、420、422和424的数量。
图6根据一个方面示出了高速缓冲存储器的一部分,其包括由用于存储压缩数据612的多个高速缓冲存储体418、420、422和424上的高速缓存线408、410、414和416组成的高速缓存空间600、602、604和606。不同于图4和图5中的先前的例子,压缩数据612不适合于单个高速缓存线408、410、414和416。继续上面的例子,预压缩的数据和高速缓存空间600、602、604和606可以是近似256字节。高速缓存线408、410、414和416均可以是近似128字节。可以将预压缩的数据压缩到近似192字节,其产生压缩数据612。用于压缩数据512的压缩比可以是4:3。换言之,压缩数据612可以是预压缩的数据的大小的四分之三或75%。因此,用于压缩数据612的压缩比小于2:1的压缩比,或者压缩数据的大小可以大于高速缓存线408、410、414和416。这可能导致压缩数据612太大,以致不适合于单个高速缓冲存储体418、420、422和424上的单个高速缓存线408、410、414和416。在一个方面中,由于针对相应的高速缓存空间600、602、604和606,可以将压缩数据612存储在多个高速缓冲存储体418、420、422和424上,因此用于压缩数据612的存储体选择位可以是不相关的。因此,高速缓冲存储体扩展可以不被用于压缩数据612。
图7根据一个方面示出了高速缓冲存储器的一部分,其包括由用于存储压缩数据712的多个高速缓冲存储体418、420、422和424上的高速缓存线408、410、414和416组成的高速缓存空间700、702、704和706。类似于图6中的例子,压缩数据712不适合于单个高速缓存线408、410、414和416。不管用于压缩数据712的压缩比怎样,由于压缩数据712可能不适合于单个高速缓冲存储体418、420、422和424上的高速缓存线408、410、414和416,因此存储体选择位可以是不相关的。在一个方面中,由于针对相应的高速缓存空间700、702、704和706,可以将压缩数据712存储在多个高速缓冲存储体418、420、422和424上,因此用于压缩数据712的存储体选择位可以是不相关的。因此,高速缓冲存储体扩展可以不被用于压缩数据712。
图8根据一个方面示出了针对压缩数据的高速缓冲存储器访问请求的物理地址和该高速缓存中的相关联的存储体扩展物理地址之间的关系的示例性表格800。表格800可以包括:高速缓冲存储器的物理地址(其可以在针对压缩数据的高速缓冲存储器访问请求中使用)所对应的列802、物理地址的一部分的二进制比特表示(或物理地址位)804、物理地址存储体选择位806、高速缓冲存储体扩展地址808、存储体扩展地址的一部分的二进制比特表示(或者存储体扩展地址位)810、以及高速缓冲存储体扩展地址存储体选择位812。表格800还可以包括对应于高速缓冲存储器的一个或多个物理地址的行814-830,其中这些物理地址可以被用于使用存储体扩展的针对压缩数据的高速缓冲存储器访问请求。
在一个方面中,物理地址802可以包括一个或多个最低有效位中的0值。这些0值可以表示被数据压缩清除的物理地址的部分。物理地址位804可以表示物理地址802的被清除部分的最高有效位和物理地址802的保留部分的最低有效位。物理地址存储体选择位806可以表示物理地址802对应的存储体选择位(在该例子中,两个比特),其中可以对最低有效位进行清除,并且对最高有效位进行保留。如上所述,显而易见的是,对于行816、820、824和828中的一半的物理地址802而言,物理地址存储体选择位806可以均=00。类似地,对于行818、822、823和830中的另一半的物理地址802而言,物理地址存储体选择位806可以均=10。因此,可以使用仅一半的存储体选择位组合,将对高速缓冲存储体的使用限制为一半。
在一个方面中,高速缓冲存储体扩展地址808、高速缓冲存储体扩展地址位810和高速缓冲存储体扩展地址存储体选择位812可以表示与相同行814-830的物理地址802相关联的数据,其中该数据源自于实现高速缓冲存储体扩展。在一个方面中,可以使用具有物理地址位804中示出的保留位的两个最低有效位的异或运算符,来实现高速缓冲存储体扩展。可以使用高速缓冲存储体扩展来恢复最低有效位/被清除的物理地址存储体选择位806。例如,在行816中,物理地址存储体选择位806=10。物理地址位804中示出的保留位的两个最低有效位=01。在该例子中,实现高速缓冲存储体扩展可以包括:0XOR 1=1。高速缓冲存储体扩展的结果可以是利用值1来恢复被清除的物理地址存储体选择位806以产生高速缓冲存储体扩展地址存储体选择位812=11。这可以被反映在高速缓冲存储体扩展地址位810中,在高速缓冲存储体扩展地址位810中,物理地址802的保留部分的最低有效位保持相同,并且对物理地址802的被清除部分的最高有效位进行更新。例如,在物理地址位804中,物理地址802的被清除部分的最高有效位=0000。实现高速缓冲存储体扩展,可以导致对物理地址位804进行更新以产生高速缓冲存储体扩展地址位810,在高速缓冲存储体扩展地址位810中,物理地址802的被清除部分的最高有效位=1000。可以类似地更新物理地址802=0xABCD100以产生相应的存储体扩展地址808=0xABCD180。
表格800示出了:实现高速缓冲存储体扩展可以增加用于针对压缩数据的高速缓冲存储器访问请求的高速缓冲存储体的数量,这是由于存在比物理地址存储体选择位806(00和10)更多的存储体扩展地址存储体选择位812组合(00、01、10和11)。表格800还示出了:并非高速缓冲存储体扩展的每一种实现方式都导致存储体扩展地址存储体选择位812与物理地址存储体选择位806不同(如在行814中的例子中)。
图9示出了用于针对压缩数据的高速缓冲存储器访问请求,实现高速缓冲存储体扩展的一个方面的方法900。可以在使用软件、通用或专用硬件(例如,处理器、存储体扩展函数组件或高速缓冲存储器控制器)或者软件和硬件的组合的计算设备中执行方法900。在框902中,计算设备可以接收写或读高速缓冲存储器访问请求。写高速缓冲存储器访问请求可以包括压缩的写数据、用于存储该压缩的写数据的物理地址、该写数据被压缩的指示和/或用于该压缩的写数据的压缩比的指示、和/或被压缩的写数据的大小的指示。读高速缓冲存储器访问请求可以包括:用于取回压缩的读数据的物理地址、该读数据被压缩的指示和/或用于该压缩的读数据的压缩比的指示、和/或被压缩的读数据的大小的指示。
在确定框904中,计算设备可以确定高速缓冲存储器访问请求是否是针对于压缩数据的。可以使用该高速缓冲存储器访问请求的数据被压缩的指示和/或用于所请求的数据的压缩比的指示,来确定该高速缓冲存储器访问请求是否是针对于压缩数据的。在一个方面中,这些指示可以仅仅被用于写高速缓冲存储器访问请求。确定读高速缓冲存储器访问请求是否是针对于压缩数据的可以涉及:将用于取回读数据的物理地址与用于指示(当该数据作为先前的写高速缓冲存储器访问请求的一部分被存储到高速缓冲存储器中时)该数据是否被压缩的记录进行比较。响应于确定该高速缓冲存储器访问请求不是针对于压缩数据的(即,确定框904=“否”),在框916中,计算设备可以在不使用存储体扩展的情况下,执行该高速缓冲存储器访问请求。
响应于确定该高速缓冲存储器访问请求是针对于压缩数据的(即,确定框904=“是”),在确定框906中,计算设备可以确定该高速缓冲存储器访问请求是针对于写入压缩数据,还是读取压缩数据。每个高速缓冲存储器访问请求可以包括:用于写入高速缓冲存储器或从高速缓冲存储器读取的指令。
响应于确定该高速缓冲存储器访问请求是针对于写入压缩数据的(即,确定框906=“写”),在确定框908中,计算设备可以确定是否实现高速缓冲存储体扩展,以写入该压缩数据。如上面所讨论的,不是针对所有压缩数据都可以实现高速缓冲存储体扩展。实现高速缓冲存储体扩展可以是以在压缩数据具有指定的大小(即,能够适合于单个高速缓冲存储器存储体)和/或具有指定的压缩比(即,大于或等于2:1)时为条件。在一个方面中,计算设备可以将该高速缓冲存储器访问请求的压缩数据的大小与高速缓冲存储器存储体的大小进行比较。当该压缩数据的大小小于或等于高速缓冲存储器存储体的大小时,计算设备可以确定使用高速缓冲存储体扩展来实现该计算设备请求。类似地,当针对于不大于标准大小的数据来发出高速缓冲存储器访问请求时,该标准大小可以是与高速缓存线相同的大小。计算设备可以知道高速缓存线大小,以及在一个方面中,知道用于每个高速缓存线的高速缓冲存储器存储体的数量。常规的高速缓冲存储器访问请求可以是针对于不大于高速缓存线大小的数据,并且使用用于该高速缓存线的所有的高速缓冲存储器存储体。因此,知道该高速缓冲存储器访问请求针对的压缩数据的压缩比,计算设备可以确定该压缩数据可以使用这些高速缓冲存储器存储体中的多少高速缓冲存储器存储体。在一个方面中,当该压缩比是使得压缩数据使用一半或者少于一半的高速缓冲存储器存储体时,计算设备可以确定可以使用高速缓冲存储体扩展来实现该高速缓冲存储器访问请求。
响应于确定可以使用高速缓冲存储体扩展来实现该写高速缓冲存储器访问请求(即,确定框908=“是”),根据如本文描述的各个方面,在框910中,计算设备可以使用高速缓冲存储体扩展来执行针对压缩数据的该写高速缓冲存储器访问请求。响应于确定不使用高速缓冲存储体扩展来实现该写高速缓冲存储器访问请求(即,确定框908=“否”),在框916中,计算设备可以在不使用存储体扩展的情况下,执行该高速缓冲存储器访问请求。
响应于确定该高速缓冲存储器访问请求是针对于读取压缩数据的(即,确定框906=“读”),在确定框912中,计算设备可以确定是否实现高速缓冲存储体扩展,以读取该压缩数据。可以以类似于上面参照确定框908描述的写入压缩数据的方式,来实现确定是否实现高速缓冲存储体扩展以读取该压缩数据。响应于确定可以使用高速缓冲存储体扩展来实现该读高速缓冲存储器访问请求(即,确定框908=“是”),计算设备可以使用高速缓冲存储体扩展,来执行针对压缩数据的该读高速缓冲存储器访问请求,如本文进一步描述的。响应于确定不使用高速缓冲存储体扩展来实现该读高速缓冲存储器访问请求(即,确定框908=“否”),在框916中,计算设备可以在不使用存储体扩展的情况下,执行该高速缓冲存储器访问请求。
在一个方面中,可能不需要区分写高速缓冲存储器访问请求和读高速缓冲存储器访问请求。在任一情况下,可能是利用高速缓冲存储体扩展来执行高速缓冲存储器访问请求,可以以如下面描述的相同的方式来完成。
图10示出了用于针对压缩数据的写高速缓冲存储器访问请求,实现高速缓冲存储体扩展的一个方面的方法1000。方法1000可以在使用软件、通用或专用硬件(例如,处理器、存储体扩展函数组件或高速缓冲存储器控制器)或者软件和硬件的组合的计算设备中执行。在框1002中,计算设备可以选择用于高速缓冲存储体扩展函数的输入。如上所述,该高速缓冲存储体扩展函数可以是任意数量的已知数学和运算函数中的一个或者其组合。在一个方面中,该高速缓冲存储体扩展函数可以是高速缓冲存储器访问请求的物理地址的两个保留位的逻辑异或(XOR)运算。可以根据预先确定的规则来选择用于高速缓冲存储体扩展函数的输入,例如,选择该高速缓冲存储器访问请求的物理地址的第一保留位和第二保留位。在一个方面中,可以根据自适应算法、基于各种各样的因素中的一种或多种(例如,高速缓冲存储器架构、高速缓冲存储器大小(其包括高速缓存线大小)和/或每一高速缓存线的高速缓冲存储体的数量)来选择用于高速缓冲存储体扩展函数的输入。
在框1004中,计算设备可以向所选定的输入应用高速缓冲存储体扩展函数。在框1006中,该高速缓冲存储体扩展函数可以返回高速缓冲存储体扩展值。该高速缓冲存储体扩展值可以是可以被用于恢复如上所述的一个或多个被清除的存储体选择位的任何值。例如,当恢复两个存储体选择位时,该高速缓冲存储体扩展值可以包括:用于替换被清除的存储体选择位的两个比特值(例如,00、01、10和11)。这些值并不限于该例子中示出的二进制表示,并且可以使用用于这样的值的替代的表示来实现。
在框1008中,计算设备可以通过使用该高速缓冲存储体扩展值来恢复被清除的存储体选择位,对针对压缩数据的高速缓冲存储器访问请求的物理地址的被清除部分进行更新。
在可选框1010中,计算设备可以存储该高速缓冲存储体扩展地址或者更新的物理地址。该高速缓冲存储体扩展地址可以被临时存储,以便后续在即时高速缓冲存储器访问请求中使用。在一个方面中,可以将该高速缓冲存储体扩展地址连同与根据其计算出该高速缓冲存储体扩展地址的物理地址的相关性一起存储,用于稍后的高速缓冲存储器访问请求,使得不必须重新计算该高速缓冲存储体扩展地址。
在框1012中,计算设备可以使用该高速缓冲存储体扩展地址,将压缩数据写入到高速缓冲存储器中。在一个方面中,方法1000还可以被实现用于读存储器访问请求,并且在框1012中,计算设备可以使用该高速缓冲存储体扩展地址,替代地从高速缓冲存储器中读取压缩数据。
图11示出了用于针对压缩数据的读高速缓冲存储器访问请求,实现高速缓冲存储体扩展的一个方面的方法1100。方法1100可以在使用软件、通用或专用硬件(例如,处理器、存储体扩展函数组件或高速缓冲存储器控制器)或者软件和硬件的组合的计算设备中执行。在框1102中,计算设备可以针对压缩数据的读高速缓冲存储器访问请求,确定高速缓冲存储体扩展地址。在一个方面中,计算设备可以将针对压缩数据的读高速缓冲存储器访问请求的物理地址,与存储的数据结构进行比较,其中该存储的数据结构用于使物理地址与已经确定的存储体扩展地址相关联。如上所述,各种情形可能导致在针对压缩数据的读高速缓冲存储器访问请求(例如,针对压缩数据的写高速缓冲存储器访问请求)之前,确定高速缓冲存储体扩展地址。在一个方面中,甚至可以在针对压缩数据的写高速缓冲存储器访问请求之前,确定存储体扩展地址,例如,以便预先计算被指定用于存储压缩数据的一组物理地址所对应的高速缓冲存储体扩展地址。在一个方面中,如上所述,可以响应于针对压缩数据的读高速缓冲存储器访问请求,确定高速缓冲存储体扩展地址。
在框1104处,计算设备可以取回在所确定的高速缓冲存储体扩展地址处存储的压缩的读数据。在框1106中,计算设备可以向请求该压缩的读数据的客户端(例如,处理器或者SoC的子系统中的一个)返回该压缩的读数据。
可以在各种各样的计算设备上实现各个方面(其包括但不限于上面关于图1-3B和图8-11讨论的方面),在图12-14中示出了其一些例子。
图12示出了适合于与各个方面一起使用的示例性移动计算设备。移动计算设备1200可以包括被耦合到触摸屏控制器1204和内部存储器1206的处理器1202。处理器1202可以是被指定用于通用或专用处理任务的一个或多个多核集成电路。内部存储器1206可以是易失性存储器或非易失性存储器,并且还可以是安全和/或加密的存储器,或者非安全和/或未加密的存储器、或者其任意组合。可以被利用的存储器类型的例子包括但不限于:DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM和嵌入式DRAM。触摸屏控制器1204和处理器1202还可以被耦合到触摸屏面板1212,例如,电阻式感应触摸屏、电容式感应触摸屏、红外线感应触摸屏等等。另外,计算设备1200的显示器不需要具有触摸屏能力。
移动计算设备1200可以具有用于发送和接收通信的、被耦合至彼此和/或被耦合至处理器1202的一个或多个无线信号收发机1208(例如,Peanut、蓝牙、Zigbee、Wi-Fi、RF无线单元)和天线1210。收发机1208和天线1210可以与上面提及的电路一起使用来实现各种无线传输协议栈和接口。移动计算设备1200可以包括蜂窝网络无线调制解调器芯片1216,其经由蜂窝网络来实现通信并且被耦合到处理器。
移动计算设备1200可以包括被耦合到处理器1202的外围设备连接接口1218。外围设备连接接口1218可以被单独地配置为接受一种类型的连接,或者可以被配置为接受各种类型的物理和通信连接、公共的或专有的连接(例如,USB、火线、Thunderbolt或PCIe)。外围设备连接接口1218还可以被耦合到类似配置的外围设备连接端口(未示出)。
移动计算设备1200还可以包括用于提供音频输出的扬声器1214。移动计算设备1200还可以包括用塑料、金属、或材料的组合构成的壳体1220,以容纳本文讨论的组件中的全部或者一些组件。移动计算设备1200可以包括被耦合到处理器1202的电源1222,例如一次性或可充电电池。该可充电电池还可以被耦合到外围设备连接端口,以便从移动计算设备1200外部的源接收充电电流。移动计算设备1200还可以包括用于接收用户输入的物理按键1224。移动计算设备1200还可以包括用于打开和关闭移动计算设备1200的电源按键1226。
上面描述的各个方面还可以被实现在各种各样的移动计算设备内,例如,如图13中示出的膝上型计算机1300。很多膝上型计算机包括触摸板触摸表面1317,其充当计算机的指向设备,并且因此可以接收拖动、滚动和轻打手势(其类似于在上面描述的装备有触摸屏显示器的计算设备上实现的那些手势)。膝上型计算机1300通常将包括被耦合到易失性存储器1312和大容量非易失性存储器(例如,闪存的硬盘驱动器1313)的处理器1311。另外,计算机1300可以具有用于发送和接收电磁辐射的一个或多个天线1308,所述一个或多个天线1308可以被连接到无线数据链路和/或被耦合到处理器1311的蜂窝电话收发机1316。计算机1300还可以包括被耦合到处理器1311的软盘驱动器1314和压缩光盘(CD)驱动器1315。在笔记本配置中,计算机壳体包括均被耦合到处理器1311的触摸板1317、键盘1318和显示器1319。该计算设备的其它配置可以包括(例如,经由USB输入)被耦合到处理器的计算机鼠标或者跟踪球,如公知的,它们还可以结合各个方面来使用。
各个方面还可以被实现在用于将数据压缩在服务器高速缓存中的各种各样的商业上可得的服务器中的任何一种中。在图14中示出了示例性服务器1400。这样的服务器1400通常包括被耦合到易失性存储器1402和大容量非易失性存储器(例如,磁盘驱动器1404)的一个或多个多核处理器组件1401。如图14中示出的,可以通过将多核处理器组件1401插入到组装的架中来将多核处理器组件添加到服务器1400中。服务器1400还可以包括被耦合到处理器1401的软盘驱动器、压缩光盘(CD)或DVD光盘驱动器1406。服务器1400还可以包括被耦合到多核处理器组件1401的网络接入端口1403,以便与网络1405(例如,被耦合到其它广播系统计算机和服务器的局域网、互联网、公众交换电话网、和/或蜂窝数据网络(例如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或者任何其它类型的蜂窝数据网络))建立网络接口连接。
用于在可编程处理器上完成、用于执行各个方面的操作的计算机程序代码或“程序代码”,可以用诸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,Transact-SQL)、Perl之类的高级编程语言来编写,或者用各种其它编程语言来编写。如在本申请中使用的计算机可读存储介质上存储的程序代码或程序,可以指代其格式是处理器可理解的机器语言代码(例如,目标代码)。
将很多计算设备操作系统内核组织成用户空间(在此非特权代码运行)和内核空间(在此特权代码运行)。这种分隔在安卓和其它通用公共许可证(GPL)环境中具有特别的重要性,在这些环境中,作为内核空间的一部分的代码必须是GPL许可的,而在用户空间中运行的代码可以不是GPL许可的。应当理解的是,除非另外明确指出,这里讨论的各种软件组件/模块可以被实现在内核空间中或用户空间中。
上述的方法描述和过程流程图仅仅作为说明性的例子来提供,并不旨在要求或者隐含必须以呈现的顺序来执行各个方面的步骤。如将由本领域技术人员意识到的,可以以任何顺序来执行上述的方面中的操作的顺序。诸如“其后”、“然后”、“接着”等等之类的词语不旨在限制这些操作的顺序;这些词语仅仅被用于引导读者遍历该方法的描述。此外,以单数形式对权利要求要素的任何提及(例如,使用冠词“一个(a)”、“一(an)”或者“所述(the)”),不应当被解释为将该要素限制为单数形式。
结合各个方面描述的各种说明性的逻辑框、模块、电路和算法操作可以被实现成电子硬件、计算机软件或二者的组合。为了清楚地说明硬件和软件的这种可互换性,上面对各种说明性的组件、框、模块、电路和操作已经围绕其功能进行了总体描述。至于这样的功能是被实现成硬件还是软件,取决于特定的应用和对整个系统施加的设计约束。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是这样的实现决策不应当被解释为导致背离本发明的范围。
可以利用被设计为执行本文描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意组合,来实现或执行结合本文公开的方面描述的用于实现各种说明性的逻辑、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,但是在替代方案中,该处理器可以是任何常规的处理器、控制器、微控制器或者状态机。处理器还可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、结合DSP内核的一个或多个微处理器,或者任何其它这样的配置。替代地,一些操作或方法可以由特定于给定功能的电路来执行。
在一个或多个方面中,描述的功能可以用硬件、软件、固件或其任意组合来实现。如果用软件来实现,则可以将这些功能存储成非暂时性计算机可读介质或者非暂时性处理器可读介质上的一个或多个指令或代码。本文公开的方法或算法的操作可以被体现在处理器可执行软件模块中,其可以存在于非暂时性计算机可读存储介质或处理器可读存储介质上。非暂时性计算机可读或处理器可读存储介质可以是可以由计算机或处理器存取的任何存储介质。通过例子而非限制的方式,这样的非暂时性计算机可读介质或者处理器可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或者可以被用于存储具有指令或数据结构形式的期望的程序代码并可以由计算机存取的任何其它介质。如本文使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上述的组合也被包括在非暂时性计算机可读介质和处理器可读介质的范围之内。另外,方法或算法的操作可以作为一个代码和/或指令集或者其任意组合,存在于非暂时性处理器可读介质和/或计算机可读介质上,该非暂时性处理器可读介质和/或计算机可读介质可以被并入到计算机程序产品中。
提供所公开的方面的在前描述,以使得本领域任何技术人员能够实现或者使用本发明。对于本领域技术人员来说,对这些方面的各种修改将是显而易见的,并且本文定义的一般性原理可以在不背离本发明的精神或范围的情况下被应用于其它方面。因此,本发明不旨在被限制到本文示出的方面,而是要被授予与所附权利要求书和本文公开的原理和新颖性特征相一致的最宽的范围。
Claims (30)
1.一种用于在计算设备上针对压缩数据,执行高速缓冲存储器访问请求的方法,包括:
恢复高速缓冲存储器访问请求的物理地址的一个或多个被清除的存储体选择位以产生高速缓冲存储体扩展地址;以及
在所述高速缓冲存储体扩展地址处执行所述高速缓冲存储器访问请求。
2.根据权利要求1所述的方法,还包括:确定压缩数据是否适合于高速缓冲存储器设备的单个高速缓冲存储体的高速缓存线,
其中,恢复高速缓冲存储器访问请求的物理地址的一个或多个被清除的存储体选择位以产生高速缓冲存储体扩展地址包括:响应于确定所述压缩数据适合于所述高速缓冲存储器设备的单个高速缓冲存储体,恢复所述高速缓冲存储器访问请求的所述物理地址的所述一个或多个被清除的存储体选择位以产生所述高速缓冲存储体扩展地址。
3.根据权利要求2所述的方法,其中,确定所述高速缓冲存储器访问请求的所述压缩数据是否适合于所述高速缓冲存储器设备的单个高速缓冲存储体包括:确定所述压缩数据的压缩比是否大于或等于2:1的压缩比。
4.根据权利要求2所述的方法,其中,确定所述高速缓冲存储器访问请求的所述压缩数据是否适合于所述高速缓冲存储器设备的单个高速缓冲存储体包括:确定所述压缩数据的大小是否小于或等于所述高速缓冲存储器设备的高速缓存线的大小。
5.根据权利要求2所述的方法,其中,响应于确定所述压缩数据适合于所述高速缓冲存储器设备的高速缓冲存储体,恢复所述高速缓冲存储器访问请求的所述物理地址的一个或多个被清除的存储体选择位以产生所述高速缓冲存储体扩展地址包括:
选择用于高速缓冲存储体扩展函数的输入;
执行所述高速缓冲存储体扩展函数;
返回高速缓冲存储体扩展值;以及
利用所述高速缓冲存储体扩展值来替换所述一个或多个被清除的存储体选择位。
6.根据权利要求5所述的方法,其中:
选择用于所述高速缓冲存储体扩展函数的输入包括:选择所述高速缓冲存储器访问请求的所述高速缓冲存储器设备的所述物理地址的保留位的多个最低有效位,作为用于高速缓冲存储体扩展函数的操作数;以及
执行所述高速缓冲存储体扩展函数包括:使用具有所述操作数的异或运算符。
7.根据权利要求5所述的方法,其中,执行所述高速缓冲存储体扩展函数包括:使用逻辑运算、算术运算中的一个,选择随机值,从表格中选择与所述高速缓冲存储器访问请求的所述物理地址相关联的所述高速缓冲存储体扩展地址。
8.根据权利要求1所述的方法,其中,在所述高速缓冲存储体扩展地址处执行所述高速缓冲存储器访问请求包括:
将压缩数据写入到由所述高速缓冲存储体扩展地址的所述一个或多个恢复的被清除的存储体选择位指示的第一高速缓冲存储体,其中,所述第一高速缓冲存储体与由所述高速缓冲存储器访问请求的高速缓冲存储器设备的所述物理地址的所述一个或多个被清除的存储体选择位指示的第二高速缓冲存储体不同;以及
从由所述高速缓冲存储体扩展地址的所述一个或多个恢复的被清除的存储体选择位指示的所述第一高速缓冲存储体读取所述压缩数据,其中,所述第一高速缓冲存储体与由所述高速缓冲存储器访问请求的所述高速缓冲存储器设备的所述物理地址的所述一个或多个被清除的存储体选择位指示的所述第二高速缓冲存储体不同。
9.根据权利要求1所述的方法,其中,在所述高速缓冲存储体扩展地址处执行所述高速缓冲存储器访问请求包括:在由所述高速缓冲存储体扩展地址指示的高速缓冲存储器设备的物理地址处执行针对所述压缩数据的所述高速缓冲存储器访问请求。
10.一种计算设备,包括:
处理器;
存储体扩展函数组件,其被通信地连接到所述处理器并且被配置为执行包括以下的操作:恢复高速缓冲存储器访问请求的物理地址的一个或多个被清除的存储体选择位以产生高速缓冲存储体扩展地址;
高速缓冲存储器控制器,其被通信地连接到所述存储体扩展函数组件并且被配置为执行包括以下的操作:在所述高速缓冲存储体扩展地址处执行所述高速缓冲存储器访问请求;以及
高速缓冲存储器,其被通信地连接到所述高速缓冲存储器控制器。
11.根据权利要求10所述的计算设备,其中:
所述存储体扩展函数组件被配置为执行还包括以下的操作:确定压缩数据是否适合于高速缓冲存储器的单个高速缓冲存储体的高速缓存线;以及
所述存储体扩展函数组件被配置为执行操作,使得恢复高速缓冲存储器访问请求的物理地址的一个或多个被清除的存储体选择位以产生高速缓冲存储体扩展地址包括:响应于确定所述压缩数据适合于所述高速缓冲存储器的单个高速缓冲存储体,恢复所述高速缓冲存储器访问请求的所述物理地址的所述一个或多个被清除的存储体选择位以产生所述高速缓冲存储体扩展地址。
12.根据权利要求11所述的计算设备,其中,所述存储体扩展函数组件被配置为执行操作,使得确定所述高速缓冲存储器访问请求的所述压缩数据是否适合于所述高速缓冲存储器的单个高速缓冲存储体包括:确定所述压缩数据的压缩比是否大于或等于2:1的压缩比。
13.根据权利要求11所述的计算设备,其中,所述存储体扩展函数组件被配置为执行操作,使得确定所述高速缓冲存储器访问请求的所述压缩数据是否适合于所述高速缓冲存储器的单个高速缓冲存储体包括:确定所述压缩数据的大小是否小于或等于所述高速缓冲存储器的高速缓存线的大小。
14.根据权利要求11所述的计算设备,其中,所述存储体扩展函数组件被配置为执行操作,使得响应于确定所述压缩数据适合于所述高速缓冲存储器的高速缓冲存储体,恢复所述高速缓冲存储器访问请求的所述物理地址的一个或多个被清除的存储体选择位以产生所述高速缓冲存储体扩展地址包括:
选择用于高速缓冲存储体扩展函数的输入;
执行所述高速缓冲存储体扩展函数;
返回高速缓冲存储体扩展值;以及
利用所述高速缓冲存储体扩展值来替换所述一个或多个被清除的存储体选择位。
15.根据权利要求14所述的计算设备,其中,所述存储体扩展函数组件被配置为执行操作,使得:
执行高速缓冲存储体扩展函数包括:使用具有操作数的异或运算符、逻辑运算、算术运算中的一个,选择随机值,从表格中选择与所述高速缓冲存储器访问请求的所述物理地址相关联的所述高速缓冲存储体扩展地址;以及
选择用于所述高速缓冲存储体扩展函数的输入包括:使用具有所述操作数的异或运算符来选择所述高速缓冲存储器访问请求的所述高速缓冲存储器的所述物理地址的保留位的多个最低有效位,作为用于所述高速缓冲存储体扩展函数的所述操作数。
16.根据权利要求10所述的计算设备,其中,所述高速缓冲存储器控制器被配置为执行操作,使得在所述高速缓冲存储器中的所述高速缓冲存储体扩展地址处执行所述高速缓冲存储器访问请求包括:
将压缩数据写入到由所述高速缓冲存储体扩展地址的所述一个或多个恢复的被清除的存储体选择位指示的第一高速缓冲存储体,其中,所述第一高速缓冲存储体与由所述高速缓冲存储器访问请求的所述高速缓冲存储器的所述物理地址的所述一个或多个被清除的存储体选择位指示的第二高速缓冲存储体不同;以及
从由所述高速缓冲存储体扩展地址的所述一个或多个恢复的被清除的存储体选择位指示的所述第一高速缓冲存储体读取所述压缩数据,其中,所述第一高速缓冲存储体与由所述高速缓冲存储器访问请求的所述高速缓冲存储器的所述物理地址的所述一个或多个被清除的存储体选择位指示的所述第二高速缓冲存储体不同。
17.一种非暂时性处理器可读介质,其具有被存储在其上的处理器可执行指令,所述处理器可执行指令被配置为使处理器、存储体扩展函数组件和高速缓冲存储器控制器执行包括以下各项的操作:
恢复高速缓冲存储器访问请求的物理地址的一个或多个被清除的存储体选择位以产生高速缓冲存储体扩展地址;以及
在所述高速缓冲存储体扩展地址处执行所述高速缓冲存储器访问请求。
18.根据权利要求17所述的非暂时性处理器可读介质,其中:
所存储的处理器可执行指令被配置为使处理器、存储体扩展函数组件和高速缓冲存储器控制器执行还包括以下的操作:确定压缩数据是否适合于高速缓冲存储器设备的单个高速缓冲存储体的高速缓存线,以及
所存储的处理器可执行指令被配置为使处理器、存储体扩展函数组件和高速缓冲存储器控制器执行操作,使得恢复高速缓冲存储器访问请求的物理地址的一个或多个被清除的存储体选择位以产生高速缓冲存储体扩展地址包括:响应于确定所述压缩数据适合于所述高速缓冲存储器设备的单个高速缓冲存储体,恢复所述高速缓冲存储器访问请求的所述物理地址的所述一个或多个被清除的存储体选择位以产生所述高速缓冲存储体扩展地址。
19.根据权利要求18所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使处理器、存储体扩展函数组件和高速缓冲存储器控制器执行操作,使得确定所述高速缓冲存储器访问请求的所述压缩数据是否适合于所述高速缓冲存储器设备的单个高速缓冲存储体包括:确定所述压缩数据的压缩比是否大于或等于2:1的压缩比。
20.根据权利要求18所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使处理器、存储体扩展函数组件和高速缓冲存储器控制器执行操作,使得确定所述高速缓冲存储器访问请求的所述压缩数据是否适合于所述高速缓冲存储器设备的单个高速缓冲存储体包括:确定所述压缩数据的大小是否小于或等于所述高速缓冲存储器设备的高速缓存线的大小。
21.根据权利要求18所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使处理器、存储体扩展函数组件和高速缓冲存储器控制器执行操作,使得响应于确定所述压缩数据适合于所述高速缓冲存储器设备的高速缓冲存储体,恢复所述高速缓冲存储器访问请求的所述物理地址的一个或多个被清除的存储体选择位以产生所述高速缓冲存储体扩展地址包括:
选择用于高速缓冲存储体扩展函数的输入;
执行所述高速缓冲存储体扩展函数;
返回高速缓冲存储体扩展值;以及
利用所述高速缓冲存储体扩展值来替换所述一个或多个被清除的存储体选择位。
22.根据权利要求21所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使处理器、存储体扩展函数组件和高速缓冲存储器控制器执行操作,使得:
执行高速缓冲存储体扩展函数包括:使用具有操作数的异或运算符、逻辑运算、算术运算中的一个,选择随机值,从表格中选择与所述高速缓冲存储器访问请求的所述物理地址相关联的所述高速缓冲存储体扩展地址;以及
选择用于所述高速缓冲存储体扩展函数的输入包括:使用具有所述操作数的异或运算符来选择所述高速缓冲存储器访问请求的所述高速缓冲存储器设备的所述物理地址的保留位的多个最低有效位,作为用于所述高速缓冲存储体扩展函数的所述操作数。
23.根据权利要求17所述的非暂时性处理器可读介质,其中,所存储的处理器可执行指令被配置为使处理器、存储体扩展函数组件和高速缓冲存储器控制器执行操作,使得在所述高速缓冲存储体扩展地址处执行所述高速缓冲存储器访问请求包括:
将压缩数据写入到由所述高速缓冲存储体扩展地址的所述一个或多个恢复的被清除的存储体选择位指示的第一高速缓冲存储体,其中,所述第一高速缓冲存储体与由所述高速缓冲存储器访问请求的高速缓冲存储器设备的所述物理地址的所述一个或多个被清除的存储体选择位指示的第二高速缓冲存储体不同;以及
从由所述高速缓冲存储体扩展地址的所述一个或多个恢复的被清除的存储体选择位指示的所述第一高速缓冲存储体读取所述压缩数据,其中,所述第一高速缓冲存储体与由所述高速缓冲存储器访问请求的所述高速缓冲存储器设备的所述物理地址的所述一个或多个被清除的存储体选择位指示的所述第二高速缓冲存储体不同。
24.一种计算设备,包括:
用于恢复高速缓冲存储器访问请求的物理地址的一个或多个被清除的存储体选择位以产生高速缓冲存储体扩展地址的单元;以及
用于在所述高速缓冲存储体扩展地址处执行所述高速缓冲存储器访问请求的单元。
25.根据权利要求24所述的计算设备,还包括:用于确定压缩数据是否适合于高速缓冲存储器设备的单个高速缓冲存储体的高速缓存线的单元,
其中,用于恢复高速缓冲存储器访问请求的物理地址的一个或多个被清除的存储体选择位以产生高速缓冲存储体扩展地址的单元包括:用于响应于确定所述压缩数据适合于所述高速缓冲存储器设备的单个高速缓冲存储体,恢复所述高速缓冲存储器访问请求的所述物理地址的所述一个或多个被清除的存储体选择位以产生所述高速缓冲存储体扩展地址的单元。
26.根据权利要求25所述的计算设备,其中,用于确定所述高速缓冲存储器访问请求的所述压缩数据是否适合于所述高速缓冲存储器设备的单个高速缓冲存储体的单元包括:用于确定所述压缩数据的压缩比是否大于或等于2:1的压缩比的单元。
27.根据权利要求25所述的计算设备,其中,用于确定所述高速缓冲存储器访问请求的所述压缩数据是否适合于所述高速缓冲存储器设备的单个高速缓冲存储体的单元包括:用于确定所述压缩数据的大小是否小于或等于所述高速缓冲存储器设备的高速缓存线的大小的单元。
28.根据权利要求25所述的计算设备,其中,用于响应于确定所述压缩数据适合于所述高速缓冲存储器设备的高速缓冲存储体,恢复所述高速缓冲存储器访问请求的所述物理地址的一个或多个被清除的存储体选择位以产生所述高速缓冲存储体扩展地址的单元包括:
用于选择用于高速缓冲存储体扩展函数的输入的单元;
用于执行所述高速缓冲存储体扩展函数的单元;
用于返回高速缓冲存储体扩展值的单元;以及
用于利用所述高速缓冲存储体扩展值来替换所述一个或多个被清除的存储体选择位的单元。
29.根据权利要求28所述的计算设备,其中:
用于执行高速缓冲存储体扩展函数的单元包括:用于使用具有操作数的异或运算符、逻辑运算、算术运算中的一个,选择随机值,从表格中选择与所述高速缓冲存储器访问请求的所述物理地址相关联的所述高速缓冲存储体扩展地址的单元;以及
用于选择用于所述高速缓冲存储体扩展函数的输入的单元包括:用于使用具有所述操作数的异或运算符来选择所述高速缓冲存储器访问请求的所述高速缓冲存储器设备的所述物理地址的保留位的多个最低有效位,作为用于所述高速缓冲存储体扩展函数的所述操作数的单元。
30.根据权利要求24所述的计算设备,其中,用于在所述高速缓冲存储体扩展地址处执行所述高速缓冲存储器访问请求的单元包括:
用于将压缩数据写入到由所述高速缓冲存储体扩展地址的所述一个或多个恢复的被清除的存储体选择位指示的第一高速缓冲存储体的单元,其中,所述第一高速缓冲存储体与由所述高速缓冲存储器访问请求的高速缓冲存储器设备的所述物理地址的所述一个或多个被清除的存储体选择位指示的第二高速缓冲存储体不同;以及
用于从由所述高速缓冲存储体扩展地址的所述一个或多个恢复的被清除的存储体选择位指示的所述第一高速缓冲存储体读取所述压缩数据的单元,其中,所述第一高速缓冲存储体与由所述高速缓冲存储器访问请求的所述高速缓冲存储器设备的所述物理地址的所述一个或多个被清除的存储体选择位指示的所述第二高速缓冲存储体不同。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/483,902 US9355038B2 (en) | 2014-09-11 | 2014-09-11 | Cache bank spreading for compression algorithms |
US14/483,902 | 2014-09-11 | ||
PCT/US2015/041781 WO2016039866A1 (en) | 2014-09-11 | 2015-07-23 | Cache bank spreading for compression algorithms |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106687937A CN106687937A (zh) | 2017-05-17 |
CN106687937B true CN106687937B (zh) | 2020-06-23 |
Family
ID=53783380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580048563.0A Active CN106687937B (zh) | 2014-09-11 | 2015-07-23 | 用于压缩算法的高速缓冲存储体扩展 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9355038B2 (zh) |
EP (1) | EP3191967B1 (zh) |
JP (1) | JP2017532657A (zh) |
KR (1) | KR20170053630A (zh) |
CN (1) | CN106687937B (zh) |
WO (1) | WO2016039866A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9514047B2 (en) * | 2014-12-17 | 2016-12-06 | Intel Corporation | Apparatus and method to dynamically expand associativity of a cache memory |
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 |
US10445261B2 (en) | 2016-12-30 | 2019-10-15 | Intel Corporation | System memory having point-to-point link that transports compressed traffic |
US10503652B2 (en) | 2017-04-01 | 2019-12-10 | Intel Corporation | Sector cache for compression |
US10609172B1 (en) | 2017-04-27 | 2020-03-31 | Chicago Mercantile Exchange Inc. | Adaptive compression of stored data |
US12105716B2 (en) * | 2017-06-23 | 2024-10-01 | Xilinx, Inc. | Parallel compute offload to database accelerator |
US11048419B2 (en) * | 2019-01-30 | 2021-06-29 | EMC IP Holding Company LLC | Adaptively over-allocating storage space for compressed data |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1217505A (zh) * | 1997-11-06 | 1999-05-26 | 中国科学院计算技术研究所 | 高速缓冲存储器系统中的地址映射变换技术与装置 |
CN1952911A (zh) * | 2005-10-21 | 2007-04-25 | 英特尔公司 | 实现矢量存储器操作 |
US7266651B1 (en) * | 2004-09-07 | 2007-09-04 | Sun Microsystems, Inc. | Method for in-place memory interleaving and de-interleaving |
CN102129873A (zh) * | 2011-03-29 | 2011-07-20 | 西安交通大学 | 提高计算机末级高速缓存可靠性的数据压缩装置及其方法 |
US7996597B1 (en) * | 2007-04-16 | 2011-08-09 | Juniper Networks, Inc. | Mapping address bits to improve spread of banks |
CN103546158A (zh) * | 2012-04-04 | 2014-01-29 | 英特尔公司 | 压缩深度高速缓存 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5956744A (en) | 1995-09-08 | 1999-09-21 | Texas Instruments Incorporated | Memory configuration cache with multilevel hierarchy least recently used cache entry replacement |
US6115787A (en) * | 1996-11-05 | 2000-09-05 | Hitachi, Ltd. | Disc storage system having cache memory which stores compressed data |
JPH10232838A (ja) * | 1996-11-05 | 1998-09-02 | Hitachi Ltd | ディスク記憶システム |
AU2610701A (en) | 2000-01-03 | 2001-07-16 | Efeckta Technologies Corporation | Efficient and lossless conversion for transmission or storage of data |
US6307790B1 (en) * | 2000-08-30 | 2001-10-23 | Micron Technology, Inc. | Read compression in a memory |
US6820182B1 (en) * | 2000-10-18 | 2004-11-16 | International Business Machines Corporation | Support for exhaustion recovery in a data processing system with memory mirroring |
US8443162B2 (en) * | 2005-01-21 | 2013-05-14 | Qualcomm Incorporated | Methods and apparatus for dynamically managing banked memory |
US7705753B2 (en) | 2005-10-22 | 2010-04-27 | Sytex, Inc. | Methods, systems and computer-readable media for compressing data |
JP4653830B2 (ja) * | 2008-09-19 | 2011-03-16 | 株式会社東芝 | 命令キャッシュシステム |
US8700862B2 (en) * | 2008-12-03 | 2014-04-15 | Nvidia Corporation | Compression status bit cache and backing store |
US8627041B2 (en) | 2009-10-09 | 2014-01-07 | Nvidia Corporation | Efficient line and page organization for compression status bit caching |
US8918897B2 (en) | 2009-11-24 | 2014-12-23 | Cleversafe, Inc. | Dispersed storage network data slice integrity verification |
US8767501B2 (en) * | 2012-07-17 | 2014-07-01 | International Business Machines Corporation | Self-reconfigurable address decoder for associative index extended caches |
US9026747B2 (en) * | 2012-08-16 | 2015-05-05 | Broadcom Corporation | Memory device with a logical-to-physical bank mapping cache |
-
2014
- 2014-09-11 US US14/483,902 patent/US9355038B2/en not_active Expired - Fee Related
-
2015
- 2015-07-23 JP JP2017513216A patent/JP2017532657A/ja active Pending
- 2015-07-23 WO PCT/US2015/041781 patent/WO2016039866A1/en active Application Filing
- 2015-07-23 EP EP15747325.7A patent/EP3191967B1/en active Active
- 2015-07-23 KR KR1020177006694A patent/KR20170053630A/ko unknown
- 2015-07-23 CN CN201580048563.0A patent/CN106687937B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1217505A (zh) * | 1997-11-06 | 1999-05-26 | 中国科学院计算技术研究所 | 高速缓冲存储器系统中的地址映射变换技术与装置 |
US7266651B1 (en) * | 2004-09-07 | 2007-09-04 | Sun Microsystems, Inc. | Method for in-place memory interleaving and de-interleaving |
CN1952911A (zh) * | 2005-10-21 | 2007-04-25 | 英特尔公司 | 实现矢量存储器操作 |
US7996597B1 (en) * | 2007-04-16 | 2011-08-09 | Juniper Networks, Inc. | Mapping address bits to improve spread of banks |
CN102129873A (zh) * | 2011-03-29 | 2011-07-20 | 西安交通大学 | 提高计算机末级高速缓存可靠性的数据压缩装置及其方法 |
CN103546158A (zh) * | 2012-04-04 | 2014-01-29 | 英特尔公司 | 压缩深度高速缓存 |
Non-Patent Citations (2)
Title |
---|
differential base pattern coding for cache line data compression;Haruhiko Kanedo;《IEEE会议论文》;20131231;1 * |
分片式处理器上非均匀一致缓存的设计与优化;窦瑞玲;《中国科学技术大学硕士学位论文》;20090531;6-19 * |
Also Published As
Publication number | Publication date |
---|---|
EP3191967A1 (en) | 2017-07-19 |
JP2017532657A (ja) | 2017-11-02 |
CN106687937A (zh) | 2017-05-17 |
US9355038B2 (en) | 2016-05-31 |
EP3191967B1 (en) | 2018-12-26 |
US20160077973A1 (en) | 2016-03-17 |
KR20170053630A (ko) | 2017-05-16 |
WO2016039866A1 (en) | 2016-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106687937B (zh) | 用于压缩算法的高速缓冲存储体扩展 | |
CN106537360B (zh) | 用于具有动态分区的共享高速缓存的方法和装置 | |
US9946462B1 (en) | Address mapping table compression | |
US9612971B2 (en) | Supplemental write cache command for bandwidth compression | |
US20190073305A1 (en) | Reuse Aware Cache Line Insertion And Victim Selection In Large Cache Memory | |
US9858196B2 (en) | Power aware padding | |
US9652152B2 (en) | Efficient decompression locality system for demand paging | |
US20140337560A1 (en) | System and Method for High Performance and Low Cost Flash Translation Layer | |
US20200004687A1 (en) | Performance By Retaining High Locality Data In Higher Level Cache Memory | |
US20200125261A1 (en) | Memory system for adjusting map segment based on pattern and operating method thereof | |
US11405052B2 (en) | Compression of high dynamic ratio fields for machine learning | |
KR20200073592A (ko) | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
US9176896B2 (en) | Method of managing aligned and unaligned data bands in a self encrypting solid state drive | |
US10061644B2 (en) | Systems and methods for implementing error correcting code in a memory | |
KR20180092715A (ko) | 동작들의 횟수에 기초하여 복제된 데이터를 관리하는 스토리지 장치 | |
US11079955B2 (en) | Concept for approximate deduplication in storage and memory | |
US20180052776A1 (en) | Shared Virtual Index for Memory Object Fusion in Heterogeneous Cooperative Computing | |
US9600420B2 (en) | Reducing decompression time without impacting compression ratio | |
CN112654965A (zh) | 动态模块的外部分页和交换 | |
US11907138B2 (en) | Multimedia compressed frame aware cache replacement policy |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |