CN100538664C - 存储带压缩的重排序数据的系统、方法和装置 - Google Patents
存储带压缩的重排序数据的系统、方法和装置 Download PDFInfo
- Publication number
- CN100538664C CN100538664C CNB2004800391283A CN200480039128A CN100538664C CN 100538664 C CN100538664 C CN 100538664C CN B2004800391283 A CNB2004800391283 A CN B2004800391283A CN 200480039128 A CN200480039128 A CN 200480039128A CN 100538664 C CN100538664 C CN 100538664C
- Authority
- CN
- China
- Prior art keywords
- data line
- word
- cache
- line
- compression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/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
按照一个实施例,公开一种计算机系统。所述计算机系统包括:中央处理单元(CPU);耦合到CPU的高速缓存存储器;以及耦合到高速缓存存储器的高速缓存控制器。高速缓存存储器包括多个可压缩的高速缓存行以便存储额外的数据。高速缓存控制器在每次访问高速缓存行之后,把高速缓存行压缩为压缩的高速缓存行之前,将高速缓存行重排序。
Description
技术领域
本发明涉及计算机系统;更具体地说,本发明涉及中央处理单元(CPU)的高速缓存。
背景技术
目前,使用不同的方法来压缩计算机系统主存储器,诸如随机访问存储器(RAM)中的内容。这些方法减少了提供相同的性能所需要的物理存储空间的数量。例如,若存储器利用2:1的比率压缩,则存储器可以以相同的成本存储两倍数量的数据,或以一半的成本存储相同数量的数据。
一种这样的方法是美国Armonk,New York的国际商业机器(IBM)公司开发的存储器膨胀技术(MXT)。MXT寻址系统存储器价格与把安装的主存储器的有效容量加大一倍的存储系统体系结构的价格一样。逻辑密集的压缩器和解压器硬件引擎在数据在所述共享高速缓存和所述主存储器之间移动的同时提供对数据进行压缩和解压的手段。压缩器尽所述算法之所能把数据块编码成紧凑的结果。
但是,目前还没有对存储在高速缓存的数据进行压缩的方法。具备压缩的高速缓存数据的能力将会得到与主存储器压缩类似的优点(例如,缩小提供相同的性能所需要的高速缓存空间的大小)。
发明内容
根据本发明的第一方面,提供了一种计算机系统,它包括:中央处理单元(CPU);高速缓存存储器,它耦合到所述CPU并具有用来存储额外数据的多个可压缩的高速缓存行;以及高速缓存控制器,它耦合到所述高速缓存存储器,用于在每次访问所述高速缓存行之后,把所述高速缓存行压缩为压缩的高速缓存行之前,预测所述高速缓存行中下次要被访问的字,并把所述预测的字放在所述高速缓存行的起点。
根据本发明的第二方面,在上述的计算机系统中,所述重排序方案包括把所述高速缓存行的最后被访问的字移动至所述高速缓存行的前端,而同时维持所述高速缓存行余下部分的行排序。
根据本发明的第三方面,在上述的计算机系统中,所述重排序方案包括回转所述高速缓存行,使得所述最后被访问的字定位在所述高速缓存行中第二字的位置上。
根据本发明的第四方面,在上述的计算机系统中,所述重排序方案基于所述高速缓存行中最近使用的字次序。
根据本发明的第五方面,上述计算机系统还包括耦合到所述CPU的存储器控制器,所述存储器控制器包括:压缩逻辑,用于把一个或多个数据行压缩为压缩的数据行;解压逻辑,用于对所述压缩的数据行进行解压;以及重排序逻辑,用于在每一次访问数据行之后,把所述数据行压缩为压缩的数据行之前,将所述数据行重排序。优选地,在上述系统中还可包括:耦合到所述存储器控制器的总线,用于发送和接收所述压缩的数据行;以及耦合到所述总线的主存储器。
根据本发明的第六方面,提供了一种方法,该方法包括:访问第一数据行;预测所述数据行中下次要被访问的第一字;把所述第一字置于所述数据行的起点;以及压缩所述第一数据行,以便形成压缩的数据行。
根据本发明的第七方面,在上述的方法中,把所述第一字置于所述数据行的起点的包括回转所述数据行,使得所述数据行最后访问的字处于所述数据行的前端,而同时维持所述数据行余下部分的行顺序。
根据本发明的第八方面,在上述的方法中,把所述第一字置于所述数据行的起点的所述步骤包括回转所述数据行,使得最后被访问的字定位在所述数据行的第二字的位置。
根据本发明的第九方面,提供了一种设备,它包括:压缩逻辑,用于把一个或多个数据行压缩为压缩的数据行;以及重排序逻辑,用于在每一次访问数据行之后,把所述数据行压缩为压缩的数据行之前,预测所述数据行中下一个被访问的字,并把所述预测的字放置在所述数据行的起点。
根据本发明的第十方面,提供了一种计算机系统,它包括:中央处理单元(CPU);耦合到所述CPU的存储器控制器,所述存储器控制器包括:压缩逻辑,用于把多个数据行中的一个或多个数据行压缩为压缩的数据行;以及重排序逻辑,用于在每一次访问数据行之后,把所述数据行压缩为压缩的数据行之前,预测所述数据行中下一个被访问的字,并把所述预测的字放置在所述数据行的起点;以及耦合到所述存储器控制器的主存储器。
根据本发明的第十一个方面,提供了一种包括控制集线器/开关的计算机系统,该控制集线器/开关具有:压缩逻辑,用于把一个或多个数据行压缩为压缩的数据行;以及重排序逻辑,用于在每一次访问数据行之后,把所述数据行压缩为压缩的数据行之前,预测所述数据行中下一个被访问的字,并把所述预测的字放置在所述数据行的起点。
根据本发明的第十二个方面,提供了一种包括总线控制器的计算机系统,所述总线控制器具有:压缩逻辑,用于把一个或多个数据行压缩为压缩的数据行;以及重排序逻辑,用于在每一次访问数据行之后,把所述数据行压缩为压缩的数据行之前,预测所述数据行中下一个被访问的字,并把所述预测的字放置在所述数据行的起点。
根据本发明的第十三个方面,提供了一种设备,它包括:数据转换逻辑,用于把一个或多个数据块变换为压缩的数据块;以及重排序逻辑,用于在每一次访问所述块之后,在把所述数据块压缩为压缩的数据块之前,预测所述数据块中下一个要被访问的字,并把所述预测的字放置在所述块的起点。
附图说明
从在下面给出详细说明和本发明不同实施例的附图将会更充分理解本发明。但是,不应把附图看作是把本发明限于这些具体的实施例,它们仅仅是为了进行说明和理解而提供的。
图1图解说明计算机系统的一个实施例;
图2图解说明物理高速缓存组织的一个实施例;
图3图解说明逻辑高速缓存组织的一个实施例;
图4A图解说明在不压缩的高速缓存中实现的示范性存储器地址;
图4B图解说明在压缩的高速缓存中实现的存储器地址的一个实施例;
图5图解说明用于压缩的高速缓存的标记阵列项的一个实施例;
图6是图解说明高速缓存控制器的一个实施例的方框图;
图7图解说明压缩的高速缓存中组和路选择机制的一个实施例;
图8图解说明标记比较逻辑的一个实施例;
图9图解说明用于压缩的高速缓存的标记阵列的另一个实施例;
图10图解说明标记比较逻辑的另一个实施例;
图11图解说明字节选择逻辑的一个实施例;
图12图解说明不回转的高速缓存行的一个实施例;
图13图解说明回转的高速缓存行的一个实施例;以及
图14图解说明回转的高速缓存行的另一个实施例。
具体实施方式
描述用于在高速缓存中压缩数据的机制。在以下描述中,提出许多细节。但对于本专业技术人员来说,显然可以在没有这些具体细节的情况下实施本发明。在其他实例中,众所周知的结构和装置以方框图的形式表示而不详细说明,以免使本发明模糊不清。
在本说明书中,说到"一个实施例"或"实施例"是指结合所述实施例描述的特定特征、结构和特性被包括在本发明的至少一个实施例中。词组"在一个实施例中"在本说明书不同的位置上出现不一定全都指同一实施例。
图1是计算机系统100的一个实施例的方框图。计算机系统100包括耦合到总线105的中央处理单元(CPU)102。在一个实施例中,CPU102是可从美国Santa Clara加里福尼亚Intel公司购得的处理器家族中的处理器,包括 II处理器家族、 III处理器和 IV处理器。作为另一方案,可以使用其它CPU。
芯片组107也耦合到总线105。芯片组107包括存储器控制集线器(MCH)110。MCH 110可以包括耦合到主系统存储器115的存储器控制器112。系统主存储器115存储数据和用数据信号表示的指令和代码序列,所述指令和代码序列可以由CPU 102或包括在系统100的任何其它装置执行。
在一个实施例中,系统主存储器115包括动态随机访问存储器(DRAM);但是,系统主存储器115可以利用其它存储器类型实现。附加的装置也可以耦合到总线105,诸如多CPU和/或多系统存储器。
在一个实施例中,MCH 110通过集线器接口耦合到输入/输出控制集线器(ICH)140。ICH 140向计算机系统100内的输入/输出(I/O)装置提供接口。例如,ICH 140可以耦合到外围组件互联总线,所述外围组件互联总线依附于Portland,Oregon的PCI专门兴趣组(PCISpecial Interest group)开发的规格说明修订版2.1总线。
压缩的高速缓存
按照一个实施例,高速缓存存储器103驻留在处理器102内,并存储也存储在存储器115中的数据信号。高速缓存103利用其访问局部性来加速处理器103对存储器的访问。在另一个实施例中,高速缓存103驻留在处理器103以外。
按照另一个实施例,高速缓存103包括压缩的高速缓存行,使在相同的区域大小内能够存储额外的数据。图2图解说明高速缓存103的物理组织的一个实施例。在一个实施例中,高速缓存103是一个512组,4路组相关高速缓存。但是,本专业的普通技术人员将会认识到,在不脱离本发明真实范围的情况下,可以实现其它大小的高速缓存。
标记与一组的每一行相联系。另外,压缩位与每一个标记相联系。压缩位表示各自的高速缓存行是否保存压缩数据。当压缩位置位时,高速缓存行的物理存储器保存两个压缩的相伴行。相伴行是其地址差别仅在相伴位的两行(例如,以行对齐方式对齐两个相继出现的存储器行)。
在一个实施例中,选择相伴位,使得相伴行是相邻行。但是,任何位都可以选定为相伴位。在其他实施例中,有可能利用对高速缓存行状态进行编码的其它位(诸如MESI状态位)来将压缩指示编码,因而,完全省去了这种空间系统开销。
当压缩位没有置位时,高速缓存行的物理存储器保存不压缩的一行。在图2中,带阴影的压缩位图解说明压缩的高速缓存行。图3图解说明高速缓存103的逻辑组织的一个实施例。如图3所示,高速缓存行按照2:1压缩方案压缩。例如,压缩组0的第二行,因而,存储两个高速缓存行而不是一个高速缓存行。
在一个实施例中,当不压缩时,每一个高速缓存行保存64字节的数据。因而,每一个高速缓存行压缩时保存128字节。所描述的压缩方案的作用是每一个高速缓存标记映射到可变长度的逻辑高速缓存行。其结果是,高速缓存103可以存储两倍数据数量,而不必增大物理尺寸。
回头再看看图1,高速缓存控制器104耦合到高速缓存103,管理高速缓存103的操作。具体地说,高速缓存控制器104执行高速缓存103的查表操作。按照一个实施例,用来把地址映射到物理的组和路的散列函数是从用于典型的高速缓存控制器的散列函数修改而来的。在一个实施例中,这样创立散列函数,使得相伴行映射至相同的组。因而,可以把相伴行一起压缩到使用一个地址标记的单一行(例如,路)中。
图4A图解说明在一个不压缩的高速缓存中实现的示范性存储器地址。在传统的高速缓存中,地址是按照标记、组和偏移量分量划分的。组分量用来选择具有多行的各组中的一个。类似地,偏移量分量是所述地址的低有效位,用来选择一行内的字节
图4B图解说明为在压缩的高速缓存中查表而实现的存储器地址的实施例。图4B表示用来把相伴行映射到同一组中的实现方案。相伴位用于其中行不被压缩的实例中。因此,若行不被压缩,则相伴位表示要使用两个压缩的相伴行中的哪一行。
在一个实施例中,用来进行组选择的地址位窗口左移一位,使得所述相伴位处于组选择和字节偏移量位之间。这样,相伴行映射到相同的高速缓存组,因为相伴位和组选择位不重叠。现在不再是组选择位的一部分的相伴位变成标记的一部分,尽管实际的标记尺寸不增大。在传统的不压缩的高速缓存中,相伴位是地址的一部分,并在组选择中用来确定地址是散列到奇数高速缓存组或偶数高速缓存组。
图5图解说明用于压缩的高速缓存的标记阵列项的一个实施例。标记阵列项包括相伴位(例如,作为地址标记位的一部分)和压缩位。压缩位使压缩的高速缓存103的标记比传统的不压缩的高速缓存标记多一位。压缩位表示一行是否压缩。
具体地说,压缩位指定如何处理相伴位。若压缩位表示一行是压缩的,则相伴位作为偏移量的一部分处理,因为该行是压缩对。若压缩位表示无压缩,则认为相伴位是标记阵列的一部分,并作为偏移量的一部分被忽略。
图6是图解说明高速缓存控制器104的一个实施例的方框图。高速缓存控制器104包括组和路选择逻辑610、字节选择逻辑620和压缩逻辑630。组和路选择逻辑610用来选择高速缓存103内的高速缓存行。图7图解说明压缩的高速缓存内组和路选择逻辑610的一个实施例。
参见图7,组和路选择逻辑610包括标记比较逻辑710,标记比较逻辑710从标记阵列接收输入以便根据接收到的地址选择高速缓存行。标记比较逻辑710考虑高速缓存行是否保存压缩数据。因为高速缓存行保存可变的数据尺寸,所以标记比较逻辑710也是长度可变的,取决于特定的行是否压缩。因此,标记匹配计及压缩位。
图8图解说明标记比较逻辑710的一个实施例,包括”异或非”(XNOR)门1-n、”或”(OR)门和”与”(AND)门。XNOR门和AND门被包括在传统的不压缩的高速缓存中并用来把地址与标记阵列中的标记项比较直到找到匹配为止。OR门用来根据一行的压缩状态选择相伴位。
选择性地忽略地址的相伴位,取决于压缩位是否置位。正如上面讨论的,若压缩位被置位,则地址的相伴位在标记匹配过程中被忽略,因为高速缓存行包含两个相伴行。若压缩位没有置位,则把地址的相伴位与标记的相伴位相比较。
因此,相等运算符的"XNOR的乘积"创立过程使用OR门来选择性地忽略相伴位。在一个实施例中,因为在压缩位被置位时标记的相伴位被忽略(例如,它是"不用管的"),标记的相伴位可以用于其他用途。例如,当行被压缩时,所述位可以用作压缩格式位,用来在两个不同的压缩算法之间选择。在另一个示例中,相伴位可以用来将各压缩行中相伴行的排序编码。
在其他实施例中,每一个高速缓存行被分隔为两个段,只是当所述段同时被压缩时才把它们存储在相同的物理的高速缓存行中。在标记项中,相伴位和压缩位变为段存在指示,正如在图9图解说明的。在所述实施例中,相伴位是段标识符(例如,上或下)和因而,已经将其重新标记为段ID。
因此,"01"表示下段(不压缩),"10"表示上段(不压缩),而"11"表示两个段都是(2:1压缩)。另外,在这种配置中物理的高速缓存行尺寸与逻辑段尺寸相同。不压缩时,一行的每一个段都存储在同一组内不同的物理行中(例如,同一组不同的路)。
当可压缩到至少2:1时,每一行的两段都存储在单一的物理高速缓存行中(例如,一路)。指出以下一点很重要:与传统的分段高速缓存设计的不同在于,当不压缩时,给定的逻辑行的不同逻辑段可以同时存储在不同的路中。
在一个实施例中,自由编码("00")用来表示无效项,若与将MESI状态编码的其它位结合,则潜在地减少了标记位的代价。因为这仅仅是一种替代的编码,所述段存在位需要略微不同的逻辑来检测标记匹配。图10图解说明实现段存在编码的标记比较逻辑610的另一个实施例。
回头再看看图6,字节选择逻辑620选择所寻址的一行内的数据。按照一个实施例,字节选择逻辑620取决于压缩位。图11图解说明字节选择逻辑620的一个实施例。字节选择逻辑620包括解压器1110,必要时用来解压选定的高速缓存行。输入多路复用器根据所述压缩位在解压高速缓存行和不压缩的高速缓存行之间选择。
在一个实施例中,偏移量的范围取决于行是否压缩。若行是压缩的,则地址的相伴位用作偏移量的高位。若行不压缩,则解压器1110被旁路,而地址的相伴位不用于偏移量。所述选定的行被保存在其尺寸是物理行尺寸的两倍的缓冲区中,以适应压缩数据。
替代的实施例可以选择来使用所述相伴位来选择所述解压字的哪一半,存入其长度与物理行尺寸相同的缓冲区。但是,缓冲所述整行对写入所述高速缓存之后修改和重新压缩数据是方便的。
回头再看看图6,压缩逻辑630用来压缩高速缓存行。在一个实施例中,高速缓存行按照Lempel-Ziv压缩算法压缩。但是,在其他实施例中,可以用其它压缩算法(例如,WK,X-Match,符号位压缩、运行长度压缩等)来压缩高速缓存行。
压缩逻辑630还可以用来确定何时一行将被压缩。按照一个实施例,酌情(opportunistic)压缩用来确定何时一行将被压缩。在酌情压缩中,当高速缓存未命中时,从存储器115取出所需的高速缓存行,若它的相伴行驻留在所述高速缓存中,则高速缓存103尝试把两个相伴行都压缩为一行。若所述相伴行不驻留高速缓存103中,或若所述两个相伴行不可以2:1压缩,则高速缓存103使用它的标准替代算法来为所取出的行腾出空间。
否则,高速缓存103重新使用驻留相伴行的高速缓存行来存储新压缩的一对相伴行,因而,避免替代。注意,很容易改变标记匹配算子来检查所述相伴行是否驻留,而不进行第二次高速缓存访问。例如,若全部地址标记位,除相伴位外都匹配,则所述相伴行驻留。
另一方面,预取机制用来确定一些行是否被压缩。在所述预取压缩机制中,通过添加预取来细化酌情方法。若请求取出行的相伴行不驻留,则高速缓存预取所述相伴行并尝试把两个相伴行压缩为一行。
若两个相伴行不可以2:1压缩,则高速缓存103选择或者放弃所述预取行(因而,浪费总线频带宽度),或者把不压缩预取行存储在高速缓存中(因而,潜在地导致在所述组中总共要代替两行)。在一个实施例中,硬件可以根据程序呈现多少空间位置和容许时延而自适应地在这些策略之间切换等待时间。
在另一个实施例中,受害(victim)压缩机制用来确定这些行是否要被压缩。对于受害压缩,试图压缩准备要逐出(例如,受害行)的一行。若一个受害行并未已经压缩,而它的相伴行驻留,则高速缓存103给所述受害行一个机会来通过试图把它与它的相伴行压缩仍旧驻留在所述高速缓存。若所述受害行已经压缩,它的相伴行不驻留,或所述受害行和它的相伴行不能以2:1压缩,则逐出所述受害行。否则,高速缓存103重新使用驻留相伴行的高速缓存行来存入压缩了的一对相伴行,因而,避免被逐出。
当写入数据时,行的可压缩性可能改变。写入一对压缩了的相伴行可能导致所述对不再是可压缩的。若压缩的高速缓存行变得不可压缩,则可以采取3个方法。第一个方法将是简单地逐出另一行来为膨胀造成的额外的行腾出空间。若所述组中所有行都是压缩的,则这可能引起两个相伴行被逐出。
第二个方法是逐出已写入行的相伴行。第三个方法是逐出已写入行。这些方法的选择部分地取决于压缩的高速缓存103和下一个最靠近处理器的高速缓存之间的交互作用(例如,若L3是压缩的高速缓存,则它取决于L3和L2之间的交互作用)。
假定所述压缩的高速缓存是相容的L3高速缓存,而且L2是回写高速缓存,则前两个方法包括L2高速缓存中逐出行的作废,以便维持多层次蕴含,这有逐出L2或L1中最近访问过的高速缓存行的风险。第三个方法不要求L2作废,没有从L2逐出最近访问的高速缓存行的风险,因为所述正在写入的行被从L2逐出。
上面描述的机制允许任何两个高速缓存行映射到同一组,而且差别只在于它们的相伴位要一起压缩到高速缓存行中。在一个实施例中,所述机制改变组映射功能并选择相伴位,以便允许利用空间位置将相邻的存储器行一起压缩。
将用于压缩的高速缓存行重排序
上面描述的高速缓存压缩机制是一种有效的技术,用以减少高速缓存中的空间-时间资源需求。但是,无论何时实现串行算法来压缩高速缓存行数据时,访问高速缓存行时往往招致等待时间增大,因为这些行必须在访问之前解压。例如,诸如Lempel-Ziv和Wilson-Kaplan等压缩算法预先排除了对压缩数据的随机访问。因而,在压缩的高速缓存行中的数据只能被串行访问。
图12图解说明在高速缓存行处读出偏移量的一个实施例。在对高速缓存行的第一读访问中,将访问高速缓存行中双字(dword)(32位字)3。但是,在访问第三个双字之前,双字0-3必须被解压。在后续的读访问中,将访问双字4。在所述实例中,在访问双字4之前必须将双字0-4解压。若一个方案每个时钟周期解压一个双字,则访问第四双字的时间将耗费4个周期。每次要访问一个双字,就需要解压四个或更多的双字是效率不高的,而且造成处理时间的浪费。
按照一个实施例,为了减少访问等待时间,在每次访问之后压缩之前将高速缓存行重排序。例如,重排序方案预测在下一次访问一行时将要访问哪个字(例如,关键字),而且把所述预测的字放置在所述块的起点,以便把它的访问等待时间减到最小。
尽管这里描述的实施例强调高速缓存压缩系统,但是本专业的普通技术人员将会认识到,所描述的机制可以延伸到总线交易或存储器块内字的重排序。这样的系统的示例包括大块转移方案(它需要按照块顺序的多个总线交易)以及用于存储系统的串行化压缩方案(其中不是关键块首先输送数据)。在这样的系统中,对该次访问的关键字的访问时间也大致与所述数据块中关键字的位置成正比。
本专业的普通技术人员将会认识到,所描述的机制还可以适用于其它数据变换系统。这样的数据变换系统的一个实施例包括收集分散操作,所述收集分散操作把稀疏存储器位置组合/拆开为紧密地组合的存储器位置、寄存器或高速缓存行。在这样一个实施例中,大数据块可能只有几个字是实际上读出的。一种最佳化过程使"收集"操作成为可能,所述"收集"操作仅仅从这大数据块的少数几个重要的字中读出(并组合到高速缓存行中),以便不污染所述高速缓存或浪费频带宽度。某些专用存储器系统(例如,附在网络上的存储器用的主机总线适配器)利用这种转换。把数据写回存储器并把数据分散至所述大块的过程称作"分散"操作。
在一个实施例中,所述重排序方案基于在每一个高速缓存行中下一个访问的字是可预测的前提。这里有两个强烈的直觉。第一,对于顺序访问,下一个访问的字将是紧接着最后访问的字的下一个字。其次,对于非顺序访问,所访问的特定的程序级数据结构实例仍旧是在所述高速缓存行内固定的偏移量。因而,对所述数据结构实例的访问将很可能表现为所述高速缓存行内相同的访问偏移量。
所述重排序方案允许不同的排列。在一个实施例中,实现了所述高速缓存行至任何双字或偏移量的回转。具体地说,在对所述行读访问时回转高速缓存行,使得访问的字或块移动至所述行的前端。图13图解说明实现所述回转方案的高速缓存行的一个实施例。在读出双字3时,回转所述行,使得双字3成为第一双字。在随后读出双字1时,回转所述行使得双字1是第一双字。
图14图解说明实现回转方案的高速缓存行的一个实施例。在所述实施例中,处理器在一行中读出双字3,后跟双字4。利用回转,对双字4的第二次访问具有所述行的偏移量1。其结果是,通过所述回转方案节约了3个周期。
在一个实施例中,以偏移量的形式把所述回转方案中的排列记录到所述行中。因而,对于64字节的行中的双字方式回转,对于所述偏移量,实现了每行4位。在其他实施例中,高速缓存行可以按块(例如,2个双字)回转。对于逐块回转,对于所述偏移量实现了每行3位。在压缩的高速缓存中,回转所述压缩的行,同时利用所述压缩行中的位将所述排列方案编码。
在一个实施例中,当压缩所述行时发生回转(例如,以关键块第一阶压缩所述行,其中它从也允许带有存储器转移的重叠压缩的存储器获得)。这个方案的优点是不需要附加的表来存储排列数据。
一种替换方案将要包括与标记阵列并排的排列索引阵列,以便记录所述排列。所述方案这优点是它不需要为重排序而压缩。对于总线或互联交易,发射机构指定所述通信方框中的排序。在其他实施例中,可以在写入交易或最初读出到所述高速缓存中时发生回转。
另一种重排序排列包括把最后访问的双字移动到前端,而同时维持所述行余下的顺序。在另一个实施例中,回转所述高速缓存行,使得所访问的最后的双字放置在所述行中的第二双字的位置。在又一个实施例中,涉及压缩行对,其中最后访问的行移动到所述压缩对的前端。在其他实施例中,高速缓存行的特征可以是根据最近使用的双字顺序的排列。
尽管在阅读上面的描述之后,本专业普通的技术人员无疑将明白对本发明的许多变化和修改,但是要明白,所述任何特定的实施例都是以图解说明的方式表示和描述的,而绝不想被看成是限制性的。因此,说到不同实施例的细节,不想限制权利要求书的范围,而它们本身只指出有关本发明的那些特征。
Claims (31)
1.一种计算机系统,它包括:
中央处理单元(CPU);
高速缓存存储器,它耦合到所述中央处理单元并具有用来存储额外数据的多个可压缩的高速缓存行;以及
高速缓存控制器,它耦合到所述高速缓存存储器,用于在每次访问所述高速缓存行之后,把所述高速缓存行压缩为压缩的高速缓存行之前,所述高速缓存控制器执行重排序方案来预测所述高速缓存行中下次要被访问的字,并把所述预测的字放在所述高速缓存行的起点。
2.如权利要求1所述的计算机系统,其中所述高速缓存行中预测的字具有相关联的偏移量。
3.如权利要求1所述的计算机系统,其中所述重排序方案包括回转所述高速缓存行,使得所述下次要被访问的字移动至所述高速缓存行的前端。
4.如权利要求3所述的计算机系统,其中在压缩时回转所述高速缓存行。
5.如权利要求3所述的计算机系统,其中存储索引阵列,以便记录所述高速缓存行在经过所述回转后的排列。
6.如权利要求1所述的计算机系统,其中所述重排序方案包括把所述高速缓存行的最后被访问的字移动至所述高速缓存行的前端,而同时维持所述高速缓存行余下部分的行排序。
7.如权利要求1所述的计算机系统,其中所述重排序方案包括回转所述高速缓存行,使得最后被访问的字定位在所述高速缓存行中第二字的位置上。
8.如权利要求1所述的计算机系统,其中所述重排序方案基于所述高速缓存行中最近使用的字次序。
9.如权利要求1所述的计算机系统,其中所述高速缓存控制器包括:
压缩逻辑,用于把一个或多个高速缓存行压缩为压缩的高速缓存行;以及
解压逻辑,用于对所述压缩的高速缓存行进行解压。
10.如权利要求1所述的计算机系统,其中还包括耦合到所述中央处理单元的存储器控制器,所述存储器控制器包括:
压缩逻辑,用于把一个或多个数据行压缩为压缩的数据行;
解压逻辑,用于对所述压缩的数据行进行解压;以及
重排序逻辑,用于在每一次访问数据行之后,把所述数据行压缩为压缩的数据行之前,将所述数据行重排序。
11.如权利要求10所述的计算机系统,其中还包括:
耦合到所述存储器控制器的总线,用于发送和接收所述压缩的数据行;以及
耦合到所述总线的主存储器。
12.一种方法,所述方法包括:
访问第一数据行;
预测所述数据行中下次要被访问的第一字;
把所述第一字置于所述数据行的起点;以及
压缩所述第一数据行,以便形成压缩的数据行。
13.如权利要求12所述的方法,其中还包括把偏移量存储到所述数据行中,指示把所述第一字放入所述数据行中什么位置。
14.如权利要求12所述的方法,其中把所述第一字置于所述数据行的起点的所述步骤包括回转所述数据行,使得所述第一字处于所述数据行的起点。
15.如权利要求14所述的方法,其中还包括存储索引阵列,以便记录所述数据行在经过所述回转后的排列。
16.如权利要求12所述的方法,其中把所述第一字置于所述数据行的起点的步骤包括回转所述数据行,使得所述数据行最后访问的字处于所述数据行的前端,而同时维持所述数据行余下部分的行顺序。
17.如权利要求12所述的方法,其中把所述第一字置于所述数据行的起点的所述步骤包括回转所述数据行,使得最后被访问的字定位在所述数据行的第二字的位置。
18.一种设备,它包括:
压缩逻辑,用于把一个或多个数据行压缩为压缩的数据行;以及
重排序逻辑,用于在每一次访问数据行之后,把所述数据行压缩为压缩的数据行之前,执行重排序方案来预测所述数据行中下一个被访问的字,并把所述预测的字放置在所述数据行的起点。
19.如权利要求18所述的设备,其中还包括解压逻辑,用于对所述压缩的数据行进行解压。
20.如权利要求18所述的设备,其中所述数据行中预测的字具有相关联的偏移量。
21.如权利要求18所述的设备,其中所述重排序方案包括回转所述数据行,使得所述下一个被访问的字移动至所述数据行的前端。
22.如权利要求21所述的设备,其中在压缩时回转所述数据行。
23.一种计算机系统,它包括:
中央处理单元(CPU);
耦合到所述中央处理单元的存储器控制器,所述存储器控制器包括:
压缩逻辑,用于把一个或多个数据行压缩为压缩的数据行;以及
重排序逻辑,用于在每一次访问数据行之后,把所述数据行压缩为压缩的数据行之前,预测所述数据行中下一个被访问的字,并把所述预测的字放置在所述数据行的起点;以及
耦合到所述存储器控制器的主存储器。
24.如权利要求23所述的计算机系统,其中所述存储器控制器还包括用于将所述压缩的数据行解压的解压逻辑。
25.如权利要求23所述的计算机系统,其中所述数据行中所述预测的字具有相关联的偏移量。
26.一种包括总线控制器的计算机系统,所述总线控制器具有:
压缩逻辑,用于把一个或多个数据行压缩为压缩的数据行;以及
重排序逻辑,用于在每一次访问数据行之后,把所述数据行压缩为压缩的数据行之前,预测所述数据行中下一个被访问的字,并把所述预测的字放置在所述数据行的起点。
27.如权利要求26所述的计算机系统,其中所述总线控制器还包括解压逻辑,用于将所述压缩的数据行解压。
28.一种设备,它包括:
数据转换逻辑,用于把一个或多个数据块变换为压缩的数据块;以及
重排序逻辑,用于在每一次访问所述块之后,在把所述数据块压缩为压缩的数据块之前,预测所述数据块中下一个要被访问的字,并把所述预测的字放置在所述块的起点。
29.如权利要求28所述的设备,其中还包括解压逻辑,用于将所述压缩的数据块解压。
30.如权利要求28所述的设备,其中所述块中预测的字具有相关联的偏移量。
31.如权利要求28所述的设备,其中所述数据转换逻辑执行收集/分散操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/747,470 | 2003-12-29 | ||
US10/747,470 US7162583B2 (en) | 2003-12-29 | 2003-12-29 | Mechanism to store reordered data with compression |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1902602A CN1902602A (zh) | 2007-01-24 |
CN100538664C true CN100538664C (zh) | 2009-09-09 |
Family
ID=34700747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004800391283A Expired - Fee Related CN100538664C (zh) | 2003-12-29 | 2004-12-21 | 存储带压缩的重排序数据的系统、方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7162583B2 (zh) |
JP (1) | JP2007519100A (zh) |
CN (1) | CN100538664C (zh) |
WO (1) | WO2005066797A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11199984B2 (en) | 2019-12-31 | 2021-12-14 | Kunlunxin Technology (Beijing) Company Limited | Data writing method and apparatus, and electronic device |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
JP3989472B2 (ja) * | 2004-07-30 | 2007-10-10 | シャープ株式会社 | 画像データ処理回路およびそれを備えてなる画像処理装置 |
US8271748B2 (en) * | 2008-08-12 | 2012-09-18 | Intel Corporation | Generating and/or receiving, at least one data access request |
US10196662B2 (en) | 2012-08-10 | 2019-02-05 | Mello Biotechnology, Inc. | Composition for producing microRNA precursors as drugs for enhancing wound healing and production method of the microRNA precursors |
US20140258636A1 (en) * | 2013-03-07 | 2014-09-11 | Qualcomm Incorporated | Critical-word-first ordering of cache memory fills to accelerate cache memory accesses, and related processor-based systems and methods |
WO2015142341A1 (en) | 2014-03-20 | 2015-09-24 | Hewleet-Packard Development Company, L. P. | Dynamic memory expansion by data compression |
US9361228B2 (en) | 2014-08-05 | 2016-06-07 | Qualcomm Incorporated | Cache line compaction of compressed data segments |
CN104166630B (zh) * | 2014-08-06 | 2017-06-20 | 哈尔滨工程大学 | 一种面向内容中心网络中基于预测的最优化缓存放置方法 |
CN107925418B (zh) * | 2015-05-21 | 2021-06-01 | 零点科技公司 | 用于混合式数据压缩和解压缩的方法、设备和系统 |
US9904635B2 (en) * | 2015-08-27 | 2018-02-27 | Samsung Electronics Co., Ltd. | High performance transaction-based memory systems |
FR3041796B1 (fr) * | 2015-09-24 | 2017-10-20 | Stmicroelectronics Rousset | Stockage et lecture d'un code d'authentification de message dans une memoire externe |
US10061644B2 (en) * | 2015-11-02 | 2018-08-28 | Qualcomm Incorporated | Systems and methods for implementing error correcting code in a memory |
US10120581B2 (en) * | 2016-03-30 | 2018-11-06 | Qualcomm Incorporated | Generating compressed data streams with lookback pre-fetch instructions for pre-fetching decompressed data from a lookback buffer |
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 |
US10067706B2 (en) | 2016-03-31 | 2018-09-04 | Qualcomm Incorporated | Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system |
US10176090B2 (en) | 2016-09-15 | 2019-01-08 | Qualcomm Incorporated | Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5389922A (en) * | 1993-04-13 | 1995-02-14 | Hewlett-Packard Company | Compression using small dictionaries with applications to network packets |
US6075470A (en) * | 1998-02-26 | 2000-06-13 | Research In Motion Limited | Block-wise adaptive statistical data compressor |
US6324621B2 (en) * | 1998-06-10 | 2001-11-27 | International Business Machines Corporation | Data caching with a partially compressed cache |
US6678805B1 (en) * | 2000-05-25 | 2004-01-13 | Microsoft Corporation | Structure organization for improved cache performance |
US6735673B2 (en) * | 2002-01-10 | 2004-05-11 | Hewlett-Packard Development Company, L.P. | Apparatus and methods for cache line compression |
US6640283B2 (en) * | 2002-01-16 | 2003-10-28 | Hewlett-Packard Development Company, L.P. | Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size |
US6847315B2 (en) * | 2003-04-17 | 2005-01-25 | International Business Machines Corporation | Nonuniform compression span |
TWI220959B (en) * | 2003-06-05 | 2004-09-11 | Carry Computer Eng Co Ltd | Storage device with optimized compression management mechanism |
TWI227409B (en) * | 2003-06-05 | 2005-02-01 | Carry Computer Eng Co Ltd | Storage device capable of enhancing transmission speed |
US7188227B2 (en) * | 2003-09-30 | 2007-03-06 | International Business Machines Corporation | Adaptive memory compression |
US7243204B2 (en) * | 2003-11-25 | 2007-07-10 | International Business Machines Corporation | Reducing bus width by data compaction |
US7636810B2 (en) * | 2003-11-26 | 2009-12-22 | Intel Corporation | Method, system, and apparatus for memory compression with flexible in-memory cache |
-
2003
- 2003-12-29 US US10/747,470 patent/US7162583B2/en not_active Expired - Fee Related
-
2004
- 2004-12-21 JP JP2006547349A patent/JP2007519100A/ja active Pending
- 2004-12-21 WO PCT/US2004/043233 patent/WO2005066797A1/en active Application Filing
- 2004-12-21 CN CNB2004800391283A patent/CN100538664C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11199984B2 (en) | 2019-12-31 | 2021-12-14 | Kunlunxin Technology (Beijing) Company Limited | Data writing method and apparatus, and electronic device |
Also Published As
Publication number | Publication date |
---|---|
CN1902602A (zh) | 2007-01-24 |
JP2007519100A (ja) | 2007-07-12 |
US20050144386A1 (en) | 2005-06-30 |
US7162583B2 (en) | 2007-01-09 |
WO2005066797A1 (en) | 2005-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7162584B2 (en) | Mechanism to include hints within compressed data | |
CN100538664C (zh) | 存储带压缩的重排序数据的系统、方法和装置 | |
US7143238B2 (en) | Mechanism to compress data in a cache | |
US7243191B2 (en) | Compressing data in a cache memory | |
US10067881B2 (en) | Compression and caching for logical-to-physical storage address mapping tables | |
Chen et al. | C-pack: A high-performance microprocessor cache compression algorithm | |
US6961821B2 (en) | Reconfigurable cache controller for nonuniform memory access computer systems | |
Pekhimenko et al. | Base-delta-immediate compression: Practical data compression for on-chip caches | |
US6795897B2 (en) | Selective memory controller access path for directory caching | |
CN1317644C (zh) | 简化了缓存替换策略的实现的多线程缓存方法和装置 | |
US6640283B2 (en) | Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size | |
CN1659526A (zh) | 具有基于线程标识符的缓存清除的多线程缓存方法和装置 | |
US8086802B2 (en) | Instruction cache system, instruction-cache-system control method, and information processing apparatus | |
KR20000052480A (ko) | 캐시 프로세스용 시스템 및 방법 | |
CN113039530A (zh) | 压缩式存储系统的空闲空间管理 | |
CN113015966A (zh) | 压缩式计算机存储器访问 | |
Lee et al. | An on-chip cache compression technique to reduce decompression overhead and design complexity | |
Benveniste et al. | Cache-memory interfaces in compressed memory systems | |
US6587923B1 (en) | Dual line size cache directory | |
US10140211B2 (en) | Cache device and method for storing tag data and cache data in cache device | |
US20050071566A1 (en) | Mechanism to increase data compression in a cache | |
US20040015660A1 (en) | Cache configuration for compressed memory systems | |
Keramidas et al. | Dynamic dictionary-based data compression for level-1 caches | |
Park et al. | Anticipatory I/O management for clustered flash translation layer in NAND flash memory | |
EP1913479B1 (en) | Cache architecture for a processing unit providing reduced power consumption in cache operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090909 Termination date: 20121221 |