CN100432959C - 压缩高速缓存内数据的机制 - Google Patents

压缩高速缓存内数据的机制 Download PDF

Info

Publication number
CN100432959C
CN100432959C CNB2004800271756A CN200480027175A CN100432959C CN 100432959 C CN100432959 C CN 100432959C CN B2004800271756 A CNB2004800271756 A CN B2004800271756A CN 200480027175 A CN200480027175 A CN 200480027175A CN 100432959 C CN100432959 C CN 100432959C
Authority
CN
China
Prior art keywords
cache
compressed
cache line
companion
line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2004800271756A
Other languages
English (en)
Other versions
CN1853170A (zh
Inventor
A·-R·艾德尔-塔巴塔拜
A·古鲁姆
R·胡佳哈利
C·纽波恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1853170A publication Critical patent/CN1853170A/zh
Application granted granted Critical
Publication of CN100432959C publication Critical patent/CN100432959C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

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的比率压缩存储器,则该存储器就能以相同的成本存储两倍的数据量,或以一半的成本存储相同的数据量。
其中的一种方法是由位于New York,Armonk的International BusinessMachines(IBM)所开发的存储器扩展技术(MXT)。MXT地址系统存储器在存储器系统体系结构上的花费使得安装的主存储器有效容量翻倍。逻辑加强的压缩器和解压缩器硬件引擎提供了当数据在共享高速缓存和主存储器之间传送时能够同时压缩和解压缩该数据的装置。压缩器在算法允许的情况下将数据块编码压缩。
尽管如此,压缩存储在高速缓存内数据的方法却尚未出现。具有压缩高速缓存数据的能力可导致与主存储器压缩类似的优点(例如降低了提供相同性能所需的高速缓存空间的量)。
发明内容
本发明旨在解决上述问题。
根据本发明的一种计算机系统,包括:中央处理单元CPU;以及高速缓存存储器,它耦合至所述CPU并具有存储额外数据的多个可压缩高速缓存行;以及执行所述高速缓存存储器的查找操作的高速缓存控制器,所述高速缓存控制器具有对应于多个高速缓存行中每一行的标志条目的阵列,每个标志条目包括:对应于一高速缓存行地址的地址标志位;指示一对应的高速缓存行是否被压缩的一个或多个压缩编码位;以及指示哪些同伴行存储在公共高速缓存组内的一个或多个同伴编码位,其中如果所述压缩编码位指示所述高速缓存行被压缩,就把所述同伴编码位作为偏移的一部分来处理,并且如果所述压缩编码位指示所述高速缓存行未被压缩,就认为所述同伴编码位是所述地址标志位的一个成分。
根据本发明的一种高速缓存控制器,包括:在一高速缓存存储器设备中压缩行的压缩逻辑;以及对应于多个高速缓存行中每一行的标志条目的阵列,每个标志条目包括:对应于一高速缓存行地址的地址标志位;指示一对应的高速缓存行是否被压缩的一个或多个压缩编码位;以及指示哪些同伴行是存储在公共高速缓存组内的一个或多个同伴编码位,其中如果所述压缩编码位指示所述高速缓存行被压缩,就把所述同伴编码位作为偏移的一部分处理并且如果所述压缩编码位指示所述高速缓存行未被压缩,就认为所述同伴编码位是所述地址标志位的一个成分。
根据本发明的一种方法,包括:分析在标志阵列中与第一高速缓存行相关联的标志以确定所述第一高速缓存行是否被压缩;如果所述第一高速缓存行未被压缩,则分析一个或多个同伴编码位;以及如果所述第一高速缓存行被压缩,则不考虑一个或多个同伴编码位。
根据本发明的一种计算机系统,包括:中央处理单元CPU;高速缓存存储器,它耦合至所述CPU并具有存储额外数据的多个可压缩高速缓存行;执行所述高速缓存存储器的查找操作的高速缓存控制器,所述高速缓存控制器具有对应于所述多个高速缓存行中每一行的标志条目的阵列,每个标志条目包括:对应于一高速缓存行地址的地址标志位;指示一对应的高速缓存行是否被压缩的一个或多个压缩编码位;以及指示哪些同伴行存储在公共高速缓存组内的一个或多个同伴编码位,其中如果所述压缩编码位指示所述高速缓存行被压缩,就把所述同伴编码位作为偏移的一部分处理并且如果所述压缩编码位指示所述高速缓存行未被压缩,就认为所述同伴编码位是所述地址标志位的一个成分;耦合至所述CPU的芯片组;以及主存储器。
附图说明
参考以下给出的详尽描述和本发明各实施例的附图就能够更充分地理解本发明。尽管如此,所述附图不应作为本发明具体实施例的限制,而仅用于解释和理解。
图1示出了计算机系统的一个实施例;
图2示出了物理高速缓存的组织的一个实施例;
图3示出了逻辑高速缓存的组织的一个实施例;
图4A示出了在未压缩的高速缓存内实现的示例存储器寻址;
图4B示出了在压缩的高速缓存内实现的存储器地址的一个实施例;
图5示出了用于被压缩的高速缓存的标志阵列条目的一个实施例;
图6是示出了高速缓存控制器的一个实施例的框图;
图7示出了在被压缩高速缓存中一组和路径选择机制方法的一个实施例;
图8示出了标志比较逻辑的一个实施例;
图9示出了用于被压缩的高速缓存的标志阵列条目的另一个实施例;
图10示出了标志比较逻辑的另一个实施例;
图11示出了字节选择逻辑的一个实施例。
具体实施方式
描述一种在高速缓存内压缩数据的机制。在随后的描述中将阐明大量的细节。然而本领域普通技术人员明白,没有这些细节也能够实现本发明。在另外的实施例中,已知的结构和设备是以框图形式而非细节形式示出,从而避免淡化发明主题。
在说明中,对“某个实施例”和“一个实施例”的引用意指在本发明的至少一个实施例中包括了结合该实施例而描述的特定特征、结构或性能。在说明书中各部分出现的短语“在一个实施例中”无需全部指同一实施例。
图1是计算机系统100的一个实施例的框图。计算机系统100包括耦合至总线105的中央处理单元(CPU)102。在一个实施例中,CPU 102是可从California,Santa Clara的Intel公司购买的Pentium处理器系列的处理器,包括PentiumII处理器系列、Pentium
Figure C20048002717500093
III处理器和Pentium
Figure C20048002717500094
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可以耦合至遵守由Oregon,Portland的PCI Special Interest公司开发的修订规范2.1总线的外围元件互连总线。
根据一个实施例,高速缓存存储器103位于处理器102内并且存储也存储在存储器115内的数据信号。高速缓存103通过其本地存取的优势能使得高速缓存103加速存储器的存取。在另一个实施例中,高速缓存103位于处理器102的外部。
根据另一个实施例,高速缓存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依据具体某行被压缩与否也具有可变长度。因此,标志匹配要考虑所述压缩位。
图8示出了一个包括有XNOR门1-n、OR门和AND门的标志比较逻辑710的实施例。所述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、符号位压缩、游程长度压缩等)来压缩高速缓存行。
压缩逻辑6.0也可用于确定何时压缩某行。根据一个实施例,使用机会主义压缩来确定何时压缩某行。在机会主义压缩中,当出现高速缓存失败时,就从存储器115中取来所要求的高速缓存行并且如果其同伴行位于高速缓存内,则高速缓存103就尝试将两个同伴压缩成一行。如果所述同伴行不在高速缓存103内或者如果两个同伴不是2∶1可压缩的,则高速缓存103随后就使用它的标准置换算法来为取来的行给出空间。
此外,高速缓存103重新使用常驻同伴的高速缓存行来存储同伴的新近压缩对以避免置换。要注意,修改所述标志匹配算子以检查所述同伴行是否常驻而无需进行第二次高速缓存存取是很方便的。例如,如果除了同伴位之外的所有地址标志位都匹配,则所述同伴行就是常驻的。
在另一个实施例中,使用预取机制来确定是否要压缩行。在所述预取机制中,通过添加预取来改善所述机会主义方法。如果要求读取行的同伴不是常驻的,则所述高速缓存预取所述同伴并且尝试把两个同伴压缩成一行。
如果两个同伴行不能以2∶1压缩,则高速缓存103就要作出放弃该预取行(这样就浪费了总线带宽)或者是在高速缓存内存储该未压缩预取行(这样就潜在地导致了组内总计两行被置换)的选择。在一个实施例中,所述硬件可依据该程序所显示出的空间局部性和容许时延的多少而这这些策略间进行适应性地切换。
在另一个实施例中,使用干扰压缩机制来确定是否要压缩行。对于干扰压缩,存在对将要被驱逐的某行(例如一个干扰)的压缩尝试。如果一个干扰尚未被压缩并且它的同伴是常驻的,那么高速缓存103就给予该干扰一个通过尝试压缩它和它的同伴能够仍然常驻在该高速缓存中的机会。如果该干扰已经被压缩,它的同伴不是常驻的或者该干扰和它的同伴不是2∶1可压缩的,则随后就驱逐该干扰。另外,高速缓存103重新使用常驻同伴的高速缓存行以存储同伴的被压缩对,从而避免了该驱逐。
在写入数据时,则某行的可压缩率可能会改变。对同伴被压缩对的一次写入可引发该对不再可压缩。如果被压缩的高速缓存行变得不可压缩,则可以采取三种方法。第一种方法是简单驱逐另一行从而为扩展引起的额外行腾出空位。这在组内所有行都被压缩的情况下会导致两个同伴行都被驱逐。
第二种方法是驱逐被写入行的同伴。第三种方法是驱逐以前被写入的行。采取哪一种方法部分取决于被压缩高速缓存103和最靠近处理器的下一个高速缓存之间的交互(例如,如果L3是被压缩的高速缓存,则它就取决于L3和L2之间的交互)。
假设被压缩的高速缓存是包括了L3的高速缓存并且L2是写回高速缓存,则前两种方法包括在所述L2高速缓存内被驱逐行的无效以保持多级包含,这就有驱逐L2或L1中当前被存取的高速缓存行的危险。第三种方法不要求L2的无效并且由于正写入的行正从L2中驱逐,所以没有驱逐L2中当前被存取的高速缓存行的危险。
上述机制允许映射至相同组并且仅仅允许同伴位不同的两个高速缓存行被压缩成一个高速缓存行。在一个实施例中,所述机制修改组映射函数并且选择该同伴位使得其允许相邻的存储器行利用空间位置的优势而被压缩在一起。
虽然本发明的许多变化和修改在本领域普通技术人员阅读先前描述之后将变得显而易见,但应该理解的是通过图示示出并描述的任何具体实施例仅出于示例性而非限制性的目的。因此对各实施例细节的参考不限制本发明的权利要求的范围,而权利要求本身仅叙述关于本发明的特性。

Claims (40)

1.一种计算机系统,包括:
中央处理单元CPU;以及
高速缓存存储器,它耦合至所述CPU并具有存储额外数据的多个可压缩高速缓存行;以及
执行所述高速缓存存储器的查找操作的高速缓存控制器,所述高速缓存控制器具有对应于多个高速缓存行中每一行的标志条目的阵列,每个标志条目包括:
对应于一高速缓存行地址的地址标志位;
指示一对应的高速缓存行是否被压缩的一个或多个压缩编码位;以及
指示哪些同伴行存储在公共高速缓存组内的一个或多个同伴编码位,其中如果所述压缩编码位指示所述高速缓存行被压缩,就把所述同伴编码位作为偏移的一部分来处理,并且如果所述压缩编码位指示所述高速缓存行未被压缩,就认为所述同伴编码位是所述地址标志位的一个成分。
2.如权利要求1所述的计算机系统,其特征在于,所述高速缓存控制器包括在所述CPU之内。
3.如权利要求1所述的计算机系统,其特征在于,如果所述对应的压缩编码位指示所述行被压缩,则所述高速缓存行存储两个或更多的高速缓存行。
4.如权利要求3所述的计算机系统,其特征在于,所述同伴行是相邻的存储器行。
5.如权利要求1所述的计算机系统,其特征在于,所述同伴编码位用作压缩格式位以在不同的压缩算法间作出选择。
6.如权利要求1所述的计算机系统,其特征在于,所述同伴编码位用于编码在所述被压缩行内同伴行的次序。
7.如权利要求1所述的计算机系统,其特征在于,所述高速缓存控制器还包括选择一高速缓存行的组和路径选择逻辑。
8.如权利要求7所述的计算机系统,其特征在于,所述组和路径选择逻辑包括比较所述高速缓存行地址和所述地址标志位的标志比较逻辑。
9.如权利要求8所述的计算机系统,其特征在于,如果所述一个或多个压缩编码位指示了所述高速缓存行被压缩,所述标志比较逻辑就忽略所述地址内的所述一个或多个同伴编码位。
10.如权利要求8所述的计算机系统,其特征在于,如果所述压缩编码位指示了所述高速缓存行未被压缩,所述标志比较逻辑就比较所述地址内的所述一个或多个同伴编码位和所述标志内的所述一个或多个同伴编码位。
11.如权利要求7所述的计算机系统,其特征在于,所述高速缓存控制器还包括压缩高速缓存行的压缩逻辑。
12.如权利要求11所述的计算机系统,其特征在于,所述压缩逻辑经由基于程序字典压缩算法来压缩高速缓存行。
13.如权利要求11所述的计算机系统,其特征在于,所述压缩逻辑经由符号位压缩算法来压缩高速缓存行。
14.如权利要求11所述的计算机系统,其特征在于,所述压缩逻辑确定何时压缩一高速缓存行。
15.如权利要求14所述的计算机系统,其特征在于,所述压缩逻辑基于机会主义压缩来压缩一高速缓存行。
16.如权利要求14所述的计算机系统,其特征在于,所述压缩逻辑基于预取压缩来压缩一高速缓存行。
17.如权利要求14所述的计算机系统,其特征在于,所述压缩逻辑基于干扰压缩来压缩一高速缓存行。
18.如权利要求11所述的计算机系统,其特征在于,所述高速缓存控制器还包括在高速缓存行内选择寻址数据的字节选择逻辑。
19.如权利要求18所述的计算机系统,其特征在于,所述字节选择逻辑包括:
解压缩所选高速缓存行的解压缩器;
在被解压缩的高速缓存行和未被解压缩的高速缓存行之间选择的输入多路复用器;以及
在所述未被压缩的高速缓存行内的同伴行之间选择的输出多路复用器。
20.一种高速缓存控制器,包括:
在一高速缓存存储器设备中压缩行的压缩逻辑;以及
对应于多个高速缓存行中每一行的标志条目的阵列,每个标志条目包括:
对应于一高速缓存行地址的地址标志位;
指示一对应的高速缓存行是否被压缩的一个或多个压缩编码位;以及
指示哪些同伴行是存储在公共高速缓存组内的一个或多个同伴编码位,
其中如果所述压缩编码位指示所述高速缓存行被压缩,就把所述同伴编码位作为偏移的一部分处理并且如果所述压缩编码位指示所述高速缓存行未被压缩,就认为所述同伴编码位是所述地址标志位的一个成分。
21.如权利要求20所述的高速缓存控制器,其特征在于,还包括在多个高速缓存行中进行选择的组和路径逻辑。
22.如权利要求20所述的高速缓存控制器,其特征在于,如果所述对应的压缩编码位指示所述行被压缩,则单个高速缓存行存储两个或更多的高速缓存行。
23.如权利要求21所述的高速缓存控制器,其特征在于,所述组和路径选择逻辑包括比较所述高速缓存行地址和所述地址标志位的标志比较逻辑。
24.如权利要求23所述的高速缓存控制器,其特征在于,如果所述一个或多个压缩编码位指示了所述高速缓存行被压缩,所述标志比较逻辑就忽略所述地址内的所述一个或多个同伴编码位。
25.如权利要求24所述的高速缓存控制器,其特征在于,如果一个或多个压缩编码位指示了所述高速缓存行未被压缩,所述标志比较逻辑就比较所述地址内的所述一个或多个同伴编码位和所述标志内的所述一个或多个同伴编码位。
26.如权利要求20所述的高速缓存控制器,其特征在于,所述压缩逻辑经由基于程序字典压缩算法来压缩高速缓存行。
27.如权利要求20所述的高速缓存控制器,其特征在于,所述压缩逻辑经由符号位压缩算法来压缩高速缓存行。
28.如权利要求20所述的高速缓存控制器,其特征在于,所述压缩逻辑确定何时压缩一高速缓存行。
29.如权利要求20所述的高速缓存控制器,其特征在于,所述高速缓存控制器还包括在高速缓存行内选择寻址数据的字节选择逻辑。
30.如权利要求29所述的高速缓存控制器,其特征在于,所述字节选择逻辑包括:
解压缩所选高速缓存行的解压缩器;
在被解压缩的高速缓存行和未被解压缩的高速缓存行之间选择的输入多路复用器;以及
在所述未被压缩的高速缓存行内的同伴行之间选择的输出多路复用器。
31.一种方法,包括:
分析在标志阵列中与第一高速缓存行相关联的标志以确定所述第一高速缓存行是否被压缩;
如果所述第一高速缓存行未被压缩,则分析一个或多个同伴编码位;以及
如果所述第一高速缓存行被压缩,则不考虑一个或多个同伴编码位。
32.如权利要求31所述的方法,其特征在于,压缩所述第一高速缓存行包括将来自第二高速缓存行的数据存储在所述第一高速缓存行内。
33.如权利要求31所述的方法,其特征在于,还包括确定在高速缓存存储器设备内的第一高速缓存行是否被压缩。
34.如权利要求33所述的方法,其特征在于,还包括压缩所述第一高速缓存行。
35.如权利要求31所述的方法,其特征在于,还包括如果所述第一高速缓存行被压缩,则使用一个或多个同伴编码位作为一压缩格式位用于在不同的压缩算法之间进行选择。
36.如权利要求31所述的方法,其特征在于,还包括如果所述第一高速缓存行被压缩,则使用一个或多个同伴编码位来编码在所述第一高速缓存行内的同伴行的次序。
37.一种计算机系统,包括:
中央处理单元CPU;
高速缓存存储器,它耦合至所述CPU并具有存储额外数据的多个可压缩高速缓存行;
执行所述高速缓存存储器的查找操作的高速缓存控制器,所述高速缓存控制器具有对应于所述多个高速缓存行中每一行的标志条目的阵列,每个标志条目包括:
对应于一高速缓存行地址的地址标志位;
指示一对应的高速缓存行是否被压缩的一个或多个压缩编码位;以及
指示哪些同伴行存储在公共高速缓存组内的一个或多个同伴编码位,其中如果所述压缩编码位指示所述高速缓存行被压缩,就把所述同伴编码位作为偏移的一部分处理并且如果所述压缩编码位指示所述高速缓存行未被压缩,就认为所述同伴编码位是所述地址标志位的一个成分;
耦合至所述CPU的芯片组;以及
主存储器。
38.如权利要求37所述的计算机系统,其特征在于,所述高速缓存控制器包括在所述CPU之内。
39.如权利要求37所述的计算机系统,其特征在于,所述高速缓存控制器包括在所述芯片组内。
40.如权利要求37所述的计算机系统,其特征在于,如果所述对应的压缩编码位指示所述行被压缩,则单个高速缓存行存储两个或更多的高速缓存行。
CNB2004800271756A 2003-09-30 2004-09-29 压缩高速缓存内数据的机制 Expired - Fee Related CN100432959C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/676,480 2003-09-30
US10/676,480 US7143238B2 (en) 2003-09-30 2003-09-30 Mechanism to compress data in a cache

Publications (2)

Publication Number Publication Date
CN1853170A CN1853170A (zh) 2006-10-25
CN100432959C true CN100432959C (zh) 2008-11-12

Family

ID=34377403

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800271756A Expired - Fee Related CN100432959C (zh) 2003-09-30 2004-09-29 压缩高速缓存内数据的机制

Country Status (4)

Country Link
US (1) US7143238B2 (zh)
JP (1) JP4009310B2 (zh)
CN (1) CN100432959C (zh)
WO (1) WO2005033946A1 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7243191B2 (en) * 2004-08-31 2007-07-10 Intel Corporation Compressing data in a cache memory
US7809900B2 (en) * 2006-11-24 2010-10-05 Sandforce, Inc. System, method, and computer program product for delaying an operation that reduces a lifetime of memory
US7747813B2 (en) * 2006-11-24 2010-06-29 Sandforce, Inc. Multi-memory device system and method for managing a lifetime thereof
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
US7904672B2 (en) 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
JP5194703B2 (ja) * 2007-10-16 2013-05-08 ソニー株式会社 データ処理装置及び共有メモリのアクセス方法
US7903486B2 (en) 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
US7849275B2 (en) 2007-11-19 2010-12-07 Sandforce, Inc. System, method and a computer program product for writing data to different storage devices based on write frequency
US9183133B2 (en) 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US20090210622A1 (en) * 2008-02-19 2009-08-20 Stefan Birrer Compressed cache in a controller partition
JP4653830B2 (ja) * 2008-09-19 2011-03-16 株式会社東芝 命令キャッシュシステム
US8516166B2 (en) * 2009-07-20 2013-08-20 Lsi Corporation System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory
US20130019029A1 (en) * 2011-07-13 2013-01-17 International Business Machines Corporation Lossless compression of a predictive data stream having mixed data types
US8990217B2 (en) 2011-07-13 2015-03-24 International Business Machines Corporation Lossless compression of high nominal-range data
US9261946B2 (en) * 2012-10-11 2016-02-16 Wisconsin Alumni Research Foundation Energy optimized cache memory architecture exploiting spatial locality
KR102336528B1 (ko) 2014-07-07 2021-12-07 삼성전자 주식회사 캐시 메모리를 가지는 전자 장치 및 그의 운용 방법
US9361228B2 (en) 2014-08-05 2016-06-07 Qualcomm Incorporated Cache line compaction of compressed data segments
US20160283390A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Storage cache performance by using compressibility of the data as a criteria for cache insertion
WO2016163421A1 (ja) * 2015-04-08 2016-10-13 国立大学法人奈良先端科学技術大学院大学 データ処理装置
US10025956B2 (en) * 2015-12-18 2018-07-17 Intel Corporation Techniques to compress cryptographic metadata for memory encryption
US10019375B2 (en) * 2016-03-02 2018-07-10 Toshiba Memory Corporation Cache device and semiconductor device including a tag memory storing absence, compression and write state information
US10042576B2 (en) * 2016-08-17 2018-08-07 Advanced Micro Devices, Inc. Method and apparatus for compressing addresses
CN115129618A (zh) * 2017-04-17 2022-09-30 伊姆西Ip控股有限责任公司 用于优化数据缓存的方法和设备
US10983915B2 (en) 2019-08-19 2021-04-20 Advanced Micro Devices, Inc. Flexible dictionary sharing for compressed caches
US11586554B2 (en) * 2020-07-23 2023-02-21 Arm Limited Cache arrangements for data processing systems
US20230315627A1 (en) * 2022-03-16 2023-10-05 International Business Machines Corporation Cache line compression prediction and adaptive compression
US20230297382A1 (en) * 2022-03-16 2023-09-21 International Business Machines Corporation Cache line compression prediction and adaptive compression

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1200604A (zh) * 1997-05-12 1998-12-02 莱克斯马克国际公司 数据压缩方法和设备
CN1289419A (zh) * 1998-02-10 2001-03-28 国际商业机器公司 压缩存储自由空间管理
US20030135694A1 (en) * 2002-01-16 2003-07-17 Samuel Naffziger Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237675A (en) * 1990-06-04 1993-08-17 Maxtor Corporation Apparatus and method for efficient organization of compressed data on a hard disk utilizing an estimated compression factor
US5247638A (en) * 1990-06-18 1993-09-21 Storage Technology Corporation Apparatus for compressing data in a dynamically mapped virtual data storage subsystem
US5206939A (en) * 1990-09-24 1993-04-27 Emc Corporation System and method for disk mapping and data retrieval
JP3426385B2 (ja) * 1995-03-09 2003-07-14 富士通株式会社 ディスク制御装置
US5875454A (en) * 1996-07-24 1999-02-23 International Business Machiness Corporation Compressed data cache storage system
US6115787A (en) * 1996-11-05 2000-09-05 Hitachi, Ltd. Disc storage system having cache memory which stores compressed data
US6199126B1 (en) * 1997-09-23 2001-03-06 International Business Machines Corporation Processor transparent on-the-fly instruction stream decompression
US6092071A (en) * 1997-11-04 2000-07-18 International Business Machines Corporation Dedicated input/output processor method and apparatus for access and storage of compressed data
US20010054131A1 (en) * 1999-01-29 2001-12-20 Alvarez Manuel J. System and method for perfoming scalable embedded parallel data compression
US6819271B2 (en) * 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US6289420B1 (en) * 1999-05-06 2001-09-11 Sun Microsystems, Inc. System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem
US6449689B1 (en) * 1999-08-31 2002-09-10 International Business Machines Corporation System and method for efficiently storing compressed data on a hard disk drive
US6507895B1 (en) * 2000-03-30 2003-01-14 Intel Corporation Method and apparatus for access demarcation
US6523102B1 (en) * 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6480938B2 (en) * 2000-12-15 2002-11-12 Hewlett-Packard Company Efficient I-cache structure to support instructions crossing line boundaries
US6735673B2 (en) * 2002-01-10 2004-05-11 Hewlett-Packard Development Company, L.P. Apparatus and methods for cache line compression
US6795897B2 (en) * 2002-05-15 2004-09-21 International Business Machines Corporation Selective memory controller access path for directory caching
US7162669B2 (en) * 2003-06-10 2007-01-09 Hewlett-Packard Development Company, L.P. Apparatus and method for compressing redundancy information for embedded memories, including cache memories, of integrated circuits

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1200604A (zh) * 1997-05-12 1998-12-02 莱克斯马克国际公司 数据压缩方法和设备
CN1289419A (zh) * 1998-02-10 2001-03-28 国际商业机器公司 压缩存储自由空间管理
US20030135694A1 (en) * 2002-01-16 2003-07-17 Samuel Naffziger Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size

Also Published As

Publication number Publication date
JP2007507806A (ja) 2007-03-29
WO2005033946A1 (en) 2005-04-14
US20050071562A1 (en) 2005-03-31
JP4009310B2 (ja) 2007-11-14
CN1853170A (zh) 2006-10-25
US7143238B2 (en) 2006-11-28

Similar Documents

Publication Publication Date Title
CN100432959C (zh) 压缩高速缓存内数据的机制
US7162584B2 (en) Mechanism to include hints within compressed data
US7243191B2 (en) Compressing data in a cache memory
US6349372B1 (en) Virtual uncompressed cache for compressed main memory
US9946462B1 (en) Address mapping table compression
US6879266B1 (en) Memory module including scalable embedded parallel data compression and decompression engines
CN104331269B (zh) 一种嵌入式系统可执行代码压缩方法及代码解压缩系统
JP4920378B2 (ja) 情報処理装置およびデータ検索方法
EP4018318B1 (en) Flexible dictionary sharing for compressed caches
US10862507B2 (en) Variable-sized symbol entropy-based data compression
US7162583B2 (en) Mechanism to store reordered data with compression
CN101449462A (zh) 基于集合关联高速缓存映射技术的高速数据压缩
US9378214B2 (en) Method and system for hash key memory reduction
CN104714903A (zh) 存储系统
US6353871B1 (en) Directory cache for indirectly addressed main memory
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
KR100463205B1 (ko) 시퀀셜 버퍼를 내장하여 디에스피의 데이터 억세스 성능을향상시키는 컴퓨터 시스템 및 그 컴퓨터 시스템의 데이터억세스 방법
US20020178332A1 (en) Method and system to pre-fetch compressed memory blocks suing pointers

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

Granted publication date: 20081112

Termination date: 20150929

EXPY Termination of patent right or utility model