TWI571739B - 管理快取記憶體合倂請求之處理器及其操作方法 - Google Patents

管理快取記憶體合倂請求之處理器及其操作方法 Download PDF

Info

Publication number
TWI571739B
TWI571739B TW104130944A TW104130944A TWI571739B TW I571739 B TWI571739 B TW I571739B TW 104130944 A TW104130944 A TW 104130944A TW 104130944 A TW104130944 A TW 104130944A TW I571739 B TWI571739 B TW I571739B
Authority
TW
Taiwan
Prior art keywords
cache
request
cache memory
processing cores
processor
Prior art date
Application number
TW104130944A
Other languages
English (en)
Other versions
TW201614503A (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 TW201614503A publication Critical patent/TW201614503A/zh
Application granted granted Critical
Publication of TWI571739B publication Critical patent/TWI571739B/zh

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache 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)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0857Overlapped cache accessing, e.g. pipeline by multiple requestors
    • 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/0864Addressing 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • 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/0804Addressing 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
    • 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/1024Latency reduction
    • 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/6042Allocation 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包含一第一級指令快取記憶體與一第一級資料快取記憶體,且快取列狀態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和快取列狀態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和快取列狀態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中的快取列狀態306,並可間接地更新LRU陣列516中的LRU位元402。於一實施例中,末級快取記憶體106包含兩個資料輸送線522與兩個標籤輸送線512。
仲裁邏輯528負責仲裁來自請求佇列502與合併引擎504對於資料輸送線522的存取請求。相似地,仲裁邏輯518負責仲裁來自請求佇列502與合併引擎504對於標籤輸送線512的存取請求。
在一實施例中,合併引擎504能使用系統匯流排124的整個頻寬,以使上述診斷回寫程序能以相較於傳統方法更快速的方式被執行。 此外,不同於傳統的回寫無效操作(例如x86 WBINVD指令),該診斷回寫程序並未令末級快取記憶體106中快取項目300的快取列狀態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的快取列狀態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和快取列狀態306給系統匯流排124的位址部分204。於一實施例中,快取列標籤304被提供至位元[33:15],快取列狀態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,core1 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和快取列狀態306給系統匯流排124之資料部分202。於一實施例中,快取項目300之快取列之資料302的一部份亦被被寫至系統匯流排124的資料部分202(與快取列標籤304和快取列狀態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. 如申請專利範圍第1項所述之處理器,其中:該快取記憶體包含複數個快取項目,每一個快取項目包含之一儲存區域係用以存放一快取列與相關之一該快取列狀態;以及相關於該快取記憶體之該操作包含該合併引擎檢查該複數個快取項目中目前未停用之快取項目各自之該快取列狀態。
  3. 如申請專利範圍第1項所述之處理器,其中相關於該快取記憶體之該操作包含該合併引擎將該快取記憶體中被修改過之一個或多個快取列回寫至一系統記憶體。
  4. 如申請專利範圍第1項所述之處理器,其中與該快取記憶體相 關之該操作包含一診斷回寫請求。
  5. 如申請專利範圍第1項所述之處理器,其中與該快取記憶體相關之該操作包含一回寫無效請求。
  6. 如申請專利範圍第1項所述之處理器,其中與該快取記憶體相關之該操作包含將該快取記憶體重設快取空間規格之一請求。
  7. 如申請專利範圍第6項所述之處理器,其中:每一個別請求各自為該快取記憶體指定一新快取空間規格;以及當該合併引擎執行該單一操作以將該快取記憶體重設快取空間規格,該合併引擎根據該等個別請求中之一最新個別請求所指定之該新快取空間規格將該快取記憶體重設快取空間規格。
  8. 如申請專利範圍第1項所述之處理器,其中:該複數個處理核心的每一個處理核心各自包含一私有快取記憶體;以及相關於該快取記憶體之該操作包含一請求,用以自該等私有快取記憶體中之一個或多個私有快取記憶體監探該快取記憶體中之修改過的快取列,並將該一個或多個私有快取記憶體設定為無效。
  9. 如申請專利範圍第8項所述之處理器,其中: 每一個別請求指定該複數個處理核心之一個別集合,該個別集合中之處理核心所具有的私有快取記憶體將被監探;以及該合併引擎監探一母集合中之各處理核心所具有的私有快取記憶體,其中該母集合為該等個別請求所指定之個別集合的聯集。
  10. 如申請專利範圍第1項所述之處理器,其中:該複數個處理核心中之一處理核心傳送一通知至該合併引擎以取消其個別請求;以及若該合併引擎在收到該通知之前尚未開始處理該合併後請求,該合併引擎於執行該單一操作時不針對該處理核心,並通知該處理核心其個別請求未被完成而是被取消。
  11. 一種適用於一處理器之操作方法,該處理器包含複數個處理核心與由該複數個處理核心共用之一快取記憶體,該操作方法包含:利用該快取記憶體,自該複數個處理核心中的各個處理核心接收一個別請求,並據此執行與該快取記憶體相關之一操作;將來自該複數個處理核心中兩個或更多個處理核心的多個個別請求合併為一合併後請求;以及藉由執行一單一操作來執行該合併後請求,並於該單一操作完成時,通知該複數個處理核心中的兩個或更多個處理核心,其個別請求已經完成。
  12. 如申請專利範圍第11項所述之操作方法,其中: 該快取記憶體包含複數個快取項目,每一個快取項目包含之儲存區域係用以存放一快取列與相關之一該快取列狀態;以及相關於該快取記憶體之該操作包含檢查該複數個快取項目中目前未停用之快取項目各自之該快取列狀態。
  13. 如申請專利範圍第11項所述之操作方法,其中相關於該快取記憶體之該操作包含將該快取記憶體中被修改過之一個或多個快取列回寫至一系統記憶體。
  14. 如申請專利範圍第11項所述之操作方法,其中相關於該快取記憶體之該操作包含一診斷回寫請求。
  15. 如申請專利範圍第11項所述之操作方法,其中相關於該快取記憶體之該操作包含一回寫無效請求。
  16. 如申請專利範圍第11項所述之操作方法,其中相關於該快取記憶體之該操作包含將該快取記憶體重設快取空間規格之一請求。
  17. 如申請專利範圍第16項所述之操作方法,其中:每一個別請求各自為該快取記憶體指定一新快取空間規格;以及執行該單一操作以將該快取記憶體重設快取空間規格包含根據該等個別請求中之一最新個別請求所指定之該新快取空間規格將該快取記憶體重設快取空間規格。
  18. 如申請專利範圍第11項所述之操作方法,其中:該複數個處理核心的每一個處理核心各自包含一私有快取記憶體;以及相關於該快取記憶體之該操作包含一請求,用以自該等私有快取記憶體中之一個或多個私有快取記憶體監探該快取記憶體中之修改過的快取列,並將該一個或多個私有快取記憶體設定為無效。
  19. 如申請專利範圍第18項所述之操作方法,其中:每一個別請求指定該複數個處理核心之一個別集合,該個別集合中之處理核心所具有的私有快取記憶體將被監探;以及監探一母集合中之各處理核心所具有的私有快取記憶體,其中該母集合為該等個別請求所指定之個別集合的聯集。
  20. 如申請專利範圍第11項所述之操作方法,進一步包含:自該複數個處理核心中之一處理核心傳送一通知以取消其個別請求;以及若在收到該通知之前尚未開始處理該合併後請求,於執行該單一操作時不針對該處理核心,並通知該處理核心其個別請求未被完成而是被取消。
  21. 一種電腦程式產品,編碼於供一運算裝置使用之至少一非暫態電腦可使用媒體中,該電腦程式產品包含:儲存於該媒體中之電腦可使用程式碼,用以控制一處理器,該 電腦可使用程式碼包含:第一程式碼,用以控制複數個處理核心;以及第二程式碼,用以控制由該複數個處理核心共用之一快取記憶體,其中該快取記憶體包含一合併引擎,用以自該複數個處理核心中的各個處理核心接收一個別請求,並據此執行與該快取記憶體相關之一操作;以及其中該合併引擎將來自該複數個處理核心中兩個或更多個處理核心的多個個別請求合併為一合併後請求;該合併引擎藉由執行一單一操作來執行該合併後請求,並於該單一操作完成時,通知該複數個處理核心中的兩個或更多個處理核心,其個別請求已經完成。
  22. 如申請專利範圍第21項所述之電腦程式產品,其中該至少一非暫態電腦可使用媒體為一磁性儲存媒體、一光學儲存媒體或一電子儲存媒體。
TW104130944A 2014-09-18 2015-09-18 管理快取記憶體合倂請求之處理器及其操作方法 TWI571739B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201462052387P 2014-09-18 2014-09-18
PCT/IB2014/003088 WO2016042353A1 (en) 2014-09-18 2014-11-26 Cache management request fusing

Publications (2)

Publication Number Publication Date
TW201614503A TW201614503A (en) 2016-04-16
TWI571739B true TWI571739B (zh) 2017-02-21

Family

ID=55532606

Family Applications (2)

Application Number Title Priority Date Filing Date
TW104130947A TWI578327B (zh) 2014-09-18 2015-09-18 診斷快取記憶體回寫之處理器及其操作方法、以及利用其操作方法控制處理器之電腦程式產品
TW104130944A TWI571739B (zh) 2014-09-18 2015-09-18 管理快取記憶體合倂請求之處理器及其操作方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW104130947A TWI578327B (zh) 2014-09-18 2015-09-18 診斷快取記憶體回寫之處理器及其操作方法、以及利用其操作方法控制處理器之電腦程式產品

Country Status (4)

Country Link
US (2) US9892803B2 (zh)
CN (2) CN105793832B (zh)
TW (2) TWI578327B (zh)
WO (2) WO2016042354A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
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
CN105793832B (zh) 2014-09-18 2018-12-18 上海兆芯集成电路有限公司 处理器及其操作方法、以及计算机可读存储介质
US9910785B2 (en) 2014-12-14 2018-03-06 Via Alliance Semiconductor Co., Ltd Cache memory budgeted by ways based on memory access type
JP6209689B2 (ja) 2014-12-14 2017-10-04 ヴィア アライアンス セミコンダクター カンパニー リミテッド モードに応じてウェイの全部又はサブセットに選択的に割り当てるように動的に構成可能であるマルチモード・セット・アソシエイティブ・キャッシュ・メモリ
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
EP3066572B1 (en) * 2014-12-14 2020-02-19 VIA Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
WO2016097813A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
WO2016097808A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Dynamic cache replacement way selection based on address tag bits
US9652400B2 (en) * 2014-12-14 2017-05-16 Via Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
KR101835949B1 (ko) * 2014-12-14 2018-03-08 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 메모리 접근 타입을 고려한 캐시 치환 정책
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 电子科技大学 面向自主芯片硬件安全的逻辑漏洞深度挖掘方法
US11604759B2 (en) 2020-05-01 2023-03-14 EMC IP Holding Company LLC Retention management for data streams
US11599546B2 (en) 2020-05-01 2023-03-07 EMC IP Holding Company LLC Stream browser 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
US11740828B2 (en) * 2021-04-06 2023-08-29 EMC IP Holding Company LLC Data expiration for stream storages
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

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201032129A (en) * 2008-10-30 2010-09-01 Intel Corp Technique for promoting efficient instruction fusion
US20140052917A1 (en) * 2012-05-10 2014-02-20 Oracle International Corporation Using a shared last-level tlb to reduce address-translation latency
US20140189305A1 (en) * 2012-12-31 2014-07-03 Brian J. Hickmann Redundant execution for reliability in a super fma alu

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69127936T2 (de) 1990-06-29 1998-05-07 Digital Equipment Corp Busprotokoll für Prozessor mit write-back cache
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
US7194587B2 (en) 2003-04-24 2007-03-20 International Business Machines Corp. Localized cache block flush instruction
CN1320464C (zh) * 2003-10-23 2007-06-06 英特尔公司 用于维持共享高速缓存一致性的方法和设备
US9727468B2 (en) * 2004-09-09 2017-08-08 Intel Corporation Resolving multi-core shared cache access conflicts
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
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
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
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
JP5499987B2 (ja) 2010-08-13 2014-05-21 富士通株式会社 共有キャッシュメモリ装置
CN102446158B (zh) * 2010-10-12 2013-09-18 无锡江南计算技术研究所 多核处理器及多核处理器组
CN103136113B (zh) * 2011-11-25 2016-01-13 中国科学院沈阳计算技术研究所有限公司 面向多核处理器的共享Cache冲突预测方法
US9274960B2 (en) * 2012-03-20 2016-03-01 Stefanos Kaxiras System and method for simplifying cache coherence using multiple write policies
CN102929832B (zh) * 2012-09-24 2015-05-13 杭州中天微系统有限公司 基于非写分配的高速缓存一致性的多核处理器数据传输系统
US9454486B2 (en) 2013-07-12 2016-09-27 Apple Inc. Cache pre-fetch merge in pending request buffer
EP3028163A4 (en) * 2013-07-31 2017-07-12 Intel Corporation A method, apparatus and system for performing management component transport protocol (mctp) communications with a universal serial bus (usb) device
CN105793832B (zh) 2014-09-18 2018-12-18 上海兆芯集成电路有限公司 处理器及其操作方法、以及计算机可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201032129A (en) * 2008-10-30 2010-09-01 Intel Corp Technique for promoting efficient instruction fusion
US20140052917A1 (en) * 2012-05-10 2014-02-20 Oracle International Corporation Using a shared last-level tlb to reduce address-translation latency
US20140189305A1 (en) * 2012-12-31 2014-07-03 Brian J. Hickmann Redundant execution for reliability in a super fma alu

Also Published As

Publication number Publication date
WO2016042354A1 (en) 2016-03-24
US9911508B2 (en) 2018-03-06
WO2016042353A1 (en) 2016-03-24
TWI578327B (zh) 2017-04-11
TW201618117A (zh) 2016-05-16
TW201614503A (en) 2016-04-16
US20160283376A1 (en) 2016-09-29
CN105793833B (zh) 2019-08-06
CN105793833A (zh) 2016-07-20
CN105793832B (zh) 2018-12-18
CN105793832A (zh) 2016-07-20
US20160293273A1 (en) 2016-10-06
US9892803B2 (en) 2018-02-13

Similar Documents

Publication Publication Date Title
TWI571739B (zh) 管理快取記憶體合倂請求之處理器及其操作方法
US9129071B2 (en) Coherence controller slot architecture allowing zero latency write commit
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
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
US5893921A (en) Method for maintaining memory coherency in a computer system having a cache utilizing snoop address injection during a read transaction by a dual memory bus controller
CN106897230B (zh) 用于处理原子更新操作的装置和方法
EP2645237B1 (en) Deadlock/livelock resolution using service processor
US11321248B2 (en) Multiple-requestor memory access pipeline and arbiter
US6446241B1 (en) Automated method for testing cache
US7496715B1 (en) Programmable cache management system and method
TWI407306B (zh) 快取記憶體系統及其存取方法與電腦程式產品
US11899607B2 (en) Sending a request to agents coupled to an interconnect
US20220197506A1 (en) Data placement with packet metadata
US8108624B2 (en) Data cache with modified bit array
US20110320737A1 (en) Main Memory Operations In A Symmetric Multiprocessing Computer
US11561901B1 (en) Distribution of injected data among caches of a data processing system
US11822480B2 (en) Criticality-informed caching policies