CN1902603A - 用于在压缩数据内包括提示信息的机制 - Google Patents

用于在压缩数据内包括提示信息的机制 Download PDF

Info

Publication number
CN1902603A
CN1902603A CNA2004800393626A CN200480039362A CN1902603A CN 1902603 A CN1902603 A CN 1902603A CN A2004800393626 A CNA2004800393626 A CN A2004800393626A CN 200480039362 A CN200480039362 A CN 200480039362A CN 1902603 A CN1902603 A CN 1902603A
Authority
CN
China
Prior art keywords
cache
information
logic
computer system
prompting
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.)
Granted
Application number
CNA2004800393626A
Other languages
English (en)
Other versions
CN1902603B (zh
Inventor
A·-R·阿德尔-塔巴塔拜
A·M·胡洛姆
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 CN1902603A publication Critical patent/CN1902603A/zh
Application granted granted Critical
Publication of CN1902603B publication Critical patent/CN1902603B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

依照一个实施例,公开了一种计算机系统。所述计算机系统包括中央处理单元(CPU)、耦合至所述CPU的高速缓冲存储器和耦合至所述高速缓冲存储器的高速缓存控制器。所述高速缓冲存储器包括多个可压缩的高速缓存行以存储附加数据。所述高速缓存控制器包括压缩逻辑以便把多个高速缓存行中的一个或多个压缩为已压缩的高速缓存行,并且包括提示逻辑以便在已压缩高速缓存行内的未使用空间中存储提示信息。

Description

用于在压缩数据内包括提示信息的机制
技术领域
本发明涉及计算机系统;更具体来讲,本发明涉及中央处理单元(CPU)高速缓存。
背景技术
目前,采用各种方法来压缩诸如随机存取存储器(RAM)之类的计算机系统主存储器的内容。这些方法减小提供相同性能所需的物理存储器空间量。例如,如果使用2∶1的比例来压缩存储器,那么存储器可以利用相同的成本来存储两倍的数据量,或者利用一半的成本来存储相同的数据量。
这种方法之一是由位于纽约的Armonk的国际商用机器公司(IBM)开发的存储器扩展技术(MXT)。MXT利用这样一种存储器系统体系结构来解决系统存储器成本的问题,所述体系结构使安装的主存储器的有效容量加倍。逻辑密集型压缩器和解压缩器硬件引擎提供了用于当数据在共享高速缓存和主存储器之间移动时,同时压缩和解压缩数据的方法。所述压缩器把数据块编码为算法所允许的尽可能紧凑的结果。
然而,目前没有用于压缩存储在高速缓存中的数据的方法。具有压缩高速缓存数据的能力往往产生与主存储器压缩类似的优势(例如,减少提供相同性能所需的高速缓存空间量)。
附图说明
通过以下给出的详细说明并且通过本发明各种实施例的附图,将会更加彻底地理解本发明。然而,不应该把附图理解为将本发明限制为特殊的实施例,而仅仅是为了说明和理解。
图1举例说明了计算机系统的一个实施例;
图2举例说明了物理高速缓存结构的一个实施例;
图3举例说明了逻辑高速缓存结构的一个实施例;
图4A举例说明了在未压缩的高速缓存中实现的示例性存储器地址;
图4B举例说明了在已压缩高速缓存中实现的存储器地址的一个实施例;
图5举例说明了已压缩高速缓存的标签阵列条目的一个实施例;
图6是举例说明高速缓存控制器的一个实施例的框图;
图7举例说明了在已压缩高速缓存中集合和通路选择机制的一个实施例;
图8举例说明了标签比较逻辑的一个实施例;
图9举例说明了已压缩高速缓存的标签阵列条目的另一实施例;
图10举例说明了标签比较逻辑的另一实施例;
图11举例说明了字节选择逻辑的一个实施例;
图12举例说明了扇区高速缓存的内容的压缩;
图13举例说明了包括固定宽度提示的压缩行的一个实施例;
图14举例说明了包括可变宽度提示的压缩行的一个实施例;
图15举例说明了用于解码嵌入在压缩数据内的提示的一个实施例;
图16举例说明了用于解码嵌入在压缩数据内的提示的另一实施例;并且
图17举例说明了用于解码嵌入在压缩数据内的提示的又一实施例。
具体实施方式
描述了一种用于压缩高速缓存中的数据的机制。在随后的描述中,提出了很多细节。然而本领域普通技术人员将理解的是,本发明可以在没有这些具体细节的情况下来实施。在其它情况下,以框图的形式示出了众所周知的结构和装置,而没有详细地示出,以免使本发明不明确。
说明书中提及的“一个实施例”或“一实施例”指的是:结合所述实施例描述的特定特征、结构或者特性都包括在本发明的至少一个实施例中。在说明书各个地方出现的短语“在一个实施例中”未必全部涉及同一实施例。
图1是计算机系统100的一个实施例的框图。计算机系统100包括耦合至总线105的中央处理单元(CPU)102。在一个实施例中,CPU 102是Pentium系列的处理器,所述Pentium系列的处理器包括PentiumII处理器系列、PentiumIII处理器和PentiumIV处理器,这些处理器可以从位于加利福尼亚州的Santa Clara的Intel公司购买到。作为选择,也可以使用其它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专业组开发的SpecificationRevision 2.1总线。
压缩的高速缓存
依照一个实施例,高速缓冲存储器103驻留在处理器102内并且存储还存储在存储器115中的数据信号。高速缓存103通过处理器103并利用其访问位置来加速存储器访问。在另一个实施例中,高速缓存103驻留在处理器103的外部。
依照进一步的实施例,高速缓存103包括已压缩高速缓存行,以便在相同的区域数量内存储额外的数据。图2举例说明了高速缓存103的物理结构的一个实施例。在一个实施例中,高速缓存103是512集合、4通路设置的关联高速缓存。然而,本领域普通技术人员将理解的是,在不脱离本发明的正确范围的情况下,还可以实现许多其它大小的高速缓存。
把标签与集合的每一行相关联。此外,把压缩位与每一标签相关联。压缩位表明相应的高速缓存行是否保存压缩数据。当设置了压缩位时,高速缓存行的物理存储器保存两个压缩的相伴行(companion line)。相伴行是具有仅在相伴位(companion bit)中不同的地址的两个行(例如,在行定位线处对准的两个连续的存储器行)。
在一个实施例中,相伴位被选择,因此相伴行是相邻行。然而,可以选择任何位以作为相伴位。在其它实施例中,能够利用用于编码高速缓存行状态的其它位来编码压缩指示,所述其它位诸如是MBSI状态位,由此消除总共的空间开销。
当没有设置压缩位时,高速缓存行的物理存储器保存一个未压缩的行。图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。另外,正如下面将要描述的那样,高速缓存控制器104包括提示逻辑640。集合和通路选择逻辑610用来选择高速缓存103内的高速缓存行。
图7举例说明了已压缩高速缓存的集合和通路选择逻辑610的一个实施例。集合和通路选择逻辑610包括标签比较逻辑710,其用于接收来自标签阵列的输入以便基于所接收的地址来选择高速缓存行。标签比较逻辑710考虑高速缓存行是否保存已压缩数据。因为高速缓存行保存可变的数据大小,所以标签比较逻辑710也是可变长度的,这取决于是否压缩特定的行。因此,标签匹配考虑了压缩位。
图8举例说明了包括异或非(XNOR)门1-n、OR门和AND门的标签比较逻辑710的一个实施例。XNOR门和AND门包括在传统的未压缩的高速缓存中,并且用来把地址与标签阵列中的标签条目进行比较,直到发现匹配为止。OR门用来根据行的压缩状态来选择相伴位。
根据是否设置了压缩位来有选择地忽略地址的相伴位。如上所述,如果设置了压缩位,那么在标签匹配期间忽略地址的相伴位,这是因为高速缓存行包含两个相伴方。如果没有设置压缩位,那么把地址的相伴位与标签的相伴位进行比较。
因此,相等操作码的“XNOR积(Product of 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-匹配、标签位压缩、扫描宽度压缩等等)来压缩高速缓存行。
还可以使用压缩逻辑630来确定何时将对行进行压缩。依照一个实施例,使用机会主义的压缩来确定何时将对行进行压缩。在机会主义的压缩中,当出现高速缓存未命中时,从存储器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被驱逐。
上述机制允许任何两个高速缓存行映射至同一集合,并且只在其将被一同压缩为一个高速缓存行的相伴位方面不同。在一个实施例中,所述机制修改集合映射函数,并且选择相伴位,如此使得它允许相邻存储器行一同被压缩,这利用了空间局部性。
压缩数据内的提示插入
上述高速缓存压缩机制是用于减少时空资源需求的有效技术。通常,高速缓存内的所有块都能够按照某些统一的整因子(例如2∶1,3∶1,4∶1因子)来压缩,由此在高速缓存中产生固定大小分配单位。例如,高速缓存中固定大小的行显然可以更加容易地分配高速缓存空间。
然而,压缩算法几乎未曾跨越所有数据块来产生一致的并且有效的压缩比。实际上,压缩性的某些阈值是为特定的实现方式而选择的,典型的,所述特定的实现方式当与高速缓存设计结构并列时,会导致将可压缩性局限在少数整因子。例如,对于一组128字节的块而言,给定的压缩算法可以产生广泛范围的压缩比。由此,可以把块压缩为1、2、3、4等等字节,直到128字节(不可压缩的)。在其它实施例中,还可以把块压缩为非字节对准的位值(例如,13位)。
然而,高速缓存通常是8字节的若干倍宽,并且可以为64字节和128字节转送而优化。因此,压缩应被局限于2到1压缩(或者按照50%),或者根本不压缩,因此所有事务适应这些优化的大小。与固定边界的这种强制对准在事务中产生了一定量碎片或浪费的字节。
例如,图12举例说明了分扇区高速缓存的内容的压缩,其中高速缓存的每一行均包括最多两个扇区的数据。如果只有当压缩降至50%或者更好时进行压缩,那么在每个已压缩行中很可能浪费字节(应注意的是,两个扇区被压缩为单个扇区)。实际上,压缩算法和应用数据交互的越好,将会浪费越多的字节。
依照一个实施例,把提示以及其它信息存储在压缩时提供的无用空间中。例如,可以使用此空间的多个字节来存储特定高速缓存行的下一行取出的信息(例如绝对地址或者偏移(限制所需要的字节数目))。虽然已经就已压缩高速缓存行描述了提示插入,但是本领域普通技术人员将理解的是,可以把提示存储器用于其它应用,诸如已压缩存储器和经由总线转送的压缩数据。
在一个实施例中,在压缩数据之后,高速缓存控制器104(图1)把提示注入到高速缓存行中。在一个实施例中,当把高速缓存行写入高速缓存中时,对提示进行编码。在提示逻辑640(图6)处管理提示编码。
在一个实施例中,已编码的提示包括相关的预取提示,所述相关的预取提示表明每行读取的下一地址或者偏移。在这种实施例中,所述提示查看特定的存储地址以便确定继上次已经读取高速缓存的当前行之后下次读取什么行。每当所述提示被校正时,这种提示允许预取数据,而不是等待高速缓存未命中。
在另一个实施例中,已编码的提示信息包括基于内容的预取提示,所述基于内容的预取提示表明所述行中的哪些偏移很可能用于寻址。使用所述偏移来跟踪已结束的高速缓存行中的哪个值用于下一预取地址。
在又一个实施例中,所述提示信息包括高速缓存活性历史或者精确替代策略的计数。因此,每当高速缓存已满并且接收到新行时,可以使用所述提示来决定从高速缓存中丢弃哪个行。例如,所述提示可以包括在其最后的高速缓存驻留期间使用所述行的周期数目。这样做允许高速缓存否决其默认算法(例如最近最少使用的),并且当它已经驻留在高速缓存长达该周期数目时,驱逐所述行。因此,高速缓存可以在接收新行之前丢弃所述行,由此高速缓存行可以被关闭,从而节省电力。
在其它实施例中,所述提示包括下一行接触/偏移提示,用于预先解压缩以便隐藏存储器或高速缓存当中的压缩延迟时间。此提示允许预测接下来将被接触的高速缓存行并且主动地解压缩所述行。由此,由于所述行早已被解压缩,所以将会消除与解压缩所述行相关联的延迟时间。
在一个实施例中,注入到高速缓存行中的提示可以是固定宽度的或者是可变宽度的。图13举例说明了包括固定宽度提示的已压缩行的一个实施例。插入固定宽度的提示会引起浪费字节数目的固定减少。然而,正如可以在图13中看到的那样,在已压缩高速缓存行中仍存在浪费的空间。
图14举例说明了包括可变宽度提示的压缩行的一个实施例。可变宽度提示可以通过高速缓存控制器104有机会地注入已压缩高速缓存行中,直到高速缓存行已满为止。如上所述,除高速缓存压缩之外,提示插入还可以用于带宽压缩和存储器压缩。
在一个实施例中,当对行自身进行解码时,出现提示解码。对于已压缩高速缓存来说,解码出现在高速缓存控制器104内的提示逻辑640(图6)处。在一个实施例中,当把高速缓存行读入高速缓存中时,出现解码。在其它实施例中,所述解码和编码可以发生在对驻留行的每次读和写中。
对于已压缩总线事务来说,解码和编码出现在存储器控制器处,并且对于已压缩存储器事务来说,解码和编码可以出现在存储器总线的任何一端。图15-17举例说明了用于提示逻辑640的解码实施例。
图15举例说明了用于解码嵌入在高速缓存控制器或者存储器控制器处的压缩数据内的提示的一个实施例。在这种实施例中,在解压缩逻辑处接收所述行中的所有数据。自从解压缩逻辑识别出所述行中的所有压缩数据何时被解压缩,就把其余数据转寄给提示逻辑以便解码所包括的提示。
图16举例说明了用于解码嵌入在利用未压缩高速缓存经由总线接收的压缩数据内的提示的一个实施例。在此实施例中,在存储器控制器内的解压缩逻辑处从总线接收高速缓存行。类似于图15中所示的实施例,解压缩逻辑识别所述行中的所有压缩数据何时被解压缩,并且把其余数据转寄给提示逻辑以便解码所包括的提示。
图17举例说明了用于解码嵌入在利用已压缩高速缓存经由总线接收的压缩数据内的提示的一个实施例。在这种实施例中,不必解压缩所接收的数据,这是因为压缩数据将被存储在已压缩高速缓存中。由此,在经由总线传输之前,从压缩数据中提取提示,并且将其独立于压缩数据来传输。
在阅读先前的描述之后,本发明的许多变化和修改对于本领域普通技术人员无疑更加清楚,应该理解的是,通过举例示出并描述的任何特定实施例决不应被视为限制。因此,各种实施例的相关细节不意在限制权利要求书的范围,权利要求书本身只列举了认为是本发明的那些特征。

Claims (40)

1.一种计算机系统,包括:
中央处理单元(CPU);
耦合至所述CPU的高速缓冲存储器,具有多个可压缩的高速缓存行以存储附加数据;以及
耦合至所述高速缓冲存储器的高速缓存控制器,包括:
压缩逻辑,用于把多个高速缓存行中的一个或多个压缩为
已压缩高速缓存行;以及
提示逻辑,用于在已压缩高速缓存行内的未使用空间中存储提示信息。
2.如权利要求1所述的计算机系统,其中所述高速缓存控制器还包括解压缩逻辑,用于解压缩所述已压缩高速缓存行。
3.如权利要求2所述的计算机系统,其中所述提示逻辑从所述已压缩高速缓存行中提取提示信息。
4.如权利要求3所述的计算机系统,其中当解压缩每一已压缩高速缓存行时,所述提示逻辑提取提示信息。
5.如权利要求3所述的计算机系统,其中当把每一已解压缩高速缓存行读入高速缓冲存储器中时,所述提示逻辑提取提示信息。
6.如权利要求1所述的计算机系统,其中所述提示信息包括预取提示,所述预取提示表明为每一高速缓存行读取的下一地址或偏移。
7.如权利要求1所述的计算机系统,其中所述提示信息包括基于内容的预取提示,所述基于内容的预取提示表明所述行中的哪些偏移很可能用于寻址。
8.如权利要求1所述的计算机系统,其中所述提示信息包括高速缓存活性历史或者替代策略的计数。
9.如权利要求1所述的计算机系统,其中所述提示信息包括下一行接触/偏移提示,用于预先解压缩以便隐藏高速缓冲存储器当中的压缩延迟时间。
10.如权利要求1所述的计算机系统,其中所述提示信息具有固定的宽度。
11.如权利要求1所述的计算机系统,其中所述提示信息具有可变的宽度。
12.如权利要求2所述的计算机系统,还包括耦合至所述CPU的存储器控制器,所述存储器控制器包括:
压缩逻辑,用于把一个或多个数据行压缩为已压缩数据行;
提示逻辑,用于在数据行内的未使用空间中存储提示信息;以及
解压缩逻辑,用于解压缩已压缩数据行。
13.如权利要求12所述的计算机系统,还包括:
耦合至所述存储器控制器的总线,用于传输并接收已压缩数据行;以及
耦合至所述总线的主存储器。
14.一种方法,包括如下步骤:
压缩一个或多个数据行以便形成已压缩数据行;并且
在每个已压缩数据行内插入提示信息。
15.如权利要求14所述的方法,其中当把每一已压缩数据行写入高速缓冲存储器中时,插入所述提示信息。
16.如权利要求14所述的方法,还包括:
把已压缩数据行解压缩为一个或多个数据行;并且
提取所述提示信息。
17.如权利要求16所述的方法,其中当把每一已压缩数据行读入高速缓冲存储器中时,提取所述提示信息。
18.如权利要求16所述的方法,其中当解压缩每一已压缩数据行时,提取所述提示信息。
19.一种设备,包括:
压缩逻辑,用于把一个或多个数据行压缩为已压缩数据行;以及
提示逻辑,用于在数据行内的未使用空间中存储提示信息。
20.如权利要求19所述的设备,还包括解压缩逻辑,用于解压缩所述已压缩数据行。
21.如权利要求20所述的设备,其中所述提示逻辑从所述已压缩高速缓存行中提取提示信息。
22.如权利要求21所述的设备,其中当解压缩每一已压缩高速缓存行时,所述提示逻辑提取提示信息。
23.如权利要求21所述的设备,其中当把每一已解压缩高速缓存行读入高速缓冲存储器中时,所述提示逻辑提取提示信息。
24.如权利要求19所述的设备,其中所述提示信息包括预取提示,所述预取提示表明为每一高速缓存行读取的下一地址或偏移。
25.如权利要求19所述的设备,其中所述提示信息包括基于内容的预取提示,所述基于内容的预取提示表明所述行中的哪些偏移很可能用于寻址。
26.如权利要求19所述的设备,其中所述提示信息包括高速缓存活性历史或者替代策略的计数。
27.如权利要求19所述的设备,其中所述提示信息包括下一行接触/偏移提示,用于预先解压缩以便隐藏高速缓冲存储器当中的压缩延迟时间。
28.如权利要求19所述的设备,其中所述提示信息具有固定的宽度。
29.如权利要求19所述的设备,其中所述提示信息具有可变的宽度。
30.如权利要求19所述的设备,其中所述设备是高速缓存控制器。
31.如权利要求19所述的设备,其中所述设备是存储器控制器。
32.一种计算机系统,包括:
中央处理单元(CPU);
耦合至所述CPU的存储器控制器,包括:
压缩逻辑,用于把多个高速缓存行中的一个或多个压缩为已压缩高速缓存行;以及
提示逻辑,用于在已压缩高速缓存行内的未使用空间中存储提示信息;以及
耦合至所述存储器控制器的主存储器。
33.如权利要求32所述的计算机系统,其中所述高速缓存控制器还包括解压缩逻辑,用于解压缩所述已压缩高速缓存行。
34.如权利要求33所述的计算机系统,其中所述提示逻辑从所述已压缩高速缓存行中提取提示信息。
35.一种包括控制集线器/交换机的计算机系统,所述控制集线器/交换机包括:
压缩逻辑,用于把一个或多个数据行压缩为已压缩数据行;以及
提示逻辑,用于在已压缩数据行内的未使用空间中存储提示信息。
36.如权利要求35所述的计算机系统,其中所述控制集线器/交换机还包括解压缩逻辑,用于解压缩所述已压缩高速缓存行。
37.如权利要求36所述的计算机系统,其中所述提示逻辑从所述已压缩数据行中提取提示信息。
38.一种包括总线控制器的计算机系统,所述总线控制器包括:
压缩逻辑,用于把一个或多个数据行压缩为已压缩数据行;以及
提示逻辑,用于在已压缩数据行内的未使用空间中存储提示信息。
39.如权利要求38所述的计算机系统,其中所述控制集线器/交换机还包括解压缩逻辑,用于解压缩所述已压缩高速缓存行。
40.如权利要求39所述的计算机系统,其中所述提示逻辑从所述已压缩数据行中提取提示信息。
CN2004800393626A 2003-12-29 2004-12-23 用于在压缩数据内包括提示信息的系统和方法 Expired - Fee Related CN1902603B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/747,474 2003-12-29
US10/747,474 US7162584B2 (en) 2003-12-29 2003-12-29 Mechanism to include hints within compressed data
PCT/US2004/043673 WO2005066801A2 (en) 2003-12-29 2004-12-23 A mechanism to include hints within compressed data

Publications (2)

Publication Number Publication Date
CN1902603A true CN1902603A (zh) 2007-01-24
CN1902603B CN1902603B (zh) 2010-05-26

Family

ID=34700749

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2004800393626A Expired - Fee Related CN1902603B (zh) 2003-12-29 2004-12-23 用于在压缩数据内包括提示信息的系统和方法

Country Status (5)

Country Link
US (1) US7162584B2 (zh)
JP (1) JP2007517331A (zh)
CN (1) CN1902603B (zh)
GB (1) GB2426094B (zh)
WO (1) WO2005066801A2 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012113206A1 (zh) * 2011-08-15 2012-08-30 展讯通信(上海)有限公司 移动终端中请求页面调度方法、控制器以及移动终端
CN104956312A (zh) * 2013-12-12 2015-09-30 株式会社日立制作所 存储装置及存储装置的控制方法
CN106663059A (zh) * 2014-08-19 2017-05-10 高通股份有限公司 功率感知填充
CN111587425A (zh) * 2017-11-13 2020-08-25 维卡艾欧有限公司 分布式存储系统中的文件操作
WO2023173995A1 (en) * 2022-03-16 2023-09-21 International Business Machines Corporation Cache line compression prediction and adaptive compression
WO2023173991A1 (en) * 2022-03-16 2023-09-21 International Business Machines Corporation Cache line compression prediction and adaptive compression

Families Citing this family (38)

* Cited by examiner, † Cited by third party
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
US7788448B2 (en) * 2004-03-08 2010-08-31 Pmc-Sierra Us, Inc. Sequencer cache and method for operating the same
US7225297B2 (en) * 2004-05-28 2007-05-29 International Business Machines Corporation Compressed cache lines incorporating embedded prefetch history data
EP2002653A2 (en) * 2004-12-08 2008-12-17 Imagine Communications Ltd., Distributed statistical multiplexing of multi-media
EP1717708B1 (en) * 2005-04-29 2010-09-01 STMicroelectronics Srl An improved cache memory system
US8140833B2 (en) * 2005-10-07 2012-03-20 International Business Machines Corporation Implementing polymorphic branch history table reconfiguration
US20070083711A1 (en) * 2005-10-07 2007-04-12 International Business Machines Corporation Reconfiguring caches to support metadata for polymorphism
US7949794B2 (en) 2006-11-02 2011-05-24 Intel Corporation PCI express enhancements and extensions
US7711904B2 (en) * 2007-03-22 2010-05-04 International Business Machines Corporation System, method and computer program product for executing a cache replacement algorithm
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
US20090210622A1 (en) * 2008-02-19 2009-08-20 Stefan Birrer Compressed cache in a controller partition
US20090271578A1 (en) * 2008-04-23 2009-10-29 Barrett Wayne M Reducing Memory Fetch Latency Using Next Fetch Hint
WO2010004455A2 (en) * 2008-06-16 2010-01-14 Nxp B.V. A switched-capacitor pipeline adc stage
WO2009153707A1 (en) * 2008-06-17 2009-12-23 Nxp B.V. Processing circuit with cache circuit and detection of runs of updated addresses in cache lines
JP4653830B2 (ja) * 2008-09-19 2011-03-16 株式会社東芝 命令キャッシュシステム
US8700862B2 (en) * 2008-12-03 2014-04-15 Nvidia Corporation Compression status bit cache and backing store
US20100312828A1 (en) * 2009-06-03 2010-12-09 Mobixell Networks Ltd. Server-controlled download of streaming media files
US8527649B2 (en) * 2010-03-09 2013-09-03 Mobixell Networks Ltd. Multi-stream bit rate adaptation
US8832709B2 (en) 2010-07-19 2014-09-09 Flash Networks Ltd. Network optimization
US8688074B2 (en) 2011-02-28 2014-04-01 Moisixell Networks Ltd. Service classification of web traffic
CN103597454B (zh) * 2011-06-10 2016-02-03 松下知识产权经营株式会社 配置决定装置、配置决定方法、数据结构的构成方法、存储器、访问装置及存储器访问方法
US8725939B1 (en) 2011-11-30 2014-05-13 Emc Corporation System and method for improving cache performance
US8738858B1 (en) 2011-11-30 2014-05-27 Emc Corporation System and method for improving cache performance
US8738857B1 (en) 2011-11-30 2014-05-27 Emc Corporation System and method for improving cache performance
US9424175B1 (en) 2011-11-30 2016-08-23 Emc Corporation System and method for improving cache performance
US9208098B1 (en) * 2011-11-30 2015-12-08 Emc Corporation System and method for improving cache performance
US9081833B1 (en) * 2012-04-06 2015-07-14 Google Inc. Providing a tooltip based on search results
US9582426B2 (en) 2013-08-20 2017-02-28 International Business Machines Corporation Hardware managed compressed cache
US9612833B2 (en) * 2014-02-28 2017-04-04 Intel Corporation Handling compressed data over distributed cache fabric
WO2015142341A1 (en) * 2014-03-20 2015-09-24 Hewleet-Packard Development Company, L. P. Dynamic memory expansion by data compression
JP2016028319A (ja) * 2014-07-08 2016-02-25 富士通株式会社 アクセス制御プログラム、アクセス制御装置及びアクセス制御方法
US9361228B2 (en) 2014-08-05 2016-06-07 Qualcomm Incorporated Cache line compaction of compressed data segments
US9612971B2 (en) 2014-08-19 2017-04-04 Qualcomm Incorporated Supplemental write cache command for bandwidth compression
US10102129B2 (en) * 2015-12-21 2018-10-16 Intel Corporation Minimizing snoop traffic locally and across cores on a chip multi-core fabric
US10048868B2 (en) * 2016-09-29 2018-08-14 Intel Corporation Replacement of a block with a compressed block to increase capacity of a memory-side cache
US9917597B1 (en) * 2016-12-16 2018-03-13 Intel Corporation Method and apparatus for accelerated data compression with hints and filtering
US10503652B2 (en) 2017-04-01 2019-12-10 Intel Corporation Sector cache for compression
US11573899B1 (en) * 2021-10-21 2023-02-07 International Business Machines Corporation Transparent interleaving of compressed cache lines

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3717212B2 (ja) 1995-10-27 2005-11-16 株式会社日立製作所 情報処理装置及び情報処理ユニット
US5944815A (en) 1998-01-12 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute a prefetch instruction including an access count field defining an expected number of access
US6553411B1 (en) * 1999-05-18 2003-04-22 International Business Machines Corporation System and method for cache acceleration
CA2387653C (en) * 1999-08-13 2006-11-14 Fujitsu Limited File processing method, data processing device and storage medium
US7082166B2 (en) * 2000-04-17 2006-07-25 Pts Corporation Decoder for decoding segment-based encoding of video data using segmentation performed at a decoder
GB2366643B (en) * 2000-05-25 2002-05-01 Siroyan Ltd Methods of compressing instructions for processors
US6735673B2 (en) 2002-01-10 2004-05-11 Hewlett-Packard Development Company, L.P. Apparatus and methods for cache line compression

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012113206A1 (zh) * 2011-08-15 2012-08-30 展讯通信(上海)有限公司 移动终端中请求页面调度方法、控制器以及移动终端
US9471584B2 (en) 2011-08-15 2016-10-18 Spreadtrum Communications (Shanghai) Co., Ltd. Demand paging method for mobile terminal, controller and mobile terminal
CN104956312A (zh) * 2013-12-12 2015-09-30 株式会社日立制作所 存储装置及存储装置的控制方法
CN104956312B (zh) * 2013-12-12 2018-02-13 株式会社日立制作所 存储装置及存储装置的控制方法
US9916248B2 (en) 2013-12-12 2018-03-13 Hitachi, Ltd. Storage device and method for controlling storage device with compressed and uncompressed volumes and storing compressed data in cache
CN106663059A (zh) * 2014-08-19 2017-05-10 高通股份有限公司 功率感知填充
CN106663059B (zh) * 2014-08-19 2019-11-26 高通股份有限公司 功率感知填充
CN111587425A (zh) * 2017-11-13 2020-08-25 维卡艾欧有限公司 分布式存储系统中的文件操作
CN111587425B (zh) * 2017-11-13 2023-10-20 维卡艾欧有限公司 分布式存储系统中的文件操作
WO2023173995A1 (en) * 2022-03-16 2023-09-21 International Business Machines Corporation Cache line compression prediction and adaptive compression
WO2023173991A1 (en) * 2022-03-16 2023-09-21 International Business Machines Corporation Cache line compression prediction and adaptive compression

Also Published As

Publication number Publication date
GB2426094B (en) 2007-08-29
GB2426094A (en) 2006-11-15
WO2005066801A2 (en) 2005-07-21
CN1902603B (zh) 2010-05-26
US7162584B2 (en) 2007-01-09
WO2005066801A3 (en) 2006-02-16
GB0614949D0 (en) 2006-09-06
US20050144387A1 (en) 2005-06-30
JP2007517331A (ja) 2007-06-28

Similar Documents

Publication Publication Date Title
CN1902603A (zh) 用于在压缩数据内包括提示信息的机制
JP4009310B2 (ja) コンピューターシステム、キャッシュ制御部、方法
US7243191B2 (en) Compressing data in a cache memory
US10203901B2 (en) Transparent hardware-assisted memory decompression
USRE43483E1 (en) System and method for managing compression and decompression of system memory in a computer system
CN1317644C (zh) 简化了缓存替换策略的实现的多线程缓存方法和装置
US20070005911A1 (en) Operating System-Based Memory Compression for Embedded Systems
US20170004069A1 (en) Dynamic memory expansion by data compression
US11586555B2 (en) Flexible dictionary sharing for compressed caches
CN1659526A (zh) 具有基于线程标识符的缓存清除的多线程缓存方法和装置
CN1902602A (zh) 存储带压缩的重排序数据的机制
CN101449462A (zh) 基于集合关联高速缓存映射技术的高速数据压缩
US7533234B2 (en) Method and apparatus for storing compressed code without an index table
US20070088920A1 (en) Managing data for memory, a data store, and a storage device
CN1264097C (zh) 用于存储和提供解码信息的带高速缓存器的装置及其方法
US6587923B1 (en) Dual line size cache directory
Keramidas et al. Dynamic dictionary-based data compression for level-1 caches
Carvalho Towards compression at all levels in the memory hierarchy
Kesavan et al. Comparative Study on Data Compression Techniques in Cache to Promote Performance
CN113778906A (zh) 请求读取方法、装置、可读存储介质及电子设备

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: 20100526

Termination date: 20131223