TW201411481A - 具有在硬體中的分支計數表的指令最佳化處理器 - Google Patents

具有在硬體中的分支計數表的指令最佳化處理器 Download PDF

Info

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
Application number
TW102117654A
Other languages
English (en)
Other versions
TWI515652B (zh
Inventor
Rupert Brauch
Madhu Swarna
Ross Segelken
David Dunn
Ben Hertzberg
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 TW201411481A publication Critical patent/TW201411481A/zh
Application granted granted Critical
Publication of TWI515652B publication Critical patent/TWI515652B/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/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
    • 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

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. 一種處理系統,包括:一微處理器核心;一硬體解碼器,設置在該微處理器核心內,且選擇性解碼用於在該微處理器核心中執行的指令;一邏輯結構,設置在該微處理器核心內,且追蹤該硬體解碼器的使用;及一轉譯器,操作性耦接於該邏輯結構,且根據該邏輯結構所決定之該硬體解碼器的該使用,選擇性轉譯用於在該微處理器核心中執行的該等指令。
  2. 如申請專利範圍第1項之處理系統,其中該硬體解碼器的該使用包括該硬體解碼器已經解碼該等指令多少次之計數。
  3. 如申請專利範圍第1項之處理系統,其中該轉譯器另外執行下列一或多個操作:為了執行的速度而選擇性地最佳化該等指令;選擇性重新命名該微處理器核心的一暫存器;及選擇性重新排序該等指令。
  4. 如申請專利範圍第1項之處理系統,另外包括一執行單元,執行該轉譯器所轉譯的該等指令並且執行該硬體解碼器所解碼的該等指令,且其中當由該轉譯器轉譯時,該等指令是在該執行單元中執行,而不由該硬體解碼器進一步處理。
  5. 如申請專利範圍第1項之處理系統,其中該邏輯結構包括一暫存器,追蹤該硬體解碼器的該使用,該暫存器包括一值,該值用來決定何時要利用該轉譯器以選擇性轉譯該等指令。
  6. 如申請專利範圍第6項之處理系統,其中一用於啟用該轉譯器之條件包括該暫存器中的該值的欠位、溢位、或空值。
  7. 如申請專利範圍第6項之處理系統,其中該等指令包括從一分支目標位址開始之一碼區塊,且其中該暫存器可透過該分支目標位址之一或多個雜湊形式加以定址。
  8. 一種方法,用於一處理系統中,該處理系統具有一微處理器核心;一硬體解碼器,該硬體解碼器配置在該微處理器核心內;及一轉譯器,該方法包括:利用該硬體解碼器,解碼用於該微處理器核心中執行的指令;在配置於該微處理器核心內之一邏輯結構中,計數該硬體解碼器已解碼該等指令多少次;在該硬體解碼器已解碼該等指令一臨界次數之後,透過該轉譯器以轉譯及最佳化該等指令;及儲存已轉譯的該等指令在一追蹤快取中,以由該處理系統執行。
  9. 如申請專利範圍第8項之方法,更包括執行該等已轉譯而未由該硬體解碼器進一步處理之指令。
  10. 如申請專利範圍第8項之方法,其中該等指令包括從一分支目標位址開始之一碼區塊,其中該邏輯結構包括一暫存器,用於計數該硬體解 碼器已解碼該碼區塊多少次,且其中該暫存器可透過該分支目標位址之一或多個雜湊形式加以定址,該方法更包括雜湊該分支目標位址,以獲得一用於讀取該暫存器之位址。
TW102117654A 2012-05-18 2013-05-17 具有在硬體中的分支計數表的指令最佳化處理器 TWI515652B (zh)

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)

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

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

* 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
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

Cited By (2)

* Cited by examiner, † Cited by third party
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アクセラレータを備えたプロセッサシステム