(57)【要約】【課題】データ処理回路が複数のルーチンを切り換えて実行する場合に、レジスタデータの競合を回避するための処理に費やす処理能力を軽減することが可能なデータ処理回路およびプログラムを提供する。【解決手段】制御部１０１は、プログラムメモリ１０２に記憶されるファームウェアにしたがって演算部１０３を制御し、種々の演算を実施し、搭載される電子機器の各部を制御する。レジスタ１０４は、演算部１０３が演算を行う際に、データを一時的に記憶するものである。データメモリ１０５は、ＲＡＭやＲＯＭなどのメモリを備えるものである。制御部１０１は、割り込みルーチンにおいて、この割り込みルーチンが通常ルーチンのどの位置で開始されたかを判定し、この判定結果に応じて、レジスタ１０４に記憶されるデータのうち必要なレジスタデータを退避／復旧するようにしたものである。【選択図】　　図１
2004118695.tif 000002
【特許請求の範囲】
【請求項１】
第１のルーチンと第２のルーチンを備えたソフトウェアにしたがって動作するものであって、第１のルーチンにしたがったデータ処理中に所定のイベントが発生した場合、前記データ処理を中断して第２のルーチンにしたがった割り込み処理を実行するデータ処理回路において、
前記データ処理や前記割り込み処理の実行中に用いられ、一時的にデータを蓄積する第１の記憶手段と、
データを記憶する第２の記憶手段と、
前記割り込み処理の実行中において、この処理が前記第１の記憶手段の使用を開始する前に、中断した前記データ処理が前記第１の記憶手段のうちどの部分を使用しているかを判定する判定手段と、
この判定手段の判定結果に基づいて、前記第１の記憶手段が記憶するデータのうち、前記データ処理が使用している部分のデータを前記第２の記憶手段に記録する退避制御手段と、
前記割り込み処理の実行中において、この処理による前記第１の記憶手段の使用が終了した後に、前記退避制御手段が前記第２の記憶手段に記録したデータを前記第１の記憶手段に記録する復旧制御手段とを具備することを特徴とするデータ処理回路。
【請求項２】
前記第１のルーチンは、複数のサブルーチンを備えるものであって、
前記判定手段は、前記割り込み処理の実行中において、この処理が前記第１の記憶手段の使用を開始する前に、中断した前記データ処理で実行されていたサブルーチンを判定し、この判定結果に基づいて前記第１の記憶手段のうちどの部分を使用しているかを判定することを特徴とする請求項１に記載のデータ処理回路。
【請求項３】
第１のルーチンと第２のルーチンを備えたソフトウェアにしたがって動作するものであって、第１のルーチンにしたがったデータ処理中に所定のイベントが発生した場合、前記データ処理を中断して第２のルーチンにしたがった割り込み処理を実行するデータ処理回路において、
前記データ処理や前記割り込み処理の実行中に用いられ、一時的にデータを蓄積する第１の記憶手段と、
データを記憶する第２の記憶手段と、
前記割り込み処理の実行中において、この処理が前記第１の記憶手段の使用を開始する前に、これより実行する処理で前記第１の記憶手段のうちどの部分を使用するかを判定する判定手段と、
この判定手段の判定結果に基づいて、前記第１の記憶手段が記憶するデータのうち、これより実行する処理が使用する部分のデータを前記第２の記憶手段に記録する退避制御手段と、
前記割り込み処理の実行中において、この処理による前記第１の記憶手段の使用が終了した後に、前記退避制御手段が前記第２の記憶手段に記録したデータを前記第１の記憶手段に記録する復旧制御手段とを具備することを特徴とするデータ処理回路。
【請求項４】
前記第２のルーチンは、複数のサブルーチンを備えるものであって、
前記判定手段は、前記割り込み処理の実行中において、この処理が前記第１の記憶手段の使用を開始する前に、これより実行するサブルーチンを判定し、この判定結果に基づいて前記第１の記憶手段のうちどの部分を使用するかを判定することを特徴とする請求項３に記載のデータ処理回路。
【請求項５】
第１のルーチンと第２のルーチンを備え、第１のルーチンにしたがったデータ処理中に所定のイベントが発生した場合、前記データ処理を中断して第２のルーチンにしたがった割り込み処理を実行するコンピュータのプログラムにおいて、
前記割り込み処理の実行中において、この処理が第１の記憶手段の使用を開始する前に、中断した前記データ処理が前記第１の記憶手段のうちどの部分を使用しているかを判定する判定手段と、
この判定手段の判定結果に基づいて、前記第１の記憶手段が記憶するデータのうち、前記データ処理が使用している部分のデータを第２の記憶手段に記録する退避制御手段と、
前記割り込み処理の実行中において、この処理による前記第１の記憶手段の使用が終了した後に、前記退避制御手段が前記第２の記憶手段に記録したデータを前記第１の記憶手段に記録する復旧制御手段として、前記コンピュータを機能させるためのプログラム。
【請求項６】
前記第１のルーチンは、複数のサブルーチンを備えるものであって、
前記判定手段は、前記割り込み処理の実行中において、この処理が前記第１の記憶手段の使用を開始する前に、中断した前記データ処理で実行されていたサブルーチンを判定し、この判定結果に基づいて前記第１の記憶手段のうちどの部分を使用しているかを判定することを特徴とする請求項５に記載のプログラム。
【請求項７】
第１のルーチンと第２のルーチンを備え、第１のルーチンにしたがったデータ処理中に所定のイベントが発生した場合、前記データ処理を中断して第２のルーチンにしたがった割り込み処理を実行するコンピュータのプログラムにおいて、
前記割り込み処理の実行中において、この処理が第１の記憶手段の使用を開始する前に、これより実行する処理で前記第１の記憶手段のうちどの部分を使用するかを判定する判定手段と、
この判定手段の判定結果に基づいて、前記第１の記憶手段が記憶するデータのうち、これより実行する処理が使用する部分のデータを第２の記憶手段に記録する退避制御手段と、
前記割り込み処理の実行中において、この処理による前記第１の記憶手段の使用が終了した後に、前記退避制御手段が前記第２の記憶手段に記録したデータを前記第１の記憶手段に記録する復旧制御手段として、前記コンピュータを機能させるためのプログラム。
【請求項８】
前記第２のルーチンは、複数のサブルーチンを備えるものであって、
前記判定手段は、前記割り込み処理の実行中において、この処理が前記第１の記憶手段の使用を開始する前に、これより実行するサブルーチンを判定し、この判定結果に基づいて前記第１の記憶手段のうちどの部分を使用するかを判定することを特徴とする請求項７に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えばＤＳＰ（Ｄｉｇｉｔａｌ　Ｓｉｇｎａｌ　Ｐｒｏｃｅｓｓｏｒ）などのデータ処理に用いられるデータ処理回路に関する。
【０００２】
【従来の技術】
周知のように、ＤＳＰなどのプロセッサでは、その処理シーケンスをファームウェアで記述する。ファームウェアは、プロセッサがリセットされた場合に所定のプログラムアドレスから処理が開始される通常ルーチンと、特定のタイミングやイベントがトリガとなって処理が開始される割り込みルーチンとから構成される。
【０００３】
通常ルーチンは、リセットをトリガとして所定プログラムアドレスから順に各行のインストラクションに従って実行する処理が記述されたルーチンである。一方、割り込みルーチンは、特定のイベントをトリガとして行われる処理が記述されたルーチンである。
【０００４】
またサブルーチンでは、メモリ（ＲＡＭ、ＲＯＭ）、レジスタのデータをロードして各種演算を行い、この演算の結果を上記メモリに格納することにより処理が進められる。
【０００５】
ＲＡＭやＲＯＭはアドレスを持っているため、通常ルーチンと割り込みルーチンでデータが競合することはないが、レジスタに関しては、通常ルーチン、割り込みルーチンでデータが競合するため、通常ルーチンと割り込みルーチンを切り換える場合にレジスタの制御が必要となる。
【０００６】
プロセッサは、割り込みルーチンのトリガを検出すると、プログラムカウンタを所定のプログラムアドレスに変更し、そこから処理を実行することで、通常ルーチンを中断して割り込みルーチンを実施する。
【０００７】
上述のように、割り込みルーチンで使用するレジスタは、通常ルーチンで使用しているレジスタと物理的に同一であることが多く、データが競合するため、プロセッサは、割り込みルーチンの初期においてレジスタの内容をメモリなどに一時退避する。
【０００８】
そして、プロセッサは、割り込みルーチンの終期において、メモリに退避させておいたデータをレジスタに戻した後、割り込みルーチンを終了して、中断していた通常ルーチンを再開する。
【０００９】
このように、レジスタデータの退避制御を実施することで、プロセッサは、通常ルーチンと割り込みルーチンを切り換える場合に生じ得るレジスタ内のデータの競合問題を回避している。
【００１０】
しかしながら、割り込みルーチンで実施されるレジスタデータの退避と復旧は、ある程度のステップ数を要する処理であるため、特に多数のレジスタデータを退避する必要がある場合や、割り込みルーチンの発生頻度が高い場合には、プロセッサの処理能力を圧迫してしまうという問題がある。
【００１１】
従来、これに類似する問題を回避する対策として、サブルーチンをコールする前に、通常ルーチンの実行中に、保護すべきレジスタの情報を予め準備しておき、サブルーチンをコールする際に、上記情報に基づいてレジスタデータを退避させる方法があった（例えば、特許文献１参照）。
【００１２】
しかしながら、このような従来の手法は、サブルーチンコールでは、ある程度の効果が期待できるものの、割り込みルーチンを実行する場合には、その効果は期待できない。
【００１３】
サブルーチンの場合、コールするタイミングが通常ルーチン上で特定されているため、それに合わせて保護すべき情報を準備すればよいが、割り込みルーチンの場合、その発生タイミングを予期することは困難であることから、通常ルーチン上の各ステップ毎に、時々刻々と変化するレジスタデータに追従して上記情報を更新する必要があり、またこの更新のための処理にプロセッサは多大な処理能力が費やされることになる。
【００１４】
このように、従来の対策を適用しても、上記の問題は解決に至らなかった。
【００１５】
【特許文献１】
特開平１０−２８３１８８公報（第８−９頁、図１）
【００１６】
【発明が解決しようとする課題】
従来では、プロセッサなどのデータ処理回路が通常のルーチンを中断して割り込み処理を実行する場合に、レジスタデータの競合問題が生じうるが、これを回避するための処理に多くの処理能力を費やす必要があるという問題があった。
【００１７】
この発明は上記の問題を解決すべくなされたもので、レジスタデータの競合問題を回避するための処理を効率的に行って、この処理に要する処理能力を軽減することが可能なデータ処理回路およびプログラムを提供することを目的とする。
【００１８】
【課題を解決するための手段】
上記の目的を達成するために、請求項１に係わる本発明は、第１のルーチンと第２のルーチンを備えたソフトウェアにしたがって動作するものであって、第１のルーチンにしたがったデータ処理中に所定のイベントが発生した場合、データ処理を中断して第２のルーチンにしたがった割り込み処理を実行するデータ処理回路において、データ処理や割り込み処理の実行中に用いられ、一時的にデータを蓄積する第１の記憶手段と、データを記憶する第２の記憶手段と、割り込み処理の実行中において、この処理が第１の記憶手段の使用を開始する前に、中断したデータ処理が第１の記憶手段のうちどの部分を使用しているかを判定する判定手段と、この判定手段の判定結果に基づいて、第１の記憶手段が記憶するデータのうち、データ処理が使用している部分のデータを第２の記憶手段に記録する退避制御手段と、割り込み処理の実行中において、この処理による第１の記憶手段の使用が終了した後に、退避制御手段が第２の記憶手段に記録したデータを第１の記憶手段に記録する復旧制御手段とを具備して構成するようにした。
【００１９】
また、請求項５に係わる本発明は、第１のルーチンと第２のルーチンを備え、第１のルーチンにしたがったデータ処理中に所定のイベントが発生した場合、データ処理を中断して第２のルーチンにしたがった割り込み処理を実行するコンピュータのプログラムにおいて、割り込み処理の実行中において、この処理が第１の記憶手段の使用を開始する前に、中断したデータ処理が第１の記憶手段のうちどの部分を使用しているかを判定する判定手段と、この判定手段の判定結果に基づいて、第１の記憶手段が記憶するデータのうち、データ処理が使用している部分のデータを第２の記憶手段に記録する退避制御手段と、割り込み処理の実行中において、この処理による第１の記憶手段の使用が終了した後に、退避制御手段が第２の記憶手段に記録したデータを第１の記憶手段に記録する復旧制御手段とを具備して構成するようにした。
【００２０】
上記構成のデータ処理回路およびプログラムでは、割り込み処理の実行中において、中断したデータ処理が第１の記憶手段のうちどの部分を使用しているかを判定し、これに基づいて、中断したデータ処理により第１の記憶手段に書き込まれたデータを第２の記憶手段に退避させ、その後、割り込み処理の終盤に、第２の記憶手段に退避させておいたデータを第１の記憶手段に記録するようにしている。
【００２１】
したがって、上記構成のデータ処理回路およびプログラムによれば、割り込み処理において、中断したデータ処理で必要な部分のデータのみが退避／復旧されるので、第１の記憶手段で生じうるデータ競合問題を回避するための処理が効率的に行え、この処理に要する処理能力を軽減することができる。
【００２２】
そして、請求項３に係わる本発明は、第１のルーチンと第２のルーチンを備えたソフトウェアにしたがって動作するものであって、第１のルーチンにしたがったデータ処理中に所定のイベントが発生した場合、データ処理を中断して第２のルーチンにしたがった割り込み処理を実行するデータ処理回路において、データ処理や割り込み処理の実行中に用いられ、一時的にデータを蓄積する第１の記憶手段と、データを記憶する第２の記憶手段と、割り込み処理の実行中において、この処理が第１の記憶手段の使用を開始する前に、これより実行する処理で第１の記憶手段のうちどの部分を使用するかを判定する判定手段と、この判定手段の判定結果に基づいて、第１の記憶手段が記憶するデータのうち、これより実行する処理が使用する部分のデータを第２の記憶手段に記録する退避制御手段と、割り込み処理の実行中において、この処理による第１の記憶手段の使用が終了した後に、退避制御手段が第２の記憶手段に記録したデータを第１の記憶手段に記録する復旧制御手段とを具備して構成するようにした。
【００２３】
また、請求項７に係わる本発明は、第１のルーチンと第２のルーチンを備え、第１のルーチンにしたがったデータ処理中に所定のイベントが発生した場合、データ処理を中断して第２のルーチンにしたがった割り込み処理を実行するコンピュータのプログラムにおいて、割り込み処理の実行中において、この処理が第１の記憶手段の使用を開始する前に、これより実行する処理で第１の記憶手段のうちどの部分を使用するかを判定する判定手段と、この判定手段の判定結果に基づいて、第１の記憶手段が記憶するデータのうち、これより実行する処理が使用する部分のデータを第２の記憶手段に記録する退避制御手段と、割り込み処理の実行中において、この処理による第１の記憶手段の使用が終了した後に、退避制御手段が第２の記憶手段に記録したデータを第１の記憶手段に記録する復旧制御手段とを具備して構成するようにした。
【００２４】
上記構成のデータ処理回路およびプログラムでは、割り込み処理の実行中において、これより実行する処理で第１の記憶手段のうちどの部分を使用するかを判定し、これに基づいて、第１の記憶手段に書き込まれたデータのうち、これより実行する処理が使用する部分のデータを第２の記憶手段に退避させ、その後、割り込み処理の終盤に、第２の記憶手段に退避させておいたデータを第１の記憶手段に記録するようにしている。
【００２５】
したがって、上記構成のデータ処理回路およびプログラムによれば、割り込み処理によって書き込まる部分のデータだけが退避／復旧されるので、第１の記憶手段で生じうるデータ競合問題を回避するための処理が効率的に行え、この処理に要する処理能力を軽減することができる。
【００２６】
【発明の実施の形態】
以下、図面を参照して、この発明の一実施形態について説明する。
図１は、この発明の一実施形態に係わるデータ処置回路の構成を示すものである。この図に示すデータ処理回路１００は、パーソナルコンピュータ、ＰＤＡ（Ｐｅｒｓｏｎａｌ　Ｄｉｇｉｔａｌ　Ａｓｓｉｓｔａｎｔｓ）、携帯電話機などの通信機器や家電製品などのプロセッサに相当するものであり、種々の電子機器に適用可能である。
【００２７】
このデータ処置回路は、主な構成として、制御部１０１と、プログラムメモリ１０と、演算部１０３と、レジスタ１０４と、データメモリ１０５とを備え、搭載される電子機器の各部から情報を収集して各部を制御するものである。
【００２８】
制御部１０１は、当該データ処置回路の中枢であって、プログラムメモリ１０２に記憶されるファームウェアにしたがって、搭載される電子機器の各部を統括して制御するもので、この他に演算部１０３を制御して種々の演算を実施する。
【００２９】
演算部１０３は、制御部１０１の制御にしたがって、レジスタ１０４やデータメモリ１０５に記憶されるデータを用いて演算を行う。
レジスタ１０４は、演算部１０３が演算を実行する際に、データを一時的に記憶するものであって、ここに記憶されるデータは演算部１０３によって読み書きされる。
【００３０】
データメモリ１０５は、ＲＡＭやＲＯＭなどのメモリを備えるもので、演算部１０３で用いられるデータが記憶され、ＲＡＭには演算によって得られたデータなどが演算部１０３により書き込まれる。
【００３１】
次に、上記構成のデータ処置回路の動作について説明する。なお、以下の説明では、制御部１０１が通常ルーチンと割り込みルーチンを切り換えて動作する場合の処理について説明する。
【００３２】
この処理は、制御部１０１がプログラムメモリ１０２に記憶されるファームウェアにしたがって実行されるものである。サブルーチンにおいては、制御部１０１により演算部１０３が制御され、種々の演算がなされる。
【００３３】
図２は、上記通常ルーチンの一例を示すフローチャートであって、制御部１０１は、外部からリセット信号が入力されると、このフローチャートにしたがって処理を開始する。
【００３４】
一般に、通常ルーチンは、複数のサブルーチンから構成されることが多いが、図２に示す例では、初期化処理のサブルーチンＭ０と、サブルーチンＭ１〜Ｍ３で構成され、状況に応じてサブルーチンＭ１〜Ｍ３のいずれかを実行する例を示している。
なお、これらサブルーチンのいずれを実行するかについては、外部からの指示や処理状況により選択的に実行する。
【００３５】
まず、制御部１０１は、外部からリセット信号が入力されると、ステップ２ａにて、初期化処理としてサブルーチンＭ０を実行し、ステップ２ｂに移行する。
【００３６】
ステップ２ｂにおいて制御部１０１は、割り込みを許可する設定に切り換え、ステップ２ｃに移行する。この割り込み許可設定を行うことにより、制御部１０１は、外部から所定の指示により割り込みルーチンを実行する必要が生じる（イベント発生）と、通常ルーチン中のいずれの位置からでも、通常ルーチンに代わって割り込みルーチンを実施する。
【００３７】
ステップ２ｃにおいて制御部１０１は、サブルーチンＭ１を実施する必要があるか否かを判定する。ここで、サブルーチンＭ１を実施する必要がある場合には、ステップ２ｄに移行し、一方、サブルーチンＭ１を実施する必要がない場合には、ステップ２ｆに移行する。
【００３８】
ステップ２ｄにおいて制御部１０１は、サブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄに、サブルーチンＭ１を示す「１」を設定し、これをデータメモリ１０５に記録し、ステップ２ｅに移行する。
【００３９】
ステップ２ｅにおいて制御部１０１は、サブルーチンＭ１を実行し、この処理が終了するとステップ２ｃに移行する。なお、サブルーチンＭ１では、演算部１０３が制御部１０１の指示に従って所定の演算を実施し、この演算により、レジスタ１０４のうち１００個のレジスタｒｅｇ００１〜ｒｅｇ１００が使用される。
【００４０】
ステップ２ｆにおいて制御部１０１は、サブルーチンＭ２を実施する必要があるか否かを判定する。ここで、サブルーチンＭ２を実施する必要がある場合には、ステップ２ｇに移行し、一方、サブルーチンＭ２を実施する必要がない場合には、ステップ２ｉに移行する。
【００４１】
ステップ２ｇにおいて制御部１０１は、サブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄに、サブルーチンＭ２を示す「２」を設定し、これをデータメモリ１０５に記録し、ステップ２ｈに移行する。
【００４２】
ステップ２ｈにおいて制御部１０１は、サブルーチンＭ２を実行し、この処理が終了するとステップ２ｃに移行する。なお、サブルーチンＭ２では、演算部１０３が制御部１０１の指示に従って所定の演算を実施し、この演算により、レジスタ１０４のうち２０個のレジスタｒｅｇ００１〜ｒｅｇ０２０が使用される。
【００４３】
ステップ２ｉにおいて制御部１０１は、サブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄに、サブルーチンＭ３に対応する「３」を設定し、これをデータメモリ１０５に記録し、ステップ２ｊに移行する。
【００４４】
ステップ２ｊにおいて制御部１０１は、サブルーチンＭ３を実行し、この処理が終了するとステップ２ｃに移行する。なお、サブルーチンＭ３では、演算部１０３が制御部１０１の指示に従って所定の演算を実施し、この演算により、レジスタ１０４のうち５０個のレジスタｒｅｇ００１〜ｒｅｇ０５０が使用される。
【００４５】
次に、割り込みルーチンについて説明する。図３は、上記割り込みルーチンの一例を示すフローチャートであって、図２のステップ２ｂ以降にイベントが発生すると、制御部１０１は、このフローチャートにしたがって割り込み処理を開始する。
【００４６】
なお、この割り込み処理で実行されるサブルーチンＩ１では、演算部１０３が制御部１０１の指示に従って所定の演算を実施し、この演算により、レジスタ１０４のうち１００個のレジスタｒｅｇ００１〜ｒｅｇ１００が使用される。
【００４７】
まず、制御部１０１は、イベントが発生すると、プログラムカウンタを割り込みルーチンの位置まで進める。そして、制御部１０１は、ステップ３ａにて、割り込みを禁止する設定に切り換え、ステップ３ｂに移行する。
【００４８】
この割り込み禁止設定を行うことにより、制御部１０１は、前述のステップ２ｂ以降で受け付けられるようなイベント発生があっても、割り込み処理を行わず、現在の処理を継続して実行する。
【００４９】
ステップ３ｂにおいて制御部１０１は、データメモリ１０５に記録されているサブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄを参照し、どのサブルーチンＭ１〜Ｍ３の実行時に当該割り込み処理が開始されたかを判定する。
【００５０】
ここで、サブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄが「１」の場合には、ステップ３ｃに移行し、「２」の場合にはステップ３ｆに移行し、あるいは「３」の場合にはステップ３ｉに移行する。
【００５１】
ステップ３ｃにおいて制御部１０１は、演算部１０３を制御して、レジスタ１０４のうち、レジスタｒｅｇ００１〜ｒｅｇ１００上の１００個のデータを読み出させ、これをデータメモリ１０５の所定の位置に退避させ、ステップ３ｄに移行する。
【００５２】
ステップ３ｄにおいて制御部１０１は、サブルーチンＩ１を実行し、この処理が終了するとステップ３ｅに移行する。なお、サブルーチンＩ１の実行により、演算部１０３が、レジスタ１０４のうちレジスタｒｅｇ００１〜ｒｅｇ１００を使用する。
【００５３】
ステップ３ｅにおいて制御部１０１は、演算部１０３を制御して、ステップ３ｃでデータメモリ１０５に退避させた１００個のデータを読み込ませ、これをレジスタ１０４のレジスタｒｅｇ００１〜ｒｅｇ１００に記録させ、これによりレジスタ上に１００個のデータを復旧し、ステップ３ｌに移行する。
【００５４】
ステップ３ｆにおいて制御部１０１は、演算部１０３を制御して、レジスタ１０４のうち、レジスタｒｅｇ００１〜ｒｅｇ０２０上の２０個のデータを読み出させ、これをデータメモリ１０５の所定の位置に退避させ、ステップ３ｇに移行する。
【００５５】
ステップ３ｇにおいて制御部１０１は、サブルーチンＩ１を実行し、この処理が終了するとステップ３ｈに移行する。サブルーチンＩ１の実行により、演算部１０３が、レジスタ１０４のうちレジスタｒｅｇ００１〜ｒｅｇ１００を使用する。
【００５６】
ステップ３ｈにおいて制御部１０１は、演算部１０３を制御して、ステップ３ｆでデータメモリ１０５に退避させた２０個のデータを読み込ませ、これをレジスタ１０４のレジスタｒｅｇ００１〜ｒｅｇ０２０に記録させ、これによりレジスタ上に２０個のデータを復旧し、ステップ３ｌに移行する。
【００５７】
ステップ３ｉにおいて制御部１０１は、演算部１０３を制御して、レジスタ１０４のうち、レジスタｒｅｇ００１〜ｒｅｇ０５０上の５０個のデータを読み出させ、これをデータメモリ１０５の所定の位置に退避させ、ステップ３ｊに移行する。
【００５８】
ステップ３ｊにおいて制御部１０１は、サブルーチンＩ１を実行し、この処理が終了するとステップ３ｋに移行する。サブルーチンＩ１の実行により、演算部１０３が、レジスタ１０４のうちレジスタｒｅｇ００１〜ｒｅｇ１００を使用する。
【００５９】
ステップ３ｋにおいて制御部１０１は、演算部１０３を制御して、ステップ３ｉでデータメモリ１０５に退避させた５０個のデータを読み込ませ、これをレジスタ１０４のレジスタｒｅｇ００１〜ｒｅｇ０５０に記録させ、これによりレジスタ上に５０個のデータを復旧し、ステップ３ｌに移行する。
【００６０】
ステップ３ｌにおいて制御部１０１は、割り込みを許可する設定に切り換える。この割り込み許可設定を行うことにより、制御部１０１は、イベント発生により、通常ルーチン中のいずれの位置からでも、通常ルーチンに代わって割り込みルーチンが実施可能となる。
その後、制御部１０１は、当該割り込み処理を開始した地点にプログラムカウンタを設定し、通常ルーチンに戻る。
【００６１】
以上のように、上記構成のデータ処置回路では、割り込みルーチンにおいて、この割り込みルーチンが通常ルーチンのどの位置で開始されたかを判定し、この判定結果に応じて、レジスタ１０４のうち必要なレジスタデータを退避／復旧するようにしている。
【００６２】
したがって、上記構成のデータ処置回路によれば、割り込みルーチンは実行される度に、レジスタ１０４のすべてのレジスタデータを退避／復旧するのではなく、必要なレジスタデータだけ退避／復旧して通常ルーチンを再開するので、通常ルーチンと割り込みルーチンの切り換えを実施しても、レジスタデータの競合を回避するための処理に費やす処理能力を軽減できる。
【００６３】
また、上述した割り込みルーチンでは、割り込みルーチンで実行されるサブルーチンＩ１で使用されるレジスタ数（ｒｅｇ００１〜ｒｅｇ１００）以上のレジスタについては、退避／復旧の処理は不要であるため、それ以上のレジスタ（ｒｅｇ１０１〜）については意図的に退避／復旧を行っていない。
【００６４】
尚、この発明は上記実施の形態に限定されるものではない。
例えば、上記実施の形態では、割り込みルーチンを図３に示すような処理としたが、これに代わって例えば、図４に示すような処理であってもよい。
【００６５】
この図に示す割り込みルーチンでは、まず、制御部１０１は、イベントが発生すると、プログラムカウンタを割り込みルーチンの位置まで進める。そして、制御部１０１は、ステップ４ａにて、割り込みを禁止する設定に切り換え、ステップ４ｂに移行する。
【００６６】
この割り込み禁止設定を行うことにより、制御部１０１は、前述のステップ２ｂ以降で受け付けられるようなイベント発生があっても、割り込み処理を行わず、現在の処理を継続して実行する。
【００６７】
ステップ４ｂにおいて制御部１０１は、演算部１０３を制御して、レジスタ１０４のうち、レジスタｒｅｇ００１〜ｒｅｇ０２０上の２０個のデータをデータメモリ１０５の所定の位置に退避させ、ステップ４ｃに移行する。
【００６８】
ステップ４ｃにおいて制御部１０１は、データメモリ１０５に記録されているサブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄを参照し、それが「２」であるか否かを判定する。
ここで、サブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄが「２」の場合には、ステップ４ｇに移行し、それ以外の場合にはステップ４ｄに移行する。
【００６９】
ステップ４ｄにおいて制御部１０１は、演算部１０３を制御して、レジスタ１０４のうち、レジスタｒｅｇ０２１〜ｒｅｇ０５０上の３０個のデータを、ステップ４ｂで退避させたデータに続けてデータメモリ１０５の所定の位置に退避させ、ステップ４ｅに移行する。
【００７０】
ステップ４ｅにおいて制御部１０１は、データメモリ１０５に記録されているサブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄを参照し、それが「３」であるか否かを判定する。
ここで、サブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄが「３」の場合には、ステップ４ｇに移行し、それ以外、すなわち「１」の場合にはステップ４ｆに移行する。
【００７１】
ステップ４ｆにおいて制御部１０１は、演算部１０３を制御して、レジスタ１０４のうち、レジスタｒｅｇ０５１〜ｒｅｇ１００上の５０個のデータを、ステップ４ｄで退避させたデータに続けてデータメモリ１０５の所定の位置に退避させ、ステップ４ｇに移行する。
【００７２】
ステップ４ｇにおいて制御部１０１は、サブルーチンＩ１を実行し、これにより、レジスタ１０４のうち、レジスタｒｅｇ００１〜ｒｅｇ１００が使用される。この処理が終了すると、ステップ４ｈに移行する。
【００７３】
ステップ４ｈにおいて制御部１０１は、データメモリ１０５に記録されているサブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄを参照し、それが「１」であるか否かを判定する。
ここで、サブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄが「１」の場合には、ステップ４ｉに移行し、それ以外の場合にはステップ４ｊに移行する。
【００７４】
ステップ４ｉにおいて制御部１０１は、演算部１０３を制御して、ステップ４ｆでデータメモリ１０５に退避させた５０個のデータを読み込ませ、これをレジスタ１０４のレジスタｒｅｇ０５１〜ｒｅｇ１００に記録させ、これによりレジスタ上に５０個のデータを復旧し、ステップ４ｋに移行する。
【００７５】
ステップ４ｊにおいて制御部１０１は、データメモリ１０５に記録されているサブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄを参照し、それが「３」であるか否かを判定する。
ここで、サブルーチン識別情報Ｍ＿ｐｒｏｃｅｓｓ＿Ｉｎｄが「３」の場合には、ステップ４ｋに移行し、それ以外の場合にはステップ４ｌに移行する。
【００７６】
ステップ４ｋにおいて制御部１０１は、演算部１０３を制御して、ステップ４ｄでデータメモリ１０５に退避させた３０個のデータを読み込ませ、これをレジスタ１０４のレジスタｒｅｇ０２１〜ｒｅｇ０５０に記録させ、これによりレジスタ上に３０個のデータを復旧し、ステップ４ｌに移行する。
【００７７】
ステップ４ｌにおいて制御部１０１は、演算部１０３を制御して、ステップ４ｂでデータメモリ１０５に退避させた２０個のデータを読み込ませ、これをレジスタ１０４のレジスタｒｅｇ００１〜ｒｅｇ０２０に記録させ、これによりレジスタ上に２０個のデータを復旧し、ステップ４ｍに移行する。
【００７８】
ステップ４ｍにおいて制御部１０１は、割り込みを許可する設定に切り換える。この割り込み許可設定を行うことにより、制御部１０１は、イベント発生により、通常ルーチン中のいずれの位置からでも、通常ルーチンに代わって割り込みルーチンが実施可能となる。
その後、制御部１０１は、当該割り込み処理を開始した地点にプログラムカウンタを設定し、通常ルーチンに戻る。
【００７９】
このような図４に示すような割り込みルーチンであっても、割り込みルーチンは実行される度に、レジスタ１０４のすべてのレジスタデータを退避／復旧するのではなく、必要なレジスタデータだけ退避／復旧して通常ルーチンを再開するので、通常ルーチンと割り込みルーチンの切り換えを実施しても、レジスタデータの競合を回避するための処理に費やす処理能力を軽減できる。
【００８０】
また、上記実施の形態では、通常ルーチンにおいて３つのサブルーチンＭ１，Ｍ２，Ｍ３を選択的に実行し、割り込みルーチンでは１つのサブルーチンＩ１を実行する場合を例に挙げて説明したが、これに代わって例えば、通常ルーチンにおいて１つのサブルーチンを実行し、割り込みルーチンにおいて複数のサブルーチンを選択的に実行する場合も考えられる。このような場合については、以下に説明するような処理にしたがって、実現することができる。
【００８１】
図５は、通常ルーチンの一例を示すフローチャートであって、上述したように、この通常ルーチンは、１つのサブルーチンを実行する。
制御部１０１は、外部からリセット信号が入力されると、このフローチャートにしたがって処理を開始する。
【００８２】
まず、制御部１０１は、外部からリセット信号が入力されると、ステップ５ａにて、初期化処理としてサブルーチンＭ０を実行し、ステップ５ｂに移行する。
【００８３】
ステップ５ｂにおいて制御部１０１は、割り込みを許可する設定に切り換え、ステップ５ｃに移行する。この割り込み許可設定を行うことにより、制御部１０１は、外部から所定の指示により割り込みルーチンを実行する必要が生じる（イベント発生）と、通常ルーチン中のいずれの位置からでも、通常ルーチンに代わって割り込みルーチンを実施する。
【００８４】
ステップ５ｃにおいて制御部１０１は、サブルーチンＭ４を実行し、この処理が終了すると再びステップ５ｃに移行する。なお、サブルーチンＭ４の実行により、演算部１０３が、レジスタ１０４のうちレジスタｒｅｇ００１〜ｒｅｇ１２０を使用する。
【００８５】
次に、割り込みルーチンについて説明する。図６は、上記割り込みルーチンの一例を示すフローチャートであって、図５のステップ５ｂ以降にイベントが発生すると、制御部１０１は、このフローチャートにしたがって割り込み処理を開始する。
【００８６】
なお、この割り込み処理で実行されるサブルーチンＩ１では、演算部１０３が制御部１０１の指示に従って所定の演算を実施し、この演算により、レジスタ１０４のうち１００個のレジスタｒｅｇ００１〜ｒｅｇ１００が使用される。
【００８７】
また、サブルーチンＩ２では、演算部１０３が制御部１０１の指示に従って所定の演算を実施し、この演算により、レジスタ１０４のうち２０個のレジスタｒｅｇ００１〜ｒｅｇ０２０を使用される。
【００８８】
そして、サブルーチンＩ３では、演算部１０３が制御部１０１の指示に従って所定の演算を実施し、この演算により、レジスタ１０４のうち５０個のレジスタｒｅｇ００１〜ｒｅｇ０５０を使用される。
【００８９】
まず、制御部１０１は、イベントが発生すると、プログラムカウンタを割り込みルーチンの位置まで進める。そして、制御部１０１は、ステップ６ａにて、割り込みを禁止する設定に切り換え、ステップ６ｂに移行する。
【００９０】
この割り込み禁止設定を行うことにより、制御部１０１は、前述のステップ５ｂ以降で受け付けられるようなイベント発生があっても、割り込み処理を行わず、現在の処理を継続して実行する。
【００９１】
ステップ６ｂにおいて制御部１０１は、実行すべきサブルーチンが、サブルーチンＩ１，Ｉ２，Ｉ３のうち、いずれであるかを判定する。
ここで、サブルーチンＩ１を実行する場合にはステップ６ｃに移行し、サブルーチンＩ２を実行する場合にはステップ６ｆに移行し、サブルーチンＩ３を実行する場合にはステップ６ｉに移行する。
【００９２】
ステップ６ｃにおいて制御部１０１は、演算部１０３を制御して、レジスタ１０４のうち、レジスタｒｅｇ００１〜ｒｅｇ１００上の１００個のデータをデータメモリ１０５の所定の位置に退避させ、ステップ６ｄに移行する。
【００９３】
ステップ６ｄにおいて制御部１０１は、サブルーチンＩ１を実行する。なお、サブルーチンＩ１の実行により、演算部１０３が、レジスタ１０４のうちレジスタｒｅｇ００１〜ｒｅｇ１００を使用する。この処理が終了するとステップ６ｅに移行する。
【００９４】
ステップ６ｅにおいて制御部１０１は、演算部１０３を制御して、ステップ６ｃでデータメモリ１０５に退避させた１００個のデータを読み込ませ、これをレジスタ１０４のレジスタｒｅｇ００１〜ｒｅｇ１００に記録させ、これによりレジスタ上に１００個のデータを復旧し、ステップ６ｌに移行する。
【００９５】
ステップ６ｆにおいて制御部１０１は、演算部１０３を制御して、レジスタ１０４のうち、レジスタｒｅｇ００１〜ｒｅｇ０２０上の２０個のデータをデータメモリ１０５の所定の位置に退避させ、ステップ６ｇに移行する。
【００９６】
ステップ６ｇにおいて制御部１０１は、サブルーチンＩ２を実行する。なお、サブルーチンＩ２の実行により、演算部１０３が、レジスタ１０４のうちレジスタｒｅｇ００１〜ｒｅｇ０２０を使用する。この処理が終了するとステップ６ｈに移行に移行する。
【００９７】
ステップ６ｈにおいて制御部１０１は、演算部１０３を制御して、ステップ６ｆでデータメモリ１０５に退避させた２０個のデータを読み込ませ、これをレジスタ１０４のレジスタｒｅｇ００１〜ｒｅｇ０２０に記録させ、これによりレジスタ上に２０個のデータを復旧し、ステップ６ｌに移行する。
【００９８】
ステップ６ｉにおいて制御部１０１は、演算部１０３を制御して、レジスタ１０４のうち、レジスタｒｅｇ００１〜ｒｅｇ０５０上の５０個のデータをデータメモリ１０５の所定の位置に退避させ、ステップ６ｊに移行する。
【００９９】
ステップ６ｊにおいて制御部１０１は、サブルーチンＩ３を実行する。なお、サブルーチンＩ３の実行により、演算部１０３が、レジスタ１０４のうちレジスタｒｅｇ００１〜ｒｅｇ０５０を使用する。この処理が終了するとステップ６ｋに移行に移行する。
【０１００】
ステップ６ｋにおいて制御部１０１は、演算部１０３を制御して、ステップ６ｉでデータメモリ１０５に退避させた５０個のデータを読み込ませ、これをレジスタ１０４のレジスタｒｅｇ００１〜ｒｅｇ０５０に記録させ、これによりレジスタ上に５０個のデータを復旧し、ステップ６ｌに移行する。
【０１０１】
ステップ６ｌにおいて制御部１０１は、割り込みを許可する設定に切り換える。この割り込み許可設定を行うことにより、制御部１０１は、イベント発生により、通常ルーチン中のいずれの位置からでも、通常ルーチンに代わって割り込みルーチンが実施可能となる。
その後、制御部１０１は、当該割り込み処理を開始した地点にプログラムカウンタを設定し、通常ルーチンに戻る。
【０１０２】
以上のように処理を行うデータ処置回路であっても、割り込みルーチンにおいて、複数のサブルーチンＩ１〜Ｉ３のうち、実行するサブルーチンに応じて、レジスタ１０４のうち必要なレジスタデータを退避／復旧するようにしている。
【０１０３】
したがって、上記構成のデータ処置回路によれば、割り込みルーチンは実行される度に、レジスタ１０４のすべてのレジスタデータを退避／復旧するのではなく、必要なレジスタデータだけ退避／復旧して通常ルーチンを再開するので、通常ルーチンと割り込みルーチンの切り換えを実施しても、レジスタデータの競合を回避するための処理に費やす処理能力を軽減できる。
【０１０４】
尚、この発明は上記実施の形態に限定されるものではない。
その他、この発明の要旨を逸脱しない範囲で種々の変形を施しても同様に実施可能であることはいうまでもない。
【０１０５】
【発明の効果】
以上述べたように、この発明では、割り込み処理の実行中において、中断したデータ処理が第１の記憶手段のうちどの部分を使用しているかを判定し、これに基づいて、中断したデータ処理により第１の記憶手段に書き込まれたデータを第２の記憶手段に退避させ、その後、割り込み処理の終盤に、第２の記憶手段に退避させておいたデータを第１の記憶手段に記録するようにしている。
【０１０６】
したがって、この発明によれば、割り込み処理において、中断したデータ処理で必要な部分のデータのみが退避／復旧されるので、第１の記憶手段で生じうるデータ競合問題を回避するための処理が効率的に行え、この処理に要する処理能力を軽減することが可能なデータ処理回路およびデータ処理方法を提供できる。
【０１０７】
また、この発明では、割り込み処理の実行中において、これより実行する処理で第１の記憶手段のうちどの部分を使用するかを判定し、これに基づいて、第１の記憶手段に書き込まれたデータのうち、これより実行する処理が使用する部分のデータを第２の記憶手段に退避させ、その後、割り込み処理の終盤に、第２の記憶手段に退避させておいたデータを第１の記憶手段に記録するようにしている。
【０１０８】
したがって、この発明によれば、割り込み処理によって書き込まる部分のデータだけが退避／復旧されるので、第１の記憶手段で生じうるデータ競合問題を回避するための処理が効率的に行え、この処理に要する処理能力を軽減することが可能なデータ処理回路およびデータ処理方法を提供できる。
【図面の簡単な説明】
【図１】この発明に係わるデータ処理回路の一実施形態の構成を示す回路ブロック図。
【図２】図１に示したデータ処理回路の通常ルーチンを示すフローチャート。
【図３】図１に示したデータ処理回路の割り込みルーチンを示すフローチャート。
【図４】図１に示したデータ処理回路の割り込みルーチンの変形例を示すフローチャート。
【図５】図１に示したデータ処理回路の通常ルーチンの変形例を示すフローチャート。
【図６】図１に示したデータ処理回路の割り込みルーチンの変形例を示すフローチャート。
【符号の説明】
１００…データ処理回路
１０１…制御部
１０２…プログラムメモリ
１０３…演算部
１０４…レジスタ
１０５…データメモリ
【図１】
2004118695.tif 000003
【図２】
2004118695.tif 000004
【図３】
2004118695.tif 000005
【図４】
2004118695.tif 000006
【図５】
2004118695.tif 000007
【図６】
2004118695.tif 000008