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

文档序号:6503902阅读:130来源:国知局
专利名称:能在使用压缩的高速缓存行信息价值的计算系统中使用的处理器和存储器控制器的制作方法
技术领域
本发明一般涉及计算系统;尤其涉及能在使用压缩的高速缓存行信息价值(cache lines’worth of information)的计算系统中使用的处理器和存储器控制器。
背景技术
图1示出了基本计算系统的架构的一部分,包括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示作单个结构。但各种计算系统是用不同级的高速缓存进行设计的。例如,许多类型的计算系统具有两级高速缓存(1级(L1)高速缓存和2级(L2)高速缓存),其中第一级高速缓存(L1)对应于比第二级高速缓存(L2)更少的处理器等待时间。L1高速缓存被假定存储最频繁使用的数据元素和指令,而L2高速缓存被假定存储与L1高速缓存中的那些相比较少频繁使用但比系统存储器中的那些更频繁使用的数据元素和指令。
常规地,两个高速缓存级是用与系统存储器相比更快的存储器类型来实现的(例如,L1和L2高速缓存两者都是用SRAM存储器单元实现的);但是,L1高速缓存与处理器集成入同一半导体管芯,而L2高速缓存是用与处理器不同的半导体管芯实现的。“片载”高速缓存访问快于“非片载”高速缓存访问,对L1高速缓存的访问对应于与对L2高速缓存的访问相比处理器的更少的等待时间。
存储器控制器103负责采纳高速缓存未满足的来自处理器101的对数据的请求,并管理服务系统存储器104中的那些请求的进程。存在许多不同种类的请求,诸如对高速缓存中不存在的数据的负载请求,以及需要被存回存储器的来自高速缓存的数据的驱逐。通常,存储器控制器能流水线化请求,使得许多请求会是未完成的并可以与更短的平均等待时间并行地服务。存储器控制器负责与特殊存储器技术的细节对接,并按模块化方式使系统存储器与处理器隔离。存储器控制器可以与处理器集成,例如在同一管芯上,或者可以分离,例如在芯片组中。
系统存储器通常用特定类型的系统存储器实现(例如,EDO RAM、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中的特殊块的位置处。类似的指示可用于任何类型的常数值(例如,“全1”)。这里,存储器控制器被预计包括标识具有常数值的那些高速缓存行的逻辑(诸如总和逻辑(例如,所有零的和将是零))。
后者形式的附加信息415指示特定类型的压缩。这里,回想可以使用不同类型的压缩(例如,Lempel-Ziv、Wilson-Kaplan、X-Match等)。不仅单种压缩可存在于任何一种特殊计算系统内(例如,仅使用Lempel-Ziv的单个系统);而且可以构思单个系统能执行不同类型的压缩的实施例(例如,可使用Lempel-Ziv、Wilson-Kaplan、X-Match和可能其它压缩算法中的任一种的单个系统)。
压缩映象实施例412a、412b两者都示出了一位,它为可存储高速缓存行信息价值的系统存储器中的每个对准块提供了压缩/未压缩状态。相反,实施例412c仅使用一个位来表示每对对准系统存储器块的压缩/未压缩状态。这里,值得注意的是,可以使用2∶1以外的压缩比(诸如4∶1);以及根据实施例412c的方法实现的压缩映象的大小将随着压缩比增加而变小。即,对于2∶1压缩,一位用于表示存储器块的每个对准对;而如果使用4∶1压缩比,则一个位将用于四个对准存储器块的每个组。还注意,可以将实施例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∶1的压缩比,在其实质内容被压缩时,关于宏模块的上部块和下部块的使用的一对实施例是可能的。再参考图5a,在称作“非复制”的第一实施例中,不管要写入系统存储器的信息的压缩高速缓存行是由存储器控制器压缩还是由处理器压缩,被压缩的高速缓存行信息价值的写入503包括对相应宏模块的仅下部块的地址空间的写入。图3a和3b示出了“非复制”方法,因为如原来讨论的,如果图3a的块305和309被压缩在一起,则仅写入图3b的下部块305(当然,作为选择,可仅写入上部块)。
根据“非复制”方法,如以下参考图5b的方法555更详细地描述的,存储器控制器在读取前引用压缩映象,因为对已压缩入下部块的上部块的请求(例如,通过未意识到任何压缩活动的系统组件)仅可以通过从下部块中读取来得到满足(即,请求中指定的目标不同于从中进行读取以满足该请求的系统存储器中的位置)。
在称作“复制”的可选的第二实施例中,压缩高速缓存行的写入503包括对可应用伙伴组中所有块(例如,设定用于2∶1压缩的可应用伙伴中的下部块和上部块)的地址空间的写入。例如,对于2∶1压缩方法,如果图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∶1压缩方案)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中找到高速缓存行的信息(即,“命中”)一对压缩映象的引用完成。如果在压缩映象高速缓存中未找到特殊块的信息(即,“不命中”),则从系统存储器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对应于存储器控制器的接口,其中1)接收对存储器读取和存储器写入的请求;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用于选择压缩高速缓存内的高速缓存行。图10示出了压缩高速缓存中的组和通路选择逻辑910的一个实施例。参考图10,组和通路选择逻辑910包括标签比较逻辑1010,它接收来自标签阵列的输入以根据接收到的地址选择高速缓存行。标签比较逻辑1010考虑高速缓存行是否保存压缩数据。
因为高速缓存行可以保存可变数据大小,标签比较逻辑1010也是可变长度,这取决于特殊行是否被压缩。因此,标签匹配考虑压缩位。当可通过至少2∶1压缩时,每条线的两段被存入单个物理高速缓存行(例如,在一条通路中)。需注意这不同于常规分段的高速缓存设计,其中在未被压缩时可以同时将给定逻辑线的不同逻辑段存入不同通路。
根据图9,字节选择逻辑920选择线内的寻址数据。根据一个实施例,字节选择逻辑920依赖压缩位。图11示出了字节选择逻辑920的一个实施例。字节选择逻辑920包括用于在必要时解压缩选定的高速缓存行的解压缩器1110。输入多路复用器根据压缩位在解压缩的高速缓存行信息价值和未压缩的高速缓存行信息价值之间进行选择。在一个实施例中,偏差范围取决于信息线是否被压缩。
如果信息线被压缩,则地址的伙伴位被用作偏差的较高位。如果信息线未被压缩,绕过解压缩器1110且地址的伙伴位不用于偏差。将选定的线保存于缓冲器中,其大小两倍于物理线大小以容纳压缩数据。可选实施例可选择使用伙伴位来选择解压缩字的哪一半存储于长度等于物理线大小的缓冲器中。但是,缓冲整个信息线对于在对高速缓存的写入操作后修改和再压缩数据来说是方便的。
压缩逻辑930也可用于确定何时要压缩一信息线。根据一个实施例,使用机会压缩来确定何时压缩信息线。上述机制允许映射到同一组并仅伙伴位不同的任意两个高速缓存行信息价值被一起压缩入一个高速缓存行。在一个实施例中,该机制改变了组映射函数并选择伙伴位,以使它允许相邻的存储器信息线被压缩在一起,这利用了空间局部性。
结束评述还应注意,本描述部分的实施例不仅可以在半导体芯片内实现也可以在机器可读媒体内实现。例如,上述设计可存储和/或嵌入与用于设计半导体器件的设计工具相关联的机器可读媒体内。示例包括按VHSIC硬件描述语言(VHDL)语言、Verilog语言或SPICE语言格式化的电路描述。某些电路描述示例包括行为级描述、寄存器传输级(RTL)描述、门电路级连线表和晶体管级连线表。机器可读媒体也可包括具有布局信息的媒体,诸如GDS-II文件。此外,用于半导体芯片设计的连线表文件和其它机器可读媒介可在模拟环境中使用以执行上述教导的方法。
因此,也可以理解,本发明的实施例可用作或支持在某种形式的处理核心(诸如计算机的中央处理单元(CPU))上执行的或者另外实现或在机器可读媒介之上或之内实现的软件程序。机器可读媒介包括用于以机器(例如计算机)可读的形式存储或传送信息的任何机构。例如,机器可读媒介包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储媒体;光学存储媒体;闪存装置;电、光、声或其它形式的传播信号(诸如,载波、红外线信号、数字信号等)等等。
在以上说明书中,已参考其特定的示例性实施例描述了本发明。但显然,可以对其进行各种修改和改变而不背离所附权利要求书中阐述的本发明的较宽精神和范围。因此,说明书和附图被认为是说明性而非限制性的。
权利要求
1.一种存储器控制器,包括压缩映象高速缓存,所述压缩映象高速缓存用于存储标识已与另一高速缓存行信息价值一起被压缩的高速缓存行信息价值的信息。
2.一种集成于同一半导体管芯上的处理器和存储器控制器,所述存储器控制器包括压缩映象高速缓存,所述压缩映象高速缓存用于存储标识已与另一高速缓存行信息价值一起被压缩的高速缓存行信息价值的信息。
全文摘要
描述了包括压缩映象高速缓存的一种存储器控制器。压缩映象高速缓存用于存储标识已与另一高速缓存行信息价值一起被压缩的高速缓存行信息价值的信息。还描述了集成于同一半导体管芯上的处理器和存储器控制器。该存储器控制器包括压缩映象高速缓存。所述压缩映象高速缓存用于存储标识已与另一高速缓存行信息价值一起被压缩的高速缓存行信息价值的信息。
文档编号G06F12/08GK1898655SQ200480039058
公开日2007年1月17日 申请日期2004年12月22日 优先权日2003年12月31日
发明者C·J·纽波恩, R·胡佳哈利, H·H·胡姆, A-R·艾德尔-塔巴塔拜, A·M·古鲁姆 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1