TWI818114B - 用於異動式記憶體的設備與資料處理方法 - Google Patents
用於異動式記憶體的設備與資料處理方法 Download PDFInfo
- Publication number
- TWI818114B TWI818114B TW108141169A TW108141169A TWI818114B TW I818114 B TWI818114 B TW I818114B TW 108141169 A TW108141169 A TW 108141169A TW 108141169 A TW108141169 A TW 108141169A TW I818114 B TWI818114 B TW I818114B
- Authority
- TW
- Taiwan
- Prior art keywords
- transaction
- type
- address
- instruction
- circuitry
- Prior art date
Links
- 238000003672 processing method Methods 0.000 title claims description 3
- 230000001960 triggered effect Effects 0.000 claims abstract description 18
- 238000012545 processing Methods 0.000 claims description 130
- 230000004044 response Effects 0.000 claims description 48
- 239000000725 suspension Substances 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 14
- 238000012360 testing method Methods 0.000 claims description 4
- 230000001419 dependent effect Effects 0.000 claims 1
- 238000000034 method Methods 0.000 description 27
- 238000001514 detection method Methods 0.000 description 10
- 238000012544 monitoring process Methods 0.000 description 10
- 238000013459 approach Methods 0.000 description 6
- 238000011084 recovery Methods 0.000 description 5
- 238000004088 simulation Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 101150060298 add2 gene Proteins 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000000717 retained 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/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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- 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/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
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
- G06F9/528—Mutual exclusion algorithms by using speculative mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Communication Control (AREA)
Abstract
在具有異動式記憶體支援電路系統20的設備2中,對於利用第一類型異動開始指令所開始之第一類型異動,跟隨該第一類型異動開始指令之後經推測地執行的指令之結果被防止提交,直到到達異動結束指令為止。在偵測到在來自另一線程的記憶體存取的位址與針對該異動所追蹤之位址之間的衝突時,中止被觸發。對於利用第二類型異動開始指令所開始之第二類型異動,讀取操作的位址被標記成可追蹤的,同時寫入操作的位址被省略而不標記成可追蹤的。此允許支援異動式記憶體的設備也被用於多字位址監看。
Description
本揭示案有關資料處理的領域。更特定地,本揭示案有關異動式記憶體。
資料處理系統可執行數個資料處理的線程(thread)。有時,線程可需要存取一共享資源而資料處理操作的性質可能使得一旦一線程開始與該共享資源互動,則可能需要在沒有另一線程在同時存取該資源的情況下才能讓一組操作完成原子地(atomically)利用該資源。
用於處置線程之間的此種衝突的一個技巧是利用鎖定來控制對至少一個目標資源的排他存取(exclusive access)。例如,當一個線程開始存取在一特定位址區域中的資料時,該線程可設定一鎖定變數以聲明對該鎖定的所有權,且接著在擁有該鎖定的線程具有該鎖定之所有權的同時,檢查該鎖定變數的其他線程可判定該鎖定已經被聲明而因此可能不會進入與該位址區域互動的代碼區段。此種基於鎖定的做法能被視為悲觀的,在於各線程預設上假設其無法進入存取該共享資源的代碼區段,因為可能發生與另一線程的衝突,除非其具有該鎖定的所有權確保了不會發生衝突。然而,往往一鎖定識別符可控制對數個資源(例如一位址範圍)的排他存取,而因此若一個線程正在存取由該鎖定變數保護的一組資源內的特定資源,不保證另一線程將一定存取相同資源。因此,在線程之間鮮少衝突的情況中,基於鎖定的作法可導致效能的損失,因為線程可能在進入利用該共享資源之代碼的關鍵區段(critical section)前不必要地等待鎖定被釋放。
用於處理存取共享資源的線程之間的衝突的理想做法可能是利用異動式記憶體支援。資料處理系統可具有電路系統以支援藉由該處理電路系統對一資料處理線程內的一異動的執行。該異動可為該線程在一異動開始指令與一異動結束指令之間所執行的指令,該異動開始指令標記該異動的開始而該異動結束指令標記該異動的結束。在異動開始與結束指令之間,處理電路系統可推測地執行介入的指令並防止該些經推測地執行的指令的結果的提交,直到到達異動結束指令為止。跟隨異動開始指令之執行(但在到達異動結束指令之前)的一中止(abort)事件之發生可能造成該異動被中止且該推測結果被丟棄。中止一異動有數個理由,但一個理由可是偵測到與另一線程所做之記憶體存取的衝突。因此,藉此種做法各線程可假設不會發生與其他線程的衝突下理想地開始處理關鍵區段的代碼,且接著若在沒有偵測到任何衝突下到達關鍵區段的最後,則能提交該異動的結果。在衝突稀少的情況中,利用異動式記憶體支援能藉著允許更多線程同步地處理其關鍵區段的代碼來改善效能。
在本文所述的一範例實施例中一種設備包含:用以解碼指令的一指令解碼器;處理電路系統,其用以回應於該等指令被該指令解碼器解碼而進行資料處理;異動式記憶體支援電路系統,其用以支援在該處理電路系統所處理的一資料線程內的一異動的執行,該異動式記憶體支援電路系統包含位址追蹤電路系統以追蹤由該異動內之指令存取的位址;對於利用一第一類型異動開始指令所開始之一第一類型異動,該指令解碼器經配置以控制該處理電路系統去防止跟隨該第一類型異動開始指令之後經推測地執行的指令之結果的提交,直到到達一異動結束指令為止,其中該異動式記憶體支援電路系統經配置以在偵測到在來自另一線程的一記憶體存取的一位址與該位址追蹤電路系統所追蹤之該些位址之間的一衝突時觸發該異動的一中止;及對於利用一第二類型異動開始指令所開始之一第二類型異動,該指令解碼器經配置以控制該處理電路系統,藉由將在該異動內之一讀取操作的一位址標記成可由該位址追蹤電路系統追蹤的以回應於該讀取操作的執行,以及藉由省略將該異動內之一寫入操作的一位址標記成可由該位址追蹤電路系統追蹤以回應於該寫入操作的執行。
本文中也描述有一種資料處理方法,包含下列步驟:利用一指令解碼器將指令解碼;利用一設備的處理電路系統來進行資料處理以回應於該等經解碼指令,該設備包含異動式記憶體支援電路系統以支援在該處理電路系統所處理的一資料線程內的一異動的執行,該異動式記憶體支援電路系統包含位址追蹤電路系統以追蹤由該異動內之指令所存取的位址,其中對於利用一第一類型異動開始指令所開始之一第一類型異動,該指令解碼器經配置以控制該處理電路系統去防止跟隨該第一類型異動開始指令之後經推測地執行的指令之結果的提交,直到到達一異動結束指令為止,其中該異動式記憶體支援電路系統經配置以在偵測到在來自另一線程的一記憶體存取的一位址與該位址追蹤電路系統所追蹤之該些位址之間的一衝突時觸發該異動的一中止;及回應於利用一第二類型異動開始指令所開始之一第二類型異動,由該指令解碼器來控制該處理電路系統,藉由將在該異動內之一讀取操作的一位址標記成可由該位址追蹤電路系統追蹤的以回應於該讀取操作的執行,以及藉由省略將該異動內之一寫入操作的一位址標記成可由該位址追蹤電路系統追蹤的以回應於該寫入操作的執行。
本文中也描述一種用於控制一主機資料處理設備以提供一指令執行環境的電腦程式,該指令執行環境用於指令之執行,該電腦程式包含:指令解碼程式邏輯,其用以解碼目標碼之指令以控制該主機資料處理設備去進行資料處理;異動式記憶體支援程式邏輯,其用以支援在一資料處理線程內之一異動的執行,該異動式記憶體支援程式邏輯包含位址追蹤程式邏輯以追蹤由該異動內之指令所存取的位址,其中對於利用一第一類型異動開始指令所開始之一第一類型異動,跟隨該第一類型異動開始指令之後經推測地執行的指令之結果被防止提交,直到到達一異動結束指令為止,且該異動式記憶體支援程式邏輯經配置以在偵測到在來自另一線程的一記憶體存取的一位址與該位址追蹤程式邏輯所追蹤之該些位址之間的一衝突時觸發該異動的一中止;及回應於利用一第二類型異動開始指令所開始之一第二類型異動,該指令解碼程式邏輯經配置以藉由將在該異動內之一讀取操作的一位址標記成可由該位址追蹤程式邏輯追蹤的以回應於該讀取操作的執行,以及藉由省略將該異動內之一寫入操作的一位址標記成可由該位址追蹤程式邏輯追蹤的以回應於該寫入操作的執行。
本文中也描述有一種儲存該電腦程式的儲存媒體。
在參照隨附圖式討論實施例之前,提供以下對實施例的說明。
按照一種範例配置方式,提供有一種設備,該設備能夠支援利用第一類型異動開始指令開始的第一類型異動和利用第二類型異動開始指令開始的第二類型異動。跟隨第二類型異動開始指令之後,讀取操作的位址被標記成可追蹤的同時省略將寫入操作的位址標記成可追蹤的。
設想不追蹤針對一異動的寫入可能被視為是違反直覺的,因為乍看似乎全然打敗異動的真正目的(就是提供一組無法原子地分割的操作,以確保對共享資源的排他存取)。然而,發明人了解到也能利用異動於其他目的,在該些目的不需要確保該異動的排他存取。
例如位址監看是一種用於使一線程上執行的軟體能夠偵測何時一特定記憶體位址被另一線程或另一處理器核心更新的技術。實行位址監看的一做法是輪詢,其中一線程上執行的軟體必須重複地讀取該位址以檢查是否該位址已改變,但這緩慢且耗電。另一種做法中架構能提供對單一位址的自動(非輪詢)監視,藉由執行一載入排他(load exclusive)指令以針對一特定位址設定「排他的」狀態。提供有排他監視器硬體來監視其他線程或核心的存取,並當偵測到對該位址的寫入被標記成排他的時移除該排他狀態。若已從該目標位址移除該排他狀態則接續的儲存排他(store exclusive)指令失效,且原先的軟體能利用此來找出是否該位址已被寫入。然而,此種做法無法良好地擴張為同時輪詢多個位址,因此大部分架構將排他狀態的設定限制為一次僅一個位址。一種替代做法是利用一對映或虛擬信箱,其中在硬體中監看的單一位址被利用為一個信箱,其指示出是否一組(或一範圍)的其他位址已被更新。藉著此做法,更新了其中一位址的另一軟體也必須更新該虛擬信箱位址以對於已實施更新一事發信。將被通知有關該更新的線程接著在該信箱位址被更新時中斷,但接著為了決定該另一軟體真正更新的是哪個另一位址,在此數目或範圍中的各位址仍將需要被該中斷的線程個別地輪詢。因此,該等位址監看的作法無法隨著將被監看之位址的個數增加而良好地擴張。
發明人了解到在支援異動式記憶體的系統中,已經有用於監視對多重位址之存取以及當該等位址之一被存取時中斷軟體處理的邏輯,也就是用於偵測何時中止異動的衝突偵測邏輯。因此能藉由相對少的額外硬體來實行多重位址監看。進一步瞭解到進入第一類型異動在僅被用於位址監看時不必然是運算密集的,因為全部讀取及寫入操作的位址都需要被追蹤。因此,瞭解到提供能夠支援第二類型異動的設備是更有效率的,其中讀取操作的位址被標記成可追蹤的但是省略將寫入位址標記成可追蹤的,如此在沒有第一類型異動的全部運算負擔下提供一種能夠監看多重位址的設備。
在一些範例配置中對於第一類型異動,該異動式記憶體支援電路系統經配置以觸發對架構狀態的擷取,該架構狀態將在中止該異動的狀況下被復原;及對於第二類型異動,該異動式記憶體支援電路系統經配置以省略對該架構狀態的擷取。如此允許復原狀態被擷取並被使用在第一類型異動的中止事件中,但針對第二類型異動省略對復原狀態的擷取,藉以減少負擔以及開始第二類型異動中的處理延遲。
在一些範例配置中對於第一類型異動,跟隨該異動結束指令之後該指令解碼器經配置以控制該處理電路系統丟棄經擷取的該架構狀態或允許其後續被覆寫。藉由到達異動結束指令,第一類型異動將已成功執行,而因此將不需要復原架構狀態。藉由丟棄經擷取架構狀態,能釋放記憶體或暫存器空間以用於其他處理操作。
在一些範例配置中對於第二類型異動,該異動式記憶體支援電路系統經配置以在偵測到在該異動內所執行之該讀取操作的該位址與來自另一線程之一寫入操作的一位址之間的一衝突時觸發該異動的一中止。因此,如此提供當偵測到衝突時停止異動的一手段。尤其在這種情況中,衝突是在該異動內執行之讀取操作的位址與來自另一線程之一寫入操作的一位址之間;換言之是當另一線程嘗試寫入該異動中之位址之一者時,該位址已被標記成可追蹤的。相反地,對於第一類型異動,該衝突可能在該異動中的一讀取操作與來自另一線程的一寫入操作之間,或者在該異動中的一寫入操作與來自另一線程的一讀取操作之間。
在一些範例配置中該異動式記憶體支援電路系統經配置以回應於至少一個其他事件而觸發該第二類型異動的中止。例如,可能觸發中止的另一事件可能是系統重設、中斷(interrupt)、不被允許在一異動內執行的一指令的執行、或不充足的儲存。此針對觸發中止還有衝突提供了數種不同機制。
在一些範例配置中對於第二類型異動,該指令解碼器經配置以控制該處理電路系統回應於該中止而省略架構狀態的復原。對於第二類型異動,寫入位址沒有被標記成已被該異動存取,但在該異動期間該架構狀態可能仍改變(例如任何載入或算術指令可能更新該異動執行所在之核心的暫存器中的架構狀態)。然而,第二類型異動沒有像在普通異動式記憶體中般被使用於確保一組操作的原子化處置,反而被使用於位址監看,其中沒有要求一組操作要原子化地完成。因此,若第二類型異動被中止,不需要復原前一狀態,因為任何介入指令的結果仍為有效的。省略復原步驟因此減少了該異動之中止所帶來的運算負擔(及處理延遲),並增加處理效率。
在一些範例配置中對於第二類型異動,該處理電路系統經配置以進行下列中之至少一者:提交該異動的介入指令的結果以回應於該第二類型異動的中止;或在不等待該異動結束指令下提交該第二類型異動內部的指令的結果。不像第一類型異動,對於第二類型而言即使假設有中止其介入結果可為有效的。因此,在中止時提交是好的,或者在整個異動期間僅提交任何介入結果而不等待異動結束指令。在不等待該異動結束指令下提交該第二類型異動內部的指令的結果代表介入結果不需要被緩衝在一緩衝器中,如此更為節省能源。提交該異動的介入指令的結果以回應於該第二類型異動的中止代表對第二類型異動的處置更類似於對第一類型異動的處置,因此需要較少控制修改。
在一些範例配置中對於第二類型異動,該指令解碼器回應一預先決定類型之指令而控制該處理電路系統去暫停對指令的處理,直到接收到有關該中止已被觸發的一通知為止。如此將該處理電路系統置於監看配置方式中,其中在該異動內沒有處理進一步操作,直到觸發一中止為止,藉以提供低負擔(例如低功率)的位址追蹤手段。
在一些範例配置中該預先決定類型之指令指明儲存一位址指示的一暫存器,該位址指示表示出來自觸發該中止之該另一線程的該記憶體存取的該位址。此提供記錄觸發了該中止之記憶體存取的位址的手段。
在一些範例配置中,回應於該第二類型異動之該中止被觸發,該處理電路系統經配置以儲存一中止原因指示,該中止原因指示表示出是否該中止是一衝突所觸發的。此提供了記錄中止原因的手段,這對於線程要決定是否該中止確實是對其中一個被追蹤位址的更新所致,還是為了一些其他原因(像是中斷)是有用的。此協助軟體去決定如何在異動中止之後繼續處理。
在一些範例配置中,該預先決定類型之指令指明儲存一位址指示的一暫存器,該位址指示表示出來自觸發該中止之該另一線程的該記憶體存取的該位址。此允許軟體決定在被追蹤的多個位址之中哪個特定位址被更新,並依此回應。此避免了為了找出哪個位址被更新而輪詢被追蹤之多個位址之各者(如同在以上討論的替代做法中)的需要。
在一些範例配置中該中止原因指示經儲存在相同於該位址指示的暫存器中。此允許中止原因與觸發該中止之記憶體存取的位址被記錄在相同位置中,允許其他處理操作的容易存取。可預期記憶體位址應與暫存器為相同寬度,因此也在相同暫存器中具有用於中止原因指示的空間可被視為違反直覺的。然而,由於位址調正(align)的限制條件(可能要求記憶體位址調正為特定大小的位元組個數),位址的低位部分一定全部是0而因此能被再使用以指明中止原因指示。替代地,有些架構可能沒有完全使用整個位址空間(例如僅使用潛在的64位元位址空間中的48位元),因此可能於高位處有閒置位元能被利用以提供中止原因指示。該指令僅有一個目的地暫存器要更新可能在微架構上較易於實施,且在暫存器的利用中產生較少的暫存器壓力。
然而,在其他實例中該中止原因指示可經儲存在不同於該位址指示的一個一般用途暫存器中。此種做法的一優點可能是暫存器中提供的位址指示可被直接利用以觸發另一記憶體存取,而不必先要遮蔽該中止原因指示。
在一些範例配置中該設備包含一控制暫存器以儲存至少一條件狀態指示,該條件狀態指示表示出一先前處理結果的一屬性;其中:回應於一條件式指令,該指令解碼器經配置以控制該處理電路系統進行一有條件的操作,該有條件的操作取決於是否儲存在該控制暫存器中的該至少一條件狀態指示滿足一測試條件;及該中止原因指示包含該至少一條件狀態指示的至少一個。因此,中止原因指示能被直接記錄至該(等)條件狀態指示,後者能被一條件式指令直接測試,因而減少跟隨該中止之後所必需的處理步驟個數,因為中止原因指示被利用作為進入該有條件的操作中的輸入,不需要一介入比較指令來測試該中止原因指示及依此建立條件狀態指示。
相應的電腦程式可控制一主機資料處理設備去提供用於指令之執行的指令執行環境,其中處理程式邏輯回應於第二類型異動開始指令而將讀取操作的位址標記成可追蹤的,同時省略將寫入操作的位址標記成可追蹤的。這樣的電腦程式可允許通用的主機資料處理設備,其自身不具有異動式記憶體支援電路系統或者支援第一或第二類型異動開始指令的指令解碼器而無法受益於異動式記憶體功能以及第二類型異動的位址監看功能,即使可能沒有真正的硬體提供了該等特性。替代地,該電腦程式提供了模擬此功能的程式邏輯(像是指令集或資料結構),致使通用主機資料處理設備能夠執行原意為執行在確實有提供此硬體特性的設備上的代碼。
現將參照圖式來說明特定實施例。
第1圖圖示具有硬體異動式記憶體(HTM)支援之資料處理設備2的範例。該設備具有處理電路系統(處理邏輯)4,用於執行指令以實行資料處理操作。例如處理電路系統4可包括用於執行各種類型處理操作的執行單元,像是用於實行像是加法、乘法、AND、OR、等等之算術或邏輯操作的算術/邏輯單元(ALU);浮點單元,用於在浮點運算元上進行操作;或用於在包含多個資料元素的向量運算元上實行向量處理的向量處理單元。一組架構暫存器6經提供以儲存用於處理電路系統4所執行之指令的運算元及儲存經執行之指令的結果。一指令解碼器8將從一指令快取10抓取的指令解碼以生成控制信號,以供控制處理電路系統4或資料處理設備2的其他元件來進行相關操作。也提供一載入/儲存單元12來進行載入操作(回應於指令解碼器8所解碼的載入指令)來從資料快取14或主記憶體16載入一資料值到架構暫存器6中,以及進行儲存操作(回應於指令解碼器8所解碼的儲存指令)以將一資料值從架構暫存器6儲存至資料快取14或記憶體16。
設備2也具有異動式記憶體支援電路系統20,其提供各種資源以供支援硬體異動式記憶體(HTM)。異動式記憶體支援電路系統20中的HTM資源可包括例如用於儲存推測的異動結果的推測結果儲存22、用於追蹤一異動所存取之位址的位址追蹤電路系統24、用於偵測一異動所做之資料存取與其他線程所做之資料存取之間的衝突(因此當偵測到衝突時能中止一異動)的衝突偵測電路系統26、以及用於在異動開始時儲存對來自架構暫存器6之架構狀態資料的快照(因此當異動中止時能復原該狀態來覆寫推測的異動結果)的復原狀態儲存電路系統28。另外,該等資源可包括用於強力鎖定識別符的一鎖定儲存結構30,以及用於儲存一巢套深度值的巢套深度暫存器32,該巢套深度值追蹤異動的巢套位準,之後將更詳細說明。
第2圖顯示利用異動式記憶體支援電路系統20及處理電路系統4在一給定線程內執行第一類型異動的範例。該第一類型異動是由第一類型異動開始指令(tstart)及一異動結束指令(tcommit)界定範圍的一程式碼區段。如第2圖中所示,回應於第一類型異動開始指令在架構暫存器6中的當前架構狀態被擷取並儲存在復原狀態儲存電路系統28中。處理電路系統4開始對跟隨tstart指令之後的接續指令進行推測執行,且隨著該等指令被執行,由該些指令存取的位址被位址追蹤電路系統24追蹤,且衝突偵測電路系統26偵測在經追蹤位址與回應於其他線程而利用載入/儲存單元12所做之存取的位址之間的衝突。在該異動內之指令的至少一些推測結果被儲存在推測結果儲存電路系統22內。例如回應於儲存指令STR而被儲存至快取或記憶體的值可在異動維持暫停(pending)的同時被保留在推測結果儲存22中。若在同時沒有發生中止事件之下到達異動結束指令(tcommit),則回應於該異動結束指令提交推測結果。在提交異動之下,針對該線程儲存在推測結果儲存22中的任何結果可被寫入至資料快取14或記憶體16,而經擷取架構狀態復原狀態28能被丟棄或被允許被覆寫,因為不再需要它來將架構狀態倒帶至遇到該第一類型異動開始指令之前的點。
另一方面,若發生一中止事件,例如當另一線程存取該異動已經存取之位址時衝突偵測電路系統26偵測到一衝突,則觸發該異動的中止且來自復原狀態儲存28的經擷取架構狀態被復原至架構暫存器6。中止事件的其他原因可能例如包括:不被允許在一異動內執行的指令的執行、推測結果儲存22或位址追蹤電路系統24內的資源不足以處理一給定異動所必須的推測結果或位址、或者在該異動期間接收到的中斷。
第3圖顯示利用異動式記憶體支援電路系統20及處理電路系統4在一給定線程內執行第二類型異動的範例。第二類型異動是以一第二類型異動開始指令開始的程式碼區段。在第3圖中之範例中第二類型異動開始指令是一特定指令(startl)。替代地,經先前設定在一控制暫存器中的一旗標能被用以針對異動開始指令是第一類型或第二類型一事發信。如第3圖中所示,回應於該第二類型異動開始指令,處理電路系統26回應於該異動內之一讀取操作(像是載入指令LD x0, [A]到LD x4, [E])的執行,藉由位址追蹤電路系統24將該讀取操作的一位址(例如第3圖中顯示的位址[A]至[E])標記為可追蹤的。相反於第一類型異動,處理電路系統26回應於該異動內之一寫入操作的執行,藉由省略由位址追蹤電路系統24將該寫入操作的一位址標記成可追蹤的。換言之在第3圖的範例中遇到像是STR[#add2]之儲存指令時,針對該記憶體位址的寫入旗標不被標記。
如第3圖中所圖示,異動式記憶體支援電路系統20也能經配置以省略對於第二類型異動之架構狀態的擷取。換言之,對於第二類型異動,在沒有擷取架構狀態下進行跟隨tstartl指令之後的指令,對於第2圖中顯示之第一類型異動開始指令tstart將會擷取該架構狀態。
若當另一線程寫入由於第二類型異動之讀取集之部分而已被追蹤的一位址時衝突偵測電路系統26偵測到一衝突,則異動式記憶體支援電路系統20經配置以觸發該第二類型異動的中止。該異動式記憶體支援電路系統也能經配置以觸發該第二類型異動的中止來回應至少一個其他事件,例如不被允許在一異動內執行的一指令的執行、系統重設、推測結果儲存22或位址追蹤電路系統24內的資源不充足、或在該異動期間接收到的中斷。回應於第二類型異動的中止,處理電路系統4可經配置以進行各種不同動作。例如處理電路系統4可經配置以提交該異動之介入指令的結果來回應第二類型異動的中止。替代地或額外地,處理電路系統4可經配置以在不等待異動結束指令下提交第二類型異動內部之指令的結果。替代地或額外地,處理電路系統4可經配置以儲存一中止原因指示,該中止原因指示表示出是否該中止是被一衝突觸發的。
第3圖也圖示用於與第二類型異動使用的一預先決定類型之指令(wft)。回應於wft指令,處理電路系統暫停處理指令,直到接收到已觸發中止的一通知為止。換言之,該異動中之指令的處理被暫停直到有中止(例如在已被標記成可追蹤的位址與來自另一線程之寫入操作之間的衝突所致)為止。如第3圖中所圖示,wft指令指明一暫存器x5來儲存位址指示,該位址指示表示出來自觸發中止的另一線程所存取的記憶體之位址。此指示可為對觸發中止的一集合中的第一位址的指示,而不是對個別位址。當處理電路系統4回應於一中止而儲存一中止原因指示時,此中止原因指示能被儲存在與位址指示相同的暫存器中。替代地該中止原因指示能被儲存在不同於位址指示的一般用途暫存器中,例如在狀態暫存器中。
設備2也能包含一控制暫存器以儲存至少一個條件狀態指示,該條件狀態指示表示出一先前處理結果的屬性。回應於一條件式指令指令解碼器8經配置以控制處理電路系統4去進行一有條件的操作,該有條件的操作取決於是否控制暫存器中所儲存的該至少一個條件狀態指示滿足一測試條件。該中止原因指示則包含該至少一個條件狀態指示中的至少一個。
第4圖顯示利用異動式記憶體支援電路系統20及處理電路系統4在一給定線程內執行第二類型異動的另一範例。如同第3圖中所圖示的範例,第二類型異動以一第二類型異動開始指令(startl)開始。回應於第二類型異動開始指令,處理電路系統26藉由位址追蹤電路系統24將該異動內之一讀取操作的位址標記成可追蹤的來回應該讀取操作的執行,並且省略藉由位址追蹤電路系統24將寫入操作的位址標記成可追蹤的。額外地,異動式記憶體支援電路系統20也能經配置以省略對架構狀態的擷取。跟隨第4圖中之第二類型異動開始指令之後有一載入排他(LDX)指令及一儲存排他(STX)指令。能利用載入及儲存排他指令來將原子化地更新記憶體的操作分割成兩不同步驟,同時也偕同追蹤排他記憶體存取的排他監視器來提供原子化更新。以下將參照第5圖進一步說明。在儲存排他指令之前可有其他操作(如省略符號所指示),像是普通(非排他)載入及儲存指令。
第5圖示意地圖示快取一致性互連系統100的範例。圖示的系統包含兩個處理元件110、120,各具其本身的區域快取115、125。雖然第5圖中僅圖示兩個處理元件110、120,將理解可提供更多處理元件。記憶體140在處理元件110、120之間為共享的且一致性互連130在處理元件110、120與記憶體130之間維持連貫性。第5圖中也圖示有一探聽過濾器135。第5圖中探聽過濾器135經圖示為位在一致性互連130上,但這非必要而可將探聽過濾器提供為經由一致性互連130連接至處理元件110、120的一分離元件。替代地該探聽過濾器可形成處理元件110、120中之一者的局部。在第5圖中所示系統中探聽過濾器135作為一排他監視器作動以追蹤對於標記為可共享之記憶體區域的排他存取。替代地,可將排他監視器實施成處理元件110、120之間的一分離電路系統,且藉由針對各處理元件110、120分配支援排他存取的一位址來操作。
第一處理元件110上的載入排他(LDX)操作指明將被所載入值覆寫的一目的地暫存器(第4圖中的x0),以及除了載入原因之外該載入排他操作的目標位址(第4圖中的[A]),該目標位址將被標記為專屬於第一處理元件110,例如在快取中、在探聽過濾器中或在一分離的排他監視器中。若第二處理元件120對位址[A]執行儲存,該位址[A]被標記為專屬於第一處理元件120,則該排他狀態被移除。將理解有其他事件也可能導致排他狀態被移除。儲存排他(STX)指令指明一目標位址(第4圖中的[A])、來自其之資料將被儲存至目標位址的一來源暫存器(第4圖中的x20)、以及將對其覆寫指示出是否儲存成功之一值的一目的地暫存器(第4圖中的w21)。回應於第一處理元件110執行的儲存排他指令,檢查是否排他監視器被設定用於該儲存排他指令所提及的目標位址[A]。若排他監視器仍為設定的,該儲存成功且目的地暫存器w21被設定成通過指示。若排他監視器仍未被設定用於目標位址[A],該儲存未被實施而目的地暫存器w21被設為失敗指示。
第4圖的範例在位址[A]代表對於位址[B]、[C]、[D]處之資料結構的一指標時可能是有用的。基於從位址[B]、[C]、[D]讀取的值能進行數次更新,而能利用非排他儲存指令來將經更新的值儲存至一分離位址範圍(不同於位址[B]-[D])。硬體中提供的異動機制(包括位址監看及衝突偵測邏輯)可確保若在尚未完成該異動時另一線程更新了位址[B]-[D]中之一者,則該異動被中止且沒有實施儲存排他。然而,若在沒有任何此種中止之下該異動到達儲存排他指令,則該儲存排他指令能將位址[A]處儲存的指標更新為指向新的資料結構,擺動該指標使得新的資料結構原子化地產生效果,但通過tstartl指令結合LDX/STX指令組對的使用,能在不需要發生如同利用第一類型異動開始指令的關聯於儲存/重置復原狀態的延遲下達成。因此,[A]處的指標將僅在原始資料結構中的位址[B]-[D]集合未被更動時被改變,而因此關聯於該儲存排他指令的指示表示出該儲存排他指令是成功的。
第6圖是圖示處理異動之方法600的流程圖。於步驟605,一異動開始指令(像是上述的tstart或startl)經解碼及執行。於步驟610,決定該異動開始指令是具有第一類型(tstart)或第二類型(tstartl)。若該異動開始指令具第一類型,該方法繼續往步驟615,在該處擷取架構狀態。該方法接著繼續往步驟620,在該處開始該異動中指令的推測執行,包括讀取及寫入的位址集合的追蹤(步驟625)。該方法接著繼續往步驟645。若於步驟610決定了該異動開始指令具第二類型,則該方法繼續往步驟630,在該處在該異動中之指令執行期間追蹤讀取的位址集合。於步驟635,決定是否在該異動中之指令的執行期間遇到該預先決定指令類型(wft)。若遇到該預先決定指令類型,該方法繼續往步驟640,在該處暫停進一步的指令處理。該方法接著繼續往步驟645。若未遇到該預先決定指令類型,該異動中的指令繼續被執行且該方法直接繼續往步驟645。於步驟645,決定是否已發生一中止事件。若未發生中止事件,該方法繼續往步驟650,在該處決定是否已經遇到一異動結束(tend)指令(換言之,是否已經解碼及執行一tend指令)。若尚未遇到異動結束指令,該方法返回至步驟645。若已遇到一異動結束指令,該方法繼續往步驟655,在該處來自該異動的推測結果被提交且經擷取架構狀態被允許被覆寫,因為對於此異動而言其不再為必要的。該方法接著返回至步驟605以針對將接收的下一個異動開始指令做準備。若於步驟645決定了已遇到一中止事件,該方法繼續往步驟660,在該處該異動被中止。於步驟665再次決定所遇到的異動開始指令是具第一或第二類型(換言之,該異動是具第一類型或第二類型)。若決定所遇到的異動開始指令不是第二類型(換言之,是第一類型)該方法繼續往步驟670,在該處經擷取架構狀態被復原。該方法接著返回至步驟605以針對將接收的下一個異動開始指令做準備。若於步驟665決定了所遇到的異動開始指令是第二類型,該方法繼續往步驟675,在該處在沒有等待異動結束指令之下介入指令的結果被提交及/或指令的結果被提交。該方法接著返回至步驟605以針對將接收的下一個異動開始指令做準備。將理解儘管第6圖中圖示的方法600經顯示為一封閉迴圈,能藉單一異動實施該方法,其中該方法將結束於步驟655、670或675中之一者處。
第7圖例示可使用的模擬器實施方式。雖然較早描述的實施例就用於操作支援所關心的技術的特定處理硬體之設備及方法而言實施本發明,但亦可能根據本文所描述之實施例提供藉由電腦程式之使用實施的指令執行環境。在此類電腦程式提供硬體架構之基於軟體之實施方式的範圍內,該等電腦程式通常稱為模擬器。各種模擬器電腦程式包括仿真器、虛擬機、模型,及二進制翻譯器,包括動態二進制翻譯器。通常,模擬器實施方式可在主機處理器230上運行,該主機處理器可選地運行一主機作業系統220,支援模擬器程式210。在一些安排中,可存在介於硬體與所提供的指令執行環境之間的多個模擬層,及/或提供在相同主機處理器上的多個相異指令執行環境。歷史上,已需要強大的處理器提供以合理速度執行的模擬器實施方式,但此方法可在某些環境中經調整,諸如當出於兼容性或重新使用原因需要運行對於另一處理器為本機的碼時。例如,模擬器實施方式可提供具有不由主機處理器硬體支援的額外功能之指令執行環境,或提供通常與不同硬體架構相關的指令執行環境。模擬之概述在「Some Efficient Architecture Simulation Techniques」, Robert Bedichek, Winter 1990 USENIX Conference, 第53–63頁中給出。
在先前已參考特別硬體構造或特徵描述實施例的程度上,在模擬實施例中,等效功能可藉由適當軟體構造或特徵提供。例如,特定電路系統可在模擬實施例中作為電腦程式邏輯來實施。類似地,記憶體硬體(像是暫存器或快取)可在模擬實施例中作為軟體資料結構來實施。在先前描述的實施例中引用的硬體元件中之一或多者存在於主機硬體(例如,主機處理器230)上的配置中,一些模擬實施例可利用主機硬體(在適合的情況下)。
模擬器程式210可經儲存在電腦可讀取儲存媒體(其可為非暫態媒體)上,且提供至目標碼200 (該目標碼可包括應用程式、作業系統及超管理器)的程式介面(指令執行環境),該程式介面與模擬器程式210所模型化的硬體架構之應用程式介面相同。因而,目標碼200之程式指令(包括上述的第一及第二類型異動開始指令)可使用模擬器程式210而經執行在指令執行環境內,使得實際上不具有以上討論之設備2的硬體特徵的主機電腦230能模擬此等特徵。
在本案中,用語「經配置以…」用來意指設備之元件具有能夠實施所定義操作的配置。在此上下文中,「配置」意指硬體或軟體之互連的安排或方式。例如,設備可具有提供所定義操作的專屬硬體,或處理器或其他處理裝置可經程式化來進行功能。「經配置以」並不暗示需要以任何方式改變設備元件以便提供所定義操作。
儘管本文中已參照隨附圖式詳細描述本發明之例示性實施例,將理解本發明不限於該些精確實施例,且各種變化及修改可在不脫離如所附申請專利範圍界定的本發明之範疇及精神的情況下由熟習本領域之技術者實現於其中。
2:資料處理設備
4:處理電路系統
6:架構暫存器
8:指令解碼器
10:指令快取
12:載入/儲存單元
14:資料快取
16:記憶體
20:異動式記憶體支援電路系統
22:推測結果儲存
24:位址追蹤電路系統
26:衝突偵測電路系統
28:復原狀態儲存電路系統
30:鎖定儲存結構
32:巢套深度暫存器
34:鎖定檢查引擎
36:計時器
100:快取一致性互連系統
110:處理元件
115:區域快取
120:處理元件
125:區域快取
130:一致性互連
135:探聽過濾器
140:記憶體
200:目標碼
210:模擬器程式
220:主機作業系統(OS)
230:主機硬體(主機處理器或主機電腦)
600:方法
605:步驟
610:步驟
615:步驟
620:步驟
625:步驟
630:步驟
635:步驟
640:步驟
645:步驟
650:步驟
655:步驟
660:步驟
665:步驟
670:步驟
675:步驟
藉由參照隨附圖式中所圖示的本發明之實施例將進一步說明本發明(僅作為範例),該些隨附圖式中:
第1圖示意地圖示具有異動式記憶體支援電路系統之資料處理設備的範例;
第2圖圖示在具有異動式記憶體支援的系統中處理第一異動的範例;
第3圖圖示在具有異動式記憶體支援的系統中處理第二異動的範例;
第4圖圖示在具有異動式記憶體支援的系統中處理第二異動的另一範例;
第5圖示意地圖示包含兩個或更多個處理器核心與快取一致性互連的系統範例;
第6圖是顯示處理一異動之範例的流程圖;
第7圖圖示能使用的模擬器實施例。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
2:資料處理設備
4:處理電路系統
6:架構暫存器
8:指令解碼器
10:指令快取
12:載入/儲存單元
14:資料快取
16:記憶體
20:異動式記憶體支援電路系統
22:推測結果儲存
24:位址追蹤電路系統
26:衝突偵測電路系統
28:復原狀態儲存電路系統
30:鎖定儲存結構
32:巢套深度暫存器
34:鎖定檢查引擎
36:計時器
Claims (15)
- 一種資料處理設備,包含:用以解碼指令的一指令解碼器;處理電路系統,其用以回應於該等指令被該指令解碼器解碼而進行資料處理;異動式記憶體支援電路系統,其用以支援在該處理電路系統所處理的一資料線程內的一異動的執行,該異動式記憶體支援電路系統包含位址追蹤電路系統以追蹤由該異動內之指令存取的位址;對於利用一第一類型異動開始指令所開始之一第一類型異動,該指令解碼器經配置以控制該處理電路系統去防止跟隨該第一類型異動開始指令之後經推測地執行的指令之結果的提交,直到到達一異動結束指令為止,其中該異動式記憶體支援電路系統經配置以在偵測到在來自另一線程的一記憶體存取的一位址與該位址追蹤電路系統為該第一類型異動所追蹤之該些位址之間的一衝突時觸發該第一類型異動的一中止;及對於利用一第二類型異動開始指令所開始之一第二類型異動,該指令解碼器經配置以控制該處理電路系統,藉由將在該第二類型異動內之一讀取操作的一位址標記成可由該位址追蹤電路系統追蹤的以回應於該讀取操作的執行,以及藉由省略將該第二類型異動內之一寫入操作的一位址標記成可由該位址追蹤電路系統追蹤以回應於該寫入操作的執行; 其中對於該第二類型異動,該異動式記憶體支援電路系統經配置以在偵測到在該第二類型異動內所執行之該讀取操作的該位址與來自另一線程之一寫入操作的一位址之間的一衝突時,觸發該第二類型異動的一中止;及對於該第二類型異動,該指令解碼器經配置以控制該處理電路系統回應於該第二類型異動的該中止而省略架構狀態的復原,其中該經省略復原的架構狀態包括在該異動期間改變的架構狀態。
- 如請求項1所述之資料處理設備,其中對於該第一類型異動,該異動式記憶體支援電路系統經配置以觸發對架構狀態的擷取,該架構狀態將在中止該第一類型異動的狀況下被復原;及其中,對於該第二類型異動,該異動式記憶體支援電路系統經配置以省略對該架構狀態的該擷取。
- 如請求項2所述之資料處理設備,其中對於該第一類型異動,跟隨該異動結束指令之後,該指令解碼器經配置以控制該處理電路系統丟棄經擷取的該架構狀態,或允許經擷取的該架構狀態被覆寫。
- 如請求項1所述之資料處理設備,其中該異動式記憶體支援電路系統經配置以回應於至少一個其他事件而觸發該第二類型異動的該中止。
- 如請求項1或請求項4所述之資料處理設備,其中對於該第二類型異動,該處理電路系統經配置以進行下列中之至少一者: 提交該第二類型異動的介入指令的結果以回應於該第二類型異動的該中止;或在不等待該異動結束指令下提交該第二類型異動內部的指令的結果。
- 如請求項1或請求項4所述之資料處理設備,其中對於該第二類型異動,該指令解碼器回應一預先決定類型之指令而控制該處理電路系統去暫停對指令的處理,直到接收到有關該第二類型異動的該中止已被觸發的一通知為止。
- 如請求項6所述之資料處理設備,其中該預先決定類型之指令指明儲存一位址指示的一暫存器,該位址指示表示出來自觸發該第二類型異動的該中止之該另一線程的該記憶體存取的該位址。
- 如請求項1或請求項4所述之資料處理設備,其中回應於該第二類型異動之該中止被觸發,該處理電路系統經配置以儲存一中止原因指示,該中止原因指示表示出該第二類型異動的該中止是否由一衝突所觸發。
- 如請求項8所述之資料處理設備,其中對於該第二類型異動,該指令解碼器回應於一預先決定類型之指令而控制該處理電路系統去暫停對指令的處理,直到接收到有關該第二類型異動的該中止已被觸發的一通知為止;及該預先決定類型之指令指明儲存一位址指示的一暫存器,該位址指示表示出來自觸發該第二類型異動的該 中止之該另一線程的該記憶體存取的該位址。
- 如請求項9所述之資料處理設備,其中該中止原因指示經儲存在相同於該位址指示的暫存器中。
- 如請求項9所述之資料處理設備,其中該中止原因指示經儲存在不同於該位址指示的一個一般用途暫存器中。
- 如請求項8所述之資料處理設備,該設備包含一控制暫存器以儲存至少一條件狀態指示,該條件狀態指示表示出一先前處理結果的一屬性;其中:回應於一條件式指令,該指令解碼器經配置以控制該處理電路系統進行一有條件的操作,該有條件的操作取決於儲存在該控制暫存器中的該至少一條件狀態指示是否滿足一測試條件;及該中止原因指示包含該至少一條件狀態指示中的至少一者。
- 一種資料處理方法,包含下列步驟:利用一指令解碼器將指令解碼;利用一設備的處理電路系統來進行資料處理以回應於該等經解碼指令,該設備包含異動式記憶體支援電路系統以支援在該處理電路系統所處理的一資料線程內的一異動的執行,該異動式記憶體支援電路系統包含位址追蹤電路系統以追蹤由該異動內之指令所存取的位址,其中對於利用一第一類型異動開始指令所開始之一第一類型異動,該指令解碼器經配置以控制該處理電路系統去 防止跟隨該第一類型異動開始指令之後經推測地執行的指令之結果的提交,直到到達一異動結束指令為止,其中該異動式記憶體支援電路系統經配置以在偵測到在來自另一線程的一記憶體存取的一位址與該位址追蹤電路系統為該第一類型異動所追蹤之該些位址之間的一衝突時觸發該第一類型異動的一中止;及回應於利用一第二類型異動開始指令所開始之一第二類型異動,由該指令解碼器來控制該處理電路系統,藉由將在該第二類型異動內之一讀取操作的一位址標記成可由該位址追蹤電路系統追蹤的以回應於該讀取操作的執行,以及藉由省略將該第二類型異動內之一寫入操作的一位址標記成可由該位址追蹤電路系統追蹤的以回應於該寫入操作的執行;其中對於該第二類型異動,在偵測到在該第二類型異動內所執行之該讀取操作的該位址與來自另一線程之一寫入操作的一位址之間的一衝突時,觸發該第二類型異動的一中止;及對於該第二類型異動,回應於該第二類型異動的該中止而省略架構狀態的復原,其中該經省略復原的架構狀態包括在該異動期間改變的架構狀態。
- 一種用於控制一主機資料處理設備以提供一指令執行環境的電腦程式,該指令執行環境用於指令之執行,該電腦程式包含:指令解碼程式邏輯,其用以解碼目標碼之指令以控制 該主機資料處理設備去進行資料處理;異動式記憶體支援程式邏輯,其用以支援在一資料處理線程內之一異動的執行,該異動式記憶體支援程式邏輯包含位址追蹤程式邏輯以追蹤由該異動內之指令所存取的位址,其中對於利用一第一類型異動開始指令所開始之一第一類型異動,跟隨該第一類型異動開始指令之後經推測地執行的指令之結果被防止提交,直到到達一異動結束指令為止,且該異動式記憶體支援程式邏輯經配置以在偵測到在來自另一線程的一記憶體存取的一位址與該位址追蹤程式邏輯為該第一類型異動所追蹤之該些位址之間的一衝突時觸發該第一類型異動的一中止;及回應於利用一第二類型異動開始指令所開始之一第二類型異動,該指令解碼程式邏輯經配置以控制該異動式記憶體支援程式邏輯藉由將在該第二類型異動內之一讀取操作的一位址標記成可由該位址追蹤程式邏輯追蹤的以回應於該讀取操作的執行,以及藉由省略將該第二類型異動內之一寫入操作的一位址標記成可由該位址追蹤程式邏輯追蹤的以回應於該寫入操作的執行;其中對於該第二類型異動,該異動式記憶體支援程式邏輯經配置以在偵測到在該第二類型異動內所執行之該讀取操作的該位址與來自另一線程之一寫入操作的一位址之間的一衝突時,觸發該第二類型異動的一中止;及對於該第二類型異動,該指令解碼程式邏輯經配置以 控制該異動式記憶體支援程式邏輯回應於該第二類型異動的該中止而省略架構狀態的復原,其中該經省略復原的架構狀態包括在該異動期間改變的架構狀態。
- 一種儲存媒體,該儲存媒體儲存如請求項14所述之電腦程式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1819348.2A GB2579246B (en) | 2018-11-28 | 2018-11-28 | Apparatus and data processing method for transactional memory |
GB1819348.2 | 2018-11-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202036275A TW202036275A (zh) | 2020-10-01 |
TWI818114B true TWI818114B (zh) | 2023-10-11 |
Family
ID=65024363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108141169A TWI818114B (zh) | 2018-11-28 | 2019-11-13 | 用於異動式記憶體的設備與資料處理方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US11379233B2 (zh) |
EP (1) | EP3887940A1 (zh) |
JP (1) | JP7481328B2 (zh) |
KR (1) | KR20210087431A (zh) |
CN (1) | CN112639728A (zh) |
GB (1) | GB2579246B (zh) |
IL (1) | IL280806A (zh) |
TW (1) | TWI818114B (zh) |
WO (1) | WO2020109749A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020251987A1 (en) * | 2019-06-10 | 2020-12-17 | Greeneden U.S. Holdings Ii, Llc. | System and method for adding content to contact center interactions |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070260942A1 (en) * | 2006-03-30 | 2007-11-08 | Ravi Rajwar | Transactional memory in out-of-order processors |
TW201220059A (en) * | 2004-04-01 | 2012-05-16 | Nvidia Corp | Deadlock avoidance in a bus fabric |
US20130339674A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Restricted instructions in transactional execution |
US20150378777A1 (en) * | 2014-06-26 | 2015-12-31 | International Business Machines Corporation | Transactional memory operations with read-only atomicity |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372718B2 (en) * | 2008-07-28 | 2016-06-21 | Advanced Micro Devices, Inc. | Virtualizable advanced synchronization facility |
GB2533414B (en) * | 2014-12-19 | 2021-12-01 | Advanced Risc Mach Ltd | Apparatus with shared transactional processing resource, and data processing method |
GB2536871A (en) | 2015-03-04 | 2016-10-05 | Advanced Risc Mach Ltd | An apparatus and method to generate trace data in response to transactional execution |
JP6468053B2 (ja) | 2015-04-28 | 2019-02-13 | 富士通株式会社 | 情報処理装置、並列処理プログラム、及び、共有メモリアクセス方法 |
US10235297B2 (en) * | 2015-11-04 | 2019-03-19 | International Business Machines Corporation | Mechanism for creating friendly transactions with credentials |
US11023233B2 (en) * | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
-
2018
- 2018-11-28 GB GB1819348.2A patent/GB2579246B/en active Active
-
2019
- 2019-10-17 JP JP2021517582A patent/JP7481328B2/ja active Active
- 2019-10-17 KR KR1020217005761A patent/KR20210087431A/ko unknown
- 2019-10-17 US US17/269,216 patent/US11379233B2/en active Active
- 2019-10-17 CN CN201980055680.8A patent/CN112639728A/zh active Pending
- 2019-10-17 EP EP19791345.2A patent/EP3887940A1/en active Pending
- 2019-10-17 WO PCT/GB2019/052967 patent/WO2020109749A1/en unknown
- 2019-11-13 TW TW108141169A patent/TWI818114B/zh active
-
2021
- 2021-02-11 IL IL280806A patent/IL280806A/en unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201220059A (en) * | 2004-04-01 | 2012-05-16 | Nvidia Corp | Deadlock avoidance in a bus fabric |
US20070260942A1 (en) * | 2006-03-30 | 2007-11-08 | Ravi Rajwar | Transactional memory in out-of-order processors |
US20130339674A1 (en) * | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Restricted instructions in transactional execution |
US20150378777A1 (en) * | 2014-06-26 | 2015-12-31 | International Business Machines Corporation | Transactional memory operations with read-only atomicity |
Also Published As
Publication number | Publication date |
---|---|
CN112639728A (zh) | 2021-04-09 |
US11379233B2 (en) | 2022-07-05 |
GB201819348D0 (en) | 2019-01-09 |
GB2579246B (en) | 2021-10-13 |
GB2579246A (en) | 2020-06-17 |
TW202036275A (zh) | 2020-10-01 |
EP3887940A1 (en) | 2021-10-06 |
JP7481328B2 (ja) | 2024-05-10 |
JP2022510763A (ja) | 2022-01-28 |
IL280806A (en) | 2021-04-29 |
KR20210087431A (ko) | 2021-07-12 |
WO2020109749A1 (en) | 2020-06-04 |
US20210271485A1 (en) | 2021-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11119785B2 (en) | Delaying branch prediction updates specified by a suspend branch prediction instruction until after a transaction is completed | |
US9477469B2 (en) | Branch predictor suppressing branch prediction of previously executed branch instructions in a transactional execution environment | |
JP2009501366A (ja) | スレッドレベルの投機実行を拡張するためのプリミティブ | |
CN111133418B (zh) | 在例外屏蔽更新指令之后允许未中止的事务处理 | |
JP7281491B2 (ja) | トランザクショナル比較及び破棄命令 | |
TWI818114B (zh) | 用於異動式記憶體的設備與資料處理方法 | |
US10853223B2 (en) | Simulation of transactions | |
CN111164572B (zh) | 数据处理装置和方法 | |
TWI784049B (zh) | 事務巢套深度測試指令 | |
CN112334874B (zh) | 数据处理装置和数据处理方法 |