专利名称:用于处理多处理器系统中的存储器访问的方法和装置的制作方法
技术领域:
本发明一般地涉及多处理器系统,并且更具体地,涉及重试取消机制以提高系统性能。
背景技术:
在多处理器系统中有三个主要组件处理单元及其高速缓存、输入/输出(I/O)设备及其直接存储器访问引擎(DMA)以及分布式系统存储器。处理单元执行指令。IO设备使用DMA引擎处理到/来自存储器的数据的物理传输。处理单元通过从指令流发出命令来控制IO设备。分布式系统存储器存储数据。随着处理单元的数量和系统存储器大小的增加,该处理器系统可能需要被包含在单独的芯片或节点上。
所述单独的节点必须能够彼此通信以访问多处理器系统内的所有分布式存储器。仲裁器旨在控制多处理系统内的单独节点之间的命令流和数据传输。处理单元、I/O设备、分布式系统存储器和仲裁器是多节点多处理器系统的主要组件。
图1给出了一个方框图,示出了典型的8路四节点多处理器系统100。因此,有四个单独节点和四条通道来传输数据。例如,节点0 102可以将数据传送到节点1 114或从节点3 138接收数据。每个节点都连接到两个相邻节点。每个节点还包含四个主要组件一部分分布式系统存储器、处理单元及其高速缓存、带有DMA引擎的I/O设备以及仲裁器。具体地,节点0 102包含两个处理单元,PU0 108和PU0 110、一个I/O设备,I/O 0106、一组存储器设备,存储器0 104以及一个仲裁器,仲裁器0 112。节点1 114包含两个处理单元,PU1 122和PU1 120、一个I/O设备,I/O 1118、一组存储器设备,存储器1 116以及一个仲裁器,仲裁器124。节点2 126包含两个处理单元,PU2 132和PU2 134、一个I/O设备,I/O 2 130、一组存储器设备,存储器2 128以及一个仲裁器,仲裁器2 136。节点3 138包含两个处理单元,PU3 144和PU3 146、一个I/O设备,I/O 3 142、一组存储器设备、存储器3 140以及一个仲裁器,仲裁器3 148。
每组分布式系统存储器104、116、128和140都存储数据。例如,存储器0 104包含存储器位置0至A,存储器1 116包含存储器位置A+1至B,存储器2 128包含存储器位置B+1至C,存储器3 140包含存储器位置C+1至D。这些多节点多处理器系统的一个问题是节点0 102可能需要存储在另一节点中的数据,而节点0 102并不知道所需数据位于何处。因此,必须有一种在所述系统的节点之间通信的方法。仲裁器112、124、136和148控制该系统中的节点之间的通信。此外,仲裁器与同一节点内的处理单元通信以存储并检索所请求的数据。
例如,节点0 102可能需要并未存储在其存储器104的地址范围中的特定数据包。因此,节点0 102必须搜索系统内的其他节点以查找此数据。处理单元108向仲裁器0 112发送对特定数据包的请求。此请求包含与所请求的数据对应的地址范围。随后,仲裁器0 112准备对该数据的请求并将其发送到系统中其他的节点114、126和138。根据所请求的地址范围,仲裁器124、136和148接收此请求,并且它们中的一个成为专用节点。此专用节点向系统中所有节点及其自己的高速缓存和系统存储器发送反射(reflected)(探听)命令。每个节点的处理单元的高速缓存和系统存储器都在存储器中搜索该数据,并将其搜索结果发回专用仲裁器。专用仲裁器解释搜索结果并确定带有特定地址值的最准确的数据包。然后,将所请求的数据发送给请求节点。随后,仲裁器0 112将该数据包发送给请求该数据的处理单元108。此实例仅提供了对DMA传输或高速缓存不命中访问的概述。以下讨论将更详细地描述此方法。
图2给出了一个方框图,说明了四节点多处理器系统200中的高速缓存不命中或直接存储器访问的常规实例。节点0 102、节点1 114、节点2 126和节点3 138表示图1中的节点而没有内部组件。在此类操作的环中有五个命令阶段。第一个阶段是初始请求,其产生自请求节点中的DMA请求或高速缓存不命中。请求节点将初始请求发送给专用仲裁节点,专用仲裁节点根据请求地址范围处理该操作。第二个阶段是反射命令,其中专用节点将该请求广播到系统中的所有节点。由专用节点的仲裁器产生所述反射命令。响应该反射命令,节点在其高速缓存或系统存储器中搜索所请求的数据。第三个阶段是由节点内所有处理单元进行的答复,称为探听答复。第四个阶段是组合响应,其是所有探听答复的组合结果。专用节点在收到所有探听答复之后发出该组合响应。此响应通知节点如何继续。第五个阶段是数据传输。具有所述数据的节点能够使用来自原始反射命令和组合响应的信息将该信息发送给请求节点。根据实现,在高速缓存干预(intervention)的情况下,可以在组合响应阶段之前将数据传输到请求节点。
图2示出了处理DMA请求或高速缓存不命中的常规方法。节点0 102需要一个数据包。这可以是DMA请求或所述数据不位于此节点的系统存储器或其上的高速缓存中的事实的结果。基于该请求地址范围,节点1 114是专用仲裁节点。专用仲裁节点可以是请求节点,但在此实例中并不是。节点0 102将(10)初始请求发送到具有所请求的数据的存储器范围地址的节点1 114。节点1 114向其余的节点发送(20)反射命令。节点0 102、节点1 114、节点2 126和节点3 138探听(搜索)其高速缓存和系统存储器。
在节点探听其高速缓存和系统存储器后,它们发送探听答复。在此实例中,节点2 126是忙碌的并且不能探听其高速缓存。因此,节点2 126发送(31)带有重试的探听答复,其意味着稍后需要重新发送原始请求。对于此实施例,带有重试的探听答复具有重试位设置。节点3 138具有准确的、更新的数据,并发送(32)带有干预的探听答复。干预位表示节点3 138具有修改的(最新的)数据。在此系统中,只有一个节点具有修改的数据。对于此实现,由于一个高速缓存状态标识符,节点3 138知道其具有修改的数据。此高速缓存状态标识符指示所述数据的状态。所述高速缓存状态标识符可以指出所述数据是否被修改、是否无效、是否是独占的等。由于节点0 102是请求节点并且没有该数据,所以其发送(33)探听答复(空)。同时,节点1 114探听其高速缓存以搜索正确的数据,并将反射命令发送到其存储器。
节点1 114的仲裁器收集来自所有节点的所有探听答复。可以看到已经设置了干预位和重试位。仲裁器命令(41)进行组合响应重试,指示由于一个节点是忙碌的并且不能探听其高速缓存,必须重新发起该请求。根据实现,当创建组合响应时,节点1 114的仲裁器可以取消来自节点3 138的探听答复的干预位。每当专用仲裁器看到重试位,它就发出组合响应重试。此过程效率低,因为节点3 138具有准确的、更新的数据。即使节点3138设置了干预位,由于这是常规的协议,节点1 114仍会忽略该干预并创建重试。当节点0 102看到(42)带有重试的组合响应时,它向该环再次发出其原始请求。此描述的过程是一种特定的实现,并且可以通过其他方法来实现。
反复重试会导致活锁状态或系统性能的降低。节点在多个状态下发送带有重试位设置的探听答复。满的队列或刷新操作导致节点发送带有重试的探听答复。节点还可能由于正忙于太多的排队或请求而重试。因此,即使节点不会对该请求做任何事情也可能发送重试。在此情况下,节点3 138具有所请求的信息,但由于节点2 126是忙碌的,必须重新发起该请求。在其他实例中,如果请求节点忙碌,即使很明显请求节点没有请求的数据,但是发出了带有重试位设置的答复,专用仲裁节点仍将发送重试的组合响应,这是因为其单元中的一个单元是忙碌的。专用节点,节点1 114还可以内部地断言重试位,这可以导致带有重试的组合响应。
发明内容
本发明提供了一种用于重试取消机制的方法、装置和计算机程序产品,以便当多处理器系统中的高速缓存不命中时或在多处理器系统中的直接存储器访问期间增强系统性能。在具有多个独立节点的多处理器系统中,节点必须能够访问驻留在其他节点上的存储器位置。如果一个节点需要并未包含在其存储器或高速缓存中的数据包,则该节点必须能够在其他节点的存储器或高速缓存中搜索此数据。
如果特定节点需要数据包,它产生提供所请求的数据的相应地址的初始请求。系统内的节点中的一个节点向系统中其余节点发出反射命令。所有节点都搜索它们的存储器高速缓存的相应地址。每个节点都发送指示搜索结果的答复。创建反射命令的节点综合这些答复并发出组合响应,通知每个节点如何继续。本发明通过即使收到了重试答复,只要也收到了干预答复就允许数据传输提高了系统性能。干预答复表示修改的数据位于特定节点的存储器高速缓存中。以前,来自系统中任何节点的重试答复都将促使重试的组合响应,它意味着在随后的时刻必须重新开始这个整个过程。
为了更完整的理解本发明及其优点,结合附图参考以下说明,其中图1是示出了4节点多处理器系统中的典型的8通路(系统中的8个处理器)的方框图;图2是示出了4节点多处理器系统中的高速缓存不命中或直接存储器访问的常规实例的方框图;图3是示出了4节点多处理器系统中的高速缓存不命中或直接存储器访问的修改的实例的方框图;以及图4是示出了多处理器系统中的高速缓存不命中或直接存储器访问的修改的过程的流程图。
具体实施例方式
在以下讨论中,提出了许多特定细节以提供对本发明的全面理解。但是,本领域的技术人员将理解,可以不采用这些特定细节实现本发明。在其他实例中,以方框图的形式示出了公知元件以避免由于不必要的细节使得本发明难以理解。此外,在很大程度上,省略了有关网络通信、电磁信号收发技术等的细节,因为不认为这些细节是获得对本发明的全面理解所必需的,并且认为这些细节是相关领域的普通技术人员可以理解的。
图3描述了示出4节点多处理器系统300中的高速缓存不命中或直接存储器访问的修改的实例的方框图。这种高速缓存不命中或直接存储器访问的修改的方法包括如果设置了干预位则取消重试位。如果设置了干预位,则专用仲裁节点发出干净的组合响应,它指示可以传输所述数据。如果至少一个节点在其高速缓存内具有准确的、更新的数据并且已发送了带有干预位设置的答复,则专用仲裁节点不创建重试组合响应。
图3示出了处理DMA请求或高速缓存不命中请求的修改的方法。节点0 102需要数据包。这可以是DMA请求或该数据并非位于其存储器高速缓存中的事实的结果。根据请求地址范围,节点1 114是专用仲裁节点。节点0 102将(10)带有所请求的数据的存储器范围地址的初始请求发送到节点1 114。节点1 114将(20)标识该存储器地址范围的反射命令发送到其余节点。基于此地址范围,节点0 102、节点1 114、节点2 126和节点3 138探听其存储器高速缓存。
所述节点在探听了它们的高速缓存和系统存储器后发出探听答复。在此实例中,节点2 126是忙碌的并且不能探听其高速缓存。因此,节点2 126发送(31)带有重试的探听答复,其意味着需要重试该探听。节点3 138具有准确的、更新的数据并发送(32)带有干预的探听答复。干预位表示节点3 138具有修改的数据。由于节点0 102是请求节点并且不具有数据,所以其发送(33)探听答复(空)。同时,节点1 114探听其高速缓存以搜索正确的数据。
节点1 114的仲裁器收集来自所有节点的所有探听答复。可以看到已经设置了干预位和重试位。由于节点3 138设置了干预位,节点1 114取消重试位。节点3 138具有正确的数据,因此,没有必要重试数据请求。节点1 114发送(42)不具重试但具有干预位设置的组合响应。此响应指出找到了所述数据并且无需重新开始该操作。此组合响应还允许将所请求的数据从节点3 138传输到节点0 102,并且还允许如果必要所有节点用正确的数据更新其高速缓存。如果在组合响应中指出并且特定的节点认为有必要,则系统中的请求节点和其他探听器可以通过更改高速缓存状态标识符或替换所述数据来更新其高速缓存。
该修改的方法是对现有技术的明显改进,因为通过避免多个重试增强了系统的性能。如果在其他地方可以提供正确的数据,性能不会仅仅因为一个节点忙碌而下降。以高的通信次数,多个重试可以使多节点多处理器系统极大地变慢。
图4是示出了多处理器系统中的高速缓存不命中或直接存储器访问的修改的过程的流程图400。当节点需要不在其高速缓存中的数据时,该节点进行初始请求402。所述初始请求传递到专用节点,并且专用节点向系统404中的所有节点发送反射命令。系统中的节点探听其高速缓存和系统存储器以查找所请求的数据406。如果特定节点忙碌,则它发送带有重试的探听答复408。如果特定节点具有修改的数据,则它发送带有干预的探听答复410。其他节点发送一般的探听答复412。所述一般的探听答复可以指出该节点不具有所请求的数据或者所请求的数据可能没有被修改。
专用节点接收探听答复并综合这些答复414。换句话说,专用节点组合所有的探听答复并确定发送哪个组合响应。如果有带有干预的探听答复,则专用节点发送不带重试的组合响应416。响应不带重试的组合响应,节点可以更新其高速缓存并且将所请求的数据传输到请求节点422。如果没有带有干预或重试的探听答复,则专用节点发送指出哪个系统存储器具有所述数据418的组合响应。此组合响应指出所有探听器都未在其高速缓存中找到所述数据,并且专用节点上的存储器提供所请求的数据。响应此组合响应,节点可以更新其高速缓存并且将结果数据传输到请求节点422。如果有带有重试的探听答复而没有带有干预的探听答复,则专用节点发送带有重试的组合响应420。在带有重试的组合响应之后,必须以初始请求402重新开始所述过程。
应当理解,本发明可以采用许多形式和实施例。因此,在不偏离本发明的范围的情况下可以对本发明进行多种变化。此处所描述的功能允许各种编程模型的可能性。不应该作为对任何特定编程模型的优选来阅读本公开,而是应当着眼于可在其上建立这些编程模型的底层概念。
因此,已经通过参考本发明的某些优选实施例描述了本发明,注意,所公开的实施例在本质上是示例性的而不是限制性的,并且可以构想出对以上公开的大范围的变化、修改、更改和替代,并且在某些实例中,可以采用本发明的某些特征而不相应地使用其他特征。根据对优选实施例的上述描述的回顾,许多这样的修改和变化可被本领域的技术人员认为是合理的。因此,应当理解,以符合本发明的范围的方式并且宽广地构造所附的权利要求。
权利要求
1.一种用于处理包含多个独立节点的多处理器系统中的存储器访问的方法,包括由所述多个节点中的请求节点请求至少一个具有相应存储器地址的数据包;由所述多个节点中的专用节点将所请求的存储器地址发布给所述多个节点;由所述多个节点中的每个节点产生至少一个答复,所述答复包括干预答复、忙碌答复或空答复;由所述多个节点中的专用节点综合所述多个答复;以及响应至少一个干预答复,不论节点是否产生忙碌答复,将所请求的数据包提供给所述请求节点。
2 根据权利要求1的方法,其中所述存储器访问包括高速缓存不命中存储器访问或直接存储器访问。
3.根据权利要求1的方法,其中基于所请求的数据的存储器地址范围选择所述专用节点。
4.根据权利要求1的方法,其中所述发布步骤还包括所述多个节点中的每个节点在其高速缓存中搜索。
5.根据权利要求4的方法,其中所述产生步骤包括以下子步骤如果所请求的数据在其高速缓存中被修改了,则产生所述干预答复;如果所述节点不能搜索其存储器或高速缓存,则产生所述重试(忙碌)答复;以及如果所请求的数据不在其高速缓存中,则产生所述空答复。
6.根据权利要求1的方法,其中所述提供步骤还包括向所述多个节点发出组合响应。
7.根据权利要求1的方法,其中所述提供步骤还包括忽略任何重试(忙碌)答复。
8.一种用于处理多处理器系统中的存储器访问的装置,包括多个连接的、独立的节点,其中每个节点还包括至少一个数据传输模块,其至少被配置为将数据传递到所述多个模块;至少一个存储器,其至少被配置为存储数据;以及至少一个带有高速缓存的处理单元,其至少被配置为执行指令并搜索其高速缓存;以及至少一个连接所述多个节点中的每个节点的仲裁器,其至少被配置为执行以下步骤确定所述至少一个存储器或高速缓存的搜索结果;响应所述搜索,产生干预答复、重试(忙碌)答复或空答复;综合来自所述多个节点的多个答复;以及响应至少一个干预答复,不论是否产生忙碌答复,产生允许数据传输的组合响应。
9.根据权利要求8的装置,其中所述存储器访问包括高速缓存不命中存储器访问或直接存储器访问。
10.根据权利要求8的装置,其中所述至少一个仲裁器包括多个仲裁器,其中所述多个节点的每个节点上驻留有一个仲裁器。
11.根据权利要求10的装置,其中所述多个仲裁器至少被配置为实现以下步骤如果所述请求在其存储器范围内,则反射一个命令;综合来自所述多个节点的所有探听答复;以及将所述组合响应发送到所述多个节点。
12.根据权利要求10的装置,其中所述多个仲裁器至少被配置为实现以下步骤如果所请求的数据在其高速缓存中被修改了,则产生所述干预答复;如果所述节点不能搜索其存储器或高速缓存,则产生所述重试(忙碌)答复;以及如果所请求的数据不在其高速缓存中,则产生所述空答复。
13.根据权利要求8的装置,其中所述至少一个仲裁器至少被配置为响应至少一个干预答复,忽略任何重试(忙碌)答复。
14.一种用于处理包含多个独立节点的多处理器系统中的存储器访问的计算机程序产品,所述计算机程序产品具有其上包含有计算机程序的介质,其中所述计算机程序包括用于执行前面方法权利要求中的任意一种方法的计算机代码。
全文摘要
提供了一种用于重试取消机制的方法、装置和计算机程序产品,以便当多处理器系统中的高速缓存不命中时或在多处理器系统中直接存储器访问期间增强系统性能。在具有多个独立节点的多处理器系统中,节点必须能够请求驻留在其他节点上的存储器位置中的数据。节点在其存储器高速缓存中搜索所请求的数据并提供答复。专用节点仲裁这些答复并通知节点如何继续。通过如果专用节点收到干预答复则允许所请求的数据的传输,而忽略任何重试答复,本发明提高了系统性能。干预答复表示修改的数据位于该节点的存储器高速缓存中,并且因此可以忽略其他节点的任何重试。
文档编号G06F13/28GK1858721SQ20061005864
公开日2006年11月8日 申请日期2006年3月2日 优先权日2005年5月3日
发明者B·M·巴斯, J·N·迪芬德尔弗尔, T·Q·特吕翁 申请人:国际商业机器公司