TW201405425A - 微處理器中存取及管理程式碼轉譯 - Google Patents

微處理器中存取及管理程式碼轉譯 Download PDF

Info

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
Application number
TW102112642A
Other languages
English (en)
Other versions
TWI512626B (zh
Inventor
Nathan Tuck
Ross Segelken
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of TW201405425A publication Critical patent/TW201405425A/zh
Application granted granted Critical
Publication of TWI512626B publication Critical patent/TWI512626B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving 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. 一種包括一微處理器及關聯記憶體系統的微處理系統,包含:一硬體結構於該微處理器之一核心上;複數個項目於該硬體結構中,每一項目係關聯於一對應程式碼部份的一轉譯,該轉譯係可由該微處理器執行以代替該對應程式碼部份而達成實質等效的功能;一重定向陣列於該硬體結構中,其包括針對每一項目的重定向資訊,可用以造成執行從該對應程式碼部份重定向至針對該對應程式碼部份之該轉譯;以及一存取陣列於該硬體結構中,其包括變化以回應用於重定向執行之該項目的使用資訊,其中基於那些項目的該使用資訊而將特定項目維持在該硬體結構內或從該硬體結構逐出。
  2. 如申請專利範圍第1項所述之微處理系統,更包含管理軟體,其重複地取樣在該存取陣列中的數值並基於那些項目用以重定向執行至轉譯的頻率而控制將特定項目維持在該硬體結構內或從該硬體結構逐出。
  3. 如申請專利範圍第1項所述之微處理系統,更包含管理軟體,其重複地取樣在該存取陣列中的數值並基於那些項目最近一次用以重定向執行至轉譯而控制將特定項目維持在該硬體結構內或從該硬體結構逐出。
  4. 如申請專利範圍第1項所述之微處理系統,更包含管理軟體,其重複地取樣在該存取陣列中的數值並基於那些項目用以重定向執行至轉譯的頻率以及最近一次用以重定向執行至轉譯而控制將特定項目維持在該硬體結構內或從該硬體結構逐出。
  5. 如申請專利範圍第1項所述之微處理系統,更包含一硬體解碼器於該微處理器之該核心上,其中若一所選程式碼部份不具有一項目於該硬體結構中,則由該微處理器使用該硬體解碼器而執行該所選程式碼部份,且其中若該所選程式碼部份具有一項目於該硬體結構中,則由該微處理器執行其對應的轉譯而不使用該硬體解碼器。
  6. 如申請專利範圍第1項所述之微處理系統,其中在該存取陣列中的該使用資訊針對每一項目包含一存取位元,其為該項目是否已用於重定向執行至一轉譯的一二元指示。
  7. 如申請專利範圍第6項所述之微處理系統,其中該微處理系統可操作以(1)當其對應的項目用以重定向執行至轉譯時設定在該存取陣列中的該存取位元;以及(2)在該存取位元被設定的時間之間清除該存取位元。
  8. 如申請專利範圍第7項所述之微處理系統,更包含管理軟體,其重複地取樣及清除該存取位元以隨著時間產生存取位元數值的一歷史,該管理軟體更可操作以根據關聯於該項目之該存取位元之該歷史而控制將一所選項目維持在該硬體結構內或從該硬體結構逐出。
  9. 如申請專利範圍第8項所述之微處理系統,其中該管理軟體可操作以基於該項目最近一次用以重定向執行至該關聯轉譯以及用以重定向執行至該關聯轉譯的頻率之其中一或多者,其係反映在該存取位元之該歷史中,而控制將所選項目維持在該硬體結構內或從該硬體結構逐出。
  10. 如申請專利範圍第1項所述之微處理系統,其中在該存取陣列中之該使用資訊針對每一項目包含一計數,該計數為該項目已用於重定向執行至一轉譯的次數。
TW102112642A 2012-04-11 2013-04-10 微處理器中存取及管理程式碼轉譯 TWI512626B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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