(57)【要約】      （修正有）【課題】  複数の命令セットを有するプロセッサにおいて、命令セットの切り替えが容易なプロセッサを提供する。【解決手段】  プロセッサ１００（１）は、命令セットＡに含まれる命令をデコードする第１デコーダ１１６と、命令セットＢに含まれる命令をデコードする第２デコーダ１１８と、命令セットＡ用のレジスタファイルＡ１３４と、命令セットＢ用のレジスタファイルＢ１３５と、共有レジスタファイル１３６とを備える。【選択図】    図２
2006146953.tif 000002
【特許請求の範囲】
【請求項１】
第１命令セットと第２命令セットとを実行するプロセッサであって、
前記第１命令セットに含まれる命令の実行と前記第２命令セットに含まれる命令の実行とのうち、前記第１命令セットに含まれる命令の実行にのみ用いられる第１レジスタファイルを有すること、
を特徴とするプロセッサ。
【請求項２】
前記第1命令セットに含まれる命令をデコードして前記第１デコード結果を生成する第1デコーダと、
前記第２命令セットに含まれる命令をデコードして前記第２デコード結果を生成する第２デコーダと、
を有すること、
を特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記第１命令セットに含まれる命令の実行と前記第２命令セットに含まれる命令の実行とのうち、前記第２命令セットに含まれる命令の実行にのみ用いられる第２レジスタファイルを有すること、
を特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記第１命令セットに含まれる命令の実行と、前記第２命令セットに含まれる命令の実行との両方に用いられる共通レジスタファイルを有すること、
を特徴とする請求項１に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ、システムＬＳＩ、システムＬＳＩの設計方法、及び、それを記録した記録媒体に関し、特に、複数の動作モードを切り替え可能なプロセッサ、このようなプロセッサを備えるシステムＬＳＩ、システムＬＳＩの設計方法、及び、その設計方法を記録した記録媒体に関する。
【背景技術】
【０００２】
システムＬＳＩは、画像処理や暗号化処理、フィルタ処理、復号処理など多彩な処理に使用され、その入出力信号の種類、処理のアルゴリズム、或いは、要求される時間的性能なども様々である。システムＬＳＩには、演算処理装置（プロセッサ）が組み込まれ、そのプロセッサは、一般に、要求される処理に適した性能指向の命令で構成される単一の命令セット備える。この場合、システムＬＳＩが行なう処理内容が、例えば、制御性能指向の命令セットに適した処理と、信号処理性能指向の命令セットに適した処理との双方を含む場合には、単一のプロセッサでは、全体として処理を高速化することができない。
【０００３】
実行する処理の内容に応じて、最適なプログラミング、処理、及び、処理速度を選択できる技術として、特開平８−１０６３８３号公報（特許文献１）には、速度切替命令により、縮小命令セットと高機能命令セットとを切り替えて使用できるプロセッサが記載されている。図１２は、特許文献１に記載のプロセッサの構成を示している。主メモリ２０１には、アプリケーションプログラムとして、ＲＩＳＣ命令（縮小命令セット）で記述された高速プログラムと、ＣＩＳＣ命令（高機能命令セット）で記述された低速プログラムとが、速度切替命令を境として共存して記憶されている。Ｒ／Ｃレジスタ２０９は、低速モード、又は、高速モードをＲ／Ｃフラグに格納する。
【０００４】
デコーダ選択回路２０６は、Ｒ／Ｃレジスタ２０９に格納されたＲ／Ｃフラグが高速モードであるときには、主メモリ２０１から命令レジスタ２０５にフェッチされた高速プログラム（ＲＩＳＣ命令）を、ＲＩＳＣ用デコーダ２０７に供給する。いま、ＲＩＳＣ命令である速度切替命令（低速切替命令）がＲＩＳＣ用デコーダ２０７で解読されて実行されると、Ｒ／Ｃフラグに低速モードが格納される。Ｒ／Ｃフラグに低速モードが格納されると、クロック選択回路２１８は、選択状態を切り替え、実行クロックφ’を、マスタークロックφから、マスタークロックφをｎ分周器２１９でｎ分周した分周クロックに変更する。また、デコーダ選択回路２０６は、選択状態を切り替え、主メモリ２０１から命令レジスタ２０５にフェッチされた低速プログラム（ＣＩＳＣ命令）を、マッピング部２０８及びアドレス選択部２１０を介してＣＩＳＣ用デコーダ２１１に供給する。
【０００５】
ＣＩＳＣ命令である速度切替命令（高速切替命令）がＣＩＳＣ用デコーダ２１１で解読されて実行されると、Ｒ／Ｃフラグに高速モードが格納される。Ｒ／Ｃフラグに高速モードが格納されると、クロック選択回路２１８は、選択状態を切り替え、実行クロックφ’を、マスタークロックφからｎ分周器２１８でｎ分周したクロックから、マスタークロックφに変更する。また、選択回路２０６は、選択状態を切り替え、主メモリ２０１から命令レジスタ２０５にフェッチされたＲＩＳＣ命令を、ＲＩＳＣ用デコーダ２０７に供給する。このように、プロセッサ２００は、低速プログラムと高速プログラムとの境界に挿入される速度切替命令により、高速命令セットと、低速命令セットとを動的に切り替える。
【０００６】
アプリケーションプログラムに含まれる切替命令によって、使用する命令セットを動的に切り替える別の技術として、特開２００２−３２８８０４号公報（特許文献２）には、複数の命令セットを有し、プログラムカウンタ（ＰＣ）レジスタの通常使用されない所定ビットを使用して、複数の命令セットの何れを使用するかを選択する技術が記載されている。この技術では、特許文献１に記載の技術とは異なり、命令セットを切り替えるための専用のレジスタ２０９（図１２）を不要としている。
【０００７】
【特許文献１】特開平８−１０６３８３号公報
【特許文献２】特開２００２−３２８８０４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、上記特許文献１及び特許文献２に記載の技術では、使用する命令セットを切り替えるための命令は、各命令セットのデコーダが解読して実行するため、例えば２つ以上の命令セットを含むプロセッサでは、各命令セットのデコーダが、別の命令セットへの切替命令をデコードするための回路資源を備える必要があり、回路規模が増大するという問題がある。また、命令セットの切り替えに際しては、現在選択されている命令セットに対応する切替命令を、異なる命令セットのプログラム間に挿入する必要があり、切り替え後の命令セットに加えて、切り替え前の命令セットを認識する必要があるという問題もある。
【０００９】
本発明は、従来技術における上記問題点を解消し、切り替えるべき命令セット数が増えた場合であっても、命令セットの切替命令をデコードするデコーダの回路規模が増大しないこと、切り替え前の命令セットを認識する必要がないために切替命令の挿入を簡易に行なうことができるプロセッサを提供することを目的とする。
【００１０】
また、本発明は、上記プロセッサを１以上含むシステムＬＳＩ、システムＬＳＩの設計方法、及び、それを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明のプロセッサは、複数の命令セットのそれぞれを実行するための複数のプロセッサ機能を備えるプロセッサであって、前記複数のプロセッサ機能とは別に設けられ、前記複数のプロセッサ機能の何れによっても実行されないシステム命令をデコードするシステム命令デコーダと、前記システム命令デコーダでデコードされたシステム命令に応答して、前記複数のプロセッサ機能の内の１つを選択するシステム命令実行部とを備えることを特徴とする。
【００１２】
本発明のプロセッサでは、アプリケーションプログラム中に含まれる、使用する命令セットを指定する所定のシステム命令が、システム命令デコーダでデコードされ、システム命令実行部によって実行制御されると、プロセッサは、使用する命令セットに対応するプロセッサ機能を使用して、読み込んだ命令を実行する。使用する命令セットを指定するシステム命令を、システム命令に専用のシステムデコーダ及びシステム命令実行部を使用して実行するため、使用する命令を切り替える場合であっても、現在使用している命令セットを認識する必要がなく、使用する命令セットの切り替えを簡易に行なえる。また、プロセッサに、処理性能指向が異なる命令セットを含ませた場合には、プロセッサが対象とする処理に応じて、処理に適した性能指向の命令セットに動的に切り替えて使用することで、処理全体の処理速度を向上することができる。
【００１３】
本発明のプロセッサでは、前記システム命令実行部が、更に、所定の割り込み信号に応答して、前記複数のプロセッサ機能の内の１つを選択することが好ましい。この場合、プロセッサは、使用する命令セットを指定する所定の割り込み信号によっても、指定された命令セットに対応するプロセッサ機能を使用して、読み込んだ命令を実行することができる。
【００１４】
また、本発明のプロセッサでは、前記複数のプロセッサ機能の少なくとも２つが、ハードウェア資源を共有することが好ましい。
複数のプロセッサ機能を、それぞれ独立したハードウェア部分で構成すると、加算器や乗算器などのハードウェア資源を共有することができないが、１つのプロセッサ中に複数のプロセッサ機能（命令セット）を含めることで、汎用的なハードウェア資源の共有が可能となり、個別のハードウェア部分で構成する場合に比して、ハードウェア資源を有効活用できる。
【００１５】
本発明のプロセッサでは、前記複数の命令セットの少なくとも２つは、共通の命令を含み、該少なくとも２つの命令セットに対応する複数のプロセッサ機能が、前記共通の命令をデコードする命令セットデコーダを共有する構成を採用することができる。この場合、共通の命令は、共通のデコーダでデコードされて実行されることになり、共通の命令のデコード及び実行を各プロセッサ機能で行なう場合に比して、回路資源の無駄を省くことができる。
【００１６】
本発明のプロセッサでは、前記システム命令は、プロセッサが動作する電源電圧及び動作速度を設定する命令の少なくとも１つを含むことが好ましい。プロセッサの動作モードを指定するシステム命令には、使用する命令セットを指定する命令だけでなく、プロセッサの動作電源電圧や、動作速度（使用クロック周波数）を設定する命令を含めることができる。
【００１７】
本発明のプロセッサでは、前記複数の命令セットに含まれる各命令に対応する処理制御データを記憶する記憶部を備え、入力される命令と選択されたプロセッサ機能の情報とに基づいて、該入力される命令に対応するアドレスを生成して、前記入力される命令に対応する処理制御データを前記記憶部から読み出す構成を採用することができる。この場合、記憶部は、例えば一般的なプロセッサにおけるデコーダ又は実行制御部が出力すべき水平マイクロコード（水平命令）を、処理制御データとして記憶し、プロセッサは、入力される命令（命令コード）と、選択されている命令セットの情報とに基づいて、記憶部から処理制御データを読み出し、命令を実行する。例えば記憶部のメモリ容量が一定であっても、外部から、記憶部が記憶する処理制御データをプログラマブルに変更可能に構成することで、プロセッサに含ませる命令数や命令セット数を増やすことができる。
【００１８】
本発明のプロセッサでは、前記複数のプロセッサ機能の内の少なくとも２つを、共通の命令セットとして構成することができる。この場合、プロセッサには、命令セット自体は同じであるが、ハードウェア資源の使用形態等が異なる複数のプロセッサ機能が含まれる。
一般に、高速動作に対応するハードウェア資源は、低速動作のハードウェア資源よりも回路規模が大きくなる。このため、高速動作に対応するプロセッサ機能を、消費電力を抑えるために低速で動作させた場合であっても、低速動作に対してハードウェア資源が冗長な構成となるため、電力が無駄に消費される。例えば、プロセッサに、高速命令セットと、低速命令セットとを共通の命令セットとして含ませ、高速命令セット及び低速命令セットのそれぞれに対応するプロセッサ機能を切り替えて使用することで、同じ命令を実行するプロセッサを、必要最小限の資源で動作させることができ、更なる低消費電力化が可能となる。
【００１９】
本発明のプロセッサでは、前記複数のプロセッサ機能の少なくとも１つは、段数が可変に設定されてパイプライン制御され、該パイプライン制御における段数が特定のシステム命令に応答して設定されることが好ましい。この場合、システム命令には、パイプライン段数を指定する命令が含まれ、プロセッサでは、パイプライン段数を指定するシステム命令の実行によって、プロセッサ機能のパイプライン段数が任意に設定される。
【００２０】
本発明のパイプライン制御のプロセッサは、パイプライン制御における段数が可変としてあり、プロセッサに入力された段数設定命令に応答して、前記段数が設定されることを特徴とする。
【００２１】
本発明のパイプライン制御のプロセッサでは、プログラムに含まれる、パイプラインの段数を設定する段数設定命令を実行することで、プロセッサのパイプライン段数を変更することができる。このプロセッサでは、プログラム実行中に、動的にパイプライン段数が切り替え可能なため、高速化が要求される処理ではパイプライン段数を増加させて、処理の高速化を図ることができる。
【００２２】
本発明のシステムＬＳＩは、本発明のプロセッサを備えることを特徴とする。
【００２３】
本発明の別の視点のシステムＬＳＩは、複数のプロセッサ機能を有する本発明のプロセッサを、複数有することを特徴とする。
【００２４】
本発明の別の視点のシステムＬＳＩでは、各プロセッサに含まれる複数の命令セット間で、ハードウェア資源を共有可能であるため、命令セット毎に別々に独立したプロセッサを持つよりもハードウェア資源を有効活用できる。また、プロセッサ毎に、使用する命令セットを動的に切り替えることができるため、システムＬＳＩに要求される処理に応じて命令セットを選択することで、システムＬＳＩの処理能力の向上を図ることができる。
【００２５】
本発明のシステムＬＳＩは、前記複数のプロセッサは、全てのプロセッサが同じ命令セットで動作する第１のパターンと、少なくとも１つのプロセッサが、他のプロセッサとは異なる命令セットで動作する第２のパターンの何れかで動作することが好ましい。
例えば、単一の処理を行なうときには、システムＬＳＩを第１のパターンで、つまり、全てのプロセッサを同じ命令セットで動作させ、各プロセッサを並列に動作させることで、処理速度を上げることができる。また、例えば制御系の処理と信号処理系の処理とを平行して実行する複合処理を行なうときには、システムＬＳＩを第２のパターンで、つまり、全てのプロセッサを同じ命令セットで動作させずに、あるプロセッサを制御系の処理に適した命令セットで動作させ、他のプロセッサを信号処理系の処理に適した命令セットで動作させることで、処理速度を上げることができる。
【００２６】
本発明のシステムＬＳＩの設計方法は、複数のプロセッサ機能を有するプロセッサを複数有するシステムＬＳＩを設計するＬＳＩ設計方法であって、システムＬＳＩ設計仕様から、機能設計段階でハードウェア設計及びソフトウェア設計に分割するステップと、ハードウェア設計において、前記複数のプロセッサのそれぞれに対応するハードウェア構成と、アルゴリズムレベルで記述された前記システム命令及び前記複数の命令セットとを、ハードウェア情報として入力するステップと、前記ハードウェア情報を動作合成するステップとを備えることを特徴とする。
【００２７】
本発明のシステムＬＳＩの設計方法では、プロセッサに組み込むべき複数の命令セット及びシステム命令を含むハードウェア情報を動作合成してシステムＬＳＩの回路構成を得るため、複数の命令セット間で、演算資源等のハードウェア資源を共有するプロセッサを含むシステムＬＳＩを得ることができる。このため、限られたハードウェア回路規模の中で、より効率が高く、高い処理能力を有するシステムＬＳＩを得ることができる。
【００２８】
本発明のシステムＬＳＩの設計方法では、前記動作合成ステップによって、ハードウェア化するのに適した論理合成用ＨＤＬ記述と、シミュレーションに使用するのに適したシミュレーション記述と、ハードウェア規模を示す合成情報とを生成することが好ましい。
【００２９】
本発明のシステムＬＳＩの設計方法では、前記動作合成ステップに後続して、前記シミュレーション記述と、前記複数のプロセッサを作動させるソフトウェアの機械語命令とに基づいて、設計されるシステムＬＳＩの動作検証を行なうステップとを有することが好ましい。
命令セットシミュレータ等のシミュレーション技術により、システムＬＳＩの回路構成に、ソフトウェアを実装し、システムＬＳＩの処理能力の検証や設計誤りの検証をクロックサイクルレベルで行なう動作検証に際して、動作合成により得られるシミュレーション用記述を使用することで、システムＬＳＩの回路構成を人手でモデリングする必要がなくなり、検証作業を簡素化することができる。また、シミュレーション記述を動作合成により得ることで、システムＬＳＩの回路構成に変更が生じた場合であっても、動作検証のやり直しが容易となる。
【００３０】
本発明のシステムＬＳＩの設計方法では、前記合成情報と、前記動作検証ステップにおける検証結果とに基づいて、前記分割ステップに戻るか否かを判定することが好ましい。
動作合成により得られる合成情報によってシステムＬＳＩの回路規模を見積もり、その回路規模が、システムＬＳＩに要求される回路規模を超えると判定されるときには、システムＬＳＩの設計をハードウェア設計とソフトウェア設計との分割から設計をやり直すことができる。また、動作検証により、正常に動作しない、或いは、システムＬＳＩが要求される時間性能を満たさない場合には、システムＬＳＩの設計をハードウェア設計とソフトウェア設計との分割から設計をやり直すことができる。
【００３１】
本発明のシステムＬＳＩの設計方法は、前記ソフトウェアの設計では、前記複数のプロセッサ毎に前記複数の命令セットの命令及びシステム命令を含むソースプログラムを作成するステップと、前記プロセッサ毎のソースプログラムを、前記ハードウェア情報を参照して一括して機械語に翻訳するステップとを有することが好ましい。
１つのプロセッサが複数の命令セットを有するとき、そのプロセッサ用のソースプログラムには、複数の命令セットに対応する命令が混在することとなる。このようなソースプログラムを、プロセッサに含めた複数の命令セット及びシステム命令に対応する、マルチターゲットのアセンブラ・コンパイラ・リンカを使用して、一括でプロセッサが直接理解できる機械語に翻訳する。このとき、マルチターゲットのアセンブラ・コンパイラ・リンカには、プロセッサの設計段階で入力したハードウェア情報を参照して、ソースプログラム中の命令が何れの命令セットに含まれる命令であるかを識別して、機械語を生成する。なお、一括で機械語に翻訳するということは、ソースプログラムを、１つのプログラムコードとして生成することを意味する。
【００３２】
本発明の記録媒体は、上記本発明のシステムＬＳＩの設計方法を実現するプログラムを記録したことを特徴とする。
【発明の効果】
【００３３】
以上説明したように、本発明のプロセッサ、及び、これを備えるシステムＬＳＩは、複数の命令セットの何れにも属しないシステム命令によって選択された命令セットに対応するプロセッサ機能で動作するため、命令セットを切り替える際に、切り替え前の命令セットを認識する必要がなく、切り替えが簡易に行なえる。また、入力された命令以外にも、所定の割り込み信号に応答して命令セットを切り替えるように構成することもできる。
本発明のシステムＬＳＩの設計方法、及び、それを記録した記録媒体では、複数の命令セットを有するプロセッサの回路構成を、動作合成により得ることで、ハードウェア資源の共有が容易となり、限られた回路規模の中で、処理性能が高いシステムＬＳＩを、簡易に設計することができる。
【発明を実施するための最良の形態】
【００３４】
以下、図面を参照し、本発明の実施形態例に基づいて、本発明を更に詳細に説明する。図１は、本発明の第１実施形態例のシステムＬＳＩの構成を示している。このシステムＬＳＩは、Ｎ個（Ｎは自然数）のプロセッサ１００（１）〜（Ｎ）と、各プロセッサ１００に共通な命令メモリ１０１ａ、データメモリ１０１ｂ、Ｉ／Ｏ（入出力部）１０２、電源バス１０３ａ、クロックバス１０３ｂ、割り込みバス１０３ｃ、命令データバス１０３ｄ、及び、データバス１０３ｅとを備える。なお、以下の説明では、プロセッサの符号を、特定のプロセッサを表示する以外のときには１００と表記する。
【００３５】
電源バス１０３ａは、複数の電源に接続され、クロックバス１０３ｂは、複数の周波数のクロック源に接続される。プロセッサ１００及びＩ／Ｏ１０２には、電源バス１０３ａから任意の電圧値の電源が供給され、クロックバス１０３ｂから任意の周波数のクロック信号が供給される。割り込みバス１０３ｃは、複数の割り込み信号を伝達し、プロセッサ１００には、割り込みバス１０３ｃから任意の割り込み信号が供給される。
【００３６】
命令メモリ１０１ａは、各プロセッサ１００のアプリケーションプログラムを記憶する。命令バス１０３ｄは、命令部アドレスバスと、命令部データバスとを含み、各プロセッサ１００は、命令部アドレスバスを介して命令メモリ１０１ａのアドレスを指定し、そのアドレスのデータ（命令）に命令部データバスを介してアクセスする。データメモリ１０２は、プロセッサ１００が使用するデータを記憶する。データバス１０３ｅは、データ部アドレスバスと、データ部データバスとを含み、各プロセッサ１００は、データ部アドレスバスを介してデータメモリ１０２のアドレスを指定し、そのアドレスにデータ部データバスを介してアクセスする。
【００３７】
各プロセッサ１００は、任意の組合せの複数の命令セットを有する。例えば、プロセッサ１００（１）は、命令セットＡ及び命令セットＢの２つの命令セットを有し、プロセッサ１００（２）は、命令セットＡ、命令セットＢ、及び、命令セットＣの３つの命令セットを有する。各プロセッサ１００は、使用する命令セット、システムクロックの周波数、或いは、電源電圧が異なる複数の動作モードを有し、命令メモリ１０１ａから読み取った特定の命令によって動作モードを切り替え可能であり、また、割り込みバス１０３ｃからの特定の割り込み信号によって動作モードを切り替え可能である。
【００３８】
図２は、図１のプロセッサ１００（１）の詳細構成を示している。各プロセッサ１００は、図２に示すプロセッサ１００（１）と同様に、プロセッサ制御部１１０、プロセッサ処理部１３０、命令メモリ制御部１４０、及び、データメモリ制御部１５０を備える。以下では、各プロセッサ１００の各構成要素について、命令セットＡと命令セットＢとを有するプロセッサ１００（１）を例に挙げて説明する。
【００３９】
プロセッサ制御部１１０は、命令フェッチレジスタ１１１、命令セット切替部１１２、システム命令デコーダ１１３、システム命令実行制御部１１４、命令モードレジスタ１１５、命令セットＡデコーダ１１６、命令セットＡ実行制御部１１７、命令セットＢデコーダ１１８、命令セットＢ実行制御部１１９、及び、命令実行切替部１２０を備える。命令セットＡデコーダ１１６及び命令セットＡ実行制御部１１７は、命令セットＡを実行するプロセッサ機能を実現するハードウェア部分を構成する。同様に、命令セットＢデコーダ１１８及び命令セットＡ実行制御部１１９は、命令セットＢを実行するプロセッサ機能を実現するハードウェア部分を構成する。プロセッサ処理部１３０は、命令セットＡに固有のハードウェア資源として、演算ユニットＡ１３１及びレジスタファイルＡ１３４を備え、命令セットＢに固有のハードウェア資源として、演算ユニットＢ１３２及びレジスタファイルＢ１３５を備える。また、双方の命令セットに共通のハードウェア資源として、共有演算ユニット１３３及び共有レジスタファイル１３６を備える。
【００４０】
命令フェッチレジスタ１１１には、プロセッサ１００が次に実行すべき命令が、命令部データバスを介して命令メモリ１０１ａから読み込まれる。命令メモリ１０１ａには、他のプロセッサのためのプログラムと共に、プロセッサ１００（１）のシステム命令、命令セットＡの命令、及び、命令セットＢの命令が含まれるプログラムが記憶されている。システム命令は、プロセッサ１００の動作モードを指定する命令として構成される。命令セットＡと命令セットＢとは、互いに異なる命令セットとして構成され、例えば、命令セットＡは一般的なＣＰＵが有する制御性能指向の命令セットとして構成され、命令セットＢは一般的なＤＳＰが有する信号処理性能指向の命令セットとして構成される。
【００４１】
システム命令デコーダ１１３は、命令セットＡ及び命令セットＢを実行するプロセッサ機能を実現するハードウェア部分とは独立に構成され、命令セット切替部１１２を介さずに受信したシステム命令をデコードし、そのデコード結果をシステム命令実行制御部１１４に送信する。システム命令実行制御部１１４は、プロセッサ１００（１）の動作モードを指定するための情報を保持する命令モードレジスタ１１５の値を、受信したデコード結果に基づいて設定する。システム命令には、動作モードを指定する命令の１つとして、命令セット切替部１１２の選択を指定する命令、つまり、プロセッサ１００が使用する命令セット（使用命令セット）を指定する命令が含まれる。命令セット切替部１１２は、命令モードレジスタ１１５の値に基づいて、選択状態を切り替え、命令フェッチレジスタ１１１に読み込まれた命令を、命令セットＡデコーダ１１６、又は、命令セットＢデコーダ１１８に選択的に供給する。
【００４２】
命令セット切替部１１２が、命令セットＡデコーダ側を選択しているときには、命令フェッチレジスタ１１１に読み込まれた命令は、命令セットＡデコーダ１１６でデコードされ、そのデコード結果は、命令セットＡ実行制御部１１７に送信される。命令セットＡ実行制御部１１７は、演算ユニットＡ１３１、及び、レジスタファイルＡ１３４に直接に制御信号を送信する。また、このとき命令実行切替部１２０は、命令セット切替部１１２の選択に対応して、命令セットＡ実行制御部１１７を選択しており、命令セットＡ実行制御部１１７は、ＰＣ制御部１４２、ＤＰ制御部１５２、共有演算ユニット１３３、及び、共有レジスタファイル１３６に、命令実行切替部１２０を介して制御信号を送信する。言い換えると、命令セットＡ実行制御部１１７は、命令セットＡに固有のハードウェア資源と、命令セットＡ／Ｂに共有のハードウェア資源との双方を使用して、命令セットＡの命令を実行する。このとき、命令セットＡの実行で使用されないハードウェア資源、つまり命令セットＢデコーダ１１８、命令セットＢ実行制御部１１９、演算ユニットＢ１３２、及び、レジスタファイルＢ１３５は、非活性化状態とされ、消費電力が低減される。
【００４３】
上記とは逆に、命令セット切替部１１２が、命令セットＢデコーダ側を選択しているときには、命令フェッチレジスタ１１１に読み込まれた命令は、命令セットＢデコーダ１１８でデコードされ、そのデコード結果は、命令セットＢ実行制御部１１９に送信される。命令セットＢ実行制御部１１９は、演算ユニットＢ１３４、及び、レジスタファイルＢ１３５に直接に制御信号を送信する。また、このとき命令実行切替部１２０は、命令セット切替部１１２の選択に対応して、命令セットＢ実行制御部１１９側を選択しており、命令セットＢ実行制御部１１９は、ＰＣ制御部１４２、ＤＰ制御部１５２、共有演算ユニット１３３、及び、共有レジスタファイル１３６に、命令実行切替部１２０を介して制御信号を送信する。言い換えると、命令セットＢ実行制御部１１９は、命令セットＢに固有のハードウェア資源と、命令セットＡ／Ｂに共有のハードウェア資源との双方を使用して、命令セットＢの命令を実行する。このとき、命令セットＢの実行で使用されないハードウェア資源、つまり命令セットＡデコーダ１１６、命令セットＡ実行制御部１１７、演算ユニットＡ１３１、及び、レジスタファイルＡ１３４は、非活性化状態とされ、消費電力が低減される。
【００４４】
システム命令デコーダ１１３は、デコードすべき命令がシステム命令でないときには、その命令をＮＯＰ（No OPeration）命令としてデコードする。また、命令セットＡデコーダ１１６は、デコードすべき命令が命令セットＡに含まれる命令でないときには、その命令をＮＯＰ命令としてデコードし、命令セットＢデコーダ１１８は、デコードすべき命令が命令セットＢに含まれる命令でないときには、その命令をＮＯＰ命令としてデコードする。
【００４５】
命令メモリ制御部１４０は、プログラムカウンタ（ＰＣ）１４１、ＰＣ制御部１４２、及び、割り込み制御部１４３を備える。プログラムカウンタ１４１には、命令フェッチレジスタ１１１に読み込むべき命令メモリ１０１ａのアドレスが格納される。ＰＣ制御部１４２は、プログラムカウンタ１４１の値を制御する。割り込み制御部１４３は、外部からの割り込み信号を受信して、ＰＣ制御部１４２と命令モードレジスタ１１５とをそれぞれ制御する。
【００４６】
ＰＣ制御部１４２は、通常時には、プログラムカウンタ１４１をインクリメントして、命令メモリ１０１ａ内の命令を順次に実行させる。ＰＣ制御部１４２は、命令メモリ１０１ａ内の分岐命令等が実行されると、命令セットＡ実行制御部１１７又は命令セットＢ実行制御部１１９からの信号に基づいて、プログラムカウンタ１４１の値を分岐先のアドレスに変更する。また、ＰＣ制御部１４２は、所定の割り込み信号を受信した割り込み制御部１４３からの指令に基づいて、プログラムカウンタ１４１の値を、割り込み信号に対応して定められた所定のアドレスに変更する。割り込み制御部１４３は、使用命令セットの強制的設定を要求する特定の割り込み信号を受信すると、命令モードレジスタ１１５の値を変更して、プロセッサ１００の動作モードを変更する。
【００４７】
データメモリ制御部１５０は、データポインタ（ＤＰ）１５１と、ＤＰ制御部１５２とを備える。データポインタ１５１は、プロセッサ制御部１３０との間でデータの送受信が行なわれるべきデータメモリ１０２のアドレスを格納する。ＤＰ制御部１５２は、データポインタ１５１の値を制御する。プロセッサ１００が、データの転送命令等を実行すると、ＤＰ制御部１５２は、命令セットＡ実行制御部１１７又は命令セットＢ実行制御部１１９からの信号に基づいて、データポインタ１５１の値を、データ転送先、又は、データ転送元のアドレスに変更する。プロセッサ１００の動作は、命令セットの種類及び数を除いて、プロセッサ１００（１）の動作と同様である。
【００４８】
図３は、図２のプロセッサ１００（１）の動作例をタイミングチャートとして示している。プロセッサ１００（１）は、プログラムカウンタ１４１が初期値に設定されて、命令メモリ１０１ａから、使用命令セットが命令セットＡ、使用クロック周波数が５０ＭＨｚの動作モードが指定されるシステム命令を読み込んでこれを実行する。命令セットＡモードに設定されたプロセッサ１００（１）では、命令セット切替部１１２が命令セットＡ側を選択し、命令セットＡデコーダ１１６によって命令メモリ１０１ａから命令フェッチレジスタ１１１を介して読み出された命令がデコードされて処理が実行される。
【００４９】
時刻ｔ１で、使用命令セットが命令セットＢで、使用クロック周波数が１００ＭＨｚの動作モードが指定されるシステム命令が実行されると、命令セット切替部１１２は命令セットＢ側を選択し、プロセッサ１００（１）は、システムクロックとして、クロックバス１０３ｂから周波数が１００ＭＨｚのクロック信号を入力する。このとき、プロセッサ１００（１）には、クロック周波数が高くなることに対応して、時刻ｔ１以前よりも高い電圧値の電源が、電源バス１０３ａから入力される。使用する命令セットを切り替えることで、プロセッサ１００（１）は、制御性能指向のプロセッサモードから信号処理性能指向のプロセッサモードに変化し、プロセッサ１００（１）での信号処理の実行が高速になる。
【００５０】
時刻ｔ２では、命令メモリ１０１ａから読み出された命令によって、使用命令セットを命令セットＡに、使用クロック周波数を２５ＭＨｚにするシステム命令が実行される。プロセッサ１００（１）は、制御性能指向のプロセッサとして動作し、動作クロック周波数を時刻ｔ１以前に比して低速にすることで、時刻ｔ１以前よりも低速かつ低消費電力で処理を実行する。時刻ｔ３で、プロセッサ１００（１）に信号処理を要求する特定の割り込み信号が割り込み制御部１４３に入力されると、プロセッサ１００（１）は、再び使用命令セットを命令セットＢに切り替え、使用クロック周波数を１００ＭＨｚにして、高速な信号処理を実行する。
【００５１】
図４は、図２のプロセッサを含むシステムＬＳＩの設計を処理するＣＡＤシステムを、その設計方法のフローチャートと共に機能ブロック図として示している。システムＬＳＩの設計では、設計対象のシステムＬＳＩの全機能を、システムＬＳＩ要求仕様Ｄ１として定義し、そのシステムＬＳＩ要求仕様Ｄ１を、機能仕様の変更容易性、回路規模、処理時間、及び、消費電力などの制約条件を考慮して、ハードウェア部分とソフトウェア部分とに分割する（ステップＳ１）。ハードウェア部分の設計では、プロセッサの機能を高級言語を用いて設計し、ソフトウェア部分の設計では、新たなハードウェアとして設計するプロセッサ上で動作するアプリケーションプログラムを設計する。
【００５２】
ハードウェア部分の設計では、プロセッサに組み込むべき複数の命令セット、プロセッサの機能（動作モード）を切り替えるためのシステム命令、及び、外部バス条件や動作クロック周波数などの構成情報を含むプロセッサ設計情報Ｄ２を入力して、プロセッサ全体の機能構成を定義する（ステップＳ２）。ステップＳ２では、プロセッサ全体の機能構成の定義から、複数の命令セットの命令を含むアプリケーションプログラムを、命令セットに応じて正しく機械語に翻訳する際に使用されるマルチ命令セット構成定義Ｄ１１が得られる。プロセッサ設計情報２は、資源制約が加えられて、それと共に動作合成される（ステップＳ３）。
【００５３】
ステップＳ３の動作合成により、合成情報Ｄ３と、ハードウェア化するのに適した論理合成用ＨＤＬ（Hardware Description Language）記述Ｄ４、及び、クロックサイクルレベルで動作検証するためのシミュレーション用Ｃ言語記述Ｄ５とから成るプロセッサ設計構成Ｄ６が得られる。得られた合成情報Ｄ３によって、回路規模がチェックされ（ステップＳ４）、回路規模がシステムＬＳＩの制約条件を満たさないときにはステップＳ１に戻り、ハードウェア部分とソフトウェア部分の分割から設計をやり直す。ステップＳ４で、回路規模チェックの結果が良好である場合には、サイズ設計が完了し、ハードウェア部分（プロセッサ）の構成が定まる。
【００５４】
ソフトウェア部分の設計では、ステップＳ２でプロセッサ設計情報Ｄ２に含めた各命令セットのそれぞれで動作すべきプログラム、図４の例では、命令セットＡで動作すべきプログラムＡ（Ｄ７）及び命令セットＢで動作すべきプログラムＢ（Ｄ８）と、システム命令で動作すべきシステムプログラムＤ９とを含むアプリケーションプログラムＤ１０を高級言語等で作成し、プロセッサの動作を決定する。アプリケーションプログラムＤ１０は、ステップＳ２でプロセッサ設計情報Ｄ２から得られるマルチ命令セット構成定義Ｄ１１と共に、マルチターゲットのアセンブラによるアセンブルや、コンパイラによるコンパイル、リンカによるリンクがされ、デバッグ情報Ｄ１２、及び、設定対象のプロセッサが直接理解できる機械語命令Ｄ１３が得られる（ステップＳ５）。
【００５５】
ステップＳ３で得られたシミュレーション用Ｃ言語記述Ｄ５と、ステップＳ５で得られたデバッグ情報Ｄ１２及び機械語命令Ｄ１３と、プロセッサのテスト用入出力信号を含む周辺環境を定義するテストベンチＤ１４とが、命令セットシミュレータに掛けられ、プロセッサの設計に誤りがあるか否かが確認される（ステップＳ６）。命令セットシミュレータでは、プロセッサの構成、及び、アプリケーションプログラムＤ１０のデバッグ作業が行なわれると共に、プロセッサの処理能力である時間性能特性及び消費電力特性が見積もられ、時間性能特性及び消費電力特性を性能情報Ｄ１５として出力する。
【００５６】
ステップＳ６により得られる性能情報Ｄ１５によって、システムＬＳＩが、求められる性能条件を満たすか否かが確認され（ステップＳ７）、要求される性能条件を満たさない場合には、ステップＳ１へ戻り、ハードウェア部分とソフトウェア部分の分割からシステムＬＳＩの設計をやり直す。システムＬＳＩの性能が、要求される性能条件を満たす場合には、システムＬＳＩの設計は完了し、プロセッサと、プロセッサ上で動作するアプリケーションプログラムとが確定する。
【００５７】
本実施形態例では、各命令セットのデコーダから独立したシステム命令デコーダ１１３が、使用命令セットの選択を含むプロセッサの動作モードを指定するシステム命令をデコードするため、各命令セットのデコーダに、命令セットの切り替えを要求する命令をデコードするための回路資源を配置する必要がなく、プロセッサ１００の回路規模が増大しない。システム命令を、各命令セットから独立した命令として構成することで、プロセッサ１００では、切り替え前の命令セットを認識することなく、使用命令セットを切り替えることができる。また、プロセッサ１００は、命令メモリ１０１ａから読み込んだシステム命令以外にも、使用命令セットの強制的設定を要求する特定の外部割り込み信号に応答して、使用命令セットが切替可能である。
【００５８】
上記本実施形態例のプロセッサを含むシステムＬＳＩの設計では、複数の命令セットを有するプロセッサを、ＲＴ（レジスタ転送）レベルよりも抽象度が高い動作記述から動作合成して得る。これにより、汎用性が高い演算資源等のハードウェア資源を、異なる命令セット間で共有するシステムＬＳＩ（プロセッサ）を得ることができ、限られたハードウェア回路規模の中で、より効率がよく、高い処理能力を有するシステムＬＳＩを得ることができる。また、動作合成により得られたシミュレーション用Ｃ言語記述Ｄ５を、アプリケーションプログラムと共に、命令セットシミュレータでクロックサイクルレベルで動作検証することにより、システムＬＳＩの動作検証が容易となる。
【００５９】
なお、上記本実施形態例の説明では、プロセッサ１００が、相互に異なる複数の命令セットを有する例について説明したが、プロセッサ１００に含まれる複数の命令セットは、命令セット自体は同一であるが、ハードウェア資源の使用形態が異なる命令セットとして構成されていてもよい。例えば、図２において、命令セットＡと命令セットＢとを、同一の命令コードにより同一の実行結果をもたらす同一の命令セットとして構成し、命令セットＡは、命令セットＡに固有のハードウェア資源（例えば回路規模大）を使用して命令を実行し、命令セットＢは、命令セットＢに固有のハードウェア資源（例えば回路規模小）を使用して命令を実行するように構成することもできる。この場合、命令メモリ１０１ａは、単一の命令セットで構成されるアプリケーションプログラムを記憶する。
【００６０】
例えば低消費電力モードを有するプロセッサでは、動作クロックを低速にして消費電力を低減している。一般に、高速動作に対応するハードウェア資源は、低速動作のハードウェア資源よりも回路規模が大きくなるため、高速動作に対応するプロセッサを低消費電力モードで動作させているときには、ハードウェア資源が冗長な構成となる。このような事態を回避するために、プロセッサに、高速命令セットと、低速命令セットとを同一の命令セットとして含ませ、高速命令セットを選択するときには高速動作時用のハードウェア資源を使用して命令を実行し、低速命令セットを選択するときには低速動作時用のハードウェア資源を使用して命令を実行するようにプロセッサを構成する。このプロセッサが低消費電力モードで動作し、低速命令セットを選択するときには、高速命令セット用のハードウェア資源の電源供給を遮断することで、冗長なハードウェア構成に供給される電力を削減し、更なる低消費電力を実現することができる。
【００６１】
図５（ａ）〜（ｃ）は、プロセッサ１００を４つ有するシステムＬＳＩの構成例を示している。システムＬＳＩは、４つのプロセッサ１００と、命令メモリ及びデータメモリを含むメモリ１０１、Ｉ／Ｏ１０２と、各種のバス１０３とを備える。このシステムＬＳＩは、４つのプロセッサ１００（１）〜（４）が全て命令セットＡで動作するパターン１（同図（ａ））、第１〜第３のプロセッサ１００（１）〜（３）が命令セットＡで動作し、第４のプロセッサ１００（４）が命令セットＢで動作するパターン２（同図（ｂ））、及び、第１のプロセッサ１００（１）が命令セットＡで動作し、第２及び第３のプロセッサ１００（２）、（３）が命令セットＢで動作し、第４のプロセッサ１００（４）が命令セットＣで動作するパターン３（同図（ｃ））の３つの動作パターンを有する。
【００６２】
上記３つの動作パターンを実現するために、最低限、第１のプロセッサ１００（１）は命令セットＡを備え、第２及び第３のプロセッサ１００（２）、（３）は命令セットＡ及び命令セットＢを備え、第４のプロセッサ１００（４）は命令セットＡと命令セットＢと命令セットＣとを備える必要がある。例えば、命令セットＡは、制御性能指向の命令セット、具体的には、Ｃ言語で記述されたプロトコルソフトウェア等に適した命令セットとして構成され、命令セットＢは、一般的信号処理性能指向の命令セット、具体的には、一般的なＡＶ系メディアアプリケーション等に適した命令セットとして構成され、命令セットＣは、専用信号処理性能指向の命令セット、具体的には、通信データパスの信号処理等に適した命令セットとして構成される。
【００６３】
図６は、図５のシステムＬＳＩの処理性能をベクトルとして示している。システムＬＳＩがパターン１（図５（ａ））で動作する場合には、全てのプロセッサが命令セットＡで動作するため、ベクトルａとして示すように、制御性能が高く、信号処理性能が低いシステムＬＳＩとして動作する。システムＬＳＩがパターン２（図５（ｂ））で動作する場合には、４つのうちの１つのプロセッサが命令セットＢで動作するため、ベクトルｂとして示すように、パターン１に比して制御性能が低く、信号処理性能が高いシステムＬＳＩとして動作する。システムＬＳＩがパターン３（図５（ｂ））で動作する場合には、ベクトルｃに示すように、パターン２に比して制御性能が更に低く、信号処理性能が更に高いシステムＬＳＩとして動作する。
【００６４】
図７は、図５のシステムＬＳＩの処理例をブロック図として示し、図８は、そのシステムＬＳＩの処理と動作パターンとの対応関係を示している。システムＬＳＩは、アプリケーションとして、図７に示すように、受信したデータをフィルタリングする受信フィルタ処理、フィルタリングしたデータの誤り訂正を行なう受信誤り訂正処理、及び、誤り訂正されたデータの伸長を行なう受信データ伸長処理を順次に有し、また、これらの処理の制御と並列に行なわれる通信制御処理を有する。
【００６５】
図８において、システムＬＳＩが通信制御処理のみを行なう期間では、通信制御処理には制御性能指向の処理能力が要求されるため、システムＬＳＩは、全てのプロセッサの使用命令セットを命令セットＡにして、図５（ａ）に示すパターン１で動作する。受信フィルタ処理及び受信データ伸長処理を行なう期間では、それらの処理には一般的な信号処理性能指向の処理能力が要求されるため、システムＬＳＩは、パターン１から、４つのプロセッサのうちの一のプロセッサの使用命令セットを命令セットＢに切り替え、図５（ｂ）に示すパターン２で動作する。また、受信誤り訂正処理を行なう期間では、受信誤り訂正処理には、一般的な信号処理性能指向の処理能力と、専用的な信号処理性能指向の処理能力とが要求されため、システムＬＳＩは、４つのプロセッサのうちの２つの使用命令セットを命令セットＢにし、残りの２つのプロセッサのうちの一方の使用命令セットを命令セットＡにし、他方の使用命令セットを命令セットＣにして、図５（ｃ）に示すパターン３で動作する。
【００６６】
上記のように、システムＬＳＩでは、アプリケーションプログラム上のシステム命令、又は、特定の割り込み信号により、複数のプロセッサの使用命令セットを、図８に示すように、全てのプロセッサ１００を同じ命令セットとすること、又は、所定数のプロセッサ１００の使用命令セットを、他のプロセッサ１００の使用命令セットと異なる命令セットにすることができる。このように、使用命令セットをダイナミックに変更することで、時々刻々と変化するシステムＬＳＩが行なうべき処理に要求される処理能力指向に応じて、システムＬＳＩの処理性能指向を、時間軸上で任意に設定することができ、システムＬＳＩの各処理での処理能力の向上を図ることができる。
【００６７】
図９は、本発明の第２実施形態例のプロセッサのプロセッサ制御部の構成を示している。本実施形態例では、図２のプロセッサ制御部１１０が、プロセッサ制御部１１０ｂに置き換わる点で第１実施形態例と相違する。プロセッサ制御部１１０ｂは、命令フェッチレジスタ１１１、命令セット切替部１１２、システム命令デコーダ１１３、システム命令実行制御部１１４、命令モードレジスタ１１５、命令セットＡデコーダ１１６、命令セットＡ実行制御部１１７、命令セットＢデコーダ１１８、命令セットＢ実行制御部１１９、命令実行切替部１２０、共有命令セットでコーダ１２１、及び、共有命令セット実行制御部１２２を備える。
【００６８】
共有命令セットデコーダ１２１は、命令フェッチレジスタ１１１が読み込んだ命令セットＡ及び命令セットＢに共通の共有命令を、命令セットＡデコーダ１１６又は命令セットＢデコーダ１１８と、命令実行切替部１２０とを介して入力し、そのデコード結果を出力する。共有命令セット実行制御部１２２は、共有命令セットデコーダ１２１からのデコード結果に基づいて、プロセッサ処理部１３０、ＰＣ制御部１４２、及び、ＤＰ制御部１５２に制御信号を送信し、共有命令を実行する。
【００６９】
本実施形態例では、複数の命令セットが共有する１つ以上の命令を、共有命令セットデコーダ１２１でデコードして実行する。第１実施形態例では、ハードウェア資源である命令セットＡデコーダ１１６及び命令セットＢデコーダ１１７のそれぞれが、共有命令に対応するデコード結果を出力するための回路資源を必要としていたが、本実施形態例では、命令セットＡデコーダ１１６と命令セットＢデコーダ１１７回路資源の重複部分を削減できる。共有命令としては、例えばプロセッサに共通の四則演算等が含まれる。
【００７０】
図１０は、本発明の第３実施形態例のプロセッサのプロセッサ制御部の構成を示している。本実施形態例では、図２のプロセッサ制御部１１０が、プロセッサ制御部１１０ｃに置き換わる点で、第１実施形態例と相違する。プロセッサ制御部１１０ｃは、命令フェッチレジスタ１１１、命令セット切替部１１２、システム命令デコーダ１１３、システム命令実行制御部１１４、命令モードレジスタ１１５、参照アドレスレジスタ１２３、参照テーブルメモリ１２４、及び、処理制御データレジスタ１２５を備える。
【００７１】
参照テーブルメモリ１２４は、命令セットＡデコーダ１１６及び命令セットＢデコーダ１１８（図２）の出力信号に対応するデコード結果データと、命令セットＡ実行制御部１１７及び命令セットＢ実行制御部１１９（図２）の出力信号に対応する実行制御データとを、水平マイクロコード（水平命令）として記憶する。参照テーブルメモリ１２４では、実行すべき命令と、選択されている命令セットの情報とに基づく参照アドレスによって、選択されている命令セットの実行すべき命令に対応するデコード結果データ及び実行制御データが抽出されるように、デコード結果データ及び実行制御データのアドレスが設定される。
【００７２】
命令メモリ１０１ａから、命令フェッチレジスタ１１１に命令（命令コード）が読み込まれると、その命令コードと、命令モードレジスタ１１５によって選択されている命令セットの情報とに基づいて定まる参照アドレスが、参照アドレスレジスタ１２３に入力される。参照データテーブル１２４は、参照アドレスをキーとしてテーブル検索を行ない、デコード結果データ及び実行制御データを抽出して、その抽出結果を処理制御データレジスタ１２５に入力する。プロセッサ処理部１３０（図１）は、処理制御データレジスタ１２５が保持する水平マイクロコードに基づいて、プロセッサ１００（１）に与えられた命令を実行する。
【００７３】
本実施形態例では、命令セット毎に回路資源としてのデコーダ及び実行制御部を配置するのに代えて、メモリ資源である参照テーブルメモリ１２４上に、命令フェッチレジスタ１１１に読み込まれた命令をデコード或いは実行するための情報を格納する。参照テーブルメモリ１２４上のデコード結果データ及び実行制御データは、プログラマブルに変更できるため、システムＬＳＩのハードウェア構成が決定した後であっても、アプリケーションプログラムの実行中に、デコード結果データ及び実行制御データをダイナミックに変更することもできる。例えば、システムＬＳＩ内部のハードウェア資源である参照テーブルメモリ１２４のメモリ容量が一定である場合であっても、参照テーブルメモリ１２４上のデコード結果データ及び実行制御データを外部から書き換えることで、命令セットに含まれる命令数を増やす、或いは、命令セット数を増やすことができる。
【００７４】
図１１は、本発明の第４実施形態例のプロセッサのプロセッサ制御部の構成を示している。本実施形態例では、図２のプロセッサ制御部１１０が、プロセッサ制御部１１０ｄに置き換わり、プロセッサ１００（１）は、命令セットと、命令セット毎のパイプラインの段数との双方を切り替え可能である。プロセッサ制御部１１０ｄは、命令フェッチレジスタ１１１、命令セット切替部１１２、システム命令デコーダ１１３、システム命令実行制御部１１４、命令モードレジスタ１１５、命令セットＡデコーダ１１６、Ａデコードレジスタ１２６、命令セットＡ段数切替部１２８、命令セットＡ実行制御部１１７、命令セットＢデコーダ１１８、Ｂ１デコードレジスタ１２７ａ、命令セットＢ１実行制御部１１９ａ、Ｂ２デコードレジスタ１２７ｂ、命令セットＢ段数切替部１２９ａ、１２９ｂ、及び、命令セットＢ２実行制御部１１９ｂを備える。
【００７５】
システム命令には、命令セット切替部１１２の選択を指定する命令、つまり使用する命令セットを指定する命令と、命令セットＡ段数切替部１２８、及び、第１及び第２の命令セットＢ段数切替部１２９ａ、１２９ｂの選択状態を指定する命令、つまり命令セット毎のパイプラインの段数を指定する命令とが含まれる。命令モードレジスタ１１５は、命令セット切替部１１２の選択を指定する情報と、命令セットＡ段数切替部１２８、及び、第１及び第２の命令セットＢ段数切替部１２９ａ、１２９ｂの選択を指定する情報とを保持する。
【００７６】
命令セットＡ段数切替部１２８は、命令セットＡデコーダ１１６でのデコード結果を、Ａデコードレジスタ１２６を介して、或いは、直接に、命令セットＡ実行制御部１１７に供給する。命令セットＡ段数切替部１２８が、Ａデコードレジスタ１２６を介して命令セットＡ実行制御部１１７にデコード結果を供給するときには、命令セットＡは、命令フェッチステージ、デコードステージ、実行ステージの３段でパイプライン動作し、直接に命令セットＡ実行制御部１１７にデコード結果を供給するときには、命令セットＡは、命令フェッチステージ、デコード＆実行ステージの２段でパイプライン動作する。
【００７７】
第１の命令セットＢ段数切替部１２９ａは、命令セットＢデコーダ１１８でのデコード結果を、Ｂ１デコードレジスタ１２７を介して、或いは、直接に、命令セットＢ１実行制御部１１９ａに供給する。命令セットＢ１実行制御部１１９ａでは、供給されるデコード結果に基づいた命令の実行と、２サイクル命令の後半の命令デコードとが行なわれる。第２の命令セット段数切替部１２９ｂは、命令セットＢ実行制御部１１９ａでの後半の命令デコード結果を、Ｂ２デコードレジスタ１２７ｂを介して、或いは、直接に、命令セットＢ２実行制御部１１９ｂに供給する。
【００７８】
第１の命令セットＢ段数切替部１２９ａがＢ１デコードレジスタ１２７ａを介して命令セットＢ１実行制御部１１９ａにデコード結果を供給し、第２の命令セットＢ段数切替部１２９ｂが、Ｂ２デコードレジスタ１２７ｂを介して命令セットＢ２実行制御部１１９ｂにデコード結果を供給するときには、パイプライン段数は最大の４段となり、第１及び第２の命令セットＢ段数切替部１２９ａ、１２９ｂが共に直接にデコード結果を命令セットＢ１実行制御部１１９ａ又は命令セットＢ２実行制御部１１９ｂに供給するときには、パイプライン段数は最小の２段となる。
【００７９】
本実施形態例では、使用命令セットの切り替えに加えて、命令セット毎のパイプライン段数を、システム命令に基づいてダイナミックに切り替えて使用することができる。このため、システムＬＳＩの処理に要求される処理能力に応じて、プロセッサ１００の処理速度を、アプリケーションプログラムによって任意に設定することができる。このように、パイプライン段数を変化させることによって、高速処理時にはパイプラインを使って処理を行ない、低速処理時（低消費電力時）にはパイプライン段数を減らして処理を行なうことができるため、処理の形態に対応して、適切にプロセッサ環境を設定することができる。
【００８０】
なお、上記実施形態例では、命令セットＡと命令セットＢとが、異なる処理性能指向の命令セットとして構成される例について説明したが、プロセッサに含まれる複数の命令セットには、同種の処理性能指向の命令セットが含まれていてもよい。また、プロセッサの動作モードを設定するシステム命令として、使用命令セットの設定、動作クロック周波数の設定、電源電圧の設定、及び、パイプライン段数の設定を例に挙げたが、システム命令は、これらの他に、スタンバイモードの設定、電源のオン・オフの設定、活用演算器ユニットプラグインの設定、活用レジスタプラグインの設定、割り込み条件の設定、及び、バッグモードの設定の何れかの命令を含んでいてもよい。
【００８１】
以上、本発明をその好適な実施形態例に基づいて説明したが、本発明のプロセッサ、システムＬＳＩ、システムＬＳＩの設計方法、及び、それを記録した記録媒体は、上記実施形態例にのみ限定されるものではなく、上記実施形態例の構成から種々の修正及び変更を施したプロセッサ、システムＬＳＩ、システムＬＳＩの設計方法、及び、それを記録した記録媒体も、本発明の範囲に含まれる。
【図面の簡単な説明】
【００８２】
【図１】本発明の第１実施形態例のシステムＬＳＩの構成例を示すブロック図。
【図２】図１のプロセッサ１００（１）の詳細構成例を示すブロック図。
【図３】図２のプロセッサ１００（１）の動作例を示すタイミングチャート。
【図４】図２のプロセッサを含むシステムＬＳＩの設計方法を実施するシステムを、その設計方法のフローチャート共に示す機能ブロック図。
【図５】４つのプロセッサを有するシステムＬＳＩの構成例を示すブロック図。
【図６】図５のシステムＬＳＩの各動作パターンの処理性能を示すベクトル図。
【図７】図５のシステムＬＳＩの処理内容を示す機能ブロック図。
【図８】図５のシステムＬＳＩの動作例を示すタイムチャート。
【図９】本発明の第２実施形態例のプロセッサのプロセッサ制御部の構成例を示すブロック図。
【図１０】本発明の第３実施形態例のプロセッサのプロセッサ制御部の構成例を示すブロック図。
【図１１】本発明の第４実施形態例のプロセッサのプロセッサ制御部の構成例を示すブロック図。
【図１２】従来のプロセッサの構成を示すブロック図。
【符号の説明】
【００８３】
１００：プロセッサ
１０１：メモリ
１０２：Ｉ／Ｏ
１０３：バス
１１０：プロセッサ制御部
１１１：命令フェッチレジスタ
１１２：命令セット切替部
１１３：システム命令デコーダ
１１４：システム命令実行制御部
１１５：命令モードレジスタ
１１６：命令セットＡデコーダ
１１７：命令セットＡ実行制御部
１１８：命令セットＢデコーダ
１１９：命令セットＢ実行制御部
１２０：命令実行切替部
１２４：参照テーブルメモリ
１３０：プロセッサ処理部
１４０：命令メモリ制御部
【図１】
2006146953.tif 000003
【図２】
2006146953.tif 000004
【図３】
2006146953.tif 000005
【図４】
2006146953.tif 000006
【図５】
2006146953.tif 000007
【図６】
2006146953.tif 000008
【図７】
2006146953.tif 000009
【図８】
2006146953.tif 000010
【図９】
2006146953.tif 000011
【図１０】
2006146953.tif 000012
【図１１】
2006146953.tif 000013
【図１２】
2006146953.tif 000014