CN106575263A - 经压缩数据区段的高速缓存行压实 - Google Patents
经压缩数据区段的高速缓存行压实 Download PDFInfo
- Publication number
- CN106575263A CN106575263A CN201580041874.4A CN201580041874A CN106575263A CN 106575263 A CN106575263 A CN 106575263A CN 201580041874 A CN201580041874 A CN 201580041874A CN 106575263 A CN106575263 A CN 106575263A
- Authority
- CN
- China
- Prior art keywords
- data
- data segments
- computing device
- address
- identified
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0875—Addressing 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate 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
-
- 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/45—Caching of specific data in cache memory
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
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
背景技术
无损压缩技术可以将可配置大小的数据区段压缩为较小的大小。例如,无损压缩算法可以利用不同的压缩比(例如,4:1、4:2、4:3、4:4)将256字节的数据区段压缩成各种大小(例如,64字节、128字节、192字节、256字节)的经压缩数据区段。常规的技术可以对数据区段(或数据块)进行处理以将该数据区段减小为其原始大小的一小部分,从而有助于减小在存储器单元之间的数据读/写期间所消耗的带宽和资源量。
此类经压缩数据可以存储在高速缓存(例如,L3高速缓存)的高速缓存行中。通常,压缩形式的数据区段(或者经压缩数据区段)存储在与未经压缩形式的数据区段(或者源数据区段)的物理地址相对应的高速缓存行内。每个高速缓存行可以具有设定的大小(例如,128字节)或容量,对于任何加载操作必须填充该设定的大小或容量,而不管所需要的数据大小如何。例如,当将64字节或192字节的区段加载到128字节(B)的高速缓存行中时,可能需要计算设备读取并在高速缓存行中存储另外的潜在不需要的64字节,以完全填充高速缓存行的128字节。因此,当要加载到高速缓存行(或者多个高速缓存行)中的经压缩数据与源数据区段(或高速缓存行)不是相同大小时,在物理地址空间中可能存在不包含有用数据的“空洞(hole)”。对不需要的、不可用的数据的这种不期望的加载被称为“过取”,并且会导致存储器单元(例如,双倍数据速率(DDR)随机存取存储器(RAM)等等)与高速缓存之间次优的资源和带宽使用。例如,空洞会用尽部分高速缓存行,从而既增加了所请求的存储器带宽,又浪费了高速缓存中的空间,这导致计算设备中的资源使用的不均匀性。由于压缩方案(例如,Burrows-Wheeler变换等等)会得到小于高速缓存行的许多经压缩数据区段,因此会出现显著的过取,从而导致极大的低效率和增加的工作负载,这会减小使用压缩技术的益处。此外,经压缩的块大小可以小于最优DDR最小存取长度(MAL),从而导致更差的性能。
发明内容
各个方面提供了用于压实计算设备的高速缓存的高速缓存行内的数据的方法、设备以及非暂时性处理可读存储介质。一方面方法可以:标识针对第一数据区段的基地址;标识针对所述第一数据区段的数据大小;基于所述第一数据区段的所标识的数据大小和所述基地址来获得基本偏移;以及通过利用所获得的基本偏移对所述基地址进行偏移来计算偏移地址,其中,所计算的偏移地址可以与第二数据区段相关联。
在一些方面中,基于所述第一数据区段的所标识的数据大小和所述基地址来获得所述基本偏移可以由所述计算设备的处理器执行软件或者耦合到所述计算设备的所述处理器的专用电路中的一者来执行的,并且通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址可以由所述计算设备的所述处理器执行软件或者耦合到所述计算设备的所述处理器的所述专用电路中的一者来执行的。
在一些方面中,所述基地址可以是物理地址或虚拟地址。在一些方面中,所标识的数据大小可以是基于与所述第一数据区段相关联的压缩比来标识的。在一些方面中,所述压缩比可以是以下各项中的一项:4:1压缩比、4:2压缩比、4:3压缩比或4:4压缩比。
在一些方面中,基于所标识的压缩比和所述第一数据区段的所述基地址来获得所述基本偏移可以包括:基于所述基地址来标识针对所述第一数据区段的奇偶校验值,以及使用所标识的压缩比和所标识的奇偶校验值来获得所述基本偏移。
在一些方面中,使用所标识的压缩比和所标识的奇偶校验值来获得所述基本偏移可以包括:通过使用所标识的压缩比和所标识的奇偶校验值对经存储的表执行查找来获得所述基本偏移。在一些方面中,所述奇偶校验值指示所述第一数据区段的所述基地址中的一位可以是奇数还是偶数。在一些方面中,所述奇偶校验值可以基于所述第一数据区段的所述基地址中的两个位。
在一些方面中,基于所述第一数据区段的所标识的数据大小和所述基地址来获得所述基本偏移可以包括:获得针对所述第一数据区段的第一基本偏移和第二基本偏移以及第一数据大小和第二数据大小,并且通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址可以包括:计算针对所述第一数据大小的第一偏移地址以及针对所述第二数据大小的第二偏移地址。
在一些方面中,所述方法还可以包括在所计算的偏移地址处存储所述第一数据区段,这可以包括:在所述基地址处读取所述第一数据区段作为未经压缩数据;以所标识的数据大小来压缩所述第一数据区段;以及在所计算的偏移地址处存储所压缩的第一数据区段。
在一些方面中,通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址可以在所述第一数据区段已被压缩之后完成。在一些方面中,所述方法还可以包括:在所计算的偏移地址处读取所述第一数据区段。
在一些方面中,所述方法还可以包括:确定所述第二数据区段是否具有为了与所述第一数据区段相连续的正确压缩比,并且在所计算的偏移地址处读取所述第一数据区段可以包括:响应于确定所述第二数据区段具有所述正确压缩比,利用所述第一数据区段来预取所述第二数据区段。在一些方面中,所述方法还可以包括:对所读取的第一数据区段进行解压缩。
各个方面可以包括一种计算设备,所述计算设备被配置有处理器可执行指令以执行上面所描述的方法的操作。各个方面可以包括一种计算设备,所述计算设备具有用于执行上面所描述的方法的操作的功能的单元。各个方面可以包括其上存储有处理器可执行指令的非暂时性处理器可读介质,所述处理器可执行指令被配置为使得计算设备的处理器执行上面所描述的方法的操作。
附图说明
被并入本文并构成本说明书的一部分的附图示出了本发明的示例性方面,并且连同上面所给出的总体描述和下面所给出的具体描述,用以解释本发明的特征。
图1是本领域已知的经压缩的数据区段在高速缓存行中的示例性放置的存储器结构图。
图2是示出了根据方面压实技术的在高速缓存行中数据区段的偏移放置的存储器结构图。
图3是示出了适合用于一些方面中的、包括与压缩比和基地址奇偶校验值相对应的基本偏移值的数据表的数据结构图。
图4A是适合用于各个方面中的、用于返回新地址(例如,物理地址)的函数的示例性伪代码。
图4B是适合用于各个方面中的、用于调用图4A的示例性函数的示例性伪代码。
图4C是示出了适合用于各个方面中的、在图4A的示例性函数的实现期间所使用的示例性值的示例性伪代码。
图5是示出了根据另一方面压实技术的在高速缓存行中数据区段的偏移放置的存储器结构图。
图6是示出了适合用于各个方面中的、包括与压缩比和对应于地址的两个位的基地址奇偶校验值相对应的基本偏移值的数据表的数据结构图。
图7A是适合用于各个方面中的、用于返回新地址(例如,物理地址)的函数的另一示例性伪代码。
图7B是适合用于各个方面中的、用于调用图7A的示例性函数的另一示例性伪代码。
图7C是示出了适合用于各个方面中的、在图7A的示例性函数的实现期间所使用的示例性值的另一示例性伪代码。
图8A-图8C是示出了用于计算设备压实高速缓存的高速缓存行内的数据的方面方法的过程流图。
图9是示出了用于计算设备压缩和压实高速缓存的高速缓存行内的数据的方面方法的过程流图。
图10是适合用于各个方面中的计算设备的组件框图。
具体实施方式
将参考附图详细描述各个方面。只要有可能,贯穿附图将使用相同的附图标记来指代相同或相似的部件。对特定示例和实现方式的引用是出于说明性的目的,并非旨在限制本发明或权利要求书的范围。
本文中使用词语“示例性”表示“用作示例、实例或说明”。本文中描述为“示例性”的任何实现方式不一定解释为比其它实现方式优选或有利。
各个方面包括可以在计算设备中实现以通过压实高速缓存内的数据区段来改善高速缓存存储器中的经压缩数据区段的压实度,以使得数据区段在高速缓存行上重叠的方法。通过在高速缓存行上重叠数据,小的经压缩数据区段可以共享高速缓存行,从而实现更高效的存储器存取和较不频繁的不需要的过取(overfetching)。
本文中使用术语“计算设备”来指代以下各项中的任何一项或全部:蜂窝电话、智能电话、连网板(web-pad)、平板计算机、具有互联网功能的蜂窝电话、具有WiFi功能的电子设备、个人数据助理(PDA)、膝上型计算机、台式计算机(或个人计算机)、服务器、以及装备有至少处理器的类似电子设备。计算设备可以利用各种架构以经由它们的处理器来实现执行软件指令,并且可以包括一个或多个存储器单元,例如随机存取存储器单元(例如,DDR、RAM等等)以及高速缓存单元(例如,L2高速缓存、L3高速缓存等等)。
本文中使用术语“源数据区段”来指代可以存储在计算设备的存储器或高速缓存单元中的未经压缩数据区段。在各个方面中,源数据区段的大小可以是256字节。此外,源数据区段可以与可以存储在高速缓存中的物理地址空间的专属范围相关联,该专属范围的大小与源数据区段相同(例如,未经压缩的瓦片(tile)或数据块的大小)。例如,源数据区段的专属范围可以是256字节。源数据区段可以存储在一个以上高速缓存行中,并且因此它们的专有范围可以延伸以覆盖(或者部分地覆盖)多个高速缓存行。本文中使用术语“基地址”来指代表示高速缓存中源数据区段的专属范围的开始的物理地址或虚拟地址。本文中使用术语“偏移地址”来指代作为基地址(物理或虚拟)的偏移的物理地址或虚拟地址。
本文中使用术语“经压缩数据区段”来指代其大小已由执行常规数据压缩算法的计算设备减小的数据区段。经压缩数据区段的大小(例如,字节)可以小于它们对应的源数据区段。例如,经压缩数据区段可以是64字节,而其对应的源数据区段可以是256字节。
压缩技术通常用于通过减小在存储器单元与高速缓存单元之间传输的数据量来改善计算设备的性能。然而,不管经压缩数据区段的较小的大小,它们仍然可以与高速缓存的特定地址(例如,物理地址)相关联或对齐,常常导致高速缓存行的次优使用。例如,当使用128字节高速缓存行并且将256字节数据区段压缩为64字节(即,使用4:1压缩比)或192字节(即,使用4:3压缩比)的经压缩数据区段时,高速缓存行的64字节可能由于过取而被浪费。利用比高速缓存行大小(例如,128字节)要小的最小压缩大小(例如,64字节)的经压缩数据区段,经由常规技术加载到高速缓存的数据包括浪费的数据,这增加了带宽并使压缩更差。例如,64字节和192字节大小的经压缩数据区段可以包括用于一些工作负荷(例如,用户接口(UI)工作负荷)的高速缓存事务的显著部分,并且因此会导致对高速缓存空间的低效使用以及不必要的过取。在许多情况下,例如在涉及对UI工作负荷的压缩的场景期间,用于在高速缓存行内放置经压缩数据的常规技术在处理利用4:1或4:3压缩比来压缩的数据区段时可能是特别低效的。
图2进一步强调了常规技术的潜在低效率,图1示出了图101,该图101示出了在实现本领域已知的此类常规压缩技术的计算设备的高速缓存行中经压缩数据区段的有问题的放置。示例性的高速缓存可以包括高速缓存行102a-102d,这些高速缓存行依次对齐并且均具有固定的大小,例如128字节。图101的第一行110示出了可以存储在高速缓存中的第一源数据区段112(或者瓦片或数据块)以及第二源数据区段114。第一源数据区段112可以与第一高速缓存行102a和第二高速缓存行102b相对应(即,第一源数据区段112可以存储在高速缓存行102a-102b二者中)。类似地,第二数据区段114可以与第三高速缓存行102c和第四高速缓存行102d相对应(即,第二源数据区段114可以存储在高速缓存行102c-102d二者中)。
被配置为执行各种常规压缩算法的计算设备能够利用不同的压缩比来压缩源数据区段112、114,例如4:1压缩比(例如,将256字节数据区段压缩为64字节数据区段)、4:2压缩比(例如,将256字节数据区段压缩为128字节数据区段)、4:3压缩比(例如,将256字节数据区段压缩为192字节数据区段)、以及4:4压缩比(例如,将256字节数据区段压缩为256字节数据区段或者无压缩)。
例如,图101的第二行120示出了对源数据区段112、114的第一压缩。具体而言,第一源数据区段112可以由计算设备压缩为大小是192字节的第一经压缩数据区段122(即,使用4:3压缩比)。第一经压缩数据区段122可以保持与第一源数据区段112对齐(即,第一经压缩数据区段122的开始可以没有偏移地存储在第一高速缓存行102a中)。在第二行120中,关于第二源数据区段114,计算设备可以使用4:4压缩比(或者不压缩),并且因此第二源数据区段114的大小可以仍然是256字节。例如当由计算设备所使用的压缩算法未被配置为能够压缩特定的数据区段或者计算设备以其它方式被配置为不选择压缩数据区段时,可以选择性地压缩源数据区段。
第一经压缩数据区段122可以仍然与第一高速缓存行102a和第二高速缓存行102b对应(或对齐),然而,由于其较小的大小(即,小于原始的256字节),因此第一经压缩数据区段122可以仅利用第二高速缓存行102b的一部分(或者一半)。换句话说,192字节第一经压缩数据区段122可以使得128字节第一高速缓存行102a被完全使用并且128字节第二高速缓存行102b仅被使用一半。由于对第二高速缓存行102b的一半使用,未使用的数据(在图1中被称为“OF”)的第一64字节过取数据区段123也可存在于第二高速缓存行102b中。例如,当从DDR或其它存储器中读取第一经压缩数据区段122时,第一过取部分123可以被加载到第二高速缓存行102b中。
举另一个示例,图101的第三行130示出了对源数据区段112、114的第二压缩。具体而言,第一源数据区段112可以由计算设备压缩为大小是64字节的第二经压缩数据区段132(即,使用4:1压缩比)。第二经压缩数据区段132可以保持与第一源数据区段112对齐(即,第二经压缩数据区段132的开始可以没有偏移地存储在第一高速缓存行102a中)。第二经压缩数据区段132可以不利用第二高速缓存行102b,并且因此第二高速缓存行102b可以填充有两个64字节未使用的数据区段139(例如,无效的、空的、或者另外未使用的数据区段)。替代地,第二高速缓存行102b可以填充有一个128字节的无效数据区段。由于64字节第二经压缩数据区段132仅填充128字节第一高速缓存行102a的一半,因此过取/未使用的数据的第二64字节过取数据区段133也可以存在于第一高速缓存行102a中。
类似于第三行130中的第二经压缩数据区段132,第二源数据区段114可以由计算设备压缩为大小是64字节第三经压缩数据区段134(即,使用4:1压缩比)。第三经压缩数据区段134可以保持与第二源数据区段114对齐(即,第三经压缩数据区段134的开始可以没有偏移地存储在第三高速缓存行102c中)。第三经压缩数据区段134可以不利用第四高速缓存行102d,并且因此第四高速缓存行102d可以填充有两个64字节未使用的数据区段139(或者替代地一个128字节未使用的数据区段)。然而,由于64字节第三经压缩数据区段134仅填充128字节第三高速缓存行102c的一半,因此过取/未使用的数据的第三64字节过取数据区段135也可以存在于第三高速缓存行102c中。
举另一个示例,图101的第四行140示出了对源数据区段112、114的第三压缩。具体而言,第一源数据区段112可以由计算设备压缩为大小是128字节的第四经压缩数据区段142(即,使用4:2压缩比)。第四经压缩数据区段142可以保持与第一源数据区段112对齐(即,第四经压缩数据区段142的开始可以没有偏移地存储在第一高速缓存行102a中)。第四经压缩数据区段142可以不利用第二高速缓存行102b,并且因此第二高速缓存行102b可以填充有128字节未使用的数据区段149(或者替代地两个64字节未使用的数据区段)。
第二源数据区段114可以由计算设备压缩为大小是192字节的第五经压缩数据区段144(即,使用4:3压缩比)。第五经压缩数据区段144可以保持与第二源数据区段114对齐(即,第五经压缩数据区段144的开始可以没有偏移地存储在第三高速缓存行102c中)。第五经压缩数据区段144可以仅部分地利用第四高速缓存行102d,并且因此第四高速缓存行102d可以填充有第四64字节过取数据区段145。
为了改善图1中所示出的常规技术的经压缩数据区段的低效放置,各个方面包括用于压实高速缓存内的数据区段以使得数据区段在高速缓存行上重叠的方法、设备以及非暂时性处理可读存储介质。换句话说,可以将数据区段放置在高速缓存的通常与其它另一个数据区段相关联的地址范围(例如,物理地址范围)内而不是放置在其自身常规的地址范围内,从而得到对高速缓存行的更高效使用(即,需要更少的高速缓存行来存储相同量的数据)。利用这种重叠,小的经压缩数据区段可以共享高速缓存行,从而实现更高效的存储器存取(例如,DDR MAL)以及较不频繁的不需要的过取。
在各个方面中,计算设备可以被配置为执行高速缓存行压实操作,该操作将数据区段的放置移位(或偏移)到高速缓存的通常与另一个数据区段相关联的专属范围(或地址空间)中。例如,计算设备可以偏移两个连续的专属范围以使得它们延伸到单个高速缓存行的各一半。为了实现这种压实,计算设备可以标识要应用于第一数据区段(或数据块)的基地址的基本偏移,以便将第一数据区段存储在通常与第二数据区段相关联的高速缓存行内(例如,物理地址内)。可以由计算设备至少基于数据区段的数据大小来确定基本偏移。可以基于数据区段的压缩比(即,未经压缩的大小与经压缩的大小的比率)来标识该数据大小。例如,当数据区段以第一压缩比(例如,4:4)被压缩时,该数据区段的基本偏移可以是从基地址的第一量(以字节为单位),并且当数据区段以第二压缩比(例如,4:1)被压缩时,该数据区段的基本偏移可以是从基地址的第二量。可以由计算设备基于由该计算设备用于压缩数据区段的各种压缩算法来标识这种压缩比。
除了数据大小(例如,压缩比)之外,计算设备还可以基于基地址自身来确定基本偏移。例如,当数据区段的基地址的某个位(例如,位8)是奇数(即,‘1’)时,以某个压缩等级(例如,4:1)来压缩的数据区段可以具有第一偏移(例如,64字节),并且当该某个位是偶数(即,‘0’)时,该数据区段可以具有第二偏移(例如,256字节)。在一些方面中,基地址的位8的值可以随着基地址中的每256字节而改变。例如,对于高速缓存中的第一地址,位8可以是‘0’值,但是对于与第一地址相距256字节的第二地址,位8值可以是‘1’值。
在一些方面中,经压缩数据区段的基本偏移可以小于4KB页大小。因此,计算设备可以执行针对各种存储器或高速缓存单元的任何虚拟地址或物理地址的方面压实操作或技术。
在一些方面中,计算设备可以使用压缩比以及关于基地址(例如,高速缓存中的物理地址)的信息来对预定义的数据表执行查找以标识相应的基本偏移。然而,在一些方面中,计算设备可以使用逻辑、软件、电路以及其它功能而不是利用预先确定的数据表来标识用于压实高速缓存内的数据区段的偏移值。例如,计算设备可以经由该计算设备的处理器执行软件(例如,用于访问所存储的数据表的操作等等)和/或经由耦合到该计算设备的处理器的专用电路,来标识偏移值并计算偏移地址。
在一些方面中,计算设备可以将所有专属范围从基地址偏移高速缓存行的一半(等于最小压缩大小)。以此方式,可以将未填充高速缓存行的经压缩数据区段偏移到与另一源数据区段的专属范围共享的高速缓存行中,从而实现对整个高速缓存行的机会性使用(即,连续的压缩可以被映射到共享的高速缓存行)。
方面技术可以由计算设备用于独立于缓冲器内的其它数据区段来压实数据区段。例如,无论用于相邻数据区段的压缩比如何,特定的数据区段可以仅基于其自身的压缩比和基地址在高速缓存行内偏移。换句话说,为了压实数据区段,计算设备可能不需要知道其它数据区段的压缩比和/或偏移。
以下是由计算设备进行的方面方法的示例性应用。计算设备可以被配置为执行从存储器单元(例如,DDR)的读取以取回未经压缩数据区段(即,源数据区段)。未经压缩的、取回的数据区段通常可以与高速缓存中的基地址(例如,物理地址)相关联。计算设备可以评估所取回的数据区段来标识可能经由压缩算法应用的压缩等级(或比率)。所标识的压缩比可以是对于数据区段而言可能的最大值以便使高速缓存空间使用最大化。计算设备可以以该压缩比来压缩数据区段。基于压缩比以及与未经压缩数据区段相关联的基地址,计算设备可以标识高速缓存内的偏移以存储经压缩的数据区段,例如,从基地址偏移64字节。计算设备随后可以将经压缩的数据区段加载到偏移地址中。
各个方面可以有益于减小与在各种类型的计算设备(对于这些计算设备而言,对功率和/或存储器带宽(例如,DDR)使用的改善是令人期望的)中的过取相关的不必要的带宽使用。例如,可以由利用片上系统的移动设备(例如,智能电话)来使用方面操作。此外,通过实现用于L3高速缓存或其它类似存储器或存储单元中的预取来改善计算设备的性能,各个方面可以是有益的。具体而言,可以同时取得存储在共享的高速缓存行中的数据区段和相邻数据区段(或相邻区段),从而减少读取。例如,计算设备可以取回64字节大小的第一经压缩数据区段连同相邻的64字节大小的第二经压缩数据区段。
本文所描述的方面高速缓存行压实操作可以由计算设备来执行以减少对各种工作负荷(包括UI工作负荷)的过取。方面操作可以特别有益于减少对包括以4:1和4:3压缩比来压缩的数据区段(其出现在连续块中)以及以4:1或4:2来压缩的数据区段的工作负荷的过取。
常规技术包括用于将高速缓存配置为支持经压缩的和未经压缩的行的操作以及用于确定是否要压缩数据的操作。例如,常规技术可以包括:用于仅仅由于压缩操作的典型效果而将相邻的两个未经压缩的行压缩到单个元件中的方法(例如,物理地址空间中顺序的相邻行由于压缩操作可以被压缩为装入一行中)。
不同于常规技术,各个方面并不简单地讨论压缩或将经压缩的数据存储在高速缓存中。相反,方面技术提供了可以用于改变这种常规压缩技术以使得常规压缩的数据可以更好地被放置在高速缓存行内的功能。换句话说,方面技术可以由计算设备在压缩数据之后的处理阶段中使用,以使得通常会被放置在不同高速缓存行中的压缩后(post-compression)输出(即,已经压缩的数据区段)以更高效的方式打包到高速缓存中。例如,执行方面操作的计算设备可以获取原本会加载到两个不同的、部分使用的高速缓存行中的两个不同的经压缩数据区段,并通过使用偏移移位将这两个经压缩数据区段存储到单个高速缓存行中。换句话说,方面特征在高速缓存的地址空间(例如,物理地址空间)内对已经压缩的数据区段进行移位,改变经压缩数据区段的基地址,以改善高速缓存使用。
为简单起见,对各个方面的描述可以指代压实高速缓存内的经压缩数据区段的操作。然而,各个方面操作可以由计算设备应用于压实任何存储单元或架构(例如,SRAM、高速缓存等等)内的任何类型的数据(例如,经压缩的或未经压缩的)。换句话说,各个方面并非旨在受限于与数据压缩方案一起使用。例如,计算设备可以执行本文所描述的方面方法,以改善对缓冲器中包括各种长度的数据区段的任何数据集或者具有空洞的任何数据集(例如,未使用的数据区段)的压实。虽然基地址在本文中可以被称为物理地址,但应当意识到,在一些方面中,基地址可以是虚拟地址。
在各个方面中,计算设备可以利用连续的(即,相邻存储)的高速缓存行(并且因此利用与高速缓存行相关联的或者存储在高速缓存行内的数据)。然而,在一些方面中,计算设备可以被配置为存储/访问高速缓存内的非连续地址内的数据区段。换句话说,方面技术可以实现对存储在可能在或者可能不在存储器中的不同位置中的高速缓存行中的数据区段的压实。
为简单起见,执行各个方面方法的计算设备可以被称为标识或以其它方式使用与数据区段相关联的压缩比以便计算偏移地址。然而,应当意识到,执行这些方面的计算设备可以标识或以其它方式使用对此类数据区段的数据大小的任意形式的指示,以便根据各个方面来压实数据区段。换句话说,各个方面可以用于对可能被压缩或可能未被压缩的数据区段执行压实。执行各个方面技术的计算设备可以基于各种压缩比和数据大小分布来标识数据区段的数据大小,并且因此在对各个方面的描述中提及的压缩比示例并非旨在将权利要求的范围限制于4:1、4:2、4:3、4:4压缩比。
图2示出了根据由计算设备执行的方面高速缓存行压实操作的、数据区段在高速缓存行220-227内的放置。计算设备可以被配置为利用常规压缩算法来压缩各个数据区段。具体而言,图2示出了一个示例,其中计算设备可以使用压缩算法,以便经由4:1压缩比将256字节的源数据区段200a-206a压缩成64字节的经压缩区段、经由4:2压缩比将其压缩成128字节的经压缩区段、经由4:3压缩比将其压缩成192字节的经压缩区段、或者经由4:4压缩比将其压缩成256字节的经压缩区段。为以下对图2的描述清晰起见,利用垂直线来示出高速缓存行映射以指示依次对齐的高速缓存行220-227的固定大小(例如,128字节),并且虚线270可以指示1kB的交织。
高速缓存行220-227可以与可从左到右增大的物理地址相关联(即,第一高速缓存行220的物理地址是比与第二高速缓存行221的物理地址相关联的数字要小的数字,依此类推)。在一些方面中,高速缓存行220-227的物理地址可以用至少8位来表示。图2示出了对各个高速缓存行220-227的相关联的物理地址的第八和第七位的指示。例如,第一高速缓存行220的第八位(或位8)可以是‘0’值,并且第一高速缓存行220的第七位(或位7)可以是‘0’值,第二高速缓存行221的第八位(或位8)可以是‘0’值,并且第二高速缓存行221的第七位(或位7)可以是‘1’值,第三高速缓存行222的第八位(或位8)可以是‘1’值,并且第三高速缓存行222的第七位(或位7)可以是‘0’值,依此类推。
图200的第一行228示出了未经压缩的源数据区段200a-206a在根据常规技术来存储在高速缓存中时在256字节区段边界210-216内的默认放置。换句话说,源数据区段200a-206a可以以256字节的间隔存储在它们的基地址内。具体而言,第一源数据区段200a(图2中被称为‘A’)可以没有偏移地放置在第一高速缓存行220和第二高速缓存行221内。第二源数据区段202a(图2中被称为‘B’)可以没有偏移地放置在第三高速缓存行222和第四高速缓存行223内。第三源数据区段204a(图2中被称为‘C’)可以没有偏移地放置在第五高速缓存行224和第六高速缓存行225内。第四源数据区段206a(图2中被称为‘D’)可以没有偏移地放置在第七高速缓存行226和第八高速缓存行227内。
图200中的行229、230、240、250、260根据方面技术示出了对压缩形式的源数据区段200a-206a的与基地址重叠的偏移放置。在一些方面中,如下面所描述的,由计算设备用于放置各个经压缩数据区段的基本偏移可以基于对预定义的数据表执行的查找,例如下面参考图3所描述的。
图200的第二行229示出了256字节经压缩数据区段200b-206b在从它们各自的基地址的64字节基本偏移内的简单偏移放置。该映射可能需要在使用该方面的所有经压缩的数据缓冲器的结尾处分配另外的64字节。与第一源数据区段200a(即,‘A’)相对应的第一经压缩数据区段200b可以由计算设备以64字节偏移来放置在第一高速缓存行220的一半、整个第二高速缓存行221、以及第三高速缓存行222的一半内。第一经压缩数据区段200b可以通过64字节重叠280重叠到第三高速缓存行222中。与第二源数据区段202a(即,‘B’)相对应的第二经压缩数据区段202b可以由计算设备以64字节偏移来放置在第三高速缓存行222的一半、整个第四高速缓存行223、以及第五高速缓存行224的一半内。第二经压缩数据区段202b可以通过64字节重叠282重叠到第五高速缓存行224中。与第三源数据区段204a(即,‘C’)相对应的第三经压缩数据区段204b可以由计算设备以64字节偏移来放置在第五高速缓存行224的一半、整个第六高速缓存行225、以及第七高速缓存行226的一半内。第三经压缩数据区段204b可以通过64字节重叠284重叠到第七高速缓存行226中。与第四源数据区段206a(即,‘D’)相对应的第四经压缩数据区段206b可以由计算设备以64字节偏移来放置在第七高速缓存行226的一半、整个第八高速缓存行227、以及另一高速缓存行(未示出)的一半内。第四经压缩数据区段206b可以跨过交织并且可以通过64字节重叠286重叠到另一个高速缓存行(未示出)中。经压缩数据区段200b-206b可以由计算设备以4:4压缩比来压缩,或者替代地不压缩而仅仅经由基本偏移来移位。
图200的第三行230示出了对由计算设备以4:1压缩比来压缩的64字节数据区段的偏移放置。具体而言,与第一源数据区段200a(即,‘A’)相对应的第一64字节经压缩数据区段231可以由计算设备以256字节偏移来放置在第三高速缓存行222的一半内。与第二源数据区段202a(即,‘B’)相对应的第二64字节经压缩数据区段232可以由计算设备以64字节偏移来放置在第三高速缓存行222的另一半内。换句话说,第一64字节经压缩数据区段231和第二64字节经压缩数据区段232可以共享第三高速缓存行222,尽管高速缓存行222通常仅与第二源数据区段202a(即,‘B’)相关联。由于分别对第一64字节经压缩数据区段231和第二64字节经压缩数据区段232的256字节和64字节偏移放置,第一高速缓存行220、第二高速缓存行221和第四高速缓存行223可以包括未使用的数据299。换句话说,可能已不需要计算设备来获取针对这些高速缓存行220、221、223的任何数据。这些未使用的高速缓存行(即,与未使用的数据299相关联的高速缓存行220、221、223)可以是空闲的以便高速缓存分配给其它请求。
还参考图200的第三行230,与第三源数据区段204a(即,‘C’)相对应的第三64字节经压缩数据区段234可以由计算设备以256字节偏移来放置在第七高速缓存行226的一半内。与第四源数据区段206a(即,‘D’)相对应的192字节经压缩数据区段236可以由计算设备以64字节偏移来放置在第七高速缓存行226的另一半以及整个第八高速缓存行227内。192字节经压缩数据区段236可能已由计算设备以4:3压缩比来压缩。第三64字节经压缩数据区段234和192字节经压缩数据区段236可以共享第七高速缓存行226,尽管高速缓存行226通常仅与第四源数据区段206a(即,‘D’)相关联。由于分别对第三64字节经压缩数据区段234和192字节经压缩数据区段236的256字节和64字节偏移放置,第五高速缓存行224和第六高速缓存行225可以包括未使用的数据299。
图200的第四行240示出了对由计算设备以4:2压缩比来压缩的128字节数据区段的偏移放置。具体而言,与第一源数据区段200a(即,‘A’)相对应的第一128字节经压缩数据区段241可以由计算设备以128字节偏移来放置在第二高速缓存行221内。与第二源数据区段202a(即,‘B’)相对应的第二128字节经压缩数据区段242可以由计算设备以128字节偏移来放置在第四高速缓存行223内。以此方式,第一128字节经压缩数据区段241和第二128字节经压缩数据区段242可以仍然存储在它们典型的区段边界210、212内,但是可以被偏移为使得第一高速缓存行220和第三高速缓存行222包括未使用的数据299。换句话说,由于128字节偏移,可能已不需要计算设备来获取针对这些高速缓存行220、223的任何数据。
还参考图200的第四行240,与第三源数据区段200c(即,‘C’)相对应的第三128字节经压缩数据区段244可以由计算设备以128字节偏移来放置在第六高速缓存行225内。与第四源数据区段206a(即,‘D’)相对应的64字节经压缩数据区段246可以由计算设备以64字节偏移来放置在第七高速缓存行226内。以此方式,第三128字节经压缩数据区段244和64字节经压缩数据区段246可以仍然存储在它们典型的区段边界214、216内,但是可以被偏移为使得第五高速缓存行224和第八高速缓存行227包括未使用的数据299。然而,由于64字节经压缩数据区段246没有完全填充第七高速缓存行226并且第三128字节经压缩数据区段244没有被偏移到第四区段边界216中,因此第七高速缓存行226的一半可以填充有过取数据291。
图200的第五行250示出了对由计算设备以4:3压缩比来压缩的192字节数据区段的偏移放置。具体而言,与第一源数据区段200a(即,‘A’)相对应的第一192字节经压缩数据区段251可以由计算设备以128字节偏移来放置在第二高速缓存行221、以及第三高速缓存行222的一半内。与第二源数据区段202a(即,‘B’)相对应的第二192字节经压缩数据区段252可以由计算设备以64字节偏移来放置在第三高速缓存行222的一半、以及第四高速缓存行223内。以此方式,第一192字节经压缩数据区段251和第二192字节经压缩数据区段252可以被偏移为共享第三高速缓存行222,从而使得第一高速缓存行220能够包括未使用的数据299。换句话说,由于192字节偏移,可能已不需要计算设备来获取针对第一高速缓存行220的任何数据。
还参考图200的第五行250,与第三源数据区段200c(即,‘C’)相对应的64字节经压缩数据区段254可以由计算设备以256字节偏移来放置在第七高速缓存行226内。与第四源数据区段206a(即,‘D’)相对应的256字节经压缩数据区段256可以由计算设备以64字节偏移来放置在第七高速缓存行226的一半、整个第八高速缓存行227、以及另一个高速缓存行(未示出)的一半内。以此方式,第五高速缓存行224和第六高速缓存行225可以包括未使用的数据299。然而,256字节经压缩数据区段256可以跨过交织并且因此计算设备可能需要使用单独的事务。
图200的第六行260示出了对由计算设备以4:4压缩比来压缩的256字节数据区段的偏移放置。具体而言,与第一源数据区段200a(即,‘A’)相对应的第一256字节经压缩数据区段261可以由计算设备以64字节偏移来放置在第一高速缓存行220的一半、整个第二高速缓存行221、以及第三高速缓存行222的一半内。与第二源数据区段202a(即,‘B’)相对应的第二256字节经压缩数据区段262可以由计算设备以64字节偏移来放置在第三高速缓存行222的一半、整个第四高速缓存行223、以及第五高速缓存行224的一半内。此外,与第三源数据区段200c(即,‘C’)相对应的第三256字节经压缩数据区段264可以由计算设备以64字节偏移来放置在第五高速缓存行224的一半、整个第六高速缓存行225、以及第七高速缓存行226的一半内。与第四源数据区段206a(即,‘D’)相对应的64字节经压缩数据区段266可以由计算设备以64字节偏移来放置在第七高速缓存行226的一半内。以此方式,第八高速缓存行227可以包括未使用的数据299。然而,由于第一256字节经压缩数据区段261没有完全填充第一高速缓存行220,因此第一高速缓存行220的一半可以填充有过取数据290。
在一些方面中,计算设备可以将数据区段分离成跨边界的单独事务,以便在将数据区段映射为跨过越交织和/或页边界时进行缓解。例如并且如下面图5中所描述的,当计算设备将256字节经压缩数据区段(例如,利用4:3压缩比来压缩的区段)放置在交织和/或页边界上时,可能需要两个单独的事务。
图3示出了适合用于一些方面中的、包括与压缩比和基地址信息(即,基地址奇偶校验值)相对应的偏移值的数据表300。实现方面压实技术的计算设备可以使用特定的经压缩数据区段的压缩比信息310和基地址奇偶校验信息302来对数据表300执行查找,以标识应当用于在高速缓存内放置(或访问)该数据区段的基本偏移的大小。基地址奇偶校验信息302可以是对高速缓存中的数据区段的基地址(例如,物理地址)的位8是奇数(即,‘1’值)还是偶数(即,‘0’值)的指示。在一些方面中,数据表300可以是存储在计算设备的存储器内的二维(2D)数组。在一些方面中,硬件和软件二者可以用于实现各技术,例如通过计算设备利用表或逻辑。
例如,响应于针对以4:1压缩比来压缩的并且具有偶数值位8的基地址的数据区段来对数据表300执行查找,计算设备可以标识256字节基本偏移。响应于针对以4:1压缩比来压缩的并且具有奇数值位8的基地址的数据区段来对数据表300执行查找,计算设备可以标识64字节基本偏移。响应于针对以4:2压缩比来压缩的并且具有偶数或奇数值位8的基地址的数据区段来对数据表300执行查找,计算设备可以标识128字节基本偏移。响应于以4:3压缩比来压缩的并且具有偶数值位8的基地址的数据区段来对数据表300执行查找,计算设备可以标识128字节基本偏移。响应于针对以4:3压缩比来压缩的并且具有奇数值位8的基地址的数据区段来对数据表300执行查找,计算设备可以标识64字节基本偏移。响应于针对以4:4压缩比来压缩的并且具有偶数或奇数值位8的基地址的数据区段来对数据表300执行查找,计算设备可以标识64字节基本偏移。
图4A示出了可以由计算设备执行以便标识用于经压缩数据区段在高速缓存内的偏移放置的新地址(例如,物理地址)的函数的示例性伪代码400。例如,计算设备可以被配置有如下面所描述的指令以便如上面图2中所示出的来放置数据区段。由伪代码400示出的函数可以由计算设备例如在执行压缩例程(例如,对数据集的压缩例程)期间或之后,作为应用、固件、应用编程接口(API)、例程和/或操作的一部分来执行。应当意识到,提供该伪代码400是出于一般说明的目的,并且因此并非旨在表示任何特定的编程语言、结构或格式化。
伪代码400(图4A中被称为“伪代码A”)可以表示被称为“getNewAddress_oddOrEven()”的函数,该函数可能需要与特定的数据区段相关的Base_Address(基_地址)输入参数和Compression_Ratio(压缩_比)输入参数。在一些方面中,Base_Address可以是物理地址或虚拟地址的二进制表示。伪代码400中所示出的函数可以包括用于计算设备对Base_Address输入参数执行右移运算以便将数据区段的基地址的位8移动到最右位以用于存储在Shift(移位)变量中(右移运算在图4A中被指示为“>>8”)的指令。伪代码400中所示出的函数可以包括用于对地址的位8(即,Shift变量)和‘1’值(例如,“…000000001”)执行按位与运算(或图4A中的‘&’)的指令,该运算可以生成存储在Parity(奇偶校验)变量中的值。换句话说,当Shift变量是0时,Parity变量中的值可以是0,并且当Shift变量是1时,Parity变量值可以是1。
伪代码400中所示出的函数还可以包括用于计算设备使用Compression_Ratio输入参数和所计算的Parity变量来对预定义的表执行查找操作的指令,例如图3中所描述的。通过查找取回的值可以存储在Offset变量中。在一些方面中,查找操作可以是用于访问存储在计算设备的存储器内的二维(2D)数组中的信息的操作。最后,伪代码400中所示出的函数可以包括用于计算设备将Base_Address和Offset变量相加以生成偏移地址(例如,新的偏移物理地址)的指令,可以返回该偏移地址以便由计算设备用于放置数据区段。
在一些方面中,计算设备可以被配置有简化的逻辑、电路、软件指令和/或例程来生成新地址而不是利用表查找操作,如利用伪代码400所指示的。
图4B-图4C示出了可以用于对图4A中所描述的伪代码400中所示出的函数的调用的示例性伪代码和值。应当意识到,图4B-图4C中的示例性值是出于说明的目的,并非旨在限制各方面的范围。
图4B示出了示例性伪代码450,该示例性伪代码450可以由计算设备执行以调用如图4A中所描述的用于确定数据区段的新偏移地址的示例性函数。示例性伪代码450可以包括用于设置Base_Address和Compression_Ratio变量的值的指令,其中Base_Address和Compression_Ratio变量可以用作为对getNewAddress_oddOrEven()函数的调用的输入参数。例如,Base_Address可以被设置为数据区段的物理地址(例如,“…100000000”),其中物理地址包括至少八位。举另一个示例,Compression_Ratio变量可以被设置为指示计算设备已使用压缩算法来压缩数据区段的压缩等级(或压缩比)的值(例如,4:4)。伪代码450可以包括使用这些输入参数和值对函数getNewAddress_oddOrEven()的调用,并且可以使得计算设备能够将来自函数的返回值存储在new_address(新_地址)变量中,例如实现了在高速缓存行中的偏移放置的、数据区段的新物理地址。
图4C示出了示例性伪代码460,该伪代码460类似于图4A的伪代码400但是还包括用于基于上面图4B中所描述的输入参数值的各个指令中的示例性值。换句话说,伪代码460是图4A的示例性伪代码400的功能等效方案,其具有对作为示例性函数getNewAddress_oddOrEven()的一部分来执行的计算的值的增加的指示。
例如,在图4C中,函数可以利用具有“…100000000”值的Base_Address输入参数以及具有“4:4”值的Compression_Ratio输入参数。响应于对Base_Address输入参数执行右移运算,计算设备可以生成“…000000010”的值以便将数据区段的基地址(例如,物理地址)的位8移动到最右位以用于存储在Shift变量中。函数可以包括用于对Shift变量和1值(或“…000000001”)执行按位与运算的指令,该运算可以生成存储在Parity变量中的值。例如,当Shift变量具有值“000000010”时,按位与运算可以产生“…000000000”(或简单地0)的Parity变量值。利用示例性Parity变量值0和Compression_Ratio的示例性值4:4,对图3中所描述的预定义的表的查找的结果可以返回64字节的Offset变量值。函数随后可以返回数据区段的新偏移地址,该新偏移地址是Offset变量值(例如,64字节)和Base_Address(例如,“…100000000”)的组合。
在一些方面中,计算设备可以被配置为:以不会跨过页边界或交织的方式将数据区段偏移地放置在高速缓存行中。换句话说,计算设备可以将64字节数据区段映射到512字节部分(或两个256字节部分)之外,以使得数据区段环绕512字节部分的开始以避免跨过页边界。为了示出这些方面,图5示出了根据利用该环绕的另一方面高速缓存行压实技术、对利用各种压缩比来压缩的数据区段的偏移放置。图5的图500类似于上面参考图2所描述的图200,不同之处在于图5中所示出的方面偏移放置可能不允许将数据区段放置在高速缓存中以使得它们跨过大于512字节的页或交织边界。图6中所示出的方面偏移放置也可以得到针对数据区段放置的更加均匀的高速缓存存储体使用。然而,与图2中所示出的方面偏移放置相比,图5中所示出的替代方面平均可以使得以4:4压缩比来压缩的数据区段中的一半分离成两个事务。换句话说,用于放置以4:4压缩比来压缩的数据区段的非连续请求可以得到比图2中所示出的方面技术更加分离的请求。由图5示出的方面技术可以有益于减少大多数过取,特别是当与L3高速缓存一起使用时。此外,在具有或没有L3高速缓存的情况下可以实现简单的预取。在各个方面中,4:4压缩比可以是最不可能的压缩比,并且因此将数据区段分离成两个事务可以是极端情况。
如图5中所示出的,高速缓存行520-527可以与可从左到右增大的物理地址相关联(即,第一高速缓存行520的物理地址是比与第二高速缓存行521的物理地址相关联的数字要小的数字,依此类推)。在一些方面中,高速缓存行520-527的物理地址可以用至少9位来表示。图5示出了对各个高速缓存行520-527的相关联的物理地址的第九、第八和第七位的指示。例如,第一高速缓存行520的第九位(或位9)可以是‘0’值,第一高速缓存行520的第八位(或位8)可以是‘0’值,并且第一高速缓存行520的第七位(或位7)可以是‘0’值,并且第五高速缓存行524的第九位(或位9)可以是‘1’值,第五高速缓存行524的第八位(或位8)可以是‘0’值,并且第五高速缓存行524的第七位(或位7)可以是‘0’值。
如上面参考图2所描述的,图500的第一行228示出了源数据区段202a-206a在根据常规技术来存储在高速缓存中时在256字节区段边界210-216内的默认放置。第一源数据区段200a(图5中被称为‘A’)可以由计算设备没有偏移地放置在第一高速缓存行520和第二行521内。第二源数据区段202a(图5中被称为‘B’)可以由计算设备没有偏移地放置在第三高速缓存行522和第四高速缓存行523内。第三源数据区段204a(图5中被称为‘C’)可以由计算设备没有偏移地放置在第五高速缓存行524和第六高速缓存行525内。第四源数据区段206a(图5中被称为‘D’)可以由计算设备没有偏移地放置在第七高速缓存行526和第八高速缓存行527内。
然而,图500的行529、530、540、550、560根据由计算设备执行的方面操作示出了对压缩形式的源数据区段200a-206a的与基地址重叠的偏移放置。在一些方面中,由计算设备用于放置各个经压缩数据区段的基本偏移可以基于对预定义的数据表执行的查找,例如下面图6中所描述的。
图500的第二行529示出了对256字节经压缩数据区段501、502a-502b、504a-504b、506的偏移放置。与第一源数据区段200a(即,‘A’)相对应的第一经压缩数据区段501可以由计算设备以64字节偏移来放置在第一高速缓存行520的一半、整个第二高速缓存行521、以及第三高速缓存行522的一半内。第一经压缩数据区段501可以通过64字节重叠来重叠到第三高速缓存行522中。与第二源数据区段202a(即,‘B’)相对应的第二经压缩数据区段502a可以由计算设备以64字节偏移来放置在第三高速缓存行522的一半、以及整个第四高速缓存行523内。然而,为了避免跨过交织,计算设备可以被配置为将256字节第二经压缩数据区段502a存储在两个单独的部分中。因此,256字节第二经压缩数据区段502a的剩余部分502b(图5中被称为“B–Rem”)可以由计算设备放置在第一高速缓存行520的前一半内。与第三源数据区段204a(即,‘C’)相对应的第三经压缩数据区段504a可以由计算设备没有偏移地放置在第五高速缓存行524、以及第六高速缓存行525的一半内。类似于第二经压缩数据区段502a,第三经压缩数据区段504a可以分离成两个部分以便避免跨过交织。因此,第三经压缩数据区段504a的剩余部分504b可以放置在第八高速缓存行527的一半中。与第四源数据区段206a(即,‘D’)相对应的第四经压缩数据区段506可以由计算设备以负64字节偏移来放置在第六高速缓存行525的一半、整个第七高速缓存行526、以及第八高速缓存行527的一半内。
图500的第三行530示出了对由计算设备以4:1压缩比来压缩的64字节数据区段的偏移放置。具体而言,与第一源数据区段200a(即,‘A’)相对应的第一64字节经压缩数据区段531可以由计算设备以256字节偏移来放置在第三高速缓存行522的一半内。与第二源数据区段202a(即,‘B’)相对应的第二64字节经压缩数据区段532可以由计算设备以64字节偏移来放置在第三高速缓存行522的另一半内。换句话说,第一64字节经压缩数据区段531和第二64字节经压缩数据区段532可以共享第三高速缓存行522,尽管高速缓存行522通常仅与第二源数据区段202a(即,‘B’)相关联。由于分别对第一64字节经压缩数据区段531和第二64字节经压缩数据区段532的256字节和64字节偏移放置,第一高速缓存行520、第二高速缓存行521和第四高速缓存行523可以包括未使用的数据599。换句话说,可能已不需要计算设备来获取针对这些高速缓存行520、521、523的任何数据。这些未使用的高速缓存行(即,与未使用的数据599相关联的高速缓存行520、521、523)可以是空闲的以便高速缓存分配给其它请求。
还参考图500的第三行530,与第三源数据区段204a(即,‘C’)相对应的第三64字节经压缩数据区段534可以由计算设备以128字节偏移来放置在第六高速缓存行525的一半内。与第四源数据区段206a(即,‘D’)相对应的192字节经压缩数据区段536可以由计算设备以负64字节偏移来放置在第六高速缓存行525的另一半以及整个第七高速缓存行526内。192字节经压缩数据区段536可能已由计算设备已4:3压缩比来压缩。由于分别对第三64字节经压缩数据区段534和192字节经压缩数据区段536的128字节和负64字节偏移放置,第五高速缓存行524和第八高速缓存行527可以包括未使用的数据599。
图500的第四行540示出了对由计算设备以4:2压缩比来压缩的128字节数据区段的偏移放置。具体而言,与第一源数据区段200a(即,‘A’)相对应的第一128字节经压缩数据区段541可以由计算设备以128字节偏移来放置在第二高速缓存行521内。与第二源数据区段202a(即,‘B’)相对应的第二128字节经压缩数据区段542可以由计算设备以128字节偏移来放置在第四高速缓存行523内。以此方式,第一128字节经压缩数据区段541和第二128字节经压缩数据区段542可以仍然存储在它们典型的区段边界210、212内,但是可以被偏移为使得第一高速缓存行520和第三高速缓存行522包括未使用的数据599。换句话说,由于128字节偏移,可能已不需要计算设备来获取针对这些高速缓存行520、523的任何数据。
还参考图500的第四行540,与第三源数据区段200c(即,‘C’)相对应的第三128字节经压缩数据区段544可以由计算设备没有偏移地放置在第五高速缓存行524内。与第四源数据区段206a(即,‘D’)相对应的64字节经压缩数据区段546可以由计算设备以负64字节偏移来放置在第六高速缓存行525的一半内。以此方式,第三128字节经压缩数据区段544和64字节经压缩数据区段546可以仍然被偏移为使得第七高速缓存行526和第八高速缓存行527包括未使用的数据599。然而,由于64字节经压缩数据区段546没有完全填充第六高速缓存行525,因此第六高速缓存行525的一半可以填充有过取数据590。
图500的第五行550示出了对由计算设备以4:3压缩比来压缩的192字节数据区段的偏移放置。具体而言,与第一源数据区段200a(即,‘A’)相对应的第一192字节经压缩数据区段551可以由计算设备以128字节偏移来放置在第二高速缓存行521、以及第三高速缓存行522的一半内。与第二源数据区段202a(即,‘B’)相对应的第二192字节经压缩数据区段552可以由计算设备以64字节偏移来放置在第三高速缓存行522的一半、以及第四高速缓存行523内。以此方式,第一二192字节经压缩数据区段551和第二192字节经压缩数据区段552可以被偏移为共享第三高速缓存行522,从而使得第一高速缓存行520能够包括未使用的数据599。换句话说,由于192字节偏移,可能已不需要计算设备来获取针对第一高速缓存行520的任何数据。
还参考图500的第五行550,与第三源数据区段200c(即,‘C’)相对应的64字节经压缩数据区段554可以由计算设备以128字节偏移来放置在第六高速缓存行525的一半内。与第四源数据区段206a(即,‘D’)相对应的256字节经压缩数据区段556可以由计算设备以负64字节偏移来放置在第六高速缓存行525的一半、整个第七高速缓存行526、以及第八高速缓存行527的一半内。以此方式,第五高速缓存行524可以包括未使用的数据599。然而,过取数据591可以在第八高速缓存行527的一半内。
图500的第六行560示出了对由计算设备以4:4压缩比来压缩的256字节数据区段的偏移放置。具体而言,与第一源数据区段200a(即,‘A’)相对应的第一256字节经压缩数据区段561可以由计算设备以64字节偏移来放置在第一高速缓存行520的一半、整个第二高速缓存行521、以及第三高速缓存行522的一半内。与第二源数据区段202a(即,‘B’)相对应的第二256字节经压缩数据区段562a可以由计算设备以64字节偏移来放置在第三高速缓存行522的一半、以及整个第四高速缓存行523内。然而,计算设备可以被配置为将第二256字节经压缩数据区段562a存储在两个单独的部分中。因此,第二256字节经压缩数据区段562a的剩余部分562b(图5中被称为“B–Rem”)可以由计算设备放置在第一高速缓存行520的前一半内。与第三源数据区段204a(即,‘C’)相对应的第三经压缩数据区段564a可以由计算设备没有偏移地放置在第五高速缓存行524、以及第六高速缓存行525的一半内。类似于第二经压缩数据区段502a,第三经压缩数据区段564a可以分离成两个部分以便避免跨过交织。因此,第三经压缩数据区段564a的剩余部分564b可以放置在第八高速缓存行527的一半中。与第四源数据区段206a(即,‘D’)相对应的64字节经压缩数据区段566可以由计算设备以负64字节偏移来放置在第六高速缓存行525的一半内。然而,过取数据592可以在第八高速缓存行527的一半内。
图6是示出了适合用于一些方面中的、包括与压缩比和基地址奇偶校验值相对应的基本偏移的数据表的图。如上面参考图5所描述的,实现方面压实技术的计算设备可以使用特定的经压缩数据区段的压缩比信息610和基地址奇偶校验信息602来对数据表600执行查找,以标识应当用于在高速缓存内放置(或访问)该数据区段的基本偏移的大小。在一些方面中,数据表600可以是存储在计算设备的存储器内的二维(2D)数组。
该数据表600可以类似于上面参考图3所描述的数据表300,不同之处在于图6的基地址奇偶校验信息602可以是对数据区段的基地址的位8和位9的值的指示(例如,对于两个位的0或1)。换句话说,对数据表600执行的查找可能需要两个位的值和压缩比以便计算设备标识基本偏移值以应用于数据区段的基地址(例如,物理地址)。数据表600与图3中所描述的数据表300之间的另一不同在于,数据表600可以存储针对某些压缩比(例如,4:4压缩比)的一个以上基本偏移值以及与数据区段地址(例如,物理地址)相关联的两个位的值。具体而言,当需要将区段分离成两个事务以避免跨国页边界或交织时,数据表600可以包括针对第一事务的第一基本偏移值以及针对第二事务的第二基本偏移值。在这些情况下,数据表600可以指示与每个基本偏移值相关联的每个事务的大小。在一些方面中,计算设备可以使用位的其它组合来执行查找,其中这种组合可以基于对所存储数据的散列。
例如,响应于针对以4:1压缩比来压缩的并且具有对于其位9具有0值且对于其位8具有0值的基地址的数据区段来对数据表600执行查找,计算设备可以标识256字节基本偏移。响应于针对以4:1压缩比来压缩的并且具有对于其位9具有0值且对于其位8具有1值的基地址的数据区段来对数据表600执行查找,计算设备可以标识64字节基本偏移。响应于针对以4:1压缩比来压缩的并且具有对于其位9具有1值且对于其位8具有0值的基地址的数据区段来对数据表600执行查找,计算设备可以标识128字节基本偏移。响应于针对以4:1压缩比来压缩的并且具有对于其位9具有1值且对于其位8具有1值的基地址的数据区段来对数据表600执行查找,计算设备可以标识负64字节基本偏移。
举另一个示例,响应于针对以4:2压缩比来压缩的并且具有对于其位9具有0值且对于其位8具有0值的基地址的数据区段来对数据表600执行查找,计算设备可以标识128字节基本偏移。响应于针对以4:2压缩比来压缩的并且具有对于其位9具有0值且对于其位8具有1值的基地址的数据区段来对数据表600执行查找,计算设备可以标识128字节基本偏移。响应于针对以4:2压缩比来压缩的并且具有对于其位9具有1值且对于其位8具有0值的基地址的数据区段来对数据表600执行查找,计算设备可以标识0字节基本偏移(即,没有基本偏移)。响应于针对以4:2压缩比来压缩的并且具有对于其位9具有1值且对于其位8具有1值的基地址的数据区段来对数据表600执行查找,计算设备可以标识0字节基本偏移(即,没有基本偏移)。
举另一个示例,响应于针对以4:3压缩比来压缩的并且具有对于其位9具有0值且对于其位8具有0值的基地址的数据区段来对数据表600执行查找,计算设备可以标识128字节基本偏移。响应于针对以4:3压缩比来压缩的并且具有对于其位9具有0值且对于其位8具有1值的基地址的数据区段来对数据表600执行查找,计算设备可以标识64字节基本偏移。响应于针对以4:3压缩比来压缩的并且具有对于其位9具有1值且对于其位8具有0值的基地址的数据区段来对数据表600执行查找,计算设备可以标识0字节基本偏移(即,没有基本偏移)。响应于针对以4:3压缩比来压缩的并且具有对于其位9具有1值且对于其位8具有1值的基地址的数据区段来对数据表600执行查找,计算设备可以标识负64字节基本偏移。
举另一个示例,响应于针对以4:4压缩比来压缩的并且具有对于其位9具有0值且对于其位8具有0值的基地址的数据区段来对数据表600执行查找,计算设备可以标识64字节基本偏移。响应于针对以4:4压缩比来压缩的并且具有对于其位9具有0值且对于其位8具有1值的基地址的数据区段来对数据表600执行查找,计算设备可以标识针对大小是64字节的第一事务的负256字节基本偏移以及针对大小是192字节的第二事务的64字节基本偏移。响应于针对以4:4压缩比来压缩的并且具有对于其位9具有1值且对于其位8具有0值的基地址的数据区段来对数据表600执行查找,计算设备可以标识针对大小是192字节的第一事务的0字节基本偏移以及针对大小是64字节的第二事务的448字节基本偏移。响应于针对以4:4压缩比来压缩的并且具有对于其位9具有1值且对于其位8具有1值的基地址的数据区段来对数据表600执行查找,计算设备可以标识负64字节基本偏移。
图7A示出了根据另一方面高速缓存行压实技术的、可以由计算设备执行以便标识用于经压缩数据区段在高速缓存内的偏移放置的新地址的函数的示例性伪代码700。例如,计算设备可以被配置有如下面所描述的指令以便如上面图5中所示出的来放置数据区段。图7A的伪代码700类似于上面所描述的图4A的伪代码400,不同之处在于伪代码700可以包括用于使得计算设备在执行查找操作以标识基本偏移时利用基地址(例如,物理地址)的两个位(即,位8和位9)的指令,并且还可以被配置为潜在地返回两个偏移地址。取决于基地址是物理地址还是虚拟地址,这种偏移地址可以是偏移物理地址或偏移虚拟地址。由伪代码700示出的函数可以由计算设备例如在执行压缩例程(例如,对数据集的压缩例程)期间或之后,作为应用、固件、应用编程接口(API)、例程和/或操作的一部分来执行。应当意识到,提供该伪代码700是出于一般说明的目的,并且因此并非旨在表示可操作的任何特定的编程语言、结构或格式化。
伪代码700(图7A中被称为“伪代码B”)可以表示被称为“getNewAddress_bit8-9()”的函数,该函数可能需要与特定的数据区段相关的Base_Address输入参数和Compression_Ratio输入参数。在一些方面中,Base_Address可以是物理地址的二进制表示。函数的操作内容可以包括用于计算设备对Base_Address输入参数执行第一右移运算以便将数据区段的基地址的位8移动到最右位以用于存储在Shift变量中的指令。该移位还可以将Base_Address的位9移动到Shift变量中的第二最右位。函数可以包括用于对经移位地址(即,Shift变量)和针对两个最右位的‘1’值(例如,“…011”)执行按位与运算(或图7A中的‘&’)的指令,该运算可以生成存储在Parity变量中的值。换句话说,按位与运算可以将经移位地址(即,Shift变量)中的任何其它位归零,以使得经移位地址可以用作为用于执行查找的奇偶校验值。
由伪代码700示出的函数还可以包括用于计算设备使用Compression_Ratio输入参数和所计算的Parity变量来对预定义的表执行查找操作的指令,例如参考图5所描述的。然而,由于存在可能需要从表查找返回一个以上基本偏移值的两种可能情况,因此函数可以包括评估Compression_Ratio是否等于4:4或者Parity变量的值是否指示位9和位8相同(即,“…00”或“…11”)。如果计算设备确定Compression_Ratio等于4:4或者Parity变量的值指示位9和位8相同(即,“…00”或“…11”),则计算设备可以使用Compression_Ratio和Parity来执行查找操作,以取回单个偏移值以用于存储在Offset变量中。该单个偏移值可以与Base_Address组合并返回以用于偏移放置。
然而,如果计算设备确定Compression_Ratio等于4:4并且Parity变量的值指示位9和位8不同(即,“…01”或“…10”),则计算设备可以使用Compression_Ratio和Parity来执行查找操作,以取回两个偏移值以用于存储在Offset[]数组变量中。两个偏移值中的每个偏移值可以单独与Base_Address组合,以生成针对数据区段的两个事务的新地址。在各个方面中,可以返回两个事务的大小以及偏移值。在一些方面中,可以利用另外的调用或函数来单独地计算和/或返回针对这些事务的大小和偏移值。
在一些方面中,计算设备可以被配置有简化的逻辑、电路、软件指令和/或例程来生成新地址而不是利用表查找,如利用伪代码700所指示的。
图7B-图7C示出了可以用于对图7A中所描述的伪代码700的函数的调用中的示例性伪代码和值。应当意识到,图7B-图7C中的示例性值是出于说明的目的,并非旨在限制各方面的范围。
图7B示出了可以由计算设备执行以调用如上面图7A中所描述的用于确定数据区段的新偏移地址的示例性函数的示例性伪代码750。示例性伪代码750可以包括用于设置Base_Address和Compression_Ratio变量的值的指令,其中Base_Address和Compression_Ratio变量可以用作为对getNewAddress_bit8-9()函数的调用的输入参数。例如,Base_Address可以被设置为数据区段的物理地址(例如,“…100000000”),其中物理地址包括至少九位。举另一个示例,Compression_Ratio变量可以被设置为指示计算设备已使用压缩算法来压缩数据区段的压缩等级(或压缩比)的值(例如,4:4)。伪代码750可以包括使用这些输入参数和值对函数getNewAddress_bit8-9()的调用,并且可以使得计算设备能够将来自函数的返回值存储在new_address变量中,例如实现了在高速缓存行中的偏移放置的数据区段的新物理地址。
图7C示出了示例性伪代码760,该伪代码760类似于图7A的伪代码700但是还包括用于基于上面图7B中所描述的输入参数值的各个指令的示例性值。换句话说,伪代码760是图7A的示例性伪代码700的功能等效方案,其具有对作为示例性函数getNewAddress_bit8-9()的一部分来执行的计算的示例性值的增加的指示。
例如,在图7C中,函数可以利用具有“…100000000”值的Base_Address输入参数以及具有“4:4”值的Compression_Ratio输入参数。响应于对Base_Address输入参数执行右移运算,计算设备可以生成“…000000010”的值以便将数据区段的基地址(例如,物理地址)的位8移动到最右位以用于存储在Shift变量中。函数可以包括用于对Shift变量和“…11”值执行按位与运算的指令,该运算可以生成存储在Parity变量中的值。例如,当Shift变量具有“…000000010”的值时,按位与运算可以产生“…000000010”的Parity变量值。
由于示例性Compression_Ratio是“4:4”并且示例性Parity变量值不等于“…00”或“…11”,因此计算设备可能不执行从查找表取回单个基本偏移值的操作。相反,计算设备可以执行用于执行返回两个基本偏移值的查找的指令。具体而言,利用“…000000010”的示例性Parity变量值和Compression_Ratio的“4:4”的示例性值,对图6中所描述的预定义的表的查找操作的结果可以返回0字节的第一基本偏移值和448字节的第二基本偏移值。在一些方面中,查找的结果还可以包括与基本偏移值相关联的事务的大小。函数随后可以返回针对数据区段的两个事务的两个新基本偏移地址,第一地址是0字节和Base_Address的组合(例如,“…100000000”+0字节),并且第二地址是448字节和Base_Address的组合(例如,“…100000000”+448字节)。
图8A示出了用于计算设备压实高速缓存的高速缓存行内的数据的方面方法800。方法800可以由计算设备作为例程、应用、函数或可以结合或响应于计算设备执行常规压缩算法而发生的其它操作来执行。例如,响应于压缩数据区段,计算设备可以执行方法800的操作以便偏移地放置经压缩数据区段以使得数据区段在高速缓存行上重叠。虽然下面的描述可以指代可放置在偏移地址(例如,偏移物理地址)中的单个数据区段,但应当意识到,计算设备可以被配置为执行方法800以便例如在环路中放置多个数据区段。此外,应当意识到,计算设备可以执行方法800的操作以将任何可变长度的数据(经压缩的或未经压缩的)放置到各种类型的存储器单元或高速缓存单元中。在一些方面中,计算设备可以被配置为执行方法800的操作以放置由另一设备压缩的数据区段。
在框802中,计算设备的处理器可以标识针对数据区段的基地址(例如,基物理地址或基虚拟地址)。如上面所描述的,该基地址可以是数据区段通常所关联的高速缓存行或高速缓存地址。例如,基地址可以是数据区段(或源数据区段)在未经压缩状态中时存储在其中的第一高速缓存行的地址。基地址可以是数据区段的初始起始地址,但是其可能不指示可能要求存储数据区段的高速缓存行(或高速缓存空间)的数量。在一些方面中,基地址可以是存储器中所请求的块的起始地址,其可以由高速缓存中所分配的行表示,但是通常可以不由高速缓存中所分配的行表示,因为高速缓存可以针对经压缩版本进行分配。
在框804中,计算设备的处理器可以标识针对数据区段的数据大小(例如,基于压缩比)。例如,所标识的数据大小可以基于数据区段的压缩比,如通过计算设备对另一数据缓冲器执行读操作以获得压缩比所标识的。在各个方面中,取决于计算设备被配置为使用的压缩算法的类型,可能存在针对数据区段的多个可用压缩比。例如,当计算设备被配置为使用压缩算法时,可以以4:1压缩比、4:2压缩比(或2:1压缩比)、4:3压缩比、和/或4:4压缩比(或1:1压缩比)来压缩数据区段。所标识的针对数据区段的数据大小可以基于使得数据区段的大小最大可能减小(或最大压缩)的压缩比。在各个方面中,所标识的数据大小(或压缩大小)可以针对不同类型的数据、数据结构和/或上下文而不同。例如,计算设备可以标识针对第一数据类型的第一数据区段的第一压缩比的第一数据大小,而标识针对第二数据类型的第二数据区段的第二压缩比的第二数据大小。
在框806中,计算设备的处理器可以基于数据区段的所标识的数据大小和基地址来获得基本偏移。基本偏移可以是某一数量的字节,例如64字节、128字节、192字节和/或256字节。在一些方面中,基本偏移可以是负数的字节,例如负64字节。在一些方面中,基本偏移的大小可以是计算设备中高速缓存的高速缓存行的一半的大小的倍数。在一些方面中,计算设备可以对数据表执行查找并取回基本偏移值,如上面参考图3或图6所描述的。在一些方面中,计算设备可以利用等式、例程、电路和/或软件模块来确定基本偏移。图8B示出了用于获得基本偏移的特定方面操作。
在框808中,计算设备的处理器可以通过利用所获得的基本偏移对基地址进行偏移来计算偏移地址。例如,计算设备可以将所获得的基本偏移(例如,某一数量的字节)与基地址进行组合以获得新地址(例如,新物理地址),该新地址出现在高速缓存中的基地址之前或之后。当所获得的基本偏移是正值时,该计算可以得到比基地址大的偏移地址,并且当所获得的基本偏移是负值时,得到比基地址小的偏移地址。在可选框810中,计算设备的处理器可以在所计算的偏移地址处存储数据区段。换句话说,所计算的偏移地址可以用于填充高速缓存。例如,计算设备可以从存储器(例如,DDR)读取数据区段并将数据区段加载到以偏移地址开始的一个或多个高速缓存行内。在一些方面中,计算设备可以从经压缩的存储器读取数据区段作为经压缩数据区段。在可选框812中,计算设备的处理器可以在所计算的偏移地址处读取数据区段。换句话说,所计算的偏移地址可以用于取回或找到先前存储在高速缓存行内的数据区段。例如,计算设备可以使用所计算的偏移地址从高速缓存取回数据区段以用于应用的操作等等。此外,可选框812中操作的读取可以具有指定的大小,例如上面所确定的数据大小。在可选框813中,计算设备的处理器可以对所读取的数据区段进行解压缩。在一些方面中,经解压缩的数据区段可以存储在本地,例如存储在其相关联的基地址内。
在一些方面中,数据区段可以不在高速缓存中,并且可能需要从存储器获取并插入到高速缓存中。在一些方面中,可能不存在高速缓存,并且预取可以通过各种方面技术来受益。
图8B示出了用于计算设备压实高速缓存的高速缓存行内的数据的方面方法850。方法850的操作类似于上面参考图8A所描述的方法800的操作,不同之处在于方法850可以包括用于在偏移值的预定义的数据表中执行查找操作的操作。例如,计算设备可以被配置为使用关于基地址和压缩比的信息以从数据表取回偏移值,如上面参考图3和图6所描述的。
框802-804、808-812中的操作可以与上面参考图8A所描述的相同。在框852中,计算设备的处理器可以基于基地址来标识针对数据区段的奇偶校验值。在一些方面中,计算设备可以评估基地址中的位8以标识奇偶校验值,该奇偶校验值指示位8是偶数值(即,0)还是奇数值(即,1)。图2-图4C中示出了该奇偶校验值的使用。在一些方面中,为了标识奇偶校验值,计算设备可以对基地址的二进制表示执行右移运算以使位8成为最右位,并对“…001”二进制值和右移运算的二进制结果应用按位与运算以标识奇偶校验值。在一些方面中,计算设备可以评估基地址的位9和位8以标识这两个位是否与可以用作为数据表或2D数组中的索引的预定义组合(例如,“00”、“01”、“10”、“11”)相匹配。图5-图7C中示出了该奇偶校验值的使用。在一些方面中,为了标识奇偶校验值,计算设备可以对基地址的二进制表示执行右移运算以使位8成为最右位,并对“…011”二进制值和右移运算的二进制结果应用按位与运算以标识奇偶校验值(例如,将右移运算的二进制结果中的所有值归零,基地址的二进制表示的8位和9位除外)。
在框854中,计算设备的处理器可以通过使用所标识的数据大小(例如,基于所标识的压缩比的大小)和所标识的奇偶校验值对所存储的表执行查找,来获得基本偏移。例如,计算设备可以使用所标识的压缩比(例如,4:1等等)和奇偶校验值的表示或代码作为数据表或2D数组的索引,如图3和图6中所示出的。在一些方面中,所获得的偏移可以包括针对第一事务的第一偏移以及针对第二事务的第二偏移,如上面所描述的。例如,为了避免允许偏移的数据区段跨过交织或页边界,数据区段可以分离成两个事务,这两个事务与从基地址的第一偏移(例如,0字节)和第二偏移(例如,448字节)相关联。计算设备可以继续框808中的操作来计算偏移地址。在一些方面中,当所获得的基本偏移包括两个偏移时,计算设备可以计算两个偏移地址以用于将分离的区段放置到高速缓存中。
图8C示出了用于计算设备压实高速缓存的高速缓存行内的数据的方面方法870。方法870的操作类似于上面参考图8A所描述的方法800的操作,不同之处在于方法870可以包括用于预取下一数据区段的操作。框802-804、808-812中的操作可以与上面参考图8A所描述的相同。
在判定框872中,计算设备的处理器可以确定下一数据区段(或第二数据区段)是否具有与利用框812中的操作来读取的数据区段(或第一数据区段)相连续的正确压缩比。例如,当计算设备被配置为以较大读取请求大小来执行可选预取时,计算设备可以取回或读取与数据区段(针对该数据区段执行框802-808的操作以在高速缓存内调整大小和标识)紧邻的下一数据块(或经压缩数据块)。这种确定可以基于被配置为确定与所读取的数据区段紧邻的数据块是否具有与所读取的数据区段相连续的正确压缩等级的逻辑测试例程或电路。换句话说,计算设备可以确定下一数据区段是否被压缩为某一大小以使得对数据区段的读取也可以包括下一数据区段。响应于确定下一数据区段具有相连续的正确压缩比(即,判定框872=“是”),计算设备的处理器可以在框874中利用对另一数据区段的读取来预取下一数据区段。响应于确定下一数据区段不具有相连续的正确压缩比(即,判定框872=“否”),计算设备的处理器可以结束方法870。
图9示出了用于计算设备响应于压缩数据区段而压实高速缓存的高速缓存行内的数据的方面方法900。方法900的操作类似于上面参考图8A所描述的方法800的操作,不同之处在于方法900可以包括用于计算设备还例如通过在将数据区段存储在偏移地址中之前执行压缩算法来压缩数据区段的操作。
框802、808-808中的操作可以与上面参考图8A所描述的相同。在框901中,计算设备的处理器可以标识针对数据区段的压缩比,例如可以压缩数据区段的最优压缩比(例如,4:1、4:2、4:3、4:4等等)。框901中的操作可以与上面参考图8的框804所描述的那些操作类似。在框902中,计算设备的处理器可以例如通过从高速缓存读取数据区段,在基地址处读取数据区段作为未经压缩数据。在框904中,计算设备的处理器可以以所标识的压缩比来压缩数据区段。例如,基于可用于数据区段的最大所标识的压缩比(例如,4:1、4:2、4:3、4:4等等),计算设备可以执行压缩算法或例程以使得数据区段的大小减小。如上面所描述的,计算设备可以在框806中获得基本偏移并且在框808中计算偏移地址。在框906中,计算设备的处理器可以在所计算的偏移地址处存储经压缩数据区段。
各种形式的计算设备(例如,个人计算机、智能电话、膝上型计算机等等)可以用于实现各个方面。这种计算设备通常包括图10中所示出的组件,其中图10示出了示例性计算设备1000。在各个方面中,计算设备1000可以包括处理器1001,其中处理器1001耦合到触摸屏控制器1004和内部存储器1002。处理器1001可以是被指定用于通用或专用处理任务的一个或多个多核IC。内部存储器1002可以是易失性或非易失性存储器,并且可以是安全和/或加密存储器、或者不安全和/或未加密存储器、或者其任意组合。触摸屏控制器1004和处理器1001还可以耦合到触摸屏面板1012,例如电阻式感测触摸屏、电容式感测触摸屏、红外感测触摸屏等等。在一些方面中,计算设备1000可以具有一个或多个无线信号收发机1008(例如,Wi-Fi、RF无线电)以及用于发送和接收的天线1010,这些天线彼此耦合和/或耦合到处理器1001。收发机1008和天线1010可以与上面提到的电路一起使用以实现各种无线传输协议栈和接口。在一些方面中,计算设备1000可以包括蜂窝网络无线调制解调器芯片1016,其实现经由蜂窝网络的通信并且耦合到处理器。计算设备1000可以包括耦合到处理器1001的外围设备连接接口1018。外围设备连接接口1018可以单独地被配置为接受一种类型的连接,或者多个地被配置为接受各种类型的公共或专有的物理和通信连接,例如USB、FireWire、Thunderbolt或PCIe。外围设备连接接口1018还可以耦合到类似配置的外围设备连接端口(未示出)。计算设备1000还可以包括用于提供音频输出的扬声器1014。计算设备1000还可以包括由塑料、金属或各材料的组合来构造的壳体1020以用于包含本文所讨论的组件中的全部或一些组件。计算设备1000可以包括耦合到处理器1001的电源1022,例如一次性或可再充电电池。可再充电电池还可以耦合到外围设备连接端口以从计算设备1000外部的源接收充电电流。
处理器1001可以是能够由软件指令(例如,应用)配置为执行各种功能(包括上面所描述的各个方面的功能)的任何可编程微处理器、微计算机或多个处理器芯片。在各个设备中,可以提供多个处理器,例如一个处理器专用于无线通信功能,并且一个处理器专用于运行其它应用。通常,软件应用在被访问并加载到处理器1001之前可以存储在内部存储器1002中。处理器1001可以包括足以存储应用软件指令的内部存储器。在许多设备中,内部存储器可以是易失性或非易失性存储器(例如,闪存)或者二者的混合。出于本描述的目的,对存储器的一般引用指代可由处理器1001访问的存储器,包括内部存储器或者插入到各个设备中的可移除存储器以及处理器1001内的存储器。
提供前述方法描述和过程流图仅仅作为说明性示例,并非旨在要求或暗示必须用所给出的顺序来执行各个方面的步骤。如本领域技术人员将意识到的,可以用任何次序来执行前述方面中的步骤的次序。诸如“此后”、“然后”、“接下来”之类的词语并非旨在对步骤的次序进行限制;这些词语仅用于引导读者贯穿对方法的描述。此外,以单数形式对权利要求要素的任何引用,例如使用冠词“一”、“一个”或“所述”不应解释为将要素限制为单数。
结合本文公开的各方面所描述的各种说明性的逻辑框、模块、电路和算法步骤可以实现为电子硬件、计算机软件或者二者的组合。为了清楚地示出硬件和软件的这种可互换性,上面已经对各种说明性的组件、框、模块、电路和步骤围绕其功能进行了一般性描述。至于这种功能是实现为硬件还是软件,这取决于特定的应用和施加在整体系统上的设计约束。技术人员可以针对每个特定应用以不同的方式来实现所描述的功能,但是这种实现决策不应当解释为致使偏离本发明的范围。
利用被设计为执行本文所描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件或者其任意组合,可以实现或执行用于实现结合本文公开的各方面所描述的各种说明性的逻辑单元、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,但在替代方案中,该处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、与DSP内核结合的一个或多个微处理器,或者任何其它此种配置。替代地,可以由特定于给定功能的电路来执行一些步骤或方法。
在一个或多个示例性方面中,可以在硬件、软件、固件、或者其任意组合中实现所描述的功能。如果在软件中实现,则所述功能可以作为一个或多个指令或代码存储在非暂时性处理器可读、计算机可读、或服务器可读介质或者非暂时性处理器可读存储介质上或者通过其进行传输。本文所公开的方法或算法的步骤可以体现在处理器可执行软件模块或处理器可执行指令中,该处理器可执行软件模块或处理器可执行指令可以驻留在非暂时性计算机可读存储介质、非暂时性服务器可读存储介质和/或非暂时性处理器可读存储介质上。例如,此类指令可以是所存储的处理器可执行软件指令。有形的非暂时性计算机可读存储介质可以是可以由计算机存取的任何可用介质。通过举例而非限制性的方式,这种非暂时性计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备,或者可用于存储具有指令或数据结构形式的期望程序代码并且可以由计算机存取的任何其它介质。如本文所使用的,磁盘(disk)和光盘(disc)包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘利用激光来光学地复制数据。上面各项的组合也包括在非暂时性计算机可读介质的范围内。另外,方法或算法的操作可以作为代码和/或指令的一个或任意组合或集合驻留在可以被并入计算机程序产品中的有形的非暂时性处理器可读存储介质和/或计算机可读介质上。
提供对所公开方面的先前描述以使得本领域任何技术人员能够实施或使用本发明。对这些方面的各种修改对于本领域技术人员来说将是显而易见的,并且在不脱离本发明的精神或范围的情况下,本文所定义的一般原理可以应用于其它方面。因此,本发明并非旨在受限于本文所示出的方面,而是要被给予与所附权利要求书以及本文所公开的原理和新颖性特征相一致的最广范围。
Claims (62)
1.一种用于压实计算设备的高速缓存的高速缓存行内的数据的方法,包括:
由所述计算设备的处理器来标识针对第一数据区段的基地址;
由所述计算设备的所述处理器来标识针对所述第一数据区段的数据大小;
由所述计算设备基于所述第一数据区段的所标识的数据大小和所述基地址来获得基本偏移;以及
由所述计算设备通过利用所获得的基本偏移对所述基地址进行偏移来计算偏移地址,其中,所计算的偏移地址与第二数据区段相关联。
2.根据权利要求1所述的方法,其中,基于所述第一数据区段的所标识的数据大小和所述基地址来获得所述基本偏移是由所述计算设备的所述处理器执行软件或者耦合到所述计算设备的所述处理器的专用电路中的一者来执行的,并且
其中,通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址是由所述计算设备的所述处理器执行软件或者耦合到所述计算设备的所述处理器的所述专用电路中的一者来执行的。
3.根据权利要求1所述的方法,其中,所述基地址是物理地址或虚拟地址。
4.根据权利要求1所述的方法,其中,所标识的数据大小是基于与所述第一数据区段相关联的压缩比来标识的。
5.根据权利要求4所述的方法,其中,所述压缩比是以下各项中的一项:4:1压缩比、4:2压缩比、4:3压缩比或4:4压缩比。
6.根据权利要求1所述的方法,其中,由所述计算设备基于所标识的压缩比和所述第一数据区段的所述基地址来获得所述基本偏移包括:
由所述计算设备的所述处理器基于所述基地址来标识针对所述第一数据区段的奇偶校验值;以及
由所述计算设备的所述处理器使用所标识的压缩比和所标识的奇偶校验值来获得所述基本偏移。
7.根据权利要求6所述的方法,其中,使用所标识的压缩比和所标识的奇偶校验值来获得所述基本偏移包括:由所述计算设备的所述处理器通过使用所标识的压缩比和所标识的奇偶校验值对所存储的表执行查找来获得所述基本偏移。
8.根据权利要求6所述的方法,其中,所述奇偶校验值指示所述第一数据区段的所述基地址中的一位是奇数还是偶数。
9.根据权利要求6所述的方法,其中,所述奇偶校验值是基于所述第一数据区段的所述基地址中的两个位的。
10.根据权利要求1所述的方法,其中,由所述计算设备基于所述第一数据区段的所标识的数据大小和所述基地址来获得所述基本偏移包括:
由所述计算设备获得针对所述第一数据区段的第一基本偏移和第二基本偏移以及第一数据大小和第二数据大小;以及由所述计算设备通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址包括:由所述计算设备计算针对所述第一数据大小的第一偏移地址以及针对所述第二数据大小的第二偏移地址。
11.根据权利要求1所述的方法,还包括:由所述计算设备的所述处理器在所计算的偏移地址处存储所述第一数据区段。
12.根据权利要求11所述的方法,其中,由所述计算设备的所述处理器在所计算的偏移地址处存储所述第一数据区段包括:
由所述计算设备的所述处理器在所述基地址处读取所述第一数据区段作为未经压缩的数据;
由所述计算设备的所述处理器以所标识的数据大小来压缩所述第一数据区段;以及
由所述计算设备的所述处理器在所计算的偏移地址处存储所压缩的第一数据区段。
13.根据权利要求11所述的方法,其中,由所述计算设备通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址是在所述第一数据区段已被压缩之后完成的。
14.根据权利要求1所述的方法,还包括:由所述计算设备的所述处理器在所计算的偏移地址处读取所述第一数据区段。
15.根据权利要求14所述的方法,还包括:由所述计算设备来确定所述第二数据区段是否具有为了与所述第一数据区段相连续的正确压缩比,
其中,由所述计算设备的所述处理器在所计算的偏移地址处读取所述第一数据区段包括:响应于确定所述第二数据区段具有所述正确压缩比,由所述计算设备的所述处理器利用所述第一数据区段来预取所述第二数据区段。
16.根据权利要求14所述的方法,还包括:由所述计算设备的所述处理器对所读取的第一数据区段进行解压缩。
17.一种计算设备,包括:
用于标识针对第一数据区段的基地址的单元;
用于标识针对所述第一数据区段的数据大小的单元;
用于基于所述第一数据区段的所标识的数据大小和所述基地址来获得基本偏移的单元;以及
用于通过利用所获得的基本偏移对所述基地址进行偏移来计算偏移地址的单元,其中,所计算的偏移地址与第二数据区段相关联。
18.根据权利要求17所述的计算设备,其中,所述基地址是物理地址或虚拟地址。
19.根据权利要求17所述的计算设备,其中,所标识的数据大小是基于与所述第一数据区段相关联的压缩比来标识的。
20.根据权利要求19所述的计算设备,其中,所述压缩比是以下各项中的一项:4:1压缩比、4:2压缩比、4:3压缩比或4:4压缩比。
21.根据权利要求17所述的计算设备,其中,用于基于所标识的压缩比和所述第一数据区段的所述基地址来获得所述基本偏移的单元包括:
用于基于所述基地址来标识针对所述第一数据区段的奇偶校验值的单元;以及
用于使用所标识的压缩比和所标识的奇偶校验值来获得所述基本偏移的单元。
22.根据权利要求21所述的计算设备,其中,用于使用所标识的压缩比和所标识的奇偶校验值来获得所述基本偏移的单元包括:用于通过使用所标识的压缩比和所标识的奇偶校验值对所存储的表执行查找来获得所述基本偏移的单元。
23.根据权利要求21所述的计算设备,其中,所述奇偶校验值指示所述第一数据区段的所述基地址中的一位是奇数还是偶数。
24.根据权利要求21所述的计算设备,其中,所述奇偶校验值是基于所述第一数据区段的所述基地址中的两个位的。
25.根据权利要求17所述的计算设备,其中:
用于基于所述第一数据区段的所标识的数据大小和所述基地址来获得所述基本偏移的单元包括:用于获得针对所述第一数据区段的第一基本偏移和第二基本偏移以及第一数据大小和第二数据大小的单元;以及
用于通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址的单元包括:用于计算针对所述第一数据大小的第一偏移地址以及针对所述第二数据大小的第二偏移地址的单元。
26.根据权利要求17所述的计算设备,还包括:用于在所计算的偏移地址处存储所述第一数据区段的单元。
27.根据权利要求26所述的计算设备,其中,用于在所计算的偏移地址处存储所述第一数据区段的单元包括:
用于在所述基地址处读取所述第一数据区段作为未经压缩的数据的单元;
用于以所标识的数据大小来压缩所述第一数据区段的单元;以及
用于在所计算的偏移地址处存储所压缩的第一数据区段的单元。
28.根据权利要求26所述的计算设备,其中,用于通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址的单元包括:用于在所述第一数据区段已被压缩之后通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址的单元。
29.根据权利要求17所述的计算设备,还包括:用于在所计算的偏移地址处读取所述第一数据区段的单元。
30.根据权利要求29所述的计算设备,还包括:用于确定所述第二数据区段是否具有为了与所述第一数据区段相连续的正确压缩比的单元,
其中,用于在所计算的偏移地址处读取所述第一数据区段的单元包括:用于响应于确定所述第二数据区段具有所述正确压缩比,利用所述第一数据区段来预取所述第二数据区段的单元。
31.根据权利要求29所述的计算设备,还包括:用于对所读取的第一数据区段进行解压缩的单元。
32.一种计算设备,包括处理器,所述处理器被配置有用于执行包括以下的操作的处理器可执行指令:
标识针对第一数据区段的基地址;
标识针对所述第一数据区段的数据大小;
基于所述第一数据区段的所标识的数据大小和所述基地址来获得基本偏移;以及
通过利用所获得的基本偏移对所述基地址进行偏移来计算偏移地址,其中,所计算的偏移地址与第二数据区段相关联。
33.根据权利要求32所述的计算设备,还包括专用电路,所述专用电路耦合到所述处理器并且被配置为执行包括以下的操作:
基于所述第一数据区段的所标识的数据大小和所述基地址来获得所述基本偏移;以及
通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址。
34.根据权利要求32所述的计算设备,其中,所述基地址是物理地址或虚拟地址。
35.根据权利要求32所述的计算设备,其中,所标识的数据大小是由所述处理器基于与所述第一数据区段相关联的压缩比来标识的。
36.根据权利要求35所述的计算设备,其中,所述压缩比是以下各项中的一项:4:1压缩比、4:2压缩比、4:3压缩比或4:4压缩比。
37.根据权利要求32所述的计算设备,其中,所述处理器被配置有处理器可执行指令以执行操作,以使得基于所标识的压缩比和所述第一数据区段的所述基地址来获得所述基本偏移包括:
基于所述基地址来标识针对所述第一数据区段的奇偶校验值;以及
使用所标识的压缩比和所标识的奇偶校验值来获得所述基本偏移。
38.根据权利要求37所述的计算设备,其中,所述处理器被配置有处理器可执行指令以执行操作,以使得使用所标识的压缩比和所标识的奇偶校验值来获得所述基本偏移包括:通过使用所标识的压缩比和所标识的奇偶校验值对所存储的表执行查找来获得所述基本偏移。
39.根据权利要求37所述的计算设备,其中,所述奇偶校验值指示所述第一数据区段的所述基地址中的一位是奇数还是偶数。
40.根据权利要求37所述的计算设备,其中,所述奇偶校验值是基于所述第一数据区段的所述基地址中的两个位的。
41.根据权利要求32所述的计算设备,其中,所述处理器被配置有处理器可执行指令以执行操作以使得:
基于所述第一数据区段的所标识的数据大小和所述基地址来获得所述基本偏移包括:获得针对所述第一数据区段的第一基本偏移和第二基本偏移以及第一数据大小和第二数据大小;以及
通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址包括:计算针对所述第一数据大小的第一偏移地址以及针对所述第二数据大小的第二偏移地址。
42.根据权利要求32所述的计算设备,其中,所述处理器被配置有处理器可执行指令以执行还包括以下的操作:在所计算的偏移地址处存储所述第一数据区段。
43.根据权利要求42所述的计算设备,其中,所述处理器被配置有处理器可执行指令以执行操作,以使得在所计算的偏移地址处存储所述第一数据区段包括:
在所述基地址处读取所述第一数据区段作为未经压缩的数据;
以所标识的数据大小来压缩所述第一数据区段;以及
在所计算的偏移地址处存储所压缩的第一数据区段。
44.根据权利要求42所述的计算设备,其中,所述处理器被配置有处理器可执行指令以执行操作,以使得通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址是在所述第一数据区段已被压缩之后完成的。
45.根据权利要求32所述的计算设备,其中,所述处理器被配置有处理器可执行指令以执行还包括以下的操作:在所计算的偏移地址处读取所述第一数据区段。
46.根据权利要求45所述的计算设备,其中,所述处理器被配置有处理器可执行指令以执行还包括以下的操作:确定所述第二数据区段是否具有为了与所述第一数据区段相连续的正确压缩比,
其中,在所计算的偏移地址处读取所述第一数据区段包括:响应于确定所述第二数据区段具有所述正确压缩比,利用所述第一数据区段来预取所述第二数据区段。
47.根据权利要求45所述的计算设备,其中,所述处理器被配置有处理器可执行指令以执行还包括以下的操作:对所读取的第一数据区段进行解压缩。
48.一种其上存储有处理器可执行指令的非暂时性处理器可读存储介质,所述处理器可执行指令被配置为使得计算设备的处理器执行包括以下的操作:
标识针对第一数据区段的基地址;
标识针对所述第一数据区段的数据大小;
基于所述第一数据区段的所标识的数据大小和所述基地址来获得基本偏移;以及
通过利用所获得的基本偏移对所述基地址进行偏移来计算偏移地址,其中,所计算的偏移地址与第二数据区段相关联。
49.根据权利要求48所述的非暂时性处理器可读存储介质,其中,所述基地址是物理地址或虚拟地址。
50.根据权利要求48所述的非暂时性处理器可读存储介质,其中,所标识的数据大小是由所述处理器基于与所述第一数据区段相关联的压缩比来标识的。
51.根据权利要求50所述的非暂时性处理器可读存储介质,其中,所述压缩比是以下各项中的一项:4:1压缩比、4:2压缩比、4:3压缩比或4:4压缩比。
52.根据权利要求48所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使得所述计算设备的所述处理器执行操作,以使得基于所标识的压缩比和所述第一数据区段的所述基地址来获得所述基本偏移包括:
基于所述基地址来标识针对所述第一数据区段的奇偶校验值;以及
使用所标识的压缩比和所标识的奇偶校验值来获得所述基本偏移。
53.根据权利要求52所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使得所述计算设备的所述处理器执行操作,以使得使用所标识的压缩比和所标识的奇偶校验值来获得所述基本偏移包括:通过使用所标识的压缩比和所标识的奇偶校验值对所存储的表执行查找来获得所述基本偏移。
54.根据权利要求52所述的非暂时性处理器可读存储介质,其中,所述奇偶校验值指示所述第一数据区段的所述基地址中的一位是奇数还是偶数。
55.根据权利要求52所述的非暂时性处理器可读存储介质,其中,所述奇偶校验值是基于所述第一数据区段的所述基地址中的两个位的。
56.根据权利要求48所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使得所述计算设备的所述处理器执行操作以使得:
基于所述第一数据区段的所标识的数据大小和所述基地址来获得所述基本偏移包括:获得针对所述第一数据区段的第一基本偏移和第二基本偏移以及第一数据大小和第二数据大小;以及
通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址包括:计算针对所述第一数据大小的第一偏移地址以及针对所述第二数据大小的第二偏移地址。
57.根据权利要求48所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使得所述计算设备的所述处理器执行还包括以下的操作:在所计算的偏移地址处存储所述第一数据区段。
58.根据权利要求57所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使得所述计算设备的所述处理器执行操作,以使得在所计算的偏移地址处存储所述第一数据区段包括:
在所述基地址处读取所述第一数据区段作为未经压缩的数据;
以所标识的数据大小来压缩所述第一数据区段;以及
在所计算的偏移地址处存储所压缩的第一数据区段。
59.根据权利要求57所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使得所述计算设备的所述处理器执行操作,以使得通过利用所获得的基本偏移对所述基地址进行偏移来计算所述偏移地址是在所述第一数据区段已被压缩之后完成的。
60.根据权利要求48所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使得所述计算设备的所述处理器执行还包括以下的操作:在所计算的偏移地址处读取所述第一数据区段。
61.根据权利要求60所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使得所述计算设备的所述处理器执行还包括以下的操作:确定所述第二数据区段是否具有为了与所述第一数据区段相连续的正确压缩比,
其中,在所计算的偏移地址处读取所述第一数据区段包括:响应于确定所述第二数据区段具有所述正确压缩比,利用所述第一数据区段来预取所述第二数据区段。
62.根据权利要求60所述的非暂时性处理器可读存储介质,其中,所存储的处理器可执行指令被配置为使得所述计算设备的所述处理器执行还包括以下的操作:对所读取的第一数据区段进行解压缩。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/451,639 | 2014-08-05 | ||
US14/451,639 US9361228B2 (en) | 2014-08-05 | 2014-08-05 | Cache line compaction of compressed data segments |
PCT/US2015/039736 WO2016022247A1 (en) | 2014-08-05 | 2015-07-09 | Cache line compaction of compressed data segments |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106575263A true CN106575263A (zh) | 2017-04-19 |
Family
ID=53758529
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580041874.4A Pending CN106575263A (zh) | 2014-08-05 | 2015-07-09 | 经压缩数据区段的高速缓存行压实 |
Country Status (5)
Country | Link |
---|---|
US (2) | US9361228B2 (zh) |
EP (1) | EP3178005B1 (zh) |
JP (1) | JP6370988B2 (zh) |
CN (1) | CN106575263A (zh) |
WO (1) | WO2016022247A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111367831A (zh) * | 2020-03-26 | 2020-07-03 | 超验信息科技(长沙)有限公司 | 翻译页表的深度预取方法、部件、微处理器及计算机设备 |
CN112699063A (zh) * | 2021-03-25 | 2021-04-23 | 轸谷科技(南京)有限公司 | 用于解决通用ai处理器存储带宽效率的动态缓存方法 |
CN114422499A (zh) * | 2021-12-27 | 2022-04-29 | 北京奇艺世纪科技有限公司 | 一种文件下载方法、系统及装置 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9361228B2 (en) | 2014-08-05 | 2016-06-07 | Qualcomm Incorporated | Cache line compaction of compressed data segments |
JP2016091242A (ja) * | 2014-10-31 | 2016-05-23 | 富士通株式会社 | キャッシュメモリ、キャッシュメモリへのアクセス方法及び制御プログラム |
US10025956B2 (en) * | 2015-12-18 | 2018-07-17 | Intel Corporation | Techniques to compress cryptographic metadata for memory encryption |
US9916245B2 (en) * | 2016-05-23 | 2018-03-13 | International Business Machines Corporation | Accessing partial cachelines in a data cache |
US10031834B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
US10042737B2 (en) | 2016-08-31 | 2018-08-07 | Microsoft Technology Licensing, Llc | Program tracing for time travel debugging and analysis |
US10031833B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
US10489273B2 (en) | 2016-10-20 | 2019-11-26 | Microsoft Technology Licensing, Llc | Reuse of a related thread's cache while recording a trace file of code execution |
US10310977B2 (en) | 2016-10-20 | 2019-06-04 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using a processor cache |
US10310963B2 (en) | 2016-10-20 | 2019-06-04 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using index bits in a processor cache |
US10324851B2 (en) | 2016-10-20 | 2019-06-18 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache |
US10540250B2 (en) | 2016-11-11 | 2020-01-21 | Microsoft Technology Licensing, Llc | Reducing storage requirements for storing memory addresses and values |
US10318332B2 (en) | 2017-04-01 | 2019-06-11 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
US10296442B2 (en) | 2017-06-29 | 2019-05-21 | Microsoft Technology Licensing, Llc | Distributed time-travel trace recording and replay |
US10459824B2 (en) | 2017-09-18 | 2019-10-29 | Microsoft Technology Licensing, Llc | Cache-based trace recording using cache coherence protocol data |
US10558572B2 (en) | 2018-01-16 | 2020-02-11 | Microsoft Technology Licensing, Llc | Decoupling trace data streams using cache coherence protocol data |
US11907091B2 (en) | 2018-02-16 | 2024-02-20 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches |
US10496537B2 (en) | 2018-02-23 | 2019-12-03 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache |
US10642737B2 (en) | 2018-02-23 | 2020-05-05 | Microsoft Technology Licensing, Llc | Logging cache influxes by request to a higher-level cache |
KR20200006379A (ko) * | 2018-07-10 | 2020-01-20 | 에스케이하이닉스 주식회사 | 컨트롤러 및 그것의 동작방법 |
US10942808B2 (en) * | 2018-12-17 | 2021-03-09 | International Business Machines Corporation | Adaptive data and parity placement using compression ratios of storage devices |
US10997085B2 (en) * | 2019-06-03 | 2021-05-04 | International Business Machines Corporation | Compression for flash translation layer |
US11601136B2 (en) | 2021-06-30 | 2023-03-07 | Bank Of America Corporation | System for electronic data compression by automated time-dependent compression algorithm |
US11567872B1 (en) * | 2021-07-08 | 2023-01-31 | Advanced Micro Devices, Inc. | Compression aware prefetch |
US11573899B1 (en) * | 2021-10-21 | 2023-02-07 | International Business Machines Corporation | Transparent interleaving of compressed cache lines |
US12014047B2 (en) * | 2022-08-24 | 2024-06-18 | Red Hat, Inc. | Stream based compressibility with auto-feedback |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030131184A1 (en) * | 2002-01-10 | 2003-07-10 | Wayne Kever | Apparatus and methods for cache line compression |
US20040073747A1 (en) * | 2002-10-10 | 2004-04-15 | Synology, Inc. | Method, system and apparatus for scanning newly added disk drives and automatically updating RAID configuration and rebuilding RAID data |
US20060184734A1 (en) * | 2005-02-11 | 2006-08-17 | International Business Machines Corporation | Method and apparatus for efficiently accessing both aligned and unaligned data from a memory |
CN102141905A (zh) * | 2010-01-29 | 2011-08-03 | 上海芯豪微电子有限公司 | 一种处理器体系结构 |
CN102541747A (zh) * | 2010-10-25 | 2012-07-04 | 马维尔国际贸易有限公司 | 存储器系统中的数据压缩和编码 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07129470A (ja) * | 1993-11-09 | 1995-05-19 | Hitachi Ltd | ディスク制御方法 |
JP3426385B2 (ja) * | 1995-03-09 | 2003-07-14 | 富士通株式会社 | ディスク制御装置 |
US6658552B1 (en) * | 1998-10-23 | 2003-12-02 | Micron Technology, Inc. | Processing system with separate general purpose execution unit and data string manipulation unit |
US7143238B2 (en) | 2003-09-30 | 2006-11-28 | Intel Corporation | Mechanism to compress data in a cache |
US7162584B2 (en) | 2003-12-29 | 2007-01-09 | Intel Corporation | Mechanism to include hints within compressed data |
US7162583B2 (en) | 2003-12-29 | 2007-01-09 | Intel Corporation | Mechanism to store reordered data with compression |
US7257693B2 (en) | 2004-01-15 | 2007-08-14 | Intel Corporation | Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system |
US8341380B2 (en) | 2009-09-22 | 2012-12-25 | Nvidia Corporation | Efficient memory translator with variable size cache line coverage |
US9361228B2 (en) | 2014-08-05 | 2016-06-07 | Qualcomm Incorporated | Cache line compaction of compressed data segments |
-
2014
- 2014-08-05 US US14/451,639 patent/US9361228B2/en not_active Expired - Fee Related
-
2015
- 2015-07-09 CN CN201580041874.4A patent/CN106575263A/zh active Pending
- 2015-07-09 JP JP2017505616A patent/JP6370988B2/ja not_active Expired - Fee Related
- 2015-07-09 EP EP15742447.4A patent/EP3178005B1/en not_active Not-in-force
- 2015-07-09 WO PCT/US2015/039736 patent/WO2016022247A1/en active Application Filing
-
2016
- 2016-03-22 US US15/077,534 patent/US10261910B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030131184A1 (en) * | 2002-01-10 | 2003-07-10 | Wayne Kever | Apparatus and methods for cache line compression |
US20040073747A1 (en) * | 2002-10-10 | 2004-04-15 | Synology, Inc. | Method, system and apparatus for scanning newly added disk drives and automatically updating RAID configuration and rebuilding RAID data |
US20060184734A1 (en) * | 2005-02-11 | 2006-08-17 | International Business Machines Corporation | Method and apparatus for efficiently accessing both aligned and unaligned data from a memory |
CN102141905A (zh) * | 2010-01-29 | 2011-08-03 | 上海芯豪微电子有限公司 | 一种处理器体系结构 |
CN102541747A (zh) * | 2010-10-25 | 2012-07-04 | 马维尔国际贸易有限公司 | 存储器系统中的数据压缩和编码 |
Non-Patent Citations (1)
Title |
---|
ALAMELDEEN A R ET AL: "Adaptive cache compression for high-performance processors", 《COMPUTER ARCHITECTURE, 2004. PROCEEDINGS. 31ST ANNUAL INTERNATIONAL SY MPOSIUM ON MUNCHEN》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111367831A (zh) * | 2020-03-26 | 2020-07-03 | 超验信息科技(长沙)有限公司 | 翻译页表的深度预取方法、部件、微处理器及计算机设备 |
CN111367831B (zh) * | 2020-03-26 | 2022-11-11 | 超睿科技(长沙)有限公司 | 翻译页表的深度预取方法、部件、微处理器及计算机设备 |
CN112699063A (zh) * | 2021-03-25 | 2021-04-23 | 轸谷科技(南京)有限公司 | 用于解决通用ai处理器存储带宽效率的动态缓存方法 |
CN112699063B (zh) * | 2021-03-25 | 2021-06-22 | 轸谷科技(南京)有限公司 | 用于解决通用ai处理器存储带宽效率的动态缓存方法 |
CN114422499A (zh) * | 2021-12-27 | 2022-04-29 | 北京奇艺世纪科技有限公司 | 一种文件下载方法、系统及装置 |
CN114422499B (zh) * | 2021-12-27 | 2023-12-05 | 北京奇艺世纪科技有限公司 | 一种文件下载方法、系统及装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2017529591A (ja) | 2017-10-05 |
US20160203084A1 (en) | 2016-07-14 |
US10261910B2 (en) | 2019-04-16 |
EP3178005A1 (en) | 2017-06-14 |
EP3178005B1 (en) | 2018-01-10 |
WO2016022247A1 (en) | 2016-02-11 |
US20160041905A1 (en) | 2016-02-11 |
US9361228B2 (en) | 2016-06-07 |
JP6370988B2 (ja) | 2018-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106575263A (zh) | 经压缩数据区段的高速缓存行压实 | |
CN106537327B (zh) | 快闪存储器压缩 | |
CN105874440B (zh) | 用于对存储器进行碎片整理的系统和方法 | |
TWI750243B (zh) | 非揮發性記憶體儲存裝置 | |
US20170177497A1 (en) | Compressed caching of a logical-to-physical address table for nand-type flash memory | |
US11010079B2 (en) | Concept for storing file system metadata within solid-stage storage devices | |
US20150019834A1 (en) | Memory hierarchy using page-based compression | |
CN107111551A (zh) | 用于高速缓存经压缩的数据背景的装置、系统和方法 | |
CN106663059B (zh) | 功率感知填充 | |
CN105373369A (zh) | 一种异步缓存方法、服务器及系统 | |
CN106575262B (zh) | 用于带宽压缩的补充写入缓存命令的方法和装置 | |
CN106687937B (zh) | 用于压缩算法的高速缓冲存储体扩展 | |
CN106610790A (zh) | 一种重复数据删除方法及装置 | |
US9477605B2 (en) | Memory hierarchy using row-based compression | |
TW201818255A (zh) | 可用於資料儲存裝置之垃圾蒐集方法 | |
CN109313609A (zh) | 用于奇数模存储器通道交织的系统和方法 | |
TWI614672B (zh) | 用於提供非二次方快閃記憶體胞映射的系統及方法 | |
CN113535708A (zh) | 一种数据重删方法、系统、存储介质及设备 | |
CN107078746B (zh) | 用于执行对压缩页面的解压缩的方法、计算设备和非临时性处理器可读介质 | |
US11079955B2 (en) | Concept for approximate deduplication in storage and memory | |
CN110309081A (zh) | 基于压缩存储和地址映射表项的ftl读写数据页的方法 | |
CN110235110A (zh) | 当停顿的写入操作发生时减少或避免来自压缩存储器系统中的未压缩高速缓冲存储器的经逐出高速缓冲存储数据的缓冲 | |
CN107111560A (zh) | 用于在非统一存储器架构中提供改进的延迟的系统和方法 | |
US20210200679A1 (en) | System and method for mixed tile-aware and tile-unaware traffic through a tile-based address aperture | |
KR20190049098A (ko) | 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170419 |