专利摘要:
RISCプロセッサ装置及び浮動小数点のスタック操作をシミュレートする方法が開示される。該プロセッサ装置は、複数の浮動小数点レジスタを含む浮動小数点レジスタヒープと、該RISCプロセッサの操作命令をデコードすることに使われるデコーダと、該デコーダと接続する浮動小数点演算部分と、該浮動小数点レジスタの状態を制御し、デコーダと浮動小数点演算部分が該浮動小数点レジスタヒープを利用して浮動小数点レジスタスタックをシミュレートすることを制御することに使われる制御レジスタとを含む。前記のデコーダはポインタレジスタを含み、該ポインタレジスタは、スタックの操作ポインタを維持し、スタック操作ポインタの値を保存することに使われる。浮動小数点演算部分はポインタ操作モジュールを含み、該ポインタ操作モジュールは該ポインタレジスタを操作し、浮動小数点レジスタスタック操作をシミュレートするとき、ポインタレジスタのスタックポインタのスタック操作をシミュレートし、スタックポインタの状態を変更かつ監視することに使われる。
公开号:JP2011508324A
申请号:JP2010539999
申请日:2008-12-12
公开日:2011-03-10
发明作者:李暁▲ぎょく▼;段▲い▼
申请人:中国科学院▲計▼算技▲術▼研究所;
IPC主号:G06F9-00
专利说明:

[0001] 本発明は、マイクロ・プロセッサの技術に関し、より詳細には縮小命令セットコンピュータ(RISC)のプロセッサ装置、及びその浮動小数点のスタック操作のシミュレーション、並びに浮動小数点データのスタックプッシュとスタックポップ等のスタック操作の方法に関する。]
背景技術

[0002] 中央処理装置(CPU)は、略称がマイクロ・プロセッサであり、コンピュータの中最も重要な部分である。マイクロ・プロセッサに使用された命令セット、設計標準(アーキテクチャ)は、コンピュータにおいて最も重要な特徴であり、コンピュータに利用できる周辺装置及びアプリケーションソフトを決めている。]
[0003] 現在に流行している二つのプロセッサアーキテクチャはMIPS社のMIPS32/64命令セットを代表とした縮小命令セットコンピュータ(Reduced Instruction Set Computing,RISC)のプロセッサアーキテクチャとIntel会社のX86を代表とした複合命令セットコンピュータ(Complex Instruction Set Computing,CISC)のプロセッサアーキテクチャである。CISCプロセッサは命令の数が多量にあり、その中に非常に複雑な機能が実行できる命令もあり、その機能を実行するには普通に多量なクロック周期が必要とする。一方、RISCプロセッサは命令の数が比較的に少なく、より簡単な機能をより効率的に実行する。アプリケーションソフトを異なるアーキテクチャのプロセッサで実行するためには、その異なるアーキテクチャに基づきソフトを作り直さなければならない。しかし、通常X86で応用できるアプリケーションソフトはMIPS命令セットのRISCプロセッサのコンピュータで実行できなく、即ちコンパチビリティがない。]
[0004] しかし、コンピュータの製造メーカは、自分で製造した一種類のアーキテクチャのプロセッサで、できるだけ多くの既存ソフトを実行することにより、ソフトの開発費用を節約するとともに、市場の占用率の最大化にすることを希望している。]
[0005] この問題を解決するため、仮想機が誕生した。一般的には、一種類のアーキテクチャを有するプロセッサ(CPU)のコンピュータをホストコンピュータと呼び、同時にホストコンピュータでエミュレートする異なるアーキテクチャ種類を有するプロセッサ(CPU)環境をゲストコンピュータと呼ぶ。さらに、ホストコンピュータに一つまたは複数の命令を実行させるアプリケーションプログラムは必要であり、このプログラムは決められたゲストコンピュータの命令に応答し、ゲストコンピュータのために作られたソフトを実行する。このプログラムは仮想機と呼ぶ。]
[0006] 従来の仮想機にはSimOS、QEMU、Transmetaなどがある。しかし、従来の仮想機は、各種類のアーキテクチャの大きな差によって仮想機の稼動に過大なコストが発生し、実行効率が低すぎるため、実際の応用に困難である。]
[0007] X86のプロセッサアーキテクチャは現在のパソコン(PC)で流行しているプロセッサアーキテクチャであるため、ほとんどの仮想機はX86のプロセッサアーキテクチャをゲストコンピュータとして、X86のプロセッサの互換性の問題を解決する必要があり、その中に最も難しい問題はX86プロセッサの特有の浮動小数点スタックのメカニズムをシミュレートすることである。一般的には、CISCクラスのプロセッサ、例えばX86の中にひとつの浮動小数点レジスタスタックが設置され、ほとんどの浮動小数点演算はレジスタスタックが関与した状態で行われている。X86のプロセッサ以外にその他のプロセッサ、特にMIPS命令セットのRISCプロセッサは似たようなアーキテクチャがないため、どのように仮想機で浮動小数点の翻訳をするかは、仮想機の開発部門が最も解決したい問題である。]
[0008] X86のプロセッサの浮動小数点演算はスタックプッシュ(浮動小数点のロード命令)、スタックポップ(浮動小数点のストア命令)、浮動小数点の演算命令とそのほかの補助命令を提供する。プログラムは浮動小数点のロード命令によりメモリー中の浮動小数点データを浮動小数点レジスタスタックにプッシュし、浮動小数点の演算命令によって浮動小数点データを演算し、浮動小数点のストア命令によってスタックポップして、スタックTOPレジスタの内容をメモリーユニットに保存する。]
[0009] このような浮動小数点の演算方式はCISCプロセッサ、例えばX86プロセッサの特有なものであり、そのほかのプロセッサ、例えばMIPS命令セットのRISCプロセッサには基本的に類似する演算方式は存在しない。]
[0010] 一般的には、CISCプロセッサではない、例えばMIPS命令セットを使用するRISCプロセッサの内部に、いくつかの汎用浮動小数点レジスタを設置し、これらの浮動小数点レジスタに一緒に番号を付け、命令はこれらの番号付けによってひとつの固定された浮動小数点レジスタを直接にアクセスする。X86のプロセッサ中に、命令が操作したレジスタはスタックTOPポインタの変化と一緒に変化する。一般的に、二進法データの翻訳問題を解決するために、CISCプロセッサではない、例えばRISCプロセッサはメモリー中にひとつのスペースを開き、X86の浮動小数点レジスタスタックのエミュレーションを維持する。]
[0011] 出願番号が200410074532.6の中国出願は、ひとつの二進法翻訳におけるX86の浮動小数点演算の処理方法を開示し、その方法は以下のステップを含む:実行するとき、環境の中にひとつの浮動小数点スタックを設置して、X86の物理浮動小数点スタックをエミュレートすることに使う;浮動小数点レジスタがマップした処理と単一方法によって順番にソース二進法プログラム中の各基本モジュールを処理する。この方法は、ゲストコンピュータのレジスタによってX86のソースレジスタをマップして、ゲストコンピュータにおいてもX86のプロセッサの浮動小数点演算がレジスタで実現されることを確保し、演算の効率を確保する;単一方法を利用して、各基本モジュールの入り口は毎回のtopの値が等しいことを満たすことを確保する。]
[0012] しかし、これらの現在の技術は各種類のX86浮動小数点操作を確実にエミュレートできるが、その効率が非常に悪いので、性能について飛躍的な向上は期待できない。]
発明が解決しようとする課題

[0013] 本発明の目的はRISCプロセッサ装置及び浮動小数点のスタック操作をシミュレートする方法を提供することにあり、この装置又は方法はRISCプロセッサで浮動小数点のスタック操作をサポートし、異なるアーキテクチャの仮想機が二進法の翻訳作業を行うことを容易にし、仮想機の効率を向上させ、プロセッサの互換性を向上させる。]
課題を解決するための手段

[0014] 本発明の目的を実現するため、RISCプロセッサ装置を提供する。RISCプロセッサは、複数の浮動小数点レジスタを含む浮動小数点レジスタヒープと、前記のRISCプロセッサの操作命令をデコードすることに使われるデコーダと、前記のデコーダと接続し、前記のデコーダの出力値に基づき前記の浮動小数点レジスタヒープを読み書きして、浮動小数点演算を行う浮動小数点演算部分と、前記の浮動小数点レジスタの状態を制御する制御レジスタとを備え、この制御レジスタは、前記のデコーダと前記の浮動小数点演算部分が前記の浮動小数点レジスタヒープを利用して浮動小数点レジスタスタックの操作をシミュレートすることを制御することに使われる。]
[0015] 前記のデコーダはポインタレジスタを含み、該ポインタレジスタは、スタックの操作ポインタを維持し、スタック操作ポインタの値を保存することに使われる。
前記の浮動小数点演算部分はポインタ操作モジュールを含み、該ポインタ操作モジュールは、前記のポインタレジスタを操作し、前記の浮動小数点レジスタスタック操作をシミュレートするとき、前記のスタック操作ポインタのスタック操作をシミュレートし、スタック操作ポインタの状態を変更かつ監視することに使われる。]
[0016] 前記の制御レジスタは一つのスタックイネーブルビットを維持し、イネーブルビットが1に設定された場合には、プロセッサが浮動小数点レジスタスタック操作をシミュレートすることが表され、イネーブルビットが0に設定された場合には、プロセッサが浮動小数点レジスタスタック操作をシミュレートしないことが表される。]
[0017] 前記の浮動小数点レジスタヒープにおいて番号が0〜31である32個の浮動小数点レジスタを含む。
前記のスタック操作ポインタは、読み出される操作、書き込まれる操作、1増加する操作、1減少する操作が行われるスタック操作ポインタである。]
[0018] 前記の制御レジスタのスタックイネーブルビットが1に設定されたとき、前記のデコーダは前記のスタック操作ポインタの値に基づき、32個の浮動小数点レジスタにおける八つのレジスタの番号を変換し、X86のプロセッサの浮動小数点レジスタスタックの、番号が0〜7であるスタックレジスタをシミュレートする。]
[0019] 本発明の目的を実現するため、さらにRISCプロセッサで浮動小数点レジスタスタック操作をシミュレートする方法を提供する。RISCプロセッサは、複数の浮動小数点レジスタを含む浮動小数点レジスタヒープと、デコーダと浮動小数点演算部分が前記の浮動小数点レジスタヒープを利用して浮動小数点レジスタスタックの操作をシミュレートすることを制御する制御レジスタと、前記のRISCプロセッサの操作命令をデコードすることに使われるデコーダと、前記のデコーダと接続し、前記のデコーダの出力値に基づき前記の浮動小数点レジスタヒープを読み書きする浮動小数点演算部分とを含み、前記の制御レジスタはひとつのスタックイネーブルビットを維持し、前記のデコーダはポインタレジスタを含み、前記の浮動小数点演算部分はポインタ操作モジュールを含む方法において、該方法は、
前記のスタックイネーブルビットに基づき、浮動小数点レジスタを選択して浮動小数点レジスタのスタック操作をシミュレートするかどうかを決め、ポインタレジスタを設置するステップAと、浮動小数点レジスタスタック操作をシミュレートするとき、ポインタレジスタを操作し、スタック操作ポインタのスタック操作をシミュレートし、スタック操作ポインタの状態を変更かつ監視するステップBとを含む。]
[0020] 前記のステップAは、制御レジスタにおいて浮動小数点スタックイネーブルビットとして1ビットを選択し、イネーブルビットが1に設定された場合には、RISCプロセッサはX86の浮動小数点レジスタスタックをシミュレートし、浮動小数点レジスタスタック操作を行うことが表され、イネーブルビットが0に設定された場合には、RISCプロセッサはX86の浮動小数点レジスタスタックをシミュレートせず、且つ浮動小数点レジスタスタック操作を行わず、RISCプロセッサは通常の流れで処理を行うことが表されるステップA1と、一つの少なくとも3ビットのポインタレジスタを設置し、スタック操作ポインタの値を保存するステップA2とを含む。]
[0021] 前記のステップBは、スタック操作モードを設置し、浮動小数点スタックイネーブルビットを1に設定し、ユーザが浮動小数点レジスタスタックをシミュレートしてスタック操作を行うことを許可すること、スタック操作モードをリセットし、浮動小数点スタックイネーブルビットを0に設定し、ユーザが浮動小数点レジスタスタックをシミュレートして浮動小数点スタック操作を行うことを禁止すること、スタック操作ポインタの値が1増加すること、スタック操作ポインタの値が1減少すること、スタック操作ポインタの値を読み出すこと、及びスタック操作ポインタの値を書き込むことを含む。]
図面の簡単な説明

[0022] 本発明によるRISCプロセッサ装置の構造の略図である。
本発明によるRISCプロセッサが浮動小数点スタック操作をシミュレートするフローチャートである。
本発明の実施例においてMIPS命令セットを利用して、スタック操作モードを設置しイネーブルビットを1にする命令のコーディングの略図である。
本発明の実施例においてMIPS命令セットを利用して、スタック操作モードをリセットしイネーブルビットを0にする命令のコーディングの略図である。
本発明の実施例においてMIPS命令セットを利用して、スタックポインタの値を1増加させる命令のコーディングの略図である。
本発明の実施例においてMIPS命令セットを利用して、スタックポインタの値を1減少させる命令のコーディングの略図である。
本発明の実施例においてMIPS命令セットを利用して、スタックポインタの値を読み出す命令のコーディングの略図である。
本発明の実施例においてMIPS命令セットを利用して、スタックポインタの値を書き込む命令のコーディングの略図である。]
実施例

[0023] 本発明の目的、技術の解決策、および本発明の利点をより明確にするため、以下に添付図面及び実施例を参照して、本発明によるRISCプロセッサ装置及び浮動小数点のスタック操作をシミュレートする方法について更に詳細に説明する。ここで説明される例は、本発明を解釈するためのものであって、本発明の範囲を限定するものではないことが理解されるべきである。]
[0024] 本発明の実施例はMIPS64命令セットのRISCプロセッサ装置を例として、本発明によるRISCプロセッサ装置及び浮動小数点のスタック操作をシミュレートする方法について説明するが、本発明の特許請求の範囲を限定するものではない。]
[0025] 本発明の実施例はRISCプロセッサ装置及び浮動小数点のスタック操作をシミュレートする方法を提供し、この方法は協調設計の仮想機に応用され、RISCプロセッサにおいてCISCプロセッサアーキテクチャの浮動小数点のスタック操作、例えばX86のプロセッサにおける浮動小数点のスタック操作をサポートする。]
[0026] 本発明をさらに詳しく理解するため、本発明の実施例はまずCISCプロセッサアーキテクチャ、例えばX86のプロセッサの浮動小数点のスタック操作の方法を説明する。
X86のプロセッサの浮動小数点部分は浮動小数点レジスタスタックを含み、該スタックは浮動小数点演算が直接できる8つのスタックレジスタからなり、順番で番号が付けられ、それぞれ0〜7になる。該レジスタを浮動小数点レジスタスタックと呼ぶ原因は、X86のプロセッサがそれらのレジスタをひとつのスタックとして使用するからである。浮動小数点レジスタスタックは下へ拡張するサイクルスタックであり、プロセッサはその他のひとつのレジスタの3ビットを利用してスタックTOPが所在する位置を表示する。この3ビットをTOPポインタと呼ぶ。]
[0027] スタックレジスタへデータを保存する、即ちスタックプッシュする必要があるとき、TOPポインタの値が1減少し、それからデータをTOPポインタがポイントした浮動小数点レジスタに保存する。TOPポインタの値が0になるとき、次のスタックプッシュはデータを7番のスタックレジスタにプッシュし、TOPポインタの値を7と設定する。]
[0028] スタックにあるデータをメモリーへ保存する必要があるとき、即ちスタックポップのとき、スタックポップの操作が行われる。スタックポップの操作はスタックプッシュの操作と似たように、TOPポインタが1増加することによって行われ、もしこの時点のTOPポインタの値が7である場合、スタックポップの後のTOPポインタの値を0と設定する。]
[0029] X86のプロセッサにおいて、前記のスタックプッシュとスタックポップの操作はハードウェアで自動的に実現され、ユーザにとって見えない操作である。
命令によって浮動小数点のデータを処理するとき、見えた浮動小数点レジスタはST(0)、ST(1)、……ST(7)である。その中、ST(i)はスタックTOPからi番目のユニットのレジスタである。もしTOPポインタの値が2であると、ST(0)が2番目のレジスタで、ST(1)が3番目のレジスタであり、このように順次に番号を付ける。]
[0030] 以下に本発明によるRISCプロセッサ装置を詳しく説明する。
図1に示されているように、本発明によるRISCプロセッサは、既存の複数の浮動小数点レジスタを含む浮動小数点レジスタヒープ4と、前記のRISCプロセッサの操作命令をデコードすることに使われるデコーダ2と、前記のデコーダ2と繋がる浮動小数点演算部分3とを含む。前記の浮動小数点演算部分3が前記のデコーダの出力値に基づき前記の浮動小数点レジスタヒープ4を読み書きして、浮動小数点演算が行われる。]
[0031] 前記のRISCプロセッサはさらに前記の浮動小数点レジスタの状態を制御する制御レジスタ1を含み、この制御レジスタ1は、前記のデコーダ2と前記の浮動小数点演算部分3が前記の浮動小数点レジスタヒープ4を利用して浮動小数点レジスタスタックのシミュレーションをイネーブルするまたは禁止することを制御する。制御レジスタ1が前記の浮動小数点レジスタの状態を制御することに使われるのは当業者に対して周知である。ここで、本発明による前記の制御レジスタ1は、さらに前記のデコーダ2と前記の浮動小数点演算部分3が前記の浮動小数点レジスタヒープ4を利用して浮動小数点レジスタスタックのシミュレーションをイネーブルするまたは禁止することを制御する。]
[0032] 制御レジスタ1はひとつのスタックイネーブルビットを維持する。イネーブルビットが1に設定された場合には、プロセッサがX86のプロセッサの浮動小数点レジスタスタック操作をシミュレートすることが表され、イネーブルビットが0に設定された場合には、プロセッサがX86のプロセッサの浮動小数点レジスタスタック操作をシミュレートせず、通常の流れで処理が行われることが表される。]
[0033] 本発明の実施例では、前記の浮動小数点レジスタヒープ4は番号が0〜31である32個の既存の浮動小数点レジスタを含み、これらのレジスタは、X86のプロセッサの浮動小数点レジスタスタックをシミュレートすることに使われる。]
[0034] 前記のデコーダ2はひとつのポインタレジスタ21を含み、このポインタレジスタ21はひとつのTOPポインタ、即ちスタックの操作ポインタを維持して、TOPポインタの値を保存することに使われる。このTOPポインタは読み出されること、書き込まれること、1増加すること、1減少すること等ができる。]
[0035] 前記の浮動小数点演算部分3はポインタ操作モジュール31を含み、このモジュール31は、ポインタレジスタ21を操作し、浮動小数点レジスタスタックの操作をシミュレートするとき、ポインタレジスタ21のスタック操作ポインタのスタック操作をシミュレートし、スタック操作ポインタの状態を変更かつ監視することに使われる。]
[0036] 一つの実施可能の方式として、制御レジスタ1の中のスタックイネーブルビットが1設定された場合、前記のデコーダ2は前記のスタック操作ポインタの値に基づき、32個の浮動小数点レジスタにおける八つのレジスタの番号を変換し、X86のプロセッサの浮動小数点レジスタスタックの、番号が0〜7であるスタックレジスタをシミュレートする。]
[0037] 制御レジスタ1の中のスタックイネーブルビットが1に設定された場合、同ビットは演算の中に使用され、レジスタでシミュレートした浮動小数点レジスタスタックが存在することを表す。このようにして、浮動小数点演算命令の中に使われた、番号が8より小さいレジスタであれば、全て浮動小数点レジスタスタックのスタックレジスタとして使用され、X86のプロセッサの浮動小数点レジスタスタックをシミュレートする。]
[0038] その後ポインタ操作モジュール31はTOPポインタを使用してスタックレジスタ番号の変換、即ちユーザが見た浮動小数点レジスタ番号とプログラムで使用した浮動小数点レジスタ番号との変換を実行する。たとえば、レジスタ番号はスタックTOPからi番目のユニットのレジスタST(i)にTOPポインタの値を足した値を指す。TOPポインタの値が2であると、ST(0)が2番目のレジスタであり、ST(1)が3番目のレジスタである。オーバーフローと対応する処理も行われるとき、このグループのレジスタが一つのループスタックになり、本発明の実現しようとする、X86の中の浮動小数点レジスタスタックの機能をシミュレートすることを完成させることができる。そして次の作業を行い、つぎの作業はスタックイネーブルビットがセットされないときと同様である。]
[0039] 制御レジスタ1の中のスタックイネーブルビットが0に設定された場合、即ちリセットされた場合は、演算においてレジスタシミュレートスタックが存在しないとみなして、そのときの処理手順に従って処理を通常の通りに実行する。]
[0040] 以下に本発明によるRISCプロセッサの浮動小数点スタック操作をシミュレートする方法についてさらに詳しく説明する。図1に示されているように、該RISCプロセッサは、複数の浮動小数点レジスタを含む浮動小数点レジスタヒープ4と、浮動小数点レジスタヒープの状態を制御し、デコーダ2と浮動小数点演算部分3が前記の浮動小数点レジスタヒープ4を利用して浮動小数点レジスタスタックの操作をシミュレートすることを制御する制御レジスタ1と、前記のRISCプロセッサの操作命令をデコードすることに使われるデコーダ2と、前記のデコーダ2と接続し、前記のデコーダ2の出力値に基づき前記の浮動小数点レジスタヒープ4を読み書きして、浮動小数点の演算を行う浮動小数点演算部分3とを含む。その中、前記の制御レジスタ1はひとつのスタックイネーブルビットを維持し、前記のデコーダ2はポインタレジスタ21を含み、前記の浮動小数点演算部分3はポインタ操作モジュール31を含む。この方法は、RISCプロセッサの八つの浮動小数点レジスタにより浮動小数点レジスタスタックを構成し、制御レジスタ1によって、X86のTOPポインタの機能、即ちスタックポインタの操作機能をシミュレートすることにより、浮動小数点レジスタのスタック操作をシミュレートする。]
[0041] 本発明によるRISCプロセッサが浮動小数点のスタック操作をシミュレートする方法は、図2に示されているように、以下のステップを含む:
ステップS100:前記のスタックイネーブルビットに基づいて、八つの浮動小数点レジスタを選択して浮動小数点レジスタスタックの中の八つのスタックレジスタをシミュレートし、浮動小数点レジスタのスタック操作をシミュレートするかどうかをきめ、さらにポインタレジスタを設置する。]
[0042] 前記のステップS100は以下のステップを含む。
ステップS110:制御レジスタ1の中に1ビットを浮動小数点スタックイネーブルビットとする;イネーブルビットを1に設定する場合、X86のプロセッサの浮動小数点スタックをシミュレートし、浮動小数点スタック操作が行われることが表される;イネーブルビットを0に設定する場合、X86のプロセッサの浮動小数点スタックをシミュレートせず、浮動小数点スタック操作ができず、通常通りの流れで処理が行われることが表される。]
[0043] ステップS120:一つの少なくとも3ビットのポインタレジスタ21を設置し、TOPポインタの値を保存する。
該TOPポインタの値は、読み込まれること、書き込まれること、1増加すること、1減少すること等が可能であり、TOPポインタの範囲は0〜7である。]
[0044] TOPポインタは、スタックプッシュのときに7番のレジスタにプッシュされ、TOPポインタの値を6と設置する;スタックポップのときに、TOPポインタの値が7であれば、スタックをポップした後にTOPポインタの値を0と設置する。]
[0045] TOPポインタは、常にスタックTOPレジスタへポイントするため、このスタックがTOPから下に向かって成長するとき、即ちスタックプッシュのときにTOPポインタの値が1減少し、スタックポップのときにTOPポインタの値が1増加するため、7番のレジスタへデータを保存する(即ち7番のレジスタにスタックプッシュ)とき、TOPポインタの値が1減少して6となる。7番のレジスタからデータがポップされたとき、TOPポインタの値が1増加して8となる。しかし、全部で0〜7番の八つのレジスタだけがあるので、TOPポインタの最大値が7となり、1増加するときにTOPポインタは次のレジスタ、即ちループスタック中の0番レジスタにポイントするはずであり、このときのTOPポインタの値は0になるはずである。]
[0046] たとえば、TOPポインタの値は3であり、イネーブルビットが1となるとき、演算の浮動小数点レジスタは$f(i):i<=7であれば、浮動小数点レジスタ$f(j)が浮動小数点レジスタ$f(i)の代わりに演算を行い、ここで、j=(i+3) mod 8;
もしレジスタ$f(i):i>7であれば、変更しなくてもよく、直接浮動小数点レジスタ$f(i)を使用する。]
[0047] ステップS200:浮動小数点レジスタスタックの操作をシミュレートするとき、ポインタレジスタ21を操作し、スタック操作ポインタのスタック操作をシミュレートし、スタック操作ポインタの状態を変更かつ監視する。]
[0048] 前記のステップS200は以下のステップを含む。
ステップS210:スタック操作モードを設置し、浮動小数点スタックイネーブルビットを1に設定し、ユーザが浮動小数点レジスタスタックをシミュレートして浮動小数点スタックを操作することを許容する。]
[0049] 一つの実施可能な方式では、シミュレート浮動小数点スタックモードを設置し、X86の浮動小数点スタックモードを1にするために以下の命令で実行する。
その命令フォーマット:SETTM
本発明が提供する拡張命令の命令コーディングは図3に示されている。このコーディングは、MIPS命令セットにおけるSPECIAL2の空スロットの保留値で、拡張命令を定義する。]
[0050] 命令でイネーブルビットを1にする操作が完成し、X86の浮動小数点スタックモードをセットし、ユーザがX86の浮動小数点スタック使用して浮動小数点操作することを許容する。]
[0051] ステップS220:スタック操作モードをクリアし、浮動小数点スタックイネーブルビットを0にし、ユーザが浮動小数点レジスタスタックをシミュレートして浮動小数点スタックを操作することを禁止する。]
[0052] 一つの実施可能な方式として、本発明の実施例ではシミュレート浮動小数点スタックモードをクリアし、X86の浮動小数点スタックモードを0にする命令フォーマット:CLRTM
本発明が提供する拡張命令の命令コーディングは図4に示されている。]
[0053] これはX86の浮動小数点スタックモードをクリアすることで、ユーザがX86の浮動小数点スタックを使用することを禁止し、MIPSプロセッサの浮動小数点レジスタを使用して浮動小数点操作を行わなければならない。]
[0054] このセット、クリアのスタックポインタ操作命令は、それぞれ浮動小数点レジスタスタックの活性化、禁止処理を実現することができる。
ステップS230:スタック操作ポインタの値が1増加し、即ちTOPポインタの値が1増加する;
一つの実施可能な方式として、本発明の実施例では、スタックポインタの値が1増加し、即ちTOPポインタの値が1増加する命令フォーマット:INCTOP
本発明が提供する拡張命令の命令コーディングは図5に示されている。]
[0055] ステップS240:スタック操作ポインタの値が1減少し、即ちTOPポインタの値が1減少する;
一つの実施可能な方式として、本発明の実施例ではスタックポインタの値が1減少し、即ちTOPポインタの値が1減少する命令フォーマット:DECTOP
本発明が提供する拡張命令の命令コーディングは図6に示されている。]
[0056] 該TOPポインタの値が1増加する命令、1減少する命令は、それぞれX86のプロセッサの浮動小数点スタックのスタックプッシュ、スタックポップをシミュレートすることができる。]
[0057] ステップS250:スタック操作ポインタの値を読み出し、即ちTOPポインタの値を読み出す;
一つの実施可能な方式として、本発明の実施例ではTOPポインタの値を読み出す操作命令のフォーマット:MFTOP rd
その命令の機能はX86の浮動小数点スタックTOPポインタの値をレジスタGPR[rd]に読み込むことである。]
[0058] 本発明が提供する拡張命令の命令コーディングは図7に示されている。
ステップS260:スタック操作ポインタの値を書き込み、即ちポインタレジスタ21の中に当時のTOPポインタの値を書き込む;
一つの実施可能な方式として、本発明の実施例ではTOPポインタの値を書き込む操作命令のフォーマット:MTTOP imm
その命令の機能はX86の浮動小数点スタックTOPポインタに3ビットの即値immを書き込むことである。]
[0059] 本発明が提供する拡張命令の命令コーディングは図8に示されている。
そのTOPポインタを読み込む命令及び同TOPポインタを書き込む命令は浮動小数点スタックの操作制御に便利である。]
[0060] 本発明のRISCプロセッサが浮動小数点スタックの操作をシミュレートする方法をさらに理解するために、加算の中のスタックポインタ操作を例として以下に説明する。
イネーブルビットを1にし、TOPポインタの値を2にする場合、RISCプロセッサ内部において演算add.s $f(6), $f(1), $f(9)が以下の変換を行う:
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値は変化しない。]
[0061] その詳細なプロセスはステップS100に述べられている。そのプロセスでは、X86のサイクルスタックのアーキテクチャをシミュレートし、プロセッサ間の互換性を増加させ、仮想機とコンパイラの二進法の翻訳作業を容易にし、プログラムの実行効率を向上させた。]
[0062] 本発明の効果:本発明によるRISCプロセッサ装置及び浮動小数点のスタック操作をシミュレートする方法は、シミュレーションに対する非常に強いサポートを提供し、浮動小数点スタックに対するシミュレートの維持を省くことができ、メモリーを読み取る時間とスペースのコストを大きく低減し、作業の効率を向上させることができる。さらに異なるプロセッサアーキテクチャの間の差違を小さくすることができ、協同な仮想機の設計およびRISCとCISCプロセッサの間の互換性について開拓的な貢献をした。]
[0063] 以上に添付図面を参照して本発明の実施例について詳細に説明することにより、本発明のその他の面および特徴は当業者には自明である。
以上、本発明の実施例について説明したが、これらの実施例は単なる例であって、本発明を限定するものではない。本発明は添付特許請求の範囲に従って解釈されるべきである。]
[0064] 本発明によるRISCプロセッサ装置及び浮動小数点のスタック操作をシミュレートする方法は、RISCプロセッサで制御レジスタによって前記の浮動小数点レジスタヒープを利用して浮動小数点レジスタスタックの操作をシミュレートすることを制御する。制御レジスタのスタックイネーブルビットがイネーブルに設定されたとき、32個の浮動小数点レジスタ中の八つのレジスタを選択し、番号が0〜7であるX86のプロセッサの浮動小数点レジスタスタックのスタックレジスタをシミュレートする。これにより、浮動小数点のスタック操作をサポートすることができるため、異なるアーキテクチャの仮想機が二進法の翻訳作業を容易に実行することができ、プログラムの実行効率を向上させ、プロセッサの互換性を向上させることができる。]
权利要求:

請求項1
RISCプロセッサ装置であって、複数の浮動小数点レジスタを含む浮動小数点レジスタヒープと、前記RISCプロセッサの操作命令をデコードすることに使われるデコーダと、前記のデコーダと接続し、前記のデコーダの出力値に基づき前記の浮動小数点レジスタヒープを読み書きして、浮動小数点演算を行う浮動小数点演算部分と備えるRISCプロセッサ装置において、前記RISCプロセッサ装置は、前記の浮動小数点レジスタの状態を制御する制御レジスタを更に備え、該制御レジスタは、前記のデコーダと前記の浮動小数点演算部分が前記の浮動小数点レジスタヒープを利用して浮動小数点レジスタスタックの操作をシミュレートすることを制御し、前記のデコーダはポインタレジスタを含み、該ポインタレジスタは、スタックの操作ポインタを維持し、スタック操作ポインタの値を保存することに使われ、前記の浮動小数点演算部分はポインタ操作モジュールを含み、該ポインタ操作モジュールは、前記のポインタレジスタを操作し、前記の浮動小数点レジスタスタック操作をシミュレートするとき、前記のスタック操作ポインタのスタック操作をシミュレートし、前記スタック操作ポインタの状態を変更かつ監視することに使われることを特徴とするRISCプロセッサ装置。
請求項2
前記の制御レジスタはひとつのスタックイネーブルビットを維持し、イネーブルビットが1に設定された場合には、RISCプロセッサが浮動小数点レジスタスタック操作をシミュレートすることが表され、イネーブルビットが0に設定された場合には、RISCプロセッサが浮動小数点レジスタスタック操作をシミュレートしないことが表されることを特徴とする請求項1に記載のRISCプロセッサ装置。
請求項3
前記の浮動小数点レジスタヒープは番号が0〜31である32個の浮動小数点レジスタを含むことを特徴とする請求項2に記載のRISCプロセッサ装置。
請求項4
前記のスタック操作ポインタは、読み出される操作、書き込まれる操作、1増加する操作、1減少する操作が行われるスタック操作ポインタであることを特徴とする請求項1に記載のRISCプロセッサ装置。
請求項5
前記の制御レジスタのスタックイネーブルビットが1に設定されたとき、前記のデコーダは前記のスタック操作ポインタの値に基づき、32個の浮動小数点レジスタにおける八つのレジスタの番号を変換し、X86のプロセッサの浮動小数点レジスタスタックの、番号が0〜7であるスタックレジスタをシミュレートすることを特徴とする請求項3に記載のRISCプロセッサ装置。
請求項6
RISCプロセッサが浮動小数点のスタック操作をシミュレートする方法であって、前記RISCプロセッサは、複数の浮動小数点レジスタを含む浮動小数点レジスタヒープと、デコーダと浮動小数点演算部分が前記の浮動小数点レジスタヒープを利用して浮動小数点レジスタスタックの操作をシミュレートすることを制御する制御レジスタと、前記のRISCプロセッサの操作命令をデコードすることに使われるデコーダと、前記のデコーダと接続し、前記のデコーダの出力値に基づき前記の浮動小数点レジスタヒープを読み書きして、浮動小数点演算を行う浮動小数点演算部分とを含み、前記の制御レジスタはひとつのスタックイネーブルビットを維持し、前記のデコーダはポインタレジスタを含み、前記の浮動小数点演算部分はポインタ操作モジュールを含む方法において、前記のスタックイネーブルビットに基づき、浮動小数点レジスタを選択して浮動小数点レジスタのスタック操作をシミュレートするかどうかを決め、ポインタレジスタを設置するステップAと、浮動小数点レジスタスタック操作をシミュレートするとき、ポインタレジスタを操作し、スタック操作ポインタのスタック操作をシミュレートし、スタック操作ポインタの状態を変更かつ監視するステップBとを含むことを特徴とするRISCプロセッサが浮動小数点のスタック操作をシミュレートする方法。
請求項7
前記のステップAは、制御レジスタにおいて浮動小数点スタックイネーブルビットとして1ビットを選択し、イネーブルビットが1に設定された場合には、RISCプロセッサはX86の浮動小数点レジスタスタックをシミュレートし、浮動小数点レジスタスタック操作を行うことが表され、イネーブルビットが0に設定された場合には、RISCプロセッサはX86の浮動小数点レジスタスタックをシミュレートせず、且つ浮動小数点レジスタスタック操作を行わず、RISCプロセッサは通常の流れで処理を行うことが表されるステップA1と、一つの少なくとも3ビットのポインタレジスタを設置し、スタック操作ポインタの値を保存するステップA2とを含むことを特徴とする請求項6に記載の浮動小数点のスタック操作をシミュレートする方法。
請求項8
前記のステップBは、スタック操作モードを設置し、浮動小数点スタックイネーブルビットを1に設定し、ユーザが浮動小数点レジスタスタックの操作をシミュレートすることを許可することを含むことを特徴とする請求項6または請求項7に記載の浮動小数点のスタック操作をシミュレートする方法。
請求項9
前記のステップBは、スタック操作モードをリセットし、浮動小数点スタックイネーブルビットを0に設定し、ユーザが浮動小数点レジスタスタックの操作をシミュレートすることを禁止することを含むことを特徴とする請求項6または請求項7に記載の浮動小数点のスタック操作をシミュレートする方法。
請求項10
前記のステップBは、スタック操作ポインタの値が1増加することを含むことを特徴とする請求項6または請求項7に記載の浮動小数点のスタック操作をシミュレートする方法。
請求項11
前記のステップBは、スタック操作ポインタの値が1減少することを含むことを特徴とする請求項6または請求項7に記載の浮動小数点のスタック操作をシミュレートする方法。
請求項12
前記のステップBは、スタック操作ポインタの値を読み出すことを含むことを特徴とする請求項6または請求項7に記載の浮動小数点のスタック操作をシミュレートする方法。
請求項13
前記のステップBは、スタック操作ポインタの値を書き込むことを含むことを特徴とする請求項6または請求項7に記載の浮動小数点のスタック操作をシミュレートする方法。
类似技术:
公开号 | 公开日 | 专利标题
US9317301B2|2016-04-19|Microprocessor with boot indicator that indicates a boot ISA of the microprocessor as either the X86 ISA or the ARM ISA
Sloss et al.2004|ARM system developer's guide: designing and optimizing system software
EP2972842B1|2020-05-20|Programmable cpu register hardware context swap mechanism
JP3623840B2|2005-02-23|データ処理装置及びマイクロプロセッサ
EP2508985B1|2015-07-22|Apparatus and method for handling of modified immediate constant during instruction translation
US7827390B2|2010-11-02|Microprocessor with private microcode RAM
Yiu2009|The definitive guide to the ARM Cortex-M3
US9898291B2|2018-02-20|Microprocessor with arm and X86 instruction length decoders
US8078792B2|2011-12-13|Separate page table base address for minivisor
US6349377B1|2002-02-19|Processing device for executing virtual machine instructions that includes instruction refeeding means
RU2263949C2|2005-11-10|Перезапускаемые транслированные команды
US9317288B2|2016-04-19|Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US7203932B1|2007-04-10|Method and system for using idiom recognition during a software translation process
US8949580B2|2015-02-03|RISC processor apparatus and method for supporting X86 virtual machine
US8533433B2|2013-09-10|Microprocessor for executing byte compiled java code
CN101299185B|2010-10-06|一种基于cisc结构的微处理器结构
JP5668143B2|2015-02-12|データ処理装置のデバッグ
US10318407B2|2019-06-11|Allocating a debug instruction set based on the current operating state in a multi-instruction-set data processing apparatus
JP3816961B2|2006-08-30|バーチャルマシン命令を処理するためのデータ処理装置
US9141389B2|2015-09-22|Heterogeneous ISA microprocessor with shared hardware ISA registers
JP5646656B2|2014-12-24|複数の命令セットにより使用されるレジスタ間のマッピング
TWI279715B|2007-04-21|Method, system and machine-readable medium of translating and executing binary of program code, and apparatus to process binaries
US9176733B2|2015-11-03|Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9274795B2|2016-03-01|Conditional non-branch instruction prediction
KR101764187B1|2017-08-02|가속기들의 낮은-레이턴시 인보크를 위한 장치 및 방법
同族专利:
公开号 | 公开日
CN101216756B|2011-03-23|
EP2226718A1|2010-09-08|
CN101216756A|2008-07-09|
JP5441918B2|2014-03-12|
US8788796B2|2014-07-22|
EP2226718A4|2011-01-12|
CA2709613A1|2009-08-06|
US20100274991A1|2010-10-28|
CA2709613C|2015-10-27|
WO2009094827A1|2009-08-06|
KR20100081366A|2010-07-14|
KR101159603B1|2012-06-27|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
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-10-30| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121030 |
2012-11-07| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121106 |
2013-02-07| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130206 |
2013-08-14| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130813 |
2013-11-07| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131106 |
2013-11-25| TRDD| Decision of grant or rejection written|
2013-12-04| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20131203 |
2013-12-26| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131217 |
2013-12-27| R150| Certificate of patent or registration of utility model|Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 5441918 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
2016-11-08| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2017-10-10| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2018-10-23| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2019-11-05| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2020-11-13| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2021-10-14| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]