TWI522802B - 確保微處理器之快取記憶體層級之資料一致性的裝置與方法 - Google Patents
確保微處理器之快取記憶體層級之資料一致性的裝置與方法 Download PDFInfo
- Publication number
- TWI522802B TWI522802B TW098119678A TW98119678A TWI522802B TW I522802 B TWI522802 B TW I522802B TW 098119678 A TW098119678 A TW 098119678A TW 98119678 A TW98119678 A TW 98119678A TW I522802 B TWI522802 B TW I522802B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- removal
- cache memory
- cache line
- memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
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
本發明係有關於一種微處理器,特別是有關於在快取記憶體層級中快取線由低階記憶體移至高階記憶體期間內,確保微處理器之快取記憶體層級的資料一致性。
現有的微處理器具有一個或多個內部快取記憶體以減少對微處理器記憶體之平均存取時間。快取記憶體具有多種不同的架構及尺寸,但是一般都具有一個資料儲存區域和一個位址儲存區域。資料儲存區域一般是被規劃作為一些位元組的快取線(cache line)。在一實施例中,快取線為64位元組(bytes)。快取記憶體一般是存儲指令或資料,也可以是被規劃作為混合式快取記憶體,其中,混合式快取記憶體儲存指令及資料。快取記憶體係以層級(hierarchically)的方式配置。在具有層級1(Level 1,L1)與層級2(Level,L2)快取記憶體之微處理器中,L1快取記憶體之存取最為快速,且當在微處理器之記憶體次系統中尋找指令或資料時,L1快取記憶體是被查閱的第一個快取記憶體。一般而言,L2快取記憶體之尺寸比L1快取記憶體來得大,其存取速度比L1快取記憶體來得慢。
資料由系統記憶體或高階快取記憶體(例如在具有L1及L2快取記憶體之微處理器中的L2快取記憶體)轉而儲存在低階快取記憶體(例如L1快取記憶體)之快取線時,通常是因應於一快取失敗(cache miss)。當讀取(載入)或寫入(儲存)企圖存取此快取記憶體時,若其正讀取之位址或所寫入之位址不在此快取記憶體時,則發生快取失敗。對於一載入指令而言,微處理器將通常把來自L2快取記憶體或系統記憶體之資料(不論此資料是否為最快速可存取格式)載入至L1快取記憶體中的有效快取線。對於一儲存指令而言,假使存在有效的快取線時,微處理器通常把資料直接儲存在L1快取記憶體中。假使L1快取記憶體不存在有效快取線時,根據快取記憶體所使用之快取線替代策略(cache line replacement policy),微處理器可將資料移至高階快取記憶體L2之快取線。在一實施例中,快取線替代策略為最久未使用(least recently memory,LRU)策略,即是優先清除在快取記憶體中最久未被使用的資料,並釋放其空間(亦即快取線)。
假使快取線替代策略是隨意地選擇快取記憶體中的任何快取線以指派給主要記憶體中配置的任一記憶區塊,則稱為完全關聯映射(fully associative)。假使在主要記憶體中的每一記憶區塊只可指派給快取記憶體的固定快取線,則稱為直接映射(direct mapped)。許多微處理器之快取記憶體採取”集合關聯映射(set associative mapping)”,其融合了直接映射與完全關聯映射的優點,並改良其缺點。舉例而言,在兩集合關聯快取記憶體(2-way set associative cache memory)中,主要記憶體內之任何特定位址可被快取(cache)在此快取記憶體中兩條快取線之任一者。同樣的,在四集合關聯快取記憶體(4-way set associative cache memory)中,主要記憶體內之任何特定位址可被快取在此快取記憶體中四條快取線之任一者。
微處理器電路自L1快取記憶體中選擇欲移除(evict)之一快取線,接著讀取被選擇的快取線,將該快取線寫入至L2快取記憶體中之有效(available)快取線並無效(invalidate)L1快取記憶體之該快取線狀態。快取線狀態協定之一為MESI協定,其是廣泛使用的快取記憶體與記憶體資料一致性的協定。MESI協定指定四個可能狀態給快取記憶體內之每一快取線:已修改(Modified)狀態、獨佔(Exclusive)狀態、共用(Shared)狀態或無效(Invalid)狀態。已修改MESI狀態之快取線只出現在當前快取記憶體,且其已被主要記憶體內之一數值修改。在允許(不再有效之)主要記憶體狀態的任何其他讀取之前,快取記憶體被要求在某一時間上把資料寫回至主要記憶體。獨佔MESI狀態之快取線只出現在當前快取記憶體,但它是最新的(up to date)且匹配(match)主要記憶體。共用MESI狀態之快取線可與其它快取記憶體共用,其可儲存於多個快取記憶體中。無效MESI狀態之快取線為不可使用的快取線,其不含有效資料數值。被移除快取線(於移除之後)具有一無效MESI狀態。
自低階快取記憶體移到高階快取記憶體的快取線通常花費數個微處理器時脈週期。多個快取記憶體通常被設置在微處理器中相對遠的位置,且單一移動之資料承載量(data payload)有時少於一快取線之大小。通常而言,當快取線自快取記憶體移除時,在此快取線內之完全或部分資料會被儲存或窺察(snoop)。對於儲存或窺察操作而言,必須得知相關的快取線的移除處理狀態。假使持續進行儲存或窺察操作而無法得知相關的快取線移除處理狀態,則可能發生尚未被移除之快取線資料將藉由儲存操作而重複寫入,或者發生快取線為無效狀態。任一者將導致資料錯誤,使得微處理器之快取記憶體層級之資料無法一致。
為了解決上述在快取線移除期間微處理器之快取記憶體層級之資料一致性(data coherency)的問題,微處理器通常藉由比較在指令管線中指向快取記憶體之儲存或窺察指令的位址與移除快取線之位址,來判斷快取線是否處於自低階快取記憶體移至高階快取記憶體的程序中。移除快取線之位址必須暫時地儲存在微處理器中,直到儲存指令的位址已被比較。一般而言,可以序列方式(serially)或以並列方式(parallel)來比較位址。以並列方式來比較多個位址則需要許多比較電路及其他邏輯電路,以將比較結果由所有的比較電路提供至微處理器。以序列方式來比較多個位址則需要為多個儲存指令提供足夠時間,降低了快取線移除操作的速度與快取記憶體效能。因此,微處理器需要一個方法來快速地確認正處於自低階快取記憶體移至高階快取記憶體的程序中的快取線,而不需要大量額外硬體電路來比較上述位址。
基於上述目的,本發明實施例揭露了一種在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置,該裝置包括一移除引擎與一包含複數儲存元件之移除陣列。該移除引擎用以將一快取線自該低階記憶體移至該高階記憶體。該包含複數儲存元件之移除陣列中之每一儲存元件用以儲存在該低階記憶體之一對應快取線之一指示狀態,其中該指示狀態表示該移除引擎目前是否正將該快取線自該低階記憶體移至該高階記憶體。
本發明實施例更揭露了一種在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的方法,該方法包括下列步驟。將一快取線自該低階記憶體移至該高階記憶體,其中該移除操作係由一移除引擎所執行。將該低階記憶體中之一對應快取線之一指示狀態儲存至一移除陣列中之複數儲存元件之一,其中該指示狀態表示該移除引擎目前是否正將該快取線自該低階記憶體移至該高階記憶體。
本發明實施例更揭露了一種使用一運算裝置之電腦程式產品,其包括一電腦可使用儲存謀體。該電腦可使用儲存媒體具有嵌入該儲存媒體之電腦可讀取程式碼,其用以指定一微處理器在快取線的移除期間確保微處理器之快取記憶體層級內之資料一致性。該電腦可讀取程式碼包括第一程式碼與第二程式碼。第一程式碼用以指定一移除引擎,用以將一快取線自該低階記憶體移至該高階記憶體。第二程式碼用以指定一包含複數儲存元件之移除陣列,每一儲存元件用以儲存在該低階記憶體之一對應快取線之一指示狀態,其中該指示狀態表示該移除引擎目前是否正將該快取線自該低階記憶體移至該高階記憶體。
本發明的優點為相較於傳統微處理器而言需要較少的硬體電路,以判斷一微處理器之快取記憶體層級中之快取線是否正從該低階記憶體移至該高階記憶體。習知微處理器儲存與比較該低階快取記憶體之移除快取線之位址與指向該低階快取記憶體之儲存或窺察操作的位址。上述操作需要多個位址比較器與控制邏輯電路以及可能的足夠時間(possibly significant time)以實現多個所需位址的比較操作。本發明僅需要檢查在一移除陣列中之單一位元,以判斷是否正在移除該快取線。由於該移除陣列判斷哪一條(set/way)的快取線正在移除,故明顯的減少儲存被移除快取線之位址的需求。
本發明的另一優點為減少儲存或窺察位址以及自低階快取記憶體移至高階快取記憶體之快取線的位址的比較操作。快取線移除的過程中並不需要確認,直到開始執行一儲存或窺察操作。低階快取記憶體之移除陣列所需的係為單一查詢操作(single lookup),且該查詢操作在存取該低階快取記憶體時完成。
本發明的另一優點為在電路上大大減少了判斷是否正移除快取線所需的時間。由於儲存操作會重寫(overwrite),可能損壞正在移除的快取線,故微處理器判斷出儲存操作指向的快取線正在移除時,需延遲儲存操作。自一移除陣列讀取單一位元的速度相較於比較多個儲存操作的位址的速度以判斷快取線是否正在移除要快。由於本發明之快取線之移除較習知方法來的快速,故微處理器的儲存或窺察操作相對較快。
本發明的另一優點為減少標籤陣列(或包括多個標籤陣列)之存取,其係因為移除引擎僅存取移除陣列以判斷是否對特定快取線執行移除操作,因此自低階記憶體至高階記憶體之快取線完全移除之前,移除引擎不需存取標籤陣列。
為了讓本發明之目的、特徵、及優點能更明顯易懂,下文特舉較佳實施例,並配合所附圖式第1圖至第6圖,做詳細之說明。本發明說明書提供不同的實施例來說明本發明不同實施方式的技術特徵。其中,實施例中的各元件之配置係為說明之用,並非用以限制本發明。且實施例中圖式標號之部分重複,係為了簡化說明,並非意指不同實施例之間的關聯性。
本發明實施例揭露了一種在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置與方法。
第1圖係顯示本發明實施例之微處理器的架構示意圖。
微處理器100包括一移除引擎(Eviction Engine)122,其用以將微處理器100中之快取記憶體層級中之一快取線自低階快取記憶體移至高階快取記憶體。該高階快取記憶體與該低階快取記憶體係為專用(exclusive)記憶體。也就是每一高階快取與低階快取包括不同的快取線,而該高階快取記憶體與該低階快取記憶體之快取線間沒有重疊。在一實施例中,低階快取記憶體為L1資料陣列與標籤(tag)陣列124,而高階快取記憶體為L2資料陣列與標籤陣列126。簡言之,L1資料陣列與標籤陣列124標示為L1快取記憶體124,而L2資料陣列與標籤陣列126標示為L2快取記憶體126。
微處理器100亦包括一移除陣列108,其中移除引擎122更新移除陣列108以表示一快取線是否正自L1快取記憶體124移至L2快取記憶體126。移除陣列108具有與被移除之快取線之低階快取記憶體相同的架構,如第1圖之L1快取記憶體124所示。移除陣列108與L1快取記憶體124之資料陣列與標籤陣列間的架構描述於第6圖中。
如第6圖所示,其係顯示本發明實施例之第1圖之移除陣列108、L1快取記憶體124之標籤陣列602與資料陣列604的架構示意圖。移除陣列108包含複數個儲存元件,每一儲存元件包括一移除位元,用以儲存在L1快取記憶體124中一對應快取線的一指示狀態(Indication),其中該指示狀態表示該移除引擎目前是否正將該快取線自該低階記憶體移至該高階記憶體。移除引擎122在自L1快取記憶體124移除一快取線至L2快取記憶體136之前,經由第1圖所示之更新移除位元線116更新對應該快取線的該移除位元為一真值(true value),以及在移除引擎122完成該移除程序後更新該移除位元為一假值(false value),即此時L2快取記憶體126已取得該快取線的所有權。上述真值為邏輯值為真的位元值,上述假值為一邏輯值為假的位元值。舉例來說,真值為1,假值為0。在第6圖中,每一標籤陣列602、資料陣列604與移除陣列108分別為複數個對應陣列組。每一陣列604/602/108係由一載入/儲存/窺察位址606之索引(index)存取,用以選擇每一陣列604/602/108之其中一陣列組。在一實施例中,資料陣列604、標籤陣列602與移除陣列108各自的複數個對應陣列組皆包括四組(way)的儲存元件,其中資料陣列604用以儲存快取線,標籤陣列602用以儲存位址標籤與MESI狀態,移除陣列108用以儲存移除位元。因此,在每一次存取中,資料陣列604輸出四條快取線,標籤陣列602輸出四個標籤,以及移除陣列108輸出四個移除位元。在每一陣列604/602/108之輸出的對應多工器(未顯示)根據一選擇訊號選擇四個輸出的其中一個輸出以表示其具有匹配該載入/儲存/窺察位址606之索引選擇之一標籤陣列組之一標籤(若有的話)。在一實施例中,移除陣列108為一直接寫透(write-through)陣列,也就是把資料同時寫入移除陣列108之一位置與主要記憶體兩者。在另一實施例中,移除陣列108偵測讀取與寫入移除陣列108中相同位置的衝突,當發生上述衝突時,移除陣列108令該讀取操作重新執行(replay)。
參考第1圖,移除引擎122包括一或多個緩衝器以提供暫存資料。該等緩衝器儲存可快取的資料以及有關該資料之位置與狀態資訊。除了暫存資料外,移除引擎122亦包括狀態機(state machines),其用以管理自L1快取記憶體124至L2快取記憶體126之快取線的移除操作。微處理器100亦包括一配置(allocation)引擎(未顯示),其用以配置自L2快取記憶體126至L1快取記憶體124之快取線。移除引擎122耦接L1快取記憶體124、L2快取記憶體126、載入/儲存/窺察單元104以及移除陣列108。L1快取記憶體124與L2快取記憶體126包括快取線的儲存空間以及每一快取線之標籤。上述標籤包括對應快取線之位址標籤與MESI狀態。
雖然第1圖之快取記憶體層級顯示了二個快取記憶體,其中以一移除陣列108表示自L1快取記憶體124至L2快取記憶體126之快取線移除操作是否正在執行,但並不限於此,例如包括二個以上的快取記憶體之其它實施例,可利用多個移除陣列來表示該快取記憶體層級中之每一低階快取記憶體至其各自對應的高階快取記憶體的移除操作。在上述實施例中,每一移除陣列的架構與每一各別的低階快取記憶體相同。因此,在一實施例中,微處理器100亦包括一層級3(Level,L3)快取記憶體,其係位於L2快取記憶體126之上。在此實施例中,微處理器100包括一第二移除陣列,其具有與L2快取記憶體126相同的架構,且表示自L2快取記憶體126移至L3快取記憶體之快取線移除操作是否正在執行。
微處理器100包括載入/儲存/窺察單元104。載入/儲存/窺察單元104中的載入單元將主要記憶體或快取記憶體的資料載入微處理器100的暫存器。載入/儲存/窺察單元104中的儲存單元將微處理器100之暫存器的資料儲存至主要記憶體或快取記憶體。載入/儲存/窺察單元104中的窺察單元用以窺察微處理器匯流排偵測到的上的資料傳輸(transactions),以維護系統中不同快取記憶體的快取一致性(cache coherency)。載入/儲存/窺察單元104經由讀取線138讀取L1快取記憶體124的快取線與標籤,並且經由更新線136更新L1快取記憶體124的快取線與標籤。此外,載入/儲存/窺察單元104讀取移除陣列108的移除位元118。此外,載入/儲存/窺察單元104中的窺察單元產生一真值於重試線152上以令微處理器100之匯流排介面單元(未顯示)重試微處理器100之匯流排的窺察操作,其詳述於下文。在一實施例中,載入/儲存/窺察單元104可以是一單一整合電路(single monolithic group of circuits),其管理所有微處理器100的載入指令106、儲存指令102與窺察指令114,而在其它實施例中,載入/儲存/窺察單元104表示為三個個別的單元。
微處理器100中的替代策略演算法(Replacement policy algorithms)偵測到另一快取線比當前的快取線更可能被微處理器100引用時,移除引擎122將當前快取線自L1快取記憶體124移至L2快取記憶體126。載入/儲存/窺察單元104自移除陣列108讀取移除位元118,以判斷移除引擎122目前是否正移除包含有儲存指令102或窺察指令114指定之資料的快取線。
在開始將一快取線自L1快取記憶體124移至L2快取記憶體126之前,移除引擎122經由更新移除位元線116設定對應于正在被移除的快取線之移除陣列108中的移除位元之指示狀態以表示目前正將該快取線自該低階記憶體移至該高階記憶體。在移除引擎122設定對應于正在被移除的快取線之移除陣列108中的移除位元後,移除引擎122讀取L1快取記憶體124之快取線128。在讀取L1快取記憶體124之快取線128後,移除引擎122對L2快取記憶體126之快取線132進行寫入。當完成L2快取記憶體126快取線132之寫入時,L2快取記憶體126產生一真值經由移除完成線134給移除引擎122。移除引擎122經由更新移除位元線116來清除移除陣列108之對應移除位元,以指示完成快取線移除的操作。此外,移除引擎122經由更新標籤線112更新L1快取記憶體124內的標籤。舉例來說,在一實施例中,移除引擎122在將快取線由L1快取記憶體124移至L2快取記憶體126後,將快取線之標籤更新為無效MESI狀態。
在一實施例中,載入/儲存/窺察單元104包括分別的載入管線與儲存管線。在此實施例中,執行與第1圖與下文流程圖所示的不同操作,移除引擎122仲裁上述二種管線之存取操作。載入管線接收載入指令106,並相應地讀取L1快取記憶體124的指定資料。儲存管線接收儲存指令102與窺察指令114,並相應地讀取L1快取記憶體124的標籤,以及在需要時更新L1快取記憶體134的標籤與快取線。移除陣列108具有一讀取埠與一寫入埠。在一實施例中,移除陣列108讀取埠耦接於儲存管線,而移除陣列108寫入埠耦接於載入管線。儲存操作與窺察操作讀取移除陣列108以判斷當前儲存與窺察的快取線是否正從L1快取記憶體124移除。由於移除陣列108的寫入埠耦接於載入管線,移除引擎122產生一移除陣列108更新至該載入管線,其仲裁載入管線與載入指令106的存取。載入管線相應的設定或清除由L1快取記憶體124移至L2快取記憶體126之快取線對應的移除位元。
當處理載入指令106時,微處理器100不需存取移除陣列108。相對的,微處理器100讀取L1快取記憶體124的標籤陣列以判斷L1快取記憶體124是否取得包含載入指令106指定之資料之快取線的所有權,其將說明於第3b圖中。
第2圖係顯示本發明實施例之快取線移除操作的步驟流程圖。本流程起始於步驟202。
在步驟S202中,移除引擎122判斷L1快取記憶體124之一快取線需要移除。舉例來說,當載入/儲存/窺察單元104具有比目前快取線會更常被存取之儲存資料,微處理器100可選擇一快取線以進行移除。接著執行步驟S204。
在步驟S204中,移除引擎122經由更新移除位元線116來設定移除陣列108中與上述移除快取線相關之移除位元。移除陣列108具有與L1快取記憶體124相同的架構,包括與L1快取記憶體124之每一快取線相關之移除位元。接著執行步驟S206。
在步驟S206中,移除引擎122讀取L1快取記憶體124之移除快取線128。接著執行步驟S208。
在步驟S208中,移除引擎122將L1快取記憶體124之移除快取線128寫入L2快取記憶體126之一快取線132。在一實施例中,快取線的大小大於移除引擎122與L1快取記憶體124與/或L2快取記憶體126之間的匯流排大小,因此,在步驟206中,移除引擎122藉由多工讀取操作讀取L1快取記憶體124的快取線128,以及在步驟208中,移除引擎122藉由多工寫入操作寫入L2快取記憶體126的快取線132。在一實施例中,移除引擎122序列地(serially)執行多工操作(multiple operations)。在另一實施例中,移除引擎122以一管線方法(pipelined manner)執行多工操作。接著執行步驟S212。
在步驟S212中,當完成L2快取記憶體126快取線132之寫入時,L2快取記憶體126通知移除引擎122已準備好藉由產生移除完成線(eviction completed line)134之真值來取得完成寫入之快取線的所有權。當在步驟208完成寫入操作後,L2快取記憶體126產生一真值於移除完成線134給移除引擎122。接著執行步驟S214。
在步驟S214中,移除引擎122使L1快取記憶體124之移除快取線無效並且清除移除陣列108中與移除快取線相關之移除位元。移除引擎122經由更新標籤線112更新L1快取記憶體124內的標籤,並且經由更新移除位元線116来清除移除陣列108中與移除快取線相關之移除位元。移除引擎122寫入對應L1快取記憶體124之移除快取線之標籤至一無效MESI狀態,使L1快取記憶體124的移除快取線無效。接著結束本流程。
第3a圖係顯示本發明實施例之在快取線移除期間執行微處理器100之儲存操作的步驟流程圖。本流程起始於步驟302。
在步驟S302中,載入/儲存/窺察單元104中的儲存單元接收儲存指令102並且相應的產生一儲存操作。儲存指令102指定一記憶體之儲存位址,其中微處理器100將微處理器100之暫存器中的儲存資料寫入該記憶體之儲存位址。該儲存位址可能存在於L1快取記憶體124的快取線。接著執行步驟S304。
在步驟S304中,儲存單元用儲存指令102指定的儲存位址來存取L1快取記憶體124。若該儲存位址的標籤與藉由該儲存位址之索引選擇之標籤陣列中其中一標籤陣列組相匹配,且該標籤之MESI狀態不是無效狀態下時,L1快取記憶體124表示命中(hit),其表示儲存指令102指向存在於L1快取記憶體124資料陣列中之快取線。該儲存單元亦藉由儲存指令102之儲存位址存取移除陣列108,以讀取對應儲存指令102之快取線的移除位元118。接著執行步驟S306。
在步驟S306中,該儲存單元評估移除位元118是否設定。若移除位元118已被設定,則表示移除引擎122目前正移除該對應的快取線,接著執行步驟S312。若移除位元118未被設定,則表示移除引擎122沒有正在執行該對應的快取線之移除操作。接著執行步驟S308。
在步驟S308中,由於沒有對應快取線移除操作在執行,儲存單元執行儲存指令102。特別的是,若儲存指令102指向L1快取記憶體124中的快取線,該儲存單元將儲存資料寫入至L1快取記憶體124資料陣列中的快取線,將儲存位址的標籤寫入至標籤陣列,並且適當更新標籤陣列中的MESI狀態。然而,若儲存指令102指向未存在L1快取記憶體124中的快取線,配置引擎(未顯示)配置一快取線128於L1快取記憶體124中,自L2快取記憶體126(或系統記憶體)讀取一快取線132後,再寫入L1快取記憶體124之快取線128。亦即,配置引擎在該儲存操作執行之前將一快取線自該高階記憶體移至該低階記憶體以更新該快取線。此外,若儲存指令102指向具有共用MESI狀態之快取線,該配置引擎將該快取線更新至已修改MESI狀態。接著結束本流程。
在步驟S312中,儲存單元重新執行該儲存操作,直到移除位元118被清除。該儲存操作藉由使該儲存指令被重新執行以存取儲存單元管線,其可有效的執行步驟304與306中之相同操作,直到移除位元118被清除。接著執行步驟S314。
在步驟S314中,載入/儲存/窺察單元104中的儲存單元要求重新配置L2快取記憶體126中的快取線至L1快取記憶體124。配置引擎在儲存單元提出要求時執行重新配置操作。由於在允許儲存該快取線前,L1快取記憶體124必須取得該快取線的所有權,故L2快取記憶體126至L1快取記憶體124之快取線的重新載入操作是必要的。此外,儲存操作所需的記憶體大小比整個快取線要小,且不是儲存操作之一部分的快取線資料必須是在已知的狀態。接著執行步驟S316。
在步驟S316中,在快取線重新配置至L1快取記憶體124後,載入/儲存/窺察單元104中的儲存單元執行儲存指令102,接著結束本流程。
在上述流程中說明了,該移除引擎122禁止儲存單元進行一儲存操作以更新一快取線,直到該移除位元118的指示狀態表示該移除引擎122已完成將該快取線自一低階記憶體移至一高階記憶體。
第3b圖係顯示本發明實施例之在快取線移除期間執行微處理器之載入操作的步驟流程圖。本流程起始於步驟322。
在步驟S322中,載入/儲存/窺察單元104中的載入單元接收一載入指令106。接著執行步驟S324。
在步驟S324中,該載入單元在載入指令106指定之位址讀取L1快取記憶體124之標籤陣列與資料陣列。載入指令106指定微處理器100會讀取載入資料之一記憶體位置之位址給微處理器100的暫存器。該載入位址可能存在於L1快取記憶體124的快取線。接著執行步驟S326。
在步驟S326中,該載入單元完成執行載入指令106。由於該載入單元正由L1快取記憶體124讀取快取線,故不需理會載入指令106定址之快取線的移除位元值。只要該快取線存在於L1快取記憶體124中且該快取線的MESI值為無效,則載入指令將完成執行,接著結束本流程。
在上述流程中說明了,當該移除陣列108之移除位元118之指示狀態表示該移除引擎122目前正將一快取線自一低階記憶體移至一高階記憶體時,該移除引擎122允許一載入操作以讀取該快取線。
第4圖係顯示本發明實施例之在快取線移除期間執行微處理器100之窺察操作的步驟流程圖。若快取記憶體中具有窺察指令114指定之位址,則窺察指令114令該快取記憶體使得由窺察指令114指定之位址的快取線無效。本流程起始於步驟402。
在步驟S402中,載入/儲存/窺察單元104中的窺察單元接收窺察指令114,並且相應的產生一窺察操作(snoop query operation)。當微處理器100之匯流排介面單元(未顯示)接收微處理器100之匯流排的窺察指令114時,該窺察單元從微處理器100之匯流排介面單元接收窺察指令114。窺察指令114指定可能出現在L1快取記憶體124中之快取線的位址為無效。接著執行步驟S404。
在步驟S404中,該窺察單元讀取L1快取記憶體124標籤陣列,以判斷窺察指令114是否指向L1快取記憶體124中之有效快取線。該窺察單元亦藉由窺察指令114之窺察位址存取移除陣列108以讀取對應窺察指令114之快取線的移除位元118。接著執行步驟S406。
在步驟S406中,該窺察單元評估在步驟404讀取的移除位元118是否設定。若移除位元118已被設定,則表示移除引擎122目前正移除對應移除位元118之快取線,接著執行步驟S412。若移除位元118未被設定,則表示移除引擎122沒有正在執行對應該移除位元118之快取線之移除操作。接著執行步驟S408。
在步驟S408中,由於該窺察位址指定之快取線未正被移除,故該窺察單元正常回應該窺察指令114。特別的是,該窺察單元經由更新線136將窺察指令114定址之L1快取記憶體124之快取線的MESI狀態更新為無效。此外,若該快取線為已修改之MESI狀態,則該窺察單元在使該快取線無效前將該快取線寫回記憶體匯流排上之主要記憶體,然後結束本流程。
在步驟S412中,該窺察單元產生重試(Retry)152給微處理器100之匯流排介面單元,使得該匯流排介面單元在微處理器100之匯流排上重新執行窺察指令114。該匯流排介面單元相應的在微處理器100之匯流排上轉送窺察指令114的重試。接著執行步驟S414。
在步驟S414中,當在步驟412中該匯流排介面單元產生該重試後,原先產生窺察指令114之微處理器100之匯流排上的代理裝置(agent)重新發送窺察指令114給系統中之所有快取記憶體。接著回到步驟402以執行重試之窺察指令114,直到移除陣列108表示移除操作已完成。
在上述流程中說明了,該移除引擎122阻止該微處理器回應一快取線之一窺察操作,直到對應該快取線之移除位元118之指示狀態表示該移除引擎122已完成將該快取線自該低階記憶體移至該高階記憶體。
第5圖係顯示本發明另一實施例之在快取線移除期間執行微處理器100之窺察操作的步驟流程圖。本流程起始於步驟502。
在步驟S502中,載入/儲存/窺察單元104中的窺察單元接收窺察指令114,並且相應的產生窺察操作,其與第4圖之步驟402相同。接著執行步驟S504。
在步驟S504中,該窺察單元讀取L1快取記憶體124標籤陣列,以判斷窺察指令114是否指向L1快取記憶體124中之有效快取線。該窺察單元亦藉由窺察指令114之窺察位址存取移除陣列108以讀取對應窺察指令114之快取線的移除位元118。其與第4圖之步驟404相同。接著執行步驟S506。
在步驟S506中,該窺察單元評估在步驟504讀取的移除位元118是否設定,其與第4圖之步驟406相同。若移除位元118已被設定,則表示移除引擎122目前正移除對應移除位元118之快取線,接著執行步驟S512。若移除位元118未被設定,則表示移除引擎122沒有正在執行對應該移除位元118之快取線之移除操作,接著執行步驟S508。
在步驟S508中,由於該窺察位址指定之快取線未正被移除,故該窺察單元正常回應該窺察指令114,其與第4圖之步驟408相同,接著結束本流程。
在步驟S512中,窺察單元回應HIT信號或HITM信號給匯流排介面單元,且該匯流排介面單元轉送HIT信號或HITM信號給微處理器100之匯流排。若快取線的MESI狀態為獨佔狀態或共用狀態,則窺察單元產生HIT信號。若快取線的MESI狀態為已修改狀態,則窺察單元產生HITM信號。若窺察單元產生HITM信號,微處理器100需要將L1快取記憶體124之已修改狀態之快取線寫回至主要記憶體。接著執行步驟S514。
在步驟S514中,微處理器100的窺察單元輪詢(poll)移除陣列108,直到移除位元被清除。當快取線移除完成時,移除引擎122清除移除陣列108中的移除位元118,如第2圖所示。由於移除操作已經完成,通常是在下次重試窺察指令114時來清除移除位元118。然而,若未清除,則再次執行重試窺察指令114。接著執行步驟S516。
在步驟S516中,若快取線的MESI狀態為已修改狀態,則窺察單元指示移至L2快取記憶體126之快取線寫回至主要記憶體,以及使L2快取記憶體126的快取線無效。本實施例中之L2快取記憶體126負責使快取線無效,並且將已修改狀態之快取線寫回至主要記憶體,接著結束本流程。本發明係實作於一微處理器裝置內,其可使用於一般用途之電腦。
本發明之方法,或特定型態或其部份,可以以程式碼(如C、C++、硬體描述語言(Hardware Description Languages,HDL)(包括Verilog HDL、VHDL...等等)或任何其它程式)的型態存在。程式碼可以包含於實體媒體,如軟碟、光碟片、硬碟、或是任何其他機器可讀取(如電腦可讀取)儲存媒體,其中,當程式碼被機器,如電腦載入且執行時,此機器變成用以參與本發明之裝置。程式碼也可以透過一些傳送媒體,如電線或電纜、光纖、或是任何傳輸型態進行傳送,其中,當程式碼被機器,如電腦接收、載入且執行時,此機器變成用以參與本發明之裝置,如中央處理器(CPU)、微處理器、微控制器、數位訊號處理器、處理器核心、系統單晶片(SOC)或任何其它裝置。當在一般用途處理單元實作時,程式碼結合處理單元提供一操作類似於應用特定邏輯電路之獨特裝置。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟習此技藝者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100...微處理器
102...儲存指令
104...載入/儲存/窺察單元
106...載入指令
108...移除陣列
112...更新標籤
114...窺察操作
116...更新移除位元
118...移除位元
122...移除引擎
124...L1資料陣列與標籤陣列
126...L2資料陣列與標籤陣列
128、132...快取線
134...移除完成
136...更新
138...讀取
152...重試
602...標籤陣列
604...資料陣列
606...載入/儲存/窺察位址索引
第1圖係顯示本發明實施例之微處理器的架構示意圖。
第2圖係顯示本發明實施例之快取線移除操作的步驟流程圖。
第3a圖係顯示本發明實施例之在快取線移除期間執行微處理器之儲存操作的步驟流程圖。
第3b圖係顯示本發明實施例之在快取線移除期間執行微處理器之載入操作的步驟流程圖。
第4圖係顯示本發明實施例之在快取線移除期間執行微處理器之窺察操作的步驟流程圖。
第5圖係顯示本發明另一實施例之在快取線移除期間執行微處理器之窺察操作的步驟流程圖。
第6圖係顯示本發明實施例之移除陣列、標籤陣列與資料陣列的架構示意圖。
100...微處理器
102...儲存指令
104...載入/儲存/窺察單元
106...載入指令
108...移除陣列
112...更新標籤
114...窺察操作
116...更新移除位元
118...移除位元
122...移除引擎
124~L1...資料陣列與標籤陣列
126~L2...資料陣列與標籤陣列
128、132...快取線
134...移除完成
136...更新
138...讀取
152...重試
602...標籤陣列
604...資料陣列
606...載入/儲存/窺察位址索引
Claims (21)
- 一種在快取線自一低階快取記憶體至一高階快取記憶體移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置,該裝置包括:一移除陣列,其和該低階快取記憶體之一標籤陣列各別地被存取;其中該標籤陣列儲存對應該低階快取記憶體之快取線之位址之標籤;其中該移除陣列包含複數儲存元件;其中每一該標籤陣列以及該移除陣列藉由一記憶體位址之一索引來存取;以及一移除引擎,其用以將一快取線自該低階快取記憶體移至該高階快取記憶體;其中該移除陣列之每一儲存元件用以儲存在該低階快取記憶體中一對應快取線的一指示狀態,其中該指示狀態表示該移除引擎目前是否正將該快取線自該低階快取記憶體移至該高階快取記憶體。
- 如申請專利範圍第1項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置,其中,該移除引擎禁止一儲存操作更新該快取線,直到該指示狀態表示該移除引擎已完成將該快取線自該低階快取記憶體移至該高階快取記憶體。
- 如申請專利範圍第2項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置,更包含一配置引擎用以在該儲存操作執行之前將該快取線自 該高階快取記憶體移至該低階快取記憶體以更新該快取線。
- 如申請專利範圍第1項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置,其中,當該指示狀態表示該移除引擎目前正將該快取線自該低階快取記憶體移至該高階快取記憶體時,該移除引擎允許一載入操作以讀取該快取線。
- 如申請專利範圍第1項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置,其中,該移除引擎阻止該微處理器回應該快取線之一窺察操作,直到該指示狀態表示該移除引擎已完成將該快取線自該低階快取記憶體移至該高階快取記憶體。
- 如申請專利範圍第1項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置,其中,若該指示狀態表示該移除引擎正將該快取線自該低階快取記憶體移至該高階快取記憶體,且當該快取線的狀態為一已修改狀態時,則該高階快取記憶體使該快取線無效以及將已修改狀態之該快取線寫回至一主要記憶體來回應該快取線之一窺察操作。
- 如申請專利範圍第1項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置,其中,在開始自該低階快取記憶體讀取該快取線以準備傳送該快取線至該高階快取記憶體之前,該移除引擎設定該指示狀態以表示目前正將該快取線自該低階快取記憶體移至該高階快取記憶體。
- 如申請專利範圍第1項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置,其中,當完成將該快取線自該低階快取記憶體移至該高階快取記憶體時,該移除引擎清除該指示狀態以表示目前已將該快取線自該低階快取記憶體移至該高階快取記憶體。
- 如申請專利範圍第8項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置,其中,在該移除引擎清除該指示狀態之前,該高階快取記憶體通知該移除引擎已準備好取得該快取線之所有權。
- 如申請專利範圍第8項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的裝置,其中,該移除引擎在清除該指示狀態之前使在該低階快取記憶體中之該快取線無效。
- 一種在快取線自一低階快取記憶體至一高階快取記憶體移除期間確保微處理器之快取記憶體層級內之資料一致性的方法,該方法包括下列步驟:藉由一記憶體位址之一索引來存取每一標籤陣列以及移除陣列;其中該標籤陣列包含複數儲存元件,以儲存對應該低階快取記憶體之快取線之位址之標籤;其中該移除陣列包含複數儲存元件,以儲存每一快取線對應之指示狀態,該指示狀態表示一移除引擎是否目前正將該快取線自該低階快取記憶體移至該高階快取記憶體;其中該移除陣列和該標籤陣列各別地被存取; 將一快取線自該低階快取記憶體移至該高階快取記憶體,其中該移除操作係由一移除引擎所執行;以及將一指示狀態儲存至該移除陣列,其中該指示狀態表示該移除引擎目前是否正將該快取線自該低階快取記憶體移至該高階快取記憶體。
- 如申請專利範圍第11項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的方法,其更包括禁止一儲存操作更新該快取線,直到該指示狀態表示該移除引擎已完成將該快取線自該低階快取記憶體移至該高階快取記憶體。
- 如申請專利範圍第12項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的方法,其更包括在該儲存操作執行之前將該快取線自該高階快取記憶體移至該低階快取記憶體以更新該快取線。
- 如申請專利範圍第11項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的方法,其更包括當該指示狀態表示該移除引擎目前正將該快取線自該低階快取記憶體移至該高階快取記憶體,該移除引擎允許一載入操作以讀取該快取線。
- 如申請專利範圍第11項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的方法,其更包括阻止該微處理器回應該快取線之該窺察操作,直到該指示狀態表示該移除引擎已完成將該快取線自該低階快取記憶體移至該高階快取記憶體。
- 如申請專利範圍第11項所述的在快取線移除期間 確保微處理器之快取記憶體層級內之資料一致性的方法,其中,若該指示狀態表示該移除引擎正將該快取線自該低階快取記憶體移至該高階快取記憶體,且當該快取線的狀態為一已修改狀態時,則使該快取線無效以及將已修改狀態之該快取線寫回至一主要記憶體來回應該快取線之一窺察操作。
- 如申請專利範圍第11項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的方法,其更包括在該移除引擎開始自該低階快取記憶體讀取該快取線以準備傳送該快取線至該高階快取記憶體之前,設定該指示狀態以表示目前正將該快取線自該低階快取記憶體移至該高階快取記憶體。
- 如申請專利範圍第11項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的方法,其更包括當該移除引擎完成將該快取線自該低階快取記憶體移至該高階快取記憶體時,清除該指示狀態以表示目前未將該快取線自該低階快取記憶體移至該高階快取記憶體。
- 如申請專利範圍第18項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的方法,其中,在清除該指示狀態之前,當該高階快取記憶體通知該移除引擎已準備好取得該快取線之所有權。
- 如申請專利範圍第18項所述的在快取線移除期間確保微處理器之快取記憶體層級內之資料一致性的方法,其更包括在清除該指示狀態前使在該低階快取記憶體中之 該快取線無效。
- 一種使用一運算裝置之電腦程式產品,其包括:一電腦可使用儲存媒體,其具有嵌入該儲存媒體之電腦可讀取程式碼,其用以指定一微處理器在快取線自一低階快取記憶體至一高階快取記憶體的移除期間確保微處理器之快取記憶體層級內之資料一致性,該電腦可讀取程式碼包括:第一程式碼,其用以指定一移除陣列,其中該移除陣列和該低階快取記憶體之一標籤陣列各別地被存取;其中該標籤陣列儲存對應該低階快取記憶體之快取線之位址之標籤;其中該移除陣列包含複數儲存元件;其中每一該標籤陣列以及該移除陣列藉由一記憶體位址之一索引來存取;以及第二程式碼,其用以指定一移除引擎,用以將一快取線自該低階快取記憶體移至該高階快取記憶體;以及其中該移除陣列之每一儲存元件用以儲存在該低階快取記憶體之一對應快取線之一指示狀態,其中該指示狀態表示該移除引擎目前是否正將該快取線自該低階快取記憶體移至該高階快取記憶體。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/207,261 US8782348B2 (en) | 2008-09-09 | 2008-09-09 | Microprocessor cache line evict array |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201011537A TW201011537A (en) | 2010-03-16 |
TWI522802B true TWI522802B (zh) | 2016-02-21 |
Family
ID=41407822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098119678A TWI522802B (zh) | 2008-09-09 | 2009-06-12 | 確保微處理器之快取記憶體層級之資料一致性的裝置與方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8782348B2 (zh) |
CN (1) | CN101593161B (zh) |
TW (1) | TWI522802B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8904115B2 (en) * | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US9037804B2 (en) | 2011-12-29 | 2015-05-19 | Intel Corporation | Efficient support of sparse data structure access |
US9201810B2 (en) * | 2012-01-26 | 2015-12-01 | Microsoft Technology Licensing, Llc | Memory page eviction priority in mobile computing devices |
CN103514107B (zh) * | 2012-06-27 | 2018-04-06 | 上海芯豪微电子有限公司 | 高性能数据缓存系统和方法 |
CN103513957B (zh) * | 2012-06-27 | 2017-07-11 | 上海芯豪微电子有限公司 | 高性能缓存方法 |
US9361103B2 (en) * | 2012-11-02 | 2016-06-07 | Advanced Micro Devices, Inc. | Store replay policy |
US9304914B1 (en) | 2013-09-26 | 2016-04-05 | Emc Corporation | Deduplicated cache system of a storage system |
US9336143B1 (en) | 2013-09-26 | 2016-05-10 | Emc Corporation | Indexing a deduplicated cache system by integrating fingerprints of underlying deduplicated storage system |
US9390116B1 (en) | 2013-09-26 | 2016-07-12 | Emc Corporation | Insertion and eviction schemes for deduplicated cache system of a storage system |
US9189414B1 (en) | 2013-09-26 | 2015-11-17 | Emc Corporation | File indexing using an exclusion list of a deduplicated cache system of a storage system |
US9189402B1 (en) * | 2013-09-26 | 2015-11-17 | Emc Corporation | Method for packing and storing cached data in deduplicated cache system of a storage system |
US9606938B1 (en) * | 2014-06-30 | 2017-03-28 | EMC IP Holding Company LLC | Managing caches in storage systems |
WO2016009247A1 (en) * | 2014-07-14 | 2016-01-21 | Via Alliance Semiconductor Co., Ltd. | Cache system with primary cache and overflow cache that use different indexing schemes |
US9990289B2 (en) * | 2014-09-19 | 2018-06-05 | Advanced Micro Devices, Inc. | System and method for repurposing dead cache blocks |
US10152425B2 (en) * | 2016-06-13 | 2018-12-11 | Advanced Micro Devices, Inc. | Cache entry replacement based on availability of entries at another cache |
US10346307B2 (en) | 2016-09-28 | 2019-07-09 | Samsung Electronics Co., Ltd. | Power efficient snoop filter design for mobile platform |
US10417134B2 (en) * | 2016-11-10 | 2019-09-17 | Oracle International Corporation | Cache memory architecture and policies for accelerating graph algorithms |
US10628166B2 (en) * | 2017-09-20 | 2020-04-21 | International Business Machines Corporation | Allocating and deallocating reorder queue entries for an out-of-order processor |
US11334494B2 (en) * | 2019-05-24 | 2022-05-17 | Texas Instruments Incorporated | Write merging on stores with different tags |
US11327909B1 (en) * | 2020-10-26 | 2022-05-10 | Mellanox Technologies, Ltd. | System for improving input / output performance |
US20220358048A1 (en) * | 2021-05-07 | 2022-11-10 | Ventana Micro Systems Inc. | Virtually-indexed cache coherency using physical address proxies |
US11609700B2 (en) | 2021-08-11 | 2023-03-21 | Mellanox Technologies, Ltd. | Pacing in a storage sub-system |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5293603A (en) * | 1991-06-04 | 1994-03-08 | Intel Corporation | Cache subsystem for microprocessor based computer system with synchronous and asynchronous data path |
US5680576A (en) * | 1995-05-05 | 1997-10-21 | Silicon Graphics, Inc. | Directory-based coherence protocol allowing efficient dropping of clean-exclusive data |
US5751993A (en) * | 1995-09-05 | 1998-05-12 | Emc Corporation | Cache management system |
US5829038A (en) * | 1996-06-20 | 1998-10-27 | Intel Corporation | Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure |
US6378048B1 (en) * | 1998-11-12 | 2002-04-23 | Intel Corporation | “SLIME” cache coherency system for agents with multi-layer caches |
US6266743B1 (en) * | 1999-02-26 | 2001-07-24 | International Business Machines Corporation | Method and system for providing an eviction protocol within a non-uniform memory access system |
US6622267B1 (en) * | 1999-12-08 | 2003-09-16 | Intel Corporation | Method and apparatus for detecting multi-hit errors in cache |
US6591393B1 (en) * | 2000-02-18 | 2003-07-08 | Hewlett-Packard Development Company, L.P. | Masking error detection/correction latency in multilevel cache transfers |
US6636949B2 (en) * | 2000-06-10 | 2003-10-21 | Hewlett-Packard Development Company, L.P. | System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing |
US6725343B2 (en) * | 2000-10-05 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system |
US7389387B2 (en) * | 2001-12-31 | 2008-06-17 | Intel Corporation | Distributed memory module cache writeback |
US6934814B2 (en) * | 2002-11-05 | 2005-08-23 | Newisys, Inc. | Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering |
US6920532B2 (en) * | 2002-11-05 | 2005-07-19 | Newisys, Inc. | Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems |
US20070005899A1 (en) * | 2005-06-30 | 2007-01-04 | Sistla Krishnakanth V | Processing multicore evictions in a CMP multiprocessor |
US7590805B2 (en) * | 2005-12-29 | 2009-09-15 | Intel Corporation | Monitor implementation in a multicore processor with inclusive LLC |
US7856532B2 (en) * | 2006-11-03 | 2010-12-21 | Arm Limited | Cache logic, data processing apparatus including cache logic, and a method of operating cache logic |
US20080120469A1 (en) * | 2006-11-22 | 2008-05-22 | International Business Machines Corporation | Systems and Arrangements for Cache Management |
JP5012016B2 (ja) * | 2006-12-28 | 2012-08-29 | 富士通株式会社 | キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法 |
US7640401B2 (en) * | 2007-03-26 | 2009-12-29 | Advanced Micro Devices, Inc. | Remote hit predictor |
-
2008
- 2008-09-09 US US12/207,261 patent/US8782348B2/en active Active
-
2009
- 2009-06-12 TW TW098119678A patent/TWI522802B/zh active
- 2009-06-15 CN CN 200910147348 patent/CN101593161B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
TW201011537A (en) | 2010-03-16 |
US8782348B2 (en) | 2014-07-15 |
CN101593161B (zh) | 2011-02-16 |
US20100064107A1 (en) | 2010-03-11 |
CN101593161A (zh) | 2009-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI522802B (zh) | 確保微處理器之快取記憶體層級之資料一致性的裝置與方法 | |
US7949829B2 (en) | Cache used both as cache and staging buffer | |
EP2430551B1 (en) | Cache coherent support for flash in a memory hierarchy | |
US6339813B1 (en) | Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory | |
US8607024B2 (en) | Virtual address cache memory, processor and multiprocessor | |
US9075730B2 (en) | Mechanisms to bound the presence of cache blocks with specific properties in caches | |
US9251069B2 (en) | Mechanisms to bound the presence of cache blocks with specific properties in caches | |
US20100100685A1 (en) | Effective address cache memory, processor and effective address caching method | |
JP5039913B2 (ja) | ロッキング・キャッシュを用いる直接的保存 | |
EP2926257B1 (en) | Memory management using dynamically allocated dirty mask space | |
WO2010035426A1 (ja) | バッファメモリ装置、メモリシステム及びデータ転送方法 | |
JP2000250813A (ja) | I/oキャッシュ・メモリにおけるデータ管理方法 | |
US7809889B2 (en) | High performance multilevel cache hierarchy | |
US7779205B2 (en) | Coherent caching of local memory data | |
US11526449B2 (en) | Limited propagation of unnecessary memory updates | |
TWI407306B (zh) | 快取記憶體系統及其存取方法與電腦程式產品 | |
JP2016170729A (ja) | メモリシステム | |
CN111480151A (zh) | 将高速缓存线从共用存储器页面冲洗到存储器 | |
TWI417725B (zh) | 微處理器、微處理器之資料快取存取方法與電腦程式產品 | |
WO2010098152A1 (ja) | キャッシュメモリシステムおよびキャッシュメモリ制御方法 | |
CN115098409A (zh) | 进行阶层式高速缓存系统回存且无效的处理器以及方法 |