TWI461912B - 用於交易式記憶體系統中之硬體屬性之記憶體模式 - Google Patents
用於交易式記憶體系統中之硬體屬性之記憶體模式 Download PDFInfo
- Publication number
- TWI461912B TWI461912B TW098143379A TW98143379A TWI461912B TW I461912 B TWI461912 B TW I461912B TW 098143379 A TW098143379 A TW 098143379A TW 98143379 A TW98143379 A TW 98143379A TW I461912 B TWI461912 B TW I461912B
- Authority
- TW
- Taiwan
- Prior art keywords
- attribute
- logic
- storage
- dependency
- access type
- Prior art date
Links
- 239000000872 buffer Substances 0.000 claims description 72
- 238000003860 storage Methods 0.000 claims description 64
- 238000000034 method Methods 0.000 claims description 31
- 238000012360 testing method Methods 0.000 claims description 28
- 238000012544 monitoring process Methods 0.000 claims description 25
- 239000012536 storage buffer Substances 0.000 claims description 17
- 230000000903 blocking effect Effects 0.000 claims description 16
- 230000009471 action Effects 0.000 claims description 15
- 239000000463 material Substances 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 21
- 230000011218 segmentation Effects 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 230000003139 buffering effect Effects 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013479 data entry Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001568 sexual 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/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/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0715—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0721—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
- G06F11/0724—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- 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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0751—Error or fault detection not based on redundancy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3471—Address tracing
-
- 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring specific for caches
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本發明係有關處理器執行之領域,尤係有關指令組之執行。
半導體製程及邏輯設計的進展已可增加可出現在積體電路裝置中之邏輯的量。因此,電腦系統組態已自一系統中之單一或多個積體電路進化到個別積體電路上所設之多個核心及多個邏輯處理器。一處理器或積體電路通常包含單一的處理器晶粒,其中該處理器晶粒可包含任何數目之核心或邏輯處理器。
積體電路中數目愈來愈多的核心及邏輯處理器可容許同時執行更多的軟體執行緒(thread)。然而,可被同時執行的軟體執行緒數目之增加已產生了使被該等軟體執行緒共用的資料的同步之問題。存取多核心或多邏輯處理器系統中之共用資料的一種常見解決方案包含將鎖定(lock)用來保證對共用資料的多個存取間之互斥。然而,執行多個軟體執行緒的愈來愈強大的能力可能造成假競用及執行的串列化(serialization)。
例如,考慮存放共用資料的一雜湊表(hash table)。設有一鎖定系統時,程式設計者可鎖定整個雜湊表,而讓一執行緒存取該整個雜湊表。然而,其他執行緒的執行率(throughput)及效能可能受到不利的影響,這是因為該等執行緒在解除該鎖定之前無法存取該雜湊表中之任何條目。或者,可鎖定該雜湊表中之每一條目。不論是哪一種方式,在將該簡單例子推衍為一大型可擴展程式之後,鎖定競用、串列化、精細的同步、以及死鎖(deadlock)避免之複雜性顯然將成為程式設計者的極累贅之負擔。
另一種最近的資料同步技術包括交易式記憶體(transactional memory)的使用。交易執行通常包括執行一組的複數個微運算、操作、或指令。在上述例子中,兩個執行緒在該雜湊表內執行,且該等兩個執行緒的記憶體存取被監視/追蹤。如果兩個執行緒存取/改變相同的條目,則可執行衝突解決,以便保證資料的有效性。一種類型的交易執行包括軟體交易式記憶體(Software Transactional Memory;簡稱STM),其中通常是在沒有硬體的支援下,以軟體執行記憶體存取的追蹤、衝突解決、異常中斷工作、以及其他的交易式工作。
另一種類型的交易執行包括硬體交易式記憶體(Hardware Transactional Memory;簡稱HTM)系統,其中包含了硬體,以便支援存取追蹤、衝突解決、以及其他的交易式工作。舉例而言,可包含硬體屬性,以便支援讀取監視、寫入監視、以及交易執行之緩衝。然而,用來根據現行的記憶體排序實施方式而設定及讀取這些屬性之指令可能導致排序的違反。此外,如果以一種有耗損之方式保存硬體屬性(亦即,於收回(eviction)/回寫(write-back)時丟失硬體屬性),則讀取/測試監視器指令可能讀取到錯誤的監視器資料。
本發明說明了一種提供用來支援交易執行的硬體屬性之記憶體模型之方法及裝置。於遇到硬體屬性的載入時,諸如一測試監視器操作要載入一讀取監視器、寫入監視器、或緩衝屬性時,將回應用來指示該硬體屬性已丟失之一丟失欄位,而發出一錯誤訊息。此外,根據位址相依性及存取型別相依性,將諸如阻止(blocking)及轉送(forwarding)等的相依性行動提供給屬性存取操作。因此,在一記憶體模型中容許及限制屬性丟失及對屬性丟失的測試之不同情況。
在下文的說明中,述及了諸如用於交易執行的特定硬體結構、存取監視器的特定類型及實施例、特定的快取記憶體實施例、特定類型的快取一致性模型、特定的資料分割程度(granularity)、特定類型的屬性、以及用來偵測相依性的特定結構之例子等的許多特定細節,以便提供對本發明的徹底了解。然而,熟悉此項技術者當可了解:無須將這些特定細節用來實施本發明。在其他的情形中,則並不詳細說明諸如硬體監視器/屬性、交易的分界線(demarcation)、特定的及替代的多核心及多執行緒處理器架構、特定的編譯器方法/實施例、以及特定的微處理器運算細節之實施細節等的習知的組件或方法,以免非必要地模糊了本發明。
本發明所述之方法及裝置係提供用來支援交易執行的硬體屬性之一記憶體模型。具體而言,係參照其中包含存取緩衝器之非循序執行處理器而說明該記憶體模型。事實上,第2-4圖係參照諸如儲存緩衝器等的緩衝器的修改之實施例。然而,用來提供硬體屬性的記憶體模型之方法及裝置不限於此,這是因為可在其中包含用來處理對硬體屬性的存取的任何結構之任何類型的處理器中實施該等方法及裝置。
請參閱第1圖,現在將說明能夠同時執行多個執行緒的一處理器之一實施例。請注意,處理器100可包含對硬體交易執行之硬體支援。處理器100亦可以配合硬體交易執行之方式或獨立地提供對軟體交易式記憶體(STM)的硬體加速、STM的獨立執行、或以上兩者的諸如混合式交易記憶體(TM)系統等的組合之硬體支援。處理器100包括諸如微處理器、嵌入式處理器、數位信號處理器(Digital Signal Processor;簡稱DSP)、網路處理器、或其他用來執行指令碼之其他裝置等的任何處理器。如圖所示,處理器100包含複數個處理元件。
在一實施例中,處理元件意指執行緒單元、處理單元、執行環境、邏輯處理器、硬體執行緒、核心、及(或)能夠保持處理器的諸如執行狀態或架構狀態等的狀態之任何其他元件。換言之,處理元件在一實施例中意指能夠與諸如軟體執行緒、作業系統、應用程式、或其他碼等的碼獨立地相關聯之任何硬體。實體處理器通常意指可能包含任何數目的諸如核心或硬體執行緒等的其他處理元件之積體電路。
核心通常意指被設置在一積體電路中而能夠維護一獨立的架構狀態之邏輯,其中每一被獨立維護的架構狀態係與至少某些專用的執行資源相關聯。與核心相比時,硬體執行緒通常意指被設置在一積體電路中而能夠維護一獨立的架構狀態之任何邏輯,其中該被獨立維護的架構狀態共用執行資源。如前文所述,當某些資源被共用,且其他的資源被一架構狀態專用時,硬體執行緒與核心間之命名線重疊了。作業系統通常將核心及硬體執行緒視為個別的邏輯處理器,其中該作業系統能夠將每一邏輯處理器中之操作個別地排程。
第1圖所示之實體處理器100包含核心101及102這兩個核心,該等兩個核心共用較高階的快取記憶體110。雖然處理器100可包含非對稱式核心(亦即,具有不同的組態、功能單元、及(或)邏輯之核心),但是圖中示出對稱式核心。因此,將不詳述圖中示出為與核心101相同的核心102,以避免重複的說明。此外,核心101包含兩個硬體執行緒101a及101b,而核心102包含兩個硬體執行緒102a及102b。因此,諸如作業系統等的軟體實體可能將處理器100視為四個各別的處理器,亦即,能夠同時執行四個軟體執行緒的四個邏輯處理器或處理元件。
此處,第一執行緒係與架構狀態暫存器101a相關聯,第二執行緒係與架構狀態暫存器101b相關聯,第三執行緒係與架構狀態暫存器102a相關聯,且第四執行緒係與架構狀態暫存器102b相關聯。如圖所示,架構狀態暫存器101a被複製成架構狀態暫存器101b,因而能夠針對邏輯處理器101a及邏輯處理器101b儲存個別的架構狀態/執行環境。執行緒101a及101b亦可複製諸如更名分配邏輯130中之指令指標及更名邏輯等的其他較小資源。可經由分割而共用諸如重新排序/引退單元135中之重新排序緩衝器、指令轉換緩衝器(ITLB)120、載入/儲存緩衝器、以及佇列等的某些資源。可能完全共用諸如一般用途內部暫存器、分頁表基址暫存器、低階資料快取記憶體及資料轉換緩衝器150、一或多個執行單元140、以及非循序單元135之一些部分等的其他資源。
處理器100通常包含可被完全共用、經由分割而被共用、或一些處理元件專用的其他資源。在第1圖中,示出了具有處理器的例示功能單元/資源的純為例示的一處理器之一實施例。請注意,一處理器可包含或省略這些功能單元中之任何功能單元,並可包含未示出的任何其他已知之功能單元、邏輯、或韌體。
如圖所示,處理器100包含用來與諸如系統記憶體175、一晶片組、一北橋晶片、或其他積體電路等的處理器100外部的裝置通訊之匯流排介面模組105。記憶體175可為處理器100所專用,或被系統中之其他裝置共用。較高階的或較外層的快取記憶體110係用來緩衝儲存最近自較高階的快取記憶體110提取的資料元素。請注意,較高階或較外層意指較高的快取階層、或較遠離執行單元的快取階層。在一實施例中,較高階的快取記憶體110是一第二階資料快取記憶體。然而,較高階的快取記憶體110不受此限制,這是因為較高階的快取記憶體110可以與一指令快取記憶體相關聯,或可包含該指令快取記憶體。一蹤跡快取記憶體(trace cache)(亦即,一種類型的指令快取記憶體)可替代地被耦合到解碼器125之後,以便儲存最近被解碼的蹤跡(trace)。模組120也可能包含:一分支目標緩衝器,用以預測將要被執行/採取的分支;以及一指令轉換緩衝器(Instruction-Translation Buffer;簡稱I-TLB),用以儲存指令的位址轉換條目。
解碼模組125被耦合到提取單元120,以便將被提取的指令元素解碼。在一實施例中,處理器100係與一指令集架構(Instruction Set Architecture;簡稱ISA)相關聯,該ISA界定/指定可在處理器100上執行的指令。此處,經常被該ISA辨識的機器碼指令包括被稱為運算碼的指令之一部分,用以參照到/指定將要被執行的指令或操作。
在一例子中,分配及更名單元130包含一分配器,用以保留諸如暫存器檔(register file)等的資源,以便儲存指令處理的結果。然而,執行緒101a及101b可能進行非循序執行(out-of-order execution),此時分配及更名單元130也保留諸如重新排序緩衝器等的其他資源,用以追蹤指令結果。單元130亦可包含一暫存器更名器,用以將程式/指令參考暫存器更名為處理器100內部的其他暫存器。重新排序/引退單元135包含諸如前文所述之重新排序緩衝器、載入緩衝器、及儲存緩衝器等的組件,用以支援非循序執行、以及被非循序執行的指令稍後的循序引退。
在一實施例中,排程器及執行單元區塊140包含一排程單元,用以將各執行單元上的指令/操作排程。例如,係在具有一可用的浮點執行單元的一執行單元之一埠上將浮點指令排程。也包含了與該等執行單元相關聯的暫存器檔,用以儲存指令處理結果的資訊。例示的執行單元包括浮點執行單元、整數執行單元、跳越執行單元、載入執行單元、儲存執行單元、以及其他習知的執行單元。
較低階資料快取記憶體以及資料轉換緩衝器(Data Translation Buffer;簡稱D-TLB)150被耦合到一或多個執行單元140。該資料快取記憶體係用來儲存諸如資料運算元(operand)等的可能保持在記憶體一致性狀態的最近被使用的/操作的元素。該D-TLB係用來儲存最近的虛擬/線性位址至實體位址轉換。舉一特定例子而言,處理器可包含一分頁表結構,用以將實體記憶體分成複數個虛擬分頁。
在一實施例中,處理器100能夠進行硬體交易執行、軟體交易執行、或以上兩者的組合或混合。也可被稱為關鍵性的或不可分割的(atomic)程式碼區塊之交易(transaction)包含將被以一種不可分割的群組之方式執行的一組指令、操作(operation)、或微運算(micro-operation)。例如,可將指令或操作用來將一交易或一關鍵性的區塊分界。在一實施例中,如將於下文中更詳細說明的,這些指令是可被諸如前文所述之解碼器等的處理器100的硬體辨識的諸如指令集架構(ISA)等的一指令集之一部分。這些指令一旦自一高階語言被編譯成硬體可辨識的組合語言之後,通常包含解碼器在解碼階段可辨識之運算碼(opcode)或指令的其他部分。
在一交易的執行期間,在該交易被提交之前,通常不使對記憶體的更新為全域可見。舉例而言,本地的執行緒可能看到對一位置的交易寫入,但是回應來自另一執行緒的讀取操作時,該寫入資料在其中包含該交易寫入的交易未被提交之前將不被轉送。雖然該交易仍然是待處理的,但是如將於下文中更詳細說明的,自一記憶體載入的資料項目/元素及被寫到該記憶體的資料項目/元素將被追蹤。一旦該交易到達一提交點之後,如果並未針對該交易而偵測到衝突,則該交易被提交,並使該交易期間所作的更新成為全域可見。
然而,如果在該交易的待處理期間使該交易成為無效,則該交易被中斷,且可能在不使更新成為全域可見之情形下重新開始該交易。因此,在本說明書的用法中,交易的待處理(pendency)意指已開始執行且尚未被提交或中斷(亦即,待處理中)之交易。
軟體交易式記憶體(STM)系統通常意指以軟體方式或至少部分地以軟體方式執行存取追蹤、衝突解決、或其他的交易式記憶體工作。在一實施例中,處理器100能夠執行一編譯器而編譯程式碼,以便支援交易執行。此處,該編譯器可插入操作、呼叫、函式、及其他程式碼,便能夠執行交易。
一編譯器通常包含用來將原始文字/碼轉換為目標文字/碼之一程式或一組程式。編譯器通常是在多個階段或遍(pass)中編譯程式/應用碼,以便將高階程式語言碼轉換為低階機器碼或組合語言碼。但是,仍然可針對簡單的編譯而使用單遍編譯器。編譯器可使用任何已知的編譯技術,並執行諸如語彙分析(lexical analysis)、預先處理、語法分析(parsing)、語意分析(semantic analysis)、程式碼產生、程式碼轉換、以及程式碼最佳化等的任何已知編譯器操作。
較大的編譯器通常包含多個階段,但是這些階段時常被包含在兩個一般階段內:(1)一前端,亦即,通常為可進行語法處理、語意處理、及某些轉換/最佳化的階段;以及(2)後端,亦即,通常進行分析、轉換、最佳化、及程式碼產生的階段。某些編譯器提及一中間端,用以解說編譯器的前端與後端間之描述的模糊地帶。因此,提及編譯器的插入、關聯、產生、或其他操作時,可能發生在前文所述之任何階段或遍、以及編譯器的任何其他已知之階段或遍。舉例而言,編譯器可能在編譯的一或多個階段中插入交易操作、呼叫、函式等的程式碼,例如,在編譯的前端階段中插入呼叫/操作,然後在一交易記憶體轉換階段中將該等呼叫/操作轉換為低階程式碼。
然而,雖然有執行環境以及編譯器的動態或靜態本質,編譯器在一實施例中仍然將程式碼編譯成能夠進行交易執行。因此,在一實施例中,提及程式碼的執行時,意指:(1)動態地或靜態地執行編譯程式,以便編譯主要程式碼,或維持交易結構,或執行與交易有關的其他操作;(2)執行其中包括交易操作/呼叫之主要程式碼;(3)執行與該主要程式碼相關聯的諸如函式庫(library)等的其他程式碼;或(4)上述各項之組合。
在一實施例中,處理器100能夠使用硬體/邏輯(亦即,在一硬體交易式記憶體(HTM)系統內)執行交易。於實施一HTM時,自架構及微架構之觀點而論,存在有許多特定的實施細節,但是本說明書中將不說明大部分的這些特定實施細節,以避免非必要地模糊了本發明。然而,將為了解說之目的而揭示某些結構及實施方式。但是,請注意,這些結構及實施方式不是必要的,且可以具有具有不同實施方式的其他結構增補及(或)取代該等結構及實施方式。
藉由本地的處理元件以及其他的處理元件可能存取及要求資料項目。在交易式記憶體系統中未設有安全機構時,這些存取中之某些存取有可能造成無效的資料及執行,亦即,寫入將使一讀取操作無效的資料,或讀取了無效的資料。因此,處理器100可能包含用來追蹤或監視對資料項目的記憶體存取以便識別潛在的衝突之邏輯。
資料項目或資料元素可包括由硬體、軟體、或硬體及軟體的組合界定之處於任何分割程度之資料。資料、資料元素、資料項目、或以上各項的參考(reference)之一非耗盡性例子清單包括記憶體位址、資料物件、類別(class)、動態語言碼之型別欄位、動態語言碼之型別、變數、運算元、資料結構、以及記憶體位址之間接參考。然而,可將任何已知組的資料稱為資料元素或資料項目。諸如動態語言碼之型別欄位以及動態語言碼之型別等的一些上述例子意指動態語言碼之資料結構。為了例示,諸如Sun Microsystems,Inc,提供的JavaTM
等的動態語言碼是一種強制型別語言(strongly typed language)。每一變數有編譯時已知的一型別(type)。型別被分成兩個種類,亦即,基本型別(primitive type)(布林值以及整數、浮點數等的數字)以及參考型別(reference type)(類別、介面、及陣列)。參考型別之值是物件的參考。在JavaTM
中,包含一些欄位之一物件可以是一類別實例(instance)或一陣列。已知類別A的物件a時,習慣上將標記法A::x用來表示型別A的欄位x,並將a.x用來表示類別A的物件a之欄位x。例如,可將一數學式表示為a.x=a.y+a.z。此處,欄位y及欄位z被載入且被相加,且結果將被寫到欄位x。
因此,可在任何資料層級的分割程度上執行對資料項目的記憶體存取之監視/緩衝。例如,在一實施例中,係在型別層級上監視對資料的記憶體存取。此處,可以對相同資料項目(亦即,型別A)的存取監視之方式監視對欄位A::x的交易寫入以及對欄位A::y的非交易載入。在另一實施例中,係在欄位層級的分割程度上執行記憶體存取的監視/緩衝。此處,並不以對相同資料項目的存取監視之方式監視對A::x的交易寫入以及對A::y的非交易載入,這是因為該等欄位是獨立欄位之參考。請注意,於追蹤對資料項目的記憶體存取時,亦可考慮採用其他的資料結構或程式化技術。舉例而言,假設類別A的物件之欄位x及y(亦即,A::x及A::y)指向類別B之物件,且被初始化為新被分配的物件,且於初始化之後不再寫到該等欄位。在一實施例中,並不以與非交易載入被A::y指向的一物件之欄位B::z有關的對相同資料項目的記憶體存取監視之方式,監視對被A::x指向的一物件的欄位B::z之交易寫入。自這些例子推衍,即可決定監視器可在任何資料分割程度上行監視/緩衝。
在一實施例中,監視器包括讀取監視器、以及用來相應地追蹤被決定要監視的載入及儲存之寫入監視器。舉例而言,硬體讀取監視器及寫入監視器將在資料項目的一分割程度上監視該等資料項目,且於監視時不必顧及下層儲存結構之分割程度。在一實施例中,係追蹤與儲存結構的分割程度相關聯之各機制,而規範一資料項目的界限,以便保證至少適當地監視了整個資料項目。與本發明同時提出申請的待審申請案XX/XXX,XXX(代理人案號P29130)“Read and Write Monitoring Attributes in Transactional Memory(TM) Systems”(發明人為Gad Sheaffer等人)中更詳細地說明了將讀取監視器/屬性用來監視資料項目之一例子。然而,可利用資料的分割程度或存放資料的結構,而將監視器、屬性、註解、或任何其他追蹤機制用來偵測與交易執行相關聯的衝突。
屬性包括用來存放與資料項目相關聯的狀態之任何邏輯、韌體、或結構。例如,資料項目之屬性包括位元向量,其中該位元向量中之每一位元代表資料項目之一屬性,該屬性包括諸如被交易載入的、被交易寫入的,被非交易載入的、被非交易寫入的、不被交易載入的、不被交易寫入的、不被非交易載入的、不被非交易寫入的、被緩衝的、不被緩衝的、被偵測到存取衝突的、未被偵測到存取衝突的、讀取要求、無讀取要求、寫入要求、無寫入要求、擁有要求、無擁有要求、或與資料項目或用來存放該資料項目之記憶位置相關聯的任何其他屬性或狀態。舉另一例子,資料項目之屬性包括被編碼之值。例如,利用三個屬性位元(亦即,六個二進制值000、001、010、011、100、101、110將諸如下列六個狀態等的一些狀態編碼:(1)被讀取監視的;(2)未被讀取監視的;(3)被寫入監視的;(4)未被寫入監視的;(5)被緩衝的;以及(6)未被緩衝的。
舉另一例子,屬性被包含作為與諸如資料快取記憶體150等的快取記憶體相關聯的一致性狀態陣列之一部分。例示的快取一致性狀態之一非耗盡性清單包括一以讀取監視屬性、一寫入監視屬性、一被緩衝屬性、另一屬性、或以上各屬性的一組合增補或擴大之MESI(被修改的、唯一的、共用的、無效的)狀態。結果,實質上產生了諸如一被讀取監視的緩衝一致性狀態或一被寫入監視的緩衝一致性狀態等的一些新一致性狀態。因此,可配合硬體監視器/屬性而將現有的習如一致性及通訊/監聽(snoop)協定用來偵測衝突。
根據設計,快取線的快取一致性要求及被監視之一致性狀態之不同的組合將導致潛在的衝突,例如,一快取線存放了處於共用讀取狀態之一資料項目,且一監聽指示了對該資料項目之一寫入要求。相反地,可將一快取線存放了處於緩衝寫入狀態之一資料項目而且一外部監聽指示了對該資料項目之一讀取要求的狀況視為潛在的衝突。在一實施例中,為了偵測存取要求及屬性狀態之此類組合,將監聽邏輯耦合到諸如監視器及(或)衝突偵測/回報邏輯等的衝突偵測/回報邏輯。
在一實施例中,在硬體中登錄一處理常式(handler),用以支援對諸如存取衝突、監視器丟失衝突、資料丟失衝突等的衝突之有效率處理。舉例而言,諸如交易執行時或應用程式碼等的軟體可修改一暫存器,以便記錄一交易處理常式的位址。當偵測到諸如前文所述之存取衝突或資訊丟失等的一相關事件時,此時在一實施例中,在諸如作業系統(Operating System;簡稱OS)等的特權軟體不介入之情形下,控制流被導向在該暫存器中登錄的該交易處理常式。與本發明同時提出申請的一相關申請案(代理人案號P29129)“Registering a User-Handler in Hardware for Transactional Memory Event Handling”(發明人為Gad Sheaffer等人)中說明了在硬體中登錄一處理常式之一版本。
不論是以有耗損性資料之方式保存屬性(亦即,於來自一快取記憶體的一相關聯之收回時丟失資訊),或者以收回係作為回寫資料操作的一部分之方式保存屬性,處理器100的一架構在一實施例中都支援用來存取屬性之指令、操作、或微運算。一設定監視器指令將一屬性設定為一被指定值,一清除監視器指令將一屬性清除為一內定值,且一測試屬性指令將讀取一屬性。此外,諸如交易載入或交易儲存等的特定操作可能隱含地設定一屬性。例如,一交易儲存可能隱含地將一緩衝屬性設定為指示資料被緩衝,且隱含地將一寫入監視屬性設定為指示該被緩衝的資料被寫入監視。
在一實施例中,提供給一記憶體模型,以便支援對屬性的存取之適當排序,其中該等存取可包括明確的或隱含的存取。例如,先前當以非循序方式執行對一屬性之第一及第二載入時,可容許非法的記憶體排序狀況。為了解說,下文中提供了一非循序執行處理器中之虛擬碼(pseudo code)及可能的結果。
Set_monitor[M]
R0=test_monitor[M]
R1=test_monitor[M]
1)R0=TRUE及R1=FALSE被容許。
2)R0=FALSE及R1=TRUE不被容許。
3)R0=TRUE及R1=TRUE被容許。
4)R0=FALSE及R1=FALSE被容許。
請注意,在一實施例中,狀況1、3、及4被容許。然而,關於狀況2,假定一讀取監視器被設定為指示一位址M在與該位址M相關聯的一讀取屬性(R0)的一第一測試之前被讀取監視。此外,與該位址M及該讀取監視器相關聯的一快取線在該讀取屬性的一第二測試(R1)之前被收回。此處,如果以非循序方式執行該第一及該第二測試,則該第一測試(R0)可因該收回而送回一無讀取監視指示(FALSE),而該第二測試則送回一讀取監視指示(TRUE)。在一實施例中,此種狀況是非法的,且可能造成被以非循序方式執行的程式順序中之該等測試操作間之潛在的不一致。
因此,在一實施例中,使諸如快取集合(set)、快取線、快取位置、或快取條目等的快取單元與一丟失欄位相關聯。舉例而言,該丟失欄位被包含在一資料快取記憶體的一部分內,因而資訊於收回時不會丟失。此處,當該丟失欄位被設定為一丟失值而指示屬性資訊已丟失且可能是錯誤的時,於諸如次一載入操作等的一後續存取時提供了一致性。為了解說,重新檢視先前的例子。如前文所述,先執行了該第二測試操作(R1),然後因收回而發生讀取屬性的丟失,因而造成該丟失欄位被設定為該丟失值。當在該丟失欄位被設定的情形下隨後以非循序方式執行該第一測試操作(R0)時,將偵測到一衝突。舉例而言,在此種情況中,R0是錯誤的。回應該錯誤,重新開始這兩個操作,以便保證該記憶體模型不會被破壞,亦即,不容許上述的狀況2。
除了屬性資訊的丟失之外,先前的處理器架構中也可能出現其他的記憶體一致性違反,例如,與外部存取有關的屬性存取指令/操作造成的不一致。舉例而言,假定與位址A相關聯的一設定讀取監視器操作將要在位址A的一載入操作之前被執行。請注意,在啟用讀取監視器的緩衝之情形中,然後可引退該設定讀取監視器操作,然後在引退了該載入操作之後更新該讀取監視器。在該載入操作引退與讀取屬性的實際更新之間的時間是一容易出問題的期間。
為了解說,假定於此段時間中接收到一外部監聽,此時一本地處理元件認為該讀取屬性被設定為指示位址A被讀取監視;然而,該屬性此時尚未被標示,因而該外部監聽認為位址A未被讀取監視。實質上,對讀取監視器/屬性沒有一致性的觀點。因此,在一實施例中,回應一監聽,而監聽一儲存緩衝器,以便決定諸如上述的設定讀取監視器儲存操作等的一先前的儲存操作是否正在執行中,且尚未標示該讀取屬性。例如,如果命中了該儲存緩衝器的一條目,亦即,如果有一硬體屬性的執行中之儲存操作,則禁止自該條目轉送屬性資訊以及更新該讀取屬性。
除了屬性存取指令與外部存取間之可能的一致性問題之外,對屬性存取的非循序執行也可能造成一致性問題。例如,在一交易載入隱含地設定一讀取監視器之情形中,一測試監視器指令將隨即測試該讀取監視器,且以非循序方式執行該等操作。因此,該測試監視器指令可能根據該等操作的執行時序而送回被監視或未被監視之訊息。可將一些記憶體模型實施方式用來減輕此種問題。
舉第一個例子,諸如一設定讀取監視器操作等的設定一讀取監視器之一操作在其設定該讀取監視器且因而更新該讀取監視器之前阻止/禁止諸如一測試讀取監視器操作等的載入該讀取監視器之一操作。因此,避免了前文所述之該容易出問題的期間,這是因為在進行了該讀取監視器的標示之前阻止後續的測試操作。舉另一例子,被監視的資訊自設定一監視器的指令轉送到測試該監視器的指令。此外,可在不實際地緩衝讀取監視器之情形下模擬讀取監視器的緩衝。
為了提供轉送或執行阻止,可包括儲存及(或)載入緩衝器之一記憶體順序緩衝器將偵測產生型操作與使用型操作間之相依性。然而,相依性可能不只是依賴位址相依性,而且也依賴存取型別相依性,亦即也依賴產生型存取之屬性型別以及使用型存取之屬性型別。下表A示出各屬性存取指令間之相依性的例子。
請注意,該表不是指令/操作及其可能的相依性之一耗盡性清單。在表A中,1的值代表相依性存在,因而可導致前文所述之一轉送或阻止相依性行動。下文中將參照第3-4圖而說明用來支援轉送或阻止之結構。一旦偵測到相依性之後,然後將決定來自產生型操作的資訊在該產生型操作執行了以該資訊更新一屬性之前是否應被轉送或應阻止使用型操作。
如前文中參照第1圖所述,處理器100之架構只是用於解說的例子。同樣地,使各屬性與各資料項目/元素相關聯的特定例子也是例示性的,這是因為可使用使硬體監視器/屬性與不同的分割程度資料項目相關聯之任何方法。
請參閱第2圖,圖中示出其中包含實施用來支援交易執行的硬體屬性的一記憶體模型的結構之一處理器之一實施例。處理器250包括具有任何數目的能夠進行交易執行的處理元件之任何類型的已知處理器。雖然圖中未示出,但是處理器250可被耦合到諸如一晶片組(亦即,記憶體控制中心及輸入/輸出(Input/output;簡稱I/O)控制中心)以及系統記憶體等的其他系統組件。電腦系統中之I/O裝置的常見例子包括網路控制器、視訊顯示配接器、圖形處理器、音訊控制器、或其他的輸入/輸出裝置。
在一實施例中,處理器250包含一快取記憶體。快取記憶體的最常見例子包括諸如第1圖所示之第一階快取記憶體或第二階快取記憶體等的資料快取記憶體。然而,快取記憶體亦可包括指令快取記憶體、蹤跡快取記憶體、或其他習知的快取記憶體。雖然為了避免非必要地模糊了本說明而並未詳細說明快取記憶體架構,但是可以多種方式組織一快取記憶體。例如,快取記憶體可以是完全關聯式(fully associative)(亦即,記憶體位址可位於該快取記憶體的任何位置)、記憶體位址的某些範圍被限制在該快取記憶體的一些特定集合之集合關聯式(set associative)、或多個位址可位於該快取記憶體的單一位置之直接映射式(direct mapped)快取記憶體。請注意,可以任何快取記憶體組織實施本發明中述及的方法及裝置。
如圖所示,該快取包含:資料部分205,亦可將資料部分205稱為快取記憶體或資料陣列;以及與快取記憶體205相關聯的控制邏輯230。快取記憶體205包含單元210、215、220、及225。在本說明書的用法中,快取單元(cache element)意指一快取記憶體的任何分割程度之結構單元,例如,快取線、快取條目、快取位置、或快取集合。例如,單元210可包括具有一集合關聯式快取記憶體的一些快取線之一快取集合。相比之下,單元210在另一實施例中包括一集合內以類似之方式與陣列235相關聯的複數個條目中之一條目。
控制邏輯230包含陣列235,陣列235具有分別與快取單元210、215、220、及225相關聯的或對應於該等快取單元的條目211、216、221、及226。此外,硬體讀取屬性、寫入屬性、及緩衝屬性211r、211w、211b、216r、216w、216b、221r、221w、221b、226r、226w、及226b係類似地與快取單元210、215、220、及225相關聯。雖然與本發明同時提出申請的一待審申請案(代理人案號P29130)“Read and Write Monitoring Attributes in Transactional Memory(TM) Systems”(發明人為Gad Sheaffer等人)中更詳細地說明了硬體監視器及其各種實施例,但是本發明中將簡潔地說明這些屬性之實施例,以便進一步地說明本發明。
在一實施例中,不論用來存放資料的實體結構之分割程度為何,讀取及寫入監視器都規範了對諸如資料項目201等的資料的監視之界限。自前文之說明可知:資料項目可具有任何分割程度。事實上,程式設計者可提供一起始位址、以及用來構成一資料項目的額外位元組之數目,而界定該資料項目。此處,假定單元210包括快取記憶體的一快取線。因此,該資料項目可能小於快取記憶體205的諸如快取線210等的一快取線(亦即,小於快取記憶體205的一快取線之大小),或大於快取記憶體205的一快取線,而且有可能不對準快取記憶體205的一快取線之起始邊界及終止邊界。
在第2圖所示之例子中,資料項目201跨越一單一快取線。雖然專利申請案P29130說明了監視屬性的潛在動態指定,但是在本例子中係基於快取單元而提供屬性211r、211w、211b、216r、216w、216b、221r、221w、221b、226r、226w、及226b。因此,如果要對資料項目201進行讀取監視,則將讀取監視器211r更新為一被監視狀態,以便指示對該等對應的單元211被讀取監視。
在一實施例中,屬性211r、211w、211b、216r、216w、216b、221r、221w、221b、226r、226w、及226b被視為耗損性資料(lossy data)。耗損性資料通常意指在發生一事件(例如,快取單元210的至少一部分之收回、以及回寫到一較高階快取記憶體)時可能丟失的本地資料。在一實施例中,陣列235包括一個一致性狀態陣列,其中條目211、216、221、及226是用來分別存放對應於快取單元210、215、220、及225的一致性狀態值之一致性條目。共同的快取一致性狀態包括MESI,亦即,被修改的、唯一的、共用的、及無效的快取一致性狀態。然而,加入所示的三個屬性位元時,實質上產生了基於讀取監視、寫入監視、及緩衝之新的一致性狀態。
因此,假定快取單元210包括一快取線,然後回應快取線210之收回,其中包括具有屬性211b、211r、及211w的條目211之相關聯的狀態資訊丟失了,亦即,未被回寫。因此,當某一本地單元認為某一屬性被設定,但是該屬性已丟失時,可能發生一致性問題。此處,在另一屬性存取或一外部存取時,可能發生一致性問題,這是因為正確的資訊已丟失。
因此,在一實施例中,丟失欄位212、217、222、及227係分別與單元210、215、220、及225相關聯。如圖所示,丟失欄位212、217、222、及227被包含在單元210、215、220、及225內。然而,丟失欄位可位於收回時不會丟失的任何位置。例如,丟失欄位212可被包含在快取線210收回時不會丟失的或可易於記錄且與快取線210相關聯的一資料快取結構內。
控制邏輯230通常包含監聽邏輯、替換邏輯、狀態邏輯、以及用來執行任何習知快取操作之其他與快取記憶體有關的邏輯。在一實施例中,控制邏輯230回應相關聯的耗損性資料將要丟失之決定,而將個別地或以與處理器250中之其他邏輯配合之方式將丟失欄位更新到一丟失值。例如,假定耗損性資料包含一個一致性條目211中之屬性211b、211r、及211w。此處,當諸如211b等的一屬性被設定,且選擇收回快取單元210時,控制邏輯230更新丟失欄位212。請注意,在一實施例中,當沒有任何資料將要丟失,亦即,耗損性資料不存在時,諸如屬性211b、211r、及211w未被設定時,則一收回將不會造成丟失欄位212的設定。換言之,如果沒有將要丟失的資料,則沒有指示丟失的理由。
在一實施例中,可如前文所述之方式呼叫一處理常式,以便處理丟失。然而,在另一實施例中,於一後續存取時,保證了一致性。例如,假定一交易載入造成屬性211r被設定為指示讀取監視,然後選擇收回快取線210。因此,控制邏輯230將丟失欄位212設定為一丟失值。此處,可使用一版本的位址雜湊,這是因為單元210的位址在收回之後是不同的。在收回之前,各別地儲存諸如快取線210的標記等的耗損性資料,或者將被收回的快取線與被分配的新快取線之間是相同的資訊用於丟失欄位212,例如,將不是完全關聯式快取記憶體的快取陣列之集合位元用於丟失欄位212。如前文所述,沒有丟失欄位212時,諸如測試監視器操作等的一後續載入將自屬性211b接收到錯誤的監視器資訊,這是因為該資訊在收回期間已丟失。替代地,在一實施例中,回應欄位212中存放的該丟失值而得知後續的測試讀取監視器操作是錯誤的。因此,保證了次一存取操作時的一致性。
請參閱第3圖,圖中示出其中包含用來支援對硬體屬性的存取的記憶體排序的結構之一處理器之一實施例。請注意,為了簡化,只示出一處理器的一些被選擇之結構。在一實施例中,處理器305中包含了用來決定對一硬體屬性的一儲存操作與對該硬體屬性的一後續載入操作之間是否存在相依性以便可執行一適當的相依性行動之邏輯。
舉例而言,對產生型操作與使用型操作間之相依性的決定係根據屬性存取型別。如前文所述,例示之屬性包括一讀取監視器、一寫入監視器、及一緩衝屬性。此處,相關聯的存取型別包括一讀取監視器存取型別、一寫入監視器存取型別、以及一緩衝存取型別。如前文所述,只在位址相依性上實施儲存轉送。
然而,在一實施例中,將產生型操作及使用型操作之存取型別連同產生型操作及使用型操作之位址用來決定相依性。如前文中參照表A所述,對相同位址的不同型別之存取可能不是相依的。因此,在一實施例中,一設定寫入監視器存取型別與一測試讀取監視器存取型別之間不存在相依性。
第3圖中示出根據操作的存取型別而決定相依性之一實施例。此處,並未特別示出的一記憶體順序緩衝器可能包含儲存緩衝器310及載入緩衝器350。這兩個緩衝器將存放與對應的操作相關聯之條目。如圖所示,條目325將與具有屬性存取型別327的儲存操作參考位址328相關聯,以便儲存屬性資料326。雖然為了例示而將該儲存緩衝器示為具有兩個各別的陣列(亦即,儲存資料緩衝器320以及儲存位址緩衝器315),但是可使用讓合習知的儲存緩衝器實施例。
實質上,儲存緩衝器邏輯310存放與一儲存操作相關聯的屬性存取型別327,亦即,存放在儲存緩衝器條目325的儲存位址緩衝器315內。載入緩衝器350以與載入操作類似的方式操作。如圖所示,條目355存放與存取型別357相關聯的位址358、以及資料條目356。為了例示,假定條目325係與諸如一設定讀取監視器操作等的一先前執行中之儲存操作相關聯,以便以被更新的屬性資料326更新諸如一讀取監視屬性等的一硬體屬性。然後,碰到一載入操作。此處,緩衝器條目355係與該後續的載入操作相關聯。
相依性/阻止邏輯360將該後續載入操作之存取型別357及位址358與先前的儲存操作之存取型別327及位址328比較。在一實施例中,係以一種搜尋方式執行該比較,亦即,存取型別357被添加到位址358,以便搜尋儲存位址緩衝器315。如果整個被添加的搜尋準則命中了儲存緩衝器310中之一條目,則存在一相依性。此處,如果被添加到位址358的存取型別357之組合匹配被添加到位址338之存取型別337,則決定該儲存操作與該後續的載入操作之間存在一相依性。
換言之,存取型別(亦即,讀取監視器、寫入監視器、或緩衝器存取型別)匹配,且位址匹配,因而產生型儲存操作及使用型後續載入操作之間存在一相依性。請注意,在一實施例中,後續意指程式順序,因而只對程式順序上在該載入緩衝器條目之前的儲存緩衝器條目執行儲存緩衝器310之搜尋。
此外,轉送邏輯370被耦合到相依性/阻止邏輯360,而轉送邏輯370獨立地或以配合該相依性/阻止邏輯之方式相應地執行一相依性行動。在一實施例中,該相依性行動包括一阻止行動。舉例而言,可能不轉送讀取監視器。因此,如果存取型別包括讀取監視器存取型別,且偵測到一相依性,則在與條目325相關聯的儲存操作將位址328之適當的讀取監視器更新到被更新的屬性資料326之前,阻止該後續的載入操作。舉例而言,阻止邏輯360包含用來將載入緩衝器條目355內之一阻止欄位更新至一阻止值之邏輯。根據條目355中用來存放該阻止值之該阻止欄位,在該阻止值被清除之前,不派發該載入操作。
對比之下,另一相依性行動包括轉送監視器資料。此處,如果相依性邏輯360決定了一相依性,則邏輯370將被更新的資料326轉送到該載入操作。但是,如果相依性邏輯360決定並無任何相依性,則不進行任何相依性行動。然而,當監視器資料的轉送被容許時,則在一實施例中,監聽邏輯回應一外部存取要求而監聽儲存緩衝器310。此處,如果一外部存取要求導致監聽命中,例如,命中了條目325,則轉送邏輯370將不轉送被更新的屬性資料326。此外,可能不容許諸如設定監視器操作等的儲存操作回應外部監聽的命中而更新對應的監視器。
請參閱第4圖,圖中示出決定各屬性存取操作間之相依性的另一實施例。請注意,在第3圖中,係使諸如考慮到運算碼而指定的一型別等的一明確之屬性存取型別與一儲存條目相關聯。此時,該存取型別實質上是位址的延伸,例如,用來代表前文所述的三種狀態之2位元延伸。此外,相依性檢查包括搜尋/比較作為位址的一部分之該2位元延伸。
對比之下,在一實施例中,基於存取型別之相依性檢查是隱含的。如圖所示,與第3圖的處理器305中所示的那些結構類似之結構被包含在處理器405中。然而,並不將一般性的被更新之屬性資訊(可包括讀取監視器、寫入監視器、或緩衝屬性資訊)存放在儲存資料緩衝器320的一條目中之一位置,而是將屬性資訊存放在位置431、432、及433。因此,傳統的位址相依性檢查可連同對屬性資訊位置的額外檢查而被執行。
為了例示,假定屬性資訊位置431將存放讀取監視器資訊,屬性資訊位置432將存放寫入監視器資訊,且屬性資訊位置433將存放緩衝屬性資訊。當碰到一載入時,執行一傳統的位址相依性檢查,亦即,將位址458用來搜尋儲存位址緩衝器415。當一命中發生於條目425時,亦即,位址458與位址428匹配時,則根據儲存緩衝器420中存放的資料之位置而比較存取型別。在一實施例中,可以與位址匹配平行之方式執行存取型別比較。因此,進一步假定一設定緩衝屬性操作係與條目425相關聯。因此,係將與位址428相關聯的緩衝屬性之被更新的屬性資訊存放在諸如第三最低有效位元之位置433。
於諸如一測試寫入監視器操作等的一後續載入時,相依性邏輯460比較該等位址。然後,該測試寫入監視器操作是寫入監視器存取型別的操作,且緩衝器條目425將更新資訊存放在用來指示緩衝存取型別之位置433,然後,並沒有相依性匹配。然而,如果該後續的載入是位址匹配的一測試緩衝屬性操作,則基於儲存資料緩衝器條目425中之資訊的位置之該等存取型別是匹配的,且決定存在了一相依性。由於決定一相依性存在或不存在,所以轉送/阻止邏輯470執行與前文中參照第3圖所述的那些操作類似之操作。
請參閱第5圖,圖中示出於讀取、載入、或測試硬體屬性時提供適當的記憶體排序的一方法之一流程圖之一實施例。請注意,以實質上連續之方式示出第5圖之流程圖。然而,參照該圖式而示出及說明之方法不受此限制,這是因為可按照任何順序進行該等方法,且係以至少部分平行之方式執行該等方法。
在流程505中,碰到要讀取一硬體屬性之一載入操作。舉例而言,該載入操作包括可被包含在也執行其他操作/微運算的較大指令中之一測試監視器指令、操作、或微運算。在一例子中,該載入操作係與一屬性型別相關聯,且參考與一硬體屬性相關聯的一位址。如前文所述,硬體屬性的例子包括讀取監視屬性、寫入監視屬性、及緩衝屬性。然而,屬性可包括與資料或位址相關聯的狀態之任何儲存。
在流程506中,決定與該硬體屬性相關聯的一丟失欄位(亦即,與該硬體屬性相關聯的載入操作所參考之位址)是否被設定為一丟失值。回應用來存放一丟失值的該欄位指示諸如屬性資訊等的耗損性資料已丟失,而在流程507中啟動該載入操作之一錯誤訊息,以便保證正確的資料一致性。
然而,如果該丟失欄位並未存放一丟失值,則該流程繼續進入流程510。在流程510中,決定該載入操作與諸如一設定硬體屬性指令、操作、或微運算等的一先前執行中之儲存操作之間是否存在一相依性。請注意,流程510包含流程511及512,這是因為該例子中之相依性檢查包含這兩個流程。
在流程511中決定該載入操作與該先前執行中之儲存操作之間是否有位址匹配,且在流程512中決定該載入操作與該先前執行中之儲存操作之間是否有存取型別匹配。在一實施例中,諸如當如前文中參照第3圖所示之方式將存取型別存放為位址延伸時,將同時執行這些流程。此處,係以被添加到位址之屬性型別表示法(亦即,位址位元的延伸)搜尋一儲存位址緩衝器。如果命中了被添加到位址之存取型別,則決定存在一相依性,這是因為該載入操作及先前儲存操作的位址及存取型別都匹配。
在存取型別是隱含在設計內(例如,基於前文中參照第4圖所述之儲存資料的位置)之另一實施例中,則可分別地執行流程511及512。此處,在流程511中,搜尋一儲存緩衝器中與該載入操作所參考的位址相關聯之一儲存緩衝器條目。回應一命中(亦即,位址匹配),而決定該儲存緩衝器的被命中的儲存緩衝器條目中存放的儲存資料之位置。根據該儲存資料之位置(例如,第三最低有效位元(Least Significant Bit;簡稱LSB)),決定諸如一緩衝、讀取監視、或寫入監視型別等的一儲存屬性型別。如果該被決定的儲存型別與該載入型別相同,則決定存在一相依性。
不論是哪一種情形,如果不存在相依性,則在流程515中以通常不執行與屬性相關的相依性行動之方式執行該載入操作。然而,如果偵測到一相依性,則在流程520中執行一適當的相依性行動。在一實施例中,該相依性行動包括轉送與該執行中之先前儲存操作相關聯的儲存資料。此處,如果該先前的儲存操作包括以一被更新的值更新一寫入監視器之一設定寫入監視器操作,則將該被更新的值轉送到一相依的測試監視器操作,以便讀取該寫入監視器值。
在另一實施例中,相依性行動包括:在硬體屬性被該執行中之先前儲存操作更新之前,阻止該載入操作。為了例示,假定:該先前的儲存操作包括將該讀取監視器更新至一被更新的值之一設定讀取監視器操作,且該載入操作包括載入該讀取監視器值之一測試讀取監視器操作。此處,在該設定讀取監視器操作實際更新該讀取監視器之前,阻止該載入操作載入該讀取監視器值。不論是哪一種情形(亦即,轉送或阻止),利用所提供的該記憶體模型而維持了資料一致性。
在本說明書的用法中,模組意指任何硬體、軟體、韌體、或以上各項之組合。圖中示為各別的模組之邊界經常是可變的,且有可能相互重疊。例如,第一及第二模組可共用硬體、軟體、韌體、或以上各項之組合,且可能保留某些獨立的硬體、軟體、或韌體。在一實施例中,使用術語“邏輯”時,將包括諸如電晶體、暫存器等的硬體、或諸如可程式邏輯裝置等的其他硬體。然而,在另一實施例中,邏輯也包括諸如韌體或微碼等的與硬體整合之軟體或碼。
在本說明書的用法中,值包括數字、狀態、邏輯狀態、或二進制邏輯狀態之任何習知表示法。邏輯位準或邏輯值(logic value或logical value)之使用通常也被表示為一些1及一些0,這只是代表二進制邏輯狀態。例如,1參照到一高邏輯位準,且0參照到一低邏輯位準。在一實施例中,諸如一電晶體或一快閃記憶單元等的一儲存單元能夠存放單一的邏輯值或多個邏輯值。然而,也已使用了電腦系統中之其他的值表示法。例如,十進制的數字十也可被表示為二進制值1010或十六進制字母A。因此,值包括能夠被存放在電腦系統中之任何資訊的表示法。
此外,可以值或值的一部分代表狀態。舉例而言,諸如邏輯一等的第一值可代表一內定的或初始的狀態,而諸如邏輯零等的第二值可代表一非內定的狀態。此外,在一實施例中,術語“重定”及“設定”分別意指一內定的及一被更新的值或狀態。例如,一內定的值可能包括一高位準的邏輯值(亦即,重定),而一被更新的值可能包括一低位準的邏輯值(亦即,設定)。請注意,可將一些值的任何組合用來代表任何數目的狀態。
可經由機器可存取的或機器可讀取的媒體中儲存之且可被處理元件執行之指令或碼而實施前文中述及的方法、硬體、軟體、韌體、或碼之實施例。機器可存取的/可讀取的媒體包括以諸如電腦或電子系統等的機器可讀取的形式提供(亦即,儲存及(或)傳輸)資訊之任何機構。例如,機器可存取的媒體包括諸如靜態機存取記憶體(Static RAM;簡稱SRAM)或動態隨機存取記憶體(Dynamic RAM;簡稱DRAM)等的隨機存取記憶體(Random Access Memory;簡稱RAM)、唯讀記憶體(ROM)、磁性或光學儲存媒體、快閃記憶體裝置、電氣儲存裝置、光學儲存裝置、聲音儲存裝置、或其他形式的傳播信號(例如,載波、紅外線信號、數位信號)儲存裝置等的機器可存取的媒體。例如,機器可自能夠存放將在傳播信號上傳輸的資訊之一媒體接收該傳播信號,而存取一儲存裝置。
在本說明書中提及“一個實施例”或“一實施例”時,意指參照該實施例而述及的一特定特徵、結構、或特性被包含在本發明的至少一實施例中。因此,在本說明書中之各部分中出現詞語“在一個實施例中”或“在一實施例中”時,不必然都參照到相同的實施例。此外,可在一或多個實施例中以適當之方式結合該等特定特徵、結構、或特性。
在前文之說明書中,已參照一些特定實施例而提供了一詳細說明。然而,顯然可在不脫離在最後的申請專利範圍中述及的本發明之廣義精神及範圍下,對本發明作出各種修改及改變。因此,本說明書及各圖式應被視為例示性而非限制性。此外,前文中使用實施例及其他例示文字時,不必然都參照到相同的實施例或相同的例子,而是可能參照到不同的且有所區別的實施例,但是也有可能參照到相同的實施例。
100,250,305,405...處理器
101,102...核心
110...較高階的快取記憶體
101a,101b,102a,102b...硬體執行緒
130,131...更名分配邏輯
135,136...重新排序/引退單元
120,121...指令轉換緩衝器
140,141...執行單元
105...匯流排介面模組
175...系統記憶體
125,126...解碼器
150,151...較低階資料快取記憶體及資料轉換緩衝器
205...快取記憶體
230...控制邏輯
210,215,220,225...快取單元
235...陣列
211,216,221,226,325,355,425...條目
211r,216r,221r,226r...硬體讀取屬性
211w,216w,221w,226w...硬體寫入屬性
211b,216b,221b,226b...硬體緩衝屬性
201...資料項目
212,217,222,227...丟失欄位
310,420...儲存緩衝器
350...載入緩衝器
327...屬性存取型別
326...屬性資料
320...儲存資料緩衝器
315,415...儲存位址緩衝器
357...存取型別
358,428,458...位址
356...資料條目
370...轉送邏輯
360...相依性/阻止邏輯
431,432,433...屬性資訊位置
460...相依性邏輯
470...轉送/阻止邏輯
已參照各附圖而以舉例但非限制之方式說明了本發明。
第1圖示出其中包含能夠同時執行多個軟體執行緒的多個處理元件的一處理器之一實施例。
第2圖示出其中包含用來支援對硬體屬性的存取的記憶體排序的結構之一處理器之一實施例。
第3圖示出其中包含用來支援對硬體屬性的存取的記憶體排序的結構之一處理器之另一實施例。
第4圖示出其中包含用來支援對硬體屬性的存取的記憶體排序的結構之一處理器之另一實施例。
第5圖示出於讀取一硬體屬性時提供適當的記憶體排序的一方法之一流程圖之一實施例。
100...處理器
101,102...核心
110...較高階的快取記憶體
101a,101b,102a,102b...硬體執行緒
130,131...更名分配邏輯
135,136...重新排序/引退單元
120,121...指令轉換緩衝器
140,141...執行單元
105...匯流排介面模組
175...系統記憶體
125,126...解碼器
150,151...較低階資料快取記憶體及資料轉換緩衝器
Claims (16)
- 一種裝置,包含:與一快取記憶體的一快取單元相關聯之複數個硬體屬性;儲存緩衝器邏輯,組構為存放與一第一屬性存取型別相關聯的一儲存操作的一參考,其中該儲存操作更新至少該複數個硬體屬性的其中之一;被耦合到該儲存緩衝器邏輯之相依性邏輯,該相依性邏輯組態為用以比較至少該第一屬性存取型別以及與一後續載入操作相關聯的一第二屬性存取型別,對該複數個硬體屬性的其中之一,並且根據比較該第一屬性存取型別以及該第二屬性存取型別的至少該相依性邏輯決定該儲存操作與該後續載入操作之間是否存在一相依性;以及被耦合到該邏輯之轉送邏輯,該轉送邏輯回應該儲存操作與該後續載入操作之間存在了相依性之決定而將該儲存操作之被更新的屬性資料轉送到該後續載入操作。
- 如申請專利範圍第1項之裝置,其中自一讀取監視器存取型別、一寫入監視器存取型別、以及一緩衝存取型別中個別地選出該第一屬性存取型別及該第二屬性存取型別中之每一屬性存取型別。
- 如申請專利範圍第1項之裝置,其中該儲存緩衝器邏輯組態為用來存放與該儲存操作的該參考相關聯的該第一屬性存取型別,包含用來存放被添加到與該儲存操作相關聯的一儲存位址的該第一屬性存取型別之儲存位址緩 衝器邏輯,且其中該相依性邏輯組態為比較至少該第一屬性存取型別以及該第二屬性存取型別包含:該相依性邏輯比較被添加到該儲存位址之該第一屬性存取型別以及被添加到與該後續載入相關聯的一載入位址之該第二存取型別。
- 如申請專利範圍第3項之裝置,進一步包含監聽邏輯,用以回應一外部存取要求而監聽該儲存緩衝器,其中該轉送邏輯將回應參考該儲存位址之該外部存取要求而不轉送該被更新的屬性資料。
- 如申請專利範圍第3項之裝置,其中該相依性邏輯將回應被添加到該儲存位址之該第一屬性存取型別與被添加到該載入位址之該第二存取型別匹配,而進一步決定該儲存操作與該後續載入操作之間存在相依性。
- 如申請專利範圍第5項之裝置,其中該相依性邏輯將回應被添加到該儲存位址之該第一屬性存取型別與被添加到該載入位址之該第二存取型別不匹配,而進一步決定該儲存操作與該後續載入操作之間不存在相依性,且其中該轉送邏輯將回應該相依性邏輯決定該儲存操作與該後續載入操作之間不存在相依性,而不轉送該被更新的屬性資料。
- 如申請專利範圍第1項之裝置,其中該儲存緩衝器邏輯組構為存放與一第一屬性存取型別相關聯的一儲存操作的一參考包含:該儲存緩衝器邏輯,組態為用以存放儲存資料在與該儲存操作相關聯的一儲存資料緩衝器條 目,其中該儲存資料緩衝器條目中之該儲存資料的位置代表該第一屬性存取型別。
- 如申請專利範圍第7項之裝置,其中該相依性邏輯組態為根據比較該第一屬性存取型別以及該該第二屬性存取型別的相依性邏輯決定該儲存操作與該後續載入操作之間是否存在一相依性包含:該相依性邏輯組態為用以回應與該儲存操作相關聯的一儲存位址匹配與該後續載入操作相關聯的一載入位址、以及基於該儲存資料的位置而得知之該第二屬性存取型別與該第一屬性存取型別相同,而決定該儲存操作與該後續載入操作之間存在相依性。
- 如申請專利範圍第8項之裝置,其中該相依性邏輯將回應與該儲存操作相關聯的該儲存位址不匹配與該後續載入操作相關聯的該載入位址、或基於該儲存資料緩衝器條目中存放的該儲存資料的位置而得知之該第二屬性存取型別不與該第一屬性存取型別相同,而決定該儲存操作與該後續載入操作之間不存在相依性,且其中該轉送邏輯將回應該相依性邏輯決定該儲存操作與該後續載入操作之間不存在相依性,而不轉送該儲存資料。
- 一種方法,包含下列步驟:遇到要讀取一硬體屬性之一載入操作,該載入操作係與一屬性型別相關聯,且參考與該屬性型別的一硬體屬性相關聯之一位址;以被添加到該位址的該屬性型別之一表示法搜尋一儲存位址緩衝器; 決定一執行中之先前儲存操作與該屬性型別相關聯且參考與該硬體屬性相關聯之該位址以回應找到存放被添加到該位址的該屬性型別之該表示法之一儲存位址的該儲存位址緩衝器的一儲存位址緩衝器條目;以及回應該執行中之先前儲存操作係與該屬性型別相關聯且參考與該硬體屬性相關聯之該位址之決定,而執行一相依性行動。
- 如申請專利範圍第10項之方法,其中該載入操作包括一測試硬體屬性操作,且其中該執行中之先前儲存操作包括一設定硬體屬性操作。
- 如申請專利範圍第10項之方法,其中自包含一讀取監視器屬性型別、一寫入監視器屬性型別、及一緩衝屬性型別的一組屬性型別選出該屬性型別。
- 如申請專利範圍第10項之方法,其中執行一相依性行動之該步驟包含下列步驟:轉送與該執行中之先前儲存操作相關聯的儲存資料。
- 如申請專利範圍第10項之方法,其中執行一相依性行動之該步驟包含下列步驟:在該執行中之先前儲存操作更新該硬體屬性之前,阻止該載入操作。
- 如申請專利範圍第10項之方法,進一步包含下列步驟:回應將導致該硬體屬性的丟失之與該硬體屬性相關聯的一快取位置之收回,而將與該硬體屬性相關聯的一丟失欄位更新至一丟失值。
- 如申請專利範圍第15項之方法,其中回應遇到 該載入操作要讀取該硬體屬性且該丟失欄位存放了該丟失值,而宣告該載入操作是錯誤的。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/346,539 US8627014B2 (en) | 2008-12-30 | 2008-12-30 | Memory model for hardware attributes within a transactional memory system |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201037517A TW201037517A (en) | 2010-10-16 |
TWI461912B true TWI461912B (zh) | 2014-11-21 |
Family
ID=42286303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098143379A TWI461912B (zh) | 2008-12-30 | 2009-12-17 | 用於交易式記憶體系統中之硬體屬性之記憶體模式 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8627014B2 (zh) |
JP (1) | JP5416223B2 (zh) |
CN (1) | CN101814017B (zh) |
BR (1) | BRPI0920229A2 (zh) |
TW (1) | TWI461912B (zh) |
WO (1) | WO2010077884A2 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8627014B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Memory model for hardware attributes within a transactional memory system |
US9785462B2 (en) | 2008-12-30 | 2017-10-10 | Intel Corporation | Registering a user-handler in hardware for transactional memory event handling |
US20100332768A1 (en) * | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Flexible read- and write-monitored and buffered memory blocks |
US8370577B2 (en) | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
US8812796B2 (en) | 2009-06-26 | 2014-08-19 | Microsoft Corporation | Private memory regions and coherence optimizations |
US8356166B2 (en) * | 2009-06-26 | 2013-01-15 | Microsoft Corporation | Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers |
US8489864B2 (en) * | 2009-06-26 | 2013-07-16 | Microsoft Corporation | Performing escape actions in transactions |
US8250331B2 (en) * | 2009-06-26 | 2012-08-21 | Microsoft Corporation | Operating system virtual memory management for hardware transactional memory |
US8229907B2 (en) * | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested transactions |
US8402218B2 (en) | 2009-12-15 | 2013-03-19 | Microsoft Corporation | Efficient garbage collection and exception handling in a hardware accelerated transactional memory system |
US9092253B2 (en) * | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
US8539465B2 (en) * | 2009-12-15 | 2013-09-17 | Microsoft Corporation | Accelerating unbounded memory transactions using nested cache resident transactions |
US8533440B2 (en) | 2009-12-15 | 2013-09-10 | Microsoft Corporation | Accelerating parallel transactions using cache resident transactions |
US20120059971A1 (en) * | 2010-09-07 | 2012-03-08 | David Kaplan | Method and apparatus for handling critical blocking of store-to-load forwarding |
US9104690B2 (en) | 2011-01-27 | 2015-08-11 | Micron Technology, Inc. | Transactional memory |
CN104137060B (zh) * | 2011-12-30 | 2018-03-06 | 英特尔公司 | 高速缓存协处理单元 |
EP2831721B1 (en) | 2012-03-30 | 2020-08-26 | Intel Corporation | Context switching mechanism for a processing core having a general purpose cpu core and a tightly coupled accelerator |
US10120809B2 (en) * | 2015-09-26 | 2018-11-06 | Intel Corporation | Method, apparatus, and system for allocating cache using traffic class |
TWI587218B (zh) | 2016-09-10 | 2017-06-11 | 財團法人工業技術研究院 | 記憶體事務層級模型模擬方法及系統 |
US10620971B2 (en) | 2017-02-22 | 2020-04-14 | International Business Machines Corporation | Accelerating reference count processing in object deletion |
CN110647663B (zh) * | 2019-09-09 | 2021-12-17 | 中国人民解放军国防科技大学 | 面向最短路径问题的图结点属性存储器实现方法和装置 |
CN111047187B (zh) * | 2019-12-12 | 2023-10-17 | 浙江大搜车软件技术有限公司 | 信息匹配处理方法、装置、计算机设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6216200B1 (en) * | 1994-10-14 | 2001-04-10 | Mips Technologies, Inc. | Address queue |
US20030014697A1 (en) * | 2000-12-15 | 2003-01-16 | Bryan Hornung | System and method for dynamically moving checksums to different memory locations |
US20030154296A1 (en) * | 2002-02-08 | 2003-08-14 | International Business Machines Corporation | Transmission control system, server, terminal station, transmission control method, program and storage medium |
US20050091459A1 (en) * | 2003-10-23 | 2005-04-28 | Nhon Quach | Flexible mechanism for enforcing coherency among caching structures |
US20060085611A1 (en) * | 2004-10-18 | 2006-04-20 | Hitachi, Ltd. | Method of managing multistage copied data |
TW200809502A (en) * | 2006-08-11 | 2008-02-16 | Shi-Wu Lo | Method of accessing cache memory for parallel processing processors |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8728494D0 (en) * | 1987-12-05 | 1988-01-13 | Int Computers Ltd | Multi-cache data storage system |
JP2651037B2 (ja) * | 1990-04-23 | 1997-09-10 | 株式会社日立製作所 | アドレスバス制御装置 |
US6192452B1 (en) * | 1999-02-26 | 2001-02-20 | International Business Machines Corporation | Method and system for avoiding data loss due to cancelled transactions within a non-uniform memory access system |
US6549996B1 (en) * | 1999-07-02 | 2003-04-15 | Oracle Corporation | Scalable multiple address space server |
US7035963B2 (en) * | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
JP2004005710A (ja) * | 2003-06-23 | 2004-01-08 | Hitachi Ltd | 情報処置装置 |
FR2859307A1 (fr) * | 2003-08-27 | 2005-03-04 | St Microelectronics Sa | Memoire cache a lecture asynchrone et dispositif de controle de l'acces a une memoire de donnees comprenant une telle memoire cache |
US7237131B2 (en) * | 2003-12-30 | 2007-06-26 | Intel Corporation | Transaction-based power management in a computer system |
US7177987B2 (en) * | 2004-01-20 | 2007-02-13 | Hewlett-Packard Development Company, L.P. | System and method for responses between different cache coherency protocols |
US7395374B2 (en) * | 2004-01-20 | 2008-07-01 | Hewlett-Packard Company, L.P. | System and method for conflict responses in a cache coherency protocol with ordering point migration |
DE602004011689T2 (de) * | 2004-04-14 | 2009-02-05 | Telecom Italia S.P.A. | Verfahren und System zur Handhabung der Übermittlung von Inhalten in Kommunikationsnetzen |
US7644239B2 (en) * | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7490199B2 (en) * | 2005-05-09 | 2009-02-10 | Noam Camiel | System and method for safe removal of a removable device from a digital appliance |
WO2007015925A1 (en) * | 2005-08-01 | 2007-02-08 | Sun Microsystems, Inc. | Avoiding locks by transactionally executing critical sections |
US8180977B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US8180967B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US20080005504A1 (en) * | 2006-06-30 | 2008-01-03 | Jesse Barnes | Global overflow method for virtualized transactional memory |
US7783805B2 (en) * | 2006-11-29 | 2010-08-24 | Cisco Technology, Inc. | Interlocking input/outputs on a virtual logic unit number |
US7937535B2 (en) * | 2007-02-22 | 2011-05-03 | Arm Limited | Managing cache coherency in a data processing apparatus |
US7917701B2 (en) * | 2007-03-12 | 2011-03-29 | Arm Limited | Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation |
US8751859B2 (en) | 2007-05-10 | 2014-06-10 | International Business Machines Corporation | Monitoring lost data in a storage system |
WO2008155827A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | キャッシュ制御装置及び制御方法 |
US8195832B2 (en) * | 2007-12-12 | 2012-06-05 | Alcatel Lucent | Facilitating management of layer 2 hardware address table based on packet priority information |
US8078807B2 (en) * | 2007-12-27 | 2011-12-13 | Intel Corporation | Accelerating software lookups by using buffered or ephemeral stores |
US8627014B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Memory model for hardware attributes within a transactional memory system |
-
2008
- 2008-12-30 US US12/346,539 patent/US8627014B2/en not_active Expired - Fee Related
-
2009
- 2009-12-15 BR BRPI0920229A patent/BRPI0920229A2/pt not_active Application Discontinuation
- 2009-12-15 WO PCT/US2009/068114 patent/WO2010077884A2/en active Application Filing
- 2009-12-15 JP JP2011543575A patent/JP5416223B2/ja not_active Expired - Fee Related
- 2009-12-17 TW TW098143379A patent/TWI461912B/zh not_active IP Right Cessation
- 2009-12-28 CN CN200910216935.2A patent/CN101814017B/zh not_active Expired - Fee Related
-
2012
- 2012-01-26 US US13/359,238 patent/US8769212B2/en not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6216200B1 (en) * | 1994-10-14 | 2001-04-10 | Mips Technologies, Inc. | Address queue |
US20030014697A1 (en) * | 2000-12-15 | 2003-01-16 | Bryan Hornung | System and method for dynamically moving checksums to different memory locations |
US20030154296A1 (en) * | 2002-02-08 | 2003-08-14 | International Business Machines Corporation | Transmission control system, server, terminal station, transmission control method, program and storage medium |
US20050091459A1 (en) * | 2003-10-23 | 2005-04-28 | Nhon Quach | Flexible mechanism for enforcing coherency among caching structures |
US20060085611A1 (en) * | 2004-10-18 | 2006-04-20 | Hitachi, Ltd. | Method of managing multistage copied data |
TW200809502A (en) * | 2006-08-11 | 2008-02-16 | Shi-Wu Lo | Method of accessing cache memory for parallel processing processors |
Also Published As
Publication number | Publication date |
---|---|
US20100169580A1 (en) | 2010-07-01 |
CN101814017B (zh) | 2015-02-11 |
CN101814017A (zh) | 2010-08-25 |
WO2010077884A3 (en) | 2010-09-30 |
BRPI0920229A2 (pt) | 2015-12-29 |
US20120159079A1 (en) | 2012-06-21 |
WO2010077884A2 (en) | 2010-07-08 |
US8769212B2 (en) | 2014-07-01 |
JP5416223B2 (ja) | 2014-02-12 |
TW201037517A (en) | 2010-10-16 |
JP2012514254A (ja) | 2012-06-21 |
US8627014B2 (en) | 2014-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI461912B (zh) | 用於交易式記憶體系統中之硬體屬性之記憶體模式 | |
TWI434214B (zh) | 用以延伸快取一致性以保持緩衝資料之裝置,處理器,系統及方法 | |
JP6342970B2 (ja) | トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性 | |
JP5944417B2 (ja) | トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録 | |
US8706982B2 (en) | Mechanisms for strong atomicity in a transactional memory system | |
US8195898B2 (en) | Hybrid transactions for low-overhead speculative parallelization | |
US7725662B2 (en) | Hardware acceleration for a software transactional memory system | |
US10387324B2 (en) | Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution | |
US8364911B2 (en) | Efficient non-transactional write barriers for strong atomicity | |
US20100122073A1 (en) | Handling exceptions in software transactional memory systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |