(57)【要約】【課題】本発明は、多数の命令の実装と、コード効率向上を両立したプロセッサを提供しようとするものである。【解決手段】デコーダ１２ｂは、同一の命令コードで異なる命令を含む少なくとも第１、第２のデコードテーブル２０を有し、前記第１、第２のデコードテーブルの一方に含まれる命令コードに基づき、フェッチされた命令コードをデコードする。選択手段２１は、デコーダによりデコードされた命令コードが、第１、２のデコードテーブルを切り替える切り替え命令である場合、前記第１、第２のデコードテーブルの他方を選択する。【選択図】      図２
2009181312.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ複数の命令コードを含む複数の命令空間を有し、各命令空間は同一の命令コードで異なる命令を含み、
切り替え命令により複数の前記命令空間のうちの１つが選択されることを特徴とするプロセッサ。
【請求項２】
複数の前記命令空間はそれぞれ識別番号が割り当てられ、各タスクは、それぞれのタスクにおいて使用する命令空間の識別番号を有し、タスクの実行時、前記識別番号に対応する命令空間を設定することを特徴とする請求項１記載のプロセッサ。
【請求項３】
同一の命令コードで異なる命令を含む少なくとも第１、第２のデコードテーブルを有し、前記第１、第２のデコードテーブルの一方に含まれる命令コードに基づき、フェッチされた命令コードをデコードするデコーダと、
前記デコーダによりデコードされた命令コードが、前記第１、２のデコードテーブルを切り替える切り替え命令である場合、前記第１、第２のデコードテーブルの他方を選択する選択手段と
を具備することを特徴とするプロセッサ。
【請求項４】
前記第１、第２のデコードテーブルは、
複数の命令コードを含むコードテーブルと、
フェッチされた命令コードと前記コードテーブルの各命令コードとを比較する複数の比較器と、
複数の前記命令コードにそれぞれ対応する複数の制御信号を含む制御信号テーブルと、
前記比較器の一致出力信号に応じて前記制御信号テーブルの複数の制御信号から対応する制御信号を選択するセレクタとを具備し、
前記第１、第２のデコードテーブルの前記コードテーブル及び前記制御信号テーブルは、前記第１、第２のデコードテーブルに共通の命令コード及び共通の制御信号を含む固定基本命令領域と、前記第１、第２のデコードテーブル毎に異なる複数の命令コードと制御信号を含む固有命令領域とを具備することを特徴とする請求項３記載のプロセッサ。
【請求項５】
前記デコーダは、前記第１、第２のデコードテーブルに共有される第３のデコードテーブルを有し、
前記第１、第２、第３のデコードテーブルは、
複数の命令コードを含むコードテーブルと、
フェッチされた命令コードと前記コードテーブルの各命令コードとを比較する複数の比較器と、
複数の前記命令コードにそれぞれ対応する複数の制御信号を含む制御信号テーブルと、
前記第１、第２のデコードテーブルに設けられ、前記比較器の一致出力信号に応じて前記制御信号テーブルの複数の制御信号から対応する制御信号を選択するセレクタとを具備し、
前記第３のデコードテーブルの前記コードテーブル及び前記制御信号テーブルは、前記第１、第２のデコードテーブルに共通の命令コード及び共通の制御信号を含む固定基本命令領域であり、前記第１、第２のデコードテーブルの前記コードテーブル及び前記制御信号テーブルは、前記第１、第２のデコードテーブル毎に異なる複数の命令コードと制御信号を含む固有命令領域であることを特徴とする請求項３記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、RISC(Reduced Instruction Set Computer)プロセッサに関する。
【背景技術】
【０００２】
近年、システムＬＳＩ(Large Scale Integration)は１つのチップ上に１個もしくは複数個のマイクロプロセッサを含み、そのマイクロプロセッサには、これまでのプロセッサにあったメモリとの入出力装置や周辺デバイスのドライブ用Ｉ／Ｏ(Input/Output)のほか、複数の演算リソース（例えば、デジタル信号プロセッサ、積和演算機、ＶＬＩＷ(Very Long Instruction Word)型コプロセッサ、データ処理エンジン等）や、プロセッサ間の同期メカニズム（セマフォ、割り込み要求回路など）などが集積されるようになってきている。マイクロプロセッサ上で動作するプログラムの量は、マイクロプロセッサの機能の増加に伴い増大する一方である。その一方でコストの抑制に対する要求は強く、高価なメモリの使用量の削減が急務になっている。このプログラム量の増大と、使用メモリ量の抑制を両立するために各社のマイクロプロセッサはコード効率を向上させたマイクロプロセッサを発表している。その手法の一つは１命令の命令長を短縮することである。
【０００３】
１つのプロセッサに多数の演算リソースや、同期メカニズム、メモリ入出力、制御用Ｉ／Ｏ等が存在する場合、それぞれの管理や操作はタスクや割り込みハンドラといった専用の小さなプログラムが担当し、それらの実行をリアルタイムＯＳ(Operating System)が管理するという手法がとられる場合が多い。
【０００４】
複数のタスクや割り込みハンドラがリアルタイムＯＳの管理の下で実行する場合、タスクを記述している命令は、タスクによって使用命令に片寄りが存在する。例えば同期メカニズムを担当しているタスクや割り込みハンドラは、アトミックな命令やビット操作命令などを使用することが多い。また、メモリ管理タスクは、ロード・ストア命令、Ｉ／Ｏ制御タスクは、Ｉ／Ｏ操作やビット操作、積和演算タスクは、積和演算命令等の使用頻度が高い。複数のタスクは全て一つのマイクロプロセッサで実行されるため、従来のプロセッサは、全てのタスクで使用される命令が、常に使用できる状態になっている。前述したように、コスト削減の要求の強く、コード効率の良いマイクロプロセッサは、命令長の短縮等を行っている。しかし、タスクや割り込みハンドラ等プロセッサで使用される全ての命令を、短い命令長の命令空間（命令コード領域）に収めなくてはならず、現実的に不可能である。このため、命令の実装を諦めたり、一部の命令を、より広い命令空間をつくることのできる長い命令長命令として実装したりしてきた。その結果、コード効率が低下していた。
【０００５】
尚、関連する技術として、コードサイズが小さく高速な処理が実現でき、消費電力を削減することができ、更にプロセッサの命令実行時間への影響が少ない高速で高性能なコンテキスト切り替え機能を実現できるプロセッサが開発されている（例えば特許文献１を参照）。
【特許文献１】特開２００５−２７５７０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、多数の命令の実装と、コード効率向上を両立したプロセッサを提供しようとするものである。
【課題を解決するための手段】
【０００７】
本発明のプロセッサの第１の態様は、それぞれ複数の命令コードを含む複数の命令空間を有し、各命令空間は同一の命令コードで異なる命令を含み、切り替え命令により複数の前記命令空間のうちの１つが選択されることを特徴とする。
【０００８】
本発明のプロセッサの第２の態様は、同一の命令コードで異なる命令を含む少なくとも第１、第２のデコードテーブルを有し、前記第１、第２のデコードテーブルの一方に含まれる命令コードに基づき、フェッチされた命令コードをデコードするデコーダと、前記デコーダによりデコードされた命令コードが、前記第１、２のデコードテーブルを切り替える切り替え命令である場合、前記第１、第２のデコードテーブルの他方を選択する選択手段とを具備することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、多数の命令の実装と、コード効率向上を両立したプロセッサを提供できる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の詳細を図示の実施形態によって説明する。各図面において、同一の部分には、同一符号を付している。
【００１１】
図１は、本実施形態に係るプロセッサの構成を示している。このプロセッサはパイプライン構造とされている。
【００１２】
このプロセッサは、例えば命令フェッチステージ１０、命令デコードステージ１２、及び命令実行ステージ１４を有している。命令フェッチステージ１０、命令デコードステージ１２、及び命令実行ステージ１４は、それぞれ命令フェッチユニット１０ａ、命令デコードユニット１２ａ、及び命令実行ユニット１４ａを有している。命令フェッチユニット１０ａは、パイプラインレジスタ１１を介して命令デコードユニット１２ａに接続されている。命令デコードユニット１２ａは、パイプラインレジスタ１３を介して命令実行ユニット１４ａに接続されている。命令実行ユニット１４ａは、パイプラインレジスタ１５を介して命令デコードステージ１２の汎用レジスタ１２ｃ接続されている。
【００１３】
命令フェッチユニット１０ａは、プログラムカウンタ１０ｂと命令メモリ１０ｃを有している。命令メモリ１０ｃは、プログラムカウンタ１０ｂの出力信号に応じて命令コードｉ１をフェッチする。この命令コードｉ１はパイプラインレジスタ１１を介して命令デコードユニット１２ａと汎用レジスタ１２ｃに供給される。
【００１４】
命令デコードユニット１２ａは、命令デコーダ１２ｂを有している。命令デコーダ１２ｂの詳細については後述する。命令デコーダ１２ｂは命令メモリ１０ｃから供給された命令コードｉ１をデコードし、命令コードに対する制御信号を出力する。この制御信号は、パイプラインレジスタ１３を介して命令実行ユニット１４ａに供給される。また、汎用レジスタ１２ｃは図示せぬ例えば１６個のレジスタにより構成されている。この汎用レジスタ１２ｃのデータは、パイプラインレジスタ１３を介して命令実行ユニット１４ａに供給される。
【００１５】
命令実行ユニット１４ａには例えば演算器１４ｂ、データメモリ１４ｃ，制御レジスタ１４ｄ、セレクタ１４ｆが設けられている。演算器１４ｄは、例えば図示せぬＡＬＵ(Arithmetic And Logic Unit)で構成されている。演算器１４ｄは命令デコーダ１２ｂ及び汎用レジスタ１２ｃから供給されたデータに基づき演算を実行し、演算結果をセレクタ１４ｆに出力する。
【００１６】
データメモリ１４ｃは例えば演算器１４の演算結果を記憶する。すなわち、命令デコーダ１２ｂからの制御信号に基づき、データのストア及びロードを実行する。データメモリ１４ｃから読み出されたデータはセレクタ１４ｆに出力される。
【００１７】
制御レジスタ１４ｄは汎用レジスタ１２ｃから供給されたデータを保持する。制御レジスタ１４ｂにはＣＰＵを制御する複数の制御レジスタが存在し、そのうちの一つとして命令空間レジスタ１４ｅが設けられている。この命令空間レジスタ１４ｅは、命令デコーダ１２ｂから供給された制御信号に基づき、後述する命令デコーダ１２ｂに設けられた命令空間としてのデコードテーブルの番号を記憶する。命令空間レジスタ１４ｅに保持された命令空間制御信号は命令デコーダ１２ｂに供給される。また、制御レジスタ１４ｄに記憶されたプロセッサの動作に必要なデータは、セレクタ１４ｆに供給されるとともに、プロセッサの各部に供給される。セレクタ１４ｆは、命令デコーダ１２ｂから供給される制御信号に従って、入力データを選択する。セレクタ１４ｆの出力データは、パイプラインレジスタ１５を介して汎用レジスタ１２ｃに供給される。
【００１８】
図２は、上記命令デコーダ１２ｂの一例を示している。
【００１９】
命令デコーダ１２ｂは、例えば複数のデコードテーブル（命令空間）２０とセレクタ２１を有している。各デコードテーブル２０は、複数の命令コードの集合である。デコードテーブル２０は、コードテーブル２０ａと、複数の比較器２０ｂと、制御信号テーブル２０ｃ、及びセレクタ２０ｄを有している。コードテーブル２０ａには複数の命令コードｉ２が記憶され、制御信号テーブル２０ｃには、コードテーブル２０ａに記憶された命令コードｉ２に対応する命令により使用される制御信号が設定されている。すなわち、例えばＡＬＵやレジスタ等を制御するための制御信号や、データの入出力処理等を制御する制御信号が設定されている。
【００２０】
各比較器２０ｂの一方入力端には、パイプラインレジスタ１１から命令コードｉ１が供給され、他方入力端には、コードテーブル２０ａの各命令コードｉ２がそれぞれ供給されている。各比較器２０ｂは、供給された命令コードｉ１とコードテーブル２０ａに記憶された各命令コードｉ２とをそれぞれ比較し、これらが一致した比較器２０ｂから一致信号が出力される。この比較器２０ｂの一致出力信号はセレクタ２０ｄの入力端に供給される。
【００２１】
一方、制御信号テーブル２０ｃに記憶された各制御信号は、セレクタ２０ｂの入力端に供給されている。セレクタ２０ｄは、複数の比較器２０ｂの１つから出力された一致出力信号に応じて、制御信号テーブル２０ｃから供給される複数の制御信号から対応する１つの制御信号を選択し、出力する。すなわち、セレクタ２０ｄは、比較器２０ｂから一致信号が出力された場合、この比較器２０ｂに対応する命令コードに合った制御信号を選択し、セレクタ２１に供給する。
【００２２】
セレクタ２１は命令空間としてのデコードテーブル２０を選択するセレクタである。各デコードテーブル２０のセレクタ２０ｄから出力される制御信号は、セレクタ２１の入力端にそれぞれ供給される。さらに、このセレクタ２１には、図１に示す命令空間レジスタ１４ｅより供給される命令空間制御信号が供給される。セレクタ２１は、命令空間制御信号に応じて、１つのデコードテーブル２０から供給される制御信号を選択し、パイプラインレジスタ１３へ供給する。
【００２３】
また、各デコードテーブル２０のコードテーブル２０ａと制御信号テーブル２０ｃは、斜線で示す固定基本命令領域２０ａ−１と、固有命令領域２０ａ−２とを有している。固定基本命令領域２０ａ−１は、各デコードテーブル２０において、共通の複数の命令コードｉ２と制御信号が記憶されている。このため、命令デコーダ１２ｂに固定基本命令領域２０ａ−１の命令コードが入力された場合、どのデコードテーブル２０からも同一の制御信号が出力されるように設定されている。
【００２４】
また、固有命令領域２０ａ−２は、各デコードテーブル２０で同一の複数の命令コードと各デコードテーブル毎に異なる制御信号が記憶されている。このため、各デコードテーブル２０に同一の命令コードが供給された場合においても、異なる制御信号が出力される。すなわち、固有命令領域２０ａ−２には、同一の命令コードを有する異なる命令が設定されている。
【００２５】
図３は、命令デコーダ１２ｂの概念を示す図である。
【００２６】
上述したように、命令デコーダ１２ｂの各デコードテーブル２０は、固定基本命令領域２０ａ−１と切り替え可能な固有命令領域２０ａ−２を有している。固有命令領域２０ａ−２に含まれる命令コード及び制御信号は、基本命令空間、ビット操作命令空間、浮動小数演算命令空間、積和演算命令空間、ロード・ストア命令空間、ＶＬＩＷコプロセッサ使用命令空間、Ｉ／Ｏ操作命令空間等を含んでいる。各命令空間には、命令空間固有の複数の命令コード及び制御信号が割り当てられている。これら命令空間及び命令空間の命令コードは、マイクロプロセッサに予め設定されている。
【００２７】
また、これら命令空間は、命令空間制御信号、すなわち、各命令空間を識別するための命令空間番号＃０〜＃６がそれぞれ割り当てられ、この命令空間番号を用いて命令空間が切り替えられる。この実施形態の場合、例えばデフォルトで基本命令空間が選択されているが、命令空間番号がセレクタ２１に供給されると、セレクタ２１は命令空間番号により指定されたデコードテーブルの制御信号を選択して出力する。
【００２８】
図４は、図１に示す制御レジスタ１４ｄの一例を示している。
【００２９】
制御レジスタ１４ｄは、タスクにより使用される例えばＰＳＷ(Program Status Word)、ＰＣ(Program Counter)、ＥＰＣ(Exception Program Counter)等の内容を記憶するレジスタ、及び命令空間レジスタ１４ｅを含んでいる。命令空間レジスタ１４ｅには、タスクが使用するデコードテーブルを指定するための命令空間番号が記憶されている。この命令空間レジスタ１４ｅの内容は、後述する命令空間の切り替え命令を用いて変更される。
【００３０】
次に、図５を参照して、図１、図２に示すプロセッサの動作について説明する。
【００３１】
ここでは、例えば次に示すプログラムを実行する場合について説明する。
【００３２】
命令コード  ニモニック        動作
4241        sw    ($2+),$4    アドレスインクリメント付きストア（＊１）
7803        stc   $INUM,3     命令空間を切り替え
0000        nop               命令空間が切り替わるのを待つ
4241        madd  $1,$2,$4    演算命令（積和演算）（＊２）
上記プログラムにおいて、
命令コード“４２４１”は、例えばアドレスインクリメント付きストアである。
【００３３】
命令コード“７８０３”は、例えば制御レジスタ設定命令であり、命令空間、すなわち、デコードテーブル２０を切り替える命令であり、以下、切り替え命令と呼ぶ。この命令コードが実行されることにより、制御レジスタ１４ｄの命令空間レジスタ１４ｅの内容が変更され、選択されるデコードテーブルが切り替えられる。この例の場合、切り替え命令を実行することにより、積和演算の命令コードを含むデコードテーブルの制御信号が選択されるように切り替えられる。
【００３４】
命令コード“００００”は、例えばノンオペレーションであり、命令空間としてのデコードテーブルが切り替わる期間、待機することを示している。
【００３５】
命令コード“４２４１”は、例えば積和演算を実効する命令を示している。
【００３６】
尚、上記プログラムを実行する際、セレクタ２１により、予めアドレスインクリメント付きストア命令の命令コードを含むデコードテーブルの出力信号が選択されているものとする。
【００３７】
この状態において、先ず、命令フェッチステージ１０において、プログラムカウンタ１０ｂの出力信号に応じて、命令メモリ１０ｃから命令コードｉ１として“４２４１”がフェッチされる。このフェッチされた命令コードｉ１は、パイプラインレジスタ１１を介して命令デコードステージ１２へ供給される（Ｓ５０１）。
【００３８】
命令デコードステージ１２において、命令デコーダ１２ｂ内の図２に示す各デコードテーブル２０は、命令メモリ１０ｃから供給された命令コードｉ１とコードテーブル２０ａに記憶された命令コードｉ２を複数の比較器２０ｂにて比較する。この結果、入力条件を満足する比較器２０ｂから一致信号が出力され、セレクタ２０ｄに供給される。セレクタ２０ｄは、一致信号に応じて制御信号テーブル２０ｃから対応する制御信号を選択し、セレクタ２１に供給する。この場合、アドレスインクリメント付きストアの実行に必要な制御信号が制御信号テーブル２０ｃから読み出され、セレクタ２１に供給される。セレクタ２１は、各デコードテーブル２０からの制御信号のうち、命令空間レジスタ１４ｅから供給される命令空間制御信号、すなわち、命令空間番号により複数のデコードテーブル２０から１つの制御信号を選択される。この場合、命令空間番号は、アドレスインクリメント付きストア命令の命令コードを含むデコードテーブルを示しており、この選択されたデコードテーブル２０から選択された制御信号がパイプラインレジスタ１３を介して命令実行ステージ１４に供給される（Ｓ５０２）。
【００３９】
命令実行ステージ１４において、命令デコーダ１２ｂから供給された制御信号は、切り替え命令ではなく、アドレスインクリメント付きストアの実行に必要な制御信号である。このため、演算器１４ｂ、データメモリ１４ｃは、命令デコーダ１２ｂから供給された制御信号に応じて、アドレスインクリメント付きストア命令を実行する（Ｓ５０３）。
【００４０】
次に、プログラムカウンタ１０ｂがインクリメントされると、命令メモリ１０ｃから命令コード“７８０３”がフェッチされ、パイプラインレジスタ１１を介して命令デコーダ１２ｂに供給される（Ｓ５０１）。
【００４１】
命令デコーダ１２ｂにおいて、供給された命令コードと各デコードテーブル２０のコードテーブル２０ａの内容が比較される。この比較結果に応じて、セレクタ２０ｄにより、切り替え命令に対応する制御信号が制御信号テーブル２０ｃから選択される（Ｓ５０２）。
【００４２】
この選択された制御信号は、セレクタ２１、パイプラインレジスタ１３を介して命令実行ユニット１４ａに供給される。命令実行ユニット１４ａにおいて、制御レジスタ１４ｄの命令空間レジスタ１４ｅの内容が供給された制御信号に含まれるデータに従って切り替えられる（Ｓ５０３）。
【００４３】
この例の場合、命令空間レジスタ１４ｅに積和演算の命令コードを含むデコードテーブルを選択するための命令空間番号（図３に示す＃３）が設定される。
【００４４】
次に、プログラムカウンタ１０ｂがインクリメントされると、命令メモリ１０ｃから命令コード“００００”がフェッチされ、パイプラインレジスタ１１を介して命令デコーダ１２ｂに供給される（Ｓ５０１）。
【００４５】
命令デコーダ１２ｂにおいて、供給された命令コードと各デコードテーブル２０のコードテーブル２０ａの内容が比較される。この比較結果に応じて、セレクタ２０ｄにより、ノンオペレーション命令に対応する制御信号が制御信号テーブル２０ｃから選択される（Ｓ５０２）。
【００４６】
この選択された制御信号は、セレクタ２１、パイプラインレジスタ１３を介して命令実行ユニット１４ａに供給される。命令実行ユニット１４ａにおいて、ノンオペレーション命令が実行される（Ｓ５０３）。
【００４７】
次に、プログラムカウンタ１０ｂがインクリメントされると、命令メモリ１０ｃから命令コード“４２４１”がフェッチされ、パイプラインレジスタ１１を介して命令デコーダ１２ｂに供給される（Ｓ５０１）。
【００４８】
命令デコーダ１２ｂにおいて、供給された命令コードと各デコードテーブル２０のコードテーブル２０ａの内容が比較される。この比較結果に応じて、セレクタ２０ｄにより、命令コード“４２４１”に対応する制御信号が制御信号テーブル２０ｃから選択されるこの各デコードテーブルにおいて選択された制御信号は、セレクタ２１に供給される。このセレクタ２１には、命令空間レジスタ１４ｅより積和演算の命令コードを含むデコードテーブルを選択するための命令空間番号（図３に示す＃３）が供給されている。このため、セレクタ２１により、積和演算を処理するための制御信号が選択される。この制御信号は、パイプラインレジスタ１３を介して命令実行ユニット１４ａに供給される（Ｓ５０２）。
【００４９】
命令実行ユニット１４ａは、供給された制御信号に従って、演算器１４ｂやデータメモリ１４ｃを制御して積和演算が実行する（Ｓ５０３）。
【００５０】
図６は、上記実施形態を１つのタスク（プログラム）において、自ら複数の命令空間を切り替える場合における動作の一例を概略的に示している。すなわち、図６は、例えばユーザのアプリケーションプログラムにおいて、演算のワークエリアへの初期データのセット、演算、及びワークエリアから演算結果を出力するまでの動作を示している。
【００５１】
先ず、この場合、切り替え命令にてメモリアクセス用の命令空間としてのロード・ストア命令空間が設定される（Ｓ６０１）。すなわち、命令空間レジスタ１４ｅに図４に示すロード・ストア命令空間の命令空間番号が“４”が設定される。
【００５２】
この後、命令空間が切り替わるのを待つ（Ｓ６０２）。
【００５３】
命令空間が切り替わった後、ロード・ストア命令空間に含まれる命令セットを使用して、演算のワークエリアに初期データがセットされる（Ｓ６０３）。
【００５４】
次に、切り替え命令により、演算処理用命令空間が設定される（Ｓ６０４）。すなわち、図４に示すように、例えば積和演算命令空間の命令空間番号“３”が命令空間レジスタ１４ｅに設定される（Ｓ６０４）。
【００５５】
この後、命令空間が切り替わるのを待つ（Ｓ６０５）。
【００５６】
命令空間が切り替わった後、積和演算命令空間に含まれる命令セットを用いて演算処理が実行される（Ｓ６０６）。
【００５７】
演算処理終了後、切り替え命令にて再度メモリアクセス用命令空間としてのロード・ストア命令空間が設定される（Ｓ６０７）。
【００５８】
この後、命令空間が切り替わるのを待つ（Ｓ６０８）。
【００５９】
命令空間が切り替わった後、ロード・ストア命令空間に含まれる命令セットを用いて、演算のワークエリアから演算結果が読み出される（Ｓ６０９）。
【００６０】
上記実施形態によれば、命令空間の一部をプログラムにより変更することができ、同一の命令コードに異なる命令を設定することができる。このため、命令長を長くすることなく、多数の命令を実装することが可能であり、コード効率を向上することができる。
【００６１】
具体的には、命令デコーダ１２ｂに複数のデコードテーブル２０を設け、これらデコードテーブル２０に同一の命令コードで、処理内容が異なる命令を設定し、さらに、切り替え命令により、命令空間としてのデコードテーブル２０を切り替え可能としている。このため、同一の命令コードに異なる処理内容の命令を設定することができる。したがって、コード効率向上のために短縮された命令長により作られる狭い命令空間に多くの命令をマッピングすることができる。
【００６２】
また、命令空間を命令の特徴ごとに分類することにより、特定のタスクで使用する命令のみを、狭い命令空間にマップすることができる。すなわち、プログラムの処理には偏りがあり、例えば演算処理と入出力処理では使用する命令が相違する。このため、命令を特徴毎に分類することにより、命令空間の切り替え動作を最小限に抑えることができ、狭い命令空間を更に効率的に使用することができる。
【００６３】
図６は、ユーザのアプリケーションプログラムにより命令空間を切り替える場合について説明した。これに対して、図７は、ＯＳによるタスクの切り替え時に自動的に命令空間を切り替える場合の動作を示している。
【００６４】
図７において、タスクＡは、例えば積和演算処理命令空間のような演算処理用命令空間を使用して演算処理を実行し、タスクＢは、例えばロード・ストア命令空間のようなメモリアクセス用命令空間を使用して、演算処理が使用するワークエリアの入出力を実行するものとする。
【００６５】
先ず、タスクＢは、ロード・ストア命令空間のようなメモリアクセス用命令空間に含まれる命令セットを用いて、演算処理が使用するワークエリアにデータをセットする（Ｓ７０１）。
【００６６】
タスクＢは、データセットの終了時にタスクＡを起動する。すなわち、例えばタスクＢにおいて、タスクＡの実行開始のシステムコールが発行される（Ｓ７０２）。
【００６７】
すると、タスクＢの実行が停止され、ＯＳに実行が移る。ＯＳはタスクＡの動作を開始するため、タスクスケジューリングを行う（Ｓ７０３）。
【００６８】
すなわち、ＯＳは、プロセッサに設けられている前述した汎用レジスタ１２ｃ、制御レジスタ１４ｄに設定されているタスクＢのコンテキストと命令空間レジスタ１４ｅの内容を、例えばプロセッサ外のメモリに記憶されたタスクコントロールブロック内に保存する（Ｓ７０４）。
【００６９】
次いで、ＯＳはメモリ上のタスクコントロールブロック内に保持されているタスクＡ用のコンテキストと命令空間レジスタ１４ｅの内容をプロセッサ内の汎用レジスタ１２ｃ、制御レジスタ１４ｄ、命令空間レジスタ１４ｅに転送する。命令空間レジスタ１４ｅに設定された命令空間番号は、命令空間制御信号として命令デコーダ１２ｂに供給される。このため、命令デコーダ１２ｂは供給された命令空間番号に応じて、タスクＡが動作するために必要な演算用命令を含むデコードテーブルを選択する（Ｓ７０５）。
【００７０】
このようにして、タスクＡに実行が移り、選択されたデコードテーブルに含まれる命令セットを使用して演算処理が実行される（Ｓ７０６）。
【００７１】
タスクＡによる演算が終了すると、タスクＡは、タスクＢを起動する（Ｓ７０７）。
【００７２】
すると、上記と同様にして、タスクＡの実行が停止され、ＯＳに実行が移る。ＯＳはタスクＢの動作を開始するようなタスクスケジューリングを行う（Ｓ７０８）。
【００７３】
すなわち、ＯＳはタスクＡのコンテキストと命令空間レジスタ１４ｅの内容をメモリ上のタスクコントロールブロックに保存する（Ｓ７０９）。
【００７４】
さらに、ＯＳはメモリ上のタスクコントロールブロックに保存されているタスクＢ用のコンテキスト及び命令空間レジスタ１４ｅの内容をプロセッサ内の汎用レジスタ１２ｃ、制御レジスタ１４ｄ、命令空間レジスタ１４ｅに復帰する（Ｓ７１０）。命令空間レジスタ１４ｅは、復帰された命令空間番号を命令空間制御信号として命令デコーダ１２ｂに供給する。命令デコーダ１２ｂは供給された命令空間番号に応じて、ロード・ストア命令空間のようなメモリアクセス用命令空間としてのデコードテーブルを選択する。
【００７５】
この後、タスクＢに実行が移り、ロード・ストア命令空間に含まれた命令セットを使用してメモリがアクセスされる（Ｓ７１１）。
【００７６】
図８は、図７に示すタスクが切り替えられる際のコンテキストのロールイン・ロールアウトを概念的に示した図である。プロセッサ８０は、システムバス８１を介してメモリ８２に接続されている。プロセッサ８０には、前述した汎用レジスタ１２ｃ、制御レジスタ１４ｄ、命令空間レジスタ１４ｅが設けられている。また、メモリにはタスクコントロールブロック８２ａが設けられている。タスクコントロールブロック８２ａは複数のコンテキスト８２ｂから構成されており、コンテキスト８２ｂには例えば汎用レジスタ、制御レジスタ、命令空間レジスタが設定されている。命令空間を決定する命令空間レジスタは制御レジスタの１つであり、コンテキストの一部としてＯＳがタスクコントロールブロックに保存と復帰を行う。
【００７７】
図７に示す実施形態によれば、タスクを切り替える際、ＯＳによりタスクのコンテキスト及び命令空間レジスタ１４ｅの内容を切り替えることができる。このため、タスクが復帰された場合、復帰されたタスクの動作に必要なデコードテーブルを設定することができる。従って、タスクが使用する命令空間の管理をアプリケーションプログラムから分離することができ、プログラムを容易化することができる。
【００７８】
（変形例）
図９は、命令デコーダ１２ｂの変形例を示している。図２に示す命令デコーダ１２ｂは、各デコードテーブルにそれぞれ固定基本命令領域２０ａ−１を設けた。これに対して、図９に示す本変形例は、固定基本命令領域２０ａ−１を各デコードテーブルから独立させ、各デコードテーブルにより共有させている。図９において、図２と同一部分には同一符号を付し、異なる部分についてのみ説明する。
【００７９】
図９において、固定基本命令領域２０ａ−１を含む１つのデコードテーブル９０は、固有命令領域２０ａ−２を含む複数のデコードテーブル９１に共有される。
【００８０】
デコードテーブル９０は、コードテーブル９０ａと、複数の比較器９０ｂ及び制御信号テーブル９０ｃを有している。固定基本命令領域２０ａ−１を構成するコードテーブル９０ａ、複数の比較器９０ｂ及び制御信号テーブル９０ｃの構成は、図２に示す固定基本命令領域２０ａ−１の１つと同様である。
【００８１】
また、切り替え可能な各デコードテーブル９１の構成は、図２に示す固有命令領域２０ｂ−２の構成と同様である。但し、各デコードテーブル９１のセレクタ２０ｄは、各デコードテーブル９１の複数の比較器９１ｂの出力信号とデコードテーブル９０の比較器９０ｂの出力信号に応じて、各デコードテーブル９１の制御信号テーブル９１ｃの出力信号とデコードテーブル９０ｃの出力信号を選択する。
【００８２】
上記変形例によれば、固定基本命令領域２０ａ−１を含む１つのデコードテーブル９０を、固有命令領域２０ａ−２を含む複数のデコードテーブル９１で共有している。このため、図２に示す命令デコーダ１２ｂのように、固定基本命令領域２０ａ−１を複数のデコードテーブル９１に設ける必要がない。したがって、複数のデコードテーブル９１から固定基本命令領域２０ａ−１を削減することが可能であり、デコードテーブルの占有面積を縮小することができる。
【００８３】
また、図２に示す実装に比べて、固定基本命令領域２０ａ−１を削減することが可能であるため、この削減した領域を用いて切り替え可能なデコードテーブル９１をより多く実装することが可能である。したがって、図２に示す実装と同一の占有面積でより多くの命令コードを実装ことが可能である。
【００８４】
尚、図２、図９に示す命令デコーダ１２ｂにおいてセレクタ２１は、複数のデコードテーブル２０又は、複数のデコードテーブル９１の出力信号を選択した。しかし、これに限定されるものではなく、例えば複数のデコードテーブル２０の入力信号又はデコードテーブル９０の入力信号を選択するように構成することも可能である。この場合、各複数のデコードテーブル２０、９１のセレクタ２０ｄが不要となる。
【００８５】
また、図１に示すプロセッサの各ステージの構成は、これに限定されるものではなく、変形可能である。
【００８６】
その他、本発明の要旨を変えない範囲で種々変形実施可能なことは勿論である。
【図面の簡単な説明】
【００８７】
【図１】本実施形態に係るプロセッサを示す構成図。
【図２】図１に示す命令デコーダの一例を示す構成図。
【図３】図２に示す命令デコーダの概念を示す図。
【図４】図１に示す制御レジスタの概要を示す図。
【図５】本実施形態に係るプロセッサの動作を概略的に示すフローチャート。
【図６】本実施形態に係るプロセッサのアプリケーションプログラムによる動作の一例を示すフローチャート。
【図７】本実施形態に係るプロセッサのＯＳを用いた動作の一例を示すフローチャート。
【図８】図７に示す動作におけるタスクのコンテキストのロールイン・ロールアウトを概略的に示す図。
【図９】図１に示す命令デコーダの変形例を示す構成図。
【符号の説明】
【００８８】
１２ｂ…命令デコーダ、２０，９０，９１…デコードテーブル、１４ｅ…命令空間レジスタ、２０ａ、９０ａ…コードテーブル、２０ｂ、９０ｂ…比較器、２０ｃ、９０ｃ…制御信号テーブル、２０ｄ、２１…セレクタ、ｉ１、ｉ２…命令コード。
【図１】
2009181312.tif 000003
【図２】
2009181312.tif 000004
【図３】
2009181312.tif 000005
【図４】
2009181312.tif 000006
【図５】
2009181312.tif 000007
【図６】
2009181312.tif 000008
【図７】
2009181312.tif 000009
【図８】
2009181312.tif 000010
【図９】
2009181312.tif 000011