(57)【要約】【課題】他のプログラムを使うことなく命令変更をすることができ、プログラムサイズを変更することなく簡単に即値やオペコードを変更させることができ、命令解釈の論理と命令セットの解釈を容易に変更できて、他のマイクロプロセッサをエミュレーションすることができるようにする。【解決手段】ＡＬＵの生成するコンディションコードが変更命令の実行を示していればＡＬＵの演算結果と命令メモリの書き込み制御信号を命令変更バスに出力して命令メモリを変更して、同時にインターロック信号を生成する命令メモリ変更部を備える。また、命令メモリに記憶された命令を解釈するＬＵＴやマイクロメモリに対して、変更命令の実行時には、ＬＵＴやマイクロメモリの内容を変更する命令メモリ変更部とＬＵＴ変更部、マイクロメモリ変更部を備える。【選択図】図１
2006023848.tif 000002
【特許請求の範囲】
【請求項１】
演算処理するＡＬＵ（Arithmetic Logical Unit）と、そのＡＬＵの処理に用いるプログラムとデータを一時格納するレジスタと、演算命令を格納する命令メモリと、演算結果を格納するデータメモリと、前記演算命令を受けてフェッチする命令フェッチ部とを備え、前記ＡＬＵが所定のプログラムに従って演算するとともに、前記プログラムの実行中に前記プログラムを変更することができる命令変更装置において、
前記命令フェッチ部の指令をデコードして前記レジスタと前記ＡＬＵを制御するデコーダと、
前記ＡＬＵが生成するコンディションコードが変更命令の実行を示す時は、前記ＡＬＵの演算結果と前記命令メモリの書き込み制御信号によって前記命令メモリに格納された前記演算命令を変更するとともに、インターロック信号を出力して前記命令フェッチ部の動作を一時停止させる命令メモリ変更部と、
を備えたことを特徴とする命令変更装置。
【請求項２】
演算処理するＡＬＵと、そのＡＬＵの処理に用いるプログラムとデータを一時格納するレジスタと、演算命令を格納する命令メモリと、演算結果を格納するデータメモリと、前記演算命令を受けてフェッチする命令フェッチ部とを備え、前記ＡＬＵが所定のプログラムに従って演算するとともに、前記プログラムの実行中に前記プログラムを変更することができる命令変更装置において、
前記命令フェッチ部の指令をデコードして前記レジスタと前記ＡＬＵを制御するＬＵＴ（Look Up Table）と、
前記ＡＬＵが生成するコンディションコードが変更命令の実行を示す時は、前記ＡＬＵの演算結果に応じた指令によって前記ＬＵＴの内容を変更するとともに、インターロック信号を生成し出力して前記命令フェッチ部の動作を一時停止させるＬＵＴ変更部と、
を備えることを特徴とする命令変更装置。
【請求項３】
前記ＬＵＴがバンク構成であることを特徴とする請求項２に記載の命令変更装置。
【請求項４】
演算処理するＡＬＵと、そのＡＬＵの処理に用いるプログラムとデータを一時格納するレジスタと、演算命令を格納する命令メモリと、演算結果を格納するデータメモリと、前記演算命令を受けてフェッチする命令フェッチ部とを備え、前記ＡＬＵが所定のプログラムに従って演算するとともに、前記プログラムの実行中に前記プログラムを変更することができる命令変更装置において、
前記命令フェッチ部の出力を受けて実行するマイクロコードのアドレスを生成し保持するマイクロ制御レジスタと、
その出力を受けてマイクロコードを出力するマイクロメモリと、
前記ＡＬＵが生成するコンディションコードが変更命令の実行を示す時は、前記ＡＬＵの演算結果に応じた指令を前記マイクロメモリに出力して前記マイクロメモリに格納されたマイクロコードのデータを書き換えるとともに、インターロック信号を出力して前記命令フェッチ部の動作を一時停止させるマイクロメモリ変更部と、
を備えたことを特徴とする命令変更装置。
【請求項５】
前記マイクロメモリがバンク構成であることを特徴とする請求項４に記載の命令変更装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ技術に関するものであり、特に、実行中のプログラムを変更することができる命令変更装置に関する。  
【背景技術】
【０００２】
コンピュータのユーザが使用するソフトウェア、すなわちアプリケーションプログラムは、柔軟性や制御性などに優れてユーザが使いやすいものが望まれている。とくに、プログラムが稼動している最中にプログラムの機能を変更したくなったとき、そのプログラムの実行を中止することなく変更することができれば、無駄時間を生じることなく非常に効率よくアプリケーションを利用することができる。
そのような課題に対して開発されたコンピュータ技術の一つが特許文献１に開示されている。図７〜９は特許文献１に開示された発明を説明する図である。図７の命令変更制御装置１００は、実行装置１２０とメモリ１４を有しており、メモリ１４には制御プログラム１６が常駐して実行装置１２０と通信することができる。メモリ１４には目的プログラム１８と修正プログラム２０も常駐しておりいずれも制御プログラム１６と通信することができる。修正プログラム２０は目的プログラム１８の実行中に目的プログラム１８を変更して代替コード群を生成し、元のプログラムに組み込むことができる。
図８、９はプログラムが修正される状況を説明する図であり、図８は目的プログラムのコードのセグメント、図９はプログラムの実行フローを示している。個の発明の命令変更装置が動作することによって、図８における目的プログラムの命令「ＩＮＳＴ  Ｂ（５６）」は図９における命令「ＢＲ  ＡＤＤＸ  Ｃ」に置き換えられ、図８における命令「ＩＮＳＴ  Ｄ（５８）」は図９における命令「ＢＲ  ＡＤＤＸ  Ｌ」に置き換えられており、ジャンプ先に修正用の新しい命令群が置かれて動的に命令の置き換えが実行されるということが説明されている。
【特許文献１】特開平５−２２４９１１号公報（図１、図３、図５参照）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところが上記の命令変更装置は、動作の主体となっている目的プログラムを含めて複数のプログラムが必要となり、即値やオペコードのみを変更したいというときは規模の大きなシステムになるという問題があった。また、マイクロプロセッサが実行する処理を変更することはできるが、マイクロプロセッサの挙動を決定する命令の解釈を変更することはできないという問題もあった。さらにバックグラウンドで動作を変更させるには変更作業とぶつからないように読み込みの制御を必要としたり、新規に挿入される命令群のコードの量だけ新たにメモリを消費したり、命令の実行順序が変わってしまう、などの様々な問題があった。
本発明はこのような問題点に鑑みてなされたものであり、ほかのプログラムを設けることなくプログラムを変更させることができ、プログラムサイズを変更させることなしに簡単に即値やオペコードを変更させることができる命令変更装置を提供することを目的とする。
また、プログラムだけで一元管理することができ、命令解釈を実行する部分を変更することによってプログラムの挙動を変更することができる命令変更装置を提供することを目的とする。
さらに、命令セットの解釈を容易に変更できて他のマイクロプロセッサをエミュレーションすることもできる命令変更装置を提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記問題を解決するため、本発明は、次のように構成したのである。
請求項１に記載の発明は、演算処理するＡＬＵと、前記ＡＬＵの処理に用いるプログラムとデータを一時格納するレジスタと、演算命令を格納する命令メモリと、演算結果を格納するデータメモリと、前記演算命令を受けてフェッチする命令フェッチ部とを備え、前記ＡＬＵが所定のプログラムに従って演算するとともに、前記プログラムの実行中に前記プログラムを変更することができる命令変更装置において、前記命令フェッチ部の指令をデコードして前記レジスタと前記ＡＬＵを制御するデコーダと、前記ＡＬＵが生成するコンディションコードが変更命令の実行を示す時は、前記ＡＬＵの演算結果と前記命令メモリの書き込み制御信号によって前記命令メモリに格納された前記演算命令を変更するとともに、インターロック信号を出力して前記命令フェッチ部の動作を一時停止させる命令メモリ変更部とを備えたことを特徴としている。
また請求項２に記載の発明は、前記命令フェッチ部の指令をデコードして前記レジスタと前記ＡＬＵを制御するＬＵＴと、前記ＡＬＵが生成するコンディションコードが変更命令の実行を示す時は、前記ＡＬＵの演算結果に応じた指令によって前記ＬＵＴの内容を変更するとともに、インターロック信号を生成し出力して前記命令フェッチ部の動作を一時停止させるＬＵＴ変更部と、を備えることを特徴としており、請求項３に記載の発明は、前記ＬＵＴがバンク構成であることを特徴としている。
また、請求項４に記載の発明は、前記命令フェッチ部の出力を受けて実行するマイクロコードのアドレスを生成、保持  するマイクロ制御レジスタと、その出力を受けてマイクロコードを出力するマイクロメモリと、前記ＡＬＵが生成するコンディションコードが変更命令の実行を示す時は、前記ＡＬＵの演算結果に応じた指令を前記マイクロメモリに出力して前記マイクロメモリに格納されたマイクロコードのデータを書き換えるとともに、インターロック信号を出力して前記命令フェッチ部の動作を一時停止させるマイクロメモリ変更部とを備えたことを特徴としており、請求項５に記載の発明は、前記マイクロメモリがバンク構成であることを特徴としている。
【発明の効果】
【０００５】
請求項１に記載の発明によれば、変更命令を実行すると、プログラムを動かしながら命令またはオペコードや即値フィールドなど命令の一部分を動的に変更できるようになる。このため、たとえば制御ゲインのようなデータを即値としてプログラムに埋め込んでおけば、アプリケーションを実行させながら動的にプログラムを変更することができるので、アプリケーションに特化されつつもアプリケーションが動作している環境に最適なプログラムに調整することができるようになるという効果がある。さらに、命令領域をデータ領域として利用するため、データメモリの領域を削減することができ、命令領域とデータ領域で別々に管理していたプログラムを命令領域だけで一元管理することができるようになって命令変更装置が簡単化される、という効果がある。
請求項２、４に記載の発明によれば、変更命令を実行すると命令に対するマイクロプロセッサの挙動を変更することができるようになる。このため、マイクロプロセッサを実行させながらアプリケーションに合わせてＬＵＴまたはマイクロメモリを微調整し、アプリケーションが動作している環境にあわせた調整をすることができるようになるという効果がある。
請求項３、５に記載の発明によれば、ほかのマイクロプロセッサをエミュレートすることができるようになり、ソフトウェアに依存したエミュレートと比較して高速に行なえるようになるという効果がある。また、動的にＬＵＴまたはマイクロメモリを切り換えることによって複数のマイクロプロセッサのエミュレートを再起動することなく実行できるようになり、作業性が向上するという効果がある。さらに、アプリケーションに合わせて作成されたＬＵＴまたはマイクロプログラムを用いることにより、同じプログラムでありながらアプリケーションに最適に調整された動作をさせることができて操作性が向上するという効果がある。
【発明を実施するための最良の形態】
【０００６】
以下、本発明の実施の形態について図を参照して説明する。なお，実施例で使われるマイクロプロセッサはＲＩＳＣ型として説明する。
【実施例１】
【０００７】
図１は、本発明の命令変更装置のブロック図である。この命令変更装置はレジスタ１とＡＬＵ２、命令フェッチ部３、命令メモリ４、データメモリ５、デコーダ６、命令メモリ変更部７から構成されており、各構成要素の相互の接続関係は図のようになっている。図において、命令メモリ４は命令フェッチ部で読み込まれる命令が記憶されており、データメモリ５はワーク領域として利用される。命令メモリ４が命令バスＢ５に出力した命令は命令フェッチ部３に入力されてフェッチされ、そのまま命令ｄとしてデコーダ６に出力される。デコーダ６はその命令ｄを解釈して制御信号を生成し、レジスタ１とＡＬＵ２に出力する。レジスタ１が演算の入力となるデータｂを出力してＡＬＵ２が演算する。ＡＬＵ２は演算結果ａを出力すると同時に変更命令を実行した結果として生成されるコンディションコードを出力する。命令メモリ変更部７は演算結果ａとコンディションコードを入力すると、コンディションコードが変更命令の実行を示していれば、演算結果を命令変更バスＢ２に出力して命令メモリ４へ書き込む。このとき、命令フェッチ部３と競合が起こらないようにインターロック信号を命令フェッチ部３に出力して命令フェッチ部３の動作を停止させる。
本発明が特許文献１に開示された発明と異なるところは、変更命令の演算結果を命令メモリ４に書き込む命令メモリ変更部７を新たに追加した点にある。
なお、上記のレジスタ１とＡＬＵ２、命令フェッチ部３、命令メモリ４、データメモリ５は後述する第２実施例以降でも使われており、以下ではその説明を省略する。
【０００８】
次に図２のフローチャートを用いて命令メモリ変更部７の動作について順を追って説明する。まず、命令メモリ変更部７が起動して処理が開始されると（Step１）、コンディションコードが調べられてＡＬＵ２で変更命令が実行されたかどうかがチェックされる(Step2)。実行されていなければ処理が終了し（Step5）、実行されていれば演算結果をデータに用いて命令メモリの内容を変更する（Step3）のと並列に、フェッチ部の動作を一時停止させるためにインターロック信号が生成される（Step4）。この並列処理のいずれが終了しても命令メモリ変更部７の処理が終了する（Step5）。変更命令が実行されたかどうかがチェックされたとき（Step2）、通常は変更命令が実行されずにそのまま処理が終了する（Step5）。
【実施例２】
【０００９】
前述したように、以下の実施例で使われているレジスタ１とＡＬＵ２、命令フェッチ部３、命令メモリ４、データメモリ５は図１と同じものであり、機能も同じであるので以下では説明を省略する。
図３は第２実施例の命令変更装置のブロック図であり、図１の命令変更装置と異なるのは、図１のデコーダ６と命令メモリ変更部７が図３ではそれぞれＬＵＴ９とＬＵＴ変更部８に置き換わった点である。
ＬＵＴ９はデコーダを構成しており、命令フェッチ部３が出力する命令ｄを解釈して制御信号を生成し、レジスタ１とＡＬＵ２に出力する。ＡＬＵ２が出力するコンディションコードが変更命令の実行を示していれば、ＬＵＴ変更部８はＬＵＴ変更バスＢ３を介して演算結果をＬＵＴ９に書き込む。このとき、図１と同様に命令フェッチ部３と競合が起こらないようにインターロック信号を出力して命令フェッチ部３の動作を一時停止させる。
【実施例３】
【００１０】
図４は第３実施例の命令変更装置のブロック図であり、図３の命令変更装置と異なるのはＬＵＴ９がバンク構成になっただけである。
ＬＵＴ９はデコーダを構成しており、命令フェッチ部３が出力する命令ｄを解釈して制御信号を生成し、レジスタ１とＡＬＵ２に出力する。この実施例では、ＡＬＵ２が出力するコンディションコードが変更命令の実行を示していれば、ＬＵＴ変更部８はＬＵＴ変更バスＢ３を介して演算結果をＬＵＴ９に書き込み，同時に演算結果をインデックスとして利用してバンク構成をしたＬＵＴ９の切り換えをする。
【実施例４】
【００１１】
図５は第４実施例の命令変更装置のブロック図であり、図１の命令変更装置と異なるのは、図１のデコーダ６と命令メモリ変更部７が図５ではそれぞれマイクロ制御レジスタ１１およびマイクロメモリ１２とマイクロメモリ変更部１０に置き換わった点である。
マイクロ制御レジスタ１１は命令フェッチ部３が出力する命令ｄを受けるとマイクロメモリのアドレスを生成してマイクロメモリ１２に出力する。マイクロメモリ１２はそのアドレスを受けると記憶されているマイクロコードから制御信号を生成してレジスタ１とＡＬＵ２に出力する。ＡＬＵ２が出力するコンディションコードが変更命令の実行を示していれば、マイクロメモリ変更部１０はマイクロコード変更バスＢ４を介してマイクロメモリ１２へ演算結果を書き込む。
【実施例５】
【００１２】
図６は第５実施例の命令変更装置のブロック図であり、図５の命令変更装置と異なるのはマイクロメモリ１２がバンク構成になっただけである。
マイクロ制御レジスタ１１は命令フェッチ部３が出力する命令ｄを受けるとマイクロメモリのアドレスを生成してマイクロメモリ１２に出力する。マイクロメモリ１２はそのアドレスを受けると記憶されているマイクロコードから制御信号を生成してレジスタ１とＡＬＵ２に出力する。ＡＬＵ２が出力するコンディションコードが変更命令の実行を示していれば、マイクロメモリ変更部１０はマイクロコード変更バスＢ４を介してマイクロメモリ１２へ演算結果を書き込む。
コンディションコードが変更命令の実行を示していれば、マイクロメモリ変更部１０はマイクロコード変更バスＢ４を介して演算結果をマイクロメモリ１２に出力する。その演算結果は、マイクロメモリ１２がインデックスとして利用すると同時にバンク構成の切り替えが行なわれる。
【産業上の利用可能性】
【００１３】
演算処理の結果によってメモリの内容を変更することができ、命令解釈部のロジックを変更することができるので、ハードウェアシーケンサを用いた論理回路にも適用できる。
【図面の簡単な説明】
【００１４】
【図１】第１実施例の命令変更装置の構成を示すブロック図
【図２】命令メモリ変更部の動作を説明するフローチャート
【図３】第２実施例の命令変更装置の構成を示すブロック図
【図４】第３実施例の命令変更装置の構成を示すブロック図
【図５】第４実施例の命令変更装置の構成を示すブロック図
【図６】第５実施例の命令変更装置の構成を示すブロック図
【図７】従来の命令変更装置の構成を示すブロック図
【図８】従来の命令変更装置の変更前の命令メモリ内容
【図９】従来の命令変更装置の変更後の命令メモリ内容
【符号の説明】
【００１５】
１  レジスタ、                     ２  ＡＬＵ、
３  命令フェッチ部、               ４  命令メモリ、
５  データメモリ、                 ６  デコーダ、
７  命令メモリ変更部、             ８、８Ｂ  ＬＵＴ変更部、
９  ＬＵＴ、                       １０、１０Ｂ  マイクロメモリ変更部、
１１  マイクロ制御レジスタ、       １２  マイクロメモリ、
Ｂ１  データバス、                 Ｂ２  命令変更バス、
Ｂ３  ＬＵＴ変更バス、             Ｂ４  マイクロコード変更バス、
Ｂ５  命令バス、
１４  メモリシステム、             １６  制御プログラム、
１８  目的プログラム、             ２０  動的命令修正プログラム、
１００ 制御装置、                  １２０ 実行装置
【図１】
2006023848.tif 000003
【図２】
2006023848.tif 000004
【図３】
2006023848.tif 000005
【図４】
2006023848.tif 000006
【図５】
2006023848.tif 000007
【図６】
2006023848.tif 000008
【図７】
2006023848.tif 000009
【図８】
2006023848.tif 000010
【図９】
2006023848.tif 000011