專(zhuān)利名稱(chēng):把讀請(qǐng)求推測(cè)地傳送到遠(yuǎn)程處理節(jié)點(diǎn)的非均勻存儲(chǔ)器訪(fǎng)問(wèn)(numa)數(shù)據(jù)處理系統(tǒng)的制作方法
一般地說(shuō),本發(fā)明涉及數(shù)據(jù)處理方法和系統(tǒng),特別是涉及非均勻存儲(chǔ)器訪(fǎng)問(wèn)(NUMA)數(shù)據(jù)處理系統(tǒng)內(nèi)的數(shù)據(jù)處理。更具體地說(shuō),本發(fā)明涉及NUMA數(shù)據(jù)處理系統(tǒng)中的通信方法,在該系統(tǒng)中的讀請(qǐng)求被推測(cè)地傳送到遠(yuǎn)程存儲(chǔ)器中。
在計(jì)算機(jī)技術(shù)領(lǐng)域眾所周知,通過(guò)相互合作地駕馭多個(gè)單獨(dú)處理器的處理能力,能達(dá)到更強(qiáng)的計(jì)算機(jī)系統(tǒng)性能。可以以多種不同的拓?fù)浣Y(jié)構(gòu)設(shè)計(jì)多處理器計(jì)算機(jī)系統(tǒng),其中各種拓?fù)浣Y(jié)構(gòu)可能適用于特定的應(yīng)用,這取決于每個(gè)應(yīng)用的性能要求和軟件環(huán)境。最通用的MP計(jì)算機(jī)拓?fù)浣Y(jié)構(gòu)之一是對(duì)稱(chēng)多處理器(SMP)配置,其中多個(gè)處理器共享公用資源,如系統(tǒng)存儲(chǔ)器和輸入/輸出(I/O)子系統(tǒng),它們通常連接于共享的系統(tǒng)互連。把這種計(jì)算機(jī)系統(tǒng)稱(chēng)作對(duì)稱(chēng)的,這是因?yàn)樵诶硐霠顟B(tài)下在一個(gè)SMP計(jì)算機(jī)系統(tǒng)中的所有處理器針對(duì)共享系統(tǒng)存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)有相同的訪(fǎng)問(wèn)延遲時(shí)間。
雖然SMP計(jì)算機(jī)系統(tǒng)允許使用相對(duì)簡(jiǎn)單的處理器間通信和數(shù)據(jù)共享方法,但SMP計(jì)算機(jī)系統(tǒng)有有限的可伸縮性。換句話(huà)說(shuō),盡管通過(guò)擴(kuò)大規(guī)模(即增加更多的處理器)一般可以期望使典型的SMP計(jì)算機(jī)系統(tǒng)改善性能,但總線(xiàn)、存儲(chǔ)器和輸入/輸出(I/O)帶寬等固有限制,使得在超出與其實(shí)現(xiàn)有關(guān)的規(guī)模(在這種規(guī)模下對(duì)這些共享資源的利用達(dá)到最佳)之后,靠擴(kuò)大SMP的規(guī)模已不能得到顯著的好處。這樣,在系統(tǒng)規(guī)模增大時(shí),SMP拓?fù)浣Y(jié)構(gòu)本身受到某種程序的帶寬限制,特別是在系統(tǒng)存儲(chǔ)器處的帶寬限制。例如,盡管一些部件能最佳地應(yīng)用于單處理器和小規(guī)模SMP計(jì)算機(jī)系統(tǒng),但這些部件在應(yīng)用于大規(guī)模SMP時(shí)往往是效率差的。與此相反,為用于大規(guī)模SMP而設(shè)計(jì)的部件從費(fèi)用的觀(guān)點(diǎn)看要用于較小的系統(tǒng)是不實(shí)際的。
結(jié)果,一種稱(chēng)作非均勻存儲(chǔ)器訪(fǎng)問(wèn)(NUMA)的MP計(jì)算機(jī)系統(tǒng)拓?fù)浣Y(jié)構(gòu)出現(xiàn)了,作為克服SMP計(jì)算機(jī)系統(tǒng)的許多限制的另一種設(shè)計(jì),其代價(jià)是某些額外的復(fù)雜性。典型的NUMA計(jì)算機(jī)系統(tǒng)包括若干個(gè)彼此互連的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)包括一個(gè)或多個(gè)處理器以及一個(gè)本地“系統(tǒng)”存儲(chǔ)器。這種計(jì)算機(jī)系統(tǒng)被稱(chēng)作有非均勻存儲(chǔ)器訪(fǎng)問(wèn),這是因?yàn)槊總€(gè)處理器針對(duì)其存儲(chǔ)在本地節(jié)點(diǎn)處的系統(tǒng)存儲(chǔ)器中的數(shù)據(jù),其訪(fǎng)問(wèn)延時(shí)低于針對(duì)其存儲(chǔ)在遠(yuǎn)程節(jié)點(diǎn)處的系統(tǒng)存儲(chǔ)器中的數(shù)據(jù)的訪(fǎng)問(wèn)延時(shí)。NUMA系統(tǒng)可進(jìn)一步分類(lèi)為非相干的或高速緩存相干的,這取決于是否保持不同節(jié)點(diǎn)中各高速緩存之間的數(shù)據(jù)相干性。高速緩存相干的NUMA(CC-NUMA)系統(tǒng)的復(fù)雜性在很大程度上歸因于硬件不僅要維持每個(gè)節(jié)點(diǎn)內(nèi)的各級(jí)高速緩存和系統(tǒng)存儲(chǔ)器之間的數(shù)據(jù)相干性而且要維持不同節(jié)點(diǎn)中的高速緩存和系統(tǒng)存儲(chǔ)器之間的數(shù)據(jù)相干性所需要的額外通信。然而,NUMA計(jì)算機(jī)系統(tǒng)確實(shí)解決了傳統(tǒng)SMP計(jì)算機(jī)的規(guī)模限制,因?yàn)樵贜UMA計(jì)算機(jī)系統(tǒng)內(nèi)的每個(gè)節(jié)點(diǎn)可作為較小的SMP系統(tǒng)來(lái)實(shí)現(xiàn)。這樣,每個(gè)節(jié)點(diǎn)的共享部件能被最佳地應(yīng)用于少數(shù)處理器,而整個(gè)系統(tǒng)則得益于可得到較大規(guī)模的并行度并同時(shí)保持較低的延時(shí)。
CC-NUMA計(jì)算機(jī)系統(tǒng)所關(guān)心的主要性能是經(jīng)由連接各節(jié)點(diǎn)的互連傳送的通信事務(wù)(transacfion)所伴隨的延時(shí)。特別是讀事務(wù),它是到目前為止最普通的事務(wù)類(lèi)型,與指出本地系統(tǒng)存儲(chǔ)器所駐留的數(shù)據(jù)的讀事務(wù)相比,當(dāng)指出遠(yuǎn)程系統(tǒng)中所駐留的數(shù)據(jù)時(shí),延時(shí)可能為其兩倍。因?yàn)樵诠?jié)點(diǎn)互連上傳送的讀事務(wù)所伴隨的延時(shí)高于在本地互連上的讀事務(wù)所伴隨的延時(shí),所以減少在節(jié)點(diǎn)互連上傳送的讀事務(wù)的延時(shí)是有用的和人們所希望的。
根據(jù)第一方面,本發(fā)明提供一計(jì)算機(jī)系統(tǒng),包含一個(gè)節(jié)點(diǎn)互連;以及至少一個(gè)本地處理節(jié)點(diǎn)和一個(gè)遠(yuǎn)程處理節(jié)點(diǎn),它們每個(gè)都連到所述節(jié)點(diǎn)互連上,所述本地處理節(jié)點(diǎn)包括一個(gè)本地互連,與本地互連相連的一個(gè)處理器和一個(gè)系統(tǒng)存儲(chǔ)器,以及一個(gè)節(jié)點(diǎn)控制器放在所述本地互連和節(jié)點(diǎn)互連之間,這里所述節(jié)點(diǎn)控制器推測(cè)地把從所述本地互連接收的請(qǐng)求事務(wù)經(jīng)由所述節(jié)點(diǎn)互連傳送到所述遠(yuǎn)程處理節(jié)點(diǎn),而且這里所述節(jié)點(diǎn)控制器根據(jù)在所述本地處理節(jié)點(diǎn)處所述請(qǐng)求事務(wù)的分辨力,處理從所述遠(yuǎn)程處理節(jié)點(diǎn)處接收的對(duì)所述請(qǐng)求事務(wù)的響應(yīng)。
根據(jù)其第二方面,本發(fā)明提供一種在計(jì)算機(jī)系統(tǒng)中的通信方法,該計(jì)算機(jī)系統(tǒng)包括一個(gè)節(jié)點(diǎn)互連,該節(jié)點(diǎn)互連至少連接一個(gè)本地處理節(jié)點(diǎn)和一個(gè)遠(yuǎn)程處理節(jié)點(diǎn),所述本地處理節(jié)點(diǎn)包括一個(gè)本地互連,與本地互連相連的一個(gè)處理器和一個(gè)系統(tǒng)存儲(chǔ)器,以及一個(gè)節(jié)點(diǎn)控制器放在所述本地互連和所述節(jié)點(diǎn)互連之間,所述方法包含經(jīng)由所述節(jié)點(diǎn)互連推測(cè)地把從所述本地互連接收請(qǐng)求事務(wù)傳送到所述遠(yuǎn)程處理節(jié)點(diǎn);在所述本地處理接點(diǎn),從所述遠(yuǎn)程處理節(jié)點(diǎn)接收一個(gè)對(duì)所述請(qǐng)求事務(wù)的響應(yīng),為響應(yīng)這一接收,根據(jù)所述本地處理節(jié)點(diǎn)處所述請(qǐng)求事務(wù)的分辨力,處理所述對(duì)該請(qǐng)求事務(wù)的響應(yīng)。
相信為本發(fā)明特點(diǎn)的新特性將在所附權(quán)利要求中提出。然而,結(jié)合附圖閱讀下文中對(duì)實(shí)施示例的詳細(xì)描述,將能最好地理解發(fā)明本身和最佳使用方式及其進(jìn)一步的目的和優(yōu)點(diǎn),這里
圖1描繪根據(jù)本發(fā)明的一個(gè)NUMA計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施示例;圖2是圖1中所示節(jié)點(diǎn)控制器的更詳細(xì)的方框圖;圖3A和圖3B是高層邏輯流程圖,它們一起說(shuō)明一種處理請(qǐng)求事務(wù)的方法示例,其中在源處理節(jié)點(diǎn)處的讀請(qǐng)求被推測(cè)地傳送到遠(yuǎn)程處理節(jié)點(diǎn);以及圖4A-4D一起顯示根據(jù)圖3A和3B中所示方法進(jìn)行的處理過(guò)程示例。
系統(tǒng)概述現(xiàn)在參考附圖,特別是參考圖1,圖中描繪了根據(jù)本發(fā)明的一個(gè)NUMA計(jì)算機(jī)系統(tǒng)的實(shí)施示例。所描繪的實(shí)例示例可實(shí)現(xiàn)為例如一個(gè)工作站、服務(wù)器或大型機(jī)。如圖所示,NUMA計(jì)算機(jī)系統(tǒng)6包括若干處理節(jié)點(diǎn)8a-8n(N≥2),它們由節(jié)點(diǎn)互連22彼此互連。處理節(jié)點(diǎn)8a-8n每個(gè)可以包括M(M≥0)個(gè)處理器10,一個(gè)本地互連16以通過(guò)存儲(chǔ)器控制器17訪(fǎng)問(wèn)的系統(tǒng)存儲(chǔ)器18。處理器10a—10m最好是(但不是必須是)相同的,而且可以包含PowerPCTM處理器線(xiàn)內(nèi)的一個(gè)處理器,它可從紐約州Armonk的國(guó)際商用機(jī)器公司得到。除了用于執(zhí)行程序指令的寄存器、指令流邏輯和執(zhí)行單元(它們通常被指定為處理器核12)外,每個(gè)處理器10a-10m還包括一個(gè)在芯片上的高速緩存分級(jí)系統(tǒng),它用于把數(shù)據(jù)從系統(tǒng)存儲(chǔ)器18存儲(chǔ)到相關(guān)聯(lián)的處理器核12。每個(gè)高速緩存分級(jí)系統(tǒng)14可以包括例如一個(gè)一級(jí)(L1)高速緩存和一個(gè)二級(jí)(L2)高速緩存,它們分別有8—32kB和1—16MB的存儲(chǔ)能力。
每個(gè)處理節(jié)點(diǎn)8a-8n進(jìn)一步包括各自的節(jié)點(diǎn)控制器20連在本地互連16和節(jié)點(diǎn)互連22之間。每個(gè)節(jié)點(diǎn)控制器20通過(guò)完成至少兩項(xiàng)功能作為遠(yuǎn)程處理節(jié)點(diǎn)8的本地代理。第一,每個(gè)節(jié)點(diǎn)控制器20窺探相關(guān)聯(lián)的本地互連16并使本地通信事務(wù)向遠(yuǎn)程處理節(jié)點(diǎn)8的傳送便利。第二,每個(gè)節(jié)點(diǎn)控制器20窺探節(jié)點(diǎn)互連22上的通信事務(wù)并主控相關(guān)聯(lián)的本地互連16上的相關(guān)通信事務(wù)。在每個(gè)本地互連16上的通信由一個(gè)仲裁器24控制。仲裁器24根據(jù)處理器10產(chǎn)生的總線(xiàn)請(qǐng)求信號(hào)規(guī)則對(duì)地方互連16的訪(fǎng)問(wèn),并為本地互連16上窺探到的通信事務(wù)編輯相干性響應(yīng),對(duì)此下文中將進(jìn)一步討論。
本地互連16通過(guò)夾層總線(xiàn)橋26與夾層總線(xiàn)30相連,例如,夾層總線(xiàn)30可以作為外圍部件互連(PCI)本地總線(xiàn)實(shí)現(xiàn)。夾層總線(xiàn)橋26提供一個(gè)低延時(shí)路徑和一個(gè)高帶寬路徑,通過(guò)低延時(shí)路經(jīng)處理器10可以直接訪(fǎng)問(wèn)I/O裝置32和存儲(chǔ)器裝置34當(dāng)中的裝置,這些裝置被映射到總線(xiàn)存儲(chǔ)器和/或I/O地址空間,而通過(guò)高帶寬路徑I/O裝置32和存儲(chǔ)器裝置34可以訪(fǎng)問(wèn)系統(tǒng)存儲(chǔ)器18。I/O裝置32可以包括例如顯示裝置、鍵盤(pán)、圖形指示器以及用于連接外部網(wǎng)絡(luò)或附屬裝置的串行和并行端口。另一方面,存儲(chǔ)裝置34可以包括光盤(pán)或磁盤(pán),它們提供操作系統(tǒng)和應(yīng)用軟件的非易失存儲(chǔ)。存儲(chǔ)器組織在NUMA計(jì)算機(jī)系統(tǒng)6中的所有處理器10共享單一的物理存儲(chǔ)器空間,意思是每個(gè)物理地址只與系統(tǒng)存儲(chǔ)器18之一中的單個(gè)位置相關(guān)聯(lián)。這樣,系統(tǒng)存儲(chǔ)器的總內(nèi)容(它一般可由NUMA計(jì)算機(jī)系統(tǒng)6中任何處理器訪(fǎng)問(wèn))可被看作是在各系統(tǒng)存儲(chǔ)器18之間分區(qū)的。例如,在本發(fā)明的有4個(gè)處理節(jié)點(diǎn)8的實(shí)施示例中,NUMA計(jì)算機(jī)系統(tǒng)可以有16GB物理地址空間,包括通用存儲(chǔ)區(qū)和保留區(qū)。通用存儲(chǔ)區(qū)分成若干500MB段,4個(gè)處理節(jié)點(diǎn)8的每個(gè)節(jié)點(diǎn)被分配每個(gè)第4段。保留區(qū)可以包含大約2GB,它包括系統(tǒng)控制和外圍存儲(chǔ)區(qū)以及I/O存儲(chǔ)區(qū),它們每個(gè)被分配給各一個(gè)處理節(jié)點(diǎn)8。
為了本討論的目的,在其系統(tǒng)存儲(chǔ)器18中存儲(chǔ)特定數(shù)據(jù)的處理節(jié)點(diǎn)8被稱(chēng)作那個(gè)數(shù)據(jù)的主節(jié)點(diǎn)(home node);相反,處理節(jié)點(diǎn)8a-8n中的其他節(jié)點(diǎn)被稱(chēng)作該特定數(shù)據(jù)的遠(yuǎn)程節(jié)點(diǎn)。存儲(chǔ)器相干性因?yàn)榇鎯?chǔ)在每個(gè)系統(tǒng)存儲(chǔ)器18內(nèi)的數(shù)據(jù)能被NUMA計(jì)算機(jī)系統(tǒng)6內(nèi)的任何處理器10請(qǐng)求、訪(fǎng)問(wèn)和修改,所以NUMA計(jì)算機(jī)系統(tǒng)6實(shí)現(xiàn)一個(gè)高速緩存相干性協(xié)議以維持同一處理節(jié)點(diǎn)中各高速緩存之間的相干性,還維持不同處理節(jié)點(diǎn)中高速緩存之間的相干性。這樣,NUMA計(jì)算機(jī)系統(tǒng)6被適當(dāng)?shù)胤诸?lèi)為CC-NUMA計(jì)算機(jī)系統(tǒng)。所實(shí)現(xiàn)的高速緩存相干性協(xié)議是依賴(lài)于具體實(shí)現(xiàn)的,可能包含例如著名的“修改的、排他的、共享的、無(wú)效的(MESI)”協(xié)議或其變體。下文中將假定高速緩存分級(jí)結(jié)構(gòu)14和仲裁器24實(shí)現(xiàn)傳統(tǒng)的MESI協(xié)議,其中節(jié)點(diǎn)控制器20認(rèn)識(shí)M、S和I狀態(tài),并認(rèn)為E狀態(tài)被合并到M狀態(tài)中供校正之用。就是說(shuō),節(jié)點(diǎn)控制器20假定排他地由遠(yuǎn)程高速緩存保持的數(shù)據(jù)已經(jīng)被修改,而不管該數(shù)據(jù)在實(shí)際上是否被修改。互連體系結(jié)構(gòu)本地互連16和節(jié)點(diǎn)互連22每個(gè)能由任何基于總線(xiàn)的廣播分級(jí)結(jié)構(gòu)、基于交換的廣播分級(jí)結(jié)構(gòu)、或者基于交換的非廣播分級(jí)結(jié)構(gòu)來(lái)實(shí)現(xiàn)。然而,在一個(gè)最佳實(shí)施例中,至少節(jié)點(diǎn)控制器22是作為由IBM公司開(kāi)發(fā)的6××通信協(xié)議管制的、基于交換的非廣播互連來(lái)實(shí)現(xiàn)的。本地互連16的節(jié)點(diǎn)互連22允許分裂的事務(wù),意思是在組成通信事務(wù)的地址和數(shù)據(jù)使用權(quán)(tenure)之間不存在固定的時(shí)間關(guān)系,而且數(shù)據(jù)打包的順序可以不同于相應(yīng)的地址打包順序。本地互連16和節(jié)點(diǎn)互連22的利用還最好由流水線(xiàn)通信事務(wù)來(lái)說(shuō)加強(qiáng),它允許在先前的通信事務(wù)的主控方(master)從每個(gè)接收方(recipient)接收相干性響應(yīng)之前尋找下一個(gè)通信事務(wù)的發(fā)源。
不管所實(shí)現(xiàn)的互連分級(jí)結(jié)構(gòu)的類(lèi)型如何,至少有三類(lèi)“包”一般地講,(這里所用的“包”是指一個(gè)單獨(dú)的信息單元),即地址、數(shù)據(jù)和相干性響應(yīng),用于通過(guò)節(jié)點(diǎn)互連22在處理節(jié)點(diǎn)8之間傳遞信息以及通過(guò)本地互連16在各窺探器之間傳遞信息?,F(xiàn)在參考表I和表II,它們分別給出地址包和數(shù)據(jù)包的相關(guān)字段和定義概要。
表I
表II
如表I和表II中指出的那樣,為允許一接收方節(jié)點(diǎn)或窺探器能確定每個(gè)包屬于的通信事務(wù),在通信事務(wù)中的每個(gè)包都用事務(wù)標(biāo)記來(lái)標(biāo)識(shí)。本領(lǐng)域技術(shù)人員將會(huì)理解,可以使用額外的流控制邏輯和相關(guān)聯(lián)的流控制信號(hào)來(lái)管制有限通信資源的利用。
在每個(gè)處理節(jié)點(diǎn)8內(nèi),在每個(gè)窺探器和本地仲裁器24之間傳送狀態(tài)和相干性響應(yīng)。在本地互連16內(nèi)用于狀態(tài)和相干性通信的信號(hào)行概括在下面的表III中。
表III
經(jīng)由本地互連16的AResp和AStat線(xiàn)傳送的狀態(tài)和相干性響應(yīng)最好與相關(guān)聯(lián)的地址包有固定的但可編程的時(shí)間關(guān)系。例如,可能在接收地址包之后的第二個(gè)周期中需要AStatOut表決(vote),它提供關(guān)于每個(gè)窺探器是否已成功地接收到本地互連16上傳送的地址包的初步指示。仲裁器24編譯AStatOut表決結(jié)果,然后在一固定的但可編程的周期數(shù)(例如1個(gè)周期)之后發(fā)布AStatIn表決結(jié)果。在下面的表IV中概括了可能的AStat表決結(jié)果。
表IV
跟隨AStatOut周期,在一個(gè)固定的但可編程的周期數(shù)(例如2個(gè)周期)之后可能需要ARespOut表決結(jié)果。仲裁器24還編譯每個(gè)窺探器的ARespOut表決結(jié)果并發(fā)布ARespIn表決結(jié)果,這最好在下一個(gè)周期中進(jìn)行??赡艿腁Resp表決結(jié)果最好包括表V中列出的相干響應(yīng)。
表V
重運(yùn)行(ReRun)AResp表決結(jié)果通常由節(jié)點(diǎn)控制器20發(fā)出,指出窺探到的請(qǐng)求有長(zhǎng)的延時(shí),而且該請(qǐng)求的源將被指示在晚些時(shí)候重新發(fā)出該事務(wù)。這樣,與重試(Retry)AResp表決結(jié)果不同,一個(gè)重運(yùn)行(ReRun)使得表決為重運(yùn)行(ReRun)的事務(wù)接收方(而不是該事務(wù)的發(fā)起方)有責(zé)任在晚些時(shí)候使該通信事務(wù)再次被發(fā)出。節(jié)點(diǎn)控制器現(xiàn)在參考圖2,圖中顯示圖1的NUMA計(jì)算機(jī)系統(tǒng)6中的節(jié)點(diǎn)控制器20的更詳細(xì)的方框圖。如圖2中所示,連在本地互連16和節(jié)點(diǎn)互連22之間的每個(gè)節(jié)點(diǎn)控制器20包括一個(gè)事務(wù)接收單元(TRU)40、一個(gè)事務(wù)發(fā)送單元(TSU)42、一個(gè)數(shù)據(jù)接收單元(DRU)44以及一個(gè)數(shù)據(jù)發(fā)送單元(DSU)46。TRU40、TSU42、DRU44及DSU46能由例如現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或?qū)S眉呻娐?ASIC)來(lái)實(shí)現(xiàn)。如所指出的那樣,穿過(guò)節(jié)點(diǎn)控制器20的地址和數(shù)據(jù)路徑是分為兩支的,其地址(和相干性)包由TRU40和TSU42處理,而數(shù)據(jù)包由DRU44和DSU46處理。
TRU40,這樣指定它是為了表明事務(wù)流從節(jié)點(diǎn)互連22流出,負(fù)責(zé)接收來(lái)自節(jié)點(diǎn)互連22的地址和相干性包,在本地互連16上發(fā)出事務(wù)以及向TSU42傳送響應(yīng)。TRU40包括響應(yīng)多路轉(zhuǎn)換器(mux)52,它從節(jié)點(diǎn)互連22接收包并把選定的包傳送給TSU42中的總線(xiàn)主控器54和相干性響應(yīng)邏輯56。對(duì)接收來(lái)自響應(yīng)多路轉(zhuǎn)換器52的地址包作出響應(yīng),總線(xiàn)主控器52能在它的本地互連16上發(fā)起一個(gè)通信事務(wù),它與收到的地址包所指示的通信事務(wù)類(lèi)型相同或者不同。
TSU42,如其名稱(chēng)指出的那樣,是事務(wù)流到節(jié)點(diǎn)互連22上的管道,它包括一個(gè)多條目待決緩存器60,它暫時(shí)存儲(chǔ)通信事務(wù)的屬性,這些通信事務(wù)是把源放到節(jié)點(diǎn)互連22上的尚待完成的通信事務(wù)。在待決緩存器60的一個(gè)條目中存儲(chǔ)的事務(wù)屬性最好至少包括該事務(wù)的地址(包括標(biāo)記)、事務(wù)的類(lèi)型、以及預(yù)期的相干響應(yīng)個(gè)數(shù)。每個(gè)待決緩存器條目有相應(yīng)的狀態(tài),它可設(shè)置為Null(空),表明該待決緩存器條件可被刪除,或設(shè)置為ReRun(重運(yùn)行),表明該事務(wù)仍在待決。除了在節(jié)點(diǎn)互連22上對(duì)地址包尋源外,TSU42還與TRU40交互作用以處理存儲(chǔ)器請(qǐng)求事務(wù)和向DRU44及DSU46發(fā)出命令以控制本地互連16和節(jié)點(diǎn)互連22之間的數(shù)據(jù)傳送。TSU42還以相干性響應(yīng)邏輯56實(shí)現(xiàn)用于節(jié)點(diǎn)互連22的選定(即MSI)相干性協(xié)議,并以目錄控制邏輯58維持相干性目錄50。
相干性目錄50存儲(chǔ)數(shù)據(jù)的系統(tǒng)存儲(chǔ)器地址(即高速緩存行)的指示,這些數(shù)據(jù)已被驗(yàn)明送到遠(yuǎn)程節(jié)點(diǎn)中的高速緩存,對(duì)這些遠(yuǎn)程節(jié)點(diǎn)而言,本地處理節(jié)點(diǎn)是其主節(jié)點(diǎn)。與每個(gè)高速緩存行的地址指示一起存儲(chǔ)的具有該高速緩存行副本的每個(gè)遠(yuǎn)程處理節(jié)點(diǎn)的標(biāo)識(shí)符以及在每個(gè)這種遠(yuǎn)程處理節(jié)點(diǎn)處該高速緩存行的相干性狀態(tài)。相干性目錄50中的條目可能有的相干性狀態(tài)概括在表VI中。
表VI
如表VI中指出的那樣,由遠(yuǎn)程處理節(jié)點(diǎn)保持的高速緩存行相干性狀態(tài)知識(shí)是不準(zhǔn)確的。這種不準(zhǔn)確是由于這樣的事實(shí)遠(yuǎn)程保持的高速緩存行可以從S過(guò)渡到I,從E過(guò)渡到I,或從E過(guò)渡到M,而不通知主節(jié)點(diǎn)的節(jié)點(diǎn)控制器20。處理讀請(qǐng)求事備現(xiàn)在參考圖3A和圖3B,圖中顯示兩個(gè)高速邏輯流程圖,它們一起描述根據(jù)本發(fā)明處理讀請(qǐng)求事務(wù)的方法示例。首先參考圖3A,過(guò)程從塊70開(kāi)始,然后進(jìn)到塊72,它描繪處理器10(如處理節(jié)點(diǎn)8a的處理器10a)在其本地互連16上發(fā)出一個(gè)讀請(qǐng)求事務(wù)。該讀請(qǐng)求事務(wù)由節(jié)點(diǎn)控制器20以及與處理節(jié)點(diǎn)8a的本地互連16相連的其余窺探器接收。響應(yīng)對(duì)讀請(qǐng)求的接收,窺探器驅(qū)動(dòng)AStatOut表決,它們由仲裁器24編譯以產(chǎn)生AStatIn表決結(jié)果,如塊74所示。在節(jié)點(diǎn)控制器20提供AckAStatOut表決結(jié)果以允許讀請(qǐng)求繼續(xù)進(jìn)行之前,節(jié)點(diǎn)控制器20在待決緩存器60中分配一個(gè)讀條目和一個(gè)帶清除的寫(xiě)條目,如果該讀請(qǐng)求指定一個(gè)遠(yuǎn)程系統(tǒng)存儲(chǔ)器18中的地址的話(huà)。如下文中將進(jìn)一步討論的那樣,通過(guò)分配這兩個(gè)條目,節(jié)點(diǎn)控制器20能推測(cè)地把讀請(qǐng)求傳送到被請(qǐng)求高速緩存行的主節(jié)點(diǎn)并正確地處置對(duì)讀請(qǐng)求的響應(yīng),不管在處理節(jié)點(diǎn)8a處接下來(lái)的AResp表決結(jié)果如何。
現(xiàn)在參考?jí)K76,如果在塊74產(chǎn)生的AStatIn表決結(jié)果是Retry(重試),則該讀請(qǐng)求基本上被殺掉,在待決緩存器60中被分配的條目(如果有的話(huà))被釋放,過(guò)程返回到前已描述過(guò)的塊72。在這種情況中,處理器10a必須在晚些時(shí)候再發(fā)出讀請(qǐng)求。另一方面,如果在塊74產(chǎn)生的AStatIn表決結(jié)果不是Retry(重試),則過(guò)程從塊76進(jìn)到塊78,它描繪節(jié)點(diǎn)控制器20通過(guò)參考存儲(chǔ)器圖確定它的處理節(jié)點(diǎn)8是否是在讀請(qǐng)求中指定的物理地址的主節(jié)點(diǎn)。如果是,則過(guò)程進(jìn)到塊80;然而,如果本地處理節(jié)點(diǎn)8不是該讀請(qǐng)求的主節(jié)點(diǎn),則過(guò)程進(jìn)到塊100。
現(xiàn)在參考?jí)K80,此時(shí)處理節(jié)點(diǎn)8a內(nèi)的窺探器提供它們的ARespOut表決結(jié)果,仲裁器24編譯這一表決結(jié)果以產(chǎn)生ARespIn表決結(jié)果。如果相干性目錄50表明,由讀請(qǐng)求中指定的地址標(biāo)識(shí)的高速緩存行被驗(yàn)明送到至少一個(gè)遠(yuǎn)程處理節(jié)點(diǎn)8,則節(jié)點(diǎn)控制器20將表決ReRun(重運(yùn)行),如果對(duì)這一讀請(qǐng)求的服務(wù)需要與遠(yuǎn)程處理節(jié)點(diǎn)8通信的話(huà)。例如,如果相干性目錄50表明,所請(qǐng)求的高速緩存行是在遠(yuǎn)程處理節(jié)點(diǎn)8處“被修正的”,則對(duì)讀請(qǐng)求的服務(wù)將需要把該讀請(qǐng)求送到遠(yuǎn)程處理節(jié)點(diǎn)8。類(lèi)似地,如果相干性目錄50表明,所請(qǐng)求的高速緩存行是在遠(yuǎn)程處理節(jié)點(diǎn)8處“被共享的”,則對(duì)帶有修正意圖的讀(RWITM)請(qǐng)求的服務(wù)將需要向遠(yuǎn)程處理節(jié)點(diǎn)8傳送一個(gè)“殺掉”(Kill)命令,以使所請(qǐng)求的高速緩存行的遠(yuǎn)程副本作廢。如塊82所示,如果ARespIn表決結(jié)果不是ReRun(重運(yùn)行),則過(guò)程進(jìn)到塊90,它將在下文中描述;如果AResp In表決結(jié)果是ReRun(重運(yùn)行),則過(guò)程進(jìn)到塊84。
塊84說(shuō)明節(jié)點(diǎn)控制器20通過(guò)節(jié)點(diǎn)互連22把一適當(dāng)?shù)氖聞?wù)傳送到一個(gè)或多個(gè)遠(yuǎn)程處理節(jié)點(diǎn)8,這些節(jié)點(diǎn)已經(jīng)結(jié)清(check out)了這個(gè)所請(qǐng)求的高速緩存行。如前面指出的那樣,該事務(wù)或者可以是一個(gè)高速緩存命令(例如Kill(殺掉))或讀請(qǐng)求事務(wù)。然后該過(guò)程在塊86處循環(huán),直主節(jié)點(diǎn)控制器20收到來(lái)自每個(gè)被傳送過(guò)事務(wù)(在塊84)的遠(yuǎn)程處理節(jié)點(diǎn)8的響應(yīng)為止。在收到適當(dāng)數(shù)量的響應(yīng)(它們可以包括接收所請(qǐng)求的高速緩存行的副本)之后,節(jié)點(diǎn)控制器20在本地互連16上傳送一個(gè)ReRun(重運(yùn)行)請(qǐng)求,指示發(fā)請(qǐng)求的處理器10a重發(fā)讀請(qǐng)求。如在塊88中指出的那樣,發(fā)請(qǐng)求的處理器10a通過(guò)在本地互連16上重發(fā)讀請(qǐng)求事務(wù)來(lái)響應(yīng)這個(gè)ReRun(重運(yùn)行)請(qǐng)求。跟隨AStat和AResp周期,該讀請(qǐng)求在塊90得到服務(wù)或者由節(jié)點(diǎn)控制器20提供從一遠(yuǎn)程處理節(jié)點(diǎn)8收到的所請(qǐng)求高速緩存行的副本,或者由處理節(jié)點(diǎn)8a中的另一本地窺探器(例如存儲(chǔ)器控制器17或高速緩存14)對(duì)所請(qǐng)求的高速緩存行尋源。然后,該過(guò)程在塊150終止。
現(xiàn)在參考?jí)K100,如果處理節(jié)點(diǎn)8a的節(jié)點(diǎn)控制器20確定處理節(jié)點(diǎn)8a不是所請(qǐng)求高速緩存行的主節(jié)點(diǎn),則節(jié)點(diǎn)控制器20推測(cè)地把讀請(qǐng)求事務(wù)傳送到作為所請(qǐng)求高速緩存行主節(jié)點(diǎn)的遠(yuǎn)程處理節(jié)點(diǎn)8。如圖3A指出的那樣,由節(jié)點(diǎn)控制器20傳送讀請(qǐng)求至少是與AStatIn周期并發(fā),而且最好是在從仲裁器24收到AStatIn表決結(jié)果之后和在A(yíng)RespOut周期之前立即傳送。當(dāng)讀請(qǐng)求被傳送時(shí),待決緩存器60中的讀條目狀態(tài)被更新為ReRun(重運(yùn)行)。然后,如塊102所示,窺探器提供它們的表決結(jié)果,而仲裁器編譯這些結(jié)果以產(chǎn)生AStatIn表決結(jié)果。然后,如塊110及其后各塊所示,主節(jié)點(diǎn)提供一個(gè)對(duì)該讀請(qǐng)求的響應(yīng),而節(jié)點(diǎn)控制器20根據(jù)處理節(jié)點(diǎn)8a處對(duì)該讀請(qǐng)求的AStatIn表決結(jié)果處置這一響應(yīng)。
如果該ARespIn表決結(jié)果是Retry(重試),該讀請(qǐng)求基本上在處理節(jié)點(diǎn)8a被殺掉。這樣,為了響應(yīng)收到一個(gè)ARespIn Retry(重試)表決結(jié)果,在待決緩存器60中分配的讀和寫(xiě)條目的狀態(tài)被更新為Null(空)。然后過(guò)程穿過(guò)塊110到達(dá)塊112和114,它們描述節(jié)點(diǎn)控制器20等待來(lái)自主節(jié)點(diǎn)的所請(qǐng)求的高速緩存行并當(dāng)收到后廢棄該高速緩存行以響應(yīng)待決緩存器60中該讀條目的Null(空)狀態(tài)。
如果ARespIn表決結(jié)果是“修正的”干預(yù),則該讀請(qǐng)求可在本地的處理節(jié)點(diǎn)8a中得到服務(wù),無(wú)需利用來(lái)自主節(jié)點(diǎn)的(陳舊的)數(shù)據(jù)。這樣,為響應(yīng)收到一個(gè)ARespIn Modified(修正的)干預(yù)表決結(jié)果,待決緩存器60中該讀條目的狀態(tài)被更新為Null(空),于是過(guò)程從塊102穿過(guò)塊110和120進(jìn)到塊122。塊122說(shuō)明,在A(yíng)RespOut周期表決為Modified(修正的)干預(yù)的那個(gè)窺探器在處理節(jié)點(diǎn)8a的本地互連16上對(duì)所請(qǐng)求的高速緩存行尋源。然后,在對(duì)所請(qǐng)求的高速緩存行尋源的窺探器處所請(qǐng)求的高速緩存行的相干性狀態(tài)從Modified(修正的)更新為Shared(共享的)。為響應(yīng)收到所請(qǐng)求的高速緩存行,發(fā)請(qǐng)求的處理器10a把所請(qǐng)求的高速緩存行加載到它的高速緩存分層結(jié)構(gòu)14,如塊124所示。此外,如塊126所示,節(jié)點(diǎn)控制器捕獲離開(kāi)本地互連16的所請(qǐng)求高速緩存行,并向主節(jié)點(diǎn)發(fā)出含有該高速緩存行的帶清除的寫(xiě)事務(wù),以便用這修正的高速緩存行更新該主節(jié)點(diǎn)的系統(tǒng)存儲(chǔ)器18。然后過(guò)程進(jìn)到塊112,這已經(jīng)描述過(guò)了。
由計(jì)算機(jī)系統(tǒng)6實(shí)現(xiàn)的相干性協(xié)議可以任選地支持共享干預(yù),即由持有處于Shared(共享的)狀態(tài)的所請(qǐng)求高速緩存行的本地高速緩存分層結(jié)構(gòu)14提供讀請(qǐng)求事務(wù)服務(wù)。如果共享干預(yù)是由計(jì)算機(jī)系統(tǒng)6的高速緩存相干性協(xié)議支持的,而是該請(qǐng)求事務(wù)的ARespIn表決結(jié)果是Shared(共享的)(即“共享的”干預(yù)),則表決為Shared(共享的)的窺探器在本地互連16上對(duì)所請(qǐng)求的高速緩存行尋源,如塊132所示。為響應(yīng)收到所請(qǐng)求的高速緩存行,發(fā)請(qǐng)求的處理器10a把所請(qǐng)求的高速緩存行加載到它的高速緩存分層結(jié)構(gòu)14中,如塊134所示。由于不需要對(duì)系統(tǒng)存儲(chǔ)器18進(jìn)行更新,分配在待決緩存器60中的讀和寫(xiě)條目的狀態(tài)被更新為Null(空),于是過(guò)程在塊150終止。
最后,如果在處理節(jié)點(diǎn)8a處對(duì)該請(qǐng)求事務(wù)的ARespIn表決結(jié)果為ReRun(重運(yùn)行),則待決緩存器60中寫(xiě)條目的狀態(tài)被更新為Null(空),而讀條目的狀態(tài)設(shè)置為ReRun(重運(yùn)行)。然后,過(guò)程從塊102穿過(guò)塊110、120、130到達(dá)塊142,它描述處理節(jié)點(diǎn)8a的節(jié)點(diǎn)控制器20等待直至從主節(jié)點(diǎn)收到所請(qǐng)求的高速緩存行。為響應(yīng)經(jīng)由節(jié)點(diǎn)互連22收到來(lái)自主節(jié)點(diǎn)的所請(qǐng)求的高速緩存行,節(jié)點(diǎn)控制器20經(jīng)由本地互連16把所請(qǐng)求的高速緩存行傳送到發(fā)請(qǐng)求的處理器10a,如塊144所示。為響應(yīng)收到所請(qǐng)求的高速緩存行,發(fā)請(qǐng)求的處理器10a把所請(qǐng)求的高速緩存行加載到它的高速緩存分層結(jié)構(gòu)14中,如塊146所示。然后,過(guò)程在塊150終止。
現(xiàn)在參考圖3B,圖中描繪了一個(gè)高層邏輯流程圖,顯示主節(jié)點(diǎn)如何處理從另一處理節(jié)點(diǎn)接收的一個(gè)事務(wù)。如圖所示,過(guò)程在塊160開(kāi)始,然后進(jìn)到塊162,它說(shuō)明確定主節(jié)點(diǎn)是否已經(jīng)通過(guò)節(jié)點(diǎn)互連22收到了來(lái)自另一處理節(jié)點(diǎn)的事務(wù)。如果不是,則過(guò)程在塊162簡(jiǎn)單地循環(huán),直至從另一處理節(jié)點(diǎn)8收到一個(gè)事務(wù)。為響應(yīng)主節(jié)點(diǎn)的節(jié)點(diǎn)控制器20從一遠(yuǎn)程處理節(jié)點(diǎn)8收到一個(gè)事務(wù),過(guò)程進(jìn)到塊164,它描述主節(jié)點(diǎn)的節(jié)點(diǎn)控制器20在主節(jié)點(diǎn)的本地互連16上傳送在塊162中收到的事務(wù),如決策塊170所指出的那樣,如果在本地互連16上發(fā)布的事務(wù)是一個(gè)讀事務(wù),則過(guò)程地行到塊172,它說(shuō)明該讀請(qǐng)求由一窺探器提供服務(wù),該窺探器向主節(jié)點(diǎn)的節(jié)點(diǎn)控制器20提供所請(qǐng)求的高速緩存行的一個(gè)副本。為響應(yīng)收到了所請(qǐng)求的高速緩存行,節(jié)點(diǎn)控制器20把所請(qǐng)求的高速緩存行經(jīng)由節(jié)點(diǎn)互連22傳送到發(fā)請(qǐng)求的處理節(jié)點(diǎn)8,如塊174所示。然后,過(guò)程在塊190終止。
回到塊164,如果在主節(jié)點(diǎn)的本地互連16上傳送的事務(wù)是寫(xiě)(例如帶清除的寫(xiě))事務(wù),則過(guò)程穿過(guò)170和180進(jìn)到塊184,它說(shuō)明存儲(chǔ)器控制器17以寫(xiě)事務(wù)中包含的高速緩存行更新系統(tǒng)存儲(chǔ)器18。然后,過(guò)程在塊180終止。如果在主節(jié)點(diǎn)的本地互連16上傳送的事務(wù)既不是讀事務(wù)也不是寫(xiě)事務(wù),則主節(jié)點(diǎn)進(jìn)行塊182處的事務(wù)所指出的行動(dòng),然后過(guò)程在塊190終止。為響應(yīng)讀或?qū)懯聞?wù)以外的其他事務(wù)可能進(jìn)行的行動(dòng)包括例如更新主節(jié)點(diǎn)高速緩存分層結(jié)構(gòu)14中保持的高速緩存行的相干性狀態(tài)。
現(xiàn)在參考圖4A—4D,圖中描繪了根據(jù)本發(fā)明的處理過(guò)程示例。為了清楚,下面對(duì)處理過(guò)程示例的解釋利用計(jì)算機(jī)系統(tǒng)6的一個(gè)簡(jiǎn)化表示,它有兩個(gè)處理節(jié)點(diǎn)8a和8b,每個(gè)含有兩個(gè)處理器10a和10b。所請(qǐng)求的高速緩存行的相干性狀態(tài)在每個(gè)處理器10的高速緩存分層結(jié)構(gòu)14內(nèi)和在主節(jié)點(diǎn)8a的相干性目錄50內(nèi)指出。
如圖4A中指出的那樣,處理節(jié)點(diǎn)8b的處理器10b首先發(fā)出對(duì)一高速緩存行的讀請(qǐng)求,那個(gè)高速緩存行在其高速緩存分層結(jié)構(gòu)14中是Invalid(無(wú)效的)(即未駐留)。為響應(yīng)對(duì)該讀請(qǐng)求的接收,處理節(jié)點(diǎn)8b的節(jié)點(diǎn)控制器推測(cè)地把讀請(qǐng)求傳送處理節(jié)點(diǎn)8a,它是在讀請(qǐng)求中指定的該高速緩存行的主節(jié)點(diǎn)。當(dāng)讀請(qǐng)求被推測(cè)地傳遞到處理節(jié)點(diǎn)8a時(shí),處理器10a在A(yíng)RespOut周期期間表決為Modified(修正的)干預(yù),因?yàn)樗母咚倬彺娣謱咏Y(jié)構(gòu)14持有處于Modified(修正的)狀態(tài)的所請(qǐng)求的高速緩存行。處理節(jié)點(diǎn)8b的仲裁器編譯ARespOut表決結(jié)果并向處理節(jié)點(diǎn)8b中的每個(gè)窺探器提供一個(gè)Modified(修正的)干預(yù)ARespIn表決結(jié)果。
接下來(lái),如圖4B中所示,處理節(jié)點(diǎn)8a的節(jié)點(diǎn)控制器20接收這個(gè)被推測(cè)地傳遞的讀請(qǐng)求并在它的本地互連16上發(fā)布該請(qǐng)求。如圖4B中指出的那樣,節(jié)點(diǎn)控制器20在A(yíng)Resp Out周期期間表決為Null(空)以響應(yīng)相干性目錄50,表明讀請(qǐng)求中指定的高速緩存行在處理節(jié)點(diǎn)8b為Modified(修正的)。節(jié)點(diǎn)控制器20承認(rèn)這個(gè)特殊狀態(tài),這允許該讀請(qǐng)求繼續(xù)進(jìn)行,如下文中針對(duì)圖4D所討論的那樣。
如圖4C中所示,獨(dú)立于向處理節(jié)點(diǎn)8a推測(cè)地傳送請(qǐng)求(而且可能在此傳送之前、同時(shí)或之后),處理節(jié)點(diǎn)8b的處理器10a對(duì)該讀請(qǐng)求作出響應(yīng)即在本機(jī)互連16上對(duì)所請(qǐng)求的高速緩存行尋源,并把所請(qǐng)求的高速緩存行在其高速緩存分層結(jié)構(gòu)14中的相干性狀態(tài)更新為Shared(共享的)。為響應(yīng)窺探到了所請(qǐng)求的高速緩存行,發(fā)請(qǐng)求的處理器10b把所請(qǐng)求的高速緩存行加載到它的高速緩存分層結(jié)構(gòu)14并把相應(yīng)的相干性狀態(tài)設(shè)置為Shared(共享的)。此外,處理節(jié)點(diǎn)8b的節(jié)點(diǎn)控制器20捕獲該高速緩存行并向處理節(jié)點(diǎn)8a發(fā)出一個(gè)含有此修正過(guò)的高速緩存行的帶清除的寫(xiě)事務(wù)。為響應(yīng)收到這帶清除的寫(xiě)事務(wù),處理節(jié)點(diǎn)8a的節(jié)點(diǎn)控制器20通過(guò)其本地互連16向系統(tǒng)存儲(chǔ)器18發(fā)出這帶清除的寫(xiě)。然后主節(jié)點(diǎn)8a的系統(tǒng)存儲(chǔ)器18用這修正的數(shù)據(jù)更新相應(yīng)的存儲(chǔ)器行。
現(xiàn)在參考圖4D,獨(dú)立于圖4A中所示存儲(chǔ)器更新(而且可能在這更新之前、同時(shí)或之后),處理節(jié)點(diǎn)8a的系統(tǒng)存儲(chǔ)器18對(duì)該讀請(qǐng)求作出響應(yīng)即通過(guò)本地互連16尋到所請(qǐng)求的高速緩存行的一個(gè)可能的陳舊副本源于處理節(jié)點(diǎn)8a的節(jié)點(diǎn)控制器20。于是處理節(jié)點(diǎn)8a的節(jié)點(diǎn)控制器20把所請(qǐng)求的高速緩存行的這個(gè)副本傳送到處理節(jié)點(diǎn)8b的節(jié)點(diǎn)控制器20,它拋棄該高速緩存行以響應(yīng)在其待決緩存器60中被標(biāo)為Null(空)的讀請(qǐng)求。
如已描述的那樣,本發(fā)明提供了一種改進(jìn)的NUMA計(jì)算機(jī)系統(tǒng)和在NUMA計(jì)算機(jī)系統(tǒng)中的一種改進(jìn)的通信方法。根據(jù)本發(fā)明,在確定一讀請(qǐng)求是否能在本地得到服務(wù)而無(wú)需遠(yuǎn)程處理器干預(yù)之前,通過(guò)節(jié)點(diǎn)互連該讀請(qǐng)求被推測(cè)地發(fā)布到一個(gè)遠(yuǎn)程處理節(jié)點(diǎn)(即主節(jié)點(diǎn))。當(dāng)該遠(yuǎn)程處理節(jié)點(diǎn)響應(yīng)這一推測(cè)地傳送的讀請(qǐng)求時(shí),發(fā)請(qǐng)求的處理節(jié)點(diǎn)根據(jù)該讀請(qǐng)求的本地相干性響應(yīng)來(lái)處置遠(yuǎn)程處理節(jié)點(diǎn)的響應(yīng)。以這種方式,通信事務(wù)的延時(shí)能顯著地減小。
還如已描述的那樣,本發(fā)明提供了一個(gè)非均勻存儲(chǔ)器訪(fǎng)問(wèn)(NUMA)計(jì)算機(jī)系統(tǒng),它包括至少一個(gè)本地處理節(jié)點(diǎn)和一個(gè)遠(yuǎn)程處理節(jié)點(diǎn),它們每個(gè)連到一個(gè)節(jié)點(diǎn)互連上。本地處理節(jié)點(diǎn)包括一個(gè)本地互連,與該本地互連連接的一個(gè)處理器和一個(gè)系統(tǒng)存儲(chǔ)器,以及放在本地互連和節(jié)點(diǎn)互連之間的一個(gè)節(jié)點(diǎn)控制器。為響應(yīng)收到一個(gè)來(lái)自本地互連的讀請(qǐng)求,節(jié)點(diǎn)控制器通過(guò)節(jié)點(diǎn)互連把該讀請(qǐng)求推測(cè)地傳送到遠(yuǎn)程處理節(jié)點(diǎn)。然后,為響應(yīng)收到來(lái)自該遠(yuǎn)程處理節(jié)點(diǎn)的對(duì)該讀請(qǐng)求的響應(yīng),該節(jié)點(diǎn)控制器根據(jù)該本發(fā)處理節(jié)點(diǎn)處該讀請(qǐng)求的分辨力(resolution)處置這個(gè)來(lái)自遠(yuǎn)程處理節(jié)點(diǎn)的響應(yīng)。例如,在一個(gè)處理過(guò)程中,在從遠(yuǎn)程處理節(jié)點(diǎn)收到的響應(yīng)中包含的數(shù)據(jù)被該節(jié)點(diǎn)控制器拋棄,如果該讀請(qǐng)求在本地處理節(jié)點(diǎn)處接收一個(gè)Modified Intervention(修正的干預(yù))相干性響應(yīng)的話(huà)。
權(quán)利要求
1.一個(gè)計(jì)算機(jī)系統(tǒng),包含一個(gè)節(jié)點(diǎn)互連,以及至少一個(gè)本地處理節(jié)點(diǎn)和一個(gè)遠(yuǎn)程處理節(jié)點(diǎn),它們每個(gè)都連到所述節(jié)點(diǎn)互連上,所述本地處理節(jié)點(diǎn)包括一個(gè)本地互連,與本地互連相連的一個(gè)處理器和一個(gè)系統(tǒng)存儲(chǔ)器,以及一個(gè)節(jié)點(diǎn)控制器放在所述本地互連和節(jié)點(diǎn)互連之間,其中所述節(jié)點(diǎn)控制器推測(cè)地把從所述本地互連接收的請(qǐng)求事務(wù)經(jīng)由所述節(jié)點(diǎn)互連傳送到所述遠(yuǎn)程處理節(jié)點(diǎn),而且其中所述節(jié)點(diǎn)控制器根據(jù)在所述本地處理節(jié)點(diǎn)處所述請(qǐng)求事務(wù)的分辨力,處理從所述遠(yuǎn)程處理節(jié)點(diǎn)處接收的對(duì)所述請(qǐng)求事務(wù)的響應(yīng)。
2.權(quán)利要求1的計(jì)算機(jī)系統(tǒng),其中所述遠(yuǎn)程處理節(jié)點(diǎn)進(jìn)一步包含一個(gè)本地互連以及一個(gè)放在所述節(jié)點(diǎn)互連和所述本地互連之間的一個(gè)節(jié)點(diǎn)控制器,其中為響應(yīng)收到所述推測(cè)的請(qǐng)求事務(wù),所述遠(yuǎn)程處理節(jié)點(diǎn)的節(jié)點(diǎn)控制器在所述遠(yuǎn)程處理節(jié)點(diǎn)的本地互連上發(fā)出所述推測(cè)的請(qǐng)求事務(wù)。
3.權(quán)利要求1的計(jì)算機(jī)系統(tǒng),其中所述計(jì)算機(jī)系統(tǒng)進(jìn)一步包含第三個(gè)處理節(jié)點(diǎn)所述請(qǐng)求事務(wù)包括一個(gè)地址;以及所述第一處理節(jié)點(diǎn)的節(jié)點(diǎn)控制器至少是部分地響應(yīng)所述請(qǐng)求事務(wù)中包括的所述地址,確定所述推測(cè)地傳送的請(qǐng)求事務(wù)的一個(gè)目標(biāo)處理節(jié)點(diǎn)。
4.權(quán)利要求1的計(jì)算機(jī)系統(tǒng),其中所述本地處理節(jié)點(diǎn)的所述節(jié)點(diǎn)控制器拋棄響應(yīng)所述請(qǐng)求事務(wù)而從所述遠(yuǎn)程節(jié)點(diǎn)接收的數(shù)據(jù),如果所述請(qǐng)求事務(wù)在所述本地處理節(jié)點(diǎn)收到一個(gè)修正的或共享的干預(yù)相干性響應(yīng)的話(huà)。
5.權(quán)利要求1的計(jì)算機(jī)系統(tǒng),所述遠(yuǎn)程處理節(jié)點(diǎn)包括一個(gè)系統(tǒng)存儲(chǔ)器,其中所述本地處理節(jié)點(diǎn)的節(jié)點(diǎn)控制器推測(cè)地把所述請(qǐng)求事務(wù)傳送到所述遠(yuǎn)程處理節(jié)點(diǎn),以響應(yīng)確定了所述請(qǐng)求事務(wù)指定了一個(gè)與所述遠(yuǎn)程處理節(jié)點(diǎn)處的系統(tǒng)存儲(chǔ)器相關(guān)聯(lián)的地址。
6.權(quán)利要求1的計(jì)算機(jī)系統(tǒng),其中所述本地處理節(jié)點(diǎn)的節(jié)點(diǎn)控制器把從所述遠(yuǎn)程處理節(jié)點(diǎn)接收的數(shù)據(jù)之源放到所述本地處理節(jié)點(diǎn)的本地互連上,如果所述請(qǐng)求事務(wù)在所述本地處理節(jié)點(diǎn)收到一個(gè)相干性響應(yīng),指出所述請(qǐng)求事務(wù)不能在本地得到服務(wù)的話(huà)。
7.一種在計(jì)算機(jī)系統(tǒng)中的通信方法,該計(jì)算機(jī)系統(tǒng)包括一個(gè)節(jié)點(diǎn)互連,該節(jié)點(diǎn)互連至少連接一個(gè)本地處理節(jié)點(diǎn)和一個(gè)遠(yuǎn)程處理節(jié)點(diǎn),所述本地處理節(jié)點(diǎn)包括一個(gè)本地互連,與本地互連相連的一個(gè)處理器和一個(gè)系統(tǒng)存儲(chǔ)器,以及一個(gè)節(jié)點(diǎn)控制器放在所述本地互連和所述節(jié)點(diǎn)互連之間,所述方法包含經(jīng)由所述節(jié)點(diǎn)互連推測(cè)地把從所述本地互連接收的請(qǐng)求事務(wù)傳送到所述遠(yuǎn)程處理節(jié)點(diǎn);以及在所述本地處理節(jié)點(diǎn),從所述遠(yuǎn)程處理節(jié)點(diǎn)接收一個(gè)對(duì)所述請(qǐng)求事務(wù)的響應(yīng),為響應(yīng)這一接收,根據(jù)所述本地處理節(jié)點(diǎn)處所述請(qǐng)求事務(wù)的分辨力,處理所述對(duì)該請(qǐng)求事務(wù)的響應(yīng)。
8.權(quán)利要求7的方法,進(jìn)一步包含為響應(yīng)在所述遠(yuǎn)程處理節(jié)點(diǎn)處收到所述推測(cè)的請(qǐng)求事務(wù),在所述遠(yuǎn)程處理節(jié)點(diǎn)的本地互連上發(fā)出所述推測(cè)的請(qǐng)求事務(wù)。
9.權(quán)利要求7的方法,其中所述計(jì)算機(jī)系統(tǒng)進(jìn)一步包括第三個(gè)處理節(jié)點(diǎn),而且所述請(qǐng)求事務(wù)包括一個(gè)地址,所述方法進(jìn)一步包含至少是部分地響應(yīng)所述請(qǐng)求事務(wù)中包括的所述地址,確定所述推測(cè)地傳送的請(qǐng)求事務(wù)的一個(gè)目標(biāo)處理節(jié)點(diǎn)。
10.權(quán)利要求7的方法,其中處理所述響應(yīng)包含拋棄從所述遠(yuǎn)程節(jié)點(diǎn)接收的數(shù)據(jù),如果所述請(qǐng)求事務(wù)在所述本地處理節(jié)點(diǎn)處接收一個(gè)修正的或共享的干預(yù)相干性響應(yīng)的話(huà)。
11.權(quán)利要求7的方法,所述遠(yuǎn)程處理節(jié)點(diǎn)包括一個(gè)系統(tǒng)存儲(chǔ)器,其中推測(cè)地傳送一個(gè)請(qǐng)求事務(wù)包含向所述遠(yuǎn)程處理節(jié)點(diǎn)推測(cè)地傳送所述請(qǐng)求事務(wù),以響應(yīng)確定所述請(qǐng)求事務(wù)指定了一個(gè)與所述遠(yuǎn)程處理節(jié)點(diǎn)處的系統(tǒng)存儲(chǔ)器相關(guān)聯(lián)的地址。
12.權(quán)利要求7的方法,其中處理所述響應(yīng)包含把從所述遠(yuǎn)程節(jié)點(diǎn)接收的數(shù)據(jù)放到所述本地處理節(jié)點(diǎn)的本地互連上,如果所述請(qǐng)求事務(wù)在所述本地處理節(jié)點(diǎn)收到一個(gè)相干性響應(yīng),指出所述請(qǐng)求事務(wù)不能在本地得到服務(wù)的話(huà)。
全文摘要
一個(gè)非均勻存儲(chǔ)器訪(fǎng)問(wèn)(NUMA)計(jì)算機(jī)系統(tǒng)包括至少一個(gè)本地處理節(jié)點(diǎn)和一個(gè)遠(yuǎn)程處理節(jié)點(diǎn),它們每個(gè)與一節(jié)點(diǎn)互連相連。該本地處理節(jié)點(diǎn)包括一個(gè)本地互連,與本地互連相連的一個(gè)處理器和一個(gè)系統(tǒng)存儲(chǔ)器,以及一個(gè)節(jié)點(diǎn)控制器放在本地互連和節(jié)點(diǎn)互連之間。為響應(yīng)收到了一個(gè)來(lái)自本地互連的讀請(qǐng)求,節(jié)點(diǎn)控制器推測(cè)地把該讀請(qǐng)求經(jīng)由節(jié)點(diǎn)互連傳送到遠(yuǎn)程處理節(jié)點(diǎn)。然后,為響應(yīng)收到了一個(gè)來(lái)自遠(yuǎn)程處理節(jié)點(diǎn)的對(duì)該讀請(qǐng)求的響應(yīng),節(jié)點(diǎn)控制器根據(jù)本地處理節(jié)點(diǎn)處該讀請(qǐng)求的分辨力處理該響應(yīng)。例如,在一個(gè)處理過(guò)程中,從遠(yuǎn)程處理節(jié)點(diǎn)接收的響應(yīng)中包含的數(shù)據(jù)被該節(jié)點(diǎn)控制器拋棄,如果該讀請(qǐng)求在本地處理節(jié)點(diǎn)處收到了一個(gè)修正的干預(yù)相干性響應(yīng)的話(huà)。
文檔編號(hào)G06F12/00GK1330783SQ9981444
公開(kāi)日2002年1月9日 申請(qǐng)日期1999年12月10日 優(yōu)先權(quán)日1998年12月15日
發(fā)明者約那·鮑姆加特納, 馬克·E·迪安, 安娜·埃爾曼 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司