TW201245976A - Hardware acceleration components for translating guest instructions to native instructions - Google Patents

Hardware acceleration components for translating guest instructions to native instructions Download PDF

Info

Publication number
TW201245976A
TW201245976A TW101102835A TW101102835A TW201245976A TW 201245976 A TW201245976 A TW 201245976A TW 101102835 A TW101102835 A TW 101102835A TW 101102835 A TW101102835 A TW 101102835A TW 201245976 A TW201245976 A TW 201245976A
Authority
TW
Taiwan
Prior art keywords
conversion
buffer
instruction
block
client
Prior art date
Application number
TW101102835A
Other languages
English (en)
Other versions
TWI512498B (zh
Inventor
Mohammad Abdallah
Original Assignee
Soft Machines Inc
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 Soft Machines Inc filed Critical Soft Machines Inc
Publication of TW201245976A publication Critical patent/TW201245976A/zh
Application granted granted Critical
Publication of TWI512498B publication Critical patent/TWI512498B/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/30098Register arrangements
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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, 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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, 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Description

201245976 籲 六、發明說明: 【相關申請案參照】 本申請案主張2011年1月27日由Mohammad A. Abdallah 申請之同在申請中及共同讓與的美國臨時專利申請案第 61/436,966號的權利,其標題為「用於將客戶指令轉譯為本機指 令之硬體加速組件」,及其全文以引用的方式併入本文中。 【發明所屬之技術領域】 本發明一般有關數位電腦系統,尤其有關一種轉譯包含指 令序列(instruction sequence)之指令的系統及方法。 【先前技術】 許多類型的數位電腦系統利用程式碼(code)變換 (transformation)/轉譯(translation)或仿擬(emulation),實施軟體功 能性。一般而言,即使指令不在電腦系統的「本機」内,轉譯 及仿擬均涉及檢查軟體指令的程式及履行軟體指令指定的功能 及動作。在轉譯的情況中,非本機指令被轉譯為本機指令的形 式,本機指令係設計可在電腦系統的硬體上執行。實例包括先 前技術的轉譯軟體及/或硬體,其以工業標準x86應用程式操 作’使這些應用程式可在非x86或替代的電腦架構上執行。一 般而言,轉譯程序(translation process)利用大量的處理器週期 (processor cycle),因而造成不小的額外負擔。額外負擔所造成 的效能損失可實質上抹滅轉譯程序所帶來的任何好處。 一個試圖解決此問題的做法涉及使用及時編譯GusMndme compilation)。及時(JIT)編譯又稱為動態轉譯,是一種提高電腦 201245976 程式之運行時間效能(runtime perf〇rmance)的方法。傳統上電 腦程式具有兩個運行時間變換模式:解譯模式㈨terpretati〇n mode)或ΤΓΓ(及時)編譯/轉譯模式。解譯是一種解碼程序 (decodingp_SS)’其涉及一個指令一個指令地解碼,以低於町 編譯的額外負擔將客戶碼變換為本機碼,但其產生表現較差的 變換碼。另外’解譯係以每一個指令來調用(i嶋㈣。jit編譯 器或轉譯器代表錢不同的解譯途徑。就;IT轉換而言,盆通 常具有崎譯器高_外貞擔,但其產生更騎佳化的轉譯碼 (translated^ =:在看:要,將轉譯作為解譯來進行以減少 =最佳式碼許多次之後’調請轉譯以建 然而 身就對#秘1起許多問題。】IT編譯程序本 =:===:這可在敌動應用程式 成多趟往返行樹的儲存造 mapping)及分配管理額外負 L舌。己憶體映射(mem〇ry 〇atenCy penalty) ^ Γ ^ ^ ^ ^ ^ ^ 體及程式·財㈣安及在系統記憶 解譯程序涉及的額外負擔比:轉‘後^開始起始程序。 的程式碼也無法最佳化。 生私式碼,所產生 【發明内容】 令轉 本發明之具體實施例實施一種實現客戶指令至本機指 201245976 譯程序之硬體為基加速(hardware based acceleration)的演算法 (algorithm)及裝置。 在一具體實施例中,本發明實施為硬體為基轉譯加速器 (hardware based translation accelerator)。該硬體為基轉譯加速器 包括.一客戶提取邏輯組件(guest fetch logic component),用於 存取複數個客戶指令;一客戶提取緩衝器(guest fetch buffer),其 耗接至该客戶提取邏輯組件及一分支預測組件(branch prediction component) ’用於將該複數個客戶指令組合成 (assemble) —客戶指令區塊(guest instructj〇n;及複數個轉 換表(conversion table)’其耦接至該客戶提取緩衝器,用於將該 客戶指令區塊轉譯為對應的本機轉換區塊(native conversion block)。 該硬體為基轉譯加速器另外包括:一本機快取(native cache) ’其耦接至該等轉換表,用於儲存該對應的本機轉換區 塊’及一轉換後備緩衝器(conversi〇n 1〇〇k aside buffcr,CLB), 其減至該本機快取,用於儲存該客戶指令區塊至對應的本機 轉換區塊的-映射,其巾在收騎對客戶指令的後續請求時, =引該轉換後備緩衝器以決定是否發生—命中_,其中該映射 心示4客彳彳θ令在《本機快取巾具有—對應的轉換本機指令 (converted native instmetimi)。回應於該命中,該轉換後備緩衝 器傳送(forward)轉譯的本機指令以便執行。 „、上述為發明内容,按必要性含有簡單、-般性的說明,因 而省略心、·、®!卩’所以熟習本技術者應明自,發_容僅為說 201245976 明性的 性詳細說請 方面、發明特徵、及優 點 義的其他 【實施方式】 隨 修 法順序、:構實施:式」中’提出許多特定細節,諸如特定方 丨、及連接。但應明白,要_本發明之且 體貫_,未必要利用這些及其他特定 已省略或未以特定細節說明熟知的結構、元件、;==务 不必要地混淆本說明。 及運接以免 說明書中提及「-具體實施例」是指結合該且體 邱古關曰中處出現的聽「在—具體實施例中」未必全 =^目_顯實_,也不是與其他具財蝴互斥的獨 未例。此外,說明可由某些具體實施例展現而 2具體貫施例展現的各種特徵。同樣地,說明可為某此 具體貫_但料他具财關之必雜件的必要條件。— 以下「實施方式」的某些部分就電腦記憶體内資料位元 乍的過程、步驟、邏輯區塊、處理、及其他符號表示法提出討 201245976 論 以 2些說明及表示法係熟習資料處理技術者所使用的方法, 的方式將其運作本f傳達給其他熟習本技術者。過 i所行步驟、邏輯區塊、程序等在此且—般被設想為導 理量之:理相—致的步驟或指令序列。此等步驟是需要物 〜的步驟。通常’但非-定’這些物理量採取電 體之電信號或磁信號的形式,且能夠在電腦系統 元、值、元 方便=是(主^吉合、比較及以其他方式操控。已證實有時很 +、p要為了—般的使用)將這些信號稱為位 件、符號、字元(character)、條件項(term)、數字等 理量明自’所有這些術語及她術語係為了和相應物 =月=顯不同於以下論述,應明白,在本發明所;:另面外 用诸如處理(Pr〇咖_」或「存取㈣⑽丨哟」或「 置:動以術語的論述,是指電腦系統或類似電 與記憶體及其他電腦可讀媒體中 ^資訊儲存器、傳送或顯示裝置中同樣表示為物 指實施例藉由大幅加速將客戶指令架構之客戶 勃:-二2㉟指令架構之本機指令的程序以在本機處理器上 程ί的。本發明之具體實施例利用硬體單元實施轉換 例_構^丨客戶指令可以來自若干不同的指令架構。實 朱構匕括 Java 或 JavaScript、x86、MIPS、SPARC 等 〇·士让 -=E* 201245976 體以便快轉令’並以管線送到本機處理器硬 多的效能+_統陳馳_触序提供高出許 若干例中’本發明實施靈活轉換程序,其可使用 構作為輸人。在此具體實施财,將處理器的 二❹:、可為軟體所控制’同時利用硬體加速轉換處理, ΐίΐί"1的效能等級。此實施方案在多方面達到好處。可處 f及轉ί不1⑽客戶架構’且各個客戶架構得到硬體加速的好 以子有更南的魏等級^軟體控倾端可提供應用程式在 〜理器上執行雜AS活度。加速可達成以接近本機硬體 速度執行客戶應用程式的客戶指令。在以下說明中,圖丨至圖4 顯示本發明m實關處置客戶指令序列及處置在這些客戶 指令序列内的較近分支(near branch)及較遠分支(far branch)的方 式。圖5 _示根才康本發明之一具體實施例之例示性硬體加速轉 換處理系統的概觀。 圖1顯示本發明之一具體實施例所操作的例示性指令序 列。如圖1所描繪’指令序列100包含16個指令,從圖1的頂 部開始至底部。如圖1中可見,序列100包括四個分支指令 101-104 。 本發明具體實施例之一目的在於將整個群組的指令處理為 單一基元單元(single atomic unit)。此基元單元稱為「區塊」。指 令區塊可充分延伸超過圖1顯示的16個指令。在一具體實施例 中,區塊將包括足夠的指令以填滿固定大小(如,64位元組、128 201245976 位元組、256位元組專)’或直到遇到出口條件(exjt c〇ncjiti〇n)。 在一具體貫施例中,結束指令區塊的出口條件是遇到較遠分支 指令。如本文具體實施例的說明中所使用,較遠分支是指其目 標位址駐存在目前指令區塊之外的分支指令。換言之,在給定 的客戶指令區塊内,較遠分支具有駐存在某個其他區塊中或在 給定指令區塊外之某個其他指令序列中的目標。同樣地,較近 分支是指其目標位址駐存在目前指令區塊内的分支指令。另 外,應注意,本機指令區塊可含有多個客戶較遠分支。在以下 討論中將進一步說明這些術語。 圖2顯示根據本發明之一具體實施例描繪基於區塊的轉換 程序的示意圖,其中將客戶指令區塊轉換為本機轉換區塊。如 圖2中圖解,顯示將複數個客戶指令區塊2〇1轉換為對應的複 數個本機轉換區塊202。 本發明之具體貫施例藉由將客戶指令區塊的指令轉換為本 機轉換區塊之對應的指令而發揮功能。各個區塊2〇1由客戶指 令組成。如上述,這些客戶指令可來自若干不同的客戶指令架 構(如,Java 或 JavaScript、x86、MIPS、SPARC 等)。多個客戶 指令區塊可轉換為一或多個對應的本機轉換區塊。此轉換基於 每個指令而發生。 圖2亦圖解基於分支預測將客戶指令區塊組合成序列的方 式。此屬性(attribute)使本發明之具體實施例能夠基於較遠分支 的預測結果組合客戶指令序列。基於較遠分支預測,將客戶指 令序列攸乡個客戶齡區塊組合纽轉換為對應的本機轉換區 201245976 塊。此做法將在町圖3及圖4巾進—步說明。 圖3顯示根據本發明之一具體實施例圖解將客 :各個指令轉換為本機轉換區塊之對應 意圖。如圖3 _,客戶指令區塊駐存在客, 内°同樣地’本_換輯駐存在柳旨令_H 3G2内°。 圖3顯示本發明之具體實施例的屬性,其中 =的目標位址轉換為本機分支指令的目標健。例如,客H曰 二ΪΪ包Γ別特定分支之目標位址的偏移量(翻)。“ ==因為本機指令產生對應客戶指令之功能性^ :ίίϊί列而不同。例如,客戶指令的長度可與其對應之本 Ϊ 度不同。因此,轉換程序藉由計算對應的本機偏移 里不貝在異。這在圖3中顯示為本機偏移量或N—〇ffset。 應注意,由於未預測在客戶指令區塊内具有目標的分支(稱 為「較近分支」),因而未改變指令序列流。 圖4顯不根據本發明之一具體實施例圖解以處置本機轉換 ^塊來處理較遠分支之方式的示意圖。如圖4中_,將客戶 指令描繪為記憶體中的客戶指令序列401。同樣地,將本機指令 描繪為記憶體中的本機指令序列402。 在一具體實施例中,每一個指令區塊(客戶指令區塊及本機 指令區塊二者)以較遠分支結束(如,即使本機區塊可能含有多個 201245976 客戶較遠分支)。如上述,區塊將包括足夠的指令以填滿固定大 小(如’ 64位元組、128位元組、256位元組等),或直到遇到出 口條件,諸如最後一個客戶較遠分支指令。如果已經處理若干 客戶指令以組合客戶指令區塊且尚未遇到較遠分支,則插入客 戶較遠分支以結束區塊。此較遠分支只要一躍(jump)即可跳到下 一個後續區塊(subsequent block)。這確保指令區塊以引向記憶體 中另一本機指令區塊或另一客戶指令序列的分支結束》另外, 如圖4中顯示’區塊可包括在其指令序列内不駐存在區塊末端 處的客戶較遠分支。這以客戶指令較遠分支411及對應的本機 指令客戶較遠分支412來顯示。 在圖4具體實施例中,預測取用較遠分支411。因此,指令 序列跳至較遠分支4Π的目標,即客戶指令F。同樣地,在對應 的本機指令中,接續在較遠分支412之後的是本機指令F。未預 測較近分支。因此,這些較近分支未以較遠分支的相同方式改 變指令序列。 以此方式,本發明之具體實施例產生轉換區塊的執跡 (trace) ’其中各健塊包含若干(如,3_侧較遠分支。此軌跡係 基於客戶較遠分支預測。 在-具體實施例巾,在本機轉換區塊_較遠分支包括用 」目對分支路徑之相反位址的客戶位址。如上述,基於較遠分 測產生指令序列。直到執行對應的本機轉換區塊,才會 結果。因此’一旦偵測到錯誤的預測,則檢查 錯誤的較㈣支,以獲得相對分纽徑的相反 201245976 程序接著從相反客戶位址繼續,I規太θ 此方式,本發明之具體實施例使用戶 的相反客戶位址,以從較遠分支之綱 ^ ^ 復。因此’如果較遠分支預測結果是錯誤的恢 處找到正確的客戶指令。同樣地,如果 ±主-、去何 令區塊内的較遠分支,則在CLB中;需;=”在本機指 ,. 个而要其目標區塊的登錄點 (emrypomt)。,然而…旦發生失誤的預測,則需要在咖中插 =目標區塊的新登錄。此魏係料存CLB容量㈣ad⑼為目 標而履行。 圖5顯示例示性硬體加速轉換系統5〇〇的示意圖,兑 本發明之-具體實補騎將客戶指令區塊及其職的本機轉 換區塊儲存在快取中的方式。如圖5中圖解,使用轉換㈣緩 ^器506快取客戶及本機區塊之間的位址映射;致使透過低潛 時可用性(low latency availability)將最常遇到的本機轉換區塊存 取至處理器508中。 圖5示意圖圖解在高速低潛時快取(high_speed 1〇w丨咖㈣ cache memory)(轉換後備緩衝器506)内維持時常遇到的本機轉 換區塊的方式。圖5中描繪的組件實施硬體加速轉換處理,以 達到更高的效能等級。 客戶提取邏輯單元502運作為從系統記憶體5〇1提取客戶 才曰令的硬體為基客戶指令提取单元(hardware-based guest instruction fetch unit)。給定應用程式的客戶指令駐存在系統記憶 201245976 體501内。在程式初始後,硬體為基客戶提取邏輯單元兄 始預提取客戶指令至客戶提取緩衝器5〇3 +。客戶提取緩二 503累積客戶指令,然後將這些指令組合成客戶指令區塊。使用 轉換表504,將這些客戶指令區塊轉換騎_本機轉換區塊。 轉換=本機指令在本機轉換緩衝器5G5内累積,直到本機轉換 區塊完成。接著將本機轉換區塊傳輸至本機快取5〇7,及將映射 儲存在轉換後備緩衝器5〇6中。接著使用本機快取撕以供仏 本機指令至處理器508以便執行。在一具體實施例中,藉由^ 戶提取邏概顏(guest feteh lGgie趣職hine)魅由^ 取邏輯單元502實施的功能性。 隨著此程序繼續,轉換後備緩衝器5〇6填滿客戶區塊至本 機區,的位址映射。轉換後備緩衝器5〇6使用一或多個演算法 („如’取近最少使科⑽確保將較常遇到賴塊崎保持在緩衝 為内’且將很少制的區塊映射逐出緩衝器。以此方式,將熱 門的士機轉無塊映射儲存在轉換後備緩衝器内。另外:、 ^主思,在本顧塊内精確·⑽較遠客戶分支不需要在咖 插入新的映射,因為其目標區塊固定在單—映射本機區塊 ’因此保存CLB結構的較小容量效率。此外,在__具體實施 =中’構造CLB贿儲存最後的客戶至本機位址映射。此做法 亦保存CLB的較小容量效率。 八客戶提取邏輯5〇2查看轉換後備緩衝器5%以決定客戶指 :區塊的位址是否已被轉換為本機轉換區塊。如上述,本發明 提供用於轉換處理的硬體加速。因此,在從系統 、體501提取客戶位址以進行新的轉換前 ’客戶提取邏輯502 14 201245976 將查看轉祕倾衝有無贱存在的本_純塊映射。 在一具體實施例中,對於轉換後備緩衝器以客戶位址# 或以個別客戶位址進行索引。客戶健範岐⑽換為本= 換區塊之客戶指令區塊之位址的制。轉換後備緩衝器 的本機轉換區塊映射經由其對應之客戶指令區塊之對應的客 位址範圍而被進行索引。因此,客戶提取邏輯可比較&戶 與轉換區塊的客戶位址範賊個別客戶位 ^ ,緩衝器料),以決定預先存在的本= 存在本機快取5〇7中儲存的位置内或在圖6的程式碼快 如果預先存在的本_舰齡在本機絲或程式碼 。 則將對應的本機職齡從絲直接傳送顺理器。’ 以此方式,熱門的客戶指令區塊(如,經常執行的客 有其維持在高速低潛時轉換後備緩衝器5G6内的對ϋ 門本機轉換區塊映射。隨輕塊被接觸,適#的替換 兩)確保熱門的區塊映射繼續 後= :::。因此,客戶提取邏輯502可馬上識別所請求的it 丰機陕取507,以由處理器508執行。l古此供、+ · 苛圮至 因為至系統記憶體的行程可花> 4〇至;^^下許多週期, 屬性(如,CLB、客戶分個週期或更多。這些 抖Λ 刀支序列預測、客戶及本機分支緩徐哭 對先_本機快取)允許本發明之具體實幾 ^達成客戶應驗式的應用程式效能至同等 ^功能 用程式效能的80%至1〇〇%内。 機4 &式的應 15 201245976 在一具體實施例中,客戶提取邏輯5〇2 一再地預提取客戶 才曰々用方、與來自處理益508的客戶指令請求(gUest instructi〇n request)無關的轉換。本機轉換區塊可在系統記憶體5〇1中那些 用於較少使用區塊的轉換緩衝器「程式碼快取」(c〇nversi〇n buffer code cache)内累積。轉換後備緩衝器5〇6亦保持最常使用 =映射。因此,如果所請求的客戶位址未映射至轉換後備緩衝 器中的客戶位址,則客戶提取邏輯可檢查系統記憶體5〇丨以決 定客戶位址是否對應於其中儲存的本機轉換區塊。 在一具體實施例中,轉換後備緩衝器5〇6係實施為快取並 利用快取一致性協定(cache c〇herency pr〇t〇c〇1),以與儲存在較 高階快取中的較大轉換緩衝器及系統記憶體5〇】維持一致性。 儲存在轉換後備緩衝器506内的本機指令映射亦寫回(wrke back) 較高階的快取及系統記憶體501。至系統記憶體的寫回維持一致 性。因此,可使用快取管理協定以確保熱門的本機轉換區塊映 射儲存在轉換後備緩衝器506内,及冷門的本機轉換映射區塊 儲存在系統記憶體501中。因此,較大形式的轉換緩衝器5〇6 駐存在系統記憶體501中。 應/主思,在一具體實施例中,可使用例示性硬體加速轉換 系統500實施若干不同的虛擬儲存方案。例如,可使用客戶指 令區塊及其對應的本機轉換區塊儲存在快取内的方式支援虛擬 儲存方案。同樣地,可使用用來快取客戶及本機區塊之間的位 址映射的轉換後備緩衝器506支援虛擬儲存方案(如,虛擬至實 體§己憶體映射的管理)。 16 201245976 =具體實施财,圖5的_#施虛擬 :’其使用可接收若干不同指令 ;:’】 軟體所控制,同時利用硬體加速轉換處理,以達到更高的效= H吏用此實^方案,可處理及轉換不同的客戶 : 且各個客戶_得到硬體加速的好處, 高的效能等級。實例客戶架構包括Java或Javascript、秦 MIPS、SPARC等。在—具體實施例中,「客戶架構」可以是本 機指令(如’來自本機應用程式/巨集操作(macr〇 〇perati〇n)),及 轉換程序產生最佳化本機指令(如,最佳化本機指令/微操作 (眶r〇-〇perati〇n))。軟體控制前端可提供應用程式在處理器上執 行的較大靈活度。如上述’硬體加速可以接近本機硬體速度執 行客戶應用程式的客戶指令。 圖6顯不根據本發明之一具體實施例之硬體加速轉換系統 600的詳細實例。系統600以上述系統5〇〇的實質上相同方式履 行。然而,系統600顯示說明例示性硬體加速程序之功能性的 額外細節。 系統記憶體601包括資料結構(data structure),其包含:客 戶碼602、轉換後備緩衝器603、最佳化器碼(〇ρ—c〇d)6〇4、 轉換器碼(converter code)605、及本機碼快取606。系統600亦 顯示共用硬體快取(shared hardware cache)607,在其中交錯及共 用客戶指令及本機指令兩者。客戶硬體快取61〇從共用硬體快 取607抓取最常接觸的這些客戶指令。 201245976 客戶提取邏輯620預提取來自客戶6〇 戶提取邏輯620與TLB 6〇9介接,τ 戶指7客 位址轉譯為對應的實體客戶二:=== ::::直接傳送至客戶硬體快取61〇。由客户提取邏輯62〇 k取的客戶指令儲存在客戶提取緩衝器6ΐι中。 轉換表6U及613包括替代攔位(substitute fleld)及控制棚位 (C〇咖1 fldd)’並運作為將接收自客戶提取緩衝器611的客戶指 令轉譯為本機指令料層轉齡(—1瓣㈣加灿⑹。 多工器(mUltiplexer)6】4及6ι5將轉換的本機指令傳輸至本 機轉換緩衝g 616。本機雜麟旨616 娜換的本機指令以 組合本機轉麵塊。接著將這些本麟祕塊雜至本機硬體 快取608,及將映射保持在轉換後備緩衝器630中。 轉換後備緩衝器630包括用於以下的資料結構:客戶分支 位址(guest branch address)63卜本機位址632、轉換的區塊範圍 (converted block range)633、程式碼快取及轉換後備緩衝器管理 位元(code cache and conversion look aside buffer management ㈣634、及動態分支偏差值位元(dynamic branch bias bit)635。客 戶分支位址631及本機位址632包含指示哪些對應的本機轉換 區塊駐存在轉換的區塊範圍633内的客戶位址範圍。快取管理 協定及替換策略確保熱門的本機轉換區塊映射駐存在轉換後備 缓衝器630内’同時冷門的本機轉換區塊映射駐存在系統記憶 體601的轉換後備緩衝器資料結構603内。 201245976 如同系、統500的情況,系'統_試圖確保熱門的區塊映射 駐存在高速低潛時轉換後備緩衝器63〇内。因此,在一具體實 施例中,當提取邏輯640或客戶提取邏輯62〇查看以提取客戶 位址時,提取邏輯64〇首先可檢查客戶位址,以決定對應的本 機轉換區塊是否駐存在本機碼快取6〇6内。此舉允許決定請求 的客戶位址是否在本機碼快取6〇6中具有對應的本機轉換區 塊。如果請求的客戶位址不駐存在緩衝器003或608、或緩衝器 M0内,則從客戶碼6〇2提取客戶位址及若干後續客戶指令,及 經由轉換表612及613實施轉換程序。 、圖7顯示根據本發明之一具體實施例具有輔助軟體為基加 速轉換管線(secondary software-based accelerated conversion pipeline)之硬體加速轉換系統7〇〇的實例。 組件711-716包含軟體實施的載入儲存路徑(load store P^th) ’其例如在特殊高速記憶體760内。如圖7所描繪,客戶 提,緩衝器7Π、轉換表712-713及本機轉換緩衝器716包含特 殊咼速。己憶體760的分配部分(aii〇cate(j p0rti〇n)。在許多觀點 上’特殊高速記憶體76〇用作極低階(1〇w_level)快速快取(如, L0快取)。 前頭761圖解藉以經由與指令提取路徑(instruction fetch path)(如’來自挺取的解瑪邏輯(触decocje i〇gic))相對的載入 儲存路徑來加速轉換的屬性。 在圖7具體實施例,高速記憶體760包括用於進行比較的 201245976 特殊邏輯。由於這-點,可以軟體實施轉換加速。例如,在另 -具體實施例巾’缝轉理輯行管線w executi〇n pipdine)的軟操控儲存組件711_716的標準記隨,該軟 體在處理n執行管線處賴較件711_716的值載人—或多個 SIMD暫存器並實施履行SiMD暫存器中欄位間之比較的比較 指令,及視需要履行遮罩操作(mask 〇perati〇n)及結果掃描操作 (result scan operation)。可使用通用微處理器硬體(卿㈣卿⑽ m1Cr〇processor hardware)(諸如,例如,使用比較一者與多者之 比較指令)來實施載入儲存路徑。 、 應注意,由具有特殊屬性或位址範圍的指令存取圮憶體 760。,如’在-具體實施例中,客戶提取緩衝器具有用於^個 客戶指令項目(gUest instruction entry)的ro。每個客戶指令均建 立ID。此ID允許容易從客戶緩衝器映射至本機轉換緩衝7器。瓜 允許容易進行客戶偏移量至本機偏移量的計算,不管客^ =應的本機指令相比的不同長度。此做法在上文圖3中^ 在一具體實施例中,由使用計算所提取客戶指令之長度之 長度解碼器(length decoder)的硬體來計算ID。然而,廂二, 可以硬體或軟體履行此功能性。 心' ,一旦指派ID後,可經由ID存取本機指令緩衝器。仍允許 客戶偏移量至本機偏移量的偏移量轉換。 ° 圖8顯示根據本發明之一具體實施例圖解CLB結合程式碼 20 201245976 々上述使用CLB來儲仔具有對應的轉換本機位址(儲存在 程式碼快取記憶體内)之客戶位址的映射(如,客戶至本機位址映 射)在具體實施例中,以客戶位址的一部分索引clb。客戶 位址可分#财!丨、賴(tag)、及娜f (如,記憶献小⑽她 n此客戶位址包含用以識別CLB項目帽應於索引之匹配 的標織。如果在標籤上發生命中’則龍的項目將儲存指桿 irrr),,其指科在程式碼快取記㈣嶋中何雜到對應的 轉換本機齡記憶塊(如,轉換本機齡的對應區塊)。 _應'主意,本文使用術語「記憶塊」指轉換本機指令區塊的 U己憶體大小。彳物,記憶塊的大小可取決於難本機指令 區塊的不同大小而不同。 +在-具體實施例中’關於程式碼快取記憶體8G6,以一組固 ^大l、6£fe塊(如’各個記憶塊類型具有不同大小)分配程式碼快 在系統記憶體及所有較低階硬體快取(如,本機硬體快取 ^硬體快取6〇7)+,可將程式碼快取賴分割成若干組 ° CLB可使用客戶位址以進行索引及標籤上比較用於程 工”’、、取s己憶塊(code cache chunk)的方式標籤(way tag)。 1方^ 8描乡會咖硬體快取804以描繪為方式x及方式 y的兩 儲存客戶位址標籤。應注意,在一具體實施例中,可透 i、'、°構化方式將指標儲存於本機碼記憶塊,完成使用CLB結 21 201245976 a 構之客戶位址至本機位址的映射(如,從客戶至本機位址映射)。 各個方式與標籤相關聯。CLB係以客戶位址802(包含標籤)進行 索引。在CLB中發生命中時,傳回對應於標籤的指標。使用此 “才示以索引程式瑪快取記憶體。這在圖8中以一行文字「程式 碼記憶塊的本機位址=Seg#+F(pt)」顯示,其代表以下事實:程 式碼s己憶塊的本機位址隨指標及區段號碼(segment number)而 變。在本具體實施例中,區段是指記憶體中用於虛擬映射指標 範疇(pointer scope)之點的基礎(如,允許將指標陣列映射於實體 έ己憶體中的任何區域)。 或者’在一具體實施例中’可經由如圖8中以一行文字「程 式碼記憶塊的本機位址=seg#+索引* (64個記憶塊大小)+ way# * (記憶塊大小)」顯示的第二方法,索引程式碼快取記憶 體。在此具體實施例中,可將程式碼快取組織成其方式結構 (way-structure)匹配 CLB 方式結構化(way structuring),使得在 CLB的方式及程式碼快取記憶塊的方式之間存在ι:1映射。當 在特定CLB方式中發生命中時,即程式碼快取的對應方式中的 對應程式碼記憶塊具有本機碼。 仍然參考圖8,如果CLB的索引未中(miss),則可檢查記憶 體的較高階層是否有命中(如’ L1快取、L2快取等)。如果在這 些較高快取等級中沒有發生命中,則檢查系統記憶體8〇1中的 位址。在一具體實施例中’客戶索引指向包含例如64個記憶塊 的項目》讀出64個記憶塊中各者的標籤,並將其與客戶標籤進 行比較,以決定是否發生命中。此程序在圖8中以虛線方框8〇5 顯示。如果在與系統記憶體中的標籤比較之後沒有任何命中, 22 201245976 則在記憶體的任何階層等級不存在轉換,及必須轉換客户指令。 、應注%、,本發明之具體實施例管理以類似快取方式儲存客 戶至本機指令映射之記憶體的各個階層等級。這原本來自快取 為基心隐體(cache_based _〇ry)(如,clb硬體快取、本機快 ^ U及U快取等)。然而,CLB亦包括「程式碼快取+CLB 笞理位元」,其係用來實施系統記憶體内之客戶至本機指令 映,最,最少使用(least recently used,LRU)替換管理策略。 在-具體實施例中’ CLB管理位元(如,⑽位元)為軟體所管 以此方式,使用記憶體的所有階層等級儲存最近使用之最 吊遇到的客戶至本機指令映射。對應地,這導致記憶體的所有 階層等級同樣地儲存最常遇到的轉換本機指令。 “圖8亦顯示CLB中儲存的動態分支偏差值位元及/或分支歷 史記錄位元(branch history bit)。使用這些動態分支位元追蹤用於 、、且5各戶4曰令序列之分支預測的行為。使用這些位元追蹤哪些 分支預測是最常正確預測的,及哪些分支預測是最常不正確預 測的。CLB亦儲存轉換區塊範圍的資料。此資料使程序能夠讓 程式碼快取記憶體中對應之客戶指令已修改(如,在自我修改程 式碼中)的轉換區塊範圍變成無效。 圖9顯示根據本發明之一具體實施例圖解實體儲存堆疊快 取實施方案(physical storage stack cache implementation)及客戶 位址至本機位址映射的例示性流程圖。如圖9所描繪,可將快 取實施為實體儲存堆疊901。 23 201245976 圖9具體實施例圖解可將程式碼快取實施為可變社構快取 (wiabie structure cache)的方式。取決於不同具體實施口例的需 求,可變結構快取可完全為硬體實施及控制、完全為軟體實施 及控制、或軟體強制及控制與基本硬體啟用的部分混合。 圖9具體實施例有關在管理分配及替換客戶至本機位址映 射及其在實際實體儲存巾的對應轉譯的讀之間求取最佳平 衡。在本具體實施例中,此可透過使用結合指標與可變大小記 憶塊的結構來完成。 ° 使用多方式標籤陣列(则lti_way tag array)來儲存用於不同 大小群組之實體儲存的指標。每次需要分配特定的儲存大小 (如,其中儲存大小對應於位址)時,則據此分配各對應於此大小 之儲存區塊的群組。此舉允許本發明之具體實施例精確地分配 儲存,以儲存可變大小的指令軌跡。圖9顯示群組如何可以屬 於不同大小。顯不兩個例示性群組大小:「群組大小4的替換候 選者」及「群組大小2的替換候選者」。除了對應於位址的標藏 之外’指標係也儲存在將位址映射成實體儲存位址的標鐵陣列 中。標籤可包含兩個或兩個以上的子標籤。例如,標籤結構9〇2 中最前面的3個標藏包含分別如所顯示的子標藏ai⑴、A2 C2 D2、及A3 B3。因此’標籤A2 B2 C2叱包含群組大小4, 而標籤A1 B1包含群組大小2。群組大小遮罩㈣叩如聰p 亦指示群組的大小。 只體可像堆疊般管理,致使每次分配新的群組 時,謂新的群組放置在實體儲存堆疊的頂部。藉由覆寫項目 24 201245976 的標籤而使項目失效’藉此恢復所分配的空間。 圖9亦顯示延伸方式標籤結構(extended way吨 stmcture)903。在一些情形中,標籤結構902中的項目在延伸方 式標籤結構903中將具有對應的項目。這取決於項目及標籤結 構是否具有設定之延伸方式位元(如,設定為一)。例如,設定^ 的延伸方式位元指示在延伸方式標籤結構中有對應的項目: 延伸方式標籤結構允許處理器以與標準標籤結構的不同方式延 伸參考區域性(locality 〇f reference)。因此,儘管以一個方式索 標籤結構902(如,索引⑴),但以不同方式(如,索引 伸方式標籤結構。 n 型的實施方案中’索引⑴可歧在索引(k)中的更多項 目。這是因為在大多數的限制中,主要的標籤結構· 方式標籤結構903大上許多,其中例如①可涵蓋聰個項目 (如’ 10位元)’而(k)可涵蓋256(如,8位元)。 、 這使得本發明之具體實施織夠合併用於匹配已變得很敎 方式,’如果無法在標躲 立兀虛可,用延伸方式標籤結構儲存用於熱門軌跡的額外J ^ & ’此可變快取結構在僅需要時使用储存於堆遇上之 該快隼: 母一個快取集的固定實體資料儲存)相比,這提供高效率 25 201245976 的有效儲存容量增加β 亦可以有指示—個隹八 位元(如,意思是這杜集ΓΡ\或—個群組的集合為冷門的(cold) 集合的堆疊儲存看起\ r久未被存取)。在此财,這些 (bubble)。此時,可為发像疋在分配堆疊儲存内的氣泡 的分配指標。此程序是儲存回門集要求使用這些冷門集(C〇ld set) P職ss),1中在賴挣p :回收再利用程序⑽卿reclamation 的整個集合在堆疊时配好之後,該記憶塊屬於 結構(圖9中未顯示/免使;了促=„再利用的所需機制及 一個集合有-辦繼混清)是:每 回收再利用程序(其中用=====’及 方式)。此v允;=== 於堆叠式t將新的記憶塊分配 的指標及其在堆疊_侧 施為ίΐίί!圖9具體實施例充分適於使用標準記憶體,其實 ΐί儲記憶體相對。此屬性是由於以下事實所造成: 子,係藉由讀取指標、讀取索引、及分配位址範圍加 乂吕理。在此實施方案中不需要特殊的快取為基電路結構。 ㈣f注意’、在—具體實施例中,可使用圖9架構以實施不涉 轉換或程柄變換的#料快取及快取方案。gj此,可使用圖9 26 201245976 ==:== rrr 〇 其K给對應的群組。群組遮 罩^紙藉由匹配客戶指令的子搁位(subfieid)以 所^於的特定群_發#魏。鮮雜客戶 ^ ΓΓΓΓ::)Γ相關位元,以特別查看相關位元。=表 先順核理时讀相罩-標藏對 至表=按=:=?繪為由上至下的方向)_ 先權方向讀取,來匹配樣式。以由按遮罩-標籤儲存的優 性所檢查的不同遮罩係對i地按i優先:::C配功能 耵愿吹耵弟一級表格1004圖解 以此方式,緩衝器中的各個位 轉換表,其中各個等級的轉換表連⑼t(bytest_)發送到 j将狹衣連續偵測位元攔位。在偵測到 27 201245976 相關位元欄位時,表格替代本機的等效欄位。 表格亦產生幫助用於此等級以及下一個等級表格(如, 級表格1004)之替代程序(substituti〇n process)的控制欄位。下— 個表格使用先前表格的控制欄位以識別下一個相關位元襴位, 其以本機等效欄位替代。第二級表格於是可產生控制攔位以幫 助第一級表格,以此類推。一旦所有客戶位元攔位均以本機位 元攔位替代’指令即完全轉譯且傳送至本機轉換緩衝器。本機 轉換緩衝器接著寫入程式碼快取,及其客戶至本機位址映射記 錄於CLB中,如上所述。 圖11A顯示本發明之具體實施例所實施之例示性樣式匹配 程序的示意圖。如圖11A所描繪,由標籤、樣式、及遮罩決定 目的地。樣式解碼的功能性包含履行位元比較(如,逐位元 X0R)、履行位元AND(如,逐位元AND)、及後續檢查所有零 位元(如,所有位元的NOR)。 ’ 圖11B顯示根據本發明之一具體實施例之基於SIMD暫存 器之樣式匹配程序的示意圖11〇〇。如示意圖11〇〇中所描綠,顯 示四個SIMD暫存器11〇2-11〇5。這些暫存器實施如所示樣式解 碼程序的功能性。使用傳入樣式1101在各個標籤上履行平行位 元比較(如’逐位元X〇r),及其結果履行與遮罩的位元 AND(如,逐位元AND)。匹配指示符結果如所示各儲存於其相 應的SIMD位置。接著如所示履行掃描,及掃描在simd元件 中所遇到的第一個「真(true)」是其中所有i位元的方程式(pi X〇r Ti)ANDMi = 〇為真的元件,其中Pi是相應的樣式,Ti是相應 28 201245976 的標籤及Mi是相應的遮罩。 圖12顯示根據本發明之一具體實施例之統一暫存器構案 (unified register file)l2〇l的圖式。如圖12所描繪,統一暫存器 檔案1201包括個2部分1202-1203及項目選擇器(emry SeleCt〇r)1205。統一暫存器檔案】2〇1支援硬體狀態更新的架構 推測(architecture speculation)。 統-暫存ϋ檔案咖可實施最佳化影子暫#||(Gptimized 及^的(C_iUed)暫存器狀態管理程序。此程 需要在暫能性及認可的暫存器功能性,且不 實施例中,統任何妓複製。例如,在一具體 1205提供。在圖12 ^田趣\ 01的功此性大部分由項目選擇器 來自部分1及部分/各個暫存器樓案項目由分別 間,從各個項目凟的存益尺及尺’構成。在任何給定時 部分2的自部分一,就是來自 位元的值,㈣財_^^5針對各=目料的 喝日有4個不同的組合。 X及y位元的值如下。 ⑻:R無效; 01 : R推測; W:R認可; Π :R認可; 認可 認可 推測 無效 (在項取了讀取請求R,後) (在凟取了讀取請求R後) (在項取了讀取請求R,後) (在讀取了讀取請求尺後) 29 201245976 οο 各個指令/事件的影響(impaet)。在指令「寫回」後, U) 00 ϋ1變成10。在指令「認可」後,G1變成11,及 10變成11。 1生回復事件(roUbackevent)後,01變成00,及 離Hi ίί儲存在暫存器檔案項目選擇器1205中的狀 域於發生這錢更時的事件 成位元轉變。 破璜:Si二1能夠在影子暫存器狀態内繼續執行,而不會 Μ暫存紙4。^子暫存11狀態準備認可時,更新 :存=目選擇器致使以上述方式從該部分讀二= 始、:’’僅視需要藉由更新暫存器檔案項目選擇器,則 心™_10可在發生例外時,回 ,到取近w可點(e〇mmit p。♦同樣地,認可點可向前移動, 错此僅藉由更新暫奸職項目·ϋ,認可推_行結果。 =功能性在不需要挪存H記賴之間進行任何交叉複製 供0 以此方式4暫存n彳錄可經由暫 1205, HSSSR)及複數個認可暫存器(議触ed Π i物,拽科,SSSR料It魏CR暫存界。 在回復時,SSSR狀態回復為CR暫存器。 ° 201245976 圖13顯示根據本發明之一具體實施例支援推測架構狀態 (speculative architectural state)及暫態架構狀態(transient architectural state)之統一影子暫存器檔案及管線架構(unified shadow register file and pipeline architecture) 1300 的示意圖。 圖13具體實施例描繪包含支援包含架構1300的組件,其 支援包含架構推測狀態之指令及結果以及支援包含暫態之指令 及結果。如本文中使用,認可架構狀態包含可由處理器上執行 的程式存取(如’ s買取及寫入)的可見暫存器(vis丨ble register)及可 見記憶體。相反地,推測架構狀態包含未被認可及因此並非全 域可見的暫存器及/或記憶體。 在一具體實施例中,有四個由架構13〇〇啟用的使用模型 (usage model)。第一使用模型包括硬體狀態更新的架構推測,如 上文在圖12的討論中描述。 第二使用模型包括雙範疇使用(dua】 sc〇pe usage)。此使用模 型可用於將2個執行緒(thread)提取至處理器中,其中一個執行 緒在推測狀_巾執行’及另-個執行緒在非推測狀態中執行。 在此使用模型巾,兩個範脅被提取至機則職㈣中,及 存在於機器中。 于 第 ㈣包括指令從-個形式至另—個形式的JIT(及 構Γί ί在此使用模型中,經由軟體(例如’JiT)重排架 構紅。第三使用模型可翻於例如客戶至本機指令轉譯、虛 31 201245976 擬機器至本機指令轉譯、或將本機微指令重新映射/轉譯為更最 佳化的本機微指令。 第四使用模型包括暫態環境切換(transient c〇ntext switching),而不用在從暫態環境返回後存檔及復原先前環境。 此使用模型適用於可因若干理由發生的環境切換。一個此種理 由例如了以疋經由例外處置環境(excepti〇n hanc|iing context)對 例外進行精確處置。第二、第三、及第四使用模型將在以下圖 14-17的討論中進一步說明。 再次參考圖13’架構1300包括實施上述4個使用模型的若 干組件。統一影子暫存器檔案1301包括:第一部分,認可暫存 益棺案1302 ;第二部分’影子暫存器檐案1303 ;及第三部分, 最新指示符陣列(latest indicator array) 1304。還包括推測撤回記 憶體緩衝器(speculative retirement memory buffer,SMB)1342 及 表新指示付陣列1341。架構1300包含亂序架構(〇ut of order architecture) ’因此’架構1300另外包括重排緩衝器及撤回視窗 (reorder buffer and retirement window)1332。重排及撤回視窗 1332 另外包括機器撤回指標(machine retirement pointer)1331、 就緒位元陣列(ready bit array)1334 ’及每指令最新指示符(per instruction latest indicator),諸如指示符 1333。 根據本發明之一具體實施例進一步詳細說明第一使用模 型,即,硬體狀態更新的架構推測。如上述,架構1300包含亂 序架構。架構1300的硬體能夠認可亂序指令結果(如,亂序載 入及亂序儲存及亂序暫存器更新)。架構1300以上文在圖12的 32 201245976 方式利用統—影子暫存器檔案,以支援在認可暫 子暫存器之間的推測執行。另外,架構13〇〇利用推測 t^T^rculaxive ioad store 緩衝器1342支挺推測執行。 〗332架f::將使用這些組件與重排緩衝器及撤回視窗 1332,以允+其狀態正確撤_認可暫存器檔案⑽及 2體^ 5 0 即使機胃魏序方式將這些組件在㈣撤回到統一 影子暫存器檔案及撤回記憶體緩衝器。例如,該架 用 案1301及推測記憶體1342,以基於例;發生與 回ί統事t°此功能性使暫存器狀態能夠將亂序撤 1342將亂Ϊ料:器襠案130卜及使推測撤回記憶體緩衝器 亂序物己憶體1350。隨著推測執行繼續進行及 ::則機器撤回指標咖向前移動直到觸發認 存器標案藉由使其認可點向前移動而^ 對二憶體緩衝器根據機器撤回指㈣1 =考相在鋪_狀_減1332 1-7,就緒位元_ 1334顯轉備純行的 的= ⑽’ __要執行的7”附加指令。據此,== _^允續進行。其後,如果發生例外,諸如漏 士吳、力右1 /刀支則可回復在指令6後發生的指令。或者,
U ’又*可例外發生,則可藉由相 J 133卜認可所有指令!々。 ❹撤回伯‘ 33 201245976 一斤使用最新指示符陣列1341、最新指示符陣列13〇4及最新指 不符13』3以允許亂序執行。例如,即使指令2在指令$之 ^暫存器R4,則-旦指令5準備發生,將忽略指令2的載入。 最新載入將根據最新指示符取代之前的載入。 在重排緩衝器及撤回視窗1332内發生分支預測或例 =觸發回復事件。如上述,在發生回復時,統—影子暫存^ 案1301將回復至其最後一個認可點,及推 = 1342 將被排清(flushed)。 知 及:緒3至處理器中’其中一個執行緒在推測狀態中執行, 二執=推::在執^ 如在示意圖刚中顯示,2個料/執跡、及M0 獅軌跡。架構啟 =二二=
模式中執仃,及另一個在SR/SM 34 201245976 憶i赏二以⑽模式中,讀取及寫入認可暫存器,及記 S;SR:憶體。在SR/SM模式中,暫存器寫入進入 衝器(獅7自最新寫入讀取’而記憶體寫入撤回記憶體緩 -個實例將是排序的目前齡(如’剛)及推職的下 犯奇(如,1>4〇2)。因為在目前範疇之後提取下一個範疇, 二二:會文到重視’因此兩個範疇均可在機器中執行。例如, ,摩O4G1中,在「認可SSSR為CR」處,直至此時的暫存 益及兄憶體處於CR模式,而程式碼在CR/CM模式中執行。在 =_中,程式碼在SR^M模式中執行,=== :=回復。以此方式,兩個範疇在機器中同時執行,但各在不 同模式中執行並相應地讀取及寫入暫存器。 立圖15顯示根據本發明之一具體實施例之第三使用模型的示 意,1·,其包括暫態環境切換,在從暫態環境返回後,不必 存檔及復原先前環境。如上述,此使賴型翻於可因若干理 由發生的魏她。—慨種理由例如可以是經由例外處 境對例外進行精確處置。 4 第三使用模型發生於機器正執行轉譯碼及其遇到環境切換 時(如,轉譯碼中的例外或需要後續程式碼轉譯時)。在目前的範 #(如,在例外之前)中’ SSSR及SMB尚未認可其對客戶架構 狀態的,測狀態。目前狀態在SR/SM模式中運行。在例外發生 寺機器。刀換至例外處置益(eXCepti〇n hancJler)(如,轉換器)以精 確地處理例外。插人回復,這造成暫存^狀肋復為cr^遞 %: 35 201245976 被排清。轉換器碼將在SR/CM模式中運行。在 間,_將其環境撤回到記憶體 ^換=期 被寫ί織且不用更新CR。其後,當轉換器:::且= 回執订的轉換碼之前,轉換器回復為(如,回、 CR) °在此程序期間,最後認可的暫存器狀態是在中。 這顯示在示意圖15〇〇中,其中先前的範 SS张認可為CR。目前的練軌跡⑽是推測性的。暫= 及5己憶體及此蛇轉是推測性的,及執行在sr/sm 在此實例中’例外發生在㈣⑼2中,及程式碼在轉譯之前需 要以原始順序重新執行。此時,SSSR被回復及smb被排清。 接著’πτ程式碼1M)3執行。JIT程式碼將sssr回復至範今測 的末端並排清SMB。在SR/CM模式下執行m。在鼠结束時, SS^R被回復為CR ’及目前的紳轨跡i 5〇4接著在置卿 的轉譯順序重新執行。以此方式,以確切的目前順 序精確地處置例外。 B圖16顯示根據本發明之—具體實施例贿指令序列中的例 外是因為後續程式碼需要轉譯之_的示意圖咖。如在示意 圖1600中顯示,先前的齡/轨跡_以遠跳(farjump)至未轉 澤的。目的地而結束。在跳至遠跳目的地之前,認可娜尺為cr。 Jir权式碼1602接著執行以轉譯遠跳目的地的客戶指令(如以 建立本機指令騎軌跡)。在SR/CM模式下執行】ιτ。在π執 ^結束時,暫存器狀態從SSSR回復為CR,及由m轉譯的新 ^可’軌跡1603開始執行。新的範•轨跡繼續在模式中 從先前範疇/軌跡1601的最後認可點執行。 、 36 201245976 圖π顯示根據本發明之一具體實施例之第四使用模型的示 意圖1700,其包括暫態環境切換,在從暫態環境返回後,不必 存檔及復原先前環境。如上述,此使用模型適用於可因若干理 由發生的環境切換。一個此種理由例如可以是經由例外處置产 境處理輸入或輸出。 衣 示意圖1700顯示在CR/CM模式下執行的先前範嘴/轨跡 1701以叫用(call)函數F1而結束的案例。直至此時的暫存器狀 態從SSSR認可為CR。函數F1範疇/軌跡17〇2接著開始在 SR/CM模式下以推測的方式執行。函數F1接著以返回主範疇/ 執跡1703而結束。此時,暫存器狀態從SSSR回復為cr。: 範*#/執跡1703重返在CR/CM模式中執行。 圖18顯示根據本發明之一具體實施例之例示性微處理器管 線(=iCr〇processor pipeiine)18〇〇 的圖式。微處理器管線 18〇°〇 包 括實施上述硬體加速轉換程序之功能性的硬體轉換加速器。在 圖18具體實施例中,硬體轉換加速器耦接至提取模組ΐ8〇ι,其 後是解碼模組1802、分配模組18〇3、分派模組(此⑽也 mHe)1804、執行模組1805及撤回模組1806。應注意,微處 理器管線1 _只是實施本發明之具體實酬上述魏性之管線 的-個實例。熟習本技術者應瞭解,可實施包括上述解碼模組 功能性的其他微處理器管線。 為了解說的目的,已參考特定具體實施例做出以上說明。 然而’以上闡釋之討論的目的不在詳盡窮舉或限制本發明於揭 37 201245976 ==;可按照以上教示進行許多修改及變化。具體實 = 本發明的原理及實際應賴出最好 技術者以適於所想散用途的各種修 改,充刀利用本發明及各種具體實施例c 【圖式簡單說明】 本發明藉由舉例而非限制,以附圖的各個圖式進行解說, 圖中相似參考數字代表相似元件。 圖1顯不本發明之一具體實施例所操作的例示性指令序列。 圖2顯不根據本發明之一具體實施例描繪基於區塊的轉譯 程序的示意圖,其中將客戶指令區塊轉換為本機轉換區塊。 圖3顯示根據本發明之一具體實施例圖解將客戶指令區塊 的各個指令轉換為本機轉換區塊之職的本機指令之方式的示 意圖。 圖4顯示根據本發明之一具體實施例圖解以處置本機轉換 區塊處理較遠分支之方式的示意圖。 圖5顯示根據本發明之一具體實施例之例示性硬體加速轉 換系統的不意圖’其圖解將客戶指令區塊及其對應的本機轉換 區塊儲存在快取中的方式。 圖6顯示根據本發明之一具體實施例之硬體加速轉換系統 的詳細實例。 μ圖7顯不根據本發明之一具體實施例具有輔助軟體加速轉 換官線之硬體加速轉換系統的實例。 圖8顯示根據本發明之一具體實施例圖解CLB結合程式碼 快取及儲存於記憶體中的客戶指令至本機指令映射而發揮功能 之方式的例示性流程圖。 38 201245976 圖9顯示根據本發明之一具體實施例圖解實體儲存堆疊程 式碼快取實施方案及客戶指令至本機指令映射的例示性流程 圖。 圖10顯示根據本發明之一具體實施例描繪硬體加速轉換系 統之額外例示性細節的示意圖。 圖11A顯示本發明之具體實施例所實施之例示性樣式匹配 程序的示意圖。 圖11B顯示根據本發明之一具體實施例之基於SIMD暫存 器之樣式匹配程序的示意圖。 圖12齡根據本發明之—具體實施例之統―暫存器槽案 圖式。 、 一具體實施例包括雙範_使用之第 圖Μ顯示根據本發明之 二使用模型的示意圖。 —具體實施例之第三使用模型的示 ’在從暫態環境返回後,不必存標 圖15顯示根據本發明之 意圖’其包括暫態環境切換 及復原先前環境。 外是因為後續程式% _具體貫關騎指令序列中的例 圖之案例的示意圖° 意圖,其包括暫態環& #具體貫施例之第四使用模型的示 及復原先前環境Γ 、’在從㈣環境返回後,不必存稽 圖18顯示根據本發 一— 一 線的圖式。 一具體實施例之例示性微處理器管 39 201245976 【主要元件符號說明】 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 最佳化器碼 201245976 605 606 607 608 609 610 611 612 613 614 615 616 620 630 631 632 633 634 635 640 650 700 711 712 713 716
轉換器碼 本機碼快取 共用硬體快取 緩衝器 TLB 客戶硬體快取 客戶提取緩衝器 轉換表 轉換表 多工器 多工器 本機轉換緩衝器 客戶提取邏輯 轉換後備緩衝器 轉換的區塊登錄點位址 本機位址 轉換的位址範圍 程式碼快取及轉換後備緩衝器管理位元 動態分支偏差值位元 提取邏輯 處理器 硬體加速轉換系統 客戶提取緩衝器 轉換表 轉換表 本機轉換緩衝器 41 201245976 760 特殊高速記憶體 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 最新指示符陣列 1331 機器撤回指標 42 201245976 1332 重排緩衝器及撤回視窗 1333 最新指示符 1334 就緒位元陣列 1341 最新指示符陣列 1342 推測撤回記憶體緩衝器 1350 可見記憶體 1400 不意@ 1401 目前的非推測範疇/執跡 1402 新的推測範疇/執跡 1500 不意圖 1501 先前的範疇/執跡 1502 目前的範脅/軌跡 1503 JIT程式碼 1504 目前的範鳴/軌跡 1600 示意圖 1601 先前的範疇/執跡 1602 JIT程式碼 1603 新的範疇/轨跡 1700 示意圖 1701 先前的範疇/轨跡 1702 函數F1範臀/執跡 1703 主範疇/執跡 1800 微處理器管線 1801 提取模組 1802 解碼模組 1803 分配模組 43 201245976 1804 分派模組 1805 執行模組 1806 撤回模組 1807 統一影子暫存器檔案 1808 推測記憶體緩衝器 1809 全域可見記憶體/快取 44

Claims (1)

  1. 201245976 七、申請專利範圍: 1. 種硬體為基轉譯加速器,包含: 二:戶提取邏輯組件’用於存取複數個客戶护八 一客戶提取緩衝器,其耦接至該 , 預測組件’用於將該複數個客戶齡組=輯叙件及-分支 匕複數個轉換表,其麵接至該客戶提:緩衝器戶指令區塊; 指令區塊轉譯為一對應的本機轉換區塊;° ’用於將該客戶 -本機快取,其_至該轉 轉換區塊; &料_應的本機 一轉換後備緩細’频肢該本機絲 指令區塊輯應的本機轉換區塊的—_ ;肖於儲存該客戶 其中在收到針對一客戶指令的麦 備緩衝器以決定是否發生—命中,該轉換後 該本機快取中具有—對應_換本機魏戶指令在 執行回應於該命中,該轉換後備緩衝轉送轉譯的本機指令以便 請專利範圍第1項所述之硬體為基轉譯加速器,農中该 戶&取邏輯組件存取與一處理器無關之該複數個客戶指令、。/ i換尸1項所述之硬體為基轉譯加速器,其中該 含制雜策略轉持齡祕巾的最常遇到 的本機轉換區塊的一快取。 '如,請專利範圍第!項所述之硬_基轉譯加速器,其中在 系統5己憶體内維持一轉換緩衝器,及在該轉換後備緩衝器及該 45 201245976 轉換緩衝器之間維持快取一致性 5. 如申料利範财4項所述之硬體絲轉譯加速器,> 衝ϋ大於該轉換後備緩翻,及使㈣贿略以在該轉= 緩衝益及该轉換後備緩衝器之間維持一致性。 •奐 專利範圍第1項所述之硬體為基轉譯加速11,其 _換後備緩衝器實施為_至中將 時快取記憶體。 & R 円逮低潛 =,=用於一處理器以將客戶指令加速轉譯為本機指令之系 -各戶提取邏輯組件’用於存取複數個客戶指令; 一客戶提取緩衝器,其轉接至該客戶提取 預測組件,_該_支 二接至該客戶提取緩衝器,用於將該客戶 扣7 £塊轉#為一對應的本機轉換區塊; /苳戶 ^機快取,綱卿嶋,_細㈣本機轉換 一轉換後備緩衝H,其_至該本機触 指令區塊至對應的本機轉換區塊的—映射;胁齡该客戶 其中在收到針對一客戶指令的一後續 備緩衝器以決定是否發生—命中,其中該。 該本機快取中具有—對應的轉換本機指令j㈣客戶指令在 執行回應_命中,轉換後備緩衝轉送_的本機指令以便 46 201245976 8.如申請專利範圍第7項所述之系統, 件存取與該處理器無關之該複數個客戶指令、。中以客戶㈣邏輯組 9·如中請專利細第7項所述之_, 包含使用替換策略以維持儲存於1中二中-轉f後備緩衝器 的一快取。 俯於其中的最常遇到的本機轉換區塊 L如lit,圍第7項所述之系統,其中在-系統記憶體内 ==器,及在該轉換後備緩衝器及該轉換緩衝器^ 二鳇利範圍第10項所述之系統’其中該轉換緩衝器大於 2換後備_器’及使用寫回策略以在該轉換緩衝器及 後備緩衝器之間維持一致性。 L2二如If專利範圍第7項所述之系統,其中將該轉換後備緩衝 盗貫施為输至該處理器之—管線的—高速低潛時快取記憶體。 種貫知轉澤指令之-方法的微處理器,該微處理器包含: 一微處理器管線; σ 更體加速器模組,其耦接至該微處理器管線,苴中該硬體 加速器模組另外包含: 八 一客戶提取邏輯組件,用於存取複數個客戶指令; 一客戶提取緩衝器,其耦接至該客戶提取邏輯組件及一分支 預測組件,用於將該複數個客戶指令組合成—客戶指令區塊; 201245976 複數個轉換表,其耦接至該客戶提取緩衝器 指令區塊轉譯為一對應的本機轉換區塊; σ用於將该客戶 一本機快取,其耦接至該等轉換表, 轉換區塊; 、料_應的本機 -轉換後備錢本機快取,肖 指令區塊至對應的本機轉換區塊的一映射; 、=存5亥客戶 其中在收到針對一客戶指令的一後續 備緩衝器以蚊是科生-命巾,其巾麵射指綠=該,換後 該本機快取中具有一對應的轉換本機指令;及 〆戶扣令在 執行回應於該命中’該轉換後備緩衝器傳送轉譯的本機指令以便 14. 如申請專利範圍第13項所述之微處理器,其中今 β 輯組件存取與該微處理器無關之該複數個客戶指令^客戶提取邏 15. 如申請專利範圍第13項所述之微處理器,其中診 一 衝器包含使㈣換策略以維持儲存於其巾的最常:,後備緩 區谕的一版%„ 禮到的本機轉換 一系統記憶 轉換緩衝器 !6·如申請專利範圍第13項所述之微處理器,其中在 體内維持一轉換緩衝器,及在該轉換後備緩衝器及該 之間維持快取一致性。 17·如申請專利範圍第16項所述之微處理器,其中讀〜一 大於該轉換後備緩衝器,及使用寫回策略以在該 =緩衝态 轉換後備緩衝ϋ之間轉-致性。 換緩衝器及該 48 201245976 18. _如申請專利範圍第]3項所述之微處理器,其中將該轉換後備 緩衝器實施為耦接至該微處理器管線的一高速低潛時快取記憶 體。 1^.如申凊專利範圍第13項所述之微處理器,其中該硬體加速器 模.、且的力月匕匕各平行客戶指令提取管線明被instrucu〇n fetch pipeline) ’其平行於一本機微處理器提取管線⑴也代 microprocessor fetch pipeline)而發揮功能 0 20. -種實施轉譯指令之—方法的微處理器,該微處理器包含: 一微處理器管線; 轉組’其包含触至雜處㈣管、線的高速記憶 體,其中έ亥加速器模組另外包含: 一客戶提取邏輯11,用於存取複數個客戶指令; 用於將該 ★一客戶提取記憶體’其輕接至該客戶提取邏輯器 複數取記戶指令組合成一客戶指令區塊; 對應的本機 轉換=個轉絲,用於將該客戶指令區塊轉譯為一 -本機轉換缓_,祕儲_ 其中在收到針對-客戶指令的n塊, 戶指令區塊至對應的本機轉換區塊之;二二索引儲存該客 以決定是否發生-命中,其中跡 、#,—轉換後備緩衝器 取中具有-對應的轉換本機指令X ;、及曰不“客戶指令在該本機快 機指令以便 執行 回應於該命中’該轉換後;緩衝器傳送轉譯的本 49 201245976 21. 如申請專利範圍第20項所述之微處理器,其中該高速記憶體 包含該微處理器之一 L0快取。 22. 如申請專利範圍第20項所述之微處理器,其中該加速器模組 另外包含該微處理器之一載入儲存指令提取路徑。
TW101102835A 2011-01-27 2012-01-30 用於將客戶指令轉譯為本機指令之硬體加速組件 TWI512498B (zh)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
TW201245976A true TW201245976A (en) 2012-11-16
TWI512498B TWI512498B (zh) 2015-12-11

Family

ID=46581405

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101102835A TWI512498B (zh) 2011-01-27 2012-01-30 用於將客戶指令轉譯為本機指令之硬體加速組件

Country Status (3)

Country Link
US (5) US9733942B2 (zh)
TW (1) TWI512498B (zh)
WO (1) WO2012103359A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105659285A (zh) * 2013-08-08 2016-06-08 Arm有限公司 数据处理系统
CN107077369A (zh) * 2014-07-25 2017-08-18 英特尔公司 使用多个转换表以实现指令集不可知的运行时架构
CN107077368A (zh) * 2014-07-25 2017-08-18 英特尔公司 用于指令集不可知的运行时架构的系统
US11354242B2 (en) 2017-05-05 2022-06-07 Samsung Electronics Co., Ltd. Efficient early ordering mechanism

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
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
EP2668565B1 (en) 2011-01-27 2019-11-06 Intel Corporation Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
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
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
US9171178B1 (en) * 2012-05-14 2015-10-27 Symantec Corporation Systems and methods for optimizing security controls for virtual data centers
EP2862087A4 (en) 2012-06-15 2016-12-14 Soft Machines Inc UNIQUE IRREGULAR CHARGING / STORAGE MAINTENANCE
CN104583943B (zh) 2012-06-15 2018-06-08 英特尔公司 拥有具有分布式结构的动态分派窗口的虚拟加载存储队列
EP2862069A4 (en) 2012-06-15 2016-12-28 Soft Machines Inc DEFINING INSTRUCTIONS TO REORDER AND OPTIMIZE LOADING AND STORAGE
WO2013188705A2 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A virtual load store queue having a dynamic dispatch window with a unified structure
WO2013188306A1 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
EP2862084A4 (en) 2012-06-15 2016-11-30 Soft Machines Inc METHOD AND SYSTEM FOR IMPLEMENTING RECOVERY FROM A SPECULATIVE TRANSMISSION OF FAULT FORECASTS / ERRORS DUE TO THE CHANGE AND OPTIMIZATION OF MEMORY LOADS
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
WO2014151691A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. Method and apparatus for guest return address stack emulation supporting speculation
CN104424128B (zh) * 2013-08-19 2019-12-13 上海芯豪微电子有限公司 变长指令字处理器系统和方法
GB2527567A (en) * 2014-06-26 2015-12-30 Ibm Optimising software code
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
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
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
US9639370B1 (en) 2015-12-15 2017-05-02 International Business Machines Corporation Software instructed dynamic branch history pattern adjustment
US10042691B2 (en) 2016-04-26 2018-08-07 International Business Machines Corporation Operation of a multi-slice processor implementing exception handling in a nested translation environment
US10191745B2 (en) * 2017-03-31 2019-01-29 Intel Corporation Optimized call-return and binary translation
JP2019095952A (ja) * 2017-11-21 2019-06-20 ソニーセミコンダクタソリューションズ株式会社 プロセッサ、情報処理装置および処理方法
US11422815B2 (en) * 2018-03-01 2022-08-23 Dell Products L.P. System and method for field programmable gate array-assisted binary translation
US11119766B2 (en) * 2018-12-06 2021-09-14 International Business Machines Corporation Hardware accelerator with locally stored macros
US10673460B1 (en) 2019-02-27 2020-06-02 International Business Machines Corporation Spilling temporary results for accommodation of memory boundaries
US11119928B2 (en) 2019-02-27 2021-09-14 International Business Machines Corporation Instant quiescing of an accelerator
US10963388B2 (en) 2019-06-24 2021-03-30 Samsung Electronics Co., Ltd. Prefetching in a lower level exclusive cache hierarchy
US11392386B2 (en) 2020-08-14 2022-07-19 International Business Machines Corporation Program counter (PC)-relative load and store addressing for fused instructions

Family Cites Families (153)

* 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
JP3015493B2 (ja) 1991-04-26 2000-03-06 株式会社東芝 半導体連想記憶装置
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
US5761467A (en) 1993-09-28 1998-06-02 Mitsubishi Denki Kabushiki Kaisha System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
JPH07271672A (ja) 1994-03-30 1995-10-20 Toshiba Corp マルチウェイセットアソシアティブキャッシュシステム
EP1278125A2 (en) 1994-10-14 2003-01-22 MIPS Technologies, Inc. Indexing and multiplexing of interleaved cache memory arrays
US5655115A (en) 1995-02-14 1997-08-05 Hal Computer Systems, Inc. Processor structure and method for watchpoint of plural simultaneous unresolved branch evaluation
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
US5961639A (en) 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
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
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
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
US5974525A (en) 1997-12-05 1999-10-26 Intel Corporation System for allowing multiple instructions to use the same logical registers by remapping them to separate physical segment registers when the first is being utilized
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
US6327650B1 (en) * 1999-02-12 2001-12-04 Vsli Technology, Inc. Pipelined multiprocessing with upstream processor concurrently writing to local register and to register of downstream processor
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
US6609194B1 (en) 1999-11-12 2003-08-19 Ip-First, Llc Apparatus for performing branch target address calculation based on branch type
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
US6647489B1 (en) 2000-06-08 2003-11-11 Ip-First, Llc Compare branch instruction pairing within a single integer pipeline
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
US7200740B2 (en) 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
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
JP4027620B2 (ja) 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US6832307B2 (en) 2001-07-19 2004-12-14 Stmicroelectronics, Inc. Instruction fetch buffer stack fold decoder for generating foldable instruction status information
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
WO2004027600A1 (ja) 2002-08-30 2004-04-01 Renesas Technology Corp. データ処理装置及びicカード
JP2006518053A (ja) 2002-12-24 2006-08-03 サン・マイクロシステムズ・インコーポレイテッド ハードウェア・スカウト・スレッディングを通してコードを推測で実行することによるプリフェッチの生成
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
US7391933B2 (en) 2003-10-30 2008-06-24 Samsung Electronics Co., Ltd. Method and apparatus for image interpolation based on adaptive polyphase filters
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
KR100630702B1 (ko) * 2004-10-05 2006-10-02 삼성전자주식회사 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법
US7453904B2 (en) * 2004-10-29 2008-11-18 Intel Corporation Cut-through communication protocol translation bridge
US7496735B2 (en) 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
US7653132B2 (en) 2004-12-21 2010-01-26 Stmicroelectronics, Inc. Method and system for fast implementation of subpixel interpolation
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
US20070174717A1 (en) 2006-01-10 2007-07-26 Sun Microsystems, Inc. Approach for testing instruction TLB using user/application level techniques
TWI287801B (en) 2006-01-13 2007-10-01 Optimum Care Int Tech Inc Memory module having address transforming function and method for controlling memory
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
US20080127142A1 (en) 2006-11-28 2008-05-29 Microsoft Corporation Compiling executable code into a less-trusted address space
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 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
CN100478915C (zh) 2007-09-20 2009-04-15 福建星网锐捷网络有限公司 一种基于mips架构cpu的异常点定位诊断方法
JP2009087028A (ja) 2007-09-28 2009-04-23 Toshiba Corp メモリシステム及びメモリの読出し方法並びにプログラム
US7971044B2 (en) 2007-10-05 2011-06-28 Qualcomm Incorporated Link stack repair of erroneous speculative update
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 鸿富锦精密工业(深圳)有限公司 计算机程序除错系统及方法
US20090182985A1 (en) 2008-01-11 2009-07-16 International Business Machines Corporation Move Facility and Instructions Therefore
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
US8078792B2 (en) 2008-01-22 2011-12-13 Advanced Micro Devices, Inc. Separate page table base address for minivisor
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
US20100161950A1 (en) 2008-12-24 2010-06-24 Sun Microsystems, Inc. Semi-absolute branch instructions for efficient computers
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
US8103894B2 (en) 2009-04-24 2012-01-24 International Business Machines Corporation Power conservation in vertically-striped NUCA 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
US8428930B2 (en) 2009-09-18 2013-04-23 International Business Machines Corporation Page mapped spatially aware emulation of a computer instruction set
US9158566B2 (en) 2009-09-18 2015-10-13 International Business Machines Corporation Page mapped spatially aware emulation of computer instruction set
US8447583B2 (en) 2009-09-18 2013-05-21 International Business Machines Corporation Self initialized host cell 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 仮想アドレスキャッシュメモリ、プロセッサ及びマルチプロセッサシステム
US20110238962A1 (en) * 2010-03-23 2011-09-29 International Business Machines Corporation Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
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
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
EP2668565B1 (en) 2011-01-27 2019-11-06 Intel Corporation Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
WO2012103359A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
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
WO2014151691A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. Method and apparatus for guest return address stack emulation supporting speculation
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
CN104679480A (zh) 2013-11-27 2015-06-03 上海芯豪微电子有限公司 一种指令集转换系统和方法
US9477453B1 (en) 2015-06-24 2016-10-25 Intel Corporation Technologies for shadow stack manipulation for binary translation systems

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105659285A (zh) * 2013-08-08 2016-06-08 Arm有限公司 数据处理系统
CN105659285B (zh) * 2013-08-08 2019-04-12 Arm有限公司 数据处理系统、操作数据处理系统的方法和计算机可读介质
CN107077369A (zh) * 2014-07-25 2017-08-18 英特尔公司 使用多个转换表以实现指令集不可知的运行时架构
CN107077368A (zh) * 2014-07-25 2017-08-18 英特尔公司 用于指令集不可知的运行时架构的系统
CN107077368B (zh) * 2014-07-25 2020-09-29 英特尔公司 用于指令集不可知的运行时架构的系统
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US11354242B2 (en) 2017-05-05 2022-06-07 Samsung Electronics Co., Ltd. Efficient early ordering mechanism
TWI768039B (zh) * 2017-05-05 2022-06-21 南韓商三星電子股份有限公司 多處理器系統、資料管理方法及非暫時性電腦可讀媒體

Also Published As

Publication number Publication date
TWI512498B (zh) 2015-12-11
US10394563B2 (en) 2019-08-27
WO2012103359A2 (en) 2012-08-02
US20170235575A1 (en) 2017-08-17
WO2012103359A3 (en) 2012-09-20
US20170115991A1 (en) 2017-04-27
US20130024661A1 (en) 2013-01-24
US20170024212A1 (en) 2017-01-26
US11467839B2 (en) 2022-10-11
US20170068540A1 (en) 2017-03-09
US9733942B2 (en) 2017-08-15

Similar Documents

Publication Publication Date Title
TW201245976A (en) Hardware acceleration components for translating guest instructions to native instructions
TWI512465B (zh) 客戶至本機區塊位址映射與本機碼儲存之管理
TWI534706B (zh) 管理實體儲存器之可變快取結構
US10042643B2 (en) Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
US9921842B2 (en) Guest instruction block with near branching and far branching sequence construction to native instruction block
US10185567B2 (en) Multilevel conversion table cache for translating guest instructions to native instructions

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees