JP2011515750A - X86の仮想機をサポートするriscプロセッサ装置及び方法 - Google Patents
X86の仮想機をサポートするriscプロセッサ装置及び方法 Download PDFInfo
- Publication number
- JP2011515750A JP2011515750A JP2011500028A JP2011500028A JP2011515750A JP 2011515750 A JP2011515750 A JP 2011515750A JP 2011500028 A JP2011500028 A JP 2011500028A JP 2011500028 A JP2011500028 A JP 2011500028A JP 2011515750 A JP2011515750 A JP 2011515750A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- virtual machine
- address
- stack
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 145
- 238000007667 floating Methods 0.000 claims abstract description 169
- 230000008569 process Effects 0.000 claims abstract description 71
- 238000004088 simulation Methods 0.000 claims description 56
- 238000012545 processing Methods 0.000 claims description 54
- 238000006243 chemical reaction Methods 0.000 claims description 28
- 238000004364 calculation method Methods 0.000 claims description 22
- 230000008859 change Effects 0.000 claims description 13
- 238000003672 processing method Methods 0.000 claims description 12
- 238000013519 translation Methods 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 claims description 9
- 230000005856 abnormality Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 3
- JYPCXBJRLBHWME-IUCAKERBSA-N Gly-Pro-Arg Chemical compound NCC(=O)N1CCC[C@H]1C(=O)N[C@@H](CCCNC(N)=N)C(O)=O JYPCXBJRLBHWME-IUCAKERBSA-N 0.000 description 24
- 230000006870 function Effects 0.000 description 19
- 239000011159 matrix material Substances 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 101000667209 Homo sapiens Vacuolar protein sorting-associated protein 72 homolog Proteins 0.000 description 4
- 102100039098 Vacuolar protein sorting-associated protein 72 homolog Human genes 0.000 description 4
- AGOYDEPGAOXOCK-KCBOHYOISA-N clarithromycin Chemical compound O([C@@H]1[C@@H](C)C(=O)O[C@@H]([C@@]([C@H](O)[C@@H](C)C(=O)[C@H](C)C[C@](C)([C@H](O[C@H]2[C@@H]([C@H](C[C@@H](C)O2)N(C)C)O)[C@H]1C)OC)(C)O)CC)[C@H]1C[C@@](C)(OC)[C@@H](O)[C@H](C)O1 AGOYDEPGAOXOCK-KCBOHYOISA-N 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
Abstract
Description
前記の命令モジュールはX86の仮想機をサポートする仮想機の命令セットを保存することに使われる。
前記の浮動小数点演算部分はデコーダの出力に基づき、仮想機命令セットの浮動小数点命令を処理し、実行した結果を出力することに使われる。
前記のメモリーアクセス実行部分はデコーダの出力に基づき、データ通路によってレジスタとメモリーの間のデータ通信を行う。
前記のシミュレートフラグレジスタはX86のプロセッサのフラグレジスタのフラグビットを実現させるのをシミュレートすることに使われる。
前記の浮動小数点レジスタヒープは浮動小数点制御レジスタ、浮動小数点レジスタスタックおよび第一から第三までの浮動小数点レジスタを含む。
前記の命令処理モジュールは仮想機の命令セットの命令を命令デコードし、そして固定小数点演算部分または浮動小数点演算部分に出力することに使われる。
前記のモード識別モジュールは多数セーブデコードモジュール及び/または多数ロードデコードモジュールを含む。
前記のフラグビット命令デコードモジュールはEFLAGS稼動モードをシミュレートする作業モードであるEFLAGフラグビットに関連する命令を処理し、違うEFLAGフラグビットに関連する命令に基づき、シミュレートフラグレジスタをその命令のソースレジスタ及び/または目標レジスタにデコードすることに使われる。
プレフィックス命令の範囲のパラメータがnであるとき、デコーダはさらにプレフィックス命令カウンターを含む。プレフィックス命令カウンターはプレフィックス命令に影響され、かつシフト命令が存在しない命令シーケンスの命令数を記録することに使われ、該命令数は前記の範囲のパラメータと等しい。
前記のTOPポインタレジスタは浮動小数点スタックの操作ポインタをメンテナンスし、浮動小数点スタックのスタック操作ポインタの値を保存することに使われる。
前記のフラグ読み書きモジュールはシミュレートフラグレジスタのフラグビットの値を読み書きすることに使われる。
前記のポインタ操作モジュールは前記のTOPポインタレジスタを操作し、前記の浮動小数点レジスタスタック操作をシミュレートするとき、前記のスタック操作ポインタのスタック操作をシミュレートし、スタック操作ポインタの状態を変更かつ監視することに使われる。
図2に示されたように、本発明の目的を実現するため、さらにX86の仮想機をサポートするRISCプロセッサのデータ処理の方法を提供する。以下のようなステップを含む:
ステップA:RISCプロセッサの中においてRISCプロセッサの稼動モードをX86の仮想機稼動モードに設定する;
ステップB:命令を読み込み、命令の仮想機命令セットのモードを区別し、命令をデコードする間に、区別した命令の仮想機の命令セットのモードに基づき、区別された仮想機命令セットのモードによって命令をデコーディングした後出力する;
ステップC:前記の出力に基づき、対応する演算またはアクセス処理を行い、実行した結果を出力する。
前記のステップAは具体的に、
RISCプロセッサの中においてRISCプロセッサの稼動モードをX86の仮想機稼動モードに設定し、シミュレートフラグレジスタが使用できることと示すステップA1であり、
前記のステップBは具体的に、
デコーダは演算がEFLAGS稼動モードをシミュレートするモードであることを識別したとき、違う命令に基づき、シミュレートフラグレジスタをソースレジスタ及び/または目標レジスタにデコードするステップB1であり、
前記のステップCは具体的に、
RISCプロセッサが演算する間に、RISCプロセッサの稼動モードがX86の仮想機稼動モードであるとき、シミュレートフラグレジスタのフラグビットの値を読み込む/書き込むことによって演算状態を獲得/保存することを実現し、演算の結果から得られたシミュレートフラグレジスタのフラグビット、またはシミュレートフラグレジスタのフラグビットの1ビットまたは複数ビットに基づき、分岐ジャンプの命令を実行するステップC1である。
前記のステップAは具体的に、
スタックイネーブルビットに基づき、浮動小数点レジスタを選択して浮動小数点レジスタのスタック操作をシミュレートするかどうかを決め、あるいは一つの汎用レジスタを設置し、その低い順位の8ビットは高くなる順でそれぞれ浮動小数点レジスタスタックの0〜7のスタックレジスタの状態を示し、または三つの汎用レジスタを任意に選択し、第一浮動小数点レジスタ、第二浮動小数点レジスタと第三浮動小数点レジスタとして、64ビット浮動小数点数と80ビット浮動小数点数のフォーマットの変換作業に使用するステップA2であり、
前記のステップBは具体的に、
デコーダの中の3ビットのTOPポインタレジスタの中にスタック操作ポインタの値を保存し、または新たに増えたスタックオーバーフロー判断命令をデコードし、あるいは拡張倍精度浮動小数点データと倍精度浮動小数点データの変換命令をデコードするステップB2であり、
前記のステップCは具体的に、
浮動小数点レジスタスタック操作をシミュレートするとき、ポインタレジスタを操作してスタック操作ポインタのスタック操作をシミュレートし、スタック操作ポインタの状態を変更かつ監視し、または指定した浮動小数点レジスタスタックの中のスタックレジスタをチェックし、さらにスタックレジスタの値に基づきオーバーフローチェックレジスタを操作し、浮動小数点スタックオーバーフローのチェックを行い、あるいは拡張倍精度浮動小数点データと倍精度浮動小数点データとの間のデータ変換を実行するステップC2である。
前記のステップAは具体的に、
RISCプロセッサのX86の仮想機において、二つの汎用レジスタをそれぞれ上界、下界アドレスレジスタに設置するステップA3であり、
前記のステップBは具体的に、
X86の仮想機の命令セットからMIPS命令セットへの翻訳を行うとき、デコーダは命令をデコードし、RISCプロセッサで処理できる二進法コードが得られるステップB3であり、
前記のステップCは具体的に、
固定小数点演算部分はデコードした後のメモリーアクセス命令の中に、上界アドレスレジスタに保存された上界アドレスと/または下界アドレスレジスタに保存された下界アドレスに基づき、命令操作数アドレスと命令アドレスの有効性を判断し、命令操作数アドレスと命令アドレスの両方が有効であるときには、メモリーアクセス操作が実行され、そうでないときには、アドレスエラーの例外が発生する。
前記のステップAは具体的に、
プレフィックス命令を読み込み、命令の仮想機命令セットのモードを区別し、またはプロセッサが複数倍のデータ幅の命令を取り出してデコーダに入力し、あるいはX86の仮想機をサポートするRISCプロセッサが起動するとき、検索テーブルを初期化し、得られたX86の仮想機の命令アドレスからMIPS命令アドレスまでの内容を検索テーブルに書き込むステップA4であり、
前記のステップBは具体的に、
命令をデコードする間に、区別した命令の仮想機命令セットのモードに基づき、区別した仮想機命令セットのモードによって命令をデコードした後に出力し、またはデコーダが命令種類を判断し、複数倍のデータ幅の命令を識別かつデコードし、あるいはデコーダが検索テーブルに関係する命令を識別しデコードするステップB4であり、
前記のステップCは具体的に、
固定小数点演算部分はプレフィックス命令による影響された命令を実行し、さらに演算の結果に基づき対応するEFLAGフラグビットを計算し、またはデコードした複数倍のデータ幅の命令をメモリーアクセス実行部分に送って操作を実行し、あるいは検索テーブルに関連する命令を実行して、目標命令アドレスの値を獲得しまたは目標アドレスへジャンプさせて実行するステップC4である。
1. EFLAG命令が利用できること;
2.浮動小数点のフォーマットと浮動小数点スタックが利用できること;
3.保存構造が利用できること;
4.仮想のメカニズムが利用できること。
前記の浮動小数点演算部分4は、デコーダ2の出力に基づき、仮想機命令セットの浮動小数点命令を処理し、実行の結果を出力することに使われる。
前記のデコーダは、命令処理モジュール21、モード識別モジュール24、TOPポインタレジスタ22と検索テーブルモジュール23を含むのが好ましい。
前記のモード識別モジュール24は、多数セーブデコードモジュール244及び/または多数ロードデコードモジュール245を含む。
前記のフラグビット命令デコードモジュール243は、EFLAGS稼動モードをシミュレートしているEFLAGフラグビットに関連する命令を処理し、違うEFLAGフラグビットに関連する命令に基づき、シミュレートフラグレジスタ71をその命令のソースレジスタ及び/または目標レジスタにデコードすることに使われる。
前記の検索テーブルモジュール23は、検索テーブルに関連する命令に基づき、検索テーブルを利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われる。
前記のフラグ読み書きモジュール31は、シミュレートフラグレジスタ71のフラグビットの値を読み書きすることに使われる。
前記の仮想機モード制御レジスタ73は、一つの制御ビットフラグを含む。該制御ビットフラグが1になるときには当該の命令がX86の仮想機の命令セットモードで稼動していること、該制御ビットフラグが0になるときには当該の命令がX86の仮想機の命令セットモード以外で稼動していることと表す。
前記のポインタ操作モジュール41は、前記のTOPポインタレジスタを操作し、前記の浮動小数点レジスタスタック83の操作をシミュレートするとき、前記のスタック操作ポインタのスタック操作をシミュレートし、スタック操作ポインタの状態を変更し、かつ監視することに使われる。
前記の浮動小数点レジスタヒープ8は、浮動小数点制御レジスタ81、0〜7番の浮動小数点レジスタスタック83および第1〜3の浮動小数点レジスタ82を含む。
前記のメモリーアクセス実行部分5は、合併部分と上、下界判断モジュールを含む。
ステップA:RISCプロセッサにおいてRISCプロセッサの稼動モードをX86の仮想機稼動モードに設定する;
ステップB:命令を読み込み、命令の仮想機命令セットのモードを区別する;命令をデコードする間に、区別した命令の仮想機の命令セットのモードに基づき、同仮想機命令セットのモードで命令をデコーディングした後に出力する;
ステップC:前記の出力に基づき、対応する演算またはアクセス処理を行い、実行した結果を出力する。
前記のステップAは具体的に以下の通りである:
ステップA1:RISCプロセッサにおいてRISCプロセッサの稼動モードをX86の仮想機稼動モードに設定し、シミュレートフラグレジスタ71が使用できることを示す;
前記のステップBは具体的に以下の通りである:
ステップB1:デコーダは演算がEFLAGS稼動モードをシミュレートしていると識別し、違う命令に基づき、シミュレートフラグレジスタ71をソースレジスタ及び/または目標レジスタにデコードする;
前記のステップCは具体的に以下の通りである:
ステップC1:RISCプロセッサが演算する間に、RISCプロセッサの稼動モードがX86の仮想機稼動モードになるとき、シミュレートフラグレジスタ71のフラグビットの値を読み込む/書き込むことによって演算状態の獲得/保存を実現し、且つ/あるいはシミュレートフラグレジスタ71のフラグビットの値に基づき、制御が行われる。
前記のステップAは具体的に以下の通りである:
ステップA2:スタックイネーブルビットに基づき、浮動小数点レジスタを選択して浮動小数点レジスタのスタック83の操作をシミュレートするかどうかを決める;あるいは一つの汎用レジスタを設置し、その低い順位の8ビットは高くなる順でそれぞれ浮動小数点レジスタスタック83の0〜7のスタックレジスタの状態を示す;または三つの汎用レジスタを任意に選択して第一から第三浮動小数点レジスタ82とし、64ビット浮動小数点数と80ビット浮動小数点数のフォーマットの変換作業に使用する;
前記のステップBは具体的に以下の通りである:
ステップB2:デコーダの中の3ビットのTOPポインタレジスタの中にスタック操作ポインタの値を保存する;または新たに増えたスタックオーバーフロー判断命令をデコードする;あるいは拡張倍精度浮動小数点データと倍精度浮動小数点データの変換命令をデコードする;
前記のステップCは具体的に以下の通りである:
ステップC2:浮動小数点レジスタスタック83操作をシミュレートするとき、ポインタレジスタを操作し、スタック操作ポインタのスタック操作をシミュレートし、スタック操作ポインタの状態を変更、監視する;または指定した浮動小数点レジスタスタック83の中のスタックレジスタをチェックし、さらにスタックレジスタの値に基づきオーバーフローチェックレジスタ72を操作し、浮動小数点スタックオーバーフローのチェックを行う;あるいは拡張倍精度浮動小数点データと倍精度浮動小数点データの間のデータ変換が実行される。
前記のステップAは具体的に以下の通りである:
ステップA3:RISCプロセッサのX86の仮想機において、二つの汎用レジスタをそれぞれ上界、下界アドレスレジスタ74として設置する;
前記のステップBは具体的に以下の通りである:
ステップB3:X86の仮想機の命令セットからMIPS命令セットへの翻訳の際に、デコーダは命令をデコードし、RISCプロセッサで処理できる二進法コードが得られる;
前記のステップCは具体的に以下の通りである:
ステップC3:固定小数点演算部分は、デコードされた後のメモリーアクセス命令において、上界アドレスレジスタに保存された上界アドレス及び/または下界アドレスレジスタに保存された下界アドレスに基づき、命令操作数アドレスと命令アドレスの有効性を判断する;命令操作数アドレスと命令アドレスの両方が有効となるとき、メモリーアクセス操作が実行される;そうしないと、アドレスエラー例外が発生する。
前記のステップAは具体的に以下の通りである:
ステップA4:プレフィックス命令を読み込み、命令の仮想機命令セットのモードを区別する;またはプロセッサが複数倍のデータ幅の命令を取り出してデコーダに入力する; RISCプロセッサのX86の仮想機が起動するとき、検索テーブルを初期化し、得られたX86の仮想機の命令アドレスからMIPS命令アドレスまでの内容を検索テーブルに書き込む;
前記のステップBは具体的に以下の通りである:
ステップB4:命令をデコードする間に、区別された命令の仮想機命令セットのモードに基づき、同仮想機命令セットのモードで命令をデコードした後に出力する;またはデコーダが命令種類を判断し、複数倍のデータ幅の命令を識別してデコードする;あるいはデコーダが検索テーブルの相関命令を識別する;
前記のステップCは具体的に以下の通りである:
ステップC4:固定小数点演算部分は、プレフィックス命令によって影響された命令を実行し、さらに演算の結果に基づき対応するEFLAGフラグビットを計算する;またはデコードした複数倍のデータ幅の命令をメモリーアクセス実行部分に送ってその操作を実行する;あるいは検索テーブルの相関命令を実行して、目標命令アドレスの値を獲得し、または目標アドレスへジャンプさせて実行する。
ステップ110:RISCプロセッサにおいてRISCプロセッサの稼動モードをX86の仮想機稼動モードに設定し、即ちシミュレートフラグレジスタ71が使用できることをし、デコーダ2は演算がRISCプロセッサのX86の仮想機稼動モード、即ちEFLAGS稼動をシミュレートするモードであると識別し、そして違う命令に基づき、シミュレートフラグレジスタ71をソースレジスタ及び/または目標レジスタにデコードする;
シミュレートフラグレジスタ(M-EFLAGS)がX86の命令セットのフラグレジスタ(EFLAGS)のフラグビットを擬似的に実現し、該レジスタの低い順位の6ビットは高くなる順でそれぞれCFビット、PFビット、AFビット、ZFビット、SFビットとOFビットを表す。
この命令は、該命令の直後の命令がEFLAGS稼動モードをシミュレートしていることを表す。
正常のMIPS命令:
ADD $5,$1,$2
1番汎用レジスタと2番汎用レジスタの中の値を加算し、その結果を5番汎用レジスタの中に保存することを表す。
SETFLAG
ADD $5,$1,$2
この命令は、1番汎用レジスタと2番汎用レジスタの中の値を加算し、演算結果は保存しないが、結果に基づいてシミュレートフラグレジスタの中のフラグビットの当該ビットを修正することを表す。
デコーダ2の入力セットはすべての可能な32ビットコードであり、すべての合法命令と非法命令を含む。この方式では、デコーダ2が新たな一つの合法入力を増やした:SETFLAG。この命令は、該命令の直後の命令がRISCプロセッサのX86の仮想機稼動モードであり、即ちEFLAGS稼動モードをシミュレートしていることを表す。
X86ADD $5,$1,$2 は
SETFLAG
ADD $5,$1,$2 に
相当する。
ステップ121:RISCプロセッサがX86の仮想機の稼動モードである場合、1ビット又は複数ビットのシミュレートフラグレジスタのフラグビットの値を抽出し、その中の8ビットのマスク(mask)の値に基づいて、シミュレートフラグレジスタのフラグビットの値の1ビット或いは複数ビットを抽出することが制御される。抽出されたシミュレートフラグレジスタ71のフラグビットの値を目標レジスタの中に保存する。
GPR[rt]←M-EFLAGS & mask
たとえば、マスク(mask)の値は0x00000100として、シミュレートフラグレジスタ(M-EFLAGS)の第2ビット、即ちAFビットの内容を抽出し、目標レジスタGPR[rt]の中に入れる。
M-EFLAGS & mask←GPR[rs]
たとえば、GPR[rs]の低い順番の8ビットの内容は0x00010010として、マスク(mask)の値は0x00110011として、この命令は該シミュレートフラグレジスタ(M-EFLAGS)の中のCF、PF、SFとOFビットを修正し、この4ビットをそれぞれ0、1、1と0に設定させる。
ステップ121。艨F演算の結果に基づいてシミュレートフラグレジスタ(M-EFLAG)のフラグビットが得られる。
X86ADD / EFLAGSビットの32ビットの加算だけに影響する
命令のフォーマットは:X86ADD rs, rt
命令はGPR[rs]レジスタの中の32ビットの整数とGPR[rt]レジスタの中の32ビットの整数を加算して、32ビットの結果が得られる。この結果を保存せず、結果に基づきシミュレートフラグレジスタ(M-EFLAGS)のOF/SF/ZF/AF/PFビットを修正するだけである。
ステップ122。シミュレートフラグレジスタ(M-EFLAG)のフラグビット中の1ビット又は複数ビットに基づいて分岐ジャンプの命令を実行する
たとえば、X86J M-EFLAGSの条件遷移
命令のフォーマットは:X86J.fmt offset
X86J命令は、EFLAGSの中の何ビットを比較し、対応の条件に基づいてプロセッサと関連するジャンプを行う。
MIPS64命令セットの32ビット命令コードの高い順位の6ビット(31ビット:26ビット)はopcode領域となる。その中のSPECIAL2(opcodeは011100となる)の命令スロットは、MIPSのルールによってユーザが自分で定義してもよいものである。本発明の実施例の新たに増えた命令はすべて既存したMIPS64命令セットの中に保留したSPECIAL2の空スロットの値で実現された。
前記の第二浮動小数点レジスタは、拡張倍精度浮動小数点データの仮数部分を保存することに使われ、全部で64ビットである。
プロセッサがX86の仮想機をサポートするデータ処理のプロセスは、X86の浮動小数点のフォーマットと浮動小数点スタックに対するサポートである場合、X86の仮想機をサポートするRISCプロセッサのデータ処理方法の流れは以下のステップを含む。
ステップ211:メモリーの中の80ビットの拡張倍精度浮動小数点データを符号ビット部分とランク部分および仮数部分にわける。
ステップ213:浮動小数点レジスタ$f(j)の中に80ビットの拡張倍精度浮動小数点データの仮数部分を保存し、全部で64ビットである。
CVT.D.LD $f(t), $f(i), $f(j)//*拡張倍精度を倍精度に変換する (1)
MIPS64の命令セットの32ビット命令コードの高い順位の6ビット(31ビット:26ビット)はopcode領域となる。その中のSPECIAL2(opcodeは011100となる)の命令スロットはMIPSのルールによってユーザが自分で定義してもよいものである。本発明の実施例では、既存するMIPS64命令セットの中に保留したSPECIAL2の空スロットの値を利用し、それを定義する。
出力された64ビットのデータを浮動小数点レジスタ$f(t)の中に保存し、64ビットの倍精度浮動小数点データが得られる。
ステップ221:一つの64ビットの倍精度浮動小数点データを浮動小数点レジスタ$f(t)の中に保存する。
CVT.UD.D $f(i), $f(t) //*倍精度を拡張倍精度の高位に変換する (2)
浮動小数点レジスタ$f(t)で示した倍精度データを拡張倍精度データの高い順位の16ビットに変換し、浮動小数点レジスタ$f(i)の中に保存する。
一つの実施可能な方式として、前記の変換は命令(3)によって実行されてもよい。
CVT.LD.D $f(j), $f(t) //*倍精度を拡張倍精度の低位に変換する (3)
浮動小数点レジスタ$f(t)で示した倍精度データを拡張倍精度データの低い順位の64ビットに変換し、浮動小数点レジスタ$f(j)の中に保存する。
ステップ224:浮動小数点レジスタ$f(i)の値を符号ビットとランクとして、浮動小数点レジスタ$f(j)の値を仮数として、80ビットの拡張倍精度浮動小数点データが得られる。
ステップ2100:スタックイネーブルビットに基づいて、八つの浮動小数点レジスタを選択して浮動小数点レジスタスタックの中の八つのスタックレジスタをシミュレートし、浮動小数点レジスタのスタック操作をシミュレートし、さらにポインタレジスタを設置するかどうかを決める。
ステップ2110:浮動小数点制御レジスタ81の中に1ビットを浮動小数点スタックイネーブルビットとする;イネーブルビットを1に設定する場合、X86のプロセッサの浮動小数点スタックをシミュレートし、浮動小数点スタック操作が行われることが表される;イネーブルビットを0に設定する場合、X86のプロセッサの浮動小数点スタックをシミュレートせず、浮動小数点スタック操作ができず、通常通りの流れで処理が行われることが表される。
該TOPポインタの値は、読み込まれること、書き込まれること、1増加すること、1減少すること等が可能であり、TOPポインタの範囲は0〜7である。
もしレジスタ$f(i):i>7であれば、変更しなくてもよく、直接浮動小数点レジスタ$f(i)を使用する。
ステップ2210:スタック操作モードを設置し、浮動小数点スタックイネーブルビットを1に設定し、ユーザが浮動小数点レジスタスタックをシミュレートして浮動小数点スタックを操作することを許容する。
その命令フォーマット:SETTM
本発明のメモリーアクセス拡張命令は、MIPS命令セットにおけるSPECIAL2の空スロットの保留した値で、拡張命令を定義する。
これはX86の浮動小数点スタックモードをクリアすることで、ユーザがX86の浮動小数点スタックを使用することを禁止し、MIPSプロセッサの浮動小数点レジスタを使用して浮動小数点操作を行わなければならない。
ステップ2230:スタック操作ポインタの値が1増加し、即ちTOPポインタの値が1増加する;
一つの実施可能な方式として、本発明の実施例では、スタックポインタの値が1増加し、即ちTOPポインタの値が1増加する命令フォーマット:INCTOP
ステップ2240:スタック操作ポインタの値が1減少し、即ちTOPポインタの値が1減少する;
一つの実施可能な方式として、本発明の実施例ではスタックポインタの値が1減少し、即ちTOPポインタの値が1減少する命令フォーマット:DECTOP
該TOPポインタの値が1増加する命令、1減少する命令は、それぞれX86のプロセッサの浮動小数点スタックのスタックプッシュ、スタックポップをシミュレートすることができる。
一つの実施可能な方式として、本発明の実施例ではTOPポインタの値を読み出す操作命令のフォーマット:MFTOP rd
その命令の機能はX86の浮動小数点スタックTOPポインタの値をレジスタGPR[rd]に読み込むことである。
一つの実施可能な方式として、本発明の実施例ではTOPポインタの値を書き込む操作命令のフォーマット:MTTOP imm
その命令の機能はX86の浮動小数点スタックTOPポインタに3ビットの即値immを書き込むことである。
本発明のX86の仮想機をサポートするRISCプロセッサが浮動小数点スタックの操作をシミュレートする流れをさらに理解するために、加法演算におけるスタックポインタ操作を例として以下に説明する。
X86の浮動小数点スタック操作のシミュレートが活性化され、即ちイネーブルビットを1にする;
$f(6)の代わりに$f(0)を使う; // 6+2 mod 8 =0
$f(1)の代わりに$f(3)を使う; // 1+2 mod 8 =3
$f(9)は変換しない;// 9>7のため、変換する必要がなく、直接レジスタ$f(9)を使用する
最終的に実際演算が行われた式:add.s $f(0), $f(3), $f(9)
このときスタックプッシュとスタックポップ操作がないため、TOP値は変化しない。
本発明の実施例のRISCプロセッサにおいて、前記のオーバーフローチェックレジスタ72は、X86の浮動小数点フラグレジスタ中のTAG機能を実現し、浮動小数点レジスタスタック83中のスタックレジスタに浮動小数点アクセスするときスタックオーバーフロー例外が発生するかどうかをチェックすることに使われる。オーバーフローチェックレジスタ72は、少なくとも8ビットの複数ビットレジスタであり、TAGビット即ちオーバーフローチェック機能ビットを表し、それぞれ浮動小数点レジスタスタック83のスタックレジスタ0〜7番の状態を表す。
ステップ21000:指定された浮動小数点レジスタスタック中のスタックレジスタをチェックし、スタックレジスタの値に基づきオーバーフローチェックレジスタ72を操作し、浮動小数点スタックオーバーフローのチェックを行う。
ステップ21100:浮動小数点レジスタスタック中の指定したスタックレジスタが空であるかどうかをチェックする。空である場合には、指定したオーバーフローチェックレジスタ72のTAGビットの対応ビットを1にし、次のステップに進む;空でない場合には、浮動小数点スタックオーバーフロー例外が発生する。
0である場合、スタックTOPのスタックレジスタに対応したオーバーフローチェックレジスタ72の対応するTAGビットを1にし、データを該スタックレジスタに書き込み、そして終わって戻る;
0でない場合、スタックオーバーフロー例外が発生する。
オーバーフローチェックレジスタr(3)の第5ビット、即ちbit r(3)_4が0であるかどうかを判断する;
0である場合、オーバーフローチェックレジスタのbit r(3)_4を1にし、データをスタックプッシュし、スタックレジスタf(5)に保存する;
1である場合、スタックオーバーフロー例外が発生する。
オーバーフローチェックレジスタr(3)の第5ビット、即ちbit r(3)_4が1であるかどうかを判断する;
1である場合、オーバーフローチェックレジスタのbit r(3)_4をクリアし、データをスタックポップし、指定した浮動小数点レジスタに保存する;
0である場合、スタックオーバーフロー例外が発生する。
オーバーフローチェックレジスタr(3)の第4ビット、即ちbit r(3)_3が1であるかどうかを判断する;
0である場合、スタックオーバーフロー例外が発生する;
1である場合、次のステップに進む;
オーバーフローチェックレジスタr(3)の第5ビット、即ちbit r(3)_4が1であるかどうかを判断する;
1である場合、次のステップに進む;
0である場合、スタックオーバーフロー例外が発生する。
スタックTOPがスタックレジスタf(5)にあれば、オーバーフローチェックレジスタr(3)の第5ビット、即ちbit r(3)_4が1であるかどうかを判断する;
0である場合、スタックオーバーフロー例外が発生する;
1である場合、次のステップに進む;
オーバーフローチェックレジスタr(3)の第4ビット、即ちbit r(3)_3が1であるかどうかを判断する;
0である場合、スタックオーバーフロー例外が発生する;
1である場合、次のステップに進む;
オーバーフローチェックレジスタr(3)の第5ビット、即ちbit r(3)_4をクリアし、次の演算操作に進む。
オーバーフローチェックレジスタr(3)の第4ビット、即ちbit r(3)_3が1であるかどうかを判断する;
0である場合、スタックオーバーフロー例外が発生する;
1である場合、オーバーフローチェックレジスタr(3)の第4ビット、即ちbit r(3)_3をクリアし、次のステップに進む;
オーバーフローチェックレジスタr(3)の第5ビット、即ちbit r(3)_4が1であるかどうかを判断する;
1である場合、オーバーフローチェックレジスタr(3)の第5ビット、即ちbit r(3)_4をクリアし、次の演算操作に進む;
0である場合、スタックオーバーフロー例外が発生する。
前記の上界、下界判断モジュールは、メモリーアクセス命令において、上界アドレスレジスタ中に保存された上界アドレス及び/または下界アドレスレジスタ中に保存された下界アドレスに基づいて命令操作データアドレスの有効性を判断する。
その中、8個の固定小数点命令と4個の浮動小数点命令を含む12個のload命令は、アドレッシング方式がすべてbase方式である。
gsLBLE rt, base, bound
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーの例外が発生する;そうでない場合は、この有効アドレスに基づいてメモリーの中から8ビットのバイトデータを取り出し、このデータについて符号ビットの拡張を行った後に、同データをGPR[rt]に保存する。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合、アドレスエラーの例外が発生する;そうでない場合は、この有効アドレスに基づいてメモリーの中から8ビットのバイトデータを取り出し、このデータについて符号ビットの拡張を行った後に、同データをGPR[rt]に保存する。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から16ビットのハーフワードデータを取り出し、このデータについて符号ビットの拡張を行った後に、同データをGPR[rt]に保存する。
前記の有効アドレスが整列し、1ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合は、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から16ビットのハーフワードデータを取り出し、このデータについて符号ビットの拡張を行った後に、同データをGPR[rt]に保存する。
前記の有効アドレスが整列し、1ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から32ビットのワードデータを取り出し、このデータについて符号ビットの拡張を行った後に、同データをGPR[rt]に保存する。
前記の有効アドレスが整列し、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から32ビットのワードデータを取り出し、このデータについて符号ビットの拡張を行った後に、同データをGPR[rt]に保存する。
前記の有効アドレスが整列し、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から64ビットのダブルワードデータを取り出し、GPR[rt]に保存する。
gsLDGT rt, base, bound
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から64ビットのダブルワードデータを取り出し、GPR[rt]に保存する。
gsLWLEC1 ft, base, bound
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から32ビットのデータを取り出し、FPR[ft]の低い32ビットに保存する。
gsLWGTC1 ft, base, bound
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から32ビットのデータを取り出し、FPR[ft]の低い32ビットに保存する。
gsLDLEC1 ft, base, bound
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から64ビットのデータを取り出し、FPR[ft]に保存する。
前記の有効アドレスが整列し、3ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から64ビットのデータを取り出し、FPR[ft]に保存する。
前記の有効アドレスが整列し、3ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
これらの命令は、それぞれに上界条件つきのバイト保存、下界条件つきのバイト保存、上界条件つきのハーフワード保存、下界条件つきのハーフワード保存、上界条件つきのワード保存、下界条件つきのワード保存、上界条件つきのダブルワード保存、下界条件つきのダブルワード保存、上界条件つきの単精度浮動小数点数保存、下界条件つきの単精度浮動小数点数保存、上界条件つきの倍精度浮動小数点数保存、下界条件つきの倍精度浮動小数点数保存命令中の一種類または一種類以上の組み合わせである。
gsSBLE rt, base, bound
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容より大きい場合アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの有効アドレスにGPR[rt]中の8ビットのバイトデータ内容を保存する。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの有効アドレスにGPR[rt]中の8ビットのバイトデータ内容を保存する。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーが発生する例外が発生する;そうでない場合は、メモリー中のこの整列した有効アドレスにGPR[rt]中の16ビットのハーフワードデータ内容を保存する。
gsSHGT rt, base, bound
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの整列した有効アドレスにGPR[rt]中の16ビットのハーフワードデータ内容を保存する。
前記の有効アドレスが整列し、1ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの整列した有効アドレスにGPR[rt]中の32ビットのワードデータ内容を保存する。
前記の有効アドレスが整列し、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの整列した有効アドレスにGPR[rt]中の32ビットのワードデータ内容を保存する。
前記の有効アドレスが整列し、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの整列した有効アドレスにGPR[rt]中の64ビットのダブルワードデータ内容を保存する。
前記の有効アドレスが整列し、3ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの整列した有効アドレスにGPR[rt]中の64ビットのダブルワードデータ内容を保存する。
前記の有効アドレスが整列し、3ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの整列した有効アドレスにFPR[ft]中の低い32ビットのワードデータ内容を保存する。
前記の有効アドレスが整列し、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの整列した有効アドレスにFPR[ft]中の低い32ビットのワードデータ内容を保存する。
前記の有効アドレスが整列し、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの整列した有効アドレスにFPR[ft]中の64ビットのダブルワードデータ内容を保存する。
前記の有効アドレスが整列し、3ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの整列した有効アドレスにFPR[ft]中の64ビットのダブルワードデータ内容を保存する。
前記の有効アドレスが整列し、3ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
gsLE rs,rt
レジスタ中の値を比較し、アドレスエラーの例外が発生する条件を設置する。
レジスタ中の値を比較し、アドレスエラーの例外が発生する条件を設置する。
汎用レジスタGPR[rs]と汎用レジスタGPR[rt]中の値を比較し、GPR[rs]中の値がGPR[rt]中の値より大きい場合、次の命令が実行される; GPR[rs]中の値がGPR[rt]中の値以下である場合は、adelの例外が発生する。
ステップ31:X86の仮想機をサポートするRISCプロセッサにおいて、物理レジスタヒープ中の二つの汎用レジスタをそれぞれ上界、下界アドレスレジスタ74と設置する
その中、上界アドレスレジスタは上界とした有効アドレスを保存する;下界アドレスレジスタは下界とした有効アドレスを保存する。
ステップ33:固定小数点演算部分3は、デコードした後のメモリーアクセス命令において、上界アドレスレジスタに保存された上界アドレス及び/または下界アドレスレジスタに保存された下界アドレスに基づき、命令操作数アドレスの有効性を判断する。
ステップ331:命令デコードした後、レジスタ中のアドレス限界は命令の一つのレジスタ操作データとして機能し、操作内容データがbase方式に基づいて有効なアドレスを形成する;
ステップ332:該有効アドレスがまずレジスタ中のアドレス限界と比較する;
ステップ333:命令のセマンティック条件を満たした場合、即ちレジスタが上界アドレスレジスタである場合、該有効アドレスがレジスタ中のアドレス限界以下であり、また、レジスタが下界アドレスレジスタであり、該有効アドレスがレジスタ中のアドレス限界以上である場合、正常なメモリーアクセス操作が行われる;そうでない場合は、アドレスエラーの例外が発生するとなる。
上界条件つきのバイトロード命令である場合は、まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合、アドレスエラーの例外が発生する;そうでない場合は、この有効アドレスに基づいてメモリーの中から8ビットのバイトデータを取り出し、このデータについて符号ビットの拡張を行った後に同データをGPR[rt]に保存し、即ちgsLBLE rt, base, boundである。
前記の有効アドレスが整列し、1ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
前記の有効アドレスが整列し、1ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
前記の有効アドレスが整列しており、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
前記の有効アドレスが整列し、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
下界条件つきのダブルワードロード命令である場合は、まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合は、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から64ビットのダブルワードデータを取り出し、GPR[rt]に保存し、即ちgsLDGT rt, base, boundである。
上界条件つきの単精度浮動小数点数ロード命令である場合は、まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合は、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から32ビットのデータを取り出し、FPR[ft]の低い32ビットに保存し、即ちgsLWLEC1 ft, base, boundである。
下界条件つきの単精度浮動小数点数ロード命令である場合は、まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下であれば、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から32ビットのデータを取り出し、FPR[ft]の低い32ビットに保存し、即ちgsLWGTC1 ft, base, boundである。
前記の有効アドレスが整列し、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
下界条件つきの倍精度浮動小数点数ロード命令である場合は、まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合は、アドレスエラーの例外が発生する;そうでない場合は、この整列した有効アドレスに基づいてメモリーの中から64ビットのデータを取り出し、FPR[ft]に保存し、即ちgsLDGTC1 ft, base, boundである。
前記のステップ333において、保存操作データ(store)命令操作は、
上界条件つきのバイト保存命令である場合は、まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容よりも大きい場合は、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの有効アドレスにGPR[rt]中の8ビットのバイトデータ内容を保存し、即ちgsSBLE rt, base, boundである。
前記の有効アドレスが整列し、1ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
前記の有効アドレスが整列し、1ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
前記の有効アドレスが整列し、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
前記の有効アドレスが整列し、もし低い2ビットアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
前記の有効アドレスが整列し、3ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
前記の有効アドレスが整列し、3ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
前記の有効アドレスが整列し、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
前記の有効アドレスが整列し、2ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
下界条件つきの倍精度浮動小数点数保存命令である場合は、まずはGPR[base]の内容の中から有効なアドレスを得て、有効なアドレスがGPR[bound]中の内容以下である場合は、アドレスエラーの例外が発生する;そうでない場合は、メモリー中のこの整列した有効アドレスにFPR[ft]中の64ビットのダブルワードデータ内容を保存し、即ちgsSDGTC1 ft, base, boundである。
前記の有効アドレスが整列し3ビット低いアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生するのが好ましい。
ステップ334:同時に上界、下界を判断する命令において、アドレスが同時に上界条件と下界条件を満足しなければならない。一つの限界の条件が満たされないと、限界を越える例外が発生する。
ステップ34:メモリーアクセス命令において、上界アドレスレジスタ中に保存された上界アドレス及び/または下界アドレスレジスタ中に保存された下界アドレスに基づいて、命令アドレスの有効性を判断する。
ステップ341:ロード操作データ(load)命令において、汎用レジスタGPR[rs]即ち上界アドレスレジスタと汎用レジスタGPR[rt] 即ち下界アドレスレジスタ中の値を比較する。もしGPR[rs]中の値がGPR[rt]中の値以下であると、次の命令が実行される; そうでない場合は、adelの例外が発生し、即ちgsLE rs,rtである。
仮想機の設計において、X86の汎用レジスタが固定のMIPSレジスタにマップされているが、仮想機のコードと翻訳されたMIPSコードの二種類のコンテキストを切り替えるとき、これらのレジスタが二種類のコンテキスト中でお互いに干渉されずに自由に使われるために、これらの固定されたMIPSレジスタの値を保存するまたは復旧することは必要とされる。
データ保存命令SQに対して、デコーダは一つの内部のsq操作を出力する。
gsLQ rt, offset(base) /メモリーから4ワードデータを読み取る
メモリーから4ワードデータを読み取り、レジスタに保存する。まず符号付の8ビットのoffsetとGPR[base]の内容を加算して有効アドレスが得られる。この整列した有効アドレスに基づいてメモリー中から128ビットの4ワードデータを読み取り、隣接した二つの汎用レジスタの中に保存される。
有効アドレスが整列しており、低い4ビットアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生する。
まず符号付の8ビットのoffsetとGPR[base]の内容を加算して有効アドレスが得られる。この整列した有効アドレスに基づいてメモリー中から128ビットの4ワードデータを読み取り、隣接した二つの浮動小数点レジスタの中に保存される。
有効アドレスが整列しており、低い4ビットアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生する。
まず符号付の8ビットのoffsetとGPR[base]の内容を加算して有効アドレスが得られる。隣接した二つの汎用レジスタの中の4ワードデータをメモリー中の有効アドレスに保存する。
gsSQC1 ft, offset(base) /浮動小数点レジスタからメモリーに4ワードデータを書き込む
まず符号付の8ビットのoffsetとGPR[base]の内容を加算して有効アドレスが得られる。隣接した二つの浮動小数点レジスタの中の4ワードデータをメモリー中の有効アドレスに保存する。
ftが偶数であれば、レジスタftとレジスタft+1の中の値を読み出し、メモリーに保存する; ftが奇数であればレジスタft-1とレジスタftの中の値を読み出し、メモリーに保存する。
有効アドレスが整列しており、低い4ビットアドレス中の任意の1ビットが0でないと、アドレスエラーの例外が発生する。
ステップN110:プロセッサはまず一つの命令を取り出してデコーダに入力する;
ステップN120:デコーダは命令のタイプを判断し、複数倍のデータ幅の命令を識別しデコードする;
既存のMIPS命令セット中の命令であれば、デコーダはその命令を内部操作とデコードする。例えば対応したOP、ソースレジスタと目標レジスタ等が与えられる;
入力した命令は本発明の複数倍のメモリーアクセス拡張命令操作であれば、デコーダはソースレジスタまたは目標レジスタを自動的に一つから二つの、対を成すレジスタに拡張する;
rtが偶数であれば、レジスタrtとレジスタrt+1の中に保存される;rtが奇数であればレジスタrt-1とレジスタrtの中に保存される。
プロセッサはまず一つの命令を取り出してデコーダに入力し、デコーダは命令のタイプを判断する。既存のMIPS命令セット中の命令であれば、デコーダはその命令を内部操作とデコードし、例えば対応した操作(OP)、ソースレジスタと目標レジスタ等が与えられ、保存演算部分に出力し実行される;入力した命令は本発明のメモリーアクセス拡張命令中の保存操作であれば、デコーダは元レジスタまたは目標レジスタを自動的に一つから二つの、対を成すレジスタに拡張し、そして保存演算部分に出力されて実行される。
デコーダは入力された命令をデコードした後、メモリーアクセス実行部分5に送る。メモリーアクセス実行部分5において、その命令は読み取り命令であれば、操作命令LQの二つの内部操作lq1、lq2を読み取って一つの操作に合併させ、メモリーアクセス実行部分5のメモリーアクセス部分に送り実行する。
X86の仮想機をサポートするRISCプロセッサは、一つの命令についてその命令が元の命令セットモードであるか、それともX86モードであるかを区別する必要はある。例えば、MIPS命令セットを例として、加算の命令について、MIPS命令セット中に加算の処理は二つの数字の加算操作である。しかし、X86命令セットなら、加算の命令は二つの数字の加算操作だけでなく、更に加算の結果に基づいて対応するEFLAG中のフラグビットを変更しなければならない。
違う命令の使用頻度によって、本発明は三つの区別方法を提供する。
本発明のRISCプロセッサでは、デコーダは、デコードの入力及び出力、命令デコード機能を含み、既存技術であるデータ通路以外に、さらにモード識別モジュール24に基づき命令の仮想機の命令セットのモードを区別し、そして該デコーダは命令が区別された仮想機の命令セットのモードに基づいてデコードした後固定小数点演算部分3に出力する。これは直接デコードするため、既存のデコーダの機能を向上させ、プロセッサの演算スピードを向上させる。
固定小数点演算部分3は既存の技術である命令の入力出力、命令の実行を含むデータ通路以外に、さらにデコーダ2によって命令の命令セットモードを区別した後、固定小数点演算部分3が違う命令モードに基づいて対応する演算を実行し、その実行結果を出力する。
(一)
一つの実施可能な方式として、本発明のRISCプロセッサのモード識別モジュール24は、仮想機モード制御レジスタ73である。前記の仮想機モード制御レジスタ73は制御ビットフラグX86MODE1を含む。該ビットが1になるときに当該の命令がX86の仮想機の命令セットモードで稼動していることを表し、該フラグが0になるときに当該の命令がX86の仮想機の命令セットモード以外で稼動していることを表す。
(二)
一つの実施可能な方式として、本発明のRISCプロセッサにおいて、前記のモード識別モジュール24はデコーダ中に含まれたプレフィックス命令デコードモジュール241である。前記のプレフィックス命令デコードモジュール241は一つのプレフィックス命令SETFLAGを含み、このプレフィックス命令SETFLAGは、該プレフィックス命令後の複数の命令がX86の仮想機の命令セットモードであることを表す。
デコーダ2のプレフィックス命令デコードモジュール241は、該プレフィックス命令をデコードするときにフラグを設置し、この命令後の命令はX86の仮想機の命令セットモードにデコードされ、そして該プレフィックス命令は空操作NOPにデコードされる。
(三)
別の実施可能な方式として、前記のモード識別モジュール24は命令処理モジュール21であり、RISCプロセッサのMIPS命令中に該命令の仮想機の命令セットモードをマークすることに使われる。
前記のRISCプロセッサのMIPS命令は、X86命令セット中にEFLAGフラグと関係する命令に対応する仮想機の命令、およびX86命令セット中に特別な構造例えば浮動小数点スタック操作の命令に対応する仮想機の命令を含むのが好ましい。
ステップN210:データを読み取るとき、命令の仮想機の命令セットモードを区別する。
ステップN211:デコーダは一つのプレフィックス命令SETFLAGを読み取り、該命令後の複数の命令がX86の仮想機の命令セットモードであることを表し、命令の仮想機の命令セットモードを区別した。
ステップN210。艨F命令がデコーダ2に入るとき、仮想機モード制御レジスタ73の制御ビットフラグX86MODE1は命令の仮想機の命令セットモードを区別する。
ステップN211。艨F仮想機モード制御レジスタ73の制御ビットフラグX86MODE1を判断する;
ステップN212。艨F該フラグビットが1になるとき当該の命令がX86の仮想機の命令セットモードで稼動していることを表す。
さらに別の実施可能な方式として、前記のステップN210は以下のステップを含む。
ステップN220:デコーダは命令をデコードする間に、区別された命令の仮想機の命令セットのモードに基づき、命令をデコードした後、RISCプロセッサの固定小数点演算部分3に出力する。
ステップN221:デコーダはデコードによりプレフィックス命令を確認し、デコーダに一つのフラグビットX86mode2=1を設置する。
ステップN222:デコーダ中のプレフィックス命令カウンター242は、プレフィックス命令に影響され、かつシフト命令が表示されない命令シーケンスの命令数nを記録する。
前記の命令シーケンス中にシフト命令が出現することは許されない。即ちシフト命令が出現すると、このシフト命令からの命令シーケンスはプレフィックス命令に影響されないこととなる。
プレフィックス命令に基づき命令の仮想機の命令セットのモードを区別したとき、以下のステップを含む。
複数モードの命令セットの命令を実行する間、中断の例外が発生しないため、前記のステップN230は以下のステップを含むのが好ましい。
ステップN233:固定小数点演算部分はプレフィックス命令がn個の命令に影響を与えるとき、プレフィックス例外制御レジスタ33を使用して、例外が発生した命令は前記のプレフィックス命令による影響されたかどうかを記録する。異常でプロセスが中断された場合に、プレフィックス例外制御レジスタ33中にその時点の命令のカウントを保存する。異常が終わって中断されたプロセスに戻る場合、前記のカウント、即ちその前にプレフィックス例外制御レジスタ33に保存されたカウントに基づいて前記の中断されたプロセスが回復する。
以下は加算命令を例として、プレフィックス命令の方式で本発明のRISCプロセッサの複数モードでのデータ処理の方法を具体的に説明する。
そして、デコーダ2はデコードによりプレフィックス命令を確認し、デコーダに一つのフラグビットX86mode2=1を設置し、プレフィックス命令を内部の空操作NOPにデコードし、次の命令を実行する;
それから、プレフィックス命令の次の命令即ち加算命令がデコーダに入るとき、プレフィックスのフラグビットが存在するかどうかを判断する。加算命令がプレフィックス命令のパラメータの範囲内でないと、デコーダは命令自身につけたソースレジスタと目標レジスタおよび内部操作の操作コード(op)をデコードする;この加算命令がプレフィックス命令のパラメータの範囲内であり、即ちX86モードでの加算命令であると、X86の仮想機の命令セットモードで、演算結果に基づきEFLAGSのフラグビットを変更するから、デコーダはEFLAGSのフラグビットをソースレジスタ中の一つにデコードするとともに、EFLAGSのフラグビットを目標レジスタにデコードし、そして同時に加算命令自身につけたソースレジスタと目標レジスタおよび内部操作の操作コード(op)をデコードする;
最後に、固定小数点演算部分はデコーダの出力を入力として、正常なMIPS命令中の命令であれば、加算の演算が行われる;プレフィックス命令に影響された加算命令であれば、固定小数点演算部分は先に加算の演算を実行し、そして加算の演算結果に基づき新たなEFLAGSフラグビットの値を演算する。
仮想機の種類はさまざまであるが、そのコアは一つの翻訳または解釈のプロセス、即ち目標コードからローカルコードに翻訳か解釈して、ローカルプロセッサで実行するプロセスである。仮想機はローカルコードを実行する間に、ジャンプ命令が出てくると、X86のソースプログラムの命令アドレスを対応するMIPS目標プログラムの命令アドレスに変更する、そして目標プログラムの命令アドレスに基づきジャンプが実現される。本発明はRISCプロセッサ中に元の命令アドレス(X86命令アドレス)から目標命令アドレス(MIPS命令アドレス)までの検索テーブルのマップの構造を増やして、ソース命令アドレスから目標命令アドレスまでの変更を加速させるため、仮想機の性能が向上する。
TPC領域はMIPS目標命令アドレスを保存することに使われる;
ASID領域とSPC領域は検索テーブルのアドレス部分(CAM)にあり、TPC領域は検索テーブルの保存部分(RAM)にある。
一番の命令は、CAMPV命令である。該命令は検索テーブルRAMの項目の値を検索する。
CAMPV rd, rs
GPR[rs]中の内容インデックスの検索テーブルに基づき、RAM中の内容が得られる。汎用レジスタGPR[rs] 中の内容インデックスの検索テーブルに基づき、ヒットされたら、対応するRAM中の内容を目標レジスタGPR[rd] 中に保存する;項目がヒットされなかったら、ヒットされなかったサービスプログラムの入り口アドレスを目標レジスタGPR[rd] 中に保存する。
二番の命令は、CAMPI命令である。該命令は検索テーブルRAMの項目のインデックス(index)を検索する。
CAMPI rd, rs
GPR[rs]中の内容インデックスの検索テーブルに基づき、該内容がある項目のインデックス(index)は得られる。汎用レジスタGPR[rs] 中の内容インデックスの検索テーブルに基づき、ヒットされたら、対応する項目のインデックス(index)を目標レジスタGPR[rd] 中に保存する;項目がヒットされなかったら、ヒットされなかった目標レジスタrdの最高ビットを1にする。
三番の命令は、CAMWI命令である。該命令は検索テーブルRAMの項目のインデックス(index)に基づき、検索テーブルを書き込む。該命令のフォーマットは以下の通りである:
CAMWI rd, rs, rt
GPR[rd]の値に基づいて検索テーブルを書き込む。汎用レジスタGPR[rd] 中のインデックスの値に基づき、GPR[rs]レジスタとGPR[rt]レジスタ中の値をそれぞれ検索テーブルのCAMの項目とRAMの項目中に書き込む。
命令の実行プロセスは、命令のロードのデコードの実行などを含む全体的にプロセッサの命令の実行プロセスであり、アクセスする部分は前記の検索テーブルである。
RAMRI rd, rs
GPR[rs]の値に基づいて検索テーブルRAMの内容を読み取る。汎用レジスタGPR[rs] 中のindexの値に基づき検索テーブルRAMの内容を読み取り、目標レジスタGPR[rd] 中に保存する。
以下に、検索がヒットされなかった場合、即ち検索テーブルが検索できなかった、即ち検索テーブルに相応するプロセスが期待したペアのSPC-TPCがない場合、対応する処理を詳しく説明する。
ここで、rsは目標アドレスを保存するレジスタである。
VJR rt
31号汎用レジスタの値によって検索テーブルのRAMの内容を読み取る。汎用レジスタGPR[31]の値によって検索テーブルのRAMの内容(即ち変換後の目標アドレス)を読み取る。検索が成功した場合、目標レジスタGPR[rt]に保存する。そして命令がrtレジスタの値により目標アドレスにジャンプする;検索が成功しなかった場合、検索テーブルの第0項目のRAM内容を目標レジスタGPR[rt]に保存する。命令はrtレジスタの値によりヒットされなかったサービスプログラムにジャンプし処理される。
二つのMIPS命令で実現する:
Addiu $31,r2,0x0
VJR r4
ジャンプ命令がデコードされた後、VJR命令がこの固定されたレジスタの値に基づいて検索した後、ヒットされた場合、直接に目標命令アドレスがポイントしているコードセグメントにおいて実行する;ヒットされなかった場合、直接に検索テーブルの第0項目にジャンプして、その後にヒットされなかったサービスプログラムにジャンプする。
ステップN310:RISCプロセッサのX86の仮想機が起動するとき、検索テーブルを初期化し、得られたX86の仮想機の命令アドレスからMIPS命令アドレスの内容を検索テーブルに書き込む」サ
RISCプロセッサのX86の仮想機が初期化するとき、ヒットされなかったサービスプログラムを利用して、ヒットされなかったサービスプログラムが維持するハッシュ表に基づき、CAMPI命令とCAMWI命令の初期化によって対応するX86命令アドレスからMIPS命令アドレスへの検索テーブルを得る。
前記のステップN320は以下のステップを含む:
ステップN321:検索テーブルの項目の値を検索するCAMPV命令を使用して、レジスタのソース命令アドレスにより検索テーブルを検索して目標命令アドレスを得る;
ステップN322:検索がヒットされた場合、直接に得られた目標命令アドレスの値を目標レジスタに保存し、プログラムはジャンプ命令によって該目標アドレスがポイントしているコードセグメントにジャンプし実行する;
ステップN323:検索がヒットされなかった場合、仮想機から得られてヒットされなかったサービスプログラムのアドレスを目標レジスタに保存し、プログラムは、ヒットされなかったサービスプログラムにジャンプして実行される。
前記のステップN330は以下のステップを含む:
ステップN331:検索テーブルの項目のインデックスを検索するCAMPI命令を使用して、ソース命令アドレスの値に基づいて該値が所在する項目のインデックス(index)を得て、さらに該当インデックスを目標レジスタに保存する。
ステップN340:検索テーブルのひとつの内容を無効にする;あるいは検索テーブルのRAMの内容を読み取る。
以上、本発明の具体的な実施例について説明したが、これらの実施例は単なる例であって、本発明を限定するため使用するべきものではない。本発明は添付特許請求の範囲に従って解釈すべきものである。
Claims (17)
- X86の仮想機をサポートするRISCプロセッサにおいて、
前記RISCプロセッサは、命令モジュールと、デコーダと、検索テーブルと、固定小数点演算部分と、浮動小数点演算部分とを含み、
前記の命令モジュールは、X86の仮想機をサポートする仮想機の命令セットを保存することに使われ、
前記のデコーダは、前記の仮想機の命令セットの命令をデコーディングする間に、命令の仮想機命令セットのモードを区別し、命令を区別された仮想機命令セットのモードに基づいてデコーディングした後に、固定小数点演算部分または浮動小数点演算部分に出力することに使われ、
前記の検索テーブルは、X86のプログラムにおけるジャンプアドレスとMIPSジャンプアドレスを保存し、さらに前記のデコーダの出力に基づいてX86のプログラムにおけるジャンプアドレスからMIPSジャンプアドレスへの翻訳に対する高速の検索をサポートすることに使われ、
前記の固定小数点演算部分は、デコーダの出力に基づき、仮想機命令セットの固定小数点命令を処理し、実行した結果を出力することに使われ、
前記の浮動小数点演算部分は、デコーダの出力に基づき、仮想機命令セットの浮動小数点命令を処理し、実行の結果を出力することに使われることを特徴とするX86の仮想機をサポートするRISCプロセッサ。 - 前記のRISCプロセッサはさらにメモリーアクセス実行部分、メモリーおよびデータ通路を含み、
前記のメモリーアクセス実行部分は、デコーダの出力に基づき、データ通路によってレジスタとメモリーとの間のデータ通信を行うことを特徴とする請求項1に記載のX86の仮想機をサポートするRISCプロセッサ。 - 前記のRISCプロセッサはさらに汎用物理レジスタヒープを含み、前記の汎用物理レジスタヒープは、オーバーフローチェックレジスタ、上界、下界アドレスレジスタ、シミュレートフラグレジスタおよび仮想機モード制御レジスタを含み、
前記のオーバーフローチェックレジスタは、RISCプロセッサがシミュレートしたスタックレジスタに対して浮動小数点アクセスを行うときの、スタックオーバーフローの例外チェックの結果を保存することに使われ、
前記の上界、下界アドレスレジスタは、X86のプロセッサの、限界があるメモリーアクセスモードをシミュレートするとき、上界、下界の有効アドレスを保存することに使われ、
前記のシミュレートフラグレジスタは、X86のプロセッサのフラグレジスタのフラグビットを実現させるのをシミュレートすることに使われ、
前記の仮想機モード制御レジスタは、一つの制御ビットフラグを含み、該制御ビットフラグが1であるときには、当該の命令がX86の仮想機の命令セットモードで稼動していることを表し、該制御ビットフラグが0であるときには、当該の命令がX86の仮想機の命令セットモード以外で稼動していることを表すことを特徴とする請求項2に記載のX86の仮想機をサポートするRISCプロセッサ。 - 前記のRISCプロセッサは、さらに浮動小数点レジスタヒープを含み、
前記の浮動小数点レジスタヒープは、浮動小数点制御レジスタ、浮動小数点レジスタスタック、および第一から第三までの浮動小数点レジスタを含むことを特徴とする請求項3に記載のX86の仮想機をサポートするRISCプロセッサ。 - 前記の仮想機の命令セットは、メモリーアクセス拡張命令、プレフィックス命令、EFLAGフラグビットに関する命令、浮動小数点スタックに関する命令、および検索テーブルに関する命令の中の一種類または複数種類の組み合わせを含むことを特徴とする請求項4に記載のX86の仮想機をサポートするRISCプロセッサ。
- 前記のデコーダは、命令処理モジュールとモード識別モジュールを含み、 前記の命令処理モジュールは、仮想機の命令セットの命令を命令デコードして固定小数点演算部分または浮動小数点演算部分に出力することに使われ、
前記のモード識別モジュールは、命令をデコードする間に、命令の仮想機命令セットのモードを区別し、対応する処理を行うことに使われることを特徴とする請求項5に記載のX86の仮想機をサポートするRISCプロセッサ。 - 前記のモード識別モジュールは、多数セーブデコードモジュール及び/または多数ロードデコードモジュールを含み、
前記の多数セーブデコードモジュールは、入力された命令がメモリーアクセス拡張命令のセーブ操作命令であるとき、ソースレジスタを一つから複数の隣接するレジスタに拡張し、そしてメモリーアクセス実行部分へ出力して実行することに使われ、
前記の多数ロードデコードモジュールは、入力された命令がメモリーアクセス拡張命令のロード操作命令であるとき、該ロード操作命令を複数の内部操作命令にデコードし、目標のレジスタを一つから複数の隣接するレジスタに拡張し、そして前記の複数の内部操作の中に分配し、メモリーアクセス実行部分へ出力して実行することに使われることを特徴とする請求項6に記載のX86の仮想機をサポートするRISCプロセッサ。 - 前記のモード識別モジュールは、さらにプレフィックス命令デコードモジュールとフラグビット命令デコードモジュールを含み、
前記のフラグビット命令デコードモジュールは、EFLAGS稼動モードをシミュレートする作業モードであるEFLAGフラグビットに関連する命令を処理し、違うEFLAGフラグビットに関連する命令に基づき、シミュレートフラグレジスタをその命令のソースレジスタ及び/または目標レジスタにデコードすることに使われ、
前記のプレフィックス命令デコードモジュールは、プレフィックス命令の後の複数の命令がX86の仮想機の命令セットモードであることを示すことに使われることを特徴とする請求項7に記載のX86の仮想機をサポートするRISCプロセッサ。 - プレフィックス命令の範囲のパラメータがnであるとき、デコーダはさらにプレフィックス命令カウンターを含み、該プレフィックス命令カウンターは、プレフィックス命令に影響され、かつシフト命令が存在しない命令シーケンスの命令数を記録することに使われ、該命令数は前記の範囲のパラメータと等しいことを特徴とする請求項8に記載のX86の仮想機をサポートするRISCプロセッサ。
- 前記のデコーダはさらにTOPポインタレジスタと検索テーブルモジュールを含み、
前記のTOPポインタレジスタは、浮動小数点スタックの操作ポインタをメンテナンスし、浮動小数点スタックのスタック操作ポインタの値を保存することに使われ、
前記の検索テーブルモジュールは、検索テーブルに関連する命令に基づき、検索テーブルを利用してX86の元の命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われることを特徴とする請求項6に記載のX86の仮想機をサポートするRISCプロセッサ。 - 前記の固定小数点演算部分は、フラグ読み書きモジュール、フラグ演算モジュール、例外処理モジュールおよびプレフィックス例外制御レジスタを含み、
前記のフラグ読み書きモジュールは、シミュレートフラグレジスタのフラグビットの値を読み書きすることに使われ、
前記のフラグ演算モジュールは、演算する間にRISCプロセッサがX86の仮想機の稼動モードであるときに、演算の結果から得られたシミュレートフラグレジスタのフラグビット、またはシミュレートフラグレジスタのフラグビットの1ビットまたは複数ビットに基づき、分岐ジャンプの命令を実行することに使われ、
前記の例外処理モジュールは、プレフィックス命令がその直後の一つの命令だけに影響を与えるとき、実行例外が表示された場合に遅延スロット例外と同じ方法で、Causeレジスタのbdビットを1にさせるとともに、EPCをプレフィックス命令にポイントし、例外サービスプログラムが完成した後に再びプレフィックス命令を実行することに使われ、
前記のプレフィックス例外制御レジスタは、例外が発生した命令は前記のプレフィックス命令によって影響されたかどうかを記録し、異常でプロセスが中断された場合にその時点の命令のカウントを保存し、異常が終わって中断されたプロセスに戻る場合、前記のカウントに基づいて前記の中断されたプロセスを回復させることに使われることを特徴とする請求項5に記載のX86の仮想機をサポートするRISCプロセッサ。 - 前記の浮動小数点演算部分は、ポインタ操作モジュール、スタックオーバーフロー判断モジュール、および変換モジュールを含み
前記のポインタ操作モジュールは、前記のTOPポインタレジスタを操作し、前記の浮動小数点レジスタスタック操作をシミュレートするとき、前記のスタック操作ポインタのスタック操作をシミュレートし、スタック操作ポインタの状態を変更かつ監視することに使われ、
前記のスタックオーバーフロー判断モジュールは、指定した浮動小数点レジスタスタックの中のスタックレジスタをチェックし、さらにスタックレジスタの値に基づき前記のオーバーフローチェックレジスタを操作し、浮動小数点アクセスするときのスタックオーバーフロー例外のチェックを行うことに使われる;
前記の変換モジュールは、拡張倍精度浮動小数点データと倍精度浮動小数点データとを互いに変換することに使われることを特徴とする請求項10に記載のX86の仮想機をサポートするRISCプロセッサ。 - X86の仮想機をサポートするRISCプロセッサのデータ処理の方法において、
RISCプロセッサの中においてRISCプロセッサの稼動モードをX86の仮想機稼動モードに設定するステップAと、
命令を読み込み、命令の仮想機命令セットのモードを区別し、命令をデコードする間に、区別した命令の仮想機の命令セットのモードに基づき、区別された仮想機命令セットのモードによって命令をデコーディングした後に出力するステップBと、
前記の出力に基づき、対応する演算またはアクセス処理を行い、実行した結果を出力するステップCと
を含むことを特徴とするX86の仮想機をサポートするRISCプロセッサのデータ処理の方法。 - X86の仮想機をサポートするRISCプロセッサのデータ処理のプロセスは、EFLAG命令に対するサポートであるとき、
前記のステップAは具体的に、
RISCプロセッサの中においてRISCプロセッサの稼動モードをX86の仮想機稼動モードに設定し、シミュレートフラグレジスタが使用できることを示すステップA1であり、
前記のステップBは具体的に、
デコーダは演算がEFLAGS稼動モードをシミュレートするモードであることを識別したとき、違う命令に基づき、シミュレートフラグレジスタをソースレジスタ及び/または目標レジスタにデコードするステップB1であり、
前記のステップCは具体的に、
RISCプロセッサが演算する間に、RISCプロセッサの稼動モードがX86の仮想機稼動モードであるとき、シミュレートフラグレジスタのフラグビットの値を読み込む/書き込むことによって演算状態を獲得/保存することを実現し、演算の結果から得られたシミュレートフラグレジスタのフラグビット、またはシミュレートフラグレジスタのフラグビットの1ビットまたは複数ビットに基づき、分岐ジャンプの命令を実行するステップC1である
ことを特徴とする請求項13に記載のX86の仮想機をサポートするRISCプロセッサのデータ処理の方法。 - X86の仮想機をサポートするRISCプロセッサのデータ処理のプロセスはX86の浮動小数点のフォーマットと浮動小数点スタックに対するサポートであるとき、
前記のステップAは具体的に、
スタックイネーブルビットに基づき、浮動小数点レジスタを選択して浮動小数点レジスタのスタック操作をシミュレートするかどうかを決め、あるいは一つの汎用レジスタを設置し、その低い順位の8ビットは高くなる順でそれぞれ浮動小数点レジスタスタックの0〜7のスタックレジスタの状態をし、または三つの汎用レジスタを任意に選択し、第一浮動小数点レジスタ、第二浮動小数点レジスタと第三浮動小数点レジスタとして、64ビット浮動小数点数と80ビット浮動小数点数のフォーマットの変換作業に使用するステップA2であり、
前記のステップBは具体的に、
デコーダの中の3ビットのTOPポインタレジスタの中にスタック操作ポインタの値を保存し、または新たに増えたスタックオーバーフロー判断命令をデコードし、あるいは拡張倍精度浮動小数点データと倍精度浮動小数点データの変換命令をデコードするステップB2であり、
前記のステップCは具体的に、
浮動小数点レジスタスタック操作をシミュレートするとき、ポインタレジスタを操作してスタック操作ポインタのスタック操作をシミュレートし、スタック操作ポインタの状態を変更かつ監視し、または指定した浮動小数点レジスタスタックの中のスタックレジスタをチェックし、さらにスタックレジスタの値に基づきオーバーフローチェックレジスタを操作し、浮動小数点スタックオーバーフローのチェックを行い、あるいは拡張倍精度浮動小数点データと倍精度浮動小数点データとの間のデータ変換を実行するステップC2である
ことを特徴とする請求項13に記載のX86の仮想機をサポートするRISCプロセッサのデータ処理の方法。 - X86の仮想機をサポートするRISCプロセッサのデータ処理のプロセスはX86の保存構造に対するサポートであるとき、
前記のステップAは具体的に、
RISCプロセッサのX86の仮想機において、物理レジスタヒープの二つの汎用レジスタをそれぞれ上界、下界アドレスレジスタに設置するステップA3であり、
前記のステップBは具体的に、
X86の仮想機の命令セットからMIPS命令セットへの翻訳を行うとき、デコーダは命令をデコードし、RISCプロセッサで処理できる二進法コードが得られるステップB3であり、
前記のステップCは具体的に、
固定小数点演算部分は、デコードした後のメモリーアクセス命令の中に、上界アドレスレジスタに保存された上界アドレスと/または下界アドレスレジスタに保存された下界アドレスに基づき、命令操作数アドレスと命令アドレスとの有効性を判断し、命令操作数アドレスと命令アドレスの両方が有効であるときには、メモリーアクセス操作が実行され、そうでないときには、アドレスエラーの例外が発生するステップC3である
ことを特徴とする請求項13に記載のX86の仮想機をサポートするRISCプロセッサのデータ処理の方法。 - X86の仮想機をサポートするRISCプロセッサのデータ処理のプロセスは仮想のメカニズムに対するサポートであるとき、
前記のステップAは具体的に、
プレフィックス命令を読み込み、命令の仮想機命令セットのモードを区別し、またはプロセッサが複数倍のデータ幅の命令を取り出してデコーダに入力し、あるいはX86の仮想機をサポートするRISCプロセッサが起動するとき、検索テーブルを初期化し、得られたX86の仮想機の命令アドレスからMIPS命令アドレスまでの内容を検索テーブルに書き込むステップA4であり、
前記のステップBは具体的に、
命令をデコードする間に、区別した命令の仮想機命令セットのモードに基づき、区別した仮想機命令セットのモードによって命令をデコードした後に出力し、またはデコーダが命令種類を判断し、複数倍のデータ幅の命令を認識かつデコードし、あるいはデコーダが検索テーブルに関係する命令を識別しデコードするステップB4であり、
前記のステップCは具体的に、
固定小数点演算部分はプレフィックス命令による影響された命令を実行し、さらに演算の結果に基づき対応するEFLAGフラグビットを計算し、またはデコードした複数倍のデータ幅の命令をメモリーアクセス実行部分に送って操作を実行し、あるいは検索テーブルに関連する命令を実行して、目標命令アドレスの値を獲得しまたは目標アドレスへジャンプさせて実行するステップC4であることを特徴とする請求項13に記載のX86の仮想機をサポートするRISCプロセッサのデータ処理の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200810102086 CN100555225C (zh) | 2008-03-17 | 2008-03-17 | 一种支持x86虚拟机的risc处理器装置及方法 |
CN200810102086.3 | 2008-03-17 | ||
PCT/CN2008/002023 WO2009114961A1 (zh) | 2008-03-17 | 2008-12-17 | 一种支持x86虚拟机的risc处理器装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011515750A true JP2011515750A (ja) | 2011-05-19 |
JP5501338B2 JP5501338B2 (ja) | 2014-05-21 |
Family
ID=39891348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011500028A Active JP5501338B2 (ja) | 2008-03-17 | 2008-12-17 | X86の仮想機をサポートするriscプロセッサ装置及び方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8949580B2 (ja) |
EP (1) | EP2267598B1 (ja) |
JP (1) | JP5501338B2 (ja) |
KR (1) | KR101232343B1 (ja) |
CN (1) | CN100555225C (ja) |
CA (1) | CA2718724C (ja) |
WO (1) | WO2009114961A1 (ja) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5193624B2 (ja) | 2008-02-19 | 2013-05-08 | ルネサスエレクトロニクス株式会社 | データプロセッサ |
CN100555225C (zh) | 2008-03-17 | 2009-10-28 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
CN101819517B (zh) * | 2009-05-19 | 2013-05-22 | 威盛电子股份有限公司 | 适用于微处理器的装置及方法 |
KR101247259B1 (ko) | 2009-12-17 | 2013-04-01 | 한국전자통신연구원 | 가상화 장치 및 그 처리 방법 |
US8880851B2 (en) * | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9292470B2 (en) | 2011-04-07 | 2016-03-22 | Via Technologies, Inc. | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US9317288B2 (en) | 2011-04-07 | 2016-04-19 | Via Technologies, Inc. | Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US9336180B2 (en) * | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
US20130086359A1 (en) * | 2011-09-29 | 2013-04-04 | Qualcomm Incorporated | Processor Hardware Pipeline Configured for Single-Instruction Address Extraction and Memory Access Operation |
CN102508635B (zh) * | 2011-10-19 | 2014-10-08 | 中国科学院声学研究所 | 一种处理器装置及其循环处理方法 |
US9329861B2 (en) | 2011-12-29 | 2016-05-03 | International Business Machines Corporation | Convert to zoned format from decimal floating point format |
US9335993B2 (en) | 2011-12-29 | 2016-05-10 | International Business Machines Corporation | Convert from zoned format to decimal floating point format |
CN103530089B (zh) * | 2012-08-31 | 2018-06-15 | 威盛电子股份有限公司 | 微处理器及其操作方法 |
CN104598196A (zh) * | 2014-12-30 | 2015-05-06 | 杭州中天微系统有限公司 | 一种浮点处理装置及方法 |
US9335982B1 (en) * | 2015-04-28 | 2016-05-10 | Microsoft Technology Licensing, Llc | Processor emulation using multiple translations |
GB2546465B (en) | 2015-06-05 | 2018-02-28 | Advanced Risc Mach Ltd | Modal processing of program instructions |
US9817642B2 (en) * | 2015-06-25 | 2017-11-14 | Intel Corporation | Apparatus and method for efficient call/return emulation using a dual return stack buffer |
CN105159651B (zh) * | 2015-08-31 | 2017-11-07 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种risc处理器的单/双/四精度浮点数据相关电路及操作数获取方法 |
US10761852B2 (en) | 2015-09-30 | 2020-09-01 | International Business Machines Corporation | Extending data range addressing |
US9870305B2 (en) | 2015-09-30 | 2018-01-16 | International Business Machines Corporation | Debugging of prefixed code |
US10877759B2 (en) | 2015-09-30 | 2020-12-29 | International Business Machines Corporation | Managing the capture of information in applications with prefix instructions |
US10394568B2 (en) | 2015-09-30 | 2019-08-27 | International Business Machines Corporation | Exception handling for applications with prefix instructions |
US10169043B2 (en) * | 2015-11-17 | 2019-01-01 | Microsoft Technology Licensing, Llc | Efficient emulation of guest architecture instructions |
CN105677298B (zh) * | 2015-12-30 | 2018-03-27 | 李朝波 | 一种将计算机指令中立即数扩展的方法和装置 |
US20170192788A1 (en) * | 2016-01-05 | 2017-07-06 | Intel Corporation | Binary translation support using processor instruction prefixes |
US9996329B2 (en) | 2016-02-16 | 2018-06-12 | Microsoft Technology Licensing, Llc | Translating atomic read-modify-write accesses |
US10514913B2 (en) | 2017-06-23 | 2019-12-24 | International Business Machines Corporation | Compiler controls for program regions |
US10725739B2 (en) | 2017-06-23 | 2020-07-28 | International Business Machines Corporation | Compiler controls for program language constructs |
CN107291425B (zh) * | 2017-06-23 | 2020-11-24 | 上海兆芯集成电路有限公司 | 合并解决重命名尺寸问题的部分写入结果的系统和方法 |
US10379851B2 (en) | 2017-06-23 | 2019-08-13 | International Business Machines Corporation | Fine-grained management of exception enablement of floating point controls |
US10310814B2 (en) | 2017-06-23 | 2019-06-04 | International Business Machines Corporation | Read and set floating point control register instruction |
US10684852B2 (en) * | 2017-06-23 | 2020-06-16 | International Business Machines Corporation | Employing prefixes to control floating point operations |
US10740067B2 (en) | 2017-06-23 | 2020-08-11 | International Business Machines Corporation | Selective updating of floating point controls |
US10481908B2 (en) | 2017-06-23 | 2019-11-19 | International Business Machines Corporation | Predicted null updated |
GB2570326B (en) * | 2018-01-22 | 2020-06-10 | Advanced Risc Mach Ltd | Multiple guard tag setting instruction |
US11762566B2 (en) | 2018-01-22 | 2023-09-19 | Arm Limited | Programmable mapping of guard tag storage locations |
CN108415728B (zh) * | 2018-03-01 | 2020-12-29 | 中国科学院计算技术研究所 | 一种用于处理器的扩展浮点运算指令执行方法及装置 |
CN110874259A (zh) * | 2018-08-31 | 2020-03-10 | 龙芯中科技术有限公司 | 程序执行方法、装置、设备和存储介质 |
CN111210012B (zh) * | 2018-11-21 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、装置及相关产品 |
KR20200139829A (ko) | 2018-10-18 | 2020-12-14 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 네트워크 온칩 데이터 처리 방법 및 장치 |
CN109788352A (zh) * | 2018-12-25 | 2019-05-21 | 深圳市纽格力科技有限公司 | 一种基于mips架构的机顶盒异常确认方法和系统 |
CN110362501B (zh) * | 2019-07-05 | 2021-09-24 | 北京大学 | 一种执行饱和寻址加载和存储操作的设备和方法 |
CN110780925B (zh) * | 2019-09-02 | 2021-11-16 | 芯创智(北京)微电子有限公司 | 一种指令流水线的预译码系统及方法 |
CN111090465B (zh) * | 2019-12-19 | 2022-08-19 | 四川长虹电器股份有限公司 | 一种rv32ic指令集的译码系统及其译码方法 |
JP2021166010A (ja) * | 2020-04-08 | 2021-10-14 | 富士通株式会社 | 演算処理装置 |
US11119777B1 (en) | 2020-04-22 | 2021-09-14 | International Business Machines Corporation | Extended prefix including routing bit for extended instruction format |
CN111782269B (zh) * | 2020-06-04 | 2023-12-12 | 珠海格力电器股份有限公司 | 一种中断处理方法及中断处理设备 |
TWI764311B (zh) * | 2020-10-08 | 2022-05-11 | 大陸商星宸科技股份有限公司 | 記憶體存取方法及智慧處理裝置 |
CN112860320A (zh) * | 2021-02-09 | 2021-05-28 | 山东英信计算机技术有限公司 | 基于risc-v指令集进行数据处理的方法、系统、设备及介质 |
US11922055B2 (en) | 2021-04-28 | 2024-03-05 | Seagate Technology Llc | Stack register having different ferroelectric memory element constructions |
CN113220300A (zh) * | 2021-04-29 | 2021-08-06 | 麒麟软件有限公司 | 一种应用于Android系统x86架构上的ARM指令集转换方法 |
CN116501451B (zh) * | 2023-06-25 | 2023-10-17 | 中国科学院计算技术研究所 | 二进制翻译方法、翻译控制方法、指令执行方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03150633A (ja) * | 1989-11-07 | 1991-06-27 | Matsushita Electric Ind Co Ltd | 命令解読装置 |
JPH06202903A (ja) * | 1992-12-29 | 1994-07-22 | Nec Corp | Cpuシミュレーション方法およびcpuシミュレータ |
JPH06324883A (ja) * | 1993-05-15 | 1994-11-25 | Nec Corp | Cpuシミュレータ |
JPH08339325A (ja) * | 1995-06-07 | 1996-12-24 | Internatl Business Mach Corp <Ibm> | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
JP2000515270A (ja) * | 1996-01-24 | 2000-11-14 | サン・マイクロシステムズ・インコーポレイテッド | ネットワークまたはローカルメモリから受け取った命令セットの実行のための二重命令セットプロセッサ |
JP2002536712A (ja) * | 1999-01-28 | 2002-10-29 | エーティーアイ インターナショナル エスアールエル | 第2のアーキテクチャのコンピュータにおける第1のコンピュータアーキテクチャ用プログラムの実行 |
JP2004038923A (ja) * | 2002-02-06 | 2004-02-05 | Transitive Technologies Ltd | プログラムコード変換のための条件コードフラグのエミュレーション |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA1278382C (en) | 1986-12-15 | 1990-12-27 | Brian J. Sprague | Reduced instruction set computing apparatus and methods |
CA2045735A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | Computer performance by eliminating branches |
JPH06131197A (ja) * | 1992-10-21 | 1994-05-13 | Toshiba Corp | 最適化処理装置 |
US5450607A (en) * | 1993-05-17 | 1995-09-12 | Mips Technologies Inc. | Unified floating point and integer datapath for a RISC processor |
DE69427265T2 (de) * | 1993-10-29 | 2002-05-02 | Advanced Micro Devices Inc | Superskalarbefehlsdekoder |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US5685009A (en) * | 1994-07-20 | 1997-11-04 | Exponential Technology, Inc. | Shared floating-point registers and register port-pairing in a dual-architecture CPU |
US6076155A (en) * | 1995-10-24 | 2000-06-13 | S3 Incorporated | Shared register architecture for a dual-instruction-set CPU to facilitate data exchange between the instruction sets |
US6751737B1 (en) * | 1999-10-07 | 2004-06-15 | Advanced Micro Devices | Multiple protected mode execution environments using multiple register sets and meta-protected instructions |
US7552426B2 (en) * | 2003-10-14 | 2009-06-23 | Microsoft Corporation | Systems and methods for using synthetic instructions in a virtual machine |
US7260702B2 (en) * | 2004-06-30 | 2007-08-21 | Microsoft Corporation | Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor |
CN100555225C (zh) * | 2008-03-17 | 2009-10-28 | 中国科学院计算技术研究所 | 一种支持x86虚拟机的risc处理器装置及方法 |
-
2008
- 2008-03-17 CN CN 200810102086 patent/CN100555225C/zh active Active
- 2008-12-17 JP JP2011500028A patent/JP5501338B2/ja active Active
- 2008-12-17 KR KR1020107020814A patent/KR101232343B1/ko active IP Right Grant
- 2008-12-17 EP EP08873507.1A patent/EP2267598B1/en active Active
- 2008-12-17 US US12/922,949 patent/US8949580B2/en active Active
- 2008-12-17 WO PCT/CN2008/002023 patent/WO2009114961A1/zh active Application Filing
- 2008-12-17 CA CA2718724A patent/CA2718724C/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03150633A (ja) * | 1989-11-07 | 1991-06-27 | Matsushita Electric Ind Co Ltd | 命令解読装置 |
JPH06202903A (ja) * | 1992-12-29 | 1994-07-22 | Nec Corp | Cpuシミュレーション方法およびcpuシミュレータ |
JPH06324883A (ja) * | 1993-05-15 | 1994-11-25 | Nec Corp | Cpuシミュレータ |
JPH08339325A (ja) * | 1995-06-07 | 1996-12-24 | Internatl Business Mach Corp <Ibm> | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
JP2000515270A (ja) * | 1996-01-24 | 2000-11-14 | サン・マイクロシステムズ・インコーポレイテッド | ネットワークまたはローカルメモリから受け取った命令セットの実行のための二重命令セットプロセッサ |
JP2002536712A (ja) * | 1999-01-28 | 2002-10-29 | エーティーアイ インターナショナル エスアールエル | 第2のアーキテクチャのコンピュータにおける第1のコンピュータアーキテクチャ用プログラムの実行 |
JP2004038923A (ja) * | 2002-02-06 | 2004-02-05 | Transitive Technologies Ltd | プログラムコード変換のための条件コードフラグのエミュレーション |
Non-Patent Citations (2)
Title |
---|
CSND200302124002; 西田 亙: 'x86エミュレータBochsの使い方' Interface 第28巻,第7号(通巻301号), 20020701, pp.114〜116, CQ出版株式会社 * |
JPN6013025225; 西田 亙: 'x86エミュレータBochsの使い方' Interface 第28巻,第7号(通巻301号), 20020701, pp.114〜116, CQ出版株式会社 * |
Also Published As
Publication number | Publication date |
---|---|
CA2718724A1 (en) | 2009-09-24 |
CN101256504A (zh) | 2008-09-03 |
KR101232343B1 (ko) | 2013-02-13 |
US8949580B2 (en) | 2015-02-03 |
EP2267598B1 (en) | 2018-07-18 |
KR20100125331A (ko) | 2010-11-30 |
EP2267598A4 (en) | 2013-03-27 |
WO2009114961A1 (zh) | 2009-09-24 |
US20110035745A1 (en) | 2011-02-10 |
CA2718724C (en) | 2016-01-19 |
CN100555225C (zh) | 2009-10-28 |
JP5501338B2 (ja) | 2014-05-21 |
EP2267598A1 (en) | 2010-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5501338B2 (ja) | X86の仮想機をサポートするriscプロセッサ装置及び方法 | |
JP3554342B2 (ja) | 拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア | |
US5781750A (en) | Dual-instruction-set architecture CPU with hidden software emulation mode | |
US11086624B2 (en) | Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor | |
US9250904B2 (en) | Modify and execute sequential instruction facility and instructions therefor | |
US5367705A (en) | In-register data manipulation using data shift in reduced instruction set processor | |
JP5357181B2 (ja) | コンピュータ・システム、その動作方法、及び、コンピュータ・プログラム | |
KR100230643B1 (ko) | 고성능 프로세서의 브랜치 예상 동작 방법 및 장치 | |
JP5052678B2 (ja) | コンピュータを動作させる方法及びシステム | |
JP5657074B2 (ja) | 命令が利用可能な汎用レジスタの数を拡張するための上位ワード・ファシリティ | |
JPH06103067A (ja) | 高性能プロセッサにおける分岐予想方法 | |
JPH06131178A (ja) | マルチプロセッサ又はパイプラインプロセッサシステムにおい てデータの完全性を確保する方法 | |
JPH06131175A (ja) | 高性能プロセッサのためのバイト比較操作方法 | |
JPH0695969A (ja) | 高性能プロセッサの変換バッファのためのグラニュラリティヒ ント | |
JPH0695877A (ja) | 簡略命令セットプロセッサの性能改善方法 | |
JPH06131179A (ja) | 分岐を除去することによりコンピュータ性能を改善する方法 | |
JP2011509474A (ja) | コンピュータを動作させる方法及びシステム | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
CN112631657A (zh) | 用于字符串处理的字节比较方法以及指令处理装置 | |
JP2008146544A (ja) | 演算処理装置 | |
JP2002229778A (ja) | 高速ディスプレースメント付きpc相対分岐方式 | |
US6408380B1 (en) | Execution of an instruction to load two independently selected registers in a single cycle | |
JPH0668724B2 (ja) | シミユレーシヨン方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20111212 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20120120 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20120426 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20120427 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130426 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130604 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130904 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130911 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131004 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140304 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140311 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5501338 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |