TW201411481A - 具有在硬體中的分支計數表的指令最佳化處理器 - Google Patents
具有在硬體中的分支計數表的指令最佳化處理器 Download PDFInfo
- Publication number
- TW201411481A TW201411481A TW102117654A TW102117654A TW201411481A TW 201411481 A TW201411481 A TW 201411481A TW 102117654 A TW102117654 A TW 102117654A TW 102117654 A TW102117654 A TW 102117654A TW 201411481 A TW201411481 A TW 201411481A
- Authority
- TW
- Taiwan
- Prior art keywords
- instructions
- hardware decoder
- microprocessor
- processing system
- core
- Prior art date
Links
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/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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種包括一微處理器核心與一轉譯器之處理系統。在該微處理器核心內設有一硬體解碼器與一邏輯結構,該硬體解碼器選擇性解碼用於在該微處理器核心中執行的指令,且該邏輯結構追蹤該硬體解碼器的使用。該轉譯器操作性耦接於該邏輯結構,且根據該邏輯結構所決定之該硬體解碼器的該使用,以選擇性轉譯用於在該微處理器核心中執行的該等指令。
Description
本發明係關於具有在硬體中的分支計數表的指令最佳化處理器。
電腦的中央處理單元(CPU,central processing unit)或圖形處理單元(GPU,graphics processing unit)可包括微處理器。微處理器可執行編譯至其原生指令集結構(ISA,instruction-set architecture)以及編譯至某些非原生ISA的碼。
當微處理器遇到非原生指令時,非原生指令的區塊可轉換成原生指令並且亦可最佳化,例如,以增加執行的速度。對應於原始非原生指令之原生指令的最佳化區塊可儲存在指令快取中,以供未來使用。但是,碼最佳化可能需要顯著的運算力。最佳化微處理器遇到的每一碼區塊可能在某些系統中呈現無法接受的性能負載。
一具體實施例提供一處理系統,該處理系統具有一微處理器核心、一硬體解碼器、一轉譯器、與一專用邏輯結構,該專用邏輯結構追蹤該硬體解碼器的使用。在該微處理器核心內設置的該硬體解碼器選擇性解碼用於在該微處理器核心中執行的指令。該轉譯器是操作性耦接於該邏輯結構,且根據由該邏輯結構所決定之該硬體解碼器的使用,選擇性轉譯
用於在該微處理器核心中執行的該等指令。
上述總結是提供以簡化形式介紹本發明之選取部分,並非用於指定出關鍵或重要特徵。由申請專利範圍定義之所主張的技術內容不侷限於此總結的內容,亦不侷限於解決在此提到之任何問題或缺點的實施。
10‧‧‧處理系統
12‧‧‧微處理器
14‧‧‧指令記憶體
16‧‧‧資料記憶體
18‧‧‧核心
20‧‧‧第三階(L3)快取
22‧‧‧第二階(L2)快取
24‧‧‧指令拾取單元
30‧‧‧L1指令快取
32‧‧‧轉譯位址快取(THASH)
34‧‧‧硬體解碼器
40‧‧‧執行單元
42‧‧‧記憶體存取
46‧‧‧L1資料快取
48‧‧‧轉譯管理器
50‧‧‧處理管線
52‧‧‧拾取階段
54‧‧‧解碼階段
56‧‧‧執行階段
58‧‧‧記憶階段
60‧‧‧寫回階段
62‧‧‧轉譯器
63‧‧‧非原生指令的特定區塊
64‧‧‧原生指令的功能相等區塊
64‧‧‧已轉譯且最佳化的碼區塊
66‧‧‧追蹤快取
68‧‧‧分割區
70‧‧‧方法
78‧‧‧方法
82‧‧‧分支計數管理器
84‧‧‧分支計數表(BCT)
84A‧‧‧BCT
84B‧‧‧BCT
88A‧‧‧暫存器
88B‧‧‧暫存器
90‧‧‧雜湊邏輯
92‧‧‧選擇邏輯
94‧‧‧選擇邏輯
96‧‧‧遞減單元
98‧‧‧零時中斷單元
100‧‧‧選擇邏輯
102‧‧‧BCT_INIT_COUNT暫存器
104‧‧‧ENABLE_MTS_BRANCH_THRESHOLD暫存器
106‧‧‧BCT_FLASH_INVAL暫存器
107‧‧‧方法
圖1示意顯示根據本發明之一具體實施例之一範例處理系統。
圖2示意顯示根據本發明之一具體實施例之一範例處理管線。
圖3例示根據本發明之一具體實施例之用於執行非原生指令碼之方法。
圖4示意顯示根據本發明之一具體實施例之一範例分支計數管理器。
圖5與6示意顯示根據本發明之具體實施例之範例分支計數表。
圖7例示根據本發明之一具體實施例之用於執行非原生指令碼之另一方法。
現在將藉由範例及參照上面列出的例示具體實施例來敘述本發明的態樣。在一或多個具體實施例中實質相同的元件是認為等同並簡單敘述。但是,應注意,等同識別的元件在某種程度上亦可能不同。本說明書文後的申請專利範圍同等定義在此主張的技術內容。申請專利範圍未侷限於下面提出的範例結構或數值範圍,亦不侷限於解決在此確認的目前最新發展技術之問題或缺點的實施。
圖1顯示處理系統10的態樣,例如,個人電腦、遊戲系統、或智慧型手機的中央處理單元或圖形處理單元。例示的處理系統包括微處理器12,該微處理器12操作性耦接於指令記憶體14與資料記憶體16。圖1的微處理器包括核心18。雖然圖式只顯示一微處理器核心,但本發明可適用於多重核心處理器與處理系統。
指令記憶體14與資料記憶體16各自可由微處理器透過一階層式記憶體快取系統而讀取與寫入。在例示的具體實施例中,記憶體快取系統包括核心外的第三階(L3)快取20與核心上的第二階(L2)快取22,還有指令與資料特定第一階(L1)快取,如下述。在其他具體實施例中,記憶體快取系統可包括任何階數,其中該等階可於晶片上或晶片外(on-or off-chip)。記憶體快取系統可操作性耦接於記憶體控制器(圖式未示),其亦可在晶片上或晶片外。實施在任何適合變化的隨機存取記憶體中,指令與資料記憶體可對應於不同的實體記憶體結構或對應於相同實體記憶體結構的不同部分。在某些具體實施例中,指令與資料記憶體亦可包括唯讀記憶體(ROM)。
參考圖1,核心18包括指令拾取單元(IFU,instruction fetch unit)24,其從指令記憶體14擷取指令。例如,在任何給定時間所要擷取的指令可由目前指令指標(IP,instruction pointer)來決定。在圖1例示的具體實施例中,IFU包括L1指令快取30,用於快取所擷取的指令。IFU亦可包括轉譯位址快取(THASH,translation-address cache)32,其敘述於下。
IFU 24可擷取各式的指令碼。除了核心18的執行單元可原生執行的指令之外,指令拾取單元亦可擷取編譯至非原生指令集結構(ISA,instruction-set architecture)的指令。此非原生指令可能需要解碼或轉譯成原生ISA,以由執行單元辨識。為此,處理系統10包括硬體解碼器34。當IFU擷取一非原生指令時,其透過硬體解碼器發送該指令至執行單元40。當IFU擷取原生指令時,該指令會略過硬體解碼器,直接發送至執行單元。例如,
執行單元可包括整數及/或浮點元件。
硬體解碼器34是一設置於核心18的邏輯結構,且選擇性解碼用於該核心中執行的指令。特別地,硬體解碼器解碼由IFU 24擷取的非原生指令。硬體解碼器剖析(parse)該非原生指令的運算碼(op-codes)、運算碼元(operands)、與定址模式,及產生一功能等效但非最佳化的原生指令集。
參考圖1,執行單元40從IFU 24或從硬體解碼器34接收原生可執行的指令。在一具體實施例中,微處理器12可為一所謂的依序(in-order)處理器,其中指令是以實質上相同的順序擷取與執行,即是,在排程器中不需重新排序。在例示的具體實施例中,執行單元亦提供硬體支援給轉譯管理器48,如下述。
當指令在核心18的執行單元中執行時,一連串的邏輯及/或算術結果牽涉於其中。執行單元的寫回邏輯儲存這些結果在核心的適合暫存器中。在一些具體實施例中,記憶體存取42具有透過L1資料快取46實行來回於資料記憶體16的儲存及載入操作的互斥工作。
處理系統10的基本功能可用處理管線的形式來呈現。圖2示例顯示一範例處理管線50。在拾取階段52,IFU 24從指令記憶體14讀取非原生指令。在解碼階段54,硬體解碼器34解碼非原生指令成對應的原生指令。在執行階段56,執行單元運算該指令的邏輯或數值結果。在記憶階段58,根據該指令的結果,從資料記憶體16讀取或寫入資料記憶體16。在寫回階段60,再次根據該指令的結果,寫入該微處理器核心的適合暫存器。
在一些實施例中,管線50每次只處理一指令。在一或多個時脈週期期間,將要處理的指令會只占用管線的一階段,留下其餘未用的階段。為了增加指令的處理量,可同時使用管線的兩或多個階段以處理兩或多個指令。在理想的「量級(scalar)」執行中,可拾取第一指令、解碼第二指令、運算第三指令的結果、記憶第四指令的結果、以及第五指令的結
果寫回至暫存器檔案,所有這些都在相同時脈週期中執行。圖2的態樣應不認為是限制,其他多種變化亦在本發明所欲涵蓋的範圍中。例如,在一些處理系統中,執行階段56可在記憶階段58之前。
如上述,除了微處理器12的原生ISA之外,處理系統10可執行符合一或多個非原生ISA的指令。處理系統10可執行之非原生ISA的一例示範例是64位元進階RISC機器(ARM,Advanced RISC Machine)指令集;另一範例是x86指令集。實際上,非原生ISA的全部範圍可包括精簡指令集運算(RISC,reduced instruction-set computing)與複雜指令集運算(CISC,complex instruction-set computing)ISA、超長指令字(VLIW,very long instruction-word)ISA、與類似者。執行選定非原生指令的能力提供處理系統的實際優勢,其中處理系統可用於執行針對預先存在處理系統所編譯的碼。
參考圖1,硬體解碼器34提供將非原生指令轉換成一連串功能等效原生指令所需之基本邏輯結構。但是,處理輸出量受限於硬體解碼器所輸出之已轉換但非最佳化碼所能執行之速度。因此,圖1所示的處理系統亦包括轉譯管理器48。類似於硬體解碼器,轉譯管理器剖析非原生指令的運算碼、運算元、與定址模式,及產生一連串功能等效的原生指令。但是,轉譯管理器主要是一軟體結構;轉譯管理器使用在核心18上執行的已編程演算法轉譯非原生指令。在圖1的具體實施例中,轉譯器62是轉譯管理器的核心轉譯服務;在一具體實施例中,轉譯管理器可包括動態二元轉譯器。轉譯管理器的其他態樣與轉譯器可存在於指令記憶體14中。
選擇性地,轉譯器62可最佳化以及轉譯非原生指令的特定區塊63。原則上,非原生指令可轉換成原生指令的功能等效區塊64,針對處理系統10的執行速度最佳化。選替性地,已轉譯的指令可最佳化以減少功率消耗。在此考慮的具體實施例中,最佳化的各種模式都可用於轉譯器。這些模式包括在所謂非依序處理系統中的共同特徵,例如暫存器重新命名與指令重新排序,其中最佳化區塊的個別指令係關於非原生區塊的對應指
令而重新排序。這些提出的特徵為非限制的範例;轉譯器可利用各種技術產生最佳化的原生轉譯。此外,應注意,在此用的術語「區塊」可視為具有虛擬任何長度之一連串指令;並未侷限於在本技術領域中熟知的所謂「基本區塊」。
在一些具體實施例中,轉譯管理器48可將已轉譯及最佳化的碼區塊64儲存在追蹤快取66。在圖1例示的具體實施例中,追蹤快取以及轉譯管理器存在於分割區68,其為指令記憶體14的私人、安全部分。追蹤快取中的每一最佳化轉譯可與來自指令記憶體14的非原生指令的對應區塊的IP有關聯。轉譯位址快取(THASH)32是一核心上的硬體重新導引器,允許IFU 24在執行期間存取該等轉譯。
更具體地,IFU 24在擷取非原生指令時可提供該指令的位址給THASH 32。如果存在此一轉譯,THASH將非原生指令的位址與對應之最佳化轉譯的位址產生關聯性。如果在THASH中產生關聯性,則最佳化轉譯的位址回傳給IFU,IFU接著使用該位址從追蹤快取66擷取該最佳化轉譯。該轉譯然後輸送,無需使用硬體解碼器34即可在核心18的執行單元中執行。在已最佳化之原生碼的每一區塊的邊界,轉譯管理器提供給程式人員(programmer)可用的一完全相容結構集的狀態。
圖3例示一範例方法70,用於在一處理系統中執行非原生指令碼,該處理系統具有一硬體解碼器與一轉譯器兩者。此方法藉由連續參照本說明書例示的結構促成及敘述。但是,應瞭解,本說明書所述的方法及在本發明範疇內的其他方法都可藉由不同結構促成。該方法可在處理系統10操作時隨時使用,並可重覆執行。自然地,一方法的每一執行可改變後續執行的進入條件,且藉此啟動複雜的決策邏輯,且都在本發明所欲涵蓋之範圍內。此外,在一些具體實施例中,在此敘述及/或例示之某些程序步驟可省略,而不致悖離本發明之範疇。所指出的程序步驟順序係簡化以說明本發明,應可知程序步驟順序可以更動而仍可達成想要的結果。例
示的作動、功能、或操作之一或多者可並行執行、或重覆執行,此取決於所使用的特定策略。
在方法70的步驟72,透過微處理器核心的IFU從指令記憶體14擷取非原生指令碼的一區塊。在一具體實施例中,擷取的指令可包括開始於分支目標位址的碼區塊。在步驟74,判斷硬體解碼是否為此碼區塊所需。硬體解碼可能優於軟體轉譯,因為軟體轉譯的最佳化態樣預期提供較少整體性能改善。例如,如果預期該碼區塊將不常執行,或者有關於最佳化轉譯會有特別高的負載時,硬體解碼可能較好。如果需要硬體解碼,則方法前進至步驟76,其中所擷取的區塊傳送通過硬體解碼器34及解碼作為核心18的執行。但是,如果不需要硬體解碼,則方法前進至步驟78,其中該區塊提交至轉譯管理器48。在硬體解碼器或轉譯管理器中的適當轉換之後,在步驟80,執行對應於非原生碼之所擷取區塊的原生碼。因此,轉譯器所轉譯的指令被執行,硬體解碼器無需進一步處理。方法然後返回步驟72,擷取非原生碼之後續區塊。
自然地,使用轉譯管理器(其為軟體結構)產生最佳化轉譯會有相關的效能負載(performance overhead)。此外,任何最佳化的效能益處會隨著執行最佳化碼(而不是執行較慢、未最佳化的碼)的頻率而調整。因此,提交用於最佳化的較常執行碼且解碼在硬體中的不常執行而不最佳化的碼會是有利的。
原則上,軟體資料結構(例如陣列)可用於追蹤在指令記憶體14中的非原生碼的各種區塊的執行頻率。此陣列可儲存在核心外記憶體(off-core memory)中,且包括共同遇到之分支目標位址的計數以及代表分支目標位址多久被取用的資料。但是,此方法在運行時間(runtime)是耗時的,因為微處理器遇到的每一分支指令可能只是為了更新該陣列,潛在需要重新導向轉譯管理器。
為了解決此問題且提供另外其他優點,如圖1所示,處理系
統10包括一分支計數管理器82,其實施於核心18的執行單元40內。分支計數管理器是一微結構邏輯結構,追蹤硬體解碼器的使用,並在非原生區塊已透過硬體解碼而執行一臨界次數之後,觸發非原生區塊的轉譯。如此,分支計數管理器82協助轉譯管理器48識別由該處理系統最常執行的碼區塊,使得該等碼區塊可作為最佳化的目標。
圖4示意顯示一具體實施例之一範例分支計數管理器82。分支計數管理器包括分支計數表(BCT,branch-count table)84,一邏輯結構設置在微處理器核心內,且追蹤硬體解碼器34的使用。在一具體實施例中,BCT可計數非原生碼之一給定區塊透過硬體解碼器的使用被執行多少次。此結構提供快速、有效率的機構,無需啟用軟體即可追蹤硬體解碼器的使用,如下面進一步敘述。因此,轉譯器62可操作性耦接於BCT,且根據BCT所決定之硬體解碼器的使用,選擇性轉譯用於微處理器核心執行的非原生指令。
圖5示意顯示一具體實施例中之一範例BCT 84A。例示的BCT包括複數個暫存器88A,其保持對應的複數個非原生碼區塊的執行計數。如此,該等暫存器之每一者追蹤其對應非原生碼區塊之硬體解碼器的使用。更具體地,每一暫存器可包括一值,該值是用來決定何時要利用轉譯器來選擇性轉譯該等指令。在一非限制範例中,BCT可包括128個相同的暫存器。每一暫存器可包括需要儲存一數值的位元數,該數值指示在最佳化之前,一分支應被取用的預期最大次數,在某些具體實施例是八或十位元。
BCT 84A的暫存器為可定址的,以由轉譯管理器48讀取與寫入。每一暫存器88A為可定址,以透過讀指標(read index)來讀取,且透過一寫指標(write index)來寫入。如上述,將被轉譯與最佳化之每一非原生碼區塊可開始於分支目標位址處。因此,透過分支目標位址之一或多個雜湊形式,BCT的各個暫存器為可定址。雜湊特徵促使可管理的BCT暫存器
之數量映射至遠較大數量的分支目標位址。在圖5例示的具體實施例中,讀指標與寫指標對應於分支目標位址的不同雜湊形式。BCT 84A包括雜湊邏輯90,其使一給定的分支目標位址雜湊成一適合的讀指標與寫指標。根據讀指標,選擇邏輯92促使選定的暫存器用於讀取。根據寫指標,選擇邏輯94促使選定的暫存器用於寫入。
當一讀致能(read-enabled)之暫存器接收指示分支是否被取用之信號時,例如,從共同時脈線,該信號導致暫存器的內容透過DOUT匯流排輸出至遞減單元96。遞減單元從其中接收的計數減去1,且提供遞減的計數至DIN匯流排。當該暫存器透過選擇邏輯94而寫入致能(write-enable)時,該遞減的計數重新寫回至相同的暫存器。如果遞減的值等於零,則零時中斷(interrupt-on-zero)單元98產生核心18的中斷,該中斷由轉譯管理器48接收,且可觸發後續的作動,如在此的進一步敘述。當對應於該暫存器的該分支已被取用所欲次數時,亦即,當該分支「飽和」時,則到達零的計數。如此,當任何暫存器到達零,BCT可產生微處理器12的中斷,且使得飽和分支的分支目標位址可用於中斷-擷取(interrupt-trapping)轉譯管理器程序。
圖5亦顯示選擇邏輯100,根據PRELOAD輸入的狀態,其可曝露BCT_INT_COUNT值給DIN匯流排,而不是遞減的計數。如上述,BCT_INIT_COUNT值為可編程,且可由轉譯管理器48指定。如此,BCT 84A之每一暫存器可預先載入一值,該值為對應於在觸發最佳化的中斷產生之前一分支應被取用之次數。
圖6顯示一具體實施例中的另一範例BCT 84B。在此具體實施例中,每一暫存器88B是n位元的二元向下計數器(八位元、十位元..等),在讀取時遞減計數。透過選擇邏輯90,每一計數器可預先載入一者小於所欲次數的BCT_INIT_COUNT,而所欲次數即於最佳化之前該對應的分支應被取用的次數。在圖6例示的具體實施例中,當對應分支的所欲執行
次數已到達時,亦即,當該分支「飽和」時,計數器便會欠位(underflow)(產生借位(borrow))。因此,當任何計數器產生借位時,產生中斷。自然的,其他BCT具體實施例亦可設想到。例如,BCT的計數器可遞增而非遞減,且當任何計數器產生進位時,產生中斷。
參考圖4,分支計數管理器82包括BCT_INIT_COUNT暫存器102、ENABLE_MTS_BRANCH_THRESHOLD暫存器104、與BCT_FLASH_INVAL暫存器106。這些暫存器提供一介面給轉譯管理器48以控制BCT 84。BCT_INIT_COUNT暫存器是一資料暫存器,該資料暫存器儲存BCT84的每一暫存器的初始計數值。ENABLE_MTS_BRANCH_THRESHOLD暫存器是一控制暫存器,該控制暫存器儲存反映BCT是否可產生中斷的布林(boolean)值。例如,當一或多個最佳化已排程但尚未完成時,BCT中斷可被抑制。BCT_FLASH_INVAL暫存器是一控制暫存器,當寫入一真(Truth)布林值時,邏輯結構中的所有項目被該控制暫存器觸發為無效而復原成其個別初始計數值。
圖7例示用於執行非原生指令碼之另一範例方法107。開始執行時,IFU 24已擷取使IP導向分支目標位址之分支指令,分支目標位址定義已接收之非原生碼區塊的初始位址。末端位址(或該區塊的長度)可由後續的分支指令或由返回指令加以定義。
在方法78的步驟108,判斷分支目標位址是否已儲存在THASH 32中。如果分支目標位址已儲存在THASH中,則方法前進至步驟110,其中該IP重新導向對應於已接收之非原生碼區塊的最佳化轉譯。如此,最佳化的原生碼區塊可由處理系統執行,而不進一步使用硬體解碼器。
但是,如果分支目標位址尚未儲存在追蹤快取中,則方法前進至步驟112。在步驟112,分支目標位址的各個位元被雜湊,以產生至BCT84的適合暫存器之一讀指標與一寫指標。在一具體實施例中,讀指標與寫指標可為不同的指標。在步驟114,一對應於讀位址的項目是從BCT讀取。
在步驟116,此項目遞減值,例如,遞減1。在步驟118,判斷該遞減值是否等於零。暫存器中出現零值可能是導致BCT啟用轉譯器的一條件。在一非限制範例中,藉由在處理系統中產生中斷,可啟用轉譯器。
在例示的範例中,如果遞減值等於零,則方法前進至步驟120;否則方法前進至步驟122,其中遞減值寫回至在步驟112所運算之寫指標的BCT。然後,在步驟123,非原生碼區塊在硬體解碼器中解碼及執行。如此,BCT的適合暫存器可計數該硬體解碼器已解碼該碼區塊多少次。
應注意,方法78的操作細節應認為不是限制,因為亦可設想出多種變化。例如,在步驟116,暫存器的內容可遞增而非遞減。在某些範例中,因此,暫存器的欠位或溢位(overflow)可能是啟用轉譯器的一條件。
參考圖7,在步驟120,當遞減的計數值等於零時,則判斷一追蹤快取項目是否已存在用於從指定之分支目標位址開始的指令。如果針對此指令存在有追蹤快取項目,則方法前進至步驟124,其中微處理器12中的硬體結構可被更新,使得至該分支的後續參照可執行該已最佳化的原生碼區塊。在該方法的此點,執行繼續在步驟110,其中該IP重新導向已最佳化的原生碼。但是,如果不存在適當的追蹤快取項目,則方法前進至步驟126。
在步驟126,判斷該碼區塊的轉譯與最佳化是否已在處理中。如果轉譯與最佳化已處理,則該方法前進至步驟123,其中啟用硬體解碼器,以避免必須等待最佳化完成;否則,方法前進至步驟128。在此與其他具體實施例中,在步驟126的判斷可反映一非原生碼區塊是否應該或不應該此點被轉譯/最佳化的其他條件。
在步驟128,例如使用轉譯器62(圖1)轉譯及最佳化該碼區塊,以產生一最佳化的原生碼區塊。因此,在硬體解碼器已解碼該指令一臨界次數之後,且假設不存在對應的最佳化碼,轉譯管理器48將非原生碼區塊轉譯成最佳化的原生碼區塊。如上述,該方法步驟的順序在本發明
的各種不同具體實施例中可不同。例如,在某些範例中,步驟128與130可並行執行,碼透過該硬體解碼器可繼續執行。
在步驟130,已最佳化的原生碼區塊儲存在追蹤快取記憶體66,用於在處理系統的後續執行。從此點,該方法執行是在步驟110繼續,其中該IP重新導向已最佳化的原生碼。
應瞭解,上述之方法與系統是本發明之具體實施例,而不是限制範例,因為亦可設想出多種變化與延伸。因此,本發明包括此系統與方法之所有新穎與非顯而易見的組合與次組合、以及其任何與所有等效物。
10‧‧‧處理系統
12‧‧‧微處理器
14‧‧‧指令記憶體
16‧‧‧資料記憶體
18‧‧‧核心
20‧‧‧第三階(L3)快取
22‧‧‧第二階(L2)快取
24‧‧‧指令拾取單元
30‧‧‧L1指令快取
32‧‧‧轉譯位址快取(THASH)
34‧‧‧硬體解碼器
40‧‧‧執行單元
42‧‧‧記憶體存取
46‧‧‧L1資料快取
48‧‧‧轉譯管理器
62‧‧‧轉譯器
63‧‧‧非原生指令的特定區塊
64‧‧‧原生指令的功能相等區塊
64‧‧‧已轉譯且最佳化的碼區塊
66‧‧‧追蹤快取
68‧‧‧分割區
82‧‧‧分支計數管理器
Claims (10)
- 一種處理系統,包括:一微處理器核心;一硬體解碼器,設置在該微處理器核心內,且選擇性解碼用於在該微處理器核心中執行的指令;一邏輯結構,設置在該微處理器核心內,且追蹤該硬體解碼器的使用;及一轉譯器,操作性耦接於該邏輯結構,且根據該邏輯結構所決定之該硬體解碼器的該使用,選擇性轉譯用於在該微處理器核心中執行的該等指令。
- 如申請專利範圍第1項之處理系統,其中該硬體解碼器的該使用包括該硬體解碼器已經解碼該等指令多少次之計數。
- 如申請專利範圍第1項之處理系統,其中該轉譯器另外執行下列一或多個操作:為了執行的速度而選擇性地最佳化該等指令;選擇性重新命名該微處理器核心的一暫存器;及選擇性重新排序該等指令。
- 如申請專利範圍第1項之處理系統,另外包括一執行單元,執行該轉譯器所轉譯的該等指令並且執行該硬體解碼器所解碼的該等指令,且其中當由該轉譯器轉譯時,該等指令是在該執行單元中執行,而不由該硬體解碼器進一步處理。
- 如申請專利範圍第1項之處理系統,其中該邏輯結構包括一暫存器,追蹤該硬體解碼器的該使用,該暫存器包括一值,該值用來決定何時要利用該轉譯器以選擇性轉譯該等指令。
- 如申請專利範圍第6項之處理系統,其中一用於啟用該轉譯器之條件包括該暫存器中的該值的欠位、溢位、或空值。
- 如申請專利範圍第6項之處理系統,其中該等指令包括從一分支目標位址開始之一碼區塊,且其中該暫存器可透過該分支目標位址之一或多個雜湊形式加以定址。
- 一種方法,用於一處理系統中,該處理系統具有一微處理器核心;一硬體解碼器,該硬體解碼器配置在該微處理器核心內;及一轉譯器,該方法包括:利用該硬體解碼器,解碼用於該微處理器核心中執行的指令;在配置於該微處理器核心內之一邏輯結構中,計數該硬體解碼器已解碼該等指令多少次;在該硬體解碼器已解碼該等指令一臨界次數之後,透過該轉譯器以轉譯及最佳化該等指令;及儲存已轉譯的該等指令在一追蹤快取中,以由該處理系統執行。
- 如申請專利範圍第8項之方法,更包括執行該等已轉譯而未由該硬體解碼器進一步處理之指令。
- 如申請專利範圍第8項之方法,其中該等指令包括從一分支目標位址開始之一碼區塊,其中該邏輯結構包括一暫存器,用於計數該硬體解 碼器已解碼該碼區塊多少次,且其中該暫存器可透過該分支目標位址之一或多個雜湊形式加以定址,該方法更包括雜湊該分支目標位址,以獲得一用於讀取該暫存器之位址。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/475,755 US10241810B2 (en) | 2012-05-18 | 2012-05-18 | Instruction-optimizing processor with branch-count table in hardware |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201411481A true TW201411481A (zh) | 2014-03-16 |
TWI515652B TWI515652B (zh) | 2016-01-01 |
Family
ID=49511099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102117654A TWI515652B (zh) | 2012-05-18 | 2013-05-17 | 具有在硬體中的分支計數表的指令最佳化處理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10241810B2 (zh) |
CN (1) | CN103425458A (zh) |
DE (1) | DE102013206381A1 (zh) |
TW (1) | TWI515652B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9678749B2 (en) | 2014-12-22 | 2017-06-13 | Intel Corporation | Instruction and logic for shift-sum multiplier |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US9335982B1 (en) | 2015-04-28 | 2016-05-10 | Microsoft Technology Licensing, Llc | Processor emulation using multiple translations |
US10162694B2 (en) * | 2015-12-21 | 2018-12-25 | Intel Corporation | Hardware apparatuses and methods for memory corruption detection |
US10558613B1 (en) | 2018-07-19 | 2020-02-11 | EMC IP Holding Company LLC | Storage system with decrement protection of reference counts |
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 |
GB2284494B (en) | 1993-11-26 | 1998-09-09 | Hitachi Ltd | Distributed shared memory management system |
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 |
SG47981A1 (en) | 1994-03-01 | 1998-04-17 | Intel Corp | Pipeline process of instructions in a computer system |
US5487146A (en) | 1994-03-08 | 1996-01-23 | Texas Instruments Incorporated | Plural memory access address generation employing guide table entries forming linked list |
JPH0877347A (ja) | 1994-03-08 | 1996-03-22 | Texas Instr Inc <Ti> | 画像/グラフィックス処理用のデータ処理装置およびその操作方法 |
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 |
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 |
US8121828B2 (en) | 1999-01-28 | 2012-02-21 | Ati Technologies Ulc | Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions |
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 |
WO2002003572A1 (en) * | 2000-07-05 | 2002-01-10 | Honeywell International Inc. | Datalink preferred channel selection |
DE60008088T2 (de) | 2000-07-06 | 2004-12-23 | Texas Instruments Inc., Dallas | Mehrprozessorsystem Prüfungsschaltung |
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 |
US6742104B2 (en) | 2000-08-21 | 2004-05-25 | Texas Instruments Incorporated | Master/slave processing system with shared translation lookaside buffer |
EP1182571B1 (en) | 2000-08-21 | 2011-01-26 | Texas Instruments Incorporated | TLB operations based on shared bit |
EP1213650A3 (en) | 2000-08-21 | 2006-08-30 | Texas Instruments France | Priority arbitration based on current task and MMU |
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 |
JP4762494B2 (ja) | 2002-04-18 | 2011-08-31 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | セキュア実行モードを実行可能なcpuおよび高信頼(セキュア)通信路を介して接続されたセキュリティサービスプロセッサを含むコンピュータシステム |
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 |
US7418585B2 (en) | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US20050050013A1 (en) | 2003-08-28 | 2005-03-03 | Sharp Laboratories Of America, Inc. | System and method for policy-driven device queries |
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 |
US8255882B2 (en) | 2004-12-30 | 2012-08-28 | 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 |
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 |
US8635437B2 (en) | 2009-02-12 | 2014-01-21 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static exception state |
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 |
TWI547803B (zh) | 2010-03-29 | 2016-09-01 | 威盛電子股份有限公司 | 預取單元、資料預取方法、電腦程式產品以及微處理器 |
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 |
WO2013100996A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | 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-05-18 US US13/475,755 patent/US10241810B2/en active Active
-
2013
- 2013-04-11 DE DE102013206381A patent/DE102013206381A1/de active Pending
- 2013-05-17 TW TW102117654A patent/TWI515652B/zh active
- 2013-05-20 CN CN2013101874821A patent/CN103425458A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9678749B2 (en) | 2014-12-22 | 2017-06-13 | Intel Corporation | Instruction and logic for shift-sum multiplier |
TWI588740B (zh) * | 2014-12-22 | 2017-06-21 | 英特爾股份有限公司 | 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法 |
Also Published As
Publication number | Publication date |
---|---|
US10241810B2 (en) | 2019-03-26 |
DE102013206381A1 (de) | 2013-11-21 |
US20130311752A1 (en) | 2013-11-21 |
CN103425458A (zh) | 2013-12-04 |
TWI515652B (zh) | 2016-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI515652B (zh) | 具有在硬體中的分支計數表的指令最佳化處理器 | |
JP6761565B2 (ja) | アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置 | |
KR101817397B1 (ko) | 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈 | |
JP5837126B2 (ja) | 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア | |
JP6849274B2 (ja) | 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック | |
US8185882B2 (en) | Java virtual machine hardware for RISC and CISC processors | |
KR101817459B1 (ko) | 1들을 최하위 비트들이 되도록 풀링하면서 비트들을 좌측으로 시프팅하기 위한 명령어 | |
EP0950216A2 (en) | A processing device for executing virtual machine instructions | |
US9367314B2 (en) | Converting conditional short forward branches to computationally equivalent predicated instructions | |
CN104346132B (zh) | 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机 | |
US20050240915A1 (en) | Java hardware accelerator using microcode engine | |
TWI613590B (zh) | 處理器流水線中的靈活的指令執行 | |
JP6073392B2 (ja) | 命令としてデータ値を評価するシステムおよび方法 | |
JP2021174513A (ja) | データ依存脆弱分岐の機会主義的再誘導のための命令セットアーキテクチャベース自動負荷追跡 | |
TW201423579A (zh) | 指令碼轉譯的自訂鏈結存根 | |
WO2020210624A1 (en) | Data loading and storage instruction processing method and device | |
JP3345787B2 (ja) | データ処理装置 | |
CN108241506B (zh) | 对基于高性能串的循环加速器中的加载做控制推测的方法 | |
KR100930831B1 (ko) | 바이트코드 변환 가속 장치 및 그 방법 | |
US11449336B2 (en) | Method of storing register data elements to interleave with data elements of a different register, a processor thereof, and a system thereof | |
JP4418509B2 (ja) | Javaアクセラレータを備えたプロセッサシステム |