TW201915761A - 在例外遮罩更新指令之後允許未中止的交易處理 - Google Patents
在例外遮罩更新指令之後允許未中止的交易處理 Download PDFInfo
- Publication number
- TW201915761A TW201915761A TW107131812A TW107131812A TW201915761A TW 201915761 A TW201915761 A TW 201915761A TW 107131812 A TW107131812 A TW 107131812A TW 107131812 A TW107131812 A TW 107131812A TW 201915761 A TW201915761 A TW 201915761A
- Authority
- TW
- Taiwan
- Prior art keywords
- transaction
- exception
- processing
- instruction
- circuit
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 151
- 230000004044 response Effects 0.000 claims abstract description 34
- 239000000725 suspension Substances 0.000 claims description 62
- 238000011084 recovery Methods 0.000 claims description 28
- 238000001514 detection method Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 12
- 230000001960 triggered effect Effects 0.000 claims description 10
- 230000004913 activation Effects 0.000 claims description 9
- 238000003672 processing method Methods 0.000 claims description 2
- 238000000034 method Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 206010000210 abortion Diseases 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4818—Priority circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Executing Machine-Instructions (AREA)
Abstract
資料處理設備具有處理電路,該處理電路具有支援使用交易記憶體執行交易的交易記憶體支援電路。回應於例外遮罩更新指令(該例外遮罩更新指令係更新例外遮罩資訊以啟用在交易處理開始時被禁用的例外的至少一個子集),處理電路4允許對在例外遮罩更新指令後之交易的一或多個後續指令的未中止處理。
Description
本技術係關於資料處理領域。更特定言之,本技術與交易記憶體相關。
資料處理系統可執行多個資料處理執行緒。有時,執行緒可能需要存取共享資源,且資料處理操作的性質可使得一旦執行緒開始與共享資源互動,則可能需要在沒有另一執行緒同時存取該資源的情況下,使用該資源以原子方式來完成一組操作。
處理執行緒之間的此種衝突的一種技術可以是使用鎖來控制對至少一個目標資源的獨占存取。例如,當一個執行緒開始存取特定位址區域中的資料時,該執行緒可設置鎖定變量來聲明鎖的所有權,接著當鎖擁有執行緒擁有鎖的所有權時,檢查該鎖定變量的其他執行緒可確定鎖已被聲明,因此可不會進入與該位址區域互動的代碼部分。因預設每個執行緒都假定它不能進入存取共享資源的代碼部分(因除非執行緒擁有鎖的所有權(該鎖的所有權係保證可沒有衝突發生)不然可能會發生與另一個執行緒的衝突),故此種基於鎖的方法可看作是悲觀的。然而,鎖定標識符通常可控制對多個資源(例如,一系列位址)的獨占存取,因此不能保證若一個執行緒正在存取受鎖定變量保護的資源集合中的某些資源,則另一個執行緒肯定會存取相同資源。因此,在執行緒之間的衝突很少的情況下,基於鎖的方法可能導致效能損失,因執行緒可能在進入使用共享資源的代碼的臨界區段之前不必要地等待鎖被釋放。
用於處理存取共享資源的執行緒之間的衝突的更樂觀方法可以是使用交易記憶體支援。資料處理系統可具有支援處理電路執行在資料處理的執行緒內的交易的電路。交易可為在標記交易開始的交易開始指令及標記交易結束的交易結束指令之間執行的執行緒的那些指令。在交易開始指令及交易結束指令之間,處理電路可推測性地執行中間指令且直到到達交易結束指令前皆防止那些推測地執行的指令的結果的提交(commitment)。在執行交易開始指令之後(但在到達交易結束指令之前)發生中止事件可能導致交易被中止且推測結果被捨棄。中止交易可能有許多原因,但一個原因可能是偵測到與另一個執行緒的記憶體存取衝突。因此,使用此種方法,每個執行緒可樂觀地開始處理假設不會發生與其他執行緒的衝突之代碼的臨界區段,接著若到達臨界區段的末端而沒有偵測到任何衝突,則可提交(commit)交易的結果。在衝突很少的情況下,使用交易記憶體支援可藉由允許更多執行緒同時處理其代碼的臨界區段來改善效能。
至少一些實例提供了一種設備,其包括:處理電路,該處理電路回應於指令來執行資料處理,該處理電路包括支援該處理電路執行資料處理之執行緒內的交易的交易記憶體支援電路,該交易包括在交易開始指令及交易結束指令之間推測地執行的該執行緒的指令,為該等推測地執行的指令該處理電路經配置成直到到達該交易結束指令前皆防止該等推測地執行的指令的結果的提交(commitment),及當在到達該交易結束指令之前發生中止事件時中止該交易的處理;及例外處理電路,該例外處理電路根據例外遮罩資訊來確定是否遮蔽例外,該例外遮罩資訊指定是啟用還是禁用例外的一或多個子集;其中回應於在交易內執行的例外遮罩更新指令以更新該例外遮罩資訊,以啟用在該交易的處理開始時被禁用的例外的至少一個子集,該處理電路經配置成更新該例外遮罩資訊及允許在該例外遮罩更新指令後之該交易的一或多個後續指令的未中止處理。
至少一些實例提供了一種資料處理方法,包括以下步驟:使用處理電路來回應於指令以執行資料處理,該處理電路包括支援該處理電路執行資料處理之執行緒內的交易的交易記憶體支援電路,該交易包括在交易開始指令及交易結束指令之間推測地執行的該執行緒的指令,為該等推測地執行的指令該處理電路經配置成直到到達該交易結束指令前皆防止該等推測地執行的指令的結果的提交(commitment),及當在到達該交易結束指令之前發生中止事件時中止該交易的處理;回應於例外,根據例外遮罩資訊來確定是否遮蔽該例外,該例外遮罩資訊指定是啟用還是禁用例外的一或多個子集;及回應於在交易內執行的例外遮罩更新指令以更新該例外遮罩資訊,以啟用在該交易的處理開始時被禁用的例外的至少一個子集、更新該例外遮罩資訊及允許在該例外遮罩更新指令後之該交易的一或多個後續指令的未中止處理。
至少一些實例提供了一種用於控制主機資料處理設備以提供用於執行指令的指令執行環境的電腦程式,包括:處理程式邏輯,其支援在資料處理的執行緒內執行交易,該交易包括在交易開始指令及交易結束指令之間推測性地執行的該執行緒的指令,為該等推測地執行的指令該處理程式邏輯經配置成直到到達該交易結束指令前皆防止該等推測地執行的指令的結果的提交(commitment),及當在到達該交易結束指令之前發生中止事件時中止該交易的處理;及例外處理程式邏輯,其用於根據例外遮罩資訊來確定是否遮蔽例外,該例外遮罩資訊指定是啟用還是禁用例外的一或多個子集;其中回應於在交易內執行的例外遮罩更新指令以更新該例外遮罩資訊以啟用在該交易的處理開始時被禁用的例外的至少一個子集,該處理程式邏輯經配置成更新該例外遮罩資訊及允許在該例外遮罩更新指令後之該交易的一或多個後續指令的未中止處理。
可提供儲存上述電腦程式的儲存媒體。儲存媒體可為是非暫態電腦程式儲存媒體。
資料處理設備可具有處理電路,該處理電路具有交易記憶體支援電路,以支援處理電路執行在資料處理的執行緒內的交易。交易包括在交易開始指令及交易結束指令之間推測性地執行的執行緒的指令,為該等推測地執行的指令該處理電路經配置成直到到達該交易結束指令前可防止該等推測地執行的指令的結果的提交(commitment),及當在到達交易結束指令之前發生中止事件時可中止交易的處理。
設備可具有例外處理電路,該例外處理電路用於控制在處理指令期間可能出現的例外條件的處理。例外條件可為要求處理電路執行的處理被暫停以便可執行其他處理的任何事件。例如,例外可包括軟體觸發的例外,如由軟體嘗試存取無效、未映射或不可存取的記憶體位址、執行未定義的指令或由違反安全保護措施的軟體執行的操作引起的記憶體故障。此外,例外情況可包括由外部事件觸發的硬體中斷,如使用者按下裝置上的按鈕、向設備發送請求的外部設備、發送信號的外部設備,或不是由正在由處理電路本身執行的指令所直接引起的某些其他事件。例外處理電路可具有基於例外遮罩資訊來遮蔽某些例外的能力,該例外遮罩資訊可指定是啟用還是禁用一或多個例外子集。
通常,在交易中將禁止更新例外遮罩資訊的指令,以便若在處理交易期間遇到更新例外遮罩資訊的指令則此將導致中止事件從而中止交易。通常如此做是為了避免由於交易開始時的例外遮罩資訊與交易中稍後的例外遮罩資訊之間的差異而可能出現的活鎖情況。
然而,發明人認識到在交易期間不必抑制例外遮罩更新指令。回應於在交易內執行的例外遮罩更新指令以更新例外遮罩資訊以啟用在處理交易開始時被禁用的至少一組例外,處理電路可更新例外遮罩資訊並允許在例外遮罩更新指令之後的交易的一或多個後續指令的未中止處理。因此,當遇到例外遮罩更新指令時,不需要觸發中止或抑制例外遮罩資訊的更新。此為交易記憶體機制提供了更大的機會來用於處理包括例外遮罩更新指令的執行緒,否則此是不可能的。此很有用,因一方編寫的一部分軟體通常可指由另一方編寫的一部分軟體或在由他人編寫的第一方的軟體中運行的某些功能,故程式設計師或編譯器可能很難知道所執行的所有代碼是否都包含例外遮罩更新指令,故在沒有上述技術的情況下此類代碼可能具有較低的效能(因可能會重複嘗試執行可能因例外遮罩更新指令的存在所引起的中止而失敗的交易,且可能花費一些時間來偵測到採用非交易性方法(如採用基於鎖的機制)之足夠數量的中止)。對之,由於能夠繼續處理超出例外遮罩更新的交易,故此可提高此類代碼的效能。
交易記憶體支援電路可具有恢復狀態記憶電路,以儲存回應於交易開始指令而捕獲的交易恢復狀態資料。處理電路可回應於中止事件來恢復交易恢復狀態資料。交易恢復狀態資料可包括遮罩例外資訊。因此,在交易主體中存在例外遮罩更新指令的情況下(該指令啟用在處理交易開始時被禁用的至少一個例外子集),若交易被中止,則此可能導致例外遮罩資訊之先前的值正在恢復,而因此至少一個例外子集再次被禁用。
此可能導致問題,因處理電路可被佈置成回應於在處理交易期間啟用例外的發生而觸發中止事件。當發生例外時,在獲取例外之後執行的後續處理將產生結果,該等結果非為交易中執行的操作的部分且不應記錄在該交易的推測結果集中。類似地,例外存取的位址與其他執行緒存取的位址之間的衝突不需要以與交易本身相同的方式標記。在硬體中提供足夠的資源以區分例外處理及交易處理,且稍後恢復交易可能會過於複雜而無法證明所增加的費用,因此在處理交易期間發生啟用例外時簡單地中止交易可更簡單。
然而,由於例外導致交易中止,例外服務可能會延遲,直到交易的恢復狀態資料已恢復為止。此是因為若交易正在中止,例外應該看到架構狀態就像交易從未發生過。因此,若在交易期間在不中止交易的情況下允許例外遮罩更新指令,則可在交易期間啟用先前禁用的例外子集,接著發生該等新啟用的例外中的一者,如此便會導致交易被中止,恢復先前捕捉的恢復狀態可導致在採取例外前禁用例外子集。接著例外可保持未決(pending)狀態,接著軟體可嘗試重新啟動交易。在下一次運行交易的嘗試中,當再次遇到例外遮罩更新指令時,該例外遮罩更新指令重新啟用子集例外,接著仍未決的例外可再次觸發中止,此可能導致在沒有解決例外及沒有成功完成交易的情況下多次嘗試執行相同交易的長循環,而導致了活鎖情況。實際上,此可不需要無限期地中斷處理器,因軟體通常具有停止重啟交易嘗試的機制,且若中止的數量變得大於閾值,則使用非交易方法來執行等效操作。然而,確定此點可能需要一些時間,且同時在嘗試多次處理交易時可能會有大量浪費的處理,且在使用非交易方法最終執行操作之前會有長延遲。此是交易記憶體的典型方法已禁用交易內的例外遮罩更新指令或在交易期間觸發中止的一個原因。
對之,利用上面論述的方法來允許例外遮罩更新,且允許交易處理以在不中止交易的情況下繼續超出例外遮罩更新指令。儘管交易在例外遮罩更新指令之後仍可中止(例如,若發生例外或衝突),但此至少提供了繼續處理交易及(若沒有中止)到達交易結束並提交結果的機會,儘管例外遮罩資訊在交易中途已經改變了狀態。
回應於在交易處理期間發生啟用例外,當在交易處理開始時禁用啟用例外時,處理電路可將中止狀態資訊設置為預定值。對之,回應於為交易而發生的中止事件,當中止事件由除了啟用例外之發生外的事件觸發時,或由在交易處理開始時也啟用之啟用例外的發生觸發時,處理電路可將中止狀態值設置為除預定值之外的值。因此,藉由在交易中止時檢查中止狀態資訊,軟體可將交易因交易中途啟用的例外而中止的情況與中止的其他潛在原因區分開來。接著,軟體可確定(例如)當中止狀態資訊具有預定值時,代碼不應嘗試在交易模式中再次運行。例如,軟體可替代地在非交易模式內執行等效功能(例如,分支到代碼內提供等效的非交易操作的路徑),此可(例如)使用基於鎖的機制來避免多個執行緒對共享資源的同時存取。因此,藉由提供中止狀態資訊,此降低了活鎖情況的風險,啟用交易遮罩狀態資訊以在沒有顯著效能瓶頸的風險的情況下來在交易中途發生變化;因此,為基於可需要更改啟用或禁用例外的狀態代碼機制使用交易記憶體提供了更大的機會。
可用不同方式表示中止狀態資訊。在一些實例中,中止狀態資訊可為狀態暫存器內的旗標,當啟用的例外觸發交易的中止且啟用例外在交易開始被禁用時,該狀態暫存器被設置為第一值且可為其他類型的中止而被設置為第二值。或者,中止狀態資訊可為一般中止原因代碼,該一般中止原因代碼具有多個位元,該等位元具有代表交易中止的不同原因的那些位元的不同編碼。中止狀態代碼的一個可能值可為經分配以指示中止是由於在中止交易時啟用但在交易開始時被禁用的例外所引起的特殊值。在此種情況下,若交易由於在交易中途啟用的例外而中止,則與交易處理開始時已啟用例外的情況相比,此將由中止狀態代碼的不同狀態來反映交易。
有許多表示例外遮罩資訊的方法。在某些情況下,例外遮罩資訊可分別為兩個或更多不同類型的例外指定是啟用還是禁用每種類型的例外。例如,例外遮罩資訊中的一個旗標可指示是啟用還是禁用與除錯相關的例外,另一個旗標可指示是啟用還是禁用記憶體錯誤例外等等。利用此種類型的例外遮罩資訊,例外遮罩更新指令可為改變特定類型的例外(或兩種或更多種類型的例外)的啟用/禁用旗標的指令,以將旗標從禁用狀態改變為啟用狀態。
或者,例外遮罩資訊可指定例外優先級閾值。例外處理電路可根據例外的優先級與例外優先級閾值之間的比較來確定是否遮蔽例外。因此,當前禁用的例外子集可為具有比例外優先級閾值低的優先級的那些例外 (可選地,也可禁用具有等於例外優先級閾值的優先級的例外)。應當理解,例外優先級可藉由數值由不同方式表示。例如,最低數值(例如,優先級零)可指示最重要的例外類型,從而(例如)優先級0例外被認為具有比優先級3更高的優先級。或者,其他方法可使用優先級的最高數值來表示最重要的優先級(例如,優先級15表示比優先級12更高的優先級例外)。因此,本申請案中的術語優先級是指例外的相對重要性,與用於表示該重要性級別的實際數值無關。在例外遮罩資訊指定例外優先級閾值的實例中,上文論述的例外遮罩更新指令可為更新閾值的例外優先級以指示較低(較不重要)優先級的指令,以便現在將啟用更多的例外子集。
儘管上文的實例論述了啟用先前禁用例外的例外遮罩更新指令,但在交易中也可允許其他類型之在不中止交易的情況下更新例外遮罩資訊以禁用先前啟用例外的的例外遮罩更新指令。
交易記憶體支援電路可包括用於使用交易記憶體機制來支援交易執行的多個資源。例如,交易記憶體支援電路可包括恢復狀態儲存電路,以儲存回應於在中止交易時要恢復的交易開始指令而捕捉的交易恢復狀態。在一些情況下,外部交易的交易開始指令可觸發交易恢復狀態的捕捉,且可抑制內部交易的交易恢復狀態的捕捉(當交易嵌套深度在遇到交易開始指令處大於零時)。
交易記憶體支援電路亦可包括推測結果儲存電路,以為至少一個執行緒的至少一個交易儲存至少一些推測性地執行的指令的結果。在某些情況下,只有某些類型的指令可能將其結果儲存到推測結果儲存電路中;例如,用於寫入記憶體的儲存指令可將其儲存資料推測性地保存在推測結果記憶體中,直到可提交交易為止,而作用於暫存器的通用算術指令可簡單地寫入那些暫存器,因恢復狀態稍後可允許在狀態重繞到較早的執行點時丟棄那些結果。
交易記憶體支援電路亦可具有衝突偵測電路,該衝突偵測電路用於偵測在第一執行緒的交易內進行的對給定位址的資料存取與另一執行緒對相同位址的資料存取之間的衝突。衝突偵測電路回應於對衝突的偵測可觸發中止事件。中止事件的其他原因可包括在交易處理期間發生的中斷或例外、交易記憶體支援電路中儲存容量的不足容納交易的進一步推測結果,或某些在遇到的交易中不允許存取的指令。交易記憶體支援電路亦可具有位址追蹤電路,該位址追蹤電路用於追蹤由交易內的指令存取的位址,且衝突偵測電路可使用經追蹤的位址來識別與其他執行緒的衝突。
相應的電腦程式可控制主機資料處理設備,以提供用於執行指令的指令執行環境,其中處理程式邏輯啟用指令之在如上所述的例外遮罩更新指令之後的未中止處理。此種電腦程式可允許通用主機資料處理設備本身不具有交易記憶體支援電路而受益於交易記憶體功能及嵌套深度的改進測試(即使可能沒有提供該等特徵的實際硬體)。替代的是,電腦程式提供程式邏輯(如指令集或資料結構),該程式邏輯模擬此功能使得通用主機資料處理設備能執行意欲提供此類硬體特徵的設備上執行的代碼。
圖1圖示了具有硬體交易記憶體(HTM)支援的資料處理設備2的實例。設備具有處理邏輯4,以用於執行指令以執行資料處理操作。例如,處理邏輯4可包括用於執行各種類型的處理操作的執行單元,該等各種類型的處理操作如用於執行算術或邏輯運算(如加、乘、AND、OR等)的算術/邏輯單元(ALU);用於對浮點運算元執行操作的浮點單元;或用於對包括多個資料元素的向量運算元進行向量處理的向量處理單元。提供一組架構暫存器6,該組架構暫存器6用於儲存由處理邏輯4執行的指令的運算元,且用於儲存執行指令的結果。指令解碼器8對從指令快取10取出的指令進行解碼,以產生用於控制處理邏輯4或資料處理設備2的其他元件的控制信號,以執行相關操作。亦提供載入/儲存單元12以執行載入操作(回應於由指令解碼器8解碼的載入指令)以將資料值從資料快取14或主記憶體16載入至架構暫存器6中,並儲存操作(回應於儲存由指令解碼器8所解碼的指令),以將資料值從架構暫存器6儲存到資料快取14或記憶體16。
設備2亦具有交易記憶體支援電路20,該交易記憶體支援電路20提供用於支援硬體交易記憶體(HTM)的各種資源。交易記憶體支援電路20中的HTM資源可包括(例如)用於儲存交易的推測結果的推測結果儲存器22、用於追蹤由交易存取的位址的位址追蹤電路24、用於偵測由交易進行的資料存取及由其他執行緒進行的資料存取之間的衝突以便在偵測到衝突時可中止交易的衝突偵測電路26,及恢復狀態儲存電路28,該恢復狀態儲存電路28用於在交易開始時儲存來自架構暫存器6的架構狀態資料的快照,使得在交易中止時,可恢復此狀態以重寫交易的推測結果。
設備2亦具有例外處理電路30,該例外處理電路30控制例外32的處理,該等例外32表示需要處理邏輯4暫停其當前處理並切換到某些其他操作的事件。儲存在記憶體16中的例外處理程序代碼可定義成回應於某些類型的例外而執行的操作,及例外處理電路30可維護例外向量表,該例外向量表指示針對不同類型的例外之對應例外處理程序的位址。架構狀態6可包括例外遮罩暫存器34及例外優先級遮罩暫存器36,以提供例外遮罩資訊來確定例外處理電路30是否應該作用於可出現的例外32的子集。
圖2圖示了使用交易記憶體支援電路20及處理邏輯4來在給定執行緒內執行交易的實例。交易是程式代碼的一部分,其由交易開始指令(tstart)及交易結束指令提交(tcommit)劃界。如圖2所示,回應於交易開始指令,捕捉架構暫存器6中的當前架構狀態並將其存儲在恢復狀態儲存電路28中。處理邏輯4開始執行在tstart指令後的後續指令的推測性執行;當執行該等指令時,由該等指令存取的位址由位址追蹤電路24追蹤,且衝突偵測電路26回應其他執行緒偵測所追蹤的位址及使用載入/儲存單元12所存取的位址之間的衝突。將交易中的指令的至少一些推測結果儲存在推測結果存儲電路22中。例如,回應於儲存指令STR而儲存於快取或記憶體中的值可保存在推測結果儲存器22中,同時交易仍保持未決。若在沒有同時發生中止事件的情況下到達交易結束指令(tcommit),則回應於交易結束指令,提交推測結果。在提交交易時,儲存在該執行緒的推測結果記憶體22中的任何結果可被寫入資料快取14或記憶體16,且恢復狀態28可被丟棄或允許被重寫,因不再需要將架構狀態倒回至遇到交易開始指令之前的點。
另一方面,若發生中止事件,例如當衝突偵測電路26在另一個執行緒存取已由交易存取的位址時偵測到衝突時,則觸發交易的中止及將來自恢復狀態儲存28的恢復狀態恢復至架構暫存器6。中止事件的其他原因可(例如)包括不允許在交易內執行之指令的執行、推測結果儲存器22或位址追蹤電路24內不足以處理給定交易所需的推測結果或位址的資源,或在交易期間所接收的中斷。
圖3圖示了例外遮罩暫存器34及例外優先級遮罩暫存器36的內容的實例。例外遮罩暫存器包括一系列旗標38,每個旗標對應於特定類型的例外32並指定是否啟用該例外或是禁用該例外。在圖3所示的映射中,旗標值為1表示例外被啟用(未遮蔽),而旗標值為0表示例外類型被禁用(遮蔽),但可理解的是,亦可使用相反的映射。當禁用例外類型時,即使發生該例外,也不會導致處理邏輯4被中斷。然而,對於禁用例外的例外信號的斷言可保持未決,因此若稍後例外被解除遮蔽(啟用)而該例外仍保持未決,則在那時可向處理器4發信號通知例外。
類似地,例外優先級遮罩暫存器36可定義閾值優先級。可認為優先級小於或等於閾值的例外被禁用(遮蔽),且可啟用(未遮蔽)優先級大於閾值的例外。應當理解,暫存器34及36中的遮罩資訊可能不是用於確定是否向處理邏輯4發信號通知所採取例外的唯一資訊。例如,亦可使用優先級,以便當多個啟用例外發生時,在較低優先級的例外之前發出較高優先級的例外。類似地,向處理邏輯4發送例外的訊號可取決於當前正在執行的代碼的優先級及與進入例外相關聯的優先級的比較。
圖4圖示了用於比較在交易期間處理例外遮罩暫存器34及36的改變的典型方法。例外遮罩更新指令可改變例外遮罩暫存器34或例外優先級遮罩暫存器36中的值。通常,此種指令可能導致交易中止,因此不可能成功完成包含對例外遮罩暫存器34及36更新的交易。無論例外遮罩更新指令是啟用還是禁用例外子集,都可執行此操作;但如圖5所示,更重要的問題是,當例外遮罩更新指令導致在交易開始時被禁用的指令的額外子集變為啟用。
圖5圖示了在交易期間若允許例外遮罩更新且允許交易超出例外遮罩更新時可能出現的活鎖問題。圖5圖示了在禁用例外A的某個子集時執行交易開始指令(tstart)的實例。例外A的子集可為對應的例外遮罩旗標38被禁用的特定類型的例外,或可為優先級小於或等於暫存器36中的當前優先級閾值之例外的子集。交易指令的推測性處理接著開始,且到達例外遮罩更新指令50,該例外遮罩更新指令50觸發對例外遮罩暫存器34及36中的一者或兩者的更新,以便現在例外A的子集變為啟用。隨後,發生子集A內的例外,此導致了中止交易。此時,存儲在恢復儲存器28中的恢復狀態被恢復到架構暫存器6,該架構暫存器6包括恢復與暫存器34及36相關聯的例外遮罩資訊。此時,因在交易開始指令時例外A的子集被禁用,狀態恢復導致例外A再次被禁用。儘管通常在交易中止後將採取例外,但由於狀態恢復導致例外A的子集被禁用,故例外被遮蔽因此而不會被採用。然而,相應的例外信號32保持未決。
接著,包含此交易的軟體可嘗試重新安排交易並從交易開始指令再次開始,如圖5的右側部分所示。再次地,捕捉恢復狀態並開始處理交易,但例外A保持未決。因此,當再次到達例外遮罩更新指令時,啟用例外A及對例外A取消遮蔽,交易將再次中止(因交易仍處於未決)。此再次觸發恢復該恢復狀態,且由於中止時待決狀態與恢復狀態存儲器28指示的狀態之間的差異而導致例外A的禁用。因此,此與第一次嘗試執行交易時發生的情況相同。軟體可能再次嘗試重複交易,此可能導致其中軟體反復繼續嘗試執行交易的活鎖循環;活鎖循環會保持失敗,因在啟用例外A的子集時有未決子集的例外,而此會立即中止交易。活鎖循環可繼續,直到例外被置為無效或軟體確定在執行交易時已經進行了足夠的嘗試且切換到非交易性的執行模式。此類活鎖循環可能對效能有害,而這就是為什麼通常採用圖4中的方法,其中任何例外遮罩更新指令將中止交易。
對之,圖6圖示了不同的方法。在此實例中,在交易期間允許例外遮罩更新指令50,且允許在例外遮罩更新指令50後之例外的指令的未中止執行。儘管在例外遮罩更新指令之後可能有其他原因中止交易,如衝突偵測電路26所偵測到的衝突、推測結果儲存器22或位址追蹤儲存器24內資源缺乏或發生例外,但若沒有發生需要中止的其他事件,則即使包括例外遮罩更新指令50(該例外遮罩更新指令50會將遮罩資訊從禁用狀態切換到用於例外的至少一子集的啟用狀態),交易亦能到達交易結束指令tcommit。此使得交易執行模式可用於以前無法使用它的額外代碼序列,藉由使用交易模式(而不是如基於鎖的代碼之類的更悲觀的模型)而增加了效能節省的機會。
為了降低由於當前啟用但在交易開始時被禁用的例外導致交易中止之活鎖情況的風險,交易中止狀態暫存器52內的中止狀態值被設置為預定值,以指示中止的原因。圖6圖示了在中止狀態資訊中指示的兩種替代方法。在一實例中,中止狀態暫存器52可具有旗標54,該旗標54在中止由先前在交易開始時被禁用的例外觸發時而被設置為第一值(例如,二進制1)。在另一種方法中,中止狀態暫存器52可儲存狀態代碼,該狀態代碼可具有某種特定的位元模式[xyz],該位元模式指示中止是由當前啟用的例外觸發的,該當前啟用的例外先前在交易開始時被禁用(因所有其他使用狀態代碼的不同位元模式的中止原因)。不論如何表示中止狀態資訊,此都提供了用於使軟體能夠確定中止原因的架構支援。軟體可讀取中止狀態資訊52並確定中止的原因是啟用例外而導致中止,且若重複交易,則可能再次發生此種情況。因此,軟體可確定不重試交易及(例如)替代地,使用基於鎖的執行。因此,此減少了活鎖出現的機會,同時增加了使用用於包括例外遮罩更新之代碼的交易模式的機會。
圖7為圖示交易模式中的指令處理的流程圖。在步驟100處,指令解碼器8遇到交易開始指令。指令解碼器8產生控制信號,該等控制信號在步驟102控制處理邏輯4從暫存器6捕捉(包括暫存器34及36中的例外遮罩資訊之)當前架構狀態及儲存經捕捉狀態於恢復狀態儲存器28內。在一些實施方式中,可僅對在沒有其他未決交易時執行的第一交易開始指令執行此恢復狀態捕捉。若發生交易嵌套,則在到達先前交易結束之前遇到第二個交易開始指令時,可針對那些進一步嵌套的交易抑制恢復狀態捕捉以降低複雜性。
在步驟104處,開始進行在交易開始指令後的指令的推測執行。位址追蹤電路24開始記錄由交易指令存取的位址,且衝突偵測電路26檢查那些位址與其他執行緒存取的位址之間的衝突。
在步驟106處,指令解碼器8檢查是否已遇到啟用在交易開始時被禁用之例外的子集的例外遮罩更新指令;若是,則在步驟108處,控制處理邏輯4以更新暫存器34及36中的一或兩者中的例外遮罩資訊,及接著繼續進行交易的未中止推測執行。因此,例外遮罩更新不會觸發交易的中止。若沒有遇到例外遮罩更新,則在步驟110處檢查是否發生了任何中止事件。例如,中止事件可為啟用例外(當前未被例外遮罩暫存器34或例外優先級遮罩暫存器36遮蔽)的發生、衝突偵測電路26偵測到的衝突、不允許在交易中執行之指令的執行,或HTM追蹤結構22及24中之一者的容量不足以容納當前交易的資訊的進一步儲存。
若發生中止事件,則在步驟112中止交易且恢復狀態從恢復狀態儲存器28恢復到架構暫存器36。在步驟114處,處理邏輯4或例外處理電路30確定中止事件是否是由在交易開始時禁用之啟用的例外引起的。此可由將新恢復的例外遮罩暫存器34及具有導致中止的例外的屬性的例外優先級遮罩暫存器36進行比較來確定。若中止事件是由在交易開始時被禁用的啟用例外引起的,則在步驟116處將中止狀態暫存器52設置為預定值。否則,中止狀態暫存器52設置為表示中止原因的不同值。此向軟體通知原因,以便軟體可對重複嘗試採取條件分支,以根據中止狀態資訊再次執行交易或替代的基於鎖的代碼。因此,中止狀態資訊(包括識別由在交易期間未被遮蔽的啟用例外觸發之中止的特定狀態值),使得能夠更好地決定如何重新排程對應於中止交易的操作。
若在步驟110處沒有發生中止事件,則繼續進行交易處理。在步驟120處,確定指令解碼器8是否遇到了交易結束指令(tcommit);若是,則生成控制信號以在步驟122處觸發處理邏輯4,以提交交易的任何推測結果及丟棄或允許重寫與交易相關聯之恢復狀態儲存器28內的恢復狀態。推測結果的提交可包括(例如)將推測結果儲存器22的儲存指令的結果寫入至資料快取14或記憶體16。在一些情況下,可不對所有交易結束指令執行推測結果的提交。例如,對於嵌套交易來說,只有嵌套集的外部交易的最終交易結束指令可觸發推測結果的提交,且可忽略任何內部交易的交易結束指令。此外,在某些情況下,在到達交易結束指令時,可能還有其他條件要確認是否可實際提交推測結果。
若在步驟120處尚未到達交易結束指令,則方法返回到步驟106並循環,直到在步驟106、110及120處確認的事件中的至少一者已發生為止。
圖8圖示了可使用的模擬器實施。儘管前文描述的實施例在用於操作支援所涉及技術之特定處理硬體的設備及方法方面實施了本發明,但亦可提供根據藉由使用電腦程式所實施之本文描述的實施例的指令執行環境。只要此類電腦程式提供基於軟體的硬體架構的實施,則此類電腦程式通常就被稱為模擬器。各種模擬器電腦程式包括仿真器(emulator)、虛擬機器、模型及包括動態二進制翻譯器的二進制翻譯器。通常而言,模擬器實施可在支援模擬器程式210之主端處理器230上運行(可選地在支援模擬器程式210之主端操作系統220上運行)。在一些佈置中,在硬體及所提供的指令執行環境之間可存在多個模擬層及/或在同一主端處理器上提供的多個不同的指令執行環境。從歷史上看,已要求功能強大的處理器提供以合理的速度執行的模擬器實施,但在某些情況下此種方法可能是合理的,如當出於兼容性或重新使用的原因而希望將本地代碼運行至另一個處理器時。例如,模擬器實施可提供具有主端處理器硬體不支援之附加功能的指令執行環境,或提供通常與不同硬體架構相關聯的指令執行環境。在Robert Bedichek所著的「一些高效的架構模擬技術(Some Efficient Architecture Simulation Techniques)」(見Winter 1990 USENIX 研討會的第53頁至第63頁)中給出模擬的概述。
就先前已參考特定硬體構造或特徵所描述的實施例而言,在模擬實施例中,可藉由合適的軟體構造或特徵來提供等效功能。例如,特定電路可在模擬實施例中實現為電腦程式邏輯。類似地,如暫存器或快取之類的記憶體硬體可在模擬實施例中實施為軟體資料結構。在前述實施例中引用的一或多個硬體元件存在於主端硬體(例如,主端處理器230)上的佈置中,一些模擬實施例可在適當的情況下使用主端硬體。
模擬器程式210可儲存在電腦可讀取儲存媒體 (可為非暫態媒體)上,且向(可包括應用程式、操作系統及管理程式的)目標代碼200提供程式介面(指令執行環境),該程式介面與由模擬器程式210建模的硬體架構的應用程式介面相同。因此,可使用模擬器程式210在指令執行環境內執行目標代碼200的程式指令,以用上述方式處理在交易內的例外遮罩更新指令,使得實際上不具有上述設備2的硬體特徵的主端電腦230可仿真(emulate)這些特徵。
在本申請案中,詞語「經配置成......」用於表示設備的元件具有能執行所定義操作的配置。在此上下文中,「配置」表示硬體或軟體互連的佈置或方式。例如,設備可具有提供所定義的操作的專用硬體,或可對處理器或其他處理裝置進行編程以執行功能。「經配置成」並不意味著需要以任何方式改變設備元件以提供所定義的操作。
儘管本文已參考附加圖式而詳細描述了本發明的說明性實施例,但應該理解的是,本發明不限於那些精確的實施例,且所屬技術領域中具有通常知識者在不背離由附加申請專利範圍所限定之本發明的範疇及精神的情況下可在其中實現各種變化及修改。
2‧‧‧資料處理設備
4‧‧‧處理邏輯
6‧‧‧架構暫存器
8‧‧‧指令解碼器
10‧‧‧指令快取
12‧‧‧載入/儲存單元
14‧‧‧資料快取
16‧‧‧主記憶體
20‧‧‧交易記憶體支援電路
22‧‧‧推測結果儲存器
24‧‧‧位址追蹤電路
26‧‧‧衝突偵測電路
28‧‧‧恢復狀態儲存電路
30‧‧‧例外處理電路
32‧‧‧例外
34‧‧‧例外遮罩暫存器
36‧‧‧例外優先級遮罩暫存器
38‧‧‧旗標
50‧‧‧例外遮罩更新指令
52‧‧‧交易中止狀態暫存器
54‧‧‧旗標
100‧‧‧步驟
104‧‧‧步驟
106‧‧‧步驟
110‧‧‧步驟
112‧‧‧步驟
114‧‧‧步驟
116‧‧‧步驟
120‧‧‧步驟
200‧‧‧目標代碼
210‧‧‧模擬器程式
220‧‧‧主端操作系統
230‧‧‧主端處理器
本技術的其他態樣、特徵及優勢將從下述結合附加圖式的實例變得顯而易見,在該等附加圖式中:
圖1示意性地圖示了包括交易記憶體支援電路的設備的實例;
圖2圖示了交易處理的實例;
圖3圖示了例外遮罩資訊的兩個實例;
圖4圖示了在交易中執行例外遮罩更新指令時中止交易的比較實例;
圖5圖示了若允許例外遮罩更新以啟用先前在交易中途禁用之例外的處理而可能出現的問題;
圖6圖示了若遮罩更新啟用的例外觸發了交易的中止則藉由在交易中啟用例外遮罩更新並報告狀態資訊來解決此問題的技術;
圖7為圖示處理交易的方法的流程圖;及
圖8圖示了可使用的模擬器實例。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
Claims (15)
- 一種設備,包括: 處理電路,該處理電路回應於指令來執行資料處理,該處理電路包括支援該處理電路執行資料處理之一執行緒內的一交易的交易記憶體支援電路,該交易包括在一交易開始指令及一交易結束指令之間推測地執行的該執行緒的指令,為該等推測地執行的指令該處理電路經配置成直到到達該交易結束指令前皆防止該等推測地執行的指令的結果的提交(commitment),及當在到達該交易結束指令之前發生一中止事件時中止該交易的處理;及例外處理電路,該例外處理電路根據例外遮罩資訊來確定是否遮蔽一例外,該例外遮罩資訊指定是啟用還是禁用例外的一或多個子集;其中回應於在一交易內執行的一例外遮罩更新指令以更新該例外遮罩資訊,以啟用在該交易的處理開始時被禁用的例外的至少一個子集,該處理電路經配置成允許在該例外遮罩更新指令後之該交易的一或多個後續指令的未中止處理。
- 如請求項1所述的設備,其中該交易記憶體支援電路包括恢復狀態儲存電路,該恢復狀態儲存電路用於儲存回應於該交易開始指令而捕獲的交易恢復狀態資料。
- 如請求項2所述的設備,其中該處理電路被配置成回應於該中止事件來恢復該交易恢復狀態資料。
- 如請求項2所述的設備,其中該交易恢復狀態資料包括該例外遮罩資訊。
- 如請求項1所述的設備,其中該處理電路經配置成回應於在一交易的處理期間一啟用例外的發生而觸發該中止事件。
- 如請求項3所述的設備,其中該交易恢復狀態資料包括該例外遮罩資訊;及 回應於在一交易的處理期間一啟用例外的發生,該處理電路經配置成觸發該中止事件且直到已恢復該交易恢復狀態資料前皆推遲服務該例外。
- 如請求項5所述的設備,其中回應於在一交易的處理期間一啟用例外的發生,當在該交易的處理開始時禁用該啟用例外時,該處理電路經配置成將中止狀態資訊設置為一預定值。
- 如請求項7所述的設備,其中回應於針對一交易而發生的一中止事件,當該中止事件由除了一啟用例外的發生之外的一事件觸發時或由在該交易的處理開始啟用的一啟用例外的發生觸發時,該處理電路經配置成將該中止狀態資訊設置為除該預定值之外的一值。
- 如請求項1所述的設備,其中該例外遮罩資訊分別針對複數個類型的例外指定是啟用還是禁用每種類型的例外。
- 如請求項1所述的設備,其中該例外遮罩資訊指定一例外優先級閾值,且該例外處理電路經配置成根據該例外的一優先級與該例外優先級閾值之間的一比較來確定是否遮蔽一例外。
- 如請求項1所述的設備,其中該交易記憶體支援電路包括以下電路中的至少一者: 推測結果儲存電路,其用於儲存該等推測地執行的指令的該等結果;及 位址追蹤電路,其用於追蹤由一交易內之指令所存取的位址。
- 如請求項1所述的設備,其中該交易記憶體支援電路包括衝突偵測電路,該衝突偵測電路用於偵測在一第一執行緒的一交易內進行的對一給定位址的一資料存取與由另一個執行緒對相同位址的一資料存取之間的一衝突。
- 如請求項12所述的設備,其中該衝突偵測電路經配置成回應於偵測到該衝突而觸發該中止事件。
- 一種資料處理方法,包括以下步驟: 使用處理電路來回應於指令以執行資料處理,該處理電路包括支援該處理電路執行資料處理之一執行緒內的一交易的交易記憶體支援電路,該交易包括在一交易開始指令及一交易結束指令之間推測地執行的該執行緒的指令,為該等推測地執行的指令該處理電路經配置成直到到達該交易結束指令前皆防止該等推測地執行的指令的結果的提交(commitment),及當在到達該交易結束指令之前發生一中止事件時中止該交易的處理;回應於一例外,根據例外遮罩資訊來確定是否遮蔽該例外,該例外遮罩資訊指定是啟用還是禁用例外的一或多個子集;及 回應於在一交易內執行的一例外遮罩更新指令以更新該例外遮罩資訊,以啟用在該交易的處理開始時被禁用的例外的至少一個子集、更新該例外遮罩資訊及允許在該例外遮罩更新指令後之該交易的一或多個後續指令的未中止處理。
- 一種用於控制一主機資料處理設備以提供用於執行指令的一指令執行環境的電腦程式,包括: 處理程式邏輯,其支援在資料處理的一執行緒內執行一交易,該交易包括在一交易開始指令及一交易結束指令之間推測性地執行的該執行緒的指令,為該等推測地執行的指令該處理程式邏輯經配置成直到到達該交易結束指令前皆防止該等推測地執行的指令的結果的提交(commitment),及當在到達該交易結束指令之前發生一中止事件時中止該交易的處理;及 例外處理程式邏輯,其用於根據例外遮罩資訊來確定是否遮蔽一例外,該例外遮罩資訊指定是啟用還是禁用例外的一或多個子集; 其中回應於在一交易內執行的一例外遮罩更新指令以更新該例外遮罩資訊以啟用在該交易的處理開始時被禁用的例外的至少一個子集,該處理程式邏輯經配置成更新該例外遮罩資訊及允許在該例外遮罩更新指令後之該交易的一或多個後續指令的未中止處理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP17386031.3 | 2017-09-29 | ||
EP17386031.3A EP3462312B1 (en) | 2017-09-29 | 2017-09-29 | Permitting unaborted processing of transaction after exception mask update instruction |
??17386031.3 | 2017-09-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201915761A true TW201915761A (zh) | 2019-04-16 |
TWI786181B TWI786181B (zh) | 2022-12-11 |
Family
ID=60143663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107131812A TWI786181B (zh) | 2017-09-29 | 2018-09-11 | 在例外遮罩更新指令之後允許未中止的交易處理 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11663034B2 (zh) |
EP (1) | EP3462312B1 (zh) |
JP (1) | JP7136888B2 (zh) |
KR (1) | KR102599689B1 (zh) |
CN (1) | CN111133418B (zh) |
IL (1) | IL273129B2 (zh) |
TW (1) | TWI786181B (zh) |
WO (1) | WO2019063200A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11194584B1 (en) * | 2019-07-19 | 2021-12-07 | Marvell Asia Pte, Ltd. | Managing out-of-order retirement of instructions |
CN117295426A (zh) | 2021-05-10 | 2023-12-26 | 日本烟草产业株式会社 | 气溶胶产生装置的电源单元 |
JPWO2022239512A1 (zh) | 2021-05-10 | 2022-11-17 | ||
EP4338628A1 (en) | 2021-05-10 | 2024-03-20 | Japan Tobacco, Inc. | Power supply unit for aerosol generation device |
JPWO2022239378A1 (zh) | 2021-05-10 | 2022-11-17 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1105069A (en) * | 1976-04-15 | 1981-07-14 | John W. Daughton | Control system for electrostatographic machines |
JPS63238630A (ja) * | 1987-03-26 | 1988-10-04 | Toshiba Corp | マイクロプロセツサの割込み制御装置 |
US6024486A (en) * | 1996-06-05 | 2000-02-15 | Compaq Computer Corporation | Data error detection and correction |
US6173248B1 (en) * | 1998-02-09 | 2001-01-09 | Hewlett-Packard Company | Method and apparatus for handling masked exceptions in an instruction interpreter |
FR2775370B1 (fr) * | 1998-02-20 | 2001-10-19 | Sgs Thomson Microelectronics | Procede de gestion d'interruptions dans un microprocesseur |
JP3600095B2 (ja) * | 1999-12-07 | 2004-12-08 | 松下電器産業株式会社 | 割り込み管理装置及び割り込み管理方法 |
US7882339B2 (en) * | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
JP4971676B2 (ja) * | 2006-04-28 | 2012-07-11 | ルネサスエレクトロニクス株式会社 | 割り込み制御回路及び割り込み制御方法 |
US7792805B2 (en) * | 2006-05-30 | 2010-09-07 | Oracle America, Inc. | Fine-locked transactional memory |
US8914620B2 (en) * | 2008-12-29 | 2014-12-16 | Oracle America, Inc. | Method and system for reducing abort rates in speculative lock elision using contention management mechanisms |
JP5214537B2 (ja) * | 2009-05-25 | 2013-06-19 | 株式会社東芝 | マルチプロセッサシステム |
US8225139B2 (en) * | 2009-06-29 | 2012-07-17 | Oracle America, Inc. | Facilitating transactional execution through feedback about misspeculation |
US9477515B2 (en) * | 2009-12-15 | 2016-10-25 | Intel Corporation | Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode |
US20120227045A1 (en) * | 2009-12-26 | 2012-09-06 | Knauth Laura A | Method, apparatus, and system for speculative execution event counter checkpointing and restoring |
US8438568B2 (en) * | 2010-02-24 | 2013-05-07 | International Business Machines Corporation | Speculative thread execution with hardware transactional memory |
WO2013115816A1 (en) * | 2012-02-02 | 2013-08-08 | Intel Corporation | A method, apparatus, and system for speculative abort control mechanisms |
US9256369B2 (en) * | 2012-04-18 | 2016-02-09 | Samsung Electronics Co., Ltd. | Programmable memory controller |
US9740549B2 (en) * | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9442737B2 (en) * | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
GB2499277B (en) | 2012-08-30 | 2014-04-02 | Imagination Tech Ltd | Global register protection in a multi-threaded processor |
US9081607B2 (en) * | 2012-10-24 | 2015-07-14 | International Business Machines Corporation | Conditional transaction abort and precise abort handling |
KR20150123922A (ko) | 2013-03-07 | 2015-11-04 | 미쓰비시덴키 가부시키가이샤 | 엔지니어링 툴 |
US9824039B2 (en) * | 2013-09-09 | 2017-11-21 | International Business Machines Corporation | Signal interrupts in a transactional memory system |
US9146774B2 (en) * | 2013-12-12 | 2015-09-29 | International Business Machines Corporation | Coalescing memory transactions |
US9348522B2 (en) * | 2013-12-12 | 2016-05-24 | International Business Machines Corporation | Software indications and hints for coalescing memory transactions |
US9207967B2 (en) * | 2014-01-07 | 2015-12-08 | Red Hat, Inc. | Using nonspeculative operations for lock elision |
US9465673B2 (en) * | 2014-02-27 | 2016-10-11 | International Business Machines Corporation | Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling |
US9817693B2 (en) | 2014-03-14 | 2017-11-14 | International Business Machines Corporation | Coherence protocol augmentation to indicate transaction status |
JP6438353B2 (ja) | 2015-05-27 | 2018-12-12 | ルネサスエレクトロニクス株式会社 | 半導体装置及び診断テスト方法 |
US9952895B2 (en) * | 2015-06-27 | 2018-04-24 | Vmware, Inc. | Implementing pseudo non-masking interrupts behavior using a priority interrupt controller |
US20170177338A1 (en) * | 2015-12-18 | 2017-06-22 | International Business Machines Corporation | Management of asynchronous interrupts in a transactional memory multiprocessor environment |
-
2017
- 2017-09-29 EP EP17386031.3A patent/EP3462312B1/en active Active
-
2018
- 2018-08-21 KR KR1020207010275A patent/KR102599689B1/ko active IP Right Grant
- 2018-08-21 JP JP2020516676A patent/JP7136888B2/ja active Active
- 2018-08-21 WO PCT/EP2018/072495 patent/WO2019063200A1/en active Application Filing
- 2018-08-21 IL IL273129A patent/IL273129B2/en unknown
- 2018-08-21 US US16/651,017 patent/US11663034B2/en active Active
- 2018-08-21 CN CN201880060737.9A patent/CN111133418B/zh active Active
- 2018-09-11 TW TW107131812A patent/TWI786181B/zh active
Also Published As
Publication number | Publication date |
---|---|
EP3462312B1 (en) | 2022-08-17 |
IL273129B1 (en) | 2023-12-01 |
JP2020535512A (ja) | 2020-12-03 |
CN111133418A (zh) | 2020-05-08 |
TWI786181B (zh) | 2022-12-11 |
US20200278882A1 (en) | 2020-09-03 |
JP7136888B2 (ja) | 2022-09-13 |
EP3462312A1 (en) | 2019-04-03 |
KR20200061361A (ko) | 2020-06-02 |
US11663034B2 (en) | 2023-05-30 |
WO2019063200A1 (en) | 2019-04-04 |
KR102599689B1 (ko) | 2023-11-08 |
IL273129B2 (en) | 2024-04-01 |
IL273129A (en) | 2020-04-30 |
CN111133418B (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI786181B (zh) | 在例外遮罩更新指令之後允許未中止的交易處理 | |
TWI812750B (zh) | 交易式比較及丟棄指令 | |
TWI801603B (zh) | 處理獨佔式載入指令的資料處理設備、方法及電腦程式 | |
US20190227901A1 (en) | Simulation of transactions | |
CN111164572B (zh) | 数据处理装置和方法 | |
TWI818114B (zh) | 用於異動式記憶體的設備與資料處理方法 | |
US20230315510A1 (en) | A technique for handling transactions in a system employing transactional memory | |
US11775297B2 (en) | Transaction nesting depth testing instruction |