(57)【要約】【課題】分岐命令を実行中に割込みが発生したときに、割込み処理から復帰直後に分岐処理を実行する。【解決手段】処理装置では、分岐命令を実行中に割り込み要求が発生した場合に、復帰先アドレスとして分岐先アドレスを選択する。これにより、割り込み処理終了後に分岐命令を行わなくてもよい。【選択図】図３
2008134678.tif 000002
【特許請求の範囲】
【請求項１】
割り込み処理可能な分岐命令を実行する処理装置であって、
割り込み要求があったときに前記割り込み要求を通知する割り込み端子と、
実行中の命令が前記分岐命令であるか否かを検出する分岐命令検出部と、
割り込み処理後の復帰先アドレスとして、分岐先アドレスバスおよび前記実行中の命令のアドレスのどちらか一方を選択する復帰先アドレス制御部とを備え、
前記復帰先アドレス制御部は、前記割り込み端子が前記割り込み要求を通知したときに前記分岐命令検出部が前記分岐命令を検出した場合には、前記分岐先アドレスバスを選択する処理装置。
【請求項２】
前記実行中の命令が特定の分岐命令であるか否かを検出する特殊分岐命令検出部をさらに備え、
前記復帰先アドレス制御部は、前記復帰先アドレスとして、前記分岐先アドレスバス、前記実行中の命令のアドレスおよび特定の分岐先アドレスバスの何れか１つを選択し、前記割り込み端子が前記割り込み要求を通知したときに前記特殊分岐命令検出部が前記特定の分岐命令を検出した場合には前記特定の分岐先アドレスバスを選択する請求項１に記載の処理装置。
【請求項３】
前記実行中の命令に後続する後続命令に前記分岐命令が含まれているか否かを検出する後続分岐命令検出部と、
前記割り込み端子が前記割り込み要求を通知したときに前記後続分岐命令検出部が前記分岐命令を検出した場合には、その分岐命令の処理が終了するまで前記割り込み要求を待機させる割込要求制御部とをさらに備えた請求項１に記載の処理装置。
【請求項４】
前記実行中の命令と前記実行中の命令に後続する後続命令に含まれている分岐命令との間の距離を算出し、その距離が一定値以下であれば前記分岐命令が接近していると判断する分岐先アドレス接近検出部と、
前記分岐命令が接近していると前記分岐先アドレス接近検出部が判断した場合には、その分岐命令の処理が終了するまで前記割り込み要求を待機させる第２の割込要求制御部とをさらに備えた請求項１に記載の処理装置。
【請求項５】
処理する命令が入力されるまでに要する所要時間が設定時間未満であるか否かを検出する命令メモリウェイト設定部をさらに備え、
前記割込要求制御部は、前記所要時間が前記設定時間未満であると前記命令メモリウェイト設定部が検出した場合には、前記後続命令に含まれている前記分岐命令の処理が終了するまで前記割り込み要求を待機させる請求項３に記載の処理装置。
【請求項６】
実行中の命令を処理する基準タイミングに対して、前記割り込み要求を処理する処理タイミングを前記基準タイミングよりも前に設定するかそれとも前記基準タイミングよりも後に設定するかを選択する割り込み属性保持部をさらに備え、
前記割込要求制御部は、前記割り込み属性保持部が前記処理タイミングを前記基準タイミングよりも後に設定した場合には、前記割り込み要求を待機させる請求項３に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理装置に関する。
【背景技術】
【０００２】
昨今の画像や音声などはデジタル化されて処理される。その処理にはマイコンなどに代表される処理装置が含まれている。
【０００３】
従来の処理装置は、分岐命令と割込み機構を有している場合が多く、近年の動画処理などに代表されるように、常に処理の高速化が求められている（特許文献１）。
【特許文献１】特許第2636562号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
分岐命令実行時に割込みが発生した場合、割り込み処理からの復帰後に分岐命令を実行することになる。そのため、分岐命令実行のサイクルおよび、分岐命令実行にかかる命令フェッチや分岐ペナルティなどの動作サイクルが必要である。
【課題を解決するための手段】
【０００５】
分岐命令と割込み機構を有する処理装置において、分岐命令の実行時に割込みが発生した場合、これを検出し、実行中の分岐命令の分岐先アドレスと、実行中の命令アドレスとを選択し、復帰先アドレスとして退避する手段を持つ。
【発明の効果】
【０００６】
分岐命令実行時に割込みが発生した場合、割り込み処理からの復帰後に分岐命令を実行することなく、割り込み処理からの復帰で、分岐命令による分岐先からの処理を再開できる。
【０００７】
これにより、分岐命令実行のサイクルおよび、分岐命令実行にかかる命令フェッチや分岐ペナルティなどの動作サイクルが不要となる。
【発明を実施するための最良の形態】
【０００８】
本発明を実施形態毎に説明する前に、本発明における割り込み動作と従来における割り込み動作とを説明する。図１および図９は、それぞれ、本発明および従来における割り込み動作のフロー図である。また、図２および図１０は、それぞれ、本発明および従来における分岐命令実行時の割り込み動作のフロー図である。
【０００９】
本発明における割り込み動作では、図１に示すように、ステップＳ１０１において割り込みが発生しているか否かを判断する。そして、割り込みが発生している場合（Ｙｅｓ）にはステップＳ１０２へ進み、割り込みが発生していない場合（Ｎｏ）にはステップＳ１１０へ進んで現在行っている処理を継続して実行させる。
【００１０】
ステップＳ１０２では、割り込み時に実行中の命令が分岐命令であるか否かを判断する。そして、割り込み時に実行中の命令が分岐命令である場合（Ｙｅｓ）にはステップＳ１０３へ進み、割り込み時に実行中の命令が分岐命令でない場合（Ｎｏ）にはステップＳ１０４へ進む。
【００１１】
ステップＳ１０３では、割り込みにより退避される戻り先アドレス（復帰先アドレス）を分岐先命令アドレス（図１には、「分岐先ＰＣ退避処理」と記載）とする。
【００１２】
ステップＳ１０４では、割り込みにより退避される戻り先アドレスを割り込まれた命令のアドレス（図１には、「現ＰＣ退避処理」と記載）とする。
【００１３】
その後は、戻り先アドレスの選択以外の退避処理を行い（ステップＳ１０５）、割り込みハンドラへ分岐し（ステップＳ１０６）、割り込み処理を行う（ステップＳ１０７）。割り込み処理の後、復帰命令により退避したデータを復帰させ（ステップＳ１０８）、割り込みが発生した番地へ復帰する（ステップＳ１０９）。
【００１４】
このように、本発明における割り込み動作は割り込み時に実行中の命令が分岐命令であるか否かを判断するステップ（ステップＳ１０２）を備えているので、分岐命令の処理中に割り込みが発生した場合、退避される戻り先アドレスとして、分岐命令による分岐先が格納される。そして、割り込み処理からの復帰時に分岐先アドレスへ復帰する。そのため、分岐命令のフェッチ、分岐命令の実行が不要となる。
【００１５】
一方、従来における割り込み動作では、図９に示すように、割り込み時に実行中の命令が分岐命令であるか否かを判断していない。すなわち、従来における割り込み動作では、実行中の命令の種類に関係なく、割り込みが発生したときには割り込まれた命令のアドレスを退避アドレスとしている。その結果、従来における割り込み動作では、図１０に示すように復帰処理後に分岐命令を行うステップと、その分岐とを行う必要があるが、本発明における割り込み動作では、図２に示すようにこれらの処理を行う必要はない。
【００１６】
以下、図面を用いて本発明の実施形態を詳述する。なお、本発明は、以下に示す実施形態に限定されない。また、図面において、実質的に同一の機能を有する回路およびバス（データバスやアドレスバス）については、同一の符号を付けている。
【００１７】
（第１の実施の形態）
図３は、本発明の第１の実施の形態におけるＣＰＵ（処理装置）３の構成を示すブロック図である。
【００１８】
本実施形態におけるＣＰＵ３は、命令メモリ１およびデータメモリ２に接続され、命令メモリ１が格納している命令を処理する。また、ＣＰＵ３は、割り込み端子４と、命令メモリデータバス５と、制御信号生成部６と、データメモリアドレスバス７と、データメモリライトバス８と、データメモリリードバス９と、分岐先アドレスバス１０と、次命令アドレスバス１１と、命令アドレスセレクタ１２と、命令アドレス選択信号バス１３と、プログラムカウンタ（ＰＣ）１４と、命令メモリアドレスバス１５と、分岐命令信号バス１８と、分岐命令検出部１９と、復帰先アドレス制御部２０とを備えている。復帰先アドレス制御部２０は、ライトデータセレクタ１６と、論理積回路１７とを有している。
【００１９】
命令メモリ１は、ＣＰＵ３が処理する命令を格納している。
【００２０】
データメモリ２は、命令により処理されるデータや割込みの発生時行われる退避処理のデータの格納に使用される。
【００２１】
割り込み端子４は、「１」が入力されることで前記ＣＰＵ３に割込みを要求する。
【００２２】
命令メモリデータバス５は、命令データを命令メモリ１から制御信号生成部６へ送信するためのデータバスである。
【００２３】
制御信号生成部６は、データメモリアドレス、分岐先アドレス、次命令アドレスおよび命令アドレス選択信号を生成する。
【００２４】
データメモリアドレスバス７は、データメモリアドレスを前記制御信号生成部６からデータメモリ２へ送信するためのデータバスである。
【００２５】
データメモリライトバス８は、復帰先アドレスをライトデータセレクタ１６からデータメモリ２へ送信するためのデータパスである。
【００２６】
データメモリリードバス９は、復帰先アドレスをデータメモリ２から命令アドレスセレクタ１２へ送信するためのバスである。
【００２７】
分岐先アドレスバス１０は、分岐先アドレスを制御信号生成部６から命令アドレスセレクタ１２およびライトデータセレクタ１６へそれぞれ送信するためのバスである。
【００２８】
次命令アドレスバス１１は、割込みが発生していない場合には次命令のアドレスを、割込みが要求されている場合には割込み先のアドレスを、制御信号生成部６から命令アドレスセレクタ１２へ送信するためのバスである。
【００２９】
命令アドレスセレクタ１２は、命令アドレス選択信号に従って、復帰先アドレス、分岐先アドレスおよび次命令アドレスを選択して出力する。
【００３０】
命令アドレス選択信号バス１３は、命令アドレス選択信号を制御信号生成部６から命令アドレスセレクタへ送信するためのバスである。命令アドレス選択信号は、命令アドレスセレクタを制御するための信号である。
【００３１】
プログラムカウンタ１４は、実行中の命令アドレスを保持している。
【００３２】
命令メモリアドレスバス１５は、実行中の命令アドレスを命令メモリへ送信するためのアドレスバスである。
【００３３】
ライトデータセレクタ１６は、復帰先アドレスをデータメモリ２へ出力する。具体的には、ライトデータセレクタ１６は、論理積回路１７の出力が「１」であれば復帰先アドレスとして分岐先アドレスをデータメモリ２に出力し、論理積回路１７の出力が「０」であれば復帰先アドレスとして命令メモリアドレスをデータメモリ２に出力する。
【００３４】
論理積回路１７は、割り込み端子４の出力信号と分岐命令検出部１９の出力信号（分岐命令信号）とを積算し、積算結果をライトデータセレクタ１６へ出力する。
【００３５】
分岐命令信号バス１８は、分岐命令信号を分岐検出部１９から論理積回路１７へ送信するためのバスである。
【００３６】
分岐命令検出部１９は、上記分岐命令信号を算出して論理積回路１７へ出力する。具体的には、分岐命令検出部１９は、命令データが分岐命令である場合には分岐命令信号として「１」を出力し、命令データが分岐命令でない場合には分岐命令信号として「０」を出力する。
【００３７】
次に、図１を用いて、ＣＰＵ３が分岐命令を実行しているときにＣＰＵ３に割り込みが発生した場合の制御装置の動作を説明する。
【００３８】
まず、割り込みが発生しているので、ステップＳ１０１ではＹｅｓと判断してステップＳ１０２へ進み、ＣＰＵ３が分岐命令を実行しているので、ステップＳ１０２ではＹｅｓと判断してステップＳ１０３へ進む。
【００３９】
ステップＳ１０３では、戻り先アドレスを分岐先命令のアドレスに設定する。
【００４０】
具体的には、ＣＰＵ３は分岐命令を実行しているので、命令メモリ１は命令メモリデータバス５を介して分岐命令を分岐命令検出部１９に送信し、その結果、分岐命令検出部１９は分岐命令信号として「１」を論理積回路１７に出力する。
【００４１】
また、割り込みが発生しているので、割り込み端子４には「１」が入力され、この「１」が論理積回路１７に入力される。これにより、論理積回路１７は、「１」をライトデータセレクタ１６へ出力するので、ライトデータセレクタ１６は、復帰先アドレスとして分岐先アドレスをデータメモリ２に出力する。
【００４２】
その後、ステップＳ１０５〜ステップＳ１０７を経て、ステップＳ１０８へ進む。ステップＳ１０８では、復帰命令を行う。
【００４３】
具体的には、復帰先アドレス（この場合には、分岐先アドレス）を、データメモリ２からデータメモリリードバス９を介して命令アドレスセレクタ１２へ出力し、命令アドレスセレクタ１２からプログラムカウンタ１４へ出力する。そして、プログラムカウンタ１４は、復帰先アドレスを格納する。
【００４４】
以上より、本実施形態におけるＣＰＵ３では、分岐命令の実行中に割り込み要求があった場合には、まず、復帰アドレス制御部２０（具体的にはライトデータセレクタ１６）が復帰先アドレスとして分岐先アドレスを選択し、次に、ＣＰＵ３が割り込み要求を処理すし、その後復帰命令を行って分岐先へ処理を遷移する。その結果、割込み発生時の分岐命令を復帰後に実行することなく分岐先へ処理を遷移できるので、割り込み発生後の分岐命令の実行が不要となる。
【００４５】
（第２の実施形態）
第２の実施形態では、さらに、特定の分岐命令（以下、特殊分岐命令と呼ぶ）を実行中に割り込みが発生しても、分岐命令を復帰先アドレスとして退避させることができる。以下、具体的に示す。
【００４６】
図４は、本実施形態におけるＣＰＵ３の構成を示すブロック図である。
【００４７】
本実施形態におけるＣＰＵ３は、命令メモリ１およびデータメモリ２に接続され、命令メモリ１が格納している命令を処理する。また、ＣＰＵ３は、割り込み端子４と、命令メモリデータバス５と、制御信号生成部６と、データメモリアドレスバス７と、データメモリライトバス８と、データメモリリードバス９と、分岐先アドレスバス１０と、次命令アドレスバス１１と、命令アドレスセレクタ１２と、命令アドレス選択信号バス１３と、プログラムカウンタ１４と、命令メモリアドレスバス１５と、分岐命令信号バス１８と、分岐命令検出部１９と、特殊分岐命令検出部２１と、特殊分岐命令制御素子２２と、特殊分岐命令信号バス２４と、復帰先アドレス制御部２５とを備えている。復帰先アドレス制御部２５は、ライトデータセレクタ１６と、論理積回路１７と、論理回路２３とを有している。
【００４８】
命令メモリ１は、ＣＰＵ３が処理する命令を格納している。
【００４９】
データメモリ２は、命令により処理されるデータや割込みの発生時行われる退避処理のデータを格納している。
【００５０】
割り込み端子４は、「１」の入力により前記ＣＰＵ３に割込みを要求する。
【００５１】
命令メモリデータバス５は、命令データを命令メモリ１から制御信号生成部６へ送信するためのデータバスである。
【００５２】
制御信号生成部６は、データメモリアドレス、分岐先アドレス、次命令アドレスおよび命令アドレス選択信号を生成する。
【００５３】
データメモリアドレスバス７は、データメモリアドレスをデータメモリ２へ送信するためのアドレスバスである。
【００５４】
データメモリライトバス８は、復帰先アドレス制御部２５、具体的にはライトデータセレクタ１６の出力信号（復帰先アドレス）をデータメモリ２へ送信するためのバスである。
【００５５】
データメモリリードバス９は、復帰先アドレスをデータメモリ２から命令アドレスセレクタ１２へ送信するためのバスである。
【００５６】
分岐先アドレスバス１０は、分岐先アドレスを制御信号生成部６から命令アドレスセレクタ１２およびライトデータセレクタ１６へそれぞれ送信するためのアドレスバスである。
【００５７】
次命令アドレスバス１１は、割込みが発生していない場合は次命令のアドレスを、割込みが要求されている場合は割込み先のアドレスを、前記制御信号生成部６から命令アドレスセレクタ１２へ送信するためのアドレスバスである。
【００５８】
命令アドレスセレクタ１２は、命令アドレス選択信号に従って、データメモリリードバス、分岐先アドレスおよび次命令アドレスを選択して出力する。
【００５９】
命令アドレス選択信号バス１３は、命令アドレス選択信号を前記制御信号生成部６から前記命令アドレスセレクタ１２へ送信するためのバスである。
【００６０】
プログラムカウンタ１４は、実行中の命令アドレスを保持している。
【００６１】
命令メモリアドレスバス１５は、命令メモリのアドレスをプログラムカウンタ１４から命令メモリ１へ送信するためのアドレスバスである。
【００６２】
ライトデータセレクタ１６は、復帰先アドレスをデータメモリ２へ出力する。具体的には、ライトデータセレクタ１６には、分岐先アドレスおよび命令メモリアドレスが入力される。そして、ライトデータセレクタ１６は、論理積回路１７の出力が「１」であれば復帰先アドレスとして分岐先アドレスをデータメモリ２に出力し、論理積回路１７の出力が「０」であれば復帰先アドレスとして命令メモリアドレスをデータメモリ２に出力する。
【００６３】
論理積回路１７は、割り込み端子４の出力信号と論理回路２３の出力信号とを積算し、積算結果をライトデータセレクタ１６へ出力する。
【００６４】
分岐命令信号バス１８は、分岐命令信号を分岐命令検出部１９から論理回路２３へ送信するためのバスである。
【００６５】
分岐命令検出部１９は、命令データが分岐命令である場合は分岐命令信号として「１」を出力し、命令データが分岐命令でない場合は分岐命令信号として「０」を出力する。
【００６６】
特殊分岐命令検出部２１は、特殊分岐命令信号を算出して論理回路２３へ出力する。具体的には、特殊分岐命令検出部２１は、命令データが分岐命令であり特殊分岐命令制御端子２２の出力信号が「１」である場合には特殊分岐命令信号として「１」を出力し、命令データが分岐命令でない場合もしくは特殊分岐命令制御端子２２の出力信号が「０」である場合には特殊分岐命令信号として「０」を出力する。
【００６７】
特殊分岐命令制御端子２２は、入力された値（「０」または「１」）を前記特殊分岐命令検出部２１へ出力する。
【００６８】
論理回路２３は、分岐命令信号が「１」であり特殊分岐命令信号が「０」である場合には「１」を論理積回路１７に出力し、分岐命令信号が「０」である場合もしくは特殊分岐命令信号が「１」である場合には「０」を論理積回路１７に出力する。
【００６９】
特殊分岐命令信号バス２４は、特殊分岐命令信号を前記特殊分岐命令検出部２１から論理回路２３へ送信するためのバスである。
【００７０】
次に、図１を用いて、本実施形態の制御装置が特殊分岐命令を実行しているときに割込みが発生した場合の制御装置の動作を説明する。
【００７１】
まず、特殊分岐命令制御端子２２に「０」が入力されている場合、第１の実施形態と同様にステップＳ１０１およびステップＳ１０２を行い、ステップＳ１０３へ進む。
【００７２】
ステップＳ１０３では、戻り先アドレスを分岐先命令のアドレスに設定する。
【００７３】
具体的には、ＣＰＵ３は特殊分岐命令を実行しているので、命令メモリ１は命令メモリデータバス５を介して分岐命令を分岐命令検出部１９に送信し、その結果、分岐命令検出部１９は分岐命令信号として「１」を論理回路２３に出力する。
【００７４】
また、特殊分岐命令制御端子２２には「０」が入力されているので、特殊分岐命令検出部２１は「０」を論理回路２３に出力する。以上より、論理回路２３には、分岐命令信号「１」と特殊分岐命令信号「０」とが入力される。よって、論理回路２３は「１」を論理積回路１７に出力する。
【００７５】
さらに、割り込みが発生しているので、割り込み端子４には「１」が入力され、この「１」が論理積回路１７に入力される。これにより、論理積回路１７には、論理回路２３から「１」が入力され、割り込み端子４から「１」が入力されるので、論理積回路１７は「１」をライトデータセレクタ１６へ出力する。よって、ライトデータセレクタ１６は復帰先アドレスとして分岐先アドレスをデータメモリ２に出力する。
【００７６】
その後、ステップＳ１０５〜ステップＳ１０７を経て、ステップＳ１０８へ進む。ステップＳ１０８では、復帰命令を行う。
【００７７】
具体的には、復帰先アドレス（この場合、分岐先アドレス）を命令アドレスセレクタ１２へ出力する。すると、命令アドレスセレクタ１２は命令アドレス選択信号１３に従ってプログラムカウンタ１４へ分岐先アドレスを出力し、プログラムカウンタ１４は復帰先アドレスを格納する。
【００７８】
次に、特殊分岐命令制御端子２２に「１」が入力されている場合を考える。
【００７９】
このとき、ステップＳ１０３では、上述のように、分岐命令検出部１９は分岐命令信号として「１」を論理回路２３に出力する。
【００８０】
また、特殊分岐命令制御端子２２には「１」が入力されているので、特殊分岐命令検出部２１は「１」を論理回路２３に出力する。以上より、論理回路２３には、分岐命令信号「１」と特殊分岐命令信号「１」とが入力される。よって、論理回路２３は「０」を論理積回路１７に出力する。
【００８１】
さらに、割り込みが発生しているので、「１」が割り込み端子４を介して論理積回路１７に入力される。これにより、論理積回路１７には、論理回路２３から「０」が入力され、割り込み端子４から「１」が入力されるので、論理積回路１７は「０」をライトデータセレクタ１６へ出力する。よって、ライトデータセレクタ１６は復帰先アドレスとして命令メモリアドレスをデータメモリ２に出力する。
【００８２】
また、ステップＳ１０８では、上述のように、データメモリ２が命令アドレスセレクタ１２を経由して復帰先アドレスをプログラムカウンタ１４へ出力する。この場合、復帰先アドレスは命令メモリアドレスであるので、プログラムカウンタ１４は命令メモリアドレスを格納する。
【００８３】
以上より、本実施形態におけるＣＰＵ３では、特殊分岐命令検出部２１が実行中の命令が特殊分岐命令であるか否かを検出する。そして、復帰先アドレス制御部２５は、特殊分岐命令の実行中に割り込み要求があった場合には復帰先アドレスとして特殊分岐命令の分岐先アドレスを選択する一方、特殊分岐命令以外の命令を実行中に割り込み要求があった場合には復帰先アドレスとしてデータメモリアドレスを選択する。その結果、特殊分岐命令に対する割込みにおいて復帰先アドレスを選択でき、特殊分岐先アドレスを復帰先アドレスとして退避させることが可能となる。
【００８４】
（第３の実施形態）
第３の実施形態では、実行中の命令が分岐命令であるか否かを考慮するだけでなく、後続する命令（後続命令）に分岐命令が存在しているか否かも考慮することができる。
【００８５】
図５は、本実施形態におけるＣＰＵ３の構成を示すブロック図である。
【００８６】
本実施形態におけるＣＰＵ３は、命令メモリ１およびデータメモリ２に接続され、命令メモリ１が格納している命令を処理する。また、ＣＰＵ３は、割り込み端子４と、命令メモリデータバス５と、制御信号生成部６と、データメモリアドレスバス７と、データメモリライトバス８と、データメモリリードバス９と、分岐先アドレスバス１０と、次命令アドレスバス１１と、命令アドレスセレクタ１２と、命令アドレス選択信号バス１３と、プログラムカウンタ１４と、命令メモリアドレスバス１５と、ライトデータセレクタ１６および論理積回路１７を有する復帰先アドレス制御部２０と、分岐命令信号バス１８と、分岐命令検出部１９と、命令バッファ３１と、命令バッファデータバス３２と、後続分岐命令検出部３３と、検出信号バス３４と、第２論理回路（割込要求制御部）３５と、条件付割込要求信号バス３６と、命令データバス３７とを備えている。
【００８７】
命令メモリ１は、ＣＰＵ３が処理する命令を格納している。
【００８８】
データメモリ２は、命令により処理されるデータや割込みの発生時行われる退避処理のデータを格納する。
【００８９】
割込み端子４は、「１」の入力により前記ＣＰＵ３に割込みを要求する。
【００９０】
命令メモリデータバス５は、命令データを命令メモリ１から命令バッファ３１へ送信するためのデータバスである。
【００９１】
制御信号生成部６は、条件付割込要求信号（第２論理回路３５の出力信号）と命令バッファデータ（命令バッファ３１の出力信号）とを用いて、データメモリアドレス、分岐先アドレス、次命令アドレスおよび命令アドレス選択信号を生成する。
【００９２】
データメモリアドレスバス７は、データメモリアドレスを前記制御信号生成部６からデータメモリ２へ送信するためのアドレスバスである。
【００９３】
データメモリライトバス８は、復帰先アドレスをライトデータセレクタ１６からデータメモリ２へ送信するためのバスである。
【００９４】
データメモリリードバス９は、復帰先アドレスをデータメモリ２から命令アドレスセレクタ１２へ送信するためのバスである。
【００９５】
分岐先アドレスバス１０は、分岐先アドレスを制御信号生成部６から命令アドレスセクタ１２およびライトデータセレクタ１６へそれぞれ送信するためのアドレスバスである。
【００９６】
次命令アドレスバス１１は、割込みが発生していない場合は次命令のアドレスを、割込みが要求されている場合は割込み先のアドレスを、前記制御信号生成部６から命令アドレスセレクタ１２へ送信するためのバスである。
【００９７】
命令アドレスセレクタ１２は、命令アドレス選択信号に従って、データメモリアドレス、分岐先アドレスおよび次命令アドレスを選択して出力する。
【００９８】
命令アドレス選択信号バス１３は、命令アドレス選択信号を前記制御信号生成部６から前記命令アドレスセレクタ１２へ送信するためのバスである。
【００９９】
プログラムカウンタ１４は、実行中の命令アドレスを保持している。
【０１００】
命令メモリアドレスバス１５は、命令メモリアドレスをプログラムカウンタ１４から命令メモリ１へ送信するためのバスである。
【０１０１】
ライトデータセレクタ１６は、論理積回路１７の出力が「１」であれば分岐先アドレスを出力し、論理積回路１７の出力が「０」であれば命令メモリアドレスを出力する。
【０１０２】
論理積回路１７は、分岐命令検出部１９の出力信号（分岐命令信号）と第２論理回路３５の出力信号（条件付割込要求信号）とを積算し、その積算結果を前記ライトデータセレクタ１６に出力する。
【０１０３】
分岐命令信号バス１８は、分岐命令信号を分岐検出部１９から論理積回路１７へ送信するためのバスである。
【０１０４】
分岐命令検出部１９は、命令データ（命令バッファの出力信号）が分岐命令である場合は分岐命令信号として「１」を出力し、命令データが分岐命令でない場合は分岐命令信号として「０」を出力する。
【０１０５】
命令バッファ３１は、命令メモリ１の出力値（命令メモリ）に基づいて、順次命令データを命令データバス３７へ出力するFIFOである。すなわち、命令バッファ３１は、必要に応じて、格納している後続命令を出力する。
【０１０６】
命令バッファデータバス３２は、前記命令バッファ３１が格納しているデータを後続分岐命令検出部３３へ送信するためのデータバスである。
【０１０７】
後続分岐命令検出部３３は、後続分岐命令検出信号を算出し第２論理回路３５へ出力する。具体的には、後続分岐命令検出部３３は、命令バッファ３１の出力信号から実行中の命令を除く後続命令のデータを元に、分岐命令が後続する命令として前記命令バッファ３１に含まれているか否かを検出し、分岐命令が後続命令に含まれている場合は後続分岐命令検出信号として「１」を出力し、分岐命令が後続命令に含まれていない場合は後続分岐命令検出信号として「０」を出力する。
【０１０８】
後続分岐命令検出信号バス３４は、後続分岐命令検出信号を前記後続分岐命令検出部３３から第２論理回路３５へ送信するためのバスである。
【０１０９】
第２論理回路３５は、条件付割込要求信号を算出して制御信号生成部６および論理積回路１７へ出力する。具体的には、第２論理回路３５は、割り込み端子４の出力値が「１」であり後続分岐命令検出信号が「０」である場合には条件付割込要求信号として「１」を出力し、割り込み端子４の出力値が「０」である場合もしくは後続分岐命令検出信号が「１」である場合には条件付割込要求信号として「０」を出力する。
【０１１０】
条件付割込要求信号バス３６は、条件付割込要求信号を第２論理回路３５から制御信号生成部６および論理積回路１７へそれぞれ送信するためのバスである。
【０１１１】
命令データバス３７は、命令バッファデータを命令バッファ３１から制御信号生成部６および分岐命令検出部１９へそれぞれ送信するためのデータバスである。
【０１１２】
次に、本実施形態の制御装置が特殊分岐命令を実行しているときに割込みが発生した場合の制御装置の動作を説明する。
【０１１３】
まず、命令バッファ３１に分岐命令が存在する場合、すなわち、後続命令に分岐命令が存在する場合を考える。
【０１１４】
このとき、前記命令バッファ３１に分岐命令が存在するため、前記後続分岐命令検出部３３は「１」を第２論理回路３５に出力する。すると、割り込み端子４の出力値が「１」であっても（すなわち割り込みが要求されていても）、第２論理回路３５は条件付割込要求信号として「０」を出力する。以上より、前記命令バッファ３１に分岐命令が格納されている間、前記割り込み端子４による割り込みの要求は待たされることになる。
【０１１５】
そして、命令が順次処理され、分岐命令が前記命令バッファ３１に存在しなくなると、前記後続分岐命令検出部３３は「０」を第２論理回路３５に出力する。その後の動作は、第１の実施形態に記載した通りである。
【０１１６】
一方、命令バッファ３１に分岐命令が存在しない場合、すなわち、後続命令に分岐命令が存在しない場合、本実施形態の制御装置は第１の実施形態に記載した通りに動作する。
【０１１７】
以上のように、本実施形態では、分岐命令が後続命令に存在していれば、後続命令に存在している分岐命令の処理が終了するまで、割り込み要求を待機させることができる。その結果、割り込み要求に対して、後続命令に分岐命令がある場合においても、分岐先アドレスを割り込みからの復帰先アドレスとすることができるため、実行中の命令のみでなく、後続する命令に分岐命令が存在した場合を考慮することができる。
【０１１８】
（第４の実施形態）
第４の実施形態では、さらに、後続命令に特殊分岐命令が含まれているか否かを考慮できる。
【０１１９】
図６は、本実施形態におけるＣＰＵ３の構成を示すブロック図である。
【０１２０】
本実施形態におけるＣＰＵ３は、命令メモリ１およびデータメモリ２に接続され、命令メモリ１が格納している命令を処理する。また、ＣＰＵ３は、割り込み端子４と、命令メモリデータバス５と、制御信号生成部６と、データメモリアドレスバス７と、データメモリライトバス８と、データメモリリードバス９と、分岐先アドレスバス１０と、次命令アドレスバス１１と、命令アドレスセレクタ１２と、命令アドレス選択信号バス１３と、プログラムカウンタ１４と、命令メモリアドレスバス１５と、ライトデータセレクタ１６および論理積回路１７を有する復帰先アドレス制御部２０と、分岐命令信号バス１８と、分岐命令検出部１９と、第２論理回路３５と、条件付割込要求信号バス３６と、分岐先アドレス接近検出部４１と、分岐命令アドレス保持テーブル４２と、分岐命令接近信号バス４３とを備えている。
【０１２１】
命令メモリ１は、ＣＰＵ３が処理する命令を格納している。
【０１２２】
データメモリ２は、命令により処理されるデータや割込みの発生時行われる退避処理のデータを格納する。
【０１２３】
割込み端子４は、「１」の入力により前記ＣＰＵ３に割込みを要求する。
【０１２４】
命令メモリデータバス５は、命令データを命令メモリ１から制御信号生成部６および分岐命令検出部１９へ送信するためのデータバスである。
【０１２５】
制御信号生成部６は、第２論理回路３５の出力信号（条件付割込要求信号）および命令メモリ１の出力信号（命令メモリ）を用いて、データメモリアドレス、分岐先アドレス、次命令アドレスおよび命令アドレス選択信号を生成する。
【０１２６】
データメモリアドレスバス７は、データメモリアドレスを前記制御信号生成部６からデータメモリ２へ送信するためのアドレスバスである。
【０１２７】
データメモリライトバス８は、復帰先アドレスをライトデータセレクタ１６からデータメモリ２へ送信するためのバスである。
【０１２８】
データメモリリードバス９は、復帰先アドレスをデータメモリ２から命令アドレスセレクタ１２へ送信するためのバスである。
【０１２９】
分岐先アドレスバス１０は、分岐先アドレスを前記制御信号生成部６から命令アドレスセレクタ１２およびライトデータセレクタ１６へそれぞれ送信するためのアドレスバスである。
【０１３０】
次命令アドレスバス１１は、割込みが発生していない場合は次命令のアドレスを、割込みが要求されている場合は割込み先のアドレスを、前記制御信号生成部６から命令アドレスセレクタ１２へ送信するためのバスである。
【０１３１】
命令アドレスセレクタ１２は、命令アドレス選択信号に従って、データメモリアドレス、分岐先アドレスおよび次命令アドレスを選択して出力する。
【０１３２】
命令アドレス選択信号バス１３は、命令アドレス選択信号を前記制御信号生成部６から命令アドレスセレクタ１２へ送信するためのバスである。
【０１３３】
プログラムカウンタ１４は、実行中の命令アドレスを保持している。
【０１３４】
命令メモリアドレスバス１５は、実行中の命令アドレスを命令メモリ１と分岐命令アドレス保持テーブル４２との間で送受信するためのアドレスバスである。
【０１３５】
ライトデータセレクタ１６は、論理積回路１７の出力値が「１」であれば分岐先アドレスを、論理積回路１７の出力値が「０」であれば命令メモリアドレスバスを、データメモリ２へ出力する。
【０１３６】
論理積回路１７は、分岐命令検出部１９の出力信号（分岐命令信号）と第２論理回路３５の出力信号（条件付割込要求信号）とを積算し、その積算結果をライトデータセレクタ１６に出力する。
【０１３７】
分岐命令信号バス１８は、分岐命令信号を分岐命令検出部１９から論理積回路１７へ送信するためのバスである。
【０１３８】
分岐命令検出部１９は、命令データが分岐命令である場合は「１」を、命令データが分岐命令でない場合は「０」を、論理積回路１７へ出力する。
【０１３９】
第２論理回路３５は、割り込み端子４の出力値が「１」であり後続分岐命令検出信号が「０」である場合には条件付割込要求信号として「１」を出力し、割り込み端子４の出力値が「０」である場合もしくは後続分岐命令検出信号が「１」である場合には条件付割込要求信号として「０」を出力する。
【０１４０】
条件付割込要求信号バス３６は、条件付割込要求信号を第２論理回路３５から制御信号生成部６および論理積回路１７へそれぞれ送信するためのバスである。
【０１４１】
分岐先アドレス接近検出部４１は、分岐命令が後続命令に存在しているか否かを判断し、また、分岐命令接近信号を算出して第２論理回路３５へ出力する。具体的には、分岐先アドレス接近検出部４１は、分岐命令アドレス保持テーブル４２が保持しているアドレスと実行中の命令のアドレスとを用いて、実行中の命令と分岐命令との間の距離を算出する。また、アドレス接近検出部４１は、算出した距離が一定の範囲内であれば分岐命令が後続命令に存在すると判断し、分岐命令接近信号として「１」を出力する。一方、アドレス接近検出部４１は、算出した距離が一定の範囲よりも外にあれば分岐命令が後続命令に存在していないと判断し、分岐命令接近信号として「０」を出力する。
【０１４２】
分岐命令アドレス保持テーブル４２は、前記命令メモリ１に格納されている分岐先アドレスを少なくとも１つ以上保持している。
【０１４３】
分岐命令接近信号バス４３は、分岐命令接近信号を分岐先アドレス接近検出部４１から第２論理回路３５へ送信するためのバスである。
【０１４４】
次に、本実施形態の制御装置における動作を説明する。
【０１４５】
まず、分岐命令が接近している場合を考える。
【０１４６】
なお、ここでは、説明を簡単化するために、次命令までを接近の検出範囲とする、つまり、距離が＋１までに分岐命令があれば分岐命令が接近していると判断する。また、実行される命令は命令Ａ，命令Ｂと順次処理されるものとし、命令Ａが非分岐命令であり命令Ｂが分岐命令である場合を考える。前記分岐先アドレス保持テーブル４２は、分岐命令である命令Ｂのアドレスを格納している。なお、前記分岐先アドレス保持テーブル４２への分岐命令アドレスの格納方法は、本発明の主たる点ではないため、以下では記載しない。
【０１４７】
このとき、まず、分岐先アドレス接近検出部４１が、前記プログラムカウンタ１４の出力値から前記分岐命令アドレス保持テーブル４２の値を減算し、分岐命令が接近しているか否かを検出する。上述のように分岐命令ではない命令（非分岐命令）の後に分岐命令が存在する場合には、前記分岐先アドレス接近検出部４１は、分岐命令が接近していると判断して、分岐命令接近信号として「１」を出力する。
【０１４８】
すると、前記第２論理回路３５には、分岐命令接近信号として「１」が入力される。そのため、たとえ「１」が割り込み端子４から第２論理回路３５に入力されても、第２論理回路３５は、条件付割込要求信号として「０」を出力する。すなわち、割り込み端子４からの割り込み要求は、分岐先アドレス接近検出部４１が「１」を第２論理積回路３５へ出力する間（分岐命令が接近している間）、待たされることになる。
【０１４９】
次に、分岐命令ではない命令が処理され、分岐命令を実行中である場合を考える。
【０１５０】
このとき、まず、分岐先アドレス接近検出部４１は、分岐命令と次命令との距離を算出し、その距離が「０」であることを検出する。すなわち、分岐先アドレス接近検出部４１は、分岐命令が接近していないと判断して、分岐命令接近信号として「０」を出力する。
【０１５１】
その後は、第１の実施形態に従って動作する。
【０１５２】
この構成によれば、割り込み要求に対して、後続命令に分岐命令がある場合においても、分岐先アドレスを割り込みからの復帰先アドレスとすることができる。さらに、実行中の命令のみでなく、後続する命令に分岐命令する場合を考慮でき、加えて特定の分岐命令を選択することができる。
【０１５３】
（第５の実施形態）
第５の実施形態では、第３の実施形態と同じく、実行中の命令のみならず、後続する命令に分岐命令が存在する場合も考慮することができる。さらに、本実施形態では、命令メモリのアクセス時間も考慮することができる。
【０１５４】
図７は、本実施形態におけるＣＰＵ３の構成を示すブロック図である。
【０１５５】
本実施形態におけるＣＰＵ３は、命令メモリ１およびデータメモリ２に接続され、命令メモリ１が格納している命令を処理する。また、ＣＰＵ３は、割り込み端子４と、命令メモリデータバス５と、制御信号生成部６と、データメモリアドレスバス７と、データメモリライトバス８と、データメモリリードバス９と、分岐先アドレスバス１０と、次命令アドレスバス１１と、命令アドレスセレクタ１２と、命令アドレス選択信号バス１３と、プログラムカウンタ１４と、命令メモリアドレスバス１５と、ライトデータセレクタ１６および論理積回路１７を有する復帰先アドレス制御部２０と、分岐命令信号バス１８と、分岐命令検出部１９と、命令バッファ３１と、命令バッファデータバス３２と、後続分岐命令検出部３３と、検出信号バス３４と、条件付割込要求信号バス３６と、命令データバス３７と、命令メモリウェイト設定部５１と、割込条件有効信号バス５２と、演算部（割込要求制御部）５３とを備えている。そして、演算部５３は２つの論理回路５５，５６を有している。
【０１５６】
命令メモリ１は、ＣＰＵ３が処理する命令を格納している。
【０１５７】
データメモリ２は、命令により処理されるデータや割込みの発生時行われる退避処理のデータを格納する。
【０１５８】
割込み端子４は、「１」の入力により前記ＣＰＵ３に割込みを要求する。
【０１５９】
命令メモリデータバス５は、命令データを前記命令メモリ１から命令バッファ３１へ送信するためのデータバスである。
【０１６０】
制御信号生成部６には、条件付割込要求信号（論理回路５６の出力信号）および命令バッファデータ（命令バッファ３１の出力信号）が入力され、データメモリアドレス、分岐先アドレス、次命令アドレスおよび命令アドレス選択信号を生成する。
【０１６１】
データメモリアドレスバス７は、データメモリに対するアドレスを前記制御信号生成部６からデータメモリ２へ送信するためのアドレスバスである。
【０１６２】
データメモリライトバス８は、復帰先アドレスを復帰先アドレス制御部２０からデータメモリ２へ送信するためのバスである。
【０１６３】
データメモリリードバス９は、復帰先アドレスをデータメモリ２から命令アドレスセレクタ１２へ送信するためのバスである。
【０１６４】
分岐先アドレスバス１０は、分岐先アドレスを前記制御信号生成部６から命令アドレスセレクタ１２およびライトデータセクタ１６へそれぞれ送信するためのアドレスバスである。
【０１６５】
次命令アドレスバス１１は、割込みが発生していない場合は次命令のアドレスを、割込みが要求されている場合は割込み先のアドレスを前記制御信号生成部６から命令アドレスセレクタ１２へ送信するためのアドレスバスである。
【０１６６】
命令アドレスセレクタ１２は、命令アドレス選択信号に従って、前記次命令アドレス、前記分岐先アドレスと前記データメモリアドレスを選択して出力する。
【０１６７】
命令アドレス選択信号バス１３は、命令アドレス選択信号を前記制御信号生成部６から命令アドレスセレクタ１２へ送信するためのバスである。
【０１６８】
プログラムカウンタ１４は、実行中の命令アドレスを保持している。
【０１６９】
命令メモリアドレスバス１５は、命令メモリのアドレスを命令メモリ１へ送信するためのアドレスバスである。
【０１７０】
ライトデータセレクタ１６は、論理積回路１７の出力が「１」であれば分岐先アドレスを出力し、論理積回路１７の出力が「０」であれば命令メモリアドレスを出力する。
【０１７１】
論理積回路１７は、分岐命令信号（分岐命令検出部１９の出力信号）と条件付割込要求信号（論理回路５６の出力信号）とを積算し、その積算結果を前記ライトデータセレクタ１６に出力する。
【０１７２】
分岐命令信号バス１８は、分岐命令信号を分岐命令検出部１９から論理積回路１７へ送信するためのバスである。
【０１７３】
分岐命令検出部１９は、命令バッファデータ（命令バッファ３１の出力信号）が分岐命令である場合は分岐命令信号として「１」を出力し、データバスが分岐命令でない場合は分岐命令信号として「０」を出力する。
【０１７４】
命令バッファ３１は、順次命令データを分岐命令検出部１９へ出力するFIFOである。
【０１７５】
命令バッファデータバス３２は、前記命令バッファ３１に格納されているデータを後続分岐命令検出部３３へ送信するためのデータバスである。
【０１７６】
後続分岐命令検出部３３は、命令バッファ３１に格納されているデータの値から実行中の命令を除く後続命令のデータを元に、分岐命令が後続する命令として前記命令バッファ３１に含まれているか否かを検出し、命令バッファ３１の出力信号に分岐命令が含まれている場合は後続分岐命令検出信号として「１」を出力し、命令バッファ３１の出力信号に含まれていない場合は後続分岐命令検出信号として「０」を出力する。
【０１７７】
後続分岐命令検出信号バス３４は、前記後続分岐命令検出信号を論理回路５５に送信するためのバスである。
【０１７８】
条件付割込要求信号バス３６は、前記論理回路５６の出力信号を制御信号生成部６および論理積回路１７へそれぞれ送信するためのバスである。
【０１７９】
命令メモリウェイト制御部５１は、割込条件有効信号を算出して論理回路５５へ出力する。具体的には、命令メモリウェイト制御部５１には、前記命令メモリ１から命令データが出力されるまでに必要なサイクル数が設定されている。命令メモリウェイト制御部５１は、そのサイクル数が一定数以上であれば論理回路５５に割込条件有効信号として「０」を出力し、そのサイクル数が一定未満であれば論理回路５５に割込条件有効信号として「１」を出力する。
【０１８０】
割込条件有効信号バス５２は、割込条件有効信号を前記命令メモリウェイト設定部５１から論理回路５５へ送信するためのバスである。
【０１８１】
演算部５３は、上述のように論理回路５５および論理回路５６を有している。論理回路５５には、後続分岐命令検出信号（後続分岐命令検出部３３の出力信号）および割込条件有効信号（命令メモリウェイト設定部５１の出力信号）が入力される。
【０１８２】
また、論理回路５６は、条件付割込要求信号を積算して制御信号生成部６および論理積回路１７にそれぞれ出力する。具体的には、論理回路５６は、割り込み端子４の出力信号が「１」であり、後続分岐検出信号が「０」であるもしくは割り込み要件有効信号が「０」である場合には、条件付割込要求信号として「１」を出力する。
【０１８３】
次に、図７に示すＣＰＵ３における動作を説明する。
【０１８４】
まず、前記命令メモリ１のウェイトが一定以上であると前記命令メモリウェイト制御部５１が判断した場合について考える。
【０１８５】
この場合、前記命令メモリウェイト制御部５１は、前記割込条件有効信号として「０」を演算部５３へ出力する。すると、演算部５３は、前記割り込み端子４の出力値と同一値を出力する。つまり、前記割込条件有効信号が「０」である場合、本実施形態におけるＣＰＵ３は、第１の実施形態と略同一の構成となる。
【０１８６】
次に、前記命令メモリウェイト制御部５１が前記命令メモリ１のウェイトが一定未満であると判断した場合について考える。
【０１８７】
この場合、前記命令メモリウェイト制御部５１は、前記割込条件有効信号として「１」を演算部５３へ出力する。すると、演算部５３は、前記割り込み端子４の出力値と前記後続分岐命令検出信号の値とを用いて、前記条件付割込要求信号を算出して出力する。つまり、前記割込条件有効信号が「１」である場合、本実施形態におけるＣＰＵ３は、第３の実施形態と略同一の構成となる。
【０１８８】
この構成によれば、割り込み要求に対して、後続命令に分岐命令がある場合においても、分岐先アドレスを割り込みからの復帰先アドレスとすることができるため、実行中の命令のみでなく、後続する命令に分岐命令が存在した場合を考慮することができ、加えて、前記命令メモリ１のアクセス時間を考慮することができる。
【０１８９】
（第６の実施形態）
第６の実施形態では、第３の実施形態と同じく、実行中の命令のみならず、後続する命令に分岐命令が存在する場合も考慮することができる。さらに、本実施形態では、割り込み処理が複数存する場合にも適用することができる。
【０１９０】
図８は、本実施形態におけるＣＰＵ３の構成を示すブロック図である。
【０１９１】
本実施形態におけるＣＰＵ３は、命令メモリ１およびデータメモリ２に接続され、命令メモリ１が格納している命令を実行する。また、ＣＰＵ３は、命令メモリデータバス５と、制御信号生成部６と、データメモリアドレスバス７と、データメモリライトバス８と、データメモリリードバス９と、分岐先アドレスバス１０と、次命令アドレスバス１１と、命令アドレスセレクタ１２と、命令アドレス選択信号バス１３と、プログラムカウンタ１４と、命令メモリアドレスバス１５と、ライトデータセレクタ１６および論理積回路１７を有する復帰先アドレス制御部２０と、分岐命令信号バス１８と、分岐命令検出部１９と、命令バッファ３１と、命令バッファデータバス３２と、後続分岐命令検出部３３と、検出信号バス３４と、条件付割込要求信号バス３６と、命令データバス３７と、割込条件有効信号バス５２と、２つの論理回路５５，５６を有する演算部５３と、割込要求端子群６１と、割込要求属性選択部６２と、割り込み属性テーブル６３と、割り込み条件信号バス６４とを備えている。
【０１９２】
命令メモリ１は、ＣＰＵ３が処理する命令を格納している。
【０１９３】
データメモリ２は、命令により処理されるデータや割込みの発生時行われる退避処理のデータを格納する。
【０１９４】
命令メモリデータバス５は、命令データを前記命令メモリ１から命令バッファ３１へ送信するためのデータバスである。
【０１９５】
制御信号生成部６は、データメモリアドレスバス、分岐先アドレス、次命令アドレスおよび命令アドレス選択信号を生成する。
【０１９６】
データメモリアドレスバス７は、データメモリに対するアドレスを制御信号生成部６からデータメモリ２へ送信するためのアドレスバスである。
【０１９７】
データメモリライトバス８は、復帰先アドレスをライトデータセレクタ１６からデータメモリ２へ送信するためのバスである。
【０１９８】
データメモリリードバス９は、復帰先アドレスをデータメモリ２から命令アドレスセレクタ１２へ送信するためのバスである。
【０１９９】
分岐先アドレスバス１０は、分岐命令による分岐先アドレスを前記制御信号生成部６から命令アドレスセレクタ１２およびライトデータセレクタ１６へ送信するためのアドレスバスである。
【０２００】
次命令アドレスバス１１は、割込みが発生していない場合は次命令のアドレスを、割込みが要求されている場合は割込み先のアドレスを、前記制御信号生成部６から命令アドレスセレクタ１２へ送信するためのアドレスバスである。
【０２０１】
命令アドレスセレクタ１２は、命令アドレス選択信号に従って、前記次命令アドレス、前記分岐先アドレスおよび前記データメモリアドレスを選択して出力する。
【０２０２】
命令アドレス選択信号バス１３は、命令アドレス選択信号を前記制御信号生成部６から命令アドレスセレクタ１２へ送信するためのバスである。
【０２０３】
プログラムカウンタ１４は、実行中の命令アドレスを保持している。
【０２０４】
命令メモリアドレスバス１５は、命令メモリのアドレスを命令メモリ１へ送信するためのアドレスバスである。
【０２０５】
ライトデータセレクタ１６は、論理積回路１７の出力が「１」であれば分岐先アドレスを、論理積回路１７の出力が「０」であれば命令メモリアドレスバスを出力する。
【０２０６】
論理積回路１７は、分岐命令信号（分岐命令検出部１９の出力信号）と条件付割込要求信号（演算部５３の出力信号）とを積算し、積算結果をライトデータセレクタ１６へ出力する。
【０２０７】
分岐命令信号バス１８は、分岐命令信号を分岐命令検出部１９から論理積回路１７へ送信するためのバスである。
【０２０８】
分岐命令検出部１９は、命令バッファデータ（命令バッファ３１の出力値）が分岐命令である場合は分岐命令信号として「１」を出力し、命令データが分岐命令でない場合は分岐命令信号として「０」を出力する。
【０２０９】
命令バッファ３１は、順次命令データを分岐命令検出部１９へ出力するFIFOである。
【０２１０】
命令バッファデータバス３２は、前記命令バッファ３１に格納されているデータを後続分岐命令検出部３３へ送信するためのデータバスである。
【０２１１】
後続分岐命令検出部３３は、命令バッファデータ（命令バッファ３１の出力値）から実行中の命令を除く後続命令のデータを元に、分岐命令が後続する命令として前記命令バッファ３１に含まれているか否かを検出し、命令バッファ３１に分岐命令が含まれている場合は後続分岐命令検出信号として「１」を出力し、命令バッファ３１に分岐命令が含まれていない場合は後続分岐命令検出信号として「０」を出力する。
【０２１２】
後続分岐命令検出信号バス３４は、後続分岐命令検出信号を前記後続分岐命令検出部３３から演算部５３の論理回路５５へ送信するためのバスである。
【０２１３】
条件付割込要求信号バス３６は、演算部５３の論理回路５６の出力信号を制御信号生成部６および論理積回路１７へそれぞれ送信するためのバスである。
【０２１４】
割込条件有効信号バス５２は、割り込み属性テーブル６３の出力値を演算部５３の論理回路５５へ送信するためのバスである。
【０２１５】
演算部５３は、上述のように論理回路５５および論理回路５６を有している。論理回路５５には、後続分岐命令検出信号（後続分岐命令検出部３３の出力信号）および割込条件有効信号（命令メモリウェイト設定部５１の出力信号）が入力される。論理回路５６は、割り込み端子４の出力信号が「１」であり、後続分岐検出信号が「０」であるもしくは割り込み要件有効信号が「０」である場合には、条件付割込要求信号として「１」を出力する。
【０２１６】
割込要求端子群６１は、複数の割り込み端子を有している。
【０２１７】
割込要求属性選択部６２は、割込要求属性テーブル６３を有しており、前記割込条件有効信号および割込要求信号を出力する。具体的には、前記割込要求端子群６１が割込要求属性選択部６２に割り込みを通知した場合、前記割り込み属性選択部６２は、それぞれの割り込みに応じて、割込要求属性テーブル６３に基づいて、直ちに割り込みを要求すべきか否かを選択する。そして、直ちに割り込み要求すべき場合には、割込要求属性選択部６２は、割込要求信号として「１」を出力し、前記割込条件有効信号として「０」を出力する。一方、直ちに割込要求すべきではない場合、割込要求属性選択部６２は、割込要求信号および前記割込条件有効信号としてそれぞれ「１」を出力する。
【０２１８】
割込要求属性テーブル６３は、前記割込要求端子群６１のそれぞれの割込要求に対して、直ちに割込要求すべきか否かの情報を保持している。
【０２１９】
割込要求信号バス６４は、前記割込要求属性選択部６２の出力信号を演算部５３の論理回路５６に入力するためのバスである。
【０２２０】
次に、図８に示すＣＰＵ３の動作を示す。
【０２２１】
まず、割込要求が直ちに割り込みを要求すべきであるという属性を持つ場合を考える。
【０２２２】
このとき、割込要求端子群６１が何れの割込要求を割り込み属性テーブル６３へ出力しても、前記割込要求属性テーブル６３は、直ちに割り込みを要求すべきであると判定する。すると、前記割込要求属性選択部６２は、割込要求信号として「１」を出力するとともに、割込条件有効信号として「０」を出力する。その結果、演算部５３は、割り込み条件要求信号と同一の値を出力する。つまり、前記割込条件有効信号が「０」であれば、本実施形態は第１の実施形態と同等の構成となる。
【０２２３】
次に、割込要求が直ちに割り込みを要求する必要はないという属性を持つ場合を考える。
【０２２４】
このとき、割込要求端子群６１が何れの割込要求を割り込み属性テーブル６３へ出力しても、前記割込要求属性テーブル６３は、直ちに割り込みを要求する必要はないと判定する。すると、前記割込要求属性選択部６２は、割込要求信号として「１」を出力し、割込条件有効信号として「１」を出力する。その結果、演算部５３は、割込条件有効信号と同一の値を出力する。つまり、前記割込条件有効信号が「１」であれば、本実施形態は第３の実施形態と同等の構成となる。
【０２２５】
この構成によれば、割込要求に対して、後続命令に分岐命令がある場合においても、分岐先アドレスを割り込みからの復帰先アドレスとすることができるため、実行中の命令のみでなく、後続する命令に分岐命令が存在した場合を考慮することができ、加えて、複数の割り込みに対して、直ちに割り込みを要求するか否かの属性を考慮することができる。
【産業上の利用可能性】
【０２２６】
本発明にかかる処理装置は、分岐命令と割り込みを有する処理装置に適用可能であり、マイコンなどの高速計算機等に有用である。また処理装置を内包するあらゆる装置、たとえばＤＶＤやデジタルカメラ、携帯電話などにも応用できる。
【図面の簡単な説明】
【０２２７】
【図１】本発明の動作フロー
【図２】本発明の分岐命令実行時の割込み動作フロー
【図３】本発明の第１の実施形態における処理装置の構成を示すブロック図
【図４】本発明の第２の実施形態における処理装置の構成を示すブロック図
【図５】本発明の第３の実施形態における処理装置の構成を示すブロック図
【図６】本発明の第４の実施形態における処理装置の構成を示すブロック図
【図７】本発明の第５の実施形態における処理装置の構成を示すブロック図
【図８】本発明の第６の実施形態における処理装置の構成を示すブロック図
【図９】従来の動作フロー
【図１０】従来の分岐命令実行時の割込み動作フロー
【符号の説明】
【０２２８】
１    命令メモリ
２    データメモリ
３    ＣＰＵ（中央処理装置）
４    割込み端子
５    命令メモリデータバス
６    制御信号生成部
７    データメモリアドレスバス
８    データメモリライトバス
９    データメモリリードバス
１０    分岐先アドレスバス
１１    次命令アドレスバス
１２    命令アドレスセレクタ
１３    命令アドレス選択信号バス
１４    プログラムカウンタ
１５    命令メモリアドレスバス
１６    ライトデータセレクタ
１７    論理積回路
１８    分岐命令信号バス
１９    分岐命令検出部
２０，２５    復帰先アドレス制御部
２１    特殊分岐命令検出部
２２    特殊分岐命令制御端子
２３，５５，５６    論理回路
３１    命令バッファ
３２    命令バッファデータバス
３３    後続分岐命令検出部
３４    後続分岐命令検出信号バス
３５    第２論理回路
３６    条件付割込要求信号バス
３７    命令データバス
４１    分岐先アドレス接近検出部
４２    分岐命令アドレス保持テーブル
４３    分岐命令接近信号バス
５１    命令メモリウェイト制御部
５２    割込条件有効信号
５３    演算部
６１    割込要求端子群
６２    割込要求属性選択部
６３    割込要求属性テーブル
６４    割込要求信号バス
【図１】
2008134678.tif 000003
【図２】
2008134678.tif 000004
【図３】
2008134678.tif 000005
【図４】
2008134678.tif 000006
【図５】
2008134678.tif 000007
【図６】
2008134678.tif 000008
【図７】
2008134678.tif 000009
【図８】
2008134678.tif 000010
【図９】
2008134678.tif 000011
【図１０】
2008134678.tif 000012