TWI385514B - 用於儲存資料及其對應同調性記錄的方法、具有窺探過濾器的裝置和系統、以及具有儲存在內之指令的非暫時性機器可存取媒體 - Google Patents

用於儲存資料及其對應同調性記錄的方法、具有窺探過濾器的裝置和系統、以及具有儲存在內之指令的非暫時性機器可存取媒體 Download PDF

Info

Publication number
TWI385514B
TWI385514B TW096140554A TW96140554A TWI385514B TW I385514 B TWI385514 B TW I385514B TW 096140554 A TW096140554 A TW 096140554A TW 96140554 A TW96140554 A TW 96140554A TW I385514 B TWI385514 B TW I385514B
Authority
TW
Taiwan
Prior art keywords
cache memory
cache
data
affinity structure
location
Prior art date
Application number
TW096140554A
Other languages
English (en)
Other versions
TW200830098A (en
Inventor
Sundaram Chinthamani
Kai Cheng
Malcolm Mandviwalla
Bahaa Fahim
Keith Pflederer
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW200830098A publication Critical patent/TW200830098A/zh
Application granted granted Critical
Publication of TWI385514B publication Critical patent/TWI385514B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0822Copy directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories

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

用於儲存資料及其對應同調性記錄的方法、具有窺探過濾器的裝置和系統、以及具 有儲存在內之指令的非暫時性機器可存取媒體 發明的技術領域
本發明的實施例係有關一種用於減少窺探過濾器中之回溯無效化動作的行調換方案。
發明的技術背景
使用多個處理器或具有多個核心的處理器已經成為一種增加新進電腦系統之運算功率的方法。多處理器與多核心系統共享系統資源,例如系統記憶體與儲存裝置。多個處理器或核心往往存取記憶體或儲存裝置中的相同資料,並且嘗試著同時使用此資料。為了達成此目的,多處理器與多核心系統追蹤資料的使用狀況以維持資料同調性。在多處理器系統中維持資料同調性的一面向是為了確保在各個處理器中快取的資料為同調的。例如,各個處理器可在把其記憶體中的資料寫回到系統記憶體之前,改變該資料。在經改變資料被寫回到記憶體之前,如果另一個處理器向系統記憶體請求此資料,便會遺失資料同調性。
一種用以在該等系統中維持資料同調性的普通方案是使用一窺探過濾器。為了確保資料同調性,處理器或核心可在存取或修改資料之前傳送同調性請求,通常稱為對其他處理器的窺探動作。習知的窺探過濾器維持來自各個處理器或核心之資料請求的快取記憶體,以追蹤各個處理器或核心之快取記憶體的內容。每當處理器從記憶體取回資料時,便把包括該資料之標記位址的同調性記錄儲存在窺探過濾器中。然而,窺探過濾器並不知悉已被處理器或核心逐出的快取記憶體分錄,因為對處理器來說,把所有快取記憶體命中記憶體參照傳送到窺探過濾器以維持處理器之快取記憶體分錄以及窺探過濾器分錄之間的完美相符狀況是不切實際的。例如,對窺探過濾器來說,來自處理器的經常參照行是過期的,因為該行中的活動並未暴露在內部快取記憶體階層體系之外。在另一種情景中,可利用另一個快取記憶體未命中位址置換處理器之快取記憶體中的乾淨(未修改)行,而不需要通知窺探過濾器。因此,窺探過濾器可能具有許多不再受到處理器使用且沒有時效的資料分錄。再者,為了讓出位置給新的分錄,當從處理器或核心接收到一新請求時,窺探過濾器可能必須逐出仍受到使用的快取記憶體分錄。
可利用一種取代演譯法來選出受選為被逐出的快取記憶體分錄。該窺探過濾器的一種取代演譯法隨機地選出欲逐出之窺探過濾器快取記憶體中的分錄,以讓出位置給該新分錄。此動作將針對受逐出分錄而對處理器或核心發送一回溯無效化訊息。然而,如果受逐出的分錄仍由處理器或核心使用,該處理器或核心將需要再度向系統記憶體請求對應資料。此動作產生處理器或核心以及中樞控制器之間之匯流排上的額外訊務,進而降低其他資料傳輸的可得頻寬。
為了最小化此程序對匯流排頻寬以及處理器使用狀況的效應,窺探過濾器快取記憶體典型地夠大而能追蹤窺探過濾器涵蓋之處理器中所有快取記憶體的合併大小範圍數次。實際上,窺探過濾器可比該系統中之處理器或核心之快取記憶體的整體大小大上四到八倍。該等大型的窺探過濾器佔用相當大的空間,並且增加了複雜性,因而增加了中樞控制器的費用。因此,選出一良好取代策略是優於增加窺探過濾器大小的。同樣地,提出發布回溯無效化動作的改進方案亦是所欲的。
發明的概要說明
本發明揭露一種方法,其包含下列步驟:接收對來自多個處理器中之一處理器的資料之一請求;至少部分地根據該請求判定一快取記憶體分錄位置;把該資料儲存在對應於該處理器的一快取記憶體中於該快取記憶體分錄位置上;以及把對應於該資料的一同調性記錄儲存在對應於該快取記憶體的一親和結構中。
圖式的簡要說明
係以舉例方式而不具限制性的方式把本發明實施例展示於下列圖式中;在圖式中,相同/相似的元件編號代表相同/相似的元件。應該要注意的是,本發明中之"一實施例"或"一個實施例"等用語未必表示相同的實施例,且該等用語表示至少一個實施例。
第1圖展示出一種包括路程暗示窺探過濾器的系統實施例。
第2圖展示出一種路程暗示窺探過濾器實施例。
第3A圖展示出一種路程暗示窺探過濾器中的親和結構實施例。
第3B圖展示出該路程暗示窺探過濾器中的快取記憶體分錄實施例。
第4圖展示出一種根據路程暗示進行快取記憶體管理程序的實施例。
第5A圖展示出一種快取記憶體管理程序的實例。
第5B圖展示出一種快取記憶體管理程序的實例。
第5C圖展示出一種快取記憶體管理程序的實例。
第5D圖展示出一種快取記憶體管理程序的實例。
第6圖展示出根據另一實施例之一種快取記憶體管理程序的實例。
第7圖展示出根據另一實施例(如第6圖所展示)的一種方法流程圖。
第8A圖至第8D圖展示出根據一實施例的一種行配置程序。
第9圖展示出根據另一實施例(如第6圖所展示)的一種方法流程圖。
第10A圖至第10D圖根據另一實施例展示出一種行配置程序。
較佳實施例的詳細說明
第1圖展示出一種包括〝路程暗示〞窺探過濾器的系統實施例。系統100可為任何類型的多處理器或多核心系統,包括個人電腦、主機電腦、手持式電腦、消費性電子裝置(蜂巢式電話、手持式遊戲裝置、機上盒、或相似的裝置)、網路裝置、車用/航空用電子控制器或其他相似裝置。
系統100可具有任何數量的處理器107、111,其各具有與處理器107、111相關聯的至少一快取記憶體109、113。在一實施例中,系統100可具有固定數量的處理器107、111。在另一實施例中,系統100可具有用於任何數量之處理器的插槽或介面。可藉著加入處理器到該系統中或者從該系統移除處理器來改變處理器的數量。
在一實施例中,處理器107、111可為具有分別核心的處理器,且可位於分別封裝體中以及分別基體上。在另一實施例中,處理器可含容單一基體與晶片封裝體上的多個核心,或該等之組合。為了解說便利的目的,所述的例示系統為一種多處理器個人電腦系統。各個處理器107、111具有一組快取記憶體。如本文使用地,〝一組〞可表示任何數量的物件,包括一個。例如,一處理器可具有第1級快取記憶體以及第2級快取記憶體。可把最高階級的快取記憶體稱為最後階級快取記憶體(LLC)。
各個處理器107、111可透過匯流排115、117與中樞控制器101進行通訊。中樞控制器101可為管理在處理器107、111以及系統記憶體105之間移動之資料以及在系統100之其他裝置119之間移動之資料的一裝置或晶片組。在一實施例中,單一中樞控制器101可出現在系統100中。在另一實施例中,可有多個中樞控制器,或者可把中樞控制器101劃分為多個部件。例如,某些個人電腦系統具有二個中樞控制器,其稱為一北橋以及一南橋。
在一實施例中,中樞控制器101可透過分別的匯流排115、117與各個處理器107、111進行通訊。在其他實施例中,多個處理器可透過單一匯流排進行通訊,或者可共享一匯流排子集合。可把介於處理器107、111以及中樞控制器101之間的匯流排115、117稱為前端匯流排(FSB)。
在一實施例中,系統記憶體105可為任何類型的動態隨機存取記憶體(DRAM)裝置或記憶體裝置組。例如,系統記憶體105可包括同步DRAM、雙資料率DRAM、靜態隨機存取記憶體(SRAM)、以及相似類型的記憶體裝置。系統記憶體105可用來儲存供處理器107、111使用的資料以及程式指令。在其他實施例中,系統記憶體可為靜態記憶體裝置、快閃記憶體裝置或相似記憶體裝置,例如電性可抹除可編程唯讀記憶體(EEPROM)、記憶棒或相似裝置。
與系統100進行通訊的其他裝置119可包括網路裝置與網路卡、圖形裝置、大型儲存裝置,例如硬碟機、可移除式儲存裝置,例如小型光碟(CD)與數位多用途碟片(DVD)驅動機與相似裝置。該等裝置的出現係根據該等裝置類型為系統100的哪部分而有所不同。例如,如果該系統為一種網路裝置,那麼多個網路卡或通訊裝置可出現,但可能沒有圖形裝置,例如圖形卡與監視器。
在一實施例中,多處理器系統100管理中樞控制器101中處理器之間的資料同調性。此動作可透過針對各個處理器107、111管理LLC資料來完成。窺探過濾器103可參與管理處理器107、111之間的資料同調性。窺探過濾器103可維持儲存在各個LLC 109、113中之資料的快取記憶體同調性狀態表述,其中該快取記憶體同調性狀態表述代表各個該等LLC 109、113中的資料組織。窺探過濾器103可監看來自各個處理器107、111之資料的請求。該等資料請求,例如讀取請求,可含容預期快取狀態資訊,以及請求資訊。例如,請求資訊可包括請求類型、路程暗示、親和結構指示符、標記位址、以及預設位址。窺探過濾器可使用預期快取狀態資訊與請求資訊來維持各個快取記憶體109、113之組織的最新快取記憶體同調性狀態表述。
第2圖展示出窺探過濾器103的一實施例。窺探過濾器103包括快取狀態儲存結構209。在一實施例中,快取狀態儲存結構為可儲存同調性記錄的一快取記憶體,例如一組組合快取記憶體或相似儲存結構。可組織快取狀態儲存結構209以代表該系統之處理器的各個LLC。可把快取狀態儲存結構209邏輯性地再細分為一組親和結構。該系統中的各個處理器可具有一親和結構。一親和結構可為一儲存裝置或快取狀態儲存結構209的一區段,其以相同於該親和結構所代表之相關聯LLC的相同組織方式來組織。
第3A圖展示出窺探過濾器103之快取狀態儲存結構209中的親和結構實施例。各個親和結構211A至211D可包括一組〝階層〞。一階層為由一組〝路程〞組成的一種位置指示符類型。一路程為一階層中一快取記憶體行的一磁格或位置指示符。各階層可含容任何數量的通道。在一實施例中,各組可含容八條通道。可根據處理器中LLC的對應組織來判定各個親和結構中的階層與路程數量。親和結構、階層與路程的定索引方案為一例示實施例。可使用任何其他定索引以及組織方案,以使窺探過濾器資料結構209能塑造出各個LLC的組織。為了便利目的,已說明了親和結構、階層與路程組織的實施例。然而,亦可使用具有其他組織方案的其他實施例。
第3B圖展示出快取狀態儲存結構209之路程303中的同調性記錄實施例。在一實施例中,各個同調性記錄可儲存有關LLC中之對應快取記憶體分錄的資訊。同調性記錄303可包括標記位址資料305、快取狀態資料307以及匯流排指示符資料309。標記位址資料305可為符合對應LLC之快取記憶體中之標記資料的資料。例如,標記位址資料305可為一快取記憶體行之一位址的一部分。快取狀態資料307可為代表LLC中之快取記憶體行之狀態的資料,例如該資料是否為處理器專屬的、共享的、無效的、經修改的、或相似的狀態資訊。匯流排指示符資料309為用以表示保有資料之LLC與中樞控制器進行通訊之匯流排的一位元階層。匯流排指示符資料309可具有對應於系統中可得之各個匯流排線的一位元,或者可編碼處理器用以與中樞進行通訊的匯流排線。一快取記憶體分錄可出現在不只一個LLC中,因此可能需要使用多個匯流排來傳遞有關各個該等LLC中之一快取記憶體分錄的狀態資料。
請回頭參照第2圖的討論部分,窺探過濾器103透過用於處理器之個別匯流排的介面201、203與各個處理器進行通訊。在一實例中,窺探過濾器103可與各具有一分別匯流排的二個處理器進行通訊。在此實例中,窺探過濾器103具有透過第一匯流排與第一處理器通訊的第一介面201,以及透過第二匯流排與第二處理器通訊的第二介面203。
在透過匯流排介面201、203接收到來自一處理器的請求資料時,可剖析或處理該請求以判定一親和結構指示符,以及一"路程暗示"。一請求可為一讀取請求、針對排他性請求、或相似資料請求。在一實施例中,該請求可含容表示路程位置或路程暗示的一路程編號,其中係把受請求資料儲存在提出請求處理器的LLC中。在另一實施例中,可備置其他資訊,例如LLC中之受害分錄的同調性狀態。
在一實施例中,可對同調引擎207提供請求資訊,或者可對快取狀態儲存結構209套用請求資訊,以判定對應於受請求資料的標記位址是否出現在任何親和結構211A至211B中,且因此是否出現在系統之處理器的任何LLC中。可把此項搜尋結果送回到同調引擎207。在一實施例中,可藉著把受請求標記資料套用到各個親和結構來進行此項搜尋,並且利用快取狀態儲存結構209的階層組合特徵來判定任何相符標記之親和結構中的位置。在另一實施例中,可使用其他搜尋技術。
同調引擎分析該等搜尋結果與路程暗示、標記位址資料、匯流排或處理器識別資訊、以及階層位置指示。在一實施例中,可在該請求中指明該階層位置,且該階層位置可為針對一映射的固定位置、簡單的二進制解碼、圖表查找、或特別雜湊功能解碼,以提供一種一對一的持續映射。可利用標記查找(較高位址欄位比較)來進行該路程,或者如果並未在查找中發現的話,可使用其他選擇方案,包括但不限於虛擬最近最少使用(pLRU、pseudo-least-recently-used)、完整或部分路程暗示、或隨機。
替代地,可藉著套用用以選出一階層的相同演譯法來判定階層位置,其係由對應處理器與LLC套用以供選出一階層。於此,預設指示符資訊並不需要明確地包含在請求資料中。可使用任何階層選擇演譯法,包括隨機選擇演譯法、循環演譯法、或相似演譯法。在另一實施例中,階層指示符資料或相似資料係包括在該請求中。
在一實施例中,同調引擎207分析輸入資料、判定如何轉送從處理器接收到的請求、如何更新窺探過濾器資料結構209、以及是否要產生無效化訊息以供傳送到適當LLC。欲轉送到其他處理器的無效化訊息與請求隨後將被發送到適當匯流排介面201、203。轉送到記憶體而欲完成的請求將被發送到中央資料管理器(CDM)213。中央資料管理器213負責管理中樞控制器與系統記憶體之間以及其他裝置之間的資料傳輸動作。
第4圖展示出一種由窺探過濾器進行以維持資料同調性的程序實施例。在一實施例中,此程序係藉著接收來自處理器的請求來開始(方塊401)。該請求可為一讀取請求、針對排他性請求、或相似資料請求。該請求可套用到窺探過濾器的資料結構,以判定所要求的資料是否存在(方塊403)。此程序可為一查找程序、搜尋程序、或相似程序。
在取得查找程序的結果之後,可把該請求轉送到適當的目的地以供履行(方塊405)。如果在資料結構中找到所請求資料,那麼便把該請求轉送到處理器以及含容該資料的快取記憶體。可在查找結果中指出保有所請求資料的處理器或快取記憶體,並且根據當中發現有與該請求相符狀況的親和結構來判定該資料。如果並未找到所請求的資料,便把該請求轉送到系統記憶體以供完成。相似地,如果在資料結構中找到所請求的資料,但其狀態資訊表示出它為無效的,便在系統記憶體中完成該請求。
為了容納欲送回到提出請求處理器快取記憶體的資料,將更新由窺探過濾器維持的快取記憶體表述。將藉著針對新分錄配置空間來更新此表述。將藉著檢測在上面接收到該請求的匯流排,來判定響應於該請求而進行更新的親和結構。亦可剖析或處理該請求,以判定包含在該請求中的路程暗示或位置暗示。將根據該請求提供的路程暗示而藉著使用一種階層選擇演譯法(其符合提出請求處理器的階層選擇演譯法),選出用以把該新分錄儲存在窺探過濾器中的磁格。於此,將針對提出請求處理器之快取記憶體中的請求資料以及窺探過濾器的資料結構來分配對應分錄。此方案允許資料結構小於傳統的快取記憶體、降低丟棄任何處理器使用之快取記憶體分錄的可能性,並且最小化中樞控制器、提出請求處理器、以及履行請求之任何處理器之間之匯流排的頻寬使用狀況。
將進行一項檢查以判定快取記憶體中的選定空間是否受到佔用(方塊409)。如果該磁格並未受到佔用,便更新該磁格以反映出正受儲存在提出請求處理器快取記憶體之對應空間中的資料(方塊413)。當該請求從處理器返回時,將在窺探過濾器中更新此資料,其中該請求係受到完成或來自記憶體,依據所要求資料的位置而定。如果該磁格受到佔用,便把該磁格逐出(方塊411)。可把受到逐出的資料暫時儲存在一緩衝器中,直到對起源處理器發送一無效化訊息為止,以便確保在尚未使資料無效化時,該提出請求的處理器並不會仰賴該資料(方塊415)。
如果從另一個處理器取回該資料,可藉著對該處理器發送一無效化訊息使該處理器的分錄無效化。例如,如果接收到針對另一個處理器之快取記憶體之資料的排他性請求,那麼在接收到該資料之後,便把無效化訊息發送到該處理器。
第5A圖至第5D圖展示出窺探過濾器取代演譯法的操作實例。在此實例中,二個中央處理單元(CPU)與窺探過濾器509通訊。該等二個CPU可為雙核心且具有多個快取記憶體,各個快取記憶體用於各個核心。窺探過濾器509具有一組對應親和結構511A至511D。在此實例中,親和結構511A對應於快取記憶體505,而親和結構511C對應於快取記憶體507。在第5A圖中,快取記憶體505包括資料項目A,而快取記憶體507包括資料項目C。對應於快取記憶體505的親和結構511A在對應於快取記憶體505中之項目A的位置中包括項目A的指示符,即階層1、路程2。相似地,快取記憶體507包括階層1、路程1中的項目C。親和結構511C在對應階層1、路程1中包括項目C的指示符。
第5B圖展示出由處理器501提出針對資料項目B的請求以及由處理器503提出針對資料項目D的請求。處理器501選出當中要儲存受請求項目的階層1、路程2。選出LLC505中之此位置的動作可根據任何演譯法來進行,包括循環、最近最少使用、相似取代演譯法,或該等之組合。同樣地,處理器503選出階層1、路程1以儲存受要求項目D。
第5C圖展示出該系統在該請求已受履行後的狀態。於此,資料項目B與D並未出現在窺探過濾器509中且在系統記憶體中完成,進而導致把項目B與D儲存在LLC 505、507的選定位置中。同樣地,已利用所提供的請求資料來更新親和結構511A、511C中的對應分錄,分別包括路程暗示2與1,以及各個處理器501、503之階層選擇演譯法的知悉。將暫時地把已逐出的資料項目A與C儲存在回溯無效化緩衝器513中。
第5D圖展示出傳送回溯無效化訊息到處理器501、503以及LLC 505、507的動作。可把針對資料項目A與C的回溯無效化訊息傳送到處理器501、503,其為逐出窺探過濾器分錄所參照之處,如匯流排指示符資料309所示(第3B圖)。當窺探過濾器並未完整地追蹤處理器501、503中的快取記憶體行、該路程暗示並未適切地受到判定、該階層選擇演譯法並未在處理器501、503與窺探過濾器509之間相符、或者在該資料係在處理器501、503內部的較低階級快取記憶體(未展示)中受到快取時,該等訊息確保資料的同調性。
請回頭參照第3A圖,在另一實施例中,可至少部分地根據處理器中之LLC的對應組織來判定各個親和結構中的階層數量,且該親和結構之各個階層中的路程數量可為該處理器之對應LLC中之路程的縮減階層。在此實施例中,各個路程可把有關對應快取記憶體分錄位置的資料儲存在LLC中,其中如果未發現所請求的快取記憶體分錄,可衍生出對應快取記憶體分錄。
請參照第6圖,處理器601可包含一或多個快取記憶體605,且處理器603可包含一或多個快取記憶體607(每個處理器僅展示出一個快取記憶體)。窺探過濾器609可包含一組親和結構611A至611B,其各對應於處理器601、603。在此實例中,親和結構611A對應於快取記憶體605,而親和結構611B對應於快取記憶體607。在此實例中,各個快取記憶體605、607包含M個階層以及N個路程。再者,各個對應親和結構611A、611B包含M個階層以及N-X個路程(其中X為大於0的一整數),因此相較於各個對應快取記憶體605、607,各個親和結構611A、611B中的每個階層具有較少路程。在所展示的實例中,假設M=5、N=10、X=5,因此各個快取記憶體605、607包含5個階層,且各個階層包含10個路程;因此各個親和結構611A、611B包含5個階層,且各個階層包含5路程(已縮減)。
第7圖展示出根據此實施例的一種方法流程圖。此方法開始於方塊700,且前進至方塊702,其中此方法包含接收來自多個處理器中之一處理器的一項資料請求。請回頭參照第6圖,在一實例中,處理器601可請求資料項目A。
在方塊704中,此方法可包含至少部分地根據該請求來判定一快取記憶體分錄位置。在一實施例中,快取記憶體分錄位置可包含一階層以及一路程。在一實施例中,該請求可包含一路程暗示。在另一實施例中,該階層以及該路程均可包括在該請求中。
在第6圖中,快取記憶體分錄位置可包含階層1、路程2。在此實例中,如果有快取記憶體未命中狀況(即,如果所請求的資料並未出現在窺探過濾器609中,且因此並未在任何處理器快取記憶體605、607中發現,或者有出現在窺探過濾器609中,但卻被標示為無效),可在系統記憶體上完成該資料請求。
在方塊706中,此方法包含把資料儲存在對應於快取記憶體分錄位置上之該處理器的一快取記憶體中。
請回頭參照第6圖,在從系統記憶體取回資料項目A時,可把資料項目A儲存在處理器快取記憶體605的經判定快取記憶體分錄位置中。
在方塊708中,如果有快取記憶體未命中狀況,此方法包含根據方塊708A與708B中之一把對應於該資料的一同調性記錄儲存在窺探過濾器中。
在方塊708A中,如果在對應親和結構中找到該快取記憶體分錄位置,此方法包含把同調性記錄儲存在窺探過濾器中之對應親和結構的快取記憶體分錄位置上。
請再次參照第6圖,因為係在對應親和結構611A中找到快取記憶體分錄位置(即,階層1、路程2),可藉著把同調性記錄CRA(對應於處理器601中的資料項目)另外地儲存在對應親和結構611A的快取記憶體分錄位置上來更新對應親和結構611A。在一實施例中,因為係在對應親和結構611A、611B中複製各組處理器快取記憶體605、607而並未複製各個路程編號,如果該路程編號(即,路程2)係位於對應於快取記憶體605的親和結構611A中,便可找到所請求的快取記憶體分錄位置。
在方塊708B中,如果並未在對應親和結構中發現快取記憶體分錄位置,此方法包含把同調性記錄儲存在對應親和結構的衍生快取記憶體分錄位置上。
請回頭參照第6圖,在從系統記憶體取回資料項目B時,可把資料項目B儲存在處理器快取記憶體607的選定快取記憶體分錄位置中。在此實例中,因為並未在對應親和結構611B中找到快取記憶體分錄位置(即,階層2、路程5),可藉著另外在對應親和結構611B的衍生快取記憶體分錄位置上儲存同調性記錄CRB(對應於資料項目B)來更新對應親和結構611B。在一實施例中,因為係在對應親和結構611A、611B中複製各組處理器快取記憶體605、607而並未複製各個路程編號,如果該路程編號(即,路程5)並未位於對應於快取記憶體607的親和結構611B中,便不會發現所請求的快取記憶體分錄位置。
例如,把同調性記錄儲存在對應於快取記憶體之親和結構的衍生快取記憶體分錄位置上的動作包含在把該同調性記錄儲存在該親和結構中的隨機選定路程上。此路程可為選定親和結構中的任何路程。例如,在親和結構611B中(假設5個路程),可包含W0、W1、W2、W3或W4。
舉另一實例,把同調性記錄儲存在對應於快取記憶體之親和結構的衍生快取記憶體分錄位置上的動作包含計算一路程編號。此動作包含至少部分地根據該路程編號以及相關聯親和結構的數個路程來計算一路程編號。例如,如第6圖所示,所衍生的路程編號包含選定的路程編號(例如5),親和結構611B中的路程數量(親和結構611B中的5個路程),其在此狀況中為0。因此,在第6圖中,可把資料項目B儲存在階層2、路程0中。當然,可使用其他的計算方法。
此方法可結束於方塊710。
第8A圖展示出一種情景,其中資料項目A可受到共享。在此實例中,可首先由處理器601請求資料項目A,且把其儲存在快取記憶體分錄位置中,如處理器快取記憶體605的階層1、路程2所示(800A)。可藉著另外把同調性記錄CRA(對應於資料項目A)儲存在親和結構611A的經判定快取記憶體分錄位置上(802A)來更新對應親和結構611A。後續地,可由處理器603請求資料項目A,且把其儲存在快取記憶體分錄位置上,如處理器快取記憶體607的階層1、路程1所示(804A)。
在一實施例中,因為己把對應於資料項目A的同調性記錄CRA儲存在親和結構611A中,並未更新對應親和結構611B。在此實施例中,僅更新對應於存取資料項目之第一處理器之快取記憶體的親和結構。第8B圖展示出快取記憶體605、607的所得狀態以及對應親和結構611A、611B。
請參照第8C圖,如果處理器601後續請求資料項目C並且選出處理器快取記憶體605之階層1、路程2表示的快取記憶體分錄位置(其中儲存資料項目C),那麼在取回資料項目C時,可把它儲存在處理器快取記憶體605的經判定快取記憶體分錄位置中(800C)。因為此快取記憶體分錄位置受到佔用(即,含容資料項目A),可從快取記憶體605中的快取記憶體分錄位置逐出資料項目A(802C)。再者,可從對應親和結構611A的快取記憶體分錄位置逐出對應同調性記錄CRA(804C),並且把對應於資料項目C的同調性記錄CRC儲存在對應親和結構611A的快取記憶體分錄位置中(806C)。隨後可把受逐出的資料項目A暫時地儲存在回溯無效化緩衝器613中(808C),且把一回溯無效化訊息發送到共享資料項目A的一或多個處理器,進而能從對應快取記憶體逐出資料項目A(810C)。第8D圖展示出快取記憶體605、607的所得狀態以及對應親和結構611A、611B。因著回溯無效化,處理器603(以及當中在回溯無效化訊息之前先快取了資料項目A的任何其他處理器)提出之針對資料項目的後續請求可導致快取記憶體未命中狀況。在高共享工作負載環境中,此動作會使快取記憶體未命中率大大地增高。
第9圖展示出根據另一實施例的一種方法流程圖。此方法開始於方塊900,且繼續前進至方塊902,此方法可包含接收來自多個處理器中之一處理器的資料請求,該請求包括一快取記憶體分錄位置。在一實施例中,該快取記憶體分錄位置可包含一階層以及一路程。
在方塊904中,此方法包含至少部分地根據該請求來判定一快取記憶體分錄位置。在一實施例中,快取記憶體分錄位置可包含一階層以及一路程。在一實施例,該請求可包含一路程暗示。在另一實施例中,該階層與該路程均可包括在該請求中。
在第6圖中,快取記憶體分錄位置可包含階層1、路程2。在此實例中,如果有快取記憶體未命中狀況(即,如果所請求的資料並未出現在窺探過濾器609中,且因此未在任何處理器快取記憶體605、607中發現該資料,或該資料出現在窺探過濾器609中但卻被標示為無效),可在系統記憶體中完成該資料請求。
在方塊906中,此方法包含把資料儲存在對應於快取記憶體分錄位置上之該處理器的一快取記憶體中。
請回頭參照第6圖,在從系統記憶體取回資料項目A時,可把資料項目A儲存在處理器快取記憶體605的經判定快取記憶體分錄位置中。
在方塊908中,此方法包含把對應於該資料的同調性記錄儲存在對應於快取記憶體的一親和結構中。與第7圖的實施例相反的是,可把同調性記錄儲存在一親和結構(例如提出請求處理器的親和結構)中,不管是否有發生快取記憶體未命中狀況。
在此實施例中,如果發生一快取記憶體命中狀況,可把同調性記錄儲存在對應於提出請求處理器之快取記憶體的親和結構中。在一實施例中,可根據路程暗示取代策略(完整或部分的)來選出親和結構的特定快取記憶體分錄位置。特別地,在一實施例中,快取記憶體命中狀況可發生在該等多個處理器之另一個處理器之另一個快取記憶體的另一個快取記憶體分錄位置上。於此,對應於所請求資料的同調性記錄係藉著以另一個快取記憶體(即,含容所請求資料的快取記憶體)之另一個快取記憶體分錄位置中的資料來調換對應於提出請求處理器之快取記憶體之親和結構之快取記憶體分錄位置上的資料,而受儲存在對應於提出請求處理器之快取記憶體之親和結構的快取記憶體分錄位置上。換言之,可把對應於提出請求處理器之快取記憶體之親和結構中的同調性記錄遷移到對應於快取記憶體而儲存有該所請求資料的親和結構。
再者,在此實施例中,如果發生快取記憶體未命中狀況,可根據是否在對應親和結構中找到快取記憶體分錄位置而把同調性記錄儲存在快取記憶體分錄位置上,或一衍生快取記憶體分錄位置上。如果在對應親和結構中找到快取記憶體分錄位置,可把同調性記錄儲存在對應於快取記憶體之一親和結構的快取記憶體分錄位置上。另一方面,如果並未在對應親和結構中找到快取記憶體分錄位置,可把同調性記錄儲存在對應於快取記憶體之親和結構的一衍生快取記憶體分錄位置上。
替代地,可根據其他取代策略來選出特定的快取記憶體分錄位置,例如包括隨機或pLRU。
此方法可結束於方塊910。
第10A圖至第10D圖展示出利用一種部分路程暗示取代策略之第9圖的該方法。
在第10A圖中,可首先由處理器601請求資料項目A,且把它儲存在快取記憶體分錄位置中,如處理器快取記憶體605的階層1、路程2所示(1000A)。可藉著另外把同調性記錄CRA(對應於資料項目A)儲存在親和結構611A的經判定快取記憶體分錄位置上(1002A)來更新對應親和結構611A。後續地,可由處理器603請求資料項目A,且把它儲存在快取記憶體分錄位置上,如處理器快取記憶體607的階層1、路程1所示(1004A)。在此實施例中,可更新對應於提出請求處理器603之快取記憶體607的親和結構611B。於此,因為有快取記憶體命中狀況(即,資料項目A係位於對應於處理器601的快取記憶體605中),可藉著把對應於經判定快取記憶體分錄位置上之處理器之快取記憶體之親和結構中的同調性記錄調換為另一個快取記憶體分錄位置上之另一個處理器之快取記憶體之親和結構中的同調性記錄,來儲存對應於所請求資料項目的同調性記錄。第10B圖展示出快取記憶體605、607的所得狀態以及對應親和結構611A、611B。
請參照第10C圖,如果處理器601請求資料項目C且選出處理器快取記憶體605之階層1、路程2代表的快取記憶體分錄位置(其中儲存有資料項目C),隨後在發生快取記憶體未命中狀況時,可從系統記憶體取回資料項目C並且把它儲存在處理器快取記憶體605的經判定快取記憶體分錄位置中(1000C)。因為此快取記憶體分錄位置受到佔用(即,含容資料項目A),可從快取記憶體605中的快取記憶體分錄位置逐出資料項目A(1002C)。然而,並不需要從對應於快取記憶體605的親和結構(即,親和結構611A)逐出同調性記錄CRA,因為已經把同調性記錄CRA遷移到最後請求該資料項目之處理器的親和結構,其在此實例中為處理器603以及對應親和結構611B。因此,當最後提出請求的處理器603後續請求資料項目A時(即,最可能請求資料項目A的處理器),將不會發生快取記憶體未命中狀況。第10D圖展示出快取記憶體605、607的所得狀態以及對應親和結構611A、611B。
在第10A圖至第10D圖中,可根據部分路程暗示取代策略來判定在第9圖流程圖之調換方案中被選出的受害者(即,路程)。然而,此調換方案亦可套用到其他取代策略,包括但不限於:完整路程暗示取代策略、隨機取代策略、以及pLRU取代策略。
在一實施例中,可把窺探過濾器以及其部件實行為硬體裝置。在另一實施例中,可把該等部件實行於軟體中(例如,微碼、組合語言、或較高階級語言)。可把該等軟體實行方案儲存在機器可讀媒體上。〝機器可讀〞或〝機器可存取〞媒體包括可儲存或傳輸呈機器(例如,電腦網路裝置、個人數位助理製造工具、具有一或多個處理器的任何裝置等)可存取形式之資訊的任何媒體或機構。機器可讀或可存取媒體的實例包括可錄製以及不可錄製媒體,例如唯讀記憶體(ROM)隨機存取記憶體(RAM)、磁性儲存媒體、光學儲存媒體、實體儲存媒體、快閃記憶體、或相似媒體。
已在前面的發明說明中參照特定實施例來說明本發明的實施例。然而,顯而易見的是,在不偏離由下列申請專利範圍界定之本發明較廣精神與範圍的條件下,可進行各種不同的修改方案以及變化方案。因此,本發明說明應被視為具有展示性而不具有限制性。
100...系統
101...中樞控制器
103...窺探過濾器
105...系統記憶體
107...處理器
109...最後階級快取記憶體(LLC)
111...處理器
113...最後階級快取記憶體(LLC)
115...前端匯流排(FSB)
117...前端匯流排(FSB)
119...其他裝置
201...第一介面、第一前端匯流排(FSB)
203...第二介面、第二前端匯流排(FSB)
205...路程選擇單元
207...同調引擎
209...快取狀態儲存結構
211A...親和結構0
211B...親和結構1
211C...親和結構2
211D...親和結構3
213...中央資料管理器(CDM)
301...階層
303...路程
305...標記位址資料
307...快取狀態資料
309...匯流排指示符資料
401~419...步驟方塊
501...處理器
503...處理器
505...快取記憶體
507...快取記憶體
509...窺探過濾器
511A...親和結構0
511B...親和結構1
511C...親和結構2
511D...親和結構3
513...回溯無效化緩衝器
601...處理器
603...處理器
605...快取記憶體
607...快取記憶體
609...窺探過濾器
611A...親和結構
611B...親和結構
613...回溯無效化緩衝器
700~710...步驟方塊
800A...把資料項目A儲存在快取記憶體分錄位置中
800C...把資料項目C儲存在快取記憶體分錄位置中
802A...把同調性記錄儲存在快取記憶體分錄位置上
802C...從快取記憶體分錄位置逐出資料項目A
804A...把資料項目A儲存在快取記憶體分錄位置中
804C...從快取記憶體分錄位置逐出同調性記錄
806C...把同調性記錄儲存快取記憶體分錄位置中
808C...把逐出資料項目A暫時儲存在回溯無效化緩衝器中
810C...從快取記憶體逐出資料項目A
900~910...步驟方塊
1000A...把資料項目A儲存在快取記憶體分錄位置中
1000C...把資料項目C儲存在快取記憶體分錄位置中
1002A...把同調性記錄儲存在快取記憶體分錄位置上
1002C...從快取記憶體分錄位置逐出資料項目A
1004A...把資料項目A儲存在快取記憶體分錄位置中
第1圖展示出一種包括路程暗示窺探過濾器的系統實施例。
第2圖展示出一種路程暗示窺探過濾器實施例。
第3A圖展示出一種路程暗示窺探過濾器中的親和結構實施例。
第3B圖展示出該路程暗示窺探過濾器中的快取記憶體分錄實施例。
第4圖展示出一種根據路程暗示進行快取記憶體管理程序的實施例。
第5A圖展示出一種快取記憶體管理程序的實例。
第5B圖展示出一種快取記憶體管理程序的實例。
第5C圖展示出一種快取記憶體管理程序的實例。
第5D圖展示出一種快取記憶體管理程序的實例。
第6圖展示出根據另一實施例之一種快取記憶體管理程序的實例。
第7圖展示出根據另一實施例(如第6圖所展示)的一種方法流程圖。
第8A圖至第8D圖展示出根據一實施例的一種行配置程序。
第9圖展示出根據另一實施例(如第6圖所展示)的一種方法流程圖。
第10A圖至第10D圖根據另一實施例展示出一種行配置程序。
103...窺探過濾器
201...第一介面、第一前端匯流排(FSB)
203...第二介面、第二前端匯流排(FSB)
205...路程選擇單元
207...同調引擎
209...快取狀態儲存結構
211A...親和結構0
211B...親和結構1
211C...親和結構2
211D...親和結構3
213...中央資料管理器(CDM)

Claims (22)

  1. 一種用於儲存資料及其對應同調性記錄的方法,其包含下列步驟:於一窺探過濾器,自多個處理器中之一處理器接收對於資料的一請求;至少部分根據該請求而判定一快取記憶體分錄位置;於該快取記憶體分錄位置把該資料儲存在對應於該處理器的一快取記憶體中;把對應於該資料的一同調性記錄儲存在對應於該快取記憶體的一親和結構中;以及判定在對應於該等多個處理器中之另一處理器的另一快取記憶體之另一快取記憶體分錄位置上的一快取記憶體命中狀況的出現,其中把對應於該資料的該同調性記錄儲存在該親和結構中之步驟包含:於根據一路程暗示取代策略所選出的該快取記憶體分錄位置把該資料儲存在對應於該快取記憶體的一親和結構中;及把於該快取記憶體分錄位置的在該親和結構中之該同調性記錄與於該另一快取記憶體分錄位置的在對應於該另一快取記憶體之該親和結構中之一同調性記錄調換,其中被逐出之資料在一無效化訊息被傳送至一起源處理器之前會被暫時性地儲存在 一緩衝器中,以確保提出請求的該處理器並非仰賴尚未被無效化的資料。
  2. 如申請專利範圍第1項之方法,其中把對應於該資料的一同調性記錄儲存在對應於該快取記憶體之一親和結構中之步驟包含:於一隨機選出快取記憶體分錄位置把該資料儲存在對應於該快取記憶體的一親和結構中。
  3. 如申請專利範圍第1項之方法,其另包含下列步驟:判定該快取記憶體未命中狀況的出現,其中把該同調性記錄儲存在對應於該快取記憶體之一親和結構中之步驟包含:若在對應之該親和結構中找到該快取記憶體分錄位置,把該同調性記錄儲存在該親和結構的該快取記憶體分錄位置上;以及若在對應之該親和結構中找不到該快取記憶體分錄位置,把該同調性記錄儲存在該親和結構的一衍生快取記憶體分錄位置上。
  4. 如申請專利範圍第3項之方法,其中該快取記憶體分錄位置包含一階層以及一路程。
  5. 如申請專利範圍第4項之方法,其中把該同調性記錄儲存在一衍生快取記憶體分錄位置上之步驟包含:把該同調性記錄儲存在該親和結構中的一隨機選出路程上。
  6. 如申請專利範圍第4項之方法,其中把該同調性記錄儲 存在一衍生快取記憶體分錄位置上之步驟包含:計算一路程號碼。
  7. 如申請專利範圍第1項之方法,其另包含下列步驟:響應於一快取記憶體未命中狀況之出現,於對應於該等多個處理器中之所有其他處理器的快取記憶體之該快取記憶體分錄位置把對應於該資料的一同調性記錄儲存在對應於該快取記憶體的一親和結構中。
  8. 如申請專利範圍第1項之方法,其中判定在該另一快取記憶體之該另一快取記憶體分錄位置上的該快取記憶體命中狀況的出現之步驟係對應於該等多個處理器中之提出請求的該處理器。
  9. 如申請專利範圍第1項之方法,其中該路程暗示取代策略為完整的或部分的。
  10. 如申請專利範圍第1項之方法,其另包含下列步驟:把對應於提出請求的該處理器之該快取記憶體的該親和結構中之該同調性記錄遷移至對應於儲存有所請求之該資料的該快取記憶體之該親和結構中。
  11. 一種具有窺探過濾器的裝置,其包含:可運作來進行下列動作的一硬體窺探過濾器:自多個處理器中之一處理器接收對於資料之一請求;至少部分根據該請求而判定一快取記憶體分錄位置;於該快取記憶體分錄位置把該資料儲存在對 應於該處理器的一快取記憶體中;把對應於該資料的一同調性記錄儲存在對應於該快取記憶體的一親和結構中;以及判定在對應於該等多個處理器中之另一處理器的另一快取記憶體之另一快取記憶體分錄位置上的一快取記憶體命中狀況的出現,其中把對應於該資料的該同調性記錄儲存在該親和結構中之動作包含:於根據一路程暗示取代策略所選出的該快取記憶體分錄位置把該資料儲存在對應於該快取記憶體的一親和結構中;及把於該快取記憶體分錄位置的在該親和結構中之該同調性記錄與於該另一快取記憶體分錄位置的在對應於該另一快取記憶體之該親和結構中之一同調性記錄調換,其中被逐出之資料在一無效化訊息被傳送至一起源處理器之前會被暫時性地儲存在一緩衝器中,以確保提出請求的該處理器並非仰賴尚未被無效化的資料。
  12. 如申請專利範圍第11項之裝置,其中該窺探過濾器係藉著於一隨機選出快取記憶體分錄位置把該資料儲存在對應於該快取記憶體的一親和結構中,來把對應於該資料的一同調性記錄儲存在對應於該快取記憶體的一親和結構中。
  13. 如申請專利範圍第11項之裝置,其中該窺探過濾器另可運作來進行下列動作:判定該快取記憶體未命中狀況的出現,其中該窺探過濾器係藉著下列動作來把該同調性記錄儲存在對應於該快取記憶體的一親和結構中:若在對應之該親和結構中找到該快取記憶體分錄位置,把該同調性記錄儲存在該親和結構的該快取記憶體分錄位置上;以及若在對應之該親和結構中找不到該快取記憶體分錄位置,把該同調性記錄儲存在該親和結構的一衍生快取記憶體分錄位置上。
  14. 如申請專利範圍第13項之裝置,其中該快取記憶體分錄位置包含一階層以及一路程,並且該窺探過濾器係藉著計算一路程號碼來把該同調性記錄儲存在一衍生快取記憶體分錄位置上。
  15. 如申請專利範圍第11項之裝置,其另包含一控制器裝置來包含有該窺探過濾器,其中該控制器裝置係用於:將該等多個處理器耦合至一系統記憶體,以及管理資料在該等多個處理器與該系統記憶體之間的移動。
  16. 一種具有窺探過濾器的系統,其包含:一個靜態隨機存取記憶體(SRAM);耦合至該SRAM的多個處理器;以及耦合在該等多個處理器與該SRAM之間的一晶片 組,該晶片組包括一窺探過濾器,該窺探過濾器可運作來自該SRAM取用資料及進行下列動作:自多個處理器中之一處理器接收對於資料之一請求;至少部分根據該請求而判定一快取記憶體分錄位置;於該快取記憶體分錄位置把該資料儲存在對應於該處理器的一快取記憶體中;把對應於該資料的一同調性記錄儲存在對應於該快取記憶體的一親和結構中;以及判定在對應於該等多個處理器中之另一處理器的另一快取記憶體之另一快取記憶體分錄位置上的一快取記憶體命中狀況的出現,其中把對應於該資料的該同調性記錄儲存在該親和結構中之動作包含:於根據一路程暗示取代策略所選出的該快取記憶體分錄位置把該資料儲存在對應於該快取記憶體的一親和結構中;及把於該快取記憶體分錄位置的在該親和結構中之該同調性記錄與於該另一快取記憶體分錄位置的在對應於該另一快取記憶體之該親和結構中之一同調性記錄調換,其中被逐出之資料在一無效化訊息被傳送至一起源處理器之前會被暫時性地儲存在一緩衝器中,以 確保提出請求的該處理器並非仰賴尚未被無效化的資料。
  17. 如申請專利範圍第16項之系統,其中該窺探過濾器另可運作來進行下列動作:判定該快取記憶體未命中狀況的出現,其中該窺探過濾器係藉著下列動作來把該同調性記錄儲存在對應於該快取記憶體的一親和結構中:若在對應之該親和結構中找到該快取記憶體分錄位置,把該同調性記錄儲存在該親和結構的該快取記憶體分錄位置上;以及若在對應之該親和結構中找不到該快取記憶體分錄位置,把該同調性記錄儲存在該親和結構的一衍生快取記憶體分錄位置上。
  18. 如申請專利範圍第17項之系統,其中該快取記憶體分錄位置包含一階層以及一路程,並且該窺探過濾器係藉著計算一路程號碼來把該同調性記錄儲存在一衍生快取記憶體分錄位置上。
  19. 如申請專利範圍第16項之系統,其中該晶片組可管理資料在該等多個處理器與該SRAM之間的移動。
  20. 一種具有儲存在內之指令的非暫時性機器可存取媒體,該等指令在由一機器執行時會致使進行下列動作:於一窺探過濾器,自多個處理器中之一處理器接收對於資料的一請求;至少部分根據該請求而判定一快取記憶體分錄位 置;於該快取記憶體分錄位置把該資料儲存在對應於該處理器的一快取記憶體中;把對應於該資料的一同調性記錄儲存在對應於該快取記憶體的一親和結構中;以及判定在對應於該等多個處理器中之另一處理器的另一快取記憶體之另一快取記憶體分錄位置上的一快取記憶體命中狀況的出現,其中把對應於該資料的該同調性記錄儲存在該親和結構中之動作包含:於根據一路程暗示取代策略所選出的該快取記憶體分錄位置把該資料儲存在對應於該快取記憶體的一親和結構中;及把於該快取記憶體分錄位置的在該親和結構中之該同調性記錄與於該另一快取記憶體分錄位置的在對應於該另一快取記憶體之該親和結構中之一同調性記錄調換,其中被逐出之資料在一無效化訊息被傳送至一起源處理器之前會被暫時性地儲存在一緩衝器中,以確保提出請求的該處理器並非仰賴尚未被無效化的資料。
  21. 如申請專利範圍第20項之媒體,其另包含下列動作:判定該快取記憶體未命中狀況的出現,其中把該同調性記錄儲存在對應於該快取記憶體之一親和結構中之動作包含: 若在對應之該親和結構中找到該快取記憶體分錄位置,把該同調性記錄儲存在該親和結構的該快取記憶體分錄位置上;以及若在對應之該親和結構中找不到該快取記憶體分錄位置,把該同調性記錄儲存在該親和結構的一衍生快取記憶體分錄位置上。
  22. 如申請專利範圍第21項之媒體,其中該快取記憶體分錄位置包含一階層以及一路程,並且其中把該同調性記錄儲存在一衍生快取記憶體分錄位置上之動作包含計算一路程號碼。
TW096140554A 2006-12-14 2007-10-29 用於儲存資料及其對應同調性記錄的方法、具有窺探過濾器的裝置和系統、以及具有儲存在內之指令的非暫時性機器可存取媒體 TWI385514B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/638,851 US8055851B2 (en) 2006-12-14 2006-12-14 Line swapping scheme to reduce back invalidations in a snoop filter

Publications (2)

Publication Number Publication Date
TW200830098A TW200830098A (en) 2008-07-16
TWI385514B true TWI385514B (zh) 2013-02-11

Family

ID=38962285

Family Applications (1)

Application Number Title Priority Date Filing Date
TW096140554A TWI385514B (zh) 2006-12-14 2007-10-29 用於儲存資料及其對應同調性記錄的方法、具有窺探過濾器的裝置和系統、以及具有儲存在內之指令的非暫時性機器可存取媒體

Country Status (6)

Country Link
US (1) US8055851B2 (zh)
KR (1) KR100978156B1 (zh)
CN (1) CN101236527B (zh)
DE (1) DE102007052853B4 (zh)
GB (1) GB2444818B (zh)
TW (1) TWI385514B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080109624A1 (en) * 2006-11-03 2008-05-08 Gilbert Jeffrey D Multiprocessor system with private memory sections
US8015365B2 (en) 2008-05-30 2011-09-06 Intel Corporation Reducing back invalidation transactions from a snoop filter
US8782347B2 (en) * 2009-06-26 2014-07-15 Intel Corporation Controllably exiting an unknown state of a cache coherency directory
US8301842B2 (en) * 2009-08-26 2012-10-30 Via Technologies, Inc. Efficient pseudo-LRU for colliding accesses
US9558119B2 (en) * 2010-06-23 2017-01-31 International Business Machines Corporation Main memory operations in a symmetric multiprocessing computer
US8489822B2 (en) 2010-11-23 2013-07-16 Intel Corporation Providing a directory cache for peripheral devices
CN102819420B (zh) * 2012-07-31 2015-05-27 中国人民解放军国防科学技术大学 基于命令取消的高速缓存流水线锁步并发执行方法
US9086980B2 (en) 2012-08-01 2015-07-21 International Business Machines Corporation Data processing, method, device, and system for processing requests in a multi-core system
US9535848B2 (en) * 2014-06-18 2017-01-03 Netspeed Systems Using cuckoo movement for improved cache coherency
US9727466B2 (en) * 2014-08-26 2017-08-08 Arm Limited Interconnect and method of managing a snoop filter for an interconnect
US9639470B2 (en) * 2014-08-26 2017-05-02 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
US9507716B2 (en) * 2014-08-26 2016-11-29 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
US10417128B2 (en) * 2015-05-06 2019-09-17 Oracle International Corporation Memory coherence in a multi-core, multi-level, heterogeneous computer architecture implementing hardware-managed and software managed caches
JP6451538B2 (ja) * 2015-07-22 2019-01-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20170185515A1 (en) * 2015-12-26 2017-06-29 Bahaa Fahim Cpu remote snoop filtering mechanism for field programmable gate array
NO345417B1 (en) * 2019-03-22 2021-01-18 Numascale As Snoop filter device
US11334495B2 (en) * 2019-08-23 2022-05-17 Arm Limited Cache eviction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020010838A1 (en) * 1995-03-24 2002-01-24 Mowry Todd C. Prefetching hints
US20040003184A1 (en) * 2002-06-28 2004-01-01 Safranek Robert J. Partially inclusive snoop filter
US6857048B2 (en) * 2002-01-17 2005-02-15 Intel Corporation Pseudo least-recently-used (PLRU) replacement method for a multi-node snoop filter
US20060004963A1 (en) * 2004-06-30 2006-01-05 Matthew Mattina Apparatus and method for partitioning a shared cache of a chip multi-processor

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6018763A (en) * 1997-05-28 2000-01-25 3Com Corporation High performance shared memory for a bridge router supporting cache coherency
US6647466B2 (en) * 2001-01-25 2003-11-11 Hewlett-Packard Development Company, L.P. Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
US7590804B2 (en) 2005-06-28 2009-09-15 Intel Corporation Pseudo least recently used replacement/allocation scheme in request agent affinitive set-associative snoop filter

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020010838A1 (en) * 1995-03-24 2002-01-24 Mowry Todd C. Prefetching hints
US6857048B2 (en) * 2002-01-17 2005-02-15 Intel Corporation Pseudo least-recently-used (PLRU) replacement method for a multi-node snoop filter
US20040003184A1 (en) * 2002-06-28 2004-01-01 Safranek Robert J. Partially inclusive snoop filter
US20060004963A1 (en) * 2004-06-30 2006-01-05 Matthew Mattina Apparatus and method for partitioning a shared cache of a chip multi-processor

Also Published As

Publication number Publication date
DE102007052853B4 (de) 2018-09-27
GB2444818A (en) 2008-06-18
DE102007052853A1 (de) 2008-07-03
KR100978156B1 (ko) 2010-08-25
US20080147986A1 (en) 2008-06-19
CN101236527A (zh) 2008-08-06
KR20080055681A (ko) 2008-06-19
GB2444818B (en) 2010-08-25
CN101236527B (zh) 2012-09-05
US8055851B2 (en) 2011-11-08
TW200830098A (en) 2008-07-16
GB0723332D0 (en) 2008-01-09

Similar Documents

Publication Publication Date Title
TWI385514B (zh) 用於儲存資料及其對應同調性記錄的方法、具有窺探過濾器的裝置和系統、以及具有儲存在內之指令的非暫時性機器可存取媒體
US10204051B2 (en) Technique to share information among different cache coherency domains
US7962694B2 (en) Partial way hint line replacement algorithm for a snoop filter
CN101593160B (zh) 减少来自侦听过滤器的后无效事务
US7698508B2 (en) System and method for reducing unnecessary cache operations
US10402327B2 (en) Network-aware cache coherence protocol enhancement
CN101425043B (zh) 解决高速缓存冲突
US7277992B2 (en) Cache eviction technique for reducing cache eviction traffic
CN102033817B (zh) 归属代理数据和存储器管理
JP2007257631A (ja) 動作のスヌーピングに応答して無効コヒーレンシー状態を更新するデータ処理システム、キャッシュ・システム、および方法
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US20070233965A1 (en) Way hint line replacement algorithm for a snoop filter
TWI502346B (zh) 根據窺探回應資訊之目錄快取分配技術
US7325102B1 (en) Mechanism and method for cache snoop filtering
US6314500B1 (en) Selective routing of data in a multi-level memory architecture based on source identification information
US20070033347A1 (en) Interconnect transaction translation technique

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees