专利摘要:
RISCプロセッサ及びレジスタのフラグビットの処理方法が開示される。該RISCプロセッサは物理レジスタヒープ、前記の物理レジスタヒープに接続する演算部分、前記の演算部分に接続するデコーダを含む。前記の物理レジスタヒープはCISCプロセッサのフラグレジスタのフラグビットを実現させるのをシミュレートすることに使われるシミュレートフラグレジスタを含む。前記の演算部分は前記のシミュレートフラグレジスタのフラグビットの値を読み書きすることに使われるフラグ読み書きモジュールを含む。前記の演算部分はさらに演算制御機を含み、該演算制御機は、演算の間にRISCプロセッサがX86の仮想機稼動モードであるとき、前記のシミュレートフラグレジスタのフラグビットの値に基づいて演算制御を行う。
公开号:JP2011508921A
申请号:JP2010539995
申请日:2008-11-24
公开日:2011-03-17
发明作者:李国傑;李暁▲ぎょく▼;胡偉武
申请人:中国科学院▲計▼算技▲術▼研究所;
IPC主号:G06F9-00
专利说明:

[0001] 本発明は、コンピュータ・プロセッサの技術に関し、より詳細にはRISCプロセッサ及びレジスタのフラグビットの処理方法に関する。]
背景技術

[0002] 仮想機は、二十世紀六十年代にIBM社により提出された概念であり、現実化されている。当時に主流のコンピュータはメインフレームコンピュータであり、メインフレームコンピュータをいくつかの仮想機に分割し、仮想機のモニタ(Virtual Machine Monitor,VMM)のセグメンテーションを利用することにより、いくつかの異なる応用または複数のユーザがこの貴重な装置を共有することができる。]
[0003] しかし、ハードウェアのコストの減少と演算能力の増加、およびマルチタスクのオペレーティングシステム(OS)の登場によって、徐々に仮想機のモニタが歴史の舞台からさり、マイクロコンピュータとパーソナルコンピュータ(PC)が大活躍してきた。]
[0004] しかし、仮想機の強力と成功の理由は、ユーザが命令セットの組合だけにより形成されることのできる機能及び設備に対するアクセスと利用を実行できることにあるため、最近に、仮想機のモニタは学術界と産業界において再び注目が集められてきた。仮想機のモニタは現代のコンピュータシステムアーキテクチャの制限に対して一つのバーチャルな解決計画を提供し、強大な道具になり、この道具は現代のコンピュータシステムの能力をさらに拡張する。]
[0005] 現在のCISCプロセッサ(Complex Instruction Set Computing,CISC)のアーキテクチャ、例えばX86命令セットのCISCプロセッサのアーキテクチャは数多くの応用に使用されており、たくさんの大型サーバーの応用はX86命令セットのCISCプロセッサのアーキテクチャである。RISCプロセッサ(Reduced Instruction Set Computing,RISC)のアーキテクチャのマイクロプロセッサがサービスと関係する応用を広く実行するためには、CISCプロセッサとの交換性が必要となってきた。また、現在のCISCプロセッサのコンピュータは、アプリケーションがさらに多様化され、数多くのビジネスソフトウェアがCISCプロセッサのベースで開発されているから、RISCマイクロプロセッサがさらに幅広く応用されるために、CISCプロセッサとの交換性の実現は非常に必要となってきた。]
[0006] MIPS命令セットのRISCプロセッサはRISCプロセッサの大きなブランチとして、現在にたくさんのオープンソースの仮想機プラットフォームが存在し、MIPS命令セットのRISCプロセッサからX86命令セットのCISCプロセッサへの、異なるアーキテクチャに対するサポートが実現できる。]
[0007] MIPS命令セットのRISCプロセッサにおいて仮想器によりX86命令セットのCISCプロセッサに対するサポートを提供する際に、様々なことを考慮しなければならない。その中の一つはX86命令セットのCISCプロセッサにおけるフラグレジスタ(EFLAGS)のフラグビットの使用である。]
[0008] X86の命令セットのフラグレジスタ(EFLAGS)は主に以下の三つの部分を含む:
一、CF(キャリーフラグ)、PF(奇偶ビット)、AF(補佐キャリー)、ZF(ゼロフラグ)、SF(マイナスでないフラグ)とOF(オーバーフロー)の6ビットを含む状態フラグ(Status Flags);
二、文字列操作命令の方向を制御することに使われるDF(方向フラグ)フラグ;
三、ステップモードフラグ、中断イネーブル、I/O優先順位等を含み、ユーザプログラムにより変更できないその他のシステムフラグとI/O特権領域(IOPL領域)。]
[0009] X86の命令セットの固定小数点演算命令は、6ビット(bit)をサポートし、CF、PF、AF、ZF、SF、OF全部で6ビットのフラグレジスタ(EFLAGS)のフラグビット演算を含み、即ち数多くの演算命令はデータの値を発生する以外に、フラグレジスタのフラグビットも発生し、これにより、あるシフト命令はフラグビットをシフトの条件として、命令のジャンプを実行することができる。]
[0010] しかし、現在のRISCプロセッサのX86の仮想機において、フラグレジスタの6ビットのフラグビット演算が実現されるとき、シミュレートによって実現されるため、膨大なコストが発生し、性能に大きな悪影響を与える。]
発明が解決しようとする課題

[0011] 本発明の目的は、RISCプロセッサ及びそのレジスタのフラグビットの処理方法を提供することにある。本発明では、RISCプロセッサでフラグレジスタの6ビットのフラグビット演算を実現し、X86命令セットとの交換性を実現し、仮想機の性能を向上させる。]
課題を解決するための手段

[0012] 本発明の目的を実現するために提供したRISCプロセッサは、物理レジスタヒープと、前記の物理レジスタヒープに接続する演算部分と、前記の演算部分に接続するデコーダとを含み、前記の物理レジスタヒープはシミュレートフラグレジスタを含み、該シミュレートフラグレジスタはCISCプロセッサのフラグレジスタのフラグビットを実現させるのをシミュレートすることに使われ、前記の演算部分はフラグ読み書きモジュールを含み、該フラグ読み書きモジュールはシミュレートフラグレジスタのフラグビットの値を読み書きすることに使われる。]
[0013] 前記のデコーダはモード識別モジュールを含み、該モード識別モジュールは、演算がEFLAGS稼動をシミュレートするモードであることを識別し、異なる命令に基づき、シミュレートフラグレジスタをソースレジスタ及び/または目標レジスタにデコードすることに使われる。]
[0014] 前記の演算部分はさらに演算制御機を含み、該演算制御機は、演算の間にRISCプロセッサがX86の仮想機稼動モードであるとき、シミュレートフラグレジスタのフラグビットの値に基づいて、演算制御を行う。]
[0015] 前記のフラグ読み書きモジュールは、フラグ抽出モジュールとフラグ修正モジュールを含み、前記のフラグ抽出モジュールは、1ビット或いは複数ビットのシミュレートフラグレジスタのフラグビットの値を抽出し、その中の8ビットのマスクの値に基づいて、シミュレートフラグレジスタの1ビット或いは複数ビットを抽出することを制御し、抽出されたシミュレートフラグレジスタのフラグビットの値を目標レジスタの中に保存することに使われ、前記のフラグ修正モジュールは、1ビット或いは複数ビットのシミュレートフラグレジスタのフラグビットの値を修正し、その中の8ビットのマスクの値に基づいて、シミュレートフラグレジスタの1ビット或いは複数ビットを修正することを制御し、ソースレジスタの中の値を使用してシミュレートフラグレジスタを修正することに使われる。]
[0016] 前記演算制御は、演算の結果に基づいて新たなシミュレートフラグレジスタのフラグビットを得ることと、およびシミュレートフラグレジスタのフラグビットの1ビット或いは複数ビットに基づき、分岐ジャンプの命令を実行することと含む。]
[0017] 前記のシミュレートフラグレジスタの低い順位の6ビットは高くなる順でそれぞれCFビット、PFビット、AFビット、ZFビット、SFビット、及びOFビットを表す。
本発明の目的を実現するため、さらにRISCプロセッサのレジスタのフラグビットの処理方法を提供する。該RISCプロセッサは、物理レジスタヒープと、前記の物理レジスタヒープに接続する演算部分と、前記の演算部分に接続するデコーダとを含み、前記の物理レジスタヒープはシミュレートフラグレジスタを含み、該シミュレートフラグレジスタはCISCプロセッサのフラグレジスタのフラグビットを実現させるのをシミュレートすることに使われ、前記の演算部分はフラグ読み書きモジュールを含み、該フラグ読み書きモジュールはシミュレートフラグレジスタのフラグビットの値を読み書きすることに使われる。]
[0018] 該方法は、RISCプロセッサにおいてRISCプロセッサの稼動モードをX86の仮想機稼動モードに設定し、即ちシミュレートフラグレジスタを使用可能に設置するステップA、RISCプロセッサが演算する間に、RISCプロセッサの稼動モードがX86の仮想機稼動モードであるとき、シミュレートフラグレジスタのフラグビットの値を読み書きし、及び/又はシミュレートフラグレジスタのフラグビットの値に基づき、演算制御を行うステップBを含む。]
[0019] 前記のステップAとステップBの間にはさらに以下のステップが含まれる。
デコーダは、演算がEFLAGS稼動をシミュレートするモードであると識別したとき、異なる命令に基づき、シミュレートフラグレジスタをソースレジスタ及び/または目標レジスタにデコードする。]
[0020] 前記のステップBは、RISCプロセッサの稼動モードがX86の仮想機稼動モードであるときに、1ビット或いは複数ビットのシミュレートフラグレジスタのフラグビットの値を抽出し、その中の8ビットのマスクの値に基づいて、シミュレートフラグレジスタの1ビット或いは複数ビットを抽出することを制御し、抽出されたシミュレートフラグレジスタのフラグビットの値を目標レジスタの中に保存するステップB1と、RISCプロセッサの稼動モードがX86の仮想機稼動モードであるときに、1ビット或いは複数ビットのシミュレートフラグレジスタのフラグビットの値を修正し、その中の8ビットのマスクの値に基づいて、シミュレートフラグレジスタの1ビット或いは複数ビットを修正することを制御し、ソースレジスタの中の値を使用してシミュレートフラグレジスタを修正するステップB2とを含む。]
[0021] 前記のステップBにおける前記の演算制御のプロセスは、演算の結果に基づいてシミュレートフラグレジスタのフラグビットを得るステップB1′と、シミュレートフラグレジスタのフラグビットの1ビット或いは複数ビットに基づき、分岐ジャンプの命令を実行するステップB2′とを含む。]
[0022] 前記のシミュレートフラグレジスタの低い順位の6ビットは高くなる順でそれぞれCFビット、PFビット、AFビット、ZFビット、SFビット、及びOFビットを表す。]
図面の簡単な説明

[0023] 本発明によるRISCプロセッサ装置のアーキテクチャの略図である。
本発明によるシミュレートフラグレジスタの略図である。
本発明によるRISCプロセッサのレジスタのフラグビットの処理方法のフローチャートである。
本発明の実施例によるシミュレートフラグレジスタのSETFLAG命令コーディングの略図である。
本発明の実施例によるシミュレートフラグレジスタのフラグビットを修正する命令MTFLAGの命令コーディングの略図である。
本発明の実施例によるシミュレートフラグレジスタのフラグビットを読み取る命令MFFLAGの命令コーディングの略図である。
本発明の実施例によるシミュレートフラグレジスタのフラグビットを修正するブラス命令X86ADDの命令コーディングの略図である。
シミュレートフラグレジスタのフラグビットに基づき分岐ジャンプを行うX86JM-EFLAGS命令のコーディングの略図である。]
実施例

[0024] 本発明の目的、技術の解決策、および本発明の利点をより明確にするため、以下に添付図面及び実施例により、本発明によるRISCプロセッサ装置及びレジスタのフラグビットの処理方法について更に詳細に説明する。ここで説明される例は、本発明を解釈するためのものであって、本発明の範囲を限定するためのものではないと理解されるべきである。]
[0025] 本発明の実施例は、MIPS64命令セットのRISCプロセッサ装置を例として、本発明について説明するが、本発明の特許請求の範囲を限定するためのものではなく、本発明はその他の命令セットのRISCプロセッサにおいても適用できる。]
[0026] 図1に示されているように、本発明の目的を実現するため、RISCプロセッサを提供し、該RISCプロセッサは物理レジスタヒープ1、前記の物理レジスタヒープ1に接続する演算部分3、及び前記の演算部分3に接続するデコーダ2を含む。]
[0027] 前記の物理レジスタヒープはシミュレートフラグレジスタ4(M-EFLAGS)を含み、X86命令セットのCISCプロセッサのフラグレジスタ(EFLAGS)のフラグビットを実現させるのをシミュレートすることに使われる。図2に示されているように、該レジスタの低い順位の6ビットは高くなる順でそれぞれCFビット、PFビット、AFビット、ZFビット、SFビットとOFビットを表す。]
[0028] その中:
OFは、結果がオーバーフローになる場合には、OFを1と設置し、そうでない場合には、OFをリセットすると表す;
SFは、結果の最高ビットを保存すると表す;
ZFは、結果が0になる場合には、ZFを1と設置し、そうでない場合には、ZFをリセットすると表す;
AFは、演算中に3番目のビットから4番目のビットへの桁上げまたは借りがある場合には、AFを1と設置し、そうでない場合には、AFをリセットすると表す;
PFは、結果の最低バイトに偶数個の1がある場合には、PFを1と設置し、そうでない場合には、PFをリセットすると表す;
CFは、演算中最高ビットからさらに高いビットへの桁上げまたは借りがある場合には、CFを1と設置し、そうでない場合には、CFをリセットすると表す。]
[0029] 前記のデコーダ2はモード識別モジュール21を含み、この識別モジュール2は、演算がRISCプロセッサのX86の仮想機稼動モード、即ちEFLAGS稼動をシミュレートするモードであると識別し、そして異なる命令に基づき、シミュレートフラグレジスタをソースレジスタ及び/または目標レジスタにデコードする。]
[0030] 前記の演算部分3はフラグ読み書きモジュール31を含み、このモジュール31はシミュレートフラグレジスタ4のフラグビットの値を読み書きすることに使われる。
前記のフラグ読み書きモジュール31はフラグ抽出モジュール311とフラグ修正モジュール312を含み、その中:
前記のフラグ抽出モジュール311は、1ビット或いは複数ビットのシミュレートフラグレジスタ4のフラグビットの値を抽出し、その中の8ビットのマスク(mask)の値に基づいて、シミュレートフラグレジスタ4の1ビット或いは複数ビットを抽出することを制御し、抽出されたシミュレートフラグレジスタ4のフラグビットの値を目標レジスタの中に保存することに使われる。]
[0031] 前記のフラグ修正モジュール312は、1ビット或いは複数ビットのシミュレートフラグレジスタ4のフラグビットの値を修正し、その中の8ビットのマスク(mask)の値に基づいて、シミュレートフラグレジスタ4の1ビット或いは複数ビットを修正することを制御し、ソースレジスタの中の値を使用してシミュレートフラグレジスタ4を修正することに使われる。]
[0032] 前記の演算部分3はさらに演算制御機32を含み、この演算制御機32は、RISCプロセッサが演算している間に、RISCプロセッサのX86の仮想機稼動モードである場合、シミュレートフラグレジスタ4のフラグビットの値に基づき、演算制御を行う。]
[0033] 前記演算制御は、演算の結果に基づいて新たなシミュレートフラグレジスタ4(M-EFLAGS)のフラグビットを得ることと、およびシミュレートフラグレジスタ4(M-EFLAGS)のフラグビットの1ビット或いは複数ビットに基づき、分岐ジャンプの命令を実行することとを含む。]
[0034] 以下に、本発明によるRISCプロセッサのレジスタのフラグビットの処理方法を詳しく説明する。該RISCプロセッサは物理レジスタヒープ1、前記の物理レジスタヒープ1に接続する演算部分3、および前記の演算部分3に接続するデコーダ2を含む。前記の物理レジスタヒープ1はシミュレートフラグレジスタ4を含み、CISCプロセッサのフラグレジスタのフラグビットを実現させるのをシミュレートすることに使われる。前記の演算部分3はフラグ読み書きモジュール31を含み、シミュレートフラグレジスタ4のフラグビットの値を読み書きすることに使われる。図3に示されているように、該方法は以下のステップを含む:
ステップS100:RISCプロセッサにおいてRISCプロセッサの稼動モードをX86の仮想機稼動モードに設定し、即ちシミュレートフラグレジスタ4が使用できることをし、デコーダは演算がRISCプロセッサのX86の仮想機稼動モード、即ちEFLAGS稼動をシミュレートするモードであると識別し、そして異なる命令に基づき、シミュレートフラグレジスタをソースレジスタ及び/または目標レジスタにデコードする;
シミュレートフラグレジスタ4(M-EFLAGS)がX86の命令セットのフラグレジスタ(EFLAGS)のフラグビットを擬似的に実現し、該レジスタの低い順位の6ビットは高くなる順でそれぞれCFビット、PFビット、AFビット、ZFビット、SFビットとOFビットを表す。] 図3
[0035] その中:
OFは、結果がオーバーフローになる場合には、OFを1と設置し、そうでない場合には、OFをリセットすると表す;
SFは、結果の最高ビットを保存すると表す;
ZFは、結果が0になる場合には、ZFを1と設置し、そうでない場合には、ZFをリセットすると表す;
AFは、演算中に3番目のビットから4番目のビットへの桁上げまたは借りがある場合には、AFを1と設置し、そうでない場合には、AFをリセットすると表す;
PFは、結果の最低バイトに偶数個の1がある場合には、PFを1と設置し、そうでない場合には、PFをリセットすると表す;
CFは、演算中最高ビットからさらに高いビットへの桁上げまたは借りがある場合には、CFを1と設置し、そうでない場合には、CFをリセットすると表す。]
[0036] シミュレートフラグレジスタ4が利用できるとき、該演算がRISCプロセッサのX86の仮想機稼動モード、即ちEFLAGS稼動をシミュレートするモードにあると識別し、実行結果に基づいて当該シミュレートフラグレジスタ4の値を修正する。そして異なる命令に基づき、シミュレートフラグレジスタをソースレジスタ及び/または目標レジスタにデコードし、元の目標レジスタの中に結果を保存しなくても済む。]
[0037] 一つの実施可能な方式では、シミュレートフラグレジスタ4に関連する命令がシミュレートフラグレジスタ4のフラグビットを修正するとき、該命令の前に同指令がRISCプロセッサのX86の仮想機稼動モードであることを示すプレフィックス命令SETFLAGがあり、この命令は、その以降の命令がX86の仮想機モードにあることを示す。]
[0038] 命令フォーマット:SETFLAG/ EFLAGS稼動モードのプレフィックス命令をシミュレートする。
この命令は、該命令の直後の命令がEFLAGS稼動モードをシミュレートしていることを表す。]
[0039] そのコーディングは図4に示されているように。
その命令を実行するとき、実行結果に基づいて当該シミュレートフラグレジスタ4のフラグビットの値を修正し、目標レジスタの中に結果を保存しない。以下に具体例をあげる。] 図4
[0040] 正常のMIPS命令:
ADD$5,$1,$2
1番汎用レジスタと2番汎用レジスタの中の値を加算し、その結果を5番汎用レジスタの中に保存することを表す。]
[0041] シミュレートフラグレジスタ4のフラグビットを修正する命令:
SETFLAG
ADD$5,$1,$2
この命令は、1番汎用レジスタと2番汎用レジスタの中の値を加算し、演算結果は保存しないが、結果に基づいてシミュレートフラグレジスタ4の中のフラグビットの当該ビットを修正することを表す。]
[0042] デコーダ2の入力セットはすべての可能な32ビットコードであり、すべての合法命令と非法命令を含む。この方式では、デコーダ2が新たな一つの合法入力を増やした:SETFLAG。この命令は、該命令の直後の命令がRISCプロセッサのX86の仮想機稼動モードであり、即ちEFLAGS稼動モードをシミュレートしていることを表す。]
[0043] デコーダ2がプレフィックス命令に基づき、プレフィックス命令後の一つの命令をデコードするとき、その出力はEFLAGS稼動モードをシミュレートしていることに基づき、調整内部の操作コードを演算部分に送り、このときこの命令の目標レジスタがデコードによりシミュレートフラグレジスタ4(M-EFLAGS)になり、その中の一つのソースレジスタもシミュレートフラグレジスタ4(M-EFLAGS)になる。いくつかの演算は、一部分のシミュレートフラグレジスタ4(M-EFLAGS)だけを修正するから、元のシミュレートフラグレジスタ4(M-EFLAGS)を演算部分3に送り込む必要がある。]
[0044] その中、前記の調整内部操作コード、名前の変更即ち論理レジスタから物理レジスタにマッピングすること、および読み書きレジスタのポートなどの操作内容を含む、これらは当業者が周知する内容であるため、本発明で詳しく説明しない。]
[0045] デコーダ2がデコーディングしたあと、命令を演算部分3に出力し、演算部分3は内部の操作コードを確認する。正常な命令であれば正常な流れに従って演算する; EFLAGS稼動モードをシミュレートするモードであれば、まず結果を演算し、演算の結果と中間結果に基づいてシミュレートフラグレジスタ4(M-EFLAGS)のフラグビットを設置し、目標レジスタの中に演算の結果を保存しなくてもよい。]
[0046] もう一つの発明を実施するための形態では、本発明の中に頻繁に使用されるシミュレートフラグレジスタ4のフラグビットを修正する命令が、X86の命令に対して一対一で対応し、そうすれば、一つの命令は元の二つの命令(一つのSETFLAGと一つの正常なMIPS命令)に相当する。以下に実例を挙げる。]
[0047] 頻繁に使用されるシミュレートフラグレジスタ4のフラグビットを修正する加算命令(ADD)について、命令をX86ADDと定義する、そして
X86ADD $5,$1,$2 は
SETFLAG
ADD $5,$1,$2 に
相当する。]
[0048] これらの頻繁に使用される命令について、コーディングの間に独立な命令スロットを分配し、性能部分がこれらの命令を識別したあと、得られた結果を目標レジスタの中に送らずに、結果に基づき当該のシミュレートフラグレジスタ4(M-EFLAGS)のフラグビットを得て、フラグビットをシミュレートフラグレジスタ4(M-EFLAGS)に送り込む。]
[0049] ステップS200:RISCプロセッサが演算する間に、RISCプロセッサの稼動モードがX86の仮想機稼動モードになるとき、シミュレートフラグレジスタ4のフラグビットの値を読み書きし、あるいは/及びシミュレートフラグレジスタ4のフラグビットの値に基づき演算制御が行われる。]
[0050] 前記のステップS200において、シミュレートフラグレジスタ4のフラグビットの値の読み書きは以下のステップを含む。
ステップS210:RISCプロセッサがX86の仮想機の稼動モードである場合、1ビット又は複数ビットのシミュレートフラグレジスタ4のフラグビットの値を抽出し、その中の8ビットのマスク(mask)の値に基づいて、シミュレートフラグレジスタ4のフラグビットの値の1ビット或いは複数ビットを抽出することが制御される。抽出されたシミュレートフラグレジスタ4のフラグビットの値を目標レジスタの中に保存する。]
[0051] ステップS220:RISCプロセッサがX86の仮想機の稼動モードである場合、1ビット或いは複数ビットのシミュレートフラグレジスタ4のフラグビットの値を修正し、その中の8ビットのマスク(mask)の値に基づいて、シミュレートフラグレジスタ4のフラグビットの値の1ビット或いは複数ビットを修正することが制御される。ソースレジスタの中の値を使用してシミュレートフラグレジスタ4を修正する。]
[0052] 一つの実施可能な方式として、本発明の実施例は二つの命令MTFLAGとMFFLAGを通じてシミュレートフラグレジスタ4のフラグビットの値を修正または読み書きする、この二つの命令の命令コーディングは図5と図6に示されているように。これらの命令は、8ビットのマスク(mask)を使用しシミュレートフラグレジスタ4の当該フラグビットを修正または読み書きし、一つの指定した汎用レジスタの中に、それぞれにシミュレートフラグレジスタ4のフラグビットの値を書き込み、またはシミュレートフラグレジスタ4のフラグビットの値を読み込むことはできる。] 図5 図6
[0053] MTFLAG命令は1ビットか複数ビットのシミュレートフラグレジスタ4(M-EFLAGS)のフラグビットの値を抽出することを実現する。命令の中の8ビットのマスク(mask)の値(即値で表す)に基づいて、シミュレートフラグレジスタ4の中の1ビット又は複数ビットを抽出することが制御される。抽出されたシミュレートフラグレジスタ4(M-EFLAGS)のフラグビットの値を目標レジスタGPR[rt]の中に保存する。]
[0054] マスク(mask)でシミュレートフラグレジスタ4のフラグビットを抽出することの実現は、以下の式で表される。
GPR[rt]←M-EFLAGS & mask
たとえば、マスク(mask)の値は0x00000100として、シミュレートフラグレジスタ4(M-EFLAGS)の第2ビット、即ちAFビットの内容を抽出し、目標レジスタGPR[rt]の中に入れる。]
[0055] MTFLAG命令は1ビットか複数ビットのシミュレートフラグレジスタ4(M-EFLAGS)のフラグビットの値を直接に修正する。命令の中の8ビットのマスク(mask)の値(即値で表す)に基づいてシミュレートフラグレジスタ4(M-EFLAGS)の中の1ビット又は複数ビットを修正することが制御される。GPR[rt]ソースレジスタの中の値を使用してシミュレートフラグレジスタ4(M-EFLAGS)を修正する。]
[0056] マスク(mask)でシミュレートフラグレジスタ4のフラグビットを修正することの制御は、以下の式で表される。
M-EFLAGS & mask←GPR[rs]
たとえば、GPR[rs]の低い順番の8ビットの内容は0x00010010として、マスク(mask)の値は0x00110011として、この命令は該シミュレートフラグレジスタ4(M-EFLAGS)の中のCF、PF、SFとOFビットを修正し、この4ビットをそれぞれ0、1、1と0に設定させる。]
[0057] 前記のステップS200において、前記の演算制御の流れは以下のステップを含む。
ステップ210′:演算の結果に基づいてシミュレートフラグレジスタ4(M-EFLAG)のフラグビットが得られる。]
[0058] たとえば、シミュレートフラグレジスタ4(M-EFLAG)のフラグビットに基づいて直接演算する命令は例えばX86ADDである。
X86ADD / EFLAGSビットの32ビットの加算だけに影響する。
命令のフォーマットは:X86ADD rs, rt
命令はGPR[rs]レジスタの中の32ビットの整数とGPR[rt]レジスタの中の32ビットの整数を加算して、32ビットの結果が得られる。この結果を保存せず、結果に基づきシミュレートフラグレジスタ4(M-EFLAGS)のOF/SF/ZF/AF/PFビットを修正するだけである。]
[0059] そのコーディングは図7に示されているように。
ステップ220′:シミュレートフラグレジスタ4(M-EFLAG)のフラグビット中の1ビット又は複数ビットに基づいて分岐ジャンプの命令を実行する。] 図7
[0060] たとえば、X86J M-EFLAGSの条件遷移
命令のフォーマットは:X86J.fmt offset
X86J命令は、EFLAGSの中の何ビットを比較し、対応の条件に基づいてプロセッサと関連するジャンプを行う。]
[0061] そのコーディングは図8に示されているように。
ここで、異なる命令サフィックス(fmt)は異なる条件を表し、たとえば「X86J.a fmt=0」は、「CF=0」かつ「ZF=0」のときにジャンプが行われることを表す。] 図8
[0062] MIPS64命令セットの32ビット命令コードの高い順位の6ビット(31ビット:26ビット)はopcode領域となる。その中のSPECIAL2(opcodeは011100となる)の命令スロットは、MIPSのルールによってユーザが自分で定義してもよいものである。本発明の実施例の新たに増えた命令はすべて既存したMIPS64命令セットの中に保留したSPECIAL2の空スロットの値で実現された。]
[0063] 本発明の効果:本発明によるRISCプロセッサ装置及びレジスタのフラグビットの処理方法は、MIPS命令セットのRISCプロセッサにおいて、X86命令セットのCISCプロセッサのフラグレジスタ(EFLAGS)の6ビット(bit)のフラグビットに必要なハードウェアのサポートを提供し、仮想機の最適化の自由度を増大させ、仮想機の性能を向上させることができる。]
[0064] 本発明によるRISCプロセッサ装置及びデータ処理方法は、MIPSアーキテクチャにおいて、X86のEFLAGSのフラグビットに必要なハードのウェアサポートを提供し、仮想機の最適化の自由度を増大させ、仮想機の性能を向上させることができる。]
[0065] 添付図面に基づく本発明の実施例の上記詳細な説明により、本発明のその他の態様および特徴は同業者には自明である。
以上、本発明の実施例について説明したが、これらの実施例は単なる例であって、本発明を限定するためのものではない。本発明は、添付した特許請求の範囲に従って解釈されるべきである。]
[0066] 本発明によるRISCプロセッサ装置及びレジスタのフラグビットの処理方法は、MIPS命令セットのRISCプロセッサにおいて、X86命令セットのCISCプロセッサのフラグレジスタ(EFLAGS)の6ビット(bit)のフラグビットに必要なハードウェアのサポートを提供し、即ちシミュレートフラグレジスタを利用してX86の命令セットのCISCプロセッサのフラグレジスタのフラグビットを実現させるのをシミュレートする。本発明は、仮想機の最適化の自由度を増大させることができ、仮想機の性能を向上させることができる。]
权利要求:

請求項1
物理レジスタヒープと、前記の物理レジスタヒープに接続する演算部分と、前記の演算部分に接続するデコーダとを含むRISCプロセッサにおいて、前記の物理レジスタヒープはシミュレートフラグレジスタを含み、該シミュレートフラグレジスタはCISCプロセッサのフラグレジスタのフラグビットを実現させるのをシミュレートすることに使われ、前記の演算部分はフラグ読み書きモジュールを含み、該フラグ読み書きモジュールはシミュレートフラグレジスタのフラグビットの値を読み書きすることに使われることを特徴とするRISCプロセッサ装置。
請求項2
前記のデコーダはモード識別モジュールを含み、該モード識別モジュールは、演算がEFLAGS稼動をシミュレートするモードであることを識別し、異なる命令に基づき、シミュレートフラグレジスタをソースレジスタ及び/または目標レジスタにデコードすることに使われることを特徴とする請求項1に記載のRISCプロセッサ装置。
請求項3
前記の演算部分はさらに演算制御機を含み、該演算制御機は、演算の間にRISCプロセッサがX86の仮想機稼動モードであるとき、シミュレートフラグレジスタのフラグビットの値に基づいて演算制御を行うことを特徴とする請求項1に記載のRISCプロセッサ装置。
請求項4
前記のフラグ読み書きモジュールは、フラグ抽出モジュールとフラグ修正モジュールを含み、前記のフラグ抽出モジュールは、1ビット或いは複数ビットのシミュレートフラグレジスタのフラグビットの値を抽出し、その中の8ビットのマスクの値に基づいて、シミュレートフラグレジスタの1ビット或いは複数ビットを抽出することを制御し、抽出されたシミュレートフラグレジスタのフラグビットの値を目標レジスタの中に保存することに使われ、前記のフラグ修正モジュールは、1ビット或いは複数ビットのシミュレートフラグレジスタのフラグビットの値を修正し、その中の8ビットのマスクの値に基づいて、シミュレートフラグレジスタの1ビット或いは複数ビットを修正することを制御し、ソースレジスタの中の値を使用してシミュレートフラグレジスタを修正することに使われることを特徴とする請求項1に記載のRISCプロセッサ装置。
請求項5
前記演算制御は、演算の結果に基づいて新たなシミュレートフラグレジスタのフラグビットを得ることと、およびシミュレートフラグレジスタのフラグビットの1ビット或いは複数ビットに基づき、分岐ジャンプの命令を実行することとを含むことを特徴とする請求項3に記載のRISCプロセッサ装置。
請求項6
前記のシミュレートフラグレジスタの低い順位の6ビットは高くなる順でそれぞれCFビット、PFビット、AFビット、ZFビット、SFビット、及びOFビットを表すことを特徴とする請求項1から5のいずれかに記載のRISCプロセッサ装置。
請求項7
RISCプロセッサのレジスタのフラグビットの処理方法であって、前記RISCプロセッサは、物理レジスタヒープと、前記の物理レジスタヒープに接続する演算部分と、前記の演算部分に接続するデコーダとを含み、前記の物理レジスタヒープはシミュレートフラグレジスタを含み、該シミュレートフラグレジスタはCISCプロセッサのフラグレジスタのフラグビットを実現させるのをシミュレートすることに使われ、前記の演算部分はフラグ読み書きモジュールを含み、該フラグ読み書きモジュールはシミュレートフラグレジスタのフラグビットの値を読み書きすることに使われる処理方法において、RISCプロセッサにおいてシミュレートフラグレジスタを使用可能に設置するステップAと、RISCプロセッサが演算する間に、RISCプロセッサの稼動モードがX86の仮想機稼動モードであるとき、シミュレートフラグレジスタのフラグビットの値を読み書きし、及び/又はシミュレートフラグレジスタのフラグビットの値に基づき演算制御を行うステップBとを含むことを特徴とするRISCプロセッサのレジスタのフラグビットの処理方法。
請求項8
前記のステップAは、デコーダは演算がEFLAGS稼動をシミュレートするモードであると識別したとき、異なる命令に基づき、シミュレートフラグレジスタをソースレジスタ及び/または目標レジスタにデコードするステップを更に含むことを特徴とする請求項7に記載のRISCプロセッサのレジスタのフラグビットの処理方法。
請求項9
前記のステップBは、RISCプロセッサの稼動モードがX86の仮想機稼動モードであるときに、1ビット或いは複数ビットのシミュレートフラグレジスタのフラグビットの値を抽出し、その中の8ビットのマスクの値に基づいて、シミュレートフラグレジスタの1ビット或いは複数ビットを抽出することを制御し、抽出されたシミュレートフラグレジスタのフラグビットの値を目標レジスタの中に保存するステップB1と、RISCプロセッサの稼動モードがX86の仮想機稼動モードであるときに、1ビット或いは複数ビットのシミュレートフラグレジスタのフラグビットの値を修正し、その中の8ビットのマスクの値に基づいて、シミュレートフラグレジスタの1ビット或いは複数ビットを修正することを制御し、ソースレジスタの中の値を使用してシミュレートフラグレジスタを修正するステップB2とを含むことを特徴とする請求項7または請求項8に記載のRISCプロセッサのレジスタのフラグビットの処理方法。
請求項10
前記のステップBにおける前記の演算制御のプロセスは、演算の結果に基づいてシミュレートフラグレジスタのフラグビットを得るステップB1′と、シミュレートフラグレジスタのフラグビットの1ビット或いは複数ビットに基づき、分岐ジャンプの命令を実行するステップB2′とを含むことを特徴とする請求項7または請求項8に記載のRISCプロセッサのレジスタのフラグビットの処理方法。
請求項11
前記のシミュレートフラグレジスタの低い順位の6ビットは、高くなる順でそれぞれCFビット、PFビット、AFビット、ZFビット、SFビット、及びOFビットを表すことを特徴とする請求項7または請求項8に記載のRISCプロセッサのレジスタのフラグビットの処理方法。
类似技术:
公开号 | 公开日 | 专利标题
US10209989B2|2019-02-19|Accelerated interlane vector reduction instructions
JP6206881B2|2017-10-04|多機能命令のうちの選択されたインストール済み機能を隠蔽するためのコンピュータで実装される方法、コンピュータ・システム、およびコンピュータ・プログラム
US9959117B2|2018-05-01|Instruction to load data up to a specified memory boundary indicated by the instruction
US9952862B2|2018-04-24|Instruction to load data up to a dynamically determined memory boundary
Sites et al.2014|Alpha AXP architecture reference manual
AU2013233993B2|2016-05-19|Vector Find Element Equal instruction
AU2012373735B2|2016-06-02|Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9477468B2|2016-10-25|Character data string match determination by loading registers at most up to memory block boundary and comparing to avoid unwarranted exception
EP2756415B1|2015-10-07|Vector find element not equal instruction
US9135004B2|2015-09-15|Rotate then operate on selected bits facility and instructions therefor
ES2675512T3|2018-07-11|Instrucción para calcular la distancia a un límite de memoria específico
US6564179B1|2003-05-13|DSP emulating a microcontroller
JP3801545B2|2006-07-26|コンパイラ用プログラム、コンパイラ装置及びコンパイル方法
US9740483B2|2017-08-22|Vector checksum instruction
US6009261A|1999-12-28|Preprocessing of stored target routines for emulating incompatible instructions on a target processor
JP5736028B2|2015-06-17|3個のソースオペランドを加算する加算命令
US9442722B2|2016-09-13|Vector string range compare
US20160062954A1|2016-03-03|Flexible high-speed generation and formatting of application-specified strings
US8949580B2|2015-02-03|RISC processor apparatus and method for supporting X86 virtual machine
JP3657949B2|2005-06-08|拡張ワード寸法及びアドレス空間を有する逆互換性コンピュータアーキテクチュア
US9727334B2|2017-08-08|Vector exception code
US10338918B2|2019-07-02|Vector Galois Field Multiply Sum and Accumulate instruction
CA2867117C|2020-02-18|Finding the length of a set of character data having a termination character
KR100190252B1|1999-06-01|고속 프로세서에서의 브랜치 처리 방법 및 장치
US5903760A|1999-05-11|Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture | into a conditional instruction compatible with a second ISA
同族专利:
公开号 | 公开日
EP2226731A4|2010-12-29|
CN101196869A|2008-06-11|
KR20100095604A|2010-08-31|
WO2009086727A1|2009-07-16|
US20100268916A1|2010-10-21|
CA2709753A1|2009-07-16|
CN100530164C|2009-08-19|
EP2226731A1|2010-09-08|
CA2709753C|2016-08-23|
US9189232B2|2015-11-17|
JP5299979B2|2013-09-25|
KR101139395B1|2012-04-27|
EP2226731B1|2018-04-18|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
JPH025138A|1988-02-01|1990-01-10|Internatl Business Mach Corp <Ibm>|Simulation method|
JPH0387930A|1989-06-15|1991-04-12|Unisys Corp|Emulator assist unit and co-processor emulator using the same|
JPH04199331A|1990-11-29|1992-07-20|Hitachi Ltd|Microcomputer|
US5481693A|1994-07-20|1996-01-02|Exponential Technology, Inc.|Shared register architecture for a dual-instruction-set CPU|
US5685009A|1994-07-20|1997-11-04|Exponential Technology, Inc.|Shared floating-point registers and register port-pairing in a dual-architecture CPU|
JPH1153189A|1997-07-31|1999-02-26|Toshiba Corp|演算装置、演算方法及びコンピュータ読み取り可能な記録媒体|
US6055624A|1998-04-07|2000-04-25|International Business Machines Corporation|Millicode flags with specialized update and branch instructions|
US20050262330A1|2001-10-23|2005-11-24|Ip-First Llc|Apparatus and method for masked move to and from flags register in a processor|
JP2004038923A|2002-02-06|2004-02-05|Transitive Technologies Ltd|プログラムコード変換のための条件コードフラグのエミュレーション|
JP2006505844A|2002-11-04|2006-02-16|トランジティブリミテッド|プログラムコード変換の検証を実行するための方法および装置|JP2013093051A|2013-02-04|2013-05-16|Renesas Electronics Corp|データプロセッサ|
JP2014225285A|2014-07-30|2014-12-04|ルネサスエレクトロニクス株式会社|データプロセッサ|US4992934A|1986-12-15|1991-02-12|United Technologies Corporation|Reduced instruction set computing apparatus and methods|
US5463778A|1989-11-16|1995-10-31|Texas Instruments Incorporated|User controlled trap handler|
JP2507638B2|1989-12-01|1996-06-12|三菱電機株式会社|デ―タ処理装置|
US5630082A|1993-10-29|1997-05-13|Advanced Micro Devices, Inc.|Apparatus and method for instruction queue scanning|
EP0651320B1|1993-10-29|2001-05-23|Advanced Micro Devices Inc.|Superscalar instruction decoder|
US5481684A|1994-01-11|1996-01-02|Exponential Technology, Inc.|Emulating operating system calls in an alternate instruction set using a modified code segment descriptor|
US5884057A|1994-01-11|1999-03-16|Exponential Technology, Inc.|Temporal re-alignment of a floating point pipeline to an integer pipeline for emulation of a load-operate architecture on a load/store processor|
US5781750A|1994-01-11|1998-07-14|Exponential Technology, Inc.|Dual-instruction-set architecture CPU with hidden software emulation mode|
US5664159A|1994-03-08|1997-09-02|Exponential Technology, Inc.|Method for emulating multiple debug breakpoints by page partitioning using a single breakpoint register|
US5574927A|1994-03-25|1996-11-12|International Meta Systems, Inc.|RISC architecture computer configured for emulation of the instruction set of a target computer|
US6076155A|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|
US6807625B1|2000-02-18|2004-10-19|Hewlett-Packard Development Company, L.P.|Method and apparatus for efficiently generating, storing, and consuming arithmetic flags between producing and consuming macroinstructions when emulating with microinstructions|
CN1216327C|2003-05-15|2005-08-24|复旦大学|采用双指令集的32位嵌入式微处理器|
US8429356B2|2005-11-02|2013-04-23|Ati Technologies Ulc|Write data mask method and system|
CN100530164C|2007-12-29|2009-08-19|中国科学院计算技术研究所|一种risc处理器及其寄存器标志位处理方法|CN100530164C|2007-12-29|2009-08-19|中国科学院计算技术研究所|一种risc处理器及其寄存器标志位处理方法|
JP5193624B2|2008-02-19|2013-05-08|ルネサスエレクトロニクス株式会社|データプロセッサ|
US8615647B2|2008-02-29|2013-12-24|Intel Corporation|Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state|
CN101876954B|2009-12-23|2012-08-15|中国科学院计算技术研究所|一种虚拟机控制系统及其工作方法|
US9811338B2|2011-11-14|2017-11-07|Intel Corporation|Flag non-modification extension for ISA instructions using prefixes|
US20140059322A1|2011-12-23|2014-02-27|Elmoustapha Ould-Ahmed-Vall|Apparatus and method for broadcasting from a general purpose register to a vector register|
CN103377031B|2012-04-27|2017-09-26|腾讯科技(深圳)有限公司|一种多数据处理方法和装置|
US9251377B2|2012-12-28|2016-02-02|Intel Corporation|Instructions processors, methods, and systems to process secure hash algorithms|
CN105446791B|2014-08-26|2018-11-20|龙芯中科技术有限公司|标志位模拟方法、装置和处理器|
法律状态:
2012-01-21| RD04| Notification of resignation of power of attorney|Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20120120 |
2012-04-27| A711| Notification of change in applicant|Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20120426 |
2012-05-18| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20120427 |
2012-12-07| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121205 |
2012-12-12| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121211 |
2013-03-12| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20130311 |
2013-03-19| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20130318 |
2013-03-19| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130318 |
2013-04-10| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130409 |
2013-05-08| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130507 |
2013-05-16| TRDD| Decision of grant or rejection written|
2013-05-22| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130521 |
2013-06-20| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130612 |
2013-06-28| R150| Certificate of patent or registration of utility model|Ref document number: 5299979 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
2016-05-10| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2017-05-16| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2018-04-24| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2019-04-09| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2020-04-08| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2021-04-05| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]