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