能在使用压缩的高速缓存行信息价值的计算系统中使用的处理器和存储器控制器的制作方法

文档序号:6458308阅读:182来源:国知局
专利名称:能在使用压缩的高速缓存行信息价值的计算系统中使用的处理器和存储器控制器的制作方法
技术领域
本发明一般涉及计算系统;尤其涉及能在使用压縮的高速缓存行信息价值 (cache lines' worth of information)的计算系统中使用的处理器和存储器控制器。
背景技术
图l示出了基本计算系统的架构的一部分,包括1)处理器101; 2)高速缓
存102; 3)存储器控制器103;以及4)系统存储器104。处理器101通过执行对
数据元素进行各种操作的指令来执行软件例程。指令和数据元素被存入高速缓存
102和/或系统存储器104。当处理器101需要特定的指令或数据元素时,它在向系 统存储器104请求期望的指令或数据元素前在高速缓存102中进行查找。
一般,高速缓存102被认为比系统存储器104快。更好地说,处理器101等 待高速缓存102中驻留的指令或数据元素的时间少于等待系统存储器104中驻留的 指令或数据元素的时间。高速缓存102和系统存储器104之间的该等待时间差异通 常是由于高速缓存102用比实现系统存储器的存储器单元(例如,DRAM单元) 固有更快的存储器单元(例如,SRAM单元)实现而出现的。
每位存储空间中,SRAM型高速缓存102比DRAM型系统存储器104更昂贵。 因此,图1的计算系统架构尝试通过设计为将更频繁使用的指令和数据元素存入高 速缓存102并将较少使用的指令和数据元素存入系统存储器104来优化成本和性能 两者。通过将更频繁使用的指令和数据元素存入高速缓存,处理器应忍受等待指令/数据从系统存储器104中取的所耗时间的形式的可接收的"计时惩罚命中",因
为高速缓存102中将找到处理器所需的指令/数据的有效百分比。
为了提升"高速缓存命中"的百分比(即,在高速缓存102中找到所需指令
或数据元素的实例),"时间局部性"和"空间局部性"的概念开始起作用。时间 局部性是单个指令或数据元素倾向于在它已被使用后不久被使用的概念。空间局部 性是存储器中相互靠近的指令和数据元素(即具有相似地址)趋于在约同一时间被
使用的概念。时间局部性是通过在首次将指令和数据元素从系统存储器104传递到 高速缓存102后将它们保存于高速缓存102中至少一些时间周期来解决的。
空间局部性是通过将高速缓存102设计成装载来自系统存储器102的数据块 (即,多个指令或数据元素),其内容近似(例如,"包围")需要从系统存储器 104取出的任何单个指令或数据元素来解决的。例如,如果需要来自系统存储器104 的地址X处的指令,代替仅传递来自系统存储器104的所需指令,代替仅将来自 系统存储器104的所需指令传递到高速缓存102,将与关于地址X的多个地址相对 应的内容块从系统存储器104传递到高速缓存102。
图2通过示出将内容105的第一邻接"块"(它通过多个系统存储器地址引 用)载入单个高速缓存行107;且将内容106的第二邻接"块"(它通过多个系统 存储器地址的不同组引用)载入另一单个高速缓存行108来尝试描绘这种情况。为 简单起见,图2将高速缓存204示作单个结构。但各种计算系统是用不同级的高速 缓存进行设计的。例如,许多类型的计算系统具有两级高速缓存(l级(Ll)高速 缓存和2级(L2)高速缓存),其中第一级高速缓存(Ll)对应于比第二级高速 缓存(L2)更少的处理器等待时间。Ll高速缓存被假定存储最频繁使用的数辉元 素和指令,而L2高速缓存被假定存储与Ll高速缓存中的那些相比较少频繁使用 但比系统存储器中的那些更频繁使用的数据元素和指令。
常规地,两个高速缓存级是用与系统存储器相比更快的存储器类型来实现的 (例如,L1和L2高速缓存两者都是用SRAM存储器单元实现的);但是,Ll高 速缓存与处理器集成入同一半导体管芯,而L2高速缓存是用与处理器不同的半导 体管芯实现的。"片载"高速缓存访问快于"非片载"高速缓存访问,对L1高速 缓存的访问对应于与对L2高速缓存的访问相比处理器的更少的等待时间。
存储器控制器103负责采纳高速缓存未满足的来自处理器101的对数据的请求,并管理服务系统存储器104中的那些请求的进程。存在许多不同种类的请求, 诸如对高速缓存中不存在的数据的负载请求,以及需要被存回存储器的来自高速缓 存的数据的驱逐。通常,存储器控制器能流水线化请求,使得许多请求会是未完成 的并可以与更短的平均等待时间并行地服务。存储器控制器负责与特殊存储器技术 的细节对接,并按模块化方式使系统存储器与处理器隔离。存储器控制器可以与处 理器集成,例如在同一管芯上,或者可以分离,例如在芯片组中。
系统存储器通常用特定类型的系统存储器实现(例如,EDORAM、 SDRAM、 DDR等)。


附图中作为示例而非限制地说明本发明,其中相同的标号表示相似的元件,
且其中
图1示出了计算系统架构的一部分。
图2示出了将内容块从系统存储器载入单个高速缓存行。
图3a示出了一种改进方法,其中可以将系统存储器内容的对准块压縮入单个 高速缓存行;
图3b示出了在压縮的高速缓存行从高速缓存中驱逐并被存入系统存储器后实
质系统存储器内容的示例性获得的映象。
图4a示出了能使用压縮高速缓存行的单个处理器架构的一部分。
图4b示出了可由系统存储器控制器用于跟踪已被压縮的其系统存储器中的那
些块的压縮映象。
图4c示出了具有压縮映象高速缓存和压縮/解压縮逻辑的存储器控制器。 图4d示出了具有用于标识压縮映象的物理系统存储器分配的寄存器空间的存 储器控制器。
图5a示出了在将高速缓存行写入系统存储器期间可由图4a的存储器控制器 使用的一对方法。
图5b示出了在从系统存储器读取高速缓存行期间可由存储器控制器使用的三 个方法。
图5c示出了关于引用压縮映象内容的三个方法。图6a示出了存储器控制器的第一实施例。 图6b示出了存储器控制器的第二实施例。 图6c示出了存储器控制器的第三实施例。 图7a示出了高速缓存中实现的常规存储器地址。
图7b示出了能压縮/解压縮高速缓存行信息价值的高速缓存中实现的存储器 地址的一个实施例。
图8示出了能压縮/解压縮高速缓存行信息价值的高速缓存的标签阵列条目的 一个实施例。
图9是示出高速缓存控制器的一个实施例的框图。
图10示出了能压縮/解压縮高速缓存行信息价值的高速缓存中的组和通路选 择机制的一个实施例。
图11示出了字节选择逻辑的一个实施例。
具体实施例方式
髙速缓存行信息价值的压缩
为清楚起见,高速缓存行是高速缓存中存储空间的基本单元。例如,在许多 应用中,唯一的标签和设定地址用于特定地标识计算系统的高速缓存内的单个高速 缓存行。因此,高速缓存行由特定的电路元件(例如,SRAM单元)实现。相反, "高速缓存行信息价值"或"信息线"是可填充高速缓存行的信息量(例如,数据 元素或指令)。这里,回顾图2的讨论,"块"105处存储的信息量对应于高速缓 存行信息价值,因为块105的内容填充高速缓存行107。
图3a呈现了根据空间局部性概念扩展的一种方法,以将正常地占据一对高速 缓存行(即, 一对高速缓存行信息价值的信息被压縮入单个高速缓存行)的一对对 准的系统存储器304的块305和309压縮入单个高速缓存行307。图3a也示出了 第二实例,其中正常地占据一对高速缓存行的另一对对准的存储器块306和310 的内容被压縮在一起以占据第二单个高速缓存行308。压縮是减小表达信息所需的 数据量(诸如指令或数据元素)而不影响消息本身的实质内容(即不消除取回用于 表示该指令或数据元素的"数"的能力)的技术。将一对对准块压縮入单个高速缓 存行的能力将获得更快的计算系统性能,因为增加了高速缓存的有效大小(因此,减小了需要引起对较慢高速缓存级或系统存储器的较长访问等待时间的可能性)。 此外,如以下更详细地描述的,可以通过抑制对信息的访问来提高计算系统带宽, 因为用已被访问的其它信息进行了压縮。
在一个实施例中,参考图3a和图4a,处理器的高速缓存控制器410配备了压 縮/解压縮逻辑411,它在以下情况中将两个高速缓存行信息价值压縮在一起1) 高速缓存行信息价值表示对准的邻接存储器块;以及2)这对高速缓存行信息价值 的信息内容能压縮入单个高速缓存行。所使用的压缩类型可采取各种形式,诸如 Lempel-Ziv、 Wilson-Kaplan、 X-Match或可能其它已知或专用的压縮类型。
在一实施例中,伙伴块被对准的说法意味着与伙伴块相关联的最低地址是伙 伴块的组合大小的倍数。例如,如果每个高速缓存行信息价值是64个字节,则两 个邻接高速缓存行信息价值的基地址N(即,N处的第一个称作"较低"高速缓存 行信息价值且N+64处的第二个称作"较高"或"上部"高速缓存行信息价值)可 除以128 (即,N/128的余数为0)。作为另一示例,参考图3a,块305可用基地 址N寻址;且块309可用地址N+64寻址。
为简便,对准的邻接高速缓存行信息价值被称作相互的"伙伴"。因此,根 据以上段落,如果其实质内容能压缩,则一对伙伴高速缓存行信息价值由压縮/解 压縮逻辑411压縮。同样,如果出现对高速缓存行的内容的写以使该内容不再可以 压縮入单个高速缓存行,压縮/解压縮逻辑411能将被压縮的高速缓存行信息价值 解压縮为两个分开的伙伴高速缓存行信息价值。
一旦一对高速缓存行信息价值已被压縮在一起,它们可由整个计算系统作为 单个高速缓存行信息价值处理(例如,通过用单个标签和设定地址引用同时被存入 一个高速缓存)直到出现对被压縮信息的写操作以使得它被认为不再是可压缩的。 在被认为是不可压縮的时,将信息分成一对伙伴高速缓存行。因此,如果处理器 401连续地从高速缓存402中访问特定的高速缓存行压縮信息价值,处理器401连 续地只读取单个高速缓存行,尽管实际上正读取一对高速缓存行的信息等效物。该 详细描述的末端是关于示例性压縮/解压缩逻辑实现的细节,它例如可以在其高速 缓存能压縮/解压縮高速缓存行的信息价值的处理器中被例示。
一旦信息已被压縮入单个高速缓存行信息价值,该单个高速缓存行信息价值 可被处理为信息的任何"正常"未压縮高速缓存行,诸如1)从一个高速缓存中读取/写入其中(包括特殊的高速缓存级);2)从系统存储器中读取/写入其中; 以及3)被设计为传输高速缓存行信息价值的任何结构(诸如,仅举几个例子在 处理器和控制对系统存储器的访问的存储器控制器之间传输高速缓存行信息价值 的前端总线或点对点链路;以及在多处理器环境中,共享高速缓存信息的一对处理 器)。
作为高速缓存行的压縮信息价值的可能传输的一个示例,参考图4a,考虑一 高速缓存行信息价值从高速缓存402中驱逐(例如,因为它已不被频繁地使用以足 以被认为值得继续存储在高速缓存402中)并被转移到系统存储器404的情况。这 里,高速缓存行的压縮信息价值可存入可以存储单个高速缓存行信息价值的单个块 的系统存储器寻址空间。例如,图3b示出了在高速缓存行307的压縮内容已从高 速缓存302和402中驱逐后,相对于图3a的块305和309的实质内容的系统存储 器304的使用的描述。图3b示出了在从高速缓存302和402驱逐并存入系统存储 器304、 404时,存储高速缓存行307的内容以仅占据存储器块305。这与图3a所 示的用于存储相同信息量的压縮前存在的系统存储器的使用完全相反。
注意,即使在按压縮形式存入系统存储器时两个高速缓存行的数据价值可存 入正常地由单个高速缓存行的数据价值所占据的空间,但这不意味着系统物理存储 容量象压縮高速缓存那样的有效提高。这是因为,在系统存储器中,地址空间未被 压縮。压縮地址空间需要修改页面表,因此需要操作系统支持,这里提供的方案能 完全避免这种情况。
这样,压縮后,仅需要块305来存储压縮前存入块305和309的那些信息内 容。图3b还示出,在驱逐时,在系统存储器304中恢复高速缓存行308的压缩内 容,以仅占据块306,尽管在压縮前块306和310被用于存储相同的信息。如果处 理器401再次需要图3b的"压縮内容"块305、 306之一,则存储器控制器403a 将它从系统存储器304、 404中读出作为单个高速缓存行信息价值并将其从存储器 控制器403a传递到处理器401 (还是作为单个高速缓存行信息价值)并将其写入 处理器的高速缓存402 (还是作为单个高速缓存行信息价值)。
存储器控制器
在单个处理器环境中,存储器控制器可基本上在未认识到压縮/解压縮活动发生的情况下运行。这样,例如,处理器401可"跟踪"和操作被压縮的那些高速缓
存行信息价值以及未被压縮的那些;且相反,存储器控制器被设计为根据处理器 401分配的标识符或标签简单地读取和写入数据块。
但是,考虑系统存储器的哪些块被用于存储与压缩的高速缓存行信息价值相 对应的内容(和/或系统存储器的哪些块被用于存储与未压縮的高速缓存行信息价 值相对应的内容)的更复杂的存储器控制器403a能减少对系统存储器访问的需要, 从而更有效地使用计算系统内的系统存储器。例如,通过因为其实质内容刚从压縮 的第一数据块中被读取而拒绝读取第二数据块,可以有效地减少对系统存储器的需 要。
作为更详细的示例,考虑其中处理器能将信息压縮入其高速缓存行的多处理 器环境。这里,第一处理器(例如,图4a的处理器401)可以将信息压縮入一个 高速缓存行,随后将其从其高速缓存402中驱逐,以使它被存入系统存储器404。 如果多处理器系统中的第二处理器(图4a中未示出)在不知道第一处理器的压縮 活动的情况下期望从系统存储器404中读取压縮信息的两个伙伴中存储的信息,存 储器控制器403a可被设计成"足够智能"以响应于接收到来自第二处理器的一对 读取请求(即,用于第一伙伴的第一请求和用于第二伙伴的第二请求)而仅读取被 压縮的高速缓存行的信息价值。这里,被压縮的高速缓存行信息价值将足以满足第 二处理器作出的这两个请求。
压缩映象
图4b提供了用于称作压縮映象412的信息体的三个实施例412a、 412b、 412c, 它由存储器控制器403a用于识别其系统存储器404内压縮信息的存在。首先,参 考"基本实施例"412a,注意,压缩映象412a可作为系统存储器404中的位图进 行存储,它为系统存储器404中的每个信息块标识该块的相应高速缓存行信息价值 当前是按压縮格式还是非压縮格式存储于系统存储器404中。
在典型的实现中,地址列不实际包含于压縮映象中(例如,在该映象覆盖整 个存储器的情况中)。图4b示出了实施例412a、 412b、 412c中的每一个中的地址 列,使得读者易于理解压縮映象的组织和结构。特别是,在基于图3b所示的系统 存储器的示例环境中, 一些位已被提供有效值"1"(同时其它一些未被提供无效 值"0"),且这将在以下立即进行讨论。如此,压縮映象可实现为被组织成在位置(例如数据字段)处具有特定值的数据结构,它们对应于特定的系统存储器块。
描述图4b的压縮映象实施例412a,以应用于图3b所示的系统存储器。特别 是,回想图3b的系统存储器将与压縮前块305和309中存在的信息压縮相对应的 信息存入块305。由于图3a的块305和309的信息已被压縮在一起,图4a的压縮 映象412a向这些块305、 309中的每一个提供了一指示("1")。同样,因为图 3a的块306和310的信息已被压缩在一起(进入块306),所以图4b的压縮映象 412a向这些块中的每一个提供与305和309相同的指示。参考图4a,注意,可将 压縮映象412a存入系统存储器404本身。
图4b的"更精巧的"压縮映象实施例412b包括如以上相对于实施例412a所 述的位图信息,以及以下形式的附加信息1)提供高速缓存行信息价值的实质内 容的信息(例如,在诸如实例414的选择情况中);2)用于按压縮格式存储的每 个高速缓存行信息价值的压缩类型的指示415。
前者附加信息414对应于压縮的极端形式,它可应用于a)具有未压縮的高 速缓存行信息价值的系统存储器块的内容;和/或b)在已按压縮格式存入系统存储 器中的那些高速缓存行信息价值"之上"(实施例412b指示了前者的单个实例)。 例如,如果被存入特殊系统存储器块的高速缓存行信息价值是"全零";则可以将 单个"零"(例如,零414)存储于压縮映象412b中的特殊块的位置处。类似的 指示可用于任何类型的常数值(例如,"全l")。这里,存储器控制器被预计包 括标识具有常数值的那些高速缓存行的逻辑(诸如总和逻辑(例如,所有零的和将 是零))。
后者形式的附加信息415指示特定类型的压縮。这里,回想可以使用不同类 型的压縮(例如,Lempel-Ziv、 Wilson-Kaplan、 X-Match等)。不仅单种压縮可存 在于任何一种特殊计算系统内(例如,仅使用Lempel-Ziv的单个系统);而且可 以构思单个系统能执行不同类型的压缩的实施例(例如,可使用Lempel-Ziv、 Wilson-Kaplan、 X-Match和可能其它压縮算法中的任一种的单个系统)。
压縮映象实施例412a、 412b两者都示出了一位,它为可存储高速缓存行信息 价值的系统存储器中的每个对准块提供了压縮/未压縮状态。相反,实施例412c仅 使用一个位来表示每对对准系统存储器块的压縮/未压縮状态。这里,值得注意的 是,可以使用2: 1以外的压缩比(诸如4: 1);以及根据实施例412c的方法实现的压縮映象的大小将随着压縮比增加而变小。即,对于2: l压縮, 一位用于表 示存储器块的每个对准对;而如果使用4: l压縮比,则一个位将用于四个对准存 储器块的每个组。还注意,可以将实施例412b的更多精巧信息添加到实施例412c中。
压縮映象的可选实施例可使用选择性的分层方案,而非平位矢量。 一个平位 矢量必须具有一个位用于存储器中的每个块。压縮可选择性地仅应用于存储器的某 些区域,因此可使压縮映象仅覆盖受到压縮的那些存储器区域。同样,压縮可实际 上仅出现于存储器区域的一个子集中(迄今为止),尽管另外的区域可以受到压縮。 覆盖已被完全或部分压縮的区域的压縮映象的各部分可链接在一起作为链接列表, 或者插入逐渐覆盖存储器的较小区域或子区域的数据结构的分层结构。
回想用于压縮一对伙伴的条件是伙伴的实质内容"可压縮"入单个高速缓存 行信息价值,且由于跨不同压縮方案使用的不同数学技术,特殊的压縮技术可将一 对特殊伙伴看作是可压縮的同时其它压縮方案可不将相同的伙伴看作是可压縮的
(例如, 一对伙伴的实质内容在Lempel-Ziv下是可压縮的而在Wilson-Kaplan或 X-Match下不是)。这样,"提供"不同类型压縮的计算系统中可能比仅提供单种 压縮的计算系统压縮更多的伙伴。图4b的增强位图实施例412b的压縮类型指示 415可在这种系统中使用(注意,它指示在块305、 309中使用压縮类型"A"而在 块306、 310中使用压縮类型"B")。因此,图4a的压縮/解压縮逻辑411应被认 为能根据特殊实施例执行单种或多种压縮。
此外,图4a中应注意,压縮映象可存入系统存储器404。在一个实施例中, 存储器控制器403a被设计成在合适的时刻从系统存储器412中取出一部分压縮映 象412,以检査一个或多个系统存储器块的压縮/解压縮状态。
为了降低与访问系统存储器404相关联的效率惩罚以取出一部分压縮映象 412,还注意系统存储器403a被设计成包括压縮映象高速缓存413。压縮映象高 速缓存413包含压縮映象的一个或多个当前取出的部分。类似于正常高速缓存,压 縮映象信息可以在压縮映象高速缓存413中被连续更新,直到被驱逐到系统存储器 404。如以下相对于图5a到5d更详细地描述的,在需要压縮映象信息时,引用压 縮映象高速缓存413。如果期望的信息未在压縮映象高速缓存413中找到,则从系 统存储器404中驻留的压縮映象412中取出该信息。图4c呈现出被配置为用压縮映象412工作的存储器控制器403b不仅可以设 置在具有单处理器420的计算系统中;也可以具有没有压縮/解压縮它们高速缓存 的信息的能力的一个或多个处理器(诸如处理器420和可能的图4c中未示出的其 它处理器)。因此,图4c的存储器控制器403b能够是意识到任何压縮活动的计算 系统中的主要(可能是仅有的)组件。因此,与图4a相对比,图4c的描述示出存 储器控制器403b本身可以用用于压縮和解压縮高速缓存行的合适压縮/解压縮逻辑 416改型(也注意,处理器420无这种逻辑)。压縮/解压縮逻辑416可支持一种或 多种类型的压縮/解压縮技术。
存储器控制器403b还可以包括压縮映象高速缓存413,如以上参考图4a所描 述的。在用不维持压縮/解压縮活动的任何认识的处理器工作时,存储器控制器403b 提供未压縮的高速缓存行数据价值到处理器/从其接收之。以下更详细地描述在处 理器不能处理压縮高速缓存行的环境中运行的存储器控制器403b可执行的特定方 法。
图4d打算表达压縮映象412可存入系统存储器404的"物理"连续寻址范围 而非按"虚拟"方式跨不相关的存储器位置执行(例如,使用软件管理的链接列表 技术)。通过执行跨物理寻址空间的压縮映象412,操作系统(OS)可在不意识到 压縮/活动的情况下运行,从而避免OS由于执行用于管理或认识系统存储器404 的哪些位置将用于压縮映象412而停顿。这样,避免了对OS施加有效开销度。
通过配置压縮映象以便跨系统存储器的寻址空间的物理范围执行,压縮映象 也应能由计算系统的硬件而非其操作系统管理和控制。如上所述,这应"释放" OS以便实质上不负担与压縮映象有关的开销。在一个实施例中,基本输入输出系 统(BIOS) 430通过使得一对寄存器431、 432被写入来指示系统存储器404的哪 个特定物理地址范围将被用于压縮映象412。例如,可以将第一地址存入寄存器 431,它定义了压縮映象的起始地址;并可以将第二地址存入寄存器432,它定义 了压縮映象的结束地址。
或者,压縮映象的大小可存入寄存器431、 432之一同时将起始或结束地址存 入寄存器431、 432中的另一个(注意,压縮映象的大小可根据2: 1、 4: 1或所使 用的另一压縮纵横比而变化)。在寄存器431和432的加载后,硬件能制止将非压 縮映象信息存入通过寄存器431和432所标识的寻址空间;同样,仅将压缩映象引导向同一寻址空间。或者,寄存器431、 432可设置于处理器中。
如果压縮映象在多个局部存储器上物理分布,或者使用不需要压縮映象的每 个部分驻留在物理邻接存储器中的压縮映象方案,可使用一对以上的寄存器对来从 BIOS向硬件通知压縮映象驻留在哪里。
还值得注意的是,在隐瞒操作系统或不由操作系统调页的邻接物理地址范围 上存储压縮映象应允许使用物理地址参考压縮映象而不必处理在操作系统将页面 交换出物理存储器并进入虚拟存储器并再次返回时会出现的虚拟地址变化和页面 错误。这是其中该方案避免对OS支持的需要并对软件透明的另一种方法。
压縮映象使用
如上所述,压縮映象表示主存储器中存储的特殊高速缓存行信息价值是被压 縮还是未压縮。在各种实施例中,它通过改变该存储器的压縮状态的对存储器的每 次写入进行更新。压縮映象可用于至少以下三种用途1)有效地改变已按非复制 方案压縮的上高速缓存行信息价值的目标地址;2)判定刚从系统中读取的高速缓 存行信息价值是否应由执行解压縮的存储器控制器解压縮;以及3)如果认识到用 于分开伙伴的请求且这些伙伴已被压縮,则抑制系统存储器访问。以下在对系统存 储器写入和从系统存储器读取的环境下更完整地讨论这些中的每一个。
系统存储器写入
图5a示出了一对存储器控制器方法551、 552,用于将高速缓存行信息价值写 入系统存储器块。图5a的方法551、 552中的每一个都调用压縮映象。根据第一方 法551,压縮的高速缓存行信息价值由存储器控制器(例如,在从处理器发送时) 501接收。假定压縮的高速缓存行信息价值被存储器控制器识别为处于压縮格式 (例如,在控制首部或激活线中具有一设定位)。响应于接收到压縮的高速缓存行 信息价值,存储器控制器更新502压缩映象以反映接收到的高速缓存行信息价值被 压縮。图4b的实施例412a—c中的任何一个或其变型可用于实现该压縮映象。
为执行更新502,参考图4a,存储器控制器403a引用压縮映象高速缓存413。 如果与同接收到的压縮高速缓存行信息价值相关联的系统存储器块相互关联的压 縮映象的部分驻留在压縮映象高速缓存413内;则仅更新压縮映象高速缓存413(以 避免访问系统存储器404中的压縮映象412)。如果压縮映象的合适部分不在压縮 映象高速缓存413内,则该合适部分从系统存储器404中取出并被更新502。还注意在存储器控制器403b耦合到不使用具有压縮信息的高速缓存行的处 理器的一实施例中(诸如图4c中描述的),进程501将被稍许修改以1)在框
501处仅接收未压縮高速缓存行信息价值;2)在框501和502之间,存储器控制 器403b将确定接收到的高速缓存行信息价值可与其伙伴压縮(例如,通过引用存 储器控制器403b的输入或输出队列中其伙伴的实质内容);以及3)在框503的 执行前,存储器控制器403b将压縮接收到的高速缓存行信息价值及其伙伴。
回想两个货币高速缓存行信息价值对应于主存储器中地址空间的一对对准 块。这里, 一对对准块的组合可被视作存储器空间的较大"宏模块";其中,当各 自未被压縮时, 一个伙伴占据宏模块的"下半部",且另一个占据宏模块的"上半 部"。当压缩这些伙伴时,可用仅用于较小伙伴块之一的寻址信息(例如用于宏模 块的下半部的寻址信息)参考整个宏模块的实质内容。当未被压縮时,宏模块的上 半部和下半部是分开可寻址的。
例如,简要地参考回图3a和3b,块305和309的组合可被视作信息的宏模块, 其中块305对应于宏模块的"下半部"(因为它用模块对305、 309的下寻址空间 参考)且块309对应于宏模块的"上半部"(因为它用模块对305、 309的上寻址 空间参考)。在未被压縮时,"下半部"305是分开可寻址的且"上半部"309是 分开可寻址的。在被压縮时,两个半部的组合内容可通过寻址下半部305而被访问。
存储器控制器应被设计为对任何未压縮的高速缓存行信息价值认识到它被假 定占据宏模块的哪半部且其相应的伙伴被假定占据宏模块的哪半部。例如,简要地 再参考图3b和4b,存储器控制器将被设计为认识到被寻址到上半部309的未压縮 高速缓存行信息价值是被寻址到下半部305的未压縮高速缓存行信息价值的伙伴 线。基于定义哪些块相互是伙伴的对准方案的数学方法,这种认识是直接的。为简 单,以下将把宏模块的下半部称作下部块并将宏模块的上半部称作上部块。
对于2: l的压縮比,在其实质内容被压縮时,关于宏模块的上部块和下部块 的使用的一对实施例是可能的。再参考图5a,在称作"非复制"的第一实施例中, 不管要写入系统存储器的信息的压縮高速缓存行是由存储器控制器压縮还是由处 理器压縮,被压縮的高速缓存行信息价值的写入503包括对相应宏模块的仅下部块 的地址空间的写入。图3a和3b示出了 "非复制"方法,因为如原来讨论的,如果 图3a的块305和309被压縮在一起,则仅写入图3b的下部块305 (当然,作为选择,可仅写入上部块)。
根据"非复制"方法,如以下参考图5b的方法555更详细地描述的,存储器 控制器在读取前引用压縮映象,因为对已压縮入下部块的上部块的请求(例如,通 过未意识到任何压縮活动的系统组件)仅可以通过从下部块中读取来得到满足(即, 请求中指定的目标不同于从中进行读取以满足该请求的系统存储器中的位置)。
在称作"复制"的可选的第二实施例中,压縮高速缓存行的写入503包括对 可应用伙伴组中所有块(例如,设定用于2: l压縮的可应用伙伴中的下部块和上 部块)的地址空间的写入。例如,对于2: l压縮方法,如果图3a的块305和309 被压縮在一起,图3b的块305和309两者用相同的压縮信息写入。在接收到对上 部块的信息的请求时,复制方法允许存储器控制器避免必须从较低的压縮信息块中 检索信息(如以上相对于"非复制"实施例所述的)。
这样,压縮映象不需要被引用用于对信息的"上部"块的请求。如果要修改 图3b以反映复制方法,上部块309将被遮蔽且可以进一步理解上部块309的内 容是与下部块305中存储的内容相同的压縮内容。同样,上部块310将被遮蔽且可 以进一步理解上部块310的内容是与下部块306中存储的内容相同的压縮内容。
在图5a的第二存储器控制器写入方法552中,从能进行压縮的处理器接收504 未压縮高速缓存行。这样,接收到的未压縮高速缓存行无论如何都被认为是"不可 压縮的"。因此,更新505压縮映象(例如,通过将"0"写入压縮映象中表示未 压縮高速缓存行的相应块的位置处)并将其写入系统存储器506。
写入方法552也可稍许修改以表示存储器控制器执行压縮/解压縮的系统(诸 如图4c中所述的其中处理器不支持压縮的系统)中的写入过程。这样,与以上讨 论不同,不知道接收到的未压縮高速缓存行是可压縮的还是不可压縮的。在这种情 况中,在框504和505之间,存储器控制器的压縮/解压縮逻辑416判定接收到的 高速缓存行是不可压縮的(例如,通过分析其内容连同其伙伴的内容,如在存储器 控制器的输入队列或输出队列中找到的)。如果它被认为是可压縮的,则将它与其 伙伴压縮且写入506将是压縮信息的写入。
系统存储器读取
图5b示出了三种存储器控制器读取方法553、 554、 555。第一读取方法实施 例553指向诸如图4c所示的实现,其中存储器控制器执行高速缓存行的压縮和解压縮且与存储器控制器通信的处理器不使用支持压縮信息的高速缓存行。这样,对
于从系统存储器读取507的任何高速缓存行信息价值,存储器控制器引用508压縮 映象以了解正被读取的信息是否是压縮的(注意,对压縮映象的引用508被示为在 读取507之后,但作为选择,可以与读取507并行执行和/或在其之前执行的)。 如果读取的高速缓存行信息价值是压縮的,则存储器控制器解压縮之509、 510。 如果读取的高速缓存行信息价值未解压缩,则存储器控制器不尝试解压縮之509、 511。
如果存储器控制器正巧驻留在具有认识到压縮高速缓存行信息价值存在的组
件的计算系统中;则可以在没有压縮/解压縮逻辑的情况下实现存储器控制器(例
如,图4a的环境是可应用的而非图4c的环境)。如果这样,存储器控制器应被设 计成简单地表示读取信息是被压縮还是解压縮(例如,通过调节附加到高速缓存行
信息价值的首部内的值)而非实际上进行解压縮。为表示对这种存储器控制器的读 取过程,图5b的方法553的框510应对应于提供读取信息被压縮的指示(例如, 在首部或激活线中)且框511应对应于提供读取信息未被压缩的指示。
方法554和555可以由具有压縮/解压縮逻辑的存储器控制器或者没有压縮/ 解压縮逻辑的存储器控制器执行。已简要提到的第二读取方法554包括将存储器控 制器设计为"足够智能"以避免第二次读取系统存储器的已读取的压縮高速缓存行 信息价值的伙伴。根据该方法,如果存储器控制器认识到存在对彼此作为伙伴的高 速缓存行信息价值的未决读取请求,引用压縮映象512、 514。如果压縮映象显示 这些伙伴被压縮在一起,存储器控制器仅从系统存储器中读取518压縮的高速缓存 行以满足这两个请求。
如果压縮映象显示这些伙伴未被压縮在一起,则存储器控制器从它们的相应 下部和上部信息块分开地读取这两个高速缓存行信息价值(对于2: l压縮方案) 516、 517,以满足这些请求。如果没有对彼此作为伙伴的高速缓存行信息价值的未 决的读取请求,存储器控制器类似于正常的存储器控制器运行并简单地执行从系统 存储器的分开读取513,以满足每个请求。
值得注意的是,术语"未决"请求表示物理存储器组件仍未实际响应于发出 该请求的存储器控制器。但是,存储器控制器可能抑制第二请求,即使该物理存储 器组件己响应于第一个请求(即,第一请求不在是"未决的")。例如,如果可以从第一请求的结果中(例如从存储器控制器)提供用于第二请求的数据,存储器控 制器可被设计成抑制对压縮信息的任何第二请求。因此,抑制请求的能力可扩展到
超出图5b的方法554所描述的那些情况的情况。
在存储器控制器被设计成执行解压縮的情况下,存储器控制器可以在连续流
程中执行读取方法553和554两者其中1)方法554主要在读取前执行,2)方 法553主要在读取后执行,以及3)方法554的读取518、 517、 513中的任一个还 对应于读取507以将方法553、 554 "连接"在一起。在存储器读取前进行对压縮 映象514的引用的情况下,如果方法553、 554按此方式连接,注意引用508可以 被"跳过"(即不执行)。这是因为对方法553所指示的询问509的回答要在可以 从在读取前进行的引用514中收集读取之后执行。
方法555对应于可用于实现以上相对于图5a讨论的"非复制"写入方法的写 入方法。这里,如果被请求的高速缓存行信息价值的目标地址对应于伙伴对519、 521的上部块,引用压縮映象。如果被请求的高速缓存行信息价值已被压縮,则从 下部块522、 520读取被压縮的高速缓存行。如果被请求的高速缓存行信息价值未 被压縮,则从读取请求中指定的目标块中读取未压縮的被请求的高速缓存行信息价 值。如果读取请求中指定的目标块不是上部块,则存储器控制器简单地用对应于下 部块519、 520的寻址而从系统存储器中读取压縮的或未压縮的高速缓存行信息价 值(即,不需要对压縮映象的引用)。
类似于方法554,方法555可与方法553组合,用于由还执行解压縮的存储器 控制器执行的存储器读取。这里,方法555的读取523和520中的任一个可视作方 法553的读取507,以便将两个方法555、 553连接在一起。如果方法555的执行 在存储器读取507前通过压縮映象引用521,可以跳过压縮映象引用508,因为可 以从引用521中收集对询问509的回答。如相对于图5a讨论的复制方案的使用消 除了对方法555的需要,因为用对询问522的"是"回答实现了目标地址的不变。
压縮映象高速缓存查找
图5c提供了与以上相对于图5b讨论的对压縮映象508、 514、 521的引用有 关的三种方法556、 557、 558。特别是,方法556示出了可用于实现图5b的压縮 映象引用508、 514、 521中任一个的过程的更详细描述。方法556对应于基本高速 缓存/系统存储器读取过程一虽然应用了存储器控制器的压縮映象高速缓存和系统存储器中驻留的压縮映象的新颖特点。较佳地,为引用压縮映象556,存储器控制
器首先引用525其装载的压縮映象高速缓存413。
当压縮映象高速缓存413仅包含系统存储器404中存储的整个压縮映象412 的一部分时,如果在压縮映象高速缓存526中找到高速缓存行的信息(g卩,"命中") 一对压縮映象的引用完成。如果在压縮映象高速缓存中未找到特殊块的信息(即, "不命中"),则从系统存储器526、 527中驻留的完整的压縮映象中取出该信息 (即,执行对系统存储器的读取)。
压縮映象不命中对应于效率惩罚,因为结果要执行系统存储器读取527。方法 557、 558对应于可由存储器控制器执行的方法,以减轻与在相应存储器读取516 一518、 520、 523之前的图5b的压縮映象引用514、 521中的任一个的压縮映象高 速缓存不命中相关联的计时惩罚命中。方法557、 558两者应用于执行解压縮(例 如,因为它与不使用图4c所述的压縮高速缓存行的处理器一起工作)且因此执行 用于高速缓存行的所有系统存储器读取的图5b的方法553的存储器控制器。
方法557示出存储器控制器可被设计成在与从系统存储器的高速缓存行信息 价值的用于满足第一存储器读取请求的读取530重叠的时间周期内执行在满足第 二存储器读取请求的过程中发生于存储器读取514、 521之前的对压縮映象高速缓 存531的引用。即,如果高速缓存查找531结果是不命中,执行具有某一并行度的 不同请求的前存储器读取高速缓存査找531和存储器读取530应帮助减轻计时惩罚 命中。这里,存储器读取和高速缓存査找之间的时间重叠度(例如,部分或另外的) 可根据实现而变化。
在流水线存储器控制器和系统存储器的特殊情况(从而能并行地服务多个系 统存储器读取请求)中,用于服务第一请求的高速缓存行信息价值的读取530可与 在压縮映象査找531是不命中的情况下所需的压縮映象信息532的读取并行地继 续。方法557以流程图形式(标签530、 531、 532中的下标"1")和甘特图形式 (标签530、 531、 532中的下标"2")两种形式示出了该情况。
方法558可应用于以上相对于图5a讨论的"非复制"实施例。它示出在执行 引用514、 521时预测(诸如"压縮"或"未压縮")可以在高速缓存不命中的情 况中使用;并示出用于检査是否需要解压縮的对压縮映象508的后续引用被用于检 查预测的有效性。根据方法558,如果高速缓存査找导致不命中532,则被请求的高速缓存行的状态被预测为被压縮或未压縮的。在第一实施例中,该状态被保守地 预测为是未压縮的。在另一实施例中,压縮映象内容的最近历史被用作用于预测压 縮状态或未压縮状态的基础。随后,根据预测取出高速缓存行。
例如,如果被请求的高速缓存行信息价值对应于上部块并被预测为处于压縮 状态,则从下部块533的地址读取高速缓存行信息价值。相反,如果高速缓存行信
息价值的被预测状态是未压縮的,则从上部块的地址读取533高速缓存行的信息价 值。随后,从系统存储器534中取出压縮映象的合适部分(因为不命中532指示压 縮映象不包含用于可应用的高速缓存行信息价值的信息)。随后,检査合适的压縮 映象信息以了解预测是否准确535。如果这样,执行其余读取请求过程。在另一实 施例中,另一请求的压縮映象高速缓存更新可出现于询问532的执行后但在框534 的执行前。如果这样,框534可代替地对应于压縮映象的"再调査";且如果出现 命中,可完全消除对压縮映象信息的系统存储器的取出。
存储器控制器实施例 图6a到6c示出了各种存储器控制器实施例603a、 603b、 603c;其中每个存 储器控制器实施例603都包括压縮映象高速缓存613a、 613b、 613c。实施例613a 不包括任何压縮或解压縮逻辑电路。实施例613b包括解压縮电路616b。实施例613c 包括压縮逻辑电路616d和解压縮逻辑电路616c。对于实施例603a、 603b、 603c 中的每一个,总线/点对点链接接口 601对应于存储器控制器的接口,其中l)接 收对存储器读取和存储器写入的请求;2)提供对这些请求的响应。因为请求可能 通过总线接收和响应(例如,前端多点总线);和/或在点对点链接上接收和响应
(例如,接收请求的第一输入链接和发送响应的第二输出链接),接口 601可以是 与总线和/或点对点链接的接口。
每个实施例603a、 603b、 603c的请求/响应队列602在输入方向上将请求排队
(例如,在第一请求队列中)。每个实施例603a、 603b、 603c的调度器逻辑电路 623调度这些请求的服务。每个实施例603a、 603b、 603c的存储器请求队列604 将已由调度器逻辑电路623调度的请求排队。每个实施例603a、 603b、 603c的存 储器接口 605负责从与存储器控制器耦合的特定类型的存储器中读取信息/将信息 写入其中。每个实施例603a、 603b、 603c的请求/响应队列602也在输出方向上将 对请求的响应排队(例如,在第二响应队列中)。在各种实施例中,上述更新或引用502、 505、 514、 521可由调度器逻辑电路 执行(或者来自于某个其它合适位置)。对于实施例603a、 603b、 603c中的每一 个,在第一实例中,对压縮映象高速缓存613的输入612可被视作将压縮映象信息 从外部存储器提供给压縮映象的输入(例如,在压縮映象高速缓存不命中的情况 中)。此外,在第二实例中,输入612可以被视作对与来自系统存储器的高速缓存 行信息价值的读取相关联地执行的压縮映象信息的引用。
这里,通过图5b的方法553的以上讨论回想如果存储器控制器能执行解压縮 一例如实施例603b、 603c应用一引用压縮映象508。如果压縮读取数据,多路复 用器618选择解压縮逻辑电路616b、 616c的输出(注意对解压縮逻辑电路的输入 是沿着存储器接口 605b、 605c的数据路径输出)。如果读取数据未被压縮,多路 复用器选择从存储器接口 605b、 605c流出的数据路径而不沿该通路调用解压縮逻 辑电路。
图6c示出了包括压縮逻辑电路616d以及解压縮逻辑电路616c的实施例。压 縮逻辑电路616d被示作耦合到存储器请求队列604c。这样,存储器请求队列604c 中观察到(或引用)的任何可压縮的伙伴线信息价值可在被写入系统存储器前被压 縮到一起。此外,线617指示可以将等待被写入系统存储器的任何高速缓存行信息 价值与其伙伴进行压縮,即使其伙伴位于(或引用)请求队列或响应队列中。附加 地或或者,压縮逻辑电路可耦合到请求/响应队列602b、 603c。
能压縮/解压縮信息的高速缓存
图7A示出了常规高速缓存中实现的示例性存储器地址。在常规高速缓存中, 根据标签、组和偏差成分划分地址。组成分用于选择多组线之一。类似地,偏差成 分是地址的较低位,它用于选择线内的字节。图7B示出了用于在能与压縮信息一 起工作的高速缓存(以下称作"压縮高速缓存")中査找的存储器地址的一个实施 例。图7B示出了伙伴位的实现,它用于将信息的伙伴线映射入同一组。该伙伴位 被用于不压縮信息线的实例中。因此,如果未压縮信息线,伙伴位指示要使用两个 压縮的信息伙伴线中的哪一个。
在一个实施例中,用于组选择的地址位的窗向左移1位,以使伙伴位位于组 选择和字节偏差位之间。这样,伙伴线映射到同一高速缓存组,因为伙伴位和组选
择位不重叠。现在不再是组选择位的一部分的伙伴位变成标签的一部分,尽管实际的标签大小并未增加。在常规未压縮的高速缓存中,伙伴位是地址的一部分,并在 组选择中用于确定地址散列到奇数还是偶数高速缓存组。
图8示出了用于压縮高速缓存的标签阵列条目的一个实施例。标签阵列条目 包括伙伴位(例如,作为地址标签位的一部分)以及压縮位。压縮位使得压縮高速 缓存标签比常规未压縮高速缓存的标签多一个位。压縮位指示信息线是否被压縮。 特别地,压縮位指定如何处理伙伴位。如果压縮位指示压縮信息线,则将伙伴位作 为偏差的一部分处理,因为线是压縮对。如果压縮位指示无压縮,则伙伴位被认为 是标签阵列的一部分并忽略作为偏差的一部分。
图9是说明高速缓存控制器904的一个实施例的框图。高速缓存控制器904 包括组和通路选择逻辑910、字节选择逻辑920和压縮逻辑930。组和通路选择逻 辑910用于选择压縮高速缓存内的高速缓存行。图IO示出了压縮高速缓存中的组 和通路选择逻辑910的一个实施例。参考图10,组和通路选择逻辑910包括标签 比较逻辑1010,它接收来自标签阵列的输入以根据接收到的地址选择高速缓存行。 标签比较逻辑1010考虑高速缓存行是否保存压縮数据。
因为高速缓存行可以保存可变数据大小,标签比较逻辑1010也是可变长度, 这取决于特殊行是否被压縮。因此,标签匹配考虑压縮位。当可通过至少2: l压 縮时,每条线的两段被存入单个物理高速缓存行(例如,在一条通路中)。需注意 这不同于常规分段的高速缓存设计,其中在未被压縮时可以同时将给定逻辑线的不 同逻辑段存入不同通路。
根据图9,字节选择逻辑920选择线内的寻址数据。根据一个实施例,字节选 择逻辑920依赖压縮位。图11示出了字节选择逻辑920的一个实施例。字节选择 逻辑920包括用于在必要时解压縮选定的高速缓存行的解压縮器1110。输入多路 复用器根据压縮位在解压縮的高速缓存行信息价值和未压縮的高速缓存行信息价 值之间进行选择。在一个实施例中,偏差范围取决于信息线是否被压縮。
如果信息线被压縮,则地址的伙伴位被用作偏差的较高位。如果信息线未被 压縮,绕过解压縮器1110且地址的伙伴位不用于偏差。将选定的线保存于缓冲器 中,其大小两倍于物理线大小以容纳压縮数据。可选实施例可选择使用伙伴位来选 择解压縮字的哪一半存储于长度等于物理线大小的缓冲器中。但是,缓冲整个信息 线对于在对高速缓存的写入操作后修改和再压縮数据来说是方便的。压縮逻辑930也可用于确定何时要压縮一信息线。根据一个实施例,使用机 会压縮来确定何时压縮信息线。上述机制允许映射到同一组并仅伙伴位不同的任意 两个高速缓存行信息价值被一起压縮入一个高速缓存行。在一个实施例中,该机制 改变了组映射函数并选择伙伴位,以使它允许相邻的存储器信息线被压縮在一起, 这利用了空间局部性。
结束评述
还应注意,本描述部分的实施例不仅可以在半导体芯片内实现也可以在机器 可读媒体内实现。例如,上述设计可存储和/或嵌入与用于设计半导体器件的设计
工具相关联的机器可读媒体内。示例包括按VHSIC硬件描述语言(VHDL)语言、 Verilog语言或SPICE语言格式化的电路描述。某些电路描述示例包括行为级描 述、寄存器传输级(RTL)描述、门电路级连线表和晶体管级连线表。机器可读媒 体也可包括具有布局信息的媒体,诸如GDS-II文件。此外,用于半导体芯片设计 的连线表文件和其它机器可读媒介可在模拟环境中使用以执行上述教导的方法。
因此,也可以理解,本发明的实施例可用作或支持在某种形式的处理核心(诸 如计算机的中央处理单元(CPU))上执行的或者另外实现或在机器可读媒介之上 或之内实现的软件程序。机器可读媒介包括用于以机器(例如计算机)可读的形式 存储或传送信息的任何机构。例如,机器可读媒介包括只读存储器(ROM);随
机存取存储器(RAM);磁盘存储媒体;光学存储媒体;闪存装置;电、光、声
或其它形式的传播信号(诸如,载波、红外线信号、数字信号等)等等。
在以上说明书中,已参考其特定的示例性实施例描述了本发明。但显然,可 以对其进行各种修改和改变而不背离所附权利要求书中阐述的本发明的较宽精神 和范围。因此,说明书和附图被认为是说明性而非限制性的。
权利要求
1. 一种半导体芯片,其特征在于,包括压缩映象高速缓存,用于存储信息,所述信息指示存储在程序可访问的存储器中的一条高速缓存线的信息包含压缩形式的第一高速缓存线和压缩形式的第二高速缓存线;以及存储器接口电路,用于读取和写入存储在所述程序可访问的存储器中的压缩映象,所述存储器接口电路耦合至所述压缩映象高速缓存。
2. 如权利要求1所述的半导体芯片,其特征在于,所述信息包括用于所 述程序可访问的存储器的存储器空间的多个块中的每个块的一个比特,其中多 个块中的每个块存储其自身的高速缓存线的信息,所述比特用于指示其对应的 块是否用于存储经压縮的高速缓存线的信息。
3. 如权利要求2所述的半导体芯片,其特征在于,所述信息还包括当所 述比特指示其对应的块是用于存储经压縮的高速缓存线的信息时施加到该经压缩的高速缓存线的信息上的压縮类型的标记。
4. 如权利要求3所述的半导体芯片,其特征在于,当相应块的所有比特都存储同样的值时,所述值在所述信息中被识别。
5. 如权利要求1所述的半导体芯片,其特征在于,所述信息包括用于所述程序可访问的存储器的存储器空间的多个宏块中的每个宏块的一个比特,其 中所述程序可访问的存储器的存储器空间的每个宏块存储一组伴生高速缓存 线的信息中的一条高速缓存线的信息,所述比特用于指示其对应的宏块的伴生 高速缓存线的信息是否待压縮。
6. 如权利要求5所述的半导体芯片,其特征在于,当所述比特指示其对 应的宏块的伴生高速缓存线的信息待压縮时,所述信息进一步包括将要施加到所述伴生高速缓冲线的信息上的压縮类型的标记。
7. 如权利要求5所述的半导体芯片,其特征在于,当经压縮的伴生高速 缓存线的信息的所有比特都存储同样的值时,所述值在所述信息中被识别。
8. —种计算系统,其特征在于,包括 处理器;程序可访问的存储器,其与所述处理器耦合以使由所述处理器操作的数据 能够被存储在所述程序可访问的存储器中;耦合在所述处理器和所述程序可访问的存储器之间的压縮映象高速缓存, 所述压縮映象高速缓存用于存储信息,所述信息指示存储在程序可访问的存储 器中的一条高速缓存线的信息包含压缩形式的第一高速缓存线和压縮形式的第二高速缓存线;以及存储器接口电路,用于读取和写入存储在所述程序可访问的存储器中的压 縮映象,所述存储器接口电路耦合在所述压縮映象高速缓存和所述程序可访问 的存储器之间。
9. 如权利要求8所述的计算系统,其特征在于,所述信息包括用于所述 程序可访问的存储器的存储器空间的多个块中的每个块的一个比特,其中多个 块中的每个块存储其自身的高速缓存线的信息,所述比特用于指示其对应的块 是否用于存储经压縮的高速缓存线的信息。
10. 如权利要求9所述的计算系统,其特征在于,所述比特指示其对应的 块待存储经压縮的高速缓存线的信息,所述信息待施加到该经压縮的高速缓存 线的信息上的压縮类型的标记。
11. 如权利要求9所述的计算系统,其特征在于,当相应块的所有比特都 存储同样的值时,所述值在所述信息中被识别。
12. 如权利要求8所述的计算系统,其特征在于,所述信息包括用于所述程序可访问的存储器的存储器空间的多个宏块中的每个宏块的一个比特,其中 所述存储器空间的每个宏块存储一组伴生高速缓存线的信息中的一条高速缓 存线的信息,所述比特用于指示其对应的宏块的伴生高速缓存线的信息是否待 压縮。
13. 如权利要求12所述的计算系统,其特征在于,当所述比特指示其对 应的宏块的伴生高速缓存线的信息待压縮时,所述信息进一步包括将要施加到 所述伴生高速缓冲线的信息上的压縮类型的标记。
14. 如权利要求13所述的计算系统,其特征在于,当经压縮的伴生高速 缓存线的信息的所有比特都存储同样的值时,所述值在所述信息中被识别。
15. —种用于存储压縮信息的计算机实现方法,其特征在于,所述方法包括在程序可访问的存储器中的高速缓存线的信息中存储压縮形式的第一高速缓存线和压縮形式的第二高速缓存线;更新压縮映象高速缓存,以指示所述高速缓存线的信息包含所述压縮形式的第一高速缓存线和压縮形式的第二高速缓存线;以及读取和写入存储在所述程序可访问的存储器中的压縮映象。
16. 如权利要求15所述的计算机实现方法,其特征在于,所述信息包括 用于所述程序可访问的存储器的存储器空间的多个块中的每个块的一个比特, 其中多个块中的每个块存储其自身的高速缓存线的信息,所述比特用于指示其 对应的块是否用于存储经压縮的高速缓存线的信息。
17. 如权利要求16所述的计算机实现方法,其特征在于,当所述比特指 示其对应的块是用于存储经压縮的高速缓存线的信息时,所述信息进一步指示 施加到该经压縮的高速缓存线的信息上的压縮类型。
18. 如权利要求17所述的计算机实现方法,其特征在于,当相应块的所 有比特都存储同样的值时,所述值在所述信息中被识别。
19. 如权利要求15所述的计算机实现方法,其特征在于,所述信息包括 用于所述程序可访问的存储器的存储器空间的多个宏块中的每个宏块的一个 比特,其中存储器的存储器空间的每个宏块存储一组伴生高速缓存线的信息中的一条高速缓存线的信息,所述比特指示其对应的宏块的伴生高速缓存线的信 息是否待压縮。
20. 如权利要求19所述的计算机实现方法,其特征在于,当所述比特指 示其对应的宏块的伴生高速缓存线的信息被压縮,所述信息进一步指示将要施 加到所述伴生高速缓冲线的信息上的压缩类型。
21. 如权利要求19所述的计算机实现方法,其特征在于,当经压縮的伴 生高速缓存线的信息的所有比特都存储同样的值时,所述值在所述信息中被识 别。
全文摘要
描述了包括压缩映象高速缓存的一种存储器控制器。压缩映象高速缓存用于存储标识已与另一高速缓存行信息价值一起被压缩的高速缓存行信息价值的信息。还描述了集成于同一半导体管芯上的处理器和存储器控制器。该存储器控制器包括压缩映象高速缓存。所述压缩映象高速缓存用于存储标识已与另一高速缓存行信息价值一起被压缩的高速缓存行信息价值的信息。
文档编号G06F12/08GK101419574SQ20081000979
公开日2009年4月29日 申请日期2004年12月22日 优先权日2003年12月31日
发明者A·M·古鲁姆, A-R·艾德尔-塔巴塔拜, C·J·纽波恩, H·H·胡姆, R·胡佳哈利 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1