TWI578327B - 診斷快取記憶體回寫之處理器及其操作方法、以及利用其操作方法控制處理器之電腦程式產品 - Google Patents
診斷快取記憶體回寫之處理器及其操作方法、以及利用其操作方法控制處理器之電腦程式產品 Download PDFInfo
- Publication number
- TWI578327B TWI578327B TW104130947A TW104130947A TWI578327B TW I578327 B TWI578327 B TW I578327B TW 104130947 A TW104130947 A TW 104130947A TW 104130947 A TW104130947 A TW 104130947A TW I578327 B TWI578327 B TW I578327B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- processor
- bus
- request
- memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
-
- 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
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0857—Overlapped cache accessing, e.g. pipeline by multiple requestors
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
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)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Description
本發明專利申請案主張申請日為2014年9月18日之美國專利第62/052,387號臨時申請案之國際優先權。該優先權案之全文係併入本案以供參考。
本發明關於一種處理器及其操作方法,以及一種電腦程式產品,特別是關於一種適用於診斷快取記憶體回寫之處理器及其操作方法,以及利用其操作方法控制處理器之電腦程式產品。
近年來,隨著快取記憶體快取空間規格的增加,執行快取記憶體管理操作所需要的時間愈來愈長。舉例而言,對快取空間規格為四百萬位元組之大型快取記憶體執行一個回寫無效(writeback invalidation)操作所需要的時間可能長到對該快取記憶體之處理器的其他運作帶來干擾。在由多個處理核心共用一快取記憶體的情況下,若該些處理核心在短時間內提出多個快取記憶體管理操作請求,上述干擾會更加惡化。
此外,對現行處理器來說,診斷錯誤非常的困難,
要診斷與快取記憶體相關的錯誤尤其困難。原因在於,快取記憶體中可能儲存有大量且相當複雜的資料,尤其是在多個處理核心共用快取記憶體的情況。
一般而言,開發人員可用的主要除錯工具為設計處理器時所用的模擬軟體或模擬器。開發人員可將處理器(包含快取記憶體)的初始狀態提供給模擬器。根據此初始處理器狀態,模擬器開始執行一目標程式,直到出現程式漏洞。開發人員得以回顧模擬器的執行歷史記錄來判斷何時發生錯誤,以及是哪一個元件導致錯誤。
本發明之一範疇在於提供一種處理器。該處理器係用於一系統。該系統具有位於該處理器外之一系統記憶體。該處理器包含一快取記憶體。該快取記憶體具有複數個快取項目。該複數個快取項目中之各快取項目存有一快取列之資料、該快取列之一狀態與該快取列之一標籤。該快取記憶體包含一引擎。該引擎包含一個或多個有限狀態機。該處理器亦包含用以連接一匯流排之一介面。回應於一架構回寫與無效指令,該處理器透過該匯流排自該快取記憶體回寫複數個修改過的快取列至該系統記憶體。回應於該架構回寫與無效指令,該處理器亦無效該快取記憶體之該複數個快取項目之狀態。回應於被指示針對該複數個快取項目中之各快取項目執行一快取診斷操作,該引擎將該些快取項目之狀態與標籤寫至該匯流排且並未無效該快取項目之狀態。
本發明之另一範疇在於提供一種適用於一處理器之
操作方法。該處理器係用於一系統。該系統具有位於該處理器外之一系統記憶體。該快取記憶體具有複數個快取項目。該複數個快取項目中之各快取項目存有一快取列之資料、該快取列之一狀態與該快取列之一標籤。該處理器亦具有用以連接一匯流排之一介面。該操作方法包含回應於一架構回寫與無效指令,透過該匯流排自該快取記憶體回寫複數個修改過的快取列至該系統記憶體,並無效該快取記憶體之該複數個快取項目之狀態。該操作方法亦包含回應於被指示針對該複數個快取項目中之各快取項目執行一快取診斷操作,將該些快取項目之狀態與標籤寫至該匯流排且不無效該快取項目之狀態。
本發明之另一範疇在於提供一種電腦程式產品,編碼於供一運算裝置使用之至少一非暫態電腦可使用媒體中。該電腦程式產品包含儲存於該媒體中之電腦可使用程式碼,用以控制一處理器。該處理器係用於具有一系統記憶體之一系統,且該系統記憶體係位於該處理器之外。該電腦可使用程式碼包含一第一程式碼,用以控制具有複數個快取項目之一快取記憶體。該複數個快取項目中之各快取項目存有一快取列之資料、該快取列之一狀態與該快取列之一標籤。該快取記憶體包含一引擎。該引擎包含一個或多個有限狀態機。該電腦可使用程式碼亦包含一第二程式碼,用以控制連接一匯流排之一介面。回應於一架構回寫與無效指令,該處理器透過該匯流排自該快取記憶體回寫複數個修改過的快取列至該系統記憶體。回應於該架構回寫與無效指令,該處理器亦無效該快取記憶體之該複數個快取項目之狀態。回應於被指示針對該複數個快取項目中之各快取項目執行一快取診斷操作,該引擎將該些快取項目之狀態與標籤寫至該匯流排且並未無
效該快取項目之狀態。
100‧‧‧處理器
102‧‧‧處理核心
104‧‧‧私有快取記憶體
106‧‧‧末級快取記憶體
108‧‧‧匯流排介面單元
112‧‧‧介面
124‧‧‧系統匯流排
202‧‧‧資料部分
204‧‧‧位址部分
206‧‧‧控制部分
300‧‧‧快取項目
302‧‧‧快取列資料
304‧‧‧快取列標籤
306‧‧‧快取列狀態
400‧‧‧集合
402‧‧‧取代方案位元
502‧‧‧請求佇列
504‧‧‧合併引擎
506‧‧‧合併引擎請求表
507‧‧‧進行中暫存器
508‧‧‧較高位址位元暫存器
509‧‧‧服務處理器
512‧‧‧標籤輸送線
514‧‧‧標籤陣列
516‧‧‧LRU陣列
518‧‧‧仲裁邏輯
522‧‧‧資料輸送線
524‧‧‧非核心私有隨機存取記憶體
526‧‧‧末級快取記憶體暫存器
528‧‧‧仲裁邏輯
529‧‧‧資料陣列
532‧‧‧請求
602‧‧‧診斷回寫請求
604‧‧‧回寫無效請求
606‧‧‧回寫無效私有請求
608‧‧‧調整大小請求
612‧‧‧快取空間規格暫存器
614‧‧‧位元遮罩暫存器
702~706、802、804、902~924、1002、1102、1202~1214、1302~1314、1402~1414、1502、1504‧‧‧流程步驟
第一圖呈現一處理器之功能方塊圖;第二圖呈現第一圖中之系統匯流排的局部功能方塊圖;第三圖呈現第一圖中的末級快取記憶體中之一快取項目的示意圖;第四圖根據一集合相聯實施例呈現第一圖中的末級快取記憶體中之一集合的示意圖;第五圖為第一圖中的末級快取記憶體呈現一個更詳細的功能方塊圖;第六圖呈現第五圖中的合併引擎請求表之一示意圖;第七圖呈現第一圖中的處理器之一操作流程圖;第八圖呈現第一圖中之處理器在另一實施例中的操作流程圖;第九圖呈現第一圖中的處理器於執行第七圖、第八圖中步驟706之診斷回寫程序其流程的更多操作細節;第十圖呈現第一圖中的處理器於一實施例中將末級快取記憶體之一快取項目寫至匯流排的操作細節;第十一圖呈現第一圖中的處理器於另一實施例中將末級快取記憶體之一快取項目寫至匯流排的操作細節;第十二圖呈現第一圖中的處理器自一核心/服務處理器接收一請求並可能將該請求與來自其他核心/服務處理器之請求進行合併的操作流程圖;第十三圖呈現第一圖中的處理器於執行一請求時之操作流程圖;
第十四圖呈現第一圖中的處理器於一處理核心取消一合併引擎請求時之操作流程圖;以及第十五圖為當一處理核心取消所有對於合併引擎之請求時第一圖中的處理器之運作流程圖。
以下將以實施例說明根據本發明之處理器如何執行一診斷回寫程序,其中,該處理器之一快取記憶體在未令其快取列狀態無效的狀況下將其所有的標籤與快取列狀態寫出至一系統匯流排。此程序有助於為處理器(尤其是快取記憶體)除錯及/或增進其效能。
第一圖呈現一處理器100之功能方塊圖。處理器100為一多核心處理器,其中包含多個處理核心102、一匯流排介面單元108與一共用的末級(last level)快取記憶體106。於第一圖的實施例中,處理器100包含四個處理核心,分別被標示為處理核心0 102-0、處理核心1 102-1、處理核心2 102-2、處理核心3 102-3,以下統稱處理核心102。處理核心0 102-0、1 102-1、2 102-2、3 102-3各自透過介面112-0、112-1、112-2、112-3(統稱介面112)存取末級快取記憶體106。匯流排介面單元108則是透過介面112-4存取末級快取記憶體106。處理器100為一較大運算系統(未繪示)的一部分,該運算系統可包含系統記憶體與周邊裝置(亦未繪示);末級快取記憶體106可透過匯流排介面單元108、系統匯流排124與該運算系統溝通。雖然第一圖所繪示之處理器100包含四個處理核心102,本發明的概念可應用於包含其他數量之處理核心102的實施例,並令該些處理核心102皆共用末級快取記憶體106。
處理核心0 102-0、1 102-1、2 102-2、3 102-3各自包含一私
有快取記憶體104-0、104-1、104-2、104-3(統稱私有快取記憶體104)。在一實施例中,私有快取記憶體104小於末級快取記憶體106且具有相對較短的存取延遲。於一實施例中,私有快取記憶體104包含一第一級(level-1)指令快取記憶體與一第一級資料快取記憶體。處理核心102可包含但不限於下列功能單元:指令取得單元、分支指令預測單元、指令解碼器、指令轉譯器、微指令/結構式/非結構式暫存器集合、重新命名單元、重新排序暫存器、保留站、指令發送器,以及多個執行單元。該多個執行單元可包含整數運算單元、浮點運算單元、媒體單元、分支單元、載入單元與儲存單元。多種微架構可被包含在處理核心102內。舉例而言,處理核心102可為超純量(superscalar)處理器或純量處理器,可依序或不依序執行指令。於一實施例中,處理核心102大致符合x86指令集架構。須說明的是,處理核心102不限於特定指令集架構,且可包含其他記憶體請求仲介電路,例如繪圖處理單元(GPU)或可規劃化邏輯閘陣列(field programmable gate array,FPGA)。
各處理核心102之微指令包含除錯程序,以下稱追蹤程序。追蹤程序可回應於多種事件針對各處理核心102啟動,例如:(1)一處理核心102停止回應,亦即該處理核心102被佔用但經過多個時脈週期皆未回應任何指令;(2)一處理核心102自記憶體中之不可快取的區域載入資料;(3)處理器100發生溫度變化;(4)操作系統請求改變處理器100之匯流排速率及/或電壓;(5)處理器100主動改變其匯流排速率及/或電壓,例如為了減少耗電量或提高效能;(6)一處理核心102中的內部計時器過期;(7)一快取記憶體監探(snoop)命中一修改過的快取列,導致該快取列被寫回記憶體;(8)處理器100之溫度、電壓或匯流排速率超過特定範圍;(9)使用者或處理器100之外部接腳產生一外部觸發信號;(10)發生例外狀況;以及(11)偵測到內部錯誤。一種使用追蹤程序的方式是定期啟動它。舉例而言,一
追蹤程序查核點(checkpoint)可每隔N個時脈週期被觸發,其中N為一特定數字,例如100,000。耦接至系統匯流排124之一邏輯分析器可於兩個查核點之間監控系統匯流排124上的活動並加以記錄。當查核點被觸發,追蹤程序將處理器100的大量狀態輸出至系統匯流排124。該邏輯分析器亦取得系統匯流排124上的狀態輸出,並將它們儲存至一檔案中。處理器100隨後被重新啟動。此程序持續進行,直到程式漏洞出現。
上述查核點對於找出多種類型的漏洞(包含快取記憶體漏洞)是有效的。一種有效的方法為配合一軟體模擬器。在該軟體模擬器中,處理器100的初始狀態可被載入為該邏輯分析器對應於某一個查核點所儲存的處理器100狀態,例如程式漏洞出現前的最後一個查核點。該模擬器接著開始進行模擬,直到程式漏洞出現。
一種典型的方法是設定一旗標,以控制追蹤程序於輸出處理器100狀態時執行一回寫無效操作,藉此迫使末級快取記憶體106進入一已知狀態,亦即令末級快取記憶體106中所有的快取項目都被設定為無效。相對應地,於軟體模擬器中,末級快取記憶體106的快取項目也被設定為無效,以使於該查核點之後重新開始時,軟體模擬器的初始狀態與處理器100的實際狀態相符。然而,此先前技術的缺點之一是,由於所有的快取項目都被設定為無效,末級快取記憶體106的狀態會因此被擾亂。這種狀況的壞處在於可能會使得程式漏洞要經過較久才出現(若存在程式漏洞),尤其當程式漏洞是在快取記憶體中。
相對地,本發明之診斷回寫程序並未將末級快取記憶體106之快取列狀態設定為無效。此外,末級快取記憶體106中所有快取項目的快取列狀態,例如其標籤以及修改/專有/共享/無效狀態(以下稱MESI狀態),會被寫入系統匯流排124,使邏輯分析器能取得該些狀態,供後續載入軟體模擬器做為其初始狀態。更有利地,末級快取記憶體106之一合併
引擎504(參見第五圖)可利用能最小化查核點時間的系統匯流排124速度來寫入末級快取記憶體106狀態。
須說明的是,雖然在上述實施例中使用該診斷回寫程序的快取記憶體是末級快取記憶體,但採用其他快取記憶體層級的處理器亦可運用上述診斷回寫程序。此外,雖然上述實施例中的處理器100為多核心處理器,但其他配合一個或多個快取記憶體的單核心處理器亦可運用上述診斷回寫程序。
第二圖呈現第一圖中之系統匯流排124的局部功能方塊圖。匯流排124包含一資料部分202、一位址部分204與一控制部分206。更明確地說,資料部分202包含一預先決定的位元數量,位址部分204包含一預先決定的位元數量,控制部分206包含一預先決定的位元數量。系統匯流排124可被實現為一平行匯流排型態以令該些位元被同時傳遞,亦可被實現為一串流型態以令該些位元被依序傳遞,或者亦可被實現為兩種型態的組合。控制部分206係用以指出系統匯流排124上正在執行的操作之類型,例如為一讀取操作或一寫入操作。位址部分204係用以指出一系統位址。舉例而言,於一實施例中,位址部分204的位元數量為36,因而可對應於236個位元組(亦即六十四億位元組)的位置。一般而言,一裝置,例如具有記憶體位置及/或控制/狀態暫存器的記憶體裝置或周邊裝置,係位於位址部分204能指出的位址,並且會回應於指定位址,接收或提供由資料部分202傳遞的資料。為了增進診斷處理器100中之漏洞的能力,於根據本發明之實施例中,一部份或全部的位址部分204被用以傳遞末級快取記憶體106之中繼資料,亦即末級快取記憶體106中各快取項目300的標籤304與狀態306(參見第三圖),而非單純傳遞一裝置中特定位置的位址。於另一實施例中,一部份或全部的資料部分202被用以傳遞末級快取記憶體106之中繼資料304/306,而非單純傳遞資料。
第三圖呈現末級快取記憶體106中之一快取項目300的示意圖。末級快取記憶體106包含許多快取項目,第三圖呈現的快取項目300僅做為代表。各快取項目300包含一快取列之資料302、該快取列之標籤304,及該快取列之一狀態306。若狀態306指出快取項目300是無效的,則資料302和標籤304都是無效的。於一實施例中,狀態306係根據一種被廣泛使用的快取記憶體一致性協定被設定,例如前述MESI狀態中的修改狀態/專有狀態/共享狀態/無效狀態。須說明的是,其他採用不同快取記憶體一致性協定的實施例亦涵蓋於本發明的範疇內。在一實施例中,末級快取記憶體106包含第一圖所示之處理核心102中的私有快取記憶體104,且狀態306包含與私有快取記憶體104中各快取列狀態相關的資訊。於一實施例中,各處理核心102包含一第一級指令快取記憶體與一第一級資料快取記憶體,且MESI狀態306包含十二個位元。位元[11:10]係用以指出末級快取記憶體106之MESI狀態。位元[7:0]中的各個位元係於當各處理核心102之第一級指令/資料快取記憶體存有該快取列之一複本時被設定。位元[9:8]係用以指出私有快取記憶體104之一整體MESI狀態。若沒有任何私有快取記憶體104存有該快取列之複本,該整體MESI狀態為無效狀態;若只有一個私有快取記憶體存有該快取列之複本,該整體MESI狀態為專有狀態;否則,該快取列之整體MESI狀態為共用狀態。
透過第一圖中的介面112,一位址被提供給末級快取記憶體106。隨後,末級快取記憶體106根據該位址進行查找,以決定該位址是否命中末級快取記憶體106。末級快取記憶體106可為一直接快取記憶體、一集合相聯(set-associative)快取記憶體或一完全相聯(fully associative)快取記憶體。在一實施例中,末級快取記憶體106為一集合相聯快取記憶體,具有NUM_SET個集合,且為NUM_WAYS關聯路,如同第一圖繪示的實施例。末級快取記憶體106根據一待查找位址的中間位址位元(例如[16:
6])選擇一集合,該待查找位址的較高位址位元(例如[35:17])被拿來比較被選擇的集合中之NUM_WAYS關聯路的各快取項目300之標籤304,以決定是否發生一快取命中。末級快取記憶體106之快取項目300的標籤304和MESI狀態306可被寫至匯流排124,以協助除錯及/或效能調整。
第四圖根據一集合相聯實施例呈現末級快取記憶體106中之一集合400的示意圖。在一實施例中,末級快取記憶體106包含多個集合,第四圖呈現的集合400僅做為代表。各集合400包含末級快取記憶體106中各關聯路之快取項目300以及一取代方案位元402。於一實施例中,該取代方案為最近最少使用(least-recently used,LRU)方案,但採用其他取代方案的實施例亦涵蓋於本發明之範疇內,例如偽最近最少使用(pseudo-LRU)方案、循環(round-robin)方案、隨機方案等等。於一實施例中,NUM_WAYS等於十六。
第五圖為末級快取記憶體106呈現一個更詳細的功能方塊圖。末級快取記憶體106包含請求佇列502,用以接收處理核心102、匯流排介面單元108及服務處理器509對於存取末級快取記憶體106的請求532。
服務處理器509係用以除錯、效能監控/加強以及動態解決漏洞。服務處理器509能存取末級快取記憶體暫存器526、非核心私有隨機存取記憶體(PRAM)524、標籤陣列514以及LRU陣列516。服務處理器509包含一程式處理器,用以輔助處理核心102但不同於處理核心102。處理核心102係於架構上可見地執行處理核心102之指令集架構(例如x86指令集架構)的指令,服務處理器509則是並未於架構上可見地執行處理核心102之指令集架構的指令。舉例而言,操作系統無法運行於服務處理器509上,亦不能安排處理核心102之指令集架構(例如x86指令集架構)的程式於服務處理器509上運行。換句話說,服務處理器509並非由操作系統管
理的系統資源。相對地,服務處理器509負責執行用以為處理器100(包含末級快取記憶體106)除錯的操作。此外,服務處理器509可協助量測處理核心102的效能或提供其他功能。在一實施例中,相較於處理核心102,服務處理器509較小、複雜度較低、較省電。於一實施例中,服務處理器509包含內建時脈閘控。於一實施例中,服務處理器509包含一FORTH中央處理器核心。
末級快取記憶體106亦包含一合併引擎504。合併引擎504自請求佇列502接收請求。合併引擎504亦耦合至一進行中暫存器507(功用容後詳述)。此外,合併引擎504亦自較高位址位元暫存器508接收較高位址位元,並存取一合併引擎請求表506(細節容後配合第六圖詳述)。在一實施例中,較高位址位元暫存器508的預設值是可配置的,例如藉由熔斷處理器100的熔絲來進行設定。在一實施例中,較高位址位元暫存器508為可程式化的,例如透過處理器100之微指令或是服務處理器509改變其預設值。在一實施例中,較高位址位元暫存器508之預設值的設定係回應於一架構指令,例如x86指令集架構寫入模型設定暫存器(write model specific register,WRMSR)指令。於一實施例中,較高位址位元暫存器508為四個位元寬且負責保存一數值;該數值於一診斷回寫程序中代表匯流排124中位址部分204的四個較高位元。合併引擎504執行之診斷回寫程序的細節隨後會再說明。
以下說明較高位址位元暫存器508的使用範例。假設該系統配置有八十億位元組的系統記憶體,且操作系統被告知(例如透過基本輸入輸出系統)僅四十億位元組的系統記憶體為可用的。也就是說,在該四十億位元組之外的記憶體為不可快取的記憶體空間。較高位址位元暫存器508存有一數值0x1(可能為預設值或被編寫而成),用以指出系統記憶體在四十億位元組與八十億位元組之間的範圍。當一診斷回寫程序被執行,末級
快取記憶體106的中繼資料304/306被寫至記憶體在四十億位元組與八十億位元組之間的範圍內的位置,不影響操作系統使用的系統記憶體(亦即低於四十億位元組),但允許一邏輯分析器為了除錯目的檢視匯流排124,以取得末級快取記憶體106的中繼資料304/306,例如利用處理器100之一軟體模擬器來重現程式漏洞或進行效能分析。
末級快取記憶體106包含一資料陣列529,用以存放第三圖中的快取項目300之快取列資料302。末級快取記憶體106亦包含一標籤/MESI陣列514(簡稱標籤陣列514),用以存放快取項目300之標籤304和MESI狀態306。標籤陣列514負責在共用末級快取記憶體106的處理核心102之間保持資料一致性。末級快取記憶體106亦包含一LRU陣列516(或稱取代資訊陣列516),用以存放第四圖呈現的LRU位元402。末級快取記憶體106亦包含一非核心私有隨機存取記憶體(PRAM)524與一末級快取記憶體暫存器526,用以設置操作型態並記錄末級快取記憶體106的狀態。非核心PRAM 524係由處理核心102共用,可被用以執行核心間通訊並做為處理核心102之微指令的私有暫用空間等等。
末級快取記憶體106亦包含資料輸送線522與標籤輸送線512。資料輸送線522可存取資料陣列529、非核心PRAM 524與末級快取記憶體暫存器526,並讀取及/或更新其內容。資料輸送線522自資料陣列529、非核心PRAM 524、末級快取記憶體暫存器526取得資料302,並將資料提供給處理核心102與匯流排介面單元108。資料輸送線522亦接收來自請求佇列502與合併引擎504之請求中的資料,並將資料寫入至資料陣列529、非核心PRAM 524與末級快取記憶體暫存器526。標籤輸送線512可存取標籤陣列514與LRU陣列516,並可讀取及/或更新其內容。標籤輸送線512產生回應或動作,以更新請求佇列502與合併引擎504中的請求。這些請求亦可更新標籤陣列514中的MESI狀態306,並可間接地
更新LRU陣列516中的LRU位元402。於一實施例中,末級快取記憶體106包含兩個資料輸送線522與兩個標籤輸送線512。
仲裁邏輯528負責仲裁來自請求佇列502與合併引擎504對於資料輸送線522的存取請求。相似地,仲裁邏輯518負責仲裁來自請求佇列502與合併引擎504對於標籤輸送線512的存取請求。
在一實施例中,合併引擎504能使用匯流排124的整個頻寬,以使上述診斷回寫程序能以相較於傳統方法更快速的方式被執行。此外,不同於傳統的回寫無效操作(例如x86 WBINVD指令),該診斷回寫程序並未令末級快取記憶體106中快取項目300的MESI狀態306為無效。該診斷回寫程序的這兩個特色都有利於令程式漏洞較快出現,進而有利於較快地找到並修復程式漏洞。在一實施例中,合併引擎504包含兩個狀態機,用以執行診斷回寫程序。須說明的是,雖然以上說明主要描述利用一模擬器的除錯方案,根據本發明之診斷回寫程序可利用其他方案來除錯。舉例而言,除錯者/工程人員可僅檢查診斷回寫程序的輸出,例如僅檢視診斷回寫程序的輸出及/或透過電腦軟體分析該輸出,尤其是當不需要使用快取列資料,而是使用快取列狀態來尋找程式漏洞的情況,例如根據第十一圖之實施例。
第六圖呈現第五圖中的合併引擎請求表506之一示意圖。合併引擎請求表506包含針對複數個類型的快取記憶體管理請求(亦稱為合併引擎請求或僅以請求稱之)各自設有一列位元;該些請求可能係接收自處理核心102與服務處理器509。第六圖之實施例中的請求類型包含:診斷回寫請求602、回寫無效請求604、回寫無效私有請求606以及調整快取空間規格請求608。合併引擎請求表506亦包含與調整快取空間規格請求608相關之一快取空間規格暫存器612,以及與回寫無效私有請求606相關之一位元遮罩暫存器614。位元遮罩暫存器614對應於各處理核心102分別
包含一位元。
回應於一診斷回寫請求602,合併引擎504執行一診斷回寫程序。回應於一回寫無效請求604,合併引擎504執行一回寫無效操作,以回寫末級快取記憶體106的修改過的快取列至系統記憶體,並令末級快取記憶體106的所有快取項目300無效。於一實施例中,在將修改過的快取列回寫至系統記憶體與無效末級快取記憶體106的快取列之前,合併引擎504首先自私有快取記憶體104將所有正確的快取列搬移至末級快取記憶體106,並令私有快取記憶體104的所有快取項目為無效。於一實施例中,合併引擎504探訪末級快取記憶體106之快取項目的關聯路/集合順序係相似於後續第九圖與表一所述之回寫無效操作中的順序。
由一處理核心102或服務處理器509發出的各個回寫無效私有請求606包含一位元遮罩。該位元遮罩包含對應於各處理核心102之一位元。如後續與第十二圖之步驟1208有關的說明,當處理核心102或服務處理器509發出一回寫無效私有請求606,合併引擎504(例如透過布林運算的OR)將該些位元遮罩合併,產生合併引擎請求表506中位元遮罩暫存器614的數值。合併引擎504針對一回寫無效私有請求606執行一回寫無效私有操作時,檢查位元遮罩暫存器614中的位元來決定哪些處理核心102有設定該位元。若各處理核心102皆於位元遮罩暫存器614中設定該位元,合併引擎504會自該些私有快取記憶體104將所有正確的快取列搬移至末級快取記憶體106,並令位元遮罩暫存器614指出的處理核心102之私有快取記憶體104為無效。因此,當該回寫無效私有請求606已完成,針對位元遮罩暫存器614指出的處理核心102,末級快取記憶體106會反映出處理器中的最新版本可快取資料。於一實施例中,合併引擎504探訪末級快取記憶體106之快取項目的關聯路/集合順序係相似於後續第九圖與表一所述之回寫無效私有操作中的順序。
來自一處理核心102或服務處理器509的各調整大小請求608會指定一快取空間規格,也就是末級快取記憶體106被啟用之關聯路的數量。針對一調整大小請求608,合併引擎504執行一重設快取空間規格操作,以將末級快取記憶體106之快取空間規格重設為快取空間規格暫存器612指定的關聯路數量。也就是說,合併引擎504會停用Q關聯路的末級快取記憶體106,其中Q等於NUM_WAYS減去快取空間規格暫存器612中指定的數值。在一實施例中,合併引擎504係為了降低處理器100之耗電量,藉由停止其時脈信號及/或停止其供電來停用Q關聯路的末級快取記憶體106。若快取空間規格暫存器612中指定的數值大於目前使用中的關聯路數量,則合併引擎504會啟用先前被停用的關聯路,例如藉由啟用其電力與時脈信號。在一實施例中,合併引擎504依第九圖之步驟902與表一呈現的順序停用Q關聯路的末級快取記憶體106,並依相反順序啟用關聯路。
針對各類型的請求,合併引擎請求表506為每一處理核心102與服務處理器509皆各自設有一個位元。當某一處理核心102或服務處理器509有一個未完成的請求,對應於該請求類型的那一個位元會被設定;直到該請求被完成或取消,該位元才會被清除。合併引擎請求表506可協助分別合併四個類型的請求,做法詳述如下。若一特定類型之一請求正在等待中-如同合併引擎請求表506對應於該操作類型之位元列中的一個或多個設定位元所顯示者-當另一處理核心102/服務處理器509發出相同類型的請求,則相關請求於合併引擎請求表506中的對應位元被設定。隨後,合併引擎504開始將合併後請求遞送至標籤輸送線512與資料輸送線522,以執行合併引擎請求表506指出的請求。當合併引擎504已完成執行被請求的操作,合併引擎504便清空該請求類型所對應的位元列中之所有位元。於一實施例中,合併引擎504首先將合併後請求遞送至標
籤輸送線512,並回應於標籤輸送線512的動作,將請求提交給請求佇列502(例如填充佇列及/或查詢佇列),以進行後續與資料輸送線522相關的仲裁。
舉例而言,若一處理核心102提出一回寫無效請求604,且另一處理核心102在第一個請求開始前提出一回寫無效請求604,則合併引擎504將執行一單一回寫無效操作,以滿足所有提出回寫無效請求604的處理核心102。針對一調整大小請求608,最新被請求的快取空間規格會被儲存在快取空間規格暫存器612並被合併引擎504據以執行合併後調整大小請求608。針對多個處理核心102提出的回寫無效私有請求606之合併,合併引擎504對末級快取記憶體106進行一次整體瀏覽(亦即查看各快取項目300的MESI狀態306,其中包含各私有快取記憶體104的MESI狀態),並監探回寫無效私有請求606位元被設定的各處理核心102之快取列。這種做法優於令合併引擎504對末級快取記憶體106依序進行多次整體瀏覽,亦即為各個回寫無效私有請求606位元被設定的處理核心102分別對末級快取記憶體106進行一次整體瀏覽。
合併請求(稍後將配合第十二圖~第十五圖進一步說明)在多方面是有利的。首先,這種做法可增加處理器100的效能。由於快取記憶體管理請求通常需要相當長的時間才能完成,藉由合併請求並執行單一快取記憶體管理操作來滿足多個快取記憶體管理請求,整體而言可減少完成多個快取記憶體管理請求的時間。上述合併之執行不為處理核心102所知。也就是說,一處理核心102並不會知道其快取記憶體管理請求被合併。其次,這種做法可簡化實現快取記憶體管理請求的微指令。尤其,這種做法可減少處理核心102內部通訊的複雜度。
第七圖呈現第一圖中的處理器100之一操作流程圖。該流程開始於步驟702。
於步驟702中,發生啟動一處理核心102之追蹤程序微指令的觸發事件。該微指令偵測到一旗標被設定為指出應以追蹤程序執行一診斷回寫程序。該流程隨後執行步驟704。
於步驟704,該微指令編寫一控制暫存器,以設定合併引擎請求表506中的診斷回寫請求602位元。或者,回應於啟動服務處理器509去請求診斷回寫程序之一觸發事件,服務處理器509編寫該控制暫存器,以設定該診斷回寫請求602位元。該流程隨後執行步驟706。
於步驟706,合併引擎504偵測到診斷回寫請求602位元中的一個或多個位元被設定,並回應於此,執行一診斷回寫程序(隨後將配合第九圖詳述)。當合併引擎504開始進行診斷回寫程序時,合併引擎504清除所有的診斷回寫請求602位元。該流程結束於步驟706。
第八圖呈現第一圖中之處理器100在另一實施例中的操作流程圖。該流程開始於步驟802。
於步驟802,一個處理核心102執行一診斷回寫指令。在一實施例中,該診斷回寫指令為一架構指令,亦即處理器100之指令集架構中的一個指令,可由系統軟體(例如操作系統)執行。於一範例中,該系統軟體可回應一最佳化編輯器的請求而執行該架構診斷回寫指令,其中該最佳化編輯器係為了一效能最佳化程式產生對於末級快取記憶體106之中繼資料304/306的需求。於另一範例中,一軟體診斷程式可執行該架構診斷回寫指令,以診斷末級快取記憶體106是否正在正常運作。於另一範例中,該系統軟體可為了除錯目的執行該架構診斷回寫指令。在一實施例中,診斷回寫指令包含一參數,用以在診斷回寫程序開始之前指定被寫入較高位址位元暫存器508之一數值。該流程隨後執行步驟804。
於步驟804,處理核心102編寫一控制暫存器,以於合併引擎請求表506中設定其診斷回寫請求602位元。該流程隨後執行步驟706,令合併引擎504執行如第七圖所示之一診斷回寫程序。該流程結束於步驟706。
第九圖呈現第一圖中的處理器100於執行第七圖、第八圖中步驟706之診斷回寫程序其流程的更多操作細節。該流程開始於步驟902。
於步驟902,一靜態陣列“way_order[]依一預先決定的順序被初始化;該預先決定的順序為末級快取記憶體106之一集合中的關聯路被寫出至匯流排124的順序。表一中的虛擬程式碼以十六個關聯路為例呈現一順序實施例。然而,其他預先決定的順序亦涵蓋於本發明之範疇內。下述實施例係對應於當對末級快取記憶體106執行一調整大小請求608時將關聯路停用的順序。於一實施例中,該順序係基於LRU位元402的組態預先決定。該流程隨後執行步驟904。
於步驟904,一變數“N”被初始化為零。變數N的數值係用以做為靜態陣列way_order[]的索引值(步驟906)。於一實施例中,若末級快取記憶體106中的某些關聯路被停用(例如由於一先前執行的調整大小請求608),則N被設定為被停用的關聯路數量。舉例而言,若有四個關聯路被停用(例如第九圖之實施例中的關聯路15、7、11、3),則這些關聯路不會被造訪,其快取項目亦不會被寫至系統匯流排124。在一實施例中,末級快取記憶體106被啟用的關聯路數量被記錄在末級快取記憶體106之一控制暫存器中,且其數值會被被寫至匯流排124,藉此讓除錯者能得知在診斷回寫程序中末級快取記憶體106將有多少快取項目300被寫至系統匯流排124。該流程隨後執行步驟906。
於步驟906,一變數“way”被指派為way_order[N]的數值。變數way的數值係用以決定目前的集合中是哪一個關聯路之快取項目300
將要被寫至匯流排124。該流程隨後執行步驟908。
於步驟908,一變數“set”被初始化為零。變數set的數值係用以決定末級快取記憶體106中的哪一個集合之快取項目300將要被寫至系統匯流排124。該流程隨後執行步驟912。
於步驟912,變數set與變數way之目前數值指定的快取項目300之中繼資料304/306被寫至匯流排124(細節容後配合第十圖、第十一圖詳述)。該流程隨後執行步驟914。
值得注意的是,於步驟914,合併引擎504並未於步驟912無效被寫至匯流排124的快取項目300。藉由不將快取項目300的MESI狀態設定為無效,該診斷回寫程序有利於令程式漏洞較快出現。該流程隨後執行步驟916。
於步驟916,變數set的數值被遞增。該流程執行判斷步驟918。
步驟918為判斷變數set的數值是否小於NUM_SETS-1。若是,該流程回到步驟912,以寫出目前關聯路的下一個快取項目300;否則,該流程隨後執行步驟922。
於步驟922,變數N的數值被遞增。該流程執行判斷步驟924。
步驟924為判斷變數N的數值是否小於NUM_WAYS-1。若是,該流程回到步驟906,以寫出下一個關聯路的快取項目300;否則,此流程結束。
表一中的虛擬程式碼為第九圖所示之操作程序的另一種表示法。須說明的是,第九圖中的流程圖與表一中的虛擬程式碼僅為一種實施例,呈現合併引擎504於進行一診斷回寫程序時可執行的動作;合併引擎504的有限狀態機可根據其他實施例來設計。舉例而言,雖然以上範例
採用了way_order、set、N、way幾個變數,合併引擎504的有限狀態機實際上仍可以在不採用該些變數的情況下,實現相同的功效,亦即依預先決定的順序將多個快取項目300的中繼資料304/306寫至匯流排124。於一實施例中,有兩個標籤輸送線512,其中一個標籤輸送線512負責執行與偶數編號之集合有關的虛擬程式碼操作,同時,另一個標籤輸送線512負責執行與奇數編號之集合有關的虛擬程式碼操作。
由第九圖之流程圖以及表一之虛擬程式碼可看出,在診斷回寫程序中,各快取項目300的索引值與其資訊被提供至系統匯流排124的順序具有明確的關係。如此一來,除錯者藉由重建索引值與標籤304便得以明確地決定快取項目300的快取列位址。假設在診斷回寫程序中,J為一從零開始遞增的數值,用以表示一特定快取項目300於步驟912被寫至匯流排124的順序。更明確地說,第一個快取項目300對應的數值J為零,而第二個快取項目300對應的數值J為一。依此類推,J=(NUM_SETS * NUM_WAYS)-1。除錯者可得知中繼資料304/306被寫至系統匯流排124
之一特定快取項目300的索引值為J模數NUM_WAYS。此外,於步驟912被寫至系統匯流排124之各中繼資料304/306所屬的快取項目300之關聯路,亦可明確地對應其資訊在診斷回寫程序中被寫至匯流排124的順序與預先決定的way_order[]。更明確地說,被寫至系統匯流排124之中繼資料304/306的第一個NUM_SETS數字係來自關聯路15;被寫至系統匯流排124之中繼資料304/306的第二個NUM_SETS數字係來自關聯路7;被寫至系統匯流排124之中繼資料304/306的第三個NUM_SETS數字係來自關聯路11;依此類推。
於一實施例中,早於一診斷回寫請求602,指定所有處理核心102之一回寫無效私有請求606被執行,以將所有修改過的快取列資料搬移至末級快取記憶體106,以令最新的快取列資料(根據第十圖之實施例)能在匯流排124上被取得。這種做法有助於載入最新的快取列資料至模擬器的末級快取記憶體106。須說明的是,這會使得私有快取記憶體104被無效(模擬器載入被無效的私有快取記憶體104)。如此一來,可能會擾亂程式漏洞的出現。然而相較於執行傳統的回寫無效請求604,這種做法可能有助於令某些程式漏洞更容易重現。或者,為了決定私有快取記憶體104中的修改過的資料,一第一診斷回寫請求602被執行,藉此取得快取列資料與中繼資料304/306之一第一集合。接著,指定所有處理核心102之一回寫無效私有請求606被執行。隨後,一第二診斷回寫請求602被執行,以取得快取列資料與中繼資料304/306之一第二集合。除錯者可比較上述第一集合和第二集來決定私有快取記憶體104中的哪些快取列存有修改過的資料,並取得該些資料。
於一實施例中,合併引擎504亦能自處理核心102/服務處理器509接收一診斷回寫私有請求。於一實施例中,為執行一診斷回寫私有操作,合併引擎504監探到該些私有快取記憶體104為可共用的;也就是
說,該些私有快取記憶體104放棄將修改過的快取列之資料搬移至末級快取記憶體106,但保持該些快取列為共用狀態,而非無效該快取列。在這個情況下,最新的快取列資料在該診斷回寫程序中會出現在匯流排124上;有利地,對於私有快取記憶體104和末級快取記憶體106的擾亂數量被最小化,且模擬器的末級快取記憶體106與私有快取記憶體104皆可載入與硬體處理器100相符的快取列資料。於另一實施例中,合併引擎504監探到該些私有快取記憶體104為可專有的;也就是說,該些私有快取記憶體104放棄將修改過的快取列之資料搬移至末級快取記憶體106,但保持該些快取列為一專有狀態,而非無效該快取列。在這個情況下,擾亂可被進一步減少。因為,接下來若希望修改該快取列,私有快取記憶體104可不需在修改之前取得該快取列的專有權。
第十圖呈現處理器100於一實施例中將末級快取記憶體106之一快取項目300寫至匯流排124(第九圖之步驟912)的操作細節。於步驟1002,合併引擎504傳送一請求至匯流排介面單元108,以針對末級快取記憶體106之一快取項目300於匯流排124上執行一相關動作。該請求提供快取項目300之資料302給匯流排124之資料部分202。
該請求亦提供較高位址位元暫存器508中的數值給匯流排124之位址部分204中的較高位元。於一實施例中,較高位元係指位元[35:32]。此外,該請求亦提供快取項目300之標籤304和MESI狀態306給匯流排124的位址部分204。於一實施例中,標籤304被提供至位元[33:15],MESI狀態306被提供至位元[13:3]。
於一實施例中,該請求亦提供一個位元至位址部分204的其他位元,用以指出兩個標籤輸送線512中是哪一個標籤輸送線512負責處理快取項目300。於一實施例中,此位元為位元[14]。於一實施例中,一標籤輸送線512負責處理末級快取記憶體106中為偶數編號的快取項目
300,另一標籤輸送線512負責處理為奇數編號的快取項目300,藉此令標籤輸送線512在診斷回寫程序中可被明確地依照預定順序分派以將被寫至匯流排124的快取項目300。
於一實施例中,MESI狀態306係以縮減後的11位元之形
式被提供。如第三圖所示,快取項目300中的MESI狀態306可具有一12位元結構,且細節如下:
[11:10]=LLC_MESI(M,E,S,or I)
[9:8]=Global_L1_MESI(E,S,or I)
[7:0]=L1_Bitmap(core0 L1D,core0 L1I,core1 L1D,corel L1I,core2 L1D,core2 L1I,core3 L1D,core3 L1I)
位元8是多餘的,因此可被移除,以產生一個11位元的縮減值。位元8在邏輯上為多餘的原因在於,位元8和位元9永遠都不會同時被設定。若位元8和位元9同時被設定,表示有一修改過的快取列在一第一級快取記憶體104中;這是末級快取記憶體106不會為Global_L1_MESI位元設定的狀態。此外,只有在位元[7:0]中的一個或多個位元被設定時,位元8才會被設定。因此,根據被寫至匯流排124的11個位元,除錯者便能根據下列關係重建原始MESI狀態306中的位元8:Global_L1_MESI[0]=~Global_L1_MESI[1]&(L1_位元遮罩[7:0]!=0)
須說明的是,在以上說明中,Global_L1_MESI[0]對應於快取項目300之MESI狀態306的位元8,Global_L1_MESI[1]對應於快取項目300之MESI狀態306的位元9。
於一實施例中,LRU位元402亦被提供於匯流排124的位址部分204。於一實施例中,LRU位元402的位元數量為十五,其中每一個位元係對應於一集合之十六個關聯路中的一個關聯路。針對一特定集
合,除錯者能夠根據被寫至匯流排124的快取項目300重建LRU位元402的十五個位元。如先前所述,這是根據快取項目300被寫至匯流排124之預先決定的順序可明確得知的。
第十一圖呈現處理器100於另一實施例中,將末級快取記憶體106之一快取項目300寫至匯流排124(第九圖之步驟912)的操作細節。於步驟1102,合併引擎504傳送一請求至匯流排介面單元108,以針對末級快取記憶體106之一快取項目300於匯流排124上執行一相關動作。該請求提供快取項目300之標籤304和MESI狀態306給匯流排124之資料部分202。於一實施例中,快取項目300之資料302的一部份亦被被寫至匯流排124的資料部分202(與標籤304和MESI狀態306不同的位元)。由以上說明可看出,與快取記憶體最相關的漏洞不會受到末級快取記憶體106之快取項目300中的實際資料302影響。此實施例即利用此潛在優點。
該請求亦提供較高位址位元暫存器508中的數值給匯流排124之位址部分204中的較高位元。於一實施例中,針對第一個被寫至匯流排124的快取項目300,較低位址部分204(亦即非對應於較高位址位元508的位址部分204)被初始化為零(或其他預先決定的值),並且在隨後每次有一快取項目300被該診斷回寫程序寫至匯流排124時逐次增加。在這個情況下,若該診斷回寫程序所執行的位置(亦即被診斷回寫程序寫至匯流排124的位址範圍)為未被操作系統用於一般操作的系統記憶體(例如未被分派給操作系統轄下的程式),則中繼資料304/306可被儲存於系統記憶體之此區域,供系統軟體後續擷取與分析之用。
根據本發明之實施例的一個優點在於,不同於傳統的回寫與無效操作,該診斷回寫程序並未導致快取記憶體中的資訊遺失。由於在無效程序之後需要很長的時間透過正常程式載入、儲存、預取(prefetch)重新
搬移快取記憶體;傳統的回寫與無效操作會大幅延長模擬時間。更明確地說,模擬器可能會將大部分的時間運用在重新安置快取記憶體,尤其是針對一大型的快取記憶體(例如一末級快取記憶體),始能令程式漏洞出現。
第十二圖呈現第一圖中的處理器100自一核心/服務處理器102/509接收一請求並可能將該請求與來自其他核心/服務處理器102/509之請求進行合併的操作流程圖。該流程開始於步驟1202。
於步驟1202,一處理核心102或服務處理器509傳送一請求至合併引擎504,以執行一請求。該請求所屬之請求類型係合併引擎504所支援的,例如診斷回寫請求602、回寫無效請求604、回寫無效私有請求606或調整大小請求608。該流程隨後執行步驟1204。
於步驟1204,合併引擎504根據提出請求的處理核心102或服務處理器509,以及該請求相關的請求類型602/604/606/608,設定合併引擎請求表506中相對應的位元。這個請求隨後可能會與其他核心/服務處理器102/509提出的類型相同的一個或多個請求合併。更明確地說,當合併引擎504處於閒置狀態,亦即當無請求正在進行中(如第十三圖之步驟1302所決定者),若多於一個核心/服務處理器102/509對應於一特定請求類型602/604/606/608的位元被設定,則合併引擎504將針對該請求類型602/604/606/608執行一單一操作,並於操作完成時通知所有位元被設定的處理核心/服務處理器102/509其個別請求已完成(第十三圖中的步驟1312、1314)。該流程執行判斷步驟1206。
於判斷步驟1206,合併引擎504判斷該請求是否為一回寫無效私有請求606。若是,該流程隨後執行步驟1208;否則,該流程執行判斷步驟1212。
於步驟1208,合併引擎504對該回寫無效私有請求606中指定的處理核心位元遮罩數值與位元遮罩暫存器614中目前的數值進行布林OR運算。該流程結束於步驟1208。
於判斷步驟1212,合併引擎504決定該請求是否為一調整大小請求608。若是,該流程隨後執行步驟1214;否則,此流程結束。
於步驟1214,合併引擎504根據調整大小請求608中指定的快取空間規格更新快取空間規格暫存器612。該流程結束於步驟1214。
第十三圖呈現第一圖中的處理器100於執行一請求時之操作流程圖(該請求可為一合併後請求)。該流程開始於判斷步驟1302。
於判斷步驟1302,合併引擎504判斷是否有一請求正在進行中。也就是說,合併引擎504會判斷是否它正在回應來自一個或多個核心/服務處理器102/509的請求602/604/606/608執行相關於末級快取記憶體106之一操作。於一實施例中,合併引擎504係根據進行中暫存器507中是否有任何位元被設定來判斷是否有一請求正在進行中。若一請求正在進行中,該流程回到判斷步驟1302;否則,該流程繼續執行步驟1304。
於步驟1304,合併引擎504將合併引擎請求表506中與請求類型602/604/606/608相關的位元(例如第六圖中的一個位元)儲存至進行中暫存器507,並將相關數值儲存至快取空間規格暫存器612與位元遮罩暫存器614。於一實施例中,合併引擎504採用固定的優先順序來選擇接著要服務四種請求類型602/604/606/608中的哪一種。於另一實施例中,合併引擎504依循環(round-robin)順序選擇這四種請求類型602/604/606/608。該流程隨後執行步驟1306。
於步驟1306,合併引擎504清除步驟1304中所選擇之請求類型602/604/606/608在合併引擎請求表506中的相關位元。此外,合併引擎504亦清除位元遮罩暫存器614與快取空間規格暫存器612。該流程隨
後執行判斷步驟1308。
於判斷步驟1308,合併引擎504判斷在進行中暫存器507中是否有任何在步驟1304中被存入的位元是被設定的。也就是說,合併引擎504決定是否有任一個核心/服務處理器102/509有一等待中的請求係屬於目前選擇的請求類型602/604/606/608。若否,則該流程回到判斷步驟1302,以針對下一種請求類型602/604/606/608檢查等待中的請求。若是,則該流程隨後執行步驟1312。
於步驟1312,合併引擎504為進行中暫存器507所指出的所有核心/服務處理器102/509,針對目前選擇的請求類型602/604/606/608執行一單一操作。針對一調整大小請求608或回寫無效私有請求606,合併引擎504會分別根據快取空間規格暫存器612或位元遮罩暫存器614中目前儲存的數值執行該操作。更明確地說,若目前選擇的請求類型在合併引擎請求表506中有多於一個核心/服務處理器102/509位元被設定,則該些個別請求會被合併為一合併後請求。該合併後請求將透過針對目前選擇之請求類型的單一操作來完成。舉例而言,若處理核心1 102-1與處理核心3 102-3皆設定了其回寫無效私有請求606位元,則合併引擎504將執行一單一回寫無效私有操作,以監探處理核心1 102-1和處理核心3 102-3的私有快取記憶體104,而非兩個回寫無效私有操作。於另一範例中,若處理核心0 102-0、處理核心1 102-1、處理核心3 102-3皆設定了其回寫無效請求604位元,則合併引擎504將執行一單一回寫無效操作,而非三個回寫無效操作。於另一範例中,若處理核心2 102-2與處理核心3 102-3皆設定了其診斷回寫請求602位元,則合併引擎504將執行一單一診斷回寫程序,而非兩個診斷回寫程序。於另一範例中,若處理核心0 102-0與處理核心3 102-3皆設定了其調整大小請求608位元,則合併引擎504將執行一單一重設快取空間規格操作,以將末級快取記憶體106重設快取空間
規格為快取空間規格暫存器612中指定的快取空間規格(亦即最後一個發送至合併引擎504的請求所指定之快取空間規格),而非兩個重設快取空間規格操作。該流程隨後執行步驟1314。
於步驟1314,當步驟1312所執行的操作已完成,合併引擎504通知進行中暫存器507中所記錄的各核心/服務處理器102/509,其請求已經完成。合併引擎504亦清空進行中暫存器507。該流程結束於步驟1314。
後續範例將說明快取記憶體管理請求的合併及其優點。如先前所述,一回寫無效私有操作之執行係藉由整體瀏覽末級快取記憶體106中各個被啟用的集合/關聯路,並尋找位元遮罩暫存器614所指定的處理核心102中之正確的快取列,無論有多少位元在位元遮罩暫存器614中被設定(只要有至少一個位元被設定)。假設依漸增的處理核心編號順序,各處理核心102給傳送合併引擎504一個指定自己的回寫無效私有請求606。在這個情況下,後續事件的發生順序將如下所述。
在時間點0,處理核心0傳送一回寫無效私有請求606給合併引擎504(例如於步驟702或802或1202)。回應於此,合併引擎504為處理核心0設定合併引擎請求表506中對應於回寫無效私有請求606之該位元(於步驟1204),並將回寫無效私有請求606中指定的處理核心位元遮罩(僅指向處理核心0)與先前被清空的位元遮罩暫存器614合併,令對應於處理核心0之該位元被設定(於步驟1208)。
由於沒有其他等待中的請求(決定於步驟1302),合併引擎504將合併引擎請求表506中對應於回寫無效私有請求606的位元存至進行中暫存器507,同時亦儲存僅指向處理核心0的處理核心位元遮罩(於步驟1304),並清除合併引擎請求表506中對應於回寫無效私有請求606的位元、清除位元遮罩暫存器614(於步驟1306)。合併引擎504隨後開始
針對處理核心0之回寫無效私有請求606進行回寫無效私有操作(於步驟1312),亦即檢查末級快取記憶體106中各個被啟用的集合/關聯路、尋找處理核心0之私有快取記憶體104中正確的快取列,並將它們搬移至末級快取記憶體106。
稍後,處理核心1傳送一回寫無效私有請求606給合併引擎504。合併引擎504(於步驟1302)判定一回寫無效私有請求606(來自處理核心0)正在進行中,因此不會立即開始另一個回寫無效私有操作,但會設定合併引擎請求表506中對應於回寫無效私有請求606以及處理核心1的位元(於步驟1204),並將處理核心1之回寫無效私有請求606中指定的處理核心位元遮罩(僅指向處理核心1)與先前被清空的位元遮罩暫存器614合併,令對應於處理核心1之該位元被設定(於步驟1208)。
稍後,處理核心2傳送一回寫無效私有請求606給合併引擎504。合併引擎504判定(於步驟1302)針對處理核心0的回寫無效私有請求606仍在進行中,因此不會立即開始另一回寫無效私有操作,但會設定合併引擎請求表506中對應於回寫無效私有請求606以及處理核心2的位元(於步驟1204),並將處理核心2之回寫無效私有請求606中指定的處理核心位元遮罩(僅指向處理核心2)與先前僅設定處理核心1之位元的位元遮罩暫存器614合併,藉此令對應於處理核心1、2的位元都被設定(於步驟1208)。這種做法有效地合併了來自處理核心1與處理核心2的請求606。
稍後,處理核心3傳送一回寫無效私有請求606給合併引擎504。合併引擎504判定針對處理核心0的回寫無效私有請求606仍在進行中,因此不會立即開始另一回寫無效私有操作,但會設定合併引擎請求表506中對應於回寫無效私有請求606以及處理核心3的位元,並將處理核心3之回寫無效私有請求606中指定的處理核心位元遮罩(僅指向處理核心3)與先前僅設定處理核心1、2之位元的位元遮罩暫存器614合併,藉此令
對應於處理核心1、2、3的位元都被設定。這種做法有效地合併了來自處理核心1、2、3的請求606。
在數百或數千個時脈週期之後,合併引擎504完成了處理核心0的回寫無效私有請求606,並通知處理核心0其請求606已完成,隨後清空進行中暫存器507(於步驟1314)。
接著,合併引擎504偵測到(於步驟1302)沒有請求正在進行中,並開始步驟1304至步驟1314中的程序,以執行一相對於處理核心1、2、3之合併後的回寫無效私有操作(例如於步驟1312)。
由先前的說明可看出,合併引擎504能在針對四個處理核心102之兩個回寫無效私有操作的時間內完成針對四個處理核心102之四個回寫無效私有請求606。更明確地說,合併引擎504僅對末級快取記憶體106中所有的集合/關聯路組合之所有快取項目300進行兩次整體瀏覽。合併請求可將滿足四個請求606所需要的時間大致減半。此外,若當處理核心0、1、2、3依序傳送其請求606至合併引擎504時,合併引擎504正在工作中(例如執行一重設快取空間規格操作),則合併引擎504將合併四個請求606為單一回寫無效私有操作,藉此節省更多時間,亦即將滿足四個請求606的所需時間減少為大致四分之一。
後續範例係用以說明快取記憶體管理請求的合併及其優點。假設處理核心0傳送一調整大小請求608給合併引擎504,請求重設快取空間規格為十個關聯路。假設末級快取記憶體106的目前快取空間規格大於十個關聯路。假設有另一請求(例如診斷回寫請求602)正在進行中,則合併引擎504會將調整大小請求608送入合併引擎請求表506排隊等候。更明確地說,合併引擎504會設定處理核心0的調整大小請求608位元,並將十個關聯路的數值寫入快取空間規格暫存器612。隨後,處理核心1亦傳送一調整大小請求608給合併引擎504,請求重設快取空間規
格為六個關聯路。合併引擎504可看出處理核心0之等待中的請求為十個關聯路。合併引擎504將設定處理核心1的調整大小請求608位元(處理核心0的調整大小請求608位元先前已設定),並將快取空間規格暫存器612的數值更新為六(於步驟1214),藉此合併處理核心0與處理核心1的請求。當合併後調整大小請求608開始被執行(亦即合併引擎504狀態機傳送合併後仲裁請求至標籤與資料輸送線512/522,以開始執行該合併後重設快取空間規格操作),合併引擎504將末級快取記憶體106重設快取空間規格為六個關聯路,並通知處理核心0、處理核心1其調整大小請求608已完成。有利地,上述將請求合併的動作不為處理核心0與處理核心1所知,可減少所需時間。
第十四圖呈現第一圖中的處理器100於一處理核心102取消一合併引擎504請求時之操作流程圖。該流程開始於步驟1402。
於步驟1402,一處理核心102(以下稱處理核心X),傳送一通知至合併引擎504,以取消請求類型602/604/606/608中的一種請求(以下稱請求Y)。請求Y先前係由某個處理核心102傳遞至合併引擎504。在一實施例中,處理核心102係藉由編寫末級快取記憶體106之一控制暫存器來實現此動作。該流程執行判斷步驟1404。
於判斷步驟1404,合併引擎504判斷請求Y是否正在進行中,亦即合併引擎504目前是否正在執行相關於請求Y之操作。於一實施例中,合併引擎504藉由檢查進行中暫存器507來決定請求Y是否正在進行中。若請求Y正在進行中,該流程執行判斷步驟1408;否則,該流程隨後執行步驟1406。
於步驟1406,合併引擎504為處理核心X清除其於合併引擎請求表506中對應於請求Y之所屬類型602/604/606/608的位元。此外,合併引擎504會通知處理核心X,告知其請求Y已被取消。若合併引擎504
仍然在執行相關於請求Y之操作,它將不會針對處理核心X。也就是說,若處理核心X是唯一一個送出等待中之請求Y的處理核心102,則合併引擎504將不會執行相關於請求Y的操作。然而,若有其他處理核心102送出等待中之請求Y,亦即若合併引擎請求表506中有其他一個或多個其他處理核心102(或服務處理器509)對應於與請求Y同類型請求的位元被設定,則合併引擎504將會針對其他一個或多個處理核心102執行相關於請求Y之操作,但不是針對處理核心X。舉例而言,若請求Y為一回寫無效私有請求606,則合併引擎504會針對其他一個或多個處理核心102執行一回寫無效私有操作,但不是針對處理核心X。該流程結束於步驟1406。
於判斷步驟1408,合併引擎504決定請求Y是否正在僅針對處理核心X進行中,亦即僅針對處理核心X而未針對任何其他處理核心102。若是,該流程隨後執行步驟1414;否則,該流程隨後執行步驟1412。
於步驟1412,合併引擎504為處理核心X清除其於合併引擎請求表506中對應於請求Y之所屬類型602/604/606/608的位元。此外,合併引擎504會通知處理核心X,告知其請求Y已被取消,相似於步驟1406。然而,合併引擎504會繼續執行進行中的請求Y操作。在一實施例中,合併引擎504會繼續針對處理核心X執行進行中的請求Y操作(如同針對任何其他於進行中暫存器507中有位元被設定的處理核心102)。舉例而言,若一回寫無效私有操作正在針對處理核心1、3進行中,且處理核心3取消其回寫無效私有請求606,則合併引擎504將繼續針對處理核心1、3執行該回寫無效私有操作,除非是處理核心1取消其回寫無效私有請求606,合併引擎504才會停止執行該回寫無效私有操作(步驟1414)。該流程結束於步驟1412。
於步驟1414,合併引擎504停止執行相關於請求Y的操作,並通知處理核心X已將請求Y取消。也就是說,合併引擎504停止傳送仲
裁請求至標籤輸送線512及/或資料輸送線522,用以存取標籤/MESI陣列514、資料陣列529、非核心PRAM 524及/或末級快取記憶體暫存器526、及/或傳送監探請求至私有快取記憶體104、及/或傳送請求至匯流排介面單元108,以回寫快取列及/或中繼資料304/306至匯流排124、及/或停用/啟用末級快取記憶體106的關聯路。該流程結束於步驟1414。
第十四圖(或第十五圖)所述之快取記憶體管理請求的取消,尤其有利於調整大小請求608。於一實施例中,或許是回應於操作系統所執行之一架構指令,或是由於偵測到處理器100工作負擔較低,處理核心102之微指令傳送一調整大小請求608給合併引擎504,要求減少末級快取記憶體106的快取空間規格(亦即減少啟用的關聯路數量以節省電力)。舉例而言,假設末級快取記憶體106原本總共有十六個關聯路被啟用,而調整大小請求608指定的快取空間規格為六個關聯路。假設當該微指令傳送通知給合併引擎504要求取消調整大小請求608時,合併引擎504已經回寫修改過的資料並停用四個關聯路(亦即已將末級快取記憶體106的快取空間規格縮減為十二個關聯路)。該微指令要求取消調整大小請求608的原因可能是由於它偵測到一個等待中、且不能等到調整大小請求608完成後才處理的中斷請求。然而,有利地,末級快取記憶體106中已經被停用四個關聯路,當該微指令再次傳送指定快取空間規格為六個關聯路的調整大小請求608時,合併引擎504將能夠自快取空間規格為十二個關聯路開始,亦即合併引擎504將僅需再回寫並停用六個關聯路,而不需自十六個關聯路開始回寫與停用十個關聯路。如此一來,可達成棘輪效果(ratcheting-down effect),且先前之調整大小請求608的進程被保留。
第十五圖為當一處理核心102取消所有對於合併引擎504之請求時處理器100的運作流程圖。該流程開始於步驟1502。
於步驟1502,一處理核心102傳送一指示至合併引擎504,
以取消所有的請求。在一實施例中,處理核心102藉由編寫末級快取記憶體106之一控制暫存器來完成此動作。該流程隨後執行步驟1504。
於步驟1504,合併引擎504清除合併引擎請求表506中對應於請求Y類型602/604/606/608所有被設定的位元,並清空進行中暫存器507。接著,合併引擎504通知所有在進行中暫存器507或合併引擎請求表506中有相關於請求Y類型602/604/606/608之位元被設定的處理核心102,其請求Y已被取消。該流程結束於步驟1414。
藉由以上具體實施例之詳述,係希望能更加清楚描述本發明之特徵與精神,而並非以上述所揭露的具體實施例來對本發明之範疇加以限制。本發明所屬技術領域中具有通常知識者可理解,在形式與細節上有多種變化型可在不脫離本發明範疇的情況下可被實現。舉例而言,軟體能實現前述裝置與方法的功能、製造、建立模型、模擬、描述及/或測試,藉由通用的程式語言(例如C、C++)、硬體描述語言(包含Verilog HDL、VHDL等等)或其他可用程式。此軟體可被存放於任何已知的電腦可使用媒體,例如磁帶、半導體、磁碟或光碟(例如CD-ROM、DVD-ROM等等)、網路、有線、無線或其他通訊媒體。前述裝置與方法的實施例可被包含於一半導體產品中,例如一處理器處理核心(例如嵌入式或專用處理器)或是積體電路產品中的硬體。此外,前述裝置與方法可被實現為一硬體與軟體之組合。因此,本發明不受限於前述各實施例。尤其,本發明可被實現於一通用電腦所使用之處理器裝置中。最後,本發明所屬技術領域中具有通常知識者可運用以上揭露的觀念及實施例做為基礎,來設計或修改其他架構,在不背離本發明精神的情況下達成相同的目的。各種改變及具相等性的安排皆涵蓋於本發明所欲申請之專利範圍的範疇內。
106‧‧‧末級快取記憶體
502‧‧‧請求佇列
504‧‧‧合併引擎
506‧‧‧合併引擎請求表
507‧‧‧進行中暫存器
508‧‧‧較高位址位元暫存器
509‧‧‧服務處理器
512‧‧‧標籤輸送線
514‧‧‧標籤陣列
516‧‧‧LRU陣列
518‧‧‧仲裁邏輯
522‧‧‧資料輸送線
524‧‧‧非核心私有隨機存取記憶體
526‧‧‧控制/狀態暫存器
528‧‧‧仲裁邏輯
529‧‧‧資料陣列
532‧‧‧請求
Claims (22)
- 一種處理器,用於一系統,該系統具有位於該處理器外之一系統記憶體,該處理器包含:複數個處理核心;以及一快取記憶體,具有複數個快取項目,其中該複數個快取項目中之各快取項目存有一快取列之資料、該快取列之一狀態與該快取列之一標籤,該快取記憶體包含一引擎,該引擎包含一個或多個有限狀態機;以及一介面,用以連接一匯流排,回應於一架構回寫與無效指令,該處理器透過該匯流排自該快取記憶體回寫複數個修改過的快取列至該系統記憶體,其中回應於該架構回寫與無效指令,該處理器亦無效該快取記憶體之該複數個快取項目之狀態;其中回應於被指示針對該複數個快取項目中之各快取項目執行一快取診斷操作,該引擎將該些快取項目之狀態與標籤寫至該匯流排且並未無效該些快取項目之狀態。
- 如申請專利範圍第1項所述之處理器,其中:該匯流排包含一位址部分與一資料部分;以及回應於被指示針對該複數個快取項目中之各快取項目執行該快取診斷操作,該引擎將該快取項目之狀態與標籤寫至該匯流排之該位址部分,並將該快取項目之資料寫至該匯流排之該資料部分。
- 如申請專利範圍第2項所述之處理器,其中: 該快取記憶體被設置為一相聯式快取記憶體,具有複數個集合,依該快取項目之該快取列之一位址之一索引部分被編排,其中該快取列之該位址之該索引部分並未被儲存於該快取記憶體;以及當該引擎將該快取項目之狀態與標籤寫至該匯流排之該位址部分並將該快取項目之資料寫至該匯流排之該資料部分,該引擎依一預先決定之順序將該些快取項目寫至該匯流排,其中該快取列之該位址之該索引部分根據該預先決定之順序能被無疑異地決定。
- 如申請專利範圍第3項所述之處理器,其中:該快取記憶體被進一步設置為一集合相聯快取記憶體,具有複數個關聯路;其中該快取列之該位址之該索引部分以及該快取項目之一關聯路根據該預先決定之順序能被無疑異地決定。
- 如申請專利範圍第2項所述之處理器,進一步包含:儲存區域,存有一較高位址位元數值;其中當該引擎將該快取項目之狀態與標籤寫至該匯流排之該位址部分,該引擎亦將該儲存區域所存有之該較高位址位元數值寫至該匯流排之該位址部分中未被該快取項目之狀態與標籤使用之相對應的複數個較高位元。
- 如申請專利範圍第1項所述之處理器,其中:該匯流排包含一位址部分與一資料部分;以及 回應於被指示針對該複數個快取項目中之各快取項目執行該快取診斷操作,該引擎將該快取項目之狀態與標籤寫至該匯流排之該資料部分。
- 如申請專利範圍第6項所述之處理器,其中:回應於被指示針對該複數個快取項目中之各快取項目執行該快取診斷操作,該引擎將該快取列之一位址寫至該匯流排之該位址部分。
- 如申請專利範圍第1項所述之處理器,其中:透過一架構指令,該處理器被指示執行該快取診斷操作。
- 如申請專利範圍第1項所述之處理器,進一步包含:微指令,用以指示該引擎執行該快取診斷操作。
- 如申請專利範圍第9項所述之處理器,其中:該微指令指示該引擎執行該快取診斷操作係藉由設定該引擎之一控制暫存器中之一控制位元。
- 如申請專利範圍第1項所述之處理器,進一步包含:複數個處理核心,共用該快取記憶體。
- 如申請專利範圍第11項所述之處理器,其中該快取列之狀態包含:狀態資訊指出該快取列相對於該快取記憶體之一狀態,以及相對於該複數個處理核心中各處理核心之一非共用快取記 憶體之一狀態。
- 如申請專利範圍第1項所述之處理器,其中該引擎將該複數個快取項目之狀態與標籤寫至該匯流排時係使用該匯流排實際上能傳送資料之一最高速率。
- 如申請專利範圍第1項所述之處理器,其中:該快取記憶體被設置為一集合相聯快取記憶體,具有複數個集合與複數個關聯路;該複數個集合中之各集合包含一取代資訊,用以決定在將一快取項目安排至該集合中時應將該複數個關聯路中哪一個關聯路取代;以及回應於被指示執行該快取診斷操作,該引擎亦將該取代資訊寫至該匯流排。
- 一種適用於一處理器之操作方法,該處理器係用於一系統,該系統具有位於該處理器外之一系統記憶體,該快取記憶體具有複數個快取項目,其中該複數個快取項目中之各快取項目存有一快取列之資料、該快取列之一狀態與該快取列之一標籤,該處理器亦具有用以連接一匯流排之一介面,該操作方法包含:回應於一架構回寫與無效指令,透過該匯流排自該快取記憶體回寫複數個修改過的快取列至該系統記憶體,並無效該快取記憶體之該複數個快取項目之狀態;以及回應於被指示針對該複數個快取項目中之各快取項目執行一快取診斷操作,將該些快取項目之狀態與標籤寫至該匯流排且 不無效該些快取項目之狀態。
- 如申請專利範圍第15項所述之操作方法,其中:該匯流排包含一位址部分與一資料部分;以及將該快取項目之狀態與標籤寫至該匯流排包含將該快取項目之狀態與標籤寫至該匯流排之該位址部分,並將該快取項目之資料寫至該匯流排之該資料部分。
- 如申請專利範圍第16項所述之操作方法,其中:該快取記憶體被設置為一相聯式快取記憶體,具有複數個集合,依該快取項目之該快取列之一位址之一索引部分被編排,其中該快取列之該位址之該索引部分並未被儲存於該快取記憶體;以及將該快取項目之狀態與標籤寫至該匯流排之該位址部分並將該快取項目之資料寫至該匯流排之該資料部分包含:依一預先決定之順序將該些快取項目寫至該匯流排,其中該快取列之該位址之該索引部分根據該預先決定之順序能被無疑異地決定。
- 如申請專利範圍第17項所述之操作方法,其中:該快取記憶體被進一步設置為一集合相聯快取記憶體,具有複數個關聯路;其中該快取列之該位址之該索引部分以及該快取項目之一關聯路根據該預先決定之順序能被無疑異地決定。
- 如申請專利範圍第16項所述之操作方法,進一步包含:利用該處理器之一儲存區域,儲存一較高位址位元數值;其中將該快取項目之狀態與標籤寫至該匯流排包含將該儲存區域所存有之該較高位址位元數值寫至該匯流排之該位址部分中未被該快取項目之狀態與標籤使用之相對應的複數個較高位元。
- 如申請專利範圍第15項所述之操作方法,其中:該匯流排包含一位址部分與一資料部分;以及將該快取項目之狀態與標籤寫至該匯流排包含將該快取項目之狀態與標籤寫至該匯流排之該資料部分。
- 如申請專利範圍第20項所述之操作方法,其中:將該快取項目之狀態與標籤寫至該匯流排包含將該快取列之一位址寫至該匯流排之該位址部分。
- 一種電腦程式產品,編碼於供一運算裝置使用之至少一非暫態電腦可使用媒體中,該電腦程式產品包含:一儲存於該非暫態電腦可使用媒體中之電腦可使用程式碼,用以控制一處理器,該處理器係用於具有一系統記憶體之一系統,且該系統記憶體係位於該處理器之外,該電腦可使用程式碼包含:第一程式碼,用以控制具有複數個快取項目之一快取記憶體,其中該複數個快取項目中之各快取項目存有一快取列之資料、該快取列之一狀態與該快取列之一標籤,其中該快取 記憶體包含一引擎,該引擎包含一個或多個有限狀態機;以及第二程式碼,用以控制連接一匯流排之一介面,回應於一架構回寫與無效指令,該處理器透過該匯流排自該快取記憶體回寫複數個修改過的快取列至該系統記憶體,其中回應於該架構回寫與無效指令,該處理器亦無效該快取記憶體之該複數個快取項目之狀態;以及其中回應於被指示針對該複數個快取項目中之各快取項目執行一快取診斷操作,該引擎將該些快取項目之狀態與標籤寫至該匯流排且並未無效該些快取項目之狀態。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462052387P | 2014-09-18 | 2014-09-18 | |
PCT/IB2014/003103 WO2016042354A1 (en) | 2014-09-18 | 2014-11-26 | Cache memory diagnostic writeback |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201618117A TW201618117A (zh) | 2016-05-16 |
TWI578327B true TWI578327B (zh) | 2017-04-11 |
Family
ID=55532606
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104130944A TWI571739B (zh) | 2014-09-18 | 2015-09-18 | 管理快取記憶體合倂請求之處理器及其操作方法 |
TW104130947A TWI578327B (zh) | 2014-09-18 | 2015-09-18 | 診斷快取記憶體回寫之處理器及其操作方法、以及利用其操作方法控制處理器之電腦程式產品 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104130944A TWI571739B (zh) | 2014-09-18 | 2015-09-18 | 管理快取記憶體合倂請求之處理器及其操作方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9911508B2 (zh) |
CN (2) | CN105793833B (zh) |
TW (2) | TWI571739B (zh) |
WO (2) | WO2016042354A1 (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9933980B2 (en) * | 2014-02-24 | 2018-04-03 | Toshiba Memory Corporation | NAND raid controller for connection between an SSD controller and multiple non-volatile storage units |
US9911508B2 (en) | 2014-09-18 | 2018-03-06 | Via Alliance Semiconductor Co., Ltd | Cache memory diagnostic writeback |
US10698827B2 (en) | 2014-12-14 | 2020-06-30 | Via Alliance Semiconductor Co., Ltd. | Dynamic cache replacement way selection based on address tag bits |
WO2016097806A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Fully associative cache memory budgeted by memory access type |
WO2016097812A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Cache memory budgeted by chunks based on memory access type |
WO2016097795A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or subset or tis ways depending on mode |
EP3066571B1 (en) | 2014-12-14 | 2018-06-13 | VIA Alliance Semiconductor Co., Ltd. | Cache memory budgeted by ways on memory access type |
WO2016097810A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon mode |
US9811468B2 (en) * | 2014-12-14 | 2017-11-07 | Via Alliance Semiconductor Co., Ltd. | Set associative cache memory with heterogeneous replacement policy |
EP3055775B1 (en) * | 2014-12-14 | 2019-08-21 | VIA Alliance Semiconductor Co., Ltd. | Cache replacement policy that considers memory access type |
US10482024B2 (en) * | 2017-07-20 | 2019-11-19 | Alibaba Group Holding Limited | Private caching for thread local storage data access |
US10891228B2 (en) * | 2018-02-12 | 2021-01-12 | International Business Machines Corporation | Cache line states identifying memory cache |
US11875183B2 (en) * | 2018-05-30 | 2024-01-16 | Texas Instruments Incorporated | Real-time arbitration of shared resources in a multi-master communication and control system |
US11010067B2 (en) * | 2018-12-28 | 2021-05-18 | Intel Corporation | Defense against speculative side-channel analysis of a computer system |
US10976950B1 (en) * | 2019-01-15 | 2021-04-13 | Twitter, Inc. | Distributed dataset modification, retention, and replication |
US11113270B2 (en) | 2019-01-24 | 2021-09-07 | EMC IP Holding Company LLC | Storing a non-ordered associative array of pairs using an append-only storage medium |
DE112019007666T5 (de) * | 2019-08-27 | 2022-06-15 | Micron Technology, Inc. | Schreibpuffersteuerung in einem verwalteten Speichersystem |
CN111428246B (zh) * | 2020-03-30 | 2023-04-18 | 电子科技大学 | 面向自主芯片硬件安全的逻辑漏洞深度挖掘方法 |
US11599546B2 (en) | 2020-05-01 | 2023-03-07 | EMC IP Holding Company LLC | Stream browser for data streams |
US11604759B2 (en) | 2020-05-01 | 2023-03-14 | EMC IP Holding Company LLC | Retention management for data streams |
US11599420B2 (en) | 2020-07-30 | 2023-03-07 | EMC IP Holding Company LLC | Ordered event stream event retention |
US11513871B2 (en) | 2020-09-30 | 2022-11-29 | EMC IP Holding Company LLC | Employing triggered retention in an ordered event stream storage system |
US11755555B2 (en) | 2020-10-06 | 2023-09-12 | EMC IP Holding Company LLC | Storing an ordered associative array of pairs using an append-only storage medium |
US11599293B2 (en) | 2020-10-14 | 2023-03-07 | EMC IP Holding Company LLC | Consistent data stream replication and reconstruction in a streaming data storage platform |
US11816065B2 (en) | 2021-01-11 | 2023-11-14 | EMC IP Holding Company LLC | Event level retention management for data streams |
US12099513B2 (en) | 2021-01-19 | 2024-09-24 | EMC IP Holding Company LLC | Ordered event stream event annulment in an ordered event stream storage system |
US11740828B2 (en) * | 2021-04-06 | 2023-08-29 | EMC IP Holding Company LLC | Data expiration for stream storages |
US12001881B2 (en) | 2021-04-12 | 2024-06-04 | EMC IP Holding Company LLC | Event prioritization for an ordered event stream |
US11954537B2 (en) | 2021-04-22 | 2024-04-09 | EMC IP Holding Company LLC | Information-unit based scaling of an ordered event stream |
US11681460B2 (en) | 2021-06-03 | 2023-06-20 | EMC IP Holding Company LLC | Scaling of an ordered event stream based on a writer group characteristic |
US11735282B2 (en) | 2021-07-22 | 2023-08-22 | EMC IP Holding Company LLC | Test data verification for an ordered event stream storage system |
US11971850B2 (en) | 2021-10-15 | 2024-04-30 | EMC IP Holding Company LLC | Demoted data retention via a tiered ordered event stream data storage system |
US20230136274A1 (en) * | 2021-11-04 | 2023-05-04 | Softiron Limited | Ceph Media Failure and Remediation |
US11977779B2 (en) * | 2022-05-11 | 2024-05-07 | Bank Of America Corporation | Smart queue for distributing user requests to automated response generating systems |
US20240012579A1 (en) * | 2022-07-06 | 2024-01-11 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for data placement in a storage device |
TWI820883B (zh) * | 2022-08-30 | 2023-11-01 | 新唐科技股份有限公司 | 積體電路及其快取記憶體有效位元清除方法 |
US20240103745A1 (en) * | 2022-09-28 | 2024-03-28 | Advanced Micro Devices, Inc. | Scheduling Processing-in-Memory Requests and Memory Requests |
US20240143512A1 (en) * | 2022-11-01 | 2024-05-02 | Western Digital Technologies, Inc. | Write buffer linking for easy cache reads |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060053257A1 (en) * | 2004-09-09 | 2006-03-09 | Intel Corporation | Resolving multi-core shared cache access conflicts |
TWI298126B (en) * | 2003-04-24 | 2008-06-21 | Ibm | Method of executing an instruction by a microprocessor in a multiprocessor environment, recording medium comprising a compiler for generating a set of computer executable instructions, and multiprocessor data processing system |
US8151059B2 (en) * | 2006-11-29 | 2012-04-03 | Intel Corporation | Conflict detection and resolution in a multi core-cache domain for a chip multi-processor employing scalability agent architecture |
CN102929832A (zh) * | 2012-09-24 | 2013-02-13 | 杭州中天微系统有限公司 | 基于非写分配的高速缓存一致性的多核处理器数据传输系统 |
CN103136113A (zh) * | 2011-11-25 | 2013-06-05 | 中国科学院沈阳计算技术研究所有限公司 | 面向多核处理器的共享Cache冲突预测方法 |
JP5499987B2 (ja) * | 2010-08-13 | 2014-05-21 | 富士通株式会社 | 共有キャッシュメモリ装置 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0468831B1 (en) * | 1990-06-29 | 1997-10-15 | Digital Equipment Corporation | Bus protocol for write-back cache processor |
US5999721A (en) * | 1997-06-13 | 1999-12-07 | International Business Machines Corporation | Method and system for the determination of performance characteristics of a cache design by simulating cache operations utilizing a cache output trace |
CN1320464C (zh) * | 2003-10-23 | 2007-06-06 | 英特尔公司 | 用于维持共享高速缓存一致性的方法和设备 |
US20060112226A1 (en) * | 2004-11-19 | 2006-05-25 | Hady Frank T | Heterogeneous processors sharing a common cache |
US7392351B2 (en) * | 2005-03-29 | 2008-06-24 | International Business Machines Corporation | Method and apparatus for filtering snoop requests using stream registers |
US7380071B2 (en) * | 2005-03-29 | 2008-05-27 | International Business Machines Corporation | Snoop filtering system in a multiprocessor system |
US7584327B2 (en) * | 2005-12-30 | 2009-09-01 | Intel Corporation | Method and system for proximity caching in a multiple-core system |
US7356652B1 (en) * | 2006-03-28 | 2008-04-08 | Unisys Corporation | System and method for selectively storing bus information associated with memory coherency operations |
US7571285B2 (en) * | 2006-07-21 | 2009-08-04 | Intel Corporation | Data classification in shared cache of multiple-core processor |
US7809926B2 (en) | 2006-11-03 | 2010-10-05 | Cornell Research Foundation, Inc. | Systems and methods for reconfiguring on-chip multiprocessors |
US8209689B2 (en) * | 2007-09-12 | 2012-06-26 | Intel Corporation | Live lock free priority scheme for memory transactions in transactional memory |
US8209493B2 (en) | 2008-03-26 | 2012-06-26 | Intel Corporation | Systems and methods for scheduling memory requests during memory throttling |
US20090249046A1 (en) * | 2008-03-31 | 2009-10-01 | Mips Technologies, Inc. | Apparatus and method for low overhead correlation of multi-processor trace information |
US9690591B2 (en) * | 2008-10-30 | 2017-06-27 | Intel Corporation | System and method for fusing instructions queued during a time window defined by a delay counter |
US9354944B2 (en) * | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
CN101916232B (zh) * | 2009-08-26 | 2012-09-05 | 威盛电子股份有限公司 | 存储器配置装置以及方法 |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US8412971B2 (en) | 2010-05-11 | 2013-04-02 | Advanced Micro Devices, Inc. | Method and apparatus for cache control |
CN102446158B (zh) * | 2010-10-12 | 2013-09-18 | 无锡江南计算技术研究所 | 多核处理器及多核处理器组 |
US9274960B2 (en) * | 2012-03-20 | 2016-03-01 | Stefanos Kaxiras | System and method for simplifying cache coherence using multiple write policies |
US9081706B2 (en) | 2012-05-10 | 2015-07-14 | Oracle International Corporation | Using a shared last-level TLB to reduce address-translation latency |
US9329936B2 (en) * | 2012-12-31 | 2016-05-03 | Intel Corporation | Redundant execution for reliability in a super FMA ALU |
US9454486B2 (en) | 2013-07-12 | 2016-09-27 | Apple Inc. | Cache pre-fetch merge in pending request buffer |
US9652388B2 (en) * | 2013-07-31 | 2017-05-16 | Intel Corporation | Method, apparatus and system for performing management component transport protocol (MCTP) communications with a universal serial bus (USB) device |
US9911508B2 (en) | 2014-09-18 | 2018-03-06 | Via Alliance Semiconductor Co., Ltd | Cache memory diagnostic writeback |
-
2014
- 2014-11-26 US US14/890,421 patent/US9911508B2/en active Active
- 2014-11-26 US US14/890,420 patent/US9892803B2/en active Active
- 2014-11-26 CN CN201480065192.2A patent/CN105793833B/zh active Active
- 2014-11-26 CN CN201480065193.7A patent/CN105793832B/zh active Active
- 2014-11-26 WO PCT/IB2014/003103 patent/WO2016042354A1/en active Application Filing
- 2014-11-26 WO PCT/IB2014/003088 patent/WO2016042353A1/en active Application Filing
-
2015
- 2015-09-18 TW TW104130944A patent/TWI571739B/zh active
- 2015-09-18 TW TW104130947A patent/TWI578327B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI298126B (en) * | 2003-04-24 | 2008-06-21 | Ibm | Method of executing an instruction by a microprocessor in a multiprocessor environment, recording medium comprising a compiler for generating a set of computer executable instructions, and multiprocessor data processing system |
US20060053257A1 (en) * | 2004-09-09 | 2006-03-09 | Intel Corporation | Resolving multi-core shared cache access conflicts |
US8151059B2 (en) * | 2006-11-29 | 2012-04-03 | Intel Corporation | Conflict detection and resolution in a multi core-cache domain for a chip multi-processor employing scalability agent architecture |
JP5499987B2 (ja) * | 2010-08-13 | 2014-05-21 | 富士通株式会社 | 共有キャッシュメモリ装置 |
CN103136113A (zh) * | 2011-11-25 | 2013-06-05 | 中国科学院沈阳计算技术研究所有限公司 | 面向多核处理器的共享Cache冲突预测方法 |
CN102929832A (zh) * | 2012-09-24 | 2013-02-13 | 杭州中天微系统有限公司 | 基于非写分配的高速缓存一致性的多核处理器数据传输系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2016042353A1 (en) | 2016-03-24 |
TWI571739B (zh) | 2017-02-21 |
US9892803B2 (en) | 2018-02-13 |
CN105793833B (zh) | 2019-08-06 |
TW201614503A (en) | 2016-04-16 |
CN105793832B (zh) | 2018-12-18 |
TW201618117A (zh) | 2016-05-16 |
CN105793832A (zh) | 2016-07-20 |
US20160283376A1 (en) | 2016-09-29 |
CN105793833A (zh) | 2016-07-20 |
US20160293273A1 (en) | 2016-10-06 |
WO2016042354A1 (en) | 2016-03-24 |
US9911508B2 (en) | 2018-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI578327B (zh) | 診斷快取記憶體回寫之處理器及其操作方法、以及利用其操作方法控制處理器之電腦程式產品 | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
US9268708B2 (en) | Level one data cache line lock and enhanced snoop protocol during cache victims and writebacks to maintain level one data cache and level two cache coherence | |
US9129071B2 (en) | Coherence controller slot architecture allowing zero latency write commit | |
EP2430551B1 (en) | Cache coherent support for flash in a memory hierarchy | |
TWI522802B (zh) | 確保微處理器之快取記憶體層級之資料一致性的裝置與方法 | |
US8631208B2 (en) | Providing address range coherency capability to a device | |
CN106897230B (zh) | 用于处理原子更新操作的装置和方法 | |
CN110865968A (zh) | 多核处理装置及其内核之间数据传输方法 | |
JP3575572B2 (ja) | データ転送方法及びシステム | |
US11720495B2 (en) | Multi-level cache security | |
US20140122810A1 (en) | Parallel processing of multiple block coherence operations | |
EP4264905A1 (en) | Data placement with packet metadata | |
US8108621B2 (en) | Data cache with modified bit array | |
US9448937B1 (en) | Cache coherency | |
US7496715B1 (en) | Programmable cache management system and method | |
US11822480B2 (en) | Criticality-informed caching policies | |
TWI417725B (zh) | 微處理器、微處理器之資料快取存取方法與電腦程式產品 | |
US20240272908A1 (en) | Load-with-substitution instruction |