(57)【要約】  RISCプロセッサ装置及びその命令アドレスの変換検索方法は開示される。該装置はデコーダを含む。前記のデコーダは検索テーブルモジュールを含み、該検索テーブルモジュールは、検索テーブルを利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われる。前記の検索テーブルモジュールは検索サブモジュールを含み、該検索サブモジュールは、内容に基づき検索テーブルにインデックスを付け、表項目がヒットされた場合には、対応する内容を目標レジスタに保存し、表項目がヒットされなかった場合には、不命中サービスプログラムの入口アドレスを目標レジスタに保存する。インデックスサブモジュールは、内容に基づき検索テーブルにインデックスを付け、該内容が所在する表項目のインデックスを得る。
2011510385.tif 000002
【特許請求の範囲】
【請求項１】
デコーダを含むRISCプロセッサ装置において、
前記のデコーダは検索テーブルモジュールを含み、該検索テーブルモジュールは、検索テーブルを利用してX86ソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われることを特徴とするRISCプロセッサ装置。
【請求項２】
前記の検索テーブルモジュールは、検索サブモジュールとインデックスサブモジュールを含み、
前記の検索サブモジュールは、内容に基づき検索テーブルにインデックスを付け、表項目がヒットされた場合には、対応する内容を目標レジスタに保存し、表項目がヒットされなかった場合には、不命中サービスプログラムの入口アドレスを目標レジスタに保存し、
前記のインデックスサブモジュールは、内容に基づき検索テーブルにインデックスを付け、該内容が所在する表項目のインデックスを得ることを特徴とする請求項１に記載のRISCプロセッサ装置。
【請求項３】
前記の検索テーブルモジュールはさらに書き込みサブモジュールを含み、該書き込みサブモジュールは、検索テーブルの表項目のインデックスに基づき、検索テーブルに書き込むことを特徴とする請求項２に記載のRISCプロセッサ装置。
【請求項４】
前記の検索テーブルモジュールはさらに読み取りサブモジュールを含み、該読み取りサブモジュールは、検索テーブルの表項目のインデックスに基づき、検索テーブルの内容を読み取ることを特徴とする請求項３に記載のRISCプロセッサ装置。
【請求項５】
前記の検索テーブルは、内容に基づきアドレッシングする検索テーブルであり、コンテント・アドレッサブル・メモリーまたはランダムアクセスメモリーにより実現されることを特徴とする請求項１から４のいずれかに記載のRISCプロセッサ装置。
【請求項６】
前記の検索テーブルは、三つの領域：ASID領域、SPC領域及びTPC領域を含み、
ASID領域は、オペレーティングシステムにおいて複数のX86仮想機プロセスを始めるID番号を保存することに使われ、
SPC領域は、X86ソース命令アドレスを保存することに使われ、
TPC領域は、MIPS目標命令アドレスを保存することに使われることを特徴とする請求項５に記載のRISCプロセッサ装置。
【請求項７】
前記の不命中サービスプログラムの入口アドレスは、仮想機により提供されるひとつのデフォルトであり、CP0レジスタCAM.defaultまたは検索テーブルの第0項目に保存されることを特徴とする請求項２に記載のRISCプロセッサ装置。
【請求項８】
RISCプロセッサの命令アドレスの変換検索方法であって、前記RISCプロセッサはデコーダを含み、前記のデコーダは検索テーブルモジュールを含み、該検索テーブルモジュールは、検索テーブルを利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われる方法において、
該方法は、
RISCプロセッサのX86の仮想機が起動するとき、検索テーブルを初期化し、得られたX86の仮想機の命令アドレスからMIPS命令アドレスまでの内容を検索テーブルに書き込むステップAと、
RISCプロセッサのX86の仮想機のジャンプ命令は、X86のソース命令アドレスから目標命令アドレスへの変換を完成するために、検索テーブルをアクセスするステップBとを含むことを特徴とするRISCプロセッサの命令アドレスの変換検索方法。
【請求項９】
前記のステップBは、
検索テーブルの表項目の値を検索するCAMPV命令を使用して、レジスタのソース命令アドレスに基づき検索テーブルを検索して目標命令アドレスを得るステップB1と、
検索がヒットした場合、直接に得られた目標命令アドレスの値を目標レジスタに保存し、プログラムはジャンプ命令によって該目標アドレスがポイントするコードセグメントにジャンプして実行されるステップB2と、
検索がヒットしなかった場合、不命中サービスプログラムのアドレスが得られ、該アドレスは、仮想機によって提供されて目標レジスタに保存され、プログラムは、不命中サービスプログラムにジャンプして実行されるステップB3とを含むことを特徴とする請求項８に記載の命令アドレスの変換検索方法。
【請求項１０】
不命中サービスプログラムは、仮想機が維持するハッシュ表の内容に基づき、検索テーブルを書き直すステップCを更に含み、該ステップCは、前記前記のステップB3の後に実行されることを特徴とする請求項９に記載の命令アドレスの変換検索方法。
【請求項１１】
前記のステップCは、
検索テーブルの表項目のインデックスを検索するCAMPI命令を使用して、ソース命令アドレスの値に基づき該値が所在する表項目のインデックスを得て、さらに該インデックスを目標レジスタに保存するステップC1と、
検索テーブルの表項目のインデックスに基づき検索テーブルに書き込むCAMWI命令を使用して、目標レジスタのインデックスの値に基づき、プロセスのASID、ソース命令アドレスおよび対応する目標命令アドレスを検索テーブルに書き込むステップC2とを含むことを特徴とする請求項１０に記載の命令アドレスの変換検索方法。
【請求項１２】
検索テーブルのひとつの内容を無効にし、あるいは検索テーブルの表項目のインデックスに基づき検索テーブルRAMの内容を読み取るステップDを更に含み、該ステップDは、前記のステップC2の後に実行されることを特徴とする請求項１１に記載の命令アドレスの変換検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・プロセッサの技術に関し、より詳細には縮小命令セット・コンピュータ（RISC）のプロセッサ及びその命令アドレスの変換検索方法に関する。
【背景技術】
【０００２】
仮想機は、二十世紀六十年代にIBM社により提出された概念であり、現実化されている。当時に主流のコンピュータはメインフレームコンピュータであり、メインフレームコンピュータをいくつかの仮想機に分割し、仮想機のモニタ（Virtual Machine Monitor，VMM）のセグメンテーションを利用することにより、いくつかの異なる応用または複数のユーザがこの貴重な装置を共有することができる。
【０００３】
しかし、ハードウェアのコストの減少と演算能力の増加、およびマルチタスクのオペレーティングシステム（OS）の登場によって、徐々に仮想機のモニタが歴史の舞台からさり、マイクロコンピュータとパーソナルコンピュータ（PC）が大活躍してきた。
【０００４】
しかし、仮想機の強みと成功の理由は、ユーザが命令セットの組合だけにより形成されることのできる機能及び設備に対するアクセスと利用を実行できることにあるため、最近に、仮想機のモニタは学術界と産業界において再び注目を集めている。仮想機のモニタは現代のコンピュータシステムアーキテクチャの制限に対して一つのバーチャルの解決計画を提供し、強大な道具になり、この道具は現代のコンピュータシステムの能力をさらに拡張する。
【０００５】
現在のCISCプロセッサ(Complex Instruction Set Computing,CISC)のアーキテクチャ、特にX86のプロセッサアーキテクチャは数多くの応用に使用されており、たくさんの大型サーバーの応用はX86のアーキテクチャである。RISCプロセッサ(Reduced Instruction Set Computing,RISC)はサービスと関係する応用を広く実行するためには、X86のプロセッサとの互換性が必要となってきた。また、現在のX86のプロセッサのコンピュータは、アプリケーションがさらに多様化され、数多くのビジネスソフトウェアがX86のアーキテクチャベースで開発されているから、RISCマイクロプロセッサがさらに幅広く応用されるために、X86のプロセッサとの交換性の実現は非常に必要となってきた。
【０００６】
MIPS命令セットのRISCプロセッサはRISCプロセッサの大きなブランチとして、現在にたくさんのオープンソースの仮想機プラットフォームが存在し、MIPS命令セットのRISCプロセッサからX86のプロセッサへの異なるアーキテクチャに対するサポートが実現できる。
【０００７】
仮想機の種類はさまざまであるが、その核心は翻訳または解釈のプロセスであり、即ち目標コードからローカルコードに翻訳または解釈し、ローカルマシンで実行可能なプロセスである。仮想機は、ローカルコードを実行する間にジャンプ命令があった場合、X86のソースプログラムの命令アドレスを対応するMIPSの目標プログラムの命令アドレスに変換する必要があり、その後に目標プログラムの命令アドレスに基づきジャンプを実現する。現在の技術では、仮想機がハッシュ（HASH）テーブルの方式でソースアドレスから目標アドレスへのマッピングを完成させ、毎回の検索を完成させるには、約20個の機械命令が必要である。
【０００８】
現在の技術における検索のプロセスは仮想機の性能に大きく影響し、仮想機の性能に対するユーザの要求が満足されていない。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の目的はRISCプロセッサ及びその命令アドレスの変換検索方法を提供することにある。これは、RISCプロセッサのX86仮想機において、X86のソース命令アドレスからMIPS目標命令アドレスへの変換を加速し、仮想機の性能を向上させる。
【課題を解決するための手段】
【００１０】
本発明の目的を実現するため、RISCプロセッサ装置を提供する。RISCプロセッサはデコーダを含み、前記のデコーダは検索テーブルモジュールを含み、該検索テーブルモジュールは、検索テーブルを利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われる。
【００１１】
前記の検索テーブルモジュールは、検索サブモジュールとインデックスサブモジュールを含み、前記の検索サブモジュールは、内容に基づき検索テーブルにインデックスを付け、表項目がヒットされた場合には、対応する内容を目標レジスタに保存し、表項目がヒットされなかった場合には、不命中サービスプログラムの入口アドレスを目標レジスタに保存する。
【００１２】
前記のインデックスサブモジュールは、内容に基づき検索テーブルにインデックスを付け、該内容が所在する表項目のインデックスを得る。
前記の検索テーブルモジュールはさらに書き込みサブモジュールを含み、該書き込みサブモジュールは、検索テーブルの表項目のインデックスに基づき、検索テーブルに書き込む。
【００１３】
前記の検索テーブルモジュールはさらに読み取りサブモジュールを含み、該読み取りサブモジュールは、検索テーブルの表項目のインデックスに基づき、検索テーブルの内容を読み取る。
【００１４】
前記の検索テーブルは、内容に基づきアドレッシングする検索テーブルであり、コンテント・アドレッサブル・メモリーまたはランダムアクセスメモリーにより実現される。
前記の検索テーブルは、三つの領域：ASID領域、SPC領域及びTPC領域を含む。その中、
ASID領域は、オペレーティングシステムにおいて複数のX86仮想機プロセスを始めるID番号を保存することに使われる。
【００１５】
SPC領域は、X86のソース命令アドレスを保存することに使われる。
TPC領域は、MIPS目標命令アドレスを保存することに使われる。
前記の不命中サービスプログラムの入口アドレスは、仮想機により提供されるひとつのデフォルトであり、CP0レジスタCAM.defaultまたは検索テーブルの第0項目に保存される。
【００１６】
本発明の目的を実現するため、さらにRISCプロセッサの命令アドレスの変換検索方法を提供する。該RISCプロセッサはデコーダを含み前記のデコーダは検索テーブルモジュールを含み、該検索テーブルモジュールは、検索テーブルを利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われる。該方法は以下のステップを含む。
【００１７】
ステップA：RISCプロセッサのX86の仮想機が起動するとき、検索テーブルを初期化し、得られたX86の仮想機の命令アドレスからMIPS命令アドレスの内容を検索テーブルに書き込む。
【００１８】
ステップB：RISCプロセッサのX86の仮想機のジャンプ命令は、X86のソース命令アドレスから目標命令アドレスへの変換を完成するために、検索テーブルをアクセスする。
前記のステップBは以下のステップを含む。
【００１９】
ステップB1：検索テーブルの表項目の値を検索するCAMPV命令を使用して、レジスタのソース命令アドレスに基づき検索テーブルを検索して目標命令アドレスを得る。
ステップB2：検索がヒットした場合、直接に得られた目標命令アドレスの値を目標レジスタに保存し、プログラムはジャンプ命令によって該目標アドレスがポイントするコードセグメントにジャンプして実行される。
【００２０】
ステップB3：検索がヒットしなかった場合、不命中サービスプログラムのアドレスが得られ、該アドレスは、仮想機によって提供されて目標レジスタに保存され、プログラムは不命中サービスプログラムにジャンプして実行される。
【００２１】
前記方法は、不命中サービスプログラムは仮想機が維持するハッシュ表の内容に基づき、検索テーブルを書き直すステップCを更に含み、該ステップCは、前記前記のステップB3の後に実行される。
【００２２】
前記のステップCは以下のステップを含む。
ステップC1：検索テーブルの表項目のインデックスを検索するCAMPI命令を使用して、ソース命令アドレスの値に基づき該値が所在する表項目のインデックスを得て、さらに該インデックスを目標レジスタに保存する。
【００２３】
ステップC2：検索テーブルの表項目のインデックスに基づき検索テーブルに書き込むCAMWI命令を使用して、目標レジスタのインデックスの値に基づき、プロセスのASID、ソース命令アドレスおよび対応する目標命令アドレスを検索テーブルに書き込む。
【００２４】
前記方法は、検索テーブルのひとつの内容を無効にし、あるいは検索テーブルの表項目のインデックスに基づき検索テーブルRAMの内容を読み取るステップDを更に含み、該ステップDは、前記のステップC2の後に実行される。
【図面の簡単な説明】
【００２５】
【図１】本発明によるRISCプロセッサ装置のデコーダの模式図である。
【図２】本発明によるCAMPV命令を実現する例を示す図である。
【図３】本発明によるRISCプロセッサ装置の命令アドレスの変換検索方法のフローチャートである。
【発明を実施するための形態】
【００２６】
本発明の目的、技術の解決策、および本発明の利点をより明確にするため、以下に添付図面及び実施例により、本発明によるRISCプロセッサ装置及び命令アドレスの変換検索方法について更に詳細に説明する。ここで説明される例は、本発明を解釈するためのものであって、本発明の範囲を限定するためのものではないと理解されるべきである。
【００２７】
本発明の実施例は、MIPS64命令セットのRISCプロセッサ装置を例として、本発明について説明するが、本発明の特許請求の範囲を限定するためのものではなく、本発明はその他の命令セットのRISCプロセッサにおいても適用できる。
【００２８】
図1に示されているように、本発明の実施例に係るRISCプロセッサ装置は、デコーダ１を含んでいる。前記のデコーダ１は検索テーブルモジュール２を含み、この検索テーブルモジュール２は、検索テーブル３を利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現することに使われる。
【００２９】
本発明はハードウェアで一つの検索テーブル３をサポートし、X86のプログラム中のジャンプアドレスからMIPSジャンプアドレスへの翻訳に対してクイック検索を行い、仮想機の性能を向上させる。
【００３０】
一つの実施可能な方式として、前記の検索テーブル３は内容基づいてアドレッシングする検索テーブルであってもよく、この場合、コンテント・アドレッサブル・メモリー/ランダムアクセスメモリー(Content-Addressable Memory/Random Access  Memory ,   CAM/RAM)で実現する。ここで、RAMは一つのアドレスを入力して、対応するアドレス中のデータを出力する；CAMは内容を入力して、この内容が保存されたユニットのインデックス番号またはこのインデックス番号と関連する別のユニットの内容を出力する。
【００３１】
該検索テーブル３は内容アドレッシングの検索テーブルであってもよく、この場合、X86のジャンプアドレスからMIPSジャンプアドレスへの翻訳が実現され、即ちRISCプロセッサのX86の仮想機中に、X86の元の命令アドレスからMIPS目標命令アドレスへの変更が完成される。そのテーブルの表項目は表1の通りである。
表1  検索テーブルの表項目
【００３２】
【表１】
2011510385.tif 000003
表1に示されたように、X86のソース命令(SPC)からMIPS目標命令アドレス(TPC)への変換は三つの領域を使用する：ASID領域、SPC領域とTPC領域。
【００３３】
その中、ASID領域はオペレーティングシステムにおいて複数のX86の仮想機プロセスを開始するID番号を保存することに使われる。これらの複数のX86の仮想機プロセスは全て検索テーブル３を使用する必要があるとき、オペレーティングシステムにより、互いに干渉されないように、それぞれ分布されたID番号(ASID)を区別する。
【００３４】
SPC領域はX86のソース命令アドレスを保存することに使われる；
TPC領域はMIPS目標命令アドレスを保存することに使われる；
検索テーブルモジュール２が検索するとき、当時のX86の仮想機プロセスのASIDと検索テーブル命令でのSPCが一緒に検索テーブルの「アドレス」部分となり、この「アドレス」部分が全ての検索テーブルの表項目に送られる。それぞれの表項目は自身で保存されたASID、SPCを入力と比べ、マッチしたらその中に保存されたTPCを出力する。ゆえに、RISCプロセッサのX86の仮想機プロセスについて、検索しようとするX86のソース命令アドレスを入力すれば、検索テーブル３中から対応するMIPS目標命令アドレスを見つけることができる。
【００３５】
ここで、検索テーブル３中のSPC領域とTPC領域の値は仮想機によって初期化の際に初期化の処理が行われるが、ASID領域の値はローカルオペレーティングシステムによって与えられる。
【００３６】
図1に示されたように、本発明に係る前記の検索テーブルモジュール２は検索サブモジュール４、インデックスサブモジュール５、書き込みサブモジュール６及び読み取りサブモジュール７を含むことが好ましい。その中：
前記の検索サブモジュール４は、内容に基づき検索テーブル３にインデックスを付け、表項目がヒットされた場合には、対応する内容を目標レジスタに保存する；表項目がヒットされなかった場合には、不命中サービスプログラムの入口アドレスを目標レジスタに保存する。
【００３７】
前記のインデックスサブモジュール５は、内容に基づき検索テーブル３にインデックスを付け、該内容が所在する表項目のインデックスを得る。
インデックスサブモジュール５は、汎用レジスタ中の内容に基づき検索テーブル３にインデックスを付け、表項目がヒットされた場合には、対応する表項目のインデックスを目標レジスタ中に保存し、表項目がヒットされなかった場合には、目標レジスタの最高ビットを1に設定する。
【００３８】
前記の書き込みサブモジュール６は、検索テーブルの表項目のインデックスに基づき、検索テーブル３に書き込む。
書き込みサブモジュール６は、汎用レジスタ中のインデックス(index)の値に基づき、汎用レジスタ中の値をそれぞれ検索テーブル３のCAMとRAMの表項目に書き込む。
【００３９】
前記の読み取りサブモジュール７は、検索テーブル３の表項目のインデックス(index)に基づき、検索テーブル３の表項目の内容を読み取る。
前記の読み取りサブモジュール７は、汎用レジスタ中のインデックス(index)の値に基づき検索テーブル３の内容を読み取り、さらに目標レジスタに保存する。
【００４０】
一つの実施可能の方式として、本発明の実施例では、四つの該検索テーブルのアーキテクチャをアクセスまたは修正する命令により、検索サブモジュール４、インデックスサブモジュール５、書き込みサブモジュール６及び読み取りサブモジュール７を実現する。その中：
１つ目の命令は、CAMPV命令である。図２に示されているように、該命令は検索テーブルRAMの表項目の値を検索する。
【００４１】
該命令のフォーマットは以下の通りである：
CAMPV  rd,  rs
GPR[rs]中の内容に基づき検索テーブルにインデックスを付け、RAM中の内容が得られる。汎用レジスタGPR[rs] 中の内容に基づき検索テーブルにインデックスを付け、ヒットされたら、対応するRAM中の内容を目標レジスタGPR[rd] 中に保存する；表項目がヒットされなかったら、不命中サービスプログラムの入口アドレスを目標レジスタGPR[rd] 中に保存する。
【００４２】
命令の実行プロセスは、命令のロードのデコードの実行などを含む全体的にプロセッサの命令の実行プロセスであり、アクセスする部分は前記のCAM検索テーブルである。
２つ目の命令は、CAMPI命令である。該命令は検索テーブルRAMの表項目のインデックス(index)を検索する。
【００４３】
該命令のフォーマットは以下の通りである：
CAMPI  rd,  rs
GPR[rs]中の内容に基づき検索テーブルにインデックスを付け、該内容がある表項目のインデックス(index)は得られる。汎用レジスタGPR[rs] 中の内容に基づき検索テーブルにインデックスを付け、ヒットされたら、対応する表項目のインデックス(index)を目標レジスタGPR[rd] 中に保存する；表項目がヒットされなかったら、ヒットされなかった目標レジスタrdの最高ビットを1にする。
【００４４】
命令の実行プロセスは、命令のロードのデコードの実行などを含む全体的にプロセッサの命令の実行プロセスであり、アクセスする部分は前記のCAM検索テーブルである。
３つ目の命令は、CAMWI命令である。該命令は検索テーブルRAMの表項目のインデックス(index)に基づき、検索テーブルを書き込む。該命令のフォーマットは以下の通りである：
CAMWI  rd,  rs,  rt
GPR[rd]の値に基づいて検索テーブルを書き込む。汎用レジスタGPR[rd] 中のインデックスの値に基づき、GPR[rs]レジスタとGPR[rt]レジスタ中の値をそれぞれ検索テーブルのCAMとRAMの表項目中に書き込む。
インデックス(index)の値が検索テーブルの表項目の範囲を超えたとき、アドレスエラーの例外が発生する。
【００４５】
命令の実行プロセスは、命令のロードのデコードの実行などを含む全体的にプロセッサの命令の実行プロセスであり、アクセスする部分は前記のCAM検索テーブルである。
４つ目の命令は、RAMRI命令である。該命令は検索テーブルRAMの表項目のインデックス(index)に基づき、検索テーブルRAMの表項目の内容を読み取る。該命令のフォーマットは以下の通りである：
RAMRI  rd,  rs
GPR[rs]の値に基づいて検索テーブルRAMの内容を読み取る。汎用レジスタGPR[rs] 中のindexの値に基づき検索テーブルRAMの内容を読み取り、目標レジスタGPR[rd] 中に保存する。
【００４６】
indexの値が検索テーブルの表項目の範囲を超えたとき、アドレスエラーの例外が発生する。
以下に、検索がヒットされなかった場合、即ち検索テーブルが検索できなかった、即ちCAMに相応するプロセスが期待したペアのSPC-TPCがない場合、対応する処理を詳しく説明する。
【００４７】
検索できなかった場合、即ちヒットされなかったら、不命中サービスプログラムの入口アドレスへジャンプし、不命中サービスプログラムで処理する。
不命中サービスプログラムは現存のルーチンであり、MIPS命令セットのRISCプロセッサのひとつの現在の標準技術であるため、本発明の実施例で詳しく説明しない。
【００４８】
一つの実施可能な方式として、前記の不命中サービスプログラムの入口アドレスは、ひとつのCP0レジスタCAM.defaultの保存で実現され、仮想機によりひとつのデフォルトを提供し、不命中サービスプログラムの入口アドレスとして、CP0レジスタCAM.defaultに保存する。
【００４９】
これはプロセッサのひとつの制御レジスタであり、他の制御レジスタと同じの読み書き方式を使用し（アドレスだけ異なる）、仮想機により、不命中サービスプログラムの入口アドレスとして、ひとつのデフォルトを提供する。CAMの検索がヒットされなかった場合、前記のCAM.defaultに保存したデフォルトを目標レジスタに送り込む。こうすれば検索プログラムがヒットされた場合、MIPS命令アドレスにジャンプして実行する；ヒットされなかった場合、不命中サービスプログラムの入口アドレスにジャンプして、不命中サービスプログラムを利用して検索された対応のアドレスを検索テーブルに書き込む。このようにすれば、検索後にシフト命令を追加して命令がヒットされたかどうかを判断することを回避することができる。
【００５０】
この時点に目標アドレスがすでに目標レジスタに保存されたため、現在のMIPS64の直接ジャンプ命令JRrsを利用してジャンプが実現される。
ここで、rsは目標アドレスを保存するレジスタである。
【００５１】
別の実施可能な方式として、不命中サービスプログラムの入口アドレスは、第１の実施例のひとつの制御レジスタに保存されなく、検索テーブルの表項目の第0項目に保存されても良い。
【００５２】
この方法においてはひとつの新たな命令VJRが設置され、デフォルトは第31号汎用レジスタの内容をSPCとして検索し、VJRの命令機能は第一種類の方法のCAMPV+JRの二つの命令の機能と類似する。
【００５３】
該命令のフォーマットは以下の通りである：
VJR  rt
31号汎用レジスタの値によって検索テーブルのRAMの内容を読み取る。汎用レジスタGPR[31]の値によって検索テーブルのRAMの内容（即ち変換後の目標アドレス）を読み取る。検索が成功した場合、目標レジスタGPR[rt]に保存する。そして命令がrtレジスタの値により目標アドレスにジャンプする；検索が成功しなかった場合、CAMの第0項目のRAM内容を目標レジスタGPR[rt]に保存する。命令はrtレジスタの値により不命中サービスプログラムにジャンプし処理される。
【００５４】
命令の実行プロセスは、命令ロードのデコードの実行などを含む全体的にプロセッサの命令を実行するプロセスであり、そのデコードの実行時にアクセスする部分は前記のCAM検索テーブルである。
【００５５】
ソース命令アドレスのジャンプ命令を使用するとき、該命令の前にひとつの命令、例えばX86のJMPrax命令によりソース命令アドレスの値をひとつ固定されたレジスタ（例えば31号レジスタ）に入れる；
二つのMIPS命令で実現する：
Addiu   $31,r2,0x0
VJR     r4
ジャンプ命令がデコードされた後、VJR命令がこの固定されたレジスタの値に基づいて検索した後、ヒットされた場合、直接に目標命令アドレスがポイントしているコードセグメントにおいて実行する；ヒットされなかった場合、直接に検索テーブルの第0項目にジャンプして、その後に不命中サービスプログラムにジャンプする。
【００５６】
本発明に係るRISCプロセッサの命令アドレスの変換検索方法を詳しく説明する。図３に示されたように、この方法は以下のステップを含む。
ステップS100：RISCプロセッサのX86の仮想機が起動するとき、検索テーブルを初期化し、得られたX86の仮想機の命令アドレスからMIPS命令アドレスの内容を検索テーブルに書き込む；
RISCプロセッサのX86の仮想機が初期化するとき、不命中サービスプログラムを利用して、不命中サービスプログラムが維持するハッシュ表に基づき、CAMPI命令とCAMWI命令の初期化によって対応するX86命令アドレスからMIPS命令アドレスへの検索テーブルを得る。
【００５７】
ステップS200：RISCプロセッサのX86の仮想機のジャンプ命令は、X86の元の命令アドレスから目標命令アドレスへの変換を完成させる必要があるため、検索テーブルをアクセスする；
前記のステップS200は以下のステップを含む：
ステップS210：検索テーブルの表項目の値を検索するCAMPV命令を使用して、レジスタのソース命令アドレスにより検索テーブルを検索して目標命令アドレスを得る；
ステップS220：検索がヒットされた場合、直接に得られた目標命令アドレスの値を目標レジスタに保存し、プログラムはジャンプ命令によって該目標アドレスがポイントしているコードセグメントにジャンプし実行する；
ステップS230：検索がヒットされなかった場合、仮想機から得られて不命中サービスプログラムのアドレスを目標レジスタに保存し、プログラムは、不命中サービスプログラムにジャンプして実行される。
【００５８】
ステップS300：不命中サービスプログラムは仮想機が維持するハッシュ表の内容に基づき、再び検索テーブルを書き直す；
前記のステップS300は以下のステップを含む：
ステップS310：検索テーブルの表項目のインデックスを検索するCAMPI命令を使用して、ソース命令アドレスの値に基づいて該値が所在する表項目のインデックス（index）を得て、さらに該当インデックスを目標レジスタに保存する。
【００５９】
ステップS320：検索テーブルの表項目のインデックス（index）により検索テーブルに書き込むCAMWI命令を使用して、目標レジスタのインデックスの値に基づき、プロセスのASID、ソース命令アドレスおよび対応する目標命令アドレスを検索テーブルに書き込む。
前記のRISCプロセッサの命令アドレスの変換検索方法はさらに以下のステップを含むのが好ましい：
ステップS400：検索テーブルのひとつの内容を無効にする；あるいは検索テーブルのRAMの内容を読み取る。
【００６０】
検索テーブルのRAM表項目のインデックス（index）により検索テーブルに書き込むCAMWI命令を使用して、指定されたインデックス（index）の該表項目に固定された値を書き込み、前記の固定された値がプログラムのソース命令アドレスとマッチせず、即ち該表項目が無効にさせた。
【００６１】
デバッグを容易にするために、検索テーブルのRAM表項目のインデックス（index）により検索テーブルRAMの表項目の内容を読み取るRAMRI命令を使用して、指定されたインデックス（index）の表項目の検索テーブルRAMの値を読み取り、目標レジスタに保存する。
【００６２】
本発明のRISCプロセッサおよび命令アドレスの変換検査の方法は、RISCプロセッサ中にX86のソース命令アドレスからMIPS目標命令アドレスのマップへの検索テーブルの構造を増加させ、RISCプロセッサのX86の仮想機において、X86の元の命令アドレスからMIPS目標命令アドレスへの変換を加速させて、仮想機の性能を向上させる。
【００６３】
添付図面を参照して本発明の具体的な実施例について説明することにより、本発明のその他の態様および特徴は当業者には自明である。
以上、本発明の具体的な実施例について説明したが、これらの実施例は単なる例であって、本発明を限定するため使用するべきものではない。本発明は添付特許請求の範囲に従って解釈すべきものである。
【産業上の利用可能性】
【００６４】
本発明のRISCプロセッサ装置および命令アドレスの変換検索の方法は、RISCプロセッサにおいてX86のソース命令アドレスからMIPS目標命令アドレスへのマッピングを実現可能な検索テーブルのアーキテクチャを増加させ、デコーダ中の検索テーブルモジュールは、検索テーブルを利用してX86のソース命令アドレスからMIPS目標命令アドレスへの変換を実現し、RISCプロセッサのX86仮想機において、X86のソース命令アドレスからMIPS目標命令アドレスへの変換を加速する。そのため、本発明は、仮想機の性能を向上させることができる。
【図１】
2011510385.tif 000004
【図２】
2011510385.tif 000005
【図３】
2011510385.tif 000006
【国際調査報告】
2011510385.tif 000007
2011510385.tif 000008
2011510385.tif 000009
2011510385.tif 000010
2011510385.tif 000011
2011510385.tif 000012