(57)【要約】【課題】  命令の移動に伴い例外的に発生する不具合を、プログラムの命令数やテーブルのエントリ数を増加させることなく防止できるプログラム実行方法およびマイクロコントローラを提供する。【解決手段】  マイクロコントローラは、デコーダ１１０と、メモリ１２０と、ロードプロテクトテーブル１３０と、ヒット検出手段１５０とを備える。また、ロードプロテクトテーブル１３０は、複数のエントリ領域１４０を有し、エントリ領域１４０は、ＰＣ（プログラムカウンタ）領域１４１と、命令アドレス領域１４２と、命令サイズ領域１４３と、プロテクト期間領域１４４とを有する。プロテクト期間領域１４４は、エントリ領域１４０の有効期間（プロテクト期間）を記憶する。【選択図】図１
2005078131.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのロード命令を少なくとも１つのストア命令の前に移動させてそれらを実行するときに、前記ロード命令におけるデータ読み出しの対象となる第１メモリ領域と前記ストア命令におけるデータ書き込みの対象となる第２メモリ領域との重なりの検出を行い、前記重なりが検出された場合には所定の例外処理を行うプログラム実行方法であって、
（ａ）前記第１メモリ領域のアドレス情報及び前記アドレス情報の有効期間をテーブルに記憶する工程と、
（ｂ）前記有効期間に応じ前記検出を行う工程と、
を備えるプログラム実行方法。
【請求項２】
請求項１に記載のプログラム実行方法であって、
前記工程（ａ）において前記有効期間に一対一に対応するオペコードを用いる
プログラム実行方法。
【請求項３】
請求項１に記載のプログラム実行方法であって、
前記工程（ａ）において所定の期間を前記有効期間のデフォルト値とする
プログラム実行方法。
【請求項４】
請求項１乃至請求項３のいずれかに記載のプログラム実行方法であって、
前記アドレス情報が有効であるかどうかを示す有効ビットを記憶する工程
をさらに備えるプログラム実行方法。
【請求項５】
請求項１乃至請求項４のいずれかに記載のプログラム実行方法であって、
前記工程（ａ）は、
前記第１メモリ領域のアドレス情報及び前記アドレス情報の有効期間を複数のテーブルに記憶する工程
を有するプログラム実行方法。
【請求項６】
少なくとも１つのロード命令を少なくとも１つのストア命令の前に移動させてそれらを実行するときに、前記ロード命令におけるデータ読み出しの対象となる第１メモリ領域と前記ストア命令におけるデータ書き込みの対象となる第２メモリ領域との重なりの検出を行い、前記重なりが検出された場合には所定の例外処理を行うプログラム実行方法であって、
前記第１メモリ領域のアドレス情報をテーブルに記憶する工程
を備え、
前記テーブルに記憶された複数の前記アドレス情報の無効化が前記アドレス情報毎に実行可能な
プログラム実行方法。
【請求項７】
少なくとも１つのロード命令を少なくとも１つのストア命令の前に移動させてそれらを実行するときに、前記ロード命令におけるデータ読み出しの対象となる第１メモリ領域と前記ストア命令におけるデータ書き込みの対象となる第２メモリ領域との重なりの検出を行い、前記重なりが検出された場合には所定の例外処理を行うマイクロコントローラであって、
前記第１メモリ領域のアドレス情報を記憶する領域及び前記アドレス情報の有効期間を記憶する領域を有するテーブルと、
前記有効期間に応じ前記検出を行う検出手段と、
を備えるマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラに関し、特に、他のマイクロコントローラの命令セットアーキテクチャのプログラム（オブジェクト）を、自身の命令セットへ動的に変換し実行するための技術（バイナリトランスレーション）に関する。
【背景技術】
【０００２】
一般に、他のマイクロコントローラの命令セットアーキテクチャのプログラム（オブジェクト）を自身の命令セットへ変換するいわゆるバイナリートランスレーションでは、プログラムにおける各命令の順序を移動させることにより、よい結果を得られることが多い。例えば、多くの実行時間を要する命令を前に移動すれば、この命令と並行して他の命令を実行することができる可能性が高くなるので、その分だけ実行速度を向上させることができる。
【０００３】
しかし、メモリにアクセスするためのメモリアクセス命令においては、この移動が制約される場合がある。ここでは、メモリアクセス命令として、例えば、メモリ上のデータをプロセッサ内のレジスタへ読み出す命令であるロード命令と、レジスタ上のデータをメモリへ書き込む命令であるストア命令とを例にとり説明する。一般に、複数の命令列からなるプログラムにおいて、ロード命令がストア命令の後に配置されていた場合には、ロード命令をストア命令の前に移動することによって、プログラムの実行速度を向上できる場合が多い。しかし、このようなロード命令の移動を行った場合に、例外的にではあるが、不具合が発生することがある。即ち、ロード命令におけるデータ読み出しの対象となるメモリ領域（以下では第１メモリ領域と呼ぶ）と、先行するストア命令におけるデータ書き込みの対象となるメモリ領域（以下では第２メモリ領域と呼ぶ）とが、例外的に、重なってしまった場合には、上記の移動により不具合が発生してしまう。即ち、本来であれば、先行するストア命令により書き込まれたデータに基づき決定されるべきロード命令の読み出し先のアドレスは、ロード命令がストア命令の前に移動されたことにより、異なったアドレスになってしまうという問題点があった。
【０００４】
実際には、ロード命令によりアクセスされる第１メモリ領域と、ストア命令によりアクセスされる第２メモリ領域とは、重ならない場合の方が多い。しかし、複数のメモリアクセス命令においてアクセスされるメモリ領域どうしの重なりは、実行時以外に検出することは困難であるので、トランスレータは、過度に保守的な変換（即ち、メモリアクセス命令の移動は行わないような変換）しかできなくなってしまうという問題点があった。
【０００５】
このような問題点を解決するために、ロードプロテクトテーブルと呼ばれるデータ保護用テーブルを用いることが考えられる。ロードプロテクトテーブルを用いたデータ保護の手法について、以下に説明する。
【０００６】
トランスレータは、ロード命令をストア命令よりも前に移動する場合、このロード命令を、プロテクトロード命令という命令に変換する。プロテクトロード命令は、第１メモリ領域上のデータをレジスタに読み出すときに、その先頭アドレス及びそのデータサイズ等のアドレス情報をロードプロテクトテーブルに記憶する。
【０００７】
また、ストア命令は、チェックストア命令に変換される。チェックストア命令は、レジスタ上のデータを第２メモリ領域に書き込むときに、ロードプロテクトテーブル上のアドレス情報をチェックする。チェックした結果、第１メモリ領域と第２メモリ領域とが重なっていない場合には、特別な命令により、それまでの作業を確定する。この特別な命令をコミット命令と呼び、作業を確定した時点のことをコミット時点と呼ぶ。
【０００８】
一方、チェックストア命令によるチェックの結果、第１メモリ領域と第２メモリ領域とが重なっていた場合には、最後にコミットした時点に戻りプログラムが再実行される。このような例外処理を行うことにより、正確なプログラムの実行を継続することができる。プログラムの再実行のためには、コミット時点のレジスタ値を保持したり（シャドウレジスタ）、コミット後のメモリ領域への書き込みを遅らせたり（ストアバッファ）することが必要になる。
【０００９】
例外が発生せずコミットにより作業を確定させるか、例外が発生しプログラムを再実行させることにより、チェックストア命令の実行が完了する。このとき、ロードプロテクトテーブルに書き込まれたアドレス情報等のデータは不要となる。従って、ロードプロテクトテーブルを無効化する無効化命令を実行することにより、このデータは無効化される。
【００１０】
ロード命令をストア命令の前に移動することにより例外的に発生する不具合を検出し回復させる方法および装置の例は、例えば特許文献１に示されている。
【００１１】
【特許文献１】特開平１０−２６９０８０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上記したように、従来のロードプロテクトテーブルを用いて、ロード命令をストア命令よりも前に移動するときに例外的に発生する不具合からデータを保護するときには、チェックストア命令の実行が完了した後に明示的に無効化命令を実行することにより、ロードプロテクトテーブルに登録されたアドレス情報等のデータ（エントリ）の無効化を行っている。そのため、無効化命令を追加することによりプログラムの命令数が増えてしまう。
【００１３】
一般に、ハードウェア規模の大きなマイクロコンピュータにおいては、同時に実行できる命令数が多い。従って、追加された無効化命令は、他の命令と同時に実行できる場合が多いので、プログラムの命令数が増加してもサイクル数は増加しない可能性が高い。
【００１４】
しかし、ハードウェア規模の小さなマイクロコントローラにおいては、同時に実行できる命令数が少ないので、プログラムの命令数が増加すると、サイクル数が増加してしまう可能性が高い。そのため、性能が低下してしまうという問題点があった。また、サイクル数の増加を防ぐために無効化命令を少なくした場合には、ロードプロテクトテーブルに登録されたエントリ数が増加していくので、やはり性能が低下してしまうという問題点があった。また、このような性能の低下を避けるためにハードウェア規模を大きくした場合には、消費電力やコストが大きくなってしまうという問題点があった。
【００１５】
本発明は以上の問題点を解決するためになされたものであり、命令の移動に伴い例外的に発生する不具合を、プログラムの命令数やテーブルのエントリ数を増加させることなく防止できるプログラム実行方法およびマイクロコントローラを提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記の課題を解決するために、請求項１に記載の発明に係るプログラム実行方法は、少なくとも１つのロード命令を少なくとも１つのストア命令の前に移動させてそれらを実行するときに、前記ロード命令におけるデータ読み出しの対象となる第１メモリ領域と前記ストア命令におけるデータ書き込みの対象となる第２メモリ領域との重なりの検出を行い、前記重なりが検出された場合には所定の例外処理を行うプログラム実行方法であって、（ａ）前記第１メモリ領域のアドレス情報及び前記アドレス情報の有効期間をテーブルに記憶する工程と、（ｂ）前記有効期間に応じ前記検出を行う工程とを備える。
【００１７】
また、請求項６に記載の発明に係るプログラム実行方法は、少なくとも１つのロード命令を少なくとも１つのストア命令の前に移動させてそれらを実行するときに、前記ロード命令におけるデータ読み出しの対象となる第１メモリ領域と前記ストア命令におけるデータ書き込みの対象となる第２メモリ領域との重なりの検出を行い、前記重なりが検出された場合には所定の例外処理を行うプログラム実行方法であって、前記第１メモリ領域のアドレス情報をテーブルに記憶する工程を備え、前記テーブルに記憶された複数の前記アドレス情報の無効化が前記アドレス情報毎に実行可能である。
【００１８】
また、請求項７に記載の発明に係るマイクロコントローラは、少なくとも１つのロード命令を少なくとも１つのストア命令の前に移動させてそれらを実行するときに、前記ロード命令におけるデータ読み出しの対象となる第１メモリ領域と前記ストア命令におけるデータ書き込みの対象となる第２メモリ領域との重なりの検出を行い、前記重なりが検出された場合には所定の例外処理を行うマイクロコントローラであって、前記第１メモリ領域のアドレス情報を記憶する領域及び前記アドレス情報の有効期間を記憶する領域を有するテーブルと、前記有効期間に応じ前記検出を行う検出手段とを備える。
【発明の効果】
【００１９】
請求項１に記載の発明に係るプログラム実行方法および請求項７に記載の発明に係るマイクロコントローラにおいては、前記有効期間を用いることにより、明示的な無効化命令を用いることなく前記テーブルの無効化を行っている。従って、命令の移動に伴い例外的に発生する不具合を、プログラムの命令数やテーブルのエントリ数を増加させることなく防止できるという効果を有する。
【００２０】
また、請求項６に記載の発明に係るプログラム実行方法は、所望のエントリのみを無効化することにより、より効率のよいオブジェクトコードを生成することができるという効果を有する。
【発明を実施するための最良の形態】
【００２１】
＜実施の形態１＞
実施の形態１に係るマイクロコントローラは、有効期間を記憶する領域を有するロードプロテクトテーブルを備えることを特徴とする。
【００２２】
図１に、本実施の形態に係るマイクロコントローラを示す。マイクロコントローラは、デコーダ１１０と、メモリ１２０と、ロードプロテクトテーブル１３０と、ヒット検出手段１５０とを備える。
【００２３】
また、ロードプロテクトテーブル１３０は、複数のエントリ領域１４０を有し、エントリ領域１４０は、ＰＣ（プログラムカウンタ）領域１４１と、命令アドレス領域１４２と、命令サイズ領域１４３と、プロテクト期間領域１４４とを有する。
【００２４】
デコーダ１１０は、プログラムにおける各命令に基づき所定の信号を生成する。メモリ１２０は、命令の実行におけるデータを記憶する。
【００２５】
また、ＰＣ領域１４１は、プログラムカウンタの値、即ち現在実行中の命令のプログラムメモリ上におけるアドレスを記憶する。命令アドレス領域１４２は、プロテクトロード命令によりアクセスされる第１メモリ領域のメモリ１２０上における先頭アドレス（命令アドレス）を記憶する。命令サイズ領域１４３は、プロテクトロード命令によりアクセスされる第１メモリ領域のメモリ１２０上におけるサイズ（命令サイズ）を記憶する。プロテクト期間領域１４４は、エントリ領域１４０の有効期間（プロテクト期間）を記憶する。
【００２６】
次に、このマイクロコントローラを用いたプログラム実行方法について説明する。なお、従来の技術として説明したものと同様の手順については説明を省略し、異なる手順についてのみ説明を行う。
【００２７】
プロテクトロード命令が実行されると、デコーダ１１０により、ロードプロテクトテーブル登録信号が生成される。この信号により、ロードプロテクトテーブル１３０の空きエントリへの書き込みが行われる。このとき、プログラムカウンタからのプログラムアドレスはＰＣ領域１４１に書き込まれる。また、デコーダ１１０からのプロテクトロード命令の命令アドレス及び命令サイズ（即ち、第１メモリ領域のアドレス情報）は、命令アドレス領域１４２及び命令サイズ領域１４３に、それぞれ書き込まれる。また、デコーダ１１０からのプロテクト期間は、プロテクト期間領域１４４にそれぞれ書き込まれる。
【００２８】
書き込まれたプロテクト期間は、例えば整数値であって、例えば図２に示されるようなカウンタ１６０を用いて、サイクル毎に減算される。カウンタ１６０においては、ＡＮＤ回路１６１にプロテクト期間とクロック信号とが入力されることにより、減算器１６２において、サイクル毎の減算が行われる。減算の結果、プロテクト期間が１以上である場合には、そのエントリ領域１４０は有効であると判断され、プロテクト期間が０である場合には、そのエントリ領域１４０は無効であると判断される。また、プロテクト期間が０以下である場合には、プロテクト期間の減算は行われない。
【００２９】
図１に戻って、チェックストア命令が実行されると、デコーダ１１０により、チェック信号が生成される。この信号により、ヒット検出手段１５０は、周知のヒット検出技術を用いてロードプロテクトテーブル１３０のチェックを行う。即ち、このチェックストア命令におけるデータ書き込みの対象となる第２メモリ領域と、ロードプロテクトテーブル１３０に登録されている有効ないずれかのエントリの第１メモリ領域とが、重なっているかどうかを検出する。この検出は、デコーダ１１０からのチェックストア命令の命令アドレス及び命令サイズと、ロードプロテクトテーブル１３０に登録されている全てのエントリにおけるプロテクトロード命令の命令アドレス及び命令サイズとを用いて、比較を行うことにより行われる。重なりが検出された場合、ヒット検出手段１５０は、ヒット信号を出力することにより、例外的な不具合の発生を通知する。これにより、前述したような所定の例外処理が行われる。ヒット検出のための検出式としては、例えば、ヒット信号＝（ストアアドレス≦テーブル内アドレス≦ストアアドレス＋ストアサイズ）｜（テーブル内アドレス≦ストアアドレス≦テーブル内アドレス＋テーブル内サイズ）を用いることにより、ヒット信号を生成することができる。
【００３０】
以上の手順により、プロテクト期間を用いたロードプロテクトテーブル１３０の１サイクルの動作が完了する。
【００３１】
図３に、プロテクトロード命令およびチェックストア命令のソースコード形式の表現例を示す。プロテクトロード命令は、”ＬＤ”と、命令サイズと、”．Ｐ”と、プロテクト期間Ｎとから構成され、動作としてロードプロテクトテーブル１３０への登録が規定されており、命令サイズ（１ｂｙｔｅ、ｈａｌｆ−ｗｏｒｄ、又は１ｗｏｒｄ）およびプロテクト期間Ｎが指定可能である。また、チェックストア命令は、”ＳＴ”と、命令サイズと、”．Ｃ”とから構成され、動作としてロードプロテクトテーブル１３０のチェックが規定されており、命令サイズ（１ｂｙｔｅ、ｈａｌｆ−ｗｏｒｄ、又は１ｗｏｒｄ）が指定可能である。例えば、３２ｂｉｔプロセッサの場合は、１ｗｏｒｄは３２ｂｉｔ即ち４ｂｙｔｅに対応し、ｈａｌｆ−ｗｏｒｄは２ｂｙｔｅに対応する。また、プロテクトロード命令において、命令サイズの後に”Ｕ”が付けられた場合には、符号無し形式でデータが読み出される。
【００３２】
また、図３に示される無効化命令（ＣＬＲＬＰ）を用いることにより、ロードプロテクトテーブル１３０に登録された全てのエントリを無効化してもよい。
【００３３】
図４（ａ）に、命令サイズが１ｗｏｒｄであるプロテクトロード命令をオブジェクトコード形式で表現した場合の命令フィールドの例を示す。命令フィールドの上位から数えて０〜７ｂｉｔ目には、命令サイズが１ｗｏｒｄであるプロテクトロード命令に対応するオペコード（命令コード）が表現されている。また、８〜１２ｂｉｔ目、１３〜１７ｂｉｔ目、及び１８〜２２ｂｉｔ目には、オペコードの対象となるオペランド（この場合、レジスタＲａ〜Ｒｃにそれぞれ対応）が表現されている。即ち、レジスタＲｂ，Ｒｃに格納されている値により指定される先頭アドレスを有する第１メモリ領域から、サイズが１Ｗｏｒｄであるデータが、レジスタＲａに読み出される。
【００３４】
また、２９〜３１ｂｉｔ目にはオペランドとしてプロテクト期間Ｎが表現されている。この場合、プロテクト期間Ｎとしては、３ｂｉｔ分即ち７サイクル分まで登録可能となる。
【００３５】
ここで、図４（ｂ）に示すように、レジスタＲｃに格納されている値に代えて、命令フィールドの１８〜２８ｂｉｔ目の領域で直接に指定される値を用いて、メモリ領域の先頭アドレスを指定してもよい。
【００３６】
このように、本実施の形態に係るプログラム実行方法およびマイクロコントローラにおいては、プロテクト期間領域１４４を用いてその期間だけ有効とすることにより、明示的な無効化命令を用いることなくロードプロテクトテーブル１３０の無効化を行っている。従って、命令の移動に伴い例外的に発生する不具合を、プログラムの命令数やテーブルのエントリ数を増加させることなく防止できるという効果を有する。
【００３７】
＜実施の形態２＞
実施の形態１においては、図３，４に示されるように、プロテクト期間Ｎは、命令フィールドの上位から数えて２９〜３１ｂｉｔ目を用いて指定している。しかし、プロテクト期間として、いくつかの特定の値のみを用いる場合には、それらの特定のプロテクト期間で指定されるプロテクトロード命令を、１つの命令として用意してしまうことにより、デコードを単純化することができる。
【００３８】
図５，６に、本実施の形態に係るプロテクトロード命令の、ソースコード形式の表現例およびオブジェクトコード形式の表現例をそれぞれ示す。図５には、図３においてＮ＝２，４，８とした場合のプロテクトロード命令がそれぞれ示されている。
【００３９】
図４においては、プロテクト期間Ｎは、オペランドとして２９〜３１ｂｉｔ目で指定されていたので、プロテクト期間に依らず、オペコードは一定（１種類）であった。しかし、図６においては、プロテクト期間Ｎは、オペランドとして指定されず、プロテクト期間Ｎの値に一対一に対応したオペコードが用意される。即ち、この場合には、Ｎ＝２，４，８に対応した３種類のオペコードを用いて、プロテクトロード命令が表現される。
【００４０】
なお、チェックストア命令および無効化命令については、実施の形態１と同様の形式で表現してよい。また、図４（ｂ）で示したように、メモリ領域の先頭アドレスを直接に指定してもよい。
【００４１】
このように、本実施の形態に係るプログラム実行方法およびマイクロコントローラにおいては、プロテクト期間Ｎは、オペランドで指定されるのではなく、オペコードで指定される。従って、実施の形態１の効果に加えて、解析すべきオペランドの数が少なくなる分だけ、デコードを単純化することができるという効果を有する。
【００４２】
また、プロテクト期間を指定するためのバスが不要となるので、ハードウェア規模を小さくすることができるという効果を有する。
【００４３】
＜実施の形態３＞
実施の形態１においては、図３に示されるような無効化命令（ＣＬＲＬＰ）を用いることにより、ロードプロテクトテーブル１３０に登録された全てのエントリ領域１４０を無効化している。しかし、所望のエントリ領域１４０のみを無効化することにより、より効率のよいオブジェクトコードを生成することができる。
【００４４】
図７に、本実施の形態に係る無効化命令の、オブジェクトコード形式の表現例を示す。命令フィールドの上位から数えて０〜７ｂｉｔ目には、無効化命令に対応するオペコードが表現されている。また、８〜３１ｂｉｔ目の領域では、無効化されるエントリ領域１４０に対応するプロテクトロード命令のプログラムメモリ上のアドレス（プログラムカウンタを用いた相対アドレス）がオペランドとして直接に指定される。
【００４５】
図８（ａ）に、図７で示される無効化命令のソースコード形式の表現例を用いた、プログラム例を示す。図８（ａ）においては、１行目で実行されるプロテクトロード命令を、５行目でチェックストア命令を実行した後に、６行目の無効化命令で無効化している。従って、この無効化命令を基準としたプロテクトロード命令の相対アドレスは、−５となり、この値がオペランドとして図７の命令フィールドの８〜３１ｂｉｔ目において直接に指定される。
【００４６】
図８（ｂ）は、図８（ａ）と同一のプログラムを、ソースコードの有するラベル機能を用いて表現したものである。図８（ｂ）においては、ラベルＬａｂｅｌ１を用いて１行目のプロテクトロード命令のアドレスを指定している。図８（ｂ）に示されるように表現した場合も、オブジェクトコード形式への変換時には、オペランドはプログラムカウンタを用いた相対アドレスに変換される。従って、変換後のオブジェクトコード形式の表現においては、図８（ａ）と図８（ｂ）とは同一の形式となる。
【００４７】
このように、本実施の形態に係るプログラム実行方法およびマイクロコントローラにおいては、所望のエントリのみを無効化することにより、より効率のよいオブジェクトコードを生成することができるという効果を有する。
【００４８】
なお、本実施の形態に係る無効化命令は、実施の形態１，２で説明したプロテクト期間領域１４４を有するロードプロテクトテーブル１３０と併用してもよいし、あるいは、単独で用いてもよい。
【００４９】
＜実施の形態４＞
実施の形態２においては、いくつかの特定の（Ｎ＝２，４，８の３種類）のプロテクト期間で指定されるプロテクトロード命令を、１つの命令として用意している。
【００５０】
しかし、例えば、１ｗｏｒｄの命令フィールドにプロテクト期間を指定するオペランドが格納できない場合（例えば、命令フィールド内のオペコード長や他のオペランド長が長い場合等）、１つの特定の値（例えば、Ｎ＝４とする）をデフォルト値として定め、Ｎ＝４以外の場合にオペランドを用いてＮを指定するようにしてもよい。
【００５１】
図９に、本実施の形態に係るプロテクトロード命令のソースコード形式の表現例を示す。
【００５２】
図９に示すように、プロテクト期間Ｎを指定しない場合には、Ｎとしてデフォルト値Ｎ＝４が登録される。従って、実施の形態２と同様に、命令フィールドにおいては、Ｎは指定されない。
【００５３】
また、図９に示すように、Ｎ＝４以外のプロテクト期間を指定する場合には、実施の形態１と同様に、オペランドとしてＮを指定する。但し、この場合には、オペコードが格納される１ｗｏｒｄの命令フィールドとは別に、プロテクト期間を指定するための１ｗｏｒｄの命令フィールドも必要となるので、合計２ｗｏｒｄの命令フィールドが必要となる。
【００５４】
このように、本実施の形態に係るプログラム実行方法およびマイクロコントローラにおいては、プロテクト期間Ｎを指定しない場合にはＮとしてデフォルト値が登録され、プロテクト期間Ｎを指定する場合には別の命令フィールドにおいてＮを指定する。従って、実施の形態１の効果に加えて、１ｗｏｒｄの命令フィールドにプロテクト期間を指定するオペランドが格納できない場合にも、プロテクト期間を指定できるという効果を有する。
【００５５】
＜実施の形態５＞
実施の形態１においては、エントリ領域１４０のプロテクト期間領域１４４に設定されたプロテクト期間を参照し、プロテクト期間が１以上であるかどうかで、このエントリ領域１４０が有効であるかどうかを判断している。しかし、エントリ領域１４０は、プロテクト期間に加えて、自エントリが有効であるかどうかを示す有効ビットを記憶してもよい。
【００５６】
図１０に、実施の形態５に係るロードプロテクトテーブル１７０の構成を示す。ロードプロテクトテーブル１７０は、実施の形態１に係る図１のロードプロテクトテーブル１３０に、有効ビット領域１４５を追加したものである。図１０において、図１と同様の機能を有する要素には同一の符号を付しているので、それらの詳細な説明は省略する。
【００５７】
この有効ビット領域１４５は、プロテクトロード命令によりエントリが登録されるときに１に設定され、図２のカウンタ１６０を用いた減算の結果Ｎ＝０となった場合に０に設定される。プロテクト期間領域１４４は複数ビットからなりエントリ領域１４０の後ろに配置されるのに対し、有効ビット領域１４５は１ビットからなりエントリ領域１４０の先頭に配置される。従って、有効ビット領域１４５を参照することにより、プロテクト期間領域１４４を参照する場合に比べて、実行速度を向上させることができる。
【００５８】
このように、本実施の形態にかかるロードプロテクトテーブル１７０は、有効ビット領域１４５を有しているので、実施の形態１の効果に加えて、実行速度を向上させることができるという効果を有する。
【００５９】
＜実施の形態６＞
実施の形態１においては、図１に示されるように、１つのロードプロテクトテーブル１３０を用いているが、複数のロードプロテクトテーブルを用いてもよい。
【００６０】
図１１に、実施の形態６に係るマイクロコントローラを示す。このマイクロコントローラは、複数のロードプロテクトテーブルからなるロードプロテクトテーブル群１８０を備えている。
【００６１】
一般的に、プログラムは、１つのメインプログラムと複数のサブプログラムとから構成されることが多い。プログラムカウンタは、メインプログラム実行中に、サブプログラムを実行する命令を検出すると、サブプログラムに分岐し、サブプログラムの実行が完了すると、再びメインプログラムに戻り実行を継続する。このような構成のプログラムにおいては、メインプログラム及び各サブプログラムのそれぞれが、別のロードプロテクトテーブルを用いることにより、より細かな制御が可能となり効率のよいオブジェクトコードの生成が可能となる。
【００６２】
図１２に、本実施の形態に係るプロテクトロード命令およびチェックストア命令のソースコード形式の表現例を示す。図１２は、図１において、テーブル番号を指定できるようにしたものである。
【００６３】
実施の形態１と同様に、プロテクトロード命令が実行されると、デコーダ１１０により、ロードプロテクトテーブル登録信号が生成される。この信号により、ロードプロテクトテーブル群１８０のうちの指定されたロードプロテクトテーブルにおいて、空きエントリへの書き込みが行われる。また、実施の形態１と同様に、チェックストア命令が実行されると、デコーダ１１０により、チェック信号が生成される。この信号により、ヒット検出手段１５０は、周知のヒット検出技術を用いてロードプロテクトテーブル群１８０の内のの指定されたロードプロテクトテーブルのチェックを行う。
【００６４】
指定されたロードプロテクトテーブルにおける動作については、実施の形態１と同様であるので説明を省略する。
【００６５】
また、図１２に示される無効化命令を用いることにより、１つのロードプロテクトテーブルの無効化（ＣＬＲＬＰＴ）あるいは全てのロードプロテクトテーブル（即ちロードプロテクト群１８０）の無効化（ＣＬＲＬＰ）を行うことができる。
【００６６】
このように、本実施の形態に係るマイクロコントローラは複数のロードプロテクトテーブルからなるロードプロテクトテーブル群１８０を備えている。従って、実施の形態１の効果に加えて、プログラムを構成するメインプログラム及び各サブプログラムのそれぞれが、別のロードプロテクトテーブルを用いることにより、より細かな制御が可能となり効率のよいオブジェクトコードの生成が可能であるという効果を有する。
【図面の簡単な説明】
【００６７】
【図１】実施の形態１に係るマイクロコントローラを示す図である。
【図２】実施の形態１に係るカウンタを示す図である。
【図３】実施の形態１に係る各命令のソースコード形式の表現例を示す図である。
【図４】実施の形態１に係る各命令のオブジェクトコード形式の表現例を示す図である。
【図５】実施の形態２に係る各命令のソースコード形式の表現例を示す図である。
【図６】実施の形態２に係る各命令のオブジェクトコード形式の表現例を示す図である。
【図７】実施の形態３に係る各命令のオブジェクトコード形式形式の表現例を示す図である。
【図８】実施の形態３に係る各命令のソースコード形式の表現例を示す図である。
【図９】実施の形態４に係る各命令のソースコード形式の表現例を示す図である。
【図１０】実施の形態５に係るロードプロテクトテーブルを示す図である。
【図１１】実施の形態６に係るマイクロコントローラを示す図である。
【図１２】実施の形態６に係る各命令のソースコード形式の表現例を示す図である。
【符号の説明】
【００６８】
１１０  デコーダ、１２０  メモリ、１３０，１７０  ロードプロテクトテーブル、１４０  エントリ領域、１４１  ＰＣ領域、１４２  命令アドレス領域、１４３  命令サイズ領域、１４４  プロテクト期間領域、１４５  有効ビット領域、１５０  ヒット検出手段、１６０  カウンタ、１６１  ＡＮＤ回路、１６２  減算器、１８０  ロードプロテクトテーブル群。
【図１】
2005078131.tif 000003
【図２】
2005078131.tif 000004
【図３】
2005078131.tif 000005
【図４】
2005078131.tif 000006
【図５】
2005078131.tif 000007
【図６】
2005078131.tif 000008
【図７】
2005078131.tif 000009
【図８】
2005078131.tif 000010
【図９】
2005078131.tif 000011
【図１０】
2005078131.tif 000012
【図１１】
2005078131.tif 000013
【図１２】
2005078131.tif 000014