在多处理器系统中高速缓存数据的方法和多处理器系统的制作方法

文档序号:6613338阅读:163来源:国知局
专利名称:在多处理器系统中高速缓存数据的方法和多处理器系统的制作方法
技术领域
本发明一般涉及处理系统和电路,而且更具体地,涉及在多处理器系统 中高速緩存数据。
背景技术
处理器系统通常包括高速缓存以减少与存储器存取相关联的等待时间。 高速緩存一般是较小、较快的存储器(相对于主存储器),其用于存储来自 最频繁使用的主存储器位置的数据的副本。在操作中, 一旦高速緩存变满(或 者在组相关高速緩存的情况下, 一旦组变满),则对可高速緩存数据(主存 储器中的)的随后的引用通常将导致之前存储在緩存(或组)中的数据被清 出,以为在緩存(或组)中存储新引用的数据腾出空间。传统处理器系统中, 即使新引用的数据并不重要(例如,新引用的数据将不会在随后的处理器操 作中被再次引用),通常也发生之前存储的数据被从高速緩存清出。因而, 在这样的处理器系统中,如果在随后的处理器操作中引用了被清出的数据, 则将发生高速緩存失准,这通常导致处理器系统的性能下降。
对在处理器搡作中仅使用 一次的数据的频繁引用导致高速緩存污染,其 中将重要数据清出以为暂时数据腾出空间。应对高速缓存污染的 一种办法是 增大高速緩存的尺寸。但是,该办法导致处理器系统的成本、功率、以及设 计复杂度的增加。对高速緩存污染的另一种解决办法是将暂时数据标记(或 标注)为不可高速緩存的。然而,这样的技术需要预先识别主存储器中存储 暂时(或非频繁使用的)数据的区域。而且,对数据的这样的严格划分不是 在所有情况下都可能的。

发明内容
一般而言,在一个方面,本说明书描述一种用于在包含第一处理器和第 二处理器的多处理器系统中高速緩存数据的方法。所述方法包括产生对数据
的存储器存取请求,其中所述数据是与第一处理器相关if关的处理器操作所需
的。所述方法进一步包括,响应于所述凄史据未高速緩存在与第一处理器相关 联的第 一 高速緩存中,监听与第二处理器相关联的第二高速緩存以确定所述 数据是否之前已作为从第一处理器对该数据的存取的结果高速缓存在第二 高速緩存中。响应于所述数据高速緩存在与第二处理器相关联的第二高速緩 存中,所述方法进一步包括将所述数据从第二高速緩存传递到第一处理器。
一般而言,在一个方面,本说明书描述一种多处理器系统,包括第一 处理器,包含与其相关联的第一高速緩存;第二处理器,包含与其相关联的 第二高速缓存;以及主存储器,用于存储第一处理器和第二处理器所需的数 据。主存储器由通过总线与第一处理器和第二处理器中的每一个存储器通信 的存储器控制器控制,而且与第二处理器相关联的第二高速緩存可以操作以 高速緩存与第一处理器的存储器存取请求对应的来自主存储器的数据。
一般而言,在一个方面,本说明书描述一种计算机程序产品,有形地存 储在计算机可读介质上,用于在多处理器系统中高速緩存数据,其中所述多 处理器系统包括第一处理器和第二处理器。所述计算机程序产品包括用于促 使可编程处理器监视第一处理器的高速缓存失准率、并响应于第一处理器的 高速緩存失准率低而在与第一处理器相关联的第一高速緩存中高速緩存由 第二处理器请求的数据的指令。
实施例可以提供一个或更多以下优点。用于在多处理器系统中高速緩存 数据的技术提供一条扩展其中可以存储数据(由多处理器系统中的给定处理 器所需的)的可用高速緩存的途径。例如,在一个实施例中,使用与第一处 理器(所述多处理器系统中的)相关联的高速緩存的未使用部分来存储由第 二处理器请求的数据。此外,这里描述的技术允许更积极的软件和硬件预取, 其中可以将与猜测地执行的路径对应的数据高速緩存在相邻的处理器的高 速緩存中,以减少因错误预测的分支而预测的路径造成的高速缓存污染。作 为其中可以使预取更积极的另 一个示例,可以增强硬件预取器以识别稍后使
用的高速緩存行的清出。这些情况下,硬件预取器可以指示应当将预取数据 存储在与另外的处理器相关联的高速緩存中。类似地,当有高速緩存污染的 可能性时,由编译器放置的软件预取可以通过特殊指令字段来指示应当将预 取的数据放置在与另外的处理器相关联的高速緩存中。此外,所述技术根据 多处理器系统中处理器的数量而可伸缩。所述技术同样可以与诸如victim高 速緩存和高速緩存snarfing的传统技术结合使用以提高多处理器系统的性
能。所述实施例可以由操作系统控制从而对用户应用透明。
在附图和下面iJt明中阐述一个或更多实施例的细节。其它特征和优点乂人 说明和附图将是显而易见的。


图1是根据一个实施例的多处理器系统的框图2示出根据一个实施例的用于在高速緩存中存储数据的方法的流程
图3A-3B示出根据一个实施例的多处理器系统的框图。 各附图中类似的引用符号指示类似的元素。
具体实施例方式
本发明一般涉及处理系统和电^^,而且更具体地,涉及在多处理器系统 中高速緩存数据。给出下面说明以使得本领域普通技术人员能够实现和运用 本发明,而且其在专利申请及其必要条件的背景下才是供。本发明不打算限于 所示的实施例,而是符合与这里描述的原理和特征相一致的最宽泛的范围。
图1示出根据一个实施例的多处理器系统100。多处理器系统100包括 处理器102和处理器104,其均与总线106通信。虽然示出多处理器系统100 包含两个处理器,但是多处理器系统IOO也可以包含任何数量的处理器。另 外,处理器102和处理器104可以是紧密耦合的(如图1中所示),或者处 理器102和处理器104可以是松散耦合的。而且,处理器102和处理器104 可以实现在同一芯片上,或者可以实现在单独的芯片上。
多处理器系统IOO还包括存储处理器102和处理器104所需的数据的主 存储器108。处理器102包括高速緩存110,而处理器104包括高速緩存112。 在一个实施例中,高速緩存IIO可以操作以高速緩存将由处理器102处理的 数据(来自主存储器108),以及将由处理器104处理的数据。类似地,(在 一个实施例中)高速緩存112可以操作以高速緩存将由处理器104处理的数 据,以及将由处理器102处理的数据。高速緩存110和/或高速緩存112可以 是L1 (l级)高速緩存、L2 (2级)高速緩存、或分级的高速缓存等级。在 一个实施例中,在高速緩存110还是高速緩存112中高速緩存来自主存储器 108的数据的决策由控制器114确定。在一个实施例中,控制器114是可操
作以在高速緩存110、 112以及主存储器108之间管理冲突并维持一致性的
高速緩存一致性控制器(例如,在北桥中)。
图2示出根据一个实施例的用于在多处理器系统(例如,多处理器系统 100)中存储数据的方法200。由第一处理器(例如,处理器102)产生对数 据的存储器存取请求(步骤202 )。对数据的存储器存取请求可以是例如由与 第 一处理器相关联的装入/存储执行单元产生的装入存储器操作。确定由第一 处理器请求的数据是否高速緩存(或存储)在与第一处理器相关(或主要用 于其)的高速緩存(例如,高速緩存IIO)中(步骤204)。如果由第一处理 器请求的数据高速緩存在与第一处理器相关联的高速缓存中(即,发生高速 緩存命中),则满足存储器存取请求(步骤206)。可以通过高速緩存将所请 求的数据转发到第一处理器的流水线和/或寄存器堆来满足存储器存取请求。 但是,如果由第一处理器请求的数据未高速緩存在与第一处理器相关联 的高速緩存中(即,发生高速緩存失准),则使用传统监听机制来确定由第 一处理器请求的数据是否高速缓存在与第二处理器(例如,处理器104)相 关联的高速緩存(例如,高速緩存112)中(步骤208)。如果由第一处理器 请求的数据高速緩存在与第二处理器相关联的高速緩存中,则满足存储器存 取请求(步骤210)。与传统技术的差异在于,与第二处理器相关联的高速緩 存可能在其中有第二处理器未使用装入指令请求或预取来请求的数据。可以 通过高速緩存(与第二处理器相关联的)将数据转发到第一处理器的流水线 和/或寄存器堆来满足存储器存取请求。在一个实施例中,将存储在与第二处 理器相关联的高速緩存中的数据移动或复制到与第 一处理器相关联的高速 緩存中。在这样的实施例中,可以设置(例如,通过控制器114)指示在将 数据从与第二处理器相关联的高速緩存移动到与第一处理器相关联的高速 缓存之前所需的数据的存取次数的存取阈值。例如,如果将存取阈值设为 "1",则对与第二处理器相关联的高速緩存中的数据的第 一次存取就将提示 控制器将数据移动到与第一处理器相关联的高速緩存。如果在步骤208中由 第一处理器请求的数据未高速緩存在与第二处理器(或多处理器系统中的任 何其它处理器)相关联的高速缓存中,则从主存储器108检索数据(步骤 212)。
基于存储器存取请求的类型(或分类)将从主存储器检索的数据动态地 存储在与第一处理器或第二处理器相关联的高速緩存中(步骤214)。在一个
实施例中,基于与存储器存取请求相关联的优先级的类型将从主存储器检索 的数据存储在给定处理器的高速緩存中。例如,(在一个实施例中)将对第 一处理器的数据的瓶说^敛请求存储在与第二处理器相关联的高速緩存中。 从而,在该实施例中,避免了第一处理器的高速緩存污染。可以通过多种适 当的技术将来自给定处理器的存储器存取请求设置为低优先级请求。更一般 地,可以根据任何预先确定的准则将存储器存取请求(来自给定处理器的) 分类(或指定类型)。
在一个实施例中,(软件)编译器检查代码和/或执行简档,以确定软件
预取(高速緩存或stream touch)指令会通过将特定预取请求指定为低优先 级请求而获益,例如,如果返回的数据不太可能在随后的处理器操作中由处 理器再次使用,或者如果返回的数据很可能将导致高速緩存污染,则编译器 可以将预取请求指定为低优先级请求。在一个实施例中,编译器在软件预取 指令中设置位,其指示应当将返回的数据(或行)放置在与另一处理器相关 联的高速緩存(例如,相邻处理器的L2高速緩存)中。可以由控制器114 将返回的数据导向与另一处理器相关联的高速緩存(图1)。因而,在一个实 施例中,处理器可以在与该处理器相关联的高速緩存中高速緩存数据,即便 该处理器并未请求所述数据。
在一个实施例中,将与给定处理器相关联的硬件预取逻辑设计为识别何 时从主存储器返回的数据(与预取请求相关联的)从高速緩存清出重要数据。
对重要数据的清出的识别可以用作硬件预取逻辑的触发器,以设置将随后的 预取请求指定为低优先级请求的位。于是,将与随后的预取请求相关联的返 回的数据放置在与另一处理器相关联的高速緩存中。在一个实施例中,将猜 测地执行的预取和存储器存取(例如,作为分支预测的结果)指定为低优先 级请求。这样的指定避免了在将数据从主存储器返回之前未^F又消的错误猜测 的执行的情况下的高速緩存污染。因而,可以高速緩存(在第二处理器的高 速緩存中)与替换路径(即,最终确定为已错误预测的路径)对应的数据。 这样的对与替换路径对应的数据的高速緩存可以在某些情况下(如果当时选 择了该替换路径)减少随后访问分支的数据存取时间。
图3A-3B示出用于在多处理器系统300中处理存储器存取请求的操作的 序列。图3A-3B中所示的实施例中,多处理器系统300包括处理器302和处 理器304,其均通过总线308与主存储器子系统306通信。处理器302包括
Ll高速緩存310和L2高速緩存312,而处理器304包括Ll高速緩存314 和L2高速緩存316。主存储器子系统306包括用于控制对主存储器306中 数据的存取的存储器控制器318 (作为北桥的部分或在芯片上),而且多处理 器系统300还包括用于在L1高速緩存310、 L2高速緩存312、 Ll高速緩存 314、 L2高速緩存316、以及主存储器316之间管理冲突和维持一致性的高 速緩存一致性控制器320(可能在北桥中)。虽然示出多处理器系统300包含 两个处理器,但是多处理器系统300也可以包含任何数量的处理器。此外, 处理器302、304既包含L1高速緩存又包含L2高速緩存以用于例示的目的。 一般来说,可以使处理器302、 304适合于其它高速緩存分级方案。
首先参照图3A,示出第一种类型的存储器存取请求,其与传统技术一 致。也即,如果由处理器请求的数据(例如,行)未存储(或高速缓存)在 本地Ll或L2高速緩存中,而且没有其它高速緩存有该数据(如它们的监听 响应所指示),则处理器将存储器存取请求发送到主存储器的存储器控制器, 其将数据返回到请求处理器。可以在请求处理器的本地L1或L2高速緩存中 高速緩存从主存储器返回的数据,而且如果另一处理器请求同样的数据,则 使用诸如四状态MESI (已修改、独占的、共享的、无效的)协议的传统高 速緩存一致性协议可以指示是否可以从该处理器的高速緩存提供数据。因 而,例如,如图3A中所示,L2高速緩存312 (处理器302的)发出对数据 的存储器存取请求(其意指由处理器302所需的数据未被高速緩存在L1高 速缓存310或L2高速緩存312中)(步骤1 )。存储器存取请求通过存储器 控制器318到达主存储器306 (步骤2 )。主存储器306将所请求的数据(或 行)返回到总线(步骤3)。可替换地,可以将数据高速緩存在L1高速緩存 310中(步骤5),或直接传递到处理器302的流水线而不高速緩存在L1高 速緩存310或L2高速緩存312中。
参照图3B,示出用于处理第二种类型的存储器存取请求(即,低优先 级请求)的过程。具体地,L2高速緩存312发出对数据的低优先级请求(步 骤6)。低优先级请求可以是例如猜测的预取请求、或指定为低优先级请求的 其它存储器存取请求。监听与处理器304相关联的L2高速缓存316以确定 数据是否高速緩存在L2高速緩存316中(步骤7 )。如果所请求的数据高速 缓存在L2高速緩存316中,则L2高速緩存316满足低优先级请求(步骤8 ), 而且不需要主存储器306中的存储器存取。从而,当将数据从L2高速緩存传递时,可以将数据高速緩存在L2高速緩存312中(步骤9)、高速緩存在 Ll高速緩存310中、或高速緩存在L2高速緩存312和Ll高速緩存310二 者中。可替换地,可以将来自L2高速緩存316的数据直接传递到处理器302 的流水线和/或寄存器堆(其可以基于应用需要而减轻高速緩存污染)。
在一个实施例中,高速緩存一致性控制器320设置与存储在L2高速緩 存316中的数据相关联的位,其指示该数据已经由处理器302存取的次数。 此外,在该实施例中,用户可以设置预先确定的存取阈值,其指示在将数据 从L2高速缓存316复制到与处理器302相关联的高速緩存(即,Ll高速緩 存310或L2高速緩存312 )之前所需的对数据的存取次数(处理器302的)。 于是,例如,如果为存储在L2高速緩存316中的给定的一行数据将存取阈 值设置为1,则对L2高速緩存316中该行数据的第一次存取就将提示高速 緩存一致性控制器320将该行数据从L2高速缓存316移动到与处理器302 相关联的高速緩存。类似地,如果将存取阈值设置为2,则对L2高速緩存 316中该行数据的第二次存取将提示高速緩存一致性控制器320将该行数据 从L2高速緩存316移动到与处理器302相关联的高速缓存。该实施例中, 用户可以通过调节存取阈值来控制高速緩存污染的量。用户在为高速緩存的 数据建立存取阈值时可以考虑包括高速緩存一致性、包含性、以及将高速緩 存污染保持为最低的期望在内的因素。
在一个实施例中,可以使用操作系统来监视多处理器系统中单个的处理 器上的负荷以及它们相应的高速緩存使用和高速緩存失准率,以控制是否高 速緩存一致性控制器应当使能将与第一处理器的低优先级请求对应的数据 存储在与第二处理器相关联的高速緩存中。例如,如果操作系统一操作系统 检测到与第二处理器相关联的高速緩存未被充分利用(或该高速緩存的高速 緩存失准率低),则操作系统可以指挥高速緩存一致性控制器以在与第二处 理器相关联的高速緩存中存储由第 一处理器请求的数据。在一个实施例中, 操作系统在操作期间可以动态地使能或禁止将与第 一处理器的低优先级请 求对应的数据存储在与第二处理器相关联的高速緩存中。
可以利用 一个或多个可编程处理器运行计算机程序以通过对输入数据 操作并产生输出来执行功能而完成上述一个或多个方法步骤。 一般地,上述 技术可以采取完全硬件实现、或既包含硬件又包含软件元素的实现的形式。 软件元素包括,但并不限于,固件、驻留程序、微代码等等。此外,上述某
些技术可以采取从提供用于、或有关于计算机或任何指令执行系统的程序代 码的计算机可用或计算机可读介质可存取的计算机程序产品的形式。
对于本说明书,计算机可用或计算机可读介质可以是能够包含、存储、 通信、传播、或传输用于、或有关于指令执行系统、装置、或设备的程序的 任何装置。所述介质可以是电子、磁、光学、电磁、红外、或半导体系统(或 装置或设备)或者传播介质。计算机可读介质的示例包括半导体或固态存储
器、磁带、可移动计算机磁盘、随机存取存储器(RAM )、只读存储器(ROM )、 刚性》兹盘以及光盘。光盘的当前示例包括只读光盘(CD-ROM)、读/写光盘 (CD-R/W)以及DVD。
已经描述了用于在多处理器系统中高速緩存数据的多种实施例。然而, 可以对上述实施例做出各种修改,这些修改将在本发明的范围之内。例如, 可以以不同的次序执行上述方法步骤而仍达到期望的结果。而且, 一般而言, 可以通过硬件逻辑、或软件与硬件逻辑的组合来实现上述方法步骤。上述技 术可以应用于包括例如按序执行处理器、乱序执行处理器、可编程以及不可 编程处理器、具有片上或片外存储器控制器的处理器等等的多处理器系统。 从而,可以做出许多修改而不背离本发明的范围。
权利要求
1.一种用于在包含第一处理器和第二处理器的多处理器系统中高速缓存数据的方法,该方法包括产生对数据的存储器存取请求,所述数据是与第一处理器相关联的处理器操作所需的;响应于所述数据未被高速缓存在与第一处理器相关联的第一高速缓存中,监听与第二处理器相关联的第二高速缓存以确定所述数据是否之前已作为从第一处理器对该数据的存取的结果高速缓存在第二高速缓存中;以及响应于所述数据被高速缓存在与第二处理器相关联的第二高速缓存中,将所述数据从第二高速缓存传递到第一处理器。
2. 如权利要求1所述的方法,其中响应于所述数据也未被高速緩存在 第二处理器的第二高速緩存中,从与所述多处理器系统相关联的主存储器检索所述数据;以及 基于所述存储器存取请求的类型动态地在与第一处理器相关联的第一高速缓存或与第二处理器相关联的第二高速緩存中高速緩存从所述主存储器检索的数据。
3. 如权利要求2所述的方法,其中产生对数据的存储器存取请求包括 基于预先定义的准则指定所述存储器存取请求的类型。
4. 如权利要求3所述的方法,其中指定所述存储器存取请求的类型包 括指定所述存储器存取请求的类型为低优先级请求。
5. 如权利要求4所述的方法,其中动态地高速緩存从所述主存储器检 索的数据包括在与第二处理器相关联的第二高速緩存中高速緩存与低优先 级相关联的数据。
6. 如权利要求4所述的方法,其中所述低优先级请求包括硬件预取请 求或软件预取请求。
7. 如权利要求1所述的方法,进一步包括为在第二高速緩存中高速緩 存的数据设置存取阈值,所述存取阈值指示在将数据从与第二处理器相关联 的第二高速緩存复制到与第 一处理器相关联的第 一 高速緩存之前所需的数 据存取次数。
8. 如权利要求1所述的方法,其中将所述数据从第二高速緩存传递到 第 一处理器包括将所述数据从第二高速緩存直接传递到与第 一处理器相关 联的寄存器堆或流水线。
9. 如权利要求l所述的方法,进一步包括 监视第二处理器的高速緩存失准率;以及响应于第二处理器的高速緩存失准率低而在与第二处理器相关联的第 二高速缓存中高速緩存由第 一处理器请求的数据。
10. 如权利要求l所述的方法,其中第一处理器和第二处理器实现在同 一芯片上或不同芯片上。
11. 一种多处理器系统,包括 第一处理器,包含与其相关联的第一高速緩存; 第二处理器,包含与其相关联的第二高速緩存;以及主存储器,用于存储第一处理器和第二处理器所需的数据,主存储器由 通过总线与第一处理器和第二处理器中的每一个存储器通信的存储器控制 器控制,其中与第二处理器相关联的第二高速緩存可以操作以高速緩存与第一 处理器的存储器存取请求对应的、来自所述主存储器的数据。
12. 如权利要求11所述的多处理器系统,其中第一处理器的存储器存 取请求是低优先级请求。
13. 如权利要求12所述的多处理器系统,其中所述低优先级请求包括 硬件预取请求或软件预取请求。
14. 如权利要求12所述的多处理器系统,进一步包括控制器,用于将 与所述低优先级请求对应的数据从所述主存储器导向第二高速緩存以高速 緩存所述数据。
15. 如权利要求14所述的多处理器系统,其中所述控制器是可操作以 在第 一 高速緩存、第二高速緩存以及所述主存储器之间管理数据的冲突并维 持数据的一致性的高速緩存一致性控制器。
16. 如权利要求11所述的多处理器系统,其中第一处理器和第二处理 器是紧密耦合的而且实现在同 一芯片上或不同芯片上。
17. 如权利要求11所述的多处理器系统,其中第一处理器和第二处理 器是松散耦合的。
全文摘要
提供用于在多处理器系统中高速缓存数据的方法、计算机程序产品、以及系统。在一个实施例中,所述方法包括产生对数据的存储器存取请求,所述数据是与第一处理器相关联的处理器操作所需的。响应于所述数据未高速缓存在与第一处理器相关联的第一高速缓存中,所述方法进一步包括监听与第二处理器相关联的第二高速缓存以确定,可能作为由第一处理器之前对所述数据的“低优先级”请求的结果,所述数据是否之前已高速缓存在第二高速缓存中,以及响应于所述数据高速缓存在与第二处理器相关联的第二高速缓存中,将所述数据从第二高速缓存传递到第一处理器。
文档编号G06F12/08GK101192198SQ20071016988
公开日2008年6月4日 申请日期2007年11月14日 优先权日2006年12月1日
发明者卡蒂克·萨迪普, 斯里尼瓦森·拉马尼 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1