TW201629775A - 在程式偵測時動態更新硬體預取特性為互斥或共享的裝置與方法 - Google Patents
在程式偵測時動態更新硬體預取特性為互斥或共享的裝置與方法 Download PDFInfo
- Publication number
- TW201629775A TW201629775A TW104134317A TW104134317A TW201629775A TW 201629775 A TW201629775 A TW 201629775A TW 104134317 A TW104134317 A TW 104134317A TW 104134317 A TW104134317 A TW 104134317A TW 201629775 A TW201629775 A TW 201629775A
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- prefetching
- prefetch
- predetermined program
- feature
- Prior art date
Links
- 230000004044 response Effects 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 claims description 47
- 230000007717 exclusion Effects 0.000 claims description 12
- 230000000694 effects Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 9
- 238000004458 analytical method Methods 0.000 description 25
- 238000012546 transfer Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 229920006395 saturated elastomer Polymers 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000007664 blowing Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/6022—Using a prefetch buffer or dedicated prefetch cache
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一種包含一處理核心之處理器,其偵測一預定程式是否正在處理器上執行並查詢相關於該預設程式的預取特性,其中該預取特性為互斥或共享。該處理器亦包含一硬體資料預取器,其使用該預取特性為該預定程式執行硬體預取。或者,該核心因應於偵測到該預定程式正在處理器上執行,由每個該處理器的一或多個範圍暫存器各自加載位址範圍至其中。每個該一或多個範圍暫存器具有一相關的預取特性,其中該預取特性為互斥或共享。該硬體資料預取器使用相關於加載至該範圍暫存器的位址範圍的該預取特性,為該預定程式執行硬體預取。
Description
本申請案主張2014年10月20日提出申請之美國臨時申請案第62/066,131號之優先權,此案件係整體引用為本案之參考。
由於處理器內部對快取記憶體之存取時間相對於處理器對系統記憶體之存取時間持續不對等成長,凸顯處理器需要更好的預取方式。舉例來說,Mowry描述一個對編譯器做修改以使用互斥模式預取的方式,此編譯器對分割記憶體執行本地分析時,參考“等效分類,其可為單一參考的參考集合”,並插入“一互斥模式預取而非共享模式預取在一給定的等效分類上,如果至少一個等效分類之成員是寫入的話”,請參閱“透過軟體控制資料預取的延遲容忍”,Mowry,Todd Carl,史丹佛大學1994年博士論文,第89頁之敘述。
以軟體為主之預取方式的一個缺點就如Mowry所述,因為預取指令將寫在程式裡於是會增加微碼大小,而增加微碼大小可能需要在系統主要儲存媒介(例如硬碟)上更多的儲存空間以保留較大的程式,並且在較大的程式執行時也要在系
統記憶體中在維持更大的空間才行。額外的指令也消耗處理器的資源,諸如分派區域(dispatch slots)、保留站區域、以及執行單元區域等,這些都可能對處理器效能產生負面影響,而且更特別的是將減少指令區間有效的預視能力,因此對使用指令階層的平行處理能力影響甚鉅。另一個缺點是它不會對所有在處理器執行的程式提供好處,而只會對那些使用最佳化編譯器所描述(profiled)與編譯過的程式有所助益。
本發明提供一種處理器,該處理器包含一用以偵測一預定程式是否正在處理器上執行的核心,該核心更查詢一個與正在處理器上執行之該預定程式相關的預取特性,其中該預取特性為互斥或共享。該處理器亦包含一硬體資料預取器,其使用該預取特性為該預定程式執行硬體預取。
本發明另一實施例提供一種由處理器執行的硬體資料預取器方法,該方法包含查詢一個與正在處理器上執行之該預定程式相關的預取特性,其中該預取特性為互斥或共享。該方法亦包含使用該預取特性為該預定程式執行硬體預取。
本發明再一實施例提供一種處理器,該處理器包含一用以偵測一預定程式是否正在處理器上執行的核心,並因應於偵測到該預定程式正在處理器上執行,由每個該處理器的一或多個範圍暫存器各自加載位址範圍至其中,每個該一或多個範圍暫存器具有一相關的預取特性,其中該預取特性為互斥或共享。該處理器亦包含一硬體資料預取器,其使用相關於加載至該範圍暫存器的位址範圍的該預取特性,為該預定程式執
行硬體預取。
本發明又一實施例提供一種由處理器執行的硬體資料預取器方法,該方法包含偵測一預定程式是否正在處理器上執行。該方法包含因應於偵測到該預定程式正在處理器上執行,由每個該處理器的一或多個範圍暫存器各自加載位址範圍至其中,每個該一或多個範圍暫存器具有一相關的預取特性,其中該預取特性為互斥或共享。該方法更使用相關於加載至該範圍暫存器的位址範圍的該預取特性,為該預定程式執行硬體預取。
100‧‧‧計算系統
101‧‧‧記憶存取代理器
102‧‧‧核心
103‧‧‧處理器
104‧‧‧繪圖處理單元(GPU)
106‧‧‧直接記憶體存取(DMA)裝置
108‧‧‧系統記憶體
112‧‧‧匯流排
114‧‧‧記憶體區塊
122‧‧‧硬體資料預取器
124‧‧‧末級快取記憶體(LLC)
132‧‧‧預取特性
202‧‧‧記憶體存取歷史
204‧‧‧更新模組
206‧‧‧預取模組
212‧‧‧記憶體存取歷史206之一部份
208‧‧‧預取請求
232‧‧‧微碼擷取
234‧‧‧程式加載/儲存
236‧‧‧窺探
1302‧‧‧位址範圍欄位
1304‧‧‧預取特性欄位
302~312、402~406、502~506、602~608、702~712、802~812、902~912、1002~1008、1102~1112、1202~1208、1402~1408‧‧‧步驟
第1圖係本發明一實施例之電腦系統的方塊圖。
第2圖係第1圖之硬體資料預取器之細部方塊圖。
第3圖係第1圖之系統的操作流程圖。
第4至11圖係第1圖依據複數個記憶體存取代理器對一記憶體區塊之存取分析以動態地更新該預取特性的操作流程圖。
第12圖係使用離線程式分析來決定預取特性以執行硬體預取的操作流程圖。
第13圖描繪複數個範圍暫存器的方塊圖。
第14圖係第1圖依據複數個記憶體存取代理器對一記憶體區塊之存取分析以動態地更新該預取特性的操作流程圖。
術語
“記憶體存取代理器”係一存取系統記憶體的裝置,舉例來說,處理核心、繪圖處理單元、以及執行直接記憶體存取的(DMA)周邊裝置都是記憶體存取代理器。
“硬體預取器”係基於記憶體存取代理器未來將需要資料之預估而經由從系統記憶體之資料讀取,特別是,如本發明所述,硬體預取不是一軟體預取,其係指處理器因執行一架構預取指令而由處理器從系統記憶體的資料讀取。因此,處理器基於處理器在運轉時的分析(亦即與硬體預取同時發生的記憶體存取分析)來執行硬體預取。相反的,相關於插入在程式架構預取指令(例如在編譯時間)的軟體預取會在程式執行之前被執行,因此不會與軟體預取同時發生。硬體預取執行所讀取的資料可能是由處理器所執行的指令、或是非指令的資料,例如處理器執行指令時的資料運算元。
“記憶體區塊”係在系統記憶體中一連串的記憶位置,例如記憶體頁。
“預取特性”係用以指出資料讀取者所要求的係與相關快取線所有權互斥(互斥預取特性)的預取性質、或是所要求的是允許其他記憶體區塊可保留快取線副本(共享預取特性)的預取性質。當一預取使用互斥預取特性時,將包含一命令每個其他的記憶體存取代理器無效其本地快取線副本(假使有修改則寫回目前資料數值)的匯流排傳輸,其通常被當成是讀取無效匯流排傳輸、具修改意圖之讀取匯流排傳輸、讀取所有權、或是相似的技術名稱;反之,當預取使用共享預取特性時,將包含一在共享狀態下允許每個其他的記憶體存取代理器保
留其本地快取線副本的匯流排傳輸,其通常被當成是單純的讀取匯流排傳輸、或是讀取共享OK匯流排傳輸、或是相似的技術名稱。
第1圖繪示本發明一實施例之電腦系統100的方塊圖。電腦系統100包含記憶存取代理器101,其共享一系統記憶體108並透過一匯流排112存取之。記憶體存取代理器101可包含一執行直接記憶體存取(DMA)的週邊裝置106、一繪圖處理單元(GPU)104、以及一處理器103。處理器103包含複數個處理核心102、一個由核心102所共享的末級快取記憶體(LLC)124、以及一硬體資料預取器122,GPU 104與DMA 106亦可包含一硬體資料預取器122。雖然在第1圖僅顯示兩核心102,其他數量核心的實施例亦可運用本發明之技術。
硬體資料預取器122包含一預取特性132,其係硬體資料預取器122用來從系統記憶體108的一記憶體區塊114執行硬體預取,預取特性132具有一互斥或共享之值。硬體資料預取器122動態地且選擇性地依據由記憶體存取代理器101對該記憶體區塊114進行存取的分析來更新預取特性132。硬體資料預取器122將在下面的第2圖與其他圖示做更進一步的描述。
處理器103可包含一作為處理器103與匯流排112之介面的匯流排介面單元,而每個核心102包含一指令快取、指令解碼器、指令分派器、記憶子系統(例如加載/儲存單元、記憶緩衝區)、其他執行單元、以及一本地資料快取(例如第一級資料快取)。
當硬體資料預取器122對匯流排介面單元提出一
硬體預取請求時,其將伴隨預取特性132(亦即共享或互斥)。匯流排單元予以回應,並在匯流排112上執行傳輸而獲得相關於該硬體預取請求的快取線所有權。如果該預取特性132是互斥,匯流排介面單元執行一指示其他記憶體存取代理器101無效其本地快取線副本,並在本地快取線副本有修改時回寫目前資料的數值。如果預取特性132為共享,匯流排介面單元執行一允許每個其他的記憶體存取代理器保留其本地快取線副本的匯流排傳輸。
當一快取線對一處理器103的快取記憶體做預取且快取線可被預取時,其狀態為對其他核心102為互斥、或是其狀態為與其他共享系統記憶體108之其他記憶體存取代理器101所共享。舉例來說,如果一快取線將被複數個核心102所共享,它可有效地在共享狀態下使快取線被預取;然而,如果一快取線將被預取核心102執行寫入時,它可有效地在互斥而非共享之下預取快取線。
請參閱第2圖,其描第1圖之硬體資料預取器122的方塊結構圖。該硬體資料預取器122包含一更新模組204,用以接收由記憶體存取歷史202而來的資訊。記憶體存取歷史202包含由記憶體存取代理器101對系統記憶體108進行存取的資訊,特別的是,該記憶體存取歷史202包含由每個核心102從系統記憶體108所執行的微碼擷取232(亦即指令擷取232)資訊、由核心102對系統記憶體108所執行的程式加載/儲存234、以及因應產生在匯流排112上之對系統記憶體108執行存取而產生之窺探236(該系統記憶體108存取係由包含該硬體資料預取器
122之外的複數個記憶體存取代理器101之一者所產生)。該資訊可包含,但不限定於,記憶體位址、存取類型(例如指令擷取、加載、儲存)、以及每個記憶體存取代理器101的識別碼(其亦包含產生該存取的核心102辨識碼)。較佳者,該硬體資料預取器122對系統記憶體108中被處理器103所存取的主動區塊114維持一分離的預取特性132與分離的記憶體歷史202。該更新模組204依據記憶體存取歷史202的分析來更新預取特性132,相關實施例將闡述如下。
硬體資料預取器122亦包含一接收預取特性132的預取模組206。當啟動預取模組206去分析核心102的記憶體存取歷史,並依據該分析預估那些資料在將來會被核心102需要時,該預取模組206也接收一與核心102相關的記憶體存取歷史202之一部份212。預取模組206經由對匯流排介面單元產生包含該預取特性132之預取請求208,來執行對該預取資料的硬體預取,該預取特性可包含一預設值,亦即共享或互斥。舉例來說,預設值可透過當核心102在製造時選擇性地燒斷鎔絲並以其狀態做預設、或經由核心102微碼的常數值做預設。預取模組206可從系統記憶體108預取一或多個有價值的快取線,並存入快取記憶體124、及/或處理器103在快取記憶體階層中較低階的快取記憶體(例如核心102的私人快取記憶體)裡。
請參閱第3圖,其描繪第1圖所示系統的操作流程圖。
在步驟302中,記憶體存取代理器101存取系統記憶體108中的一記憶區塊114,該存取可包含核心102對記憶體
區塊104的存取,如步驟306所述者。硬體資料預取器122累積相關於每個主動記憶體區塊114之記憶體存取歷史202中的存取資訊。流程前往步驟304。
在步驟304中,更新模組204分析該記憶體存取代理器101對記憶體區塊114的存取,並依據該分析動態地更新相關於該記憶體區塊114的預取特性132。更新模組204在步驟312中,當預取模組206持續對記憶體區塊114執行硬體預取時,繼續分析並更新預取特性132。是以,第3圖的步驟304至312已顯示操作流程,而分析的實施例將隨後搭配後續圖示做說明。
在步驟306中,核心102執行程式,其包含從系統記憶體108擷取程式指令,並因應於所擷取程式指令之執行而對系統記憶體108執行加載/儲存。此外,指令存取、加載與儲存係對系統記憶體108之記憶體區塊114(例如記憶體頁)做存取。基本上,存取將對複數個記憶體區塊114執行。硬體資料預取器122累積相關於每個主動記憶體區塊114之記憶體存取歷史202中的存取資訊。流程由步驟306前往步驟308。
在步驟308中,預取模組206依據在步驟306所累積的核心102對記憶體區塊114的記憶體存取歷史202之一部分212,來預估記憶體區塊114的那些資料將是核心102需要的。流程從步驟308前往步驟312。
在步驟312中,預取模組206執行在步驟308所預估資料之硬體預取,此硬體預取係使用在步驟304所動態更新的預取特性132。雖然步驟302至304所顯示的是記憶體存取代理器101來驅動預取特性的更新,應注意的是,在步驟302由記憶
體存取代理器101進行的記憶體存取以及步驟304所進行的預取特性132動態更新可同時發生。此外,儘管在流程的步驟306、308、至312係因核心102的記憶體存取來驅動預估,且此預估係使用動態更新的預取特性來驅動硬體預取,應注意的是,在步驟306由核心102進行的記憶體存取以及步驟308所進行的預取與在步驟312的硬體預取可同時發生。如第3圖所示,由步驟312返回至步驟302與306,因為流程在步驟302與304、以及步驟306、308與312是同時發生的,所以在步驟312所執行的預取為硬體預取而非軟體預取。
應注意的是,雖然上述流程僅描繪關於單一記憶體區塊的操作情形,但硬體資料預取器122可對複數個記憶體區塊114執行硬體資料預取,亦可同時使用動態更新的預取特性132來進行預取。較佳者,硬體資料預取器122可對其執行硬體預取的每個記憶體區塊144維持一個相關的動態更新預取特性132。
互斥而非共享預取快取線的一個好處,是這樣做可導致一單一匯流排傳輸而非兩個匯流排傳輸,亦即,並非是一請求資料的第一傳輸之後,跟隨著一取得與所有權互斥的資料之第二傳輸,互斥預取是一結合兩個請求並要求資料互斥的單一傳輸,這個做法對多芯片多核心處理器且每個核心具有自己的末級快取的架構特別有好處。
此處所描述之基於預取特性以動態在共享或互斥間改變之硬體預取相對於軟體預取解決方式的好處,在於硬體預取的解決方式可在運作時觀察其他記憶體存取代理器該對
記憶體區塊的存取,亦即當它們發生時執行改變預取特性的分析,然而對軟體預取的解決方式而言,很難在編譯時去決定其他記憶體存取代理器何時會對哪個記憶體區塊進行存取。
請參閱第4圖,其描繪對第1圖中依據記憶體存取代理器101對一記憶體區塊114做存取之分析,來進行預取特性132之動態更新的操作流程圖。流程開始於步驟402。
在步驟402中,記憶區塊114的預取特性132初始值為互斥,這是因為預設值是互斥的(如上所述),或者是依據一個對該記憶體區塊114的初始存取(例如依據第6圖或第10圖所述)而對該記憶體區塊114的預取特性132初始化為互斥。一般來說,如果核心102讀取資料極可能也會更新該資料,而且就一般而言,在記憶體區塊114中的資料通常具有相似的性質。因此,如前所述,互斥地預取快取線來執行單一匯流排傳輸而非多個匯流排傳輸,可以降低匯流排112的運載量並減少延遲。流程前往步驟404。
在步驟404中,硬體資料預取器122被通知該記憶體區塊114中的一快取線已被其他記憶體存取代理器101所窺探,並具有寫入該記憶體線的意圖而將導致記憶體歷史202的更新,這也表示在該記憶體區塊114中其他快取線的資料將被其他記憶體存取代理器所寫入。在這種情形下,因為可能影響核心102與其他記憶體存取代理器101之間對該快取線的預取,因此可能對這些快取線的互斥預取產生不利的影響。流程前往步驟406。
在步驟406中,更新模組204因應於步驟404的窺探
而更新預取特性132為共享。流程在步驟406結束。
請參閱第5圖,其描述第1圖中,依據記憶體存取代理器對記憶體區塊114之存取分析而動態更新預取特性132的操作流程圖。流程開始於步驟502。
在步驟502中,每個記憶體區塊114的預取特性132被初始設定為共享,這是因為預設值是共享的(如上所述),或者是基於一個對記憶體區塊114的初始存取(例如依據第6圖或第10圖所述)而對記憶體區塊114的預取特性132初始化為共享。流程前往步驟504。
在步驟504中,硬體資料預取器122持續追蹤(例如記錄在記憶體存取歷史202中)在記憶體區塊114中的快取線已被核心102寫入的數量並偵測到該數量已超過一臨界值。這可能表示在該記憶體區塊114中其他快取線的資料將被核心102所寫入,而在這種情形下對這些記憶體線的互斥預取產生不利影響的理由如下。臨界值可為一預先決定的數值、或是經由系統軟體程式化、或是依據預取執行成效分析並由硬體資料預取器122所動態更新的數值。在一實施例中,臨界值是1,亦即依據第一次對記憶體區塊114的寫入而將預取特性132更新為互斥。流程前往步驟506。
在步驟506中,更新模組204因應於在步驟504中臨界值被超越而更新預取特性132為互斥。流程終止於步驟506。
請參閱第6圖,其描繪第1圖中,依據記憶體存取代理器101對記憶體區塊114做存取分析以進行預取特性132的動態更新的操作流程圖。流程開始於步驟602。
在步驟602中,更新模組204測得核心102對記憶體區塊114的初始存取。流程前進至步驟604。
在決策步驟604中,更新模組204判斷該初始存取是指令擷取或加載/儲存。如果是指令擷取則流程前往步驟606,否則前往步驟608。
在步驟606中,更新模組204因應於在步驟604判斷該初始存取為指令擷取而更新預取特性132為共享,這樣做是有益處的,因為對一記憶體區塊114執行指令擷取時,剩餘對記憶體區塊114的存取也可能是指令擷取,且基本上包含指令的記憶體位置一旦被載入記憶體後就不會再被寫入。在一實施例中,硬體資料預取器122持續使用在步驟606所動態更新的共享預取特性132來從記憶體區塊114執行硬體預取,然而,如同在說明書所描述的其他實施例中,當硬體資料預取器122對記憶體區塊的存取做監控與分析時,初始預取特性132可從共享被更新為互斥(反之亦然)。流程終止於步驟606。
在步驟608中,更新模組204因應於在步驟604判斷該初始存取為加載/儲存而更新預取特性132為互斥。在一實施例中,硬體資料預取器122持續使用在步驟608所動態更新的互斥預取特性132來從記憶體區塊114執行硬體預取,然而,如同在說明書所描述的其他實施例中,當硬體資料預取器122對記憶體區塊的存取做監控與分析時,初始預取特性132可從互斥被更新為共享(反之亦然)。流程結束於步驟608。
請參閱第7圖,其描繪第1圖中,依據記憶體存取代理器101對記憶體區塊114做存取分析,以進行預取特性132
的動態更新的操作流程圖。流程開始於步驟702。
在步驟702中,更新模組204維持核心102從記憶體區塊114所擷取的指令計數值(例如記錄在記憶體存取歷史202中),並以fetch_cnt來表示、以及從記憶體區塊114而來的程式加載/儲存計數值,並以load_store_cnt來表示。流程前進至步驟704。
在決策步驟704中,更新模組204判斷fetch_cnt是否大於load_store_cnt。如果是則流程前往步驟706,否則流程前往步驟708。
在步驟706中,更新模組204因應於在步驟704中fetch_cnt大於load_store_cnt之判斷而更新預取特性132為共享。流程前往步驟706。
在步驟708中,更新模組204判斷fetch_cnt是否小於load_store_cnt,如果是則流程前往步驟712,否則流程結束。
在步驟712中,更新模組204因應於在步驟708中fetch_cnt小於load_store_cnt之判斷而更新預取特性132為互斥。流程結束於步驟712。
請參閱第8圖,其描繪第1圖中,依據記憶體存取代理器101對記憶體區塊114做存取分析,以進行預取特性132的動態更新的操作流程圖。流程開始於步驟802。
在步驟802中,硬體資料預取器122維持一核心102從記憶體區塊114所擷取的指令計數值(例如記錄在記憶體存取歷史202中),並以fetch_cnt來表示、以及從記憶體區塊114而來的程式加載/儲存計數值,並以load_store_cnt來表示。流
程前進至步驟804。
在決策步驟804中,更新模組204判斷fetch_cnt與load_store_cnt的差值是否大於一臨界值。如果是則流程前往步驟806,否則流程前往步驟808。臨界值可為一預先決定的數值、或是經由系統軟體程式化、或是依據預取執行成效分析並由硬體資料預取器122所動態更新的數值。
在步驟806中,更新模組204因應於在步驟804中fetch_cnt與load_store_cnt之間的差值大於該臨界值之判斷而更新預取特性132為共享。流程前往步驟806。
在決策步驟808中,更新模組204判斷load_store_cnt與fetch_cnt的差值是否大於一臨界值。如果是則流程前往步驟812,否則流程結束。在步驟808的臨界值數值可與步驟804所使用的臨界值相同或不同。
在步驟812中,更新模組204因應於在步驟808中load_store_cnt與fetch_cnt之間的差值大於臨界值之判斷而更新預取特性132為互斥。流程結束於步驟812。
請參閱第9圖,其描繪第1圖中,依據記憶體存取代理器101對記憶體區塊114做存取分析,以進行預取特性132的動態更新的操作流程圖。流程開始於步驟902。
在步驟902中,硬體資料預取器122維持一核心102從記憶體區塊114所擷取的指令計數值(例如記錄在記憶體存取歷史202中),並以fetch_cnt來表示、以及從記憶體區塊114而來的程式加載/儲存計數值,並以load_store_cnt來表示。流程前進至步驟904。
在決策步驟904中,更新模組204判斷fetch_cnt與load_store_cnt的差值是否大於一臨界值。如果是則流程前往步驟906,否則流程前往步驟908。
在步驟906中,更新模組204因應於在步驟904中fetch_cnt與load_store_cnt之間的差值大於該臨界值之判斷而更新預取特性132為共享。流程結束於步驟906。
在決策步驟908中,更新模組204判斷fetch_cnt與load_store_cn之間的差值是否小於一臨界值。如果是則流程前往步驟912,否則流程結束。在步驟908的臨界值數值可與步驟904所使用的臨界值相同或不同。
在步驟912中,更新模組204因應於在步驟908中fetch_cnt與load_store_cnt之間的差值小於臨界值之判斷而更新預取特性132為互斥。流程結束於步驟912。
請參閱第10圖,其描繪第1圖中,依據記憶體存取代理器101對記憶體區塊114做存取分析,以進行預取特性132的動態更新的操作流程圖。流程開始於步驟1002。
在步驟1002中,更新模組204測得核心102對記憶體區塊114的初始存取。流程前進至步驟1004。
在決策步驟1004中,更新模組204判斷該初始存取是加載或儲存。如果是加載則流程前往步驟1006,否則前往步驟1008。在本文中,一加載存取包含一個程式指令之擷取與一個由該程式加載指令所執行的加載。
在步驟1006中,更新模組204因應於在步驟1004判斷該初始存取為加載而更新預取特性132為共享,在一實施例
中,硬體資料預取器122持續使用在步驟1006所動態更新的共享預取特性132來從記憶體區塊114執行硬體預取,然而,如同在說明所描述的其他實施例中,當硬體資料預取器122對記憶體區塊的存取做監控與分析時,初始預取特性132可從共享被更新為互斥(反之亦然)。流程前往步驟1006。
在步驟1008中,更新模組204因應於在步驟1004判斷該初始存取為儲存而更新預取特性132為互斥。這樣做是有益處的,因為對一個從記憶體區塊114執行儲存時,剩餘對記憶體區塊114的存取也可能是儲存。在一實施例中,硬體資料預取器122持續使用在步驟1008所動態更新的互斥預取特性132來從記憶體區塊114執行硬體預取,然而,如同在說明書所描述的其他實施例中,當硬體資料預取器122對記憶體區塊的存取做監控與分析時,初始預取特性132可從互斥被更新為共享(反之亦然)。流程結束於步驟1008。
請參閱第11圖,其描繪第1圖中,依據記憶體存取代理器101對記憶體區塊114做存取分析,以進行預取特性132的動態更新的操作流程圖。流程開始於步驟1102。
在步驟1102中,硬體資料預取器122維持一核心102從記憶體區塊114而來的加載計數值(例如記錄在記憶體存取歷史202),並以load_cnt來表示、以及從記憶體區塊114而來的程式儲存計數值,並以store_cnt來表示。流程前進至步驟1104。
在決策步驟1104中,更新模組204判斷load_cnt與store_cnt的比例值是否大於一臨界值。如果是則流程前往步驟
1106,否則流程前往步驟1108。臨界值可為一預先決定的數值、或是經由系統軟體程式化、或是依據預取成效分析並由硬體資料預取器122所動態更新的數值。
在步驟1106中,更新模組204因應於在步驟1104中load_cnt與store_cnt之比例值大於該臨界值之判斷而更新預取特性132為共享。流程結束於步驟1106。
在決策步驟1108中,更新模組204判斷store_cnt與load_cnt的比例值是否大於一臨界值。如果是則流程前往步驟1112,否則流程結束。在步驟1108的臨界值數值可與步驟1104所使用的臨界值相同或不同。
在步驟1112中,更新模組204因應於在步驟1008判斷store_cnt與load_cnt的比例值大於該臨界值而更新預取特性132為互斥。流程結束於步驟1112。
請參閱第12圖,其描繪使用離線程式分析來決定預取特性以執行硬體預取的操作流程圖。流程開始於步驟1102。
在步驟1202中,一程式被分析以判斷當處理器在共享預取特性或互斥預取特性時的執行硬體預取執行成效較佳。該分析係對複數個有興趣的不同程式(例如常執行的程式、或已知在一般情形下需要較長時間來執行的程式,因此它們的執行成效相當重要而需要被最佳化)而進行。較佳者,當處理器使用共享預取特性來執行硬體預取時程式會被執行許多次,且當處理器使用互斥預取特性來執行硬體預取時程式會被執行許多次執行時,其執行成效都會加以記錄,例如對每個
共享或互斥的組態而言,多次執行結果的平均值將被計算出來。在另一個實施例中,該分析會使用在多個系統與伺服器通信時之共同實驗值,其中伺服器提供當系統使用一組態資訊並動態決定系統之改良組態時所需的組態資訊與執行成效資料。這類的實施如申請日為09/02/2014的美國專利編號第14/474,623與14/474,699之申請案,其皆引用申請日為05/20/2014且編號是62/000,808的美國暫時申請案做優先權,而它們全部都合併在此作參考之用。在這個實例中,動態系統組態包含對預取特性132的動態更新。流程前往步驟1204。
在步驟1204中,一個對每個程式配置一項目(entry)的表格被編譯。較佳者,每個項目包含程式的識別特性以及在步驟1202中提供最佳執行成效的預取特性。該識別特性可包含一程式名稱(例如已被作業系統所知的程序名稱)、記憶體存取態樣(pattern)及/或程式所使用之不同指令類型的數量。該表格亦可包含在處理器103上最後執行的系統軟體,諸如裝置驅動程式。流程前往步驟1206。
在步驟1206中,在表格中的程式被偵測是否正在處理器103中執行。在一實施例中,系統軟體偵測該程式正在執行中,例如作業系統可查詢執行中程序的程式名稱,其好比作業系統在它的執行程表格中查詢每個程式的名稱般。在另一個實施例中,該表格會在啟動時間裡被作業系統下載至處理器103,而且處理器103會測得該程式正被執行中。舉例來說,處理器103可在程式執行時收集與程式相關的識別特性(例如記憶體態樣及/或程式所使用之不同指令類型的數量),以及將識
別特性與步驟1204所編譯表格的項目作比對並下載至處理器103。流程前往步驟1208。
在步驟1208中,硬體資料預取器122對在步驟1206中所測得的程式執行硬體預取,其係使用該表格項目中與該所測得程式相關的預取特性來進行。流程結束於步驟1208。
請參閱第13圖,其描繪複數個範圍暫存器1300的方塊圖。範圍暫存器1300包含於硬體資料預取器122。在一實施例中,硬體資料預取器122包含一相關於每個核心102的範圍暫存器1300集合,每個範圍暫存器1300包含一位址範圍欄位1302與一預取特性欄位1304。每個位址範圍欄位1302可經由程式化以指示位於處理器103位址空間中的一個位址範圍。預取特性1304指示一預取特性,其係共享或互斥。如預取模組206對硬體預取所預測的資料位址,該預取模組206判斷該預取位址是否位於所指示範圍暫存器1300的位址範圍中。如果正確,預取模組206依據在相關的預取特性欄位1304所指示的預取特性來產生該預取請求208;如果不正確,在一實施例中,該預取模組206以預設的預取特性來產生該預取請求208。在一實施例中,該預設的預取特性為共享,因此範圍暫存器1300僅需要用來指示互斥硬體預取所需的位址範圍。在另一實施例中,該預設的預取特性為互斥,所以範圍暫存器1300僅需要用來指示共享硬體預取所需的位址範圍。在這些實施例中,由於暗示所指示的預取特性與預設的預取特性相反,因此該預取特性欄位1304可能不需要。
請參閱第14圖,其描繪使用由第13圖之範圍暫存
器1300所決定之預取特性來執行硬體預取的操作流程圖。流程開始於步驟1402。
在步驟1402中,一程式被分析以當處理器使用共享預取特性或互斥預取特性執行硬體預取時,判斷不同程式中的哪些程式在處理器103上執行時有較佳的執行成效,其類似於上述第12圖所述的方式,然而在步驟1402所執行的分析包含較執行於步驟1202之分析具更細的區間(finer granularity)。更特別的是,此分析包含以相關於被程式化在位址暫存器1300之內的位址範圍,來評估每個程式以共享或互斥預取特性的執行成效。是以,舉例來說,包含由複數個記憶體存取代理器101所存取資料之位址範圍,可透過共享預取特性而有效地包含於表格中;反之,包含由一單一核心102所寫入資料之位址範圍,可經由互斥預取特性而有效地包含於表格中。流程前往步驟1404。
在步驟1404中,一個對每個程式配置一項目的表格被編譯,其類似於步驟1204所述的方式。然而在步驟1404所編譯的表格包含位址範圍以及將被推入範圍暫存器1300的相關預取特性。流程前往步驟1406。
在步驟1406中,在表格中的程式被偵測是否正在處理器103上執行,其類似於步驟1206所述的方式。然而,當程式被測到正在執行時,使用該表格項目中相關於該程式的資訊來額外地程式化範圍暫存器1300。在一實施例中,係由作業系統程式化該範圍暫存器1300。在另一個實施例中,處理器103將因應於偵測到該程式之執行而自己本身程式化該範圍暫存
器1300,舉例來說,處理器103的微碼可程式化範圍暫存器1300。流程前往步驟1408。
在步驟1408中,硬體資料預取器122使用範圍暫存器1300的預取特性並結合預設的預取特性,對在步驟1406所測到的程式執行硬體預取。流程結束於步驟1408。
雖然上文已描述許多動態更新預取特性132的不同實施例,其他不脫離本發明精神的實施例亦被考量在本發明中,舉例來說,在一實施例中,將對每個主動記憶體區塊114維持一飽和計數值。當記憶體存取代理器101之一者對記憶體區塊114做存取,並意圖從互斥硬體預取得(例如一儲存或加載/儲存)獲得好處時,更新模組204用飽和的方式增加計數值;反之,當記憶體存取代理器101之一者對記憶體區塊114做存取,並意圖從共享硬體預取(例如一加載或指令擷取)獲得好處時,更新模組204用飽和的方式減少計數值。較佳者,預取特性132是飽和計數值的最重要位元,舉例來說,更新模組204維持一佇列(例如移位暫存器)用以儲存關於對每個記憶體區塊114的最近N個存取之資訊(例如儲存、加載/儲存、指令擷取),其中N大於1。更新模組204依據儲存在佇列且希望從互斥或共享硬體預取獲得好處的資訊,來動態地更新預取特性132為互斥或共享。舉例而言,若大部分的最近N個存取是儲存時則更新為互斥,反之,若大部分的最近N個存取是指令擷取時則更新為共享。在另一個例子中,對預取模組206從記憶體區塊114執行的每個硬體預取而言,更新模組204維持所使用預取特性132的指示。對每個發生在預取快取線的存取來說,若正在做存取的
記憶體存取代理器101對相關於指示的快取線進行寫入時,更新模組204將更新該指示為互斥,且若該快取線被窺探時則更新模組204更新該指示為共享。在這個方式下,一個在記憶體區塊114中的快取線位元圖示(bitmap)將被維護,用以指出記憶體區塊114中,不同快取線可能用到的最接近最佳預取特性之資訊。更新模組204在位元圖示中搜尋態樣並判斷下一個快取線的位址是否硬體預取命中樣態中的任一者,並使用位元圖示以動態判斷該預取特性132是否可用於硬體預取該快取線。最後,雖然本文已揭露包含於一多核心處理器之硬體資料預取器的實施例,包含於單一核心之硬體資料預取器的其他實施例也屬於不脫離本發明精神之範疇。
本發明已透過各種實施例描述於此,上述實施例應理解為本發明所呈現之範例,而不應對本發明產生任何限制。任何所屬技術領域中具有通常知識者應明顯的瞭解到,在不偏離本發明之精神和範圍內,當可進行任何形式上或細節的改變或潤飾。舉例而言,可用軟體實現,如本文所述之裝置與方法之功能、製造、建模、模擬、描述及/或測試。上述可透過使用一般程式語言(例如C、C++)、包括Verilog HDL、VHDL等的硬體描述語言(HDL)或其他可用之程式而加以實現。上述軟體可被設置於任何習知的電腦可用媒體,例如磁帶(magnetic tape)、半導體、磁碟或光碟(例如CD-ROM、DVD-ROM等)、一網路、有線或無線或其他通訊媒體。本文所述之裝置與方法的各種實施例可包括一半導體智慧財產核心(semiconductor intellectual property core),例如一處理器核心(例如透過HDL
實現或指定)以及透過積體電路製造而轉換為硬體。此外,本文所述之裝置與方法可透過硬體與軟體的組合而加以實現。因此,本發明之範圍不應受限於本文之任何示範性實施例,而只應以本發明之申請專利範圍與其等效範圍為準。應特別注意,本發明可實現於處理器裝置中,而該處理器可使用於一般電腦之中。最後,任何所屬技術領域中具有通常知識者應理解,基於本文所揭露之概念與實施例,任何設計或修飾其他架構以具備與本發明相同目的之應用,皆已包含於本發明之範圍且皆已定義於本發明之申請專利範圍中。
100‧‧‧計算系統
101‧‧‧記憶存取代理器
102‧‧‧核心
103‧‧‧處理器
104‧‧‧繪圖處理單元(GPU)
106‧‧‧直接記憶體存取(DMA)裝置
108‧‧‧系統記憶體
112‧‧‧匯流排
114‧‧‧記憶體區塊
122‧‧‧硬體資料預取器
124‧‧‧末級快取記憶體(LLC)
132‧‧‧預取特性
Claims (20)
- 一種處理器,包含:一核心,用以:偵測一預定是否正在該處理器上執行;以及查詢一個與正在處理器上執行之該預定程式相關的預取特性,其中該預取特性為互斥或共享;以及一硬體資料預取器,使用該預取特性為該預定程式執行硬體預取。
- 如申請專利範圍第1項之處理器,其中該預取特性係在偵測該預定程式是否正在該處理器上執行之前被確認。
- 如申請專利範圍第2項之處理器,其中該預取特性係在偵測該預定程式是否正在該處理器上執行之前被確認之步驟包含:當該處理器正執行該程式且使用一共享預取特性以執行硬體預取時,判斷一第一執行成效;當該處理器正執行該程式且使用一互斥預取特性以執行硬體預取時,判斷一第二執行成效;以及當該第一執行成效較該第二執行成效為佳時選擇該預取特性為共享,當該第二執行成效較該第一執行成效為佳時選擇該預取特性為互斥。
- 如申請專利範圍第1項之處理器,其中偵測該預定程式是否正在該處理器上執行之步驟,係由一正在處理器上執行的作業系統在該作業系統之一正在執行程序表格偵測該預定程式的識別碼是否存在。
- 如申請專利範圍第4項之處理器,其中該處理器從該作業系統接收該預取特性。
- 如申請專利範圍第1項之處理器,其中該處理器更用以:在偵測該預定程式是否正在該處理器上執行之前,接收指示至少一識別特性與相關於複數個程式之每一者的預取特性,其中該預定程式係該複數個程式中之一者;其中偵測該預定程式是否正在該處理器上執行時,該處理器將所接收資訊中的該預定程式之至少一識別特性與該預定程式執行時所決定的識別特性進行比對;以及其中使用該預取特性為該預定程式執行硬體預取時,該硬體預取器使用該所接收資訊中的相關於至少一識別特性之該比對結果的預取特性,來為該預定程式執行硬體預取。
- 一種由處理器執行硬體資料的方法,該方法包含:偵測一預定程式是否正在該處理器上執行;查詢一個與正在處理器上執行之該預定程式相關的預取特性;其中該預取特性為互斥或共享;以及使用該預取特性為該預定程式執行硬體預取。
- 如申請專利範圍第7項之方法,其中該預取特性係在偵測該預定程式是否正在該處理器上執行之前被確認。
- 如申請專利範圍第8項之方法,其中該預取特性係在偵測該預定程式是否正在該處理器上執行之前被確認之步驟包含:當該處理器正執行該程式且使用一共享預取特性以執行硬 體預取時,判斷一第一執行成效;當該處理器正執行該程式且使用一互斥預取特性以執行硬體預取時,判斷一第二執行成效;以及當該第一執行成效較該第二執行成效為佳時選擇該預取特性為共享,當該第二執行成效較該第一執行成效為佳時選擇該預取特性為互斥。
- 如申請專利範圍第7項之方法,其中偵測該預定程式是否正在該處理器上執行之步驟,係由一正在處理器上執行的作業系統在該作業系統之一正在執行程序表格偵測該預定程式的識別碼是否存在。
- 如申請專利範圍第10項之方法,更包含由該作業系統因應於該預定程式正在該處理器上執行,而提供該預取特性予該處理器之步驟。
- 如申請專利範圍第7項之方法,更包含,在偵測該預定程式是否正在該處理器上執行之前,由該處理器接收指示至少一識別特性與相關於複數個程式之每一者的預取特性,其中該預定程式係該複數個程式中之一者;其中偵測該預定程式是否正在該處理器上執行之步驟,包含將所接收資訊中的該預定程式之至少一識別特性與該預定程式執行時所決定的識別特性進行比對;以及其中使用該預取特性為該預定程式執行硬體預取時,使用該所接收資訊中的相關於至少一識別特性之該比對結果的預取特性,來為該預定程式執行硬體預取。
- 一種處理器,包含: 一核心,用以:偵測一預定程式是否正在該處理器上執行;以及因應於偵測到該預定程式正在處理器上執行,以每個該處理器的一或多個範圍暫存器各自的位址範圍加載至該一或多個範圍暫存器中,其中每個該一或多個範圍暫存器具有一相關的預取特性,其中該預取特性為互斥或共享;一硬體資料預取器,使用相關於加載至該範圍暫存器的位址範圍的該預取特性為該預定程式執行硬體預取。
- 如申請專利範圍第13項之處理器,其中該使用相關於加載至該範圍暫存器的位址範圍的該預取特性為該預定程式執行硬體預取,包含:預測一該程式未來可能會用到的資料位址;判斷該位址是否落在該一或多個位址範圍之其中一者中;當該位址落在該一或多個位址範圍之該其中一者中,使用與該一或多個位址範圍之該其中一者相關的該預取特性,在該位址上執行資料之硬體預取;以及當位址未落在該一或多個位址範圍之該其中一者中,使用一預設特性在該位址上執行該資料之硬體預取。
- 如申請專利範圍第14項之處理器,其中與該一或多個位址範圍之該其中一者相關的該預取特性,係暗示與預設的預取特性相反。
- 如申請專利範圍第13項之處理器,其中與該一或多個位址範圍之該其中一者相關的該預取特性,係維持於維持該一或多個位址範圍之位址暫存器內。
- 一種由處理器執行硬體資料的方法,該方法包含:偵測一預定程式是否正在該處理器上執行;因應於偵測到該預定程式正在處理器上執行,以每個該處理器的一或多個範圍暫存器各自的位址範圍加載至該一或多個範圍暫存器中;其中每個該一或多個範圍暫存器具有一相關的預取特性;其中該預取特性為互斥或共享;以及一硬體資料預取器,使用相關於加載至該範圍暫存器的位址範圍的該預取特性為該預定程式執行硬體預取。
- 如申請專利範圍第17項之方法,其中該使用相關於加載至該範圍暫存器的位址範圍的該預取特性為該預定程式執行硬體預取之步驟,包含:預測一該程式未來可能會用到的資料位址;判斷該位址是否落在該一或多個位址範圍之其中一者中;當該位址落在該一或多個位址範圍之該其中一者中,使用與該一或多個位址範圍之該其中一者相關的該預取特性,在該位址上執行資料之硬體預取;以及當位址未落在該一或多個位址範圍之該其中一者中,使用一預設特性在該位址上執行該資料之硬體預取。
- 如申請專利範圍第18項之方法,其中與該一或多個位址範圍之該其中一者相關的該預取特性,係暗示與預設的預取特性相反。
- 如申請專利範圍第18項之方法,其中與該一或多個位址範圍之該其中一者相關的該預取特性,係維持於維持該一或 多個位址範圍之位址暫存器內。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462066131P | 2014-10-20 | 2014-10-20 | |
US14/624,981 US9891916B2 (en) | 2014-10-20 | 2015-02-18 | Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent system |
US14/625,124 US10514920B2 (en) | 2014-10-20 | 2015-02-18 | Dynamically updating hardware prefetch trait to exclusive or shared at program detection |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201629775A true TW201629775A (zh) | 2016-08-16 |
TWI560545B TWI560545B (en) | 2016-12-01 |
Family
ID=55749143
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104134317A TWI560545B (en) | 2014-10-20 | 2015-10-20 | Dynamically updating hardware prefetch trait to exclusive or shared at program detection |
TW104134316A TWI560547B (en) | 2014-10-20 | 2015-10-20 | Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104134316A TWI560547B (en) | 2014-10-20 | 2015-10-20 | Dynamically updating hardware prefetch trait to exclusive or shared in multi-memory access agent |
Country Status (2)
Country | Link |
---|---|
US (2) | US10514920B2 (zh) |
TW (2) | TWI560545B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10866896B2 (en) * | 2015-09-30 | 2020-12-15 | Arm Limited | Apparatus and method for prefetching access request addresses in an adjacent region of memory |
GB2547189A (en) * | 2016-02-03 | 2017-08-16 | Swarm64 As | Cache and method |
US10802971B2 (en) * | 2016-10-13 | 2020-10-13 | International Business Machines Corporation | Cache memory transaction shielding via prefetch suppression |
US10664273B2 (en) * | 2018-03-30 | 2020-05-26 | Intel Corporation | Delayed prefetch manager to multicast an updated cache line to processor cores requesting the updated data |
US10963249B2 (en) * | 2018-11-02 | 2021-03-30 | International Business Machines Corporation | Processor prefetcher mode governor for switching between prefetch modes |
TWI755878B (zh) * | 2020-09-30 | 2022-02-21 | 威聯通科技股份有限公司 | 動態改變資料預取量的方法及使用其之終端裝置 |
US11853569B2 (en) * | 2021-01-28 | 2023-12-26 | Nutanix, Inc. | Metadata cache warmup after metadata cache loss or migration |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7089368B2 (en) | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for exclusively prefetching a block of cache lines from memory |
US7089371B2 (en) | 2002-02-12 | 2006-08-08 | Ip-First, Llc | Microprocessor apparatus and method for prefetch, allocation, and initialization of a block of cache lines from memory |
US6957317B2 (en) * | 2002-10-10 | 2005-10-18 | Intel Corporation | Apparatus and method for facilitating memory data access with generic read/write patterns |
CN100517274C (zh) * | 2004-03-24 | 2009-07-22 | 松下电器产业株式会社 | 高速缓冲存储器及其控制方法 |
US7318125B2 (en) * | 2004-05-20 | 2008-01-08 | International Business Machines Corporation | Runtime selective control of hardware prefetch mechanism |
US7441087B2 (en) | 2004-08-17 | 2008-10-21 | Nvidia Corporation | System, apparatus and method for issuing predictions from an inventory to access a memory |
US7890704B2 (en) * | 2006-12-19 | 2011-02-15 | International Business Machines Corporation | Implementing an enhanced hover state with active prefetches |
US8122195B2 (en) * | 2007-12-12 | 2012-02-21 | International Business Machines Corporation | Instruction for pre-fetching data and releasing cache lines |
US8566565B2 (en) | 2008-07-10 | 2013-10-22 | Via Technologies, Inc. | Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications |
US8799582B2 (en) | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
GB2458005B (en) | 2009-02-12 | 2010-01-20 | Gzero Ltd | Removing non-essential programs identified by a server from memory |
US8234450B2 (en) | 2009-07-10 | 2012-07-31 | Via Technologies, Inc. | Efficient data prefetching in the presence of load hits |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US8762649B2 (en) | 2010-03-29 | 2014-06-24 | Via Technologies, Inc. | Bounding box prefetcher |
CN105183663B (zh) * | 2010-03-29 | 2018-11-27 | 威盛电子股份有限公司 | 预取单元和数据预取方法 |
US8856456B2 (en) | 2011-06-09 | 2014-10-07 | Apple Inc. | Systems, methods, and devices for cache block coherence |
KR101636634B1 (ko) | 2011-12-21 | 2016-07-05 | 인텔 코포레이션 | 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 |
WO2013101121A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Managed instruction cache prefetching |
CN103403673A (zh) | 2011-12-29 | 2013-11-20 | 英特尔公司 | 支持无数据情况下推测性所有权 |
US9098418B2 (en) | 2012-03-20 | 2015-08-04 | Apple Inc. | Coordinated prefetching based on training in hierarchically cached processors |
KR20140113103A (ko) | 2013-03-15 | 2014-09-24 | 삼성전자주식회사 | 호스트 및 메모리 시스템을 포함하는 사용자 시스템의 동작 방법 |
-
2015
- 2015-02-18 US US14/625,124 patent/US10514920B2/en active Active
- 2015-02-18 US US14/624,981 patent/US9891916B2/en active Active
- 2015-10-20 TW TW104134317A patent/TWI560545B/zh active
- 2015-10-20 TW TW104134316A patent/TWI560547B/zh active
Also Published As
Publication number | Publication date |
---|---|
US10514920B2 (en) | 2019-12-24 |
US20160110194A1 (en) | 2016-04-21 |
US20160110289A1 (en) | 2016-04-21 |
US9891916B2 (en) | 2018-02-13 |
TWI560547B (en) | 2016-12-01 |
TWI560545B (en) | 2016-12-01 |
TW201621671A (zh) | 2016-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201629775A (zh) | 在程式偵測時動態更新硬體預取特性為互斥或共享的裝置與方法 | |
KR101361928B1 (ko) | 스레드 이송 시의 캐시 프리필링 | |
US8683129B2 (en) | Using speculative cache requests to reduce cache miss delays | |
US7395407B2 (en) | Mechanisms and methods for using data access patterns | |
KR101820223B1 (ko) | 모드에 따라 선택적으로 하나 또는 복수의 셋트를 선택하도록 동적으로 구성가능한 멀티 모드 셋트 연관 캐시 메모리 | |
TWI506434B (zh) | 預取單元、資料預取方法、電腦程式產品以及微處理器 | |
US9251083B2 (en) | Communicating prefetchers in a microprocessor | |
US20060095679A1 (en) | Method and apparatus for pushing data into a processor cache | |
US20080133844A1 (en) | Method and apparatus for extending local caches in a multiprocessor system | |
US9483406B2 (en) | Communicating prefetchers that throttle one another | |
US9864709B2 (en) | Data transfer in a multi-core processor | |
WO2019018665A1 (en) | PRIVATE CACHE STORAGE FOR ACCESS TO LOCAL STORAGE DATA | |
US20160055083A1 (en) | Processors and methods for cache sparing stores | |
US10552334B2 (en) | Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early | |
US9367466B2 (en) | Conditional prefetching | |
JP2009528612A (ja) | データ処理システム並びにデータ及び/又は命令のプリフェッチ方法 | |
CN107844380A (zh) | 一种支持指令预取的多核缓存wcet分析方法 | |
US9384131B2 (en) | Systems and methods for accessing cache memory | |
US20170046278A1 (en) | Method and apparatus for updating replacement policy information for a fully associative buffer cache | |
US9740611B2 (en) | Memory management for graphics processing unit workloads | |
JP5913324B2 (ja) | 積極的プリフェッチングによるプロセッサキャッシュ汚染を低減するための方法及び装置 | |
US10255187B2 (en) | Systems and methods for implementing weak stream software data and instruction prefetching using a hardware data prefetcher | |
Torok | Improving Graph Workload Performance by Rearranging the CSR Memory Layout | |
JP2024011696A (ja) | 演算処理装置及び演算処理方法 | |
Mechri | Stealing the shared cache for fun and profit |