维护存储器一致性的方法和系统的制作方法

文档序号:6574689阅读:185来源:国知局
专利名称:维护存储器一致性的方法和系统的制作方法
技术领域
本发明一般地涉及多重处理。更具体地说,本发明涉及减少维护加速器和CPU之间一致性的通信所消耗的带宽,所述加速器和CPU可以位于同一芯片或不同芯片上。
背景技术
早期的计算机系统包括单个中央处理单元(CPU),连同CPU关联的存储器、输入/输出(I/O)设备以及大容量存储系统,例如盘驱动器、光存储装置、磁带驱动器等。
然而,对处理能力要求的增加超过了单个处理器的能力,这导致出现许多解决方案来减轻对处理器需求的不断增加的压力。一个此类解决方案是使用与CPU连接的加速器。加速器是可编程的或执行特定功能的自主单元。当CPU收到执行此项功能的请求时,可以将此功能的执行委托给加速器。当加速器处理所分配给它的任务时,CPU可以处理其他任务,从而减少对CPU的压力并提高效率。
图1示出了通过互连总线120与加速器110连接的示例性CPU 100。CPU 100可以连接到存储器设备102。存储器设备102可以例如是动态随机存取存储器(DRAM)设备。此外,CPU 100还可以包含本地高速缓冲存储器101来促进对正在处理的数据的快速访问。加速器110可以通过互连总线120连接到CPU来执行特定功能。例如,加速器110可以是执行专门图形计算和转换的图形加速器。所述加速器可以具有其自己的存储器112和高速缓存111。
当CPU 100收到处理图形的请求时,可以将处理图形数据的任务委托给加速器110。例如,存储器102中包含的块1可以包含需要处理的图形数据。当将处理请求发送到CPU时,可以将块1传输到高速缓存111(或加速器存储器112)以便由加速器进行处理。当完成块1的处理时,可以由加速器将其写回存储器102。
现有技术的一个问题是加速器和CPU在没有存储器一致性的情况下连接。因为处理器和加速器可以共享存储器102和112中包含的数据,所以当处理共享数据时,需要加速器和CPU之间的协调。需要一致性来确保加速器和CPU不会访问由同一存储器位置寻址的不同数据。例如,在图1中,CPU可能在将块1发送到加速器110以进行处理之后收到处理块1的请求。如果新的请求不是图形处理请求,则CPU可以缓存块1进行处理。如果加速器在CPU处理所述块之前完成对所述块的处理,则CPU缓存的数据将过时。因此,CPU将处理不正确的数据。存储器一致性要求数据的最新修改的副本可用于所有处理设备。
对此问题的一个解决方案是实现可更新高速缓存中的过时数据的窥探协议。可以将对每个处理器发出的地址和命令传输到每个其他处理器和/或加速器。可以使用总线监视器来监视存储器访问的地址线。如果高速缓存包含在总线上寻址的存储器块的副本,则所述高速缓存可以更新其存储器块的副本。例如,在图1中,总线监视器可以监视总线120。如果当高速缓存101包含块1的副本时,高速缓存101检测到加速器110的写操作,则高速缓存101可以更新其自己的块1的副本,以使其包含块1的最新和最准确副本以便由CPU处理。
在其他实施例中,高速缓存101可以使其块1的副本无效来响应在存储器102中探测到对块1的存储器写入。因此,当CPU尝试从高速缓存来访问块1时,可以从存储器检索块1的新副本。
但是,在具有多个加速器、CPU和共享存储器的多重处理环境中,实施高速缓存一致性意味着所有存储器访问都必须传播到所有一致性单元。每个一致性单元可以随后窥探存储器访问并响应访问的发起者且指示它们是否需要更新。此类每次对共享存储器访问时设备之间的通信可以消耗许多节点间带宽并显著降低系统的效率。节点可以包括一组共享公共物理总线的CPU或加速器,CPU和加速器通过该物理总线执行一致的存储器访问。通常(但不是必须),节点在不同的芯片上。
因此,需要有效维护多个CPU和加速器之间的高速缓存一致性的方法和系统。

发明内容
本发明的实施例一般地提供了用于减少维护加速器和CPU之间的一致性的通信消耗的芯片间带宽的方法和系统。
本发明的一个实施例提供了一种用于在多重处理系统中的至少一个第一节点与至少一个第二节点之间维护存储器一致性的方法。所述第一节点通常包括一个或多个中央处理单元(CPU)、与所述一个或多个中央处理单元中的每个中央处理单元关联的高速缓冲存储器、共享存储器,以及标识在其他节点处的共享存储器位置的目录。所述第二节点通常包括一个或多个加速器、与所述一个或多个加速器中的每个加速器关联的高速缓冲存储器,以及与所述一个或多个加速器中的每个加速器关联的本地存储。所述方法通常包括将所述共享存储器的块从所述第一节点一致地传输到所述第二节点中的加速器的所述本地存储或高速缓冲存储器中的一个;对所述本地存储中所述传输的块不一致地执行一个或多个操作;以及在执行所述一个或多个操作之后将所述存储器块一致地写回所述共享存储器设备。
本发明的另一个实施例提供了一种用于在多重处理系统中的至少一个第一节点与第二节点之间维护存储器一致性的方法。所述第一节点通常可以包括一个或多个中央处理单元(CPU)、与所述一个或多个中央处理单元中的每个中央处理单元关联的高速缓冲存储器、共享存储器,以及标识缓存在其他节点处的共享存储器位置的节点目录。所述第二节点通常可以包括一个或多个加速器、与所述一个或多个加速器中的每个加速器关联的高速缓冲存储器,以及与所述一个或多个加速器中的每个加速器关联的本地存储。所述方法通常可以包括接收所述一个或多个中央处理单元中的一个中央处理单元访问共享存储器块的请求;响应于接收到所述请求,判定所述块是否缓存在其他位置以及所述块是否被修改;以及如果所述块缓存在所述第二节点处并被修改,则将所述块的地址传输到所述第二节点。
其他实施例提供了一种用于在多重处理环境中的至少一个第一节点与至少一个第二节点之间维护存储器一致性的系统。所述系统包括至少一个第一节点和至少一个第二节点。所述第一节点通常包括一个或多个中央处理单元(CPU)、与所述一个或多个中央处理单元中的每个中央处理单元关联的高速缓冲存储器、共享存储器,以及标识在其他节点处的共享存储器位置的目录。所述第二节点通常可以包括一个或多个加速器、与所述一个或多个加速器中的每个加速器关联的高速缓冲存储器,以及与所述一个或多个加速器中的每个加速器关联的本地存储。所述第一节点通常配置为接收访问共享存储器块的请求;以及响应于接收到所述请求,判定所述块是缓存在所述第一节点还是其他节点内以及所速块是否被修改。如果所述访问是读访问,则所述第一节点配置为提供共享存储器的最新修改的块,并且如果所述访问是写访问,则更新或无效缓存所述存储器块的位置。所述第二节点通常配置为一致地发出访问所述第一节点中的共享存储器块的请求,并且如果将所述块传输到所述本地存储,则对所述块非一致地执行操作。


为了可以获得和详细理解按照以上方式介绍的本发明的上述功能、优点和目标,可以通过参考附图中示出的本发明的实施例来获得以上简述的本发明的更具体的描述。
但是,要指出的是,附图仅示出了本发明的典型实施例,因此不应被看作限制本发明的范围,因为本发明可以允许其他等效的实施例,这些附图是图1是示出与中央处理单元(CPU)相连接的加速器的现有技术示意图;图2A是根据本发明的一个实施例的示例性多重处理系统的图示;
图2B是根据本发明的一个实施例的示例性多重处理系统的另一图示;图3是由一个节点中的CPU和其他节点中的加速器访问的共享存储器块的图示;图4是为了判定是否必须在包含共享存储器的节点目录中创建表项而执行的示例性操作的流程图;图5是为了向加速器提供所请求的存储器块的最新修改的副本而执行的示例性操作的流程图;以及图6是为了更新所有由加速器写回共享存储器的存储器块的缓存的副本而执行的示例性操作的流程图。
具体实施例方式
本发明一般地涉及减少由维护加速器与CPU之间一致性的通信所消耗的芯片间带宽。所述中央处理单元和加速器可以聚集在多重处理环境中的单独节点上。每个包含共享存储器设备的节点都可以维护目录以跟踪可能缓存在其他节点处的共享存储器的块。因此,只有当存储器位置缓存在节点之外时,才会将命令和地址传输到其他节点处的处理器和加速器。此外,因为加速器通常不访问与中央处理单元访问的数据相同的数据,所以仅将初始的读取、写入和同步操作传输到其他节点。可以不一致地执行对数据的中间访问。因此,可以减少维护一致性所消耗的芯片间带宽。
以下将参考本发明的实施例。但是,应该理解,本发明并不限于所描述的特定实施例。相反,任何以下功能和元素的组合都构想为实现和实践本发明,无论是否与不同实施例相关。此外,在各种实施例中,本发明相对现有技术提供了许多优点。然而,尽管本发明的实施例可以相对其他可能的解决方案和/或现有技术实现优点,但是特定的优点是否是由给定实施例实现并不会限制本发明。因此,以下方面、功能、实施例和优点仅为示例性的,并不被视为所附权利要求的元素或限制,除非在权利要求中明确提出。同样,对“本发明”的引用不应理解为对在此披露的任何发明主题的概括,也不应被视为所附权利要求的元素或限制,除非在权利要求中明确提出。
示例性系统图2A示出了根据本发明的一个实施例的包含CPU 210和加速器220的示例性多重处理系统200。系统200的CPU 210和加速器220可以组织为两个或多个节点。每个节点可以包含处理器或加速器的任何组合和共享存储器设备。所述共享存储器可以由节点中的处理器和/或加速器以及远程节点中的处理器和/或加速器访问。存储器访问时间可以取决于相对于发出请求的设备的存储器位置。此类存储器访问称为非一致存储器访问(NUMA)。例如,处理器对其主节点中的存储器的访问可以快于对远程节点处的存储器的访问。
为了提高效率,处理器和共享存储器可以有选择地聚集在每个节点处以减少存储器访问时间。例如,频繁地访问给定存储器设备中的数据的处理器和加速器可以与同一节点中的存储器设备聚集在一起。此外,操作系统支持可以通过每次运行时安排过程在同一节点上运行来减少节点间访问的频率。
由于加速器仅在CPU请求时执行专门任务,因此可以将加速器聚集在与包含CPU的节点分离的节点中。从而,在系统200中,CPU 210聚集在节点0中,而加速器220聚集在节点1中。虽然示出了两个节点,但是本领域的技术人员将理解,可以在系统中实现任何数量的节点。可以通过链路230互连多个节点中的每个节点。
如所示出的,节点0包含一组CPU 210(图2A中示出4个)。每个CPU可以具有本地化的高速缓冲存储器211。虽然图中示出了专用、本地化的高速缓存,但是本领域的技术人员将认识到,还可以实现多个级别的高速缓冲存储器。此外,可以在CPU之间共享一个或多个级别的高速缓存。
节点0还可以包含与每个CPU可通信地连接的非本地存储器212。存储器212优选地是随机存取存储器,例如动态随机存取存储器(DRAM)。存储器212可以足够大以便包含需要由CPU处理的数据。由于CPU对本地化的高速缓冲存储器(如高速缓冲存储器211)的访问快于对非本地存储器(如存储器212)的访问,所以可将每个CPU要处理的数据块从存储器212复制到本地高速缓冲存储器211进行处理。存储器212还可以是由其他节点处的CPU和/或加速器通过链路230访问的共享存储器。
如果存储器212是可以由其他节点访问的共享存储器,则节点0还可以包含节点目录213以跟踪来自存储器212的缓存在其他节点处的块的副本。使用节点目录213的优点在于,所述系统可以仅通知那些当前在使用给定地址中扮演有效角色的处理器有关对该地址的操作。例如,所述节点目录可以包含有关在共享存储器中且缓存在其他节点处的地址、这些节点的位置以及数据的状态的信息。因此,仅当特定地址缓存在其他节点处且所述数据已被修改时,才会将存储器访问传输到其他节点。因此,通过使用节点目录,无需将所有地址和命令传输到所有节点,从而减少系统开销、延迟和链路间的带宽消耗。
节点1可以包含一个或多个加速器220。如CPU一样,每个加速器220可以具有关联的专用高速缓冲存储器221。虽然未在图中示出,但是本领域的技术人员仍将认识到,还可以实现多个高速缓存级别。此外,可以在节点中的加速器之间共享一个或多个高速缓存级别。由于节点中的访问可以快于通过链路230到其他节点的访问,因此可以将加速器要处理的数据复制到相应的高速缓冲存储器221中进行处理。
节点1可以包括非本地存储器222。存储器222可以是其他节点可以访问的共享存储器设备。如同存储器212,存储器222也可以是随机存取存储器设备(如DRAM设备)。如果共享存储器222包括在节点1中,则该节点还可以包括目录223以跟踪来自存储器222的缓存在其他节点处的块的副本。
每个加速器还可以具有关联的可选本地存储224。本地存储224可以是主要由与其连接的加速器访问的非一致存储器。由于本地存储224仅可以由其相应的加速器访问,因此本地存储可以是非一致的。因此,无需将加速器和关联的本地存储之间的事务传播到其他节点来确保一致性或缓存在同一节点内。
由加速器处理的数据可以包含在本地存储224中。因此,每个加速器对其本地存储的访问以获得初始数据和中间结果不会增加链路230的带宽要求。可以由软件在CPU 210访问存储器212或222之前将最终结果从本地存储复制到存储器212或222中。软件还可以协调和同步加速器和CPU对此类共享数据的访问。
在某些实施例中,存储器222、高速缓存221和本地存储224可以是可选的,因此从节点1中省略。若干因素可以影响包括一个或多个上述设备。例如,如前所述,由于跨节点的存储器访问可能慢于对本地存储器的访问,因此包括高速缓存221和本地存储224可能有利。因此,通过包括高速缓存和本地存储,可以减少延迟和芯片间带宽消耗。如果加速器处理大量数据,则包括存储器222可能有利,因为对其他节点处的共享存储器的访问可能慢于对节点内的共享存储器的访问。如同高速缓存,包括存储器可以减少延迟和芯片间带宽。其他因素可以是在包括存储器的情况下所需目录的大小和复杂性。大型存储器可能需要更大和更复杂的目录,这可能成为降低性能的瓶颈。
图2B是其中省略了共享存储器222的本发明的备选实施例。相应地,由于没有要跟踪的共享位置,因此也省略了节点目录223。在某些实施例中,图2B中的高速缓存221仅可以缓存少量数据。例如,每个高速缓存221可以仅包含6个高速缓存线。因此,节点目录213只能跟踪与4个高速缓存221中的每个高速缓存221的6个地址对应的24个地址。因此,无需将CPU对存储器212的访问传输到节点1,除非地址缓存在节点1中的24个位置中的一个位置,由此减少了维护节点间一致性的带宽消耗。
本地高速缓冲存储器211和221可以是一致的,因为它们可以包含来自其他节点处的共享存储器设备(如存储器212和222)的数据的副本。因此,可以跟踪高速缓存211和221中块的修改状态来确保一致性。例如,如果加速器对已位于其高速缓存中的块进行写入并且该块未被修改,则需要转换包含该块的所有节点中的所有高速缓存的状态。在这种情况下,需要将所述块的地址传输到所有此类高速缓存。其他高速缓存中的已寻址的块可能转换为无效状态,而只有加速器的高速缓存将转换为已修改的状态。同时,如果所述块的存储器位置位于与加速器不同的节点,则还可以更新该节点中的节点目录以显示在加速器的远程节点中修改了所述块。
类似地,如果在共享存储器中更新了存储器块,则还必须更新或无效缓存了所述块的所有位置。但是,本发明的一个优点是只需传输加速器进行的初始读取操作、写操作和同步。
读取操作初始读取操作可以是将需要由加速器处理的数据从节点0处的共享存储器位置传输到节点1的操作。可以一致地执行该访问以确保加速器具有系统中可用数据的最新版本。可以由每个加速器中的动态存储器访问(DMA)控制器的跨链路230的DMA来执行所述读取操作。节点1中的加速器对共享存储器位置(如存储器212)的DMA访问可以指示是将数据传输到非一致的本地存储还是一致的高速缓存或存储器。如果将数据传输到一致的单元,则将在节点目录213中创建指示数据的位置、地址和状态的表项。但是,如果将数据传输到本地存储,则不在节点目录中创建表项。
通常,可以将从远程共享存储器位置读取的数据存储在与加速器关联的本地存储中。因为本地存储是非一致的,所以加速器可以在本地存储中执行操作和修改数据。对本地存储的访问将不会被传输到其他节点,从而减少带宽消耗。此外,由于未在节点0处的节点目录中创建表项,因此无需将CPU对传输到本地存储的存储位置的访问传输到节点1。
但是,某些读取操作可以导致将数据传输到一致单元而不是本地存储。例如,可以缓存原子操作和用于虚拟地址的硬件转换的页表表项。加速器对这些高速缓存中的数据的操作可以是一致的,要求将地址传输到其他节点。同样,其他节点中的CPU或加速器对此同一数据的操作可以是一致的,要求从其他节点传输地址。
图4是为了判定是否在包含共享存储器的节点的节点目录中创建了表项而执行的操作的流程图。所述操作在步骤401通过从包含加速器的节点接收读取请求开始。在步骤402,如果所述读取请求指示数据读取正在被传输到本地存储,则在步骤403中,不在节点目录中创建表项。另一方面,如果所述读取请求指示将数据传输到一致单元(如高速缓存或存储器单元),则在步骤404,在节点目录中创建指示正在传输的地址、传输的位置和数据状态的表项。
图3示出了由节点0中的CPU 210和节点1中的加速器220一致地访问的共享存储器212的存储器块(块1)。例如,可以将块1缓存在高速缓冲存储器211a以由节点0中的CPU 210a处理。随后,可以将涉及块1的任务委托给节点1中的加速器220a(其需要将块1的副本发送到节点1)。因为CPU 210a可能已修改了块1,所以在将所述块发送到节点1之前,必须检查高速缓存211a以寻找块1的更新的副本。还检查节点目录213以判定是否在某些其他节点中缓存和修改了块1。在某些实施例中,与窥探高速缓存211a同时地检查节点目录。如果节点目录213指示在节点2中缓存并修改了块1,则将块1的地址发送到节点2。还将所述块的目标节点编号0发送到节点2。节点2中的高速缓存窥探所述地址并在高速缓存231中找到块1。然后可以将块1传输到节点0。本领域的技术人员还将认识到,节点0可以将节点1的目标节点编号提供给节点2。因此,可以将节点2中已修改的块直接传输到节点1。
图5是为了确保在第一远程节点的共享存储器(如存储器212)上的加速器在读取操作期间提供存储器块的最新副本而执行的示例性操作的流程图。所述操作在步骤501通过判定请求的存储器块是否缓存在第一远程节点中开始。如果所述块缓存在第一远程节点中,则在步骤502中,针对对所述数据的修改而检查所述块。如果已经修改所述块,则从包含已修改块的高速缓存中直接读取所述块。
如果所请求的块没有缓存在第一远程节点中或如果缓存了所述块但未修改所述块,则在步骤504中,判定所述块是否缓存在第二远程节点中及是否修改了所述块。例如,这可以通过检查指示可能缓存和修改块的位置的节点目录来完成。如果在第二远程节点缓存和修改了所述块,则可以将所述块的地址发送到第二远程节点并在步骤508窥探该地址。在步骤506,可以从在第二远程节点中包含已修改块的高速缓存来读取已修改的块。
如果未在第二远程节点缓存所述存储器块或如果在第二远程节点缓存的块未被修改,则在步骤507,可以从第一远程节点处的共享存储器设备读取所述块。本领域的技术人员还将认识到,如果所述存储器块同时缓存在第一远程节点中的高速缓存和第二远程节点中的高速缓存,则可以读取最新修改的块。
与加速器相比,CPU的大部分读取操作是针对没有缓存在远程节点中的位置和针对CPU的节点中的存储器。在这种情况下,无需将要读取的块地址传输到远程节点。此外,即使所述块缓存在远程节点但未被修改,也无需传输所述地址。在所有这些情况下,可以使用CPU节点中的节点目录来判定其他节点中所述块的状态。因此可以使用所述节点目录来避免将大多数地址传输到其他节点。
当CPU在其自己的节点中的共享存储器内的位置执行读取时,所述节点中的其他高速缓存窥探该地址。如果任何此类高速缓存包含修改的块,则直接从包含修改块的高速缓存中读取所述块。如果未在所述节点缓存请求的块或如果缓存了所述块但未修改,则检查节点目录。如果在远程节点中缓存了所述块并已修改块,则将地址传输到远程节点并在该处窥探地址。然后从远程节点中包含已修改块的高速缓存中读取已修改的数据。在某些实施例中,将更改远程高速缓存和节点目录状态来指示未修改高速缓存线。还可以将修改的数据写入存储器。使用本领域的技术人员熟悉的备选高速缓存协议,可以避免存储器写入并且其他高速缓存状态也是可能的。
写入操作写入操作可以是在加速器处理之后将数据从节点1中的加速器传输回节点0中的共享存储器的操作。如同读取操作,写入操作也可以由对远程节点处的共享存储器的DMA访问来执行。因为在系统中的其他高速缓存内可能正在使用此数据的过期副本,所以还可以一致地执行该操作来更新包含过期数据的高速缓存。
再次参考图3,可以首先将块1缓存在高速缓存221a中以便由节点1中的加速器220a处理。然后可以将其缓存在高速缓存211a中以便由CPU210a处理,或者缓存在高速缓存231中以便由节点2中的加速器230处理。在CPU 210a处理块1之前,加速器220a可能已修改了所述块并将其写回共享存储器212。在某些实施例中,可以在加速器220a写入块1时使高速缓存211a和高速缓存231中的块1无效。可以执行无效以防止CPU 210a访问旧的数据。在其他实施例中,当加速器220a写入块1时,可以使用最新的数据更新高速缓存211a和高速缓存231中的块1。两种方式都在加速器220a写入块1之后防止CPU 210a和加速器230访问旧的数据。因此,可以一致地执行加速器的写入操作。
图6示出了可被执行以确保在加速器完成处理数据之后更新所有高速缓存的示例性操作。所述操作在步骤606由加速器对第一远程节点处的共享存储器(如存储器212)位置执行DMA写入操作开始。在步骤601中,第一远程节点中的高速缓存可以窥探写入操作的地址并判定是否本地缓存了所述地址。如果缓存了所述地址,则所述高速缓存可以在步骤602使用新的写入数据来更新它们相应的存储器块的副本。如前所述,在某些实施例中,所述高速缓存可以使其相应存储器块的副本无效而不是更新其副本。
在步骤603中,判定是否在第二远程节点处缓存了写入的地址。这可以通过检查节点目录以找到其他节点中缓存了寻址后的存储器块的位置来完成。如果在第二远程节点缓存了所述存储器块,则可以在步骤607将所述地址传输到第二远程节点。第二远程节点处的高速缓存可以窥探该地址,并且在步骤604,可以使用新的写入数据更新包含寻址的存储器块的高速缓存。在其他实施例中,可以在第二远程节点处的高速缓存(多个)中使所述地址块无效。在步骤605中,可以将所述数据写入第一远程节点中的共享存储器。
CPU执行的写入操作可以主要是针对CPU节点中的共享存储器内的位置。在这种情况下,无需将要写入的块的地址传输到远程节点。可以使用CPU节点中的节点目录来判定其他节点中的块的状态。因此,可以使用节点目录来避免将大多数地址传输到其他节点。
当CPU执行对其本身节点中的存储器内的位置的写入时,可能要考虑若干种情况。在一种情况中,寻址的块可能已在与CPU连接的高速缓存中并且已被修改。在这种情况下,可以只是使用新的数据更新所述高速缓存。
在第二种情况中,寻址的块可能已在与CPU连接的高速缓存中,但是未被修改。在这种情况下,可以由节点中的其他高速缓存窥探所述地址。如果任何此类高速缓存包含修改的块,则可以使所述块无效。还可以检查节点目录。如果在远程节点缓存了所述块,则可以将所述地址传输到远程节点并在该处窥探所述地址。可以在所述远程高速缓存中使所述块无效。然后使用写入数据更新CPU的高速缓存。
在第三种情况中,寻址的块可能不在与CPU连接的高速缓存中。在这种情况下,可以由所述节点中的其他高速缓存窥探所述地址。如果任何此类高速缓存包含所述块并且已修改所述块,则可以从该高速缓存读取数据。还可以检查节点目录。如果在远程节点缓存了所述块,则可以将所述地址传输到远程节点并在该处窥探所述地址。如果任何远程高速缓存包含所述块并已修改所述块,则可以从该高速缓存读取数据。如果所有高速缓存都没有所述块的修改的副本,则可以从存储器读取所述块。可以在除了CPU的高速缓存以外的所有高速缓存中使所述块无效。然后可以使用写入数据更新CPU的高速缓存。
通过对首先一致地访问的数据执行非一致访问,可以无需为非一致访问将地址和命令传输到系统中的其他节点。在完成数据的处理之后,加速器可以一致地写回数据。因此,可以维护数据一致性,同时减少为维护多重处理系统的节点间的存储器一致性而消耗的带宽。
虽然以上涉及本发明的实施例,但是可以设想本发明的其他和进一步的实施例而不偏离其基本范围,并且本发明的范围由以下权利要求来确定。
权利要求
1.一种用于在至少一个第一节点之间维护存储器一致性的方法,其中所述第一节点包括一个或多个中央处理单元;与所述一个或多个中央处理单元中的每个中央处理单元关联的高速缓冲存储器;共享存储器;以及节点目录,所述节点目录标识了位于所述第一节点中的共享存储器内并缓存在其他节点处的位置;以及至少一个第二节点,其中所述第二节点包括一个或多个加速器;与所述一个或多个加速器中的每个加速器关联的高速缓冲存储器;以及与所述一个或多个加速器中的每个加速器关联的本地存储,所述方法包括将所述共享存储器的块从所述第一节点一致地传输到所述第二节点中的加速器的所述本地存储或高速缓冲存储器中的一个;对所述本地存储中所述传输的块不一致地执行一个或多个操作;以及在执行所述一个或多个操作之后将所述存储器块一致地写回所述共享存储器设备。
2.根据权利要求1的方法,其中将所述第一节点中的共享存储器块一致地传输到所述第二节点包括判定将所述存储器块传输到所述第二节点中的所述高速缓冲存储器还是传输到所述第二节点中的所述本地存储;以及如果判定要将所述存储器块传输到所述高速缓冲存储器,则将所述存储器块的地址和所述高速缓冲存储器的位置输入所述第一节点内的所述节点目录。
3.根据权利要求2的方法,包括根据来自所述第二节点的指示所述传输的位置的信号来判定将所述存储器块传输到所述第二节点中的所述高速缓冲存储器还是传输到所述第二节点中的所述本地存储。
4.根据权利要求1的方法,其中将所述第一节点中的一个或多个共享存储器块一致地传输到所述第二节点中的一个或多个本地存储包括由所述第二节点将所需存储器块的地址从所述共享存储器发送到所述第一节点;由所述第一节点中的所述一个或多个高速缓冲存储器窥探所述地址以判定所述存储器块是否缓存在所述第一节点内;检查所述节点目录以寻找所述第一节点之外可能缓存所述存储器块的位置;如果所述存储器块缓存在所述第一节点之外的位置,则将所述块的地址发送到所述第一节点之外的所述位置;判定是否在所述缓存的位置处修改了所述存储器块;以及如果已修改了所述存储器块,则检索最新修改的块。
5.根据权利要求1的方法,其中在执行所述一个或多个操作之后将所述存储器块一致地写回所述共享存储器设备包括由所述第二节点将要写入所述共享存储器的存储器块的地址发送到所述第一节点;由所述第一节点中的所述一个或多个高速缓冲存储器窥探所述地址以判定所述存储器块是否缓存在所述第一节点内;检查所述节点目录以判定所述存储器块是否缓存在所述第一节点之外的位置;如果所述存储器块缓存在所述第一节点之外的位置,则将所述块的地址发送到所述第一节点之外的所述位置;将所述块写入所述缓存的位置以更新所述高速缓存;以及将所述块写入所述第一节点中的所述共享存储器。
6.一种用于在至少一个第一节点之间维护存储器一致性的方法,其中所述第一节点包括一个或多个中央处理单元;与所述一个或多个中央处理单元中的每个中央处理单元关联的高速缓冲存储器;共享存储器;以及节点目录,所述节点目录标识了位于所述第一节点中的共享存储器内并缓存在其他节点处的位置;以及至少一个第二节点,其中所述第二节点包括一个或多个加速器;与所述一个或多个加速器中的每个加速器关联的高速缓冲存储器;以及与所述一个或多个加速器中的每个加速器关联的本地存储,所述方法包括接收所述一个或多个中央处理单元中的一个中央处理单元访问共享存储器块的请求;响应于接收到所述请求,判定所述块是否缓存在其他位置以及所述块是否被修改;以及如果所述块缓存在所述第二节点处并被修改,则将所述块的地址传输到所述第二节点。
7.根据权利要求6的方法,其中判定所速块是否缓存在其他位置包括由与所述一个或多个中央处理单元关联的所述高速缓冲存储器窥探所述块的地址以判定所述块是否缓存在所述第一节点中;检查所述节点目录以判定所述块是否缓存在除所述第一节点之外的节点处以及所述块是否被修改。
8.根据权利要求6的方法,还包括从包含修改的块的高速缓存中检索所述修改的块。
9.根据权利要求6的方法,还包括如果所述请求是写操作,则使包含所述块的一个或多个高速缓存中的所述块无效。
10.一种系统,所述系统包括至少一个第一节点,所述第一节点包括一个或多个中央处理单元;与所述一个或多个中央处理单元中的每个中央处理单元关联的高速缓冲存储器;共享存储器;以及节点目录,所述节点目录标识了位于所述第一节点中的共享存储器内并缓存在其他节点处的位置;以及至少一个第二节点,所述第二节点包括一个或多个加速器;与所述一个或多个加速器中的每个加速器关联的高速缓冲存储器;以及与所述一个或多个加速器中的每个加速器关联的本地存储,其中所述第一节点配置为接收访问共享存储器块的请求;以及响应于接收到所述请求,判定所述块是缓存在所述第一节点还是其他节点内以及所述块是否被修改;如果所述访问是读访问,则提供共享存储器的最新修改的块;以及如果所述访问是写访问,则更新或无效缓存所述存储器块的位置;以及所述第二节点配置为一致地发出访问所述第一节点中的共享存储器块的请求;以及如果将所述块传输到所述本地存储,则对所述块非一致地执行操作。
11.根据权利要求10的系统,其中为了访问所述共享存储器块,所述第二节点还配置为生成指示将所述块传输到所述高速缓冲存储器还是所述本地存储的信号,并且所述第一节点还配置为根据所述信号来传输所述块。
12.根据权利要求11的系统,其中如果将所述块传输到所述第二节点中的所述高速缓冲存储器,则所述第一节点还配置为在所述节点目录中输入所述块的地址和所述高速缓冲存储器的位置。
13.根据权利要求10的系统,其中为了提供所述存储器块的最新修改的副本,所述第一节点被配置为判定所述块的修改的副本是否缓存在所述第一节点中;判定所述存储器块的修改的副本是否缓存在所述系统中的任何其他节点处;以及如果修改的副本存在,则将所述块的最新修改的副本传输到所述第二节点。
14.根据权利要求13的系统,其中为了判定所述块的修改的副本是否缓存在所述第一节点中,所述第一节点中的所述高速缓存被配置为窥探与所述请求关联的块的地址以判定所述块是否缓存在所述第一节点中;以及如果缓存了所述块,则判定所述块是否已被修改。
15.根据权利要求13的系统,其中为了判定所述块的修改的副本是否缓存在所述系统中的任何其他节点处,所述第一节点被配置为检查所述节点目录以判定所述块是否缓存在任何其他节点处;如果所述块缓存在任何其他节点处,在其他节点修改了所述块的情况下,从所述其他节点检索所述块。
16.根据权利要求10的系统,其中为了无效或更新所述存储器块以响应所述写访问,所述第一节点被配置为判定所述块是否缓存在所述第一节点中;以及判定所述块是否缓存在所述系统中的任何其他节点处。
17.根据权利要求16的系统,其中为了判定所述块是否缓存在所述第一节点中,所述第一节点中的所述高速缓存被配置为窥探所述写访问。
18.根据权利要求16的系统,其中为了判定所述块是否缓存在所述系统中的任何其他节点处,所述第一节点被配置为检查所述节点目录。
19.根据权利要求10的系统,其中所述第一节点还配置为响应于判定所述块缓存在第三节点处并被修改,将所述块的地址和与所述第二节点关联的编号传输到所述第三节点;以及将所述第三节点配置为将所述块传输到所述第二节点。
20.根据权利要求19的系统,其中所述第一节点配置为检查所述节点目录以判定所述块是否缓存在所述第三节点处以及所述块是否被修改。
全文摘要
本发明的实施例提供了用于减少维护加速器和中央处理单元之间一致性的通信所消耗的节点间带宽的方法和系统。所述中央处理单元和加速器可以聚集在多重处理环境中的单独节点上。每个包含共享存储器设备的节点都可以维护目录以跟踪可能缓存在其他节点处的共享存储器的块。因此,只有当存储器位置缓存在节点之外时,才会将命令和地址传输到其他节点处的处理器和加速器。此外,因为加速器通常不访问与中央处理单元访问的数据相同的数据,所以仅将初始的读取、写入和同步操作传输到其他节点。可以不一致地执行对数据的中间访问。因此,可以减少维护一致性所消耗的芯片间带宽。
文档编号G06F12/08GK101042679SQ20071008919
公开日2007年9月26日 申请日期2007年3月21日 优先权日2006年3月23日
发明者A·H·沃特仁, S·D·克拉克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1