TWI757539B - 用於資料預取之系統、方法及設備 - Google Patents

用於資料預取之系統、方法及設備 Download PDF

Info

Publication number
TWI757539B
TWI757539B TW107129212A TW107129212A TWI757539B TW I757539 B TWI757539 B TW I757539B TW 107129212 A TW107129212 A TW 107129212A TW 107129212 A TW107129212 A TW 107129212A TW I757539 B TWI757539 B TW I757539B
Authority
TW
Taiwan
Prior art keywords
value
prefetch
cache
depth value
accuracy
Prior art date
Application number
TW107129212A
Other languages
English (en)
Other versions
TW201931130A (zh
Inventor
李炫陳
元俊 周
約翰 派普
Original Assignee
美商甲骨文國際公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商甲骨文國際公司 filed Critical 美商甲骨文國際公司
Publication of TW201931130A publication Critical patent/TW201931130A/zh
Application granted granted Critical
Publication of TWI757539B publication Critical patent/TWI757539B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

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)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)

Abstract

本發明揭示一種用於預取一處理器之資料之系統,該系統包含:一處理器核心,一記憶體,其經組態以儲存供該處理器核心使用之資訊,一快取記憶體,其經組態以提取並儲存來自該記憶體之資訊,及一預取電路。該預取電路可經組態以發出一多群組預取請求,以檢索來自該記憶體之資訊以使用一預測位址來儲存於該快取記憶體中。該多群組預取請求可包含指示待檢索之提取群組數目之一深度值。該預取電路亦可經組態以基於一特定時間間隔內之預取資訊之一快取命中率來產生一準確度值,並基於該準確度值來修改該深度值。

Description

用於資料預取之系統、方法及設備
本文中揭示之實施例大致係關於處理器,且更特定言之,係關於資料預取系統之實施方案。
為改良執行效能,一處理器可包含一預取電路,在本文中亦稱為一預取器,用於一或多個快取記憶體以減少記憶體存取時間。用於一給定快取區之一預取器可在預期來自快取區之一即將到來之請求時自一較低階快取區或一系統記憶體讀取資料(即,在一處理核心請求資料之前提取資料)。一預取器可追蹤對應於在處理核心中運行之一或多個軟體程序之記憶體存取模式。使用此等模式,接著,預取器可在快取區請求資料之前讀取它。
在一些情況中,在一處理器上運行之一應用程式可以一水流狀模式存取資料,其中應用程式存取許多連續位址,但存取並非連續的。當遇到此等模式時預取大量資料可改良快取區之效率,直至需存取連續記憶體位址以外之一位址的情況。
用於預取一處理器之資料之一系統之各種實施例可包含: 一處理器核心,一記憶體,其經組態以儲存供該處理器核心使用之資訊,一快取記憶體,其經組態以提取並儲存來自該記憶體之資訊,及一預取電路。該預取電路可經組態以發出一多群組預取請求,以檢索來自該記憶體之資訊,以使用一預測位址來儲存於該快取記憶體中。該多群組預取請求可包含指示待檢索之提取群組數目之一深度值。該預取電路亦可經組態以基於一特定時間間隔內之預取資訊之一快取命中率來產生一準確度值,並基於該準確度值來修改該深度值。
在一項實施例中,為修改該深度值,該預取電路可經進一步組態以回應於該準確度值滿足一上臨限值之一判定而增加該深度值,及回應於該準確度值滿足一下臨限值之一判定而減少該深度值。在一進一步實施例中,為增加該深度值,該預取電路可經進一步組態以回應於該當前深度值等於一最大允許深度值之一判定而維持一當前深度值。
在另一實施例中,為減少該深度值,該預取電路可經進一步組態以回應於一當前深度值等於一最小允許深度值之一判定而暫停發出至少下一個時間間隔之預取請求。在一實施例中,為產生該準確度值,該預取電路亦可經組態以在該特定時間間隔內,追蹤指示在該快取記憶體中回應於一或多個預取請求而儲存之一資訊量之一第一值。該預取電路可經進一步組態以在該特定時間間隔內,追蹤指示快取行之快取命中之一數目之一第二值,該快取行包含回應於至少一個預取請求而儲存於該快取記憶體中之資訊。
在一進一步實施例中,該預取電路亦可經組態以回應於一或多個預取請求,基於該第一值、該第二值及儲存之該資訊總量之一加權移動平均值來判定該準確度值。在一項實施例中,為發出該多群組預取請 求,該預取電路可經進一步組態以發出數個單群組預取請求,其中該等單群組預取請求之數目基於該深度值。
100:計算系統
101:處理器核心
102:快取記憶體
103:記憶體
104:預取電路
200:記憶體子系統
202:快取記憶體
204:預取電路
210:深度調整器
212:預取產生器
214:準確度監控器
216:提取管線
300:資料表
301:處理器核心
302:快取記憶體
314:準確度監控器
402:快取記憶體
403:記憶體
410:深度調整器
412:預取產生器
500:時間表
521:時間間隔
522:時間間隔
523:時間間隔
524:時間間隔
525:時間間隔
600:方法
601:方塊
602:方塊
603:方塊
604:方塊
605:方塊
700:方法
701:方塊
702:方塊
703:方塊
704:方塊
705:方塊
706:方塊
707:方塊
708:方塊
709:方塊
710:方塊
800:方法
801:方塊
802:方塊
803:方塊
804:方塊
805:方塊
806:方塊
807:方塊
808:方塊
900:處理器
901a......901p:核心
902a......902p:L1快取區
910:匯流排
920a......920d:L2快取區
930:記憶體介面
940:L3快取區
950:系統記憶體
下文詳細描述參考附圖,現簡單地描述附圖。
圖1係繪示一處理器中之一記憶體子系統之一實施例之一方塊圖。
圖2展示一處理器中之一記憶體預取子系統之一實施例之一方塊圖。
圖3描繪與一快取區及一準確度監控器相關聯之資料表之一實施例。
圖4繪示與一處理器記憶體子系統相關聯之資料表之一實施例。
圖5包含一處理器中之一記憶體預取子系統之一實施例之一操作時間表。
圖6描繪基於一判定準確度來執行多群組預取請求之一方法之一實施例之一流程圖。
圖7繪示基於一判定準確度來執行多群組預取請求之一方法之另一實施例之一流程圖。
圖8展示用於判定一記憶體預取子系統之準確度之一方法之一實施例之一流程圖。
圖9描繪繪示一多核心處理器之一實施例之一方塊圖。
雖然本發明易於以各種修改及替代形式呈現,但其特定實施例在圖式中以實例之方式展示且將在本文中詳細描述。然而,應瞭解, 圖式及其詳細描述並不意欲將本發明限於所繪示之特定形式,恰相反,其意欲涵蓋落在如由隨附申請專利範圍定義的本發明之精神及範疇內之全部修改、等效物及替代物。本文中使用之標題僅用於組織目的,而並不意謂用以限制描述之範疇。如在本申請案各處使用,字詞「可」係以一允許意義(即,意謂具有可能性以)而非強制意義(即,意謂必須)使用。類似地,字詞「包含(include/including/includes)」意謂包含但不限於。
一般而言,一處理器核心(或簡稱為一「核心」)可係指一處理器之一單元,該處理器能夠獨立於處理器內之其他處理器核心執行程序指令及處理資料,使得多個核心可並行地執行指令。一處理器核心之效能可受多個因素影響,包含但不限於處理器時脈速度、處理器中之核心之數目、處理器中之快取記憶體(或簡稱為「快取區」)之數目及包含之快取區之一尺寸。
在一些計算系統中,可利用一預取器。如本文中所使用,一「預取器」係指經組態以在一處理器核心中之一執行單元或其他處理電路請求一或多個指令之前提取一或多個指令之一電路。通過與一快取區組合工作,一預取器可藉由預期哪個記憶體位址可由一特定軟體程序(亦在本文中稱為一「程序線程」)存取並在處理器發出位址之請求之前讀取來自此等位址之資訊而改良進入一處理器之一資訊流。若預取器已經準確地預期處理器之資料需求,則回應於來自一處理器之一記憶體請求,所請求之資訊可在很少或無延遲之情況下可供處理器存取。如本文中所使用,「資訊」係指由一計算系統中之一處理器或其他處理邏輯使用之指令及/或資料值。
可藉由各種請求者之任一者可自各種記憶體提取資料。一多核心處理器中之各核心可自一提取單元或預取器產生記憶體請求。可在兩個或多個核心之間共用之一些快取區可包含一提取電路以及預取器。一預取器之有效性可至少部分地基於預取電路識別一程序線程之記憶體存取中之模式並正確地預測何時重複模式之一能力。一些程序線程可存取一大區塊連續位址中之記憶體(諸如,例如,若正在播放一大型媒體檔案)。在此等情況中,在較大預取群組中預取資訊(即,待預取之一群組連續記憶體位址)可改良記憶體存取資源之一效率,導致一計算系統之改良效能。
然而,若程序線程存取之記憶體不同於連續位址,則將不利用由預取器請求之一些資訊。此一情形可稱為一預取位址誤預測或一預取未命中。
在本發明中論述預取器之各種實施例及管理預取操作之方法。在圖中繪示並在下文描述之實施例可提供用於管理一計算系統中之記憶體預取操作之一尺寸之技術,該技術可減少來自預取器之誤預測之發生。
在圖1中繪示繪示計算系統之一實施例之一方塊圖。計算系統100包含耦合至快取記憶體102之處理器核心101。快取記憶體102經進一步耦合至記憶體103及預取電路104。
處理器核心101可經組態以根據一特定指令集架構(ISA)執行指令及處理資料。在各種實施例中,處理器核心101可經組態以實施任何適合ISA(諸如例如SPARC® V9、x86、PowerPC®或MIPS®)。另外,在一些實施例中,處理器核心101可經組態以並行地執行多個線程(本文中稱為「多線程」),其中各線程可包含可獨立於來自另一線程之指令執行之 一組指令。儘管繪示一單一處理器核心101,但在其他實施例中,可預期任何適合數目之核心可包含於一處理器內,且各此核心可為多線程的。
快取記憶體102可駐留於處理器核心101內或可駐留於處理器核心101與其他記憶體之間。在一項實施例中,快取記憶體102可經組態以暫時地儲存或「快取」供處理器核心101使用之指令及資料。快取記憶體102可對應於各階快取記憶體之任一者(諸如例如L1、L2及L3)。例如,一處理器之一項實施例可包含處理器核心101內之一L1快取區,而L2快取區可由快取記憶體102表示,且L3快取區經包含為記憶體103之一部分。在一多核心處理器中,各核心可具有一或多個L1快取記憶體,並可共用一或多個L2及/或L3快取區。在各種實施例中,可使用組相關聯或直接映射技術來實施快取記憶體102。
應注意,快取記憶體102中之一條目可被稱為一快取行。快取記憶體102中之各快取行可包含經儲存之資料,對應於一致性狀態之旗標及一位址標籤。一快取標籤可包含經儲存於快取行中之資料之原始位址之全部或一部分,指示其中快取行儲存快取資料之一索引,及指示具體資料定位於各快取行中之位置之一偏移。一給定處理器核心可存取具有記憶體位置之一直接位址之一快取區,基於查找表之一轉譯位址,或通過基於一指令之位址模式計算之一位址。
在所繪示之實施例中,記憶體103包含用於儲存可供處理器核心101使用之資訊之系統記憶體,包含主動軟體(諸如例如由處理器核心101執行之一應用程式或操作系統)。在一些實施例中,記憶體103亦可包含用於儲存一L2及/或L3快取區中之資訊之保留位置。在一些實施例中,記憶體103可包含一或多個記憶體介面,用於存取包含於與一IC包含 處理器核心101分開之積體電路(IC)上之一或多個類型之系統記憶體。此等記憶體介面可經組態以回應於快取提取請求而管理快取記憶體102與記憶體103之間之資料之傳輸。記憶體103可包含任何適合類型之記憶體(諸如例如全緩衝雙列直插記憶體模群組(FB-DIMM)、雙資料速率同步動態隨機存取記憶體(DDR/DDR2/DDR3/DDR4 SDRAM)或減少延遲動態隨機存取記憶體(RLDRAM))。
在所繪示之實施例中,預取電路104使用預測位址以產生記憶體預取請求,以便用待供處理器核心101使用之資訊(即,資料及/或指令)填充快取記憶體102中之一或多個快取行。在具有超過一階快取記憶體之系統中,預取電路104可為一個快取記憶體(諸如例如一L2快取區)產生記憶體預取請求。在一些實施例中,可包含多個預取電路,其中各預取電路產生針對一特定快取記憶體之記憶體請求。預取電路104可產生一記憶體預取請求,該記憶體預取請求導致自一更高階快取區檢索資訊。例如,若預取電路104產生對一L2快取區之預取請求,則此等預取請求可被發送至一L3快取區。如本文中所使用,一「更高」快取區或「更高」記憶體係指距離處理器核心101更遠之快取區及記憶體,且「更低」快取區係指相反的。例如,系統記憶體高於L3快取區,L2快取區則低於L3快取區。若一特定預取請求在L3快取區中未命中,則L3快取區對來自包含於記憶體103中之系統記憶體之所請求之資訊產生一記憶體提取請求。如本文中所使用,一快取區「命中」係指對來自一快取記憶體之資訊之一請求,其中快取記憶體正儲存了所請求之資訊,而一快取「未命中」係指快取記憶體目前未儲存所請求之資訊之情況,且因此必須自一更高階快取區或系統記憶體檢索該資訊。此外,如本文中所使用之一「快取命中率」可 係指一快取命中發生在一特定時間間隔內之次數。
成功預取請求可導致快取記憶體102在處理器核心101請求資訊之前接收資訊,藉此允許處理器核心101執行指令而不等待一記憶體存取以返回所請求之資訊。在一些情況中,回應於一預取請求而檢索的資訊(即,「所預取資訊」)在處理器核心101準備好使用資訊之前可能未到達快取記憶體102中,但預取仍可在處理器核心101準備資訊時及在資訊係可存取時減少一時間。不成功預取請求可係由一不正確位址預測引起。位址預測係基於歷經時間觀察用於記憶體存取之位址的模式。若處理器核心101不同於此模式,或若一模式被不正確地識別,則可發生一誤預測,導致資訊在其不被需要時被檢索。誤預測可因不必要地消耗處理器資源並迫使快取區中之有用資訊錯置而對效能產生負面影響。
在一些情況中,預取電路104可發出「多行」或「多群組」預取請求。如本文中使用之一「提取群組」係指在一單一預取操作中檢索之若干記憶體位置。在一些實施例中,一提取群組可對應於填充快取記憶體102之一個快取行的資訊。在此等情況中,一「提取行」可與「提取群組」互換地使用。在其他情況中,一提取群組可不對應於一快取行尺寸,而是包含比經儲存於一給定快取行中少的資訊或更多的資訊。如本文中所使用之一「多群組」預取請求係指一單一預取請求,該單一預取請求導致複數個預取操作,用於檢索多個連續定址之提取群組。在所繪示之實施例中,為發出一多群組預取請求,預取電路104將一深度值儲存於一記憶體位置或暫存器中。此深度值對應於可用一單一多群組預取請求預取的數個提取群組。例如,若深度值當前具有一值4,則預取電路104可發出一多群組預取請求,以自具有連續提取位址之四個提取群組檢索資訊。在 各種實施例中,連續位址可為位址值之遞增或遞減次序。
在所繪示之實施例中,預取電路104亦包含用於監控預取器之一準確度的電路。使用此監控電路,預取電路104可調整深度值。準確度監控器追蹤由於一預取請求快取之資訊的使用量。若頻繁使用預取資訊,則預取電路104之對應準確度係高的,且可藉由檢索各多群組預取請求中之更多資訊來增加深度值,以善加利用預取電路104之當前準確度。相反地,若使用較少所預取資訊,則對應準確度可能較小且作為回應減少深度值。下文提出對應於多群組預取調整之進一步細節。
應注意,圖1僅係一實例。所繪示之實施例包含與揭示之概念相關之組件。在其他實施例中,可包含進一步組件。例如,其他實施例可包含若干階快取記憶體及/或多個處理器核心。
現轉至圖2,展示一處理器IC中之一記憶體預取子系統之一實施例之一方塊圖。記憶體子系統200包含快取記憶體202及預取電路204。另外,提取管線216經耦合至快取記憶體202及預取電路204。在一些實施例中,提取管線216可經包含為快取記憶體202之一部分或作為耦合至快取記憶體202之一分開之電路。預取電路204(其可對應於圖1中之預取電路104)包含各種子電路(諸如深度調整器210、預取產生器212及準確度監控器214)。在其他實施例中,深度調整器210、預取產生器212及準確度監控器214可經耦合至預取電路204,而不是包含於預取電路204中。
在所繪示之實施例中,提取管線216包含用於自更高階記憶體提取資訊並填充快取記憶體202中之快取行之硬體資源。回應於由來自一處理器核心(諸如例如圖1中之處理器核心101)之一記憶體請求引起之快取記憶體202中之一快取未命中,快取記憶體202中之電路導致提取管 線216自一更高記憶體(即,一更高階快取區、系統記憶體或一非揮發性記憶體)請求該未命中資訊。類似地,在所繪示之實施例中,預取電路204可利用提取管線216發出預取請求,以用已經預測由處理器核心101存取之資訊來填充快取記憶體202。
在所繪示之實施例中,預取產生器212基於所預取位址來發出預取請求,以填充快取記憶體202中之快取行。預取產生器212可發出單群組或多群組預取請求。當發出一多群組預取請求時,預取產生器212發出數個提取管線216之單群組請求。單群組提取請求之數目對應於起始在多群組預取請求時之深度值之值。預取產生器212可包含用於追蹤針對一特定多群組預取請求發出之數個單群組提取請求之若干暫存器。另外,預取產生器212可包含一佇列,其中儲存數個單群組預取請求,直至其被發出至提取管線216。
在所繪示之實施例中,記憶體子系統200包含準確度監控器214。準確度監控器214包含監控由預取電路204發出之預取請求引起之被預取至快取記憶體202中之快取行之電路。準確度監控器214可累加兩個計數值。第一計數值對應於一總計數值,且針對由預取電路204提取之各快取行累加。第二計數值對應於一使用之計數值,並當一較低記憶體(例如,一L1快取區或處理器核心101中之一提取單元)存取此等所預取快取行之一者時累加。準確度監控器214在一特定時間間隔內累加兩個計數值。在特定時間間隔結束時,準確度監控器214使用兩個計數值來判定指示由預取電路204產生之預取請求之準確度之一值。例如,準確度監控器214可藉由將使用之計數值除以總計數值而產生一準確度比率。在一些實施例中,準確度監控器214可另外將該商乘以一預定值,以便產生具有一 特定範圍之值內之一值之結果。接著,此準確度值可被發送至深度調整器210。準確度監控器214可清除兩個計數值,並重新開始累加各值,如在下一個時間間隔期間所描述。
在一些實施例中,準確度監控器214可追蹤總計數值及使用之計數值之一移動平均值。在此等實施例中,在特定時間間隔結束時,可將當前總計數值及當前使用之值各自添加至各別移動平均值。例如,在特定時間間隔結束時,當前總計數值及平均總計數值兩者可除以2(例如,各二進位值右移一個數位),且接著加在一起以產生一新平均總計數值。此一移動平均值可將平均總計數值更重地加權至最近總計數值,同時對較舊總計數值維持一些影響。可使用一類似程序以使用當前使用之計數值來產生一平均使用之計數值。在判定平均總計數及平均使用之計數值之後,可在下一個時間間隔清除當前總計數及當前使用之計數值,而重新判定之平均計數值將該等當前值維持至下一個時間間隔中。接著,可使用使用例如針對上文之準確度比率所描述之一程序之平均計數值來判定一準確度值。
在所繪示之實施例中,深度調整器210接收準確度值,並基於此準確度值來判定是否針對下一個時間間隔調整深度值。深度調整器210將接收之準確度值與一上臨限值及一下臨限值進行比較。若準確度值高於上臨限值,則深度調整器210可累加深度值以增加用各多群組預取請求檢索之提取群組之一數目。藉由在一單一多群組請求中預取更多提取群組,可在一主動程序線程存取大量連續資料之時間期間增加記憶體子系統200之效率。相反地,若準確度值小於下臨限值,則深度調整器210可累減深度值,以減少用各多群組預取請求檢索之提取群組之一數目。藉由在 一信號多群組請求中預取較少提取群組,在一主動程序線程正在請求非連續記憶體存取之時間期間,可在記憶體子系統200中減少預取誤預測。
為識別快取記憶體202中之預取之快取行,可在此等所預取快取行儲存於快取記憶體202中時將其標記。例如,一快取行可包含在預取發生之後將一或多個位元(本文中稱為一「預取識別符(prefetch identifier)」或「預取ID」)設定成一特定值以指示快取行已回應於預取電路204發出預取請求而被提取,否則重新設定成一替代值。當使用一經識別預取快取行,除了累加當前使用之計數值之外,還可重新設定預取ID。藉由在對應快取行之一第一使用之後重新設定預取ID,可在判定準確度值時對各所預取快取行計數一次。否則,若正由處理器核心101執行一軟體程序重複存取與一特定快取行相關聯之位址,則可針對各存取累加當前使用之計數值。即使不使用其他預取快取行,此亦可產生一高準確度值。僅對各所預取快取行計數一次可改良準確度值之有用性。應注意,若使用一預取快取行,且接著隨後清除(即,收回),且接著隨後再次預取,則在第二預取操作之後將設定預取ID。
亦應注意,圖2之系統僅係一實例,且功能電路限於強調一記憶體預取系統之功能性。在其他實施例中,可包含進一步及/或不同功能電路。
在圖3中繪示一準確度監控器之操作之進一步細節。資料表300繪示與一快取區及一準確度監控器相關聯之資料表之一實例。在所繪示之實施例中,處理器核心301可對應於圖1中之處理器核心101,並展示核心內之一指令管線之一部分。快取記憶體302描繪如何在一快取記憶體(諸如例如快取記憶體102或202)內組織資料之一邏輯表示。準確度監控 器314展示可由一準確度監控電路(諸如例如準確度監控器214)追蹤之四個值。
快取記憶體302可對應於一處理系統中之任何適合快取記憶體。在所繪示之實施例中,快取記憶體302對應於一L1快取記憶體,該L1快取記憶體經耦合至一預取電路(諸如例如圖2中之預取電路204)。快取記憶體302可經組織成多個快取行,如由行_0至行_6所指示,其中各行包含所快取資訊及一旗標。各行可固持對應於一記憶體位址範圍之任何適合數目之資訊位元組。在所繪示之實施例中,針對各快取行展示四段資訊,儘管在其他實施例中,可使用任何適合數目。所快取資訊包含回應於來自預取電路204之一預取請求而提取之資訊,以及由快取記憶體302中之提取電路提取之資訊。各快取行包含關於快取行之資訊,該等資訊包含一位元以指示各別快取行是由何者提取:快取記憶體302中之提取電路(本文中由一值「0」表示)或預取電路204(本文中由一值「1」表示)。快取行可包含進一步旗標,以及包含一標籤,該標籤包含對一系統記憶體中之資訊之原始位址之參照。進一步旗標可包含與其他記憶體相關之一致性資料,其中可儲存相同資訊及/或儲存之類型之資訊(諸如指令或資料)。為清楚起見,此進一步資訊未在圖3中表示。
當執行一軟體程序時,處理器核心301可自快取記憶體302檢索各種片段資訊。如所示,處理器核心301自行_0檢索細目D2,自行_1檢索細目D5,自行_2檢索細目D8,及自行_3檢索細目D12。如由各快取行之旗標所指示,行_0及行_3由快取記憶體302之提取電路提取,而行_1及行2由預取電路204提取。
在所繪示之實施例中,準確度監控器314如針對上文準確 度監控器214所描述般起作用。準確度監控器314追蹤四個值:一當前總計數、一平均總計數、一當前使用之計數及一平均使用之計數。在一些實施例中,當前總計數值及當前使用之計數值可經實施為各別計數器電路。在所繪示之實例中,假定快取行行_0至行_6已經在一當前時間間隔內被提取。在此當前時間間隔中,已由預取電路204提取所提取快取行之四者(包含行_1、行_2、行_4及行_5)。剩餘快取行係由快取記憶體302之提取電路提取。在當前時間間隔中,來自所預取快取行之兩者(行_1及行_2)之資訊係由處理器核心301使用。應注意,指示行_1及行_2被預取之旗標值在圖3A中保持設定成「1」。在準確度監控器314將當前使用之值累加至「2」之後,如所示,此等兩個使用之預取快取行之旗標值將被重新設定成「0」。
如所示,平均總計數及平均使用之計數之值可反映在先前時間間隔之完成之後之值。在當前時間間隔結束時,準確度監控器314基於在時間間隔結束時之當前總計數及當前使用之計數之值來判定平均總計數及平均使用之計數兩者之新值。若所繪示之值反映在時間間隔結束時之計數值,則在一項實施例中,準確度監控器314藉由將各值除以2(以2劃分)而判定新平均計數值,且接著將被劃分之當前總計數(即,「2」)加至被劃分之平均計數(即,「1」),以設定一新平均總計數(「3」)。可類似地判定新平均使用之值,導致一新平均使用計數為「1」。接著,準確度監控器314可使用新值來判定一準確度值。在一項實施例中,準確度監控器314將新平均使用之計數(「1」)除以新平均總計數(「3」),導致一準確度值0.3333。此值可乘以一適合值以產生一整數值(諸如例如乘以100以產生一準確值33,或乘以1000以產生一準確值333)。在所繪示之實施例 中,此準確度值被發送至其他電路(諸如例如圖2中之深度調整器210),以便判定深度值是否在下一個時間間隔中被調整。
應注意,圖3之表僅係一實例。在其他實施例中,進一步資訊(諸如相關位址資訊)可經包含於快取記憶體302中。圖3之表不旨在表示儲存之資料在一快取記憶體或其他電路中之一實體配置,而是旨在僅繪示資料之一邏輯組織。
移動至圖4,描繪與一處理器記憶體子系統(諸如例如圖2中之記憶體子系統200)相關聯之進一步資料表。記憶體子系統400包含快取記憶體402、記憶體403、深度調整器410及預取產生器412。快取記憶體402及記憶體403各自描繪資料如何各別地在一快取記憶體及一系統記憶體內組織之一邏輯表示。深度調整器410包含四個值:深度值及最大深度(其各者係整數值),及上臨限值及下臨限值(其各者係百分比值)。預取產生器412包含一處理佇列中之六個條目以及一當前位址及當前計數值。
在所繪示之實施例中,預取產生器412產生並發出預取請求,以填充快取記憶體402中之快取行。在一些實施例中,預取產生器412對應於圖2之預取產生器212,且因此能夠產生多群組預取請求。在本實例中,一個提取群組對應於一行快取記憶體402,且預取產生器412產生六個多群組預取命令,各自具有一位址及一深度值,並將其儲存於處理佇列中,其中最舊請求在佇列之左側上。
為產生第一多群組預取請求,預取產生器在產生請求時自深度調整器410讀取深度值。在實例中,處理佇列中之最舊請求包含一位址「A0」及一深度值「3」,該深度值「3」對應於產生請求時之深度值。為處理此請求,預取產生器412將位址值複製至當前位址暫存器中,並將 深度值複製至當前計數值中。在所繪示之實施例中,預取產生器412發出一單群組預取請求,以提取快取記憶體402中之電路(諸如例如提取管線216)。使用當前位址來發出單群組預取請求。回應於發出此單群組預取請求,預取產生器412將當前位址累加對應於一提取群組之一尺寸之一值,在此實例中為一個快取行(即,4個位址位置)。預取產生器412亦累減當期計數值。當當前計數值到達「0」時,多群組預取請求已完成,並處理下一個多群組預取請求。
在圖4之實例中,正在處理具有一位址「A24」之多群組預取請求。當前位址係A28,反映一第二單群組預取請求已經發出至快取記憶體402,且快取行_7正被對應資料填充。計數值係「0」指示正在為當前多群組預取請求執行最後單群組預取請求,且預取產生器412可移動至具有位址值「A32」之下一個請求。藉由以此方式發出多群組預取請求,可增加可由處理佇列中之預取請求填充之快取記憶體402中之快取行之數目。在實例中,處理佇列中之六個所繪示之請求可填充14個快取行。若此等六個多群組預取請求由單群組預取請求替代,則僅六個快取行可由六個請求填充。藉由對儲存於連續位址中之資訊發出多群組預取請求,被存取之記憶體(在此實例中之記憶體403)亦可能能夠以一更及時方式提供資料。
應注意,在產生具有位址「A12」之請求與具有位址「A24」之請求之間,深度值自3減少至2。預取產生器412接收一準確度值,該準確度值對應於正在一特定時間間隔中使用之總所預取快取行之小於30%。作為回應,減少深度值以限制由預取產生器412發出之預取之數目,同時準確度低於下臨限值。若在稍後時間間隔中準確度值上升至高於 上臨限值,則可累加深度值。如先前所陳述,在一些實施例中,在調整深度值之前,準確度值可在兩個或多個連續時間間隔內保持低於下臨限值或高於上臨限值。若準確度值保持高,則深度值可繼續由深度調整器410累加,直至到達最大值。最大值對應於深度值之一最大可允許值。出於各種理由,深度值可受限於最大值,諸如以防止預取請求打擊記憶體提取資源(諸如例如提取管線216)。另外,若深度值過高,則一預取誤預測之風險可增加。
在一些實施例中,深度調整器410亦可包含一最小可允許深度值。若當前深度值處於最小可允許深度值,且準確度值低於下臨限值,則可暫停預取請求而不是繼續減少深度值。此一暫停可持續一預定數目之時間間隔。在所繪示之實施例中,最小可允許深度值可經固定於「1」處,使得若深度值被累減至「0」,則預取請求被暫停。
注意,圖4之表僅係一實例。圖4之表旨在繪示資料之一邏輯組織,且不旨在表示與電路相關聯之儲存之資料之一實體配置。在其他實施例中,進一步資訊(諸如相關位址資訊)可包含於快取記憶體402中。儲存於所繪示之表之任一者中之實際資料量可大於圖4中所示之資料量。
進行至圖5,展示一處理器記憶體預取系統之一實施例之一操作時間表。時間表500可應用於各別地在圖1及圖2中之計算系統100或記憶體子系統200之實施例。在所繪示之實施例中,時間表500包含五個時間間隔:時間間隔521至時間間隔525。此等時間間隔可對應於上文所論述之時間間隔。參考圖2中及圖5中之記憶體子系統200,時間表500以時間間隔521開始。
在時間間隔521期間,預取電路204係主動的,且來自預取 電路204之預取請求之準確度係由準確度監控器214監控。深度值當前被設定成2。在時間間隔521結束時,準確度監控器214將一新判定之準確度值發送至深度調整器210。在所繪示之實施例中,深度調整器210判定準確度值滿足一上準確度臨限值,且作為回應,將深度值自2累加至3。
在時間間隔522中,準確度監控器214繼續操作,而預取電路204可繼續發出預取請求。在時間間隔522結束時,準確度監控器214將一新準確度值發送至深度調整器210。在當前實例中,深度調整器判定準確度值滿足一下準確度臨限值,且作為回應,將深度值累減回至2之值。準確度監控器214之操作可在時間間隔523及524中與時間間隔522相同,且深度調整器210可在時間間隔523結束時將深度值自2累減至1,且在時間間隔524結束時再次累減至一值0。時間間隔522至524中之減少之準確度可由一當前正在執行之程序線程之操作中之一改變引起。例如,程序線程可自讀取一大檔案轉換至執行存取不同記憶體位置之一不同任務,藉此導致來自預取電路204之預取請求之準確度之一下降。藉由監控預取操作之準確性,深度調整器210可在當準確度值係高之時間期間增加深度值,導致記憶體子系統之較高效率,且亦可對改變一程序線程之操作之改變作出反應並在低準確度之時間期間減少深度值,導致較少預取誤預測。
在一些實施例中,在深度調整器210修改深度值之前,準確度值可需要滿足兩個或多個連續時間間隔之上臨限值或下臨限值。在所繪示之實施例中,滿足一個時間間隔之一臨限值足以改變深度值。
應注意,圖5之時間表係用於展示揭示之概念之一實例。雖然時間間隔經展示為類似長度,但任何給定時間間隔中之時間量可基於經監控資料變化。例如,若準確度值在連續時間間隔之間大量改變,則可 縮短未來時間間隔之長度,直至準確度值在間隔之間更一致。
現轉至圖6,描繪用於基於一判定準確度來執行多群組預取請求之一方法之一實施例之一流程圖。在各種實施例中,方法600可應用於一記憶體子系統(諸如例如圖2中之記憶體子系統200)。共同參考圖2及圖6,方法600開始於方塊601中。
產生一多群組預取請求(方塊602)。預取產生器212產生一多群組預取請求,該多群組預取請求包含一位址值及一當前深度值,該當前深度值對應於為此請求處理之數個提取群組。各多群組預取請求可被儲存於一處理器佇列(諸如一先進先出(FIFO)佇列)。在所繪示之實施例中,預取產生器212利用基於對應位址值之一位址暫存器及基於深度值之儲存值之一計數值。預取產生器212進行發出一系列單群組預取請求,以提取管線216,以便執行多群組預取請求,累減發出之各單群組預取請求的計數值。在計數值到達零之後,已經完成多群組預取請求,且可處理來自處理佇列之下一個預取請求。
產生一準確度值(方塊603)。準確度監控器214判定在一特定時間間隔期間之一準確度值。在特定時間間隔期間,於所繪示之實施例中,準確度監控器214追蹤對應於回應於一預取請求而檢索之數個提取群組之一總值,以及追蹤對應於快取記憶體202中之數個快取行命中之一使用的值,其中回應於一預取請求而填充快取行。使用此等值,準確度監控器214判定預取請求之一準確度值。關於準確度值之判定之進一步細節係在下文就圖8提出。
進一步操作可取決於準確度值(方塊604)。在所繪示之實施例中,準確度值被發送至深度調整器210。深度調整器210將接收之準確 度值與一或多個臨限值進行比較。在一項實施例中,一上臨限值及一下臨限值係用於此等比較。若滿足至少一個臨限值(例如,若準確度值小於下臨限值或大於上臨限值),則方法移動至方塊605以調整深度值。否則,方法返回至方塊602以產生另一多群組預取請求。
基於準確度值來調整深度值(方塊605)。若滿足至少一個臨限值,則在所繪示之實施例中,深度調整器210修改深度值。例如,若準確度值大於上臨限值,則可增加深度值,允許在下一個多群組預取請求中提取更多資訊。相反地,若準確度值小於下臨限值,則可減少深度值,減少為下一個多群組預取請求提取之一資訊量。在下文圖7中,提出用於調整深度值之進一步細節。方法可返回至方塊602以產生另一預取請求。
應注意,圖6之方法600僅係一項實例。圖6中所繪示之操作經描繪以一順序方式執行。然而,在其他實施例中,可並行或以一不同順序執行一些操作。例如,可並行執行方塊602及603。在一些實施例中,可包含進一步操作。
現轉至圖7,繪示展示用於基於一判定準確度來執行多群組預取請求之一方法之另一實施例之一流程圖。方法700類似於圖6之方法600,其中進一步細節係關於深度值之調整。類似於方法600,方法700可適用於一記憶體子系統(諸如例如圖2中之記憶體子系統200)。共同參考圖2及圖7,方法700開始於方塊701中。
在所繪示之實施例中,產生一多群組預取請求及一準確值(方塊702)。類似於方法600,方法700開始於預取產生器212產生具有對應位址及深度值之一多群組預取請求,並將請求儲存於一處理佇列中。當預取產生器212產生多群組預取請求時,準確度監控器214追蹤與預取請 求相關聯之總值及使用之值。準確度監控器214在一特定時間間隔內追蹤總值及使用之值。此時間間隔可對應於數十處理器週期或數千處理器週期或更多。在一些實施例中,預取產生器212可在特定時間間隔期間產生數十、數千或更多預取請求。在時間間隔結束時,準確度監控器214基於追蹤之總值及使用之值來判定一準確度值,如針對方法600之方塊603所描述。
方法之進一步操作可取決於準確度值之一值及一上臨限值(方塊703)。在所繪示之實施例中,深度調整器210自準確度監控器214接收判定之準確度值,並將此值與一上臨限值進行比較。若準確度值滿足上臨限值(例如,準確度值大於或等於上臨限值),則方法移動至方塊704,以判定當前深度值是否被設定成一最大值。否則,方法移動至方塊706以判定準確度值是否滿足一下臨限值。
若準確度值滿足上臨限值,則進一步操作可取決於深度值之一當前值(方塊704)。在所繪示之實施例中,深度調整器210將當前深度值與一最大值進行比較。若當前深度值等於或在一些實施例中超過最大值,則方法返回至方塊702而不調整當前深度值。否則,方法移動至方塊705以增加深度值。
回應於判定準確度值滿足上臨限值且當前深度值低於最大深度值,增加深度值(方塊705)。若當前深度值尚未設定成最大值,且準確度值指示預取產生器212之當前準確度滿足上臨限值,則在所繪示之實施例中,當前深度值被累加。在一些實施例中,深度值可累加1,而在其他實施例中,可使用任何適合增量。接著,方法返回至方塊702,以使用新深度值來產生下一個預取請求。
若在方塊703中,準確度值不滿足上臨限值,則後續操作可取決於一下臨限值之一值(方塊706)。在所繪示之實施例中,若上臨限值不被滿足,則深度調整器210將準確度值與下臨限值進行比較。若滿足下臨限值(例如,準確度值小於或等於下臨限值),則方法移動至方塊707,以判定當前深度值是否被設定成一最小值。否則,方法返回至方塊702,以產生另一預取請求。
若滿足下臨限值,則方法700之隨後操作可取決於深度值之當前值(方塊707)。在一項實施例中,深度調整器210將當前深度值與一最小深度值進行比較。若當前深度值等於或在一些實施例中小於最小深度值,則可藉由禁用預取產生器212而暫停下一個時間間隔之預取。最小值可被設定成任何適合值(諸如例如設定成1)。若深度值高於最小值,則方法移動至方塊708,以累減深度值。否則,方法移動至方塊709以暫停預取請求。
若當前準確度值滿足下臨限值,且當前深度值大於最小值,則減少深度值(方塊708)。深度調整器210將深度值減少一適當減量(諸如例如1或2)。方法返回至方塊702,以使用新深度值來產生下一個預取請求。
若當前準確度值滿足下臨限值,且當前深度值小於或等於最小值,則暫停預取(方塊709)。預取產生器212暫停下一個時間間隔之新預取請求之產生。在一些實施例中,深度調整器210可確證一暫停信號,此可導致預取產生器212暫停新預取請求之產生。在其他實施例中,深度調整器210可將深度值設定成一特定值,以指示新預取請求之暫停。例如,深度調整器210可將深度值設定成零,以指示暫停。預取產生器212 中之邏輯可識別零值並停止產生新請求,直至深度值大於零。在暫停預取請求之後之下一個時間間隔結束時,或在其他實施例中,在暫停之後之兩個或多個時間間隔之後,深度調整器210可指示預取請求之一恢復。在各種實施例中,深度調節器210可藉由撤銷確證暫停信號或藉由將深度值設定成大於零之一值而指示恢復。深度調整器210可將深度值重新設定成用於預取請求之恢復之任何適合值(諸如例如1、2、4等)。方法結束於方塊710中。
應注意,圖7中所繪示之方法僅係一例示性實施例。儘管在圖7中繪示之操作經描繪為以一順序方式執行,在其他實施例中,一些操作可以並行或以一不同順序執行。例如,在一些實施例中,可在方塊707之操作之前執行方塊708之操作。在一些實施例中,可包含進一步操作。
現進行至圖8,展示用於判定一記憶體預取子系統之準確度之一方法之一流程圖。可藉由一準確度監控器(諸如例如準確度監控器214)執行方法800。在一些實施例中,方法800可對應於各別地在圖6及圖7中之方法600之方塊603中執行或方法700之方塊702中之操作。在其他實施例中,方法800可與方法600或方法700並行執行。共同參考圖2及圖8中之流程圖,方法可開始於方塊801中。
回應於發出一預取請求,累加一第一計數值(方塊802)。在所繪示之實施例中,當預取產生器212發出一預取請求以提取管線216,以填充快取記憶體202中之一或多個快取行時,準確度監控器214累加一當前總計數值。在一些實施例中,準確度監控器214可包含回應於發出一預取請求而累加一第一計數電路。當提取管線216滿足預取請求時,預取 快取行之一或多個旗標位元被設定以指示行被預取。
為各快取命中,一第二計數值經累加至一所預取快取行(方塊803)。在所繪示之實施例中,當快取記憶體202中之一快取行被命中及命中快取行之一或多個旗標位元被設定時,準確度監控器214累加一當前使用之計數值以指示行被預取。在一些實施例中,一或多個旗標位元可在計數值已經累加之後經重新設定成一替代值,以避免當判定一預取準確度時計數一預取快取行超過一次。為累加當前使用之計數值,在一些實施例中,準確度監控器214可累加一第二計數器電路。
回應於一時間間隔之一結束,判定第一值及第二值之新平均值(方塊804)。在一些實施例中,可計算並保存總計數值及使用之計數值之平均值。在所繪示之實施例中,藉由將當前總計數值添加至平均總計數值並將總和除以2而判定一加權平均總計數值,藉此將平均值加權到當前總計數值。在其他實施例中,可使用用於計算一平均值之任何適合方法。可使用一類似方法來判定一平均使用之計數值。
方法之後續操作可取決於平均總計數值(方塊805)。在所繪示之實施例中,準確度監控器214判定平均總計數值是否大於零。若平均總計數值大於零,則方法移動至方塊806以基於平均總值及平均使用之值來判定一準確度值。否則,方法移動至方塊807,以將準確值設定成一特定值。
若平均總計數值大於零,則使用平均總計數值及平均使用之計數值來判定一準確度值(方塊806)。在所繪示之實施例中,準確度監控器214例如藉由判定兩個計數值之一比率而使用平均總計數值及平均使用之計數值來判定一準確度值。在一些實施例中,平均使用之計數值除以 平均總計數值。接著可藉由將結果乘以一特定值(諸如例如1000)而此結果可經縮放至一期望範圍。在一些實施例中,可藉由將二進位值向左或向右位移而不各別地執行乘法或除法而簡化計算。
若平均總計數值係零,則一準確度值被設定成一特定值(方塊807)。若平均總計數值係零,則可能不能判定平均使用之計數值與平均總計數值之一比率。在此等情況中,準確度值可被設定成一預設值(諸如例如設定成零)。
儲存判定之平均總計數值及平均使用之計數值(方塊808)。當新當前總計數值及使用之計數值在下一個時間間隔結束時可存取時,儲存在方塊804中判定之平均總計數值及平均使用之計數值以用於下一個時間間隔。兩個平均計數值可經儲存於準確度監控器214內之暫存器中,或儲存於準確度監控器214可存取之一記憶體陣列中之位置中。此外,可將當前總計數值及使用之計數值初始化至一適合起始值,以準備下一個時間間隔。在方塊806或807中判定之準確度值可被發送至其他電路(諸如例如深度調整器210)。方法返回至方塊802,以重複程序以進行下一個時間間隔。
注意,圖8之方法僅係一實例。圖8中之方法中所繪示之操作經描繪為串列地執行。然而,在其他實施例中,可並行或以一不同順序執行一些操作。在一些實施例中,可包含進一步操作。
圖9中描繪一多核心處理器之一實例作為可包含本文中描述之一或多個記憶體子系統之一處理器之一實例。在所繪示之實施例中,處理器900包含一處理器核心之十六個例項,標示為核心901a至901p(或為簡單起見簡稱901a-p),儘管為了清楚起見,不是所有例項在圖1中展 示。核心901a至901p可各自包含一各別L1快取區902a至902p。核心901a至901p可通過匯流排910耦合至L2快取區920a至920d。另外,核心901a至901p可通過L2快取區920a至920d耦合至記憶體介面930。記憶體介面930可經進一步耦合至L3快取區940以及系統記憶體950。應注意,在各種實施例中,圖1之組織可表示一邏輯組織而非一實體組織,且亦可採用其他組件。例如,在一些實施例中,核心901a至901p及L2快取區920a至920d可能不直接連接至匯流排910,而可通過介面邏輯與匯流排連接。L3快取區940及系統記憶體可駐留在處理器900外部。
核心901a至901p可經組態以根據一特定指令集架構(ISA)執行指令及處理資料。在一項實施例中,核心901a至901p可經組態以實施SPARC® V9 ISA,儘管在其他實施例中可預期可採用任何期望ISA(諸如例如x86,PowerPC® or MIPS®)。另外,如下文所更詳細描述,在一些實施例中,核心901之各例項可經組態以並行執行多個線程,其中各線程可包含可獨立於來自另一線程之指令之一組指令。在各種實施例中,可預期任何適合數目之核心901a至901p可經包含於一處理器內,且核心901a至901p之各者可並行處理一些數目之線程。
L1快取區902a至902p可駐留於核心901a至901p內或可駐留於核心901a至901p與匯流排910之間。L1快取區902a至902p可經組態以快取供其各別核心901a至901p使用之指令及資料。在一些實施例中,可使用組相關聯或直接映射技術來實施各個別快取區902a至902p。例如,在一項實施例中,L1快取區902a至902p可為16千位元組(KB)快取區,其中各L1快取區902a至902p係與一16位元組行尺寸2路組相關聯,儘管其他快取尺寸及幾何形狀係可能的並可預期的。
一快取區中之各快取行可包含經儲存之資料,對應於一致性狀態之旗標及一位址標籤。一快取標籤可包含經儲存於快取行中之資料之原始位址之全部或一部分,指示快取行儲存快取資料之一索引,及指示特定資料定位於各快取行中之位置之一偏移。一給定處理器核心可利用記憶體位置之一直接位址,基於查找表之一轉譯位址,或通過基於一指令之位址模式計算之一位址來存取一快取區。除了快取行之一致性狀態之外,旗標可包含一或多個位元,該一或多個位元指示儲存於各別快取行中之資訊是否回應於一快取未命中而提取或由一預取電路預取。
匯流排910可經組態以管理核心901a至901p與共用L2快取區920a至920d之間之資料流。在一項實施例中,匯流排910可包含允許任何核心901a至901p以存取任何庫之L2快取區920a至920d之邏輯(諸如例如多工器或一交換網狀結構),且相反地允許自任何庫之L2快取區920a至920d返回資料至任何核心901a至901p。匯流排910可經組態以並行地處理來自核心901a至901p至L2快取區920a至920d之資料請求以及來自L2快取區920a至920d至核心901a至901p之資料回應。在一些實施例中,匯流排910可包含對資料請求及/或回應佇列之邏輯,使得請求及回應可在等待服務時不阻擋其他活動。另外,在一項實施例中,匯流排910可經組態以仲裁可在多個核心901a至901p嘗試存取L2快取區920a至920d之一單一庫或反之亦然時發生之衝突。應注意,在各種實施例中,匯流排910可使用任何適合類型之互連網路來實施,在一些實施例中,其可對應於一實體匯流排互連。
L2快取區920a至920d可經組態以快取供核心901a至901p之一各別組使用之指令及資料。例如,L2快取區920a可儲存用於核心 901a至901d之資料,用於核心901e至901h之L2快取區920b,用於核心901i至901l之L2快取區920c,且L2快取區920b可類似地耦合至核心901m至901p。隨著核心901之數目增加,亦可增加L2快取區920之尺寸及/或數目,以便容納進一步核心901。例如,在包含16個核心之一實施例中,L2快取區920可經組態為各2MB之4個快取區,其中各快取區包含512KB之4個個別快取庫,其中各庫可為與512組及一64位元組行尺寸16路組相關聯,儘管亦可採用任何其他適合快取尺寸或幾何形狀。
在一些實施例中,L2快取區920a至920b可包含各種佇列及緩衝器,該等佇列及緩衝器經組態以管理至匯流排910及自匯流排910以及至L3快取區940及自L3快取區940之資料流。例如,L2快取區920a至920b之此等實施例可實施經組態以儲存自記憶體介面930到達之填充資料之一填充緩衝器,經組態以儲存待寫入記憶體之更動收回資料之寫回緩衝器,及/或經組態以儲存不能被處理為簡單快取命中率之L2快取存取之一未命中緩衝器(例如,L2快取未命中、與更舊未命中之快取存取、諸如可需要多個快取存取之原子操作之存取等)。在一些實施例中,L2快取區920之多個庫可共用某些資料結構或其他特徵之單一例項。例如,一填充緩衝器之一單一例項可由一L2快取區920之多個庫共用,以便簡化L2快取區920a至920b之實體實施方案(例如,佈線及線路規劃)。儘管此共用,L2快取區920a至920b之個別庫可經組態以當此並行係可能時並行地及獨立地處理對儲存於庫內之資料之存取。
類似於L1快取區901a至901p及L2快取區920a至920b,L3快取區940可經組態以快取供核心901a至901p使用之指令及資料。在一些實施例中,L3快取區可在處理器900外部之一分開之記憶體晶片上實施, 並通過記憶體介面930存取。在其他實施例中,L3快取區可在與處理器900相同之晶粒上實施例,在該情況中,可直接存取L3快取區940。類似於L1快取區902a至902p,可使用群組相關聯或直接映射技術來實施L3快取區940。例如,在一項實施例中,L3快取區940可為一8兆位元組(MB)快取區,其中8MB庫係與一16位元組行尺寸相關聯之16路群組,儘管其他快取區尺寸及幾何形狀係可能的並可預期的。
可建立快取階層,使得任何核心901可首先存取其各別L1快取區902。若對L1快取區902之存取係一未命中,則可存取各別L2快取區920。若L2快取區920存取係一未命中,則可接著存取L3快取區940。若全部三個快取區皆未命中,則可通過記憶體介面930存取系統記憶體950。
例如,記憶體介面930可經組態以回應於L2填充請求及資料收回而管理L2快取區920a至920b與L3快取區940及/或系統記憶體950之間之資料傳輸。在一些實施例中,可實施記憶體介面930之多個例項,其中各例項經組態以控制L3快取區940或系統記憶體950之一各別庫。記憶體介面930可經組態以介接至任何適合類型之記憶體(諸如例如全緩衝雙列直插記憶體模群組(FB-DIMM)、雙資料速率或雙資料速率2同步動態隨機存取記憶體(DDR/DDR2 SDRAM)或Rambus® DRAM(RDRAM®))。在一些實施例中,記憶體介面930可經組態以支持接合至多個不同類型之記憶體,使得L3快取區940及系統記憶體950可由所列出類型之兩或多者組成。在其他實施例中,L3快取區940可對應於系統記憶體950之一保留部分。
各別預取電路(諸如例如各別地圖1及圖2中之預取電路104 或204)可經耦合至處理器900中之任何適合階之快取記憶體。在一項實施例中,例如,一各別預取電路204可經耦合至L2快取區920a至920d之各者。各別深度調整器210、預取產生器212及準確度監控器214可經耦合至L2快取區920a至920d之各者。在此一實例中,預取電路204可為由一特定L2快取區920支持之四個核心901之各者發出預取請求(包含多群組預取請求)。例如,參考L2快取區920a,可針對核心901a至901d之各者追蹤準確度資料。準確度監控器214及深度調整器210可包含對應於核心901a至901d之各者之一組計數器及/或暫存器。在一些實施例中,預取產生器212可基於各別準確度資料來為各核心901a至901d產生具有不同深度值之多群組預取請求。在其他實施例中,深度調整器210可基於預取電路204之一總準確度來調整全部四個核心901a至901d之一單一深度值。
應注意,圖9僅係一多核心處理器之一實例。在其他實施例中,處理器900可包含網路及/或周邊介面。實體結構可不由圖9表示,因為許多其他實體配置可為可能的並為可預期的。
應進一步注意,可在任何適合數位邏輯程序中實施本文中描述之系統及電路。例如,一些實施例可利用一互補金屬氧化物半導體場效應電晶體(CMOS)程序。此CMOS邏輯程序可利用平面裝置、非平面裝置或兩者之一組合。以一CMOS程序設計之電路可包含較小邏輯電路之各種組合(諸如例如反相器、及(AND)閘極、或(OR)閘極、反及(NAND)閘極、反或(NOR)閘極以及諸如正反器及鎖存器之資料捕捉電路)。
一旦完全理解上文揭示內容熟習此項技術者即將明白數種變化型式及修改。期望以下申請專利範圍經解釋以包含全部此等變化型式及修改。
600:方法
601:方塊
602:方塊
603:方塊
604:方塊
605:方塊

Claims (20)

  1. 一種用於資料預取之系統,其包括:一處理器核心;一記憶體,其經組態以儲存供該處理器核心使用之資訊;一快取記憶體(cache memory),其經組態以提取(fetch)並儲存來自該記憶體之資訊;及一預取(prefetch)電路,其經組態以:產生一多群組預取請求,以檢索(retrieve)來自該記憶體之資訊,以使用一預測位址(predicted address)來儲存於該快取記憶體中,其中該多群組預取請求經指派(assigned)指示待檢索之數個提取群組之一當前深度值(current depth value);將該經產生之多群組預取請求儲存於一佇列(queue)中,包含基於該經指派之深度值之一原始深度值;及當該經產生之多群組預取請求經儲存於該佇列中時:基於一特定時間間隔內之預取資訊之一快取命中率(hit rate)來產生一準確度值(accuracy value);回應於該準確度值在準確度值之一特定範圍之外(outside)的一判定來修改該當前深度值至一更新的深度值,其中接續地(subsequently)產生之預取請求經指派該更新的深度值;及在修改該當前深度值之後,藉由發出使用該原始深度值之複數個單群組預取請求以完成該經儲存之多群組預取請求。
  2. 如請求項1之系統,其中為修改該當前深度值,該預取電路經進一步組態以:回應於該準確度值滿足準確度值之該特定範圍之一上臨限值之一判定而增加該當前深度值;及回應於該準確度值滿足準確度值之該特定範圍之一下臨限值之一判定而減少該當前深度值。
  3. 如請求項2之系統,其中為增加該當前深度值,該預取電路經進一步組態以回應於該當前深度值等於一最大允許深度值之一判定而維持該當前深度值。
  4. 如請求項2之系統,其中為減少該當前深度值,該預取電路經進一步組態以回應於該當前深度值等於一最小允許深度值之一判定而暫停發出至少下一個時間間隔之預取請求。
  5. 如請求項1之系統,其中為產生該準確度值,該預取電路經進一步組態以:在該特定時間間隔內,追蹤指示在該快取記憶體中回應於一或多個預取請求而儲存之一資訊量之一第一值;及在該特定時間間隔內,追蹤指示快取行之快取命中之一數目之一第二值,該等快取行包含回應於至少一個預取請求而被儲存於該快取記憶體中之資訊。
  6. 如請求項5之系統,其中該預取電路經進一步組態以回應於一或多個預取請求,基於該第一值、該第二值及經儲存之該資訊量之一加權移動平均值來判定該準確度值。
  7. 如請求項1之系統,其中該快取記憶體經進一步組態以:包含一預取識別符(prefetch identifier),其具有使用一經預取請求所填充之一快取行;及回應於該快取行已由一快取請求命中之一判定以清除該預取識別符。
  8. 一種用於資料預取之方法,其包括:藉由一預取電路,產生一多群組預取請求,以檢索來自一記憶體之資訊,以使用一預測位址來儲存於一快取記憶體中,其中該多群組預取請求經指派對應於待檢索之數個提取群組之一當前深度值;將該經產生之多群組預取請求儲存於一佇列中,包含基於該經指派之深度值之一原始深度值;及當該等經產生之多群組預取請求經儲存於該佇列中時:基於一特定時間間隔內之預取資訊之一快取命中率來產生一準確度值;回應於該準確度值在準確度值之一特定範圍之外的一判定來修改該當前深度值至一更新的深度值;指派該更新的深度值至接續地產生之預取請求;及在修改該當前深度值之後,藉由發出使用該原始深度值之複數個單 群組預取請求以完成該經儲存之多群組預取請求。
  9. 如請求項8之方法,進一步包括:回應於判定該準確度值滿足準確度值之該特定範圍之一上臨限值而增加該當前深度值;及回應於判定該準確度值滿足準確度值之該特定範圍之一下臨限值而減少該當前深度值。
  10. 如請求項9之方法,進一步包括回應於判定該當前深度值等於一最大允許深度值而維持該當前深度值。
  11. 如請求項9之方法,進一步包括回應於判定該當前深度值等於一最小允許深度值而暫停發出至少下一個時間間隔之預取請求。
  12. 如請求項8之方法,進一步包括:在該特定時間間隔內,追蹤指示在該快取記憶體中回應於一或多個預取請求而儲存之一資訊量之一第一值;及在該特定時間間隔內,追蹤指示快取行之快取命中之一數目之一第二值,該等快取行包含回應於至少一個預取請求而被儲存於該快取記憶體中之資訊。
  13. 如請求項12之方法,進一步包括回應於一或多個預取請求,基於該第一值、該第二值及經儲存之該資訊量之一加權移動平均值來判定該準確 度值。
  14. 一種用於資料預取之設備,其包括:一預取產生器電路,其經組態以:產生一多群組預取請求,該多群組預取請求包含一預測位址及一當前深度值,該當前深度值指示自一記憶體待檢索並儲存於一快取區中之數個提取群組;將該經產生之多群組預取請求儲存於一佇列中,包含基於該當前深度值之一原始深度值;使用該預取位址,發出與該多群組預取請求相關聯之一初始單群組預取請求;一準確度監控器電路,其經組態以基於一特定時間間隔內之預取資訊之一快取命中率來產生一準確度值;及一深度調整器電路,其經組態以回應於該準確度值在準確度值之一特定範圍之外的一判定來修改該當前深度值至一更新的深度值,其中接續地產生之預取請求經指派該更新的深度值;及其中該預取產生器電路經進一步組態以在修改該當前深度值之後,藉由發出使用該原始深度值之額外一或多個單群組預取請求以完成該經儲存之多群組預取請求。
  15. 如請求項14之設備,其中為修改該當前深度值,該深度調整器電路經進一步組態以:回應於該準確度值滿足準確度值之該特定範圍之一上臨限值之一判 定而增加該當前深度值;及回應於該準確度值滿足準確度值之該特定範圍之一下臨限值之一判定而減少該當前深度值。
  16. 如請求項15之設備,其中為增加該當前深度值,該深度調整器電路經進一步組態以回應於該當前深度值等於一最大允許深度值之一判定而維持該當前深度值。
  17. 如請求項15之設備,其中為減少該當前深度值,該深度調整器電路經進一步組態以回應於該當前深度值等於一最小允許深度值之一判定而暫停發出至少下一個時間間隔之預取請求。
  18. 如請求項14之設備,其中為產生該準確度值,該準確度監控器電路經進一步組態以:在該特定時間間隔內,追蹤指示在該快取記憶體中回應於一或多個預取請求而儲存之一資訊量之一第一值;及在該特定時間間隔內,追蹤指示快取行之快取命中之一數目之一第二值,該等快取行包含回應於至少一個預取請求而被儲存於該快取記憶體中之資訊。
  19. 如請求項18之設備,其中該準確度監控器電路經進一步組態以回應於一或多個預取請求,基於該第一值、該第二值及經儲存之該資訊量之一加權移動平均值來判定該準確度值。
  20. 如請求項14之設備,其中該預取產生器電路經進一步經組態以針對該額外一或多個單群組預取請求中之每一者將該預測位址之一值累加基於一快取行之一尺寸之一量。
TW107129212A 2017-08-30 2018-08-22 用於資料預取之系統、方法及設備 TWI757539B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/691,351 US10579531B2 (en) 2017-08-30 2017-08-30 Multi-line data prefetching using dynamic prefetch depth
US15/691,351 2017-08-30
WOPCT/US18/46506 2018-08-13
PCT/US2018/046506 WO2019046002A1 (en) 2017-08-30 2018-08-13 PRE-EXTRACTION OF MULTI-LINE DATA USING A DYNAMIC PRE-EXTRACTION DEPTH
??PCT/US18/46506 2018-08-13

Publications (2)

Publication Number Publication Date
TW201931130A TW201931130A (zh) 2019-08-01
TWI757539B true TWI757539B (zh) 2022-03-11

Family

ID=63449683

Family Applications (2)

Application Number Title Priority Date Filing Date
TW111105537A TWI784882B (zh) 2017-08-30 2018-08-22 用於資料預取之系統、方法及設備
TW107129212A TWI757539B (zh) 2017-08-30 2018-08-22 用於資料預取之系統、方法及設備

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW111105537A TWI784882B (zh) 2017-08-30 2018-08-22 用於資料預取之系統、方法及設備

Country Status (5)

Country Link
US (2) US10579531B2 (zh)
EP (1) EP3676712B1 (zh)
CN (2) CN117271388A (zh)
TW (2) TWI784882B (zh)
WO (1) WO2019046002A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10579531B2 (en) * 2017-08-30 2020-03-03 Oracle International Corporation Multi-line data prefetching using dynamic prefetch depth
US10963392B1 (en) * 2018-07-30 2021-03-30 Apple Inc. Victim allocations in shared system cache
US11163683B2 (en) 2019-08-01 2021-11-02 International Business Machines Corporation Dynamically adjusting prefetch depth
US11301386B2 (en) 2019-08-01 2022-04-12 International Business Machines Corporation Dynamically adjusting prefetch depth
US11461101B2 (en) * 2019-09-27 2022-10-04 Arm Technology (China) Co. LTD Circuitry and method for selectively controlling prefetching of program instructions
TWI739227B (zh) * 2019-12-03 2021-09-11 智成電子股份有限公司 避免多餘記憶體存取的系統單晶片模組
CN111651120B (zh) * 2020-04-28 2023-08-08 中国科学院微电子研究所 预取数据的方法及装置
CN114546927B (zh) * 2020-11-24 2023-08-08 北京灵汐科技有限公司 数据传输方法、核心、计算机可读介质、电子设备
CN112561197B (zh) * 2020-12-23 2022-08-23 国网江苏省电力有限公司南京供电分公司 一种带有主动防御影响范围的电力数据预取与缓存方法
CN113407119B (zh) * 2021-06-28 2023-03-24 海光信息技术股份有限公司 数据预取方法、数据预取装置、处理器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205298A1 (en) * 2003-04-14 2004-10-14 Bearden Brian S. Method of adaptive read cache pre-fetching to increase host read throughput
TW200619937A (en) * 2004-08-17 2006-06-16 Nvidia Corp System, apparatus and method for predicating various types of accesses to a memory and for managing predictions associated with a cache memory
US20110173397A1 (en) * 2010-01-08 2011-07-14 International Business Machines Corporation Programmable stream prefetch with resource optimization
TW201337750A (zh) * 2011-12-06 2013-09-16 Nvidia Corp 多層指令快取預先擷取

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6460115B1 (en) 1999-11-08 2002-10-01 International Business Machines Corporation System and method for prefetching data to multiple levels of cache including selectively using a software hint to override a hardware prefetch mechanism
US6412046B1 (en) * 2000-05-01 2002-06-25 Hewlett Packard Company Verification of cache prefetch mechanism
US7228387B2 (en) 2003-06-30 2007-06-05 Intel Corporation Apparatus and method for an adaptive multiple line prefetcher
US7350029B2 (en) 2005-02-10 2008-03-25 International Business Machines Corporation Data stream prefetching in a microprocessor
US7380066B2 (en) 2005-02-10 2008-05-27 International Business Machines Corporation Store stream prefetching in a microprocessor
US8103832B2 (en) 2007-06-26 2012-01-24 International Business Machines Corporation Method and apparatus of prefetching streams of varying prefetch depth
US7925865B2 (en) * 2008-06-02 2011-04-12 Oracle America, Inc. Accuracy of correlation prefetching via block correlation and adaptive prefetch degree selection
US8443151B2 (en) * 2009-11-09 2013-05-14 Intel Corporation Prefetch optimization in shared resource multi-core systems
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US8856452B2 (en) * 2011-05-31 2014-10-07 Illinois Institute Of Technology Timing-aware data prefetching for microprocessors
US8892822B2 (en) * 2011-11-29 2014-11-18 Oracle International Corporation Selectively dropping prefetch requests based on prefetch accuracy information
US9348753B2 (en) * 2012-10-10 2016-05-24 Advanced Micro Devices, Inc. Controlling prefetch aggressiveness based on thrash events
US20140108740A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetch throttling
US9639471B2 (en) * 2012-11-27 2017-05-02 Nvidia Corporation Prefetching according to attributes of access requests
US9262328B2 (en) * 2012-11-27 2016-02-16 Nvidia Corporation Using cache hit information to manage prefetches
US9442727B2 (en) * 2013-10-14 2016-09-13 Oracle International Corporation Filtering out redundant software prefetch instructions
US9256541B2 (en) * 2014-06-04 2016-02-09 Oracle International Corporation Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
DE102015115582A1 (de) * 2014-10-22 2016-04-28 Imagination Technologies Limited Vorrichtung und Verfahren zum Drosseln des Hardwarevorauslesens
US10162660B2 (en) * 2015-12-03 2018-12-25 International Business Machines Corporation Application-level processor parameter management
US10579531B2 (en) * 2017-08-30 2020-03-03 Oracle International Corporation Multi-line data prefetching using dynamic prefetch depth
CN109284240B (zh) * 2018-10-15 2020-06-16 上海兆芯集成电路有限公司 存储器集成电路及其预取方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205298A1 (en) * 2003-04-14 2004-10-14 Bearden Brian S. Method of adaptive read cache pre-fetching to increase host read throughput
TW200619937A (en) * 2004-08-17 2006-06-16 Nvidia Corp System, apparatus and method for predicating various types of accesses to a memory and for managing predictions associated with a cache memory
US20110173397A1 (en) * 2010-01-08 2011-07-14 International Business Machines Corporation Programmable stream prefetch with resource optimization
TW201337750A (zh) * 2011-12-06 2013-09-16 Nvidia Corp 多層指令快取預先擷取

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Jimenez et al., "Making Data Prefetch Smarter:Adaptive prefetching on POWER7", 2012 *

Also Published As

Publication number Publication date
CN117271388A (zh) 2023-12-22
US11126555B2 (en) 2021-09-21
CN111052095B (zh) 2023-10-31
US10579531B2 (en) 2020-03-03
TW201931130A (zh) 2019-08-01
EP3676712B1 (en) 2024-04-03
CN111052095A (zh) 2020-04-21
EP3676712A1 (en) 2020-07-08
US20200201771A1 (en) 2020-06-25
WO2019046002A1 (en) 2019-03-07
US20190065377A1 (en) 2019-02-28
TWI784882B (zh) 2022-11-21
TW202221510A (zh) 2022-06-01

Similar Documents

Publication Publication Date Title
TWI757539B (zh) 用於資料預取之系統、方法及設備
CN110869914B (zh) 硬件预取器的基于利用率的节流
US8473689B2 (en) Predictive sequential prefetching for data caching
EP2430551B1 (en) Cache coherent support for flash in a memory hierarchy
JP2022534892A (ja) 書き込みミスエントリのドレインをサポートする犠牲キャッシュ
EP2476060B1 (en) Store aware prefetching for a datastream
US20110072218A1 (en) Prefetch promotion mechanism to reduce cache pollution
US7925865B2 (en) Accuracy of correlation prefetching via block correlation and adaptive prefetch degree selection
US20090132750A1 (en) Cache memory system
US9256541B2 (en) Dynamically adjusting the hardware stream prefetcher prefetch ahead distance
US10120806B2 (en) Multi-level system memory with near memory scrubbing based on predicted far memory idle time
US20170168957A1 (en) Aware Cache Replacement Policy
US6959363B2 (en) Cache memory operation
US6801982B2 (en) Read prediction algorithm to provide low latency reads with SDRAM cache
US11526278B2 (en) Adaptive page close prediction
CN118093020A (zh) 数据预取方法、装置、电子设备、电子装置和介质
CN115729860A (zh) 处理系统、处理方法及电子设备