TW201610677A - 指示異動狀態之一致性協定增強 - Google Patents

指示異動狀態之一致性協定增強 Download PDF

Info

Publication number
TW201610677A
TW201610677A TW104108221A TW104108221A TW201610677A TW 201610677 A TW201610677 A TW 201610677A TW 104108221 A TW104108221 A TW 104108221A TW 104108221 A TW104108221 A TW 104108221A TW 201610677 A TW201610677 A TW 201610677A
Authority
TW
Taiwan
Prior art keywords
transaction
processor
remote
request
cpu
Prior art date
Application number
TW104108221A
Other languages
English (en)
Other versions
TWI652574B (zh
Inventor
法迪Y 布撒巴
哈洛得W 三世 凱恩
麥克K 齊史溫
克理斯俊 傑可比
范倫提娜 沙拉布拉
艾瑞克M 斯奇瓦茲
提摩西J 史洛歌
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 TW201610677A publication Critical patent/TW201610677A/zh
Application granted granted Critical
Publication of TWI652574B publication Critical patent/TWI652574B/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
    • 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
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline or 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 or 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

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)
  • Executing Machine-Instructions (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)
  • Advance Control (AREA)

Abstract

實施例係關於實施一一致性協定。一態樣包括將針對資料之一請求發送至一遠端處理器及由一處理器自該遠端處理器接收一回應。該回應具有該遠端處理器上之一遠端異動之一異動狀態。該處理器在一本機異動干擾追蹤資料表中新增該遠端處理器上之該遠端異動之該異動狀態。

Description

指示異動狀態之一致性協定增強
本發明大體上係關於請求及回應協定,且更具體言之,係關於指示異動狀態之一致性協定增強。
晶片上之中央處理單元(CPU)核心之數目及連接至共用記憶體之CPU核心之數目繼續顯著地增長以支援增長之工作負載容量需求。合作以處理相同工作負載之CPU的增加數目對軟體延展性施予顯著負擔;舉例而言,受到傳統旗號保護之共用佇列或資料結構變為熱點且導致次線性n路定標曲線。傳統上,此情形已藉由在軟體中實施較精細粒度級鎖定且運用在硬體中之較低延時/較高頻寬互連而受到對抗。實施精細粒度級鎖定以改良軟體延展性可為非常複雜且易出錯的,且在現今之CPU頻率下,硬體互連之延時受到晶片及系統之實體尺寸限制且受到光速限制。
已引入硬體異動記憶體(HTM,或在此論述中簡單地為TM),其中指令群組(被稱為異動)在記憶體中之資料結構上以不可部分完成的方式而操作,如由其他中央處理單元(CPU)及I/O子系統所檢視(不可部分完成的操作在其他文獻中亦被稱為區塊並行或序列化)。異動在不獲得鎖定的情況下樂觀地執行,但在執行異動對記憶體位置之操作與對同一記憶體位置之另一操作衝突的情況下可需要中止及重試異動執行。先前,已提議軟體異動記憶體實施以支援軟體異動記憶體 (TM)。
實施例包括一種用於實施一一致性協定之方法、系統及電腦程式產品。將針對資料之一請求發送至一遠端處理器。一處理器自該遠端處理器接收一回應,且該回應具有該遠端處理器上之一遠端異動之一異動狀態。該處理器在一本機異動干擾追蹤資料表中新增該遠端處理器上之該遠端異動之該異動狀態。
100‧‧‧晶粒/電腦系統
112‧‧‧處理器/實例CPU環境
112a‧‧‧處理器(CPU 1)
112b‧‧‧處理器(CPU 2)
114‧‧‧處理器(CPU)
114a‧‧‧中央處理單元(CPU)
114b‧‧‧中央處理單元(CPU)
116a‧‧‧指令快取記憶體
116b‧‧‧指令快取記憶體
118a‧‧‧具有異動記憶體(TM)支援之資料快取記憶體
118b‧‧‧具有TM支援之資料快取記憶體
120a‧‧‧互連控制
120b‧‧‧互連控制
122‧‧‧互連
124‧‧‧共用快取記憶體
126‧‧‧暫存器檢查點
128‧‧‧TM暫存器
130‧‧‧MESI位元
132‧‧‧R位元
138‧‧‧W位元
140‧‧‧標籤
142‧‧‧資料
204‧‧‧指令擷取單元
208‧‧‧指令解碼單元(IDU)
212‧‧‧異動巢套深度(TND)
216‧‧‧發出佇列
220‧‧‧固定點單元(FXU)
224‧‧‧異動備份暫存器檔案
228‧‧‧一般用途暫存器(GR)
232‧‧‧全域完成資料表(GCT)
232a‧‧‧異動巢套深度(TND)
232b‧‧‧單微操作
236‧‧‧有效位址計算器
240‧‧‧L1快取記憶體目錄
244‧‧‧有效位元
248‧‧‧TX讀取位元
252‧‧‧TX已變更位元
256‧‧‧L1目錄
260‧‧‧儲存佇列(STQ)
264‧‧‧搜集儲存快取記憶體
268‧‧‧第2層級(L2)資料快取記憶體
272‧‧‧第3層級(L3)資料快取記憶體
280‧‧‧載入/儲存單元(LSU)
300‧‧‧電腦系統
310‧‧‧記憶體
320a‧‧‧異動指令
320b‧‧‧異動指令
334a‧‧‧暫存器
334b‧‧‧暫存器
350‧‧‧異動診斷區塊
405‧‧‧匯流排
504‧‧‧資料欄位
505‧‧‧請求
506‧‧‧類型欄位
507‧‧‧標籤欄位
508‧‧‧存取欄位
509‧‧‧位址欄位
510‧‧‧錯誤校正欄位
515‧‧‧回應
516‧‧‧類型欄位
517‧‧‧標籤欄位
518‧‧‧資料欄位
519‧‧‧錯誤校正欄位
605‧‧‧請求
700‧‧‧流程圖
705‧‧‧區塊
710‧‧‧區塊
715‧‧‧區塊
720‧‧‧區塊
725‧‧‧區塊
730‧‧‧區塊
735‧‧‧區塊
740‧‧‧區塊
800‧‧‧流程圖
805‧‧‧區塊
810‧‧‧區塊
815‧‧‧區塊
820‧‧‧區塊
825‧‧‧區塊
830‧‧‧區塊
835‧‧‧區塊
840‧‧‧區塊
900‧‧‧流程圖
905‧‧‧區塊
910‧‧‧區塊
915‧‧‧區塊
920‧‧‧區塊
925‧‧‧區塊
930‧‧‧區塊
935‧‧‧區塊
1005‧‧‧協定回應
1010‧‧‧異動中止狀態欄位
1105‧‧‧回應
1200‧‧‧流程圖
1205‧‧‧區塊
1210‧‧‧區塊
1300‧‧‧流程圖
1310‧‧‧區塊
1350a‧‧‧資料表/本機異動干擾追蹤資料表
1350b‧‧‧資料表
1400‧‧‧流程圖
1405‧‧‧區塊
1500‧‧‧流程圖
1505‧‧‧區塊
1510‧‧‧區塊
1515‧‧‧區塊
1520‧‧‧區塊
1525‧‧‧區塊
1530‧‧‧區塊
1535‧‧‧區塊
1540‧‧‧區塊
1545‧‧‧區塊
1550‧‧‧區塊
1600‧‧‧流程圖
1605‧‧‧區塊
1700‧‧‧流程圖
1705‧‧‧區塊
1710‧‧‧區塊
1715‧‧‧區塊
1800‧‧‧電腦程式產品
1802‧‧‧電腦可讀儲存媒體
1804‧‧‧程式指令
當本說明書完結時在申請專利範圍中特定地指出且清楚地主張被視為實施例之主題。實施例之前述及其他特徵及優點自結合隨附圖式而進行的以下詳細描述顯而易見,在圖式中:圖1描繪根據一實施例之實例多處理器(CPU)/核心異動記憶體環境的示意性方塊圖;圖2描繪說明根據一實施例之異動處理器的示意性方塊圖;圖3描繪根據一實施例的圖1及圖2所展示之異動處理器(CPU)之例示性組件的示意性方塊圖;圖4描繪用於允許根據一實施例之硬體異動記憶體環境中之請求及回應的具有作為圖1至圖3所展示之多處理器系統之組件之電腦系統的示意性方塊圖;圖5描繪根據一實施例之例示性協定請求及回應;圖6描繪根據一實施例之例示性協定請求;圖7描繪根據一實施例的由處理器進行針對資料之請求而進行之協定請求產生的流程圖;圖8描繪根據一實施例的由接收請求且發送回應之接收/遠端處理器進行之請求處置的流程圖;圖9描繪說明根據一實施例的由處理器進行之異動處置的流程 圖;圖10描繪根據一實施例之協定請求及新協定回應;圖11描繪根據一實施例之協定寫入請求及新回應;圖12描繪說明根據一實施例的由接收請求之接收/遠端處理器進行之一致性請求處置的流程圖;圖13描繪說明根據一實施例的由請求處理器進行之協定請求發起及處理的流程圖;圖14描繪說明根據一實施例的由處理器進行之異動處置的流程圖;圖15描繪說明根據一實施例的處理器如何對本機追蹤異動干擾儲存資料表中之干擾指示作出回應的流程圖;圖16描繪說明根據一實施例的處理器如何對本機追蹤異動干擾儲存資料表中之干擾指示作出回應的流程圖;圖17描繪根據一實施例的用於一致性協定處置之方法;及圖18描繪根據一實施例之電腦可讀媒體。
多處理器系統使用一致性協定以維持分散式共用記憶體之系統中之全部快取記憶體之間的一致性。當進行來自某一快取記憶體之針對資料之請求時,該快取記憶體發出該資料且更新其不再具有該資料或該資料不被獨佔式地保留的其狀態。若處理器在異動執行中,且向其快取記憶體請求為異動之一部分的資料,則處理器將中止異動,且發送資料。
不提供請求是否已造成另一異動中止的資訊。在一些情況下,將需要向原始請求者通知請求是否影響另一異動、提供回饋且允許請求者之發起者調適其執行,例如,偵測活鎖情境且處理其他效能降級情境。
根據實施例,一致性協定經延伸以包括關於異動狀態之額外資訊。當處理器在異動執行中時,一致性請求可造成其執行中止,例如,此係因為資料為異動讀取或寫入集合之部分,且偵測到衝突。根據實施例,一致性協定請求係運用其(接收一致性請求之處理器)在異動執行期間中止異動的額外資訊而延伸。
「2013年5月22日公開的來自IBM®且全文以引用方式併入本文中之Power ISATM版本2.07教示一實例精簡指令集電腦(RISC)指令集架構(ISA)」。又,來自IBM®且全文以引用方式併入本文中之「z/Architecture Principles of Operation」SA22-7832-09(2012年8月)教示一實例複雜指令集電腦(CISC)指令集架構。
歷史上,電腦系統或處理器具有僅單一處理器(亦稱為處理單元或中央處理單元)。處理器包括指令處理單元(IPU)、分支單元、記憶體控制單元及其類似者。此等處理器能夠每次執行一程式之單一執行緒。開發出可藉由分派待在一處理器上執行歷時一時間段之一程式且接著分派待在該處理器上執行歷時另一時間段之另一程式而時間共用該處理器的作業系統。隨著技術演進,常常將記憶體子系統快取記憶體新增至處理器以及包括轉譯後備緩衝器(TLB)之複雜動態位址轉譯。IPU自身常常被稱作處理器。隨著技術繼續演進,可將整個處理器封裝於單一半導體晶片或晶粒中,此處理器被稱作微處理器。接著開發出併有多個IPU之處理器,此等處理器常常被稱作多處理器。多處理器電腦系統(處理器)之每一此類處理器可包括個別或共用快取記憶體、記憶體介面、系統匯流排、位址轉譯機構及其類似者。虛擬機及指令集架構(ISA)模擬器將軟體層新增至處理器,其藉由單一硬體處理器中的單一IPU之時間截塊使用而向虛擬機提供多個「虛擬處理器」(亦稱為處理器)。隨著技術進一步演進,開發出多執行緒處理器,從而使具有單一多執行緒IPU之單一硬體處理器能夠提供同時地 執行不同程式之執行緒的能力,因此,多執行緒處理器之每一執行緒對於作業系統表現為一處理器。隨著技術進一步演進,有可能將多個處理器(每一者具有一IPU)放於單一半導體晶片或晶粒上。此等處理器係指處理器核心或僅僅係指核心。因此,諸如處理器、中央處理單元、處理單元、微處理器、核心、處理器核心、處理器執行緒、執行緒之術語常常可被互換地使用。在不脫離本文中之教示的情況下,可由包括上文所展示之處理器的任何或全部處理器實踐本文中之實施例之態樣。其中,本文中使用術語「執行緒」或「處理器執行緒」,預期到可在處理器執行緒實施中具有實施例之特定優點。
在基於Intel®之實施例中的異動執行
在2012年2月的全文以引用方式併入本文中之「Intel® Architecture Instruction Set Extensions Programming Reference」319433-012A中,第8章部分地教示多執行緒應用程式可利用增加數目個CPU核心以達成較高效能。然而,多執行緒應用程式之寫入需要程式設計師理解及考量在多個執行緒之間共用的資料。對共用資料之存取通常需要同步機制。此等同步機制用以確保多個執行緒藉由應用於共用資料之序列化操作而常常經由使用受到鎖定保護之關鍵區段來更新共用資料。因為序列化限制並行性,所以程式設計師試圖限制歸因於同步之附加項。
Intel®異動同步延伸(Intel® TSX)允許處理器動態地判定執行緒是否需要經由受鎖定保護之關鍵區段而序列化,且僅當時需要才執行彼序列化。此情形允許處理器曝露及採用由於動態不必要同步而隱藏於應用程式中的並行性。
在運用Intel TSX的情況下,異動地執行程式設計師指定程式碼區域(亦被稱作「異動區域」或僅僅被稱作「異動」)。若異動執行成功地完成,則在異動區域內執行之全部記憶體操作將看起來在自其他 處理器進行檢視時已瞬時地發生。處理器進行在異動區域內執行的經執行異動之記憶體操作,僅當發生成功認可時(亦即,當異動成功地完成執行時)才可為其他處理器所見。此處理序常常被稱作不可部分完成的認可。
Intel TSX提供兩個軟體介面以指定用於異動執行之程式碼區域。硬體鎖定省略(Hardware Lock Elision,HLE)為用以指定異動區域之舊版相容指令集延伸(包含XACQUIRE及XRELEASE首碼)。受限式異動記憶體(Restricted Transactional Memory,RTM)為供程式設計師以比在運用HLE之情況下可能之方式更靈活的方式定義異動區域的新指令集介面(包含XBEGIN、XEND及XABORT指令)。HLE係用於喜好習知互斥程式設計模型之回溯相容性且願意在舊版硬體上執行具備HLE功能之軟體但亦願意在具有HLE支援之硬體上利用新鎖定省略能力的程式設計師。RTM係用於喜好異動執行硬體之靈活介面的程式設計師。另外,Intel TSX亦提供XTEST指令。此指令允許軟體查詢邏輯處理器是否正在由HLE或RTM識別之異動區域中異動地執行。
因為成功異動執行確保不可部分完成的認可,所以處理器在無明確同步的情況下樂觀地執行程式碼區域。若同步對於彼特定執行係不必要的,則執行可在無任何跨執行緒序列化的情況下認可。若處理器不能不可部分完成地認可,則樂觀執行失敗。當發生此情形時,處理器將回復執行,其為被稱作異動中止之處理序。在異動中止時,處理器將捨棄在藉由異動而使用之記憶體區域中執行的全部更新、還原架構狀態以看起來好像樂觀執行從未發生,且非異動地恢復執行。
處理器可出於眾多原因而執行異動中止。中止異動之主要原因係歸因於異動執行邏輯處理器與另一邏輯處理器之間的衝突記憶體存取。此等衝突記憶體存取可防止成功異動執行。自異動區域內讀取之記憶體位址構成異動區域之讀取集合,且寫入至異動區域內之位址構 成異動區域之寫入集合。Intel TSX以快取行之粒度維持讀取集合及寫入集合。若另一邏輯處理器讀取為異動區域之寫入集合之部分的位置或寫入為異動區域之讀取集合或寫入集合之部分的位置,則發生衝突記憶體存取。衝突存取通常意謂此程式碼區域需要序列化。因為Intel TSX偵測到在快取行之粒度下的資料衝突,所以置放於同一快取行中之無關資料位置將被偵測為引起異動中止之衝突。異動中止亦可歸因於有限異動資源而發生。舉例而言,在該區域中存取之資料之量可超過實施特定容量。另外,一些指令及系統事件可造成異動中止。頻繁異動中止引起循環浪費及無效率增加。
硬體鎖定省略
硬體鎖定省略(HLE)提供用於使程式設計師使用異動執行之舊版相容指令集介面。HLE提供兩個新指令首碼提示:XACQUIRE及XRELEASE。
在運用HLE的情況下,程式設計師將XACQUIRE首碼新增至用以獲取正保護關鍵區段之鎖定的指令前方。處理器將首碼處理為用以省略與鎖定獲取操作相關聯之寫入的提示。即使鎖定獲取具有對鎖定之關聯寫入操作,處理器仍不將鎖定之位址新增至異動區域之寫入集合,其亦不發出對鎖定之任何寫入請求。取而代之,將鎖定之位址新增至讀取集合。邏輯處理器進入異動執行。若鎖定在XACQUIRE首碼指令之前可用,則全部其他處理器此後將繼續將鎖定視為可用。因為異動執行邏輯處理器既不將鎖定之位址新增至其寫入集合亦不執行對鎖定之外部可見寫入操作,所以其他邏輯處理器可在不造成資料衝突的情況下讀取鎖定。此情形允許其他邏輯處理器亦進入且並行地執行受到鎖定保護之關鍵區段。處理器自動地偵測在異動執行期間發生之任何資料衝突且將在必要時執行異動中止。
即使省略處理器不執行對鎖定之任何外部寫入操作,硬體仍確 保對鎖定之操作之程式次序。若省略處理器自身讀取關鍵區段中之鎖定之值,則將看起來好像處理器已獲取鎖定,亦即,讀取將傳回非省略值。此行為允許HLE執行在功能上等效於無HLE首碼之執行。
可將XRELEASE首碼新增於用以釋放保護關鍵區段之鎖定的指令前方。釋放鎖定涉及對鎖定之寫入。若指令用以將鎖定之值還原至鎖定在對同一鎖定之XACQUIRE首碼鎖定獲取操作之前所具有的值,則處理器省略與鎖定之釋放相關聯的外部寫入請求且不將鎖定之位址新增至寫入集合。處理器接著嘗試認可異動執行。
在運用HLE的情況下,若多個執行緒執行受到同一鎖定保護之關鍵區段,但其不對彼此之資料執行任何衝突操作,則執行緒可並行地且在無序列化的情況下執行。即使軟體使用對共同鎖定之鎖定獲取操作,硬體仍識別此情形、省略鎖定,且在兩個執行緒上在無需經由鎖定之任何通信的情況下(若此通信為動態地不必要的)執行關鍵區段。
若處理器不能夠異動地執行該區域,則處理器將非異動地且在無省略的情況下執行該區域。具備HLE功能之軟體具有與基於底層非HLE鎖定之執行相同的前向進度保證。為了成功HLE執行,鎖定及關鍵區段程式碼必須遵循某些準則。此等準則僅影響效能;且遵循此等準則之失敗將不引起功能失敗。無HLE支援之硬體將忽略XACQUIRE及XRELEASE首碼提示且將不執行任何省略,此係因為此等首碼對應於其中XACQUIRE及XRELEASE有效之指令上忽略的REPNE/REPE IA-32首碼。重要地,HLE與現有基於鎖定之程式設計模型相容。提示之不當使用將不造成功能錯誤,但其可曝露已經在程式碼中之潛伏錯誤。
受限式異動記憶體(RTM)提供用於異動執行之靈活軟體介面。RTM提供三個新指令(XBEGIN、XEND及XABORT)以供程式設計師開始、認可及中止異動執行。
程式設計師使用XBEGIN指令以指定異動程式碼區域之開始且使用XEND指令以指定異動程式碼區域之結束。若不能成功地異動地執行RTM區域,則XBEGIN指令採取將相對偏移提供至後援指令位址之運算元。
處理器可出於許多原因而中止RTM異動執行。在許多情況下,硬體自動地偵測異動中止條件且自具有對應於在XBEGIN指令之開始時存在之架構狀態的架構狀態及經更新以描述中止狀態之EAX暫存器的後援指令位址重新開始執行。
XABORT指令允許程式設計師明確地中止RTM區域之執行。XABORT指令採取載入至EAX暫存器中之8位元直接引數且因此將在RTM中止之後可用於軟體。RTM指令不具有與其相關聯之任何資料記憶體位置。雖然硬體不提供關於RTM區域是否將永遠成功地異動地認可的保證,但遵循建議準則之大多數異動被預期為成功地異動地認可。然而,程式設計師必須始終在後援路徑中提供替代程式碼序列以保證前向進度。此情形可與獲取鎖定且非異動地執行指定程式碼區域一樣簡單。另外,始終在給定實施上中止之異動可在未來實施上異動地完成。因此,程式設計師必須確保在功能上測試用於異動區域及替代程式碼序列之程式碼路徑。
HLE支援之偵測
若CPUID.07H.EBX.HLE[bit 4]=1,則處理器支援HLE執行。然而,應用程式可在不檢查處理器是否支援HLE的情況下使用HLE首碼(XACQUIRE及XRELEASE)。無HLE支援之處理器忽略此等首碼且將在不進入異動執行的情況下執行程式碼。
RTM支援之偵測
若CPUID.07H.EBX.RTM[bit 11]=1,則處理器支援RTM執行。應用程式必須檢查處理器在其使用RTM指令(XBEGIN、XEND、 XABORT)之前是否支援RTM。此等指令將在不支援RTM之處理器上使用時產生#UD例外狀況。
XTEST指令之偵測
若處理器支援HLE或RTM,則其支援XTEST指令。應用程式必須在使用XTEST指令之前檢查此等特徵旗標中之任一者。此指令將在不支援HLE或RTM之處理器上使用時產生#UD例外狀況。
查詢異動執行狀態
XTEST指令可用以判定由HLE或RTM指定之異動區域之異動狀態。應注意,雖然在不支援HLE之處理器上忽略HLE首碼,但XTEST指令將在不支援HLE或RTM之處理器上使用時產生#UD例外狀況。
針對HLE鎖定之要求
對於用以成功地異動地認可之HLE執行,鎖定必須滿足某些屬性且對鎖定之存取必須遵循某些準則。
XRELEASE首碼指令必須將省略鎖定之值還原至其在鎖定獲取之前所具有的值。此情形允許硬體藉由不將鎖定新增至寫入集合而安全地省略鎖定。鎖定釋放(XRELEASE首碼)指令之資料大小及資料位址必須匹配於鎖定獲取(XACQUIRE首碼)之資料大小及資料位址,且鎖定必須不跨越快取行邊界。
軟體應不將除了XRELEASE首碼指令以外之任何指令寫入至異動HLE區域內部之省略鎖定,否則此寫入可造成異動中止。另外,遞回鎖定(其中執行緒在無首先釋放鎖定的情況下多次獲取同一鎖定)亦可造成異動中止。應注意,軟體可觀測關鍵區段內部之省略鎖定獲取之結果。此讀取操作將使寫入之值傳回至鎖定。
處理器自動地偵測對此等準則之違規,且在無省略的情況下安全地轉變至非異動執行。因為Intel TSX偵測到在快取行之粒度下的衝突,所以至共置於與省略鎖定相同之快取行上的資料之寫入可由省略 同一鎖定之其他邏輯處理器偵測為資料衝突。
異動巢套(Transactional Nesting)
HLE及RTM兩者支援巢套式異動區域。然而,異動中止將狀態還原至開始異動執行之操作:最外XACQUIRE首碼HLE合格指令或最外XBEGIN指令。處理器將全部巢套式異動處理為一個異動。
HLE巢套及省略
程式設計師可將HLE區域巢套直至MAX_HLE_NEST_COUNT之實施特定深度。每一邏輯處理器在內部追蹤巢套計數,但此計數不可用於軟體。XACQUIRE首碼HLE合格指令遞增巢套計數,且XRELEASE首碼HLE合格指令遞減巢套計數。當巢套計數自零變為一時,邏輯處理器進入異動執行。僅當巢套計數變為零時,邏輯處理器才嘗試認可。若巢套計數超過MAX_HLE_NEST_COUNT,則可發生異動中止。
除了支援巢套式HLE區域以外,處理器亦可省略多個巢套式鎖定。處理器追蹤用於省略之鎖定,該鎖定以用於彼鎖定之XACQUIRE首碼HLE合格指令開始且以用於彼同一鎖定之XRELEASE首碼HLE合格指令結束。處理器可在任一時間追蹤高達MAX_HLE_ELIDED_LOCKS數目個鎖定。舉例而言,若實施支援為二之MAX_HLE_ELIDED_LOCKS值,且若程式設計師巢套三個HLE識別關鍵區段(在不對三個相異鎖定中之任一者執行介入XRELEASE首碼HLE合格指令的情況下藉由對該等鎖定執行XACQUIRE首碼HLE合格指令),則將省略前兩個鎖定,但將不省略第三鎖定(但將新增至異動之寫入集合)。然而,執行仍將異動地繼續。一旦遇到用於兩個省略鎖定中之一者的XRELEASE,就將省略經由XACQUIRE首碼HLE合格指令而獲取的後續鎖定。
當全部省略XACQUIRE及XRELEASE對已匹配、巢套計數變為零 且鎖定已滿足要求時,處理器嘗試認可HLE執行。若執行不能不可部分完成地認可,則執行在無省略的情況下轉變至非異動執行,就好像第一指令不具有XACQUIRE首碼。
RTM巢套
程式設計師可將RTM區域巢套直至實施特定MAX_RTM_NEST_COUNT。邏輯處理器在內部追蹤巢套計數,但此計數不可用於軟體。XBEGIN指令遞增巢套計數,且XEND指令遞減巢套計數。僅當巢套計數變為零時,邏輯處理器才嘗試認可。若巢套計數超過MAX_RTM_NEST_COUNT,則發生異動中止。
巢套HLE及RTM
HLE及RTM將兩個替代軟體介面提供至共同異動執行能力。當HLE及RTM巢套在一起(例如,HLE在RTM內部或RTM在HLE內部)時,異動處理行為係實施特定的。然而,在全部狀況下,實施將維持HLE及RTM語義。實施可在用於RTM區域內部時選擇忽略HLE提示,且可在RTM指令用於HLE區域內部時造成異動中止。在後一狀況中,自異動執行至非異動執行之轉變順暢地發生,此係因為處理器將在不實際上進行省略的情況下重新執行HLE區域,且接著執行RTM指令。
中止狀態定義
RTM使用EAX暫存器以將中止狀態傳達至軟體。在RTM中止之後,EAX暫存器具有以下定義。
用於RTM之EAX中止狀態僅提供中止之原因。對於RTM區域,無論發生中止抑或認可,EAX中止狀態自身皆不編碼。在RTM中止之後,EAX之值可為0。舉例而言,CPUID指令在用於RTM區域內部時造成異動中止,且可不滿足用於設定EAX位元中之任一者的要求。此情形可引起為0之EAX值。
RTM記憶體排序
成功RTM認可造成RTM區域中之全部記憶體操作看起來好像不可部分完成地執行。由XBEGIN接著由XEND組成的經成功認可之RTM區域(甚至在RTM區域中無記憶體操作的情況下)具有與LOCK首碼指令相同的排序語義。
XBEGIN指令不具有柵欄語義。然而,若RTM執行中止,則來自RTM區域內之全部記憶體更新被捨棄且不可為任何其他邏輯處理器所見。
具備RTM功能之除錯程式支援
根據預設,RTM區域內部之任何除錯例外狀況將造成異動中止,且將使控制流程重新導向至架構狀態被復原且EAX中之位元4被設定的後援指令位址。然而,為了允許軟體除錯程式在除錯例外狀況時攔截執行,RTM架構提供額外能力。
若DR7之位元11及IA32_DEBUGCTL_MSR之位元15皆為1,則歸因於除錯例外狀況(#DB)或中斷點例外狀況(#BP)之任何RTM中止造成執行回復且自XBEGIN指令而非後援位址重新開始。在此情境下,EAX暫存器亦將還原回至XBEGIN指令之點。
程式設計考慮
典型程式設計師識別區域被預期為異動地執行且成功地認可。然而,Intel TSX不提供任何此類保證。異動執行可出於許多原因而中止。為了完全地利用異動能力,程式設計師應遵循某些準則以增加其異動執行成功地認可之機率。
此章節論述可造成異動中止之各種事件。架構確保在隨後中止執行之異動內執行的更新將永不變得可見。僅已認可異動執行起始對架構狀態之更新。異動中止永不造成功能失敗且僅影響效能。
基於指令之考慮
程式設計師可安全地在異動(HLE或RTM)內部使用任何指令且可使用處於任何特殊權限層級之異動。然而,一些指令將始終中止異動執行且造成執行順暢地及安全地轉變至非異動路徑。
Intel TSX允許最常見的指令在不造成中止的情況下用於異動內部。異動內部之以下操作通常不造成中止:‧對指令指標暫存器(一般用途暫存器(GPR)及狀態旗標(CF、OF、SF、PF、AF及ZF)之操作;及‧對XMM及YMM暫存器以及MXCSR暫存器之操作。
然而,當在異動區域內部互混SSE操作與AVX操作時,程式設計師必須小心。互混存取XMM暫存器之SSE指令與存取YMM暫存器之AVX指令可造成異動中止。程式設計師可在異動內部使用REP/REPNE首碼字串操作。然而,長字串可造成中止。另外,若CLD指令及STD指令改變DF旗標之值,則CLD指令及STD指令之使用可造成中止。然而,若DF為1,則STD指令將不造成中止。類似地,若DF為0,則CLD指令將不造成中止。
此處未被列舉為用於異動內部時造成中止之指令通常將不造成異動中止(實例包括但不限於MFENCE、LFENCE、SFENCE、RDTSC、RDTSCP等等)。
以下指令將中止任何實施上之異動執行:
‧XABORT
‧CPUID
‧PAUSE
另外,在一些實施中,以下指令可始終造成異動中止。此等指令不被預期為常用於典型異動區域內部。然而,程式設計師必須不依賴於此等指令以迫使異動中止,此係因為其是否造成異動中止係實施相依的。
‧對X87及MMX架構狀態之操作。此情形包括全部MMX及X87指令,包括FXRSTOR及FXSAVE指令。
‧對EFLAGS之非狀態部分的更新:CLI、STI、POPFD、POPFQ、CLTS。
‧更新片段暫存器、除錯暫存器及/或控制暫存器之指令:MOV至DS/ES/FS/GS/SS、POP DS/ES/FS/GS/SS、LDS、LES、LFS、LGS、LSS、SWAPGS、WRFSBASE、WRGSBASE、LGDT、SGDT、LIDT、SIDT、LLDT、SLDT、LTR、STR、遠CALL、遠JMP、遠RET、IRET、MOV至DRx、MOV至CR0/CR2/CR3/CR4/CR8及LMSW。
‧環形轉變:SYSENTER、SYSCALL、SYSEXIT,及SYSRET。
‧TLB及快取能力控制:CLFLUSH、INVD、WBINVD、INVLPG、INVPCID,及具有非時間提示之記憶體指令(MOVNTDQA、MOVNTDQ、MOVNTI、MOVNTPD、MOVNTPS及MOVNTQ)。
‧處理器狀態儲存:XSAVE、XSAVEOPT及XRSTOR。
‧中斷:INTn、INTO。
‧IO:IN、INS、REP INS、OUT、OUTS、REP OUTS及其變 體。
‧VMX:VMPTRLD、VMPTRST、VMCLEAR、VMREAD、VMWRITE、VMCALL、VMLAUNCH、VMRESUME、VMXOFF、VMXON、INVEPT及INVVPID。
‧SMX:GETSEC。
‧UD2、RSM、RDMSR、WRMSR、HLT、MONITOR、MWAIT、XSETBV、VZEROUPPER、MASKMOVQ及V/MASKMOVDQU。
執行時間考慮
除了基於指令之考慮以外,執行時間事件亦可造成異動執行中止。此等事件可歸因於資料存取型樣或微架構實施特徵。以下清單並非全部中止原因之全面論述。
將抑制必須曝露於軟體之異動中之任何故障或陷阱。異動執行將中止且執行將轉變至非異動執行,就好像故障或陷阱從未發生。若例外狀況未被遮罩,則彼未遮罩例外狀況將引起異動中止且狀態將看起來好像例外狀況從未發生。
在異動執行期間發生之同步例外狀況事件(#DE、#OF、#NP、#SS、#GP、#BR、#UD、#AC、#XF、#PF、#NM、#TS、#MF、#DB、#BP/INT3)可造成執行不異動地認可,且需要非異動執行。此等事件被抑制,就好像其從未發生。在運用HLE的情況下,因為非異動程式碼路徑與異動程式碼路徑相同,所以此等事件通常將在造成例外狀況之指令非異動地重新執行時重新出現,從而造成關聯同步事件在非異動執行中適當地遞送。在異動執行期間發生之非同步事件(NMI、SMI、INTR、IPI、PMI等等)可造成異動執行中止且轉變至非異動執行。在處理異動中止之後,將擱置及處置非同步事件。
異動僅支援回寫可快取記憶體類型操作。若異動包括對任何其他記憶體類型之操作,則異動可始終中止。此情形包括對UC記憶體 類型之指令擷取。
異動區域內之記憶體存取可需要處理器設定參考頁面資料表輸入項之已存取旗標及已變更旗標。處理器如何處置此情形之行為係實施特定的。即使異動區域隨後中止,一些實施仍可允許對此等旗標之更新變得外部可見。若此等旗標需要被更新,則一些Intel TSX實施可選擇中止異動執行。另外,處理器之頁面資料表查核行程可產生對其自有異動寫入但未認可之狀態的存取。在此等情形下,一些Intel TSX實施可選擇中止異動區域之執行。無論如何,架構皆確保:若異動區域中止,則經由諸如TLB之結構之行為將不會使異動寫入狀態在架構上可見。
異動地執行自我修改程式碼亦可造成異動中止。即使當使用HLE及RTM時,程式設計師仍必須繼續遵循Intel建議準則以用於寫入自我修改及交叉修改程式碼。雖然RTM及HLE之實施通常將提供足夠資源以用於執行共同異動區域,但用於異動區域之實施約束及過度大小可造成異動執行中止且轉變至非異動執行。架構不提供可用於進行異動執行之資源之量的保證,且不保證異動執行將永遠成功。
對異動區域內存取之快取行之衝突請求可防止異動成功地執行。舉例而言,若邏輯處理器P0在異動區域中讀取行A,且另一邏輯處理器P1寫入行A(在異動區域內部或外部),則邏輯處理器P0可在邏輯處理器P1之寫入干擾處理器P0異動地執行之能力的情況下中止。
類似地,若P0在異動區域中寫入行A,且P1讀取或寫入行A(在異動區域內部或外部),則P0可在P1對行A之存取干擾P0異動地執行之能力的情況下中止。另外,其他一致性訊務可有時表現為衝突請求且可造成中止。雖然可發生此等錯誤衝突,但其被預期為不常見。用以在上述情境下判定P0抑或P1中止之衝突解析策略係實施特定的。
泛型異動執行實施例:
根據由Austen McDonald在2009年6月為了部分地滿足哲學博士學位之要求而提交給斯坦福大學之電腦科學系及研究生委員會的論文「ARCHITECTURES FOR TRANSACTIONAL MEMORY」(其全文以引用方式併入本文中),基本上存在實施不可部分完成且隔離的異動區域所需要之三個機制:版本設定、衝突偵測,及爭用管理。
為了使異動程式碼區域顯得不可部分完成的,必須儲存由彼異動程式碼區域執行之全部修改且使其保持與其他異動隔離直至認可時間為止。系統藉由實施版本設定策略而執行此情形。存在兩個版本設定範例:急切及緩慢。急切版本設定系統在適當位置中儲存新產生之異動值且另外在被稱為復原記錄檔(undo-log)之記錄檔中儲存先前記憶體值。緩慢版本設定系統在被稱為寫入緩衝器之緩衝器中暫時地儲存新值,從而僅在認可時將新值複製至記憶體。在任一系統中,快取記憶體用以最佳化新版本之儲存。
為了確保異動看起來好像被不可部分完成地執行,必須偵測及解析衝突。兩個系統(亦即,急切版本設定系統及緩慢版本設定系統)藉由實施衝突偵測策略(樂觀或悲觀)來偵測衝突。樂觀系統並行地執行異動,從而僅當異動認可時才檢查衝突。悲觀系統在每一載入及儲存時檢查衝突。類似於版本設定,衝突偵測亦使用快取記憶體,從而將每一行標記為讀取集合之部分、寫入集合之部分,或兩者。兩個系統藉由實施爭用管理策略來解析衝突。存在許多爭用管理策略,一些策略更適合於樂觀衝突偵測且一些策略更適合於悲觀衝突偵測。下文描述一些實例策略。
因為每一異動記憶體(TM)系統需要版本設定偵測及衝突偵測兩者,所以此等選項引起四個相異TM設計:急切-悲觀(EP)、急切-樂觀(EO)、緩慢-悲觀(LP)及緩慢-樂觀(LO)。資料表2簡要地描述全部四個相異TM設計。
圖1及圖2描繪多核心TM環境之實例。圖1展示一個晶粒100上之在互連控制120a、120b之管理下與互連122連接的許多具備TM功能之CPU(CPU1 114a、CPU2 114b等等)。每一CPU 114a、114b(亦被稱為處理器)可具有由用於自記憶體快取待執行指令之指令快取記憶體116a、116b及用於快取待由CPU 114a、114b操作之記憶體位置之資料(運算元)的具有TM支援之資料快取記憶體118a、118b組成的分割快取記憶體(在圖1中,每一CPU 114a、114b及其關聯快取記憶體被參考為112a、112b)。在一實施中,多個晶粒100之快取記憶體經互連以支援多個晶粒100之快取記憶體之間的快取一致性。在一實施中,使用單一快取記憶體而非分割快取記憶體,從而保留指令及資料兩者。在實施中,CPU快取記憶體為階層式快取記憶體結構中之一個快取層級。舉例而言,每一晶粒100可使用待在晶粒100上之全部CPU之間共用的共用快取記憶體124。在另一實施中,每一晶粒可能夠存取在全部晶粒100之全部處理器之間共用的共用快取記憶體124。
圖2展示實例異動CPU 114之細節,包括用以支援TM之新增物。異動CPU(處理器)114可包括用於支援暫存器檢查點126及特殊TM暫存器128之硬體。異動CPU快取記憶體可具有習知快取記憶體之MESI位元130、標籤140及資料142,而且具有(例如)展示一行已由CPU 114讀取同時執行異動的R位元132,及展示一行已由CPU 114寫入同時執行異動的W位元138。
用於任何TM系統中之程式設計師的關鍵細節為非異動存取如何與異動互動。根據設計,異動存取係使用上述機制而彼此篩檢。然而,仍必須考慮規則非異動載入與含有用於彼位址之新值之異動之間的互動。另外,亦必須探索非異動儲存與已讀取彼位址之異動之間的互動。此等情形為資料庫概念隔離之問題。
當每一非異動載入及儲存就像一不可部分完成的異動時,TM系 統據稱實施強隔離,有時被稱為強不可部分完成性。因此,非異動載入不能看到未認可資料且非異動儲存造成已讀取彼位址之任何異動之不可部分完成性違規。並非此狀況的系統據稱實施弱隔離,有時被稱為弱不可部分完成性。
歸因於強隔離之概念化及實施的相對簡易性,強隔離相比於弱隔離常常更理想。另外,若程式設計師已忘記運用異動來環繞一些共用記憶體參考,從而造成錯誤,則在運用強隔離的情況下,程式設計師將常常使用簡單除錯介面來偵測彼失察,此係因為程式設計師將看到造成不可部分完成性違規之非異動區域。又,在一個模型中寫入之程式可在另一模型上不同地工作。
另外,強隔離相比於弱隔離常常較易於在硬體TM中支援。在運用強隔離的情況下,因為一致性協定已經管理處理器之間的載入及儲存通信,所以異動可偵測非異動載入及儲存且適當地起作用。為了在軟體異動記憶體(TM)中實施強隔離,必須修改非異動程式碼以包括讀取及寫入屏障;從而潛在地削弱效能。儘管已花費極大努力以移除許多不需要的屏障,但此等技術常常係複雜的且效能通常遠低於HTM之效能。
資料表2說明異動記憶體之基本設計空間(版本設定及衝突偵測)。
急切-悲觀(EP)
下文所描述之此第一TM設計被稱為急切-悲觀。EP系統將其寫入集合儲存「在適當位置中」(因此,名稱「急切」),且為了支援回復,在「復原記錄檔」中儲存覆寫行之舊值。處理器使用W 138及R 132快取記憶體位元以追蹤讀取及寫入集合且當接收到窺探載入請求時偵測衝突。或許,已知文獻中之EP系統之最值得注意的實例為LogTM及UTM。
在EP系統中開始異動非常類似於在其他系統中開始異動:tm_begin()採取一暫存器檢查點,且初始化任何狀態暫存器。EP系統亦需要初始化復原記錄檔,其細節取決於記錄檔格式,但常常涉及初始化指向經預分配執行緒私用記憶體之區域的記錄檔基底指標,及清除記錄檔界限暫存器。
版本設定:在EP中,歸因於急切版本設定經設計以起作用的方式,MESI 130狀態轉變(對應於已修改、獨佔式、共用及無效程式碼狀態之快取行指示符)通常不變。在異動外部,MESI 130狀態轉變完全地不變。當在異動內部讀取一行時,標準一致性轉變應用(S(共用)→S,I(無效)→S,或I→E(獨佔式)),從而按需要而發出一載入未命中,但亦設定R 132位元。同樣地,寫入一行應用標準轉變(S→M,E→I,I→M),從而按需要而發出一未命中,但亦設定W 138(寫入)位元。在第一次寫入行時,載入整個行之舊版本,接著寫入至復原記錄檔以在當前異動中止的狀況下保留舊版本。接著在舊資料上方將新寫入資料儲存「在適當位置中」。
衝突偵測:悲觀衝突偵測使用在未命中時交換之一致性訊息,或升級,以尋找異動之間的衝突。當在異動內發生讀取未命中時,其他處理器接收載入請求;但若其不具有所需行,則其忽略該請求。若其他處理器非推測式地具有所需行或具有行R 132(讀取),則其將彼行降級至S,且在某些狀況下,若其具有處於MESI 130之M或E狀態的 行,則發出快取記憶體至快取記憶體傳送。然而,若快取記憶體具有行W 138,則在兩個異動之間偵測到衝突且必須採取額外動作。
類似地,當異動設法將一行自共用升級至已修改(在第一寫入時)時,異動發出獨佔式載入請求,其亦用以偵測衝突。若接收快取記憶體非推測式地具有該行,則該行失效,且在某些狀況下發出快取記憶體至快取記憶體傳送(M或E狀態)。但,若行為R 132或W 138,則偵測到衝突。
驗證:因為對每一載入執行衝突偵測,所以異動始終具有對其自有寫入集合之獨佔式存取。因此,驗證無需任何額外工作。
認可:因為急切版本設定在適當位置中儲存資料項目之新版本,所以認可處理序簡單地清除W 138及R 132位元且捨棄復原記錄檔。
中止:當異動回復時,必須還原復原記錄檔中之每一快取行之原始版本,其為被稱為「展開(unrolling)」或「應用(applying)」該記錄檔之處理序。此情形係在tm_discard()期間進行,且相對於其他異動必須為不可部分完成的。具體言之,寫入集合必須仍用以偵測衝突:此異動具有其復原記錄檔中之行之唯一正確版本,且請求異動必須等待正確版本自彼記錄檔還原。可使用硬體狀態機或軟體中止處理常式來應用此記錄檔。
急切-悲觀具有以下特性:認可為簡單的,且因為其在適當位置中,所以非常快速。類似地,驗證為無操作(no-op)。悲觀衝突偵測提早地偵測到衝突,藉此縮減「命定(doomed)」異動之數目。舉例而言,若兩個異動涉及讀取後寫入相依性,則在悲觀衝突偵測中立即偵測彼相依性。然而,在樂觀衝突偵測中,在寫入器認可以前不偵測此等衝突。
急切-悲觀亦具有以下特性:如上文所描述,在第一次寫入快取 行時,必須將舊值寫入至記錄檔,從而招致額外快取記憶體存取。中止係代價大的,此係因為其需要復原該記錄檔。對於記錄檔中之每一快取行,必須發出一載入,或許在繼續至下一行之前直至主記憶體。悲觀衝突偵測亦防止存在某些可序列化排程。
另外,因為隨著發生衝突而處置衝突,所以存在活鎖之可能性,且必須使用小心爭用管理機制以保證前向進度。
緩慢-樂觀(LO)
另一風行TM設計為緩慢-樂觀(LO),其將其寫入集合儲存於「寫入緩衝器」或「重做記錄檔」中且在認可時間偵測衝突(仍使用R 132及W 138位元)。
版本設定:正如在EP系統中時,在異動外部強制LO設計之MESI協定。一旦在異動內部,讀取一行就招致標準MESI轉變,而且設定R 132位元。同樣地,寫入一行會設定該行之W 138位元,但處置LO設計之MESI轉變不同於EP設計之轉變。第一,在運用緩慢版本設定的情況下,寫入資料之新版本儲存於快取記憶體階層中直至認可為止,同時其他異動能夠存取可用於記憶體或其他快取記憶體中之舊版本。為了使舊版本可用,當藉由異動進行第一次寫入時必須收回已變更行(M行)。第二,由於樂觀衝突偵測特徵而無需升級未命中:若異動具有處於S狀態之行,則其可簡單地寫入至該行且將彼行升級至M狀態而不向其他異動傳達改變,此係因為衝突偵測係在認可時間進行。
衝突偵測及驗證:為了驗證異動且偵測衝突,僅當LO準備認可時,LO才將已推測式修改行之位址傳達至其他異動。在驗證時,處理器發送含有寫入集合中之全部位址的一個潛在大的網路封包。資料未被發送,但存留於認可者之快取記憶體中且被標記為已變更(M)。為了在不搜尋用於被標記為W之行之快取記憶體的情況下建置此封包,使用簡單位元向量(被稱為「儲存緩衝器」,其中每快取行具有一 個位元)以追蹤此等已推測式修改行。其他異動使用此位址封包以偵測衝突:若在快取記憶體中找到位址且設定R 132及/或W 138位元,則起始衝突。若找到行,但既不設定R 132亦不設定W 138,則該行簡單地失效,其類似於處理獨佔式載入。
為了支援異動不可部分完成性,必須不可部分完成地處置此等位址封包,亦即,同時可不存在具有相同位址之兩個位址封包。在LO系統中,此情形可藉由在發送位址封包之前簡單地獲取全域認可符記而達成。然而,可藉由首先發送出位址封包、收集回應、強制排序協定(或許首先為最舊異動)且在全部回應令人滿意後就認可而使用兩階段認可方案。
認可:一旦已發生驗證,認可就無需特殊處理:簡單地清除W 138及R 132位元以及儲存緩衝器。異動之寫入已經在快取記憶體中被標記為已變更,且此等行的其他快取記憶體之複本已經由位址封包而失效。其他處理器可接著經由規則一致性協定而存取已認可資料。
中止:回復同等地容易:因為本機快取記憶體內含有寫入集合,所以此等行可失效,接著清除W 138及R 132位元以及儲存緩衝器。儲存緩衝器允許找到W行以在無需搜尋快取記憶體的情況下失效。
緩慢-樂觀具有以下特性:中止非常快速,從而無需額外載入或儲存且僅進行本機改變。相比於在EP中找到之可序列化排程,可存在更多可序列化排程,此情形允許LO系統更積極地推測出異動係獨立的,其可得到較高效能。最後,衝突之晚偵測可增加前向進度之可能性。
緩慢-樂觀亦具有以下特性:驗證花費與寫入集合之大小成比例的全域通信時間。因為僅在認可時間偵測衝突,所以命定異動可浪費工作。
緩慢-悲觀(LP)
緩慢-悲觀(LP)表示第三TM設計選項,位於EP與LO之間的某處:在寫入緩衝器中儲存新寫入行,但基於每一存取而偵測衝突。
版本設定:版本設定類似於但不相同於LO之版本設定:讀取一行會設定其R位元132,寫入一行會設定其W位元138,且儲存緩衝器用以追蹤快取記憶體中之W行。又,當藉由異動進行第一次寫入時必須收回已變更(M)行,正如在LO中。然而,因為衝突偵測係悲觀的,所以必須在自I,S→M升級異動行時執行載入獨佔式,此不同於LO。
衝突偵測:LP之衝突偵測操作與EP之衝突偵測相同:使用一致性訊息以尋找異動之間的衝突。
驗證:類似於EP中,悲觀衝突偵測確保:在任何點處,一執行異動不具有與任何其他執行異動之衝突,因此,驗證為無操作。
認可:認可無需特殊處理:簡單地清除W 138及R 132位元以及儲存緩衝器,類似於LO中。
中止:回復亦類似於LO之回復:使用儲存緩衝器而簡單地使寫入集合失效,且清除W及R位元以及儲存緩衝器。
急切-樂觀(EO)
LP具有以下特性:類似於LO,中止非常快速。類似於EP,悲觀衝突偵測之使用會縮減「命定」異動之數目。類似於EP,不允許一些可序列化排程,且必須在每一快取未命中時執行衝突偵測。
版本設定與衝突偵測之最後組合為急切-樂觀(EO)。EO可為用於HTM系統之次最佳選擇:因為在適當位置中寫入新異動版本,所以其他異動無選擇,但隨著發生衝突(亦即,隨著發生快取未命中)而注意衝突。但,因為EO等待直至認可時間為止以偵測衝突,所以彼等異動變為「僵屍(zombie)」,從而繼續執行、浪費資源,又「命定」中止。
EO已被證實為有用於STM中且由Bartok-STM及McRT實施。緩慢版本設定STM需要在每一讀取時檢查其寫入緩衝器以確保其正讀取最新值。因為寫入緩衝器並非硬體結構,所以此情形係代價大的,因此偏好在適當位置中寫入急切版本設定。另外,因為檢查衝突在STM中亦係代價大的,所以樂觀衝突偵測提供大量執行此操作之優點。
爭用管理
上文已描述一異動在系統已決定中止該異動後就如何回復,但,因為衝突涉及兩個異動,所以需要探索哪一異動應中止、應如何起始彼中止及應何時重試已中止異動之主題。此等主題為藉由爭用管理(CM)(異動記憶體之關鍵組件)而處理之主題。下文描述關於系統如何起始中止之策略及管理哪些異動應在衝突中中止之各種已建立方法。
爭用管理策略
爭用管理(CM)策略為判定衝突中涉及之哪一異動應中止且何時應重試中止異動的機制。舉例而言,常常為如下狀況:立即重試已中止異動不會導致最好效能。相反地,使用一退減機制(其延遲已中止異動之重試)可得到較好效能。STM首先儘力克服尋找最好爭用管理策略,且下文所概述之許多策略最初經開發用於STM。
CM策略利用數種量度以進行決策,包括異動之年齡、讀取及寫入集合之大小、先前中止之數目等等。用以進行此等決策之量度之組合係無限的,但下文大致按增加複雜性之次序描述某些組合。
為了建立某一命名法,首先應注意,在衝突中存在兩方:攻擊者及防禦者。攻擊者為請求對共用記憶體位置之存取的異動。在悲觀衝突偵測中,攻擊者為發出載入或載入獨佔式之異動。在樂觀中,攻擊者為嘗試驗證之異動。防禦者在兩種狀況下為接收攻擊者之請求的異動。
積極CM策略立即且始終重試攻擊者或防禦者。在LO中,積極意謂攻擊者始終獲勝,且因此,積極有時被稱為認可者獲勝。此策略用於最早LO系統。在EP之狀況下,積極可為防禦者獲勝或攻擊者獲勝。
重新開始將立即經歷另一衝突之衝突異動必然浪費工作一即,互連頻寬再填充快取未命中。禮貌CM策略在重新開始衝突之前使用指數退減(但亦可使用線性)。為了防止耗盡(處理序不具有由排程器分配給其之資源的情形),指數退減在一些n次重試之後極大地增加異動成功之勝算。
衝突解析之另一方法係隨機地中止攻擊者或防禦者(被稱為隨機化之策略)。可將此策略與隨機化退減方案組合以避免不需要的爭用。
然而,當選擇一異動以中止時,進行隨機選擇可引起中止已完成「大量工作」之異動,此情形可浪費資源。為了避免此浪費,當判定哪一異動中止時可考量在異動時完成之工作之量。工作之一個量度可為異動之年齡。其他方法包括最舊、塊狀TM、大小物質、Karma及Polka。最舊為中止衝突中之較年輕異動的簡單時間戳記方法。塊狀TM使用此方案。大小物質類似於最舊而非異動年齡,讀取/寫入字之數目用作優先權,在固定數目次中止之後還原至最舊。Karma係類似的,使用寫入集合之大小作為優先權。在退減一固定時間量之後,回復接著進行。已中止異動在中止之後保持其優先權(因此,名稱Karma)。Polka工作類似於Karma而非退減一預定時間量,其每次更按指數律成比例地退減。
因為中止浪費工作,所以邏輯的是爭論停止攻擊者直至防禦者已完成其異動為止將導致較好效能。不幸的是,此簡單方案容易導致死鎖。
死鎖避免技術可用以解決此問題。貪婪使用兩個規則以避免死鎖。第一規則為:若第一異動T1相比於第二異動T0具有較低優先權,或若T1等待另一異動,則T1在與T0衝突時中止。第二規則為:若T1相比於T0具有較高優先權且不等待,則T0等待直至T1認可、中止或開始等待為止(在此狀況下應用第一規則)。貪婪提供關於時間界限之一些保證以用於執行一異動集合。一種EP設計(LogTM)使用類似於貪婪之CM策略以運用保守死鎖避免來達成停止。
實例MESI一致性規則提供多處理器快取記憶體系統之快取行可駐留的四個可能狀態M、E、S及I,其被定義如下:已修改(M):快取行僅存在於當前快取記憶體中,且為已變更;其已自主記憶體中之值修改。在准許(不再有效)主記憶體狀態之任何其他讀取之前,需要快取記憶體以在未來之某一時間將資料回寫至主記憶體。回寫將該行改變為獨佔式狀態。
獨佔式(E):快取行僅存在於當前快取記憶體中,但為未變更;其匹配於主記憶體。回應於讀取請求,快取行可在任何時間改變為共用狀態。替代地,當寫入至快取行時,其可改變為已修改狀態。
共用(S):指示此快取行可儲存於機器之其他快取記憶體中且為「未變更」;其匹配於主記憶體。可在任何時間捨棄該行(改變為無效狀態)。
無效(I):指示此快取行為無效(未使用)。
除了MESI一致性位元以外或編碼於MESI一致性位元中,亦可針對每一快取行提供TM一致性狀態指示符(R 132、W 138)。R 132指示符指示已自快取行之資料讀取當前異動,且W 138指示符指示已將當前異動寫入至快取行之資料。
在TM設計之另一態樣中,使用異動儲存緩衝器來設計系統。2000年3月31日申請且全文以引用方式併入本文中的名為「Methods and Apparatus for Reordering and Renaming Memory References in a Multiprocessor Computer System」之美國專利第6,349,361號教示一種用於在至少具有第一處理器及第二處理器之多處理器電腦系統中重新排序及重新命名記憶體參考的方法。第一處理器具有第一私用快取記憶體及第一緩衝器,且第二處理器具有第二私用快取記憶體及第二緩衝器。該方法包括如下操作:對於由第一處理器接收以儲存資料之複數個閘控儲存請求中之每一者,由第一私用快取記憶體獨佔式地獲取含有該資料之快取行,且在第一緩衝器中儲存該資料。在第一緩衝器自第一處理器接收到對載入特定資料之載入請求後,就基於載入及儲存操作之按次序序列而將特定資料自儲存於第一緩衝器中之資料當中提供至第一處理器。在第一快取記憶體自第二快取記憶體接收到針對給定資料之載入請求後,就指示一錯誤條件,且當針對給定資料之載入請求對應於儲存於第一緩衝器中之資料時將該等處理器中之至少一者的當前狀態重設至較早狀態。
一個此類異動記憶體設施之主要實施組件為用於保留預異動GR(一般暫存器)內容之異動備份暫存器檔案、用以追蹤在異動期間存取之快取行的快取記憶體目錄、用以緩衝儲存直至異動結束為止之儲存快取記憶體,及用以執行各種複雜功能之韌體常式。在此章節中描述詳細實施。
IBM zEnterprise EC12企業伺服器實施例
IBM zEnterprise EC12企業伺服器在異動記憶體中引入異動執行(TX),且部分地描述於可得自IEEE電腦學會會議出版服務(CP)的2012年12月1至5日在MICRO-45處呈現的論文集第25至36頁之論文「Transactional Memory Architecture and Implementation for IBM System z」(溫哥華、英國哥倫比亞、加拿大)中,該論文之全文係以引用方式併入本文中。
資料表3展示實例異動。並不保證以TBEGIN開始之異動以TEND永遠成功地完成,此係因為其可在每一已嘗試執行時經歷中止條件,例如,歸因於與其他CPU之重複衝突。此情形要求程式(例如)藉由使用傳統鎖定方案來支援一後援路徑以非異動地執行相同操作。此情形對程式設計及軟體校驗小組施予顯著負擔,尤其是在後援路徑未由可靠編譯器自動地產生之情況下。
針對已中止異動執行(TX)異動提供後援路徑之要求可為麻煩的。對共用資料結構操作之許多異動被預期為短的、觸控僅幾個相異記憶體位置,且僅使用簡單指令。對於彼等異動,IBM zEnterprise EC12引入受約束異動之概念;在正常條件下,儘管是在不對必要重試之數目提供嚴格限制的情況下,但CPU 114保證受約束異動最終成功地結束。受約束異動以TBEGINC指令開始且以規則TEND結束。將任務實施為受約束或非受約束異動通常會引起非常相當的效能,但受 約束異動藉由移除針對後援路徑之需要而簡化軟體開發。IBM之異動執行架構進一步描述於2012年9月自IBM公開的第十版SA22-7832-09的z/Architecture,Principles of Operation(其全文係以引用方式併入本文中)中。
受約束異動以TBEGINC指令開始。以TBEGINC起始之異動必須遵循程式設計約束之清單;否則,程式採取非可篩選約束違規中斷。例示性約束可包括但不限於:異動可執行最大32個指令,全部指令文字必須在記憶體之256個連續位元組內;異動僅含有前向指向相對分支(亦即,無迴圈或副常式呼叫);異動可存取記憶體之最大4個對準八進位字(八進位字為32個位元組);及限定指令集合以排除類似於十進位或浮點運算之複雜指令。約束經選擇為使得可執行類似於雙重連結清單-插入/刪除操作之許多共同操作,包括不可部分完成的比較及交換以高達4個對準八進位字為目標之非常強大的概念。同時,約束經保守地選擇為使得未來CPU實施可在無需調整約束的情況下保證異動成功,此係因為彼情形原本將會導致軟體不相容性。
TBEGINC通常作用就像在IBM之zEC12伺服器上之TSX或TBEGIN中的XBEGIN,惟不存在浮點暫存器(FPR)控制及程式中斷篩選欄位且控制被視為零除外。在異動中止時,將指令位址直接地設定回至TBEGINC而非在反映立即重試及用於受約束異動之中止路徑的不存在之後的指令。
在受約束異動內不允許巢套式異動,但若在非受約束異動內發生TBEGINC,則其被處理為開啟新非受約束巢套層級,將正如TBEGIN。此情形可(例如)在非受約束異動呼叫在內部使用受約束異動之副常式的情況下發生。
因為中斷篩選隱含地關斷,所以在受約束異動期間之全部例外狀況導致作業系統(OS)之中斷。異動之最終成功完成依賴於OS頁面 調進藉由任何受約束異動而觸控之至多4個頁面的能力。OS亦必須確保時間截塊足夠長以允許異動完成。
資料表4展示資料表3中之程式碼的受約束異動實施,此係假定受約束異動不與其他基於鎖定之程式碼互動。因此未展示鎖定測試,但在受約束異動與基於鎖定之程式碼混合的情況下可新增鎖定測試。
當重複地發生失敗時,使用毫程式碼(millicode)作為系統韌體之部分來執行軟體模擬。有利地,受約束異動由於自程式設計師移除之負擔而具有理想屬性。
參看圖3,IBM zEnterprise EC12處理器引入異動執行設施。該處理器可每時脈循環解碼3個指令;將簡單指令分派為單微操作,且將較複雜指令斷裂成多個微操作。將微操作(Uop 232b)寫入至統一發出佇列216中,該等微操作可自彼處被無次序地發出。每隔一個循環可執行高達兩個固定點、一個浮點、兩個載入/儲存及兩個分支指令。全域完成資料表(GCT)232保留每一微操作及一異動巢套深度(TND)232a。GCT 232在解碼時間被按次序寫入、追蹤每一微操作232b之執行狀態,且當最舊指令群組之全部微操作232b已成功地執行時完成指令。
層級1(L1)資料快取記憶體240為具有256個位元組快取行及4循環使用延時之96KB(千位元組)6路關聯性快取記憶體,耦接至具有用於L1 240未命中之7循環使用延時損失的私用1MB(百萬位元組)8路關聯性第2層級(L2)資料快取記憶體268。L1 240快取記憶體為最接近於處理器之快取記憶體,且Ln快取記憶體為在第n快取層級處之快取記憶體。L1 240及L2 268快取記憶體兩者係貫穿儲存的。每一中央處 理器(CP)晶片上之六個核心共用一48MB第3層級內儲存快取記憶體,且六個CP晶片連接至晶片外384MB第4層級快取記憶體,在玻璃陶瓷多晶片模組(MCM)上封裝在一起。高達4個多晶片模組(MCM)可連接至具有高達144個核心(並非全部核心皆可用於執行客戶工作負載)之一致對稱多處理器(SMP)系統。
一致性係以MESI協定之變體而管理。快取行可被擁有為唯讀(共用)或獨佔式;L1 240及L2 268係貫穿儲存的且因此不含有已變更行。L3 272及L4快取記憶體(未圖示)係內儲存的且追蹤已變更狀態。每一快取記憶體包括全部其連接之較低層級快取記憶體。
一致性請求被稱為「交叉詢問」(XI),且自較高層級至較低層級快取記憶體及在L4之間階層式地發送。當一個核心未命中L1 240及L2 268且向其本機L3 272請求快取行時,L3 272檢查其是否擁有該行,且在其將快取行傳回至請求者之前在必要時將XI發送至在彼L3 272下的當前擁有之L2 268/L1 240以確保一致性。若請求亦未命中L3 272,則L3 272將一請求發送至L4(未圖示),此情形藉由將XI發送至在彼L4下之全部必要L3且發送至相鄰L4而強制一致性。接著,L4對將回應轉遞至L2 268/L1 240之請求L3作出回應。
應注意,歸因於快取記憶體階層之包括性規則,有時歸因於由來自請求之關聯性溢位導致的在較高層級快取記憶體上之收回而將快取行自較低層級快取記憶體XI至其他快取行。此等XI可被稱為「LRU XI」,其中LRU代表最近最少使用。
在對又一類型之XI請求進行參考的情況下,降階XI將快取記憶體擁有權自獨佔式轉變成唯讀狀態,且獨佔式XI將快取記憶體擁有權自獨佔式轉變成無效狀態。降階XI及獨佔式XI需要回至XI發送者之回應。目標快取記憶體可「接受」XI,或在其在接受XI之前第一次需要收回已變更資料的情況下發送「拒絕」回應。L1 240/L2 268快取記 憶體係貫穿儲存的,但在其具有需要在降級獨佔式狀態之前發送至L3的在其儲存佇列中之儲存的情況下可拒絕降階XI及獨佔式XI。已拒絕XI將由發送者重複。唯讀XI發送至擁有行唯讀之快取記憶體;無需針對此等XI之回應,此係因為其不能被拒絕。SMP協定之細節類似於由P.Mak、C.Walters及G.Strait在2009年IBM研究及開發雜誌第53:1卷之「IBM System z10 processor cache subsystem microarchitecture」中針對IBM z10所描述的細節,其全文係以引用方式併入本文中。
異動指令執行
圖3描繪實例CPU環境112之實例組件,包括CPU 114及與其互動之快取記憶體/組件(諸如,圖1及圖2所描繪之快取記憶體/組件)。指令解碼單元208(IDU)保持追蹤當前異動巢套深度212(TND)。當IDU 208接收到TBEGIN指令時,巢套深度212遞增,且相反地在TEND指令上遞減。巢套深度212針對每一已分派指令而寫入至GCT 232中。當TBEGIN或TEND在稍後被清空之推測式路徑上解碼時,IDU 208之巢套深度212自未被清空之最年輕GCT 232輸入項再新。異動狀態亦寫入至發出佇列216中以供執行單元(通常由載入/儲存單元(LSU)280)消耗,其亦具有包括於LSU 280中之有效位址計算器236。若異動在到達TEND指令之前中止,則TBEGIN指令可指定一異動診斷區塊(TDB)以用於記錄狀態資訊。
類似於巢套深度,IDU 208/GCT 232經由異動巢套而協作地追蹤存取暫存器/浮點暫存器(AR/FPR)修改遮罩;當AR/FPR修改指令被解碼且修改遮罩阻擋彼情形時,IDU 208可將一中止請求置放至GCT 232中。當指令變得接近完成時,完成被阻擋且異動中止。其他受限式指令被類似地處置,在受約束異動中的同時解碼的情況下包括TBEGIN,或超過最大巢套深度。
最外TBEGIN取決於GR儲存遮罩而斷裂成多個微操作;每一微操 作232b(包括(例如)uop 0、uop 1及uop 2)將由兩個固定點單元(FXU)220中之一者執行以將一對GR 228儲存至特殊異動備份暫存器檔案224(其用以在異動中止之狀況下稍後還原GR 228內容)中。又,若一被指定,則TBEGIN繁衍微操作232b以針對TDB執行可存取性測試;位址儲存於特殊用途暫存器中以供稍後在中止狀況下使用。在最外TBEGIN之解碼時,TBEGIN之指令位址及指令文字亦儲存於特殊用途暫存器中以供以後進行潛在中止處理。
TEND及NTSTG為單微操作232b指令;NTSTG(非異動儲存)類似於正常儲存而處置,惟其在發出佇列216中被標記為非異動以使得LSU 280可對其進行適當處理除外。TEND在執行時間為無操作,當TEND完成時執行異動之結束。
如所提到,在異動內之指令因而被標記於發出佇列216中,但以其他方式通常不變地執行;LSU 280執行如下一章節中所描述之隔離追蹤。
因為解碼係按次序的,且因為IDU 208保持追蹤當前異動狀態且將其連同來自異動之每一指令一起寫入至發出佇列216中,所以可無次序地執行在異動之前、內及之後的TBEGIN、TEND及指令之執行。甚至有可能的是(但未必),首先執行TEND,接著執行整個異動,且最後執行TBEGIN。在完成時間經由GCT 232而還原程式次序。異動之長度不受到GCT 232之大小限制,此係因為一般用途暫存器(GR)228可自備份暫存器檔案224還原。
在執行期間,基於事件抑制控制而篩選程式事件記錄(PER)事件,且在致能的情況下偵測PER TEND事件。類似地,在異動模式中時,偽隨機產生器可在藉由異動診斷控制而致能時造成隨機中止。
追蹤異動隔離
載入/儲存單元280追蹤在異動執行期間存取之快取行,且在來自 另一CPU之XI(或LRU-XI)與佔據面積衝突的情況下觸發中止。若衝突XI為獨佔式或降階XI,則在期待在L3 272重複XI之前完成異動的情況下,LSU 280將XI拒絕回至L3 272。此「伸直手推開(stiff-arming)」在高度爭用異動中非常有效。為了在兩個CPU彼此伸直手推開時防止懸置,實施XI拒絕計數器,其在滿足臨限值時觸發異動中止。
L1快取記憶體目錄240傳統上以靜態隨機存取記憶體(SRAM)而實施。對於異動記憶體實施,目錄之有效位元244(64列×6路)已移動至正常邏輯鎖存器中,且每快取行補充有兩個更多位元:TX讀取248及TX已變更252位元。
當解碼新最外TBEGIN(其相對於先前仍擱置異動而連鎖)時重設TX讀取248位元。在執行時間由在發出佇列中被標記為「異動」之每一載入指令設定TX讀取248位元。應注意,若(例如)在錯誤預測分支路徑上執行推測式載入,則此情形可導致過度標記。因為多個載入可同時完成,所以在載入完成時間設定TX讀取248位元之替代方案對於矽區而言代價太大,從而需要載入佇列上之許多讀取埠。
儲存以與非異動模式中相同的方式執行,但異動標記置放於儲存指令之儲存佇列(STQ)260輸入項中。在回寫時間,當來自STQ 260之資料寫入至L1 240中時,L1目錄256中之TX已變更位元252經設定用於已寫入之快取行。僅在儲存指令已完成之後才發生至L1 240中之儲存回寫,且每循環回寫至多一個儲存。在完成及回寫之前,載入可借助於儲存轉遞而自STQ 260存取資料;在回寫之後,CPU 114(圖2)可存取L1 240中之推測式更新資料。若異動成功地結束,則全部快取行之TX已變更位元252被清除,且尚未寫入之儲存的TX標記亦在STQ 260中被清除,從而將擱置儲存有效轉變成正常儲存。
在異動中止時,全部擱置異動儲存自STQ 260失效,即使彼等儲 存已完成亦如此。藉由L1 240中之異動而修改(亦即,使TX已變更位元252接通)的全部快取行使其有效位元關斷,從而瞬時地自L1 240快取記憶體有效地移除該等快取行。
架構要求在完成新指令之前維持異動讀取集合與寫入集合之隔離。當XI擱置時,藉由在適當時間停止指令完成而確保此隔離;允許推測式無次序執行,此係樂觀地假定擱置XI係至不同位址且實際上不造成異動衝突。此設計非常自然地與實施於目前先進技術系統上以確保架構所需要之強記憶體排序的XI對完成連鎖配合。
當L1 240接收到XI時,L1 240存取目錄以檢查L1 240中之已XI位址的有效性,且若TX讀取位元248在已XI行上在作用中且XI未被拒絕,則LSU 280觸發中止。當具有作用中TX讀取位元248之快取行係自L1 240被LRU時,特殊LRU延伸向量對於L1 240之64列中的每一者記住TX讀取行存在於彼列上。因為對於LRU延伸不存在精確位址追蹤,所以命中LSU 280之有效延伸列的任何非拒絕XI觸發中止。提供LRU延伸會將讀取佔據面積能力自L1大小有效地增加至L2大小及關聯性,其限制條件為相對於非精確LRU延伸追蹤的與其他CPU 114(圖1)之衝突不造成中止。
儲存佔據面積受到儲存快取記憶體大小(下文更詳細地論述儲存快取記憶體)限制且因此隱含地受到L2 268大小及關聯性限制。當TX已變更252快取行自L1 240被LRU時,無需執行LRU延伸動作。
儲存快取記憶體
在目前先進技術系統中,因為L1 240及L2 268為貫穿儲存快取記憶體,所以每一儲存指令造成L3 272儲存存取;在現在每L3 272具有6個核心且每一核心之效能進一步改良的情況下,針對L3 272之儲存率(及針對L2 268在較少程度上)對於某些工作負載變得有問題。為了避免儲存排入佇列延遲,必須新增搜集儲存快取記憶體264,其在將 相鄰位址發送至L3 272之前將儲存組合至相鄰位址。
對於異動記憶體效能,可接受的是在異動中止時使來自L1 240之每一TX已變更252快取行失效,此係因為L2 268快取記憶體非常接近(7循環L1 240未命中損失)帶回未變更行。然而,對於效能(及用於追蹤之矽區)將不可接受的是使異動儲存在異動結束之前寫入L2 268且接著在中止時使全部已變更L2 268快取行失效(或在共用L3 272上甚至更壞)。
儲存頻寬及異動記憶體儲存處置之兩個問題可皆運用搜集儲存快取記憶體264而解決。快取記憶體232為64個輸入項之循環佇列,每一輸入項保留具有位元組精確有效位元的資料之128個位元組。在非異動操作中,當自LSU 280接收到儲存時,儲存快取記憶體檢查是否存在針對相同位址之輸入項,且若如此,則將新儲存搜集至現有輸入項中。若不存在輸入項,則將新輸入項寫入至佇列中,且若自由輸入項之數目降至低於臨限值,則將最舊輸入項回寫至L2 268及L3 272快取記憶體。
當新最外異動開始時,儲存快取記憶體中之全部現有輸入項被標記為關閉,使得無新儲存可搜集至其中,且彼等輸入項至L2 268及L3 272之收回開始。自彼點上看,來自LSU 280 STQ 260之異動儲存分配新輸入項,或搜集至現有異動輸入項中。彼等儲存至L2 268及L3 272中之回寫被阻擋,直至異動成功地結束為止;在彼點處,後續(後異動)儲存可繼續搜集至現有輸入項中,直至下一異動再次關閉彼等輸入項為止。
在每一獨佔式或降階XI時查詢儲存快取記憶體,且在XI與任何作用中輸入項相當的情況下造成XI拒絕。若在連續地拒絕XI時核心並未完成另外指令,則異動在某一臨限值處中止以避免懸置。
當儲存快取記憶體溢位時,LSU 280請求異動中止。當LSU 280 試圖發送不能合併至現有輸入項中之新儲存時,LSU 280偵測此條件,且整個儲存快取記憶體被填充有來自當前異動之儲存。儲存快取記憶體被管理為L2 268之子集:雖然可自L1 240收回異動已變更行,但其必須在整個異動中保持駐留在L2 268中。最大儲存佔據面積因此限於64×128位元組之儲存快取記憶體大小,且其亦受到L2 268之關聯性限制。因為L2 268為8路關聯性的且具有512個列,所以其通常足夠大以不造成異動中止。
若異動中止,則通知儲存快取記憶體且使保留異動資料之全部輸入項失效。儲存快取記憶體亦具有每雙字(8位元組)一標記,而不管輸入項是否由NTSTG指令寫入一彼等雙字在整個異動中止中保持有效。
毫程式碼實施功能
傳統上,IBM大型主機伺服器處理器含有被稱為毫程式碼之韌體層,其執行類似於某些CISC指令執行、中斷處置、系統同步及RAS之複雜功能。毫程式碼包括機器相依指令,以及自記憶體擷取及執行的指令集架構(ISA)之指令,類似於應用程式及作業系統(OS)之指令。韌體駐留於客戶程式不能存取的主記憶體之受限式區中。當硬體偵測到需要調用毫程式碼之情形時,指令擷取單元204切換至「毫程式碼模式」中且開始在毫程式碼記憶體區中之適當位置處擷取。毫程式碼可以與指令集架構(ISA)之指令相同的方式被擷取及執行,且可包括ISA指令。
對於異動記憶體,毫程式碼涉及各種複雜情形。每一異動中止調用一專用毫程式碼副常式以執行必要中止操作。異動中止毫程式碼藉由讀取保留硬體內部中止原因、潛在例外狀況原因及已中止指令位址之特殊用途暫存器(SPR)而開始,若一被指定,則此毫程式碼接著用以儲存TDB。自SPR載入TBEGIN指令文字以獲得GR儲存遮罩,此 對於使毫程式碼知道哪些GR 238將被還原為所需的。
CPU 114(圖2)支援特殊僅毫程式碼指令以讀出備份GR 224且將其複製至主GR 228中。亦自SPR載入TBEGIN指令位址以在PSW中設定新指令位址以在毫程式碼中止副常式結束後就在TBEGIN之後繼續執行。在中止係由非篩選程式中斷造成的狀況下,彼PSW稍後可被儲存為程式舊PSW。
TABORT指令可被毫程式碼實施;當IDU 208解碼TABORT時,其指示指令擷取單元分支至TABORT之毫程式碼中,毫程式碼自其分支至共同中止副常式中。
擷取異動巢套深度(ETND)指令亦可被毫編碼,此係因為其並非效能關鍵的;毫程式碼自特殊硬體暫存器中載入當前巢套深度且將其置放至GR 228中。PPA指令被毫編碼;其基於由軟體作為運算元而提供至PPA之當前中止計數且亦基於其他硬體內部狀態來執行最佳延遲。
對於受約束異動,毫程式碼可保持追蹤中止之數目。在成功TEND完成時,或若發生至OS中之中斷(因為並不知道OS是否或何時將返回至程式),則將計數器重設至0。取決於當前中止計數,毫程式碼可調用某些機制以改良後續異動重試之成功可能性。該等機制涉及(例如)連續增加重試之間的隨機延遲,及縮減推測式執行之量以避免遇到由對異動並未實際上使用之資料之推測式存取造成的中止。作為最後手段,毫程式碼可廣播至其他CPU 114(圖2)以在釋放其他CPU 114以繼續正常處理之前停止全部衝突工作,重試本機異動。多個CPU 114必須經協調以不造成死鎖,因此需要不同CPU 114上之毫程式碼執行個體之間的某一序列化。
圖4說明根據一實施例之電腦系統300。圖4經組態以實施圖1至圖3及圖5至圖18中論述之特徵。電腦300包含藉由階層式快取記憶體 子系統而與記憶體310通信的被指定為處理器112a(CPU1)及處理器112b(CPU2)之多處理器(連同未圖示之額外處理器),其中由處理器進行之異動載入係在階層式快取記憶體子系統之快取記憶體中被監測。圖4所展示之電腦系統300具有與圖1所展示之電腦系統100相同的元件及相同參考數字,但圖4中並未展示圖1中之每一元件。
電腦系統300可管理呈現給可用於或當前處理異動之一或多個處理器的請求,例如,中斷。在一項實例中,請求處理器(例如,CPU 1(112a))可選擇接收/遠端處理器(例如,CPU 2(112b))且將一請求發送至選定遠端處理器。在一項實例中,電腦系統為異動執行(TX)系統或環境,例如,包括能夠執行異動之CPU或處理器。每一異動分別被展示為分別在處理器112a及112b中執行之異動指令320a及320b。每一處理器112a及112b分別具有其自有暫存器334a及334b。
每一資料快取記憶體118a及118b可分別包括其自有L1及L2快取記憶體。電腦記憶體一般地由記憶體310表示,其可包括在被指定為TX CPU之CPU(亦即,處理器112a及112b)中的較高層級快取記憶體。每一處理器112a及112b分別具有被指定為資料表1350a及1350b之其自有本機異動干擾追蹤資料表。資料表1350a及1350b可分別儲存於資料快取記憶體118a、118b、暫存器334a、334b及/或記憶體310中。記憶體310亦可包括用於儲存異動之診斷資訊的異動診斷區塊350,該診斷資訊可包括儲存於資料表1350a及1350b中之異動干擾資訊(連同統計),如本文中進一步所論述。
電腦系統300為根據實施例的發送、接收及處理請求及回應兩者之異動(TX)環境之表示。應注意,提供各種實例,其中處理器112a(CPU1)被說明為產生請求且將該請求發送至被說明為接收該請求之接收/遠端處理器之處理器112b(CPU2)的請求處理器。應理解,此指定係出於解釋目的,此係因為任一處理器可發送及接收針對資料之請 求,如由熟習此項技術者所理解。
圖5說明一協定請求及回應實例。該協定請求可被稱作大型主機多處理器協定,且協定可經由基於匯流排或基於交換器之互連。協定可為全部並列傳信(匯流排窺探)、串列封包或其組合。
作為一項實例,針對資料之請求505可自CPU 1(112a)發送至CPU 2(112b)。請求505包括告知何種類型之請求正被發送的類型欄位506(例如,讀取共用或讀取獨佔式一或,針對擁有權之讀取一根據已知MESI一致性協定之請求,或根據其他此等協定之協定請求),及識別發送請求之特定處理器(例如,CPU1)且視情況識別請求正被發送至之接收處理器(例如,CPU 2)及視情況在多個請求可被並行地處理的情況下識別特定請求ID以唯一地識別每一請求的標籤欄位507。請求505亦包括識別正由請求處理器(CPU1)請求之存取之類型的存取欄位508,及位址欄位509。位址欄位509識別正被請求之快取行或記憶體字的記憶體位址。請求505協定可包括含有所使用之錯誤偵測及/或校正碼(例如,循環冗餘檢查(CRC)、同位位元或ECC)之錯誤校正欄位510。
回應515可自接收處理器(CPU 2)發送回至請求處理器(CPU 1)。回應515包括指示回應之類型(諸如,讀取回應(READRESPONSE))的類型欄位516,及標籤欄位517。標籤欄位517可為與原始請求505之標籤欄位507相同的標籤,及/或標籤欄位517可包括快取行之經請求記憶體位址。回應515包括為由請求處理器(CPU 1)請求之經請求資料的資料欄位518。一些協定回應可不包括資料傳送(例如,對將擁有權自共用提昇至用於行之獨佔式擁有權的協定請求),且可僅包括處理已執行之應答。錯誤校正欄位519包括於回應515中。
在一些實施例中,用於協定請求之傳信可並行地發生於複數個位元線上方,且任何未使用欄位可對應於不具有協定定義值、經設定 為預設值或以其他方式不被視為協定訊息之部分的行。在一些實施例中,協定請求可在多個「拍頻(beat)」(例如,整體上表示協定訊息之連續位元群組)中傳輸。在又其他實施例中,協定請求可被位元串行地傳輸。在多個拍頻中或串行地傳輸之協定中,一些訊息相比於其他協定請求可由更多匯流排傳信循環組成。
圖6說明另一協定請求實例。許多協定經由RFO(針對擁有權之讀取)而獲取獨佔式存取或用於寫入操作之讀取獨佔式請求,而一些其他協定可直接地寫入(受限制)。作為一項實例,對寫入資料之實例請求605可自CPU 1(112a)發送至CPU 2(112b)。請求605包括識別正被發送(例如,寫入)之請求之類型的類型欄位506,及識別發送寫入請求之特定處理器(例如,CPU1)且視情況識別請求正被發送至之接收處理器(例如CPU 2)及特定請求的標籤欄位507。請求605亦包括傳輸正由請求處理器(CPU 1)寫入之資料的資料欄位504,及位址欄位509。位址欄位509識別正被寫入至之快取行或位址線的記憶體位址。請求605協定可包括含有所使用之錯誤偵測及/或校正碼(例如,循環冗餘檢查(CRC)、同位位元或ECC)的錯誤校正欄位510。
回應於寫入請求,通常不存在回應,此係因為沒有必要在執行寫入之前獲得用於獨佔式存取之資料。
圖7為根據一實施例的由處理器(例如,CPU 1(112a))進行針對資料之請求而進行之協定請求產生的流程圖700。在區塊705處,處理器(例如,CPU 1)具有針對記憶體資料之請求。在區塊710處,處理器(例如CPU 1(112a))檢查經請求資料是否在其自有本機快取記憶體(例如,資料快取記憶體118a中之L1快取記憶體)中。當資料可用於處理器之自有本機快取記憶體中時,流程進行至區塊735。當資料不可用於處理器(CPUI)之本機快取記憶體中時,在區塊715處,處理器產生XI請求(交叉詢問)以向其他處理器(諸如,CPU 2(112b))請求所要資 料。在區塊720處,請求處理器(CPU1)經由互連122而將針對資料之XI請求發送至接收處理器(CPU 2),且在區塊725處,請求處理器(CPU 1)自接收處理器(CPU 2)接收具有(經請求)資料之XI回應。在區塊730處,請求處理器(CPU 1)將資料置放於資料快取記憶體118a中之其本機快取記憶體(例如,L1、L2快取記憶體)中。在區塊735處,請求處理器(CPU 1)經由指令快取記憶體116a而自其本機快取記憶體118a獲得資料。在區塊740處,請求處理器之指令快取記憶體116a將資料提供至CPU 1之電路以供處理。
在一項實施例中,且根據共同快取記憶體協定(例如,已知MESI協定),當處理器存取資料以供讀取,且資料不可用時,XI經產生用於讀取共用,其中資料係以共用方式而獲得,使得多個CPU 112a、112b可在快取記憶體中具有資料之複本,且其中每一CPU可處理對應於資料之記憶體讀取存取。所接收資料置放於快取記憶體中且經標記用於共用存取,且處理器可回應於記憶體讀取操作而執行來自複本之讀取存取。當處理器存取用於寫入之資料,且資料不可用於獨佔式狀態中時,XI經產生用於讀取獨佔式,其中資料係以獨佔式方式而獲得,使得僅單一CPU(例如,CPU 112a)可在快取記憶體中具有資料之複本。所接收資料置放於快取記憶體中且經標記用於獨佔式存取,且處理器可回應於記憶體寫入操作而更新複本。在一項實施例中,當資料係以共用模式而存在,且寫入存取被接收時,產生讀取獨佔式XI。在至少一項實施例中,此情形被指示為相異讀取獨佔式請求,其中無資料被接收為回應之部分。在一項實施例中,當已接收到回應時,快取記憶體資料經標記用於獨佔式存取。
圖8說明根據一實施例的由接收/遠端處理器(例如,CPU 2(112b))接收請求且發送回應而進行之請求處置的實例流程圖800。
在區塊805處,遠端處理器(CPU2)自請求處理器(CPU1)接收針對 資料之XI請求。在區塊810處,遠端處理器(CPU 2)藉由檢查遠端處理器是否正處理當前需要經請求資料(在遠端處理器之本機快取記憶體中)之異動而檢查是否偵測到干擾。當遠端處理器(CPU 2(112b))在區塊810處判定遠端處理器當前正使用由請求處理器(CPU 1(112a))請求之資料時,遠端處理器判定(是)偵測到干擾,且在區塊815處,遠端處理器(CPU 2)中止在遠端處理器(CPU 2)處發生之本機異動。一旦在遠端處理器(CPU 2)處中止本機異動,在區塊820處,遠端處理器就將具有讀取回應(READ RESPONSE)之資料傳輸至請求處理器(CPU 1)。遠端處理器(CPU 2)在區塊825處改變資料狀態且視情況在必要時自其自有本機快取記憶體清除資料。在一項實施例中,快取記憶體狀態改變可包括當異動已中止時自讀取或寫入集合中之至少一者釋放資料。在一項實施例中,快取記憶體狀態改變可包括改變快取記憶體目錄中之快取行之狀態,例如,根據諸如已知MESI協定之快取記憶體協定而將狀態設定為共用、獨佔式、無效等等中之一者。遠端處理器(CPU 1)在區塊830處起始異動失敗處理,且流程結束。當遠端處理器(CPU 2(112b))在區塊810處判定遠端處理器當前未使用由請求處理器(CPU 1(112a))請求之資料時,遠端處理器判定未偵測到干擾,且在區塊835處,遠端處理器(CPU 2)傳輸具有讀取回應(READ RESPONSE)之資料。遠端處理器(CPU 2)在區塊840處改變資料狀態且視情況在必要時自本機快取記憶體清除資料,且流程結束。
圖9為根據一實施例的說明由處理器進行之異動處置的流程圖900。在區塊905處,異動開始在處理器(例如,CPU 1或CPU 2)上執行。在圖9中,應注意,每一處理器(CPU 1及CPU 2)可正執行此等動作,亦即,異動可由112a、112b兩者處理,等等。在區塊910處,處理器執行異動內之指令(例如,如圖7所論述)。在區塊915處,處理器回應於異動指令而執行協定動作。在920處,處理器檢查是否存在需 要處理器中止其異動之干擾(藉由使用資料)。當處理器判定(是)存在所偵測之干擾時,在區塊925處,處理器中止其自有異動(在資料上),且流程進行至區塊935。當處理器判定未偵測到干擾時,在區塊930處,處理器完成其異動(之指令)。在區塊935處,處理器在暫存器中寫入異動資訊(諸如,異動診斷區塊(TBD))。
根據實施例,一致性協定經延伸以包括關於異動狀態之額外資訊。圖10說明根據實施例之協定請求505及新協定回應1005。如圖10所展示,請求505之一些欄位與圖5論述之欄位相同。如上文所提及,請求505包括識別何種類型之請求正被發送(例如,READ)的類型欄位506,及識別發送請求之特定處理器(例如,CPU 1)(且視情況識別請求正被發送至之接收/遠端處理器(例如CPU 2)及請求數目)的標籤欄位507。請求505亦包括告知正由請求處理器(CPU 1)請求之存取之類型的存取欄位508,及告知正被請求之快取行或位址線之記憶體位址的位址欄位509。請求505協定包括告知所使用之錯誤碼(諸如,循環冗餘檢查(CRC))之類型的錯誤校正欄位510。
新回應1005包括回應515(在圖5中)之欄位連同額外異動中止狀態欄位1010。回應1005可自接收/遠端處理器(CPU 2)發送回至請求處理器(CPU 1)。回應515包括指示回應之類型(諸如,讀取回應(READRESPONSE))的類型欄位516,及指示快取行之經請求記憶體位址的標籤欄位517(其可為與原始請求505之標籤欄位507相同的標籤)。回應515包括為由請求處理器(CPU 1)請求之經請求資料的資料欄位518。若資料未以協定回應而傳輸,則資料欄位518為空白或不存在。錯誤偵測/校正欄位519包括於回應1005中。
另外,新協定回應1005(由遠端處理器CPU 2發送至請求處理器CPU 1)具有異動中止狀態欄位1010。異動中止狀態欄位1010包括關於在中止之前先前在遠端/接收處理器(CPU 2)上執行之異動的以下資訊 中之一或多者:1)請求505(來自請求處理器(CPU 1)是否造成及/或不造成回復(亦即,中止);2)在中止之前在遠端/接收處理器(CPU 2)上執行的此異動之優先權;3)多少指令、記憶體操作及/或工作之其他量度已藉由在異動中止之前先前在遠端/接收處理器(CPU 2)上執行的異動而執行;4)識別先前在遠端處理器(CPU 2)上執行之異動(例如,符記、TBEGIN之位址,及/或識別已中止異動之其他方式)。
此外,異動中止狀態欄位1010告知何種資料係藉由必須中止之異動(先前在遠端/接收處理器上執行)而獲得、告知異動之位址,且告知中止異動之成本(其可能為工作之3個時脈循環或20,000個時脈循環)。
當處理器(例如,在實例情境下為接收處理器CPU 2)在異動執行中時,一致性請求可造成異動執行中止,例如,此係因為資料為異動讀取或寫入集合之部分,且偵測到衝突(亦即,干擾)。
根據一實施例,圖11說明圖6中對寫入資料(自請求處理器CPU 1(112a)發送至接收/遠端處理器CPU 2(112b))之(寫入)請求605,且新回應1105係自遠端處理器CPU 2(112b)發送回至請求處理器CPU 1(112a)。圖11為根據一實施例藉由將新協定回應引入至先前無需協定回應之異動而在回應中新增異動資訊以便將異動干擾/中止資訊傳輸至請求發起站的協定請求及回應實例。在至少一項實施例中,出於提供異動中止狀態之唯一目的而傳輸的協定回應係選用的,且可在一些模式中、回應於組態位元、回應於匯流排擁塞及/或出於其他原因而受到抑制。在此情境下,當未接收到回應時,不報告對應於尚未接收到回應所針對之請求的異動中止狀態。在至少一項實施例中,可報告 一或多個回應之不存在。如上文所提及,請求605包括告知何種類型之請求正被發送(例如,寫入)的類型欄位506,及識別發送寫入請求之特定處理器(例如,CPU 1)(及請求正被發送至之接收處理器(例如,CPU 2))的標籤欄位507。請求605亦包括告知正由請求處理器(CPU 1)請求之存取之類型的存取欄位508,及位址欄位509。位址欄位509告知正被請求寫入至之快取行或位址線的記憶體位址。請求605協定可包括具有錯誤校正/偵測碼(諸如,同位位元、ECC或循環冗餘檢查(CRC)碼)之錯誤偵測及/或校正欄位510。
回應於寫入請求605,新回應1105(對寫入請求)現在包括本文中論述之異動中止狀態欄位1010。新回應1105包括回應1005(在圖10中)之欄位。回應1105可自接收/遠端處理器(CPU 2)發送回至請求處理器(CPU 1)。回應1105包括指示回應之類型(諸如,寫入回應(WRITERESPONSE))的類型欄位516,及指示快取行之經請求記憶體位址的標籤欄位517(其可為與原始請求505之標籤欄位507相同的標籤以識別回應所對應的請求)。回應515可包括為由請求處理器(CPU 1)請求之經請求資料的資料欄位518。因為無資料來自接收/遠端處理器(CPU 2)之(本機)快取記憶體,所以資料欄位518則為空白。錯誤校正欄位519包括於回應1005中。
如本文中所論述,異動中止狀態欄位1010提供由於寫入請求605(來自請求處理器(CPU 1))而中止所需要的異動(先前在接收/遠端處理器(CPU2)上執行)之狀態。
雖然已在一項例示性實施例中結合將對應於異動中止狀態及關聯資訊之協定欄位新增至對讀取請求之現有讀取回應且在另一例示性實施例中結合新增對應於不具有根據目前先進技術之協定回應的協定寫入請求之協定回應以便傳輸對應於異動中止狀態及關聯資訊且識別對應寫入請求的至少一個協定欄位而描述根據本發明之協定加強,但 熟習此項技術者將能夠將本文中含有之教示應用於其他XI格式、協定格式、請求類型、一致性協定等等。
根據一實施例,圖12為說明(例如)由自請求處理器CPU 1(112a)接收請求之接收/遠端處理器CPU 2(112b)進行之一致性請求處置的流程圖1200。圖12包括圖8之區塊,連同包含傳輸異動中止狀態(在異動中止欄位1010中)作為協定回應之部分的的新(已修改)區塊1205及1210。
在圖12中,根據一實施例,由接收/遠端處理器(例如,CPU 2(112b))進行之請求處置接收請求。在區塊805處,遠端處理器(CPU 2)自請求處理器(CPU 1)接收針對資料之XI請求(例如,請求505及/或請求605)。在區塊810處,遠端處理器(CPU 2)藉由檢查遠端處理器是否正處理以與所接收請求(例如,請求505及605)不相容之方式參考資料的異動而檢查是否偵測到干擾。舉例而言,在一項例示性實施例中,讀取共用請求與對異動讀取集合中之資料的參考相容,但寫入請求並不相容。另外,讀取獨佔式、讀取提昇(亦即,自共用改變為獨佔式)或寫入請求並不與在異動之讀取或寫入集合中參考的相同資料相容。當遠端處理器(CPU 2(112b))在區塊810處判定遠端處理器(自身)當前正使用由請求處理器(CPU 1(112a))請求之資料時,遠端處理器判定(是)偵測到干擾,且在區塊815處,遠端處理器(CPU 2)中止在遠端處理器(CPU 2)處發生之本機異動。一旦本機異動在遠端處理器(CPU 2)處中止,在區塊1205處,遠端處理器就將具有讀取回應(READ RESPONSE)之資料連同異動狀態欄位1010(其通知請求造成異動(先前執行)在遠端/接收處理器(CPU 2)處中止以便實現請求)傳輸至請求處理器(CPU 1)。在另一實施例中,可以寫入回應1105應答所接收寫入請求。在目前先進技術系統中,無異動狀態欄位1010將包括於自遠端CPU 2(其先前執行其自有的現在中止之異動)發送回至請求CPU 1 (其發送請求505及/或605)之回應(RESPONSE)中。遠端處理器(CPU 2)在區塊825處改變資料狀態且視情況在必要時自其本機快取記憶體清除資料。遠端處理器(CPU 1)在區塊830處起始異動失敗處理,且流程結束。當遠端處理器(CPU 2(112b))在區塊810中判定遠端處理器當前未使用由請求處理器(CPU 1(112a))請求之資料時,遠端處理器判定未偵測到干擾,且在區塊1210處,遠端處理器(CPU 2)傳輸具有讀取回應(READ RESPONSE)之資料連同異動狀態欄位1010(其指示請求不造成異動中止)。遠端處理器(CPU 2)在區塊840處改變資料狀態且視情況在必要時自本機快取記憶體清除資料,且流程結束。
圖13說明根據一實施例的由請求處理器(CPU 1(112a))進行之協定請求發起及處理的流程圖1300。圖13包括上文在圖7中論述之區塊,且不重複圖7之論述。另外,流程圖1300包括新區塊1305及1310。舉例而言,在區塊1305處,請求處理器(CPU 1)自遠端處理器(CPU 2)接收具有資料之XI回應(區塊725)連同新異動中止狀態欄位1010。在區塊730處,請求處理器(CPU 1)將資料置放於本機快取記憶體(諸如,L1及/或L2快取記憶體)中。在區塊1310處,請求處理器(CPU 1)將所接收狀態(例如,異動狀態欄位1010中之資訊)新增至資料快取記憶體118a(及/或記憶體310)中之本機異動干擾追蹤資料表1350a。當請求處理器(CPU 1)造成干擾(在遠端處理器(CPU 2)處引起異動中止)時,本機異動干擾追蹤資料表1350a可為保持追蹤干擾之儲存位置,且本機異動干擾追蹤資料表1350a可包括此資訊之記錄檔。本機追蹤異動干擾(儲存)資料表1350a包括增量統計及當前異動狀態。增量統計針對每一異動中止而增加(報告回至接收處理器(CPU 1)),且增量統計可分離成共用/獨佔式(R/W)請求及彙總請求。本機追蹤異動干擾儲存資料表1350a可包括針對由請求處理器(CPU 1)造成之每一異動中止及針對在請求處理器(CPU 1)處未中止異動之每一時間 而遞增的計數器。在一些實施例中,結合區塊1310而接收之異動中止狀態亦可彙總於效能監測單元、執行時間檢測單元及/或另一效能追蹤邏輯中以便使資訊可用於動態最佳化器、適時(JIT)編譯器或用於由程式設計師進行之效能調諧。資訊可藉由在儲存體中在效能監測時導向之結構中記入及/或藉由引發通知(例如,根據Power ISATM的基於PMU事件之分支,或例外狀況)而記錄。報告可包括干擾之性質、干擾及/或被干擾異動之識別、處理器ID、經受此干擾之位址等等。
如本文中所論述,一致性協定使用數個位元-位址、資料以及狀態及控制位元。此等資料用以發出資料請求,且指示其擁有權(例如,共用、獨佔式)及狀態(例如,已變更、未變更)。額外一或多個位元(用於異動中止狀態欄位1010)經新增以指示請求造成異動中止及/或可造成異動中止。舉例而言,狀態位元(異動中止狀態欄位1010)指示當經請求資料由遠端處理器(CPU 1)放棄時,該資料造成用於異動執行之衝突。如所提及,對請求之回應可以異動在進行中且請求造成一異動中止之指示而復原。
在一項實施例中,額外度量(諸如,已中止異動中之指令之數目)係在異動中止狀態欄位1010中傳輸。在一項實施例中,指示用以判定(例如)在獲勝異動稍後變得中止且重新開始的狀況下相對於異動之重新開始的失步,以避免活鎖情境。當請求處理器(CPU 1)判定請求處理器已藉由檢查本機異動中止狀態欄位1010而在遠端/接收處理器(CPU 2)中造成過多(例如,預定量)之異動中止時,請求處理器(CPU 1)亦可回應於中止過多之遠端異動而節流(縮減)其請求率以增加總系統輸貫量。
在又一實施例中,此等通知(在異動中止狀態欄位1010中)搜集於記錄檔中及/或經由一通知機制(例如,例外狀況)而向動態再最佳化組件通知;動態再最佳化組件可動態地再最佳化程式碼以縮減干擾及/ 或產生替代程式碼以使用鎖定來代替異動。
現在,圖9之區塊包括於圖14中,但不重複其論述。圖14亦包括對圖9之修改。圖14為根據一實施例的說明由處理器進行之異動處置的流程圖1400。可假定處理器為請求處理器(CPU 1)。圖14包括圖9之區塊,連同區塊1405。在區塊1405處,請求處理器(CPU 1)在區塊1405處將包括異動干擾統計(自新異動中止狀態欄位1010獲得且儲存於本機追蹤異動干擾儲存資料表1350a中)之異動資訊(諸如,異動診斷區塊(TBD))寫入於暫存器334、快取記憶體118a,及/或記憶體310中。在一項實施例中,當異動完成時,異動可包括其是否已造成一或多個異動中止作為結果碼(例如,結果暫存器、結果條件暫存器等等(例如,在暫存器334a、334b中))之部分的指示。在一項實施例中,當異動在一或多個暫存器(例如,暫存器334a、334b)及/或記憶體位置中設定一結果狀態時,該一或多個暫存器(例如,在暫存器334a、334b中)及/或記憶體位置(例如,在記憶體310、快取記憶體118a、118b中)可包括被中止以將資料至提供異動的被干擾異動之數目,干擾之性質(具有寫入集合之讀取請求,或具有讀取或寫入之寫入請求等等)。在一項實施例中,如此儲存之資訊可包括關於異動中之每一者的特定資訊,且包括用以識別發生干擾之處理器的方式、已中止(例如,藉由指定異動開始XBEGIN或TBEGIN之位址、符記、異動ID等等)之異動、在中止之前已由彼異動執行的工作之量度,等等。在一項實施例中,當根據本發明而延伸目前先進技術異動診斷區塊以具有對應於干擾及異動中止狀態之額外欄位時,儲存至一或多個記憶體位置之資訊對應於(例如)根據z/Architecture(以引用方式包括於本文中)之異動診斷區塊(TDB)之記憶體位置,及根據本發明之異動診斷區塊之欄位,該等欄位對應於由新引入之協定欄位個別地及/或由來自複數個此等欄位之彙總資訊傳輸的資訊。在另一實施例中,儲存於暫存器及/或記憶體 位置中之資訊經提供為相異的、分離的且獨立於目前先進技術TDB。
在區塊1405處,請求處理器(CPU 1)經組態以經由效能監測單元及/或執行時間檢測單元而將干擾統計提供至程式設計師,且將干擾資訊提供至韌體、毫程式碼等等。在毫程式碼中,毫程式碼可使用干擾統計資訊以避免活鎖及/或使用干擾統計資訊以最佳化異動重新開始。在一應用程式中,該應用程式可使用干擾統計資訊以避免活鎖且最佳化異動重新開始。
根據一實施例,下文出於解釋目的而提供實例程式碼。
當一異動已中止且尤其經最佳化以避免活鎖情境時,以下偽程式碼(在處理器112a、112b上執行)提供一種執行異動重新開始最佳化之形式(明顯地在毫程式碼中及/或藉由整合於在處理器上執行之應用程式中的程式碼)以便重新開始該異動。例示性程式碼使用以例示性方式而儲存於TDB中之資訊,然而,熟習此項技術者將能夠使用自包括但不限於記憶體位置(例如,記憶體310)、暫存器334a、334b、狀態碼及/或效能監測單元、執行時間檢測單元等等獲得之資訊:
根據例示性程式碼,異動重新開始程式碼包括檢查其自身是否已中止,及其是否又已中止另一異動。在一項實施例中,立即診斷可能活鎖。在另一實施例中,若目前異動及被干擾異動為循環干擾圖形之部分(亦即,每一異動直接地或間接地中止其他異動),則執行測試 (未圖示)。在一項實施例中,當診斷相互擊落時,採取干擾避免動作。在一項實施例中,當診斷相互擊落時,採取活鎖避免動作。在一項實施例中,藉由呼叫一函式avoid_livelock()而調用干擾避免動作。在一些實施例中,此等動作可包含但不限於以下各者中之一或多者:目前異動之較低優先權;等待退減時期;使用鎖定而同步;等等。
在另一例示性實施例中,當一異動已中止且尤其經最佳化以避免活鎖情境時,以下偽程式碼提供一種執行異動重新開始最佳化之形式(明顯地在毫程式碼中或藉由整合於在處理器上執行之應用程式中的程式碼)以便重新開始該異動。例示性程式碼使用以例示性方式而儲存於TDB中之資訊;然而,熟習此項技術者將能夠使用自包括但不限於記憶體位置、暫存器、狀態碼或效能監測單元、執行時間檢測單元等等獲得之資訊。在例示性程式碼中,當其對應於已超過(可能)相互擊落之臨限值的異動時,異動採取活鎖防止操作:
根據例示性程式碼,異動重新開始程式碼包括檢查異動自身是否已中止,及其是否又已中止另一異動。在一項實施例中,立即診斷可能活鎖。在另一實施例中,若目前異動及被干擾異動為循環干擾圖形之部分(亦即,每一異動直接地或間接地中止其他異動),則執行測試(未圖示)。在一項實施例中,當已診斷超過臨限數目個相互擊落(mutual_shootdown>臨限值)時,採取干擾避免動作。在一項實施例 中,當已診斷超過臨限數目個相互擊落(mutual_shootdown>臨限值)時,採取活鎖避免動作。在一項實施例中,藉由呼叫一函式avoid_livelock()而調用干擾避免動作。在一些實施例中,此等動作可包含但不限於以下各者中之一或多者:目前異動之較低優先權;等待退減時期;使用鎖定而同步;等等。
重新開始最佳化(明顯地在毫程式碼中或在應用程式中):
根據例示性程式碼,異動重新開始程式碼包括檢查異動自身是否已中止,及其是否又已中止另一異動。在一項實施例中,立即診斷可能活鎖。在一項實施例中,當已被診斷超過臨限數目個相互擊落(mutual_shootdown>臨限值)時,若目前異動及被干擾異動為(或在另一實施例中可為)循環干擾圖形之部分(亦即,每一異動直接地或間接地中止其他異動),則測試經執行live_lock_loop_detected(),其可存取經由回應中止狀態訊息且視情況結合其他方式而接收之額外資訊。若如此,則採取活鎖避免動作。在一項實施例中,藉由呼叫一函式avoid_livelock()而調用活鎖避免動作。在一些實施例中,此等動作可包含但不限於以下各者中之一或多者:目前異動之較低優先權;等待退減時期;使用鎖定而同步;等等。
根據一實施例,圖15為說明處理器(例如,請求處理器CPU 1)如何根據異動中止狀態欄位1010中之資訊而對干擾指示(例如,在本機 追蹤異動干擾儲存資料表1350a中儲存(及遞增/追蹤))作出回應的流程圖1500。在區塊1505處,請求處理器(CPU 1)報告干擾統計。報告干擾統計可包括如區塊1405中所論述而寫入異動資訊。在區塊1510處,請求處理器(CPU 1)藉由判定干擾成本何時過高而判定額外同步是否有可能避免重複干擾。當請求處理器(CPU 1)重複地中止在接收/遠端處理器(CPU 2)上執行之(同一)異動達預定次數(例如,4次)及/或異動在中止之前已完成指令之預定數目個時脈循環(例如,10,000個時脈循環)時,干擾成本過高。
當請求處理器(CPU 1)在區塊1510中判定額外同步沒有可能避免重複干擾(由來自請求處理器(CPU 1)的針對資料之請求造成的在遠端處理器(CPU 2)上之重複異動中止)時,在區塊1515處,請求處理器(CPU 1)檢查程式碼再最佳化是否為可能的。當請求處理器(CPU 1)判定再最佳化為可能的時,在區塊1520處,請求處理器再最佳化程式碼。當請求處理器(CPU 1)判定再最佳化為不可能的時,在區塊1525處,請求處理器進行當前程式碼(包括諸如退減之耐受性量度)。退減係當請求處理器判定在進行針對資料之請求之前等待預定時間量時,以便使接收/遠端處理器(CPU 2)具有用於接收/遠端處理器之異動的時間以完成執行(而不必中止)。
當請求處理器(CPU 1)在區塊1510中判定額外同步有可能避免重複干擾(由來自請求處理器(CPU 1)的針對資料之請求造成的在遠端處理器(CPU 2)上之重複異動中止)時,在區塊1530處,請求處理器(CPU 1)利用替代同步。在區塊1535處,請求處理器(CPU 1)檢查(例如)本機追蹤異動干擾儲存資料表1350a中之記錄檔以判定(同一異動(亦即,具有相同快取記憶體/記憶體位址)之)重複干擾何時已發生於遠端/接收處理器(CPU 2)上。當不存在重複干擾時,流程進行至區塊1525。當請求處理器(CPU 1)判定存在重複干擾(對於遠端/接收處理器(CPU 2)上之同一已中止異動)時,在區塊1540處,請求處理器檢查程式碼再最佳化是否為可能的。當再最佳化為可能的時,在區塊1545處,請求處理器(CPU 1)再最佳化程式碼。
當請求處理器(CPU 1)判定程式碼再最佳化為不可能的時,在區塊1550處,請求處理器(CPU 1)經組態以永久地(及/或歷時一預定時期)選擇替代同步方法以用於向接收/遠端處理器(CPU 2)請求資料之此特定異動(在請求處理器(CPU 1)上執行)。
根據一實施例,圖16為說明處理器(例如,請求處理器CPU 1)如何根據異動中止狀態欄位1010中之資訊而對干擾指示(例如,在本機追蹤異動干擾儲存資料表1350a中儲存(及遞增/追蹤))作出回應的流程圖1600。圖16包括圖15之區塊,惟區塊1605替換區塊1540除外。不重複圖15之區塊。
當區塊1535為是時,流程進行至圖16中之區塊1605。在區塊1605處,請求處理器(CPU 1)檢查再最佳化或替代同步是否為較佳的。當區塊1605中之判定為是時,流程進行至區塊1545。當區塊1605中之判定為否時,流程進行至區塊1550。在圖15之區塊1540中,當程式碼再最佳化為可能的時,程式碼再最佳化被始終執行。在1605中,計算度量以判定程式碼再最佳化或替代同步方法(例如,鎖定)是否為所要的,且選擇一者或另一者。此情形可基於(例如)比較使用替代同步方法之彙總成本與使用再最佳化成本之成本加執行再最佳化之成本的測試,以判定哪一者為所要的。其他成本度量為可能的且由本發明涵蓋,諸如,(例如)藉由比較再最佳化成本與臨限值而最小化再最佳化附加項之成本。
圖17為根據一實施例的用於實施一致性協定之方法(由處理器112a、112b執行)的流程圖1700。
在區塊1705處,請求處理器112a(CPU1)經由互連122而將針對資 料之請求(諸如,請求505、605)發送至遠端處理器112b(CPU2)。在區塊1710處,請求處理器112a(CPU1)自遠端處理器112b接收回應(諸如,回應1005、1105),其中該回應包括遠端處理器112b上之遠端異動(例如,異動320b)之異動狀態(例如,異動中止狀態1010)。在區塊1715處,請求處理器112a在本機異動干擾追蹤資料表(例如,資料表1350a)中新增遠端處理器上之遠端異動之異動狀態(來自欄位1010之資訊)。
除了上文所描述之特徵中之一或多者以外,或作為替代方案,另外實施例亦可包括其中將遠端異動之異動狀態新增至異動診斷區塊(TBD)(由請求處理器112a)。遠端異動在遠端處理器112b上執行且基於將針對資料之請求發送至遠端處理器而中止執行。請求係由在發送請求之請求處理器112a上執行的請求異動(例如,異動320a)進行。
除了上文所描述之特徵中之一或多者以外,或作為替代方案,另外實施例亦可包括其中基於由請求異動進行之請求造成遠端異動(例如,異動320b)在遠端處理器112b上中止,請求處理器112a將遠端異動之異動狀態(自欄位1010獲得)新增至本機異動干擾追蹤資料表1350a且遞增已針對遠端異動(中止之每一特定異動320b)而發生之異動中止之計數。
除了上文所描述之特徵中之一或多者以外,或作為替代方案,另外實施例亦可包括其中由請求處理器112a在回應1005、1105中自遠端處理器112b接收的遠端異動之異動狀態指示遠端異動(異動320b)必須基於自請求處理器112a接收到請求505、605而中止。
除了上文所描述之特徵中之一或多者以外,或作為替代方案,另外實施例亦可包括其中本機異動干擾追蹤資料表1350a維持已被干擾且由在請求處理器112a上執行之請求異動320a中止的數個異動。本機異動干擾追蹤資料表1350a維持描述遠端處理器112b(及其他處理 器)上之遠端異動320b的資訊。描述遠端處理器112a上之遠端異動320b的資訊包括以下各者中之至少一者:由在處理器上執行之請求異動造成的干擾之類型、由請求異動中止的遠端異動中之每一者之識別或位址、發生干擾的遠端處理器中之每一者之識別、已中止的遠端異動中之每一者之位址,及/或在中止之前已由遠端異動中之每一者執行的工作之量度。
技術效應及益處包括經延伸以包括關於異動狀態之額外資訊的一致性協定。當處理器在異動執行中時,一致性請求可因為偵測到衝突而造成接收處理器之異動執行中止。根據實施例,一致性協定請求係以接收處理器已中止其異動執行的額外資訊而延伸。
本文中使用之術語僅係用於描述特定實施例之目的,且並不意欲限制本發明。除非上下文另有明確指示,否則如本文所使用之單數形式「一」及「該」意欲亦包括複數形式。應進一步理解,術語「包含」在用於本說明書中時指示存在所描述特徵、整數、步驟、操作、元件及/或組件,但並不排除存在或新增一或多種其他特徵、整數、步驟、操作、元件、組件及/或其群組。
以下申請專利範圍中之全部構件或步驟加功能元件之對應結構、材料、動作及等效者意欲包括用於連同如特定地所主張之其他所主張元件一起執行功能的任何結構、材料或動作。已呈現本發明之描述以用於達成說明及描述之目的,但其並不意欲為詳盡的或限於呈所揭示之形式的本發明。在不脫離本發明之範疇及精神之情況下,許多修改及變化對於一般熟習此項技術者將顯而易見。選擇及描述實施例以便最好地解釋本發明之原理及實務應用,且使其他一般熟習此項技術者能夠理解本發明之各種實施例,該等實施例具有適合於所涵蓋之特定用途的各種修改。
本發明之各種實施例的描述已為達成說明之目的而呈現,但不 意欲為窮盡性的或限於所揭示之實施例。在不脫離所描述實施例之範疇及精神的情況下,許多修改及變化對於一般熟習此項技術者將顯而易見。本文中所使用之術語經選擇以最好地解釋實施例之原理、實務應用或對市場中找到的技術之技術改良,或使其他一般熟習此項技術者能夠理解本文所揭示之實施例。
現在參看圖18,大體上展示根據一實施例的包括電腦可讀儲存媒體1802及程式指令1804之電腦程式產品1800。
本發明可為一種系統、一種方法及/或一種電腦程式產品。該電腦程式產品可包括一(或若干)電腦可讀儲存媒體,其上具有電腦可讀程式指令以使處理器進行本發明之態樣。
電腦可讀儲存媒體可為有形器件,其可保持及儲存指令以供指令執行器件使用。電腦可讀儲存媒體可為(例如,但不限於):電子儲存器件、磁性儲存器件、光學儲存器件、電磁儲存器件、半導體儲存器件或前述各者之任何合適組合。電腦可讀儲存媒體之更特定實例之非窮盡性清單包括以下各者:攜帶型電腦磁片、硬碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可擦除可程式化唯讀記憶體(EPROM或快閃記憶體)、靜態隨機存取記憶體(SRAM)、攜帶性光碟唯讀記憶體(CD-ROM)、數位影音光碟(DVD)、記憶棒、軟性磁碟、機械編碼器件(諸如,其上記錄有指令之凹槽中之打孔卡或凸起結構),及前述各者之任何合適組合。如本文中所使用,不將電腦可讀儲存媒體本身認作暫時性信號,諸如,無線電波或其他自由傳播電磁波、傳播通過波導或其他傳輸媒體之電磁波(例如,傳遞通過光纜之光脈衝),或傳輸通過導線之電信號。
本文中所描述之電腦可讀程式指令可自電腦可讀儲存媒體下載至各別計算/處理器件或經由網路(例如,網際網路、區域網路、廣域網路及/或無線網路)而下載至外部電腦或外部儲存器件。網路可包含 銅傳輸纜線、光學傳輸光纖、無線傳輸、路由器、防火牆、交換器、閘道器電腦及/或邊緣伺服器。每一計算/處理器件中之網路配接卡或網路介面自網路接收電腦可讀程式指令且轉遞電腦可讀程式指令以用於儲存於各別計算/處理器件內之電腦可讀儲存媒體中。
用於執行本發明之操作之電腦可讀程式指令可為以一或多種程式設計語言之任何組合而撰寫之組譯器指令、指令集架構(ISA)指令、機器指令、機器相依指令、微程式碼、韌體指令、狀態設定資料,或原始程式碼或物件程式碼,該一或多種程式設計語言包括諸如Smalltalk、C++或其類似者之物件導向式程式設計語言,及習知程序性程式設計語言,諸如,「C」程式設計語言或類似程式設計語言。電腦可讀程式指令可完全地在使用者電腦上執行、部分地在使用者電腦上執行、作為單機套裝軟體而執行、部分地在使用者電腦上執行且部分地在遠端電腦上執行,或完全地在遠端電腦或伺服器上執行。在完全地在遠端電腦或伺服器上執行的情境下,遠端電腦可經由任何類型之網路(包括區域網路(LAN)或廣域網路(WAN))而連接至使用者電腦,或可連接至外部電腦(例如,使用網際網路服務提供者,經由網際網路)。在一些實施例中,電子電路系統(包括(例如)可程式化邏輯電路系統、場可程式化閘陣列(FPGA)或可程式化邏輯陣列(PLA))可藉由利用電腦可讀程式指令之狀態資訊以個人化電子電路系統而執行電腦可讀程式指令,以便執行本發明之態樣。
本文中參考根據本發明之實施例之方法、裝置(系統)及電腦程式產品的流程圖說明及/或方塊圖來描述本發明之態樣。應理解,可藉由電腦可讀程式指令來實施該等流程圖說明及/或方塊圖之每一區塊及該等流程圖說明及/或方塊圖中之區塊組合。
可將此等電腦可讀程式指令提供至一般用途電腦、特殊用途電腦或其他可程式化資料處理裝置之一處理器以產生一機器,使得經由 該電腦或其他可程式化資料處理裝置之該處理器而執行之指令產生用於實施在該或該等流程圖及/或方塊圖區塊中所指定之功能/動作的構件。亦可將此等電腦可讀程式指令儲存於一電腦可讀儲存媒體中,其可指導電腦、可程式化資料處理裝置及/或其他器件以特定方式起作用,使得其中儲存有指令之電腦可讀儲存媒體包含一製品,該製品包括實施在該或該等流程圖及/或方塊圖區塊中指定之功能/動作的態樣。
電腦可讀程式指令亦可載入至電腦、其他可程式資料處理裝置或其他器件上,以使一系列操作步驟在該電腦、其他可程式化裝置或其他器件上執行以產生電腦實施處理序,使得在該電腦、其他可程式化裝置或其他器件上執行之指令實施該或該等流程圖及/或方塊圖區塊中所指定之功能/動作。
諸圖中之流程圖及方塊圖說明根據本發明之各種實施例之系統、方法及電腦程式產品之可能實施的架構、功能性及操作。就此而言,流程圖或方塊圖中之每一區塊可表示指令之模組、片段或部分,其包含用於實施該(等)所指定邏輯功能之一或多個可執行指令。在一些替代實施中,區塊中所提及之功能可不以諸圖中所提及之次序發生。舉例而言,取決於所涉及之功能性,連續地展示之兩個區塊事實上可實質上並行地執行,或該等區塊有時可以相反次序執行。亦應注意,方塊圖及/或流程圖說明之每一區塊及方塊圖及/或流程圖說明中之區塊組合可由執行所指定之功能或動作基於特殊用途硬體之系統實施,或進行特殊用途硬體與電腦指令之組合。
100‧‧‧晶粒/電腦系統
112a‧‧‧處理器(CPU 1)
112b‧‧‧處理器(CPU 2)
114a‧‧‧中央處理單元(CPU)
114b‧‧‧中央處理單元(CPU)
116a‧‧‧指令快取記憶體
116b‧‧‧指令快取記憶體
118a‧‧‧具有異動記憶體(TM)支援之資料快取記憶體
118b‧‧‧具有TM支援之資料快取記憶體
120a‧‧‧互連控制
120b‧‧‧互連控制
122‧‧‧互連
124‧‧‧共用快取記憶體

Claims (20)

  1. 一種用於實施一一致性協定之電腦程式產品,該電腦程式產品包含:一電腦可讀儲存媒體,其上體現有程式指令,其中該電腦可讀儲存媒體並非一信號,可由一處理電路讀取該等程式指令以使該處理電路執行一方法,該方法包含:將針對資料之一請求發送至一遠端處理器;由一處理器自該遠端處理器接收一回應,該回應包括該遠端處理器上之一遠端異動之一異動狀態;及由該處理器在一本機異動干擾追蹤資料表中新增該遠端處理器上之該遠端異動之該異動狀態。
  2. 如請求項1之電腦程式產品,其中將該遠端異動之該異動狀態新增至一異動診斷區塊。
  3. 如請求項1之電腦程式產品,其中該遠端異動在該遠端處理器上執行且基於將針對資料之該請求發送至該遠端處理器而中止執行。
  4. 如請求項1之電腦程式產品,其中該請求係由在發送該請求之該處理器上執行的一請求異動進行。
  5. 如請求項1之電腦程式產品,其中基於由該請求異動進行之該請求造成該遠端異動在該遠端處理器上中止,該處理器將該遠端異動之該異動狀態新增至該本機異動干擾追蹤資料表且遞增已針對該遠端異動而發生之異動中止之一計數。
  6. 如請求項1之電腦程式產品,其中由該處理器在該回應中自該遠端處理器接收的該遠端異動之該異動狀態指示該遠端異動必須基於自該處理器接收到該請求而中止。
  7. 如請求項1之電腦程式產品,其中該本機異動干擾追蹤資料表維持已被干擾且由在該處理器上執行之該請求異動中止的數個異動。
  8. 如請求項1之電腦程式產品,其中該本機異動干擾追蹤資料表維持描述遠端處理器上之遠端異動的資訊;且其中描述該等遠端處理器上之該等遠端異動的該資訊包括以下各者中之至少一者:由在該處理器上執行之該請求異動造成的干擾之一類型、由該請求異動中止的該等遠端異動中之每一者之一識別或位址、發生該干擾的該等遠端處理器中之每一者之一識別、已中止的該等遠端異動中之每一者之一位址,及在中止之前已由該等遠端異動中之每一者執行的工作之一量度。
  9. 一種用於實施一一致性協定之電腦系統,該系統包含:一記憶體;及一處理器,其以通信方式耦接至該記憶體,該電腦系統經組態以執行一方法,該方法包含:將針對資料之一請求發送至一遠端處理器;由該處理器自該遠端處理器接收一回應,該回應包括該遠端處理器上之一遠端異動之一異動狀態;及由該處理器在一本機異動干擾追蹤資料表中新增該遠端處理器上之該遠端異動之該異動狀態。
  10. 如請求項9之系統,其中將該遠端異動之該異動狀態新增至一異動診斷區塊。
  11. 如請求項9之系統,其中該遠端異動在該遠端處理器上執行且基於該將針對資料之該請求發送至該遠端處理器而中止執行。
  12. 如請求項9之系統,其中該請求係由在發送該請求之該處理器上執行的一請求異動進行。
  13. 如請求項9之系統,其中基於由該請求異動進行之該請求造成該遠端異動在該遠端處理器上中止,該處理器將該遠端異動之該異動狀態新增至該本機異動干擾追蹤資料表且遞增已針對該遠端異動而發生之異動中止之一計數。
  14. 如請求項9之系統,其中由該處理器在該回應中自該遠端處理器接收的該遠端異動之該異動狀態指示該遠端異動必須基於自該處理器接收到該請求而中止。
  15. 如請求項9之系統,其中該本機異動干擾追蹤資料表維持已被干擾且由在該處理器上執行之該請求異動中止的數個異動。
  16. 一種用於實施一一致性協定之電腦實施方法,該方法包含:將針對資料之一請求發送至一遠端處理器;由一處理器自該遠端處理器接收一回應,該回應包括該遠端處理器上之一遠端異動之一異動狀態;及由該處理器在一本機異動干擾追蹤資料表中新增該遠端處理器上之該遠端異動之該異動狀態。
  17. 如請求項16之方法,其中將該遠端異動之該異動狀態新增至一異動診斷區塊。
  18. 如請求項16之方法,其中該遠端異動在該遠端處理器上執行且基於該將針對資料之該請求發送至該遠端處理器而中止執行。
  19. 如請求項16之方法,其中該請求係由在發送該請求之該處理器上執行的一請求異動進行。
  20. 如請求項16之方法,其中基於由該請求異動進行之該請求造成該遠端異動在該遠端處理器上中止,該處理器將該遠端異動之該異動狀態新增至該本機異動干擾追蹤資料表且遞增已針對該遠端異動而發生之異動中止之一計數。
TW104108221A 2014-03-14 2015-03-13 用於指示異動狀態之一致性協定增強的電腦程式產品、電腦系統及方法 TWI652574B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/212,217 US9817693B2 (en) 2014-03-14 2014-03-14 Coherence protocol augmentation to indicate transaction status
US14/212,217 2014-03-14

Publications (2)

Publication Number Publication Date
TW201610677A true TW201610677A (zh) 2016-03-16
TWI652574B TWI652574B (zh) 2019-03-01

Family

ID=52684217

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104108221A TWI652574B (zh) 2014-03-14 2015-03-13 用於指示異動狀態之一致性協定增強的電腦程式產品、電腦系統及方法

Country Status (16)

Country Link
US (2) US9817693B2 (zh)
EP (1) EP3117323B1 (zh)
JP (1) JP6490092B2 (zh)
KR (1) KR101843671B1 (zh)
CN (1) CN106133705B (zh)
AU (1) AU2015228889B2 (zh)
BR (1) BR112016021217B1 (zh)
CA (1) CA2940915C (zh)
ES (1) ES2764954T3 (zh)
IL (1) IL247803B (zh)
MX (1) MX2016011905A (zh)
RU (1) RU2665306C2 (zh)
SG (1) SG11201606098YA (zh)
TW (1) TWI652574B (zh)
WO (1) WO2015135967A1 (zh)
ZA (1) ZA201606670B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI659305B (zh) * 2017-01-12 2019-05-11 美商萬國商業機器公司 用於擴展私用快取中快取行之獨佔持有之設備
US10521351B2 (en) 2017-01-12 2019-12-31 International Business Machines Corporation Temporarily suppressing processing of a restrained storage operand request
TWI769335B (zh) * 2017-10-31 2022-07-01 美商高通公司 用於非揮發性記憶體之寫入信用管理之方法、設備及非暫時性電腦可讀儲存媒體

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9817693B2 (en) * 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
US9639276B2 (en) * 2015-03-27 2017-05-02 Intel Corporation Implied directory state updates
GB2539641B (en) * 2015-06-11 2019-04-03 Advanced Risc Mach Ltd Coherency between a data processing device and interconnect
US20180004521A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Processors, methods, and systems to identify stores that cause remote transactional execution aborts
KR101946135B1 (ko) * 2017-01-11 2019-02-08 울산과학기술원 비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법
US20180365070A1 (en) * 2017-06-16 2018-12-20 International Business Machines Corporation Dynamic throttling of broadcasts in a tiered multi-node symmetric multiprocessing computer system
US10585800B2 (en) 2017-06-16 2020-03-10 International Business Machines Corporation Reducing cache transfer overhead in a system
EP3462312B1 (en) * 2017-09-29 2022-08-17 ARM Limited Permitting unaborted processing of transaction after exception mask update instruction
US20190155985A1 (en) * 2017-11-22 2019-05-23 Mentor Graphics Corporation Communication protocols design verification through database systems for hardware-based emulation platforms
CN108427576B (zh) * 2018-02-12 2022-04-01 华夏芯(北京)通用处理器技术有限公司 一种免受Spectre攻击的高性能推测执行算法
GB2572578B (en) * 2018-04-04 2020-09-16 Advanced Risc Mach Ltd Cache annotations to indicate specultative side-channel condition
US10877895B2 (en) 2018-08-27 2020-12-29 Qualcomm Incorporated Method, apparatus, and system for prefetching exclusive cache coherence state for store instructions
KR102165860B1 (ko) 2018-12-31 2020-10-14 성균관대학교산학협력단 슬로티드 페이지의 더블 헤더 로깅 방법 및 데이터베이스 장치
JP2020135391A (ja) 2019-02-19 2020-08-31 キオクシア株式会社 メモリシステム
US11914511B2 (en) 2020-06-22 2024-02-27 Apple Inc. Decoupling atomicity from operation size
CN112118296B (zh) * 2020-08-30 2023-12-29 浪潮金融信息技术有限公司 一种基于mqtt协议的物联网文件传输方法
US20230176956A1 (en) * 2021-12-08 2023-06-08 Hcl Technologies Limited Method and system for performing dataload protocol operation testing in an avionics unit

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2727222B1 (fr) 1994-11-21 1996-12-27 Cit Alcatel Protocole transactionnel, et systeme pour la mise en oeuvre de ce protocole
GB2302966A (en) 1995-06-30 1997-02-05 Ibm Transaction processing with a reduced-kernel operating system
US6697935B1 (en) * 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6081874A (en) * 1998-09-29 2000-06-27 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect
US6449699B2 (en) 1999-03-29 2002-09-10 International Business Machines Corporation Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
US6484240B1 (en) 1999-07-30 2002-11-19 Sun Microsystems, Inc. Mechanism for reordering transactions in computer systems with snoop-based cache consistency protocols
US6349361B1 (en) 2000-03-31 2002-02-19 International Business Machines Corporation Methods and apparatus for reordering and renaming memory references in a multiprocessor computer system
US6990559B2 (en) 2002-10-03 2006-01-24 Hewlett-Packard Development Company, L.P. Mechanism for resolving ambiguous invalidates in a computer system
US7398355B1 (en) 2003-02-13 2008-07-08 Sun Microsystems, Inc. Avoiding locks by transactionally executing critical sections
US7421544B1 (en) 2005-04-04 2008-09-02 Sun Microsystems, Inc. Facilitating concurrent non-transactional execution in a transactional memory system
US8099538B2 (en) * 2006-03-29 2012-01-17 Intel Corporation Increasing functionality of a reader-writer lock
US8924653B2 (en) * 2006-10-31 2014-12-30 Hewlett-Packard Development Company, L.P. Transactional cache memory system
US7827357B2 (en) * 2007-07-31 2010-11-02 Intel Corporation Providing an inclusive shared cache among multiple core-cache clusters
US8402464B2 (en) 2008-12-01 2013-03-19 Oracle America, Inc. System and method for managing contention in transactional memory using global execution data
US8627017B2 (en) * 2008-12-30 2014-01-07 Intel Corporation Read and write monitoring attributes in transactional memory (TM) systems
US8250331B2 (en) 2009-06-26 2012-08-21 Microsoft Corporation Operating system virtual memory management for hardware transactional memory
US9569254B2 (en) * 2009-07-28 2017-02-14 International Business Machines Corporation Automatic checkpointing and partial rollback in software transaction memory
US8516202B2 (en) * 2009-11-16 2013-08-20 International Business Machines Corporation Hybrid transactional memory system (HybridTM) and method
US8402218B2 (en) 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US20120227045A1 (en) * 2009-12-26 2012-09-06 Knauth Laura A Method, apparatus, and system for speculative execution event counter checkpointing and restoring
US8719828B2 (en) * 2011-10-14 2014-05-06 Intel Corporation Method, apparatus, and system for adaptive thread scheduling in transactional memory systems
US20130159653A1 (en) * 2011-12-20 2013-06-20 Martin T. Pohlack Predictive Lock Elision
WO2013101078A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Support for speculative ownership without data
US9336046B2 (en) * 2012-06-15 2016-05-10 International Business Machines Corporation Transaction abort processing
US9396115B2 (en) 2012-08-02 2016-07-19 International Business Machines Corporation Rewind only transactions in a data processing system supporting transactional storage accesses
US9817693B2 (en) * 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI659305B (zh) * 2017-01-12 2019-05-11 美商萬國商業機器公司 用於擴展私用快取中快取行之獨佔持有之設備
US10521351B2 (en) 2017-01-12 2019-12-31 International Business Machines Corporation Temporarily suppressing processing of a restrained storage operand request
US10621090B2 (en) 2017-01-12 2020-04-14 International Business Machines Corporation Facility for extending exclusive hold of a cache line in private cache
US10956337B2 (en) 2017-01-12 2021-03-23 International Business Machines Corporation Temporarily suppressing processing of a restrained storage operand request
US11366759B2 (en) 2017-01-12 2022-06-21 International Business Machines Corporation Temporarily suppressing processing of a restrained storage operand request
TWI769335B (zh) * 2017-10-31 2022-07-01 美商高通公司 用於非揮發性記憶體之寫入信用管理之方法、設備及非暫時性電腦可讀儲存媒體

Also Published As

Publication number Publication date
EP3117323B1 (en) 2019-12-04
US20150261564A1 (en) 2015-09-17
WO2015135967A1 (en) 2015-09-17
US20150261676A1 (en) 2015-09-17
CA2940915A1 (en) 2015-09-17
ES2764954T3 (es) 2020-06-05
BR112016021217B1 (pt) 2022-08-09
CN106133705B (zh) 2019-02-22
KR20160088432A (ko) 2016-07-25
ZA201606670B (en) 2018-05-30
BR112016021217A2 (zh) 2017-08-15
AU2015228889A1 (en) 2016-08-04
RU2665306C2 (ru) 2018-08-28
EP3117323A1 (en) 2017-01-18
CN106133705A (zh) 2016-11-16
AU2015228889B2 (en) 2018-02-01
MX2016011905A (es) 2016-12-02
KR101843671B1 (ko) 2018-03-29
IL247803B (en) 2019-03-31
SG11201606098YA (en) 2016-08-30
JP6490092B2 (ja) 2019-03-27
TWI652574B (zh) 2019-03-01
JP2017514206A (ja) 2017-06-01
US9971626B2 (en) 2018-05-15
CA2940915C (en) 2022-10-11
US9817693B2 (en) 2017-11-14
RU2016126977A (ru) 2018-04-16

Similar Documents

Publication Publication Date Title
TWI652574B (zh) 用於指示異動狀態之一致性協定增強的電腦程式產品、電腦系統及方法
US10754738B2 (en) Using transactional execution for reliability and recovery of transient failures
US9705680B2 (en) Enhancing reliability of transaction execution by using transaction digests
US9971690B2 (en) Transactional memory operations with write-only atomicity
JP6463367B2 (ja) ハードウェア・トランザクションのサルベージ
US9753764B2 (en) Alerting hardware transactions that are about to run out of space
US9495202B2 (en) Transaction digest generation during nested transactional execution
US9442776B2 (en) Salvaging hardware transactions with instructions to transfer transaction execution control
JP6642806B2 (ja) ロック無効化とロックの選択を用いたデータ共有のための適応プロセス
US9460020B2 (en) Diagnostics for transactional execution errors in reliable transactions
GB2545966A (en) Prefetch insensitive transactional memory
US20160004537A1 (en) Committing hardware transactions that are about to run out of resource
JP6734760B2 (ja) プリフェッチ・インセンシティブのトランザクション・メモリ