TW201933092A - 事務巢套深度測試指令 - Google Patents
事務巢套深度測試指令 Download PDFInfo
- Publication number
- TW201933092A TW201933092A TW107131991A TW107131991A TW201933092A TW 201933092 A TW201933092 A TW 201933092A TW 107131991 A TW107131991 A TW 107131991A TW 107131991 A TW107131991 A TW 107131991A TW 201933092 A TW201933092 A TW 201933092A
- Authority
- TW
- Taiwan
- Prior art keywords
- transaction
- instruction
- state
- depth
- instructions
- Prior art date
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 78
- 238000012545 processing Methods 0.000 claims abstract description 126
- 230000004044 response Effects 0.000 claims abstract description 50
- 238000000034 method Methods 0.000 claims description 19
- 238000011084 recovery Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 13
- 238000001514 detection method Methods 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 claims description 3
- 238000003672 processing method Methods 0.000 claims description 3
- 238000013459 approach Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 230000001960 triggered effect Effects 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Investigating Or Analysing Biological Materials (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
在提供事務記憶體支援的系統中,提供事務巢套深度測試指令以觸發處理電路系統4將至少一個狀態值根據事務巢套深度設定為複數個狀態之一者,事務巢套深度指示給定執行緒的已執行的事務開始指令(而對應事務保持為未退出且未提交)的數量,複數個狀態包含在事務巢套深度為1時所選定的第一狀態,以及在事務巢套深度大於或小於1時所選定的至少一個進一步的狀態。所支援的ISA致能至少一個狀態值以及對至少一個狀態值位於第一狀態的條件分支的設定,條件分支回應於單一事務巢套深度測試指令與單一條件分支指令而執行。
Description
本發明相關於資料處理的領域。更特定而言,本發明相關於事務記憶體(transactional memory)。
資料處理系統可執行數個資料處理執行緒。有時,執行緒可需要存取共享資源,且資料處理作業的本質可使得一旦執行緒開始與共享資源互動,則可需要使用此資源原子地(atomically)完成一組作業,而同時沒有另一執行緒存取此資源。
用於處理此執行緒間衝突的一種技術,可為使用鎖(locks)來控制對於至少一個目標資源的專屬存取。例如,在一個執行緒開始存取特定位址區域中的資料時,執行緒可設定鎖變數以主張對於鎖的擁有權,且隨後在擁有鎖的執行緒具有對於鎖的擁有權的同時,查核鎖變數的其他執行緒可判定鎖已被主張,且因此可不輸入與此位址區域互動的碼區段。這種基於鎖式的作法可被看作是悲觀的,因為每一執行緒預設為假定此無法輸入存取共享資源的碼區段,因為可發生與另一執行緒的衝突,除非此執行緒具有對鎖的擁有權而確保不會發生衝突。然而,鎖識別器時常可控制對於數個資源(例如一位址範圍)的專屬存取,且因此不保證在一個執行緒正存取此鎖變數保護的資源組內的特定資源時,另一執行緒將無疑地存取相同資源。因此,在執行緒之間很少發生衝突的情況下,基於鎖式的作法可造成效能損失,因為執行緒可不必要地在輸入使用共享資源的關鍵碼區段之前等待鎖被釋放。
較樂觀的用於處理存取共享資源的執行緒之間的衝突的作法,可為使用事務記憶體支援。資料處理系統可具有電路系統以由處理電路系統支援在資料處理執行緒內執行事務。事務可為在事務開始指令與事務結束指令之間執行的執行緒事務,事務開始指令標示事務的開頭,事務結束指令標示事務的結尾。在事務開始指令與事務結束指令之間,處理電路系統可推測性地執行中介指令,並防止這些經推測性地執行的指令的結果的提交(commitment),直到到達事務結束指令為止。事務開始指令執行之後(但在到達事務結束指令之前)退出事件的發生,可造成事務退出且推測性指令被捨棄。可存在數種原因以退出事務,但一種原因可為偵測到與由另一執行緒進行的記憶體存取發生衝突。因此,藉由此作法,每一執行緒可樂觀地開始執行關鍵碼區段,假定將不會發生與其他執行緒的衝突,且若到達關鍵區段的結尾而沒有偵測到任何衝突,則事務結果可被提交。在很少發生衝突的情況下,使用事務記憶體支援可改良效能,藉由允許更多執行緒同時處理他們的關鍵碼區段。
至少一些範例提供一種設備,包含: 一指令解碼器,該指令解碼器用於解碼指令;以及 處理電路系統,該處理電路系統用於回應於該指令解碼器解碼的該等指令而執行資料處理程序,該處理電路系統包含事務記憶體支援電路系統以支援該處理電路系統的一資料處理執行緒內的一事務的執行,該事務包含在一事務開始指令與一事務結束指令之間推測性地執行的該執行緒的指令,該處理電路系統經配置以防止該事務的該等推測性地執行的指令的結果的提交,直到到達該事務結束指令為止,且該處理電路系統經配置以在於到達該事務結束指令之前發生一退出事件時退出該事務的處理程序; 其中回應於該指令解碼器對一事務巢套深度測試指令的解碼,該處理電路系統經配置以將至少一個狀態值設定為根據一事務巢套深度所選定的複數個狀態中之一者,該事務巢套深度指示一給定執行緒的已執行的事務開始指令(而該對應事務保持為未退出且未提交)的一數量,該複數個狀態包含在該事務巢套深度等於大於零的一預定數字時所選定的一第一狀態,以及在該事務巢套深度大於或小於該預定數字時所選定的至少一個進一步的狀態;以及 該指令解碼器經配置以支援一指令集架構,該指令集架構包含致能該指令解碼器的至少一種類型的條件分支指令,回應於一單一事務巢套深度測試指令與接續的一單一條件分支指令,以控制該處理電路系統根據該事務巢套深度設定至少一個狀態值,並對於該至少一個狀態值位於該第一狀態中而執行一條件分支。
至少一些範例提供一種資料處理方法,包含: 使用一指令解碼器解碼指令;以及 回應於該指令解碼器解碼的該等指令而執行資料處理程序,此係使用包含事務記憶體支援電路系統的處理電路系統,以支援該處理電路系統的一資料處理執行緒內的一事務的執行,該事務包含在一事務開始指令與一事務結束指令之間推測性地執行的該執行緒的指令,該處理電路系統經配置以防止該事務的該等推測性地執行的指令的結果的提交,直到到達該事務結束指令為止,且在於到達該事務結束指令之前發生一退出事件時退出該事務的處理程序; 回應於對一單一事務巢套深度指令的解碼,將至少一個狀態值設定為根據一事務巢套深度所選定的複數個狀態中之一者,該事務巢套深度指示一給定執行緒的已執行的事務開始指令(而該對應事務保持為未退出且未提交)的一數量,該複數個狀態包含在該事務巢套深度等於大於零的一預定數字時所選定的一第一狀態,以及在該事務巢套深度大於或小於該預定數字時所選定的至少一個進一步的狀態;以及 回應於接續該單一事務巢套深度指令的一單一條件分支指令的解碼,對位於該第一狀態中的該至少一個狀態值執行一條件分支。
至少一些範例提供一種電腦程式,用於控制主控資料處理設備以提供指令執行環境以執行指令,包含: 處理程式邏輯,用於支援執行在一資料處理執行緒內的一事務,該事務包含在一事務開始指令與一事務結束指令之間推測性地執行的該執行緒指令,而該處理程式邏輯經配置以防止該事務的該等推測性地執行的指令的結果的提交,直到到達該事務結束指令為止,並可於在到達該事務結束指令之前發生一退出事件時退出該事務的處理程序;以及 其中回應於一事務巢套深度測試指令,該處理程式邏輯經配置以將至少一個狀態值設定為根據一事務巢套深度所選定的複數個狀態中之一者,該事務巢套深度指示一給定執行緒的已執行的事務開始指令(而該對應事務保持為未退出且未提交)的一數量,該複數個狀態包含在該事務巢套深度等於大於零的一預定數字時所選定的一第一狀態,以及在該事務巢套深度大於或小於該預定數字時所選定的至少一個進一步的狀態;以及 該處理程式邏輯經配置以支援一指令集架構,該指令集架構包含致能該處理程式邏輯的至少一種類型的條件分支指令,回應於一單一事務巢套深度測試指令與接續的一單一條件分支指令,以根據該事務巢套深度設定該至少一個狀態值,並對於該至少一個狀態值位於該第一狀態中而執行一條件分支。
儲存媒體可儲存電腦程式。儲存媒體可為非暫態性儲存媒體。
資料處理設備可具有處理電路系統,處理電路系統具有事務記憶體支援電路系統,以由處理電路系統支援在資料處理執行緒內執行事務。事務包含在事務開始指令與事務結束指令之間推測性地執行的執行緒指令,而處理電路系統可防止事務的推測性地執行的指令的結果提交,直到到達事務結束指令為止,並可於在到達事務結束指令之前發生退出事件時退出事務的處理。
有時,所執行的程式碼可包含巢套事務組,其中對於內部事務的事務開始指令係於對於外部事務的事務開始指令之後執行,但在到達外部事務的事務結束指令之前且在退出外部事務之前執行。雖然對於一些硬體實施例而言,可能個別追蹤巢套事務組的每一事務的推測性結果,並致能將狀態回轉到巢套事務之任一者的開始處,但實際上這可需要事務記憶體支援電路系統內的大量資源以儲存多組狀態回復資料或多組推測性結果。實際上,此加入的資源可並非合理的,且因此處理電路系統可時常(為了至少一些目的而)等效地忽略巢套組的任何內部事務,單純將位於外部事務的事務開始指令與結束指令的邊界內的所有作業視為單一事務。例如,若在巢套事務組期間內的任意時間發生退出事件,則這可觸發將狀態回復至外部事務的事物開始指令。內部事務的事務結束指令可被忽略,且其可為觸發推測性地執行的指令結果的提交的外部事務的事務結束指令。即使硬體實際上不追蹤個別在給定執行緒的巢套事務組內的每一個別事務的狀態,可仍有用的是讓軟體界定這種巢套事務,例如以處理其中分支可轉移到位於第一事務開始指令之外的程式部分、且仍期望使用基於事務式機制來確保作業的原子性(atomicity)遵循分支進入點的情況中。
有時,執行在處理電路系統上的軟體可需要知道當前執行點是否位於已開始但尚未提交也未退出的事務內,或若在這種事務內時當前事務是巢套組的外部事務或是內部事務。例如,對於事務排程的決定,或對於如何回應退出事件的決定,可被取決於當前處理是在內部事務中或外部事務中來作成。再者,巢套的位準可為識別相關於先前事務開始指令的點(在此處進行分支)的間接方式。為了幫助追蹤事務巢套的當前位準,處理電路系統可維持指示事務巢套深度的事務巢套深度值。事務巢套深度可指示對於給定執行緒的所執行事務開始指令數,對於此給定執行緒對應的事務保持為未退出且未提交。例如,在事務巢套深度是零時這可指示還未開始事務,在事務巢套深度為一時這可指示當前執行點位於外部事務內,且在事務巢套深度為二或更多時這可指示當前執行點為巢套事務組的內部事務。
將事務巢套深度上的資訊暴露至軟體的一種作法,可為提供深度測試指令,深度測試指令將當前深度巢套深度與零比較並傳回一布林值,此布林值指示事務巢套深度當前是否為零。然而,這種類型的指令將無法指示處理是在巢套組的內部事務中還是外部事務中。另一作法可為提供一指令,此指令讀取事務巢套深度,並在軟體可存取暫存器內放置一值,以指示執行緒內的當前執行點的實際事務巢套深度。雖然這可致能軟體判定正處理的是內部事務或是外部事務,但這可需要進一步的指令以將事務巢套深度與參考值比較,在基於此比較作業的輸出執行條件分支之前,亦即除了基於事務巢套深度設定暫存器的指令以外還將需要兩個進一步的指令以觸發條件分支。
下面討論的技術提供事務巢套深度測試指令,在由指令解碼器解碼時此指令觸發處理電路系統以將至少一個狀態值設定為根據事務巢套深度所選定的複數個狀態之一者,其中複數個狀態包含在事務巢套深度等於一大於零的預定數字時所選定的第一狀態,以及在事務巢套深度大於或小於此預定數字時所選定的至少一個進一步的狀態。指令解碼器支援指令集架構(ISA),包含致能指令解碼器的至少一種類型的條件分支指令,回應於單一事務巢套深度測試指令與接續的單一條件分支指令,以控制處理電路系統根據事務巢套深度設定至少一個狀態值,並對於至少一個狀態值位於第一狀態中而執行條件分支。
因此,事務深度是否等於一大於零的預定數字,可透過單一事務巢套深度測試指令與單一條件分支指令來求出,這藉由減少了用於控制對巢套深度的條件性作業的效能的指令數量而改良了效能。這可有用於(例如)求出當前事務是巢套組的內部事務或外部事務。
可對於為2或更大的預定數字提供一些版本的事物巢套深度測試指令。這可提供較快的方式以判定特定巢套深度當前是否生效。
然而在許多情況中,特別有用的是為1的預定數字。因此,事務巢套深度指令可在事務巢套深度為1時設定至少一個狀態值為第一狀態,並在事務巢套深度為0(或2或更多)時設定至少一個狀態值為至少一個其他狀態。這可特別有用,因為若在外部事務中一些作業可被需要,而若在內部事務中(或根本不在事務中)一些作業可不被需要。
一些形式的事務巢套深度指令對於至少一個狀態值可產生兩個交替狀態之一者:第一狀態,使用在事務巢套深度等於預定數字時;以及第二狀態,使用在事務巢套深度大於或小於預定數字時(在此情況中至少一個其他狀態可僅包含第二狀態)。這將致能測試系統是否當前位於特定位準的巢套深度(例如在預定數字為1時,處理程序當前是否在外部事務中)。
然而實際上,可有用的是分辨三或更多種不同的情況,使得至少一個狀態值被設為下列之一者:第一狀態,在事務巢套深度等於預定數字時;第二狀態,在事務巢套深度小於預定數字時;以及第三狀態,在事務巢套深度大於預定數字時。這致能了隨後分辨三個感興趣的情況的條件式作業(例如在預定數字是1時,各別分辨是否根本不在事務中、在內部事務中與在外部事務中)。
由指令解碼器支援的ISA可包含一或更多種類型的條件分支指令,這些指令(協同式地)致能指令解碼器控制處理電路系統,以根據事務巢套深度設定至少一個狀態值,以及對位於複數個狀態中之一目標狀態中的至少一個狀態值執行條件分支,回應於由單一條件分支指令接續的單一事務巢套深度測試指令,不論目標狀態是第一狀態、第二狀態或第三狀態。藉由此作法,在預定數字為1時,對於處理程序是否位於事務中(第二狀態)、處理程序是否位於外部事務中(第一狀態)以及處理程序是否位於內部事務中(第三狀態)的所有三個問題,可全部由單一事務巢套深度測試指令與單一條件分支指令來求出。
存在可於其中實施事務巢套深度測試指令的數種方法。
在一個範例中,設備可具有儲存至少一個條件狀態值的條件狀態儲存元件,條件狀態值指示先前執行的指令的處理結果的至少一個性質。回應於由指令解碼器解碼事務巢套深度測試指令,處理電路系統可設定至少一個條件狀態值以對應於將事務巢套深度與預定數字比較的結果。
條件狀態儲存元件可由條件狀態相依類型條件分支指令使用,以根據條件狀態儲存元件中儲存的至少一個狀態值是否滿足由條件分支指令指定的測試條件,來選擇是否要轉移到分支目標位址。例如,至少一個條件狀態值可包含條件碼值,條件碼值被回應於處理邏輯執行的一些類型的程式指令、根據結果的一些性質來設定。例如,至少一個條件狀態值可包含第一旗標、第二旗標、第三旗標、及或第四旗標,第一旗標指示程式指令的結果是否為零,第二旗標指示結果是否為負,第三期標指示是否從處理結果的最高有效位元產生進位(因為結果將不能容納在所提供的位元數中),第四旗標指示在二進制補數算術運算中是否存在從正值到負值的迴繞(wrap around)。將理解到,亦可使用條件旗標來呈現結果的其他性質。條件分支指令可指定條件碼,條件碼代表條件碼要滿足測試條件所必須符合的特定準則組。
因此在一些範例中,事務巢套深度測試指令可寫入由其他指令使用的相同條件狀態旗標,且條件狀態旗標可被使用指定測試條件的通用條件狀態相依條件分支指令來測試,而測試條件被根據要觸發分支的特定事務巢套深度來選定。這致能碼區段的處理程序,這些碼區段需要條件式地執行作業,根據處理程序當前是否位於事務中或是位於外部或內部事務中,以更有效率地執行。
設定至少一個條件狀態值可不為事務巢套深度測試指令的唯一結果。例如在一些變異中,除了設定至少一個條件狀態值以外,事務巢套深度測試指令的解碼,亦可觸發處理電路系統寫入事務巢套深度值,事務巢套深度值向通用暫存器呈現事務巢套深度以儲存用於指令的運算子。通用暫存器可由事務巢套深度測試指令的編碼來指定。因此,需要對於精確事務巢套深度的知識的更複雜的作業(包含分辨不同位準的內部事務),隨後可測試寫入通用暫存器的事務巢套深度值,以執行進一步的作業。
在另一範例中,事務巢套深度測試指令可將至少一個狀態值寫入事務巢套深度測試指令所指定的通用暫存器。
例如,寫入通用暫存器的至少一個狀態值可具有下列之一者:第一編碼,其中所有位元等於0;第二編碼,其中第一預定位元等於1且第二預定位元等於0;以及第三編碼,其中第一預定位元等於0且第二預定位元等於1。第一狀態可由這三個編碼的任一種來代表。若至少一個其他狀態僅包含代表事務巢套深度大於或小於預定數字的第二狀態,則第二狀態可對應於未用於第一狀態的其他兩個編碼之任一者。在至少一個其他狀態包含分別代表事務巢套深度小於或大於預定數字的個別第二與第三狀態的實施例中,則第二狀態與第三狀態可使用未用於第一狀態的其他兩個編碼之任一者(無論哪種方式皆可)。
在這種編碼下,可使用不同類型的條件分支指令,以判定至少一個狀態值是否具有第一、第二與第三編碼中之一者(且編程器或編譯器根據所使用的狀態與編碼之間的映射、以及哪種特定狀態為感興趣的目標狀態,來選定適當類型的條件分支指令)。
例如,ISA可包含指定目標暫存器的與零比較類型的條件分支指令。回應於與零比較類型的條件分支指令的解碼,處理電路系統可對等於0的目標暫存器的所有位元執行條件分支。因此,這致能了測試較早事務巢套深度測試指令是否設定至少一個狀態值為上文討論的第一編碼,僅使用接續單一事務巢套深度測試指令的單一條件分支指令。
ISA可包含位元測試類型的條件分支指令,此指令指定目標暫存器的預定位元。回應於與位元測試類型的條件分支指令的解碼,處理電路系統可對等於1的目標暫存器的預定位元執行條件分支,或對等於0的目標暫存器的預定位元執行條件分支。在一些實施例中,條件分支指令的非零位元測試與零位元測試變異,可被提供在ISA中,以分別致能測試預定位元是1或0。位元測試類型的條件分支指令,可用於測試較早事務巢套深度測試指令是否設定至少一個狀態值為上文討論的第二或第三編碼,使用接續單一事務巢套深度測試指令的單一條件分支指令。
事務記憶體支援電路系統可包含數個資源,以支援使用事務記憶體機制執行事務。例如,事務記憶體支援電路系統可包含回復狀態儲存電路系統,以儲存回應於事務開始指令而擷取的事務回復狀態以在退出事務時回復。在一些情況中,外部事務的事務開始指令可觸發對於事務回復狀態的擷取,且對於內部事務的事務回復狀態的擷取可被抑制(於遭遇事務開始指令時在事務巢套深度大於零時)。
事務記憶體支援電路系統亦可包含推測性結果儲存電路系統,以儲存對於至少一個執行緒的至少一個事務的至少一些推測性地執行的指令的結果。在一些情況中,僅有一些類型的指令可將結果儲存到推測性結果儲存電路系統,例如,用於寫入記憶體的儲存指令可使他們要儲存的資料被推測性地保持在推測性結果儲存器中,直到事務可被提交為止,而操作暫存器的通用算數指令可單純寫入這些暫存器,由於回復狀態在往後可允許這些結果被捨棄,在狀態被迴轉到先前的執行點時。
事務記憶體支援電路系統亦可具有衝突偵測電路系統,以偵測在第一執行緒事務內對於給定位址的資料存取,以及另一執行緒對於相同位址的資料存取之間的衝突。回應於偵測到衝突,衝突偵測電路系統可觸發退出事件。對於退出事件的其他理由,可包含在事務處理期間內發生的中斷或例外(exceptions)、事務記憶體支援電路系統內的儲存器中容量不足以容納更多事務推測性結果、或所遭遇的事務中不允許存取的一些指令。事務記憶體支援電路系統亦可具有位址追蹤電路系統,以追蹤事務內指令所存取的位址,且衝突偵測電路系統可使用所追蹤的位址來識別與其他執行緒的衝突。
設備可具有事務巢套深度儲存元件,以儲存代表事務巢套深度的事務巢套深度值。例如,可提供內部暫存器。儲存事務巢套深度值的暫存器不需為軟體可存取式,因此事務巢套深度測試指令可被提供以將事務巢套深度暴露至軟體架構。
在一些情況中,所儲存的事務巢套深度值可恰好對應於當前事務巢套深度。例如,可維持計數器,計數器開始於零且在事務開始指令執行時增量、在事務結束指令執行時減量、並在退出事務執行時重置為零。然而,亦可存在其他呈現事務深度的方式。例如,若計數器開始於除了零以外的值,則即使在處理程序當前不於事務內時事務巢套深度可為零,所儲存的事務深度值仍可為非零(例如在所儲存的事務深度值與實際事務深度之間可存在偏差)。
因此,對於其中事務巢套深度測試指令設定條件狀態儲存元件以對應於事務巢套深度與預定數字的比較結果的實施例,不需要實際比較所儲存的事務巢套深度值與大於零的預定數字。若名義上的事務巢套深度值(指示所執行的給定執行緒事務開始指令的實際數字,對於此執行緒而言對應的事務保持為未退出且未提交)被與預定數字比較,則任何比較作業可被執行,產生等於本將產生的結果的結果。例如,若所儲存的事務巢套深度值事實上偏差自實際事務巢套深度,則比較實際上可比較所儲存值與偏差自預定數字一對應量的一數字。再者,在一些情況中,若事務巢套深度被由一些方式編碼於所儲存值內,則同樣的,比較可為更複雜的作業,以解碼事務巢套深度碼並識別要被寫入狀態儲存元件的對應狀態值(根據事務巢套深度對應於零、一或更多)。因此,可存在數種方式以達成相同的結果。從指令集架構的觀點看來,結果相同於明確指示事務巢套深度的值被與大於零的預定數字比較時的情況,但與此結果是否實際以此方式產生無關。
對應的電腦程式可控制主控資料處理設備,以提供指令執行環境以讓指令執行,其中如上文所討論的,處理程式邏輯支援事務巢套深度測試指令與ISA。這種電腦程式可允許通用主控資料處理設備(自身不具有事務記憶體支援電路或用於事務巢套深度測試指令的指令解碼器支援)受益自事務記憶體功能性與改良的巢套深度測試,即使並沒有提供這些特徵的實際硬體。相反的,電腦程式提供模擬此功能性的程式邏輯(諸如指令集或資料結構),致能通用主控資料處理設備執行碼,碼意為在提供這種硬體功能的設備上執行。
第1圖示意圖示說明具有硬體事務記憶體(HTM)支援的資料處理設備2的範例。設備具有處理邏輯4,以執行指令來施行資料處理作業。例如,處理邏輯4可包含執行單元以執行各種類型的處理作業,諸如:算數邏輯單元(ALU)以施行算數或邏輯作業,諸如加法、乘法、及(AND)、或(OR)等等;浮點運算單元,用於對浮點運算子執行作業;或向量處理單元,用於對包含多個資料元件的向量運算子執行向量處理。提供架構性暫存器6組,用於儲存處理邏輯4執行的指令的運算子,以及用於儲存指令執行的結果。架構性暫存器6包含用於儲存至少一個狀態值(例如條件旗標)的狀態暫存器7,指示先前執行的指令的結果的性質。指令解碼器8解碼從指令快取記憶體10取得的指令,以產生控制訊號以控制處理邏輯4或資料處理設備2的其他元件,以執行相關的作業。亦提供載入/儲存單元12,以執行載入作業(回應於指令解碼器8解碼的載入指令)以從資料快取記憶體14或主記憶體16將資料值載入架構性暫存器6,並執行儲存作業(回應於指令解碼器8解碼的儲存指令)以從架構性暫存器6將資料值儲存至資料快取記憶體14或記憶體16。
設備2亦具有事務記憶體支援電路系統20,事務記憶體支援電路系統20提供各種資源以支援硬體事務記憶體(HTM)。事務記憶體支援電路系統20中的HTM資源,可例如包含:用於儲存事務推測性結果的推測性結果儲存器22;用於追蹤事務存取位址的位址追蹤電路系統24;用於偵測事務的資料存取與其他執行緒的資料存取之間的衝突,以在偵測到衝突時可退出事務的衝突偵測電路系統26;用於儲存事務開始時來自架構性暫存器6的架構性狀態資料的快照,以在退出事務時可回復至此狀態以覆寫事務推測性結果的回復狀態儲存電路系統28。HTM資源20亦包含儲存巢套深度值的巢套深度暫存器30,巢套深度值代表正在處理邏輯4內運作的任何事務的當前事務巢套深度。
第2圖圖示使用事務記憶體支援電路系統20與處理邏輯4,執行給定執行緒內的事務的範例。事務為由事務開始指令(tstart)與事物結束指令(tcommit)包圍的程式碼區段。如第2圖圖示,回應於事務開始指令,架構性暫存器6中的當前架構性狀態被截取並被儲存在回復狀態儲存電路系統28中。在tstart指令之後,處理邏輯4開始執行隨後指令的推測性執行,且隨著這些指令被執行,這些指令所存取的位址被由位址追蹤電路系統24追蹤,且衝突偵測電路系統26偵測所追蹤位址與回應於其他執行緒而使用載入/儲存單元12進行的存取的位址之間的衝突。事務內指令的至少一些推測性結果,被儲存在推測性結果儲存電路系統22內。例如,回應於儲存指令STR而儲存在快取記憶體或記憶體中的值,在事物保持進行中時可被固持在推測性結果儲存器22中。若到達事務結束指令(tcommit)而沒有發生退出事件,則推測性結果回應於事務結束指令而被提交。在提交事務時,儲存在對此執行緒的推測性結果儲存器22中的任何結果,可被寫入資料快取記憶體14或記憶體16,且回復狀態28可被捨棄或被准許覆寫,由於不再需要將結構性狀態回轉到遭遇事務開始指令之前的狀態。
另一方面,若發生了退出事件(例如在衝突偵測電路系統26在另一執行緒存取已由事務存取的位址時偵測到衝突時),則觸發事務退出,且來自回復狀態儲存器28的回復狀態被回復至架構性暫存器6。退出事件的其他成因,可例如包含:執行不允許在事務內執行的指令;用於處理推測性結果或給定事務所需之位址的推測性結果儲存器22或位址追蹤電路系統24內的資源不足;或在事務期間接收到中斷。
第3圖圖示巢套事務組的範例。一開始,在對任何先前事務的處理碼已被提交或退出時(此後尚未執行隨後的開始指令),巢套深度值30代表的巢套深度為0。回應於第一事務開始指令,當前架構性狀態被截取並被儲存至回復狀態儲存器28,且巢套深度被增量至1。隨後的指令被在巢套指令集的此外部事務內處理。若在到達外部事務的事務結束指令之前遭遇另一事務開始指令,則不擷取回復狀態,以節省回復狀態儲存器28內的資源,但將巢套深度暫存器30增量以指示巢套深度2。類似的,隨後的事務開始指令可對巢套深度觸發進一步的增量,以給出巢套深度值3,如第3圖圖示。對應於在巢套深度為非零時(且對此事務內的指令將具有2或更多的巢套深度)執行的事務開始指令的事務被視為內部事務,相對於外部事務,對於外部事務在巢套深度為0時事務開始指令被執行,且在事務內的指令將對應於巢套深度1。
若退出事件發生在接續外部事務的事務開始指令後的任何時候,則儲存在回復狀態儲存器28中的狀態被回復至架構性暫存器6,這表示處理程序被有效地回轉到外部事務的原始事務開始指令。因此,可不能夠回復對應於內部事務的事務開始指令的狀態。回應於退出事件,巢套深度被重置為0。
在存在任何退出事件時,內部事務的事務結束指令被忽略,且在到達對應於外部事務的事務結束指令時,自從外部事務事務開始指令以來所執行的處理程序的任何推測性結果被提交。換言之,在事務結束指令被執行且巢套深度為2或更多時,不會發生結果的提交。在事務結束指令被在巢套深度為1時執行時,結果被提交。回應於每一事務結束指令,巢套深度被減量,且在巢套深度返回至0時,這表示所有突出的事務皆已完成,且處理程序現在位於任何事務之外。處理事務的此作法,表示僅必須要將一組推測性結果儲存資源位址追蹤資源或回復狀態儲存資源,分配至特定執行緒,不論巢套事務數量為何,這節省了更多資源以讓其他執行緒執行事務。
然而,有時候軟體可需要知道當前處理程序是否位於事務內(以及當前處理程序是在內部事務內或外部事務內)。
第4圖圖示用於解出這些問題的事務巢套深度測試(ttest)指令的第一範例。回應於事務深度測試指令,指令解碼器8控制處理邏輯4以執行作業,這等於將當前事務巢套深度與大於零的預定值比較的結果。在此範例中預定數字為1。回應於比較,狀態暫存器7中的條件旗標被設定為根據比較結果的一值。可選的,事務深度測試指令的一些變異,亦可指定額外的通用暫存器Rx,且若是如此,則代表當前事務巢套深度的巢套深度值可被寫入所指定的暫存器。
第5圖圖示根據比較以設定狀態暫存器7中的狀態旗標的範例。狀態旗標包含: l 負旗標N,在指令結果為正時被設為0,且在結果為負時被設為1; l 零旗標Z,在結果為零時被設為1,且在結果為非零時被設為0; l 進位旗標C,在指令值不匹配可用位元數且因此產生最高有效位元的進位時被設為1,且在其他情況下被設為0;以及 l 溢位旗標V,在從使用二補數二元值可代表的最正值,溢位至二補數格式中可代表的最負值時(反之亦然),溢位旗標V被設為1。
如圖示於第5圖的表格中,在巢套深度為0時(不在事務中),回應於ttest指令,狀態旗標被設為第一狀態,其中Z與C旗標被設為0,且N與V旗標可為任意值(0或1)。在事務巢套深度為1(在外部事務中)時,狀態旗標被設為第二狀態,其中Z與C旗標兩者被設為1,且N與V旗標同樣地可為任意值。在事務巢套深度大於1(在內部事務內)時,狀態旗標被設為第三狀態,其中Z旗標被設為0,C旗標被設為1,且N與V旗標同樣地可為任意值。這致能隨後的條件分支指令或其他條件指令基於旗標狀態以執行條件作業。條件指令可指定條件碼,條件碼識別要施加至狀態暫存器7中旗標的特定測試條件。下面的表格代表不同的條件碼,以及為了滿足此測試條件而要滿足的對應旗標值:
藉由此作法,可使用一系列的兩個指令來回答下列問題之任意者,如下:
第4圖圖示其中比較器50比較巢套深度與預定值1的範例。可藉由從巢套深度減去1並基於結果設定旗標,來達成等效結果。再者,在一些情況中,巢套深度值可不被呈現在完全對應於第3圖指示的實際巢套深度的表格中,且在此情況中,處理邏輯4可包含一些電路系統以解譯使用在巢套深度暫存器30中的巢套深度的代表,並產生等效結果,如同巢套深度的明確指示被與1比較般。再者,在一些變異中,相對於與1比較,事務測試指令可與2以上比較。
第6圖圖示事務巢套深度測試指令的第二範例,在此範例中此指令指定通用暫存器Rx,至少一個狀態值應被與根據巢套深度暫存器30指示的當前事務巢套深度選擇的狀態寫入通用暫存器Rx。如第6圖表格所圖示,所指定暫存器Rx的兩個位元可被設為編碼0b00、0b01或0b10,根據巢套深度是0、1或大於1。所指定的暫存器的所有其他位元可被設為0。儘管第6圖圖示在巢套深度0、1與大於1以及3個編碼之間的一個特定映射,其他實施例可切換所使用的映射(例如,另一實施例可使用0b00代表在巢套深度為1或大於1的情況之一者)。然而,第6圖表格中圖示的作法可更為直覺,由於位元對對應於巢套深度的二元值(飽和於2,使得不論巢套深度是2或更多,編碼為0b10)。
如第6圖底部所圖示的,可由實施在指令解碼器8與處理電路系統4中的ISA,支援不同類型的條件分支指令。這些形式的條件分支指令,致能測試巢套深度是否符合特定目標狀態,而僅有單一ttest指令與單一條件分支指令,不論感興趣的目標狀態是第6圖表格圖示的三種狀態之任意者。將理解到,一或更多個中介指令(條件分支指令獨立於這些指令,且這些指令不覆寫ttest指令結果)可被執行在ttest指令與條件分支指令之間—在此情況中由於中介指令不影響事務巢套深度比較與分支,狀態值與條件分支的設定仍有效地由兩個指令控制。
若感興趣的目標狀態對應於0b00(例如在第6圖範例中的巢套深度0),則可使用與零比較類型的條件分支指令(CBZ),這指定來源暫存器Rn與指示分支目標位址的標籤。回應於CBZ指令,解碼器8控制處理邏輯4以分支到標籤所指示的分支目標位址,若來源暫存器Rn中的所有位元為0。因此,藉由執行CBZ指令指示先前ttest指令的目的暫存器Rx為來源暫存器Rx,這致能了根據0b00狀態的條件分支僅由兩個指令來進行。
若感興趣的目標狀態對應於0b01或0b10,則可使用位元測試類型的條件分支指令(TBZ或TBNZ),這種指令將來源暫存器Rt、識別來源暫存器內的特定位元位置的立即值#imm、以及指示分支目標位址的標籤指定為運算子。在其他範例中,位元位置可由另一來源暫存器指示,而非立即值。回應於TBZ指令,解碼器8控制處理邏輯4以分支到標籤所指示的分支目標位址,若所指定位元位置處的位元等於0。回應於TBNZ指令,解碼器8控制處理邏輯4以分支到標籤所指示的分支目標位址,若所指定位元位置處的位元等於1。提供兩種形式的TBZ/TBNZ指令不是必要的,由於任一指令可用於測試0b01與0b10狀態兩者,藉由改變所指定(藉由#imm)要測試之位元位置的位元位置。同樣地,藉由執行TBZ或TBNZ指令(來源暫存器Rt對應於先前ttest指令的目的暫存器Rx),這致能了根據0b01或0b10狀態的條件分支由兩個指令來進行。
第7圖圖示用於控制事務深度測試指令的執行的流程圖。在步驟100,執行單一事務巢套深度測試指令。回應於指令解碼器8回應於事務巢套深度測試指令所產生的控制訊號,在步驟102處理電路系統根據事務巢套深度設定至少一個狀態值為複數個狀態之一者,包含至少第一狀態(在事務巢套深度等於預定值(例如1)時)與至少一另一狀態(在事務巢套深度大於或小於預定值時)。在步驟104,執行單一條件分支指令,根據回應於單一ttest指令所設定的至少一個狀態值。
第8圖圖示說明可使用的模擬器實施例。儘管先前說明的具體實施例對於用於操作支援相關技術的特定處理程序硬體的設備與方法來實施本發明,但也可能根據本文所說明的具體實施例透過使用電腦程式來提供指令執行環境。這種電腦程式時常被稱為模擬器,由於他們提供硬體結構的基於軟體式的實施例。各種模擬器電腦程式包含模擬器、虛擬機器、模型、與二元轉譯器(包含動態二元轉譯器)。通常來說,模擬器實施例可執行在主控處理器230上,可選地執行主控作業系統220,支援模擬器程式210。在一些設置中,硬體與所提供的指令執行環境,及或提供在相同主控處理器上的多個分異的指令執行環境之間,可存在多層模擬。歷史上,需要高能力的處理器以提供在合理速度下執行的模擬器實施例,但這種作法在某些情況下可為合理的,諸如在為了相容性或再利用的理由,想要執行專屬於另一處理器的碼時。例如,模擬器實施例可由主控處理器硬體不支援的額外功能性提供指令執行環境,或提供通常相關聯於不同硬體架構的指令執行環境。對於模擬的綜觀可見於「Some Efficient Architecture Simulation Techniques」, Robert Bedichek, Winter 1990 USENIX Conference, 第53 - 63頁。
就先前已參考特定硬體構造或特徵描述實施例而言,在模擬具體實施例中,可通過合適的軟體構造或特徵來提供等效功能。例如,特定電路系統可被在模擬具體實施例中實施為電腦程式邏輯。類似的,諸如暫存器或快取記憶體的記憶體硬體,可被在模擬具體實施例中實施為軟體資料結構。在其中在前述具體實施例中參照的硬體元件之一或更多者存在在主控硬體(例如主控處理器230)上的設置中,一些模擬具體實施例可在適當時利用主控硬體。
模擬器程式210可被儲存在電腦可讀取儲存媒體上(可為非暫態性媒體),並提供程式介面(指令執行環境)至目標碼200(可包含應用程式、作業系統與管理器),這相同於模擬程式210所模型化的硬體架構的應用程式介面。因此,目標碼200的程式指令(包含前述事務巢套深度測試指令)可被使用模擬器程式210從指令執行環境內執行,因此事實上不具有前述設備2之硬體特徵的主控電腦230可模擬這些特徵。
其他的範例設置揭示於下列條款中:
(1) 一種設備,包含: 指令解碼器,指令解碼器用於解碼指令; 處理電路系統,處理電路系統用於回應於指令解碼器解碼的指令而執行資料處理程序,處理電路系統包含事務記憶體支援電路系統以支援處理電路系統的資料處理執行緒內的事務的執行,事務包含在事務開始指令與事務結束指令之間推測性地執行的執行緒的指令,處理電路系統經配置以防止事務的推測性地執行的指令的結果的提交,直到到達事務結束指令為止,且處理電路系統經配置以在於到達事務結束指令之前發生退出事件時退出事務的處理程序;以及 狀態儲存元件,狀態儲存元件儲存至少一個狀態值,狀態值指示先前執行的指令的處理結果的至少一個性質; 其中回應於由指令解碼器解碼事務巢套深度測試指令,處理電路系統經配置以設定至少一個條件狀態值以對應於將事務巢套深度與大於零的預定數字比較的結果,其中該事務巢套深度指示給定執行緒的已執行的事務開始指令(而對應事務保持為未退出且未提交)的數量。
(2) 一種資料處理方法,包含以下步驟: 回應於經解碼的指令而執行資料處理程序,此係使用包含事務記憶體支援電路系統的處理電路系統,以支援處理電路系統的資料處理執行緒內的事務的執行,事務包含在事務開始指令與事務結束指令之間推測性地執行的執行緒的指令,處理電路系統經配置以防止事務的推測性地執行的指令的結果的提交,直到到達事務結束指令為止,且在於到達事務結束指令之前發生退出事件時退出事務的處理程序; 儲存至少一個狀態值,狀態值指示先前執行的指令的處理結果的至少一個性質;以及 回應於事務巢套深度測試指令的解碼,設定至少一個條件狀態值以對應於將事務巢套深度與大於零的預定數字比較的結果,其中事務巢套深度指示給定執行緒的已執行的事務開始指令(而對應事務保持為未退出且未提交)的數量。
(3) 一種電腦程式,用於控制主控資料處理設備以提供指令執行環境以執行指令,包含: 處理程式邏輯,用於支援執行在資料處理執行緒內的事務,事務包含在事務開始指令與事務結束指令之間推測性地執行的執行緒指令,而處理程式邏輯經配置以防止事務的推測性地執行的指令的結果的提交,直到到達事務結束指令為止,並可於在到達事務結束指令之前發生退出事件時退出事務的處理程序;以及 狀態資料結構,狀態資料結構儲存至少一個狀態值,狀態值指示先前執行的指令的處理結果的至少一個性質; 其中回應於事務巢套深度測試指令,處理程式邏輯經配置以設定該至少一個狀態值以對應於將事務巢套深度與大於零的預定數字比較的結果,其中該事務巢套深度指示給定執行緒的已執行的事務開始指令(而對應事務保持為未退出且未提交)的數量。
(4) 一種儲存媒體,儲存條款(3)所述之電腦程式。
在本申請案中,用詞「經配置以...」用於表示設備元件具有能夠施行所界定的作業的配置。在此背景內容中,「配置」表示硬體或軟體的交互連結的設置或方式。例如,設備可具有提供所界定的作業的專屬硬體,或可經編程以執行功能的處理器或其他處理裝置。「經配置以」不隱含設備元件需要以任何方式改變以提供所界定的作業。
雖然本文已參照附加圖式詳細說明了本發明的說明性具體實施例,但應瞭解到本發明並不限於這些精確的具體實施例,且在本發明所屬技術領域中具有通常知識者將可進行各種改變與修改,而不脫離如附加申請專利範圍所界定的本發明的精神與範圍。
2‧‧‧資料處理設備
4‧‧‧處理邏輯
6‧‧‧架構性暫存器
7‧‧‧狀態暫存器
8‧‧‧指令解碼器
10‧‧‧指令快取記憶體
12‧‧‧載入/儲存單元
14‧‧‧資料快取記憶體
16‧‧‧記憶體
20‧‧‧事務記憶體支援電路系統
22‧‧‧推測性結果儲存器
24‧‧‧位址追蹤電路系統
26‧‧‧衝突偵測電路系統
28‧‧‧回復狀態儲存電路系統
30‧‧‧巢套深度暫存器
50‧‧‧比較器
100‧‧‧步驟
102‧‧‧步驟
104‧‧‧步驟
200‧‧‧目標碼
210‧‧‧模擬程式
220‧‧‧主控作業系統
230‧‧‧主控電腦
在連同附加圖式閱讀下面的範例說明之後,將可顯然明瞭本技術的進一步的態樣、特徵與優點,在圖式中:
第1圖示意圖示說明具有事務記憶體支援電路系統的資料處理設備的範例;
第2圖圖示使用事務記憶體資源的事務的處理範例;
第3圖圖示巢套事務組的範例;
第4圖圖示事務巢套深度測試指令的第一範例;
第5圖圖示設定至少一個狀態值,以對應於將事務巢套深度與1比較的結果的範例;
第6圖圖示事務巢套深度測試指令的第二範例;
第7圖圖示說明處理事務巢套深度測試指令的方法的流程圖;以及
第8圖圖示說明可使用的模擬器範例。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
Claims (22)
- 一種設備,包含: 一指令解碼器,該指令解碼器用於解碼指令;以及 處理電路系統,該處理電路系統用於回應於該指令解碼器解碼的該等指令而執行資料處理程序,該處理電路系統包含事務記憶體支援電路系統以支援該處理電路系統的一資料處理執行緒內的一事務的執行,該事務包含在一事務開始指令與一事務結束指令之間推測性地執行的該執行緒的指令,該處理電路系統經配置以防止該事務的該等推測性地執行的指令的結果的提交,直到到達該事務結束指令為止,且該處理電路系統經配置以在於到達該事務結束指令之前發生一退出事件時退出該事務的處理程序; 其中回應於該指令解碼器對一事務巢套深度測試指令的解碼,該處理電路系統經配置以將至少一個狀態值設定為根據一事務巢套深度所選定的複數個狀態中之一者,該事務巢套深度指示一給定執行緒的已執行的事務開始指令(而該對應事務保持為未退出且未提交)的一數量,該複數個狀態包含在該事務巢套深度等於大於零的一預定數字時所選定的一第一狀態,以及在該事務巢套深度大於或小於該預定數字時所選定的至少一個進一步的狀態;以及 該指令解碼器經配置以支援一指令集架構,該指令集架構包含致能該指令解碼器的至少一種類型的條件分支指令,回應於一單一事務巢套深度測試指令與接續的一單一條件分支指令,以控制該處理電路系統根據該事務巢套深度設定至少一個狀態值,並對於該至少一個狀態值位於該第一狀態中而執行一條件分支。
- 如請求項1所述之設備,其中該預定數字為1。
- 如請求項1與2之任一項所述之設備,其中該至少一個進一步的狀態包含: 一第二狀態,在該事務巢套深度小於該預定數字時該第二狀態被選定;以及 一第三狀態,在該事務巢套深度大於該預定數字時該第三狀態被選定。
- 如請求項3所述之設備,其中該指令集架構包含一或更多種類型的條件分支指令,該等條件分支指令致能該指令解碼器控制該處理電路系統,以根據該事務巢套深度設定該至少一個狀態值,以及對位於該複數個狀態中之一目標狀態中的該至少一個狀態值執行一條件分支,回應於由一單一條件分支指令接續的一單一事務巢套深度測試指令,不論該目標狀態是該第一狀態、該第二狀態或該第三狀態。
- 如請求項1與2之任一項所述之設備,該設備包含一條件狀態儲存元件以儲存至少一個條件狀態值,該至少一個條件狀態值指示一先前執行指令的一處理結果的至少一個性質; 其中回應於由該指令解碼器解碼該事務巢套深度測試指令,該處理電路系統經配置以設定該至少一個條件狀態值以對應於將該事務巢套深度與該預定數字比較的一結果。
- 如請求項5所述之設備,其中回應於該指令解碼器對於一條件狀態相依條件分支指令的解碼指示一測試條件,該處理電路系統經配置以對儲存在該條件狀態儲存元件中的該至少一個條件狀態值是否滿足該測試條件執行該條件分支。
- 如請求項5所述之設備,該設備包含複數個通用暫存器以儲存用於指令的運算子; 其中回應於由該指令解碼器解碼該事務巢套深度測試指令,該處理電路系統經配置以將代表該事務巢套深度的一事務巢套深度值寫入該事務巢套深度測試指令指定的一通用暫存器。
- 如請求項1與2之任一項所述之設備,該設備包含複數個通用暫存器以儲存用於指令的運算子, 其中回應於由該指令解碼器解碼該事務巢套深度測試指令,該處理電路系統經配置以將該至少一個狀態值寫入該事務巢套深度測試指令指定的一通用暫存器。
- 如請求項1與2之任一項所述之設備,其中在該第一狀態中,該至少一個狀態值具有下列之一者: 一第一編碼,其中所有位元等於0; 一第二編碼,其中一第一預定位元等於1,且一第二預定位元等於0;以及 一第三編碼,其中該第一預定位元等於0,且該第二預定位元等於1。
- 如請求項3所述之設備,其中: 在該第一、第二與第三狀態中之一第一者,該至少一個狀態值具有一第一編碼,其中所有位元等於0; 在該第一、第二與第三狀態中之一第二者,該至少一個狀態值具有一第二編碼,其中一第一預定位元等於1,且一第二預定位元等於0;以及 在該第一、第二與第三狀態中之一第三者,該至少一個狀態值具有一第三編碼,其中該第一預定位元等於0,且該第二預定位元等於1。
- 如請求項1與2之任一項所述之設備,其中回應於該指令解碼器對指示一目標暫存器的一與零比較類型的條件分支指令的解碼,該處理電路系統經配置以對等於0的該目標暫存器的所有位元執行該條件分支。
- 如請求項1與2之任一項所述之設備,其中回應於該指令解碼器對指定一目標暫存器的一預定位元的一位元測試類型的條件分支指令的解碼,該處理電路系統經配置以對等於1的該目標暫存器的該預定位元執行該條件分支,或對等於0的該目標暫存器的該預定位元執行該條件分支。
- 如請求項1與2之任一項所述之設備,該設備包含一事務巢套深度儲存元件,以儲存代表該事務巢套深度的一事務巢套深度值。
- 如請求項1與2之任一項所述之設備,其中該事務記憶體支援電路系統包含回復狀態儲存電路系統,以儲存回應於該事務開始指令而擷取的事務回復狀態以在退出該事務時回復至該事務回復狀態。
- 如請求項14所述之設備,其中該處理電路系統經配置以: 在該事務巢套深度等於零時回應於該事務開始指令而擷取該事務回復狀態,以及 在該事務巢套深度大於零時回應於該事務開始指令而抑制對該事務回復狀態的擷取。
- 如請求項1與2之任一項所述之設備,其中該事務記憶體支援電路系統包含推測性結果儲存電路系統,以儲存對於至少一個執行緒的至少一個事務的該等推測性地執行的指令的該等結果。
- 如請求項1與2之任一項所述之設備,其中該事務記憶體支援電路系統包含衝突偵測電路系統,以偵測在一第一執行緒的一事務內對於一給定位址的一資料存取,以及另一執行緒對於該相同位址的一資料存取之間的一衝突。
- 如請求項17所述之設備,其中該衝突偵測電路系統經配置以回應於偵測到該衝突,而觸發該退出事件。
- 如請求項1與2之任一項所述之設備,其中該事務記憶體支援電路系統包含位址追蹤電路系統,以追蹤一事務內的指令存取的位址。
- 一種資料處理方法,包含以下步驟: 使用一指令解碼器解碼指令;以及 回應於該指令解碼器解碼的該等指令而執行資料處理程序,此係使用包含事務記憶體支援電路系統的處理電路系統,以支援該處理電路系統的一資料處理執行緒內的一事務的執行,該事務包含在一事務開始指令與一事務結束指令之間推測性地執行的該執行緒的指令,該處理電路系統經配置以防止該事務的該等推測性地執行的指令的結果的提交,直到到達該事務結束指令為止,且在於到達該事務結束指令之前發生一退出事件時退出該事務的處理程序; 回應於對一單一事務巢套深度指令的解碼,將至少一個狀態值設定為根據一事務巢套深度所選定的複數個狀態中之一者,該事務巢套深度指示一給定執行緒的已執行的事務開始指令(而該對應事務保持為未退出且未提交)的一數量,該複數個狀態包含在該事務巢套深度等於大於零的一預定數字時所選定的一第一狀態,以及在該事務巢套深度大於或小於該預定數字時所選定的至少一個進一步的狀態;以及 回應於接續該單一事務巢套深度指令的一單一條件分支指令的解碼,對位於該第一狀態中的該至少一個狀態值執行一條件分支。
- 一種電腦程式,用於控制主控資料處理設備以提供指令執行環境以執行指令,包含: 處理程式邏輯,用於支援執行在一資料處理執行緒內的一事務,該事務包含在一事務開始指令與一事務結束指令之間推測性地執行的該執行緒指令,而該處理程式邏輯經配置以防止該事務的該等推測性地執行的指令的結果的提交,直到到達該事務結束指令為止,並可於在到達該事務結束指令之前發生一退出事件時退出該事務的處理程序;以及 其中回應於一事務巢套深度測試指令,該處理程式邏輯經配置以將至少一個狀態值設定為根據一事務巢套深度所選定的複數個狀態中之一者,該事務巢套深度指示一給定執行緒的已執行的事務開始指令(而該對應事務保持為未退出且未提交)的一數量,該複數個狀態包含在該事務巢套深度等於大於零的一預定數字時所選定的一第一狀態,以及在該事務巢套深度大於或小於該預定數字時所選定的至少一個進一步的狀態;以及 該處理程式邏輯經配置以支援一指令集架構,該指令集架構包含致能該處理程式邏輯的至少一種類型的條件分支指令,回應於一單一事務巢套深度測試指令與接續的一單一條件分支指令,以根據該事務巢套深度設定該至少一個狀態值,並對於該至少一個狀態值位於該第一狀態中而執行一條件分支。
- 一種儲存媒體,儲存請求項21所述之電腦程式。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP17386030.5A EP3462308B1 (en) | 2017-09-29 | 2017-09-29 | Transaction nesting depth testing instruction |
??17386030.5 | 2017-09-29 | ||
EP17386030.5 | 2017-09-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201933092A true TW201933092A (zh) | 2019-08-16 |
TWI784049B TWI784049B (zh) | 2022-11-21 |
Family
ID=60117617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107131991A TWI784049B (zh) | 2017-09-29 | 2018-09-12 | 事務巢套深度測試指令 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11775297B2 (zh) |
EP (1) | EP3462308B1 (zh) |
JP (1) | JP7256177B2 (zh) |
KR (1) | KR102597201B1 (zh) |
CN (1) | CN111108473B (zh) |
IL (1) | IL273130B2 (zh) |
TW (1) | TWI784049B (zh) |
WO (1) | WO2019063203A1 (zh) |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5125092A (en) * | 1989-01-09 | 1992-06-23 | International Business Machines Corporation | Method and apparatus for providing multiple condition code fields to to allow pipelined instructions contention free access to separate condition codes |
US20070106883A1 (en) * | 2005-11-07 | 2007-05-10 | Choquette Jack H | Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction |
US7730286B2 (en) * | 2005-12-30 | 2010-06-01 | Intel Corporation | Software assisted nested hardware transactions |
US20090182983A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Compare and Branch Facility and Instruction Therefore |
EP2332043B1 (en) * | 2008-07-28 | 2018-06-13 | Advanced Micro Devices, Inc. | Virtualizable advanced synchronization facility |
US9268596B2 (en) * | 2012-02-02 | 2016-02-23 | Intel Corparation | Instruction and logic to test transactional execution status |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US8966324B2 (en) * | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9430166B2 (en) | 2012-08-10 | 2016-08-30 | International Business Machines Corporation | Interaction of transactional storage accesses with other atomic semantics |
JP6642806B2 (ja) | 2013-10-14 | 2020-02-12 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ロック無効化とロックの選択を用いたデータ共有のための適応プロセス |
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 |
GB2533414B (en) | 2014-12-19 | 2021-12-01 | Advanced Risc Mach Ltd | Apparatus with shared transactional processing resource, and data processing method |
US10942744B2 (en) | 2014-12-24 | 2021-03-09 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
IN2015DE01753A (zh) | 2015-06-11 | 2015-08-28 | Pradeep Varma |
-
2017
- 2017-09-29 EP EP17386030.5A patent/EP3462308B1/en active Active
-
2018
- 2018-08-21 KR KR1020207010274A patent/KR102597201B1/ko active IP Right Grant
- 2018-08-21 CN CN201880060691.0A patent/CN111108473B/zh active Active
- 2018-08-21 WO PCT/EP2018/072560 patent/WO2019063203A1/en active Application Filing
- 2018-08-21 JP JP2020516707A patent/JP7256177B2/ja active Active
- 2018-08-21 IL IL273130A patent/IL273130B2/en unknown
- 2018-08-21 US US16/651,045 patent/US11775297B2/en active Active
- 2018-09-12 TW TW107131991A patent/TWI784049B/zh active
Also Published As
Publication number | Publication date |
---|---|
JP2020535513A (ja) | 2020-12-03 |
EP3462308B1 (en) | 2022-03-02 |
KR20200061360A (ko) | 2020-06-02 |
CN111108473B (zh) | 2023-10-27 |
IL273130A (en) | 2020-04-30 |
WO2019063203A1 (en) | 2019-04-04 |
IL273130B1 (en) | 2023-12-01 |
JP7256177B2 (ja) | 2023-04-11 |
TWI784049B (zh) | 2022-11-21 |
KR102597201B1 (ko) | 2023-11-02 |
IL273130B2 (en) | 2024-04-01 |
US20200257551A1 (en) | 2020-08-13 |
US11775297B2 (en) | 2023-10-03 |
EP3462308A1 (en) | 2019-04-03 |
CN111108473A (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI533126B (zh) | 執行階段檢測報告 | |
TW201401045A (zh) | 自較低特殊權限狀態控制執行階段檢測設施之操作 | |
US11663034B2 (en) | Permitting unaborted processing of transaction after exception mask update instruction | |
CN112334874B (zh) | 数据处理装置和数据处理方法 | |
TW201403313A (zh) | 執行階段檢測導向取樣 | |
US10853223B2 (en) | Simulation of transactions | |
TWI818114B (zh) | 用於異動式記憶體的設備與資料處理方法 | |
TWI784049B (zh) | 事務巢套深度測試指令 | |
CN111164572B (zh) | 数据处理装置和方法 |