TWI556161B - 用以實施監測寫入至一位址的指令之處理器、系統和方法 - Google Patents
用以實施監測寫入至一位址的指令之處理器、系統和方法 Download PDFInfo
- Publication number
- TWI556161B TWI556161B TW103133034A TW103133034A TWI556161B TW I556161 B TWI556161 B TW I556161B TW 103133034 A TW103133034 A TW 103133034A TW 103133034 A TW103133034 A TW 103133034A TW I556161 B TWI556161 B TW I556161B
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- core
- monitoring
- processor
- cache memory
- Prior art date
Links
Classifications
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本文中所述之實施例係關於處理器。具體而言,本文所述之實施例大體係關於可操作來執行監測寫入至一位址的指令之處理器。
半導體處理及邏輯設計的進展已容許可包括在處理器及其他積體電路裝置中的邏輯之量的增加。因此,許多處理器現在具有單片整合於單個積體電路或晶粒上的多個至許多核心。多個核心通常有助於允許多個軟體執行緒或其他工作負荷被並行地執行,此狀況通常有助於提高執行通量。
此類多核心處理器中的一挑戰在於對用來自記憶體快取資料及/或指令的快取記憶體具有更多需求。首先,傾向於對用以存取此類快取記憶體中之資料的較高互連頻寬存在日益增加的需求。幫助增加通向快取記憶體之互連頻寬的一種技術涉及使用分散式快取記憶體。分散式
快取記憶體可包括多個實體上單獨的或分散的快取記憶體片或其他快取記憶體部分。此分散式快取記憶體可允許經由共享互連對快取記憶體之不同分散部分進行並行存取。
此類多核心處理器中之另一挑戰為提供相對於共享記憶體之執行緒同步的能力。作業系統通常實施閒置迴路來處置相對於共享記憶體之執行緒同步。例如,可存在使用一組記憶體位置的若干繁忙迴路。第一執行緒可在一迴路中等待且輪詢一對應記憶體位置。藉由實例,記憶體位置可表示第一執行緒之工作隊列,且第一執行緒可輪詢該工作隊列以判定是否存在要執行的可利用的工作。在共享記憶體組態中,退出繁忙迴路通常由於與記憶體位置相關聯的狀態改變而發生。此等狀態改變通常由藉由另一組件(例如,另一執行緒或核心)進行的對記憶體位置之寫入觸發。例如,另一執行緒或核心可在記憶體位置處寫入至工作隊列以提供將由第一執行緒執行的工作。
某些處理器(例如,可商購自Intel Corporation(Santa Clara,California)的該等處理器)能夠使用MONITOR指令及MWAIT指令來達成相對於共享記憶體之執行緒同步。硬體執行緒或其他邏輯處理器可使用MONITOR指令來建立將要由監測單元監測的線性位址範圍,且準備好或啟動監測單元。位址可藉由通用暫存器提供。位址範圍通常為回寫快取類型。監測單元將監測且偵測儲存/寫入至位址範圍內之位址,該等儲存/寫入將觸發監測單元。
MWAIT指令在程式順序中可在MONITOR指令之後,且可充當用以允許硬體執行緒或其他邏輯處理器停止指令執行並進入實施相依狀態的提示。例如,邏輯處理器可進入降低功率消耗狀態。邏輯處理器可保持在該狀態中,直至偵測到與MONITOR指令相關聯的一組限定事件中一者為止。寫入/儲存至由先前MONITOR指令準備好的位址範圍中之位址為一個此類限定事件。在此類情況下,邏輯處理器可退出該狀態且以程式順序中在MWAIT指令之後的指令重新開始執行。
依據本發明之一實例例,係特地提出一種處理器,其包含:一快取記憶體側位址監測單元,其對應於一分散式快取記憶體之一第一快取記憶體部分,且具有小於該處理器的邏輯處理器之一總數目的快取記憶體側位址監測儲存位置之一總數目,每一快取記憶體側位址監測儲存位置用以儲存要被監測之一位址;一核心側位址監測單元,其對應於一第一核心,且具有與該第一核心的一或多個邏輯處理器之一數目相同的核心側位址監測儲存位置之一數目,每一核心側位址監測儲存位置用以儲存要被監測之一位址及用於該第一核心之一不同的對應邏輯處理器之一監測狀態;以及一快取記憶體側位址監測儲存溢位單元,其對應於該第一快取記憶體部分,該快取記憶體側位址監測儲存溢位單元用以在沒有未使用的快取記憶體側位址監測儲存位置可利用來儲存要被監測之一額外位址時,
實行一位址監測儲存溢位策略。
100、900、1414、1416‧‧‧處理器
102-1‧‧‧核心1
102-0‧‧‧核心0
102-2‧‧‧核心2
102-3‧‧‧核心3
221-1‧‧‧第一核心側位址監測儲存位置
102-4‧‧‧核心4
102-5‧‧‧核心5
221-2‧‧‧第二核心側位址監測儲存位置
102-6‧‧‧核心6
102-7‧‧‧核心7
222-1‧‧‧位址/所指示監測位址/監測位址
104-0~104-7‧‧‧核心介面(I/F)單元
106-0~106-7‧‧‧快取記憶體控制單元
222-2‧‧‧位址
108-0~108-7‧‧‧快取記憶體部分
224-1‧‧‧監測狀態
110-1‧‧‧第一快取記憶體同調性知曉記憶體控制器
224-2‧‧‧監測狀態
226‧‧‧快取記憶體側位址監測單元
110-2‧‧‧第二快取記憶體同調性知曉記憶體控制器
228-1‧‧‧第一快取記憶體側位址監測儲存位置
112、212‧‧‧互連
202、902A、902N‧‧‧核心
228-N‧‧‧第N快取記憶體側位址監測儲存位置
204‧‧‧核心介面單元
206‧‧‧快取記憶體部分控制單元
230-1、230-N‧‧‧位置
208‧‧‧快取記憶體部分
234‧‧‧核心側觸發單元
216‧‧‧快取記憶體代理
236‧‧‧快取記憶體側儲存溢位單元
218-1‧‧‧第一硬體執行緒/硬體執行緒/第一執行緒
340‧‧‧閒置狀態
218-2‧‧‧第二硬體執行緒/硬體執行緒
341‧‧‧臆測狀態
342‧‧‧等待觸發狀態
220‧‧‧核心側位址監測單元/第一核心側位址監測單元
343、344、345、346‧‧‧變遷
347‧‧‧監測有限狀態機
428‧‧‧快取記憶體側位址監測儲存位置
740‧‧‧解碼單元
750‧‧‧執行引擎單元
430‧‧‧將要監測之位址
752‧‧‧重新命名/分配器單元
432‧‧‧結構/核心遮罩結構
754‧‧‧引退(retirement)單元
460‧‧‧溢位避免邏輯
772‧‧‧資料TLB單元
462‧‧‧監測請求
774‧‧‧資料快取記憶體單元
464‧‧‧快取記憶體側位址監測儲存位置重新使用單元
770‧‧‧記憶體單元
790‧‧‧核心/處理器核心
570‧‧‧方法
800‧‧‧指令解碼器
571~577‧‧‧方塊
802‧‧‧晶粒上互連網路
680‧‧‧溢位結構
804‧‧‧2階(L2)快取記憶體局域子集/L2快取記憶體子集
700‧‧‧處理器管線/管線
702‧‧‧擷取級段
806‧‧‧L1快取記憶體/純量單元
704‧‧‧長度解碼級段
806A‧‧‧L1資料快取記憶體
710‧‧‧重新命名級段
808‧‧‧純量單元
712‧‧‧排程級段
810‧‧‧向量單元
714‧‧‧暫存器讀取/記憶體讀取級段
812‧‧‧純量暫存器
814‧‧‧向量暫存器
722‧‧‧異常處置級段
820‧‧‧拌和單元
724‧‧‧確認級段
822A、822B‧‧‧數值轉換單元
730‧‧‧前端單元
824‧‧‧複製單元
732‧‧‧分支預測單元
826‧‧‧寫入遮罩暫存器
734‧‧‧指令快取記憶體單元/資料快取記憶體單元
828‧‧‧寬度為16之ALU
906‧‧‧共享快取記憶體單元
910‧‧‧系統代理/系統代理單元
1138‧‧‧共處理器
912‧‧‧環式互連單元
1139‧‧‧高效能介面
914‧‧‧整合型記憶體控制器單元
1150‧‧‧點對點互連/點對點(P-P)介面
916‧‧‧匯流排控制器單元
1152‧‧‧P-P介面
1000、1200‧‧‧系統
1154‧‧‧P-P介面
1010、1015‧‧‧處理器/實體資源
1170‧‧‧第一處理器/處理器
1020‧‧‧控制器集線器
1172、1182‧‧‧整合型記憶體控制器(IMC)單元/1MC/整合型記憶體及I/O控制邏輯/CL/控制邏輯
1040‧‧‧記憶體
1045‧‧‧共處理器
1050‧‧‧輸入/輸出集線器(IOH)
1060‧‧‧輸入/輸出(I/O)裝置
1176‧‧‧點對點(P-P)介面/點對點介面電路
1100‧‧‧系統/多處理器系統
1114‧‧‧I/O裝置
1178‧‧‧點對點(P-P)介面/P-P介面電路
1115‧‧‧額外處理器
1116‧‧‧第一匯流排
1180‧‧‧第二處理器/處理器
1118‧‧‧匯流排橋接器
1186‧‧‧P-P介面/點對點介面電路
1120‧‧‧第二匯流排
1122‧‧‧鍵盤及/或滑鼠
1188‧‧‧P-P介面/P-P介面電路
1124‧‧‧音訊I/O
1190‧‧‧晶片組
1127‧‧‧通訊裝置
1194‧‧‧點對點介面電路
1128‧‧‧儲存單元
1196‧‧‧介面
1130‧‧‧指令/碼及資料
1198‧‧‧點對點介面電路
1132、1134‧‧‧記憶體
1214‧‧‧I/O裝置
1215‧‧‧舊式I/O裝置
1340‧‧‧顯示單元
1300‧‧‧SoC
1402‧‧‧高階語言
1302‧‧‧互連單元
1404‧‧‧x86編譯器
1310‧‧‧應用處理器
1406‧‧‧x86二進位碼
1320‧‧‧共處理器
1408‧‧‧指令集編譯器
1330‧‧‧靜態隨機存取記憶體(SRAM)單元
1410‧‧‧指令集二進位碼
1412‧‧‧指令轉換器
1332‧‧‧直接記憶體存取(DMA)單元
可藉由參考以下描述及用來例示實施例的伴隨圖式來最佳地理解本發明。在圖式中:
圖1係處理器之一實施例的方塊圖。
圖2係快取記憶體代理之一實施例的方塊圖。
圖3係例示監測有限狀態機之一實施例之狀態的圖表。
圖4係溢位避免邏輯之一實施例的方塊圖,該溢位避免邏輯可操作來在監測請求指示相同位址時將單個快取記憶體側位址監測儲存位置重新使用於多個硬體執行緒及/或核心。
圖5係方法之一實施例的方塊流程圖,該方法藉由檢查陳舊/過期快取記憶體側位址監測儲存位置來選擇性地試圖避免溢位模式,且在未發現此類陳舊/過期儲存位置時進入溢位模式。
圖6係溢位結構之一實施例的方塊圖。
圖7A係例示根據本發明之實施例之如下兩者的方塊圖:示範性循序管線,以及示範性暫存器重新命名亂序發佈/執行管線。
圖7B係例示如下兩者之方塊圖:循序架構核心的示範性實施例,以及示範性暫存器重新命名亂序發佈/執行架構核心,上述兩者將包括於根據本發明之實施例的處理器中。
圖8A係根據本發明之實施例的單個處理器核心及其至晶粒上互連網路的連接以及其2階(L2)快取記憶體局域子集的方塊圖。
圖8B係根據本發明之實施例的圖8A中之處理器核心之部分的展開圖。
圖9係根據本發明之實施例之處理器的方塊圖,該處理器可具有一個以上核心,可具有整合型記憶體控制器,且可具有整合型圖形元件(graphics)。
圖10所展示為根據本發明之一實施例之系統的方塊圖。
圖11所展示為根據本發明之一實施例之第一更特定的示範性系統的方塊圖。
圖12所展示為根據本發明之一實施例之第二更特定的示範性系統的方塊圖。
圖13所展示為根據本發明之一實施例之SoC(系統單晶片)的方塊圖。
圖14係對照根據本發明之實施例之軟體指令轉換器的用途之方塊圖,該轉換器係用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。
本文中所公開為用以可縮放地實施監測寫入至一位址的指令之方法、設備及系統。在以下描述中,闡述許多特定細節(例如,特定指令、指令功能性、處理器組態、
微架構細節、操作序列等)。然而,可在無此等特定細節的情況下實踐實施例。在其他情況下,並未詳細地展示熟知的電路、結構及技術以避免混淆對描述之理解。
圖1係處理器100之一實施例的方塊圖。處理器表示實體處理器、積體電路或晶粒。在一些實施例中,處理器可為通用處理器(例如,桌上型電腦、膝上型電腦及類似電腦中所使用類型的通用微處理器)。或者,處理器可為專用處理器。適合的專用處理器之實例包括(但不限於)網路處理器、通訊處理器、密碼處理器、圖形處理器、共處理器、嵌入式處理器、數位信號處理器(DSP)及控制器(例如,微控制器),僅舉數例。處理器可為以下各項中任一者:各種複雜指令集統計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種極長指令字(VLIW)處理器、上述各者之各種混合,或完全其他類型之處理器。
處理器為具有多個處理器核心102的多核心處理器。在所例示的示例性實施例中,處理器具有八個核心,其中包括核心0 102-0至核心7 102-7(共同為核心102)。但是在其他實施例中,處理器可具有任何其他所要數目之核心,例如,自兩個至數百個,通常自兩個至十的數量級個(例如,約五個至約一百個)。核心中每一者可具有單個硬體執行緒、多個硬體執行緒,或一些核心可具有單個硬體執行緒而其他核心可具有多個硬體執行緒。例如,在一示例性實施例中,核心中每一者可具有至少兩個硬體執行緒,但本發明之範疇不限於此。
「核心」一詞通常涉及位於能夠維持獨立架構狀態(例如,執行狀態)的積體電路上之邏輯,其中獨立維持的架構狀態與專用執行資源相關聯。相反,「硬體執行緒」一詞通常涉及位於能夠維持獨立架構狀態的積體電路上之邏輯,其中獨立維持的架構狀態共享對該架構狀態使用的執行資源之存取。當架構狀態共享某些資源,且其他資源專用於該架構狀態時,核心與硬體執行緒之間的線不明顯。然而,核心與硬體執行緒通常由作業系統視為單獨的處理元件或邏輯處理器。作業系統通常能夠單獨排程核心、硬體執行緒或其他邏輯處理器或處理元件中每一者上的操作。換言之,在一實施例中,處理元件或邏輯處理器可表示能夠與碼(諸如軟體執行緒、作業系統、應用程式或無論執行資源為專用或共享的其他碼,或上述各者之組合)獨立相關聯的任何晶粒上處理器邏輯。除硬體執行緒及核心之外,邏輯處理器或處理元件之其他實例包括(但不限於)執行緒單元、執行緒槽、處理單元、上下文及/或能夠保持狀態且與碼獨立相關聯的任何其他邏輯。
核心102藉由一或多個晶粒上互連112耦接在一起。互連可用來在核心之間傳遞訊息及資料。將瞭解,許多不同類型之互連適合。在一實施例中,可使用環形互連。在替代性實施例中,可使用網狀、環面、縱橫式、超立方、其他互連結構,或此類互連之混合或組合。
每一核心可包括局域指令及/或資料儲存器,諸如,一或多個較低階快取記憶體(圖中未示)。例如,每一核
心可包括最接近於核心的對應最低階或1階(L1)快取記憶體,且選擇性地包括其次最接近於核心的中階或2階(L2)快取記憶體。因為一或多個較低階快取記憶體在實體上及/或邏輯上比較高階快取記憶體(例如,以下所論述之分散式快取記憶體108)更接近於該等較低階快取記憶體的對應核心,所以該等較低階快取記憶體被稱為低階。一或多階快取記憶體中每一者可快取資料及/或指令。
核心102可亦共享分散式高階快取記憶體108。分散式高階快取記憶體可表示實體上分散的記憶體或快取記憶體之部分。在所例示之示例性實施例中,分散式快取記憶體包括多個(例如,在此情況下八個)實體上分散的快取記憶體部分108-0至108-7(共同為快取記憶體部分108),該等部分通常被稱為快取記憶體片。在其他實施例中,分散式快取記憶體可包括更少或更多快取記憶體部分(例如,與處理器之核心之數目相同的分散式快取記憶體部分之數目)。分散式快取記憶體部分可由不同核心及/或執行緒共享。如所示,每一快取記憶體部分可更與具有個別核心(例如,與個別核心共同定位)之晶粒相關聯,且/或可選擇性地更接近地實體上位於該晶粒上。例如,與其他核心相比,快取記憶體部分108-0可更與具有核心0 102-0(例如,與核心0 102-0共同定位)之晶粒相關聯,且/或更接近地實體上位於該晶粒上。
在一些實施例中,每一快取記憶體部分可對應於或映射至記憶體位址之互相排他或不相重疊的範圍。例
如,快取記憶體部分108-0可具有相關聯的第一組位址,且快取記憶體部分108-1可具有相關聯的不同的第二組位址,等等。可以各種不同方式(例如,使用不同散列函數或其他演算法)在分散式快取記憶體之不同快取記憶體部分之間劃分或分攤位址範圍。在一些實施例中,較高階共享快取記憶體可表示可操作來儲存資料及/或指令的末階快取記憶體(LLC),但此並非必要。在一些實施例中,分散式快取記憶體(例如,LLC)可包括快取記憶體階層中之所有較低階快取記憶體,或可包括快取記憶體階層中之緊次於最高階快取記憶體的快取記憶體(例如,L2快取記憶體),但此並非必要。在一些實施例中,核心可最初針對資料及/或指令檢查一或多個較低階快取記憶體。若所尋求資料及/或指令未發現於一或多個較低階快取記憶體中,則核心可隨後繼續檢查共享分散式高階快取記憶體。
如所示,在一些實施例中,核心介面(I/F)單元104可與每一對應核心102耦接。每一核心介面單元可亦與互連112耦接。每一核心介面單元可操作來充當對應核心與其他核心之間以及對應核心與分散式快取記憶體部分之間的媒介。如進一步所示,在一些實施例中,對應快取記憶體控制單元106可與每一快取記憶體片或其他部分108耦接。在一些實施例中,每一快取記憶體控制單元可大致實體上與對應快取記憶體片及對應核心共同定位。每一快取記憶體控制單元可與互連112耦接。每一快取記憶體控制單元可操作來控制且幫助為對應分散式快取記憶體部分提供快取記
憶體同調性。每一對對應核心介面單元104及快取記憶體控制單元106可共同表示可操作來將對應核心及對應快取記憶體部分介接至互連及/或介接至其他核心的核心-快取記憶體部分介面單元。核心介面單元及快取記憶體控制單元可以硬體(例如,積體電路、電路、電晶體等)、韌體(例如,儲存於非依電性記憶體中之指令)、軟體或其組合來實施。
處理器亦包括用以耦接處理器與第一記憶體(圖中未示)的第一快取記憶體同調性知曉記憶體控制器110-1,及用以耦接處理器與第二記憶體(圖中未示)的第二快取記憶體同調性知曉記憶體控制器110-2。在一些實施例中,每一快取記憶體同調性知曉記憶體控制器可包括可操作來執行快取記憶體同調性的本地代理邏輯及可操作來與記憶體相互作用的第二記憶體控制器邏輯。為簡單起見,在本描述中,此本地代理及記憶體控制器功能性將被稱為快取記憶體同調性知曉記憶體控制器。其他實施例可包括更少或更多快取記憶體同調性知曉記憶體控制器。此外,雖然在所例示之實施例中,快取記憶體同調性知曉記憶體控制器在晶粒上或在處理器上,但在其他實施例中該等快取記憶體同調性知曉記憶體控制器可相反遠離晶粒或遠離處理器(例如,作為一或多個晶片組組件)。
將瞭解,處理器可亦包括並非理解本文之各種實施例所必需的其他組件。例如,處理器可選擇性地包括通向輸入及/或輸出裝置的介面、系統介面、插座對插座互連或類似者中之一或多者。
如以上所提及,某些處理器(例如,可商購自Intel Corporation的該等處理器)能夠使用MONITOR指令及MWAIT指令來達成相對於共享記憶體之執行緒同步。硬體執行緒或其他邏輯處理器可使用MONITOR指令來建立將要由監測單元監測的線性位址範圍,且準備好或啟動監測單元。位址可藉由通用暫存器(例如,EAX)提供。位址範圍通常為回寫快取類型。監測單元將監測且偵測儲存/寫入至位址範圍內之位址,該等儲存/寫入將觸發監測單元。其他通用暫存器(例如,ECX及EDX)可用來將其他資訊通訊至監測單元。MWAIT指令在程式順序中可在MONITOR指令之後,且可充當用以允許硬體執行緒或其他邏輯處理器停止指令執行並進入實施相依狀態的提示。例如,邏輯處理器可進入休眠狀態、功率消耗狀態或其他降低的功率消耗狀態。邏輯處理器可保持在該狀態中,直至偵測到與MONITOR指令相關聯的一組限定事件中一者為止。寫入/儲存至由先前MONITOR指令準備好的位址範圍中之位址為一個此類限定事件。在此類情況下,邏輯處理器可退出該狀態且使用程式順序中在MWAIT指令之後的指令重新開始執行。通用暫存器(例如,EAX及ECX)可用來將其他資訊通訊至監測單元(例如,有關要進入的狀態之資訊)。
圖2係快取記憶體代理216之一實施例的方塊圖。在一些實施例中,快取記憶體代理可使用於圖1之處理器中。然而,將瞭解,圖2之快取記憶體代理可與相較於圖1之處理器的不同處理器一起使用。
快取記憶體代理216包括核心202及快取記憶體部分208。在一些實施例中,核心可為多核心處理器之多個核心之一。在一些實施例中,快取記憶體部分可為分散式快取記憶體(例如,分散式LLC)之多個快取記憶體片或其他快取記憶體部分之一。快取記憶體代理亦包括核心介面單元204及快取記憶體部分控制單元206。核心經由核心介面單元與互連212耦接。快取記憶體部分經由快取記憶體部分控制單元與互連耦接。核心介面單元耦接在核心與快取記憶體部分控制單元之間。快取記憶體部分控制單元耦接在核心介面與快取記憶體部分之間。核心、快取記憶體部分、核心介面單元及快取記憶體部分控制單元可選擇性地類似於圖1之對應地命名的組件,或與該等對應地命名的組件相同。在此特定實例中,核心為包括第一硬體執行緒218-1及第二硬體執行緒218-2的多執行緒核心,但本發明之範疇不限於此。在其他實施例中,核可為單執行緒或可具有多於兩個硬體執行緒。
快取記憶體代理216包括可操作來實施監測指令(例如,MONITOR指令)的監測機構,該監測指令用來監測寫入至一或多個位址(例如,由MONITOR指令指示的位址範圍)。機構可使用或利用現有快取記憶體同調性機構(例如,可利用藉由快取記憶體同調性機構傳達的意圖寫入至一位址的通訊)。在所例示之實施例中,監測機構包括快取記憶體側位址監測單元226、核心側位址監測單元220、核心側觸發單元234及快取記憶體側儲存溢位單元236。如本
文所使用,「核心側」一詞涉及在互連212之與核心202相同的側上且/或安置在核心與互連之間且/或相較於快取記憶體部分核心在邏輯上更接近於核心。同樣地,「快取記憶體側」一詞涉及在互連212之與快取記憶體部分208相同的側上且/或安置在快取記憶體部分與互連之間且/或相較於核心在邏輯上更接近於快取記憶體部分。
在所例示之實施例中,快取記憶體側位址監測單元226及快取記憶體側儲存溢位單元236兩者實施於快取記憶體部分控制單元206中,但此並非必要。在其他實施例中,此等單元中之一或多者可實施為(例如,與快取記憶體控制單元及/或與快取記憶體部分耦接之)單獨的快取記憶體側組件。類似地,在所例示之實施例中,核心側位址監測單元220及核心側觸發單元234兩者實施於核心介面單元204中,但此並非必要。在其他實施例中,此等單元中之一或多者可實施為(例如,與核心介面單元及/或與核心耦接之)單獨的核心側組件。
快取記憶體側位址監測單元226對應於快取記憶體部分208,該快取記憶體部分為分散式快取記憶體之一片或其他部分。快取記憶體側位址監測單元具有多個不同的快取記憶體側位址監測儲存位置228。如所示,每一快取記憶體側位址監測儲存位置可用來儲存將要監測寫入之位址230。在一些實施例中,每一快取記憶體側位址監測儲存位置可亦儲存與位址有關的核心之指示(例如,核心識別符、具有對應於每一不同核心之不同位元的核心遮罩等)。藉由
實例,此等儲存位置可表示硬體實施的表中之不同項。如所示,在所例示之實施例中,可存在第一快取記憶體側位址監測儲存位置228-1至第N快取記憶體側位址監測儲存位置228-N,其中N可為適合於特定實行方案的數目。
在一些實施例中,快取記憶體側位址監測單元中對應於快取記憶體部分的快取記憶體側位址監測儲存位置之總數目可小於處理器及/或插座之硬體執行緒(或其他邏輯處理器)之總數目,處理器實施於該插座中。在一些實施例中,每一硬體執行緒(或其他邏輯處理器)可操作來使用監測指令(例如,MONITOR指令)以監測單個位址或單個範圍之位址。在一些情況下,在使用此監測指令之後,可使硬體執行緒休眠或使該硬體執行緒進入另一降低功率消耗狀態中。一種可能的方法將為每一硬體執行緒(或其他邏輯處理器)提供足夠的快取記憶體側位址監測儲存位置228以儲存將要監測之位址。然而,當使用分散式快取記憶體時,每一位址可散列或以其他方式映射至僅單個對應快取記憶體片或其他快取記憶體部分。例如,位址之散列可根據特定散列函數來選擇對應於該位址的單個對應快取記憶體片。因此,當使用此分散式快取記憶體時,存在以下可能性(即使通常為極小的可能性),將要針對所有硬體執行緒(或其他邏輯處理器)監測的所有位址全部可散列或以其他方式映射至相同的單個快取記憶體片。
為了允許此可能性,一種可能的方法將為每一快取記憶體部分提供等於處理器及/或插座之硬體執行緒(或
其他邏輯處理器)之總數目的快取記憶體側位址監測儲存位置228之數目。例如,在每一核心具有兩個硬體執行緒之八核心處理器中,可為八個快取記憶體片中每一者提供總共十六個快取記憶體側位址監測儲存位置(亦即,核心之數目乘以每個核心之執行緒之數目)。藉由實例,可包括具有等於硬體執行緒之總數目的項之數目的硬體實施的表。在一些情況下,每一儲存位置可具有關於對應硬體執行緒之固定對應或分配。此可允許每一硬體執行緒儲存將要監測之位址,且可允許所有此等位址或許可能映射至相同快取記憶體部分且將因此需要針對該快取記憶體部分局域儲存的可能性。此方法實質上為通常確實不太可能但迄今不可忽視的最壞情況情形而設計,因為若該情形偶然發生,則無方法可利用來處置該情形。
此方法之一缺點在於,當硬體執行緒(或其他邏輯處理器)之數目及/或快取記憶體部分之數目增加時,該方法傾向於相對不可縮放。增加硬體執行緒之數目使每一快取記憶體部分所需要的儲存位置之數目增加。此外,增加快取記憶體部分之數目涉及增添用於每一額外快取記憶體部分之額外的一組此類儲存位置。處理器可具有多於32個執行緒、36個執行緒、40個執行緒、56個執行緒、128個執行緒或256個執行緒,僅舉數例。吾人可容易地看出,當使用此類大量執行緒時,儲存器之量可變得相當大。儲存器之此類相當大的量傾向於增加處理器之製造成本、提供儲存器需要的晶粒上區域之量,及/或由儲存器引起的功率消
耗。
作為一替代性方法,在一些實施例中,快取記憶體側位址監測單元226中對應於快取記憶體部分208的快取記憶體側位址監測儲存位置228之總數目可小於處理器及/或插座之硬體執行緒(或其他邏輯處理器)之總數目。可存在相較於完全避免位址監測儲存溢位之可能性嚴格需要的數目的較少位址監測儲存位置。在一些實施例中,每一快取記憶體部分可具有與該快取記憶體部分相關聯的位址監測儲存位置之數目,該數目足以在大多數時間避免溢位但不足以在所有情況下完全防止此類溢位。在一些實施例中,每一快取記憶體部分的快取記憶體側位址監測儲存位置之總數目可為相對於處理器之硬體執行緒之總數目足夠的,使得溢位之可能性根據需要不超過約十萬分之一、約百萬分之一或約千萬分之一。在一些實施例中,處理器可具有多於約四十個硬體執行緒,且每一快取記憶體部分的快取記憶體側位址監測儲存位置之總數目可小於四十(例如,自約20個至約38個)。在一些實施例中,處理器可具有多於五十個硬體執行緒,且每一快取記憶體部分的快取記憶體側位址監測儲存位置之總數目可小於約五十(例如,自約20個至約45個,或自約25個至約40個,或自約30個至約40個)。在一些實施例中,代替將快取記憶體側位址監測儲存位置指定或分配給特定硬體執行緒,儲存位置可並非對應於任何特定硬體執行緒,而是任何儲存位置可由任何硬體執行緒使用。有利地,使用快取記憶體側位址監測單元中對應
於快取記憶體部分的快取記憶體側位址監測儲存位置之小於處理器及/或插座之硬體執行緒(或其他邏輯處理器)之總數目的總數目可潛在地有助於提供用以實施監測指令(例如,MONITOR指令)的更可縮放解決方案。然而,將瞭解,本文中所揭示之實施例具有實用性而不管硬體執行緒及/或核心之數目且/或無論儲存器之總數目為大或小。
再次參考圖2,快取記憶體代理包括核心側位址監測單元220,該核心側位址監測單元對應於核心202。核心側位址監測單元具有與對應核心之一或多個硬體執行緒之數目相同的核心側位址監測儲存位置之數目。在所例示之實施例中,第一核心側位址監測儲存位置221-1具有關於第一硬體執行緒218-1的固定對應,且第二核心側位址監測儲存位置221-2具有關於第二硬體執行緒218-2的固定對應。在其他實施例中,可使用其他數目之執行緒及儲存位置。每一核心側位址監測儲存位置可操作來儲存將要針對對應核心之對應硬體執行緒218-1、218-2監測的位址222-1、222-2。當存在此固定對應時,將位址儲存在儲存位置中可使該位址與硬體對應的硬體執行緒相關聯。在其他實施例中,若儲存位置與硬體執行緒之間不存在固定對應,則每一儲存位置可用來儲存對應於將要監測的位址之硬體執行緒之指示(例如,硬體執行緒識別符)。在一些實施例中,每一核心側位址監測儲存位置亦可操作來儲存用於對應核心之對應硬體執行緒218-1、218-2之監測狀態224-1、224-2。在一些實施例中,每一監測狀態可表示監測
有限狀態機(FSM)。在一些實施例中,在MONITOR指令之情況下,監測狀態可為閒置狀態、臆測(例如,監測負載)狀態及觸發就緒(例如,等待觸發(wait2trigger))狀態中任一者,但本發明之範疇不限於此。
在一些實施例中,快取記憶體側位址監測單元226及核心側位址監測單元220可合作或一起工作來監測寫入至一或多個位址(例如,位址範圍中由MONITOR指令指示的一位址)。為進一步例示某些概念,考慮監測機構可如何執行MONITOR指令及MWAIT指令之一實例。第一硬體執行緒218-1可執行MONITOR指令。MONITOR指令可指示將要監測寫入之一位址。第一硬體執行緒可發佈對所指示監測位址的對應MONITOR的請求。MONITOR請求可使第一核心側位址監測單元220將所指示監測位址222-1儲存於第一核心側位址監測儲存位置221-1中。監測狀態224-1可經設定在臆測或監測負載狀態處。MONITOR請求可經由互連212路由至假定儲存對應於所指示監測位址的資料之適當分散式快取記憶體部分208。請注意,取決於特定的所指示監測位址,該適當分散式快取記憶體部分基於散列函數或用於映射之其他演算法可為分散式快取記憶體部分中任一者。快取記憶體側位址監測單元可將所指示監測位址儲存於快取記憶體側位址監測儲存位置230(例如,位置230-1至230-N中任何可利用的一個)中。識別具有第一硬體執行緒218-1之核心202的核心識別符可亦作為核心識別符(ID)232儲存於快取記憶體側位址監測儲存位置230中。在一些實施
例中,核心識別符可為用以識別核心之一的一組位元。在其他實施例中,可選擇性地使用核心遮罩,以使單個儲存位置可由相同位址被監測的多個核心共享。
第一執行緒218-1可隨後執行MWAIT指令,該MWAIT指令可亦指示所監測位址。第一硬體執行緒可發佈用於所指示監測位址的對應MWAIT訊號。回應於MWAIT訊號,核心側位址監測單元220可將處於就緒狀態的監測狀態224-1設定為觸發狀態(例如,等待觸發狀態)。第一硬體執行緒可選擇性經置於不同狀態中,諸如,休眠狀態或其他降低的功率消耗狀態。代表性地,若第一執行緒將進入休眠則該執行緒可將其狀態儲存於上下文中,且隨後進入休眠。
隨後,當存在寫入至所指示監測位址之意圖(例如,讀取所有權請求、暗示所指示監測位址的監聽無效、與該位址相關聯的自共享狀態改變成獨佔狀態之狀態變遷等)時,快取記憶體側位址監測單元可偵測寫入至該位址之此意圖。該位址可匹配其儲存位置之一中的位址之一。可例如藉由儲存在快取記憶體側位址監測儲存位置中的核心識別符或核心遮罩來判定對應於儲存位置的一或多個核心。快取記憶體側位址監測單元可清除用來儲存所指示監測位址的快取記憶體側位址監測儲存位置。快取記憶體側位址監測單元可亦例如藉由將監聽無效發送至對應核心來以信號通知該對應核心。快取記憶體側位址監測單元可充當一類先進的篩選器以幫助選擇性地僅朝向對於監測該位
址已知的該一或多個核心導引寫入至一位址之意圖的通知(例如,藉由對所有權或監聽無效之請求)。此等通知可表示選擇性地提供至監測位址的核心之子集的「提示」。有利地,此可有助於避免通知並未監測位址之核心,此狀況可有助於避免假喚醒且/或減少互連上之流量。
在信號通知的核心處之核心側位址監測單元220可接收信號,且將訊號(例如,監聽無效)中所指示位址與該核心側位址監測單元之核心側位址監測儲存位置中的監測位址進行比較。可判定信號之位址匹配對應於第一硬體執行緒218-1的第一核心側監測位址儲存位置221-1中之監測位址222-1。核心側位址監測單元可知道對應於正監測之位址的第一硬體執行緒。核心側位址監測單元可以信號通知核心側觸發單元234已觀察到寫入至所監測位址的意圖。核心側位址監測單元可清除第一核心側位址監測儲存位置,且將監測狀態224-1改變成閒置。核心側觸發單元可操作來將觸發信號(例如,警報、通知或喚醒信號)提供至第一硬體執行緒。在此實施例中,核心側觸發單元在核心側,此可有助於簡化邏輯,但其可亦選擇性地提供於快取記憶體側。若第一硬體執行緒休眼,則可喚醒該第一硬體執行緒。
在一些實施例中,存在快取記憶體側位址監測儲存位置可溢位的可能性。例如,可在快取記憶體側位址監測單元處接收新監測請求,但所有快取記憶體側位址監測儲存位置可能當前處於使用中,使得不存在空的/可利用的快取記憶體側位址監測儲存位置來儲存新監測請求之位
址。如所示,在一些實施例中,快取記憶體側位址監測單元可與快取記憶體側位址監測儲存溢位單元236耦接,該快取記憶體側位址監測儲存溢位單元對應於快取記憶體部分。在一些實施例中,當不存在可利用來儲存新監測請求之位址的空的/可利用的/未使用的快取記憶體側位址監測儲存位置時,快取記憶體側位址監測儲存溢位單元可操作來實行或實施位址監測儲存溢位策略。
如所提及,在一些實施例中,核心側位址監測單元可具有與其對應核心中之硬體執行緒之數目相同的核心側位址監測儲存位置之數目。類似地,在一些實施例中,其他核心之核心側位址監測單元可具有與其對應核心中之硬體執行緒之數目相同的核心側位址監測儲存位置之數目。此等核心側位址監測儲存位置可共同表示與處理器之硬體執行緒(或其他邏輯處理器)之總數目同樣多的核心側位址監測儲存位置之一集合。有利地,甚至在存在快取記憶體側位址監測儲存位置之溢位時,核心側位址監測單元仍具有足夠的核心側位址監測儲存位置來儲存用於所有硬體執行緒(或其他邏輯處理器)之所有所監測位址。
圖3係例示監測有限狀態機(FSM)347之一實施例之狀態的圖表,該監測有限狀態機適合於實施MONITOR指令及MWAIT指令。在自執行執行緒接收用於位址之監測請求之後,監測FSM可進行自閒置狀態340至臆測狀態341之變遷343。在監測FSM處於臆測狀態中時,若用以儲存對應於該位址的資料之快取記憶體部分接收匹配該位址的寫
入請求,或若自執行執行緒提供監測清除請求,則監測FSM可進行回至閒置狀態340的變遷344。若自該相同執行執行緒提供另一監測請求,則監測FSM可進行返回臆測狀態341之變遷343,且若適當,則所監測位址可經調整。另一方面,在處於臆測狀態341中時,若自該執行執行緒提供MWAIT請求,則監測FSM可進行至等待觸發狀態342之變遷345。臆測狀態可有助於確保僅針對最近所監測位址發送監測喚醒事件,同時自接收監測請求之時間甚至在接收MWAIT請求之前追蹤位址。在監測FSM處於等待觸發狀態中時,若用以儲存對應於該位址的資料之快取記憶體部分接收匹配所監測位址之寫入請求,則可將監測喚醒事件發送至執行執行緒。另一方面,在監測FSM處於等待觸發狀態342中時,可自執行執行緒提供監測清除請求。在此情況下,可針對該執行執行緒抹除監測請求,且無監測喚醒事件需要被發送至執行執行緒,但在此兩種情況中之任一者下,監測FSM可進行回至閒置狀態340之變遷346。
圖4係溢位避免邏輯460之一實施例的方塊圖,該溢位避免邏輯可操作來在監測請求指示相同位址時將單個快取記憶體側位址監測儲存位置428重新使用於多個硬體執行緒及/或核心。邏輯包括快取記憶體側位址監測儲存位置重新使用單元464,該快取記憶體側位址監測儲存位置重新使用單元與快取記憶體側位址監測儲存位置428耦接。快取記憶體側位址監測儲存位置重新使用單元可自不同硬體執行緒及/或核心接收指示相同位址的監測請求462。一種
可能的方法將使此相同位址之不同複本儲存於不同的快取記憶體側位址監測儲存位置(例如,硬體實施的表中之不同項)中。然而,此可消耗多個(或在一些情況下許多)快取記憶體側位址監測儲存位置。
作為一替代性方法,在一些實施例中,單個快取記憶體側位址監測儲存位置428可用來儲存將要監測之位址430,且表示來自不同硬體執行緒之監測請求。在一些實施例中,能夠使多個核心與將要監測之位址相關聯的結構432亦儲存於快取記憶體側位址監測儲存位置428中。在一實例中,結構可包括核心遮罩結構432。核心遮罩可具有與處理器之核心之總數目相同的位元之數目,且核心遮罩之每一位元可具有關於不同核心之固定對應。根據一可能的慣例,每一位元可具有用以指示對應核心不具有用於位址之未決監測請求的第一值(例如,經清除為二進位0),或用以指示對應核心具有用於位址之未決監測請求的第二值(例如,經設定為二進位1)。相反慣例亦為可能的。用於對應核心之位元可經設定來指示已自用於儲存在快取記憶體側位址監測儲存位置中的位址之該核心接收監測請求,或當寫入至位址經觀察且向核心側邏輯報告時,該位元經清除。請注意,快取記憶體側位址監測儲存位置係由位址而非由執行緒識別符追蹤。有利地,以此方式,來自不同核心的用於相同位址之監測請求可隱縮至相同的單個快取記憶體側位址監測儲存位置中。儲存位置用於來自不同執行緒/核心之多個請求的此重新使用可有助於避免快取記憶
體側位址監測儲存位置溢位。
如以上所提及,在一些情況下溢出有限數目之快取記憶體側位址監測儲存位置為可能的。在一些實施例中,溢位模式或策略之集合可提供來允許監測機構甚至在溢位的情況下亦正確地操作。
圖5係方法570之一實施例的方塊流程圖,該方法藉由檢查陳舊/過期快取記憶體側位址監測儲存位置來選擇性地試圖避免溢位模式,並且在未發現此類陳舊/過期儲存位置時進入溢位模式。在一些實施例中,圖5之操作及/或方法可由圖1之處理器及/或圖2之快取記憶體代理執行且/或在該處理器及/或該快取記憶體代理內執行。本文針對圖1之處理器及/或圖2之快取記憶體代理所描述之組件、特徵及特定選擇性的細節亦任擇地適用於圖5之操作及/或方法。或者,圖5之操作及/或方法可由類似或不同處理器及/或快取記憶體代理執行且/或在該類似或不同處理器及/或快取記憶體代理內執行。此外,圖1之處理器及/或圖2之快取記憶體代理可執行與圖5之操作及/或方法相同、類似或不同的操作及/或方法。
方法選擇性地包括判定不存在可利用的/未使用的快取記憶體側位址監測儲存位置來處置接收到的監測請求,在方塊571處。例如,可在快取記憶體側位址監測單元(例如,快取記憶體側位址監測單元226)處接收監測請求,且快取記憶體側位址監測單元可判定不存在可利用的/未使用的快取記憶體側位址監測儲存位置來處置該監測請
求。例如,所有快取記憶體側位址監測儲存位置可目前儲存將要監測之位址。
方法選擇性地包括判定陳舊/過期快取記憶體側位址監測儲存位置是否存在,且可用來處置新接收到的監測請求,在方塊572處。在一些實施例中,快取記憶體側位址監測單元可選擇具有一位址的項且判定該項是否為陳舊的及/或過期的。藉由實例,陳舊/過期位址可表示仍然儲存在儲存位置中但目前不存在用於位址的任何有效未決監測請求的該位址。例如,可例如由於監測正經設定而未準備好而存在假監測請求的情況。可隨機地、基於項之壽命、基於有效性之預測或以其他方式選擇項。在一些實施例中,為了檢查儲存位置是否為陳舊的/過期的,快取記憶體側位址監測單元可將用於相關聯的地址之監聽請求發送至經指示來具有用於該位址之監測請求(例如,基於儲存於儲存位置中之核心識別符或核心遮罩判定的)的一或多個核心。用於接收監聽請求的核心之一或多個核心側位址監測單元可檢查其對應核心側位址監測儲存位置以判定是否儲存位址。隨後,一或多個核心側位址監測單元中每一者可將指示位址是否仍有效(例如,仍對應於來自對應核心之有效監測請求)的回應發送回快取記憶體側位址監測單元。若來自一或多個核心側位址監測單元之回應指示用於該位址之任何此類有效仍未決監測請求,則可判定位址及/或儲存位置並非陳舊的/過期的。否則,若無核心側位址監測單元報告用於該位址之有效仍未決監測請求,則可判定位址及/
或儲存位置為陳舊的/過期的。在一些實施例中,可使用此方法檢查僅單個儲存位置及/或位址。或者,可使用此方法檢查多個儲存位置及/或位址。
再次參考圖5,若在方塊572處判定存在可用來處置新接收到的監測請求的此陳舊/過期快取記憶體側位址監測儲存位置(亦即,「是」為方塊572處之判定),則方法可選擇性地前進至方塊573。在方塊573處,陳舊/過期快取記憶體側位址監測儲存位置可選擇性地用來處置新接收到的監測請求。有利地,在此情況下,可藉由利用陳舊/過期儲存位置在此刻避免溢位模式。
或者,若在方塊572處判定不存在此陳舊/過期快取記憶體側位址監測儲存位置(亦即,「否」為方塊572處之判定),則方法可前進至方塊574。在方塊574處,方法可進入溢位模式。進入溢位模式可包括實行或實施溢位策略。在溢位模式中,效能可稍微降級。然而,通常溢位模式僅需要極少地實施且通常僅持續相對短的時段,直至減輕溢位條件為止。
作為一溢位策略,在方塊575處,方法可包括迫使每一讀取異動使用共享快取記憶體同調性狀態。概念性地,此可被認為是將每一讀取異動視為監測請求。在進入溢位模式之後,快取記憶體側位址監測單元不再能夠以專用儲存器追蹤監測請求/位址。因此,無核心可經允許具有快取記憶體線之獨佔複本。例如,可以共享狀態回應處置由快取記憶體側位址監測單元接收到的任何讀取操作。迫
使此類讀取異動使用共享狀態可有助於確保寫入至對應位址之意圖將使監聽或廣播被提供至可具有所快取位址之所有核心。
作為另一溢位策略,在方塊576處,方法包括將任何無效請求發送至或許可能具有未決監測請求的所有核心。在一些實施例中,此可包括在(例如,藉由讀取無效自有請求、監聽無效請求或類似者之偵測)偵測任何無效請求時,使處理器及/或在相同插座內的或許可能具有未決監測請求的所有核心監聽無效。在進入溢位模式之後,快取記憶體側位址監測單元不再能夠以專用儲存器追蹤監測請求/位址。因此,應告知或許可能具有未決監測請求的所有核心每一無效請求。監聽可到達所有此類核心之核心側位址監測單元,且在對於存在用於相關聯的位址之有效未決監測請求的任何核心適當時提供監測觸發。
值得考慮的是,並非嚴格要求通知處理器之所有核心,而是僅通知或許可能具有未決監測請求的所有核心。在一些實施例中,一結構可選擇性地用來追蹤在溢位發生時或許可能具有未決監測請求的所有核心。此結構之一實例為選擇性的溢位結構。溢位結構可指示在溢位發生時哪些核心或許可能具有未決監測請求。在一實例中,溢位結構可具有與處理器之核心之總數目相同的位元之數目,每一位元可具有關於不同的對應核心之固定對應。根據一可能的慣例,每一位元可具有用以指示當溢位發生時對應核心或許可能具有未決監測請求的第一值(例如,經設
定為二進位一),或可具有用以指示當溢位發生時對應核心不可能具有未決監測請求的第二值(例如,經清除為二進位零)。
在一實施例中,溢位結構獨自可反映在溢位發生時或許可能具有未決監測請求的所有核心。例如,當溢位發生時,溢位結構可經修改以反應對應於目前儲存在快取記憶體側位址監測儲存位置中之任何一或多個位址的所有核心。在另一實施例中,溢位結構結合快取記憶體側位址監測儲存位置可反映在溢位發生時或許可能具有未決監測請求的所有核心。例如,當溢位發生時,每次快取記憶體側位址監測儲存位置由新接收到的監測請求重寫或消耗時,與重寫或消耗的位址相關聯的核心可反映在溢位結構中。亦即,每次儲存元件經重寫以擷取有關或許可能具有未決監測請求的核心之資訊時,溢位結構可經更新。在此類實施例中,在快取記憶體側位址監測儲存位置與溢位結構之間劃分有關在溢位發生時哪些核心或許可能具有未決監測請求之資訊。
在使用此溢位結構或有關結構的實施例中,不需要將任何接收到的無效請求發送至所有核心,而是僅發送至或許可能具有未決監測請求的由溢位向量及/或儲存位置指示的該等核心。一些核心可在溢位向量及/或儲存位置中未指示,且因此在溢位發生時將不可能具有任何未決監測請求,且因此不需要被發送無效請求。然而,此溢位結構之使用係選擇性的而並非必要。
再次參考圖5,溢位模式可藉由根據需要重複方塊575及576繼續,只要不存在不可利用的儲存位置即可。然而,隨著時間推移在方塊576處可藉由監聽或另外將任何無效請求發送至或許可能具有未決監測請求的所有核心來主動移除陳舊/過期位址及/或儲存位置。若核心側位址監測單元不具有用於監聽或無效請求之有效未決監測請求,則該等核心側位址監測單元可報告回此狀況,此舉可允許快取記憶體側位址監測單元反映核心對監測位址(例如,更新核心遮罩)不感興趣,或若無其他核心對該位址感興趣則清除儲存位置。在各種實施例中,可基於特定位址、特定快取記憶體部分、特定核心或類似者來執行陳舊/過期儲存位置之移除。溢位遮罩可亦經修改以反映陳舊/過期儲存位置或位址之清理。例如,不再具有未決監測請求的核心可在溢位遮罩中經更新為零而非一。以此方式,方塊576處之監聽或無效請求可有助於隨著時間推移清理陳舊/過期儲存元件或位址,以使可在某一時刻退出溢位模式。如在方塊577處所示,可退出溢位模式。
此僅為一例示性實施例。設想關於此實施例之許多變化。例如,方塊572處之判定為選擇性的而非必要。在其他實施例中,可在不檢查可能的陳舊項/位址的情況下自動進入溢位模式。
圖6係溢位結構680之一實施例的方塊圖。可使用溢位結構來單獨地或結合快取記憶體側位址監測儲存位置之集合來指示在溢位發生時哪些核心或許可能具有未決監
測請求。在此實施例中,溢位結構包括N+1個位元,每一位元具有關於N+1個核心(例如,核心0至核心N)中之一不同核心的固定對應。根據一可能的慣例,每一位元可具有用以指示當溢位發生時對應核心或許可能具有未決監測請求的第一值(例如,經設定為二進位一),或可具有用以指示當溢位發生時對應核心不可能具有未決監測請求的第二值(例如,經清除為二進位零)。例如,在圖解中,對應於核心0的最左側位元具有二進位零(亦即,0)以指示核心0不具有未決監測請求,對應於核心1的次最左側位元具有二進位一(亦即,1)以指示核心1具有未決監測請求,且對應於核心N的最右側位元具有二進位零(亦即,0)以指示核心N不具有未決監測請求。此僅為適合的溢位結構之一例示性實例。將瞭解,其他結構可用來傳達相同或類似類型之資訊。例如,在另一實施例中,可將具有未決監測請求的核心ID之清單儲存於一結構中,等等。
本文所揭示之監測機構以及其單元或組件中任一者可以硬體(例如,積體電路、電晶體或其他電路元件等)、韌體(例如,ROM、EPROM、快閃記憶體或其他持續或非依電性記憶體及儲存於其中之微碼、微指令或其他較低階指令)、軟體(例如,儲存於記憶體中之較高階指令)或其組合(例如,潛在地與韌體及/或軟體中之一或多者組合的硬體)來實施。
針對圖1、圖3、圖4及圖6中任一圖所描述之組件、特徵及細節可亦選擇性地使用於圖2及圖5中之任一圖
中。此外,本文針對設備中任一者所描述之組件、特徵及細節可亦選擇性地使用於本文所描述之方法中任一者中,該等方法在實施例中可由此設備且/或在此設備內執行。
示範性核心架構、處理器及電腦架構
可以不同方式、出於不同目的且在不同處理器中實施處理器核心。舉例而言,此類核心的實行方案可包括:1)意欲用於通用計算的通用循序核心;2)意欲用於通用計算的高效能通用亂序核心;3)主要意欲用於圖形及/或科學(通量)計算的專用核心。不同處理器之實行方案可包括:1)CPU,其包括意欲用於通用計算的一或多個通用循序核心及/或意欲用於通用計算的一或多個通用亂序核心;以及2)共處理器,其包括主要意欲用於圖形及/或科學(通量)的一或多個專用核心。此等不同處理器導致不同電腦系統架構,該等架構可包括:1)共處理器在與CPU分離之晶片上;2)共處理器與CPU在同一封裝中,但在單獨的晶粒上;3)共處理器與CPU在同一晶粒上(在此情況下,此共處理器有時被稱為專用邏輯,諸如整合型圖形及/或科學(通量)邏輯,或被稱為專用核心);以及4)系統單晶片(system on a chip),其在與所描述CPU(有時被稱為應用核心或應用處理器)相同的晶粒上包括上述共處理器及額外功能性。接下來描述示範性核心架構,後續接著對示範性處理器及電腦架構的描述。
示範性核心架構
循序及亂序核心方塊圖
圖7A係例示根據本發明之實施例之如下兩者的方塊圖:示範性循序管線,以及示範性暫存器重新命名亂序發佈/執行管線。圖7B係例示如下兩者之方塊圖:循序架構核心的示範性實施例,以及示範性暫存器重新命名亂序發佈/執行架構核心,上述兩者將包括於根據本發明之實施例的處理器中。圖7A至圖7B中之實線方框例示循序管線及循序核心,而虛線方框之選擇性增添例示暫存器重新命名亂序發佈/執行管線及核心。考慮到循序態樣係亂序態樣之子集,將描述亂序態樣。
在圖7A中,處理器管線700包括擷取級段702、長度解碼級段704、解碼級段706、分配級段708、重新命名級段710、排程(亦稱為分派或發佈)級段712、暫存器讀取/記憶體讀取級段714、執行級段716、回寫/記憶體寫入級段718、異常處置級段722及確認級段724。
圖7B展示處理器核心790,其包括耦接至執行引擎單元750之前端單元730,且該執行引擎單元及該前端單元兩者皆耦接至記憶體單元770。核心790可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心,或者混合式或替代性核心類型。作為另一選擇,核心790可為專用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心或類似者。
前端單元730包括耦接至指令快取記憶體單元734之分支預測單元732,該指令快取記憶體單元耦接至指
令轉譯後備緩衝器(TLB)736,該指令TLB耦接至指令擷取單元738,該指令擷取單元耦接至解碼單元740。解碼單元740(或解碼器)可解碼指令,且產生一或多個微操作、微碼進入點、微指令、其他指令或其他控制信號作為輸出,上述各者係自原始指令解碼所得,或以其他方式反映原始指令,或係由原始指令導出。可使用各種不同機構來實施解碼單元740。適合的機構之實例包括但不限於查找表、硬體實行方案、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心790包括微碼ROM或其他媒體,該微碼ROM或其他媒體儲存用於某些巨集指令(例如,在解碼單元740內或相反在前端單元730內)的微碼。解碼單元740耦接至執行引擎單元750中之重新命名/分配器單元752。
執行引擎單元750包括重新命名/分配器單元752,該重新命名/分配器單元耦接至引退(retirement)單元754及一或多個排程器單元756之集合。排程器單元756表示任何數目之不同排程器,包括保留站、中央指令視窗等。排程器單元756耦接至實體暫存器檔案單元758。實體暫存器檔案單元758中每一者表示一或多個實體暫存器檔案,其中不同的實體暫存器檔案儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標器,即下一個待執行指令的位址)等。在一實施例中,實體暫存器檔案單元758包含向量暫存器單元、寫入遮罩暫存器單元及純量暫存器
單元。此等暫存器單元可提供架構性向量暫存器、向量遮罩暫存器及通用暫存器。引退單元754與實體暫存器檔案單元758重疊,以例示可實施暫存器重新命名及亂序執行的各種方式(例如,使用重新排序緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器對照表及暫存器集區)。引退單元754及實體暫存器檔案單元758耦接至執行叢集760。執行叢集760包括一個或多個執行單元762之集合及一個或多個記憶體存取單元764之集合。執行單元762可執行各種運算(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)進行執行。雖然一些實施例可包括專門針對特定功能或功能集合之許多執行單元,但其他實施例可包括僅一個執行單元或多個執行單元,該等執行單元均執行所有功能。排程器單元756、實體暫存器檔案單元758及執行叢集760被展示為可能係多個,因為某些實施例針對某些類型之資料/運算產生單獨的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線,及/或記憶體存取管線,其中每一管線具有其自有之排程器單元、實體暫存器檔案單元及/或執行叢集;且在單獨的記憶體存取管線的情況下,所實施的某些實施例中,唯有此管線之執行叢集具有記憶體存取單元764)。亦應理解,在使用單獨的管線之情況下,此等管線中一或多者可為亂序發佈/執行而其餘管線為循序發佈/執行。
記憶體存取單元764之集合耦接至記憶體單元770,該記憶體單元包括耦接至資料快取記憶體單元774的資料TLB單元772,該資料快取記憶體單元耦接至2階(L2)快取記憶體單元776。在一示範性實施例中,記憶體存取單元764可包括載入單元、儲存位址單元及儲存資料單元,上述單元中每一者耦接至記憶體單元770中之資料TLB單元772。指令快取記憶體單元734進一步耦接至記憶體單元770中之2階(L2)快取記憶體單元776。L2快取記憶體單元776耦接至一或多個其他階快取記憶體且最終耦接至主記憶體。
藉由實例,示範性暫存器重新命名亂序發佈/執行核心架構可將管線700實施如下:1)指令擷取738執行擷取級段702及長度解碼級段704;2)解碼單元740執行解碼級段706;3)重新命名/分配器單元752執行分配級段708及重新命名級段710;4)排程器單元756執行排程級段712;5)實體暫存器檔案單元758及記憶體單元770執行暫存器讀取/記憶體讀取級段714;執行叢集760執行執行級段716;6)記憶體單元770及實體暫存器檔案單元758執行回寫/記憶體寫入級段718;7)異常處置級段722中可涉及各種單元;以及8)引退單元754及實體暫存器檔案單元758執行確認級段724。
核心790可支援一或多個指令集(例如,x86指令集(以及一些擴展,較新版本已新增該等擴展);MIPS Technologie公司(Sunnyvale,CA)的MIPS指令集;ARM Holdings公司(Sunnyvale,CA)的ARM指令集(以及選擇性的
額外擴展,諸如NEON)),其中包括本文中所描述之指令。在一實施例中,核心790包括支援緊縮資料指令集擴展(例如,AVX1、AVX2)的邏輯,進而允許使用緊縮資料來執行許多多媒體應用所使用之操作。
應理解,該核心可支援多執行緒處理(multithreading)(執行操作或執行緒之兩個或兩個以上並行集合),且可以各種方式完成此支援,其中包括經時間切割之多執行緒處理、同時多執行緒處理(其中單個實體核心針對該實體核心同時在多執行緒處理的各執行緒中每一者提供一邏輯核心)或上述各者之組合(例如,經時間切割之擷取及解碼以及隨後同時的多執行緒處理,諸如在Intel®超多執行緒處理(Hyperthreading)技術中)。
雖然在亂序執行的情況下描述暫存器重新命名,但應理解,暫存器重新命名可用於循序架構中。雖然處理器之所例示實施例亦包括單獨的指令與資料快取記憶體單元734/774以及共享的L2快取記憶體單元776,但替代性實施例可具有用於指令與資料兩者的單個內部快取記憶體,諸如1階(L1)內部快取記憶體或多階內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與外部快取記憶體之組合,外部快取記憶體在核心及/或處理器外部。或者,所有快取記憶體可在核心及/或處理器外部。
特定示範性循序核心架構
圖8A至圖8B例示更特定的示範性循序核心架構之方塊圖,該核心將係晶片中之若干邏輯區塊(包括相同類
型及/或不同類型的其他核心)中一者。邏輯區塊經由高頻寬互連網路(例如環形網路)與一些固定功能邏輯、記憶體I/O介面及其他必要的I/O邏輯通訊,此取決於應用。
圖8A係根據本發明之實施例的單個處理器核心及其至晶粒上互連網路802的連接以及其2階(L2)快取記憶體局域子集804的方塊圖。在一實施例中,指令解碼器800支援x86指令集與緊縮資料指令集擴展。L1快取記憶體806允許對快取記憶體進行低延時存取,存取至純量單元及向量單元中。雖然在一實施例中(為了簡化設計),純量單元808及向量單元810使用單獨的暫存器組(分別使用純量暫存器812及向量暫存器814),且在該純量單元與該向量單元之間傳遞的資料被寫入至記憶體,然後自1階(L1)快取記憶體806被讀回,但本發明之替代性實施例可使用不同方法(例如,使用單個暫存器組,或包括允許在兩個暫存器檔案之間傳遞資料而無需寫入及讀回的通訊路徑)。
L2快取記憶體局域子集804係全域L2快取記憶體之部分,全域L2快取記憶體分成單獨的局域子集,每個處理器核心一個局域子集。每一處理器核心具有至其自有之L2快取記憶體局域子集804的直接存取路徑。處理器核心所讀取之資料係儲存於其自有之L2快取記憶體子集804中且可被快速存取,此存取係與其他處理器核心存取其自有之局域L2快取記憶體子集並行地進行。由處理器核心所寫入之資料係儲存於其自有之L2快取記憶體子集804中且必要時自其他子集清除掉。環形網路確保共享資料之同調
性。環形網路係雙向的,以允許諸如處理器核心、L2快取記憶體及其他邏輯區塊之代理在晶片內彼此通訊。每一環形資料路徑在每個方向上的寬度係1012個位元。
圖8B係根據本發明之實施例的圖8A中之處理器核心之部分的展開圖。圖8B包括L1快取記憶體804之L1資料快取記憶體806A部分,以及關於向量單元810及向量暫存器814之更多細節。具體而言,向量單元810係寬度為16之向量處理單元(VPU)(參見寬度為16之ALU 828),其執行整數、單精度浮點數及雙精度浮點數指令中一或多者。VPU支援由拌和單元820對暫存器輸入進行拌和、由數值轉換單元822A-B進行數值轉換,以及由複製單元824對記憶體輸入進行複製。寫入遮罩暫存器826允許預測所得向量寫入。
具有整合型記憶體控制器及圖形元件的處理器
圖9係根據本發明之實施例之處理器900的方塊圖,該處理器可具有一個以上核心,可具有整合型記憶體控制器,且可具有整合型圖形元件。圖9中之實線方框例示處理器900,其具有單個核心902A、系統代理910、一或多個匯流排控制器單元916之集合,而虛線方框之選擇性增添例示替代性處理器900,其具有多個核心902A-N、位於系統代理單元910中的一或多個整合型記憶體控制器單元914之集合,以及專用邏輯908。
因此,處理器900之不同實行方案可包括:1)CPU,其中專用邏輯908係整合型圖形及/或科學(通量)邏輯(其可包括一或多個核心),且核心902A-N係一或多個通
用核心(例如,通用循序核心、通用亂序核心、上述兩者之組合);2)共處理器,其中核心902A-N係大量主要意欲用於圖形及/或科學(通量)之專用核心;以及3)共處理器,其中核心902A-N係大量通用循序核心。因此,處理器900可為通用處理器、共處理器或專用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多重整合核心(MIC)共處理器(包括30個或更多核心)、嵌入式處理器或類似者。處理器可實施於一或多個晶片上。處理器900可為一或多個基板之部分及/或可使用許多處理技術(例如BiCMOS、CMOS或NMOS)中任一者將處理器900實施於一或多個基板上。
記憶體階層包括該等核心內的一或多階快取記憶體、一或多個共享快取記憶體單元906之集合、耦接至整合型記憶體控制器單元914之集合的外部記憶體(圖中未示)。共享快取記憶體單元906之集合可包括一或多個中階快取記憶體,諸如2階(L2)、3階(L3)、4階(L4),或其他階快取記憶體、末階快取記憶體(LLC),及/或上述各者之組合。雖然在一實施例中,環式互連單元912對整合型圖形邏輯908、共享快取記憶體單元906之集合及系統代理單元910/整合型記憶體控制器單元914進行互連,但替代性實施例可使用任何數種熟知技術來互連此等單元。在一實施例中,在一或多個快取記憶體單元906與核心902A-N之間維持同調性。
在一些實施例中,核心902A-N中一或多者能夠
進行多執行緒處理。系統代理910包括協調並操作核心902A-N之該等組件。系統代理單元910可包括,例如,功率控制單元(PCU)及顯示單元。PCU可為調節核心902A-N及整合型圖形邏輯908之功率狀態所需要的邏輯及組件,或者包括上述邏輯及組件。顯示單元係用於驅動一或多個外部已連接顯示器。
核心902A-N就架構指令集而言可為同質的或異質的;亦即,核心902A-N中兩者或兩者以上可能能夠執行同一指令集,而其他核心可能僅能夠執行該指令集之子集或不同的指令集。
示範性電腦架構
圖10至圖13係示範性電腦架構之方塊圖。此項技術中已知的關於以下各者之其他系統設計及組態亦適合:膝上型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器(network hub)、交換器(switch)、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒(set-top box)、微控制器、行動電話、攜帶型媒體播放器、手持式裝置,以及各種其他電子裝置。一般而言,能夠併入如本文中所揭示之處理器及/或其他執行邏輯的多種系統或電子裝置通常適合。
現在參考圖10,所展示為根據本發明之一實施例之系統1000的方塊圖。系統1000可包括一或多個處理器1010、1015,該等處理器耦接至控制器集線器1020。在一實施例中,控制器集線器1020包括圖形記憶體控制器集線
器(GMCH)1090及輸入/輸出集線器(IOH)1050(上述兩者可位於單獨的晶片上);GMCH 1090包括記憶體控制器及圖形控制器,記憶體1040及共處理器1045耦接至該等控制器;IOH 1050將輸入/輸出(I/O)裝置1060耦接至GMCH 1090。或者,記憶體控制器及圖形控制器中一者或兩者整合於(如本文中所描述之)處理器內,記憶體1040及共處理器1045直接耦接至處理器1010,且控制器集線器1020與IOH 1050位於單個晶片中。
圖10中用間斷線表示額外處理器1015之可選擇性質。每一處理器1010、1015可包括本文中所描述之處理核心中一或多者且可為處理器900之某一版本。
記憶體1040可為,例如,動態隨機存取記憶體(DRAM)、相位變化記憶體(PCM),或上述兩者之組合。對於至少一實施例,控制器集線器1020經由以下各者與處理器1010、1015通訊:諸如前端匯流排(FSB)之多分支匯流排(multi-drop bus)、諸如快速路徑互連(QuickPath Interconnect;QPI)之點對點介面,或類似連接1095。
在一實施例中,共處理器1045係專用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。在一實施例中,控制器集線器1020可包括整合型圖形加速器。
就優點量度範圍而言,實體資源1010與1015之間可能有各種差異,其中包括架構特性、微架構特性、熱特性、功率消耗特性及類似者。
在一實施例中,處理器1010執行控制一般類型資料處理操作的指令。共處理器指令可嵌入該等指令內。處理器1010認定此等共處理器指令係應由已附接之共處理器1045執行的類型。因此,處理器1010在共處理器匯流排或其他互連上發佈此等共處理器指令(或表示共處理器指令的控制信號)至共處理器1045。共處理器1045接受並執行接收到的共處理器指令。
現在參考圖11,所展示為根據本發明之一實施例之第一更特定的示範性系統1100的方塊圖。如圖11中所示,多處理器系統1100係點對點互連系統,且包括第一處理器1170及第二處理器1180,該等處理器經由點對點互連1150予以耦接。處理器1170及1180中每一者可為處理器900之某一版本。在本發明之一實施例中,處理器1170及1180分別為處理器1010及1015,而共處理器1138為共處理器1045。在另一實施例中,處理器1170及1180分別為處理器1010共處理器1045。
所展示處理器1170及1180分別包括整合型記憶體控制器(IMC)單元1172及1182。處理器1170亦包括點對點(P-P)介面1176及1178,作為其匯流排控制器單元之部分;類似地,第二處理器1180包括P-P介面1186及1188。處理器1170、1180可使用P-P介面電路1178、1188經由點對點(P-P)介面1150交換資訊。如圖11中所示,IMC 1172及1182將處理器耦接至個別記憶體,亦即,記憶體1132及記憶體1134,該等記憶體可為局部地附接至個別處理器的主記憶體之部
分。
處理器1170、1180各自可使用點對點介面電路1176、1194、1186、1198經由單獨的P-P介面1152、1154與晶片組1190交換資訊。晶片組1190可選擇性地經由高效能介面1139與共處理器1138交換資訊。在一實施例中,共處理器1138係專用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。
在任一處理器中或兩個處理器外部,可包括共享快取記憶體(圖中未示),而該共享快取記憶體經由P-P互連與該等處理器連接,使得當處理器被置於低功率模式中時,可將任一處理器或兩個處理器之局域快取記憶體資訊儲存在該共享快取記憶體中。
晶片組1190可經由介面1196耦接至第一匯流排1116。在一實施例中,第一匯流排1116可為周邊組件互連(PCI)匯流排,或者諸如高速PCI匯流排或另一第三代I/O互連匯流排之匯流排,但本發明之範疇不限於此。
如圖11中所示,各種I/O裝置1114以及匯流排橋接器1118可耦接至第一匯流排1116,匯流排橋接器1118將第一匯流排1116耦接至第二匯流排1120。在一實施例中,一或多個額外處理器1115(諸如,共處理器、高通量MIC處理器、GPGPU、加速器(諸如,圖形加速器或數位信號處理(DSP)單元)、現場可規劃閘陣列,或任何其他處理器)耦接至第一匯流排1116。在一實施例中,第二匯流排1120可為
低接腳計數(LPC)匯流排。各種裝置可耦接至第二匯流排1120,其中包括,例如,鍵盤及/或滑鼠1122、通訊裝置1127及儲存單元1128(諸如碟片驅動機或其他大容量儲存裝置),在一實施例中,儲存單元1128可包括指令/碼及資料1130。此外,音訊I/O 1124可耦接至第二匯流排1120。請注意,其他架構係可能的。例如,代替圖11之點對點架構,系統可實施多分支匯流排或其他此種架構。
現在參考圖12,所展示為根據本發明之一實施例之第二更特定的示範性系統1200的方塊圖。圖11及圖12中的相似元件帶有相似參考數字,且圖12已省略圖11之某些態樣以避免混淆圖12之態樣。
圖12例示處理器1170、1180分別可包括整合型記憶體及I/O控制邏輯(「CL」)1172及1182。因此,CL 1172及1182包括整合型記憶體控制器單元且包括I/O控制邏輯。圖12例示不僅記憶體1132、1134耦接至CL 1172、1182,而且I/O裝置1214亦耦接至控制邏輯1172、1182。舊式I/O裝置1215耦接至晶片組1190。
現在參考圖13,所展示為根據本發明之一實施例之SoC 1300的方塊圖。圖9中的類似元件帶有相似參考數字。此外,虛線方框係更先進SoC上之選擇性特徵。在圖13中,互連單元1302耦接至以下各者:應用處理器1310,其包括一或多個核心202A-N之集合及共享快取記憶體單元906;系統代理單元910;匯流排控制器單元916;整合型記憶體控制器單元914;一或多個共處理器1320之集合,其可
包括整合型圖形邏輯、影像處理器、音訊處理器及視訊處理器;靜態隨機存取記憶體(SRAM)單元1330;直接記憶體存取(DMA)單元1332;以及用於耦接至一或多個外部顯示器的顯示單元1340。在一實施例中,共處理器1320包括專用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器或類似者。
本文揭示之機構的實施例可以硬體、軟體、韌體或者此類實施方法之組合來實施。本發明之實施例可實施為在可規劃系統上執行之電腦程式或程式碼,該等可規劃系統包含至少一處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置及至少一輸出裝置。
可將程式碼(諸如圖11中所例示之碼1130)應用於輸入指令,用來執行本文中所描述之功能且產生輸出資訊。可將輸出資訊以已知方式應用於一或多個輸出裝置。出於本申請案之目的,處理系統包括具有處理器之任何系統,諸如數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)或微處理器。
程式碼可以高階程序性或物件導向式程式設計語言來實施,以便與處理系統通訊。必要時,程式碼亦可以組合語言或機器語言來實施。事實上,本文中所描述之機構的範疇不限於任何特定的程式設計語言。在任何情況下,該語言可為編譯語言或解譯語言。
至少一實施例之一或多個態樣可藉由儲存於機
器可讀媒體上之代表性指令來實施,該機器可讀媒體表示處理器內的各種邏輯,該等指令在由機器讀取時使機器製造邏輯來執行本文中所描述之技術。此類表示(稱為IP核心)可儲存於有形的機器可讀媒體上,且可供應給各種用戶端或製造設施以載入至實際上製作該邏輯或處理器的製造機中。
此等機器可讀儲存媒體可包括(但不限於)由機器或裝置製造或形成的非暫時性有形物品配置,其中包括:儲存媒體,諸如硬碟片、任何其他類型之碟片(包括軟碟片、光碟、光碟片-唯讀記憶體(CD-ROM)、可重寫光碟片(CD-RW)及磁光碟)、半導體裝置(諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)(諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可規劃唯讀記憶體(EEPROM)、相位變化記憶體(PCM)、磁性或光學卡),或者適合於儲存電子指令的任何其他類型之媒體。
因此,本發明之實施例亦包括含有指令或含有諸如硬體描述語言(HDL)之設計資料的非暫時性有形機器可讀媒體,其中設計資料定義本文中所描述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
仿真(包括二進位轉譯、程式碼漸變(code morphing)等)
在一些情況下,可使用指令轉換器將指令自來源指令集轉換成目標指令集。例如,指令轉換器可將指令轉
譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、漸變、仿真或以其他方式轉換成將由核心處理的一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合來實施。指令轉換器可位於處理器上、位於處理器外部,或部分位於處理器上而部分位於處理器外部。
圖14係對照根據本發明之實施例之軟體指令轉換器的用途的方塊圖,該轉換器係用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令。在所例示之實施例中,指令轉換器係軟體指令轉換器,但指令轉換器或者可以軟體、韌體、硬體、或其各種組合來實施。圖14展示出,可使用x86編譯器1404來編譯用高階語言1402撰寫的程式以產生x86二進位碼1406,該x86二進位碼自然可由具有至少一x86指令集核心之處理器1416執行。具有至少一x86指令集核心之處理器1416表示可執行與具有至少一x86指令集核心之Intel處理器大體相同的功能之任何處理器,上述執行係藉由相容地執行或以其他方式處理以下各者:(1)Intel x86指令集核心之指令集的大部分或(2)旨在在具有至少一x86指令集核心之Intel處理器上運行的應用程式或其他軟體之目標碼版本,以便達成與具有至少一x86指令集核心之Intel處理器大體相同的結果。x86編譯器1404表示可操作以產生x86二進位碼1406(例如目標碼)之編譯器,其中x86二進位碼1406在經額外連結處理或未經額外連結處理的情況下可在具有至少一x86指令集核心之處理器1416上執行。類似地,圖14展示出,可使用替代性指令集
編譯器1408來編譯用高階語言1402撰寫的程式以產生替代性指令集二進位碼1410,該替代性指令集二進位碼自然可由不具有至少一x86指令集核心之處理器1414(例如,具有多個核心的處理器,該等核心執行MIPS Technologie公司(Sunnyvale,CA)之MIPS指令集,及/或該等核心執行ARM Holdings公司(Sunnyvale,CA)之ARM指令集)執行。使用指令轉換器1412將x86二進位碼1406轉換成自然可由不具有一x86指令集核心之處理器1414執行的碼。此轉換後的碼不可能與替代性指令集二進位碼1410相同,因為能夠實現此操作的指令轉換器很難製作;然而,轉換後的碼將完成一般操作且由來自替代性指令集之指令構成。因此,指令轉換器1412表示經由仿真、模擬或任何其他處理程序來允許不具有x86指令集處理器或核心的處理器或其他電子裝置執行x86二進位碼1406的軟體、韌體、硬體或其組合。
在描述及申請專利範圍中,已使用「耦接」及/或「連接」等詞以及其派生詞。應理解,此等術語並非意欲作為用於彼此之同義詞。實情為,在特定實施例中,「連接」可用來指示兩個或更多元件彼此直接實體或電氣接觸。「耦接」可意味兩個或更多元件直接實體或電氣接觸。然而,「耦接」可亦意味兩個或更多元件彼此並未直接接觸,但仍彼此合作或相互作用。例如,核心可經由一或多個介入組件與快取記憶體部分耦接。在諸圖中,箭頭用來展示連接及耦接。
在描述及/或申請專利範圍中,可已使用「邏
輯」、「單元」、「模組」或「組件」等詞。將理解,此等可包括硬體、韌體、軟體或其各種組合。此等之實例包括積體電路、特定應用積體電路、類比電路、數位電路、程控邏輯裝置、包括指令之記憶體裝置及類似者,以及上述各者之組合。在一些實施例中,此等可包括電晶體及/或柵及/或其他電路組件。
在以上描述中,已闡述特定細節以便提供對實施例之徹底理解。然而,可在無此等特定細節中之一些的情況下實踐其他實施例。本發明之範疇將並非由以上所提供之特定實例決定而僅由以下申請專利範圍決定。在其他情況下,已以方塊圖形式或在無細節的情況下展示出熟知電路、結構、裝置及操作,以避免混淆對描述之理解。在已展示且描述多個組件的情況下,在一些情況下,該等組件可替代地整合在一起作為單個組件。在已展示且描述單個組件的其他情況下,在一些情況下,可將該單個組件分為兩個或更多組件。
已描述各種操作及方法。已在流程圖中以基本的形式描述方法中之一些,但操作可選擇性地增添至該等方法及/或自該等方法移除。另外,雖然流程圖展示出根據示例性實施例的操作之特定順序,但該特定順序為示範性的。替代性實施例可選擇性地以不同順序執行操作、組合某些操作、重疊某些操作等。
某些操作可由硬體組件執行,或可體現於機器可執行或電路可執行指令中,該機械可執行或電路可執行指
令可用來產生且/或導致以執行該等操作的指令程控的機器、電路或硬體組件(例如,處理器、處理器之部分、電路等)。操作可亦選擇性地由硬體及軟體之組合執行。
一些實施例包括製品(例如,電腦程式產品),該製品包括非暫時性機器可讀儲存媒體。非暫時性機器可讀儲存媒體並非由暫時性傳播信號組成。非暫時性機器可讀儲存媒體可包括以可由機器讀取的形式儲存資訊之機構。機器可讀儲存媒體上可儲存有指令或指令序列,該指令或指令序列若由機器執行且/或在由機器執行時可操作來使該機器執行且/或導致該機器執行本文中所揭示之一或操作、方法或技術。適合的機器之實例包括(但不限於)處理器及電腦系統或具有此類處理器之其他電子裝置。如各種實例,非暫時性機器可讀儲存媒體可包括軟碟片、光儲存媒體、光碟、光資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可規劃ROM(PROM)、可抹除可規劃ROM(EPROM)、電氣可抹除可規劃ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相位變化記憶體、相位變化資料儲存材料、非依電性記憶體、非依電性資料儲存裝置、非暫時性記憶體、非暫時性資料儲存裝置。
在全部此說明書中對例如「一個實施倒」、「一實施例」、「一或多個實施例」、「一些實施例」之參考指示特定特徵可包括在本發明之實踐中但未必要求包括於實踐中。類似地,在描述中,各種特徵有時在單個實施例、圖
或其描述中集中在一起,以用於使揭示內容合理化且幫助理解各種發明性態樣的目的。然而,此揭示方法將不被解釋為反映本發明需要比每一請求項中明確詳述的更多特徵的意圖。實情為,如以下申請專利範圍所反映,發明性態樣在於少於單個所揭示實施例之全部特徵中。因此,詳細描述之後的申請專利範圍因此明確併入此詳細描述中,其中每一請求項堅持其自身作為本發明之單獨的實施例。
示例性實施例
以下實例係關於進一步實施例。實例中之特定細節可使用於一或多個實施例中的任何位置。
實例1為處理器,該處理器包括快取記憶體側位址監測單元,該快取記憶體側位址監測單元對應於分散式快取記憶體之第一快取記憶體部分,且具有小於該處理器之邏輯處理器之總數目的快取記憶體側位址監測儲存位置之總數目。每一快取記憶體側位址監測儲存位置用以儲存將要監測之位址。處理器亦包括核心側位址監測單元,該核心側位址監測單元對應於第一核心,且具有與該第一核心之一或多個邏輯處理器之數目相同的核心側位址監測儲存位置之數目。每一核心側位址監測儲存位置用以儲存將要監測之位址及用於第一核心之不同的對應邏輯處理器之監測狀態。處理器亦包括快取記憶體側位址監測儲存溢位單元,該快取記憶體側位址監測儲存溢位單元對應於第一快取記憶體部分,該快取記憶體側位址監測儲存溢位單元用以在無未使用的快取記憶體側位址監測儲存位置可利用
來儲存將要監測之額外位址時,實行位址監測儲存溢位策略。
實例2包括任何前述實例之處理器,且該處理器選擇性地包括核心側觸發單元,該核心側觸發單元對應於第一核心且與核心側位址監測單元耦接。核心側觸發單元用以在對應核心側位址監測儲存位置具有準備好觸發之監測狀態且偵測觸發事件時,觸發第一核心之邏輯處理器。
實例3包括任何前述實例之處理器,且該處理器選擇性地包括快取記憶體側位址監測儲存位置重新使用單元,該快取記憶體側位址監測儲存位置重新使用單元與快取記憶體側位址監測單元耦接,以將用於相同監測位址之來自不同邏輯處理器的監測請求記錄在共用快取記憶體側位址監測儲存位置中。
實例4包括實例3之處理器,其中該共用快取記憶體側位址監測儲存位置包括用以記錄提供用於相同監測位址之監測請求的不同邏輯處理器之結構。
實例5包括任何前述實例之處理器,其中該處理器具有多於四十個硬體執行緒,且其中快取記憶體側位址監測單元中對應於第一快取記憶體部分的快取記憶體側位址監測儲存位置之總數目為至少二十個快取記憶體側位址監測儲存位置,但小於該等多於四十個硬體執行緒之總數目。
實例6包括任何前述實例之處理器,其中快取記憶體側位址監測單元之快取記憶體側位址監測儲存位置之
總數目為相對於處理器之邏輯處理器之總數目足夠的,使得快取記憶體側位址監測儲存位置之溢位之可能性不超過十萬分之一。
實例7包括任何前述實例之處理器,其中,回應於指示將要監測之第一位址的指令,快取記憶體側位址監測單元用以將該第一位址儲存在快取記憶體側位址監測儲存位置中。另外,核心側位址監測單元用以將該第一位址儲存在核心側位址監測儲存位置中。
實例8包括任何前述實例之處理器,其中邏輯處理器為硬體執行緒。
實例9包括任何前述實例之處理器,其中快取記憶體側位址監測儲存溢位單元用以實行位址監測儲存溢位策略,該位址監測儲存溢位策略包括迫使讀取異動使用共享狀態。
實例10包括任何前述實例之處理器,其中快取記憶體側位址監測儲存溢位單元用以實行位址監測儲存溢位策略,該位址監測儲存溢位策略包括將無效請求發送至或許可能具有未決監測請求的所有核心。
實例11包括實例10之處理器,其中快取記憶體側位址監測儲存溢位單元用以檢查溢位結構以判定哪些核心或許可能具有未決監測請求。
實例12為用以處理指令之系統,該系統包括互連,及與該互連耦接之處理器。處理器包括快取記憶體部分控制單元之第一位址監測單元,該第一位址監測單元對
應於分散式快取記憶體之第一快取記憶體部分,且具有小於處理器之硬體執行緒之總數目的位址監測儲存位置之總數目。每一位址監測儲存位置用以儲存將要監測之位址。處理器亦包括核心介面單元之第二位址監測單元,該第二位址監測單元對應於第一核心且具有與該第一核心之一或多個硬體執行緒之數目相同的位址監測儲存位置之數目。第二位址監測單元之每一位址監測儲存位置用以儲存將要監測之位址及用於第一核心之不同的對應硬體執行緒之監測狀態。處理器進一步包括快取記憶體部分控制單元之位址監測儲存溢位單元,該位址監測儲存溢位單元用以在第一位址監測單元之所有位址監測儲存位置經使用且無任一者可利用來儲存用於監測請求之位址時,實施位址監測儲存溢位策略。系統亦包括與互連耦接之動態隨機存取記憶體、與互連耦接之無線通訊裝置,及與互連耦接之圖像擷取裝置。
實例13包括實例12之系統,其中位址監測儲存溢位單元用以實施位址監測儲存溢位策略,該位址監測儲存溢位策略包括迫使讀取異動使用共享狀態,及將無效請求發送至或許可能具有未決監測請求的所有核心。
實例14包括實例12至實例13中任一實例之系統,其中處理器具有多於四十個硬體執行緒,且第一位址監測單元之位址監測儲存位置之總數目為至少二十個但小於處理器之該等多於四十個硬體執行緒之總數目。
實例15包括實例12至實例14中任一實例之系
統,其中處理器進一步包括快取記憶體部分控制單元之位址監測儲存位置重新使用單元,該位址監測儲存位置重新使用單元用以將用於相同監測位址之來自不同硬體執行緒的監測請求記錄在共用位址監測儲存位置中。
實例16為處理器中之方法,該方法包括在多核心處理器之第一核心之第一邏輯處理器處接收指示位址且指示監測寫入至該位址的第一指令。回應於第一指令,方法包括將由第一指令指示的位址儲存在多個核心側位址監測儲存位置中對應於第一核心的第一核心側位址監測儲存位置中。該等多個核心側位址監測儲存位置之數目等於第一核心之邏輯處理器之數目。方法亦包括將由第一指令指示的位址儲存在多個快取記憶體側位址監測儲存位置中對應於分散式快取記憶體之第一快取記憶體部分的第一快取記憶體側位址監測儲存位置中。該等多個快取記憶體側位址監測儲存位置之總數目小於多核心處理器之邏輯處理器之總數目。方法進一步地包括將監測狀態改變成臆測狀態。
實例17包括實例16之方法,且該方法選擇性地包括在第二核心之第二邏輯處理器處接收亦指示該位址且指示監測寫入至該位址的第二指令,及將用於第二核心之該位址的監測請求記錄在第一快取記憶體側位址監測儲存位置中。
實例18包括實例17之方法,其中將用於第二核心之該位址的監測請求記錄在第一快取記憶體側位址監測儲存位置中包括改變核心遮罩中之位元,該核心遮罩具有對
應於多核心處理器之每一核心的不同位元。
實例19包括任何前述實例之方法,且該方法選擇性地包括在第一邏輯處理器處接收指示第二位址且指示監測寫入至該第二位址的第二指令,判定在該等多個快取記憶體側位址監測儲存位置中不存在對應於第一快取記憶體部分的可利用的快取記憶體側位址監測儲存位置,及判定進入快取記憶體側位址監測儲存位置溢位模式。
實例20包括實例19之方法,且該方法選擇性地包括,在處於快取記憶體側位址監測儲存位置溢位模式中時迫使對應於第一快取記憶體部分的讀取異動使用共享快取記憶體同調性狀態,及將對應於第一快取記憶體部分的無效請求發送至多核心處理器之或許可能具有一或多個未決監測請求的所有核心。
實例21包括任何前述實例之方法,且該方法選擇性地包括在第一邏輯處理器處接收指示該位址的第二指令;以及回應於該第二指令,將監測狀態改變成等待觸發狀態。
實例22包括用以執行實例16至實例21中任一實例之方法的處理器或其他設備。
實例23包括處理器或其他設備,該處理器或其他設備包括用於執行實例16至實例21中任一實例之方法的手段。
實例24包括處理器,該處理器包括用以執行實例16至實例21中任一實例之方法的積體電路及/或邏輯及/或
單元及/或組件及/或模組,及/或構件,或上述各者之任何組合。
實例25包括選擇性地非暫時性機器可讀媒體,該選擇性地非暫時性機器可讀媒體選擇性地儲存或另外提供一或多個指令,該一或多個指令若由機器執行且/或在由機器執行時可操作來使該機器執行實例16至實例21中任一實例之方法。
實例26包括電腦系統,該電腦系統包括互連、與該互連耦接之處理器,及DRAM、圖形晶片、無線通訊晶片、相位變化記憶體及視訊攝像機中之至少一個,該至少一個與該互連耦接,該處理器及/或該電腦系統用以執行實例16至實例21中任一實例之方法。
實例27包括用以執行大體上如本文中所描述之一或多個操作或任何方法的處理器或其他設備。
實例28包括處理器或其他設備,該處理器或其他設備包括用於執行大體上如本文中所描述之一或多個操作或任何方法的手段。
實例29包括用以執行大體上如本文中所揭示之指令的處理器或其他設備。
實例30包括處理器或其他設備,該處理器或其他設備包括用於執行大體上如本文中所揭示之指令的手段。
100‧‧‧處理器
102-0‧‧‧核心0
102-1‧‧‧核心1
102-2‧‧‧核心2
102-3‧‧‧核心3
102-4‧‧‧核心4
102-5‧‧‧核心5
102-6‧‧‧核心6
102-7‧‧‧核心7
104-0~104-7‧‧‧核心介面(I/F)單元
106-0~106-7‧‧‧快取記憶體控制單元
108-0~108-7‧‧‧快取記憶體部分
110-1‧‧‧第一快取記憶體同調性知曉記憶體控制器
110-2‧‧‧第二快取記憶體同調性知曉記憶體控制器
112‧‧‧互連
Claims (22)
- 一種處理器,其包含:快取記憶體側位址監測單元,其對應且耦接於分散式快取記憶體之第一快取記憶體部分,且具有小於該處理器的邏輯處理器之總數目的快取記憶體側位址監測儲存位置之總數目,每一快取記憶體側位址監測儲存位置用以儲存要被監測之位址;核心側位址監測單元,其對應且耦接於第一核心,且具有與該第一核心的一或多個邏輯處理器之數目相同的核心側位址監測儲存位置之數目,每一核心側位址監測儲存位置用以儲存要被監測之位址及用於該第一核心之不同的對應邏輯處理器之監測狀態;以及快取記憶體側位址監測儲存溢位單元,其對應且耦接於該第一快取記憶體部分,且耦接於該快取記憶體側位址監測單元,該快取記憶體側位址監測儲存溢位單元用以在沒有未使用的快取記憶體側位址監測儲存位置可利用來儲存要被監測之額外位址時,實行位址監測儲存溢位策略。
- 如請求項1之處理器,其進一步包含核心側觸發單元,該核心側觸發單元對應且耦接於該第一核心且與該核心側位址監測單元耦接,該核心側觸發單元用以在對應核心側位址監測儲存位置具有準備好要觸發之監測狀態且偵測觸發事件時,觸發該第一核心之邏輯處理器。
- 如請求項1之處理器,其進一步包含快取記憶體側位址監測儲存位置重新使用單元,該快取記憶體側位址 監測儲存位置重新使用單元與該快取記憶體側位址監測單元耦接,以將用於相同監測位址之來自不同邏輯處理器的監測請求記錄在共用快取記憶體側位址監測儲存位置中。
- 如請求項3之處理器,其中該共用快取記憶體側位址監測儲存位置包含用以記錄提供用於該相同監測位址之該等監測請求的該等不同邏輯處理器之結構。
- 如請求項1之處理器,其中該處理器具有多於四十個硬體執行緒,且其中該快取記憶體側位址監測單元之對應於該第一快取記憶體部分的該等快取記憶體側位址監測儲存位置之該總數目為至少二十個快取記憶體側位址監測儲存位置但小於該等多於四十個硬體執行緒之總數目。
- 如請求項1之處理器,其中,回應於用以指示要被監測之第一位址的指令,該快取記憶體側位址監測單元係用以將該第一位址儲存於快取記憶體側位址監測儲存位置中,且該核心側位址監測單元係用以將該第一位址儲存於核心側位址監測儲存位置中。
- 如請求項1之處理器,其中該第一核心的該一或多個邏輯處理器包含硬體執行緒。
- 如請求項1之處理器,其中該快取記憶體側位址監測儲存溢位單元係用以實行該位址監測儲存溢位策略,該位址監測儲存溢位策略包括用以迫使讀取異動以使用共享狀態。
- 如請求項1之處理器,其中該快取記憶體側位址監測儲存溢位單元係用以實行該位址監測儲存溢位策略, 該位址監測儲存溢位策略包括用以將無效請求發送至可具有未決監測請求的所有核心。
- 如請求項9之處理器,其中該快取記憶體側位址監測儲存溢位單元係用以檢查溢位結構,以判定哪些核心可具有未決監測請求。
- 一種用以處理指令之系統,該系統包含:互連;處理器,其與該互連耦接,該處理器包括:快取記憶體部分控制單元,其包括第一位址監測單元,該第一位址監測單元對應且耦接於分散式快取記憶體之第一快取記憶體部分,且具有小於該處理器的硬體執行緒之總數目的位址監測儲存位置之總數目,每一位址監測儲存位置用以儲存要被監測之位址;核心介面單元,其包括第二位址監測單元,該第二位址監測單元對應且耦接於第一核心,且具有與該第一核心的一或多個硬體執行緒之數目相同的位址監測儲存位置之數目,該第二位址監測單元之每一位址監測儲存位置用以儲存要被監測之位址及用於該第一核心之不同的對應硬體執行緒之監測狀態;以及該快取記憶體部分控制單元之位址監測儲存溢位單元,該位址監測儲存溢位單元耦接於該第一位址監測單元,用以在該第一位址監測單元之所有位址監測儲存位置經使用且無任一者可利用來儲存用於監測請求之位址時,實施位址監測儲存溢位策略; 動態隨機存取記憶體,其與該互連耦接;無線通訊裝置,其與該互連耦接;以及影像擷取裝置,其與該互連耦接。
- 如請求項11之系統,其中該位址監測儲存溢位單元係用以實施該位址監測儲存溢位策略,該位址監測儲存溢位策略包括用以:迫使讀取異動以使用共享狀態;以及將無效請求發送至可具有未決監測請求的所有核心。
- 如請求項11之系統,其中該處理器具有多於四十個硬體執行緒,且其中該第一位址監測單元的該等位址監測儲存位置之該總數目為至少二十個但小於該處理器的該等多於四十個硬體執行緒之該總數目。
- 如請求項11之系統,其中該處理器進一步包含該快取記憶體部分控制單元之位址監測儲存位置重新使用單元,該位址監測儲存位置重新使用單元用以將用於相同監測位址之來自不同硬體執行緒的監測請求記錄在共用位址監測儲存位置中。
- 一種在處理器中之方法,該方法包含下列步驟:在多核心處理器之第一核心之第一邏輯處理器處接收指示位址且指示以監測寫入至該位址的第一指令;以及回應於該第一指令:將由該第一指令所指示的該位址儲存在多個核心側位址監測儲存位置對應於該第一核心的第一核心側位址監測儲存位置中,其中該等多個核心側位址監測儲存位置之數 目等於該第一核心的邏輯處理器之數目;將由該第一指令所指示的該位址儲存在多個快取記憶體側位址監測儲存位置對應於分散式快取記憶體之第一快取記憶體部分的第一快取記憶體側位址監測儲存位置中,其中該等多個快取記憶體側位址監測儲存位置之總數目小於該多核心處理器的邏輯處理器之總數目;以及將監測狀態改變成臆測狀態。
- 如請求項15之方法,其進一步包含:在第二核心之第二邏輯處理器處接收亦指示該位址且指示以監測寫入至該位址的第二指令;以及將用於該第二核心之該位址的監測請求記錄在該第一快取記憶體側位址監測儲存位置中。
- 如請求項16之方法,其中將用於該第二核心之該位址的該監測請求記錄在該第一快取記憶體側位址監測儲存位置中包含改變核心遮罩中之位元,該核心遮罩具有對應於該多核心處理器之每一核心的不同位元。
- 如請求項15之方法,其進一步包含:在該第一邏輯處理器處接收指示第二位址且指示以監測寫入至該第二位址的第二指令;判定在該等多個快取記憶體側位址監測儲存位置中不存在對應於該第一快取記憶體部分的可利用之快取記憶體側位址監測儲存位置;以及判定以進入快取記憶體側位址監測儲存位置溢位模式。
- 如請求項18之方法,其進一步包含,在處於該快取記憶體側位址監測儲存位置溢位模式中時:迫使對應於該第一快取記憶體部分的所有讀取異動以使用共享快取記憶體同調性狀態;以及將對應於該第一快取記憶體部分的無效請求發送至該多核心處理器之可具有一或多個未決監測請求的所有核心。
- 如請求項15之方法,其進一步包含:在該第一邏輯處理器處接收指示該位址的第二指令;以及回應於該第二指令,將該監測狀態改變成等待觸發狀態。
- 如請求項15之方法,其中該等多個核心側位址監測儲存位置之該數目等於該第一核心的硬體執行緒之數目。
- 如請求項15之方法,其進一步包含偵測寫入至該位址且將喚醒信號自核心側觸發單元發送至該第一邏輯處理器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/040,375 US10705961B2 (en) | 2013-09-27 | 2013-09-27 | Scalably mechanism to implement an instruction that monitors for writes to an address |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201528132A TW201528132A (zh) | 2015-07-16 |
TWI556161B true TWI556161B (zh) | 2016-11-01 |
Family
ID=52741311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103133034A TWI556161B (zh) | 2013-09-27 | 2014-09-24 | 用以實施監測寫入至一位址的指令之處理器、系統和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10705961B2 (zh) |
EP (1) | EP3084608B1 (zh) |
TW (1) | TWI556161B (zh) |
WO (1) | WO2015048826A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI764985B (zh) * | 2017-03-16 | 2022-05-21 | 英商Arm股份有限公司 | 記憶體存取監測 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10705961B2 (en) | 2013-09-27 | 2020-07-07 | Intel Corporation | Scalably mechanism to implement an instruction that monitors for writes to an address |
US9880935B2 (en) | 2014-03-24 | 2018-01-30 | Intel Corporation | Efficient data transfer between a processor core and an accelerator |
US20150301955A1 (en) * | 2014-04-21 | 2015-10-22 | Qualcomm Incorporated | Extending protection domains to co-processors |
US20160357674A1 (en) * | 2015-06-07 | 2016-12-08 | Cloud Physics, Inc. | Unified Online Cache Monitoring and Optimization |
US9898351B2 (en) * | 2015-12-24 | 2018-02-20 | Intel Corporation | Method and apparatus for user-level thread synchronization with a monitor and MWAIT architecture |
US11163682B2 (en) | 2015-12-29 | 2021-11-02 | Intel Corporation | Systems, methods, and apparatuses for distributed consistency memory |
US10547680B2 (en) * | 2015-12-29 | 2020-01-28 | Intel Corporation | Systems, methods, and apparatuses for range protection |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
DE112016007298T5 (de) * | 2016-09-30 | 2019-06-13 | Mitsubishi Electric Corporation | Informationsverarbeitungsgerät |
US11061730B2 (en) * | 2016-11-18 | 2021-07-13 | Red Hat Israel, Ltd. | Efficient scheduling for hyper-threaded CPUs using memory monitoring |
TWI625694B (zh) * | 2017-06-06 | 2018-06-01 | Univ Chang Gung | Monitoring system and monitoring device |
CN112379768B (zh) * | 2020-11-12 | 2021-05-18 | 北京中电兴发科技有限公司 | 一种应用于嵌入式云存储系统的降功耗方法 |
US20220197729A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Advanced queue monitoring system |
GB2603167B (en) * | 2021-01-29 | 2023-04-26 | Advanced Risc Mach Ltd | Monitor exclusive instruction |
US20220394023A1 (en) * | 2021-06-04 | 2022-12-08 | Winkk, Inc | Encryption for one-way data stream |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200636467A (en) * | 2005-02-07 | 2006-10-16 | Advanced Micro Devices Inc | System for restricted cache access during data transfers and method thereof |
US20070282928A1 (en) * | 2006-06-06 | 2007-12-06 | Guofang Jiao | Processor core stack extension |
US20080005504A1 (en) * | 2006-06-30 | 2008-01-03 | Jesse Barnes | Global overflow method for virtualized transactional memory |
US20090144524A1 (en) * | 2007-11-29 | 2009-06-04 | International Business Machines Corporation | Method and System for Handling Transaction Buffer Overflow In A Multiprocessor System |
US20090172284A1 (en) * | 2007-12-28 | 2009-07-02 | Zeev Offen | Method and apparatus for monitor and mwait in a distributed cache architecture |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6301699B1 (en) | 1999-03-18 | 2001-10-09 | Corekt Security Systems, Inc. | Method for detecting buffer overflow for computer security |
US7363474B2 (en) | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US7213093B2 (en) | 2003-06-27 | 2007-05-01 | Intel Corporation | Queued locks using monitor-memory wait |
US7664970B2 (en) | 2005-12-30 | 2010-02-16 | Intel Corporation | Method and apparatus for a zero voltage processor sleep state |
JP4803983B2 (ja) | 2004-09-14 | 2011-10-26 | パナソニック株式会社 | 演算処理装置 |
US8601040B2 (en) | 2010-09-27 | 2013-12-03 | Texas Instruments Incorporated | Reduced-level shift overflow detection |
US10705961B2 (en) | 2013-09-27 | 2020-07-07 | Intel Corporation | Scalably mechanism to implement an instruction that monitors for writes to an address |
US9880935B2 (en) | 2014-03-24 | 2018-01-30 | Intel Corporation | Efficient data transfer between a processor core and an accelerator |
US20160357674A1 (en) | 2015-06-07 | 2016-12-08 | Cloud Physics, Inc. | Unified Online Cache Monitoring and Optimization |
-
2013
- 2013-09-27 US US14/040,375 patent/US10705961B2/en active Active
-
2014
- 2014-09-24 TW TW103133034A patent/TWI556161B/zh not_active IP Right Cessation
- 2014-10-03 EP EP14849874.4A patent/EP3084608B1/en active Active
- 2014-10-03 WO PCT/US2014/059130 patent/WO2015048826A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200636467A (en) * | 2005-02-07 | 2006-10-16 | Advanced Micro Devices Inc | System for restricted cache access during data transfers and method thereof |
US20070282928A1 (en) * | 2006-06-06 | 2007-12-06 | Guofang Jiao | Processor core stack extension |
US20080005504A1 (en) * | 2006-06-30 | 2008-01-03 | Jesse Barnes | Global overflow method for virtualized transactional memory |
US20090144524A1 (en) * | 2007-11-29 | 2009-06-04 | International Business Machines Corporation | Method and System for Handling Transaction Buffer Overflow In A Multiprocessor System |
US20090172284A1 (en) * | 2007-12-28 | 2009-07-02 | Zeev Offen | Method and apparatus for monitor and mwait in a distributed cache architecture |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI764985B (zh) * | 2017-03-16 | 2022-05-21 | 英商Arm股份有限公司 | 記憶體存取監測 |
Also Published As
Publication number | Publication date |
---|---|
EP3084608A4 (en) | 2017-10-18 |
WO2015048826A1 (en) | 2015-04-02 |
TW201528132A (zh) | 2015-07-16 |
US10705961B2 (en) | 2020-07-07 |
EP3084608B1 (en) | 2021-05-05 |
EP3084608A1 (en) | 2016-10-26 |
US20150095580A1 (en) | 2015-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI556161B (zh) | 用以實施監測寫入至一位址的指令之處理器、系統和方法 | |
US10248568B2 (en) | Efficient data transfer between a processor core and an accelerator | |
US9361233B2 (en) | Method and apparatus for shared line unified cache | |
CN108369553B (zh) | 用于范围保护的系统、方法和装置 | |
US20170185515A1 (en) | Cpu remote snoop filtering mechanism for field programmable gate array | |
US9836399B2 (en) | Mechanism to avoid hot-L1/cold-L2 events in an inclusive L2 cache using L1 presence bits for victim selection bias | |
US10102124B2 (en) | High bandwidth full-block write commands | |
WO2016045039A1 (en) | Reducing interconnect traffics of multi-processor system with extended mesi protocol | |
US9146871B2 (en) | Retrieval of previously accessed data in a multi-core processor | |
US9201792B2 (en) | Short circuit of probes in a chain | |
US10705962B2 (en) | Supporting adaptive shared cache management | |
US11669454B2 (en) | Hybrid directory and snoopy-based coherency to reduce directory update overhead in two-level memory | |
US10599335B2 (en) | Supporting hierarchical ordering points in a microprocessor system | |
US9436605B2 (en) | Cache coherency apparatus and method minimizing memory writeback operations | |
JP6227151B2 (ja) | アドレスへの書き込みに対する監視命令を実行するスケーラブル機構 | |
US20180121353A1 (en) | System, method, and apparatus for reducing redundant writes to memory by early detection and roi-based throttling | |
US9886396B2 (en) | Scalable event handling in multi-threaded processor cores | |
US10877886B2 (en) | Storing cache lines in dedicated cache of an idle core | |
WO2023108480A1 (en) | Dynamic cache coherence protocol based on runtime interconnect utilization | |
WO2018001528A1 (en) | Apparatus and methods to manage memory side cache eviction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |