(57)【特許請求の範囲】
【請求項１】
ハーバードアーキテクチャを採用しパイプライン制御を行う情報処理装置であって、
ハードウエア割り込みが発生すると、メモリに対するアクセスを伴わないインストラクションサイクルにおけるデータバスの空きステージで、当該割り込みにより必要なレジスタの退避処理を行うレジスタ退避処理手段と、
割り込み先の処理ルーティンで退避が完了していないレジスタに対してライトしようとした場合には、当該レジスタの退避が完了するまでレジスタへのライト命令の実行を遅らせる手段と、
を含むことを特徴とする情報処理装置。
【請求項２】
ハーバードアーキテクチャを採用しパイプライン制御を行う情報処理装置であって、
ハードウエア割り込みから復帰を行う際に、復帰後の処理ルーチンにおいてメモリに対するアクセスを伴わないインストラクションサイクルにおけるデータバスの空きステージで、レジスタの復帰処理を行うレジスタ復帰処理手段と、
復帰後の処理ルーティンで復帰が完了していないレジスタに対してアクセスしようとした場合には、当該レジスタの復帰が完了するまでレジスタへのアクセス命令の実行を遅らせる手段と、
を含むことを特徴とする情報処理装置。
【請求項３】
請求項１乃至２のいずれかに記載の情報処理装置と、
前記情報処理装置の処理対象となるデータの入力手段と、
前記情報処理装置により処理されたデータを出力するための出力手段とを含むことを特徴とする電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置及び電子機器に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
多くのプロセッサでは割り込みが発生した際にメモリに対してレジスタの退避を行うか、割り込み用の退避レジスタを用意している。
【０００３】
しかし前者の場合には、割り込み発生時にはメモリに対してレジスタの退避を行ってから割り込み後の処理を開始し、また復帰する際にはメモリからレジスタの復帰を行ってから復帰後の処理を開始するため、応答速度が遅くなってしまうという問題点があった。
【０００４】
また後者のように割り込み用の退避レジスタを用意している場合でも、割り込みが多重化した場合には、結局メモリへの退避やメモリからの復帰を行うことが必要になる。この場合同じ割り込みでも応答速度が異なってくるという問題点があった。
【０００５】
本発明は以上のような問題点に鑑みてなされたものであり、その目的とするところは、割り込み時にばらつきなく早い応答速度を実現可能なアーキテクチャを有する情報処理装置及び電子機器の提供を目的とする。
【０００６】
【課題を解決するための手段】
（１）本発明はハーバードアーキテクチャを採用しパイプライン制御を行う情報処理装置であって、割り込みが発生すると、メモリに対するアクセスを伴わないインストラクションサイクルにおけるデータバスの空きステージで、当該割り込みにより必要なレジスタの退避処理を行うレジスタ退避処理手段を、含むことを特徴とする。
【０００７】
ここにおいて情報処理装置は例えばＣＰＵ、ＤＳＰ、マイクロプロセッサ、コンピュータ等のプロセッサである。
【０００８】
また割り込みは、情報処理装置がハードウエアの割り込み信号を受けることにより発生する。例えば割り込みの要因には停電、装置や機器の誤動作、入出力機器からの要求、プログラムの誤り、タイマーからの時間報告等がある。
【０００９】
ハーバードアーキテクチャを採用する情報処理装置では命令バスとデータバスが分離されている。
【００１０】
ハーバードアーキテクチャを採用しパイプライン制御を行う場合、メモリに対するアクセスを伴わないインストラクションサイクルのメモリアクセスステージではデータバスが空き状態となっている。
【００１１】
本発明によれば、割り込みが発生すると外部から与えられたインストラクションコードによらずに、割り込み後に実行される処理ルーチンのインストラクションサイクルにおける前記データバスの空きステージで、当該割り込みにより必要なレジスタの退避処理を行う。
【００１２】
従って従来のようにコンパイラによって生成されたレジスタ退避の命令を実行した後に割り込み後の処理を実行する場合に比べ、割り込みの応答速度の向上を図ることができる。
【００１３】
また割り込み時のレジスタ退避命令を外部から与える必要がないため、その分のオブジェクトコードが削減できる。
【００１４】
なおレジスタ退避処理手段は、ハードワイヤード方式で実現してもよいし、マイクロプログラム方式で実現してもよい。
【００１５】
（２）本発明の情報処理装置は、割り込み先の処理ルーティンで退避が完了していないレジスタに対してライトしようとした場合には、当該レジスタの退避が完了するまでレジスタへのライト命令の実行を遅らせる手段を、含むことを特徴とする。
【００１６】
このようにすることで、割り込み発生後所与のレジスタの退避が完了する前に、割り込み先の処理ルーティンで当該レジスタに対してライトするのを防止することができる。
【００１７】
（３）本発明の情報処理装置は、割り込みから復帰を行う際に、復帰後の処理ルーチンにおいてメモリに対するアクセスを伴わないインストラクションサイクルにおけるデータバスの空きステージで、レジスタの復帰処理を行うレジスタ復帰処理手段を、含むことを特徴とする。
【００１８】
本発明によれば、割り込みから復帰を行う際に外部から与えられたインストラクションコードによらずに、復帰後の処理ルーチンにおいてメモリに対するアクセスを伴わないインストラクションサイクルにおけるデータバスの空きステージで、レジスタの復帰処理を行う。
【００１９】
従来はレジスタの復帰命令を実行してから、復帰後の処理ルーチンの実行を行っていた。しかし本発明では復帰後の処理ルーチンのインストラクションサイクルにおけるデータバスの空きステージを利用してレジスタの復帰処理を行う。
【００２０】
ここで復帰後にレジスタの復帰処理を開始するためには、例えば復帰命令実行後にレジスタの復帰処理を開始するようにするとよい。
【００２１】
したがって従来のようにコンパイラによって生成されたレジスタの復帰の命令を実行した後に復帰後の処理ルーチンを実行する場合に比べ、復帰時の応答速度の向上を図ることができる。
【００２２】
また割り込み時のレジスタ退避命令を外部から与える必要がないため、その分のオブジェクトコードが削減できる。
【００２３】
なおレジスタ退避処理手段は、ハードワイヤード方式で実現してもよいし、マイクロプログラム方式で実現してもよい。
【００２４】
（４）本発明の情報処理装置は、復帰後の処理ルーティンで復帰が完了していないレジスタに対してアクセスしようとした場合には、当該レジスタの復帰が完了するまでレジスタへのアクセス命令の実行を遅らせる手段を、含むことを特徴とする。
【００２５】
このようにすることで、所与のレジスタの復帰が完了する前に、復帰後の処理ルーティンで当該レジスタに対してアクセスするのを防止することができる。
【００２６】
（５）本発明は、ハーバードアーキテクチャを採用しパイプライン制御を行う情報処理装置であって、割り込みから復帰を行う際に、復帰後の処理ルーチンにおいてメモリに対するアクセスを伴わないインストラクションサイクルにおけるデータバスの空きステージで、レジスタの復帰処理を行うレジスタ復帰処理手段を、含むことを特徴とする。
【００２７】
ここにおいて情報処理装置は例えばＣＰＵ、ＤＳＰ、マイクロプロセッサ、コンピュータ等のプロセッサである。
【００２８】
ハーバードアーキテクチャとは命令バスとデータバスが分離されていることを意味する。
【００２９】
ハーバードアーキテクチャを採用しパイプライン制御を行う場合、メモリに対するアクセスを伴わないインストラクションサイクルのメモリアクセスステージではデータバスが空き状態となっている。
【００３０】
本発明によれば、割り込みから復帰を行う際に外部から与えられたインストラクションコードによらずに、復帰後の処理ルーチンにおいてメモリに対するアクセスを伴わないインストラクションサイクルにおけるデータバスの空きステージで、レジスタの復帰処理を行う。
【００３１】
従来はレジスタの復帰命令を実行してから、復帰後の処理ルーチンの実行を行っていた。しかし本発明では復帰後の処理ルーチンにおける空きステージを利用してレジスタの復帰処理を行う。
【００３２】
ここで復帰後にレジスタの復帰処理を開始するためには、例えば復帰命令実行後にレジスタの復帰処理を開始するようにするとよい。
【００３３】
したがって従来のようにコンパイラによって生成されたレジスタの復帰の命令を実行した後に復帰後の処理ルーチンを実行する場合に比べ、復帰時の応答速度の向上を図ることができる。
【００３４】
また割り込み時のレジスタ退避命令を外部から与える必要がないため、その分のオブジェクトコードが削減できる。
【００３５】
なおレジスタ退避処理手段は、ハードワイヤード方式で実現してもよいし、マイクロプログラム方式で実現してもよい。
【００３６】
（６）本発明の情報処理装置は、復帰後の処理ルーティンで復帰が完了していないレジスタに対してアクセスしようとした場合には、当該レジスタの復帰が完了するまでレジスタへのアクセス命令の実行を遅らせる手段を、
含むことを特徴とする。
【００３７】
このようにすることで、所与のレジスタの復帰が完了する前に、復帰後の処理ルーティンで当該レジスタに対してアクセスするのを防止することができる。
【００３８】
（７）本発明の電子機器は、上記いずれかに記載の情報処理装置と、前記情報処理装置の処理対象となるデータの入力手段と、前記情報処理装置により処理されたデータを出力するための出力手段とを含むことを特徴とする。
【００３９】
本実施の形態の電子機器によれば、割り込みに対し早い応答が可能な電子機器を提供することができる。
【００４０】
【発明の実施の形態】
１．情報処理装置
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００４１】
図１〜図３を用いて本実施の形態で採用するアーキテクチャの特徴および従来のアークテクチャとの違いについて説明する。
【００４２】
図１は割り込みが発生した場合の処理の概要について説明するための図である。  ａルーティン２００のインストラクションａmの実行中に割り込み２１０が発生すると、割り込みルーティン２２０に処理が移行する。そして割り込みルーチン２２０の処理が終了すると、割り込み復帰インストラクション（リターン）２２８により、ａルーティン２００のインストラクションａm+1に戻り、そこから再びａルーティンの処理を開始する。すなわち▲１▼〜▲２▼〜▲３▼の順に処理が行われる。
【００４３】
図２は割り込みが発生した場合に実行されるインストラクションの従来例について説明するための図である。
【００４４】
２２０’は従来の割り込みルーチンについてコンパイラが展開したインストラクションのリストである。ｓ0〜ｓx（２２２’）はレジスタの退避命令であり、ｂ1〜ｂnは割り込み処理のインストラクション群であり、ｌ0〜ｌx（２２２’）はレジスタの復帰命令である。従来の割り込み処理では、割り込みが発生すると、この順でこれらのインストラクションが実行され、割り込み復帰インストラクション（リターン）２２８により、ａルーティン２００に復帰していた。
【００４５】
このためメモリに対するレジスタの退避命令（２２２’）が終了してからでないと割り込み後の処理（２２４’）が開始できないため、割り込み処理の応答がその分だけ遅くなっていた。また復帰する際にはメモリからレジスタの復帰命令（２２６’）が終了してからａルーティンの処理を開始していため、復帰の際の応答もその分だけ遅くなっていた。
【００４６】
図３は本実施の形態で割り込みが発生した場合に実行されるインストラクションの例について説明するための図である。
【００４７】
２２０は本実施の形態の割り込みルーチンについてコンパイラが展開したインストラクションのリストである。本実施の形態では、図２のｓ0〜ｓx（２２２’）に示すようなレジスタの退避命令や、図２のｌ0〜ｌx（２２６’）に示すようなレジスタの復帰命令は生成されず、割り込み処理のインストラクション群ｂ1〜ｂnとリターン命令２２８のみが生成される。
【００４８】
したがって割り込みが発生すると、すぐに割り込み処理のインストラクション群ｂ1〜ｂnの実行が開始され、割り込み処理のインストラクション群ｂ1〜ｂnの実行が終了するとすぐにａルーティンの処理（ａn+1以降のインストラクション）の実行が開始される。
【００４９】
本実施の形態では当該割り込みにより必要なレジスタの退避処理は、割り込み処理のインストラクション群ｂ1〜ｂn（２２４）のメモリに対するアクセスを伴わないインストラクションサイクルにおけるデータバスの空きステージで行う。すなわちコンパイラが生成したインストラクション（外部から与えられたインストラクションコード）によらずに、例えばハードワイヤード方式やマイクロプログラム方式等で実現される。
【００５０】
ここにおいて割り込みルーティンの実行中２２４に、退避が完了していないレジスタに対してライトしようとした場合には、当該レジスタの退避が完了してからレジスタへのライト命令が実行されるように制御する処理を行う。
【００５１】
また本実施の形態では、割り込みから復帰の際に必要なレジスタの復帰処理は、復帰後のａルーティン（２０４）のメモリに対するアクセスを伴わないサイクルにおけるデータバスの空きステージで行う。すなわちコンパイラが生成したインストラクション（外部から与えられたインストラクションコード）によらずに、例えばハードワイヤード方式やマイクロプログラム方式等で実現される。
【００５２】
ここにおいて復帰後のａルーティン（２０４）実行中に、復帰が完了していないレジスタに対してアクセスしようとした場合には、当該レジスタの復帰が完了してからレジスタへのアクセス命令が実行されるように制御する処理を行う。
【００５３】
図４は本実施の形態のアーキテクチャを有するプロセッサ（情報処理装置）の構成について説明するための図である。
【００５４】
ここで３１０はプロセッサ（情報処理装置）であり、３２０は割り込み信号線、３３０はレジスタである。また４００は外部／内部メモリであり、プロセッサで解読、実行されるインストラクションコード等が記憶されたインストラクションメモリ４１０と、実行時に使用されるデータ等が記憶されたデータメモリ４２０とを含む。
【００５５】
本実施の形態のプロセッサ（情報処理装置）３１０はハーバードアーキテクチャを採用しており、命令バス（インストラクションアドレス３４０、インストラクションデータ３５０）とデータバス（データアドレスバス３６０、データバス３７０）が分離されている。
【００５６】
図５は本実施の形態のアーキテクチャを有するプロセッサのパイプライン制御の一例について説明するための図である。
【００５７】
本実施の形態では、例えば図５に示すように５段のパイプライン制御をおこなう。ＩＦはインストラクションフェッチステージであり、ＩＤはインストラクションデコードステージであり、ＥＸは実行ステージであり、ＭＥＭはメモリアクセスステージであり、ＷＢはレジスタライトステージである。
【００５８】
ハーバードアーキテクチャを採用しパイプライン制御を行う場合、メモリに対するアクセスを伴わないインストラクションサイクルでは、例えばメモリアクセスステージＭＥＭやレジスタライトステージＷＢ等のメモリアクセスステージではデータバス（図４のデータアドレスバス３６０やデータバス３７０）が空き状態となっている。
【００５９】
メモリに対するアクセスを伴わないインストラクションとは例えば、分岐命令やレジスタのみ操作する命令等である。
【００６０】
本実施の形態では、割り込みが発生すると例えばレジスタ退避フラグをＯＮにする。レジスタ退避フラグがオンの間は、インストラクションのデコードの際に当該インストラクションがメモリに対するアクセスを伴なうか否かを判断し、メモリに対するアクセスを伴わない場合には当該インストラクションサイクルにおけるデータバスの空きステージであるメモリアクセスステージＭＥＭやレジスタライトステージＷＢを利用して、レジスタの退避処理を行う。そしてレジスタ退避処理が終わるとレジスタ退避フラグをＯＦＦにする。
【００６１】
ここで例えば各レジスタごとにレジスタ退避フラグを用意して、各レジスタの退避処理が終わると各レジスタ退避フラグをＯＦＦにするようにしてもよい。そしてレジスタ退避フラグがＯＮのレジスタに対するライト命令をデコードした場合には、当該レジスタの退避処理が終わるまで、ライト命令の実行を遅らせるようにする。
【００６２】
また本実施の形態では、割り込み復帰命令が実行されると例えばレジスタ復帰フラグをオンにする。そしてレジスタ復帰フラグがオンの間は、インストラクションのデコードの際に当該インストラクションがメモリに対するアクセスを伴なうか否かを判断し、メモリに対するアクセスを伴わない場合には当該インストラクションサイクルにおけるデータバスの空きステージであるメモリアクセスステージＭＥＭとレジスタライトステージＷＢを利用して、レジスタの復帰処理を行う。そしてレジスタ退避処理が終わるとレジスタ復帰フラグをＯＦＦにする。
【００６３】
ここで例えば各レジスタごとにレジスタ復帰フラグを用意して、各レジスタの復帰処理が終わると各レジスタ復帰フラグをＯＦＦにするようにしてもよい。そしてレジスタ復帰フラグがＯＮのレジスタに対するアクセス命令をデコードした場合には、当該レジスタの復帰処理が終わるまで、アクセス命令の実行を遅らせるようにする。
【００６４】
図６は本実施の形態のプロセッサの割り込みアーキテクチャについて説明するためのフローチャ−ト図である。
【００６５】
本実施の形態のプロセッサは各インストラクションサイクルにおいて以下の処理を行う。
【００６６】
まず割り込みによるレジスタの退避又は復帰処理は終了しているか否か判断する（ステップＳ１０）。
【００６７】
終了している場合にはレジスタの退避又は復帰処理は行わない（ステップＳ１０、Ｓ２０）。
【００６８】
また終了していない場合には、当該インストラクションがＬｏａｄ又はＳｔｏｒｅ命令であるか判断する（ステップＳ３０）。
【００６９】
当該インストラクションがＬｏａｄ又はＳｔｏｒｅ命令である場合には、レジスタの退避又は復帰処理は行わない（ステップＳ３０、Ｓ２０）。Ｌｏａｄ又はＳｔｏｒｅ命令である場合には、当該命令自体がメモリに対してアクセスを行うので、当該インストラクションサイクルにおけるデータバスの空きステージがないからである。
【００７０】
当該インストラクションがＬｏａｄ又はＳｔｏｒｅ命令でない場合には、当該インストラクションがレジスタアクセス命令であるかいなか判断する（ステップＳ４０）。
【００７１】
レジスタアクセス命令でない場合には、当該インストラクションの命令サイクルのデータバスの空きステージで退避又は復帰の終了していないレジスタの退避又は復帰を行う（ステップＳ４０、Ｓ６０）。
【００７２】
レジスタアクセス命令である場合には、命令対象レジスタの退避又は復帰が終了しているかいなか判断する（ステップＳ５０）。
【００７３】
そして終了している場合には、当該インストラクションの命令サイクルのデータバスの空きステージで退避又は復帰の終了していないレジスタの退避又は復帰を行う（ステップＳ５０、Ｓ６０）。
【００７４】
終了していない場合には当該インストラクションの実行を中断して命令対象レジスタの退避又は復帰をおこない、再びステップＳ１０に戻る（ステップＳ５０、Ｓ７０）。
【００７５】
２．情報処理装置
図７は、本実施の形態のマイクロコンピュータのハードウエアブロック図の一例である。
【００７６】
本マイクロコンピュータ７００は、ＣＰＵ５１０、キャッシュメモリ５２０、ＬＣＤコントローラ５３０、リセット回路５４０、タイマー回路５５０、リアルタイムクロック（ＲＴＣ）５６０、ＤＡＭ５７０、割り込みコントローラ５８０、シリアルインターフェース５９０、バスコントローラ６００、Ａ／Ｄ変換器６１０、Ｄ／Ａ変換器６２０、入力ポート６３０、出力ポート６４０、Ｉ／Ｏポート６５０、クロック発生装置５６０、プリスケーラ５７０、及びそれらを接続する各種バス６８０等、各種ピン６９０等を含む。
【００７７】
ここでＣＰＵ５１０は、ハーバードアーキテクチャを採用しパイプライン制御を行、図３〜図６で説明した割り込みアーキテクチャを有している。
【００７８】
３．電子機器
図８に、本実施の形態の電子機器のブロック図の一例を示す。本電子機器８００は、マイクロコンピュータ（またはＡＳＩＣ）８１０、入力部８２０、メモリ８３０、電源生成部８４０、ＬＣＤ８５０、音出力部８６０を含む。
【００７９】
ここで、入力部８２０は、種々のデータを入力するためのものである。マイクロコンピュータ８１０は、この入力部８２０により入力されたデータに基づいて種々の処理を行うことになる。メモリ８３０は、マイクロコンピュータ８１０などの作業領域となるものである。電源生成部８４０は、電子機器８００で使用される各種電源を生成するためのものである。ＬＣＤ８５０は、電子機器が表示する各種の画像（文字、アイコン、グラフィック等）を出力するためのものである。  音出力部８６０は、電子機器８００が出力する各種の音（音声、ゲーム音等）を出力するためのものであり、その機能は、スピーカなどのハードウェアにより実現できる。
【００８０】
本実施の形態の電子機器は例えばＣＤとかＤＶＤ等である。
【００８１】
本実施の形態の電子機器によれば、割り込みに対し早い応答が可能な電子機器を提供することができる。
【００８２】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【００８３】
例えばパイプラインの構成も図５で説明した場合にかぎられない。
【００８４】
またレジスタの本数も図４の場合に限られない。
【００８５】
また図６で説明した処理も内容は例えばハードワイヤード方式で実現する場合でもよいし、マイクロプログラム方式等で実現する場合でもよい。
【図面の簡単な説明】
【図１】割り込みが発生した場合の処理の概要について説明するための図である。
【図２】割り込みが発生した場合に実行されるインストラクションの従来例について説明するための図である。
【図３】本実施の形態で割り込みが発生した場合に実行されるインストラクションの例について説明するための図である。
【図４】本実施の形態のアーキテクチャを有するプロセッサの構成について説明するための図である。
【図５】本実施の形態のアーキテクチャを有するプロセッサのパイプライン制御の一例について説明するための図である。
【図６】本実施の形態のプロセッサの割り込みアーキテクチャについて説明するためのフローチャ−ト図である。
【図７】本実施の形態のマイクロコンピュータのハードウエアブロック図の一例である。
【図８】マイクロコンピュータを含む電子機器のブロック図の一例を示す。
【符号の説明】
３１０  プロセッサ（情報処理装置）
３２０  割り込み信号線
３３０  レジスタ
３４０  インストラクションアドレスバス
３５０  インストラクションデータバス
３６０  データアドレスバス
３７０  データバス
４００  外部／内部メモリ
４１０  インストラクションメモリ
４２０  データメモリ
５１０  ＣＰＵ
５３０  ＬＣＤコントローラ
５４０  リセット回路
５５０  プログラマブルタイマ
５６０  リアルタイムクロック（ＲＴＣ）
５７０  ＤＲＡＭコントローラ兼バスＩ／Ｆ
５８０  割り込みコントローラ
５９０  シリアルインターフェース
６００  バスコントローラ
６１０  Ａ／Ｄ変換器
６２０  Ｄ／Ａ変換器
６３０  入力ポート
６４０  出力ポート
６５０  Ｉ／Ｏポート
６６０  クロック発生装置（ＰＬＬ）
６７０  プリスケーラ
６８０  各種バス
６９０  各種ピン
７００  マイクロコンピュータ
７１０  ＲＯＭ
７２０  ＲＡＭ
８００  電子機器
【図１】
0003729250.tif 000002
【図２】
0003729250.tif 000003
【図３】
0003729250.tif 000004
【図４】
0003729250.tif 000005
【図５】
0003729250.tif 000006
【図６】
0003729250.tif 000007
【図７】
0003729250.tif 000008
【図８】
0003729250.tif 000009