(57)【要約】【課題】コード数および実行サイクル数の増加を可及的に抑制して、割込みによるリソースへの誤書き込みを防ぐことのできるデータ処理装置およびデータ処理方法を提供する。【解決手段】ＬＤＤＩ命令、本体処理命令およびＳＴＥＩ命令が、命令メモリ３によって記憶され、ＣＰＵ２によって読み出されて実行される。ＣＰＵ２は、ＬＤＤＩ命令に基づいて、データメモリ４からデータを読み出すとともに割込み禁止状態に移行し、この割込み禁止状態において、データメモリ４から読み出されたデータに対して、本体処理命令に基づいて本体処理をする。その後、ＣＰＵ２は、ＳＴＥＩ命令に基づいて、本体処理が施されたデータをデータメモリ４に書き込むとともに、割込み禁止状態を解除する。【選択図】図１
2009294823.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶手段に記憶されるデータに対して、予め定める本体処理および割込み処理をすることが可能なデータ処理方法であって、
前記データ記憶手段から前記データを読み出すとともに、前記割込み処理を禁止する割込み禁止状態に移行する割込み禁止付リード命令を実行するステップと、
前記割込み禁止状態で、前記データ記憶手段から読み出された前記データに対して前記本体処理をする本体処理命令を実行するステップと、
前記本体処理が施されたデータを前記データ記憶手段に書き込むとともに、前記割込み禁止状態を解除する割込み禁止解除付ライト命令を実行するステップとを備えることを特徴とするデータ処理方法。
【請求項２】
データ記憶手段に記憶されるデータに対して、予め定める本体処理および割込み処理をすることが可能なデータ処理方法であって、
前記データ記憶手段から予め定める読み出しアドレスのデータを読み出すリード命令を実行するとともに、前記読み出しアドレスと予め定める割込み禁止アドレス範囲とを比較し、前記読み出しアドレスが前記割込み禁止アドレス範囲内にある場合、割込み処理を禁止する割込み禁止状態に移行するステップと、
前記割込み禁止状態に移行した場合には、前記割込み禁止状態で、前記データ記憶手段から読み出された前記データに対して前記本体処理をする本体処理命令を実行するステップと、
前記割込み禁止状態に移行した場合には、前記本体処理が施されたデータを前記データ記憶手段の予め定める書き込みアドレスに書き込むライト命令を実行するとともに、前記書き込みアドレスと前記割込み禁止アドレス範囲とを比較し、前記書き込みアドレスが前記割込み禁止アドレス範囲内にある場合、前記割込み禁止状態を解除するステップとを備えることを特徴とするデータ処理方法。
【請求項３】
前記割込み禁止状態に移行した時点から、予め定める設定時間が経過すると、前記割込み禁止状態を解除するか、または予め定める例外発生処理をするステップを備えることを特徴とする請求項１または２に記載のデータ処理方法。
【請求項４】
データ記憶手段に記憶されるデータに対して、予め定める本体処理および割込み処理をすることが可能なデータ処理装置であって、
前記データ記憶手段から前記データを読み出すとともに、前記割込み処理を禁止する割込み禁止状態に移行する割込み禁止付リード命令、前記データ記憶手段から読み出された前記データに対して前記本体処理をする本体処理命令、および前記本体処理が施されたデータを前記データ記憶手段に書き込むとともに、前記割込み禁止状態を解除する割込み禁止解除付ライト命令を記憶する命令記憶手段と、
前記命令記憶手段に記憶される前記割込み禁止付リード命令、前記本体処理命令および前記割込み禁止解除付ライト命令を読み出して実行する処理手段とを備えることを特徴とするデータ処理装置。
【請求項５】
前記処理手段は、
予め定められ、前記割込み処理の要求の受付けを許可するか、または禁止するかを規定する第１の割込み禁止フラグを保持する第１の割込みマスクレジスタと、
前記割込み処理の要求の受付けを許可するか、または禁止するかを規定する第２の割込み禁止フラグであって、前記割込み禁止付リード命令の実行によって前記割込み処理の要求の受付けを禁止することを表す値に設定され、前記割込み禁止解除付ライト命令の実行によって前記割込み処理の要求の受付けを許可することを表す値に設定される第２の割込み禁止フラグを保持する第２の割込みマスクレジスタと、
前記第１の割込み禁止フラグと前記第２の割込み禁止フラグとの論理和を演算する演算素子とを含み、
前記演算素子の演算結果に基づいて、割込み禁止状態に移行するか、または割込み禁止状態を解除するかを決定することを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
データ記憶手段に記憶されるデータに対して、予め定める本体処理および割込み処理をすることが可能なデータ処理装置であって、
前記データ記憶手段から予め定める読み出しアドレスのデータを読み出すリード命令、前記割込み禁止状態で、前記データ記憶手段から読み出された前記データに対して前記本体処理をする本体処理命令、および前記本体処理が施されたデータを前記データ記憶手段の予め定める書き込みアドレスに書き込むライト命令を記憶する命令記憶手段と、
前記命令記憶手段に記憶される前記リード命令、前記本体処理命令および前記ライト命令を読み出して実行する処理手段とを備え、
前記処理手段は、
前記リード命令を実行するとともに、前記読み出しアドレスと予め定める割込み禁止アドレス範囲とを比較し、前記読み出しアドレスが前記割込み禁止アドレス範囲内にある場合、割込み処理を禁止する割込み禁止状態に移行し、
前記割込み禁止状態に移行した場合には、前記割込み禁止状態で前記本体処理命令を実行し、前記ライト命令を実行するとともに、前記書き込みアドレスと前記割込み禁止アドレス範囲とを比較し、前記書き込みアドレスが前記割込み禁止アドレス範囲内にある場合、前記割込み禁止状態を解除することを特徴とするデータ処理装置。
【請求項７】
前記処理手段は、
前記割込み禁止アドレス範囲を保持するアドレス範囲保持手段と、
前記アドレス範囲保持手段に保持される前記割込み禁止アドレス範囲と、前記読み出しアドレスおよび前記書き込みアドレスとを比較する比較手段とを含み、
前記比較手段の比較結果に基づいて、割込み禁止状態に移行するか、または割込み禁止状態を解除するかを決定することを特徴とする請求項６に記載のデータ処理装置。
【請求項８】
前記割込み禁止状態に移行した時点からの経過時間を計時する計時手段をさらに備え、
前記処理手段は、
前記計時手段によって計時される前記経過時間が、予め定める設定時間以上になると、前記割込み禁止状態を解除するか、または予め定める例外発生処理をすることを特徴とする請求項４〜７のいずれか１つに記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置およびデータ処理方法に関する。
【背景技術】
【０００２】
データ処理装置では、プログラムの処理を実行中に、外部装置からの割込み要求または実行中のプログラムからのソフトウェア割込み要求（以下、「割込み要求」と総称する場合がある）といった割込み要求が発生すると、実行中のプログラム処理を中断して割込み処理を実行する。
【０００３】
この割込み処理によって、メモリおよびレジスタなどのリソースへのデータの誤書き込みが生じる場合がある。たとえば、本体ルーチンと割込みハンドラとの両方で同じレジスタをアクセスするようになっている場合、本体ルーチンでレジスタの内容を読み出して処理した後、その処理結果をレジスタに書き込む前に割込み処理が実行されると、割込みから復帰した後に本体ルーチンでの処理結果がレジスタに書き込まれるので、レジスタの内容に割込み処理の結果が反映されず、レジスタのデータの誤書き込みが生じる。
【０００４】
このような誤書き込みを防ぐために、従来の技術では、本体ルーチンの処理を実行する前に、まず割込み禁止にし、本体ルーチンの処理が完了した後に、割込み禁止を解除にするようにしている。割込み禁止およびその解除は、たとえばプログラムの本体ルーチンの処理命令の前後に設けられる割込み禁止命令および割込み禁止解除命令によって実行される（たとえば、特許文献１参照）。
【０００５】
【特許文献１】特開平４−２０５１４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前述の従来の技術のように、割込み禁止命令および割込み禁止解除命令を用いて、本体ルーチンの処理の前後で割込み禁止および割込み禁止解除を実行する場合、割込み禁止命令および割込み禁止解除命令が繰返し実行されて、割込み禁止および割込み禁止解除に要するコード数および実行サイクル数が過度に増加するおそれがある。コード数の増加は、命令コードを格納する領域の不足を招き、また実行サイクル数の増加は、プログラムの処理時間の増加を招く。したがってコード数および実行サイクル数の増加を可及的に抑制することが求められる。
【０００７】
本発明は、コード数および実行サイクル数の増加を可及的に抑制して、割込みによるリソースへの誤書き込みを防ぐことのできるデータ処理装置およびデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のデータ処理方法は、データ記憶手段に記憶されるデータに対して、予め定める本体処理および割込み処理をすることが可能なデータ処理方法であって、前記データ記憶手段から前記データを読み出すとともに、前記割込み処理を禁止する割込み禁止状態に移行する割込み禁止付リード命令を実行するステップと、前記割込み禁止状態で、前記データ記憶手段から読み出された前記データに対して前記本体処理をする本体処理命令を実行するステップと、前記本体処理が施されたデータを前記データ記憶手段に書き込むとともに、前記割込み禁止状態を解除する割込み禁止解除付ライト命令を実行するステップとを備えることを特徴とする。
【０００９】
また本発明のデータ処理方法は、データ記憶手段に記憶されるデータに対して、予め定める本体処理および割込み処理をすることが可能なデータ処理方法であって、前記データ記憶手段から予め定める読み出しアドレスのデータを読み出すリード命令を実行するとともに、前記読み出しアドレスと予め定める割込み禁止アドレス範囲とを比較し、前記読み出しアドレスが前記割込み禁止アドレス範囲内にある場合、割込み処理を禁止する割込み禁止状態に移行するステップと、前記割込み禁止状態に移行した場合には、前記割込み禁止状態で、前記データ記憶手段から読み出された前記データに対して前記本体処理をする本体処理命令を実行するステップと、前記割込み禁止状態に移行した場合には、前記本体処理が施されたデータを前記データ記憶手段の予め定める書き込みアドレスに書き込むライト命令を実行するとともに、前記書き込みアドレスと前記割込み禁止アドレス範囲とを比較し、前記書き込みアドレスが前記割込み禁止アドレス範囲内にある場合、前記割込み禁止状態を解除するステップとを備えることを特徴とする。
【００１０】
本発明のデータ処理装置は、データ記憶手段に記憶されるデータに対して、予め定める本体処理および割込み処理をすることが可能なデータ処理装置であって、前記データ記憶手段から前記データを読み出すとともに、前記割込み処理を禁止する割込み禁止状態に移行する割込み禁止付リード命令、前記データ記憶手段から読み出された前記データに対して前記本体処理をする本体処理命令、および前記本体処理が施されたデータを前記データ記憶手段に書き込むとともに、前記割込み禁止状態を解除する割込み禁止解除付ライト命令を記憶する命令記憶手段と、前記命令記憶手段に記憶される前記割込み禁止付リード命令、前記本体処理命令および前記割込み禁止解除付ライト命令を読み出して実行する処理手段とを備えることを特徴とする。
【００１１】
また本発明のデータ処理装置は、データ記憶手段に記憶されるデータに対して、予め定める本体処理および割込み処理をすることが可能なデータ処理装置であって、前記データ記憶手段から予め定める読み出しアドレスのデータを読み出すリード命令、前記割込み禁止状態で、前記データ記憶手段から読み出された前記データに対して前記本体処理をする本体処理命令、および前記本体処理が施されたデータを前記データ記憶手段の予め定める書き込みアドレスに書き込むライト命令を記憶する命令記憶手段と、前記命令記憶手段に記憶される前記リード命令、前記本体処理命令および前記ライト命令を読み出して実行する処理手段とを備え、前記処理手段は、前記リード命令を実行するとともに、前記読み出しアドレスと予め定める割込み禁止アドレス範囲とを比較し、前記読み出しアドレスが前記割込み禁止アドレス範囲内にある場合、割込み処理を禁止する割込み禁止状態に移行し、前記割込み禁止状態に移行した場合には、前記割込み禁止状態で前記本体処理命令を実行し、前記ライト命令を実行するとともに、前記書き込みアドレスと前記割込み禁止アドレス範囲とを比較し、前記書き込みアドレスが前記割込み禁止アドレス範囲内にある場合、前記割込み禁止状態を解除することを特徴とする。
【発明の効果】
【００１２】
本発明のデータ処理方法によれば、割込み禁止付リード命令に基づいて、データ記憶手段からデータが読み出されるとともに、割込み禁止状態に移行する。この割込み禁止状態において、データ記憶手段から読み出されたデータに対して、本体処理命令に基づいて本体処理が施される。その後、割込み禁止解除付ライト命令に基づいて、本体処理が施されたデータがデータ記憶手段に書き込まれるとともに、割込み禁止状態が解除される。
【００１３】
このように割込み禁止付リード命令が実行されてから割込み禁止解除付ライト命令が実行されるまでの間は、割込み禁止状態となり、割込み処理が禁止されるので、その間に割込み処理の要求があった場合、割込み処理を待機させ、本体処理が施されたデータがデータ記憶手段に書き込まれた後に、割込み処理をさせることができる。したがって、本体処理が施されたデータがデータ記憶手段に書き込まれる前に割込み処理がされることを防ぎ、割込み処理から復帰した後に、本体処理が施されたデータがデータ記憶手段に書き込まれることを防ぐことができる。
【００１４】
これによって、割込み処理が施されたデータと本体処理が施されたデータとがデータ記憶手段の同じアドレスに書き込まれる場合に、割込み処理が施されたデータが、本体処理が施されたデータで書き換えられてしまうことを防ぐことができるので、データ記憶手段へのデータの誤書き込みを防ぐことができる。
【００１５】
また割込み禁止状態への移行は、割込み禁止付リード命令に基づいて、データ記憶手段からのデータの読み出しとともに行われ、割込み禁止状態の解除は、割込み禁止解除付ライト命令に基づいて、データ記憶手段へのデータの書き込みとともに行われるので、割込み禁止および割込み禁止解除に要するコード数および実行サイクル数の増加を可及的に抑制することができる。したがって、コード数および実行サイクル数の増加を可及的に抑制して、割込みによるデータ記憶手段へのデータの誤書き込みを防ぐことができる。
【００１６】
本発明のデータ処理方法によれば、リード命令に基づいて、データ記憶手段から読み出しアドレスのデータが読み出されるとともに、読み出しアドレスと割込み禁止アドレス範囲とが比較され、読み出しアドレスが割込み禁止アドレス範囲内にある場合、割込み禁止状態に移行する。割込み禁止状態に移行した場合には、割込み禁止状態において、データ記憶手段から読み出されたデータに対して、本体処理命令に基づいて本体処理が施される。その後、ライト命令に基づいて、本体処理が施されたデータがデータ記憶手段の書き込みアドレスに書き込まれるとともに、書き込みアドレスと割込み禁止アドレス範囲とが比較され、書き込みアドレスが割込み禁止アドレス範囲内にある場合、割込み禁止状態が解除される。
【００１７】
このように読み出しアドレスが割込み禁止アドレス範囲内にある場合には、リード命令が実行されてからライト命令が実行されるまでの間は、割込み禁止状態となり、割込み処理が禁止されるので、その間に割込み処理の要求があった場合、割込み処理を待機させ、本体処理が施されたデータがデータ記憶手段の書き込みアドレスに書き込まれた後に、割込み処理をさせることができる。したがって、本体処理が施されたデータがデータ記憶手段に書き込まれる前に割込み処理がされることを防ぎ、割込み処理から復帰した後に、本体処理が施されたデータがデータ記憶手段に書き込まれることを防ぐことができる。
【００１８】
これによって、割込み処理が施されたデータと本体処理が施されたデータとがデータ記憶手段の同じ書き込みアドレスに書き込まれる場合に、割込み処理が施されたデータが、本体処理が施されたデータで書き換えられてしまうことを防ぐことができるので、データ記憶手段へのデータの誤書き込みを防ぐことができる。
【００１９】
また割込み禁止状態への移行は、リード命令に基づいて、リード命令で規定される読み出しアドレスを用いて、データ記憶手段からのデータの読み出しとともに行われ、割込み禁止状態の解除は、ライト命令に基づいて、ライト命令で規定される書き込みアドレスを用いて、データ記憶手段へのデータの書き込みとともに行われる。これによって、割込み禁止および割込み禁止解除に要するコード数および実行サイクル数の増加を可及的に抑制することができ、また命令の種類の増加を抑制することができる。したがって、コード数および実行サイクル数の増加を可及的に抑制して、割込みによるデータ記憶手段へのデータの誤書き込みを防ぐことができる。
【００２０】
本発明のデータ処理装置によれば、割込み禁止付リード命令、本体処理命令および割込み禁止解除付ライト命令が、命令記憶手段によって記憶され、処理手段によって読み出されて実行される。処理手段は、割込み禁止付リード命令に基づいて、データ記憶手段からデータを読み出すとともに割込み禁止状態に移行し、この割込み禁止状態において、データ記憶手段から読み出されたデータに対して、本体処理命令に基づいて本体処理をする。その後、処理手段は、割込み禁止解除付ライト命令に基づいて、本体処理が施されたデータをデータ記憶手段に書き込むとともに、割込み禁止状態を解除する。
【００２１】
このように割込み禁止付リード命令が実行されてから割込み禁止解除付ライト命令が実行されるまでの間は、割込み禁止状態となり、割込み処理が禁止されるので、その間に割込み処理の要求があった場合、割込み処理を待機させ、本体処理が施されたデータがデータ記憶手段に書き込まれた後に、割込み処理をさせることができる。したがって、本体処理が施されたデータがデータ記憶手段に書き込まれる前に割込み処理がされることを防ぎ、割込み処理から復帰した後に、本体処理が施されたデータがデータ記憶手段に書き込まれることを防ぐことができる。
【００２２】
これによって、割込み処理が施されたデータと本体処理が施されたデータとがデータ記憶手段の同じアドレスに書き込まれる場合に、割込み処理が施されたデータが、本体処理が施されたデータで書き換えられてしまうことを防ぐことができるので、データ記憶手段へのデータの誤書き込みを防ぐことができる。
【００２３】
また割込み禁止状態への移行は、割込み禁止付リード命令に基づいて、データ記憶手段からのデータの読み出しとともに行われ、割込み禁止状態の解除は、割込み禁止解除付ライト命令に基づいて、データ記憶手段へのデータの書き込みとともに行われるので、割込み禁止および割込み禁止解除に要するコード数および実行サイクル数の増加を可及的に抑制することができる。したがって、コード数および実行サイクル数の増加を可及的に抑制して、割込みによるデータ記憶手段へのデータの誤書き込みを防ぐことができる。
【００２４】
本発明のデータ処理装置によれば、リード命令、本体処理命令およびライト命令が、命令記憶手段によって記憶され、処理手段によって読み出されて実行される。処理手段は、リード命令に基づいて、データ記憶手段から読み出しアドレスのデータを読み出すとともに、読み出しアドレスと割込み禁止アドレス範囲とを比較して、読み出しアドレスが割込み禁止アドレス範囲内にある場合、割込み禁止状態に移行する。割込み禁止状態に移行した場合には、処理手段は、割込み禁止状態において、データ記憶手段から読み出されたデータに対して、本体処理命令に基づいて本体処理を施し、ライト命令に基づいて、本体処理が施されたデータをデータ記憶手段の書き込みアドレスに書き込むとともに、書き込みアドレスと割込み禁止アドレス範囲とを比較して、書き込みアドレスが割込み禁止アドレス範囲内にある場合、割込み禁止状態を解除する。
【００２５】
このように読み出しアドレスが割込み禁止アドレス範囲内にある場合には、リード命令が実行されてからライト命令が実行されるまでの間は、割込み禁止状態となり、割込み処理が禁止されるので、その間に割込み処理の要求があった場合、割込み処理を待機させ、本体処理が施されたデータがデータ記憶手段の書き込みアドレスに書き込まれた後に、割込み処理をさせることができる。したがって、本体処理が施されたデータがデータ記憶手段に書き込まれる前に割込み処理がされることを防ぎ、割込み処理から復帰した後に、本体処理が施されたデータがデータ記憶手段に書き込まれることを防ぐことができる。これによって、割込み処理が施されたデータと本体処理が施されたデータとがデータ記憶手段の同じ書き込みアドレスに書き込まれる場合に、割込み処理が施されたデータが、本体処理が施されたデータで書き換えられてしまうことを防ぐことができるので、データ記憶手段へのデータの誤書き込みを防ぐことができる。
【００２６】
また割込み禁止状態への移行は、リード命令に基づいて、リード命令で規定される読み出しアドレスを用いて、データ記憶手段からのデータの読み出しとともに行われ、割込み禁止状態の解除は、ライト命令に基づいて、ライト命令で規定される書き込みアドレスを用いて、データ記憶手段へのデータの書き込みとともに行われる。これによって、割込み禁止および割込み禁止解除に要するコード数および実行サイクル数の増加を可及的に抑制することができ、また命令記憶手段に記憶される命令の種類の増加を抑制することができる。したがって、コード数および実行サイクル数の増加を可及的に抑制して、割込みによるデータ記憶手段へのデータの誤書き込みを防ぐことができる。
【発明を実施するための最良の形態】
【００２７】
＜前提技術＞
本発明のデータ処理装置を説明する前に、本発明の前提となるデータ処理装置の割込み処理について説明する。図１は、制御本体ルーチンのプログラムの一例を示す図である。図２は、割込みハンドラのプログラムの一例を示す図である。図３は、図１に示す制御本体ルーチンのプログラムに割込み禁止命令および割込み禁止解除命令を付加したプログラムの一例を示す図である。ここでは、指定されたアドレスのデータを読み出して加工し、加工後のデータを元のアドレスに書き込む、いわゆるリードモディファイライトを行う場合について説明する。
【００２８】
図１に示す制御本体ルーチンのプログラムにおいて、ＬＤ、ＯＲ、ＳＴは、それぞれ読み出し命令（以下「リード命令」という場合がある）、論理和（ＯＲ）演算命令、書き込み命令（以下「ライト命令」という場合がある）を表している。またＲ０は、レジスタの番号を表し、［Ｒ１］はメモリのアドレスを表している。
【００２９】
制御本体ルーチンのプログラムでは、まず命令ＬＤによって、メモリ［Ｒ１］の所定のアドレスに書き込まれているデータが所定のレジスタＲ０に読み出される。ここで、メモリ［Ｒ１］の所定のアドレスに書き込まれているデータが読み出されたとき、レジスタＲ０のデータが０ｘ１００になっているものとする。次に、命令ＯＲによって、レジスタＲ０に１を論理和（ＯＲ）、すなわちレジスタＲ０のデータ０ｘ１００１と、１０進数の１を表す０ｘ００１との論理和（ＯＲ）演算が実行される。このＯＲ演算によって得られたデータ０ｘ１０１は、レジスタＲ０に格納される。次に、命令ＳＴによって、レジスタＲ０のデータ０ｘ１０１がメモリ［Ｒ１］に書き込まれる。
【００３０】
ここで、ＯＲ演算を実行しているときに割込みが起こった場合を想定する。割込みハンドラのプログラムが図２に示すような内容になっているとすると、制御本体ルーチンの実行後に割込みハンドラの処理が実行されれば、割込みハンドラの実行後のメモリ［Ｒ１］のデータは、制御本体ルーチンの実行後の値０ｘ１０１と、１０進数の２を表す０ｘ００２とのＯＲ演算によって０ｘ１０３が得られることが期待される。
【００３１】
ところが、制御本体ルーチンにおいてＯＲ命令を実行した直後に割込みハンドラの処理が実行された場合、割込みから復帰してから命令ＳＴが実行されるので、レジスタＲ０のデータがメモリ［Ｒ１］に書き込まれることになる。つまり、割込みハンドラでメモリ［Ｒ１］に書き込まれたデータが、割込みから復帰した後に制御本体ルーチンの命令ＳＴによって、レジスタＲ０のデータで上書きされてしまうので、メモリ［Ｒ１］のデータは、期待される０ｘ１０３ではなく、０ｘ１０１になってしまう。
【００３２】
このようにメモリ、レジスタなどのリソースのリードモディファイライトを行っている途中に、割込みが入り、その割込みハンドラ内で同じリソースのリードモディファイライトを行うと、誤書き込みが生じてしまう。
【００３３】
このような誤書き込みを防ぐために、すなわち割込みが入ってもメモリ［Ｒ１］のデータが期待通りに０ｘ１０３となるようにするために、図３に示すように、命令ＬＤの前に割込み禁止命令を付加し、命令ＳＴの後に割込み禁止解除命令を付加して、リードモディファイライト前後において割り込み禁止にする。
【００３４】
図３に示すようなプログラムにすると、ＯＲ命令実行後、レジスタＲ０のデータをメモリ［Ｒ１］に書き込んで、メモリ［Ｒ１］のデータが０ｘ１０１に確定してから割込みハンドラの処理が実行されることになるので、割込みハンドラにおいてメモリ［Ｒ１］のデータは、期待通りに０ｘ１０３となる。
【００３５】
しかし、図３に示すようなプログラムにすると、割込み禁止および割込み禁止解除に要するコード数および実行サイクル数が増大するという問題がある。コード数が増大すると、命令コードの格納領域が不足し、実行サイクル数が増大すると、処理時間が長くなるという問題が生じる。そこで本発明のデータ処理装置では、図４に示す構成を採用している。
【００３６】
＜第１の実施の形態＞
図４は、本発明の第１の実施の形態であるデータ処理装置１の構成を示すブロック図である。データ処理装置１は、マイクロコンピュータによって実現される。データ処理装置１は、中央演算処理装置（Central Processing Unit；略称：ＣＰＵ）２、命令メモリ３、データメモリ４、汎用レジスタ５、割込み制御部６、タイマ部８および演算器ユニット１１を備えて構成される。データメモリ４は、データ記憶手段に相当し、命令メモリ３は、命令記憶手段に相当し、ＣＰＵ２、汎用レジスタ５、割込み制御部６、タイマ部８および演算器ユニット１１は、処理手段に相当する。
【００３７】
ＣＰＵ（以下「実行制御部」という場合がある）２は、データ処理装置１を構成する前述の命令メモリ３、データメモリ４、汎用レジスタ５、割込み制御部６、タイマ部８および演算器ユニット１１を含むハードウェア資源と電気的に接続されており、これらのハードウェア資源を統括的に制御する。またＣＰＵ２は、データ処理装置１の外部に備えられる外部メモリ１５と電気的に接続されており、外部メモリ１５にアクセスして、外部メモリ１５に記憶されているデータを読み出す処理、および外部メモリ１５へデータを書き込む処理をする。
【００３８】
命令メモリ３は、命令、具体的には、命令に対応する命令コードを記憶する。ＣＰＵ２は、命令メモリ３に記憶されている命令コードをフェッチし、内蔵するデコーダによって、フェッチした命令コードを解析（デコード）する。ＣＰＵ２は、デコードした命令コードに対応する命令を実行する。
【００３９】
データメモリ４は、データ処理装置１によって処理されるデータを記憶する。汎用レジスタ５は、演算の対象データおよびメモリアクセスのためのアドレス値を格納する。ＣＰＵ２は、データメモリ４に記憶されているデータおよび汎用レジスタ５に格納されているデータを読み出す処理、ならびにデータメモリ４および汎用レジスタ５へデータを書き込む処理をする。
【００４０】
割込み制御部６は、割込み用制御レジスタ７と、割込みマスク制御部２０とを備える。割込み用制御レジスタ７は、複数の割込み要求信号の割込み優先順位を表す値を格納する。割込みマスク制御部２０は、割込み要求の受付けを許可するか、または禁止するかを規定する割込みマスク値を記憶し、割込みマスク値に基づいて、ＣＰＵ２への割込要求信号の出力の可否を制御する。
【００４１】
割込みマスク制御部２０は、割込みマスク値が割込み要求の受付けを許可する値である場合、割込み要求信号をＣＰＵ２に与える。割込みマスク制御部２０は、データ処理装置１の外部から複数の割込み要求があった場合、割込み用制御レジスタ７に格納されている優先順位を表す値に基づいて、優先順位の最も高い割込み要求の割込み要求信号を選択する。そして、割込みマスク制御部２０は、記憶している割込マスク値が割込み要求の受付けを許可する値である場合、選択した割込み要求信号をＣＰＵ２に与える。ＣＰＵ２は、割込み制御部６から与えられる割込み要求信号に対応する割込み処理を行う。ＣＰＵ２は、割込み用制御レジスタ７に格納されている値を読み出す処理、ならびに汎用レジスタ５へ値を書き込む処理をする。
【００４２】
タイマ部８は、ウォッチドッグタイマ９と、タイマ用制御レジスタ１０とを備える。タイマ部８は、ＣＰＵ２および割込み制御部６と電気的に接続されている。ウォッチドッグタイマ９は、割込み禁止状態に移行した時点から割込み禁止解除状態または例外発生状態に移行するまでの所定の時間を計時する。タイマ用制御レジスタ１０は、割込み禁止解除または例外発生の状態を表す設定値、およびウォッチドッグタイマ９の起動および停止を制御する値を格納する。タイマ用制御レジスタ１０に、ウォッチドッグタイマ９の起動を表す値が格納されているときは、ウォッチドッグタイマ９が動作し、タイマ用制御レジスタ１０に、ウォッチドッグタイマ９の停止を表す値が格納されているときは、ウォッチドッグタイマ９の動作が停止する。
【００４３】
データ処理装置１が、割込み禁止状態に移行した時点から予め定める設定時間が経過した時点で割込み禁止状態を解除するように設定されている場合、タイマ部８は、タイマ用制御レジスタ１０に格納されている設定値に基づいて、割込み制御部６に、割込み禁止解除を表す信号（以下「割込み禁止解除信号」という場合がある）を与える。割込み制御部６は、タイマ部８からの割込み禁止解除信号を受信すると、割込みマスク制御部２０によって、割込み要求の受付けを許可する割込みマスク値を記憶し、割込みマスク値に基づいて、選択した割込み要求信号をＣＰＵ２に与える。
【００４４】
データ処理装置１が、割込み禁止状態に移行した時点から予め定める設定時間が経過した時点で例外発生処理を行うように設定されている場合、タイマ部８は、タイマ用制御レジスタ１０に格納されている設定値に基づいて、ＣＰＵ２に、例外発生を表す信号（以下「例外発生信号」という場合がある）を与える。ＣＰＵ２は、タイマ部８からの例外発生信号を受信すると、所定の例外発生処理を行う。ＣＰＵ２は、タイマ用制御レジスタ１０に格納されている値を読み出す処理、ならびにタイマ用制御レジスタ１０へ値を書き込む処理をする。
【００４５】
演算器ユニット１１は、算術論理演算器（Arithmetic and Logic Unit；略称：ＡＬＵ）１２、乗算器（MultiPlY unit；略称：ＭＰＹ）１３およびシフタ（Shifter）１４を備える。演算器ユニット１１は、ＣＰＵ２および汎用レジスタ５と電気的に接続されている。演算器ユニット１１を構成するＡＬＵ１２、ＭＰＹ１３およびシフタ１４は、ＣＰＵ２から与えられる演算指令に従って演算を行う。ＡＬＵ１２、ＭＰＹ１３およびシフタ１４による各演算処理の途中の値および演算処理による算出値などが、汎用レジスタ５に格納される。
【００４６】
ＡＬＵ１２は、汎用レジスタ５に格納されているデータを用いて算術演算および論理演算を行う回路である。ＡＬＵ１２による算術演算結果および論理演算結果は、汎用レジスタ５に格納される。ＡＬＵ１２は、命令をデコードするＣＰＵ２からの指令によって、加算、減算、論理和、論理積、シフトなどの演算方法を変更できるようになっている。ＭＰＹ１３は、汎用レジスタ５に格納されているデータを用いて乗算を行う回路である。ＭＰＹ１３による乗算結果は、汎用レジスタ５に格納される。シフタ１４は、汎用レジスタ５に格納されているデータを用いてシフト演算を行う回路である。シフタ１４によるシフト演算結果は、汎用レジスタ５に格納される。このようにして演算器ユニット１１を構成するＡＬＵ１２、ＭＰＹ１３およびシフタ１４によって演算されて汎用レジスタ５に格納されたそれぞれの演算結果は、ＣＰＵ２によって読み出される。本実施の形態のデータ処理装置１は、本発明のデータ処理方法を実行する。
【００４７】
図５は、本発明の第１の実施の形態における制御本体ルーチンのプログラムの一例を示す図である。図６は、割込みマスク制御を説明するための図である。図５において、ＬＤＤＩは割込み禁止付リード命令を表し、ＯＲは論理和（ＯＲ）演算命令を表し、ＳＴＥＩは割込み禁止解除付ライト命令を表す。割込み禁止付リード命令、論理和（ＯＲ）演算命令および割込み禁止解除付ライト命令は、命令メモリ３に記憶される。本実施の形態では、論理和（ＯＲ）演算が本体処理に相当し、論理和（ＯＲ）演算命令が本体処理命令に相当する。
【００４８】
割込みマスク制御部２０は、第１割込みマスクレジスタ２１と、第２割込みマスクレジスタ２２と、論理和（ＯＲ）ゲート２３とを備えて構成される。第１割込みマスクレジスタ２１および第２割込みマスクレジスタ２２は、割込み要求の受付けを許可するか、または禁止するかを規定する割込み禁止フラグ（以下「フラグ値」という場合がある）を記憶する。本実施の形態において、割込み要求の受付けを禁止する割込み禁止フラグの値は「１」であり、割込み要求の受付けを許可する割込み禁止フラグの値は「０」である。以下、第１割込みマスクレジスタ２１に記憶される割込み禁止フラグを第１の割込み禁止フラグといい、第２割込みマスクレジスタ２２に記憶される割込み禁止フラグを第２の割込み禁止フラグという。
【００４９】
割込み制御部６では、割込みマスク制御部２０のＯＲゲート２３によって、第１割込みマスクレジスタ２１に記憶されているフラグ値と、第２割込みマスクレジスタ２２に記憶されているフラグ値とのＯＲ演算をして、その出力結果を割込みマスク制御信号としてＣＰＵ２に与える。ＣＰＵ２は、割込み制御部６から与えられる割込みマスク制御信号に基づいて割込禁止状態を決定する。具体的には、第１割込みマスクレジスタ２１に記憶されているフラグ値と、第２割込みマスクレジスタ２２に記憶されているフラグ値とのＯＲ演算の結果を、割込みマスク値として格納する。本実施の形態において、割込み要求の受付けを禁止する割込みマスク値は「１」であり、割込み要求の受付けを許可する割込みマスク値は「０」である。
【００５０】
ＣＰＵ２は、命令メモリ３からＬＤＤＩ命令コードを読出し、読出したＬＤＤＩ命令コードを解析して、次のサイクルで、割込み制御部６の第２割込マスクレジスタ２２に、割込み禁止を表すフラグ値「１」を格納する。これによって、第１割込マスクレジスタ２１のフラグ値「０」と第２割込マスクレジスタのフラグ値「１」とのＯＲ演算の結果が「１」となって、割込みマスク値が「１」となり、そのサイクルから割込み禁止状態に移行して、割込み禁止になる。
【００５１】
ＣＰＵ２は、ＳＴＥＩ命令を実行することによって、次のサイクルで、割込み制御部６の第２割込マスクレジスタ２２に格納されているフラグ値をクリアして、割込み禁止解除を表すフラグ値「０」を新たに格納する。これによって、第１割込マスクレジスタ２１のフラグ値「０」と第２割込マスクレジスタ２２のフラグ値「０」とのＯＲ演算の結果が「０」となって、割込みマスク値が「０」となり、そのサイクルから割込禁止状態が解除される。
【００５２】
具体的に述べると、制御本体ルーチンでは、ＬＤＤＩ命令によって、メモリ［Ｒ１］のデータをレジスタＲ０に読み出すとともに、前述のように割込み制御部６の第２割込みマスクレジスタ２２に割込み禁止を表すフラグ値「１」を格納して割込み禁止状態にする。次に、ＯＲ命令によって、レジスタＲ０のデータと、１０進数の１とのＯＲ演算を実行する。次に、ＳＴＥＩ命令によって、ＯＲ演算の結果のデータであるレジスタＲ０のデータをメモリ［Ｒ１］に書込むとともに、前述のように割込み制御部６の第２割込みマスクレジスタ２２に割込み禁止解除を表すフラグ値「０」を格納して割込み禁止状態を解除する。
【００５３】
したがって、ＬＤＤＩ命令実行サイクルから、ＳＴＥＩ命令実行サイクルまでの時間Ｔ１は、割込み禁止状態となる。
【００５４】
図７は、割込み禁止付リード命令ＬＤＤＩの実行後、割込み禁止解除付ライト命令ＳＴＥＩ命令が実行された場合の時系列を示す図である。図７の横軸は時間である。図７に示すように、ＬＤＤＩ命令の実行後、ＳＴＥＩ命令が実行される場合、一定時間Ｔ１にわたって割込み禁止状態になり、ＳＴＥＩ命令の実行によって割込み禁止状態が解除される。
【００５５】
次に、ＣＰＵ２がＬＤＤＩ命令のみを実行して、ＳＴＥＩ命令を実行しなかった場合について説明する。本実施の形態では、予め定める設定時間が経過すると、割込み禁止状態を解除するように設定する。このときの設定を表１に示す。
【００５６】
【表１】
2009294823.tif 000003
【００５７】
本実施の形態では、予め表１のように設定しておく。表１において、左端欄は設定項目を示し、中欄は実際の設定を示し、右端欄は設定条件を示す。表１に示す例では、設定ＯＮ、設定時間１００００サイクル、設定時間が経過した場合の処理は「割込み禁止解除」である。「割込み禁止解除」とは、割込み禁止状態を解除することを意味する。ＬＤＤＩ命令実行により割込み禁止状態になった後、設定時間、本実施の形態では１００００サイクル（ｃｙｃｌｅ）が経過すると、割込み禁止状態が解除される。割込み禁止状態に移行した時点からの経過時間は、タイマ部８のウォッチドッグタイマ９によって計時される。ウォッチドッグタイマ９は、計時手段に相当する。
【００５８】
図８は、タイマ部８のウォッチドッグタイマ９の構成を示すブロック図である。本実施の形態のタイマ部８は、ウォッチドッグタイマ９を備える。ウォッチドッグタイマ９は、タイマ用フリップフロップ２５、カウンタ２６およびタイマ用比較器２７を備えて構成される。タイマ用フリップフロップ２５は、予め定める設定値を記憶する。設定値としては、設定時間に対応する値が記憶される。カウンタ２６は、ＣＰＵ２から割込み禁止状態に設定されたことが通知された時点から、クロック信号のパルスのカウントを開始し、その計数値をタイマ用比較器２７に与える。
【００５９】
タイマ用比較器２７は、タイマ用フリップフロップ２５から与えられる設定値とカウンタ２６から与えられる計数値とを比較して、前記計数値が前記設定値に等しいか否かを判断する。タイマ用比較器２７は、前記計数値が前記設定値に等しいと判断したとき、設定時間Ｔ１が経過したと判断し、割込み禁止状態を解除するか、または例外発生処理をするようにＣＰＵ２に通知する。本実施の形態では、割込み禁止状態を解除するようにＣＰＵ２に通知する。またカウンタ２６は、タイマ用比較器２７によって前記計数値が前記設定値に等しいと判断されたとき、計数動作を停止する。
【００６０】
ＣＰＵ２は、ＬＤＤＩ命令を実行すると、割込み禁止状態に設定されたことをウォッチドッグタイマ９に通知する。ウォッチドッグタイマ９では、タイマ用比較器２７によって、タイマ用フリップフロップ２５に記憶されている設定値とカウンタ２６によって計数される計数値とが比較され、予め定めるカウントを開始して、設定時間が経ったら割込み禁止解除または例外発生をすることをＣＰＵ２に通知する。
【００６１】
図９は、ＬＤＤＩ命令だけを実行してＳＴＥＩ命令を実行しなかった場合の時系列を示す図である。図９に示すように、ＬＤＤＩ命令だけが実行され、ＳＴＥＩ命令が実行されなかった場合、設定時間の間は割込み禁止状態になるが、設定時間の経過後には、割込み禁止状態が解除される。
【００６２】
以上のように本実施の形態では、ＬＤＤＩ命令実行サイクルから、ＳＴＥＩ命令実行サイクルまでの時間Ｔ１は、割込み禁止状態となり、割込み処理が禁止されるので、その間に割込み処理の要求があった場合、割込み処理を待機させ、ＯＲ演算の結果のデータがデータメモリ４の所定のアドレス［Ｒ１］に書き込まれた後に、割込み処理をさせることができる。したがって、ＯＲ演算の結果のデータがデータメモリ４に書き込まれる前に割込み処理がされることを防ぎ、割込み処理から復帰した後に、ＯＲ演算の結果のデータがデータメモリ４に書き込まれることを防ぐことができる。これによって、割込み処理が施されたデータとＯＲ演算の結果のデータとがデータメモリ４の同じアドレス［Ｒ１］に書き込まれる場合に、割込み処理が施されたデータが、ＯＲ演算の結果のデータで書き換えられてしまうことを防ぐことができるので、データメモリ４へのデータの誤書き込みを防ぐことができる。
【００６３】
また割込み禁止状態への移行は、ＬＤＤＩ命令に基づいて、データメモリ４からのデータの読み出しとともに行われ、割込み禁止状態の解除は、ＳＴＥＩ命令に基づいて、データメモリ４へのデータの書き込みとともに行われるので、割込み禁止および割込み禁止解除に要するコード数および実行サイクル数の増加を可及的に抑制することができる。したがって、コード数および実行サイクル数の増加を可及的に抑制して、割込みによるデータメモリ４へのデータの誤書き込みを防ぐことができる。
【００６４】
また本実施の形態では、ウォッチドッグタイマ９によって計時される割込み禁止状態に移行した時点からの経過時間が予め定める設定時間以上になる、すなわち割込み禁止状態に移行した時点から設定時間が経過すると、割込み禁止状態が解除される。これによって、何らかの理由でＳＴＥＩ命令が実行されず、割込み禁止状態の解除が行われなかった場合でも、設定時間が経過すれば、割込禁止状態を解除して、再び割込みが許可されるようにすることができる。ＳＴＥＩ命令が実行されない場合としては、たとえば、制御本体ルーチンの途中で、制御本体ルーチンから抜けて、他のルーチンにジャンプしてしまった場合、ゼロ（０）で除算するなどの異常な例外が起こって、途中でプログラムの実行が止まった場合などが挙げられる。
【００６５】
また本実施の形態では、第１割込みマスクレジスタ２１に記憶される第１割込み禁止フラグと、第２割込みマスクレジスタ２２に記憶される第２割込み禁止フラグとの論理和がＯＲゲート２３で演算され、その結果が、割込みマスク値として求められる。この割込みマスク値に基づいて、割込み禁止状態に移行するか、または割込み禁止状態を解除するかが決定される。
【００６６】
第１割込みマスクレジスタ２１に記憶される第１割込み禁止フラグの値は、予め設定され、本実施の形態では、割込み禁止状態にないことを表す値、具体的には「０」に設定される。第２割込みマスクレジスタ２２に記憶される第２割込み禁止フラグの値は、ＬＤＤＩ命令の実行によって、割込み禁止状態にあることを表す値、本実施の形態では「１」に設定され、ＳＴＥＩ命令の実行によって、割込み禁止状態にないことを表す値、本実施の形態では「０」に設定される。つまり、第２割込みマスクレジスタ２２の値は、ＬＤＤＩ命令の実行によって「０」から「１」にセットされ、ＳＴＥＩ命令の実行によって「１」から「０」にリセットされる。
【００６７】
第２割込みマスクレジスタ２２に記憶される第２割込み禁止フラグの値が「１」であれば、割込みマスク値は「１」になり、割込み要求の受付けが禁止された状態、つまり割込み禁止状態となるので、ＣＰＵ２への割込要求信号の出力が禁止される。第２割込みマスクレジスタ２２に記憶される第２割込み禁止フラグの値が「０」であれば、割込みマスク値は「１」になり、割込み要求の受付けが禁止された状態、つまり割込み禁止状態となるので、ＣＰＵ２への割込要求信号の出力が禁止される。
【００６８】
このようにＬＤＤＩ命令およびＳＴＥＩ命令の実行によって、第２割込みマスクレジスタ２２の値を変更して、割込みマスク値を変更することができるので、割込み禁止状態への移行と割込み禁止状態の解除とを容易に行うことができる。したがって、簡単な構成で、コード数および実行サイクル数の増加を可及的に抑制して、割込みによるデータメモリ４へのデータの誤書き込みを防ぐことのできるデータ処理装置１を実現することができる。
【００６９】
＜第２の実施の形態＞
図１０は、本発明の第２の実施の形態であるデータ処理装置３０の構成を示すブロック図である。データ処理装置３０は、ＣＰＵ２、命令メモリ３、データメモリ４、汎用レジスタ５、タイマ部８、演算器ユニット１１およびメモリ制御回路３１を備えて構成される。図１０に示すデータ処理装置３０の構成は、前述の図４に示すデータ処理装置１の構成と類似しているので、異なる部分についてのみ説明し、対応する部分には同一の参照符を付して共通する説明を省略する。
【００７０】
本実施の形態のＣＰＵ２は、データ処理装置３０を構成する前述の汎用レジスタ５、タイマ部８、演算器ユニット１１およびメモリ制御回路３１を含むハードウェア資源と電気的に接続されており、これらのハードウェア資源を統括的に制御する。
【００７１】
メモリ制御回路３１は、メモリ制御用制御レジスタ３２を備える。メモリ制御回路３１は、ＣＰＵ２、命令メモリ３、データメモリ４およびタイマ部８と電気的に接続されている。メモリ制御回路３１は、命令メモリ３に記憶されている命令コードを読み出す。メモリ制御回路３１は、データメモリ４に記憶されているデータを読み出す処理、ならびにデータメモリ４へデータを書き込む処理をする。また、メモリ制御回路３１は、データ処理装置３０の外部に備えられる外部メモリ１５と電気的に接続されており、外部メモリ１５にアクセスして、外部メモリ１５に記憶されているデータを読み出す処理、および外部メモリ１５へデータを書き込む処理をする。本実施の形態のデータ処理装置３０は、本発明のデータ処理方法を実行する。
【００７２】
本実施の形態において、ＣＰＵ２、汎用レジスタ５、タイマ部８、演算器ユニット１１およびメモリ制御回路３１は、処理手段に相当する。
【００７３】
図１１は、本発明の第２の実施の形態における制御本体ルーチンのプログラムの一例を示す図である。図１１において、ＬＤはリード命令を表し、ＯＲは論理和（ＯＲ）演算命令を表し、ＳＴはライト命令を表す。リード命令、論理和（ＯＲ）演算命令およびライト命令は、命令メモリ３に記憶される。本実施の形態においても前述の第１の実施の形態と同様に、論理和（ＯＲ）演算が本体処理に相当し、論理和（ＯＲ）演算命令が本体処理命令に相当する。
【００７４】
本実施の形態では、ＣＰＵ２は、リード命令を実行するとともに、リード命令で規定される読み出しアドレスと予め定める割込み禁止アドレス範囲とを比較し、読み出しアドレスが割込み禁止アドレス範囲内にある場合、割込み処理を禁止する割込み禁止状態に移行する。またＣＰＵ２は、割込み禁止状態に移行した場合には、割込み禁止状態で論理和（ＯＲ）演算命令を実行し、またライト命令を実行するとともに、ライト命令で規定される書き込みアドレスと割込み禁止アドレス範囲とを比較し、書き込みアドレスが割込み禁止アドレス範囲内にある場合、割込み禁止状態を解除する。このときの具体的な設定の例を表２に示す。
【００７５】
【表２】
2009294823.tif 000004
【００７６】
表２において、左端欄は設定項目を示し、中欄は実際の設定を示し、右端欄は設定条件を示す。表２に示す例では、設定ＯＮ、割込み禁止アドレス範囲の各アドレスの上位ビット０ｘＥ３００４、設定はＬＤ命令の実行で割込み禁止、ＳＴ命令の実行で割込み禁止解除である。割込み禁止アドレス範囲は、割込み禁止アドレス範囲内の各アドレスの上位ビット０ｘＥ３００４から求められる。本実施の形態では、アドレスは３２ビットで表されており、その上位２０ビットが０ｘＥ３００４である範囲、すなわち０ｘＥ３００４０００〜０ｘＥ３００４ＦＦＦが割込み禁止アドレス範囲となる。
【００７７】
図１１に示す制御本体ルーチンにおいて、ＣＰＵ２は、ＬＤ命令実行時に、メモリ制御回路３１によって読み出しアドレス［Ｒ１］と割込み禁止アドレス範囲とを比較して、割込み禁止アドレス範囲内であると判断すると、そのサイクルから割込み禁止状態に移行する。本実施形態では、読み出しアドレス［Ｒ１］は０ｘＥ３００４０１０であり、割込み禁止アドレス範囲は０ｘＥ３００４０００〜０ｘＥ３００４ＦＦＦであるので、割込み禁止状態に移行する。
【００７８】
その後、ＣＰＵ２は、ＳＴ命令実行時に、メモリ制御回路３１によって書き込みアドレス［Ｒ１］と割込み禁止アドレス範囲とを比較して、割込み禁止アドレス範囲内であると判断すると、次のサイクルから割込み禁止状態を解除する。本実施形態では、書き込みアドレス［Ｒ１］は０ｘＥ３００４０１０であり、割込み禁止アドレス範囲は０ｘＥ３００４０００〜０ｘＥ３００４ＦＦＦであるので、割込み禁止状態が解除される。
【００７９】
したがって、ＬＤ実行サイクルから、ＳＴ実行サイクルまでは、割込み禁止状態になる。
【００８０】
図１２は、メモリ制御回路３１の具体的な構成を示すブロック図である。メモリ制御回路３１は、前述のメモリ制御用制御レジスタ３２に加えて、メモリ制御用フリップフロップ３３およびメモリ制御用比較器３４を備える。メモリ制御用フリップフロップ３３は、アドレス範囲保持手段に相当し、メモリ制御用比較器３４は、比較手段に相当する。メモリ制御用フリップフロップ３３には、前述の割込み禁止アドレス範囲が記憶される。本実施の形態では、メモリ制御用フリップフロップ３３は、２０個のＳＴフリップフロップによって実現される。
【００８１】
ＣＰＵ２は、ＬＤ命令およびＳＴ命令を実行する時に、読み出しアドレスまたは書き込みアドレスをメモリ制御用比較器３４に通知する。メモリ制御用比較器３４は、読み出しアドレスまたは書き込みアドレスと、メモリ制御用フリップフロップ３３に記憶される割込み禁止アドレス範囲とを比較し、読み出しアドレスが割込み禁止アドレス範囲内であれば、割込み禁止状態にすることをＣＰＵ２に通知し、書き込みアドレスが割込み禁止アドレス範囲内であれば、割込み禁止状態を解除することをＣＰＵ２に通知する。
【００８２】
割込み禁止アドレス範囲は、本実施の形態のように割込み禁止アドレス範囲内の各アドレスの共通する上位ビットで表すことができるが、これに限定されず、割込み禁止アドレス範囲の開始アドレスと終了アドレスとで表されてもよく、また割込み禁止アドレス範囲の開始アドレスと、割込み禁止アドレス範囲のサイズとで表されてもよい。
【００８３】
図１３は、ＬＤ命令の実行後、ＳＴ命令が実行された場合の時系列を示す図である。図１３の横軸は時間である。図１３に示すように、ＬＤ命令の実行後、ＳＴ命令が実行される場合、一定時間Ｔ２にわたって割込み禁止状態になり、ＳＴ命令の実行によって割込み禁止状態が解除される。
【００８４】
次に、ＣＰＵ２がＬＤ命令のみを実行して、ＳＴ命令を実行しなかった場合について説明する。本実施の形態では、予め定める設定時間が経過すると、例外発生処理をするように設定する。このときの設定を表３に示す。
【００８５】
【表３】
2009294823.tif 000005
【００８６】
本実施の形態では、予め表３のように設定しておく。表３において、左端欄は設定項目を示し、中欄は実際の設定を示し、右端欄は設定条件を示す。表３に示す例では、設定ＯＮ、設定時間２００００サイクル、設定時間が経過した場合の処理は「例外発生」である。「例外発生」とは、例外発生処理をすることを意味する。ＬＤ命令実行により割込み禁止状態になった後、設定時間、本実施の形態では２００００サイクル（ｃｙｃｌｅ）が経過すると、例外発生処理が実行される。割込み禁止状態に移行した時点からの経過時間は、第１の実施の形態と同様に、タイマ部８のウォッチドッグタイマ９によって計時される。
【００８７】
図１４は、ＬＤ命令だけを実行してＳＴ命令を実行しなかった場合の時系列を示す図である。図１４に示すように、ＬＤ命令だけが実行され、ＳＴ命令が実行されなかった場合、設定時間の間は割込み禁止状態になるが、設定時間の経過後には、例外発生処理が実行される。
【００８８】
以上のように本実施の形態では、読み出しアドレスが割込み禁止アドレス範囲内にある場合には、リード命令が実行されてからライト命令が実行されるまでの間Ｔ２は、割込み禁止状態となり、割込み処理が禁止されるので、その間に割込み処理の要求があった場合、割込み処理を待機させ、本体処理であるＯＲ演算の結果のデータがデータメモリ４の書き込みアドレス［Ｒ１］に書き込まれた後に、割込み処理をさせることができる。したがって、ＯＲ演算の結果のデータがデータメモリ４に書き込まれる前に割込み処理がされることを防ぎ、割込み処理から復帰した後に、ＯＲ演算の結果のデータがデータメモリ４に書き込まれることを防ぐことができる。これによって、割込み処理が施されたデータとＯＲ演算の結果のデータとがデータメモリ４の同じ書き込みアドレス［Ｒ１］に書き込まれる場合に、割込み処理が施されたデータが、ＯＲ演算の結果のデータで書き換えられてしまうことを防ぐことができるので、データメモリ４へのデータの誤書き込みを防ぐことができる。
【００８９】
また割込み禁止状態への移行は、リード命令に基づいて、リード命令で規定される読み出しアドレス［Ｒ１］を用いて、データメモリ４からのデータの読み出しとともに行われ、割込み禁止状態の解除は、ライト命令に基づいて、ライト命令で規定される書き込みアドレス［Ｒ１］を用いて、データメモリ４へのデータの書き込みとともに行われる。これによって、割込み禁止および割込み禁止解除に要するコード数および実行サイクル数の増加を可及的に抑制することができ、また命令メモリ４に記憶される命令の種類の増加を抑制することができる。したがって、コード数および実行サイクル数の増加を可及的に抑制して、割込みによるデータメモリ４へのデータの誤書き込みを防ぐことができる。
【００９０】
また本実施の形態では、メモリ制御用フリップフロップ３３に保持される割込み禁止アドレス範囲と、ＣＰＵ２から通知される読み出しアドレスおよび書き込みアドレスとがメモリ制御用比較器３４で比較される。メモリ制御用比較器３４は、読み出しアドレスが割込み禁止アドレス範囲内である場合、割込み禁止状態に移行するようにＣＰＵ２に通知し、書き込みアドレスが割込み禁止アドレス範囲内である場合、割込み禁止状態を解除するようにＣＰＵ２に通知する。ＣＰＵ２は、メモリ制御用比較器３４での比較結果に基づいて、割込み禁止状態に移行するか、または割込み禁止状態を解除する。
【００９１】
このようにメモリ制御用比較器３４による比較結果に基づいて、割込み禁止状態への移行と割込み禁止状態の解除とを行うので、簡単な構成で、コード数および実行サイクル数の増加を可及的に抑制して、割込みによるデータ記憶手段のデータの誤書き込みを防ぐことのできるデータ処理装置３０を実現することができる。
【００９２】
特に本実施の形態では、メモリ制御回路３１にメモリ制御用比較器３４を用いて比較を行うので、メモリ制御回路３１にメモリ制御用フリップフロップ３３を付加するだけで、割込み禁止状態への移行と割込み禁止状態の解除とを行うことのできるデータ処理装置３０を実現することができるので、データ処理装置３０の構成を簡単化することが可能である。
【００９３】
また本実施の形態では、ウォッチドッグタイマ９によって計時される割込み禁止状態に移行した時点からの経過時間が予め定める設定時間以上になる、すなわち割込み禁止状態に移行した時点から設定時間が経過すると、例外発生処理が施される。例外発生処理として、本実施の形態では、例外が発生したことが、たとえばＣＰＵ２に通知される。これによって、何らかの理由でＳＴ命令が実行されず、割込み禁止状態の解除が行われなかった場合に、例外が発生したことをデータ処理装置１の使用者に報知することが可能となる。ＳＴ命令が実行されない場合としては、前述のＳＴＥＩ命令が実行されない場合と同様に、たとえば、制御本体ルーチンの途中で、制御本体ルーチンから抜けて、他のルーチンにジャンプしてしまった場合、ゼロ（０）で除算するなどの異常な例外が起こって、途中でプログラムの実行が止まった場合などが挙げられる。
【００９４】
前述の第１の実施の形態では、割込み禁止状態に移行した時点からの経過時間が設定時間以上になると、割込み禁止状態を解除するように設定されるが、割込み禁止状態の解除に代えて、第２の実施の形態と同様に、例外発生処理が実行されるように設定されてもよい。また第２の実施の形態では、例外発生処理に代えて、第１の実施の形態と同様に、割込み禁止状態の解除が実行されるように設定されてもよい。
【図面の簡単な説明】
【００９５】
【図１】制御本体ルーチンのプログラムの一例を示す図である。
【図２】割込みハンドラのプログラムの一例を示す図である。
【図３】図１に示す制御本体ルーチンのプログラムに割込み禁止命令および割込み禁止解除命令を付加したプログラムの一例を示す図である。
【図４】本発明の第１の実施の形態であるデータ処理装置１の構成を示すブロック図である。
【図５】本発明の第１の実施の形態における制御本体ルーチンのプログラムの一例を示す図である。
【図６】割込みマスク制御を説明するための図である。
【図７】割込み禁止付リード命令ＬＤＤＩの実行後、割込み禁止解除付ライト命令ＳＴＥＩ命令が実行された場合の時系列を示す図である。
【図８】タイマ部８のウォッチドッグタイマ９の構成を示すブロック図である。
【図９】ＬＤＤＩ命令だけを実行してＳＴＥＩ命令を実行しなかった場合の時系列を示す図である。
【図１０】本発明の第２の実施の形態であるデータ処理装置３０の構成を示すブロック図である。
【図１１】本発明の第２の実施の形態における制御本体ルーチンのプログラムの一例を示す図である。
【図１２】メモリ制御回路３１の具体的な構成を示すブロック図である。
【図１３】ＬＤ命令の実行後、ＳＴ命令が実行された場合の時系列を示す図である。
【図１４】ＬＤ命令だけを実行してＳＴ命令を実行しなかった場合の時系列を示す図である。
【符号の説明】
【００９６】
１，３０  データ処理装置、２  ＣＰＵ、３  命令メモリ、４  データメモリ、５  汎用レジスタ、６  割込み制御部、７  割込み用制御レジスタ、８  タイマ部、９  ウォッチドッグタイマ、１０  タイマ用制御レジスタ、１１  演算器ユニット、１２  ＡＬＵ、１３  ＭＰＹ、１４  シフタ、１５  外部メモリ、２０  割込みマスク制御部、２１  第１割込みマスクレジスタ、２２  第２割込みマスクレジスタ、２５  タイマ用フリップフロップ、２６  カウンタ、２７  タイマ用比較器、３１  メモリ制御回路、３２  メモリ制御用制御レジスタ、３３  メモリ制御用フリップフロップ、３４  メモリ制御用比較器。
【図１】
2009294823.tif 000006
【図２】
2009294823.tif 000007
【図３】
2009294823.tif 000008
【図４】
2009294823.tif 000009
【図５】
2009294823.tif 000010
【図６】
2009294823.tif 000011
【図７】
2009294823.tif 000012
【図８】
2009294823.tif 000013
【図９】
2009294823.tif 000014
【図１０】
2009294823.tif 000015
【図１１】
2009294823.tif 000016
【図１２】
2009294823.tif 000017
【図１３】
2009294823.tif 000018
【図１４】
2009294823.tif 000019