TWI397813B - 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 - Google Patents
用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 Download PDFInfo
- Publication number
- TWI397813B TWI397813B TW096123333A TW96123333A TWI397813B TW I397813 B TWI397813 B TW I397813B TW 096123333 A TW096123333 A TW 096123333A TW 96123333 A TW96123333 A TW 96123333A TW I397813 B TWI397813 B TW I397813B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- overflow
- transaction
- overall
- line
- 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
-
- 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
-
- 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
-
- 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/22—Microcontrol or microprogram arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Description
本發明與處理器執行的領域且特別是執行操作群組有關。
在半導體處理及邏輯設計方面的進展,已允許存在於積體電路裝置上的邏輯數量增加。結果是,電腦系統組構已從系統中的單或多個積體電路,演進到存在於各個積體電路上的多核心及多邏輯處理器。處理器或積體電路典型上包含單個處理器晶模,而該處理器晶模可包括任意數量的核心或邏輯處理器。
例如,單一個積體電路可具有一或多個核心。核心一詞,通常意指在積體電路上有能力保持一獨立架構狀態的邏輯,其每一獨立的架構狀態與至少某些專用的執行資源相關。至於另一例,單積體電路或單核心可具有用以執行多軟體執行緒(thread)的多硬體執行緒,其也被稱為多執行緒積體電路或多執行緒核心。多硬體執行緒通常分享公用資料快取記憶體、指令快取記憶體、執行單元、分支預測器、控制邏輯、匯流排介面、及其它處理器資源,同時為每一個邏輯處理器保持獨有的架構狀態。
只要增加積體電路上之核心及邏輯處理器的數量,就能夠執行更多的軟體執行緒。不過,可能同時執行之軟體執行緒的數量增加,會產生該等軟體執行緒間同時共用資料的問題。解決多核心或多邏輯處理器系統中存取共用資料的常見方法之一包含鎖的使用,以保證對共用資料之多存取間的互斥。不過,無止境地增加執行多軟體執行緒的能力,有可能導致錯誤的爭用及執行的序列化。
另一項資料同步技術包括交易式記憶體(TM)的使用。通常,交易的執行包括推測地執行一群複數個微操作、操作、或指令。不過,在先前的硬體式TM系統中,如果交易對於記憶體而言變得太大,即溢位,則該交易通常會被重新開始。在此,花在執行交易直至溢位的時間是潛在的浪費。
在以下的描述中,將提出很多特定的細節,諸如用以支援交易執行之特定硬體的例子,處理器中特定類型的局部/記憶體,以及特定類型的記憶體存取及所在位置等,以便提供對本發明的全盤瞭解。不過,很明顯,對於熟悉此方面技術的人士而言,實用本發明並不需要使用這些特定細節。在其它的例中,已為吾人所熟知的組件或方法,諸如在軟體中交易的編碼、交易的劃界(demarcation)、多核心及多執行緒處理器的特定架構、中斷產生/處理、快取記憶體組織、及微處理器的特定操作細節等,都不詳細描述,以避免對本發明造成不必要的混淆。
本文所描述的方法及裝置係用於延伸及/或虛擬化交易式記憶體(TM),以支援交易之執行期間區域記憶體的溢位。特別是,虛擬化及/或延伸交易式記憶體,主要是參考多核心處理器的電腦系統來討論。不過,用於延伸/虛擬化交易式記憶體的方法及裝置並無制,其可在任何積體電路裝置或系統上實施或與其結合,諸如細胞式電話、個人數位式助理、內嵌式控制器、線動平台、桌上型平台、及伺服器平台、以及與其它資源結合,諸如利用交易式記憶體的硬體/軟體執行緒。
現請參閱圖1,圖中說明多核心處理器100的實施例,其具有延伸交易式記憶體的能力。交易式執行通常包括將複數個指令或操作分類成為一交易、碼的基元區段、碼的關鍵區段。在某些情況中,文字指令的使用,意指係由複數個操作所組成的巨集指令。用以識別交易的方法通常有二。第一例包括在軟體中將交易劃界。在此,某些軟體劃界被包括在碼中,以識別一交易。在另一實施例中,可結合前述的軟體劃界,交易藉由硬體來分類,或由指示交易之開始與交易之結束的指令來組織。
在處理器中,交易可用推測或非推測地來執行。在第二情況中,指令群係以某種型式的鎖來執行,或保證對要被存取之記憶體位置的有效存取。在另一選擇中,交易的推測執行更為常見,交易係被推測地執行,並在該交易結束時被確定。如在本文中所使用的交易的未決定,意指一交易已開始執行,且尚未被確定或中止,即懸而未決。
典型上,在交易的推測執行期間,直至該交易被確定前,對記憶體的更新無法做到總體地可見。當該交易仍在未決期間,從記憶體載入及寫入記憶體的位置被追蹤。在這些記憶體位置的確認成功時,在該交易做到總體可見的期間,該交易被確定並做更新。不過,如果該交易在此未決期間被無效,該交易被重新開始,不做更新的總體可見。
在說明的實施例中,處理器100包括2個核心,即核心101及102;雖然可存在有任何數量的核心。核心通常指的是位於積體電路上之任何有能力保持獨立架構狀態的邏輯,其中每一個獨立保持的架構狀態與至少一個專用的執行資源相關。例如,在圖1中,核心101包括執行單元110,而核心102包括執行單元115。即使執行單元110與115是邏輯地分開描述,但它們可實體地配置成同一個單元的一部分,或緊鄰在一起。不過,例如,在執行單元115上,排程器120無法為核心101執行排程。
相對於核心,硬體執行緒典型上指的是位在積體電路上能夠保持獨立架構狀態的任何邏輯,其中,該獨立保持的架構狀態對執行資源共用存取。如所見,關於某些處理資源被共用而其它則為一架構狀態所專用,硬體執行緒與核心之命名間的界線重疊。然而,核心與硬體執行緒通常被作業系統視為個別的邏輯處理器,每一個邏輯處理器具有執行一個執行緒的能力。因此,處理器(諸如處理器100)具有執行多執行緒的能力,諸如執行緒160、165、170、及175。雖然所說明的每一個核心(諸如核心101)具有執行多軟體執行緒的能力,諸如執行緒160及165,但一核心也可能只有執行單一個執行緒的能力。
在一實施例中,處理器100包括對稱的核心101及102。在此,核心101及102係類似的核心,具有類似的組件及架構。或者,核心101及102可以是具有不同組件及架構的非對稱核心。然而,現在以對稱的核心來描述核心101及102,將討論核心101中的功能方塊,關於核心102則避免重複的討論。須注意,所說明的功能方塊係邏輯功能方塊,其可包括可與其它功能方塊間共用或邊界重疊的邏輯。此外,每一個功能方塊並不需要但有可能以不同的組構互連。例如,提取及解碼方塊140可包括提取及/或預提取單元,解碼單元耦接至該提取單元,且指令快取記憶體耦接在提取單元之前、解碼單元之後、或與提取及解碼單元兩者耦接。
在一實施例中,處理器100包括匯流排介面單元150,用以與外部裝置及較高階的快取記憶體145通信,諸如第二階的快取記憶體,其為核心101與102間所共用。在另一實施例中,核心101與102每一個都包括各自獨立的第二階快取記憶體。
提取、解碼、及分支預測單元140耦接至第二階快取記憶體145。在一例中,核心101包括用以提取指令的提取單元,用以解碼被提取之指令的解碼單元,以及用以儲存被提取之指令、被解碼之指令、或被提取與被解碼之指令之組合的指令快取記憶體或追蹤快取記憶體。在另一實施例中,提取及解碼方塊140包括具有分支預測器及/或分支目標緩衝器的預提取器。此外,唯讀記憶體(諸如微碼ROM 135)也有可能用來儲存較長或較複雜之經解碼的指令。
在一例中,配置器及更名器方塊130包括用以保留資源的配置器,諸如用來儲存指令處理結果的暫存器檔。不過,核心101有可能具有亂序執行的能力,此時,配置器及更名器方塊130也保留其它資源,諸如用來追蹤指令的重排序緩衝器。方塊130也可包括暫存器更名器,用以將程式/指令參考暫存器更名為核心101內部的暫存器。重排序/止用單元125包括諸如上述重排序緩衝器等組件,用以支援亂序執行,及亂序執行過之指令稍後的止用。如例所示,被載入重排序緩衝器中的微操作被執行單元亂序地執行,並接著按照該等微操作進入重排序緩衝器之相同的順序被搬出重排序緩衝器,即止用。
在本實施例中,排程器及暫存器檔方塊120包括用以在執行單元110上排程指令的排程器單元。事實上,指令有可能按照其類型及執行單元110的可用度在執行單元110上被排程。例如,執行單元110具有一可用的浮點執行單元,則浮點指令在執行單元110的埠上被排程。執行單元110也包括相關的暫存器檔,用來儲存資訊指令處理的結果。核心101中可用的例示性執行單元包括浮點執行單元、整數執行單元、跳躍執行單元、載入執行單元、儲存執行單元、及其它習知的執行單元。在一實施例中,執行單元110也包括保留站(reservation station)及/或位址產生單元。
在說明的實施例中,較低階的快取記憶體103被利用做為交易式記憶體,特別是,較低的階快取記憶體103係用來儲存關於元件之最近的使用/操作,諸如運算元。快取記憶體103包括快取記憶體線,諸如線104、105、及106,其也可指的是快取記憶體103內的記憶體位置或區塊。在一實施例中,快取記憶體103被組織成關聯的快取記憶體組;不過,快取記憶體103也可組織成完整的關聯、組關聯、直接映射、或其它已知的快取記憶體組織。
如圖示說明,線104、105、及106包括部或欄,諸如部104a及欄104b。在一實施例中,線、位置、區塊或字元,諸如線104、105、及106的部分104a、105a、及106a能夠儲存多個元件。元件意指通常儲存在記憶體中的任何指令、運算元、資料運算元、變數、或其它邏輯值的群組。例如,快取記憶體線104在部104a中儲存4個元件,包括1個指令及3個運算元。儲存在記憶體線104a中的元件可為包裹或壓縮狀態、以及未壓縮狀態。此外,儲存在快取記憶體103中的元件有可能不與快取記憶體103之線、組、或路徑(ways)的邊界對齊。以下將參考例示性實施例更詳細討論記憶體103。
快取記憶體103以及處理器100中的其它特徵與裝置儲存及/或操作邏輯值。通常,使用邏輯位準、邏輯值、或邏輯上的值也意指1及0,其單純地代表二進位的邏輯狀態。例如,1意指高邏輯位準及0意指低邏輯位準。在電腦系統中也使用其它的值表示法,諸如邏輯值或二進位值的10進位及16進位表示法。例如十進位的值10,在二進位值中以1010表示,在16進位中以字母A表示。
在圖1所說明的實施例中,追蹤對於線104、105、及106的存取以支援交易的執行。諸如欄104b、105b、及106b等存取追蹤欄被用來追蹤對於與其所對應之記憶體線的存取。例如,記憶體線/部104a與對應的追蹤欄104b相關。在此,存取追蹤欄104b與快取記憶體線104a相關並對應,例如追蹤欄104b包括了快取記憶體線104的部分位元。相關可透過實體配置,如圖示說明,或其它相關,諸如以位址來參考記憶體線104a或硬體中的104b或軟體速查表來關連或映射存取追蹤欄104b。事實上,交易存取欄係在硬體、軟體、韌體或以上這些的任意組合中實施。
因此,在交易的執行期間存取線104a時,存取追蹤欄104b追蹤該存取。存取包括操作,諸如讀、寫、儲存、載入、逐出、監聽(snoop)、或其它對記憶體位置之習知的存取。
例如簡化的說明例,假設存取追蹤欄104b、105b、及105b中包括兩個交易位元,即:第一讀追蹤位元及第二寫追蹤位元。在原設狀態中,即第一邏輯值,存取追蹤欄104b、105b、及105b中的第一及第二位元分別代表快取記憶體線104、105、及106在交易的執行期間未被存取,即,在交易的未決定期間。在從快取記憶體線104a,或與快取記憶體線104a相關之系統記憶體位置的載入操作導致從線104a載入時,存取欄104b中的第一讀追蹤位元被設定成第二狀態/值,諸如第二邏輯值,用以代表在交易的執行期間已發生從快取記憶體線104的讀取。同樣地,在寫到快取記憶體線105a時,存取欄105b中的第二寫追蹤位元被設定成第二狀態,以代表在交易的執行期間發生寫到快取記憶體線105。
因此,如果檢查與線104a相關之欄104a中的交易位元,且該交易位元表現原設狀態,則在交易的未決定期間快取記憶體線104未被存取。反之,如果該第一讀取追蹤位元表現第二值,則快取記憶體線104在交易的未決定期間已被前一存取。更明確地,在交易的執行期間發生從線104a的載入,例如以存取欄104b中被設定的第一讀取追蹤位元表示。
在交易的執行期間,存取欄104b、105b、及105b也具有其它用途。例如,交易的確認傳統上以兩種方式完成。第一,如果追蹤到會造成交易放棄的無效存取,則在該無效存取之時放棄該交易,且可能重新開始。另者,在確定前,在該交易結束時完成交易執行期間之線/位置之存取的確認。在此時刻,如果確認成功,或如果該確認不成功而被放棄,則該交易被確定。在這兩種情形中,以存取追蹤欄104b、105b、及105b來識別在交易的執行期間那一條線已被存取很有用處。
例如另一簡化的說明例,假設第一交易正被執行中,且在該第一交易的執行期間發生從線105a的載入。結果是,對應的存取追蹤欄105b指示,在交易的執行期間發生對於線105的存取。由於存取追蹤欄105b表示該線105被第一未決定的交易載入,如果第二交易造成關於線1050的衝突,則根據第二交易對線105的存取,立刻放棄第一或第二交易。
在一實施例中,有對應的欄105b指示線105被第一未決定的交易前一存取,則在第二交易造成關於線105的衝突時產生一中斷。當兩個未決定的交易間發生衝突時,該中斷被原設處置器及/或用於初始化該第一或第二交易之放棄的放棄處置器處置。
交易一旦放棄或確定,在交易之執行期間所設定的交易位元被清除,以確保該交易位元的狀態被重置到原設狀態,以供後續交易期間之稍後的存取追蹤。在另一實施例中,存取追蹤欄也可儲存資源ID,諸如核心ID或執行緒ID,以及交易ID。
關於以上及以下即將參考圖1所提及,利用較低階的快取記憶體103做為交易式記憶體。不過,交易式記憶體並無此限制。事實上,也有可能使用較高階的快取記憶體145做為交易式記憶體。在此,對於快取記憶體145之線的存取被追蹤。如所述,在較高階記憶體(諸如快取記憶體145)中有可能使用諸如執行緒ID或交易ID等識別器,在快取記憶體145中追蹤那一個交易、執行緒或資源實施存取。
可能的交易式記憶體還有另外的例子,與處理元件相關的複數個暫存器,或做為執行空間的資源,或用於儲存變數、指令、或資料的暫存記憶體,都可用做為交易式記憶體。在此例中,記憶體位置104、105、及106係一組暫存器,包括暫存器104、105、及106。交易式記憶體的其它例子包括快取記憶體、複數個暫存器、暫存器檔(register file)、靜態隨機存取記憶體(SRAM)、複數個鎖存器、或其它儲存元件。須注意,當讀取或寫入一記憶體位置時,處理器100或處理器100上的任何處理資源都可定址一系統記憶體位置、虛擬記憶體位址、實體位址、或其它位址。
只要交易不使交易式記憶體(諸如較低階的快取記憶體103)溢位,則各交易間的衝突,由存取欄104b、105b、及105b分別追蹤對於對應之行104、105、及105之存取的操作來偵測。如前所述,使用存取追蹤欄104b、105b、及105b可使交易有效、確定、無效、及/或放棄。不過,當一交易使記憶體103溢位時,回應一溢位事件,溢位模組107被用來支援交易式記憶體103的虛擬化及/或延伸,即,將該交易的狀態儲存到第二記憶體。記憶體103溢位時即放棄該交易,其致使與交易中先前執行之操作相關之執行時間的損失,因此,以虛擬化該交易狀態而繼續執行來取代。
溢位事件可包括記憶體103之任何實際的溢位或記憶體103之溢位的任何預測。在一實施例中,溢位事件在記憶體103中選擇用於逐出或實際逐出在目前未決定之交易的執行期間被前一存取的線。換言之,一操作正在使已被目前未決定之交易存取之記憶體線塡滿的記憶體103溢位。結果是,記憶體103選擇與未決定之交易相關之要被逐出的線。基本上,記憶體103被塡滿,且嘗試藉由逐出與仍未決定之交易相關的線以產生空間。快取記憶體的取代、線的逐出、確定、存取追蹤、交易衝突檢查及交易確認,可用已知或其它可用的技術。
不過,溢位事件並不限於記憶體103的實際溢位。例如,預測一交易對記憶體103而言太大也可構成溢位事件。在此,使用演算法或其它預測方法來決定交易的大小,並在記憶體103被實際溢位前先產生溢位事件。在另一實施例中,溢位事件是一巢套式交易的開始。關於巢套式交易係更複雜,且要取用較多的記憶體來支援,第一階巢套式交易或後續階巢套式交易的偵測可能導致溢位事件。
在一實施例中,溢位邏輯107包括用以儲存溢位位元的溢位儲存元件,諸如暫存器,以及基礎位址儲存元件。雖然是以與快取記憶體控制邏輯同一個功能方塊來說明溢位邏輯107,但用以儲存溢位位元的暫存器及基礎位址暫存器有可能存在於處理器100中的任何位置。例如,處理器100上的每一個核心都包括有溢位暫存器,用以儲存總體溢位表之基礎位址的表示及溢位位元。不過,實施溢位位元與基礎位址並無此限制。事實上,為處理器100上之所有核心或執行緒可見的總體暫存器可包括溢位位元及基礎位址。或者,每一核心或硬體執行緒包括一實體位址暫存器及一包括溢位位元的總體暫存器。如所見,可實施任何數量的組構來為溢位表儲存溢位位元及基礎位址。
溢位位元係根據溢位事件來設定。接續上述的實施例,在記憶體103中選擇在未決定之交易的執行期間已被前一存取而構成溢位事件的線用於逐出,該溢位位元係根據記憶體103中所選擇之用於逐出的線來設定,該用於逐出的線在未決定之交易的執行期間已被前一存取。
在一實施例中,溢位位元係使用硬體來設定,諸如當一線(諸如線104)被選擇用於逐出且在未決定的交易期間已被前一存取時,以邏輯來設定溢位位元。例如,快取記憶體控制器107根據任何數量之已知或其它可用的快取記憶體替換演算法來選擇用於逐出的線104。事實上,快取記憶體替換演算法可能傾向不取代在未決定之交易的執行期間已被前一存取的快取記憶體線(諸如線104)。儘管如此,在選擇用於逐出的線104時,快取記憶體控制器或其它邏輯會檢查存取追蹤欄104b。邏輯根據欄104b中的值來決定快取記憶體線104在未決定之交易的執行期間是否已被存取,如前文中的討論。如果快取記憶體線104在未決定之交易的執行期間已被前一存取,則處理器100中的邏輯設定總體溢位位元。
在另一實施例中,使用軟體或韌體來設定總體溢位位元。在類似的情況中,當決定線104在未決定之交易期間被前一存取時,即產生一中斷。該中斷被位在執行單元110中所執行的使用者處置器及/或其它放棄處置器處置,其設定總體溢位位元。須注意,如果該總體溢位位元目前被設定,即記憶體103已溢位,則該硬體及/或軟體不須再次設定該位元。
如用來說明溢位位元的例子,一旦溢位位元被設定,硬體及/或軟體即追蹤對於快取記憶體線104、105、及106的存取、確認交易、檢查衝突,並執行其它與交易有關的操作,該等操作典型上與記憶體103及利用延伸交易記憶體的存取欄104b、105b、及106b相關。
基礎位址被用來識別虛擬化交易式記憶體的基礎位址。在一實施例中,虛擬化交易式記憶體被儲存在第二記憶體裝置中,其為比記憶體103大的記憶體,諸如較高階的快取記憶體145,或與處理器100相關的系統記憶體裝置。結果是,第二記憶體有能力處置使記憶體103溢位的交易。
在一實施例中,延伸的交易式記憶體意指用以儲存該交易之狀態的總體溢位表。因此,基礎位址代表該總體溢位表的基礎位址,其是用來儲存交易的狀態。總體溢位表類似於參考存取追蹤欄104b、105b、及106b對記憶體103的操作。如說明例,假設線106被選擇用於逐出。不過,存取欄106b表示線106在未決定之交易的執行期間已被前一存取。如上所述,如果總體溢位位元尚未設定,則根據該溢位事件設定該總體溢位位元。
如果總體溢位表未被建立,則為該表配置第二記憶體的量。例如,產生頁錯誤以指示該溢位表的初始頁尚未被配置。接著,作業系統配置第二記憶體的一範圍給該總體溢位表。第二記憶體的範圍可意指總體溢位表的頁。接著,該總體溢位表之基礎位址的表示被儲存在處理器100中。
在逐出線106之前,交易的狀態被儲存在總體溢位表中。在一實施例中,儲存交易的狀態包括將對應於與溢位事件相關之操作及/或線106的登錄列儲存於該總體溢位表中。該登錄列可包括與線106相關之任何位址的組合,諸如實體位址、存取追蹤欄106b的狀態、與線106相關的資料元件、線106的大小、作業系統控制欄、及/或其它欄位。以下將參考圖3-5更詳細討論總體溢位表及第二記憶體。
必然地,當為交易之一部分的指令或操作通過處理器100之管線時,對於交易式記憶體的存取(諸如快取記憶體103)被追蹤。此外,當交易式記憶體被塡滿時,即其溢位時,該交易式記憶體被延伸進入到位在處理器100上或與處理器100相關/耦接的其它記憶體。此外,整個處理器100的暫存器都有可能儲存用以表示該交易式記憶體已被溢位的溢位旗標,以及用以識別該延伸之交易式記憶體之基礎位址的基礎位址。
雖然已特別地參考圖1所示的例示性多核架構討論了交易式記憶體,但延伸及/或虛擬化交易式記憶體,可在用來對資料執行指令/操作的任何處理系統中實施。例如,能夠平行執行多交易的內嵌式處理器,即有可能用來實施虛擬化的交易式記憶體。
現回到圖2a,圖中說明多核心處理器200的實施例。在此,處理器200包括核心205-208等4個核心,但也可使用其它數量的核心。在一實施例中,記憶體210係快取記憶體。在此,圖示說明的記憶體210係在核心205-208之功能方塊的外部。在一實施例中,記憶體210是共用快取記憶體,諸如第二階或其它較高階的快取記憶體。不過,在一實施例中,功能方塊205-208代表核心205-208的架構狀態,且記憶體210是與該等核心其中之一(諸如核心205)或核心205-208所指定/相關的第一階或較低階的快取記憶體。因此,如所說明,記憶體210可以是核心內的較低階快取記憶體,諸如圖1中所說明的記憶體103,較高階的快取記憶體,諸如圖1中所說明的快取記憶體145,或其它儲存元件,諸如以上所討論之暫存器之集合的例子。
每一個核心包括有暫存器,諸如暫存器230、235、240、及245。在一實施例中,暫存器230、235、240、及245係特定機器暫存器(MSR)。然而,暫存器230、235、240、及245可以是處理器200中的任何暫存器,諸如每一核心之架構狀態暫存器組中部分的暫存器。
每一個暫存器包括一交易溢位旗標:旗標231、236、241、及246。如上所述,在有溢位事件時,交易溢位旗標被設定。溢位旗標係經由硬體、軟體、韌體或其任意組合來設定。在一實施例中,溢位旗標係一位元,其有可能具有兩個邏輯狀態。不過,溢位旗標可以是任何數量的位元,或當記憶體溢位時用以識別的其它狀態表示。
例如,如果在核心205上所執行做為交易之一部分的操作使快取記憶體210溢位,則硬體(諸如邏輯)或軟體(諸如使用者處置器)被引動以處置溢位中斷,設定旗標231。在第一邏輯狀態(其為原設狀態)中,核心205使用記憶體210執行交易。一般使用快取記憶體210實施逐出、存取追蹤、衝突檢查、及確認,其包括方塊215、220、及225,以及對應的欄216、221、及226。不過,當旗標231被設定為第二狀態時,快取記憶體210被延伸。根據一旗標的被設定,諸如旗標231,其餘的旗標236、241、及246也跟著被設定。
例如,根據一溢位位元被設定,在核心205-208間傳送的協定訊息設定其它旗標。例如,假設溢位旗標231係根據發生於記憶體210中的溢位事件而被設定,在本例中,記憶體210為核心205中的第一階資料快取記憶體。在一實施例中,在設定旗標231之後,在互相連接核心205-208的匯流排上傳送廣播訊息用以設定旗標236、241、及246。在另一實施例中,核心205-208以點對點、環狀、或其它形式互相連接,來自核心205的訊息被送往每一個核心,或逐一核心向前傳送,以設定旗標236、241、及246。須注意,類似的訊息傳送等可在多處理器的形式中實施,以確保多個實體處理器間各旗標被設定,如下文中的討論。當核心205-208中的旗標被設定時,後續的交易執行被告知,以便為存取追蹤、衝突檢查、及/或確認檢查虛擬/延伸記憶體。
先前的討論包括一包括有多核心的單實體處理器200。不過,當核心205-208係分散於系統中之各分離的實體處理器時,也可使用類似的組構、協定、硬體、及軟體。在此例中,每一處理器具有一溢位暫存器,諸如具有各自之旗標的暫存器230、235、240、及245。一旦設定一個溢位旗標,其餘的溢位旗標也可在該等處理器間的互連上,經由協定通信之類似的方法來設定。在此,在廣播匯流排上或點對點互連的通信交換來傳遞被設定為代表溢位事件發生之值的溢位旗標值。
接下來請參閱圖2b,圖中說明具有溢位旗標之多核心處理器的另一實施例。相對於圖2a,在處理器200中只存在單個溢位暫存器250及溢位旗標251,以取代每一核心205-208都包括有一溢位暫存器及溢位旗標。因此,在溢位事件時,旗標251被設定,且可被每一個核心205-208總體地可見。因此,如果旗標251被設定,則使用總體溢位表實施存取追蹤、確認、衝突檢查、及其它的交易執行操作。
如說明例,假設在交易的執行期間記憶體210已溢位,則結果是,暫存器250中的溢位位元251被設定。此外,後續的操作使用虛擬化交易式記憶體來追蹤。如果為了衝突或用於在確定一交易前之確認而僅檢查記憶體210,則追蹤溢位記憶體將不會發現衝突/存取。不過,如果是利用溢位記憶體來實施衝突檢查及確認,則該衝突可被偵測到,且該交易被放棄,取代對一衝突之交易的確定。
如前所述,在設定目前未被設定的溢位旗標時,如果尚未配置空間,則總體溢位表所需的空間被請求/配置。反之,當一交易被確定或放棄時,總體溢位表中對應於該交易的登錄列被釋放。在一實施例中,釋放一登錄列包括清除該登錄列中的存取追蹤狀態或其它欄位。在另一實施例中,釋放一登錄列包括從該總體溢位表中刪除該登錄列。當一溢位表中的最後登錄列被釋放時,總體溢位位元被清除而回到原設狀態。基本上,釋放總體溢位表中的最後登錄列,此代表任何未決定的交易都能裝入快取記憶體210中,且溢位記憶體目前未用於交易的執行。圖3-5更詳細討論溢位記憶體,且特別是總體溢位表。
現回到圖3,圖中說明包括多核心之處理器耦接至較高階記憶體的實施例。記憶體310包括線315、320、及325。存取追蹤欄316、321、及326分別對應於線315、320、及325。每一個存取欄用來追蹤對於記憶體310中其所對應之線的存取。處理器300也包括核心305-308。須注意,記憶體310可以是核心305-308之任何核心中的低階快取記憶體,或為核心305-308所共用的較高階快取記憶體,或任何其它已知或用其它方式在處理器中可被利用做為交易式記憶體的可用記憶體。每一核心包括用以儲存總體溢位表之基礎位址的暫存器,諸如暫存器330、335、340、及345。當使用記憶體310執行一交易時,當未配置總體溢位表時,基礎位址331、336、341、及346可能未儲存總體溢位表的基礎位址。
不過,當記憶體310溢位時,溢位表355被配置。在一實施例中,當溢位表355尚未配置時,根據使記憶體310溢位的操作而產生中斷或頁錯誤。使用者處置器或核心級(kernel-level)的軟體根據該中斷或頁錯誤將較高階記憶體350的範圍配置給溢位表355。如其它例,總體溢位表係根據被設定的溢位旗標而配置。在此,當溢位旗標被設定時,即嘗試對總體溢位表的寫入。如果寫操作失敗,則在該總體溢位表中配置新頁。
較高階記憶體350可以是較高階的快取記憶體、僅與處理器300相關的記憶體、為包括處理器300之系統所共用的系統記憶體、或位階高於記憶體310的任何其它記憶體。配置給溢位表355之記憶體350中的第一個範圍稱為溢位表355的第一頁。以下將參考圖5更詳細討論多頁溢位表。
在將空間配置給溢位表355之時,或在將記憶體配置給溢位表355之後,溢位表355的基礎位址被寫入暫存器330、335、340、及345。在一實施例中,以核心級的碼將總體溢位表的基礎位址寫入基礎位址暫存器330、335、340、及345其中之一的每一個。或者,以硬體、軟體、或韌體將總體溢位表的基礎位址寫入基礎位址暫存器330、335、340、及345其中之一,且該基礎位址經由核心305-308間的訊息傳送協定發佈給其餘的基礎位址暫存器。
如圖示說明,溢位表355包括登錄列360、365、及370。登錄列360、365、及370包括位址欄361、366、及371,以及交易狀態資訊(T.S.I.)欄362、367、及372。如溢位表355之操作的例示性簡化例,假設來自第一交易的操作具有被存取的線315、320、及325,以對應之存取欄316、321、及326的狀態來表示。在第一交易的未決定期間,線315被選擇用於逐出。由於存取追蹤欄316的狀態代表該線315在第一交易期間已被前一存取,且該交易仍未決定,於是發生溢位事件。如上所述,溢位旗標/位元可能被設定。此外,如果未配置有頁或需要另一頁,則將記憶體350中的頁被配置給溢位表355。
如果不需要配置頁,則總體溢位表之目前的基礎位址係由暫存器330、335、340、或345儲存。或者,在初始配置時,溢位表355的基礎位址被寫入/發佈給暫存器330、335、340、或345。根據溢位事件,登錄列360被寫入溢位表355。登錄列360包括位址欄316,用以儲存與線315相關的位址表示。
在一實施例中,與線315相關的位址係元件儲存在線315中之位置的實體位址。例如,該實體位址係元件在主儲存裝置(諸如系統記憶體)中之儲存位置的實體位址之表示。藉由在溢位表355中儲存實體位址,即有可能偵測核心305-308之所有存取間的衝突。
反之,當虛擬記憶體位址被儲存到位址欄316、366、及367時,具有不同虛擬記憶體基礎位址及偏移的處理器或核心具有不同之記憶體的邏輯視野。結果是,對於同一實體記憶體位置的存取有可能不會被偵測為一衝突,因為各核心間觀看實體記憶體位置的虛擬記憶體位址有可能不同。不過,如果虛擬記憶體位址是被儲存在溢位表355中,結合OS控制欄中的上下文識別器,即有可能發現總體衝突。
與線315相關之位址表示的另一實施例包括部分或整個虛擬記憶體位址、快取記憶體線位址、或其它實體位址。位址的表示包括有10進位、16進位、2進位、雜湊值(hash value)、或位址之所有或任何部分的其它表示/調處(manipulation)。在一實施例中,標籤值(其為位址的一部分)是一位址的表示。
除了位址欄361之外,登錄列360還包括交易狀態資訊362。在一實施例中,交易狀態資訊欄362用於儲存存取追蹤欄316的狀態。例如,如果存取追蹤欄316包括交易寫入位元及交易讀取位元等兩個位元分別追蹤對於線315的寫入及讀取,則交易寫入位元與交易讀取位元的邏輯狀態被儲存到交易狀態資訊欄362內。不過,與交易相關的任何資訊都可儲存在交易狀態資訊362內。以下將參考圖4a-4b討論溢位表355及有可能儲存在溢位表355中的其它欄位。
圖4a說明總體溢位表的實施例。總體溢位表400包括登錄列405、410、及415,其對應於交易執行期間具有被溢位之記憶體的操作。例如,在執行中之交易中的一操作使記憶體溢位。登錄列405被寫入總體溢位表400。登錄列405包括實體位址欄406。在一實施例中,實體位址欄406用來儲存與記憶體中之線相關的實體位址,其供正在使該記憶體溢位的操作參考。
如說明例,假設正被執行的第一操作係為交易的一部分,參考具有實體位址ABCD的系統記憶體位置。根據該操作,一快取記憶體控制器選擇被該實體位址之一部分ABC映射的快取記憶體線,成為用於逐出的快取記憶體線,導致一溢位事件。須注意,ABC的映射也可包括變換成與位址ABC相關的虛擬記憶體位址。由於發生溢位事件,與操作及/或該快取記憶體線相關的登錄列405被寫入溢位表400。在此例中,登錄列405的實體位址欄406中包括實體位址ABCD的表示。由於快取記憶體的組織有很多,諸如直接映射及設定相關的組織,因此,將多個系統記憶體位置映射至單一快取記憶體線或一組快取記憶體線,該快取記憶體線位址有可能參考複數個系統記憶體位置,諸如ABCA、ABCB、ABCC、ABCE等,結果是,經由將該實體位址ABCD或這些位址的某些表示儲存到實體位址406中,即有可能較容易偵測到交易衝突。
除了實體位址欄406之外,其它的欄還包括資料欄407、交易狀態欄408、及作業系統控制欄409。資料欄407用以儲存元件,諸如指令、運算元、資料、或與使記憶體溢位之操作相關的其它邏輯資訊。須注意,每一記憶體線具有儲存多個資料元件、指令、或其它邏輯資訊的能力。在一實施例中,資料欄407用以儲存資料元件或要被逐出之記憶體線中的元件。在此,資料欄407為選用。例如,在溢位事件時,元件不是儲存在登錄列405中,除非該被逐出的記憶體線是在修改狀態,或其它的快取記憶體同調(coherency)狀態。除了指令、運算元、資料元件、及其它邏輯資訊之外,資料欄407也可包括其它資訊,諸如記憶體線的大小。
交易狀態欄408用以儲存與使一交易式記憶體溢位之操作相關的交易狀態資訊。在一實施例中,快取記憶體線的附加位元係存取追蹤欄,用於儲存與該快取記憶體線之存取有關的交易狀態資訊。在此,附加位元的邏輯狀態被儲存在交易狀態欄408中。基本上,被逐出的記憶體線被虛擬化,並連同實體位址及交易狀態資訊儲存在較高階的記憶體中。
此外,登錄列405包括作業系統控制欄409。在一實施例中,作業系統控制欄409係用於追蹤執行上下文。例如,作業系統控制欄409係一64位元欄,用以儲存用於追蹤與登錄列405相關之執行上下文的上下文ID表示。諸如登錄列410及415等多個登錄列包括類似的欄,諸如實體位址欄411及416、資料欄412及417、交易狀態欄413及418、以及作業系統欄414及419。
接下來請參閱圖4b,圖中顯示儲存交易狀態資訊之溢位表的特定說明例。溢位表400包括與參考圖4a所討論之類似的欄。反之,登錄列405、410、及415包括交易讀取(Tr)欄451、456、及461,以及交易寫入(Tw)欄452、457、及462。在一實施例中,Tr欄451、456、461與Tw欄452、457、及462分別用於儲存讀取位元及寫入位元的狀態。在一例中,讀取位元與寫入位元分別追蹤對於相關快取記憶體線的讀取與寫入。在寫入登錄列405使表400溢位時,讀取位元的狀態被儲存到Tr欄451中,以及寫入位元的狀態被儲存到Tw欄452中。結果是,藉由在Tr及Tw欄中指示那些登錄列在交易的未決定期間曾被存取,以將交易的狀態儲存到總體溢位表400中。
現回到圖5,圖中說明多頁溢位表的實施例。在此,儲存在記憶體500中的溢位表505包括有多頁,諸如頁510、515、及520。在一實施例中,處理器中的暫存器儲存第一頁510的基礎位址。在寫入到表505時,偏移、基礎位址、實體位址、虛擬位址、及這些位址的組合,都參考表505內的位置。
在溢位表505中,頁510、515、及520可連續,但並非必須連續。事實上,在一實施例中,頁510、515、及520係頁的鏈結表列。在此,次一頁515的基礎位址儲存在前一頁(諸如頁510)的登錄列(諸如登錄列511)中。
一開始,溢位表505中可能不存在有多頁。例如,當無溢位發生時,可能沒有空間配置給溢位表505。在另一記憶體溢位時,圖中未顯示,則頁510被配置給溢位表505。頁510中的登錄列被寫成在溢位狀態中繼續執行交易。
在一實施例中,當頁510被塡滿時,頁510中沒有更多的空間,嘗識寫入溢位表505導致頁錯誤。在此,另一或次一頁515被配置。先前對登錄列之寫入的嘗識,經由將該登錄列寫入頁515以完成。此外,頁515的基礎位址被儲存在頁510中的欄511中,以使溢位表505形成多頁的鏈結表列。同樣地,當頁520被配置時,將頁520的基礎位址儲存到頁515的欄516中。
接下來請參考圖6,圖中說明有能力虛擬化交易式記憶體之系統的實施例。微處理器600包括交易式記憶體610,其為快取記憶體。交易式記憶體610的一實施例係在核心630中的第一階快取記憶體,類似圖1中說明的快取記憶體103。類似地,交易式記憶體610可以是核心635中的低階快取記憶體。在另一選擇中,快取記憶體610係較高階的快取記憶體,或是處理器600中之其它可用的記憶體段。快取記憶體610包括線615、620、及625。與快取記憶體線615、620、及625相關的附加欄為交易讀取(Tr)欄616、621、及626,以及交易寫入(Tw)欄617、622、及627。例如,Tr欄616及Tw欄617對應於快取記憶體線615,且被用來追蹤對於快取記憶體線615的存取。
在一實施例中,Tr欄616及Tw欄617每一個係快取記憶體線615中的單個位元,藉由預設,Tr欄616及Tw欄617被設定為原設值,諸如邏輯1。在未決定之交易的執行期間,在從線615讀取或載入時,Tr欄616被設定成第二值,諸如邏輯0,用以表示在未決定之交易的執行期間發生讀取/載入。相應地,如果在未決定的交易期間發生寫入或儲存到線615,則Tw欄617被設定成第二值,用以表示在未決定之交易的執行期間發生寫入或儲存。在放棄或確定一交易時,與要被確定或放棄之該交易相關的所有Tr欄及Tw欄都被重置成原設狀態,以便能夠追蹤對於對應之快取記憶體線的存取。
微處理器600也包括用以執行交易的核心630及核心635。核心630包括具有溢位旗標632及基礎位址633的暫存器631。此外,在TM 610係在核心630中的實施例中,TM 610為第一階的快取記憶體或核心630中其它可用的儲存區域。同樣地,如前所述,核心635包括溢位旗標637、基礎位址638、及可能的TM 610。雖然在圖6中說明的暫存器631及635係分離的暫存器,但也可使用其它的組構來儲存溢位旗標及基礎位址。例如,以微處理器600上的單一暫存器來儲存溢位旗標及基礎位址,且核心630及635總體地可見該暫存器。或者,微處理器400或核心630及635上獨立的暫存器,包括獨立的一或多個溢位暫存器及獨立的一或多個基礎位址暫存器。
初始的交易執行係利用交易式記憶體610來執行交易。存取的追蹤、衝突檢查、確認、及其它的交易執行技術,係利用Tr及Tw欄來實施。不過,在交易式記憶體610溢位時,交易式記憶體610被延伸進入記憶體650。如圖示說明,記憶體650係系統記憶體,可供處理器600專用,或在系統中共用。不過,記憶體650也可以是處理器600上的記憶體,諸如前所述之第二階的快取記憶體。在此,儲存在記憶體650中的溢位表655係用來延伸交易式記憶體610。延伸進入較高階的記憶體也可能意指將交易式記憶體虛擬化或延伸進入虛擬記憶體。基礎位址欄633及638係用以儲存總體溢位表655的基礎位址於系統記憶體650中。在一實施例中,溢位表655係多頁的溢位表,前一頁(諸如頁660)將溢位表655之次一頁(即頁665)的次一個基礎位址儲存於欄(即欄661)中。藉由儲存次一頁的位址於前一頁中,即可建立起記憶體650中之頁的鏈結表列,以形成多頁的溢位表655。
討論以下的例子用以說明系統將交易式記憶體虛擬化之實施例的操作。第一交易從線615載入,從線625載入,實施計算的操作,並將結果寫回線620,並接著實施在嘗試確認/確定之前的其它各種操作。在從線615載入時,Tr欄616的邏輯值從原設的邏輯狀態1被設定為0,以代表在第一交易的執行期間發生從線615的載入,該交易仍為未決定。同樣地,Tr欄626的邏輯值被設定為0,以代表從線625載入。當發生對於線620的寫入時,Tw欄622被設定成邏輯0,以代表在該第一交易的未決定期間發生對於線620的寫入。
現在假設第二交易,包括一未得到快取記憶體線615的操作,並經由替換演算法,諸如最近使用的演算法,快取記憶體線615被選擇用於逐出,而該第一交易仍在未決定中。一快取記憶體控制器或其它邏輯(圖中未說明)偵測導致溢位事件之線615的逐出,如Tr欄616被設定成邏輯值0,以代表在仍未決定之第一交易的執行期間線615被讀取。在另一實施例中,當快取記憶體線615因Tr欄616被設定成邏輯值0而被選擇用於逐出時,一中斷被產生。接著,藉由處置器根據該中斷的處置,溢位旗標632被設定。核心630與636間的通信協定被用來設定溢位旗標637,因此,兩個核心都被通知有溢位事件發生,且交易式記憶體610將被虛擬化。
在逐出快取記憶體線615之前,交易式記憶體610被延伸進入記憶體650。在此,交易狀態資訊被儲存於溢位表655中。一開始,如果未配置溢位表655,則會產生頁錯誤、中斷、或對核心級程式的其它通信,以請求配置溢位表655。接著,在記憶體650中配置溢位表655的頁660。溢位表655的基礎位址,即頁660,被寫入基礎位址欄633與638。須注意,如上所述,基礎位址可寫入一個核心,諸如核心635,並透過發訊協定,溢位表655的基礎位址可被寫入其它的基礎位址欄633。
如果溢位表655的頁660已被配置,一登錄列被寫入頁660。在一實施例中,該登錄列包括與儲存在線615中之該元件相關之實體位址的表示。也可說,該實體位址也與快取記憶體線615相關,且該操作使交易式記憶體610溢位。該登錄列也包括交易狀態資訊。在此,該登錄列包括Tr欄616及Tw欄617的目前狀態,其分別為邏輯0及1。
在該登錄列中另一可能的欄包括用以將運算元、指令、或其它資訊儲存於快取記憶體線615中的元件欄,以及用於儲存OS控制資訊的操作系統控制欄,諸如上下文識別器。根據快取記憶體線615的快取同調狀態,可選擇性地使用元件欄及/或元件大小欄。例如,如果快取記憶體線在MESI協定中是處於修改狀態,則元件被儲存在該登錄列中。或者,如果該元件是在排除、共用、或無效的狀態中,則元件不儲存在該登錄列中。
假設由於頁660已被登錄列填滿,致使登錄列寫入頁660中造成頁錯誤,則向諸如作業系統的核心級程式作出請求以產生另一頁。另一頁665被配置給溢位表655。在前一頁660的欄661中儲存頁665的基礎位址,以構成頁的鏈結表列。接著,該登錄列被寫入新加的頁667。
在另一實施例中,與第一交易相關的其它登錄列(諸如與從線625載入及寫入線620無關的登錄列),根據溢位而寫入溢位表655,以虛擬化整個第一交易。不過,並不需要將所有被交易存取的線都複製到溢位表中。事實上,存取追蹤、確認、衝突檢查、及其它的交易執行技術,都可在交易式記憶體610及記憶體650中實施。
例如,如果第二交易寫入與目前儲存在線625中之元件所在的同一實體記憶體位置,由於Tr 626表示第一交易從線625載入,因此可偵測到第一與第二交易間的衝突。結果是中斷被產生,且使用者處置器/放棄處置器啓始第一或第二交易的放棄。此外,如果第三交易被寫入該實體位址,其為與線615相關之頁660中登錄列的一部分。該溢位表被用來偵測該等存取間的衝突,並啓始類似的中斷/放棄處置器常式。
如果在第一交易的執行期間未偵測到無效的存取/衝突,或確認成功,則第一交易被確定。溢位表655中與第一交易相關的所有登錄列都被釋放。在此,釋放一登錄列包括從溢位表655刪除登錄列。或者,釋放一登錄列包括重置該登錄列中的Tr欄及Tw欄。當溢位表655中的最後一個登錄列被釋放時,溢位旗標632與637被重置到原設狀態,指示交易式記憶體610目前未被溢位。溢位表655可選擇性地去配置,以便有效率地使用記憶體650。
現回到圖7,圖中說明用以虛擬化交易式記憶體之方法的流程圖的實施例。在流程705中,與執行做為交易中之一部分之操作相關的溢位事件被偵測到。該操作參考交易式記憶體中的記憶體線。在一實施例中,該記憶體係為實體處理器上之多核心中之一核心中的低階資料快取記憶體。在此,第一核心包括該交易式記憶體,而其它核心則藉由監聽/請求儲存在該低階快取記憶體中的元件以共同存取該記憶體。或者,該交易式記憶體係為第二階或較高階的快取記憶體,在複數個核心間直接共用。
一位址參考一記憶體線包括經由轉換、調處、或其它計算以參考與該記憶體線相關的位址而參考到一位址。例如,當被轉換時,該操作參考一參考系統記憶體中之實體位置的虛擬記憶體位址。通常快取記憶體被一位址的一部分或標籤值編索引。因此,索引快取記憶體之共用線之位址的標籤值被虛擬記憶體位址參考,亦即被轉換及/或調處成為標籤值。
在一實施例中,如果記憶體中的線被未決定的交易前一存取,則溢位事件包括在被該操作參考的記憶體中,逐出或選擇用於逐出的線。或者,對於溢位或造成溢位之事件的任何預測,也都可考慮成溢位事件。
在流程710中,當該記憶體被溢位時,則根據該溢位事件設定溢位位元/旗標。在暫存器中的單一個溢位位元可被所有核心或處理器總體地看見,以確保每一個核心都知道該記憶體已溢位,且已被虛擬化。或者,每一核心或處理器包括有溢位位元,其是經由發訊協定設定,以通知溢位及虛擬化的每一個處理器。
如果該溢位位元被設定,則該記憶體被虛擬化。在一實施例中,虛擬化一記憶體包括儲存與該記憶體線相關的交易狀態資訊於總體溢位表中。基本上,涉及記憶體溢位之記憶體之線的表示被虛擬化、延伸、及/或部分地複製到較高階的記憶體中。在一實施例中,存取追蹤欄的狀態及與被操作參考之記憶體之線相關的實體位址,被儲存在較高階記憶體中的總體溢位表中。較高階記憶體中的登錄列被以相同的方法利用,如記憶體被追蹤存取、偵測衝突、實施交易確認等。
現請參考圖8,圖中顯示用以系統虛擬化交易式記憶體之流程圖的說明實施例。在流程805中,交易被執行。交易包括分類複數個操作或指令。如前所述,交易在軟體中被硬體或該兩者的組合區劃。該等操作通常是參考一虛擬記憶體位址,當其被轉換時,參考系統記憶體中的直線及/或實體位址。在交易的執行期間,在處理器或核心間被共用的交易式記憶體(諸如快取記憶體)被用來追蹤存取、偵測衝突、實施確認等。在一實施例中,每一個快取記憶體線對應於一存取欄,其被用來實施上述的操作。
在流程810中,在快取記憶體中選擇要被逐出的快取記憶體線。在此,另一交易或操作嘗試存取一記憶體位置,導致選擇要被逐出的快取記憶體線。任何習知或其它可用的快取記憶體替換演算法都可被快取記憶體控制器或其它邏輯用來選擇用於逐出的線。
如果決定流程815,則接著決定該被選擇的快取記憶體線在交易的未決定期間是否被前一存取。在此,該存取追蹤欄被檢查,以決定是否發生對於該被選擇之快取記憶體線的存取。如果無存取被追蹤,則該快取記憶體在流程820被逐出。如果該逐出是交易內之操作的結果,則該逐出/存取可能被追蹤。不過,如果在未決定之交易的執行期間一存取被追蹤,則在流程825決定總體溢位位元目前是否被設定。
在流程830中,如果總體溢位位元目前未被設定,則設定該總體溢位位元,因為逐出在未決定之交易的執行期間被存取的快取記憶體線而發生該快取記憶體的溢位。須注意,在另一實施中,流程825可在流程815、820、及830之前實施,且如果指示快取記憶體已被溢位的總體溢位位元目前已被設定,則可跳過流程815、820、及830。基本上,在該另一實施中,當該溢位位元已表示該快取記憶體被溢位,則不需要偵測溢位事件。
現回應到說明的流程圖,不過,如果該總體溢位位元被設定,則在流程835決定總體溢位表的第一頁是否被配置。在一實施例中,決定總體溢位表之第一頁是否被配置包括與核心級程式通信,以決定該頁是否被配置。如果總體溢位表未被配置,則在流程840中配置第一頁。在此,請求作業系統配置記憶體頁導致總體溢位表的配置。在另一實施例中,流程855-870被用來決定第一頁是否被配置並配置該第一頁,以下將更詳細討論。本實施例包括嘗試使用基礎位址對總體溢位表的寫入,如果該總體溢位表未被配置,則該寫入會造成頁錯誤,並接著根據該頁錯誤配置該頁。另一方法是在配置該溢位表的初始頁時,該溢位表的基礎位址被寫入執行該交易之處理器/核心的暫存器中。結果是,後續的寫操作可參考一偏移,或其它參考用於登錄列之正確實體記憶體位置的位址,該位址與基礎位址結合寫入該暫存器。
在流程850中,與登錄列相關的快取記憶體線被寫入該總體溢位表中。如前所述,該總體溢位表可能包括以下欄位的組合:位址;元件;快取記憶體線的大小;交易狀態資訊;及操作系統控制欄。
在流程855中,其決定在寫操作時是否發生頁錯誤。如前所述,頁錯誤可能是無溢位表之初始配置或溢位表目前已滿的結果。如果該寫操作成功,則回到流程805繼續正規的執行、確認、存取追蹤、確定、放棄等。不過,如果產生頁錯誤指示該溢位表中需要更多空間,則在流程860中為該總體溢位表配置另一頁。在流程870中,該另一頁的基礎位址被寫入前一頁。此形成鏈結表列式的多頁表。接著,經由將該登錄列寫入新配置的另一頁以完成該意欲的寫操作。
如以上說明,較小較不複雜的交易可獲得到使用局部交易式記憶體在硬體中執行交易的優點。此外,隨著要被執行之交易之數量及這些交易的複雜度增加,該交易式記憶體被虛擬化,以在局布共用的交易式記憶體溢位時支援持續的執行。使用總體溢位表完成交易的執行、衝突檢查、確認、及確定,直至該交易式記憶體不再被溢位為止,以取代放棄交易及浪費執行時間。總體溢位表有可能儲存實體位址,以確保可偵測到具有不同虛擬記憶體之視野之上下文間的衝突。
上述的方法、軟體、韌體或碼可經由儲存在可由處理元件執行之機器可存取或機器可讀取媒體上的指令或碼來實施。機器可存取/可讀取媒體包括任何機制,其提供(即儲存及/或傳送)可被機器讀取之型式的資訊,諸如可被電腦或電子系統讀取。例如,機器可存取媒體包括隨機存取記憶體(RAM)、諸如靜態RAM(SRAM)或動態樣RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電、光、聲或其它型式的傳播信號(例如載波、紅外線信號、數位信號)等。
在以上的說明書中,已參考特定的例示性實施例詳細描述。不過,很明顯,其可做各種的修改及改變,不會偏離所附申請專利範圍中所提出之發明之較廣義的精神與範圍。因此,本說明書及圖示可視為意在說明而非意在限制。此外,實施例的前述使用及其它例示性的語言並不必然為相同的實施例或相同的例子,而可視為不同且有區別實施例,以及潛在上相同的實施例。
100...多核心處理器
101,102...核心
110,115...執行單元
120,121...排程器
160,165,170,175...執行緒
140,141...提取解碼方塊
150...匯流排介面單元
145...較高階的快取記憶體
135...微碼ROM
130,131...配置器更名器方塊
125,126...重排序/止用單元
103,108...較低階的快取記憶體
104,105,106...快取記憶體線
104a,105a,106a...記憶體線
104b,105b,106b...存取追蹤欄
107,109...溢位模組
136...微碼唯讀記憶體
200...多核心處理器
205-208...核心
210...記憶體
230,235,240,245...暫存器
231,236,241,246...旗標
250...溢位暫存器
251...溢位旗標
310...記憶體
315,320,325...記憶體線
316,321,326...存取追蹤欄
305-308...核心
330,335,340,345...基礎位址暫存器
331,336,341,346...基礎位址
355...溢位表
350...較高階記憶體
360,365,370...登錄列
361,366,371...位址欄
362,367,372...交易狀態資訊欄
400...總體溢位表
405,410,415...登錄列
406...實體位址欄
407...資料欄
408...交易狀態欄
409...作業系統控制欄
411,416...實體位址欄
412,417...資料欄
413,418...交易狀態欄
414,419...作業系統欄
451,456,461...交易讀取(Tr)欄
452,457,462...交易寫入(Tw)欄
500...記憶體
505...溢位表
510,515,520...頁
600...微處理器
610...交易式記憶體
630...核心
635...核心
615,620,625...記憶體線
615,620,625...快取記憶體線
616,621,626...交易讀取欄
617,622,627...交易寫入欄
632...溢位旗標
633...基礎位址
631...暫存器
637...溢位旗標
638...基礎位址
650...記憶體
655...溢位表
661...欄
665...頁
660...頁
圖1說明的多核心處理器實施例具有延伸交易式記憶體的能力。
圖2a說明的多核心處理器實施例包括有用於每一核心的暫存器,用以儲存溢位旗標。
圖2b說明的多核心處理器實施例包括有總體暫存器,用以儲存溢位旗標。
圖3說明的多核心處理器實施例包括有用於每一核心的基礎位址暫存器,用以儲存溢位表的基礎位址。
圖4a說明溢位表的實施例。
圖4b說明溢位表的另一實施例。
圖5說明包括有複數個頁之溢位表的另一實施例。
圖6說明用來虛擬化交易式記憶體之系統的實施例。
圖7說明虛擬化交易式記憶體之流程圖的實施例。
圖8說明虛擬化交易式記憶體之流程圖的另一實施例。
100...多核心處理器
110,115...執行單元
120,121...排程器
160,165,170,175...執行緒
140,141...提取解碼方塊
150...匯流排介面單元
145...較高階的快取記憶體
135...微碼ROM
136...微碼唯讀記憶體
130,131...配置器更名器方塊
125,126...重排序/止用單元
103,108...較低階的快取記憶體
104,105,106...快取記憶體線
104a,105a,106a...記憶體線
104b,105b,106b...存取追蹤欄
107,109...溢位模組
Claims (42)
- 一種用於虛擬化交易式記憶體系統的總體溢位之裝置,包含:一處理器,包括一執行模組,適用以執行包含交易式記憶體存取操作之交易;一快取記憶體,耦接至該執行模組,該快取記憶體包括複數個記憶體線,其中該複數個記憶體線之一記憶體線與一予以適用以保持現行交易狀態資訊的該快取記憶體內的對應追蹤欄相關,該交易狀態資訊用以表示是否該記憶體線回應於在該交易的未決定期間執行之該交易式記憶體存取操作已經為該交易所存取;以及溢位邏輯,回應於與該記憶體線相關的溢位事件,在該交易未決定期間適用以支援該快取記憶體延伸入到予以被保持在第二記憶體的總體溢位表,其中該延伸入到該總體溢位表包含啟始該總體溢位表的更新,該更新包括:實體位址、來自對應追蹤欄的現行交易狀態資訊、及來自記憶體線的資料。
- 如申請專利範圍第1項的裝置,其中該處理器更包含邏輯,以保持複數架構狀態,該複數架構狀態的第一架構狀態具有該第二記憶體的第一虛擬視圖與該交易相關;以及,該複數架構狀態的第二架構狀態具有該第二記憶體的第二虛擬視圖不與該交易相關,及其中該處理器也包含 衝突偵測邏輯,用以根據保持在該總體溢位表中之該實體位址及該現行交易狀態資訊,偵測相關於該第二架構狀態操作與該交易的衝突。
- 如申請專利範圍第1項的裝置,其中該第二記憶體包括共享系統記憶體,及其中該溢位邏輯包含:一溢位儲存元件,用以回應於該溢位事件而保持一溢位值;一基礎位址儲存元件,用以保持該總體溢位表之基礎位址的表示值予以保持於該共享系統記憶體中,其中該總體溢位表係包括用來保持該交易狀態資訊與該實體位址的總體溢位登錄列,該總體溢位登錄列的登錄列實體位址係與為該轉譯邏輯所自該虛擬記憶體位址轉譯的該實體位址不同。
- 如申請專利範圍第3項的裝置,其中在該交易之未決定期間用以追蹤存取該記憶體線之該對應的追蹤欄包含:第一位元,用以在該交易之未決定期間追蹤來自該記憶體線的載入;第二位元,用以在該交易之未決定期間追蹤對該記憶體線的儲存。
- 如申請專利範圍第4項的裝置,其中該總體溢位登錄列包含:元件欄,用以保持與該記憶體線相關的元件;位址欄,用以保持該實體位址; 一交易讀取狀態欄,用以保持該對應追蹤欄之該第一位元的狀態;以及一交易寫入狀態欄,用以保持該對應追蹤欄之該第二位元的狀態。
- 如申請專利範圍第5項的裝置,其中該共享系統記憶體係為該處理器的複數個核心間所共享,各個核心具有其實體記憶體的本身虛擬視圖,且其中該複數個核心中的每一個核心回應於保持該溢位值的該溢位儲存元件,利用該實體位址,檢查於驗證期間該總體溢位表之衝突。
- 如申請專利範圍第4項的裝置,其中當在該交易的未決定期間該第一位元追蹤來自該記憶體線的前一載入,或在該交易的未決定期間該第二位元追蹤對該記憶體線的前一儲存時,溢位事件包括選擇用於逐出的該記憶體線,該溢位邏輯更相關於與該現行交易狀態資訊相關的實體位址,將現行資訊由該快取記憶體線寫回到該總體溢位表;及快取控制邏輯,以新資訊替換該記憶體線及在該溢位邏輯啟始對該總體溢位表的更新後,重設對應追蹤欄,以保持相關於現行交易狀態資訊的該實體位址。
- 如申請專利範圍第1項的裝置,其中該記憶體線係為保持在該快取記憶體中之虛擬記憶體位址所參考,該虛擬記憶體位址當為在該處理器中之轉譯邏輯轉譯時,參考該實體位址,及其中溢位事件包括為被巢套(nest)在該交易中的第二交易執行開始交易的指令。
- 一種用於虛擬化交易式記憶體系統的總體溢位之裝 置,包含:一執行單元,適用以執行被分類為一交易的複數個操作;架構邏輯,適用以保持用於複數軟體緒的複數架構狀態,其中該複數軟體緒的一軟體緒係包含該交易;一交易記憶體,耦接至該執行模組,該記憶體包括複數個線;以及一暫存器,耦接至該執行單元,以包含一溢位欄;溢位硬體,適用以當為該執行單元所執行,回應於該被分類為該交易的複數操作之一操作,而更新該溢位欄至一溢位值,以使得在該交易被執行時所先前存取之複數線的一線被選擇逐出並在以用於多數操作的該操作的新資訊更新該線之前,將該線寫回至交易總體溢位表;及衝突偵測邏輯,適用以利用至少該交易總體溢位表,回應於保持該溢位值的該暫存器,執行予以包括在第二軟體緒中之第二交易的驗證。
- 如申請專利範圍第9項的裝置,其中該架構邏輯包含複數核心,各個核心保持至少一軟體緒的架構狀態,及其中該交易溢位欄係為微處理器之複數個處理核心可見。
- 如申請專利範圍第9項的裝置,其中該架構邏輯在單一處理器核心內包含複數硬體緒,各個硬體緒保持用於多數軟體緒之一軟體緒的一架構狀態,及其中該單一處理器核心包含該儲存元件,及該溢位欄係為該複數硬體緒 的各個硬體緒可見。
- 如申請專利範圍第10項的裝置,其中各個該複數核心回應於該溢位欄保持一非溢位值,而不是保持溢位值,只利用該交易式記憶體執行驗證。
- 如申請專利範圍第12項的裝置,其中回應於在該總體溢位表中之該最後的登錄列被釋放,該溢位欄被清除為非溢位值。
- 如申請專利範圍第9項的裝置,其中該儲存元件係特定機器暫存器(machine specific register(MSR))。
- 一種用於虛擬化交易式記憶體系統的總體溢位之裝置,包含:一處理器,包括一執行單元,用以執行一交易;一快取記憶體,耦接至該執行單元;及一基礎位址暫存器,保持用於總體溢位表的基礎位址的表示值於較該快取記憶體為高階的記憶體中,該總體溢位表保持有關於回應於該交易未決定期間該快取記憶體被溢位,在該交易執行時存取的複數快取記憶體位置的交易狀態資訊,其中該交易狀態資訊包含:有關於該快取記憶體線的第一位元的狀態及第二位元的狀態,在該交易執行時,該第一位元追蹤來自該快取記憶體線的讀取及該第二位元追蹤寫入至該快取記憶體線,其中該總體溢位表被用來保持於該交易執行時與該快取記憶體被溢位之一快取記憶體線相關的登錄列,其中該 登錄列被用來包括與該快取記憶體線相關的實體位址及交易狀態資訊,其中如果該快取記憶體線在被修改的狀態,則該登錄列被進一步用來包括:與該快取記憶體線相關之資料元件的複製。
- 如申請專利範圍第15項的裝置,其中該登錄列被進一步用來包括:作業系統(OS)控制欄。
- 如申請專利範圍第15項的裝置,其中該溢位表也用來保持在該總體溢位表中次頁的實體位址。
- 一種用於虛擬化交易式記憶體系統的總體溢位之裝置,包含:一執行模組,用以執行一交易;一記憶體,耦接至該執行模組,該記憶體包括複數個區塊,其中一存取追蹤欄係用以追蹤在該交易的執行期間對該複數區塊之一區塊的存取;一第一儲存元件,包括一溢位欄,回應於該區塊被選擇逐出及該存取追蹤欄在該交易的執行期間表示對該區塊之前一存取,該溢位欄在對該區塊的目前存取時被設定至一溢位值;以及第二儲存元件,回應於該溢位旗標被設定,保持總體溢位表的基礎位址;以及溢位邏輯,利用保持在該第二儲存元件中之該基礎位址,將保持在該存取追蹤欄中之前一存取追蹤資訊及相關於該區塊的位址寫至在該總體溢位表中之登錄列中, 在該交易的執行期間,回應於從該區塊的載入設定該存取追蹤欄的第一位元的邏輯;在該交易的執行期間,回應於對該區塊的儲存設定該存取追蹤欄的第二位元的邏輯;以及在該交易的執行期間,如果該第一位元被設定,在確定(committing)該交易之時,清除該第一及第二位元的邏輯。
- 如申請專利範圍第18項的裝置,其中,回應於該總體溢位位元被設定,該總體溢位表被用來保持與該區塊相關的登錄列,其中該登錄列包含:與該區塊相關的實體位址;回應於該區塊被保持在第一同調狀態,與該區塊相關的資料元件;以及該第一位元的邏輯值;該第二位元的邏輯值;以及作業系統(OS)控制欄。
- 如申請專利範圍第19項的裝置,其中該記憶體係快取記憶體,且其中該第一同調狀態係被修改的狀態。
- 如申請專利範圍第18項的裝置,其中該第一及第二儲存元件為特定機器暫存器(MSR)。
- 如申請專利範圍第18項的裝置,其中該第一儲存元件係溢位暫存器,及該第二儲存元件係基礎位址暫存器。
- 如申請專利範圍第18項的裝置,其中該溢位欄包 含一溢位位元,該記憶體係快取記憶體,且該總體溢位表的該基礎位址係在記憶體層級之較該快取記憶體為高位階之記憶體中的實體基礎位址。
- 一種用於虛擬交易式記憶體系統的總體溢位之系統,包含:微處理器,包括:執行單元,用以執行包括交易式記憶體存取操作之交易;第一記憶體,耦接至該執行單元,該第一記憶體包括與一追蹤欄相關的第一記憶體線,該追蹤欄予以以交易狀態資訊更新,用以回應於該交易式記憶體存取操作存取該第一記憶體線,在該交易的未決定期間,表示該第一記憶體線已經被存取;溢位邏輯,用以當該追蹤欄被更新以保持表示該第一記憶體線已經在該交易的未決定期間被存取的該交易狀態資訊時,回應於選擇該第一記憶體線用以逐出以替換,以檢測該第一記憶體的溢位;以及,將至少用於該第一記憶體線的位址及該交易狀態資訊寫入被保持於第二記憶體中之總體溢位表的登錄列中,而不必指定新位址,來保持來自該第一記憶體線的資料;以及其中該第二記憶體,在記憶體層級中之階層高於該第一記憶體。
- 如申請專利範圍第24項的系統,其中該第一記憶體的延伸入該溢位表中包含儲存有關於該交易的交易狀態 資訊於該溢位表中。
- 如申請專利範圍第25項的系統,其中該溢位邏輯包含:一第一暫存器,用以儲存回應該交易的執行期間所發生之溢位事件而被設定的溢位位元;一第二暫存器,用以儲存該溢位表的實體基礎位址於該第二記憶體中。
- 如申請專利範圍第26項的系統,其中保持在該第二記憶體中的溢位表包括複數頁,其中該複數頁中的每一頁係用以保持於該溢位表之次頁的下一個實體基礎位址。
- 如申請專利範圍第26項的系統,其中該第一記憶體係資料快取記憶體,且該第二記憶體係系統記憶體,且其中溢位事件包括選擇在該資料快取記憶體線中已經在該交易執行期間先前被存取的要逐出的一快取記憶體線。
- 如申請專利範圍第28項的系統,其中選擇要逐出的快取記憶體線係由一快取記憶體控制器來實施,且其中回應於選擇已經在該交易的執行期間先前被存取的要逐出的一快取記憶體線來設定該溢位位元包含:回應於選擇要逐出的該快取記憶體線,則產生一中斷,以及以被引動以處理該中斷的處理程式(handler)來設定該溢位位元。
- 一種用於虛擬化交易式記憶體系統的總體溢位之方法,包含: 偵測與即將執行為第一軟體緒內的交易之一部分之操作相關的溢位事件,該操作參考交易式記憶體中的記憶體線;如果該溢位位元目前並未設定,則回應該溢位事件設定一溢位位元;回應於該溢位位元的被設定,延伸該交易式記憶體進入被保持在第二記憶體內的總體溢位表,而不必在該總體溢位表內,指定一新實體位址來保持來自該記憶體線的資料;回應於該溢位位元被設定,利用該總體溢位表,執行在該第二軟體緒內的第二交易的驗證;以及回應於該溢位位元的並未設定,只利用該交易記憶體執行該第二交易的驗證。
- 如申請專利範圍第30項的方法,其中回應於該溢位位元的被設定,延伸該交易式記憶體進入第二記憶體包含:回應於該溢位位元的被設定,儲存該交易的狀態在一總體溢位表中。
- 如申請專利範圍第30項的方法,其中,偵測與即將執行為交易之一部分之操作相關的溢位事件包含:選擇要逐出的該記憶體線;從與該記憶體線相關的存取追蹤欄決定是否該記憶體線在該交易的執行期間先被存取,以及如果決定該記憶體線在該交易的執行期間已先被存取,則偵測出一溢位事件。
- 如申請專利範圍第30項的方法,其中該溢位位元被儲存在為複數個核心可見的特定機器暫存器(MSR)中。
- 如申請專利範圍第31項的方法,其中儲存該交易之該狀態在該總體溢位表中包含:將一登錄列寫入該總體溢位表,其中該登錄列包括:與該記憶體線相關的實體位址;用於追蹤在該交易的執行期間,從該記憶體線載入之第一追蹤欄的狀態;用於追蹤在該交易的執行期間,儲存來自該記憶體線之第二追蹤欄的狀態;以及如果該記憶體線在被修改的狀態,則一資料元件與該實體位址相關。
- 一種用於虛擬化交易式記憶體系統的總體溢位之方法,包含:執行被分類為交易之複數個操作中的一操作;根據該操作,在快取記憶體中選擇一要被逐出的快取記憶體線;以及如果該被選擇的快取記憶體線在該交易的未決定期間先被存取,則:如果該總體溢位目前未被設定,則設定總體溢位位元;如果該總體溢位表的一第一頁目前未配置,則配置記憶體的第一頁在用於總體溢位表之第二記憶體中,其中該總體溢位表係用來儲存要被逐出之該快取記 憶體線及包含有關於該予以逐出之該快取記憶體線的狀態資訊的與該交易相關的狀態資訊而不必新實體位址用於該快取記憶體線;以及在配置該第一頁用於該總體溢位表時,將該系統記憶體中該第一頁的基礎位址寫入一基礎位址暫存器。
- 如申請專利範圍第35項的方法,另包含:如果該被選擇的快取記憶體線在該交易的未決定期間己先被存取,則產生一中斷;以及以處理程式處理該中斷,其中該總體溢位位元係根據該中斷的該處理被設定。
- 如申請專利範圍第36項的方法,其中與該交易相關的狀態資訊包括在該交易的未決定期間,用以追蹤對該快取記憶體線之存取之存取追蹤欄的狀態。
- 如申請專利範圍第37項的方法,其中該總體溢位表也用以儲存:與該快取記憶體線相關的實體位址;以及作業系統(OS)控制欄資訊。
- 如申請專利範圍第38項的方法,其中該OS係根據該中斷,配置記憶體的該第一頁在該第二記憶體中。
- 如申請專利範圍第35項的方法,另包含:如果發生溢位頁錯誤及至少該第一頁目前配置給該總體溢位表,則配置另一頁在該第二記憶體中,用於該總體溢位表,以及 將該第二記憶體中之該另一頁的另一基礎位址寫入該第二記憶體中的前一頁,該前一頁在邏輯上係在該總體溢位表中之該另一頁之前。
- 一種有形機器可讀取媒體儲存程式碼,其當為一機器所執行時,使得該機器執行如申請專利範圍第34項所述之方法。
- 一種有形機器可讀取媒體儲存程式碼,其當為一機器所執行時,使得該機器執行如申請專利範圍第37項所述之方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/479,902 US20080005504A1 (en) | 2006-06-30 | 2006-06-30 | Global overflow method for virtualized transactional memory |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200817894A TW200817894A (en) | 2008-04-16 |
TWI397813B true TWI397813B (zh) | 2013-06-01 |
Family
ID=38878245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW096123333A TWI397813B (zh) | 2006-06-30 | 2007-06-27 | 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20080005504A1 (zh) |
JP (1) | JP5366802B2 (zh) |
KR (1) | KR101025354B1 (zh) |
CN (1) | CN101097544B (zh) |
DE (2) | DE202007019502U1 (zh) |
TW (1) | TWI397813B (zh) |
WO (1) | WO2008005687A2 (zh) |
Families Citing this family (100)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8190859B2 (en) | 2006-11-13 | 2012-05-29 | Intel Corporation | Critical section detection and prediction mechanism for hardware lock elision |
US7802136B2 (en) * | 2006-12-28 | 2010-09-21 | Intel Corporation | Compiler technique for efficient register checkpointing to support transaction roll-back |
US8719807B2 (en) * | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US8132158B2 (en) * | 2006-12-28 | 2012-03-06 | Cheng Wang | Mechanism for software transactional memory commit/abort in unmanaged runtime environment |
US8185698B2 (en) * | 2007-04-09 | 2012-05-22 | Bratin Saha | Hardware acceleration of a write-buffering software transactional memory |
US8140773B2 (en) | 2007-06-27 | 2012-03-20 | Bratin Saha | Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM |
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 |
US8990527B1 (en) * | 2007-06-29 | 2015-03-24 | Emc Corporation | Data migration with source device reuse |
US7620860B2 (en) * | 2007-09-07 | 2009-11-17 | Dell Products, Lp | System and method of dynamically mapping out faulty memory areas |
US8719553B2 (en) * | 2008-01-31 | 2014-05-06 | Arm Norway As | Method for re-circulating a fragment through a rendering pipeline |
US8719555B2 (en) * | 2008-01-31 | 2014-05-06 | Arm Norway As | Method for overcoming livelock in a multi-threaded system |
US8930644B2 (en) * | 2008-05-02 | 2015-01-06 | Xilinx, Inc. | Configurable transactional memory for synchronizing transactions |
CN101587447B (zh) * | 2008-05-23 | 2013-03-27 | 国际商业机器公司 | 基于预测的事务执行系统和方法 |
EP2332043B1 (en) * | 2008-07-28 | 2018-06-13 | Advanced Micro Devices, Inc. | Virtualizable advanced synchronization facility |
CN101739298B (zh) * | 2008-11-27 | 2013-07-31 | 国际商业机器公司 | 共享缓存管理方法和系统 |
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 |
US8799582B2 (en) * | 2008-12-30 | 2014-08-05 | Intel Corporation | Extending cache coherency protocols to support locally buffered data |
US8627017B2 (en) * | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
US8127057B2 (en) * | 2009-08-13 | 2012-02-28 | Advanced Micro Devices, Inc. | Multi-level buffering of transactional data |
US8473723B2 (en) * | 2009-12-10 | 2013-06-25 | International Business Machines Corporation | Computer program product for managing processing resources |
KR101639672B1 (ko) * | 2010-01-05 | 2016-07-15 | 삼성전자주식회사 | 무한 트랜잭션 메모리 시스템 및 그 동작 방법 |
US8479053B2 (en) | 2010-07-28 | 2013-07-02 | Intel Corporation | Processor with last branch record register storing transaction indicator |
US9104690B2 (en) | 2011-01-27 | 2015-08-11 | Micron Technology, Inc. | Transactional memory |
US9265004B2 (en) | 2011-02-02 | 2016-02-16 | Altair Semiconductor Ltd | Intermittent shutoff of RF circuitry in wireless communication terminals |
US9582275B2 (en) | 2011-05-31 | 2017-02-28 | Intel Corporation | Method and apparatus for obtaining a call stack to an event of interest and analyzing the same |
US9043363B2 (en) * | 2011-06-03 | 2015-05-26 | Oracle International Corporation | System and method for performing memory management using hardware transactions |
US9104681B2 (en) | 2011-12-27 | 2015-08-11 | Nhn Corporation | Social network service system and method for recommending friend of friend based on intimacy between users |
KR101540451B1 (ko) * | 2011-12-27 | 2015-07-31 | 네이버 주식회사 | 사용자들간의 친밀도에 기초하여 친구의 친구를 추천하는 소셜 네트워크 서비스 시스템 및 방법 |
US9146871B2 (en) * | 2011-12-28 | 2015-09-29 | Intel Corporation | Retrieval of previously accessed data in a multi-core processor |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US8880959B2 (en) | 2012-06-15 | 2014-11-04 | International Business Machines Corporation | Transaction diagnostic block |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
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 |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9740549B2 (en) * | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
CN102761487B (zh) * | 2012-07-12 | 2016-04-27 | 国家计算机网络与信息安全管理中心 | 数据流处理方法和系统 |
US9411739B2 (en) * | 2012-11-30 | 2016-08-09 | Intel Corporation | System, method and apparatus for improving transactional memory (TM) throughput using TM region indicators |
US9182986B2 (en) | 2012-12-29 | 2015-11-10 | Intel Corporation | Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region |
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 |
US10705961B2 (en) * | 2013-09-27 | 2020-07-07 | Intel Corporation | Scalably mechanism to implement an instruction that monitors for writes to an address |
KR102219288B1 (ko) | 2013-12-09 | 2021-02-23 | 삼성전자 주식회사 | 캐시 모드 및 메모리 모드 동작을 지원하는 메모리 장치 및 이의 동작 방법 |
US20150242216A1 (en) * | 2014-02-27 | 2015-08-27 | International Business Machines Corporation | Committing hardware transactions that are about to run out of resource |
US9489142B2 (en) | 2014-06-26 | 2016-11-08 | International Business Machines Corporation | Transactional memory operations with read-only atomicity |
US9495108B2 (en) | 2014-06-26 | 2016-11-15 | International Business Machines Corporation | Transactional memory operations with write-only atomicity |
US10025715B2 (en) | 2014-06-27 | 2018-07-17 | International Business Machines Corporation | Conditional inclusion of data in a transactional memory read set |
CN105683922B (zh) * | 2014-10-03 | 2018-12-11 | 英特尔公司 | 实现监视对地址的写入的指令的可扩展机制 |
US10146539B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Load replay precluding mechanism |
US10127046B2 (en) | 2014-12-14 | 2018-11-13 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude uncacheable-dependent load replays in out-of-order processor |
US10108421B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared ram-dependent load replays in an out-of-order processor |
WO2016097796A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude i/o-dependent load replays in out-of-order processor |
US10228944B2 (en) | 2014-12-14 | 2019-03-12 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method for programmable load replay preclusion |
US10088881B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude I/O-dependent load replays in an out-of-order processor |
WO2016097800A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Power saving mechanism to reduce load replays in out-of-order processor |
WO2016097815A1 (en) | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude x86 special bus cycle load replays in out-of-order processor |
JP6286065B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサの書き込み結合メモリ領域アクセスに依存するロードリプレイを除外する装置及び方法 |
US10146540B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude load replays dependent on write combining memory space access in an out-of-order processor |
US10108427B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US10083038B2 (en) | 2014-12-14 | 2018-09-25 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
US10146547B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
US10175984B2 (en) | 2014-12-14 | 2019-01-08 | Via Alliance Semiconductor Co., Ltd | Apparatus and method to preclude non-core cache-dependent load replays in an out-of-order processor |
JP6286067B2 (ja) | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでの長いロードサイクルに依存するロードリプレイを除外するメカニズム |
US9804845B2 (en) | 2014-12-14 | 2017-10-31 | Via Alliance Semiconductor Co., Ltd. | Apparatus and method to preclude X86 special bus cycle load replays in an out-of-order processor |
US10146546B2 (en) | 2014-12-14 | 2018-12-04 | Via Alliance Semiconductor Co., Ltd | Load replay precluding mechanism |
US10114646B2 (en) | 2014-12-14 | 2018-10-30 | Via Alliance Semiconductor Co., Ltd | Programmable load replay precluding mechanism |
US10108420B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on long load cycles in an out-of-order processor |
US10108429B2 (en) | 2014-12-14 | 2018-10-23 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude shared RAM-dependent load replays in an out-of-order processor |
KR101819316B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 캐시 불가의존 로드 리플레이를 억제하는 메커니즘 |
KR101820221B1 (ko) | 2014-12-14 | 2018-02-28 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 프로그래머블 로드 리플레이 억제 메커니즘 |
KR101819315B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 작성 결합 메모리 공간 접근에 따라 로드 리플레이를 억제하기 위한 장치 및 방법 |
US10120689B2 (en) | 2014-12-14 | 2018-11-06 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on off-die control element access in an out-of-order processor |
KR101819314B1 (ko) | 2014-12-14 | 2018-01-16 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 비순차 프로세서에서 오프다이 제어 부재 접근에 따라 로드 리플레이를 억제하는 장치 |
US10089112B2 (en) | 2014-12-14 | 2018-10-02 | Via Alliance Semiconductor Co., Ltd | Mechanism to preclude load replays dependent on fuse array access in an out-of-order processor |
US9645827B2 (en) | 2014-12-14 | 2017-05-09 | Via Alliance Semiconductor Co., Ltd. | Mechanism to preclude load replays dependent on page walks in an out-of-order processor |
WO2016106738A1 (zh) * | 2014-12-31 | 2016-07-07 | 华为技术有限公司 | 事务冲突检测方法、装置及计算机系统 |
US10204047B2 (en) * | 2015-03-27 | 2019-02-12 | Intel Corporation | Memory controller for multi-level system memory with coherency unit |
US10361940B2 (en) * | 2015-10-02 | 2019-07-23 | Hughes Network Systems, Llc | Monitoring quality of service |
US10095631B2 (en) * | 2015-12-10 | 2018-10-09 | Arm Limited | System address map for hashing within a chip and between chips |
US9514006B1 (en) | 2015-12-16 | 2016-12-06 | International Business Machines Corporation | Transaction tracking within a microprocessor |
CN107870872B (zh) * | 2016-09-23 | 2021-04-02 | 伊姆西Ip控股有限责任公司 | 用于管理高速缓存的方法和设备 |
US10268413B2 (en) * | 2017-01-27 | 2019-04-23 | Samsung Electronics Co., Ltd. | Overflow region memory management |
US20190065373A1 (en) * | 2017-08-30 | 2019-02-28 | Micron Technology, Inc. | Cache buffer |
US11294743B2 (en) | 2017-10-26 | 2022-04-05 | SK Hynix Inc. | Firmware event tracking for NAND-based storage devices, and methods and instruction sets for performing the same |
US10877897B2 (en) * | 2018-11-02 | 2020-12-29 | Intel Corporation | System, apparatus and method for multi-cacheline small object memory tagging |
KR20200107101A (ko) | 2019-03-06 | 2020-09-16 | 에스케이하이닉스 주식회사 | 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법 |
US11625479B2 (en) | 2020-08-27 | 2023-04-11 | Ventana Micro Systems Inc. | Virtually-tagged data cache memory that uses translation context to make entries allocated during execution under one translation context inaccessible during execution under another translation context |
US11620377B2 (en) * | 2020-08-27 | 2023-04-04 | Ventana Micro Systems Inc. | Physically-tagged data cache memory that uses translation context to reduce likelihood that entries allocated during execution under one translation context are accessible during execution under another translation context |
KR102579320B1 (ko) | 2023-04-19 | 2023-09-18 | 메티스엑스 주식회사 | 캐시 메모리 장치 및 이를 이용하는 캐시 스케줄링 구현 방법 |
KR102639415B1 (ko) * | 2023-07-18 | 2024-02-23 | 메티스엑스 주식회사 | 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4761733A (en) * | 1985-03-11 | 1988-08-02 | Celerity Computing | Direct-execution microprogrammable microprocessor system |
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
JPH1147518A (ja) * | 1997-08-07 | 1999-02-23 | Mitsubishi Electric Corp | 浴水浄化ユニット |
JPH1147521A (ja) * | 1997-08-04 | 1999-02-23 | Toyobo Co Ltd | 空気清浄用フィルタ濾材 |
US20040122942A1 (en) * | 2002-12-24 | 2004-06-24 | John Green | Method, system, and data structure for monitoring transaction performance in a managed computer network environment |
US20040158678A1 (en) * | 2003-02-07 | 2004-08-12 | Industrial Technology Research Institute | Method and system for stack-caching method frames |
US20060085588A1 (en) * | 2004-09-30 | 2006-04-20 | Ravi Rajwar | Transactional memory execution utilizing virtual memory |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6684398B2 (en) * | 2000-05-31 | 2004-01-27 | Sun Microsystems, Inc. | Monitor entry and exit for a speculative thread during space and time dimensional execution |
US6718839B2 (en) * | 2001-06-26 | 2004-04-13 | Sun Microsystems, Inc. | Method and apparatus for facilitating speculative loads in a multiprocessor system |
WO2003001369A2 (en) * | 2001-06-26 | 2003-01-03 | Sun Microsystems, Inc. | Method and apparatus for facilitating speculative stores in a multiprocessor system |
US6862664B2 (en) * | 2003-02-13 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for avoiding locks by speculatively executing critical sections |
US7089374B2 (en) * | 2003-02-13 | 2006-08-08 | Sun Microsystems, Inc. | Selectively unmarking load-marked cache lines during transactional program execution |
US7269693B2 (en) * | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Selectively monitoring stores to support transactional program execution |
US7269694B2 (en) * | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Selectively monitoring loads to support transactional program execution |
US7269717B2 (en) * | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Method for reducing lock manipulation overhead during access to critical code sections |
US7340569B2 (en) * | 2004-02-10 | 2008-03-04 | Wisconsin Alumni Research Foundation | Computer architecture providing transactional, lock-free execution of lock-based programs |
US7206903B1 (en) * | 2004-07-20 | 2007-04-17 | Sun Microsystems, Inc. | Method and apparatus for releasing memory locations during transactional execution |
US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
US7984248B2 (en) * | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
-
2006
- 2006-06-30 US US11/479,902 patent/US20080005504A1/en not_active Abandoned
-
2007
- 2007-06-20 DE DE202007019502U patent/DE202007019502U1/de not_active Expired - Lifetime
- 2007-06-20 WO PCT/US2007/071711 patent/WO2008005687A2/en active Application Filing
- 2007-06-20 JP JP2009511265A patent/JP5366802B2/ja not_active Expired - Fee Related
- 2007-06-20 DE DE112007001171T patent/DE112007001171T5/de not_active Ceased
- 2007-06-20 KR KR1020087031869A patent/KR101025354B1/ko not_active IP Right Cessation
- 2007-06-27 TW TW096123333A patent/TWI397813B/zh not_active IP Right Cessation
- 2007-06-30 CN CN2007101290073A patent/CN101097544B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4761733A (en) * | 1985-03-11 | 1988-08-02 | Celerity Computing | Direct-execution microprogrammable microprocessor system |
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
JPH1147521A (ja) * | 1997-08-04 | 1999-02-23 | Toyobo Co Ltd | 空気清浄用フィルタ濾材 |
JPH1147518A (ja) * | 1997-08-07 | 1999-02-23 | Mitsubishi Electric Corp | 浴水浄化ユニット |
US20040122942A1 (en) * | 2002-12-24 | 2004-06-24 | John Green | Method, system, and data structure for monitoring transaction performance in a managed computer network environment |
US20040158678A1 (en) * | 2003-02-07 | 2004-08-12 | Industrial Technology Research Institute | Method and system for stack-caching method frames |
US20060085588A1 (en) * | 2004-09-30 | 2006-04-20 | Ravi Rajwar | Transactional memory execution utilizing virtual memory |
Non-Patent Citations (1)
Title |
---|
"Unbounded Transactional Memory," Proceedings of the 11th Int’l Symposium on High-Performance Computer Architecture (HPCA-11 2005) "Virtualizing Transactional Memory," Proceedings of the 32nd International Symposium on Computer Architecture (ISCA’05) * |
Also Published As
Publication number | Publication date |
---|---|
WO2008005687A3 (en) | 2008-02-21 |
US20080005504A1 (en) | 2008-01-03 |
KR101025354B1 (ko) | 2011-03-28 |
CN101097544B (zh) | 2013-05-08 |
WO2008005687A2 (en) | 2008-01-10 |
DE202007019502U1 (de) | 2013-02-18 |
CN101097544A (zh) | 2008-01-02 |
KR20090025295A (ko) | 2009-03-10 |
DE112007001171T5 (de) | 2009-04-30 |
JP2009537053A (ja) | 2009-10-22 |
TW200817894A (en) | 2008-04-16 |
JP5366802B2 (ja) | 2013-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI397813B (zh) | 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統 | |
US20180011748A1 (en) | Post-retire scheme for tracking tentative accesses during transactional execution | |
US8706973B2 (en) | Unbounded transactional memory system and method | |
TWI526829B (zh) | 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體 | |
TWI434214B (zh) | 用以延伸快取一致性以保持緩衝資料之裝置,處理器,系統及方法 | |
US9471494B2 (en) | Method and apparatus for cache line write back operation | |
RU2501071C2 (ru) | Механизм запроса поздней блокировки для пропуска аппаратной блокировки (hle) | |
US9361233B2 (en) | Method and apparatus for shared line unified cache | |
US10572179B2 (en) | Speculatively performing memory move requests with respect to a barrier | |
CN108369553B (zh) | 用于范围保护的系统、方法和装置 | |
US9740623B2 (en) | Object liveness tracking for use in processing device cache | |
CN109661656B (zh) | 用于利用条件所有权请求的智能存储操作的方法和装置 | |
US9092346B2 (en) | Speculative cache modification | |
US10108548B2 (en) | Processors and methods for cache sparing stores | |
CN106293894B (zh) | 执行事务性功率管理的硬件设备和方法 | |
US10241945B2 (en) | Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions | |
CN111095203A (zh) | 实时寄存器值的集群间通信 | |
US10261909B2 (en) | Speculative cache modification | |
TWI417725B (zh) | 微處理器、微處理器之資料快取存取方法與電腦程式產品 | |
US20230099256A1 (en) | Storing an indication of a specific data pattern in spare directory entries | |
CN116521580A (zh) | 用于减少独占操作延迟的争用跟踪 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |