TW201405425A - 微處理器中存取及管理程式碼轉譯 - Google Patents
微處理器中存取及管理程式碼轉譯 Download PDFInfo
- Publication number
- TW201405425A TW201405425A TW102112642A TW102112642A TW201405425A TW 201405425 A TW201405425 A TW 201405425A TW 102112642 A TW102112642 A TW 102112642A TW 102112642 A TW102112642 A TW 102112642A TW 201405425 A TW201405425 A TW 201405425A
- Authority
- TW
- Taiwan
- Prior art keywords
- translation
- item
- hardware
- microprocessor
- hardware structure
- Prior art date
Links
- 238000013519 translation Methods 0.000 title claims abstract description 89
- 230000014616 translation Effects 0.000 title description 74
- 238000012423 maintenance Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 19
- 238000000034 method Methods 0.000 description 38
- 238000000605 extraction Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000011218 segmentation Effects 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
在一具體實施例中,一微處理系統包含設置於一處理器核心上的一硬體結構。硬體結構包含複數個項目,其每一係關聯於程式碼的部份以及可執行而達成實質等效功能之該程式碼的一轉譯。硬體結構包含一重定向陣列,其在被參照時係致能執行從程式碼的部份重定向至其對應轉譯。致能此重定向的項目係基於項目的使用資訊而維持於硬體結構內或從硬體結構逐出。
Description
本發明係關於一種微處理器中存取及管理程式碼轉譯。
現代的微處理器使用各種的策略來改善處理及執行。其中一種改善包含轉譯給定指令集架構(ISA)的指令。當由微處理器執行時,ISA程式碼的轉譯版本相對於非轉譯的ISA指令可提供各種效能優勢。在某些情況中,具有轉譯的系統在其提供具有對轉譯程式碼存取之處理管線的方式中效率不佳。舉例來說,某些系統可持續位於一狀態,其中重要、經常執行的轉譯比提供較少優勢的轉譯相對更難以存取。
本發明提供一機制,用以有效管理對應程式碼部分(例如目標ISA程式碼部份)之轉譯的擷取與執行。轉譯的智慧型產生及其最佳化可由動態二元轉譯器處理,其可包含作為提供ISA及處理器核心之間介面的軟體層的部份。本發明更描述一多工處理管線,其中微處理器使用核心上硬體結構以有效地擷取及執行對應ISA程式碼的轉譯版本。硬體結構在本文中
也可稱作「硬體重定向器」。
100‧‧‧微處理系統
102‧‧‧微處理器
110‧‧‧儲存位置
112‧‧‧處理器暫存器
114‧‧‧L1處理器快取記憶體
116‧‧‧L2處理器快取記憶體
118‧‧‧L3處理器快取記憶體
120‧‧‧主記憶體
122‧‧‧輔助儲存
124‧‧‧第三儲存
126‧‧‧記憶體控制器
128‧‧‧提取邏輯
130‧‧‧解碼邏輯
132‧‧‧執行邏輯
134‧‧‧記憶體邏輯
136‧‧‧寫回邏輯
138‧‧‧軟體層
140‧‧‧動態二元轉譯器
200‧‧‧系統
202‧‧‧處理管線
204‧‧‧提取邏輯
206‧‧‧硬體解碼器
208‧‧‧執行邏輯
210‧‧‧核心上硬體重定向器
212‧‧‧項目
220‧‧‧重定向器陣列
222‧‧‧重定向器資訊
230‧‧‧提取操作
232‧‧‧位址
234‧‧‧位址
240‧‧‧存取陣列
242‧‧‧每項目存取位元
250‧‧‧管理軟體
252‧‧‧使用歷史資料結構
300‧‧‧方法
400‧‧‧方法
圖1顯示根據本發明具體實施例之微處理系統。
圖2示意地繪示具有一核心上硬體結構及相關構件的微處理系統,其有助於從程式碼部份至達成實質等效功能之該程式碼部份的對應轉譯的執行重定向。圖式更繪示了基於其使用而將重定向項目維持於硬體結構中或逐出硬體結構。
圖3顯示在一處理管線中之範例的方法程序流程,用於在轉譯模式或在硬體解碼器模式中的另一處理。
圖4顯示在處理管線中之另一範例的方法程序流程,用於在轉譯模式或在硬體解碼器模式中的另一處理。
本發明提供一機制,用以有效管理對應程式碼部分(例如目標ISA程式碼部份)之轉譯的擷取與執行。轉譯的智慧型產生及其最佳化可由動態二元轉譯器處理,其可包含作為提供ISA及處理器核心之間介面的軟體層的部份。本發明更描述一多工處理管線,其中微處理器使用核心上硬體結構以有效地擷取及執行對應ISA程式碼的轉譯版本。硬體結構在本文中也可稱作「硬體重定向器」。
當經由硬體重定向器存取時,轉譯係代替對應的程式碼而執行並提供實質等效的功能。一旦被擷取,這些轉譯可在處理管線中執行
而不需使用微處理器的硬體解碼器。當本說明書中提到「不需使用硬體解碼器」而執行,這種表達方式可仍包含在執行一轉譯時之硬體解碼器的輕微或瑣細使用。或者,若轉譯尚未產生或無法存取,則目標程式碼可由硬體解碼器接收及處理以產生對微處理器之執行邏輯/機制為原生且可由其執行的指令。所述之不需硬體解碼器之轉譯的執行在本文中將稱作執行的「轉譯模式」,對比於上述之「硬體解碼器模式」,其中完整的硬體解碼器功能係用以將目標ISA指令解碼為原生指令。在許多情況中避開硬體解碼器(即藉由執行一轉譯)將改善執行的速度、降低功率消耗、及提供各種其他優勢。
雖然本文中描述對「多工」處理管線的各種參照,將理解
到此術語係指組態以交替地提供(例如多工)多重操作模式(例如轉譯模式對硬體解碼器模式)的處理管線。因此,將進一步理解到管線可使用邏輯,以取代或額外補充多工邏輯,來提供本文所述的特徵。
隨著時間經過,經常及/或最近請求的轉譯係由設置於處理
器核心上的硬體重定向器所索引並併入其中。硬體重定向器中的每一項目係關聯於一轉譯,並提供重定向資訊,其致能微處理器在針對所選程式碼部份的提取操作過程中造成執行被重定向而遠離該程式碼部份並朝向其關聯的轉譯。若程式碼部份具有一項目於硬體結構中(「命中(hit)」),則關聯轉譯係執行於轉譯模式中(即不需硬體解碼器)。若對硬體結構的參照「未命中(misses)」(即沒有針對程式碼部份的項目),則程式碼部份係使用硬體解碼器而執行於硬體解碼器中。
隨著時間經過,微處理器系統可產生大量的轉譯。為了節
省處理器晶粒面積並提供快速的檢查,硬體重定向器的尺寸可能受到限
制。因此,較佳為填入對最「有價值」的轉譯(例如最常及/或最近使用的轉譯)提供重定向之項目。換言之,一般較佳為對硬體重定向器的參照具有儘可能高的命中率。
為最大化命中率並提供對有價值轉譯的有效及快速存取,
硬體重定向器包含關聯於出現在結構之項目的使用資訊。使用資訊係回應用於重定向執行之硬體結構中的項目而變化。最大化命中率可藉由基於此使用資訊而將項目維持在硬體結構內或從硬體結構逐出而達成。
根據系統的整體設計,在硬體重定向器上的未命中可表示
(1)針對特定程式碼部份尚未產生一轉譯;或(2)轉譯已經產生,但無法經由與硬體重定向器的互動而存取。情況(2)可能導致例如轉譯由於比其他轉譯更少及/或更久使用而為「較小可利用性」的情況。在此範例中,且如本文所述,硬體重定向器中項目的數量係動態且智能地控制以最大化硬體重定向器的命中率。
圖1示意地繪示微處理系統100,其包含微處理器/核心102
及相關的軟體及記憶體系統,其可與本文所述的系統及方法結合使用。特別地,可實施所繪示的系統以有效地利用上述的多工策略,且其將結合各種範例而進一步描述於下。
微處理器102可包括及/或可通訊各種記憶體及儲存位置110,其可包括處理器暫存器112、L1處理器快取記憶體114、L2處理器快取記憶體116、L3處理器快取記憶體118、主記憶體120(如一或多個DRAM晶片)、輔助儲存122(如磁性及/或光學儲存單元)及/或第三儲存124(如磁帶)。這些位置的部份或全部可為記憶體映射,然在某些實施中,處理器暫存器
可不同於其他位置而映射、或可實施而使得其非為記憶體映射。L1-L3快取記憶體可在或可不在處理器晶粒/核心上,但在許多情況中,至少L1快取記憶體會在處理器核心上。將理解到,記憶體/儲存組件係以存取時間及容量的遞增順序於上文中列出,但可能有例外。記憶體控制器126可用以處理協定並提供主記憶體120所需的信號介面,以及一般來說用以排程記憶體存取。記憶體控制器可實施於處理器晶粒上或於單獨的晶粒上。將理解到,前文所提到的位置為非限制性的,且可使用其他記憶體/儲存位置而不會偏離本發明範疇。
微處理器102係組態以執行指令,其一般由對處理器為原生之ISA所描述及定義。在本說明書中,原生指令係以兩種不同的方式產生。第一種方式包含硬體解碼器,其接收目標ISA指令並從那些目標ISA指令產生原生指令。第二種方式為產生目標ISA指令的最佳原生轉譯,一般係經由動態二元轉譯器(例如顯示為140)。這些指令提供實質等效的功能,但可不需硬體解碼器而最佳化及執行。
不論特定的ISA,所述的多工機制可用以有效地擷取及執行ISA程式碼部份或這些程式碼部份的對應轉譯。微處理器102可組態以執行各種指令集架構,其可特徵化為複雜指令集(CISC架構)、精簡指令集(RISC架構)、及/或VLIW架構。此外,給定的指令集有可能具有關聯於多於一個這些規則的特性。此外,被認為是CISC實施的某些指令集實際上可以類似RISC的方式執行於微處理器102上。舉例來說,廣為使用的x86架構,雖被認為是CISC系統,通常以與管線RISC實施更為相關的方式施行。再者,不論特定的ISA或其特徵,本發明提供用以有效地利用ISA程式碼部份之轉譯
的方式。
一連串處理器識別指令(即ISA指令)之程式碼的例子可造成
作業系統、應用程式、驅動器等之編譯程式碼產生由微處理器102執行之二元程式碼。在編譯或後處理操作過程中,可使用VLIW類型的技術(例如在軟體層)以實現各種最佳化。在某些情況中,可使用這些軟體最佳化以使微處理器可依程式順序執行指令,而不需複雜的雜湊偵測及迴避/減緩硬體,其係出現在許多CISC及RISC執行管線中。亦即,在某些情況中,可使用軟體及/或解碼及執行硬體來施行動態最佳化及雜湊迴避,以替代或補充VLIW技術。
微處理器更包含處理管線,其一般包括提取邏輯128、解碼
邏輯130、執行邏輯132、記憶體邏輯134、及寫回邏輯136。提取邏輯128從一或多個位置110(但一般係從由L2-L3快取記憶體及主記憶體所支援之統一或專用L1快取記憶體)擷取指令。
解碼邏輯130藉由例如解析運算碼、運算元、及定址模式而
解碼指令。解析後,指令接著由執行邏輯132執行。如前述且如下文中將進一步描述,處理器102可組態以在轉譯模式時經由執行邏輯132執行目標ISA指令的轉譯,而不需先以硬體解碼器(例如解碼邏輯130)解碼這類指令。
針對產生主要結果的操作(例如相對於施行分支至執行程式
中另一位置的操作),寫回邏輯136將結果寫回適當的位置,例如處理器暫存器。在載入/儲存架構中,記憶體邏輯134執行負載及儲存操作,例如從主記憶體將運算元載入處理器暫存器。
應理解到,上述五個階段係稍微特定於或包含於一典型的
RISC實施中。更一般地,微處理器可包括提取、解碼、及執行邏輯,其具有由執行邏輯所實現的記憶體及寫回功能。本發明同樣可應用於這些及其他微處理器實施。
在所述的範例中,指令可在一時間提取及執行一次,可能需要多個時脈循環。在這期間,可不使用資料路徑的重要部份。補充或取代單一指令提取,可使用預提取方法以改善效能並避免關聯於讀取及儲存操作的延遲瓶頸(即指令的讀取及載入此類指令至處理器暫存器及/或執行序列)。此外,範例性微處理器可管線化以利用指令階層平行度(parallelism)且較佳地利用資料路徑,使得在相同時間有多重指令在不同的執行階段。此外,提取邏輯128、解碼邏輯130、執行邏輯132等可個別地以多重邏輯階段管線化以改善效能。
儲存位置110可包括安全/私用的記憶體配置,其在原生ISA指令的執行過程中可由微處理器102存取。此記憶體配置可例如用於軟體層138(圖1)的執行及相關資料的儲存。特別相關於本發明的為轉譯的程式庫,其已從目標ISA程式碼的對應區塊產生。這些轉譯可在長度及其最佳化的範圍上變化。
圖2顯示用以選擇性地經由處理管線202而提供硬體解碼器執行及動態二元轉譯執行的系統200具體實施例。處理管線係以簡化形式顯示,且包括提取邏輯204、硬體解碼器206及執行邏輯208。系統200包括具有複數個項目212的核心上硬體重定向器210,其每一係關聯於對應程式碼部份的轉譯。在本範例中,硬體重定向器包括N個項目,然將理解到,其可具有任何可行的尺寸。
硬體重定向器所參照的每一轉譯可執行以取代其對應的程
式碼部份而達成實質等效的功能。如前述,轉譯的程式碼可經由基於軟體的動態二元轉譯器(例如,圖1的動態二元轉譯器140)而智能地產生,且可以各種方式最佳化(例如使用暫存器更名、迴圈轉換、操作的重排序、指令及微操作的編組及聯合等等)。這些為非限制性的範例-程式碼轉譯可由各種其他方式實施。
硬體重定向器包括重定向器陣列220,其對每一項目包括重
定向器資訊222,系統可使用重定向器資訊222將執行從一所選程式碼部份重定向至其對應的轉譯。此資訊可例如在提取邏輯204施行提取操作230的過程中使用。
在所繪示的範例中,重定向資訊係實施為目標ISA程式碼部
份之位址(232)與其對應轉譯之位址(234)之間的位址映射。在提取操作過程中,可在重定向陣列220上執行檢查。若被提取的目標ISA位址係出現於陣列中,則提取操作係使用轉譯的位址而進行。這致能處理管線重定向轉譯,並在執行邏輯中將其執行而不使用硬體解碼器(即在執行的轉譯模式中)。或者,若目標ISA程式碼部份的位址未出現於陣列中,則程式碼部份係使用硬體解碼器206而執行於硬體解碼器模式中。在使用位址映射的範例中,也可使用位址的雜湊形式結合硬體重定向器中的項目。位址映射僅為一範例;本發明包含任何適當的核心上硬體機制,用以致能執行從其對應的程式碼部份被重定向至一轉譯。
硬體重定向器210更包含存取陣列240,其包含使用資訊,
使用資訊係變化以回應項目212用於重定向執行至轉譯。如下文中將更詳細
描述,所繪示的系統使用使用資訊以控制特定項目係維持在硬體重定向器內或從硬體重定向器逐出。使用資訊可為各種形式,然而其在此範例中係實施為每項目存取位元242。存取位元為其在硬體重定向器中的關聯項目是否已用以重定向執行至轉譯的二元指示。在其他範例中,可編碼使用資訊以涵蓋硬體重定向器中的多個項目,而非編碼針對個別項目的資訊。
系統200更包含管理軟體250,其與硬體重定向器及使用歷史資料結構252互動。此外,此互動的目的係動態地控制硬體重定向器中特定項目的數量。管理軟體可重複地取樣在存取陣列240中的使用資訊,且可使用這些取樣來儲存及分析關聯於硬體重定向器中項目的資訊。分析係依序執行以判定特定項目係維持在硬體重定向器內或從硬體重定向器逐出。這可例如基於這些項目最近一次及/或有多常用於重定向執行至轉譯而執行。
有關被逐出的項目,歷史資訊一般將保留在使用歷史資料結構252中,另外還有目前有效的項目。作為後續分析的結果(例如藉由所繪示的管理軟體),逐出項目可在同一點再次進入硬體重定向器中。
事實上,圖2顯示未出現在硬體重定向器中之項目的歷史資訊的儲存。歷史資料結構252比硬體重定向器具有更多的項目(N+X>N),其反應了一般情況為系統產生了比硬體重定向器中之槽隙更多的轉譯。轉譯提供較快及/或較有效率的操作,然而從一個大的查詢結構識別及擷取一給定的轉譯可能抵消任何這類的好處。舉例來說,在有大量轉譯的情況下,試圖使用目標指令指標來查詢及擷取轉譯可能相對較慢。硬體重定向器中從1到N以及結構252中從1到N+X的編號並不暗示任何序列或連續的排序。
這僅為可針對比硬體重定向器中之項目更多數量的轉譯儲存使用資訊的一指示。
現在回到使用存取位元242的特定範例,每當項目用以重定
向執行時,可設定針對特定項目的存取位元。在被設定的時間之間,位元可由硬體或由管理軟體250清除。在一範例中,管理軟體針對硬體定向器中的項目而重複地取樣並清除存取位元。這可以定期的時間間隔發生,例如每M個時脈週期(例如每1000個週期)或有關於某些其他經常性事件(例如計時器中斷)。管理軟體接著可隨著時間產生存取位元之數值的歷史,並儲存該歷史於使用歷史資料結構252中。接著,可使用各種方法來分析此歷史,以增加硬體重定向器210的命中率。再者,由管理軟體250所執行的分析一般將包含對項目有多常及/或最近一次用於重定向執行的評估,其接著用以控制特定項目係維持在硬體重定向器中或從硬體重定向器逐出。
除了存取位元,本文所述系統可採用使用資訊。不論是編
碼於存取陣列240中或以各種形式儲存於使用歷史資料結構252,使用資訊可包括對一項目已用於重定向執行幾次的計數。舉例來說,可針對一或多個項目於硬體重定向器210及/或使用歷史資料結構中使用計數器。當項目用於重定向執行時,使用資訊可更包括時間的識別。
在圖2中,管理軟體係繪示為與處理管線202分開。然而,此程式碼可於不同的位置執行及/或可關聯於圖1及圖2中所繪示之各種組件。在一範例中,管理程式碼於處理管線202上執行,並存取圖2中所繪示的硬體重定向器及使用歷史資料結構。
不論特定組態為何,提供重定向及使用資訊於硬體結構中
可提供顯著的好處。當處理器沿主要執行路徑提取程式碼時,對硬體重定向器的查詢可發生在管線的前端。若重定向改成實施為軟體結構,次常式將需要被呼叫以施行檢查,而非直接繼續沿著主要執行路徑。硬體重定向器因而提供一機制,供對高數值轉譯的快速及簡單存取。
現在參考圖3及圖4,圖式顯示管理重定向資訊的硬體可存
取項目之範例方法及程序流程。方法可以任何合適的軟體/硬體來施行,包括前述範例中所顯示之外的組態。然而,在某些情況中,程序流程可參照已描述的組件及程序。為了清楚描述並將重複最小化,可假設這些組件/程序類似於前述的範例。
圖3繪示用於在前述模式(即硬體解碼器模式或轉譯模式)中
之替換處理的範例方法300。在302,方法包含使用動態二元轉譯器或經由另一適當的方法來產生複數個轉譯。在304,方法包含設置具有複數個嵌入項目的核心上硬體結構。每一項目係關聯於步驟302所產生之轉譯的其中一者,並包含重定向資訊,其致能將執行從非轉譯程式碼部份重定向至其對應的轉譯。可如前述使用位址映射,然而可使用其他方法以重定向執行至轉譯,以代替其對應的程式碼部份。
在306,方法包含將使用資訊嵌入硬體結構。使用資訊回應
用於重定向執行之項目而變化。合適使用資訊的範例包括每項目存取位元;項目用於重定向執行之次數的計數;項目用於重定向執行之時間的指示等。在某些範例中,使用資訊係從硬體結構擷取,並儲存於軟體且處理以控制在304所提及之項目的數量。
事實上,在308,方法包括基於步驟306之不同的使用資訊
而維持項目或將項目從硬體結構逐出。如前述,這可包括基於項目有多常及/或最近一次用於重定向執行而控制什麼項目出現在硬體結構中。
在具有存取位元的範例中,這些位元可被重複地取樣並清
除以隨著時間產生存取位元值的歷史。接著可分析此歷史以執行步驟308所示的維持/逐出。
圖3的流程圖並不意圖暗示需以特定順序來執行步驟,然在
某些設定中可能需要特定的順序。一般而言,可以不同於圖式中所示的順序來執行步驟,且在許多情況中,步驟將並行地施行。
圖4顯示用於在轉譯模式或硬體解碼器模式中之替換處理的另一範例方法400。此範例方法特別地包含使用前述之硬體重定向器中的存取位元。在402中,方法400包含在硬體解碼器模式中執行目標ISA指令。為了在程式碼部份(即目標ISA部份及/或原生ISA部份)之間簡單地切換,程式碼部份可於分支指令分開。換言之,第一程式碼部份可結束於一分支指令,使得分支指令的目標為其他程式碼部份的開始。因此,在402之目標ISA指令的執行可繼續直到到達此一分支指令,並接著進行至404。除了在此範例中的分支,可使用任何其他合適程式碼區段的分隔。
在404,方法包含評估是否在硬體重定向器(例如圖2的硬體重定向器210)中發生命中。在一範例中,對硬體重定向器的詢問可藉由查詢關聯於分支目標的一位址而實施。在命中的情況下,方法繼續進行至406,設定關聯於重定向項目的存取位元。
在408,方法包含執行相關的轉譯。轉譯的執行係持續進行直到(1)到達原生分支410,在此處將執行另一轉譯,或(2)到達一外部分支(即
到目標ISA程式碼部份的分支),在此處程序將回到404以對硬體重定向器中的項目做進一步的詢問。
再次回到404,若在硬體重定向器中沒有項目對應分支目
標,在412可記錄一失誤。失誤可關聯於分支目標,以識別經常失誤的目標或失誤次數高於一臨界數目的目標。特別地,在414,方法400包含評估是否已發生失誤觸發的情況。此一觸發可經由使用各種不同標準(補充或取代上述的頻率/臨界範例)的任何適合機制來判定。步驟412及414可被認為是追蹤硬體解碼器的使用,因為分支目標失誤將導致硬體解碼器模式的執行。
若滿足觸發條件,方法可包含在416,若存在一轉譯,可能
地加入針對分支目標的一項目至硬體重定向器。在一範例中,可接著使用原生分支以繼續進行在408所示的轉譯模式執行。然而,若不存在轉譯,則方法400可包括在418可能地產生一轉譯並加入針對該轉譯之一項目至硬體重定向器。或者,系統可記錄轉譯可能是需要的或較佳的,且程序可回到在402的硬體解碼器模式執行,而非立刻地產生轉譯。
如前述的流程圖所示,應理解到,在許多情況中可以不同
於圖式中所指的順序來施行各種步驟。舉例來說,硬體解碼器模式執行一般在404的失誤後將立刻啟動,使得步驟412、414、416及418將與失誤分支目標的硬體解碼器處理並行地發生。
在方法400所述之程序過程中的任何時間點,方法可包含維
持硬體重定向器結構,如420所示。維持硬體重定向器可包括在422讀取存取位元及在424清除存取位元。維持可更包括在426基於使用資訊而更新硬體重定向器中的項目,如參照存取位元之數值所判定。
將理解到,本文所述之方法僅用以作為說明目的且不意欲
作為限制。因此,將理解到,在某些具體實施例中,本文所述的方法可包含額外或替代的程序,而在某些具體實施例中,本文所述的方法可包含被重新排序或省略的某些程序,而不會偏離本發明範疇。此外,將理解到,本文所述方法可使用包含本文所述之特定範例之任何合適的軟體及硬體來施行。
此書面說明使用範例來揭露本發明,其包含最佳模式,也致能熟習相關領域技藝者實行本發明,包括製造及使用任何裝置或系統並實施任何結合的方法。本發明的可專利範疇係由申請專利範圍所定義,且可能包括熟此技藝者所理解的其他範例。這些其他範例係意欲在申請專利範圍的範疇內。
100‧‧‧微處理系統
102‧‧‧微處理器
110‧‧‧儲存位置
112‧‧‧處理器暫存器
114‧‧‧L1處理器快取記憶體
116‧‧‧L2處理器快取記憶體
118‧‧‧L3處理器快取記憶體
120‧‧‧主記憶體
122‧‧‧輔助儲存
124‧‧‧第三儲存
126‧‧‧記憶體控制器
128‧‧‧提取邏輯
130‧‧‧解碼邏輯
132‧‧‧執行邏輯
134‧‧‧記憶體邏輯
136‧‧‧寫回邏輯
138‧‧‧軟體層
140‧‧‧動態二元轉譯器
Claims (10)
- 一種包括一微處理器及關聯記憶體系統的微處理系統,包含:一硬體結構於該微處理器之一核心上;複數個項目於該硬體結構中,每一項目係關聯於一對應程式碼部份的一轉譯,該轉譯係可由該微處理器執行以代替該對應程式碼部份而達成實質等效的功能;一重定向陣列於該硬體結構中,其包括針對每一項目的重定向資訊,可用以造成執行從該對應程式碼部份重定向至針對該對應程式碼部份之該轉譯;以及一存取陣列於該硬體結構中,其包括變化以回應用於重定向執行之該項目的使用資訊,其中基於那些項目的該使用資訊而將特定項目維持在該硬體結構內或從該硬體結構逐出。
- 如申請專利範圍第1項所述之微處理系統,更包含管理軟體,其重複地取樣在該存取陣列中的數值並基於那些項目用以重定向執行至轉譯的頻率而控制將特定項目維持在該硬體結構內或從該硬體結構逐出。
- 如申請專利範圍第1項所述之微處理系統,更包含管理軟體,其重複地取樣在該存取陣列中的數值並基於那些項目最近一次用以重定向執行至轉譯而控制將特定項目維持在該硬體結構內或從該硬體結構逐出。
- 如申請專利範圍第1項所述之微處理系統,更包含管理軟體,其重複地取樣在該存取陣列中的數值並基於那些項目用以重定向執行至轉譯的頻率以及最近一次用以重定向執行至轉譯而控制將特定項目維持在該硬體結構內或從該硬體結構逐出。
- 如申請專利範圍第1項所述之微處理系統,更包含一硬體解碼器於該微處理器之該核心上,其中若一所選程式碼部份不具有一項目於該硬體結構中,則由該微處理器使用該硬體解碼器而執行該所選程式碼部份,且其中若該所選程式碼部份具有一項目於該硬體結構中,則由該微處理器執行其對應的轉譯而不使用該硬體解碼器。
- 如申請專利範圍第1項所述之微處理系統,其中在該存取陣列中的該使用資訊針對每一項目包含一存取位元,其為該項目是否已用於重定向執行至一轉譯的一二元指示。
- 如申請專利範圍第6項所述之微處理系統,其中該微處理系統可操作以(1)當其對應的項目用以重定向執行至轉譯時設定在該存取陣列中的該存取位元;以及(2)在該存取位元被設定的時間之間清除該存取位元。
- 如申請專利範圍第7項所述之微處理系統,更包含管理軟體,其重複地取樣及清除該存取位元以隨著時間產生存取位元數值的一歷史,該管理軟體更可操作以根據關聯於該項目之該存取位元之該歷史而控制將一所選項目維持在該硬體結構內或從該硬體結構逐出。
- 如申請專利範圍第8項所述之微處理系統,其中該管理軟體可操作以基於該項目最近一次用以重定向執行至該關聯轉譯以及用以重定向執行至該關聯轉譯的頻率之其中一或多者,其係反映在該存取位元之該歷史中,而控制將所選項目維持在該硬體結構內或從該硬體結構逐出。
- 如申請專利範圍第1項所述之微處理系統,其中在該存取陣列中之該使用資訊針對每一項目包含一計數,該計數為該項目已用於重定向執行至一轉譯的次數。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/444,673 US9880846B2 (en) | 2012-04-11 | 2012-04-11 | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201405425A true TW201405425A (zh) | 2014-02-01 |
TWI512626B TWI512626B (zh) | 2015-12-11 |
Family
ID=49232332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102112642A TWI512626B (zh) | 2012-04-11 | 2013-04-10 | 微處理器中存取及管理程式碼轉譯 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9880846B2 (zh) |
CN (1) | CN103377066B (zh) |
DE (1) | DE102013201387A1 (zh) |
TW (1) | TWI512626B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103282890B (zh) * | 2011-01-12 | 2015-11-25 | 株式会社索思未来 | 程序执行装置以及编译器系统 |
US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
US9098400B2 (en) * | 2012-10-31 | 2015-08-04 | International Business Machines Corporation | Dynamic tuning of internal parameters for solid-state disk based on workload access patterns |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
DE102016202915A1 (de) | 2016-02-25 | 2017-08-31 | Ford Global Technologies, Llc | Doppelkupplungsgetriebe für Kraftfahrzeuge |
DE102016202914A1 (de) | 2016-02-25 | 2017-08-31 | Ford Global Technologies, Llc | Doppelkupplungsgetriebe für Kraftfahrzeuge |
Family Cites Families (187)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3815101A (en) | 1972-11-08 | 1974-06-04 | Sperry Rand Corp | Processor state and storage limits register auto-switch |
US3950729A (en) | 1973-08-31 | 1976-04-13 | Nasa | Shared memory for a fault-tolerant computer |
US4654790A (en) | 1983-11-28 | 1987-03-31 | Amdahl Corporation | Translation of virtual and real addresses to system addresses |
US4812981A (en) | 1985-10-24 | 1989-03-14 | Prime Computer, Inc. | Memory management system improving the efficiency of fork operations |
US4797814A (en) | 1986-05-01 | 1989-01-10 | International Business Machines Corporation | Variable address mode cache |
JP2589713B2 (ja) | 1987-11-20 | 1997-03-12 | 株式会社日立製作所 | データプロセッサ及びデータ処理システム |
US5179669A (en) | 1988-08-22 | 1993-01-12 | At&T Bell Laboratories | Multiprocessor interconnection and access arbitration arrangement |
JPH02288927A (ja) | 1989-01-18 | 1990-11-28 | Nec Corp | 共有メモリ管理方式 |
CA2011807C (en) | 1989-03-20 | 1999-02-23 | Katsumi Hayashi | Data base processing system using multiprocessor system |
JPH0354660A (ja) | 1989-07-21 | 1991-03-08 | Nec Corp | マルチプロセッサシステムにおける共有メモリ管理方式 |
US5123094A (en) | 1990-01-26 | 1992-06-16 | Apple Computer, Inc. | Interprocessor communications includes second CPU designating memory locations assigned to first CPU and writing their addresses into registers |
JPH04182858A (ja) | 1990-11-19 | 1992-06-30 | Mitsubishi Electric Corp | 共有メモリ管理方式 |
US5245702A (en) | 1991-07-05 | 1993-09-14 | Sun Microsystems, Inc. | Method and apparatus for providing shared off-screen memory |
US5696925A (en) | 1992-02-25 | 1997-12-09 | Hyundai Electronics Industries, Co., Ltd. | Memory management unit with address translation function |
US5414824A (en) | 1993-06-30 | 1995-05-09 | Intel Corporation | Apparatus and method for accessing a split line in a high speed cache |
US5446854A (en) | 1993-10-20 | 1995-08-29 | Sun Microsystems, Inc. | Virtual memory computer apparatus and address translation mechanism employing hashing scheme and page frame descriptor that support multiple page sizes |
US5649102A (en) | 1993-11-26 | 1997-07-15 | Hitachi, Ltd. | Distributed shared data management system for controlling structured shared data and for serializing access to shared data |
US5526504A (en) | 1993-12-15 | 1996-06-11 | Silicon Graphics, Inc. | Variable page size translation lookaside buffer |
US5956753A (en) | 1993-12-30 | 1999-09-21 | Intel Corporation | Method and apparatus for handling speculative memory access operations |
GB2287111B (en) | 1994-03-01 | 1998-08-05 | Intel Corp | Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer |
JPH0877347A (ja) | 1994-03-08 | 1996-03-22 | Texas Instr Inc <Ti> | 画像/グラフィックス処理用のデータ処理装置およびその操作方法 |
US5487146A (en) | 1994-03-08 | 1996-01-23 | Texas Instruments Incorporated | Plural memory access address generation employing guide table entries forming linked list |
US5963984A (en) | 1994-11-08 | 1999-10-05 | National Semiconductor Corporation | Address translation unit employing programmable page size |
US6813699B1 (en) | 1995-06-02 | 2004-11-02 | Transmeta Corporation | Speculative address translation for processor using segmentation and optional paging |
US5999189A (en) | 1995-08-04 | 1999-12-07 | Microsoft Corporation | Image compression to reduce pixel and texture memory requirements in a real-time image generator |
US5949785A (en) | 1995-11-01 | 1999-09-07 | Whittaker Corporation | Network access communications system and methodology |
US6298390B1 (en) | 1995-11-22 | 2001-10-02 | Sun Microsystems, Inc. | Method and apparatus for extending traditional operating systems file systems |
US6091897A (en) * | 1996-01-29 | 2000-07-18 | Digital Equipment Corporation | Fast translation and execution of a computer program on a non-native architecture by use of background translator |
US6711667B1 (en) | 1996-06-28 | 2004-03-23 | Legerity, Inc. | Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions |
US6031992A (en) | 1996-07-05 | 2000-02-29 | Transmeta Corporation | Combining hardware and software to provide an improved microprocessor |
US6012132A (en) | 1997-03-31 | 2000-01-04 | Intel Corporation | Method and apparatus for implementing a page table walker that uses a sliding field in the virtual addresses to identify entries in a page table |
US5870582A (en) | 1997-03-31 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched |
AUPO647997A0 (en) | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Memory controller architecture |
GB9724031D0 (en) | 1997-11-13 | 1998-01-14 | Advanced Telecommunications Mo | Cache memory operation |
US6091987A (en) * | 1998-04-29 | 2000-07-18 | Medtronic, Inc. | Power consumption reduction in medical devices by employing different supply voltages |
US6591355B2 (en) | 1998-09-28 | 2003-07-08 | Technion Research And Development Foundation Ltd. | Distributed shared memory system with variable granularity |
US6862635B1 (en) | 1998-11-13 | 2005-03-01 | Cray Inc. | Synchronization techniques in a multithreaded environment |
US7007075B1 (en) | 1998-12-09 | 2006-02-28 | E-Lysium Transaction Systems Inc. | Flexible computer resource manager |
US6297832B1 (en) | 1999-01-04 | 2001-10-02 | Ati International Srl | Method and apparatus for memory access scheduling in a video graphics system |
US6362826B1 (en) | 1999-01-15 | 2002-03-26 | Intel Corporation | Method and apparatus for implementing dynamic display memory |
US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US8065504B2 (en) | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US6978462B1 (en) | 1999-01-28 | 2005-12-20 | Ati International Srl | Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled |
US7275246B1 (en) | 1999-01-28 | 2007-09-25 | Ati International Srl | Executing programs for a first computer architecture on a computer of a second architecture |
US6519694B2 (en) | 1999-02-04 | 2003-02-11 | Sun Microsystems, Inc. | System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity |
US6535905B1 (en) | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
US6714904B1 (en) | 1999-10-13 | 2004-03-30 | Transmeta Corporation | System for using rate of exception event generation during execution of translated instructions to control optimization of the translated instructions |
US6574749B1 (en) | 1999-10-29 | 2003-06-03 | Nortel Networks Limited | Reliable distributed shared memory |
US6751583B1 (en) | 1999-10-29 | 2004-06-15 | Vast Systems Technology Corporation | Hardware and software co-simulation including simulating a target processor using binary translation |
US6499090B1 (en) | 1999-12-28 | 2002-12-24 | Intel Corporation | Prioritized bus request scheduling mechanism for processing devices |
US6625715B1 (en) | 1999-12-30 | 2003-09-23 | Intel Corporation | System and method for translation buffer accommodating multiple page sizes |
US20010049818A1 (en) | 2000-02-09 | 2001-12-06 | Sanjeev Banerjia | Partitioned code cache organization to exploit program locallity |
US6457115B1 (en) | 2000-06-15 | 2002-09-24 | Advanced Micro Devices, Inc. | Apparatus and method for generating 64 bit addresses using a 32 bit adder |
EP1170665B1 (en) | 2000-07-06 | 2004-02-04 | Texas Instruments France | Multi-processor system verification circuitry |
US6636223B1 (en) | 2000-08-02 | 2003-10-21 | Ati International. Srl | Graphics processing system with logic enhanced memory and method therefore |
US7162612B2 (en) | 2000-08-16 | 2007-01-09 | Ip-First, Llc | Mechanism in a microprocessor for executing native instructions directly from memory |
EP1213650A3 (en) | 2000-08-21 | 2006-08-30 | Texas Instruments France | Priority arbitration based on current task and MMU |
EP1182571B1 (en) | 2000-08-21 | 2011-01-26 | Texas Instruments Incorporated | TLB operations based on shared bit |
US6742104B2 (en) | 2000-08-21 | 2004-05-25 | Texas Instruments Incorporated | Master/slave processing system with shared translation lookaside buffer |
US6883079B1 (en) | 2000-09-01 | 2005-04-19 | Maxtor Corporation | Method and apparatus for using data compression as a means of increasing buffer bandwidth |
US6859208B1 (en) | 2000-09-29 | 2005-02-22 | Intel Corporation | Shared translation address caching |
US20020069402A1 (en) | 2000-10-05 | 2002-06-06 | Nevill Edward Colles | Scheduling control within a system having mixed hardware and software based instruction execution |
JP2002169696A (ja) | 2000-12-04 | 2002-06-14 | Mitsubishi Electric Corp | データ処理装置 |
US7356026B2 (en) | 2000-12-14 | 2008-04-08 | Silicon Graphics, Inc. | Node translation and protection in a clustered multiprocessor system |
US6925547B2 (en) | 2000-12-14 | 2005-08-02 | Silicon Graphics, Inc. | Remote address translation in a multiprocessor system |
US6560690B2 (en) | 2000-12-29 | 2003-05-06 | Intel Corporation | System and method for employing a global bit for page sharing in a linear-addressed cache |
US6549997B2 (en) | 2001-03-16 | 2003-04-15 | Fujitsu Limited | Dynamic variable page size translation of addresses |
US7073044B2 (en) | 2001-03-30 | 2006-07-04 | Intel Corporation | Method and apparatus for sharing TLB entries |
US6658538B2 (en) | 2001-06-21 | 2003-12-02 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control |
US6523104B2 (en) | 2001-07-13 | 2003-02-18 | Mips Technologies, Inc. | Mechanism for programmable modification of memory mapping granularity |
US6901505B2 (en) | 2001-08-09 | 2005-05-31 | Advanced Micro Devices, Inc. | Instruction causing swap of base address from segment register with address from another register |
US6757784B2 (en) | 2001-09-28 | 2004-06-29 | Intel Corporation | Hiding refresh of memory and refresh-hidden memory |
US6823433B1 (en) | 2001-11-13 | 2004-11-23 | Advanced Micro Devices, Inc. | Memory management system and method for providing physical address based memory access security |
US6877077B2 (en) | 2001-12-07 | 2005-04-05 | Sun Microsystems, Inc. | Memory controller and method using read and write queues and an ordering queue for dispatching read and write memory requests out of order to reduce memory latency |
EP1331539B1 (en) | 2002-01-16 | 2016-09-28 | Texas Instruments France | Secure mode for processors supporting MMU and interrupts |
US6851008B2 (en) | 2002-03-06 | 2005-02-01 | Broadcom Corporation | Adaptive flow control method and apparatus |
DE60322366D1 (de) | 2002-04-18 | 2008-09-04 | Advanced Micro Devices Inc | Rechnersystem mit einem für einen sicheren ausführungsmodus geeigneten cpu und einem sicherheitsdienst-prozessor die über einen gesicherten kommunikationsweg miteinander verbunden sind |
US8285743B2 (en) | 2002-06-24 | 2012-10-09 | International Business Machines Corporation | Scheduling viewing of web pages in a data processing system |
US7124327B2 (en) | 2002-06-29 | 2006-10-17 | Intel Corporation | Control over faults occurring during the operation of guest software in the virtual-machine architecture |
JP3982353B2 (ja) | 2002-07-12 | 2007-09-26 | 日本電気株式会社 | フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム |
EP1391820A3 (en) | 2002-07-31 | 2007-12-19 | Texas Instruments Incorporated | Concurrent task execution in a multi-processor, single operating system environment |
US6950925B1 (en) | 2002-08-28 | 2005-09-27 | Advanced Micro Devices, Inc. | Scheduler for use in a microprocessor that supports data-speculative execution |
GB2392998B (en) | 2002-09-16 | 2005-07-27 | Advanced Risc Mach Ltd | Handling interrupts during multiple access program instructions |
GB2393274B (en) | 2002-09-20 | 2006-03-15 | Advanced Risc Mach Ltd | Data processing system having an external instruction set and an internal instruction set |
US7398525B2 (en) | 2002-10-21 | 2008-07-08 | International Business Machines Corporation | Resource scheduling in workflow management systems |
US6981083B2 (en) | 2002-12-05 | 2005-12-27 | International Business Machines Corporation | Processor virtualization mechanism via an enhanced restoration of hard architected states |
US20040122800A1 (en) * | 2002-12-23 | 2004-06-24 | Nair Sreekumar R. | Method and apparatus for hardware assisted control redirection of original computer code to transformed code |
US7191349B2 (en) | 2002-12-26 | 2007-03-13 | Intel Corporation | Mechanism for processor power state aware distribution of lowest priority interrupt |
US7203932B1 (en) * | 2002-12-30 | 2007-04-10 | Transmeta Corporation | Method and system for using idiom recognition during a software translation process |
US20040128448A1 (en) | 2002-12-31 | 2004-07-01 | Intel Corporation | Apparatus for memory communication during runahead execution |
US7139876B2 (en) | 2003-01-16 | 2006-11-21 | Ip-First, Llc | Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache |
US7168077B2 (en) | 2003-01-31 | 2007-01-23 | Handysoft Corporation | System and method of executing and controlling workflow processes |
EP1447742A1 (en) | 2003-02-11 | 2004-08-18 | STMicroelectronics S.r.l. | Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor |
US6965983B2 (en) | 2003-02-16 | 2005-11-15 | Faraday Technology Corp. | Simultaneously setting prefetch address and fetch address pipelined stages upon branch |
US6963963B2 (en) | 2003-03-25 | 2005-11-08 | Freescale Semiconductor, Inc. | Multiprocessor system having a shared main memory accessible by all processor units |
WO2004086205A1 (en) | 2003-03-27 | 2004-10-07 | Koninklijke Philips Electronics N.V. | Branch based activity monitoring |
US7003647B2 (en) | 2003-04-24 | 2006-02-21 | International Business Machines Corporation | Method, apparatus and computer program product for dynamically minimizing translation lookaside buffer entries across contiguous memory |
US7107441B2 (en) | 2003-05-21 | 2006-09-12 | Intel Corporation | Pre-boot interpreted namespace parsing for flexible heterogeneous configuration and code consolidation |
US7082508B2 (en) | 2003-06-24 | 2006-07-25 | Intel Corporation | Dynamic TLB locking based on page usage metric |
US7124255B2 (en) | 2003-06-30 | 2006-10-17 | Microsoft Corporation | Message based inter-process for high volume data |
GB0316532D0 (en) | 2003-07-15 | 2003-08-20 | Transitive Ltd | Method and apparatus for partitioning code in program code conversion |
US7225299B1 (en) | 2003-07-16 | 2007-05-29 | Transmeta Corporation | Supporting speculative modification in a data cache |
US7062631B1 (en) | 2003-07-17 | 2006-06-13 | Transmeta Corporation | Method and system for enforcing consistent per-physical page cacheability attributes |
US20050050013A1 (en) | 2003-08-28 | 2005-03-03 | Sharp Laboratories Of America, Inc. | System and method for policy-driven device queries |
US7418585B2 (en) | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7010648B2 (en) | 2003-09-08 | 2006-03-07 | Sun Microsystems, Inc. | Method and apparatus for avoiding cache pollution due to speculative memory load operations in a microprocessor |
US7921300B2 (en) | 2003-10-10 | 2011-04-05 | Via Technologies, Inc. | Apparatus and method for secure hash algorithm |
US7321958B2 (en) | 2003-10-30 | 2008-01-22 | International Business Machines Corporation | System and method for sharing memory by heterogeneous processors |
US7159095B2 (en) | 2003-12-09 | 2007-01-02 | International Business Machines Corporation | Method of efficiently handling multiple page sizes in an effective to real address translation (ERAT) table |
US7730489B1 (en) | 2003-12-10 | 2010-06-01 | Oracle America, Inc. | Horizontally scalable and reliable distributed transaction management in a clustered application server environment |
US7107411B2 (en) | 2003-12-16 | 2006-09-12 | International Business Machines Corporation | Apparatus method and system for fault tolerant virtual memory management |
US7496732B2 (en) | 2003-12-17 | 2009-02-24 | Intel Corporation | Method and apparatus for results speculation under run-ahead execution |
US7310722B2 (en) | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US7340565B2 (en) | 2004-01-13 | 2008-03-04 | Hewlett-Packard Development Company, L.P. | Source request arbitration |
US7293164B2 (en) | 2004-01-14 | 2007-11-06 | International Business Machines Corporation | Autonomic method and apparatus for counting branch instructions to generate branch statistics meant to improve branch predictions |
US7082075B2 (en) | 2004-03-18 | 2006-07-25 | Micron Technology, Inc. | Memory device and method having banks of different sizes |
US7234038B1 (en) | 2004-05-28 | 2007-06-19 | Sun Microsystems, Inc. | Page mapping cookies |
US7383414B2 (en) | 2004-05-28 | 2008-06-03 | Oracle International Corporation | Method and apparatus for memory-mapped input/output |
US20060004984A1 (en) | 2004-06-30 | 2006-01-05 | Morris Tonia G | Virtual memory management system |
US8190863B2 (en) | 2004-07-02 | 2012-05-29 | Intel Corporation | Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction |
US7257699B2 (en) | 2004-07-08 | 2007-08-14 | Sun Microsystems, Inc. | Selective execution of deferred instructions in a processor that supports speculative execution |
US7194604B2 (en) | 2004-08-26 | 2007-03-20 | International Business Machines Corporation | Address generation interlock resolution under runahead execution |
US7890735B2 (en) | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US8001294B2 (en) | 2004-09-28 | 2011-08-16 | Sony Computer Entertainment Inc. | Methods and apparatus for providing a compressed network in a multi-processing system |
US8843727B2 (en) | 2004-09-30 | 2014-09-23 | Intel Corporation | Performance enhancement of address translation using translation tables covering large address spaces |
US7340582B2 (en) | 2004-09-30 | 2008-03-04 | Intel Corporation | Fault processing for direct memory access address translation |
US20060149931A1 (en) | 2004-12-28 | 2006-07-06 | Akkary Haitham | Runahead execution in a central processing unit |
WO2006069485A1 (en) | 2004-12-30 | 2006-07-06 | Intel Corporation | Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture |
US7437517B2 (en) | 2005-01-11 | 2008-10-14 | International Business Machines Corporation | Methods and arrangements to manage on-chip memory to reduce memory latency |
US20060174228A1 (en) | 2005-01-28 | 2006-08-03 | Dell Products L.P. | Adaptive pre-fetch policy |
US7752627B2 (en) | 2005-02-04 | 2010-07-06 | Mips Technologies, Inc. | Leaky-bucket thread scheduler in a multithreading microprocessor |
US7948896B2 (en) | 2005-02-18 | 2011-05-24 | Broadcom Corporation | Weighted-fair-queuing relative bandwidth sharing |
US7209405B2 (en) | 2005-02-23 | 2007-04-24 | Micron Technology, Inc. | Memory device and method having multiple internal data buses and memory bank interleaving |
TWI309378B (en) | 2005-02-23 | 2009-05-01 | Altek Corp | Central processing unit having a micro-code engine |
US7447869B2 (en) | 2005-04-07 | 2008-11-04 | Ati Technologies, Inc. | Method and apparatus for fragment processing in a virtual memory system |
US20100161901A9 (en) | 2005-04-14 | 2010-06-24 | Arm Limited | Correction of incorrect cache accesses |
DE102005021749A1 (de) | 2005-05-11 | 2006-11-16 | Fachhochschule Dortmund | Verfahren und Vorrichtung zur programmgesteuerten Informationsverarbeitung |
US7299337B2 (en) | 2005-05-12 | 2007-11-20 | Traut Eric P | Enhanced shadow page table algorithms |
US7739668B2 (en) | 2005-05-16 | 2010-06-15 | Texas Instruments Incorporated | Method and system of profiling applications that use virtual memory |
US20060277398A1 (en) | 2005-06-03 | 2006-12-07 | Intel Corporation | Method and apparatus for instruction latency tolerant execution in an out-of-order pipeline |
US7814292B2 (en) | 2005-06-14 | 2010-10-12 | Intel Corporation | Memory attribute speculation |
US20070067505A1 (en) | 2005-09-22 | 2007-03-22 | Kaniyur Narayanan G | Method and an apparatus to prevent over subscription and thrashing of translation lookaside buffer (TLB) entries in I/O virtualization hardware |
JP2007109116A (ja) | 2005-10-17 | 2007-04-26 | Fukuoka Pref Gov Sangyo Kagaku Gijutsu Shinko Zaidan | 推定装置、テーブル管理装置、選択装置、テーブル管理方法、そのテーブル管理方法をコンピュータに実現させるプログラム、及び、そのプログラムを記録する記憶媒体 |
US7739476B2 (en) | 2005-11-04 | 2010-06-15 | Apple Inc. | R and C bit update handling |
US7616218B1 (en) | 2005-12-05 | 2009-11-10 | Nvidia Corporation | Apparatus, system, and method for clipping graphics primitives |
US7519781B1 (en) | 2005-12-19 | 2009-04-14 | Nvidia Corporation | Physically-based page characterization data |
US7512767B2 (en) | 2006-01-04 | 2009-03-31 | Sony Ericsson Mobile Communications Ab | Data compression method for supporting virtual memory management in a demand paging system |
US7653803B2 (en) | 2006-01-17 | 2010-01-26 | Globalfoundries Inc. | Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU) |
JP4890033B2 (ja) | 2006-01-19 | 2012-03-07 | 株式会社日立製作所 | 記憶装置システム及び記憶制御方法 |
US7545382B1 (en) | 2006-03-29 | 2009-06-09 | Nvidia Corporation | Apparatus, system, and method for using page table entries in a graphics system to provide storage format information for address translation |
US20070240141A1 (en) | 2006-03-30 | 2007-10-11 | Feng Qin | Performing dynamic information flow tracking |
JP5010164B2 (ja) | 2006-03-31 | 2012-08-29 | 株式会社日立製作所 | サーバ装置及び仮想計算機の制御プログラム |
US8621120B2 (en) | 2006-04-17 | 2013-12-31 | International Business Machines Corporation | Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism |
US7702843B1 (en) | 2006-04-27 | 2010-04-20 | Vmware, Inc. | Determining memory conditions in a virtual machine |
US8035648B1 (en) | 2006-05-19 | 2011-10-11 | Nvidia Corporation | Runahead execution for graphics processing units |
US8707011B1 (en) | 2006-10-24 | 2014-04-22 | Nvidia Corporation | Memory access techniques utilizing a set-associative translation lookaside buffer |
US8706975B1 (en) | 2006-11-01 | 2014-04-22 | Nvidia Corporation | Memory access management block bind system and method |
CN100485689C (zh) | 2007-01-30 | 2009-05-06 | 浪潮通信信息系统有限公司 | 基于文件系统缓存的数据加速查询方法 |
WO2008097710A2 (en) | 2007-02-02 | 2008-08-14 | Tarari, Inc. | Systems and methods for processing access control lists (acls) in network switches using regular expression matching logic |
CN101042670A (zh) | 2007-04-24 | 2007-09-26 | 上海华龙信息技术开发中心 | 一种指令异常处理方法 |
US7895421B2 (en) | 2007-07-12 | 2011-02-22 | Globalfoundries Inc. | Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement |
US7712092B2 (en) | 2007-10-01 | 2010-05-04 | The Board Of Trustees Of The Leland Stanford Junior University | Binary translation using peephole translation rules |
US7925923B1 (en) | 2008-01-31 | 2011-04-12 | Hewlett-Packard Development Company, L.P. | Migrating a virtual machine in response to failure of an instruction to execute |
US20090327661A1 (en) | 2008-06-30 | 2009-12-31 | Zeev Sperber | Mechanisms to handle free physical register identifiers for smt out-of-order processors |
US8245017B2 (en) | 2009-02-12 | 2012-08-14 | Via Technologies, Inc. | Pipelined microprocessor with normal and fast conditional branch instructions |
US8533437B2 (en) | 2009-06-01 | 2013-09-10 | Via Technologies, Inc. | Guaranteed prefetch instruction |
US8364902B2 (en) | 2009-08-07 | 2013-01-29 | Via Technologies, Inc. | Microprocessor with repeat prefetch indirect instruction |
US20110078425A1 (en) | 2009-09-25 | 2011-03-31 | Shah Manish K | Branch prediction mechanism for predicting indirect branch targets |
US8775153B2 (en) * | 2009-12-23 | 2014-07-08 | Intel Corporation | Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment |
TWI506434B (zh) | 2010-03-29 | 2015-11-01 | Via Tech Inc | 預取單元、資料預取方法、電腦程式產品以及微處理器 |
US8479176B2 (en) | 2010-06-14 | 2013-07-02 | Intel Corporation | Register mapping techniques for efficient dynamic binary translation |
US8719625B2 (en) | 2010-07-22 | 2014-05-06 | International Business Machines Corporation | Method, apparatus and computer program for processing invalid data |
US8549504B2 (en) | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US8627044B2 (en) | 2010-10-06 | 2014-01-07 | Oracle International Corporation | Issuing instructions with unresolved data dependencies |
EP2668565B1 (en) | 2011-01-27 | 2019-11-06 | Intel Corporation | Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor |
US20140019723A1 (en) | 2011-12-28 | 2014-01-16 | Koichi Yamada | Binary translation in asymmetric multiprocessor system |
US8898642B2 (en) | 2012-02-16 | 2014-11-25 | Unisys Corporation | Profiling and sequencing operators executable in an emulated computing system |
US10146545B2 (en) | 2012-03-13 | 2018-12-04 | Nvidia Corporation | Translation address cache for a microprocessor |
US9880846B2 (en) | 2012-04-11 | 2018-01-30 | Nvidia Corporation | Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries |
US10241810B2 (en) | 2012-05-18 | 2019-03-26 | Nvidia Corporation | Instruction-optimizing processor with branch-count table in hardware |
US9384001B2 (en) | 2012-08-15 | 2016-07-05 | Nvidia Corporation | Custom chaining stubs for instruction code translation |
US9645929B2 (en) | 2012-09-14 | 2017-05-09 | Nvidia Corporation | Speculative permission acquisition for shared memory |
US9740553B2 (en) | 2012-11-14 | 2017-08-22 | Nvidia Corporation | Managing potentially invalid results during runahead |
US20140189310A1 (en) | 2012-12-27 | 2014-07-03 | Nvidia Corporation | Fault detection in instruction translations |
US10108424B2 (en) | 2013-03-14 | 2018-10-23 | Nvidia Corporation | Profiling code portions to generate translations |
US9547602B2 (en) | 2013-03-14 | 2017-01-17 | Nvidia Corporation | Translation lookaside buffer entry systems and methods |
US9582280B2 (en) | 2013-07-18 | 2017-02-28 | Nvidia Corporation | Branching to alternate code based on runahead determination |
-
2012
- 2012-04-11 US US13/444,673 patent/US9880846B2/en active Active
-
2013
- 2013-01-29 DE DE102013201387A patent/DE102013201387A1/de active Pending
- 2013-04-07 CN CN201310116845.2A patent/CN103377066B/zh active Active
- 2013-04-10 TW TW102112642A patent/TWI512626B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US20130275684A1 (en) | 2013-10-17 |
DE102013201387A1 (de) | 2013-10-17 |
CN103377066B (zh) | 2017-04-12 |
US9880846B2 (en) | 2018-01-30 |
TWI512626B (zh) | 2015-12-11 |
CN103377066A (zh) | 2013-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI512626B (zh) | 微處理器中存取及管理程式碼轉譯 | |
US10083041B2 (en) | Instruction sequence buffer to enhance branch prediction efficiency | |
EP3577553B1 (en) | Branch target buffer for a data processing apparatus | |
US20170322811A1 (en) | Instruction sequence buffer to store branches having reliably predictable instruction sequences | |
EP2330500B1 (en) | System and method for using a branch mis-prediction buffer | |
JP5357017B2 (ja) | 高速で安価なストア−ロード競合スケジューリング及び転送機構 | |
RU2417407C2 (ru) | Способы и устройство для моделирования поведения предсказания переходов явного вызова подпрограммы | |
EP2087420B1 (en) | Methods and apparatus for recognizing a subroutine call | |
US9396117B2 (en) | Instruction cache power reduction | |
US10503506B2 (en) | Apparatus and method for accessing data in a cache in response to an unaligned load instruction | |
CN112579175B (zh) | 分支预测方法、分支预测装置和处理器核 | |
KR101048258B1 (ko) | 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련 | |
US20190079771A1 (en) | Lookahead out-of-order instruction fetch apparatus for microprocessors | |
WO2018059337A1 (zh) | 数据处理装置和方法 | |
US20180232232A1 (en) | Compiler-assisted lookahead (cal) memory system apparatus for microprocessors | |
US11055099B2 (en) | Branch look-ahead instruction disassembling, assembling, and delivering system apparatus and method for microprocessor system | |
US11016771B2 (en) | Processor and instruction operation method | |
WO2012132214A1 (ja) | プロセッサ及びその命令処理方法 | |
US20140372735A1 (en) | Software controlled instruction prefetch buffering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |