(57)【要約】【課題】ＮＯＰｎ命令の実行中に割込みが発生した場合に割込みに対する応答を改善する。【解決手段】入力される命令をデコードする命令デコーダ１及びそのデコード結果に基づいて命令の実行制御を行う命令シーケンサ２を有するＣＰＵにて、１命令で、複数サイクルの期間においてＮＯＰ（ノーオペレーション）動作を行うＮＯＰｎ命令の実行中に割込みが発生した場合には、それ以降のＮＯＰ動作をキャンセルし、発生した割込みに係る処理動作に直ちに移行して割込み処理を実行するようにし、割込み発生から割込み処理開始までの時間を短縮して割込みに対する応答を改善する。【選択図】図２
2007257477.tif 000002
【特許請求の範囲】
【請求項１】
入力される命令をデコードする命令デコード手段と、
上記命令デコード手段でのデコード結果に基づいて、上記命令の実行制御を行う命令実行制御手段とを備え、
１つの命令で、ｎサイクル（ｎは２以上の自然数）の期間においてノーオペレーション動作を行う第１の命令の実行中に割込みが発生した場合には、当該割込み発生後のノーオペレーション動作を中止することを特徴とする半導体装置。
【請求項２】
上記ノーオペレーション動作が連続して行われた実行サイクル数をカウントするためのカウンタをさらに備え、
上記命令実行制御手段が、上記カウンタのカウント値を参照して上記第１の命令に係るノーオペレーション動作を実行させ、
上記第１の命令の実行中に割込みが発生した場合には、上記カウンタのカウント値が上記第１の命令を正常に終了した場合に対応する正常終了値に変更され上記命令実行制御手段に供給されることを特徴とする請求項１記載の半導体装置。
【請求項３】
上記カウンタのカウント値及び上記正常終了値が入力され、割込みが発生したか否かに応じて上記カウント値又は上記正常終了値の一方を上記命令実行制御手段に出力するセレクタを備えることを特徴とする請求項２記載の半導体装置。
【請求項４】
上記半導体装置は、入力される命令に係る処理をパイプライン動作により実行することを特徴とする請求項１〜３の何れか１項に記載の半導体装置。
【請求項５】
入力される命令をデコードし、得られるデコード結果に基づいて当該命令を実行する半導体装置における命令制御方法であって、
１つの命令で、ｎサイクル（ｎは２以上の自然数）の期間においてノーオペレーション動作を行う第１の命令が入力された場合に、当該第１の命令に応じてノーオペレーション動作を開始し、
上記ノーオペレーション動作を開始してから上記ｎサイクルが経過する前に割込みが発生した場合には、当該割込み発生後のノーオペレーション動作を中止することを特徴とする命令制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及び命令制御方法に関し、詳しくは割込み発生時の動作制御に関する。
【背景技術】
【０００２】
プロセッサ等として構成されるＣＰＵ（Central Processing Unit）にて実行可能な命令の１つに、プログラムにウェイトを挿入するためのノーオペレーション（以下、「ＮＯＰ」と記す。）命令がある。ＣＰＵは、ＮＯＰ命令の実行時には何ら処理動作を行わない。以下、ＮＯＰ命令に応じて何ら動作を行わないことを、説明の便宜上、ノーオペレーション動作（ＮＯＰ動作）と称す。
【０００３】
また、例えば特許文献１に開示されているように、任意の長さのウェイトをプログラムに挿入するために、１つの命令でｎ回（ｎは２以上の自然数）のＮＯＰ動作を行うＮＯＰｎ命令がある。ＮＯＰｎ命令の実行時には、ＣＰＵはｎサイクルにわたりＮＯＰ動作を連続して行う（ｎサイクルにわたって何ら動作を行わない）。つまり、ＣＰＵは、連続するｎ個のＮＯＰ命令に対応する動作を１個のＮＯＰｎ命令で実行する。ＮＯＰｎ命令を利用することで、例えばプログラムの格納に必要な記憶容量を低減したりすることが可能である。
【０００４】
【特許文献１】特開平５−１４３３２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したように、ＣＰＵは、ＮＯＰｎ命令を受けるとｎ回のＮＯＰ動作を行うが、ＮＯＰｎ命令が１命令であるために、その命令実行中に割込みが発生しても当該ＮＯＰｎ命令に応じた処理を実行し続ける。すなわち、ＣＰＵは、ＮＯＰｎ命令の実行中に割込みが発生した場合にはｎ回分のＮＯＰ動作が完了した後に割込み処理に移行する。そのため、割込みが発生してから割込み処理を開始するまでに時間を要し、割込みに対する応答が悪いという問題があった。
【０００６】
図４は、上記問題点を説明するための図である。通常動作ＯＰＮＡにおいて、ＣＰＵは、入力された命令Ｓ１に応じた処理を実行し、続いてＮＯＰ５命令Ｓ２が入力されると、当該命令Ｓ２に応じて５回のＮＯＰ動作ＯＰ１〜ＯＰ５を行う。そのＮＯＰ５命令Ｓ２の実行中、例えば２回目のＮＯＰ動作ＯＰ２と３回目のＮＯＰ動作ＯＰ３との間に、割込みが発生したとする。それに対して、ＣＰＵは、ＮＯＰ５命令Ｓ２に係る５回のＮＯＰ動作ＯＰ１〜ＯＰ５を継続して行い、それが終了すると、発生した割込みに応じた割込み処理ＯＰＩを実行する。そして、ＣＰＵは、割込み処理ＯＰＩが完了した後に、通常動作ＯＰＮＢに戻る。
【０００７】
本発明は、１つの命令でｎサイクルの期間においてＮＯＰ動作を行うＮＯＰｎ命令の実行中に割込みが発生した場合に、当該割込みに対する応答を改善することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の半導体装置は、入力される命令をデコードする命令デコード手段と、そのデコード結果に基づいて命令の実行制御を行う命令実行制御手段とを備える。そして、１つの命令で、ｎサイクル（ｎは２以上の自然数）の期間においてノーオペレーション動作を行う第１の命令の実行中に割込みが発生した場合には、当該割込み発生後のノーオペレーション動作を中止する。
本発明によれば、上記第１の命令の実行中に割込みが発生した場合には、当該割込み発生後のノーオペレーション動作が中止されるので、直ちに割込み処理に係る動作に移行して、発生した割込みに対応した割込み処理を行うことができる。また、ノーオペレーション動作を中止するので、それに続く処理に悪影響を及ぼすこともない。
【発明の効果】
【０００９】
本発明によれば、１つの命令で、ｎサイクルの期間においてノーオペレーション動作を行う命令の実行中に割込みが発生した場合には、当該割込み発生後のノーオペレーション動作を中止するので、直ちに発生した割込みに係る処理動作に移行し、割込み処理を実行することができる。したがって、１つの命令で、ｎサイクルの期間においてノーオペレーション動作を行う命令の実行中に割込みが発生しても、割込みが発生してから割込み処理を開始するまでの時間を従来よりも短縮でき、発生した割込みに対する応答を改善できる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施形態を図面に基づいて説明する。
【００１１】
図１は、本発明の一実施形態による半導体装置を適用した中央処理装置（ＣＰＵ）の構成例を示す図である。図１に示すＣＰＵは、例えばプロセッサ等として構成される。
本実施形態におけるＣＰＵは、図１に示すように、命令デコーダ１、命令シーケンサ２、制御信号パイプライン部３、制御処理部４、例外処理部５、ＮＯＰ実行回数カウンタ６、セレクタ７、レジスタ８、及び立上りエッジ検出部９を有する。
【００１２】
命令デコーダ１は、入力される命令をデコードしてデコード結果を出力する。命令シーケンサ２は、命令デコーダ１より出力されたデコード結果に基づいて、入力された命令に応じた処理動作に係る実行制御を行う。
【００１３】
制御信号パイプライン部３は、命令シーケンサ２や制御処理部４からの信号等に基づいて、ＣＰＵにて所定の処理動作を行うための制御信号を生成し出力する。制御信号パイプライン部３からの制御信号に基づいてＣＰＵ内の各機能部が動作することにより、入力される命令に応じた処理動作等が実現される。また、本実施形態におけるＣＰＵは、命令に係る処理をパイプライン動作で行うように構成されており、制御信号パイプライン部３は、パイプライン動作により処理が実行されるよう制御信号を出力する。
【００１４】
制御処理部４は、各種制御を行うものである。制御処理部４により行われる制御には、例えばバイパス制御、インターロック制御、ウェイト制御、キャンセル制御などがある。バイパス制御及びインターロック制御は、パイプライン動作においてレジスタを適切に参照するために行われるものであり、レジスタから読み出す代わりに前命令での処理結果を使用するようにしたり、後続の命令の動作を待たせたりする。ウェイト制御及びキャンセル制御は、パイプライン動作における各ステージのウェイト処理やキャンセル処理を行うものである。
【００１５】
例外処理部５は、入力される割込み信号により割込みが発生した（割込み要求を検出した）場合に、その割込み処理を行うために、通常動作において実行中の処理に係る情報を一時的に退避させる。また、例外処理部５は、割込み処理終了後には退避させた各情報を必要に応じて戻して通常動作に復帰させる。
【００１６】
ＮＯＰ実行回数カウンタ６は、１つの命令で、ｎ回（ｎは２以上の自然数）、言い換えれば連続するｎサイクルの期間において、ＮＯＰ動作を行わせるＮＯＰｎ命令が入力された場合に、ＮＯＰ動作の実行回数（実行サイクル数）をカウントするカウンタである。ＮＯＰ実行回数カウンタ６は、ＮＯＰｎ命令が入力されると値ｎが設定され、ＮＯＰ動作が実行される毎に（ＮＯＰ動作で１サイクル経過する毎に）、値が１ずつデクリメントされる。また、ＮＯＰ実行回数カウンタ６は、カウンタのクリア信号として、割込み信号に基づく割込み要求信号が例外処理部５より供給されており、当該信号に応じてカウンタ値がクリアされる。
【００１７】
セレクタ７は、ＮＯＰ実行回数カウンタ６のカウンタ値及びレジスタ８の設定値が入力され、立上りエッジ検出部９からのエッジ検出信号に応じてカウンタ値及び設定値の何れか一方を命令シーケンサ２に出力する。具体的には、セレクタ７は、エッジ検出信号がロウレベルの場合にはＮＯＰ実行回数カウンタ６のカウンタ値を命令シーケンサ２に出力し、エッジ検出信号がハイレベルの場合にはレジスタ８の設定値を命令シーケンサ２に出力する。ここで、本実施形態においてレジスタ８には、ＮＯＰｎ命令正常に終了した場合のＮＯＰ実行回数カウンタ６のカウンタ値（正常終了値）に相当する固定値“１”（０００００００１）が設定されている。
【００１８】
立上りエッジ検出部９は、例外処理部５より供給される割込み要求信号における立上りエッジの検出を行い、その検出結果をエッジ検出信号として出力する。
【００１９】
また、本実施形態におけるＣＰＵは、制御信号パイプライン部３からの制御信号に応じて動作し、データを用いた各種演算処理を行う乗算器１１、ＡＬＵ（Arithmetic and Logic Unit：算術論理演算器）１２、及びバレルシフタ１３や、レジスタ制御に係るバイパス部１４、及びレジスタファイル１５や、プログラムカウンタを管理制御するためのプログラムカウンタ（ＰＣ）制御部１６及びプログラムカウンタ（ＰＣ）１７を有している。
【００２０】
次に、動作について説明する。
なお、本実施形態におけるＣＰＵの通常の動作は、従来と同様であるので説明は省略し、以下ではＮＯＰｎ命令の実行中に割込みが発生した場合の動作についてのみ説明する。
図２（Ａ）は、本実施形態におけるＣＰＵの動作を示す図である。また、本実施形態におけるＣＰＵの動作と比較参照するために従来のＣＰＵの動作を図２（Ｂ）に示している。
【００２１】
図２（Ａ）、（Ｂ）において、ＩＦ、ＩＤ、ＥＸ、ＭＡ、及びＷＢは、パイプライン動作における各ステージを示しており、ＩＦは命令取込み（命令フェッチ）ステージ、ＩＤは命令解釈（命令デコード）ステージ、ＥＸは命令実行ステージ、ＭＡはメモリアクセスステージ、ＷＢはレジスタ書込み（ライトバック）ステージである。
【００２２】
なお、初期状態として、割込み信号に基づいて例外処理部５より出力される割込み要求信号はインアクティブ（ロウレベル）であり、実行回数カウンタ６のカウンタ値は“０”であるとする。また、各命令は、プログラムカウンタ値（命令アドレス）に従って、図示しない記憶装置からＣＰＵにより順次読み出される。
【００２３】
まず、第１サイクルＣ１において、図示しない記憶装置から命令Ａが読み出される。続く、第２サイクルＣ２において、読み出された命令Ａが命令デコーダ１によりデコードされ、そのデコード結果が出力される。また、第２サイクルＣ２において、連続する５サイクルの期間、ＮＯＰ動作を行わせるＮＯＰ５命令が読み出される。
【００２４】
第３サイクルＣ３において、命令デコーダ１からのデコード結果に基づいて命令Ａが命令シーケンサ２により実行され、ＮＯＰ５命令が命令デコーダ１によりデコードされる。また、第３サイクルにおいて、ＮＯＰ５命令の後続命令である命令Ｂが読み出される。
【００２５】
次に、第４サイクルＣ４において、命令Ａに係るメモリアクセス処理が実行されるとともに、命令デコーダ１でのデコード結果に基づいてＮＯＰ５命令が命令シーケンサ２により実行されて１回目のＮＯＰ動作が行われる。このとき、命令シーケンサ２は、ＮＯＰ５命令のデコード結果を受けてＮＯＰ実行回数カウンタ６に値“５”を設定する。また、第４サイクルＣ４において、命令Ｂが命令デコーダ１によりデコードされ、それに続く命令Ｃが読み出される。
【００２６】
第５サイクルＣ５において、命令Ａに係るレジスタ書込み処理が実行されるとともに、ＮＯＰ５命令が命令シーケンサ２により実行されて２回目のＮＯＰ動作が行われる。これにより、ＮＯＰ実行回数カウンタ６のカウンタ値が１デクリメントされ“４”になる。なお、第５サイクルにおいては、ＮＯＰ５命令を実行中であるので、命令Ｂ、Ｃについてはそれぞれ命令デコードステージ、命令フェッチステージのままである。
【００２７】
この第５サイクルＣ５において割込みが発生すると、割込み信号に基づく割込み要求信号がアクティブ（ハイレベル）に変化する。これにより、ＮＯＰ実行回数カウンタ６のカウンタ値が“０”にクリアされる。また、割込み要求信号の変化が立上りエッジ検出部９にて検出されることでエッジ検出信号がパルス状にハイレベルとなり、レジスタ８の設定値“１”がセレクタ７により選択されて命令シーケンサ２に供給される。
【００２８】
このようにして、ＮＯＰ実行回数に係るカウンタ値としてレジスタ８の設定値“１”が命令シーケンサ２に供給されることで、命令シーケンサ２はＮＯＰ５命令が終了したと判断して次の命令を実行する。言い換えれば、命令シーケンサ２は、ＮＯＰ５命令における残り３回分のＮＯＰ動作をキャンセルして次の命令を実行する。また、第５サイクルＣ５において割込みが発生したことにより、その時点で実行されていない命令Ｂ及び命令Ｃはキャンセルされ、第６サイクル以降、命令Ｂ及び命令Ｃに係る動作は行われない。
【００２９】
そして、発生した割込みに係る割込み処理の命令が第６サイクルＣ６において読み出され、第７サイクルＣ７において命令デコーダ１によりデコードされる。それに続く、第８、第９、及び第１０サイクルＣ８〜Ｃ１０において、命令デコーダ１でのデコード結果に基づいて、割込み処理の命令に係る命令実行、メモリアクセス、及びレジスタ書込みの各ステージが順次実行される。
【００３０】
以上のように、ＮＯＰ５命令の実行中に割込みが発生した場合には、ＮＯＰ５命令に係るそれ以降のＮＯＰ動作をキャンセルして、直ちに割込み処理に係る動作に移行する。一方、図２（Ｂ）に示すように、従来のＣＰＵではＮＯＰ５命令の実行中に割込みが発生しても５回分のＮＯＰ動作を行ってから割込み処理に係る動作に移行するため、割込みが発生してから割込み処理を開始するまでに多大な時間を要していた。
図２（Ａ）、（Ｂ）を比較すれば明らかなように、本実施形態におけるＣＰＵでは、ＮＯＰ５命令の実行中に割込みが発生した場合に、それ以降のＮＯＰ動作を中止して直ちに割込み処理に係る動作に移行することで、割込み発生から割込み処理開始までの時間を従来よりも短縮でき、発生した割込みに対する応答を改善することができる。また、ＮＯＰｎ命令はｎ回のＮＯＰ動作を行う命令であるので、割込みが発生した場合にＮＯＰｎ命令に係る残りのＮＯＰ動作をキャンセルしても処理内容に影響を及ぼすこともない。
【００３１】
図３は、本実施形態におけるＣＰＵの動作を示す概念図である。図３においては、図２（Ａ）に示したように、ＮＯＰ５命令における２回目のＮＯＰ動作の実行中に割込みが発生した場合を示している。
【００３２】
通常動作ＯＰＮＡにおいて、ＣＰＵは、入力された命令Ｓ１に応じた処理を実行し、続いてＮＯＰ５命令Ｓ２が入力されると、当該命令Ｓ２に応じて５回のＮＯＰ動作の実行を開始する。ＮＯＰ５命令Ｓ２の実行中である、１回目のＮＯＰ動作ＯＰ１に続く２回目のＮＯＰ動作ＯＰ２の実行中に割込みが発生すると、ＣＰＵは、３回目以降のＮＯＰ動作をキャンセルして、発生した割込みに応じた割込み処理ＯＰＩを直ちに実行する。そして、ＣＰＵは、割込み処理ＯＰＩが完了した後に、通常動作ＯＰＮＢに戻る。
【００３３】
なお、上述した実施形態においては、ＮＯＰ実行回数カウンタ６は、デクリメントカウンタとしているが、インクリメントカウンタを用いても良く、命令シーケンサ２でのＮＯＰｎ命令の終了判定方法やレジスタ８の設定値を適宜変更すれば良い。
また、上述した実施形態においては、命令に係る処理をパイプライン動作で行うＣＰＵを一例として示しているが、パイプライン動作を行うものに限定されるものではない。
【００３４】
また、上記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００３５】
（付記１）入力される命令をデコードする命令デコード手段と、
上記命令デコード手段でのデコード結果に基づいて、上記命令の実行制御を行う命令実行制御手段とを備え、
１つの命令で、ｎサイクル（ｎは２以上の自然数）の期間においてノーオペレーション動作を行う第１の命令の実行中に割込みが発生した場合には、当該割込み発生後のノーオペレーション動作を中止することを特徴とする半導体装置。
（付記２）上記ノーオペレーション動作が連続して行われた実行サイクル数をカウントするためのカウンタをさらに備え、
上記命令実行制御手段が、上記カウンタのカウント値を参照して上記第１の命令に係るノーオペレーション動作を実行させ、
上記第１の命令の実行中に割込みが発生した場合には、上記カウンタのカウント値が上記第１の命令を正常に終了した場合に対応する正常終了値に変更され上記命令実行制御手段に供給されることを特徴とする付記１記載の半導体装置。
（付記３）上記カウンタのカウント値及び上記正常終了値が入力され、割込みが発生したか否かに応じて上記カウント値又は上記正常終了値の一方を上記命令実行制御手段に出力するセレクタを備えることを特徴とする付記２記載の半導体装置。
（付記４）上記カウンタは、上記第１の命令を受けた場合に値ｎが設定され、上記ノーオペレーション動作を１サイクル行う毎に値が１ずつ減じられるデクリメントカウンタであり、
上記第１の命令の実行中に割込みが発生した場合には、上記カウンタのカウント値を１に変更して上記命令実行制御手段に供給されることを特徴とする付記２又は３記載の半導体装置。
（付記５）上記半導体装置は、入力される命令に係る処理をパイプライン動作により実行することを特徴とする付記１〜４の何れか１項に記載の半導体装置。
（付記６）入力される命令をデコードし、得られるデコード結果に基づいて当該命令を実行する半導体装置における命令制御方法であって、
１つの命令で、ｎサイクル（ｎは２以上の自然数）の期間においてノーオペレーション動作を行う第１の命令が入力された場合に、当該第１の命令に応じてノーオペレーション動作を開始し、
上記ノーオペレーション動作を開始してから上記ｎサイクルが経過する前に割込みが発生した場合には、当該割込み発生後のノーオペレーション動作を中止することを特徴とする命令制御方法。
【図面の簡単な説明】
【００３６】
【図１】本発明の一実施形態における中央処理装置（ＣＰＵ）の構成例を示すブロック図である。
【図２】本実施形態におけるＣＰＵの動作を説明するための図である。
【図３】本実施形態におけるＣＰＵの動作を示す図である。
【図４】従来のＣＰＵの動作を示す図である。
【符号の説明】
【００３７】
１  命令デコーダ
２  命令シーケンサ
３  制御信号パイプライン部
４  制御処理部
５  例外処理部
６  ＮＯＰ実行回数カウンタ
７  セレクタ
８  レジスタ
９  立上りエッジ検出部
１１  乗算器
１２  ＡＬＵ
１３  バレルシフタ
１４  バイパス部
１５  レジスタファイル
１６  プログラムカウンタ制御部
１７  プログラムカウンタ
【図１】
2007257477.tif 000003
【図２】
2007257477.tif 000004
【図３】
2007257477.tif 000005
【図４】
2007257477.tif 000006