(57)【特許請求の範囲】
【請求項１】
分岐元プログラムに基づいて周辺装置に対して操作指示信号を与え、前記分岐元プログラム中の分岐命令に基づいて実行するプログラムを分岐先プログラムに切り替える分岐動作を行うプログラム実行部と、
前記分岐命令が実行されたことを示す分岐要求信号と、前記周辺装置において行われている操作が実行中であるか否かを示す周辺装置状態通知信号と、が入力される分岐待ち合せ操作部と、を有し、
前記分岐待ち合せ操作部は、
前記周辺装置状態通知信号が前記周辺装置の操作が実行中であること示すアクティブ状態である期間に前記分岐要求信号が入力された場合に、前記プログラム実行部に対して前記分岐動作の待機を指示する命令発行停止信号を出力するデータ処理装置。
【請求項２】
前記プログラム実行部は、前記命令発行停止信号による前記分岐動作の待機が解除された後に前記分岐動作を実行する請求項１に記載のデータ処理装置。
【請求項３】
前記プログラム実行部は、前記命令発行停止信号が前記分岐動作の待機を指示している期間に、前記周辺装置において処理の例外が発生したことを通知する例外通知信号を受信した場合、前記命令発行停止信号による前記分岐動作の待機の解除に基づき前記分岐動作の前に前記例外通知信号に基づく例外処理を実行する請求項１又は２に記載のデータ処理装置。
【請求項４】
前記分岐待ち合せ操作部は、前記周辺装置状態通知信号が前記アクティブ状態である期間に、前記周辺装置とは別のブロックとして設けられる割り込み制御部から出力される割り込み要求信号により割り込み処理が発生したことが通知された場合にも前記命令発行停止信号を出力する請求項１乃至３のいずれか１項に記載のデータ処理装置。
【請求項５】
前記周辺装置状態通知信号は、前記操作指示信号にもとづき動作する複数の周辺装置がある場合、前記複数の周辺装置の少なくとも１つが操作を実行中であることを示す場合にアクティブ状態となる請求項１乃至４のいずれか１項に記載のデータ処理装置。
【請求項６】
分岐元プログラムに基づいて周辺装置に対して操作指示信号を与え、前記分岐元プログラム中の分岐命令に基づいて実行するプログラムを分岐先プログラムに切り替える分岐動作を行うデータ処理装置の制御方法であって、
前記分岐命令が実行されたことを示す分岐要求信号と、前記周辺装置において行われている操作が実行中であるか否かを示す周辺装置状態通知信号と、を受信し、
前記周辺装置状態通知信号が前記周辺装置の操作が実行中であること示すアクティブ状態である期間に前記分岐要求信号が入力された場合に、前記分岐動作を待機させるデータ処理装置の制御方法。
【請求項７】
前記データ処理装置は、前記分岐動作の待機が解除された後に前記分岐動作を実行する請求項６に記載のデータ処理装置の制御方法。
【請求項８】
前記データ処理装置は、前記分岐動作の待機が指示されている期間に、前記周辺装置から処理の例外が発生したことが通知された場合、前記分岐動作の待機の解除に基づき前記分岐動作の前に前記周辺装置に対する例外処理を実行する請求項６又は７に記載のデータ処理装置の制御方法。
【請求項９】
前記周辺装置状態通知信号が前記アクティブ状態である期間に、前記周辺装置とは別のブロックとして設けられる割り込み制御部から出力される割り込み要求信号により割り込み処理が発生したことが通知された場合にも前記分岐動作を待機させる請求項６乃至８のいずれか１項に記載のデータ処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置及びデータ処理装置の制御方法に関し、特に、実行するプログラムに基づいて周辺装置に対して操作指示信号を与え、分岐指示信号を受けて分岐動作を実行するプログラム実行部を備えるデータ処理装置及びデータ処理装置の制御方法に関する。
【背景技術】
【０００２】
近年、マイコン等のデータ処理装置では、処理性能を向上させるために、プログラムの並列処理が行われている。例えば、データ処理装置では、プログラムに基づき命令を実行するプログラム実行部と、プログラム実行部からの操作指示に基づき動作する周辺装置（例えばコプロセッサ）とを有する。そして、プログラム実行部において実行中のプログラムにおいてコプロセッサを利用する命令が生じた場合に、プログラム実行部は、コプロセッサに操作指示を出すとともに、その操作指示に続く命令を実行する。このような構成とすることで、プログラム実行部とコプロセッサは、互いに並列に処理を実行することができる。このような並列処理を行うデータ処理装置の一例が特許文献１に開示されている。
【０００３】
特許文献１に開示されているデータ処理装置１００のブロック図を図８に示す。図８に示すように、データ処理装置１００は、ＣＰＵ（Central?Processing?Unit）１０１、コプロセッサ１０２、主記憶装置１０３、アドレスバス１０４、データバス１０５を有している。データ処理装置１００は、ＣＰＵ１０１、コプロセッサ１０２、主記憶装置１０３がそれぞれアドレスバス１０４及びデータバス１０５を介して互いに接続される。アドレスバス１０４は、データの送受信先を示すアドレスを転送するバスである。データバス１０５は、送受信するデータを転送するバスである。データ訴処理装置１００では、主記憶装置１０２に格納されているプログラムをＣＰＵ１０が実行する。また、ＣＰＵ１０１は、プログラムに応じてコプロセッサ１０２に対する操作指示を出力する。コプロセッサ１０２は、ステータスポート１２１、コマンドポート１２２、オペランドポート１２３、実行ユニット１２４を有する。ステータスポート１２１は、コプロセッサ１０２の実行処理の結果、例外が発生した場合にその内容をＣＰＵ１０１に出力するポートである。コマンドポート１２２は、コプロセッサ１０２に対する命令の内容をＣＰＵ１０１が書き込むためのポートである。オペランドポート１２３は、コプロセッサ１０２の処理において必要なオペランドデータをＣＰＵ１０１が与える必要があるとき、又は、コプロセッサ１０２からＣＰＵ１０１に書き戻す必要があるときに用いるポートである。実行ユニット１２４は、コマンドポート１２２、オペランドポート１２３を介して与えられるデータに基づき処理を実行する。そして、実行ユニット１２４は、処理の実行状態に応じて、ＣＰＵ１０１に対してＣＰＥＮＤ信号、ＣＰＥＲＲ信号、ＢＵＳＹ信号を出力する。
【０００４】
データ処理装置１００の動作を示すタイミングチャートを図９に示す。図９に示すように、ＣＰＵ１０１は、コプロセッサ１０２に対して転送すべき命令が発生すると、アドレスバス１０４を用いてコマンドポート１２２を指定し、データバス１０５を介してコマンドポート１２２にオペランドコードを送信する。そして、コプロセッサ１０２では、ＢＵＳＹ信号をアクティブにして、ＣＰＵ１０１から送信されるオペランドコードを受信し、処理を開始する。また、コプロセッサ１０２は、オペランドコードの受信が正しく完了したことをＣＰＥＲＲ信号をインアクティブにすることでＣＰＵ１０１に通知する。一方、ＣＰＵ１０１では、コプロセッサに対する命令発行が完了すると、次のプログラム処理を続ける。このように、データ処理装置１００では、コプロセッサ１０２に命令を転送した後に、ＣＰＵ１０１がプログラムの処理を継続することで、ＣＰＵ１０１とコプロセッサ１０１の並列処理を実現する。
【０００５】
また、データ処理装置１００のコプロセッサ１０２において実行されている処理で例外が発生した場合のデータ処理装置１００の動作について説明する。図９に示すように、コプロセッサ１０２において実行されている処理において例外が発生すると、コプロセッサは例外をステータスポート１２１に保留した状態で休止した状態となる。このような場合であっても、ＣＰＵ１０１は、コプロセッサ１０２に対して転送すべき命令が発生すると、アドレスバス１０４を用いてコマンドポート１２２を指定し、データバス１０５を介してコマンドポート１２２にオペランドコードを送信する。そして、コプロセッサ１０２では、ＢＵＳＹ信号をアクティブにして、ＣＰＵ１０１から送信されるオペランドコードを受信する。しかし、この場合、コプロセッサ１０２は、例外が前の処理において発生しているためＣＰＥＲＲ信号をアクティブに保つ。また、ＣＰＵ１０１は、オペランドコードの転送時に、コプロセッサ１０２が出力するＣＰＥＮＤ信号がインアクティブであることを読み取り、コプロセッサ１０２の処理が未だ完了していないことを認識する。そして、ＣＰＵ１０１は、ＢＵＳＹ信号の立ち上がりに応じて、アドレスバス１０４を用いてステータスポート１２１を指定し、データバス１０５を介してステータス情報を読み取る。これにより、ＣＰＵ１０１は、コプロセッサ１０２において前回処理した内容に関し例外が発生していることを認識し、前回処理に対する例外処理を行う。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、データ処理装置では、分岐動作によって実行するプログラムを現在実行中のプログラムとは異なるプログラムに切り替えることがある。この分岐動作が行われる前に実行されていたプログラムを分岐元プログラムと称し、分岐動作によって新たに実行されるプログラムを分岐先プログラムあるいは割り込みプログラムと称す。このように、分岐動作が行われるデータ処理装置では、分岐元プログラムが指示した周辺装置に対する命令に関して例外が発生し、その例外通知を分岐先プログラムの実行中に受け取った場合、データ処理装置が本来正常に動作している分岐先プログラムに異常が発生していると誤認識する場合がある。
【０００７】
また、データ処理装置において実行されている分岐先プログラムがクリティカルセクションと呼ばれる割り込み禁止状態で動作している場合、図１０のプログラム処理フローに示す問題が発生する。この場合、分岐先プログラムのクリティカルセクションの終了後にその例外処理が行われる。また、コプロセッサは例外発生と同時に休止状態となる。そのため、クリティカルセクションで動作する割り込みプログラムが例外を通知したコプロセッサを利用する場合、割り込みプログラムはコプロセッサに正しくアクセスできない。そのため分岐先プログラムは、誤った処理結果を出力することがある。このように、分岐先プログラムが誤った処理結果を出力した場合、誤った処理結果によってメモリ上に格納されたデータが破壊されてしまうことがある。データが破壊された場合、データの復旧は困難であるため、データ処理装置の動作を復旧するためにはリセット等の初期化を実行しなければならない。このように、データ処理装置では、周辺装置において発生した例外が分岐先プログラムや割り込みプログラムの実行中に通知された場合、分岐先プログラムや割り込みプログラムの処理を正しく終了できない、あるいは、分岐元のプログラムの不具合が分岐先プログラムや割り込みプログラムに伝搬する問題がある。
【０００８】
特許文献１に記載のデータ処理装置１００においてされる例外通知は、このようなプログラムの分岐動作を考慮していないため、データ処理装置１００では上述した問題が発生する。つまり、データ処理装置１００では、プログラムの分岐動作と、そのときに発生する例外処理との関係により、分岐動作に関する信頼性を確保できない問題がある。
【課題を解決するための手段】
【０００９】
本発明の一態様は、実行するプログラムに基づいて周辺装置に対して操作指示信号を与え、分岐指示信号を受けて分岐動作を実行するプログラム実行部と、前記分岐指示信号と、前記周辺装置において行われている操作が実行中であるか否かを示す周辺装置状態通知信号と、が入力される分岐待ち合せ操作部と、を有し、前記分岐待ち合せ部は、前記周辺装置状態通知信号が前記周辺装置の操作が実行中であること示すアクティブ状態である期間に前記分岐指示信号が入力された場合に、前記プログラム実行部に対して前記分岐動作の待機を指示する命令発行停止信号を出力するデータ処理装置である。
【００１０】
また、本発明の別の態様は、実行するプログラムに基づいて周辺装置に対して操作指示信号を与え、分岐指示信号を受けて分岐動作を実行するデータ処理装置の制御方法であって、前記分岐指示信号と、前記周辺装置において行われている操作が実行中であるか否かを示す周辺装置状態通知信号と、を受信し、前記周辺装置状態通知信号が前記周辺装置の操作が実行中であること示すアクティブ状態である期間に前記分岐指示信号が入力された場合に、前記分岐動作の待機をさせるデータ処理装置の制御方法である。
【００１１】
本発明におけるデータ処理装置及びデータ処理装置の制御方法によれば、周辺装置が処理を実行している間に分岐動作が発生した場合であっても、周辺装置における処理が完了するまでは分岐動作が待機される。つまり、本発明におけるデータ処理装置及びその制御方法では、分岐動作のあとに例外が通知されることがない。従って、本発明におけるデータ処理装置及びその制御方法は、分岐先プログラム又は割り込みプログラムが分岐元プログラムの不具合に基づき誤動作することがない。
【発明の効果】
【００１２】
本発明におけるデータ処理装置及びその制御方法によれば、データ処理装置の分岐動作に関する動作の信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００１３】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。図１に本実施の形態にかかるデータ処理装置１のブロック図を示す。図１に示すように、データ処理装置１は、ＣＰＵ１０、コプロセッサ２０、メモリコントローラ３０、ＯＲ回路４０、割り込み制御部５０を有している。本実施の形態では、ＣＰＵ１０、コプロセッサ２０、メモリコントローラ３０、ＯＲ回路４０、割り込み制御部５０は、それぞれ個別の半導体基板上に形成されているものとして説明する。しかし、本実施の形態は、ＣＰＵ１０、コプロセッサ２０、メモリコントローラ３０、ＯＲ回路４０、割り込み制御部５０が１つの半導体基板上に形成されるものを除外するものではない。つまり、本発明は、１つの半導体基板上にＣＰＵ１０、コプロセッサ２０、メモリコントローラ３０、ＯＲ回路４０、割り込み制御部５０のいずれが組み合わされて形成されていても適用可能である。また、以下の説明では、周辺装置として、コプロセッサ２０とメモリコントローラ３０とを用いるが、周辺装置はこれに限られるものではない。
【００１４】
ＣＰＵ１０は、図示しないメモリ又は記憶装置からプログラムを読み出し、読み出したプログラムに基づき命令を実行する。ＣＰＵ１０は、プログラム実行部１１、分岐待ち合せ操作部１５を有しいている。さらに、プログラム実行部１１は、命令発行部１２、主命令実行部１３、分岐命令実行部１４を有している。命令発行部１２は、プログラムに基づき次に実行する命令を選択し、主命令実行部１３及び分岐命令実行部１４に選択した命令を命令発行信号として発行する。また、命令発行部１２は、分岐指示信号Ａ（例えば、分岐要求信号）、分岐指示信号Ｂ（例えば、割り込み要求信号）又は、システムコールが入力され、分岐指示信号Ａ又は分岐指示信号Ｂに基づき実行するプログラムを切り替える分岐動作を行う。さらに、命令発行部１２には、例外通知信号と命令発行停止信号が入力される。例外通知信号が入力された場合、命令発行部１２は、例外通知をした処理に関する例外処理を行う。また、命令発行部１２は、命令発行停止信号に基づき命令発行を待機する。なお、以下の説明では、システムコールにつての説明は省略するが、システムコールは分岐命令の１つであって、プログラム実行部１１において実行されているプログラムがＯＳ（Operating System）等の複数のプログラムにおいて共通に用いられる管理プログラムの機能を呼び出すときに生成されるものである。
【００１５】
分岐待ち合せ制御部主命令実行部１３は、命令発行部１２が発行する命令のうち分岐命令以外の命令を実行する。また、主命令実行部１３は、命令の種類に応じてコプロセッサ２０及びメモリコントローラ３０に操作指示を与える操作指示信号を出力する。分岐命令実行部１４は、命令発行部１２から出力される命令が分岐命令であった場合に、分岐先プログラムのアドレスと分岐命令を実行したことを通知する分岐要求信号を出力する。この分岐要求信号はプログラム実行部１１及び分岐待ち合せ操作部１５に送信される。
【００１６】
待ち合せ操作部１５は、分岐指示信号と、周辺装置において行われている操作が実行中であるか否かを示す周辺装置状態通知信号と、例外通知信号とが入力される。そして、分岐待ち合せ部１４は、周辺辺装置状態通知信号が周辺装置の操作が実行中であることを示している周辺装置処理期間に分岐指示信号が入力された場合には、プログラム実行部１１に対して分岐動作の待機を指示する命令発行停止信号を出力する。なお、分岐指示信号には、分岐命令実行部１４が出力する分岐要求信号と、割り込み制御部５０が出力する割り込み要求信号が含まれるものとする。また、以下の説明では、命令発行停止信号が分岐動作の待機を指示する状態を命令発行停止信号のアクティブ状態とし、命令発行停止信号が分岐動作の待機の解除を指示する状態を命令発行停止信号のインアクティブ状態とする。
【００１７】
コプロセッサ２０は、主命令実行部１３から出力される操作指示信号に基づきＣＰＵ１０とは異なる処理を行う。例えば、コプロセッサ２０では、浮動小数点演算が行われる。そして、コプロセッサ２０は、処理の実行中にアクティブ状態となる操作中信号Ａを出力する。また、コプロセッサ２０は、実行する処理において例外が発生した場合、例外が発生したことを例外通知信号をアクティブにすることでＣＰＵ１０に通知する。
【００１８】
メモリコントローラ３０は、主命令実行部１３から出力される操作指示信号に基づき図示しないメモリへのデータの書き込み又はメモリからのデータの読み出しを行う。そして、メモリコントローラ３０は、処理の実行中にアクティブ状態となる操作中信号Ｂを出力する。また、メモリコントローラ３０は、実行する処理において例外が発生した場合、例外が発生したことを例外通知信号をアクティブにすることでＣＰＵ１０に通知する。
【００１９】
ＯＲ回路４０は、操作中信号Ａ、Ｂが入力され、操作中信号Ａ、Ｂの少なくとも一方がアクティブ状態である場合にアクティブ状態を示す周辺装置状態通知信号を出力する。この周辺装置状態通知信号は、ＣＰＵ１０の分岐待ち合せ操作部１５に入力される。割り込み制御部５０は、図示しない他の周辺装置から出力される割り込み要求信号に基づき、ＣＰＵ１０に与える割り込み要求信号を出力する。
【００２０】
次に、本実施の形態におけるデータ処理装置１の動作について説明する。以下の説明では、プログラム実行部１１が分岐指示信号に基づき分岐動作を行ない、実行するプログラムを切り替える場合について説明する。以下の説明では、分岐指示信号のうち分岐要求信号に基づき分岐動作が行われる例について説明するが、割り込み要求信号に基づき分岐動作が行われる場合であっても、実質的に同じ動作となる。ここで、分岐動作によるプログラムの切り替わりにおいて、分岐動作の前に実行されているプログラムを分岐元プログラムと称す。また、分岐動作後に実行されるプログラムを分岐先プログラムと称す。
【００２１】
データ処理装置１の動作の第１の動作例の説明として、分岐要求信号により分岐動作が行なわれる場合におけるデータ処理装置１のプログラムの処理フローを図２に示す。図２に示すように、データ処理装置１では、プログラム実行部１１において処理されている分岐元プログラムに基づきコプロセッサ命令が発行されるとコプロセッサ２０に操作指示が通知される。そして、この操作指示に基づきコプロセッサ２０が操作を開始する。このとき、プログラム実行１１では、コプロセッサ２０で行なわれている処理と並列に分岐元プログラムが処理されており、分岐元プログラムにおいてメモリ操作命令が発行されるとメモリコントローラ３０に操作指示が通知される。そして、この操作指示に基づきメモリコントローラ３０が操作を開始する。このとき、このとき、プログラム実行１１では、コプロセッサ２０で行なわれている処理と並列に分岐元プログラムが処理され、プログラム実行部１１ではメモリ操作命令に続く分岐命令が実行される。
【００２２】
この分岐命令に基づき分岐命令実行部１４は、分岐要求信号を出力する。この分岐要求信号は、命令発行部１２に通知され、命令発行部１２は、分岐要求信号に基づき分岐先プログラムの命令を発行する準備をする。しかし、本実施の形態では、コプロセッサ２０又はメモリコントローラ３０が動作している期間に分岐要求信号が発生すると分岐待ち合せ操作部１５が命令発行部１２に対してアクティブ状態の命令発行停止信号を出力するため、命令実行部１２は、分岐先プログラムに基づく命令の発行を待機させる。そして、コプロセッサ２０及びメモリコントローラ３０の動作が完了すると、命令発行停止信号がインアクティブ状態となるため、これに応じて命令発行部１２は、準備していた分岐先プログラムの命令を発行する。
【００２３】
ここで、第１の動作例における処理フローを更に詳しく説明するために、第１の動作例におけるデータ処理装置１の動作を示すタイミングチャートを図３に示す。図３では、データ処理装置１において実行されるプログラムにおける命令処理の時間単位をサイクルで示した。
【００２４】
図３に示すように、サイクル１で、プログラム実行部１１においてコプロセッサ命令が実行されると、サイクル２からコプロセッサ２０の操作が開始され、コプロセッサ２０の操作中信号Ａがインアクティブ状態からアクティブ状態になる。図３に示す例では、コプロセッサ２０の操作はサイクル４までかかるものとする。そのため、コプロセッサ２０の操作中信号Ａはサイクル２からサイクル４までの期間にアクティブ状態となる。なお、第１の動作例では、コプロセッサ２０は例外を発生しないため、コプロセッサ２０の例外通知信号はインアクティブ状態を維持する。
【００２５】
次に、サイクル２で、プログラム実行部１１においてメモリ操作命令が実行されると、サイクル３からメモリコントローラ３０の操作が開始され、メモリコントローラ３０の操作中信号Ｂがインアクティブ状態からアクティブ状態になる。図３に示す例では、メモリコントローラ３０の操作はサイクル５までかかるものとする。そのため、メモリコントローラ３０の操作中信号Ｂはサイクル３からサイクル５までの期間にアクティブ状態となる。なお、第１の動作例では、メモリコントローラ３０は例外を発生しないため、メモリコントローラ３０の例外通知信号はインアクティブ状態を維持する。
【００２６】
そして、サイクル３で、プログラム実行部１１において分岐命令が実行される。この分岐命令の実行に伴いサイクル３で分岐要求信号がインアクティブ状態からアクティブ状態になる。また、分岐命令の実行に伴い、命令発行部１２はサイクル４から分岐先プログラムの命令を発行するために、分岐先プログラムの命令発行準備をする。このとき、サイクル２からサイクル５の期間は操作中信号Ａ、Ｂとに基づき周辺装置状態通知信号がアクティブ状態であるため、分岐待ち合せ操作部１５はサイクル４から命令発行停止信号をインアクティブ状態からアクティブ状態に切り替える。従って、サイクル４では、命令発行部１２は、準備した分岐先プログラムの発行を待機させる。
【００２７】
その後、サイクル４でコプロセッサ２０の操作が完了し、サイクル５でメモリコントローラ３０の操作が完了するため、サイクル６では周辺装置状態通知信号がインアクティブ状態となる。そのため、サイクル６では命令発行停止信号がインアクティブ状態となる。この命令発行停止信号のインアクティブ状態への切り替わりに応じて、命令発行部１２は分岐先プログラムの命令を発行し、プログラム実行部１１では分岐先プログラムに基づく動作が開始される。
【００２８】
図２、３に示す第１の動作例では、コプロセッサ２０及びメモリコントローラ３０のいずれも例外を発生させることなく操作を完了した場合の例について説明した。以下では、図２及び図３に示した動作に対して、メモリコントローラ３０において例外が発生する第２の動作例について説明する。第２の動作例にかかるプログラム処理フローを図４に示す。
【００２９】
図４に示すように、データ処理装置１では、プログラム実行部１１において処理されている分岐元プログラムに基づきコプロセッサ命令が発行されるとコプロセッサ２０に操作指示が通知される。そして、この操作指示に基づきコプロセッサ２０が操作を開始する。このとき、プログラム実行１１では、コプロセッサ２０で行なわれている処理と並列に分岐元プログラムが処理されており、分岐元プログラムにおいてメモリ操作命令が発行されるとメモリコントローラ３０に操作指示が通知される。そして、この操作指示に基づきメモリコントローラ３０が操作を開始する。このとき、このとき、プログラム実行１１では、コプロセッサ２０で行なわれている処理と並列に分岐元プログラムが処理され、プログラム実行部１１ではメモリ操作命令に続く分岐命令が実行される。
【００３０】
この分岐命令に基づき分岐命令実行部１４は、分岐要求信号を出力する。この分岐要求信号は、命令発行部１２に通知され、命令発行部１２は、分岐要求信号に基づき分岐先プログラムの命令を発行する準備をする。しかし、本実施の形態では、コプロセッサ２０又はメモリコントローラ３０が動作している期間に分岐要求信号が発生すると分岐待ち合せ操作部１５が命令発行部１２に対してアクティブ状態の命令発行停止信号を出力するため、命令実行部１２は、分岐先プログラムに基づく命令の発行を待機させる。
【００３１】
このとき、図４に示す第２の動作例では、コプロセッサ２０の動作は例外なく完了する。一方、メモリコントローラ３０では例外が発生した状態で動作が完了し、その後例外を保持した状態で無効状態となる。データ処理装置１では、このような例外が発生した場合、分岐先プログラムの実行前に、メモリコントローラ３０の例外処理を行う。そして、例外処理が完了すると、メモリコントローラ３０の無効状態を解除し、さらに、分岐先プログラムの実行を開始する。なお、分岐先プログラムは廃棄することも可能である。例えば、例外処理の結果、分岐先プログラムを正常に開始することができない場合は、分岐先プログラムを廃棄することが好ましい。
【００３２】
ここで、第２の動作例における処理フローを更に詳しく説明するために、第２の動作例におけるデータ処理装置１の動作を示すタイミングチャートを図５に示す。図５では、データ処理装置１において実行されるプログラムにおける命令処理の時間単位をサイクルで示した。
【００３３】
図５に示すように、サイクル１で、プログラム実行部１１においてコプロセッサ命令が実行されると、サイクル２からコプロセッサ２０の操作が開始され、コプロセッサ２０の操作中信号Ａがインアクティブ状態からアクティブ状態になる。図５に示す例では、コプロセッサ２０の操作はサイクル４までかかるものとする。そのため、コプロセッサ２０の操作中信号Ａはサイクル２からサイクル４までの期間にアクティブ状態となる。なお、第２の動作例では、コプロセッサ２０は例外を発生しないため、コプロセッサ２０の例外通知信号はインアクティブ状態を維持する。
【００３４】
次に、サイクル２で、プログラム実行部１１においてメモリ操作命令が実行されると、サイクル３からメモリコントローラ３０の操作が開始され、メモリコントローラ３０の操作中信号Ｂがインアクティブ状態からアクティブ状態になる。図５に示す例では、メモリコントローラ３０の操作はサイクル５までかかるものとする。そのため、メモリコントローラ３０の操作中信号Ｂはサイクル３からサイクル５までの期間にアクティブ状態となる。第２の動作例では、メモリコントローラ３０は、サイクル５において例外が発生するため、サイクル５において例外通知信号をアクティブ状態にする。
【００３５】
そして、サイクル３で、プログラム実行部１１において分岐命令が実行される。この分岐命令の実行に伴いサイクル３で分岐要求信号がインアクティブ状態からアクティブ状態になる。また、分岐命令の実行に伴い、命令発行部１２はサイクル４から分岐先プログラムの命令を発行するために、分岐先プログラムの命令発行準備をする。このとき、サイクル２からサイクル５の期間は操作中信号Ａ、Ｂとに基づき周辺装置状態通知信号がアクティブ状態であるため、分岐待ち合せ操作部１５はサイクル４、５では命令発行停止信号をインアクティブ状態からアクティブ状態に切り替える。従って、サイクル４、５では、命令発行部１２は、準備した分岐先プログラムの発行を待機させる。また、サイクル５でメモリコントローラ３０の例外通知信号がアクティブ状態となったことに応じて、プログラム実行部１１は、サイクル６でメモリコントローラ３０に対する例外処理を行う準備をする。従って、サイクル６で行われる処理はメモリコントローラ３０に対する例外処理となる。
【００３６】
その後、サイクル４でコプロセッサ２０の操作が完了し、サイクル５でメモリコントローラ３０の操作が完了するため、サイクル６では周辺装置状態通知信号がインアクティブ状態となる。そのため、サイクル６では命令発行停止信号がインアクティブ状態となる。この命令発行停止信号のインアクティブ状態への切り替わりに応じて、命令発行部１２は分岐先プログラムの命令に代えて、メモリコントローラ３０に対する例外処理を実行するための命令を発行し、プログラム実行部１１では分岐先プログラムを実行する前にメモリコントローラ３０の例外処理を実行する。
【００３７】
図２、３に示す第１の動作例では、コプロセッサ２０及びメモリコントローラ３０のいずれも例外を発生させることなく操作を完了した場合の例について説明した。以下では、図２及び図３に示した動作に対して、メモリコントローラ３０よりも速く動作が完了するコプロセッサ２０において例外が発生する第３の動作例について説明する。第３の動作例にかかるプログラム処理フローを図６に示す。
【００３８】
図６に示すように、データ処理装置１では、プログラム実行部１１において処理されている分岐元プログラムに基づきコプロセッサ命令が発行されるとコプロセッサ２０に操作指示が通知される。そして、この操作指示に基づきコプロセッサ２０が操作を開始する。このとき、プログラム実行１１では、コプロセッサ２０で行なわれている処理と並列に分岐元プログラムが処理されており、分岐元プログラムにおいてメモリ操作命令が発行されるとメモリコントローラ３０に操作指示が通知される。そして、この操作指示に基づきメモリコントローラ３０が操作を開始する。このとき、このとき、プログラム実行１１では、コプロセッサ２０で行なわれている処理と並列に分岐元プログラムが処理され、プログラム実行部１１ではメモリ操作命令に続く分岐命令が実行される。
【００３９】
この分岐命令に基づき分岐命令実行部１４は、分岐要求信号を出力する。この分岐要求信号は、命令発行部１２に通知され、命令発行部１２は、分岐要求信号に基づき分岐先プログラムの命令を発行する準備をする。しかし、本実施の形態では、コプロセッサ２０又はメモリコントローラ３０が動作している期間に分岐要求信号が発生すると分岐待ち合せ操作部１５が命令発行部１２に対してアクティブ状態の命令発行停止信号を出力するため、命令実行部１２は、分岐先プログラムに基づく命令の発行を待機させる。
【００４０】
このとき、図６に示す第３の動作例では、メモリコントローラ３０の動作は例外なく完了する。一方、コプロセッサ２０では例外が発生した状態で動作が完了し、その後例外を保持した状態で無効状態となる。データ処理装置１では、このような例外が発生した場合、メモリコントローラ３０の動作が完了するまで、コプロセッサ２０に対する例外処理を待機させる。そして、メモリコントローラ３０の動作が完了した後にコプロセッサ２０の例外処理を行う。そして、例外処理が完了すると、コプロセッサ２０の無効状態を解除し、さらに、分岐先プログラムの実行を開始する。なお、分岐先プログラムは廃棄することも可能である。例えば、例外処理の結果、分岐先プログラムを正常に開始することができない場合は、分岐先プログラムを廃棄することが好ましい。
【００４１】
ここで、第３の動作例における処理フローを更に詳しく説明するために、第３の動作例におけるデータ処理装置１の動作を示すタイミングチャートを図７に示す。図７では、データ処理装置１において実行されるプログラムにおける命令処理の時間単位をサイクルで示した。
【００４２】
図７に示すように、サイクル１で、プログラム実行部１１においてコプロセッサ命令が実行されると、サイクル２からコプロセッサ２０の操作が開始され、コプロセッサ２０の操作中信号Ａがインアクティブ状態からアクティブ状態になる。図７に示す例では、コプロセッサ２０の操作はサイクル４までかかるものとする。そのため、コプロセッサ２０の操作中信号Ａはサイクル２からサイクル４までの期間にアクティブ状態となる。第２の動作例では、コプロセッサ２０は、サイクル４において例外が発生するため、サイクル４において例外通知信号をアクティブ状態にする。
【００４３】
次に、サイクル２で、プログラム実行部１１においてメモリ操作命令が実行されると、サイクル３からメモリコントローラ３０の操作が開始され、メモリコントローラ３０の操作中信号Ｂがインアクティブ状態からアクティブ状態になる。図７に示す例では、メモリコントローラ３０の操作はサイクル５までかかるものとする。そのため、メモリコントローラ３０の操作中信号Ｂはサイクル３からサイクル５までの期間にアクティブ状態となる。なお、第２の動作例では、メモリコントローラ３０は例外を発生しないため、メモリコントローラコプロセッサ３０の例外通知信号はインアクティブ状態を維持する。
【００４４】
そして、サイクル３で、プログラム実行部１１において分岐命令が実行される。この分岐命令の実行に伴いサイクル３で分岐要求信号がインアクティブ状態からアクティブ状態になる。また、分岐命令の実行に伴い、命令発行部１２はサイクル４から分岐先プログラムの命令を発行するために、分岐先プログラムの命令発行準備をする。このとき、このとき、サイクル２からサイクル５の期間は操作中信号Ａ、Ｂとに基づき周辺装置状態通知信号がアクティブ状態であるため、分岐待ち合せ操作部１５はサイクル４から命令発行停止信号をインアクティブ状態からアクティブ状態に切り替える。従って、サイクル４では、命令発行部１２は、準備した分岐先プログラムの発行を待機させる。また、サイクル４でコプロセッサ２０の例外通知信号がアクティブ状態となったことに応じて、プログラム実行部１１は、サイクル５でコプロセッサ２０に対する例外処理を行う準備をする。そのため、サイクル５では、コプロセッサ２０に対する例外処理が待機されることになる。
【００４５】
その後、サイクル４でコプロセッサ２０の操作が完了し、サイクル５でメモリコントローラ３０の操作が完了するため、サイクル６では周辺装置状態通知信号がインアクティブ状態となる。そのため、サイクル６では命令発行停止信号がインアクティブ状態となる。この命令発行停止信号のインアクティブ状態への切り替わりに応じて、命令発行部１２は分岐先プログラムの命令に代えて、コプロセッサ２０に対する例外処理を実行するための命令を発行し、プログラム実行部１１では分岐先プログラムを実行する前にコプロセッサ２０の例外処理を実行する。
【００４６】
上記説明より、本実施の形態にかかるデータ処理装置１では、分岐待ち合せ操作部１５によって、周辺装置が動作中は分岐動作を待機させることができる。つまり、データ処理装置１は、分岐動作によってプログラム実行部１１が分岐先プログラムを実行する前に、周辺装置において発生した例外を処理することができる。これにより、分岐先プログラムの実行中に、分岐元プログラムによってなされた操作指示に基づき周辺装置において発生した例外がプログラム実行部１１に通知されることはない。
【００４７】
このような動作を行うことで、データ処理装置１は、分岐元プログラムによってなされた操作指示に基づき周辺装置において発生した例外を、例外の発生原因となった不具合を有する分岐元プログラムによって処理することができる。つまり、データ処理装置１は、周辺装置において発生した例外を発生原因となった不具合に基づいて適切に処理することができる。
【００４８】
また、データ処理装置１では、分岐先プログラムは、分岐元プログラムの動作が正常にかつ完全に終了した後で実行されるため、分岐元プログラムの不具合が分岐先プログラムの動作に伝搬することを防止することができる。これにより、データ処理装置１のリセット動作等の初期化を行うことなく、分岐元プログラムの再実行などによりプログラムの復旧することができる。つまり、本実施の形態にかかるデータ処理装置１では、分岐元プログラムの不具合又は誤動作を分岐先プログラムに伝搬させることがないため、システム全体の信頼性を向上させることができる。
【００４９】
本実施の形態にかかるデータ処理装置１は、様々なベンダーにより複数のプログラムが提供されるシステムにおいてより有効である。例えば、プログラム１は、本実施の形態のデータ処理装置１のために設計されたプログラムであり、プログラム２は、他のＣＰＵに用いられていたプログラムの流用であって、このプログラム１、２をデータ処理装置１で動作させる場合である。このような場合、プログラム２は、分岐動作に関して、プログラム１の動作を考慮して設計されていない。つまり、プログラム１を実行中にプログラム２から割り込み要求があった場合、プログラム２はプログラム１の完了を待って待機することなく実行される。そのため、プログラム２の実行中にプログラム１に起因する例外が発生することがある。プログラム１、２がこのような動作を行った場合、プログラム２は正常であるにもかかわらず、異常終了してしまうことがある。
【００５０】
しかし、本実施の形態にかかるデータ処理装置１では、分岐待ち合せ操作部１５によって、プログラム１の動作が完了した後にプログラム２を実行するため、上記のような問題は発生しない。つまり、本実施の形態にかかるデータ処理装置１は、実行されるプログラムの種類に依存することなくシステムの信頼性を向上させることが可能である。
【００５１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、プログラム実行部１１の構成は、上記実施の形態に限られたものではなくシステムに応じて適宜変更することが可能である。
【図面の簡単な説明】
【００５２】
【図１】実施の形態１にかかるデータ処理装置のブロック図である。
【図２】実施の形態１にかかるデータ処理装置の第１の動作例に関するプログラム処理フローである。
【図３】実施の形態１にかかるデータ処理装置の第１の動作例に関する動作を示すタイミングチャートである。
【図４】実施の形態１にかかるデータ処理装置の第２の動作例に関するプログラム処理フローである。
【図５】実施の形態１にかかるデータ処理装置の第２の動作例に関する動作を示すタイミングチャートである。
【図６】実施の形態１にかかるデータ処理装置の第３の動作例に関するプログラム処理フローである。
【図７】実施の形態１にかかるデータ処理装置の第３の動作例に関する動作を示すタイミングチャートである。
【図８】従来例にかかるデータ処理装置のブロック図である。
【図９】従来例にかかるデータ処理装置の動作を示すタイミングチャートである。
【図１０】従来例にかかるデータ処理装置の課題を説明するためのプログラム処理フローである。
【符号の説明】
【００５３】
１  データ処理装置
１０  ＣＰＵ
１１  プログラム実行部
１２  命令発行部
１３  主命令実行部
１４  分岐命令実行部
１５  分岐待ち合せ操作部
２０  コプロセッサ
３０  メモリコントローラ
４０  ＯＲ回路
５０  割り込み制御部
【図１】
0005112831.tif 000002
【図２】
0005112831.tif 000003
【図３】
0005112831.tif 000004
【図４】
0005112831.tif 000005
【図５】
0005112831.tif 000006
【図６】
0005112831.tif 000007
【図７】
0005112831.tif 000008
【図８】
0005112831.tif 000009
【図９】
0005112831.tif 000010
【図１０】
0005112831.tif 000011