TWI476595B - 用於交易式記憶體事件處置之硬體中使用者處置器的登錄 - Google Patents
用於交易式記憶體事件處置之硬體中使用者處置器的登錄 Download PDFInfo
- Publication number
- TWI476595B TWI476595B TW098143374A TW98143374A TWI476595B TW I476595 B TWI476595 B TW I476595B TW 098143374 A TW098143374 A TW 098143374A TW 98143374 A TW98143374 A TW 98143374A TW I476595 B TWI476595 B TW I476595B
- Authority
- TW
- Taiwan
- Prior art keywords
- handler
- transaction
- execution
- event
- transactional
- Prior art date
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
Description
本發明有關於處理器執行的領域,詳言之,指令群的執行。
本發明有關於與此一起申請的下列專利申請案:由蓋德薛佛(Gad Sheaffer)等人於2008年12月30日申請的名稱為「延伸快取一致性協定以支援本地緩衝之資料(Extending Cache Coherency Protocols to Support Locally Buffered Data)」之具有專利代理人卷號P29132的美國專利申請案號12/346,543、由蓋德薛佛(Gad Sheaffer)等人於2008年12月30日申請的名稱為「交易式記憶體系統內之硬體屬性的記憶體模型(Memory Model for Hardware Attributes Within a Transactional Memory System)」之具有專利代理人卷號P29131的美國專利申請案號12/346,539、由蓋德薛佛(Gad Sheaffer)等人於2008年12月30日申請的名稱為「交易式記憶體系統內之讀取及寫入監視屬性(Read and Write Monitoring Attributes in Transactional Memory(TM) System)」之具有專利代理人卷號P29130的美國專利申請案號12/346,530、由蓋德薛佛(Gad Sheaffer)等人於2008年12月30日申請的名稱為「在硬體中保持失真元資料用的抽象位址空間(Metaphysical Address Space for Holding Lossy Meta-data in Hardware)」之具有專利代理人卷號P29128的美國專利申請案號12/346,500。
半導體處理及邏輯設計的進步允許可存在於積體電路裝置上的邏輯數量之增加。因此,電腦系統組態已從系統中之單一或多積體電路演化成存在於個別積體電路上之多核心及多邏輯處理器。處理器或積體電路典型包含單一處理器晶粒,其中處理器晶粒可包括任何數量的核心或邏輯處理器。
在積體電路上之不斷增加的核心及邏輯處理器的數量允許同時執行更多軟體執行緒。然而,可同時執行的軟體執行緒之數量的增加已經在同步化軟體執行緒間共享之資料上產生問題。一種常見的存取多核心或多邏輯處理器系統中之共享資料的解決方法包含閉鎖的使用,以保證在對共享資料的多重存取內之互斥(mutual exclusion)。然而,執行多重軟體執行緒不斷增加的能力潛在導致假競爭以及執行的序列化。
例如,考量保持共享資料的散列表。藉由閉鎖系統,程式設計人員可閉鎖整個散列表,允許一執行緒存取整個散列表。然而,其他執行緒的產出量及性能會受到危及,因其無法存取散列表中的任何項目,直到閉鎖解除為止。替代地,可閉鎖散列表中之各個項目。無論哪種方式,在從此簡單的範例推及大型可擴充程式之後,很明顯地對程式設計人員而言閉鎖競爭、序列化、微粒同步化及鎖死避免的複雜度會變成非常棘手的負擔。
另一種最近的資料同步化技術包括交易式記憶體(TM)的使用。交易式執行經常包括執行一群複數微操作、操作或指令。在上述範例中,監視/追蹤散列表內之執行緒執行及其記憶體存取兩者。若兩個執行緒存取/變更相同項目,可執行衝突化解以確保資料效度。一種交易式執行包括軟體交易式記憶體(STM),其中經常在沒有硬體支援下在軟體中執行記憶體存取的追蹤、衝突化解、放棄任務及其他交易式任務。另一種交易式執行包括硬體交易式記憶體(HTM)系統,其中包括硬體以支援存取追蹤、衝突化解及其他交易式任務。
交易內的某些操作係基於由交易讀取或產生之資料。若損壞此資料或監視對此資料之存取之資訊,可能發生意外的副作用。例如,假設一交易將分支目的地寫入某變數X中。由於交易式記憶體的語義,X的值可能會被改變(如以緩衝方式寫入X且喪失緩衝器)。在改變後,交易基於從位址X讀取之新的無效值嘗試分支,因而發生意外的結果。由純同步軟體(OS或VMM)方法(如輪詢)或在交易最後所處置之事件(如上述那些)可能不夠立即而無法在發生意外結果前處置改變或衝突。
在下列說明中,提出各種特定細節,如交易執行的特定硬體結構、存取監視器的特定類型及實行、特定快取實行、特定類型之快取一致性模型、特定資料粒度及特定類型之記憶體存取及位置等等,以利本發明之詳盡的了解。然而,對熟悉此技藝人士明顯地,無需利用這些特定細節來實施本發明。在其他例子中,並未詳細說明熟知的構件及方法,如軟體中之交易的編碼、交易之定界、特定及替代型多核心及多執行緒處理器架構、特定編譯器方法/實行及微處理器之特定操作細節,以不多餘地混淆本發明。
在此所述之方法及設備為用於暫存硬體中之處置器以支援至處置器的最佳化控制流程轉移。詳言之,暫存處置器係主要參照硬體交易式記憶體系統加以說明。然而,暫存處置器之方法及設備不如此受限,可針對需要處置器介入之任何硬體執行實施其。
參照第1圖,描繪能夠同時執行多執行緒的處理器之一電施例。注意到處理器100可包括硬體交易式執行的硬體支援。與硬體交易式執行一起或分開地,處理器100亦可提供軟體交易式記憶體(STM)的硬體加速、STM的分別執行或其之組合,如綜合交易式記憶體(TM)系統的硬體支援。處理器100包括任何處理器,如微處理器、嵌入式處理器、數位信號處理器(DSP)、網路處理器或執行碼之其他裝置。處理器100,如所示,包括複數處理元件。
在一實施例中,處理元件意指執行緒單元、處理單元、前後關係(context)、邏輯處理器、硬體執行緒、核心及/或任何其他元件,其能夠保持處理器之狀態,如執行狀態或架構狀態。換言之,處理元件,在一實施例,意指能夠與碼(如軟體執行緒、操作系統、應用或其他碼)獨立關聯的任何硬體。實體處理器典型意指積體電路,其潛在包括任何數量的其他處理元件,如核心或硬體執行緒。
核心經常意指位在積體電路上能夠維持獨立架構狀態之邏輯,其中每一個獨立維持之架構狀態與至少一些專門執行資源關聯。與核心相反地,硬體執行緒典型意指位在積體電路上能夠維持獨立架構狀態之任何邏輯,其中每一個獨立維持之架構狀態共享執行資源的存取。如所示,當共享某些資源並將其他專供給一架構狀態時,硬體執行緒及核心之命名間的界線重疊。但經常地,核心及硬體執行緒***作系統視為個別的邏輯處理器,其中操作系統能夠個別地排程各個邏輯處理器上的操作。
實體處理器100,如第1圖所示,包括兩個核心,核心101及102,其共享對較高階快取110的存取。雖處理器100可包括不對稱核心,亦即不同組態、功能單元及/或邏輯的核心,但描繪對稱核心。因此,將不詳細說明核心102,其描繪成與核心101相同,以避免重複說明。此外,核心101包括兩硬體執行緒101a及101b,而核心102包括兩硬體執行緒102a及102b。因此,軟體實體,如操作系統,潛在將處理器100視為四個分別的處理器,亦即四個邏輯處理器或能夠同時執行四個軟體執行緒之處理元件。
在此,第一執行緒與架構狀態暫存器101a關聯、第二執行緒與架構狀態暫存器101b關聯、第三執行緒與架構狀態暫存器102a關聯且第四執行緒與架構狀態暫存器102b關聯。如所示,在架構狀態暫存器101b中複製架構狀態暫存器101a,所以可儲存邏輯處理器101a及邏輯處理器101b之個別架構狀態/前後關係。亦可複製執行緒101a及101b的其他較小資源,如指令指標或重新命名分配器邏輯130中之重新命名邏輯。可經由分割來共享某些資源,如重新排序/引退(retirement)單元135中之重新排序緩衝器、指令轉譯緩衝區(ITLB) 120、載入/儲存緩衝器及佇列。可潛在地完全共享其他資源,如一般目的內部暫存器、頁-表基礎暫存器、低階資料快取及資料轉譯緩衝區(TLB) 115、執行單元140及亂序單元135之部分。
處理器100經常包括其他資源,其可完全共享、經由分割而共享或由處理元件專供/專供給處理元件。在第1圖中,描繪單純例示性處理器之一實施例,其具有處理器的例示性功能單元/資源。注意到處理器可包括,或省略,任何這些功能單元,還可包括未圖示之任何其他已知的功能單元、邏輯或軔體。
如所示,處理器100包括匯流排介面模組105,以與處理器100外部的裝置通訊,如系統記憶體175、晶片組、北橋或其他積體電路。記憶體175可專供給處理器100或與系統中之其他裝置共享。較高階或更外部快取110用來快取最近從較高階快取110提取的元件。注意到較高階或更外部快取意指從執行單元增加或更遠的快取階級。在一實施例中,較高階快取110為二階資料快取。然而,較高階快取110不如此受限,因其可與指令快取關聯或包括指令快取。追蹤快取,亦即,一種指令快取,可取代地耦合在解碼器125之後以儲存最近解碼的追蹤。模組120亦潛在包括預測將執行/採取的分支之分支目標緩衝器以及儲存指令之位址轉譯項目之指令轉譯緩衝器(I-TLB)。
解碼模組125耦合至提取單元120以解碼提取的元件。在一實施例中,處理器100與指令集架構(ISA)關聯,其界定/指定可在處理器100上執行的指令。在此,ISA可辨認的機器碼經常包括稱為運算碼的指令之一部分,其參照/指定將執行之指令或操作。
在一範例中,分配器及重新命名區塊130包括分配器以保留資源,如儲存指令處理結果之暫存器檔。然而,執行緒101a及101b潛在能夠亂序執行,其中分配器及重新命名區塊130亦保留其他資源,如追蹤指令結果的重新排序緩衝器。單元130亦可包括暫存器重新命名器以將程式/指令參考暫存器重新命名成處理器100內部的其他暫存器。重新排序/引退單元135包括構件,如上述之重新排序緩衝器、載入緩衝器及儲存緩衝器,以支援亂序執行及亂序執行之指令的後續有序引退。
排程器及執行單元區塊140,在一實施例中,包括排程器單元以排程執行單元上之指令/操作。例如,在具有可得之浮點執行單元的執行單元的埠上排程浮點指令。亦包括與執行單元關聯的暫存器檔以儲存資訊指令處理結果。範例執行單元包括浮點執行單元、整數執行單元、跳越執行單元、載入執行單元、儲存執行單元及其他已知的執行單元。
較低階資料快取及資料轉譯緩衝器(D-TLB)150耦合至執行單元140。資料快取用來儲存最近使用過/操作過的元件,如資料運算元,其潛在保持在記憶體一致性狀態中。D-TLB用來儲存最近虛擬/線性至實體位址轉譯。作為一特定範例,處理器可包括頁表結構以將實體記憶體分成複數虛擬頁。
在一實施例中,處理器100能夠硬體交易式執行、軟體交易式執行或其之組合及綜合。交易,其亦可稱為碼之關鍵或原子區段,包括將執行為原子群的指令、操作或微操作群。例如,指令或操作可用來定界交易或關鍵區段。在一電施例中,於後詳述,這些指令為指令集(如指令集架構(ISA))的部份,其可被處理器100之硬體(如上述解碼器)所辨認。經常,這些指令,一旦從高階語言編譯成硬體可辨認組合語言後,包括在解碼階段解碼器可辨認之運算碼(opcodes),或其他指令部分。
典型地,在交易執行期間,不將記憶體之更新變得總體可見直到交易提交(commit)為止。舉例而言,本地執行緒潛在可看到至一位置的交易式寫入,但回應於來自另一執行緒的讀取,不轉送寫入資料直到包括交易式寫入的交易提交為止。雖然交易仍舊為待決,追蹤從記憶體載入或寫入記憶體內的資料項/元素,於後詳述。一旦交易到達提交點,若未偵測到交易的衝突,則提交交易並將在交易期間進行的更新變得總體可見。
然而,若在交易待決期間交易變成無效,則放棄交易並潛在重新開始而不將更新變得總體可見。因此,如此所使用,交易之待決意指已經開始執行且尚未提交或放棄(亦即待決)之交易。
軟體交易式記憶體(STM)系統經常意指在軟體或至少部分在軟體中執行存取追蹤、衝突化解或其他交易式記憶體任務。在一實施例中,處理器100能夠執行編譯器以編譯程式碼以支***易式執行。在此,編譯器可***操作、呼叫、函數及其他碼以執行交易的執行。
編譯器經常包括程式或程式集以將來源文/碼轉譯成目標文/碼。通常,多階段及多遍地以編譯器進行程式/應用碼的編譯以將高階程式語言碼轉變成低階機器或組合語言碼。然而,針對簡單編譯仍可利用單遍編譯器。編譯器可利用任何已知的編譯技術並執行任何已知的編譯器操作,如詞法分析、預先處理、剖析、語義分析、碼產生、碼轉變及碼最佳化。
較大型編譯器經常包括多階段,但這些階段最常包括在兩個一般階段中:(1)前端,亦即一般可以發生語法處理、語義處理及一些轉變/最佳化的地方,以及(2)後端,亦即一般發生分析、轉變、最佳化及碼產生。某些編譯器參照中端,其描繪編譯器之前端及後端間之敘述的模糊化。因此,對於編譯器之***、關聯、產生或其他操作之參照可能發生在上述階段或遍的任何中,以及編譯器之任何其他已知的階段或遍中。舉例而言,編譯器潛在於一或更多編譯階段中***交易式操作、呼叫、函數等等,如在編譯前端階段中之呼叫/操作的***以及接著在交易式記憶體轉變階段期間至較低階碼之呼叫/操作的轉變。
無論如何,不管編譯器之執行環境及動態或靜態本質為何,在一實施例中,編譯器編譯程式碼以致能交易式執行。因此,在一實施例中,程式碼之執行的參照意指(1)動態或靜態地編譯器程式的執行,以編譯主程式碼、以維持交易式結構或執行交易相關的其他操作、(2)主程式碼的執行包括交易式操作/呼叫、(3)與主程式碼關聯之其他程式碼的執行,如程式庫或(4)上述之結合。
在一實施例中,處理器100能夠利用硬體/邏輯,亦即在硬體交易式記憶體(HTM)系統內執行交易。當實作HTM時從架構或微架構角度來看存在各種特定實行細節;其大部分不再此詳述以避免多餘地混淆本發明。然而,例示性揭露某些結構及實行例。然而,應注意到這些結構及實行例為非必要且可增加具有不同實行例細節的其他結構及/或以具有不同實行例細節的其他結構取代。
作為實行設計選擇的一範例,HTM可以就地更新(update-in-place)方式或寫入緩衝方式操作。在就地更新的HTM中,對參照的記憶體位址執行交易式寫入以修改保持在其中之先前資料。然而,此修改的資料並不提供給外部請求的執行緒,亦即不將資料變成總體可見,但提供給本地讀取以供本地記憶體排序用。另外,經常「記錄」先前資料,使得在放棄交易時,能夠復原先前資料以實現交易執行開始前執行緒的狀態。
舉例說明,假設資料快取150包括第一階資料快取以保持來自較高階記憶體之資料,如快取110及系統記憶體175。因此,在遇到至資料快取150之交易式寫入時,在寫回快取的一實施例中,將先前的資料項寫回到較高階快取110。替代地,可將先前資料記錄在處理器100內或外之另一分別記憶體中。在記錄先前資料項後,執行交易式寫入以更新快取150中之資料項。因此,本地執行緒,如本地執行緒101a,亦即與此交易式寫入關聯的執行緒,可從快取150中之修改的資料項讀取。然而,若包括交易式寫入之交易尚未提交,回應於讀取請求,不提供修改的資料而是提供記錄的資料給另一執行緒,如執行緒102b。當交易提交時,記錄資料變成無效或被忽略。然而,若放棄交易,則重載先前資料或將其總體識別為有效資料。
相反地,在寫入緩衝HTM中,在寫入緩衝器中緩衝交易式寫入,同時先前資料留在其原來位置中。若本地執行緒,如執行緒102b,執行被交易式寫入之資料的讀取,則從寫入緩衝器轉送修改的資料。必然地,若在包括交易式寫入之交易仍為待決時外部執行緒請求該資料的讀取,則提供來自原來位置的先前資料。此外,在交易提交後,將修改的資料複製到對應的記憶體位址,同時在放棄時,忽略緩衝的資料。
如從上述討論中可見到,可由本地處理元件,以及潛在由其他處理元件,做出對資料項之存取及請求兩者。在沒有安全機制情況下,這些存取的一些可能潛在導致無效資料及執行,亦即使讀取無效之對資料的寫入,或無效資料的讀取。因此,處理器100潛在包括邏輯來追蹤或監視對資料項之記憶體存取以辨別出潛在衝突。
資料項或資料元件可包括在由硬體、軟體或其之結合所界定之任何粒度的資料。資料、資料元素、資料項或對其之參照的範例之非窮舉式列表包括記憶體位址、資料物件、類別(class)、動態語言碼的一類型(type)之欄位、動態語言碼之一類型、變數、運算元、資料結構及對記憶體位址之非直接參照。然而,任何已知的資料群可稱為資料元件或資料項。上述範例之數個,如動態語言碼的一類型之欄位及動態語言碼之一類型參照動態語言碼之資料結構。舉例說明,動態語言碼,如來自昇陽微系統公司(Sun Microsystems Inc)之JavaTM
,為類型強烈的語言。各變數具有在編譯時間知道的類型。類型可分成兩類-原生型(布林及數值的,如整數(int)、浮點(float))及參照類型(類別、介面及陣列)。參照型的值為對物件之參照。在JavaTM
中,物件,其具有欄位,可為類別實例(class instance)或陣列。假設類別A的物件a,慣用A::x的記法來指類型A的欄位x以及a.x來指類別A之物件a的欄位x。例如,一式子可表達成a.x=a.y+a.z。在此載入欄位y及欄位z以相加並且將結果寫入至欄位x。
因此,可在任何資料層級粒度監視對資料項的記憶體存取。例如,在一實施例中,在類型層級監視對資料的記憶體存取。在此,可將對欄位A::x之交易式寫入及欄位A::y的非交易式載入監視為對相同資料項(亦即類型A)的存取。在另一實施例中,在欄位層級粒度執行記憶體存取監視。在此,不將對A::x的交易式寫入及A::y的非交易式載入監視為對相同資料項的存取,因它們參照至不同欄位。注意到,可在追蹤對資料項之記憶體存取時將其他資料結構或程式技術納入考量。舉例而言,假設將指向類別B的物件之類別A的物件之欄位x及y(亦即,A::x及A::y)初始化成新分配的物件,且在初始化後永遠不寫至其。在一實施例中,對由A::x所指向之物件的欄位B::z的交易式寫入與對由A::y所指向之物件的欄位B::z的非交易式載入並非監視成對相同資料項之記憶體存取。從這些範例推及,可判斷監視器可在任何資料粒度層級執行監視。
在一實施例中,監視器包括讀取監視器及寫入監視器以追蹤載入及儲存,其因此被判斷成將被監視。舉例而言,硬體讀取監視器及寫入監視器至少在資料項的一粒度監視資料項,不管保持資料項的儲存結構之粒度為何。在由蓋德薛佛(Gad Sheaffer)等人與此案一起申請的具有專利代理人卷號P29130的名稱為「交易式記憶體系統中之讀取及寫入監視屬性(Read and Write Monitoring Attributes in Transactional MemoryTM
Systems)」之共同申請案號12/346,530中討論利用讀取監視器/屬性來監視資料項的範例。然而,可利用監視器、屬性、註解或其他追蹤機制來偵測與利用任何資料或結構粒度來保持資料的交易式執行關聯的衝突。
讀取或寫入屬性包括用來保持與資料項相關之狀態的任何邏輯、軔體或結構。例如,資料項的屬性包括位元向量,其中位元向量中之各位元代表資料項之屬性,如交易式載入、交易式寫入、非交易式載入、非交易式寫入、不是交易式載入、不是交易式寫入、不是非交易式載入、不是非交易式寫入、偵測到存取衝突、偵測到無存取衝突、讀取請求、無讀取請求、寫入請求、無寫入請求、所有權請求、無所有權請求或與資料項或保持資料項的記憶體位置關聯之任何其他屬性或狀態。
舉另一例而言,資料項之屬性包括編碼值。例如,利用兩屬性位元,亦即00、01、11及10之四個二元值,來編碼如四個狀態之狀態:(1)交易式寫入、(2)交易式讀取、(3)不是交易式寫入以及(4)不是交易式讀取。
作為另一範例,包括屬性作為與快取記憶體(如資料快取150)關聯之一致性狀態陣列的部份。範例快取一致性狀態的非窮舉性列表包括:(1)修改的(M 420)狀態,亦即寫入位址且無與之關聯的屬性、(2)修改的讀取(MR 430)狀態,亦即寫入位址且具有與之關聯的讀取屬性(如當對位址先前讀取且接著交易寫入位址)、(3)修改的寫入(MW 425)狀態,亦即寫入位址且有與之關聯的寫入屬性、(4)修改的讀取寫入(MRW 435)狀態,亦即寫入位址且具有與之關聯的讀取及寫入屬性兩者、(5)獨佔(E 440)狀態,亦即讀取位址且無與之關聯的屬性、(6)獨佔讀取(ER 445)狀態,亦即讀取位址且有與之關聯的讀取屬性、(7)共享(S 410)狀態,亦即讀取位址且無與之關聯的屬性以及(8)共享讀取(SR 415)狀態,亦即讀取位址且有與之關聯的讀取屬性。
在此,可添加如受監視的一致性狀態之額外的快取一致性狀態至傳統修改獨佔共享及無效(MESI)快取一致性狀態。因此,可與硬體監視器/屬性結合地利用現有已知之一致性及通訊/窺探協定來偵測衝突。
基於設計,快取一致性請求及快取線的受監視一致性狀態的不同結合導致潛在衝突,如保持資料項之快取線處於共享讀取狀態中以及指示對該資料項之寫入請求的窺探。相反地,處於修改的寫入狀態中的保持資料項之快取線以及指示對該資料項之讀取請求之窺探可視為潛在地衝突。在一實施例中,欲偵測存取請求及屬性狀態之此種結合,窺探邏輯耦合至衝突偵測/報告邏輯,如衝突偵測/報告用之監視器及/或邏輯。
在一實施例中,利用暫時或私下儲存來實行與保持在快取150中之資料項關聯的屬性。在此,屬性可保持在快取150中的任何地方,如快取150線本身中。例如,上述之HTM的一範例包括就地更新HTM。在此,交易式修改的資料保持在目前的記憶體位置中,同時記錄/備份先前資料,例如在較高階記憶體中。因此,在一實施例中,當針對資料項存取快取150時,於快取150中將屬性與資料項暫時儲存在一起。在此,資料項保持在私下或暫時一致性狀態中,其允許快取控制邏輯以確保維持交易式語意。換言之,保持在暫時狀態中之資料項不提供至其他執行緒。
然而,若從快取150逐出資料項,則潛在喪失私下保持的屬性。實質上,屬性為系統所創造以監視資料項,且不寫回至較高階記憶體。在其中屬性會衰退的情況中,亦即在逐出或其他事件發生後會喪失,可能以與如上述般偵測潛在存取衝突類似方式觸發潛在衝突。在與此一同申請之名稱為「延伸MESI協定以支援本地緩衝之資料」之具有專利代理人卷號P29132的相關申請案中討論暫時儲存及私下儲存的一種版本,如緩衝儲存及緩衝狀態。
在一實施例中,在硬體中暫存處置器以支援衝突(如存取衝突、監視器衝突喪失、資料衝突喪失等等)的有效率處置。舉例而言,針對軟體(如交易式運作時間或應用碼)提供軟體可寫入暫存器以暫存交易式處置器之位址。當偵測到關注事件時,如上述衝突或資訊喪失,則在一實施例中,將控制流程引向至暫存在軟體可寫入暫存器中之交易式處置器而無特權軟體之介入,如操作系統(OS)。
在一實施例中,關注的事件,亦即造成交易式處置器之引動的處置器事件,能夠由非特權軟體指定,如交易式運作時間或應用碼。不同實施例中之關注的事件可為同步、非同步或上述之結合。因此,提供針對同步及非同步事件將控制轉移至軟體處置器而無OS介入的能力,其潛在排除等待特權層級軟體分派程序以開始處置器之執行所涉及的延遲。因此,可在導致意外執行前有效率且迅速地處置需低潛伏反應之處置器事件。
如上述初步參照第1圖所述,處理器100之架構單純係為了說明。類似地,屬性與資料項/元件之關聯的特定範例亦為例示性,因可利用在不同粒度資料項關聯硬體監視器/屬性的任何方法。
參照第2圖,描繪包括提供在硬體中暫存處置器之支援的處理器之系統的一實施例。處理器205可包括或省略參照第1圖所述之任何功能單元或模組,以及包括處理器之任何其他已知的單元或邏輯。此外,亦描繪一組儲存元件。然而,可在任何數量的儲存元件內結合於下所述之有關分別的儲存元件的操作及方法。
如所示,處理器205經由控制器集線器230耦合至系統記憶體250。系統記憶體250包括任何記憶體裝置,如隨機存取記憶體(RAM)。在此,系統記憶體250保持應用碼260,其可包括將在處理器205上執行之一或更多交易,以及處置器255,其如下述般,可暫存在處理器205之硬體中以處置在應用碼260執行期間發生的交易相關之處置器事件。
在一實施例中,控制器集線器230包括晶片組,其經常由兩個集線器所構成,亦即與系統記憶體250通訊並與輸入/輸出(I/O)裝置(如圖形處理器)潛在接介之記憶體控制器集線器,以及與其他I/O裝置通訊之I/O控制器集線器,如網路介面控制器(NIC)、音頻裝置或其他已知I/O裝置。
處理器205包括儲存元件210。儲存元件意指保持資訊或元件(如二元值、資料、碼、指令、位址或其他以之電腦相關資訊)的任何邏輯、構件或裝置。作為一常見範例,儲存元件包括暫存器。處理器中常見的典型暫存器包括一般用途暫存器、資料暫存器、位址暫存器、條件式暫存器、浮點暫存器、常數暫存器、向量暫存器、特殊用途暫存器、程式計數器(亦即指令指標)暫存器、狀態暫存器、指令暫存器、特殊機器/模型暫存器(MSR)、控制暫存器及一般使用者可存取暫存器。因此,在不同實施例中儲存元件210至225的每一個可個別地為上述暫存器之任一者。
在一實施例中,將處置器,如處置器255,暫存在儲存元件210中。將處置器255暫存在處理器205的硬體中包括暫存任何處置器255的識別或其位置至處理器205。舉例而言,將處置器255暫存在儲存元件210中包括在儲存元件210中儲存對處置器255之參照。換言之,一旦被暫存,儲存元件210保持對處置器255之參照。
可利用將參照暫存至碼的任何方法來更新儲存元件210以保持對處置器255之參照。在一實施例中,非特權軟體/碼將處置器255暫存在儲存元件210中。非特權軟體可包括非特權的任何碼,如不允許在特定高特權層級,亦即特權等級零,執行之軟體。然而,在一實施例中,非特權軟體包括使用者級碼。換言之,在交易執行之前,交易式運作時間碼、應用碼或虛擬機器碼能夠將處置器255暫存於處理器205的硬體中。因此,在一實施例中,可藉由使用者級或非特權層級碼修改儲存元件210以更新其以保持對處置器255之參照。
例如,在執行交易前,應用碼將處置器255暫存於儲存元件210中,使得若在交易執行期間發生處置器事件,引動使用者暫存之處置器255來處置該事件。因此,在此實施例中,使用者能夠界定將在交易式處置器事件情況中利用的處置器以及將其暫存在硬體中以提供最佳化至處置器之控制流程的轉移。然而,在其他實施例中,可藉由特權層級軟體(如OS)來暫存處置器。
在一實施例中,對處置器255之參照包括對保持在系統記憶體250中之處置器255的起始位址256之參照。由於有在處理器中利用的各種定址方法,對記憶體位址之參照潛在包括對位址之任何已知的電腦參照。舉一例而言,利用虛擬位址及偏置作為對處置器255的起始位址256之參照。在此,保持在處理器205之儲存器中的頁表及轉譯表轉譯虛擬位址成參照基礎之實體位址並加上偏置以獲得實體位址,亦即參照處置器255之實體位址256。注意到偏置或碼段的值之省略會限制處置器至目前碼段之使用,其潛在亦限制被執行之交易內的合法指令。參照之另一範例包括保持在儲存元件210中之直接實體位址,以直接參照處置器255。
在一實施例中,儲存元件220指定/指示複數個處置器事件。如上述,處置器事件可包括非同步處置器事件、同步處置器事件或上述之結合。同步處置器事件包括與指令連接/關聯的事件,如非合法指令/操作或對無效操作之存取的執行。相反地,非同步事件常稱為不直接與程式或指令的控制流程相關的事件。處置器事件的範例包括屬性資訊之缺少、屬性資訊之喪失、在交易範圍內非合法的指令執行、非合法之控制轉移、對非核對過之暫存器的存取、緩衝資料的喪失、對在交易範圍內禁止之記憶體類型的存取、例外、系統呼叫及受監視資料的喪失。在此,同步指令之常見的範例為非合法指令的執行,如非合法轉移控制到受保護領域之指令,而非同步事件的典型範例包括屬性資訊的喪失。然而,處置器事件可包括將由軟體處置器處置之任何已知的事件,同步或非同步。
在一實施例中,儲存元件220保持位元向量,如位元向量221。位元向量221中之每一位元對應至一處置器事件,如事件270至274。例如,事件270至274代表上述事件的任何結合,還有未在此說明的任何其他已知的處置器事件。當一位元為設定時,則致能對應的處置器事件,當位元非設定時,禁能對應的處置器事件。
如所示,保持在儲存元件220中之向量221的第一位元為非設定,亦即設成邏輯零,因此禁能處置器事件274。注意到邏輯值僅為例示性且可相反,亦即邏輯零為致能而邏輯一為禁能。實質上,向量221操作為遮罩。在此,事件274,如對非核對過暫存器之存取,即使偵測到也不會導致處置器255的引動因為其被禁能。在此情況中,此種存取可被允許,因為交易之不可撤回或頑強之本質,亦即交易被給與優先權,所以它可能不會放棄。然而,若偵測到其他致能事件270至273的任何者,則基於保持在儲存元件210中之參照執行處置器255。雖利用位元向量作為範例,亦可利用儲存指定事件之方法,如透過編碼值或指令的使用。
在一實施例中,藉由非特權軟體可修改儲存元件220之一部分或所有。在此,軟體可暫存處置器255於儲存元件210中,還可指定/暫存導致處置器255之執行的處置器事件。然而,在一範例中,可保留儲存元件220之一部分。結果為硬體能夠界定軟體不能禁能之某些保留的處置器事件,同時其他事件能夠由軟體致能。
經常地,處置器接收關於偵測到的處置器事件之情形的一些通訊。因此,在一實施例中,儲存元件225包括狀態儲存元件,以保持狀態值以指示將由處置器255處置之處置器事件,亦即偵測到的處置器事件。延續上述範例,狀態儲存元件225亦可保持位元向量,如位元向量226。在此,除了致能或禁能處置器事件外,設定至第一邏輯值之位元指示偵測到處置器事件,同時設定至第二邏輯值之位元指示未偵測到處置器事件。
雖僅描繪一位元設定成邏輯一,多個位元可設定成指示發生且將處置多個事件。在一實施例中,可由使用者級或非特權軟體讀取儲存元件225。因此,應用碼260或處置器255能夠讀取儲存元件225以判斷在執行期間發生的處置器事件,無論作為側寫(profiling)或實際事件處置用。透過儲存元件220至儲存元件210的互連或保持在處理器205中之對儲存元件210的參照,回應於偵測到處置器事件,基於參照,亦即保持在儲存元件210中之位址256的表示,將執行從在目前點之應用碼執行(亦即在位址257的指令)引向至處置器255的執行(亦即位址256)。
可以執行引向或程式控制流程引導的任何已知方法將執行從應用碼260引向至處置器255或從應用碼260轉移控制流程至處置器255。如上述,先前系統經常仰賴控制軟體(如OS)來轉移控制到不同程式,如處置器。在此,可偵測並收集事件,同時OS輪詢資訊以判斷是否發生事件。一旦OS知道事件發生,其為處置器255的執行排定時間。然而,如在先前技術段落中所述,若沒有以較有效率,亦即較少滑遲(skid)的方式來處置交易式事件(其可為同步或非同步),則可能發生意外的執行結果,如基於無效目標位址之分支。
滑遲經常定義為處置器情況發生(亦即處置器事件之偵測)及處置器事件實際引動間的潛伏。例如,若因緩衝/私下保持的讀取資料喪失而引動處置器255,且滑遲值為三,則從緩衝資料喪失到引動處置器需花上三個指令。雖用指令計數來參照滑遲,亦可利用任何其他處理度量,如執行週期。因此,潛在以較少滑遲執行至處置器255的控制流程轉移。
控制流程轉移的範例包括類錯誤方式,亦即在辨別錯誤/事件的指令引退前,其意味著零滑遲等級、類捕捉方式,亦即在下一個可中斷視窗,其意味著一滑遲等級,或不同事件的上述結合。有時滑遲係基於類型事件。例如,不引退潛在會導致意外執行結果的一些操作以確保在系統中沒有觀察到意外結果,亦即零滑遲等級。一範例包括在交易範圍內之非合法操作,其將改變先前未核對過的狀態。在此,若發生狀態改變,則會喪失先前的狀態,無法還原先前狀態。因此,在操作引退之前,將執行引向至處置器,其在此例子中,可核對先前狀態並接著允許操作執行。
在一實施例中,利用處理器205的硬體執行最佳化的控制流程轉移以轉移控制至處置器255而無特權級軟體的介入。特權級軟體之範例包括OS軟體、核心碼及虛擬機器監視器(VMM)碼。在此,處理器205可基於暫存在儲存元件210中之參照將應用碼260之執行引向至處置器255。舉例說明,假設參照係保持在暫存器210中,如由應用碼260儲存在暫存器210中的與實體位址256關聯之虛擬位址及偏置。此外,在暫存器220中已例如由使用者級碼260指定處置器事件,並且已偵測到那些處置器事件之一事件,其藉由對暫存器225更新以保持狀態值來加以指示。
因此,執行邏輯在暫存器215中儲存對目前程式計數器之參照,亦即對目前指令位址257的指標。與保持在暫存器210中之參照類似地,指令指標位址可包括對在引向至執行前一個的目前點之虛擬位址及偏置或其他參照,如基於指令指標實行之目前或下一個指令的位址。實質上,暫存器215以與暫存器210類似方式操作為返回暫存器。換言之,利用暫存器210中之參照來最佳化對處置器255之控制流程轉移,且保持在返回暫存器215中之參照以最佳化從處置器255到應用碼260之控制流程的返回。
在此範例中,在暫存器215中記錄程式260的目前點之後,接著利用執行應用碼260的執行資源以基於保持在暫存器210中的參照引向至應用碼260之執行。在此,對位址256的參照實質上變成新的指令指標,並且開始在處置器255之開端(亦即第一指令)的執行。執行資源包括參照第1圖之上述的任何執行邏輯,或任何其他已知的執行相關邏輯。例如,交易的操作可在應用碼260中執行,亦即排程在載入/儲存執行單元上執行之載入或儲存操作。接著,回應於處置器事件,跳越執行單元執行跳越型操作以令執行從指令位址257跳到位址256而無特權級軟體的介入。在此,跳越型操作可包括正常跳越操作或遠跳越操作。
將在暫存器210中所參照的位址(如將轉譯成位址256的虛擬位址及偏置)作為跳越型操作目標位址以將執行從應用碼260引向至處置器255。在此架構內,在處置器255完成執行(亦即結束處置器事件之處置)之後,執行類似的跳越型指令/操作以返回至應用碼260。然而,取代以保持在暫存器210中之參照作為目標位址,利用保持在返回暫存器215中之先前指令指標參照作為到應用碼260內之先前點的返回跳越之目標位址。
對於處置器255之上述參照包括處置同步或非同步事件的任何已知碼。事實上,處置器255可根據偵測到的處置器事件執行不同操作。例如,處置器255可在遇到某些處置器事件時嘗試執行確認或放棄函數,並在遇到其他處置器事件時執行其他操作,如核對暫存器或位置。結果為使用者可指定處置器事件並在硬體中界定將利用之處置器,使得當遇到處置器事件時,硬體能夠將控制轉移至由使用者級碼指定的處置器而無特權軟體介入的延遲。此外,可提供硬體以傳送關於處置器事件之資訊,如事件、與事件關聯之位址及其他事件相關資訊。第3及4圖討論將控制引向至處置器之實施例。
茲參照第3圖,描述將執行引向至交易式處置器而無特權級軟體介入之方法的流程圖之一實施例。注意到以實質序列方式描述第3及4圖中之流程。然而,在其他實施例中所述之流程可以不同順序、互相平行或完全不執行。例如,在第4圖中,在流程410中指定處置器事件之前在流程405中將處置器位址儲存在第一暫存器中。然而,可在將處置器位址儲存在第一暫存器中之前指定事件而不背離第4圖之目的。
在流程305中,在處理器的硬體中暫存交易式處置器。可利用在硬體中暫存處置器的任何方法,例如在處理器中保持的表或疊列中添加對處置器之參照。在一實施例中,將對與交易式處置器關聯的位址之參照放置在暫存器中。對位址之此參照包括任何已知的位址參照。舉例而言,參照包括可由處理器中之硬體結構(亦即轉譯緩衝器及/或頁表)轉譯的虛擬位址及偏置。如上述,暫存器可為使用者可存取,使應用碼或交易式運作時間碼在碼初始化時或碼之主文內,例如在交易開始時,執行暫存。
在流程310中,判斷是否偵測到處置器事件。處置器事件的範例包括屬性資訊之缺少、屬性資訊之喪失、在交易範圍內非合法的指令執行、非合法之控制轉移、對非核對過之暫存器的存取、緩衝資料的喪失、對在交易範圍內禁止之記憶體類型的存取、例外、系統呼叫及受監視資料的喪失。可了解到在此範例中,處置器事件可包括同步及非同步事件。然而,如下詳述,在一電施例中,取代利用帶有潛伏軟體輪詢來處置事件,可以迅速非同步硬體方式處置同步及非同步事件兩者以提供最佳化的滑遲處置。參照上述第2圖,描繪一實施例,其中使用者級碼或特權碼及使用者級碼的結合指定處置器事件。然而,亦可由硬體、軔體或其他軟體來指定處置器事件。
若未偵測到事件,則在流程315中執行如正常般執行。然而,若在流程310中偵測到事件,則在流程320中,將執行引向至交易式處置器而無特權級軟體介入。注意到可利用將執行導向處置器而無執行OS、核心或虛擬機器監視器碼的任何方法。參照第4圖於下說明的一範例包括基於保持在處理器之暫存器中之值的執行引向。
參照第4圖,其為利用硬體將控制流程轉移至軟體處置器之方法的流程圖之一實施例。在流程405中,將交易式處置器之處置器位址儲存/寫入第一暫存器。在此,使用者級軟體寫入對位址之參照,如虛擬位址及偏置。在流程410中,使用者級軟體在第二暫存器中指定複數處置器事件。如上述範例般,使用者級軟體設定/重設對應至硬體界定的處置器事件之位元向量的位元。注意到處置器事件可為同步事件、非同步事件或上述之結合。
在流程415中,偵測複數處置器事件之一處置器事件。事件偵測可包括橫跨多函數單元之多種方法。例如,欲偵測屬性資料或受監視資料的喪失,快取控制邏輯可偵測受監視線的逐出並相應地加以通報。然而,針對非合法指令,偵測與非合法操作關聯之運算元的解碼器潛在偵測並通報事件。舉另一例來說,在處理器之管線的一階段中偵測更新暫存器之狀態的操作並且與那個階段關聯之邏輯偵測處置器事件。可利用偵測硬體事件或處置器相關事件的其他邏輯及方法。
一旦偵測到一事件,則在流程420中,將第三暫存器更新成一狀態值以指示偵測到複數處置器事件之該處置器事件。在此,一旦硬體偵測到事件,則通報邏輯向狀態暫存器通報該事件。舉例說明,在保持於第三暫存器中之位元向量中設定對應至此處置器事件的位元以通報該處置器事件的發生。第三暫存器可由使用者級軟體讀取,所以處置器能夠判斷偵測到哪個處置器事件。注意到第三暫存器或連同第三暫存器的其他暫存器可提供關於處置器事件之額外資訊,如與事件關聯的操作、與事件關聯的暫存器及與事件關聯的位址/資料項。
在將執行引向至處置器前,在流程425中,將目前程式計數器值或指令指標值/位址寫入至第四暫存器,以致能在處置器執行後到目前執行點之返回。基於處理器設計,指令指標可參照目前指令或下一指令。因此,在這兩種實行例中,對「目前指令指標」的參照包括目前指令指標值,其可為目前或下一指令。舉例說明,將參照適當指令之位址的虛擬位址及偏置儲存在暫存器中。
在流程430中,執行跳至保持在第一暫存器中之處置器位址。延續上述範例,執行跳越型操作以跳至保持在第一暫存器中之虛擬位址加上偏置。實質上,在流程425中,記錄指令指標並且在流程430中以指向交易式處置器的起始指令之「指令指標」取代目前指令指標。
在流程435中,執行交易式處置器以相應地處置事件或多個事件。如前述,處置器也許能夠存取暫存器,如第三暫存器,以判斷偵測的事件、事件類型、與事件關聯的位址及操作或其他處置器相關資訊。在處置事件後,在流程440中,執行跳回到保持在第四暫存器中之指令指標位址。作為上述之相反,以先前記錄的指令指標取代處置器內的指令指標。結果為將執行引向回到在引動處置之前的點。在一實施例中,軟體處置器,回應於放棄或確認,可令執行被引向回不同點。
在此所用之模組係指任何硬體、軟體、軔體或上述的結合。描述為分別之模組邊界經常會變化且潛在地重疊。例如,第一及第二模組可分享硬體、軟體、軔體或上述之結合,而潛在地保有一些獨立硬體、軟體或軔體。在一實施例中,邏輯一詞的使用包括硬體,如電晶體、暫存器或其他硬體,如可編程式邏輯裝置。然而,在另一實施例中,邏輯亦包括與硬體整合之軟體或碼,如軔體或微碼。
在此所用之值包括數字、狀態、邏輯狀態或二元邏輯狀態的任何已知表示。邏輯位準、邏輯值或邏輯性值的使用經常亦稱為1及0,其簡單地表示二元邏輯狀態。例如,1係指高邏輯位準且0係指低邏輯位準。在一實施例中,儲存單元,如電晶體或快閃單元,能夠保持單一邏輯值或多個邏輯值。然而,已使用電腦系統中之值的其他表示。例如,十進位數字十亦可表示成1010二元值及十六進位字母A。因此,值包括能夠保持在電腦系統中之資訊的任何表示。
此外,狀態可由值或值之部分代表。舉例而言,第一值,如邏輯一,可表示預設或初始狀態,而第二值,如邏輯零,可表示非預設狀態。此外,重設及設定之詞,在一實施例中,係分別指預設及更新值或狀態。例如,預設值潛在包括高邏輯值,亦即重設,而更新值潛在包括低邏輯值,亦即設定。注意到可利用值的任何結合來表示任何數量的狀態。
上述提出之方法、硬體、軟體、軔體或碼的實施例可經由儲存在機器可存取或機器可讀取媒體之可由處理元件執行的指令或碼加以實行。機器可存取/存取媒體包括以可由如電腦或電子系統之機器讀取的形式提供(亦即儲存及/或傳送)資訊的任何機制。例如,機器可存取媒體包括隨機存取記憶體(RAM),如靜態RAM(SRAM)或動態RAM(DRAM)、ROM、磁性或光學性儲存媒體、快閃記憶體裝置、電性儲存裝置、光學儲存裝置、音學儲存裝置或其他形式的傳播信號(如載波、紅外線信號、數位信號)儲存裝置等等。例如,機器可透過接收的傳播信號(如載波)從能夠保持將在傳播信號上傳送之資訊的媒體存取儲存裝置。
此說明書中對於「一實施例」或「實施例」之參照意指連同實施例說明的特定特徵、結構或特性係包括在本發明之至少一電施例中。因此,在說明書中各處中之「在一實施例中」或「在實施例中」之詞組的出現不絕對皆參照至相同實施例。此外,在一或更多實施例中可以任何適合的方式結合特定特徵、結構或特性。
在上述說明中,已參照特定範例實施例提出詳細說明。然而,顯然可對這些實施例做出各種修改及變更而不背離在所附申請專利範圍中提出的本發明之較廣精神及範疇。因此,說明書及圖示應視為例示性而非限制性。另外,實施例的上述使用及其他範例性語言不絕對意指相同實施例或相同範例,但可指不同及分別的實施例,還有潛在相同實施例。
100...處理器
101、102...核心
101a、101b...架構狀態暫存器
102a、102b...架構狀態暫存器
105...匯流排介面模組
110...較高階快取
115...資料轉譯緩衝區
120...指令轉譯緩衝區
125...解碼器
130...重新命名分配器邏輯
135...重新排序/引退單元
140...執行單元
150...資料快取
175...系統記憶體
205...處理器
210~225...儲存元件
221、226...位元向量
230...控制器集線器
250...系統記憶體
255...處置器
256、257...位址
260...應用碼
270~274...事件
第1圖描繪包括能夠同時執行多執行緒的多個處理元件的處理器之一實施例。
第2圖描繪回應於處置器事件支援至處置器的控制轉移之處理器中的結構之一實施例。
第3圖描繪將執行引向至交易式處置器而無特權級軟體介入之方法的流程圖之一實施例。
第4圖描繪利用硬體將控制流程轉移至軟體處置器之方法的流程圖之另一實施例。
101,102...核心
101a,101b,102a,102b...架構狀態暫存器
120,121...BTB及I-TLB
125,126...解碼器
130,131...重新命名/分配器
140,141...排程器/執行單元
135,136...重新排序/引退單元
150,151...較低階D快取及D-TLB
110...較高階快取
105...匯流排介面
175...系統記憶體
Claims (26)
- 一種用於交易式記憶體事件處置之硬體中登錄使用者處置器的設備,包含:第一儲存元件,其可被非特權軟體修改,以保持對交易式處置器與複數個處置器事件的參照,該第一儲存元件保持位元向量,而具有對應至該複數個處置器事件之一者的該位元向量之每一個位元,且其中對應到該處置器事件的位元可被該非特權軟體設定以回應於發生該處置器事件之一者而致能將執行引向至該交易式處置器的執行資源;第二儲存元件,保持狀態值以指示該處置器事件,其在當該複數個處置器事件之一者發生時可被交易處置器處置;以及耦合至該第一儲存元件之執行資源,以執行交易並回應於發生該複數個處置器事件之一者而基於保持在該第一儲存元件中之對該交易式處置器的該參照以將執行從該交易引向至該交易式處置器而無來自特權級軟體之介入。
- 如申請專利範圍第1項所述之設備,其中該第一儲存元件包括暫存器,以及其中對該交易式處置器的該參照包括虛擬位址。
- 如申請專利範圍第2項所述之設備,其中將執行從該交易引向至該交易式處置器之執行資源包含以與該虛擬位址及偏置關聯的目標位址施行跳越型操作的執行資源。
- 如申請專利範圍第1項所述之設備,其中該非特權軟體包括交易式運作時間碼。
- 如申請專利範圍第1項所述之設備,其中該處置器事件包括非同步處置器事件。
- 如申請專利範圍第1項所述之設備,其中該處置器事件包括同步處置器事件。
- 如申請專利範圍第1項所述之設備,其中該處置器事件包括選自由屬性資訊之缺少、屬性資訊之喪失、在交易範圍內非合法的指令執行、對非核對過之暫存器的存取、受監視資料的喪失及緩衝資料的喪失組成之群組的事件。
- 如申請專利範圍第1項所述之設備,進一步包含第三儲存元件,其可藉由該非特權軟體讀取,其中該第三儲存元件保持狀態值以指定回應於該處置器事件基於對該交易式處置器的該參照從該交易引向之該些執行資源的該處置器事件。
- 如申請專利範圍第8項所述之設備,進一步包含第四儲存元件,在該些執行資源將執行從該交易引向至該交易式處置器之前,以對目前指令指標之參照加以更新。
- 如申請專利範圍第9項所述之設備,其中回應於該交易式處置器處置該處置器事件,該些執行資源以該目前指令指標作為目標執行跳越型指令以將執行返回至該交易。
- 一種用於交易式記憶體事件處置之硬體中登錄使用者處置器的設備,包含:處置器暫存器,其能夠被使用者級軟體更新,該處置 器暫存器適於保持對交易處置器的參照;以及事件暫存器,其能夠被該使用者級軟體更新以指定複數個交易式處置器事件,其中該複數個處置器事件係每一個個別地選自由屬性資訊之缺少、屬性資訊之喪失、在交易範圍內非合法的指令執行、對非核對過之暫存器的存取及受監視資料的喪失組成之群組;狀態暫存器,保持狀態值以指示該交易處置器事件,其在當該複數個交易處置器事件之一者發生時可被交易處置器處置;以及執行邏輯,回應於偵測到該複數交易式處置器事件的交易式處置器事件將執行從交易引向至該交易式處置器而無特權級軟體之介入。
- 如申請專利範圍第11項所述之設備,其中該些執行資源在無操作系統(OS)介入下施行將執行從該交易引向至該交易式處置器。
- 如申請專利範圍第12項所述之設備,其中該非特權軟體係選自由交易式運作時間軟體、包括該交易之應用碼及虛擬機器碼組成之群組。
- 如申請專利範圍第11項所述之設備,其中該複數事件的第一交易式處置器事件包括非同步處置器事件,以及其中該複數事件的第二交易式處置器事件包括同步處置器事件。
- 一種用於交易式記憶體事件處置之硬體中登錄使用者處置器的系統,包含: 處理器,包括保持對交易式處置器之參照的使用者可定址暫存器、第二暫存器及耦合至該第一及該第二暫存器之執行邏輯,其中回應於在交易執行期間之處置器事件,該執行邏輯以對該交易內之目前指令位置之參照更新該第二暫存器、基於保持在該使用者可定址暫存器中之對該交易式處置器的參照將控制流程引導至該交易式處置器以處置該處置器事件以及在執行該交易式處置器以處置該處置器事件之後基於保持在該第二暫存器中之對該目前指令位置的該參照將控制流程導回該目前指令位置,其中該第二暫存器保持位元向量,而具有對應至該複數個處置器事件之一者的該位元向量之每一個位元,且其中對應到該處置器事件的位元可被該非特權軟體設定以回應於發生該處置器事件之一者而致能將執行引向至該交易式處置器的執行資源;以及耦合至該處理器之輸入/輸出(I/O)裝置。
- 如申請專利範圍第15項所述之系統,其中對該交易式處置器之該參照包括虛擬位址及偏置,當轉譯成實體位址時,參照該交易式處置器之起始實體位址。
- 如申請專利範圍第16項所述之系統,其中使用者碼包括該交易,當執行時,以在該交易執行前之該虛擬位址及該偏置載入該使用者可定址暫存器。
- 如申請專利範圍第15項所述之系統,其中對該交易內的該目前指令位置之該參照包括對與該目前指令位置關聯的指令指標位址之參照,以及其中基於保持在該第二 暫存器中之對指令指標位置的該參照將控制流程導回該目前指令位置之該執行邏輯包含該執行邏輯,以將該指令指標位址作為返回目標位址執行返回跳越操作。
- 如申請專利範圍第18項所述之系統,其中基於保持在該使用者可定址暫存器中之對該交易式處置器的該參照將控制流程引導至該交易式處置器以處置該處置器事件之該執行邏輯包含該執行邏輯,以將與保持在該使用者可定址暫存器中之對該交易式處置器的該參照關聯之目標位址作為目標位址執行跳越操作。
- 一種用於交易式記憶體事件處置之硬體中登錄使用者處置器的方法,包含:以非特權級軟體將交易式處置器暫存在處理器的硬體中;在具有該非特權級軟體的該處理器之硬體中將處置器事件與該交易式處置器關聯,其中該處置器事件為複數個處置器事件之一者,其可被該非特權級軟體設定以回應於發生該處置器事件之一者而致能將執行引向至該交易式處置器的執行資源;以該處理器在交易執行期間偵測處置器事件;將控制流程從該交易的執行導至該硬體中之該交易式處置器的執行而無特權級軟體的介入;以及在以該交易式處置器處置該處置器事件後將該控制流程返回至該交易的執行而無該特權級軟體的介入。
- 如申請專利範圍第20項所述之方法,其中以非特 權級軟體將交易式處置器暫存在處理器的硬體中包含以與該交易式處置器關聯的位址之表示載入第一暫存器。
- 如申請專利範圍第21項所述之方法,進一步包含在將控制流程從該交易的執行導至該交易式處置器之前將指令指標位址儲存在第二暫存器中。
- 如申請專利範圍第22項所述之方法,其中將控制流程從該交易的執行導至該硬體中之該交易式處置器的執行而無特權級軟體的介入包含令執行跳越至與該交易式處置器關聯之該位址而無該特權級軟體的介入以執行該交易式處置器。
- 如申請專利範圍第23項所述之方法,其中在以該交易式處置器處置該處置器事件後將該控制流程返回至該交易的執行而無該特權級軟體的介入包含在以該交易式處置器處置該處置器事件之後令執行跳越至儲存在該第二暫存器中之該指令指標位址而無該特權級軟體的介入。
- 如申請專利範圍第22項所述之方法,進一步包含在偵測該處置器事件之前以該非特權級軟體在第三暫存器中指定該處置器事件。
- 如申請專利範圍第25項所述之方法,進一步包含在回應於偵測該處置器事件而將該控制流程從該交易的執行導向該交易式硬體的執行前更新第四暫存器以保持該處置器事件的表示。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/346,518 US9785462B2 (en) | 2008-12-30 | 2008-12-30 | Registering a user-handler in hardware for transactional memory event handling |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201037524A TW201037524A (en) | 2010-10-16 |
TWI476595B true TWI476595B (zh) | 2015-03-11 |
Family
ID=42286511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098143374A TWI476595B (zh) | 2008-12-30 | 2009-12-17 | 用於交易式記憶體事件處置之硬體中使用者處置器的登錄 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9785462B2 (zh) |
JP (2) | JP5650123B2 (zh) |
KR (1) | KR101291016B1 (zh) |
CN (1) | CN101950259B (zh) |
BR (1) | BRPI0920789A2 (zh) |
TW (1) | TWI476595B (zh) |
WO (1) | WO2010077872A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9785462B2 (en) | 2008-12-30 | 2017-10-10 | Intel Corporation | Registering a user-handler in hardware for transactional memory event handling |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8799582B2 (en) | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
US9110808B2 (en) * | 2009-12-30 | 2015-08-18 | International Business Machines Corporation | Formation of an exclusive ownership coherence state in a lower level cache upon replacement from an upper level cache of a cache line in a private shared owner state |
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
US8606907B1 (en) | 2011-07-20 | 2013-12-10 | Google Inc. | Multi-tiered system for receiving and reporting web site traffic data |
US8560685B1 (en) | 2011-07-20 | 2013-10-15 | Google Inc. | Probabilistic data storage owner election and replication protocol |
US8606825B1 (en) | 2011-07-20 | 2013-12-10 | Google Inc. | Query response streams based on dynamic query library |
US10387324B2 (en) | 2011-12-08 | 2019-08-20 | Intel Corporation | 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 |
CN103999036B (zh) * | 2011-12-16 | 2017-07-14 | 英特尔公司 | 在支持事务的计算机体系结构中使用异常进行代码专业化的方法和*** |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US8682877B2 (en) * | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US8880959B2 (en) * | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US9619345B2 (en) | 2012-09-13 | 2017-04-11 | International Business Machines Corporation | Apparatus for determining failure context in hardware transactional memories |
US9122873B2 (en) | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
US9424198B2 (en) * | 2012-11-30 | 2016-08-23 | Intel Corporation | Method, system and apparatus including logic to manage multiple memories as a unified exclusive memory |
US9411739B2 (en) * | 2012-11-30 | 2016-08-09 | Intel Corporation | System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators |
US10061609B2 (en) | 2013-06-26 | 2018-08-28 | Intel Corporation | Method and system using exceptions for code specialization in a computer architecture that supports transactions |
JP6244916B2 (ja) | 2014-01-06 | 2017-12-13 | 富士通株式会社 | 演算処理装置,演算処理装置の制御方法及び情報処理装置 |
US9916161B2 (en) | 2015-06-25 | 2018-03-13 | Intel Corporation | Instruction and logic for tracking fetch performance bottlenecks |
US9733689B2 (en) * | 2015-06-27 | 2017-08-15 | Intel Corporation | Hardware apparatuses and methods to perform transactional power management |
WO2017012667A1 (en) * | 2015-07-22 | 2017-01-26 | Huawei Technologies Co., Ltd. | Hardware transactional memory in non volatile memory with log and no lock |
US10037147B2 (en) * | 2015-12-14 | 2018-07-31 | International Business Machines Corporation | Sharing files in a multisystem environment |
US10324728B2 (en) | 2015-12-17 | 2019-06-18 | International Business Machines Corporation | Lightweight interrupts for condition checking |
US10318295B2 (en) * | 2015-12-22 | 2019-06-11 | Intel Corporation | Transaction end plus commit to persistence instructions, processors, methods, and systems |
US10552212B2 (en) * | 2016-11-28 | 2020-02-04 | Arm Limited | Data processing |
US10684896B2 (en) | 2017-02-20 | 2020-06-16 | Tsinghua University | Method for processing asynchronous event by checking device and checking device |
CN108345471B (zh) * | 2017-05-08 | 2019-10-25 | 清华大学 | 检测装置处理异步事件的方法及检测装置 |
US10783011B2 (en) | 2017-09-21 | 2020-09-22 | Qualcomm Incorporated | Deadlock free resource management in block based computing architectures |
US10990369B2 (en) * | 2018-04-30 | 2021-04-27 | EMC IP Holding Company LLC | Repurposing serverless application copies |
WO2020060450A1 (en) * | 2018-09-17 | 2020-03-26 | Telefonaktiebolaget Lm Ericsson (Publ) | Bit register in shared memory indicating the processor and the software handlers |
CN110333935B (zh) * | 2019-06-05 | 2022-12-02 | 创新先进技术有限公司 | 事务请求处理方法及装置 |
KR20230157503A (ko) * | 2021-03-31 | 2023-11-16 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 동기화 방법 및 장치 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI229796B (en) * | 2002-06-27 | 2005-03-21 | Intel Corp | Method and system to implement a system event log for system manageability |
TW200602981A (en) * | 2004-03-31 | 2006-01-16 | Ignios Ltd | Resource management in a multicore architecture |
US20070198521A1 (en) * | 2003-09-12 | 2007-08-23 | Mckenney Paul E | Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions |
CN101059783A (zh) * | 2006-03-30 | 2007-10-24 | 英特尔公司 | 事务型存储器的虚拟化 |
US20070300238A1 (en) * | 2006-06-21 | 2007-12-27 | Leonidas Kontothanassis | Adapting software programs to operate in software transactional memory environments |
TW200817894A (en) * | 2006-06-30 | 2008-04-16 | Intel Corp | Global overflow method for virtualized transactional memory |
US7395382B1 (en) * | 2004-08-10 | 2008-07-01 | Sun Microsystems, Inc. | Hybrid software/hardware transactional memory |
Family Cites Families (64)
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 | 株式会社日立製作所 | アドレスバス制御装置 |
US6216200B1 (en) | 1994-10-14 | 2001-04-10 | Mips Technologies, Inc. | Address queue |
JP3546694B2 (ja) | 1998-03-31 | 2004-07-28 | 日本電気株式会社 | マルチスレッド計算機システム及びマルチスレッド実行制御方法 |
US6526481B1 (en) | 1998-12-17 | 2003-02-25 | Massachusetts Institute Of Technology | Adaptive cache coherence protocols |
US6272602B1 (en) | 1999-03-08 | 2001-08-07 | Sun Microsystems, Inc. | Multiprocessing system employing pending tags to maintain cache coherence |
US6549996B1 (en) | 1999-07-02 | 2003-04-15 | Oracle Corporation | Scalable multiple address space server |
US6490668B2 (en) | 2000-12-15 | 2002-12-03 | Hewlett-Packard Company | System and method for dynamically moving checksums to different memory locations |
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 |
US6499085B2 (en) | 2000-12-29 | 2002-12-24 | Intel Corporation | Method and system for servicing cache line in response to partial cache line request |
US20030005219A1 (en) | 2001-06-29 | 2003-01-02 | Royer Robert J. | Partitioning cache metadata state |
US7272622B2 (en) | 2001-10-29 | 2007-09-18 | Intel Corporation | Method and apparatus for parallel shift right merge of data |
US7565687B2 (en) | 2002-02-08 | 2009-07-21 | International Business Machines Corporation | Transmission control system, server, terminal station, transmission control method, program and storage medium |
US7032125B2 (en) | 2002-04-25 | 2006-04-18 | Lsi Logic Corporation | Method for loosely coupling metadata and data in a storage array |
US7003631B2 (en) | 2002-05-15 | 2006-02-21 | Broadcom Corporation | System having address-based intranode coherency and data-based internode coherency |
US7062610B2 (en) | 2002-09-30 | 2006-06-13 | Advanced Micro Devices, Inc. | Method and apparatus for reducing overhead in a data processing system with a cache |
US20040111593A1 (en) | 2002-12-05 | 2004-06-10 | International Business Machines Corporation | Interrupt handler prediction method and system |
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 |
US20050050305A1 (en) * | 2003-08-28 | 2005-03-03 | Kissell Kevin D. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
US20050086446A1 (en) | 2003-10-04 | 2005-04-21 | Mckenney Paul E. | Utilizing software locking approach to execute code upon failure of hardware transactional approach |
US20050091459A1 (en) | 2003-10-23 | 2005-04-28 | Nhon Quach | Flexible mechanism for enforcing coherency among caching structures |
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 |
US9189230B2 (en) | 2004-03-31 | 2015-11-17 | Intel Corporation | Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution |
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 |
JP4431022B2 (ja) | 2004-10-18 | 2010-03-10 | 株式会社日立製作所 | コンピュータシステム及びその制御方法 |
US8607235B2 (en) | 2004-12-30 | 2013-12-10 | Intel Corporation | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention |
US7337280B2 (en) | 2005-02-10 | 2008-02-26 | International Business Machines Corporation | Data processing system and method for efficient L3 cache directory management |
US7627784B1 (en) * | 2005-04-06 | 2009-12-01 | Altera Corporation | Modular processor debug core connection for programmable chip systems |
KR100704037B1 (ko) | 2005-04-15 | 2007-04-04 | 삼성전자주식회사 | 이종의 비휘발성 메모리를 가지는 데이터 저장장치와 그의구동 방법 |
US20060236039A1 (en) | 2005-04-19 | 2006-10-19 | International Business Machines Corporation | Method and apparatus for synchronizing shared data between components in a group |
US7490199B2 (en) | 2005-05-09 | 2009-02-10 | Noam Camiel | System and method for safe removal of a removable device from a digital appliance |
US7350034B2 (en) * | 2005-06-20 | 2008-03-25 | International Business Machines Corporation | Architecture support of best-effort atomic transactions for multiprocessor systems |
US7882339B2 (en) | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US7533215B2 (en) | 2005-09-15 | 2009-05-12 | Intel Corporation | Distributed and packed metadata structure for disk cache |
US8001538B2 (en) | 2005-12-07 | 2011-08-16 | Microsoft Corporation | Software accessible cache metadata |
US8225297B2 (en) | 2005-12-07 | 2012-07-17 | Microsoft Corporation | Cache metadata identifiers for isolation and sharing |
US8180977B2 (en) | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US9798590B2 (en) * | 2006-09-07 | 2017-10-24 | Intel Corporation | Post-retire scheme for tracking tentative accesses during transactional execution |
US7949794B2 (en) | 2006-11-02 | 2011-05-24 | Intel Corporation | PCI express enhancements and extensions |
US7783805B2 (en) | 2006-11-29 | 2010-08-24 | Cisco Technology, Inc. | Interlocking input/outputs on a virtual logic unit number |
US7669040B2 (en) * | 2006-12-15 | 2010-02-23 | Sun Microsystems, Inc. | Method and apparatus for executing a long transaction |
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 |
US9009452B2 (en) * | 2007-05-14 | 2015-04-14 | International Business Machines Corporation | Computing system with transactional memory using millicode assists |
US8095741B2 (en) | 2007-05-14 | 2012-01-10 | International Business Machines Corporation | Transactional memory computing system with support for chained transactions |
US20080307169A1 (en) | 2007-06-06 | 2008-12-11 | Duane Arlyn Averill | Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory |
US9292436B2 (en) | 2007-06-25 | 2016-03-22 | Sonics, Inc. | Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary |
US9280397B2 (en) | 2007-06-27 | 2016-03-08 | Intel Corporation | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata |
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 |
US8108619B2 (en) | 2008-02-01 | 2012-01-31 | International Business Machines Corporation | Cache management for partial cache line operations |
US20100122073A1 (en) | 2008-11-10 | 2010-05-13 | Ravi Narayanaswamy | Handling exceptions in software transactional memory systems |
US8555016B2 (en) | 2008-12-17 | 2013-10-08 | Intel Corporation | Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system |
US8806101B2 (en) | 2008-12-30 | 2014-08-12 | Intel Corporation | Metaphysical address space for holding lossy metadata in hardware |
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 |
US8627017B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
US8799582B2 (en) | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
US8370577B2 (en) | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
US8095824B2 (en) | 2009-12-15 | 2012-01-10 | Intel Corporation | Performing mode switching in an unbounded transactional memory (UTM) system |
-
2008
- 2008-12-30 US US12/346,518 patent/US9785462B2/en not_active Expired - Fee Related
-
2009
- 2009-12-15 KR KR1020117007724A patent/KR101291016B1/ko active IP Right Grant
- 2009-12-15 WO PCT/US2009/068081 patent/WO2010077872A2/en active Application Filing
- 2009-12-15 BR BRPI0920789A patent/BRPI0920789A2/pt active Search and Examination
- 2009-12-15 JP JP2011536630A patent/JP5650123B2/ja not_active Expired - Fee Related
- 2009-12-17 TW TW098143374A patent/TWI476595B/zh not_active IP Right Cessation
- 2009-12-25 CN CN200911000212.5A patent/CN101950259B/zh not_active Expired - Fee Related
-
2014
- 2014-01-10 JP JP2014003360A patent/JP5944417B2/ja not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI229796B (en) * | 2002-06-27 | 2005-03-21 | Intel Corp | Method and system to implement a system event log for system manageability |
US20070198521A1 (en) * | 2003-09-12 | 2007-08-23 | Mckenney Paul E | Utilizing hardware transactional approach to execute code after initially utilizing software locking by employing pseudo-transactions |
TW200602981A (en) * | 2004-03-31 | 2006-01-16 | Ignios Ltd | Resource management in a multicore architecture |
US7395382B1 (en) * | 2004-08-10 | 2008-07-01 | Sun Microsystems, Inc. | Hybrid software/hardware transactional memory |
CN101059783A (zh) * | 2006-03-30 | 2007-10-24 | 英特尔公司 | 事务型存储器的虚拟化 |
US20070300238A1 (en) * | 2006-06-21 | 2007-12-27 | Leonidas Kontothanassis | Adapting software programs to operate in software transactional memory environments |
TW200817894A (en) * | 2006-06-30 | 2008-04-16 | Intel Corp | Global overflow method for virtualized transactional memory |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9785462B2 (en) | 2008-12-30 | 2017-10-10 | Intel Corporation | Registering a user-handler in hardware for transactional memory event handling |
Also Published As
Publication number | Publication date |
---|---|
US20100169894A1 (en) | 2010-07-01 |
TW201037524A (en) | 2010-10-16 |
JP5650123B2 (ja) | 2015-01-07 |
JP5944417B2 (ja) | 2016-07-05 |
WO2010077872A2 (en) | 2010-07-08 |
JP2014089752A (ja) | 2014-05-15 |
JP2012509529A (ja) | 2012-04-19 |
CN101950259A (zh) | 2011-01-19 |
KR101291016B1 (ko) | 2013-07-30 |
US9785462B2 (en) | 2017-10-10 |
KR20110050724A (ko) | 2011-05-16 |
WO2010077872A3 (en) | 2010-09-23 |
BRPI0920789A2 (pt) | 2015-12-22 |
CN101950259B (zh) | 2014-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI476595B (zh) | 用於交易式記憶體事件處置之硬體中使用者處置器的登錄 | |
JP6342970B2 (ja) | トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性 | |
US10409611B2 (en) | Apparatus and method for transactional memory and lock elision including abort and end instructions to abort or commit speculative execution | |
JP5860450B2 (ja) | ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張 | |
US8195898B2 (en) | Hybrid transactions for low-overhead speculative parallelization | |
US8769212B2 (en) | Memory model for hardware attributes within a transactional memory system | |
JP5404574B2 (ja) | マルチプロセッサ環境におけるトランザクションベースの共有データオペレーション | |
US8190859B2 (en) | Critical section detection and prediction mechanism for hardware lock elision | |
US20100122073A1 (en) | Handling exceptions in software transactional memory systems | |
US20090172317A1 (en) | Mechanisms for strong atomicity in a transactional memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |