(57)【特許請求の範囲】
【請求項１】
アプリケーションレベルの転送命令であるオペランド属性付命令と、ハードウェアを直接制御できるレベルの命令である汎用命令とより成る統合命令コード体系に従って生成されたアプリケーションプログラムとＯＳプログラムの命令群を格納する命令格納手段と、
該命令格納手段をアドレス制御して前記アプリケーションプログラムまたはＯＳプログラムの命令を読み出し／実行させる１階層のプログラム実行制御手段と、
該１階層のプログラム実行制御手段により実行制御されるプログラムのレベルまたは処理内容あるいは構造に応じて各々定められている所定の条件が満たされるとき割込み有効とする割込み制御手段と、
を有し、アプリケーションレベルの割込み制御またはアプリケーションプログラムのデバッグを行う場合、前記割込み制御手段は、前記アプリケーションプログラムが文脈をもつ関数構造の場合には、少なくとも前記１階層のプログラム実行制御手段により読み出された命令が文脈の切れ目を示す命令であることを条件として割込み有効／無効を制御することを特徴とする情報処理装置。
【請求項２】
前記アプリケーションプログラムのデバッグにおいてＳＴＥＰ割込み制御を行う場合、前記割込み制御手段は、現在実行されている命令が実行完了しても次の命令がフェッチ完了していないとき前記命令の実行完了状態を保持しておき、フェッチ完了した次の命令が文脈の切れ目を示す命令であるときＳＴＥＰ割込処理へ移行すると共に前記実行完了状態をクリアすることを特徴とする請求項１記載の情報処理装置。
【請求項３】
アプリケーションレベルの転送命令であるオペランド属性付命令と、ハードウェアを直接制御できるレベルの命令である汎用命令とより成る統合命令コード体系に従って生成されたアプリケーションプログラムとＯＳプログラムの命令群を格納する命令格納手段と、
該命令格納手段をアドレス制御して前記アプリケーションプログラムまたはＯＳプログラムの命令を順次フェッチして、分岐制御手段により分岐制御を行うことで命令を実行させる１階層のプログラム実行制御手段と、
該１階層のプログラム実行制御手段により実行制御されるプログラムのレベルまたは処理内容あるいは構造に応じて各々定められている所定の条件が満たされるとき割込み有効とする割込み制御手段と、
を有することを特徴とする情報処理装置。
【請求項４】
アプリケーションレベルの割込み制御またはアプリケーションプログラムのデバッグを行う場合、前記割込み制御手段は、前記アプリケーションプログラムが文脈をもたない構造の場合には、少なくとも前記１階層のプログラム実行制御手段により読み出された命令に割込み有効を示すビットが付加されていることを条件として割込み有効／無効を制御することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記割込み有効を示すビットは、作成されたアプリケーションプログラムを前記オペランド属性付命令または汎用命令より成る命令群に変換する際に、予め定められた所定のルールに従って所定の命令に付加されることを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記割込み有効を示すビットは、外部の装置から有効／無効切替えを行えることを特徴とする請求項４記載の情報処理装置。
【請求項７】
ＯＳプログラムをデバッグする場合は、前記割込み制御手段は、割込み要因発生時に実行中の命令の処理完了を以て割込み有効とすることを特徴とする請求項３記載の情報処理装置。
【請求項８】
前記割込み制御手段は、致命的故障によって発生した割込み要因は無条件で割込み有効とすることを特徴とする請求項３記載の情報処理装置。
【請求項９】
前記致命的故障による割込み発生時に実行中の命令と該命令の前に実行された命令及び次に実行される命令を示す情報を保持する保持手段を更に備え、該保持手段に保持された情報に基づいて前記致命的故障の発生原因を解析させることを特徴とする請求項８の情報処理装置。
【請求項１０】
１階層のプログラム実行制御回路によって、アプリケーションレベルの転送命令であるオペランド属性付命令またはハードウェアを直接制御できるレベルの命令である汎用命令よりなるアプリケーションプログラムまたはＯＳプログラムを実行制御する情報処理装置における割込み制御方法であって、
前記オペランド属性付命令または汎用命令を１命令ずつ読み出し、少なくとも該読み出した命令が文脈の切れ目を示す命令ではないときには割込み要求が発生しても割込みを許可しないことを特徴とする割込み制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置、及びその割込み制御方法に関する。
【０００２】
【従来の技術】
情報処理装置は、一般的に、その多くがマイクロプログラム制御方式を採用している。これは、命令（マシン語）より一段下位のレベルのマイクロ命令（命令のレベルで指定する動作より簡単な基本的な動作を指定するもの）を用いて、命令で規定されている機能を実現する為の制御信号を作り出すものである。マイクロ命令は、通常、それぞれの機種に応じて決められた長さのbit 長をもち、data系のregister類等の機能ブロックとその接続関係に対応して幾つかのフィールドが定義されている。
【０００３】
図１２は、従来のマイクロプログラム制御方式による情報処理装置の構成の一例を示すブロック図であり、同図には一例としてＰＬＣ（プログラマブル・コントローラ）の構成図を示す。尚、プログラマブル・コントローラは通常ＰＣと略すが、後述するＰＣ（プログラムカウンタ）と混同するので、以後ＰＬＣというものとする。
【０００４】
同図に示すＰＬＣは、アプリケーションプログラムメモリ５０１、データメモリ５０２、マイクロ（μ）プログラムメモリ５０３、デコーダ５０４、ＰＬＲ（パイプラインレジスタ）５０５、命令フェッチ制御回路５１０、μ−ＳＱＣ（μシーケンサ）５２０、演算実行部５３０、及びデータメモリ転送制御回路５４０等より構成される。
【０００５】
アプリケーションプログラムメモリ５０１は、アプリケーションプログラムを格納するメモリである。このアプリケーションプログラムは、主にユーザ側において後述する開発ツール（プログラミングツール）を用いて設計されたプログラム（ラダー図等）が、ＰＬＣ側の変換／逆変換機能によってそのＰＬＣで実行可能な形式に変換されたものである。尚、逆変換機能は、ＰＬＣ側で得たＲＡＳデータ等を開発ツール側に送信する際、及びＰＬＣ側に格納されたプログラムを開発ツールが読み出す際等に用いられる。
【０００６】
データメモリ５０２は、アプリケーションプログラム及びＯＳ（オペレーティングシステム）において使用する各種データを格納する外部データメモリであり、例えば制御対象機器の稼働状況を示すセンサ計測値やデータ等を一時的に記憶するＲＡＭ等である。
【０００７】
マイクロ（μ）プログラムメモリ５０３は、μ−ＯＳプログラムを格納すると共にアプリケーションプログラムの命令のインタプリタを格納するメモリである。ここでμ−ＯＳプログラムについて説明しておく。ＰＬＣ内には、メーカー側で予め作成して格納しておくシステムプログラムが存在するが、このシステムプログラムがマイクロ命令レベルの命令群として格納されているものをここではμ−ＯＳプログラムと呼ぶ。
【０００８】
デコーダ５０４は、マイクロ（μ）プログラムメモリ５０３から出力されるμ命令をデコードし、演算器・データ変換器・データ転送制御部・フェッチ制御回路部及び各種Ｈ／Ｗ（ハードウェア）の制御信号を生成し、これをＰＬＲ５０５及びデータメモリ転送制御回路５４０内のＰＬＲ５４５に出力する。
【０００９】
ＰＬＲ（パイプラインレジスタ）５０５は、デコーダ５０４から出力される各種制御信号をパイプライン方式で記憶し、各種Ｈ／Ｗブロックにこれら制御信号を接続するレジスタであり、フェッチ動作（命令レジスタへの命令格納）と命令実行動作のパイプライン動作を可能にするものである。
【００１０】
命令フェッチ制御回路５１０は、アプリケーションプログラムの命令フェッチ動作を制御する回路であり、命令レジスタ５１１、ＰＣ（プログラムカウンタ）５１２、ＰＣスタック５１３、及びプログラムメモリ転送制御回路５１４より構成される。
【００１１】
命令レジスタ５１１は、上記プログラムメモリ５０１に格納されているアプリケーションプログラムを１命令ずつフェッチし出力するレジスタである。ＰＣ５１２は、次に実行すべき（あるいは実行中の）命令が記憶されているプログラムメモリ５０１のアドレスを保持し１命令実行毎に＋１インクリメントするカウンタである。ＰＣスタック５１３は、例えばサブルーチンコール時にＰＣ５１２の格納内容を一時退避させ、リターン時に退避データをＰＣ５１２に復帰させるためのスタックである。プログラムメモリ転送制御回路５１４は、後述するμ−ＯＳ（マイクロオペレーティングシステム）プログラムの制御下のもとに、上記プログラムメモリ５０１のアクセス制御及びＰＣ５１２／ＰＣスタック５１３の動作を制御する回路である。
【００１２】
μ−ＳＱＣ（マイクロシーケンサ）５２０は、マイクロプログラムの実行制御（マイクロプログラムメモリのアドレス制御）を行う回路であり、デコーダ５２１、μ−ＰＣ（マイクロプログラムカウンタ）５２２、アダー５２３、μ−ＰＣスタック５２４、ＭＰＸ（マルチプレクサ）５２５、及び割込み制御回路５２６より構成される。
【００１３】
デコーダ５２１は、命令フェッチ制御回路５１０内の命令レジスタ５１１から出力される命令をデコードし、この命令を解釈実行する処理（以後、“インタプリタ”という）が格納されているμプログラムメモリ５０３のアドレス（以後、“ＭＡＰアドレス”という）を生成／出力する。
【００１４】
μ−ＰＣ５２２は、μプログラムメモリ５０３に格納されているプログラムを順次実行していく為のＰＣ（アドレスレジスタ）であり、アダー５２３とペアで使用することにより“＋１”インクリメントするカウンタを構成する。
【００１５】
μ−ＰＣスタック５２４は、マイクロプログラムの実行処理において、サブルーチンコール時にμ−ＰＣ５２２を一時退避させ、リターン時にμ−ＰＣ５２２を復帰する為のスタックである。
【００１６】
ＭＰＸ５２５は、μプログラムメモリ５０３のアドレスを選択するマルチプレクサであり、デコーダ５２１から出力される“ＭＡＰアドレス”、μ−ＰＣ５２２からの出力（アダー５２３で＋１加算された順序アドレス）、μ−ＰＣスタック５２４から出力されるサブルーチンリターンアドレス、及び上記ＰＬＲ５０５から出力されるマイクロプログラムの分岐アドレス（ＪＭＰ、ＣＡＬＬ）の中から、選択的にμプログラムメモリ５０３（及びアダー５２３にも）へ出力する。
【００１７】
割込み制御回路５２６は、後述するアプリケーションレベルの割込み要因（デバッグ要因、タスク割込み、コマンド割込み）と、ＯＳレベルの割込み要因（ハードウェア故障等の割込み）により、それぞれの割込み処理のアドレス生成や、ＯＳの割込み処理へ移行する為の（ＭＰＸ５２５に対する）アドレス強制選択制御等を行う。割込み制御回路５２６によって行われる割込み制御方法については、後に図１７を参照して説明する。
【００１８】
演算実行部５３０は、キャッシュレジスタ間、及びＩＭＭデータ（後述する“直接数値”）とレジスタ間の各種演算及び各種データ変換を実行する機能ブロックであり、キャッシュレジスタ５３１、各種演算器・データ変換器５３２、及びＭＰＸ５３３より構成される。
【００１９】
キャッシュレジスタ５３１は、各種演算・データ変換で使用するデータを記憶したり、各種Ｈ／Ｗ（ハードウェア）レジスタ・外部メモリとのデータ転送に使用されるデータを格納するレジスタである。
【００２０】
各種演算器・データ変換器５３２は、アプリケーションプログラム及びμ−ＯＳプログラムの指示に従って、各種算術／論理演算、シフト、ＢＤＣ／ＤＢＣ等の演算・データ変換処理を行う。
【００２１】
ＭＰＸ５３３は、各種演算器・データ変換器５３２による演算結果出力とデータメモリ５０２から読み出したデータ（リードデータ）とを、選択的にキャッシュレジスタ５３１に出力する。
【００２２】
データメモリ転送制御回路５４０は、アプリケーションプログラム及びμ−ＯＳプログラムにおいて、データメモリ５０２をアクセスするときの制御を行う回路であり、アドレス生成デコード５４１、ＭＰＸ５４２、ＭＡＲ５４３、デコーダ５４４、及びＰＬＲ５４５より構成される。
【００２３】
アドレス生成デコード５４１は、命令フェッチ制御回路５１０の命令レジスタ５１１から出力されるアドレスオペランドに基づいて、不図示の記憶域に記憶されているオペランドデータ型より、アプリケーションプログラムからのデータメモリアクセス時のアドレスを生成する。
【００２４】
ＭＰＸ５４２は、μ−ＯＳプログラムがデータメモリ５０２をアクセスするアドレス（キャッシュレジスタ５３１の出力Ａ）と、アプリケーションプログラムからのデータメモリ５０２アクセス時のアドレス（アドレス生成デコード５４１の出力）を入力して、両者から選択して、ＭＡＲ５４３及びデコーダ５４４へ出力する。
【００２５】
ＭＡＲ（メモリアドレスレジスタ）５４３は、ＭＰＸ５４２から出力されるμ−ＯＳプログラムまたはアプリケーションプログラムからのデータメモリ５０２アクセス時のアドレスを記憶するレジスタである。尚、アプリケーションプログラムからのアドレス格納タイミングは、ＰＬＲ５０５への各種制御信号の格納タイミングと同時である。
【００２６】
デコーダ５４４は、上記ＭＰＸ５４２の出力を入力し、データメモリ５０２のアクセス選択信号ＣＳを生成／出力する。
ＰＬＲ５４５は、デコーダ５４４の出力（アクセス選択信号ＣＳ）とデコーダ５０４の出力（各種データメモリ転送制御信号）を、各々パイプライン方式で記憶し、これらの出力信号をデータメモリ５０２に接続するためのレジスタである。ＰＬＲ５４５は、フェッチ動作（命令レジスタへの命令格納）と転送実行動作のパイプライン動作を可能にする。
【００２７】
上記構成の従来の情報処理装置（ＰＬＣ）の動作の概要について、以下に説明する。尚、図１２にはＰＬＣの全ての構成を示しているわけではなく、また同図に示す構成ブロック間の全ての配線を示しているものでもない。
【００２８】
▲１▼まず、システムリセット解除後に、μ−ＰＣ５２２が“０”となって、μ−ＳＱＣ（マイクロシーケンサ）５２０の制御下のもとに、μプログラムメモリ５０３上のμ−ＯＳプログラムが実行されて、プロセッサ全体のＨ／Ｗ（ハードウェア）初期化が行われる。これよりアプリケーションプログラムを実行できる環境が構築され（ＰＣ５１２の初期値セット等）、システムスタートコマンド待ち状態となる。
【００２９】
▲２▼μ−ＯＳプログラムは、システムスタートコマンドを認識すると、命令フェッチ制御回路５１０にアプリケーションプログラムの実行を許可する。この時、μ−ＳＱＣ５２０は、デコーダ５２１からのアプリケーションプログラム待ち状態となる。
【００３０】
▲３▼命令フェッチ制御回路５１０は、アプリケーションプログラムメモリ５０１から、ＰＣ５１２が指示するアドレスの命令コードをフェッチし、命令レジスタ５１１に格納する。そして、ＰＣ５１２を自動的にインクリメントして、上記メモリ５０１から次の命令コードのフェッチを行う処理を繰り返す。
【００３１】
▲４▼命令レジスタ５１１より出力される命令コードは、μ−ＳＱＣ５２０のデコーダ５２１でデコードされる。これより、その命令をインタプリト実行するμプログラムメモリ上に処理アドレスが生成される。デコーダ５２１から出力されるアドレス情報は、ＭＰＸ５２５により選択出力されて、μプログラムメモリ５０３のアドレスバスに入力する。これより、μプログラムメモリ５０３から、上記命令コードに対応するμ命令が、デコーダ５０４に出力される。デコーダ５０４は、上記μ命令をデコードし、演算器・データ変換器・データ転送制御部・フェッチ制御回路部及び各種Ｈ／Ｗの制御信号を生成する。そして、ＰＬＲ５０５にこれら各種演算及び転送の制御指令がセットされ、各種Ｈ／Ｗブロックに指令が渡る。
【００３２】
▲５▼転送命令の場合は、このとき同時に、データメモリ転送制御回路５４０内のＭＡＲ５４３にデータメモリ５０２のアドレスがセットされるようになっている。また、同時に、μ−ＳＱＣ５２０の制御下のもとに、μプログラムメモリ５０３から次のμ命令の読み出しが始まる。
【００３３】
演算命令の場合は、演算実行部５３０が所定の演算を実行し、キャッシュメモリに演算結果が格納される。同時に、次のμ命令を読み出してデコーダ５０４でデコードしてＰＬＲ５０５に取り込む処理が始まる。
【００３４】
アプリケーションプログラムの分岐制御は、μ−ＯＳから命令フェッチ制御回路５１０のＰＣ５１２及びＰＣスタック５１３をレジスタアクセスすることにより行われる。
【００３５】
ところで、ここで、アプリケーションプログラムの１命令に対応するμ命令の処理が、１クロックで終る場合もあれば、複数クロックかかる場合もある。この時の、命令フェッチ制御回路５１０内の命令レジスタ５１１への命令コードの取込み、ＰＬＲ５０５へのＨ／Ｗ制御指令のセット、及び演算実行部５３０、データメモリ転送制御回路５４０の動作（キャッシュレジスタ５３１またはデータメモリ５０２へのライト動作等）のタイミングを図１３に示す。
【００３６】
図１３（ａ）は１クロックで終る場合の動作タイミング、図１３（ｂ）は複数クロックかかる場合の動作タイミングを示す。
図１３（ｂ）に示すように、複数クロック掛かる命令の一例として、例えば（＋  Ａ  Ｂ）の演算を行う場合、アプリケーションプログラムの命令コード“ＡＤＤ  Ｂ”に対応するμプログラムの命令コードは“ＬＤ  Ｂ”“ＡＤＤ”となり、２クロック掛かる。
【００３７】
尚、図１２では特に図示していないが、ＰＬＲ５０５においてあるアプリケーションプログラム命令に対応する処理が完了するときに、命令フェッチ制御回路５１０に対して命令レジスタ５１１の書き換え許可（マップ許可）が与えられるようになっており、これを図１３（ａ）、（ｂ）において＠で示している。
【００３８】
次に、従来のプログラム開発環境について説明する。
図１４は、従来のプログラムの開発ルートを説明する為の図である。
アプリケーションプログラムの開発は、主にユーザ側において、図１４（ａ）に示すアプリケーションプログラムの開発ツール５５０上でプログラマ等がプログラムを作成すると（例えばプログラミングツール上でラダー回路図等を作成すると）、そのオブジェクトが生成されて、アプリケーションプログラムメモリ５０１に格納される。このとき、メモリ５０１に格納されるアプリケーションプログラムの命令コードは、例えば図１５に示す形式となっている。これについては後に説明する。
【００３９】
一方、μプログラムの開発は、主にＰＬＣメーカー側において、図１４（ｂ）に示すシステム設計者専用のμプログラム開発ツール５６０により、システム設計者がμ−ＯＳとインタプリタをプログラミング開発すると、これらのオブジェクトが生成されて、μプログラムメモリ５０３に格納される。このとき、メモリ５０３に格納されるμ−ＯＳとインタプリタの命令コードは、例えば図１６に示す形式となっている。これについては後に説明する。尚、μ−ＯＳは各種Ｈ／Ｗ制御やアプリケーションプログラムの実行管理を行うものであり、インタプリタはアプリケーションプログラムの解釈実行を行う為のものである。
【００４０】
図１５は、従来のアプリケーションプログラムの命令コード（マシン語）の一例を示す図である。
同図において、命令コードは、基本部（３２ビット）と拡張部（３２ビット）とにより構成される。基本部は、命令種別を示すオペコード、当該命令の命令形態が基本部のみか基本部＋拡張部であるかを示す拡張ビット、データ種別及びサイズを示すデータ型、データが存在する位置及びデータのアクセス方法（間接アクセス）を示すデータ記憶域（これらをまとめてオペランド種別という）、及びアドレスまたは数値を示すオペランド（１６ビット）から構成される。
【００４１】
オペコードとしては、例えば、ＡＤＤ、ＳＵＢ、ＭＬＴ、ＢＤＣ、ＤＢＣ、ＬＤ、ＳＴ等がある。データ型としては、例えば、ビット型、ビット反転型、１語整数型、２語整数型、実数型等がある。データ記憶域には、式（または前回の演算結果値）、定数、メモリ、インデックス、メモリ間接、パラメータ等が格納される。
【００４２】
オペランドは、アドレスの場合、基本部のみのときには１６ビットアドレス、基本部＋拡張部のときには３２ビットアドレスとなる。一方、数値の場合、基本部のみのときには１６ビット直接数値、基本部＋拡張部のときには３２ビット直接数値となる。アドレスまたは数値のオペランドが１６ビットを越えた場合に、基本部＋拡張部の命令形態となる。このとき、基本部の拡張ビットは‘１’になっている。命令フェッチ制御回路５１０は、基本部の拡張ビットが‘１’であるときには、基本部と拡張部がそろった時点でこの命令コードを命令レジスタ５１１へ書込む。
【００４３】
図１６は、従来のマイクロプログラムの命令コード（マイクロ命令）の一例を示す図である。
同図に示すように、マイクロプログラムの命令コードは、μ−ＳＱＣの分岐制御、各種演算・データ転送制御、及び各種Ｈ／Ｗ制御の３つのフィールドで構成される。マイクロ命令は、通常、それぞれの機種に応じて決められた長さのビット長をもつが、一般に１ステップが約８０〜１００ビット程度の命令ビット長になっている。
【００４４】
分岐制御のフィールドは、μプログラムの命令実行順序制御（ＭＡＰ、ＣＯＮＴ、ＪＭＰ、ＣＡＬＬ、ＲＥＴ等）を行うＢＯＰ（ブランチオペレーション）、条件分岐のときの条件選択（Ｓ、Ｚ、ＣＹ、ＯＶＦ等）を行うＴＣ（テストコンディション）、ＪＭＰ、ＣＡＬＬ時のμプログラムの分岐アドレスを示すＢＲＡ（ブランチアドレス）からなる。尚、ＭＡＰは次のアプリ命令を選択させる命令であり、ＣＯＮＴは次アドレスを選択させる命令である。
【００４５】
演算・データ転送制御のフィールドは、１６ビット／３２ビット、符号の有無等を示すＭＤ（演算モード）、演算／データ変換機能の指定（ＡＤＤ、ＳＵＢ、ＭＬＴ、ＢＤＣ、ＤＢＣ等）を行うＡＦＣ（演算ファンクション）、演算時のソース／ディスティネーションレジスタ指定を行う演算ソース／ディスティネーションレジスタ（ＲＳ１、ＲＳ２、ＲＤ）、直接数値間演算時の数値データであるＩＭＭ（直接数値）、各種データ転送制御（ＲＤ、ＷＴ、転送データサイズ等）、演算／転送に必要な各種データパス上のＭＰＸの選択指令を行う各種データパス経路選択からなる。
【００４６】
各種Ｈ／Ｗ制御のフィールドは、各種周辺Ｈ／Ｗの制御に使用されるものであり、例えば各種フラグのセット／リセット等に使用される。
図１７は、割込み処理を説明する為の図である。
【００４７】
アプリケーションプログラムの実行中にプログラムの上位レベル実行割込み（タスク割込み）が発生した場合、アプリケーションプログラムのステップ実行等のデバック処理を行う場合、またはシステムコマンドによるアプリケーションプログラムの実行停止指令を受けた場合等に、μ−ＳＱＣ５２０内の割込み制御回路５２６はアプリケーションプログラムレベルの割込み要因を生成する。
【００４８】
例えば、図１７（ａ）において▲１▼、▲２▼、▲３▼で示すアプリケーションプログラムの１命令（Ｍ１、Ｍ２、Ｍ３）実行完了後のタイミングで、割込み制御処理へ移行する。このタイミングは、図１７（ｂ）に示す例では、上記１命令（Ｍ１、Ｍ２、Ｍ３）が解釈／実行されるμプログラムのインタプリタ処理において、次のアプリケーションプログラム１命令へのＭＡＰ許可（“＠”で示す）のところである。例えば命令Ｍ１に対応するμプログラムμ1、μ2、μ3 の場合には、最後のμプログラムであるμ3 のところにＭＡＰ許可（“＠”）があり、このとき上記割込み要因が生成されていれば、μ−ＳＱＣ５２０内のＭＰＸ（マルチプレクサ）５２５によって、μプログラムメモリ５０３に格納されているアプリケーションレベルの割込み処理プログラム（これはμ−ＯＳ）の先頭アドレスが指定される。これによって、μ−ＯＳによる割込み制御処理へと移行する。
【００４９】
ここで、一般に、アプリケーションレベルの割込み処理としては、以下の（１）〜（３）がある。
（１）アプリケーションプログラムのタスク割込み（定周期割込みタスク、イベント割込みタスク等）制御処理
（２）アプリケーションプログラムの各種デバック制御処理
・ステップ実行割込み
・条件一致（ＰＣ一致、実行データ転送時のデータ一致等）停止割込み
・条件一致データ収集割込み
（３）システムコマンド制御処理（アプリケーションプログラムの強制停止コマンド割込み等）
割込み制御回路５２６には、各割込みの要因情報が備えられており、発生した割込みに応じた割込み要因情報を不図示のレジスタ等にセットし、上記μ−ＯＳ内のアプリケーション割込み制御処理に移行するようにＭＰＸ５２５の出力（μプログラムメモリ５０３のアドレス）を制御する。これよりμ−ＯＳの割込み制御処理においては、上記セットされた割込み要因情報を読み出すことにより、所定の割込み制御処理を実行する。例えば、図１７（ｃ）に示すように、読み出した割込み要因情報に基づいて割込み要因を判定し、判定結果に応じた処理に移行する。“タスク割込み”と判定した場合にはタスク割込み制御を行い、別のアプリケーションプログラム処理へと移行する。“デバック処理割込み”と判定した場合には各種デバック処理（ステップなど）を行い、ＯＳ処理またはアプリケーション処理へと移行する。“ストップコマンド割込み”と判定した場合にはアプリケーションプログラム停止処理を行いＯＳのシステムコマンド待ち処理へと移行する。
【００５０】
また、割込み制御回路５２６においては、Ｈ／Ｗ（ハードウェア）故障等の重故障が発生した場合に対して、各種重故障要因情報が管理されており、ＯＳレベルでの割込み制御が行われる。すなわち、例えば図１７（ａ）、（ｂ）を例にすると、アプリケーションプログラムの１命令（Ｍ１）をインタプリタ実行途中であっても（μ２実行中であっても）、次のμ３実行前にすぐに（つまり１命令実行完了せずに）、μ−ＯＳの重故障処理へと移行する。つまり、アプリケーションプログラムの１命令完了を示す上記μプログラム処理のＭＡＰ許可（＠）のポイントであるかどうかに係わらず、μプログラム処理のいかなる所においても割込み処理が実行に移される。
【００５１】
【発明が解決しようとする課題】
上述した従来の情報処理装置では、アプリケーションプログラムをμプログラムメモリ内のインタプリタにより解釈実行している為、アプリケーションプログラムメモリの制御とμプログラムメモリの制御とを行う所謂２階層のプログラム実行制御処理系となっていた。
【００５２】
これに対して、本発明の出願人は、先出願（特願平１０−７４７６５号）において、オペランド属性付命令と汎用命令とより成る統合命令コード体系を用意し、１階層のプログラム実行制御処理系を実現することにより、小型化、高速処理、低コスト等の効果が得られる情報処理装置を提案している。
【００５３】
ここで、情報処理装置においては、多くの場合割込み処理は必要なものとなっており、上記１階層のプログラム実行制御処理系の環境下で実現できる割込み制御方法が要望されている。
【００５４】
本発明の課題は、アプリケーションプログラムとＯＳプログラムの両方を同一の実行制御回路により動作させる１階層のプログラム実行制御処理系の環境下において、アプリケーションレベルの割込みとＯＳレベルの割込みを独立に制御することができる情報処理装置、及びその割込み制御方法を提供することである。
【００５５】
【課題を解決するための手段】
本発明による情報処理装置は、アプリケーションレベルの転送命令であるオペランド属性付命令と、ハードウェアを直接制御できるレベルの命令である汎用命令とより成る統合命令コード体系に従って生成されたアプリケーションプログラムとＯＳプログラムの命令群を格納する命令格納手段と、該命令格納手段をアドレス制御して前記アプリケーションプログラムまたはＯＳプログラムの命令を順次フェッチして、分岐制御手段により分岐制御を行うことで命令を実行させる１階層のプログラム実行制御手段と、該１階層のプログラム実行制御手段により実行制御されるプログラムのレベルまたは処理内容あるいは構造に応じて各々定められている所定の条件が満たされるとき割込み有効とする割込み制御手段とを有する。
【００５６】
例えば、アプリケーションレベルの割込み制御またはアプリケーションプログラムのデバッグを行う場合、前記割込み制御手段は、前記アプリケーションプログラムが文脈をもつ関数構造の場合には、少なくとも前記１階層のプログラム実行制御手段により読み出された命令が文脈の切れ目を示す命令であることを条件として割込み有効／無効を制御する。
【００５７】
また、例えば、アプリケーションレベルの割込み制御またはアプリケーションプログラムのデバッグを行う場合、前記割込み制御手段は、前記アプリケーションプログラムが文脈をもたない構造の場合には、少なくとも前記１階層のプログラム実行制御手段により読み出された命令に割込み有効を示すビットが付加されていることを条件として割込み有効／無効を制御する。
【００５８】
あるいは、例えば、ＯＳプログラムをデバッグする場合は、前記割込み制御手段は、割込み要因発生時に実行中の命令の処理完了を以て割込み有効とする。
また、例えば、前記割込み制御手段は、致命的故障によって発生した割込み要因は無条件で割込み有効とする。
【００５９】
更に、前記致命的故障による割込み発生時に実行中の命令と該命令の前に実行された命令及び次に実行される命令を示す情報を保持する保持手段を更に備え、該保持手段に保持された情報に基づいて前記致命的故障の発生原因を解析させる。
【００６０】
【発明の実施の形態】
以下、図面を参照して、本発明の実施形態について説明する。
図１は、本発明の一実施形態の情報処理装置の構成を示すブロック図であり、ここでは一例としてＰＬＣ（プログラマブルコントローラ）の構成を示す。
【００６１】
尚、図１にはＰＬＣの全ての構成を示しているわけではなく、また同図に示す構成ブロック間の全ての配線を示しているものでもない。
同図に示すＰＬＣは、アプリケーション／ＯＳプログラムメモリ１、デコーダ２、ＰＬＲ３、デ−タメモリ４、命令フェッチ制御回路１０、演算実行部２０、及びデータメモリ転送制御回路３０等より構成される。
【００６２】
同図に示すＰＬＣの構成を図１２に示す従来のＰＬＣの構成と概略的に比較すると、従来のＰＬＣに存在したμ−ＳＱＣ５２０、μプログラムメモリ５０３は、本実施形態のＰＬＣには存在しない。本実施形態のＰＬＣの命令フェッチ制御回路１０には分岐制御を行う機能と、割込み制御を行う機能が追加されている。分岐制御を行う機能については、上記先出願（特願平１０−７４７６５号）で述べているので、ここでは特に説明しないが、概略的には、この分岐制御を行う機能と、後述する統合命令コード体系により各命令が記述されているアプリケーションプログラム、システム組込みマクロ関数、及びＯＳプログラムとにより（いずれも後述するアプリケーション／ＯＳプログラムメモリ１に共存して格納されている）、１階層のプログラム制御の処理系を実現している。
【００６３】
まず、図１に示すＰＬＣの各構成について、詳細に説明する。
アプリケーション／ＯＳプログラムメモリ１は、ＯＳプログラム、システム組込みマクロ関数、及びアプリケーションプログラムが共存して格納されるメモリ（ＲＡＭ／ＲＯＭ）である。これら各プログラム（または関数）は、統合命令コード体系に属するオペランド属性付命令または汎用命令により記述されている。
【００６４】
デコーダ２は、命令フェッチ制御回路１０内の命令レジスタ１１から出力されるオペランド属性付命令または汎用命令（これらについては後に図３を参照して詳述する）をデコードして、演算器・データ変換器・データ転送制御部・フェッチ制御回路部及び各種Ｈ／Ｗの制御信号を生成し、これをＰＬＲ３に出力する。
【００６５】
尚、オペランド属性付命令は、アプリケーションレベルの単純な転送命令であるので、デコーダ２をこの単純な転送命令に対応して転送制御信号を生成する仕様することは容易である。よって、オペランド属性付命令に関しても、命令レジスタ１１からの出力を直接デコーダ２に入力して処理させることができる。
【００６６】
ＰＬＲ（パイプラインレジスタ）３は、デコーダ２から出力される各種制御信号をパイプラインして記憶し、各種Ｈ／Ｗブロックにこれら制御信号を接続するレジスタであり、フェッチ動作（命令レジスタへの命令格納）と命令実行動作のパイプライン動作を可能にするものである。データメモリ４は、従来例のデータメモリ５０２と略同様であるので、ここでは特に説明しない。
【００６７】
命令フェッチ制御回路１０は、命令レジスタ１１、ＰＣ（プログラムカウンタ）１２、ＰＣスタック１３、プログラムメモリ転送制御回路１４、分岐制御回路１５、及び割込み制御回路１６より構成される。
【００６８】
命令レジスタ１１は、上記プログラムメモリ１に格納されているＯＳプログラム、またはシステム組込みマクロ関数、あるいはアプリケーションプログラムの命令を１命令ずつ順次フェッチして、デコーダ２、分岐制御回路１５、アドレス生成デコーダ３１に出力するレジスタである。ＰＣ１２は、分岐制御回路１５の制御に応じて、次に実行すべき（あるいは実行中の）命令が記憶されているプログラムメモリ１内のアドレスを保持する。ＰＣスタック１３は、ＰＣ１２の格納内容を一時退避させるスタックである。プログラムメモリ転送制御回路１４については特に説明しない。
【００６９】
分岐制御回路１５は、アプリケーションプログラム、ＯＳプログラム中のＪＭＰ、ＣＡＬＬ、ＲＥＴ命令等によって発生するＰＣ１２及びＰＣスタック１３の制御を、ＯＳプログラムを介在させることなく直接行えるようにする為の機能を有する。分岐制御回路１５の詳細な構成／動作については、上記先出願（特願平１０−７４７６５号）で述べているので、ここでは特に説明しない。
【００７０】
割込み制御回路１６は、詳しくは後に説明するが、アプリケーションレベルの割込み要因（デバック要因、タスク割込み、コマンド割込み）、またはＯＳレベルの割込み要因（ハードウェア故障等の割込み）に対応して、それぞれの割込み処理のアドレス生成と割込み処理へ移行する為のアドレス強制選択制御を行う回路である。
【００７１】
演算実行部２０は、キャッシュレジスタ２１、各種演算器・データ変換器２２、及びＭＰＸ２３より構成される。データメモリ転送制御回路３０は、アドレス生成デコード３１、ＭＰＸ３２、ＭＡＲ３３、デコーダ３４、及びＰＬＲ３５より構成される。演算実行部２０、データメモリ転送制御回路３０は、従来の演算実行部５３０、データメモリ転送制御回路５４０と略同様であるので、説明は省略する。
【００７２】
上記図１に示す構成のＰＬＣの動作概要について、以下に説明する。
（１）まず、最初に、システムリセット後（立ち上げ時）は、命令フェッチ制御回路１０内のＰＣ１２は‘０’となっており、これよりアプリケーション／ＯＳプログラムメモリ１のアドレス‘０’番地に格納されている命令（図２に示すＯＳプログラムの先頭命令）から順次フェッチされて命令レジスタ１１に一時記憶される。そして、このフェッチされた命令は、命令レジスタ１１からデコーダ２に出力され、デコーダ２においてデコードされて、演算器・データ変換器・データ転送制御部・フェッチ制御回路部及び各種Ｈ／Ｗ（ハードウェア）の制御信号が生成される。そして、この制御信号がＰＬＲ３を介して出力されて各種Ｈ／Ｗの制御（演算・転送等）が行われる。このようにして、順次、ＯＳプログラムの命令をフェッチして実行していくことにより、プロセッサ全体のＨ／Ｗ初期化とアプリケーションプログラムの実行環境が構築される。そして、システムのスタートコマンド待ち状態となる。
【００７３】
ＯＳプログラムの命令コードは、全て、汎用命令である。汎用命令は、基本的にはＲＩＳＣ化してあり、１クロックで処理できる。また演算実行部２０においても各種関数を１クロックで処理できる。
（２）上記のように、ＯＳプログラムによりシステムの初期化が行われた後、システムコマンドが認識されると、アプリケーションプログラムの実行に移る。すなわち、まず、アプリケーション／ＯＳプログラムメモリ１内のアプリケーションプログラムが格納されている記憶領域の先頭番地が、ＰＣ１２にセットされる。そして、このＰＣ１２にセットされたアドレスの命令から順次フェッチし実行していく。アプリケーションプログラムの命令コードは、オペランド属性付命令または汎用命令である。但し、アプリケーションプログラムの汎用命令は、ＯＳプログラムのように全ての汎用命令を用いることはできず、“汎用命令の一部”を用いることができる（特に、ＯＳプログラム専用のＨ／Ｗ資源を直接アクセスする命令は、後述するアプリケーションプログラム開発環境では生成できないようになっている）。
【００７４】
図２は、アプリケーション／ＯＳプログラムメモリ１の格納内容とプログラム開発環境を説明する為の図である。
同図に示すように、アプリケーション／ＯＳプログラムメモリ４０には、ＯＳプログラム４１、システム組込みマクロ関数４２、及びアプリケーションプログラム４３が共存して格納される。
【００７５】
ここで、ＰＬＣでは、一般的に、メーカー側でシステムプログラムを作成し装置に組込んでおく。本実施形態においても、ＯＳプログラム４１及びシステム組込みマクロ関数４２は、主にメーカー側で作成してアプリケーション／ＯＳプログラムメモリ４０に格納する。すなわち、同図に示すシステム設計者専用の開発ツール５３を用いて、システム設計者が、ＯＳプログラム、システム組込みマクロ関数より成るシステムプログラムを開発すると、そのオブジェクトが汎用命令の形式で生成され、アプリケーション／ＯＳプログラムメモリ４０に格納される。ＯＳプログラムは、各種Ｈ／Ｗ制御、アプリケーションプログラムの実行管理を行う。システム組込みマクロ関数は、アプリケーションプログラムの命令において、Ｈ／Ｗで１クロックで実行できない命令に対応して、この命令を実行させる為のアルゴリズムを組んだＯＳレベルの汎用命令列である。尚、システム設計者専用の開発ツール５３では、オペランド属性付命令を生成することもできる。これは、例えば、システム開発時に、システム設計者がオペランド属性付命令のマシン語も生成して、これをアプリケーションプログラム４３の領域に格納して、デバック確認を行うためである。
【００７６】
一方、主にユーザー側において、プログラミングツール等を用いてラダー図等でプログラムが設計され、そのオブジェクトが生成されると、このオブジェクトがＰＬＣ内のマシン語生成機能５２によって変換／逆変換処理されてオペランド属性付命令または汎用命令に変換され、これがアプリケーション／ＯＳプログラムメモリ４０に格納される。マシン語生成機能５２には、詳しくは後述するが、図４（ａ）、（ｂ）に示すアプリケーションレベル割込み制御ビット（割込み有効／無効ビット）を自動生成する機能もある。尚、図１には特に図示していないが、ＰＬＣ内には開発ツールインタフェースプロセッサが備えられており、このプロセッサによって上記変換／逆変換処理が実行される。
【００７７】
図３（ａ）、（ｂ）は、上記オペランド属性付命令と汎用命令の命令コード体系の一例を示す図であり、本実施形態において後に説明する「アプリケーションプログラムに文脈を持つ場合」に対応する命令コード体系である（尚、図３の命令コード体系は、上記先出願のものと略同様であるとも言える）。
【００７８】
図３（ａ）は、オペランド属性付命令６０の命令コード体系の一例を示す。
同図において、オペランド属性付命令６０は、基本部と拡張部より成る。基本部は、ＭＳＢビット６１、オペコード６２、拡張ビット６３、データ型６４、データ記憶域６５、及びオペランド６６より成る。ＭＳＢビット６１は、オペランド属性付命令と汎用命令とを区別するためのビットであり、例えば‘１’の場合はオペランド属性付命令、‘０’の場合は汎用命令であるものと認識される。オペコード６２は命令種別を示す。拡張ビット６３は拡張部の有／無を示す。データ型６４はデータ種別及びサイズを示す。データ記憶域６５はデータが存在する位置及びデータのアクセス方法を示す。オペランド６６はアドレスまたは数値を示す。拡張部については、ＭＳＢビット６７を除いて、図１５に示す従来の命令コードにおける拡張部と略同様である。ＭＳＢビット６７は、ＭＳＢビット６１と同じく、オペランド属性付命令と汎用命令とを区別するためのビットである。
【００７９】
図３（ｂ）は、汎用命令７０の命令コード体系の一例を示す。
汎用命令は、マイクロ命令のようにハードウェアを直接制御できるレベルの命令である。図１６に示す従来のマイクロプログラムの命令コードが水平型で８０〜１００ビット程度であったのに対し、本実施形態の汎用命令は垂直型３２ビット構造をとっている。
【００８０】
同図に示す汎用命令７０は、ＭＳＢビット７１、命令種別７２、及びオペランド部７３より成る。
ＭＳＢビット７１は、上記オペランド属性付命令６０のＭＳＢビット６１と同じく、当該命令コードがオペランド属性付命令であるか汎用命令であるかを示すビットであり、同図に示す例では汎用命令を示すビットは‘０’である。
【００８１】
命令種別７２には、演算命令、ｉＭＭ演算、転送命令、分岐命令等があり、同図には各命令種別毎のオペランド部７３の構成例を示してある。演算命令の場合にはオペランド部７３は演算種別、モード、ＲＳ１、ＲＳ２、ＲＤより構成される。同様に、オペランド部７３は、ｉＭＭ演算の場合には演算種別、モード、ＲＤ、直接数値より構成され、転送命令の場合には転送制御、パス経路選択、ＲＳ１／ＲＤ、Ｉ／Ｏレジスタアドレスより構成され、分岐命令の場合には分岐制御、条件選択、分岐アドレスより構成される。
【００８２】
図４（ａ）、（ｂ）は、後に説明する「アプリケーションプログラムに文脈を持たない場合」に対応する命令コード体系の一例を示している。
図４（ａ）において、オペランド属性付命令８０は、基本部と拡張部より成る。基本部は、ＭＳＢビット８１、オペコード８２、拡張ビット８３、データ型８４、データ記憶域８５、オペランド８６、及び割込み有効／無効ビット８９より成る。
【００８３】
割込み有効／無効ビット８９以外は上述したオペランド属性付命令６０と略同様であるので、説明は省略する。
図４（ｂ）において、汎用命令９０は、ＭＳＢビット９１、命令種別９２、オペランド部９３、及び割込み有効／無効ビット９４より成る。これも同様に、割込み有効／無効ビット９４以外は、上述した汎用命令７０と略同様であるので、説明は省略する。
【００８４】
上記割込み有効／無効ビット８９、９４は、図２のマシン語生成機能５２によりマシン語命令を生成（変換）する際に予め定められた所定のルールに従って付加されるものであり、ここでは、ビット‘１’のとき“割込み有効”、‘ビット０’のとき“割込み無効”を示すものとする。割込み有効／無効ビット８９、９４を用いる動作については、後に詳述するが、これは上記の様に「アプリケーションプログラムに文脈を持たない場合」に用いられるものである。
【００８５】
図５は、図１における割込み制御回路１６の構成の一例を示す図である。
同図には、アプリケーションプログラムに文脈を持つ場合に対応する構成を示すが、文脈を持たない場合も“）”判定部１１１を除いて略同様の構成となる。これについては後に説明する。
【００８６】
図５において、フリップフロップ（ＦＦ）101-1〜101-nは、“デバック条件割込み”、“デバックＳＴＥＰ割込み”以外の割込み要因（タスク割込み等）により発生する各割込み要求信号（割込１発生〜割込Ｎ発生）を各々入力して、割込み処理終了時に送られてくる割込解除信号（割込１解除〜割込Ｎ解除）を入力するまで、これを保持／出力する。尚、“デバック条件割込み”、“デバックＳＴＥＰ割込み”に関しては、後に図７を参照して説明する。
【００８７】
ＩＮＴ割込み要因レジスタ１０２は、“デバック条件割込み”信号、“デバックＳＴＥＰ割込み”信号、及びフリップフロップ（ＦＦ）101-1〜101-nの各々の出力を入力して一時的に記憶するレジスタ群（またはマルチプレクサ）である。
【００８８】
“デバック条件割込み”、“デバックＳＴＥＰ割込み”信号、及び各フリップフロップ（ＦＦ）101-1〜101-nの出力は、ＯＲゲート１０３に入力される。これより、ＯＲゲート１０３からは、いずれかの割込み発生時に、割込み要求信号がＡＮＤゲート１０４に出力される。
【００８９】
ＡＮＤゲート１０４は、上記割込み要求信号が発生し、且つ後述する文脈の切れ目の条件生成回路１０より出力される３つの信号が全て‘１’のときに、ｉＮＴ信号をＯＲゲート１０５に出力する。ＯＲゲート１０５は、ｉＮＴ信号と上述した以外の他の割込み要因によって発生する割込み信号を入力して、ＰＣの書換指令（ＰＣＷＴ信号）を出力する。尚、特に図示していないが、このＰＣＷＴ信号によって、ＰＣ１２の格納アドレスが割込みベクタアドレス（ＯＳによるアプリケーションレベル割込み処理の先頭番地）に書き換えられる構成となっている。また、このとき、次に実行すべきアプリケーションプログラム命令の実行アドレスは、ＰＣ１２から不図示の退避アドレスレジスタに退避され、割込み処理からの復帰時に再びＰＣ１２に書き戻される（これらはＯＳ処理により行われる）。また、上記ＯＳによるアプリケーションレベル割込み処理に移行した後は、上記ＩＮＴ割込み要因レジスタ１０２の記憶内容を読み出すことにより、ＯＳ側で割込み要因を認識できるので、この割込み要因に応じた所定の割込み処理を実行できる。
【００９０】
上記文脈の切れ目の条件生成回路１１０より出力される３つの信号について、以下に説明する。
まず、命令有無フラグ格納部１１２には、ｉＲＧ１０６に有効な命令をフェッチ完了したときに、フラグ‘１’（命令有りを示す）がセットされる。このフラグの値が、ＡＮＤゲート１０４、１１３の入力となる。
【００９１】
ＡＮＤゲート１１３には、この入力と共に上記ＰＣの書換指令信号（ＰＣＷＴ信号）が反転入力している。これより、ＡＮＤゲート１１３の出力は、ＰＣの書き換え動作が起こるとき（ＰＣＷＴ＝‘１’）、または命令有無フラグ格納部１１２に命令有無フラグ‘０’がセットされているとき（例えば未だ命令の読み出し途中等でｉＲＧ１０６に次の命令がセット完了していないとき）、‘０’出力となる。デコーダ１０７は、ＡＮＤゲート１０４の出力が‘０’のとき、強制的にＮＯＰ命令を出力するようになっている。
【００９２】
ＰＬＲ（パイプラインレジスタ）１０８は、少なくとも、デコーダ１０７から出力される信号中にＭＡＰ許可を示す信号が存在するときにＡＮＤゲート１０４にＭＡＰ信号‘１’を出力する機能を有する。すなわち、今実行するμプログラム処理が、アプリケーションプログラムの切れ目に位置する場合、すなわち従来技術で説明したＭＡＰ許可（＠）のポイントにある場合に、ＭＡＰ信号‘１’を出力する。
【００９３】
“）”判定部１１１は、ｉＲＧ１０６にセットされた命令（次命令）が文脈の切れ目を示す命令（例えば“）”）であるか否か判定し、そうである場合はＡＮＤゲート１０４に‘１’出力する。これについて、以下に、図６を参照して詳細に説明する。
【００９４】
図６は、アプリケーションプログラムに文脈を持つ場合のアプリケーションレベル割込みポイントを説明する為の図であり、同図（ａ）、（ｂ）には文脈を持つプログラム記述方式の一例としてファンクションブロック図（ＦＢ図）表現、関数表現を挙げてその割込みポイントを示し、同図（ｃ）にはこれらをマシン語命令に変換（例えば図２で説明したマシン語生成機能により変換）したときの割込みポイントを示す。尚、上記ファンクションブロック図（ＦＢ図）表現、関数表現や、後述するニーモニック言語は、ＰＬＣ（プログラマブルコントローラ）の分野で提供されているプログラム記述方式であり、これら以外にもラダー図等が一般的に知られている。よって、これら各種プログラム記述方式については、特に説明しないが、文脈を持つ場合に対応するのがＦＢ図、関数表現等であり、後述する文脈を持たない場合に対応するのがニーモニック言語等である。
【００９５】
尚、同図において、Ａ、Ｂ、Ｃ、Ｄ、Ｅは、それぞれ、演算に用いられるデータ（あるいはデータが記憶されている記憶素子）を意味する。また、マシン語命令中にある“Ｍ”は、不図示のスタックレジスタを意味するものとする。
【００９６】
図６（ａ）は、アプリケーションプログラムをファンクションブロック図表現で記述した例であり、ＡにＢを加算し（Ａ＋Ｂ）、ＣからＤを減算し（Ｃ−Ｄ）、これらの積｛（Ａ＋Ｂ）×（Ｃ−Ｄ）｝を求めた結果をＥとする処理を表している。
【００９７】
図６（ｂ）には、上記図６（ａ）と同じ処理内容を、関数表現で記述した例を示している。
図６（ａ）、（ｂ）においては、文脈の切れ目を示すポイントを▲１▼、▲２▼、▲３▼で示している。同じポイントは同じ番号で示している。例えば、図６（ａ）で▲１▼で示すポイントと、図６（ｂ）で▲１▼で示すポイントは、同じポイントである。そして、例えば図６（ｂ）に示すような関数表現による記述方式では、文脈の切れ目を示すポイントは各閉じ括弧“）”の位置である。これより、図５の“）”判定部１１１において“）”を検出することは、文脈の切れ目を示すポイント▲１▼、▲２▼、▲３▼を検出することを意味することになる。そして“）”判定部１１１は、“）”を検出する毎に‘１’出力し、このとき割込要求信号が発生していればｉＮＴ信号が出力されることになる（但し、現在実行中の処理が完了するまでは（ＭＡＰ信号‘１’となるまでは）出力されない）。
【００９８】
これは、換言すれば、“）”判定部１１１によって、文脈の切れ目を示すポイント（アプリケーションレベルの割込みポイント）にきたことが検出される毎に（“）”の１つ前の命令の処理完了を以て）アプリケーションレベルの割込み許可状態となり、このときに割込み要因が発生していれば、割込み処理が開始されることになる。
【００９９】
更に詳細に説明するならば、例えば図２の開発ツール５１上で上記図６（ｂ）に示す関数表現によるアプリケーションプログラムの記述が行われ、そのオブジェクトが生成されて本実施形態による情報処理装置（ＰＬＣ等）に転送されると、情報処理装置内のマシン語生成機能５２によって例えば図６（ｃ）左側に示すようなマシン語命令に変換される。例えば、図６（ｂ）に示す加算の関数表現（＋ＡＢ）は、マシン語生成機能５２によって、図６（ｃ）左側に示すマシン語命令「ＬＤ  Ａ  Ｍ」、「ＬＤ  Ｂ  Ｍ」、「ＡＤＤ」、「ＬＤ  “）”」に変換され、アプリケーション／ＯＳプログラムメモリ１に格納される。すなわち、本実施形態による情報処理装置のマシン語生成機能５２は、文脈の切れ目を示す部分“）”に対してマシン語命令「ＬＤ  “）”」を生成する機能を有する。尚、図６（ｃ）右側には各マシン語命令に応じて演算実行部２０で実行される処理内容を示してある。
【０１００】
そして、このプログラム実行時には、このマシン語命令が、順次、命令レジスタ１１にフェッチされ実行されていき、マシン語命令「ＡＤＤ」に対応する処理がデコーダ２及びＰＬＲ３により実行完了し且つ次命令である「ＬＤ  “）”」が命令レジスタ１１にフェッチ完了する状態になったとき、（“）”判定部１１１が次命令“）”を判定することを以て）文脈の切れ目の条件生成回路１１０からの３つの出力が全て‘１’になり、アプリケーションレベルの割込み許可状態となる。そして、このとき割込要求信号が発生していれば、ＡＮＤゲート１０４からｉＮＴ信号が出力されるので、割込み処理へと移行することになる。逆に言えば、文脈の切れ目まで処理が行われるまでは割込み要求があっても割込み許可されない。
【０１０１】
尚、図６（ｃ）左側に示す例においては、「ＳＵＢ」と「ＬＤ  “）”」の間、「ＭＬＴ」と「ＬＤ  “）”」の間においてもアプリケーションレベルの割込み許可状態となる。また、尚、「ＬＤ  “）”」は、“）”判定部１１１での判定用に追加されているマシン語命令であるので、その処理内容は“ＮＯＰ”（無処理）となるようにされている。
【０１０２】
上述したように、本実施形態による情報処理装置では、アプリケーションプログラムに文脈を持つ場合、当該アプリケーションプログラムのオブジェクトが開発ツール５１等からダウンロードしマシン語生成機能５２によりマシン語命令を生成する際に、マシン語生成機能５２は文脈の切れ目を示す命令（ＬＤ  “）”）等も生成する。そして、プログラム実行時には、この命令（ＬＤ  “）”）を利用して、割込み許可／不許可を制御する。
【０１０３】
次に、上述してあるように、特にＰＬＣにおいては、アプリケーションレベルの割込み処理には、タスク割込みの他に、各種デバック制御処理がある。デバック制御処理の割込みには、“デバック条件割込み”、“デバックＳＴＥＰ割込み”等があり、これらは図５においてはＯＲゲート１０３に入力する。
【０１０４】
尚、ここで、“デバック条件割込み”は、アプリケーションプログラムのＰＣ一致、実行アドレス一致、実行データ判定等の条件において発生するものであり、アプリケーションプログラムの実行を停止させたり、条件成立時にアプリケーションプログラムが使用する所定のデータメモリのデータを収集する為等に使用される。尚、この“デバック条件割込み”が受け付けられると、その制御は、当該割込みによって起動されるＯＳの条件一致割込み処理（特に説明しない）により行われる。
【０１０５】
また、“デバックＳＴＥＰ割込み”は、アプリケーションプログラムのＳＴＥＰ単位（例えば、図６の例では、加算、減算、乗算という関数実行の単位）が完了した時点で発生する割込みであり、ＳＴＥＰ単位でデバックを行う必要がある場合等に用いられる。尚、この“デバックＳＴＥＰ割込み”が受け付けられると、その制御は、当該割込みによって起動されるＯＳのＳＴＥＰ割込み処理（特に説明しない）により行われる。
【０１０６】
以下、図７を参照して、これらデバック割込み信号の生成回路について説明する。
図７は、アプリケーションに文脈を持つ場合の各種デバック割込み信号の生成回路の構成の一例を示す図である。
【０１０７】
同図において、デバック条件成立判定回路１２１は、上述したアプリケーションプログラムのＰＣ一致、実行アドレス一致、実行データ判定等の条件が成立するか否かを判定し、成立した場合に‘１’出力する回路である。
【０１０８】
フリップフロップ（ＦＦ）１２２は、デバック条件成立判定回路１２１においてデバック条件成立が判定され‘１’出力されると、ＯＳからの条件割込み解除指令があるまで、このデバック条件成立状態を保持するＪ／Ｋフリップフロップである。ＦＦ１２２の保持／出力は、ＡＮＤゲート１２４の一方の入力となる。
【０１０９】
デバッグコマンドレジスタ１２３は、“デバック条件割込み許可”信号、“デバッグＳＴＥＰ割込み許可”信号を入力して、これを一時保持／出力するレジスタ群である。“デバック条件割込み許可”信号の保持／出力は、ＡＮＤゲート１２４の他方の入力となる。
【０１１０】
これより、ＡＮＤゲート１２４は、デバック条件成立状態で且つデバック条件割込み許可がでたとき、デバック条件割込み信号を、図５のＯＲゲート１０３へ出力する。
【０１１１】
次に、“デバックＳＴＥＰ割込み”信号の生成について、以下に説明する。
まず、命令有無フラグ１３１、ＡＮＤゲート１３２、ｉＲＧ１３３、デコーダ１３４、“）”判定部１３５、及びＰＬＲ１３６については、図５において説明した文脈の切れ目の条件生成回路１１０に係わる構成と略同様であるので、ここでは詳しくは説明しない。尚、これら１３１〜１３６の構成は、図５の１０６〜１１３の構成をそのまま利用するものであってもよいし、新たに設けるものであってもよい。
【０１１２】
図７において、有効命令実行フラグ格納部１３７は、ｉＲＧ１３３に有効な次命令のフェッチが完了しているとき（すなわち命令有無フラグ格納部１３１の出力が‘１’のとき）であって且つＰＣ書換指令（ＰＣＷＴ）が発生していないとき‘１’となるフラグ（有効命令実行フラグ）を格納している。尚、有効命令実行フラグ＝‘１’は、次のクロックサイクルでＰＬＲ３（１３６）によって有効な命令の実行がなされることを意味する。ＰＬＲ１３６からは、マシン語の１命令に対応する処理の実行完了時に上記ＭＡＰ信号‘１’が出力される。これより、ＡＮＤゲート１３８は、現在のクロックサイクルでＰＬＲ３によるマシン語の１命令の処理が完了することが示され（ＭＡＰ信号）且つ次のクロックサイクルでＰＬＲ３によって有効命令が実行されることが示されたとき（有効命令実行フラグ）、‘１’出力する。ＡＮＤゲート１３８の‘１’出力は、ＯＲゲート１３９、１４０を介してＡＮＤゲート１２５の一方の入力となる。このときＡＮＤゲート１２５の他方の入力であるデバックＳＴＥＰ割込み許可信号が‘１’（割込み許可）である場合、ＡＮＤゲート１２５からデバックＳＴＥＰ割込み信号が出力され、図５のＯＲゲート１０３に入力する。その後は、図５に示す回路によって、所定の条件下で、ＰＣ書換指令（ＰＣＷＴ）が発生することになる。
【０１１３】
尚、ここで、ＡＮＤゲート１４１とＦＦ１４２は、ＡＮＤゲート１３８の出力が‘１’となった後にその次の命令がフェッチ未完であっても（ｉＲＧ１３３に次の命令をセット完了するまでの間）ＡＮＤゲート１３８の‘１’出力状態を保持する為の構成であり、これよりＡＮＤゲート１２５への入力を継続して‘１’にしておくことができる。詳細には、ＡＮＤゲート１３８の出力が‘１’で命令有無フラグが‘０’のときＡＮＤゲート１４１の出力が‘１’となり、ＦＦ１４２は、これを保持／出力（Ｑ）する。そして、その後は、ＡＮＤゲート１４３からＦＦ１４２のＫ入力端子に‘１’入力されるまで、すなわちｉＲＧ１３３にフェッチ完了した命令が文脈の切れ目を示す命令（上記「ＬＤ  “）”」等）であることを“）”判定部１３５が判定するまで、ＦＦ１４２は‘１’を保持／出力（Ｑ）する。
【０１１４】
また、尚、ＡＮＤゲート１４４とＦＦ１４５は、アプリケーションプログラムのＳＴＥＰ実行が完了し、次命令（上記「ＬＤ  “）”」等）がフェッチされ、ＳＴＥＰ完了によるｉＮＴ信号が生成されたことを記憶保持する回路である。上記ＦＦ１２２、ＦＦ１４５は、ＯＳが所定のデバッグ処理（ＯＳの条件割込み処理、ＳＴＥＰ割込み処理）を完了したときにＯＳから出される解除指令によりリセットされる。
【０１１５】
本実施形態の情報処理装置では、デバッグ処理時には上述したようにして“デバック条件割込み許可”信号、“デバッグＳＴＥＰ割込み許可”信号を生成して割込み処理に移行し、ＯＳプログラム内のデバッグ処理プログラムを起動する。
【０１１６】
次に、アプリケーションプログラムが文脈を持たない場合について図８を参照して説明する。
図８（ａ）にはアプリケーションプログラムが文脈を持たない場合の一例としてニーモニック表現によるプログラム記述例を示し、これに応じて生成されるマシン語とその処理内容例を図８（ｂ）に示す。
【０１１７】
例えば、図８（ａ）に示すようなニーモニック表現による命令列（「ＬＤ  Ａ」、「ＡＤＤ  Ｂ」、「ＳＵＢ  Ｃ」、「ＭＬＴ  Ｄ」、「ＳＴ  Ｅ」）によるプログラムを、図２の開発ツール５１上で作成し、そのオブジェクトを本実施例の情報処理装置にダウンロードすると、マシン語生成機能５２によって図８（ｂ）に示すように上記命令列に対応するマシン語命令が生成される。その際、本実施例の情報処理装置内のマシン語生成機能５２は、予め決められた所定のルールに従って割込み許可／不許可を示す割込み有効／無効ビットを自動生成して各マシン語命令に付加する。例えば同図に示すように、割込み許可を示すべきポイントにあるマシン語命令に割込み有効ビット‘１’を付加する。尚、他のマシン語命令に、割込み無効を示すビット‘０’を付加するようにしてもよい。
【０１１８】
上記所定のルールは、例えば、上記５つの命令の各々に対応するマシン語命令を生成する際、１つの命令に対して複数のマシン語命令が生成された場合（例えば「ＡＤＤ  Ｂ」は、「ＬＤ  Ｂ  Ｍ」と「ＡＤＤ」の２つのマシン語命令に変換されている）、最初のマシン語命令に対してのみ割込み有効ビット‘１’を付加するというルールである。尚、１つの命令に対して１つのマシン語命令が生成される場合は（例えば「ＳＴ  Ｅ  Ｍ」）、そのまま割込み有効ビット‘１’を付加する。但し、命令列の最も最初の命令（「ＬＤ  Ａ」）に対しては割込み有効ビットは付加しない。
【０１１９】
ここで、本実施例のアプリケーションプログラムが文脈を持たない場合における割込み制御回路の構成は、特に図示しないが、図５に示した文脈を持つ場合の回路構成と比べ、１つを除いて略同様である。すなわち、文脈を持たない場合の割込み制御回路は、図５に示す割込み制御回路において、“）”判定部１１１の代わりに上記割込み有効ビットの判定部を設けて成る構成である。
【０１２０】
そして、プログラム実行時には、上記マシン語命令が、順次、命令レジスタ１１にフェッチされ実行されていき、例えば、実行状況が「ＬＤ  Ａ  Ｍ」と「ＬＤ  Ｂ  Ｍ」の間にあるとき、すなわち「ＬＤ  Ａ  Ｍ」に対応する処理がデコーダ２及びＰＬＲ３により実行完了し且つ次命令である「ＬＤ  Ｂ  Ｍ」が命令レジスタ１１にフェッチされている状態であるとき、本実施例におけるアプリケーションレベルの割込みポイントとなる。このとき、上記判定部１１１の代わりに設けられた割込み有効ビットの判定部（不図示）は、命令レジスタ１１にフェッチされた次命令「ＬＤ  Ｂ  Ｍ」に付加されている割込み有効ビット‘１’を検出して、ＡＮＤゲート１０４に‘１’出力する。あとは、図５の場合と略同様に、命令有無フラグ格納部１１２に格納されているフラグが‘１’で且つＰＬＲ１０８よりＭＡＰ信号‘１’が出力されるとき割込み許可状態となり、ＯＲゲート１０３より割込要求信号が発生していれば、ＡＮＤゲート１０４よりｉＮＴ信号が出力され、所定の割込み処理へと移行する。
【０１２１】
アプリケーションプログラムが文脈を持たない場合の“デバック条件割込み”、“デバッグＳＴＥＰ割込み”に対応する回路構成についても、同様に、図７における“）”判定部１３５の代わりに上記割込み有効ビットの判定部を設けること以外は、図７の構成と略同様である。
【０１２２】
上述したように、アプリケーションプログラムが文脈を持たない場合は、アプリケーションプログラムをマシン語命令に変換する処理部であるマシン語生成機能５２に、予め決められた所定のルールに基づいて割込み許可を示す割込み有効ビットを自動生成する機能を持たせることにより、アプリケーションプログラムが文脈を持つ場合と比べ１つを除いて略同様の回路構成で、割込み制御処理を実現できるようになる。
【０１２３】
尚、上述した例では、アプリケーションプログラムの開発ツール５１からプログラムをダウンロードしマシン語生成機能５２によってマシン語を生成する際に所定のルールに従って割込み有効ビットを付加するようにしているが、これに限るものではない。システム設計者用の開発ツール５３からオペランド属性付命令及び汎用命令に付加される割込み有効ビットを自由に書き換えできるようにすることも可能である。これによって、情報処理装置内のマシン語生成機能５２が未だ開発されていない段階においても、マシン語と割込み制御回路のＨ／Ｗ（ハードウェア）検証が行える。
【０１２４】
次に、図９を参照して、ＯＳプログラムのデバッグの為のデバッグモニタ割込みの制御例について説明する。
図９は、ＯＳプログラムのデバッグモニタ割込制御回路の一例を示す図である。
【０１２５】
同図において、デバック条件成立判定回路１５１は、ＰＣ一致、実行アドレス一致、実行データ判定等の条件が成立するか否かを判定し、成立した場合に‘１’出力する回路である。
【０１２６】
フリップフロップ（ＦＦ）１５２は、デバック条件成立判定回路１５１より出力されるデバック条件成立状態‘１’を、条件割込み解除指令があるまで保持するＪ／Ｋフリップフロップである。ＦＦ１５２の保持／出力は、ＡＮＤゲート１５４の一方の入力となる。
【０１２７】
デバッグコマンドレジスタ１５３は、ＯＳデバッグ用の“デバックモニタ条件停止割込み許可”信号、“デバッグモニタＳＴＥＰ割込み許可”信号を入力して、これを一時保持／出力するレジスタ群である。“デバックモニタ条件停止割込み許可”信号の保持／出力は、ＡＮＤゲート１５４の他方の入力となる。
【０１２８】
これより、ＡＮＤゲート１５４は、デバック条件成立状態で且つＯＳのデバックモニタ条件停止割込み許可がでたとき、デバックモニタ条件割込み信号を、ＡＮＤゲート１５６へ出力する。
【０１２９】
ＡＮＤゲート１５６の他方の入力には、ＰＬＲ１６６から出力されるＭＡＰ信号が入る。尚、ここで、命令有無フラグ格納部１６１、ＡＮＤゲート１６２、ｉＲＧ１６３、デコーダ１６４、有効命令実行フラグ格納部１６５、及びＰＬＲ１６６の構成は、有効命令実行フラグ格納部１６５、及びＰＬＲ１６６の出力先が異なることを除けば、図７の命令有無フラグ格納部１３１、ＡＮＤゲート１３２、ｉＲＧ１３３、デコーダ１３４、有効命令実行フラグ格納部１３７、及びＰＬＲ１３６の構成と略同様である。また、“）”判定部１３５等は、単に、本実施例のＯＳプログラムのデバッグには関係ないので、示していないだけである。
【０１３０】
上記のように、ＡＮＤゲート１５６にはデバックモニタ条件割込み信号とＭＡＰ信号が入り、両方とも‘１’であるとき‘１’出力する。すなわち、デバックモニタ条件割込み信号が発生しても、現在あるマシン語１命令に対応してＰＬＲ３（１６６）で実行している処理が完了するまでは、ＯＳレベルの割込み信号は生成されない。尚、本実施例はＯＳプログラムを対象しているので、上記マシン語１命令は汎用命令である。
【０１３１】
ＯＲゲート１５７（多入力ＯＲゲート）には、上記ＡＮＤゲート１５６の出力と、後述するデバッグモニタＳＴＥＰ割込み信号及び当該ＳＴＥＰ割込み信号の保持／出力が入力する。ＯＲゲート１５７の出力は、Ｄフリップフロップ（ＦＦ）１５８とＡＮＤゲート１５９とにより構成される微分回路によって、１クロックパルス幅のＯＳレベル割込み信号（ＤＭｉＮＴ）にされて、ＡＮＤゲート１５９から出力される。
【０１３２】
このＯＳレベル割込み信号（ＤＭｉＮＴ）は、ＯＲゲート１６０において、他の割込み要因（ｉＮＴ信号や、その他の割込み要因）及び分岐制御回路１５等で用いられるＰＣＣＨＧ命令（詳しくは、上記先出願に記載）等とＯＲされる。そして、ＯＲゲート１６０からＰＣ書換指令（ＰＣＷＴ）が出力され、ＯＳプログラムによるＯＳレベル割込み処理ルーチン（特に説明しない）へと移行していく。
【０１３３】
一方、上記デバッグモニタＳＴＥＰ割込み信号は、ＡＮＤゲート１５５に入力する３つの信号が全て‘１’のとき生成される。すなわち、デバッグモニタＳＴＥＰ割込み許可信号‘１’、現在実行中の処理が１命令実行完了のポイントであるときＰＬＲ１６６より出力されるＭＡＰ信号‘１’、及びｉＲＧ１６３に有効な次命令がフェッチ完了したとき‘１’に切替えられる（但しＰＣ書換指令（ＰＣＷＴ）が発生していないことが条件）有効命令実行フラグ格納部１６５内の有効命令実行フラグ＝‘１’であるとき、ＡＮＤゲート１５５によりデバッグモニタＳＴＥＰ割込み信号‘１’が生成／出力される。ＡＮＤゲート１５５の出力は、ＯＲゲート１５７を介して上記微分回路（ＦＦ１５８及びＡＮＤゲート１５９）に入力され、この微分回路により１クロックパルス幅のＯＳレベル割込み信号（ＤＭｉＮＴ）が生成／出力される。一方で、ＡＮＤゲート１５５の出力は、ＪＫフリップフロップ（ＦＦ）１６７により保持／出力される。これより、当該ＦＦ１６７のＫ端子にＰＣＣＨＧ命令が入力されるまで（すなわちデバッグモニタ処理から被デバッグ処理へ移行するときまで）、ＯＲゲート１５７の出力は（その後ＡＮＤゲートの出力が‘０’になっても）継続して‘１’のままとなる。
【０１３４】
尚、ＡＮＤゲート１５４出力の“デバッグモニタ条件割込み信号”及びＦＦ１６７で保持／出力される“デバッグモニタＳＴＥＰ割込み信号”は、各々、デバッグモニタ割込み要因レジスタ１６８に入力して一時記憶される。これらは、後のＯＳデバッグモニタ処理における割込み要因解析の為に用いられる（データバスを介して読み出される）。
【０１３５】
上述したように、ＯＳプログラムのデバッグの為のＯＳレベル割込み制御においては、基本的には、現在実行中のマシン語命令の処理が完了すれば割込み処理への移行を許されることになる（ＳＴＥＰ割込みでは、更に、有効命令実行フラグが‘１’であること、すなわち次命令のフェッチ完了し且つ他割込要因等によるＰＣ書換指令が発生していないことが条件となる）。
【０１３６】
次に、情報処理装置に致命的故障（重故障）が発生した場合に対応する割込み信号（ＴＲＡＰ）の生成回路について、以下に図１０を参照して説明する。
図１０は、上記ＴＲＡＰ割込み信号生成回路の構成の一例を示す図である。
【０１３７】
同図において、ＪＫフリップフロップ１７１−１〜１７１−ｎは、各々、重故障要因を示す割込み信号（重故障１〜重故障Ｎ）を入力して、ＯＲゲート１７２及び重故障割込み要因レジスタ１７６へ保持／出力する。ＯＲゲート１７２の出力は、Ｄフリップフロップ１７３及びＡＮＤゲート１７４より構成される微分回路に入力し、この微分回路によって１クロックパルス幅の重故障割込み信号（ＴＲＡＰ）が生成／出力される。ＯＲゲート１７５には、このＴＲＡＰ信号以外に、上記ｉＮＴ、ＤＭｉＮＴ信号や、その他の割込み要因により生じる信号が入力され、いずれかの割込み信号が発生したときＰＣ書換指令（ＰＣＷＴ）が出力される。
【０１３８】
一方で、重故障割込み要因レジスタ１７６に入力された割込み信号（重故障１〜重故障Ｎ）は、ここに一時記憶され、後に起動されるＯＳ重故障割込み処理プログラムにおける要因解析処理に用いられる。
【０１３９】
上述したように、重故障割込みは、最優先で処理すべき割込みであるので、上記アプリケーションレベル、ＯＳレベルの割込み制御のように割込み有効ポイント（“）”や割込有効ビット）や１命令の処理完了を示すＭＡＰ信号が出力されるまで待たされるという様な制限はなく、直ちにＰＣ書換指令が出される。また、本実施例では、上記微分回路を設けたことにより、ＯＳの重故障処理プログラムの介在なしに、多重の重故障割込みが発生しないようにできる。
【０１４０】
尚、ＯＳプログラム（上記ＯＳ重故障割込み処理プログラム）は、故障復旧できると判断した場合は、ＪＫフリップフロップ１７１−１〜１７１−ｎのＫ入力端子に対してエラーリセット信号を送る。
【０１４１】
次に、上記のように起動されるＯＳ重故障割込み処理プログラム側で重故障発生の原因を解析できるようにする構成を図１１に示す。
図１１は、重故障発生の原因解析に用いられる構成の一例である。
【０１４２】
同図において、ＥＰＣ１８１は、ＰＣ１２より出力されるフェッチアドレス（次に命令レジスタ１１にフェッチさせる命令のメモリ１における格納アドレス）を一時記憶するレジスタ等である。ＥＰＣ１８１に一時記憶されたアドレスデータは、次のクロックサイクルでＣＰＣ１８２にシフトされ、ＥＰＣ１８１には新たなフェッチアドレスが記憶される。このとき、同時に、ＣＰＣ１８２に記憶されていたアドレスデータは、ＰＰＣ１８３にシフトされる。このように、ＣＰＣ１８２には１クロック前のフェッチアドレスが記憶され、ＰＰＣ１８３には２クロック前のフェッチアドレスが記憶される。換言すれば、ＣＰＣ１８２には現在ＰＬＲ３で実行中の命令の格納アドレスが記憶され、ＥＰＣ１８１には次に実行させる命令（命令レジスタ１１にフェッチされる命令）の格納アドレスが記憶され、ＰＰＣ１８３には前回実行された命令の格納アドレスが記憶される。
【０１４３】
ｉＥＰＣ１８４、ｉＣＰＣ１８５、ｉＰＰＣ１８６は、それぞれ、上記図１０の回路により重故障割込み信号（ＴＲＡＰ）が発生したときに、ＥＰＣ１８１、ＣＰＣ１８２、ＰＰＣ１８３に記憶されているアドレスデータを退避させる為の退避レジスタである。
【０１４４】
これによって、重故障割込み信号（ＴＲＡＰ）に応じて起動されるＯＳ重故障割込み処理プログラム側で、ｉＥＰＣ１８４、ｉＣＰＣ１８５、ｉＰＰＣ１８６に退避されたデータを読み出すことにより、どの命令で重故障が発生したか、またはどのプログラムの命令が原因となって重故障が発生したのかを解析できるようになる。
【０１４５】
尚、上述した各実施形態の説明では、アプリケーションプログラムのタスク割込み制御処理、アプリケーションプログラムの各種デバック制御処理、ＯＳプログラムのデバッグ処理、または重故障割込み処理等、各処理機能別に分けて説明しているので、便宜上、図７、図９、図１０に示す回路を、各々、「デバック割込み信号の生成回路」、「ＯＳプログラムのデバッグモニタ割込制御回路」、「ＴＲＡＰ割込み信号生成回路」と名付けて説明しているが、これらは全て図１に示す命令フェッチ制御回路１０内の割込み制御回路１６に含まれるものであってもよい。また、上述してあるように、図７、図９、図１０に示す回路は、互いに、または図５に示す回路を共有する回路構成要素を持つものであってもよい。
【０１４６】
尚、上記実施形態では、ＰＬＣを例にして説明したが、これに限るものではなく、他の情報処理装置にも適用できる。
また、本発明の割込み制御方式は、上記先出願（特願平１０−７４７６５号）において第２の実施例として説明した構成に対しても適用できる。
【０１４７】
【発明の効果】
以上、詳細に説明したように、本発明の情報処理装置、及びその割込み処理方法によれば、オペランド属性付命令と汎用命令とより成る統合命令コード体系を用意し、１階層のプログラム実行制御処理系を実現することにより、小型化、高速処理、低コスト等の効果が得られる情報処理装置において（アプリケーションプログラムとＯＳプログラムの両方を同一の実行制御回路により動作させる環境下において）、アプリケーションレベルの割込みとＯＳレベルの割込みを独立に制御することができる。
【０１４８】
また、更に、重故障割込み制御において、ＴＲＡＰ割込み時の現実行ＰＣ、前回実行ＰＣ、次回実行ＰＣの各々の退避レジスタを備え、ＯＳプログラム側で読み出すことができるようにしたことにより、プログラムのどこで異常が起こったのか、またはプログラムのどこが原因となって異常が起こったのかを解析することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態による情報処理装置の構成を示すブロック図である。
【図２】アプリケーション／ＯＳプログラムメモリの格納内容とプログラム開発環境を説明する為の図である。
【図３】「アプリケーションプログラムに文脈を持つ場合」に対応する命令コード体系の一例を示す図であり、（ａ）はオペランド属性付命令、（ｂ）は汎用命令の命令コード体系の一例を示す。
【図４】「アプリケーションプログラムに文脈を持たない場合」に対応する命令コード体系の一例を示す図である。
【図５】図１における割込み制御回路の構成の一例を示す図である。
【図６】アプリケーションプログラムに文脈を持つ場合のアプリケーションレベル割込みポイントを説明する為の図である。
【図７】アプリケーションに文脈を持つ場合の各種デバック割込み信号の生成回路の構成の一例を示す図である。
【図８】（ａ）はアプリケーションプログラムが文脈を持たない場合の一例としてニーモニック表現によるプログラム記述例を示し、（ｂ）はこれに応じて生成されるマシン語とその処理内容例を示す。
【図９】ＯＳプログラムのデバッグモニタ割込制御回路の一例を示す図である。
【図１０】ＴＲＡＰ割込み信号生成回路の構成の一例を示す図である。
【図１１】重故障発生の原因解析に用いられる構成の一例である。
【図１２】従来のマイクロプログラム処理方式による情報処理装置の構成の一例を示すブロック図である。
【図１３】（ａ）は１クロックで終る場合の動作タイミング、（ｂ）は複数クロックかかる場合の動作タイミングを示す図である。
【図１４】従来のプログラムの開発ルートを説明する為の図である。
【図１５】従来のアプリケーションプログラムの命令コード（マシン語）の一例を示す図である。
【図１６】従来のマイクロプログラムの命令コードの一例を示す図である。
【図１７】割込み処理を説明する為の図である。
【符号の説明】
１  アプリケーション／ＯＳプログラムメモリ
２  デコーダ
３  ＰＬＲ
４  データメモリ
１０  命令フェッチ制御回路
１１  命令レジスタ
１２  ＰＣ（プログラムカウンタ）
１３  ＰＣスタック
１４  プログラムメモリ転送制御回路
１５  分岐制御回路
１６  割込み制御回路
２０  演算実行部
２１  キャッシュレジスタ
２２  各種演算器／データ変換器
２３  ＭＰＸ
３０  データメモリ転送制御回路
３１  アドレス生成デコーダ
３２  ＭＰＸ
３３  ＭＡＲ
３４  デコーダ
３５  ＰＬＲ
４０  プログラムメモリ
４１  ＯＳプログラム
４２  システム組込みマクロ関数
４３  アプリケーションプログラム
５１  開発ツール
５２  マシン語生成機能
５３  開発ツール（システム設計者専用）
６０  オペランド属性付命令（文脈を持つ場合）
６１  ＭＳＢビット
６２  オペコード
６３  拡張ビット
６４  データ型
６５  データ記憶域
６６  オペランド
７０  汎用命令（文脈を持つ場合）
７１  ＭＳＢビット
７２  命令種別
７３  オペランド部
８０  オペランド属性付命令（文脈を持たない場合）
８１  ＭＳＢビット
８２  オペコード
８３  拡張ビット
８４  データ型
８５  データ記憶域
８６  オペランド
８７  割込み有効／無効ビット
９０  汎用命令（文脈を持たない場合）
９１  ＭＳＢビット
９２  命令種別
９３  オペランド部
９４  割込み有効／無効ビット
１０１−１〜１０１−ｎ  フリップフロップ（ＦＦ）
１０２  ｉＮＴ割込み要因レジスタ
１０３  ＯＲゲート
１０４  ＡＮＤゲート
１０５  ＯＲゲート
１０６  ｉＲＧ
１０７  デコーダ
１０８  パイプラインレジスタ（ＰＬＲ）
１１０  文脈の切れ目の条件生成回路
１１１  “）”判定部
１１２  命令有無フラグ格納部
１１３  ＯＲゲート
１２１  デバッグ条件成立判定回路
１２２  ＦＦ
１２３  デバッグコマンドレジスタ
１２４、１２５  ＡＮＤゲート
１３１  命令有無フラグ格納部
１３２  ＡＮＤゲート
１３３  ｉＲＧ
１３４  デコーダ
１３５  “）”判定部
１３６  ＰＬＲ
１３７  有効命令実行フラグ格納部
１３８  ＡＮＤゲート
１３９、１４０  ＯＲゲート
１４１  ＡＮＤゲート
１４２、１４５  ＦＦ（ＪＫフリップフロップ）
１４３、１４４  ＡＮＤゲート
１５１  デバッグ条件成立判定回路
１５２、１６７  ＪＫフリップフロップ（ＦＦ）
１５３  デバッグコマンドレジスタ
１５４、１５５、１５６、１５９  ＡＮＤゲート
１５７  ＯＲゲート
１５８  Ｄフリップフロップ（ＦＦ）
１６０  （多入力）ＯＲゲート
１６１  命令有無フラグ格納部
１６２  ＡＮＤゲート
１６３  ｉＲＧ
１６４  デコーダ
１６５  有効命令実行フラグ格納部
１６６  ＰＬＲ
１６８  デバッグモニタ割込み要因レジスタ
１７１−１〜１７１−ｎ  ＪＫフリップフロップ（ＦＦ）
１７２  ＯＲゲート
１７３  Ｄフリップフロップ（ＦＦ）
１７４  ＡＮＤゲート
１７５  ＯＲゲート
１７６  重故障割込み要因レジスタ
１８１  ＥＰＣ
１８２  ＣＰＣ
１８３  ＰＰＣ
１８４  ｉＥＰＣ
１８５  ｉＣＰＣ
１８６  ｉＰＰＣ
【図１】
0003716635.tif 000002
【図２】
0003716635.tif 000003
【図３】
0003716635.tif 000004
【図４】
0003716635.tif 000005
【図５】
0003716635.tif 000006
【図６】
0003716635.tif 000007
【図７】
0003716635.tif 000008
【図８】
0003716635.tif 000009
【図９】
0003716635.tif 000010
【図１０】
0003716635.tif 000011
【図１１】
0003716635.tif 000012
【図１２】
0003716635.tif 000013
【図１３】
0003716635.tif 000014
【図１４】
0003716635.tif 000015
【図１５】
0003716635.tif 000016
【図１６】
0003716635.tif 000017
【図１７】
0003716635.tif 000018