TWI448897B - 監視在硬體中之記憶體存取的方法與設備、處理器及其系統 - Google Patents
監視在硬體中之記憶體存取的方法與設備、處理器及其系統 Download PDFInfo
- Publication number
- TWI448897B TWI448897B TW098143376A TW98143376A TWI448897B TW I448897 B TWI448897 B TW I448897B TW 098143376 A TW098143376 A TW 098143376A TW 98143376 A TW98143376 A TW 98143376A TW I448897 B TWI448897 B TW I448897B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- cache
- memory access
- transaction
- monitor
- Prior art date
Links
Classifications
-
- 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本發明關係於處理器執行的領域,更明確地說,有關於指令群的執行。
[相關申請案]
本案係有關於以下專利申請案:由Gad Sheaffer等人所申請於2008年12月30日的名為“支援本地緩衝資料的延伸快取一致性協定”的美國專利申請第12/346,543號案(代理人案號P29132);由Gad Sheaffer等人所申請於2008年12月30日的名為“在交易記憶體系統內的硬體屬性的記憶體模型”的美國專利申請第12/346,539號(代理人案號P29131);由Gad Sheaffer等人所申請於2008年12月30日的名為“交易記憶體事件處置的硬體中之登錄使用者處置器”的美國專利申請第12/346,518號(代理人案號P29129);由Gad Sheaffer等人所申請於2008年12月30日的名為“在硬體中之保持損失元資料的元實體位址空間”的美國專利申請第12/346,500號(代理人案號P29128)。
在半導體處理及邏輯設計中之進步已經允許在積體電路裝置呈現邏輯數量上的增加。結果,電腦系統組態已經由在一系統中之單一或多積體電路演進至出現在個別積體電路上之多核心及多邏輯處理器。處理器或積體電路典型包含單一處理器晶粒,其中處理器晶粒可以包含任意數目之核心或邏輯處理器。
在積體電路上的一直增加數目的核心及邏輯處理使得更多軟體線緒被同時執行。然而,可以被同時執行之軟體線緒數目上的增加已經造成了在軟體線緒間所共享之資料的同步問題。一種在多核心或多邏輯處理器系統中,存取共享資料的常見解決方案包含使用鎖定,以保證對共享資料的多存取間的相互排除。然而,一直增加執行多軟體線緒的能力也造成了假競爭及執行之串列化。
例如,假設保有共享資料的散列表。以鎖定系統,程式員可以鎖定整個散列表,允許一線緒存取整個散列表。然而,其他線緒的通電與效率可能被負面影響,因為它們不能存取在散列表中之任何登錄項,直到鎖定被釋放為止。或者,在散列表中之各個登錄項可以被鎖定。在任一方式中,在將此簡單例子外插入大型可縮放程式後,明顯地,鎖定競爭、串列化、細粒同步化、及死鎖避免的複雜性對於程式員變成極端麻煩的負擔。
另一近來資料同步化技術包含使用交易記憶體(TM)。經常交易執行包含執行多數微操作、操作或指令的集合。在上例中,兩線緒均執行於散列表內,及其記憶體存取被監視/追蹤。如果兩線緒均存取/改變相同登錄項,則可以執行衝突分解,以確保資料有效性。一類型之交易執行包含軟體交易記憶體(STM),其中記憶體存取的追蹤、衝突分解、放棄工作、及其他交易工作係以軟體執行,經常沒有硬體的協助。
在強基元軟體交易記憶體(STM)系統中,為了確保不會在交易記憶體操作與非交易記憶體操作間發生運行時間衝突,編譯器將各個非交易記憶體操作視為單一操作交易。換句話說,交易阻障被插入於交易記憶存取及非交易記憶體存取,以使彼此交易以及非交易記憶體存取隔離。然而,在各個交易及非交易記憶體操作處執行交易阻障可能很昂貴並複雜。
另一類型之交易執行包含硬體交易記憶體(HTM)系統,其中包含有硬體,以支援存取追蹤、衝突分解、及其他交易工作。然而,交易執行之硬體支援的先前嘗試並未有效地將任何資料粒度層次上的例如存取追蹤及衝突檢測的軟體交易優點整合至硬體上。
在以下說明中,各種特定細節係被說明,例如有用於交易執行之特定硬體結構、存取監視器的特定類型與實施法、特定快取實施法、特定類型快取一致性模型、特定資料粒度、及特定類型記憶體存取及位置等等,以提供對本發明之全盤了解。然而,明顯地,為熟習於本藝者所了解,這些特定細節可以不需要使用,即可實施本發明。在其他例子中,例如在軟體中之交易的編碼、交易的劃分、特定及替代多核心及多線緒處理器架構、特定編譯器方法/實施法、及微處理器的特定操作細節的已知元件與方法並未被詳細描述,以避免不必要地混淆本發明。
於此所述之方法與設備係用以提供記憶體存取監視,以支援交易執行。明確地說,於此參考有關於快取記憶體結構的監視器加以主要討論提供記憶體存取監視,以追蹤對記憶體位址的存取。事實上,特別參考以下圖2及4中之快取記憶體有關的監視器。然而,用以提供記憶體存取監視的方法與設備並不限於此,因為它們可以配合任何結構加以實施,以追蹤記憶體存取資料元素。
參考圖1,顯示能同時執行多線緒的處理器的實施例。注意,處理器100可以包含用於硬體交易執行之硬體支援。不論是結合硬體交易執行或者分開,處理器100也可以提供軟體交易記憶體(STM)的硬體加速、STM的分開執行、或其組合,例如混合交易記憶體(TM)系統的硬體支援。處理器100包含任何處理器,例如微處理器、內藏處理器、數位信號處理器(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。例如指令指標及在重新命名分配器邏輯130中之重新命名邏輯之其他小資源也可以複製用於線緒101a及101b。例如在重排/引退單元135中之重排緩衝器、ILTB120、載入/儲存緩衝器、及佇列之其他資源也可以透過分區而共享。例如通用內部暫存器、頁表為主暫存器、低階資料快取及資料-TLB115、執行單元140、及無序單元135的部份之其他資源可能被整個共享。
處理器100經常包含可以整個共享、透過分區共享、或處理單元指定/所專用之其他資源。在圖1中,顯示具有處理器之例示功能單元/資源的純例示處理器的實施例。注意處理器可以包含或省略這些功能單元之任一,並包含任何其他未示出之已知功能單元、邏輯、或韌體。
如所示,處理器100包含匯流排介面模組105,以與在處理器100外部的例如系統記憶體175、晶片組、北橋、或其他積體電路的裝置相通訊。記憶體175可以為處理器100所專用或與系統中之其他裝置共享。較高階或遠方(further-out)快取110快取近來擷取自較高階快取110的單元。注意較高階或遠方表示快取階增加或更遠離執行單元。在一實施例中,較高階快取110為第二階資料快取。然而,較高階快取110並不限於此,因為其也可以相關或包含指令快取。追蹤快取,即一類型之指令快取也可以在解碼器125後被耦接,以儲存最近解碼追蹤。模組120也可能包含分支目標緩衝器,以預測予以執行/採用之分支及一指令翻譯緩衝器(I-TLB),以儲存指令用之位址翻譯登錄項。
解碼模組125耦接至擷取單元120,以解碼所擷取單元。在一實施例中,處理器100係相關於指令集架構(ISA),其定義/指明可在處理器100上執行之指令。於此,為ISA所認出之常用機器碼指令包含稱為操作碼(opcode)的一部份指令,其參考/指明予以執行之指令或操作。
在一例子中,分配器及重新命名方塊130包含一分配器,以保留例如暫存器檔案之資源,以儲存指令處理結果。然而,線緒101a及101b係可能可以作無序執行,其中分配器及重新命名方塊130也保留例如重排緩衝器之其他資源,以追縱指令結果。單元130也可以包含一暫存器重新命名器,以重新命名程式/指令參考暫存器至處理器100內的其他暫存器。重排/引退單元135包含例如上述重排緩衝器、載入緩衝器、及儲存緩衝器的元件,以支援無序執行及隨後之無序執行指令的有序(in-order)引退。
在一實施例中,排序器及執行單元方塊140包含排序器單元,以排序在執行單元上之指令/操作。例如,浮點指令係被排序於具有可用浮點執行單元的執行單元之一部份上。也包含有關於執行單元的暫存器檔,以儲存資訊指令處理結果。例示執行單元包含浮點執行單元、整數執行單元、跳越執行單元、載入執行單元、儲存執行單元、及其他已知執行單元。
較低階資料快取及資料翻譯緩衝器(D-TLB)150係耦接至執行單元140。資料快取也儲存近來使用/操作於元件上,例如可能保持於記憶體一致性狀態的資料運算元。D-TLB儲存近來虛擬/線性至實體位址翻譯。於一特定例子中,處理器也可以包含頁表結構,以將實體記憶體區分成多數虛擬頁。
在一實施例中,處理器100能作交易執行。也可以被稱為碼的臨界或基元段的交易包含一群集指令、操作、或予以被執行為基元群的微操作。例如,指令或操作可以被使用以劃分一交易或臨界部。在如下所詳述之一實施例中,這些指令為一組指令的一部份,例如指令集架構(ISA),其係可以為處理器100的硬體例如上述之解碼器所辨識。經常地,一旦由一高階語言編譯至硬體可辨識組合語言,這些指令包含操作碼(opcode),或於解碼階段中,解碼器所辨識出的指令的其他部份。
典型地,在執行交易時,對記憶體的更新並未全作成全部可見,直到交易確定(commit)為止。例如,回應於自另一線緒的讀取,至一位置的交易寫入係可能為本地線緒所見,但寫入資料未被轉送,直到包含交易寫入的交易確定為止。於交易仍未決時,由記憶體載出的資料項/單元及寫入記憶體中的資料項/單元係如下所更詳細討論地追蹤。一旦交易到達一確定點,如果該交易並未檢出衝突,則交易被確定並在交易被作成全面可見時作出更新。
然而,如果在其未決期間若交易失效,則交易被放棄並可能重新開始,而不使更新為全面可見。結果,於此所用之交易未決表示已經開始執行但並未確定或放棄,即未決的交易。用於交易執行的例示實施法包含硬體交易記憶體(HTM)系統、軟體交易記憶體(STM)系統、及其組合或混合。
軟體交易記憶體(STM)系統經常稱為執行存取追蹤、衝突分解、或在或至少部份在軟體中之其他交易記憶體工作。在一實施例中,處理器100能執行一編譯器,以編譯程式碼,以支援交易執行。於此,編譯器可以插入操作、呼叫、函數及其他碼,以完成交易的執行。
編譯器經常包含一程式或程式組,以將來源文字/碼翻譯為目標文字/碼。通常,以編譯器來編譯程式/應用程式碼係在多階段及過程中完成,以將高階程式語言轉換為低階機器或組合語言碼。同時,單一過程編譯器仍可以用於簡單編譯。編譯器可以利用已知編譯技術並執行已知編譯操作,例如詞法分析、預處理、剖析、語意分析、碼產生、碼轉換、及碼最佳化。
愈大編譯器經常包含多階段,但經常這些階段係包含在兩一般階段中:(1)前端,即通常發生語法處理、語意處理、及一些轉換/最佳化之處,及(2)後端,即發生分析、轉換、最佳化、及碼產生之處。一些編譯器表示中間端,這顯示在編譯器之前端及後端間之劃界模糊。結果,對插入、相關、產生或編譯器的其他操作可以發生於任一前述階段或過程,及編譯器的其他任何已知階段或過程。一例示例子中,編譯器可能在編譯的一或更多階段中插入交易操作、呼叫、函數等,例如在編譯的前端階段中插入呼叫/操作,然後,在交易記憶體轉換階段期間,將呼叫/操作轉換為低階碼。
再者,在一實施例中,雖然編譯器的動態及靜態本質及執行環境,但編譯器編譯程式碼,以致能交易執行。因此,在一實施例中,參考程式碼的執行表示(1)編譯器程式的動態或靜態執行,以編譯主程式碼,以維持交易結構,或執行其他交易相關操作,(2)包含交易操作/呼叫的主程式碼的執行,(3)執行有關於主程式碼的其他程式碼,例如程式庫,或(4)其組合。
在一實施例中,處理器100能利用硬體/邏輯,即在硬體交易記憶體(HTM)系統內執行交易。當實施HTM時,各種特定實施細節存在於架構及微架構觀點;其多數細節並未於此討論,以避免不必要地阻擋本發明。然而,多數結構及實施法係被揭示作例示目的。但應注意的是,這些結構及實施法並不必要並可以增加及/或以具有不同實施細節的其他結構替換。
在一實施設計選擇例中,HTM可以以定位更新方式或寫入緩衝方式操作。在於定位更新HTM中,交易寫入係被執行,以參考記憶體位址,以修改保持於其中之先前資料。然而,此修改資料並未被提供至外部要求線緒,即資料並未作成全面可見,而是提供給用於記憶體排序目的的本地讀取。另外,先前資料經常“登入”,使得於交易放棄時,先前資料能被重新儲存,以在開始執行交易前,完成線緒的狀態。
為了顯示,假設資料快取150包含第一階資料快取,以保有來自較高階記憶體,例如快取110及系統記憶體175的資料。因此,於遭遇交易寫入至資料快取150時,在寫回快取的一實施例中,先前資料項將先前資料項寫回至較高階快取110。或者,先前資料可以被登入於處理器100內或其外部的另一分開記憶體。於登入先前資料項後,交易寫入被執行以更新於快取150中之資料項。因此,本地線緒,例如本地線緒101a,即有關於該交易寫入的線緒可以由快取150中之修改資料項讀取。然而,如果包含交易寫入的交易並未確定,則例如線緒102b的另一線緒並未回應於讀取要求而提供修改資料,而是提供登入資料。當交易確定時,登入資料失效或丟棄。再者,如果交易放棄,則先前資料被再載入或全面指明為有效資料。
相反地,在寫入緩衝HTM中,交易寫入係被緩衝於寫入緩衝器中,同時,先前資料內佇於其原始位置。如果例如線緒102b的本地線緒執行交易寫入資料的讀取,則修改資料由寫入緩衝器轉送。結果,如果外部線緒要求資料讀取同時包含交易寫入的交易仍未決,則提供來自原始位置的先前資料。再者,於交易確定時,修改資料被拷貝至對應記憶體位置,而於放棄時,則不管緩衝資料。
可以由以上討論看出,可以藉由本地處理元件及可能藉由其他處理元件對資料項作出存取及要求。在沒有安全機制下,這些存取的一部份將可能造成無效資料及執行,即寫入資料使讀取失效,或者讀取失效資料。結果,處理器100可能包含邏輯,以追蹤或監視記憶體存取,以指明可能的衝突。
在一實施例中,處理器100包含讀取及寫入監視器,以監視及/或追縱記憶體存取。第一例子中,監視器以資料元素的粒度監視對資料元素的記憶體存取,而無關於被限制保存資料元素的實體記憶體結構/位置的粒度。一資料項或資料元素可以包含任何以硬體、軟體或其組合所定義的粒度之資料。
資料、資料元素、資料項或參考的非限定列的例子包含記憶體位址、資料物件、種類、一類型動態語言碼的欄位、動態語言碼的類型、變數、運算元、資料結構、及記憶體位址之間接參考。然而,資料的任何已知群集可以稱為資料元素或資料項。例如,動態語言碼的類型之欄位及動態語言碼的類型的少數例子稱為動態語言碼的資料結構。為了例示,例如由昇陽微系統公司的JavaTM
的動態語言碼為強型語言。各個變數具有在編譯時間為已知的類型。該等類型被分成兩類-原(primitive)類型(布林及數值,例如整數,浮點)及參考類型(種類、介面與陣列)。參考類型的值係被稱為物件。在JavaTM
所中,由欄位構成的物件可以為一種類實例或陣列。假設類型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之非交易載入並未被監視對相同資料項的存取,因為它們參考分開欄位。注意,在追蹤記憶體存取資料項,也可以考量其他資料結構或規劃技術。例如,假設種類A的物件之欄位x及y,即A::x及A::y,則指向種類B的物件被啓始至新分配物件、且在啓始化後從未寫入。在一實施例中,為A::x所指向的物件的交易寫入至欄位B::z並未被監視為對有關於為A::y所指向的物件的欄位B::z的非交易載入的相同資料項之記憶體存取。由這些例子的外插,有可能決定監視可以以任何資料粒度位準執行。
在一實施例中,監視器包含讀取監視器及寫入監視器,以追縱被決定為要監視的載入及儲存。例如,硬體讀取監視器及寫入監視器係至少以該等資料項的粒度執行資料項的有界(bounded)監視,而不管保存資料項的儲存結構粒度。在一實施例中,資料項的讀取監視器包含予以相關資料項的第一數目讀取屬性。同樣地,資料項的寫入監視器包含有關於資料項的第二數目寫入屬性。注意的是,第一數目讀取屬性及第二數目寫入屬性可以相同,然而,它們並不限於此,及可能包含不同數目屬性。
讀取或寫入屬性包含任何邏輯、韌體、或保存有關於該等資料項狀態或資訊的結構。例如,資料項屬性包含位元向量,其中在位元向量中之各個位元表示資料項屬性,例如交易載入、交易寫入、非交易載入、非交易寫入、不交易載入、不交易寫入、不非交易載入、不非交易寫入、存取衝突檢測、無存取衝突檢測、讀取要求、無讀取要求、寫入要求、無寫入要求、所有權要求、無所有權要求、或任何其他有關於保存資料項的資料項或記憶體位置的屬性或狀態。
例如,資料項的屬性包含編碼值。例如,多數狀態,譬如:(1)交易寫入;(2)交易讀取;(3)未交易寫入;及(4)未交易讀取的四狀態係利用兩屬性位元,即00,01,11及10的四個二位元值加以編碼。注意這四狀態可以包含例子有監視寫入狀態、監視讀取狀態、未監視寫入狀態、及未監視讀取狀態。
如上所述,讀取及寫入屬性可以以任何已知方式有關於資料項/單元。例如,在處理器100內的一般儲存可以被利用以保存對應於予以監視的資料項讀取及寫入的讀取及寫入屬性。將屬性相關於資料項的方法數量有太多而無法舉出所有方法。
但,第一例子中,屬性係有關於快取線的次組位元組。例如,假設快取150的快取線為64位元組長並以8位元組區段可為處理器100所存取。於此,屬性可以相關於儲存之任一實體粒度,例如,所例示之2、4、8、16、32、64或128位元組資料並可以在快取150間改變,例如用於快取150一部份之相關於每4位元組實體儲存及用於快取150的另一部份之每8位元組實體儲存。
又,在一實施例,無關或不管實體儲存的週邊,監視器/屬性係以資料項粒度位準執行資料項的有界監視,不管在處理器100中之實體儲存的粒度,即,快取150及屬性儲存之一或兩者。例如,假設快取150包含可以以4位元區段存取之16位元組線,即在每一快取線內的四可存取區段。再者,假設讀取與寫入屬性係相關於各個16位元組線的各個8位元組區段。因此,快取能讀取及寫入每4位元組之資料,而屬性能監視每8位元組之資料。
在一例子中,監視載入造成具有20位元組大小的資料項的載入,分隔開快取150的兩快取線的一部份,即第一線的所有16位元組及第二線的前4位元組。因此,有關於快取150的第一快取線的16位元組的讀取屬性係被更新以表示發生監視載入。再者,有關於快取150的第二快取線的前8位元組的讀取屬性也被類似地更新,即使資料項只佔用第二快取線的4位元組。基本上,在此實施例中,監視資料項提供資料項的至少粒度位準,並可能以較大粒度,以確保整個資料項被監視,即有界監視。換句話說,於此,藉由確保資料項即使由於實體儲存的粒度,而包含較大量資料時仍被監視,屬性仍與資料項監視有所分界,而無關於實體儲存粒度限制或屬性相關性。相反地,假如屬性相較於快取150提供較小粒度,則根據屬性相關性追蹤資料項可能較快取150的可存取粒度準確。
以上例子假設屬性/監視的靜態相關至一預定大小,例如用於16位元組快取線的每8位元組的監視器。注意這些相關係單純例示用並可能劇烈變化,例如包含較小或較大監視器相關粒度。然而,在另一電施例中,屬性係於資料項的載入或儲存時,由屬性池加以動態指定。為了例示,上例在此情境中被再檢測。於此,當20位元組資料項利用監視載入加以載入時,則讀取屬性在該時間被動態地相關於資料項所載出處的快取150的20位元組。於此,資料項的監視被真實由實體儲存結構的粒度斷開。在兩實例中,不管其中之儲存結構即快取150的粒度,資料為監視器所分界。然而,在第一例中,監視器的相關至快取150部份的靜態粒度必須列入考量,以確保資料為正確監視所分界。然而,在第二例子中,監視器係被動態相關於資料項的特定粒度。
在一實施例中,在第一模式中,處理器100內的監視器係監視所有記憶體存取。例如,當交易被執行時,所有交易記憶體存取被監視。再者,在另一模式中,處理器100可能可以選擇性地監視記憶體存取。記憶體存取的選擇性監視係於以下參考圖3更詳細討論。
在一實施例中,監視記憶體存取操作之硬體監視器係被利用於衝突檢測,例如檢測可能需要放棄一交易的無效記憶體存取。如以下所更詳細討論,無關於硬體監視器或屬性的相關性如何實施,監視器的存取狀態可以為衝突檢測邏輯、韌體、軟體、或其組合所利用以檢測可能記憶體存取衝突。為了例示,假設相關於保存在快取150中之資料項的讀取硬體監視器表示該資料項已經先前為交易所載入,隨後,另一線緒的寫入該資料項的要求係為用於快取150的快取控制邏輯所接收。根據寫入要求及讀取監視器的現行狀態,即交易載入,在一實施例中包含或耦接至快取控制邏輯之衝突邏輯檢測可能衝突。回應於可能衝突,可以採行任意數目之以硬體、軟體或其組合方式之動作。參考圖2所詳細討論,例子包含設定在狀態暫存器中之一位元或回應於該衝突設定一旗標,並傳送控制至處置器,以回應於設定該位元或旗標,而處置該可能衝突。
因此,如上例子所推論,在一實施例中,當屬性係相關於例如資料快取150的快取記憶體時,則現存已知一致性性及通訊/監聽協定可以被利用以組合硬體監視器/屬性以檢測衝突。於此,根據該設計,快取一致性要求與監視器/屬性狀態之不同組合造成可能衝突,例如以上之讀取監視器表示資料項的監視載入及監聽表示對資料項的寫入要求。相反地,表示對資料項的監視寫入的寫入監視器及表示對資料要求的讀取要求之監聽可以被認為是可能衝突。在一實施例中,為了檢測存取要求及屬性狀態的此等組合,監聽邏輯係耦接至衝突檢測/報告邏輯,例如監視器及/或用於衝突檢測/報告之邏輯。
又,在一實施例中,檢測衝突並不限於利用共同一致性協定。例如,處理器100的架構被顯示於圖1。於此,分開實體線緒共享至資料快取150及較高階快取110的存取。因此,如果監視器相關於被共享於線緒101a及101b的共享快取之快取150,則可能由於回應於自線緒101a及101b的存取,缺乏產生與快取150互連要求,則在線緒101a及101b間之可能衝突可能未適當檢出。
因此,在一實施例中,監視器/屬性係以每處理單元為基礎地複製。在此例子中,屬性可以每線緒複製,即複製用於線緒101a及101b的相同屬性。注意的是屬性複製可能包含單一群集屬性地相關至不同線緒識別碼,以表示哪一線緒係相關於該單一群集屬性的狀態。相反地,複製也可以包含若干個別群集的複製屬性,其各個係相關於一線緒。例如,資料項的一組屬性係相關於線緒101a及資料項的第二組屬性係相關於線緒101b。
結果,檢測於共享對快取150的存取之線緒101a及101b間之衝突包含在每一處理單元上的存取追蹤,例如以每線緒為基礎。為了顯示,假設線緒101a設定相關於資料項D的監視器。於此,有關於線緒101a的複製屬性係被設定至適當監視值。因此,如果線緒101b對資料項D作出衝突要求,則衝突被檢測出。在一實施例中,耦接至控制邏輯以檢測衝突的報告邏輯報告該衝突,以作適當處理。例如,譬如邏輯或(OR)的邏輯運算組合不同衝突事件,例如由於外部原因(逐出或外部監聽)及由於共享快取線緒存取衝突的監視損失。
在一實施例中,相關於保存於快取150中之資料項的屬性係利用短暫或私有店舖實施。於此,屬性可以保存於快取150中之任意處,例如快取150本身之線中。例如,上述HTM的例子包含更新定位HTM。於此,交易修改資料被保持於現行記憶體位置,同時,先前資料被登入/備用,例如於較高階記憶體。結果,在一實施例中,當快取150係相關於一資料項被存取,則屬性被短暫地與資料項儲存於快取150中。於此,資料項被保存於私有或短暫一致性狀態,這允許快取控制邏輯確保交易語意被確認。換句話說,保存於短暫狀態的資料項並未提供給其他線緒。
然而,如果資料項由快取150逐出,則私有保存屬性可能遺失。基本上,屬性被系統所建立以監視資料項,並不會寫回至較高階記憶體。在屬性衰減的情節下,即在逐出或其他事件中遺失時,可能衝突可能被以類似於上述之檢測可能存取衝突的方式觸發。例如緩衝儲存及緩衝狀態的短暫儲存及私有狀態版本係在一起申請之相關申請案(代理人案號P29132)名為“支援本地緩衝資料的延伸MESI協定”中討論。
如上述之例子所顯示,相關於快取中之資料項的硬體屬性可以被保存在快取外、在快取邏輯內、在快取的陣列內、在快取的其他結構內、或甚至短暫在快取的資料部份內。經常地,這些硬體屬性係為硬體所維持,而不為使用者指令之執行所直接調處。例如,軟體程式包含資料項的交易寫入。當處理器遭遇交易寫入並決定其被監視時,則硬體適當更新有關於該資料項的寫入屬性。例如,短暫儲存被插入並執行以該資料項及相關寫入屬性更新快取150。例如,屬性被附加至快取150的一致性狀態位元,以及,保存該資料項的快取150線的一致性狀態係回應於該交易寫入而更新。
又,在一實施例中,除了硬體監視器/屬性的硬體管理外,指令也可以為硬體所認出,以直接調處該等屬性。例如,這些指令或操作可以為處理器100所可認出之指令集架構(ISA)的一部份,以對屬性執行操作。例如,ISA包含操作碼,其當為處理器100的解碼器所檢測時,據此修改屬性。可以被利用之指令例子包含:一設定指令,以設定相關於資料項的屬性至一狀態;一重設指令,以重設定相關於資料項的屬性至一預設狀態;一測試或讀取指令,以讀取屬性的狀態;及一清除指令,以清除交易或快取內的所有屬性。
上述例子之一包含清除指令,以清除屬性。在一實施例中,一大量清除指令被利用以清除大量讀取及寫入監視器。注意大量清除指令可能有用於若干情節中。第一,於確定或放棄一交易時,用於該交易的讀取及寫入監視器可能被清除/重設。第二,處理器100的由一領域至另一領域的轉移可能可以被組態以清除/重設讀取及寫入監視器。於英特爾IA32架構中之領域例包含讀取域、大實數域、虛擬域。第三,於例外或中斷時,清除讀取及寫入監視器可能有用。因此,當遭遇清除指令時,監視器、一範圍的監視器、所有符合一指定條件的監視器、或在快取內的所有監視器均被清除。
如開始時參考圖1所述,處理器100的架構只是單純作討論的目的。類似地,將屬性相關於資料項/單元的特定例子也是例示性,因為也可以利用以不同粒度資料項將硬體監視器/屬性相關的任一方法。將屬性相關至快取中之資料項的例子更參考圖2加以討論。
參考圖2,顯示將屬性相關於快取記憶體中之資料項的實施例。處理器250包含任意類型之已知處理器,其具有任意數目能交易執行的處理單元。如上所討論,屬性可以靜態地相關至任意實體大小的實體儲存結構,或動態地指定至資料項。圖2的實施例顯示分別相關於快取205的靜態部份,即部份210-225的屬性,即屬性211.r-226.r及211.w-226.w。例如,部份210-225為快取250的快取線。快取250包含任意之相關於處理器的快取,例如第一階快取或第二階快取。
如所示,讀取屬性211.r係相關於快取線210及寫入屬性211.w係相關於快取線210。在一實施例中,陣列235包含具有屬性211.r及211.w的標籤陣列。在另一實施例中,陣列235包含狀態陣列,例如一致性狀態陣列,其中屬性211.r及211.w係包含在狀態位元內,以基本上建立快取205的新一致性狀態。利用一致性狀態的例子係更詳細參考圖4加以描述。在另一實施例中,陣列235包含在如所示快取控制邏輯230內的任意陣列,或者在控制邏輯外及在處理器250內的屬性的任何其他結構(未示出)。
在一實施例中,屬性211.r-226.r及211.w-226.w監視對例如資料元素201的資料項/單元之記憶體存取,而不管儲存結構的實體邊界,例如在快取205內的快取線的邊界。事實上,資料項可以未對準快取205的邊界,例如快取線。於此,不管快取205的實體邊界的監視資料項包含根據監視屬性與快取205部份的相關性,而以監視分界未對準資料項。於此,屬性係以每線為基礎地相關,因此,包含監視資料項的任意線即使它們保存其他資料也仍被監視,以確保資料項被適當監視。
各種不同資料項的例子被討論如上。在圖2中,資料項201被顯示為具有1快取線的大小。於一例示性例子中,假設交易載入操作係執行以由一參考資料元素201的記憶體位址載入,這造成資料元素201的載入快取線210及215。藉由模式或設定條件,處理器250決定交易載入予以監視。
結果,控制邏輯230決定資料項201予以分界,即至少資料被監視並可能較所需為多之資料被監視以確保正確之衝突檢測。於此,控制邏輯230更新欄位211r及216r,以表示由快取線215及216的監視載入已發生。第一例子中,欄位211r及216r由例如邏輯0的未監視邏輯值被更新至例如邏輯1的監視邏輯值。在陣列235為一致性狀態陣列的實施例中,欄位211及216被轉移至例如下述之監視讀取共享一致性狀態的適當一致性狀態。因此,例如,當在控制邏輯230中之監聽邏輯檢出對快取線210或205寫入的要求時,則檢測出可能的衝突。
雖然圖2如上所述主要針對與快取的資料部份205分開的屬性,但屬性也可以保存在資料部份205中。利用以上之例子,不同於回應於監視載入的更新屬性211r及216r,屬性被私有地儲存於快取線210、215中或兩者中。快取線210及215的狀態被轉移至緩衝或私有狀態。因此,於寫入要求中,類似衝突係利用私有保持屬性資訊加以檢測。然而,於逐出線210或215時,屬性資訊可能衰減,即遺失。結果,類似衝突處理可以觸發。注意在參考圖2的討論中,每快取線只包含一組屬性。然而,屬性可以每處理器250線緒複製,如參考圖1的快取150所述。例如,屬性可以每線緒複製,每線緒共享快取205。另外,不同數目的讀取及寫入屬性可以提供,以替代所示之偶數讀取及寫入屬性。
在一實施例中,可以包含在快取控制邏輯230內或與之相關的衝突邏輯檢測相關於屬性的衝突。根據設計實施法,任何組合之屬性狀態、要求、通訊協定、或一致性協定可以被利用以決定衝突存在。如同簡化的基本例子中,寫入至被監視讀取可能為一衝突及讀取或寫入一被監視寫入可能為一衝突。
在一實施例中,一旦檢出衝突,報告邏輯報告該衝突。衝突可以為硬體、韌體、軟體或其組合所處置。在一實施例中,報告邏輯包含一儲存單元,例如暫存器245。儲存單元可以包含在處理器250內的任何用以保存資訊之結構,例如記憶體、同屬暫存器、或模型特定暫存器(MSR)。第一例子中,暫存器245包含狀態暫存器。回應於檢測出一衝突,一值可以設定暫存器245至衝突值,以表示發生衝突。於此,軟體可以輪詢暫存器245是否該值將被設定至衝突值。另一例子中,處理器250包含旗標暫存器,以包含例如溢位旗標的旗標,其係為例如跳越指令的指令所測試。為了例示,在載入指令後的條件跳越能被用以測試交易的讀入組的一致性。
如上所討論,由於逐出或其他事件的屬性資料的遺失也被認為是衝突。於此,暫存器245可以以類似方式利用,以表示屬性資料的遺失。在一實施例中,回應於屬性資料的遺失,報告邏輯將處理器250的操作再指向於一軟體處置器,以容許用於監視屬性的有限儲存容量。回應於溢流事件的虛擬交易記憶體的例子係被討論於申請序號11/479,902的名為“虛擬交易記憶體的全面溢流方法”的共同進行申請案中。除了利用例如暫存器245的儲存單元以外,登錄使用者處置器以處置例如衝突的交易事件也於2008年12月30日為Gad Sheaffer等人所申請案號12/346,518(代理人案號為P29129)名為“交易記憶體事件處置的硬體中之登錄使用者處置器”的申請案中加以討論。
在一實施例中,暫存器245保存有一值,以表示處理器250的操作模式,例如非監視模式、非選擇監視模式、及選擇監視模式。在選擇監視模式內,暫存器245或其他暫存器也可以界定監視存取之選擇準則。注意有關於使用一狀態暫存器之暫存器245、登錄使用者處置器的暫存器、界定操作模式之暫存器、及界定選擇準則之暫存器的討論也可以稱為單一暫存器或暫存器的組合,以實施前述暫存器245可能使用的任意組合。
再來參考圖3,顯示以不同模式監視的方法之流程圖的實施例。注意圖3及5的流程圖係以實質串列方式加以例示。然而,為這些圖所例示之方法並不如此限制,因為它們可以以任何順序發生,並以至少部份並列地執行。
在流程305中,決定是否參考資料元素的記憶體存取要被監視。在一實施例中,提供有監視的多數模式,例如:不監視、非選擇監視、及選擇監視。例如,軟體能設定監視模式。例如,使用者指令能定址一暫存器,例如來自圖2的暫存器245,以表示一監視的模式。於此,軟體決定哪些讀取及寫入被監視。例如,此決定可以藉由軟體碼作成,例如靜態或於運行時間之編譯器、應用程式碼、作業系統碼、超管理器碼、或交易運行時間碼。
在一實施例中,監視的選擇模式時,除了落在可以以任意方式界定之特定準則內以外,讀取及寫入係被監視。可以不監視之對記憶體位址的記憶體存取的選擇準則的非限定例示列表包含對以下之記憶體存取:落在一範圍內外或匹配一遮罩的虛擬位址、落在一範圍內外或匹配一遮罩的實體位址、屬於特定記憶體類型之位址、在輸入/輸出(I/O)空間內的位址、代表另一保護域中之操作的在一保護域中執行之位址、為特定操作碼或前置碼所指明之指令所存取之位址、及特定資料類型,例如浮點或向量運算。另外,監視屬性也可以回應於例如為使用者所指明及處理器250的硬體可認出之只顯性交易載入及顯性交易儲存操作的特定認出指令加以設定。
一旦在流程305中決定監視要施加,則監視在流程315中透過有關於資料項的監視器的更新被施加,或者,在流程310中不執行監視,及存取被正常執行。相關於資料元素的監視器,例如屬性的更新包含修改屬性,以適當地監視存取的任何方法(如於此所討論)。根據監視及未監視讀取/寫入的更新監視器至不同共調狀態的例子將討論如下。
再者,參考圖4,轉移於一致性狀態間之方法的狀態轉移圖實施例被描述,其包含監視一致性狀態。注意在圖4的狀態轉移圖為部份狀態圖,其並未顯示部份狀態轉移(例如清除監視屬性),以使圖簡化。再者,在狀態間之狀態及轉移只單純為例示性。例如,多數步驟狀態轉移可能發生於狀態間,而不是圖4中所例示之一些直接轉移。
描述快取一致性狀態的列表包含:(1)修改(M420)狀態,即位址被寫入且並沒有與之相關的屬性;(2)修改讀取(MR430)狀態,即位址被讀取並且有與之相關的讀取屬性(例如當對該位址之前一讀取然後交易寫入一位址);(3)修改寫入(MW425)狀態,即,位址被寫入並有寫入屬性與之相關;(4)修改讀取寫入(MRW435)狀態,即位址被讀取,然後寫入,並具有讀取與寫入屬性與之相關;(5)一排除(E440)狀態,即,位址被讀取及沒有屬性與之相關;(6)排除讀取(ER445)狀態,即位址被讀取及有讀取屬性與之相關;(7)共享(S410),即位址被讀取並沒有屬性與之相關;(8)共享讀取(SR415),即位址被讀取並具有讀取屬性與之相關。
在一實施例中,這些狀態已經被依據圖2的例子加以實施,其中屬性包含在快取的狀態位元內,藉以建立這些新監視一致性狀態。例如,當線被保存於共享狀態410及發生參考包含該線的資料項的記憶體位址的監視讀取,線的一致性性被轉移至SR415狀態。結果,在一實施例中,由於一致性狀態為SR415,寫入該線的外部要求造成可能衝突。其他可能衝突可能根據一致性狀態配合其他記憶體存取要求類型而存在,例如當包含至少一部份的資料項的快取線被保存於MW一致性狀態425時,一資料項的外部讀取要求。
參考圖5,顯示執行記憶體存取的流程圖的實施例。在流程505中,遭遇參考與資料項相關的記憶體位址的記憶體存取。遭遇記憶體存取包含檢測在任意執行階段的記憶體存取的任意方法。不同階段的遭遇操作的例子包含一解碼器認出用於一記憶體存取之操作碼;由指令快取取回記憶體存取操作;在例如載入/儲存單元之執行單元上排序執行用之記憶體存取;及收回記憶體存取。
在流程510中,決定是否處理器正操作於一選擇模式之操作。如上所述,在一實施例中,軟體設定處理器的模式。於此,當執行時,軟體更新例如暫存器之儲存單元,以表示操作的模式。例如,當交易之執行開始時,軟體設定該模式為非選擇,即所有記憶體存取被監視。當交易完成時,模式被觸變至選擇監視或無監視。然而,在另一實施例中,在處理器中之硬體決定操作模式。
如果模式被決定為選擇性,則在流程515中,決定是否特定記憶體存取被監視。任意數目的選擇準則可以被用於此決定中,例如是否參考記憶體位址落於特定範圍位址內或者資料項為特定類型否。另外,該準則可以簡單地包含是否記憶體存取為該軟體所指明予以監視,例如指明為顯性交易記憶體存取。如果記憶體存取不被監視,則在流程525中,執行為正常。然而,如果記憶體存取要被執行,則在流程520中,相關於該資料項的存取監視器被據以更新。於此,在流程525可以在流程520中更新監視器之前、之時或之後執行存取。
因此,可以由以上看出,例如屬性之監視器提供至少一資料項/單元的粒度的記憶體存取的監視,而不會為實體儲存結構粒度所限制。結果,硬體屬性提供對硬體內的記憶體位址及相關資料項存取的監視,同時保有以軟體資料結構層次監視及檢測衝突的能力。再者,屬性同時也可能操作為濾波器,用以當屬性資料衰減時,透過支援溢流至軟體的大異動。另外,在一實施例中,使用者機制係被包含,以允許對屬性之存取,以對之執行直接操作。
於此所用之模組表示任意硬體、軟體、韌體、或其組合。經常地,例示為分開之模組邊界經常改變並可能重疊。例如,第一及第二模組可以共享硬體、軟體、韌體、或其組合,同時可能保存一些獨立硬體、軟體或韌體。在一實施例中,術語“邏輯”的用途包含硬體,例如電晶體、暫存器或其他硬體,例如可程式邏輯裝置。然而,在另一實施例中,邏輯也包含與硬體整合之軟體或碼,例如韌體或微碼。
於此所用之一值包含數目、狀態、邏輯狀態、或二進制邏輯狀態的已知表示法。經常地,邏輯位準、邏輯值或邏輯值的使用也表示為1及0,其簡單地表示二進制邏輯狀態。例如,1表示高邏輯位準及0表示低邏輯位準。在一實施例中,例如電晶體或快閃格的儲存格可以能保存單一邏輯值或多數邏輯值。然而,在電腦系統中之值其他表示法已經使用。例如,十進數十(10)也可以表示為二進制值1010及十六進制字母A。因此,一值包含能保存在電腦系統中之資訊的表示值。
再者,狀態可以為值或值的部份所表示。例如,如邏輯1的第一值可以表示一預設或啓始狀態,而如邏輯0的第二值可以表示為非預設狀態。另外,於一實施例中,術語重設及設定分別表示預設及更新值或狀態。例如,預設值可能包含高邏輯值,即重設,而更新值可能包含低邏輯值,即設定。注意這些值的任意組合可以被用以代表任意數目的狀態。
上述之方法、硬體、軟體、韌體或碼的實施例可以經由儲存於機器可存取或機器可讀取媒體上之可以為處理單元所執行之指令或碼加以實施。機器可存取/可讀取媒體包含任何機器,其提供(即儲存及/或傳送)可以為例如電腦或電子系統之機器所讀取之形式之資訊。例如,機器可存取媒體包含隨機存取記憶體(RAM),例如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁或光儲存媒體;快閃記憶體裝置;電儲存裝置;光儲存裝置;聲音儲存裝置或其他形式之傳遞信號(例如載波、紅外線、數位信號)的儲存裝置等等。例如,一機器可以透過接收來自媒體的例如載波的傳遞信號,而存取儲存裝置,該媒體能保存予以傳送於傳遞信號上的資訊。
於整個說明書中之“一實施例”或“實施例”表示有關於包含在本發明至少一實施例中的該實施例所述之特定特性、結構或特徵。因此,在整個說明書之“在一實施例中”或“在實施例中”的用語並不必然表示相同實施例。再者,特定特性、結構或特徵可以以適當方式被組合於一或更多實施例中。
在前述說明書中,詳細說明已經參考特定例示實施例加以說明。然而,明顯地,各種修改及變化係可以在不脫離由隨附之申請專利範圍所界定的本發明之較寬精神與範圍下加以完成。因此,說明書及圖式被視為例示應用,而非限定目的。再者,實施例或其他例示語言的前述使用並不必須表示相同實施例或相同例子,而是也可以表示不同及有區分的實施例,及有可能相同的實施例。
100...處理器
101...核心
101a,b...架構狀態暫存器
102a,b...硬體線緒
102...核心
105...匯流排界面模組
110...較高階快取
120...指令翻譯緩衝器
125...解碼模組
130...重新命名分配器邏輯
135...重排/引退單元
140...執行單元
150...快取
175...系統記憶體
201...資料元素
210...快取線
215...快取線
225...部份
230...控制邏輯
245...暫存器
250...處理器
211r,w...屬性
216r,w...屬性
221r,w...屬性
226r,w...屬性
235...陣列
205...快取
本發明將以例示方式顯示,但並不為附圖所限制。
圖1為包含能同時執行多軟體線緒的多處理單元的處理器實施例。
圖2為支援交易執行之處理器中之結構實施例。
圖3為操作用於記憶體存取監視的選擇相關模式或記憶體存取監視的非選擇相關模式之方法流程圖的實施例。
圖4為用於包含額外監視快取一致性狀態的快取一致性狀態的狀態轉移圖的另一實施例。
圖5為監視記憶體存取方法的流程圖實施例。
201...資料元素
210...快取線
215...快取線
225...部份
230...控制邏輯
245...暫存器
250...處理器
211r,w...屬性
216r,w...屬性
221r,w...屬性
226r,w...屬性
235...陣列
205...快取
Claims (40)
- 一種監視在硬體中之記憶體存取的設備,包含:執行邏輯,參考有關於資料項的記憶體位址,執行交易記憶體存取操作;記憶體,耦接至該執行邏輯,以回應於該執行邏輯執行該交易記憶體存取操作,而保存該資料項;及相關於該記憶體的硬體監視器,以回應於該執行邏輯執行該交易記憶體存取操作,而執行該資料項的有界存取監視,而不管該記憶體的粒度。
- 如申請專利範圍第1項所述之設備,其中硬體監視器係回應於該執行邏輯執行使用者等級指令而為可讀取及可修改。
- 如申請專利範圍第1項所述之設備,其中該記憶體包含資料快取、及其中相關於該資料快取的硬體監視器包含對應於該資料快取的多數快取線的多數讀取監視器及多數寫入監視器。
- 如申請專利範圍第3項所述之設備,其中該資料快取的該多數快取線的數個快取線保存未對準該多數快取線的邊界的該資料項。
- 如申請專利範圍第4項所述之設備,其中該交易記憶體存取操作包含交易載入,及其中與該資料快取相關,而不管該記憶體的粒度的情況下回應於該執行邏輯執行該交易載入,以執行該資料項的有界存取監視的該硬體監視器包含該多數讀取監視器中的數個讀取監視器,該數個讀 取監視器對應於該多數快取線中保存該資料項的至少一部份的該數個快取線,該數個讀取監視器回應於該執行邏輯執行該交易載入而被更新到監視讀取狀態。
- 如申請專利範圍第5項所述之設備,其中該交易記憶體存取操作包含交易儲存,及其中與該資料快取相關、用於在不管該記憶體的粒度的情況下回應於該執行邏輯執行該交易儲存,以執行該資料項的有界存取監視的該硬體監視器包含該多數寫入監視器中的數個寫入監視器,該數個寫入監視器對應於該多數快取線中保存該資料項的至少一部份的該數個快取線,該數個寫入監視器回應於該執行邏輯執行該交易寫入而被更新到監視寫入狀態。
- 如申請專利範圍第6項所述之設備,其中當該數個讀取監視器中對應於該數個快取線中的一快取線的一讀取監視器被更新至該監視讀取狀態時,回應於該控制邏輯檢測對該一快取線的外部寫入要求,該控制邏輯檢測到一交易衝突。
- 如申請專利範圍第6項所述之設備,其中當該數個寫入監視器中對應於該數個快取線中的一快取線的一寫入監視器被更新至該監視寫入狀態時,回應於該控制邏輯檢測到對該一快取線的外部讀取要求,該控制邏輯檢測到一交易衝突。
- 如申請專利範圍第6項所述之設備,其中回應於該執行邏輯執行使用者層級清除操作,該數個讀取監視器及該數個寫入監視器要被重設為非監視狀態。
- 如申請專利範圍第6項所述之設備,其中該數個包含大於1的整數個。
- 如申請專利範圍第1項所述之設備,其中該硬體監視器係根據該資料項的大小動態地相關該記憶體。
- 如申請專利範圍第11項所述之設備,其中該硬體監視器根據該資料項的大小動態地相關該記憶體包含:邏輯,以反應於該資料項的該大小大於該記憶體的一線且該執行邏輯執行該交易記憶體存取操作,而動態地由讀取監視器及寫入監視器的池指定讀取監視器及寫入監視器至該記憶體的多數線,該多數線保存該資料項的至少一部份。
- 如申請專利範圍第12項所述之設備,其中與該記憶體相關、用於在不管該記憶體的粒度的情況下回應於該執行邏輯執行該交易記憶體存取操作,而執行該資料項的有界存取監視的硬體監視器包含:指定給該多數線、回應於該執行邏輯執行交易載入操作而被設定為監視讀取狀態的該讀取監視器;以及,指定給該多數線、回應於該執行邏輯執行交易儲存操作而被設定為監視寫入狀態的該寫入監視器。
- 一種監視在硬體中之記憶體存取的處理器,包含:使用者可存取暫存器,保存:一非選擇值,以表示該處理器的操作之非選擇模式;及一選擇值,以表示該處理器的操作之選擇模式;控制邏輯,耦接至該使用者可存取暫存器,以回應於該使用者可存取暫存器保存該選擇值,根據選擇準則,來 決定是否要監視一記憶體存取操作;及硬體屬性,回應於該使用者可存取暫存器保存該非選擇值或者該控制邏輯根據該選擇準則決定要被監視的該記憶體存取操作,而追蹤對記憶體進行的該記憶體存取操作。
- 如申請專利範圍第14項所述之處理器,其中該硬體屬性為相關於快取記憶體,以保存為該記憶體存取操作所參考的記憶體位址相關的資料元素,及其中該硬體屬性追蹤對記憶體的該記憶體存取操作包含:回應於該處理器執行該記憶體存取操作,將該硬體屬性更新為已存取狀態,以表示該資料元素已經被存取。
- 如申請專利範圍第14項所述之處理器,其中該非選擇值包含第一邏輯值及該選擇值包含第二邏輯值。
- 如申請專利範圍第14項所述之處理器,其中該選擇準則包含可以為解碼邏輯所認出的、用以表示一操作將被監視的操作碼,及其中該控制邏輯根據該操作碼決定是否要監視記憶體存取操作包含:該解碼邏輯檢測到該操作碼與該記憶體存取操作相關。
- 如申請專利範圍第14項所述之處理器,其中該選擇準則包含由在第二使用者可存取暫存器中之使用者層次軟體所指明之虛擬位址範圍、實體位址範圍、記憶體類型、輸入/輸出(I/O)位址空間、保護域位址空間、操作碼、前置碼、及資料類型所構成之群組中選出之準則。
- 如申請專利範圍第18項所述之處理器,其中該控 制邏輯根據選擇準則決定是否要監視記憶體存取操作包含:將與該記憶體存取操作相關的準則與該選擇準則進行比較,並根據該準則與該選擇準則的該比較,決定要監視該記憶體存取操作。
- 如申請專利範圍第18項所述之處理器,其中該選擇準則是為該使用者層次軟體在第二使用者可存取暫存器中所規定的。
- 一種監視在硬體中之記憶體存取的設備,包含:遭遇記憶體存取操作的邏輯,該記憶體存取操作參考將被監視的資料項有關的記憶體位址;包含多數線的快取記憶體的資料陣列,其中該多數線的數個線係反應於該邏輯遭遇該記憶體存取操作,而保存該資料項;及該快取記憶體的一致性狀態陣列,其包括對應於該多數線的每一個的狀態登錄項,其中回應於第一數個線保存該資料項,對應於保存該資料項的該數個線的該狀態登錄項的每一個被更新以表示被監視的一致性狀態。
- 如申請專利範圍第21項所述之設備,其中該被監視的一致性狀態包含由修改讀取(MR)狀態、修改寫入(MW)狀態、修改讀取寫入(MRW)狀態、排除讀取(ER)狀態、及共享讀取(SR)狀態所構成之群組所選出之一致性狀態。
- 如申請專利範圍第22項所述之設備,其中不是該數個線之一的線相關的狀態登錄項代表未監視狀態,及其中該未監視狀態表包含修改排除共享及無效(MESI)狀態。
- 如申請專利範圍第21項所述之設備,反應於接收到與該被監視的一致性狀態相衝突的外部存取要求,與該快取記憶體相關的控制邏輯檢測出衝突。
- 如申請專利範圍第24項所述之設備,其中與該被監視的一致性狀態相衝突的外部存取要求包含:該外部存取要求包括有外部寫入要求,及該被監視的一致性狀態包括修改排除共享無效(MESI)狀態的讀取版本。
- 如申請專利範圍第24項所述之設備,更包含一狀態暫存器,回應於該控制邏輯檢測到該衝突,該狀態暫存器被該控制邏輯更新為衝突值。
- 如申請專利範圍第21項所述之設備,其中參考與要被監視的資料項相關的記憶體位址的記憶體存取操作係在使用者層次軟體中被指明為要被監視的記憶體存取操作。
- 如申請專利範圍第27項所述之設備,其中遭遇該記憶體存取操作的邏輯包含解碼器邏輯。
- 如申請專利範圍第21項所述之設備,其中該數個線包含多於1個的線。
- 一種監視在硬體中之記憶體存取的系統,包含:處理器,包含:快取記憶體,其保存要被該處理器所執行之交易記憶體存取操作所參考的資料項;有關於該快取記憶體的硬體屬性,以回應於該處理器執行該記憶體存取操作,以與該快取記憶體的線未對準的 該資料項粒度來代表該資料項的存取狀態,其中該存取狀態與該交易記憶體存取操作的類型相關;及系統記憶體,其被耦接至該處理器,以保存該資料項的未快取拷貝。
- 如申請專利範圍第30項所述之系統,其中與該交易記憶體存取操作的類型相關的存取狀態包含:回應於該交易記憶體存取的類型為載入類型的交易讀取狀態,及回應於該交易記憶體存取的類型為儲存類型的交易寫入狀態。
- 如申請專利範圍第30項所述之系統,其中與該快取記憶體相關的、用以代表存取狀態的該硬體屬性係由位元向量、編碼值、及狀態值所構成的群組中所選出。
- 如申請專利範圍第30項所述之系統,其中該硬體屬性包含與第一線緒相關的、用以反應於該處理器之該第一線緒執行該記憶體存取操作而以與該快取記憶體的線未對準的該資料項的粒度來代表該資料項的針對該第一線緒的存取狀態的硬體屬性,及其中,該硬體屬性係被複製以與共享對該快取記憶體的存取的第二線緒相關,用以回應於該處理器的該第一線緒執行參考該資料項的第二記憶體存取操作,而以與該快取記憶體的線未對準的該資料項的粒度來表示該資料項的針對該第二線緒的第二存取狀態。
- 一種監視在硬體中之記憶體存取的方法,包含:決定是否要監視參考資料項的記憶體存取操作;於快取之數個線中快取儲存該資料項;及 回應於決定要監視該記憶體存取操作,而進行以下操作:決定相關於該快取的硬體屬性以界接至該資料項;及更新該硬體屬性,以代表相關於該記憶體存取操作類型的存取狀態。
- 如申請專利範圍第34項所述之方法,其中決定是否要監視參考資料項的記憶體存取操作是根據執行該記憶體存取操作的處理器的操作模式。
- 如申請專利範圍第34項所述之方法,其中決定是否要監視參考資料項的記憶體存取操作是根據使用者層次軟體將該記憶體存取操作指明為要被監視的操作。
- 如申請專利範圍第34項所述之方法,其中決定相關於該快取的硬體屬性以界接至該資料項包含:動態指定與未對準該數個線的該資料項相關的硬體屬性。
- 如申請專利範圍第34項所述之方法,其中決定相關於該快取的硬體屬性以界接至該資料項包含:決定一致性狀態登錄項內與該數個線相關的硬體屬性位元,及其中更新該硬體屬性以代表與該記憶體存取操作類型相關的存取狀態包含:更新一致性狀態登錄項內與數個線相關的硬體屬性位元,以代表相關於該記憶體存取操作的類型的被監視的一致性狀態。
- 如申請專利範圍第34項所述之方法,其中相關於該記憶體存取操作的類型的存取狀態包含:回應於該記憶 體存取操作的類型包含讀取類型的監視讀取狀態;及回應於該記憶體存取狀態的類型包含寫入類型的監視寫入狀態。
- 如申請專利範圍第34項所述之方法,更包含:回應於該記憶體存取操作之後的外部存取要求,根據該外部存取的類型及有關於該記憶體存取操作的類型之存取狀態,來檢測衝突;回應於檢測到該衝突,而利用在該處理器中之狀態暫存器,對軟體報告該衝突;及回應於利用該處理器中之狀態暫存器對軟體報告該衝突,執行軟體處置器,以處置該衝突。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/346,530 US8627017B2 (en) | 2008-12-30 | 2008-12-30 | Read and write monitoring attributes in transactional memory (TM) systems |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201037525A TW201037525A (en) | 2010-10-16 |
TWI448897B true TWI448897B (zh) | 2014-08-11 |
Family
ID=42286302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098143376A TWI448897B (zh) | 2008-12-30 | 2009-12-17 | 監視在硬體中之記憶體存取的方法與設備、處理器及其系統 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8627017B2 (zh) |
JP (3) | JP5462883B2 (zh) |
KR (1) | KR101394741B1 (zh) |
CN (1) | CN101814018B (zh) |
TW (1) | TWI448897B (zh) |
WO (1) | WO2010077850A2 (zh) |
Families Citing this family (92)
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 |
US8627017B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
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 |
US8812796B2 (en) * | 2009-06-26 | 2014-08-19 | Microsoft Corporation | Private memory regions and coherence optimizations |
US20100332768A1 (en) * | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Flexible read- and write-monitored and buffered memory blocks |
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 |
US8370577B2 (en) | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
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 |
US8533440B2 (en) | 2009-12-15 | 2013-09-10 | Microsoft Corporation | Accelerating parallel transactions using cache resident transactions |
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 |
US8504777B2 (en) * | 2010-09-21 | 2013-08-06 | Freescale Semiconductor, Inc. | Data processor for processing decorated instructions with cache bypass |
US8504774B2 (en) * | 2010-10-13 | 2013-08-06 | Microsoft Corporation | Dynamic cache configuration using separate read and write caches |
CN102486719B (zh) * | 2010-12-06 | 2015-04-15 | 普天信息技术研究院有限公司 | 智能存储卡及其事务写的方法 |
US9104690B2 (en) * | 2011-01-27 | 2015-08-11 | Micron Technology, Inc. | Transactional memory |
US8615640B2 (en) * | 2011-03-17 | 2013-12-24 | Lsi Corporation | System and method to efficiently schedule and/or commit write data to flash based SSDs attached to an array controller |
GB2491350B (en) | 2011-05-27 | 2020-02-12 | Advanced Risc Mach Ltd | Store-exclusive instruction conflict resolution |
US20140059333A1 (en) * | 2012-02-02 | 2014-02-27 | Martin G. Dixon | Method, apparatus, and system for speculative abort control mechanisms |
US9268596B2 (en) | 2012-02-02 | 2016-02-23 | Intel Corparation | Instruction and logic to test transactional execution status |
WO2013115820A1 (en) * | 2012-02-02 | 2013-08-08 | Intel Corporation | A method, apparatus, and system for transactional speculation control instructions |
US8799588B2 (en) * | 2012-02-08 | 2014-08-05 | International Business Machines Corporation | Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration |
US8984511B2 (en) * | 2012-03-29 | 2015-03-17 | Advanced Micro Devices, Inc. | Visibility ordering in a memory model for a unified computing system |
US9396020B2 (en) | 2012-03-30 | 2016-07-19 | Intel Corporation | Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator |
US9298632B2 (en) * | 2012-06-28 | 2016-03-29 | Intel Corporation | Hybrid cache state and filter tracking of memory operations during a transaction |
CN105760140B (zh) * | 2012-06-29 | 2019-09-13 | 英特尔公司 | 用于测试事务性执行状态的指令和逻辑 |
US9430166B2 (en) * | 2012-08-10 | 2016-08-30 | International Business Machines Corporation | Interaction of transactional storage accesses with other atomic semantics |
US20140129784A1 (en) * | 2012-11-07 | 2014-05-08 | Mellanox Technologies, Ltd. | Methods and systems for polling memory outside a processor thread |
US9411739B2 (en) * | 2012-11-30 | 2016-08-09 | Intel Corporation | System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators |
JP6060276B2 (ja) * | 2012-12-21 | 2017-01-11 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 監視レコード管理方法及びデバイス |
US9251073B2 (en) | 2012-12-31 | 2016-02-02 | Intel Corporation | Update mask for handling interaction between fills and updates |
US9547594B2 (en) * | 2013-03-15 | 2017-01-17 | Intel Corporation | Instructions to mark beginning and end of non transactional code region requiring write back to persistent storage |
US9026698B2 (en) * | 2013-03-15 | 2015-05-05 | Intel Corporation | Apparatus, system and method for providing access to a device function |
WO2014158167A1 (en) * | 2013-03-28 | 2014-10-02 | Hewlett-Packard Development Company, L.P. | Split mode addressing of persistent memory |
BR112015029860B1 (pt) * | 2013-06-27 | 2021-12-07 | Intel Corporation | Dispositivo de processamento, método e mídia legível por máquina |
US9535744B2 (en) | 2013-06-29 | 2017-01-03 | Intel Corporation | Method and apparatus for continued retirement during commit of a speculative region of code |
US9292444B2 (en) | 2013-09-26 | 2016-03-22 | International Business Machines Corporation | Multi-granular cache management in multi-processor computing environments |
US9298623B2 (en) | 2013-09-26 | 2016-03-29 | Globalfoundries Inc. | Identifying high-conflict cache lines in transactional memory computing environments |
US9086974B2 (en) | 2013-09-26 | 2015-07-21 | International Business Machines Corporation | Centralized management of high-contention cache lines in multi-processor computing environments |
US9298626B2 (en) | 2013-09-26 | 2016-03-29 | Globalfoundries Inc. | Managing high-conflict cache lines in transactional memory computing environments |
US9329890B2 (en) | 2013-09-26 | 2016-05-03 | Globalfoundries Inc. | Managing high-coherence-miss cache lines in multi-processor computing environments |
US9524195B2 (en) | 2014-02-27 | 2016-12-20 | International Business Machines Corporation | Adaptive process for data sharing with selection of lock elision and locking |
JP6197585B2 (ja) * | 2013-11-01 | 2017-09-20 | 富士通株式会社 | 情報処理装置、及び、情報処理装置の制御方法 |
US9361041B2 (en) | 2014-02-27 | 2016-06-07 | International Business Machines Corporation | Hint instruction for managing transactional aborts in transactional memory computing environments |
US9411729B2 (en) | 2014-02-27 | 2016-08-09 | International Business Machines Corporation | Salvaging lock elision transactions |
US9329946B2 (en) | 2014-02-27 | 2016-05-03 | International Business Machines Corporation | Salvaging hardware transactions |
US9645879B2 (en) | 2014-02-27 | 2017-05-09 | International Business Machines Corporation | Salvaging hardware transactions with instructions |
US9336097B2 (en) | 2014-02-27 | 2016-05-10 | International Business Machines Corporation | Salvaging hardware transactions |
US20150242216A1 (en) | 2014-02-27 | 2015-08-27 | International Business Machines Corporation | Committing hardware transactions that are about to run out of resource |
US9262206B2 (en) | 2014-02-27 | 2016-02-16 | International Business Machines Corporation | Using the transaction-begin instruction to manage transactional aborts in transactional memory computing environments |
US9575890B2 (en) | 2014-02-27 | 2017-02-21 | International Business Machines Corporation | Supporting atomic accumulation with an addressable accumulator |
US9471371B2 (en) | 2014-02-27 | 2016-10-18 | International Business Machines Corporation | Dynamic prediction of concurrent hardware transactions resource requirements and allocation |
US9442853B2 (en) | 2014-02-27 | 2016-09-13 | International Business Machines Corporation | Salvaging lock elision transactions with instructions to change execution type |
US9311178B2 (en) | 2014-02-27 | 2016-04-12 | International Business Machines Corporation | Salvaging hardware transactions with instructions |
US9430273B2 (en) | 2014-02-27 | 2016-08-30 | International Business Machines Corporation | Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration |
US9442775B2 (en) | 2014-02-27 | 2016-09-13 | International Business Machines Corporation | Salvaging hardware transactions with instructions to transfer transaction execution control |
US9465673B2 (en) | 2014-02-27 | 2016-10-11 | International Business Machines Corporation | Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling |
US9424072B2 (en) | 2014-02-27 | 2016-08-23 | International Business Machines Corporation | Alerting hardware transactions that are about to run out of space |
US9524187B2 (en) | 2014-03-02 | 2016-12-20 | International Business Machines Corporation | Executing instruction with threshold indicating nearing of completion of transaction |
US9817693B2 (en) * | 2014-03-14 | 2017-11-14 | International Business Machines Corporation | Coherence protocol augmentation to indicate transaction status |
CN109240945B (zh) | 2014-03-26 | 2023-06-06 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及处理器 |
US9262343B2 (en) | 2014-03-26 | 2016-02-16 | International Business Machines Corporation | Transactional processing based upon run-time conditions |
US9256553B2 (en) | 2014-03-26 | 2016-02-09 | International Business Machines Corporation | Transactional processing based upon run-time storage values |
US9971627B2 (en) | 2014-03-26 | 2018-05-15 | Intel Corporation | Enabling maximum concurrency in a hybrid transactional memory system |
US20150278123A1 (en) * | 2014-03-28 | 2015-10-01 | Alex Nayshtut | Low-overhead detection of unauthorized memory modification using transactional memory |
US9778949B2 (en) | 2014-05-05 | 2017-10-03 | Google Inc. | Thread waiting in a multithreaded processor architecture |
US9600442B2 (en) * | 2014-07-18 | 2017-03-21 | Intel Corporation | No-locality hint vector memory access processors, methods, systems, and instructions |
US9658963B2 (en) * | 2014-12-23 | 2017-05-23 | Intel Corporation | Speculative reads in buffered memory |
US9507938B2 (en) * | 2014-12-23 | 2016-11-29 | Mcafee, Inc. | Real-time code and data protection via CPU transactional memory support |
US10540524B2 (en) | 2014-12-31 | 2020-01-21 | Mcafee, Llc | Memory access protection using processor transactional memory support |
GB2536871A (en) * | 2015-03-04 | 2016-10-05 | Advanced Risc Mach Ltd | An apparatus and method to generate trace data in response to transactional execution |
US9652168B2 (en) * | 2015-04-10 | 2017-05-16 | International Business Machines Corporation | Adaptive concurrency control using hardware transactional memory and locking mechanism |
CN106919487B (zh) * | 2015-12-25 | 2020-08-28 | 北京忆芯科技有限公司 | NVMe门铃处理方法及其装置 |
US10547680B2 (en) * | 2015-12-29 | 2020-01-28 | Intel Corporation | Systems, methods, and apparatuses for range protection |
US11163682B2 (en) | 2015-12-29 | 2021-11-02 | Intel Corporation | Systems, methods, and apparatuses for distributed consistency memory |
US10095622B2 (en) | 2015-12-29 | 2018-10-09 | Intel Corporation | System, method, and apparatuses for remote monitoring |
CN108595371B (zh) * | 2016-01-20 | 2019-11-19 | 北京中科寒武纪科技有限公司 | 用于向量运算的数据读取、写入及读写调度器及保留站 |
CN105718357B (zh) * | 2016-01-22 | 2018-12-28 | 烽火通信科技股份有限公司 | 一种内存监视的方法 |
CN107710169B (zh) * | 2016-02-19 | 2024-03-26 | 华为技术有限公司 | 一种闪存设备的访问方法和装置 |
US10346091B2 (en) | 2016-03-31 | 2019-07-09 | Intel Corporation | Fabric resiliency support for atomic writes of many store operations to remote nodes |
US20180004681A1 (en) * | 2016-07-02 | 2018-01-04 | Intel Corporation | Systems, Apparatuses, and Methods for Platform Security |
EP3583486A4 (en) * | 2017-02-20 | 2021-01-06 | Intensivate Inc. | SUPER THREAD PROCESSOR |
CN110520845B (zh) * | 2017-04-19 | 2022-06-10 | 华为技术有限公司 | 更新硬件事务内存(htm)用户异常中止元数据的方法及系统 |
CN108062224B (zh) * | 2017-12-29 | 2021-04-23 | 北京奇虎科技有限公司 | 基于文件句柄的数据读写方法、装置及计算设备 |
US11273854B2 (en) | 2018-05-21 | 2022-03-15 | C.D.L. Electric Company, Inc. | User interface for grade crossing gate controller |
US10795828B2 (en) | 2018-08-10 | 2020-10-06 | Micron Technology, Inc. | Data validity tracking in a non-volatile memory |
GB2578600B (en) * | 2018-10-31 | 2021-10-13 | Advanced Risc Mach Ltd | Memory transaction request management |
US11714676B2 (en) * | 2020-01-03 | 2023-08-01 | International Business Machines Corporation | Software-directed value profiling with hardware-based guarded storage facility |
US11753782B2 (en) | 2021-10-11 | 2023-09-12 | C.D.L. Electric Company, Inc. | Quick-replacement gear for grade crossing gate mechanism |
WO2024107364A1 (en) * | 2022-11-14 | 2024-05-23 | Ascenium, Inc. | Parallel processing using hazard detection and mitigation |
KR102579320B1 (ko) * | 2023-04-19 | 2023-09-18 | 메티스엑스 주식회사 | 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI284281B (en) * | 2004-01-21 | 2007-07-21 | Ip First Llc | Mechanism in a microprocessor for executing native instructions directly from memory |
TWI294573B (en) * | 2004-07-15 | 2008-03-11 | Sony Computer Entertainment Inc | Apparatus and method for controlling establishing command order in an out of order dma command queue, and computer readable medium recording with related instructions |
US20080126647A1 (en) * | 2006-11-29 | 2008-05-29 | Cisco Technology, Inc. | Interlocking input/outputs on a virtual logic unit number |
US20080320254A1 (en) * | 2007-06-25 | 2008-12-25 | Sonics, Inc. | Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary |
Family Cites Families (46)
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 | 株式会社日立製作所 | アドレスバス制御装置 |
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 |
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 |
US6862664B2 (en) * | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
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 |
US20050091459A1 (en) | 2003-10-23 | 2005-04-28 | Nhon Quach | Flexible mechanism for enforcing coherency among caching structures |
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 |
WO2005101782A1 (en) * | 2004-04-14 | 2005-10-27 | Telecom Italia S.P.A. | Method and system for handling content delivery in communication networks |
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
JP4431022B2 (ja) | 2004-10-18 | 2010-03-10 | 株式会社日立製作所 | コンピュータシステム及びその制御方法 |
US7337280B2 (en) * | 2005-02-10 | 2008-02-26 | International Business Machines Corporation | Data processing system and method for efficient L3 cache directory management |
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 |
US7568070B2 (en) * | 2005-07-29 | 2009-07-28 | Qualcomm Incorporated | Instruction cache having fixed number of variable length instructions |
US7533215B2 (en) | 2005-09-15 | 2009-05-12 | Intel Corporation | Distributed and packed metadata structure for disk cache |
US8225297B2 (en) | 2005-12-07 | 2012-07-17 | Microsoft Corporation | Cache metadata identifiers for isolation and sharing |
US8001538B2 (en) | 2005-12-07 | 2011-08-16 | Microsoft Corporation | Software accessible cache metadata |
US8683143B2 (en) * | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
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 |
US8924653B2 (en) * | 2006-10-31 | 2014-12-30 | Hewlett-Packard Development Company, L.P. | Transactional cache memory system |
US7949794B2 (en) * | 2006-11-02 | 2011-05-24 | Intel Corporation | PCI express enhancements and extensions |
US7669040B2 (en) * | 2006-12-15 | 2010-02-23 | Sun Microsystems, Inc. | Method and apparatus for executing a long transaction |
US8060482B2 (en) * | 2006-12-28 | 2011-11-15 | Intel Corporation | Efficient and consistent software transactional memory |
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 |
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 |
US8195832B2 (en) | 2007-12-12 | 2012-06-05 | Alcatel Lucent | Facilitating management of layer 2 hardware address table based on packet priority information |
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 |
US8627017B2 (en) * | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
US8370577B2 (en) | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
-
2008
- 2008-12-30 US US12/346,530 patent/US8627017B2/en not_active Expired - Fee Related
-
2009
- 2009-12-15 KR KR1020117007693A patent/KR101394741B1/ko active IP Right Grant
- 2009-12-15 JP JP2011542330A patent/JP5462883B2/ja not_active Expired - Fee Related
- 2009-12-15 WO PCT/US2009/068004 patent/WO2010077850A2/en active Application Filing
- 2009-12-17 TW TW098143376A patent/TWI448897B/zh not_active IP Right Cessation
- 2009-12-25 CN CN2009110002820A patent/CN101814018B/zh not_active Expired - Fee Related
-
2012
- 2012-01-20 US US13/355,302 patent/US8688917B2/en not_active Expired - Fee Related
-
2014
- 2014-01-17 JP JP2014006856A patent/JP6040176B2/ja not_active Expired - Fee Related
-
2016
- 2016-11-07 JP JP2016217481A patent/JP6342970B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI284281B (en) * | 2004-01-21 | 2007-07-21 | Ip First Llc | Mechanism in a microprocessor for executing native instructions directly from memory |
TWI294573B (en) * | 2004-07-15 | 2008-03-11 | Sony Computer Entertainment Inc | Apparatus and method for controlling establishing command order in an out of order dma command queue, and computer readable medium recording with related instructions |
US20080126647A1 (en) * | 2006-11-29 | 2008-05-29 | Cisco Technology, Inc. | Interlocking input/outputs on a virtual logic unit number |
US20080320254A1 (en) * | 2007-06-25 | 2008-12-25 | Sonics, Inc. | Various methods and apparatus to support transactions whose data address sequence within that transaction crosses an interleaved channel address boundary |
Also Published As
Publication number | Publication date |
---|---|
TW201037525A (en) | 2010-10-16 |
WO2010077850A2 (en) | 2010-07-08 |
US20120117334A1 (en) | 2012-05-10 |
US8627017B2 (en) | 2014-01-07 |
CN101814018B (zh) | 2013-11-06 |
JP6040176B2 (ja) | 2016-12-07 |
JP5462883B2 (ja) | 2014-04-02 |
JP6342970B2 (ja) | 2018-06-13 |
JP2014112406A (ja) | 2014-06-19 |
JP2017073146A (ja) | 2017-04-13 |
US8688917B2 (en) | 2014-04-01 |
CN101814018A (zh) | 2010-08-25 |
KR20120008483A (ko) | 2012-01-30 |
JP2012513067A (ja) | 2012-06-07 |
WO2010077850A3 (en) | 2010-08-26 |
US20100169579A1 (en) | 2010-07-01 |
KR101394741B1 (ko) | 2014-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI448897B (zh) | 監視在硬體中之記憶體存取的方法與設備、處理器及其系統 | |
JP5944417B2 (ja) | トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録 | |
JP5860450B2 (ja) | ローカルにバッファリングされたデータをサポートするためのキャッシュコヒーレンスプロトコルの拡張 | |
US8769212B2 (en) | Memory model for hardware attributes within a transactional memory system | |
US8195898B2 (en) | Hybrid transactions for low-overhead speculative parallelization | |
US8364911B2 (en) | Efficient non-transactional write barriers for strong atomicity | |
TWI494770B (zh) | 用以於交易執行期間有效率地處理多個虛擬位址映射的方法、裝置及系統 | |
JP5608738B2 (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 | |
JP2015008008A (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |