TWI578227B - 用於轉譯客戶指令至本機指令的多階轉換表的方法、系統、及微處理器 - Google Patents
用於轉譯客戶指令至本機指令的多階轉換表的方法、系統、及微處理器 Download PDFInfo
- Publication number
- TWI578227B TWI578227B TW101102832A TW101102832A TWI578227B TW I578227 B TWI578227 B TW I578227B TW 101102832 A TW101102832 A TW 101102832A TW 101102832 A TW101102832 A TW 101102832A TW I578227 B TWI578227 B TW I578227B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- client
- order
- conversion table
- translation
- Prior art date
Links
- 238000006243 chemical reaction Methods 0.000 title claims description 153
- 238000000034 method Methods 0.000 title claims description 58
- 230000015654 memory Effects 0.000 claims description 85
- 239000000872 buffer Substances 0.000 claims description 82
- 238000013519 translation Methods 0.000 claims description 79
- 230000008569 process Effects 0.000 claims description 42
- 238000012545 processing Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 14
- 238000001514 detection method Methods 0.000 claims 1
- 230000014616 translation Effects 0.000 description 54
- 238000010586 diagram Methods 0.000 description 34
- 238000013507 mapping Methods 0.000 description 26
- 230000001133 acceleration Effects 0.000 description 20
- 238000007726 management method Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 8
- 238000012937 correction Methods 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- NJPPVKZQTLUDBO-UHFFFAOYSA-N novaluron Chemical group C1=C(Cl)C(OC(F)(F)C(OC(F)(F)F)F)=CC=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F NJPPVKZQTLUDBO-UHFFFAOYSA-N 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction 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)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本申請案係主張共同審查中且共同讓與之美國專利臨時申請案案號61/436,973,其專利名稱為「MULTILEVEL CONVERSION TABLE CACHE FOR TRANSLATING GUEST INSTRUCTIONS TO NATIVE INSTRUCTIONS」,由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顯示根據本發明一個具體實施例的示範微處理器管線之圖式。
1000‧‧‧硬體加速轉換系統
1001‧‧‧線條
1002-1003‧‧‧表格
1004‧‧‧第二階表格
Claims (21)
- 一種用於轉譯指令給一處理器之方法,包括:存取一客戶指令,其中該客戶指令包含來自一客戶指令架構的一指令;使用一第一階轉換表,執行該客戶指令的第一階轉譯;該第一階轉譯處理完成時,輸出一結果本機指令,其中該結果本機指令包含來自一本機指令架構的一指令;該第一階轉譯並未完成時,使用一第二階轉換表來執行該客戶指令的一第二階轉譯,其中該第二階轉譯根據來自該第一階轉換表的一部分轉譯,進一步處理該客戶指令;以及該第二階轉譯處理完成時,輸出該結果本機指令。
- 如申請專利範圍第1項之方法,其中該第一階轉換表與該第二階轉換表都實施為一高速低延遲快取,其維持與系統記憶體內所儲存之一轉換表緩衝區一致。
- 如申請專利範圍第1項之方法,其中該第一階轉換表與該第二階轉換表包括置換欄位,用於將客戶指令置換成本機指令,以及包括控制欄位,用於控制該第一階轉換表與一第二階轉換表。
- 如申請專利範圍第1項之方法,其中該第一階轉換表用於在該客戶指令上執行第一階轉譯。
- 如申請專利範圍第4項之方法,其中該第一階轉換表包括一雜湊,用於辨識複數個客戶指令。
- 如申請專利範圍第5項之方法,其中該複數個客戶指令包括至少一前置碼客戶指令以及與該前置碼客戶指令相關聯的複數個運算碼。
- 一種用於轉譯指令給一處理器之系統,包括:存取一客戶指令,其中該客戶指令包含來自一客戶指令架構的一指令;使用一第一階轉換表,執行該客戶指令的第一階轉譯;該第一階轉譯處理完成時,輸出一結果本機指令,其中該結果本機指令包含來自一本機指令架構的一指令;該第一階轉譯並未完成時,使用一第二階轉換表來執行該客戶指令的一第二階轉譯,其中該第二階轉譯根據來自該第一階轉換表的一部分轉譯,進一步處理該客戶指令;以及該第二階轉譯處理完成時,輸出該結果本機指令。
- 如申請專利範圍第7項之系統,其中該第一階轉換表與該第二階轉換表都實施為一高速低延遲快取,其維持與系統記憶體內所儲存之一轉換表緩衝區一致。
- 如申請專利範圍第7項之系統,其中該第一階轉換表與該第二階轉換表包括置換欄位,用於將客戶指令置換成本機指令,以及包括控制欄位,用於控制該第一階轉換表與一第二階轉換表。
- 如申請專利範圍第7項之系統,其中該第一階轉換表用於 在該客戶指令上執行第一階轉譯。
- 如申請專利範圍第10項之系統,其中該第一階轉換表包括一雜湊,用於辨識複數個客戶指令。
- 如申請專利範圍第11項之系統,其中該複數個客戶指令包括至少一前置碼客戶指令以及與該前置碼客戶指令相關聯的複數個運算碼。
- 一種實施轉譯指令方法的微處理器,該微處理器包括:一微處理器管線;一硬體加速器模組,其耦合至該微處理器管線,其中該硬體加速器模組另包括:複數個轉換表,用於將客戶指令轉譯成對應的本機指令,其中該等轉換表的作用為:存取一客戶指令,其中該客戶指令包含來自一客戶指令架構的一指令;使用一第一階轉換表,執行該客戶指令的第一階轉譯;該第一階轉譯處理完成時,輸出一結果本機指令,其中該結果本機指令包含來自一本機指令架構的一指令;該第一階轉譯並未完成時,使用一第二階轉換表來執行該客戶指令的一第二階轉譯,其中該第二階轉譯根據來自該第一階轉換表的一部分轉譯,進一步處理該客戶指令;以及該第二階轉譯處理完成時,輸出該結果本機指令。
- 如申請專利範圍第13項之微處理器,其中該第一階轉換 表與該第二階轉換表都實施為一高速低延遲快取,其維持與系統記憶體內所儲存之一轉換表緩衝區一致。
- 如申請專利範圍第13項之微處理器,其中該第一階轉換表與該第二階轉換表包括置換欄位,用於將客戶指令置換成本機指令,以及包括控制欄位,用於控制該第一階轉換表與一第二階轉換表。
- 如申請專利範圍第13項之微處理器,其中該第一階轉換表用於在該客戶指令上執行第一階轉譯。
- 如申請專利範圍第16項之微處理器,其中該第一階轉換表包括一雜湊,用於辨識複數個客戶指令。
- 如申請專利範圍第17項之微處理器,其中該複數個客戶指令包括至少一前置碼客戶指令以及與該前置碼客戶指令相關聯的複數個運算碼。
- 如申請專利範圍第13項之微處理器,其中該第一階轉換表與該第二階轉換表包括複數個遮罩以及複數個標籤,其中該等標籤決定模式匹配並且該等遮罩隱藏模式的非相關位元。
- 如申請專利範圍第19項之微處理器,其中該複數個遮罩以及該複數個標籤為軟體載入來啟用設置的解碼。
- 如申請專利範圍第19項之微處理器,其中該複數個遮罩 阻礙(obscure)一輸入模式的非相關位元,來幫助模式匹配偵測。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161436973P | 2011-01-27 | 2011-01-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201246064A TW201246064A (en) | 2012-11-16 |
TWI578227B true TWI578227B (zh) | 2017-04-11 |
Family
ID=46581386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101102832A TWI578227B (zh) | 2011-01-27 | 2012-01-30 | 用於轉譯客戶指令至本機指令的多階轉換表的方法、系統、及微處理器 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9207960B2 (zh) |
TW (1) | TWI578227B (zh) |
WO (1) | WO2012103253A2 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101612594B1 (ko) | 2011-01-27 | 2016-04-14 | 소프트 머신즈, 인크. | 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑 |
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 |
WO2012103367A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
WO2012103373A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Variable caching structure for managing physical storage |
WO2012103253A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
US9021454B2 (en) * | 2012-11-08 | 2015-04-28 | Unisys Corpoation | Operand and limits optimization for binary translation system |
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 |
CN105122206B (zh) | 2013-03-15 | 2018-11-09 | 英特尔公司 | 用于支持推测的访客返回地址栈仿真的方法和装置 |
US9122494B2 (en) * | 2013-05-15 | 2015-09-01 | National Tsing Hua University | Method and apparatus for code size reduction |
EP3172665A4 (en) * | 2014-07-25 | 2018-03-28 | INTEL Corporation | Using a conversion look aside buffer 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 |
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 |
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 |
US11281481B2 (en) * | 2014-07-25 | 2022-03-22 | Intel Corporation | Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture |
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 |
JP6678185B2 (ja) * | 2015-04-10 | 2020-04-08 | グーグル エルエルシー | ネイティブ・クライアントへのバイナリ変換 |
GB2544315B (en) * | 2015-11-12 | 2018-02-14 | Advanced Risc Mach Ltd | An apparatus and method for controlling use of bounded pointers |
US10191745B2 (en) * | 2017-03-31 | 2019-01-29 | Intel Corporation | Optimized call-return and binary translation |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI287801B (en) * | 2006-01-13 | 2007-10-01 | Optimum Care Int Tech Inc | Memory module having address transforming function and method for controlling memory |
Family Cites Families (126)
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 | マルチウェイセットアソシアティブキャッシュシステム |
WO1996012229A1 (en) | 1994-10-14 | 1996-04-25 | Silicon Graphics, Inc. | Indexing and multiplexing of interleaved cache memory arrays |
US5644742A (en) | 1995-02-14 | 1997-07-01 | Hal Computer Systems, Inc. | Processor structure and method for a time-out checkpoint |
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 |
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 |
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 |
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 |
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 |
US20020147969A1 (en) | 1998-10-21 | 2002-10-10 | Richard A. Lethin | 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 |
US6332215B1 (en) * | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
US7225436B1 (en) | 1998-12-08 | 2007-05-29 | Nazomi Communications Inc. | Java hardware accelerator using microcode engine |
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 |
US20060282821A1 (en) | 2005-06-10 | 2006-12-14 | Renno Erik K | Efficient subprogram return in microprocessors |
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 |
US8099730B2 (en) * | 2006-03-30 | 2012-01-17 | Intel Corporation | Heterogeneous virtualization of host and guest OS having different register sizes using translation layer to extract device port numbers for host OS system memory addresses |
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 |
US8190664B2 (en) * | 2007-04-26 | 2012-05-29 | International Business Machines Corporation | Employing a mask field of an instruction to encode a sign of a result of the instruction |
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 | 株式会社日立製作所 | 計算機仮想化装置、そのプログラム、及びその方法 |
CN101470661B (zh) | 2007-12-28 | 2012-03-14 | 鸿富锦精密工业(深圳)有限公司 | 计算机程序除错系统及方法 |
US8041922B2 (en) * | 2008-01-11 | 2011-10-18 | International Business Machines Corporation | Enhanced dynamic address translation with load real address function |
US20090182985A1 (en) * | 2008-01-11 | 2009-07-16 | International Business Machines Corporation | Move Facility and Instructions Therefore |
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 |
US9009727B2 (en) | 2008-05-30 | 2015-04-14 | Vmware, Inc. | Virtualization with in-place translation |
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 |
US8301434B2 (en) | 2009-09-18 | 2012-10-30 | International Buisness Machines Corporation | Host cell spatially aware emulation of a guest wild branch |
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 |
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 |
JP5984118B2 (ja) | 2009-12-04 | 2016-09-06 | マーベル ワールド トレード リミテッド | 格納デバイスの仮想化 |
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 | 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム |
US8650337B2 (en) * | 2010-06-23 | 2014-02-11 | International Business Machines Corporation | Runtime determination of translation formats for adapter functions |
US8572635B2 (en) * | 2010-06-23 | 2013-10-29 | International Business Machines Corporation | Converting a message signaled interruption into an I/O adapter event notification |
WO2012103253A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
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 |
WO2012103373A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Variable caching structure for managing physical storage |
KR101612594B1 (ko) | 2011-01-27 | 2016-04-14 | 소프트 머신즈, 인크. | 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑 |
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 |
US9495183B2 (en) | 2011-05-16 | 2016-11-15 | Microsoft Technology Licensing, Llc | Instruction set emulation for guest operating systems |
US8645633B2 (en) * | 2011-05-17 | 2014-02-04 | International Business Machines Corporation | Facilitating data coherency using in-memory tag bits and faulting stores |
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 |
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 |
CN105122206B (zh) | 2013-03-15 | 2018-11-09 | 英特尔公司 | 用于支持推测的访客返回地址栈仿真的方法和装置 |
-
2012
- 2012-01-25 WO PCT/US2012/022598 patent/WO2012103253A2/en active Application Filing
- 2012-01-27 US US13/359,961 patent/US9207960B2/en active Active
- 2012-01-30 TW TW101102832A patent/TWI578227B/zh active
-
2015
- 2015-12-07 US US14/961,464 patent/US10185567B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI287801B (en) * | 2006-01-13 | 2007-10-01 | Optimum Care Int Tech Inc | Memory module having address transforming function and method for controlling memory |
Non-Patent Citations (1)
Title |
---|
Leland L. Beck, System Software, 3rd edition, 1997. Kip R. Irvine, Assembly Language for Intel-based Computers, 5th edition, 2007. * |
Also Published As
Publication number | Publication date |
---|---|
US9207960B2 (en) | 2015-12-08 |
US20130024619A1 (en) | 2013-01-24 |
US20170161074A1 (en) | 2017-06-08 |
WO2012103253A3 (en) | 2012-10-18 |
WO2012103253A2 (en) | 2012-08-02 |
US10185567B2 (en) | 2019-01-22 |
TW201246064A (en) | 2012-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI529616B (zh) | 轉譯指令之方法、系統、與處理器 | |
TWI543074B (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 |