TWI545435B - 於階層式快取處理器中之協調預取 - Google Patents
於階層式快取處理器中之協調預取 Download PDFInfo
- Publication number
- TWI545435B TWI545435B TW102109728A TW102109728A TWI545435B TW I545435 B TWI545435 B TW I545435B TW 102109728 A TW102109728 A TW 102109728A TW 102109728 A TW102109728 A TW 102109728A TW I545435 B TWI545435 B TW I545435B
- Authority
- TW
- Taiwan
- Prior art keywords
- prefetch
- stream
- cache memory
- cache
- unit
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
- G06F8/4442—Reducing the number of cache misses; Data prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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
-
- 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/60—Details of cache memory
- G06F2212/6024—History based prefetching
-
- 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/60—Details of cache memory
- G06F2212/6026—Prefetching based on access pattern detection, e.g. stride based prefetch
-
- 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/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明大體上係關於快取效能,且詳言之,係關於用於在具有多個層級之快取記憶體之處理器中預取資料的方法及機構。
記憶體延時常常為判定給定系統中的處理器之效能(例如,每秒執行之指令數)的重要因素。隨著時間過去,處理器之操作頻率已引人注目地增加,而存取典型系統中動態隨機存取記憶體(DRAM)之延時並未以相同速率減少。因而,存取外部記憶體所需要之處理器時脈的數目已增加。因此,已開發出用於補償記憶體器件之相對低速度的技術。一種技術為在靠近處理器定位之一或多個快取記憶體中快取資料。快取記憶體為併入至處理器中或耦接至處理器近旁之相對小的低延時記憶體。
處理器通常使用快取記憶體來對抗記憶體延時對處理器效能之影響。減輕記憶體存取之延時增加的一種方式為將資料預取至快取記憶體中。術語「預取」可通常指代在程式中的指令實際需要資料以用於進行計算之前自記憶體提取該資料。可有效地使用記憶體頻寬之一種方式為預測即將被存取之資訊且接著將該資訊自記憶體系統預取至快取記憶體中。若預測為正確的,則資訊可為在實際請求時之快取命中,且因此可減少實際請求之有效記憶體延時。另一方面,若預測為
不正確的,則所預取的資訊可替換快取記憶體中之有用資訊,從而引起與未使用預取的情況相比經歷更多快取未命中,且因此增加有效記憶體延時。
某些類型之電腦程式處理長資料序列,其中序列中之每一元素僅被存取一次。此類型之存取型樣通常會導致快取未命中,此係由於所需要之資料在需要該資料時並未在快取記憶體中。此類型之存取可被稱作「資料串流」或「串流」,其在某些多媒體應用中為普遍的。基於對串流之預測來預取資料可幫助防止快取未命中且改良處理器效率。
最簡單類型之預取預測為單位步幅(unit stride)預測。舉例而言,訓練機構可偵測對快取行L及L+1之存取。因此,訓練機構可偵測到步幅為1,且因此預取單元可開始預取快取行L+2、L+3等。在其他實施例中,可偵測到其他非單位步幅,且此外,步幅可按降序位址而非僅按升序位址。
現代超純量(superscalar)處理器使用極激進的推測技術,該等技術涉及對記憶體存取之重新排序以便達成較高效能。記憶體存取之重新排序導致操作自機器之前端進展得愈遠,記憶體串流中的任何可辨別型樣愈模糊。此外,較低層級快取記憶體必須與來自多個核心之同時請求串流競爭,其進一步增加了此等存取型樣的熵。一些作者使用術語低層級快取記憶體以指代更靠近核心之快取記憶體,而其他作者使用該術語來指代距核心較遠之快取記憶體。如本文中所使用,術語「較低層級快取記憶體」指代距核心較遠之快取記憶體(例如,L2快取記憶體、L3快取記憶體),而術語「較高層級快取記憶體」可指代較靠近核心之快取記憶體(例如,L1快取記憶體)。
記憶體存取距記憶體愈近,記憶體存取就相對於其原始次序變得愈錯亂。結果,在較低層級快取記憶體處偵測連續記憶體存取之間
的常見步幅變得愈難,此係由於記憶體存取在機器的每一層級處皆被重新排序。較低層級快取記憶體處之預取單元因此必須與錯亂的記憶體串流作鬥爭,且常常不能識別串流中之常見型樣。此情形有效地減小了快取記憶體階層架構之較低層級處的預取有效性。
考量了用於在階層式快取之處理器中執行經協調之預取的系統、處理器及方法。在一項實施例中,可利用每核心一個集中化預取訓練機構對串流進行訓練。由訓練機構產生之訓練資訊可用以於快取記憶體階層架構之多個層級處產生預取請求。可利用由共用訓練機構獲得之資訊來協調處於分離的快取記憶體層級之兩個或兩個以上預取單元。在一項實施例中,訓練機構可位於核心中之預取單元內,且該預取單元耦接至L1快取記憶體。
在一項實施例中,訓練機構可經組態以同時對由處理器核心產生之複數個串流進行訓練。對於給定串流,訓練機構可監視記憶體對串流之存取,且偵測串流之步幅。接著,訓練機構可將識別符(ID)指派至串流,且指示串流對於預取而言有效。在一些實施例中,處理器可包括多個核心,且每一核心可維持在其各別L1預取單元內的集中化訓練機構。較低層級預取單元可自每一L1預取單元接收訓練資訊。
在一項實施例中,處理器可包括至少L1及L2快取記憶體以及L1及L2預取單元。L1預取單元可將預取請求發送至L2快取記憶體,且L1預取單元可將封包連同每一預取請求一起發送。封包可包括串流識別符(ID)及與預取請求以及對應串流相關聯之屬性。屬性可包括步幅、頁大小、暫時/非暫時狀態、載入/儲存指示符、需求及預取位址,及其他資訊。L2預取單元可利用來自封包之屬性以產生預取請求。L2預取單元亦可利用來自封包之屬性以判定處理並儲存所擷取之預取資料的方式。
在一項實施例中,L1預取單元可藉由關於經訓練串流之資訊來維持一表。此外,L2預取單元亦可藉由關於經訓練串流之資訊來維持一表。由L2預取單元維持之表可係由L1預取單元利用之表的鏡像版本。當L2預取單元自核心接收到預取請求及隨附封包時,來自封包之屬性可被儲存於表中的對應輸入項中。又,任何額外較低層級快取記憶體(例如,L3)可使維持與較高層級快取記憶體的表同步的表。
在一項實施例中,對於具有一個核心及一個L1快取記憶體的處理器,L2預取表可按一對一映射的關係與L1預取表的大小相同。在另一實施例中,對於具有兩個核心及兩個L1快取記憶體的處理器,L2表可與該等L1表之組合一樣大,且兩個分離的L1表之所有輸入項可儲存於L2表中。在其他實施例中,對於額外數目個核心,L2表可經設定大小以儲存來自所有L1表的所有輸入項。
對於一般熟習此項技術者而言,鑒於本文中呈現之方法的以下詳細描述,此等及其他特徵及優點將變得顯而易見。
10‧‧‧積體電路(IC)
20‧‧‧處理器複合體
22‧‧‧中央處理單元(CPU)
24‧‧‧L1快取記憶體
26‧‧‧中央處理單元(CPU)
28‧‧‧L1快取記憶體
30‧‧‧第二層級(L2)快取記憶體
32‧‧‧匯流排介面單元(BIU)
34‧‧‧記憶體控制器
36‧‧‧記憶體實體介面電路(PHY)
38‧‧‧記憶體實體介面電路(PHY)
40‧‧‧核心
42‧‧‧提取及解碼(FED)單元
44‧‧‧L1指令快取記憶體
46‧‧‧映射及分派單元
48‧‧‧執行單元
50‧‧‧載入/儲存單元(LSU)
52‧‧‧L1資料快取記憶體
54‧‧‧預取單元
56‧‧‧預取訓練機構
58‧‧‧預取訓練表
60‧‧‧記憶體管理單元(MMU)
62‧‧‧核心介面單元(CIF)
72‧‧‧核心
74‧‧‧L1預取單元
76‧‧‧預取表
78‧‧‧L2快取記憶體
80‧‧‧L2預取單元
82‧‧‧表
90‧‧‧預取訓練表
92‧‧‧串流ID
94‧‧‧步幅
96‧‧‧暫時性指示符
98‧‧‧頁大小屬性
100‧‧‧串流類型屬性
102‧‧‧需求位址屬性
104‧‧‧預取位址屬性
106‧‧‧核心
108‧‧‧核心
110‧‧‧L2快取記憶體
112‧‧‧表
114‧‧‧表
116‧‧‧表
120‧‧‧L3快取記憶體
122‧‧‧L3預取單元
124‧‧‧表
150‧‧‧系統
152‧‧‧外部記憶體
154‧‧‧周邊器件
156‧‧‧電源供應器
160‧‧‧桌上型電腦
170‧‧‧膝上型電腦
180‧‧‧平板電腦
190‧‧‧手機
200‧‧‧電腦可讀媒體
可藉由結合隨附圖式參看以下描述來更好地理解方法及機構之以上及其他優點,其中:圖1為說明IC之一部分之一項實施例的方塊圖。
圖2為說明處理器核心之一項實施例的方塊圖。
圖3為L1及L2預取單元之一項實施例的方塊圖。
圖4說明預取訓練表之一項實施例。
圖5為各不相同層級之快取記憶體之預取表之間的映射之一項實施例的方塊圖。
圖6為L2及L3預取單元之一項實施例的方塊圖。
圖7為說明用於產生預取請求之方法之一項實施例的概括流程圖。
圖8為系統之一項實施例的方塊圖。
圖9為電腦可讀媒體之一項實施例的方塊圖。
在以下描述中,闡述眾多特定細節以提供對本文中所呈現之方法及機構的透徹理解。然而,一般熟習此項技術者應認識到,可在無此等特定細節的情況下實踐各種實施例。在一些例子中,未詳細展示熟知結構、組件、信號、電腦程式指令及技術以避免使本文中所描述之方法晦澀不清。應瞭解,為說明之簡單及清楚起見,諸圖中所展示之元件不一定按比例繪製。舉例而言,一些元件之尺寸可能相對於其他元件之尺寸予以誇示。
此說明書包括對「一項實施例」之提及。在不同上下文中,片語「在一項實施例中」之出現不一定指代同一實施例。可以與本發明一致之任何合適方式來組合特定特徵、結構或特性。此外,如貫穿本申請案所使用,在許可意義(亦即,意謂具有……之潛能)而非強制意義(亦即,意謂必須)上使用詞語「可」。類似地,詞語「包括」意謂包括但不限於。
術語。以下段落提供在本發明(包括附加申請專利範圍)中發現之術語的定義及/或內容脈絡。
「包含。」此術語為開端式的。如在附加申請專利範圍中所使用,此術語並不將額外結構或步驟排除在外。考慮敍述以下情形之技術方案:「一種包含一預取單元……之裝置」。此技術方案並不排除裝置包括額外組件(例如,快取記憶體、記憶體控制器、匯流排介面單元)之情況。
「經組態以。」各種單元、電路或其他組件可被描述或主張為「經組態以」執行(多個)任務。在此等內容脈絡中,將「經組態以」用以藉由指示單元/電路/組件包括在操作期間執行(多個)任務的結構
(例如,電路)來暗示(connote)結構。因而,單元/電路/組件可被稱為經組態以執行任務,即使在指定單元/電路/組件當前並非在操作中(例如,未接通)亦然。與「經組態以」的表達一起使用之單元/電路/組件包括硬體-例如,電路、儲存可執行以實施操作之程式指令的記憶體等。敍述單元/電路/組件「經組態以」執行一或多個任務明確地並不意欲針對該單元/電路/組件援引35 U.S.C.§ 112第六段。另外,「經組態以」可包括由軟體及/或韌體(例如,FPGA或執行軟體之通用處理器)操縱而按能夠執行有關任務的方式操作之泛用結構(例如,泛用電路)。「經組態以」亦可包括調適製造程序(例如,半導體加工設施)以加工經調適以實施或執行一或多個任務的器件(例如,積體電路)。
「基於。」如本文中所使用,此術語用以描述影響判定之一或多個因素。此術語並不將可影響判定之額外因素排除在外。亦即,判定可僅基於彼等因素,或至少部分基於彼等因素。考慮片語「基於B來判定A」。雖然B可係影響A之判定的因素,但此片語並不排除亦基於C來判定A的情況。在其他例子中,可僅基於B來判定A。
現參看圖1,展示說明積體電路(IC)之一部分之一項實施例的方塊圖。在所說明實施例中,IC 10包括處理器複合體20、記憶體控制器34,及記憶體實體介面電路(PHY)36及38。請注意,IC 10亦可包括未展示於圖1中之許多其他組件。在各種實施例中,IC 10亦可被稱作系統單晶片(SoC)、特殊應用積體電路(ASIC)或裝置。
處理器複合體20可包括中央處理單元(CPU)22及26、第二層級(L2)快取記憶體30及匯流排介面單元(BIU)32。在其他實施例中,處理器複合體20可包括其他數目個CPU。CPU 22及26亦可被稱作處理器或核心。CPU 22及26可分別包括第一層級(L1)快取記憶體24及L1快取記憶體28。L1快取記憶體24及28可耦接至L2快取記憶體30,且L2快取記憶體30可耦接至BIU 32,BIU 32可耦接至記憶體控制器34。其他
實施例可包括額外層級之快取記憶體(例如,第三層級(L3)快取記憶體)。請注意,處理器複合體20以及CPU 22及26可包括圖1中未展示之其他組件。
CPU 22及26可包括用以執行定義於指令集架構中之指令的電路。具體而言,包含指令之一或多個程式可由CPU 22及26來執行。在各種實施例中可實施任何指令集架構。舉例而言,在一項實施例中,可實施PowerPCTM指令集架構。其他例示性指令集架構可包括ARMTM指令集、MIPSTM指令集、SPARCTM指令集、x86指令集(亦被稱作IA-32)、IA-64指令集等。
在一項實施例中,L2快取記憶體30可經組態以快取指令及資料以實現CPU 22及26之低延時存取。L2快取記憶體30可包含任何容量及組態(例如,直接映射、集合相聯)。在一項實施例中,L2快取記憶體30可組態為集合相聯之回寫快取記憶體,其完全包括分別在CPU 22及26內的L1快取記憶體24及28。在各種實施例中,L2快取記憶體30可包括經組態以支援快取功能性及效能的多種結構。舉例而言,L2快取記憶體30可包括:未命中緩衝器,其經組態以儲存在L2中未命中之請求;填充緩衝器,其經組態以臨時儲存資料;回寫緩衝器,其經組態以臨時儲存已變更的收回資料及窺探向回複製(copyback)資料;及/或窺探緩衝器,其經組態以儲存窺探請求。在一些實施例中,L2快取記憶體30可包括縱橫件(未圖示),其用於管理L2快取記憶體30與BIU 32及L2快取記憶體30與CPU 22及26之間的資料流動。在各種實施例中,L2快取記憶體30可實施仲裁邏輯以在各種快取讀取與寫入請求者之間區分快取存取的優先次序。L2快取記憶體30之組態之其他變型為可能的,且被考量到。L2快取記憶體30可經由BIU 32耦接至記憶體控制器34。BIU 32亦可包括各種其他邏輯結構以將CPU 22及26以及L2快取記憶體30耦接至各種其他器件及區塊。
記憶體控制器34可包括任何數目個記憶體埠,且可包括經組態以介面連接至記憶體之電路。舉例而言,記憶體控制器34可經組態以介面連接至動態隨機存取記憶體(DRAM),諸如同步DRAM(SDRAM)、雙資料速率(DDR)SDRAM、DDR2 SDRAM、Rambus DRAM(RDRAM)等。記憶體控制器34亦可耦接至記憶體實體介面電路(PHY)36及38。記憶體PHY 36及38表示可耦接至記憶體控制器34之任何數目個記憶體PHY。記憶體PHY 36及38可經組態以介面連接至記憶體器件(未圖示)。
請注意,其他實施例可包括組件之其他組合,包括展示於圖1中之組件及/或其他組件的子集或超集。雖然可能在圖1中展示了給定組件之一個例項,但其他實施例可包括給定組件之兩個或兩個以上例項。類似地,貫穿本詳細描述,可包括給定組件之兩個或兩個以上例項,即使僅展示一個例項;及/或可使用僅包括一個例項之實施例,即使展示了多個例項。
現轉至圖2,展示處理器核心之一項實施例。核心40為處理器核心之一項實例,且核心40可用於處理器複合體(諸如,圖1之處理器複合體20)內。在一項實施例中,圖1之CPU 22及26中之每一者可包括核心40之組件及功能性。核心40可包括提取及解碼(FED)單元42、映射及分派單元46、執行單元48、載入/儲存單元(LSU)50、記憶體管理單元(MMU)60及核心介面單元(CIF)62。請注意,核心40可包括未展示於圖2中之其他組件。
包括L1指令快取記憶體44之FED單元42可經組態以自記憶體(或L2快取記憶體)提取指令,且解碼所提取之指令。所解碼指令可被傳送至映射及分派單元46。映射及分派單元46可經組態以將所解碼指令映射至實體暫存器。映射及分派單元46亦可經組態以將指令分派至執行單元48及LSU 50。執行單元48可包括任何數目及任何類型之執行
單元(例如,整數、浮點、向量)。
CIF 62可耦接至L1資料快取記憶體52、FED單元42及MMU 60。CIF 62可經組態以管理核心40與L2快取記憶體之間的介面。MMU 60可經組態以執行位址轉譯及記憶體管理功能。LSU 50可包括耦接至預取單元54之L1資料快取記憶體52。預取單元54可包括預取訓練機構56及預取訓練表58。LSU 50亦可經由CIF 62耦接至L2快取記憶體(未圖示)。請注意,LSU 50亦可包括圖2中未展示之其他組件(例如,載入佇列、儲存佇列)。
預取單元54可經組態以產生預取請求以便將資料預取至L1資料快取記憶體52中。在一項實施例中,預取單元54可經組態以同時維持多個分離之獨立預取串流。「預取串流」可指代由於偵測到之預取型樣而被預取至快取記憶體中之位址及與彼等位址相關聯之區塊的串流。預取型樣可描述預取串流中的連續記憶體存取之間的差異。連續記憶體存取之間的此差異可被稱作預取串流之「步幅」。
訓練機構56可監視通過L1資料快取記憶體52及/或在核心40中之其他點的載入/儲存訊務。訓練機構56可偵測載入/儲存訊務中之存取的型樣,且識別串流以供預取。對於每一單獨串流,訓練機構56可偵測用於預取之單位步幅型樣(諸如,在遞增位址或遞減位址方向上,對記憶體中之連續區塊的預取)。其他實施例可偵測更複雜之預取型樣,包括較大步幅及在記憶體存取之間並非單一固定距離的重複型樣。
在一項實施例中,由核心40執行之指令可按次序前進,直至指令到達執行單元48,在該點處,可對指令重新排序。在此點處,可發生錯亂,從而使得難以對指令串流進行訓練。訓練機構56可在對指令重新排序之前對核心40中的指令進行訓練。接著,可將訓練資訊傳播至快取記憶體階層架構之較低層級。
預取訓練機構56可對由核心40產生之串流進行訓練。訓練可包括偵測並分析與各種串流相關聯之記憶體存取以判定與該等記憶體存取相關聯的資訊。當預取訓練機構56已對串流進行了訓練時,預取訓練機構56可將串流識別符(ID)指派至串流且將一輸入項與該串流ID一起儲存於表58中。輸入項可包括與串流相關聯之屬性,諸如資料之暫時性及非暫時性、步幅、頁大小、記憶體存取類型、需求位址、預取位址,以及其他資訊。
預取單元54可包括表58,該表58具有用於儲存與複數個串流相關之訓練資訊的複數個輸入項。可將給定預取串流指派給表58之輸入項中的一者,且可基於輸入項之內容針對該預取串流來執行預取之產生。舉例而言,可比較預取請求之位址與表輸入項中之當前位址及/或下一預期位址。在一項實施例中,預取單元54可出於替換目的而維持表58中之輸入項的最近最少使用(LRU)狀態。
串流可與唯一串流識別符(ID)相關聯,且表58之每一輸入項可包括串流ID連同與給定串流相關聯之屬性。可將串流ID及屬性自核心向下傳播至L2及較低層級快取記憶體。當核心40將預取請求發出至L2快取記憶體時,核心40可與請求一起(或與請求相關聯地)發送包括串流ID及其他屬性的資料。所傳送之ID及屬性可採用元組或其他形式,且可包括於相關聯之封包中。如本文中所使用,術語「封包」是為了易於論述而使用,且不意欲限於資料之特定大小或組態。確切而言,本文中所描述之方法及機構可以多種方式中之許多方式來傳送與「封包」相關之資料。傳送訓練資料及其他屬性可採用任何形式或格式。
在一項實施例中,元組可含有預取位址、串流ID、步幅(例如,2行)及其他屬性。當L2快取記憶體及L2預取單元(未圖示)接收到元組時,L2預取單元可將元組之屬性儲存於L2預取表(未圖示)中之對應輸入項中。接著,L2預取單元可比較新元組與核心最近發送之請求,以
確保其保持領先於正由L1預取單元提取之位址。若元組中之串流ID為新串流ID,則L2預取單元可產生用於該特定串流ID的新輸入項。
對於快取記憶體階層架構之較低層級,預取可向前擴展以進一步在串流之所預測記憶體位置中進行預取。在一項實施例中,可存在與串流中之每一者相關聯的開始距離。L1預取單元可將第一開始距離添加至第一預取請求,且L2預取單元可在第一開始距離上面添加第二開始距離。較低層級預取單元(例如,L3預取單元)可將額外距離添加於預取請求上。在一項實施例中,可在每一預取單元處局部地程式化開始距離。在另一實施例中,可將開始距離作為元組內之屬性中的一者來進行發送。
在一項實施例中,L2預取單元自身可不進行任何訓練。L2預取單元可由L1預取單元設定,且接著L2預取單元可與L1預取單元相比稍後在串流中產生更多的預取請求。一般而言,L2預取單元可係L1預取單元之擴展。此方法可擴展至第三層級、第四層級等,其中不管快取記憶體之階層式層級的數目為何,可僅利用單一統一訓練機構。在此實施例中,L3預取單元將從屬於上兩層級的預取單元。
現參看圖3,展示L1及L2預取單元之一項實施例的方塊圖。核心72被展示為耦接至L2快取記憶體78,且核心72可包括L1預取單元74。請注意,核心72亦可包括出於清楚起見在圖3中未展示之許多其他組件。L1預取單元74可包括預取表76,其用於儲存與已經訓練之串流相關聯的資料。L2快取記憶體78可包括L2預取單元80,L2預取單元80可包括預取訓練表82。儘管圖3中未展示,但預取請求及隨附訓練資料可通過L1預取單元74與L2快取記憶體88之間的一或多個組件(例如,MMU、CIF)。
在一項實施例中,核心72可將預取請求發佈至L2快取記憶體78。預取請求可包括待存取之行的記憶體位址。此外,可與預取請求
一起發送訓練資料。訓練資料可識別預取請求之串流ID,且可包括與該特定串流ID相關聯之其他屬性(儲存於表76中)。
回應於接收到預取請求及訓練資料,L2預取單元80可比較訓練資料與表中之對應於特定串流ID的輸入項。對於展示於圖3中之實例,串流ID可為「2」,且L2預取單元80可使用此串流ID來探尋表82中之對應輸入項。L2預取單元80可擷取一或多個屬性(例如,步幅),該一或多個屬性可由L2預取單元80使用以產生對記憶體(或對較低層級快取記憶體)之預取請求。實際上,連同預取請求一起發送之訓練資料可允許表76及82之輸入項同步。
應理解,表76及82可能不含有完全相同之資訊,但表76及82可大體上同步。舉例而言,可針對特定串流ID更新了表76,而在針對該特定串流ID更新表82之前可存在時間延隔。此外,表76及82中之輸入項之欄位的一或多者可含有不同資訊及/或可被不同地格式化。舉例而言,與表82之輸入項相比較,對應於最近產生之預取請求的位址欄位在表76之輸入項中可含有不同位址。然而,一般而言,包含於表82中之資料可反映表76中之資料,且在此意義上可被同步於表76中之資料。
在一項實施例中,自核心72發送至L2快取記憶體78之每一封包可包括指示串流是否為新串流的位元。如由此位元所指示,若串流為新串流,則L2預取單元80可在表82中找到對應輸入項且清除此輸入項。接著,L2預取單元80可用包含於封包中之資訊來填充經清除輸入項的屬性。若串流為現有串流,則封包可至少含有串流ID,且L2預取單元80可在表82中擷取對應於此串流ID的對應輸入項。若預取請求在L2快取記憶體78中命中,則資料可被傳回至核心72,而若預取請求未命中,則L2快取記憶體78可請求來自記憶體之資料。接著,L2預取單元80可基於儲存於表82中之對應輸入項中的屬性來產生新預取請
求。由L2預取單元80發佈之新預取請求可允許L2預取單元80針對此特定串流保持領先於核心72,使得將來的請求將導致在L2快取記憶體78中命中。
在另一實施例中,L2預取單元80可假設,每一所接收封包及預取請求係針對新串流。因此,在此實施例中,可關於由L2快取記憶體78接收到之任何預取請求來更新表82。舉例而言,L2預取單元80可用所接收封包中之資訊來覆寫表82中之對應輸入項中的資料。在各種實施例中,L2預取單元80可假設,除非請求包括與現有串流相同的串流資訊,否則任何所接收預取請求皆係針對新串流。
在一項實施例中,封包可包括控制L2快取記憶體78中的資料之置放及替換策略的資訊。若特定串流具有暫時或非暫時屬性,則L1預取單元74可將此資訊傳送至L2預取單元80。在一項實施例中,L2預取單元80及較低層級快取記憶體可使用此資訊來判定快取記憶體以何種方式儲存此特定串流之對應資料。
在一項實施例中,L2快取記憶體78可利用來自發送自核心72之預取請求及封包之位址及資訊,以確保L2預取單元80保持比包含於預取請求中之位址領先預定數目行。若L2預取單元80判定其已落在後面,則L2預取單元80可向前跳躍以保持領先於L1預取單元74。L2預取單元80可經組態以在串流中保持比L1預取單元74領先特定距離。
現轉至圖4,展示預取訓練表之一項實施例。預取訓練表90可用以儲存與各種受訓練串流相關聯的資訊。表90表示一表,該表可由處於總體快取記憶體階層架構之任何層級的預取單元利用。表90中的輸入項之數目可視以下各者而發生變化:實施例、表90在快取記憶體階層架構中所位於之層級、並行串流之最大數目,以及其他資訊。在其他實施例中,訓練表90可包括其他資訊,及/或展示於表90中之屬性中的一些可能不包括於表中。或者,展示於表90中之屬性中的一或多
者可儲存於對應的預取單元之另一位置中。
表90之每一輸入項可包括複數個屬性。串流ID 92可包括於每一輸入項中,且可用以識別輸入項。串流ID 92可對應於已由核心中之訓練機構進行了訓練之各別串流的ID。步幅94可為針對串流偵測到之步幅,且在一項實施例中可為行數。暫時性指示符96可為指示串流對應於暫時資料抑或非暫時資料的位元。L2快取記憶體及較低層級快取記憶體可利用暫時性指示符96以在其LRU機制中偏置路選擇(way selection)。暫時性指示符96之值亦可影響快取記憶體內之替換策略。
儲存於表90之輸入項中的另一屬性可為頁大小屬性98(例如,64 KB、128 KB、1 MB)。在一項實施例中,L2預取單元(及較低層級預取單元)可使用此屬性來判定頁邊界。當遭遇頁邊界時,L2預取單元可停止預取。L2預取單元亦可使用預取計數來判定停止預取之時間,使得一旦已達到預取計數,則L2預取單元可停止預取,直至L2預取單元接收到另一預取請求。預取計數可經程式化或獨立於用伴隨預取請求之封包接收到之屬性而進行設定。在一項實施例中,預取計數可不儲存於表90中,但在其他實施例中,預取計數可儲存於表90中。
在各種實施例中,各種預取單元可利用「渦輪」模式。在任何快取記憶體層級處,若給定串流保持有效且以相同屬性前進,則可按次序增加預取計數以進一步保持領先於給定串流。給定串流之狀態可由單獨的計數器進行追蹤,且此單獨的計數器可對自上層到達每一快取記憶體層級之預取請求的數目計數。舉例而言,可在L2預取單元處計數針對特定串流在L2層級處已接收到之L1預取請求的數目。若L1預取請求之數目達到臨限值,則L2預取單元可進入渦輪模式,該渦輪模式將使預取計數增加且使由L2預取單元產生之預取請求的數目增加,以試圖進一步保持領先於串流。臨限值可為可程式化的,且可在實施例之間變化。類似地,L1預取單元可實施類似技術以基於追蹤針
對各種串流在L1快取記憶體層級處接收到之需求請求的數目來應用渦輪模式。視實施例而定,單獨的計數器之值可能或可能不儲存於表90中。包括上述內容之組合的各種實施例為可能的且被考量到。
當較低層級快取預取單元到達頁邊界時,預取單元可能不能確定實體位址空間中之下一頁是否對應於程式之虛擬位址空間中的下一頁。因此,在一項實施例中,當諸如L2預取單元之較低層級預取單元到達頁邊界時,L2預取單元可停止於頁邊界處。當較高層級預取單元(在此狀況下L1預取單元)橫越頁邊界時,較高層級預取單元可將新預取請求與下一頁之位址一起發送至L2預取單元。
表90之每一輸入項亦可包括串流類型屬性100以指示串流為載入串流抑或儲存串流。舉例而言,若串流為載入串流,則L2預取單元可以共用狀態擷取資料行。若串流為儲存串流,則L2預取單元可將資料以獨佔狀態送至核心中,使得核心可修改資料。
在一項實施例中,L1預取單元可將載入串流與儲存串流的資訊組合成L1預取訓練表中之單一輸入項。舉例而言,若載入串流及儲存串流皆以記憶體之相同區為目標,則L1預取單元可使載入串流及儲存串流收縮(collapse)成一個串流。因此,L1預取單元可在L1表中產生一個串流輸入項而非產生兩個不同串流輸入項。舉例而言,在一項實施例中,若首先產生載入串流,則L1預取單元將對載入串流進行訓練,且藉由載入串流之屬性填充L1表中的對應輸入項。接著,當偵測到儲存請求時,若L1預取單元判定儲存請求係針對與擱置的載入請求相同之位址,則可將儲存請求收縮到載入串流中,且接著可將載入串流轉換成儲存串流。接著,當對應的預取請求被從L1發出至L2時,隨附封包可按具有「儲存」屬性的方式被發出,此情形意謂L2將負責以獨佔狀態而非共用狀態擷取資料。
表90中之每一輸入項亦可包括需求位址102屬性及預取位址104
屬性。當L1快取記憶體接收到需求請求時,L1快取記憶體可將需求請求之位址儲存於對應串流輸入項之需求位址102屬性中。當L2(或較低層級)預取單元自較高層級快取記憶體接收到預取請求時,L2預取單元可將預取請求之位址儲存於需求位址102屬性中。L1預取單元及較低層級預取單元可將正被預取之當前位址儲存於對應輸入項之預取位址104屬性中。當L2預取單元接收到預取請求及封包時,L2預取單元可比較預取請求位址與該特定串流ID之儲存於表90中的需求位址102。若傳入預取請求領先於儲存於該輸入項中之實體位址,則L2預取單元可用新位址覆寫輸入項之需求位址102屬性。
在一項實施例中,當L2預取單元接收到預取請求及封包時,L2預取單元可檢查以確認預取請求是否對應於L2表中之現有輸入項,且若如此,則L2預取單元可使該預取請求前進。否則,L2預取單元可自表清空舊輸入項,且接著L2預取單元可用包含於預取請求及隨附封包中之新資料填入該輸入項。
現參看圖5,展示各不相同層級之快取記憶體之預取表之間的映射之一項實施例的方塊圖。在一項實施例中,IC或SoC可包括兩個核心,核心106及核心108。在其他實施例中,其他數目個核心(例如,四個、八個)可包括於IC或SoC中。表112及114各自被展示為包括四個輸入項。在其他實施例中,表112及114可包括其他數目個輸入項(例如,八個、十六個)。任何數目及任何類型之屬性可儲存於表112、114及116中。舉例而言,展示於表90(圖4)中之屬性中的一或多者可儲存於表112、114及116中。另外,現展示於表90中之其他屬性可儲存於表112、114及116中。
如圖所示,可使L2快取記憶體112之表116的前四個輸入項與表112之輸入項同步。可使L2快取記憶體110之表116的最後四個輸入項之輸入項與表114之輸入項同步。可向表114中之輸入項指派串流ID 1
至4,且可將此等串流ID映射至表116中之串流ID 5至8。在一項實施例中,隨著將預取請求及隨附封包自核心發送至L2快取記憶體110,可使表116中之輸入項與表112及表114中之輸入項同步。
表116可包括足夠多之輸入項以儲存並鏡像耦接至L2快取記憶體110之所有L1快取記憶體的所有輸入項。在展示於圖5中之實施例中,表116包括八個輸入項。在其他實施例中,表116可包括其他數目個輸入項。舉例而言,在具有八個核心之處理器中且在每一核心將16個單獨的串流ID之16個輸入項儲存於核心預取訓練表中的情況下,則表116可包括用於儲存來自所有核心之所有輸入項的128個輸入項。耦接至L2快取記憶體之其他數目個核心為可能的且被考量到。
現轉至圖6,展示L2及L3預取單元之一項實施例的方塊圖。圖6說明在圖3中說明之方塊圖的繼續。L2快取記憶體78可自核心(例如,圖3之核心72)接收預取請求及訓練資訊,且接著L2預取單元80可將訓練資料儲存於表82中。L2預取單元80可基於以下各者產生預取請求:接收到之預取請求、訓練資料,及/或表82中之資料。L2預取單元80可將預取請求傳送至L3快取記憶體120,且L2預取單元80亦可產生訓練資料並連同預取請求一起傳送訓練資料。訓練資料可包括來自表82之針對與預取請求相關聯之特定串流ID的屬性。
L3預取單元122可接收預取請求及訓練資料,且將訓練資料儲存於表124之對應輸入項中。一般而言,L3預取單元122可回應於接收到預取請求及隨附訓練資料而以類似於L2預取單元80的方式起作用。L3預取單元122可利用訓練資料及/或對應表124之輸入項來保持領先於由L2預取單元80產生的預取請求。在一些實施例中,可並行地將訓練資訊自核心發送至L2快取記憶體78及L3快取記憶體120。以此方式,L2表82及L3表124可同時由訓練資訊更新。
其他實施例可包括額外層級之快取記憶體,且任何較低層級快
取記憶體可使其預取表與較高層級快取記憶體之表同步。較低層級快取記憶體及預取單元可按類似於較高層級快取記憶體及預取單元對接收到預取請求及封包作出回應之方式的方式對預取請求及封包作出回應。此外,較低層級預取表可包括足夠多之輸入項以儲存較高層級預取表之所有輸入項。舉例而言,若L3快取記憶體120耦接至L2快取記憶體78及另一L2快取記憶體(未圖示),則L3預取表124可包括與兩個L2預取表之組合之輸入項一樣多的輸入項。
現參看圖7,展示用於在多個快取記憶體層級產生預取請求之方法的一項實施例。出於論述之目的,順序地展示此實施例中之步驟。應注意,在以下所描述方法之各種實施例中,一或多個所描述元素可被同時執行,被以不同於所示之次序執行,或可被完全省略。如需要,亦可執行其它額外元素。
在一項實施例中,耦接至第一快取記憶體層級之訓練機構可對給定串流進行訓練(區塊130)。訓練機構可位於處理器核心內之預取單元內。處理器可包括多個核心,且每一核心可具有單一訓練機構。訓練機構產生之訓練資訊可儲存於處於第一快取記憶體層級之第一表的對應輸入項中(區塊132)。第一表中之輸入項可包括針對經訓練串流之串流ID。在一項實施例中,第一快取記憶體層級可為L1快取記憶體,且第一表可儲存於耦接至L1快取記憶體的預取單元中。
接著,可將訓練資訊自第一快取記憶體層級傳送至第二快取記憶體層級(區塊134)。在一項實施例中,預取請求可由處於第一快取記憶體層級之預取單元產生並發送至第二快取記憶體層級,且訓練資訊可包括於隨附預取請求的封包內。處於第二快取記憶體層級之預取單元可接收訓練資訊(區塊136),且接著預取單元可基於接收到之訓練資訊發佈預取請求(區塊138)。處於第二快取記憶體層級之預取單元可發佈比在第一快取記憶體層級發佈之預取請求領先某距離的預取
請求。在初始延隔之後,來自第一快取記憶體層級之預取請求應開始在第二快取記憶體層級中針對給定串流命中。處於第二快取記憶體層級之預取單元亦可將接收到之訓練資訊儲存於第二表中的對應輸入項中(區塊140)。請注意,視實施例而定,區塊138及140可同時發生,或區塊140可在區塊138之前執行。在一項實施例中,第二快取記憶體層級可為L2快取記憶體。
在區塊140處,處於第二快取記憶體層級之預取單元可將訓練資訊傳送至第三快取記憶體層級(區塊142)。在一項實施例中,訓練資訊可包括於隨附該預取請求至第三快取記憶體層級的封包內。處於第三快取記憶體層級之預取單元可接收訓練資訊(區塊144),且接著處於第三快取記憶體層級之預取單元可基於接收到之訓練資訊發佈預取請求(區塊146)。接收到之訓練資訊亦可儲存於第三表中之對應輸入項中(區塊148)。在一項實施例中,第三快取記憶體層級可為L3快取記憶體。在區塊148處,方法可返回至區塊130以對新串流進行訓練。請注意,可並行地對多個串流進行訓練,且多個串流在任何給定時間可係在圖7之方塊圖內的各種點處。其他實施例可包括其他數目個快取記憶體。一般而言,最高層級快取記憶體處之訓練機構可與較低層級快取記憶體共用預取訓練資訊。
現轉至圖8,展示系統150之一項實施例的方塊圖。如圖所示,系統150可表示桌上型電腦160、膝上型電腦170、平板電腦180、手機190或其他器件之晶片、電路、組件等。在所說明實施例中,系統150包括耦接至外部記憶體152之IC 10(圖1)的至少一個例項。
IC 10耦接至一或多個周邊器件154及外部記憶體152。亦提供電源供應器156,該電源供應器156將電源電壓供應至IC 10以及將一或多個電源電壓供應至記憶體152及/或周邊器件154。在各種實施例中,電源供應器156可表示電池(例如,智慧型手機、膝上型或平板電
腦中之可再充電電池)。在一些實施例中,可包括IC 10之一個以上例項(且亦可包括一個以上外部記憶體152)。
記憶體152可為任何類型之記憶體,諸如,動態隨機存取記憶體(DRAM)、同步DRAM(SDRAM)、雙資料速率(DDR、DDR2、DDR3等)SDRAM(包括SDRAM之行動版本(諸如,mDDR3等)及/或SDRAM之低功率版本(諸如,LPDDR2等))、RAMBUS DRAM(RDRAM)、靜態RAM(SRAM)等。可將一或多個記憶體器件耦接至電路板上以形成諸如單列直插式記憶體模組(SIMM)、雙列直插式記憶體模組(DIMM)等之記憶體模組。或者,可以晶片迭層組態、封裝迭層組態或多晶片模組組態將該等器件與IC 10安裝在一起。
視系統150之類型而定,周邊器件154可包括任何所要電路。舉例而言,在一項實施例中,周邊器件154可包括用於各種類型之無線通信的器件,諸如wifi、藍芽、蜂巢式、全球定位系統等。周邊器件154亦可包括額外儲存器(包括RAM儲存器、固態儲存器或磁碟儲存器)。周邊器件154可包括使用者介面器件(諸如,顯示螢幕,包括觸控式顯示螢幕或多點觸控顯示螢幕)、鍵盤或其他輸入器件、麥克風、揚聲器等。
現參看圖9,展示包括一或多個資料結構之電腦可讀媒體200之方塊圖的一項實施例,該一或多個資料結構表示包括於IC 10(圖1)中之電路。一般而言,電腦可讀媒體200可包括任何非暫時性儲存媒體,諸如磁性或光學媒體(例如,磁碟、CD-ROM或DVD-ROM);揮發性或非揮發性記憶體媒體,諸如RAM(例如,SDRAM、RDRAM、SRAM等)、ROM等;以及可經由傳輸媒體或諸如電、電磁或數位信號的經由諸如網路及/或無線鏈路之通信媒體傳送的信號存取的媒體。
通常,電腦可讀媒體200上之電路的資料結構可由程式讀取並直
接或間接地用以加工包含電路之硬體。舉例而言,資料結構可包括採用諸如Verilog或VHDL之高階設計語言(HDL)對硬體功能性之一或多個行為層級描述或暫存器傳送層級(RTL)描述。描述可由合成工具讀取,該合成工具可合成描述以產生一或多個接線對照表,該一或多個接線對照表包含來自合成庫之閘的清單。接線對照表包含一組閘,該組閘亦表示包含電路之硬體的功能性。接線對照表可接著被置放並路由以產生描述待應用至遮罩之幾何形狀的一或多個資料集。遮罩可接著用於各種半導體加工步驟中以產生對應於電路之半導體電路。或者,如需要,電腦可讀媒體200上之資料結構可為接線對照表(有或無合成庫)或資料集。在又一替代例中,資料結構可包含示意性程式的輸出或接線對照表或自接線對照表導出之資料集。雖然電腦可讀媒體200包括IC 10之表示,但其他實施例可包括IC 10之任何部分或部分之組合的表示(例如,處理器複合體20、CPU 22、L2快取記憶體30)。
應強調的是,上述實施例僅係實施之非限制性實例。對於熟習此項技術者而言,一旦已完全瞭解了上述揭示內容,眾多變化及修改便將變得顯而易見。意欲將以下申請專利範圍解譯為涵蓋所有此等變化及修改。
72‧‧‧核心
74‧‧‧L1預取單元
76‧‧‧預取表
78‧‧‧L2快取記憶體
80‧‧‧L2預取單元
82‧‧‧表
Claims (18)
- 一種處理器,其包含:一快取記憶體階層架構,其包含配置成兩個層級之至少兩個快取記憶體;一第一預取單元,其與該至少兩個快取記憶體之一第一快取記憶體相關聯,其中該第一預取單元經組態以維持一第一預取表,該第一預取表包含複數個經組態以儲存訓練資料之輸入項,其中每一輸入項包含一串流識別符(ID)及與一對應串流相關聯之屬性;一第二預取單元,其與該至少兩個快取記憶體之一第二快取記憶體相關聯,該第二預取單元與該第一預取單元不同,其中該第二預取單元經組態以維持一第二預取表,針對該第一預取表中之每一輸入項,該第二預取表具有經組態以儲存訓練資料之一輸入項,每一輸入項包含一串流ID及與一對應串流相關聯之屬性;及與該第一快取記憶體相關聯之一預取訓練機構;其中該預取訓練機構經組態以產生針對複數個串流中之每一者的訓練資訊,其中該訓練資訊係用於判定該第一預取單元是否將對應於該複數個串流之資料的預取請求發佈至該第一快取記憶體;其中該第一預取單元是經組態以將該訓練資訊傳送該第二預取單元;且其中該第二預取單元不執行任何預取訓練且經組態以基於儲存於該第二預取表中之訓練資料將對應於複數個串流之資料的預取請求發佈至該第二快取記憶體。
- 如請求項1之處理器,其中該訓練資訊包括暫時資料,該暫時資料由該第二快取記憶體使用作為一快取替換策略之部分。
- 如請求項2之處理器,其中該第一預取單元經組態以:基於儲存於該第一預取表中之一對應輸入項中的屬性來產生對一給定串流的一預取請求;及傳送該預取請求及一封包至該第二快取記憶體,其中該封包包含來自該第一預取表中之該對應輸入項的一或多個屬性。
- 如請求項3之處理器,其中該第二預取單元經進一步組態以:偵測一給定串流之一頁邊界;及回應於偵測到該頁邊界而停止預取。
- 如請求項1之處理器,其中使該第二預取表中之訓練資訊與該第一預取表中之訓練資訊同步。
- 如請求項1之處理器,其中該第二預取單元經組態以:計數由該第一預取單元發佈之預取請求之一數目;及回應於判定該數目超過一臨限值,增加由該第二預取單元產生之預取請求之一數目。
- 如請求項1之處理器,其中該預取訓練機構耦接至該複數個層級之快取記憶體中的一最高層級之快取記憶體,且產生針對複數個串流之訓練資訊,其中該訓練資訊係用於在該複數個層級之快取記憶體中的每一者處產生預取請求。
- 如請求項1之處理器,其中該第一預取表中之該等屬性包含一對應串流是否為一載入串流或一儲存串流之一指示。
- 如請求項7之處理器,其中該預取單元經組態以:基於該訓練資訊產生複數個預取請求;對於每一預取請求產生一封包,其中該封包包含與該預取請求及一對應串流相關聯的屬性;及 將該預取請求及該封包傳送至一較低層級快取記憶體。
- 如請求項1之處理器,其中該訓練資訊進一步包含由該第二快取記憶體使用以偏置一快取替換策略中路選擇(way selection)之資料。
- 如請求項10之處理器,其中該等屬性進一步包含該對應串流之一步幅。
- 如請求項10之處理器,其中該預取單元經進一步組態以回應於偵測到由一載入串流及一儲存串流對一相同位址的存取而向該載入串流及該儲存串流指派一單一串流ID。
- 一種方法,其包含:對複數個串流產生訓練資訊,其中由在一第一快取記憶體層級耦接至一第一快取記憶體之一預取訓練機構執行該訓練,其中該訓練資訊被用於判定一第一預取單元是否將對應於該複數個串流之預取請求發佈至該第一快取記憶體;及將該訓練資訊儲存於在該第一快取記憶體層級之一第一表中,其中該第一表包含複數個輸入項,每一輸入項包含一串流識別符(ID)及與一對應串流相關聯之屬性;將該訓練資訊傳送至一第二快取記憶體層級;將該訓練資訊儲存於在該第二快取記憶體層級之一第二表中,其中該第二表包含複數個輸入項,每一輸入項包含一串流識別符(ID)及與一對應串流相關聯之屬性;及與該第一預取單元不同之一第二預取單元,其在該第二快取記憶體層級耦接至該第二快取記憶體且基於儲存於該第二表中之訓練資料對複數個串流發佈預取請求至該第二快取記憶體,且其中該第二預取單元不執行任何預取訓練。
- 如請求項13之方法,其中使該第二表與該第一表同步。
- 如請求項13之方法,其進一步包含:由該第二預取單元計數由該第一預取單元發佈之預取請求之一數目;及回應於判定該數目超過一臨限值,增加由該第二預取單元產生之預取請求之一數目。
- 如請求項15之方法,其中該訓練資訊包括暫時資料,該暫時資料由該第二快取記憶體使用作為一快取替換策略之部分。
- 如請求項14之方法,其進一步包含將該訓練資訊儲存於處於一第三快取記憶體層級之一第三表中,其中使該第三表與該第二表同步。
- 如請求項13之方法,其中該第一快取記憶體層級係一第一層級(L1)快取記憶體,其中該第二快取記憶體層級係一第二層級(L2)快取記憶體。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/425,123 US9098418B2 (en) | 2012-03-20 | 2012-03-20 | Coordinated prefetching based on training in hierarchically cached processors |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201346556A TW201346556A (zh) | 2013-11-16 |
TWI545435B true TWI545435B (zh) | 2016-08-11 |
Family
ID=47900909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102109728A TWI545435B (zh) | 2012-03-20 | 2013-03-19 | 於階層式快取處理器中之協調預取 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9098418B2 (zh) |
EP (1) | EP2642398B1 (zh) |
KR (1) | KR101483849B1 (zh) |
CN (1) | CN103324585B (zh) |
TW (1) | TWI545435B (zh) |
WO (1) | WO2013142148A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI805435B (zh) * | 2022-01-07 | 2023-06-11 | 美商聖圖爾科技公司 | 預取指方法和微處理器 |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150334016A1 (en) * | 2009-11-26 | 2015-11-19 | Nec Corporation | Relay device |
US8966185B2 (en) | 2012-06-14 | 2015-02-24 | International Business Machines Corporation | Cache memory prefetching |
US9348754B2 (en) | 2012-10-11 | 2016-05-24 | Soft Machines Inc. | Systems and methods for implementing weak stream software data and instruction prefetching using a hardware data prefetcher |
US9424046B2 (en) | 2012-10-11 | 2016-08-23 | Soft Machines Inc. | Systems and methods for load canceling in a processor that is connected to an external interconnect fabric |
US9483406B2 (en) * | 2013-03-11 | 2016-11-01 | Via Technologies, Inc. | Communicating prefetchers that throttle one another |
US20150095586A1 (en) * | 2013-09-30 | 2015-04-02 | Advanced Micro Devices , Inc. | Storing non-temporal cache data |
US9569361B2 (en) | 2014-01-10 | 2017-02-14 | Samsung Electronics Co., Ltd. | Pre-fetch chaining |
CN103747105A (zh) * | 2014-01-26 | 2014-04-23 | 深圳市远行科技有限公司 | 一种网络文件的缓存方法及系统 |
US9811467B2 (en) * | 2014-02-03 | 2017-11-07 | Cavium, Inc. | Method and an apparatus for pre-fetching and processing work for procesor cores in a network processor |
US9436786B1 (en) * | 2014-02-12 | 2016-09-06 | Xilinx, Inc. | Method and circuits for superclocking |
CN104809080B (zh) * | 2014-05-27 | 2019-09-17 | 威盛电子股份有限公司 | 相互节流的通信预取器 |
US9612970B2 (en) * | 2014-07-17 | 2017-04-04 | Qualcomm Incorporated | Method and apparatus for flexible cache partitioning by sets and ways into component caches |
US20160041914A1 (en) * | 2014-08-05 | 2016-02-11 | Advanced Micro Devices, Inc. | Cache Bypassing Policy Based on Prefetch Streams |
CN107079044A (zh) * | 2014-09-25 | 2017-08-18 | 交互数字专利控股公司 | 用于内容感知缓存的过程和用于多点协作传输的无线电资源管理 |
US9891916B2 (en) * | 2014-10-20 | 2018-02-13 | Via Technologies, Inc. | Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system |
CN104378420B (zh) * | 2014-11-12 | 2017-12-29 | 东软集团股份有限公司 | 基于环境感知的数据传输方法及装置 |
EP3129887B1 (en) * | 2014-12-14 | 2018-08-15 | VIA Alliance Semiconductor Co., Ltd. | Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type |
KR101757098B1 (ko) * | 2014-12-14 | 2017-07-26 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 메모리 액세스에 의한 효용성 기반 공격성 레벨 프리패칭 |
US9734072B2 (en) * | 2015-03-24 | 2017-08-15 | Macom Connectivity Solutions, Llc | Main memory prefetch operation and multiple prefetch operation |
US9600417B2 (en) * | 2015-04-29 | 2017-03-21 | Google Inc. | Data caching |
US9971694B1 (en) | 2015-06-24 | 2018-05-15 | Apple Inc. | Prefetch circuit for a processor with pointer optimization |
US11169925B2 (en) * | 2015-08-25 | 2021-11-09 | Samsung Electronics Co., Ltd. | Capturing temporal store streams into CPU caches by dynamically varying store streaming thresholds |
US10268586B2 (en) | 2015-12-08 | 2019-04-23 | Via Alliance Semiconductor Co., Ltd. | Processor with programmable prefetcher operable to generate at least one prefetch address based on load requests |
US10642617B2 (en) | 2015-12-08 | 2020-05-05 | Via Alliance Semiconductor Co., Ltd. | Processor with an expandable instruction set architecture for dynamically configuring execution resources |
US11061853B2 (en) | 2015-12-08 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Processor with memory controller including dynamically programmable functional unit |
US9934149B2 (en) | 2016-03-31 | 2018-04-03 | Qualcomm Incorporated | Prefetch mechanism for servicing demand miss |
US10180905B1 (en) | 2016-04-07 | 2019-01-15 | Apple Inc. | Unified prefetch circuit for multi-level caches |
US9904624B1 (en) | 2016-04-07 | 2018-02-27 | Apple Inc. | Prefetch throttling in a multi-core system |
US10013357B2 (en) | 2016-05-09 | 2018-07-03 | Cavium, Inc. | Managing memory access requests with prefetch for streams |
US10452551B2 (en) * | 2016-12-12 | 2019-10-22 | Intel Corporation | Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register |
US10242654B2 (en) | 2017-01-25 | 2019-03-26 | Microsoft Technology Licensing, Llc | No miss cache structure for real-time image transformations |
US9978118B1 (en) * | 2017-01-25 | 2018-05-22 | Microsoft Technology Licensing, Llc | No miss cache structure for real-time image transformations with data compression |
US10331567B1 (en) | 2017-02-17 | 2019-06-25 | Apple Inc. | Prefetch circuit with global quality factor to reduce aggressiveness in low power modes |
US10514753B2 (en) | 2017-03-27 | 2019-12-24 | Microsoft Technology Licensing, Llc | Selectively applying reprojection processing to multi-layer scenes for optimizing late stage reprojection power |
US10410349B2 (en) | 2017-03-27 | 2019-09-10 | Microsoft Technology Licensing, Llc | Selective application of reprojection processing on layer sub-regions for optimizing late stage reprojection power |
US10255891B2 (en) | 2017-04-12 | 2019-04-09 | Microsoft Technology Licensing, Llc | No miss cache structure for real-time image transformations with multiple LSR processing engines |
US10387320B2 (en) | 2017-05-12 | 2019-08-20 | Samsung Electronics Co., Ltd. | Integrated confirmation queues |
US10613983B2 (en) * | 2018-03-20 | 2020-04-07 | Advanced Micro Devices, Inc. | Prefetcher based speculative dynamic random-access memory read request technique |
CN109446111B (zh) * | 2018-10-15 | 2021-01-26 | 上海兆芯集成电路有限公司 | 存储器集成电路及其预取地址决定方法 |
CN110232030B (zh) * | 2019-06-12 | 2021-08-10 | 上海兆芯集成电路有限公司 | 多芯片系统及缓存处理方法 |
US11126556B1 (en) | 2019-07-19 | 2021-09-21 | Marvell Asia Pte, Ltd. | History table management for a correlated prefetcher |
CN110865947B (zh) * | 2019-11-14 | 2022-02-08 | 中国人民解放军国防科技大学 | 一种面向预取数据的高速缓存管理方法 |
CN113128531B (zh) * | 2019-12-30 | 2024-03-26 | 上海商汤智能科技有限公司 | 一种数据处理方法及装置 |
CN113435601A (zh) * | 2020-03-23 | 2021-09-24 | 华为技术有限公司 | 数据预取方法、装置以及存储设备 |
US11442864B2 (en) | 2020-06-29 | 2022-09-13 | Marvell Asia Pte, Ltd. | Managing prefetch requests based on stream information for previously recognized streams |
CN113568848B (zh) * | 2020-07-29 | 2023-07-11 | 华为技术有限公司 | 处理器、信号调整方法及计算机系统 |
KR20220127504A (ko) * | 2021-03-11 | 2022-09-20 | 삼성전자주식회사 | 블록 장치 이미지에 대한 런타임 체크섬 검증을 수행하는 전자 장치 및 이의 동작 방법 |
US20230306031A1 (en) * | 2021-06-23 | 2023-09-28 | Beijing Baidu Netcom Science Technology Co., Ltd. | Method for data processing, computing device, and storage medium |
US11630670B2 (en) | 2021-07-21 | 2023-04-18 | Apple Inc. | Multi-table signature prefetch |
CN114358179A (zh) * | 2021-12-31 | 2022-04-15 | 海光信息技术股份有限公司 | 处理器的预取训练方法、处理装置、处理器和计算设备 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6381678B2 (en) * | 1998-10-30 | 2002-04-30 | Intel Corporation | Processing ordered data requests to a memory |
US6519682B2 (en) | 1998-12-04 | 2003-02-11 | Stmicroelectronics, Inc. | Pipelined non-blocking level two cache system with inherent transaction collision-avoidance |
US6317811B1 (en) | 1999-08-26 | 2001-11-13 | International Business Machines Corporation | Method and system for reissuing load requests in a multi-stream prefetch design |
US6446167B1 (en) * | 1999-11-08 | 2002-09-03 | International Business Machines Corporation | Cache prefetching of L2 and L3 |
US6578130B2 (en) | 2001-10-18 | 2003-06-10 | International Business Machines Corporation | Programmable data prefetch pacing |
TWI227402B (en) * | 2002-06-18 | 2005-02-01 | Ip First Llc | Microprocessor and method for performing selective prefetch based on bus activity level |
US7836259B1 (en) | 2004-04-02 | 2010-11-16 | Advanced Micro Devices, Inc. | Prefetch unit for use with a cache memory subsystem of a cache memory hierarchy |
US8490065B2 (en) * | 2005-10-13 | 2013-07-16 | International Business Machines Corporation | Method and apparatus for software-assisted data cache and prefetch control |
US7774578B2 (en) | 2006-06-07 | 2010-08-10 | Advanced Micro Devices, Inc. | Apparatus and method of prefetching data in response to a cache miss |
US7937532B2 (en) | 2007-03-30 | 2011-05-03 | Intel Corporation | Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine |
US8255631B2 (en) * | 2008-02-01 | 2012-08-28 | International Business Machines Corporation | Priority-based prefetch requests scheduling and throttling |
US8266393B2 (en) | 2008-06-04 | 2012-09-11 | Microsoft Corporation | Coordination among multiple memory controllers |
US8140769B2 (en) | 2009-04-20 | 2012-03-20 | Oracle America, Inc. | Data prefetcher |
US8667225B2 (en) * | 2009-09-11 | 2014-03-04 | Advanced Micro Devices, Inc. | Store aware prefetching for a datastream |
US8769209B2 (en) * | 2010-12-20 | 2014-07-01 | Intel Corporation | Method and apparatus for achieving non-inclusive cache performance with inclusive caches |
US9026739B2 (en) * | 2012-03-07 | 2015-05-05 | Advanced Micro Devices, Inc. | Multimode prefetcher |
-
2012
- 2012-03-20 US US13/425,123 patent/US9098418B2/en active Active
-
2013
- 2013-03-12 WO PCT/US2013/030497 patent/WO2013142148A2/en active Application Filing
- 2013-03-18 EP EP20130159754 patent/EP2642398B1/en active Active
- 2013-03-19 KR KR20130029235A patent/KR101483849B1/ko active IP Right Grant
- 2013-03-19 TW TW102109728A patent/TWI545435B/zh active
- 2013-03-20 CN CN201310088699.7A patent/CN103324585B/zh active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI805435B (zh) * | 2022-01-07 | 2023-06-11 | 美商聖圖爾科技公司 | 預取指方法和微處理器 |
Also Published As
Publication number | Publication date |
---|---|
WO2013142148A3 (en) | 2015-07-02 |
TW201346556A (zh) | 2013-11-16 |
EP2642398A1 (en) | 2013-09-25 |
KR101483849B1 (ko) | 2015-01-16 |
US20130254485A1 (en) | 2013-09-26 |
EP2642398B1 (en) | 2015-05-20 |
CN103324585A (zh) | 2013-09-25 |
US9098418B2 (en) | 2015-08-04 |
CN103324585B (zh) | 2016-08-10 |
WO2013142148A2 (en) | 2013-09-26 |
KR20130106789A (ko) | 2013-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI545435B (zh) | 於階層式快取處理器中之協調預取 | |
US11074190B2 (en) | Slot/sub-slot prefetch architecture for multiple memory requestors | |
US9047198B2 (en) | Prefetching across page boundaries in hierarchically cached processors | |
EP2786255B1 (en) | A dram cache with tags and data jointly stored in physical rows | |
US8751746B2 (en) | QoS management in the L2 cache | |
US8856447B2 (en) | Converting memory accesses near barriers into prefetches | |
KR20120070584A (ko) | 데이터 스트림에 대한 저장 인식 프리페치 | |
US9135177B2 (en) | Scheme to escalate requests with address conflicts | |
US20140089600A1 (en) | System cache with data pending state | |
US8880847B2 (en) | Multistream prefetch buffer | |
US9384131B2 (en) | Systems and methods for accessing cache memory | |
TWI805831B (zh) | 用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和電腦可讀取媒體 | |
EP2901287B1 (en) | System cache with sticky removal engine | |
US10963392B1 (en) | Victim allocations in shared system cache | |
EP2562652B1 (en) | System and method for locking data in a cache memory | |
US11016899B2 (en) | Selectively honoring speculative memory prefetch requests based on bandwidth state of a memory access path component(s) in a processor-based system | |
US20120151150A1 (en) | Cache Line Fetching and Fetch Ahead Control Using Post Modification Information |