TW202328896A - 多媒體壓縮訊框感知快取記憶體替換策略 - Google Patents
多媒體壓縮訊框感知快取記憶體替換策略 Download PDFInfo
- Publication number
- TW202328896A TW202328896A TW111143377A TW111143377A TW202328896A TW 202328896 A TW202328896 A TW 202328896A TW 111143377 A TW111143377 A TW 111143377A TW 111143377 A TW111143377 A TW 111143377A TW 202328896 A TW202328896 A TW 202328896A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- stale
- value
- counter
- data
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
各種實施例包括用於由計算設備實現標準感知快取記憶體替換策略的方法和設備。實施例可以包括:更新陳舊計數器,將本端計數器的值與資料在系統快取記憶體中的位置相關聯地寫入系統快取記憶體,其中當將相關聯的資料寫入系統快取記憶體時(亦即,在相關聯的資料寫入系統快取記憶體時),本端計數器的值包括陳舊計數器的值,以及使用相關聯的資料的本端計數器的值來決定相關聯的資料是否陳舊。
Description
本案係關於多媒體壓縮訊框感知快取記憶體替換策略。
計算設備的系統快取記憶體可以根據一或多個替換策略儲存資料,例如不是最近使用的(nMRU)和基於容量的先進先出(FIFO)。nMRU和FIFO策略對於各種用例皆不是最佳的,例如基於多媒體訊框的客戶端,其中時間局部性在訊框時間邊界內並且容量分配可以基於壓縮率而變化。
本案的各個態樣提供的方法包括用於實現此類經由計算設備實現標準感知快取記憶體替換策略的方法的方法和裝置,其可以包括以下步驟:更新陳舊(staling)計數器,將本端計數器的值與相關聯的資料在系統快取記憶體中的位置相關聯地寫入系統快取記憶體,其中當相關聯的資料被寫入系統快取記憶體時,本端計數器的值包括陳舊計數器的值,以及使用相關聯的資料的本端計數器的值來決定相關聯的資料是否陳舊(stale)。
在一些態樣,更新陳舊計數器可以包括:從被配置為指示是否更新陳舊計數器的計算設備的客戶端接收信號,基於該信號來決定是否更新陳舊計數器,以及回應於決定更新陳舊計數器而更新陳舊計數器。
在一些態樣,信號是暫存器寫命令,從計算設備的客戶端接收信號可以包括從由客戶端設置的暫存器中讀取值,並且基於該信號決定是否更新陳舊計數器可以包括基於來自暫存器的值來決定是否更新陳舊計數器。
一些態樣可以包括由計算設備的客戶端根據基於時間的標準在暫存器處設置值。
一些態樣可以包括由計算設備的客戶端根據基於事件的標準在暫存器處設置值。
一些態樣可以包括:接收記憶體寫命令,其中將本端計數器的值與相關聯的資料在系統快取記憶體中的位置相關聯地寫入系統快取記憶體可以發生在更新陳舊計數器之前,並且其中相關聯的資料為寫記憶體命令的資料。
在一些態樣,使用相關聯的資料的本端計數器的值來決定相關聯的資料是否陳舊可以包括使用陳舊計數器的值和本端計數器的值來計算替換值,並且決定是否替換值超過陳舊閾值,其中回應於決定替換值超過陳舊閾值,相關聯的資料被決定為陳舊。
一些態樣可以包括:接收記憶體存取命令,以及將記憶體存取命令的資料寫入系統快取記憶體中的替換值超過陳舊閾值的位置處,其中寫入到系統快取記憶體的記憶體存取命令的資料是相關聯的資料。
一些態樣可以包括:接收記憶體寫命令,使替換值超過陳舊閾值的位置處的資料無效,以及將記憶體寫命令的資料寫入系統快取記憶體中的具有被無效的資料的位置處,其中寫入系統快取記憶體的記憶體寫命令的資料是相關聯的資料。
一些態樣可以包括:接收記憶體寫存取命令,並且回應於決定沒有替換值超過陳舊閾值,將記憶體寫存取命令的資料寫入到系統快取記憶體中的符合另一快取記憶體替換策略的位置處。
進一步的態樣包括一種計算設備,該計算設備包括被配置為執行以上概括的任何方法的操作的記憶體控制設備。其他態樣包括一種非暫時性處理器可讀取儲存媒體,其上儲存有處理器可執行軟體指令,該等指令被配置為使處理器執行以上概括的任何方法的操作。其他態樣包括一種計算設備,該計算設備具有用於實現以上概括的任何方法的功能的構件。
將參照附圖詳細描述各種實施例。在可能的情況下,貫穿附圖將使用相同的元件符號來指代相同或相似的部分。對特定實例和實施方式的引用是為了說明的目的,而不是為了限制請求項的範疇。
各種實施例包括方法和實現此類方法的計算設備,該等方法實現標準感知快取記憶體替換策略。實施例可以包括將寫入系統快取記憶體的資料與本端計數器相關聯。本端計數器的值可以包括在相關聯的資料被寫入系統快取記憶體時(亦即,當相關聯的資料被寫入系統快取記憶體時)的陳舊計數器的值。可以使用相關聯的資料的本端值來計算系統快取記憶體中資料的替換值,並將其與陳舊閾值進行比較。相關聯的資料的本端計數器的值可用於決定相關聯的資料是否陳舊。回應於替換值超過及/或等於陳舊閾值,可以替換與用於計算替換值的本端計數器相關聯的系統快取記憶體中的資料。
術語「計算設備」在本文中用於指代固定計算設備,包括個人電腦、桌上型電腦、一體機、工作站、超級電腦、大型電腦、嵌入式電腦(例如在車輛和其他更大系統中)、電腦化交通工具(例如,部分或完全自主的陸地、空中及/或水上交通工具,例如乘用車、商用車、休閒車、軍用車輛、無人機等)、伺服器、多媒體電腦和遊戲機。術語「計算設備」和「行動計算設備」在本文中可互換使用,指的是以下各項中的任何一者或全部:蜂巢式電話、智慧手機、個人或行動多媒體播放機、個人數位助理(PDA)、膝上型電腦、平板電腦、可轉換膝上型電腦/平板電腦(二合一電腦)、智慧型電腦、超極本、小筆電、掌上電腦、無線電子郵件接收器、支援多媒體網際網路的蜂巢式電話、行動遊戲機、無線遊戲控制器和類似的個人電子設備,類似的個人電子設備包括記憶體和可程式設計處理器。
為了解釋的容易和清楚,各種實施例根據代碼(例如處理器可執行指令)來描述,但是可以類似地適用於任何資料,例如代碼、程式資料或儲存在記憶體中的其他資訊。術語「代碼」、「資料」和「資訊」在本文中可互換使用,並不意欲將請求項和說明書的範疇限制為在描述各種實施例時用作實例的代碼、資料或資訊的類型。
通常,計算設備的系統快取記憶體使用諸如不是最近使用的(nMRU)和先進先出(FIFO)的一或多個資料替換策略來控制快取有資料的記憶體空間。nMRU和FIFO策略對於各種用例皆不是最佳的,包括例如基於多媒體訊框的客戶端,其中時間局部性在訊框時間邊界內並且容量分配可以基於壓縮率而變化。當從多媒體客戶端存取的快取列具有不同的存取頻率並且僅在特定的時間範圍內有效時,NMRU的替換策略是不充分的。自我調整分區不能保證FIFO替換行為,其中當子快取記憶體充滿壓縮訊框時,快取分區的大小可能會隨時間變化。
各種實施例處理並解決習知快取記憶體替換策略中的限制。客戶端,例如處理器或由處理器執行的軟體程式(例如,作業系統及/或應用程式)的程序,可以發信號通知(例如,經由通訊、暫存器寫入、直接中斷等)需要更新系統快取記憶體中資料的陳舊計數器。為了便於說明,此處可能以暫存器寫入的方式來描述一些實例;然而,該等實例並不意欲將請求項或描述的範疇限制為暫存器寫入。熟習此項技術者將理解,發信號通知處理器的其他類型或方法可以提供相同或相似的功能。暫存器寫入可以基於諸如時間(亦即,基於時間的標準)、事件(亦即,基於事件的標準)及/或其他度量的標準來發出。例如,可以基於訊框時間邊界、壓縮多媒體資料訊框內的色域等在壓縮多媒體資料訊框的開始及/或結束處發出暫存器寫入。處理器或系統快取記憶體可以將作為本端計數器的陳舊計數器的值與系統快取記憶體中的資料相關聯。例如,處理器或系統快取記憶體可以在系統快取列處插入或使用資料期間在系統快取列的標籤中關聯陳舊計數器的值。當相關聯的資料被寫入系統快取記憶體時(亦即,在相關聯的資料被寫入系統快取記憶體時),處理器或系統快取記憶體可以將本端計數器(包括陳舊計數器的值)與資料進行關聯。因為當相關聯的資料被寫入系統快取記憶體時,本端計數器與系統快取記憶體中的資料相關聯,所以陳舊計數器可以經由區分系統快取記憶體中的資料來指示陳舊資料,因此可以被處理器使用或協助為新的寫命令辨識候選替換記憶體位置。
陳舊閾值可以由處理器或系統快取記憶體使用以決定系統快取記憶體中的資料是否陳舊並且可以在下一次將資料寫入系統快取記憶體時被替換。陳舊閾值可以基於標準感知快取記憶體替換策略來預配置。可以將系統快取記憶體中資料的替換值(該值可以使用陳舊計數器和與資料相關聯的本端計數器的值計算)與陳舊閾值進行比較以決定相關聯的資料是否陳舊並且可以在下一次將資料寫入系統快取記憶體時被替換。
各種實施例提供快取記憶體替換策略方法,經由該等方法可以追蹤快取記憶體內的陳舊資料,使得在下一次將資料寫入系統快取記憶體時,陳舊資料比非陳舊資料具有更高的被替換的機會。使用各種實施例的方法辨識陳舊資料可以實現決定性快取記憶體使用,並因此經由改良末級快取記憶體使用和減少雙倍資料速率(DDR)同步動態隨機存取記憶體(SDRAM)中的訊務來改良計算設備的操作。
圖1圖示了包括適用於各種實施例的計算設備100的系統。計算設備100可以包括具有中央處理單元104、記憶體106、通訊介面108、記憶體介面110、周邊設備介面120和處理設備124的晶片上系統(SoC)102。計算設備100亦可以包括通訊元件112,例如有線或無線數據機、記憶體114、用於建立無線通訊鏈路的天線116及/或周邊設備122。處理器124可以包括各種處理設備中的任何一種,例如多個處理器核心。
術語「晶片上系統」或「SoC」在本文中用於指代一組互連的電子電路,通常但不排他地包括處理設備、記憶體和通訊介面。處理設備可以包括各種不同類型的處理器及/或處理器核心,例如中央處理單元(CPU)104及/或處理器124,包括通用處理器、中央處理單元(CPU)104、數位信號處理器(DSP)、圖形處理單元(GPU)、加速處理單元(APU)、安全處理單元(SPU)、智慧財產權單元(IPU)、計算設備的特定元件的子系統處理器(諸如用於相機子系統的圖像處理器或用於顯示器的顯示處理器)、輔助處理器、周邊設備處理器、單核處理器、多核處理器、控制器及/或微控制器。處理設備可以進一步體現其他硬體和硬體組合,例如現場可程式設計閘陣列(FPGA)、特殊應用積體電路(ASIC)、其他可程式設計邏輯設備、個別閘門邏輯、電晶體邏輯、效能監控硬體、看門狗硬體及/或時間參考。積體電路可以被配置為使得積體電路的元件常駐在諸如矽的單片半導體材料上。
SoC 102可以包括一或多個CPU 104和處理器124。計算設備100可以包括多於一個的SoC 102,從而增加CPU 104、處理器124和處理器核心的數量。計算設備100亦可以包括不與SoC 102相關聯的CPU 104和處理器124。單獨的CPU 104和處理器124可以是多核處理器。CPU 104和處理器124每個皆可以配置用於特定目的,該等目的可以與計算設備100的其他CPU 104和處理器124相同或不同。相同或不同的配置的CPU 104、處理器124和處理器核心中的一或多個可以分類在一起。一組CPU 104、處理器124或處理器核心可稱為多處理器集群。
SoC 102的記憶體106可以是被配置為儲存資料和處理器可執行代碼以供CPU 104、處理器124或SoC 102的其他元件存取的揮發性或非揮發性記憶體。計算設備100及/或SoC 102可以包括為各種目的配置的一或多個記憶體106。一或多個記憶體106可以包括揮發性記憶體,例如隨機存取記憶體(RAM),包括DDR記憶體,被實現為主記憶體或快取記憶體記憶體。該等記憶體106可以被配置為臨時保存從資料感測器或子系統接收的有限量的資料、從非揮發性記憶體請求的、基於各種因素預期未來存取的從非揮發性記憶體載入到記憶體106的資料及/或處理器可執行代碼指令及/或由CPU 104及/或處理器124產生並臨時儲存以供將來快速存取而不儲存在非揮發性記憶體中的中間處理資料及/或處理器可執行代碼指令。記憶體106可以被配置為至少暫時地儲存資料和處理器可執行代碼,該資料和處理器可執行代碼從另一記憶體設備(例如另一記憶體106或記憶體114)載入到記憶體106,以供CPU 104、處理器124或SoC 102的其他元件中的一或多個存取。在一些實施例中,任何數量和組合的記憶體106可包括一次性可程式設計或唯讀記憶體。
記憶體介面110和記憶體114可以協同工作以允許計算設備100將資料和處理器可執行代碼儲存在揮發性及/或非揮發性儲存媒體上,並從揮發性及/或非揮發性儲存媒體中取得資料和處理器可執行代碼。記憶體114可以被配置為很像記憶體106的實施例,例如主記憶體,其中記憶體114可以儲存資料或處理器可執行代碼以供CPU 104、處理器124或SoC 102的其他元件中的一或多個存取。在一些實施例中,非揮發性的記憶體114可以在計算設備100的電源已經被關閉之後保留資訊。當電源重新開啟並且計算設備100重新開機時,儲存在記憶體114上的資訊對於計算設備100是可用的。在一些實施例中,揮發性的記憶體114在計算設備100電源已經關閉後可能不會保留資訊。記憶體介面110可以控制對記憶體114的存取,並允許CPU 104、處理器124或SoC 102的其他元件從記憶體114讀取資料及向記憶體114寫入資料。
計算設備100及/或SoC 102的一些或所有元件可以不同地佈置及/或組合,同時仍然支援各種實施例的功能。計算設備100可以不限於各個元件一個,並且各個元件的多個例子可以包括在計算設備100的各種配置中。
圖2圖示了適合於實現各種實施例的示例性SoC。參考圖1和圖2中,SoC 200(例如,圖1中的SoC 102)可以包括元件的各種組合,包括任何數量和組合的處理器202(例如,圖1中的CPU 104、處理器124)、L3快取記憶體216(例如,圖1中的記憶體106)、系統快取記憶體218(例如,圖1中的記憶體106)及/或系統記憶體224(例如,圖1中的記憶體106)。
處理器202可以包括任何數量的處理器核心204a、204b、204c、206a、206b、206c及其組合。例如,多核處理器202可以具有複數個同構或異構處理器核心204a、204b、204c、206a、206b、206c。同構多核處理器可以包括複數個同構處理器核心。處理器核心204a、204b、204c、206a、206b、206c可以是同構的,因為多核處理器202的處理器核心204a、204b、204c、206a、206b、206c可以被配置用於相同的目的並且具有相同的或類似的效能特性。例如,多核處理器202可以是通用處理器,處理器核心204a、204b、204c、206a、206b、206c可以是同構通用處理器核心。作為另一個實例,多核處理器202可以是圖形處理單元或數位信號處理器,並且處理器核心204a、204b、204c、206a、206b、206c可以分別是同構圖形處理器核心或數位信號處理器核心。
異構多核處理器可以包括複數個異構處理器核心。處理器核心204a、204b、204c、206a、206b、206c可以是異構的,因為多核處理器202的處理器核心204a、204b、204c、206a、206b、206c可以被配置用於不同的目的及/或具有不同的效能特性。此種異構處理器核心的異構性可能包括不同的指令集架構、流水線、工作頻率等。此種異構處理器核心的實例可能包括所謂的「big.LITTLE」架構,其中較慢、低功率的處理器核心可能與更強大、更耗電的處理器核心相耦合。
處理器核心204a、204b、204c、206a、206b、206c可以分類在一起作為處理器核心集群212、214。通常,處理器核心集群212、214可以包括每個處理器核心集群212、214內的同構處理器核心。處理器核心集群212、214可以與其他處理器核心集群212、214是同構的或異構的。例如,處理器核心集群212、214可以是同構的,具有彼此相同的處理器核心。作為另一個實例,處理器核心集群212、214可以是異構的,具有彼此不同的處理器核心。為了便於解釋,術語「處理器」、「處理器核心」和「處理器核心集群」在本文中可以互換使用。
處理器202亦可包括任何數量和組合的L2快取記憶體208a、208b、208c、210a、210b、210c(例如,圖1中的記憶體106)。例如,每個處理器核心集群212、214及/或每個處理器核心204a、204b、204c、206a、206b、206c可以具有專用的L2快取記憶體208a、208b、208c、210a、210b、210c。每個L2快取記憶體208a、208b、208c、210a、210b、210c可以指定用於由指定的處理器核心集群212、214及/或處理器核心204a、204b、204c、206a、206b、206c進行讀及/或寫存取。L2快取記憶體208a、208b、208c、210a、210b、210c可以儲存資料及/或指令,並使儲存的資料及/或指令可用於指定的處理器核心集群212、214及/或處理器核心204a、204b、204c、206a、206b、206c。L2快取記憶體208a、208b、208c、210a、210b、210c可以包括如本文參考圖1的記憶體106所描述的揮發性記憶體。
L3快取記憶體216、系統快取記憶體218和系統記憶體224可以由處理器核心集群212、214及/或處理器核心204a、204b、204c、206a、206b、206c共享並配置用於讀及/或寫存取。L3快取記憶體216、系統快取記憶體218和系統記憶體224可以儲存資料及/或指令,並且使儲存的資料及/或指令可用於處理器核心集群212、214及/或處理器核心204a、204b、204c、206a、206b、206c。L3快取記憶體216、系統快取記憶體218及/或系統記憶體224可以用作輸入到處理器202及/或從處理器202輸出的資料及/或指令的緩衝器。L3快取記憶體216、系統快取記憶體218和系統記憶體224可以包括如本文參考圖1的記憶體106所描述的揮發性記憶體。
處理器202可以包括記憶體控制器220,其被配置為管理對L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216及/或系統快取記憶體218的記憶體存取。記憶體控制器可以從處理器核心204a、204b、204c、206a、206b、206c接收記憶體存取命令,並允許和實施及/或拒絕對快取記憶體208a、208b、208c、210a、210b、210c、216、218的記憶體存取。記憶體控制器220可以被配置為實施快取記憶體維護、快取一致性及/或快取記憶體替換策略。記憶體控制器220可以被配置為實現虛擬快取記憶體位址轉換。
處理器202可以包括任何數量和組合的暫存器222,其可以被配置為臨時儲存少量資料。暫存器222可以在硬體中實現及/或作為快取記憶體208a、208b、208c、210a、210b、210c、216、218中的記憶體位置來實現。任何數量的暫存器可以被配置為單獨地及/或組合地儲存資料以用於與暫存器222相關聯的特定目的。例如,暫存器可以儲存資料,該資料被配置為向處理器202指示與暫存器222相關聯的特定目的相關的資訊。作為另一個實例,暫存器陣列222可以儲存其中任何數量和組合的位元可以向處理器202指示與關聯於暫存器陣列222的特定目的相關的資訊的資料向量。
SoC 200及/或處理器202的一些或所有元件可以不同地佈置及/或組合,同時仍然支援各種實施例的功能。例如,記憶體控制器220可以是與處理器202分離的SoC 200的元件。
圖3A和圖3B圖示了根據各種實施例的標準感知快取記憶體替換策略的實例的元件和信號傳遞。參考圖1-圖3,處理器(例如圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214)可以實現可以向系統快取記憶體218發出記憶體存取命令的客戶端300。例如,處理器可以是客戶端300。作為另一個實例,處理器可以執行可以是客戶端300的軟體程式的程序,例如作業系統及/或應用程式。
在圖3A所示的實例中,客戶端300可以向系統快取記憶體發出記憶體存取命令302,例如寫記憶體命令,該命令可以由記憶體控制器220接收。客戶端300亦可以實現對一或多個暫存器222的暫存器寫入304,該暫存器寫入304可以在暫存器222中設置陳舊計數器更新值。暫存器222可以與用於標準感知快取記憶體替換策略的陳舊計數器更新特徵相關聯。儲存在暫存器222中的值可以被配置為向記憶體控制器220指示是否更新被配置為由標準感知快取記憶體替換策略使用的陳舊計數器(未圖示)。例如,暫存器寫入304可以將陳舊計數器更新值設置為「1」值,該值被配置為指示記憶體控制器220更新陳舊計數器。客戶端300可以基於標準感知快取記憶體替換策略的標準來實現暫存器寫入304。在各種實施例中,標準可以是基於時間的標準、基於事件的標準或另一類型的標準。作為基於時間的標準的實例,客戶端300可以基於時間段、處理器時鐘週期的數量、已執行指令的數量等來實現暫存器寫入304。作為基於事件的標準的實例,客戶端300可以基於任務、程序及/或應用程式的完成、暫停及/或終止,任務、程序及/或應用程式的開始、重啟及/或載入,中斷信號,錯誤及/或故障信號等來實現暫存器寫入304。作為其他標準的實例,客戶端300可以基於處理器(例如圖1中的CPU 104、處理器124,圖2中的處理器202)、記憶體(例如圖1中的記憶體106、114,圖2中的快取記憶體208a、208b、208c、210a、210b、210c、216、218)、周邊設備(例如,圖1中的周邊設備122)、通訊元件(例如,通訊元件112)等的特定狀態或狀態變化(例如電源狀態、安全性狀態、可用性狀態等)來實現暫存器寫入304。作為另一個實例,客戶端300可以基於一部分資料的開始及/或結束來實現暫存器寫入304,例如基於訊框時間邊界的壓縮多媒體資料訊框、壓縮多媒體資料訊框內的色域等。
回應於接收到寫記憶體命令302,記憶體控制器220可以讀取306暫存器222以決定是否更新陳舊計數器。記憶體控制器220可以取得暫存器222的值並且決定來自暫存器的值是否指示記憶體控制器220更新陳舊計數器。
回應於決定暫存器222的值向記憶體控制器220指示更新陳舊計數器,記憶體控制器220可以更新陳舊計數器308。陳舊計數器可以包括儲存在可由記憶體控制器220進行讀和寫存取的記憶體(例如,圖1中的記憶體106、記憶體114,圖2中的L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216、圖2和圖3中的系統快取記憶體218、暫存器222)中的值。記憶體控制器220可以經由任何數學運算、演算法運算、啟發式運算等來更新陳舊計數器,例如經由遞增及/或遞減陳舊計數器。回應於決定暫存器222的值向記憶體控制器220指示不更新陳舊計數器,記憶體控制器220可以放棄更新陳舊計數器308。
記憶體控制220可以讀取310用於系統快取記憶體218中的位置的資料的本端計數器。本端計數器的值可以包括回應於先前的寫記憶體命令而與將相關聯的資料寫入系統快取記憶體218相關聯地儲存的陳舊計數器的值。在一個實例中,記憶體控制器220可以讀取與用於寫記憶體命令所針對的記憶體位置的快取記憶體標籤一起儲存的一或多個本端計數器值。在另一實例中,記憶體控制器220可以讀取區塊、分區、整體及/或系統快取記憶體218的任何其他部分內的位置的一或多個本端計數器值。
記憶體控制器220可以使用取得的本端計數器的值來幫助決定系統快取記憶體218的何者部分在實現寫記憶體命令時根據標準感知快取記憶體替換策略來替換。在操作312中,記憶體控制器220可以計算替換值並將替換值與陳舊閾值進行比較。例如,記憶體控制器220可以使用算數運算來使用本端計數器的值和陳舊計數器值來產生替換值。例如,記憶體控制器220可以從陳舊計數器的值中減去本端計數器的值以決定替換值。記憶體控制器220可以比較替換值和陳舊閾值以決定是否替換與本端計數器值相關聯的資料。陳舊閾值可以是預先配置的值。例如,陳舊閾值可以基於標準感知快取記憶體替換策略被預配置。作為另一個實例,陳舊閾值可以基於系統快取記憶體218的大小、狀態、使用情況、可用性等來預配置。作為另一個實例,陳舊閾值可以基於處理器及/或計算設備(例如,圖1中的計算設備100)的狀態、使用情況、電源可用性等來預配置。作為另一個實例,陳舊閾值可以基於作為客戶端300及/或由客戶端300執行的任務、程序及/或應用程式來預配置。
替換值和陳舊閾值的比較結果可以向記憶體控制器220指示標準感知快取記憶體替換策略是否應該替換與本端計數器值相關聯的資料。例如,回應於替換值大於或等於陳舊閾值,記憶體控制器220可以實施標準感知快取記憶體替換策略以用寫記憶體命令的資料來替換與本端計數器值相關聯的資料。記憶體控制器220可以經由將寫記憶體命令的資料寫入314到系統快取記憶體218中儲存與本端計數器相關聯的資料的位置來替換與本端計數器值相關聯的資料。否則,記憶體控制器220可以將寫記憶體命令的資料寫入314到系統快取記憶體218中的其他位置。記憶體控制器220亦可以將陳舊計數器的值作為本端計數器與寫入系統快取記憶體218的寫記憶體命令的資料相關聯地寫入316到系統快取記憶體218。例如,記憶體控制器220可以將陳舊計數器的值寫入316到系統快取記憶體218中與寫入到系統快取記憶體218的寫記憶體命令的資料相關聯的標籤位置。
在圖3B所示的實例中,客戶端300可以向系統快取記憶體發出記憶體存取命令302,例如讀記憶體命令,該命令可以由記憶體控制器220接收。客戶端300亦可以對一或多個暫存器222執行暫存器寫入304,該暫存器寫入304可以在暫存器222中設置陳舊計數器更新值。回應於接收到讀記憶體命令302,記憶體控制器220可以讀取306暫存器222以決定是否更新陳舊計數器。回應於決定暫存器222的值向記憶體控制器220指示更新陳舊計數器,記憶體控制器220可以更新陳舊計數器308。記憶體控制器220可以經由讀取315系統快取記憶體218中儲存與本端計數器相關聯並且被讀記憶體命令所針對的資料的位置處的資料來讀取與本端計數器值相關聯的資料。記憶體控制器220亦可以將作為本端計數器的陳舊計數器的值與系統快取記憶體218中由讀記憶體命令所針對的位置處的資料相關聯地寫入317系統快取記憶體218。例如,記憶體控制器220可以將陳舊計數器的值寫入317到系統快取記憶體218中的標籤位置,該標籤位置與系統快取記憶體218中由讀記憶體命令所針對的位置處的資料相關聯。
圖3A中信號302、304、308、310、312、314、316的順序和圖3B中的信號302、304、308、315、317的順序僅僅是實例,信號302、304、308、310、312、314、315、316、317的順序可以不同的順序執行。例如,信號302和304、信號314和316及/或信號315和317的順序可以顛倒。作為另一個實例,信號302和304、信號314和316及/或信號315和317可以併發地傳輸。
圖4圖示了根據實施例的用於實施標準感知快取記憶體替換策略的記憶體流程的實例。參考圖1-圖4,記憶體控制器(例如,圖2和圖3中的記憶體控制器220)可以在系統快取記憶體400(例如,圖2和圖3中的系統快取記憶體218)中實現寫記憶體命令410a、410b、410c,並且實現陳舊計數器402的陳舊計數器更新412a、412b。寫記憶體命令410a、410b、410c可以由計算設備(例如,圖1中的計算設備100)的客戶端(例如,客戶端300)發出。
寫記憶體命令410a可以被記憶體控制器接收並且提示記憶體控制器將資料寫入系統快取記憶體400。在實現寫記憶體命令410a時陳舊計數器402可以是「1」。寫記憶體命令410a的資料可以連同作為與系統快取記憶體中寫入有資料的位置404相關聯的本端計數器的陳舊計數器值「1」一起被寫入系統快取記憶體400。
另一個寫記憶體命令410b可以由記憶體控制器接收並且可以提示記憶體控制器將資料寫入系統快取記憶體400並且回應於由記憶體控制器從暫存器(例如,圖2和圖3中的暫存器222)讀取的暫存器值,可以更新412a陳舊計數器。暫存器值可由客戶端結合寫記憶體命令410b實施的暫存器寫入(例如,圖3中的暫存器寫入304)來設置。在實現寫記憶體命令410c時的陳舊計數器402可以是「2」。寫記憶體命令410b的資料可以連同作為與系統快取記憶體中寫入有資料的位置406相關聯的本端計數器的陳舊計數器值「2」一起被寫入到系統快取記憶體400。在該實例中,位置406可以是在寫記憶體命令410b的資料和本端計數器被寫入位置406之前的開放位置。寫記憶體命令410b可以提示標準感知快取記憶體替換策略以檢查系統快取記憶體400的將被替換的資料,但是系統快取記憶體400中不能實施替換。對於不滿足標準感知快取記憶體替換策略的標準的資料不能進行替換。例如,標準感知快取記憶體替換策略可以決定系統快取記憶體400中已經寫入資料的位置404的本端計數器(在該實例中為「1」)與在寫記憶體命令410b時的陳舊計數器402(在該實例中為「2」)之間的差異是否可能小於陳舊閾值。
另一個寫記憶體命令410c可以被記憶體控制器接收並且可以提示記憶體控制器將資料寫入系統快取記憶體400,並且陳舊計數器可以回應於由記憶體控制器讀取的暫存器值來更新412b。暫存器值可以被由客戶端結合寫記憶體命令410c實施的暫存器寫入(例如,圖3中的暫存器寫入304)來設置。實施寫記憶體命令410c時的陳舊計數器402可以是「3」。寫記憶體命令410c的資料可以連同作為與系統快取記憶體中寫入有資料的位置404相關聯的本端計數器的陳舊計數器值「3」一起被寫入系統快取記憶體400。在此實例中,位置404可以是在寫記憶體命令410c和本端計數器的資料被寫入位置404之前被佔用的位置。寫記憶體命令410b可以提示標準感知快取記憶體替換策略以檢查系統快取記憶體400的將被替換的資料。在該實例中,可以在系統快取記憶體400中針對一些位置404而不是其他位置406實施替換。對於不滿足標準感知快取記憶體替換策略的標準的資料不能進行替換。例如,標準感知快取記憶體替換策略可以決定系統快取記憶體400中已經寫入資料的位置406的本端計數器(在該實例中為「2」)與寫記憶體命令410c時的陳舊計數器402(在該實例中為「3」)之間的差是否可能小於陳舊閾值。可以針對確實滿足標準感知快取記憶體替換策略的標準的資料進行替換。例如,標準感知快取記憶體替換策略可以決定系統快取記憶體400中已經寫入資料的位置404的本端計數器(在該實例中為「1」)與寫記憶體命令410c時的陳舊計數器402(在該實例中為「3」)之間的差是否可能大於或等於陳舊閾值。記憶體控制器可以用寫記憶體命令410c的資料和陳舊計數器的值替換位置404的資料和本端計數器。
圖5圖示了根據實施例的用於實施標準感知快取記憶體替換策略的記憶體流程的實例。參考圖1-圖5,記憶體控制器(例如,圖2和圖3中的記憶體控制器220)可以在系統快取記憶體(例如,圖2和圖3中的系統快取記憶體218、圖4中的系統快取記憶體400)中實現寫記憶體命令(Write N)和讀記憶體命令(Read N)。寫記憶體命令和讀記憶體命令可以由計算設備(例如,圖1中的計算設備100)的處理器(例如圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)(例如,圖5中的處理器1和處理器2)發出。
在來自處理器1的Write 0寫記憶體命令的時間,陳舊計數器的值可能為「0」。Write 0的資料可以連同作為與Write 0的資料相關聯的本端計數器的陳舊計數器值「0」一起寫入系統快取記憶體。
Write 0之後可以是來自處理器2的Read 0讀記憶體命令。記憶體控制器可以讀出Read 0所針對的系統快取記憶體中的資料。例如,記憶體控制器可以讀出在系統快取記憶體中與本端計數器值「0」相關聯的位置處的資料。
Read 0之後可以是來自處理器1的Write 1寫記憶體命令。陳舊計數器可能已經更新並且在Write 1時可能具有值「1」。Write 1可以提示標準感知快取記憶體替換策略,來經由將與系統快取記憶體中的資料相關聯的本端計數器與陳舊閾值進行比較來檢查陳舊資料。例如,記憶體控制器可以從系統快取記憶體中讀取本端計數器,計算陳舊計數器的值與本端計數器的值之間的差值,並將該差值與陳舊閾值進行比較。回應於差值小於陳舊閾值,標準感知快取記憶體替換策略可以決定不替換系統快取記憶體中的與本端計數器相關聯的資料,如Write 1的實例中一般。在該實例中,可以將Write 1的資料連同作為與Write 1的資料相關聯的本端計數器的陳舊計數器值「2」寫入系統快取記憶體中的開放位置。
Write 1之後可以是來自處理器1的第二(亦即,Write 2)寫記憶體命令。陳舊計數器可能已經更新並且在Write 2時可能具有值「2」。Write 2可以提示標準感知快取記憶體替換策略,來經由將與系統快取記憶體中的資料相關聯的本端計數器與陳舊閾值進行比較來檢查陳舊資料。例如,記憶體控制器可以從系統快取記憶體中讀取本端計數器,計算陳舊計數器的值與本端計數器的值之間的差值,並將該差值與陳舊閾值進行比較。回應於該差值小於陳舊閾值,標準感知快取記憶體替換策略可以決定不替換系統快取記憶體中的與本端計數器相關聯的資料。回應於該差值大於或等於陳舊閾值,標準感知快取記憶體替換策略可以決定替換系統快取記憶體中的與本端計數器相關聯的資料。在此實例中,與具有值「0」的本端計數器相關聯的資料可被決定為陳舊,因為陳舊計數器與本端計數器之間的差值可能大於或等於陳舊閾值。結果,標準感知快取記憶體替換策略可以決定替換與具有值「0」的本端計數器相關聯的資料。可以決定與具有值「1」的本端計數器相關聯的資料不是陳舊的,因為陳舊計數器與本端計數器之間的差值小於陳舊閾值。結果,標準感知快取記憶體替換策略可以決定不替換與具有值「2」的本端計數器相關聯的資料。可以將Write 2的資料連同作為與Write 2的資料相關聯的本端計數器的陳舊計數器值「2」寫入系統快取記憶體中的開放位置以及被與本端計數器值「0」相關聯的資料佔用的位置。
Write 2之後可以是來自處理器2的Read 1讀記憶體命令。記憶體控制器可以讀出系統快取記憶體中Read 1所針對的資料。例如,記憶體控制器可以讀出系統快取記憶體中與本端計數器值「1」相關聯的位置處的資料。
Read 1之後可以是來自處理器1的Write 3寫記憶體命令。陳舊計數器可能已經更新並且在Write 3時可能具有值「3」。Write 3可以提示標準感知快取記憶體替換策略,來經由將與系統快取記憶體中的資料相關聯的本端計數器與陳舊閾值進行比較來檢查陳舊資料。例如,記憶體控制器可以從系統快取記憶體中讀取本端計數器,計算陳舊計數器的值與本端計數器的值之間的差值,並將該差值與陳舊閾值進行比較。回應於該差值小於陳舊閾值,標準感知快取記憶體替換策略可以決定不替換系統快取記憶體中與本端計數器相關聯的資料。回應於該差值大於或等於陳舊閾值,標準感知快取記憶體替換策略可以決定替換系統快取記憶體中的與本端計數器相關聯的資料。在此實例中,與具有值「0」或「1」的本端計數器相關聯的資料可被決定為陳舊,因為陳舊計數器與本端計數器之間的差值可能大於或等於陳舊閾值。結果,標準感知快取記憶體替換策略可以決定替換與具有值「0」或「1」的本端計數器相關聯的資料。可以決定與具有值「2」的本端計數器相關聯的資料不是陳舊的,因為陳舊計數器與本端計數器之間的差值可能小於陳舊閾值。結果,標準感知快取記憶體替換策略可以決定不替換與具有值「2」的本端計數器相關聯的資料。然而,標準感知快取記憶體替換策略可能無法控制系統快取記憶體中的資料的所有替換。例如,用於將資料寫入系統快取記憶體的機制可以以在某些情況下可能不完全符合標準感知快取記憶體替換策略的方式來定義。可以將Write 3的資料連同作為與Write 2的資料相關聯的本端計數器的陳舊計數器值「3」寫入系統快取記憶體中的被與本端計數器值「0」或「1」相關聯的資料佔用的位置。然而,用於將資料寫入系統快取記憶體的機制可以以由一組中的行數決定的方式寫入資料。因此,可能會出現此種情況,其中在標準感知快取記憶體替換策略下不陳舊的資料,例如與本端計數器值「2」相關聯的資料,可能會被Write 3替換。
Write 3之後可以是來自處理器2的Read 2讀記憶體命令。記憶體控制器可以讀出系統快取記憶體中的Read 2所針對的資料。例如,記憶體控制器可以讀出系統快取記憶體中的與本端計數器值「2」相關聯的位置處的資料。儘管Read 2所針對的資料可能部分被Write 3寫入系統快取記憶體的資料替換,但與其他快取記憶體替換策略(例如不是最近使用的(nMRU)和基於容量的先進先出(FIFO))形成對比,標準感知快取記憶體替換策略使系統快取記憶體中的資料具有更高的命中率(或更低的未命中率)。
圖6圖示了根據一些實施例的用於實施標準感知快取記憶體替換策略的方法600。參考圖1-圖6,方法600可以在以下中實現:計算設備(例如圖1中的計算設備100)、硬體、處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)中執行的軟體(例如,圖3中的客戶端300),或者在軟體配置的處理器和專用硬體的組合中,其包括其他單獨的元件,例如各種記憶體/快取記憶體(例如,圖1中的記憶體106、記憶體114,圖2中的L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216,圖2和圖3中的系統快取記憶體218、暫存器222,圖4中的系統快取記憶體400)和各種記憶體/快取記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。為了包含在各種實施例中啟用的替代配置,實現方法600的硬體在本文中被稱為「客戶端」和「記憶體控制設備」。
在方塊602中,客戶端可以發送針對系統快取記憶體(例如,圖2和圖3中的系統快取記憶體218、圖4中的系統快取記憶體400)的寫記憶體命令。在方塊604中,客戶端可以向處理器(例如圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)發信號通知更新用於系統快取記憶體中資料的陳舊計數器。可以使用各種類型的信號通訊來實現向處理器發信號,包括例如向暫存器(例如,圖2和圖3中的暫存器222)的暫存器寫入、向處理器的直接中斷等。暫存器可以與標準感知快取記憶體替換策略的陳舊計數器更新特徵相關聯。寫入暫存器可以設置暫存器的值,該值被配置為向記憶體控制設備指示是否更新陳舊計數器。在一些實施例中,在方塊602中發送寫記憶體命令並且在方塊604中向處理器發信號通知更新用於系統快取記憶體中資料的陳舊計數器的客戶端可以是處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或軟體程式(例如,圖3中的客戶端300),例如作業系統及/或應用程式。
在方塊606中,記憶體控制設備可以接收寫記憶體命令。記憶體控制設備可以被配置為管理、控制及/或實現系統快取記憶體的記憶體存取、快取記憶體維護、快取一致性及/或快取記憶體替換策略。在方塊608中,記憶體控制設備可以實施標準感知快取記憶體替換策略,用於將寫記憶體命令的資料寫入系統快取記憶體中。在方塊606中接收寫記憶體命令並在方塊608中實施標準感知快取記憶體替換策略的記憶體控制設備可以是處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。
圖7圖示了根據一些實施例的用於實現標準感知快取記憶體替換策略基於本端計數器的值替換資料的方法700。參考圖1-圖7,方法700可以在以下中實施:計算設備(例如圖1中的計算設備100)、硬體、處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)中執行的軟體(例如,圖3中的客戶端300),或者軟體配置的處理器和專用硬體的組合,其包括其他單獨的元件,例如各種記憶體/快取記憶體(例如,圖1中的記憶體106、記憶體114,圖2中的L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216,圖2和圖3中的系統快取記憶體218、暫存器222,圖4中的系統快取記憶體400)和各種記憶體/快取記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。為了涵蓋在各種實施例中啟用的替代配置,實現方法700的硬體在本文中被稱為「記憶體控制設備」。方法700的方塊702-714擴展了可以在參考圖6描述的方法600的方塊608中執行的操作。
在方塊702中,記憶體控制設備可以接收用於更新系統快取記憶體(例如,圖2和圖3中的系統快取記憶體218,以及圖4中的系統快取記憶體400)中的資料的陳舊計數器的信號。例如,記憶體控制設備可以讀取暫存器(例如,圖2和圖3中的暫存器222)、接收直接中斷等,以更新系統快取記憶體中資料的陳舊計數器。該暫存器可以與標準感知快取記憶體替換策略的陳舊計數器更新特徵相關聯並且可以具有被配置為向記憶體控制設備指示是否更新陳舊計數器的值。暫存器的值可以例如經由寫入暫存器來設置,用於更新系統快取記憶體中的資料的陳舊計數器,如針對方法600(圖6)的方塊604所描述的。記憶體控制設備可讀取暫存器的值以用於更新陳舊計數器。在一些實施例中,在方塊702中接收用於更新系統快取記憶體中的資料的陳舊計數器的信號的記憶體控制設備可以是處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。
在可選的決定方塊704中,記憶體控制設備可以解釋在方塊702中讀取的暫存器值以決定暫存器值是否指示記憶體控制設備應當更新陳舊計數器。儲存在暫存器中的值可以被配置為向記憶體控制設備指示是否更新陳舊計數器。例如,可以將暫存器值設置為「1」值以向記憶體控制設備指示應該更新陳舊計數器,並設置為「0」值以向記憶體控制設備指示陳舊計數器不應被更新,反之亦然。在一些實施例中,記憶體控制設備可讀取暫存器的值以用於更新陳舊計數器。在一些實施例中,在可選的決定方塊704中決定暫存器值是否向記憶體控制設備指示更新陳舊計數器的記憶體控制設備可以是處理器及/或記憶體控制器。
在方塊702中接收到用於更新系統快取記憶體中資料的陳舊計數器的信號之後;或者回應於決定暫存器值向記憶體控制設備指示更新陳舊計數器(亦即,可選的決定方塊704=「是」),記憶體控制設備可以在方塊706中更新陳舊計數器。在一些實施例中,當資料被寫入系統快取記憶體時(亦即,在資料被寫入系統快取記憶體時)可以執行在方塊706中更新陳舊計數器。陳舊計數器可以包括儲存在記憶體(例如,圖1中的記憶體106、記憶體114,圖2中的L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216,圖2和圖3中的系統快取記憶體218、暫存器222,圖4中的系統快取記憶體400)中的值,該記憶體可以由記憶體控制設備進行讀和寫存取。更新陳舊計數器可以經由任何數學運算、演算法運算、啟發式運算等來實現,例如經由遞增及/或遞減陳舊計數器。在一些實施例中,在方塊706中更新陳舊計數器的記憶體控制設備可以是處理器及/或記憶體控制器。
回應於決定暫存器值向記憶體控制設備指示不更新陳舊計數器(亦即,可選的決定方塊704=「否」);或者在方塊706中更新陳舊計數器之後,記憶體控制設備可以在方塊708中計算與本端計數器相關聯的資料的替換值。在一些實施例中,在方塊708中計算與本端計數器相關聯的資料的替換值的記憶體控制設備可以是處理器及/或記憶體控制器。本端計數器可以包括與回應於先前的寫記憶體命令而寫入系統快取記憶體的資料相關聯地儲存的陳舊計數器的值。在實例中,記憶體控制設備可以讀取與用於在參考圖6描述的方法600的方塊606中接收到的寫記憶體命令所針對的記憶體位置的快取記憶體標籤一起儲存的一或多個本端計數器值。在另一實例中,記憶體控制設備可以讀取區塊、分區、整體及/或系統快取記憶體的任何其他部分內的位置的一或多個本端計數器值。
陳舊閾值可以是預先配置的值。例如,陳舊閾值可以基於標準感知快取記憶體替換策略被預配置。作為另一個實例,陳舊閾值可以基於系統快取記憶體的大小、狀態、使用、可用性等來預先配置。作為另一個實例,可以基於處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或計算設備(例如,圖1中的計算設備100)的狀態、使用、功率可用性等來預配置陳舊閾值。作為另一個實例,陳舊閾值可以基於任務、程序及/或應用程式被預配置。
記憶體控制設備可以利用陳舊閾值來計算替換值。例如,記憶體控制設備可以使用算數運算來使用本端計數器的值和陳舊計數器值產生替換值。例如,記憶體控制設備可以從陳舊計數器的值中減去本端計數器的值來決定替換值。
在決定方塊709中,記憶體控制設備可以決定在區塊、分區、整體及/或系統快取記憶體的任何其他部分內的位置處的所有資料的替換值是否相同。記憶體控制設備可以在決定方塊709中將在方塊708中計算的替換值相互比較。例如,記憶體控制設備可以根據比較決定替換值是否彼此相等。在一些實施例中,在決定方塊709中決定區塊、分區、整體及/或系統快取記憶體的任何其他部分內的位置處的所有資料的替換值是否相同的記憶體控制設備可以是處理器及/或記憶體控制器。
回應於決定區塊、分區、整體及/或系統快取記憶體的任何其他部分內的位置處的所有資料的替換值是相同的(亦即,決定方塊709=「是」),在方塊711中,記憶體控制設備可以選擇不同於標準感知快取記憶體替換策略的快取記憶體替換策略。例如,記憶體控制設備可以選擇nMRU、FIFO、隨機等快取記憶體替換策略。在一些實施例中,在方塊711中選擇不同於標準感知快取記憶體替換策略的快取記憶體替換策略的記憶體控制設備可以是處理器及/或記憶體控制器。
在方塊711中選擇不同於標準感知快取記憶體替換策略的快取記憶體替換策略之後,在方法600的方塊606中記憶體控制設備可以接收寫記憶體命令,如參考圖6所描述的。在方塊606中接收寫記憶體命令的記憶體控制設備可以是處理器及/或記憶體控制器。
回應於決定區塊、分區、整體及/或系統快取記憶體的任何其他部分內的位置處的所有資料的替換值不相同(亦即,決定方塊709=「否」),記憶體控制設備可以在決定方塊710中決定替換值是否超過或等於陳舊閾值。記憶體控制設備可以比較在方塊708中計算的替換值和陳舊閾值以決定是否替換與該本端計數器值相關聯的資料。例如,記憶體控制設備可以根據比較來決定替換值是否超過、等於或超過或等於陳舊閾值。在一些實施例中,在決定方塊710中決定替換值是否超過或等於陳舊閾值的記憶體控制設備可以是處理器及/或記憶體控制器。
回應於決定替換值超過或等於陳舊閾值(亦即,決定方塊710=「是」),在方法700(圖7)的方塊712中,記憶體控制設備可以將在方法600(圖6)的方塊606中接收到的寫記憶體命令的資料以及陳舊計數器的值寫入記憶體中的替換值超過或等於陳舊閾值的位置處。決定方塊710中替換值和陳舊閾值的比較結果可以向記憶體控制設備指示標準感知快取記憶體替換策略是否應該替換與用於在方塊708中計算替換值的本端計數器值相關聯的資料。例如,回應於替換值超過或等於陳舊閾值,記憶體控制設備可以實施標準感知快取記憶體替換策略以將與本端計數器值相關聯的資料替換為寫記憶體命令的資料。記憶體控制設備可以經由將寫記憶體命令的資料寫入系統快取記憶體中儲存與本端計數器相關聯的資料的位置來替換與本端計數器值相關聯的資料。記憶體控制設備亦可以將作為本端計數器的陳舊計數器的值與寫入系統快取記憶體的寫記憶體命令的資料相關聯地寫入系統快取記憶體。例如,記憶體控制設備可以將陳舊計數器的值寫入系統快取記憶體中與寫入系統快取記憶體的寫記憶體命令的資料相關聯的標籤位置。在一些實施例中,在方塊712中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體中的替換值超過或等於陳舊閾值的位置處的記憶體控制設備可以是處理器及/或記憶體控制器。
回應於決定替換值不超過或等於陳舊閾值(亦即,決定方塊710=「否」),在方塊714中,記憶體控制設備可以將在方法600(圖6)的方塊606中接收到的寫記憶體命令的資料以及陳舊計數器的值寫入記憶體中的符合標準的位置處。用於決定將寫記憶體命令的資料和陳舊計數器的值寫入系統快取記憶體何處的標準可以是任何已知的標準,例如快取記憶體放置策略、快取記憶體替換策略、快取一致性策略等。記憶體控制設備亦可以將作為本端計數器的陳舊計數器的值與寫入系統快取記憶體的寫記憶體命令的資料相關聯地寫入系統快取記憶體。例如,記憶體控制設備可以將陳舊計數器的值寫入系統快取記憶體中的與寫入系統快取記憶體的寫記憶體命令的資料相關聯的標籤位置。在一些實施例中,在方塊714中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體中的符合標準的位置處的記憶體控制設備可以是處理器及/或記憶體控制器。
在方塊712中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體中的替換值超過或等於陳舊閾值的位置處之後;或者在方塊714中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體的符合標準的位置處之後,在方法600的方塊606中記憶體控制設備可以接收寫記憶體命令,如參考圖6所描述的。在方塊606中接收寫記憶體命令的記憶體控制設備可以是處理器及/或記憶體控制器。
圖8圖示了根據一些實施例的用於實現標準感知快取記憶體替換策略基於本端計數器的值替換資料的方法800。參考圖1-圖8,方法800可以在以下中實現:計算設備(例如,圖1中的計算設備100)、硬體、在處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)中執行的軟體(例如,圖3中的客戶端300),或者軟體配置的處理器和專用硬體的組合,其包括其他單獨的元件,例如各種記憶體/快取記憶體(例如,圖1中的記憶體106、記憶體114,圖2中的L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216,圖2和圖3中的系統快取記憶體218、暫存器222,圖4中的系統快取記憶體400)和各種記憶體/快取記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。為了包含在各種實施例中啟用的替代配置,實現方法800的硬體在本文中被稱為「記憶體控制設備」。方法800的方塊802-814擴展了可以在參考圖6描述的方法600的方塊608中執行的操作。
在方塊802中,記憶體控制設備可以計算與本端計數器相關聯的資料的替換值。在一些實施例中,在方塊802中計算與本端計數器相關聯的資料的替換值的記憶體控制設備可以是處理器(例如,圖1中的CPU 104、處理器124、圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。本端計數器可以包括與回應於先前的寫記憶體命令而寫入系統快取記憶體(例如,圖2和圖3中的系統快取記憶體218,圖4中的系統快取記憶體400)的資料相關聯地儲存的陳舊計數器的值。陳舊計數器可以包括儲存在記憶體(例如,圖1中的記憶體106、記憶體114,圖2中的L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216,圖2和圖3中的系統快取記憶體218、暫存器222,圖4中的系統快取記憶體400)中的值,該記憶體可以是由記憶體控制設備可進行讀和寫存取的。在實例中,記憶體控制設備可以讀取與用於如參考圖6之方法600的方塊606中接收到的寫記憶體命令所針對的記憶體位置的快取記憶體標籤一起儲存的一或多個本端計數器值。在另一實例中,記憶體控制設備可以讀取區塊、分區、整體及/或系統快取記憶體的任何其他部分內的位置的一或多個本端計數器值。
陳舊閾值可以是預先配置的值。例如,陳舊閾值可以基於標準感知快取記憶體替換策略來預配置。作為另一個實例,陳舊閾值可以基於系統快取記憶體的大小、狀態、使用、可用性等來預先配置。作為另一個實例,陳舊閾值可以基於處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或計算設備(例如,圖1中的計算設備100)的狀態、使用、功率可用性等來預配置。作為另一個實例,陳舊閾值可以基於任務、程序及/或應用程式來預配置。
記憶體控制設備可以利用陳舊閾值計算替換值。例如,記憶體控制設備可以使用算數運算來使用本端計數器的值和陳舊計數器值產生替換值。例如,記憶體控制設備可以從陳舊計數器的值中減去本端計數器的值來決定替換值。
在決定方塊803中,記憶體控制設備可以決定在區塊、分區、整體及/或系統快取記憶體的任何其他部分內的位置處的所有資料的替換值是否相同。在該決定中,記憶體控制設備可以將在方塊802中計算的替換值相互比較。例如,記憶體控制設備可以根據比較決定替換值是否彼此相等。在一些實施例中,在決定方塊803中決定區塊、分區、整體及/或系統快取記憶體的任何其他部分內的位置處的所有資料的替換值是否相同的記憶體控制設備可以是處理器及/或記憶體控制器。
回應於決定區塊、分區、整體及/或系統快取記憶體的任何其他部分內的位置處的所有資料的替換值是相同的(亦即,決定方塊803=「是」),在方塊805中,記憶體控制設備可以選擇不同於標準感知快取記憶體替換策略的快取記憶體替換策略。例如,記憶體控制設備可以選擇nMRU或FIFO快取記憶體替換策略。在一些實施例中,在方塊805中選擇不同於標準感知快取記憶體替換策略的快取記憶體替換策略的記憶體控制設備可以是處理器及/或記憶體控制器。
在方塊805中選擇不同於標準感知快取記憶體替換策略的快取記憶體替換策略之後,在方法600的方塊606中記憶體控制設備可以接收寫記憶體命令,如參考圖6所描述的。在方塊606中接收寫記憶體命令的記憶體控制設備可以是處理器及/或記憶體控制器。
回應於決定區塊、分區、整體及/或系統快取記憶體的任何其他部分內的位置處的所有資料的替換值不相同(亦即,決定方塊709=「否」),記憶體控制設備可以在決定方塊804中決定替換值是否超過或等於陳舊閾值。記憶體控制設備可以比較在方塊802中計算的替換值和陳舊閾值以決定是否替換與該本端計數器值相關聯的資料。例如,記憶體控制設備可以根據比較來決定替換值是否超過、等於或超過或等於陳舊閾值。在一些實施例中,在決定方塊804中決定替換值是否超過或等於陳舊閾值的記憶體控制設備可以是處理器及/或記憶體控制器。
回應於決定替換值超過或等於陳舊閾值(亦即,決定方塊804=「是」),在方塊806中,記憶體控制設備可以將在方法600(圖6)的方塊606中接收到的寫記憶體命令的資料以及陳舊計數器的值寫入記憶體中的替換值超過或等於陳舊閾值的位置處。決定方塊804中替換值和陳舊閾值的比較結果可以向記憶體控制設備指示標準感知快取記憶體替換策略是否應該替換與用於在方塊802中計算替換值的本端計數器值相關聯的資料。例如,回應於替換值超過或等於陳舊閾值,記憶體控制設備可以實施標準感知快取記憶體替換策略,以用寫記憶體命令的資料替換與本端計數器值相關聯的資料。記憶體控制設備可以經由將寫記憶體命令的資料寫入系統快取記憶體中儲存與本端計數器相關聯的資料的位置來替換與本端計數器值相關聯的資料。記憶體控制設備亦可以將作為本端計數器的陳舊計數器的值與寫入系統快取記憶體的寫記憶體命令的資料相關聯地寫入系統快取記憶體。例如,記憶體控制設備可以將陳舊計數器的值寫入系統快取記憶體中與寫入系統快取記憶體的寫記憶體命令的資料相關聯的標籤位置。在一些實施例中,在方塊806中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體中替換值超過或等於陳舊閾值的位置處的記憶體控制設備可以是處理器及/或記憶體控制器。
回應於決定替換值不超過或等於陳舊閾值(亦即,決定方塊804=「否」),在方塊808中,記憶體控制設備可以將在方法600(圖6)的方塊606中接收到的寫記憶體命令的資料,以及陳舊計數器的值寫入記憶體中的符合標準的位置處。用於決定將寫記憶體命令的資料和陳舊計數器的值寫入系統快取記憶體何處的標準可以是任何已知的標準,例如快取記憶體放置策略、快取記憶體替換策略、快取一致性策略等。記憶體控制設備亦可以將作為本端計數器的陳舊計數器的值與寫入系統快取記憶體的寫記憶體命令的資料相關聯地寫入系統快取記憶體。例如,記憶體控制設備可以將陳舊計數器的值寫入系統快取記憶體中與寫入系統快取記憶體的寫記憶體命令的資料相關聯的標籤位置。在一些實施例中,在方塊808中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體的符合標準的位置處的記憶體控制設備可以是處理器及/或記憶體控制器。
在方塊806中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體中的替換值超過或等於陳舊閾值的位置處之後或作為其一部分;或者在方塊808中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體中的符合標準的位置之後或作為其一部分,記憶體控制設備可以接收用於更新系統快取記憶體中資料的陳舊計數器的信號。例如,記憶體控制設備可以讀取暫存器(例如,圖2和圖3中的暫存器222)、接收直接中斷等,以在方塊810中更新用於系統快取記憶體中的資料的陳舊計數器。暫存器可以是與用於標準感知快取記憶體替換策略的陳舊計數器更新特徵相關聯的並且可以具有被配置為向記憶體控制設備指示是否更新陳舊計數器的值。暫存器的值可以例如經由寫入暫存器來設置,用於更新用於系統快取記憶體中的資料的陳舊計數器,如參考圖6針對方法600的方塊604所描述的。記憶體控制設備可以讀取暫存器的值來更新陳舊計數器。在一些實施例中,在方塊810中接收用於更新用於系統快取記憶體中的資料的陳舊計數器的信號的記憶體控制設備可以是處理器及/或記憶體控制器。
在可選的決定方塊812中,記憶體控制設備可以決定暫存器值是否向記憶體控制設備指示更新陳舊計數器。儲存在暫存器中的值可以被配置為向記憶體控制設備指示是否更新陳舊計數器。例如,暫存器值可以將陳舊計數器更新值設置為被配置為向記憶體控制設備指示更新陳舊計數器的「1」值,以及配置為向記憶體控制設備指示不更新陳舊計數器的「0」值,反之亦然。記憶體控制設備可以解釋在方塊810中讀取的暫存器值以決定暫存器值是否指示更新陳舊計數器。在一些實施例中,記憶體控制設備可讀取暫存器的值以用於更新陳舊計數器。在一些實施例中,在可選的決定方塊812中決定暫存器值是否向記憶體控制設備指示更新陳舊計數器的記憶體控制設備可以是處理器及/或記憶體控制器。
在方塊810接收到用於更新針對系統快取記憶體中的資料的陳舊計數器的信號之後;或者回應於決定暫存器值向記憶體控制設備指示更新陳舊計數器(亦即,可選的決定方塊812=「是」),在方塊814中記憶體控制設備可以更新陳舊計數器。在一些實施例中,當資料被寫入系統快取記憶體時(亦即,大約同時)(例如,在方塊806或808中),可以執行在方塊814中更新陳舊計數器。更新陳舊計數器可以經由任何數學運算、演算法運算、啟發式運算等來實現,例如經由遞增及/或遞減陳舊計數器。在一些實施例中,在方塊814中更新陳舊計數器的記憶體控制設備可以是處理器及/或記憶體控制器。
在方塊814中更新陳舊計數器之後;或者回應於決定暫存器值向記憶體控制設備指示不更新陳舊計數器(亦即,可選的決定方塊812=「否」),在方法600的方塊606中記憶體控制設備可以接收寫記憶體命令,如參考圖6所述。在方塊606中接收寫記憶體命令的記憶體控制設備可以是處理器及/或記憶體控制器。
圖9圖示了根據一些實施例的用於實現標準感知快取記憶體替換策略根據基於本端計數器的值使資料無效來替換資料的方法900。參考圖1-圖9,方法900可以在以下中實現:計算設備(例如,圖1中的計算設備100)、硬體、在處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)中執行的軟體(例如,圖3中的客戶端300),或者軟體配置的處理器和專用硬體的組合,其包括其他單獨的元件,例如各種記憶體/快取記憶體(例如,圖1中的記憶體106、記憶體114,圖2中的L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216,圖2和圖3中的系統快取記憶體218、暫存器222,圖4中的系統快取記憶體400)和各種記憶體/快取記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。為了涵蓋在各種實施例中啟用的替代配置,實現方法900的硬體在本文中被稱為「記憶體控制設備」。方法900的方塊702-711、714、902、904描述了可以作為參考圖6描述的方法600的方塊608中的操作的一部分來執行的操作。方塊702-711、714可以以與參考圖7描述的方法700的相似編號的方塊類似的方式實現。
回應於決定替換值超過或等於陳舊閾值(亦即,決定方塊710=「是」),在方塊902中記憶體控制設備可以使替換值超過或等於陳舊閾值的位置處的資料無效。決定方塊710中替換值和陳舊閾值的比較結果可以向記憶體控制設備指示標準感知快取記憶體替換策略是否應當替換與用於在方塊708中計算替換值的本端計數器值相關聯的資料。例如,回應於替換值超過或等於陳舊閾值,記憶體控制設備可以實施標準感知快取記憶體替換策略以用寫記憶體命令的資料替換與本端計數器值相關聯的資料。記憶體控制設備可以使用使記憶體中的資料無效的已知方式使資料無效。例如,記憶體控制設備可以寫入與系統快取記憶體(例如,圖2和圖3中的系統快取記憶體218,圖4中的系統快取記憶體400)的位置相關聯的有效/無效位元的值,該位置與在方塊708中用於計算替換值的本端計數器值相關聯。有效/無效位元的值可以被配置為向記憶體控制設備指示在系統快取記憶體的該位置處的資料是否有效/無效。在一些實施例中,在方塊902中使替換值超過或等於陳舊閾值的位置處的資料無效的記憶體控制設備可以是處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。
在方塊904中,記憶體控制設備可以將在方法600(圖6)的方塊606中接收到的寫記憶體命令的資料和陳舊計數器的值寫入記憶體中的資料無效的位置處。記憶體控制設備可以讀取系統快取記憶體中的位置的有效/無效位元以決定何者位置具有有效/無效的資料。記憶體控制設備可以經由將寫記憶體命令的資料寫入系統快取記憶體中儲存與有效/無效位元相關聯的資料的位置來替換與本端計數器值相關聯的資料。記憶體控制設備亦可以將作為本端計數器的陳舊計數器的值與寫入系統快取記憶體的寫記憶體命令的資料相關聯地寫入系統快取記憶體。例如,記憶體控制設備可以將陳舊計數器的值寫入系統快取記憶體中與寫入系統快取記憶體的寫記憶體命令的資料相關聯的標籤位置。在一些實施例中,在方塊904中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體中資料無效的位置處的記憶體控制設備可以是處理器及/或記憶體控制器。
在方塊904中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體中資料無效的位置處之後;或者在方塊714中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體的符合標準的位置處之後,在方法600的方塊606中記憶體控制設備可以接收寫記憶體命令,如用參考圖6所描述的。在方塊606中接收寫記憶體命令的記憶體控制設備可以是處理器及/或記憶體控制器。
圖10圖示了根據一些實施例的用於實現標準感知快取記憶體替換策略根據基於本端計數器的值使資料無效來替換資料的方法1000。參考圖1-圖10,方法1000可以在以下中實現:計算設備(例如圖1中的計算設備100)、硬體、在處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)中執行的軟體(例如,圖3中的客戶端300),或者軟體配置的處理器和專用硬體的組合,其包括其他單獨的元件,例如各種記憶體/快取記憶體(例如,圖1中的記憶體106、記憶體114,圖2中的L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216,圖2和圖3中的系統快取記憶體218、暫存器222,圖4中的系統快取記憶體400)和各種記憶體/快取記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。為了涵蓋在各種實施例中啟用的替代配置,實現方法1000的硬體在本文中被稱為「記憶體控制設備」。方法1000的方塊802-805、808-814、1002、1004可以描述可以作為參考圖6描述的方法600的方塊608的一部分執行的操作。方塊802-805、808-814可以以與本文中參考圖8描述的方法900的相似編號的方塊類似的方式實施。
回應於決定替換值超過或等於陳舊閾值(亦即,決定方塊804=「是」),在方塊1002中,記憶體控制設備可以使替換值超過或等於陳舊閾值的位置處的資料無效。在決定方塊804中替換值和陳舊閾值的比較結果可以向記憶體控制設備指示標準感知快取記憶體替換策略是否應該替換與用於在方塊802中計算替換值的本端計數器值相關聯的資料。例如,回應於替換值超過或等於陳舊閾值,記憶體控制設備可以實施標準感知快取記憶體替換策略以用寫記憶體命令的資料來替換與本端計數器值相關聯的資料。記憶體控制設備可以使用使記憶體中的資料無效的已知方式使資料無效。例如,記憶體控制設備可以寫入與系統快取記憶體(例如,圖2和圖3中的系統快取記憶體218,圖4中的系統快取記憶體400)的位置相關聯的有效/無效位元的值,該位置與用於在方塊802中計算替換值的本端計數器值相關聯。有效/無效位元的值可以被配置為向記憶體控制設備指示在系統快取記憶體的該位置處的資料是否有效/無效。在一些實施例中,在方塊1002中使替換值超過或等於陳舊閾值的位置處的資料無效的記憶體控制設備可以是處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。
在方塊1004中,記憶體控制設備可以將在方法600(圖6)的方塊606中接收到的寫記憶體命令的資料和陳舊計數器的值寫入到記憶體中的資料無效的位置處。記憶體控制設備可以讀取系統快取記憶體中的位置的有效/無效位元以決定何者位置具有有效/無效的資料。記憶體控制設備可以經由將寫記憶體命令的資料寫入系統快取記憶體中儲存與有效/無效位元相關聯的資料的位置來替換與本端計數器值相關聯的資料。記憶體控制設備亦可以將作為本端計數器的陳舊計數器的值與寫入系統快取記憶體的寫記憶體命令的資料相關聯地寫入系統快取記憶體。在一些實施例中,在方塊1004中經由將作為本端計數器的陳舊計數器的值與寫記憶體命令的資料相關聯地寫入系統快取記憶體來更新陳舊計數器可以在資料被寫入系統快取記憶體時(亦即,大約同時)執行。例如,記憶體控制設備可以將陳舊計數器的值寫入系統快取記憶體中與寫入系統快取記憶體的寫記憶體命令的資料相關聯的標籤位置。在一些實施例中,在方塊1004中將寫記憶體命令的資料和陳舊計數器的值寫入記憶體中資料無效的位置處的記憶體控制設備可以是處理器及/或記憶體控制器。
圖11圖示了根據一些實施例的用於實現標準感知快取記憶體替換策略的方法1100。參考圖1-圖11,方法1100可以在以下中實現:計算設備(例如圖1中的計算設備100)、硬體、在處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)中執行的軟體(例如圖3中的客戶端300),或者軟體配置的處理器和專用硬體的組合,其包括其他單獨的元件,例如各種記憶體/快取記憶體(例如,圖1中的記憶體106、記憶體114、圖2中的L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216,圖2和圖3中的系統快取記憶體218、暫存器222,圖4中的系統快取記憶體400)和各種記憶體/快取記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。為了涵蓋在各種實施例中啟用的替代配置,實現方法1100的硬體在本文中被稱為「客戶端」和「記憶體控制設備」。
在方塊1102中,客戶端可以發送針對系統快取記憶體(例如,圖2和圖3中的系統快取記憶體218、圖4中的系統快取記憶體400)的讀記憶體命令。
在方塊1104中,客戶端可以向處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)發送指示處理器應當更新用於系統快取記憶體中的資料的陳舊計數器的信號。客戶端可以使用各種類型的信號通訊向處理器發信號,包括例如對暫存器(例如,圖2和圖3中的暫存器222)的暫存器寫入、對處理器的直接中斷等。暫存器可以與標準感知快取記憶體替換策略的陳舊計數器更新特徵相關聯。寫入暫存器可以設置暫存器的值,該值被配置為向記憶體控制設備指示記憶體控制設備是否應當更新陳舊計數器。在一些實施例中,在方塊1102中發送讀記憶體命令並在方塊1104中向處理器發信號通知更新用於系統快取記憶體中的資料的陳舊計數器的客戶端可以是處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或軟體程式(例如,圖3中的客戶端300),例如作業系統及/或應用程式。
在方塊1106中,記憶體控制設備可以接收讀記憶體命令。記憶體控制設備可以被配置為管理、控制及/或實現系統快取記憶體的記憶體存取、快取記憶體維護、快取一致性及/或快取記憶體替換策略。
在方塊1108中,記憶體控制設備可以實施用於將讀記憶體命令的資料寫入系統快取記憶體中的標準感知快取記憶體替換策略。在方塊1106中接收讀記憶體命令並在方塊1108中實施標準感知快取記憶體替換策略的記憶體控制設備可以是處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。
圖12圖示了根據一些實施例的用於實現標準感知快取記憶體替換策略根據基於本端計數器的值使資料無效來替換資料的方法1200。參考圖1-圖12,方法1200可以在以下中實現;計算設備(例如圖1中的計算設備100)、硬體、在處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)中執行的軟體(例如,圖3中的客戶端300),或者軟體配置的處理器和專用硬體的組合,其包括其他單獨的元件,例如各種記憶體/快取記憶體(例如,圖1中的記憶體106、記憶體114,圖2中的L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216,圖2和圖3中的系統快取記憶體218、暫存器222,圖4中的系統快取記憶體400)和各種記憶體/快取記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。為了涵蓋在各種實施例中啟用的替代配置,實現方法1200的硬體在本文中被稱為「記憶體控制設備」。方法1200的方塊702-706、1202描述了可以作為參考圖11描述的方法1100的方塊1108中的操作的一部分來執行的操作。方塊702-706可以以與參考圖7描述的方法700的相似編號的方塊類似的方式實現。
回應於決定暫存器值指示記憶體控制設備不應更新陳舊計數器(亦即,可選的決定方塊704=「否」);或者在方塊706中更新陳舊計數器之後,記憶體控制設備可以從記憶體中的在方法1100(圖11)的方塊1106中接收到的讀記憶體命令所針對的位置處讀取資料以及將陳舊計數器的值寫入記憶體中的在方法1100(圖11)的方塊1106中接收到的讀記憶體命令所針對的位置處。記憶體控制設備可以讀取系統快取記憶體(例如,圖2和圖3中的系統快取記憶體218,圖4中的系統快取記憶體400)中讀記憶體命令所針對的位置處的資料。記憶體控制設備亦可以將作為本端計數器的陳舊計數器的值與系統快取記憶體中的讀記憶體命令所針對的資料相關聯地寫入系統快取記憶體中。例如,記憶體控制設備可以將陳舊計數器的值寫入系統快取記憶體中與系統快取記憶體中的讀記憶體命令所針對的資料相關聯的標籤位置。在一些實施例中,在方塊1202中從記憶體中的讀記憶體命令所針對的位置處讀取資料並將陳舊計數器的值寫入記憶體中的讀記憶體命令所針對的位置處的記憶體控制設備可以是處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。
在方塊1202中從記憶體中的讀記憶體命令所針對的位置處讀取資料並將陳舊計數器的值寫入記憶體中的讀記憶體命令所針對的位置處之後,在方法600的方塊606中記憶體控制設備可以接收寫記憶體命令,如參照圖6描述的。在方塊606中接收寫記憶體命令的記憶體控制設備可以是處理器及/或記憶體控制器。
圖13圖示了根據一些實施例的用於實現標準感知快取記憶體替換策略根據基於本端計數器的值使資料無效來替換資料的方法1300。參考圖1-圖13,方法1300可以在以下中實現:計算設備(例如圖1中的計算設備100)、硬體、在處理器(例如,圖1中的CPU 104、處理器124,圖2中的處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)中執行的軟體(例如圖3中的客戶端300),或者軟體配置的處理器和專用硬體的組合,其包括其他單獨的元件,例如各種記憶體/快取記憶體(例如,圖1中的記憶體106、記憶體114,圖2中的L2快取記憶體208a、208b、208c、210a、210b、210c、L3快取記憶體216,圖2和圖3中的系統快取記憶體218、暫存器222,圖4中的系統快取記憶體400)和各種記憶體/快取記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。為了涵蓋在各種實施例中啟用的替代配置,實現方法1300的硬體在本文中被稱為「記憶體控制設備」。方法1200的方塊810-814、1202描述了可以作為參考圖11描述的方法1100的方塊1108中的操作的一部分來執行的操作。方塊810-814可以以與參考圖8描述的方法800的相似編號的方塊類似的方式實現。
在方塊1302中,記憶體控制設備可以從記憶體中的在方法1100(圖11)的方塊1106中接收到的讀記憶體命令所針對的位置處讀取資料並將陳舊計數器值寫入記憶體中的在方法1100(圖11)的方塊1106中接收到的讀記憶體命令所針對的位置處。記憶體控制設備可以讀取系統快取記憶體(例如,圖2和圖3中的系統快取記憶體218,圖4中的系統快取記憶體400)中由讀記憶體命令所針對的位置處的資料。記憶體控制設備亦可以將作為本端計數器的陳舊計數器的值與系統快取記憶體中的讀記憶體命令所針對的資料相關聯地寫入系統快取記憶體。例如,記憶體控制設備可以將陳舊計數器的值寫入系統快取記憶體中與系統快取記憶體中的讀記憶體命令所針對的資料相關聯的標籤位置。在一些實施例中,在方塊1302中從記憶體中的讀記憶體命令所針對的位置處讀取資料並將陳舊計數器的值寫入記憶體中的讀記憶體命令所針對的位置處的記憶體控制設備可以是處理器(例如,圖1中的CPU 104、處理器124,圖2中處理器202、處理器核心204a、204b、204c、206a、206b、206c、處理器核心集群212、214,圖3中的客戶端300)及/或記憶體控制器(例如,圖2和圖3中的記憶體控制器220)。
根據各種實施例(包括但不限於上文參考圖1-圖13描述的實施例)的系統可以在包括行動計算設備在內的多種計算系統中實現,適合與各種實施例一起使用的其中的實例在圖14中進行了圖示。行動計算設備1400可以包括耦合到觸控式螢幕控制器1404和內部記憶體1406的處理器1402。處理器1402可以是指定用於一般或特定處理任務的一或多個多核積體電路。內部記憶體1406可以是揮發性或非揮發性記憶體,亦可以是安全及/或加密記憶體,或不安全及/或未加密記憶體,或其任何組合。可以利用的記憶體類型的實例包括但不限於DDR、低功耗DDR(LPDDR)、圖形DDR(GDDR)、WIDEIO、RAM、靜態RAM(SRAM)、動態RAM(DRAM)、參數RAM(P-RAM)、電阻式RAM(R-RAM)、磁阻式RAM(M-RAM)、自旋轉移力矩RAM(STT-RAM)和嵌入式DRAM。觸控式螢幕控制器1404和處理器1402亦可以耦合到觸控式螢幕面板1412,例如電阻感測觸控式螢幕、電容感測觸控式螢幕、紅外感測觸控式螢幕等。此外,行動計算設備1400的顯示器不需要具有觸控式螢幕功能。
行動計算設備1400可以具有一或多個無線電信號收發器1408(例如,Peanut、藍芽、ZigBee、Wi-Fi、RF無線電)和天線1410,用於發送和接收通訊,彼此耦合及/或耦合到處理器1402。收發器1408和天線1410可以與上述電路系統一起使用以實現各種無線傳輸協定堆疊和介面。行動計算設備1400可以包括蜂巢網路無線數據機晶片1416,其使能經由蜂巢網路進行通訊並且耦合到處理器。
行動計算設備1400可以包括耦合到處理器1402的周邊設備連接介面1418。周邊設備連接介面1418可以被特別地配置為接受一種類型的連接,或者可以被配置為接受各種類型的實體和通訊連接(通用或專有的),例如通用序列匯流排(USB)、FireWire、Thunderbolt或PCIe。周邊設備連接介面1418亦可以耦合到類似配置的周邊設備連接埠(未圖示)。
行動計算設備1400亦可以包括用於提供音訊輸出的揚聲器1414。行動計算設備1400亦可以包括外殼1420,其由塑膠、金屬或材料的組合構成,用於包含本文描述的所有或一些元件。行動計算設備1400可以包括耦合到處理器1402的電源1422,例如一次性或可充電電池。可充電電池亦可以耦合到周邊設備連接埠以從行動計算設備1400外部的源接收充電電流。行動計算設備1400亦可以包括用於接收使用者輸入的實體按鈕1424。行動計算設備1400亦可以包括用於開啟和關閉行動計算設備1400的電源按鈕1426。
根據各種實施例(包括但不限於上文參考圖1-圖12描述的實施例)的系統可以在包括膝上型電腦1500的各種計算系統中實現,其中的實例如圖15所示。許多膝上型電腦包括觸控板觸摸表面1517,用作電腦的定點設備,因此可以接收拖動、滾動和輕彈手勢,類似於在配備有觸控式螢幕顯示器的且在以上描述的計算設備上實現的彼等。膝上型電腦1500將通常包括耦合到揮發性記憶體1512和大容量非揮發性記憶體的處理器1502,例如快閃記憶體的磁碟機1513。另外,電腦1500可以具有用於發送和接收電磁輻射的一或多個天線1508,其可以連接到無線資料鏈路及/或耦合到處理器1502的蜂巢式電話收發器1516。電腦1500亦可以包括軟碟機1514和壓縮光碟(CD)驅動器1515,其耦合到處理器1502。在筆記本配置中,電腦外殼包括觸控板1517、鍵盤1518和顯示器1519,所有該等皆耦合到處理器1502。計算設備的其他配置可以包括眾所周知的耦合到處理器(例如,經由USB輸入)的電腦滑鼠或軌跡球,其亦可以與各種實施例結合使用。
根據各種實施例(包括但不限於上文參考圖1-圖12描述的實施例)的系統亦可以在固定計算系統中實現,例如各種商用伺服器中的任何一種。圖16中圖示了示例性伺服器1600。此種伺服器1600通常包括一或多個耦合到揮發性記憶體1602和大容量非揮發性記憶體(例如磁碟機1604)的多核處理器元件1601。如圖16中所示,多核處理器元件1601可以經由將其插入到元件的機架中而被添加到伺服器1600。伺服器1600亦可以包括耦合到處理器1601的軟碟機、壓縮光碟(CD)或數位通用光碟(DVD)磁碟機1606。伺服器1600亦可以包括耦合到多核處理器元件1601的網路存取埠1603,用於建立與網路1605的網路介面連接,例如耦合到其他廣播系統電腦和伺服器的區域網路、網際網路、公用交換電話網路及/或蜂巢資料網路(例如,CDMA、TDMA、GSM、PCS、3G、4G、LTE、5G或任何其他類型的蜂巢資料網路)。
實施方式的實例在以下段落中描述。儘管以下實施方式實例中的一些是根據示例性系統、設備或方法來描述的,但是進一步的示例性實施方式可以包括:在以下段落中論述的示例性系統或設備被實現為執行示例性系統或設備的操作的方法,在以下段落中論述的示例性系統、設備或方法由計算設備實現,該計算設備包括配置有處理設備可執行指令以執行示例性系統、設備或方法的操作的處理設備;計算設備,包括配置為執行示例性系統、設備或方法的操作的記憶體控制設備;以下段落中論述的示例性系統、設備或方法由計算設備實現,該計算設備包括用於執行示例性系統、設備或方法的功能的構件;及以下段落中論述的示例性系統、設備或方法實現為非暫時性處理器可讀取儲存媒體,其上儲存有處理器可執行指令,該等指令被配置為使計算設備的處理器執行示例性系統、設備或方法的操作。
實例1.一種經由計算設備實現標準感知快取記憶體替換策略的方法,包括以下步驟:更新陳舊計數器;將本端計數器的值與相關聯的資料在系統快取記憶體中的位置相關聯地寫入該系統快取記憶體,其中當該相關聯的資料被寫入該系統快取記憶體時,該本端計數器的值包括該陳舊計數器的值;及使用該相關聯的資料的該本端計數器的值來決定該相關聯的資料是否陳舊。
實例2.實例1的方法,其中更新陳舊計數器包括:從該計算設備的客戶端接收信號,該信號被配置為指示是否更新該陳舊計數器;基於該信號來決定是否更新該陳舊計數器;及回應於決定更新陳舊計數器而更新該陳舊計數器。
實例3.實例1或2中任一項的方法,其中該信號是暫存器寫命令,並且其中:從該計算設備的客戶端接收該信號包括從由該客戶端設置的暫存器讀取值;及基於該信號來決定是否更新該陳舊計數器包括基於來自該暫存器的值來決定是否更新該陳舊計數器。
實例4.實例3的方法,亦包括以下步驟:由該計算設備的客戶端根據基於時間的標準在該暫存器處設置該值。
實例5.實例3的方法,亦包括以下步驟:由該計算設備的客戶端根據基於事件的標準在該暫存器處設置該值。
實例6.實例1-5中任一項的方法,亦包括以下步驟:接收記憶體寫命令,其中將本端計數器的值與該相關聯的資料在系統快取記憶體中的位置相關聯地寫入該系統快取記憶體可以發生在更新該陳舊計數器之前,其中該相關聯的資料是該寫記憶體命令的資料
實例7.實例1-6中任一項的方法,其中使用該相關聯的資料的該本端計數器的值來決定該相關聯的資料是否陳舊包括:使用該陳舊計數器的值和該本端計數器的值來計算替換值;及決定該替換值是否超過陳舊閾值,其中回應於決定該替換值超過該陳舊閾值,該相關聯的資料被決定為陳舊。
實例8.實例7的方法,亦包括以下步驟:接收記憶體存取命令;及將該記憶體存取命令的資料寫入系統快取記憶體中的替換值超過陳舊閾值的位置處,其中寫入該系統快取記憶體的記憶體存取命令的資料是該相關聯的資料。
實例9.實例7的方法,亦包括以下步驟:接收記憶體寫命令;使在該替換值超過該陳舊閾值的位置處的資料無效;及將該記憶體寫命令的資料寫入該系統快取記憶體中的具有被無效的資料的位置處,其中寫入該系統快取記憶體的記憶體寫命令的資料是該相關聯的資料。
實例10.實例1-9中任一項的方法,亦包括以下步驟:接收記憶體寫存取命令;及回應於決定沒有替換值超過該陳舊閾值,將該記憶體寫存取命令的資料寫入系統快取記憶體中的符合另一快取記憶體替換策略的位置處。
用於在可程式設計處理器上執行以執行各種實施例的操作的電腦程式代碼或「程式碼」可以用高級程式設計語言編寫,例如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、結構化查詢語言(例如Transact-SQL)、Perl或其他各種程式設計語言。本案中使用的儲存在電腦可讀取儲存媒體上的程式碼或程式可以指代處理器可理解的格式的機器語言代碼(例如目標代碼)。
前述方法描述和程序流程圖僅作為說明性實例提供,並不意欲要求或暗示必須以呈現的順序執行各種實施例的操作。如熟習此項技術者將理解的,可以以任何順序執行前述實施例中的操作順序。諸如「此後」、「隨後」、「下一個」等的詞語無意限制操作順序;該等詞語僅是用來引導讀者完成方法的描述。此外,任何以單數形式提及請求項元素,例如使用詞語「一個(a)」、「一個(an)」或「該(the)」不應被解釋為將元素限制為單數。
結合各種實施例描述的各種說明性邏輯區塊、模組、電路和演算法操作可以實現為電子硬體、電腦軟體或兩者的組合。為了清楚地說明硬體和軟體的此種可互換性,各種說明性元件、方塊、模組、電路和操作已在上文中根據其功能進行了一般性描述。此種功能是作為硬體還是軟體來實現取決於特定的應用和強加給整體系統的設計約束。熟習此項技術者可以針對每個特定應用以不同的方式實現所描述的功能,但是此種實現方式決定不應被解釋為導致偏離請求項的範疇。
用於實現結合本文揭示的實施例描述的各種說明性邏輯、邏輯區塊、模組和電路的硬體可以用通用處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)或其他可程式設計邏輯設備、個別閘門或電晶體邏輯、離散硬體元件或被設計為執行此處描述的功能的其任何組合來實現或執行。通用處理器可以是微處理器,但在備選方案中,處理器可以是任何習知處理器、控制器、微控制器或狀態機。處理器亦可以實現為計算設備的組合,例如,DSP和微處理器的組合、複數個微處理器、一或多個微處理器結合DSP核心,或任何其他此種配置。或者,一些操作或方法可以由特定於給定功能的電路系統來執行。
在一或多個實施例中,所描述的功能可以以硬體、軟體、韌體或其任意組合來實現。若以軟體實現,則功能可以作為一或多個指令或代碼儲存在非暫時性電腦可讀取媒體或非暫時性處理器可讀取媒體上。本文揭示的方法或演算法的操作可以體現在處理器可執行軟體模組中,該模組可以常駐在非暫時性電腦可讀取或處理器可讀取儲存媒體上。非暫時性電腦可讀取或處理器可讀取儲存媒體可以是可由電腦或處理器存取的任何儲存媒體。例如但不限於,此類非暫時性電腦可讀取或處理器可讀取媒體可包括RAM、ROM、EEPROM、快閃記憶體、CD-ROM或其他光碟儲存、磁碟儲存或其他磁儲存設備,或可用於以指令或資料結構的形式儲存所需程式碼並可由電腦存取的任何其他媒體。此處使用的磁碟和光碟包括壓縮光碟(CD)、鐳射光碟、光學光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中磁碟通常以磁性方式再現資料,而光碟則經由鐳射以光學方式再現資料。以上的組合亦包括在非暫時性電腦可讀取和處理器可讀取媒體的範疇內。此外,方法或演算法的操作可以作為一個或任何組合或一組代碼及/或指令常駐在非暫時性處理器可讀取媒體及/或電腦可讀取媒體上,其可以併入電腦程式產品中。
提供所揭示的實施例的前述描述以使任何熟習此項技術者能夠做出或使用請求項。對該等實施例的各種修改對於熟習此項技術者而言將是顯而易見的,並且在不脫離請求項的範疇的情況下,本文定義的一般原理可以應用於其他實施例和實施方式。因此,本案不意欲限於本文描述的實施例和實施方式,而是符合與所附請求項和本文揭示的原理和新穎特徵一致的最寬範疇。
100:計算設備
102:晶片上系統(SoC)
104:中央處理單元
106:記憶體
108:通訊介面
110:記憶體介面
112:通訊元件
114:記憶體
116:天線
120:周邊設備介面
122:周邊設備
124:處理器
200:SoC
202:處理器
204a:處理器核心
204b:處理器核心
204c:處理器核心
206a:處理器核心
206b:處理器核心
206c:處理器核心
208a:L2快取記憶體
208b:L2快取記憶體
208c:L2快取記憶體
210a:L2快取記憶體
210b:L2快取記憶體
210c:L2快取記憶體
212:處理器核心集群
214:處理器核心集群
216:L3快取記憶體
218:系統快取記憶體
220:記憶體控制器
222:暫存器
224:系統記憶體
300:客戶端
302:記憶體存取命令
304:暫存器寫入
306:讀取
308:陳舊計數器
310:讀取
312:操作
314:資料寫入
315:讀取
316:寫入
317:寫入
400:系統快取記憶體
402:陳舊計數器
404:位置
406:位置
410a:寫記憶體命令
410b:寫記憶體命令
410c:寫記憶體命令
412a:更新
412b:更新
600:方法
602:方塊
604:方塊
606:方塊
608:方塊
700:方法
702:方塊
704:決定方塊
706:方塊
708:方塊
709:決定方塊
710:決定方塊
711:方塊
712:方塊
714:方塊
800:方法
802:方塊
803:決定方塊
804:決定方塊
805:方塊
806:方塊
808:方塊
810:方塊
812:決定方塊
814:方塊
900:方法
902:方塊
904:方塊
1000:方法
1002:方塊
1004:方塊
1100:方法
1102:方塊
1104:方塊
1106:方塊
1108:方塊
1200:方法
1202:方塊
1300:方法
1302:方塊
1400:行動計算設備
1402:處理器
1404:觸控式螢幕控制器
1406:內部記憶體
1408:無線電信號收發器
1410:天線
1412:觸控式螢幕面板
1414:揚聲器
1416:蜂巢網路無線數據機晶片
1418:周邊設備連接介面
1420:外殼
1422:電源
1424:實體按鈕
1426:電源按鈕
1500:膝上型電腦
1502:處理器
1508:天線
1512:揮發性記憶體
1513:磁碟機
1514:軟碟機
1515:壓縮光碟(CD)驅動器
1516:蜂巢式電話收發器
1517:觸控板觸摸表面
1518:鍵盤
1519:顯示器
1600:伺服器
1601:多核處理器元件
1602:揮發性記憶體
1603:網路存取埠
1604:磁碟機
1605:網路
1606:數位通用光碟(DVD)磁碟機
併入本文並構成本說明書的一部分的附圖圖示了各種實施例的示例性實施例,並且與上文提供的一般描述和下文提供的詳細描述一起用於解釋請求項的特徵。
圖1是圖示適用於實施各種實施例的示例性計算設備的元件方塊圖。
圖2是圖示適合於實現各種實施例的示例性晶片上系統的元件方塊圖。
圖3A和圖3B是圖示根據實施例的標準感知快取記憶體替換策略的實例的程序元件信號傳遞圖。
圖4是圖示根據實施例的標準感知快取記憶體替換策略的實例的記憶體流程圖。
圖5是圖示根據實施例的標準感知快取記憶體替換策略基於本端計數器的值替換資料的實例的記憶體流程圖。
圖6是圖示根據實施例的用於實現本端計數器的標準感知快取記憶體替換策略的方法的程序流程圖。
圖7是圖示根據實施例的用於實現標準感知快取記憶體替換策略基於本端計數器的值替換資料的方法的程序流程圖。
圖8是圖示根據實施例的用於實現標準感知快取記憶體替換策略基於本端計數器的值替換資料的方法的程序流程圖。
圖9是圖示根據實施例的用於實現標準感知快取記憶體替換策略根據基於本端計數器的值使資料無效來替換資料的方法的程序流程圖。
圖10是圖示根據實施例的用於實現標準感知快取記憶體替換策略根據基於本端計數器的值使資料無效來替換資料的方法的程序流程圖。
圖11是圖示根據實施例的用於實現本端計數器的標準感知快取記憶體替換策略的方法的程序流程圖。
圖12是圖示根據實施例的用於實現標準感知快取記憶體替換策略基於本端計數器的值替換資料的方法的程序流程圖。
圖13是圖示根據實施例的用於實現標準感知快取記憶體替換策略基於本端計數器的值替換資料的方法的程序流程圖。
圖14是圖示適合於實現各種實施例的示例性行動計算設備的元件方塊圖。
圖15是圖示適合於實現各種實施例的示例性行動計算設備的元件方塊圖。
圖16是圖示適合於實現各種實施例的示例性伺服器的元件方塊圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
220:記憶體控制器
300:客戶端
600:方法
602:方塊
604:方塊
606:方塊
608:方塊
Claims (30)
- 一種經由一計算設備實現一標準感知快取記憶體替換策略的方法,包括以下步驟: 更新一陳舊計數器; 將一本端計數器的一值與相關聯的資料在一系統快取記憶體中的一位置相關聯地寫入該系統快取記憶體,其中當該相關聯的資料被寫入該系統快取記憶體時,該本端計數器的該值包括該陳舊計數器的一值;及 使用該相關聯的資料的該本端計數器的該值來決定該相關聯的資料是否陳舊。
- 如請求項1之方法,其中更新該陳舊計數器之步驟包括以下步驟: 從該計算設備的一客戶端接收一信號,該信號被配置為指示是否更新該陳舊計數器; 基於該信號來決定是否更新該陳舊計數器;及 回應於決定更新該陳舊計數器而更新該陳舊計數器。
- 如請求項2之方法,其中該信號是一暫存器寫命令,並且其中: 從該計算設備的該客戶端接收該信號之步驟包括以下步驟:從由該客戶端設置的一暫存器讀取一值;及 基於該信號來決定是否更新該陳舊計數器之步驟包括以下步驟:基於來自該暫存器的該值來決定是否更新該陳舊計數器。
- 如請求項3之方法,亦包括以下步驟:由該計算設備的該客戶端根據一基於時間的標準在該暫存器處設置該值。
- 如請求項3之方法,亦包括以下步驟:由該計算設備的該客戶端根據一基於事件的標準在該暫存器處設置該值。
- 如請求項1之方法,亦包括以下步驟:接收一記憶體寫命令,其中將該本端計數器的該值與該相關聯的資料在該系統快取記憶體中的該位置相關聯地寫入該系統快取記憶體發生在更新該陳舊計數器之前,其中該相關聯的資料是該寫記憶體命令的資料。
- 如請求項1之方法,其中使用該相關聯的資料的該本端計數器的該值來決定該相關聯的資料是否陳舊之步驟包括以下步驟: 使用該陳舊計數器的一值和該本端計數器的該值來計算一替換值;及 決定該替換值是否超過一陳舊閾值,其中回應於決定該替換值超過該陳舊閾值,該相關聯的資料被決定為陳舊。
- 如請求項7之方法,亦包括以下步驟: 接收一記憶體存取命令;及 將該記憶體存取命令的資料寫入該系統快取記憶體中的該替換值超過該陳舊閾值的一位置處,其中寫入該系統快取記憶體的該記憶體存取命令的該資料是該相關聯的資料。
- 如請求項7之方法,亦包括以下步驟: 接收一記憶體寫命令; 使在該替換值超過該陳舊閾值的一位置處的資料無效;及 將該記憶體寫命令的資料寫入該系統快取記憶體中的具有該被無效的資料的一位置處,其中寫入該系統快取記憶體的該記憶體寫命令的該資料是該相關聯的資料。
- 如請求項7之方法,亦包括以下步驟: 接收一記憶體寫存取命令;及 回應於決定沒有替換值超過該陳舊閾值,將該記憶體寫存取命令的資料寫入該系統快取記憶體中的符合另一快取記憶體替換策略的一位置處。
- 一種計算設備,包括: 一記憶體控制設備,該記憶體控制設備被配置為: 更新一陳舊計數器; 將一本端計數器的一值與相關聯的資料在一系統快取記憶體中的一位置相關聯地寫入該系統快取記憶體,其中當該相關聯的資料被寫入該系統快取記憶體時,該本端計數器的該值包括該陳舊計數器的一值;及 使用該相關聯的資料的該本端計數器的該值來決定該相關聯的資料是否陳舊。
- 如請求項11之計算設備,其中該記憶體控制設備進一步被配置為經由以下操作更新該陳舊計數器: 從該計算設備的一客戶端接收一信號,該信號被配置為指示是否更新該陳舊計數器; 基於該信號來決定是否更新該陳舊計數器;及 回應於決定更新該陳舊計數器而更新該陳舊計數器。
- 如請求項12之計算設備,其中: 該信號為一暫存器寫命令;及 該記憶體控制設備亦被配置為: 經由從由該客戶端設置的一暫存器中讀取一值來接收來自該計算設備的該客戶端的該信號;及 經由基於來自該暫存器的該值決定是否更新該陳舊計數器來基於該信號決定是否更新該陳舊計數器。
- 如請求項13之計算設備,亦包括配置為根據一基於時間的標準在該暫存器處設置該值的一客戶端。
- 如請求項13之計算設備,亦包括被配置為根據一基於事件的標準在該暫存器處設置該值的一客戶端。
- 如請求項11之計算設備,其中該記憶體控制設備亦被配置為: 接收一記憶體寫命令;及 在更新該陳舊計數器之前,將該本端計數器的該值與該相關聯的資料在該系統快取記憶體中的該位置相關聯地寫入該系統快取記憶體,其中該相關聯的資料是該寫記憶體命令的資料。
- 如請求項11之計算設備,其中該記憶體控制設備亦被配置為經由以下操作使用該相關聯的資料的該本端計數器的該值來決定該相關聯的資料是否陳舊: 使用該陳舊計數器的一值和該本端計數器的該值來計算一替換值;及 決定該替換值是否超過一陳舊閾值,其中回應於決定該替換值超過該陳舊閾值,該相關聯的資料被決定為陳舊。
- 如請求項17之計算設備,其中該記憶體控制設備進一步被配置為: 接收一記憶體存取命令;及 將該記憶體存取命令的資料寫入該系統快取記憶體中的該替換值超過該陳舊閾值的一位置處,其中寫入該系統快取記憶體的該記憶體存取命令的該資料是該相關聯的資料。
- 如請求項17之計算設備,其中該記憶體控制設備進一步被配置為: 接收一記憶體寫命令; 使在該替換值超過該陳舊閾值的一位置處的資料無效;及 將該記憶體寫命令的資料寫入該系統快取記憶體中的具有該被無效的資料的一位置處,其中寫入該系統快取記憶體的該記憶體寫命令的該資料是該相關聯的資料。
- 如請求項17之計算設備,其中該記憶體控制設備進一步被配置為: 接收一記憶體寫存取命令;及 回應於決定沒有替換值超過該陳舊閾值,將該記憶體寫存取命令的資料寫入該系統快取記憶體中的符合不同於一標準感知快取記憶體替換策略的一快取記憶體替換策略的一位置處。
- 一種計算設備,包括: 用於更新一陳舊計數器的構件; 用於將一本端計數器的一值與相關聯的資料在一系統快取記憶體中的一位置相關聯地寫入該系統快取記憶體的構件,其中當該相關聯的資料被寫入該系統快取記憶體時,該本端計數器的該值包括該陳舊計數器的一值;及 用於使用該相關聯的資料的該本端計數器的該值來決定該相關聯的資料是否陳舊的構件。
- 如請求項21之計算設備,其中用於更新該陳舊計數器的構件包括: 用於從該計算設備的一客戶端接收一信號的構件,該信號被配置為指示是否更新該陳舊計數器; 用於基於該信號來決定是否更新該陳舊計數器的構件;及 用於回應於決定更新該陳舊計數器而更新該陳舊計數器的構件。
- 如請求項22之計算設備,其中該信號是一暫存器寫命令,並且其中: 用於從該計算設備的該客戶端接收該信號的構件包括用於從由該客戶端設置的一暫存器中讀取一值的構件;及 用於基於該信號決定是否更新該陳舊計數器的構件包括用於基於來自該暫存器的該值決定是否更新該陳舊計數器的構件。
- 如請求項23之計算設備,亦包括:用於由該計算設備的該客戶端根據一基於時間的標準設置該暫存器處的該值或者由該計算設備的該客戶端根據一基於事件的標準設置該暫存器處的該值的構件。
- 如請求項21之計算設備,亦包括:用於接收一記憶體寫命令的構件,其中用於將該本端計數器的該值與該相關聯的資料在該系統快取記憶體中的該位置相關聯地寫入該系統快取記憶體的構件是在更新該陳舊計數器之前實現的,其中該相關聯的資料是該寫記憶體命令的資料。
- 如請求項21之計算設備,其中用於使用該相關聯的資料的該本端計數器的該值來決定該相關聯的資料是否陳舊的構件包括: 用於使用該陳舊計數器的一值和該本端計數器的該值來計算一替換值的構件;及 用於決定該替換值是否超過一陳舊閾值的構件,其中回應於決定該替換值超過該陳舊閾值,該相關聯的資料被決定為陳舊。
- 如請求項26之計算設備,亦包括: 用於接收一記憶體存取命令的構件;及 用於將該記憶體存取命令的資料寫入該系統快取記憶體中的該替換值超過該陳舊閾值的一位置處的構件,其中寫入該系統快取記憶體的該記憶體存取命令的該資料是該相關聯的資料。
- 如請求項26之計算設備,亦包括: 用於接收一記憶體寫命令的構件; 用於使該替換值超過該陳舊閾值的一位置處的資料無效的構件;及 用於將該記憶體寫命令的資料寫入該系統快取記憶體中的具有被無效的資料的一位置處的構件,其中寫入該系統快取記憶體的該記憶體寫命令的該資料是該相關聯的資料。
- 如請求項26之計算設備,亦包括: 用於接收一記憶體寫存取命令的構件;及 用於回應於決定沒有替換值超過該陳舊閾值而將該記憶體寫存取命令的資料寫入該系統快取記憶體中的符合不同於一標準感知快取記憶體替換策略的一快取記憶體替換策略的一位置處的構件。
- 一種非暫時性處理器可讀取媒體,其上儲存有處理器可執行指令,該等處理器可執行指令被配置為使一處理設備執行操作,該等操作包括: 更新一陳舊計數器; 將一本端計數器的一值與相關聯的資料在一系統快取記憶體中的一位置相關聯地寫入該系統快取記憶體,其中當該相關聯的資料被寫入該系統快取記憶體時,該本端計數器的該值包括該陳舊計數器的一值;及 使用該相關聯的資料的該本端計數器的該值來決定該相關聯的資料是否陳舊。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/646,690 US11907138B2 (en) | 2021-12-31 | 2021-12-31 | Multimedia compressed frame aware cache replacement policy |
| US17/646,690 | 2021-12-31 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW202328896A true TW202328896A (zh) | 2023-07-16 |
Family
ID=84519817
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW111143377A TW202328896A (zh) | 2021-12-31 | 2022-11-14 | 多媒體壓縮訊框感知快取記憶體替換策略 |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US11907138B2 (zh) |
| EP (1) | EP4457637B1 (zh) |
| JP (1) | JP7611461B1 (zh) |
| KR (1) | KR102706034B1 (zh) |
| CN (1) | CN118355369B (zh) |
| TW (1) | TW202328896A (zh) |
| WO (1) | WO2023129291A1 (zh) |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4463420A (en) | 1982-02-23 | 1984-07-31 | International Business Machines Corporation | Multiprocessor cache replacement under task control |
| US7996621B2 (en) | 2007-07-12 | 2011-08-09 | International Business Machines Corporation | Data cache invalidate with data dependent expiration using a step value |
| US8464000B2 (en) * | 2008-02-29 | 2013-06-11 | Qualcomm Incorporated | Systems and methods for cache line replacements |
| US20130097387A1 (en) | 2011-10-14 | 2013-04-18 | The Board Of Trustees Of The Leland Stanford Junior University | Memory-based apparatus and method |
| US9003126B2 (en) | 2012-09-25 | 2015-04-07 | Intel Corporation | Apparatus, system and method for adaptive cache replacement in a non-volatile main memory system |
| US10229161B2 (en) * | 2013-09-20 | 2019-03-12 | Oracle International Corporation | Automatic caching of scan and random access data in computing systems |
| US10831678B2 (en) * | 2017-11-21 | 2020-11-10 | Arm Limited | Multi-tier cache placement mechanism |
| FR3090147B1 (fr) * | 2018-12-17 | 2021-01-08 | Commissariat Energie Atomique | Procédé de gestion d’une mémoire cache d’un calculateur électronique |
| US11461241B2 (en) * | 2021-03-03 | 2022-10-04 | Qumulo, Inc. | Storage tier management for file systems |
| CN115794678A (zh) * | 2021-09-10 | 2023-03-14 | 戴尔产品有限公司 | 基于数据的输入-输出存取类型来管理高速缓存替换 |
-
2021
- 2021-12-31 US US17/646,690 patent/US11907138B2/en active Active
-
2022
- 2022-11-14 KR KR1020247021014A patent/KR102706034B1/ko active Active
- 2022-11-14 TW TW111143377A patent/TW202328896A/zh unknown
- 2022-11-14 CN CN202280080173.1A patent/CN118355369B/zh active Active
- 2022-11-14 EP EP22823216.1A patent/EP4457637B1/en active Active
- 2022-11-14 JP JP2024539049A patent/JP7611461B1/ja active Active
- 2022-11-14 WO PCT/US2022/049820 patent/WO2023129291A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| JP7611461B1 (ja) | 2025-01-09 |
| KR102706034B1 (ko) | 2024-09-11 |
| US20230214330A1 (en) | 2023-07-06 |
| CN118355369A (zh) | 2024-07-16 |
| JP2025502772A (ja) | 2025-01-28 |
| EP4457637C0 (en) | 2025-10-15 |
| EP4457637A1 (en) | 2024-11-06 |
| WO2023129291A1 (en) | 2023-07-06 |
| CN118355369B (zh) | 2024-12-10 |
| US11907138B2 (en) | 2024-02-20 |
| EP4457637B1 (en) | 2025-10-15 |
| KR20240104200A (ko) | 2024-07-04 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111033466B (zh) | 对闪存进行分区以及实现具有映像升级能力的灵活引导 | |
| US10503656B2 (en) | Performance by retaining high locality data in higher level cache memory | |
| NL2007481C2 (en) | Hardware dynamic cache power management. | |
| US20190073305A1 (en) | Reuse Aware Cache Line Insertion And Victim Selection In Large Cache Memory | |
| CN106663059B (zh) | 功率感知填充 | |
| JP6748298B2 (ja) | ハードウェア制御分割スヌープディレクトリを使用するコヒーレント相互接続電力低減 | |
| CN106575262B (zh) | 用于带宽压缩的补充写入缓存命令的方法和装置 | |
| US10255181B2 (en) | Dynamic input/output coherency | |
| US20190087344A1 (en) | Reducing Clean Evictions In An Exclusive Cache Memory Hierarchy | |
| CN106687937B (zh) | 用于压缩算法的高速缓冲存储体扩展 | |
| WO2014052383A1 (en) | System cache with data pending state | |
| US12164448B2 (en) | Mechanism to reduce exit latency for deeper power saving modes L2 in PCIe | |
| JP7611461B1 (ja) | マルチメディア圧縮フレーム認識キャッシュ置換ポリシー | |
| HK1169184A (zh) | 硬件動態高速緩存電源管理 |