TW202244735A - Dram感知快取記憶體 - Google Patents
Dram感知快取記憶體 Download PDFInfo
- Publication number
- TW202244735A TW202244735A TW111110565A TW111110565A TW202244735A TW 202244735 A TW202244735 A TW 202244735A TW 111110565 A TW111110565 A TW 111110565A TW 111110565 A TW111110565 A TW 111110565A TW 202244735 A TW202244735 A TW 202244735A
- Authority
- TW
- Taiwan
- Prior art keywords
- dram
- data
- data storage
- cache
- storage structures
- Prior art date
Links
Images
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/0893—Caches characterised by their organisation or structure
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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/12—Replacement control
-
- 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/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/1041—Resource optimization
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
資料快取記憶體可以包括將與DRAM事務請求相關聯的資料儲存在以對應於DRAM儲存體、儲存體組和層級組織的方式組織的資料儲存結構中。經由在資料儲存結構中進行選擇,可以選擇資料以傳輸到DRAM。
Description
本揭示案係關於DRAM感知快取記憶體。
計算設備可以包括多個子系統,這些子系統經由匯流排或其他互連相互通訊。這樣的計算設備可以是例如可攜式計算設備(「PCD」),例如膝上型電腦或掌上型電腦、蜂巢式電話或智慧手機、可攜式數位助理、可攜式遊戲控制台等。通訊子系統可以包含於同一積體電路晶片內或不同晶片內。「片上系統」或「SoC」是這種晶片的實例,它整合了許多部件以提供系統級功能。例如,SoC可以包括一或多個處理器,例如中央處理單元(「CPU」)、圖形處理單元(「GPU」)、數位訊號處理器(「DSP」)和神經處理單元(「NPU」)。SoC可以包括其他子系統,例如提供無線連接的收發機或「數據機」、主記憶體或系統記憶體、一或多個高速緩衝記憶體等。一些子系統可以包括可以與系統記憶體執行記憶體事務的處理引擎。在PCD和其他計算設備中的系統記憶體通常包括動態隨機存取記憶體(「DRAM」)。
DRAM被組織成行和列的陣列。必須先打開行,隨後才能存取其資料。任何時候皆只能打開陣列中的一行。為了説明減少延時,可以將DRAM組織在多個儲存體中,每個儲存體包括上述類型的陣列。DRAM控制器可以發起對一個儲存體的存取,同時等待對另一儲存體的先前存取完成。為了提供進一步的效能優勢,儲存體可以組織成多個儲存體組。此外,DRAM可以組織成多個層級(rank),每個層級具有多個儲存體組。
DRAM控制器的一項任務是排程或指導層級、儲存體組和儲存體之間的事務。術語「DRAM感知」排程有時用於描述DRAM控制器如何以利用DRAM組織提供的效率的方式執行此類排程。例如,DRAM控制器可以隨機選擇要存取的儲存體,則,順序的存取被定向到同一儲存體的不同行的可能性很小。此外,例如,DRAM控制器可以在切換到另一層級之前將儘可能多的存取引導到一個層級,因為切換層級會導致高延時損失。
可以在請求事務的處理引擎和DRAM控制器之間的記憶體事務路徑中插入高速緩衝記憶體系統。當高速緩衝記憶體填滿或變「髒」時,高速緩衝記憶體控制器將一些髒快取記憶體行寫回或「驅逐」到DRAM以釋放高速緩衝記憶體中的空間。在一些情況下,由DRAM控制器採用的DRAM感知排程技術可能不足以最大化效率。
揭示用於以DRAM感知方式控制資料快取記憶體的系統、方法、電腦可讀取媒體和其他實例。
一種用於控制資料快取記憶體的示例性系統可以包括:複數個資料儲存結構,其共同具有與DRAM的結構組織對應的組織。該示例性系統亦可以包括:快取記憶體控制器系統。該快取記憶體控制器系統可以被配置為:接收複數個事務請求。該快取記憶體控制器系統亦可以被配置為:基於與每個事務請求相關聯的記憶體位址,將與事務請求相關聯的資料儲存在從複數個資料儲存結構中選擇的一或多個資料儲存結構中。該快取記憶體控制器系統亦可以被配置為:使用複數個資料儲存結構控制去往DRAM的資料傳輸。
一種用於控制資料快取記憶體的方法可以包括:接收複數個事務請求。該示例性方法亦可以包括:基於與每個事務請求相關聯的記憶體位址,將與事務請求相關聯的資料儲存在從複數個資料儲存結構中選擇的一或多個資料儲存結構中。該示例性方法亦可以包括:使用複數個資料儲存結構控制去往DRAM的資料傳輸。複數個資料儲存結構可以共同具有與DRAM的結構組織對應的組織。
另一種用於控制資料快取記憶體的系統可以包括:用於接收複數個事務請求的單元。該示例性系統亦可以包括:用於基於與每個事務請求相關聯的記憶體位址,將與事務請求相關聯的資料儲存在從複數個資料儲存結構中選擇的一或多個資料儲存結構中的單元。該示例性系統亦可以包括:用於使用複數個資料儲存結構控制去往DRAM的資料傳輸的單元。複數個資料儲存結構可以共同具有與DRAM的結構組織對應的組織。
一種用於控制資料快取記憶體的電腦可讀取媒體可以包括非暫時性電腦可讀取媒體,其上儲存有電腦可執行形式的指令。該等指令在由處理器執行時,可以將處理器配置為:接收複數個事務請求。該等指令亦可以將處理器配置為:基於與每個事務請求相關聯的記憶體位址,將與事務請求相關聯的資料儲存在從複數個資料儲存結構中選擇的一或多個資料儲存結構中。該等指令亦可以將處理器配置為:使用複數個資料儲存結構控制去往DRAM的資料傳輸。
本文使用詞語「示例性」來表示「用作實例、例子或說明」。詞語「說明性」在本文中可以與「示例性」同義使用。本文中描述為「示例性」的任何態樣不必被解釋為優於或更好於其他態樣。
如圖1所示,可以提供用於控制資料快取記憶體的各態樣的系統100。系統100可以被配置用於控制與客戶端設備(未圖示)和DRAM(未圖示)之間的記憶體事務有關的資料的快取記憶體的各態樣。儘管在本文描述的示例性實施例中寫入事務用作記憶體事務的實例,但是本文描述的系統、方法和其他實施例的各態樣亦可以適用於其他類型的事務。系統100可以包括複數個資料儲存結構102。複數個資料儲存結構102可以共同具有與DRAM的組織對應的組織。例如,如下所述,DRAM可以被組織成儲存體、儲存體組、層級等。複數個資料儲存結構102可以具有對應於以下一項或多項的組織:DRAM的儲存體組織、DRAM的儲存體組組織、DRAM的層級組織等。
系統100亦可以包括快取記憶體控制器系統104。快取記憶體控制器系統104可以被配置為從一或多個客戶端設備(未圖示)接收DRAM事務請求。客戶端設備可以是能夠發起匯流排事務的任何類型,例如CPU或其他處理器。事務請求可以包括讀取事務請求和寫入事務請求(為了簡潔,本文亦可以將其稱為讀取請求和寫入請求)。圖1中的箭頭表示與事務有關的邏輯流,更具體地,表示關於事務的與請求相關的態樣的邏輯流;為了清楚起見,回應相關的態樣(例如,與回應於請求的資料返回流相關的態樣)未由圖1中的箭頭指示。亦應理解,圖1中的箭頭以概念方式指示邏輯流,並不意欲指示特定的實體互連,例如特定的訊號線、匯流排等。此外,本案中對「指示」的引用可以廣義地解釋為包括任何類型或組合的訊號、位元、命令、指令等。
事務請求可以包括目標記憶體(亦即,DRAM)位址並且亦可以包括如下所述的其他資訊。快取記憶體控制器系統104亦可以被配置為將與事務請求相關聯的資料儲存在資料儲存結構102中所選的一個資料儲存結構中。可以基於與事務請求相關聯的目標記憶體位址等其他資訊從資料儲存結構102中選擇在其中儲存資料的資料儲存結構102。例如,在寫入請求的情況下,儲存在所選資料結構102中的資訊或資料可以是快取記憶體位址的形式。如下所述,這樣的快取記憶體位址可以指示有效載荷快取記憶體(圖1中未圖示)中的位置,在該位置中作為寫入請求的主體的資料被緩存。
快取記憶體控制器系統104亦可以被配置為使用資料儲存結構102控制向DRAM的資料傳輸。例如,如下所述,儲存在資料儲存結構102中的資料可以用於指示要驅逐到DRAM的快取記憶體資料的位置或位址。快取記憶體控制器系統104可以被配置為經由基於序列在資料儲存結構102中進行選擇,來控制資料的傳輸。該序列可以基於例如資料儲存結構102之間的輪詢(round-robin)選擇。該序列可以基於例如在與DRAM的第一層級相關聯的資料儲存結構102的第一子集和與DRAM的第二層級相關聯的資料儲存結構102的第二子集之間進行選擇。該序列可以基於例如資料儲存結構中的條目是否指示DRAM頁面命中。下文進一步描述與在資料儲存結構102之間進行選擇有關的這些態樣。
如圖2所示,系統200可以包括客戶端設備202(亦即,處理器或其他處理引擎)、快取記憶體系統204、記憶體控制器206和DRAM 208。客戶端設備202可以發出DRAM事務請求,其可以包括讀取請求(即從DRAM 208讀取資料的請求)以及寫入請求(即在DRAM 208中儲存資料的請求)。DRAM事務請求亦可以稱為存取DRAM 208的請求。每個DRAM事務請求可以包括DRAM 208中的目標位址、要存取的資料的大小或數量以及其他資訊。寫入請求亦包括記憶體控制器206將回應於寫入請求而儲存在DRAM 208中的資料,其可以被稱為有效載荷。
快取記憶體系統204可以包括上述系統100(圖1)方式的特徵和操作。快取記憶體系統204亦可以包括一般特徵。例如,在一些態樣,快取記憶體系統204可以以傳統的回寫快取記憶體的方式操作,這是本發明所屬領域中具有通常知識者所熟知的。例如,快取記憶體系統204可以臨時儲存或「高速緩衝」回應於寫入請求而被請求寫入DRAM 208的資料、或回應於讀取請求而從DRAM 208讀取的數據。如本發明所屬領域中具有通常知識者所理解的,已儲存在快取記憶體系統204中但尚未寫入DRAM 208的資料通常被稱為「髒」資料。通常,髒資料被週期性地寫入DRAM 208,這個程序通常被稱為驅逐或清理。代替或補充於傳統的驅逐方法,亦可以包括本文所述的驅逐相關方法。清理快取記憶體亦可以通俗地稱為「擦洗」。儘管為了清楚起見未單獨示出,但快取記憶體系統204可以包括一或多個處理器(可由軟體或韌體配置)或可配置為以本文所述方式操作的其他邏輯,包括根據下文描述的方法。
記憶體控制器206可以具有一般結構並且以一般方式操作。例如,除了其他功能之外,記憶體控制器206可以將事務請求轉換成DRAM命令和實體DRAM位址。由於記憶體控制器206及其操作方式為本發明所屬領域中具有通常知識者所熟知,因此本文不描述記憶體控制器206的這些態樣。
DRAM 208可以具有一般結構並且以一般方式操作。DRAM 208可以是與本文的描述不矛盾的任何類型。例如,DRAM 208可以是雙倍資料速率同步DRAM(「DDR-SDRAM」),有時簡稱為「DDR」。隨著DDR技術的發展,已經開發出了諸如第四代低功率DDR(「LPDDR4」)和第五代低功率DDR(「LPDDR5」)等的DDR版本。DRAM 208例如可以是LPDDR4、LPDDR4X、LPDDR5、LPDDR5X等。儘管DRAM 208的結構和操作是本發明所屬領域中具有通常知識者所熟知的,但提供以下簡要描述作為背景。
DRAM 208可以包括兩個層級210,其可以被稱為Rank_0和Rank_1。由於兩個層級210彼此相同,因此以下描述適用於每個層級210。層級210包括兩個或更多(「M」)個儲存體212,其可以被稱為Bank_0至Bank_M-1。每個儲存體212被組織為單元或儲存位置的二維陣列213,其中陣列213中的儲存位置經由選擇行和列來存取。為了說明,在圖2中以交叉影線突出顯示示例性行和示例性列。此外,儘管位了清楚起見在圖2中未圖示,但DRAM 208亦可以被組織成儲存體組。例如,每個儲存體210可以由四個儲存體組(未圖示)組成,並且那些儲存體組中的每一個儲存體組可以由四個儲存體組成。在這樣的實施例中,DRAM 208因此由32個不同的(亦即,可單獨定址的)儲存體212組成。儘管在本文描述的示例性實施例中,DRAM 208具有兩個層級210,每個層級具有四個儲存體組,並且四個儲存體組之每一者儲存體組具有四個儲存體212,但在其他實施例中,這樣的DRAM可以以任何其他方式組織,包括比示例性實施例中更多或更少的層級、儲存體、儲存體組等。
由記憶體控制器206用來存取DRAM 208的實體位址可以包括行位址、列位址、儲存體組位址和儲存體位址。此外,儘管為了清楚起見未圖示,但回應於由記憶體控制器206提供的層級位址(例如,包含於讀取或寫入命令中的晶片選擇位元),層級位址解碼邏輯可以選擇層級210之一。儘管為了清楚起見同樣未圖示,但回應於由記憶體控制器206提供的儲存體位址,儲存體位址解碼邏輯可以選擇所選層級210的所選儲存體組中的儲存體212之一。回應於由記憶體控制器206提供的行位址,行位址解碼器214可以選擇在所選層級210中的所選儲存體組的所選儲存體212中的行之一。類似地,回應於由記憶體控制器206提供的列位址,列位址解碼器216可以選擇在所選層級210中所選儲存體組的所選儲存體212中的列之一。
每個層級210可以具有用於緩衝讀取資料的讀取鎖存器218和用於緩衝寫入資料的寫入鎖存器220。每個層級210亦可以具有輸入/輸出(「I/O」)邏輯222,該邏輯222被配置為從和向所選記憶體位置引導讀取和寫入資料。
每個儲存體212可以具有行緩衝器224。行緩衝器224儲存所選行(亦稱為「頁面」)的內容。在寫入或讀取之前,必須選擇或「打開」行。一旦行被打開,DRAM 208就可以回應於讀取或寫入命令從行緩衝器224中的任意數量的列讀取或寫入。在讀取或寫入命令之後,在記憶體控制器206和DRAM 208之間以被稱為「短脈衝」的單位序列傳輸資料,例如可以是每條資料訊號線8位元。在寫入或讀取行緩衝器224之後,行必須被恢復或「關閉」。
對已經打開的行的讀取或寫入事務稱為「頁面命中」。對未打開(因此需要打開)的行的讀取或寫入事務稱為「頁面未命中」。頁面未命中會比頁面命中產生更大的延時。對同一打開的行執行多個順序事務(即順序頁面命中)而不是關閉一行並打開另一行是可取的,因為它減少了延時。此外,定向到同一儲存體的順序事務會比定向到不同儲存體的順序事務產生更多的延時。在儲存體組和儲存體中的DRAM 208的結構或組織使得DRAM控制器206能夠發起對一個儲存體中的行的存取,同時等待對另一儲存體中的行的先前存取完成。這種時間重疊有助於最小化事務延時。DRAM控制器206可以採用傳統的儲存體散列演算法來説明隨機化其對要存取的儲存體的選擇,使得循序存取被定向到同一儲存體的可能性很小。這種隨機化效應通常被稱為增加儲存體及/或儲存體組「擴散」。DRAM控制器206可以採用其他演算法來嘗試減少其他延時源,例如讀取到寫入切換、寫入到讀取切換或層級到層級切換。快取記憶體系統204可以包括如下所述的特徵,其可以進一步增加儲存體擴散、增加頁面命中率以及減少讀取到寫入、寫入到讀取或層級到層級的切換,目標是進一步減少延時。
如圖3所示,可以提供用於控制資料快取記憶體的各態樣的系統300。系統300可以是上述系統100(圖1)的實例。系統300可以被配置為以上面關於圖1-2描述的方式從客戶端設備(圖3中未圖示)接收指向DRAM(圖3中未圖示)的事務(「txn」)請求。系統300可以包括擦洗器302。擦洗器302可以包括複數個佇列304。佇列304可以是上述資料儲存結構102(圖1)的實例。如下文進一步描述的,佇列304可以以對應於DRAM的組織的方式組織。例如,每個佇列304可以對應於DRAM的一個儲存體。
系統300亦可以包括快取記憶體資料(或「有效載荷」)記憶體306。快取記憶體資料記憶體306可被配置為儲存(亦即,高速緩衝)作為DRAM事務請求的主體的資料。儲存在快取記憶體資料記憶體306中的資料可以被稱為快取記憶體資料。資料可以以通常稱為快取記憶體行的單位,被儲存在快取記憶體資料記憶體306中。快取記憶體資料記憶體306可以被組織為組關聯快取記憶體。儘管本發明所屬領域中具有通常知識者很好地理解組關聯快取記憶體,但提供以下簡要描述作為背景。
組關聯快取記憶體可使用通常稱為「組(set)」和「路(way)」的位址部分來定址。在概念上,組是快取記憶體中的行。每個DRAM位址映射到組之一。「N路組關聯快取記憶體」由一些(N個)路組成,每個DRAM位址可以映射到(或選擇)組中的N路中的任何一路。本文對檢視標籤的引用是指(例如,從下文描述的標籤記憶體310中)讀取所有N路的內容,並且檢查每路的標籤以及每路的有效標誌以決定在組的一個路中發生快取記憶體命中。一個路中的命中意味著資料被快取記憶體在與該路相關聯的位置(例如,在快取記憶體資料記憶體306中)。快取記憶體資料記憶體306可以在靜態RAM(「SRAM」)中實現。
系統300亦可以包括標籤處理器308,其可以是上述快取記憶體控制器系統104(圖1)或其一部分的實例。儘管為了清楚起見在圖3中未圖示,但標籤處理器308可以包括處理器(例如,可經由軟體或韌體配置)或可配置以提供下述功能的其他邏輯(例如,有限狀態機等)。如下文進一步描述,當作為寫入請求的主體的資料被儲存在快取記憶體資料記憶體306中(在快取記憶體位址處)但尚未寫入DRAM時,亦即,快取記憶體資料是「髒的」,標籤處理器308可以將髒資料的快取記憶體位址儲存在所選的一個佇列304中。換句話說,佇列304可以用於儲存髒快取記憶體行的快取記憶體位址(例如,組和路)。對在佇列304中「註冊」的快取記憶體行的引用意味著快取記憶體資料儲存在快取記憶體資料記憶體306中的快取記憶體位址被儲存在佇列304中。例如基於哪個DRAM儲存體對應於與寫入請求相關聯的目標記憶體位址,來選擇儲存該資料(亦即,快取記憶體位址)的佇列304。儘管在圖3所示的示例性實施例中,標籤處理器308使用佇列304來儲存髒快取記憶體行的快取記憶體位址,但在其他實施例(未圖示)中,這樣的佇列可以用於儲存與事務請求相關聯的其他類型的資訊或資料。
系統300可以包括標籤記憶體310。標籤記憶體310可以被配置為儲存與快取記憶體資料相關聯的標籤。如本發明所屬領域中具有通常知識者所理解的,標籤可以從記憶體事務請求中的目標位址的一部分匯出,並且可以用於辨識快取記憶體資料。儲存在標籤記憶體310之每一者標籤可以辨識儲存在快取記憶體資料記憶體306中的一個快取記憶體行。標籤記憶體310可以在SRAM中實現。由於定址高速緩衝記憶體(例如,經由組和路)、使用儲存的標籤來辨識快取記憶體資料以及其他這樣的資料快取記憶體原理是本發明所屬領域中具有通常知識者所熟知的,因此本文不進一步詳細描述這些態樣。
標籤記憶體310可以被配置為不僅儲存標籤本身而且亦儲存與標籤相關聯的資訊。這樣的資訊可以包括與每個標籤相關聯的一或多個標誌,這些標誌可以指示由標籤辨識的快取記憶體行的各種狀態。例如,有效標誌可以指示由標籤辨識的快取記憶體行是有效的(亦即,有效標誌為真)還是無效的(亦即,有效標誌為假)。髒標誌可以指示由標籤辨識的快取記憶體行是髒的(即髒標誌為真)還是乾淨的(即髒標誌為假)。可清潔標誌可以指示由標籤辨識的快取記憶體行是在佇列304中註冊(亦即,可清潔標誌為真)還是未在佇列304中註冊(亦即,可清潔標誌為假)。陳舊標誌可以指示由標籤辨識的快取記憶體行是比預定閾值年齡大(亦即,陳舊標誌為真)還是沒有比閾值年齡大(亦即,陳舊標誌為假)。下文描述了與快取記憶體行年齡有關的各態樣。
系統300亦可以包括仲裁器312,其在所示實施例中可以包含於擦洗器302中。然而,更通常,仲裁器312可以是上述快取記憶體控制器系統104(圖1)的涉及控制將髒快取記憶體行驅逐到DRAM的部分的實例。由於仲裁器312可以包括基於DRAM的層級、儲存體組和儲存體組織的選擇邏輯(未單獨示出),因此仲裁器312可以被稱為具有「DDR感知」特性。儘管為了清楚起見圖3中未圖示,但仲裁器312的選擇邏輯可以包括處理器(例如,可經由軟體或韌體配置)或根據選擇演算法或方法(例如下文描述的示例性方法)可配置的其他邏輯(例如,有限狀態機等)。如下文進一步描述的,基於這樣的選擇方法,仲裁器312可以從佇列304中進行選擇。所選的佇列304用於控制將哪些髒快取記憶體行從快取記憶體資料記憶體306驅逐到DRAM。系統300可以包括快取記憶體傳輸量處理器314,其可以控制從快取記憶體資料記憶體306中傳輸被驅逐的快取記憶體行以及其他功能。由仲裁器312提供的結果或輸出(辨識要驅逐或清理的快取記憶體行)可以稱為清理事務請求。標籤處理器308可以將清理事務請求引導到快取記憶體傳輸量處理器314。記憶體控制器(例如,如上面關於圖2所描述的)可以從快取記憶體傳輸量處理器314接收被驅逐的快取記憶體行資料,並且控制將資料最終寫入DRAM的方式。
系統300亦可以包括事務緩衝器316,其被配置為接收和緩衝(例如,在事務池中)來自客戶端設備(圖3中未圖示)的傳入寫入請求。系統300亦可以包括輸入仲裁器318,其被配置為從可以在緩衝器316中的任何事務和可以由仲裁器312提供的任何清理事務中進行選擇,並將所選的事務請求提供給標籤處理器308。輸入仲裁器318可以將選擇基於例如包括以下的因素:與每個事務相關聯的優先順序、與每個事務請求相關聯的年齡(例如,寫入事務請求已在事務緩衝器316中的時長)或其他因素。
由系統300接收的傳入事務請求不僅可以包括目標位址、資料、長度等,而且亦可以包括額外資訊。額外資訊可以包括快取記憶體「提示」。客戶端可以在寫入請求中包括快取記憶體提示,以指示例如客戶端是否優選事務被高速緩衝(「寫入分配」提示)亦是優選事務被傳遞經由系統300而不進行高速緩衝(「寫入無分配」)提示。事務請求亦可以包括辨識子快取記憶體的指示。儘管為了清楚起見圖3中未圖示,系統300可以包括多個子快取記憶體,並且不同的子快取記憶體可以對應於其中針對一個子快取記憶體的事務相對於針對另一子快取記憶體的事務被處理的不同的優先順序。
需要注意的是,圖3中的箭頭指示與寫入事務的請求相關態樣有關的流程;為了清楚起見,與回應相關的態樣(例如,與回應於請求的資料返回流)未由圖3中的箭頭指示。另外,除了被配置為以本文描述的方式處理寫入請求之外,系統300亦可以被配置成處理讀取請求。系統300可以被配置為以任何方式處理讀取請求,包括以傳統方式。亦應理解,圖3中的箭頭指示以概念方式表示資訊流,並不意欲表示具體的實體互連,例如具體的訊號線、匯流排等。
如圖4所示,擦洗器結構402可以包括鏈表佇列(「LLQ」)404和選擇邏輯406。LLQ 404可以是上面關於圖3描述的佇列304的實例和以上關於圖1描述的資料儲存結構102的實例。LLQ 404可以以對應於DRAM(未圖示)的層級、儲存體組和儲存體組織的方式來組織。因此,在DRAM具有兩個層級(Rank_0和Rank_1)的實施例中,每個層級由四個儲存體組(BG0、BG1、BG2和BG3)組成,每個儲存體組由四個儲存體組成(總共32個儲存體),LLQ 404可以被組織為對應於層級之一(例如Rank_0)的16個儲存體的16個LLQ 404的第一子群組404A和對應於另一層級(例如Rank_1)的16個儲存體的16個LLQ 404的第二子群組404B。
在每個子群組404A和404B中,LLQ 404可以由儲存體和儲存體組來組織。根據示例性模式或組織,儲存體組可以經由每個儲存體從一個LLQ 404遞增到下一個:每個子群組404A和404B中的第一LLQ 404可以對應於BG_0中的Bank_0;每個子群組404A和404B中的第二LLQ 404可以對應於BG_1中的Bank_0;每個子群組404A和404B中的第三LLQ 404可以對應於BG_2中的Bank_0;及每個子群組404A和404B中的第四LLQ 404可以對應於BG_3中的Bank_0。用下一儲存體(即Bank_1)繼續這種模式或組織:每個子群組404A和404B中的第五LLQ 404可以對應於BG_0中的Bank_1;每個子群組404A和404B中的第六LLQ 404可以對應於BG_1中的Bank_1;每個子群組404A和404B中的第七LLQ 404可以對應於BG_2中的Bank_1;及每個子群組404A和404B中的第八LLQ 404可以對應於BG_3中的Bank_1。這種模式或組織可能會持續到Bank_2,隨後是Bank_3。根據該模式或組織,第16個LLQ 404對應於BG3中的Bank_3。
每個LLQ 404可以被實現為鏈表(資料結構)。儘管下文描述了示例性鏈表結構,但可以注意到,每個LLQ 404之每一者條目辨識髒快取記憶體行。每個LLQ 404中的頭條目辨識在該LLQ 404中的下一條目成為候選之前可能是用於清理(亦即,驅逐)的候選的髒快取記憶體行。
選擇邏輯406可用於從候選髒快取記憶體行中選擇快取記憶體行以進行清理。亦即,選擇邏輯406可用於從32個LLQ 404中選擇一個LLQ 404,由此選擇或辨識在該所選佇列(LLQ)404頭部的髒快取記憶體行。應該理解,選擇邏輯406在圖4中以概念方式描述,並且可以包括例如處理器(例如,可由軟體或韌體配置)、有限狀態機或其他邏輯。選擇邏輯406可以包含於上面關於圖3描述的仲裁器312中。
在概念上,選擇邏輯406可以包括:第一佇列選擇邏輯408A,其被配置為從對應於Rank_0的儲存體的第一子群組404A的16個LLQ 404中選擇LLQ 404;及第二佇列選擇邏輯408B,其被配置為從對應於Rank_1的儲存體的第二子群組404B的16個LLQ 404中選擇LLQ 404。在概念上,由第一和第二佇列選擇邏輯408A和408B產生的結果可以分別操作多工器或隊欄選取器414A和414B。第一和第二佇列選擇邏輯408A和408B中的每一個可以獨立於彼此但根據相同的佇列選擇方法操作,這將在下文描述。選擇邏輯406亦可在概念上包括:層級選擇邏輯410,其被配置為在由第一佇列選擇邏輯408A選擇的LLQ 404和由第二佇列選擇邏輯408B選擇的LLQ 404之間進行選擇層級。層級選擇邏輯410可以根據下文描述的層級選擇方法來操作。在概念上,由層級選擇邏輯410產生的結果可以操作多工器或層級選擇器416。層級選擇器416的輸出辨識一個所選LLQ 404。下文描述的又一方法可以控制選擇邏輯406是輸出一個所選LLQ 404的指示(亦即,關於快取記憶體行已被標識為用於驅逐的指示)還是不輸出選擇(亦即,關於當時沒有快取記憶體行已被標識為用於驅逐的指示)。控制層級選擇器416是否輸出對所選LLQ 404的指示(以及因此標識快取記憶體行的指示)的方法可以稱為擦洗器啟用或擦洗器啟動方法。層級在圖4中經由2輸入邏輯與412概念性地代表選擇性地啟用層級選擇器416的輸出,該2輸入邏輯與412具有表示所選LLQ 404的指示的一個輸入和表示經由擦洗器啟用方法的控制決定的另一輸入。
再次簡要參考圖3,選擇邏輯406的輸出形成擦洗器輸出320。擦洗器輸出320被提供給輸入仲裁器318。如前述,若快取記憶體行已被辨識用於驅逐,則輸入仲裁器318可以選擇繼續驅逐辨識出的快取記憶體行。若此時沒有辨識出快取記憶體行用於驅逐,則輸入仲裁器318可以從事務緩衝器316中選擇傳入事務。輸入仲裁器318可以根據優先順序選擇由擦洗器輸出320提供的清理請求或來自事務緩衝器316的事務。在一個實施例中,由擦洗器輸出320提供的清理請求可能具有最低優先順序,並且僅當事務緩衝器316中沒有未決事務時才被服務。在另一實施例中,由擦洗器輸出320提供的清理請求的優先順序可以根據擦洗器LLQ的填充度動態改變。
在圖5中,以流程圖的形式圖示了用於控制資料快取記憶體的方法500。例如,方法500可以表示系統300(圖3)的上述操作的各態樣。儘管圖5中的箭頭(以及圖8-14)指示了各個框之間的次序,但應該理解的是,以為了便於描述和引導讀者經由該方法的次序圖示了各框,並且由框指示的操作或動作不限於該次序。相反,在其他示例性方法中,這樣的動作可以以各種次序執行或以其他方式發生。此外,一些動作可以與其他動作同時發生。例如,關於圖5,與接收事務、在佇列中儲存資訊等有關的動作可以和與從佇列中進行選擇和使用儲存在所選佇列中的資訊來驅逐快取記憶體資料有關的動作基本同時發生。關於圖3,標籤處理器308和相關部件的操作可以與擦洗器302的操作基本同時發生。此外,在其他示例性方法中,可以省略一些動作或操作或與其他動作組合。
如方塊502所示,可以接收寫入請求。寫入請求可以由例如標籤處理器(圖3)接收。如方塊504所示,與寫入請求相關聯的資料可以被快取記憶體(例如,在上文關於圖3描述的快取記憶體資料記憶體306中的位置中)。
如方塊506所示,可以基於對應於寫入請求的DRAM儲存體來選擇佇列,並且可以將與寫入請求相關聯的資訊儲存在所選佇列中。例如,鏈表LLQ 404(圖4)可以由擦洗器302(圖3)選擇,並且指示快取記憶體資料記憶體306(圖3)中的位置(其中與寫入請求相關聯的資料已被快取記憶體)的快取記憶體位址資訊(例如,組和路)可以儲存在所選LLQ 404(圖4)中,如上面關於圖4所描述的。
儘管為了清楚起見未圖示,但以上關於方塊502-506描述的動作可以基本上連續地執行,獨立於其他動作。因此,可以在接收到額外寫入請求並且與額外寫入請求相關聯的資訊儲存在佇列中時填充LLQ 404(圖4)。在本文描述的示例性實施例中,與寫入請求相關聯的資訊不僅可以包括快取記憶體位址資訊(例如,路和組),亦可以包括頁面命中指示,如下所述。
在圖6中,圖示可以是上述資料儲存結構102(圖1)、佇列304(圖3)或LLQ 404(圖4)中的每一個的實例的鏈表佇列或LLQ 600。LLQ 600可以包括從第一個或「尾部」條目602A到最後一個或「頭部」條目602N的任意數量的條目602(或有時稱為鏈表「節點」)。由於鏈表原理是本發明所屬領域中具有通常知識者所熟知的,因此為清楚起見圖6中未圖示連結節點的指標等細節。每個條目602可以包括快取記憶體位址資訊(例如,路和組)和頁面命中資訊(例如,位元)。頁面命中位元指示條目602是否是相對於LLQ 600中的先前條目的頁面命中。
再次參考圖3,標籤處理器308對寫入請求的處理可以包括控制(例如,經由快取記憶體傳輸量處理器314)將作為寫入請求的主體的資料(有效載荷)儲存在快取記憶體資料記憶體306中。由標籤處理器308對寫入請求的處理亦可以包括從寫入請求的目標位址匯出標籤、路和組。如本發明所屬領域中具有通常知識者所理解的,標籤處理器308可以以一般方式匯出該快取記憶體位址資訊。路和組決定了儲存或快取記憶體資料的快取記憶體資料記憶體306中的位置(亦即,快取記憶體行)。標籤可以儲存在標籤記憶體360中,並且與後續事務請求(例如,讀取請求)的目標位址一起使用,以唯一地辨識後續事務請求是否指向相同的快取記憶體資料。
當作為寫入請求的主體的資料儲存在快取記憶體資料記憶體306中的位置時,擦洗器302(或替代地,標籤處理器308)亦可以決定寫入請求是否指向相同的DRAM頁面,亦即,在相同層級中的相同儲存體組中的相同儲存體中的相同行,作為寫入請求所指向的佇列304的尾部所指示的DRAM頁面。若兩個連續的寫入請求指向相同的DRAM頁面,則第二寫入請求可以稱為相對於第一寫入請求的頁面命中,因為對那個DRAM行的對應存取可能連續發生,而DRAM行保持打開。
基於目標位址,擦洗器302(或替代地,標籤處理器308)可以決定DRAM行、儲存體、儲存體組和層級位址。當作為寫入請求的主體的資料儲存在快取記憶體資料記憶體306中的位置時,標籤處理器308可以向擦洗器302提供一起指示該位置的路和組。擦洗器302可以選擇佇列304中的一個對應佇列並添加新條目(或關於圖6,選擇LLQ 602之一並添加新的(尾部)條目或節點)。擦洗器302可以在新條目中儲存路和組以及指示以下內容的位元:位於該路和組處的快取記憶體行資料是否是相對於先前條目的頁面命中。
返回圖5,方法500的另一部分可以涉及控制向DRAM的資料傳輸。在與系統300(圖3)的操作有關的實施例中,可以使用佇列304來控制從快取記憶體資料記憶體306到DRAM的資料傳輸。
如方塊508所示,控制資料的傳輸可以包括在佇列304中進行選擇。例如,再次參考圖3,仲裁器312可以從佇列304中進行選擇。仲裁器312可以以重複或反覆運算的方式選擇佇列304,亦即,在選擇前一佇列304之後選擇每個連續的或下一個佇列304。仲裁器312可以使佇列選擇部分地基於從鏈表佇列的頭部條目獲得的資訊,例如頁面命中(位元)資訊。注意,本文對選擇佇列304的引用亦指選擇佇列304中的條目,因此進一步指選擇由該條目辨識的髒快取記憶體行。仲裁器312可以基於例如以下中的一項或多項以這種方式選擇佇列304:序列;頁面命中資訊;快取記憶體髒度的閾值級別;所選的層級;等。仲裁器312的操作的這些態樣將在下文關於圖11-13進行描述。
如方塊510(圖5)所示,方法500可以包括驅逐由所選佇列指示的快取記憶體資料。例如,佇列304(圖3)可以由仲裁器312選擇。在快取記憶體資料記憶體306中由所選(以下亦稱為「獲勝者」)佇列條目辨識的位置中的髒快取記憶體行可以被驅逐。擦洗器輸出320可以向標籤處理器308辨識所選髒快取記憶體行(經由輸入仲裁器318)。標籤處理器308又可以向快取記憶體傳輸量處理器314辨識所選髒快取記憶體行。快取記憶體傳輸量處理器314隨後可以控制將髒快取記憶體行傳輸出快取記憶體資料記憶體306。
如圖7所示,標籤處理器702可以包括與儲存或快取記憶體作為寫入請求的主體的資料有關的特徵。標籤處理器702可以是上述標籤處理器308(圖3)的實例。在所示實例中,這樣的特徵可以包括寫入提示改變邏輯704、陳舊邏輯706、受害者搜尋邏輯708以及標籤檢視和可清理行搜尋邏輯710。
寫入提示改變邏輯704涉及這樣的特徵:經由該特徵,客戶端的寫入請求可以包括快取記憶體「提示」,該快取記憶體「提示」指示與寫入請求相關聯的資料是被快取記憶體(「分配」提示)還是被傳遞經由系統300而沒有進行高速緩衝(「無分配」)提示。在大多數情況下,示例性實施例可以經由將「無分配」提示改變為「分配」來解決客戶端對快取記憶體提示的使用。
如圖8所示,上述寫入提示改變邏輯704(圖7)可以被配置為控制方法800。傳入事務(例如,來自仲裁器318(圖3))可以被提供給寫入提示改變邏輯704並按以下方式處理。
如方塊802所示,可以決定傳入事務請求是否是針對寫入事務的。本文描述的示例性實施例涉及寫入事務。然而,本文描述的實施例的各態樣可以在其他實施例中應用於讀取事務。若決定(方塊802)傳入事務不是寫入請求,則不執行方法800的其餘部分。
若決定(方塊802)傳入事務是寫入請求,則可以決定所選佇列(例如,上面關於圖4描述的LLQ 404之一)是否已滿或以其他方式在LLQ 404中沒有剩餘空間來儲存新條目,如方塊804所示。在本文描述的示例性實施例中,每個佇列可能沒有預定的大小或容量,並且新條目可以僅在LLQ 404使用的儲存容量未滿時添加到佇列中。然而,在其他實施例中,佇列可以具有預定大小。如前述,可以基於例如哪個DRAM儲存體對應於與事務請求相關聯的目標記憶體位址來選擇佇列。若決定(方塊804)所選佇列已滿,則不執行方法800的其餘部分。
若決定(方塊804)所選佇列有剩餘空間來儲存新條目,則可以決定寫入請求是否包括「非分配」快取記憶體提示,如方塊806所示。若決定(方塊806)寫入請求不包括「非分配」快取記憶體提示,則不執行方法800的其餘部分。例如,若寫入請求包括「分配」快取記憶體提示,則方法800不會改變該事務的快取記憶體提示,因此提示保持為「分配」。
若決定(方塊806)寫入請求包括「非分配」快取記憶體提示,則該快取記憶體提示可以改變為「分配」。然而,「非分配」快取記憶體提示是否改變為「分配」可以取決於寫入請求所指向的子快取記憶體的屬性。如前述,事務請求可以包括用於從快取記憶體系統可以被劃分成的多個子快取記憶體中辨識子快取記憶體的指示。一個這樣的子快取記憶體可稱為寫入子快取記憶體或「WRSC」,可用於高速緩衝其位置在LLQ 404中註冊的有效載荷。每個子快取記憶體可具有本文稱為「Write_Buffer」屬性的屬性,並且一些子快取記憶體的Write_Buffer屬性可以與其他子快取記憶體的Write_Buffer屬性不同。Write_Buffer屬性可以具有以下兩個值之一:真或假。如方塊808所示,可以決定寫入請求所指向的子快取記憶體的Write_Buffer屬性是否為真。若決定Write_Buffer屬性為真,則可以將具有「非分配」提示的寫入請求分配給WRSC子快取記憶體,並且可以將相關聯資訊註冊在(亦即,儲存在)佇列中,如前述。若決定(方塊808)寫入請求所指向的子快取記憶體的Write_Buffer屬性不為真,即為假,則在(圖8未圖示)快取記憶體的資料陳舊並由標籤檢視和可清理行搜尋邏輯710(圖7)選擇時的稍後時間點,將具有「分配」提示的寫入請求在所選佇列中註冊。下文描述一種可以用「陳舊」指示來標記快取記憶體資料的方法,稱為「陳舊」方法。若決定(方塊808)Write_Buffer屬性為真,則該寫入請求的「非分配」快取記憶體提示可以被替換為「分配」快取記憶體提示,如方塊810所示。亦如方塊810所示,寫入事務指向的子快取記憶體的指示可以用寫入子快取記憶體的指示替換。
再次簡要參考圖7,標籤檢視和可清理行搜尋邏輯710涉及在寫入提示改變邏輯704已經執行上述方法800(圖8)之後進一步處理寫入請求。如下所述,這種處理可以包括檢視與寫入請求相關聯的標籤、搜尋其中儲存或快取記憶體與寫入請求相關聯的資料的位置等。
如圖9A-9B所示,標籤檢視和可清理行搜尋邏輯710(圖7)可以被配置為控制方法900。替代地或補充地,擦洗器302(圖3)可以被配置為控制方法900的一部分。
儘管在圖9A-9B中未圖示,但在執行標籤檢視之前(如下該),陳舊邏輯706(圖7)可以操作以檢查由標籤檢視操作正存取的集合之每一者快取記憶體行的年齡。若快取記憶體行的年齡超過預定閾值,則可以將陳舊標誌設置為真狀態。可以經由將當前時間與在快取記憶體中分配快取記憶體行時與該快取記憶體行相關聯的時間戳記進行比較,來計算快取記憶體行的年齡。每個子快取記憶體可以具有自己的當前時間,該時間在該子快取記憶體之每一者新分配處進行。
如方塊902所示,可以決定寫入請求是否導致快取記憶體命中。(注意,「快取記憶體命中」與上述DRAM「頁面命中」不同。)可以以一般方式決定寫入請求是否導致快取記憶體命中。例如,如本發明所屬領域中具有通常知識者所理解的,對於N路組關聯快取記憶體,每組包含N路或關聯度。每路包括資料區塊、標籤以及上述的有效標誌、髒標誌、可清理標誌和陳舊標誌。可以根據與寫入請求相關聯的目標位址的一部分來決定組和路。在示例性實施例中,隨後可以從標籤記憶體310(圖3)中讀取標籤和相關聯的標誌。(在示例性實施例中,快取記憶體資料(行)可以單獨儲存在快取記憶體資料記憶體306中。)對於組中的每路,將從標籤記憶體310讀取的標籤與寫入請求的目標位址的標籤位元進行比較,若它們匹配,並且若有效標誌為真,則決定寫入請求導致快取記憶體命中。注意,上面提到的目標位址解碼亦可以辨識寫入請求所指向的DRAM層級、儲存體組和儲存體,從而辨識或選擇LLQ 404之一(在本文中可以稱為LLQ 404或所選LLQ 404)。
若決定(方塊902)寫入請求沒有導致快取記憶體命中,則可以執行進一步處理以決定快取記憶體資料記憶體306(圖3)中的資料可以儲存在其中的位置,並向LLQ 404添加指示該位置包含髒資料的條目。在該進一步處理之前,可以決定寫入請求是否包括「分配」快取記憶體提示,如方塊904所示。
若決定(方塊904)寫入請求包括「分配」快取記憶體提示,則可以執行受害者搜尋方法。方塊906指示執行下文進一步描述的受害者搜尋方法。執行受害者搜尋方法的結果可以是「受害者」快取記憶體行在快取記憶體資料記憶體306(圖3)中的位置。然而,受害者搜尋方法的另一可能結果可能是沒有找到受害者快取記憶體行。此外,受害者搜尋方法可能更喜歡選擇乾淨的受害者行以最小化髒行驅逐的發生,髒行驅逐的發生會污染與擦洗器操作連續的回寫的DRAM感知流。
如方塊908所示,可以決定是否找到了受害者快取記憶體行。若決定(方塊910)找到了受害者快取記憶體行,則可以為與寫入請求相關聯的資料分配該快取記憶體行。與寫入請求相關聯的資料因此儲存在快取記憶體資料記憶體306中分配的快取記憶體行中。此外,如下所述,可以更新標籤記憶體310,並且可以將條目添加到LLQ 404。將條目添加到LLQ 404可以取決於一些其他條件,其中之一是LLQ 404尚未滿,如方塊912所示。
返回參考方塊902,若決定寫入請求導致命中,則可以如方塊914所示決定命中是否在乾淨行上(亦即,髒標誌的狀態為假)。若決定命中在乾淨行上,則方法900可以返回到上述方塊912,其中可以決定LLQ 404是否已滿。若決定(方塊912)LLQ 404已滿,則方法900結束於對該寫入請求的處理,並且沒有條目被添加到LLQ 404。
若決定(方塊912)LLQ 404未滿,則可以決定另一種條件組合,如方塊916所示:快取記憶體行是髒的(亦即,髒標誌的狀態為真),並且快取記憶體行是可清理的(即可清理標誌的狀態為真),並且上述Write_Buffer屬性的狀態為真。如前述,為真的可清理標誌意味著快取記憶體行尚未在LLQ 404中註冊。
若上述條件的組合被決定(方塊916)為真,則可以將條目添加到LLQ 404,如方塊918所示。LLQ 404的新「頭部」(包括分配的快取記憶體行的組和路位址)可以被「推送」或添加到LLQ 404,有效地將先前作為頭部的條目置於新頭部之後。可以將新的頭部行資訊與前一頭部的行資訊進行比較以決定頁面命中標誌是否為真。頁面命中標誌亦被推送到佇列。與分配的快取記憶體行相關聯的標籤記憶體310中的位置中的可清理標誌可以設置為假狀態。已經以上述方式處理的寫入請求可以表示關於該寫入請求的方法900的結束。
然而,若根據上述方塊914決定快取記憶體命中不在乾淨行上,或者若根據上述方塊904決定快取記憶體提示不是「分配」,或者若根據上述方塊908決定沒有找到受害者快取記憶體行,或者若關於方塊916決定上述條件組合不為真,則方法900可以繼續(參見圖9B),如方塊920所示。
隨後,可以決定(方塊920)LLQ 404是否已滿。若決定LLQ 404已滿,則方法900結束於對該寫入請求的處理,並且沒有條目被添加到LLQ 404。
若決定(方塊920)LLQ 404未滿,則如方塊922所示,可以決定組是否包括具有以下條件組合的任何快取記憶體行:髒的、可清理的和陳舊的(亦即,髒、可清理和陳舊標誌皆為真)。若該條件組合被決定為真,則可以選擇那些快取記憶體行之一(例如,找到的第一個這樣的快取記憶體行)以添加到LLQ 404中的髒快取記憶體行的列表,如方塊924所示。返回到方塊918(圖9A),隨後可以將用於該快取記憶體行的條目添加到LLQ 404。
如圖10所示,「受害者搜尋」方法1000可以是由方塊906指示的上述方法900(圖9A)的子方法的實例。如方塊1002所示,可以決定是否存在組中的一或多個無效行(亦即,有效標誌為假)。若決定(方塊1002)組中有一或多個無效行,則可以選擇這些無效行之一作為受害者行,如方塊1004所示。若找到一個以上這樣的行,則可以根據方塊1004選擇找到的第一個這樣的行。
然而,若決定(方塊1002)組中沒有無效行,則可以決定在該組中是否存在一或多個乾淨的陳舊行(亦即,清理標誌和陳舊標誌為真),如方塊1006所示。若決定(方塊1006)該組中存在一或多個乾淨的陳舊行,則可以選擇那些乾淨的陳舊行之一作為受害者行,如方塊1008所示。若找到一個以上這樣的行,則可以根據方塊1008選擇找到的第一個這樣的行。應該理解,找到乾淨的陳舊行的可能性很高,因為擦洗器確保快取記憶體中低位準的髒行,並且陳舊程序確保了在每組中找到陳舊行的高概率。
然而,若決定(方塊1006)該組中沒有乾淨的陳舊行,則可以決定該組中是否存在一或多個髒的陳舊行,如方塊1010所示。若決定(方塊1010)該組中存在一或多個髒的陳舊行,則可以選擇彼等髒的陳舊行之一作為受害者行,如方塊1012所示。若發現一個以上此種行,則可以根據方塊1012選擇找到的第一個此種行。應該理解,選擇髒受害者將導致髒驅逐,並因此污染與擦洗器操作連續的寫回的DRAM感知流。
然而,若決定(方塊1010)該組中沒有乾淨的陳舊行,則可以決定該組中是否存在比傳入行優先順序低的一或多個乾淨行(亦即,正在處理的寫入請求的優先順序),如方塊1014所示。如前述,寫入請求的「優先順序」可以指寫入請求所指向的子快取記憶體的優先順序,因為每個子快取記憶體可以具有相對於其他子快取記憶體的預定優先順序。若決定(方塊1014)該組中存在比傳入行優先順序低的一或多個乾淨行,則可以選擇具有最低優先順序的那些行之一作為受害者行,如方塊1016所示。若兩個或兩個以上行均具有最低優先順序,則可以根據方塊1016選擇找到的第一個這樣的行。
然而,若決定(方塊1014)該組中沒有優先順序低於傳入行的乾淨行,則可以決定該組中是否存在比傳入行優先順序低的一或多個髒行,如方塊1018所示。若決定(方塊1018)該組中存在比傳入行優先順序低的一或多個髒行,則可以選擇這些行之一作為受害者行,如方塊1020所示。若找到多於一個這樣的行,則可以根據方塊1020選擇找到的第一個這樣的行。然而,若決定(方塊1018)在組中不存在比傳入行的優先順序低的乾淨行,則方法1000的結果可能是沒有找到受害者行。
替代的受害者搜尋方法(未圖示)可以類似於上述方法1000(圖10),除了從考慮作為受害者行候選中省略髒行之外。因此,在替代方法中,可以省略方塊1010、1012、1018和1020。亦即,方法流程可以從方塊1006中的「否」決定直接進行到方塊1014。
上述方法800(圖8)、900(圖9A-9B)和1000(圖10)涉及快取記憶體與傳入事務請求相關聯的資料以及在LLQ 404(圖4)上註冊髒快取記憶體行。方法800、900和1000因此亦可以代表以上關於方法500(圖5)的方塊502、504和506描述的處理的實例。
如圖11所示,以流程圖形式圖示了與使用LLQ 404(圖4)控制快取記憶體資料傳輸到DRAM有關的方法1100。方法1100可以代表上面關於方法500(圖5)的方塊508和510描述的處理的一部分。方法1100可以表示基於序列在子群組404A或404B(圖4)的LLQ 404中進行選擇的實例。方法1100可以控制佇列選擇邏輯408A和408B對圖4中概念性地表示的選擇。第一和第二佇列選擇邏輯408A和408B(圖4)可以彼此獨立地操作。換句話說,方法1100的兩個實例可以彼此獨立地和同時地操作,方法1100的第一實例控制由第一佇列選擇邏輯408A表示的選擇,方法1100的第二實例控制由第二佇列選擇邏輯408B表示的選擇。選擇邏輯406(圖4)可以被配置為控制方法1100的兩個實例。
如方塊1102所示,可以決定頁面命中列表計數(Page_Hit_List_Count)是否大於或等於預定閾值數量(LLQ_PH_TH)。頁面命中列表計數是其中頭部條目(頁面命中位元)指示頁面命中的LLQ 404(圖4)的數量。若決定(方塊1102)頁面命中列表計數大於或等於閾值數量,則可以決定在與「上一贏家」不同的儲存體組中是否存在具有指示頁面命中的頭部條目的一或多個LLQ 404(亦即,方法1100最近選擇的LLQ 404),如方塊1104所示。若因為方塊1104中的決定是在最初開始方法1100之後的第一次反覆運算而沒有「上一贏家」,則方塊1104中的決定可以預設為結果「是」。若決定(方塊1104)在與「上一贏家」不同的儲存體組中存在具有指示頁面命中的頭部條目的一或多個LLQ 404(或決定預設為「是」),則當前列表(Current_List)可能會遞增。方法1100維護記錄或指標,指向可以被稱為「當前列表」的列表或LLQ 404(圖4)之一。
遞增當前列表意味著序列中的下一LLQ 404變成新的當前列表。例如,若當前列表是BG0中Bank 0的LLQ 404,則序列中的下一列表是BG1中Bank 0的LLQ 404。換句話說,將BG0中Bank_0的LLQ 404稱為第一LLQ 404,並將BG3中Bank_3的LLQ 404稱為第16 LLQ 404,則列表可以從第一LLQ 404遞增到第二LLQ 404,以此類推,直到第16 LLQ 404。根據方塊1106執行的遞增是模16。亦即,若第16 LLQ 404(亦即,BG3中的Bank_3)是當前列表,則遞增當前列表意味著第一LLQ 404(即BG0中的Bank_0)成為新的當前列表。可以注意到,由方法1100表示的序列基於LLQ 404之間的輪詢序列。儘管傳統的輪詢序列將從每個LLQ 404前進到下一個而不考慮其他條件,但是方法1100表示基於頁面命中資訊的傳統輪詢序列的修改。
如方塊1108所示,在遞增當前列表之後,隨後可以決定當前列表(頭部條目)是否指示頁面命中並且該頁面命中是否在與上一贏家不同的儲存體組中。若決定當前列表指示頁面命中並且在與上一贏家不同的儲存體組中,則選擇當前列表,如方塊1110所示。參考圖4,辨識第一所選列表的資訊在概念上是第一選擇邏輯408A的輸出,辨識第二所選列表的資訊在概念上是第二選擇邏輯408B的輸出。方法流程以反覆運算方式從方塊1110返回到方塊1102。注意,對於方塊1104、1108等,所選列表亦成為新的「上一贏家」。
若決定(方塊1102)頁面命中列表計數不大於或等於閾值數量,亦即,頁面命中列表計數小於閾值數量,則可以為當前列表分配保存列表(Saved_List)的值。亦即,保存列表成為新的當前列表。若因為方法流程在方法1100的第一次反覆運算已經到達方塊1112而沒有「保存列表」,則保存列表可以與當前列表相同。亦即,當方法1100開始操作時,保存列表最初可以被設置為與當前列表相同的列表。此外,返回參考方塊1104,若決定在與上一贏家不同的儲存體組中沒有具有指示頁面命中的頭部條目的LLQ 404,則方法1100如上文關於方塊1112所描述的那樣繼續。
如方塊1114所示,在保存列表變成新的當前列表(方塊1112)之後,可以遞增當前列表。隨後,如框1116所示,隨後可以決定當前列表是否為空。若決定當前列表為空,則可以遞增當前列表(方塊1114)直到當前列表不為空。
如方塊1118所示,決定(方塊1116)當前列表不為空,則可以決定在與上一贏家不同的儲存體組中是否存在一或多個列表,或者當前列表是否在與上一贏家不同的儲存體組中。若決定與上一贏家不同的儲存體組中沒有列表,或者當前列表在與上一贏家不同的儲存體組中,則當前列表可以成為保存列表(亦即,為方法1100的下一反覆運算保存當前列表),如方塊1120所示。然而,若決定在與上一贏家不同的儲存體組中存在一或多個列表,並且當前列表不在與上一贏家不同的儲存體中,則可以遞增當前列表,並且方法1100可以如上文關於方塊1114之一般繼續。
如圖12所示,以流程圖形式圖示了與選擇層級有關的方法1200。方法1200可以表示上文關於方法500(圖5)的方塊508描述的處理的一部分。進一步參考圖4,選擇邏輯406可以被配置為控制方法1200。方法1200選擇層級(例如,在示例性實施例中的Rank_0或Rank_1)。層級選擇邏輯410可以根據方法1200來配置。層級選擇邏輯410因此被配置為選擇層級。在圖12中,在由方塊1202指示的決定開始時先前選擇的Rank_0和Rank_1中的任何一個被稱為「當前層級」(Current_Rank),而Rank_0和Rank_1中不是當前層級的任何一個被稱為「其他層級」(Other_Rank)。當前層級可以在經由方法1200的第一次反覆運算之前被初始化為任一層級。在圖12中,術語「列表擴展」(List_Spread)是指層級中不為空的LLQ 404的數量。術語「最小列表擴展」是指可以預先決定或固定的閾值數量。
如方塊1202所示,可以決定第一條件:當前層級的列表擴展是否小於最小列表擴展,並且其他層級的列表擴展是否大於或等於最小列表擴展。亦如方塊1202所示,可以決定第二條件:當前層級的列表擴展等於零並且另一層級的列表擴展不等於零。若決定第一或第二條件中的任一個為真,則當前列表可以改變或切換到另一層級,如方塊1204所示。亦即,當前層級變為另一層級,反之亦然。在方塊1204之後,方法1200可以返回方塊1202。然而,若決定(方塊1202)第一和第二條件皆不為真,則方法1200可以返回方塊1202而不改變當前層級。亦即,只要第一條件和第二條件皆不為真,則可以基本上連續地重複由方塊1202指示的決定而不改變層級。
再次簡要參考圖4,層級選擇邏輯410的輸出是辨識由第一佇列選擇邏輯408A選擇的Rank_0中的LLQ 404或由第二佇列選擇邏輯408B選擇的Rank_1中的LLQ 404的指示。在所示實施例中,層級選擇邏輯410的輸出僅在啟用選擇啟用邏輯412時成為選擇邏輯406的輸出(概念性地由圖4中的邏輯與符號表示)。若選擇啟用邏輯412未被啟用,則選擇邏輯406的輸出是關於當前沒有選擇LLQ 404的指示。在圖示的實施例中,以下關於圖13描述的擦洗器啟用或擦洗器啟動方法可以控制是否啟用選擇啟用邏輯412。然而,應該理解,這樣的擦洗器啟用或啟動方法可以啟用與以下有關的任何上述邏輯和方法:使用LLQ 404控制快取記憶體去往DRAM的資料傳輸;在佇列選擇邏輯408A和408B進行佇列選擇以及層級選擇邏輯410進行層級選擇之後,啟用選擇邏輯406的輸出作為緊接在輸出之前的最終動作,僅意欲作為實例。
方法1300(圖13)可以控制擦洗器302(圖3)是活動亦是不活動的,因為在示例性實施例中,選擇邏輯406(圖4)有效地控制擦洗器操作。當擦洗器302活動時,其辨識髒快取記憶體資料以驅逐到DRAM。驅逐(或「清理」)可減少快取記憶體髒度。方法1300嘗試調整擦洗器活動的位準以將快取記憶體髒度位準維持在高閾值(HT)和低閾值(LT)之間的範圍或訊窗內。該特徵在讀取和寫入傳輸量相互爭用記憶體控制器頻寬的操作實例中可能是有益的。例如,在PCD中,來自相機客戶端的寫入請傳輸量可能與來自顯示客戶端的讀取請求傳輸量爭用。
選擇邏輯406(圖4)或擦洗器302(圖3)的其他元件可以被配置為監視所有LLQ 404中的鏈表條目的總數作為快取記憶體髒度的量測。例如,在所有LLQ 404中的條目總數的計數可以在添加(或「推送」)條目時遞增,並且在結合驅逐移除(或「彈出」)條目時遞減。在方法1300中,這種快取記憶體髒度量測被稱為「LLQ位準」。
儘管為了清楚起見未在圖13中或本文的其他流程圖中示出初始化,但擦洗器302(圖3)可被初始化為非活動狀態。如方塊1302所示,可以決定LLQ位準是否大於或等於預定的最小閾值(亦即,「最低閾值」或RBT)。最小閾值可以根據經驗決定。例如,可以統計地決定若層級中用於驅逐的候選快取記憶體行的池保持在80個候選以上,則結果很可能是大約16的儲存體擴展。方塊1302指示的決定可以重複直到可以決定LLQ位準大於或等於最小閾值。若決定LLQ位準大於或等於最小閾值,則可以決定擦洗器是否活動,如方塊1304所示。若決定擦洗器不活動,則可以決定LLQ位準是否大於或等於高閾值或記憶體控制器中未決的讀取請求的數量(MCreadOT)是否小於預定或固定閾值(readOTthreshold),如方塊1306所示。若決定LLQ位準大於或等於高閾值或記憶體控制器中未決的讀取請求數量(MCreadOT)小於預定或固定閾值(readOTthreshold),則可以啟動或啟用擦洗器,如方塊1308所示。隨後方法1300可以返回到上述方塊1302。若決定LLQ位準不大於或等於高閾值並且在記憶體控制中未決的讀取請求的數量(MCreadOT)不小於預定的固定閾值(readOTthreshold),則方法1300可以返回到上述方塊1302。
若決定(方塊1304)擦洗器是活動的,則可以決定LLQ位準是否小於低閾值或在記憶體控制器中未決的讀取請求的數量(MCreadOT)是否大於或等於預定的固定閾值,如方塊1310所示。若決定LLQ位準小於低閾值或在記憶體控制器中未決的讀取請求的數量(MCreadOT)大於或等於預定或固定閾值(readOTthreshold),則可以禁用或去啟動擦洗器,如方塊1312所示。方法1300隨後可以返回上述方塊1302。若決定LLQ位準不小於低閾值並且在記憶體控制器中未決的讀取請求的數量(MCreadOT)不大於或等於預定或固定閾值(readOTthreshold),則方法1300可以返回到上述方塊1302。
上述方法500(圖5)、800(圖8)、900(圖9A-9B)、1000(圖10)、1100(圖11)和1200(圖12)與處理寫入請求有關,可以稱為「DRAM感知」,因為它們利用了DRAM的延時減少組織。可以為其他類型的記憶體事務的DRAM感知處理提供類似的方法。例如,為了處理讀取預取請求,可以儲存讀取預取請求,而不是儲存辨識在所選LLQ或其他資料儲存結構中的髒資料的快取記憶體位置的資訊(如上面關於例如方法500所描述的)。並且代替如上文關於例如方法500所描述的以DRAM感知次序驅逐由儲存在所選LLQ或其他資料儲存結構中的內容所辨識的快取記憶體行,預取請求可以以這種DRAM感知次序從LLQ或其他資料儲存結構(經由記憶體控制器)發送給DRAM。
如圖14所示,以流程圖形式描述了用於控制資料快取記憶體的方法1400。如方塊1402所示,方法1400可以包括接收DRAM事務請求。如方塊1404所示,該方法亦可以包括將與事務請求相關聯的資訊儲存在以對應於DRAM組織的方式組織的資料儲存結構中。如方塊1406所示,方法1400亦可以包括使用資料儲存結構控制去往DRAM的資料傳輸。
如圖15所示,可以在可攜式計算設備(「PCD」)1500中提供用於以DRAM感知方式控制資料快取記憶體的系統和方法的示例性實施例。為了清楚起見,圖15中未圖示資料匯流排或其他資料通訊互連。針對上下文描述了一些示例性互連,其中一些可以表示經由這樣的匯流排或互連的通訊。然而,應該理解,更通常,下文描述的各種部件可以經由一或多條匯流排或系統互連相互通訊。
PCD 1500可以包括SoC 1502。SoC 1502可以包括CPU 1504、GPU 1506、DSP 1507、類比訊號處理器1508或其他處理器。CPU 1504可以包括多個核心,例如第一核心1504A、第二核心1504B等,直至第N核心1504N。
顯示控制器1510和觸控式螢幕控制器1512可以耦合到CPU 1504。在SoC 1502外部的觸控式螢幕顯示器1514可以耦合到顯示控制器1510和觸控式螢幕控制器1512。PCD 1500亦可以包括耦合到CPU 1504的視訊解碼器1516。視訊放大器1518可以耦合到視訊解碼器1516和觸控式螢幕顯示器1514。視訊連接埠1520可以耦合到視訊放大器1518。通用序列匯流排(「USB」)控制器1522亦可以耦合到CPU 1504,並且USB埠1524可以耦合到USB控制器1522。使用者身份模組(「SIM」)卡1526亦可以耦合到CPU 1504。
一或多個記憶體可以耦合到CPU 1504。一或多個記憶體可以包括揮發性和非揮發性記憶體。揮發性記憶體的實例包括靜態隨機存取記憶體(「SRAM」)1528以及動態RAM(「DRAM」)1530和1531。這樣的記憶體可以在SoC 1502外部,例如DRAM 1530;或者在SoC 1502內部,例如DRAM 1531。耦合到CPU 1504的DRAM控制器1532可以控制向DRAM 1530和1531寫入資料和從DRAM 1530和1531讀取資料。在其他實施例中,這樣的DRAM控制器可以包含於處理器內,例如CPU 1504。DRAM 1530和1531可以是DRAM 208(圖2)的實例,或者更通常,是以上關於圖1-14所引用的任何DRAM的實例。可以是快取記憶體系統204(圖2)的實例的快取記憶體系統1533可以耦合到DRAM控制器1532。
身歷聲音訊編碼解碼器 1534可以耦合到類比訊號處理器1508。此外,音訊放大器1536可以耦合到身歷聲音訊編碼解碼器1534。第一和第二身歷聲揚聲器1538和1540可以分別耦合到音訊放大器1536。此外,麥克風放大器1542可以耦合到身歷聲音訊編碼解碼器1534,並且麥克風1544可以耦合到麥克風放大器1542。頻率調制(「FM」)無線電調諧器1546可以耦合到身歷聲音訊編碼解碼器1534。FM天線1548可以耦合到FM無線電調諧器1546。此外,身歷聲耳機1550可以耦合到身歷聲音訊編碼解碼器1534。可以耦合到CPU 1504的其他設備包括一或多個數位(例如,CCD或CMOS)相機1552。
數據機或RF收發機1554可以耦合到類比訊號處理器1508和CPU 1504。RF開關1556可以耦合到RF收發機1554和RF天線1558。此外,小鍵盤1560、具有麥克風的單聲道耳機1562和振動器設備1564可以耦合到類比訊號處理器1508。
SoC 1502可以具有一或多個內部或片上熱感測器1570A,並且可以耦合到一或多個外部或片外熱感測器1570B。類比數位轉換器(「ADC」)控制器1572可以將由熱感測器1570A和1570B產生的電壓降轉換為數位訊號。電源1574和電源管理積體電路(「PMIC」)1576可以向SoC 1502供電。
韌體或軟體可以儲存在任何上述記憶體中,例如DRAM 1530或1531、SRAM 1528等,或者可以儲存在可由在其上執行軟體或韌體的處理器硬體直接存取的本機存放區器中。這種韌體或軟體的執行可以控制任何上述方法的各態樣或配置任何上述系統的各態樣。任何這樣的記憶體或其中以電腦可讀形式儲存以供處理器硬體執行的韌體或軟體的其他非暫時性儲存媒體可以是「電腦可讀取媒體」的實例,該術語在專利詞典理解。
對於本發明所屬領域中熟習此項技術者而言,替代實施例將變得顯而易見。因此,儘管已經詳細示出和描述了所選態樣,但是應當理解,可以在其中進行各種替換和改變。
在以下編號的條款中描述了實現方式實例:
1、一種用於控制資料快取記憶體的系統,包括:
複數個資料儲存結構,其共同具有與動態隨機存取記憶體(DRAM)的結構組織對應的組織;及
快取記憶體控制器系統,其被配置為:
接收複數個事務請求;
將與事務請求相關聯的資料儲存在基於與每個事務請求相關聯的記憶體位址從該複數個資料儲存結構中選擇的一或多個資料儲存結構中;及
使用該複數個資料儲存結構控制去往DRAM的資料傳輸。
2、根據請求項1之系統,其中該複數個資料儲存結構中的每一個資料儲存結構是鏈表。
3、根據請求項1之系統,其中該複數個資料儲存結構中的每一個資料儲存結構對應於該DRAM的複數個儲存體中的一個儲存體。
4、根據請求項3之系統,其中該快取記憶體控制器系統被配置為:
接收具有相關聯記憶體位址的複數個DRAM寫入請求;及
將與複數個DRAM寫入請求相關聯的快取記憶體位址資訊儲存在基於與DRAM寫入請求相關聯的儲存體位址選擇的對應所選擇的資料儲存結構中。
5、根據請求項4之系統,其中該快取記憶體控制器系統被配置為經由被配置為進行如下操作而控制去往DRAM的資料傳輸:
在複數個資料儲存結構中進行選擇;及
將快取記憶體資料從由在所選擇的資料儲存結構中儲存的資料指示的在資料快取記憶體中的位置驅逐到DRAM。
6、根據請求項5之系統,其中該快取記憶體控制器系統被配置為基於序列在該複數個資料儲存結構中進行選擇。
7、根據請求項6之系統,其中該序列基於輪詢選擇。
8、根據請求項7之系統,其中該序列亦基於儲存在該資料儲存結構中的DRAM頁面命中資訊。
9、根據請求項5之系統,其中該快取記憶體控制器系統被配置為在與DRAM的第一層級相關聯的複數個資料儲存結構的第一子集和與DRAM的第二層級相關聯的複數個資料儲存結構的第二子集之間進行選擇。
10、根據請求項5之系統,其中快取記憶體控制器系統被配置為基於快取記憶體髒度的至少一個閾值位準來選擇性地啟用快取記憶體資料的驅逐。
11、一種用於控制資料快取記憶體的方法,包括:
接收複數個事務請求;
將與事務請求相關聯的資料儲存在基於與每個事務請求相關聯的記憶體位址從該複數個資料儲存結構中選擇的一或多個資料儲存結構中;及
使用該複數個資料儲存結構控制去往動態隨機存取記憶體(DRAM)的資料傳輸,其中複數個資料儲存結構共同具有與DRAM的結構組織對應的組織。
12、根據請求項11之方法,其中儲存與事務請求相關聯的資料包括:在複數個鏈表中儲存與事務請求相關聯的資料。
13、根據請求項11之方法,其中該複數個資料儲存結構中的每一個資料儲存結構對應於該DRAM的複數個儲存體中的一個儲存體。
14、根據請求項13之方法,其中:
接收複數個事務請求包括:接收具有相關聯記憶體位址的複數個DRAM寫入請求;及
儲存與事務請求相關聯的資料包括:將與複數個DRAM寫入請求相關聯的快取記憶體位址資訊儲存在基於與DRAM寫入請求相關聯的儲存體位址選擇的對應所選擇的資料儲存結構中。
15、根據請求項14之方法,其中控制去往DRAM的資料傳輸包括:
在複數個資料儲存結構中進行選擇;及
將快取記憶體資料從由在所選擇的資料儲存結構中儲存的資料指示的資料快取記憶體中的位置驅逐到DRAM。
16、根據請求項15之方法,其中基於序列在該複數個資料儲存結構中進行選擇。
17、根據請求項16之方法,其中該序列基於輪詢選擇。
18、根據請求項17之方法,其中該序列亦基於儲存在該資料儲存結構中的DRAM頁面命中資訊。
19、根據請求項15之方法,其中在複數個資料儲存結構中進行選擇包括:在與DRAM的第一層級相關聯的複數個資料儲存結構的第一子集和與DRAM的第二層級相關聯的複數個資料儲存結構的第二子集之間進行選擇。
20、根據請求項15之方法,其中控制去往DRAM的資料傳輸包括:基於快取記憶體髒度的至少一個閾值位準來選擇性地啟用快取記憶體資料的驅逐。
21、一種用於控制資料快取記憶體的系統,包括:
用於接收複數個事務請求的單元;
用於將與事務請求相關聯的資料儲存在基於與每個事務請求相關聯的記憶體位址從該複數個資料儲存結構中選擇的一或多個資料儲存結構中的單元;及
用於使用該複數個資料儲存結構控制去往動態隨機存取記憶體(DRAM)的資料傳輸的單元,其中複數個資料儲存結構共同具有與DRAM的結構組織對應的組織。
22、根據請求項21之系統,其中用於儲存與事務請求相關聯的資料的單元包括:用於在複數個鏈表中儲存與事務請求相關聯的資料的單元。
23、根據請求項21之系統,其中該複數個資料儲存結構中的每一個資料儲存結構對應於該DRAM的複數個儲存體中的一個儲存體。
24、根據請求項23之系統,其中:
用於接收複數個事務請求的單元包括:用於接收具有相關聯記憶體位址的複數個DRAM寫入請求的單元;及
用於儲存與事務請求相關聯的資料的單元包括:用於將與複數個DRAM寫入請求相關聯的快取記憶體位址資訊儲存在基於與DRAM寫入請求相關聯的儲存體位址選擇的對應所選擇的資料儲存結構中的單元。
25、根據請求項24之系統,其中用於控制去往DRAM的資料傳輸的單元包括:
用於在複數個資料儲存結構中進行選擇的單元;及
用於將快取記憶體資料從由在所選擇的資料儲存結構中儲存的資料指示的資料快取記憶體中的位置驅逐到DRAM的單元。
26、根據請求項25之系統,其中用於在該複數個資料儲存結構中進行選擇的單元基於序列。
27、根據請求項26之系統,其中該序列基於輪詢選擇。
28、根據請求項27之系統,其中該序列亦基於儲存在該資料儲存結構中的DRAM頁面命中資訊。
29、根據請求項25之系統,其中用於在複數個資料儲存結構中進行選擇的單元包括:用於在與DRAM的第一層級相關聯的複數個資料儲存結構的第一子集和與DRAM的第二層級相關聯的複數個資料儲存結構的第二子集之間進行選擇的單元。
30、根據請求項25之系統,其中用於控制去往DRAM的資料傳輸的單元包括:用於基於快取記憶體髒度的至少一個閾值位準來選擇性地啟用快取記憶體資料的驅逐的單元。
31、一種用於控制資料快取記憶體的電腦可讀取媒體,包括非暫時性電腦可讀取媒體,其上儲存有電腦可執行形式的指令,該等指令在由處理器執行時,將該處理器配置為:
接收複數個事務請求;
基於與每個事務請求相關聯的記憶體位址,將與事務請求相關聯的資料儲存在從該複數個資料儲存結構中選擇的一或多個資料儲存結構中;及
使用該複數個資料儲存結構控制去往動態隨機存取記憶體(DRAM)的資料傳輸,其中複數個資料儲存結構之每一者資料儲存結構對應於DRAM的複數個儲存體中的一個儲存體。
32、根據請求項31之電腦可讀取媒體,其中該處理器被配置為經由被配置為進行以下操作,來儲存與事務請求相關聯的資料:在複數個鏈表中儲存與事務請求相關聯的資料。
100:系統
102:資料儲存結構
104:快取記憶體控制器系統
200:系統
202:客戶端設
204:快取記憶體系統
206:記憶體控制器
208:DRAM
210:層級
212:儲存體
213:二維陣列
214:行位址解碼器
216:列位址解碼器
218:讀取鎖存器
220:寫入鎖存器
222:輸入/輸出(「I/O」)邏輯
224:行緩衝器
300:系統
302:擦洗器
304:佇列
306:快取記憶體資料記憶體
308:標籤處理器
310:標籤記憶體
312:仲裁器
314:快取記憶體傳輸量處理器
316:事務緩衝器
318:輸入仲裁器
320:擦洗器輸出
402:擦洗器結構
404:鏈表佇列(「LLQ」)
404A:第一子群組
404B:第二子群組
406:選擇邏輯
408A:第一佇列選擇邏輯
408B:第二佇列選擇邏輯
410:層級選擇邏輯
412:2輸入邏輯與
414A:多工器或隊欄選取器
414A:多工器或隊欄選取器
416:多工器或層級選擇器
500:方法
502:方塊
504:方塊
506:方塊
508:方塊
510:方塊
600:LLQ
602:條目
602A:第一個或「尾部」條目
602N:最後一個或「頭部」條目
702:標籤處理器
704:寫入提示改變邏輯
706:陳舊邏輯
708:受害者搜尋邏輯
710:標籤檢視和可清理行搜尋邏輯
800:方法
802:方塊
804:方塊
806:方塊
808:方塊
810:方塊
900:控制方法
902:方塊
904:方塊
906:方塊
908:方塊
910:方塊
912:方塊
914:方塊
916:方塊
918:方塊
920:方塊
922:方塊
924:方塊
1000:「受害者搜尋」方法
1002:方塊
1004:方塊
1006:方塊
1008:方塊
1010:方塊
1012:方塊
1014:方塊
1016:方塊
1018:方塊
1020:方塊
1100:方法
1102:方塊
1104:方塊
1106:方塊
1108:方塊
1110:方塊
1112:方塊
1114:方塊
1116:方塊
1118:方塊
1120:方塊
1200:方法
1202:方塊
1204:方塊
1300:方法
1302:方塊
1304:方塊
1306:方塊
1308:方塊
1310:方塊
1312:方塊
1400:方法
1402:方塊
1404:方塊
1406:方塊
1500:PCD
1502:SoC
1504:CPU
1504A:第一核心
1504B:第二核心
1504N:第N核心
1506:GPU
1507:DSP
1508:類比訊號處理器
1510:顯示控制器
1512:觸控式螢幕控制器
1514:觸控式螢幕顯示器
1516:視訊解碼器
1518:視訊放大器
1520:視訊連接埠
1522:USB控制器
1524:USB埠
1526:使用者身份模組(「SIM」)卡
1528:靜態隨機存取記憶體(「SRAM」)
1530:動態RAM(「DRAM」)
1531:動態RAM(「DRAM」)
1532:DRAM控制器1532
1533:快取記憶體系統
1534:身歷聲音訊編碼解碼器
1536:音訊放大器
1538:第一身歷聲揚聲器
1540:第二身歷聲揚聲器
1542:麥克風放大器
1544:麥克風
1546:頻率調制(「FM」)無線電調諧器
1548:FM天線
1550:身歷聲耳機
1552:數位相機
1554:數據機或RF收發機
1556:RF開關
1558:RF天線
1560:小鍵盤
1562:單聲道耳機
1564:振動器設備
1570A:熱感測器
1570B:熱感測器
1572:類比數位轉換器(「ADC」)控制器
1574:電源
1576:電源管理積體電路(「PMIC」)
在圖中,除非另有說明,否則相同的元件符號在各個視圖中指代相同的部件。對於具有字母字元名稱的元件符號(如「102A」或「102B」),字母字元名稱可以區分同一圖中存在的兩個相似部件或元件。當元件符號意欲涵蓋所有圖中具有相同元件符號的所有部件時,可以省略元件符號元的字母字元名稱。
圖1是示出根據示例性實施例的用於以DRAM感知方式控制資料快取記憶體的系統的方塊圖。
圖2是根據示例性實施例的包括用於以DRAM感知方式控制資料快取記憶體的系統的記憶體系統的方塊圖。
圖3是根據示例性實施例的用於以DRAM感知方式控制資料快取記憶體的系統的方塊圖。
圖4是根據示例性實施例的被配置用於控制將快取記憶體資料驅逐到DRAM的資料結構和選擇邏輯的方塊圖。
圖5是根據示例性實施例的用於控制與DRAM寫入事務請求相關聯的資料快取記憶體的各態樣的方法的流程圖。
圖6是示出根據示例性實施例的被配置為儲存快取記憶體位址資訊和頁面命中位元的鏈表的資料結構圖。
圖7是根據示例性實施例的圖3的標籤處理器的方塊圖。
圖8是根據示例性實施例的用於調整事務請求中的快取記憶體提示的方法的流程圖。
圖9A是根據示例性實施例的用於基於寫入請求分配快取記憶體行並將關聯資訊儲存在所選鏈表佇列中的方法的流程圖。
圖9B是圖9A的流程圖的延續。
圖10是根據示例性實施例的用於搜尋受害快取記憶體行以進行替換的方法的流程圖。
圖11是根據示例性實施例的用於從一組鏈表佇列中選擇鏈表佇列的方法的流程圖。
圖12是根據示例性實施例的用於在對應於兩個DRAM層級的兩組鏈表佇列之間進行選擇的方法的流程圖。
圖13是根據示例性實施例的使用鏈表佇列啟動和去啟動快取記憶體資料的驅逐以維持訊窗內的快取記憶體髒度的方法的流程圖。
圖14是根據示例性實施例的用於控制與DRAM事務請求相關聯的資料快取記憶體的各態樣的方法的流程圖。
圖15是根據示例性實施例的可攜式計算設備或PCD的方塊圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
100:系統
102:資料儲存結構
104:快取記憶體控制器系統
Claims (32)
- 一種用於控制資料快取記憶體的系統,包括: 複數個資料儲存結構,其共同具有與一動態隨機存取記憶體(DRAM)的一結構組織對應的一組織;及 一快取記憶體控制器系統,其被配置為: 接收複數個事務請求; 將與該等事務請求相關聯的資料儲存在基於與每個事務請求相關聯的一記憶體位址從該複數個資料儲存結構中選擇的一或多個資料儲存結構中;及 使用該複數個資料儲存結構控制去往DRAM的資料傳輸。
- 根據請求項1之系統,其中該複數個資料儲存結構中的每一個資料儲存結構是一鏈表。
- 根據請求項1之系統,其中該複數個資料儲存結構中的每一個資料儲存結構對應於該DRAM的複數個儲存體中的一個儲存體。
- 根據請求項3之系統,其中該快取記憶體控制器系統被配置為: 接收具有相關聯記憶體位址的複數個DRAM寫入請求;及 將與該複數個DRAM寫入請求相關聯的快取記憶體位址資訊儲存在基於與該DRAM寫入請求相關聯的儲存體位址選擇的對應所選擇的資料儲存結構中。
- 根據請求項4之系統,其中該快取記憶體控制器系統被配置為經由被配置為進行如下操作而控制去往該DRAM的資料傳輸: 在該複數個資料儲存結構中進行選擇;及 將快取記憶體資料從由在所選擇的資料儲存結構中儲存的該資料指示的在該資料快取記憶體中的位置驅逐到該DRAM。
- 根據請求項5之系統,其中該快取記憶體控制器系統被配置為基於一序列在該複數個資料儲存結構中進行選擇。
- 根據請求項6之系統,其中該序列基於一輪詢選擇。
- 根據請求項7之系統,其中該序列亦基於儲存在該資料儲存結構中的DRAM頁面命中資訊。
- 根據請求項5之系統,其中該快取記憶體控制器系統被配置為在複數個資料儲存結構中的與該DRAM的一第一層級相關聯的一第一子集和複數個資料儲存結構中的與該DRAM的一第二層級相關聯的一第二子集之間進行選擇。
- 根據請求項5之系統,其中快取記憶體控制器系統被配置為基於快取記憶體髒度的至少一個閾值位準來選擇性地啟用快取記憶體資料的驅逐。
- 一種用於控制資料快取記憶體的方法,包括以下步驟: 接收複數個事務請求; 將與該等事務請求相關聯的資料儲存在基於與每個事務請求相關聯的一記憶體位址從該複數個資料儲存結構中選擇的一或多個資料儲存結構中;及 使用該複數個資料儲存結構控制去往一動態隨機存取記憶體(DRAM)的資料傳輸,其中該複數個資料儲存結構共同具有與DRAM的一結構組織對應的一組織。
- 根據請求項11之方法,其中儲存與該等事務請求相關聯的資料包括:在複數個鏈表中儲存與該等事務請求相關聯的該資料。
- 根據請求項11之方法,其中該複數個資料儲存結構中的每一個資料儲存結構對應於該DRAM的複數個儲存體中的一個儲存體。
- 根據請求項13之方法,其中: 接收複數個事務請求包括接收具有相關聯記憶體位址的複數個DRAM寫入請求;及 儲存與該等事務請求相關聯的資料包括將與該複數個DRAM寫入請求相關聯的快取記憶體位址資訊儲存在基於與該DRAM寫入請求相關聯的儲存體位址選擇的對應所選擇的資料儲存結構中。
- 根據請求項14之方法,其中控制去往DRAM的資料傳輸包括以下步驟: 在該複數個資料儲存結構中進行選擇;及 將快取記憶體資料從由在所選擇的資料儲存結構中儲存的該資料指示的在該資料快取記憶體中的位置驅逐到該DRAM。
- 根據請求項15之方法,其中在該複數個資料儲存結構中進行選擇是基於一序列的。
- 根據請求項16之方法,其中該序列基於一輪詢選擇。
- 根據請求項17之方法,其中該序列亦基於儲存在該資料儲存結構中的DRAM頁面命中資訊。
- 根據請求項15之方法,其中在該複數個資料儲存結構中進行選擇包括:在複數個資料儲存結構中的與該DRAM的一第一層級相關聯的一第一子集和複數個資料儲存結構中的與該DRAM的一第二層級相關聯的一第二子集之間進行選擇。
- 根據請求項15之方法,其中控制去往該DRAM的資料傳輸包括以下步驟:基於快取記憶體髒度的至少一個閾值位準來選擇性地啟用快取記憶體資料的驅逐。
- 一種用於控制資料快取記憶體的系統,包括: 用於接收複數個事務請求的單元; 用於將與該等事務請求相關聯的資料儲存在基於與每個事務請求相關聯的一記憶體位址從該複數個資料儲存結構中選擇的一或多個資料儲存結構中的單元;及 用於使用該複數個資料儲存結構控制去往一動態隨機存取記憶體(DRAM)的資料傳輸的單元,其中複數個資料儲存結構共同具有與DRAM的一結構組織對應的一組織。
- 根據請求項21之系統,其中用於儲存與該等事務請求相關聯的資料的單元包括:用於在複數個鏈表中儲存與該等事務請求相關聯的該資料的單元。
- 根據請求項21之系統,其中該複數個資料儲存結構中的每一個資料儲存結構對應於該DRAM的複數個儲存體中的一個儲存體。
- 根據請求項23之系統,其中: 用於接收複數個事務請求的單元包括用於接收具有相關聯記憶體位址的複數個DRAM寫入請求的單元;及 用於儲存與事務請求相關聯的資料的單元包括:用於將與該複數個DRAM寫入請求相關聯的快取記憶體位址資訊儲存在基於與該DRAM寫入請求相關聯的儲存體位址選擇的對應所選擇的資料儲存結構中的單元。
- 根據請求項24之系統,其中用於控制去往DRAM的資料傳輸的單元包括: 用於在該複數個資料儲存結構中進行選擇的單元;及 用於將快取記憶體資料從由在所選擇的資料儲存結構中儲存的該資料指示的在該資料快取記憶體中的位置驅逐到該DRAM的單元。
- 根據請求項25之系統,其中用於在該複數個資料儲存結構中進行選擇的單元是基於一序列的。
- 根據請求項26之系統,其中該序列基於一輪詢選擇。
- 根據請求項27之系統,其中該序列亦基於儲存在該資料儲存結構中的DRAM頁面命中資訊。
- 根據請求項25之系統,其中用於在該複數個資料儲存結構中進行選擇的單元包括:用於在複數個資料儲存結構中的與該DRAM的一第一層級相關聯的一第一子集和複數個資料儲存結構中的與該DRAM的一第二層級相關聯的一第二子集之間進行選擇的單元。
- 根據請求項25之系統,其中用於控制去往該DRAM的資料傳輸的單元包括:用於基於快取記憶體髒度的至少一個閾值位準來選擇性地啟用快取記憶體資料的驅逐的單元。
- 一種用於控制資料快取記憶體的電腦可讀取媒體,包括其上儲存有電腦可執行形式的指令的一非暫時性電腦可讀取媒體,該等指令在由一處理器執行時,將該處理器配置為: 接收複數個事務請求; 將與該等事務請求相關聯的資料儲存在基於與每個事務請求相關聯的一記憶體位址從該複數個資料儲存結構中選擇的一或多個資料儲存結構中;及 使用該複數個資料儲存結構控制去往一動態隨機存取記憶體(DRAM)的資料傳輸,該複數個資料儲存結構中的每一個資料儲存結構對應於該DRAM的複數個儲存體中的一個儲存體。
- 根據請求項31之電腦可讀取媒體,其中該處理器被配置為經由被配置為進行以下操作,來儲存與該等事務請求相關聯的資料:在複數個鏈表中儲存與該等事務請求相關聯的該資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/244,398 | 2021-04-29 | ||
US17/244,398 US11520706B2 (en) | 2021-04-29 | 2021-04-29 | Dram-aware caching |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202244735A true TW202244735A (zh) | 2022-11-16 |
Family
ID=81325635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111110565A TW202244735A (zh) | 2021-04-29 | 2022-03-22 | Dram感知快取記憶體 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11520706B2 (zh) |
EP (1) | EP4330826A1 (zh) |
CN (1) | CN117222989A (zh) |
TW (1) | TW202244735A (zh) |
WO (1) | WO2022231711A1 (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6535512B1 (en) * | 1996-03-07 | 2003-03-18 | Lsi Logic Corporation | ATM communication system interconnect/termination unit |
US6813691B2 (en) * | 2001-10-31 | 2004-11-02 | Hewlett-Packard Development Company, L.P. | Computer performance improvement by adjusting a count used for preemptive eviction of cache entries |
US7277982B2 (en) * | 2004-07-27 | 2007-10-02 | International Business Machines Corporation | DRAM access command queuing structure |
GB0603552D0 (en) * | 2006-02-22 | 2006-04-05 | Advanced Risc Mach Ltd | Cache management within a data processing apparatus |
US8949541B2 (en) | 2008-12-08 | 2015-02-03 | Nvidia Corporation | Techniques for evicting dirty data from a cache using a notification sorter and count thresholds |
US8775762B2 (en) | 2012-05-07 | 2014-07-08 | Advanced Micro Devices, Inc. | Method and apparatus for batching memory requests |
US10402120B2 (en) | 2016-07-15 | 2019-09-03 | Advanced Micro Devices, Inc. | Memory controller arbiter with streak and read/write transaction management |
US10379748B2 (en) * | 2016-12-19 | 2019-08-13 | International Business Machines Corporation | Predictive scheduler for memory rank switching |
US10552343B2 (en) * | 2017-11-29 | 2020-02-04 | Intel Corporation | Zero thrash cache queue manager |
-
2021
- 2021-04-29 US US17/244,398 patent/US11520706B2/en active Active
-
2022
- 2022-03-14 EP EP22715234.5A patent/EP4330826A1/en active Pending
- 2022-03-14 WO PCT/US2022/020268 patent/WO2022231711A1/en active Application Filing
- 2022-03-14 CN CN202280028609.2A patent/CN117222989A/zh active Pending
- 2022-03-22 TW TW111110565A patent/TW202244735A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20220350749A1 (en) | 2022-11-03 |
WO2022231711A1 (en) | 2022-11-03 |
CN117222989A (zh) | 2023-12-12 |
EP4330826A1 (en) | 2024-03-06 |
US11520706B2 (en) | 2022-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0470734B1 (en) | Cache memory management system | |
US8615634B2 (en) | Coordinated writeback of dirty cachelines | |
US20190129849A1 (en) | Cache self-clean engine | |
US9378153B2 (en) | Early write-back of modified data in a cache memory | |
US9251069B2 (en) | Mechanisms to bound the presence of cache blocks with specific properties in caches | |
US8683128B2 (en) | Memory bus write prioritization | |
JP6859361B2 (ja) | 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと | |
US9317448B2 (en) | Methods and apparatus related to data processors and caches incorporated in data processors | |
JP2002536716A (ja) | 仮想メモリシステムにおけるメモリアクセスの改善技術 | |
US7809889B2 (en) | High performance multilevel cache hierarchy | |
US20070168617A1 (en) | Patrol snooping for higher level cache eviction candidate identification | |
US8874849B2 (en) | Sectored cache with a tag structure capable of tracking sectors of data stored for a particular cache way | |
TW200915179A (en) | Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same | |
US20210056030A1 (en) | Multi-level system memory with near memory capable of storing compressed cache lines | |
US9996478B1 (en) | No allocate cache policy | |
US20120260041A1 (en) | Simultaneous eviction and cleaning operations in a cache | |
US20060143400A1 (en) | Replacement in non-uniform access cache structure | |
WO2018125401A1 (en) | Multi level system memory having different caching structures and memory controller that supports concurrent look-up into the different caching structures | |
CN111124297A (zh) | 一种堆叠dram缓存的性能提升方法 | |
US10545875B2 (en) | Tag accelerator for low latency DRAM cache | |
US7865666B2 (en) | Cache memory systems and methods thereof | |
TW202244735A (zh) | Dram感知快取記憶體 | |
KR101976320B1 (ko) | 라스트 레벨 캐시 메모리 및 이의 데이터 관리 방법 | |
CN108509151B (zh) | 一种基于dram内存控制器的行缓存方法和系统 | |
US20010034808A1 (en) | Cache memory device and information processing system |