專利名稱:一種具有多cache一致性域的多處理器節(jié)點(diǎn)系統(tǒng)構(gòu)建方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)應(yīng)用領(lǐng)域,具體地說是一種具有多cache —致性域的多處理器節(jié)點(diǎn)系統(tǒng)構(gòu)建方法.
背景技術(shù):
對(duì)于多處理器系統(tǒng),其多個(gè)處理器共享系統(tǒng)內(nèi)存空間。當(dāng)前,多處理器之間的連接方式由總線連接轉(zhuǎn)變?yōu)辄c(diǎn)對(duì)點(diǎn)連接,內(nèi)存也從掛接處理器外部橋接芯片轉(zhuǎn)變?yōu)橹苯訏旖犹幚砥?。由于?nèi)存掛接方式的變化,內(nèi)存在系統(tǒng)中的分布也發(fā)生變化,從而導(dǎo)致多處理器系統(tǒng)
中內(nèi)存訪問的非均一性,故當(dāng)前多處理器系統(tǒng)多為NUMA(Non_Uniform Memory Access-
非一致內(nèi)存訪問)架構(gòu)系統(tǒng)。NUMA架構(gòu)多處理器系統(tǒng)具有以下3個(gè)重要特點(diǎn)
1、所有內(nèi)存進(jìn)行統(tǒng)一編址,形成一個(gè)統(tǒng)一的內(nèi)存空間;
2、所有處理器都能訪問內(nèi)存空間的全部地址;
3、訪問遠(yuǎn)端內(nèi)存比訪問其本地內(nèi)存慢。NUMA系統(tǒng)中有多個(gè)cache單元分布于系統(tǒng),因而設(shè)計(jì)NUMA系統(tǒng)須解決多cache之間的一致性問題。滿足cache —致性的NUMA系統(tǒng)也稱為CC-NUMA (Cache Coherent
Non-Uniform Memory Access-Cache 一致性非一致內(nèi)存訪問)系統(tǒng)。如何解決cache —
致性問題是CC-NUMA系統(tǒng)的核心問題。由于當(dāng)今處理器直接掛接內(nèi)存,其本身支持cache —致性協(xié)議;因而一種方案是將這些處理器直連構(gòu)成多處理器系統(tǒng),處理器之間的cache —致性可以由這些處理器本身的cache —致性協(xié)議維護(hù)引擎保證,并形成一個(gè)單一 cache —致性域。在單一 cache —致性域之中的各個(gè)處理器用處理器ID號(hào)標(biāo)識(shí)和識(shí)別。但這種方式組織的多處理器系統(tǒng)規(guī)模有限,這是因?yàn)槊總€(gè)處理器在cache —致性域內(nèi)至少占用一個(gè)處理器ID號(hào),而每個(gè)處理器能夠分辨的處理器ID號(hào)個(gè)數(shù)是受限的。例如,某款處理器能夠分辨4個(gè)處理器ID號(hào),即能夠支持域內(nèi)最多4顆處理器直接互連。再例如,某款處理器只能分辨2個(gè)處理器ID,其所能支持的cache —致性域內(nèi)的處理器數(shù)僅為兩個(gè)。同時(shí),由于物理限制和價(jià)格限制,處理器的互連端口數(shù)量同樣受限,在某些情況下,即使處理器支持的單一 cache —致性域內(nèi)處理器ID數(shù)目能夠滿足要求,但直連的方式會(huì)帶來跨處理器內(nèi)存訪問較大的跳步數(shù)和延遲,并不能構(gòu)成一個(gè)高效的多處理器系統(tǒng)。處理器參數(shù)配置、互連端口數(shù)目和能夠支持的處理器ID數(shù)量與處理器定價(jià)體系密切相關(guān),一般來說,處理器支持的互連端口數(shù)和處理器ID數(shù)量越少,價(jià)格越便宜。支持域內(nèi)2個(gè)處理器ID會(huì)比支持4個(gè)處理器ID的處理器價(jià)格更低廉。如上文所述,按處理器直連的方式構(gòu)成的多處理器系統(tǒng)規(guī)模有限。為實(shí)現(xiàn)更大規(guī)模的CC-NUMA多處理器系統(tǒng),必須借助于節(jié)點(diǎn)控制器(Node Controller)。節(jié)點(diǎn)控制器具有擴(kuò)展系統(tǒng)規(guī)模和維護(hù)全局cache —致性的功能;首先,每個(gè)節(jié)點(diǎn)控制器連接I至4顆處理器,組成一個(gè)節(jié)點(diǎn)和一級(jí)cache —致性域,域內(nèi)cache —致性由處理器和節(jié)點(diǎn)控制器共同維護(hù)。節(jié)點(diǎn)控制器也會(huì)占用域內(nèi)的至少一個(gè)處理器ID,因而域內(nèi)處理器加節(jié)點(diǎn)控制器的數(shù)量不能大于處理器所能支持的域內(nèi)處理器ID數(shù)。然后,節(jié)點(diǎn)控制器直接互連或通過節(jié)點(diǎn)路由器連接以組成大規(guī)模CC-NUMA系統(tǒng)。節(jié)點(diǎn)間的二級(jí)cache —致性由節(jié)點(diǎn)控制器維護(hù),某節(jié)點(diǎn)內(nèi)的處理器跨節(jié)點(diǎn)和cache —致性域訪問另一個(gè)節(jié)點(diǎn)內(nèi)處理器的內(nèi)存時(shí),全局cache —致性通過節(jié)點(diǎn)控制器維護(hù)。CC-NUMA系統(tǒng)使用節(jié)點(diǎn)控制器擴(kuò)展系統(tǒng)規(guī)模和維護(hù)全局cache —致性增加了跨域處理和域間通信的開銷,導(dǎo)致訪問遠(yuǎn)端內(nèi)存的顯著下降,系統(tǒng)規(guī)模越大,下降越明顯。若構(gòu)建一個(gè)由64顆處理器組成的CC-NUMA系統(tǒng),可采用兩種方案,方案I是每個(gè)節(jié)點(diǎn)內(nèi)一致性域內(nèi)有4顆處理器,則整個(gè)系統(tǒng)至少需要16個(gè)節(jié)點(diǎn)控制器。方案2可使用僅支持域內(nèi)2個(gè)處理器ID的處理器,則一個(gè)節(jié)點(diǎn)內(nèi)cache —致性域只能由一顆處理器和一個(gè)節(jié)點(diǎn)控制器構(gòu)成,這就必須使用至少64個(gè)節(jié)點(diǎn)控制器。如此多的節(jié)點(diǎn)控制器使節(jié)點(diǎn)間互連規(guī)模非常龐大,節(jié)點(diǎn)間拓?fù)溆l(fā)復(fù)雜;造成跨節(jié)點(diǎn)訪問遠(yuǎn)端內(nèi)存的速度明顯惡化,進(jìn)而導(dǎo)致系統(tǒng)效率的快速下降和性能的巨大損失。由此可見,對(duì)于多節(jié)點(diǎn)多處理器系統(tǒng),減少節(jié)點(diǎn)的數(shù)目對(duì)于降低節(jié)點(diǎn)間互連規(guī)模、簡化節(jié)點(diǎn)間拓?fù)渚哂兄苯佣@著的作用,尤其是對(duì)于互連端口數(shù)目和能夠支持的域內(nèi)處理器ID數(shù)量非常有限的處理器更是如此。因此,能否有效減小節(jié)點(diǎn)控制器的數(shù)量是一個(gè)意義重大且又非常緊迫的技術(shù)難題。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種具有多cache —致性域的多處理器節(jié)點(diǎn)系統(tǒng)構(gòu)建方法。
本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,在多處理器節(jié)點(diǎn)系統(tǒng)中,在每個(gè)節(jié)點(diǎn)的控制器內(nèi)部構(gòu)建一個(gè)統(tǒng)一的邏輯cache —致性域,然后由若干處理器與該節(jié)點(diǎn)控制器組成相互隔離的多物理cache —致性域;包括cache —致性域的組建方式、cache —致性域劃分方式和目錄結(jié)構(gòu)方式;其中
(1)多物理cache—致性域的組建方式包括
1)一級(jí)節(jié)點(diǎn)間通過節(jié)點(diǎn)控制器直接連接或經(jīng)過節(jié)點(diǎn)路由器連接,組成一級(jí)節(jié)點(diǎn)間的單一 cache 一致性域;
2)通過一級(jí)節(jié)點(diǎn)控制器直接連接二級(jí)節(jié)點(diǎn)控制器,并在二級(jí)節(jié)點(diǎn)控制器內(nèi)部構(gòu)建一個(gè)統(tǒng)一的邏輯cache —致性域,該cache —致性域完全包含彼此隔離的由若干一級(jí)節(jié)點(diǎn)控制器和二級(jí)節(jié)點(diǎn)控制器組成的多物理cache —致性域;
3)二級(jí)節(jié)點(diǎn)間通過二級(jí)節(jié)點(diǎn)控制器直接連接或經(jīng)過節(jié)點(diǎn)路由器連接,組成二級(jí)節(jié)點(diǎn)間的單一 cache —致性域;
4)基于I)-3)的方式擴(kuò)展到η (η>2)級(jí)節(jié)點(diǎn),從而實(shí)現(xiàn)更多級(jí)節(jié)點(diǎn)多處理器系統(tǒng);
(2)cache 一致性域劃分方式包括
1)對(duì)于一級(jí)節(jié)點(diǎn)控制器,與處理器相連接的各個(gè)端口信息,作為由若干處理器和該節(jié)點(diǎn)控制器組成的物理cache —致性域域?qū)傩畔碓?,每個(gè)端口域信息寄存器標(biāo)識(shí)該端口的物理子域,端口域信息寄存器根據(jù)系統(tǒng)要求配置各端口域?qū)傩畔ⅲ瑥亩鴮?shí)現(xiàn)由若干處理器和該節(jié)點(diǎn)控制器組成的各個(gè)物理cache —致性域劃分;
2)對(duì)于二級(jí)節(jié)點(diǎn)控制器,與一級(jí)節(jié)點(diǎn)控制器相連接的各個(gè)端口信息作為由若干一級(jí)節(jié)點(diǎn)控制器和該二級(jí)節(jié)點(diǎn)控制器組成的物理cache —致性域域?qū)傩畔碓?,根?jù)系統(tǒng)要求配置各端口域?qū)傩畔亩鴮?shí)現(xiàn)由若干一級(jí)節(jié)點(diǎn)控制器和該二級(jí)節(jié)點(diǎn)控制器組成的各個(gè)物理cache 一致性域劃分;
3)采用方式2)描述的二級(jí)節(jié)點(diǎn)控制器端口域?qū)倥渲梅绞脚渲闷鋘級(jí)(n>2)節(jié)點(diǎn)控制器端口域?qū)伲?br>
(3)目錄結(jié)構(gòu)方式
1)一級(jí)節(jié)點(diǎn)控制器采用本地和遠(yuǎn)端雙目錄結(jié)構(gòu),對(duì)于遠(yuǎn)端數(shù)據(jù)目錄,目錄項(xiàng)記錄本地節(jié)點(diǎn)內(nèi)持有統(tǒng)一數(shù)據(jù)副本的處理器及其域?qū)傩畔?、一致性狀態(tài)信息;而對(duì)于本地?cái)?shù)據(jù)目錄,目錄項(xiàng)記錄持有數(shù)據(jù)副本的遠(yuǎn)端節(jié)點(diǎn)及其一致性狀態(tài)信息,同時(shí)設(shè)置標(biāo)志位指示本地節(jié)點(diǎn)內(nèi)不同于數(shù)據(jù)所在物理子域的其它子域是否持有該數(shù)據(jù)副本;
2)二級(jí)節(jié)點(diǎn)控制器采用本地和遠(yuǎn)端雙目錄結(jié)構(gòu),對(duì)于遠(yuǎn)端數(shù)據(jù)目錄,目錄項(xiàng)記錄本地二級(jí)節(jié)點(diǎn)內(nèi)持有統(tǒng)一數(shù)據(jù)副本的一級(jí)節(jié)點(diǎn)及其域?qū)傩畔ⅰ⒁恢滦誀顟B(tài)信息;而對(duì)于本地?cái)?shù)據(jù)目錄,目錄項(xiàng)記錄持有統(tǒng)一數(shù)據(jù)副本的遠(yuǎn)端二級(jí)節(jié)點(diǎn)及其一致性狀態(tài)信息,同時(shí)設(shè)置標(biāo)志位指示本地二級(jí)節(jié)點(diǎn)內(nèi)不同于數(shù)據(jù)所在物理子域的其它子域是否持有該數(shù)據(jù)副本;
3)采用方式2)描述的二級(jí)節(jié)點(diǎn)控制器目錄結(jié)構(gòu)方式配置其n級(jí)(n>2)節(jié)點(diǎn)控制器目錄結(jié)構(gòu);
4)一級(jí)節(jié)點(diǎn)控制器采用本地/遠(yuǎn)端統(tǒng)一目錄結(jié)構(gòu),目錄項(xiàng)記錄除本物理子域的處理器夕卜,系統(tǒng)所有處理器持有統(tǒng)一數(shù)據(jù)副本信息及一致性狀態(tài)信息;
5)二級(jí)節(jié)點(diǎn)控制器采用本地/遠(yuǎn)端統(tǒng)一目錄結(jié)構(gòu),目錄項(xiàng)記錄除本物理子域的一級(jí)節(jié)點(diǎn)控制器外,系統(tǒng)所有一級(jí)節(jié)點(diǎn)控制器持有統(tǒng)一數(shù)據(jù)副本信息及一致性狀態(tài)信息;
6)采用方式5)的二級(jí)節(jié)點(diǎn)控制器目錄結(jié)構(gòu)方式配置其n級(jí)(n>2)節(jié)點(diǎn)控制器目錄結(jié)構(gòu)。本發(fā)明的有益效果是本發(fā)明的目的是解決由于處理器所能支持的域內(nèi)處理器ID數(shù)量限制而帶來的節(jié)點(diǎn)規(guī)模受限問題,該問題會(huì)導(dǎo)致多處理器系統(tǒng)所需節(jié)點(diǎn)控制器數(shù)目過大,從而造成節(jié)點(diǎn)間互連規(guī)模龐大、拓?fù)浣Y(jié)構(gòu)復(fù)雜。應(yīng)用本發(fā)明則可以顯著減少中、大規(guī)模共享內(nèi)存多處理器系統(tǒng)所需節(jié)點(diǎn)控制器數(shù)目,從而有效提升系統(tǒng)性能并降低系統(tǒng)拓?fù)鋸?fù)雜度。
圖1是現(xiàn)有多節(jié)點(diǎn)多處理器系統(tǒng)結(jié)構(gòu)示意 圖2是應(yīng)用本發(fā)明的多節(jié)點(diǎn)多處理器系統(tǒng)結(jié)構(gòu)示意 圖3是處理器訪問本地節(jié)點(diǎn)內(nèi)處于不同物理子域內(nèi)存示例 圖4是本地節(jié)點(diǎn)處理器訪問遠(yuǎn)端節(jié)點(diǎn)內(nèi)存示例 圖5是處理器訪問本地節(jié)點(diǎn)處于同一物理子域內(nèi)存示例 圖6是目錄格式設(shè)計(jì) 圖7是處理器端口物理子域?qū)傩栽O(shè)置示例 圖8是處理器訪問本節(jié)點(diǎn)不同物理子域內(nèi)存處理流程 圖9是處理器訪問遠(yuǎn)端節(jié)點(diǎn)內(nèi)存處理流程圖。
具體實(shí)施例方式參照說明書附圖對(duì)本發(fā)明的方法作以下詳細(xì)地說明。
實(shí)施例一個(gè)帶多節(jié)點(diǎn)的多處理器系統(tǒng),對(duì)于各個(gè)節(jié)點(diǎn),在其節(jié)點(diǎn)控制器內(nèi)部構(gòu)建一個(gè)統(tǒng)一的邏輯cache —致性域以完全包含彼此隔離的由若干處理器和該節(jié)點(diǎn)控制器組成的多個(gè)物理cache —致性域;而其節(jié)點(diǎn)間可通過節(jié)點(diǎn)控制器直接連接或經(jīng)過節(jié)點(diǎn)路由器(NR)連接,組成節(jié)點(diǎn)間單一 cache —致性域;
另外,上述系統(tǒng)的一級(jí)節(jié)點(diǎn)控制器可接二級(jí)節(jié)點(diǎn)控制器,并在二級(jí)節(jié)點(diǎn)控制器內(nèi)部構(gòu)建一個(gè)統(tǒng)一的邏輯cache —致性域以完全包含彼此隔離的由若干一級(jí)節(jié)點(diǎn)控制器和該二級(jí)節(jié)點(diǎn)控制器組成的多個(gè)物理cache —致性域;通過其二級(jí)節(jié)點(diǎn)控制器直接連接或經(jīng)過節(jié)點(diǎn)路由器(NR)連接,從而組成二級(jí)節(jié)點(diǎn)間單一 cache —致性域;
更進(jìn)一步,上述方案也可擴(kuò)展到n (n>2)級(jí)節(jié)點(diǎn)系統(tǒng),從而實(shí)現(xiàn)更多級(jí)節(jié)點(diǎn)多處理器系
統(tǒng);
對(duì)于上述系統(tǒng)的節(jié)點(diǎn)控制器,與處理器相連接的各個(gè)端口信息可作為由若干處理器和該節(jié)點(diǎn)控制器組成的物理cache —致性域域?qū)傩畔碓?,每個(gè)端口的域信息寄存器標(biāo)識(shí)該端口的物理子域,端口域信息寄存器可根據(jù)系統(tǒng)要求配置各端口域?qū)傩畔亩淖冇扇舾商幚砥骱驮摴?jié)點(diǎn)控制器組成的各個(gè)物理cache —致性域劃分;
而對(duì)于二級(jí)節(jié)點(diǎn)控制器,與一級(jí)節(jié)點(diǎn)控制器相連接的各個(gè)端口信息可作為由若干一級(jí)節(jié)點(diǎn)控制器和該二級(jí)節(jié)點(diǎn)控制器組成的物理cache —致性域域?qū)傩畔碓?,其可根?jù)系統(tǒng)要求配置各端口域?qū)傩畔亩淖冇扇舾梢患?jí)節(jié)點(diǎn)控制器和該二級(jí)節(jié)點(diǎn)控制器組成的各個(gè)物理cache —致性域劃分;
同樣,可采用系統(tǒng)的二級(jí)節(jié)點(diǎn)控制器端口域?qū)倥渲梅绞脚渲闷鋘級(jí)(n>2)節(jié)點(diǎn)控制器端口域?qū)伲?br>
對(duì)于節(jié)點(diǎn)控制器目錄構(gòu)造,可采用本地和遠(yuǎn)端雙目錄結(jié)構(gòu),對(duì)于遠(yuǎn)端數(shù)據(jù)目錄,目錄項(xiàng)記錄本地節(jié)點(diǎn)內(nèi)持有數(shù)據(jù)副本的處理器及其域?qū)傩畔?、一致性狀態(tài)信息;而對(duì)于本地?cái)?shù)據(jù)目錄,目錄項(xiàng)記錄持有數(shù)據(jù)副本的遠(yuǎn)端節(jié)點(diǎn)及其一致性狀態(tài)信息,同時(shí)設(shè)置標(biāo)志位指示本地節(jié)點(diǎn)內(nèi)不同于數(shù)據(jù)所在物理子域的其它子域是否持有該數(shù)據(jù)副本;
對(duì)于節(jié)點(diǎn)控制器目錄構(gòu)造,也可采用本地/遠(yuǎn)端統(tǒng)一目錄結(jié)構(gòu),目錄項(xiàng)記錄除本物理子域的處理器外系統(tǒng)其它所有處理器持有數(shù)據(jù)副本信息及一致性狀態(tài)信息;
同樣,二級(jí)節(jié)點(diǎn)控制器可采用本地和遠(yuǎn)端雙目錄結(jié)構(gòu)。對(duì)于遠(yuǎn)端數(shù)據(jù)目錄,目錄項(xiàng)記錄本地二級(jí)節(jié)點(diǎn)內(nèi)持有數(shù)據(jù)副本的一級(jí)節(jié)點(diǎn)及其域?qū)傩畔?、一致性狀態(tài)信息;而對(duì)于本地?cái)?shù)據(jù)目錄,目錄項(xiàng)記錄持有數(shù)據(jù)副本的遠(yuǎn)端二級(jí)節(jié)點(diǎn)及其一致性狀態(tài)信息,同時(shí)設(shè)置標(biāo)志位指示本地二級(jí)節(jié)點(diǎn)內(nèi)不同于數(shù)據(jù)所在物理子域的其它子域是否持有該數(shù)據(jù)副本;
二級(jí)節(jié)點(diǎn)控制器也可采用本地/遠(yuǎn)端統(tǒng)一目錄結(jié)構(gòu),目錄項(xiàng)記錄除本物理子域的一級(jí)節(jié)點(diǎn)控制器外系統(tǒng)其它所有一級(jí)節(jié)點(diǎn)控制器持有數(shù)據(jù)副本信息及一致性狀態(tài)信息;
同理,可按照二級(jí)節(jié)點(diǎn)控制器目錄結(jié)構(gòu)方式配置n級(jí)(n>2)節(jié)點(diǎn)控制器目錄結(jié)構(gòu)。如圖1所示,每個(gè)節(jié)點(diǎn)由若干處理器和節(jié)點(diǎn)控制器構(gòu)成。本地節(jié)點(diǎn)內(nèi)的各個(gè)處理器和節(jié)點(diǎn)控制器處于同一物理cache —致性域,可以直接進(jìn)行節(jié)點(diǎn)內(nèi)跨處理器訪存操作。
如圖2所示,節(jié)點(diǎn)控制器可以同與其相連的處理器組成多個(gè)節(jié)點(diǎn)內(nèi)物理cache —致性域(如圖2中的節(jié)點(diǎn)控制器支持2個(gè)節(jié)點(diǎn)內(nèi)物理cache —致性域),與圖1所示系統(tǒng)相t匕,采用圖2方式構(gòu)成相同處理器規(guī)模的CC-NUMA系統(tǒng)所使用的節(jié)點(diǎn)控制器數(shù)目減少一半。本圖中的各節(jié)點(diǎn)控制器處于同一個(gè)層次??梢酝ㄟ^多層節(jié)點(diǎn)控制器級(jí)聯(lián),構(gòu)建大規(guī)模系統(tǒng)。如圖3所示,處理器Pl (301)屬于該節(jié)點(diǎn)的物理子域Doml (307),Pl處理器(301)訪問本地節(jié)點(diǎn)物理子域Dom2 (308)中處理器P2 (302)的內(nèi)存模塊MEM2 (305)數(shù)據(jù)。一種典型處理過程為
處理器Pl (301)執(zhí)行訪存操作時(shí)在處理器內(nèi)部未命中cache緩存,而將訪問指向同一物理cache —致性域的節(jié)點(diǎn)控制器(315),因此處理器Pl (301)向節(jié)點(diǎn)控制器(315)的遠(yuǎn)端內(nèi)存代理引擎RPE (313)的根代理HP (309)發(fā)送訪存請(qǐng)求;
節(jié)點(diǎn)控制器(315)的遠(yuǎn)端內(nèi)存代理引擎RPE (313)的根代理HP (309)接收到處理器Pl (301)發(fā)送的訪存請(qǐng)求,在根代理HP (309)內(nèi)部保存該訪存請(qǐng)求信息,包括請(qǐng)求處理器處于哪個(gè)物理子域、請(qǐng)求的類型、訪存地址等,并維護(hù)讀寫請(qǐng)求在處理過程中的狀態(tài)。遠(yuǎn)端內(nèi)存代理弓丨擎RPE (313 )的根代理HP (309 )查詢遠(yuǎn)端內(nèi)存目錄RDIR (316 ),判斷是否需要在本地節(jié)點(diǎn)除目標(biāo)地址所在物理子域之外的各物理子域內(nèi)的做偵聽(Snoop)操作。本例中假設(shè)不需要進(jìn)行物理子域Doml (307)的處理。則遠(yuǎn)端內(nèi)存代理引擎RPE (313)的根代理HP (309)向遠(yuǎn)端內(nèi)存代理引擎RPE (313)的緩存代理CP (310)轉(zhuǎn)發(fā)訪存請(qǐng)求。節(jié)點(diǎn)控制器(315)的遠(yuǎn)端內(nèi)存代理引擎RPE (313)的cache緩存代理CP (310)接收到訪存請(qǐng)求,根據(jù)訪存請(qǐng)求地址可知其屬于本節(jié)點(diǎn)內(nèi)另一物理子域Dom2 (308)中的內(nèi)存模塊,所以向本地內(nèi)存代理引擎LPE (314)的根代理HP (312)轉(zhuǎn)發(fā)訪存請(qǐng)求。節(jié)點(diǎn)控制器(315)的本地內(nèi)存代理引擎LPE (314)的根代理HP (312)接收到訪存請(qǐng)求,查詢本地內(nèi)存目錄LDIR (317),判斷其它節(jié)點(diǎn)是否持有相同地址的數(shù)據(jù)副本,如果有則需要進(jìn)行節(jié)點(diǎn)間一致性域內(nèi)的處理。本例中假設(shè)沒有其它節(jié)點(diǎn)持有同一地址的數(shù)據(jù)副本。本地內(nèi)存代理引擎LPE (314)的根代理HP (312)向本地內(nèi)存代理引擎LPE (314)的cache緩存代理CP (311)轉(zhuǎn)發(fā)請(qǐng)求消息。節(jié)點(diǎn)控制器(315)本地內(nèi)存代理引擎LPE (314)的cache緩存代理CP (311)接收到本地內(nèi)存代理引擎LPE (314)的根代理HP (312)轉(zhuǎn)發(fā)的訪存請(qǐng)求,在cache緩存代理CP (311)內(nèi)部保存該訪存請(qǐng)求信息,包括請(qǐng)求的類型、訪存地址等,并維護(hù)讀寫請(qǐng)求在處理過程中的狀態(tài)。本地內(nèi)存代理引擎LPE (314)的cache緩存代理CP (311)根據(jù)訪存地址確定其屬于處理器P2 (302)內(nèi)存模塊MEM2 (305)的數(shù)據(jù),所以向處理器P2 (302)發(fā)出請(qǐng)求。處理器P2 (302)接收到訪存請(qǐng)求,經(jīng)過處理后,處理器P2 (302)向節(jié)點(diǎn)控制器(315)的本地內(nèi)存代理引擎LPE (314)返回?cái)?shù)據(jù)及其一致性狀態(tài)。節(jié)點(diǎn)控制器(315)的本地內(nèi)存代理引擎LPE (314)的cache緩存代理CP (311)接收到返回的數(shù)據(jù)及其一致性狀態(tài),并轉(zhuǎn)發(fā)給本地內(nèi)存代理引擎LPE (314)的根代理HP(312)。本地內(nèi)存代理引擎(314)的根代理HP (312)接收到返回的數(shù)據(jù)及其一致性狀態(tài),在本地?cái)?shù)據(jù)目錄LDIR (317)中記錄遠(yuǎn)端代理引擎(313)的cache緩存代理CP (310)持有數(shù)據(jù)副本及其一致性狀態(tài)。本地內(nèi)存代理弓丨擎(314 )的根代理HP (312 )向本地節(jié)點(diǎn)(315 )的遠(yuǎn)端內(nèi)存代理引擎RPE (313)的cache緩存代理CP (310)返回?cái)?shù)據(jù)及其一致性狀態(tài)。節(jié)點(diǎn)控制器(315)的遠(yuǎn)端內(nèi)存代理引擎RPE (313)的cache緩存代理CP (310)接收到返回的數(shù)據(jù)及其一致性狀態(tài),向遠(yuǎn)端內(nèi)存代理引擎RPE (313)的根代理HP (309)轉(zhuǎn)發(fā)。節(jié)點(diǎn)控制器(315)的遠(yuǎn)端內(nèi)存代理引擎RPE (313)的根代理HP (309)接收到返回的數(shù)據(jù)及其一致性狀態(tài),在遠(yuǎn)端內(nèi)存目錄RDIR (316)中記錄對(duì)于該請(qǐng)求地址,物理子域Doml (307)的處理器Pl (301)持有該地址數(shù)據(jù)的副本及狀態(tài)。節(jié)點(diǎn)控制器(315)的遠(yuǎn)端內(nèi)存代理引擎RPE (313)的根代理HP (309)向請(qǐng)求者Doml (307)的處理器Pl (301)返回?cái)?shù)據(jù)及一致性狀態(tài),完成該請(qǐng)求的處理。如圖4所示,處理器Pl (401)屬于節(jié)點(diǎn)Nodel (433)的物理子域Doml (413),Pl處理器(401)訪問遠(yuǎn)端節(jié)點(diǎn)Node2 (434)物理子域Dom2 (416)中處理器P2 (405)的內(nèi)存模塊MEM2 (411)數(shù)據(jù)。該處理過程為
節(jié)點(diǎn)Nodel (433)的處理器Pl (401)執(zhí)行訪存操作時(shí)在處理器內(nèi)部未命中cache緩存,根據(jù)訪存地址,處理器Pl (401)可知其不屬于本節(jié)點(diǎn)Nodel (433),而屬于遠(yuǎn)端節(jié)點(diǎn)Node2 (434)。因此處理器Pl (401)向節(jié)點(diǎn)控制器(435)的遠(yuǎn)端內(nèi)存代理引擎RPE (427)的根代理HP (417)發(fā)送訪存請(qǐng)求;
節(jié)點(diǎn)控制器(435)的遠(yuǎn)端內(nèi)存代理引擎RPE (427)的根代理HP (417)接收到處理器Pl (401)發(fā)送的訪存請(qǐng)求,在根代理HP (417)內(nèi)部保存該訪存請(qǐng)求信息,包括請(qǐng)求處理器處于本地節(jié)點(diǎn)Node I的哪個(gè)物理子域(Doml還是Dom2 ),請(qǐng)求的類型、訪存地址等,并維護(hù)緩存讀寫請(qǐng)求在處理過程中的狀態(tài)。節(jié)點(diǎn)Nodel (433)遠(yuǎn)端內(nèi)存代理引擎RPE (427)的根代理HP (417)查詢遠(yuǎn)端內(nèi)存目錄RDIR (425),判斷是否需要本地節(jié)點(diǎn)各物理子域內(nèi)做偵聽(Snoop)操作。本例中假設(shè)不需要進(jìn)行物理子域Doml (307)的處理。則遠(yuǎn)端內(nèi)存代理引擎RPE (427)的根代理HP(417)根據(jù)訪存請(qǐng)求地址可知其屬于遠(yuǎn)端節(jié)點(diǎn)Node2 (434)的內(nèi)存模塊,所以向遠(yuǎn)端內(nèi)存代理引擎RPE (427)的cache緩存代理CP (419)轉(zhuǎn)發(fā)訪存請(qǐng)求。節(jié)點(diǎn)Nodel (433)的遠(yuǎn)端內(nèi)存代理引擎RPE (427)的cache緩存代理CP (419)接收到訪存請(qǐng)求,在cache緩存代理CP (419)內(nèi)部保存該訪存請(qǐng)求信息,包括請(qǐng)求的類型、訪存地址等,并維護(hù)讀寫請(qǐng)求在處理過程中的狀態(tài)。遠(yuǎn)端內(nèi)存代理引擎RPE (427)的cache緩存代理CP (419)根據(jù)訪存請(qǐng)求地址可知其屬于節(jié)點(diǎn)Node2 (434)管理的內(nèi)存模塊,故向節(jié)點(diǎn)Node2 (434)發(fā)出請(qǐng)求;
節(jié)點(diǎn)間互連網(wǎng)絡(luò)將節(jié)點(diǎn)Nodel (433)發(fā)出的請(qǐng)求消息發(fā)送到目的節(jié)點(diǎn)Node2 (434);節(jié)點(diǎn)Node2 (434)的本地內(nèi)存代理引擎LPE (432)的根代理HP (424)接收到該訪存請(qǐng)求,在根代理HP (424)中保存其請(qǐng)求信息,包括請(qǐng)求發(fā)自哪個(gè)遠(yuǎn)端節(jié)點(diǎn),請(qǐng)求的類型、訪存地址等,并維護(hù)讀寫請(qǐng)求在處理過程中的狀態(tài)。本地內(nèi)存代理引擎LPE (432)的根代理HP (424)查詢本地內(nèi)存目錄LDIR (430),判斷其它節(jié)點(diǎn)是否持有相同地址的數(shù)據(jù)副本,如果有則需要進(jìn)行節(jié)點(diǎn)間一致性域內(nèi)的處理。本例中假設(shè)沒有其他節(jié)點(diǎn)持有同地址數(shù)據(jù)副本而無需進(jìn)行節(jié)點(diǎn)間一致性域的處理。本地內(nèi)存代理引擎LPE (432)的根代理HP (424)向本地內(nèi)存代理引擎LPE (432)的cache緩存代理CP (422)轉(zhuǎn)發(fā)請(qǐng)求; 本地內(nèi)存代理引擎LPE (432)的cache緩存代理CP (422)根據(jù)訪存地址確定其屬于節(jié)點(diǎn)Node2 (434)的物理子域Dom2 (416)內(nèi)處理器P2 (405)管理的內(nèi)存模塊MEM2 (411)數(shù)據(jù),所以向處理器P2 (405)發(fā)出請(qǐng)求。節(jié)點(diǎn)Node2 (434)的處理器P2 (405)接收到訪存請(qǐng)求,經(jīng)過處理后,處理器P2(405)向節(jié)點(diǎn)控制器(436)的本地內(nèi)存代理引擎LPE (432)返回?cái)?shù)據(jù)及其一致性狀態(tài)。節(jié)點(diǎn)控制器(436)的本地內(nèi)存代理引擎LPE (432)的cache緩存代理CP (422)接收到返回的數(shù)據(jù)及其一致性狀態(tài),并轉(zhuǎn)發(fā)給本地內(nèi)存代理引擎LPE (432)的根代理HP(424)。節(jié)點(diǎn)控制器(436)的本地內(nèi)存代理引擎LPE (432)的根代理HP (424)接收到返回的數(shù)據(jù)及其一致性狀態(tài),在本地內(nèi)存目錄LDIR (430)中記錄節(jié)點(diǎn)I (433)持有該數(shù)據(jù)副本及其一致性狀態(tài)。節(jié)點(diǎn)控制器(436)的本地內(nèi)存代理引擎LPE (432)的根代理HP (424)向節(jié)點(diǎn)I (433)的遠(yuǎn)端內(nèi)存代理引擎RPE (427)返回?cái)?shù)據(jù)及其一致性狀態(tài)。節(jié)點(diǎn)控制器(435)的遠(yuǎn)端內(nèi)存代理引擎RPE (427)的cache緩存代理CP (419)接收到返回的數(shù)據(jù)及其一致性狀態(tài),向遠(yuǎn)端內(nèi)存代理引擎RPE (427)的根代理HP (417)轉(zhuǎn)發(fā)。節(jié)點(diǎn)控制器(435)的遠(yuǎn)端內(nèi)存代理引擎RPE (427)的根代理HP (417)在遠(yuǎn)端數(shù)據(jù)目錄RDIR (425)中記錄Doml的處理器Pl持有數(shù)據(jù)副本及其持有狀態(tài),然后向請(qǐng)求者Doml的處理器Pl (401)返回?cái)?shù)據(jù)及其一致性狀態(tài),完成該請(qǐng)求的處理。如圖5所示,其中包括數(shù)據(jù)偵聽(snoop)消息的處理。圖5中節(jié)點(diǎn)I (533)的處理器P2 (502)屬于節(jié)點(diǎn)Nodel (533)的物理子域Dom2 (514),P2處理器(502)訪問同一物理子域Dom2 (514)中處理器P3 (503)的內(nèi)存模塊MEM3 (509)數(shù)據(jù)。一種典型的處理過程為
節(jié)點(diǎn)Nodel (533)的處理器P2 (502)執(zhí)行訪存操作時(shí)在處理器內(nèi)部未命中cache緩存,根據(jù)訪存地址,處理器P2 (502)可知該地址屬于本地節(jié)點(diǎn)Nodel (533)的P3處理器(503)管理的內(nèi)存模塊MEM3 (509)。由于P3處理器(503)與P2 (502)同處于一個(gè)物理子域Dom2 (514),所以處理器P2 (502)可以直接訪問內(nèi)存模塊MEM3 (509)。處理器P2 (502)向處理器P3 (503)直接發(fā)送訪存請(qǐng)求;
處理器P3 (503)接收到訪存請(qǐng)求,發(fā)現(xiàn)節(jié)點(diǎn)控制器I (535)代表本物理子域外其它處理器持有數(shù)據(jù)副本;根據(jù)接收到的訪存請(qǐng)求類型,處理器P3 (503)向節(jié)點(diǎn)控制器I (535)的本地內(nèi)存代理引擎LPE (528)的cache緩存代理CP (518)發(fā)送數(shù)據(jù)偵聽(Snoop)消息。節(jié)點(diǎn)控制器I (535)的本地內(nèi)存代理引擎LPE (528)的cache緩存代理CP (518)接收到數(shù)據(jù)偵聽消息,向節(jié)點(diǎn)控制器I (535)的本地內(nèi)存代理引擎LPE (528)的根代理HP(520)轉(zhuǎn)發(fā)該消息。節(jié)點(diǎn)控制器I (535)的本地內(nèi)存代理引擎LPE (528)的根代理HP (520)接收到數(shù)據(jù)偵聽消息,查詢本地?cái)?shù)據(jù)目錄LDIR (526)。本例中假設(shè)本地?cái)?shù)據(jù)目錄LDIR (526)顯示節(jié)點(diǎn)I (533)的其它物理子域中的處理器(本例中為物理子域Doml中的處理器)和遠(yuǎn)端節(jié)點(diǎn)2 (534)內(nèi)的處理器持有該數(shù)據(jù)副本。則本地代理引擎LPE (528)的根代理HP (520)向本節(jié)點(diǎn)控制器(535)遠(yuǎn)端代理引擎RPE (527)的cache緩存代理CP (519)轉(zhuǎn)發(fā)數(shù)據(jù)偵聽消息,以處理本地節(jié)點(diǎn)Nodel (533)內(nèi)Doml (513)中的數(shù)據(jù)副本;另外,本地代理引擎LPE(528)的根代理HP (520)向遠(yuǎn)端節(jié)點(diǎn)Node2 (534)遠(yuǎn)端代理引擎RPE (531)的cache緩存代理CP (523)發(fā)送數(shù)據(jù)偵聽消息,以處理遠(yuǎn)端節(jié)點(diǎn)Node2 (534)內(nèi)的數(shù)據(jù)副本。節(jié)點(diǎn)控制器I (535)的遠(yuǎn)端內(nèi)存代理引擎RPE (527)的cache緩存代理CP (519)接收到發(fā)送的數(shù)據(jù)偵聽消息,將該消息轉(zhuǎn)發(fā)給遠(yuǎn)端內(nèi)存代理引擎RPE (527)的根代理HP(517);
節(jié)點(diǎn)控制器I (535)的遠(yuǎn)端內(nèi)存代理引擎RPE (527)的根代理HP (517)接收到該消息,查詢遠(yuǎn)端數(shù)據(jù)目錄RDIR (525),以判斷本地節(jié)點(diǎn)(533)內(nèi)物理子域Doml (513)中的處理器是否持有數(shù)據(jù)副本。本例中假設(shè)本地節(jié)點(diǎn)(533)物理子域Doml (513)中的處理器Pl(501)持有該數(shù)據(jù)副本,則節(jié)點(diǎn)控制器I (535)的遠(yuǎn)端內(nèi)存代理引擎RPE (527)的根代理HP (517)向物理子域Doml (513)內(nèi)的處理器Pl (501)發(fā)送數(shù)據(jù)偵聽消息。處理器Pl (501)接收到數(shù)據(jù)偵聽消息,根據(jù)其類型更新數(shù)據(jù)副本狀態(tài),然后向節(jié)點(diǎn)控制器I (535)內(nèi)遠(yuǎn)端數(shù)據(jù)引擎RPE (527)的根代理HP (517)返回應(yīng)答消息。節(jié)點(diǎn)控制器I (535)內(nèi)遠(yuǎn)端內(nèi)存代理引擎RPE (527)的根代理HP (517)在收集全本地節(jié)點(diǎn)內(nèi)所有應(yīng)答消息后(在本例中,僅有物理子域Doml (513)內(nèi)的處理器Pl (501)持有數(shù)據(jù)副本),向遠(yuǎn)端數(shù)據(jù)引擎RPE (527)的cache緩存代理CP (519)轉(zhuǎn)發(fā)數(shù)據(jù)偵聽消息的應(yīng)答。節(jié)點(diǎn)控制器I (535)內(nèi)遠(yuǎn)端內(nèi)存代理引擎RPE (527)的cache緩存代理CP (519)向節(jié)點(diǎn)控制器I (535)內(nèi)本地內(nèi)存代理引擎LPE (528)的根代理HP (520)發(fā)送應(yīng)答消息。節(jié)點(diǎn)控制器I (535)內(nèi)本地內(nèi)存代理引擎LPE (528)的根代理HP (520)接收到遠(yuǎn)端內(nèi)存代理引擎RPE (527)的cache緩存代理CP (519)發(fā)送的應(yīng)答消息,則本地節(jié)點(diǎn)Nodel (533)的偵聽過程完成。在處理本地節(jié)點(diǎn)Nodel (533)的偵聽過程中,節(jié)點(diǎn)控制器2 (536)的遠(yuǎn)端內(nèi)存代理引擎RPE (531)的cache緩存代理CP (523)接收到節(jié)點(diǎn)控制器I (535)的本地內(nèi)存代理引擎LPE (528)的根代理HP (520)發(fā)送的數(shù)據(jù)偵聽消息,將該消息轉(zhuǎn)發(fā)給節(jié)點(diǎn)控制器2(536)的遠(yuǎn)端內(nèi)存代理引擎RPE (531)的根代理HP (521);
節(jié)點(diǎn)控制器2 (536)的遠(yuǎn)端內(nèi)存代理引擎RPE (531)的根代理HP (521)接收到數(shù)據(jù)偵聽消息,查詢遠(yuǎn)端數(shù)據(jù)目錄RDIR (529),以判斷本地節(jié)點(diǎn)(534)內(nèi)各個(gè)物理子域中的處理器是否持有數(shù)據(jù)副本。本例中假設(shè)節(jié)點(diǎn)2 (534)物理子域Doml (515)中的處理器Pl (504)持有該數(shù)據(jù)副本,則節(jié)點(diǎn)控制器2 (536)的遠(yuǎn)端內(nèi)存代理引擎RPE (531)的根代理HP (521)向物理子域Doml (515)內(nèi)的處理器Pl (504)發(fā)送數(shù)據(jù)偵聽消息。處理器Pl (504)接收到數(shù)據(jù)偵聽消息,根據(jù)其類型更新內(nèi)部數(shù)據(jù)副本狀態(tài),然后向節(jié)點(diǎn)控制器2 (536)內(nèi)遠(yuǎn)端數(shù)據(jù)引擎RPE (531)的根代理HP (521)返回應(yīng)答消息。節(jié)點(diǎn)控制器2 (536)內(nèi)遠(yuǎn)端內(nèi)存代理引擎RPE (531)的根代理HP (521)在收集全本地節(jié)點(diǎn)內(nèi)所有應(yīng)答消息后,向遠(yuǎn)端數(shù)據(jù)引擎RPE (531)的cache緩存代理CP (523)轉(zhuǎn)發(fā)應(yīng)答消息。節(jié)點(diǎn)控制器2 (536)內(nèi)遠(yuǎn)端內(nèi)存代理引擎RPE (531)的cache緩存代理CP (523)向節(jié)點(diǎn)控制器I (535)內(nèi)本地內(nèi)存代理引擎LPE (528)的根代理HP (520)發(fā)送應(yīng)答消息。節(jié)點(diǎn)控制器I (535)本地內(nèi)存代理引擎LPE (528)的根代理HP (520)接收到節(jié)點(diǎn)控制器2 (536)遠(yuǎn)端內(nèi)存代理引擎RPE (531)的cache緩存代理CP (523)發(fā)送的應(yīng)答消息。節(jié)點(diǎn)控制器I (535)本地內(nèi)存代理引擎LPE (528)的根代理HP (520)收集完所有應(yīng)答消息,然后更新本地?cái)?shù)據(jù)目錄LDIR (526),并向本地內(nèi)存代理引擎LPE (528)的cache緩存代理CP (518)轉(zhuǎn)發(fā)應(yīng)答消息。節(jié)點(diǎn)控制器I (535)本地內(nèi)存代理引擎LPE (528)的cache緩存代理CP (518)向物理子域Dom2 (514)內(nèi)的處理器P3 (503)發(fā)送應(yīng)答消息。處理器P3 (503)收到應(yīng)答后,更新其內(nèi)部目錄信息,并向請(qǐng)求者處理器P2 (502)發(fā)送數(shù)據(jù)。目錄格式設(shè)計(jì)如圖6所示
遠(yuǎn)端內(nèi)存代理引擎RPE中遠(yuǎn)端內(nèi)存目錄RDIR記錄的信息按訪存地址分為兩部分
(1)遠(yuǎn)端地址在本地節(jié)點(diǎn)各物理子域的數(shù)據(jù)共享者信息記錄本地節(jié)點(diǎn)內(nèi)各個(gè)物理子域中各處理器是否持有數(shù)據(jù)副本及其一致性狀態(tài);
(2)本地地址在本地節(jié)點(diǎn)各物理子域的數(shù)據(jù)共享者信息假設(shè)本地節(jié)點(diǎn)由DomfDomn共計(jì)n個(gè)物理子域組成,則對(duì)于物理子域Dom i (i = 1,2,..,n)中處理器管理的內(nèi)存數(shù)據(jù),RDIR記錄本地節(jié)點(diǎn)內(nèi)物理子域Dom j (j = 1,2,…,n且j ! =i )內(nèi)的處理器是否持有該數(shù)據(jù)副本及其一致性狀態(tài)。本地內(nèi)存代理引擎LPE中本地內(nèi)存目錄LDIR (如圖6(b)所示)記錄的信息表示本地節(jié)點(diǎn)內(nèi)某一物理子域的內(nèi)存數(shù)據(jù)是否被遠(yuǎn)端節(jié)點(diǎn)或本節(jié)點(diǎn)其它物理子域緩存。
本地、遠(yuǎn)端目錄也可整合為統(tǒng)一的目錄結(jié)構(gòu)(UDIR),如圖6(c)所示。UDIR目錄項(xiàng)記錄除本物理子域的處理器外系統(tǒng)其它所有處理器持有數(shù)據(jù)副本信息及一致性狀態(tài)信息。如圖7所示,節(jié)點(diǎn)控制器(712)可以支持多個(gè)物理子域。節(jié)點(diǎn)控制器(712)的各處理器接口屬于哪個(gè)物理子域可以進(jìn)行配置。對(duì)于每個(gè)處理器接口,通過為接口配置物理子域標(biāo)識(shí)寄存器(709,710,711)來指明該處理器接口所屬的物理子域。節(jié)點(diǎn)控制器的處理器接口物理子域標(biāo)識(shí)寄存器(709,710,711)既可以在系統(tǒng)啟動(dòng)時(shí)配置,也可以在系統(tǒng)運(yùn)行過程中配置。除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。
權(quán)利要求
1.一種具有多cache —致性域的多處理器節(jié)點(diǎn)系統(tǒng)構(gòu)建方法,其特征在于在多處理器節(jié)點(diǎn)系統(tǒng)中,在每個(gè)節(jié)點(diǎn)的控制器內(nèi)部構(gòu)建一個(gè)統(tǒng)一的邏輯cache —致性域,然后由若干處理器與該節(jié)點(diǎn)控制器組成相互隔離的多物理cache —致性域;包括cache —致性域的組建方式、cache 一致性域劃分方式和目錄結(jié)構(gòu)方式;其中 (1)多物理cache—致性域的組建方式包括 1)一級(jí)節(jié)點(diǎn)間通過節(jié)點(diǎn)控制器直接連接或經(jīng)過節(jié)點(diǎn)路由器連接,組成一級(jí)節(jié)點(diǎn)間的單一 cache 一致性域; 2)通過一級(jí)節(jié)點(diǎn)控制器直接連接二級(jí)節(jié)點(diǎn)控制器,并在二級(jí)節(jié)點(diǎn)控制器內(nèi)部構(gòu)建一個(gè)統(tǒng)一的邏輯cache —致性域,該cache —致性域完全包含彼此隔離的由若干一級(jí)節(jié)點(diǎn)控制器和二級(jí)節(jié)點(diǎn)控制器組成的多物理cache —致性域; 3)二級(jí)節(jié)點(diǎn)間通過二級(jí)節(jié)點(diǎn)控制器直接連接或經(jīng)過節(jié)點(diǎn)路由器連接,組成二級(jí)節(jié)點(diǎn)間的單一 cache —致性域; 4)基于I)-3)的方式擴(kuò)展到n (n>2)級(jí)節(jié)點(diǎn),從而實(shí)現(xiàn)更多級(jí)節(jié)點(diǎn)多處理器系統(tǒng); (2)cache 一致性域劃分方式包括 1)對(duì)于一級(jí)節(jié)點(diǎn)控制器,與處理器相連接的各個(gè)端口信息,作為由若干處理器和該節(jié)點(diǎn)控制器組成的物理cache —致性域域?qū)傩畔碓?,每個(gè)端口域信息寄存器標(biāo)識(shí)該端口的物理子域,端口域信息寄存器根據(jù)系統(tǒng)要求配置各端口域?qū)傩畔?,從而?shí)現(xiàn)由若干處理器和該節(jié)點(diǎn)控制器組成的各個(gè)物理cache —致性域劃分; 2)對(duì)于二級(jí)節(jié)點(diǎn)控制器,與一級(jí)節(jié)點(diǎn)控制器相連接的各個(gè)端口信息作為由若干一級(jí)節(jié)點(diǎn)控制器和該二級(jí)節(jié)點(diǎn)控制器組成的物理cache —致性域域?qū)傩畔碓?,根?jù)系統(tǒng)要求配置各端口域?qū)傩畔亩鴮?shí)現(xiàn)由若干一級(jí)節(jié)點(diǎn)控制器和該二級(jí)節(jié)點(diǎn)控制器組成的各個(gè)物理cache 一致性域劃分; 3)采用方式2)描述的二級(jí)節(jié)點(diǎn)控制器端口域?qū)倥渲梅绞脚渲闷鋘級(jí)(n>2)節(jié)點(diǎn)控制器端口域?qū)伲? (3)目錄結(jié)構(gòu)方式 1)一級(jí)節(jié)點(diǎn)控制器采用本地和遠(yuǎn)端雙目錄結(jié)構(gòu),對(duì)于遠(yuǎn)端數(shù)據(jù)目錄,目錄項(xiàng)記錄本地節(jié)點(diǎn)內(nèi)持有統(tǒng)一數(shù)據(jù)副本的處理器及其域?qū)傩畔ⅰ⒁恢滦誀顟B(tài)信息;而對(duì)于本地?cái)?shù)據(jù)目錄,目錄項(xiàng)記錄持有數(shù)據(jù)副本的遠(yuǎn)端節(jié)點(diǎn)及其一致性狀態(tài)信息,同時(shí)設(shè)置標(biāo)志位指示本地節(jié)點(diǎn)內(nèi)不同于數(shù)據(jù)所在物理子域的其它子域是否持有該數(shù)據(jù)副本; 2)二級(jí)節(jié)點(diǎn)控制器采用本地和遠(yuǎn)端雙目錄結(jié)構(gòu),對(duì)于遠(yuǎn)端數(shù)據(jù)目錄,目錄項(xiàng)記錄本地二級(jí)節(jié)點(diǎn)內(nèi)持有統(tǒng)一數(shù)據(jù)副本的一級(jí)節(jié)點(diǎn)及其域?qū)傩畔?、一致性狀態(tài)信息;而對(duì)于本地?cái)?shù)據(jù)目錄,目錄項(xiàng)記錄持有統(tǒng)一數(shù)據(jù)副本的遠(yuǎn)端二級(jí)節(jié)點(diǎn)及其一致性狀態(tài)信息,同時(shí)設(shè)置標(biāo)志位指示本地二級(jí)節(jié)點(diǎn)內(nèi)不同于數(shù)據(jù)所在物理子域的其它子域是否持有該數(shù)據(jù)副本; 3)采用方式2)描述的二級(jí)節(jié)點(diǎn)控制器目錄結(jié)構(gòu)方式配置其n級(jí)(n>2)節(jié)點(diǎn)控制器目錄結(jié)構(gòu); 4)一級(jí)節(jié)點(diǎn)控制器采用本地/遠(yuǎn)端統(tǒng)一目錄結(jié)構(gòu),目錄項(xiàng)記錄除本物理子域的處理器夕卜,系統(tǒng)所有處理器持有統(tǒng)一數(shù)據(jù)副本信息及一致性狀態(tài)信息; 5)二級(jí)節(jié)點(diǎn)控制器采用本地/遠(yuǎn)端統(tǒng)一目錄結(jié)構(gòu),目錄項(xiàng)記錄除本物理子域的一級(jí)節(jié)點(diǎn)控制器外,系統(tǒng)所有一級(jí)節(jié)點(diǎn)控制器持有統(tǒng)一數(shù)據(jù)副本信息及一致性狀態(tài)信息;6)采用方式5)的二級(jí)節(jié)點(diǎn)控制器目錄結(jié)構(gòu)方式配置其n級(jí)(n>2)節(jié)點(diǎn)控制器目錄結(jié) <構(gòu)。
全文摘要
本發(fā)明提供一種具有多cache一致性域的多處理器節(jié)點(diǎn)系統(tǒng)構(gòu)建方法,在本系統(tǒng)中,節(jié)點(diǎn)控制器內(nèi)建立的目錄需包含處理器域?qū)傩畔?,該信息可通過配置節(jié)點(diǎn)控制器與處理器相連的各個(gè)端口的cache一致性域?qū)傩垣@得。本發(fā)明可以使一個(gè)節(jié)點(diǎn)控制器支持節(jié)點(diǎn)內(nèi)多個(gè)物理cache一致性域。其目的在于減少多處理器計(jì)算機(jī)系統(tǒng)中節(jié)點(diǎn)控制器的數(shù)量,減小節(jié)點(diǎn)間互連的規(guī)模,降低節(jié)點(diǎn)間拓?fù)鋸?fù)雜度,以提升系統(tǒng)效率;同時(shí)也可以解決處理器互連端口數(shù)目和能夠支持的域內(nèi)處理器ID數(shù)量非常有限對(duì)構(gòu)建大規(guī)模CC-NUMA系統(tǒng)帶來的性能瓶頸問題。
文檔編號(hào)G06F15/167GK103049422SQ20121054497
公開日2013年4月17日 申請(qǐng)日期2012年12月17日 優(yōu)先權(quán)日2012年12月17日
發(fā)明者王恩東, 胡雷鈞, 陳繼承, 張東, 公維鋒, 張峰 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司