TW446916B - Computer instruction which generates multiple results of different data types to improve software emulation - Google Patents

Computer instruction which generates multiple results of different data types to improve software emulation Download PDF

Info

Publication number
TW446916B
TW446916B TW087118520A TW87118520A TW446916B TW 446916 B TW446916 B TW 446916B TW 087118520 A TW087118520 A TW 087118520A TW 87118520 A TW87118520 A TW 87118520A TW 446916 B TW446916 B TW 446916B
Authority
TW
Taiwan
Prior art keywords
register
instruction
format
software
value
Prior art date
Application number
TW087118520A
Other languages
English (en)
Inventor
David Wesley Trissel
Original Assignee
Motorola 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 Motorola Inc filed Critical Motorola Inc
Application granted granted Critical
Publication of TW446916B publication Critical patent/TW446916B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Description

44691 6 明説明ο) 參考先前申請案 t卜申請案為1997年 此 干W月1 5日之第0 8/ 9 9 0,7 8 0號美國專利 f 婧。 發明範脅 更特別的是與軟體模擬或 本發明一般來說與電腦有關 I譯軟體的執行有關。 ^ 發明背景 在電腦工業内’都將重點放在模擬技術和直譯式電腦語 言執打’以便在不同的硬體平台上執行軟體。使用模擬和 直譯語言執行的優點在於,一旦在單一硬體平台上編寫和 執行軟體’相同的軟體不需經過額外修正就能翰出至其他 硪艨平台。但是模擬和直譯語言執行需要介於使用者可執 抒被體碼與實際硬體之間的額外軟體層,以便達到硬體獨 负於使用者的軟體碼《此額外的軟體層通常為直接編譯使 用者軟體給特定硬體平台,及且直接在此硬體平台上執 行,而在其他電腦系統内未發規的模擬經常性耗闬時間。 雖然額外的軟體層在模擬結果内對於硬體差異有極大的相 容性’但還是可能導致使拐者秣體執行減缓。 電腦工業界内的目標在於降低此額外軟體層的效能衝 擊,藉此增加許多模擬器或直ϋ睪式語言機器(例如·
Java 'Smail talk和BASIC)的執行速度。為了降低模捷經 常性耗用時間,業界試圖生彥自訂硬體並且簡化軟體中介 層,藉以改善效能。因A ,存在對於可降低經常性耗用時 間的新模擬提取指令和解碼常式之需求,藉以改吾杈擬/
4469 1 6 五 '發明說明(2) 直譯的效能。 圖示簡單說明 從下列詳細說明並結合附圖内的數字參考,更可清楚了 解到本發明的特色和優點,其中: /圖1以方塊圖說明依照本發明使用之模擬器軟體架構; ./'圖2以方塊圖說明圖1軟體模擬器的特定軟體指令内容, 業界内熟知此軟體内容並且具有大量的模擬經常性耗用時 間; 、'圖3以方塊圖說明依照本發明降低模擬經常性耗用時間 ,可用來執行圖1的軟體棋擬器之改良式軟體指令内容; v圖4以方塊圖說明依照本發明產生軟體指令模擬常式的 向量位址之方法; .圖5以方塊圖說明依照本發明降低模擬經常性耗闬時間 ’可用來執行圖1的軟體模擬器之改良式軟體指令内容; .,圖6以方塊圖說明依照本發明降低模擬經常性耗用時間 ,可用來執行圖1的軟體模擬器之改良式軟體指令内容; ’圖7以方塊圖說明依照本發明,說明於圖6内用來執行軟 體的特定硬體:及 ..圖8以方塊圊說明内含圖7内顯示的特定硬體之一般用途 電月甾 感謝簡單扼要的說明I圖式内說明的元件並不需要依照 比例繪製。例如:為了清晰起見,某些元件的尺寸與其他 元件比較起來會比較誇大》進一步,考慮到適當性,圖式 内會重複標示參考數字,以指示對應或類似的元件。
44691 6 五、發明說明(3) 發明之詳細說明 一般來說,本發明為降低取得和解碼模擬器經常性耗周 時間,以及模擬器乐統的運算碼模擬執行經常性耗用時間 之方法和裝置。此處傳授的系統可用來執行任何形式的^ 擬器或直譯語言執行,以啟動任何電腦語言或Java、 Small Talk或BASIC電腦碼的執行之模擬β尤复β 使用新的電腦指令,此新的電腦指令處理指令'運"算子以彦 生許多儲存至多重暫存器的結果,其中每個暫存;包含$ 同資料形式内的結果。因為此指令(LGMDT)使用不同的 式提供結果或在上預先處理,因此模擬器常式内的 / 模擬指令數量便可降低,藉以讓模擬或直譯語言 :: 以較快的速率發生。此外,由於此㈣打指令,系b % 個模擬指=都會執行的取得和解碼模擬經常性耗用母 會降低,藉以進一步改善模擬效。 ,9 此處傳授的方法所萍;Γ夕竹Μ 厶驷釔果顯不,透過 、砰?又β万忐所獲仟之改善要大於等於丨〇%。 f考圖卜8會對於本發明有進一步的了解。圖" 态系統1 0的方塊圖,舲条站斤^ 权挺 行亩# ^ 一& '此①統依照本發明用來執行模擬或却 仃直澤5吾g執行。沒j择$姑^ n -又執 每心勺人… 許多部分/常式所組成, 兮個言包s —個或多個軟體指 伽一〜士 常式為設定碼1 !,I中攻定〜】^兄明一個S 貝部分/ 動iL硿# _ m λα "中 巧包含將暫存器初始化以啟 切此確軟體換擬的雷八 / 议 ^ Λ. S 7 °模擬系統1 0也包含一個跑4 和辟碼迴路1 2,此垴议会兄费^ 吧I 3 码取得 運智J ® β 路會反覆攸記憶體丨2 4取得指令槿舛 迷昇碼和運算子資料Γ &灸 %竹伯7供蚨 確的躲踩.5笞、4 (明/閱圖8 ),並且在指令上執行 飞w解碼運异,以僮於氺宁 使於决疋應執行哪個向量模擬常式。常
$ 6頁 4 4S9 \ 0 五 '發明說明(4) 式1 2所執行的「解碼」處理通常牽涉到表格向量位址的產 生’此位址會將模擬軟體執行流程路由至一個或多個表格 1 4内的模擬常式。 圖1說明查詢表14内許多向量模擬常式。圖1内的向量模 擬常式1 4特別說明五個模擬常式1 6 -24。但是這只是範 例’也可使用其他數量的模擬常式。圖1内的每個常式 16-24包含十六個32位元的資訊,因此當使用位元組階層 疋位法,第—個模擬常式會開始於圖1内的tablebase位 址’結束於TABLE BASE+ 63位址β第二模擬常式在圖1内標 示的起始位址為TABLEBASE + 64並且結束於進一步進入記憶 體陣列64個位元組(即是16個字)。若是64個位元組的空間 .不足以模擬特定指令,則必須在表袼丨4内的區塊末端處使 用分支或跳躍指令,以分支/跳躍至表格丨4以外的位置, 來完成特定指令的模擬。因為每個模擬常式(通常每個模 擬心々都存在一個常式)皆分配有6 4個位元組(即是丨6個 子)的空間來儲存模擬常式’所以每個模擬常式會開始於 位址TABLEBASE的64倍數之位址值。請注意到也可使同 位元組以外的表格大小。 圖1說明起始於位址TABLEADDRESS而結束於位iTABLE_ ADDRESS + 63的無運算(NOP)常式,並非所有常式提供的表 格空間都必須由個別常式使闬,藉以容忍某些浪費的空 間。圖1也說明B I p U S PI指令的位元組整數推進常式 (BIPUSH),BIPUSH 常式位於位址TA]BLEBAS£ + 64 X Ν ’ 此 β I P US Η常式2 0包含在模擬時執行位元組整數推進的雷腦指
第7頁 4469 1 6 五、發明說明(5) 令。圖1内的模擬POP常式22起始於位址丁ABLEBASE + 64 X Μ,並且包含用於pop記憶體内運算子堆疊的頂端文字0ff 。圖1内說明的最後一個模擬常式24起始於位址丁々61^-BASE + 64 X 255 »換言之,圖1特別說明在圖1的表格14内 有28 = 256個常式。在此256個常式的具體實施例内,單一 運具碼位元組(如同J a v a内所使用的)可獨一無二定位圖1 内2 5 6個常式的任一個。請注意到可使用任何數量的常 式’藉以使用此處傳授的方法來執行Java、pentium碼、 BASIC 'Smalltalk等任一個的模擬。 圖2說明可用來執行先前圖1内說明的許多功能之特定軟 體碼。例如:圖2說明用來執行圖1的設定碼丨丨之特定指 令’圖2也說明當成部份設定碼丨丨來執行的載入位址(LA) 指令,以便將組譯器決定的TABLEBASE位址複製到TABLE-BASE暫存Is ’而此中央處理單元(cpu)硬體暫存器則稱為 RTABLEBASE。除了此載入位址(la)指令以外,其他指令也 可當成圖2内的部份設定碼1 1來執行,將硬體系統準備好 可以模擬或直譯語言執行。 在設定瑪1 1的執行之後,會執行圖2的取得和解碼迴路 12 °圖2内的取得/解碼迴路丨2包含兩個名為” Fe1;ch "和 F e t c h 2的組譯器標籤’在執行電腦碼丨2時這兩個會以符 號说明位址。利用執行載入位元組零更新(LBZU )指令可開 始取得和解碼迴路裝置12的取得和解碼運算。此指令的執 行會從程式計數器暫存器(RPC),將一個運算碼載入稱為 R0PC0DE的CPU硬體暫存器。尤其是,在圖2迴路12内的第
44691 6 (6) 五、發明說明 一 LB2U指令會將整數一加入程式計數器暫存器(Rp〇 ,然 後使用此增加的位址來從記憶體存取運算碼,並且將運苜 碼儲存於ROPCODE暫存器内。ROPCODE暫存器值為三十二Z 元長的數值,可包含25 6個Java獨特值其中之—。此8位= 唯一運算碼數值用來當成存取圖2表格14内的特定模擬常 式之索引數值。因為表格14内的常式為十六字元(或六十 四位元)長度的記憶區塊,所以透過圖2内第一Ljgzu指令來 讀取的運算妈數值必須向左轉移6位元位置。為了執行此 索引轉移功能,可使用立即向左轉移字元(SWL丨)指令將 ROPCODE暫存器内儲存的數值向左轉移6位元位置,块 轉移結果回存入R0PC0DE β ^ ^ 然後使用一個ADD指令將儲存於r〇pc〇d£暫存器内,具有 TABLEBASE位址的轉移索引加至rtaBLEBASE暫存器内3此 RTABLEBASE暫存器數值和R0pC0DE暫存器數值的增加會 執打進入標示為RTEMP的暫時暫存器目的地内。此時RTEMp 數值包含表袼1 4内必須由糢擬器執行的特定模擬器指令之 位址,以便執行預期的電腦指令之正確模擬。 為了分支至表格14内特定模擬常式,便執行移動至計數 暫存器(MTCTR)指令,將RTEMp暫存器内儲存的位址移動至 cpu硬體架構内的計數暫存器(RCTR)。計數暫存器為中央 ^理單7L( CPU)或處理器架構的内部暫存器,此計數暫存 器相合至CPU的分支處理單元(βΡυ)。,然後緊跟在常式12内 MTCTR指令之後的連續分支計數暫存器(bctr)會導致模擬 备·式分支到儲存於計數暫存器的位址,將執行流程改變至 d46916 五、發明說明(7) 表格1 4内的常式。如圖2内的說明,取得解碼迴路1 2内的 最後一個指令為此BCTR指令,可讓表格14内的一個常式連 續執行。 在圖2常式12内之MTCTR指令和BCTR指令的執行之間,會 執行預先取得運算。利周執行接近與圖2内取得解碼迴路 12的結尾處之額外LBZU指令,便可執行預先取得運算。此 常式12内的第二LB2U指令利用一遞增程式計數暫存器 (RPC),然後存取來自於此遞增程式計數器暫存器上記憶 體的資料數值》在此時,程式無法確定透過此第二LBZU指 令存取的資料是模擬資料運算了,還是新模擬指令運算 碼。此預先取得指令内含什麼的決定由表格14内執行的代 碼來進行,在圖2常式12内BCTR指令的執行之後。 圖2特別說明原來說明於圖1内的三個模擬常式丨6、2 〇和 22。常式16為表格14内的第一個常式,並且由—個零的8 位元運算碼數值(例如〇〇()〇〇〇〇〇二進位)來存取。當運算碼 具有由ί»式12讀取全為零的數值’此零數值會轉移並且當 成索弓I加入TABLEBASE數值’藉以讓RTEMP暫存包含 TABLEBASE + G。若運算碼讀取等於零,常式12内bctR指令
的執行會導致表格14内常式16内軟體指令會在]^^指令的 執行之後執行=常式16會實行一個無運算(NQp)常式,如 此系統不會執行功能性運算,系統僅會拖延時間^因為常 式1 6未執行運算,所以常式;! 6僅包含回到圖2取得解碼迴 路12的分支。因為常式16 gN0P指令模擬常式並且因為⑽戸 指令無運算碼,所以常式16 了解到來自常式12内第二U2lJ
第10頁 d 469 1 6 五、發明說明(8) 々令的預先取得數值為一個運算碼益且無資料/運算碑。 這表示從透過常式12内第二LBZU指令存取的記憶體内預先 取得之數值為一個運算碼。因為此預先取得的數值為運算 碑’則常式16會分支到常式12内的標籤FETCH2,以便將預 先取得數值當成運算碼來處理。利用執行表格14内所有常 式末端上的FETCH2或FETCH分支,模擬器會執行取得和解 石馬運算的連續迴圈和執行,直到遇到軟體終結。 若是透過圖2内常式1 2讀取的運算碼為二進位數值N (例 如N = 〇ll〇ii〇〇二進位),則在常式12執行之後的rtemp數值 和計數暫存器會包含數值TABLEBASE + N X 64。因此,常式 1 2末端上的BCTR指令會導致執行流程的改變,如此便會執 行表格14常式20内的指令。在常式20内,第一指令為 OPCODE内容上執行的擴充符號位元組指令(ΕχΤδβ)。此運 算會在運算碼暫存器上執行,這是因為常式2〇 了解到,常 式1 2内第一 L B Z U指令獲付的預先取得數值必須代表一育料 數值,因為BIPUS Η指令為包含正確模擬所需的一個指令運 算碼之模擬指令。因為由常式20執行的BIPUSH運算需要一 個資料數值,而指令LBZU僅將無符號的8位元數值讀入3 2 位元空間,所以必須執行擴充符號位元組指令》 在擴充R0PC0DE暫存器内數值的符號之後,執行具更新 的儲存字元(STWU)指令。此指令首先利兩將Java堆疊指標 (RSP)減4,然後將R0PC0DE的32位元(4位元組)數值置入此 RSP位置,將R〇pc〇DE内的數值推入到Java運算碍堆4上。 在常式2 0内的代碼能夠正確處理堆疊後,分支會執行回常
4469 1 6 五、發明說明(9) 式12内的組譯器標籤FETCH。因為常式2〇具有來自常式12 ,用過/消耗過的預先取得位元組,並且現在必須以新的 得來開始常式12,所以常式2G的分支不會回到減 若由常式1 2讀取的運算碼等於Μ (例如丨丨2 〇 〇 π 〇二進 ^ ’則常式12末端上的RTEMP數值和計數暫存器將^等於 = ASE + M x 64。在此情況下,常式丨2末端的bctr指令 續表格14内常式22的執行流程。t式”在運算瑪 =上執仃POP運算^為了執行此pQp運算, 堆疊蝴RSP)執行載入位址(⑷指令 會將4加入運算碼堆疊指標(Rsp) 7 除—個字元。在當422 A# > 有效地從運算碼堆疊移 :? 丁此位址處理之後|因為來自 吊式12内苐二LBZU指令的預先取搭赵 ,二 而此時必須當成常式i 2内的運,匕含-個運异碼, 過常式丨2内第—LBZU指令取得:=理’不需要其他透 =並二執行”式12内的標藏二2所以… 因此,圊2說明以迴圏方式郜, 或多個運算碼和資料的特定4行二:己憶體獲/,-個 取的運算碼經過處理以引出適& °。吊式12 °透過书讀 令BCTR使用此向量喚起特定運:的軟體杈擬向量’分支指 模擬BCTR ’會適當執行表格"::的”常式:利同執行 式都會平均地將執行控制傳回2個別以,耢此所有常 法持續反H模擬/直譯,直到^的解瑪常式12。以此方 圖2可同來說明模擬和直課择二二' 為止。 ΰ舌執行上模擬經常性耗周
顯 4 469 1 6 五、發明說明(l〇) ' -------- ,影響。如同經常性耗用時間的範例,圖2内的常式 - /行?01:>運具。為了使闱模擬環境來執行此POP運算,需 要執行常式12内六個指令以及常式22的兩個指令,以面執 行模擬的POP運算。但是除了結合常式12和22内的八個指 令之外,這八個指令("LA RSP,4(RSP)"指令)只有i中一 個執行實際的POP運算,而八個指令的其他七個則執行成 為模擬經常性耗用時間的一部分。結果P〇P模擬經常性耗 用時間超過圖2處理的8 0 %。更進—步,因為每個需要模擬 的指令都會執行圖2内的常式12,所以常式η的任何經常 性耗用時間或大大衝擊模擬的總體效能,這是因為常式^ 2 會以迴圈方式持續重複執行。因此’利闬顯著降低每個模 擬指令所需的迴圈執行經常性耗用時間,則任何常式丨2相 令計數的降低都會大大衝擊模擬的總體效能。此外,若是 可調整取得和解碼迴路1 2 ’如此位於表格1 4常式1 6 - 2 2内 的代碼亦可最佳化’東降低指令而在模擬時能獲得較大的 效能改善。 透過圖3 - 7,使用圖1的架構可獲得此經常性耗闬時間和 效能降低。圖3說明一種新的取得和解碼迴路1 2 闬來替 代圖2内說明的兀矾技藝取得和解碼迴路1 2。圖3内的新式 取得和解碼迴路12’會要求,table BASE位址數值必須置於 記憶體圖内的1 6K位元紐多重位址上(例如32K、1 28K、 2 0 4 8K等等)》—旦設定此LM61( TABLEBASE數值,此處乙為 有限正整數,圖3的代碼可用來降低圖2取得和解碼迴硌工2 的經常性耗用時間。
第13頁 d469 1 6 五*發明說明(11) 利用執行先前討論過與圖2有關相同的L B Z U指令可開私 圊3内的代瑪。然而’圖3使用單一指令I N S R W I (代表r使 用文字立即數值從暫存器的左邊插入」)取代圖2的SWL: ADD指令。INSRWI指令的運算會進——步以圖形說明於圖$, 方塊圖内。 有 圖4說明置於16K記憶體邊界上的TABLEBASE數值,因為 這樣放置TABLEBASE數值,從位置0到位元位置1 7的最高 效位元(MSB)包含TABLEBASE數值r?j順序位元,而 TABLEBASE數值的低順序位元位置1 8到3 1具有一個原始、 進位數值0。INSRWI指令取得儲存於ROPCODE暫存器内^~ 算碼數值,並且用6轉移此數值。此6位元向左放置的 會將運算碼數值排入RTABLEBASE暫存器的位元位置丨8至> 2 5,如圖4内的說明。然後直接將此轉移過的運算碼數< 插入(不需要ADD指令)圖4的位元位置18至25,這此 於TABLEBASE數值的配置而為〇 --INSRWI指令具有指定數 8和6的指令運算碼’這表示在執行6位元位置的轉移運智 之後會將8位元插入RTABLEBASE内。因為這八個運算馬作 元會部分通入在RTABLEBASE基本位址内填滿二進位q邁持 數值的RTABLEBASE暫存器,而不增加需要執行的運算〜藉 以透過常式1 2將指令存入常式1 2,内。此外如圖4所示,= 低順序位元位置2 6至3 1仍舊為零=因為表格1 4包含長度^ 6 字元的常式,所以需要這些低順序0位元數值。因此利用 正確定位和調整丁ABLEBASE數值,可使用圖3内的單一指令 iNSRin來取代圖2的兩個指令SWLI和ADD。依照經驗顯示,
苐14頁 d46916 五、發明說明〔12) 此#式12’的簡化會比圖2内顯示的Java模擬器在效能方靣 改善1 0 %。 執行圖3的IMSR丨Π指令之後,RTABLEBASE内儲存的數值 會移動至計數暫存If(RCTR),並且執行預先取得運算LBZU ° MTCTR和LBZU這些指令與先前圖2探討的類似。在預先取 得LBZU運算的執行之後’會使用分支計數暫存器(BCTR)指 令’以持續位於表格1 4内常式1 6 - 2 4其中之一的模擬器執 行流程。 圖3和4的方法可獲得圖2先前技藝常式的改善,而圖5的 常式會獲得圖3内討論的常式以外之額外效能利益。圖5說 明比圖2或3内的說明更好之新式取得和解碼迴路1 2"。更 進一步,圖5的常式1 2u會讓位於表格1 4内的個別指令模擬 常式16-24有改善的利用效能。尤其是,由於圖5内取得解 碼迴路12"的改變,所以圖2的BI PUSH常式20會簡化成圖5 的BIPUSH 常式20"。 利用執行先前關於圖3所討論的L β Z U指令和I N S R W I指 令,可開始圖5的取得和解碼迴路1 2,_。因此,圖5的處理 具有先4圖3模擬方法所討論的全部優點。在執行圖5内這 兩個指令後,會使用表格1 4來執行包含模擬常式向量位址 的RTABLEBASE暂存器。透過MTCTR指令將RTABLEBASE内的 數值移動至計數暫存if(RCTR)可保留RTABLEBASE内的向量 位址=在執行MTCTR指令之後,會執行稱為「載入和產生 多重資料類型(LGMDT)」的新指令。一般來說,LGMDT為任 何可執行的電餾指令,可從記憶體載入翰入數值或像是來
第15頁 五,發明說明。3) -- 源,並且產生許多來自輸入數值的結果數值’ 1中 果數值具有不同的資料格式。LGMDT指令通常會將每彻固結 有不同資料格式的結果數值儲存到許多cpu暫存器内具 的暫存器,如此模擬器可在LGMDT指令執行之後使同 種資料格式。 尤其是,圖5内說明的“⑽了指令會用1遞增“以程 數器(RPC),然後從java程式計數器(Rpc)所指定的位^止^ 取一個位元組數值(即是8位元)。圖5内的lg M DT指令會a賣 從記憶體讀取的位元組數值當成資料運算碼,即使來自^ 憶趙的位元組數值實際上是資料運算碼也一樣。利用將7 元組數值看成資料運算碼,LGMDT指令會將讀取資料位_位 組轉換成3 2位元有符號和無符號資料數值,其中無符聲 料數值儲存於第一ROPCODE暫存器内(例如ROPCODE暫存心器貝 ,而有符號的資料數值儲存於第二ROPCODE暫存器(例如° R0PC0DE + 1暫存器)。在LGMDT指令的執行之後,會使用 β C T R指令改變表格1 4内常式之一的執行流程,如上述所^ 論的。 圊5特別透過BI PUSH指令的使用來說明LGMDT指令的優 點=圊5内的BI PUSH常式2 0"已經簡化過,這是因為常式 1 2‘’内缺少了 LGMDT指令。由於LGMDT指令的執行,先前就 已經存在常式20内的擴充符號位元組(如圊2内所示)可從 圖5的常式20"内移除。因為LGMDT指令提供供表格1 4使用 的有符號和無符號結果,所以允許此移除動作。此外’常 式20"内的STWU指令不再存取R0PC〇DE位置,如圖2内所示
苐16頁 4469 1 6 五、發明說明(14) ’但是會存取常式12π内LGMDT指令產生的有符號數值。暫 存器ROPCODE包含常式20"不需要的無符號數值,因此相較 之下’為了模擬ΒΙ PUSH指令,圖2内就需要九個指令,而 使用圖5的解決方案則僅需要七個指令就能模擬B丨PUSh指 令。 圖6說明比圖5内說明進一步的效能改善和經常性耗闬時
間降低。圖6‘說明一個擴充,比圖5内說明更複雜的LGMDT 指令。但是此改良的LGMDT指令可用來進一步簡化使用模 擬系統1 0來執行的模擬演算法。圖6内的LGMDT指令包含四 個指令運算碼,第一個運算碼為R〇PC〇DE暫存器目的,第 二個運异碼為使用Java程式計數器(RPC )取自記憶體的下 一個運算碍位址,第三個運算碼為讀自外部記憶體的運算 瑪内位元數量(例如本範例為8),*LGMDT指令的第四個運 算碼為向量產生前運算碼應轉移留下的位元位置數量(例 如本範例為6 ) s後重要的一點是,請注意LGMDT指令的運 算碼可利用硬體線路來減少,或將某些運算碼固定成特定 數值或放置於硬體内或LGMDT指令解碼處理内。例如:8的
位疋大小和6的剩餘轉移數值都能rhard —wired」KL(aiDT 指令内’藉此這些參數將無法程式規劃但是由指令的執行 來固定。 LGMDT指令會從外部記憶體讀取8位元數值,並且在三個 不同的内部CPU暫存器内產生三個結杲。圖6内LGMDT指令 產生的弟一數值為向量位址,與圖4内產生的一樣或類 似’ LGMDT指令產生的第二數值為無符號32位元運算碼/資 ΛΛ69 1 6 五、發明說明(15)
料數值’先前圖5已經討論過,圖6内LG MDT指令產生的苐 三數值為產生自運算碼,並且放置於内部R〇pc〇DE暫存器 之一的32位元有符號運算碼/資料數值。一般來說,來°自° LGMDT指令的向量位址會放置於R〇pc〇DE + 2暫存器内、有符 號的32位元運算碼/資料數值放置於R〇pc〇DE + 1暫存器内夂 而無符號的32位元運算碼/資料數值則放置於暫存 器内。已經此二個來自L ΰ M D T指令的結果之放置處,M 丁 c τ R 指令會將ROP CODE+ 2暫存器的内容移動至計數暫存器 (RCTR )。執行第二LGMDT指令允許任一新運算碼的預先取 得。B C T R心令允許位於表格1 4的常式其中之一繼續執行流 程。 、 "L ΐ式2 0 類似於圖5内 圖6特別說明BIPUSH運算20*,’ 相關讨論的。 圖6說明一POP運算22·’,。因為lGMDT指令有提供除了“ 位元有符號和無符號資料數值以外的向量計算,所以圖6 的常式22’*,便可回到MTCTR指令,而不像圖5和圖2說明的 分別回到INSRWI指令或SViLI指令。換言之,22,,,的常式 僅會回到更新計數暫存器(RCTR)的常式12,,,内之位置^ 上’並且在執行這類移動至計數暫存器之前並不需要執行 任何暫存器的預先處理。因此,在執行BIPUSH運算2〇,,, 時,圖6内使用的代碼會储存P〇p運算22,,,的執行内之— 個指令,並且比圖5内說明的還多儲存一個額外指令。本 質上來說,圖6使闬的代碼需要六個指令來執行B丨p ^ s H運 算,而圖2内的先前技藝則需要九個運算來能做相同的
1
^ 18 S 446916 五、發明說明(16) BIPUSH處理’這在BIPUSH常式内節省超過30%的指令使罔 率。在模擬封包或直譯語言系統的所有其他指令内也可見 到類似的節省。總結來說,此處導入許多新的指令,允許 代碼模擬和直譯語言執行内經常性耗用時間的降低,藉以 大量提昇電腦的效能。 圖7說明可同來執行圖6内說明的LGMDT指令之暫存器檔 案100和載入裝置101。暫存器擋案1〇〇顯示内含六個暫存 器:ROPCODE 102 'ROPCODE+丨 1〇4 、R〇PCODE+2 或 RTABLEBASE 106 、RSP 108 、RPC 11〇和RCTR 112 。中央處 理裝置(CPU)硬體RSP 108暫存器為運算碼「堆疊指標」, RPC 11 0暫存器為模擬「程式計數器」,而RCTR π 2暫存 器為使用分支裝置來執行分支運算的“^「計數暫存 器」。RSP 108和RPC 110暫存器允許載入裝置1〇ι讀取來 自緩衝和/或外部記憶體的資訊。 載入裝置1 0 1從記憶體讀取位元組以回應L G μ D 丁指令。此 位元組會平行提供至三個載入子裝置丨14、ι16和丨18。儘 管位元組數值為無符號運算碼,但零擴充裝置還是會將位 元組數值擴充為3 2位元热符號數值,然後此無符號運算石馬 會提供至ROPCODE暫存lsl〇2。位元組數值會使同符號擴充 裝置1 1 6來擴充符號=符號擴充裝置丨丨6會將位元組數值轉 換成32位元有符號數值,利用存取R〇pCODE+i暫存器1〇4 (此為數字比ROPCODE暫存器1〇2還大的暫存器)當成^符號 運算碼來使闬。圖了的向量位元處理器丨丨8會執行SWL丨和 ADD指令的轉移及增加運算,或執行圖4内討論的運算,將
第19頁 4469 1 6 五、發明說明(17) R丁ABLEBASE/R0PC0DE + 2和位元組數信絲^j 在歡低轉換成表格14内罔來 存取至少一個常式的尋找向量。 份14和常式12内的代瑀 吁存取三個暫存器其中任何一個,來扪代巧 勿政如士 求獲得需要的數值並且 心 暫存器102-106内所有其他不需要的數值。 圖8為說明—般周途電腦丨2〇的 e;tt ^ a /蚀产# 現圓,此電腦包含載入 Γΐ2^ί置1〇1和圖7内顯示的暫存器樓案1㈣。—般用途雪 中以有:個内含載入/儲存裝置101和暫存器檔案_的 ΐ'οΛ Λ^^'^51"122 ° 取二接至處理器122。記憶體124為柏當高速的機械可讀 Ϊ ^ =亚且包含揮發性記憶體’像是卯和SRAM ,以及应 Ϊ Ϊ Ϊ 記憶體,像是R〇M、FLASH、EPR〇M、EEPROM 和氣泡 邓铋=。—併連接至匯流排1 26的是次要儲存裝置1 30、外 σ像θ子裝置132、輸出裝置(像是監視器134)、輸入裝置 (3〇 $纟建盤(包含滑鼠)136)和印表機138。次要儲存裝置 ^包含機器可讀取媒介(像是硬碟機)、磁鼓和氣泡^ 二)\外。部健存裝置丨32包含機器可讀取的媒介(像是軟式磁 ' 可拆除式硬碟、磁帶、C D - R Ο Μ以及透過通訊線路連 接的其他電腦。此處第二儲存裝置丨3 〇和外部儲存裝置1 3 2 尤a的特徵圖以方便說明本發明為首要D就因為如此,豆 f^T, 、士 ι_ ^ = <裝置之間都會有相當多的功能性重叠。像是模擬 ^¾¾ 1 0 ^ 〇 zf tf ._ 的€腦軟體和使用者程式可儲存在電腦軟體儲存 1^3 'μ ^ Γ^Γΐ ^ ^ ’像是記憶體1 2 4、次要儲存裝置丨3 〇和外部健存裝 > 2 °從非揮發性儲存媒體(像是外部儲存裝置1 3 2、次 ^ A „ t展置1 30和非揮發性記憶體)可讀取可執行的電腦軟
苐20頁
4469 1 6 SE871I8520 年f阴年月1
B
WtL· 修正 五、發明說明(18) 體133版本’並且直接載入揮發性記憶體内執行,直接在 非揮發性記憶體外執行’或者在載入揮發性記憶體執行之 前存至次要儲存裝置13〇 ^ 雖然本發明參考特定具體實施例來描述和說明,但無意 將本發明限制於這些說明的具體實施例内。精通此領域的 人便可了解’在不悖離本發明的精神和領域時可進行修改 和變動。例如:此處傳授的LGMDT指令不僅可處理輸出8位 元數值’還可將任何大小(16位元、4位元、32位元、64位 元等等)的數值處理成不同的資料格式,以便儲存在個別 的暫存器内。此處使用的處理可用來產生任何有符號數 字、無符號數字、浮動點格式、不同整數格式、左或右判 別數字、轉移或旋轉數值、大en(jian數值、小endian數 值、ASCII輸出或任何其他數字格式,並列於任何其他用 來改善模擬效能或直譯語言執行的數字格式。在某些情況 下’常式12的代碼會置入表格14的常式内,以節省分支預 報和分支緩衝載入。因此,本發明最好包含位於審理中專 利範圍内的所有變動和修改。 元件符號說明 10 模擬系統 11 設定碼 12 取得和解碼迴路 16, 18,2〇, 24 模擬常式 100 暫存器檔 101 載入裝置 1 0 2, 1 04, 1 0 6, 1 08, 1 1 0, 1 1 2 暫存器
O:\55\55641.ptc 第21頁 2001.05.04.021

Claims (1)

  1. Λ469 1 6 修正 _索號 87118520 六、申請專利範圍 1. 一種可執行多重功能指令之處理器’包含: 多個暫存器;以及 一多重功能指令執行電路, 其中: 多重功能執行指令電路會將對應多個格式的多個 運算碼移至一般位置内的多個暫存器,以回應多重功能的 單一執行。 如申請專利範圍第1項之處理器,其中: —多個對應格式的第一種格式為一種在記憶體内以整數 編碼的無符號位元組格式;以及 一多個對應格式的第二種格式為一種在記憶體内以整數 編碼的有符號位元組格式 3. 如申請專利範圍第2項之處理器,其中: 一多個對應格式的第三種格式是由處理器所產生,處理 器利用將來自共同位置的固定數量位元插入多個對應暫存 器的第三種暫存器内之固定位置。 4. 如申請專利範圍第1項之處理器,其中: 一多個對應格式的第一種格式是由處理器所產生,處理 器利用將來自共同位置的固定數量位元插入多個對應暫存 器的第一種暫存器内之固定位置。 5. 如申請專利範圍第1項之處理器,其中: 多重功能指令會明確指定一多個對應暫存器的第一種暫 存器,並且暗示指定一多個對應暫存器的第二種暫存器。 6. _種電腦程式,儲存於一軟體儲存媒體上,在可執行
    O:\55\55641.ptc 第 1 頁 2001.05. 04.024 4 46 9 1 6 案號 87118520 t、申請專利範圍 多重功能指 該電腦程 儲存在 功能指令, 多重 個運算碼從 儲存在 一利 的第一種暫 碼指令;以 儲存在 —利 的第二種暫 碼指令。 7.如申請 電腦程式 8 . —種軟 具有多個暫 電腦軟體, 一包含多 多重功 同位置移至 一第二組 一利用 令並 式包 軟體 其中 功能 共同 軟體 用多 存器 及 軟體 用多 存器 且具 含: 儲存 指令 位置 儲存 個對 來當 儲存 個對 來當 專利範圍 為J a v a位 體儲存媒 存器並且 該電腦軟 重功能指 能指令會 多個對應 電腦軟體 多個對應
    修正 有多個暫存器的處理器上執行, 媒體上的第一組電腦指令,包含多重 格式内的多 的單一執行會將多 移至多個對應的暫 媒體上的第二組電 應格式第一種格式 成第一指令暫存器 媒體上的第三組電 應格式第二種格式 成第二指令暫存器 第6項之電腦程式: 元組代碼直譯器。 體,包含儲存在機 可執行多重功能指 體包含: 令的第一組電腦指 將多個對應格式内 的暫存器内; 包含: 格式第一種格式内 個對應 存器内 腦指令 内多個 運算碼 腦指令 内多個 運算碼 其中: 器可讀 令的處 令,其 的多個 包含: 對應暫存器 的第一運算 包含: 對應暫存器 的第二運算 取格式内供 理器執行之 中: 運算碼從共 多個對應暫存器的
    O:\55\55641.ptc 第2頁 2001.05. 04. 025 案號 87118520 B 修正 六'申請專利範圍 第一種暫存器來當成第一指令 指令;以及 一第三組電腦軟體包含: 一利用多個對應格式第 第二種暫存器來當成第二指令 指令。 9. 一種方法,在第一暫存器 包含 格内 存器,其 固定數量 定數量排 一暫存器 序固定數 大於或等 内入口之表格入口位址, 載入儲存於記憶體的表 存器;以及 將表格索引插入第一暫 表格索引包含一第一 將表格索引内第一固 定數量位元轉移剩下的第 一表格式位址内低順 低順序固定數量位元 固定數量的總和。 1 0 .如申請專利範圍第9 表格索引插入之後分支 址。 暫存器運算碼的第一運算碼 二格式内多個對應暫存器的 暫存器運算碼的第二運算碼 内形成儲存於記憶體的表格 ,具有表格式位址的第一暫 中: 排列的位元; 列的位元插入由第二固 t 量位元為零;以及 於第一固定數量和第二 項之方法,進一步包含: 至第一暫存器所指定的跳躍位
    O:\55\55641.ptc 第3頁 2001.05.04. 026
TW087118520A 1997-12-15 1998-11-06 Computer instruction which generates multiple results of different data types to improve software emulation TW446916B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/990,780 US6039765A (en) 1997-12-15 1997-12-15 Computer instruction which generates multiple results of different data types to improve software emulation

Publications (1)

Publication Number Publication Date
TW446916B true TW446916B (en) 2001-07-21

Family

ID=25536521

Family Applications (1)

Application Number Title Priority Date Filing Date
TW087118520A TW446916B (en) 1997-12-15 1998-11-06 Computer instruction which generates multiple results of different data types to improve software emulation

Country Status (8)

Country Link
US (1) US6039765A (zh)
EP (1) EP1040412B1 (zh)
JP (1) JP4088418B2 (zh)
KR (1) KR100601745B1 (zh)
AU (1) AU1998399A (zh)
DE (1) DE69830804T2 (zh)
TW (1) TW446916B (zh)
WO (1) WO1999031579A2 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6578193B1 (en) * 1998-03-24 2003-06-10 Novell, Inc. Endian-neutral loader for interpretive environment
US6295638B1 (en) * 1998-07-30 2001-09-25 International Business Machines Corporation Method and apparatus for loading native object code in data processing system
GB9822191D0 (en) * 1998-10-13 1998-12-02 Kubiczek Maciej High performance low cost microprocessor
US6550027B1 (en) * 2000-05-26 2003-04-15 Oak Technology, Inc. Method and article of manufacture for differentiating between a non-volatile memory device and an emulator for purposes of in-circuit programming
DE10196446T1 (de) * 2000-07-31 2003-08-28 Caterpillar Inc Verfahren und Vorrichtung für Emulationssoftware
GB2367654B (en) * 2000-10-05 2004-10-27 Advanced Risc Mach Ltd Storing stack operands in registers
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US6857063B2 (en) 2001-02-09 2005-02-15 Freescale Semiconductor, Inc. Data processor and method of operation
US20030018909A1 (en) * 2001-07-17 2003-01-23 International Business Machines Corporation Method and apparatus for enforcing security policies in Java applications
US7228266B1 (en) * 2003-12-05 2007-06-05 Unisys Corporation Instruction processor emulator having separate operand and op-code interfaces
US7394409B1 (en) * 2007-02-20 2008-07-01 International Business Machines Corporation Method of doing pack ASCII zSeries instructions
US7408484B1 (en) * 2007-02-20 2008-08-05 International Business Machines Corporation Method of doing PACK unicode zSeries instructions
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3982229A (en) * 1975-01-08 1976-09-21 Bell Telephone Laboratories, Incorporated Combinational logic arrangement
DE69125674T2 (de) * 1990-09-04 1997-10-23 Motorola Inc Automatische analog digital Convertierung mit auswählbaren Formatresultaten
EP0547240B1 (en) * 1991-07-08 2000-01-12 Seiko Epson Corporation Risc microprocessor architecture implementing fast trap and exception state
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
EP0574980B1 (en) * 1992-06-15 1999-06-09 Koninklijke Philips Electronics N.V. Time-discrete signal processor
AU6629894A (en) * 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5408622A (en) * 1993-09-23 1995-04-18 Apple Computer, Inc. Apparatus and method for emulation routine control transfer via host jump instruction creation and insertion
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5694565A (en) * 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5898885A (en) * 1997-03-31 1999-04-27 International Business Machines Corporation Method and system for executing a non-native stack-based instruction within a computer system

Also Published As

Publication number Publication date
DE69830804T2 (de) 2005-12-01
WO1999031579A2 (en) 1999-06-24
EP1040412B1 (en) 2005-07-06
US6039765A (en) 2000-03-21
KR100601745B1 (ko) 2006-07-19
AU1998399A (en) 1999-07-05
DE69830804D1 (de) 2005-08-11
JP2002508563A (ja) 2002-03-19
EP1040412A2 (en) 2000-10-04
KR20010040298A (ko) 2001-05-15
WO1999031579A3 (en) 1999-10-21
JP4088418B2 (ja) 2008-05-21

Similar Documents

Publication Publication Date Title
TWI279715B (en) Method, system and machine-readable medium of translating and executing binary of program code, and apparatus to process binaries
US9092215B2 (en) Mapping between registers used by multiple instruction sets
JPS59501684A (ja) 目的命令ストリ−ムへ殆んど実時間で插入するためのソ−スおよび目的命令ストリ−ムの外部における加速式命令写像
TW446916B (en) Computer instruction which generates multiple results of different data types to improve software emulation
US20010010072A1 (en) Instruction translator translating non-native instructions for a processor into native instructions therefor, instruction memory with such translator, and data processing apparatus using them
US7447871B2 (en) Data access program instruction encoding
TW201335845A (zh) 用於迴圈餘數遮罩指令之系統、裝置及方法
JP5869125B2 (ja) エントロピ符号化命令シーケンスの記憶および実行可能な形式への変換のための方法および装置
US20040230814A1 (en) Message digest instructions
CN116339828A (zh) 存储器复制指令、处理器、方法和系统
US8972701B2 (en) Setting zero bits in architectural register for storing destination operand of smaller size based on corresponding zero flag attached to renamed physical register
EP4189537A1 (en) Register addressing information for data transfer instruction
US8549266B2 (en) System and method of instruction modification
US6209082B1 (en) Apparatus and method for optimizing execution of push all/pop all instructions
JPH1049369A (ja) データ処理装置
JP2004086837A (ja) データ処理装置
JPH01503181A (ja) コンピュータ
TWI733718B (zh) 用於獲得偶數和奇數資料元素的系統、裝置及方法
Gür et al. FPGA implementation of 32-bit RISC-V processor with web-based assembler-disassembler
JP2007122626A (ja) マイクロプロセッサ
JPS623332A (ja) 情報処理装置
JPH02157939A (ja) 命令処理方法及び命令処理装置
CN118647971A (zh) 用于执行存储器存取操作的技术
CA1250666A (en) Central processing unit for a digital computer
JP2006268487A (ja) エミュレーション装置及びエミュレーション方法、並びに、エミュレーションプログラム

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent
MM4A Annulment or lapse of patent due to non-payment of fees