(57)【要約】【課題】  周期的に起動される信号処理に処理落ちが発生したか否かを判定することが可能なＤＳＰを提供する。【解決手段】  要求発生回路１２０Ａは、読み出しフラグＲＥＡＤ０に応じてフレーム切り換えフラグＦＸ０１をリセットし、周期的に発生する処理要求ＲＥＱ０に応じてフレーム切り換えフラグＦＸ０１をセットする処理落ち判定支援機能を有する。ＤＳＰコアは、処理要求ＲＥＱ０に応じて、処理１を実行し、該処理１の開始の際に読み出しフラグＲＥＡＤ０を出力してフレーム切換フラグＦＸ０１をリセットさせ、該処理の終了の際にフレーム切換フラグＦＸ０１をリセットさせるとともに、リセット前におけるフレーム切換フラグＦＸ０１がセットされていたか否かを判定することにより、処理要求ＲＥＱ０の１周期以内に処理１が終了しない処理落ちがあったか否かを判定する。【選択図】図２
2012038174.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
読み出しフラグに応じて第１のフレーム切り換えフラグをリセットし、周期的に発生する処理要求に応じて前記第１のフレーム切り換えフラグをセットする処理落ち判定支援回路とを具備し、
前記プロセッサは、前記処理要求に応じて、所定の処理を実行し、該処理の開始の際に前記読み出しフラグを出力して前記第１のフレーム切換フラグをリセットさせ、該処理の終了の際に前記第１のフレーム切換フラグをリセットさせるとともに、リセット前における前記第１のフレーム切換フラグがセットされていたか否かを判定することにより、前記処理要求の１周期以内に前記所定の処理が終了しない処理落ちがあったか否かを判定することを特徴とするデジタル信号処理装置。
【請求項２】
プロセッサと、
読み出しフラグに応じて第１および第２のフレーム切り換えフラグをリセットし、周期的に発生する処理要求に応じて前記第１のフレーム切り換えフラグをセットし、前記第１のフレーム切り換えフラグがセットされた状態において前記処理要求が発生した場合に前記第２のフレーム切り換えフラグをセットする処理落ち判定支援回路とを具備し、
前記プロセッサは、前記処理要求に応じて、所定の処理を実行し、該処理の開始から終了までの間に前記読み出しフラグを出力して前記第２のフレーム切換フラグをリセットさせるとともに、リセット前における前記第２のフレーム切換フラグがセットされていたか否かを判定することにより、前記処理要求の１周期以内に前記所定の処理が終了しない処理落ちまたは前記処理要求の１周期以内に前記所定の処理が開始されない処理落ちがあったか否かを判定することを特徴とするデジタル信号処理装置。
【請求項３】
前記処理落ち判定支援回路は、前記処理要求の１周期以内において前記プロセッサが処理するサンプルの個数を示すフレームサイズが設定され、前記プロセッサに前記フレームサイズが示す個数のサンプルが与えられる毎に、前記処理要求を出力するカウンタを具備することを特徴とする請求項１または２に記載のデジタル信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、オーディオ信号処理等の各種の信号処理に好適なＤＳＰ（Digital Signal Processor；デジタル信号処理装置）に関する。
【背景技術】
【０００２】
フレーム同期式のＤＳＰは、一定時間長のフレーム毎に入力信号に対する信号処理を行うプロセッサである。なお、この種のフレーム同期式のＤＳＰに関しては例えば特許文献１に開始されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−２６１８６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、フレーム同期式のＤＳＰでは、フレームに同期して処理対象である入力データを受け取り、フレームに同期して処理結果であるデータを出力する必要がある。そして、フレーム毎に１フレーム分の信号処理が終了しないと、フレームに同期して処理結果であるデータの出力を行うのに支障を来たす。このようなフレーム毎に１フレーム分の入力データの処理結果が得られない不具合を処理落ちという。この処理落ちが発生した場合、
ＤＳＰでは出力結果データを利用する側に悪影響を与えないようにするため、出力データのミュートを行うといった対処が必要になる。そして、このような対処を行うためには、ＤＳＰにおいて実行される入力データの信号処理において、処理落ちが発生したことを判定する機能が必要になる。しかし、フレーム切り換えに同期して、ＤＳＰに信号処理の起動要求を与えた場合において、起動要求に応じて実行される信号処理では、その後のフレーム切り換えのタイミングを検知する手段がないため、１フレーム分の信号処理の途中において後発の起動要求が発生したとしても、信号処理に処理落ちが発生したことを検知することができない。そこで、信号処理においてタイマを利用して起動以降の経過時間の計時を行うという手段が考えられる。しかしながら、信号処理にそのようなタイマ機能を設けると、信号処理が複雑化し、かつ、信号処理の演算量が増えるという問題が生じる。また、ＤＳＰに信号処理とともに各種の処理を並列実行するような状況では、フレーム切り換えに対して遅滞なく信号処理が起動される保障はないため、タイマによる計時を行ったとしても、信号処理の終了タイミングがフレーム切り換えの前であるか後であるかを正確に判定することはできず、従って正確に処理落ちの有無を判定することができない。
【０００５】
この発明は、以上説明した事情に鑑みてなされたものであり、周期的に起動される信号処理に処理落ちが発生したか否かを判定することが可能なＤＳＰを提供することを目的とする。
【課題を解決するための手段】
【０００６】
好ましい態様において、この発明によるデジタル信号処理装置は、プロセッサと、読み出しフラグに応じて第１のフレーム切り換えフラグをリセットし、周期的に発生する処理要求に応じて前記第１のフレーム切り換えフラグをセットする処理落ち判定支援回路とを具備し、前記プロセッサは、前記処理要求に応じて、所定の処理を実行し、該処理の開始の際に前記読み出しフラグを出力して前記第１のフレーム切換フラグをリセットさせ、該処理の終了の際に前記第１のフレーム切換フラグをリセットさせるとともに、リセット前における前記第１のフレーム切換フラグがセットされていたか否かを判定することにより、前記処理要求の１周期以内に前記所定の処理が終了しない処理落ちがあったか否かを判定する。
【０００７】
他の好ましい態様において、この発明によるデジタル信号処理装置は、プロセッサと、読み出しフラグに応じて第１および第２のフレーム切り換えフラグをリセットし、周期的に発生する処理要求に応じて前記第１のフレーム切り換えフラグをセットし、前記第１のフレーム切り換えフラグがセットされた状態において前記処理要求が発生した場合に前記第２のフレーム切り換えフラグをセットする処理落ち判定支援回路とを具備し、前記プロセッサは、前記処理要求に応じて、所定の処理を実行し、該処理の開始から終了までの間に前記読み出しフラグを出力して前記第２のフレーム切換フラグをリセットさせるとともに、リセット前における前記第２のフレーム切換フラグがセットされていたか否かを判定することにより、前記処理要求の１周期以内に前記所定の処理が終了しない処理落ちまたは前記処理要求の１周期以内に前記所定の処理が開始されない処理落ちがあったか否かを判定する。
【図面の簡単な説明】
【０００８】
【図１】この発明の一実施形態であるＤＳＰの構成を示すブロック図である。
【図２】同ＤＳＰにおける処理落ち判定支援部としての機能を兼ね備えた要求発生部の構成を示す回路図である。
【図３】同ＤＳＰにおける起動制御部の構成を示す回路図である。
【図４】同実施形態においてホストプロセッサがＤＳＰ起動要求ＳＷによりＤＳＰコアにメインルーチンを実行させる第１の動作例を示すタイムチャートである。
【図５】同第１の動作例においてＤＳＰコアが停止命令ＨＡＬＴを実行した場合の各部の動作を示すタイムチャートである。
【図６】同実施形態において処理要求ＲＥＱ０によりメインルーチン（処理１）が周期的に起動される第２の動作例の概略を示すタイムチャートである。
【図７】同実施形態において処理要求ＲＥＱ０およびＲＥＱ１によりメインルーチン（処理１）および割り込みルーチン（処理２）が各々周期的に起動される第３の動作例の概略を示すタイムチャートである。
【図８】同第３の動作例において処理要求ＲＥＱ０およびＲＥＱ１が同時に発生する場合の要求発生部および起動制御部の動作を示すタイムチャートである。
【図９】同第３の動作例において、ＤＳＰコアが停止している状態から処理要求ＲＥＱ１により起動される動作を示すタイムチャートである。
【図１０】同実施形態において、クロック強制停止状態において発生した処理要求ＲＥＱ０およびＲＥＱ１に応答する第４の動作例を示すタイムチャートである。
【図１１】同実施形態において、ＤＳＰコアの動作中に発生したＤＳＰ起動要求ＳＷを再発行させる第５の動作例を示すタイムチャートである。
【図１２】上記第３の動作例をさらに発展させた第６の動作例を示すタイムチャートである。
【図１３】上記第６の動作例においてデータメモリの使用方法を改善した第７の動作例を示すタイムチャートである。
【図１４】処理落ちの発生形態を例示するタイムチャートである。
【図１５】同実施形態における処理落ち判定動作の例を示すタイムチャートである。
【図１６】同実施形態における処理落ち判定動作の他の例を示すタイムチャートである。
【図１７】同実施形態における処理落ち判定動作の他の例を示すタイムチャートである。
【図１８】同実施形態における処理落ち判定動作の他の例を示すタイムチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照し、この発明の一実施形態について説明する。
図１は、この発明の一実施形態であるＤＳＰ１００の構成を示すブロック図である。なお、図１では、ＤＳＰ１００の機能の理解を容易にするため、ＤＳＰ１００を含むシステム全体を制御するホストプロセッサ２０１と、ＤＳＰ１００およびホストプロセッサ２０１を含むシステム内に供給するクロックＣＫを発生するクロックジェネレータ２０２がＤＳＰ１００とともに図示されている。クロックジェネレータ２０２が発生するクロックＣＫは、ＤＳＰコントローラ１１０を介することにより、クロックＤＳＰＣＫとしてＤＳＰコア１７０に供給される。
【００１０】
図１に示すように、ＤＳＰ１００は、ＤＳＰコントローラ１１０と、ＤＳＰコア１７０と、命令メモリ１８０と、データメモリ１９０とを有する。ＤＳＰコア１７０は、ＤＳＰコントローラ１１０による制御の下、命令メモリ１８０から命令を読み出して実行するプロセッサである。データメモリ１９０は、ＤＳＰコア１７０の処理対象となる入力データ、ＤＳＰコア１７０の処理結果である出力データ、ＤＳＰコア１７０の処理過程において発生する作業用データ等を記憶するためのワークエリアとして利用されるメモリである。本実施形態では、一定のフレーム周期毎に、１フレームサイズ分の入力データのデータメモリ１９０への格納と、ＤＳＰコア１７０による同入力データの処理および出力データのデータメモリ１９０への格納とが実行される。
【００１１】
ＤＳＰコア１７０は、各種の制御情報を記憶するレジスタの集まりであるＤＳＰレジスタ部１７１を有している。ＤＳＰコア１７０は、クロックＤＳＰＣＫの立ち上がりエッジに同期して、ＤＳＰレジスタ部１７１内の各レジスタの更新を行うとともに、それらの各レジスタの記憶内容に従って動作する。
【００１２】
図１には、ＤＳＰレジスタ部１７１を構成するレジスタの一部が図示されている。図１において、命令フェッチレジスタＩＦＲは、クロックＤＳＰＣＫに同期して命令メモリ１８０から読み出された命令を一時記憶するレジスタである。この命令フェッチレジスタＩＦＲに記憶された命令がＤＳＰコア１７０の実行対象となる。プログラムカウンタＰＣは、クロックＤＳＰＣＫに同期してカウント動作を行うカウンタである。このプログラムカウンタＰＣのカウント値は、次回のクロックＤＳＰＣＫの立ち上がりエッジにおいて、命令メモリ１８０から読み出して命令フェッチレジスタＩＦＲに書き込む命令の命令メモリ１８０内でのアドレスを示す。
【００１３】
プログラムスタックＰＳ（ＰＳＰ）は、サブルーチンコール（割り込み処理を含む）が発生した場合に、サブルーチンからの復帰後に実行すべき命令の命令メモリ１８０内でのアドレスを記憶するレジスタである。多重のサブルーチンコールが行われる場合があることを考慮し、ＤＳＰレジスタ部１７１には、複数のプログラムスタックＰＳ（ＰＳＰ）（ＰＳＰ＝０、１、…）が設けられている。
【００１４】
制御レジスタＣＲは、割り込み制御等の制御に関連した制御情報を記憶するレジスタである。図１には、制御レジスタＣＲに記憶される制御情報の一部である割り込みマスクフラグＭＩと割り込み許可フラグＩＥが示されている。ここで、割り込みマスクフラグＭＩは、ＤＳＰコア１７０外部から与えられる割り込み要求ＩＲＱを無視するか否かを示すフラグであり、ＭＩ＝“１”であるとき割り込み要求ＩＲＱは無視され、ＭＩ＝“０”であるとき割り込み要求ＩＲＱは受け付けられる。割り込み許可フラグＩＥは、受け付けられた割り込み要求に対応した割り込み処理を許可するか遅延させるかを示すフラグであり、ＩＥ＝“０”の状態では、受け付けられた割り込み要求に対応した割り込み処理の実行が遅延され、ＩＥ＝“１”とされることにより、受け付けられた割り込み要求に対応した割り込み処理の実行が許可される。汎用レジスタ群Ｒ＊＊は、任意の用途に使用可能なレジスタである。
【００１５】
ステータスレジスタＳＲは、ＤＳＰコア１７０の現在の状態を示す制御情報を記憶するレジスタである。図１には、ステータスレジスタＳＲに記憶される制御情報の一部であるプログラムスタックポインタＰＳＰ、割り込み要求フラグＩＲＥＱ、ビジーフラグＢＵＳＹが示されている。ここで、プログラムスタックポインタＰＳＰは、現在実行中のサブルーチンの戻り先アドレスを記憶しているプログラムスタックＰＳ（ＰＳＰ）を指示するポインタである。ＤＳＰコア１７０は、サブルーチンコールや割り込み要求ＩＲＱに応じてサブルーチンを実行するとき、それに先立って、戻り先のアドレス（サブルーチンコール直前に実行した命令のアドレスの次のアドレス）をプログラムスタックＰＳ（ＰＳＰ）に格納し、プログラムスタックポインタＰＳＰを１だけ増加させる。また、ＤＳＰコア１７０は、サブルーチンから元のルーチンに復帰するとき、プログラムスタックポインタＰＳＰを１だけ減少させ、この減少後のプログラムスタックポインタＰＳＰが示すプログラムスタックＰＳ（ＰＳＰ）に格納されたアドレスの命令を命令フェッチレジスタＩＦＲに取り込んで実行する。割り込み要求フラグＩＲＥＱは、処理未了の割り込み要求の有無を示すフラグであり、処理未了の割り込み要求ＩＲＱがない場合にはＩＲＥＱ＝“０”、処理未了の割り込み要求ＩＲＱがある場合にはＩＲＥＱ＝“１”とされる。ビジーフラグＢＵＳＹは、ＤＳＰコア１７０が動作中か否かを示すフラグであり、ＤＳＰコア１７０が何らかの処理を実行しており、動作中であるときは、ＢＵＳＹ＝“１”とされ、何も処理を実行しておらず、停止中であるときは、ＢＵＳＹ＝“０”とされる。
【００１６】
割り込みベクタレジスタＩＶは、割り込み要求ＩＲＱが与えられ、その許可がなされたときに実行する割り込みルーチンの先頭アドレスである割り込みベクタを記憶するレジスタである。
【００１７】
ＤＳＰコントローラ１１０は、ホストプロセッサ２０１からの指示に従い、ＤＳＰコア１７０に各種の信号処理を実行させるための制御を行う手段である。図１に示すように、本実施形態におけるＤＳＰコントローラ１１０は、要求発生部１２０と、起動制御部１４０とを有する。ここで、要求発生部１２０は、処理要求ＲＥＱ０を周期的に出力するとともに、この処理要求ＲＥＱ０よりも短い周期で処理要求ＲＥＱ１を周期的に出力する機能を有する。ここで、処理要求ＲＥＱ０の発生周期は、ホストプロセッサ２０１から与えられるフレームサイズ情報ＳＩＺＥ０により定まり、処理要求ＲＥＱ１の発生周期は、ホストプロセッサ２０１から与えられるフレームサイズ情報ＳＩＺＥ１により定まる。また、要求発生部１２０は、本実施形態における処理落ち判定支援部としての機能を兼ね備えている。ここで、処理落ちとは、一定のフレーム周期毎に１フレーム分の信号処理をＤＳＰコア１７０に実行させる必要がある場合において、あるフレーム周期内において開始した１フレーム分の信号処理が当該フレーム周期内に終了しない事態、あるいは、あるフレーム周期内において終了すべき１フレーム分の信号処理がある場合において、当該フレーム周期内に当該信号処理が開始されず、次のフレーム周期に切り換わる事態をいう。そして、処理落ち判定支援部としての機能とは、そのような処理落ちが発生していることをＤＳＰコア１７０が判定するのを支援する機能をいう。なお、この機能の詳細については後述する。
【００１８】
起動制御部１４０は、プログラム起動機能とクロック制御機能とを有する。前者のプログラム起動機能に関して説明すると、まず、起動制御部１４０は、ホストプロセッサ２０１からＤＳＰ起動要求ＳＷが与えられるのに応じて、ＤＳＰコア１７０に対してメインルーチン起動要求ＳＴＡＲＴを供給する。また、起動制御部１４０は、要求発生部１２０から処理要求ＲＥＱ０が与えられるのに応じてＤＳＰコア１７０にメインルーチン起動要求ＳＴＡＲＴを出力し、要求発生部１２０から処理要求ＲＥＱ１が与えられるのに応じてＤＳＰコア１７０に割り込み要求ＩＲＱを出力する。以下の説明において、ＤＳＰコア１７０は、メインルーチン起動要求ＳＴＡＲＴが与えられることにより命令メモリ１８０内の処理１のルーチンを実行し、割り込み要求ＩＲＱが与えられることにより命令メモリ１８０内の処理２のルーチンを実行するように設定されているものとする。
【００１９】
後者のクロック制御機能に関して説明すると、起動制御部１４０は、ＤＳＰレジスタ部１７１のビジーフラグＢＵＳＹが“０”になるのに応じて、またはホストプロセッサ２０１からクロック強制停止指令ＣＫＨＡＬＴが与えられるのに応じて、ＤＳＰコア１７０に対するクロックＤＳＰＣＫの供給を停止する。また、起動制御部１４０は、クロックＤＳＰＣＫのＤＳＰコア１７０への供給を停止している状態において、メインルーチン起動要求ＳＴＡＲＴや割り込み要求ＩＲＱをＤＳＰコア１７０に供給するときに、それに先立って、クロックＣＫをクロックＤＳＰＣＫとしてＤＳＰコア１７０に供給する動作を開始する。
【００２０】
図２は要求発生部１２０の構成例を示す回路図である。この要求発生部１２０は、メインルーチン起動要求ＳＴＡＲＴの元となる処理要求ＲＥＱ０を発生する第１の要求発生回路１２０Ａと、割り込み要求ＩＲＱの元となる処理要求ＲＥＱ１を発生する第２の要求発生回路１２０Ｂとを有する。
【００２１】
図２において、サンプル信号ＳＡＭＰＬＥは、ＤＳＰコア１７０に対して処理１（メインルーチン）および処理２（割り込みルーチン）の対象となる音声データが１サンプル供給される毎に“１”となる信号である。第１の要求発生回路１２０Ａにおいて、ＡＮＤゲート１２１と、マルチプレクサ１２２と、レジスタ１２３と、加算器１２４と、一致検出部１２５は、このサンプル信号ＳＡＭＰＬＥが“１”になる毎にカウントダウンを行うカウンタである。
【００２２】
さらに詳述すると、ＡＮＤゲート１２１の出力信号ＦＲＡＭＥは、一致検出部１２５の出力信号およびサンプル信号ＳＡＭＰＬＥの両方が“１”である場合に“１”となり、それ以外の場合に“０”となる。マルチプレクサ１２２は、ＡＮＤゲート１２１の出力信号ＦＲＡＭＥが“０”であるときに加算器１２４の出力信号を、“１”であるときにフレームサイズ情報ＳＩＺＥ０を選択して出力する。
【００２３】
レジスタ１２３は、サンプル信号ＳＡＭＰＬＥが“１”である期間、クロックＣＫの立ち上がりエッジに同期してマルチプレクサ１２２の出力信号を取り込んで出力し、サンプル信号ＳＡＭＰＬＥが“０”である期間はサンプル信号ＳＡＭＰＬＥが“１”である期間に取り込んだ信号を保持し続ける。このレジスタ１２３の出力信号がカウンタのカウント値ＣＮＴ０となる。加算器１２４は、レジスタ１２３の出力するカウント値ＣＮＴ０に「−１」を加算した信号を出力する。一致検出部１２５は、レジスタ１２３の出力するカウント値ＣＮＴ０が「０」である場合には“１”を、そうでない場合には“０”を出力する。
【００２４】
このカウンタによれば、カウント値ＣＮＴ０が「０」以外であり、一致検出部１２５の出力信号が“０”である期間は、サンプル信号ＳＡＭＰＬＥが“１”になる毎に、カウント値ＣＮＴ０から１を減算したカウント値がマルチプレクサ１２２によって選択され、レジスタ１２３に書き込まれる、というカウントダウンが行われる。そして、カウント値ＣＮＴ０が「０」になると、サンプル信号ＳＡＭＰＬＥが“１”になったときに、ＡＮＤゲート１２１の出力信号ＦＲＡＭＥが“１”となり、フレームサイズ情報ＳＩＺＥ０がマルチプレクサ１２２によって選択され、レジスタ１２３にカウント値として書き込まれる。従って、このカウンタでは、サンプル信号ＳＡＭＰＬＥが“１”になる毎に、カウント値ＣＮＴ０のダウンカウントが行われ、カウント値ＣＮＴ０はＳＩＺＥ０〜「０」の範囲内の変化を繰り返す。
【００２５】
以上説明したカウンタにおいて、ＡＮＤゲート１２１の出力信号ＦＲＡＭＥに着目すると、この信号ＦＲＡＭＥは、フレームサイズ情報ＳＩＺＥ０により指定されたフレーム周期が経過する毎にクロックＣＫの１周期相当の期間だけ“１”となる。そこで、本実施形態では、この信号ＦＲＡＭＥがメインルーチン起動要求ＳＴＡＲＴの元となる処理要求ＲＥＱ０として起動制御部１４０に出力される。
【００２６】
図２において、読み出しフラグＲＥＡＤ０はＤＳＰコア１７０から供給される情報、第１のフレーム切り換えフラグＦＸ０１および第２のフレーム切り換えフラグＦＸ０２はＤＳＰコア１７０に供給される情報である。第１の要求発生回路１２０Ａにおいて、マルチプレクサ１２６および１２８と、フリップフロップ１２７および１２９と、ＯＲゲート１３０および１３１とからなる回路は、処理落ち判定支援回路を構成している。
【００２７】
さらに詳述すると、マルチプレクサ１２６は処理要求ＲＥＱ０が“０”であるときは“０”を、“１”であるときは“１”を選択して出力する。ＯＲゲート１３０は、読み出しフラグＲＥＡＤ０または処理要求ＲＥＱ０が“１”であるときに“１”を、そうでないときに“０”をフリップフロップ１２７に対するクロックイネーブル信号ＥＮとして出力する。フリップフロップ１２７は、このクロックイネーブル信号ＥＮが“１”である期間にクロックＣＫの立ち上がりエッジに同期してマルチプレクサ１２６の出力信号を取り込んで出力する。このフリップフロップ１２７の出力信号が第１のフレーム切り換えフラグＦＸ０１となる。
【００２８】
従って、処理要求ＲＥＱ０が“０”である状態において、読み出しフラグＲＥＡＤ０が“１”になると、マルチプレクサ１２６によって“０”が選択され、この“０”がクロックＣＫに同期してフリップフロップ１２７に書き込まれ、第１のフレーム切り換えフラグＦＸ０１が“０”になる。また、処理要求ＲＥＱ０が“１”になると、マルチプレクサ１２６によって“１”が選択され、この“１”がクロックＣＫに同期してフリップフロップ１２７に書き込まれ、第１のフレーム切り換えフラグＦＸ０１が“１”になる。
【００２９】
マルチプレクサ１２８は処理要求ＲＥＱ０が“０”であるときは“０”を、“１”であるときは第１のフレーム切り換えフラグＦＸ０１を選択して出力する。ＯＲゲート１３１は、読み出しフラグＲＥＡＤ０または処理要求ＲＥＱ０が“１”であるときに“１”を、そうでないときに“０”をフリップフロップ１２９に対するクロックイネーブル信号ＥＮとして出力する。フリップフロップ１２９は、このクロックイネーブル信号ＥＮが“１”である期間にクロックＣＫの立ち上がりエッジに同期してマルチプレクサ１２８の出力信号を取り込んで出力する。このフリップフロップ１２９の出力信号が第２のフレーム切り換えフラグＦＸ０２となる。
【００３０】
従って、処理要求ＲＥＱ０が“０”である状態において、読み出しフラグＲＥＡＤ０が“１”になると、マルチプレクサ１２８によって“０”が選択され、この“０”がクロックＣＫに同期してフリップフロップ１２９に書き込まれ、第２のフレーム切り換えフラグＦＸ０２が“０”になる。また、処理要求ＲＥＱ０が“１”になると、マルチプレクサ１２８によって第１のフレーム切り換えフラグＦＸ０１が選択され、この第１のフレーム切り換えフラグＦＸ０１がクロックＣＫに同期してフリップフロップ１２９に書き込まれ、第２のフレーム切り換えフラグＦＸ０２となる。従って、第２のフレーム切り換えフラグＦＸ０２は、第１のフレーム切り換えフラグＦＸ０１が“１”となっている状態において、処理要求ＲＥＱ０が“１”になったときに“１”とされる。
【００３１】
以上のように、処理落ち判定支援回路は、読み出しフラグＲＥＡＤ０に応じて第１および第２のフレーム切り換えフラグＦＸ０１およびＦＸ０２をリセットし、周期的に発生する処理要求ＲＥＱ０に応じて第１のフレーム切り換えフラグＦＸ０１をセットし、第１のフレーム切り換えフラグＦＸ０１がセットされた状態において処理要求ＲＥＱ０が発生した場合に第２のフレーム切り換えフラグＦＸ０２をセットする、という処理を行う。
【００３２】
ＤＳＰコア１７０は、処理要求ＲＥＱ０に基づいて発生されたメインルーチン起動要求ＳＴＡＲＴに従って、メインルーチンを実行する際に、このメインルーチンの処理の中で読み出しフラグＲＥＡＤ０を所定期間だけ“１”にする操作と、第１のフレーム切り換えフラグＦＸ０１、第２のフレーム切り換えフラグＦＸ０２を確認する操作を行うことにより、メインルーチンに関して処理落ちが発生したか否かを判定することができる。なお、この判定動作の詳細については後述する。
【００３３】
第２の要求発生回路１２０Ｂも、以上説明した第１の要求発生回路１２０Ａと同様な構成を有している。この第２の要求発生回路１２０Ｂは、処理２（割り込みルーチン）の対象となる音声データが１サンプル供給されてサンプル信号ＳＡＭＰＬＥが“１”となる回数をカウントし、フレームサイズ情報ＳＩＺＥ１相当の長さのフレーム周期の切り換えが発生する都度、処理要求ＲＥＱ１を発生する。また、第２の要求発生回路１２０Ｂは、読み出しフラグＲＥＡＤ１に応じて第１および第２のフレーム切り換えフラグＦＸ１１およびＦＸ１２をリセットし、周期的に発生する処理要求ＲＥＱ１に応じて第１のフレーム切り換えフラグＦＸ１１をセットし、第１のフレーム切り換えフラグＦＸ１１がセットされた状態において処理要求ＲＥＱ１が発生した場合に第２のフレーム切り換えフラグＦＸ１２をセットする、という処理を行う。
【００３４】
ＤＳＰコア１７０は、処理要求ＲＥＱ１に基づいて発生された割り込み要求ＩＲＱに従って、割り込みルーチンを実行する際に、この割り込みルーチンの処理の中で読み出しフラグＲＥＡＤ１を所定期間だけ“１”にする操作と、第１のフレーム切り換えフラグＦＸ１１、第２のフレーム切り換えフラグＦＸ１２を確認する操作を行うことにより、割り込みルーチンに関して処理落ちが発生したか否かを判定することができる。なお、この判定動作の詳細についても後述する。
【００３５】
図３は、起動制御部１４０の構成例を示す回路図である。この起動制御部１４０において、１クロック遅延器１４１およびＡＮＤゲート１４２は、ＤＳＰ起動要求ＳＷが“０”から“１”に立ち上がったとき、クロックＣＫの１周期相当の期間だけ“１”となる立ち上がり検出パルスＳＷｒを発生する立ち上がり検出回路を構成している。１クロック遅延器１４３およびＡＮＤゲート１４４は、ビジーフラグＢＵＳＹが“１”から“０”に立ち下がったとき、クロックＣＫの１周期相当の期間だけ“１”となる立ち下がり検出パルスＢＵＳＹｆを発生する立ち下がり検出回路を構成している。同様に１クロック遅延器１４５およびＡＮＤゲート１４６は、クロック強制停止指令ＣＫＨＡＬＴが“１”から“０”に立ち下がったとき、クロックＣＫの１周期相当の期間だけ“１”となる立ち下がり検出パルスＣＫＨＡＬＴｆを発生する立ち下がり検出回路を構成している。
【００３６】
ＡＮＤゲート１４７は、ビジーフラグＢＵＳＹが“１”であるときに、ＡＮＤゲート１４２が出力する立ち上がり検出パルスＳＷｒを通過させる。フリップフロップ１４８は、立ち下がり検出パルスＢＵＳＹｆが“１”である状態においてクロックＣＫが立ち上がることによりリセットされ、立ち上がり検出パルスＳＷｒが“１”である状態においてクロックＣＫが立ち上がることによりセットされる。ＡＮＤ−ＯＲゲート１４９は、フリップフロップ１４８の出力信号が“０”である状態において、ＡＮＤゲート１４２から出力される立ち上がり検出パルスＳＷｒを通過させ、信号ＳＷＯＮとして出力する。また、ＡＮＤ−ＯＲゲート１４９は、フリップフロップ１４８の出力信号が“１”である状態において、ＡＮＤゲート１４４から出力される立ち下がり検出パルスＢＵＳＹｆを通過させ、信号ＳＷＯＮとして出力する。
【００３７】
ＯＲゲート１５０は、信号ＳＷＯＮと処理要求ＲＥＱ０の論理和を出力する。４クロック遅延器１５１は、ＯＲゲート１５０の出力信号をクロックＣＫの４周期相当の時間だけ遅延させて出力する。ＡＮＤゲート１５２は、４クロック遅延器１５１の出力信号が“１”であり、かつ、クロック強制停止指令ＣＫＨＡＬＴが“１”であるときに“１”を出力し、そうでないときには“０”を出力する。フリップフロップ１５３は、立ち下がり検出パルスＣＫＨＡＬＴｆが“１”である状態においてクロックＣＫが立ち上がることによりリセットされ、ＡＮＤゲート１５２の出力信号が“１”である状態においてクロックＣＫが立ち上がることによりセットされる。
【００３８】
ＡＮＤ−ＯＲゲート１５４は、フリップフロップ１５３の出力信号が“０”の状態において、４クロック遅延器１５１の出力信号を出力する。このＡＮＤ−ＯＲゲート１５４の出力信号がメインルーチン起動要求ＳＴＡＲＴとなる。すなわち、ＡＮＤ−ＯＲゲート１５４は、クロック強制停止指令ＣＫＨＡＬＴが“０”となり、フリップフロップ１５３がリセットされている状態において、ＯＲゲート１５０を通過し、４クロック遅延器１５１によって遅延された信号ＳＷＯＮまたは処理要求ＲＥＱ０を通過させ、メインルーチン起動要求ＳＴＡＲＴとして出力するものである。
【００３９】
また、ＡＮＤ−ＯＲゲート１５４は、フリップフロップ１５３の出力信号が“１”の状態において、ＡＮＤゲート１４６から出力される立ち下がり検出パルスＣＫＨＡＬＴｆを通過させ、メインルーチン起動要求ＳＴＡＲＴとして出力する。すなわち、ＡＮＤ−ＯＲゲート１５４は、クロック強制停止指令ＣＫＨＡＬＴが“１”である期間に、信号ＳＷＯＮまたは処理要求ＲＥＱ０が“１”となってフリップフロップ１５３に“１”が書き込まれた場合に、その後、クロック強制停止指令ＣＫＨＡＬＴが“１”から“０”に立ち下がるのに応じて、メインルーチン起動要求ＳＴＡＲＴを“１”にするものである。
【００４０】
４クロック遅延器１５５は、処理要求ＲＥＱ１をクロックＣＫの４周期相当の時間だけ遅延させて出力する。ＡＮＤゲート１５６は、４クロック遅延器１５５の出力信号が“１”であり、かつ、クロック強制停止指令ＣＫＨＡＬＴが“１”であるときに“１”を出力し、そうでないときには“０”を出力する。フリップフロップ１５７は、立ち下がり検出パルスＣＫＨＡＬＴｆが“１”である状態においてクロックＣＫが立ち上がることによりリセットされ、ＡＮＤゲート１５６の出力信号が“１”である状態においてクロックＣＫが立ち上がることによりセットされる。
【００４１】
ＡＮＤ−ＯＲゲート１５８は、フリップフロップ１５７の出力信号が“０”の状態において、４クロック遅延器１５５の出力信号を通過させる。また、ＡＮＤ−ＯＲゲート１５８は、フリップフロップ１５７の出力信号が“１”の状態において、ＡＮＤゲート１４６から出力される立ち下がり検出パルスＣＫＨＡＬＴｆを通過させる。４クロック遅延器１５９は、クロック強制停止指令ＣＫＨＡＬＴが“０”であることを条件に、ＡＮＤ−ＯＲゲート１５８を通過した信号をクロックＣＫの４周期相当の時間だけ遅延させて出力する。この４クロック遅延器１５９の出力信号が割り込み要求ＩＲＱとなる。クロック強制停止指令ＣＫＨＡＬＴが“０”となり、フリップフロップ１５７がリセットされている状態では、４クロック遅延器１５５により遅延され、さらに４クロック遅延器１５９により遅延された処理要求ＲＥＱ１が割り込み要求ＩＲＱとなる。また、クロック強制停止指令ＣＫＨＡＬＴが“１”である期間に、処理要求ＲＥＱ１が“１”となってフリップフロップ１５７に“１”が書き込まれた場合に、その後、クロック強制停止指令ＣＫＨＡＬＴが“１”から“０”に立ち下がるのに応じて発生される立ち下がり検出パルスＣＫＨＡＬＴｆが割り込み要求ＩＲＱとして出力される。
【００４２】
ＯＲゲート１６０は、ＯＲゲート１５０の出力信号と処理要求ＲＥＱ１との論理和を出力する。すなわち、ＯＲゲート１６０は、信号ＳＷＯＮ、処理要求ＲＥＱ０、処理要求ＲＥＱ１のいずれかが“１”であるときに“１”を出力する。ＯＲゲート１６１は、メインルーチン起動要求ＳＴＡＲＴまたは割り込み要求ＩＲＱのいずれかが“１”であるときに“１”を出力する。
【００４３】
ＡＮＤゲート１６２は、ＤＳＰコア１７０に未処理の割り込み要求がなく、割り込み要求フラグＩＲＥＱが“０”であるときに、ＡＮＤゲート１４４が出力する立ち下がり検出パルスＢＵＳＹｆを通過させ、信号ＣＫＯＦＦとして出力する。この信号ＣＫＯＦＦは、割り込み要求フラグＩＲＥＱが“０”である状態において、ビジーフラグＢＵＳＹが立ち下がったとき、クロックＣＫの１周期相当の期間だけ“１”となる。
【００４４】
フリップフロップ１６３は、ＯＲゲート１６０の出力信号が“１”である状態においてクロックＣＫが立ち上がることによりセットされ、ＯＲゲート１６１の出力信号が“１”である状態においてクロックＣＫが立ち上がることによりリセットされる。ＯＲゲート１６４は、このフリップフロップ１６３の出力信号とＯＲゲート１６０の出力信号（処理要求ＲＥＱ０およびＲＥＱ１の論理和）との論理和を信号ＣＫＯＮとして出力する。従って、信号ＣＫＯＮは、信号ＳＷＯＮ、処理要求ＲＥＱ０またはＲＥＱ１が“１”になってから、メインルーチン起動要求ＳＴＡＲＴまたは割り込み要求ＩＲＱのいずれかが“１”となってフリップフロップ１６３がリセットされるまでの期間、“１”を維持する。
【００４５】
フリップフロップ１６５は、信号ＣＫＯＦＦが“１”である状態においてクロックＣＫが立ち上がることによりリセットされ、信号ＣＫＯＮが“１”である状態においてクロックＣＫが立ち上がることによりセットされる。このフリップフロップ１６５の出力信号がクロックイネーブル信号ＣＫＥとなる。図示は省略したが、起動制御部１４０は、このクロックイネーブル信号ＣＫＥに従って、クロックＣＫをＤＳＰコア１７０に対するクロックＤＳＰＣＫとして出力するか否かを切り換えるクロックゲートを有している。このクロックゲートは、クロックイネーブル信号ＣＫＥが“０”から“１”になると、その時点からクロックＣＫの３周期相当遅れて、クロックＣＫをクロックＤＳＰＣＫとしてＤＳＰコア１７０に供給する動作を開始する。また、クロックゲートは、クロックイネーブル信号ＣＫＥが“１”から“０”になると、その時点からクロックＣＫの３周期相当遅れて、クロックＤＳＰＣＫのＤＳＰコア１７０への供給を停止する。
以上が本実施形態によるＤＳＰコントローラ１１０の構成の詳細である。
【００４６】
次に各種の例を挙げて本実施形態の動作を説明する。
＜１．ＤＳＰ起動要求ＳＷによるメインルーチンの起動（第１の動作例）＞
本実施形態において、ホストプロセッサ２０１は、ＤＳＰ起動要求ＳＷを“０”から“１”に立ち上げることによりＤＳＰコントローラ１１０からＤＳＰコア１７０にクロックＤＳＰＣＫを供給させるとともに、メインルーチン起動要求ＳＴＲＡＴを供給させ、ＤＳＰコア１７０にメインルーチンを実行させることができる。図４はこの第１の動作例における各部の動作を示すタイムチャートである。
【００４７】
まず、ホストプロセッサ２０１がＤＳＰ起動要求ＳＷを“０”から“１”に立ち上げると、起動制御部１４０（図３）では、クロックＣＫの１周期相当のパルス幅を持った立ち上がり検出パルスＳＷｒが発生し、立ち上がり検出パルスＳＷｒがＡＮＤ−ＯＲゲート１４９を通過して信号ＳＷＯＮとなり、この信号ＳＷＯＮがＯＲゲート１５０、１６０および１６４を通過する。このため、信号ＳＷＯＮの立ち上がりにより信号ＣＫＯＮが立ち上がる。また、信号ＳＷＯＮは、ＯＲゲート１５０および１６０を介してフリップフロップ１６３に与えられ、かつ、ＯＲゲート１５０、１６０および１６４を介してフリップフロップ１６５に与えられるため、信号ＳＷＯＮが“１”になるタイミングからクロックＣＫの１周期相当の時間だけ遅れてフリップフロップ１６３および１６５がセットされる。そして、フリップフロップ１６５がセットされる結果、クロックイネーブル信号ＣＫＥが“１”に立ち上がる。このクロックイネーブル信号ＣＫＥの立ち上がり時点からクロックＣＫの３周期相当遅れたタイミング、すなわち、ＤＳＰ起動要求ＳＷの立ち上がりからクロックＣＫの４周期相当遅れたタイミングにおいて、クロックＣＫをクロックＤＳＰＣＫとしてＤＳＰコア１７０へ供給する動作が開始される。
【００４８】
一方、信号ＳＷＯＮが“１”になると、この信号ＳＷＯＮがＯＲゲート１５０、４クロック遅延器１５１およびＡＮＤ−ＯＲゲート１５４を通過し、メインルーチン起動要求ＳＴＡＲＴとして出力される。このため、メインルーチン起動要求ＳＴＡＲＴは、図４に示すように、ＤＳＰ起動要求ＳＷの立ち上がりからクロックＣＫの４周期相当遅れたタイミングにおいて立ち上がり、クロックＣＫの１周期相当の期間だけ“１”となる。この時点においてクロックＤＳＰＣＫのＤＳＰコア１７０への供給が開始されている。このため、ＤＳＰコア１７０は、クロックＤＳＰＣＫに同期してメインルーチン起動要求ＳＴＡＲＴを取り込み、ビジーフラグＢＵＳＹを“１”として、メインルーチンの実行を開始する。そして、ＤＳＰコア１７０は、プログラムカウンタＰＣをインクリメントしつつメインルーチンを実行する。
【００４９】
図５はＤＳＰコア１７０がメインルーチンにおいて停止命令ＨＡＬＴを実行した場合の各部の動作を示すタイムチャートである。図５に示すように、ＤＳＰコア１７０は停止命令ＨＡＬＴを実行すると、ビジーフラグＢＵＳＹを“０”とし、停止状態となる。起動制御部１４０では、ビジーフラグＢＵＳＹが“０”に立ち下がることにより立ち下がり検出パルスＢＵＳＹｆが発生し、この立ち下がり検出パルスＢＵＳＹｆが信号ＣＫＯＦＦとして出力される。また、信号ＣＫＯＦＦが“１”になると、その後のクロックＣＫの立ち上がりによりフリップフロップ１６５がリセットされ、クロックイネーブル信号ＣＫＥが“０”に立ち下がる。そして、このクロックイネーブル信号ＣＫＥの立ち下がりタイミングからクロックＣＫの３周期相当遅れたタイミングにおいて、ＤＳＰコア１７０へのクロックＤＳＰＣＫの供給が停止される。このようにして、ＤＳＰコア１７０が停止命令ＨＡＬＴを実行した後は、速やかにＤＳＰコア１７０へのクロックＤＳＰＣＫの供給が停止されるため、無駄な電力消費が回避される。
【００５０】
＜２．処理要求ＲＥＱ０によるメインルーチンの周期的起動（第２の動作例）＞
本実施形態において、ホストプロセッサ２０１は、ＤＳＰコントローラ１１０に周期的にメインルーチン起動要求ＳＴＡＲＴを発生させ、ＤＳＰコア１７０にメインルーチンを周期的に実行させることができる。図６はこの第２の動作例の概略を示すタイムチャートである。ホストプロセッサ２０１は、所望のフレームサイズを示すフレームサイズ情報ＳＩＺＥ０を第１の要求発生回路１２０Ａ（図２）に与え、所望のフレームサイズに対応した周期で処理要求ＲＥＱ０を発生させる。図３に示す起動制御部１４０において、処理要求ＲＥＱ０は信号ＳＷＯＮとともにＯＲゲート１５０に入力され、信号ＳＷＯＮと同様な取り扱いを受ける。すなわち、処理要求ＲＥＱ０を４クロック遅延器１５１によって遅延したパルスがメインルーチン起動要求ＳＴＡＲＴとして出力される。また、このメインルーチン起動要求ＳＴＡＲＴの発生タイミングに合わせてＤＳＰコア１７０へのクロックＤＳＰＣＫの供給が開始される（図４参照）。
【００５１】
そして、ＤＳＰコア１７０がメインルーチン（処理１）において停止命令ＨＡＬＴを実行すると、上述したようにビジーフラグＢＵＳＹが“０”となり、起動制御部１４０はクロックイネーブル信号ＣＫＥを“０”にしてＤＳＰコア１７０へのクロックＤＳＰＣＫの供給を停止する（図５参照）。
【００５２】
その後、再び処理要求ＲＥＱ０が発生すると、これに伴ってメインルーチン起動要求ＳＴＡＲＴが発生されるとともに、ＤＳＰコア１７０へのクロックＤＳＰＣＫの供給が再開される。そして、ＤＳＰコア１７０が停止命令ＨＡＬＴを実行してビジーフラグＢＵＳＹが“０”になると、ＤＳＰコア１７０へのクロックＤＳＰＣＫの供給が再び停止される。以下、同様である。
【００５３】
このように、第２の動作例では、メインルーチン起動要求ＳＴＡＲＴが周期的に繰り返し発生され、ＤＳＰコア１７０が停止命令ＨＡＬＴを実行して停止し、その後、メインルーチン起動要求ＳＴＡＲＴが発生するまでの間は、ＤＳＰコア１７０へのクロックＤＳＰＣＫの供給が停止される。従って、無駄な電力消費が回避される。
【００５４】
＜３．処理要求ＲＥＱ０およびＲＥＱ１によるメインルーチンおよび割り込みルーチンの周期的起動（第３の動作例）＞
本実施形態において、ホストプロセッサ２０１は、ＤＳＰコントローラ１１０に各々異なる周期でメインルーチン起動要求ＳＴＡＲＴと割り込み要求ＩＲＱを発生させ、ＤＳＰコア１７０に異なる周期でメインルーチン（処理１）と割り込みルーチン（処理２）を周期的に実行させることができる。図７はこの第３の動作例の概略を示すタイムチャートである。この例において、ホストプロセッサ２０１は、要求発生部１２０に処理要求ＲＥＱ０を周期的に発生させるとともに、この処理要求ＲＥＱ０の１／４の周期で処理要求ＲＥＱ１を発生させている。
【００５５】
図８は図７の時刻ｔ１１において処理要求ＲＥＱ０およびＲＥＱ１が同時に発生した場合における各部の動作を示すタイムチャートである。この図８に示すように、時刻ｔ１１において発生した処理要求ＲＥＱ０は、クロックＣＫの４周期相当の時間だけ遅延され、メインルーチン起動要求ＳＴＡＲＴとしてＤＳＰコア１７０に与えられる。また、時刻ｔ１１において発生した処理要求ＲＥＱ１は、クロックＣＫの８周期相当の時間だけ遅延され、割り込み要求ＩＲＱとしてＤＳＰコア１７０に与えられる。起動制御部１４０（図３参照）では、処理要求ＲＥＱ０およびＲＥＱ１の発生により、ＯＲゲート１６０の出力信号が“１”となる。このため、前掲図４の場合と同様、処理要求ＲＥＱ０およびＲＥＱ１の発生タイミングからクロックＣＫの１周期相当遅れてクロックイネーブル信号ＣＫＥが“１”となり、それからクロックＣＫの３周期相当遅れたタイミング、すなわち、メインルーチン起動要求ＳＴＡＲＴをＤＳＰコア１７０への供給タイミングに合わせて、クロックＤＳＰＣＫのＤＳＰコア１７０への供給が開始される。これによりＤＳＰコア１７０は、メインルーチン（処理１）の実行を開始し、プログラムカウンタＰＣのカウントが進む。そして、メインルーチン（処理１）の実行開始後、割り込み要求ＩＲＱが発生すると、ＤＳＰコア１７０は、メインルーチンを中断して、戻り先の命令のアドレス（図８の例ではｎ＋３）をプログラムスタックＰＳ（ＰＳＰ）に格納してプログラムスタックポインタＰＳＰを１だけインクリメントし、割り込みベクタＩＶが示す番地ｉの命令から割り込みルーチン（処理２）の実行を開始する。
【００５６】
図７において、ＤＳＰコア１７０は、割り込みルーチン（処理２）においてリターン命令ＲＥＴを実行すると、元のメインルーチンの実行に戻る（時刻ｔ１２）。その際、プログラムスタックポインタＰＳＰを１だけデクリメントし、デクリメント後のプログラムスタックポインタＰＳＰが示すプログラムスタックＳＰ（ＰＳＰ）に格納された番地からメインルーチンを再開する。
【００５７】
その後、時刻ｔ１３において、処理要求ＲＥＱ１のみが発生すると、これに伴って、割り込み要求ＩＲＱが発生する。これによりＤＳＰコア１７０は、割り込みルーチン（処理２）の実行を開始する。そして、この割り込みルーチン（処理２）においてリターン命令ＲＥＴを実行すると、ＤＳＰコア１７０はメインルーチン（処理１）を再開する。以下、同様である。
【００５８】
ＤＳＰコア１７０によるメインルーチン（処理１）の実行が進むと、やがてＤＳＰコア１７０は、メインルーチン（処理１）において停止命令ＨＡＬＴを実行する。図７（ｅ１）および（ｆ１）に示す例では、ＤＳＰコア１７０は、メインルーチン起動要求ＳＴＡＲＴが発生し、その後、割り込み要求ＩＲＱが４回発生した後、停止命令ＨＡＬＴを実行している。この場合の動作は、前掲図５の動作と同様である。すなわち、ＤＳＰコア１７０では、停止命令ＨＡＬＴの実行によりビジーフラグＢＵＳＹが“０”となり、起動制御部１４０は、これに応じてクロックイネーブル信号ＣＫＥを“０”とし、ＤＳＰコア１７０へのクロックＤＳＰＣＫの供給を停止する。
【００５９】
図７（ｅ２）および（ｆ２）に示す例では、ＤＳＰコア１７０は、メインルーチン起動要求ＳＴＡＲＴが発生し、その後、割り込み要求ＩＲＱが３回発生した後、停止命令ＨＡＬＴを実行している。そして、ＤＳＰコア１７０が停止命令ＨＡＬＴの実行により停止している状態において、時刻ｔ１４に処理要求ＲＥＱ１が発生し、これにより４回目の割り込み要求ＩＲＱが発生し、ＤＳＰコア１７０が４回目の割り込み処理（処理２）を実行している。
【００６０】
図９は、このＤＳＰコア１７０が停止している状態（ＢＵＳＹ＝“０”）において時刻ｔ１４の処理要求ＲＥＱ１によりＤＳＰコア１７０が起動される動作を示すタイムチャートである。上述したように、起動制御部１４０では、処理要求ＲＥＱ１は、クロックＣＫの８周期相当の時間だけ遅延され、割り込み要求ＩＲＱとして出力される。また、ビジーフラグＢＵＳＹが“０”の状態では、処理要求ＲＥＱ１の発生タイミングからクロックＣＫの４周期相当遅れてＤＳＰコア１７０へのクロックＤＳＰＣＫの供給が開始される。このように割り込み要求ＩＲＱが与えられる前にクロックＤＳＰＣＫのＤＳＰコア１７０への供給が開始されるため、ＤＳＰコア１７０は、割り込みルーチン（処理２）を開始することとなる。
【００６１】
図７（ｆ２）において、ＤＳＰコア１７０は、４回目の割り込みルーチン（処理２）においてリターン命令ＲＥＴを実行すると、その時点においてメインルーチン（処理１）は終了しているので、ビジーフラグＢＵＳＹを“０”として停止状態となる。これにより起動制御部１４０は、クロックイネーブル信号ＣＫＥを“０”としてＤＳＰコア１７０に対するクロックＤＳＰＣＫの供給を停止する。
【００６２】
以上のように、図７（ｅ１）および（ｆ１）に示す例では、ＤＳＰコア１７０がメインルーチン（処理１）において停止命令ＨＡＬＴを実行した時点以降、ビジーフラグＢＵＳＹが“０”になる。従って、このメインルーチン（処理１）における停止命令ＨＡＬＴの実行タイミングからメインルーチン起動要求ＳＴＡＲＴが再度発生されるまでの期間、ＤＳＰコア１７０へのクロックＤＳＰＣＫの供給が停止される。一方、図７（ｅ２）および（ｆ２）に示す例では、ＤＳＰコア１７０がメインルーチン（処理１）において停止命令ＨＡＬＴを実行した時点から４回目の割り込み要求ＩＲＱが発生するまでの期間と、４回目の割り込みルーチン（処理２）が終了してからメインルーチン起動要求ＳＴＡＲＴが発生されるまでの期間の両期間において、ビジーフラグＢＵＳＹが“０”になる。従って、この両期間において、ＤＳＰコア１７０へのクロックＤＳＰＣＫの供給が停止される。
【００６３】
このように、本実施形態によれば、フレーム周期の異なる２種類の処理（処理１および２）を同時並列的に進行させることができる。また、その場合において、処理１も処理２も実行されていない期間のすべてにおいて、ＤＳＰコア１７０へのクロックＤＳＰＣＫの供給を停止する。従って、本実施形態によれば、無駄な電力消費を回避することができる。
【００６４】
＜４．クロック強制停止状態において発生した処理要求ＲＥＱ０およびＲＥＱ１への応答動作（第４の動作例）＞
本実施形態では、ホストプロセッサ２０１がクロック強制停止要求ＣＫＨＡＬＴを“１”にしている期間に要求発生部１２０が処理要求ＲＥＱ０およびＲＥＱ１を発生し、その後、ホストプロセッサ２０１がクロック強制停止要求ＣＫＨＡＬＴを“０”にする場合がある。この場合、起動制御部１４０は、ＣＫＨＡＬＴ＝“０”となったとき、ＣＫＨＡＬＴ＝“１”である期間内に発生された処理要求ＲＥＱ０およびＲＥＱ１に応じてメインルーチン起動要求ＳＴＡＲＴおよび割り込み要求ＩＲＱをＤＳＰコア１７０に出力する。図１０はこの動作を示すタイムチャートである。
【００６５】
ＣＫＨＡＬＴ＝“１”の期間において、起動制御部１４０（図３参照）に処理要求ＲＥＱ０が与えられると、この処理要求ＲＥＱ０は、ＯＲゲート１５０、４クロック遅延器１５１、ＡＮＤゲート１５２を介してフリップフロップ１５３に与えられるため、フリップフロップ１５３がセットされる。また、ＣＫＨＡＬＴ＝“１”の期間において、起動制御部１４０に処理要求ＲＥＱ１が与えられると、この処理要求ＲＥＱ１は、４クロック遅延器１５５、ＡＮＤゲート１５６を介してフリップフロップ１５７に与えられるため、フリップフロップ１５７がセットされる。また、処理要求ＲＥＱ０およびＲＥＱ１が発生することにより、信号ＣＫＯＮが“１”となり、その後、クロックイネーブル信号ＣＫＥが“１”となり、ＤＳＰコア１７０へのクロックＤＳＰＣＫの供給が開始される。
【００６６】
そして、フリップフロップ１５３および１５７がセットされた状態においてクロック強制停止要求ＣＫＨＡＬＴが“１”から“０”に立ち下がり、立ち下がり検出パルスＣＫＨＡＬＴｆが発生すると、この立ち下がり検出パルスＣＫＨＡＬＴｆは、ＡＮＤ−ＯＲゲート１５４を通過し、メインルーチン起動要求ＳＴＡＲＴとして出力される。また、立ち下がり検出パルスＣＫＨＡＬＴｆは、ＡＮＤ−ＯＲゲート１５８を通過した後、イネーブル信号としてＣＫＨＡＬＴ＝“０”が与えられている４クロック遅延器１５９を通過し、割り込み要求ＩＲＱとして出力される。
【００６７】
本実施形態によれば、起動制御部１４０は、ＣＫＨＡＬＴ＝“０”となったとき、ＣＫＨＡＬＴ＝“１”である期間内に発生された処理要求ＲＥＱ０およびＲＥＱ１に応じてメインルーチン起動要求ＳＴＡＲＴおよび割り込み要求ＩＲＱをＤＳＰコア１７０に出力する。従って、ホストプロセッサ２０１がクロック強制停止要求ＣＫＨＡＬＴを解除して、要求発生部１２０による処理要求ＲＥＱ０およびＲＥＱ１の発生を開始させる場合、前者のクロック強制停止要求ＣＫＨＡＬＴの解除が後者の処理要求ＲＥＱ０およびＲＥＱ１の発生に対して遅れたとしても、メインルーチン起動要求ＳＴＡＲＴおよび割り込み要求ＩＲＱの発生を仕損じることがない。
【００６８】
なお、図１０に示す例において、ＣＫＨＡＬＴ＝“１”である期間に処理要求ＲＥＱ０のみが発生する場合や処理要求ＲＥＱ１のみが発生する場合も上記と同様な動作が得られる。具体的には、ＣＫＨＡＬＴ＝“１”である期間に処理要求ＲＥＱ０が発生した場合には、処理要求ＲＥＱ０の発生によりクロックＤＳＰＣＫのＤＳＰコア１７０への供給が開始され、ＣＫＨＡＬＴ＝“０”になると、メインルーチン起動要求ＳＴＡＲＴがＤＳＰコア１７０に供給される。また、ＣＫＨＡＬＴ＝“１”である期間に処理要求ＲＥＱ１が発生した場合には、処理要求ＲＥＱ１の発生によりクロックＤＳＰＣＫのＤＳＰコア１７０への供給が開始され、ＣＫＨＡＬＴ＝“０”になると、割り込み要求ＩＲＱがＤＳＰコア１７０に供給される。
【００６９】
＜５．ＤＳＰコア１７０の動作中に発生したＤＳＰ起動要求ＳＷを再発行させる動作（第５の動作例）＞
本実施形態では、ＤＳＰコア１７０が何らかの処理を実行しており、ビジーフラグＢＵＳＹが“１”となっている状態において、ホストプロセッサ２０１がＤＳＰ起動要求ＳＷを発生するという場合が起こり得る。図１１はこの場合の動作を示すタイムチャートである。
【００７０】
起動制御部１４０（図３参照）において、ＢＵＳＹ＝“１”の状態においてＤＳＰ起動要求ＳＷが発生して立ち上がり検出パルスＳＷｒが発生すると、この立ち上がり検出パルスＳＷｒは、ＡＮＤ−ＯＲゲート１４９を通過する。この結果、信号ＳＷＯＮが“１”となる。ここで、ＢＵＳＹ＝“１”の状態では、立ち上がり検出パルスＳＷｒは、ＡＮＤゲート１４７を通過してフリップフロップ１４８に与えられる。このため、フリップフロップ１４８はセットされる。しかし、ＢＵＳＹ＝“１”の状態では、ＡＮＤゲート１４４の出力信号が“０”となるため、フリップフロップ１４８の出力信号はＡＮＤ−ＯＲゲート１４９を通過しない。従って、信号ＳＷＯＮは、立ち上がり検出パルスＳＷｒに従って変化し、クロックＣＫの１周期相当の時間だけ“１”を維持した後、“０”に戻る。
【００７１】
起動制御部１４０では、パルスとなった信号ＳＷＯＮがＯＲゲート１５０、１６０を介してフリップフロップ１６３に与えられるとともに、ＯＲゲート１６４を通過する。従って、ＯＲゲート１６４の出力信号ＣＫＯＮは、信号ＳＷＯＮの立ち上がり以降、“１”を維持する。
【００７２】
その後、ＤＳＰコア１７０が停止命令ＨＡＬＴを実行してビジーフラグＢＵＳＹが“０”になると、立ち下がり検出パルスＢＵＳＹｆが発生する。未処理の割り込み要求がなく、割り込み要求フラグＩＲＥＱが“０”である状況では、立ち下がり検出パルスＢＵＳＹｆは、ＡＮＤゲート１６２を通過し、信号ＣＫＯＦＦとして出力されるとともに、フリップフロップ１６５のリセット端子に与えられる。しかしながら、このときフリップフロップ１６５のセット端子にＣＫＯＮ＝“１”が与えられているため、フリップフロップ１６５はリセットされない。このため、クロックイネーブル信号ＣＫＥは“１”を維持する。
【００７３】
また、この例では、立ち下がり検出パルスＢＵＳＹｆの発生時点において、フリップフロップ１４８はセットされている。このため、立ち下がり検出パルスＢＵＳＹｆは、ＡＮＤ−ＯＲゲート１４９を通過する。この結果、信号ＳＷＯＮが“１”になる。一方、立ち下がり検出パルスＢＵＳＹｆは、フリップフロップ１４８のリセット端子に与えられる。このため、フリップフロップ１４８は、立ち上がり検出パルスＢＵＳＹｆが“１”になった後のクロックＣＫの立ち上がりに同期してリセットされる。このため、ＡＮＤ−ＯＲゲート１４９が立ち下がり検出パルスＢＵＳＹｆを通過させた後、フリップフロップ１４８の出力信号は“０”となる。従って、信号ＳＷＯＮは、立ち下がり検出パルスＢＵＳＹｆに従って変化し、クロックＣＫの１周期相当の時間だけ“１”を維持した後、“０”に戻る。
【００７４】
この立ち下がり検出パルスＢＵＳＹｆを反映した信号ＳＷＯＮは、ＯＲゲート１５０、４クロック遅延器１５１、ＡＮＤ−ＯＲゲート１５４を通過し、メインルーチン起動要求ＳＴＡＲＴとしてＤＳＰコア１７０に供給される。
【００７５】
以上のように、ＢＵＳＹ＝“１”の状態においてＤＳＰ起動要求ＳＷが発生された場合には、ＢＵＳＹ＝“０”となったときに信号ＳＷＯＮが活性化され、メインルーチン起動要求ＳＴＡＲＴが発生される。このように、本実施形態では、ＢＵＳＹ＝“１”の状態において発生したＤＳＰ起動要求ＳＷが無視されず、ＢＵＳＹ＝“０”になった後、最小の遅延時間で、メインルーチン（処理１）が起動される。
【００７６】
＜６．第３の動作例をさらに発展させた動作例（第６の動作例）＞
図１２は上記第３の動作例をさらに発展させた第６の動作例を示すタイムチャートである。この例では、メインルーチン起動要求ＳＴＡＲＴがフレーム周期Ｔ１毎に発生され、割り込み要求がフレーム周期Ｔ２＝Ｔ１／４毎に発生されている。そして、図示の例では、開始点ＳＴ１から始まる最初のフレーム周期Ｔ１において、メインルーチン（処理１）および割り込みルーチン（処理２）の共通の処理対象である入力データＡ０〜Ａ３が発生し、開始点ＳＴ２から始まる２番目のフレーム周期Ｔ１において各処理１および２の共通の処理対象である入力データＢ０〜Ｂ３が発生し、開始点ＳＴ３から始まる３番目のフレーム周期Ｔ１において各処理１および２の共通の処理対象である入力データＣ０〜Ｃ３が発生している。
【００７７】
そして、ＤＳＰコア１７０は、メインルーチン起動要求ＳＴＡＲＴに応じて実行する処理１において、処理１の対象である第１の入力データをデータメモリ１９０に書き込む第１の入力処理と、当該メインルーチン起動要求ＳＴＡＲＴが与えられる前にデータメモリ１９０に書き込まれた第１の入力データの処理を行い、その結果得られる第１の処理結果データをデータメモリ１９０に書き込む第１のデータ処理と、当該メインルーチン起動要求ＳＴＡＲＴが与えられる前にデータメモリ１９０に書き込まれた第１の処理結果データを読み出して出力する第１の出力処理とを実行する。また、ＤＳＰコア１７０は、割り込み要求ＩＲＱに応じて実行する処理２において、処理２の対象である第２の入力データをデータメモリ１９０に書き込む第２の入力処理と、当該割り込み要求ＩＲＱが与えられる前にデータメモリ１９０に書き込まれた第２の入力データの処理を行い、その結果得られる第２の処理結果データをデータメモリ１９０に書き込む第２のデータ処理と、当該割り込み要求ＩＲＱが与えられる前にデータメモリ１９０に書き込まれた第２の処理結果データを読み出して出力する第２の出力処理とを実行する。この動作例では、処理１および２は、共通の入力データを処理対象とする。そこで、処理２の第２の入力処理では、処理１の第１の入力処理においてデータメモリ１９０内のある記憶エリアに書き込まれた入力データを読み出して、同データメモリ１９０内の処理２用の記憶エリアに書き込むこととなる。
【００７８】
以上の処理１および２の実行状況を図１２を参照して説明すると次のようになる。まず、ＤＳＰコア１７０は、開始点ＳＴ１から始まる１番目のフレーム周期Ｔ１における処理１において、入力データＡ０〜Ａ３をデータメモリ１９０に書き込む第１の入力処理を実行する。次に開始点ＳＴ２から始まる２番目のフレーム周期Ｔ１における処理１において、入力データＢ０〜Ｂ３をデータメモリ１９０に書き込む第１の入力処理を実行する。また、同処理１では、１番目のフレーム周期Ｔ１においてデータメモリ１９０に書き込まれた入力データＡ０〜Ａ３の処理を行い、その結果得られる第１の処理結果データをデータメモリ１９０に書き込む第１のデータ処理を実行する。次に、開始点ＳＴ３から始まる３番目のフレーム周期Ｔ１における処理１において、入力データＣ０〜Ｃ３をデータメモリ１９０に書き込む第１の入力処理を実行する。また、同処理１では、２番目のフレーム周期Ｔ１にデータメモリ１９０に書き込まれた入力データＢ０〜Ｂ３の処理を行い、この入力データＢ０〜Ｂ３についての第１の処理結果データをデータメモリ１９０に書き込む第１のデータ処理を実行する。また、同処理１では、２番目のフレーム周期Ｔ１にデータメモリ１９０に書き込まれた入力データＡ０〜Ａ３についての第１の処理結果データを読み出して出力する第１の出力処理を実行する（出力１）。
【００７９】
一方、ＤＳＰコア１７０は、開始点ＳＴ１の後の４番目のフレーム周期Ｔ２における処理２において、その時点においてデータメモリ１９０内に記憶された入力データＡ０を読み出してデータメモリ１９０内の処理２用の記憶エリアに書き込む第２の入力処理を実行する。次に開始点ＳＴ２の後の１番目のフレーム周期Ｔ２における処理２では、その時点においてデータメモリ１９０内に記憶された入力データＡ１を読み出してデータメモリ１９０内の処理２用の記憶エリアに書き込む第２の入力処理を実行する。また、同処理２では、開始点ＳＴ１の後の４番目のフレーム周期Ｔ２においてデータメモリ１９０の処理２用の記憶エリアに書き込まれた入力データＡ０の処理を行い、この入力データＡ０についての第２の処理結果データをデータメモリ１９０に書き込む第２のデータ処理を実行する。次に、開始点ＳＴ２の後の２番目のフレーム周期Ｔ２における処理２では、その時点においてデータメモリ１９０内に記憶された入力データＡ２を読み出してデータメモリ１９０内の処理２用の記憶エリアに書き込む第２の入力処理を実行する。また、同処理２では、１番目のフレーム周期Ｔ２においてデータメモリ１９０内の処理２用の記憶エリアに書き込まれた入力データＡ１の処理を行い、この入力データＡ１についての第２の処理結果データをデータメモリ１９０に書き込む第２のデータ処理を実行する。また、同処理２では、１番目のフレーム周期Ｔ２においてデータメモリ１９０に書き込まれた入力データＡ０についての第２の処理結果データを読み出して外部に出力する第２の出力処理を実行する（出力２）。
以下、同様である。
【００８０】
本実施形態によれば、処理１に関しては、入力データが発生してから、その入力データについての処理結果データがデータメモリ１９０から読み出されるまでの間に、フレーム周期Ｔ１の２倍の長さのレイテンシが生じる。しかしながら、処理２に関しては、入力データのデータメモリ１９０への書き込みがあってから、その入力データについての処理結果データがデータメモリ１９０から読み出されるまでの間に、フレーム周期Ｔ１の１．２５倍の長さのレイテンシしか生じない。従って、本実施形態によれば、処理２についてのレイテンシを低く抑えることができるという利点がある。
【００８１】
＜７．第６の動作例をさらに発展させた動作例（第７の動作例）＞
図１３は、上記第６の動作例においてデータメモリ１９０の使用方法を改善した第７の動作例を示すタイムチャートである。この第７の動作例において、処理１を実行するためのデータメモリ１９０内の所定容量の記憶エリアＭ１ａ、Ｍ１ｂ、Ｍ１ｃを使用し、処理２を実行するためにデータメモリ１９０内の所定容量の記憶エリアＭ２ａ、Ｍ２ｂ、Ｍ２ｃを使用する。図１３において、“入力”と記されている記憶エリアは、処理１または処理２の対象となる入力データの書き込み先となっている入力エリア、“作業”と記されている記憶エリアは、処理１の第１のデータ処理または処理２の第２のデータ処理の作業エリア、“出力”と記されている記憶エリアは、処理１の第１の出力処理または処理２の第２の出力処理において処理結果データの読み出し先となっている出力エリアである。
【００８２】
処理１に関して説明すると、開始点ＳＴｎから始まるフレーム周期Ｔ１では、記憶エリアＭ１ａが入力エリア、記憶エリアＭ１ｂが作業エリア、記憶エリアＭ１ｃが出力エリアとなる。この開始点ＳＴｎから始まるフレーム周期Ｔ１では、その後の開始点ＳＴｎ＋１から始まるフレーム周期Ｔ１における処理１の対象となる入力データが入力エリアＭ１ａに書き込まれる。次に開始点ＳＴｎ＋１から始まるフレーム周期Ｔ１では、記憶エリアＭ１ａが作業エリア、記憶エリアＭ１ｂが出力エリア、記憶エリアＭ１ｃが入力エリアとなる。この開始点ＳＴｎ＋１から始まるフレーム周期Ｔ１では、その後の開始点ＳＴｎ＋２から始まるフレーム周期Ｔ１における処理１の対象となる入力データが入力エリアＭ１ｃに書き込まれる。また、開始点ＳＴｎ＋１から始まるフレーム周期Ｔ１の処理１では、作業エリアＭ１ａに書き込まれた入力データ（開始点ＳＴｎから始まるフレーム周期Ｔ１において書き込まれたもの）についての第１のデータ処理を実行し、その結果得られる処理結果データを作業エリアＭ１ａに書き込む。次に開始点ＳＴｎ＋２から始まるフレーム周期Ｔ１では、記憶エリアＭ１ａが出力エリア、記憶エリアＭ１ｂが入力エリア、記憶エリアＭ１ｃが作業エリアとなる。この開始点ＳＴｎ＋２から始まるフレーム周期Ｔ１では、その後の開始点ＳＴｎ＋３から始まるフレーム周期Ｔ１における処理１の対象となる入力データが入力エリアＭ１ｂに書き込まれる。また、開始点ＳＴｎ＋２から始まるフレーム周期Ｔ１の処理１では、作業エリアＭ１ｃに書き込まれた入力データ（開始点ＳＴｎ＋１から始まるフレーム周期Ｔ１において書き込まれたもの）についての第１のデータ処理を実行し、その結果得られる処理結果データを作業エリアＭ１ｃに書き込む。また、開始点ＳＴｎ＋２から始まるフレーム周期Ｔ１の処理１では、出力エリアＭ１ａに書き込まれた処理結果データ（開始点ＳＴｎ＋１から始まるフレーム周期Ｔ１において書き込まれたもの）を読み出して外部に出力する第１の出力処理を実行する。以下、同様である。
【００８３】
また、処理２に関して説明すると、開始点ＳＴｎの後の１番目のフレーム周期Ｔ２では、記憶エリアＭ２ａが入力エリア、記憶エリアＭ２ｂが作業エリア、記憶エリアＭ２ｃが出力エリアとなる。この１番目のフレーム周期Ｔ２では、その後の２番目のフレーム周期Ｔ２における処理２の対象となる入力データが入力エリアＭ２ａに書き込まれる。次に開始点ＳＴｎの後の２番目のフレーム周期Ｔ２では、記憶エリアＭ２ａが作業エリア、記憶エリアＭ２ｂが出力エリア、記憶エリアＭ２ｃが入力エリアとなる。この２番目のフレーム周期Ｔ２では、その後の３番目のフレーム周期Ｔ２における処理２の対象となる入力データが入力エリアＭ２ｃに書き込まれる。また、２番目のフレーム周期Ｔ２の処理２では、作業エリアＭ２ａに書き込まれた入力データ（１番目のフレーム周期Ｔ２において書き込まれたもの）についての第２のデータ処理を実行し、その結果得られる処理結果データを作業エリアＭ２ａに書き込む。次に開始点ＳＴｎの後の３番目のフレーム周期Ｔ２では、記憶エリアＭ２ａが出力エリア、記憶エリアＭ２ｂが入力エリア、記憶エリアＭ２ｃが作業エリアとなる。この３番目のフレーム周期Ｔ２では、その後の４番目のフレーム周期Ｔ２における処理２の対象となる入力データが入力エリアＭ２ｂに書き込まれる。また、３番目のフレーム周期Ｔ２の処理２では、作業エリアＭ２ｃに書き込まれた入力データ（２番目のフレーム周期Ｔ２において書き込まれたもの）についての第２のデータ処理を実行し、その結果得られる処理結果データを作業エリアＭ２ｃに書き込む。また、３番目のフレーム周期Ｔ２の処理２では、出力エリアＭ２ａに書き込まれた処理結果データ（２番目のフレーム周期Ｔ２において書き込まれたもの）を読み出して外部に出力する第２の出力処理を実行する。以下、同様である。
【００８４】
以上の動作例において、各フレーム周期Ｔ１の処理１において処理する入力データのチャネル数Ｃを８、１チャネル当たりのサンプル数Ｓを１２８、１サンプル当たりのデータ量を１ワードとすると、各フレーム周期Ｔ１において処理１のために使用するデータメモリ１９０の記憶容量は次のようになる。
Ｃ×Ｓ×３
＝８×１２８×３
＝３０７２ワード
【００８５】
一方、各フレーム周期Ｔ２の処理２において処理する入力データのチャネル数Ｃを８、１チャネル当たりのサンプル数Ｓを３２、１サンプル当たりのデータ量を１ワードとすると、各フレーム周期Ｔ２において処理２のために使用するデータメモリ１９０の記憶容量は次のようになる。
Ｃ×Ｓ×３
＝８×３２×３
＝７６８ワード
従って、処理１および２を実行するために占有することとなるデータメモリ１９０の記憶容量は、次のようになる。
３０７２＋７６８＝３８４０ワード
【００８６】
ここで、仮に処理２を周期Ｔ２毎の割り込み処理により行わないものとすると、例えば周期Ｔ１毎に行う処理１の中で４回の処理２を行う必要が生じる。この場合、本来的な処理１のために必要な記憶容量３０７２ワードは変わらないが、各フレーム周期Ｔ１において４回の処理２のために７６８×４＝３０７２ワードの記憶容量が必要になる。何故ならば、この場合に処理２のための入力エリア／作業エリア／出力エリアの切り換えをフレーム周期Ｔ１に同期して行うこととなるため、各フレーム周期Ｔ１では、４回の処理２に必要な入力エリア、作業エリアおよび出力エリアを確保する必要があるからである。このため、仮に処理２を周期Ｔ２毎の割り込み処理により行わないものとすると、処理１および処理２を実行するために占有することとなるデータメモリ１９０の記憶容量は、次のようになる。
３０７２＋３０７２＝６１４４ワード
【００８７】
以上のように本実施形態によれば、処理２に関して、フレーム周期Ｔ１よりも短いフレーム周期Ｔ２毎に入力エリア／作業エリア／出力エリアの切り換えを行うことができるので、処理１および２のために使用するデータメモリ１９０の記憶容量を低減することができるという利点がある。
【００８８】
＜８．処理落ち判定（第８の動作例）＞
本実施形態では、ＤＳＰコア１７０が実行するメインルーチン（処理１）および割り込みルーチン（処理２）において、処理落ち判定支援部としての機能を兼ね備えた要求発生部１２０との情報交換を行うことにより処理落ちが発生したか否かの判定を行うことができる。
【００８９】
ここで、処理落ち判定の動作を説明するのに先立ち、図１４を参照し、処理落ちそれ自体について説明する。この例では、フレーム周期Ｔ１毎に１回のメインルーチン起動要求ＳＴＡＲＴが発生し（図１４（ａ）参照）、フレーム周期Ｔ１の１／４の時間長であるフレーム周期Ｔ２毎に１回の割り込み要求ＩＲＱが発生している（図１４（ｂ）参照）。
【００９０】
図１４（ｃ１）および（ｄ１）に示す例では、メインルーチン起動要求ＳＴＡＲＴに応じて実行開始された処理１は次のメインルーチン起動要求ＳＴＡＲＴが発生する前に終了しており、割り込み要求ＩＲＱに応じて実行される処理２は、次の割り込み要求ＩＲＱが発生する前に終了している。この図１４（ｃ１）および（ｄ１）に示す例は、処理１および２のいずれにおいても処理落ちが発生していない例である。
【００９１】
図１４（ｃ２）および（ｄ２）に示す例では、処理２の処理落ちは発生していないが、メインルーチン起動要求ＳＴＡＲＴに応じて実行開始された処理１が、次のメインルーチン起動要求ＳＴＡＲＴの発生後に終了している。これは処理１について処理落ちが発生した例である。この場合、処理落ちとなった処理１（終了が後発のメインルーチン起動要求ＳＴＡＲＴに対して遅れた処理１）では、１フレーム周期Ｔ１以内に次のフレーム周期Ｔ１において出力するための出力結果データを生成することができていないため、出力結果データの出力に支障を来たす。そこで、このような処理落ちが処理１に発生した場合には、処理１において処理結果データの出力を停止するミュートを行う必要がある。
【００９２】
図１４（ｃ３）および（ｄ３）に示す例では、２番目の割り込み要求ＩＲＱに応じて実行開始された処理２が長引き、次の割り込み要求ＩＲＱの発生後に終了している。これは処理２の終了タイミングが後発の割り込みＩＲＱの発生タイミング以降となる処理２の処理落ちの第１の例である。図１４（ｃ４）および（ｄ４）に示す例では、２番目の割り込み要求ＩＲＱが許可されるのに時間が掛かり、次の割り込み要求ＩＲＱの発生タイミングの後に割り込み要求ＩＲＱが許可されて処理２の実行が開始されている。これは、処理２の実行開始のタイミングが後発の割り込み要求ＩＲＱの発生タイミング以降となる処理２の処理落ちの第２の例である。これらの処理２の処理落ちが発生した場合も、処理１の処理落ちと同様な対処が必要である。
【００９３】
ここで、メインルーチン起動要求ＳＴＡＲＴにより起動された処理１は、当該処理１の起動要因となったメインルーチン起動要求ＳＴＡＲＴの後発のメインルーチン起動要求ＳＴＡＲＴが発生したとしても、その事実を検知する手段を有していない。従って、処理１の終了タイミングの前に後発のメインルーチン起動要求ＳＴＡＲＴが発生したとしても、その発生を検知することができず、処理落ちの判定をすることができない。処理１の処理落ちの判定を行うために、処理１の開始後にタイマを動作させ、処理１の実行中に周期Ｔ１相当の計時が行われるか否かにより処理１の処理落ちが発生したか否かを判定する方法が考えられる。このようなタイマによる処理落ち判定機能を処理１に持たせると、処理１が複雑化し、かつ、処理１の処理量が大きくなるという問題が生じる。また、処理１と処理２が並列実行される状況では、メインルーチン起動要求ＳＴＡＲＴに対して遅滞なく処理１が起動されるという保障はない。このため、タイマが周期Ｔ１の計時を終える前に後発のメインルーチン起動要求ＳＴＡＲＴが発生し、処理１の処理落ちが発生しているにも拘わらず、処理１においてその処理落ちを見落とすという不具合が発生し得る。また、フレーム周期Ｔ１の時間長が切り換えられるような状況では、このタイマによる処理落ちの判定を行うことができない。そこで、本実施形態における要求発生部１２０は、このような処理１の処理落ち、処理２の処理落ちの発生をＤＳＰコア１７０が実行する処理１、処理２内において判定するのを支援する処理落ち判定支援部として機能する。
【００９４】
図１５および図１６は、ＤＳＰコア１７０の実行する処理１が、第１の要求発生回路１２０Ａによる処理落ち判定支援機能を利用して処理１の処理落ちを判定する動作例を示すタイムチャートである。図１５に示す動作例では、処理要求ＲＥＱ０が発生され、これに基づいてメインルーチン起動要求ＳＴＡＲＴ（図１５では図示省略）が発生され、このメインルーチン起動要求ＳＴＡＲＴにより処理１が起動されている。そして、処理１では、メインルーチン起動要求ＳＴＡＲＴによる起動の直後のタイミングにおいて、第１の要求発生回路１２０Ａが出力する第１のフレーム切り換えフラグＦＸ０１を読み取って、その内容が“１”になっていることを確認し、読み出しフラグＲＥＡＤ０を“１”にして、第１のフレーム切り換えフラグＦＸ０１および第２のフレーム切り換えフラグＦＸ０２を“０”にしている。また、処理１では、停止命令ＨＡＬＴを実行する直前に第１の要求発生回路１２０Ａが出力する第１のフレーム切り換えフラグＦＸ０１を読み取って、その内容が“０”になっていることを確認し、読み出しフラグＲＥＡＤ０を“１”にして、第１のフレーム切り換えフラグＦＸ０１および第２のフレーム切り換えフラグＦＸ０２を“０”にしている。この動作例では、処理１の開始時点における第１のフレーム切り換えフラグＦＸ０１の内容が“１”であり、処理１の終了時点における第１のフレーム切り換えフラグＦＸ０１の内容が“０”であるので、処理１の実行中、当該処理１の起動要因であるメインルーチン起動要求ＳＴＡＲＴの後発のメインルーチン起動要求ＳＴＡＲＴは発生していない。従って、この動作例において処理１は、処理１の処理落ちが発生していないと判定する。
【００９５】
これに対し、図１６に示す動作例では、処理１の実行中、当該処理１の起動要因であるメインルーチン起動要求ＳＴＡＲＴの後発のメインルーチン起動要求ＳＴＡＲＴが発生している。このため、処理１の開始時点における第１のフレーム切り換えフラグＦＸ０１の内容が“１”であり、処理１の終了時点における第１のフレーム切り換えフラグＦＸ０１の内容も“１”となる。従って、この動作例において処理１は、メインルーチン起動要求ＳＴＡＲＴの１周期以内に処理１が終了しない処理落ちが発生したと判定する。
【００９６】
図１７および図１８は、ＤＳＰコア１７０の実行する処理２が、第２の要求発生回路１２０Ｂによる処理落ち判定支援機能を利用して処理２の処理落ちを判定する動作例を示すタイムチャートである。図１７に示す動作例では、処理要求ＲＥＱ１が発生され、これに基づいて割り込み要求ＩＲＱ（図１７では図示省略）が発生され、この割り込み要求ＩＲＱにより処理２が起動されている。そして、処理２では、その開始から終了までの間に、第２の要求発生回路１２０Ｂが出力する第２のフレーム切り換えフラグＦＸ１２を読み取って、読み出しフラグＲＥＡＤ１を“１”にして、第１のフレーム切り換えフラグＦＸ１１および第２のフレーム切り換えフラグＦＸ１２を“０”にしている。この動作例では、第２のフレーム切り換えフラグＦＸ１２の内容が“０”であるので、次の２つのケースのいずれにも該当しないということができる。
ａ．処理２が第２のフレーム切り換えフラグＦＸ１２の内容を確認するまでの間に、当該処理２の起動要因である割り込み要求ＩＲＱの後発の割り込み要求ＩＲＱが発生した。すなわち、割り込み要求ＩＲＱの１周期以内に処理２が終了しない処理落ちがあった。
ｂ．当該処理２は、本来、その起動要因である割り込み要求ＩＲＱに先行する割り込み要求ＩＲＱにより起動されるべきであったのに、その先行する割り込み要求ＩＲＱが許可されなかった。すなわち、割り込み要求ＩＲＱの１周期（より具体的には、先行する割り込み要求ＩＲＱから起動要因である割り込み要求ＩＲＱまでの期間）以内に処理２が開始されない処理落ちがあった。
そこで、この動作例において、処理２は、処理２の処理落ちが発生していないと判定する。
【００９７】
これに対し、図１８に示す動作例では、１回目の処理要求ＲＥＱ１に対応した割り込み要求ＩＲＱが発生してから２回目の処理要求ＲＥＱ１に対応した割り込み要求ＩＲＱが発生するまでの間、処理２が開始されない処理落ち（上記ｂの事態）が発生しており、処理２において第２のフレーム切り換えフラグＦＸ１２の内容が“１”であることが確認されている。従って、この動作例において処理２は、処理２の処理落ちが発生したと判定する。なお、図示は省略したが、上記ａの事態が発生した場合も、処理２の実行中に第２のフレーム切り換えフラグＦＸ１２の内容を確認すると、その内容が“１”となるため、処理２の処理落ちの判定をすることができる。
【００９８】
以上説明したように、本実施形態によれば、メインルーチン起動要求ＳＴＡＲＴに応じて起動される処理１では、第１の要求発生回路１２０Ａが出力する第１のフレーム切り換えフラグＦＸ０１を確認することにより処理１の処理落ちの有無を判定することができ、割り込み要求ＩＲＱに応じて起動される処理２では、第２の要求発生回路１２０Ｂが出力する第２のフレーム切り換えフラグＦＸ１２を確認することにより処理２の処理落ちの有無を判定することができる。
【００９９】
＜他の実施形態＞
以上、この発明の一実施形態を説明したが、この発明には、他にも各種の実施形態が考えられる。例えば次の通りである。
【０１００】
（１）上記実施形態では、共通の入力データに対して処理１および処理２を実行したが、異なる入力データに対して処理１および処理２を実行してもよい。
（２）上記実施形態では、処理２のフレームの時間長およびサンプル数は、処理１のフレームの時間長およびサンプル数の整数分の１であったが、処理１のフレームの時間長およびサンプル数と処理２のフレームの時間長およびサンプル数との比は、整数比でなくてもよい。
（３）上記実施形態における処理１において、第１の要求発生回路１２０Ａが出力する第２のフレーム切り換えフラグＦＸ０２を確認することにより、メインルーチン起動要求ＳＴＡＲＴの１周期以内に処理１が終了しない処理落ち、処理１が開始されない処理落ちの有無を判定するようにしてもよい。
（４）上記実施形態では、処理１とともに割り込み処理としての処理２が並列実行される状況で、処理落ち判定を行うようにしたが、処理１のみが実行される状況において、処理１が第１の要求発生回路１２０Ａの出力する第１のフレーム切り換えフラグＦＸ０１または第２のフレーム切り換えフラグＦＸ０２を参照して処理落ちの判定を行ってもよい。
【符号の説明】
【０１０１】
１００……ＤＳＰ、１１０……ＤＳＰコントローラ、１７０……ＤＳＰコア、１８０……命令メモリ、１９０……データメモリ、２０１……ホストプロセッサ、２０２……クロックジェネレータ、１２０……要求発生部、１４０……起動制御部、１２２，１２６，１２８……マルチプレクサ、１２１，１４２，１４７，１５２，１５６，１４６，１４４，１６２……ＡＮＤゲート、１３０，１３１，１５０，１６０，１６１，１６４……ＯＲゲート、１２５……一致検出部、１２４……加算器、１２３……レジスタ、１２７，１２９，１４８，１５３，１５７，１６３，１６５……フリップフロップ、１４１，１４３，１４５……１クロック遅延器、１５１，１５５，１５９……４クロック遅延器。
【図１】
2012038174.tif 000003
【図２】
2012038174.tif 000004
【図３】
2012038174.tif 000005
【図４】
2012038174.tif 000006
【図５】
2012038174.tif 000007
【図６】
2012038174.tif 000008
【図７】
2012038174.tif 000009
【図８】
2012038174.tif 000010
【図９】
2012038174.tif 000011
【図１０】
2012038174.tif 000012
【図１１】
2012038174.tif 000013
【図１２】
2012038174.tif 000014
【図１３】
2012038174.tif 000015
【図１４】
2012038174.tif 000016
【図１５】
2012038174.tif 000017
【図１６】
2012038174.tif 000018
【図１７】
2012038174.tif 000019
【図１８】
2012038174.tif 000020