TW202328906A - 邊界框預取指單元及其方法 - Google Patents

邊界框預取指單元及其方法 Download PDF

Info

Publication number
TW202328906A
TW202328906A TW111125445A TW111125445A TW202328906A TW 202328906 A TW202328906 A TW 202328906A TW 111125445 A TW111125445 A TW 111125445A TW 111125445 A TW111125445 A TW 111125445A TW 202328906 A TW202328906 A TW 202328906A
Authority
TW
Taiwan
Prior art keywords
prefetcher
cache
state
prefetcher state
memory
Prior art date
Application number
TW111125445A
Other languages
English (en)
Inventor
道格拉斯 R 瑞德
阿卡什 多拉塔 赫巴爾
Original Assignee
美商聖圖爾科技公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商聖圖爾科技公司 filed Critical 美商聖圖爾科技公司
Publication of TW202328906A publication Critical patent/TW202328906A/zh

Links

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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate 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/6028Prefetching based on hints or prefetch instructions

Landscapes

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

Abstract

本申請公開了邊界框預取指單元及其方法。一種微處理器中的邊界框預取指單元,所述邊界框預取指單元包括:記憶體,其包括用於存儲與載入請求相關聯的相應多個訪問流的狀態資訊的多個活躍預取指器狀態條目,以及相應多個預測邏輯;以及預取指器狀態快取記憶體,其包括與活躍預取指器狀態條目中的任一個都不匹配的多個預取指器狀態條目。

Description

邊界框預取指單元及其方法
本發明是有關於一種微處理器,且特別是有關於一種微處理器中的預取指。
大多數現代電腦系統包括進行執行軟體程式所需的計算的微處理器。電腦系統更包括連接到微處理器(或在微處理器內部)的其他裝置,諸如記憶體等。記憶體存儲要由微處理器執行的軟體程式指令。記憶體更存儲程式指令操縱以實現程式的期望功能的資料。
電腦系統中在微處理器外部(或在處理器核外部)的裝置(諸如記憶體等)透過處理器匯流排直接或間接地連接到微處理器(或核)。處理器匯流排包括使得微處理器能夠以相對大的塊傳輸資料的信號集合。當微處理器執行對存儲在記憶體中的資料進行計算的程式指令時,微處理器使用處理器匯流排將資料從記憶體取指到微處理器中。類似地,微處理器使用處理器匯流排將計算結果寫回到記憶體。
從記憶體取指數據或將資料寫入記憶體所需的時間比微處理器對資料進行計算所需的時間大許多倍。因此,微處理器無效地等待從記憶體中取指數據。為了減少這個問題,現代微處理器包括至少一個快取記憶體。快取記憶體是微處理器(或處理器核)內部的記憶體--通常比系統記憶體小得多--其將資料的子集存儲在系統記憶體中。當微處理器執行引用資料的指令時,微處理器檢查資料是否存在於快取記憶體中並且是有效的。如果是,則可以比必須從系統記憶體檢索資料的情況更快地執行指令,這是因為資料已經存在於快取記憶體中。也就是說,當使用處理器匯流排將資料從記憶體取指到快取記憶體時,微處理器不必等待。微處理器檢測到資料存在於快取記憶體中並且有效的情況通常被稱為快取記憶體命中。所引用的資料不存在於快取記憶體中的情況通常被稱為快取記憶體未命中。當所引用的資料已經在快取記憶體中時,透過避免從外部記憶體檢索資料所需的額外時鐘週期,實現了顯著的時間節省。
經由預取指單元(也稱為預取指器)的快取記憶體預取指是由微處理器使用以透過在處理器實際需要資料或指令之前將指令或資料從外部記憶體取指到快取記憶體中來進一步提升運行性能的技術。成功地預取指數據避免了當必須從外部記憶體檢索資料時遇到的等待時間。
在預取指中存在基本的折衷。如上所述,預取指可以透過減少等待時間(透過在實際需要資料之前已經將資料取指到快取記憶體中)來改善性能。另一方面,如果預取指太多資訊(例如,太多快取記憶體行),則預取指單元的效率降低,並且其他系統資源和頻寬可能負擔過重。此外,如果快取記憶體已滿,則將新的快取記憶體行預取指到該快取記憶體中將導致從快取記憶體中驅逐另一快取記憶體行。因此,快取記憶體中的因為先前需要而在快取記憶體中的行可能被僅將來可能需要的行驅逐。
在一些微處理器中,快取記憶體實際上由多個快取記憶體組成。多個快取記憶體被佈置在多個級的層級結構中。例如,微處理器可以具有兩個快取記憶體,稱為第一級(L1)快取記憶體和第二級(L2)快取記憶體。L1快取記憶體比L2快取記憶體更靠近微處理器的計算元件。也就是說,L1快取記憶體能夠比L2快取記憶體更快地向計算元件提供資料。L2快取記憶體通常比L1快取記憶體更大並且具有更多的存儲資源。一些微處理器可以具有第三快取記憶體(L3),其可以大於L2快取記憶體。
基於快取記憶體未命中,取指時間隨著從L1、L2、L3快取記憶體和系統記憶體進行取指而增加(例如,來自L2的10-20個時鐘週期,來自L3的20-30個時鐘週期),因此從等待時間的角度來看,期望不僅智慧地將資料存儲在適當的快取記憶體中,而且智慧地預取指數據。
在一個實施例中,一種微處理器中的邊界框預取指單元,所述邊界框預取指單元包括:記憶體,其包括多個活躍預取指器狀態條目和相應的多個預測邏輯,其中所述多個活躍預取指器狀態條目用於存儲與載入請求相關聯的相應多個訪問流的狀態資訊;以及預取指器狀態快取記憶體,其包括與活躍預取指器狀態條目中的任何活躍預取指器狀態條目都不匹配的多個預取指器狀態條目。
透過審查以下附圖和詳細描述,本發明的其它系統、方法、特徵和優點對於本領域技術人員將是或者將變得明顯。所有這些附加系統、方法、特徵和優點旨在包括在本說明書內、在本發明的範圍內,並且受到所附申請專利範圍的保護。
公開了微處理器的具有預取指器狀態快取記憶體(PSC)的邊界框預取指單元和相關聯的方法的某些實施例,其增加記憶體並因此跟蹤包括由邊界框預取指單元接收的載入請求的訪問流的狀態資訊的容量,與預測邏輯的任何伴隨增加解耦。在一個實施例中,邊界框預取指單元包括具有多個預取指器狀態條目的記憶體,各個預取指器狀態條目用於主動跟蹤與對相應頁或記憶體區域(諸如4千位元組(KB)記憶體區域)的載入請求相關聯的訪問流。這樣的預取指器狀態條目在本文中也被稱為活躍預取指器狀態條目。預取指器狀態條目也可被稱為流條目(例如,相應訪問流的狀態資訊)。邊界框預取指單元更包括在預取指器狀態快取記憶體的方式中的附加存儲。預取指器狀態快取記憶體包括多個預取指器狀態條目(區別於活躍預取指器狀態條目),其用於當與任何活躍預取指器狀態條目都不匹配的載入進入具有PSC的邊界框預取指單元並且利用了所有活躍預取指器狀態條目時存儲訪問流的狀態資訊。預取指器狀態快取記憶體不具有相應的預測邏輯,並且至少部分地用於保留被驅逐的活躍預取指器狀態條目(例如,由於陳舊或置信度不足)的狀態資訊以及更未建立置信度以有資格作為活躍預取指器狀態條目的訪問流的狀態資訊。
簡而言之,邊界框預取指單元包括具有多個預取指器狀態條目(例如,用於存儲狀態資訊)和用於跟蹤相應的多個頁的訪問流並生成預取指的相應多個控制邏輯(例如,預測邏輯)的記憶體,各個頁與相應的記憶體區域相關聯。例如,預取指器狀態條目和相應的邏輯各自用於各個相應頁(例如,物理記憶體的一個4千位元組(KB)頁)的模式匹配和預取指生成。如下面進一步描述的,一般地,邊界框預取指單元接收第一級快取記憶體資料和指令(例如,L1D和L1I)載入請求作為進入第二級快取記憶體的訪問流的一部分,各個載入請求被解碼成4KB對齊的頁位址區域,以使得邊界框預取指單元能夠確定多個記憶體中的預取指器狀態條目是否已經跟蹤傳入的訪問流。如果預取指器狀態條目之一已經跟蹤該訪問流(即,活躍的預取指器狀態條目),則載入請求更新該匹配的預取指器狀態條目中的狀態資訊,並且相應的預測邏輯可以決定生成一些預取指作為結果,其中相應的預取指請求透過仲裁器進入佇列,然後進入標籤流水線,如下面進一步描述的。
常規預取指器的一個問題圍繞以下事實:要跟蹤的不同訪問流的數量與由邊界框預取指單元維持的多個記憶體中的活躍預取指器狀態條目的數量成正比,這是因為使用包括流訪問的方向或趨勢、已經請求了哪些快取記憶體行、已經要求請求了哪些快取記憶體行、已經預取指了哪些快取記憶體行、模式、最大和最小指標以及其他狀態資訊的狀態資訊來生成預取指。如果多個記憶體僅包含例如四個預取指器狀態條目,則這意味著邊界框預取指單元被限制在每次可以生成預取指時跟蹤四個訪問流(例如,每個4KB頁)。超過四個訪問流,例如五個訪問流,最好的情況下,邊界框預取指單元不會生成1/5的預取指(因為1/5的流訪問將與對應於該頁的活躍預取指器狀態條目不匹配)。出現最壞的情況,其中邊界框預取指單元試圖針對例如四個訪問流建立置信度,然後在引入第五訪問流的情況下,驅逐預取指器狀態條目之一以有利於第五訪問流,從而需要在引入需要驅逐的又一個流之前建立置信度和狀態資訊,或者需要重新引入被驅逐的預取指器狀態條目,並且再次需要建立狀態資訊和置信度。在一些情況下,新訪問流相對於其他活躍訪問流可能沒有表現出局部性,並且實際上,可能已經驅逐了預取指器狀態條目,其為增加置信度的預取指提供了基礎。實際上,這種周轉的一個可能結果是沒有生成任何預取指或令人滿意的置信度的預取指。
在軟體級別看到類似的問題,其中邏輯試圖優化的軟體具有比預取指器狀態條目更多的活躍流。例如,如果處理器正在運行四個應用,並且作業系統在四個應用之間以迴圈方式調度,則應用之間的切換可能導致預取指的品質和/或量目的差異。切換導致狀態資訊的驅逐,並且因此需要針對被驅逐的條目再次建立狀態資訊和置信度。
解決容量問題(並跟蹤盡可能多的訪問流)的一種機制是增加預取指器狀態條目的量。然而,在過去,這種增加的存儲容量伴隨著與各個預取指器狀態條目相關聯的預測邏輯的複雜性和數量的增加。換句話說,改進用於跟蹤訪問流的容量的增長涉及在預取指器狀態條目的數量和相應的預測邏輯方面的二維增長。相比之下,具有預取指器狀態快取記憶體的邊界框預取指單元的某些實施例提供增加數量的預取指器狀態條目以跟蹤更多訪問流,而不添加預測邏輯。
已經總結了本發明的具有PSC的邊界框預取指單元的某些特徵,現在將詳細參考如附圖中所例示的具有PSC的邊界框預取指單元的描述。雖然將結合這些附圖來描述具有PSC的邊界框預取指單元,但並不意在將其限制於這裡所公開的實施例。也就是說,雖然本發明易於進行各種修改和替代形式,但是其特定實施例在附圖中透過示例的方式示出,並且這裡將被詳細描述成足以使本領域技術人員理解。然而,應該理解,附圖及其詳細描述不意在將本發明限制於所公開的特定形式。相反,意圖是覆蓋落入如所附申請專利範圍所限定的本發明的精神和範圍內的所有修改、等同項和替代。如在本申請中所使用的,單詞“可以”以允許的意義(即,意味著有可能)而不是強制的意義(即,意味著必須)被使用。類似地,單詞“包括”意味著包括但不限於。
各種單元、模組、電路、邏輯或其它元件可被描述為“被配置為”進行一個或多個任務。在這樣的上下文中,“被配置為”是對結構的廣泛敘述,其一般意味著“具有在操作期間進行或能夠進行一個或多個任務的電路或其它物理結構”。電路可以是專用電路、或在編碼指令的控制下操作的更通用處理電路。也就是說,在描述本發明的各種實現的某些方面或特徵時,這裡可以使用諸如“單元”、“模組”、“電路”、“邏輯”和“元件”等的術語。本領域技術人員將理解,利用電路實現相應的特徵,無論該電路是專用電路更是在微編碼指令控制下操作的更通用電路。
另外,單元/模組/電路/邏輯/元件可被配置為即使在單元/模組/電路/邏輯/元件當前不處於操作中的情況下也進行任務。敘述被配置為進行一個或多於一個任務的單元/模組/電路/邏輯/元件明確不旨在針對該單元/模組/電路/邏輯/元件進行功能性限定。在這方面,本領域技術人員將理解,電路元件的特定結構或互連通常將由設計自動化工具的編譯器(諸如暫存器傳送語言(RTL)編譯器)確定。RTL編譯器在與組合語言代碼非常相似的腳本上運行,以將該腳本編譯成用於最終電路的佈局或製造的形式。
也就是說,使用更高級的軟體工具來設計(諸如本發明的那些)積體電路以對電路的期望功能操作進行建模。眾所周知,“電子設計自動化”(或EDA)是一類用於設計諸如積體電路等的電子系統的軟體工具。EDA工具更用於將設計功能程式設計到現場可程式設計閘陣列(FPGA)中。使用諸如Verilog和超高速積體電路(例如VHDL)等的硬體描述符語言(HDL)來創建電路的高級表示,其中根據該高級表示可以推斷出較低級表示和最終實際佈線。實際上,由於現代半導體晶片可以具有數十億個元件,因此EDA工具被認為是對於其設計而言必不可少的。在實踐中,電路設計者使用諸如C/C++等的程式設計語言來指定操作功能。EDA軟體工具將該指定功能轉換為RTL。然後,硬體描述符語言(例如Verilog)將RTL轉換為門的離散網表。該網表定義了由例如代工廠等生產的實際電路。實際上,這些工具因其在促進電子和數位系統的設計過程中的作用和用途而被眾所周知並理解,因此這裡無需描述。
圖1是示出實現具有PSC的邊界框預取指單元的實施例的示例微處理器的方塊圖。如本文將描述的,本發明涉及一種經由狀態資訊的增加存儲而不添加預測邏輯來實現多個訪問流的跟蹤的改進機制。下面描述一個示例架構,其中可以利用本發明的具有PSC的邊界框預取指單元。就此而言,現在參考圖1,圖1是示出多核微處理器100的圖。如本領域普通技術人員從本文提供的描述將理解的,本發明可以以各種電路配置和架構來實現,並且圖1所示的架構僅僅是許多合適的架構中的一種。具體地,在圖1所示的實施例中,微處理器100是八核處理器,其中核被枚舉為核0 110_0至核7 110_7。在所示實施例中,省略了許多電路元件和細節,這些元件和細節與理解本發明沒有密切關係。如本領域普通技術人員將理解的,各個處理核(110_0至110_7)包括在整個微處理器100中複製的某些相關或伴隨電路。各個這樣的相關子電路在所示實施例中表示為片。在八個處理核110_0至110_7的情況下,相應地存在八個片102_0至102_7。本文未描述的其他電路僅表示為“其他片邏輯”140_0至140_7。
在所示實施例中,採用三級快取記憶體系統,其包括一級(L1)快取記憶體、二級(L2)快取記憶體和三級(L3)快取記憶體。L1快取記憶體被分成資料快取記憶體和指令快取記憶體這兩者,分別表示為L1D和L1I。L2快取記憶體也駐留在核上,這意味著L1快取記憶體和L2快取記憶體這兩者都與各個片的核在相同的電路中。也就是說,各個片的各個核具有其自己的專用L1D、L1I和L2快取記憶體。在核外部,但在各個片內是L3快取記憶體。在一個實施例中,L3快取記憶體130_0至130_7(在本文中也統稱為130)是分散式快取記憶體,這意味著L3快取記憶體的1/8駐留在片0 102_0中,L3快取記憶體的1/8駐留在片1 102_1中,等等。在一個實施例中,各個L1快取記憶體的大小為32k,各個L2快取記憶體的大小為256k,並且L3快取記憶體的各個片的大小為2百萬位元組。因此,L3快取記憶體的總大小是16百萬位元組。注意,在一些實施例中可以使用其他單獨或聚合快取記憶體大小。
在各個片中提供匯流排界面120_0至120_7,以管理來自不同片之間的各種電路元件的通信。如圖1所示,虛線190用於允許各種電路片之間以及與非核電路160的通信。非核電路160僅表示在處理器晶片上的附加電路,但不是與各個片相關聯的核電路的一部分。與各個所示的片一樣,非核電路160包括非核匯流排界面162。更示出了用於與處理器外(晶片外)記憶體180交互的記憶體控制器164。最後,其他非核邏輯166由方塊廣義地表示,其表示可以被包括作為非核處理器電路的一部分的其他電路(並且再次,為了理解本發明,不需要對其進行描述)。
為了更好地說明一些電路元件的某些內部和外部通信,將呈現以下示例。該示例示出了與核6快取記憶體中的假設的載入未命中相關聯的通信。也就是說,該假設假定處理核6 110_6正在執行請求在假設位址1000處載入資料的代碼。當遇到這樣的載入請求時,系統首先在L1D 114_6中進行查找以查看該資料是否存在於L1D快取記憶體中。假定資料不在L1D快取記憶體中,則在L2快取記憶體112_6中進行查找。再次,假定資料不在L2快取記憶體中,則進行查找以查看資料是否存在於L3快取記憶體中。如上所述,L3快取記憶體是分散式快取記憶體,因此如果資料實際上駐留在L3快取記憶體中,則系統首先需要確定資料應該駐留在L3快取記憶體的哪個片中。如已知的,可以使用散列函數(其僅僅是位元的異或)來進行該處理,以獲得三位元位址(足以識別資料存儲在哪個片-片0至片7中)。
與該示例一致,假定該散列函數導致指示為資料(如果存在於L3快取記憶體中)將存在於L3快取記憶體的駐留在片7中的該部分中。然後,透過匯流排界面120_6和120_7從片6 102_6的L2快取記憶體到存在於片7 102_7中的L3快取記憶體進行通信。該通信在圖中由帶圓圈的數位1表示。如果資料存在於L3快取記憶體中,則其將從L3快取記憶體130_7通信回L2快取記憶體112_6。然而,並且在該示例中,假定資料也不在L3快取記憶體中,從而導致快取記憶體未命中。因此,透過記憶體控制器164,從L3快取記憶體130_7透過匯流排界面7 120_7透過非核匯流排界面162到晶片外記憶體180進行通信。該通信在圖中由帶圓圈的數位2表示。然後,將包括駐留在位址1000處的資料的快取記憶體行從晶片外記憶體180透過記憶體控制器164和非核匯流排界面162通信回L3快取記憶體130_7中。該通信在圖中由帶圓圈的數位3表示。在將該資料寫入L3快取記憶體之後,然後透過匯流排界面120_7和120_6將其通信到請求核,即核6 110_6。該通信在圖中由帶圓圈的數位4表示。
在這一點上,一旦載入請求已經完成,該資料將駐留在快取記憶體L3、L2和L1D各自中。本發明涉及一種改進的邊界框預取指單元,其駐留在L2快取記憶體112_0至112_7各自中。在所示實施例中,如上所述,L1快取記憶體是相對小的大小的快取記憶體。因此,對於過於激進地預取指到L1快取記憶體中可能存在性能和頻寬後果。在這方面,更複雜或激進的預取指器通常消耗晶片中更多的矽基板面,以及更多的功率和其他資源。此外,從上述示例中,過度預取指到L1快取記憶體中通常將導致更多的未命中和驅逐。這將消耗附加的電路資源,以及用於將資料預取指到相應的L1快取記憶體中所需的通信的頻寬資源。更具體地,由於所示實施例共用由虛線190表示的片上通信匯流排,因此過多的通信將消耗附加的頻寬,潛在地不必要地延遲微處理器100的其他部分所需的其他通信或資源。
在一個實施例中,L1I和L1D快取記憶體這兩者都小於L2快取記憶體,並且需要能夠更快地滿足資料請求。因此,在各個片的L1I和L1D快取記憶體中實現的預取指器優選地是相對簡單的預取指器。此外,L1D快取記憶體需要能夠流水線化請求。因此,在L1D中放置附加的預取指電路可能是相對繁重的。此外,複雜的預取指器可能會妨礙其他必要的電路。關於各個L1快取記憶體的快取記憶體行,在一個實施例中,快取記憶體行是64位元組。因此,每個時鐘週期可以載入64位元組的載入資料。
如上所述,在一個實施例中,L2快取記憶體的大小優選地為256KB。具有比在L1快取記憶體中實現的預取指單元更大的面積,在L2快取記憶體中實現的邊界框預取指單元可能更複雜和激進。通常,在L2快取記憶體中實現更複雜的預取指器導致針對推測性地引入資料的較少的性能損失(例如,與L1預取指器相比)。因此,本發明的具有PSC的邊界框預取指單元在L2快取記憶體中實現。
在描述本發明的具有PSC的邊界框預取指單元的細節之前,首先參考圖2,圖2是示出實現具有PSC的邊界框預取指單元232的實施例的示例L2快取記憶體112的方塊圖。具體地,圖2中所示的元件描繪了具有PSC的邊界框預取指單元232和促進L2快取記憶體112內以及與圖1中所示的系統中的其他元件的通信的結構的其他基本特徵。如圖所示,存在四個主框210、220、230和240,其示出了L1D界面210、L1I界面220、預取指界面230和外部界面240。總的來說,這些框表示透過L2快取記憶體112對事務或請求進行排隊和跟蹤的電路。如圖1所示,在各個核中,存在L1D和L1I快取記憶體這兩者,以及更高級的L2快取記憶體。L1D界面210和L1I界面220使L2快取記憶體與L1快取記憶體交互。例如,這些界面將載入佇列、驅逐佇列和查詢佇列實現為促進該通信的機制。預取指界面230是促進與本發明的具有PSC的邊界框預取指單元232相關聯的通信的電路,這將在下面更詳細地描述。在一個實施例中,預取指界面230實現具有PSC的邊界框預取指單元232和流預取指器這兩者,並且可以基於它們的相關聯演算法的結果進行預取指確定。如已知的,預取指器的設計通常涉及預取指器可以多快地預熱(例如,在生成預取指之前需要建立多少狀態)與預取指器多麼激進地做出請求之間的折衷。作為說明,邊界框預取指器在模式被建立之前可能花費相對長的時間來預熱(例如,5-8個請求),然而一旦模式被建立,就存在關於模式是預取指所基於的良好模式的相對良好的置信度,並且因此可以相對激進地進行預取指。另一方面,流預取指器的複雜程度低得多,由此在生成預取指之前可能僅需要三個訪問來預熱(例如,建立狀態)。實際上,流預取指器基本上尋找循序存取之間的重複步幅,並根據該步幅生成預取指。此外,在新請求進入當前未被跟蹤的新頁的情況下,流預取指器可以進行下一行預取指。總的來說,這樣的特徵使得流預取指器能夠在開始新頁時非常早地開始預取指,儘管預取指具有較低的置信度,並且因此不那麼激進地發出。存在可用於流預取指單元的許多已知的流預取指演算法,在此省略對其的討論,因為對於描述作為本公開的主題的具有PSC的邊界框預取指單元是不必要的。在U.S.8,880,807中描述了邊界框預取指器的一般結構和操作,其透過引用整體併入本文,並且下面描述了邊界框預取指器的選擇特徵的一般描述。
如本領域普通技術人員將理解的,由具有PSC的邊界框預取指單元232 (和流預取指單元)使用的預取指演算法部分地透過監視來自與給定核相關聯的L1I和L1D快取記憶體的載入請求來進行。因此,這些被示出為預取指界面230的輸入。預取指界面230的輸出是仲裁請求的形式,之後進入佇列,然後向標籤流水線250提供預取指請求,本領域普通技術人員將理解在此簡要描述的其相關功能。最後,外部界面240提供到L2快取記憶體外部並且實際上在處理器核外部的元件的界面,並且包括如下所述的L2填充佇列242和外部監聽佇列。如結合圖1所描述的,這樣的通信(特別是片外通信)透過匯流排界面120來路由。
如圖2所示,電路塊210、220、230和240各自具有表示為標籤流水線仲裁(arb)請求的輸出。標籤流水線250被提供為中心點,幾乎所有L2快取記憶體業務都透過該中心點行進。在所示的實施例中,存在兩個標籤流水線,表示為A和B。提供兩個這樣的標籤流水線僅僅用於負載平衡,並且再次基於負載平衡,從電路210、220、230和240(各種界面電路)輸出的標籤流水線請求可以被引導到標籤流水線A或標籤流水線B。在一個實施例中,標籤流水線是四階段流水線,其中階段由字母A、B、C和D表示,但是在一些實施例中,可以使用其他數量的階段。訪問快取記憶體的事務(在本文中有時被稱為“標籤流水線arb”)前進透過標籤流水線250的階段。在A階段期間,事務請求進入標籤流水線。在B階段期間,標籤被發送到陣列(標籤陣列260和資料陣列270)。在C階段期間,從陣列接收MESI資訊和LLC中的標籤命中更是未命中的指示,並且鑒於從陣列接收的資訊做出關於採取什麼動作的確定。在D階段期間,動作決策(完成/重放、分配填充佇列條目等)的階段回到請求佇列。
外部界面240包括外部填充佇列242 (或在本文中也簡稱為填充佇列或L2填充佇列)和外部監聽佇列。每當L2快取記憶體中存在未命中時,就將條目分配給填充佇列242。填充佇列限制未完成的L2到L3的未命中的總數。填充佇列242包括跟蹤諸如物理位址、記憶體樹、操作碼的某些特徵(例如,其是否被讀取、驗證、快取記憶體行刷新、常規載入請求、I/O請求、其是否針對加速器等)等的資訊的狀態暫存器集合。此外,填充佇列242包括控制邏輯(例如,每個條目的有限狀態機),其跟蹤諸如是否存在要驅逐的快取記憶體行等的資訊、以及本領域普通技術人員應當理解的其他功能。
最後,圖2示出了標籤陣列260和資料陣列270。標籤陣列260有效地或基本上包括中繼資料,而資料陣列270是包括資料的實際快取記憶體行的記憶體空間。標籤陣列260中的中繼資料包括MESI狀態以及L1I和L1D有效位。如已知的,MESI狀態定義存儲在資料陣列270中的資料是否處於修改(“M”)、獨佔(“E”)、共用(“S”)或無效(“I”)狀態之一。
已經描述了可以實現具有PSC的邊界框預取指單元的某些實施例的示例環境,注意圖3A-3B,其是一般地示出邊界框預取指的繪圖。廣義地說,邊界框預取指可以解釋如下。如果在圖形上表示了對記憶體塊的所有訪問,則所有訪問的集合可以由邊界框包圍(例如,在圖3A-3B中用虛線方塊示意性地示出)。如果在同一圖上表示附加請求,則更可以透過調整邊界框的大小來包圍這些請求。在圖3A所示的第一示意圖300A中,表示了對記憶體塊的兩個訪問。x軸反映訪問的時間順序。y軸表示訪問的4千位元組(KB)塊內的64位元組快取記憶體行索引。最初,繪製前兩個訪問:第一個是針對快取記憶體行5,第二個是針對快取記憶體行6。繪製了包圍這兩個點的方塊,並且在示意圖300A的右手側示出了指示最小(例如,min=5)和最大(例如,max=6)訪問位置的指針。
現在,針對快取記憶體行7進行第三個(新)訪問,如圖3B的示意圖300B所示,並且方塊被增長以包圍新點。當總是具有新資料點時,方塊沿x軸增長。然而,方塊的上邊緣也沿y軸(在這種情況下向上)生長。方方向和對指向最小和最大訪問的指標反映的這種改變反映在示意圖300B的右手側。方塊的下邊緣和上邊緣的移動用於確定訪問模式是向上趨勢、向下趨勢更是兩者都不是。
除了跟蹤邊界框的下邊緣和上邊緣的趨勢以確定方向趨勢之外,更跟蹤各個訪問,這是因為通常情況是訪問模式跳過一個或多於一個快取記憶體行。因此,為了防止浪費對可能被跳過的快取記憶體行的預取指,一旦檢測到向上或向下趨勢,邊界框預取指器(包括本公開的具有PSC的邊界框預取指單元)就使用附加標準來確定要預取指哪些快取記憶體行。由於訪問趨勢被重新排序,邊界框預取指器表示時間排序方面被剝離的訪問歷史。這是透過標記訪問位元遮罩中的位元來完成的,其中各個位對應於記憶體塊內的一個快取記憶體行。對於到達特定記憶體塊的各個訪問,設置訪問位元遮罩中的相應位。一旦已經對記憶體塊進行了足夠數量的訪問,預取指器就使用訪問位元遮罩(其不具有訪問的時間順序的指示)基於對整個塊的訪問的大視圖來做出預取指決策(例如,預測),而不是像常規預取指器那樣基於訪問的非常小的視圖並且嚴格地根據發生的時間來做出預取指決策。
一般地透過對邊界框預取指器的這種一般描述,現在將注意力轉到圖4,圖4是示出用於具有PSC的邊界框預取指單元的實施例的記憶體和控制邏輯(例如預測邏輯)的方塊圖。如上所述,圖4中描繪的大部分硬體和控制邏輯的描述至少部分地基於美國專利8,880,807(下文稱為‘807專利),其全部內容透過引用併入本文,其中進一步描述了增強以跟蹤附加訪問流。參考圖4,示出了邊界框預取指單元400,其包括針對(由具有PSC的邊界框預取指單元維持的多個預取指器狀態條目中的)各個預取指器狀態條目的記憶體402 (例如,多個暫存器)和控制邏輯404(例如,其可被實施為控制單元,包括有限狀態機)。換句話說,邊界框預取指單元400維持多個預取指器狀態條目,以使得能夠跟蹤對多個記憶體塊的訪問(經由狀態資訊,或簡單地,狀態)、以及通常對多個記憶體塊或頁的模式匹配,其中記憶體包括各個預取指器頁(例如,4KB頁)的活躍預取指器狀態條目和相應預測邏輯的組合以實現預取指生成。注意,具有PSC的邊界框預取指單元232 (圖2)可以使用結合圖4示出和描述的具有PSC的邊界框預取指單元400來實現。
記憶體402包括訪問位元遮罩暫存器406(也稱為塊位元遮罩暫存器)。訪問位元遮罩406中的各個位元對應於塊號存儲在塊號暫存器408中的記憶體塊內的一個快取記憶體行。也就是說,塊號暫存器408存儲記憶體塊的高位址位。訪問位元遮罩406中的位的真值指示相應的快取記憶體行已被訪問。訪問位元遮罩406被初始化,使得所有位都為假。在一個實施例中,記憶體塊的大小是4KB(其在一些實例中可以等於物理記憶體頁的大小),並且快取記憶體行的大小是64位元組;因此,在訪問位元遮罩406中存在64位。然而,在其他實施例中,快取記憶體行的大小可以變化。此外,維持訪問位元遮罩406的記憶體區域的大小可以變化,並且不一定對應於物理記憶體頁的大小。而是,維持訪問位元遮罩406的記憶體區域或塊的大小可以是任意的(優選地為2的冪),只要其包含足夠大數量的快取記憶體行以使得能夠檢測明確的方向和模式以用於有益的預取指目的即可。在下面的描述中,將記憶體塊描述為對應於頁並且具有相應的預取指器狀態條目。
記憶體402更包括最小(min)指針暫存器410和最大(max)指標暫存器412,其被維持為分別指向自具有PSC的邊界框預取指單元400開始跟蹤對記憶體塊的訪問以來已經被訪問的該記憶體塊內的最低和最高快取記憶體行索引。記憶體402更包括min_change計數器414和max_change計數器416,其分別對自具有PSC的邊界框預取指單元400開始跟蹤對該記憶體塊的訪問以來對min指針410和max指針412的改變次數進行計數。記憶體402更包括總計數器418,其對自具有PSC的邊界框預取指單元400開始跟蹤對該記憶體塊的訪問以來被訪問的快取記憶體行的總數進行計數。在一些實施例中,可以使用其他機制來對訪問進行計數,包括使用存取遮罩的總體計數(例如,64位總體計數)。記憶體402更包括中間指針420,其指向自具有PSC的邊界框預取指單元400開始跟蹤對記憶體塊的訪問以來已經被訪問的該記憶體塊內的中間快取記憶體行索引(即,最小指針410和最大指針412的平均值)。記憶體402更包括方向暫存器424、模式暫存器426、模式時段暫存器428、模式位置暫存器430和搜索指針暫存器432,下面將更詳細地描述其使用。
記憶體402更包括多個時段匹配計數器422。時段匹配計數器422各自維持針對不同時段的計數。在一個實施例中,時段是3、4和5,但是在一些實施例中可以使用其他時段值。時段是中間指針420的左/右的位數。在每次記憶體訪問塊之後更新時段匹配計數器422。如果訪問位元遮罩406指示在該時段內對中間指針420左側的訪問與在該時段內對中間指針420右側的訪問匹配,則具有PSC的邊界框預取指單元400遞增與該時段相關聯的時段匹配計數器422。下面更詳細地描述時段匹配計數器422的操作和使用。
在預取指的上下文中描述上述記憶體402,如上所述並在圖2中示出,預取指界面230由來自L1D和L1I的傳入載入請求饋送。L1快取記憶體正在向L2快取記憶體112發送對L1快取記憶體中未命中的訪問的載入請求。例如,在L1快取記憶體接收到載入或存儲指令時,搜索L1D中要載入或存儲的位址。更具體地,搜索L1D標籤陣列260以查看是否存在快取記憶體行,由此直接滿足請求,否則在快取記憶體未命中時,將請求轉發到L2快取記憶體112,其大於L1D因此在那裡請求更可能命中。然而,L2快取記憶體112也更慢並且更遠離執行單元,從而導致更高的訪問等待時間。如果L2快取記憶體112中存在未命中,則將請求轉發到L3快取記憶體130(或者如果不存在L3快取記憶體,則轉發到系統記憶體)。預取指界面230的具有PSC的邊界框預取指單元232(也稱為400)監視從L1D(和L1I)進入的載入請求(載入和存儲)流或訪問流並嘗試預測模式。通常,從L1D(和L1I)進入的載入請求被接收到預取指輸入佇列中,並在後續時鐘週期中被移除。存在與被移除的載入相關聯的物理位址,並且物理位址被截斷以指向4KB位址記憶體區域(例如,對應於該請求的4KB頁),並且進行比較以確定與對應於具有PSC的邊界框預取指單元正在監視的相應4KB記憶體區域的任何頁的匹配(例如,以確定是否存在針對該頁分配的記憶體和控制邏輯)。假定存在匹配,具有PSC的邊界框預取指單元更新與記憶體塊相關聯的狀態資訊,確定到記憶體區域中的偏移,並將其解碼成相應的快取記憶體行(例如,64位向量)。
在一個實施例中,訪問位元遮罩406對應於記憶體區域的頁條目,其中針對在監視記憶體區域期間訪問的各個快取記憶體行設置位。如果該位尚未被設置,則這是新的訪問,在這種情況下,總計數器418(對應於頁內已經被訪問的快取記憶體行的數量)被遞增。被更新的其他狀態資訊包括相應的4KB頁位址或記憶體區域的方塊號408。最小指針410或最大指針412針對每次訪問被更新。也就是說,對於每次訪問,確定該訪問是否低於當前最小值或高於當前最大值,如果是,則相應地調整指針。另外,計數器min_change計數器414和max_change計數器416遞增。調整中間指針420,並且基於min_change計數器414與max_change計數器416來調整方向424(例如,以確定流是向上更是向下)。例如,在min_change計數器414與max_change計數器416改變的次數之間進行比較。
簡要地說,由於記憶體請求可能不按順序發生(例如,如已知的,在保留站與記憶體順序緩衝器之間重新排序),因此狀態資訊有助於確定訪問模式中的方向。例如,如果min_change計數器414被更新兩次,而max_change計數器416被更新比如十次,則流很有可能趨向于向上。注意,在一些實施例中,可以使用其他或附加機制來建立方向。例如,可以使用頁訪問的子採樣(例如,使用頁的下四分位數或上四分位數中的前兩次訪問等)來建立方向。包括時段匹配計數器422、模式426、模式時段428、模式位置430和搜索指針432的記憶體402由控制邏輯404直接使用以確定訪問中的模式,然後使用這些訪問模式來預測要預取指的快取記憶體行。
記憶體402更包括預取指請求佇列436(輸出佇列)。預取指請求佇列436包括條目的迴圈佇列,各個條目存儲由具有PSC的邊界框預取指單元400的操作生成的預取指請求。在一個實施例中,選擇預取指請求佇列436的大小以允許將請求完全流水線化到L2快取記憶體標籤流水線250(圖2)中,使得預取指請求佇列436中的條目的數量至少與L2快取記憶體標籤流水線250中的階段 的數量一樣多。預取指請求被維持直到L2快取記憶體標籤流水線250結束,此時請求具有三種結果之一,即:L2快取記憶體112中的命中、重放或者填充佇列條目的分配以從系統記憶體預取指期望的資料。注意,具有PSC的邊界框預取指單元400更包括輸入預取指請求佇列(未示出),其接收來自L1D的進入L2快取記憶體的請求。
具有PSC的邊界框預取指單元400更包括控制邏輯404,其控制邊界框預取指單元400的元件以進行本文描述的各種功能。實際上,控制邏輯404包括用於基於記憶體402中的狀態資訊進行預取指的預測邏輯。
具有PSC的邊界框預取指單元400更包括預取指器狀態快取記憶體(PSC)438,其在下面結合圖6進一步描述。一般地,預取指器狀態快取記憶體438具有比在記憶體402中維持的更少狀態資訊類型,更有更多的預取指器狀態條目。此外,預取指器狀態快取記憶體438不具有相關聯的預測邏輯,從而允許存儲容量的增長的解耦,以跟蹤訪問流,而常規地將是預測邏輯的數量或複雜性增加。
圖5是示出具有PSC的邊界框預取指單元(諸如具有PSC的邊界框預取指單元400(和232)等)的實施例的操作500的一般方法的流程圖。一般方法500涉及使用針對各個活躍記憶體塊在相應記憶體402中針對各個活躍預取指器狀態條目維持的狀態資訊基於模式匹配來預測快取記憶體行的預取指。在方塊502處,具有PSC的邊界框預取指單元接收對記憶體位址的載入/存儲記憶體訪問。在一個實施例中,具有PSC的邊界框預取指單元在確定要預取指哪些快取記憶體行時在載入和存儲之間進行區分;在另一實施例中,具有PSC的邊界框預取指單元在確定要預取指哪些快取記憶體行時不在載入和存儲之間進行區分。在一個實施例中,具有PSC的邊界框預取指單元從微處理器中的載入/存儲單元接收記憶體訪問。具有PSC的邊界框預取指單元可以從各種源接收記憶體訪問,各種源包括但不限於載入/存儲單元、L1資料快取記憶體114(例如,由於在L1資料快取記憶體114中未命中的載入/存儲單元記憶體訪問而由L1資料快取記憶體114生成的分配請求)和/或其他源,諸如微處理器的採用與具有PSC的邊界框預取指單元不同的預取指演算法來預取指數據的其他預取指單元(未示出)等。
在決策方塊504處,控制邏輯404透過將記憶體訪問位址與各個塊號暫存器408值進行比較來確定記憶體訪問是否是針對活躍塊的。換句話說,控制邏輯404確定預取指器狀態條目(和控制邏輯)是否已被分配用於由記憶體訪問指定的記憶體位址所涉及的記憶體塊。如果是,流程進入方塊508;否則,流程進入方塊506。
在方塊506處,現在假定並非所有的預取指器狀態條目已經被使用(參見,例如,圖7,框708),控制邏輯404針對所涉及的記憶體塊分配預取指器狀態條目。例如,具有PSC的邊界框預取指單元接收記憶體訪問,並且如果不存在針對相應頁的活躍條目但存在針對附加條目的容量,則針對新頁產生實體新預取指器狀態條目(包括啟動相應的記憶體和控制邏輯)。注意,預取指器狀態條目彼此完全獨立,這是因為各個預取指器狀態條目對應於唯一的4KB記憶體區域。在一個實施例中,以迴圈方式實現分配。在另一實施例中,維持記憶體和控制邏輯的最近最少使用的資訊,並且基於最近最少使用進行分配。特別地,控制邏輯404透過清除訪問位元遮罩406的所有位,用記憶體訪問位址的高位填充塊號暫存器408,並且將最小指針410、最大指針412、min_change計數器414、max_change計數器416、總計數器418和時段匹配計數器422清除為零來啟動。流程進入方塊508。
在方塊508處,控制邏輯404基於記憶體訪問位址來更新記憶體402。例如,控制邏輯404遞增總計數器418,並且確定當前記憶體訪問位址是否大於最大指針412或小於最小指針410。更具體地,對於最大指標412的確定,控制邏輯404確定當前記憶體訪問位址(即,當前記憶體訪問位址所涉及的快取記憶體行的在記憶體塊內的索引)是否大於最大指標412值。如果是,則控制邏輯404用當前記憶體訪問位址所涉及的快取記憶體行的在記憶體塊內的索引來更新最大指標412,並且遞增max_change計數器416,然後進入中間指針420的確定。如果不是,則繼續進行最小指針410的比較的確定。也就是說,控制邏輯404確定當前記憶體訪問位址所涉及的快取記憶體行的在記憶體塊內的 索引是否小於最小指標410值。如果是,則控制邏輯404用當前記憶體訪問位址所涉及的快取記憶體行的在記憶體塊內的索引來更新min指標410,並且遞增min_change計數器414。在更新之後,控制邏輯404計算最小指標410和最大指標412的平均值,並且用計算的平均值更新中間指針420。然後,控制邏輯404檢查訪問位元遮罩406並且隔離中間指針420的左側和右側的N位,其中N是與各個相應的時段匹配計數器422相關聯的位數。然後,控制邏輯404確定中間指針420左側的N位是否與中間指針420右側的N位匹配。如果是,則控制邏輯404使具有時段N的相關時段匹配計數器422遞增,否則更新結束。
在決策方塊510處,控制邏輯404檢查總計數器418以確定程式是否已經對記憶體塊進行了足夠的訪問以檢測訪問模式。在一個實施例中,控制邏輯404確定總計數器418的值是否大於預定量,該預定量在一個實施例中為10,但是預定量可以變化。如果已經進行了足夠的訪問,則流程進入決策方塊514;否則,流程完成512。
在決策方塊514處,控制邏輯404確定在訪問位元遮罩406中指定的訪問之間是否存在明確的方向趨勢。也就是說,控制邏輯404確定訪問是明確呈上升趨勢(增加訪問位址)更是呈下降趨勢(減少訪問位址)。在一個實施例中,控制邏輯404透過確定min_change計數器414和max_change計數器416之間的差是否大於預定量來確定是否存在明確的方向趨勢,在一個實施例中,該預定量為2,但是預定量可以變化。如果min_change計數器414比max_change計數器416大預定量,則明確的趨勢是向下的;然而,如果max_change計數器416比min_change計數器414大預定量,則明確的趨勢是向上的。如果存在明確的方向趨勢,則流程進入決策方塊516;否則,流程結束512。
在決策方塊516處,控制邏輯404確定在訪問位元遮罩406中指定的訪問之中是否存在清除模式時段獲勝者 。在一個實施例中,控制邏輯404透過確定時段匹配計數器422中的一個與所有其他時段匹配計數器422之間的差是否大於預定量來確定是否存在清除模式時段獲勝者,在一個實施例中,該預定量是2,但是預定量可以變化。如果存在清除模式時段獲勝者,則流程進入方塊518;否則,流程結束512。
在方塊518處,控制邏輯404填充方向暫存器424以指示在決策方塊514處確定的明確的方向趨勢。另外,控制邏輯404用在決策方塊516處檢測到的清除獲勝模式時段(N)填充模式時段暫存器428。最後,控制邏輯404用在決策方塊516處檢測到的明確獲勝模式 填充模式暫存器426。也就是說,控制邏輯404用訪問位元遮罩406的N個位填充模式暫存器426到中間指針420的右側或左 側(根據上文針對方塊508中的更新的描述,其將匹配)。流程進入方塊520。
在方塊520處,控制邏輯404啟動對記憶體塊內的未取指的快取記憶體行的預取指。作為用於對未取指的快取記憶體行進行預取指的一種方法的說明,控制邏輯404在一個模式時段428處在檢測到的方向上遠離中間指針420處初始化搜索指針432和模式位置430。也就是說,控制邏輯404將搜索指針432和模式位置430初始化為中間指針420值和檢測到的模式的時段(N)值的和/差。例如,如果中間指針420的值為16且N為5且方向424向上,則控制邏輯404將搜索指針432和模式位置430初始化為21。因此,在該示例中,出於比較的目的,模式426的五個位將被定位成抵靠訪問位元遮罩406的位21至25。控制邏輯404檢查搜索指針432處的訪問位元遮罩406中的位元和模式426中的相應位元(其相對於模式位置430處的訪問位元遮罩406定 位),以確定是否預取指記憶體塊內的相應快取記憶體行。控制邏輯404預測是否需要所檢查的快取記憶體行。如果模式426中的位元為真(即,模式預測程式將訪問快取記憶體行),則控制邏輯404預測需要快取記憶體行。如果需要快取記憶體行,則流程繼續以確定快取記憶體行是否已經被取指。否則,控制邏輯404透過確定搜索指針432是否已經到達訪問位元遮罩406的末尾來確定記憶體塊中是否有更多任何未檢查的快取記憶體行,並且如果沒有更多的快取記憶體行,則流程結束,否則,流程以控制邏輯404遞增/遞減搜索指針432繼續。另外,如果搜索指針432已經超過模式426的最後一位元,則控制邏輯404用搜索指針432的新值更新模式位置430 (即,將模式426移位元到新的搜索指針432位置),然後流程返回到如上所述的檢查訪問位元遮罩406中的位。
繼續,控制邏輯404確定是否已經取指了所需的快取記憶體行。如果訪問位元遮罩406中的位為真,則控制邏輯404確定為已經取指了所需的快取記憶體行。如果已經取指了所需的快取記憶體行,則流程繼續如上所述確定記憶體塊中是否有更多任何未檢查的快取記憶體行,否則,則控制邏輯404確定所考慮的快取記憶體行是否大於相對於最小指針410(如果方向424向下)的預定量(在一個實施例中為十六),或者控制邏輯404確定所考慮的快取記憶體行是否大於相對於最大指針412(如果方向424向上)的預定量。如果是,則流程結束;否則,流程繼續確定請求佇列是否已滿。應注意,如果快取記憶體行離最小指針410/最大指針412太遠而使得流程結束,則這並不意味著具有PSC的邊界框預取指單元後續將不預取指塊內的附加快取記憶體行,這是因為對塊內的快取記憶體行的後續訪問可能觸發塊內的更多預取指。繼續,控制邏輯404確定預取指請求佇列436是否已滿。如果是,則控制邏輯404停止,直到預取指請求佇列436變為非滿流為止,然後繼續分配如下所述的條目。否則,控制邏輯404將條目分配到預取指請求佇列436中以預取指快取記憶體行。
注意,可以實現上述操作方法的變型,如‘807專利中部分描述的,並且因此變型預期在本公開的範圍內。
在一個實施例中,本文所述的預定量中的一個或多於一個是透過作業系統(諸如經由模型特定暫存器(MSR))或者經由微處理器100的熔絲可程式設計的,該熔絲在製造微處理器100時可能被熔斷。
已經描述了具有預取指器狀態快取記憶體的邊界框預取指單元400(圖4)的一般操作,現在將注意力轉向圖6,圖6是進一步示出系統600的示意圖,系統600包括具有PSC的邊界框預取指單元602,以及L2快取記憶體112(圖2)的選擇部分,其包括仲裁器616、佇列618和標籤流水線250。具有PSC的邊界框預取指單元602具有與(圖4的)具有PSC的邊界框預取指單元400相同或相似的特徵。在一個實施例中,具有PSC的邊界框預取指單元602包括記憶體604和控制(例如,預測)邏輯608,記憶體604包括多個活躍預取指器狀態條目606(例如,在該說明性的非限制性示例中為606A、606B和606C),控制(例如,預測)邏輯608包括用於活躍預取指器狀態條目606A的控制邏輯_0 610A、用於活躍預取指器狀態條目606B的控制邏輯_1 610B和用於活躍預取指器狀態條目606C的控制邏輯_2 610C。具有PSC的邊界框預取指單元602更包括PSC或預取指器狀態快取記憶體612,預取指器狀態快取記憶體612包括預取指器狀態條目614(例如,條目_3 614A、條目_4 614B等),而不需要附加的預測邏輯,因此增加了具有PSC的邊界框預取指單元602跟蹤更多訪問流的容量,同時在實現這種增加的跟蹤容量時解耦預測邏輯(即,不添加相關聯的預測邏輯)。在預取指器狀態快取記憶體612中針對不匹配任何活躍預取指器狀態條目610(例如,其位址區域)的載入,並且當利用了所有活躍預取指器狀態條目606時,分配預取指器狀態條目614。
各個活躍預取指器狀態條目606存儲針對與不同記憶體區域相關聯的頁(例如,作為說明性示例的4KB頁)的相應訪問流的狀態資訊,如結合圖4所描述的。另一方面,預取指器狀態快取記憶體612的多個預取指器狀態條目614各自包括與圖4中的記憶體402(或類似地,圖6中的記憶體604)相關聯地示出和描述的狀態資訊的子集。在一個實施例中,多個預取指器狀態條目614各自的狀態資訊包括第一狀態資訊,該第一狀態資訊包括相應記憶體區域的完整物理位址(例如,塊號)和針對對應於相應記憶體區域的頁內的快取記憶體行偏移的訪問的映射(例如,訪問位元遮罩)。在一些實施例中,多個預取指器狀態條目614各自的狀態資訊更包括第二狀態資訊,該第二狀態資訊包括方向趨勢(例如,如果有)和建立的置信度(例如,如果有)。在一些實施例中,其他和/或附加狀態資訊可以作為狀態資訊存儲在預取指器狀態條目614各自中,或者通常存儲在預取指器狀態快取記憶體612中。此外,預取指器狀態快取記憶體612中的預取指器狀態條目比記憶體604中的預取指器狀態條目更多。儘管與預取指器狀態快取記憶體612中的N個預取指器狀態條目相比,記憶體604在圖6中被描繪為具有三個預取指器狀態條目,其中N可以是基於設計和成本約束可行的任何數量(並且通常遠大於活躍預取指器狀態條目的數量),但是應當理解,其他數量可以用於圖6中描繪的所有條目。
一般地,具有PSC的邊界框預取指單元602使用記憶體604和控制邏輯608的狀態資訊來進行模式匹配(例如,針對物理記憶體的4KB頁)和預取指生成。預取指請求在仲裁器616處被仲裁,在618被排隊,並且被呈現給標籤流水線250,如上面結合圖2所說明的。
預取指器狀態快取記憶體612將記憶體與預測邏輯解耦,並且跟蹤預取指所需的選擇狀態資訊。狀態資訊可以包括第一狀態資訊和可選的第二狀態資訊,如上所述,包括4KB頁的物理位址、訪問次數、方向,並且在一些實施例中,包括諸如最小和最大指標、訪問模式等的狀態資訊,但是沒有與預取指器狀態條目614相關聯的預測邏輯。預取指器狀態快取記憶體612可以用於保留已經從記憶體604驅逐的條目的狀態資訊。預取指器狀態快取記憶體612以幾種方式更新,如結合圖7的方法700所描述的,並且通常可以被分類為未分配到記憶體604中的新載入請求或分配到記憶體604中的新載入請求。方法700通常由微處理器進行,並且更具體地,可以由邊界框預取指單元602(或400或232)進行,並且可以與結合圖5描述的方法結合使用。參考圖7,方法700在方塊702處接收載入請求。在方塊704處,方法700確定載入請求是否對應於活躍預取指器狀態條目606。如果是(“是”),則流程根據如上所述的方塊508(圖5)處的方法進入方塊706,否則(“否”)流程進入方塊708。在方塊708處,方法700確定記憶體604的所有活躍預取指器狀態條目606是否被利用。如果是(“是”),則流程根據方塊506(圖5)處的方法進入方塊710,否則(“是”),流程進入方塊712。在方塊712處,方法700確定載入是否分配到記憶體604的活躍預取指器狀態條目606中。
如果否(“否”),則方法700在方塊714處進一步確定載入是否與任何有效PSC預取指器狀態條目614匹配。如果載入不與任何有效PSC預取指器狀態條目614匹配,則流程進入方塊716,在方塊716處方法700在PSC 612中創建新的預取指器狀態條目,並且流程進入方塊718和720。在方塊718處,設置一個位以指示載入偏移(例如,在訪問位元遮罩中),並且在方塊720處,新的預取指器狀態快取記憶體條目614存儲載入(720)的4KB頁位址(例如,塊號)。
如果載入與有效預取指器狀態快取記憶體條目614匹配(方塊714為“是”),則方法700在方塊722處更新匹配的PSC預取指器狀態快取記憶體條目614。例如,載入提示在匹配的PSC預取指器狀態條目614中設置訪問映射位(例如,在訪問位元遮罩中),從而指示新的訪問,並且初始化與新的預取指器狀態快取記憶體條目相關聯的任何其他資料(狀態資訊,包括置信度)。
在方塊712處再次參考方法700,確定載入分配(“是”)到活躍預取指器狀態條目606中,其中流程進入方塊726到734。簡而言之,方塊712處的決策可以涉及實現陳舊計數器(例如,最近最少使用(LRU)計數器或演算法)。例如,各個條目可以具有被初始化為零的陳舊計數器。不匹配的傳入載入觸發陳舊計數器遞增到預定義閾值,並且如果達到(或超過)閾值,則該事件是條目將被驅逐並用新條目替換的指示。分配到記憶體604的活躍預取指器狀態條目606中的載入需要驅逐活躍預取指器狀態條目606,並且因此方法700在方塊726處選擇用於驅逐的條目(例如,基於如上所述的陳舊計數器)。在方塊728處,被驅逐的條目606分配到PSC 612中。在方塊730處,分配中涉及的處理取決於提示驅逐的傳入載入請求是否命中有效預取指器狀態條目614。如果不存在匹配的有效預取指器狀態條目614(在方塊730處為“否”),則在方塊732處用被驅逐的預取指器狀態條目的狀態資訊(例如,頁位址、訪問映射等)填充新PSC條目614。如果分配到活躍預取指器狀態條目606中的載入命中PSC 612的有效預取指器狀態條目614(在方塊730處為“是”),則在方塊734處使用來自匹配的預取指器狀態條目614的狀態資訊來播種(seed)新的預取指器狀態條目606。例如,狀態資訊可以包括PSC條目訪問映射和其他相關聯的狀態資訊。透過將狀態保存在PSC 612中,可以針對比常規邊界框預取指器中更多的訪問流保留狀態資訊,而無需附加預測邏輯(例如,搜索演算法、請求狀態等)的附加成本和複雜性。
注意,在一些實施例中,方法700可以被實現為軟體管理的或微代碼管理的。例如,當作業系統運行多個應用時,一旦應用被搶佔回到相同的處理器核上,可能並不總是調度應用,因此例如web流覽器可以在核0上運行並表現出良好的預取指,然後在核1上被搶佔和重新調度。核1具有其自己的預取指器和自己的L2快取記憶體,因此不具有在核0上建立的任何先前狀態資訊。在核0上調度的任何內容將在預取指器中具有不良資料,直到建立了狀態為止(並且對於核1同樣如此)。在一些實施例中,預取指器狀態快取記憶體可以包括微碼界面或軟體界面,使得當應用被搶佔時與應用相關聯的狀態資訊能夠被讀出並被保存以用於當其被調度時--即使當其在不同的核上被調度時。因此,界面使得應用或作業系統能夠重新載入在上次調度應用時建立的所有預取指器狀態資訊。
鑒於以上描述,本領域普通技術人員應當理解,針對具有預取指器狀態快取記憶體的邊界框預取指單元的實施例的用於管理預取指器狀態條目的示例方法的一個實施例(表示為方法800)包括:使用具有相應多個預測邏輯的多個活躍預取指器狀態條目來存儲與載入請求相關聯的訪問流的狀態資訊(步驟802);以及在預取指器狀態快取記憶體中存儲與活躍預取指器狀態條目中的任一個都不匹配的多個預取指器狀態條目(步驟804)。
流程圖中的任何過程描述或方塊應理解為表示代碼的模組、段、邏輯或部分(其包括用於在過程中實現特定邏輯功能或步驟的一個或多於一個可執行指令),並且替代實現包括在實施例的範圍內,其中如本發明領域技術人員將理解的,功能可以不按所示或討論的順序地執行(包括基本上同時執行或以不同循序執行),或者可以省略一個或多於一個方塊,這取決於所涉及的功能。
雖然在附圖和前面的描述中示出並詳細描述了本發明,但這樣的圖和描述應被認為是例示性或示例性的,而不是限制性的;本發明不限於所公開的實施例。透過研究附圖、公開內容和所附申請專利範圍,本領域技術人員在實踐所要求保護的發明時可以理解並實現所公開的實施例的其它變形。
注意,可以使用所公開的實施例的各種組合,因此參考實施例或一個實施例並不意味著從其它實施例的特徵的使用中排除該實施例的特徵。在申請專利範圍中,單詞“包括”不排除其它元件或步驟。
100:微處理器 102_0、102_6、102_7:片 110_0、110_6、110_7:核 112、112_0、112_6、112_7:L2快取記憶體 114_0、114_6:L1D快取記憶體 120、120_0、120_6、120_7:匯流排界面 130_0、130_7:L3快取記憶體 140_0、140_7:其他片邏輯 160:非核電路 162:非核匯流排界面 164:記憶體控制器 180:晶片外記憶體 190:虛線 210:L1d界面 220:L1i界面 230:預取指界面 232:邊界框預取指單元 240:外部界面 242:外部填充佇列 250:標籤流水線 260:標籤陣列 270:資料陣列 300A:示意圖 300B:示意圖 400:邊界框預取指單元 402:記憶體 404:控制邏輯 406:訪問位元遮罩 408:塊號 410:最小指針 412:最大指針 414:min_change計數器 416:max_change計數器 418:總計數器 420:中間指針 422:時段匹配計數器 424:方向 426:模式 428:模式時段 430:模式位置 432:搜索指針 436:預取指請求佇列 438:預取指器狀態快取記憶體 500:方法 502、506、508、512、518、520:方塊 504、510、514、516:決策方塊 600:系統 602:邊界框預取指單元 604:記憶體 606A、606B、606C:活躍預取指器狀態條目 608:控制邏輯 610A、610B、610C:控制邏輯 612:預取指器狀態快取記憶體 614A、614B、614C、614N:預取指器狀態條目 616:仲裁器 618:佇列 700:方法 702、704、706、708、710、712、714、716:方塊 718、720、722、726、728、730、732、734:方塊 802:步驟 804:步驟
參考以下附圖,可以更好地理解本發明的各個方面。不必按比例繪製附圖中的組件,而是將重點放在清楚地例示本發明的原理上。此外,在附圖中,相同的附圖標記在多個視圖中表示相應部件。 圖1是示出實現預取指器狀態快取記憶體(PSC)的實施例的示例微處理器的方塊圖。 圖2是示出實現具有PSC的邊界框預取指單元的實施例的示例L2快取記憶體的方塊圖。 圖3A-3B是示出邊界框預取指的繪圖。 圖4是示出根據具有PSC的邊界框預取指單元的實施例的用於跟蹤訪問流的狀態資訊以實現預取指的預取指器狀態條目和相關聯的預測邏輯以及預取指器狀態快取記憶體的實施例的方塊圖。 圖5是示出具有PSC的邊界框預取指單元的一般操作方法的流程圖。 圖6是根據具有PSC的邊界框預取指單元的實施例進一步示出包括多個活躍預取指器狀態條目和相應預測邏輯的邊界框預取指單元以及包括多個預取指器狀態條目而沒有相應預測邏輯的PSC的示意圖。 圖7是示出具有PSC的邊界框預取指單元的實施例的用於管理與載入請求相關聯的多個訪問流的預取指器狀態條目的示例方法的實施例的流程圖。 圖8是示出具有PSC的邊界框預取指單元的實施例的用於管理預取指器狀態條目的另一示例方法的實施例的流程圖。
802:步驟
804:步驟

Claims (20)

  1. 一種微處理器中的邊界框預取指單元,所述邊界框預取指單元包括: 記憶體,其包括多個活躍預取指器狀態條目和相應的多個預測邏輯,其中所述多個活躍預取指器狀態條目用於存儲與載入請求相關聯的相應多個訪問流的狀態資訊;以及 預取指器狀態快取記憶體,其包括與所述活躍預取指器狀態條目中的任何活躍預取指器狀態條目都不匹配的多個預取指器狀態條目。
  2. 如請求項1所述的邊界框預取指單元,其中所述預取指器狀態快取記憶體被配置為在使用所有所述活躍預取指器狀態條目的情況下存儲所述多個預取指器狀態條目。
  3. 如請求項1所述的邊界框預取指單元,其中所述活躍預取指器狀態條目中的各活躍預取指器狀態條目包括與不同的記憶體區域相對應的相應訪問流的狀態資訊。
  4. 如請求項1所述的邊界框預取指單元,其中所述預取指器狀態快取記憶體的所述多個預取指器狀態條目中的各預取指器狀態條目包括在所述多個活躍預取指器狀態條目中的各活躍預取指器狀態條目中使用的狀態資訊的子集。
  5. 如請求項4所述的邊界框預取指單元,其中所述預取指器狀態快取記憶體的所述多個預取指器狀態條目中的各預取指器狀態條目包括第一狀態資訊,所述第一狀態資訊包括相應記憶體區域的完整物理位址以及對與相應記憶體區域相對應的頁內的快取記憶體行偏移的訪問的映射。
  6. 如請求項5所述的邊界框預取指單元,其中所述預取指器狀態快取記憶體的所述多個預取指器狀態條目中的各預取指器狀態條目更包括第二狀態資訊,所述第二狀態資訊包括方向和置信度。
  7. 如請求項1所述的邊界框預取指單元,其中基於載入請求未分配到所述記憶體中並且基於未與所述預取指器狀態快取記憶體的有效預取指器狀態條目匹配,所述載入請求提示在所述預取指器狀態快取記憶體中創建新條目、在所述新條目中設置訪問映射位以指示載入偏移,以及存儲所述載入請求的頁位址。
  8. 如請求項1所述的邊界框預取指單元,其中基於載入請求未分配到所述記憶體中並且基於與所述預取指器狀態快取記憶體的有效預取指器狀態條目匹配,所述載入請求提示更新所匹配的有效預取指器狀態條目。
  9. 如請求項1所述的邊界框預取指單元,其中基於載入請求分配到所述記憶體中: 選擇所述活躍預取指器狀態條目之一以供驅逐;以及 被驅逐的預取指器狀態條目分配到所述預取指器狀態快取記憶體中作為新條目,其中,所述新條目使用所述被驅逐的預取指器狀態條目的狀態資訊,包括頁位址和訪問映射。
  10. 如請求項1所述的邊界框預取指單元,其中基於載入請求分配到所述記憶體中: 選擇所述活躍預取指器狀態條目之一以供驅逐;以及 基於對所述預取指器狀態快取記憶體的有效預取指器狀態條目的命中,使用所述有效預取指器狀態條目的狀態資訊以播種新的活躍預取指器狀態條目來代替被驅逐的活躍預取指器狀態條目。
  11. 如請求項1所述的邊界框預取指單元,其中所述活躍預取指器狀態條目中的被選擇以供驅逐的活躍預取指器狀態條目是基於置信度或最近最少使用演算法來選擇的。
  12. 如請求項1所述的邊界框預取指單元,更包括到所述預取指器狀態快取記憶體的界面,其中,所述界面使得應用或作業系統能夠將預取指器狀態資訊從所述微處理器的被搶佔的核遷移到新調度的核。
  13. 一種在微處理器的邊界框預取指單元中實現的方法,所述方法包括: 使用具有相應多個預測邏輯的多個活躍預取指器狀態條目來存儲與載入請求相關聯的訪問流的狀態資訊;以及 在預取指器狀態快取記憶體中存儲與所述活躍預取指器狀態條目中的任何活躍預取指器狀態條目都不匹配的多個預取指器狀態條目。
  14. 如請求項13所述的方法,其中存儲所述多個預取指器狀態條目更基於所有所述活躍預取指器狀態條目都被使用的條件。
  15. 如請求項13所述的方法,其中存儲所述多個預取指器狀態條目包括存儲在所述記憶體中使用的所述狀態資訊的子集。
  16. 如請求項15所述的方法,其中該記憶體所述多個預取指器狀態條目包括存儲第一狀態資訊,所述第一狀態資訊包括相應記憶體區域的完整物理位址以及對與相應記憶體區域相對應的頁內的快取記憶體行偏移的訪問的映射。
  17. 如請求項16所述的方法,其中存儲所述多個預取指器狀態條目包括存儲第二狀態資訊,所述第二狀態資訊包括方向和置信度。
  18. 如請求項13所述的方法,其中基於載入請求未分配到所述記憶體中: 在所述載入請求與所述預取指器狀態快取記憶體的任何有效預取指器狀態條目都不匹配的情況下,在所述預取指器狀態快取記憶體中創建新條目,在所述新條目中設置訪問映射位以指示載入偏移,並且存儲所述載入請求的頁位址;以及 在所述載入請求與所述預取指器狀態快取記憶體的有效預取指器狀態條目匹配的情況下,更新所述有效預取指器狀態條目。
  19. 如請求項13所述的方法,其中基於載入請求分配到所述記憶體中,選擇所述活躍預取指器狀態條目之一以供驅逐,以及: 將被驅逐的預取指器狀態條目分配到所述預取指器狀態快取記憶體中作為新條目,其中,所述新條目使用所述被驅逐的預取指器狀態條目的狀態資訊,包括頁位址和訪問映射;或者 基於對所述預取指器狀態快取記憶體的有效預取指器狀態條目的命中,使用有效預取指器狀態條目的狀態資訊以播種新的活躍預取指器狀態條目來代替被驅逐的活躍預取指器狀態條目。
  20. 如請求項13所述的方法,更包括:經由到所述預取指器狀態快取記憶體的界面來啟用預取指器狀態資訊從所述微處理器的被搶佔的核到新調度的核的遷移。
TW111125445A 2022-01-07 2022-07-07 邊界框預取指單元及其方法 TW202328906A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/570,456 2022-01-07
US17/570,456 US12013784B2 (en) 2022-01-07 2022-01-07 Prefetch state cache (PSC)

Publications (1)

Publication Number Publication Date
TW202328906A true TW202328906A (zh) 2023-07-16

Family

ID=83290237

Family Applications (1)

Application Number Title Priority Date Filing Date
TW111125445A TW202328906A (zh) 2022-01-07 2022-07-07 邊界框預取指單元及其方法

Country Status (3)

Country Link
US (1) US12013784B2 (zh)
CN (1) CN115098166A (zh)
TW (1) TW202328906A (zh)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487296B1 (en) * 2004-02-19 2009-02-03 Sun Microsystems, Inc. Multi-stride prefetcher with a recurring prefetch table
US7493451B2 (en) * 2006-06-15 2009-02-17 P.A. Semi, Inc. Prefetch unit
US8495300B2 (en) * 2010-03-03 2013-07-23 Ati Technologies Ulc Cache with reload capability after power restoration
US8762649B2 (en) 2010-03-29 2014-06-24 Via Technologies, Inc. Bounding box prefetcher
US10671535B2 (en) * 2013-07-17 2020-06-02 Advanced Micro Devices, Inc. Stride prefetching across memory pages
US10353819B2 (en) * 2016-06-24 2019-07-16 Qualcomm Incorporated Next line prefetchers employing initial high prefetch prediction confidence states for throttling next line prefetches in a processor-based system
US20180089085A1 (en) * 2016-09-23 2018-03-29 Qualcomm Incorporated Reusing trained prefetchers
US10331567B1 (en) * 2017-02-17 2019-06-25 Apple Inc. Prefetch circuit with global quality factor to reduce aggressiveness in low power modes
US20200301840A1 (en) 2019-03-20 2020-09-24 Shanghai Zhaoxin Semiconductor Co., Ltd. Prefetch apparatus and method using confidence metric for processor cache

Also Published As

Publication number Publication date
US20230222065A1 (en) 2023-07-13
CN115098166A (zh) 2022-09-23
US12013784B2 (en) 2024-06-18

Similar Documents

Publication Publication Date Title
EP3129886B1 (en) Dynamic cache replacement way selection based on address tag bits
EP2476060B1 (en) Store aware prefetching for a datastream
EP3055774B1 (en) Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode
KR102244191B1 (ko) 캐시 및 변환 색인 버퍼를 갖는 데이터 처리장치
US9798668B2 (en) Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode
US6766419B1 (en) Optimization of cache evictions through software hints
CN110362506B (zh) 高速缓存存储器及其中实现的方法
US20080133844A1 (en) Method and apparatus for extending local caches in a multiprocessor system
EP3676713B1 (en) Utilization-based throttling of hardware prefetchers
US9367466B2 (en) Conditional prefetching
Das et al. SLIP: reducing wire energy in the memory hierarchy
TWI793812B (zh) 微處理器、快取記憶體存儲器系統及其中實現的方法
US12013784B2 (en) Prefetch state cache (PSC)
TWI780804B (zh) 微處理器和預取指調整方法
TWI805435B (zh) 預取指方法和微處理器
KR20230069943A (ko) 로컬리티가 결여된 데이터를 타겟으로 하는 메모리 요청의 프리페치 디스에이블