TW201624279A - 持續儲存屏障處理器、方法、系統及指令 - Google Patents

持續儲存屏障處理器、方法、系統及指令 Download PDF

Info

Publication number
TW201624279A
TW201624279A TW104127169A TW104127169A TW201624279A TW 201624279 A TW201624279 A TW 201624279A TW 104127169 A TW104127169 A TW 104127169A TW 104127169 A TW104127169 A TW 104127169A TW 201624279 A TW201624279 A TW 201624279A
Authority
TW
Taiwan
Prior art keywords
persistent storage
storage
barrier
instruction
processor
Prior art date
Application number
TW104127169A
Other languages
English (en)
Other versions
TWI598821B (zh
Inventor
王正
玉芬 吳
羅傑 桑卡安
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 TW201624279A publication Critical patent/TW201624279A/zh
Application granted granted Critical
Publication of TWI598821B publication Critical patent/TWI598821B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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
    • 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
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本發明之態樣之處理器包括解碼單元,用以解碼一持續儲存屏障指令。處理器亦包括與解碼單元相耦合之記憶體子系統模組。記憶體子系統模組回應於持續儲存屏障指令,其確保相對應於持續儲存屏障指令之給定資料係早在所有後續儲存指令之資料被持續儲存在持續儲存器中之前,先被持續儲存於持續儲存器中。依照在原始程式順序,後續儲存指令係發生於持續儲存屏障指令之後。本發明亦揭露其他處理器、方法、系統、及製造物件。

Description

持續儲存屏障處理器、方法、系統及指令
本發明揭露之實施例大致係有關資料的儲存。特別是,本發明揭露之實施例大致係有關持續記憶體中之資料的儲存。
處理器一般係可操作成執行指令以存取記憶體。例如,處理器可執行載入指令,以從主記憶體載入或讀取資料,及/或儲存指令,以寫入或儲存資料至主記憶體。
加州聖塔克拉拉市Intel Corporation在2014年6月出版的Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes:1,2A,2B,2C,3A,3B and 3C,Order Number:325462-051US中揭述SFENCE(儲存屏障)指令,將儲存操作序列化。SFENCE指令可對在早於SFENCE指令之前已發出的所有儲存至主記憶體指令執行序列化操作。此序列化操作可保證依照程式順序領先於SFENCE指令之每一個儲存指令可以在SFENCE指令後續之任意儲存指令之前先為全域可見。
100‧‧‧電腦系統
102‧‧‧處理器
104‧‧‧指令集
106‧‧‧載入指令
108‧‧‧儲存指令
110‧‧‧持續儲存屏障指令
112‧‧‧管線
114‧‧‧記憶體子系統
116‧‧‧快取一致性模組
118‧‧‧快取
120‧‧‧互連結構
122‧‧‧非持續儲存器
124‧‧‧持續儲存器
202‧‧‧處理器
208E‧‧‧早期持續儲存指令
208L‧‧‧後期持續儲存指令
210‧‧‧持續儲存屏障指令
214‧‧‧記憶體子系統模組
224‧‧‧持續儲存器
226‧‧‧解碼單元
228‧‧‧儲存操作
230‧‧‧碼
411‧‧‧解碼持續儲存屏障指令
414‧‧‧記憶體子系統模組
416‧‧‧快取一致性模組
418‧‧‧快取
422‧‧‧非持續儲存器
424‧‧‧持續儲存器
444‧‧‧持續儲存屏障緩衝器管理單元
446‧‧‧持續儲存屏障緩衝器
448‧‧‧快取列
450‧‧‧信號
452‧‧‧移除操作
454‧‧‧快取列移除操作
511‧‧‧持續儲存屏障指令
520‧‧‧互連
524‧‧‧持續儲存器
548‧‧‧快取列
552‧‧‧快取列儲存操作
560‧‧‧資料
624‧‧‧持續記憶體
662‧‧‧預寫式日誌
664‧‧‧資料
668‧‧‧資料
670‧‧‧資料
918‧‧‧快取階層
924‧‧‧持續儲存器
990-1‧‧‧第一核芯
990-2‧‧‧第二核芯
992‧‧‧儲存緩衝器
993‧‧‧L1快取
994‧‧‧L2快取
996‧‧‧記憶體控制器
1000‧‧‧處理器管線
1002‧‧‧擷取階段
1004‧‧‧長度解碼階段
1006‧‧‧解碼階段
1008‧‧‧配置階段
1010‧‧‧重新命名階段
1012‧‧‧排程階段
1014‧‧‧暫存器讀取/記憶體讀取階段
1016‧‧‧執行階段
1018‧‧‧寫回/記憶體寫入階段
1022‧‧‧異常處置階段
1024‧‧‧確認階段
1030‧‧‧前端單元
1032‧‧‧分支預測單元
1034‧‧‧指令快取單元
1036‧‧‧指令轉譯後備緩衝器
1038‧‧‧指令擷取單元
1040‧‧‧解碼單元
1050‧‧‧執行引擎單元
1052‧‧‧重新命名/配置器單元
1054‧‧‧引退單元
1056‧‧‧排程器單元
1058‧‧‧實體暫存器檔案單元
1060‧‧‧執行叢集
1062‧‧‧執行單元
1064‧‧‧記憶體存取單元
1070‧‧‧記憶體單元
1072‧‧‧資料轉譯後備緩衝器單元
1074‧‧‧資料快取單元
1076‧‧‧L2快取單元
1090‧‧‧處理器核芯
1100‧‧‧指令解碼器
1102‧‧‧晶粒上互連網路
1104‧‧‧L2快取
1106‧‧‧L1快取
1106A‧‧‧L1資料快取
1108‧‧‧純量單元
1110‧‧‧向量單元
1112‧‧‧純量暫存器
1114‧‧‧向量暫存器
1120‧‧‧拌和單元
1122‧‧‧數字轉換單元
1124‧‧‧複製單元
1126‧‧‧寫入遮罩暫存器
1128‧‧‧16位寬算術邏輯單元
1200‧‧‧處理器
1202‧‧‧單一核芯
1204‧‧‧快取單元
1206‧‧‧共用快取單元
1208‧‧‧專用邏輯
1210‧‧‧系統代理單元
1212‧‧‧環狀互連單元
1214‧‧‧整合式記憶體控制器單元
1216‧‧‧匯流排控制器單元
1300‧‧‧系統
1310‧‧‧處理器
1315‧‧‧處理器
1320‧‧‧控制器集線器
1340‧‧‧記憶體
1345‧‧‧協同處理器
1350‧‧‧輸入/輸出集線器
1360‧‧‧輸入/輸出裝置
1390‧‧‧圖形記憶體控制器集線器
1395‧‧‧連接器
1400‧‧‧多處理器系統
1414‧‧‧輸入/輸出裝置
1415‧‧‧處理器
1416‧‧‧第一匯流排
1418‧‧‧匯流排橋接器
1420‧‧‧第二匯流排
1422‧‧‧滑鼠
1424‧‧‧音頻輸入/輸出裝置
1427‧‧‧通信裝置
1428‧‧‧儲存器單元
1430‧‧‧指令/碼及資料
1432‧‧‧記憶體
1434‧‧‧記憶體
1438‧‧‧協同處理器
1439‧‧‧高性能介面
1450‧‧‧點對點介面
1452‧‧‧點對點介面
1454‧‧‧點對點介面
1470‧‧‧處理器
1472‧‧‧整合式記憶體控制器邏輯
1476‧‧‧點對點介面
1478‧‧‧點對點介面
1480‧‧‧處理器
1482‧‧‧整合式記憶體控制器邏輯
1486‧‧‧點對點介面
1488‧‧‧點對點介面
1490‧‧‧晶片組
1494‧‧‧點對點介面電路
1496‧‧‧介面
1498‧‧‧點對點介面電路
1500‧‧‧系統
1514‧‧‧輸入/輸出裝置
1515‧‧‧舊輸入/輸出裝置
1600‧‧‧系統晶片
1602‧‧‧互連單元
1610‧‧‧應用處理器
1620‧‧‧協同處理器
1630‧‧‧靜態隨機存取記憶體單元
1632‧‧‧直接記憶體存取單元
1640‧‧‧顯示器單元
1702‧‧‧高階語言
1704‧‧‧x86編譯器
1706‧‧‧x86二進制碼
1708‧‧‧替代指令集編譯器
1710‧‧‧替代指令集二進制碼
1712‧‧‧指令轉換器
1714‧‧‧處理器
1716‧‧‧處理器
本發明可以藉由參考以下說明及揭示實施例之附圖而徹底瞭解。圖中:圖1為一供本發明之實施例實施於其中的電腦系統之實施例之方塊圖。
圖2為一可操作執行持續儲存屏障指令之實施例的處理器之實施例之方塊圖。
圖3為一執行持續儲存屏障指令之實施例的方法之實施例之方塊流程圖。
圖4為一具有持續儲存屏障緩衝器之示範實施例的記憶體子系統模組之示範實施例之方塊圖。
圖5為一具有資料對應於不同持續儲存屏障指令的用以持續儲存屏障緩衝器的快取列之示範實施例之方塊圖。
圖6為一具有資料及預寫式日誌的持續記憶體之實施例之方塊圖。
圖7為一不使用本文內所述持續儲存屏障指令執行的預寫式日誌的可行方法之方塊流程圖。
圖8為一使用持續儲存屏障指令之實施例執行的預寫式登錄方法之示範實施例之方塊流程圖。
圖9為方塊圖,揭示用以持續儲存屏障緩衝器之實施例的多個適當位置。
圖10A為方塊圖,揭示一有序管線實施例及一暫存器重新命名未依序發送/執行管線實施例。
圖10B為包括一前端單元耦合於一執行引擎單元且兩者皆耦合於一記憶體單元的處理器核芯之實施例之方塊圖。
圖11A為一單一處理器核芯之實施例之方塊圖,連同其連接之晶粒上互連網路及其第二階(L2)快取之區域子集。
圖11B為圖11A之處理器核芯的一部分之展開圖之實施例之方塊圖。
圖12為一具有多核芯、具有一整合式記憶體控制器、及具有整合式圖形的處理器之實施例之方塊圖。
圖13為一電腦架構之第一實施例之方塊圖。
圖14為一電腦架構之第二實施例之方塊圖。
圖15為一電腦架構之第三實施例之方塊圖。
圖16為一系統晶片架構之實施例之方塊圖。
圖17為根據本發明之實施例使用一軟體指令轉換器將一來源指令集中之二進制指令轉換成一目標指令集中之二進制指令的方塊圖。
【發明內容及實施方式】
本文內揭露持續儲存屏障指令、執行指令之處理器、當處理或執行指令時由處理器實施之方法、及併入一或多個處理器以處理或執行指令之系統。在文後之說明中,將陳述許多特定細節(例如,特定指令操作、處理器組態、微架構細節、操作序列、指令使用、等等)。惟,實施例 可以在沒有這些特定細節下予以實施。在其他情況中,習知電路、結構及技術並未被詳細揭示,以免模糊對本文之理解。
圖1為供本發明之實施例實施於其中之一電腦系統100之實施例之方塊圖。電腦系統包括一處理器102、一選用揮發性或非持續儲存器122、及一非揮發性或持續儲存器124。非持續儲存器122為選用的,並非必要的。處理器可以藉由一或多個互連結構120,例如一或多個匯流排或其他互連、一或多個集線器或其他晶片組件、其組合、等等,以耦合於非持續儲存器122及持續儲存器124。在此技藝中習知將處理器與揮發性及非揮發性記憶體耦合之許多方式皆適用。
揮發性記憶體代表當電力未被供應時即喪失其內容之記憶體或儲存器類型。對比之下,非揮發性記憶體代表即使當電力未被供應時仍可長時間保有其內容之記憶體或儲存器類型。例如,即使在無電力數週、數月、或數年後,資料仍可從非揮發性記憶體讀出。非持續儲存器之適合類型之範例包括,但是不限於,有動態隨機存取記憶體(DRAM)及其他形式之RAM,包括未來所研發之類型。持續儲存器之適合類型之範例包括,但是不限於,硬碟機、磁帶、其他類型之磁性儲存裝置、快閃記憶體、許多類型之唯讀記憶體(ROM)、光碟、鐵電式隨機存取記憶體(F-RAM)、及磁阻式隨機存取記憶體、及未來所研發之類型。
在一些實施例中,非持續儲存器122及持續儲存器124兩者可以選用地一起或共同地被使用作為一初級(primary)儲存器且皆可存取於處理器(例如,可由處理器定址的)。在其他實施例中,非持續儲存器122可以被選用地省略,及持續儲存器124可以被使用作為一存取於處理器之初級儲存器(例如,可由處理器定址的)。在另外其他實施例中,非持續儲存器122可以被部署作為一初級儲存器(例如,主記憶體)且持續儲存器可以被部署作為一次級(secondary)或備份儲存器,但是持續儲存器係可以存取於處理器(例如,可由處理器定址的)。
處理器102具有一指令集104。指令集為處理器之指令集架構(ISA)的一部分,且包括可供處理器操作執行之本機(native)指令。指令集之指令代表巨指令、組合語言指令、或供處理器執行之機器級指令,對比於微指令或已從此指令集之指令解碼的其他指令。如圖所示,指令集可包括一或多個載入指令106,用以從非持續及/或持續儲存器載入或讀出資料。指令集亦包括一或多個儲存指令108,用以在非持續及/或持續儲存器中移動、寫入、或儲存資料。
處理器具有一管線112,用以處理指令集之指令。舉例而言,管線可包括一擷取指令之指令擷取單元、一解碼指令之指令解碼單元、一或多個執行解碼指令之執行單元、等等。在此技藝中習知之許多不同處理器管線設計皆適用。本發明之範圍並不限於任意習知的管線設計。處理 器亦具有一記憶體子系統114,用以和非持續及/或持續儲存器形成介面。記憶體子系統可包括一或多個快取118(例如,一或多階快取)。例如,某些處理器具有一較接近於管線及/或較遠於持續儲存器之組合式第一階(L1)指令及資料快取,及一相對較遠於管線及/或相對較接近於持續儲存器之第二階(L2)資料快取。其他處理器可具有一單階快取,或是三或更多個不同階快取。各快取可依需要保留指令及/或資料,以用於特定實施。
對於快取118的一原因在於協助減少處理器存取非持續儲存器及/或持續儲存器中之資料的潛時(latency)。存取非持續儲存器及/或持續儲存器中之資料通常有明顯比存取快取中之資料慢的傾向。例如,一般存取快取中之資料費時不超過幾個處理器時脈循環,而存取初級儲存器中之資料則代表性地需費時數十至數百個時脈循環。因此,為了協助改善性能,處理器可以從非持續及/或持續儲存器攜載某些資料(例如,具有空間上及/或時間上區域性之資料)至快取內,使得若在不久的未來再次需要相同資料時,其可從快取迅速存取,而非從非持續及/或持續儲存器較緩慢存取。
此外,儲存指令108可以不直接及/或立即從處理器儲存資料至非持續及/或持續儲存器。反而,資料可以初始地快取或儲存於快取118中。同樣地,在其不久的未來再次需要的情況下,這有助於保持資料接近於處理器及/或有助於避免較長潛時存取於儲存器。處理器之記憶體子 系統可具有一快取一致性機構或模組116,以協助確保資料在適當時間一致地儲存至非持續及/或持續儲存器,使得系統中之所有實體(例如,另一處理器)看到正確及目前版本的資料。舉例而言,快取一致性機構或模組可協助實施一MESI協定,其中,各快取列係處於修改、互斥、共用、或無效之四個狀態的其中之一。
儲存資料於持續儲存器124(例如,非揮發性記憶體)中之一優點為資料之持續或持久性。持續或持久性大致是指在電力喪失、操作系統失效、系統故障、處理器失效、或大部分其他錯誤類型(例如,電腦系統必須重新開機)情況下並不會喪失儲存之資料。一旦資料被儲存於持續儲存器時,即使出現電力喪失、操作系統失效、等等,其通常仍可維持不變。再者,即使處理器失效或電腦系統因硬體故障而失效,只要持續儲存器保全,其通常可以恢復資料。對比之下,儲存於非持續儲存器122(例如,揮發性記憶體)中之資料通常不被視為持續或持久。相似地,儲存於快取118以及載入/儲存緩衝器及/或處理器之許多其他暫時快取及/或緩衝結構(圖中為了簡明而未繪示)中之資料通常也不被視為持續或持久。儲存於非持續儲存器、快取、等等中的這些資料可能在電力喪失、操作系統失效、系統故障、處理器失效、及某些其他錯誤類型情況下而被失去。
此外,某些應用及/或實施方式需要將資料持續或持久儲存。例如,在某些資料庫應用及/或資料異動中,極 其重要的是不失去資料。再者,在某些應用及/或實施方式中,將資料依一特定順序持續及/或持久儲存是有助益的(例如,將一段資料持續及/或持久儲存在另一段資料之前)。舉例而言,像是在預寫式日誌、其他序列儲存演算法、等等的情況中。在一些實施例中,處理器之指令集104可包括一持續儲存屏障指令110之實施例,以致使或確保資料之一相關儲存在資料之後續儲存被執行於持續儲存器124之前先被執行於持續儲存器124。
圖2為一可操作執行持續儲存屏障指令210之實施例的處理器202之實施例之方塊圖。在一些實施例中,處理器可以是通用處理器(例如,通用微處理器或桌上型、膝上型、或其他電腦中所使用之中央處理單元(CPU))。另者,處理器可以是專用處理器。適用之通用處理器範例包括,但是不限於,網路處理器、通信處理器、密碼處理器、圖形處理器、協同處理器、嵌入式處理器、數位信號處理器(DSPs)、及控制器(例如,微控制器)。處理器可具有許多複雜指令集計算(CISC)架構、精簡指令集計算(RISC)架構、超長指令字(VLIW)架構、混合式架構、其他架構類型之任一者,或具有不同架構之組合(例如,不同核芯可以有不同架構)。
操作期間,處理器202可以執行、運算、或實施碼230(例如,程式)。例如,碼可以從持續儲存器224及/或一選用非持續記憶體(圖中未示)擷取、載入、或接收到處理器內。持續儲存器224係以虛線來予以揭示,以指 示其通常並非處理器的一部分。碼可包括許多不同的指令類型。在諸指令之中,碼包括持續儲存屏障指令210。在一些實施例中,持續儲存屏障指令本身可以選用作為一持續儲存指令,以移動、寫入、或儲存資料於持續儲存器224(例如,指令210可以是持續儲存及持續儲存屏障指令)。此持續儲存及持續儲存屏障指令210可具有一選用相關聯持續儲存操作228,以儲存相關聯資料於持續儲存器224。在諸實施例中,指令210可明確指定(例如,透過一或多欄(field)或一位元組)、或指示(例如,暗示)一將資料儲存於持續儲存器之來源運算元。指令210可明確指定(例如,透過一或多欄或一位元組)、或指示(例如,暗示)持續儲存器224中之一欲儲存資料的位址或其他位置。請注意,在一些實施例中,持續儲存器224係可以由處理器之一指令集之指令定址的。或者,在其他實施例中,持續儲存屏障指令可以無相關聯之持續儲存操作228。例如,持續儲存屏障指令可設計成或用以和一各別但是相關之持續儲存指令208E一起工作,其可操作以將資料儲存於持續儲存器224。例如,各別之持續儲存指令208E可設計成或隱含為依照原始程式順序或碼序(例如,緊接於)位於持續儲存屏障指令210之前(或者(例如,緊接於)之後)。碼也可包括一組依照程式順序發生之比持續儲存屏障指令210晚及/或之後的一或多個持續儲存指令208L。早期持續儲存指令208E依照原始程式順序或碼序也發生得比所有後期持續儲存指令208L早及/或 之前。
復參閱圖2,處理器包括一解碼單元或解碼器226。解碼單元可接收及解碼持續儲存屏障指令210。持續儲存屏障指令可代表巨指令、組合語言指令、機器碼指令,或處理器之一指令集之其他指令或控制信號。解碼單元可以輸出一或多個相對低階指令或控制信號(例如,一或多個微指令、微操作、微碼輸入點、解碼指令或控制信號、等等),其反映、代表、及/或源自相對高階持續儲存屏障指令。在一些實施例中,解碼單元可包括一或多個用以接收指令之輸入結構(例如,埠、互連、介面)、一與其耦合以辨識及解碼指令之指令辨識及解碼邏輯、及一或多個與其耦合以輸出低階指令或控制信號之輸出結構(例如,埠、互連、介面)。解碼單元可以使用許多不同的機構來實施,其包括,但是不限定於,微碼唯讀記憶體(ROMs)、查詢表、硬體實施方式、可編程邏輯陣列(PLAs)、及此技藝中習知用以實施解碼單元之其他機構。
在一些實施例中,取代持續儲存屏障指令被直接提供於解碼單元,可以選用地使用指令仿真器、翻譯器、轉譯器、解譯器、或其他指令轉換模組。指令轉換模組之許多類型在此技藝中已屬習知且可被實施於軟體、硬體、韌體、或其組合中。在一些實施例中,指令轉換模組可以位於處理器外,例如,像是在各別晶粒上及/或在一記憶體中(例如,靜態、動態、或執行期仿真模組)。舉例而 言,指令轉換模組可以接收屬於第一指令集之持續儲存屏障指令,且可模仿、翻譯、轉譯、解譯、或轉換持續儲存屏障指令成屬於第二不同指令集之一或多個相對應中間指令或控制信號。第二指令集之一或多個中間指令或控制信號可提供於一解碼單元(例如,解碼單元226),解碼單元可將其解碼成一或多個可由處理器之本機硬體(例如,一記憶體子系統模組)執行的較低階指令或控制信號。
復參閱圖2,一記憶體子系統模組214與解碼單元226相耦合。記憶體子系統模組接收一或多個被解碼或轉換之指令或控制信號,其代表或衍生自持續儲存屏障指令。在實施例中,持續儲存屏障指令為一持續儲存及持續儲存屏障指令,記憶體子系統模組也可接收相關於由指令210指定或指示之來源運算元及由指令210指定或指示之持續儲存器224中欲儲存資料之位址或位置指示的資料。記憶體子系統模組係回應於及/或因為持續儲存屏障指令而操作(例如,回應於從指令解碼之一或多個指令或控制信號),以致使及/或確保在來自所有後期或後續儲存操作及/或指令之資料(亦即,依照原始程式順序發生於給定儲存操作之後者)持續及/或持久儲存於持續儲存器中之前,對應於持續儲存屏障指令之一給定儲存操作(例如,儲存操作228或儲存指令208E)的資料係先持續及/或持久儲存於持續儲存器224中。在一些實施例中,持續儲存屏障指令可以不致使及/或確保所有先前儲存操作及/或指令之資料在所有後期或後續儲存操作及/或指令之資 料前先持續及/或持久儲存於持續儲存器中,反而是此屏障選擇性地僅針對給定儲存操作執行。亦即,不需要屏障所有的先前儲存指令及/或操作,而是僅針對給定之儲存指令及/或操作。此有助於避免用較高性能成本來屏障所有的先前儲存指令及/或操作。在一些實施例中,來自這些其他非屏障儲存指令及/或操作之資料可儲存於處理器快取中,而來自給定屏障儲存指令及/或操作之資料可為非暫存性且可繞過快取及儲存於一不同之持續儲存屏障緩衝器中(例如,緩衝器446)。
在一些實施例中,持續儲存屏障指令為一具有給定儲存操作(例如,儲存操作228)之持續儲存及持續儲存屏障指令。在諸實施例中,在持續儲存及持續儲存屏障指令為一非暫存指令之一些情況下,其執行係操作成使資料儲存於持續儲存器224,且繞過及不儲存在處理器之一或多個快取中(圖中未示)。在其他實施例中,給定儲存操作可對應於一(例如,緊接)在持續儲存屏障指令(例如,儲存指令208E)之前或之後的各別但是相關之指令。在一些實施例中,持續儲存屏障指致使給定儲存操作之對應資料儲存於一新的專屬持續儲存屏障緩衝器中(例如,圖4中之緩衝器446)。在一些實施例中,緩衝器可以選用地僅寫入及/或不執行一由處理器之一或多個快取使用的快取一致性協定(例如,可以不使用由處理器執行之MESI協定)。在一些實施例中,如文後所述,持續儲存屏障緩衝器可執行寫入組合,以容許對應於不同持續儲存 屏障指令之資料被儲存或組合在同一快取列中。在一些實施例中,如文所述,持續儲存屏障指令可被使用以儲存資料至一預寫式日誌,以利改善預寫式日誌之性能。
記憶體子系統模組及/或處理器可包括特定或特殊邏輯(例如,電晶體、積體電路、或其他可與韌體(例如,儲存在非揮發性記憶體中之指令)及/或軟體組合之硬體),其可操作成回應於及/或因為持續儲存屏障指令之原故(亦即,回應於從持續儲存屏障指令解碼之一或多個指令或控制信號)而執行持續儲存屏障指令及/或儲存結果。在一態樣中,記憶體子系統模組大致上也可以視為一執行經解碼持續儲存屏障指令之執行單元,及/或視為一執行經解碼持續儲存屏障指令之單元。在一些實施例中,記憶體子系統模組可包括電路或邏輯,其揭示及揭述用於圖4-5之一或多者,其為一適當實施方式之說明範例,儘管本發明之範疇並非如此限制。
有利的是,持續儲存屏障操作可被用來致使、確保、或保證來自一給定儲存操作之資料係在來自所有後續儲存操作之資料前先儲存於持續儲存器中。一旦資料在持續儲存器中時,其即為持續及/或持久的。此可在某些實施方式中提供某些優點。例如,這有助於增加執行預寫式日誌之效率,如文後進一步所述,雖然本發明之範疇並非如此限制。在其他情況中,此可針對演算法之許多其他類型及/或其他原因,將持續儲存器序列化。
相較於先前技術段落中所述之SFENCE指令, SFENCE指令並未將儲存器序列化成持續儲存器及/或未將持續或持久性序列化。反而,SFENCE指令可被用來將儲存器之全球能見度屏障或序列化成主記憶體(例如,DRAM或其他揮發性記憶體),但該資料可能在某些情況下喪失(例如,電力失效、操作系統失效、處理器失效、當機、等等)。結果,諸指令無法將資料儲存操作之持續或持久性序列化。此外,SFENCE指令將相對於所有後續儲存指令之所有先前儲存指令屏障或序列化,而在一些實施例中,持續儲存屏障指令僅將相對於所有後續儲存指令及/或操作之單一給定對應儲存指令及/或操作序列化。
為了避免模糊本文內容,本文揭示及揭述一相對簡單之處理器202。惟,處理器可選用地包括其他習知處理器組件。諸組件之可行範例包括,但是不限定於,通用暫存器、狀態暫存器(有時稱之為旗標暫存器)、系統控制暫存器、指令擷取單元、預取緩衝器、指令轉譯後備緩衝器(TLB)、資料TLB、分支預測單元、浮點執行單元、SIMD或向量執行單元、未依序執行支援單元(例如,指令排程單元、暫存器重新命名及/或配置單元、指令調度單元、記錄緩衝器(ROB)、保留站、記憶體順序單元、引退(retirement)單元、等等)、匯流排介面單元、位址產生單元、除錯單元、性能監視單元、電力管理單元、包括在處理器中之其他組件、及其許多組合。諸組件可依此技藝中習知的許多不同適當組合及/或組態而被耦合在一起。實施例不限於任意習知諸此組合或組態。再者,諸 實施例可以包括在具有多核芯之處理器中,其至少一核芯係操作成執行一持續儲存屏障指令。
圖3為一執行持續儲存屏障指令之實施例的方法340之實施例之方塊流程圖。在許多實施例中,方法可由一處理器、指令處理裝置、或其他數位邏輯裝置來執行。在一些實施例中,方法340可藉由及/或在圖1之處理器102及/或圖2之處理器202來執行。本文內所揭述用於處理器102、202之組件、特徵、及特定選用細節亦被選用地施加於方法340。或者,方法340可藉由及/或在一相似或不同處理器或裝置來執行。再者,處理器102、202可以執行與方法340相同、相似、或不同之方法。
該方法包括在方塊341接收持續儲存屏障指令。在許多態樣中,指令可以在一處理器或其一部分處(例如,指令擷取單元、解碼單元、匯流排介面單元、等等)接收。在許多態樣中,指令可以從一處理器外及/或晶粒外之來源(例如,從記憶體、互連、等等)、或從一處理器上及/或晶粒上之來源(例如,從指令快取、指令佇列、等等)接收。
該方法包括在方塊342保證、確保、強制執行、或致使在所有後續儲存指令(亦即,依照原始程式順序接續於持續儲存指令後者)被持續儲存在持續儲存器中之前,對應於或相關於持續儲存屏障指令之給定資料先被持續儲存在一持續儲存器中。在一些實施例中,該方法亦包括回應於持續儲存指令而儲存給定資料(例如,在一持續儲存及 持續儲存屏障指令之情況),儘管此非必要。在一些實施例中,指令可以致使給定資料非暫時地繞過處理器快取,儲存於一持續儲存屏障緩衝器(例如,緩衝器446),儘管本發明之範疇並非如此限制。
圖4為一記憶體子系統模組414之示範實施例之方塊圖且揭示一持續儲存屏障緩衝器446之示範實施例。一持續儲存器424與記憶體子系統模組相耦合。持續儲存器可相似或相同於上述者。
一組的一或多個解碼持續儲存屏障指令及/或操作411可被提供於記憶體子系統模組414。在此例中,為了簡明起見,假設已解碼之持續儲存屏障指令併入一持續儲存操作(例如,儲存操作228),儘管本發明之範疇並非如此限制。記憶體子系統模組包括持續儲存屏障緩衝器446及一相對應之持續儲存屏障緩衝器管理單元444。緩衝器管理單元係操作成管理持續儲存屏障緩衝器,例如用以管理資料存入、清除、或移除緩衝器。管理單元可用硬體(例如,積體電路、電晶體或其他電路元件、等等)、韌體(例如,ROM、EPROM、快閃記憶體、或其他持續或非揮發性記憶體及微碼、微指令、或儲存於其中之其他低階指令)、軟體(例如,儲存於記憶體中之較高階指令)、或其組合(例如,可能與一或多個韌體及/或軟體組合之硬體)來實施。
持續儲存屏障緩衝器446係操作成暫時緩衝或儲存與持續儲存屏障指令相關聯之資料(例如,來自儲存操作 228或儲存指令208E之資料)。本發明之範疇並不限於持續儲存屏障緩衝器用的任意特殊記憶體類型。揮發性記憶體之許多類型皆適用,例如像是靜態隨機存取記憶體(SRAM)、用以執行處理器快取之記憶體類型、等等。實際上可與一處理器製成於一晶粒上之記憶體或資料儲存裝置的任意類型可能皆適用。在一些實施例中,持續儲存屏障緩衝器可以選用地同樣組織成一處理器快取且可具有複數個快取列448。如圖所示,持續儲存屏障緩衝器可具有從快取列0 448-0、快取列L 448-L,到快取列N 448-N,其中,N代表適用於特殊實施方式之任意想要的數目。在一些實施例中,可以有大約4到大約數百個快取列,或大約8到大約128個快取列,儘管本發明之範疇並非如此限制。
在一些實施例中,對比於處理器快取,持續儲存屏障緩衝器可以被選用為唯寫,而非一般可讀取。例如,處理器(例如,一核芯)非一般性地可以從記憶體指令執行正常使用者級載入,以從持續儲存屏障緩衝器載入或讀取資料。應該瞭解的是,在某些受限環境下,處理器可以讀取持續儲存屏障緩衝器之內容,例如在除錯或測試期間(例如,在內建自行測試(BIST)期間)。在一些實施例中,除了相關於將快取一致性維持於可執行持續儲存屏障之快取418中的操作以外,快取一致性並不維持於持續儲存屏障緩衝器中。例如,快取可執行MESI協定(例如,快取之快取列可以各有兩個MESI位元),但是持續儲存屏障 緩衝器則否(例如,緩衝器之快取列並沒有兩個MESI位元)。
快取一致性模組416與持續儲存屏障緩衝器管理單元444相耦合。在一些實施例中,當快取一致性模組決定從處理器之一或多個快取418逐出、清除、或移除一快取列時,則在實際從快取清除或移除快取列之前,快取一致性模組可提供指示、通知、或其他信號450(例如,清除快取列信號之意圖)給持續儲存屏障緩衝器管理單元。信號450可以指示、通知、通信、或發送信號至管理單元,一快取列即將從快取清除或移除,且可協助容許管理單元在快取之快取列清除及變成持續性之前從緩衝器清除或移除或儲存一或多個快取到持續記憶體。在一些實施例中,為了維持持續儲存屏障,持續儲存屏障緩衝器管理單元可執行緩衝器清除、逐出、或其他移除操作452,以利從持續儲存屏障緩衝器清除、逐出、或移除或儲存一快取列(例如,快取列L 448-L)到持續儲存器。在一些實施例中,回應於相關聯之持續儲存屏障指令,在與信號450相關聯之一快取清除或其他快取列移除操作454執行將快取418之快取列清除到持續儲存器之前,處理器及/或記憶體子系統模組可保證及/或確保及/或致使此執行發生。緩衝器基於快取列即將被逐出或清除之來自快取一致性模組的信號,其可背景透明地清除到持續記憶體。在一些實施例中,當任意快取列從快取清除到持續儲存器時,整個持續儲存屏障緩衝器可以選用地清除到持續儲存器。這有助於 提供一相對簡便實施方式。在其他實施例中,增添之資訊可選用地儲存在持續儲存屏障緩衝器中,以容許緩衝器中之個別快取列基於個別對應快取列從快取清除,而選擇性清除到持續儲存器。
在一些實施例中,持續儲存屏障緩衝器中之資料不需要清除或移除到持續儲存器,直到一快取列即將從快取被清除或移除到持續儲存器及/或一後續儲存操作即將成為被持續儲存在持續儲存器中之前。除非需要協助以避免較長潛時記憶體存取時,否則通常避免清除緩衝器。有利的是,持續儲存屏障緩衝器有助於避免須等候對應於持續儲存屏障指令之資料儲存到持續儲存器及變成持續性。若此資料被直接儲存到持續儲存器,通常需要更長的潛時操作(例如,儲存資料到持續記憶體常要數十到數百個時脈循環)。在一些實施例中,資料可以在不超過幾個時脈循環內被儲存於持續儲存屏障緩衝器中(例如,不超過大約5個時脈循環)。
在一些實施例中,不同持續儲存屏障指令之間可以選用無持續順序規定。在一些實施例中,藉由容許對應於多個不同持續儲存屏障指令之資料儲存在一持續儲存屏障緩衝器之同一個快取列中,此選用有助於提供持續儲存屏障指令有一較具效率之實施方式。
圖5為一具有資料560-1、560-2對應於不同持續儲存屏障指令511-1、511-2之用於持續儲存屏障緩衝器的快取列548之示範實施例,及在一或多個互連520上之同 一信號或循環中之快取列對持續儲存器524的快取列儲存操作552之示範實施例之方塊圖。第一持續儲存屏障指令511-1具有可儲存於快取列中之第一相關聯或相對應資料560-1。同樣地,第二持續儲存屏障指令511-2具有可儲存於與資料560-1相同之快取列中且同時的第二相關聯或相對應資料560-2。在一些實施例中,此可透過持續儲存屏障緩衝器中之一寫入組合操作來執行。亦即,持續儲存屏障緩衝器可代表一寫入組合緩衝器。
之後,在適當時間(例如,基於清除一從快取一致性模組接收到的快取列信號之意圖),快取列548可以透過一快取列儲存操作552來清除、逐出、或移除或儲存於持續儲存器524。快取列儲存操作可儲存具有對應於不同持續儲存屏障指令511-1、511-2之第一資料560-1及第二資料560-2的快取列。在一些實施例中,快取列儲存操作可執行於一或多個互連520上之一或多個循環或信號之單一及/或共同組中(例如,資料560-1、560-2兩者可在一或多個匯流排循環的同一組上進行)。亦即,對應於多個不同持續儲存屏障指令之資料可以寫入或儲存在同一匯流排或互連循環中之持續記憶體。為了簡明起見,來自僅兩個不同持續儲存屏障指令之資料揭述於此範例中,但是在一些情況中來自三或更多個不同持續儲存屏障指令之資料也可以組合在同一快取列中。有利的是,這項將對應於不同持續儲存屏障指令之資料組合在同一個快取列中及執行單一快取列寫入持續記憶體的能力有助於避免或免除一或多 個相對長潛時持續記憶體。此外,此亦有助於減少導引至持續記憶體之一或多個互連上的頻寬量。
處理器及/或記憶體子系統單元可依序執行儲存資料於持續儲存屏障緩衝器,且當資料隨後從持續儲存屏障緩衝器被清除或移除時,同一個快取列中之所有資料可自動寫到持續儲存器。依序的意思是指資料可以被儲存在與對應持續儲存屏障指令之原始程式順序相同的持續儲存屏障緩衝器中。在一些實施例中,不同快取列可以從持續儲存屏障緩衝器未依序(out-of-order)清除或移除,以充分利用底線持續記憶體系統中之記憶體平行性。未依序的意思是指資料依不同於對應持續儲存屏障指令之原始程式順序從持續儲存屏障緩衝器被清除或移除。
在一些實施例中,本文內所揭露之指令及處理器可用以改善預寫式日誌之效率。預寫式日誌為當修改資料時達成單元性與持久性/持續性之習知技術。圖6為一具有資料664及預寫式日誌662的持續記憶體624之實施例之方塊圖。持續記憶體代表持續記憶體之前述類型的任一者。資料代表使用在電腦系統、資料庫、等等中的資料之許多不同類型。適合的資料範例包括,但是不限定於,檔案、記錄、資料結構、列表、資料庫記錄、影像、視頻、等等。預寫式日誌通常位於與資料不同的持續記憶體區域中。在圖中,虛線表示預寫式日誌可以選用位於或儲存於一與資料不同的持續儲存裝置上(例如,不同磁碟)。此進一步有助於確保資料持久性/持續性(例如,發生磁碟 失效的情況),但此為非必要。
在預寫式日誌中,資料及/或資料修改可以在資料修改實際儲存於持續記憶體中之資料前先寫入預寫式日誌中。例如,在資料670之給定片段改變或修改前,資料668之給定片段之未修改複本可被儲存於預寫式日誌662中。依此方式,當資料之給定片段正在處理器內修改時,即使發生電力喪失或其他狀況致使資料之給定片段從非持續(例如,揮發性)記憶體(例如,處理器快取)失去,資料之給定片段之複本仍可在狀況發生後從預寫式日誌恢復。有利的是,此有助於防止資料之給定片段正在修改時,即使面臨電力失效或許多其他可能的慘重過失(error),資料仍不致於喪失。進一步揭示之,當電腦系統經歷電力喪失或慘重過失時,若程式在執行一操作之中間階段,即修改一組資料。當重新開始及重新開機時,程式通常需要知道操作是否全部完成、部分完成、或完全失效。若使用預寫式日誌,程式可檢查預寫式日誌,以判斷操作的哪一部分已在過失發生前確實完成。程式可使用此資訊以決定如何處理及/或如何繼續或重新開始操作。例如,從預寫式日誌之判斷,程式可利用第一未完成修改重試操作啟始。
預寫式日誌常被實施為一異動(transaction),其中,資料之多個不同片段是在同一異動內修改。只有在資料之所有不同片段成功登錄及修改後,且資料之修改片段已儲存在持續記憶體中才算異動成功完成。大致上,只有 在異動全部成功完成時稱為異動「確認」。確認異動基本上即宣告整個異動已成功完成及/或表示所有嘗試修改已成功完成且已儲存於持續記憶體中。此刻,儲存或保存在預寫式日誌中之資料已不再需要,因為即使發生慘重狀況,所有修改資料已儲存於持續記憶體中。在全程改變或修改期間,預寫式日誌提供持續性及/或持久性於資料之給定組,因為資料之給定組之複本在資料之給定組做成任何改變前即儲存於持續記憶體中。此外,預寫式日誌提供單元性,因為資料之給定組係在異動期間藉由確認或不確認全部異動而全部更新或不更新。
在預寫式日誌中,通常應維持兩個持續性順序。首先,一登錄持續性順序通常應予以維持。根據登錄持續性順序,欲修改之原始資料應該在對應之修改資料儲存於持續儲存器中之前即被持續儲存於持續儲存器之預寫式日誌中。否則,若修改之資料被儲存於持續儲存器中且在原始資料之上,且欲修改之原始資料是在快取中,尚未儲存於持續儲存器中之預寫式日誌,此時若發生慘重狀況(例如,電力失效),則欲修改之原始資料並未保存且可能喪失,藉以防止在異動未成功完成的情況下恢復。通常應予以維持之第二持續性順序為一確認持續性順序。根據確認持續性順序,異動中之所有修改資料應該在確認指示被持續儲存於持續儲存器中之預寫式日誌前即先被持續儲存於持續儲存器。否則,當一些修改資料儲存於快取中時,若確認指示被持續儲存於持續儲存器中之預寫式日誌,此修 改資料可能在慘重狀況期間喪失,即使預寫式日誌中之確認指示會指示異動成功完成。其挑戰在於若不採取預防措施,一或多處理器快取中之資料快取可能違反兩個持續性順序之一或多者,快取通常在揮發性或非持續儲存器中執行且易出現慘重狀況。
圖7為一不使用本文內所揭示持續儲存屏障指令執行的預寫式日誌的可行方法772之方塊流程圖。在方塊773,持續儲存器中欲修改或變更之資料儲存於持續儲存器中之一預寫式日誌。由於存在於一欲修改資料之處理器中的一或多個快取可能實際上未直接儲存於預寫式日誌中,而是在諸一或多個快取中快取。這些處理器快取代表非持續儲存器且在發生某些狀況時(例如,電力喪失、等等)有可能失去其內容。
在方塊774,欲修改之資料從一或多個快取移除(例如,清除)到持續儲存器。例如,此可使用指令之一快取列清除類型執行。這通常是需要的,以利滿足日誌持續順序。此方式之一項缺點在於其通常耗費大量時間及/或有高潛時,因為需要時間來寫入或儲存到持續儲存器(例如,數十至數百個時脈循環)。
接著,在方塊775,欲修改之資料可實際修改。請注意在方塊775之資料修改是在方塊774中欲修改之資料已從一或多個快取移除到持續儲存器之後進行,藉以確保欲修改之資料之複本被持續儲存在持續儲存器中,而不是在非持續處理器快取中。這有助於確保資料持續/持久性, 如上所述。
在方塊776,判斷是否有許多資料欲修改。若有許多資料欲修改(亦即,在方塊776之判斷為「是」),則本方法重新回到方塊773-775。反之,若在此異動中已無資料欲修改(亦即,在方塊776之判斷為「否」),則本方法前進到方塊777。請注意,針對已修改資料之各片段,在方塊773欲修改之資料儲存於預寫式日誌的時間與在方塊775實際修改資料的時間之間,欲修改之資料需在方塊775從快取清除至持續儲存器(亦即,實際儲存於持續儲存器之預寫式日誌中而非在快取中)。所有這些清除動作的一項缺點在於其耗費大量時間來執行。
在方塊777,所有修改資料從快取移除(例如,清除)到持續儲存器。這是因為在方塊775資料之修改並未實際將修改資料儲存在持續儲存器中,而是儲存在快取記憶體中。通常這必須在確認指示儲存在持續儲存器之預寫式日誌中之前完成,以利滿足持續順序。
隨後,在方塊778,一確認指示儲存在預寫式日誌中。確認指示可指示異動已成功完成,如上所述。在方塊779,確認指示可以從快取移除(例如,清除)至持續儲存器。
若一慘重狀況發生在確認指示儲存於預寫式日誌中以前,異動之所有部分資料更新可使用預寫式日誌中之原始資料回復到其原始資料。反之,若一慘重狀況發生在確認指示儲存於預寫式日誌中以後,則沒有恢復的必要,因為 所有資料更新已成功完成。
如上所述,在方塊775各資料更新前,在方塊774將欲修改之資料從快取移除(例如,清除)趨於耗費過量時間。在一些實施例中,由於更新之資料通常停留在快取中,故無需將欲修改之資料從快取移除(例如,清除)到持續儲存器,直到修改之資料確實從快取存回到持續儲存器,這在許多實施方式中較罕見(例如,由於程式中之資料區域化)。在此實施方式中,更加有效率之預寫式日誌可以藉由省略在方塊774之資料移除(例如,清除)而達成。不利的是,修改之資料從快取到持續儲存器之寫回通常由硬體執行(例如,快取一致性模組)且因此在許多實施方式中其並不在軟體之控制下。請注意,一些適用之實施方式可代替地執行軟體控制式快取一致性。
圖8為一使用持續儲存屏障指令之實施例執行的預寫式登錄方法880之示範實施例之方塊流程圖。在一些實施例中,在方塊881,在一持續儲存器中欲修改或變更之資料可使用(或配合)一持續儲存屏障指令之實施例儲存於持續儲存器之一預寫式日誌中。持續儲存屏障指令本身、或一相對應之各別儲存指令可儲存資料,如上所述。在一些實施例中,資料可以初始及/或暫時儲存於一持續儲存屏障緩衝器中(例如,緩衝器446)。在一些實施例中,持續儲存屏障指令可以是一非時間性指令且資料可繞過處理器快取。此有助於避免資料佔用空間及/或污染快取。
隨後,在方塊882,欲修改之資料可確實被修改。此 修改資料可以初始及/或暫時在處理器快取中快取。
重要的是,在方塊883,處理器回應於持續儲存屏障指令而確保、保證、或強制欲修改之資料移除(例如,清除、逐出、等等),且在修改之資料從快取移除(例如,清除、逐出、等等)且被持續儲存於持續儲存器以前先被持續儲存於持續儲存器。有利的是,不需要將欲修改之資料從快取清除或移除到持續儲存器,如同圖7中之方塊774所執行。重要的是,此有助於資料修改之各片段避免相對高潛時記憶體存取操作(例如,數十至數百個時脈循環)。持續儲存屏障指令確保日誌持續順序仍然維持。在許多情況中,欲修改之資料未被實際持續儲存於持續儲存器是不值得的,除非直到修改之資料被持續儲存於持續儲存器前或當時。若修改之資料未儲存於持續儲存器,指令即不保證欲修改之資料儲存於持續儲存器。
在方塊884,判斷是否有更多資料欲修改。若有更多資料欲修改(亦即,在方塊884之判斷為「是」),則本方法重新回到方塊881-883。反之,若在此異動中已無資料欲修改(亦即,在方塊884之判斷為「否」),則本方法前進到方塊885。
在方塊885,所有修改之資料從快取移除(例如,清除)至持續儲存器。這是因為在方塊882資料之修改並未實際將修改資料儲存在持續儲存器中,而是儲存在快取中。隨後,在方塊886,一確認指示儲存於預寫式日誌。在方塊887,確認指示可以從快取移除(例如,清除)至 持續儲存器。
有利的是,持續儲存屏障指令之使用有助於資料修改之各片段避免較高潛時記憶體存取操作。在一些實施例中,若所有修改資料可以適應或儲存於快取中,則在確認時刻將所有修改資料從快取清除到持續儲存器之前,演算法可以僅將資料從持續儲存屏障緩衝器清除或移除至持續儲存器。再者,在一些實施例中,若持續儲存屏障緩衝器可以寫入結合與同一快取列中不同持續儲存屏障指令對應之資料,此可進一步協助避免一些長潛時資料寫至持續儲存器。
在一些實施例中,軟體可實施攜載序號於快取列單元中之預寫式日誌。在快取列從持續儲存屏障緩衝器清除或移除期間當機時,僅有具正確序號之連續日誌可用以恢復資料。例如,序號1、2、3、及5可能還存在,但是序號4可能遺失。當進行恢復時,序號具有關於何者需恢復且何者不需要恢復之資訊。
儘管以上說明已強調預寫式登錄,應該瞭解的是本發明之範疇並非如此限制。本文內所述之持續儲存屏障指令係通用指令且可用於許多不同用途。此外,預寫式日誌之相似或相關技術也可受益於本文內所述之持續儲存屏障指令。例如,在資料修改前將資料之複本儲存於一不同持續記憶體位置之其他技術、在更新期間提供資料單元性與持久性之其他技術、等等皆有可能受益。也可能受益之其他技術範例包括,但是不限定於,影子分頁、檔案系統更新 日誌、等等。
圖9為方塊圖,揭示用於一持續儲存屏障緩衝器之實施例的適當位置之多個範例。電腦系統通常有多個不同類型組件,供儲存資料通往持續儲存器。在揭示範例中,這些組件包括一儲存緩衝器992、一或多階快取或一快取階層918(例如,包括一L1快取993及一L2快取994)、一記憶體控制器996、及最後是持續儲存器924。一儲存器可以於處理器管線與持續儲存器之間的這些或其他組件或硬體的任一者快取或緩衝。
一持續儲存屏障緩衝器可以被變化設置在這些組件或硬體結構之中及/或設置在處理器管線與持續儲存器之間的許多不同距離處。視特殊位置而定,從硬體結構清除或移除之資料可促使來自持續儲存屏障緩衝器之資料清除或移除。大致上,持續儲存屏障緩衝器越接近處理器管線,則依照程式順序之一後續非持續儲存屏障指令可以將資料儲存於快取之前,資料儲存於持續儲存屏障緩衝器所需之持續儲存屏障指令潛時越低。另一方面,持續儲存屏障緩衝器越接近處理器管線,持續儲存屏障緩衝器清除操作將越頻繁(例如,由於緩衝之前有較少快取),且該持續儲存屏障緩衝器清除操作之潛時越高(例如,由於從持續儲存屏障緩衝器到持續儲存器之路徑較長)。
在一些實施例中,如參考編號A所示,持續儲存屏障緩衝器可位於或設置於儲存緩衝器992之輸出端與往持續儲存器924之輸入端之間的許多位置。在一些實施例中, 如參考編號B所示,持續儲存屏障緩衝器可選用位於或設置於最接近於處理器管線的第一階快取(例如,L1快取993)之輸出端與記憶體控制器996之輸出端之間的許多位置。在一些實施例中,如參考編號C所示,持續儲存屏障緩衝器可選用位於或設置於最末階快取(例如,L2快取994或L3快取)之輸出端與記憶體控制器之輸入端之間。在一些實施例中,如參考編號D所示,持續儲存屏障緩衝器可選用地位於或設置於兩個不同階之快取之間(例如,L1快取與L2快取之間)。在一個態樣中,L1快取可專屬於第一核芯990-1,而L2快取則可由第一核芯990-1及第二核芯990-2共用。在一些實施例中,如參考編號E所示,持續儲存屏障緩衝器可選用位於或設置於記憶體控制器內。本發明之範疇並不限於持續儲存屏障緩衝器之任意習知位置。持續儲存屏障緩衝器之理想位置可由習於此技者所決定而不必過度試驗,而且基於持續儲存屏障指令潛時、持續儲存屏障緩衝器清除費用、或其他考量,以本發明之效益即可滿足特殊實施方式之需求。
在多核芯系統上,另一設計選擇是將持續儲存屏障緩衝器設在一共用組件或硬體結構、或每核芯之私用或專屬組件或硬體結構中。私用/專屬組件或硬體結構較接近處理器管線且共用硬體結構較接近持續儲存器。將持續儲存屏障緩衝器設在共用硬體結構可因為來自一不同軟體線程之資料更新變化而引入較多之持續儲存屏障緩衝器清除。另一方面,將持續儲存屏障緩衝器設在一私用硬體結構則 可牽涉到軟體線程之操作系統內文切換到不同核芯時清除持續儲存屏障緩衝器。其可能關係到在可能致使操作系統內文切換的所有硬體中斷及/或異常時清除持續儲存屏障緩衝器之硬體。在一些實施例中,持續儲存屏障緩衝器可以基於快取列位址雜亂而選用地被區隔成複數片。在任一快取片中逐出快取資料之情況中,此容許持續儲存屏障緩衝器在所有快取片中被清除。
示範性核芯架構、處理器、及電腦架構
處理器核芯可針對不同用途、及在不同處理器中依不同方式來實施。例如,諸核芯之實施方式包括:1)用於通用電腦之通用有序核芯;2)用於通用電腦之高性能通用未依序核芯;3)基本上用於圖形及/或科學(通量)計算之專用核芯。不同處理器之實施方式包括:1)一CPU,包括一或多個用於通用計算之通用有序核芯及/或一或多個用於通用計算之通用未依序核芯;及2)一協同處理器,包括一或多個用於圖形及/或科學(通量)之專用核芯。這些不同處理器致使不同電腦系統架構,其可包括:1)協同處理器,設在一來自CPU之個別晶片上;2)協同處理器,設在一與CPU相同封裝中之個別晶粒上;3)協同處理器,設在與CPU相同之晶粒上(在此情況中,此協同處理器有時稱為專用邏輯,例如整合式圖形及/或科學(通量)邏輯,或專用核芯);及4)一系統,設在一包括相同晶粒上有上述CPU(有時稱為應用核芯或 應用處理器)、上述協同處理器、及其他功能之晶片上。示範性核芯架構將藉由示範性處理器及電腦架構之說明揭述於後。
示範性核芯架構 有序及未依序核芯方塊圖
圖10A為方塊圖,揭示根據本發明之實施例之一示範性有序管線及一示範性暫存器重新命名、未依序發送/執行管線兩者。圖10B為方塊圖,揭示根據本發明之實施例之包括在一處理器中的一有序架構核芯示範實施例及一示範性暫存器重新命名、未依序發送/執行架構核芯。圖10A-B中之實線框說明有序管線及有序核芯,而虛線框之選用附加則說明暫存器重新命名、未依序發送/執行管線及核芯。已知有序態樣為未依序態樣之一子集,未依序態樣將被揭述於後。
在圖10A中,一處理器管線1000包括一擷取階段1002、一長度解碼階段1004、一解碼階段1006、一配置階段1008、一重新命名階段1010、一排程(亦稱為配送或發送)階段1012、一暫存器讀取/記憶體讀取階段1014、一執行階段1016、一寫回/記憶體寫入階段1018、一異常處置階段1022、及一確認階段1024。
圖10B揭示處理器核芯1090包括一前端單元1030耦合於一執行引擎單元1050,且兩者皆耦合於一記憶體單元1070。核芯1090可以是一精簡指令集計算(RISC)核 芯、複雜指令集計算(CISC)核芯、超長指令字(VLIW)核芯、或混合式或替代式核芯類型。然而如另一選項,核芯1090可以是一專用核芯,例如像是一網路或通信核芯、壓縮引擎、協同處理器核芯、通用計算圖形處理單元(GPGPU)核芯、圖形核芯、等等。
前端單元1030包括一分支預測單元1032耦合於一指令快取單元1034,該指令快取單元1034耦合於一指令轉譯後備緩衝器(TLB)1036,該指令轉譯後備緩衝器1036則耦合於一指令擷取單元1038,該指令擷取單元1038耦合於一解碼單元1040。解碼單元1040(或解碼器)可解碼指令,且產生作為輸出之一或多個微操作、微碼、輸入點、微指令、其他指令、或其他控制信號,其係從原始指令解碼、或反映、或導出。解碼單元1040可以使用許多不同機構實施。適合機構之範例包括,但是不限定於,查詢表、硬體實施方式、可編程邏輯陣列(PLAs)、微碼唯讀記憶體(ROMs)、等等。在一實施例中,核芯1090包括一微碼ROM或儲存某些巨指令(例如,在解碼單元1040中或在前端單元1030內)用之微碼的其他媒體。解碼單元1040耦合於執行引擎單元1050中之一重新命名/配置器單元1052。
執行引擎單元1050包括重新命名/配置器單元1052,該重新命名/配置器單元1052耦合於一引退單元1054及一組的一或多個排程器單元1056。排程器單元1056代表任意數量之不同排程器,包括保留站、中央指令窗、等 等。排程器單元1056耦合於實體暫存器檔案單元1058。各實體暫存器檔案單元1058代表一或多個實體暫存器檔案,不同之該實體暫存器檔案單元1058儲存一或多個不同資料類型,例如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點、狀態(例如,一指令指標,即欲執行之下一指令之位址)、等等。在一實施例中,實體暫存器檔案單元1058包含一向量暫存器單元、一寫入遮罩暫存器單元、及一純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元1058由引退單元1054重疊,以便說明可以實施暫存器重新命名及未依序執行的不同方式(例如,使用記錄器緩衝器及引退暫存器檔案;使用未來檔案、歷史緩衝器、及引退暫存器檔案;使用緩衝器圖及暫存器庫、等等)。引退單元1054及實體暫存器檔案單元1058耦合於執行叢集1060。執行叢集1060包括一組的一或多個執行單元1062及一組的一或多個記憶體存取單元1064。執行單元1062可執行許多操作(例如,移位、加、減、乘)及在許多資料類型上執行(例如,純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)。儘管一些實施例包括許多專用於特定功能成功能組之執行單元,其他實施例可以包括僅一執行單元或全執行所有功能之多個執行單元。排程器單元1056、實體暫存器檔案單元1058、及執行叢集1060揭示成可能呈複數,因為某些實施例係針對資料/操作之某些類型產生個別管線(例 如,純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或記憶體存取管線,各有自己的排程器單元、實體暫存器檔案單元、及/或執行叢集,而且在個別記憶體存取管線之情況中,某些實施例僅在此管線之執行叢集具有記憶體存取單元1064時實施)。亦應瞭解的是在使用個別管線之場合中,這些管線之一或多者可以是未依序發送/執行且其餘是有序的。
該組記憶體存取單元1064係耦合於記憶體單元1070,該記憶體單元1070包括一資料TLB單元1072,該資料TLB單元1072係耦合於一資料快取單元1074,該資料快取單元1074係耦合於一第二階(L2)快取單元1076。在一示範實施例中,記憶體存取單元1064可包括一載入單元、一儲存位址單元、及一儲存資料單元,其各自耦合於記憶體單元1070中之資料TLB單元1072。指令快取單元1034係進一步耦合於記憶體單元1070中之第二階(L2)快取單元1076。L2快取單元1076係耦合於快取之其他一或多階且最後被耦合於一主記憶體。
舉例而言,示範性暫存器重新命名未依序發送/執行核芯架構可實施管線1000如下:1)指令擷取單元1038執行擷取及長度解碼階段1002、1004;2)解碼單元1040執行解碼階段1006;3)重新命名/配置器單元1052執行配置階段1008及重新命名階段1010;4)排程器單元1056執行排程階段1012;5)實體暫存器檔案單元1058及記憶體單元1070執行暫存器讀取/記憶體讀取階段 1014;執行叢集1060執行執行階段1016;6)記憶體單元1070及實體暫存器檔案單元1058執行寫回/記憶體寫入階段1018;7)許多單元可介入異常處置階段1022;及8)引退單元1054及實體暫存器檔案單元1058執行確認階段1024。
核芯1090可支援一或多個指令集(例如,x86指令集(具有已加入較新版本的一些延伸);加州桑尼維爾市MIPS Technologies公司之MIPS指令集;加州桑尼維爾市ARM Holdings公司之ARM指令集(具有選用之額外延伸,例如NEON)),包括本文內所述之指令。在一實施例中,核芯1090包括邏輯,以支援一封包資料指令集延伸(例如,AVX1、AVX2),藉以容許由許多多媒體應用程式使用之操作以使用封包資料執行。
應該瞭解的是核芯可支援多線執行(執行操作或線之二或多個平行組),且可依許多方式進行,包括時間切割多線執行、同時多線執行(其中,單一實體核芯提供一邏輯核芯給各線,實體核芯係同時多線執行)、或其組合(例如,時間切割擷取及解碼並且隨後同時多線執行,像是Intel® Hyperthreading科技)。
儘管暫存器重新命名揭述於未依序執行之內文中,應該瞭解的是暫存器重新命名可用在有序架構。儘管處理器之揭示實施例亦包括個別指令與資料快取單元1034/1074及一共用L2快取單元1076,替代實施例可具有一同時用於指令與資料之單一內部快取,例如第一階(L1)內部快 取,或多階內部快取。在一些實施例中,系統可包括一內部快取與一設於核芯及/或處理器外之外部快取的組合。或者代替地,所有快取皆在核芯及/或處理器外。
特定示範性有序核芯架構
圖11A-B揭示一較特定示範性有序核芯架構之方塊圖,其核芯為一晶片中之多個邏輯方塊(包括同型及/或不同型之其他核芯)的其中之一。邏輯方塊透過一高頻寬互連網路(例如,環狀網路)而通信於一些固定功能邏輯、記憶體輸入/輸出(I/O)介面、及其他必需之輸入/輸出(I/O)邏輯,其視應用而定。
圖11A為根據本發明之實施例之單一處理器核芯之實施例之方塊圖,連同其連接之晶粒上互連網路1102及其第二階(L2)快取1104之區域子集。在一實施例中,一指令解碼器1100以一封包資料指令集延伸支援x86指令集。一L1快取1106容許低潛時存取,以快取記憶體至純量及向量單元。在一實施例中(為了簡化設計),一純量單元1108及一向量單元1110使用個別暫存器組(分別為純量暫存器1112及向量暫存器1114),且在其間轉移之資料寫入記憶體及隨後從第一階(L1)快取1106讀回,本發明之替代實施例可使用不同方式(例如,使用單一暫存器組或包括一通信路徑,其容許資料在兩暫存器檔案之間轉移,不需寫入及讀回)。
L2快取1104之區域子集為一全域L2快取之一部 分,全域L2快取分割成個別區域子集且每一處理器核芯有一區域子集。各處理器核芯具有一直接存取路徑通往其自身之L2快取1104之區域子集。由一處理器核芯讀取之資料儲存在L2快取1104中且可快速存取,即與存取自身區域L2快取子集之其他處理器核芯並行。由一處理器核芯寫入之資料儲存在其自身之L2快取子集1104中且必要時從其他子集清除。環狀網路可確保共用資料之一致性。環狀網路係雙向性,以容許代理模組像是處理器核芯、L2快取及其他邏輯方塊在晶片內彼此通信。各環狀資料路徑為每個方向有1012位元寬。
圖11B為根據本發明之實施例之圖11A中之處理器核芯的一部分之展開圖。圖11B包括L1資料快取1106A,即L1快取1106之一部分,以及關於向量單元1110及向量暫存器1114之較多細節。較明確說,向量單元1110為16位寬向量處理單元(VPU)(參閱16位寬算術邏輯單元(ALU)1128),其執行整數、單精度浮點數、及雙精度浮點數指令。VPU以拌和單元1120支援拌和暫存器輸入、使用數字轉換單元1122A-B支援數字轉換、及使用記憶體輸入端上之複製單元1124複製。寫入遮罩暫存器1126則容許預測之生成向量寫入。
具有整合式記憶體控制器及圖形之處理器
圖12為根據本發明之實施例之具有多核芯、具有整合式記憶體控制器、及具有整合圖形的處理器1200之方 塊圖。圖12中之實線框說明一具有單一核芯1202A、一系統代理單元1210、一組的一或多個匯流排控制器單元1216之處理器1200,而虛線框之選用附加則說明一具有多核芯1202A-N、一系統代理單元1210中之一組的一或多個整合式記憶體控制器單元1214、及專用邏輯1208之替代性處理器1200。
因此,處理器1200之不同實施方式可包括:1)一CPU,具有專用邏輯1208,為整合式圖形及/或科學(通量)邏輯(其可包括一或多個核芯),及核芯1202A-N,為一或多個通用核芯(例如,通用有序核芯、通用未依序核芯、兩者之組合);2)一協同處理器,具有核芯1202A-N,為大量專用核芯,主要用於圖形及/或科學(通量);及3)一協同處理器,具有核芯1202A-N,為大量通用有序核芯。因此,處理器1200可以是通用處理器、協同處理器或專用處理器,例如像是網路或通信處理器、壓縮引擎、圖形處理器、GPGPU(通用計算圖形處理單元)、高通量多重整合核芯(MIC)處理器(包括30或更多核芯)、嵌入式處理器、等等。處理器可在一或多個晶片上實施。處理器1200可以是一或多個基板之一部分及/或使用許多製程技科之任一者實施於基板上,例如像是BiCMOS、CMOS、或NMOS。
記憶體階層包括核芯內之一或多階快取、一組或一或多個共用快取單元1206、及耦合於整合式記憶體控制器單元組1214的外部記憶體(圖中未示)。共用快取單元 組1206可包括一或多個中階快取,例如第二階(L2)、第三階(L3)、第四階(L4),或其他階快取、最末階快取(LLC)、及/或其組合。儘管在一實施例中一環狀互連單元1212將整合式圖形邏輯1208、共用快取單元組1206、及系統代理單元1210/整合式記憶體控制器單元1214互連,替代實施例可使用任意數量之習知技術將諸單元互連。在一實施例中,在一或多個快取單元1206與核芯1202A-N之間一致性被維持。
在一些實施例中,核芯1202A-N之一或多者可以多線操作。系統代理單元1210包括用以協調與操作核芯1202A-N之諸組件。系統代理單元1210可包括例如一電力控制單元(PCU)及一顯示單元。PCU可以是或包括用以調節核芯1202A-N與整合式圖形邏輯1208之電力狀態所需的邏輯及組件。顯示單元係用以驅動一或多個外接顯示器。
依據架構指令集,核芯1202A-N可以是均質性或異質性;亦即,核芯1202A-N之二或多者可以執行同一指令集,而其他核芯可以僅執行指令集之一子集或一不同指令集。
示範性電腦架構
圖13-16為示範性電腦架構之方塊圖。膝上型、桌上型、手持式個人電腦、個人數位化助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數 位信號處理器(DSPs)、圖形裝置、視訊遊戲機、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置、及許多其他電子裝置技藝中習知之其他系統設計與組態亦適用。大致上,可併入本文內所述之一處理器及/或其他執行邏輯的廣泛系統或電子裝置皆大致適用。
請即參閱圖13,揭示根據本發明之一實施例之一系統1300之方塊圖。系統1300可包括一或多個處理器1310、1315,其係耦合於一控制器集線器1320。在一實施例中,控制器集線器1320包括一圖形記憶體控制器集線器(GMCH)1390及一輸入/輸出集線器(IOH)1350(其可設在個別晶片上);GMCH 1390包括記憶體及圖形控制器,供記憶體1340及一協同處理器1345耦合於此;IOH 1350將輸入/輸出(I/O)裝置1360耦合於GMCH 1390。或替代地,記憶體及圖形控制器的其中之一或兩者係在處理器內整合(如本文內所述),記憶體1340及協同處理器1345直接耦合於處理器1310,及控制器集線器1320係與IOH 1350一起被設在單一晶片中。
附加處理器1315之選用性質係在圖13中以虛線來表示。各處理器1310、1315可包括本文內所述處理器核芯之一或多者及可以是處理器1200之某些版本。
記憶體1340例如可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1320透過多點匯流排(例如,前側匯流排(FSB))、點對點介面(例如,快速通 道互連(QPI))、或類似連接器1395,以通信處理器1310、1315。
在一實施例中,協同處理器1345係專用處理器,例如像是高通量MIC處理器、網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。在一實施例中,控制器集線器1320可包括一整合式圖形加速器。
依據指標量度範圍,包括架構上、微架構上、溫度上、耗電特徵、等等,實體資源1310、1315之間可以有許多差異。
在一實施例中,處理器1310執行控制一般類型資料處理操作之指令。嵌入指令內者可以是協同處理器指令。處理器1310將這些協同處理器指令辨識成一應該由附接協同處理器1345執行之類型。據此,處理器1310在一協同處理器匯流排或其他互連上發送這些協同處理器指令(或代表協同處理器指令之控制信號)到協同處理器1345。協同處理器1345接收及執行所收到之協同處理器指令。
請即參閱圖14,揭示根據本發明之一實施例之第一較特定示範系統1400之方塊圖。如圖14中所示,多處理器系統1400為點對點互連系統,且包括透過一點對點互連1450耦合之第一處理器1470及第二處理器1480。處理器1470、1480各為處理器1200之某些版本。在本發明之一實施例中,處理器1470、1480分別為處理器1310、 1315,同時協同處理器1438為協同處理器1345。在另一實施例中,處理器1470、1480分別為處理器1310、協同處理器1345。
處理器1470、1480揭示成分別包括整合式記憶體控制器(IMC)單元1472、1482。處理器1470亦包括點對點(P-P)介面1476、1478,做為其匯流排控制器單元的一部分;相似地,第二處理器1480包括P-P介面1486、1488。處理器1470、1480可以使用P-P介面電路1478、1488透過一點對點(P-P)介面1450來交換資訊。如圖14中所示,IMCs 1472、1482將處理器耦合於個別記憶體,亦即一記憶體1432及一記憶體1434,其可以是區域性附接於個別處理器之主記憶體的部分。
處理器1470、1480可以各別使用點對點介面電路1476、1494、1486、1498而透過個別P-P介面1452、1454,以和一晶片組1490來交換資訊。晶片組1490可以透過一高性能介面1439而選用地和協同處理器1438交換資訊。在一實施例中,協同處理器1438為一專用處理器,例如像是高通量MIC處理器、網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。
一共用快取(圖中未示)可包括在兩處理器之任一者內或在其外,仍透過P-P互連與處理器連接,所以如果一處理器處於低電力模式,則任一或兩處理器之區域快取資訊可儲存於共用快取中。
晶片組1490可以透過一介面1496而被耦合於第一匯 流排1416。在一實施例中,第一匯流排1416可以是周邊組件互連(PCI)匯流排,或是一例如PCI高速匯流排或另一第三代I/O互連匯流排,儘管本發明之範疇並非如此限制。
如圖14中所示,許多輸入/輸出(I/O)裝置1414可以隨著一匯流排橋接器1418而被耦合於第一匯流排1416,該流排橋接器1418則將第一匯流排1416耦合於第二匯流排1420。在一實施例中,一或多個附加處理器1415,例如像是協同處理器、高通量MIC處理器、GPGPU、加速器(例如,像是圖形加速器或數位信號處理(DSP)單元)、欄可編程閘陣列、或任意其他處理器,皆可耦合於第一匯流排1416。在一實施例中,第二匯流排1420可以是一低針腳數(LPC)匯流排。許多裝置可被耦合於第二匯流排1420,包括例如鍵盤及/或滑鼠1422、通信裝置1427及一儲存器單元1428,像是磁碟驅動器或其他大容量儲存裝置,其在一實施例中可包括指令/碼及資料1430。再者,一音頻輸入/輸出裝置(I/O)1424可耦合於第二匯流排1420。應該注意的是,其他架構亦可行。例如取代圖14之點對點架構時,一系統可在一多點匯流排或其他這類架構中予以實施。
請即參閱圖15,揭示根據本發明之一實施例之第二較特定示範系統1500之方塊圖。圖14及15中之相同元件使用相同參考編號,且圖14之某些態樣已從圖15刪略,以避免模糊圖15之其他態樣。
圖15揭示處理器1470、1480可各別包括整合式記憶體及I/O控制邏輯(CL)1472、1482。因此,CL 1472、1482包括整合式記憶體控制器單元且包括I/O控制邏輯。圖15揭示不僅記憶體1432、1434耦合於CL 1472、1482,I/O裝置1514亦耦合於CL 1472、1482。舊I/O裝置1515耦合於晶片組1490。
請即參閱圖16,揭示根據本發明之一實施例之一系統晶片(SoC)1600之方塊圖。圖12中之相同元件使用相同參考編號,再者,虛線框為較先進SoCs上之選用特徵。在圖16中,一互連單元1602耦合於:一應用處理器1610,其包括一組的一或多個核芯1202A-N及共用快取單元1206;一系統代理單元1210;一匯流排控制器單元1216;一整合式記憶體控制器單元1214;一組或一或多個協同處理器1620,其可包括整合式圖形邏輯、一影像處理器、一音頻處理器、及一視頻處理器;一靜態隨機存取記憶體(SRAM)單元1630;一直接記憶體存取(DMA)單元1632;及一顯示器單元1640,用以耦合於一或多個外顯示器。在一實施例中,協同處理器1620包括一專用處理器,例如像是網路或通信處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器、等等。
本文內所揭露機構之實施例可實施於硬體、軟體、韌體、或諸實施方式之組合中。本發明之實施例可實施作為在含有至少一處理器、一儲存系統(包括揮發性及非揮發 性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可編程系統上執行之電腦程式或程式碼。
程式碼(例如,圖14中所示之碼1430)可施加於輸入指令,以執行本文內所述之功能且產生輸出資訊。輸出資訊可依習知方式施加於一或多個輸出裝置。針對此應用目的,一處理系統包括任意系統,其具有例如像是一數位信號處理器(DSP)、一微控制器、一專用積體電路(ASIC)、或一微處理器之處理器。
程式碼可用一高階程序或物件導向編程語言實施,以利通信一處理系統。若有需要,程式碼也可用組合語言或機器語言來予以實施。事實上,本文內所述之機構範疇並不限於任意特定編程語言。在任意情況中,語言可以是編譯或解譯語言。
至少一實施例之一或多個態樣可以藉由儲存在一機器可讀取媒體上之代表指令實施,其代表處理器內之許多邏輯,當由一機器讀取時,其致使機器組合邏輯以執行本文內所述之技術。此代表性(俗稱為IP核芯)可以儲存在一實體機器可讀取媒體上且供給至許多客戶或製造廠,以載入實際製成邏輯或處理器之製造機器內。
此機器可讀取儲存媒體可包括,但是不限定於,由一機器或裝置製造或形成之物件之非暫態、實體配置,包括儲存媒體,像是硬碟、任意其他類型碟片(包括軟碟、光碟、光碟唯讀記憶體(CD-ROMs)、光碟唯讀記憶體(CD-ROMs)、可重寫光碟(CD-RWs)、及磁光碟)、 半導體裝置(像是唯讀記憶體(ROMs)、隨機存取記憶體(RAMs),像是動態隨機存取記憶體(DRAMs)、靜態隨機存取記憶體(SRAMs))、可抹除可編程唯讀記憶體(EPROMs)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROMs)、相變記憶體(PCM)、磁性或光學性卡、或適用於儲存電子指令之任意其他類型媒體。
據此,本發明之實施例亦包括非暫態、含有指令或含有設計資料之實體機器可讀取媒體,例如硬體說明語言(HDL),其界定本文內所述之結構、電路、裝置、處理器及/或系統特徵。諸實施例亦稱為程式產物。
仿真器(包括二進制翻譯、碼轉譯、等等)
在一些情況中,一指令轉換器可用以將一來自一來源指令集之指令轉換成一目標指令集。例如,指令轉換器可以翻譯(例如,使用靜態二進制翻譯、包括有動態編譯之動態二進制翻譯)、轉譯、仿真、或者轉換一指令成一或多個欲供核芯處理之其他指令。指令轉換器可實施於軟體、硬體、韌體、或其組合中。該轉換器可以在處理器上、處理器外、或部分在處理器上且部分在處理器外。
圖17為方塊圖,根據本發明之實施例對比使用一軟體指令轉換器將一來源指令集中之二進制指令轉換成一目標指令集中之二進制指令。在所示之實施例中,指令轉換器係一軟體指令轉換器,儘管替代地指令轉換器可實施於軟體、韌體、硬體、或其許多組合中。圖17揭示一高階 語言1702中之一程式可使用一x86編譯器1704編譯,以產生x86二進制碼1706,其原本即由一具有至少一x86指令集核芯之處理器1716來予以執行。具有至少一x86指令集核芯之處理器1716代表大致上可與具有至少一x86指令集核芯之Intel處理器執行相同的功能,即其藉由相容執行或處理(1)Intel x86指令集核芯之指令集之一實質部分或(2)目標在一具有至少一x86指令集核芯之Intel處理器上運算的應用程式或共他軟體之目標碼版本,以利達成與具有至少一x86指令集核芯之Intel處理器大致相同的結果。x86編譯器1704代表一編譯器,其可操作成產生x86二進制碼1706(例如,目標碼),在有或無附加連結處理下可以在具有至少一x86指令集核芯之處理器1716上執行。相似地,圖17揭示高階語言1702中之程式可使用一替代指令集編譯器1708編譯,以產生替代指令集二進制碼1710,其原本即由一未具有至少一x86指令集核芯1714之處理器執行(例如,一具有核芯可執行加州桑尼維爾市MIPS Technologies公司之MIPS指令集及/或執行加州桑尼維爾市ARM Holdings公司之ARM指令集的處理器)。指令轉換器1712用以將x86二進制碼1706轉換成原本即由未具有一x86指令集核芯之處理器1714執行的碼。此轉換碼不易成為替代指令集二進制碼1710,因為一可達成此目的之指令轉換器難以製造;惟,轉換碼可完成一般操作及由來自替代指令集之指令組成。因此,指令轉換器1712代表軟體、韌 體、硬體、或其組合,其透過仿真、模擬或任意其他程序而容許一處理器或其他電子裝置不具有一x86指令集處理器或核芯,即可執行x86二進制碼1706。
揭述用於圖1、4-6、及9的任一者之組件、特徵、及細節亦選用施加於圖2-3的任一者。再者,揭述用於任一裝置之組件、特徵、及細節亦選用施加於任一方法,其在實施例中可藉由及/或使用此裝置執行。本文內所述之任一處理器可被包括在本文內所揭露之任一電腦系統中。
在說明及申請專利範圍中,曾使用「耦合」及/或「連接」等詞並伴隨其引申詞。這些用詞並非作為彼此之同義字。反而,在實施例中「連接」可用以指示二或多個元件彼此直接實體及/或電接觸。「耦合」意味著二或多個元件彼此直接實體及/或電接觸。惟,「耦合」也意味著二或多個元件彼此並非直接接觸,但仍彼此共同操作或互動。例如,一單元可以透過一或多個中介組件以耦合於一解碼單元。在圖式中,箭號用以揭示連接及耦合。
「及/或」一詞曾使用。本文內所用之「及/或」一詞意味著一或另一者或兩者(例如,A及/或B意味著A或B或者同時A及B)。
在以上說明中,特定細節己作陳述,以提供對本發明之徹底瞭解。惟,其他實施例也可以在沒有某些諸特定細節下實施。本發明之範疇並非由上述特定範例決定,而是僅由以下申請專利範圍決定。在其他情況中,習知電路、結構、裝置、及操作已用方塊圖形式及/或無細部結構下 揭示,以避免模糊對本發明之瞭解。在適當考量下,參考編號、或參考編號之尾部已在諸圖中重覆,以指示對應或類似元件,其可選用具有類似或相同特徵,除非另有明確指定。
某些操作可由硬體組件執行,或可用機器可執行或電路可執行之指令具體實施,用以致使及/或造成一藉由執行操作之指令而編程的機器、電路、或硬體組件(例如,一處理器、處理器的一部分、電路、等等)。操作也可以選用地由硬體及軟體之組合執行。一處理器、機器、電路、或硬體可包括指定或特殊電路或其他邏輯(例如,硬體與韌體及/或軟體之可能組合)可操作成執行及/或處理指令且回應於指令而儲存結果。
一些實施例包括一製造物件(例如,一電腦程式產物),其包括一機器可讀取媒體。媒體可包括一機構,其係以可由機器讀取之形式提供(例如,儲存)資訊。機器可讀取媒體可提供一指令或指令列、或儲存於其上,如果及/或當由一機器執行時,其可操作成致使機器執行及/或造成機器執行本文內所揭述之一或多個操作、方法、或技術。
在一些實施例中,機器可讀取媒體可包括一非暫態性機器可讀取儲存媒體。例如,非暫態性機器可讀取儲存媒體可包括軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁性光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹除可編程ROM (EPROM)、電可抹除可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態性記憶體、非暫態性資料儲存裝置、等等。非暫態性機器可讀取儲存媒體並未由暫態傳播信號組成。在一些實施例中,儲存媒體可包括一包括有固體物之實體媒體。
適用之機器範例包括,但是不限定於,通用處理器、專用處理器、信號邏輯單元、等等。適用之機器之其他範例包括電腦系統或其他電子裝置,其包括一處理器、一數位邏輯電路、或一積體電路。此電腦系統或電子裝置範例包括,但是不限定於,桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、隨身型易網機、智慧型手機、蜂巢式電話、伺服器、網路裝置(例如,路由器及開關)、行動網際網路裝置(MIDs)、媒體播放器、智慧型電視、桌上型易網機、機上盒、及視訊遊戲控制器。
關於本說明書全文中之「一實施例」、「一或多個實施例」、「一些實施例」例如指示一特定特徵可包括在本發明之實施中,但是不必然如此。相似地,說明中許多特徵有時群集在單一實施例、圖式、或其說明中,為了使揭露內容流暢及有助於瞭解本發明之許多態樣。惟,揭露之本方法不應被詮釋成反映出本發明需要超過各項申請專利範圍所陳述者之特徵。反而,如文後之申請專利範圍所示,本發明之態樣所持者係少於單一揭露實施例之所有特 徵。因此,詳細說明之後的申請專利範圍應在此併入本詳細說明中,且各項申請專利範圍本身即為本發明之個別實施例。
示範實施例
文後之範例關於進一步之實施例。範例中之規定可用於一或多項實施例中之任意處。
範例1為一處理器或其他裝置,其包括一解碼單元,用以解碼一持續儲存屏障指令。裝置亦包括一與解碼單元耦合之記憶體子系統模組。記憶體子系統模組回應於持續儲存屏障指令,用以確保在原始程式順序上發生於持續儲存屏障指令後的所有後續儲存指令之資料被持續儲存在持續儲存器中之前,相對應於持續儲存屏障指令之給定資料先被持續儲存於持續儲存器中。
範例2包括範例1之處理器,選用地,其中持續儲存屏障指令包括一儲存及持續儲存屏障指令,其用以指示具有給定資料之來源運算元且其用以指示持續儲存器中之欲儲存給定資料的位置。
範例3包括範例1之處理器,選用地,其中給定資料包括在一儲存指令之來源運算元中,儲存指令對持續儲存屏障指令暗示其在原始程式順序上緊接於持續儲存屏障指令之前及之後的其中之一者。
範例4包括範例1至3之任一者之處理器,選用地,其中記憶體子系統模組回應於持續儲存屏障指令,並未用 以確保在原始程式順序上發生於持續儲存屏障指令前的所有先前儲存指令之資料係早在後續儲存指令之資料前先被持續儲存於持續儲存器中。
範例5包括範例1至3之任一者之處理器,進一步包括一組的一或多個快取。再者,選用地,其中記憶體子系統模組回應於持續儲存屏障指令,用以致使給定資料繞過該組的一或多個快取。
範例6包括範例1至5之任一者之處理器,進一步包括一持續儲存屏障緩衝器,且選用地,其中記憶體子系統模組回應於持續儲存屏障指令,用以致使給定資料儲存在持續儲存屏障緩衝器中。
範例7包括範例6之處理器,進一步包括持續儲存屏障緩衝器管理單元,用以基於表示意圖在從快取中移除快取列前先從快取中移除快取列之信號,將來自持續儲存屏障緩衝器之至少一快取列儲存至持續儲存器。
範例8包括範例6至7之任一者之處理器,選用地,其中持續儲存屏障緩衝器包括一寫入結合緩衝器,寫入結合緩衝器用以讓相對應於第二持續儲存屏障指令之第二資料能夠被儲存在持續儲存屏障緩衝器之與給定資料者相同的快取列中。
範例9包括範例6至8之任一者之處理器,選用地,其中處理器之一指令集不包括一使用者級載入指令,用以從持續儲存屏障緩衝器中讀取出資料。
範例10包括範例6至9之任一者之處理器,選用 地,其中持續儲存屏障緩衝器不執行一快取一致性協定。
範例11包括範例1至6之任一者之處理器,選用地,其中處理器係用以將一具有該給定資料及相對應於該第二持續儲存屏障指令之第二資料的快取列儲存至該持續儲存器,其藉由在被用來將該處理器與該持續儲存器耦合的互連上傳送的一或多個循環之共同組。
範例12為在一處理器中之一方法,其包括接收一持續儲存屏障指令。該方法亦包括回應於持續儲存屏障指令,確保在原始程式順序上發生於持續儲存屏障指令後的所有後續儲存指令之資料被持續儲存在一持續儲存器中之前,一相對應於持續儲存屏障指令之給定資料先被持續儲存於持續儲存器中。
範例13包括範例12之方法,選用地,其中接收指令包括接收一儲存及持續儲存屏障指令,該指令指示一具有給定資料之來源運算元及指示持續儲存器中之一欲儲存給定資料的位置。
範例14包括範例12之方法,進一步包括接收一儲存指令,該指令指示一具有給定資料之來源運算元,選用地,其中儲存指令為在原始程式順序上緊接於持續儲存屏障指令之前及之後的其中之一者。
範例15包括範例12至14之任一者之方法,進一步包括回應於持續儲存屏障指令,致使給定資料繞過處理器的一組的一或多個快取。
範例16包括範例12至15之任一者之方法,選用 地,其中該確保包括確保給定資料係早在後續儲存指令之資料被持續儲存在持續儲存器中之前先被持續儲存在持續儲存器中,且未確保該所有先前儲存指令之資料係早在該所有後續儲存指令之資料被持續儲存於持續儲存器中之前先被持續儲存於持續儲存器中。在原始程式順序上,先前儲存指令發生在持續儲存屏障指令之前。
範例17包括範例12至16之任一者之方法,進一步包括將具有給定資料及相對應於第二持續儲存屏障指令之第二資料的快取列儲存至持續儲存器,其藉由在互連上傳送的一或多個循環之共同組。
範例18包括範例12至17之任一者之方法,進一步包括回應於持續儲存屏障指令,儲存給定資料於一持續儲存屏障緩衝器中。再者,選用地,其中處理器之一指令集不包括一使用者級載入指令,用以從持續儲存屏障緩衝器中載入資料。
範例19包括範例18之方法,進一步包括接收一信號,信號指示想要從一快取中移除一快取列之意圖,且在接收信號後,及在快取列從快取移除至持續儲存器前,從持續儲存屏障緩衝器儲存至少一快取列至持續儲存器。
範例20包括範例18至19之任一者之方法,選用地,其中儲存給定資料於持續儲存屏障緩衝器中包括儲存給定資料於持續儲存屏障緩衝器之一快取列中,快取列具有相對應於第二持續儲存屏障指令之第二資料。
範例21包括範例12至20之任一者之方法,進一步 包括儲存給定資料於持續記憶體中之一預寫式日誌。
範例22為一用以處理指令之系統,其包括一互連及一與互連結構相耦合之持續儲存器。持續儲存器儲存一預寫式登錄演算法之一指令集。指令集包括一儲存及持續儲存屏障指令,該指令指示持續儲存器中之一位置且由預寫式登錄演算法用以儲存一給定資料於持續儲存器中之一預寫式日誌。系統亦包括一與互連相耦合之處理器。處理器接收儲存及持續儲存屏障指令。回應於儲存及持續儲存屏障指令,處理器確保在原始程式順序上發生於預寫式登錄演算法中之儲存及持續儲存屏障指令後的所有後續儲存指令之資料被持續儲存在持續儲存器中之前,給定資料先被持續儲存於持續儲存器中。
範例23包括範例22之系統,選用地,其中持續儲存及持續儲存屏障指令包括一非時間性指令,其用以致使給定資料繞過處理器的一組的一或多個快取。
範例24為一製造物件,其包括一非暫態性機器可讀取儲存媒體。非暫態性機器可讀取儲存媒體儲存一儲存及持續儲存屏障指令。儲存及持續儲存屏障指令指示一具有一給定資料之來源運算元及指示一持續儲存器中之一欲儲存給定資料的位置。若被一機器所執行時,儲存及持續儲存屏障指令係用以致使機器執行操作,包括確保在原始程式順序上發生於持續儲存屏障指令後的所有後續儲存指令之資料被持續儲存在持續儲存器中之前,給定資料先被持續儲存於持續儲存器中。
範例25包括範例24之製造物件,選用地,其中若被一機器所執行時,儲存及持續儲存屏障指令並未致使機器確保在原始程式順序上發生於儲存及持續儲存屏障指令前的所有先前儲存指令之資料係早在所有後續儲存指令之資料前先被持續儲存在持續儲存器中。
範例26為一處理器或其他裝置,其操作成執行範例12至21之任一者之方法。
範例27為一處理器或其他裝置,其包括構件,用以執行範例12至21之任一者之方法。
範例28為一處理器或其他裝置,其包括模組,用以執行範例12至21之任一者之方法。
範例29為一處理器,其包括模組及/或單元及/或邏輯及/或電路及/或構件之任意組合,用以執行範例12至21之任一者之方法。
範例30為一製造物件,其包括一選用非暫態性機器可讀取儲存媒體,可選用儲存或提供一指令,其若及/或當由一處理器、電腦系統、電子裝置、或其他機器執行時,係操作成致使機器執行範例12至21之任一者之方法。
範例31為一電腦系統、其他電子裝置、或其他裝置,包括一匯流排或其他互連、與互連相耦合之範例1至11之任一者之處理器、及與互連相耦合之至少一組件,其係選自一動態隨機存取記憶體(DRAM)、一網路介面、一圖形晶片、一無線通信晶片、一全球行動通信系統 (GSM)天線、一相變記憶體、及一攝影機。
範例32為一大致上如本文內所述之處理器或其他裝置。
範例33為一處理器或其他裝置,其操作成執行大致上如本文內所述之任意方法。
範例34為一處理器或其他裝置,其操作成執行大致上如本文內所述之任意持續儲存屏障指令。
100‧‧‧電腦系統
102‧‧‧處理器
104‧‧‧指令集
106‧‧‧載入指令
108‧‧‧儲存指令
110‧‧‧持續儲存屏障指令
112‧‧‧管線
114‧‧‧記憶體子系統
116‧‧‧快取一致性模組
118‧‧‧快取
120‧‧‧互連結構
122‧‧‧非持續儲存器
124‧‧‧持續儲存器

Claims (25)

  1. 一種處理器,包含:解碼單元,用以解碼持續儲存屏障指令;及記憶體子系統模組,係與該解碼單元相耦合,回應於該持續儲存屏障指令,該記憶體子系統模組用以確保在屏障所有後續的儲存指令之資料被持續儲存於持續儲存器中之前,對應於該持續儲存屏障指令之給定資料先被持續儲存於該持續儲存器中,該所有後續的儲存指令依照原始程式順序發生於該持續儲存屏障指令之後。
  2. 如申請專利範圍第1項之處理器,其中,該持續儲存屏障指令包括儲存及持續儲存屏障指令,其用以指示具有該給定資料之來源運算元且其用以指示該給定資料要被儲存在該持續儲存器中的位置。
  3. 如申請專利範圍第1項之處理器,其中,該給定資料係要被包括在儲存指令之來源運算元中,該儲存指令對該持續儲存屏障指令暗示其依照該原始程式順序為緊接於該持續儲存屏障指令之前及為緊接於該持續儲存屏障指令之後的其中之一者。
  4. 如申請專利範圍第1項之處理器,其中,回應於該持續儲存屏障指令,該記憶體子系統模組並不用以確保屏障所有先前的儲存指令之資料在該等後續儲存指令的該資料之前先被持續儲存於該持續儲存器中,該所有先前的儲存指令依照原始程式順序發生於該持續儲存屏障指令之前。
  5. 如申請專利範圍第1項之處理器,進一步包含一組的一或多個快取記憶體;且其中,回應於該持續儲存屏障指令,該記憶體子系統模組用以致使該給定資料繞過該組的該一或多個快取記憶體。
  6. 如申請專利範圍第1項之處理器,進一步包含持續儲存屏障緩衝器;且其中,回應於該持續儲存屏障指令,該記憶體子系統模組用以致使該給定資料被儲存在該持續儲存屏障緩衝器中。
  7. 如申請專利範圍第6項之處理器,進一步包含持續儲存屏障緩衝器管理單元,用以基於表示在從快取記憶體中移除快取列之前先從該快取記憶體中移除該快取列之意圖的信號,將來自該持續儲存屏障緩衝器之至少一快取列儲存至該持續儲存器。
  8. 如申請專利範圍第6項之處理器,其中,該持續儲存屏障緩衝器包含寫入結合緩衝器,該寫入結合緩衝器用以讓對應於第二持續儲存屏障指令之第二資料能夠被儲存在該持續儲存屏障緩衝器之與該給定資料相同的快取列中。
  9. 如申請專利範圍第6項之處理器,其中,該處理器之指令集不包括用以從該持續儲存屏障緩衝器中讀出資料的使用者級載入指令。
  10. 如申請專利範圍第6項之處理器,其中,該持續儲存屏障緩衝器不施行快取一致性協定。
  11. 如申請專利範圍第1項之處理器,其中,該處理 器係用以將具有該給定資料及對應於第二持續儲存屏障指令之第二資料的快取列儲存至該持續儲存器,其在要傳送於互連上的一或多個循環之共同組中,該互連要被用來將該處理器與該持續儲存器相耦合。
  12. 一種處理器中之方法,包含:接收持續儲存屏障指令;及回應於該持續儲存屏障指令,確保在屏障所有後續的儲存指令之資料被持續儲存於持續儲存器中之前,對應於該持續儲存屏障指令之給定資料先被持續儲存於該持續儲存器中,該所有後續的儲存指令依照原始程式順序發生於該持續儲存屏障指令之後。
  13. 如申請專利範圍第12項之方法,其中,接收該指令包含接收儲存及持續儲存屏障指令,該儲存及持續儲存屏障指令指示具有該給定資料之來源運算元及指示該給定資料要被儲存於該持續儲存器中的位置。
  14. 如申請專利範圍第12項之方法,進一步包含接收儲存指令,該儲存指令指示具有該給定資料之來源運算元,其中,該儲存指令依照該原始程式順序為緊接於該持續儲存屏障指令之前及為緊接於該持續儲存屏障指令之後的其中之一者。
  15. 如申請專利範圍第12項之方法,進一步包含回應於該持續儲存屏障指令,致使該給定資料繞過該處理器之一組的一或多個快取記憶體。
  16. 如申請專利範圍第12項之方法,其中,該確保 包含確保該給定資料在該後續儲存指令之資料被持續儲存在該持續儲存器中之前先被持續儲存在該持續儲存器中,而不確保該所有先前的儲存指令之資料在該所有後續的儲存指令之資料被持續儲存於該持續儲存器中之前先被持續儲存於該持續儲存器中,該所有先前的儲存指令依照原始程式順序發生於該持續儲存屏障指令之前。
  17. 如申請專利範圍第12項之方法,進一步包含將具有該給定資料及對應於第二持續儲存屏障指令之第二資料的快取列儲存至該持續儲存器,其在傳送於互連上的一或多個循環之共同組。
  18. 如申請專利範圍第12項之方法,進一步包含回應於該持續儲存屏障指令,將該給定資料儲存於持續儲存屏障緩衝器中,其中,該處理器之指令集不包括用以從該持續儲存屏障緩衝器中載入資料的使用者級載入指令。
  19. 如申請專利範圍第18項之方法,進一步包含:接收信號,該信號指示想要從快取記憶體中移除快取列之意圖;及在接收該信號之後,且在該快取列從該快取記憶體中被移除至該持續儲存器之前,將至少一快取列從該持續儲存屏障緩衝器儲存至該持續儲存器。
  20. 如申請專利範圍第18項之方法,其中,儲存該給定資料於該持續儲存屏障緩衝器中包括儲存該給定資料於該持續儲存屏障緩衝器之快取列中,該快取列具有相對應於第二持續儲存屏障指令之第二資料。
  21. 如申請專利範圍第12項之方法,進一步包含儲存該給定資料於該持續記憶體中之預寫式日誌。
  22. 一種用以處理指令之系統,包含:互連;及持續儲存器,係與該互連相耦合,該持續儲存器儲存預寫式登錄演算法之指令集,該指令集包括儲存及持續儲存屏障指令,該儲存及持續儲存屏障指令指示該持續儲存器中之位置且由該預寫式登錄演算法所使用而將給定資料儲存於該持續儲存器中之預寫式日誌;及處理器,係與該互連相耦合,該處理器接收該儲存及持續儲存屏障指令,並回應於該儲存及持續儲存屏障指令,該處理器確保在屏障所有後續的儲存指令之資料被持續儲存於該持續儲存器中之前,該給定資料先被持續儲存於該持續儲存器中,該所有後續的儲存指令依照該原始程式順序發生於該預寫式登錄演算法中之該儲存及持續儲存屏障指令之後。
  23. 如申請專利範圍第22項之系統,其中,該持續儲存及持續儲存屏障指令包括非時間性指令,其用以致使該給定資料繞過該處理器之一組的一或多個快取記憶體。
  24. 一種製造物件,包含非暫態性機器可讀取儲存媒體,該非暫態性機器可讀取儲存媒體儲存儲存及持續儲存屏障指令,該儲存及持續儲存屏障指令指示具有給定資料之來源運算元及指示該給定資料要被儲存於持續儲存器中的位 置,且若被機器所執行時,該儲存及持續儲存屏障指令係用以致使該機器執行操作,包含:確保在屏障所有後續的儲存指令之資料被持續儲存在該持續儲存器中之前,該給定資料先被持續儲存於該持續儲存器中,該所有後續的儲存指令依照原始程式順序發生於該持續儲存屏障指令之後。
  25. 如申請專利範圍第24項之製造物件,其中,若被機器所執行時,該儲存及持續儲存屏障指令並不致使該機器確保在屏障所有先前的儲存指令之資料在該所有後續的儲存指令之資料前先被持續儲存在該持續儲存器中,該所有後續的儲存指令依照該原始程式順序發生於該儲存及持續儲存屏障指令之前。
TW104127169A 2014-09-26 2015-08-20 持續儲存屏障處理器、方法、系統及指令 TWI598821B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/498,178 US10489158B2 (en) 2014-09-26 2014-09-26 Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores

Publications (2)

Publication Number Publication Date
TW201624279A true TW201624279A (zh) 2016-07-01
TWI598821B TWI598821B (zh) 2017-09-11

Family

ID=55581784

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104127169A TWI598821B (zh) 2014-09-26 2015-08-20 持續儲存屏障處理器、方法、系統及指令

Country Status (7)

Country Link
US (1) US10489158B2 (zh)
EP (1) EP3198403A4 (zh)
JP (1) JP2017532643A (zh)
KR (1) KR102282135B1 (zh)
CN (1) CN106575218B (zh)
TW (1) TWI598821B (zh)
WO (1) WO2016048592A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI758605B (zh) * 2018-05-01 2022-03-21 美商高通公司 用於儲存持續寫入資料之能量支援之記憶體及方法

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489158B2 (en) 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US9971686B2 (en) 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
US10303477B2 (en) * 2015-06-26 2019-05-28 Intel Corporation Persistent commit processors, methods, systems, and instructions
JP6674085B2 (ja) * 2015-08-12 2020-04-01 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10127243B2 (en) * 2015-09-22 2018-11-13 International Business Machines Corporation Fast recovery using self-describing replica files in a distributed storage system
US9747174B2 (en) 2015-12-11 2017-08-29 Microsoft Technology Licensing, Llc Tail of logs in persistent main memory
US10254967B2 (en) * 2016-01-13 2019-04-09 Sandisk Technologies Llc Data path control for non-volatile memory
US10324650B2 (en) * 2016-09-23 2019-06-18 Advanced Micro Devices, Inc. Scoped persistence barriers for non-volatile memories
US11216396B2 (en) 2016-09-29 2022-01-04 Intel Corporation Persistent memory write semantics on PCIe with existing TLP definition
CN107885671B (zh) * 2016-09-30 2021-09-14 华为技术有限公司 一种非易失性内存的持久化方法和计算设备
US10528255B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10528286B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10528267B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Command queue for storage operations
US10409603B2 (en) * 2016-12-30 2019-09-10 Intel Corporation Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
US11106468B2 (en) * 2017-05-23 2021-08-31 Eta Scale Ab System and method for non-speculative reordering of load accesses
US11436087B2 (en) * 2017-05-31 2022-09-06 Everspin Technologies, Inc. Systems and methods for implementing and managing persistent memory
US10282298B2 (en) 2017-06-13 2019-05-07 Microsoft Technology Licensing, Llc Store buffer supporting direct stores to a coherence point
US10303603B2 (en) * 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
US10936441B2 (en) 2017-12-15 2021-03-02 Microsoft Technology Licensing, Llc Write-ahead style logging in a persistent memory device
CN110647480B (zh) * 2018-06-26 2023-10-13 华为技术有限公司 数据处理方法、远程直接访存网卡和设备
US20200210186A1 (en) * 2018-12-27 2020-07-02 Intel Corporation Apparatus and method for non-spatial store and scatter instructions
TWI767175B (zh) 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
US11416397B2 (en) * 2019-10-14 2022-08-16 Intel Corporation Global persistent flush
US11392380B2 (en) * 2019-12-28 2022-07-19 Intel Corporation Apparatuses, methods, and systems to precisely monitor memory store accesses
CN111857825A (zh) 2020-07-20 2020-10-30 北京百度网讯科技有限公司 指令执行方法、装置、电子设备和计算机可读存储介质
US11847048B2 (en) * 2020-09-24 2023-12-19 Advanced Micro Devices, Inc. Method and apparatus for providing persistence to remote non-volatile memory
US11853605B2 (en) 2021-09-17 2023-12-26 Micron Technology, Inc. Database persistence

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1265132A3 (en) 1994-12-02 2005-02-09 Intel Corporation Microprocessor with packing operation of composite operands
US6073210A (en) 1998-03-31 2000-06-06 Intel Corporation Synchronization of weakly ordered write combining operations using a fencing mechanism
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US6546462B1 (en) 1999-12-30 2003-04-08 Intel Corporation CLFLUSH micro-architectural implementation method and system
US6708269B1 (en) 1999-12-30 2004-03-16 Intel Corporation Method and apparatus for multi-mode fencing in a microprocessor system
US6978360B2 (en) 2001-05-11 2005-12-20 International Business Machines Corporation Scalable processor
US7243200B2 (en) 2004-07-15 2007-07-10 International Business Machines Corporation Establishing command order in an out of order DMA command queue
US7606998B2 (en) 2004-09-10 2009-10-20 Cavium Networks, Inc. Store instruction ordering for multi-core processor
US8909871B2 (en) 2006-08-03 2014-12-09 International Business Machines Corporation Data processing system and method for reducing cache pollution by write stream memory access patterns
JP4983919B2 (ja) * 2007-06-20 2012-07-25 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8219741B2 (en) 2008-10-24 2012-07-10 Microsoft Corporation Hardware and operating system support for persistent memory on a memory bus
US10430298B2 (en) 2010-10-28 2019-10-01 Microsoft Technology Licensing, Llc Versatile in-memory database recovery using logical log records
US10949415B2 (en) * 2011-03-31 2021-03-16 International Business Machines Corporation Logging system using persistent memory
WO2013147820A1 (en) 2012-03-29 2013-10-03 Intel Corporation System and method for managing persistence with a multi-level memory hierarchy including non-volatile memory
US9081606B2 (en) 2012-11-13 2015-07-14 International Business Machines Corporation Asynchronous persistent stores for transactions
US9535836B2 (en) * 2013-03-13 2017-01-03 Hewlett Packard Enterprise Development Lp Non-volatile memory update tracking
US9547594B2 (en) 2013-03-15 2017-01-17 Intel Corporation Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage
US9304940B2 (en) 2013-03-15 2016-04-05 Intel Corporation Processors, methods, and systems to relax synchronization of accesses to shared memory
US9367472B2 (en) * 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory
US9423959B2 (en) 2013-06-29 2016-08-23 Intel Corporation Method and apparatus for store durability and ordering in a persistent memory architecture
WO2015012871A1 (en) * 2013-07-26 2015-01-29 Intel Corporation Methods and apparatus for supporting persistent memory
US20150095578A1 (en) * 2013-09-27 2015-04-02 Kshitij Doshi Instructions and logic to provide memory fence and store functionality
US10489158B2 (en) 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI758605B (zh) * 2018-05-01 2022-03-21 美商高通公司 用於儲存持續寫入資料之能量支援之記憶體及方法

Also Published As

Publication number Publication date
WO2016048592A1 (en) 2016-03-31
CN106575218A (zh) 2017-04-19
CN106575218B (zh) 2020-06-26
EP3198403A1 (en) 2017-08-02
KR20170039237A (ko) 2017-04-10
EP3198403A4 (en) 2018-05-30
US10489158B2 (en) 2019-11-26
US20160092223A1 (en) 2016-03-31
TWI598821B (zh) 2017-09-11
KR102282135B1 (ko) 2021-07-26
JP2017532643A (ja) 2017-11-02

Similar Documents

Publication Publication Date Title
TWI598821B (zh) 持續儲存屏障處理器、方法、系統及指令
TWI727999B (zh) 異動結束加上提交持續性的指令、處理器、方法和系統
US11281562B2 (en) Method and system for cache agent trace and capture
TWI761347B (zh) 可中斷及可重啟矩陣乘法指令、處理器、方法和系統
US10990534B2 (en) Device, system and method to facilitate disaster recovery for a multi-processor platform
CN106663471B (zh) 用于反向存储器备份的方法和装置
TWI715686B (zh) 用於容錯及錯誤偵測之系統、方法和裝置
TWI712952B (zh) 持續確定處理器、方法、系統及指令
TWI465920B (zh) 結構存取處理器、方法、系統及指令
TWI751167B (zh) 讀取記憶體指令的處理器、方法及系統,其讀取包括缺陷資料之讀取
TW201337753A (zh) 用於以自發載入延遲與轉換至預提取來消除管線阻塞之系統及方法
CN109661656B (zh) 用于利用条件所有权请求的智能存储操作的方法和装置
US20170286118A1 (en) Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion
KR101806279B1 (ko) 명령어 순서 강제 명령어들의 쌍들, 프로세서들, 방법들, 및 시스템들
US9037903B2 (en) Apparatus and method for partial memory mirroring
WO2019133172A1 (en) Processor, method, and system for reducing latency in accessing remote registers
JP6227151B2 (ja) アドレスへの書き込みに対する監視命令を実行するスケーラブル機構
US20230418750A1 (en) Hierarchical core valid tracker for cache coherency

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees