专利名称:用于避免冲突回写造成的活锁的方法和系统的利记博彩app
本申请和以下共同待决美国专利申请有关1.同一日提交的、标题为“用于避免因非均匀存储器存取系统内冲突的无效事务处理造成的活锁的方法和系统”、序列号为09/259,367的申请;以及2.同一日提交的、标题为“用于避免因非均匀存储器存取系统内失时效的排它的/修改的目录条目造成的活锁的方法和系统”、序列号为09/259,379的申请上述所有共同待决的申请都转让给本申请的受让人。
本发明一般地用于数据处理的方法和系统,并且具体地涉及用于避免计算机系统内的活锁的方法和系统。更具体地,本发明涉及一种用于在非均匀存储器存取计算机系统内避免因冲突的回写造成的活锁的方法和系统。
计算机技术中周知,通过组合几个独立处理机的处理能力形成多处理机(MP)计算机系统可达到更高的计算机系统性能。可以用一些不同的拓扑根据特定应用的性能要求设计MP计算机系统。例如,对称的多处理机(SMP)配置是常用的较简单MP计算机系统拓扑中的一种,其中诸如系统存储器的资源由多个处理机可享。拓扑名“对称”来源于这样的事实,SMP计算机系统内的所有处理机对系统内的资源具有对称的访问。
虽然SMP拓扑允许采用相对简单的处理机间通信协议和数据共享协议,总的来讲SMP拓扑的可扩缩和带宽有限,尤其当系统规模增加时在系统存储器层上。从而,出现一种作为替代设计的被称为非均匀存储器存取(NUMA)的另一种MP计算机系统拓扑,它解决SMP拓扑的许多限制,但以某些增加的复杂性为代价。
典型的NUMA计算机系统包括若干互连的节点。每个节点包括至少一个处理机和一个本地“系统”存储器。NUMA拓扑名来自于这样的事实,处理机对于存储在其本地节点处的系统存储器的数据的存取等待时间短于对于存储在远程节点处的系统存储器中的数据的存取等待时间。取决于在不同节点中的超高速缓存中是否保持数据相关性,NUMA计算机系统还可进一步分类成是非超高速缓存相关的或者是超高速缓存相关的。通过把NUMA计算机系统内的各个节点实施成较小的SMP系统,NUMA拓扑解决常规SMP拓扑的可扩缩性限制。这样,可以优化仅由少量处理机使用的各节点内的共享部件,同时整个系统可从可得到的相对短的等待时间下的更大规模下的并行性受益。
除了所有这些不同的优点外,NUMA系统中的一个具体忧虑是超高速缓存相关性协议带来的潜在活锁问题。例如,当位于某远程节点处的包含着超高速缓存线的修改的拷贝的处理机试图在位于某主节点处的处理机试图访问该超高速缓存线的同时通过向该主节点发出回写请求使该超高速缓存线脱离其超高速缓存下,可以出现活锁情况。因此,需要提供一种方法,用于避免NUMA计算机内因冲突的回写造成的上述活锁情况。
依据本发明的方法和系统,一种NUMA的计算机系统包括至少二个连接到一个互连上的处理节点。二个处理节点中的每个包括一个本地系统存储器。响应几乎在某拥有节点处的处理机试图把在所述拥有节点处修改的超高速缓存线回写到主节点的同时位于不同于所述拥有节点的另一节点处的处理机试图经过存储器请求访问所述拥有节点处的该修改的超高速缓存线,仅当主节点内的相关性目录把该回写考虑成来自修改的超高速缓存线的拥有节点时才允许不重试下在该主节点处完成该回写。拥有节点是具有该超高速缓存线的现在存在最近拷贝的节点。接着允许在主节点处重试和完成存储器请求。
在下述详细书面说明中本发明的所有目的、特性和优点变为清楚。
通过连带着附图参照示范实施例的下述详细说明可最好地理解本发明本身以及使用的优选方式、其它目的和其优点,附图是
图1是依据本发明的一种优选实施例的非均匀存储器存取(NUMA)计算机系统的框图;图2是图1的NUMA计算机系统中的节点控制器的详细框图;图3a和3b示出由冲突的回写造成的活锁情况的示例;图4a、4b和4c是依据本发明的一种优选实施例解决由冲突的回写造成的活锁情况的示例;图5总结依据本发明的一种优选实施例的在图4a-4c中示出的解决活锁情况期间的超高速缓存相关性目录内的被请求超高速缓存线的各种相关性状态;以及图6总结依据本发明的一种实施例的接收回写请求时所有可能采取的相关性状态和行为。
I.NUMA系统A.系统概述现参照各附图,尤其参照图1,图1示出依据本发明的一种优选实施例的非均匀存储器存取(NUMA)计算机系统的框图。所描述的该实施例例如可按工作站、中型机或大型机实现。如所示,NUMA计算机系统10包括通过节点互连20互连的处理节点11、12和13。每个处理节点11-13至少包括一个处理机。例如,处理节点11包括处理机14a-14c,它们最好彼此相同。
除了用于执行程序指令的寄存器、指令流逻辑电路和执行部件之外,每个处理机14a-14b还包括一个各自的单片层1(L1)超高速缓存15a-15c,它和各自的一个层2(L2)超高速缓存16a-16c用于对一个相关的处理机14a-14c分级来自系统存储器17的数据。换言之,L1超高速缓存15a-15c和L2超高速缓存16a-16c为可能由一个处理机14a-14c再次访问的数据充当系统存储器17和处理机14a-14c之间的中间存储。L2超高速缓存16a-16c的存储容量典型地要比L1超高速缓存15a-15c的存储容量大得多,但存取等待时间更长。例如,L2超高速缓存16a-16c可具有1-16兆字节的存储容量,而L1超高速缓存15a-15c只具有8-32千字节的存储容量。尽管在图1中示出L2超高速缓存16a-16c在处理机14a-14c的外面,应理解每个L2超高速缓存16a-16c可替代地和一个相关的处理机14a-14c混为一体,作为另一层的单片超高速缓存。此外,应理解,可采用更多层的超高速缓存(例如层3、层4、等)以提供附加的数据存储。在本公开中,每个处理机14a-14c以及其相关的超高速缓存分级结构,即L1和L2超高速缓存,被当作单个监听方。
此外,每个处理节点11-13还包括各自的节点控制器,例如用于处理节点11的节点控制器19。节点控制器19和系统存储器17、L2超高速缓存16a-16c一起连接到本地互连5。通过至少执行下述二个功能节点控制器19充当远程处理节点12和13的本地代理(1)节点控制器19监听有关本地互连5上的通信事务处理并且便利向远程处理节点12传输本地通信事务处理,以及(2)节点控制器19监听节点互连20上的通信事务处理并且控制相关本地互连如本地互连5上的有关通信事务。每个本地互连,例如互连5,上的通信是由一个仲裁器,例如仲裁器18,控制的。根据由任何处理机14a-14c生成的总线请求信号以及为本地互连5上被监听通信事务处理收集的相关性响应,仲裁器18调节任何对本地互连5的访问。可以通过“重新运行(ReRun)”相关性响应推迟本地互连5的相关性响应阶段。接收“重新运行”响应的事务处理被称为被“重新运行”。当发出“重新运行”响应的部件准备好完成事务处理时,它向本地互连5发出带有原始的被“重新运行”的事务处理的标记的“重新运行”事务处理。“重新运行”事务处理使原始请求方在可完成相关性响应阶段的时刻重新发出该事务处理。
NUMA计算机系统10中的每个处理节点11-13还可包括其它部件,例如,I/O部件(如显示器、键盘或图形打印机),用于存储操作系统和应用软件的非易失性存储,以及用于连接网络或附属部件的串行端口和并行端口。然而这些部件对于理解本发明不是必需的部件,并且为了避免使本发明的说明模糊不清相应地省略掉这些部件。B.存储器组织NUMA计算机系统10中所有处理机,例如处理机14a-14c,共享单个物理存储空间,这意味着每个物理地址只和单个系统存储器单元相关。从而,可由NUMA计算机系统10中的任一处理机通用访问的系统存储器的总内容可以看成是在所有系统存储器之间划分的。把图1中所示的示范实施例做为一个例子,处理机14a定址一个16吉字节的包括着通用存储区和保留区的地址空间。通用存储区最好划分成500兆字节的区段,并且每三个区段向每个处理节点11-13分配一个区段。大约包括2吉字节的保留区包含向每个处理节点11-13分配的系统控制区、外围存储区和I/O区。
出于说明的目的,在其系统存储器中存储某特定数据的处理节点(例如处理节点11)称为该数据的主节点。相反地,对于该特定数据,NUMA计算机系统内的其余处理节点(例如处理节点12和13)称为远程节点。C.存储器相关性由于本地系统存储器,例如系统存储器17,内存储的数据可由NUMA计算机系统10内的任一处理节点11-13请求、访问、修改和超高速缓存,NUMA计算机系统10实现一种超高速缓存相关性协议,以保持同一本地处理节点内各超高速缓存之间的以及其它远程处理节点内各超高速缓存之间的相关性。这样,NUMA计算机系统10可适当地分类成超高速缓存相关NUMA(CC-NOMA)计算机系统。很可能是和实现相关的这种超高速缓存相关性协议可包括,例如,周知的“修改”、“排它”、“共享”和“无效”(MESI)协议或其变型。以下假定L1超高速缓存15a-15c、L2超高速缓存16a-16c以及仲裁器18实现一种修改的MESI协议,节点控制器19识别该协议的“修改”、“共享”和“无效”状态并认为“排它”状态合并到“修改”状态以用于修正。换言之,节点控制器19假定由某远程超高速缓存排它地保持的数据被修改,不管事实上是否修改了该数据。D.节点控制器现参照图2,其中示出图1的NUMA计算机系统10中的节点控制器19的详细框图。如图所示,连接在本地互连5和节点互连20之间的节点控制器19包括事务处理接收单元(TRU)31、事务处理发送单元(TSU)32、数据接收单元(DRU)33和数据发送单元(DSU)34。如图所示,借助由TRU 31和TSU 32处理地址分组并由DRU 33和DSU34处理数据分组,通过节点控制器19的地址通路和数据通路分为二支。
指定成指示离开节点互连20的事务处理流的TRU 31负责接收来自节点互连20的地址分组和相关性分组,在本地互连5上发出事务处理以及把响应传送到TSU 32。TRU 31包括响应多路复用器35,后者接收来自节点互连20的分组并把选定的分组传送到总线主控器36和TSU 32中的相关性响应逻辑电路37。响应从响应多路复用器35接收地址分组,总线主控器36可在其本地互连上启动一个和所接收的地址分组相同的或不同的通信事务处理。
如由其命名所表明,TSU 32是流入节点互连20的事务处理的输送管道。TSU 32包括一个多条目待决缓冲器40,后者暂时性地存储流入节点互连20的待完成的通信事务处理的属性。存储在待决缓冲器40的条目中的事务处理属性最好至少包括事务处理的地址(包括标记)、事务处理的类型以及来自在其超高速缓存可能持有该线的远程节点的期待的相关性响应的数量。标记是用来唯一地标识系统中的现行事务处理并且联系分离总线上的地址事务处理和数据的事务处理标识符。每条待决缓冲器条目可具有相关的状态,其可设成为“空”或“重新运行”,“空”表示一旦接收所有的响应可删除该待决缓冲器条目,“重新运行”表示一旦接收所有的响应TSU 32应指示TRU 31发出用于该持有标记的“重新运行”请求。除了在节点互连20上发出地址分组之外,TSU 32和TRU31交互以处理存储器请求事务处理,TSU 32还向DRU 33和DSU 34发出命令以控制本地互连5和节点互连20之间的数据传输。TSU 32还借助相关性响应逻辑电路37为节点互连20实现修改的相关性协议(即,MSI协议)并且借助目录控制逻辑电路38保持相关性目录39。
表1
相关性目录39存储所有由远程节点的超高速缓存保持的但其主节点是本地处理节点的数据的系统存储器地址(例如,超高速缓存线)指示。各超高速缓存线的地址指示是和具有该超高速缓存线的拷贝的每个远程处理节点的标识符以及每个这样的远程处理节点处的超高速缓存线的相关性状态一起存储的。在表1中总结相关性目录39中的各条目的可能相关性状态。如表1中所示,对远程处理节点所持有的超高速缓存线的相关性状态的了解是不准确的。这种不准确的原因在于,远程持有的超高速缓存线可在不通知主节点的节点控制器下进行从S到I、从E到I或从E到M的迁移。E.冲突检测地址总线的流水线特性以及通过“重新运行”响应扩展对远程总线的相关的功能复杂了事务处理完成的判定并且复杂了需要串行化(或分优先)的事务处理的串行化。可能要交互的并且需要串行化的事务处理被说成是彼此“冲突”,并且必须根据冲突检测规则重试事务处理中的一个。一般地说,若某代理(例如节点控制器)发出来被“重新运行”的存储器请求,该代理负责冲突检测,直至完成该存储器请求。若该请求是被“重新运行”的,发出该“重新运行”响应的代理承担冲突检测,直至原始代理响应表明现可由系统为该事务处理解决延迟相关性响应的“重新运行”事务处理重新发出该事务处理。II.活锁问题在多处理机总线上出现活锁情况是一个常见问题,必须予以防止。当总线上的二个代理一起试图访问相同的超高速缓存线时,可出现活锁。典型地,总线具有用于检测冲突的检测协议和确保相关性的规则,从而会重试冲突的事务处理。然而,在某些情况下有可能二个冲突的事务处理会继续彼此重试并且不能得到进展。在现有技术中,存在着在重新发出“被重试”的事务处理之前通过随机延迟避免活锁的机制。延迟长度是时间函数,用于解决总线上的相关性。在SMP单总线计算机系统中,该延迟趋向于为数十周期量级。在NUMA计算机系统中,由互连交叉以及解决相关性的时间引入的附加延迟足够长,从而在更大的系统中阻止SMP活锁解决办法有效。从而,NUMA计算机系统需要一种解决活锁问题的更好办法。
现参照图3a和3b,其中描述由冲突回写造成的活锁情况的一个示例。如所示,若远程节点12处的处理机24a具有一条L1超高速缓存25a或L2超高速缓存26a内的修改的超高速缓存线并且处理机24a打算排出该修改的超高速缓存线,处理机24a将向主节点11处的节点控制器19发出回写请求,例如回写清除(WBC)请求。这样,在该例中,远程节点12是拥有节点。若同时主节点11处的处理机14a打算读该超高速缓存线,处理机14a会把读请求发送到总线5上。节点控制器19会观察到该读请求并且注意到目录表明在节点12中可能修改该超高速缓存线。节点控制器19会“重新运行”该来自处理机14a的读请求,并且节点控制器19将通过节点互连20向节点12发出相同的读请求,试图从节点取回该修改的数据,如图3a中所示。
当在主节点11接收该WBC请求,该WBC请求将和该未解决的读请求冲突,并且通过节点11处的节点控制器19将对远程节点12重试该WBC请求。类似地,当在主节点12处接收该读请求时,该读请求将和该未解决的WBC请求突冲,并且通过节点12处的节点控制器19对主节点11重试该读请求。这样,如图3b中所示,出于这个原因将反复地重试该WBC请求和该读请求,从而,产生活锁情况。III.活锁问题的解决办法上述活锁情况的优选解决办法是意识到由节点12发出的WBC请求带有的数据和由节点11处的节点控制器19发出的读请求试图取回到节点11处的系统存储器17的数据相同。从而,可以允许完成WBC请求,即使它和未解决的读请求冲突。作为一种实现的例子,可把节点11处节点控制器19内的超高速缓存相关性目录构造成用来确定何时在未解决的请求试图取回来自拥有节点的超高速缓存线的同时从该超高速缓存线的拥有节点接收WBC请求。利用相关性目录状态和占有向量的组合识别该特定条件并且识别拥有读请求上的冲突检测的节点控制器。
现参照图4a和4b,例如,大约在主节点11处通过某本地处理机或远程处理机(在远程节点13)经过节点控制器19的TRU单元发出对相同超高速缓存线的读请求的同时,从节点12向主节点11初始发出WBC。作为和未解决的WBC的冲突的结果接着在远程节点12重试该读请求,但是由于满足上述准则即使技术上存在冲突仍允许在主节点11完成该WBC请求,如图4a中所示。
如图4b中所示,接着对主节点11重试该读。最后,如图4c中所示,在主节点11处由处理机14a重新发出该读请求,系统存储器17提供有效数据,并且在带有清除响应下成功地完成该读请求。这样,活锁情况被避免。允许系统存储器17提供数据是因为已通过该WBC用有效数据更新了它。
现参照图5,图中总结,根据本发明的一种优选实施例的在图4a-4c示出的解决活锁情况过程中,相关性目录内被请求超高速缓存线的各种相关性状态。最初,在相关性目录中该被请求超高速缓存线的相关性状态用节点12中的“修改的”表示。接着处理机14a作出对该“修改的”超高速缓存线的读请求。节点控制器把该读请求送到远程节点并把相关性状态变成“待决修改的”。当在主节点11接收WBC请求时,用作为拥有节点的远程节点12找出相关性状态是“待决修改的”。这允许节点控制器推断出这是节点控制器试图取回的有效数据并且推断出在主节点可允许完成该WBC请求(即,把修改的数据写到系统存储器17),这违反了避免活锁的冲突检测规则但仍保持正确的数据相容性。一旦完成该WBC请求,节点控制器把相关性状态改变到“待决共享的”,以表示对该超高速缓存线的该读请求仍是待决的,但主节点11的系统存储器17中的超高速缓存线是有效的。当从远程节点12回送带有“重试”或“共享”响应的未解决读请求时,相关性状态变成“共享的”。当由处理机14a重试该读请求时,从主节点11处的系统存储器17提供数据。
现参照图6,其中总结了依据本发明的一种优选实施例在接收WBC请求时所有可能采取的相关性状态和行为。如图所示,允许完成从拥有节点到“待决修改的”状态下的某超高速缓存线的WBC请求,这违反冲突检测规则,但仍保持数据相容性。但是,仍旧必须重试来自非拥有节点的WBC请求。如已说明那样,本发明为避免NUMA计算机系统中因冲突的回写造成的活锁提供了一种改进的方法。
尽管参照一种优选实施例具体地示出和说明了本发明,业内人士理解,在不背离本发明的精神和范围下在形式和细节上可对其做出各种修改。
权利要求
1.一种避免非均匀存储器存取(NUMA)计算机系统内因冲突的回写造成的活锁的方法,其中所述NUMA计算机系统至少包括二个连接到互连上的节点,所述至少二个节点中的每个包括一个本地系统存储器,所述方法包括步骤响应几乎在位于某拥有节点处的处理机试图把某远程节点处的某修改的超高速缓存线回写到主节点的同时位于不同于所述拥有节点的另一节点处的处理机试图经过存储器请求访问在所述远程节点处的所述修改的超高速缓存线,仅当所述主节点内的相关性目录把所述回写考虑成来自所述修改的超高速缓存线的拥有节点时才允许在不重试下在所述主节点完成所述回写;在所述主节点处重试所述存储器请求;以及在所述主节点完成所述存储器请求。
2.依据权利要求1的方法,其中所述存储器请求是任何要求从拥有节点清仓数据的请求。
3.依据权利要求1的方法,其中所述存储器请求可来自主节点和远程节点中的一个节点。
4.依据权利要求1的方法,其中由所述主节点内的节点控制器进行所述允许步骤。
5.依据权利要求1的方法,其中根据相关性状态和占有向量进行所述允许步骤。
6.一种能够避免因冲突的回写造成的活锁的非均匀存储器存取(NUMA)计算机系统,其中所述NUMA计算机系统至少包括二个连接到互连上的处理节点,所述至少二个处理节点中的每个包括至少一个具有至少一个本地超高速缓存以及一个本地系统存储器的处理机,所述NUMA计算机系统包括装置,用于,响应几乎在位于某远程节点处的某处理机试图回写某修改的超高速缓存线的同时位于不同于拥有节点的某节点处的处理机试图经过存储器请求访问所述修改的超高速缓存线,允许在不重试下在所述主节点完成所述回写请求;以及装置,用于在所述远程节点完成所述存储器请求。
7.依据权利要求6的NUMA计算机系统,其中所述存储器请求是任何要求从拥有节点清仓数据的请求。
8.依据权利要求6的NUMA计算机系统,其中所述完成装置还包括用于在所述远程节点在清除响应下完成所述请求的装置。
9.依据权利要求6的NUMA计算机系统,其中所述允许装置是所述主节点内的节点控制器。
10.依据权利要求9的NUMA计算机系统,其中所述节点控制器包括相关性状态和占有矢量。
全文摘要
公开一种在NUMA计算机系统内避免因冲突的回写造成的活锁的方法。响应在位于某远程节点处的某处理机试图把该远程节点处某修改的超高速缓存线回写到某主节点的同时位于该主节点处的某处理机试图经过存储请求访问该修改的超高速缓存,仅当该主节点内的相关性目录把该回写考虑成来自该修改的超高速缓存线的拥有节点时才允许在不重试下在该主节点处完成该回写。
文档编号G06F12/08GK1264875SQ99127060
公开日2000年8月30日 申请日期1999年12月27日 优先权日1999年2月26日
发明者盖里·戴尔·卡彭特, 戴维·布莱恩·格拉斯哥 申请人:国际商业机器公司