TWI793812B - 微處理器、快取記憶體存儲器系統及其中實現的方法 - Google Patents

微處理器、快取記憶體存儲器系統及其中實現的方法 Download PDF

Info

Publication number
TWI793812B
TWI793812B TW110138467A TW110138467A TWI793812B TW I793812 B TWI793812 B TW I793812B TW 110138467 A TW110138467 A TW 110138467A TW 110138467 A TW110138467 A TW 110138467A TW I793812 B TWI793812 B TW I793812B
Authority
TW
Taiwan
Prior art keywords
data
cache
eviction
queue
load
Prior art date
Application number
TW110138467A
Other languages
English (en)
Other versions
TW202223630A (zh
Inventor
柯林 艾迪
道格拉斯 R 瑞德
Original Assignee
美商聖圖爾科技公司
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 美商聖圖爾科技公司 filed Critical 美商聖圖爾科技公司
Publication of TW202223630A publication Critical patent/TW202223630A/zh
Application granted granted Critical
Publication of TWI793812B publication Critical patent/TWI793812B/zh

Links

Images

Classifications

    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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
    • 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
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明提供微處理器、快取記憶體存儲器系統及其中實現的方法。在一個實施例中,一種微處理器,包括:第一資料快取記憶體;以及第二資料快取記憶體,其被配置為處理由第一載入或存儲操作引起的第一資料快取記憶體中的未命中、以及為了容納第一載入或存儲操作而從第一資料快取記憶體的逐出這兩者,第二資料快取記憶體被配置為基於與逐出相對應的第一狀態,在逐出實際上完成之前向第一資料快取記憶體指示逐出完成。

Description

微處理器、快取記憶體存儲器系統及其中實現的方法
本發明是有關於一種微處理器,且特別是有關於一種微處理器中的快取記憶體存儲器系統。
大多數現代電腦系統包括進行執行軟體程式所需的計算的微處理器。電腦系統還包括連接到(或內置到)微處理器的其他裝置(諸如記憶體等)。記憶體存儲要由微處理器執行的軟體程式指令。記憶體還存儲由程式指令操縱以實現程式的期望功能的資料。
電腦系統中的在微處理器外部(或處理器核外部)的裝置(諸如記憶體等),透過處理器匯流排直接或間接連接到微處理器(或核)。處理器匯流排是使得微處理器能夠以相對較大的方塊傳輸資料的信號集合。當微處理器執行對存儲在記憶體中的資料進行計算的程式指令時,微處理器使用處理器匯流排將資料從記憶體提取(fetch)到微處理器中。類似地,微處理器使用處理器匯流排將計算結果寫回到記憶體。
從記憶體提取資料或將資料寫入記憶體所需的時間比微處理器對資料進行計算所需的時間長許多倍。因此,微處理器必須低效率地、空閒地等待從記憶體中提取資料。為了減少這個問題,現代微處理器包括至少一個快取記憶體記憶體。快取記憶體記憶體或快取記憶體是微處理器(或處理器核)內部的一般比系統記憶體小得多的記憶體,並且其存儲系統記憶體中的資料的子集。當微處理器執行參考資料的指令時,微處理器首先檢查資料是否存在於快取記憶體中並且有效。如果是這樣,與必須從系統記憶體中檢索資料相比,該指令可以更快地執行,這是因為資料已經存在於快取記憶體中。也就是說,在使用處理器匯流排將資料從記憶體提取到快取記憶體中時,微處理器不必等待。微處理器檢測到資料存在於快取記憶體中並且有效的情況通常被稱為快取記憶體命中。快取記憶體中不存在所參考的資料的情況通常稱為快取記憶體未命中。當所參考的資料已經在快取記憶體中時,透過避免從外部記憶體檢索資料所需的額外時鐘週期,實現了顯著的時間節省。
在一些微處理器中,快取記憶體實際上由多個快取記憶體組成。多個快取記憶體以多級的層級結構佈置。例如,微處理器可能具有兩種類型的快取記憶體,稱為第一級或一級(L1)快取記憶體和第二級或二級(L2)快取記憶體。L1快取記憶體比L2快取記憶體更接近微處理器的計算元件。也就是說,L1快取記憶體能夠比L2快取記憶體更快地向計算元件提供資料。儘管不一定,但是L2快取記憶體通常比L1快取記憶體大。甚至可能存在第三級(L3)快取記憶體,其甚至比L1和L2快取記憶體更大,在L3之後(在未命中的情況下)最終訪問系統記憶體。
在許多微處理器架構中,L1快取記憶體實際上由兩個快取記憶體(L1指令(L1i)快取記憶體和L1資料(L1d)快取記憶體)組成。出於本發明的目的,特別強調L1d快取記憶體,為了速度和效率,期望載入和存儲指令在L1d快取記憶體中命中。如果存在未命中,則需要從其他地方引入快取記憶體行(cache line),並且優選為L2快取記憶體。然而,也可能需要從L1d快取記憶體中逐出快取記憶體行,以使得為新的快取記憶體行分配空間。為了處理這些任務,L2快取記憶體訪問標籤和資料陣列管線,其中標籤和資料陣列管線也接收來自其他源的請求(例如,I-快取記憶體請求、外部窺探(snoop)、從L2快取記憶體到L3快取記憶體的逐出等)。儘管從性能的角度來看,期望滿足例如L2快取記憶體中的每單個時鐘週期的載入請求,但由於其他請求源正在試圖訪問標籤陣列/標籤資料管線,因此實現該基準(benchmark)是複雜的,這會阻礙L2處理載入請求的能力。事實上,已經觀察到,由於L1d緩存逐出在L2快取記憶體中的積壓(主要由於不能跟上同時載入和逐出的穩定流),到L2快取記憶體的逐出通常會延遲。
本發明的一個實施例中,一種微處理器,包括:第一資料快取記憶體;以及第二資料快取記憶體,其被配置為對由第一載入或存儲操作引起的所述第一資料快取記憶體中的未命中、以及為了容納所述第一載入或存儲操作而從所述第一資料快取記憶體的逐出這兩者進行處理,所述第二資料快取記憶體被配置為基於與所述逐出相對應的第一狀態,在實際上完成所述逐出之前向所述第一資料快取記憶體指示該逐出完成。
透過審查以下附圖和詳細描述,本發明的其他系統、方法、特徵和優點對於本領域具有通常知識者將是明顯的或者將變得明顯。所有這些附加系統、方法、特徵和優點旨在包括在本說明書內、在本發明的範圍內,並且受到所附申請專利範圍的保護。
本發明公開了一種快取記憶體資料逐出系統和方法的某些實施例,該快取記憶體資料逐出系統和方法尤其在存在同時載入和逐出的穩定流的情況下,緩解了第二級(L2)資料快取記憶體中的第一級(L1)資料快取記憶體逐出的積壓。在一個實施例中,L2資料快取記憶體識別出從L1資料快取記憶體的逐出對應於具有乾淨或未修改狀態的逐出資料(例如,快取記憶體行)的狀態,並且在這樣的情況下,立即(例如,在大約兩個時鐘週期內)在逐出實際上完成之前(例如,經由L2快取記憶體目錄的更新)向L1資料快取記憶體指示逐出完成。透過這樣做,重新分配到與最後逐出相同條目的逐出可以沒有延遲地進行到L2資料快取記憶體,因此防止針對這種狀態的L1資料快取記憶體逐出的積壓。
簡而言之,現有的快取記憶體存儲器系統通常經歷L1資料快取記憶體逐出的積壓,這是因為對逐出中所需的L2標籤和/或資料陣列管線的訪問與試圖訪問該標籤和/或資料陣列的其他源進行競爭。由於針對管線資源的這些多個競爭,因此較低優先順序逐出經常被延遲,從而導致積壓。即,在處理逐出的同時,L1資料快取記憶體等待來自L2資料快取記憶體的逐出完成的指示,並且直到那時,L1資料快取記憶體中的用於啟用對這些逐出的處理的條目不能處理來自同一條目的後續逐出,直到L2資料快取記憶體中對該最前面的逐出的處理已經完成為止。相反,由於對於快取記憶體一致性,不需要逐出乾淨的快取記憶體行,而是僅更新L2資料快取記憶體的目錄,因而快取記憶體資料逐出系統的某些實施例識別要被逐出的資料或快取記憶體行何時是乾淨的(例如,獨佔或共用MESI狀態),由此使得快取記憶體資料逐出能夠在該逐出實際上完成之前向L1資料快取記憶體指示該逐出完成,從而防止針對乾淨快取記憶體行的L1資料快取記憶體逐出的積壓。
已經總結了本發明的快取記憶體資料逐出系統的某些特徵,現在將詳細描述如附圖中所例示的快取記憶體資料逐出系統。雖然將結合這些附圖來描述快取記憶體資料逐出系統,但並不意圖將其限制於這裡所公開的實施例。也就是說,雖然本發明易於進行各種修改和替代形式,但是其特定實施例在附圖中透過示例的方式示出,並且這裡將被詳細描述成足以使本領域具有通常知識者理解。例如,儘管提供了針對L1資料快取記憶體進行載入/存儲分配以及從L1資料快取記憶體到L2快取記憶體的逐出的示例,但是本領域具有通常知識者應當理解,類似的原理可以應用於其他快取記憶體層級,在一些實施例中包括從例如L2快取記憶體到L3快取記憶體的分配和逐出。因此,應該理解,附圖及其詳細描述不意圖將本發明限制於所公開的特定形式。相反,意圖是覆蓋落入如所附申請專利範圍所限定的本發明的精神和範圍內的所有修改、等同項和替代。如在本申請中所使用的,詞語“可以”以允許的意義(即,意味著有可能)而不是強制的意義(即,意味著必須)被使用。類似地,詞語“包括”意味著包括但不限於。
各種單元、模組、電路、邏輯或其他元件可被描述為“被配置為”進行一個或多個任務。在這樣的上下文中,“被配置為”是對結構的廣泛敘述,其一般意味著“具有在操作期間進行或能夠進行一個或多個任務的電路或其他物理結構”。電路可以是專用電路、或在編碼指令的控制下操作的更通用處理電路。也就是說,在描述本發明的各種實現的某些方面或特徵時,這裡可以使用諸如“單元”、“模組”、“電路”、“邏輯”和“元件”等的術語。本領域具有通常知識者將理解,利用電路實現相應的特徵,無論該電路是專用電路還是在微編碼指令控制下操作的更通用電路。
另外,單元/模組/電路/邏輯/元件可被配置為即使在單元/模組/電路/邏輯/元件當前不處於操作中的情況下也進行任務。敘述被配置為進行一個或多個任務的單元/模組/電路/邏輯/元件顯然不意圖針對該單元/模組/電路/邏輯/元件進行功能性限定。在這方面,本領域具有通常知識者將理解,電路元件的特定結構或互連一般將由設計自動化工具的編譯器(諸如暫存器傳送語言(RTL)編譯器)確定。RTL編譯器在與組合語言代碼非常相似的腳本上運行,以將該腳本編譯成用於最終電路的佈局或製造的形式。
也就是說,使用更高級的軟體工具來設計(諸如本發明的那些)積體電路以對電路的期望功能操作進行建模。眾所周知,“電子設計自動化”(或EDA)是一類用於設計諸如積體電路等的電子系統的軟體工具。EDA工具還用於將設計功能程式設計到現場可程式設計閘陣列(FPGA)中。使用諸如Verilog和超高速積體電路硬體描述語言(VHDL)等的硬體描述符語言(HDL)來創建電路的高級表示,其中根據該高級表示可以推斷出較低級表示和最終實際佈線。實際上,由於現代半導體晶片可以具有數十億個元件,因此EDA工具被認為是對於其設計而言必不可少的。在實踐中,電路設計者使用諸如C/C++等的程式設計語言來指定操作功能。EDA軟體工具將該指定功能轉換為RTL。然後,硬體描述符語言(例如Verilog)將RTL轉換為門的離散網表。該網表定義了由例如代工廠等生產的實際電路。實際上,這些工具因其在電子和數位系統的設計過程的促進中的角色和用途而被眾所周知並理解,因此這裡無需描述。
如這裡將描述的,本發明涉及一種快取記憶體資料逐出系統。然而,在描述示例性快取記憶體資料逐出系統之前,描述可以利用快取記憶體資料逐出系統的一個示例性架構。對此,現在參考圖1,圖1是示出處理器100(這裡也稱為微處理器100)的圖。如本領域具有通常知識者從這裡提供的描述中將理解的,本發明可以以各種不同的電路配置和架構來實現,並且圖1中所示的架構僅是許多合適架構中的一個。具體地,在圖1中示出的實施例中,處理器100是八核處理器,其中,核被枚舉為核0 (110_0)至核7 (110_7)。
在所示的實施例中,省略了大量電路元件和細節,這些電路元件和細節與理解本發明並不密切相關。如本領域具有通常知識者將理解的,各個核(110_0至110_7)包括貫穿處理器100重複的某些相關聯或伴隨的電路。各個這樣的相關子電路在所示出的實施例中表示為切片(slice)。在八個核110_0至110_7的情況下,相應地存在八個切片102_0至102_7。這裡未描述的其他電路僅被表示為“其他切片邏輯”140_0至140_7。
在所示的實施例中,採用三級快取記憶體系統,該三級快取記憶體系統包括一級(L1)快取記憶體、二級(L2)快取記憶體和三級(L3)快取記憶體。L1快取記憶體分為資料快取記憶體和指令快取記憶體這兩者,分別標記為L1d和L1i。L2快取記憶體也駐留在核上,這意味著一級快取記憶體和二級快取記憶體這兩者都在作為各個切片的核的同一電路中。即,各個切片的各個核具有其自己的專用L1d、L1i和L2快取記憶體。在核外,但在各個切片內是L3快取記憶體。在優選實施例中,L3快取記憶體130_0至130_7(這裡還統稱為130)是分散式快取記憶體,這意味著L3快取記憶體的1/8駐留在切片0 (102_0)中,L3快取記憶體的1/8駐留在切片1 (102_1)中等等。在優選實施例中,各個L1快取記憶體的大小為32k,各個L2快取記憶體的大小為256k,並且L3快取記憶體的各個切片的大小為2百萬位元組。由此,L3快取記憶體的總大小是16百萬位元組。
在各個切片中提供匯流排介面120_0至120_7,以管理來自不同切片之間的各種電路元件的通信。如圖1所示,通信匯流排190用於允許各種電路切片之間的通信以及與非核電路160之間的通信。非核電路160僅表示處理器晶片上的附加電路,但不是與各個切片相關聯的核電路的部分。如各個所示出的切片那樣,非核電路160包括匯流排介面電路162。還示出了用於與晶片外記憶體180連接的記憶體控制器164。最後,其他非核邏輯166由方塊寬泛地表示,這表示可作為非核處理器電路的一部分被包括的其他電路(並且再次說明,為了理解本發明,不需要對其進行描述)。
為了更好地示這些電路元件中的一些電路元件之間和內部的某些通信,將呈現以下示例。該示例說明與核6快取記憶體中的假設載入未命中相關聯的通信。即,該假設假定了核6 (110_6)正在執行請求位址假設位址1000處的資料的載入的代碼。當遇到這種載入請求時,系統首先進行L1d 114_6中的查找以查看資料是否存在於L1d快取記憶體中。假定資料不在L1d快取記憶體中,則在L2快取記憶體112_6中進行查找。再次,假定資料不在L2快取記憶體中,則進行查找以查看資料是否存在於L3快取記憶體中。如上所述,L3快取記憶體是分散式快取記憶體,因此如果實際上資料駐留在L3快取記憶體中,則系統首先需要確定資料駐留在L3快取記憶體的哪個切片中。如已知的,可以使用散列函數(其僅是位元的異或)進行該處理以獲得三位元位址(足以識別資料會存儲在哪個切片(切片0至切片7)中)。
與該示例一致,假定該散列函數得到以下指示:資料(如果存在於L3快取記憶體中)將存在於L3快取記憶體的駐留在切片7中的部分中。然後,進行從切片6 (102_6)的L2快取記憶體透過匯流排介面120_6和120_7到切片7 (102_7)中存在的L3切片的通信。該通信在圖中由圈出的數位1表示。如果資料存在於L3快取記憶體中,則將從L3 (130_7)通信回L2快取記憶體112_6。然而,並且在該示例中,假定資料也不在於L3快取記憶體中,從而導致快取記憶體未命中。結果,透過記憶體控制器164,進行從L3快取記憶體130_7透過匯流排介面7 (120_7)透過匯流排介面電路162到晶片外記憶體180的通信。該通信在圖中由圈出的數位2表示。然後,透過記憶體控制器164和非核匯流排介面162,將包括駐留在位址1000處的資料的快取記憶體行從晶片外記憶體180通信回到L3快取記憶體130_7中,如由圈出的數字3表示。在將該資料寫入L3快取記憶體中之後,然後透過匯流排介面120_7和120_6將該資料通信到請求核(核6 (110_6))。
此時,一旦已經完成載入請求,該資料將駐留在快取記憶體L3、L2和L1d各自中。本發明的某些實施例涉及駐留在快取記憶體存儲器系統中(並且在以下示例中,駐留在L1d和L2快取記憶體中)的快取記憶體記憶體資料逐出系統。在描述快取記憶體資料逐出系統的細節之前,首先參考圖2,圖2是示出L2快取記憶體112各自的各種電路元件的方塊圖。具體地,圖2中示出的組件描繪了促進L2快取記憶體112內的通信和與圖1中示出的系統中的其他元件的通信的結構的基本特徵。首先,存在示出L1d介面210、L1i介面220、預取介面230和外部介面240的四個方塊210、220、230和240。共同地,這些方塊表示透過L2快取記憶體112對事務或請求進行排隊和跟蹤的電路。如圖1所示,在各個核中,存在L1d和L1i快取記憶體這兩者以及更高級L2的快取記憶體。L1d介面210和L1i介面220將L2快取記憶體與L1快取記憶體連接。這些介面將例如載入佇列、逐出佇列和查詢佇列實施為促進該通信的機制。預取介面230是促進與預取相關聯的通信的電路。在一個實施例中,預取器實施邊界方塊預取演算法(bounding box prefetch algorithm)和流預取演算法(stream prefetch algorithm)這兩者,並最終做出作為這兩個演算法的結果的結合的結果的預取確定。邊界方塊預取演算法可以類似於US 8,880,807中所描述的演算法,透過參考而將其併入本文。存在可以被預取器使用的許多已知的流預取演算法。
如本領域具有通常知識者將理解的,透過監視從對應核到相關聯的L1i和L1d快取記憶體的載入請求來部分地進行預取演算法。因此,這些被示出為對預取介面230的輸入。預取介面230的輸出採用對訪問L2標籤管線(tagpipe) 250的請求的形式,在這裡簡要描述L2標籤管線250的相關功能將被本領域具有通常知識者理解。最後,外部介面240提供到L2快取記憶體外部並且實際上在處理器核外部的元件的介面。如結合圖1所描述的,透過匯流排介面120來路由這種通信(特別是切片外通信)。
如圖2所示,各個方塊210、220、230和240具有被表示為標籤管線(訪問)請求的輸出。提供L2標籤管線250作為幾乎所有L2快取記憶體流量行進透過的中心點。在所示實施例中,存在被表示為A和B的兩個標籤管線。僅為了負載平衡而提供兩個這樣的標籤管線,並且照此,從方塊210、220、230和240(不同介面電路)輸出的標籤管線請求可以再次基於負載平衡而被引導到標籤管線A或標籤管線B。在一個實施例中,標籤管線是四階段管線,這些階段由字母A、B、C和D表示。經由標籤管線訪問標籤/資料陣列的事務(在這裡有時被稱為“標籤管線請求”)前進透過L2標籤管線250的階段。在A階段期間,事務請求訪問標籤管線。在B階段期間,標籤被發送到陣列(標籤陣列260和資料陣列270)。在C階段期間,從陣列接收MESI資訊以及標籤命中還是未命中的指示,並且考慮到從陣列接收的資訊來確定採取什麼動作。在D階段期間,使動作決定(完成/重新執行、推動填充佇列FillQ等)回到請求佇列。
最後,圖2示出標籤陣列260和數據陣列270。標籤陣列260有效地或實質上包括中繼資料,而資料陣列是包括資料的實際快取記憶體行的記憶體空間。標籤陣列260中的中繼資料包括MESI狀態以及L1i和L1d有效位。如已知的,MESI狀態定義存儲在資料陣列中的資料是處於修改(“M”)、獨佔(“E”)、共用(“S”)、還是無效(“I”)狀態。
這種架構的類似但先前的版本在US 2016/0350215中進行了描述,透過參考將其併入本文。由於關於電路內元件通信的細節的理解對於理解本發明不是必需的,並且實際上在本領域具有通常知識者的技能水準內,因此這裡不需要進一步描述。
已經提供了可以實施快取記憶體資料逐出系統的某些實施例的示例性整體環境的描述,現在將關注圖3,圖3示出快取記憶體資料逐出系統300的實施例。快取記憶體資料逐出系統300包括L1資料(L1d)快取記憶體114和L2快取記憶體112。L1資料快取記憶體114包括L1d載入佇列(L1d LoadQ)302、L1d存儲佇列(L1d StoreQ)304和L1d填充佇列(L1d FillQ)306。L2快取記憶體包括L2資料載入佇列(L2 DataLoadQ)308、L2資料逐出佇列(L2 DataEvictQ)310、以及標籤和資料陣列管線312,其中L2 DataLoadQ 308和L2 DataEvictQ 310與其他源314(例如,314a、314b)針對訪問進行競爭。注意,標籤和陣列管線312可以對應於圖2中所示的元件(例如,250、260和270)。
首先參考L1資料快取記憶體114的所示元件,L1d載入佇列302包括載入操作佇列,其中一些載入操作佇列可能需要訪問L2快取記憶體112,並且因此進一步提供是否將在L1d填充佇列306中分配條目的指示(例如,位元狀態)。為了確定L1資料快取記憶體114是否具有針對給定載入操作的資料,L1d載入佇列302請求訪問標籤陣列,並且如果存在命中,則訪問L1資料快取記憶體陣列並滿足該請求,並且如常規那樣對MESI狀態做出任何需要的改變。在標籤陣列中未識別所請求的快取記憶體行(例如,未命中)的情況下,L1d載入佇列302試圖經由L2快取記憶體112來服務載入操作。因而,L1d載入佇列302請求條目在L1d填充佇列306中的分配(例如,將快取記憶體行從L2快取記憶體112帶入,或者可能帶出)。在一個實施例中,L1d載入佇列302包括用於相應載入操作的72個條目,但在一些實施例中,可以使用不同數量的條目。
L1d存儲佇列304包括存儲操作佇列,其中一些存儲操作佇列可能需要訪問L2快取記憶體112,並且因此基於與上文針對由L1d載入佇列302處理的載入請求所描述的處理類似的處理,進一步提供是否將在L1d填充佇列306中分配條目的指示(例如,位元狀態),因此,為了簡潔起見,這裡省略相同或類似的討論。在一個實施例中,L1d存儲佇列304包括用於相應存儲操作的四十四(44)個條目,但在一些實施例中,可以使用不同數量的條目。
L1d填充佇列306包括需要訪問L2快取記憶體112的載入和/或存儲操作的佇列。L1d填充佇列306的各個條目對應於L1d載入佇列條目、L1d存儲佇列條目、或預取,或者在一些實施例中,對應於查表(tablewalk)請求(例如,基於轉譯後備緩衝器(translation lookaside buffer)中的未命中來遍歷線性到物理映射)。L1d填充佇列306還被配置為針對新的快取記憶體行分配空間(例如,從L1資料快取記憶體114逐出資料)並且將新的快取記憶體行帶入L1資料快取記憶體114中(例如,帶入到先前逐出的資料的位置中)。在一個實施例中,L1d填充佇列306包括用於載入或存儲操作的多個條目,其中各個條目跟蹤其相應的分配和逐出。在一個實施例中,存在十(10)個條目,但是在一些實施例中,可以使用不同數量的條目。
現在參考L2快取記憶體112的所示的元件,L2資料載入佇列308包括L1d分配請求的佇列以及L2快取記憶體112處的分配請求的狀態的各個條目的指示(例如,諸如待決(pending)等的狀態)。在一個實施例中,L2資料載入佇列308包括十(10)個條目,但是在一些實施例中,可以使用不同數量的條目。如圖3中的示例性箭頭線所表示的,L2資料載入佇列308的各個條目被一對一映射到L1d填充佇列306的相應條目上(例如,L1d FillQ[0]針對其L1d載入分配請求總是使用L2DataLoadQ[0])。
L2資料逐出佇列310包括L1d逐出佇列以及L2快取記憶體112處的逐出的狀態的各個條目的指示(例如,諸如待決等的狀態)。在一個實施例中,L2資料逐出佇列310包括十(10)個條目,但是在一些實施例中,可以使用不同數量的條目。如圖3中的示例性箭頭線所表示的,L2資料逐出佇列310的各個條目被一對一映射到L1d填充佇列306的相應條目上(例如,L1d FillQ[0]針對其逐出總是使用L2DataEvictQ[0])。L2快取記憶體112還包括從L2資料逐出佇列310到L1d填充佇列306的匯流排(例如,多熱匯流排(multi-hot bus)),其中L2資料逐出佇列310的各個條目的有效位當被斷言時指示逐出仍然正在被處理(例如,EvQValid[0]=1向相應的L1d填充佇列條目L1dFillQ[0]指示逐出仍然是待決的)。此外,當分配L1d填充佇列條目(例如,L1dFillQ[n])時,必須在發送其逐出之前等待相應的有效位被去斷言(例如,EvQValid[n]=0),否則其逐出可能重寫來自同一條目(例如,L1dFillQ[n])的先前逐出。
L2資料載入佇列308和L2資料逐出佇列310請求訪問管線312以訪問標籤陣列,從而確定L2快取記憶體112是否擁有L1請求的快取記憶體行,並且在命中的情況下,訪問資料陣列並且將資料(快取記憶體行)返回到L1資料快取記憶體114。在標籤陣列中未命中的情況下,可以訪問不同快取記憶體(例如,L3快取記憶體)以獲得所請求的快取記憶體行。L2資料逐出佇列310請求訪問以例如將壞資料寫入L2快取記憶體陣列、更新(L2標籤陣列的)目錄位元以反映L1資料快取記憶體114不再擁有正被逐出的快取記憶體行。注意,L2快取記憶體112包括如已知的目錄(未示出),該目錄使得L2快取記憶體112能夠記錄諸如L2快取記憶體MESI狀態、快取記憶體行在L1資料快取記憶體114(和L1i快取記憶體)中是否有效(使用有效位元)等的資訊。儘管L2資料載入佇列308和L2資料逐出佇列310這兩者潛在地需要訪問管線312的標籤和/或資料陣列,但是注意,其他源314同樣競爭管線資源。其他源314可以包括I-快取記憶體請求、外部窺探、對L2快取記憶體112的其他處理需求(例如,從L3快取記憶體返回的要被寫入到資料陣列和/或標籤陣列中的資料)。儘管競爭管線資源,但L2快取記憶體112也應維持合適的性能。例如,一個基準(benchmark)可以是按每單個時鐘週期處理L2快取記憶體112中的一個載入請求,考慮到嘗試請求訪問管線312的所有這些源314,這是個挑戰。
在一個示例操作中,載入或存儲操作在L1d載入佇列302或L1d存儲佇列304中排隊。當載入或存儲操作在L1資料快取記憶體114中未命中時,在L1d填充佇列306中分配條目。L1d填充佇列306進而將載入請求發送到L2快取記憶體112,在L2資料載入佇列308中跟蹤該載入請求。L1d填充佇列306還可能需要逐出快取記憶體行以適應新的快取記憶體行或為新的快取記憶體行騰出空間,並且如果需要逐出,則L2資料逐出佇列310跟蹤該逐出。L2資料逐出佇列310使用有效位元(例如,EvQValid,如上所述)向L1d填充佇列306發信號通知逐出正在進行中,其中各個位元對應於L2資料逐出佇列310的特定條目(並且因此對應於特定L1d填充佇列條目)。
在描述快取記憶體資料逐出系統300的實施例之前,簡短的題外話有助於理解使用常規快取記憶體逐出技術如何可能存在逐出積壓。各個L2資料逐出佇列條目一次僅跟蹤該條目的一個逐出。因此,在L1d填充佇列306可以將來自該重新分配的條目的新逐出發送至同一L2資料逐出佇列條目之前,L1d填充佇列條目必須等待其相應的有效位針對先前逐出而去斷言(假定其被斷言)。實施該行為以防止L1d填充佇列條目重寫來自先前的L1d填充佇列條目的逐出(例如,如果在重新使用L1d填充佇列條目時該逐出尚未完成)。然而,如上所述,已經觀察到:使用過去的技術,一般地,由於L2快取記憶體中的L1資料逐出的積壓(主要由於L2不能跟上同時載入和逐出的穩定流),因此L1d填充佇列條目不能以及時的方式將其逐出發送到L2資料逐出佇列。
快取記憶體資料逐出系統300中的快取記憶體行逐出的處理是至少部分地以如下認識為前提:在某些情況下,L2快取記憶體112可以安全地忽略某些逐出並且立即允許後續逐出而不違反快取記憶體一致性,因此使得後續L1d填充佇列條目能夠發送其逐出(例如,基於去斷言的有效位),而無需等待完成先前逐出。快取記憶體資料逐出系統300中的快取記憶體行逐出的處理的進一步前提是:進行逐出可能是需要將快取記憶體行帶入L1資料快取記憶體114中的結果,這意味著服務或處理載入需要更高優先順序。在一個實施例中,如果L1資料快取記憶體114正在逐出壞(dirty)的快取記憶體行(例如,具有修改(M)的MESI狀態),則L2快取記憶體112需要處理該逐出以保持快取記憶體一致性(並且因此延遲從同一L1d填充佇列條目的後續逐出)。然而,在L1資料快取記憶體114正在逐出乾淨(clean)的快取記憶體行(例如,具有共用(S)或獨佔(E)的MESI狀態)的情況下,對於快取記憶體一致性實際上不需要逐出。相反,僅由L2快取記憶體112使用逐出以更新其目錄(例如,透過清除與逐出的快取記憶體行相對應的L1資料快取記憶體有效位元),從而防止潛在的不必要的窺探請求。
在快取記憶體資料逐出系統300的實施例中,L2資料逐出佇列310在從L1d填充佇列306接收到逐出時,將其有效位元信號(EvQValid)斷言到L2快取記憶體112,然後在正被逐出的快取記憶體行的狀態為乾淨(例如,S或E MESI狀態)的情況下立即(例如,在大約兩個時鐘週期內)沿著匯流排將有效位元信號去斷言到L1d填充佇列306。注意,如果正被逐出的快取記憶體行是壞的(例如,M MESI狀態),則標準逐出處理繼續進行,直到在有效位被去斷言之前完成為止。對於乾淨逐出的情況,L2資料逐出佇列310繼續處理該逐出,直到完成該逐出、以及從同一L1d填充佇列條目接收到後續逐出(例如,其重寫L2資料逐出佇列310中的較老的乾淨逐出)這兩者中的較早者為止。因此,L2資料逐出佇列310向L1d填充佇列306早地指示其逐出已完成(甚至在經由對L2快取記憶體目錄的更新而實際完成該逐出之前)使得L1d填充佇列306中的同一條目能夠在為後面的分配而重新分配該條目時立即開始其逐出處理。
注意,在一些實施例中,如本領域具有通常知識者將理解的,除了用於L1資料快取記憶體114和L2快取記憶體112的整體或聚合操作的控制邏輯之外,圖3所示的佇列的各個條目包括平行作業的其自己的控制邏輯或狀態機。
已經描述了快取記憶體資料逐出系統的某些實施例,普通技術人員將理解:在圖4中描繪的並且表示為方法400的資料快取記憶體逐出方法的一個實施例可以在微處理器中並且特別在快取記憶體資料逐出系統300(圖3)中實現。在一個實施例中,方法400包括:利用第二資料快取記憶體,處理由第一載入或存儲操作引起的第一資料快取記憶體中的未命中、以及為了容納所述第一載入或存儲操作而從第一資料快取記憶體的逐出這兩者(步驟402);以及基於與所述逐出相對應的第一狀態,在所述逐出實際上完成之前,從所述第二資料快取記憶體向所述第一資料快取記憶體指示所述逐出完成(步驟404)。
流程圖中的任何過程描述或方塊應理解為表示代碼的模組、段、邏輯或部分(其包括用於在過程中實現特定邏輯功能或步驟的一個或多個可執行指令),並且替代實現包括在實施例的範圍內,其中如本發明領域技術人員將理解的,功能可以不按所示或討論的順序地執行(包括基本上同時執行或以不同循序執行),這取決於所涉及的功能。
雖然在附圖和前面的描述中示出並詳細描述了本發明,但這樣的圖和描述應被認為是例示性或示例性的,而不是限制性的;本發明不限於所公開的實施例。透過研究附圖、公開內容和所附申請專利範圍,本領域具有通常知識者在實踐所要求保護的發明時可以理解並實現所公開的實施例的其他變形。
注意,可以使用所公開的實施例的各種組合,因此參考實施例或一個實施例並不意味著從其他實施例的特徵的使用中排除該實施例的特徵。在申請專利範圍中,詞語“包括”不排除其他元件或步驟。
100:處理器 102_0、102_6、102_7:切片 110_0、110_6、110_7:核 112、112_0、112_6、112_7:L2快取記憶體 114、114_0、114_6、114_7:L1資料快取記憶體 120、120_0、120_6、120_7:匯流排介面 130:L3快取記憶體 140_0、140_6、140_7:其他切片邏輯 160:非核電路 162:匯流排介面電路 164:記憶體控制器 166:其他非核邏輯 180:晶片外記憶體 190:通信匯流排 210:L1d介面 220:L1i介面 230:預取介面 240:外部介面 250:標籤管線 260:標籤陣列 270:數據陣列 300:快取記憶體資料逐出系統 302:L1d載入佇列 304:L1d存儲佇列 306:L1d填充佇列 308:L2資料載入佇列 310:L2資料逐出佇列 312:管線 314a、314b:其他源 400:方法 402:步驟 404:步驟
參考以下附圖,可以更好地理解本發明的各個方面。不必按比例繪製附圖中的組件,而是將重點放在清楚地例示本發明的原理上。此外,在附圖中,相同的附圖標記在多個視圖中表示相應部件。 圖1是示出實現快取記憶體資料逐出系統的實施例的示例性處理器的方塊圖。 圖2是示出主要用於與其他系統元件通信的快取記憶體記憶體的某些特徵的方塊圖。 圖3是快取記憶體資料逐出系統的實施例的方塊圖。 圖4是示例性快取記憶體資料逐出方法的實施例的流程圖。
400:方法
402:步驟
404:步驟

Claims (20)

  1. 一種微處理器,包括: 第一資料快取記憶體;以及 第二資料快取記憶體,其被配置為對由第一載入或存儲操作引起的所述第一資料快取記憶體中的未命中、以及為了容納所述第一載入或存儲操作而從所述第一資料快取記憶體的逐出這兩者進行處理,所述第二資料快取記憶體被配置為基於與所述逐出相對應的第一狀態,在實際上完成所述逐出之前向所述第一資料快取記憶體指示該逐出完成。
  2. 如請求項1所述的微處理器,其中,所述第二資料快取記憶體在向所述第一資料快取記憶體發送所述指示之後繼續處理所述逐出,直到透過更新所述第二資料快取記憶體中的目錄而實際上完成所述逐出、以及重寫所述逐出這兩者中的較早者為止。
  3. 如請求項1所述的微處理器,其中,所述第一狀態對應於從分配到所述第一資料快取記憶體中起尚未被修改的逐出的快取記憶體行。
  4. 如請求項1所述的微處理器,其中,所述第一狀態對應於包括獨佔或共用的MESI狀態的逐出的快取記憶體行。
  5. 如請求項1所述的微處理器,其中,所述第二資料快取記憶體還被配置為對由第二載入或存儲操作引起的所述第一資料快取記憶體中的未命中、以及為了容納所述第二載入或存儲操作而從所述第一資料快取記憶體的另一逐出這兩者進行處理,所述第二資料快取記憶體被配置為基於與所述另一逐出相對應的第二狀態,向所述第一資料快取記憶體指示所述另一逐出是待決的,直到實際上完成該另一逐出為止。
  6. 如請求項5所述的微處理器,其中,所述第二狀態對應於從分配到所述第一資料快取記憶體中起已經修改的逐出的快取記憶體行。
  7. 如請求項5所述的微處理器,其中,所述第二狀態對應於包括修改的MESI狀態的逐出的快取記憶體行。
  8. 一種快取記憶體存儲器系統,包括: 一級資料快取記憶體,其包括一級資料載入佇列、一級資料存儲佇列和一級資料填充佇列,所述一級資料填充佇列被配置為:基於所述一級資料快取記憶體中的未命中而在所述一級資料填充佇列中分配分別與所述一級資料載入佇列或所述一級資料存儲佇列中的第一載入或存儲操作相對應的條目,並且從所述一級資料快取記憶體逐出第一資料來為所述第一載入或存儲操作分配空間;以及 二級資料快取記憶體,其包括二級資料載入佇列和二級資料逐出佇列,所述二級資料載入佇列被配置為接收針對所述第一載入或存儲操作的一級資料快取記憶體分配請求,所述二級資料逐出佇列被配置為接收所述第一資料、映射到所述二級資料載入佇列和所述二級資料逐出佇列的相應條目的條目,所述二級資料逐出佇列被配置為基於與所述第一資料相對應的第一狀態,在實際上完成所述第一資料的逐出之前向所述一級資料填充佇列指示該逐出完成。
  9. 如請求項8所述的快取記憶體存儲器系統,其中,所述二級資料快取記憶體還包括標籤陣列和資料陣列管線,其中,所述二級資料逐出佇列還被配置為:在向所述一級資料填充佇列發送所述指示之後請求訪問所述管線,直到透過更新所述二級資料快取記憶體中的目錄而實際上完成所述第一資料的逐出、以及透過將資料重新分配給所述一級資料填充佇列的同一條目來重寫所述逐出這兩者中的較早者為止。
  10. 如請求項8所述的快取記憶體存儲器系統,更包括匯流排,所述匯流排包括被配置為對所述指示進行通信的位值,其中,所述位值在接收到所述逐出時被斷言,然後在基於所述一級資料快取記憶體中的另一未命中而為用於第二載入或存儲操作的另一逐出重新分配條目時立即被去斷言,以使得所述一級資料填充佇列能夠逐出第二資料。
  11. 如請求項8所述的快取記憶體存儲器系統,其中,與所述第一資料相對應的所述第一狀態包括所述第一資料從被分配到所述一級資料快取記憶體中起尚未被修改的指示。
  12. 如請求項8所述的快取記憶體存儲器系統,其中,與所述第一資料相對應的所述第一狀態包括獨佔或共用的MESI狀態。
  13. 如請求項8所述的快取記憶體存儲器系統,其中,所述一級資料填充佇列還被配置為基於所述一級資料快取記憶體中的未命中而分配分別與所述一級資料載入佇列或所述一級資料存儲佇列中的第三載入或存儲操作相對應的條目,並且從所述一級資料快取記憶體逐出第三資料來為所述第三載入或存儲操作分配空間,所述二級資料載入佇列還被配置為接收針對所述第三載入或存儲操作的一級資料快取記憶體分配請求,並且所述二級資料逐出佇列還被配置為接收所述第三資料、映射到所述二級資料載入佇列和所述二級資料逐出佇列的相應條目的與所述第三載入或存儲操作相對應的條目,所述二級資料逐出佇列被配置為基於與所述第三資料相對應的第二狀態,向所述一級資料填充佇列指示所述第三資料的逐出是待決的,直到實際上完成該逐出為止。
  14. 如請求項1所述的快取記憶體存儲器系統,其中,與所述第三資料相對應的所述第二狀態包括所述第三資料從被分配到所述一級資料快取記憶體中起已經被修改的指示。
  15. 如請求項1所述的快取記憶體存儲器系統,其中,與所述第三資料相對應的所述第二狀態包括修改的MESI狀態。
  16. 一種在微處理器的快取記憶體存儲器系統中實現的方法,所述方法包括: 利用第二資料快取記憶體,對由第一載入或存儲操作引起的第一資料快取記憶體中的未命中、以及為了容納所述第一載入或存儲操作而從所述第一資料快取記憶體的逐出這兩者進行處理;以及 基於與所述逐出相對應的第一狀態,在實際上完成所述逐出之前從所述第二資料快取記憶體向所述第一資料快取記憶體指示所述逐出完成。
  17. 如請求項16所述的方法,更包括所述第二資料快取記憶體在向所述第一資料快取記憶體發送所述指示之後繼續處理所述逐出,直到透過更新所述第二資料快取記憶體中的目錄而實際上完成所述逐出、以及重寫所述逐出這兩者中的較早者為止。
  18. 如請求項16所述的方法,其中,所述第一狀態對應於從分配到所述第一資料快取記憶體中起尚未被修改的逐出的快取記憶體行。
  19. 如請求項16所述的方法,更包括: 所述第二資料快取記憶體對由第二載入或存儲操作引起的第一資料快取記憶體中的未命中、以及為了容納所述第二載入或存儲操作而從所述第一資料快取記憶體的另一逐出這兩者進行處理;以及 所述第二資料快取記憶體基於與所述另一逐出相對應的第二狀態,向所述第一資料快取記憶體指示所述另一逐出是待決的,直到實際上完成所述另一逐出為止。
  20. 如請求項19所述的方法,其中,所述第二狀態對應於從分配到所述第一資料快取記憶體起已經被修改的逐出的快取記憶體行。
TW110138467A 2020-12-01 2021-10-18 微處理器、快取記憶體存儲器系統及其中實現的方法 TWI793812B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/108,499 US11467972B2 (en) 2020-12-01 2020-12-01 L1D to L2 eviction
US17/108,499 2020-12-01

Publications (2)

Publication Number Publication Date
TW202223630A TW202223630A (zh) 2022-06-16
TWI793812B true TWI793812B (zh) 2023-02-21

Family

ID=78424851

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110138467A TWI793812B (zh) 2020-12-01 2021-10-18 微處理器、快取記憶體存儲器系統及其中實現的方法

Country Status (3)

Country Link
US (1) US11467972B2 (zh)
CN (1) CN113641598A (zh)
TW (1) TWI793812B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11847062B2 (en) * 2021-12-16 2023-12-19 Advanced Micro Devices, Inc. Re-fetching data for L3 cache data evictions into a last-level cache

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100228922A1 (en) * 2009-03-09 2010-09-09 Deepak Limaye Method and system to perform background evictions of cache memory lines
TW201928680A (zh) * 2017-11-20 2019-07-16 南韓商三星電子股份有限公司 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體
US20190266101A1 (en) * 2018-02-28 2019-08-29 Imagination Technologies Limited Memory Interface Between Physical and Virtual Address Spaces
TW202038102A (zh) * 2018-12-26 2020-10-16 南韓商三星電子股份有限公司 快取系統以及將自第一快取逐出的資料分配至第二快取的方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5924121A (en) * 1996-12-23 1999-07-13 International Business Machines Corporation Adaptive writeback of cache line data in a computer operated with burst mode transfer cycles
WO2013101092A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Data control using last accessor information
JP6708019B2 (ja) * 2016-06-29 2020-06-10 富士通株式会社 演算処理装置、情報処理装置および演算処理装置の制御方法
US11106600B2 (en) * 2019-01-24 2021-08-31 Advanced Micro Devices, Inc. Cache replacement based on translation lookaside buffer evictions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100228922A1 (en) * 2009-03-09 2010-09-09 Deepak Limaye Method and system to perform background evictions of cache memory lines
TW201928680A (zh) * 2017-11-20 2019-07-16 南韓商三星電子股份有限公司 資料管理方法、多處理器系統和非暫態計算機可讀儲存媒體
US20190266101A1 (en) * 2018-02-28 2019-08-29 Imagination Technologies Limited Memory Interface Between Physical and Virtual Address Spaces
TW202038102A (zh) * 2018-12-26 2020-10-16 南韓商三星電子股份有限公司 快取系統以及將自第一快取逐出的資料分配至第二快取的方法

Also Published As

Publication number Publication date
CN113641598A (zh) 2021-11-12
TW202223630A (zh) 2022-06-16
US20220171712A1 (en) 2022-06-02
US11467972B2 (en) 2022-10-11

Similar Documents

Publication Publication Date Title
US8706969B2 (en) Variable line size prefetcher for multiple memory requestors
US7669009B2 (en) Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches
US9311246B2 (en) Cache memory system
CN110362506B (zh) 高速缓存存储器及其中实现的方法
US20190266091A1 (en) Memory Interface Having Multiple Snoop Processors
US20210294744A1 (en) Data coherency manager with mapping between physical and virtual address spaces
US8117389B2 (en) Design structure for performing cacheline polling utilizing store with reserve and load when reservation lost instructions
US10108548B2 (en) Processors and methods for cache sparing stores
US9009420B2 (en) Structure for performing cacheline polling utilizing a store and reserve instruction
TWI793812B (zh) 微處理器、快取記憶體存儲器系統及其中實現的方法
US9983874B2 (en) Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling
GB2550048A (en) Read discards in a processor system with write-back caches
US20140115257A1 (en) Prefetching using branch information from an instruction cache
TWI805435B (zh) 預取指方法和微處理器
US20230222065A1 (en) Prefetch state cache (psc)
US11921640B2 (en) Mitigating retention of previously-critical cache lines
US20240054072A1 (en) Metadata-caching integrated circuit device
US20230236973A1 (en) Cat aware loads and software prefetches
TW202331524A (zh) 微處理器及其處理零值資料的方法
CN116150047A (zh) 用于操作高速缓存存储设备以高速缓存与存储器地址相关联的数据的技术