TWI801603B - 處理獨佔式載入指令的資料處理設備、方法及電腦程式 - Google Patents

處理獨佔式載入指令的資料處理設備、方法及電腦程式 Download PDF

Info

Publication number
TWI801603B
TWI801603B TW108120255A TW108120255A TWI801603B TW I801603 B TWI801603 B TW I801603B TW 108120255 A TW108120255 A TW 108120255A TW 108120255 A TW108120255 A TW 108120255A TW I801603 B TWI801603 B TW I801603B
Authority
TW
Taiwan
Prior art keywords
transaction
exclusive
instruction
processing
load
Prior art date
Application number
TW108120255A
Other languages
English (en)
Other versions
TW202001566A (zh
Inventor
馬修詹姆士 荷斯奈爾
葛利格瑞斯 馬科里斯
理查羅伊 格利森斯維特
納坦永森 張
Original Assignee
英商Arm股份有限公司
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 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW202001566A publication Critical patent/TW202001566A/zh
Application granted granted Critical
Publication of TWI801603B publication Critical patent/TWI801603B/zh

Links

Images

Classifications

    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/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/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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

Landscapes

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

Abstract

描述了一種用於使用獨佔式監控指示支援交易記憶體及獨佔式載入/儲存指令以追蹤對給定位址的獨佔式存取的設備。回應於在給定交易內執行的規定載入靶位址的預定類型的載入指令,清除先前針對載入靶位址設定的任何獨佔式監控指示。回應於獨佔式載入指令,觸發交易異常終止,對此將給定位址規定為其位址的工作集中的一個。這幫助維持在交易與非交易線程之間的互斥,即使在非交易線程中存在載入推測亦如此。

Description

處理獨佔式載入指令的資料處理設備、方法及電腦程式
本技術係關於資料處理領域。更特定而言,其係關於支援交易記憶體的資料處理設備。
一種資料處理系統可執行數個資料處理線程。有時,線程可需要存取共享資源,並且資料處理操作的性質可使得一旦線程開始與共享資源交互,可能有必要在另一線程不同時存取資源的情況下使用該資源原子地完成一組操作。
第一線程中的代碼臨界區相對於第二線程中的代碼臨界區原子地執行的性質可被稱為「互斥」。臨界區在相應線程中可包括相同的指令序列,或者可以包括不同的代碼區,該等代碼區均更新共享資源。若正執行的兩個臨界區的結果係或者使得結果相當於第一線程執行臨界區並且隨後第二線程使用臨界區在第一線程中的結果執行其臨界區,或者反之結果係使得第一線程將臨界區在第二線程中的結果用於在第一線程中處理共享資源,則可滿足互斥。其中並行處理第一及第二線程的臨界區但一個線程中的臨界區不考慮到獲自另一線程中的臨界區的共享資源的更新值的結果可違反互斥。
一種用於在線程之間維持互斥的技術可係使用鎖來控制對至少一個靶資源的獨佔式存取。例如,當一個線程開始在特定的位址區域中存取資料時,線程可設定鎖變數以主張鎖的所有權,並且隨後儘管擁有鎖的線程具有鎖的所有權,檢查鎖變數的其他線程可決定已經主張鎖並且因此可能不進入與彼位址區域交互的代碼區。此種基於鎖的方法可以被看作是封閉式,原因在於預設的每個線程假設該線程不可以進入存取共享資源的代碼區,因為除非該線程具有鎖的所有權(從而保證可以不發生衝突),否則可能發生與另一線程的衝突。然而,鎖識別符可經常控制對數個資源(例如,位址範圍)的獨佔式存取,並且因此不保證若一個線程正在存取由鎖變數保護的資源集合內的某些資源,則另一線程將明確地存取相同資源。因此,在線程之間的衝突極少的情形中,基於鎖的方法可導致效能損失,因為線程可不必要地在進入使用共享資源的代碼的臨界區之前等待釋放鎖。
用於處理存取共享資源之線程之間的衝突的更加開放式方法可以係使用交易記憶體支援。一種資料處理系統可具有支援在由處理電路處理的資料線程內執行交易的電路。交易可係在標記交易開始的交易開始指令與標記交易結束的交易結束指令之間執行的彼等線程指令。在交易開始與結束指令之間,處理電路可推測性地執行插入指令,並且防止提交彼等推測性地執行的指令的結果,直至到達交易結束指令。在執行交易開始指令之後(但在到達交易結束指令之前)發生異常終止事件可導致交易異常終止並且丟棄推測結果。可存在異常終止交易的數種原因,但一種原因可係所偵測的與另一線程進行的記憶體存取衝突。因此,利用此方法,每個線程可開放式地開始處理代碼的臨界區,從而假設將不發生與其他線程的衝突,並且隨後若在未偵測到任何衝突的情況下到達臨界區的結束,則可以提交交易結果。在衝突極少的情形中,使用交易記憶體支援可以藉由允許更多線程同時處理其代碼臨界區來改進效能(與基於鎖的方法相比)。
至少一些實例提供了一種設備,包含: 處理電路,用於處理資料處理線程;以及 交易記憶體支援電路,用於支援在由處理電路處理的線程內執行交易,該交易包含在交易開始指令與交易結束指令之間推測性地執行的線程指令,對此處理電路經構造為防止提交推測性地執行的指令的結果,直至到達交易結束指令,該交易記憶體支援電路包含衝突偵測電路,用於回應於偵測到從另一線程到針對該交易追蹤的位址的工作集中的一個的衝突存取而觸發交易異常終止;其中: 回應於規定給定位址的獨佔式載入指令,處理電路經構造為針對給定位址設定獨佔式監控指示; 回應於規定給定位址的獨佔式儲存指令,處理電路經構造為當給定位址不再具有獨佔式監控指示集時返回獨佔式儲存失敗指示; 回應於規定在給定交易內執行的載入靶位址的預定類型的載入指令,處理電路經構造為觸發清除先前針對載入靶位址設定的任何獨佔式監控指示;以及 回應於該獨佔式載入指令,處理電路及交易記憶體支援電路中的至少一個經構造為觸發交易異常終止,對此將給定位址規定為位址的工作集中的一個。
至少一些實例提供了一種資料處理方法,包含: 回應於規定給定位址的獨佔式載入指令,針對給定位址設定獨佔式監控指示; 回應於規定給定位址的獨佔式儲存指令,當給定位址不再具有獨佔式監控指示集時返回獨佔式儲存失敗指示; 回應於在交易內執行的規定載入靶位址的預定類型的載入指令,清除先前針對載入靶位址設定的任何獨佔式監控指示,交易包含在交易開始指令與交易結束指令之間推測性地執行的給定線程的指令,對此防止提交推測性地執行的指令的結果,直至到達交易結束指令,其中交易將回應於偵測到從另一線程到針對交易追蹤的位址的工作集中的一個的衝突存取而異常終止;以及 回應於該獨佔式載入指令,觸發交易異常終止,對此將給定位址規定為位址的工作集中的一個。
至少一些實例提供了一種用於控制主資料處理設備以提供用於執行資料處理線程的指令執行環境的電腦程式;該電腦程式包含: 處理程式邏輯,用於處理資料處理線程;以及 交易記憶體程式邏輯,用於支援在由處理程式邏輯處理的線程內執行交易,該交易包含在交易開始指令與交易結束指令之間推測性地執行的線程指令,對此處理程式邏輯經構造為防止提交推測性地執行的指令的結果,直至到達交易結束指令,該交易記憶體程式邏輯包含衝突偵測程式邏輯,用於回應於偵測到從另一線程到針對該交易追蹤的位址的工作集中的一個的衝突存取而觸發交易異常終止;其中: 回應於規定給定位址的獨佔式載入指令,處理程式邏輯經構造為針對給定位址設定獨佔式監控指示; 回應於規定給定位址的獨佔式儲存指令,處理程式邏輯經構造為當給定位址不再具有獨佔式監控指示集時返回獨佔式儲存失敗指示; 回應於規定在給定交易內執行的載入靶位址的預定類型的載入指令,處理程式邏輯經構造為觸發清除先前針對載入靶位址設定的任何獨佔式監控指示;以及 回應於該獨佔式載入指令,處理程式邏輯及交易記憶體程式邏輯中的至少一個經構造為觸發交易異常終止,對此將給定位址規定為位址的工作集中的一個。
至少一些實例提供了一種互連,包含: 複數個介面,用於與複數個處理元件交換訊息;以及 控制電路,經構造為管理在複數個處理元件之間的相干性;其中: 回應於來自給定處理元件的獨佔式監控設定訊息,該訊息指示用於追蹤對給定位址的獨佔式存取的與給定位址相關聯的獨佔式監控指示的設定,控制電路經構造為觸發介面將獨佔式監控設定訊息發送到至少一個其他處理元件;以及 回應於從第一處理元件接收的預定類型的讀取請求,該讀取請求請求返回與由第一類型的讀取請求規定的靶位址相關聯的讀取資料值,控制電路經構造為觸發介面將獨佔式監控取消訊息發送到至少一個其他處理元件以觸發取消與靶位址相關聯的任何獨佔式監控指示。
下文揭示了一些具體實例。將瞭解,申請專利範圍不限於此等具體實例。
處理電路可具有用於支援在由處理電路處理的線程內執行交易的交易記憶體支援電路。交易包含在交易開始指令與交易結束指令之間推測性地執行的線程指令。處理電路可防止提交推測性地執行的指令的結果,直至到達交易結束指令。交易記憶體支援電路可包括衝突偵測電路,用於回應於偵測到從另一線程到針對交易追蹤的位址的工作集中的一個的衝突存取而觸發交易異常終止。
由於交易記憶體支援電路提供了在交易內推測性地執行指令,使得若交易不得不異常終止,則推測結果可以展開,所以不必使用鎖變數來避免在執行交易的兩個線程之間的衝突。然而,亦可能存在基於非交易的方法中執行的一些線程。例如,此種非交易線程可以係執行最初在不使用交易(不包含任何交易開始/結束指令)的情況下寫入或編譯的代碼區的線程。或者,非交易線程可包括先前以基於交易的模式處理指令的線程,但對此交易遇到頻繁的異常終止事件(例如,歸因於與其他線程的衝突),並且因此處理現在已切換到基於非交易的模式。為了簡明起見,下文使用的術語「非交易線程」指完全不使用交易的線程或當前正執行在對使用交易執行的某一數量的嘗試已經失敗時選擇的後退路徑的交易線程。
若此種非交易線程需要對至少一個靶資源的獨佔式存取,則鎖變數可經常用於控制對至少一個靶資源的獨佔式存取。與直覺相反,交易線程仍可需要檢查在基於交易的碼路徑內(不僅在後退碼路徑中)的鎖變數,因為為了確保任何非交易線程的正確結果,應當防止交易線程提交涉及在非交易線程保持鎖時寫入共享資源的交易。由此,甚至經常在以交易模式執行的線程交易內,交易仍可包括用於檢查鎖變數以決定任何其他線程是否保持對資源的獨佔式存取的指令,並且若鎖當前由另一線程保持,則推遲後續操作,從而防止提交交易、或異常終止交易。
一種用於非交易線程以檢查並獲取鎖的方式可以使用獨佔式載入及獨佔式儲存指令。當執行規定給定位址的獨佔式載入指令時,處理電路可針對給定位址設定獨佔式監控指示。獨佔式載入指令亦可返回從對應於給定位址的儲存位置讀取的值。當執行規定給定位址的獨佔式儲存指令時,當給定位址不再具有獨佔式監控指示集時,處理電路可返回獨佔式儲存失敗指示。另一方面,當獨佔式監控指示仍在執行獨佔式儲存指令時設定時,則可執行儲存操作以將更新值寫入給定位址,並且可返回獨佔式儲存成功指示。各種事件可以觸發清除先前設定的獨佔式監控指示,諸如執行儲存操作以更新與給定位址相關聯的資料值的另一線程、或執行規定給定位址的另一獨佔式載入指令的另一線程。需要清除先前設定的獨佔式監控指示的事件追蹤可藉由資料處理系統的微架構執行,而不需要在用於檢查此等事件的程式碼中執行明確指令。因此,非交易線程可以使用獨佔式載入指令來讀取鎖變數並且設定獨佔式監控器,並且隨後後續的獨佔式儲存指令可以藉由將更新值寫入鎖變數來嘗試主張鎖,並且若同時另一線程已主張鎖(因為此情況下可不再設定獨佔式監控器),則後續的獨佔式儲存指令可失敗。使用獨佔式監控指示來支援獨佔式載入及儲存指令可以簡化在線程之間強行執行互斥。
因此,一些線程可使用由獨佔式載入/儲存指令使用的獨佔式監控指示以強行執行一些資源的互斥,從而預留當前線程的資源,使得在沒有來自另一線程的干擾的情況下可以原子地使用該資源。其他線程可使用交易記憶體來強行執行在線程之間的此種互斥。為了確保在交易與非交易線程之間的正確交互,交易線程可包括用於檢查由非交易線程中的獨佔式載入/儲存指令存取的鎖變數的指令。
然而,發明者認識到,在一些情況下,即使交易被佈置為檢查鎖變數並且若另一線程已經保持鎖,則防止寫入正提交的共享資源,此舉可以有時導致與使用獨佔式載入及儲存指令來強行執行互斥的線程的互斥損失。這是因為一些微架構在已知是否確實需要載入之前可支援推測性地執行載入指令。因此,在一些情形中,處理電路的微架構可以將非交易線程的後續載入指令拉到檢查較早的獨佔式儲存指令是否已成功地完成的指令之前。若所有線程係使用獨佔式載入/儲存指令以強行執行互斥的非交易線程,則這不是問題,因為最終若決定獨佔式儲存指令失敗,則將決定已經推測性地執行的後續載入指令已不正確地執行,並且可以丟棄彼載入的任何結果。
然而,若亦存在使用交易執行以強行執行互斥的其他線程,則交易可能在不按順序推測性地執行的較新獨佔式載入指令與設定鎖的較早獨佔式儲存指令之間的週期內開始並且結束。在此事件中,互斥可能丟失,因為交易將不偵測非交易線程的動作,因為當過去執行交易時鎖尚未由非交易線程主張,而且非交易線程將不偵測交易線程,因為交易線程本身將通常不主張鎖,除非其藉助於基於鎖的後退碼路徑。由此較新載入的推測性執行將被允許提交,並且可致使非交易線程使用在執行交易之前存在的共享資源的陳舊值而非由交易提供的更新值。因此,交易效果可有效地丟失,並且可存在違反互斥。
一種減輕此問題的可能方式可係在與非交易線程相關聯的代碼內包括推測障礙指令。推測障礙指令可需要不允許處理電路的微架構在障礙指令之後執行任何指令,直至在障礙之前的所有較早指令已完成。藉由在用於主張鎖的獨佔式儲存指令之後並且在載入與代碼的臨界區相關聯的共享資料的後續載入指令之前包括障礙,此舉防止將後續載入推測性提升到獨佔式儲存指令之前,使得在已讀取與代碼的臨界區相關聯的任何值之前已知獨佔式儲存指令的結果。這意味著即使交易線程使用相同的共享資源開始交易並且在解析獨佔式儲存指令之前完成交易,非交易線程的後續載入將載入獲自交易完成的值而非在已執行交易之前存在的值,以維持互斥。
然而,包括此種障礙的問題係這可以降低非交易線程的效能,這是由於在不存在與交易線程的衝突的情形中,可防止以較早時序推測性地執行稍後載入,此舉可以藉由非必要地延遲對記憶體的存取來降低效能。此外,重寫代碼以包括此種額外障礙指令可導致相對高的軟體發展及分配額外負擔。例如,針對不具有交易記憶體支援的系統寫入的使用獨佔式載入及儲存指令寫入以強行執行互斥的傳統碼可以不再安全地在支援交易記憶體的系統上執行,並且因此將需要重寫此種代碼以包括可能不期望的障礙。
避免需要推測障礙的方式係提供預定類型的載入指令,當在規定載入靶位址的給定交易中執行時,該預定類型的載入指令觸發處理電路,以觸發清除先前回應於獨佔式載入指令針對載入靶位址設定的任何獨佔式監控指示。在實施獨佔式載入/儲存的比較系統中,由於將不期望載入改變在與獨佔式監控指示相關聯的位址處的資料值,載入位址(已經對其設定獨佔式監控指示)將通常不導致清除獨佔式監控器,並且因此將不認為處於干擾對獨佔式監控器所追蹤的位址的存取獨佔性的風險。然而,藉由當在交易內執行預定類型的載入時清除獨佔式監控指示,這意味著即使交易在已執行獨佔式儲存指令以在非交易線程中主張鎖之前執行,非交易線程可以偵測交易的介入行為,從而防止損失互斥(由於甚至在已經推測性地執行來自臨界區的載入的情形中,獨佔式儲存指令的最終失敗將防止非交易線程使用共享資源的陳舊值來用臨界區繼續進行)。
此外,回應於獨佔式載入指令,處理電路及/或交易記憶體支援電路可觸發交易的異常終止,對此將由獨佔式載入指令規定的給定位址規定為與交易相關聯的位址的工作集中的一個。這意味著即使在交易線程與非交易線程之間的相對時序係使得在非交易線程中執行獨佔式載入指令並且在非交易線程中執行載入推測之前開始交易(這可以導致在交易線程已更新共享變數之前推測性地執行共享變數的載入),藉由異常終止交易,防止發生針對交易線程更新共享變數,以確保互斥。一旦已經執行由非交易線程中的臨界區進行的更新,交易可稍後再次嘗試。
因此,無論在非交易線程中執行獨佔式載入/儲存指令與在交易線程中的交易之間的相對時序如何,即使不按順序推測性地執行一些載入指令,亦可以強行執行互斥。這允許在線程之間的安全交互工作依賴於獨佔式監控指示以及使用交易的線程,而不需要重寫非交易代碼以包括額外障礙。
在此申請案中論述的技術可以在具有單個處理元件的設備中使用。例如,單個處理元件可以時間共享方式處理多個資料處理線程,或者可以使用同時多線程(simultaneous multi-threading; SMT),其中來自多個線程的指令在處理管線中同時存在,劃分的暫存器集合同時追蹤多個線程的架構狀態。
然而,此技術在處理電路包括可以並行執行多個處理線程的多個處理元件(例如,處理器核心,CPU或GPU)的系統中係特別有用的。在具有多個處理元件的系統中,一個處理元件可能與執行非交易線程的另一處理元件並行地執行交易線程。在此情形中,如上文論述的衝突類型以及由非交易線程內的推測導致的互斥的潛在損失可以係更可能的,並且可以藉由上文論述的技術緩和。
在其中處理電路具有兩個或多個處理元件的系統中,則當獨佔式載入指令在給定處理元件上執行時,給定處理元件可觸發將訊息發送到至少一個其他處理元件,該訊息指示已針對由獨佔式載入指令規定的給定位址設定獨佔式監控指示。通常在支援獨佔式監控器的系統中,儘管要求清除獨佔式監控指示的事件可能廣播到多處理器系統內的其他處理元件,將獨佔式監控指示的設定廣播到其他處理元件並不常見。然而,藉由發送指示將獨佔式監控指示設定到至少一個其他處理元件的訊息,此舉允許交易在另一處理元件上執行,該另一處理元件在如上文論述的待異常終止的位址的其工作集中具有給定位址。
在一些實施方式中,指示已設定獨佔式監控指示的訊息可以廣播到除了已執行獨佔式載入指令的給定處理元件之外的所有其他處理元件。然而,在其他情形中,可能不必將訊息發送到所有其他處理元件。例如,一些處理元件可能不具有交易記憶體支援電路,並且因此不可以執行交易,在此情形中不必將訊息發送到此種處理元件。此外,在一些情形中,連接各個處理元件的互連可以包括用於追蹤哪些處理元件正在執行交易或哪些位址由處理元件快取/存取的監聽過濾器或其他邏輯,並且因此可能由互連內保持的資料決定給定位址是否可以在給定的處理元件上針對交易追蹤的位址的工作集內,在此情形中,可以針對當前不處理任何交易或者可以由互連中的邏輯決定為具有不包括給定位址的位址工作集的處理元件來省略獨佔式監控取消訊息。
類似地,當預定類型的載入指令在給定處理元件上執行時,給定處理元件可觸發將訊息發送到至少一個其他處理元件以指示應當清除先前由至少一個其他處理元件針對載入靶位址設定的任何獨佔式監控指示,以甚至在針對非交易線程執行的載入推測存在時,確保跨處理元件維持互斥。
回應於在給定交易內執行的預定類型的載入指令,處理電路可將載入靶位址添加到針對給定交易的位址的工作集。這意味著,若非交易線程隨後嘗試執行獨佔式載入指令以針對相同位址設定獨佔式監控器,則交易異常終止以維持互斥。
在一些實例中,追蹤位址的工作集可包括分開地追蹤位址的讀取集(表示由交易讀取的位址)、以及位址的寫入集(表示由交易寫入的位址)。例如,位址的讀取/寫入集可以藉由在快取記憶體中設定旗標來追蹤,從而指示相關聯的快取記憶體線是否係分別針對給定交易的讀取集或寫入集的部分。在分開地追蹤讀取及寫入集的實施方式中,預定類型的載入可觸發將載入靶位址添加到位址的讀取集,並且執行獨佔式載入指令可觸發異常終止交易,對此由獨佔式載入指令規定的給定位址係在針對彼交易追蹤的讀取集內。
執行預定類型的載入指令亦可致使具有在其寫入集內規定的載入靶位址的其他交易異常終止。具有在其寫入集中規定的載入靶位址的其他交易可繼續預定類型的載入指令的未異常終止的以下執行。實際上,針對預定類型的載入指令的期望用例可係讀取由非交易線程使用的鎖變數,因此交易線程將需要寫入鎖變數(除非落回到非交易後退路徑)係不太可能的,因此預定類型的載入指令的位址將在針對交易追蹤的寫入集內係不太可能的。因此,在多個交易各者正讀取相同的鎖變數的情況下,多個交易可以並行處理而不讀取鎖變數,從而導致另一交易異常終止,以允許並行處理交易,而不會不必要地序列化作為檢查鎖變數的結果引入的交易。
除了預定類型的載入指令之外,處理電路亦可支援第二類型的載入指令,當在給定交易內執行時,該第二類型的載入指令觸發處理電路保持先前針對載入靶位址設定的任何獨佔式監控指示。藉由區分不同類型的載入指令,此舉避免了在交易中的每次載入致使清除先前設定的獨佔式監控器,這由於其將導致獨佔式儲存指令的更頻繁失敗而可以導致效能損失。儘管回應於載入而清除獨佔式監控器可適用於載入鎖變數以防止當交互工作如上文論述的交易及非交易線程時由載入推測導致的潛在排斥損失,針對其他載入操作,由於讀取值本身不足以打斷由獨佔式監控器指示的存取獨佔性(由於讀取將不改變在與獨佔式監控器相關聯的位址處儲存的資料值),可較佳地保持獨佔式監控器。例如,預定類型的載入指令可以用於存取由其他非交易線程使用的鎖變數以主導對共享資源的存取的交易內的代碼部分,而針對實際上從共享資源載入所關注資料的交易內的載入,第二類型的載入指令可以用於不得不原子地執行的代碼的臨界區。
執行獨佔式載入及儲存交易的處理電路可支援推測性地執行載入指令的給定線程,用於在處理電路已解析用於控制對靶位址的獨佔式存取的鎖變數是否已經由給定線程成功地主張之前從靶位址載入資料值。換言之,載入推測可導致在解析條件指令之前執行載入指令,該條件指令評估是否已成功地執行獨佔式儲存指令。此種載入推測可以改進效能。上文論述的方法可以確保即使執行此種推測,非交易及交易線程仍可實現互斥。
交易記憶體支援電路可具有數種形式。各種異常終止事件可致使衝突偵測電路在到達其交易結束指令之前觸發交易的異常終止。一個實例可以係衝突偵測電路何時偵測到從另一線程到針對第一線程的交易追蹤的位址的工作集中的一個的衝突存取,該衝突存取可觸發異常終止第一線程的交易。可以導致交易異常終止的其他事件可以包括:執行不允許在交易內執行的指令類型;發生異常事件或中斷;或執行規定如上文論述的位址的工作集內的位址的獨佔式載入指令。
除了衝突偵測電路之外,交易記憶體支援電路亦可包括其他元件。例如,交易記憶體支援電路可以包括用於儲存針對至少一個交易推測性地執行的指令的結果的推測結果儲存電路及/或用於儲存回應於交易的交易開始指令捕獲的架構狀態的復原狀態儲存電路,若交易異常終止,該復原狀態儲存電路可以復原。例如,推測結果儲存電路可以緩衝儲存指令的結果,直至回應於交易結束指令而提交交易,使得在交易內推測性地執行的儲存指令不污染記憶體系統,直至已知可以提交交易。在當交易異常終止時狀態需要展開至較早執行點的情形中,復原狀態儲存電路可以例如包括用於保持在交易開始時存在的狀態檢查點的暫存器組內的暫存器。或者,復原狀態可以使用暫存器重命名維持以在與儲存當前架構狀態的暫存器相同的暫存器檔案內追蹤舊的設置檢查點的架構狀態。
異常終止交易的另一可能原因可能係若交易記憶體支援電路耗盡資源,使得不再可能保證交易將在沒有衝突的情況下正確地繼續進行。例如,若待在推測結果儲存電路中儲存的推測結果的數量超過所提供的儲存器內可用的容量,則可以異常終止交易。
在異常終止交易時,可能至多軟體來決定是否再次嘗試執行交易,或使用非交易後退路徑替代(例如,使用鎖及獨佔式載入/儲存指令)。然而,處理電路的微架構可以提供提示以指示交易異常終止的可能原因,該等提示可以由軟體用於決定是否值得再次嘗試執行交易或使用後退路徑(例如,若異常終止的原因係使得任何將來嘗試將可能失敗)。
可提供對應的電腦程式用於控制主資料處理設備提供用於執行資料處理線程的指令執行環境,該電腦程式包含用於處理資料處理線程的處理程式邏輯以及用於支援在由處理程式邏輯處理的線程內執行交易(以與支援上文針對硬體實施例論述的交易類似的方式支援)的交易記憶體程式邏輯。交易記憶體程式邏輯可包含衝突偵測程式邏輯,用於當偵測到從另一線程到針對交易追蹤的位址的工作集中的一個的衝突存取時觸發交易異常終止。電腦程式的程式邏輯可以與如上文論述的對應處理電路及交易記憶體支援電路類似的方式回應於執行獨佔式載入/儲存指令並且回應於預定的載入指令。
因此,可將存在的電腦程式提供到在電腦程式之上執行的軟體,這係與將由具有上文論述的特徵的實際硬體設備提供的指令環境類似的指令環境,儘管可能不存在在執行電腦程式的主電腦中提供此等特徵的任何實際硬體。而是,可例如為模擬器或虛擬機器的電腦程式可藉由提供程式邏輯(諸如指令集或資料結構)來模擬硬體架構的功能性,該程式邏輯使通用主資料處理設備能夠執行代碼,意欲用於以與將在具有交易記憶體支援的設備上達成的結果相容的方式在具有交易記憶體支援的設備上執行。
亦可提供具有用於與相應的處理元件交換訊息的數個介面以及用於管理在處理元件之間的相干性的控制電路的互連。回應於來自給定處理元件的獨佔式監控設定訊息,該訊息指示用於追蹤對給定位址的獨佔式存取的與給定位址相關聯的獨佔式監控指示的設定,控制電路可觸發介面將獨佔式監控設定訊息發送到至少一個其他處理元件。回應於從第一處理元件接收的預定類型的讀取請求,該讀取請求請求返回與由第一類型的讀取請求規定的靶位址相關聯的讀取資料值,控制電路可觸發介面將獨佔式監控取消訊息發送到至少一個其他處理元件以觸發取消與靶位址相關聯的任何獨佔式監控指示。
因此,儘管習知互連將獨佔式監控指示的設定不正常地廣播到其他處理元件,藉由這樣做,此舉使其他處理元件能夠執行與其讀取集中的給定位址的交易以異常終止交易,從而確保互斥,即使設定獨佔式監控指示的非交易線程使用載入推測來不按順序地執行載入共享資源。此外,在給定處理元件處執行的預定載入指令可觸發給定處理元件發佈第一類型的讀取請求,這導致互連將獨佔式監控取消訊息轉發到其他處理元件,再次幫助維持在非交易與交易線程之間的互斥。
第1圖示意性地示出具有處理電路4的資料處理系統2的實例,該處理電路支援數個資料處理線程的執行。在此實例中,處理電路4包括數個獨立的處理元件6,該等處理元件均可以彼此並行地執行對相應處理線程的執行。每個獨立的處理元件6可例如係中央處理單元(central processing unit; CPU)、圖形處理單元(graphics processing unit; GPU)或能夠執行指令的任何其他可程式設計單元。每個處理元件可具有用於從記憶體系統20、16快取資料的至少一個快取記憶體8,其中在快取記憶體8中存取資料需要與從記憶體系統存取資料相比較少的潛時。
提供互連10以管理在處理元件6之間的通訊,並且管理在處理元件6的相應快取記憶體8中的資料之間的相干性。互連10具有用於與獨立的處理元件6進行通訊的數個介面12、以及用於與記憶體裝置16(諸如DRAM或非揮發性記憶體)進行通訊的記憶體裝置介面14。互連10具有用於由處理元件6追蹤對資料的讀取或寫入請求並且回應請求來維持相干性的相干性控制單元18,例如,相干性控制電路18可藉由將監聽訊息發送到其他處理元件來控制互連10回應於讀取或寫入請求,該等其他處理元件查詢在其他處理元件的本端快取記憶體8中快取的資料狀態,及/或請求返回及/或無效針對對應位址快取的資料。例如,當一個處理元件嘗試在唯一狀態下將資料讀取到其快取記憶體中時,其中可以在不發佈對互連的進一步請求的情況下寫入資料,隨後相干性控制器18可檢查其他處理元件是否保持彼資料並且若必要的話,使其從其他處理元件8無效。在一些情形中,可在互連內提供監聽過濾器及/或系統快取記憶體20。若提供系統快取記憶體,則該快取記憶體可從記憶體16快取資料用於與不得不總是從記憶體擷取資料的情況相比較快的存取(但具有與資料在處理元件8的本端快取記憶體中相比較長的潛時)。監聽過濾器可部分或完全追蹤在每個處理元件的快取記憶體8中快取的資料,使得需要發送的相干性訊息的數量可以減少(例如,若已知處理元件不保持所需資料,則可以省略針對給定處理元件的監聽請求)。在一些情形中,可使用共享儲存結構實施系統快取記憶體及監聽過濾器(例如,藉由追蹤與系統快取記憶體20的每個快取記憶體線相關聯的位元來表示的監聽過濾器,該監聽過濾器指示資料是否亦在每個處理元件的快取記憶體8中快取)。任何已知的相干性協定可由互連10用於管理在處理元件之間的相干性。例如,可以使用由Cambridge,UK的Arm® Limited提供的AMBA® ACE或CHI協定。
第2圖更詳細地圖示了處理元件6中的一個的一部分的實例。處理元件6具有用於執行指令以進行資料處理操作的處理邏輯104。例如,處理邏輯104可包括:用於執行各種類型的處理操作的執行單元,諸如用於進行算術或邏輯運算(諸如加法、乘法、AND、OR等)的算術/邏輯單元(arithmetic/logic unit; ALU);用於對浮點運算元執行運算的浮點單元;或用於對包含多個資料元件的向量運算元進行向量處理的向量處理單元。提供了用於儲存由處理邏輯104執行的指令的運算元並且用於儲存所執行指令的結果的一組架構暫存器106。指令解碼器108解碼從指令快取記憶體110擷取的指令以產生控制訊號10,用於控制處理邏輯104或資料處理設備102的其他元件執行相關操作。亦提供載入/儲存單元112以執行載入操作(回應於由指令解碼器108解碼的載入指令)來將資料值從1階或2階快取記憶體114、116或主記憶體16載入架構暫存器106中,並且執行儲存操作(回應於由指令解碼器108解碼的儲存指令)來將資料值從架構暫存器106儲存到快取記憶體114、116或主記憶體16。注意到,第1圖所示的本端快取記憶體8可以對應於第2圖的1階指令及資料快取記憶體110、114或2階快取記憶體116中的任一個。
設備102亦具有交易記憶體支援電路120,該交易記憶體支援電路提供用於支援硬體交易記憶體(hardware transactional memory; HTM)的各種資源。在交易記憶體支援電路120中的HTM資源可包括例如用於儲存交易的推測結果的推測結果儲存器122、用於追蹤由交易存取的位址的位址追蹤電路124、用於偵測在由交易進行的資料存取與由其他線程進行的資料存取之間的衝突使得當偵測到衝突時交易可以異常終止的衝突偵測電路126、以及用於儲存在交易開始時來自架構暫存器106的架構狀態資料的快照使得當交易異常終止時此狀態可以復原以覆寫交易的推測結果的復原狀態儲存電路128。儘管在第2圖中將位址追蹤電路124圖示為分開的部件,在一些實例中,其可以使用追蹤在交易中是否已經讀取或寫入給定位址的1階或2階快取記憶體114、116的每個快取記憶體線中的元資料來實施。在一些情形中,位址的分開的讀取及寫入集可以針對給定交易由位址追蹤電路124區分。
此外,資源可包括用於儲存追蹤交易嵌套水準的嵌套深度值的嵌套深度暫存器132。程式設計器或編譯器能夠定義嵌套交易(其中在第一交易開始指令之後但在對應於第一交易開始指令的交易結束指令之前遇到第二交易開始指令)可以是有用的。此舉可適用於確保原子地處理代碼的臨界區,即使存在超出第一交易開始指令之外的到代碼之部分的分支。然而,為了避免不得不在推測結果儲存器中捕獲架構狀態的多個檢查點,一些微架構可有效地忽略嵌套交易集的「內部」交易,並且僅回應於第一交易開始指令捕獲架構狀態的檢查點。在交易結束指令之前出現的任何後續交易開始指令可有效地忽略,除了嵌套深度暫存器132可遞增以追蹤已經遇到多少交易開始指令,使得在遇到交易結束指令時,微架構可以追蹤哪個交易結束指令關於嵌套交易集的外部交易。因此,當遇到交易技術指令時,若嵌套深度係一或更多,則忽略交易結束指令,並且若嵌套深度係零(指示交易係嵌套集合的外部交易),則提交交易。
第2圖圖示了具有交易記憶體支援電路120的處理元件的實例。在一些情形中,第1圖所示的系統2的若干處理元件6可具有此種交易記憶體支援電路120。然而,所有處理元件6具有交易記憶體支援電路不必的-可存在一些不能夠執行交易的處理元件。此外,儘管第2圖圖示了在獨立處理元件6的微架構內的交易記憶體支援電路120,這不是必要的。在一些情形中,一些交易記憶體資源可以在處理元件之間共享-例如,可以提供用於捕獲復原狀態128或追蹤位址124的一些共同儲存器,該共同儲存器可經共享來在多個處理元件之間使用。
第3圖圖示了使用交易記憶體支援電路120及處理邏輯104在給定線程內執行交易的實例。交易係由交易開始指令(t開始)及交易結束指令(t提交)限定的程式碼區。如第3圖所示,回應於交易開始指令,捕獲在架構暫存器106中的當前架構狀態並且將其儲存在復原狀態儲存電路128中(針對嵌套交易,僅嵌套交易集的外部交易可觸發架構狀態的捕獲)。處理邏輯104開始執行在t開始指令之後的後續指令的推測性執行,並且由於執行此等指令,由彼等指令存取的位址由位址追蹤電路124追蹤,並且衝突偵測電路126偵測到在追蹤位址與回應於其他線程使用載入/儲存單元112進行存取的位址之間的衝突。在交易內的指令的至少一些推測結果在推測結果儲存電路122內儲存。例如,回應於儲存指令STR儲存到快取記憶體或記憶體的值可保持在推測結果儲存器122中,而交易仍然未決。若在不同時發生異常終止事件的情況下到達交易結束指令(t提交),則回應於交易結束指令,提交推測結果。在提交交易時,在推測結果儲存器122中針對彼線程儲存的任何結果可寫入資料快取記憶體114或記憶體116,並且可以丟棄或允許覆寫復原狀態128,這是由於不再需要將架構狀態展開至遇到交易開始指令之前的點。
另一方面,若發生異常終止事件,例如當由衝突偵測電路126偵測到衝突(當另一線程存取已經由交易存取的位址時)時,則觸發交易異常終止,並且將來自復原狀態儲存器128的復原狀態復原到架構暫存器106。異常終止事件的其他原因可以例如包括執行不允許在交易內執行的指令、在推測結果儲存器122或位址追蹤電路124內用於處理推測結果或由給定交易請求的位址的資源不足、或在交易期間接收到中斷。
第3圖圖示了處理操作的某一集合可如何使用交易開始及結束指令以交易模式執行。管理用於非交易線程的鎖的另一方式可係使用獨佔式監控器。處理電路4可支援使用獨佔式載入及獨佔式儲存指令,該等指令可以用於確保處理不繼續進行到後續代碼區,除非沒有其他處理與在執行獨佔式載入指令與執行獨佔式儲存指令之間的給定位址交互。回應於執行獨佔式載入指令,執行獨佔式載入指令的處理元件6觸發設定與獨佔式載入指令的靶位址相關聯的獨佔式監控指示。如第1圖所示,此獨佔式監控指示可以在處理元件本身內提供的本端獨佔式監控器30內或在互連內提供的全域獨佔式監控器32內保持。例如,若由獨佔式載入指令規定的位址係保證不由其他處理元件存取的不可共享位址,則可以使用本端獨佔式監控器30,而全域獨佔式監控器32可以用於可共享位址,該等可共享位址可以由多個處理元件6存取。在一些實施方式中,可能不必提供本端及全域獨佔式監控器30、32並且該等獨佔式監控器的功能可以結合。
針對獨佔式載入指令的靶位址設定的獨佔式監控指示可係允許本端/全域獨佔式監控器30、32偵測其應當監控可以指示不再保證對彼具體位址的獨佔式存取的事件(諸如由其他線程或其他處理元件觸發的對相同位址的儲存操作、或由另一線程或另一處理元件對相同位址執行進一步的獨佔式載入指令)的任何指示。在一些實施例中,每個位址區塊索引的儲存結果可以具有針對每個區塊設定的旗標,該旗標指示獨佔式監控器是否已針對彼區塊設定。然而,實際上,可需要對其設定獨佔式監控器的位址數量可係相對低的,因此更有效的實施方式可以簡單地提供儲存已對其設定獨佔式監控指示的位置的位址的一或多個暫存器。
在偵測到可以指示不再保證對給定位址的獨佔式存取的事件時,互連10可將指示已發生此種事件的訊息發送到每個處理元件,使得若已對相關位址設定任何獨佔式監控器,則可以清除獨佔式監控器。如何管理獨佔式指示的精確細節可係針對具體處理器實施方式選擇的具體微架構的態樣。因此,通常,架構可規定數個事件應當觸發清除獨佔式監控器,但由互連10發訊號通知或在獨佔式監控邏輯30、32內追蹤該等事件的精確方式可變化。
當獨佔式儲存指令由給定處理元件6執行時,處理元件6可檢查是否仍設定先前針對獨佔式儲存指令的請求位址設定的獨佔式監控指示,並且若設定,則儲存指令可成功地執行以資料儲存到給定記憶體位址並且處理元件亦可返回獨佔式儲存成功指示,諸如在暫存器中設定旗標以確認儲存已正確地完成。後續的條件指令可以隨後檢查獨佔式儲存成功指令以決定是否繼續進行後續代碼,該後續代碼使用對其需要獨佔式存取的資源。因此,藉由執行規定用於提供鎖變數的位址的獨佔式載入及儲存對,這可以提供保證在非交易線程中對代碼的一些後續區原子地存取的方式。若當已經清除獨佔式監控指示時執行獨佔式儲存指令,則返回獨佔式儲存失敗指示,這可以導致後續的條件指令使其條件碼失敗,從而防止程式流繼續進行超出彼條件指令,使得當不可以保證對較早資源的獨佔式存取時不進入代碼的臨界區。
在一些情形中,由於具有獨佔式監控指示集,獨佔式監控邏輯30、32僅可具有用於同時追蹤有限數量的位址的資源。例如,在一些實施方式中,獨佔式監控指示可以簡單地包含被認為對其設定獨佔式監控指示的單個位址的指示,並且若執行規定不同位址的另一獨佔式載入指令,則這可清除任何先前針對由較早的獨佔式載入指令規定的位址設定的指令。
因此,由處理電路4執行的一些線程處理可使用如第3圖所示的交易模式以對一定範圍的位址強行執行互斥,而其他線程可使用基於鎖的模式(該模式使用獨佔式載入及儲存指令)以在不使用交易的情況下強行執行原子地存取。例如,第4圖圖示了在代碼的臨界區開始處設定鎖並且隨後一旦完成臨界區即釋放鎖(在第4圖的步驟140處,獨佔式載入/儲存指令可以用於處理對鎖的讀取及主張)的方法。例如,可存在一些處理元件6,該等處理元件不具有硬體交易記憶體資源120並且因此受限於使用基於鎖的方法,而其他處理元件6可具有硬體交易記憶體資源120。此外,若針對彼等交易發生頻繁異常終止,則最初使用交易模式嘗試的線程可切換到使用非交易模式,該非交易模式使用鎖。例如,可存在保持遇到衝突的線程集,並且因此繼續針對所有彼等線程使用交易並非係有效的。因此,甚至當一個線程正使用與第3圖所示的交易模式類似的交易模式時,仍可存在需要使用基於鎖的機制的其他線程。此外,在交易模式中操作的線程仍可需要存取共享資源,該等共享資源亦由非交易線程存取。在一些情形中,非交易線程可實際上執行與交易線程相同的代碼,但該代碼在代碼內可具有交易及非交易路徑,這可取決於是否在先前情況已經發現交易係有效的來選擇(例如,若交易路徑保持異常終止,則軟體可切換到非交易路徑)。
由於可存在需要共享對由鎖保護的資源的存取的交易及非交易線程兩者,則有時交易線程仍可需要具有讀取鎖位址第一些指令,並且若當前主張或設定鎖,則異常終止交易或等待一段時間。儘管將不需要此種鎖檢查指令來確保正確處理交易線程本身,這是由於衝突檢查電路126將能夠偵測另一線程是否與交易衝突,並且若衝突,則異常終止交易以防止不正確結果,將需要鎖檢查來防止在另一線程保持鎖時提交交易結果,這可不利於非交易線程的操作。
處理電路4亦可支援指令的推測性執行,其中在已知是否確實應當完全執行一些指令或到指令的輸入是否正確之前,執行該等指令。例如,給定處理元件可具有用於在實際上決定結果之前預測條件分支指令的結果的分支預測器(分支結果可以取決於從記憶體系統載入的值或尚不可獲得的較早指令的結果),並且較遲指令可以基於預測的結果執行。若正確地預測分支,則這可以改進效能,但若存在誤預測,則可以丟棄任何推測性地執行的指令的結果,並且在暫存器106中的架構狀態可以展開到分支點,並且與正確分支結果相關聯的後續指令可以隨後執行。與解析誤預測相關聯的潛時代價可以超過在預測係正確的情形中使指令能夠盡快擷取、解碼及執行的效能增益。有時,此種推測性處理可導致載入指令從在已解析較早條件分支之前執行的記憶體系統8、20、16載入資料,該資料主導是否應當實際上已執行載入。在誤預測此分支的情形中,這可以導致在使用獨佔式載入/儲存指令在交易線程與非交易線程之間交互方面的問題,從而潛在地導致互斥損失。給出以下實例來說明此問題。
考慮到兩個處理元件(P0及P1),各者對某一變數x執行運算,對此需要互斥: P0 P1 lock() lock() x: = x+2 x := 1 unlock() unlock() 若x最初具有值0,則期望x的最終結果係以下任一者: ●1,若首先執行P0的更新,並且隨後P1作用於獲自P0的值x;或者 ●3,若首先執行P1的更新,並且隨後P0作用於獲自P1的值x。 最終結果2將係違反互斥,由於其將暗指在P1已開始處理x之後但在P1已將x之新值寫回記憶體之前,P0讀取x之當前值。將瞭解到,此實例係人為的,並且實際上由對共享的資料資源進行處理的每個線程執行的處理操作可係更加複雜的。然而,此簡化的實例可用於解釋該問題。
第5圖圖示了「自旋鎖」代碼實例,該實例圖示了在處理元件P0上執行的線程的潛在實施方式,其中獨佔式載入/儲存指令LDAXR、STXR用於檢查是否當前主張鎖,且若沒有其他線程已主張鎖,則該線程主張鎖(獨佔式監控邏輯30偵測在獨佔式載入指令與獨佔式儲存指令之間的週期中另一線程主張鎖的情況),並且因此檢查使用共享的「x」變數繼續進行處理是否安全。
第6圖及第7圖圖示了代碼實例,該實例圖示了其中在嘗試省略鎖時使用交易的替代實施方式。第7圖更詳細地圖示了第6圖所示的功能CHECK、WAIT_ACQ、LOCK、CHECK_ACQ、及UNLOCK。注意到,第6圖所示的代碼包括用於開始及提交交易的代碼,但亦包括若在執行交易時另一線程保持鎖則用於再次嘗試交易的後退代碼路徑(標識為「後退:」)以及若省略失敗(若交易已經不成功地再次嘗試某一次數)則執行的鎖定路徑(標識為「鎖:」)。如第7圖所示,在功能LOCK(Xx)中的鎖定路徑以與第5圖所示的實例類似的方式使用獨佔式載入/儲存指令。亦注意到,在第6圖中,在使用交易係成功(沒有保持鎖的其他處理)的事件中,則第6圖所示的代碼將進入臨界區,標識為「進入:」,而不曾主張鎖本身(儘管在CHECK(X1)處將鎖位址添加到交易的工作讀取集,不寫入鎖,除非在交易失敗的事件中執行鎖定路徑)。
如第8圖所示,執行第5圖的自旋鎖代碼的處理元件P0可執行鎖推測,以在已知是否應當實際上執行載入之前執行一些載入指令。這可以導致在解析條件分支之前執行載入共享變數x的載入指令(若尚未獲取鎖,則應當不執行載入指令),該條件分支測試獨佔式儲存指令是否成功(亦即,有時共享變數「x」的載入可在已實際上獲取鎖之前執行)。若所有處理元件正在使用相同機制(獨佔式載入/儲存指令)以確保互斥,這將係可接受的,如同稍後決定獨佔式儲存指令已經不成功,亦即,應當採取第8圖的條件分支指令CBNZ,則針對解析不正確推測所提供的機制將消除載入共享變數「x」以及任何後續指令的影響,並且基於正確分支結果重置處理,如同從未執行「x」變數的載入。這將確保再次嘗試迴圈,使得若任何其他線程已同時更新「x」變數,則第8圖所示的當前線程將讀取針對「x」的最後值,並且在獨佔式儲存指令STXR係成功的事件中當前線程的結果將僅提交到架構狀態,亦即,沒有其他線程導致回應於LDAXR指令在執行STXR指令以主張鎖之前清除獨佔式監控器集。
然而,若處理元件P0使用獨佔式載入/儲存指令來處理臨界區,而處理元件P1使用交易處理臨界區來省略鎖,則由處理元件P0不按順序地推測性執行「x」變數的載入可以導致違反互斥,例如,若由P0及P1執行的指令的相對時序如下: ●P0執行鎖變數的LDAXR(參見0=無),並且針對鎖變數位址設定獨佔式監控指示 ●P0執行x變數的LDR(參見0) … ●P1執行鎖變數的TSTART及LDR(參見0=無) ●P1執行x變數的STR(將其設定為1) ●P1執行TCOMMIT並且成功 … ●P0執行鎖變數的STXR(將其設定為1),並且獨佔式儲存係成功的,因為沒有對鎖變數的介入寫入已針對鎖變數位址保留來清除獨佔式監控指示集 ●P0執行x變數的STR(將其設定為2) ●P0執行鎖變數的STLR(將其設定為0)
因為x的最終值係2,此序列違反互斥。互斥違反係可能的,因為省略的(交易)路徑從未寫入鎖變數,因此由自旋鎖代碼設定的獨佔式監控器保持完整。載入推測可以藉由P0將臨界區載入提升到鎖儲存之前,並且因此若P1上的交易均在由P0儲存鎖之前開始及結束,則針對由P0載入的「x」的值在臨界區中係陳舊的(過期)。
解決此問題的一種方式可以係將推測障礙引入非交易自旋鎖中以防止將載入提升到較早條件分支之上。然而,此舉可能需要重寫已經針對不支援交易記憶體的系統寫入的眾多程式,這將係軟體開發者的不合理負擔。
可以確保與針對不支援交易記憶體的系統寫入的傳統碼的向後相容性的方法可以在架構中引入兩種額外的量測,以確保在交易與非交易線程之間的相容性。首先,當獨佔式載入指令在一個處理元件6上執行時,將針對由指令規定的位址的獨佔式指示的設定廣播到其他處理元件(至少具有HTM資源120的處理元件),使得在其位址的工作集(讀取集)中規定相同位址的任何交易異常終止。其次,引入一類新的交易載入指令(下文稱為預定類型的載入指令),當在交易內執行時,該交易載入指令將由載入指令規定的位址載入到工作位址的交易讀取集中,並且將訊號發送到互連10,該訊號請求清除任何先前針對相同位址設定的獨佔式監控指示。在第7圖的「CHECK(Xx)」功能內的載入指令LDR可以用預定類型的載入替換。
此等措施確保互斥,因為在上文所示的實例中,當在處理元件P1上的交易對鎖變數執行預定類型的載入時,此舉將藉由處理元件P0清除針對鎖變數的獨佔式監控指示集,並且因此當後續的獨佔式儲存指令STXR在處理元件P0上執行時,則此指令將失敗,因為不再設定獨佔式監控器。這意味著即使推測性執行導致將x變數的載入提升到在處理元件P1上執行交易之上,這是由於自旋鎖代碼在處理元件P0上失敗,自旋鎖代碼異常終止其當前嘗試使用x變數執行代碼的臨界區,並且隨後迴圈再一次返回到嘗試主張鎖,並且此時若鎖主張係成功的,則x變數的載入將參見獲自由處理元件P1上的交易提供的所提交更新的值,而非在執行交易之前讀取的陳舊值。
類似地,若在處理元件P0及P1上的操作之間的時序係不同的,使得在處理元件P0上的獨佔式載入指令之前發生在處理元件P1中將鎖變數載入交易內,則將獨佔式指示的設定廣播到其他處理元件,以允許其他處理元件異常終止交易,該交易在其由位址追蹤電路124追蹤的位址讀取集中具有相同位址。此舉防止互斥丟失,因為此時交易將失敗並且在鎖變數已經在處理元件P0上由自旋鎖代碼釋放之後的後續嘗試執行交易時,交易現將看到獲自在其他處理元件P0上成功地完成代碼的臨界區的x變數的值。
第9圖圖示了回應於規定給定位址X的獨佔式載入指令的方。獨佔式載入指令在步驟200處由給定處理元件6執行。作為回應,在步驟202處,處理元件6觸發針對位址X設定獨佔式監控指示。若已經到達可以同時對其設定獨佔式監控指示的位址的最大數量,則步驟202亦可觸發清除與先前設定的位址相關聯的獨佔式監控指示。
在步驟204處,針對位址X設定獨佔式監控器觸發其他處理元件6或線程清除已經針對位址X設定的任何獨佔式監控器及/或觸發全域獨佔式監控器32清除由其他處理元件或線程針對位址X設定的任何獨佔式監控器。此外,在步驟206處,在一個處理元件上針對位址X設定獨佔式監控器觸發與其位址的工作集(讀取集)中的位址X的任何交易異常終止。在一些情形中,步驟204及206所示的行為可由分開的訊息觸發,該等訊息由互連10路由的,或者替代地兩種行為可由相同的訊息觸發。
在步驟208處,回應於獨佔式載入指令,將來自位址X的資料載入執行獨佔式載入指令的處理元件6的暫存器中。例如,此資料可以從彼處理元件的快取記憶體8獲得、或從其他處理元件或互連10中的快取記憶體獲得、或從主記憶體16獲得。
第10圖圖示了處理由給定處理元件6處理的獨佔式儲存指令的方法。在步驟210處,規定給定位址X的獨佔式儲存指令由給定處理元件6執行。作為回應,在步驟212處,處理元件6決定獨佔式監控器是否已經由給定處理元件針對位址X設定。若否,則在步驟214處,返回獨佔式儲存失敗指示(例如,設定到暫存器的預定值),並且不執行儲存操作(在由獨佔式儲存指令規定的暫存器中的資料值不寫入快取記憶體或記憶體)。若用於給定處理元件的獨佔式監控器仍針對位址X設定,則在步驟216處,將來自由獨佔式儲存指令規定的暫存器的資料儲存到在與位址X相關聯的快取記憶體或記憶體中的位置,並且在步驟218處,處理元件返回獨佔式儲存成功指示,例如,將與在步驟214處的失敗情形中返回的值不同的值儲存到暫存器。例如,此值可以由後續的條件分支指令檢查以決定是否繼續進行到代碼區,該代碼區存取不得不對其強行執行互斥的資源。
第11圖圖示了處理儲存指令,該儲存指令不係獨佔式儲存指令。在步驟220處,規定位址X的儲存指令由給定處理元件執行,並且作為回應,在步驟222處,清除由其他線程或處理元件針對位址X設定的任何獨佔式監控指示。在步驟224處,在與位址X相關聯的位置處將來自由儲存指令規定的暫存器的資料儲存到快取記憶體或記憶體。亦可將儲存指令偵測為針對任何交易的衝突存取,該等交易規定在其由位址追蹤電路124追蹤的位址的讀取或寫入集中的位址X。
第12圖示出了處理由交易內的處理元件6執行的載入指令的方法。在步驟240處,載入指令在交易內執行,該載入指令規定給定的載入靶位址X。作為回應,在步驟242處,位址追蹤電路將位址X添加到其位址的工作集(讀取集)。在步驟244處,在其位址寫入集中具有位址X的任何其他交易異常終止(不必異常終止在其讀取集中具有位址X的交易)。
在步驟246處,識別載入指令的類型。若載入指令具有預定類型(獨佔式監控清除類型),則在步驟248處,執行載入指令的處理元件6向互連10發佈觸發清除由其他處理元件或線程針對位址X設定的任何獨佔式監控指示的讀取請求類型。另一方面,若載入類型係第二類型(非獨佔式監控清除類型)的載入指令,則在步驟250處,處理元件6發佈允許保留由其他線程或處理元件已經針對位址X設定的獨佔式監控器的讀取請求類型。無論載入指令類型如何,在步驟252處,當回應於讀取請求(從處理元件6的本端快取記憶體8,或者在從另一處理元件的快取記憶體8或主記憶體16擷取資料之後從互連10)返回資料時,將資料寫回由載入指令規定的暫存器106,並且若尚未在處理元件6的本端快取記憶體8中,則亦可分配到本端快取記憶體8中。
因此,藉由提供觸發清除獨佔式監控器的特殊類型的載入指令(不同於第二類型的載入),這使載入能夠檢查交易內的鎖變數以清除任何先前針對由非交易線程設定的鎖位址設定的獨佔式監控器,使得即使存在載入推測,亦可以維持互斥。
第13圖至第15圖圖示了在兩個處理元件PE0、PE1 (6)與互連10之間發送訊息的實例。在此等實例中,假設處理元件PE1正在執行檢查作為鎖變數的位址X的交易線程,並且PE0正在執行針對鎖變數位址X設定獨佔式監控指示的非交易線程(與上文所示的實例類似)。
第13圖圖示了處理第12圖所示的第二類型的載入指令。回應於第二類型的載入指令,PE1向互連10發佈規定載入指令的靶位址X的ReadShared請求。互連10發送出所請求的任何監聽訊息以至多識別針對位址X的資料的資料值,並且獲得資料,該資料可在另一處理元件6的本端快取記憶體8中或者在系統快取記憶體20或記憶體16內。互連10將資料返回到快取處於「共享」狀態的資料的處理元件6,該資料指示任何將來寫入資料將請求用互連檢查(由於在其他位置處保持的資料可需要在由PE1寫入其本端快取的複本的事件中無效)。利用第二類型的載入指令,不需要清除任何先前針對位址X設定的獨佔式監控指示。因此,若先前由非交易線程設定,則PE0可針對位址X保留任何獨佔式監控器。
第14圖圖示了處理預定類型的載入指令,回應於該載入指令,PE1將「ReadUnique」請求發送到互連10,其請求在進一步寫入資料可以在不用互連10檢查的情況下執行的狀態中將資料返回到PE1。ReadUnique訊息致使互連10將獨佔式監控取消訊息260發送到其他處理元件,在此實例中,該獨佔式監控取消訊息觸發PE0取消其已經針對位址X設定的獨佔式監控器。在已獲得資料之後,在不再次用互連10檢查的情況下允許寫入本端快取的資料的「Unique」狀態中將資料返回到PE1。ReadUnique訊息亦可觸發互連使快取的資料複本針對在系統的其他快取記憶體8、20中保持的位址X無效。
在其他實例中,除了使用在「Unique」狀態中返回資料的「ReadUnique」請求之外,可以由PE1回應於預定形式的載入指令將不同形式的相干性訊息發佈到互連10,該相干性訊息不在Unique狀態中返回資料(例如,替代地資料可以在「Shared」狀態中返回,其中需要到互連10的進一步訊息以便用於寫入待接受的快取資料,使得若必須的話,可以使其他的快取複本無效),但該相干性訊息仍觸發獨佔式監控取消訊息260確保取消先前針對位址X設定的獨佔式監控指示。實際上,用於預定類型的載入的期望用例係用於檢查鎖變數,對此在交易內不期望寫入,因此在「Unique」狀態中返回資料不是必要的。無論如何,藉由定義相干性訊息的形式來觸發回應於載入指令取消獨佔式監控器,此舉可以幫助在如上文論述的交易與非交易線程之間的交互工作。
第15圖圖示了當PE0執行將位址X規定為其靶位址的獨佔式載入指令時的訊息傳遞。作為回應,將獨佔式監控設定訊息270發送到互連10,該獨佔式監控設定訊息被傳遞到支援交易記憶體的任何其他處理元件6。回應於獨佔式監控設定訊息270,PE1異常終止在讀取集中具有位址X的交易。從PE0發送到互連10的獨佔式監控設定訊息270的形式可以與從互連10發送到其他處理元件6(諸如PE1)的獨佔式監控設定訊息的形式相同或不同。
第16圖示出可使用的模擬器實現方式。儘管先前描述的實施例關於用於操作支援相關技術的具體處理硬體的設備及方法來實施本技術,亦可能根據本文描述的實施例提供經由使用電腦程式來實施的指令執行環境。此種電腦程式經常被稱為模擬器,考慮到其提供硬體架構的基於軟體的實施方式。模擬器電腦程式的變化包括模仿器、虛擬機、模型和二進制轉換器,包括動態二進制轉換器。通常,模擬器實施方式可在主處理器330上運行,視情況運行主作業系統320,從而支援模擬器程式310。在一些佈置中,在硬體與所提供的指令執行環境之間及/或在相同主處理器上提供的多個不同指令執行環境之間可能存在多層模擬。歷史上,已經需要高效處理器提供以合理速度執行的模擬器實施方式,但此種方法可在某些情況下為合理的,諸如當需要運行另一處理器本端的代碼以獲得相容性時,或出於再使用的原因。例如,模擬器實施方式可提供具有不由主處理器硬體支援的額外功能的指令執行環境,或提供通常與不同硬體架構相關聯的指令執行環境。模擬的概述在「Some Efficient Architecture Simulation Techniques」,Robert Bedichek,Winter 1990 USENIX Conference,第53頁至第63頁中給出。
就此而言,實施例先前已經在模擬實施例中參考特定硬體構造或特徵進行描述,等效功能可由適當的軟體構造或特徵提供。例如,特定電路可在模擬實施例中實施為電腦程式邏輯。類似地,記憶體硬體(諸如暫存器或快取記憶體)可在模擬實施例中實施為軟體資料結構。在先前描述的實施例中參考的一或多個硬體元件存在於主硬體(例如,主處理器330)上的佈置中,一些模擬實施例可在適當時利用主硬體。
模擬器程式310可儲存在電腦可讀取儲存媒體(可係非暫時性媒體)上,並且向靶代碼300(其可包括應用、作業系統和超管理器)提供程式介面(指令執行環境),該程式介面與由模擬器程式310模型化的硬體架構的應用程式介面相同。因此,靶代碼300的程式指令(包括上文描述的預定類型的載入指令以及獨佔式載入/儲存指令)可使用模擬器程式310在指令執行環境內執行,使得實際上不具有上文論述的設備2的硬體特徵的主電腦330可以模仿此等特徵。模擬器程式310可包括處理程式邏輯312、交易記憶體程式邏輯314以及獨佔式監控程式邏輯316,從而提供分別對應於處理邏輯104、硬體交易記憶體資源120及獨佔式監控器30、32的功能性。
在本申請案中,詞語「經構造為……」用於意謂設備之元件具有能夠進行所定義操作的配置。在此上下文中,「構造」意謂硬體或軟體之互連的佈置或方式。例如,設備可具有提供所定義操作的專用硬體,或處理器或其他處理裝置可經程式設計以執行該功能。「經構造為」不暗指需要以任何方式改變設備元件以便提供所定義操作。
儘管已在本文中參考隨附圖式詳細描述了本發明之說明性實施例,應理解,本發明不限於彼等精確實施例,且熟習該項技術者可在其中實現各種變化及修改而不脫離由隨附申請專利範圍所定義之本發明的範疇及精神。
2‧‧‧資料處理系統 4‧‧‧處理電路 6‧‧‧處理元件 8‧‧‧快取記憶體 10‧‧‧互連 12‧‧‧介面 14‧‧‧記憶體裝置介面 16‧‧‧記憶體系統 18‧‧‧相干性控制單元 20‧‧‧記憶體系統 30‧‧‧本端獨佔式監控器 32‧‧‧全域獨佔式監控器 104‧‧‧處理邏輯 106‧‧‧架構暫存器 108‧‧‧指令解碼器 110‧‧‧指令快取記憶體 112‧‧‧載入/儲存單元 114‧‧‧快取記憶體 116‧‧‧快取記憶體 120‧‧‧交易記憶體支援電路 122‧‧‧推測結果儲存器 124‧‧‧位址追蹤電路 126‧‧‧衝突偵測電路 128‧‧‧復原狀態儲存電路 132‧‧‧嵌套深度暫存器 140‧‧‧步驟 200‧‧‧步驟 202‧‧‧步驟 204‧‧‧步驟 206‧‧‧步驟 208‧‧‧步驟 210‧‧‧步驟 212‧‧‧步驟 214‧‧‧步驟 216‧‧‧步驟 218‧‧‧步驟 220‧‧‧步驟 222‧‧‧步驟 224‧‧‧步驟 240‧‧‧步驟 242‧‧‧步驟 244‧‧‧步驟 246‧‧‧步驟 248‧‧‧步驟 250‧‧‧步驟 252‧‧‧步驟 260‧‧‧獨佔式監控取消訊息 270‧‧‧獨佔式監控設定訊息 300‧‧‧靶代碼 310‧‧‧模擬器程式 312‧‧‧處理程式邏輯 314‧‧‧交易記憶體程式邏輯 316‧‧‧獨佔式監控程式邏輯 320‧‧‧主作業系統 330‧‧‧主處理器
本技術的進一步態樣、特徵及優點將從結合附圖閱讀的實例之以下描述顯而易見,其中:
第1圖示意性示出了具有多個處理元件及互連的資料處理系統的實例;
第2圖圖示了包含交易記憶體支援電路的處理元件的實例;
第3圖示出了在具有交易記憶體支援的系統中處理交易的實例;
第4圖圖示了用於以使用鎖的非交易方式執行與第3圖的交易等效的操作的替代碼序列;
第5圖至第8圖圖示了示出在載入推測存在時在獨佔式載入/儲存指令與交易之間的交互可以如何導致互斥損失的代碼實例;
第9圖係圖示處理獨佔式載入指令的方法的流程圖;
第10圖係圖示處理獨佔式儲存指令的方法的流程圖;
第11圖係圖示處理儲存指令的方法的流程圖;
第12圖係圖示處理在交易內執行的載入指令的方法的流程圖;
第13圖至第15圖圖示了由互連支援的相干性訊息的實例;以及
第16圖圖示了可以使用的模擬器實施方式。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
6:處理元件
8:快取記憶體
30:本端獨佔式監控器
104:處理邏輯
106:架構暫存器
108:指令解碼器
110:指令快取記憶體
112:載入/儲存單元
114:快取記憶體
116:快取記憶體
120:交易記憶體支援電路
122:推測結果儲存器
124:位址追蹤電路
126:衝突偵測電路
128:復原狀態儲存電路
132:嵌套深度暫存器

Claims (12)

  1. 一種資料處理設備,包含:處理電路,用於處理資料處理線程;以及交易記憶體支援電路,用於支援在由該處理電路處理的一線程內執行一交易,該交易包含在一交易開始指令與一交易結束指令之間推測性地執行的該線程的指令,對此該處理電路經構造為防止提交該等推測性地執行的指令的結果,直至到達該交易結束指令,該交易記憶體支援電路包含用於回應於偵測到從另一線程到針對該交易追蹤的位址的一工作集中的一個的一衝突存取而觸發該交易的一異常終止的衝突偵測電路;其中:回應於規定一給定位址的一獨佔式載入指令,該處理電路經構造為針對該給定位址設定一獨佔式監控指示;回應於規定該給定位址的一獨佔式儲存指令,該處理電路經構造為當該給定位址不再具有該獨佔式監控指示集時返回一獨佔式儲存失敗指示;回應於在一給定交易內執行的規定一載入靶位址的一預定類型的載入指令,該處理電路經構造為觸發清除先前回應於一獨佔式載入指令而針對該載入靶位址所設定、且回應於規定該載入靶位址的一獨佔式儲存 指令而將被檢查的任何獨佔式監控指示;以及回應於該獨佔式載入指令,該處理電路及該交易記憶體支援電路中的至少一個經構造為觸發一交易的一異常終止,其中該給定位址針對該交易而被規定為位址的該工作集中的一個。
  2. 如請求項1所述之設備,其中該處理電路包含能夠並行地執行多個處理線程的複數個處理元件。
  3. 如請求項2所述之設備,其中回應於在該複數個處理元件的一給定處理元件上執行該獨佔式載入指令,該給定處理元件經構造為觸發將一訊息發送到至少一個其他處理元件,該訊息指示針對該給定位址設定該獨佔式監控指示。
  4. 如請求項2及3中任一項所述之設備,其中回應於在該複數個處理元件的一給定處理元件上執行該預定類型的載入指令,該給定處理元件經構造為觸發將一訊息發送到該複數個處理元件的至少一個其他處理元件,該訊息指示應當清除先前由該至少一個其他處理元件針對該載入靶位址設定的任何獨佔式監控指示。
  5. 如請求項1、2及3中任一項所述之設備,其中回應於在該給定交易內執行的該預定類型的載入指令,該處理電路經構造為將該載入靶位址添加到針對 該給定交易的位址的該工作集。
  6. 如請求項1、2及3中任一項所述之設備,其中回應於在該給定交易內執行的規定一載入靶位址的一第二類型的載入指令,該處理電路經構造為保留任何先前針對該載入靶位址設定的獨佔式監控指示。
  7. 如請求項1、2及3中任一項所述之設備,其中該處理電路經構造為支援推測性地執行一載入指令的一給定線程,用於在該處理電路已解析用於控制對該靶位址的獨佔式存取的一鎖變數是否已經由該給定線程成功地主張之前從一靶位址載入一資料值。
  8. 如請求項1、2及3中任一項所述之設備,包含獨佔式監控電路,用於回應於偵測到下列中的一個觸發清除針對該給定位址設定的該獨佔式監控指示:該處理電路執行規定該給定位址或另一位址的一獨佔式載入指令;該處理電路執行將該給定位址規定為該載入靶位址的該預定類型的載入指令;以及一儲存操作,用於將資料儲存到對應於該給定位址的一記憶體位置。
  9. 如請求項1、2及3中任一項所述之設備,其中該交易記憶體支援電路亦包含下列中的至少一個:推測結果儲存電路,用於儲存針對至少一個交易推 測性地執行的指令的結果;以及復原狀態儲存電路,用於儲存待在異常終止該交易時復原的回應於該交易開始指令捕獲的狀態。
  10. 一種資料處理方法,包含以下步驟:回應於規定一給定位址的一獨佔式載入指令,針對該給定位址設定一獨佔式監控指示;回應於規定該給定位址的一獨佔式儲存指令,當該給定位址不再具有該獨佔式監控指示集時返回一獨佔式儲存失敗指示;回應於在一交易內執行的規定一載入靶位址的一預定類型的載入指令,清除先前回應於一獨佔式載入指令而針對該載入靶位址所設定、且回應於規定該載入靶位址的一獨佔式儲存指令而將被檢查的任何獨佔式監控指示,該交易包含在一交易開始指令與一交易結束指令之間推測性地執行的一給定線程的指令,對此防止提交該等推測性地執行的指令的結果,直至到達該交易結束指令,其中該交易將回應於偵測到從另一線程到針對該交易追蹤的位址的一工作集中的一個的一衝突存取而異常終止;以及回應於該獨佔式載入指令,觸發一交易的一異常終止,其中該給定位址針對該交易而被規定為位址的該工作集中的一個。
  11. 一種用於控制一主資料處理設備以提供用於執行資料處理線程的一指令執行環境的電腦程式;該電腦程式包含:處理程式邏輯,用於處理資料處理線程;以及交易記憶體程式邏輯,用於支援在由該處理程式邏輯處理的一線程內執行一交易,該交易包含在一交易開始指令與一交易結束指令之間推測性地執行的該線程的指令,對此該處理程式邏輯經構造為防止提交該等推測性地執行的指令的結果,直至到達該交易結束指令,該交易記憶體程式邏輯包含用於回應於偵測到從另一線程到針對該交易追蹤的位址的一工作集中的一個的一衝突存取而觸發該交易的一異常終止的衝突偵測程式邏輯;其中:回應於規定一給定位址的一獨佔式載入指令,該處理程式邏輯經構造為針對該給定位址設定一獨佔式監控指示;回應於規定該給定位址的一獨佔式儲存指令,該處理程式邏輯經構造為當該給定位址不再具有該獨佔式監控指示集時返回一獨佔式儲存失敗指示;回應於在一給定交易內執行的規定一載入靶位址的一預定類型的載入指令,該處理程式邏輯經構造為觸發清除先前回應於一獨佔式載入指令而針對該載入靶 位址所設定、且回應於規定該載入靶位址的一獨佔式儲存指令而將被檢查的任何獨佔式監控指示;以及回應於該獨佔式載入指令,該處理程式邏輯及該交易記憶體程式邏輯中的至少一個經構造為觸發一交易的一異常終止,其中該給定位址針對該交易而被規定為位址的該工作集中的一個。
  12. 一種資料處理設備,包含:處理電路,用於處理資料處理線程;以及交易記憶體支援電路,用於支援在由該處理電路處理的一線程內執行一交易,該交易包含在一交易開始指令與一交易結束指令之間推測性地執行的該線程的指令,對此該處理電路經構造為防止提交該等推測性地執行的指令的結果,直至到達該交易結束指令,該交易記憶體支援電路包含用於回應於偵測到從另一線程到針對該交易追蹤的位址的一工作集中的一個的一衝突存取而觸發該交易的一異常終止的衝突偵測電路;其中:回應於規定一給定位址的一獨佔式載入指令,該處理電路經構造為針對該給定位址設定一獨佔式監控指示;回應於規定該給定位址的一獨佔式儲存指令,該處理電路經構造為當該給定位址不再具有該獨佔式監控 指示集時返回一獨佔式儲存失敗指示;回應於在一給定交易內執行的規定一載入靶位址的一預定類型的載入指令,該處理電路經構造為觸發清除先前針對該載入靶位址設定的任何獨佔式監控指示;以及回應於該獨佔式載入指令,該處理電路及該交易記憶體支援電路中的至少一個經構造為觸發一交易的一異常終止,其中該給定位址針對該交易而被規定為位址的該工作集中的一個;其中該處理電路包含能夠並行地執行多個處理線程的複數個處理元件;其中回應於在該複數個處理元件的一給定處理元件上執行該預定類型的載入指令,該給定處理元件經構造為觸發將一訊息發送到該複數個處理元件的至少一個其他處理元件,該訊息指示應當清除先前由該至少一個其他處理元件針對該載入靶位址設定的任何獨佔式監控指示。
TW108120255A 2018-06-25 2019-06-12 處理獨佔式載入指令的資料處理設備、方法及電腦程式 TWI801603B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP18386018.8A EP3588280B1 (en) 2018-06-25 2018-06-25 Handling load-exclusive instructions in apparatus having support for transactional memory
EP18386018.8 2018-06-25

Publications (2)

Publication Number Publication Date
TW202001566A TW202001566A (zh) 2020-01-01
TWI801603B true TWI801603B (zh) 2023-05-11

Family

ID=62948064

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108120255A TWI801603B (zh) 2018-06-25 2019-06-12 處理獨佔式載入指令的資料處理設備、方法及電腦程式

Country Status (8)

Country Link
US (1) US11579873B2 (zh)
EP (1) EP3588280B1 (zh)
JP (1) JP2021529372A (zh)
KR (1) KR20210021521A (zh)
CN (1) CN112236750A (zh)
IL (1) IL279126B2 (zh)
TW (1) TWI801603B (zh)
WO (1) WO2020002869A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11675899B2 (en) * 2020-12-15 2023-06-13 International Business Machines Corporation Hardware mitigation for Spectre and meltdown-like attacks
GB2603167B (en) * 2021-01-29 2023-04-26 Advanced Risc Mach Ltd Monitor exclusive instruction
CN115408178B (zh) * 2022-10-31 2023-02-21 北京登临科技有限公司 用于保护对片上资源的访问的方法、介质和电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201224991A (en) * 2010-09-24 2012-06-16 Advanced Risc Mach Ltd Next-instruction-type field
US20140052921A1 (en) * 2011-05-27 2014-02-20 Arm Limited Store-exclusive instruction conflict resolution
US20150378927A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Allowing non-cacheable loads within a transaction

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7792805B2 (en) * 2006-05-30 2010-09-07 Oracle America, Inc. Fine-locked transactional memory
US8065490B2 (en) * 2007-09-28 2011-11-22 Intel Corporation Hardware acceleration of strongly atomic software transactional memory
GB2529899B (en) * 2014-09-08 2021-06-23 Advanced Risc Mach Ltd Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads
US9760494B2 (en) * 2015-06-24 2017-09-12 International Business Machines Corporation Hybrid tracking of transaction read and write sets
US9792147B2 (en) * 2015-07-02 2017-10-17 International Business Machines Corporation Transactional storage accesses supporting differing priority levels

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201224991A (en) * 2010-09-24 2012-06-16 Advanced Risc Mach Ltd Next-instruction-type field
US20140052921A1 (en) * 2011-05-27 2014-02-20 Arm Limited Store-exclusive instruction conflict resolution
US20150378927A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Allowing non-cacheable loads within a transaction

Also Published As

Publication number Publication date
CN112236750A (zh) 2021-01-15
WO2020002869A1 (en) 2020-01-02
IL279126B1 (en) 2023-11-01
JP2021529372A (ja) 2021-10-28
IL279126B2 (en) 2024-03-01
KR20210021521A (ko) 2021-02-26
IL279126A (en) 2021-01-31
US20210342152A1 (en) 2021-11-04
EP3588280B1 (en) 2021-09-08
EP3588280A1 (en) 2020-01-01
TW202001566A (zh) 2020-01-01
US11579873B2 (en) 2023-02-14

Similar Documents

Publication Publication Date Title
Jacobi et al. Transactional memory architecture and implementation for IBM System z
US8180967B2 (en) Transactional memory virtualization
US8407455B2 (en) Coexistence of advanced hardware synchronization and global locks
US20090119459A1 (en) Late lock acquire mechanism for hardware lock elision (hle)
TWI786181B (zh) 在例外遮罩更新指令之後允許未中止的交易處理
TWI801603B (zh) 處理獨佔式載入指令的資料處理設備、方法及電腦程式
TWI812750B (zh) 交易式比較及丟棄指令
US10346196B2 (en) Techniques for enhancing progress for hardware transactional memory
US10671400B2 (en) Enhanced managed runtime environments that support deterministic record and replay
US11347539B2 (en) Checking lock variables for transactions in a system with transactional memory support
US20230315510A1 (en) A technique for handling transactions in a system employing transactional memory
CN112334874B (zh) 数据处理装置和数据处理方法
Harris et al. Hardware-Supported Transactional Memory