TWI543074B - 具有近端分支與遠端分支序列結構的客戶指令區塊至本機指令區塊 - Google Patents

具有近端分支與遠端分支序列結構的客戶指令區塊至本機指令區塊 Download PDF

Info

Publication number
TWI543074B
TWI543074B TW101102831A TW101102831A TWI543074B TW I543074 B TWI543074 B TW I543074B TW 101102831 A TW101102831 A TW 101102831A TW 101102831 A TW101102831 A TW 101102831A TW I543074 B TWI543074 B TW I543074B
Authority
TW
Taiwan
Prior art keywords
client
branch
instructions
remote
instruction
Prior art date
Application number
TW101102831A
Other languages
English (en)
Other versions
TW201246066A (en
Inventor
摩翰麥德 艾伯戴爾拉
Original Assignee
軟體機器公司
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 軟體機器公司 filed Critical 軟體機器公司
Publication of TW201246066A publication Critical patent/TW201246066A/zh
Application granted granted Critical
Publication of TWI543074B publication Critical patent/TWI543074B/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Description

具有近端分支與遠端分支序列結構的客戶指令區塊至本機指令區塊 【交互參照】
本申請案係主張共同審查中且共同讓與之美國專利臨時申請案案號61/436,975,其專利名稱為「GUEST INSTRUCTION BLOCK WITH NEAR BRANCHING AND FAR BRANCHING SEQUENCE CONSTRUTION TO NATIVE INSTRUCTION BLOCK」,由Mohammad A.Abdallah於2011年1月27日所申請,其整體內容係併入本文。
本發明一般係關於數位電腦系統,尤其係關於轉譯包括一指令序列的指令之系統及方法。
許多種數位電腦系統運用程式碼轉換/轉譯或模擬,來實現軟體功能性。一般而言,轉譯與模擬都牽涉到試驗軟體指令的程式,以及由該等軟體指令直接執行功能與動作,即使該等指令並非該電腦系統所「本機(native)」。在轉譯的案例中,該等非本機指令轉譯成本機指令形式,設計用於在該電腦系統的硬體上執行。範例包括以工業標準x86應用程式操作的先前技術轉譯軟體及/或硬體,以致能應用程式在非x86或替代電腦架構之上執行。一般而言,轉譯處理運用大量處理器循環,如此,加諸了可觀的負擔。該負擔所加諸的效能損失會抵銷該轉譯處理所提供的任何好處。
此問題的一種解決嘗試牽涉到使用即時編譯。即時編譯(Just-in-time compilation,JIT),也就是動態轉譯,為改善電腦程式執行時間效能的方法。傳統上,電腦程式具有兩種執行時間轉換模式,就是解析模式或JIT(即時)編譯/轉譯模式。解析為一種解碼處理,牽涉逐一指令解碼,以比JIT編譯還要低的負擔,將程式碼從客製轉換為本機,但是會產生效率較低的轉換程式碼。此外,該解析喚起每一指令。JIT編譯器或轉譯器呈現與解析相反的方式。運用JIT轉換,通常具有比解析器較高的負擔,但是產生更好並且有較高執行效能的轉譯程式碼。在大多數模擬實施當中,第一次需要轉譯時,則用解析來降低負擔,在見過(執行過)程式碼許多次之後,則喚起JIT轉譯來建立更好的轉譯。
不過,該程式碼轉換處理仍舊呈現出一些問題。JIT轉譯處理本身會對處理器加諸顯著數量的負擔,這會造成應用程式啟動時嚴重延遲。此外,管理系統記憶體內已轉譯程式碼的儲存會導致多次往返於系統記憶體,並且包括記憶體映射與分配管理負擔,而加諸顯著的延遲損失。更進一步,改變應用程式內的執行區域牽涉到重新定位已轉換程式碼在系統記憶體以及程式碼快取內之位置,並且從頭開始該處理。該解析處理牽涉到的負擔低於JIT轉譯,但是其負擔會每個指令重複,如此仍舊相當顯著。所產生的程式碼並無法一體適用。
本發明的具體實施例實施一種演算法與一種設備,可致能客戶指令至本機指令轉譯處理的硬體型加速。
在一個具體實施例內,將本發明實施為一種用於轉譯處理器指令的方法。該方法包括:存取複數個包括多個客戶分支指令的客戶指令,該多個客戶分支指令包括一客戶遠端分支至少之一者,以及藉由使用該一客戶遠端分支至少之一者上的分支預測,從該複數個客戶指令建立一指令序列。該方法進一步包括從該指令序列組裝一客戶指令區塊。該客戶指令區塊轉譯成對應的本機轉換區塊,其中本機遠端分支的至少之一者對應至客戶遠端分支的至少之一者,並且其中該本機遠端分支的至少之一者包括一相對的客戶位址,用於該客戶遠端分支的至少之一者之相對分支路徑。在遇到錯失預測的情況時,利用存取該相對客戶位址可獲得正確的指令序列。
上述為總結,因此必須簡單扼要並且省略細節;因此精通技術人士將了解,該總結僅為例示,並不成為任何限制。從下列非限制的詳細說明當中,將了解如同申請專利範圍所單獨定義的本發明之其他態樣、發明特色以及優點。
雖然本發明已經搭配一個具體實施例來說明,但本發明並不用於限制到此處所公佈的特殊形式。相反地,吾人 想要如申請專利範圍內所定義將改變、修改以及同等配置合理包含在本發明的範疇內。
在下列詳細說明當中,許多特定細節,例如特定方法序列、結構、元件以及連接都已經公布。不過吾人要了解,這些與其他特定細節並不需要用於實現本發明的具體實施例。在其它環境中,已知的結構、元件或連接都已經省略或未詳細說明,以避免模糊本說明。
說明書內參考本發明的「一個具體實施例」或「具體實施例」用於表示,與該具體實施例有關連所說明的特定功能、結構或特性包含在本發明的至少一個具體實施例內。出現在整個說明書內許多地方的「在一個具體實施例內」一詞,並不一定全都參照到同一個具體實施例,也不是與其他具體實施例互斥的個別或替代具體實施例。再者,許多特色的說明可由某些具體實施例展示,而其他實施例沒有展示。同樣,許多需求的說明可為某些具體實施例所需,但是其他具體實施例不需要。
某些詳細說明部分都以可在電腦記憶體上執行的資料位元上操作之程序、步驟、邏輯區塊、處理以及其他符號表示之方式來呈現。這些說明表現為精通資料處理技術的人士用來將其工作內容傳達給其他精通此技術人士的最有效方式。此處的程序、電腦可執行步驟、邏輯區塊、處理等等一般係認為是導致所要結果的有條理的序列步驟或指令。這些步驟為所需的物理量之物理操縱。通常, 雖然非必要,不過這些量採用電腦可讀取儲存媒體並且可以在電腦系統內儲存、傳輸、結合、比較以及操縱的電或磁性信號形式。已證實有時(主要為了平常使用)將這些信號稱作位元、數值、元件、符號、字元、詞彙、數字等等係便利的。
不過,吾人應該瞭解,所有這些與類似詞彙都與適當的物理量相關連,並且僅為適用這些量的便利符號。除非特別說明,否則從下列討論中可瞭解,整個說明書的討論運用像是「處理」、「存取」、「寫入」、「儲存」或「複製」等詞表示電腦系統或類似電子計算裝置的動作以及處理,其操縱以及轉換代表電腦系統暫存器、記憶體和其他電腦可讀取媒體內物理(電子)量的資料成為類似代表電腦系統記憶體、暫存器或其他這種資訊儲存、傳輸或顯示裝置內物理量的其他資料。
本發明的具體實施例作用一般在於加速從客戶指令架構將客戶指令轉譯成本機指令架構的本機指令之處理,用於在本機處理器上執行。本發明的具體實施例運用硬體單元來實施轉換處理的硬體加速。該等客戶指令可來自許多不同的指令架構,範例架構包括Java或JavaScript、x86、MIPS、SPARC等等。這些客戶指令迅速轉換成本機指令,並且用管路傳送至該本機處理器硬體,進行快速執行。相較於傳統軟體控制式轉換處理,這提供更高的效能等級。
在一個具體實施例內,本發明實施一種彈性轉換處理,可用來當成許多不同指令架構的輸入。在這種具體實施例內,實施該處理器的前端,如此可由軟體控制,同時利用硬體加速轉換處理的優點,來提供更高的效能等級。這種實施在許多前端上展現出好處。不同的客戶架構可被處理並轉換,同時每一個都收到硬體加速的好處,享受更高的效能等級。該軟體控制式前端可提供大幅度彈性,讓應用程式在該處理器上執行。在客戶應用程式的該等客戶指令執行方面,該硬體加速可達到接近本機硬體的速度。在底下的描述當中,圖1至圖4顯示其中本發明具體實施例處置客戶指令序列,以及處置這些客戶指令序列內之近端分支和遠端分支之方式。圖5顯示根據本發明一個具體實施例的示範硬體加速轉換處理系統之概觀。
圖1顯示由本發明具體實施例操作的示範指令序列。如圖1內所示,由圖1的頂端到底部,指令序列100總共包括16個指令。如圖1內所見,序列100包括四個分支指令101-104。
本發明具體實施例的一個目標為將整個指令群組當成單一基元單元來處理,此基元單元稱為區塊。一個指令區塊可擴充超過圖1內所示的16個指令。在一個具體實施例內,一個區塊將包括足夠的指令來填滿固定大小(例如64位元組、128位元組、256位元組等),或直到遇到離開條件。在一個具體實施例內,結束一個指令區塊的離開條件為遇到遠端分支指令。如同具體實施例描述中所使 用,遠端分支就是目標位址位於目前指令區塊之外的分支指令。換言之,在已知的客戶指令區塊內,遠端分支具有位於某些其他區塊內或在該已知指令區塊之外某些其他指令序列內的目標。同樣地,近端分支就是目標位址位於目前指令區塊之內的分支指令。此外請注意,本機指令區塊可內含多個客戶遠端分支。底下的討論當中會進一步描述這些詞彙。
圖2顯示圖例一區塊型轉換處理的圖式,其中客戶指令區塊根據本發明的一個具體實施例轉換成本機轉換區塊。如圖2內所例示,複數個客戶指令區塊201已經轉換成對應的複數個本機轉換區塊202。
本發明的具體實施例的作用為將客戶指令區塊的指令轉換成本機轉換區塊的對應指令。每一區塊201都由客戶指令構成。如上述,這些客戶指令可來自許多不同的客戶指令架構(例如Java或JavaScript、x86、MIPS、SPARC等)。多個客戶指令區塊可轉換成一或多個對應的本機轉換區塊,此轉換逐一指令執行。
圖2也例示其中客戶指令區塊根據分支預測,組裝進入序列當中的方式。此屬性可讓本發明的具體實施例根據遠端分支的預測結果,組裝客戶指令的序列。根據遠端分支預測,從多個客戶指令區塊組裝客戶指令的序列,並且轉換成對應的本機轉換區塊。底下的圖3和圖4進一步描述這個態樣。
圖3顯示根據本發明一個具體實施例,例示將客戶指令區塊的每一指令轉換成本機轉換區塊的對應本機指令之方式圖式。如圖3內所例示,該等客戶指令區塊位於一客戶指令緩衝區301內。同樣地,該(等)本機轉換區塊位於一本機指令緩衝區302內。
圖3顯示本發明具體實施例的屬性,其中該等客戶分支指令的目標位址轉換成該等本機分支指令的目標位址。例如:每一個該等客戶指令分支都包括一偏移,指出該特定分支的目標位址。在圖3內顯示為該客戶偏移,或G_offset。隨著客戶指令轉換之後,此偏移通常不同,因為該等本機指令需要有不同的長度或序列,以便產生該等對應客戶指令的功能性。例如:相較於其對應的本機指令,該等客戶指令可具有不同長度。因此,該轉換處理利用計算該對應本機偏移來補償此差異。在圖3內顯示為該本機偏移,或N_offset。
請注意,具有位於客戶指令區塊內目標的該等分支,稱為近端分支,並不會被預測,因此不會改變該指令序列流。
圖4顯示根據本發明的一個具體實施例,例示其中使用本機轉換區塊的處置來處理遠端分支之方式圖式。如圖4內所例示,將該等客戶指令圖解為記憶體401內的一客 戶指令序列。同樣地,將該等本機指令圖解為記憶體402內的一本機指令序列。
在一個具體實施例內,客戶指令區塊與本機指令區塊這些每一個指令區塊都終止於一遠端分支(例如即使本機區塊內含多個客戶遠端分支)。如上述,一個區塊將包括足夠的指令來填滿固定大小(例如64位元組、128位元組、256位元組等),或直到遇到離開條件,例如遇到最後一個客戶遠端分支指令。若已經處理的客戶指令數量能夠組成一客戶指令區塊,並且尚未遇到一遠端分支,則插入一客戶遠端分支來終止該區塊。此遠端分支僅為至下一個後續區塊的跳板。這確保使用導向其他本機指令區塊或記憶體內其他客戶指令序列的分支,來終止指令區塊。此外,如圖4內所示,一區塊可包括位於其指令序列內,但不位於該區塊末端上的一客戶遠端分支。這顯示為客戶指令遠端分支411以及對應的本機指令客戶遠端分支412。
在圖4的具體實施例內,預測採用遠端分支411。如此該指令序列跳至遠端分支411的目標,就是客戶指令F。同樣地,在該等對應本機指令內,遠端分支412接著該本機指令F。並未預測該等近端分支。如此,它們並未以與遠端分支一樣的方式改變該指令序列。
如此,本發明的具體實施例產生轉換區塊的軌跡,其中每一區塊都包含一些遠端分支(例如3-4)。此執跡係根據客戶遠端分支預測。
在一個具體實施例內,在該本機轉換區塊內的該等遠端分支包括一客戶位址,就是該相對分支路徑的該相對位址。如上述,根據遠端分支的預測來產生指令序列。直到該對應本機轉換區塊執行之前,都不知道該預測的真實結果。如此,一旦偵測到錯誤預測,則試驗錯誤遠端分支來獲得該相對分支路徑的該相對客戶位址。然後從該相對客戶位址繼續該轉換處理,此時該位址為真實分支路徑。如此,本發明的具體實施例使用該相對分支路徑之該包括的相對客戶位址,以從遠端分支預測結果為錯誤的情況復原。因此,若遠端分支預測結果為錯誤,則該處理知道到哪裡找尋正確的客戶指令。同樣地,若該遠端分支預測結果為真,則忽略該相對客戶位址。請注意,若正確預測本機指令區塊內的遠端分支,則CLB內不需要用於目標區塊的進入點。不過,一旦發生預測失誤,則需要在CLB內插入目標區塊的新進入點。此功能以保留CLB容量的目標來執行。
圖5顯示根據本發明一個具體實施例,例示其中將客戶指令區塊及其對應本機轉換區塊儲存在一快取內的方式之示範硬體加速轉換系統500圖式。如圖5內所例示,使用轉換後備緩衝區506快取客戶與本機區塊之間的位址映射;如此透過至處理器508的低延遲可用性,存取最常遇到的本機轉換區塊。
圖5例示其中將經常遇到的本機轉換區塊保留在高速低延遲快取,就是轉換後備緩衝區506內之方式。圖5內描述的元件實施硬體加速轉換處理,提供更高的效能等級。
客戶擷取邏輯單元502作為硬體客戶指令擷取單元,其從系統記憶體501擷取客戶指令。已知應用程式的客戶指令位於系統記憶體501內。程式一開始時,硬體客戶擷取邏輯單元502開始擷取客戶指令進入客戶擷取緩衝區503。客戶擷取緩衝區503累積該等客戶指令,並且組成客戶指令區塊。使用轉換表504,將這些客戶指令區塊轉換成對應的本機轉換區塊。該等轉換的本機指令累積在本機轉換緩衝區505內,直到完成該本機轉換區塊。然後該本機轉換區塊傳輸至本機快取507,並且將該等映射儲存在轉換後備緩衝區506內。然後本機快取507用來將本機指令饋送至處理器508來執行。在一個具體實施例內,利用一客戶擷取邏輯狀態機器產生客戶擷取邏輯單元502所實施的功能性。
隨著此處理繼續進行,轉換後備緩衝區506被填滿客戶區塊至本機區塊的位址映射。轉換後備緩衝區506使用一或多種演算法(例如最近使用的等等),確定經常遇到的區塊映射都保留在緩衝區內,同時從緩衝區內排除不常遇到的區塊映射。在此方式中,熱門本機轉換區塊映射都儲存在轉換後備緩衝區506內。此外請注意,該本機區塊內預測準確的遠端客戶分支並不需要在該CLB內插入新的 映射,因為其目標區塊已經在單一映射本機區塊內縫合,如此保留小容量效率給該CLB結構。更進一步,在一個具體實施例內,該CLB建構成只儲存結尾客戶至本機位址映射。此態樣也保留該CLB的小容量效率。
該客戶擷取邏輯502查找轉換後備緩衝區506,決定來自客戶指令區塊的位址是否已經轉換至一本機轉換區塊。如上述,本發明的具體實施例提供轉換處理的硬體加速。因此,在從系統記憶體501中擷取一客戶位址用於新轉換之前,客戶擷取邏輯502將在轉換後備緩衝區506內查找先前存在的本機轉換區塊映射。
在一個具體實施例內,利用客戶位址範圍或利用個別客戶位址,索引該轉換後備緩衝區。該客戶位址範圍為已經轉換成本機轉換區塊的客戶指令區塊之位址範圍。透過該對應客戶指令區塊的對應客戶位址範圍,索引轉換後備緩衝區所儲存的該等本機轉換區塊映射。因此,該客戶擷取邏輯可比較一客戶位址與該客戶位址範圍或已轉換區塊的個別客戶位址,其映射保留在轉換後備緩衝區506內,以決定預先存在的本機轉換區塊內是否儲存在本機快取507內或圖6的程式碼快取內。若該預先存在的本機轉換區塊位於該本機快取或該程式碼快取內,則從這些快取直接將該等對應的本機轉換指令轉送至該處理器。
如此,熱門客戶指令區塊(例如經常執行的客戶指令區塊)具有其對應的熱門本機轉換區塊映射,保留在高速 低延遲轉換後備緩衝區506內。隨著區塊接觸,適當的替換策略確定熱門區塊映射留在該轉換後備緩衝區內。因此,客戶擷取邏輯502可迅速識別之前是否已經轉換過所要求的客戶位址,並且可將該之前轉換過的本機指令直接轉送至本機快取507,讓處理器508執行。這些態樣節省大量循環,因為前往系統記憶體要耗費40至50循環或更多循環。這些屬性(例如CLB、客戶分支序列預測、客戶與本機分支緩衝區、之前的本機快取)允許本發明具體實施例的硬體加速功能,達到讓客戶應用程式的應用效能為相比較本機應用程式的應用效能之80%至100%。
在一個具體實施例內,客戶擷取邏輯502持續預先擷取客戶指令以用於轉換,獨立於來自處理器508的客戶指令要求。本機轉換區塊可累積在系統記憶體501內的轉換緩衝區「程式碼快取」當中,用於較不常使用的區塊。轉換後備緩衝區506也保留最常使用的映射,因此若要求的客戶位址並未映射至該轉換後備緩衝區內的客戶位址,則該客戶擷取邏輯可檢查系統記憶體501,決定該客戶位址是否對應至其內儲存的本機轉換區塊。
在一個具體實施例內,轉換後備緩衝區506實施為一快取,並且運用快取一致性協定,與較高階快取以及系統記憶體501內所儲存的更大轉換緩衝區維持一致性。轉換後備緩衝區506內儲存的該等本機指令映射也寫回較高階快取以及系統記憶體501。寫回系統記憶體維持一致性。因此,可用快取管理協定來確定該熱門本機轉換區塊映射 儲存在轉換後備緩衝區506內,並且該冷門本機轉換映射區塊儲存在系統記憶體501內。因此,較大形式的轉換緩衝區506位於系統記憶體501內。
請注意,在一個具體實施例內,示範硬體加速轉換系統500可用來實施許多不同的虛擬儲存法則,例如:其中客戶指令區塊及其對應本機轉換區塊都儲存在一快取內的方式可用來支援虛擬儲存法則。同樣地,用來快取客戶與本機區塊之間位址映射的轉換後備緩衝區506可用來支援該虛擬儲存法則(例如虛擬至實際記憶體映射的管理)。
在一個具體實施例內,圖5架構實施虛擬指令集處理器/電腦,其使用一種彈性轉換處理,可用來當成許多不同指令架構的輸入。在這種虛擬指令集處理器內,實施該處理器的前端,如此可由軟體控制,同時利用硬體加速轉換處理的優點,來提供更高的效能等級。運用這種實施,不同的客戶架構可處理並轉換,同時每一個都收到硬體加速的好處,享受更高的效能等級。範例客戶架構包括Java或JavaScript、x86、MIPS、SPARC等等。在一個具體實施例內,「客戶架構」可為本機指令(例如來自本機應用程式/巨集操作),並且該轉換處理程序將本機指令最佳化(例如最佳化的本機指令/巨集操作)。該軟體控制式前端可提供大幅度彈性,讓應用程式在該處理器上執行。如上述,在客戶應用程式的該等客戶指令執行方面,該硬體加速可達到接近本機硬體的速度。
圖6顯示根據本發明一個具體實施例的硬體加速轉換系統600之更詳細範例。系統600執行方式大體上與上述系統500的方式一樣,不過系統600顯示額外細節,描述示範硬體加速處理的功能性。
系統記憶體601包括該資料結構,該資料結構包括客戶程式碼602、轉換後備緩衝區603、最佳化器程式碼604、轉換器程式碼605以及本機程式碼快取606。系統600也顯示一共享硬體快取607,其中客戶指令與本機指令可交錯和分享。客戶硬體快取610從共享的硬體快取607當中捕捉最常接觸的這些客戶指令。
客戶擷取邏輯620從客戶程式碼602當中預先擷取客戶指令。客戶擷取邏輯620與一TLB 609介接,其做為一轉換後備緩衝區,用於將虛擬客戶位址轉譯成對應的實體客戶位址。TLB 609可將命中直接轉送至客戶硬體快取610。由客戶擷取邏輯620所擷取的客戶指令都儲存在客戶擷取緩衝區611內。
轉換表612和613包括置換欄位以及控制欄位,並且當成多階層轉換表,用於將接收自客戶擷取緩衝區611的客戶指令轉譯成本機指令。
多工器614和615將轉換過的本機指令傳輸至本機轉換緩衝區616。本機轉換緩衝區616累積該轉換過的本機指令,組成本機轉換區塊。然後這些本機轉換區塊傳輸至 本機硬體快取600,並且將該等映射保留在轉換後備緩衝區630內。
轉換後備緩衝區630包括該等資料結構,用於已轉換區塊進入點位址631、本機位址632、已轉換位址範圍633、程式碼快取與轉換後備緩衝區管理位元634以及動態分支偏向位元635。客戶分支位址631以及本機位址632包括客戶位址範圍,指出哪個對應的本機轉換區塊位於已轉換位址範圍633內。快取管理協定以及替換策略確定該熱門本機轉換區塊映射位在轉換後備緩衝區630內,而該冷門本機轉換區塊映射位在系統記憶體601中的轉換後備緩衝區資料結構603內。
如同使用系統500,系統600尋求確定該熱門區塊映射位在高速低延遲轉換後備緩衝區630內。如此在擷取邏輯640或客戶擷取邏輯620查找來擷取客戶位址時,在一個具體實施例內,擷取邏輯640可先檢查該客戶位址,來決定該對應本機轉換區塊是否位在程式碼快取606內。這樣可決定所要求的客戶位址是否具有程式碼快取606內的對應本機轉換區塊。若要求的客戶位址不在緩衝區603或608或緩衝區630內,則從客戶程式碼602內擷取該客戶位址以及一些後續客戶指令,並且透過轉換表612和613實施該轉換處理。
圖7顯示根據本發明一個具體實施例,具有輔助軟體加速轉換管線的硬體加速轉換系統700範例。
元件711-716包括一軟體實施載入儲存路徑,在特殊高速記憶體760內形成。如圖7內所描述,客戶擷取緩衝區711、轉換表712-713以及本機轉換緩衝區716包括特殊高速記憶體760的已分配部分。在許多範圍中,特殊高速記憶體760做為非常低層級快速快取(例如L0快取)。
箭頭761例示該屬性,藉此透過與一指令擷取路徑相反的載入儲存路徑(例如來自該已擷取解碼邏輯)來加速該轉換。
在圖7的具體實施例內,高速記憶體760包括進行比較的特殊邏輯。因為如此,該轉換加速可在軟體內實施。例如在其他具體實施例內,儲存元件711-716的標準記憶體760由使用處理器執行管線的軟體所操縱,在此其將來自該等元件711-716的值載入一或多個SIMD暫存器並實施一比較指令,其在該SIMD暫存器內的該等欄位之間執行比較,並且依照需求,執行一遮罩操作以及一結果掃描操作。使用一般用途微處理器硬體,例如使用將一個與多個比較的比較指令,可實施載入儲存路徑。
請注意,由具有特殊屬性或位址範圍的指令存取記憶體760,例如在一個具體實施例內,該客戶擷取緩衝區具有一ID用於每一客戶指令進入。該ID依照每個客戶指令建立。此ID允許容易地從該客戶緩衝區映射至該本機轉換緩衝區。該ID允許可輕易地計算出該客戶偏移至該本 機偏移,而不管該等客戶指令相較於該等對應的本機指令之差異長度。這態樣圖例於上面圖3內。
在一個具體實施例內,由硬體使用一長度解碼器計算該擷取客戶指令的長度,來計算該ID。不過請注意,此功能性可在硬體或軟體內執行。
一旦已經指派ID,則可透過該ID存取該本機指令緩衝區。該ID允許很容易地從該客戶偏移至該本機偏移的偏移轉換。
圖8顯示根據本發明一個具體實施例之示範流程圖,例示其中CLB與程式碼快取以及儲存於記憶體內之客戶指令至本機指令映射共同作用的方式。
如上述,該CLB用於儲存客戶位址的映射,其具有儲存在該程式碼快取記憶體內的對應已轉換本機位址(例如該客戶至本機位址映射)。在一個具體實施例內,使用該客戶位址的一部分來索引該CLB。該客戶位址分割成一索引、一標籤以及一偏移(例如片段大小(chunk size))。此客戶位址包括一標籤,用於識別對應至該索引的該CLB進入內之匹配。若標籤上有命中,則對應的進入將儲存一指標器,指出要在程式碼快取記憶體806內何處找到該對應的已轉換本機指令片段(例如已轉換本機指令的對應區塊)。
請注意,「片段」這個詞在本說明書內用來代表該已轉換本機指令區塊的對應記憶體大小。例如:根據該已轉換本機指令區塊的不同大小,片段的大小可以不同。
有關於程式碼快取記憶體806,在一個具體實施例內,該程式碼快取分配在一組固定大小片段內(例如每一片段類型具有不同大小)。該程式碼快取可在系統記憶體內邏輯分割成集合與通道以及全部較低等級HW快取(例如本機硬體快取608、共享硬體快取607)。該CLB可使用該客戶位址來索引並標籤比較該程式碼快取片段的通道標籤。
圖8說明將客戶位址標籤儲存在2通道的CLB硬體快取804,這兩通道說明為通道x和通道y。請注意,在一個具體實施例內,使用該CLB結構的客戶位址至本機位址之映射可透過儲存該等指標器至該結構通道內該等本機程式碼片段來完成(例如從該客戶至本機位址映射)。每一通道都關聯於一標籤。該CLB使用客戶位址802(包括一標籤)來索引。在該CLB內有命中時,則返回對應至該標籤的指標器。此指標器用來索引該程式碼快取記憶體。這顯示於圖8內的程式行「native address of code chunk=Seg#+F(pt)」,表示該程式碼片段的本機位址為該指標器以及該區段編號的函數之事實。在本具體實施例內,該區段代表記憶體內一點的基座,其中該指標器範圍屬於虛擬映射(例如允許該指標器陣列映射至該實體記憶體內任何區域)。
另外在一個具體實施例內,可透過一第二方法索引該程式碼快取記憶體,如圖8內所示的程式行「Native Address of code chunk=seg#+Index (size of chunk)+way# (Chunk size)」。在此具體實施例內,該程式碼快取經過組織化,如此其通道結構與該CLB通道結構化匹配,而在CLB通道與該程式碼快取片段通道之間存在1:1映射。在特定CLB通道內有命中時,該程式碼快取的對應通道內該對應程式碼片段具有該本機程式碼。
仍舊參閱圖8,若該CLB的索引遺失,則可檢查記憶體的較高階層是否命中(例如L1快取、L2快取等等)。若這些較高快取層級內無命中,則檢查系統記憶體801內的位址。在一個具體實施例內,該客戶索引指向包括例如64片段的一進入。讀取每一該等64片段的標籤,並與該客戶標籤比對,來決定是否命中。此處理由圖8內虛線方框805所示。若與系統記憶體內該等標籤比對後無命中,則在記憶體的任何階層等級上都不存在轉換,並且必須轉換該客戶指令。
請注意,本發明的具體實施例管理記憶體的每一階層等級,其用快取方式儲存該客戶至本機指令映射。這分層來自於快取式記憶體(例如CLB硬體快取、本機快取、L1和L2快取等等)。不過,該CLB也包括「程式碼快取+CLB管理位元」,用來實施系統記憶體801內該客戶至本機指令映射的最近使用(least recently used,LRU)替換管理策 略。在一個具體實施例內,該CLB管理位元(例如LRU位元)受軟體管理。如此,使用記憶體的所有階層等級來儲存最近使用、最常遇到的客戶至本機指令映射。因此,這導致記憶體的所有階層等級同樣儲存最常遇到的已轉換本機指令。
圖8也顯示該CLB內儲存的動態分支偏向位元及/或分支歷史位元,這些動態分支位元用來追蹤組裝客戶指令序列當中所使用分支預測的行為。這些位元用來追蹤哪些分支預測最常預測正確,並且哪些分支預測最常預測錯誤。該CLB也儲存已轉換區塊範圍的資料,此資料可讓該處理將該程式碼快取記憶體內其中該對應客戶指令已經修改(例如在自我修改程式碼中)的已轉換區塊範圍變成無效。
圖9顯示根據本發明一個具體實施例,例示實體儲存堆疊快取實施以及該客戶位址至本機位址映射之示範流程圖。如圖9內所示,該快取可實施為一實體儲存堆疊901。
圖9具體實施例例示其中一程式碼快取可實施為一可變結構快取之方式。根據不同具體實施例的需求,該可變結構快取可為完全硬體實施與控制、完全軟體實施與控制或軟體初始並控制以及在硬體啟用之下的某些混合。
圖9具體實施例導引朝向將管理該客戶至本機位址映射的分配與替換之作業,以及該實際實體儲存中其對應轉譯的最佳化平衡。在本具體實施例內,透過使用結合該等指標器與可變大小片段之結構來達成。
使用多通道標籤陣列儲存不同大小實體儲存群組的指標器。每次需要分配特定儲存大小時(例如該儲存大小對應至一位址之處),則據此分配每一個對應至該大小的儲存區塊群組。這可讓本發明的具體實施例精確分配儲存量,來儲存指令的可變大小軌跡。圖9顯示群組如何成為不同大小。該圖顯示兩個示範群組大小:「群組大小4的替換候選」以及「群組大小2的替換候選」。該TAG陣列內(除了對應至該位址的標籤以外)儲存一指標器,將該位址映射至該實體儲存位址。該標籤可包括二或多個子標籤,例如:標籤結構902內前面3個標籤分別如圖所示包括子標籤A1 B1、A2 B2 C2 D2以及A3 B3。因此,標籤A2 B2 C2 D2包括群組大小4,而標籤A1 B1包括群組大小2。該群組大小遮罩也表示該群組的大小。
然後該實體儲存可如同堆疊來管理,如此每次分配新群組時,可放置在該實體儲存堆疊的最上面。輸入會由於覆寫其標籤而無效,藉此恢復已分配的空間。
圖9也顯示一擴充通道標籤結構903。在某些環境下,標籤結構902內的輸入將在擴充通道標籤結構903內有一對應的輸入。這取決於該輸入與該標籤結構是否具有 一擴充通道位元設定(例如設定為一)。例如:該擴充通道位元設定為一表示在該擴充通道標籤結構內有對應輸入。該擴充通道標籤結構允許該處理器在與該標準標籤結構不同的通道內,擴充參考的位置關係。如此,雖然標籤結構902用一種方式索引(例如索引(j)),不過該擴充通道標籤結構用不同方式索引(例如索引(k))。
在一般實施當中,該索引(j)的輸入數量遠多於該索引(k)的數量。這是因為在大多數限制之下,基本標籤結構902遠大於擴充通道標籤結構903,其中例如(j)可涵蓋1024個輸入(例如10位元),而(k)可涵蓋256個(例如8位元)。
這可讓本發明的具體實施例併入其他通道,用於非常熱門的(例如經常遇到的)匹配軌跡。例如:若在標籤結構902內未發現一熱門集合內的匹配,則利用設定一擴充通道位元,該擴充通道標籤結構可用來儲存其他通道給該熱門軌跡。請注意,此可變快取結構只在需要時使用儲存裝置,用於儲存在該堆疊上的已快取程式碼/資料,例如若在程式的特定階段期間都未存取任何快取集合(由該索引位元指示的輸入),則不會有儲存分配給該堆疊上該集合。相較於其中集合具有固定實體資料儲存用於每一與所有集合的典型快取,本發明提供一種高效率的有效儲存容量提升。
也可具有位元來指出一集合或群組集合是冷門(例如表示已經長時間沒有存取)。在此案例中,這些集合的該堆疊儲存看起來像是已分配堆疊儲存內的泡泡。在當時,可主張其分配指標器用於其他熱門集合。此處理為儲存改正處理,就在一片段已經在堆疊內分配之後,該片段所屬的整個集合都變成冷門。有助於此改正所需的機構與結構(圖9內並未顯示,以免擾亂或阻礙所顯示的態樣)有:每一集合(輸入索引)的一冷門集合指示器以及一改正處理,其中用於這些冷門集合通道的指標器重複用於其他熱門集合的通道。這容許改正這些堆疊儲存泡泡(片段)。不在改正模式時,新片段分配在該堆疊頂端上,該堆疊具有冷門集合時(例如已經長時間未存取該集合通道/片段),一改正動作允許必須在其他集合內分配的新片段重複使用該改正過的指標器,以及其在該堆疊內的相關片段儲存(屬於一冷門集合)。
請注意,相較於特殊快取記憶體而言,圖9具體實施例適合於在實施當中使用標準記憶體。此屬性係由於利用讀取該指標、讀取索引以及分配位址範圍,來管理該實體儲存堆疊之事實。這種實施當中並不需要特殊快取式電路結構。
請注意,在一個具體實施例內,圖9架構可用來實施不牽涉到轉換或程式碼變形的資料快取及快取法則。因此圖9架構可用來實施更多標準化快取(例如L2資料快取 等)。如此相較於傳統固定結構快取等等,可提供較大有效容量。
圖10顯示根據本發明一個具體實施例描述硬體加速轉換系統1000的額外示範細節之圖式。線條1001例示其中傳入客戶指令與複數個群組遮罩和標籤比較之方式,其目標在於快速識別客戶指令類型,並指派至一對應群組。該群組遮罩與標籤的作用在於匹配該客戶指令的子欄位,以便識別該客戶指令所屬的特定群組。該遮罩阻礙該客戶指令模式的不相關位元,以在相關位元上查找。例如表格1002這類表格以優先順序方式儲存該遮罩標籤配對。
利用往優先順序方式讀入該表格來匹配一模式,在本案例中由上往下說明。在此方式中,利用讀入該遮罩標籤儲存的優先順序方向來匹配一模式。以其優先順序試驗不同的遮罩,並且以其優先順序套用該模式匹配功能性。在發現命中時,從儲存該映射的對應表格當中(例如表格1003),讀取該模式的對應映射。第二階表格1004例示該階層方式,其中可用堆疊順序方式存取多重轉換表格,直到達成該客戶指令的完整轉換。如上述,該轉換表包括置換欄位以及控制欄位,並且當成多階層轉換表,用於將接收自客戶擷取緩衝區的客戶指令轉譯成本機指令。
在此方式中,該緩衝區內每一位元組串流都傳送至轉換表,其中依序偵測每一層轉換表中的位元欄位。偵測到該相關位元欄位時,該表格置換該欄位的本機等效項。
該表格也產生一控制欄位,幫助此階層以及下一階層表格(例如第二階表格1004)的置換處理。下一表格使用前一表格的控制欄位來識別下一個相關位元欄位,這要與該本機等效項置換。然後該第二階表格可產生控制欄位,幫助一第一階表格,以此類推。一旦已經用本機位元欄位置換所有客戶位元欄位,則該指令已經完全轉譯並且傳輸至該本機轉換緩衝區。然後將該本機轉換緩衝區寫入該程式碼快取,並且其客戶至本機位址映射記錄在該CLB內,如上述。
圖11A顯示由本發明具體實施例實施的示範模式匹配處理之圖式。如圖11A內所述,由該標籤、該模式以及該遮罩決定目的地。該模式解碼的功能包括執行一位元比較(例如位元XOR)、執行一位元AND(例如位元AND)以及後續檢查所有零位元(例如所有位元的NOR)。
圖11B顯示根據本發明一個具體實施例的SIMD暫存器型模式匹配處理之圖式1100。如圖式1100內所述,顯示四個SIMD暫存器1102-1105。這些暫存器實施上述該模式解碼處理的功能。傳入模式1101用於在每一標籤上執行一平行位元比較(例如位元XOR),並且該結果執行與該遮罩的一位元AND(例如位元AND)。該匹配指示器結果都儲存在其個別SIMD位置內,如所示。然後如所示執行掃描,並且該掃描第一次遇到該SIMD元件為真之處就是其中等式(Pi XOR Ti)AND Mi=0用於所有i位元為真 之元件,其中Pi為個別模式、Ti為個別標籤並且Mi為個別遮罩。
圖12顯示根據本發明一個具體實施例的統一暫存器檔案1201之圖式。如圖12內所示,統一的暫存器檔案1201包括2部分1202-1203以及一輸入選擇器1205。統一的暫存器檔案1201實施對於硬體狀態更新的架構推測之支援。
統一暫存器檔案1201啟用最佳影子暫存器以及承諾的暫存器狀態管理處理之實施。此處理支援硬體狀態更新的架構推測。在此處理之下,本發明的具體實施例可支援影子暫存器功能和承諾的暫存器功能,而不需要暫存器記憶體之間任何交叉複製。例如在一個具體實施例內,統一暫存器檔案1201的功能絕大部分由輸入選擇器1205提供。在圖12具體實施例內,每一暫存器檔案輸入都由2個暫存器配對R與R’構成,其分別來自於部分1和部分2。在任何已知時間上,從每一輸入讀取的該暫存器可為來自部分1或部分2的R或R’。根據輸入選擇器105針對每一輸入所儲存的x與y位元之值,該暫存器檔案的每一輸入都有四種不同組合,該x與y位元之值如下:00:R無效;R’已承諾(讀取要求R’已讀取)
01:R推測;R’已承諾(讀取要求R已讀取)
10:R已承諾;R’推測(讀取要求R’已讀取)
11:R已承諾;R’無效(讀取要求R已讀取)
下列為每一指令/事件的影響。在指令寫回時,00變成01並且11變成10。在指令承諾時,01變成11並且10變成00。在返回事件發生時,01變成00並且10變成11。
這些變更主要改變暫存器檔案輸入選擇器1205內儲存的狀態,並且根據所遇到的事件進行改變。請注意,承諾指令以及返回事件需要到達一承諾階段,以便引起該輸入選擇器1205內的該位元轉換。
在此方式中,可在該影子暫存器狀態下執行,而不破壞該承諾的暫存器狀態。該影子暫存器狀態準備承諾時,則更新該暫存器檔案輸入選擇器,如此從上述部分中讀取該有效結果。在此方式中,依照需求簡單更新該暫存器檔案輸入選擇器,在例外事件中可將推測執行結果返回至最近承諾點。同樣地,該承諾點可往前送,藉此利用簡單更新該暫存器檔案輸入選擇器,承諾該推測執行結果。暫存器記憶體之間不須任何交叉複製,就可提供此功能。
在此方式中,該統一暫存器檔案透過暫存器檔案輸入選擇器1205,可實施複數個推測暫用影子暫存器(speculative scratch shadow register,SSSR)以及複數個承諾暫存器(committed register,CR)。例如在一承諾上,該SSSR暫存器變成CR暫存器。在返回上,SSSR狀態返回至CR暫存器。
圖13顯示根據本發明一個具體實施例,支援推測架構狀態與瞬間架構狀態的統一影子暫存器檔案與管線架構1300之圖式。
圖13具體實施例說明包括架構1300的該等元件,其支援包括架構推測狀態的指令與結果,並且支援包括瞬間狀態的指令與結果。如本說明書所使用,一承諾架構狀態包括可變暫存器與可變記憶體,可由在處理器上執行的程式所存取(例如讀取與寫入)。相較之下,一推測架構狀態包括未承諾並且因此不可全面看見的暫存器及/或記憶體。
在一個具體實施例內,具有可由架構1300啟用的四種用途模型。第一用途模型包括硬體狀態更新的架構推測,如上述關於圖12的討論。
第二用途模型包括雙範圍用途。此用途模型適用於將2執行緒擷取至處理器,其中一個執行緒在推測狀態下執行,另一個執行緒在該非推測狀態下執行。在此用途模型中,兩範圍都擷取進入該機器,並且同時呈現在該機器內。
第三用途模型包括指令從一種形式到另一種形式的JIT(即時)轉譯或編譯。在此用途模型內,透過軟體,例如JIT,達成架構狀態的重新排列。該第三用途模型可適用於例如客戶至本機指令轉譯、虛擬機器至本機指令轉譯或重新映射/轉譯本機微型指令至更高最佳化的本機微型指令。
第四用途模型包括瞬間上下關係切換,而不需要在從該瞬間上下關係返回時儲存與復原先前的上下關係。此用途模型適用於因為一些因素而發生的上下關係切換,這種因素之一為例如透過例外處置上下關係的例外精確處置。底下用圖14-17的討論進一步說明該等第二、第三和第四用途模型。
請再次參閱圖13,架構1300包括一些元件,用於實施上述四種用途模型。統一影子暫存器檔案1301包括一第一部分,就是承諾暫存器檔案1302、一第二部分,就是影子暫存器檔案1303以及一第三部分,就是最新指示器陣列1304,同時包括推測除役記憶體緩衝區1342以及一最新指示器陣列1340。架構1300包括失序架構,因此架構1300進一步包括一重新排序緩衝區與除役視窗1332。重新排序與除役視窗1332進一步包括一機器除役指標器1331、一備妥位元陣列1334以及一每一指令最新指示器,例如指示器1333。
本說明書根據本發明的一個具體實施例,進一步詳細說明該第一用途模型,就是硬體狀態更新的架構推測。如上述,架構1300包括一失序架構。架構1300的硬體可承諾失序指令結果(例如失序載入、失序儲存以及失序暫存器更新)。架構1300以上面圖12的討論中所述方式,運用統一影子暫存器檔案來支援承諾暫存器與影子暫存器 間之推測執行。此外,架構1300運用推測載入儲存緩衝區以及推測除役記憶體緩衝區1342來支援推測執行。
架構1300將使用這些元件結合重新排序緩衝區和除役視窗1332,讓其狀態正確除役至承諾暫存器檔案1302以及可見記憶體1350,雖然該機器將這些已失序方式除役至該統一影子暫存器檔案以及該除役記憶體緩衝區。例如:該架構將使用統一影子暫存器檔案1301以及推測記憶體1342,根據是否發生例外來實施返回與承諾事件。此功能可讓該暫存器狀態以失序方式除役至統一影子暫存器檔案1301,並且可讓推測除役記憶體緩衝區1342以失序方式除役至可見記憶體1350。隨著推測執行進行以及失序指令執行進行,若未錯失預測的分支並且未發生例外,則機器除役指標器1331前進直到觸發承諾事件。該承諾事件導致該統一影子暫存器檔案利用將其承諾點往前來承諾其內容,並導致該推測除役記憶體緩衝區根據機器除役指標器1331承諾其內容至記憶體1350。
例如:考慮重新排序緩衝區和除役視窗1332內所顯示的指令1-7,在指令旁邊顯示「X」表示備妥位元陣列1334已經準備執行,而指令旁邊顯示「/」則表示尚未準備執行。因此,指令1、2、4和6可以不按順序處理。因此若發生例外,例如指令6分支錯失預測,則可返回接著指令6發生的指令。另外,若未發生例外,則可據此移動機器除役指標器1331來承諾所有指令1-7。
使用最新指示器陣列1341、最新指示器陣列1304以及最新指示器1333來允許不按順序執行。例如:即使在指令5之前透過指令2載入暫存器R4,則一旦備妥指令5,就會忽略來自指令2的載入。根據最新指示器,最新載入將覆寫先前的載入。
在該重新排序緩衝區和除役視窗1332內發生分支預測或例外之事件中,會觸發返回事件。如上述,在返回事件中,統一影子暫存器檔案1301將返回最後承諾點,並且將清除推測除役記憶體緩衝區1342。
圖14顯示根據本發明一個具體實施例,包括雙範疇用途的第二用途模式之圖式1400。如上述,此用途模型適用於將2執行緒擷取至處理器,其中一個執行緒在推測狀態下執行,另一個執行緒在該非推測狀態下執行。在此用途模型中,兩範圍都擷取進入該機器,並且同時呈現在該機器內。
如圖式1400內所示,2個範圍/軌跡1401和1402已經擷取至該機器內。在此範例中,範圍/軌跡1401為目前非推測範圍/軌跡。範圍/軌跡1402為全新推測範圍/軌跡。架構1300啟用一推測和暫用狀態,允許2個執行緒使用這些狀態來執行。一個執行緒(例如1401)在非推測範圍內執行,另一執行緒(例如1402)則使用該推測範圍。兩範圍都可擷取至該機器內,並且可同時呈現,其中每一範圍都分別設定不同的模式。該第一為非推測模式,另一則為推 測模式。如此該第一在CR/CM模式內執行,另一在SR/SM模式內執行。在該CR/CM模式內,讀取並寫入至承諾的暫存器,並且記憶體寫入至記憶體。在該SR/SM模式內,暫存器寫入至SSSR,並且暫存器從最新寫入中讀取,同時記憶體寫入該除役記憶體緩衝區(SMB)。
一個範例係目前範圍為依照順序(例如1401),下一個範圍為推測(例如1402)。這兩者都可在該機器內相依執行,因為該下一個範圍在該目前範圍之後擷取。例如在範圍1401內,在「承諾SSSR至CR」上,至此點的暫存器與記憶體都在CR模式內,而程式碼在CR/CM模式內執行。在範圍1402內,程式碼在SR和SM模式內執行,並且若發生例外則可返回。在此方式中,兩範圍同時在該機器內執行,但是每一都在不同的模式內執行,並且據此讀取和寫入暫存器。
圖15顯示根據本發明一個具體實施例,包括瞬間上下關係切換而不需要儲存與復原從該瞬間上下關係回傳的先前上下關係之第三用途模式圖式1500。如上述,此用途模型適用於因為一些因素而發生的上下關係切換,這種因素之一為例如透過例外處置上下關係的例外精確處置。
在發生第三用途模型當中,該機器執行已轉譯程式碼並且遇到一上下關係切換(例如已轉譯程式碼內的例外或若需要後續程式碼轉譯)。在目前的範圍內(例如例外之前),SSSR和SMB尚未承諾其推測狀態至該客戶架構狀 態。該目前狀態在SR/SM模式內運行。例外發生時,該機器切換至一例外處置器(例如轉換器),以便精確處理例外。插入返回,導致該暫存器狀態返回至CR並且清除該SMB。該轉換器程式碼將在SR/CM模式內運行。在轉換器程式碼的執行期間,該SMB將其內容除役至記憶體,並不等待一承諾事件。該等暫存器寫入SSSR,而不更新CR。接著,該轉換器完成並且切換回執行已轉換程式碼之前,則返回該SSSR(例如SSSR返回至CR)。在此處理期間,最後承諾的暫存器狀態位於CR內。
這顯示於圖式1500內,其中先前範圍/軌跡1501具有從SSSR進入CR的承諾。目前的範圍/軌跡1502為推測。暫存器和記憶體及其範圍都為推測,並且在SR/SM模式之下執行。在此範例中,例外發生在範圍1502內,並且需要在轉譯之前以原始順序重新執行該程式碼。在此點上,返回SSSR並且清除該SMB。然後執行JIT程式碼1503。該JIT程式碼將SSSR返回至範圍1501的末端,並清除該SMB。該JIT在SC/CM模式之下執行。該JIT完成時,該SSSR返回至CR,然後在CR/CM模式內以原始轉譯順序重新執行目前的範圍/軌跡1504。在此方式中,以正確的目前順序精確處置該例外。
圖16顯示根據本發明的一個具體實施例之圖式1600,圖例其中指令序列內的例外是因為需要後續轉譯的案例。如圖式1600內所示,以遠端跳躍至尚未轉譯的目的地來終止先前的範圍/軌跡1601。跳躍至遠端跳躍目的 地之前,SSSR承諾至CR。然後執行JIT程式碼1602,來轉譯該遠端跳躍目的地上的該等客戶指令(例如建立本機指令的新軌跡)。該JIT在SR/CM模式之下執行。在JIT執行的終止上,該暫存器狀態從SSSR返回至CR,並且執行由該JIT轉譯的新範圍/軌跡1603。該新範圍/軌跡從該SR/SM模式內先前範圍/軌跡1601的最後承諾點繼續執行。
圖17顯示根據本發明一個具體實施例,包括瞬間上下關係切換而不需要儲存與復原從該瞬間上下關係回到的先前上下關係之第四用途模式圖式1700。如上述,此用途模型適用於因為一些因素而發生的上下關係切換,這種因素之一為例如透過例外處置上下關係的處理輸入或輸出。
圖式1700顯示其中在CR/CM模式下執行的先前範圍/軌跡1701以呼叫函數F1為結尾之案例。至該點的暫存器狀態承諾從SSSR至CR。然後在SR/CM模式之下,以推測方式開始執行函數F1範圍/軌跡1702。然後函數F1以回到主要範圍/軌跡1703為結尾。在此點上,該暫存器狀態從SSSR返回至CR。然後主要範圍/軌跡1703恢復在CR/CM模式之下執行。
圖18顯示根據本發明一個具體實施例的示範微處理器管線1800之圖式。微處理器管線1800包括一硬體轉換加速器,實施該硬體加速轉換處理的功能,如上面所描 述。在圖18的具體實施例內,該硬體轉換加速器耦合至一擷取模組1801,然後接著一解碼模組1802、一分配模組1803、一派遣模組1804、一執行模組1805以及一除役模組1806。請注意,微處理器管線1800只是實施上述本發明具體實施例功能性的一個範例,精通技術人士應該了解,可實施包括上述解碼模組功能性的其他微處理器管線。
在上面的說明中,為了解釋而參考特定具體實施例做說明。不過,上面例示的討論並非用於專屬或限制本發明於所說明的形式中。許多修改與變化都可以上述為依據。具體實施例經過選擇與說明來最佳闡述本發明原理,並且以許多具體實施例讓其他精通此技術的人士對本系統有最佳瞭解,這些具體實施例都適合特定使用期待。
100‧‧‧指令序列
101-104‧‧‧分支指令
201‧‧‧客戶指令區塊
202‧‧‧本機轉換區塊
301‧‧‧客戶指令緩衝區
302‧‧‧本機指令緩衝區
401-402‧‧‧記憶體
411‧‧‧客戶指令遠端分支
412‧‧‧對應的本機指令客戶遠端分支
500‧‧‧硬體加速轉換系統
501‧‧‧系統記憶體
502‧‧‧客戶擷取邏輯單元
503‧‧‧客戶擷取緩衝區
504‧‧‧轉換表
505‧‧‧本機轉換緩衝區
506‧‧‧轉換後備緩衝區
507‧‧‧本機快取
508‧‧‧處理器
600‧‧‧硬體加速轉換系統
601‧‧‧系統記憶體
602‧‧‧客戶程式碼
603‧‧‧轉換後備緩衝區
604‧‧‧最佳化器程式碼
605‧‧‧轉換器程式碼
606‧‧‧本機程式碼快取
607‧‧‧共享的硬體快取
609‧‧‧TLB
610‧‧‧客戶硬體快取
611‧‧‧客戶擷取緩衝區
612-613‧‧‧轉換表
614-615‧‧‧多工器
616‧‧‧本機轉換緩衝區
620‧‧‧客戶擷取邏輯
630‧‧‧轉換後備緩衝區
631‧‧‧已轉換區塊輸入點位址
632‧‧‧本機位址
633‧‧‧已轉換位址範圍
634‧‧‧程式碼快取和轉換後備緩衝區管理位元
635‧‧‧動態分支偏向位元
640‧‧‧擷取邏輯
650‧‧‧處理器
700‧‧‧硬體加速轉換系統
711‧‧‧客戶擷取緩衝區
712-713‧‧‧轉換表
716‧‧‧本機轉換緩衝區
760‧‧‧特殊高速記憶體
761‧‧‧箭頭
801‧‧‧系統記憶體
802‧‧‧客戶位址
804‧‧‧CLB硬體快取
805‧‧‧虛線方框
806‧‧‧程式碼快取記憶體
901‧‧‧實體儲存堆疊
902‧‧‧標籤結構
903‧‧‧擴充通道標籤結構
1000‧‧‧硬體加速轉換系統
1001‧‧‧線條
1002-1003‧‧‧表格
1004‧‧‧第二階表格
1100‧‧‧圖式
1101‧‧‧傳入模式
1102-1105‧‧‧SIMD暫存器
1201‧‧‧統一暫存器檔案
1202-1203‧‧‧部分
1205‧‧‧輸入選擇器
1300‧‧‧統一影子暫存器檔案與管路架構
1301‧‧‧統一影子暫存器檔案
1302‧‧‧承諾暫存器檔案
1303‧‧‧影子暫存器檔案
1304‧‧‧最新指示器陣列
1341‧‧‧最新指示器陣列
1342‧‧‧推測除役記憶體緩衝區
1331‧‧‧機器除役指標器
1332‧‧‧重新排序緩衝區與除役視窗
1333‧‧‧每一指令最新指標器
1334‧‧‧備妥位元陣列
1350‧‧‧可見記憶體
1400‧‧‧圖式
1401-1402‧‧‧範圍/軌跡
1500‧‧‧圖式
1501-1502‧‧‧範圍/軌跡
1503‧‧‧JIT程式碼
1504‧‧‧範圍/軌跡
1600‧‧‧圖式
1601‧‧‧先前範圍/軌跡
1602‧‧‧JIT程式碼
1603‧‧‧新範圍/軌跡
1700‧‧‧圖式
1701‧‧‧先前範圍/軌跡
1702‧‧‧函數F1範圍/軌跡
1703‧‧‧主要範圍/軌跡
1800‧‧‧微處理器管線
1801‧‧‧擷取模組
1802‧‧‧解碼模組
1803‧‧‧分配模組
1804‧‧‧派遣模組
1805‧‧‧執行模組
1806‧‧‧除役模組
在附圖的圖式中,本發明藉由範例進行說明並且不受其限制,以及其中相似的參考編號指示相似的元件。
圖1顯示由本發明具體實施例操作的示範指令序列。
圖2顯示圖例一區塊型轉譯處理的圖式,其中客戶指令區塊根據本發明的一個具體實施例轉換成本機轉換區塊。
圖3顯示根據本發明一個具體實施例,例示將客戶指令區塊的每一指令轉換成本機轉換區塊的對應本機指令之方式圖式。
圖4顯示根據本發明的一個具體實施例,例示其中使用本機轉換區塊的處置來處理遠端分支之方式圖式。
圖5顯示根據本發明一個具體實施例,例示其中將客戶指令區塊及其對應本機轉換區塊儲存在一快取內的方式之示範硬體加速轉換系統圖式。
圖6顯示根據本發明一個具體實施例的硬體加速轉換系統之更詳細範例。
圖7顯示根據本發明一個具體實施例,具有輔助軟體加速轉換管線的硬體加速轉換系統範例。
圖8顯示根據本發明一個具體實施例之示範流程圖,例示其中CLB與程式碼快取以及儲存於記憶體內之客戶指令至本機指令映射共同作用的方式。
圖9顯示根據本發明一個具體實施例,例示實體儲存堆疊程式碼快取實施以及該客戶指令至本機指令映射之示範流程圖。
圖10顯示根據本發明一個具體實施例描述硬體加速轉換系統的額外示範細節之圖式。
圖11A顯示由本發明具體實施例實施的示範模式匹配處理之圖式。
圖11B顯示根據本發明一個具體實施例的SIMD暫存器型模式匹配處理之圖式。
圖12顯示根據本發明一個具體實施例的統一暫存器檔案之圖式。
圖13顯示根據本發明一個具體實施例,支援推測架構狀態與瞬間架構狀態的統一影子暫存器檔案與管線架構1300之圖式。
圖14顯示根據本發明一個具體實施例,包括雙範疇用途的第二用途模式之圖式。
圖15顯示根據本發明一個具體實施例,包括瞬間上下關係切換而不需要儲存與復原從該瞬間上下關係返回的先前上下關係之第三用途模式圖式。
圖16顯示根據本發明的一個具體實施例,圖例其中指令序列內的例外是因為需要後續程式碼轉譯的案例之圖式。
圖17顯示根據本發明一個具體實施例,包括瞬間上下關係切換而不需要儲存與復原從該瞬間上下關係返回的先前上下關係之第四用途模式圖式。
圖18顯示根據本發明一個具體實施例的示範微處理器管線之圖式。
301‧‧‧客戶指令緩衝區
302‧‧‧本機指令緩衝區

Claims (21)

  1. 一種用於轉譯指令給一處理器之方法,包括:存取複數個包括多個客戶分支指令的客戶指令,該多個客戶分支指令包括客戶遠端分支的至少之一者;藉由使用該客戶遠端分支至少之一者上的分支預測,從該複數個客戶指令建立一指令序列;從該指令序列組裝一客戶指令區塊;將該客戶指令區塊轉譯成一對應的本機轉換區塊,其中一本機遠端分支的至少之一者對應至該客戶遠端分支的至少之一者,並且其中該本機遠端分支的至少之一者包括一相對的客戶位址,用於該客戶遠端分支的至少之一者之相對分支路徑;以及在遇到一錯失預測的情況時,利用存取該相對客戶位址獲得一正確的指令序列。
  2. 如申請專利範圍第1項之方法,其中針對已經正確預測的本機遠端分支,忽略該相對客戶位址。
  3. 如申請專利範圍第1項之方法,其中並不預測該客戶近端分支。
  4. 如申請專利範圍第1項之方法,其中該客戶指令區塊包括足夠填滿一固定大小的指令。
  5. 如申請專利範圍第1項之方法,其中若已經處理的客戶指令數量能夠組成該客戶指令區塊,並且尚未遇到一客戶遠端分 支,則插入一終止的客戶遠端分支來終止該客戶指令區塊。
  6. 如申請專利範圍第5項之方法,其中該終止的客戶遠端分支包括一跳躍至一後續客戶指令區塊。
  7. 如申請專利範圍第6項之方法,其中對應至該終止的客戶遠端分支之一終止的本機遠端分支並不包括一相對客戶位址。
  8. 一種用於轉譯指令給一處理器之系統,包括:一客戶擷取邏輯元件,用於存取複數個包括多個客戶分支指令的客戶指令,該多個客戶分支指令包括客戶遠端分支的至少之一者,其中該客戶擷取邏輯元件藉由使用該客戶遠端分支的至少之一者上之分支預測,從該複數個客戶指令中建立一指令序列;一客戶擷取緩衝區,用於從該指令序列組裝一客戶指令區塊;複數個轉換表,用於將該客戶指令區塊轉譯成一對應的本機轉換區塊,其中一本機遠端分支的至少之一者對應至該客戶遠端分支的至少之一者,並且其中該本機遠端分支的至少之一者包括一相對的客戶位址,用於該客戶遠端分支的至少之一者之相對分支路徑;以及其中在遇到一錯失預測時,利用存取該相對客戶位址可獲得正確的指令序列。
  9. 如申請專利範圍第8項之系統,其中針對已經正確預測的本機遠端分支,忽略該相對客戶位址。
  10. 如申請專利範圍第8項之系統,其中並不預測該客戶近端分支。
  11. 如申請專利範圍第8項之系統,其中該客戶指令區塊包括足夠填滿一固定大小的指令。
  12. 如申請專利範圍第8項之系統,其中若已經處理的客戶指令數量能夠組成該客戶指令區塊,並且尚未遇到一客戶遠端分支,則插入一終止的客戶遠端分支來終止該客戶指令區塊。
  13. 如申請專利範圍第12項之系統,其中該終止的客戶遠端分支包括一跳躍至一後續客戶指令區塊。
  14. 如申請專利範圍第13項之系統,其中對應至該終止的客戶遠端分支之一終止的本機遠端分支並不包括一相對客戶位址。
  15. 一種實施轉譯指令方法的微處理器,該微處理器包括:一微處理器管線;一硬體加速器模組,其耦合至該微處理器管線,其中該硬體加速器模組另包括:一客戶擷取邏輯元件,用於存取複數個包括多個客戶分支指令的客戶指令,該多個客戶分支指令包括客戶近端分支的至少之一者以及客戶遠端分支的至少之一者,其中該客戶擷取邏輯元件藉由使用該客戶遠端分支的至少之一者上之分支預 測,從該複數個客戶指令中建立一指令序列;一客戶擷取緩衝區,用於從該指令序列組裝一客戶指令區塊;複數個轉換表,用於將該客戶指令區塊轉譯成一對應的本機轉換區塊,其中一本機遠端分支的至少之一者對應至該客戶遠端分支的至少之一者,並且其中該本機遠端分支的至少之一者包括一相對的客戶位址,用於該客戶遠端分支的至少之一者之相對分支路徑;以及其中在遇到一錯失預測時,利用存取該相對客戶位址可獲得正確的指令序列。
  16. 如申請專利範圍第15項之微處理器,其中針對已經正確預測的本機遠端分支,忽略該相對客戶位址。
  17. 如申請專利範圍第15項之微處理器,其中並不預測該客戶近端分支。
  18. 如申請專利範圍第15項之微處理器,其中該客戶指令區塊包括足夠填滿一固定大小的指令。
  19. 如申請專利範圍第15項之微處理器,其中若已經處理的客戶指令數量能夠組成該客戶指令區塊,並且尚未遇到一客戶遠端分支,則插入一終止的客戶遠端分支來終止該客戶指令區塊。
  20. 如申請專利範圍第19項之微處理器,其中該終止的客戶 遠端分支包括一跳躍至一後續客戶指令區塊,並且其中對應至該終止的客戶遠端分支之一終止的本機遠端分支並不包括一相對客戶位址。
  21. 一種實施轉譯指令方法的微處理器,該微處理器包括:一微處理器管線;一軟體型載入儲存加速器,其耦合至該微處理器管線,其中該載入儲存加速器模組另包括:一客戶擷取邏輯,用於存取複數個包括多個客戶分支指令的客戶指令,該多個客戶分支指令包括客戶近端分支的至少之一者以及客戶遠端分支的至少之一者,其中該客戶擷取邏輯元件藉由使用該客戶遠端分支的至少之一者上之分支預測,從該複數個客戶指令中建立一指令序列;一客戶擷取記憶體,用於從該指令序列組裝一客戶指令區塊;複數個轉換表,用於將該客戶指令區塊轉譯成一對應的本機轉換區塊,其中一本機遠端分支的至少之一者對應至該客戶遠端分支的至少之一者,並且其中該本機遠端分支的至少之一者包括一相對的客戶位址,用於該客戶遠端分支的至少之一者之相對分支路徑;以及其中在遇到一錯失預測時,利用存取該相對客戶位址可獲得正確的指令序列。
TW101102831A 2011-01-27 2012-01-30 具有近端分支與遠端分支序列結構的客戶指令區塊至本機指令區塊 TWI543074B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US201161436975P 2011-01-27 2011-01-27

Publications (2)

Publication Number Publication Date
TW201246066A TW201246066A (en) 2012-11-16
TWI543074B true TWI543074B (zh) 2016-07-21

Family

ID=46578388

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101102831A TWI543074B (zh) 2011-01-27 2012-01-30 具有近端分支與遠端分支序列結構的客戶指令區塊至本機指令區塊

Country Status (3)

Country Link
US (2) US9542187B2 (zh)
TW (1) TWI543074B (zh)
WO (1) WO2012103245A2 (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
KR101612594B1 (ko) 2011-01-27 2016-04-14 소프트 머신즈, 인크. 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
EP2783280B1 (en) 2011-11-22 2019-09-11 Intel Corporation An accelerated code optimizer for a multiengine microprocessor
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
CN109358948B (zh) 2013-03-15 2022-03-25 英特尔公司 用于支持推测的访客返回地址栈仿真的方法和装置
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US11281481B2 (en) * 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US9733909B2 (en) 2014-07-25 2017-08-15 Intel Corporation System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address
WO2016014866A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. System for an instruction set agnostic runtime architecture
US10353680B2 (en) * 2014-07-25 2019-07-16 Intel Corporation System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence
US20160026484A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. System converter that executes a just in time optimizer for executing code from a guest image
US20160026486A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. An allocation and issue stage for reordering a microinstruction sequence into an optimized microinstruction sequence to implement an instruction set agnostic runtime architecture
US11422943B2 (en) 2015-03-27 2022-08-23 Intel Corporation Efficient address translation
US10191745B2 (en) * 2017-03-31 2019-01-29 Intel Corporation Optimized call-return and binary translation
US10713166B2 (en) 2017-05-05 2020-07-14 Samsung Electronics Co., Ltd. Efficient early ordering mechanism
CN107341130B (zh) 2017-06-29 2020-11-17 上海兆芯集成电路有限公司 具有近端数据处理引擎的芯片组
US10877788B2 (en) * 2019-03-12 2020-12-29 Intel Corporation Processing vectorized guest physical address translation instructions

Family Cites Families (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5053952A (en) 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
WO1994027214A1 (en) 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding sequences of guest instructions for a host computer
JPH07271672A (ja) 1994-03-30 1995-10-20 Toshiba Corp マルチウェイセットアソシアティブキャッシュシステム
JPH10509819A (ja) 1994-10-14 1998-09-22 シリコン グラフィックス インク. インターリーブされるキャッシュメモリアレイのインデッキシングとマルチプレキシング
US5649136A (en) 1995-02-14 1997-07-15 Hal Computer Systems, Inc. Processor structure and method for maintaining and restoring precise state at any instruction boundary
US5742802A (en) 1996-02-16 1998-04-21 International Business Machines Corporation Method and system for efficiently mapping guest instruction in an emulation assist unit
US5784638A (en) 1996-02-22 1998-07-21 International Business Machines Corporation Computer system supporting control transfers between two architectures
US5892934A (en) 1996-04-02 1999-04-06 Advanced Micro Devices, Inc. Microprocessor configured to detect a branch to a DSP routine and to direct a DSP to execute said routine
US5893121A (en) 1997-04-23 1999-04-06 Sun Microsystems, Inc. System and method for swapping blocks of tagged stack entries between a tagged stack cache and an untagged main memory storage
US6142682A (en) 1997-06-13 2000-11-07 Telefonaktiebolaget Lm Ericsson Simulation of computer processor
US5956495A (en) 1997-09-22 1999-09-21 International Business Machines Corporation Method and system for processing branch instructions during emulation in a data processing system
US5995743A (en) * 1997-09-22 1999-11-30 International Business Machines Corporation Method and system for interrupt handling during emulation in a data processing system
US5870575A (en) 1997-09-22 1999-02-09 International Business Machines Corporation Indirect unconditional branches in data processing system emulation mode
US5953520A (en) * 1997-09-22 1999-09-14 International Business Machines Corporation Address translation buffer for data processing system emulation mode
US6202127B1 (en) 1997-11-26 2001-03-13 Compaq Computer Corporation Apparatus for spatial and temporal sampling in a computer memory system
US6138225A (en) 1997-12-24 2000-10-24 Intel Corporation Address translation system having first and second translation look aside buffers
JP3246438B2 (ja) 1998-04-01 2002-01-15 日本電気株式会社 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体
JPH11296381A (ja) 1998-04-08 1999-10-29 Matsushita Electric Ind Co Ltd 仮想マシン及びコンパイラ
US6205545B1 (en) 1998-04-30 2001-03-20 Hewlett-Packard Company Method and apparatus for using static branch predictions hints with dynamically translated code traces to improve performance
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US6460114B1 (en) 1999-07-29 2002-10-01 Micron Technology, Inc. Storing a flushed cache line in a memory buffer of a controller
US6928641B1 (en) 1999-10-08 2005-08-09 Texas Instruments Incorporated Method and system for far branch and call instructions
US7418580B1 (en) 1999-12-02 2008-08-26 International Business Machines Corporation Dynamic object-level code transaction for improved performance of a computer
JP3556556B2 (ja) 2000-02-08 2004-08-18 株式会社東芝 命令コード変換装置及び情報処理システム
US20020066081A1 (en) 2000-02-09 2002-05-30 Evelyn Duesterwald Speculative caching scheme for fast emulation through statically predicted execution traces in a caching dynamic translator
US20010037492A1 (en) 2000-03-16 2001-11-01 Holzmann Gerard J. Method and apparatus for automatically extracting verification models
JP2001273138A (ja) 2000-03-24 2001-10-05 Fujitsu Ltd プログラム変換装置および方法
US20020100022A1 (en) 2000-05-08 2002-07-25 Holzmann Gerard J. Method and apparatus for automatic verification of properties of a concurrent software system
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US7107437B1 (en) 2000-06-30 2006-09-12 Intel Corporation Branch target buffer (BTB) including a speculative BTB (SBTB) and an architectural BTB (ABTB)
US6711672B1 (en) 2000-09-22 2004-03-23 Vmware, Inc. Method and system for implementing subroutine calls and returns in binary translation sub-systems of computers
GB2367651B (en) 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
JP2002215387A (ja) 2001-01-22 2002-08-02 Mitsubishi Electric Corp 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置
US7487330B2 (en) 2001-05-02 2009-02-03 International Business Machines Corporations Method and apparatus for transferring control in a computer system with dynamic compilation capability
US7165169B2 (en) 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US6826681B2 (en) 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US6898699B2 (en) 2001-12-21 2005-05-24 Intel Corporation Return address stack including speculative return address buffer with back pointers
US7577944B2 (en) 2002-03-18 2009-08-18 Hewlett-Packard Development Company, L.P. Unbundling, translation and rebundling of instruction bundles in an instruction stream
JP3831396B2 (ja) 2002-08-30 2006-10-11 株式会社ルネサステクノロジ データ処理装置及びicカード
US20040128658A1 (en) 2002-12-27 2004-07-01 Guei-Yuan Lueh Exception handling with stack trace cache
US7203932B1 (en) 2002-12-30 2007-04-10 Transmeta Corporation Method and system for using idiom recognition during a software translation process
US6810473B2 (en) 2003-01-06 2004-10-26 Sun Microsystems, Inc. Replacement algorithm for a replicated fully associative translation look-aside buffer
US7191291B2 (en) 2003-01-16 2007-03-13 Ip-First, Llc Microprocessor with variable latency stack cache
JP3896087B2 (ja) 2003-01-28 2007-03-22 松下電器産業株式会社 コンパイラ装置およびコンパイル方法
US7069413B1 (en) 2003-01-29 2006-06-27 Vmware, Inc. Method and system for performing virtual to physical address translations in a virtual machine monitor
US7278030B1 (en) 2003-03-03 2007-10-02 Vmware, Inc. Virtualization system for computers having multiple protection mechanisms
US7111145B1 (en) 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
GB0316531D0 (en) 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for performing native binding
US7290253B1 (en) * 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
US7590982B1 (en) 2003-12-17 2009-09-15 Vmware, Inc. System and method for virtualizing processor and interrupt priorities
US7237067B2 (en) 2004-04-22 2007-06-26 Hewlett-Packard Development Company, L.P. Managing a multi-way associative cache
US8443171B2 (en) 2004-07-30 2013-05-14 Hewlett-Packard Development Company, L.P. Run-time updating of prediction hint instructions
JP4520790B2 (ja) 2004-07-30 2010-08-11 富士通株式会社 情報処理装置およびソフトウェアプリフェッチ制御方法
US7571090B2 (en) 2004-09-30 2009-08-04 Intel Corporation Emulating a host architecture in guest firmware
US7428626B2 (en) 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US8370819B2 (en) 2005-03-25 2013-02-05 Microsoft Corporation Mechanism to store information describing a virtual machine in a virtual disk image
US7383374B2 (en) 2005-03-31 2008-06-03 Intel Corporation Method and apparatus for managing virtual addresses
US7734895B1 (en) * 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
TWI306215B (en) 2005-04-29 2009-02-11 Ind Tech Res Inst Method and corresponding apparatus for compiling high-level languages into specific processor architectures
US20070006178A1 (en) 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
US7703088B2 (en) 2005-09-30 2010-04-20 Intel Corporation Compressing “warm” code in a dynamic binary translation environment
US9003421B2 (en) 2005-11-28 2015-04-07 Intel Corporation Acceleration threads on idle OS-visible thread execution units
TWI287801B (en) 2006-01-13 2007-10-01 Optimum Care Int Tech Inc Memory module having address transforming function and method for controlling memory
WO2007115425A1 (en) 2006-03-30 2007-10-18 Intel Corporation Method and apparatus for supporting heterogeneous virtualization
JP5010164B2 (ja) 2006-03-31 2012-08-29 株式会社日立製作所 サーバ装置及び仮想計算機の制御プログラム
US7568189B2 (en) * 2006-05-03 2009-07-28 Sony Computer Entertainment Inc. Code translation and pipeline optimization
US7752417B2 (en) 2006-06-05 2010-07-06 Oracle America, Inc. Dynamic selection of memory virtualization techniques
US7478228B2 (en) 2006-08-31 2009-01-13 Qualcomm Incorporated Apparatus for generating return address predictions for implicit and explicit subroutine calls
US7617493B2 (en) 2007-01-23 2009-11-10 International Business Machines Corporation Defining memory indifferent trace handles
US8688920B2 (en) 2007-05-14 2014-04-01 International Business Machines Corporation Computing system with guest code support of transactional memory
JP2008299795A (ja) 2007-06-04 2008-12-11 Nec Electronics Corp 分岐予測制御装置及びその方法
US8205194B2 (en) 2007-06-29 2012-06-19 Microsoft Corporation Updating offline virtual machines or VM images
KR101498673B1 (ko) 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
JP2009087028A (ja) 2007-09-28 2009-04-23 Toshiba Corp メモリシステム及びメモリの読出し方法並びにプログラム
US7844954B2 (en) * 2007-11-06 2010-11-30 Vmware, Inc. Using branch instruction counts to facilitate replay of virtual machine instruction execution
JP5091655B2 (ja) 2007-12-21 2012-12-05 株式会社日立製作所 計算機仮想化装置、そのプログラム、及びその方法
US8041922B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8151085B2 (en) 2008-01-17 2012-04-03 International Business Machines Corporation Method for address translation in virtual machines
US8307360B2 (en) 2008-01-22 2012-11-06 Advanced Micro Devices, Inc. Caching binary translations for virtual machine guest
US8819647B2 (en) 2008-01-25 2014-08-26 International Business Machines Corporation Performance improvements for nested virtual machines
US8832682B2 (en) 2008-03-28 2014-09-09 Vmware, Inc. Trace collection for a virtual machine
US8127107B2 (en) 2008-05-30 2012-02-28 Vmware, Inc. Virtualization with merged guest page table and shadow page directory
US8275971B2 (en) 2008-08-27 2012-09-25 International Business Machines Corporation Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities
US8473930B2 (en) 2008-11-05 2013-06-25 Oracle America, Inc. Handling signals and exceptions in a dynamic translation environment
CN101751345B (zh) 2008-12-10 2012-04-11 国际商业机器公司 在主机中运行客户机的程序的模拟器和模拟方法
US8959277B2 (en) 2008-12-12 2015-02-17 Oracle America, Inc. Facilitating gated stores without data bypass
US8078854B2 (en) * 2008-12-12 2011-12-13 Oracle America, Inc. Using register rename maps to facilitate precise exception semantics
US8561040B2 (en) 2009-03-10 2013-10-15 Oracle America, Inc. One-pass compilation of virtual instructions
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8140758B2 (en) 2009-04-24 2012-03-20 International Business Machines Corporation Data reorganization in non-uniform cache access caches
US8799879B2 (en) 2009-06-30 2014-08-05 Oracle America, Inc. Method and apparatus for protecting translated code in a virtual machine
US8386745B2 (en) 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
US9158566B2 (en) 2009-09-18 2015-10-13 International Business Machines Corporation Page mapped spatially aware emulation of computer instruction set
US8428930B2 (en) 2009-09-18 2013-04-23 International Business Machines Corporation Page mapped spatially aware emulation of a computer instruction set
US8301434B2 (en) * 2009-09-18 2012-10-30 International Buisness Machines Corporation Host cell spatially aware emulation of a guest wild branch
US8612731B2 (en) 2009-11-06 2013-12-17 International Business Machines Corporation Branch target buffer for emulation environments
US8364461B2 (en) 2009-11-09 2013-01-29 International Business Machines Corporation Reusing invalidated traces in a system emulator
US8769241B2 (en) 2009-12-04 2014-07-01 Marvell World Trade Ltd. Virtualization of non-volatile memory and hard disk drive as a single logical drive
KR101247259B1 (ko) 2009-12-17 2013-04-01 한국전자통신연구원 가상화 장치 및 그 처리 방법
US8438334B2 (en) 2009-12-22 2013-05-07 International Business Machines Corporation Hybrid storage subsystem with mixed placement of file contents
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
JP2011198091A (ja) 2010-03-19 2011-10-06 Toshiba Corp 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
KR101612594B1 (ko) 2011-01-27 2016-04-14 소프트 머신즈, 인크. 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US9354886B2 (en) 2011-11-28 2016-05-31 Apple Inc. Maintaining the integrity of an execution return address stack
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US10656945B2 (en) 2012-06-15 2020-05-19 International Business Machines Corporation Next instruction access intent instruction for indicating usage of a storage operand by one or more instructions subsequent to a next sequential instruction
US8819648B2 (en) 2012-07-20 2014-08-26 International Business Machines Corporation Control flow management for execution of dynamically translated non-native code in a virtual hosting environment
US20140258696A1 (en) 2013-03-05 2014-09-11 Qualcomm Incorporated Strided target address predictor (stap) for indirect branches
CN109358948B (zh) 2013-03-15 2022-03-25 英特尔公司 用于支持推测的访客返回地址栈仿真的方法和装置
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor

Also Published As

Publication number Publication date
WO2012103245A3 (en) 2012-10-26
TW201246066A (en) 2012-11-16
US20120198209A1 (en) 2012-08-02
US9542187B2 (en) 2017-01-10
WO2012103245A2 (en) 2012-08-02
US9921842B2 (en) 2018-03-20
US20160283239A1 (en) 2016-09-29

Similar Documents

Publication Publication Date Title
TWI543074B (zh) 具有近端分支與遠端分支序列結構的客戶指令區塊至本機指令區塊
TWI529616B (zh) 轉譯指令之方法、系統、與處理器
TWI578227B (zh) 用於轉譯客戶指令至本機指令的多階轉換表的方法、系統、及微處理器
US11467839B2 (en) Unified register file for supporting speculative architectural states
US10241795B2 (en) Guest to native block address mappings and management of native code storage
US9753856B2 (en) Variable caching structure for managing physical storage
KR20170026621A (ko) 명령어 집합의 애그노스틱 런타임 아키텍처를 구현하도록 마이크로명령어 시퀀스를 최적화된 마이크로명령어 시퀀스로 재정렬하는 할당 및 발행 스테이지