TW201337585A - 用以於交易執行期間有效率地處理多個虛擬位址映射的方法、裝置及系統 - Google Patents
用以於交易執行期間有效率地處理多個虛擬位址映射的方法、裝置及系統 Download PDFInfo
- Publication number
- TW201337585A TW201337585A TW101142182A TW101142182A TW201337585A TW 201337585 A TW201337585 A TW 201337585A TW 101142182 A TW101142182 A TW 101142182A TW 101142182 A TW101142182 A TW 101142182A TW 201337585 A TW201337585 A TW 201337585A
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- translation
- transaction
- entry
- access
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
- G06F9/528—Mutual exclusion algorithms by using speculative mechanisms
-
- 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/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
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)
Abstract
此處描述一種提供結構以在代碼的基元區段內部支援軟體記憶體重新排序之裝置及方法。當一臨界區段之一開始或結束時,一轉譯緩衝器的推測位元經重置。當一推測記憶體存取造成一虛擬位址之一位址轉譯成一實體位址時,該轉譯緩衝器係經搜尋以決定是否另一個分錄(一不同虛擬位址)包括該相同實體位址。及若另一個分錄確實包括該相同實體位址,該推測執行係失敗以提供保護免於因該記憶體重新排序所造成的無效執行。
Description
本文揭示係有關於積體電路領域,及更明確言之係有關於處理器中的位址轉譯。
半導體處理與邏輯設計上的進展已經許可增加可能存在於積體電路裝置上的邏輯量。結果,電腦系統組態已經從一系統內的單一或多重積體電路演進為多個核心及多個邏輯處理器存在於個別積體電路上。一處理器或積體電路典型地包含單一處理器晶粒,於該處該處理器晶粒可包括任何核心或邏輯處理器之數目。
在積體電路上核心及邏輯處理器數目不斷地增加許可同時執行更多軟體執行緒。但可同時執行的軟體執行緒數目的增加已經產生在軟體執行緒間同步化分享資料的問題。存取在多個核心或多個邏輯處理器系統中分享的
資料之一常見解決方案係包含使用栓鎖以保證橫跨多重存取分享資料彼此互斥。但不斷增加的執行多重軟體執行緒的能力潛在地導致偽競爭與執行的串列化。
舉例言之,考慮保有分享資料之一雜湊表。使用一栓鎖系統,一程式設計師可栓鎖整個雜湊表,許可一個執行緒存取該整個雜湊表。但其它執行緒的資料通量及效能潛在地受不良影響,原因在於直到該栓鎖被解除為止,該等執行緒無法存取在該雜湊表內的任何分錄。另外,在該雜湊表內的各個分錄可被栓鎖。總而言之,在將此簡單實例外推成一大型可擴充程式之後,顯然栓鎖競爭、串列化、細粒同步化、及鎖死的避免之複雜,變成程式設計師的極為繁複的負擔。
另一項晚近資料同步化技術係包括交易記憶體(TM)的使用。其它交易執行包括基元地執行多個微操作、操作、或指令之一群組。於前述實例中,二執行緒係在該雜湊表內執行,其記憶體存取係經監視/追蹤。若二執行緒係存取/變更相同分錄,則可執行衝突解決以確保資料有效性。一個型別之交易執行係包括軟體交易記憶體(STM),於該處記憶體存取的追蹤、衝突解決、中止任務、及其它交易工作係在軟體執行,通常沒有硬體的支援。另一個型別之交易執行係包括硬體交易記憶體(HTM)系統,於該處係含括硬體以支援存取追蹤、衝突解決、及其它交易工作。
如所述可知,交易記憶體TM具有潛力以在多重執行緒間提供更佳效能。及在交易內部,編譯器及二進制
轉譯器可能重新排序在一交易區內部之載入及儲存以進一步最佳化代碼且使得其更有效。但於此重新排序靜態分析或運行時間檢查期間,決定存取該相同虛擬位址可能違反記憶體存取排序規則。於此種情況下,編譯器及二進制轉譯器可能能夠避免寫後讀(RAW)、讀後寫(WAR)、或寫後寫(WAW)至該相同虛擬記憶體位址。但軟體經常無法檢測一種情況,於該處利用兩個不同虛擬位址,但該兩個不同虛擬位址乃映射至該相同實體位址空間的虛擬位址空間之一部分。結果,該兩個不同虛擬位址潛在地映射至該相同實體位址。結果於最佳化期間,軟體重新排序一載入或儲存至映射至該相同實體位址的不同虛擬位址;但此種重新排序潛在地導致無效資料/執行。
依據本發明之一實施例,係特地提出一種裝置包含解碼邏輯,係經組配來解碼一第一交易記憶體存取操作以參照一第一虛擬位址,解碼一第二交易記憶體存取操作以參照一第二虛擬位址,其中該第一及該第二虛擬記憶體位址係為不同的虛擬記憶體位址;及轉譯邏輯,係經組配來響應於該解碼邏輯解碼該第一交易記憶體存取操作及該第二交易記憶體存取操作而轉譯該第一虛擬記憶體位址成為一第一實體位址及該第二虛擬記憶體位址成為一第二實體位址;及控制邏輯,係經組配來響應於該第一實體位址直接地相對應於該第二實體位址而使得與至少該第二記憶體操作相聯結的一交易失效。
100、200‧‧‧處理器
101、102‧‧‧核心
101a-b、102a-b‧‧‧架構態暫存器、執行緒、硬體執行緒、邏輯處理器
105‧‧‧匯流排介面模組、匯流排
110‧‧‧較高層級快取記憶體
120、121‧‧‧分支目標緩衝器(BTB)及指令轉譯緩衝器(I-TLB)
125、126、205、305‧‧‧解碼邏輯、解碼器、解碼模組
130、131‧‧‧重新命名配置器邏輯
135、136‧‧‧重新排序與引退單元
140、141‧‧‧排程器/執行單元
150、151‧‧‧較低層級資料快取記憶體及資料轉譯緩衝器(D-TLB)
160‧‧‧電力控制
170‧‧‧控制器集線器
175‧‧‧系統記憶體
176‧‧‧應用程式碼
177‧‧‧轉譯器碼
180‧‧‧裝置
201‧‧‧資料項目
203、204、303、304‧‧‧指令
203a、204a‧‧‧虛擬位址
2030、2040‧‧‧操作碼
203ta、204ta‧‧‧轉譯位址、實體位址
210‧‧‧轉譯邏輯
215、315‧‧‧控制邏輯
220‧‧‧中止
250‧‧‧其它階段、其它管線階段
310-314‧‧‧轉譯緩衝器分錄
310pa-314pa‧‧‧實體位址
310s-314s‧‧‧推測性存取位元、推測性存取欄位
310va-314va‧‧‧位址
320‧‧‧濾波/比較邏輯
325、330‧‧‧中止信號
405-455‧‧‧流程
本發明係藉附圖中之各幅圖舉例說明但非意圖囿限於此。
圖1例示說明包括具有多個處理元件(2個核心及4個執行緒插槽)的處理器之一系統的邏輯表示型態之一實施例。
圖2例示說明提供支援用以檢測多個虛擬位址對該相同實體位址的模組之邏輯表示型態之一實施例。
圖3例示說明提供支援用以檢測多個虛擬位址對該相同實體位址的模組之邏輯表示型態之另一實施例。
圖4例示說明一種當決定不同的交易存取虛擬位址映射至一相對應實體位址時中止一交易之方法的流程圖之一實施例。
於後文詳細說明部分中陳述無數特定細節諸如特定型別之特定處理器組態、特定硬體結構、特定架構與微架構細節、特定暫存器組態、特定位址匹配技術、特定型別之位址空間等的實例以供徹底瞭解本發明。但熟諳技藝人士顯然易知此等特定細節並非必要採用以實施本發明。於其它情況下,眾所周知的組件或方法,諸如特定及其它處理器架構、特定邏輯電路/所描述之演算法代碼、特定位址轉譯細節、特定解碼器之操作、特定指令格式、特定交易記憶體結構及處理器的其它特定操作細節未曾詳細描述以免不必要地遮掩本發明。
雖然後文實施例係參考處理器作說明,但其它實施例適用於其它型別的積體電路及邏輯裝置。此處描述的實施例之類似技術及教示可應用於可從較高資料通量及較高效能而獲益的其它型別之電路或半導體裝置。舉例言之,所揭示之實施例並不限於電腦系統。也可用於其它裝置,諸如手持式裝置、單晶片系統(SOC)、及嵌入式應用。手持式裝置之若干實例包括小區式電話、網際網路協定裝置、數位相機、個人數位助理器(PDA)、及手持式PC。嵌入式應用包括微控制器、數位信號處理器(DSP)、單晶片系統、小筆電(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換器,或可執行後文教示之功能與操作的任何其它系統。
此處描述的方法及設備係為了提供硬體位址轉譯的映射保護(例如將虛擬位址空間對相同實體位址空間的映射防衛解除連結以使得記憶體存取在代碼的基元區段內部重新排序)。更明確言之,位址轉譯的映射保護係就使用微處理器諸如處理器100執行交易討論。但此處描述之設備及方法並非受此所限,原因在於該等設備及方法可聯合其它處理器架構以及包括多個處理元件的任何裝置體現。舉例言之,位址轉譯的映射保障可在其它型別的積體電路及邏輯裝置體現。或可運用於小型形狀因子裝置、手持式裝置、單晶片系統(SOC)、或嵌入式應用,討論如前。此外,位址轉譯的映射保障也可針對非關交易執行的重新排序技術體現。
參考圖1,例示說明包括多個核心之一處理器之
一實施例。處理器100包括任何處理器或處理裝置,諸如微處理器、嵌入式處理器、數位信號處理器(DSP)、網路處理器、手持式處理器、應用程式處理器、共處理器、或執行代碼的其它裝置。於一個實施例中,處理器100包括至少兩個核心,亦即核心101及102,可包括非對稱性核心或對稱性核心(該具體實施例)。但處理器100可包括任何數目的處理元件其可為對稱性或非對稱性。
於一實施例中,處理元件係指支援軟體執行緒的硬體或邏輯。硬體處理元件之實例包括:一執行緒單元、一執行緒插槽、一執行緒、一處理單元、一脈絡、一脈絡單元、一邏輯處理器、一硬體執行緒、一核心、及/或能夠為一處理器保有一狀態的任何其它元件,諸如執行能或架構態。換言之,於一實施例中,一處理元件係指能夠與代碼獨立地聯結的任何硬體,諸如軟體執行緒、作業系統、應用程式、或其它代碼。實體處理器典型地係指積體電路,其可能包括任何數目的其它處理元件,諸如核心或硬體執行緒。
核心常係指位在積體電路上能維持獨立架構態的邏輯,其中各個獨立維持的架構態係與至少部分專用執行資源相聯結。與核心相反地,硬體執行緒典型地係指位在積體電路上能維持獨立架構態的邏輯,其中各個獨立維持的架構態係共享存取執行資源。如圖可知,當某些資源為共享而其它資源為一架構態所專用時,硬體執行緒與核心命名間的該行重疊。又經常,核心及硬體執行緒係由作
業系統視為個別邏輯處理器,於該處作業系統能在各個邏輯處理器上個別地排程操作。
如圖1之例示說明,實體處理器100包括兩個核心,核心101及102。此處,核心101及102被視為對稱核心,亦即核心具有相同組態、功能單元、及/或邏輯。於另一實施例中,核心101包括一無序處理器核心,而核心102包括一有序處理器核心。此處,核心101及102可個別地選自任何型別的核心,諸如本機核心、軟體管理核心、適用以執行本機指令集架構(ISA)之核心、適用以執行轉譯指令集架構(ISA)之核心、共設計核心、或其它已知核心。又更進一步討論,核心101中例示說明的功能單元係容後詳述,而核心102中的功能單元係以類似方式操作。
如圖所示,核心101包括兩個硬體執行緒101a及101b,也可稱作為硬體執行緒插槽101a及101b。因此,於一個實施例中,軟體實體諸如作業系統可能將處理器100視為能夠併行地執行四個軟體執行緒的四個分開處理器,亦即四個邏輯處理器或處理元件。如前述,第一執行緒係與架構態暫存器101a相聯結,第二執行緒係與架構態暫存器101b相聯結,第三執行緒係與架構態暫存器102a相聯結,及第四執行緒係與架構態暫存器102b相聯結。此處,如前文描述,架構態暫存器(101a、101b、102a、及102b)可稱作為處理元件、執行緒插槽、或執行緒單元。如圖之例示說明,架構態暫存器101a係在架構態暫存器101b複製,因此個別架構態/脈絡能夠針對邏輯處理器101a及邏輯處
理器101b儲存。於核心101,其它較小型資源諸如於重新命名配置器邏輯130中的指令指標器及重新命名邏輯也可針對執行緒101a及101b複製。有些資源諸如在重新排序/引退單元135的重新排序緩衝器、ILTB 120、載入/儲存緩衝器、及佇列可透過劃分而予共享。其它資源諸如通用內部暫存器、頁表基礎暫存器、低層級資料快取記憶體、及資料-TLB 115、執行單元140、及部分失序單元135係潛在可能完全共享。
處理器100經常包括其它資源,該等資源可完全共享、透過劃分而予共享、或由/給處理元件專用。於圖1中,例示說明具有所示處理器之邏輯單元/資源的純粹例示說明的處理器實施例。注意處理器可能包括或刪除此處功能單元中之任一者,以及包括任何其它圖中未闡釋的已知功能單元、邏輯、或韌體。如圖之例示說明,核心101包括一簡化的代表性失序(OOO)處理器核心。但有序處理器可用於不同實施例。OOO核心包括一分支目標緩衝器120以預測欲執行/採取的分支,及一指令轉譯緩衝器(I-TLB)120以針對指令儲存位址轉譯分錄。
核心101進一步包含耦接至提取單元120以解碼所提取的元件之解碼模組125。於一個實施例中,提取邏輯包括個別地與執行緒插槽101a、101b相聯結的定序器。通常核心101係與第一指令集架構(ISA)相聯結,其界定/載明在處理器100上可執行的指令。經常屬於第一ISA之一部分的機器碼指令包括部分指令(稱作為操作
碼),其述及/載明欲執行的指令或操作。解碼邏輯125包括電路,其從其操作碼認知此等指令,且將已解碼指令在管線上傳送用以如第一ISA定義而處理。舉例言之,容後詳述,於一個實施例中,解碼器125包括設計或適用於認知特定指令的邏輯,諸如交易指令。由解碼器125認知的結果,架構或核心101採行特定預先界定的動作以執行與合宜指令相聯結的工作。要緊地須注意此處描述的工作、區塊、操作、及方法中之任一者皆可響應於單一指令或多個指令而執行;其中部分可為新指令或舊指令。
於一個實例中,配置器及重新命名區塊130包括一配置器以保留資源,諸如暫存器檔案以儲存指令處理結果。但執行緒101a及101b係潛在地可能失序執行,於該處配置器及重新命名器區塊130也保留其它資源,諸如重新排序緩衝器以追蹤指令結果。單元130也可包括暫存器重新命名器以重新命名程式/指令參考暫存器至處理器100內部的其它暫存器。重新排序/引退單元135包括組件,諸如前述重新排序緩衝器、載入緩衝器、及儲存緩衝器,以支援失序執行及後來有序引退失序執行的指令。
於一個實施例中,排程器及執行單元區塊140包括一排程器單元以排程在執行單元上的指令/操作。舉例言之,一浮點指令係在具有一可用浮點執行單元的一執行單元之一埠上排程。也含括與執行單元相聯結的暫存器檔案
以儲存資訊指令處理結果。執行單元實例包括一浮點執行單元、一整數執行單元、一跨接執行單元、一載入執行單元、一儲存執行單元、及其它已知執行單元。
低層級資料快取記憶體及資料轉譯緩衝器(D-TLB)150係耦接至執行單元140。資料快取記憶體係儲存晚近使用的/操作的元件,諸如資料運算元,其可能保有於記憶體同調態。D-TLB係儲存晚近虛擬/線性至實體位址轉譯。舉個特定實例,處理器可包括頁表結構以破壞實體記憶體成為多個虛擬頁面。
此處,核心101及102共享存取較高層級或更進一步外側快取記憶體110,其係快取晚近提取的元件。注意較高層級或更進一步外側係指快取記憶體層級增加或更進一步遠離執行單元。於一個實施例中,較高層級快取記憶體110為最末層級資料快取記憶體,亦即在處理器100上記憶體階層關係中的最末快取記憶體,諸如第二或第三層級資料快取記憶體。但較高層級快取記憶體110係不受此限,原因在於其可能與一指令快取記憶體相聯結或包括一指令快取記憶體。取而代之,一軌線快取記憶體亦即一型指令快取記憶體可在解碼器125之後耦接以儲存晚近解碼的軌線。
於所闡釋的組態中,處理器100也包括一匯流排介面模組105以與處理器100外部裝置通訊,諸如系統記憶體175、晶片組(經常包括連結至記憶體175的記憶體控制器集線器及連結周邊裝置的I/O控制器集線器)、記憶體控制器集線器、北橋、或其它積體電路。匯流排105可包括任何已
知之互連體,諸如多插匯流排、點對點互連體、串聯互連體、並聯匯流排、同調(例如快取同調)匯流排、層狀協定架構、差分匯流排、及GTL匯流排。系統記憶體175可專用於處理器100或與系統中的其它裝置共享。該型記憶體175的共用實例包括動態隨機存取記憶體(DRAM)、SRAM(SRAM)、非依電性記憶體(NV記憶體)及其它已知儲存裝置。注意裝置180可包括圖形加速度器、耦接至記憶體控制器集線器(MCH)的處理器或卡、耦接至I/O控制器集線器的資料儲存裝置、無線收發器、快閃裝置、音訊控制器、網路控制器、或其它已知裝置。
注意於該具體實施例中,控制器集線器及記憶體係顯示為在處理器100外部。但此處描述的方法及裝置之體現並非囿限於此。實際上,隨著更多個邏輯及裝置係整合在單一晶粒上,諸如單晶片系統(SOC),此等裝置各自可結合於處理器100。舉例言之,於一個實施例中,記憶體控制器集線器係在與處理器100相同的封裝體及/或晶粒上。此處,部分核心(核心上部分)包括一控制器集線器用以介接其它裝置諸如控制器集線器。於SOC環境中,甚至更多裝置諸如網路介面、共處理器、及任何其它已知之電腦裝置/介面可整合在單一晶粒或積體電路上以提供具有高功能與低功耗的小型形狀因子。
於一個實施例中,處理器100能夠做硬體交易執行、軟體交易執行、或其組合/混成。一交易又稱一臨界或基元碼區段/碼區域的執行,包括一群組欲作為一基元群執
行的指令或操作。舉例言之,指令或操作可用以將一交易或一臨界區段畫界或定界。於一個實施例中,容後詳述,此等指令為一指令集的一部分,諸如指令集架構(ISA),其可由處理器100的硬體辨識,諸如後述解碼器125。經常此等指令一旦從高階語言編譯成硬體可辨識組合語言,包括解碼器125在解碼階段期間辨識的操作碼(opcodes)或其它指令部分。
典型地,於交易執行期間,更新為記憶體並非全球可見直到委付交易為止。舉例言之,一交易寫至一位置乃本地執行緒可見;但響應於從另一個執行緒讀取,寫資料不會前傳直到包括該交易寫的該交易被委付為止。當該交易仍然懸置中時,追蹤下載及寫至記憶體的資料項目/元件,容後詳述。一旦該交易達到一委付點,若對該交易並非偵測得衝突,則該交易被委付且在該交易期間所做更新變成通用可見。但若該交易在其懸置期間變成失效,則交易被中止且可能重新開始而未使得該等更新為通用可見。結果,如此處使用,一交易的懸置係指一交易已經開始執行,且尚未被委付或中止,換言之,懸置中。
軟體交易處理記憶體(STM)系統經常係指在其內或至少主要透過軟體或代碼的執行而從事存取追蹤、衝突解決、或其它交易記憶體工作。於一個實施例中,處理器100能夠利用硬體/邏輯亦即在一硬體交易處理記憶體(HTM)系統內部執行交易。當體現一HTM時從架構及微架構觀點二者存在有無數特定體現細節;大半在此處未加討
論以免不必要地遮掩討論。但若干結構、資源及體現係揭示用於例示說明目的。但須注意此等結構及體現並非必要且可放大及/或以具有不同體現細節的其它結構置換。與交易記憶體密切相關的另一項執行技術包括栓鎖省略{俗稱為硬體栓鎖省略(HLE)}。於此種情況下,成對栓鎖指令(栓鎖與栓鎖解除)係以基元起始與結構定界指令置換(由使用者、軟體、或硬體置換)。及成對栓鎖指令間的代碼區段係類似一交易而予執行。
至於組合,處理器100可使用混成辦法(硬體及軟體二者)執行交易,諸如在定界交易記憶體(UTM)系統內部,其試圖利用STM及HTM系統二者的效果。舉例言之,HTM經常為快速且有效可用以執行小型交易,原因在於其不仰賴軟體以執行全部存取追蹤、衝突偵測、驗證、及委付交易。但HTM通常只能處理小型交易,而STM能夠處理較大型交易,俗稱作為定界大小交易。因此,於一個實施例中,UTM系統利用硬體以執行較小型交易,及利用軟體以執行對硬體而言為過大的交易。如從後文討論可知,即便當軟體處理交易時,硬體可用以輔助與加速軟體;此種混成辦法通稱為硬體加速STM,原因在於主要交易記憶體系統(簿記等)係註在軟體,但係使用硬體鉤加速。
回頭圖1之討論,於一個實施例中,處理器100包括監視器以檢測或追蹤存取,及與資料項目相聯結的可能的隨後衝突。一資料項目、資料物品、或資料元件,諸如資料項目201可包括在任何粒度層級的資料,如硬體、軟
體或其組合定義。資料、資料元件、資料項目或其參照的非排它列表包括一記憶體位址、一資料物品、一類別、一型動態語言碼之一欄位、一型動態語言碼、一變數、一運算元、一資料結構、及間接述及一記憶體位址。但任何已知之資料群皆可稱作為資料元件或資料項目。前述少數實例,諸如一型動態語言碼之一欄位及一型動態語言碼係指動態語言碼之資料結構。為了例示說明,動態語言碼諸如得自昇陽微系統公司(Sun Microsystems,Inc.)的爪哇乃強力型別的語言。各個變數具有在編譯時為已知的型別。該等型別係劃分成兩類,亦即基元型(布林及數值,例如int、浮動)及參考型(類別、介面及陣列)。參考型之值係述及物件。於爪哇中,由欄位所組成的一物品可為一類別例或一陣列。給定類別A的物品a,習常使用標示法A::x來表示型別A的欄位x,及使用a.x來表示類別A的物品a的欄位x。舉例言之,一種表示法為a.x=a.y+a.z。此處欄位y及欄位z係載入欲相加,結果寫至欄位x。
因此,監視/緩衝記憶體存取資料項目可於資料層級粒度中之任一者執行。舉例言之,於一個實施例中,記憶體存取資料係在型別層級監視。此處,一交易寫至欄位A::x及一非交易載入欄位A::y可監視為存取相同資料項目,亦即型別A。於另一個實施例中,記憶體存取監視/緩衝係在欄位層級粒度執行。此處,一交易寫至欄位A::x及一非交易載入欄位A::y係不監視為存取相同資料項目,原因在於其係述及不同欄位。注意,其它資料結構或規劃技
術可考慮用以追蹤記憶體的存取資料項目。舉個實例,假設類別A物品欄位x及y(亦即A::x及A::y)指向類別B的物品,係經初始化為新配置的物品,而在初始化之後不曾寫入。於一個實施例中,有關一非交易載入由A::y所指標的一物品的一欄位B::z,一交易寫至由A::x所指標的一物品的一欄位B::z係不監視為記憶體存取相同資料項目。從此等實施例外推,可能決定監視器可在任何資料粒度層級執行監視/緩衝。
於一個實施例中,注意此等監視器具有相同屬性(或含括有)前文對STM加速所描述的屬性。於此種情況下,監視器可作為硬體追蹤及軟體加速支援的雙重功能。舉例言之,處理器100的硬體包括讀監視器及寫監視器以追蹤載入與儲存,據此決定欲追蹤。硬體讀監視器及寫監視器可在資料項目的粒度監視資料項目,儘管潛在儲存結構的粒度亦復如此。或者另外,係以儲存結構的粒度監視。於一個實施例中,一資料項目係由與在該儲存結構的粒度相聯結的追蹤機構定界以確保至少妥當監視整個資料項目。
至於特定具體實施例中,讀及寫監視器包括與快取位置相聯結的屬性,諸如在低層級資料快取記憶體150(於若干實施例中,包括推測快取記憶體)以監視載入及儲存至與該等位置相聯結的位址。此處,資料快取記憶體150之快取位置的讀屬性係對與該快取位置相聯結的一位址設定一讀事件,以監視寫至相同位址的潛在衝突。於此種情況下,寫屬性係以類似方式針對寫事件操作,以監視
讀與寫至相同位址的潛在衝突。此一實例更進一步,基於監聽讀及寫至快取位置,硬體能夠偵測衝突,讀及/或寫屬性係經設定以指示快取位置係經監視。相反地,設定讀及寫監視器,或更新一快取位置至一緩衝態,於一個實施例中,結果導致監聽,諸如讀請求或讀所有權請求,許可偵測與其它快取記憶體中監視的位址衝突。
因此,基於該項設計,快取同調請求與所監視的同調態的不同組合結果導致潛在衝突,快取行保有一資料項目於共享讀取監視態,及監聽指示一寫請求至該資料項目。相反地,一快取行保有一資料項目於緩衝寫態,外部監聽指示讀請求至該資料項目可視為潛在相衝突。於一個實施例中,為了檢測此種存取請求與屬性態的組合,監聽邏輯係耦接至衝突檢測/報告邏輯,諸如衝突偵測/報告監視器及/或邏輯,以及報告衝突的狀態暫存器。
但條件與景況的任一種組合皆可視為用於交易為失效。可視為交易的非委付之因素實例包括,偵測對交易存取的記憶體位置之衝突,遺失監視器資訊,遺失緩衝資料,遺失與交易存取的資料項目相聯結的母資料,及檢測其它失效事件,諸如中斷、振鈴過渡、或明確使用者指示。
於一個實施例中,處理器100的硬體係以緩衝方式保有交易更新。如前述,交易寫並非通用可見直到交易被委付為止。但與交易寫相聯結的本地軟體執行緒能夠存取交易更新用於接續交易存取。舉個第一實例,分開緩衝
器結構係提供於處理器100以保有經緩衝的更新,能夠提供更新給本地執行緒,而不提供給其它外部執行緒。
相反地,舉另一個實例,快取記憶體諸如資料快取記憶體150係用以緩衝更新,同時提供相同的交易功能。此處,快取記憶體150能夠保有資料項目於緩衝同調態。於一個情況下,新的緩衝同調態係加至一快取同調協定,諸如修正互斥共用無效(MESI)協定以形成一MESIB協定。響應於針對緩衝資料項目的本地請求,資料項目被保有於緩衝同調態,快取記憶體150提供該資料項目給本地處理元件以確保內部交易循序排序。但響應於外部存取請求,提供遺漏回應以確保該經交易更新的資料項目不會變成通用可見直到被委付為止。此外,當快取記憶體150的一行被維持於緩衝同調態且被選用以驅離時,經緩衝的更新係不被回寫至較高層級快取記憶體,經緩衝的更新係不被複製通過記憶體系統,亦即不會變成通用可見直到委付為止。取而代之,交易可被中止,或驅離行可被儲存於該資料快取記憶體與較高層級快取記憶體間的一推測結構,諸如犧牲快取記憶體。當委付時,緩衝行係過渡為修正態以使得該資料項目變成通用可見。
注意,內部及外部等術語經常係與一交易的執行或共享一快取記憶體的處理元件相聯結的一執行緒的觀點有關。舉例言之,用以執行與一交易的執行相聯結的一軟體執行緒之第一處理元件係稱作為本地執行緒。因此,於前文討論中,若接收到儲存至或從先前由第一執行緒寫入
的一位址載入,結果導致該位址之一快取行被保有於緩衝同調態,則該快取行的緩衝版本被提供給第一執行緒,原因在於其為本地執行緒。相反地,第二執行緒可在同一個處理器內部的另一個處理元件上執行,但不與負責該快取行保有在緩衝態亦即外部執行緒的交易執行相聯結;因此,載入或從第二執行緒儲存至該位址遺漏該快取行的緩衝版本,利用普通快取置換以從較高層級記憶體取回該快取行的未經緩衝版本。
於一個實施例中,處理器100可執行編譯器、最佳化、及/或轉譯器碼177以編譯應用程式碼176以支援轉譯執行,以及潛在地最佳化應用程式碼176,諸如執行重新排序。此處,編譯器可將運算、呼叫、功能及其它碼插入以許可執行交易,以及提供記憶體操作重新排序的軟體支援。
編譯器常包括一程式或程式集合以將來源文字/碼轉譯成目標文字/碼。通常,以編譯器編譯程式/應用程式碼係於多相進行,且發送而將高階程式語言碼變換成低階機器或組合語言碼。但單通編譯器仍然可用於簡單編譯。編譯器可利用任何已知之編譯技術,及執行任何已知之編譯器操作,諸如辭彙分析、前處理、剖析、語義分析、碼產生、碼變換、及碼最佳化。交易執行與動態碼編譯的交叉可能導致更積極最佳化,同時保有需要的記憶體排序之安全防衛。
較大型編譯器經常包括多相,但最常見此等相係含括於兩個一般相內部:(1)一前端,亦即通常可進行語法
處理、語義處理、及若干變換/最佳化,及(2)一後端,亦即通常進行分析、變換、最佳化、及碼產生。有些編譯器係指中間,例示說明一編譯器的前端與後端間之界線的模糊化。結果,述及編譯器的插入、聯結、產生、或其它操作可於前述多相或多次通過的任一者進行,以及於編譯器的任何其它已知相或通過進行。至於一個具體實施例,編譯器潛在地將交易操作、呼叫、功能等插入編譯的一或多相,諸如於編譯的前端相將呼叫/操作插入編譯器,及然後於交易記憶體變換相期間將呼叫/操作變換成低階碼。注意於動態編譯期間,編譯器碼或動態最佳化碼可插入此等操作/呼叫,以及於執行期間最佳化該執行碼。至於特定具體實施例中,於執行期間二進制碼(已編譯碼)可動態地最佳化。此處,程式碼可包括動態最佳化碼、二進制碼、或其組合。
雖言如此,儘管一編譯器的執行環境及動態或靜態本質;於一個實施例中,編譯器編譯程式碼以許可程式碼的交易執行及/或最佳化區段。類似編譯器,轉譯器諸如二進制轉譯器靜態地或動態地轉譯碼而最佳化及/或轉譯代碼。因此,述及碼、應用程式碼、程式碼、STM環境、或其它軟體環境的執行,可指稱:(1)編譯器程式、最佳化碼最佳化器或轉譯器動態地或靜態地執行以編譯程式碼,維持交易結構,執行其它交易相關操作,最佳化代碼,或轉譯代碼;(2)主程式碼的執行,包括交易操作/呼叫,諸如已經最佳化/編譯的應用程式碼;(3)其它程式碼的執行,諸如與主程式碼相聯結的存庫的執行以維持交易結構,執行
其它交易相關操作,或最佳化碼;或(4)其組合。
經常在軟體交易處理記憶體(STM)系統中,編譯器將用以插入某些操作、呼叫及其它代碼排齊欲編譯的應用程式碼,而其它操作、呼叫、功能及代碼係於存庫內分開地提供。如此潛在地提供存庫分配器最佳化與更新存庫的能力而無需重新編譯應用程式碼。至於特定實例,呼叫委付功能可在交易委付點排齊插入在應用程式碼內,而委付功能係分開地提供於一可更新存庫。及委付功能包括插入或操作,當執行時,重置轉譯緩衝器的推測位元,容後詳述。此外,置放特定操作及呼叫於何處的選擇潛在影響應用程式碼的功效。舉另一個實例,二進制轉譯碼係於處理裝置的韌體或微碼層提供。當遭逢二進制碼時,該二進制轉譯碼係經執行以轉譯及潛在地最佳化(包括記憶體重新排序)該碼用以在處理裝置上執行。
及如此處所述,於一個實施例中,硬體結構係經提供以支援在交易區(臨界區段)內部的此種最佳化,同時確保當不同虛擬位址頁映射至同一個實體頁時的有效執行。結果,在碼的基元區段可執行軟體最佳化,諸如自動化向量加寬(例如加寬128位元向量指令成為256位元向量指令)而無需擔憂最佳化將導致無效執行。
於一個實施例中,於硬體碼的基元區段執行期間(或因交易執行或硬體栓鎖省略),若對兩個不同虛擬位址頁/空間的兩個基元記憶體操作導致相同實體記憶體空間的虛擬至實體變換,則該基元區段失效/中止。舉個實例,硬
體結構係經含括或修改以檢測此種轉譯情況及中止交易。因此,於某些情況下,軟體(編譯器、最佳化器、及/或轉譯器)係不適合欲測此種轉譯問題,執行最佳化,及仰賴硬體保護資料的完好。
至於具體實施例,推測存取位元(s-位元)加至一轉譯緩衝器諸如資料轉譯後備緩衝器(d-TLB)。在一基元區段的起點(或同理,在一先前臨界區段的終點)該等位元經重置至一內設值。當記憶體操作使得利用該給定TLB分錄的轉譯執行時,一給定TLB分錄的一位元係設定為一被存取值。此外當針對一分錄的s-位元被設定時,硬體決定針對該分錄的已轉譯實體位址是否相對應於(透過一濾波器或直接匹配)另一個TLB分錄的另一個實體位址,也具有其s-位元係被設定為該被存取值。若硬體決定另一個分錄具有相對應實體位址(及其s-位元也經設定),則與記憶體操作相聯結的交易失效/被中止。如前述,硬體決定實體位址對應關係可在任何粒度執行(迭代重複地通過各個TLB分錄或藉群集化/濾波TLB分錄)。
舉例言之,布隆(bloom)濾波器可用以決定一實體位址是否係映射至與TLB中其它實體位址的相同集合。若確實屬於相同集合,則可進一步決定該實體位址是否映射來自該集合的一實體位址。又於若干實施例中,當一TLB分錄具有其s-位元被設定為該被存取值而被選用以驅離時,一交易失效。於此種情況下,可有利地偏移TLB置換演算法免於驅離具有其s-位元被設定為該被存取值的分錄。
轉向圖2,闡釋模組之邏輯表示型態之一實施例,該模組提供支援檢測及/或處理多個未經轉譯的位址轉譯成相對應的轉譯位址。注意於後文討論中,未經轉譯的位址(虛擬位址)及經轉譯的位址(實體位址)之一具體實施例係利用於進一步討論。但此處描述的方法及實施例可用以述及位址的任何轉譯以及保有該等轉譯的晚近版本之任何結構。
於一個實施例中,解碼器205係經組配來解碼可辨識為針對處理器200定義的指令集架構的一部分之指令。此處,解碼邏輯205係經組配來解碼一第一交易記憶體存取操作(指令203)以參考一第一虛擬位址(虛擬位址203a)。舉個實例,解碼器205辨識指令203之一操作碼(操作碼2030)以識別來自指令集架構(ISA)的指令。及處理器200管線的其餘部分(其它階段250)、階段、邏輯(轉譯邏輯210)、韌體等基於由解碼器205對指令203的識別而採取預定動作。
如圖所示,例示說明地指令203包括一推測操作,其乃代碼之臨界/基元區段的一部分。舉例言之,屬於代碼之臨界區段的一部分之一推測操作包括一起始基元/交易/臨界區段指令、一結束基元/交易/臨界區段指令、一基元/交易/臨界區段記憶體存取指令等。同理,解碼器205也係經組配來認知及解碼指令204,其係述及操作碼2040及虛擬位址204a。當虛擬位址203a與204a為相同時,轉譯邏輯210典型地執行相同轉譯至一實體位址。結果,為了加速
轉譯,邏輯210經常包括一緩衝器以維持晚近轉譯。結果,接續轉譯被加速,原因在於當轉譯已經被保有於一緩衝器內時,潛在地避免頁表走頁以執行轉譯。
相反地,若虛擬位址203a與204a為相異時,則進行兩次不同轉譯,亦即一虛擬位址指標的轉譯緩衝器包括兩個轉譯分錄;一者用於虛擬位址203a及一者用於虛擬位址204a。換言之,轉譯邏輯210將虛擬位址203a轉譯成一實體(轉譯)位址203ta。及同理,虛擬位址204a被轉譯成一轉譯位址204ta。注意位址轉譯,諸如利用頁表的轉譯經常個別地與執行緒相聯結,在此不做特別說明以免不必要地遮掩討論。
在各次轉譯時,轉譯緩衝器分錄係經產生、儲存及/或更新以保有與轉譯位址203ta相對應的或相聯結的虛擬位址虛擬位址203a,及與轉譯位址204ta相對應的或相聯結的虛擬位址虛擬位址204a。先前軟體(於靜態分析期間或使用執行時間檢查)可能避免重新排序存取至相同虛擬記憶體位址。但當兩個不同虛擬位址203a、204a映射至相同實體位址時,軟體可能無法偵測與避免此種狀況;則可能導致無效的執行(RAW、WAR、或WAW狀況)。但於一個實施例中,諸如轉譯邏輯210及控制邏輯215等模組係將確保此種狀況不會導致無效的執行。
結果,於一個實施例中,各個轉譯分錄係含括(或相聯結)一推測存取欄位。當轉譯邏輯210以一新轉譯更新一轉譯分錄時(亦即響應於解碼器205解碼指令203,以與經
轉譯位址203ta相聯結的未經轉譯位址203a的一轉譯以更新一轉譯分錄),轉譯邏輯210也係經組配來或適用以更新該相對應的推測存取欄位成為一存取值;此係指示相對應於轉譯緩衝器分錄已經經交易存取或推測存取。
此外,於一個實施例中,控制邏輯215係經組配
來響應於經轉譯位址203ta直接地相對應於經轉譯位址204ta,失效與一推測記憶體操作(例如指令204)相聯結的一交易。換言之,若兩個不同推測存取轉譯緩衝器分錄保有彼此直接相對應的轉譯位址,則與該等轉譯緩衝器分錄中之至少一者相聯結的一交易被中止。就虛擬位址及實體位址開始的另一種方式係:若兩個不同的推測存取虛擬位址轉譯成相對應的實體位址(如由二不同轉譯緩衝器分錄的內容指示),則與該等分錄相聯結的一交易被中止/失效。
此處,假設指令203已經被提取(一指令指標器移動至參照指令203,及提取邏輯從記憶體或快取記憶體獲得該指令203)。及然後指令203係藉解碼器205解碼。響應於之,轉譯邏輯210轉譯虛擬位址203a成為實體位址203ta,及執行有關該參照位址203ta的在管線階段250中之預定操作。在轉譯後,轉譯邏輯210快取或儲存該轉譯於一結構,諸如一轉譯緩衝器。此外,假設指令203為一推測指令,諸如交易記憶體存取操作,則轉譯邏輯210設定與被快取或儲存的轉譯分錄相聯結的一推測位元。
當遇上指令204時遵照類似的處理。及當更新轉譯緩衝器分錄(及因而更新推測位元)時,控制邏輯215決定
是否另一個推測性存取的轉譯緩衝器分錄保有一相對應轉譯位址(相對應於204ta的一位址)。本質上,先前陳述包括:(1)決定一轉譯緩衝器分錄是否經推測性存取及(2)決定一轉譯緩衝器分錄是否保有相對應於實體位址204ta的一實體位址。又,此種決定可以任何順序進行。
至於第一實例,決定推測性存取的緩衝器分錄之一集合(亦即各個分錄具有其推測性存取的位元集合,基於設計體現,該位元集合可限於一特定執行緒或橫跨分享存取該轉譯緩衝器的全部執行緒)。然後,搜尋推測性存取的分錄集合以決定其是否保有一位址係相對應於實體位址204ta。另外,該轉譯緩衝器被搜尋相對應於實體位址204ta的一實體位址。及若找到此種相對應的實體位址,則決定相聯結的轉譯緩衝器分錄是否標記為推測性存取。至於組合,一TLB可被迭代重複地搜尋,諸如以硬體狀態機搜尋,以決定一分錄是否保有相對應於實體位址204ta的一位址且被標記以推測性存取二者;此種搜尋也可分解成多個部分(例如決定是否被推測性存取,且若非推測性存取,則無位址比較而繼續進行),或同時進行(例如推測位元被附接至位址204ta用於比較處理)。
至於另一實例,一濾波器或演算法係用以決定一轉譯緩衝器是否保有相對應於實體位址204ta的任何位址。此處利用一濾波器諸如布隆過濾。實體位址諸如位址204ta被映射至(例如雜湊至)一布隆過濾位元集合。及於一個實施例中,若兩個實體位址映射入相同集合,則可決定
為相對應實體位址。注意此種景況涵蓋實體位址相對應於彼此的較大粒度(例如多重實體位址發現為相對應於彼此)。但潛在減少決定一確切實體位址匹配的額外負擔,原因在於潛在地避免完整的位址比較。
相對應於彼此的位址之位準或範圍乃可變更以達成更多中止(透過相對應位址的更大型群組而對應更多個位址,可能導致更多衝突及中止)或更少中止(精細粒度確切實體位址匹配,唯有當兩個虛擬位址映射至確切相同實體位址時才中止)的一設計體現選擇。此外,可利用多層辦法。此處,初始施加一濾波器以瞭解是否有任何其它轉譯緩衝器分錄保有一實體位址雜湊至位址204ta的同一個集合。若並無任何其它緩衝器分錄保有此一實體位址,則無衝突且繼續正常執行。但若發現一或多個位址係相對應於濾波位準,則進行位址比較以決定過濾集合中之一者是否匹配位址204ta。結果,當無過濾位址為相對應時,檢驗實質上加速。及即便當確切相對應位址存在於針對位址204ta的轉譯緩衝器時,由於使用濾波器縮窄分錄,使得位址比較潛在地在更少數位址執行而檢驗潛在地加速。
因此,透過迭代重複搜尋、濾波、或任何其它找出結構內容的方法,於本實例中假設實體位址204ta與203ta為相對應。及二位址203ta、204ta係藉不同的虛擬位址推測性存取(例如基於兩個不同虛擬位址分別地保有實體位址203ta、204ta而註記兩個緩衝器分錄為推測性存取)。於一個實施例中,控制邏輯215起始與指令204相聯結的代碼之
基元區段的中止或失效。注意於一實施例中,於該處推測位元係在交易的起點或終點重置,可假設二分錄係與相同臨界區段相聯結。
此處,起始一交易的中止可如同宣告(或相反地解除宣告)中止信號220般簡單,可能造成在一暫存器(例如狀態暫存器)的一中止欄位被更新。及響應於該狀態暫存器的被更新,一相聯結的交易被中止(同步地或異步地)。經常於硬體交易記憶體系統中,在開始執行交易前,取架構態及記憶體態的一檢查點。此種景況下,中止經常必需將此種架構態及記憶體態回轉到該檢查點。但於該處HTM利用快取記憶體以保有嘗試性更新。交易存取行可註記為更動(dirty)或無效。及先前資料(亦即來自檢查點的資料)可應需而從更高階記憶體帶入快取記憶體。
於一個實施例中,控制邏輯215係進一步經組配來響應於註記為推測性存取(當相聯結的一推測性存取欄位保有一推測性存取值時)的一轉譯緩衝器分錄(用於虛擬位址203a至實體位址203ta或虛擬位址204a至實體位址204ta)被從該轉譯緩衝器驅離而讓一交易失效。實際上,一轉譯緩衝器具有有限空間。結果,如前述假設針對指令203執行轉譯,及一緩衝器分錄係以推測性存取欄位集合更新至與位址203a相聯結的一存取值係相對應於位址203ta。然後,填滿轉譯緩衝器,需要新空間以做新轉譯。若無交易失敗而驅離該緩衝器分錄,則當位址203ta與204ta匹配時,無法檢測衝突,原因在於有關位址203ta的推測性存取資訊
已經被驅離而遺失。因此於一個實施例中,當驅離一推測緩衝器分錄時,目前交易被中止或失效;指示交易耗盡硬體資源而充分地確保資料完好。
至於一可能設計體現之實施例,在分錄尚未經推測性註記之前,控制邏輯215置換不具有其推測性位元集合的轉譯緩衝器分錄。此種結構的最典型置換演算法係最非晚近使用(亦即若一緩衝器分錄為最舊,則最先被剔除)。但於本實例中,有關非推測存取分錄,LRU演算法可經修改而對置換推測性存取轉譯緩衝器分錄施加偏壓。舉例言之,即便當一推測性存取緩衝器分錄為最非晚近使用的分錄時,選擇一非推測性存取緩衝器分錄以供驅離,而保留推測蹤跡。但注意對此置換施加偏壓,就選擇一非推測分錄優於一推測分錄而言可能並非絕對。換言之,依據該策略、暗示或其它因素,一推測性緩衝器分錄可在一非推測性緩衝器分錄之前被置換。
由於此種保護結果,軟體被致能就虛擬位址而言,在代碼的基元區段內部執行最佳化,諸如指令重新排序。換言之,軟體能夠假設兩個不同虛擬位址不會存取相同實體位址。及於一代碼的基元區段執行的執行時間期間,諸如在HTM環境或在HLE環境之一臨界區段的硬體交易執行,若兩個不同虛擬位址參照同一個實體位置,則硬體起始基元區段的中止以確保使用前述基本假設所做的任何軟體最佳化不會造成任何不良效應。
其次參考圖3,例示說明硬體結構之邏輯表示型
態之一實施例以供支援在代碼的基元區段內部的記憶體存取操作之軟體重新排序。類似圖2的討論,解碼邏輯305係經組配來解碼交易記憶體操作303及304,又稱來自代碼的臨界或基元區段之基元操作或推測操作。
轉譯緩衝器310包括轉譯緩衝器分錄310-314將保有晚近轉譯。注意轉譯緩衝器310可包括任何緩衝器以保有透過一演算法而彼此相關的二值或二位址,諸如資料轉譯後備緩衝器(dTLB),保有虛擬至實體位址轉譯。如圖之例示說明,轉譯緩衝器分錄310-314各自包括(或相聯結)一推測性存取欄位(分別為推測性存取欄位310s-314s)。
舉個實例,在執行期間,解碼器305檢測與解碼指令303。轉譯邏輯307將虛擬位址303a轉譯成實體位址313pa,及儲存該轉譯於分錄313。此外,假設指令303包括一推測指令,諸如來自一代碼的基元區段的記憶體存取指令,則推測存取欄位313s被更新為推測性存取值以指示緩衝器313已經被推測性存取。於一個實施例中,欄位313s包括一儲存胞元以保有一「位元」(亦即邏輯值)。此處,位元313s可具有內設值或重置值,諸如邏輯1或邏輯高;及一設定值(或推測性存取值)諸如邏輯零或邏輯低。
於類似方式,解碼器305解碼指令304,執行轉譯以獲得實體位址314pa,儲存該轉譯於分錄314,及更新推測性存取位元314s為一推測性存取值。雖然於若干實施例中,後述搜尋係在轉譯分錄314被更新之前進行;因此,若出現中止則無需進行更新。儘管該順序,控制邏輯315決定
在緩衝器310內的另一個轉譯緩衝器分錄是否含括一相對應實體位址。如前述,於一個實施例中,比較邏輯320包括一硬體狀態機以迭代重複地搜尋轉譯緩衝器310而決定與推測存取欄位313s相聯結的的一分錄諸如轉譯緩衝器分錄313是否保有該推測性存取值,參照已轉譯的實體位址314a。首先,注意對指令303的初始解碼也可進行相似搜尋。第二,於一個實例中,緩衝器310的搜尋包括搜尋通過各個分錄310-313(314除外,原因在於其包括位址314pa的搜尋標準)。及於搜尋中,決定全部或部分實體位址諸如實體位址310pa-313pa匹配全部或相對應部分位址314a。
於若干實施例中,部分或全部位址匹配只是中止或失效的單一標準。此處,若分錄313若不標記為推測性存取(位元313s係經設定),則無衝突。又,一旦在搜尋期間決定衝突,可未完成搜尋即起始該基元區段的中止或失效。繼續前述實例,假設實體位址313s匹配實體位址314pa。於此種情況下,比較邏輯320以無匹配比較實體位址310a-312a。但當比較實體位址314a與313a時發現匹配。於該比較期間,作為該項比較的一部分或分開地,決定分錄313係從欄位313s推測性存取。舉例言之,推測性存取欄位313s可附隨於實體位址313a而與附隨於314a的欄位314s作比較。確切匹配指示二位址匹配,該等推測位元係設定至一存取值。
但不要求確切位址匹配及迭代重複地搜尋通過整個緩衝器310。於其它實施例中,濾波器可用以將位址群
集在一起。及若位址群或位址集合中之任一者係在轉譯緩衝器中,則可引發中止或執行進一步搜尋。舉例言之,替代匹配全部位址314a,使用部分位址314a。此處部分位址314a大致上係指匹配該等特定位元的多個潛在位址。換言之,為了速度犧牲特定位址匹配的準確性。但若因位走群過大而發生過多中止,則在一群組內可進行匹配後,群組可動態地決定大小或進一步搜尋。或者首先決定分錄313係基於欄位313s推測性存取。及隨後,實體位址313pa及314pa的位址比較導致位址匹配。
至於另一個實施例,邏輯320包括布隆過濾邏輯,係雜湊位址314pa成為一位元集合。此處多個位址雜湊成相同集合。如上實例,若實體位址313pa匹配位址314pa,則布隆過濾邏輯320決定其係屬同一個集合。屬於同一個集合的結果,決定位址為相對應。於一個實施例中,由此資訊,開始交易失敗,諸如以中止信號330。於另一個替代例中,布隆過濾將導致過多中止,若位址匹配同一集合,則在該集合內部執行類似前文討論的迭代重複搜尋。舉例言之,假設位址312pa-314pa,當藉濾波邏輯320雜湊時全部映射至同一個集合。此處,並非搜尋全部緩衝器310的位址匹配,搜尋分錄312-313;如此可能免除須比較分錄310-311。於一個實例中,在搜尋兩個分錄而非整個緩衝器後在分錄313發現實體位址匹配,將導致中止。注意若未發現匹配,可消除藉由濾波群組產生的額外中止而免除額外搜尋成本。因此設計師(或動態執行時間調整)能夠平衡潛
在中止之數目與搜尋速度及效率。
於另一個實施例中,指令303包括一定界指令,係解除欲執行的代碼的基元區段之界限。此處,解碼器305係解碼定界指令303,述及位址303va。經常,一定界指令包括一起始臨界區段指令或一結束臨界區段指令。舉個實例,用於交易執行,一使用者或編譯器插入一開始及/或結束基元區段指令以解除界限(界定)一用於執行的代碼的臨界區段。同理,於HLE,一栓鎖與栓鎖解除對係以帶有一起始及結束臨界區段指令,以軟體、韌體、硬體或其組合置換,結果導致類似一交易,栓鎖對係被省略,臨界區段係被執行。如前述,一定界指令可包括一呼叫一開始交易或結束交易功能,係提供於存庫代碼。因此,述及執行一操作,諸如後述重置推測位元可參考一指令或操作符合呼叫一存庫功能或該存庫功能內部的一指令或操作。
此處,響應於解碼器305解碼定界指令303,推測性存取欄位310s-314s被重置為一內設值。因此,當開始一交易、結束一交易或二者時,推測性存取欄位被重置。基於得已經被委付的一先前交易的推測性存取,結果得自目前交易方推測性存取不會造成中止。舉例言之,開始交易存庫功能包括一「定界」指令,當執行時,重置推測欄位310s-314s,故該等欄位始於一非推測性存取值。換言之,獲得追蹤在轉譯緩衝器310內的基元轉譯之重新開始。注意類似在執行緒或處理元件間分享的其它資源,一處理元件識別符(PID)可結合推測性存取欄位310s-314s用以設定、搜
尋、及重置使得多個執行緒分享存取緩衝器310。
移至圖4,顯示響應於推測性存取未經轉譯位址之轉譯成相對應轉譯位址,一種中止一交易之流程圖實施例。注意圖4之流程圖的流程係以實質上串列方式以一列舉的流程順序舉例說明。但不要求此等流程的串列本質以及闡釋順序。例如,參考圖4,基於設計體現,若於流程430中在更新轉譯分錄前發現一實體位址相對應於一轉譯位址,則流程415及420可能不執行。及流程405-435係以實質上線性或串列方式例示說明。但流程可與相同時間週期並列地執行。舉例言之,於流程425,替代迭代重複地搜尋被標記的轉譯分錄及然後於流程430決定是否存在有一實體位址匹配,可首先比較實體位址,及然後決定匹配的分錄係否加推測標記。此外,例示說明之流程中之任一者可在硬體、軟體、韌體或其組合內部執行。呈一或多個指令或操作形式的任何程式碼可使得機器執行後文例示說明及描述的流程。注意後文討論係述及交易的執行。但流程同樣適用於HLE的基元區段或其它基元推測性執行。
從前文討論,經推測標記的轉譯分錄係當結束交易(中止或委付)或當開始交易時被重置。然後於流程405,遭遇來自一交易的一交易記憶體操作。如前述,該交易記憶體操作參照一記憶體位址,諸如虛擬位址。互動操作可考慮為在處理的任何已知階段,當指令指標器指示交易記憶體操作時諸如選自於由提取階段、解碼階段、調度階段、排程階段、執行階段、及引退階段所組成的一組群中之一
管線階段。
於流程410,響應於所遇的交易記憶體操作,該虛擬位址被轉譯成一實體位址。經常諸如轉譯係利用頁表進行。及雖然頁表及位址轉譯在此處不詳加討論以免遮掩本文的討論,但任何已知之位址轉譯法皆可使用。其次於流程415及420,第一轉譯分錄係以與(相對應於)該已轉譯的實體位址相聯結的虛擬位址更新。及該第一轉譯分錄被標示作為交易存取。舉例言之,相聯結的、相對應於及/或含括於該轉譯分錄的一推測位元係設定為一推測存取邏輯值。
參考流程425,決定也被標示以交易存取的第二轉譯分錄是否係相對應於得自第一轉譯分錄的該實體位址。於一個實施例中,如前文討論,對應關係包括決定保有於該第二轉譯分錄的第二實體位址是否匹配該實體位址。至於另一個具體實施例,對應關係包括決定保有於該第二轉譯分錄的第二實體位址是否匹配該實體位址的相同集合。此處,可利用布隆過濾以決定二實體位址是否屬於相同集合。
以無論透過過濾或匹配,於流程425,若實體位址相對應,則已決定該分錄經推測加記號。因此於流程435,交易被中止或失效。結果軟體、韌體或微碼可就未經轉譯位址執行記憶體排序,及仰賴硬體結構以提供保證此種未經轉譯位址係差異不映射至相同實體位址。或者至少若其確實地映射至相同實體位址,則與轉譯相聯結的推測
基元執行將在無效的執行被委付給記憶體態或架構態之前被中止或失效。
如此處使用,一模組係指任何硬體、軟體、韌體或其組合。經常例示說明模組邊界為分開,但常有改變且可能重疊。舉例言之,第一與第二模組可分享硬體、軟體、韌體或其組合,但可能仍然保有某些獨立的硬體、軟體、或韌體。於一個實施例中,邏輯一詞的使用包括硬體,諸如電晶體、暫存器或其它硬體諸如可程式規劃邏輯裝置。但於另一個實施例中,邏輯也包括與硬體整合的軟體或代碼,諸如韌體或微碼。
如此處使用,一值係包括數目、狀態、邏輯態、或二進制邏輯態之任何已知的表示型態。經常邏輯位準、邏輯值之使用也係指1及0,單純表示二進制邏輯態。舉例言之,1係指高邏輯位準,及0係指低邏輯位準。於一個實施例中,一儲存胞元諸如電晶體或快取記憶體胞元能夠保有單一邏輯值或多個邏輯值。但已經使用電腦系統中之數值的其它表示型態。舉例言之,十進制數字10也可表示為二進制值1010及十六進制字母A。因此一值可包括保有於電腦系統中的資訊之任一種表示型態。
此外,狀態可以數值或數值部分表示。舉例言之,第一值諸如邏輯壹可表示內設態或初始態,而第二值諸如邏輯零可表示非內設態。此外,於一個實施例中,重置及設定等詞分別地係指內設的及更新的值或態。舉例言之,內設值潛在地包括一高邏輯值,亦即重置;而更新值
潛在地包括一低邏輯值,亦即設定。注意任何數值組合皆可用以表示任何狀態之數目。
前述方法、硬體、軟體或代碼之實施例可透過可藉處理元件執行的儲存於一機器可存取、機器可讀取、電腦可存取或電腦可讀取媒體上的指令或代碼體現。非過渡機器可存取/可讀取媒體包括任何機構係以可由機器諸如電腦或電子裝置讀取形式提供(亦即儲存及/或傳輸)資訊。舉例言之,非過渡機器可存取媒體包括隨機存取記憶體(RAM)諸如靜態RAM(SRAM)或動態RAM(DRAM);ROM;磁性或光學儲存媒體;快閃記憶體裝置;電氣儲存裝置;光學儲存裝置;聲學儲存裝置;用以保有接收自過渡(傳播)信號(例如載波、紅外線信號、數位信號等)之資訊的其它形式儲存裝置;等係與可從其中接收資訊的非過渡媒體區別。
本說明書全文中述及「一個實施例」或「一實施例」表示連結該實施例描述的一特定特徵、結構、或特性係含括於至少一個本發明之實施例。如此,「於一個實施例中」或「於一實施例中」出現於本說明書全文各處並非必要皆係指同一個實施例。又復,該等特定特徵、結構、或特性可以任一種合宜方式組合於一或多個實施例。
於前文說明書中,已經參考特定具體實施例做詳細說明。但顯然可未悖離如隨附之申請專利範圍陳述之本發明廣義精髓及範疇而做出各項修改及變化。據此,說明書及圖式部分須視為說明性意義而非限制性意義。此外,前文實施例及其它實例語言的使用並非必要係指相同實施
例或相同實例,反而可指不同的且分開的實施例以及潛在地相同的實施例。
100‧‧‧處理器
101、102‧‧‧核心
101a-b、102a-b‧‧‧執行緒、架構態暫存器
105‧‧‧匯流排介面
110‧‧‧較高層級快取記憶體
120、121‧‧‧提取單元、指令轉譯緩衝器(I-TLB)
125、126‧‧‧解碼模組、解碼邏輯、解碼器
130、131‧‧‧重新命名/分配器邏輯
135、136‧‧‧重新排序/引退單元
140、141‧‧‧排程器/執行單元
150、151‧‧‧較低層級資料快取記憶體及資料轉譯緩衝器(D-TLB)
160‧‧‧電力控制
170‧‧‧控制器集線器
175‧‧‧系統記憶體
176‧‧‧應用程式碼
177‧‧‧轉譯器碼
180‧‧‧裝置
Claims (24)
- 一種裝置,其係包含:解碼邏輯,係經組配來解碼一第一交易記憶體存取操作以參照一第一虛擬位址,解碼一第二交易記憶體存取操作以參照一第二虛擬位址,其中該第一及該第二虛擬記憶體位址係為不同的虛擬記憶體位址;及轉譯邏輯,係經組配來響應於該解碼邏輯解碼該第一交易記憶體存取操作及該第二交易記憶體存取操作而轉譯該第一虛擬記憶體位址成為一第一實體位址及該第二虛擬記憶體位址成為一第二實體位址;及控制邏輯,係經組配來響應於該第一實體位址直接地相對應於該第二實體位址而使得與至少該第二記憶體操作相聯結的一交易失效。
- 如申請專利範圍第1項之裝置,其中經組配來轉譯該第一虛擬記憶體位址成為一第一實體位址及該第二虛擬記憶體位址成為一第二實體位址的該轉譯邏輯係包含:頁表邏輯,其係經組配來轉譯該第一虛擬記憶體位址成為該第一實體位址及該第二虛擬記憶體位址成為該第二實體位址,及其中該轉譯邏輯係包括一轉譯緩衝器,其係經組配來保有一第一轉譯分錄以包括相對應於該第一實體位址的該第一虛擬位址,及一第二轉譯分錄以包括相對應於該第二實體位址的該第二虛擬位址。
- 如申請專利範圍第2項之裝置,其中該第一轉譯分錄係 進一步包括一第一推測存取欄位及該第二轉譯分錄係進一步包括一第二推測存取欄位,及其中該轉譯邏輯係進一步經組配來響應於該解碼邏輯解碼該第一交易記憶體存取操作而更新該第一推測存取欄位成為一推測存取值,及響應於該解碼邏輯解碼該第二交易記憶體存取操作而更新該第二推測存取欄位成為該推測存取值。
- 如申請專利範圍第3項之裝置,其中組配以響應於該第一實體位址直接地相對應於該第二實體位址而使得與至少該第二記憶體操作相聯結的一交易失效的該控制邏輯係包含:響應於該解碼邏輯解碼該第二交易記憶體存取操作,該控制邏輯係經組配來,響應於該第一推測存取欄位保有該經存取值,決定該第一轉譯緩衝器分錄係經推測地存取;響應於決定該第一轉譯緩衝器分錄係經推測地存取,決定該第一實體位址是否直接地相對應於該第二實體位址;及響應於決定該第一實體位址係直接地相對應於該第二實體位址而使得該交易失效。
- 如申請專利範圍第3項之裝置,其中組配以響應於該第一推測存取欄位保有該經存取值而決定該第一轉譯緩衝器分錄係經推測地存取及響應於決定該第一轉譯緩衝器分錄係經推測地存取而決定該第一實體位址係直接地相對應於該第二實體位址的該控制邏輯係包含一硬體狀態機,以迭代重複地比較保有於具有一相聯結的 推測存取欄位設定為該被存取值的各個轉譯緩衝器分錄內之一實體位址與該第二實體位址,及響應於比較保有於該第一轉譯緩衝器分錄內之該第一實體位址與該第二實體位址且該第一實體位址係匹配該第二實體位址,決定該第一實體位址係直接地相對應於該第二實體位址。
- 如申請專利範圍第1項之裝置,其中組配以響應於該第一實體位址係直接地相對應於該第二實體位址而使得與至少該第二記憶體操作相聯結的一交易失效之該控制邏輯係包含:布隆(bloom)過濾邏輯係經組配來將該第一實體位址與該第二實體位址雜湊成為一布隆過濾位元集合;響應於該第一實體位址與該第二實體位址之雜湊指示其為一相同集合之一部分,決定該第一實體位址係直接地相對應於該第二實體位址。
- 如申請專利範圍第3項之裝置,其中該控制邏輯係進一步經組配來當該第一推測存取欄位保有該推測存取值時,響應於該第一轉譯緩衝器分錄係從該轉譯緩衝器驅離而使得一交易失效。
- 如申請專利範圍第3項之裝置,其中該控制邏輯係進一步經組配來當該第一推測存取欄位及該第二推測存取欄位保有該推測存取值時,在置換該第一轉譯緩衝器分錄及該第二轉譯緩衝器分錄之前,置換一第三轉譯緩衝器分錄。
- 一種裝置,其係包含:解碼邏輯,係經組配來解碼來自一交易的一交易記憶體存取,該交易記憶體存取係參照一位址;一轉譯緩衝器,係經組配來保有與一轉譯緩衝器分錄相聯結的一推測存取欄位,其中該轉譯緩衝器分錄係經組配來保有與一轉譯位址相聯結的該位址,其中該轉譯緩衝器係進一步經組配來響應於該解碼邏輯解碼該交易記憶體存取,更新該推測存取欄位成為一存取值,及決定含括於與保有該存取值之一第二推測存取欄位相聯結的該轉譯緩衝器中的一第二轉譯緩衝器分錄是否參照該轉譯位址;及控制邏輯,係經組配來響應於該交易緩衝器決定含括於與保有該存取值之該第二推測存取欄位相聯結的該轉譯緩衝器中的該第二轉譯緩衝器分錄係參照該轉譯位址,起始該交易之一中止。
- 如申請專利範圍第9項之裝置,其中該位址係包括一虛擬記憶體位址及該轉譯位址係包括一實體位址。
- 如申請專利範圍第9項之裝置,其中經組配以決定含括於與保有該存取值之一第二推測存取欄位相聯結的該轉譯緩衝器中的一第二轉譯緩衝器分錄是否參照該轉譯位址的該轉譯緩衝器係包括一硬體狀態機而搜尋該轉譯緩衝器以響應於保有在該第二轉譯緩衝器分錄中之一位址匹配該轉譯位址而決定該第二轉譯緩衝器分 錄係與保有該存取值的該第二推測存取欄位相聯結且決定該第二轉譯緩衝器分錄係參照該轉譯位址。
- 如申請專利範圍第9項之裝置,其中經組配以決定含括於與保有該存取值之一第二推測存取欄位相聯結的該轉譯緩衝器中的一第二轉譯緩衝器分錄是否參照該轉譯位址的該轉譯緩衝器係包括一硬體狀態機而搜尋該轉譯緩衝器以響應於保有於該第二轉譯緩衝器分錄內的一位址之一布隆過濾雜湊係映射至含括該轉譯位址之一集合而決定該第二轉譯緩衝器分錄係與保有該存取值的該第二推測存取欄位相聯結且決定該第二轉譯緩衝器分錄係參照該轉譯位址。
- 一種裝置,其係包含:解碼邏輯,係經組配來解碼一定界指令,該指令係將欲執行之一代碼的基元區段指定界限,該定界指令係參照一位址;一轉譯緩衝器,係經組配來包括多個轉譯緩衝器分錄,該等多個轉譯緩衝器分錄各自係與一推測存取欄位相聯結;及控制邏輯,係經組配來響應於該解碼邏輯解碼該定界交易指令,重置與該等多個轉譯緩衝器分錄中之各個轉譯緩衝器分錄相聯結的該推測存取欄位成一未經存取值。
- 如申請專利範圍第13項之裝置,其中該定界指令係包括一起始臨界區段指令。
- 如申請專利範圍第13項之裝置,其中該定界指令係包括一結束臨界區段指令。
- 如申請專利範圍第13項之裝置,其中該解碼邏輯係進一步經組配來解碼一基元記憶體存取操作,及該控制邏輯係進一步經組配來響應於該轉譯緩衝器分錄回應於該解碼邏輯解碼該基元記憶體存取操作而被存取,更新與該等多個轉譯緩衝器分錄中之一轉譯緩衝器分錄相聯結的一推測存取欄位。
- 如申請專利範圍第16項之裝置,其中該控制邏輯係進一步經組配來響應於保有一接續實體位址其係相對應於該先前實體位址的一第二轉譯緩衝器分錄回應於該解碼邏輯解碼一第二基元記憶體操作而被推測地存取,起始該臨界區段之一中止。
- 一種方法,其係包含:於參照一虛擬位址的一交易中遭遇一交易記憶體操作;響應於遭遇該交易記憶體操作,轉譯該虛擬位址成一實體位址;響應於轉譯該虛擬位址成該實體位址,以與該實體位址相聯結的該虛擬位址更新一第一轉譯分錄,及註記該第一轉譯分錄為經交易存取;決定也被註記為經交易存取之一第二轉譯分錄是否係相對應於該實體位址;及 響應於決定該第二轉譯分錄係相對應於該實體位址而中止該交易。
- 如申請專利範圍第18項之方法,其中遭遇該交易記憶體操作係包含於選自於由下列所組成之一組群中之一管線階段中遭遇該交易記憶體操作:當一指令指標器係參照該交易記憶體操作時一提取階段、一解碼階段、一調度階段、一排程階段、一執行階段、及一引退階段。
- 如申請專利範圍第18項之方法,其中響應於遭遇該交易記憶體操作而轉譯該虛擬位址成一實體位址係包括利用一頁表轉譯該虛擬位址成該實體位址。
- 如申請專利範圍第18項之方法,其中註記該第一轉譯分錄為經交易存取係包含註記與該第一轉譯分錄相聯結的一第一推測存取位元。
- 如申請專利範圍第18項之方法,其中決定也被註記為經交易存取之一第二轉譯分錄是否係相對應於該實體位址係包含決定保有於該第二轉譯分錄中的一第二實體位址是否匹配該實體位址。
- 如申請專利範圍第18項之方法,其中決定也被註記為經交易存取之一第二轉譯分錄是否係相對應於該實體位址係包含決定保有於該第二轉譯分錄中的一第二實體位址是否映射至與該實體位址相同之一集合。
- 如申請專利範圍第18項之方法,其中響應於決定該第二轉譯分錄係相對應於該實體位址而中止該交易係包含響應於決定該第二轉譯分錄係相對應於該實體位址而 回轉一記憶體態及一架構態到該交易之前的一點。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/063888 WO2013085518A1 (en) | 2011-12-08 | 2011-12-08 | A method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201337585A true TW201337585A (zh) | 2013-09-16 |
TWI494770B TWI494770B (zh) | 2015-08-01 |
Family
ID=48464690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101142182A TWI494770B (zh) | 2011-12-08 | 2012-11-13 | 用以於交易執行期間有效率地處理多個虛擬位址映射的方法、裝置及系統 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10387324B2 (zh) |
DE (1) | DE102012023574A1 (zh) |
TW (1) | TWI494770B (zh) |
WO (1) | WO2013085518A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107077421A (zh) * | 2014-12-23 | 2017-08-18 | 英特尔公司 | 用于页表游走改变位的指令和逻辑 |
TWI620122B (zh) * | 2014-12-24 | 2018-04-01 | 英特爾股份有限公司 | 用於資料推測執行的設備和方法 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10387324B2 (en) | 2011-12-08 | 2019-08-20 | Intel Corporation | Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution |
US9292294B2 (en) | 2012-09-27 | 2016-03-22 | Intel Corporation | Detection of memory address aliasing and violations of data dependency relationships |
US8984254B2 (en) * | 2012-09-28 | 2015-03-17 | Freescale Semiconductor, Inc. | Techniques for utilizing translation lookaside buffer entry numbers to improve processor performance |
US9384037B2 (en) * | 2013-03-14 | 2016-07-05 | Intel Corporation | Memory object reference count management with improved scalability |
US9411729B2 (en) * | 2014-02-27 | 2016-08-09 | International Business Machines Corporation | Salvaging lock elision transactions |
US9870209B2 (en) * | 2014-03-28 | 2018-01-16 | Intel Corporation | Instruction and logic for reducing data cache evictions in an out-of-order processor |
US20150378904A1 (en) * | 2014-06-27 | 2015-12-31 | International Business Machines Corporation | Allocating read blocks to a thread in a transaction using user specified logical addresses |
US10114752B2 (en) | 2014-06-27 | 2018-10-30 | International Business Machines Corporation | Detecting cache conflicts by utilizing logical address comparisons in a transactional memory |
US9608863B2 (en) * | 2014-10-17 | 2017-03-28 | Cisco Technology, Inc. | Address autoconfiguration using bloom filter parameters for unique address computation |
US10303525B2 (en) | 2014-12-24 | 2019-05-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10387156B2 (en) | 2014-12-24 | 2019-08-20 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10061589B2 (en) * | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10942744B2 (en) | 2014-12-24 | 2021-03-09 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US10061583B2 (en) | 2014-12-24 | 2018-08-28 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US9785442B2 (en) | 2014-12-24 | 2017-10-10 | Intel Corporation | Systems, apparatuses, and methods for data speculation execution |
US9477516B1 (en) | 2015-03-19 | 2016-10-25 | Google Inc. | Concurrent in-memory data publication and storage system |
GB2539958B (en) * | 2015-07-03 | 2019-09-25 | Advanced Risc Mach Ltd | Data processing systems |
US9940128B2 (en) * | 2015-10-06 | 2018-04-10 | International Business Machines Corporation | Conditional access with timeout |
US10318295B2 (en) | 2015-12-22 | 2019-06-11 | Intel Corporation | Transaction end plus commit to persistence instructions, processors, methods, and systems |
US10152527B1 (en) * | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US10509729B2 (en) * | 2016-01-13 | 2019-12-17 | Intel Corporation | Address translation for scalable virtualization of input/output devices |
US20180004521A1 (en) * | 2016-07-01 | 2018-01-04 | Intel Corporation | Processors, methods, and systems to identify stores that cause remote transactional execution aborts |
GB2554442B (en) * | 2016-09-28 | 2020-11-11 | Advanced Risc Mach Ltd | Apparatus and method for providing an atomic set of data accesses |
US10228981B2 (en) | 2017-05-02 | 2019-03-12 | Intel Corporation | High-performance input-output devices supporting scalable virtualization |
US10635654B2 (en) * | 2017-06-12 | 2020-04-28 | Samsung Electronics Co., Ltd. | Data journaling for large solid state storage devices with low DRAM/SRAM |
US10768915B2 (en) | 2018-10-18 | 2020-09-08 | Denso International America, Inc. | Systems and methods for selectively instrumenting a program according to performance characteristics |
US11301218B2 (en) | 2020-07-29 | 2022-04-12 | Bank Of America Corporation | Graph-based vectorization for software code optimization references |
US11256488B1 (en) | 2020-07-29 | 2022-02-22 | Bank Of America Corporation | Graph-based vectorization for software code optimizations |
TWI777268B (zh) * | 2020-10-07 | 2022-09-11 | 大陸商星宸科技股份有限公司 | 虛擬記憶管理方法及處理器 |
US11361400B1 (en) | 2021-05-06 | 2022-06-14 | Arm Limited | Full tile primitives in tile-based graphics processing |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4410060B4 (de) * | 1993-04-08 | 2006-02-09 | Hewlett-Packard Development Co., L.P., Houston | Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse |
US6453387B1 (en) * | 1999-10-08 | 2002-09-17 | Advanced Micro Devices, Inc. | Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy |
US6493812B1 (en) * | 1999-12-17 | 2002-12-10 | Hewlett-Packard Company | Apparatus and method for virtual address aliasing and multiple page size support in a computer system having a prevalidated cache |
EP1182571B1 (en) * | 2000-08-21 | 2011-01-26 | Texas Instruments Incorporated | TLB operations based on shared bit |
US6877088B2 (en) * | 2001-08-08 | 2005-04-05 | Sun Microsystems, Inc. | Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition |
US6615337B1 (en) * | 2001-08-09 | 2003-09-02 | Advanced Micro Devices, Inc. | Method and apparatus for maintaining coherency in a translation lookaside buffer |
US7073043B2 (en) * | 2003-04-28 | 2006-07-04 | International Business Machines Corporation | Multiprocessor system supporting multiple outstanding TLBI operations per partition |
US7398359B1 (en) * | 2003-04-30 | 2008-07-08 | Silicon Graphics, Inc. | System and method for performing memory operations in a computing system |
US7685365B2 (en) | 2004-09-30 | 2010-03-23 | Intel Corporation | Transactional memory execution utilizing virtual memory |
US7984248B2 (en) | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US7882339B2 (en) * | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US7383415B2 (en) * | 2005-09-09 | 2008-06-03 | Sun Microsystems, Inc. | Hardware demapping of TLBs shared by multiple threads |
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 |
US8683143B2 (en) * | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US20070186056A1 (en) | 2006-02-07 | 2007-08-09 | Bratin Saha | Hardware acceleration for a software transactional memory system |
US8180967B2 (en) | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US7502897B2 (en) | 2006-06-28 | 2009-03-10 | Intel Corporation | Object based conflict detection in a software transactional memory |
US7542977B2 (en) | 2006-06-29 | 2009-06-02 | Intel Corporation | Transactional memory with automatic object versioning |
US8239657B2 (en) | 2007-02-07 | 2012-08-07 | Qualcomm Incorporated | Address translation method and apparatus |
US8117403B2 (en) * | 2007-05-14 | 2012-02-14 | International Business Machines Corporation | Transactional memory system which employs thread assists using address history tables |
US8719514B2 (en) * | 2007-06-27 | 2014-05-06 | Intel Corporation | Software filtering in a transactional memory system |
US7516365B2 (en) * | 2007-07-27 | 2009-04-07 | Sun Microsystems, Inc. | System and method for split hardware transactions |
US8250254B2 (en) | 2007-07-31 | 2012-08-21 | Intel Corporation | Offloading input/output (I/O) virtualization operations to a processor |
US9513959B2 (en) * | 2007-11-21 | 2016-12-06 | Arm Limited | Contention management for a hardware transactional memory |
US20090198694A1 (en) * | 2008-01-31 | 2009-08-06 | Tessil Thomas | Resolving conflicts in a transactional execution model of a multiprocessor system |
US8180986B2 (en) * | 2008-09-17 | 2012-05-15 | Microsoft Corporation | Memory conflict detection via mapping of the physical heap to control access permissions to the memory |
US9672019B2 (en) * | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US9785462B2 (en) * | 2008-12-30 | 2017-10-10 | Intel Corporation | Registering a user-handler in hardware for transactional memory event handling |
US8484438B2 (en) * | 2009-06-29 | 2013-07-09 | Oracle America, Inc. | Hierarchical bloom filters for facilitating concurrency control |
US8214598B2 (en) | 2009-12-22 | 2012-07-03 | Intel Corporation | System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries |
US10387324B2 (en) | 2011-12-08 | 2019-08-20 | Intel Corporation | Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution |
-
2011
- 2011-12-08 US US13/976,846 patent/US10387324B2/en not_active Expired - Fee Related
- 2011-12-08 WO PCT/US2011/063888 patent/WO2013085518A1/en active Application Filing
-
2012
- 2012-11-13 TW TW101142182A patent/TWI494770B/zh not_active IP Right Cessation
- 2012-12-03 DE DE201210023574 patent/DE102012023574A1/de not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107077421A (zh) * | 2014-12-23 | 2017-08-18 | 英特尔公司 | 用于页表游走改变位的指令和逻辑 |
TWI620122B (zh) * | 2014-12-24 | 2018-04-01 | 英特爾股份有限公司 | 用於資料推測執行的設備和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20130275715A1 (en) | 2013-10-17 |
TWI494770B (zh) | 2015-08-01 |
US10387324B2 (en) | 2019-08-20 |
WO2013085518A1 (en) | 2013-06-13 |
DE102012023574A1 (de) | 2013-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI494770B (zh) | 用以於交易執行期間有效率地處理多個虛擬位址映射的方法、裝置及系統 | |
JP6342970B2 (ja) | トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性 | |
JP5944417B2 (ja) | トランザクショナル・メモリ・イベントの処理のためのハードウェアにおけるユーザハンドラの登録 | |
US10409611B2 (en) | Apparatus and method for transactional memory and lock elision including abort and end instructions to abort or commit speculative execution | |
US8612950B2 (en) | Dynamic optimization for removal of strong atomicity barriers | |
TWI434214B (zh) | 用以延伸快取一致性以保持緩衝資料之裝置,處理器,系統及方法 | |
US8769212B2 (en) | Memory model for hardware attributes within a transactional memory system | |
US20150032998A1 (en) | Method, apparatus, and system for transactional speculation control instructions | |
US20140379996A1 (en) | Method, apparatus, and system for transactional speculation control instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |