TWI498733B - 實作有限交易式記憶體之快取元資料 - Google Patents
實作有限交易式記憶體之快取元資料 Download PDFInfo
- Publication number
- TWI498733B TWI498733B TW097117848A TW97117848A TWI498733B TW I498733 B TWI498733 B TW I498733B TW 097117848 A TW097117848 A TW 097117848A TW 97117848 A TW97117848 A TW 97117848A TW I498733 B TWI498733 B TW I498733B
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- metadata
- transaction
- column
- write
- Prior art date
Links
- 238000012545 processing Methods 0.000 claims description 36
- 238000012360 testing method Methods 0.000 claims description 26
- 238000000034 method Methods 0.000 claims description 25
- 238000012546 transfer Methods 0.000 claims description 5
- 230000000644 propagated effect Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims 2
- 238000001914 filtration Methods 0.000 description 18
- 230000004888 barrier function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 230000006399 behavior Effects 0.000 description 13
- 238000011084 recovery Methods 0.000 description 8
- 239000000463 material Substances 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005469 granulation Methods 0.000 description 2
- 230000003179 granulation Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/507—Control mechanisms for virtual memory, cache or TLB using speculative control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明係相關於實作有限交易式記憶體之快取元資料。
CPU快取為由一電腦之中央處理單元所使用的一電腦硬體機制,用以降低存取記憶體之平均時間。快取為一小且快速的記憶體,其從最近所使用的主記憶體位置保留資料的副本。若後續記憶體存取係針對已保留於快取之記憶體位址,則記憶體存取係使用快取記憶體而被履行。因此,越多的存取係從被快取的記憶體位置執行,則平均記憶體存取時間越少,且應用程式執行越快。
快取記憶體被細分成快取列。每一快取列具有某固定大小、連續範圍的主記憶體之位元組的副本。每一快取列亦具有一位址標籤及其他狀態,該其他狀態識別快取列是否目前為有效,以及若快取列為有效的,該其他狀態識別哪個資料之經定址的範圍係被保留於快取列中。快取列為固定大小,該大小典型為32至256位元組並根據硬體設計而定。當CPU執行讀取或寫入記憶體存取至在主記憶體中給定的位址之一資料時,其亦檢查該位址是否包含於其快取,特別地,快取是否包含有效的且其位址標籤符合該存取之記憶體位址的快取列。若是,則一快取命中(cache hit)發生,且CPU存取快取列中之資料。否則,一快取未中
(cache miss)發生且CPU進行存取資料於其他地方之較慢路徑,並記錄該資料之副本於CPU快取之一快取列。由於快取係固定大小,為了保留新資料於快取列,需要收回(使無效)先前已保持於該快取列之資料。
軟體應用程式執行一序列的硬體指令以實現一計算。該等指令可執行算術操作、可改變後續指令的程式控制流序列、可讀取或寫入(統稱為存取)資料於特定記憶體位址、或執行其他操作。當一CPU快取係與一CPU一起使用時,該CPU快取的存在及任何有關該CPU快取哪個位址是目前被快取的資訊,及檢查快取列、使快取列有效、使快取列無效的任何硬體程序,係典型地對於軟體程式為不可見的及不可存取的,不同的只是程式通常較快地執行。
現代電腦可具有複數個快取層。舉例來說,一小且快的一階快取(L1$)可迅速地服務大部分的記憶體存取;但是當L1$未中時,一較大較慢的二階快取(L2$)可被存取。僅當記憶體存取在L1$及L2$都未中時,存取才會被相較下非常慢的主記憶體來執行。
現代電腦亦可為多處理器,其具有複數個CPU。於一共用記憶體多處理器中,每一CPU可存取相同之共用記憶體,故一個CPU可寫入至共用記憶體且稍後另一CPU可讀取由第一個CPU所寫入的資料。每一CPU可具有一或更多個快取層供其獨占使用(私人快取,private cache)以及與其他CPU共用的一或更多個快取層(共享快取,shared cache)。在具有快取的多個CPU的存在中,多處理器實作
快取一致性(cache coherence),以透明地提供在軟體程式中執行之多執行緒所有的記憶體存取係針對一單一共同共用的主記憶體之錯覺。此處簡單的想法:「給定的快取列是有效的」係以更複雜的快取列有效性狀態、狀態機、及稱為快取一致性協定(cache coherence protocol)之發訊協定來取代。有時於一個CPU之存取(例如一寫入)必須使一快取列於其他CPU無效。
將硬體資源計入因素及共享於一多處理器以共享多個CPU之間的一些或近乎全部的重複硬體資源亦是可能的。在一極端的情形中,一合理複數個CPU可用時間多工的方式以單一CPU核心被實作於硬體,其係藉由提供複數個所有處理器狀態及暫存器的副本(稱為硬體執行緒內容)於單一CPU。此係已知為多執行緒CPU核心。舉例來說,具有四個不同執行緒內容(例如其程式計數器、一般用途暫存器、及特殊用途暫存器之四個副本)之單一CPU核心,對於應用軟體及作業系統軟體仍然顯示為四個邏輯處理器(LP,“Logical Processor”),其與包含四個分開的CPU核心之一個多處理器在行為上(若不是效能)係不可區別的。
隨著時間演進,電腦硬體已變的更快且更強。今日的多處理器提供可平行操作之多個CPU核心。程式設計師會喜歡將一程式的不同片段平行地執行於這些多個核心,以利用可被達到的效能改善。然而,平行程式化對於使用今日的軟體發展技術之一般程式設計師而言係相當困難,且
因此系統實作者正發展可被使用以較佳地寫入平行程式之新的程式化模型。這些新的程式化模型中的某一些係採用一交易式記憶體方式,其使用交易提取以助於協調平行執行緒對共用的記憶體的存取。交易並不會本身自動地提供平行特性,但是其確實轉移一些協調平行任務的負擔至系統之其他部分,例如編譯程序或執行時環境(runtime)。
本發明揭示用以提供於一中央處理單元之一快取中的軟體可存取的元資料之各種技術及技法。元資料狀態可包含:用於定址的資料之每一量子的狀態之至少一些位元、用於每一快取列之至少一些狀態、及用於整個快取之至少一些狀態。提供中央處理單元中之額外的指令,以與此元資料互動。新的副作用係藉由元資料及額外的指令之存在而被引入該中央處理單元及快取之操作中。元資料可藉由至少一軟體程式被存取,以促進軟體程式之操作。
於一實作中,自一有限交易式記憶體應用存取一中央處理單元之一快取中的快取元資料。當執行來自該有限交易式記憶體應用之一交易式讀取時,一快取列元資料交易讀取位元係被設定。當執行來自該有限交易式記憶體應用之一交易式寫入時,一快取列元資料交易寫入位元係被設定且一條件式儲存係被執行。於確定時,若有任何以該交易讀取位元或該交易寫入位元標示之列係被收回或無效,則所有推測地寫入的列係被廢除。該應用亦可詢問一快取
列元資料收回概要,以判定是否一交易係被判定失敗(doomed)然後採取適當行動。
於另一實作中,本發明提供一硬體加速的軟體交易式記憶體(HASTM,“Hardware Accelerated Software Transactional Memory”)應用。軟體交易式記憶體應用可存取一中央處理單元的一快取之元資料,其可被使用以改善STM系統之操作,尤其是加速於軟體交易式記憶體操作中之某些最耗費時間的操作。舉例來說,開啟讀取障壁過濾(open read barrier filtering)係被提供,其使用包含於快取元資料中之一開啟以供讀取(open-for-read)位元以迅速地過濾(測試及設定)是否給定的交易式記憶體資料已接收其所需要之昂貴的軟體簿記。若是,則多餘的「開啟以供讀取」軟體簿記係被安全地略過。讀取記錄有效(read log validation)亦使用元資料來加速。當一交易運作時,HASTM軟體對於每一存取的資料設定於快取列元資料之一讀取集(read-set)位元,累積於該快取形成元資料狀態之「讀取集」,以表示該交易所讀取的資料集。當一些其他CPU寫入資料於該CPU的讀取集,除非被收回或除非無效,此快取元資料係藉由其經快取的資料而被保持。當交易確定或更早時,該應用可詢問快取列元資料收回概要;若沒有列係被收回,則CPU的讀取集係原封不動,故軟體讀取集有效係不必要的且可被略過。此相同的讀取集快取列元資料亦加速軟體交易式記憶體系統之再試設備。若一應用使用一交易再試陳述以回復(roll back)其交易
然後等待於其讀取集中之改變,HASTM軟體僅需要建立一軟體處置器向量以等待快取列元資料之讀取集位元的無效。接著當另一CPU寫入一些於應用的讀取集中之資料時,對應的快取列(及由此其讀取集位元於其快取列元資料)將為無效,而觸發軟體處置器之跳位,其推斷「再試」動作及恢複(重啟)該交易。
此發明內容係用一簡化形式來介紹概念的選擇,其將於實施方式進一步說明。此發明內容非用於識別所申審標的之關鍵特徵或基本特徵,亦不是用來作為判定所申審的標的之範疇的輔助。
為了促進本發明之原理的了解之目的,將參考圖式中所示具體實施例並使用特定表達方式來描述之。然而,應了解的是,本發明之範疇不因此所受限。於所述之具體實施例的任何改變及進一步的修改及如此處所述之原理的進一步應用之考量對於熟習此項技術者而言為經常發生的。
該系統在一般內容中可被描述為具有使用快取元資料於CPU快取以改善一或多個軟體程式之操作的中央處理單元之系統。如第1圖所示,使用以實作該系統之一或多個部份之例示電腦系統包含一計算裝置,例如計算裝置100。於其最基本的配置中,計算裝置100典型包含至少一個處理單元102及記憶體104。
於一實作中,中央處理單元102包含具有軟體可存取的
元資料105之一快取103。這些元資料將更加詳細描述於此處多個其他圖式。一或多個硬體協助的軟體應用150可存取CPU快取103之元資料105,以促進個別的軟體應用之操作。硬體協助的軟體應用之一些非限制的範例可包含(但不限於)交易式記憶體系統、垃圾收集系統、用以分析程式之效能或運行時間行為之系統、用以尋找程式中之缺陷之系統、用以實施安全限制於程式之系統、及/或可被使用元資料105於CPU快取103來改善(於效能或於一些其他方面)之任何其他類型的軟體應用。這些軟體應用可直接地讀取及寫入合適用於給定的情況之元資料。替代地或額外地,硬體本身可適當地讀取及/或修改該元資料。
根據正確的配置及計算裝置的類型,記憶體104可為揮發性(例如RAM)、非揮發性(例如ROM、快閃記憶體等)或兩者的一些結合。此大部份的基本配置係以虛線106說明於第1圖。
額外地,裝置100亦可具有額外的特徵/功能。舉例來說,裝置100亦可包含額外的儲存器(可移除的及/或不可移除的),包含(但不限於)磁碟或光碟或磁帶。此額外的儲存器係以可移除的儲存器109及不可移除的儲存器110圖示於第1圖。電腦儲存媒體包含揮發性及非揮發性、可移除的及不可移除的媒體,實作於任何方法或技術以供資訊(例如電腦可讀取的指令、資料結構、程式模組或其他資料)的儲存。記憶體104、可移除的儲存器109及不可移除的儲存器110皆為電腦儲存媒體的範例。電腦儲存媒體包含
(但不限於)RAM、ROM、EEPROM、快閃記憶體或其他記憶體技術、CD-ROM、數位多功能碟(DVD,“Digital Versatile Disk”)或其他光學儲存器、磁卡、磁帶、磁碟儲存器或其他磁性儲存裝置、或可被使用以儲存期望的資訊且可由裝置100所存取之其他任何媒體。任何此種電腦儲存媒體可為裝置100之一部份。
計算裝置100包含一或多個通訊連接114,其允許計算裝置100與其他電腦/應用115進行通訊。裝置100亦可具有輸入裝置112,例如鍵盤、滑鼠、光筆、聲音輸入裝置、觸碰輸入裝置等。亦可包含輸出裝置111例如顯示器、揚聲器、印表機等。這些裝置為熟習此項技術者所熟知,故於此省略其說明。
第2圖為操作於第1圖之電腦系統的一個實作之中央處理單元102之更為詳細的圖解視圖。CPU102之快取103包含軟體可存取的快取元資料105。此元資料(簡稱)係與經快取的資料相關聯之額外的、軟體可存取的狀態。除以下所述之快取元資料控制暫存器以外,快取元資料狀態僅對於其對應的資料係被快取的時間間隔被保留。於所示的範例中,軟體可存取的元資料105包含每一虛擬位址元資料(此處稱為VAMD)106、每一快取列元資料(此處稱為CLMD)107、及/或快取元資料控制暫存器(此處稱為CMD)108。於CPU快取103之VAMD106、CLMD107、及/或CMD108元資料可藉由一或多個軟體應用而被存取,以改善個別的應用之操作。應了解的是,於其他實作中,部分、額外的及/
或其他類型之元資料可被使用於代替顯示於第2圖之快取、或該快取以外的其他硬體位置。舉例來說,待說明的VAMD狀態可位於分開的類快取結構(與CPU快取分離),且CLMD狀態可位於分開的集中或分散結構,其與快取一致系統互相作用,但係與CPU快取分離。然而,為了說明的目的,這些元資料105將在此處各種圖示中更加詳細地討論,以描述用以改善軟體應用操作之一些技法。
第3圖為一圖表,說明對於第1圖之系統實作額外的每一快取列每一邏輯處理器元資料之範例性硬體指令170。此處所使用的術語邏輯處理器係指包含每一個一或多個實際CPU核心及/或共用單一快取之多執行緒的CPU核心的硬體執行緒內容([007])。於所顯示的範例性指令170,每一邏輯處理器之快取列的每一四字組之每一虛擬位址元資料(VAMD,“Virtual Address Metadata”)係分配有四個位元的元資料,且每一邏輯處理器之快取列的每一快取列元資料(CLMD,“Cache Line Metadata”)係分配有八個位元的元資料。這些位元分配本質上為範例,且其他分配位置可於其他實作中被使用。再者,於第3圖所示之範例及此處所討論者,VAMD係被指定至快取列中每一資料的64位元四字組。使用四字組於非限制的範例中的一個理由係因為其為目前最小的二的倍數的方塊大小,於此情形中,將永遠不會有兩個分開的經交易的物件於相同方塊。然而,應了解的是,於其他實作中,小於或大於四字組者可被使用於每一VAMD且仍然利用到此處所討論之一些或所有的該多
種技術。要注意的是,每一邏輯處理器每一快取列中僅一個CLMD共用該快取;但是每一邏輯處理器每一快取列中可能有許多VAMD(一個四字組)。
請參考第4圖,顯示一圖表,其說明實作每一快取每一邏輯處理器快取元資料控制暫存器之範例性硬體狀態190。於所示之範例中,這些暫存器190控制及追蹤各種快取元資料行為,包含CLMD收回概要、CLMD推測寫入、CLMD預設值、VAMD預設值、交易處置器向量位址、及觸發交易處置器調用之CLMD收回遮罩。部分、全部及/或額外的快取層細節可被追蹤為CMD的一部分。這些元資料之一些使用係於後續範例中描述。
以下所示為用於四個邏輯處理器系統的基線快取狀態及新的快取元資料狀態硬體狀態之「C語言型態硬體定義虛擬碼」(C-language-esque hardware definition pseudocode
),包含顯示於第3及4圖之新VAMD、CLMD及CMD指令。新的狀態係以粗體字來強調。於一實作中,這些指令於每個核心為單獨使用的,但在邏輯處理器之間被共用。
應強調的是,使用於此整個實施方式之抽象硬體定義虛擬碼本身不是可執行的軟體程式。反而,其以相對緊密的標記來表示新穎的快取元資料狀態及行為,熟練的電腦設計者接著必須再編碼成電路說明或具體硬體定義語言(例如Verilog或VHDL)。
於以上所示之非限制的範例,對於共用64KB L1快取(具有1024 64位元組列)之一四邏輯處理器範例,額外的快取元資料儲存負載為:4執行緒* 8位元* 2K(列)+4執行緒* 4位元* 8K(四字組)=64K位元+128K位元=24KB,或約整個快取大小的37%。如先前所注意的,顯示於此假設範例之外,CPU快取元資料之各種其他分配及/或安排可被使用。
請參考第5圖,其係顯示中央處理單元200之圖解視圖,其說明中央處理單元200所提供之快取元資料改良的硬體指令集架構202及其與CPU快取222之快取元資料224的互動。於一實作中,指令集架構202包含自動快取及處理器操作行為204、CMD指令206、VAMD指令208、CLMD指令214、及執行緒內容切換儲存/恢復延伸220。自動快取及處理器操作行為204可與各種元資料224互動,如第6圖至第8
圖所更為詳述者。CMD指令206可與各種元資料226互動,如第9圖所更為詳述者。VAMD指令208包含個別的指令210及快閃指令212兩者。VAMD指令208可與VAMD元資料228及/或其他元資料互動,如第10圖所更為詳述者。CLMD指令214可與CLMD元資料230及/或其他元資料互動,如第11圖所更為詳述者。CLMD指令214包含個別的指令216及快閃指令218。執行緒內容切換儲存/恢復延伸220可與各種元資料224互動,如第12圖所更為詳述者。
第6圖為用於第5圖之中央處理單元200的範例性自動快取及處理器操作行為250之圖解視圖。這些行為延伸先前技術CPU+快取操作,以說明新的快取元資料狀態。此情形影響了初始化(有效)252、收回/無效258及核心重置操作270。快取未中之硬體處理期間,快取列初始化隱含地發生於快取列252。快取列初始化設定該列的CLMD為預設值254,且設定其VAMD為預設值256。以下為範例性硬體定義虛擬碼,其顯示額外的初始化行為252以供設定每一邏輯處理器之預設CLMD254及預設VAMD256。這些階段係於第7圖中更為詳細說明。
收回/無效操作258係被設計以當收回快取列或使快取列無效時運行。當從一些邏輯處理器於此
快取之記憶體存取迫使一些有效快取列被再提議以保留最近存取的資料時,收回發生。於此情形中,快取列之資料內容被廢除或寫回記憶體,而元資料內容被完全地廢除。當從另
一核心之一致記憶體存取迫使一列在此核心之快取的此特定層從有效狀態轉變成無效狀態時,無效發生。有複數個指令,其係用以:當CPU判定應該收回快取列或使快取列無效時,傳播快取列CLMD至快取收回概要260。亦有複數個指令,其係用以:廢除CLMD及VAMD位元262。範例性硬體定義虛擬碼係顯示於後文,以供實作這些收回/無效行為258。其係於第8圖中更為詳細說明。
亦可包含核心重置指令270以將所有元資料歸零272。將所有元資料歸零之一範例性硬體指令係顯示於後文。於顯示之範例中,所有快取元資料模式狀態位元係被歸零且所有元資料被歸零。舉例來說,CLMD收回、CLMD推測寫入、預設CLMD值及預設VAMD值皆被設定為零。
請參考第7圖,其係詳細說明涉及載入一快取列及初始化一些快取元資料為預設值之階段的一個實作(相較於最初說明為第6圖之初始化指令252的一部份)。於一形式,第7圖之程序係被實作於計算裝置100之硬體。該程序開始於開始點290,該CPU載入一快取列(階段292)。對於每一邏輯處理器,CLMD元資料係被初始化為其邏輯處理器特定的預設值(階段294)。對於每一邏輯處理器,VAMD元資料係被類似地初始化為其LP特定的預設值(階段296)。該程序結束於結束點300。
於第8圖中,其係更為詳細顯示涉及收回一快取列或使一快取列無效之階段的一個實作(相較於最初說明為第6圖之收回/無效258的一部份)。於一形式,第8圖之程序係被實作於計算裝置100之硬體。該程序開始於開始點310,該CPU判定其係收回一快取列或使一快取列無效之時候(階段312)。邏輯處理器之CLMD係被傳播至該快取的收回概要(階段314)。該列的CLMD及VAMD位元係接著被廢除(階段316)。若該快取列係被隱含地推測地寫入,則其首先被無效化(不寫回主記憶體)(階段318)。該程序結束於結束點320。
第9圖係針對第5圖之中央處理單元200的範例性CMD
指令之圖解視圖。關於此處所介紹的所有新的指令,這些指令延伸並補充由習知CPU提供之硬體指令的一基本集合。換句話說,其延伸基本指令集架構。這些硬體指令係藉由軟體來使用,以與各種快取元資料狀態互動,並控制快取元資料行為。舉例來說,有複數個指令,其係用以:設定及得到VAMD預設值控制暫存器(332及334);用以設定及得到CLMD預設值控制暫存器(336及338)。可被使用以提供此功能性以供設定及得到這些預設值的硬體指令定義虛擬碼之範例係顯示於後文。(此處,於一功能之硬體定義虛擬碼屬性“指令”指定硬體操作被(或可被)做成可用的,以作為新的CPU指令以供軟體隱含地使用。於此情形,該功能名稱暗示CPU指令名稱且其功能參數及傳回值暗示對應的指令之輸入及輸出參數,一般會表示為程式設計師特定暫存器或隱含的條件碼)。
於一實作中,CMD指令330亦包含用以設定及得到CLMD推測寫入控制暫存器(342及344)之指令,其設定及得到控制暫存器,該控制暫存器判定哪個指示該列之CLMD位元已被推測地寫入。可被使用以設定及得到推測寫入的硬體指令定義虛擬碼之範例係顯示如後文。
於一實作中,CMD指令330包含用以設定及得到CLMD收回概要控制暫存器(344及346)之指令。可被使用以設定及得到CLMD收回的硬體指令定義虛擬碼之範例係顯示如後文。
於一實作中,CMD指令330包含用以設定及得到CLMD收回處置器位址及處置器遮罩控制暫存器(190)之指令。可被使用以設定及得到CLMD收回的硬體指令定義虛擬碼之範例係顯示如後文。
於一實作中,CMD指令330包含用以利用快閃清除及設定CLMD值於所有快取列來條件式地測試收回之硬體指令348。此可被使用於有限交易式記憶體系統或用於其他目的,如此處所更為詳細說明者。可被使用以利用快閃清除/設定來條件式地測試收回之硬體指令定義虛擬碼之範例係顯示如後文。
於一實作中,CMD指令330包含用以根據CLMD來條件式地廢除快取列之硬體指令349。可被使用以條件式地廢除快取列的硬體指令定義虛擬碼之範例係顯示如後文。
CMD指令亦可包含用以得到特定資料之實作的大小之指令(例如得到快取列大小350、得到VAMD位元352、得到VAMD步幅354、或得到CLMD大小356)。可被使用以得到這些基本元資料值大小的範例硬體指令定義虛擬碼係顯示如後文。
一替代實作可透過一替代機制(例如一般目的之CPUID)指令來提供此實作特定參數資料。
請參考第10圖,其係顯示用於第5圖之中央處理單元200的範例性VAMD指令之圖解視圖。VAMD指令370包含個別的指令372(其一次存取一個特定VAMD)及快閃指令388(其應用於所有於該快取之所有VAMD)。個別的指令372可包含用於實作一VAMD得到376、一VAMD設定378、一VAMD測試及設定382、一VAMD選擇性清除(及)384、及一VAMD選擇性設定(或)386之指令。
於此介紹一種私人的VAMD助手虛擬碼功能,其(如一讀取資料指令)取得一位址「va」並保證其資料被快取;
接著傳回一參考(其於硬體,可為一控制訊號位元型樣)至對應至位元組的四字組之該特定VAMD(於位址va)。
VAMD得到指令376選擇並傳回特定VAMD的目前值(其對於特定位址為適當的)。VAMD設定指令378對於特定位址儲存一VAMD。對於得到及設定指令之範例硬體定義虛擬碼指令係顯示於後文。
VAMD測試指令380對於特定位址擷取該VAMD、使用該VAMD及該遮罩執行一AND操作、及比較其結果。於大部份CPU的基本指令集架構,此比較結果係被典型地寫入至條件碼暫存器或至一般目的暫存器。VAMD測試及設定指令382自動地測試及
設定該位址並接著傳回在該設定發生之前被讀取者。對於這兩個測試之範例硬體指令定義虛
擬碼係顯示於後文。
VAMD選擇性清除指令384選擇性地清除VAMD且VAMD選擇性設定指令386選擇性地設定VAMD,其將進一步說明於以下之硬體指令。
替代地或除對於每一VAMD快取列之個別的指令372之外,整個快取快閃VAMD指令388可被提供。舉例來說,快閃清除(‘AND ALL’)指令390可隨著快閃設定(‘OR_ALL’)指令392被提供。於以下所示之範例硬體指令定義虛擬碼,VAMD_AND_ALL指令係被設計以快閃清除用於此
邏輯處理器之每一快取列的所有VAMD中所指定的VAMD位元,且VAMD_OR_ALL指令係被設計以類似地快閃設定用於此
邏輯處理器之每一快取列的所有VAMD。
請參考第11圖,其係顯示用於第5圖之中央處理單元200的範例性CLMD指令410之圖解視圖。於一實作中,有個別的指令412(其一次存取一個特定CLMD)及快閃指令428(其適用所有CLMD)。個別的指令可包含用於CLMD
得到(CLMD get)416、CLMD設定418、CLMD測試420、CLMD選擇性清除(及)422、CLMD選擇性設定(或)424、及CLMD條件式儲存426之指令。這些個別的指令係如同關於VAMD指令所述般操作,但於此簡略地論述CLMD內容。舉例來說,得到及設定指令(416及418)得到及設定CLMD之值。該測試指令對於該特定位址擷取該CLMD、、利用該CLMD及該遮罩執行一AND操作、及比較該結果。若於該遮罩之位元皆被設定,則該測試傳回真值。選擇性清除及選擇性設定(422及424)對於該CLMD個別地執行選擇性清除或設定。硬體指令定義虛擬碼之範例係顯示如下。
於一實作中,CLMD條件式儲存指令426係被使用於有限交易式記憶體系統或用於其他目的,如此處所更為詳細說明者。此指令係測試以查看較早設定的特性是否仍然存在,且若為是,則儲存該值並傳回真值。否則,一假值被傳回且該值不被儲存。換句話說,僅當資料具有所需之該特定CLMD位址,該資料才被儲存於該位址。硬體指令定義虛擬碼之條件式儲存設定的範例係顯示於後文。
替代地或額外地對於CLMD之個別的指令412,可提供整個快取快閃CLMD指令428。舉例來說,快閃清除(AND ALL)指令430可隨著快閃設定(OR ALL)指令432被提供。於以下所示之範例硬體指令定義虛擬碼,CLMD_AND_ALL指令係被設計以快閃清除用於每一邏輯處理器之所有CLMD,且CLMD_OR_ALL指令係被設計以快閃設定用於每一邏輯處理器之所有CLMD。
第12圖係為用於第5圖之中央處理單元200的範例性內容切換儲存及恢復延伸450之圖解視圖。其係被使用於內容切換時間,以儲存及恢復執行緒內容暫存器(例如經架構
的(程式設計師可見的)執行緒階段,例如各種一般目的暫存器檔案、特別暫存器等)。於一實作中,這些指令皆採用一512位元組內容緩衝器作為一參數。於一實作中,該內容切換儲存及恢復指令亦可儲存該邏輯處理器的整個CMD狀態結構於該內容緩衝器的目前保留的一些欄位。
請參考第13圖至第16圖,一些範例性系統及技術將被描述,其使用如第1圖至第12圖所述之一些或所有的元資料、硬體指令、及/或其他技術。第13-16圖說明利用有限交易式記憶體應用之此處所述之技術的一些使用。如第13-16圖所進一步描述者,一有限交易式記憶體應用可使用一可程式化的CLMD位元之子集,使得若任何CLMD位元曾經被設定於一快取列,其表示該列已交易地讀取(且因此於其他邏輯處理器之後續寫入被觀看)或已被推測地寫入於一交易。被推測地寫入意指該列尚未知道該等值是否真的被永久地確定而被寫入。若此一推測地寫入的列被修改(dirty)且接著被收回、或被另一核心讀取或寫入,則其反而被無效,使得該等寫入被廢除。有限交易式記憶體應用亦可包含一指令,其極微地測試快取元資料CLMD收回概要位元之一子集,且若此收回沒有發生,其極微地清除所有快取列之CLMD位元的一子集,以永久地確定該等推測寫入。
請參考第13圖,其係顯示一個實作的有限交易式記憶體應用之圖解視圖。於一實作中,有限交易式記憶體應用470為位於計算裝置100(例如硬體協助的軟體應用150之其
中一者)之應用程式的其中一者。然而,將被暸解的是,有限交易式記憶體應用470可替代地或額外地被具體化為於一或多個電腦及/或相較於顯示於第1圖之不同變化中的電腦可執行指令。替代地或額外地,一或多個部份的有限交易式記憶體應用470可為部份的系統記憶體104(於其他電腦及/或應用115))或可發生於電腦軟體領域之其他此等變化。
有限交易式記憶體應用470包含程式邏輯472,其係負責實現此處所述之一些或所有技術。程式邏輯472包含:用以存取CMD及CLMD元資料於CPU快取之邏輯474;用以當執行一交易式讀取時設定CLMD交易讀取位元於該位址之邏輯476;用以當執行交易式寫入時設定CLMD交易寫入位元於該位址及做出一條件式儲存之邏輯478;用以測試是否任何被標示為交易式讀取及寫入的列被收回或無效,且若為否,則快閃清除所有的推測寫入位元,從而極微地確定所有的推測寫入位元之邏輯480;用以存取元資料以判定一交易是否被判定失敗之邏輯482;及用以操作該應用之其他邏輯484。於一實作中,程式邏輯472可被操作的,其可從另一程式被規劃性地呼叫,例如於程式邏輯472使用單一呼叫至一程序。
第14圖說明涉及使用快取元資料提供有限交易式記憶體應用之階段之一實作。於一形式,第14圖的程序係至少部分地實作於計算裝置100的操作邏輯。該程序開始於開始點500,然後該系統提供有限交易式記憶體應用及存取至
CPU快取元資料(階段502)。對於每一交易式讀取,該系統設定其中一個CLMD位元位置(舉例來說,CLMD[0]),作為對於該快取列於該位址之CLMD元資料字上之CLMD交易讀取位元(階段504)。對於每一交易式寫入,該系統設定另一CLMD位元位置(例如,CLMD[1]),作為對於該快取列於該位址之CLMD元資料字之CLMD交易寫入位元,並進行一有條件的儲存(階段506)。於確定時,該系統測試標示為CLMD交易讀取或CLMD交易寫入之任何列是否被收回或無效(階段508)。若沒有找到收回/無效(決定點510),則所有推測寫入位元被快閃清除,從而確定所有推測寫入位元(階段512)。若找到任何收回/無效(決定點510),則所有推測地寫入的列被廢除且一CMD無效被做出,以對於該交易重置所有CLMD及收回資料(階段514)。該程序結束於結束點516。
此演算法對於適合每一邏輯處理器之快取的同時的交易正確地實作有限交易式記憶體。由於每一資料的交易式讀取係藉由軟體利用其快取列之交易讀取位元來隱含地解釋,且由於每一資料的推測交易式寫入係藉由軟體利用其快取列之交易寫入位元來隱含地解釋,故僅當於執行的時間間隔期間,沒有來自其他邏輯處理器之不一致的存取至資料-具體而言,若沒有於該交易被讀取的資料之寫入(藉由其他邏輯處理器),且若沒有於該交易被寫入的資料之讀取(藉由其他邏輯處理器)-才確定一交易。若不一致存取發生,則多處理器之快取一致的行為係使此資料之交
易的邏輯處理器之經快取得副本無效,歸因於行為(258)之事件係明顯的作為CMD(190)中clmd_evictions暫存器的非零CLMD資料之收回/無效。再者,該演算法正確地監看從每一第一參考直到交易確定嘗試的時間間隔中之任何交易地存取的資料之全部的任何快取列收回。若當於程式執行期間發生一快取未中且一快取列必須被收回,且此快取列具有包含交易讀取或交易寫入位元設定之CLMD快取元資料,則此事件經由(258),亦係明顯的作為clmd_evictions暫存器之收回/無效。於任一情形,軟體及硬體的結合偵測任何交易不一致或容量問題且因此保證正確的交易式記憶體語義。
第15圖說明涉及使用CLMD收回指令以輪詢是否一交易由於不一致存取或容量而被判定失敗之階段的一個實作。於一形式,第15圖的程序係至少部分地實作於計算裝置100的操作邏輯。該程序開始於開始點530,然後重複地發出GET_CLMD_EVICTIONS指令,以判定一交易是否被判定失敗(階段532)。若其係被判定失敗,則一適當行動被採取以處置該交易,例如廢除所有推測地寫入的列並做出一CMD無效(階段534)。該程序結束於結束點536。
第16圖說明涉及使用一附加物至該CMD結構以處置於硬體之判定失敗的交易之階段的一個實作。於一形式,第16圖的程序係至少部分地實作於計算裝置100的操作邏輯。該程序開始於開始點550,隨著收回處置器及處置器遮罩之初始化(階段552)。使用
CLMD_SET_EVICTION_HANDLER及CLMD_SET_EVICTION_HANDLER_MASK指令以初始化clmd_eviction_handler及clmd_eviction_handler_mask CMD控制暫存器,當具有CLMD位元交易-寫入之快取列被收回或無效時,軟體配置該CPU硬體以轉換控制至一軟體收回處置器例行程序(階段552)。當此經交易的快取列被收回或無效時,程式執行立即跳至該CLMD交易失敗處置器(階段554)。一適當行動被採取以處置該判定失敗的交易,例如廢除所有推測地寫入的列並做出一CMD無效(階段556)。該程序結束於結束點558。
一些實作可當處置器首先被調用時藉由清除eviction_handler遮罩來防止處置器之遞迴調用。請參考第17-22圖,其係描述使用快取元資料之硬體加速的軟體交易式記憶體系統。於一實作中,該快取元資料係由軟體交易式記憶體系統所使用,以加速此一系統之一些昂貴的方面,例如多餘的open_read障壁過濾、多餘的write_undo障壁過濾、讀取記錄有效、再試操作、及具有巢式交易的操作。
於此處所述之範例軟體交易式記憶體系統,資料的交易狀態係參考交易式記憶體字(TMW,“Transactional Memory Word”)來說明。一TMW描述可在一交易中存取之關聯的資料之交易的同步狀態。舉例來說,TMW可包含版本號碼(version number)、及/或具有可開放寫的資料之交易指標、及/或交易式讀取器(例如閉式讀取器)之列表
/計數及/或指示器。於一實作中,讀取器之列表/計數及/或指示器可包含於給定的時間點上存取特定值之讀取器(例如閉式)的數量之計數。於另一實作,讀取器之列表/計數及/或指示器可包含於給定的時間點上存取特定值之特定讀取器(例如閉式)的列表。於另一實作,讀取器之列表/計數及/或指示器係僅為旗標或其他指示器,以指示有於給定的時間點上存取特定值之一或多個讀取器(例如閉式)。這些實作僅為範例,且此處之術語TMW的使用係用以涵蓋許多用以追蹤鎖定狀態之機制。
請參考第17圖,其係顯示用於操作於第1圖之電腦系統(例如硬體協助的軟體應用150之其中一者)的一個實作之硬體加速的軟體交易式記憶體應用之圖解視圖。硬體加速的軟體交易式記憶體應用570包含程式邏輯572,其係負責實現此處所述之一些或所有技術。程式邏輯572包含:用以保留開啟以供讀取位元及記錄以供取消位元於CPU快取之VAMD之邏輯574;用以保留TMW寫入-觀看位元於CPU快取之CLMD之邏輯576;用以重設快取元資料於交易間之邏輯577;用以提供Open_Read障壁過濾(其使用開啟以供讀取位元以避免多餘的讀取記錄)之邏輯578;用以提供Write_Undo障壁過濾(其使用記錄以供取消位元以避免多餘的取消記錄)之邏輯580;用以當已沒有讀取集無效(例如此交易沒有讀取自其他執行緒至資料的寫入)時繞過讀取記錄有效之邏輯582;用以提供標示CLMD列的再試操作之邏輯584:用以提供使用一些快取元資料以避免多餘的過
濾及不需要的有效之巢式交易之邏輯586;及用以操作該應用的其他邏輯588。這些操作將於第18圖至第22圖加以描述及/或更為詳細界定。
隨著快取元資料狀態被使用以加速過濾及繞過各種多餘的或不需要的交易式記憶體障壁及簿記操作,且對於其他目的,其通常有助於重設在交易間所有快取元資料為零,使得一個交易的過濾及寫入觀看狀態不影響一些稍後的交易的過濾及觀看邏輯(577)。於一形式,所有壓縮的元資料狀態可用一短序列的指令(例如CLMD_AND_ALL及VAMD_AND_ALL)(在交易開始之前或在其結束之後立即發出)被迅速地重設。
第18圖說明涉及提供Open_Read障壁過濾(其使用開啟以供讀取位元位置於快取元資料之VAMD以有效地過濾多餘的交易式讀取記錄)之階段的一個實作。於一形式,第18圖的程序係至少部分地實作於計算裝置100的操作邏輯。該程序開始於開始點600,該系統使用一硬體加速的軟體交易式記憶體系統開始一Open_Read序列(階段602)。若VAMD開啟以供讀取位元係已對於TMW之位址被設定(決定點604),則此情形表示此TMW已被開啟以供讀取於此交易,且軟體跳過讀取障壁記錄程序(階段606、607、608)。否則,該系統設定開啟以供讀取位元於TMW之該位址的VAMD(階段606)並執行交易的Open_Read邏輯。於一形式,此記錄該讀取存取。於一形式,階段604可利用VAMD_TEST指令(之後為一條件式的跳位)來實作,而
階段606可利用VAMD_SET或VAMD_OR指令來實作。於另一形式,階段604及606可用單一VAMD_TSET指令(測試然後設定)(之後為一條件式的跳位)來一起實作。於階段607,該系統亦設定TMW寫入-觀看位元於CLMD元資料以用於該TMW的快取列。階段607可用CLMD_SET或CLMD_OR指令來實作。該程序結束於結束點612。
第19圖說明涉及Open_Write障壁的階段之一個實作,該障壁係與上述快取元資料式Open_Read過濾相配)。於一形式,第19圖的程序係至少部分地實作於計算裝置100的操作邏輯。該程序開始於開始點630,該系統使用一硬體加速的軟體交易式記憶體系統開始一Open_Write序列(階段632)。於一形式,開啟一TMW以供寫入亦保證讀取存取。因此,該系統使用VAMD_SET指令來設定開啟以供讀取位元於TMW之VAMD(階段634)。接著,該系統執行交易的Open_Write邏輯(階段636)。舉例來說,於一形式,TMW係用一指標覆寫(overwritten)至此交易物件(表示其擁有TMW的物件資料以供寫入)。於另一形式,TMW係用一指標覆寫至交易物件寫入記錄中的一項目。於任一形式,於該TMW之位元係被改變,其表示該TMW藉由一交易而被開啟以供寫入。該程序結束於結束點640。
第20圖說明涉及提供Write_Undo障壁過濾之階段的一個實作,其使用記錄以供取消位元位置於VAMD之快取元資料以有效地過濾出多餘的取消記錄。於一形式,第20圖的處理係至少部分地實作於計算裝置100的操作邏輯。該程
序開始於開始點650,該系統使用一硬體加速的軟體交易式記憶體系統開始一寫入欄位序列(階段652)。若VAMD記錄以供取消位元已對於待覆寫的資料之位址而被設定(決定點654),接著軟體跳過寫入取消記錄序列(階段656、658)。否則,該系統設定記錄以供取消位元於資料欄位之位址的VAMD(656)並執行Write_Undo記錄邏輯(階段658)。於一形式,VAMD元資料之粒化係被調整為資料的四字組。由於,其為根據寫入取消過濾的快取元資料之粒化,因此,Write_Undo記錄邏輯複製被調整為資料的四字組至該記錄,即使該資料欄位本身小於四字組。於一形式,階段654可利用VAMD_TEST指令(之後為一條件式的跳位)來實作,而階段656可利用VAMD_SET或VAMD_OR指令來實作。於另一形式,階段654及656可用單一VAMD_TSET指令(測試然後設定)(之後為一條件式的跳位)來一起實作。該程序結束於結束點660。
第21圖說明涉及提供讀取記錄有效之階段的一個實作,其使用GET_CLMD_EVICTIONS指令以當已沒有讀取集無效(例如此交易沒有讀取自其他執行緒至資料的不一致寫入)時繞過讀取記錄有效。於一形式,第21圖的程序係至少部分地實作於計算裝置100的操作邏輯。該程序開始於開始點680,該系統使用一硬體加速的軟體交易式記憶體系統進入對於一交易的確定處理(階段682)。該系統接著檢查以CLMD寫入-觀看位元標示之快取列是否在此交易時被收回或無效。以一形式,軟體發出GET_CLMD_EVICTIONS
指令,以取回收回概要,並測試寫入-觀看位元;若其為零,則被觀看的列不被另一執行緒收回或覆寫。其遵循此交易的讀取集從不遭受來自另一執行緒的不一致寫入存取,且可安全地略過昂貴的讀取記錄有效。於此情形,軟體條件式地跳過讀取記錄有效階段(階段686)。若於收回概要之寫入-觀看位元被設定,則軟體照常執行讀取記錄有效(階段686)。於任一事件,該等交易係被確定或者被適當地處置(階段692)。該程序結束於結束點692。
第22說明涉及提供標示CLMD列的再試操作之階段的一個實作。於一形式,第22圖的處理係至少部分地實作於計算裝置100的操作邏輯。該處理開始於開始點700,其判定交易再試操作應被使用於硬體加速的軟體交易式記憶體系統(階段702)。該系統回復更新至寫入該交易的資料並釋放其可能保持的任何資料寫入鎖定(階段704)。該系統接著利用先前設定的CLMD寫入-觀看位元(階段607),以降低等待的負載,並改善恢復的等待時間,另一執行緒之後的交易更新(寫入)該資料(階段706)。於一實作,係藉由使用GET_CLMD_EVICTIONS來輪詢CLMD快取收回以詢問收回概要並接著測試CLMD的收回而完成。於另一實作,軟體使用CLMD_SET_EVICTION_HANDLER及CLMD_SET_EVICTION_HANDLER_MASK指令以當具有CLMD位元交易-寫入之快取列被另一執行緒收回或無效(寫入)時初始化該收回處置器以轉換程式控制至再試-喚醒處置器。該執行緒接著可被置於睡眠狀態,於一形式
係經由旋轉-迴圈或於另一者,其係藉由執行一暫停指令以進入較低電源狀態。當任何寫入-觀看-元資料解釋的列被收回或無效時,該系統接著喚醒該等待交易並再試一次(階段708)。該程序結束於結束點710。於另一實作,可選擇的階段705亦可被執行。使用CLMD_AND_ALL,軟體將於該快取元資料之所有CLMD上的寫入-觀看位元位置歸零。軟體接著繞圈於讀取記錄之每一讀取記錄項目,其再建立一寫入-觀看CLMD位元於每一讀取記錄項目所找出的TMW位址之快取列。
雖然該主題已經以結構特徵及/或方法論行為之特定語言來描述,應了解的是,所附申請專利範圍所界定的標的不必要受限於上述之特定特徵或行為。相反地,上述之特定特徵或行為係被揭露作為實作該申請專利範圍的範例形式。此處及/或後附申請專利範圍所述之符合本實作的精神之等效、改變、及修改係意欲被保護的。
舉例來說,電腦軟體領域中具有通常知識者將了解此處所討論之範例中說明的客戶端及/或伺服器安排、使用者介面螢幕內容、及/或資料佈局可被不同地組織於一或多個電腦上,以包含較少的或額外的選擇或特徵(相較於該等範例中所描述者)。
100‧‧‧計算裝置
102‧‧‧中央處理單元
103‧‧‧CPU快取
104‧‧‧記憶體
105‧‧‧元資料
106‧‧‧虛線
106‧‧‧虛擬位址元資料
107‧‧‧快取列元資料
108‧‧‧快取元資料控制暫存器
109‧‧‧可移除的儲存器
110‧‧‧不可移除的儲存器
111‧‧‧輸出裝置
112‧‧‧輸入裝置
114‧‧‧通訊連接
115‧‧‧電腦/應用
150‧‧‧硬體協助的軟體應用
170‧‧‧硬體指令
190‧‧‧暫存器
200‧‧‧中央處理單元
202‧‧‧硬體指令集架構
204‧‧‧自動快取及處理器操作行為
206‧‧‧CMD指令
208‧‧‧VAMD指令
210‧‧‧個別的指令
212‧‧‧快閃指令
214‧‧‧CLMD指令
216‧‧‧個別的指令
218‧‧‧快閃指令
220‧‧‧執行緒內容切換儲存/恢復延伸
222‧‧‧CPU快取
224‧‧‧快取元資料
226‧‧‧元資料
228‧‧‧VAMD元資料
230‧‧‧CLMD元資料
250‧‧‧自動快取及處理器操作行為
252‧‧‧初始化(有效)
252‧‧‧快取列
252‧‧‧初始化行為
252‧‧‧初始化指令
254‧‧‧預設CLMD
256‧‧‧預設VAMD
258‧‧‧收回/無效操作
260‧‧‧快取收回概要
262‧‧‧CLMD及VAMD位元
270‧‧‧核心重置指令
272‧‧‧元資料
330‧‧‧CMD指令
332‧‧‧指令
334‧‧‧指令
336‧‧‧指令
338‧‧‧指令
340‧‧‧指令
342‧‧‧指令
344‧‧‧指令
346‧‧‧指令
348‧‧‧指令
349‧‧‧指令
350‧‧‧指令
352‧‧‧指令
354‧‧‧指令
428‧‧‧快取快閃CLMD指令
430‧‧‧快閃清除(AND ALL)指令
356‧‧‧指令
370‧‧‧VAMD指令
372‧‧‧個別的指令
376‧‧‧指令
378‧‧‧指令
380‧‧‧指令
382‧‧‧指令
384‧‧‧指令
386‧‧‧指令
388‧‧‧快取快閃VAMD指令
390‧‧‧快閃清除(AND ALL)指令
392‧‧‧快閃設定(OR_ALL)指令
410‧‧‧CLMD指令
412‧‧‧個別的指令
416‧‧‧指令
418‧‧‧指令
420‧‧‧指令
422‧‧‧指令
424‧‧‧指令
426‧‧‧指令
432‧‧‧快閃設定(OR_ALL)指令
450‧‧‧內容切換儲存及恢復延伸
470‧‧‧有限交易式記憶體應用
472‧‧‧程式邏輯
474‧‧‧用以存取CMD及CLMD元資料於CPU快取之邏輯
476‧‧‧用以當執行一交易式讀取時設定CLMD交易讀取位元於該位址之邏輯
478‧‧‧用以當執行交易式寫入時設定CLMD交易寫入位元於該位址及做出一條件式儲存之邏輯
480‧‧‧用以測試是否任何列(被標示為交易式讀取及寫入)被收回或無效(且若為否,則快閃清除所有的推測寫入位元,從而極微地確定所有的推測寫入位元)之邏輯
482‧‧‧用以存取元資料以判定一交易是否被判定失敗之邏輯
484‧‧‧用以操作該應用之其他邏輯
570‧‧‧硬體加速的軟體交易式記憶體應用
572‧‧‧程式邏輯
574‧‧‧用以保留開啟以供讀取位元及記錄以供取消位元於CPU快取之VAMD之邏輯
576‧‧‧用以保留TMW寫入-觀看位元於CPU快取之CLMD之邏輯
577‧‧‧用以重設快取元資料於交易間之邏輯
578‧‧‧用以提供Open_Read障壁過濾(其使用開啟以供讀取位元以避免多餘的讀取記錄)之邏輯
580‧‧‧用以提供Write_Undo障壁過濾(其使用記錄以供取消位元以避免多餘的取消記錄)之邏輯
582‧‧‧用以當已沒有讀取集無效(例如此交易沒有讀取自其他執行緒至資料的寫入)時繞過讀取記錄有效之邏輯
584‧‧‧用以提供標示CLMD列的再試操作之邏輯
586‧‧‧用以提供使用一些快取元資料以避免多餘的過濾及不需要的有效之巢式交易之邏輯
588‧‧‧用以操作該應用的其他邏輯
第1圖為一實作之一電腦系統的圖解視圖。
第2圖為操作於第1圖之電腦系統之一實作的一中央處
理單元之細部圖解視圖。
第3圖為說明例示硬體結構之圖式,其對於第1圖之系統對每一快取列每一邏輯處理器實作額外的元資料。
第4圖為說明例示硬體結構之圖式,其對於第1圖之系統對每一快取每一邏輯處理器實作額外的元資料。
第5圖為第1圖之系統的中央處理單元之圖解視圖,其說明例示指令集架構及其與快取元資料的互動。
第6圖為用於第5圖之中央處理單元的例示自動快取及處理器操作指令之圖解視圖。
第7圖為第1圖之系統的一個實作之處理流程圖,其說明涉及載入一快取列及初始化一些快取元資料為預設值之階段。
第8圖為第1圖之系統的一個實作之處理流程圖,其說明涉及收回一快取列或使一快取列無效之階段。
第9圖係針對第5圖之中央處理單元的例示CMD指令之圖解視圖。
第10圖係針對第5圖之中央處理單元的例示VAMD指令之圖解視圖。
第11圖係針對第5圖之中央處理單元的例示CLMD指令之圖解視圖。
第12圖係針對第5圖之中央處理單元的例示內容切換儲存及恢復延伸之圖解視圖。
第13圖為操作於第1圖之電腦系統上一個實作的有限交易式記憶體應用之圖解視圖。
第14圖為第1圖之系統的一個實作之處理流程圖,其說明涉及使用快取元資料來提供有限交易式記憶體應用之階段。
第15圖為第1圖之系統的一個實作之處理流程圖,其涉及使用CLMD收回指令以輪詢一交易是否被判定失敗之階段。
第16圖為第1圖之系統的一個實作之處理流程圖,其說明涉及使用一附加物至該CMD結構以處置於硬體之判定失敗的交易之階段。
第17圖為操作於第1圖之電腦系統的一個實作之硬體加速的軟體交易式記憶體應用之圖解視圖。
第18圖為第1圖之系統的一個實作之處理流程圖,其說明涉及提供Open_Read障壁過濾(其使用開啟以供讀取位元於CPU快取之VAMD以避免多餘的過濾)之階段。
第19圖為第1圖之系統的一個實作之處理流程圖,其說明涉及提供Open_Read障壁過濾(其使用TMW位元於CPU快取之CLMD上)之階段。
第20圖為第1圖之系統的一個實作之處理流程圖,其說明涉及提供Write_Undo障壁過濾(其使用記錄以供取消位元以有效地過濾出多餘的取消記錄)之階段。
第21圖為第1圖之系統的一個實作之處理流程圖,其說明涉及提供讀取記錄有效(其使用GET_CLMD_EVICTIONS指令於CPU上以避免不必要的讀取記錄有效)之階段。
第22圖為第1圖之系統的一個實作之處理流程圖,其說
明涉及提供標示CLMD列的再試操作之階段。
470‧‧‧有限交易式記憶體應用
472‧‧‧程式邏輯
474‧‧‧用以存取CMD及CLMD元資料於CPU快取之邏輯
476‧‧‧用以當執行一交易式讀取時設定CLMD交易讀取位元於該位址之邏輯
478‧‧‧用以當執行交易式寫入時設定CLMD交易寫入位元於該位址及做出一條件式儲存之邏輯
480‧‧‧用以測試是否任何列(被標示為交易式讀取及寫入)被收回或無效(且若為否,則快閃清除所有的推測寫入位元,從而極微地確定所有的推測寫入位元)之邏輯
482‧‧‧用以存取元資料以判定一交易是否被判定失敗之邏輯
484‧‧‧用以操作該應用之其他邏輯
Claims (12)
- 一種使用一中央處理單元之一快取中的快取元資料以改善一有限交易式記憶體系統之操作的方法,該方法包含下列操作:賦予一有限交易式記憶體應用對一中央處理單元之一快取中的快取元資料之存取;對於每一交易式讀取,設定一快取列元資料交易讀取(transaction-read)位元;對於每一交易式寫入,設定一快取列元資料交易寫入(transaction-write)位元,該快取列元資料交易寫入位元表示一推測寫入;測試標記該快取列元資料交易讀取位元或該快取列元資料交易寫入位元的列是否有收回(evictions)或無效(invalidations),該測試之執行係藉由判定是否一收回概要暫存器為非零,該收回概要暫存器包括對應於各快取列的狀態,該狀態對應於當一個別快取列被收回或無效時從該快取列元資料傳播至該收回概要暫存器的該個別快取列;藉由該測試操作,發現標記該快取列元資料交易讀取位元或該快取列元資料交易寫入位元的該等列中之一或更多者被收回或無效;及於確定時(commit time),根據發現該快取列元資料交易讀取位元或該快取列元資料交易寫入位元被標記之該等列之一或更多者被收回或無效之操作,廢 除推測地寫入的列,並呼叫一快取元資料無效指令,以重設全部快取列元資料及該收回概要暫存器為零,其中該廢除操作包含使該等推測寫入列無效,該等推測寫入列包含標記該快取列元資料交易寫入位元的該等列。
- 如申請專利範圍第1項所述之方法,其中該快取元資料無效指令係於該中央處理單元之一指令集架構的一部分。
- 一種用於處置一判定失敗(doomed)交易之方法,該方法使用一中央處理單元(CPU)之一快取中的快取元資料,該方法包含下列操作:賦予一有限交易式記憶體應用對一中央處理單元之一快取中的快取元資料之存取;回應於一收回概要暫存器被更新於在該判定失敗交易的一確定嘗試前該判定失敗交易的一快取列被收回或無效時,則配置該CPU將控制移轉至一軟體收回處置器,該快取列在對應於該快取列之快取元資料中的一交易讀取位元或一交易寫入位元被標記,該收回概要暫存器包括對應於各快取列的狀態,該狀態對應於當一個別快取列被收回或無效時從該快取列元資料傳播至該收回概要暫存器的該個別快取列;及使用該軟體收回處置器來廢除該判定失敗交易的推測寫入(speculatively written)列,其中廢除該等推測寫入列的操作包含使該等推測寫入列無效,該等 推測寫入列包含其快取元資料交易寫入位元被標記的一或更多列。
- 如申請專利範圍第3項所述之方法,進一步包含執行一快取元資料快閃清除指令。
- 如申請專利範圍第4項所述之方法,進一步包含呼叫一快取元資料無效指令,其中該快取元資料無效指令係於該中央處理單元上之一指令集架構的一部份。
- 如申請專利範圍第4項所述之方法,其中配置該CPU將控制移轉至該軟體收回處置器之操作包含設定一收回處理器遮罩暫存器。
- 如申請專利範圍第6項所述之方法,進一步包含當該軟體收回處理器被調用時,清除該收回處理器遮罩暫存器。
- 一種電腦系統,包含:一中央處理單元(CPU);連接至該CPU的一快取,該快取包括複數個快取列以及對應於各快取列的快取元資料;一收回概要暫存器,該收回概要暫存器包括對應於各快取列的狀態,該狀態對應於當一個別快取列被收回或無效時從該快取列元資料傳播至該收回概要暫存器的該個別快取列;以及一非揮發性電腦可讀取儲存媒體,該非揮發性電腦可讀取儲存媒體儲存有電腦可執行指令以用於致使該CPU執行操作來處置一判定失敗(doomed)交易, 該等操作包含:賦予一有限交易式記憶體應用對該快取列元資料的存取;回應於該收回概要暫存器被更新於在該判定失敗交易的一確定嘗試前該判定失敗交易的一快取列被收回或無效時,則配置該CPU將控制移轉至一軟體收回處置器,該快取列在對應於該個別快取列之該快取元資料中的一交易讀取位元或一交易寫入位元被標記;及使用該軟體收回處置器來廢除該判定失敗交易的推測寫入(speculatively written)列,該廢除操作係藉由使該等推測寫入列無效,該等推測寫入列的該快取元資料交易寫入位元被標記。
- 如申請專利範圍第8項所述之電腦系統,其中配置該CPU將控制移轉至該軟體收回處置器之操作包含設定一收回處理器遮罩暫存器。
- 如申請專利範圍第9項所述之電腦系統,進一步包含當該軟體收回處理器被調用時,清除該收回處理器遮罩暫存器。
- 如申請專利範圍第8項所述之電腦系統,該等操作進一步包含執行一快取元資料快閃清除指令。
- 如申請專利範圍第11項所述之電腦系統,該等操作進一步包含呼叫一快取元資料無效指令,其中該快取元資料無效指令係該中央處理單元之一指令集架構的一 部分。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/811,370 US8813052B2 (en) | 2005-12-07 | 2007-06-08 | Cache metadata for implementing bounded transactional memory |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200905474A TW200905474A (en) | 2009-02-01 |
TWI498733B true TWI498733B (zh) | 2015-09-01 |
Family
ID=40130616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097117848A TWI498733B (zh) | 2007-06-08 | 2008-05-15 | 實作有限交易式記憶體之快取元資料 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8813052B2 (zh) |
EP (1) | EP2174223B1 (zh) |
TW (1) | TWI498733B (zh) |
WO (1) | WO2008154191A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10942677B2 (en) | 2019-01-24 | 2021-03-09 | Silicon Motion, Inc. | Method for performing access management of memory device, associated memory device and controller thereof, associated host device and associated electronic device |
Families Citing this family (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8813052B2 (en) * | 2005-12-07 | 2014-08-19 | Microsoft Corporation | Cache metadata for implementing bounded transactional memory |
US20070143755A1 (en) * | 2005-12-16 | 2007-06-21 | Intel Corporation | Speculative execution past a barrier |
US8898652B2 (en) | 2006-03-23 | 2014-11-25 | Microsoft Corporation | Cache metadata for accelerating software transactional memory |
US8719807B2 (en) * | 2006-12-28 | 2014-05-06 | Intel Corporation | Handling precompiled binaries in a hardware accelerated software transactional memory system |
US8621138B2 (en) | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Flash storage controller execute loop |
US8549269B2 (en) * | 2009-03-10 | 2013-10-01 | International Business Machines Corporation | Method, apparatus or software for processing exceptions produced by an application program |
US8195891B2 (en) | 2009-03-30 | 2012-06-05 | Intel Corporation | Techniques to perform power fail-safe caching without atomic metadata |
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 |
US8370577B2 (en) | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
US8250331B2 (en) | 2009-06-26 | 2012-08-21 | Microsoft Corporation | Operating system virtual memory management for hardware transactional memory |
US8489864B2 (en) * | 2009-06-26 | 2013-07-16 | Microsoft Corporation | Performing escape actions in transactions |
US8161247B2 (en) * | 2009-06-26 | 2012-04-17 | Microsoft Corporation | Wait loss synchronization |
US20100332768A1 (en) * | 2009-06-26 | 2010-12-30 | Microsoft Corporation | Flexible read- and write-monitored and buffered memory blocks |
US8812796B2 (en) * | 2009-06-26 | 2014-08-19 | Microsoft Corporation | Private memory regions and coherence optimizations |
US8229907B2 (en) * | 2009-06-30 | 2012-07-24 | Microsoft Corporation | Hardware accelerated transactional memory system with open nested 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 |
US8533440B2 (en) * | 2009-12-15 | 2013-09-10 | Microsoft Corporation | Accelerating parallel transactions using cache resident transactions |
US8402218B2 (en) | 2009-12-15 | 2013-03-19 | Microsoft Corporation | Efficient garbage collection and exception handling in a hardware accelerated transactional memory system |
US8479053B2 (en) | 2010-07-28 | 2013-07-02 | Intel Corporation | Processor with last branch record register storing transaction indicator |
US8321635B2 (en) * | 2010-11-08 | 2012-11-27 | Lsi Corporation | Synchronizing commands for preventing data corruption |
US9223687B2 (en) * | 2012-06-15 | 2015-12-29 | International Business Machines Corporation | Determining the logical address of a transaction abort |
US9298469B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Management of multiple nested transactions |
US9311101B2 (en) | 2012-06-15 | 2016-04-12 | International Business Machines Corporation | Intra-instructional transaction abort handling |
US9015419B2 (en) | 2012-06-15 | 2015-04-21 | International Business Machines Corporation | Avoiding aborts due to associativity conflicts in a transactional environment |
US9298631B2 (en) | 2012-06-15 | 2016-03-29 | International Business Machines Corporation | Managing transactional and non-transactional store observability |
US9262320B2 (en) * | 2012-06-15 | 2016-02-16 | International Business Machines Corporation | Tracking transactional execution footprint |
US9298632B2 (en) * | 2012-06-28 | 2016-03-29 | Intel Corporation | Hybrid cache state and filter tracking of memory operations during a transaction |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US8898430B2 (en) | 2012-12-05 | 2014-11-25 | Arm Limited | Fault handling in address translation transactions |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9361221B1 (en) | 2013-08-26 | 2016-06-07 | Sandisk Technologies Inc. | Write amplification reduction through reliable writes during garbage collection |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9442662B2 (en) | 2013-10-18 | 2016-09-13 | Sandisk Technologies Llc | Device and method for managing die groups |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9582058B2 (en) | 2013-11-29 | 2017-02-28 | Sandisk Technologies Llc | Power inrush management of storage devices |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9971627B2 (en) | 2014-03-26 | 2018-05-15 | Intel Corporation | Enabling maximum concurrency in a hybrid transactional memory system |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9720837B2 (en) | 2014-06-27 | 2017-08-01 | International Business Machines Corporation | Allowing non-cacheable loads within a transaction |
US9703718B2 (en) | 2014-06-27 | 2017-07-11 | International Business Machines Corporation | Managing read tags in a transactional memory |
US10013351B2 (en) | 2014-06-27 | 2018-07-03 | International Business Machines Corporation | Transactional execution processor having a co-processor accelerator, both sharing a higher level cache |
US9772944B2 (en) | 2014-06-27 | 2017-09-26 | International Business Machines Corporation | Transactional execution in a multi-processor environment that monitors memory conflicts in a shared cache |
US10114752B2 (en) | 2014-06-27 | 2018-10-30 | International Business Machines Corporation | Detecting cache conflicts by utilizing logical address comparisons in a transactional memory |
US9477481B2 (en) | 2014-06-27 | 2016-10-25 | International Business Machines Corporation | Accurate tracking of transactional read and write sets with speculation |
US9740614B2 (en) | 2014-06-27 | 2017-08-22 | International Business Machines Corporation | Processor directly storing address range of co-processor memory accesses in a transactional memory where co-processor supplements functions of the processor |
US9658961B2 (en) | 2014-06-27 | 2017-05-23 | International Business Machines Corporation | Speculation control for improving transaction success rate, and instruction therefor |
US10073784B2 (en) | 2014-06-27 | 2018-09-11 | International Business Machines Corporation | Memory performance when speculation control is enabled, and instruction therefor |
US10025715B2 (en) | 2014-06-27 | 2018-07-17 | International Business Machines Corporation | Conditional inclusion of data in a transactional memory read set |
GB2528115B (en) * | 2014-07-11 | 2021-05-19 | Advanced Risc Mach Ltd | Dynamic saving of registers in transactions |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
KR101842764B1 (ko) * | 2016-03-18 | 2018-03-28 | 연세대학교 산학협력단 | 하드웨어 가속기와 호스트 시스템 사이의 데이터 일관성 유지 장치 및 방법 |
US10169181B2 (en) | 2016-09-15 | 2019-01-01 | International Business Machines Corporation | Efficient validation of transactional memory in a computer processor |
US10061698B2 (en) | 2017-01-31 | 2018-08-28 | Qualcomm Incorporated | Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur |
US10649785B2 (en) | 2017-04-18 | 2020-05-12 | International Business Machines Corporation | Tracking changes to memory via check and recovery |
US11010192B2 (en) | 2017-04-18 | 2021-05-18 | International Business Machines Corporation | Register restoration using recovery buffers |
US10572265B2 (en) | 2017-04-18 | 2020-02-25 | International Business Machines Corporation | Selecting register restoration or register reloading |
US10963261B2 (en) | 2017-04-18 | 2021-03-30 | International Business Machines Corporation | Sharing snapshots across save requests |
US10545766B2 (en) | 2017-04-18 | 2020-01-28 | International Business Machines Corporation | Register restoration using transactional memory register snapshots |
US10838733B2 (en) | 2017-04-18 | 2020-11-17 | International Business Machines Corporation | Register context restoration based on rename register recovery |
US10782979B2 (en) | 2017-04-18 | 2020-09-22 | International Business Machines Corporation | Restoring saved architected registers and suppressing verification of registers to be restored |
US10740108B2 (en) | 2017-04-18 | 2020-08-11 | International Business Machines Corporation | Management of store queue based on restoration operation |
US10691566B2 (en) * | 2017-07-27 | 2020-06-23 | International Business Machines Corporation | Using a track format code in a cache control block for a track in a cache to process read and write requests to the track in the cache |
US11036641B2 (en) | 2017-08-09 | 2021-06-15 | International Business Machines Corporation | Invalidating track format information for tracks demoted from cache |
US10579532B2 (en) | 2017-08-09 | 2020-03-03 | International Business Machines Corporation | Invalidating track format information for tracks in cache |
US10565109B2 (en) * | 2017-09-05 | 2020-02-18 | International Business Machines Corporation | Asynchronous update of metadata tracks in response to a cache hit generated via an I/O operation over a bus interface |
US11847459B2 (en) * | 2022-04-12 | 2023-12-19 | Microsoft Technology Licensing, Llc | Direct swap caching with zero line optimizations |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040133769A1 (en) * | 2002-12-24 | 2004-07-08 | Shailender Chaudhry | Generating prefetches by speculatively executing code through hardware scout threading |
US20050120179A1 (en) * | 2003-12-02 | 2005-06-02 | Intel Corporation (A Delaware Corporation) | Single-version data cache with multiple checkpoint support |
TWM309149U (en) * | 2006-06-23 | 2007-04-01 | Genesys Logic Inc | Data cache device of flash memory |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US5864849A (en) * | 1996-12-16 | 1999-01-26 | Lucent Technologies Inc. | System and method for restoring a multiple checkpointed database in view of loss of volatile memory |
US5940838A (en) * | 1997-07-11 | 1999-08-17 | International Business Machines Corporation | Parallel file system and method anticipating cache usage patterns |
US6266742B1 (en) * | 1997-10-27 | 2001-07-24 | International Business Machines Corporation | Algorithm for cache replacement |
US6081883A (en) * | 1997-12-05 | 2000-06-27 | Auspex Systems, Incorporated | Processing system with dynamically allocatable buffer memory |
US6230311B1 (en) * | 1998-06-12 | 2001-05-08 | International Business Machines Corporation | Apparatus and method for disabling methods called on an object |
US6449623B1 (en) * | 1998-09-04 | 2002-09-10 | Lucent Technologies Inc, | Method and apparatus for detecting and recovering from data corruption of a database via read logging |
US6360231B1 (en) * | 1999-02-26 | 2002-03-19 | Hewlett-Packard Company | Transactional memory for distributed shared memory multi-processor computer systems |
US6327175B1 (en) * | 1999-09-13 | 2001-12-04 | Cypress Semiconductor Corporation | Method and apparatus for controlling a memory array with a programmable register |
US6748457B2 (en) * | 2000-02-03 | 2004-06-08 | Realtime Data, Llc | Data storewidth accelerator |
US6920516B2 (en) * | 2000-08-31 | 2005-07-19 | Hewlett-Packard Development Company, L.P. | Anti-starvation interrupt protocol |
US6571259B1 (en) * | 2000-09-26 | 2003-05-27 | Emc Corporation | Preallocation of file system cache blocks in a data storage system |
US6687838B2 (en) * | 2000-12-07 | 2004-02-03 | Intel Corporation | Low-power processor hint, such as from a PAUSE instruction |
US20020174295A1 (en) * | 2001-01-29 | 2002-11-21 | Ulrich Thomas R. | Enhanced file system failure tolerance |
US6775727B2 (en) * | 2001-06-23 | 2004-08-10 | Freescale Semiconductor, Inc. | System and method for controlling bus arbitration during cache memory burst cycles |
US6658539B2 (en) * | 2001-10-16 | 2003-12-02 | International Business Machines Corporation | Super-coherent data mechanisms for shared caches in a multiprocessing system |
US7395274B2 (en) | 2002-07-16 | 2008-07-01 | Sun Microsystems, Inc. | Space- and time-adaptive nonblocking algorithms |
US7457822B1 (en) | 2002-11-01 | 2008-11-25 | Bluearc Uk Limited | Apparatus and method for hardware-based file system |
US7188216B1 (en) * | 2002-12-13 | 2007-03-06 | Vignette Corporation | Method and system for an extensible caching framework |
US7269694B2 (en) * | 2003-02-13 | 2007-09-11 | Sun Microsystems, Inc. | Selectively monitoring loads to support transactional program execution |
US7418577B2 (en) * | 2003-02-13 | 2008-08-26 | Sun Microsystems, Inc. | Fail instruction to support transactional program execution |
US7089374B2 (en) * | 2003-02-13 | 2006-08-08 | Sun Microsystems, Inc. | Selectively unmarking load-marked cache lines during transactional program execution |
US20040163082A1 (en) * | 2003-02-13 | 2004-08-19 | Marc Tremblay | Commit instruction to support transactional program execution |
US7594080B2 (en) * | 2003-09-12 | 2009-09-22 | International Business Machines Corporation | Temporary storage of memory line while waiting for cache eviction |
US20050086446A1 (en) | 2003-10-04 | 2005-04-21 | Mckenney Paul E. | Utilizing software locking approach to execute code upon failure of hardware transactional approach |
US7114036B2 (en) * | 2004-01-14 | 2006-09-26 | International Business Machines Corporation | Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected |
US7526616B2 (en) | 2004-03-22 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for prefetching data from a data structure |
US8055745B2 (en) * | 2004-06-01 | 2011-11-08 | Inmage Systems, Inc. | Methods and apparatus for accessing data from a primary data storage system for secondary storage |
US7822727B1 (en) * | 2004-07-02 | 2010-10-26 | Borland Software Corporation | System and methodology for performing read-only transactions in a shared cache |
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 |
US7444276B2 (en) * | 2005-09-28 | 2008-10-28 | Liga Systems, Inc. | Hardware acceleration system for logic simulation using shift register as local cache |
US8001538B2 (en) * | 2005-12-07 | 2011-08-16 | Microsoft Corporation | Software accessible cache metadata |
US8813052B2 (en) * | 2005-12-07 | 2014-08-19 | Microsoft Corporation | Cache metadata for implementing bounded transactional memory |
US8225297B2 (en) * | 2005-12-07 | 2012-07-17 | Microsoft Corporation | Cache metadata identifiers for isolation and sharing |
US7809903B2 (en) * | 2005-12-15 | 2010-10-05 | Intel Corporation | Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions |
US20070186056A1 (en) | 2006-02-07 | 2007-08-09 | Bratin Saha | Hardware acceleration for a software transactional memory system |
US8898652B2 (en) * | 2006-03-23 | 2014-11-25 | Microsoft Corporation | Cache metadata for accelerating software transactional memory |
US8180967B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US8180977B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US20080010417A1 (en) * | 2006-04-28 | 2008-01-10 | Zeffer Hakan E | Read/Write Permission Bit Support for Efficient Hardware to Software Handover |
US8060482B2 (en) * | 2006-12-28 | 2011-11-15 | Intel Corporation | Efficient and consistent software transactional memory |
US7802136B2 (en) * | 2006-12-28 | 2010-09-21 | Intel Corporation | Compiler technique for efficient register checkpointing to support transaction roll-back |
-
2007
- 2007-06-08 US US11/811,370 patent/US8813052B2/en active Active
-
2008
- 2008-05-15 TW TW097117848A patent/TWI498733B/zh active
- 2008-05-30 WO PCT/US2008/065376 patent/WO2008154191A2/en active Application Filing
- 2008-05-30 EP EP08769911.2A patent/EP2174223B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040133769A1 (en) * | 2002-12-24 | 2004-07-08 | Shailender Chaudhry | Generating prefetches by speculatively executing code through hardware scout threading |
US20050120179A1 (en) * | 2003-12-02 | 2005-06-02 | Intel Corporation (A Delaware Corporation) | Single-version data cache with multiple checkpoint support |
TWM309149U (en) * | 2006-06-23 | 2007-04-01 | Genesys Logic Inc | Data cache device of flash memory |
Non-Patent Citations (1)
Title |
---|
Bratin Saha, Ali-Reza Adl-Tabatabai, Quinn Jacobson. "Architectural Support for Software Transactional Memory". In Proceedings of the 39th Annual IEEE/ACM International Symposium on Microarchitecture. Orlando, Florida, 9–13, December 2006. * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10942677B2 (en) | 2019-01-24 | 2021-03-09 | Silicon Motion, Inc. | Method for performing access management of memory device, associated memory device and controller thereof, associated host device and associated electronic device |
TWI735918B (zh) * | 2019-01-24 | 2021-08-11 | 慧榮科技股份有限公司 | 用來進行記憶裝置的存取管理之方法、記憶裝置及其控制器、主裝置以及電子裝置 |
TWI789817B (zh) * | 2019-01-24 | 2023-01-11 | 慧榮科技股份有限公司 | 用來進行記憶裝置的存取管理之方法、記憶裝置及其控制器、主裝置以及電子裝置 |
Also Published As
Publication number | Publication date |
---|---|
US20070245099A1 (en) | 2007-10-18 |
WO2008154191A2 (en) | 2008-12-18 |
EP2174223A4 (en) | 2012-10-03 |
EP2174223B1 (en) | 2019-05-15 |
TW200905474A (en) | 2009-02-01 |
US8813052B2 (en) | 2014-08-19 |
EP2174223A2 (en) | 2010-04-14 |
WO2008154191A3 (en) | 2009-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI498733B (zh) | 實作有限交易式記憶體之快取元資料 | |
US8225297B2 (en) | Cache metadata identifiers for isolation and sharing | |
US8898652B2 (en) | Cache metadata for accelerating software transactional memory | |
US8001538B2 (en) | Software accessible cache metadata | |
US8229907B2 (en) | Hardware accelerated transactional memory system with open nested transactions | |
Bobba et al. | Tokentm: Efficient execution of large transactions with hardware transactional memory | |
US9195600B2 (en) | Mechanisms to accelerate transactions using buffered stores | |
US8356166B2 (en) | Minimizing code duplication in an unbounded transactional memory system by using mode agnostic transactional read and write barriers | |
US9280397B2 (en) | Using buffered stores or monitoring to filter redundant transactional accesses and mechanisms for mapping data to buffered metadata | |
US8402218B2 (en) | Efficient garbage collection and exception handling in a hardware accelerated transactional memory system | |
JP7221979B2 (ja) | 上位層キャッシュ内のエントリに基づいて下位層キャッシュへの流入をログすることによるトレース記録 | |
JP5608738B2 (ja) | 無制限トランザクショナルメモリ(utm)システムの最適化 | |
US8719514B2 (en) | Software filtering in a transactional memory system | |
US20100332768A1 (en) | Flexible read- and write-monitored and buffered memory blocks | |
US11119925B2 (en) | Apparatus and method for managing capability metadata | |
CN115176237B (zh) | 具有混合回写和透写的数据高速缓存 | |
CN114253603A (zh) | 用于处理器中的用户空间对象一致性的系统、装置和方法 | |
Sanyal et al. | Dynamically filtering thread-local variables in lazy-lazy hardware transactional memory | |
Wu et al. | A survey on optimizations towards best-effort hardware transactional memory | |
WO2024217677A1 (en) | Crash-consistent persistent memory devices and methods | |
Blake et al. | Duplicating and verifying logtm with os support in the m5 simulator |