共享存储器计算机系统中自有高速缓存块的预测早写回的制作方法

文档序号:6553432阅读:184来源:国知局
专利名称:共享存储器计算机系统中自有高速缓存块的预测早写回的制作方法
背景技术
多处理器数据处理系统管理大量处理器的集合计算能力。存储器系统是多处理器系统的中心,其必须可扩展,以在多处理器之间共享数据时提供足够的带宽给每一处理器。对于某些应用,共享内存的高效方法对于运行在多处理器上的线程之间的有效协作是至关重要的。
大多数由CPU写下的数据块不期望在刚获得所有权后就被其他代理/处理器读写。但是,在短时间内某些块可能被极大地共享,如果这些块被用于同步多线程的执行的话。通信或同步延时开销可以是确定多处理器系统(例如芯片多处理器)上多线程负载的扩展性的一个因素。


从下列如附图所示的优选实施例的描述中,本发明的各种各样的特征将显而易见,在所述附图中,相同的参考数字表示相同的附件。附图未必是按比例绘制的,重点放在说明本发明的原理。
图1为多处理器系统的框图;图2为图1的多处理器系统中的处理器的框图;图3为由图1的多处理器系统执行的示例方法的自有高速缓存块(cache block)的预测早写回的流程图;图4为可以提供多线程处理器环境的系统的框图。
具体实施例方式
下面的描述是说明性而非限制性的,阐述的诸如具体结构、体系、接口和技术之类的特定描述是为了实现对本发明各个方面的彻底了解。但是,对了解本发明的本领域技术人员显而易见的是,本发明的各个方面也可以使用不同于这些特定细节的其他示例来实现。在具体示例中,省略了公知的装置、电路和方法的描述,以避免因非必要的细节而对本发明的描述造成模糊。
本发明涉及由芯片多处理器节点构成的可扩展共享存储器系统的自有高速缓存块的写回。本发明的实施例可以提供的半导体芯片包括处理器,以及用于连接处理器和共享地址空间的双向环互连。根据本发明的一个实施例,每一处理器可以包括多个CPU,且地址空间可以包括大的共享高速缓存。每一CPU可以具有其自己的私有指令和数据高速缓存(第一级高速缓存),所有CPU共享单个第二级高速缓存。可以被包括于系统每一节点中的协议引擎和高速缓存控制器在芯片中所有高速缓存之间以及跨节点的所有高速缓存之间维持高速缓存一致性(cache coherence)。
本文中披露的所有的特定的量(例如处理器数量、节点数量和接口数量)仅用于解释一个特定实施例的操作。通常,这些量会因本发明实施的不同而变化(有时变化还会很大)。
参照图1,所示的多处理器系统100包括多个处理器节点102。每一处理器节点102优选被实现为单个的芯片多处理器。在优选实施例中,每一处理器节点102可以具有8个处理器内核104;但是,在其他实施例中,也可以具有2至6个处理器内核104。可以包括中央处理单元的处理器内核104为处理器内核,因为它们的高速缓存和其他支持电路被独立显示(如图2所示)。
每一内核104连接到逻辑共享的支援高速缓存(backing cache)106。共享的支援高速缓存106连接到存储器108。所述存储器108可以表示用于存储处理器所用的数据和指令的任何类型的存储装置。
通常,尽管本发明不限于此,但存储器108可以包括动态随机存取存储器(DRAM)。在另一个实施例中,存储器108可以包括半导体存储器。在又一个实施例中,存储器108可以包括诸如磁盘驱动器之类的磁存储装置。但是,本发明并不限于本文所述的存储器的示例。
多个节点102可以通过包括路由器109和互连装置110的子系统进行连接。子系统还可以包括输入队列、输出队列和分组交换机(均未示出)。路由器109可以经由互联装置110从其他节点接收分组或向其他节点发送分组。互连装置110可以物理连接多节点102。系统控制模块111负责各种与维护相关的功能(例如,系统配置、初始化和中断分布)。
虽然本发明是结合多处理器和共享存储器系统进行描述的,但本发明也适用于单处理器计算机系统。
图1所示的计算系统的实施例可以包括多个处理器和多个高速缓存。这些存储器和高速缓存包括多处理器系统,其中,高速缓存通过高速缓存一致性机制在相互间保持一致性。可以在处理器高速缓存和存储器互连装置中实施高速缓存一致性协议,以保持高速缓存一致性。
在具有共享存储器的多处理器系统中必须实现高速缓存一致性。高速缓存一致性协议解决以下问题确保系统中没有处理器使用本地高速缓存中的稳定数据。通常,通过使除了最近更新的高速缓存数据之外的高速缓存数据无效,或者通过使用最近数据更新高速缓存,可以删除稳定高速缓存项。在使用无效协议的系统中,从高速缓存尝试访问无效存储器位置会导致处理器从其他高速缓存或主存储器读取最近数据的副本。在更新协议中,在写操作之后,使用最近数据对具有数据高速缓存版本的所有高速缓存进行更新。因此,在高速缓存中大部分最近数据是可用的。
图2为图1的多处理器系统中的处理器的框图,其预测自有高速缓存块的早写回。每一内核104包括私有高速缓存112,所述私有高速缓存112是共享高速缓存106的子集。所述高速缓存112可以是直写式高速缓存。
当CPU必需向存储器地址写入或存储时,CPU需要从块的高速缓存体系的较低级别请求所有权,并且在获得所有权之前无法对块进行写入。这是为了维持正确的高速缓存一致性。当CPU x发送所有权请求后,无效的信号被传送给潜在的共享者,即具有该块副本的其他CPU。一致性协议将向请求所有权的CPU x发送确认消息,向其告知其对该块的所有权。在确认消息被发送后,现在可以发生写入动作。
为了最小化直写高速缓存112所生成的存储带宽,每一CPU104均可以具有结合的合并缓冲器114,以向同一高速缓存块聚集最近存储的数据。合并缓冲器114可以总共包括16个高速缓存块。通常,合并缓冲器114可以试图将自有的块保持尽可能长的时间,以最大化所存储的数据的结合,并最小化返回高速缓存的直写流量。
写回可以由在初始的写请求被发送给的合并缓冲器114项中设置“purgeMe(清除我)”比特造成。合并缓冲器114中的每一项均存在purgeMe比特。在每一周期中,与合并缓冲器114相关的控制逻辑试图选择具有purgeMe比特设置的项,并将块写回至共享的高速缓存106中。如果没有项具有已设置的purgeMe比特,则不选择任何项。
可以由于各种原因设置purgeMe比特。一个原因是,合并缓冲器114中填满了有效项,并跨越了“清除门限”。如果合并缓冲器114跨越了清除门限,则与合并缓冲器114相关的控制逻辑可以随后为一个或多个项设置purgeMe比特。通过为项设置purgeMe比特,所述项可以被写回至共享的高速缓存106,以为新到达的提交存储(committed store)腾出空间。对于系统100,如果预测对应的数据将被另一个CPU或高速缓存一致性代理所使用的话,则可以为该项设置purgeMe比特。
图3为由图1的多处理器系统执行的预测自有高速缓存块的早写回的示例方法的流程图。响应于发起CPU的所有权请求,对写回块的预测是基于高速缓存一致性协议中的消息的。
如果所有权请求是从CPU x发送给共享高速缓存的(305),则共享高速缓存必须首先确定所请求的块是否由另一个CPU所拥有(310)。如果所请求的块不被另一个CPU所拥有,则系统判定所请求的块是否被另一个CPU或其他CPU所共享(311)。如果该块不具有其他共享者,则发送AckNonShared消息以授予对该块的所有权,并宣布没有其他CPU具有该块的副本(315)。但是,如果该块不被自有而是被共享,则发送AckShared消息,所有权被传送给CPU x(312)。
如果该块被诸如CPU y之类的另一CPU所拥有,则向CPU y发送收回消息(320)。如果接收到收回消息,CPU y使用其最近存储数据更新该块,并设置purgeMe比特,以从其合并缓冲器中提取块(325)。一旦从合并缓冲器中提取了块,CPU y将块写回至存储器,放弃其所有权(330)。
现在将更新块发送给正在请求的CPU x(335)。CPU x可以使用当前数据来更新块(340),并随后立即将块发送给共享高速缓存(345)。将更新的块随后立即发送给共享高速缓存是因为该块数据之前由另一个CPU(即CPU y)所拥有。
现在假设CPU x需要再次写入块,另一个所有权请求将被发送给共享高速缓存305。此时,如果在此期间没有其他CPU读取该块,表示块不被拥有(310)也不被共享(311),则将AckNonShared消息发送给CPU x(315)。CPU x现在可以保持该块,直到其因容量原因(或被另一个CPU请求)而被收回为止。
但是,如果另一个CPU在此期间读取了该块,表示块不被拥有(310)但被共享(311),则将AckWasShared消息发送给CPU x(312),该块被再次早写回。
如果CPU y现在请求该块,其可能已经被请求该块的上一CPU写回至共享高速缓存中,否则,其可能正在传输中。如果该块已经被写回至共享高速缓存,这将把4-跳事务缩减为2-跳事务,潜在地将同步延时缩减了一半。
因此,当请求的CPU作出所有权请求时,如果其他CPU具有(或可能具有)块的副本,则将该块尽快写回。如果其他CPU具有该块的副本,但不再访问该块,则对其的第一次写入会导致该块的临时(expedient)写回,但随后的写入则不会。
在此之前,处理器并不区别共享的块和不共享的块的确认。使用上述方法,处理器现在可以确定多长时间其应该将块送回至共享的支援高速缓存。这使得系统可以预测何时需要快速共享。
有利地,该方法使系统能够预测哪些写入块更有可能被另一个CPU所请求,在更新块中的数据后,拥有的CPU将这些块尽快写回至存储器。如果另一个处理器请求该数据,这将缩减获得数据的延时,减少同步开销,并提高并行程序的吞吐量。
参照图4,系统400包括支持自有高速缓存块的预测早写回的处理器。系统400一般性地示出了处理器、存储器以及输入/输出装置由多个点到点接口来相互连接的系统。系统400还可以具有几个处理器,为清晰起见,在图中只示出了处理器405、410这两个处理器。每个处理器405、410可以分别包括处理器内核407、412。处理器405、410可以分别包括与存储器425、430连接的本地存储控制器中心(MCH)415、420。处理器405、410可以使用点到点接口电路440、445经由点到点接口435来交换数据。处理器405、410可以使用点到点接口电路465、470、475和480经由单独的点到点接口455、460来与芯片组450交换数据。芯片组450也可以经由高性能图形接口490来与高性能图形电路485交换数据。
芯片组450可以经由总线接口495与总线416交换数据。在任一系统中,在总线416上可能存在各种输入/输出I/O装置414,在某些实施例中包括低性能图形控制器、视频控制器和网络控制器。在某些实施例中,另一个总线桥418可用于使数据能够在总线416和总线420之间进行交换。在某些实施例中,总线420可以是小型计算机系统接口(SCSI)总线、集成驱动电路(IDE)总线或通用串行总线(USB)。附加的I/O装置可以与总线420连接。这可以包括键盘和包括鼠标的光标控制装置422,音频I/O 424,包括调制解调器和网络接口的通信装置426,以及数据存储装置428。软件代码430可以存储于数据存储装置428中。在某些实施例中,数据存储装置428可以是固定的磁盘、软盘驱动器、光盘驱动器、磁-光盘驱动器、磁带或包括闪速存储器的非易失性存储器。
在以上描述中,出于解释而非限定的目的,阐述了诸如具体结构、构造、接口和技术等之类的特定细节,以实现对本发明各个方面的彻底理解。但是,对于了解本发明特点的本领域技术人员来说显而易见的是,使用不同于这些特定细节的其他示例,也可以实现本发明的各个方面。在某些实例中,省略了对公知的装置、电路和方法的描述,以避免因非必要的细节而对本发明的描述造成模糊。
权利要求
1.一种方法,包括由第一处理器请求块;判定第二处理器是否具有所请求的块;如果所述第二处理器不具有所请求的块,则向所述第一处理器传输块;以及所述第一处理器立即向存储器写入已更新的块。
2.如权利要求1所述的方法,其中,所述向所述第一处理器传输块还包括,向所述第一处理器发送第一信号。
3.如权利要求1所述的方法,其中,所述判定所述第二处理器是否具有所请求的块还包括判定所述块是否由所述第二处理器所拥有;以及如果所述块不是由所述第二处理器所拥有,则判定所述块是否由所述第二处理器所共享。
4.如权利要求3所述的方法,其中,所述确定所述块是否由所述第二处理器所共享还包括,向所述第一处理器发送第二信号。
5.如权利要求3所述的方法,其中,所述确定所述块是否由所述第二处理器所拥有还包括,向所述第二处理器发送收回信号。
6.如权利要求5所述的方法,还包括,由所述第二处理器使用最近存储的数据来更新块。
7.如权利要求6所述的方法,还包括在缓冲器中为所述块的项设置比特;以及从所述缓冲器提取所述已更新的块。
8.如权利要求7所述的方法,还包括,由所述第二处理器向存储器写入所述已更新的块。
9.如权利要求8所述的方法,还包括由所述存储器向所述第一处理器发送所述已更新的块;以及由所述第一处理器更新所述已更新的块。
10.如权利要求9所述的方法,还包括由所述第一处理器再次请求所述已更新的块;判定从所述第一处理器向所述存储器发送所述已更新的块之后所述第二处理器是否请求过所述已更新的块;以及向所述第一处理器传输已更新的块。
11.如权利要求10所述的方法,还包括,如果从所述第一处理器向所述存储器发送所述已更新的块之后,所述第二处理器未请求所述已更新的块,则向所述第一处理器发送所述第一信号。
12.如权利要求11所述的方法,还包括由所述第一处理器更新所请求的已更新的块;以及由所述第一处理器保持所述新的已更新的块。
13.如权利要求10所述的方法,还包括,如果从所述已更新的块被发送给所述存储器之后,所述第二处理器请求过所述已更新的块,则向所述第一处理器发送第三信号。
14.如权利要求13所述的方法,还包括由所述第一处理器更新所请求的已更新的块;以及立即向所述存储器写入所述新的已更新的块。
15.第一和第二处理器,包括连接到所述第一和第二处理器的共享高速缓存,其中,所述共享高速缓存确定数据块的所有权;位于所述第一和第二处理器的每一个中的缓冲器,其中,所述缓冲器存储针对所述块的最近数据;且其中,所述第一处理器请求所述块,如果所述块由所述第二处理器共享,则所述第一处理器获取所述块,更新所述块,并立即向所述共享的高速缓存写入所述已更新的块。
16.如权利要求15所述的第一和第二处理器,其中,所述缓冲器包括用于所述缓冲器内每一个块的比特。
17.如权利要求16所述的第一和第二处理器,其中,当所述比特被设置后,提取所述缓冲器内的所述块。
18.如权利要求15所述的第一和第二处理器,其中,如果由所述第一处理器所请求的块被所述第二处理器共享,则所述共享的高速缓存向所述第一处理器发送所述第二信号。
19.如权利要求15所述的第一和第二处理器,其中,如果由所述第一处理器所请求的块不被所述第二处理器共享,则所述共享的高速缓存向所述第一处理器发送所述第一信号。
20.如权利要求19所述的第一和第二处理器,还包括,由所述第一处理器保持所述已更新的块。
21.一种多处理器计算机系统,其包括多个节点,所述多个节点中的每一节点包括路由器,与所述多处理器系统中的所述多个节点进行通信;至少第一和第二处理器,其中,所述第一和第二处理器包括连接到所述第一和第二处理器的共享高速缓存,其中,所述共享的高速缓存确定数据块的所有权,位于所述第一和第二处理器的每一个中的缓冲器,其中,所述缓冲器存储针对所述块的最近数据,且其中,所述第一处理器请求所述块,如果所述块由所述第二处理器共享,则所述第一处理器获取所述块,更新所述块,并立即向所述共享的高速缓存写入所述已更新的块,与输入/输出装置之间的第一接口;以及连接到所述第一接口的音频输入/输出装置。
22.如权利要求21所述的多处理器系统,其中,所述第一和第二处理器中的所述缓冲器包括用于所述缓冲器内每一个块的比特。
23.如权利要求22所述的多处理器系统,其中,当所述比特被设置后,提取所述缓冲器内的所述块。
24.如权利要求21所述的多处理器系统,其中,如果由所述第一处理器所请求的块被所述第二处理器共享,则所述共享的高速缓存向所述第一处理器发送所述第二信号。
25.如权利要求21所述的多处理器系统,其中,如果由所述第一处理器所请求的块不被所述第二处理器共享,则所述共享的高速缓存向所述第一处理器发送所述第一信号。
26.如权利要求25所述的多处理器系统,还包括,由所述第一处理器保持所述已更新的块。
27.如权利要求21所述的多处理器系统,其中,所述第一接口是点到点接口。
全文摘要
一种在共享存储器计算机系统中预测自有高速缓存块的早写回的方法。本发明使系统能够预测哪些写入块更有可能被另一个CPU所请求,以及在块中更新数据后,拥有的CPU尽可能快地将这些块写回至存储器中。如果另一个处理器在请求数据,这将缩减获得数据的延时,减少同步开销,并提高并行程序的吞吐量。
文档编号G06F12/08GK101088076SQ200580044894
公开日2007年12月12日 申请日期2005年12月27日 优先权日2004年12月27日
发明者G·克里索斯, M·马蒂纳 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1