TWI393005B - 用於在具有多重一致性定義域之資料處理系統中處置清空操作之資料處理系統、快取系統以及方法 - Google Patents
用於在具有多重一致性定義域之資料處理系統中處置清空操作之資料處理系統、快取系統以及方法 Download PDFInfo
- Publication number
- TWI393005B TWI393005B TW096100518A TW96100518A TWI393005B TW I393005 B TWI393005 B TW I393005B TW 096100518 A TW096100518 A TW 096100518A TW 96100518 A TW96100518 A TW 96100518A TW I393005 B TWI393005 B TW I393005B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- memory
- consistency
- block
- response
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0822—Copy directories
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明大體係關於資料處理,且詳言之,係關於一快取一致性資料處理系統內之資料處理。
習知對稱多處理器(SMP)電腦系統(諸如伺服器電腦系統)包括均耦接至通常包含一或多個位址、資料及控制匯流排之系統互連的多個處理單元。系統記憶體耦接至系統互連,該系統記憶體表示多處理器電腦系統中之最低層級之揮發性記憶體且可由所有處理單元加以存取以用於讀取及寫入存取。為減少對常駐於系統記憶體中之指令及資料的存取延時,每一處理單元通常由各別多層級快取記憶體階層進一步支援,該多層級快取記憶體階層之較低層級可由一或多個處理器核心共用。
因為多個處理器核心可能會要求對資料之同一快取列的寫入存取且因為經修改之快取列並非立即與系統記憶體同步,所以多處理器電腦系統之快取記憶體階層通常建構快取一致性協定以確保各個處理器核心對系統記憶體之內容的"視野"的至少最小水準之一致性。詳言之,快取一致性至少要求在處理單元存取記憶體區塊之複本且隨後存取記憶體區塊之經更新複本之後,處理單元不能再次存取記憶體區塊之舊複本。
快取一致性協定通常定義與每一快取記憶體階層之快取列相關聯而儲存的一組一致性狀態以及用以在快取記憶體階層之間傳達快取狀態資訊的一組一致性訊息。在典型建構中,一致性狀態資訊採取熟知的MESI(修改,獨佔,共用,失效)協定或其變體之形式,且一致性訊息指示記憶體存取請求之請求者及/或接受者之快取記憶體階層中的協定定義一致性狀態轉變。
鑒於前述內容,本發明提供一種經改良之快取一致性資料處理系統、快取系統及在快取一致性資料處理系統內之資料處理之方法。
在一實施例中,一快取一致性資料處理系統包括至少第一及第二一致性定義域。該第一一致性定義域含有一記憶體控制器、一具有一由一目標位址識別之目標記憶體區塊之相關聯系統記憶體,及一指示是否在該第一一致性定義域外快取該目標記憶體區塊之定義域指示器。在操作期間,該第一一致性定義域接收一廣播至該第一及該第二一致性定義域之清空操作,其中該清空操作規定該目標記憶體區塊之目標位址。該第一一致性定義域亦接收一對該清空操作之組合回應,其表示對該清空操作之全系統的回應。回應於該組合回應於該第一一致性定義域中的接收,判定該組合回應是否指示該目標記憶體區塊之一快取複本可保持於該資料處理系統內。回應於該組合回應指示該目標記憶體區塊之一快取複本可保持於該資料處理系統內的判定,該定義域指示器經更新以指示在該第一一致性定義域外快取該目標記憶體區塊。
在至少一些實施例中,重新發佈該清空操作直至起始該清空操作之主控器可被授予該目標記憶體區塊之一致性所有權。此後,主控器發出一或多個清除(kill)操作(若必要)以自該資料處理系統清空該目標記憶體區塊之共用快取複本。將一致性所有權授予起始該清空操作之主控器確保該清空操作可在存在可使該目標記憶體區塊之共用快取複本之數目倍增的讀取操作之情況下進行向前進展。為將一致性所有權授予主控器,該定義域指示器在本端系統記憶體(home system memory)處經更新(若必要)以使得與該清空操作衝突之任何操作被該清空操作之主控器窺探(snoop)並重試。
本發明之所有目的、特徵及優點將在以下實施方式中變得顯而易見。
現參看諸圖,且詳言之參看圖1,說明根據本發明之快取一致對稱多處理器(SMP)資料處理系統之示範性實施例的高階方塊圖。如所展示的,資料處理系統100包括用以處理資料及指令的多個處理節點102a、102b。處理節點102a、102b耦接至一系統互連110以用以傳遞位址、資料及控制資訊。可將系統互連110建構為(例如)匯流排互連、交換互連或混合互連。
在所描繪之實施例中,將每一處理節點102實現為含有四個處理單元104a至104d之多晶片模組(MCM),較佳將每一處理單元實現為各別積體電路。每一處理節點102內之處理單元104a至104d經耦接以藉由一局域互連114而通信,該局域互連114如同系統互連110一樣可藉由一或多個匯流排及/或交換器來建構。
耦接至每一局域互連114之裝置不僅包括處理單元104,而且包括一或多個系統記憶體108a至108d。常駐於系統記憶體108中之資料及指令一般可由資料處理系統100之任一處理節點102中的任一處理單元104中之處理器核心加以存取及修改。在本發明之替代實施例中,一或多個系統記憶體108可耦接至系統互連110而非耦接至一局域互連114。
熟習此項技術者應瞭解,SMP資料處理系統100可包括許多額外未說明之組件,諸如互連橋接器、非揮發性儲存、用於至網路或附加裝置之連接的埠等。因為此等額外組件對於本發明之理解並非必要,所以其未在圖1中加以說明或在本文中進一步加以討論。然而,亦應瞭解,由本發明提供之增強可應用於各種架構之快取一致資料處理系統且絕不限於圖1中所說明之普遍資料處理系統架構。
現參看圖2,描繪根據本發明之一示範性處理單元104的較詳細方塊圖。在所描繪之實施例中,每一處理單元104包括用以獨立處理指令及資料之兩個處理器核心200a、200b。每一處理器核心200包括用以提取並排序用於執行之指令的至少一指令定序單元(ISU)208及用以執行指令之一或多個執行單元224。如下文進一步論述的,執行單元224較佳包括一載入儲存單元(LSU)228,載入儲存單元(LSU)228用以執行參照記憶體區塊之記憶體存取指令或引起參照記憶體區塊之操作的產生。
每一處理器核心200之操作由多層揮發性記憶體階層支援,該多層揮發性記憶體階層在其最低層級具有共用系統記憶體108a至108d,且在其上層具有一或多層級快取記憶體。在所描繪之實施例中,每一處理單元104包括一整合記憶體控制器(IMC)206,該整合記憶體控制器206回應於自處理器核心200a至200b接收之請求及由窺探器(S)222在局域互連114上窺探到的操作而控制對系統記憶體108a至108d之各別系統記憶體在其處理節點102內的讀取及寫入存取。IMC 206包括基址暫存器(BAR)邏輯240,該BAR邏輯240包括定義IMC 206所負責之位址的範圍暫存器。
在說明性實施例中,處理單元104之快取記憶體階層包括每一處理器核心200內之一儲存貫穿層一(L1)快取記憶體226及一由處理單元104之所有處理器核心200a、200b共用之層二(L2)快取記憶體230。L2快取記憶體230包括一L2陣列及目錄234以及包含一主控器232及一窺探器236之快取控制器。主控器232起始局域互連114及系統互連110上之異動且回應於自相關聯處理器核心200a至200b接收之記憶體存取(及其他)請求而存取L2陣列及目錄234。窺探器236窺探局域互連114上之操作,提供適當回應,並執行操作所需之對L2陣列及目錄234的任何存取。窺探器236包括指示其處理節點104之IMC 206所負責之位址的BAR邏輯238。
儘管所說明之快取記憶體階層僅包括兩層級快取記憶體,但熟習此項技術者應瞭解,替代實施例可包括可完全包括、部分包括或不包括上層級快取記憶體之內容的額外層(L3、L4、L5等)之晶片上或晶片外直插式或後備快取記憶體。
每一處理單元104進一步包括回應邏輯210之一執行個體,該執行個體建構維持資料處理系統100內之快取一致性的分散式一致性信號傳輸機制之一部分。此外,每一處理單元104包括用以選擇性地在其局域互連114與系統互連110之間轉發通信之互連邏輯212之一執行個體。最後,每一處理單元104包括一支援一或多個輸入/輸出(I/O)裝置(諸如I/O裝置216)之附接的整合I/O控制器214。I/O控制器214可回應於I/O裝置216之請求而在局域互連114及/或系統互連110上發出操作。
現參看圖3,說明L2陣列及目錄234之一示範性實施例的較詳細方塊圖。如所說明的,L2陣列及目錄234包括一集合關聯式L2快取記憶體陣列300及L2快取記憶體陣列300之內容之L2快取目錄302。如在習知集合關聯式快取記憶體中,系統記憶體108中之記憶體位置利用系統記憶體(實)位址內之預定指數位元而被映射於快取記憶體陣列300內之特定適合類。儲存於快取記憶體陣列300內之特定快取列被記錄於快取目錄302中,快取目錄302針對快取記憶體陣列300中之每一快取列含有一目錄項。如熟習此項技術者所瞭解的,快取目錄302中之每一目錄項至少包含一藉由利用相應實位址之標記部分而規定儲存於快取記憶體陣列300中之特定快取列的標記欄位304、一指示該快取列之一致性狀態的狀態欄位306,及一指示該快取列相對於同一適合類中之其他快取列之替換次序的最近最少使用(LRU)欄位308。
現參看圖4,描繪圖1之資料處理系統100的局域或系統互連110、114上之示範性操作的時空圖。該操作開始於L2快取記憶體230之主控器232(或諸如I/O控制器214之另一主控器)在局域互連114及/或系統互連110上發出一請求402時。請求402較佳包括一指示所要存取之類型的異動類型及一指示待由該請求存取之資源的資源識別符(例如,實位址)。請求之共同類型較佳包括以下表I中所述之類型。
請求402由L2快取記憶體230之窺探器236以及記憶體控制器206之窺探器222(圖1)接收。一般地(存在某些例外),與請求402之主控器232相同之L2快取記憶體230中的窺探器236並不窺探請求402(亦即,一般不存在自窺探),此係因為一請求402僅當一處理單元104不能在內部向請求402提供服務時而傳輸於局域互連114及/或系統互連110上。接收請求402之每一窺探器222、236可向請求402提供一表示至少該窺探器之回應的各別部分回應406。記憶體控制器206內之窺探器222基於(例如)窺探器222是否對請求位址負責及窺探器222是否具有可用以向請求提供服務之資源而判定待提供之部分回應406。L2快取記憶體230之窺探器236可基於(例如)該L2快取記憶體230之L2快取目錄302之可用性、窺探器236內之用以處理請求之窺探邏輯執行個體的可用性,及與L2快取目錄302中之請求位址相關聯一致性狀態而判定該窺探器236之部分回應406。
藉由回應邏輯210之一或多個執行個體階段性或一次性地在邏輯上組合窺探器222及236之部分回應以判定一對請求402之全系統的組合回應(CR)410。以下述範圍限制為條件,回應邏輯210經由其局域互連114及/或系統互連110向主控器232及窺探器222、236提供組合回應410以指示對請求402之全系統的回應(例如,成功、失敗、重試等)。若CR 410指示請求402成功,則CR 410可指示(例如)被請求記憶體區塊之資料來源、被請求記憶體區塊待由主控器232快取之快取狀態及是否需要用以使一或多個L2快取記憶體230中之被請求記憶體區塊無效之"清除"(例如,KILL)操作。
回應於組合回應410之接收,主控器232及窺探器222、236中之一或多者通常執行一或多個操作以向請求402提供服務。此等操作可包括向主控器232供應資料、使一或多個L2快取記憶體230中所快取之資料之一致性狀態無效或以其他方式更新該一致性狀態、執行快速輸出操作、將資料寫回系統記憶體108等。若請求402需要,則可在由回應邏輯210產生組合回應410之前或之後將被請求之記憶體區塊或目標記憶體區塊傳輸至主控器232或自主控器232傳輸。
在以下描述中,一窺探器222、236對請求之部分回應及由該窺探器回應於請求及/或請求之組合回應所執行之操作將以參照該窺探器相對於由請求所規定之請求位址為一致性最高點(HPC)、一致性最低點(LPC)還是既不為HPC亦不為LPC的方式來加以描述。在本文中,將LPC定義為用作記憶體區塊之儲存庫的控制點之記憶體裝置或I/O裝置。在無記憶體區塊之HPC時,LPC控制對保持記憶體區塊之真影像的儲存器之存取且具有允許或拒絕產生記憶體區塊之額外快取複本之請求的權限。對於圖1及圖2之資料處理系統實施例中之典型請求,LPC將為保持參照記憶體區塊之系統記憶體108的記憶體控制器206。在本文中,將HPC定義為快取記憶體區塊(其可或可不與LPC處之相應記憶體區塊一致)之真影像且具有允許或拒絕修改記憶體區塊之請求的權限的唯一識別裝置。描述性地,HPC亦可回應於不修改記憶體區塊之操作而向請求者提供記憶體區塊之複本。因此,對於圖1及圖2之資料處理系統實施例中之典型請求,HPC(若存在)將為一L2快取記憶體230。儘管可利用其他指示器來命名記憶體區塊之HPC,但如以下參看表II所進一步描述的,本發明之較佳實施例藉由利用L2快取記憶體230之L2快取目錄302內的選定快取一致性狀態來命名記憶體區塊之HPC(若存在)。
仍參看圖4,一請求402中所參照之記憶體區塊之HPC(若存在)或在無HPC時之記憶體區塊之LPC較佳具有在一保護視窗404a期間回應於一請求402而保護記憶體區塊之所有權轉移的責任。在圖4中所展示之示範性情境中,為由請求402之請求位址規定的記憶體區塊之HPC的窺探器236在自該窺探器236判定其部分回應406之時間延伸直至窺探器236接收組合回應410之保護視窗404a期間保護被請求記憶體區塊之所有權至主控器232之轉移。在保護視窗404a期間,窺探器236藉由向規定相同請求位址之其他請求提供部分回應406而保護所有權之轉移,該等其他請求防止其他主控器在所有權已成功轉移至主控器232之前獲取所有權。主控器232同樣起始一保護視窗404b以保護該主控器232在接收組合回應410之後對請求402中所請求之記憶體區塊之所有權。
因為窺探器222、236均具有用以處理上述CPU及I/O請求之有限資源,所以可能存在若干不同程度之部分回應及相應CR。舉例而言,若對被請求之記憶體區塊負責之記憶體控制器206內之窺探器222具有可用以處理請求之佇列,則窺探器222可回應以指示其能夠用作請求之LPC的部分回應。另一方面,若窺探器222不具有可用以處理請求之佇列,則窺探器222可回應以指示其為記憶體區塊之LPC,但當前不能向請求提供服務之部分回應。
類似地,L2快取記憶體230中之窺探器236可要求可獲得之窺探邏輯之執行個體並對L2快取目錄302進行存取以處理請求。無對此等資源之任一者(或兩者)之存取導致傳輸歸因於無所需資源而目前不能向請求提供服務之信號的部分回應(及相應的CR)。
在下文中,吾人稱提供指示窺探器具有目前向請求提供服務所需之可獲得之所有內部資源的部分回應之窺探器222、236(若需要)用以"肯定"請求。對於窺探器236,肯定經窺探之操作的部分回應較佳指示該窺探器236處之被請求或目標記憶體區塊之快取狀態。吾人可稱提供指示窺探器236不具有目前向請求提供服務所需之可獲得之所有內部資源的部分回應之窺探器222、236"可能隱藏"或"不能"向請求提供服務。此窺探器236"可能隱藏"或"不能"向請求提供服務,此係因為窺探器236歸因於缺乏可獲得之窺探邏輯之執行個體或對L2快取目錄302之目前存取而不能在以上所定義之意義上"肯定"請求且自其他主控器232及窺探器222、236之視角來看具有未知之一致性狀態。
習知基於廣播之資料處理系統經由廣播通信而處理快取一致性及資料傳遞,在習知系統中,該廣播通信在系統互連上被傳輸至系統中之至少所有記憶體控制器及快取記憶體階層。當與具替代架構及相似規模之系統相比時,基於廣播之系統傾向於提供減少之存取延時及較佳資料處理及對共用記憶體區塊之一致性管理。
隨著基於廣播之系統在規模上按比例增加,系統互連上之訊務量倍增,此意謂系統成本由於需要更多頻寬用於系統互連上之通信而隨系統規模急劇上升。亦即,具有m個處理器核心(每一處理器核心具有n個異動之平均訊務量)之系統具有m×n之訊務量,此意謂基於廣播之系統中的訊務量倍增地而非加法地按比例增加。在超過實質上較大互連頻寬之要求的情況下,系統規模之增加具有增加一些存取延時之副效應。舉例而言,在最壞情況下,讀取資料之存取延時受限於最遠較低層級快取記憶體(其持有可為被請求資料之來源的處於共用一致性狀態之被請求記憶體區塊)的組合回應延時。
為降低系統互連頻寬要求及存取延時同時仍保持基於廣播之系統的優點,允許分散於整個資料處理系統100中的多個L2快取記憶體230將同一記憶體區塊之複本保持於"特殊"共用一致性狀態,這允許此等快取記憶體使用快取記憶體對快取記憶體介入而將記憶體區塊供應至請求L2快取記憶體230。為在諸如資料處理系統100之SMP資料處理系統內建構共用記憶體區塊之多個並行分散式來源,必須解決兩個事宜。首先,必須建構管控以上提到之"特殊"共用一致性狀態下的記憶體區塊之複本之建立的規則。第二,必須存在管控哪一窺探端L2快取記憶體230(若存在)(例如)回應於匯流排讀取操作或匯流排RWITM操作而向請求端L2快取記憶體230提供共用記憶體區塊之規則。
根據本發明,經由建構資料來源定義域來解決此等兩個事宜。詳言之,允許SMP資料處理系統內之每一定義域在某時僅包括一使特定記憶體區塊保持於"特殊"共用一致性狀態之快取記憶體階層,其中定義域經定義以包括參與回應資料請求之一或多個較低層級(例如,L2)快取記憶體。該快取記憶體階層(若由同一定義域中之請求端較低層級快取記憶體起始匯流排讀取類型(例如,讀取或RWITM)操作,則該快取記憶體階層存在)負責將被請求之記憶體區塊之來源指向請求端較低層級快取記憶體。儘管可定義許多不同定義域大小,但在圖1之資料處理系統100中,便利的是將每一處理節點102(亦即,MCM)認為係資料來源定義域。以下參看表II描述此"特殊"共用狀態(亦即,Sr)之一實例。
儘管如上所述之資料傳遞定義域之建構改良資料存取延時,但此增強不解決隨系統規模增加之m×n訊務量的倍增。為降低訊務量同時仍維持基於廣播之一致性機制,本發明之較佳實施例另外建構一致性定義域,該等一致性定義域同上文中所述之資料傳遞定義域一樣可藉由形成獨立一致性定義域之每一處理節點102而便利地(但不需要)加以建構。資料傳遞定義域與一致性定義域可為(但不需要)同延的,且為說明資料處理系統100之示範性操作起見將在下文中假定其具有由處理節點102定義之邊界。
一致性定義域之建構在可在藉由少於所有一致性定義域的參與向請求提供服務之狀況下藉由限制系統互連110上之定義域間廣播通信而減少系統訊務。舉例而言,若處理節點102a之處理單元104a具有待發出之匯流排讀取操作,則處理單元104a可選擇首先將匯流排讀取操作廣播至其自身一致性定義域(例如,處理節點102a)內之所有參與者而非廣播至其他一致性定義域(例如,處理節點102b)中之參與者。本文中將僅傳輸至與操作之主控器相同的一致性定義域內之參與者的廣播操作定義為"局域操作"。若可在處理單元104a之一致性定義域內向局域匯流排讀取操作提供服務,則不執行匯流排讀取操作之進一步廣播。然而,若對局域匯流排讀取操作之部分回應及組合回應指示不能單獨在處理節點102a之一致性定義域內向匯流排讀取操作提供服務,則廣播之範圍可經延伸以除局域一致性定義域外包括一或多個額外一致性定義域。
在基本建構中,使用兩個廣播範圍:僅包括局域一致性定義域的"局域"範圍及包括SMP資料處理系統內之所有其他一致性定義域的"全域"範圍。因此,在本文中,將傳輸至SMP資料處理系統內之所有一致性定義域之操作定義為"全域操作"。重要的係,無關於使用局域操作還是較廣範圍之操作(例如,全域操作)來為操作提供服務,均在SMP資料處理系統內之所有一致性定義域上維持快取一致性。在美國專利申請案第11/055,305號中詳細描述了局域及全域操作之實例,該申請案之全文以引用的方式併入本文中。
在較佳實施例中,藉由局域/全域範圍指示器(信號)(在一實施例中可包含1位元旗標)而在匯流排操作中指示操作之範圍。處理單元104內之轉發邏輯212較佳基於操作中之局域/全域範圍指示器(信號)的設定而判定是否將經由局域互連114所接收之操作轉發至系統互連110上。
在本描述中,若一致性定義域(或處理節點)含有記憶體區塊之LPC,則可將一致性定義域稱為記憶體區塊之"本端"一致性定義域(或"本端"節點)。
為限制不需要之局域操作之發出且藉此減少操作延時且保留局域互連上之額外頻寬,本發明較佳每記憶體區塊建構一定義域指示器,該定義域指示器指示是否在局域一致性定義域外快取相關聯記憶體區塊之複本。舉例而言,圖5描繪根據本發明之定義域指示器的第一示範性建構。如圖5中所示,可建構於動態隨機存取記憶體(DRAM)中之系統記憶體108儲存複數個記憶體區塊500。系統記憶體108與每一記憶體區塊500相關聯而將一用以校正錯誤(若存在)之相關聯錯誤校正碼(ECC)502儲存於記憶體區塊500及一定義域指示器504中。儘管在本發明之一些實施例中,定義域指示器504可識別特定一致性定義域(例如,規定一致性定義域或節點ID),但在下文中假定,定義域指示器504為在快取相關聯記憶體區塊500(若快取,則僅在與用作記憶體區塊500之LPC之記憶體控制器206相同的一致性定義域內)之情況下被設定(例如,設定為"1"以指示"局域")之1位元指示器。否則重設定義域指示器504(例如,重設為"0以指示"全域")。將定義域指示器504設定為指示"局域"可不精確地實施,因為"全域"之錯誤設定不會誘發任何一致性錯誤,但可能引起操作的不需要之全域廣播。
回應於操作而指出記憶體區塊之來源的記憶體控制器206(及L2快取記憶體230)較佳連同被請求之記憶體區塊而傳輸相關聯之定義域指示器504。
本發明較佳建構經設計以平衡如上所述之資料傳遞及一致性定義域之建構的快取一致性協定。在較佳實施例中,協定內之快取一致性狀態除提供(1)快取記憶體是否為記憶體區塊之HPC的指示外,亦指示(2)快取複本在該記憶體階層處之快取記憶體中是否為唯一的(亦即,為全系統上之唯一快取複本),(3)快取記憶體是否及何時可向記憶體區塊之請求之主控器提供記憶體區塊之複本,(4)記憶體區塊之快取影像是否與LPC(系統記憶體)處之相應記憶體區塊一致,且(5)遠端一致性定義域中之另一快取記憶體是否(可能)保持具有匹配位址之快取項目。此等五種屬性可以(例如)以下表II中所總之熟知MESI(修改、獨佔、共用、無效)協定之示範性變體來表示。
為避免必須存取LPC以判定是否已知待快取記憶體區塊(若待快取,則僅局部),利用無效全域(Ig)一致性狀態以在無記憶體區塊之複本保持被快取於一致性定義域中之狀況下維護定義域指示。在本文中將Ig狀態定義為指示(1)快取記憶體陣列中之相關聯記憶體區塊無效,(2)快取目錄中之位址標記有效,且(3)可能在不同於本端一致性定義域之一致性定義域中快取由位址標記識別之記憶體區塊之複本的快取一致性狀態。Ig指示較佳為不精確的,此意謂其可在不違反一致性之情況下為不正確的。
Ig狀態係回應於回應於獨佔存取請求(例如,匯流排RWITM操作)而向另一一致性定義域中之請求者提供被請求記憶體區塊之該快取記憶體而形成於本端一致性定義域中之較低層級快取記憶體中。
因為包括Ig狀態之快取目錄項潛在地載運有用資訊,所以需要在至少某些建構中較I狀態下之項目而優先留存Ig狀態下之項目(例如,藉由修改用以選擇用於替換之犧牲快取項目之最近最少使用(LRU)演算法)。由於Ig目錄項留存於快取記憶體中,因而某些Ig項目可能隨時間而變得"陳舊",其原因在於獨佔存取請求引起Ig狀態之形成的快取記憶體可解除配置或寫回其記憶體區塊之複本而不向保持位址標記之快取記憶體通知處於Ig狀態之記憶體區塊。在該種狀況下,錯誤地指示應發出全域操作而非局域操作之"陳舊"Ig狀態不會引起任何一致性錯誤,但將僅使得可能利用局域操作而被另外提供服務之某些操作經發出而作為全域操作。此等無效率之發生將限於由"陳舊"Ig快取項目之最終替換所經歷之持續時間內。
若干規則控制Ig快取項目之選擇及替換。首先,若快取記憶體選擇Ig項目作為用於替換之犧牲者,則執行Ig項目之快速輸出(與選擇I、In或Igp項目之狀況不同)以更新系統記憶體108中之相應定義域指示器504。第二,若使記憶體區塊被載入快取記憶體的請求命中該同一快取記憶體中之Ig快取項目,則快取記憶體將Ig命中看作快取不中並在使Ig項目作為選定犧牲者之情況下執行快速輸出操作。快取記憶體因此避免將同一位址標記之兩個複本置放於快取目錄中。第三,較佳將Ig狀態之快速輸出執行為範圍限於局域一致性定義域之唯局域操作。第四,較佳將Ig狀態之快速輸出執行為將定義域指示寫回至LPC中之定義域指示器504的無資料唯位址操作。
根據本發明之Ig狀態的建構藉由甚至當無記憶體區塊之有效複本保持被快取於本端一致性定義域中時亦維持本端一致性定義域中之記憶體區塊的快取定義域指示器而改良通信效率。如下所述,由Ig狀態提供之快取定義域指示可用以預測用於以相關聯之記憶體區塊為目標之操作的互連結構上之全域廣播範圍。
Igp(唯無效全域預測;Invalid global predict-only)一致性狀態用以在無記憶體區塊之複本保持被快取於非本端一致性定義域中之狀況下維持快取定義域指示。在本文中,將Igp狀態定義為指示:(1)快取陣列中之相關聯之記憶體區塊無效;(2)快取目錄中之位址標記有效;(3)目前一致性定義域不為本端一致性定義域;及(4)可能在不同於目前非本端一致性定義域之一致性定義域中快取由位址標記識別之記憶體區塊之複本的快取一致性狀態。儘管精確地形成Igp指示,但較佳不精確地維持Igp指示,此意謂其可在不違反一致性之情況下為不準確的。
Igp狀態係回應於回應於獨佔存取請求(例如,RWITM、DClaim、DCBZ、清除、寫入或部分寫入請求)而向另一一致性定義域中之請求者提供被請求記憶體區塊之一致性所有權的快取記憶體而形成於非本端一致性定義域中之較低層級快取記憶體中。
因為包括Igp狀態之快取目錄項載運潛在地有用資訊,所以需要在至少某些建構中而較I狀態下之項目優先留存Ig狀態下之項目(例如,藉由修改用以選擇用於替換之犧牲快取項目之最近最少使用(LRU)演算法)。由於Igp目錄項留存於快取記憶體中,因而某些Igp項目可能隨時間而變得"陳舊",其原因在於記憶體區塊之複本可在未由保持Igp狀態下之記憶體區塊之位址標記的快取記憶體窺探的情況下返回至一致性定義域。在該等狀況下,不準確地指示應發出全域操作而非局域操作之"陳舊"Igp狀態不會引起任何一致性錯誤,但將僅使得利用局域操作而被另外提供服務之某些操作作為全域操作而發出。此等無效率之發生將限於"陳舊"Igp快取項目之最終替換所經歷的持續時間內。
與Ig項目之處置相比,無Igp項目之快速輸出係(例如)根據替換演算法(例如,LRU)或因為使記憶體區塊被載入快取記憶體內之請求命中在該同一快取記憶體中之Igp快取項目而回應於選擇Igp項目作為用於替換之犧牲者而執行。實情為,僅解除配置Igp項目。因為Igp項目不維持基本定義域指示器504之經快取且可能經修改之複本,所以不執行快速輸出。
根據本發明之Igp狀態的建構藉由甚至當無記憶體區塊之有效複本保持被快取於非本端一致性定義域中時亦在非本端一致性定義域中維持記憶體區塊的快取定義域指示器而改良通信效率。
在本文中將In狀態定義為指示(1)快取記憶體陣列中之相關聯記憶體區塊無效,(2)快取目錄中之位址標記有效,且(3)由位址標記識別之記憶體區塊之複本可能被快取(若快取,則僅由局域一致性定義域內之一或多個其他快取記憶體階層來快取)的快取一致性狀態。In指示較佳為不精確的,此意謂其可在不違反一致性之情況下為不準確的。In狀態係回應於回應於獨佔存取請求(例如,匯流排RWITM操作)而向同一一致性定義域中之請求者提供被請求記憶體區塊之該快取記憶體而形成於較低層級快取記憶體中。
因為包括In狀態之快取目錄項載運潛在地有用資訊,所以需要在至少某些建構中較I狀態下之項目優先留存In狀態下之項目(例如,藉由修改用以選擇用於替換之犧牲快取項目之最近最少使用(LRU)演算法)。由於In目錄項留存於快取記憶體中,因而某些In項目可能隨時間而變得"陳舊",其原因在於獨佔存取請求引起In狀態之形成的快取記憶體自身將記憶體區塊之共用複本供應至遠端一致性定義域而不向保持位址標記之快取記憶體通知處於In狀態之記憶體區塊。在該種狀況下,錯誤地指示應發出局域操作而非全域操作之"陳舊"In狀態不會引起任何一致性錯誤,但將僅使得某些操作錯誤地首先作為局域操作而發出,而非作為全域操作而發出。此等無效率之發生將限於由"陳舊"In快取項目之最終替換所經歷的持續時間內。在較佳實施例中,In一致性狀態下之快取項目不經受快速輸出,而僅被替換。因此,與Ig快取項目不同,In快取項目不用以更新系統記憶體108中之定義域指示器504。
根據本發明之In狀態的建構藉由維持由主控器諮詢以為該主控器之操作中之一者選擇局域範圍的記憶體區塊之快取定義域指示器而改良通信效率。結果,保留其他一致性定義域中之系統互連110及局域互連114上之頻寬。
在下述操作中,能夠判定將共用被請求記憶體區塊保持於Sr一致性狀態之較低層級快取記憶體是否位於與請求主控器相同之定義域內係有用的。在一實施例中,可藉由將被請求之記憶體區塊保持於Sr一致性狀態之較低層級快取記憶體處的窺探器之回應行為來指示與請求主控器相同之定義域內的"局域"Sr窺探器之存在。舉例而言,假定每一匯流排操作包括指示匯流排操作是否已跨越定義域邊界的範圍指示器(例如,主控器之顯式定義域識別符或單個局域/非局域範圍位元),則將共用記憶體區塊保持於Sr一致性狀態之較低層級快取記憶體可提供僅針對同一資料來源定義域內之主控器之請求而肯定Sr狀態下之請求的部分回應且提供指示所有其他請求之S狀態的部分回應。在此等實施例中,可如表III中所示而總結回應行為,其中上標(')記號用以表示可能與記憶體區塊之實際快取狀態不同的部分回應。
假定表III中之上述回應行為,可藉由增加分散於可用作資料來源之SMP資料處理系統內的記憶體區塊之共用複本之數目而顯著減少共用資料之平均資料延時。
現參看圖6A至圖6B,描繪根據本發明之、快取記憶體藉以向自相關聯之處理器核心接收的資料快取記憶體區塊清空(DCBF)操作提供服務之示範性方法的高階邏輯流程圖。同本文中所給出之其他邏輯流程圖一樣,可以與所展示次序不同之次序執行或可並行執行圖6A至圖6B中所描繪之步驟中的至少某些步驟。
圖6A之過程開始於區塊600處,該區塊600表示一L2快取記憶體230中之一主控器232自其處理單元104中之相關聯之處理器核心200接收CPU DCBF請求。CPU DCBF請求規定待自快取記憶體清空至系統記憶體之目標記憶體區塊。在不同實施例中,主控器232可經設計以在存在或不存在自窺探之情況下處置CPU DCBF請求。若主控器232經設計以根據其L2快取目錄302而自窺探CPU DCBF請求中所規定之位址,則該過程接著進行至區塊602(在下文加以描述)。然而,若主控器232未經設計以自窺探CPU DCBF請求中所規定之位址,則該過程自區塊600直接進行至區塊604。
在區塊604處,主控器232經由其局域互連114及系統互連110而將全域DCBF請求傳輸至資料處理系統100內之所有處理單元104。一般而言,全域DCBF請求至少包括一將請求識別為全域DCBF請求的異動類型(Ttype)及一識別待由全域DCBF操作清空之目標記憶體區塊的目標位址。此後,主控器232等待對全域DCBF請求之組合回應(CR)的接收以判定是否需要任何進一步行動(例如,使目標記憶體區塊之剩餘快取複本無效之背景清除(BK)操作)以完成全域DCBF操作。如區塊606處所展示的,若對全域DCBF請求之組合回應為重試,則該過程返回至區塊604,此表示主控器232重新發佈全域DCBF請求。若組合回應不為重試而為位址確認背景清除(Addr_Ack_BK)(區塊608),則該過程進行至區塊620(在下文加以描述)。Addr_Ack_BK組合回應指示DCBF請求達到一致性點,但需要背景清除操作來使仍保持於資料處理系統100中之目標記憶體區塊的快取複本無效。若主控器232在區塊606及608處判定組合回應不為重試或Addr_Ack_BK,則全域DCBF操作已成功完成,且該過程結束於區塊630處。
現參看區塊620,回應於Addr_Ack_BK組合回應之接收,當發出全域DCBF請求時可能已經或可能尚未成為目標記憶體區塊之HPC的主控器232相對於目標記憶體區塊假定HPC狀態並開始目標位址之HPC保護。對目標位址之HPC保護需要主控器232藉由提供Retry_other部分回應而防止請求對目標記憶體區塊之存取之其他操作成功。此外,如區塊622處所展示的,主控器232將全域背景清除(BK)請求傳輸至資料處理系統100中之所有處理單元104,該全域背景清除(BK)請求規定目標記憶體區塊之位址以強制仍保持於資料處理系統100內之目標記憶體區塊的所有快取複本無效。接著,主控器232在區塊624處等待對全域背景清除請求之組合回應。若組合回應不為空(意謂目標記憶體區塊之至少一快取複本仍保持於資料處理系統100中),則該過程返回至區塊622,且主控器232重新發佈全域背景清除請求。另一方面,若對全域背景清除請求之組合回應為空(意謂無目標記憶體區塊之快取複本保持於資料處理系統100中),則該過程進行至區塊626。在區塊626處,主控器232結束對目標記憶體區塊之HPC保護。此後,圖6A中所描繪之過程結束於區塊630處。
現返回至區塊602,在主控器232經設計以根據其L2快取目錄302而自窺探CPU DCBF請求中所規定之目標位址的建構中,主控器232存取L2快取目錄302以判定CPU DCBF請求之目標記憶體區塊是否具有L2快取目錄302中之資料有效一致性狀態(例如,M、Me、T、Te、Tn、Ten、S或Sr)。若不具有,則該過程轉至已描述之區塊604及隨後區塊。然而,若L2快取目錄302指示目標記憶體區塊具有L2快取目錄302中之資料有效一致性狀態,則該過程經由連接符A而轉至圖6B之區塊640。
在區塊640處,主控器232判定L2快取目錄302中的目標記憶體區塊之一致性狀態是否指示主控器232位於目標記憶體區塊之HPC處,亦即,主控器232判定一致性狀態是否為Mx(例如,M或Me)或Tx(例如,T、Te、Tn或Ten)。若主控器232在區塊640處判定其不位於目標記憶體區塊之HPC處,則該過程轉至區塊690,該區塊690說明主控器232開始對目標記憶體區塊之Sx保護。Sx保護需要主控器232向針對目標記憶體區塊之請求提供Retry_shared部分回應。接著,主控器232使其相關聯之一或多個上層級快取記憶體(例如,L1快取記憶體226)中之目標記憶體區塊無效(如區塊691處所展示的),並將目標記憶體區塊之一致性狀態更新為L2快取目錄302內之I(區塊692)。如區塊693及694處所指示的,此後主控器232在區塊691至692處所描繪之操作完成之後結束對目標記憶體區塊之Sx保護。此後,該過程經由頁連接符B而轉至已描述之圖6A之區塊604。
返回至區塊640,回應於L2快取目錄302中的目標記憶體區塊之一致性狀態指示主控器232位於目標記憶體區塊之HPC處的判定,該過程轉至區塊642至643。區塊642及643分別說明主控器232開始對目標記憶體區塊之HPC保護且此後使其相關聯之一或多個上層級快取記憶體(例如,L1快取記憶體226)中的目標記憶體區塊無效。主控器232亦根據其一致性狀態來相對於目標記憶體區塊而處置CPU DCBF請求。舉例而言,若主控器232判定目標記憶體區塊具有L2快取目錄302中之Me一致性狀態(此意謂經快取之記憶體區塊與系統記憶體108一致)(區塊644),則不需要對系統記憶體108之清空。結果,為向CPU DCBF請求提供服務,如區塊646處所展示的,主控器232僅將目標記憶體區塊之一致性更新為L2快取目錄302內之I。
現參看區塊650,若主控器232實情為判定目標記憶體區塊具有L2快取目錄302中之M一致性狀態,則主控器232執行對目標記憶體區塊之快速輸出推送(castout-push)以藉由記憶體區塊之最近複本更新系統記憶體108且接著將目標記憶體區塊之一致性狀態更新為L2快取目錄302內之I(區塊652)。
再次參看區塊650,回應於L2快取目錄302內之目標記憶體區塊之一致性狀態不為M的判定(意謂一致性狀態必然為Tx(例如,T、Te、Tn或Ten)),則該過程進行至區塊662。區塊662說明主控器232執行對目標記憶體區塊之快速輸出推送以藉由記憶體區塊之最近複本更新系統記憶體108且接著將目標記憶體區塊之一致性狀態更新為L2快取目錄302內之I。接下來,如區塊664處所指示的,主控器232以參照L2快取目錄302中之記憶體區塊之一致性狀態的方式來判定待在互連結構上發出之背景清除操作的範圍。
若一致性狀態為Tn或Ten(意謂僅在與主控器232相同之一致性定義域(例如,處理節點102)內快取(若快取)目標記憶體區塊),則無需全域背景清除操作。結果,如區塊666處所描繪的,主控器232在其局域互連114上廣播一範圍限於局域處理節點102之局域背景清除請求。如區塊668處所指示的,主控器232繼續重新發佈局域背景清除請求直至接收到空組合回應。
再次參看區塊664,若L2快取目錄302中之目標記憶體區塊的一致性狀態為T或Te,則可能在局域一致性定義域外快取目標記憶體區塊。因此,如區塊670處所描繪的,主控器232在其局域互連114上發出範圍包括所有處理節點102的全域背景清除請求。如區塊672處所指示的,主控器232繼續重新發佈全域背景清除請求直至接收到空組合回應。
在區塊646、652、672及668中之任一者之後,該過程進行至區塊679及680,該等區塊679及680描繪主控器232在所有前述步驟已完成之後結束對目標記憶體區塊之HPC保護。此後,該過程結束於圖6B之區塊681處。
現參看圖7A至圖7B,描繪根據本發明之、快取窺探器(諸如L2快取窺探器236)藉以處理全域DCBF請求之示範性方法的高階邏輯流程圖。如所展示的,該過程回應於L2快取窺探器236在其局域互連114上接收到請求而開始於圖7A之區塊700處。回應於請求之接收,窺探器236(例如)以參照請求內之異動類型(Ttype)欄位的方式在區塊702處判定請求是否為DCBF請求。若不是,則如區塊704處所展示的,窺探器236執行其他處理,且該過程結束於區塊724處。然而,若窺探器236在區塊702處判定請求為DCBF請求,則窺探器236在區塊710處進一步判定其目前是否能夠實質上回應該DCBF請求(例如,其是否具有可獲得之窺探邏輯執行個體及對L2快取目錄302之當前存取)。若窺探器236目前不能實質上回應定義域查詢請求,則如區塊712處所描繪的,窺探器236提供Retry_other之部分回應(PR),且藉由窺探器236之對DCBF請求的處理結束於區塊724處。
假定窺探器236能夠實質上回應DCBF請求,則窺探器236在區塊714處判定局域主控器232或窺探器236內之窺探邏輯執行個體當前是否正處理以與DCBF請求相同之記憶體位址為目標的衝突操作,且局域主控器232或窺探邏輯執行個體是否指示目標記憶體區塊具有資料有效一致性狀態(例如,Mx、Tx、Sr或S)。若窺探器236在區塊714處判定局域主控器232或窺探器236內之窺探邏輯執行個體當前正處理以與DCBF請求相同之記憶體位址為目標的衝突操作,且記憶體區塊具有目標記憶體區塊之資料有效一致性狀態,則窺探器236視目標記憶體區塊之所指示之一致性狀態而提供部分回應(區塊715)。亦即,若局域主控器232或窺探邏輯執行個體指示目標記憶體區塊之一致性狀態為Mx或Tx,則窺探器236提供Retry_other部分回應(區塊712),且若局域主控器232或窺探邏輯執行個體指示目標記憶體區塊之一致性狀態不為Mx或Tx,則窺探器236提供共用部分回應(區塊716)。在區塊712或716之後,藉由窺探器236對DCBF請求的處理結束於區塊724處。
然而,若窺探器236在區塊714處進行否定判定,則該過程轉至區塊720及730,該等區塊720及730描繪窺探器236判定其L2快取目錄302中之目標記憶體區塊的一致性狀態。若一致性狀態為Ix(例如,I、In、Ig、Igp),則窺探器236提供指示其L2快取記憶體230不保持目標記憶體區塊之複本(且因此DCBF請求不影響此L2快取記憶體230)的空部分回應(區塊722)。此後,該過程結束於區塊724處。然而,若一致性狀態為Mx或Tx,則窺探器236提供Retry_other部分回應(區塊732)以強制重新發佈DCBF請求直至窺探器236可將其目標記憶體區塊之複本推送至系統記憶體108。或者,若一致性狀態為Sx(例如,S或Sr),則窺探器236向DCBF請求提供共用部分回應(區塊734)。在區塊732及區塊734之後,該過程分別經由頁連接符D及頁連接符E而轉至圖7B。
現參看圖7B,描繪窺探器236之快速輸出及保護活動(若存在)。如所說明的,若窺探器236已判定目標記憶體區塊之一致性狀態為其L2快取目錄302中之Sx,則該過程自頁連接符E進行至區塊748(其描繪窺探器236開始對目標位址之Sx保護),此意謂窺探器236此後回應於以同一目標記憶體位址為目標的窺探操作而提供Retry_shared部分回應。在區塊748之後,該過程進行至區塊760(在下文加以描述)。
另一方面,若窺探器236已判定其L2快取目錄302中的目標記憶體區塊之一致性狀態為Mx或Tx,則圖7B中所展示之過程開始於頁連接符D處且此後進行至區塊740,該區塊740描繪窺探器236開始對目標記憶體區塊之HPC保護,此意謂窺探器236此後向以同一目標記憶體位址為目標的經窺探之操作提供Retry_other部分回應。此外,窺探器236根據其L2快取目錄302中的目標記憶體區塊之一致性狀態而執行快速輸出推送。如區塊742及744處所指示的,若窺探器236已判定目標記憶體區塊之一致性狀態為M、T或Tn,則窺探器236藉由執行目標記憶體區塊之快速輸出推送而以最近資料更新系統記憶體108。另一方面,若窺探器236已判定目標記憶體區塊之一致性狀態為Te(意謂可能在局域一致性定義域外快取目標記憶體之記憶體一致複本)(區塊750),則窺探器236僅需更新定義域指示器504以指示"全域"。如區塊752處所指示的,可如同在Ig一致性狀態下快取記憶體區塊一樣藉由執行對定義域指示器之無資料快速輸出推送而執行此更新。或者,可藉由執行如區塊744處所展示之習知快速輸出推送而更新定義域指示器504。在區塊744或區塊752之後,該過程轉至區塊760。
區塊760描繪窺探器236發出返回無效(back-invalidation)信號以使一或多個上層級快取記憶體(例如,L1快取記憶體226)中的DCBF操作之目標記憶體區塊無效。此外,如區塊762處所展示的,窺探器236藉由將L2快取目錄302中之相關項目更新為I一致性狀態而使L2快取記憶體230中之目標記憶體區塊無效。如區塊763及764處所指示的,接著窺探器236在區塊760及762處所描繪之操作已完全完成之後結束其用於目標記憶體區塊之HPC或Sx保護視窗。在區塊764之後,該過程終止於圖7B之區塊765處。
現參看圖8A,說明記憶體控制器(例如,IMC 206)藉以判定是否回應於全域DCBF請求之接收而調度窺探器222之過程的高階邏輯流程圖。如所展示的,該過程回應於IMC 206經由其局域互連114接收請求而開始於區塊800處。接著IMC 206在區塊802處以參照BAR邏輯240的方式判定該IMC 206是否負責經窺探之操作內所規定之目標位址。若不是,則該過程轉至區塊824並結束。然而,若IMC 206負責經窺探之請求內所規定之位址,則該過程進行至區塊803,該區塊803說明IMC 206以參照操作之Ttype的方式判定經窺探之請求是否為全域DCBF請求。若不是,則IMC 206執行如區塊804處所展示之其他處理,且該過程終止於區塊824處。
回應於IMC 206在區塊802處判定經窺探之請求為全域DCBF操作,該過程轉至區塊810,該區塊810描繪IMC 206判定窺探器222是否相對於全域DCBF請求內所規定之目標位址而當前有效。若是,則如區塊812處所描繪的,IMC 206向全域DCBF請求提供Retry_LPC部分回應。如區塊820及812處所指示的,若無窺探器222可用於調度,則IMC 206類似地向全域DCBF請求提供Retry_LPC部分回應。然而,回應於區塊820處之窺探器222可用於調度的判定,如區塊822處所說明的,IMC 206調度窺探器222以處置全域DCBF請求。此後,圖8A中所展示之過程終止於區塊824處。
現參看圖8B,描繪根據本發明之、記憶體控制器窺探器(例如,窺探器222)藉以處置全域DCBF請求之過程的高階邏輯流程圖。如所說明的,該過程回應於調度窺探器222以處置全域DCBF請求而開始於區塊830處(如上文以參照圖8A之區塊822的方式所描述的)。如區塊832處所展示的,接著窺探器222開始提供對目標記憶體區塊之位址的LPC保護。在提供此保護時,窺探器222向具有與目標記憶體區塊相同之位址的操作提供Retry_LPC部分回應。接下來,在區塊834處,窺探器222等待對全域DCBF操作之組合回應的接收。
窺探器222根據起始全域DCBF請求之主控器232的相對位置而回應組合回應(區塊840)。因此,若經窺探之全域DCBF請求內的範圍位元指示其源自一遠端處理節點102(亦即,不同於含有窺探器222之處理節點的處理節點102),則該過程轉至區塊842(在下文加以描述)。若全域DCBF請求並非源自一遠端處理節點102,而是源自窺探器222之處理節點102內,則無需對系統記憶體108中之定義域指示器504的更新。結果,窺探器222僅結束其LPC保護之提供(區塊850)且由IMC 206解除配置(區塊852)。此後,該過程結束於區塊860處。
現參看區塊842,經配置以處置全域DCBF請求之窺探器222判定相關聯之組合回應是否為Addr_Ack_BK組合回應。若不是,則該過程進行至已描述之區塊850。若是(意謂起始主控器232處之處理正經由區塊620至626而並行進行),則記憶體控制器窺探器222自系統記憶體108讀取目標記憶體區塊之定義域位元504(區塊843),測試該定義域位元504之值(區塊844),且若必要則更新定義域位元504以指示"全域"(區塊846)。在區塊844或846之後,該過程進行至已描述之區塊850。
現參看圖9,說明根據本發明之、回應邏輯210藉以產生對全域DCBF操作的組合回應之過程的高階邏輯流程圖。如所展示的,該過程開始於區塊900處且此後進行至區塊902,該區塊902說明由回應邏輯210(例如,在發出全域DCBF請求之主控器232之處理單元104內的回應邏輯210)之執行個體判定是否已回應於全域DCBF請求而接收到Retry_other或Retry_LPC之部分回應。若是,則回應邏輯210產生並全域廣播重試之組合回應(區塊904)以表示必須重新發佈全域DCBF請求。此後,該過程終止於區塊930處。
返回至區塊902,回應於回應邏輯210判定未接收到Retry_other或Retry_LPC部分回應,該過程進行至區塊910。區塊910描繪回應邏輯210判定是否接收到針對全域DCBF請求之Retry_shared部分回應。若是,則回應邏輯210產生並全域廣播Addr_Ack_BK組合回應(區塊912)以指示必須發出至少一局域或全域背景清除請求以成功完成DCBF操作。此後,該過程終止於區塊930處。然而,若回應邏輯210在區塊910處判定未接收到針對全域DCBF請求之Retry_shared部分回應,則回應邏輯210產生並全域廣播Addr_ack組合回應(區塊920),該回應指示全域DCBF操作成功。此後,圖9中所展示之過程結束於區塊930處。
如已描述的,本發明提供用於在具有多重一致性定義域之資料處理系統內處置清空操作之經改良之資料處理系統、處理單元、快取記憶體階層以及資料處理方法。
儘管已如參照較佳實施例所描述的而特定地展示了本發明,但熟習此項技術者應瞭解,在不脫離本發明之精神及範疇的情況下可在本發明中進行形式及細節之各種變化。
100...資料處理系統
102a、102b...處理節點
104、104a至104d...處理單元
108、108a至108d...系統記憶體
110...系統互連
114...局域互連
200a、200b...處理器核心
206...整合記憶體控制器
208...指令定序單元
210...回應邏輯
212...轉發邏輯/互連邏輯
214...I/O控制器
216...I/O裝置
222、236...窺探器
224...執行單元
226...L1快取記憶體
228...載入儲存單元
230...L2快取記憶體
232...主控器
234...L2陣列及目錄
238、240...基址暫存器(BAR)邏輯
250...範圍預測邏輯
300...L2快取陣列
302...L2快取目錄
304...標記欄位
306...狀態欄位
308...最近最少使用(LRU)欄位
402...請求
404a、404b...保護視窗
406...部分回應
410...組合回應
500...記憶體區塊
502...錯誤校正碼(ECC)
504...定義域指示器
A...連接符
B、D、E...頁連接符
圖1為根據本發明之示範性資料處理系統的高階方塊圖;圖2為根據本發明之處理單元的較詳細方塊圖;圖3為圖2中所描繪之L2快取記憶體陣列及目錄之較詳細方塊圖;圖4為圖1之資料處理系統之系統互連上的示範性異動之時空圖;圖5說明根據本發明之較佳實施例的定義域指示器;圖6A至圖6B一起形成根據本發明之、快取記憶體藉以向自資料處理系統內之處理器核心接收的資料快取記憶體區塊清空(DCBF)操作提供服務之示範性方法的高階邏輯流程圖;圖7A至圖7B一起形成根據本發明之、快取窺探器藉以處理DCBF操作之示範性方法的高階邏輯流程圖;圖8A為根據本發明之、記憶體控制器藉以判定是否回應於DCBF操作之接收而調度記憶體控制器窺探器之過程的高階邏輯流程圖;圖8B為根據本發明之、記憶體控制器窺探器藉以處置全域DCBF操作之過程的高階邏輯流程圖;且圖9為根據本發明之向全域DCBF操作提供組合回應之過程的高階邏輯流程圖。
100...資料處理系統
102a、102b...處理節點
104a至104d...處理單元
108a至108d...系統記憶體
110...系統互連
114...局域互連
Claims (8)
- 一種在一包括至少第一及第二一致性定義域之快取一致性資料處理系統內之資料處理方法,該第一一致性定義域含有一記憶體控制器及一具有一由一目標位址識別之目標記憶體區塊的相關聯系統記憶體,該方法包含:在該第一一致性定義域中,維持一指示是否在該第一一致性定義域外快取該目標記憶體區塊之定義域指示器;在該第一一致性定義域中接收一廣播至該第一及該第二一致性定義域之清空操作,該清空操作規定該目標記憶體區塊之該目標位址;在該第一一致性定義域中接收一表示對該清空操作之一全系統回應的對該清空操作之組合回應;回應於該組合回應於該第一一致性定義域中的接收,判定該組合回應是否指示該目標記憶體區塊之至少一快取複本可能保持於該資料處理系統內;回應於該組合回應指示該目標記憶體區塊之至少一快取複本可能保持於該資料處理系統內的一判定,更新該定義域指示器以指示在該第一一致性定義域外快取該目標記憶體區塊,其中該更新包含僅回應於該清空操作源自該第一一致性定義域外之一判定而更新該定義域指示器;及一起始該清空操作之處理單元回應於指示該記憶體區塊之至少一快取複本可能保持於該資料處理系統內的該 組合回應而發出至少一清除操作,以使該目標記憶體區塊之任何快取複本無效,其中該處理單元回應於該處理單元之一快取記憶體保持指示僅在該至少第一及第二一致性定義域之中含有該處理單元之一一致性定義域中快取該目標記憶體區塊之一快取狀態下之該目標記憶體區塊的一判定,而將該至少一清除操作之一範圍限於該至少第一及第二含有該處理單元之一致性定義域中之一單一一致性定義域。
- 如請求項1之方法,其進一步包括:回應於接收到該清空操作,一快取記憶體之一快取控制器存取一快取目錄;及回應於該快取控制器以參照該快取目錄的方式判定該快取記憶體保持該目標記憶體區塊之一經修改之複本:該快取控制器向該清空操作提供一強制重新發佈該清空操作之重試部分回應;該快取控制器對該記憶體區塊之該經修改之複本執行一快速輸出推送以更新該系統記憶體;及該快取控制器向與該清空操作衝突之任何經窺探之資料存取操作提供一重試部分回應,至少直至該快速輸出推送完成。
- 如請求項1之方法,其進一步包含:回應於接收到該清空操作,一快取記憶體之一快取控制器存取一快取目錄;及回應於該快取控制器以參照該快取目錄的方式判定該 快取記憶體保持該目標記憶體區塊之一共用複本:該快取控制器向該清空操作提供一指示該目標記憶體區塊之一快取複本保持於資料處理系統內的重試部分回應;該快取控制器使該目標記憶體區塊之該共用複本無效;及直至該無效,該快取控制器向與該清空操作衝突之任何經窺探之資料存取操作提供一指示該快取記憶體保持該目標記憶體區塊之一共用複本的部分回應。
- 如請求項1之方法,其進一步包含:回應於接收到該清空操作,一快取記憶體之一快取控制器存取一快取目錄;及回應於該快取控制器以參照該快取目錄的方式判定該快取記憶體為一保持該目標記憶體區塊之一未經修改之複本的一致性最高點:該快取控制器向該清空操作提供一強制重新發佈該清空操作之重試部分回應;該快取控制器執行一快速輸出以更新該定義域指示器;及該快取控制器向與該清空操作衝突之任何經窺探之資料存取操作提供一重試部分回應,至少直至該快速輸出完成。
- 一種資料處理系統,其包含:至少第一及第二一致性定義域,每一一致性定義域含 有至少一處理單元,該處理單元包括一處理器核心及一相關聯快取記憶體,該第一一致性定義域進一步包括一具有一由一目標位址識別之目標記憶體區塊的系統記憶體,其中該第一及第二一致性定義域之一者之該至少一處理單元包括一起始一清空操作之起始處理單元;一在該第一一致性定義域內之定義域指示器,其指示是否在該第一一致性定義域外快取該目標記憶體區塊;及一在該第一一致性定義域內之記憶體控制器,其耦接至該系統記憶體,其中該記憶體控制器回應於接收到該對一廣播至該第一及該第二一致性定義域的、規定該目標記憶體區塊之該目標位址之清空操作的組合回應,而判定該清空操作是否源自該第一一致性定義域外及判定該組合回應是否指示該目標記憶體區塊之一快取複本可能保持於該資料處理系統內,且回應於該組合回應指示該目標記憶體區塊之一快取複本可能保持於該資料處理系統內的一判定及該清空操作源自該第一一致性定義域外而更新該定義域指示器,以指示在該第一一致性定義域外快取該目標記憶體區塊;其中該起始處理單元回應於一指示該記憶體區塊之一快取複本可能保持於該資料處理系統內的組合回應之接收而發出至少一清除操作,以使該目標記憶體區塊之任何快取複本無效,其中該起始處理單元回應於該起始處理單元之一快取記憶體保持指示僅在含有該起始處理單 元之一致性定義域中快取該目標記憶體區塊之一快取狀態下之該目標記憶體區塊的一判定,而將該至少一清除操作之一範圍限於該第一及該第二一致性定義域中之一單一一致性定義域。
- 如請求項5之資料處理系統,其中:該快取記憶體係一第一快取記憶體;該至少一處理單元包括一窺探處理單元,該窺探處理單元包括一第二快取記憶體,該第二快取記憶體包括一快取目錄及一快取控制器;及該快取控制器回應於該清空操作而判定該快取目錄是否指示該相關聯快取記憶體保持該目標記憶體區塊之一經修改之複本,且回應於該判定而向該清空操作提供一強制重新發佈該清空操作之重試部分回應,對該記憶體區塊之該經修改之複本執行一快速輸出推送以更新該系統記憶體,並向與該清空操作衝突之任何經窺探之資料存取操作提供一重試部分回應,至少直至該快速輸出推送完成。
- 如請求項5之資料處理系統,其中:該快取記憶體係一第一快取記憶體;該至少一處理單元包括一窺探處理單元,該窺探處理單元包括一第二快取記憶體,該第二快取記憶體包括一快取目錄及一快取控制器;及該快取控制器回應於該清空操作而存取該快取目錄,且回應於該指示該快取記憶體保持該目標記憶體區塊之 一共用複本之快取目錄,而向該清空操作提供一指示該目標記憶體區塊之一快取複本保持於該資料處理系統內的重試部分回應,使該目標記憶體區塊之該共用複本無效,且,直至該無效,向與該清空操作衝突之任何經窺探之資料存取操作提供一指示該快取記憶體保持該目標記憶體區塊之一共用複本的部分回應。
- 如請求項5之資料處理系統,其中:該快取記憶體係一第一快取記憶體;該至少一處理單元包括一窺探處理單元,該窺探處理單元包括一第二快取記憶體,該第二快取記憶體包括一快取目錄及一快取控制器;及該快取控制器回應於接收到該清空操作而存取該快取目錄,且回應於該指示該快取記憶體為一保持該目標記憶體區塊之一未經修改之複本的一致性最高點之快取目錄,而向該清空操作提供一強制重新發佈該清空操作之重試部分回應,執行一快速輸出以更新該定義域指示器,並向與該清空操作衝突之任何經窺探之資料存取操作提供一重試部分回應,至少直至該快速輸出完成。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/342,951 US7543116B2 (en) | 2006-01-30 | 2006-01-30 | Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW200805062A TW200805062A (en) | 2008-01-16 |
| TWI393005B true TWI393005B (zh) | 2013-04-11 |
Family
ID=38323492
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW096100518A TWI393005B (zh) | 2006-01-30 | 2007-01-05 | 用於在具有多重一致性定義域之資料處理系統中處置清空操作之資料處理系統、快取系統以及方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US7543116B2 (zh) |
| JP (1) | JP5105863B2 (zh) |
| CN (1) | CN100570582C (zh) |
| TW (1) | TWI393005B (zh) |
Families Citing this family (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7685371B1 (en) * | 2006-04-19 | 2010-03-23 | Nvidia Corporation | Hierarchical flush barrier mechanism with deadlock avoidance |
| JP2008026944A (ja) * | 2006-07-18 | 2008-02-07 | Renesas Technology Corp | バス結合型マルチプロセッサ |
| JP4474570B2 (ja) * | 2008-01-28 | 2010-06-09 | エヌイーシーコンピュータテクノ株式会社 | キャッシュコヒーレンシ制御方法 |
| US9035959B2 (en) | 2008-03-28 | 2015-05-19 | Intel Corporation | Technique to share information among different cache coherency domains |
| US8904115B2 (en) * | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
| US8935485B2 (en) | 2011-08-08 | 2015-01-13 | Arm Limited | Snoop filter and non-inclusive shared cache memory |
| US9053057B2 (en) | 2012-09-14 | 2015-06-09 | Empire Technology Development Llc | Cache coherence directory in multi-processor architectures |
| CN103729304B (zh) * | 2012-10-11 | 2017-03-15 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
| WO2014123542A1 (en) * | 2013-02-11 | 2014-08-14 | Empire Technology Development Llc | Aggregating cache eviction notifications to a directory |
| GB201403684D0 (en) | 2014-03-03 | 2014-04-16 | King S College London | Vector |
| US9767063B2 (en) * | 2015-03-04 | 2017-09-19 | Qualcomm Incorporated | Adaptive access control for hardware blocks |
| JP6631317B2 (ja) * | 2016-02-26 | 2020-01-15 | 富士通株式会社 | 演算処理装置、情報処理装置および情報処理装置の制御方法 |
| US10031834B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
| US10157139B2 (en) * | 2016-09-19 | 2018-12-18 | Qualcomm Incorporated | Asynchronous cache operations |
| US10459824B2 (en) * | 2017-09-18 | 2019-10-29 | Microsoft Technology Licensing, Llc | Cache-based trace recording using cache coherence protocol data |
| US11907091B2 (en) | 2018-02-16 | 2024-02-20 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches |
| US10877836B2 (en) * | 2018-08-29 | 2020-12-29 | Arm Limited | Method and apparatus for coherent interconnect recovery with protocol layer re-transmission |
| US10949346B2 (en) * | 2018-11-08 | 2021-03-16 | International Business Machines Corporation | Data flush of a persistent memory cache or buffer |
| US10970215B1 (en) | 2019-12-03 | 2021-04-06 | International Business Machines Corporation | Cache snooping mode extending coherence protection for certain requests |
| US11157409B2 (en) * | 2019-12-17 | 2021-10-26 | International Business Machines Corporation | Cache snooping mode extending coherence protection for certain requests |
| US11157408B2 (en) * | 2019-12-17 | 2021-10-26 | International Business Machines Corporation | Cache snooping mode extending coherence protection for certain requests |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TW502165B (en) * | 2000-02-02 | 2002-09-11 | Sony Electronics Inc | System and method for effectively utilizing a cache memory in an electronic device |
| US20030097529A1 (en) * | 2001-10-16 | 2003-05-22 | International Business Machines Corp. | High performance symmetric multiprocessing systems via super-coherent data mechanisms |
| US6606676B1 (en) * | 1999-11-08 | 2003-08-12 | International Business Machines Corporation | Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system |
| TWI220032B (en) * | 1999-06-01 | 2004-08-01 | Ibm | Data processing system and method for performing address translation |
| TWI244092B (en) * | 1999-02-17 | 2005-11-21 | Lexar Media Inc | Memory system |
Family Cites Families (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2819982B2 (ja) * | 1993-03-18 | 1998-11-05 | 株式会社日立製作所 | 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム |
| JPH0816474A (ja) * | 1994-06-29 | 1996-01-19 | Hitachi Ltd | マルチプロセッサシステム |
| US6173371B1 (en) * | 1997-04-14 | 2001-01-09 | International Business Machines Corporation | Demand-based issuance of cache operations to a processor bus |
| JPH1185615A (ja) * | 1997-09-08 | 1999-03-30 | Canon Inc | 情報処理システム及び情報処理装置及びその制御方法 |
| US6338123B2 (en) * | 1999-03-31 | 2002-01-08 | International Business Machines Corporation | Complete and concise remote (CCR) directory |
| US6654857B2 (en) * | 2001-06-21 | 2003-11-25 | International Business Machines Corporation | Non-uniform memory access (NUMA) computer system having distributed global coherency management |
| US6901485B2 (en) * | 2001-06-21 | 2005-05-31 | International Business Machines Corporation | Memory directory management in a multi-node computer system |
| JP2003216596A (ja) * | 2002-01-17 | 2003-07-31 | Hitachi Ltd | マルチプロセッサシステム及びノード装置 |
| US7194587B2 (en) * | 2003-04-24 | 2007-03-20 | International Business Machines Corp. | Localized cache block flush instruction |
| US7130967B2 (en) * | 2003-12-10 | 2006-10-31 | International Business Machines Corporation | Method and system for supplier-based memory speculation in a memory subsystem of a data processing system |
| JP4119380B2 (ja) * | 2004-02-19 | 2008-07-16 | 株式会社日立製作所 | マルチプロセッサシステム |
| US8140770B2 (en) * | 2005-02-10 | 2012-03-20 | International Business Machines Corporation | Data processing system and method for predictively selecting a scope of broadcast of an operation |
| US7454578B2 (en) * | 2005-02-10 | 2008-11-18 | International Business Machines Corporation | Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory |
| US7478201B2 (en) * | 2005-05-24 | 2009-01-13 | International Business Machines Corporation | Data processing system, cache system and method for passively scrubbing a domain indication |
-
2006
- 2006-01-30 US US11/342,951 patent/US7543116B2/en not_active Expired - Fee Related
- 2006-12-26 JP JP2006350414A patent/JP5105863B2/ja not_active Expired - Fee Related
-
2007
- 2007-01-05 TW TW096100518A patent/TWI393005B/zh not_active IP Right Cessation
- 2007-01-12 CN CNB2007100013891A patent/CN100570582C/zh not_active Expired - Fee Related
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI244092B (en) * | 1999-02-17 | 2005-11-21 | Lexar Media Inc | Memory system |
| TWI220032B (en) * | 1999-06-01 | 2004-08-01 | Ibm | Data processing system and method for performing address translation |
| US6606676B1 (en) * | 1999-11-08 | 2003-08-12 | International Business Machines Corporation | Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system |
| TW502165B (en) * | 2000-02-02 | 2002-09-11 | Sony Electronics Inc | System and method for effectively utilizing a cache memory in an electronic device |
| US20030097529A1 (en) * | 2001-10-16 | 2003-05-22 | International Business Machines Corp. | High performance symmetric multiprocessing systems via super-coherent data mechanisms |
Also Published As
| Publication number | Publication date |
|---|---|
| US7543116B2 (en) | 2009-06-02 |
| CN101013398A (zh) | 2007-08-08 |
| JP5105863B2 (ja) | 2012-12-26 |
| TW200805062A (en) | 2008-01-16 |
| JP2007207223A (ja) | 2007-08-16 |
| US20070180196A1 (en) | 2007-08-02 |
| CN100570582C (zh) | 2009-12-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI463318B (zh) | 快取一致性處理系統、快取記憶體,及其方法 | |
| JP4928812B2 (ja) | タグ付きキャッシュ状態に基づいて下位レベル・キャッシュへの参照なしに相互接続ファブリック上にリクエストを送出するためのデータ処理システム、キャッシュ・システム、および方法 | |
| TWI393005B (zh) | 用於在具有多重一致性定義域之資料處理系統中處置清空操作之資料處理系統、快取系統以及方法 | |
| US8140770B2 (en) | Data processing system and method for predictively selecting a scope of broadcast of an operation | |
| US7747826B2 (en) | Data processing system and method for efficient communication utilizing an in coherency state | |
| JP5116418B2 (ja) | マルチプロセッサ・データ処理システムにおいて、データを処理する方法、マルチプロセッサ・データ処理システムのための処理ユニット、およびデータ処理システム | |
| US7716428B2 (en) | Data processing system, cache system and method for reducing imprecise invalid coherency states | |
| US7404046B2 (en) | Cache memory, processing unit, data processing system and method for filtering snooped operations | |
| US20090006766A1 (en) | Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a history-based prediction | |
| CN100570584C (zh) | 数据处理系统中初始化存储块的方法和装置 | |
| JP4594900B2 (ja) | メモリ・ブロックを初期設定するためのプロセッサ、データ処理システム、および方法 | |
| US7577797B2 (en) | Data processing system, cache system and method for precisely forming an invalid coherency state based upon a combined response | |
| US7467262B2 (en) | Data processing system, cache system and method for scrubbing a domain indication in response to execution of program code | |
| US7454578B2 (en) | Data processing system and method for predictively selecting a scope of broadcast of an operation utilizing a location of a memory | |
| JP5004571B2 (ja) | 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法 | |
| US7584331B2 (en) | Data processing system and method for selectively updating an invalid coherency state in response to snooping a castout | |
| US7725619B2 (en) | Data processing system and method that permit pipelining of I/O write operations and multiple operation scopes |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |