使用全局窺探向單個相干系統中的分布式計算機節點提供高速緩存一致性的方法和設備的製作方法
2023-05-10 21:55:16 3
專利名稱:使用全局窺探向單個相干系統中的分布式計算機節點提供高速緩存一致性的方法和設備的製作方法
技術領域:
一般來說,本發明涉及計算機數據高速緩存方案,具體來說,涉及當系統利用能夠被配置為系統中的單獨的,獨立的節點的多個數據處理器時,用於維護具有分布式共享存儲器的系統內的各個存儲器之間的一致性的方法和設備,所述系統利用跨各種節點分布的不均勻的存儲器存取(NUMA)或系統存儲器。
背景技術:
在利用以協調的方式同時操作的一個以上的處理器的計算機系統設計中,可以在物理上配置的或與一個這樣的處理器組關聯的系統存儲器可以被這樣的系統中的其他處理器或處理器組進行訪問。由於在數據處理系統內需要較大的處理能力,並由於希望具有相對少的微處理器作為多處理系統合作地操作共享系統組件,最近幾年一直有人在嘗試解決維護存儲器設備(當系統節點包括多個共享節點本地的資源和/或硬體設備的處理器時,存儲器設備可以由一個以上的處理或一個以上的系統節點進行訪問)之間的一致性所固有的問題。
一致性問題由一個系統來進行示範,在該系統中,使用互連的縱橫開關(crossbar)通信信道連接多個存儲器設備,每一個存儲器設備都與關聯的處理器或構成多處理器系統的本地處理器組配套。來自處理器或充當這樣的多節點系統中的一個節點的處理器組的讀取或寫入數據請求可以被定向到與發出請求的處理器關聯的存儲器設備內的地址或與系統內的另一個處理器組關聯的存儲器的地址。每一個處理器組還與本地高速緩存關聯。由於每一個處理器組都具有關聯的高速緩存,每一個高速緩存可能具有一個以上的級別,因此,必須小心,以確保在整個系統中維護的數據的一致性。
確保維護一致性的一種方式是跟蹤目錄(或寄存器)中的每一項數據的狀態,所述目錄(或寄存器)指向數據所在的每一個非本地高速緩存。通過知道數據的每一個副本的位置,每一個副本都可以更新,或者在寄存器內作出記號,以表示一個或多個位置的數據沒有過期。這樣的寄存器或表需要指向正在高速緩存數據的多個節點的指針。由於組件延遲並因為某些系統在等待來自其他系統處理器本地的其他存儲器子系統的數據狀態指示符時同時處理多個數據行的能力沒有完全得到利用,所有這些都具有使系統速度和性能減慢的效果。
在相關技術的專利中,維護指向每一個節點內特定的數據項的每一個副本的一個表所存在的問題是,它增大了這樣的表內的目錄條目的複雜性和寬度,使表變得相對大和複雜。
授權給Luick等人的No.6,088,769美國專利說明了通過組合的本地和全局表所解決的多處理器高速緩存一致性。儘管此引用定義了單一的全局窺探方案,但是,它依賴單一的目錄,和L1和L2高速緩存過濾器數據引用,以便只有這樣的引用中的某些引用到達中心全局控制單位。Luick沒有說明多處理器系統中的所有處理器的所有數據引用的全局窺探,通過單個級別中央控制設備進行,所述單個級別中央控制設備便於在多節點處理器系統中的多個節點之間進行通信。此外,儘管Luick說明了對照特定的節點本地的專用目錄的校驗數據引用,但它沒有講述單一的全局高速緩存一致性表中的校驗數據引用。此外,Luick引用描述了生成數據標記或引用的單處理器中的高速緩存一致性的處理方法,但是,沒有講述在生成一個節點中的數據標記的多處理器群集中的用途,所述節點包含其自己的可以作為獨立處理系統起作用的存儲器和輸入/輸出功能,無需通過中央控制設備進行通信,所述中央控制設備還作為到其他獨立處理器節點的通信信道起作用。
頒發給Fu的No.6,065,077美國專利講述了共享數據高速緩存的方法,其中,所有存儲器和處理器設備單獨地連接到流量控制單元,所述流量控制單元充當處理器和存儲器元件之間的縱橫開關,並與其他縱橫開關或通信系統進行通信,而其他縱橫開關或通信系統本身也控制它們的子系統組件。Fu沒有講述用於跨多處理器系統協調數據的系統,所述多處理器系統本身利用一個組或節點內的多處理器,所述節點能夠在必要時獨立於中央控制設備或縱橫開關系統進行操作。Fu所提供的方法要求對存儲器的所有引用都得到滿足,方法是將來自存儲器單元的數據通過充當縱橫開關的流量控制設備傳輸到正在請求數據的處理單元。Fu沒有講述這樣的系統,處理器請求的數據可以完全由正在請求這樣的數據的特定節點的本地存儲器來滿足,也沒有講述這樣的方法,通過這樣的方法只有具有一致性影響的數據請求在節點之間進行傳輸。
在頒發給Arimilli等人的No.5,943,685美國專利中提供了另一個引用,該引用說明了跟蹤整個系統中的各個高速緩存中維護的數據的其他方法,該發明提供了共享的高速緩存之間的單個數據提供者的共享幹預的方法。頒發給Hoover等人的No.5,604,882美國專利描述了高速緩存用於從對等高速緩存單元到多處理器系統中的全局存儲控制單元的空白通知的系統和方法。相關的背景技術沒有說明使用中心通信或控制設備的方法,所述中心通信或控制設備將來自一個節點的結果轉發到多節點系統中的另一個節點,所採用的方法應是同時向第一節點提供讀取請求,向第二節點提供寫入請求,讀取請求的結果傳遞到第二節點,而不必經過中央控制或通信設備,所述中央控制或通信設備將數據標記和地址信息傳遞到各個節點。
相應地,本發明的目標是提供一種用於維護多處理器系統內的多個高速緩存中存儲的數據的一致性的系統和方法,所述系統和方法利用中心標記和地址縱橫開關作為中心通信通道,其特徵在於,不需要中心設備來維護系統中的掛起的與高速緩存相關的數據請求的瞬變或瞬變狀態。本發明的另一個目標是提供一種用於維護至少具有兩個節點的多處理器系統內的多個高速緩存中存儲的數據的一致性的系統和方法,其特徵在於,向數據請求者節點返回這樣的來自存儲了被請求的數據的目標節點的請求的結果,而不必經過中央控制設備的處理。
本發明的還有另一個目標是提供位於多節點多處理器系統內的單獨的節點中的多個高速緩存中存儲的數據的一致性的系統和方法,所述系統和方法利用數據標記和地址縱橫開關控制和通信設備,其特徵在於,從第一節點到第二節點的標記或地址信息的中心設備控制通信同時向第一節點發送讀取請求,向第二節點發送數據寫入請求,數據讀取請求的結果被傳遞這樣的第二節點,而不必通過標記和地址縱橫開關進行傳輸。
發明內容
本發明提供了利用分布式計算節點的計算機系統中使用的方法和設備,其中,每一個節點都包括一個或多個微處理器,每一個節點都能夠用本地系統存儲器和控制系統獨立地進行操作,其中,所有節點都互相連接,以便作為多節點系統進行操作。該方法用於維護多處理器系統中的高速緩存一致性,所述多處理器系統具有多個由諸如標記和地址縱橫開關系統和數據縱橫開關系統之類的互連通信通道連接的節點。該方法用標記和地址縱橫開關系統進行操作,當系統還包括從任何節點的存儲器系統訪問數據的功能時,所述標記和地址縱橫開關系統能夠存儲有關系統內的數據的位置和狀態。該方法包括下列步驟存儲有關所述互連通道中的數據的狀態的信息;響應請求節點所發出的對被請求的那部分數據的請求,檢查所述存儲信息以判斷被請求的那部分數據的最新的副本的位置;檢索被請求的那部分數據的所述最當前副本,並將所述數據定向到發出請求的節點;檢查所述存儲信息以判斷被請求的數據的位置;然後指示所述系統向發出請求的節點發送所述被請求的數據,而不必經過所述互連通信通道。
該設備包括多處理器系統,所述多處理器系統由兩個或更多節點組成,每一個節點至少一個處理器,每一個節點包括由處理器使用的共享的分布式存儲器系統的一部分。節點由通信通道互相連接,所述通信通道包括在分布式存儲器中存儲跨系統存儲的數據的位置和狀態。優選實施例通過在標記和地址縱橫開關設備中存儲被請求的數據的位置和狀態或其他位置和狀態信息來降低整個系統中的數據流的延遲,所述標記和地址縱橫開關設備同時檢查所有節點中的每一行的高速緩存線狀態。然後基於存儲在標記和地址縱橫開關系統中的這樣的信息向正在請求數據的節點發回適當的回覆,或其他請求,所述標記和地址縱橫開關系統還充當節點之間的通信通道。
通過閱讀本發明的優選實施例的詳細說明,本發明的其他特點和優點將變得顯而易見,說明應結合附圖來閱讀。
圖1是將標記和地址縱橫開關系統與數據縱橫開關系統一起使用的典型的多處理器系統的方框圖,該圖與本發明一起操作,並建議列印在所發專利的第一頁上。
圖2A-2C是連接其中運用了本發明的多處理器系統中的每一個象限或節點的標記和地址縱橫開關系統的方框圖。
圖3是說明一個組的功能組件的一個象限處理器組以及本發明中的高速緩存和遠程高速高速緩存的關係。
圖4A-4D是說明在優選實施例中使用的高速緩存讀取和讀取失效的各種狀態的表。
圖5A-5B是說明優選實施例中使用的系統中的非高速緩存讀取請求的表。
圖6A-6B是說明優選實施例中使用的系統中的非高速緩存寫入請求的表。
圖7是說明對優選實施例中使用的系統中的對存儲器映射的輸入/輸出、CSR和非存儲器目標的讀取和寫入的表。
圖8A-8B是說明優選實施例中使用的系統中的轉出請求的表。
圖9A-9C是用於優選實施例中使用的標記和地址縱橫開關設備的所有輸入和輸出總線的欄位的mnemonics的表,並提供圖4、5、6、7和8中使用的引用。
圖10是遠程高速緩存標記的映射的方框圖。
具體實施例方式
概述具體來說,本發明涉及多處理器系統中使用的改善的數據處理方法,所述多處理器系統配置了兩個或多個獨立的處理節點,利用標記和地址縱橫開關系統並與數據縱橫開關系統結合使用,一起包括數據處理系統,以處理跨節點的多個數據讀取和寫入請求。在這樣的系統中,特定的處理器或節點不能知道在其他節點上存在的數據的高速緩存線狀態,它們需要訪問其他節點的存儲器內的這樣的數據的最當前副本,才能使系統一致地操作。在這樣的多節點系統中,必須保證數據高速緩存線對於請求給定數據高速緩存線的微處理器或節點來說是最新的,採用獲得保證全系統範圍的高速緩存一致性的方法。這裡所說明的系統在允許系統中的任何節點訪問某一高速緩存線之前提供對所述高速緩存線的任何請求的序列化的層次結構,以便在系統中的可能在一起操作的所有節點中維護高速緩存一致性。
這裡所描述的方法和設備利用了全局窺探以提供單一的序列化點。本發明中的全局窺探是這樣來實現的假設系統內的所有節點都將對數據的所有請求傳遞到集中式控制器,所述集中式控制器與系統中的每一個節點進行通信,並維護集中的高速緩存狀態標記。中央控制器是一個連接節點的數據標記和地址縱橫開關系統,同時檢查所有節點的每一行的高速緩存狀態標記,並向正在請求數據的節點發出適當的回覆。控制器還向其他節點生成其他請求,以便維護高速緩存一致性並在適當的情況下提供被請求的數據。
優選實施例將與一個或多個微處理器的每一個節點關聯的系統的所有存儲器空間劃分為每一個節點的本地和遠程類別。每一個節點都擁有整個系統中的全部存儲器空間的唯一的部分,被定義為該節點的本地部分。全部的系統存儲器正好由系統中的一個節點集合擁有。任何高速緩存線的本地和遠程類別是互相排斥的,因此,系統中的對於節點來說不是本地的所有高速緩存線都被定義為對該節點來說是遠程的。本發明為系統的每一個節點提供了三級遠程高速緩存支持,其特徵在於,每一個節點都高速緩存控制器指定的遠程數據線。與每一個節點或處理器組關聯的每一個存儲器板本身分為本地存儲器,存儲器的一部分被定義為遠程高速緩存。被定義為遠程高速緩存的每一個本地存儲器系統的那一部分作為三級高速緩存操作。本發明通過為系統提供一個裝置,以預先知道被請求的線是位於特定的節點的本地存儲器中,或者,還是位於正在高速緩存另一個節點的本地存儲器的被定義為遠程高速緩存的本地存儲器的部分,從而提供對被請求的數據線的預期。
本說明書假設當發出對數據的請求時系統中的每一個節點都可以從本地存儲器或遠程高速高速緩存請求數據,由於控制器知道在哪一個類別中定義了線,當控制器完成其一致性檢查時控制器可以驗證或拒絕預期的數據線的使用。如果預期的並預先讀取的主題數據線是一致的,那麼,請求數據的節點可以使用該線。如果線不一致,那麼,控制器會將請求轉發到適當的節點,發出請求的節點丟棄預期的數據線,並由於控制器發出的請求使用線返回代替。
使用遠程高速緩存可以降低高速緩存線的延遲,否則,必須從系統中的另一個節點獲取。所說明的遠程高速緩存的存在提供了一致性狀態,通過允許「髒」高速緩存線作為只讀副本在節點中存在,從而不必進行從節點到節點的數據傳輸。當高速緩存線必須恢復到其原始存儲器位置時,遠程高速緩存中持有的這樣的「髒」只讀高速緩存線的存在延遲了時間,從而增強了這樣的可能性其他高速緩存狀態轉移將清除將高速緩存線恢復到其原始存儲器位置的必要性,從而節省了不必要的系統事務,這些不必要的系統事務會由於消耗系統帶寬而導致延遲。如果這樣的遠程高速緩存清除了這樣的「髒」數據線,並且系統節點清除了該數據線的指定所有者,則控制器將重新分配不同的共享節點作為數據線的新所有者,而不必在系統內進行任何實際數據移動。如果除清除「髒」行的節點之外沒有節點共享數據,那麼該行將恢復到其存儲器位置。
在本發明中,給定計算節點的系統存儲器被定義為分配給系統內的分區的所有節點的集合存儲器,給定節點是所述系統的成員。因此,在存在一個以上的計算節點的分區的系統中,本發明和描述了對跨被定義為系統內的單個分區內操作的節點的系統存儲器的操作,並在此範圍內分配系統存儲器。
優選實施例的詳細信息圖1提供了其中可以使用本發明的典型的多處理器系統的示例。圖1說明了多處理器系統,該系統利用了四個單獨的中央控制系統(控制代理)66,其中每一個控制系統為每個控制代理66的四個Intel牌的Itanium級的微處理器62的陣列64提供了輸入/輸出接口和存儲器控制。在許多應用中,控制代理66是特定用途集成電路(ASIC),這種集成電路是為特定的系統應用程式開發的,以便為每一個微處理器總線76、與給定的控制代理66關聯的每一個存儲器68、PCI接口總線21,PCI輸入/輸出接口80,以及連接到各種PCI設備的關聯的PCI總線74提供接口。每一個微處理器的總線76通過總線61連接到控制代理66。每一個PCI接口總線21都通過PCI接口塊總線20連接到每一個控制代理66。
圖1還說明了標記和地址縱橫開關70以及數據縱橫開關72之間的埠連接。從圖1所示的方框圖中可以理解,縱橫開關70和縱橫開關72允許在每一個控制代理66之間進行通信,以便地址信息和記憶線和寫入信息可以跨整個多處理器系統60進行傳送。這樣的存儲器尋址系統跨系統地傳送數據位置,並促進控制代理66有關數據有效性和所需數據位置的高速緩存信息的更新。
單一節點或「象限」處理器組58包括微處理器62、存儲器68和控制代理66。在本發明涉及的多處理器系統中,象限存儲器68通常是隨機存取存儲器(RAM),可以作為本地控制代理的本地或主存儲器。特定的存儲器68連接到整個系統60中的特定的控制器代理66,但當由不直接連接到與特定控制代理66關聯的特定存儲器68的另一個象限或控制代理66訪問時,被視為遠程存儲器。任何一個象限58中中存在的微處理器62都可以訪問任何其他象限58上的存儲器68。NUMA系統通常將存儲器68分為本地存儲器和遠程存儲器,以便其他象限進行訪問,當數據可以被利用或存儲在位於不同於並因此遠離具有可能發出數據的PCI設備的象限58的另一個象限58上時,本發明增強了整個系統的跟蹤數據的能力。
圖3是以更簡單的視圖顯示的圖1所示的相同的多處理器系統的不同的視圖,說明了相對於其他象限組件以及縱橫開關系統70和72的一個象限58,為簡單起見,在圖3中作為一個單元說明。本發明說明將位於每一個節點或象限58中的存儲器68的某一部分定義為遠程高速緩存79。作為本地存儲器操作的那一部分存儲器68作為與它所關聯的特定象限58的主存儲器操作,而遠程高速緩存79作為存儲器板68的一部分但被定義為遠程高速緩存,作為系統中的其他節點的遠程高速緩存操作。從圖3可以看出,遠程高速緩存79不同於通常與特定的處理器62關聯的高速緩存63。高速緩存63通常在處理器62的同一襯底或晶片上,並可以分成常常被稱為一級(L1)和二級(L2)高速緩存。
標記和地址縱橫開關70和數據縱橫開關72允許四個存儲器控制代理66之間的接口互連作為共享存儲器共同的作業系統實體,或者,如果整個系統被分開以允許圖1中說明的系統內的獨立的作業系統,則分隔為共享存儲器作業系統實例的單獨的實例。標記和地址縱橫開關70通過在位於共同的作業系統實例(分區)中的不同的象限58上的微處理器總線76之間提供數據地址窺探功能,支持這樣的體系結構。為支持窺探活動,標記和地址縱橫開關70在一個分區中的象限58的存儲器控制代理66之間路由請求和響應。每一個分區都具有其自己的不同的象限58的組,沒有哪一個象限可以是一個分區以上的一部分。不同分區的象限不與彼此的存儲器空間進行交互;下面將肯定地描述本發明,系統中的所有象限都在單一的系統分區內進行操作。
標記和地址縱橫開關70跨每一個縱橫開關70總線接收入站請求,如圖1中的埠1的單一的實例41所示。標記和地址縱橫開關70在偶數標記管道52或奇數管道53中處理入站數據請求,如圖2所詳述的,在輸出46中將回復發送到發出請求的象限58,並在必要時將出站數據請求發送到其他標記和地址縱橫開關70輸出總線45、47或48。標記和地址縱橫開關70為其對每一個目標存儲器控制代理66的出站請求以及在必要時向發出請求的節點的清除請求分配事務標識符(TrID)。存儲器控制代理66在適當的時候釋放這樣的TrID以便進行重新分配。標記和地址縱橫開關70響應存儲器控制代理66的對數據的請求不一定完成事務。如果被請求的數據的目標地址對於發出請求的象限58來說是本地的,沒有遠程高速緩存持有線作為修改,那麼標記和地址縱橫開關70以GO作出回答(如圖4、5和6的表所示),存儲器控制代理66使用來自其本地存儲器68的數據來完成對請求數據的處理器62的讀取。
如果數據在另一個象限的遠程高速緩存中進行修改,那麼,標記和地址縱橫開關70以WAIT作出,發出請求的存儲器控制代理66掛起請求,直到數據縱橫開關72提供讀取數據。當標記和地址縱橫開關70發出WAIT回復時,它還向擁有高速緩存線的目標存儲器控制代理66發出出站的讀取請求,包括象限標識符(象限ID)和原始的發出請求的(源)存儲器控制代理66的TrID。此時,目標控制代理66從其存儲器板獲取目標線,並將它發送到數據縱橫開關72,並附帶源象限ID和源TrID。數據縱橫開關72使用源象限ID將數據路由到源控制代理66,在此,它可以通過觀察隨數據返回的源TrID值被提供給發出請求的處理器。
標記和地址縱橫開關70將系統60中的所有請求序列化為兩個地址流,它將這兩個地址流發送到其偶數和奇數標記管道,如圖2所示。圖2為清楚起見分為三個部分,圖2A、2B和2C,但代表一個圖表。每一個管道都將地址發送到外部SRAM遠程高速緩存標記(RCT)以查找全局高速緩存狀態。由於每一個SRAM組件都只存儲其自己的埠的RCT條目,即,其自己的存儲器控制代理66,所有四個SRAM的讀取構成了該索引處的所有四個RCT的讀取。來自不是發出請求的分區的成員埠的條目將被忽略。一個高速緩存線正好是一個象限58的宿主(即,對於其來說,是本地的,或由其擁有),因此,至少一個埠應該產生標記邏輯丟失(標記不匹配或狀態1)。管道內的信息的順序始終被預留。
當標記邏輯57判斷RCT條目必須修改(由於狀態、標記或ECC場),標記和地址縱橫開關70通過位於標記比較器和調度器84和85中的寫入緩衝器向外部SRAM調度一次寫入。為防止衝突,其中,可以查詢新訪問,而寫入在寫入緩衝器中掛起,將窺探寫入緩衝器條目。寫入緩衝器中的窺探命中(有效地址匹配)導致查找停止,寫入緩衝器內容被流出到SRAM。通過標記管道進行的查找最終可能導致標記寫入,因此,還必須對它們進行窺探,對這些條目的窺探命中還導致停頓,直到衝突解決(包括在必要時排放寫入緩衝器)。
標記和地址縱橫開關70通過分配條目和維護它們的系統狀態來管理直接的映射遠程高速緩存。如果一個請求需要RCT條目,而該條目已經在使用中,則老的條目必須清除,此操作在當前技術中有時被稱作轉出。標記和地址縱橫開關70通過向發出了導致清除的請求的控制代理66發出一個失效或讀取失效來完成此項工作(也叫做「煽動者」)。標記和地址縱橫開關70作出的此轉出請求是發送到目標存儲器控制代理66的原始(「煽動者」)請求的補充,並位於其之前。
由於系統被配置了幾乎相同的象限58,因此,整個系統可以作為單一的系統分區或使用所說明的方法分區為四個單獨的分區系統。在優選實施例中,象限58的最大總數是4,如圖1中所說明的那樣。標記和地址縱橫開關70的每一個埠由於其代理66和縱橫開關70之間的物理連接被指派了四個控制代理66中的其中一個。標記和地址縱橫開關70和數據縱橫開關72與每一個控制代理66之間的互連是通過總線71來實現的。如圖1所示的從標記和地址縱橫開關70和數據縱橫開關72到象限1中的控制代理66的連接,總線也被稱為埠。儘管只在象限1中顯示,但是,對於每一個象限58,總線71的配置都是相同的,從如圖1所示的埠0、1、2和3的連接可以看出。總線73是連接控制代理66與標記和地址縱橫開關70的總線71的一部分。總線75是連接數據縱橫開關72與每一個控制代理66的總線71的一部分。圖1中所示的系統的每一個象限,通過標記和地址縱橫開關70以及數據縱橫開關72並通過被定義為埠的通道傳遞到系統的其餘部分。端0、1、2和3都顯示在圖1上,通過每一個埠的輸入和輸出部分將縱橫開關系統與控制代理66互連,將每一個縱橫開關與每一個給定的象限互連。圖1中的所有象限58利用圖1的埠1中所示的互連總線71以類似的方式連接,從圖中可以看出。包括將縱橫開關與每一個象限58互連的埠的縱橫開關系統基本上是連接處理節點的通信通道。圖2說明了如圖1所示的標記和地址縱橫開關70的內部邏輯。埠0的輸入40、埠1的輸入41、埠2的輸入42,以及埠3的輸入43說明了每一個象限或節點中的每一個控制代理66到標記和地址縱橫開關70的通信通道的一部分。同樣,圖2說明了埠0輸出45、埠1輸出46、埠2輸出47和埠3輸出48,這些也在如圖1所示的整個系統方框圖中進行了顯示。圖81(a)和81(b)中顯示了與標記和地址縱橫開關70一起起作用的標記查詢寄存器。寄存器81(a)和81(b)是相同的,只是它們與偶數管道和奇數管道關聯,用於進行標記處理,如圖2中所示。提供了雙管道設計,通過將偶數標記指派給偶數管道,將奇數標記指派給奇數管道,以便可以同時進行處理,以降低系統中的延遲。
輸入40、41、42和43都通過緩衝區引入,並可操作地連接到偶數輸入多路復用器50,以及奇數輸入多路復用器51,並根據與輸入標記的偶數或奇數關係,選擇適當的多路復用器。每一個多路復用器50和51用於序列化來自四個輸入的標記流。多路復用器50和51的輸出發送到另一個多路復用器,最終發送到標記查詢寄存器81(a)和81(b)。偶數管道邏輯52和奇數管道邏輯53評估所提供的標記和請求類型,以為連接到其分區內定義的象限的埠生成輸出響應和請求。所產生的輸出條目被高速緩存在調度緩衝區54和55中,所述調度緩衝區是先進先出(FIFO)類型的緩衝區。調度緩衝區54和55消除所顯示的標記邏輯和輸出選擇邏輯之間的時間差異。條目按先進先出的順序存儲在調度緩衝區54和55中,直到它們可以發送到目標埠,作為輸出45、46、47或48,代表了到每一個埠或象限的一個輸出。
標記查詢寄存器81(a)和81(b)在配置方面相同,由四個同步靜態隨機存取存儲器(SSRAM)晶片構成,總共四個,每一個都是512 kbit x 16位。標記查詢寄存器81(a)通過線路82(a)連接到偶數標記比較器和調度器84。儘管在圖2中顯示了一個連接,但是連接82(a)實際上是四個通路,每一個都對應於來自每一個埠的輸入0、1、2和3,如圖所描述。通過連接82(b)連接到奇數標記比較器和調度器85的寄存器81(b)在功能上基本上是相同的。通路82(b)同樣由四個通路組成,每一個都對應於一個埠。標記查詢寄存器81(a)和81(b)是與標記和地址縱橫開關70連接的外部存儲器,用於存儲整個系統中的所有遠程高速緩存標記的標記和狀態信息。這樣的信息不能直接由存儲器控制代理66進行訪問,因此控制代理66中生成的所有可高速緩存的事務必須訪問縱橫開關70以訪問縱橫開關70以訪問或「窺探」縱橫開關70的遠程高速緩存標記(RCT)。圖10所示的方框圖中說明了寄存器81(a)和81(b)的物理配置。如圖10所示,寄存器81(a)和81(b)是以同步靜態隨機存取存儲器晶片(SSRAM)實現的,所述晶片以縱橫開關70的內部時鐘頻率進行操作,在本發明中是133MHz。從圖10中可以看出,有兩組外部SSRAM,這些組被劃分為奇數和偶數管道,如圖2所示。每一組寄存器81(a)、81(b)被分成四個象限,每一個象限都代表縱橫開關70的物理埠。由於在優選實施例中總共有四個埠,如圖1的系統圖所示,可以理解,每一個埠都對應於本發明中的物理象限,如前面所描述。因此,RCT接口的每一個埠都代表物理象限的遠程高速緩存的RCT,如圖10所顯示的,標記查詢寄存器81(a)和81(b)的每一象限區域都包含標記和狀態信息。
現在回到遠程高速緩存,下面將根據優選實施例中的本發明的操作描述下面的表1中顯示的遠程高速緩存狀態。標記和地址縱橫開關70為遠程地址的遠程高速緩存維護了直接映射的高速緩存標記。標記條目具有地址標記部分和狀態部分(還有6個校驗位,以便進行SEC/DED保護)。可能的遠程高速緩存狀態值有I、S或M(代表invalid、shared和modified)。標記和地址縱橫開關70上的每一個埠(埠0、1、2和3,如圖1所示)具有這些高速緩存標記的對應的偶數和奇數標記SRAM陣列。對於共享相同的分區ID的埠,對應的高速緩存標記象限構成了集體的遠程高速緩存標記狀態。標記象限或兩個不同的分區(如果在單獨定義的分區中至少有一個節點操作)彼此之間沒有影響,但SRAM地址插腳的物理共享除外(這會強制訪問序列化)。一個地址的集體的標記狀態是請求者的分區(其標記地址匹配該地址)中的該索引的所有象限的狀態。
如上所述,在本發明中使用的可能的集體的狀態有無效、共享、髒和修改。對於這些集體的狀態1.「無效」表示分區中的所有象限具有I狀態,或者在該索引上標記不匹配;2.「共享」表示,至少一個象限匹配其標記,並在該索引上具有S狀態(但無匹配並具有M狀態);3.「髒」表示,正好一個象限與M狀態匹配,並至少有一個與S狀態的匹配;以及4.「修改」表示,正好一個象限與M狀態匹配,並且所有其他象限都是「無效」。
「髒」狀態意味著,宿主象限58中的存儲器是陳舊的,其狀態為共享(S)或修改(M)的所有象限58都具有一個相同副本,沒有處理器62在其內部高速緩存中具有修改的副本。每當偶數/奇數管道處理偶數/奇數存儲器地址的入站請求時,標記和地址縱橫開關70都對偶數/奇數標記陣列的所有四個標記象限執行讀取訪問。請求和所產生的查詢的處理都可能需要對標記進行更新。防止對高速緩存線進行連續的訪問,而潛在的更新被掛起。存儲器映射輸入/輸出(MMIO)地址和對非存儲器目標的請求不需要查詢,但仍消耗管道階段。
標記和地址縱橫開關70使用信用/釋放(credit/release)機制調節入站請求。控制代理66假設可以發送「信用」數量的請求,當信用消耗完之後將不允許進一步的請求。縱橫開關70以信用釋放返回信用,這將允許重新使用信用。
寫入緩衝器或標記和地址縱橫開關70的標記管道中的地址衝突可以阻止標記管道中的進展,直到衝突解決。缺少TrID可能會延遲管道條目(令牌)從標記邏輯到調度緩衝區54中的移動。如果調度緩衝區54或55已滿,則新的條目無法進入緩衝區。還有某些錯誤(如SEC校正)會將管道停頓一個時鐘。由於這些原因,管道條目可能會在到調度緩衝區54或55的輸入處被延遲,並因此導致管道被阻塞。在TrID不足的情況下,條目被延遲可編程的一段時間)以等待有可用的TrID。如果延遲期已過,則重新嘗試進入。在這種情況下,令牌被轉換為重試並作為對請求者的響應放在調度緩衝區54或55中(錯誤按類似方式進行處理以錯誤令牌替換原始的令牌)。轉換為重試或錯誤允許條目放入調度緩衝區54或55,然後,管道可以前進。這樣的情況取消了可能被調度的任何外部標記更新或可能已經分配的TrID。如果一個條目在到調度緩衝區54或55的輸入處被延遲,那麼,當任何外部標記讀取操作返回到縱橫開關70時需要排隊。當調度緩衝區54或55不阻塞時,這些排隊的讀取結果(叫做「停頓收集器」)必須按照正確的順序插入回管道中。
入站請求只由信用/釋放機制進行調節。入站響應沒有定義。出站請求由目標控制代理66中的TrID的可用性進行調節(根據標記和地址縱橫開關70的TrID分配邏輯的判斷)。出站響應沒有調節機制,控制代理66接受任何縱橫開關70響應。調度緩衝區54或55中的條目的所有出站響應或請求都必須同時引用它們的相應的輸出。因此,調度緩衝區54和55在發生衝突時必須爭用輸出45、46、47和48。此外,到輸出埠的輸出響應可能伴隨著轉出(清除)請求,兩者都必須發送到輸出埠,轉出優先。
標記和地址縱橫開關70接收來自控制代理66的請求,並基於每一個象限的遠程高速緩存標記中的高速緩存線的狀態作出響應。象限遠程高速緩存(RC)狀態的集合叫做全局遠程高速緩存(RC)狀態。在此表中,合法狀態值的組合被簡化為3個字符串I、S和M,如上所述。第二列是請求者的RC標記的狀態,第三列是所有者除外的其他象限的狀態,第四列是所有者象限的狀態。在表1的列1中給出了全局RC狀態的狀態名稱。本地請求應該始終不匹配或具有I狀態。應該理解,本地請求意味著,請求者處於狀態I,因為本地地址沒有高速緩存在遠程高速緩存中。在其中Req狀態為I的行中,在該象限的遠程高速緩存中,不存在線。I狀態表示,沒有標記匹配,狀態是I,或埠不是發出請求的分區的成員。所有四個「髒」狀態表示,持有M狀態的線的象限中的處理器在它們的晶片內(L1/L2)高速緩存中具有未修改的數據。
表1全局遠程高速緩存狀態定義
當請求者是所有者時,表1指派請求值為M,和顯示所有者為狀態I。在圖中使用了這樣的狀態名稱,以顯示標記和地址縱橫開關70如何對總線73請求作出響應。還應該理解,總線73是圖1所示的每一個埠的標記和地址縱橫開關70的每一個總線的說明。
圖4說明了高速緩存的讀取和讀取失效。圖4為清楚起見分為四個部分,圖4A、4B、4C和4D,但代表一個圖表。圖5說明了非高速緩存讀取。圖5為清楚起見分為兩個部分,圖5A、5B,但代表一個圖表。圖6說明了非高速緩存寫入。圖6為清楚起見分為兩個部分,圖6A、6B,但代表一個圖表。圖7說明了對MMIO、CSR和非存儲器目標的讀取和寫入。圖8說明了轉出請求。圖8為清楚起見分為兩個部分,圖8A、8B,但代表一個圖表。圖9中說明了縱橫開關70的所有輸入和輸出總線所使用的場的所有助記符(在一個實例中顯示為圖1中的總線73),並可以用作在參考利用優選實施例的操作的插圖中的助記符的圖中的引用。圖9為清楚起見分為三個部分,圖9A、9B和9C,但代表一個圖表。在說明優選實施例的操作時,可以對這樣的圖進行參考。
圖4、5、6、7、8和9說明了優選實施例的操作,並可用於理解這裡所說明的方法和系統的實際操作。請看圖4,所顯示的表描述了高速緩存讀取和讀取失效的各種狀態,它們完全說明了本發明的實現方式。圖4可以用於說明由四個埠中的任何一個埠啟動的任何數據請求,並用作定義結果和對於一個給定輸入的所有其他埠的響應的示例。圖4的列101包含各種總線請求。列101包括對本地地址高速緩存讀取的請求(LCR),對遠程地址的高速緩存讀取的請求(RCR)、對本地地址的高速緩存讀取失效的請求(LCRI);對遠程地址的高速緩存讀取失效的請求(RCRI)。將使用一個說明性的示例來演示本發明的操作,假設列101中的總線73請求從埠1發出,從而與輸41有關,如圖1所示。
對於本示例,列101代表圖2上的輸入41。在這樣的情況下,對於列102中的每一個全局遠程高速緩存狀態,在列103中給出了對這樣的請求的標記和地址縱橫開關70響應,以及這樣的響應被定向到向其發出請求的輸出埠。在本示例中,輸入41上的請求對應於處理對該請求的響應的輸出46。同樣,列104、105和106引用圖2中的輸出45、46、47或48,因為它們涉及主、共享者或所有者。在本示例中,對列104中的home的請求是不同於46的其他輸出中的一個。對列105中的共享者的請求一定不包括對列104中的home quad的請求。列104中指定的Home是其中地址是本地的quad,或表示地址對於特定的quad是本地的。列106描述了示例中的對quad的特定輸出,該quad被定義為相關數據的所有者。在用於從quad 1接收到的請求的示例中,列106根據定義是不同於與埠1關聯的輸出46的其他輸出中的一個。列107定義了下一個全局遠程高速緩存狀態,列108定義了遠程高速緩存分配和/或轉出是否應該與列101中的特定總線請求關聯。列108中的「是」表示重新定位可能是必需的,這進一步意味著,需要對現有的行進行轉出。
圖5是說明了與圖4中所描述的具有類似的垂直列定義的非高速緩存讀取請求的表。圖5提供了為每一個本地非高速緩存讀取請求和遠程非高速緩存讀取請求定義的quad的各種狀態和響應。圖6再一次以類似的列標題,為本地非高速緩存部分寫入的請求、對縱橫開關70的請求或本地非高速緩存全線寫入請求的遠程非高速緩存部分寫入請求或遠程非高速緩存全線寫入請求提供了定義的解決方案。在優選實施例中,完全的高速緩存線被定義為32位元組,是實施例中使用的一致性的單位。部分線是在涉及小於32位元組的系統中作出的請求,相應地被視為部分線。
圖7是說明到存儲器映射I/O位置、CSR、和非存儲器目標的讀取和寫入,其定義包含在圖9中包含的助記符描述中。圖8是一個定義必須發送到宿主、共享者和所有者節點以實現高速緩存線的清除的請求的表。如果圖4的列108為(刺激)請求顯示「是」,並在遠程高速緩存中有一個有效的預先存在的條目,那麼,該條目必須清除,以便為(刺激)請求的高速緩存騰出空間。因此,圖8定義了與不同的存儲器位置(但相同的高速緩存條目)關聯的活動,並作為(刺激)請求的副效應而發生。圖9包含了各個圖中使用的引用助記符。
在圖4到8中,偶而對n*RCI進行了引用。n是等於操作的數量或一個特定的操作可能需要的請求的數量。提供了使用圖4的示例,該示例說明了其在本發明的操作中的用途。
以圖4中的線109作為示例,在對到本地地址的高速緩存讀取失效的請求中,列102提供了共享的丟失的實例。提供了列103,術語GO Inv=n,列104提供一個空白,列105提供了對作為n*RCI的共享者的請求的定義。在此示例中,處理器發出對本地地址的請求,它打算修改其數據。為維護一致性,它請求數據,並希望系統中的這樣的數據的所有其他副本失效,因為它計劃「擁有」這樣的數據。然而,在利用共享丟失的示例中,在系統內有其他象限,這些其他象限除了請求者的本地存儲器中的副本外,還具有高速緩存只讀副本。因此,處理器可以直接向存儲器請求這樣的數據,因為只有其他副本是共享副本。因此,根據定義,存儲器中的存儲器不是陳舊的。在該示例中,處理器按建議讀取列103中的數據,其中,對請求者的響應被定義為GO,表示處理器可以繼續具有查詢的數據的過程,因為要讀取的預期的數據有效,處理器可以使用數據。
在繼續本發明定義的操作中,必須通知以前共享數據的其餘的象限,應有本示例的數據不再有效,這樣的象限不再具有數據的有效的副本。相應地,本發明假設,由於操作,這樣的存儲器現在被定義為陳舊的。列105假設,RCI的n副本(這意味著遠程高速緩存線失效)被發送到其他共享者。以前共享所述數據的每一個象限(總共n個象限)現在被通知,被操作的高速緩存線現在無效。在行109中的示例中,列103表示系統中預期的失效確認的數量(inv=n)。相應地,inv=n匹配n*RCI。本示例中定義的系統操作不完整,直到數據被接收,並返回n個失效確認。在該示例中,可以理解,只有一個對發出請求的象限的響應,因為只有一個發出請求的象限。在行109中,只有一個對宿主象限的請求,因為只有一個宿主象限,並且只有一個對所有者象限的請求,因為只有一個象限被定義為所有者。在列105中,可以理解,在給定的示例中,在所說明的優選實施例中,最多可以有三個共享象限,因為在本實施例中提供了總共四個象限。
對於所說明的示例,可以理解,圖4、5、6、7和8提供了完整的操作方案和控制協議,準確地定義了這裡所定義的設備和方法的操作。圖9中的Q/A列表示助記符是否與請求(Q=請求)或回復(A=回復)關聯。
本發明可以在利用中央控制設備或系統以在一組微處理器之間進行通信的任何多處理器系統中應用。當與標記和地址縱橫開關系統以及數據縱橫開關系統一起使用時本發明最有益,這樣的系統跨系統地使用不均勻的存儲器存取或分布式存儲器連接多個處理器組。這裡所顯示和詳細描述的優選實施例的系統和方法完全能夠實現本發明的目標,這些系統和方法可以在這樣的系統中通過跟蹤數據標記和地址縱橫開關控制器內的數據狀態來維護多節點系統內的高速緩存的一致性。然而,應該理解,所描述的實施例只本發明的一個示例,因而,只是本發明廣泛預期的主題的代表。
例如,在特定的系統的上下文中描述了優選的實施例,該系統利用十六個微處理器,由四個處理器的四個單獨的組的象限組成,每一個象限具有存儲器控制代理,該存儲器控制代理與中央控制器縱橫開關連接,將存儲器板分配給象限,優選實施例通過其他子系統與其他象限中的類似的控制器進行通信。儘管如此,本發明可以與具有多處理器的任何系統一起使用,不論是否被分組為「節點」,指派了單獨的存儲器控制代理,當在多節點系統內這樣的處理器組或在處理數據讀取或寫入命令或事務請求時需要一致性或協調時,控制一個或多個處理器的每一個單獨的組。
本發明不一定限於這裡所說明的特定的處理器的數量或處理器的陣列,但可以在使用互連的存儲器控制系統中使用相似的系統設計,在節點之間帶有標記和地址和數據通信系統,以實現本發明。相應地,本發明的範圍完全包含其他實施例,這對於精通本技術的人員是顯而易見的。
權利要求
1.一種在多處理器系統中維護高速緩存一致性的方法,所述多處理器系統具有由互連的通信通道(70-72)連接的多個節點(58),能夠存儲有關系統內的數據的位置和狀態的信息,每一個節點具有至少一個高速緩存,節點本地的存儲設備,以及至少一個處理器設備,每一個節點內的處理器設備能夠從本地存儲設備、本地高速緩存或從非本地存儲設備或非本地高速緩存通過互連的通信通道訪問數據,該方法包括存儲有關所述互連通道(70,72)中的數據的狀態的信息(102);響應發出請求的節點所發出的對被請求的那部分數據的請求,檢查所述存儲信息以判斷被請求的那部分數據的最當前副本的位置;檢索被請求的那部分數據的所述當前副本,並將所述數據定向到發出請求的節點;檢查所述存儲信息以判斷被請求的數據的位置;以及指示所述系統向發出請求的節點發送所述被請求的數據,而不必經過所述互連通信通道。
2.一種多處理器計算機系統,包括多個節點(58),每一個節點都包括至少一個處理器和連接到所述處理器的共享的分布式系統存儲器的一部分;以及一個通信通道,連接所述節點並包括中心硬體設備(70、72),所述中心硬體設備存儲在節點的存儲器中存儲的數據的位置和狀態信息。
3.根據權利要求2所述多處理器系統,其特徵在於,每一個節點都包括無需通過所述通信通道進行通信便可以對其進行訪問的存儲器,以及可由其它節點進行遠程訪問的存儲器。
4.根據權利要求2所述多處理器系統,其特徵在於,所述中心硬體設備存儲信息,用於判斷哪些節點或處理器存儲了每一個所述節點的存儲器中的一個或多個標識的數據的副本。
5.根據權利要求2所述多處理器系統,其特徵在於,所述中心硬體設備將被請求的數據與節點中所存儲的數據的位置和狀態進行比較,將被請求的數據定向到發出請求的節點,並向所述設備為其存儲了數據的位置的其他節點發送需要其他數據的請求。
6.根據權利要求5所述多處理器系統,其特徵在於,所述中心硬體設備包括可操作地連接到節點的調度緩衝區,並在向目標節點傳送數據的同時,向其他節點發出需要與標識的數據的狀態相關的信息的請求。
7.根據權利要求5所述多處理器系統,其特徵在於,所述互連通信通道包括第一通道,用於存儲節點中的數據的位置和狀態,第二通道,用於傳送由所述目標節點所請求的數據。
8.一種在多處理器系統中維護高速緩存一致性的方法,所述多處理器系統具有由互連的通信通道(70-72)連接的多個節點(58),能夠存儲有關系統內的數據的位置和狀態的信息,每一個節點具有至少一個高速緩存,節點本地的存儲設備,以及至少一個處理器設備,所述存儲器和處理器設備連接在一起以構成完整的子系統,每一個節點內的處理器設備能夠從本地存儲設備、本地高速緩存或從非本地存儲設備或非本地高速緩存通過互連的通信通道訪問數據,其特徵在於,所述通信通道包括第一通道(70)和第二通信通道(72),所述第一通道傳送節點內的數據的狀態和位置,所述第二通信通道在各個節點之間傳送數據,該方法包括在所述第一通道中存儲有關數據的狀態(102)的信息;所述第一通道響應發出請求的節點所發出的對數據的請求,檢查所述存儲信息以判斷被請求的那部分數據的最當前副本的位置;所述第一通道指示所述第二通道將所述數據的所述最當前副本轉發到發出請求的節點;以及所述第二通道檢索被請求的那部分數據的所述當前副本,並將所述數據定向到目標節點。
9.根據權利要求8所述方法,其特徵在於,所述第一通道響應發出請求的節點所發出的對數據的請求,檢查所述存儲信息以判斷被請求的那部分數據的最當前副本的位置的步驟包括在所述第一通信通道中存儲有關每一個節點中的數據的狀態的信息;在從節點請求數據時,通過讀取所述存儲信息並判斷被定義為所述存儲數據的最當前副本的所希望的狀態,來檢查每一個節點中存儲的被請求的數據的狀態。
全文摘要
一種用於提供多處理器系統中的高速緩存一致性的方法和設備,所述多處理器系統被配置為兩個或多個具有本地存儲器的節點(58),以及將所有節點互相連接的標記和地址縱橫開關系統(70)和數據縱橫開關系統(72)。本發明適用於多處理器計算機系統,所述多處理器計算機系統利用在一個以上節點分布的系統存儲器並窺探利用節點本地存儲器的每一節點中的數據狀態。使用全局窺探來提供數據標記的單一的序列化點。中心縱橫開關控制器同時檢查所有節點的給定地址線的高速緩存狀態標記,並向正在請求數據的節點發出適當回復,同時向系統中的任何其他節點生成其他數據請求,以便維護高速緩存一致性並提供被請求的數據。系統通過將每一個節點的本地存儲器劃分為本地和遠程類別來利用每一個節點的本地存儲器,所述類別對於任何給定的高速緩存線是互相排斥的。本發明為每一個節點提供了三級遠程高速緩存支持。
文檔編號G06F13/00GK1620651SQ03802570
公開日2005年5月25日 申請日期2003年1月9日 優先權日2002年1月9日
發明者託馬斯·B·伯格, 布魯斯·M·吉爾伯特, 託馬斯·D·洛維特 申請人:國際商業機器公司