(57)【要約】【課題】処理を効率的に、かつ高速に行うことができるようにする。【解決手段】  コーディックモジュール５４は、メインプロセッサ３１により実行されるものであるメイン用モジュール６１、およびメイン用モジュール６１により設定される処理構成に応じて、１または複数のサブプロセッサ３２で実行されるサブ用モジュール６２により構成される。メイン用モジュール６１は、ＡＶ制御モジュール５１から処理要求を受けると、バス管理モジュール５２およびサブプロセッサ管理モジュール５３に問い合わせを行うことにより、バスおよびサブプロセッサのリソース状況、ＡＶ制御モジュール５１により付加されている優先度に基づいて、コーディック処理の処理構成を設定する。サブ用モジュール６２は、メイン用モジュール６１の制御のもと、実際に、符号化処理や復号処理を行う。本発明は、音声や映像を記録、再生する情報処理装置に適用できる。【選択図】図５
2006099451.tif 000002
【特許請求の範囲】
【請求項１】
データ処理を実行する情報処理装置において、
前記データ処理が実行されたデータが書き込まれるメインメモリと、
前記メインメモリとバスで接続され、前記データ処理を実行する複数の処理手段と、
１のデータ処理を前記複数の処理手段で実行させるように、前記１のデータ処理内のパイプラインを設定するパイプライン設定手段と、
前記複数の処理手段に、前記パイプライン設定手段により設定された前記パイプラインで、前記１のデータ処理を実行させる処理制御手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記パイプライン設定手段は、前記１のデータ処理を前記複数の処理手段で、前記１のデータ処理毎に交互に実行させるように、前記１のデータ処理内のパイプラインを設定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記パイプライン設定手段は、前記１のデータ処理を前記複数の処理手段に応じて分割し、分割した処理を前記複数の処理手段にそれぞれ並行に実行させるように、前記１のデータ処理内のパイプラインを設定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記複数の処理手段の空き状況を管理する処理状況管理手段と、
前記バスの空き状況を管理するバス状況管理手段と
をさらに備え、
前記パイプライン設定手段は、前記処理状況管理手段により管理される前記複数の処理手段の空き状況、または前記バス状況管理手段により管理される前記バスの空き状況に基づいて、前記１のデータ処理内のパイプラインを設定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記データ処理には、優先度が付加されており、
前記パイプライン設定手段は、前記１のデータ処理に付加される優先度に応じて、前記１のデータ処理内のパイプラインを設定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記処理状況管理手段により管理される前記複数の処理手段のうち、１の処理手段しか空いていない場合、前記処理制御手段は、前記１の処理手段に、前記１のデータ処理を実行させる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記データ処理は、音声データの符号化または復号処理である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項８】
データ処理を実行する情報処理装置の情報処理方法において、
前記データ処理が実行されたデータが書き込まれるメインメモリとバスで接続され、前記データ処理を実行する複数の処理手段で、１のデータ処理を実行させるように、前記１のデータ処理内のパイプラインを設定するパイプライン設定ステップと、
前記複数の処理手段に、前記パイプライン設定ステップの処理により設定された前記パイプラインで、前記１のデータ処理を実行させる処理制御ステップと
を含むことを特徴とする情報処理方法。
【請求項９】
データ処理をコンピュータに行わせるプログラムが記録されている記録媒体であって、
前記データ処理が実行されたデータが書き込まれるメインメモリとバスで接続され、前記データ処理を実行する複数の処理手段で、１のデータ処理を実行させるように、前記１のデータ処理内のパイプラインを設定するパイプライン設定ステップと、
前記複数の処理手段に、前記パイプライン設定ステップの処理により設定された前記パイプラインで、前記１のデータ処理を実行させる処理制御ステップと
を含むことを特徴とするプログラムが記録されている記録媒体。
【請求項１０】
データ処理をコンピュータに行わせるプログラムであって、
前記データ処理が実行されたデータが書き込まれるメインメモリとバスで接続され、前記データ処理を実行する複数の処理手段で、１のデータ処理を実行させるように、前記１のデータ処理内のパイプラインを設定するパイプライン設定ステップと、
前記複数の処理手段に、前記パイプライン設定ステップの処理により設定された前記パイプラインで、前記１のデータ処理を実行させる処理制御ステップと
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、記録媒体、並びにプログラムに関し、特に、複数のサブプロセッサを用いて、１つの処理についてのパイプラインを構成することにより、その処理を高速に行うことができるようにした情報処理装置および方法、記録媒体、並びにプログラムに関する。
【背景技術】
【０００２】
昨今、複数のプロセッサまたはコンピュータを用いて、処理を分散して実行させる、分散処理システムが注目されている。分散処理を実行させる方法としては、ネットワークを介して接続される複数のコンピュータに処理を実行させる方法、１つのコンピュータに設けられた、複数のプロセッサに処理を実行させる方法、および上述した２つの方法を組み合わせて処理を実行させる方法がある。
【０００３】
さらに、１つのコンピュータに複数のプロセッサが設けられている場合には、例えば、複数のプロセッサ間で、ストリーミングデータを受信して再生する処理を行うための専用パイプライン関係を確立することにより、処理を実行させる方法も提案されている（特許文献１参照）。
【０００４】
【特許文献１】特開２００４−４６８６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したネットワークを介して接続される複数のコンピュータに処理を実行させる方法を用いたとしても、ネットワークの遅延やプロセッサ間通信によるオーバヘッドにより、処理速度の向上は制限される。特に、音声データの圧縮、伸張のような比較的軽い処理については、オーバヘッドの方が負荷になってしまい、処理の高速化が抑制されてしまう課題があった。
【０００６】
一方、１つのプロセッサしか有しないコンピュータにおいては、当然パイプラインを構成することは困難であった。
【０００７】
また、１つのコンピュータに複数のプロセッサが設けられている場合には、上述したように、複数のプロセッサにおいて、専用パイプライン関係を確立することにより、ストリーミングデータを受信して再生する一連の処理を行うこともできる。
【０００８】
しかしながら、この場合、各プロセッサには、これらの一連の処理を構成する、例えば、パケット処理、およびMPEG（Moving Picture Experts Group）データ処理などのそれぞれ１つの処理が、複数のプロセッサのうちの１つのプロセッサにそれぞれ割り当てられる。したがって、あるプロセッサが行うパケット処理が終わるまで、MPEGデータ処理を行うプロセッサは、待機している必要があった。すなわち、１つのコンピュータに複数のプロセッサが設けられている場合であっても、１つの処理に対して、１つのプロセッサしか動作しておらず、待機しているリソースが無駄である課題があった。
【０００９】
さらに、例えば、符号化処理を高速化するために、コンピュータに、専用のハードウェアを組み込むことも可能であるが、組み込むハードウェアは開発コストがかかる上に汎用的ではない課題があった。
【００１０】
本発明は、このような状況に鑑みてなされたものであり、処理を効率的に、かつ高速に行うことができるようにするものである。
【課題を解決するための手段】
【００１１】
本発明の情報処理装置は、データ処理が実行されたデータが書き込まれるメインメモリと、メインメモリとバスで接続され、データ処理を実行する複数の処理手段と、１のデータ処理を複数の処理手段で実行させるように、１のデータ処理内のパイプラインを設定するパイプライン設定手段と、複数の処理手段に、パイプライン設定手段により設定されたパイプラインで、１のデータ処理を実行させる処理制御手段とを備えることを特徴とする。
【００１２】
パイプライン設定手段は、１のデータ処理を複数の処理手段で、１のデータ処理毎に交互に実行させるように、１のデータ処理内のパイプラインを設定するようにすることができる。
【００１３】
パイプライン設定手段は、１のデータ処理を複数の処理手段に応じて分割し、分割した処理を複数の処理手段にそれぞれ並行に実行させるように、１のデータ処理内のパイプラインを設定するようにすることができる。
【００１４】
複数の処理手段の空き状況を管理する処理状況管理手段と、バスの空き状況を管理するバス状況管理手段とをさらに備え、パイプライン設定手段は、処理状況管理手段により管理される複数の処理手段の空き状況、またはバス状況管理手段により管理されるバスの空き状況に基づいて、１のデータ処理内のパイプラインを設定するようにすることができる。
【００１５】
データ処理には、優先度が付加されており、パイプライン設定手段は、１のデータ処理に付加される優先度に応じて、１のデータ処理内のパイプラインを設定するようにすることができる。
【００１６】
処理状況管理手段により管理される複数の処理手段のうち、１の処理手段しか空いていない場合、処理制御手段は、１の処理手段に、１のデータ処理を実行させるようにすることができる。
【００１７】
データ処理は、音声データの符号化または復号処理であるようにすることができる。
【００１８】
本発明の情報処理方法は、データ処理が実行されたデータが書き込まれるメインメモリとバスで接続され、データ処理を実行する複数の処理手段で、１のデータ処理を実行させるように、１のデータ処理内のパイプラインを設定するパイプライン設定ステップと、複数の処理手段に、パイプライン設定ステップの処理により設定されたパイプラインで、１のデータ処理を実行させる処理制御ステップとを含むことを特徴とする。
【００１９】
本発明の記録媒体に記録されているプログラムは、データ処理が実行されたデータが書き込まれるメインメモリとバスで接続され、データ処理を実行する複数の処理手段で、１のデータ処理を実行させるように、１のデータ処理内のパイプラインを設定するパイプライン設定ステップと、複数の処理手段に、パイプライン設定ステップの処理により設定されたパイプラインで、１のデータ処理を実行させる処理制御ステップとを含むことを特徴とする。
【００２０】
本発明のプログラムは、データ処理が実行されたデータが書き込まれるメインメモリとバスで接続され、データ処理を実行する複数の処理手段で、１のデータ処理を実行させるように、１のデータ処理内のパイプラインを設定するパイプライン設定ステップと、複数の処理手段に、パイプライン設定ステップの処理により設定されたパイプラインで、１のデータ処理を実行させる処理制御ステップとを含むことを特徴とする。
【００２１】
本発明においては、データ処理が実行されたデータが書き込まれるメインメモリとバスで接続され、データ処理を実行する複数の処理手段で、１のデータ処理を実行させるように、１のデータ処理内のパイプラインが設定される。そして、複数の処理手段により、設定されたパイプラインでの１のデータ処理が実行される。
【発明の効果】
【００２２】
本発明によれば、リソースを無駄にせず、処理の高速化を図ることができる。また、本発明によれば、チップのクロック数が削減され、省電力化を図ることができる。さらに、本発明によれば、他のモジュールに影響することなく、処理構成の追加などの変更が可能になる。
【発明を実施するための最良の形態】
【００２３】
以下に本発明の最良の形態を説明するが、開示される発明と実施の形態との対応関係を例示すると、次のようになる。本明細書中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００２４】
さらに、この記載は、明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現し、追加される発明の存在を否定するものではない。
【００２５】
請求項１に記載の情報処理装置（例えば、図１の情報処理装置１）は、データ処理が実行されたデータが書き込まれるメインメモリ（例えば、図１のメインメモリ１２）と、メインメモリとバス（例えば、図１のバス３６）で接続され、データ処理を実行する複数の処理手段（例えば、図１のサブプロセッサ３２−１乃至３２−４）と、１のデータ処理を複数の処理手段で実行させるように、１のデータ処理内のパイプラインを設定するパイプライン設定手段（例えば、図５の処理構成設定部７１）と、複数の処理手段に、パイプライン設定手段により設定されたパイプラインで、１のデータ処理を実行させる処理制御手段（例えば、図５の制御部７２）とを備えることを特徴とする。
【００２６】
請求項２に記載の情報処理装置は、パイプライン設定手段は、１のデータ処理を複数の処理手段で、１のデータ処理毎に交互に実行させるように、１のデータ処理内のパイプライン（例えば、図１０のパイプライン構成１７１）を設定することを特徴とする。
【００２７】
請求項３に記載の情報処理装置は、パイプライン設定手段は、１のデータ処理を複数の処理手段に応じて分割し、分割した処理を複数の処理手段にそれぞれ並行に実行させるように、１のデータ処理内のパイプライン（例えば、図１７のパイプライン構成１９１）を設定することを特徴とする。
【００２８】
請求項４に記載の情報処理装置は、複数の処理手段の空き状況を管理する処理状況管理手段（例えば、図５のバス管理モジュール５２）と、バスの空き状況を管理するバス状況管理手段（例えば、図５のサブプロセッサ管理モジュール５３）とをさらに備え、パイプライン設定手段は、処理状況管理手段により管理される複数の処理手段の空き状況、またはバス状況管理手段により管理されるバスの空き状況に基づいて、１のデータ処理内のパイプラインを設定することを特徴とする。
【００２９】
請求項５に記載の情報処理装置は、データ処理には、優先度（例えば、図６の優先度１乃至４）が付加されており、パイプライン設定手段は、１のデータ処理に付加される優先度に応じて、１のデータ処理内のパイプラインを設定することを特徴とする。
【００３０】
請求項８に記載の情報処理方法は、データ処理が実行されたデータが書き込まれるメインメモリとバスで接続され、データ処理を実行する複数の処理手段で、１のデータ処理を実行させるように、１のデータ処理内のパイプラインを設定するパイプライン設定ステップ（例えば、図２６のステップＳ２５）と、複数の処理手段に、パイプライン設定ステップの処理により設定されたパイプラインで、１のデータ処理を実行させる処理制御ステップ（例えば、図２６のステップＳ２７）とを含むことを特徴とする。
【００３１】
なお、請求項９に記載の記録媒体に記録されているプログラム、および請求項１０に記載のプログラムは、上述した請求項８に記載の情報処理方法と基本的に同様の構成であるため、繰り返しになるのでその説明は省略する。
【００３２】
以下、図を参照して本発明の実施の形態について説明する。
【００３３】
図１は、本発明を適用した情報処理装置の一実施の形態を示す図である。情報処理装置１は、例えば、ポータブルＣＤ（Compact Disk）プレイヤ、ハードディスクレコーダ、またはカムコーダなどのＡＶ（Audio Visual）機器、パーソナルコンピュータ、もしくはＰＤＡ（Personal Digital Assistant）などにより構成される。
【００３４】
情報処理装置１は、情報処理コントローラ１１、メインメモリ１２、記録部１３−１、記録部１３−２、バス１４、操作入力部１５、入力部１６、出力部１７、通信部１８、およびドライブ１９により構成される。
【００３５】
情報処理コントローラ１１は、メインメモリ１２に記録されている各種のプログラムを実行し、情報処理装置１全体を制御する。情報処理コントローラ１１は、例えば、図示せぬネットワークを介して接続される他の情報処理装置に送信するソフトウェアセルを生成し、生成したソフトウェアセルを、バス１４を介して、通信部１８に供給する。情報処理コントローラ１１は、通信部１８から供給されたデータを記録部１３−１または１３−２に供給する。情報処理コントローラ１１は、操作入力部１５からの指示信号に基づいて、指定されたデータを、メインメモリ１２や、記録部１３−１または１３−２から取得し、取得したデータを、バス１４を介して出力部１７に供給する。
【００３６】
なお、情報処理コントローラ１１には、情報処理装置１を、通信部１８を介して接続される図示せぬネットワーク全体を通して、一意的に特定できる装置ＩＤが割り当てられている。
【００３７】
情報処理コントローラ１１は、メインプロセッサ３１、サブプロセッサ３２−１乃至サブプロセッサ３２−４、DMAC（Direct Memory Access Controller）３３、ＤＣ（Disk Controller）３４、キー管理テーブル記憶部３５、およびバス３６により密結合に構成される。
【００３８】
メインプロセッサ３１、サブプロセッサ３２−１乃至サブプロセッサ３２−４、DMAC３３、ＤＣ３４、およびキー管理テーブル記憶部３５は、バス３６を介して、相互に接続されている。また、メインプロセッサ３１には、メインプロセッサ３１を特定するためのメインプロセッサＩＤが識別子として割り当てられる。同様に、サブプロセッサ３２−１乃至サブプロセッサ３２−４のそれぞれには、サブプロセッサ３２−１乃至サブプロセッサ３２−４のそれぞれを特定するためのサブプロセッサＩＤのそれぞれが識別子として割り当てられる。
【００３９】
メインプロセッサ３１は、サブプロセッサ３２−１乃至サブプロセッサ３２−４によるプログラムの実行のスケジュール管理および情報処理コントローラ１１（情報処理装置１）の全体の管理を行う。メインプロセッサ３１は、ＲＡＭ（Random Access Memory）などで構成されるローカルストレージ４１を備える。
【００４０】
メインプロセッサ３１は、ＤＣ３４を制御し、記録部１３−１または１３−２に記録されているデータおよびプログラムを読み出させ、DMAC３３を制御し、メインメモリ１２にロードさせて、一時的に記憶させる。メインプロセッサ３１は、メインメモリ１２からデータおよびプログラムを読み込み、読み込んだデータおよびプログラムをもとに、情報処理装置１の各種の処理を実行する。また、メインプロセッサ３１は、記録部１３−１または１３−２に記録されているデータおよびプログラムだけでなく、図示せぬ他の情報処理装置からネットワークを介して通信部１８で受信されたセルに含まれるプログラムやデータも、メインメモリ１２にロードする。
【００４１】
メインプロセッサ３１は、ネットワークを介して接続されている、他の情報処理装置に分散処理を実行させる場合、操作入力部１５を介して要求された処理を実行するために必要なデータおよびプログラムを含むソフトウェアセルを生成し、生成したソフトウェアセルをバス３６およびバス１４を介して、通信部１８に供給する。
【００４２】
サブプロセッサ３２−１乃至サブプロセッサ３２−４は、メインプロセッサ３１の制御の下、並列的かつ独立に、プログラムを実行し、データを処理する。なお、必要に応じて、メインプロセッサ３１が実行するプログラムは、サブプロセッサ３２−１乃至サブプロセッサ３２−４のそれぞれが実行するプログラムのそれぞれと連携して動作するように構成することも可能である。
【００４３】
サブプロセッサ３２−１乃至サブプロセッサ３２−４のそれぞれは、ローカルストレージ４２−１乃至ローカルストレージ４２−４のそれぞれを備える。サブプロセッサ３２−１乃至サブプロセッサ３２−４のそれぞれは、ローカルストレージ４２−１乃至ローカルストレージ４２−４のそれぞれに、必要に応じて、データおよびプログラムを一時的に記憶させる。サブプロセッサ３２−１乃至サブプロセッサ３２−４のそれぞれは、ローカルストレージ４２−１乃至ローカルストレージ４２−４のそれぞれからデータおよびプログラムを読み込み、読み込んだデータおよびプログラムをもとに、各種の処理を実行する。
【００４４】
以下、サブプロセッサ３２−１乃至サブプロセッサ３２−４のそれぞれを個々に区別する必要のないとき、単にサブプロセッサ３２と称する。同様に、以下、ローカルストレージ４２−１乃至ローカルストレージ４２−４のそれぞれを個々に区別する必要のないとき、単にローカルストレージ４２と称する。なお、情報処理装置１においては、４つのサブプロセッサ３２により構成されているが、接続される数は任意である。
【００４５】
DMAC３３は、キー管理テーブル記憶部３５に記録されている、メインプロセッサキー、サブプロセッサキー、およびアクセスキーをもとに、メインプロセッサ３１およびサブプロセッサ３２からのメインメモリ１２に記憶されているプログラムおよびデータへのアクセスを管理する。ＤＣ３４は、メインプロセッサ３１およびサブプロセッサ３２からの記録部１３−１および１３−２などへのアクセスを行う。
【００４６】
キー管理テーブル記憶部３５は、メインプロセッサキー、サブプロセッサキー、およびアクセスキーを記録している。なお、メインプロセッサキー、サブプロセッサキー、およびアクセスキーの詳細は後述する。
【００４７】
メインメモリ１２は、例えば、DRAM（Dynamic Random Access Memory）などにより構成される。メインメモリ１２は、メインプロセッサ３１およびサブプロセッサ３２が実行する各種のプログラムおよびデータを一時的に記憶する。
【００４８】
記録部１３−１および１３−２は、それぞれ、例えば、ハードディスクなどにより構成される。記録部１３−１および記録部１３−２は、メインプロセッサ３１およびサブプロセッサ３２が実行する各種のプログラムおよびデータを記録している。また、記録部１３−１および記録部１３−２は、情報処理コントローラ１１から供給されたデータを記録する。以下、記録部１３−１および１３−２を個々に区別する必要のないとき、単に記録部１３と称する。
【００４９】
なお、記録部１３は、固定ディスクやリムーバブルディスクなどのハードディスクだけでなく、例えば、Blu-ray Disc、ＣＤ−ＲＷ（Compact Disk ReWritable）、ＤＶＤ±ＲＷ(Digital Versatile Disk ReWritable)などの光ディスク、磁気ディスク（フレキシブルディスクを含む）、を含む）、光磁気ディスク（MD(Mini-Disk)（商標）を含む）、もしくは半導体メモリなどにより構成されるようにしてもよい。
【００５０】
また、情報処理コントローラ１１には、バス１４を介して、操作入力部１５、入力部１６、出力部１７、通信部１８、ドライブ１９が接続されている。操作入力部１５は、キーボード、マウスなどからなり、ユーザの操作に応じた指示信号を、情報処理コントローラ１１に供給する。入力部１６は、音声を集音し、音声データとして、情報処理コントローラ１１に供給するマイクロフォンや、被写体を撮像し、撮像により得られた映像に対応する映像データを情報処理コントローラ１１に供給する撮像部などにより構成される。出力部１７は、例えば、ディスプレイ、スピーカ、およびランプなどよりなり、情報処理コントローラ１１から供給されたデータを出力する。
【００５１】
通信部１８は、情報処理コントローラ１１から供給されたソフトウェアセルを、ネットワークを介して他の情報処理装置宛てに送信する。また、通信部１８は、他の情報処理装置からネットワークを介して送信されてきたデータを、バス１４を介して、情報処理コントローラ１１に供給する。
【００５２】
ドライブ１９は、磁気ディスク５１、光ディスク５２、光磁気ディスク５３、あるいは半導体メモリ５４などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて、バス１４を介して、情報処理コントローラ１１に転送され、情報処理コントローラ１１によって、記録部１３に記録される。
【００５３】
次に、図２乃至図４を参照して、サブプロセッサ３２がメインメモリ１２にアクセスする場合の処理について説明する。
【００５４】
図２で示されるように、メインメモリ１２には、複数のアドレスを指定できるメモリロケーションが配置される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、Ｆ／Ｅビット、サブプロセッサＩＤおよびＬＳアドレス（ローカルストレージアドレス）を含む。また、各メモリロケーションには、後述するアクセスキーが割り振られる。
【００５５】
“０”であるＦ／Ｅビットは、サブプロセッサ３２によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーションから読み出し不可であることを示す。また、“０”であるＦ／Ｅビットは、そのメモリロケーションにデータ書き込み可能であることを示し、データが書き込まれると、Ｆ／Ｅビットは“１”に設定される。
【００５６】
“１”であるＦ／Ｅビットは、そのメモリロケーションのデータがサブプロセッサ３２によって読み出されておらず、未処理の最新データであることを示す。Ｆ／Ｅビットが“１”であるメモリロケーションのデータは読み出し可能であり、サブプロセッサ３２によって読み出されてから、Ｆ／Ｅビットは“０”に設定される。また、“１”であるＦ／Ｅビットは、メモリロケーションがデータ書き込み不可であることを示す。
【００５７】
さらに、Ｆ／Ｅビットが“０”（読み出し不可／書き込み可）である状態において、メモリロケーションについて読み出し予約を設定することが可能である。Ｆ／Ｅビットが“０”であるメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ３２は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報としてサブプロセッサ３２のサブプロセッサＩＤおよびＬＳアドレスを書き込む。そして、データを書き込むサブプロセッサ３２によって、読み出し予約されたメモリロケーションにデータが書き込まれ、Ｆ／Ｅビットが“１”（読み出し可／書き込み不可）に設定されたとき、あらかじめ読み出し予約情報として追加セグメントに書き込まれているサブプロセッサＩＤおよびＬＳアドレスによって特定されるローカルストレージ４２に読み出される。
【００５８】
複数のサブプロセッサ３２によってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出しおよび書き込みを制御することによって、前段階の処理を行うサブプロセッサ３２が、処理済みのデータをメインメモリ１２における所定のアドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ３２が前処理後のデータを読み出すことが可能となる。
【００５９】
また、図３で示されるように、サブプロセッサ３２のローカルストレージ４２は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含む。
【００６０】
サブプロセッサ３２がメインメモリ１２に記憶されているデータをサブプロセッサ３２のローカルストレージ４２のメモリロケーションに読み出すときには、対応するビジービットを“１”に設定して予約する。ビジービットが“１”であるメモリロケーションには、他のデータを格納することができない。ローカルストレージ４２のメモリロケーションにデータが読み出されると、ビジービットは“０”に設定され、他のデータを格納することができるようになる。
【００６１】
さらに、図２で示すように情報処理コントローラ１１に接続されているメインメモリ１２には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ１２内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ３２に割り当てられ、割り当てられたサブプロセッサ３２が排他的に使用することができる。すなわち、サブプロセッサ３２は、割り当てられたサンドボックスを使用できるが、この領域を超えてデータにアクセスすることはできない。
【００６２】
メインメモリ１２は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
【００６３】
さらに、メインメモリ１２の排他的な制御を実現するために、図４で示されるキー管理テーブルが用いられる。キー管理テーブルは、キー管理テーブル記憶部３５に記録され、DMAC３３と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサＩＤ、サブプロセッサキーおよびキーマスクが含まれる。
【００６４】
サブプロセッサ３２がメインメモリ１２にアクセスする場合、サブプロセッサ３２はDMAC３３に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、サブプロセッサ３２を特定するサブプロセッサＩＤおよびアクセス要求先であるメインメモリ１２のアドレスが含まれる。
【００６５】
DMAC３３は、サブプロセッサ３２から供給されたコマンドを実行する場合、キー管理テーブルを参照して、アクセス要求元のサブプロセッサ３２のサブプロセッサキーを調べる。そして、DMAC３３は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ１２のメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、サブプロセッサ３２から供給されたコマンドを実行する。
【００６６】
図４は、キー管理テーブルを説明する図である。キー管理テーブルに記録されているキーマスクは、その任意のビットが“１”になることによって、そのキーマスクと関連付けられたサブプロセッサキーの対応するビットを“０”または“１”にすることができる。
【００６７】
例えば、サブプロセッサキーが“１０１０”であるとする。通常、このサブプロセッサキーによって“１０１０”のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが“０００１”に設定されている場合には、キーマスクのビットが“１”に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ（キーマスクのビットが“１”に設定された桁について、判定されず）、このサブプロセッサキー“１０１０”によってアクセスキーが“１０１０”または“１０１１”のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【００６８】
以上のようにして、メインメモリ１２のサンドボックスの排他性が実現される。すなわち、複数のサブプロセッサ３２によってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサ３２と、後段階の処理を行うサブプロセッサ３２のみが、メインメモリ１２の所定のアドレスにアクセスできるようになり、データを保護することができる。
【００６９】
例えば、キーマスクの値は、以下のように変更されることが考えられる。まず、情報処理装置１の起動直後においては、キーマスクの値は全て“０”である。メインプロセッサ３１にロードされたプログラムが実行され、サブプロセッサ３２にロードされたプログラムと連携動作するものとする。サブプロセッサ３２−１により出力された処理結果データを、メインメモリ１２に記憶させ、メインメモリ１２に記憶させた処理結果データを、サブプロセッサ３２−２に入力したいときには、サブプロセッサ３２−１により出力された処理結果データを記憶しているメインメモリ１２の領域は、サブプロセッサ３２−１およびサブプロセッサ３２−２からアクセス可能である必要がある。そのような場合に、メインプロセッサ３１は、キーマスクの値を適切に変更し、複数のサブプロセッサ３２からアクセスできるメインメモリの領域を設けることにより、サブプロセッサ３２による多段階的の処理を可能にする。
【００７０】
より具体的には、例えば、他の情報処理装置などから送信されてきた、データを基に、サブプロセッサ３２−１が所定の処理実行し、処理が施されたデータをメインメモリ１２の第１の領域に記憶させる。そして、サブプロセッサ３２−２は、メインメモリ１２の第１の領域から、記憶されているデータを読み出し、読み出したデータを基に、所定の処理を実行し、処理が施されたデータをメインメモリ１２の第１の領域とは、異なる第２の領域に記憶させる。
【００７１】
ここで、サブプロセッサ３２−１のサブプロセッサキーが“０１００”であり、メインメモリ１２の第１の領域のアクセスキーが“０１００”であり、サブプロセッサ３２−２のサブプロセッサキーが“０１０１”であり、メインメモリ１２の第２の領域のアクセスキーが“０１０１”である場合、サブプロセッサ３２−２は、メインメモリ１２の第１の領域にアクセスすることができない。そこで、サブプロセッサ３２−２のキーマスクを“０００１”にすることによって、サブプロセッサ３２−２は、メインメモリ１２の第１の領域にアクセスすることができるようになる。
【００７２】
なお、図２乃至図４においては、サブプロセッサ３２がメインメモリ１２にアクセスする場合について説明したが、メインプロセッサ３１は、上述したサブプロセッサＩＤおよびサブプロセッサキーに対応する、メインプロセッサＩＤおよびメインプロセッサキーを有しており、メインプロセッサ３１が、例えば、ローカルストレージ４１で処理を行うために、メインメモリ１２にアクセスする場合も同様な処理が実行される。
【００７３】
図５は、情報処理コントローラ１１上で動作するソフトウェアモジュールの構成例を示している。なお、図５の例においては、ＡＶ（Audio Visual）再生または記録を実現するために必要最低限のモジュールのみが示されており、ＯＳ（オペレーティングシステム）やデバイスドライバなどの情報処理装置１上の基本的な動作を制御するモジュールは省略されている。
【００７４】
ＡＶ制御モジュール５１は、メインプロセッサ３１により実行されるものであり、音声または映像のコーディックモジュール５４に対して、符号化または復号処理を要求し、要求した符号化または復号処理の結果を受け取った後に、音声および映像の同期を取って、再生、または記録を行う。また、ＡＶ制御モジュール５１は、符号化または復号処理の要求とともに、後述する複数種類のコーディックモジュール５４に優先度を付加する。
【００７５】
バス管理モジュール５２は、メインプロセッサ３１により実行されるものであり、メインプロセッサ３１、サブプロセッサ３２、およびＤＭＡＣ３３を介してメインメモリ１２を接続するバス３６を管理する。すなわち、バス管理モジュール５２は、バス３６に接続されている各部から、バス３６に対するデータ送受信の要求を受け、データ送受信を制御するとともに、バス３６のバス帯域を監視する。
【００７６】
サブプロセッサ管理モジュール５３は、メインプロセッサ３１により実行されるものであり、サブプロセッサ３２を管理する。すなわち、サブプロセッサ管理モジュール５３は、サブプロセッサ３２への実行コード（サブ用モジュール６２）をロードしたり、サブプロセッサ３２が動作中であるか、または停止中であるかなどのサブプロセッサ３２の状態を管理する。
【００７７】
コーディックモジュール５４は、音声データまたは映像データのコーディック処理を行う。コーディックモジュール５４は、例えば、図６に示されるように、映像データを復号するビデオ復号コーディックモジュール５４−１、音声データを復号するオーディオ復号コーディックモジュール５４−２、映像信号を符号化するビデオ符号化コーディックモジュール５４−３、および音声信号を符号化するオーディオ符号化コーディックモジュール５４−４など、情報処理装置１が搭載を必要とするコーディックの種類だけ存在する。
【００７８】
図６の例において、ＡＶ制御モジュール５１は、ビデオ復号コーディックモジュール５４−１、オーディオ復号コーディックモジュール５４−２、ビデオ符号化コーディックモジュール５４−３、およびオーディオ符号化コーディックモジュール５４−４にそれぞれ優先度１乃至４を付加して、処理要求を行っている。なお、この処理要求は、操作入力部１５を介して入力されるユーザからの指示信号などに基づいて行われる。
【００７９】
すなわち、ＡＶ制御モジュール５１は、処理を要求した４つのコーディックモジュール５４の中で、ビデオ復号コーディックモジュール５４−１に、一番高い優先度を付加している。換言すると、ビデオ復号コーディックモジュール５４−１が実行する処理が、情報処理装置１において最も重要視されており、ＡＶ制御モジュール５１は、情報処理装置１内のリソースをビデオ復号コーディックモジュール５４−１が優先的に利用することを許可している。
【００８０】
なお、図６のビデオ復号コーディックモジュール５４−１、オーディオ復号コーディックモジュール５４−２、ビデオ符号化コーディックモジュール５４−３、およびオーディオ符号化コーディックモジュール５４−４の構成は、コーディック処理部８２における処理の対象（映像データ、音声データ）と、コーディック処理（符号化、復号）がそれぞれ異なるだけであり、図５のコーディックモジュール５４と基本的に同様の構成である。したがって、以下、図５のコーディックモジュール５４の構成は、図６のビデオ復号コーディックモジュール５４−１、オーディオ復号コーディックモジュール５４−２、ビデオ符号化コーディックモジュール５４−３、またはオーディオ符号化コーディックモジュール５４−４の構成としても適宜用いられる。
【００８１】
図５に戻って、コーディックモジュール５４は、メインプロセッサ３１により実行されるものであり、他のモジュール（ＡＶ制御モジュール５１、バス管理モジュール５２、またはサブプロセッサ管理モジュール５３）からの要求を受け取ったり、後述するコーディック処理の処理構成設定（選択）処理などを行うメイン用モジュール６１、および、サブプロセッサ３２により実行され、実際に符号化処理や復号処理を行うサブ用モジュール６２により構成される。
【００８２】
メイン用モジュール６１は、処理構成設定部７１、制御部７２、およびサブプロセッサ用オブジェクトコード管理部７３により構成される。
【００８３】
処理構成設定部７１は、ＡＶ制御モジュール５１から処理要求を受けると、バス管理モジュール５２およびサブプロセッサ管理モジュール５３に問い合わせを行うことにより、バス３６およびサブプロセッサ３２のリソース状況を受け、それらのリソース状況、またはＡＶ制御モジュール５１により付加されている優先度に基づいて、コーディック処理の処理構成を設定する。すなわち、処理構成設定部７１は、コーディック処理の処理構成として、１のサブプロセッサ３２のみによる構成、または複数のサブプロセッサ３２によるパイプライン構成を選択、設定し、設定した処理構成を制御部７２に供給する。
【００８４】
制御部７２は、処理構成設定部７１により設定された処理構成に応じたサブプロセッサ３２のオブジェクトコードに関する情報を取得し、取得した情報に基づいて、サブプロセッサ３２へのサブ用モジュール６２のロードを、サブプロセッサ管理モジュール５３に要求する。また、制御部７２は、サブ制御部８１とコマンド送受信を行い、データの受け渡しや、処理の開始または停止などを制御したり、ＡＶ制御モジュール５１に、コーディック処理の結果などを送信する。
【００８５】
サブプロセッサ用オブジェクトコード管理部７３は、各パイプライン構成を実現するためのサブプロセッサ３２のオブジェクトコードに関する情報を保持している。サブプロセッサ３２のオブジェクトコードに関する情報（以下、オブジェクトコード情報とも称する）は、例えば、オブジェクトコードが存在するメインメモリ１２上のアドレスやサイズなどである。
【００８６】
サブ用モジュール６２は、サブ制御部８１およびコーディック処理部８２により構成され、処理構成設定部７１により設定される処理構成に応じて、１つのサブプロセッサ３２、または複数のサブプロセッサ３２により実行されるものである。
【００８７】
サブ制御部８１は、制御部７２とコマンド送受信などを行い、受信したコマンドに基づいて、コーディック処理部８２を制御する。コーディック処理部８２は、サブ制御部８１の制御のもと、入力されるデータ（映像データまたは音声データ）を符号化、あるいは復号する処理を実行する。
【００８８】
次に、サブプロセッサ３２における音声データのデコード（コーディック）処理を説明する。なお、以下、ＡＡＣ（MPEG-2 Audio AAC（Advanced Audio Coding）により音声データを復号するオーディオ復号コーディックモジュール５４−２を用いて説明する。
【００８９】
図７は、コーディック処理に対して、１つのサブプロセッサ３２−１が割り当てられている場合（以下、１サブプロセッサ構成とも称する）を示している。すなわち、図７においては、処理構成設定部７１により１のサブプロセッサ３２のみによる処理構成が設定され、サブプロセッサ３２−１によりオーディオ復号コーディックモジュール５４−２のサブ用モジュール６２が実行されることにより、実現される機能構成例が示されている。なお、サブ制御部８１の図示は省略されている。
【００９０】
図７の例において、コーディック処理部８２は、ＣＲ(Channel Reconstruction)処理部１０１およびＦＴ(Frequency to Time)処理部１０２により構成される。
【００９１】
ＣＲ処理部１０１は、入力されるデータに対して、ハフマン符号復号処理と逆量子化処理（なお、以下、ハフマン符号復号処理と逆量子化処理をまとめてＣＲ処理とも適宜称する）を実行する。ＦＴ処理部１０２は、ＣＲ処理部１０１により逆量子化されたデータに、スケールファクタ処理、ステレオ処理、ＴＮＳ（Temporal Noise Shaping）処理、および逆ＭＤＣＴ演算処理（なお、以下、スケールファクタ処理、ステレオ処理、ＴＮＳ処理、および逆ＭＤＣＴ演算処理をまとめてＦＴ処理とも適宜称する）を実行する。すなわち、ＣＲ処理部１０１は、音声データを復号するコーディック（デコード）処理のうちのＣＲ処理を実行し、ＦＴ処理部１０２は、音声データを復号するコーディック処理のうちのＦＴ処理を実行する。
【００９２】
ローカルストレージ４２−１は、各種データを蓄積するバッファ１１１乃至１１５により構成されている。バッファ１１１は、メインメモリ１２からＤＭＡＣ３３およびバス３６を介して入力されるＡＡＣ形式で圧縮された１フレーム分の圧縮データを蓄積し、ＣＲ処理部１０１に入力する。
【００９３】
バッファ１１２は、ＣＲ処理部１０１によりＣＲ処理が実行された周波数領域データを蓄積し、後段のＦＴ処理部１０２に入力する。周波数領域データは、例えば、1024点の周波数サンプリングデータで構成される。
【００９４】
バッファ１１３は、メインメモリ１２からＤＭＡＣ３３およびバス３６を介して入力される前フレームの参照データを蓄積し、ＦＴ処理部１０２に入力する。前フレームの参照データとは、現在処理中の１つ前のフレームの時間領域サンプリングデータを表しており、１つ前のフレームのＦＴ処理部１０２の処理によりメインメモリ１２に書き出されている。この前フレームの参照データは、ＦＴ処理部１０２による逆ＭＤＣＴ処理に用いられる。
【００９５】
バッファ１１４は、ＦＴ処理部１０２によりＦＴ処理が実行されて出力される次フレームの参照データを蓄積し、バス３６およびＤＭＡＣ３３を介してメインメモリ１２に出力する。次フレームの参照データは、現在処理中の１つ後のフレームのＦＴ処理部１０２による逆ＭＤＣＴ処理に用いられる。
【００９６】
バッファ１１５は、ＦＴ処理部１０２により復号されたＰＣＭ(Pulse Code Modulation)データを蓄積し、バス３６およびＤＭＡＣ３３を介してメインメモリ１２に出力する。ＰＣＭデータは、ＦＴ処理部１０２によりスケールファクタ処理、ステレオ処理、ＴＮＳ処理、および逆ＭＤＣＴ演算処理が実行され、復号された1024点の時間領域データである。
【００９７】
メインメモリ１２は、図２乃至図４を参照して上述したので、その詳細な説明は省略するが、複数のメモリロケーション１２１（図７の場合、メモリロケーション１２１−１および１２１−２）が配置されており、各メモリロケーション１２１には、追加セグメント１２２（図７の場合、追加セグメント１２２−１および１２２−２）がそれぞれ割り振られ、排他性が実現されている。
【００９８】
１サブプロセッサ構成の音声データのデコード処理について、具体的に説明する。メインメモリ１２からの１フレームの圧縮データは、バッファ１１１に一旦蓄積され、バッファ１１１を介して、ＣＲ処理部１０１に入力される。ＣＲ処理部１０１は、ＣＲ処理を実行して、周波数領域データを生成し、生成した周波数領域データをバッファ１１２に一旦蓄積するとともに、ＦＴ処理部１０２に処理の終了を通知する。
【００９９】
また、バッファ１１３には、ＦＴ処理部１０２の制御のもと、ＤＭＡＣ３３により、メインメモリ１２のメモリロケーション１２１−１から読み出された前フレームの参照データが蓄積されている。なお、このとき、ＤＭＡＣ３３は、ＦＴ処理部１０２の制御のもと、追加セグメント１２２−１のＦ／Ｅビットを読み出し、追加セグメント１２２−１の値が“１”であれば、そのメモリロケーション１２１−１のデータがまだ読み出されておらず、未処理の最新データであるとして、書き込まれているデータ（前フレームの参照データ）を読み出す。そして、読み出した前フレームの参照データが、バッファ１１３に蓄積されると、ＤＭＡＣ３３は、ＦＴ処理部１０２の制御のもと、追加セグメント１２２−２のＦ／Ｅビットに“０”を書き込む。これにより、次のフレームの処理の際に、メモリロケーション１２１−１に、データを書き込むことが可能になる。
【０１００】
ＦＴ処理部１０２は、ＣＲ処理部１０１からの通知を受けると、バッファ１１２から周波数領域データを入力し、バッファ１１３から前フレームの参照データを入力する。ＦＴ処理部１０２は、バッファ１１２から入力した周波数領域データに、スケールファクタ処理、ステレオ処理、およびＴＮＳ処理を実行する。
【０１０１】
その後、ＦＴ処理部１０２は、上記処理が実行されたデータに、バッファ１１３から入力した前フレームの参照データを用いて、逆ＭＤＣＴ演算処理を実行して、その結果得られる次フレームの参照データおよびＰＣＭデータを、それぞれバッファ１１４および１１５に一旦蓄積させる。バッファ１１４およびバッファ１１５に蓄積された次フレームの参照データおよびＰＣＭデータは、バス３６およびＤＭＡＣ３３を介してメインメモリ１２のメモリロケーション１２１−２および図示せぬ他のメモリロケーション１２１にそれぞれ書き出される。
【０１０２】
なお、このとき、ＤＭＡＣ３３は、ＦＴ処理部１０２の制御のもと、追加セグメント１２２−２のＦ／Ｅビットを読み出し、追加セグメント１２２−２の値が“０”であれば、サブプロセッサ３２によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーション１２１−２から読み出し不可であり、書き込み可能であるとし、バッファ１１４に蓄積された次フレームの参照データを、メモリロケーション１２１−２に書き出す。そして、データがメモリロケーション１２１−２に書き込まれると、ＤＭＡＣ３３は、ＦＴ処理部１０２の制御のもと、追加セグメント１２２−２のＦ／Ｅビットに“１”を書き込む。これにより、次のフレームの処理の際に、メモリロケーション１２１−２から、データを読み出すことが可能になる。
【０１０３】
なお、繰り返しになるので、その説明は省略するが、バッファ１１５に蓄積されたＰＣＭデータも同様に、メインメモリ１２の他のメモリロケーション１２１に書き出される。
【０１０４】
次に、図８および図９を参照して、図７のサブプロセッサ３２−１において実行される処理およびデータの流れについて詳しく説明する。
【０１０５】
なお、図８および図９の例において、横軸は、時間の経過を表し、ＣＲ処理（ＣＲ）１３１は、ＣＲ処理部１０１が実行するＣＲ処理を表し、ＦＴ処理（ＦＴ）１３２は、ＦＴ処理部１０２が実行するＦＴ処理を表し、各処理に付加された符号の枝番は、処理回数（何フレーム目の処理であるか）を表している。すなわち、ＣＲ処理１３１−１は、１フレーム目のＣＲ処理を表し、ＣＲ処理１３１−２は、２フレーム目のＣＲ処理を表し、ＣＲ処理１３１−３は、３フレーム目のＣＲ処理を表している。また、ＦＴ処理１３２−１は、１フレーム目のＦＴ処理を表し、ＦＴ処理１３２−２は、２フレーム目のＦＴ処理を表し、ＦＴ処理１３２−３は、３フレーム目のＦＴ処理を表している。
【０１０６】
図８は、図７の１サブプロセッサ構成の場合のサブプロセッサ３２−１における処理の流れを示している。なお、ＣＲ処理１３１とＦＴ処理１３２には、空間が示されていないが、ＦＴ処理１３２の後、ＣＲ処理１３１の開始までに示されるわずかな空間（時間）は、メインメモリ１２への参照データなどのデータの読み書きにかかる時間を表している。
【０１０７】
図８の例の場合、サブプロセッサ３２−１においては、１フレーム目のＣＲ処理１３１−１が実行され、ＣＲ処理１３１−１の後、１フレーム目のＦＴ処理１３２−１が実行され、ＦＴ処理１３２−１の後、２フレーム目のＣＲ処理１３１−２が実行されている。また、ＣＲ処理１３１−２の後、２フレーム目のＦＴ処理１３２−２が実行され、ＦＴ処理１３２−２の後、３フレーム目ＣＲ処理１３１−３が実行され、ＣＲ処理１３１−３の後、３フレーム目のＦＴ処理１３２−３が実行されている。
【０１０８】
以上のように、１サブプロセッサ構成の場合、１つのサブプロセッサ３２−１において、ＣＲ処理とＦＴ処理が順番に処理される。
【０１０９】
図９は、図７の１サブプロセッサ構成の場合のサブプロセッサ３２−１におけるデータの流れを示している。
【０１１０】
図９の例の場合、サブプロセッサ３２−１に、１フレーム目の圧縮データ１５１−１が入力されると、ＣＲ処理１３１−１とＦＴ処理１３２−１が続いて実行され、その結果、１フレーム目の参照データ１５２−１および１フレーム目のＰＣＭデータ１５３−１が得られ、得られた１フレーム目の参照データ１５２−１は、２フレーム目のＦＴ処理１３２−２で用いられる。
【０１１１】
サブプロセッサ３２−１に、２フレーム目の圧縮データ１５１−２が入力されると、ＣＲ処理１３１−２と、１フレーム目の参照データ１５２−１を用いたＦＴ処理１３２−２が続いて実行され、その結果、２フレーム目の参照データ１５２−２および２フレーム目のＰＣＭデータ１５３−２が得られ、得られた２フレーム目の参照データ１５２−２は、３フレーム目のＦＴ処理１３２−３で用いられる。
【０１１２】
サブプロセッサ３２−１に、３フレーム目の圧縮データ１５１−３が入力されると、ＣＲ処理１３１−３と、２フレーム目の参照データ１５２−２を用いたＦＴ処理１３２−３が続いて実行され、その結果、３フレーム目の参照データ１５２−３および３フレーム目のＰＣＭデータ１５３−３が得られ、得られた３フレーム目の参照データ１５２−３は、図示せぬ４フレーム目のＦＴ処理で用いられる。
【０１１３】
以上のように、１サブプロセッサ構成の場合（すなわち、複数のサブプロセッサ３２からなるパイプライン構成ではない場合）、１のサブプロセッサ３２−１において、ＣＲ処理とＦＴ処理が順番に処理され、ＦＴ処理で用いられる前のフレームの参照データは、前フレームのＦＴ処理により取得される。すなわち、１サブプロセッサ構成の場合、データも順番に取得され、処理されていく。
【０１１４】
図１０は、音声データのデコード（コーディック）処理に対して、２つのサブプロセッサが割り当てられ、パイプライン構成１７１が構成されている場合のサブプロセッサの機能構成例を示している。すなわち、図１０の例においては、処理構成設定部７１により複数（いまの場合、２）のサブプロセッサ３２−１および３２−２によるパイプライン構成１７１が設定され、サブプロセッサ３２−１および３２−２によりオーディオ復号コーディックモジュール５４−２のサブ用モジュール６２が実行されることで、実現される機能構成例が示されている。
【０１１５】
なお、図１０のパイプライン構成１７１において、サブプロセッサ３２−１と同様の構成をしたサブプロセッサ３２−２が追加された点を除いて、その他の構成は、上述した図７の１のサブプロセッサ３２−１のみによる処理構成の場合と同様の構成であり、図７における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので省略する。
【０１１６】
また、図１０の例において、サブプロセッサ３２−２およびローカルストレージ４２−２の構成は、サブプロセッサ３２−１およびローカルストレージ４２−１の構成と基本的に同様の構成であり、その図示および説明は省略されている。すなわち、図１０パイプライン構成１７１は、図７のサブプロセッサ３２−１が２台で構成されており、サブプロセッサ３２−１および３２−２により、フレーム順に交互に並行して音声データのデコード処理が実行される。
【０１１７】
したがって、図１０の例の場合、メインメモリ１２からの１フレームの圧縮データは、サブプロセッサ３２−１のバッファ１１１に一旦入力され、バッファ１１１から、ＣＲ処理部１０１に入力される。ＣＲ処理部１０１は、ＣＲ処理を実行して、周波数領域データを生成し、生成した周波数領域データをバッファ１１２に一旦蓄積するとともに、ＦＴ処理部１０２に処理の終了を通知する。
【０１１８】
また、サブプロセッサ３２−１のバッファ１１３には、ＦＴ処理部１０２の制御のもと、ＤＭＡＣ３３により、メインメモリ１２のメモリロケーション１２１−１から読み出された前フレームの参照データが蓄積されている。なお、この前フレームの参照データは、サブプロセッサ３２−２のＦＴ処理部１０２の１つ前のＦＴ処理時に書き出されたものである。
【０１１９】
サブプロセッサ３２−１のＦＴ処理部１０２は、ＣＲ処理部１０１からの通知を受けると、バッファ１１２から周波数領域データを入力し、バッファ１１３から前フレームの参照データを入力する。ＦＴ処理部１０２は、バッファ１１２から入力した周波数領域データに、スケールファクタ処理、ステレオ処理、およびＴＮＳ処理を実行する。
【０１２０】
その後、サブプロセッサ３２−１のＦＴ処理部１０２は、バッファ１１３から入力した前フレームの参照データを用いて、上記処理が実行されたデータに、逆ＭＤＣＴ演算処理を実行して、その結果得られる次フレームの参照データおよびＰＣＭデータを、それぞれバッファ１１４および１１５に一旦蓄積させる。バッファ１１４およびバッファ１１５に蓄積された次フレームの参照データおよびＰＣＭデータは、バス３６およびＤＭＡＣ３３を介してメインメモリ１２のメモリロケーション１２１−２および図示せぬ他のメモリロケーション１２１にそれぞれ書き出される。
【０１２１】
したがって、サブプロセッサ３２−１により、メインメモリ１２のメモリロケーション１２１−２に書き込まれた次フレームの参照データは、サブプロセッサ３２−２のＦＴ処理部１０２による次のフレームのＦＴ処理時に読み出され、使用される。
【０１２２】
すなわち、次のフレームの処理の際には、メインメモリ１２からの１フレームの圧縮データは、サブプロセッサ３２−２のバッファ１１１に一旦入力され、バッファ１１１から、ＣＲ処理部１０１に入力される。ＣＲ処理部１０１は、ＣＲ処理を実行して、周波数領域データを生成し、生成した周波数領域データをバッファ１１２に一旦蓄積するとともに、ＦＴ処理部１０２に処理の終了を通知する。
【０１２３】
また、サブプロセッサ３２−２のバッファ１１３には、ＦＴ処理部１０２の制御のもと、ＤＭＡＣ３３により、メインメモリ１２のメモリロケーション１２１−２から読み出された前フレーム（前回における次フレーム）の参照データが蓄積されている。なお、この前フレームの参照データは、サブプロセッサ３２−１のＦＴ処理部１０２の１つ前のＦＴ処理時により書き出されたものである。
【０１２４】
サブプロセッサ３２−２のＦＴ処理部１０２は、ＣＲ処理部１０１からの通知を受けると、バッファ１１２から周波数領域データを入力し、バッファ１１３から前フレームの参照データを入力する。ＦＴ処理部１０２は、バッファ１１２から入力した周波数領域データに、スケールファクタ処理、ステレオ処理、およびＴＮＳ処理を実行する。
【０１２５】
その後、サブプロセッサ３２−２のＦＴ処理部１０２は、バッファ１１３から入力した前フレームの参照データを用いて、上記処理が実行されたデータに、逆ＭＤＣＴ演算処理を実行して、その結果得られる次フレームの参照データおよびＰＣＭデータを、それぞれバッファ１１４および１１５に一旦蓄積させる。バッファ１１４およびバッファ１１５に蓄積された次フレームの参照データおよびＰＣＭデータは、バス３６およびＤＭＡＣ３３を介してメインメモリ１２の図示せぬメモリロケーション１２１にそれぞれ書き出される。
【０１２６】
したがって、サブプロセッサ３２−２により、メインメモリ１２の図示せぬメモリロケーション１２１に書き込まれた次フレームの参照データは、サブプロセッサ３２−１のＦＴ処理部１０２による次のフレームのＦＴ処理時に読み出され、使用される。
【０１２７】
次に、図１１および図１２を参照して、図１０のパイプライン構成１７１において実行される処理およびデータの流れについて詳しく説明する。なお、図１１および図１２において、図８および図９における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので省略する。
【０１２８】
図１１は、図１０のパイプライン構成１７１（サブプロセッサ３２−１およびサブプロセッサ３２−２）における処理の流れを示している。
【０１２９】
図１１の例の場合、サブプロセッサ３２−１においては、１フレーム目のＣＲ処理１３１−１が実行され、ＣＲ処理１３１−１の後、１フレーム目のＦＴ処理１３２−１が実行されている。サブプロセッサ３２−１における１フレーム目のＦＴ処理１３２−１と並行して、サブプロセッサ３２−２においては、２フレーム目のＣＲ処理１３１−２が実行され、ＣＲ処理１３１−２の後、２フレーム目のＦＴ処理１３２−２が実行されている。
【０１３０】
また、サブプロセッサ３２−２における２フレーム目のＦＴ処理１３２−２と並行して、サブプロセッサ３２−１においては、３フレーム目のＣＲ処理１３１−３が実行され、ＣＲ処理１３１−３の後、３フレーム目のＦＴ処理１３２−３が実行されている。サブプロセッサ３２−１における３フレーム目のＦＴ処理１３２−３と並行して、サブプロセッサ３２−２においては、４フレーム目のＣＲ処理１３１−４が実行され、ＣＲ処理１３１−４の後、４フレーム目のＦＴ処理１３２−４が実行されている。
【０１３１】
さらに、サブプロセッサ３２−２における４フレーム目のＦＴ処理１３２−４と並行して、サブプロセッサ３２−１においては、５フレーム目のＣＲ処理１３１−５が実行され、ＣＲ処理１３１−５の後、５フレーム目のＦＴ処理１３２−５が実行されている。サブプロセッサ３２−１における５フレーム目のＦＴ処理１３２−５と並行して、サブプロセッサ３２−２においては、６フレーム目のＣＲ処理１３１−６が実行され、ＣＲ処理１３１−６の後、６フレーム目のＦＴ処理１３２−６が実行されている。
【０１３２】
以上のように、パイプライン構成１７１による処理の場合、サブプロセッサ３２−１および３２−２においては、ＣＲ処理およびＦＴ処理からなる１フレームのコーディック処理が、フレーム毎に交互に順番に実行される。
【０１３３】
図１２は、図１０のパイプライン構成１７１（サブプロセッサ３２−１およびサブプロセッサ３２−２）におけるデータの流れを示している。
【０１３４】
図１２の例の場合、サブプロセッサ３２−１に、１フレーム目の圧縮データ１５１−１が入力されると、サブプロセッサ３２−１は、ＣＲ処理１３１−１とＦＴ処理１３２−１を続いて実行し、その結果、１フレーム目の参照データ１５２−１および１フレーム目のＰＣＭデータ１５３−１を取得する。そして、取得された１フレーム目の参照データ１５２−１は、２フレーム目のＦＴ処理１３２−２を行うサブプロセッサ３２−２により用いられる。
【０１３５】
サブプロセッサ３２−１によるＦＴ処理１３２−１の実行と並行して、サブプロセッサ３２−２に、２フレーム目の圧縮データ１５１−２が入力されると、サブプロセッサ３２−２は、ＣＲ処理１３１−２を実行し、ＣＲ処理１３１−２の後、サブプロセッサ３２−１により取得された１フレーム目の参照データ１５２−１を用いて、ＦＴ処理１３２−２を実行し、その結果、２フレーム目の参照データ１５２−２および２フレーム目のＰＣＭデータ１５３−２を取得する。そして、取得された２フレーム目の参照データ１５２−２は、３フレーム目のＦＴ処理１３２−３を行うサブプロセッサ３２−１により用いられる。
【０１３６】
サブプロセッサ３２−２によりＦＴ処理１３２−２が実行されている最中に、３フレーム目の圧縮データ１５１−３が入力されると、サブプロセッサ３２−１は、ＣＲ処理１３１−３を実行し、ＣＲ処理１３１−３の後、サブプロセッサ３２−２により取得された２フレーム目の参照データ１５２−２を用いて、ＦＴ処理１３２−３を実行し、その結果、３フレーム目の参照データ１５２−３および３フレーム目のＰＣＭデータ１５３−３を取得する。そして、取得された３フレーム目の参照データ１５２−３は、図示せぬ、４フレーム目のＦＴ処理１３２−４を行うサブプロセッサ３２−２により用いられる。
【０１３７】
さらに、図１３乃至図１６を参照して、図１０のパイプライン構成１７１において実行される処理を詳しく説明する。
【０１３８】
図１３乃至図１６は、図１０のパイプライン構成１７１で各フレームの処理が実行されている場合のサブプロセッサ３２−１およびサブプロセッサ３２−２における各処理部の状態を示している。なお、図１３乃至図１６において、サブプロセッサ３２−１および３２−２のＣＲ処理部１０１、並びにＦＴ処理部１０２を区別するために、それぞれ、ＣＲ処理部１０１−１および１０１−２、並びに、ＦＴ処理部１０２−１および１０２−２と称する。また、各処理部のハッチングは、各処理部が実行中であることを表しており、ハッチングがないものは、待機中であることを表している。
【０１３９】
図１３の例において、サブプロセッサ３２−１のＣＲ処理部１０１−１に１フレーム目の圧縮データ１５１−１が入力され、ＣＲ処理部１０１−１は、１フレーム目のＣＲ処理を実行している。このとき、その他の処理部（サブプロセッサ３２−１のＦＴ処理部１０２−１、並びにサブプロセッサ３２−２のＣＲ処理部１０１−２およびＦＴ処理部１０２−２）は、待機中の状態である。
【０１４０】
図１４の例において、サブプロセッサ３２−１のＣＲ処理部１０１−１は、１フレーム目のＣＲ処理を完了し、待機状態となっており、このＣＲ処理部１０１−１によるＣＲ処理の完了に対応して、サブプロセッサ３２−１のＦＴ処理部１０２−１は、１フレーム目のＦＴ処理を実行中の状態となっている。また、このとき、サブプロセッサ３２−２のＣＲ処理部１０１−２に、２フレーム目の圧縮データ１５１−２が入力され、ＣＲ処理部１０１−２は、２フレーム目のＣＲ処理を実行中の状態となるが、ＦＴ処理部１０２−２は、まだ待機中の状態である。
【０１４１】
図１５の例において、サブプロセッサ３２−１のＦＴ処理部１０２−１は、１フレーム目のＦＴ処理を完了し、１フレーム目の参照データ１５２−１およびＰＣＭデータ１５３−１を出力して、待機状態となるが、ＣＲ処理部１０１−１に３フレーム目の圧縮データ１５１−３が入力され、ＣＲ処理部１０１−１は、３フレーム目のＣＲ処理を実行中の状態となる。このとき、サブプロセッサ３２−２のＣＲ処理部１０１−２は、２フレーム目のＣＲ処理を完了し、待機状態となっており、このＣＲ処理部１０１−２によるＣＲ処理の完了に対応して、サブプロセッサ３２−２のＦＴ処理部１０２−２は、サブプロセッサ３２−１のＦＴ処理部１０２−１からの１フレーム目の参照データ１５２−１を用いて、２フレーム目のＦＴ処理を実行中の状態となる。
【０１４２】
図１６の例において、サブプロセッサ３２−２のＦＴ処理部１０２−２は、２フレーム目のＦＴ処理を完了し、２フレーム目の参照データ１５２−２およびＰＣＭデータ１５３−２を出力すると、待機状態となるが、ＣＲ処理部１０１−２に４フレーム目の圧縮データ１５１−４が入力され、ＣＲ処理部１０１−２は、４フレーム目のＣＲ処理を実行中の状態となる。このとき、サブプロセッサ３２−１のＣＲ処理部１０１−１は、３フレーム目のＣＲ処理を完了し、待機状態となっており、このＣＲ処理部１０１−１によるＣＲ処理の完了に対応して、サブプロセッサ３２−１のＦＴ処理部１０２−１は、サブプロセッサ３２−２のＦＴ処理部１０２−２からの２フレーム目の参照データ１５２−２を用いて、３フレーム目のＦＴ処理を実行中の状態となる。
【０１４３】
以上のように、パイプライン構成１７１による処理の場合、サブプロセッサ３２−１においては、サブプロセッサ３２−２が実行したＦＴ処理により得られる前フレームの参照データが用いられて、次フレームのＦＴ処理が実行される。これに対して、サブプロセッサ３２−２においては、サブプロセッサ３２−１が実行したＦＴ処理により得られる前フレームの参照データが用いられて、次フレームのＦＴ処理が実行される。すなわち、パイプライン構成１７１による処理の場合、サブプロセッサ３２−１および３２−２においては、ＣＲ処理およびＦＴ処理からなる一連の音声データのデコード処理が、１処理（ＣＲ処理またはＦＴ処理の）分ずらして並行に、かつ、フレーム毎に交互に順番に実行される。
【０１４４】
したがって、パイプライン構成１７１による処理の場合においては、２つのサブプロセッサ３２により、２フレームの処理が、１処理（ＣＲ処理またはＦＴ処理の）分ずらして並行で実行されるので、図７の１のサブプロセッサ構成の場合（すなわち、パイプライン構成ではない場合）よりも、コーディック処理の高速化を図ることができる。
【０１４５】
図１７は、音声データのデコード（コーディック）処理に対して、２つのサブプロセッサが割り当てられ、パイプライン構成１９１が構成されている場合のサブプロセッサの機能構成例を示している。
【０１４６】
図１７の例においては、処理構成設定部７１により２のサブプロセッサ３２−１および３２−２によるパイプライン構成１９１が設定され、サブプロセッサ３２−１および３２−２によりオーディオ復号コーディックモジュール５４−２のサブ用モジュール６２が実行されることで、実現される機能構成例が示されている。なお、図１７の例において、図７または図１０における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので省略する。
【０１４７】
図１７の例の場合、コーディック処理部８２のうちのＣＲ処理部１０１は、サブプロセッサ３２−１において実行されることで実現されており、コーディック処理部８２のうちのＦＴ処理部１０２は、サブプロセッサ３２−２において実行されることで実現されている。
【０１４８】
すなわち、サブプロセッサ３２−１においては、ＣＲ処理部１０１しか実行されず、また、サブプロセッサ３２−２においては、ＦＴ処理部１０２しか実行されない。したがって、１フレームのＣＲ処理とＦＴ処理が一連で実行されるサブプロセッサ３２よりも、各処理しか実行されないサブプロセッサ３２の方が、ローカルストレージ４２の空き容量が増えるため、例えば、ループを展開させたり、計算結果を予め蓄積させたりして、各処理をそれぞれのサブプロセッサ用に最適化することができる。図１７の例の場合、ＣＲ処理をサブプロセッサ３２−１用に最適化することができ、また、ＦＴ処理をサブプロセッサ３２−２用に最適化することができる。
【０１４９】
サブプロセッサ３２−１で実行されるＣＲ処理部１０１に対応して、ローカルストレージ４２−１は、メインメモリ１２からＤＭＡＣ３３およびバス３６を介して入力される１フレーム分の圧縮データを蓄積し、ＣＲ処理部１０１に入力するバッファ１１１、並びに、ＣＲ処理部１０１によりＣＲ処理が実行された周波数領域データを蓄積し、バス３６およびＤＭＡＣ３３を介してメインメモリ１２に出力するバッファ２１１により構成される。
【０１５０】
また、サブプロセッサ３２−２で実行されるＦＴ処理部１０２に対応して、ローカルストレージ４２−２は、メインメモリ１２からＤＭＡＣ３３およびバス３６を介して入力される周波数領域データを蓄積し、ＦＴ処理部１０２に入力するバッファ２１２、メインメモリ１２からＤＭＡＣ３３およびバス３６を介して入力される前フレームの参照データを蓄積し、ＦＴ処理部１０２に入力するバッファ１１３、ＦＴ処理部１０２によりＦＴ処理が実行されて出力される次フレームの参照データを蓄積し、バス３６およびＤＭＡＣ３３を介してメインメモリ１２に出力するバッファ１１４、並びに、ＦＴ処理部１０２により復号されたＰＣＭデータを蓄積し、バス３６およびＤＭＡＣ３３を介してメインメモリ１２に出力するバッファ１１５により構成される。
【０１５１】
以上のように、パイプライン構成１９１においては、図１０のパイプライン構成１７１の場合よりも、バス３６およびＤＭＡＣ３３を介して、メインメモリ１２に書き込まれたり、読み出されるデータが周波数領域データの分だけ多くなってしまう。
【０１５２】
図１７のメインメモリ１２は、図７のメインメモリ１２のメモリロケーション１２１−１および１２１−２に加えて、メモリロケーション２２１が配置され、メモリロケーション１２１−１の追加セグメント１２２−１やメモリロケーション１２１−２の１２２−２と同様に、メモリロケーション２２１には、追加セグメント２２２が割り振られている。
【０１５３】
パイプライン構成１９１の音声データのデコード処理について具体的に説明する。メインメモリ１２からの１フレームの圧縮データは、バッファ１１１に一旦蓄積され、バッファ１１１を介して、ＣＲ処理部１０１に入力される。ＣＲ処理部１０１は、ＣＲ処理を実行して、周波数領域データを生成し、生成した周波数領域データをバッファ２１１に一旦蓄積するとともに、ＦＴ処理部１０２に処理の終了を通知する。
【０１５４】
また、バッファ２１１に蓄積された周波数領域データは、バス３６およびＤＭＡＣ３３を介してメインメモリ１２のメモリロケーション２２２に書き出される。
【０１５５】
なお、このとき、図７を参照して上述した追加セグメント１２２−１および１２２−２の場合と同様に、ＤＭＡＣ３３は、ＣＲ処理部１０１の制御のもと、追加セグメント２２２のＦ／Ｅビットを読み出し、追加セグメント２２２の値が“０”であれば、メモリロケーション２２１のデータが、サブプロセッサ３２−２によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーション２２１から読み出し不可であり、書き込み可能であるとし、バッファ２１１に蓄積された周波数領域データを、メモリロケーション２２１に書き出す。そして、データがメモリロケーション２１１に書き込まれると、ＤＭＡＣ３３は、ＣＲ処理部１０１の制御のもと、追加セグメント２２２のＦ／Ｅビットに“１”を書き込む。これにより、サブプロセッサ３２−２は、メモリロケーション２２１から、データを読み出すことが可能になる。
【０１５６】
したがって、ＤＭＡＣ３３は、ＦＴ処理部１０２の制御のもと、追加セグメント２２２のＦ／Ｅビットを読み出し、追加セグメント２２２の値が“１”であれば、そのメモリロケーション２２１のデータがまだ読み出されておらず、未処理の最新データであるとし、書き込まれている周波数領域データを読み出す。これにより、バッファ２１２には、ＤＭＡＣ３３により、メインメモリ１２のメモリロケーション２２１から読み出された周波数領域データが蓄積される。なお、読み出した周波数領域データが、バッファ２１２に蓄積されると、ＤＭＡＣ３３は、ＦＴ処理部１０２の制御のもと、追加セグメント２２２のＦ／Ｅビットに“０”を書き込む。これにより、サブプロセッサ３２−１は、メモリロケーション２２１に、データを書き込むことが可能になる。
【０１５７】
また、バッファ１１３には、図７を参照して上述した場合と同様に、ＦＴ処理部１０２の制御のもと、ＤＭＡＣ３３により、メインメモリ１２のメモリロケーション１２１−１から読み出された前フレームの参照データが蓄積されている。
【０１５８】
サブプロセッサ３２−２のＦＴ処理部１０２は、ＣＲ処理部１０１からの通知を受けると、バッファ２１２から周波数領域データを入力し、バッファ１１３から前フレームの参照データを入力すると、バッファ２１２から入力した周波数領域データに、スケールファクタ処理、ステレオ処理、およびＴＮＳ処理を実行し、バッファ１１３から入力した前フレームの参照データを用いて、上記処理が実行されたデータに、逆ＭＤＣＴ演算処理を実行して、その結果得られる次フレームの参照データおよびＰＣＭデータを、それぞれバッファ１１４および１１５に一旦蓄積させる。
【０１５９】
バッファ１１４およびバッファ１１５に蓄積された次フレームの参照データおよびＰＣＭデータは、バス３６およびＤＭＡＣ３３を介してメインメモリ１２のメモリロケーション１２１−２および図示せぬ他のメモリロケーションにそれぞれ書き出される。
【０１６０】
図１８は、パイプライン構成１９１（サブプロセッサ３２−１およびサブプロセッサ３２−２）における処理の流れを示している。なお、図１８の例においては、図１１のパイプライン構成１７１における処理の流れと比較することにより、図１７のパイプライン構成１９１の処理の流れを説明する。
【０１６１】
図１８においては、図１１のパイプライン構成１７１における処理の流れと比較するために、図中、パイプライン構成１７１の下部に、パイプライン構成１９１における処理の流れが示されている。
【０１６２】
パイプライン構成１９１において、ＣＲ処理（ＣＲ）２３１は、サブプロセッサ３２−１のＣＲ処理部１０１が実行するＣＲ処理を表し、ＦＴ処理（ＦＴ）２３２は、ＦＴ処理部１０２が実行するＦＴ処理を表し、各処理に付加された符号の枝番は、処理回数（何フレーム目の処理であるか）を表している。
【０１６３】
すなわち、パイプライン構成１７１においては、図１１を参照して上述したように、サブプロセッサ３２−１においては、１フレーム目のＣＲ処理１３１−１が実行され、ＣＲ処理１３１−１の後、１フレーム目のＦＴ処理１３２−１が実行される。サブプロセッサ３２−１における１フレーム目のＦＴ処理１３２−１と並行して、サブプロセッサ３２−２においては、２フレーム目のＣＲ処理１３１−２が実行され、ＣＲ処理１３１−２の後、２フレーム目のＦＴ処理１３２−２が実行されるというように、サブプロセッサ３２−１および３２−２においては、ＣＲ処理１３１およびＦＴ処理１３２が連続して、フレーム毎に交互に順番に実行されている。
【０１６４】
これに対して、パイプライン構成１９１においては、サブプロセッサ３２−１においては、１フレーム目のＣＲ処理２３１−１が実行され、ＣＲ処理２３１−１の後、２フレーム目のＣＲ処理２３１−２が実行される。そして、サブプロセッサ３２−１において、ＣＲ処理２３１−１の後、２フレーム目のＣＲ処理２３１−２が実行されているときに、サブプロセッサ３２−２においては、１フレーム目のＦＴ処理２３２−１が実行される。
【０１６５】
サブプロセッサ３２−１において、２フレーム目のＣＲ処理２３１−２の後、３フレーム目のＣＲ処理２３１−３が実行されるときに、サブプロセッサ３２−２においては、２フレーム目のＦＴ処理２３２−２が実行される。同様に、サブプロセッサ３２−１において、３フレーム目のＣＲ処理２３１−３の後、４フレーム目のＣＲ処理２３１−４が実行されるときに、サブプロセッサ３２−２においては、３フレーム目のＦＴ処理２３２−３が実行される。
【０１６６】
なお、以下、５乃至８フレーム目や、８フレーム目以降においても、同じであるため、その説明を省略する。
【０１６７】
ここで、図１８の例においては、パイプライン構成１７１のＣＲ処理１３１よりも、パイプライン構成１９１のＣＲ処理２３１の方が、時間方向の大きさが小さく示され、同様に、パイプライン構成１７１のＦＴ処理１３２よりも、パイプライン構成１９１のＦＴ処理２３２の方が、時間方向の大きさが小さく示されているように、パイプライン構成１７１のＣＲ処理１３１よりも、パイプライン構成１９１のＣＲ処理２３１の方が、処理時間が早く、パイプライン構成１７１のＦＴ処理１３２よりも、パイプライン構成１９１のＦＴ処理２３２の方が、処理時間が早い。
【０１６８】
すなわち、これは、パイプライン構成１９１のサブプロセッサ３２−１においては、ＣＲ処理部１０１しか実行されず、また、パイプライン構成１９１のサブプロセッサ３２−２においては、ＦＴ処理部１０２しか実行されないため、ＣＲ処理とＦＴ処理が続けて実行されるパイプライン構成１７１のサブプロセッサ３２よりも、ローカルストレージ４２の空き容量が増え、例えば、関数のインライン展開やループアンロールを行ったり、sinやcosなどの処理量の多い数学関数の計算結果を予め展開しておくというように、ＣＲ処理をサブプロセッサ３２−１用に最適化することができ、また同様に、ＦＴ処理をサブプロセッサ３２−２用に最適化することができるからである。これにより、パイプライン構成１９１においては、各処理の高速化が図られるため、パイプライン構成１７１よりも処理時間を短くすることができる。
【０１６９】
また、パイプライン構成１９１においては、サブプロセッサ３２−１におけるＣＲ処理２３１−１とＣＲ処理２３１−２の間、サブプロセッサ３２−２におけるＦＴ処理２３２−１とＦＴ処理２３２−２の間、または、サブプロセッサ３２−１におけるＣＲ処理２３１−１とサブプロセッサ３２−２におけるＦＴ処理２３２−１との間に、わずかな空間（時間）が示されている。
【０１７０】
この空間は、パイプライン構成１９１において、メインメモリ１２への各データの読み書きにかかる時間も表している。すなわち、この空間は、パイプライン構成１７１でも必要なメインメモリ１２への参照データなどの読み書きにかかる時間だけでなく、パイプライン構成１９１において、サブプロセッサ３２−１とサブプロセッサ３２−２との間で、周波数領域データを共用するために必要なメインメモリ１２への周波数領域データの読み書きにかかる時間も表している。
【０１７１】
したがって、パイプライン構成１９１を、パイプライン構成１７１と比較した場合、各サブプロセッサ３２用に各処理が最適化され、高速化される反面、周波数領域データの分だけ、バス３６およびＤＭＡＣ３３を介して、メインメモリ１２に書き込まれたり、読み出されるデータ（バス使用量）が多くなり、読み書きにかかる時間がかかってしまう。
【０１７２】
以上により、バス３６のバス帯域を多く使用することができれば、周波数領域データの読み書きにかかる時間を少なくすることができるので、パイプライン構成１７１での処理よりもパイプライン構成１９１での処理の方を全体的に早くすることができる。
【０１７３】
すなわち、バス使用量の増加分よりも各処理の最適化によって処理を高速にすることにより、パイプライン構成１７１での処理よりもパイプライン構成１９１での処理の方を全体的に早くすることができる。
【０１７４】
次に、図１９乃至図２２を参照して、図１７のパイプライン構成１９１において実行される処理を詳しく説明する。
【０１７５】
図１９乃至図２２は、図１７のパイプライン構成１９１で各フレームの処理が実行されている場合のサブプロセッサ３２−１におけるＣＲ処理部１０１、およびサブプロセッサ３２−２におけるＦＴ処理部１０２の状態を示している。なお、図１９乃至図２２において、各処理部のハッチングは、各処理部が実行中であることを表しており、ハッチングがないものは、待機中であることを表している。
【０１７６】
図１９の例において、サブプロセッサ３２−１のＣＲ処理部１０１に１フレーム目の圧縮データ１５１−１が入力され、ＣＲ処理部１０１は、１フレーム目のＣＲ処理を実行している。一方、サブプロセッサ３２−２のＦＴ処理部１０２は、待機中の状態である。
【０１７７】
図２０の例において、サブプロセッサ３２−１のＣＲ処理部１０１は、１フレーム目のＣＲ処理を完了した結果として、１フレーム目の周波数領域データ２５１−１を出力し、その後、２フレーム目の圧縮データ１５１−２が入力されるので、２フレーム目のＣＲ処理を実行中の状態となる。一方、ＣＲ処理部１０１による１フレーム目のＣＲ処理の完了に対応して、サブプロセッサ３２−２のＦＴ処理部１０２は、１フレーム目の周波数領域データ２５１−１を入力し、１フレーム目のＦＴ処理を実行中の状態となる。
【０１７８】
図２１の例において、サブプロセッサ３２−１のＣＲ処理部１０１は、２フレーム目のＣＲ処理を完了した結果として、２フレーム目の周波数領域データ２５１−２を出力し、その後、３フレーム目の圧縮データ１５１−３が入力されるので、３フレーム目のＣＲ処理を実行中の状態となる。一方、サブプロセッサ３２−２のＦＴ処理部１０２は、１フレーム目のＦＴ処理を完了した結果として、１フレーム目の参照データ１５２−１およびＰＣＭデータ１５３−１を出力した後、ＣＲ処理部１０１による２フレーム目のＣＲ処理の完了に対応して、２フレーム目の周波数領域データ２５１−２を入力し、前回のＦＴ処理において出力した１フレーム目の参照データ１５２−１を用いて、２フレーム目のＦＴ処理を実行中の状態となる。
【０１７９】
図２２の例において、サブプロセッサ３２−１のＣＲ処理部１０１は、３フレーム目のＣＲ処理を完了した結果として、３フレーム目の周波数領域データ２５１−３を出力し、その後、４フレーム目の圧縮データ１５１−４が入力されるので、４フレーム目のＣＲ処理を実行中の状態となる。一方、サブプロセッサ３２−２のＦＴ処理部１０２は、２フレーム目のＦＴ処理を完了した結果として、２フレーム目の参照データ１５２−２およびＰＣＭデータ１５３−２を出力した後、ＣＲ処理部１０１による３フレーム目のＣＲ処理の完了に対応して、３フレーム目の周波数領域データ２５１−３を入力し、前回のＦＴ処理において出力した２フレーム目の参照データ１５２−２を用いて、３フレーム目のＦＴ処理を実行中の状態となる。
【０１８０】
以上のように、パイプライン構成１９１による処理の場合、サブプロセッサ３２−１においては、入力される圧縮データを用いてＣＲ処理がフレームの順に実行され、一方、サブプロセッサ３２−２においては、サブプロセッサ３２−１のＣＲ処理により得られる周波数領域データを用いて、さらに、前フレームのＦＴ処理により得られる前フレームの参照データを用いて、ＦＴ処理がフレームの順に実行される。すなわち、パイプライン構成１９１による処理の場合、サブプロセッサ３２−１におけるＣＲ処理と、サブプロセッサ３２−２におけるＦＴ処理は、フレーム順番に並行して実行される。
【０１８１】
以上より、パイプライン構成１９１による処理の場合においては、パイプライン構成１７１による処理の場合よりも、音声データのデコード処理の高速化を図ることができる。
【０１８２】
次に、図２３および図２４を参照して、各処理構成におけるバス３６の使用量を説明する。なお、図２３および図２４の例においては、入力されるデータが２チャンネル、サンプリングレートが48000kHzの場合の１秒分データあたりのバス３６の使用量を説明する。
【０１８３】
図２３は、図７の１サブプロセッサ構成においてローカルストレージ４２に蓄積される各データの容量を表している。
【０１８４】
図２３の例の場合、バッファ１１１に蓄積される１フレームの圧縮データは、およそ1536bytesとなり、バッファ１１２に蓄積される周波数領域データは、およそ8192bytesとなり、バッファ１１３に蓄積される前フレームの参照データは、およそ8192bytesとなり、バッファ１１４および１１５に蓄積される次フレームの参照データとＰＣＭデータは、およそ16384bytesとなる。また、バッファ１１２の周波数領域データは、バス３６に送出されない。
【０１８５】
したがって、１サブプロセッサ構成のバス３６の使用量Ｑ１は、次の式（１）で表される。
【０１８６】
Ｑ１＝（1536＋8192＋16384）＊48000／1024
＝  1224000 (Bytes/sec)  ＝1.17(Mbytes/sec)            ・・・（１）
【０１８７】
なお、図１０のパイプライン構成１７１のバス３６の使用量Ｑ２は、図７の１サブプロセッサ３２構成のバス３６の使用量Ｑ１と、音声データのデコード処理を行うサブプロセッサ数が異なるだけであり、バス３６の使用量は、基本的に同じとなる。
【０１８８】
図２４は、図１７のパイプライン構成１９１において蓄積される各データの容量を表している。
【０１８９】
図２４の例の場合、バッファ１１１に蓄積される１フレームの圧縮データは、およそ1536bytesとなり、バッファ２１１およびバッファ２１２に蓄積される周波数領域データは、およそ8192bytesとなり、バッファ１１３に蓄積される前フレームの参照データは、およそ8192bytesとなり、バッファ１１４および１１５に蓄積される次フレームの参照データとＰＣＭデータは、およそ16384bytesとなる。すなわち、バッファ２１１およびバッファ２１２に蓄積される周波数領域データが、バス３６を経由して、メインメモリ１２に書き出されたり、読み出されたりする点（図中、太線部分）が、図２３の処理構成と異なる。
【０１９０】
したがって、パイプライン構成１９１のバス３６の使用量Ｑ３は、次の式（２）で表される。
【０１９１】
Ｑ３＝（1536＋8192＋8192＋8192＋16384）＊48000／1024
＝  1992000 (Bytes/sec)  ＝1.9(Mbytes/sec)            ・・・（２）
【０１９２】
以上により、１サブプロセッサ構成、パイプライン構成１７１、およびパイプライン構成１９１におけるバス３６の使用量は、図２５に示されるように、それぞれ、1.17(Mbytes/sec)，1.17(Mbytes/sec)，および1.9(Mbytes/sec)となる。
【０１９３】
ここで、１フレーム処理にかかる時間が短くなるほど、単位時間あたりのバス３６の使用量は増加する。例えば、１サブプロセッサ構成と較べて、パイプライン構成１９１における１フレームが３倍早く処理が可能であるとすると、同じ時間内でのバス３６の使用量は、次の式（３）で表される。
【０１９４】
1.9(Mbytes/sec)  ×３  ／  1.17(Mbytes/sec)  ＝  4.87      ・・・（３）
【０１９５】
すなわち、１サブプロセッサ構成と較べて、パイプライン構成１９１におけるバス３６の使用量は、4.87倍となってしまう。
【０１９６】
以上により、音声データのリアルタイム再生などではなく、データをとにかく早くデコード（復号）したいなどの用途においては、バス３６の帯域の量が多ければ、バス３６の使用量が多いほうが有利になる。したがって、バス３６の帯域の量に応じても、１サブプロセッサ構成、パイプライン構成１７１、およびパイプライン構成１９１などのどの処理構成になるかを設定することにより、情報処理装置１の状況において最適な処理構成を設定することが可能となる。
【０１９７】
次に、図２６のシーケンスチャートを参照して、情報処理装置１の音声データの再生処理を説明する。
【０１９８】
例えば、ユーザは、情報処理装置１の操作入力部１５を構成するマウスなどを操作し、例えば、記録部１３に記録されている音声データの再生を指示する。操作入力部１５は、ユーザの操作に応じた指示信号を、ＡＶ制御モジュール５１に供給する。
【０１９９】
ＡＶ制御モジュール５１は、操作入力部１５からの指示信号に応じて、ステップＳ１１において、オーディオ復号コーディックモジュール５４−２に、音声データの復号（デコード）を要求する。
【０２００】
オーディオ復号コーディックモジュール５４−２の処理構成設定部７１は、ＡＶ制御モジュール５１からの要求を受け取ると、ステップＳ２１において、サブプロセッサ管理モジュール５３に、サブプロセッサ３２の空き状況を問い合わせる。
【０２０１】
サブプロセッサ管理モジュール５３は、処理構成設定部７１からの問い合わせを、ステップＳ４１において受信し、ステップＳ４２に進み、サブプロセッサ３２の空き状況を調査（取得）し、調査したサブプロセッサ３２の空き状況を、処理構成設定部７１に応答する。
【０２０２】
処理構成設定部７１は、ステップＳ２２において、サブプロセッサ管理モジュール５３からのサブプロセッサ３２の空き状況の応答を受信すると、ステップＳ２３に進み、バス管理モジュール５２に、バス３６のバス帯域（バス使用量）を問い合わせる。
【０２０３】
バス管理モジュール５２は、処理構成設定部７１からの問い合わせを、ステップＳ５１において受信し、ステップＳ５２に進み、バス３６の帯域（使用量）を調査（取得）し、調査したバス３６の帯域の空き状況を、処理構成設定部７１に応答する。
【０２０４】
なお、この後、図２６の例においては、説明の便宜上、バス管理モジュール５２の処理が終了されるが、この処理は、実際には、処理構成設定部７１からの問い合わせに応じて、繰り返し実行される。
【０２０５】
処理構成設定部７１は、ステップＳ２４において、サブプロセッサ管理モジュール５３からのサブプロセッサ３２の空き状況の応答を受信すると、ステップＳ２５に進み、処理構成選択処理を実行する。なお、この処理構成選択処理は、図２７を参照して後述するが、ステップＳ２５においては、処理構成設定部７１により、例えば、図７の１サブプロセッサ構成、図１０のパイプライン構成１７１、および図１７のパイプライン構成１９１のいずれかの処理構成が選択、設定され、制御部７２により、設定された処理構成（用）のオブジェクトコードに関する情報（以下、オブジェクトコード情報とも称する）が、サブプロセッサ用オブジェクトコード管理部７３から取得され、ステップＳ２６に進む。
【０２０６】
制御部７２は、サブプロセッサ管理モジュール５３に、オブジェクトコード管理部７３から取得した処理構成のオブジェクトコード情報を供給するとともに、サブ用モジュール６２のロードを要求する。
【０２０７】
サブプロセッサ管理モジュール５３は、ステップＳ４３において、制御部７２からの処理構成のオブジェクトコード情報を受信し、ステップＳ４４に進み、受信した処理構成のオブジェクトコード情報に基づいて、対応するサブプロセッサ３２に、サブ用モジュール６２をロードする。
【０２０８】
なお、この後、図２６においては、説明の便宜上、サブプロセッサ管理モジュール５３の処理が終了されるが、この処理は、実際には、処理構成設定部７１からの問い合わせに応じて、繰り返し実行される。
【０２０９】
ステップＳ４４において、サブプロセッサ管理モジュール５３が対応するサブプロセッサ３２に、サブ用モジュール６２をロードすることにより、処理構成に応じた数のサブプロセッサ３２において、サブ用モジュール６２が実行され、図７、図１０、または図１７の機能ブロックが実現される。
【０２１０】
これに対応して、制御部７２は、処理開始のコマンドをサブ制御部８１に供給し、サブ制御部８１は、ステップＳ２７において、音声データのデコード（コーディック）処理を実行する。なお、このデコード処理は、図２８を参照して後述するが、ステップＳ２７においては、メインメモリ１２からの１フレームの圧縮データを用いて音声データのデコード処理が実行され、デコード処理が終了すると、デコード処理完了が、制御部７２に通知され、ステップＳ２８に進む。
【０２１１】
ステップＳ２８において、制御部７２は、ＡＶ制御モジュール５１に、デコード結果を送信し、音声データの再生処理を終了する。
【０２１２】
ＡＶ制御モジュール５１は、ステップＳ１２において、制御部７２からのデコード結果を受信すると、対応する音声を、出力部１７を構成するスピーカから出力させ、音声データの再生処理を終了する。
【０２１３】
なお、ステップＳ２７，Ｓ２８，およびＳ１２の処理は、全フレームの圧縮データがデコードされるまで、または、操作入力部１５からのユーザによる中止の指示信号が入力されるまで続けられる。
【０２１４】
次に、図２７のフローチャートを参照して、図２６のステップＳ２５の処理構成選択処理を説明する。なお、図２７の例においては、音声データのデコード処理について、図７の１サブプロセッサ構成、図１０のパイプライン構成１７１、および図１７のパイプライン構成１９１が予め構成され記憶されており、それらの中から処理構成を選択、設定する場合を説明する。
【０２１５】
処理構成設定部７１は、ステップＳ７１において、オーディオ復号コーディックモジュール５４−２に付加されている優先度が最高であるか否かを判定し、優先度が最高であると判定した場合、ステップＳ７２に進み、処理構成として、図１７のパイプライン構成１９１を選択し、選択結果を制御部７２に供給し、ステップＳ７８に進む。
【０２１６】
ステップＳ７１において、オーディオ復号コーディックモジュール５４−２に付加されている優先度が最高ではないと判定された場合、処理構成設定部７１は、ステップＳ７３に進み、図２６のステップＳ２２で受信されたサブプロセッサ管理モジュール５３からのサブプロセッサ３２の空き状況に基づいて、サブプロセッサ３２が１つしか空いていないか否かを判定し、サブプロセッサ３２が１つしか空いていないと判定した場合、ステップＳ７４に進む。
【０２１７】
処理構成設定部７１は、ステップＳ７４において、処理構成として、図７の１サブプロセッサ構成を選択し、選択結果を制御部７２に供給し、ステップＳ７８に進む。
【０２１８】
ステップＳ７３において、サブプロセッサ３２が２つ以上空いていると判定された場合、処理構成設定部７１は、ステップＳ７５に進み、図２６のステップＳ２４で受信されたバス管理モジュール５２からのバス３６の帯域に基づいて、バス帯域が1.9Mbytes以上あるか否かを判定し、バス帯域が1.9Mbytes以上あると判定した場合、ステップＳ７６に進む。
【０２１９】
処理構成設定部７１は、ステップＳ７６において、処理構成として、図１７のパイプライン構成１９１を選択し、選択結果を制御部７２に供給し、ステップＳ７８に進む。
【０２２０】
ステップＳ７５において、バス帯域が1.9Mbytes未満であると判定された場合、処理構成設定部７１は、ステップＳ７７において、処理構成として、図１０のパイプライン構成１７１を選択し、選択結果を制御部７２に供給し、ステップＳ７８に進む。
【０２２１】
制御部７２は、処理構成設定部７１から、処理構成の選択結果が供給されると、ステップＳ７８において、サブプロセッサ用オブジェクトコード管理部７３から、選択された処理構成のオブジェクトコード情報を取得し、処理構成選択処理を終了し、図２６のステップＳ２５に戻り、ステップＳ２６に進む。
【０２２２】
以上のように、コーディック処理の処理構成を、ＡＶ制御モジュール５１により付加される各コーディックモジュールの優先度、サブプロセッサ３２の空き状況、またはバス３６のバス帯域などに応じて選択（設定）するようにしたので、早く終わらせたい処理に対して、優先的にリソースを割り当てることができたり、複数のサブプロセッサやバスをなるべく余らせずに有効に利用することができる。すなわち、処理時の状況に応じた最適な処理を実行することができる。
【０２２３】
次に、図２８のフローチャートを参照して、図２６のステップＳ２７の音声データのデコード処理を説明する。なお、図２８の処理は、図７の１サブプロセッサ構成により実行される処理である。
【０２２４】
サブ制御部８１は、図２８のステップＳ１０１において、制御部７２から処理開始のコマンドを入力するまで待機しており、制御部７２から処理開始のコマンドを入力したと判定した場合、ＣＲ処理部１０１に処理開始を指示し、ステップＳ１０２に進む。
【０２２５】
ＣＲ処理部１０１は、ステップＳ１０２において、バス３６およびＤＭＡＣ３３を介して、メインメモリ１２から１フレームの圧縮データを取得し、バッファ１１１に一旦蓄積させ、ステップＳ１０３に進み、ＣＲ処理を実行する。ステップＳ１０３のＣＲ処理を、図２９のフローチャートを参照して説明する。
【０２２６】
ＣＲ処理部１０１は、図２９のステップＳ１２１において、バッファ１１１に蓄積されている圧縮データに、ハフマン符号の復号を実行し、ステップＳ１２２に進む。ＣＲ処理部１０１は、ステップＳ１２２において、復号したデータを逆量子化し、その結果の周波数領域データをバッファ１１２に出力し、ＣＲ処理を終了し、図２８のステップＳ１０３に戻り、ステップＳ１０４に進む。なお、このとき、ＣＲ処理部１０１は、ＦＴ処理部１０２に逆量子化処理を終了したことを通知する。
【０２２７】
メインメモリ１２のメモリロケーション１２１−１には、後述する前回のステップＳ１０６でＦＴ処理部１０２により前フレームの参照データが書き出されている。
【０２２８】
ＦＴ処理部１０２は、ＣＲ処理部１０１からの通知を受けると、ステップＳ１０４において、バス３６およびＤＭＡＣ３３を介して、メインメモリ１２から前フレームの参照データを取得し、バッファ１１３に蓄積させ、ステップＳ１０５に進む。
【０２２９】
すなわち、ステップＳ１０４において、ＤＭＡＣ３３は、ＦＴ処理部１０２の制御のもと、追加セグメント１２２−１のＦ／Ｅビットを読み出し、追加セグメント１２２−１の値が“１”であれば、そのメモリロケーション１２１−１のデータがまだ読み出されておらず、未処理の最新データであるとして、書き込まれているデータ（前フレームの参照データ）を読み出して、取得し、バッファ１１３に蓄積させ、その後、追加セグメント１２２−１のＦ／Ｅビットに“０”を書き込む。
【０２３０】
ＦＴ処理部１０２は、ステップＳ１０５において、ＦＴ処理を実行する。ステップＳ１０５のＦＴ処理を、図３０のフローチャートを参照して説明する。
【０２３１】
ＦＴ処理部１０２は、図３０のステップＳ１３１において、バッファ１１２に蓄積されている周波数領域データに、スケールファクタ処理を行い、ステップＳ１３２に進み、スケールファクタ処理されたデータに、ステレオ処理を実行し、ステップＳ１３３に進む。
【０２３２】
ＦＴ処理部１０２は、ステップＳ１３３において、ステレオ処理が実行されたデータにＴＮＳ処理（信号レベルの大きな箇所に、量子化ノイズを集中させる処理）を施し、ステップＳ１３４に進み、バッファ１１３に蓄積されている前フレームの参照データを用いて、ＴＮＳ処理が施されたデータに、逆ＭＤＣＴ処理を実行し、次フレームの参照データとＰＣＭデータを生成し、それぞれバッファ１１４および１１５に一旦蓄積させ、ＦＴ処理を終了し、図２８のステップＳ１０５に戻り、ステップＳ１０６に進む。
【０２３３】
ＦＴ処理部１０２は、ステップＳ１０６において、バッファ１１４に蓄積した次フレームの参照データと、バッファ１１５に蓄積したＰＣＭデータを、それぞれ、バス３６およびＤＭＡＣ３３を介してメインメモリ１２に書き込ませ、ステップＳ１０７に進む。
【０２３４】
すなわち、ステップＳ１０６において、ＤＭＡＣ３３は、ＦＴ処理部１０２の制御のもと、追加セグメント１２２−２のＦ／Ｅビットを読み出し、追加セグメント１２２−２の値が“０”であれば、サブプロセッサ３２によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーション１２１−２から読み出し不可であり、書き込み可能であるとし、バッファ１１４に蓄積された次フレームの参照データを、メモリロケーション１２１−２に書き出し、その後、追加セグメント１２２−２のＦ／Ｅビットに“１”を書き込む。
【０２３５】
ＦＴ処理部１０２は、ステップＳ１０７に進み、サブ制御部８１を介して、制御部７２に処理完了を通知し、デコード処理を終了し、図２６のステップＳ２７に戻り、ステップＳ２８に進む。
【０２３６】
次に、図３１のフローチャートを参照して、図２６のステップＳ２７のデコード処理の他の例を説明する。なお、図２８における処理と同じ処理については、繰り返しになるのでその詳細な説明は省略する。また、図３１の処理は、図１０のパイプライン１７１構成により実行される処理であるので、サブプロセッサ３２−１および３２−２において交互に実行される処理であるが、いまの場合、サブプロセッサ３２−１を用いて説明する。
【０２３７】
サブプロセッサ３２−１のサブ制御部８１は、図３１のステップＳ１５１において、制御部７２から処理開始のコマンドを入力するまで待機しており、制御部７２から処理開始のコマンドを入力したと判定した場合、ＣＲ処理部１０１に処理開始を指示し、ステップＳ１５２に進む。
【０２３８】
ＣＲ処理部１０１は、ステップＳ１５２において、バス３６およびＤＭＡＣ３３を介して、メインメモリ１２から１フレームの圧縮データを取得し、バッファ１１１に蓄積させ、ステップＳ１５３に進み、ＣＲ処理を実行し、ステップＳ１５４に進む。
【０２３９】
このＣＲ処理は、図２９を参照して上述した処理と同様の処理を行うため、その説明を省略するが、ステップＳ１５３において、ＣＲ処理部１０１はバッファ１１１に蓄積されている圧縮データに、ハフマン符号の復号を行い、逆量子化し、その結果として生成される周波数領域データを、バッファ１１２に出力する。また、このとき、ＣＲ処理部１０１は、ＦＴ処理部１０２に逆量子化処理が終了したことを通知する。
【０２４０】
ＦＴ処理部１０２は、ＣＲ処理部１０１からの通知を受けると、ステップＳ１５４において、メインメモリ１２から前フレームの参照データが読み出し可能であるか否かを判定し、前フレームの参照データが読み出し可能であると判定するまで待機する。
【０２４１】
すなわち、後述する前回のステップＳ１５８の処理において、メモリロケーション１２１−１には、サブプロセッサ３２−２により前フレームの参照データが書き込まれており、その際に、追加セグメント１２２−１のＦ／Ｅビットに“１”が書き込まれている。ＦＴ処理部１０２は、ＤＭＡＣ３３を制御し、バス３６を介して、前フレームの参照データが書き込まれているメモリロケーション１２１−１の追加セグメント１２２−１のＦ／Ｅビットを読み出させ、Ｆ／Ｅビットの値が“１”であれば、そのメモリロケーション１２１−１のデータが未処理の最新データであり、読み出し可能であると判定し、ステップＳ１５５に進む。
【０２４２】
ＦＴ処理部１０２は、ステップＳ１５５において、ＤＭＡＣ３３を制御し、バス３６を介して、メモリ１２（メモリロケーション１２１−１）から前フレームの参照データを取得させ、バッファ１１３に蓄積させ、ステップＳ１５６に進む。なお、参照データが取得された後、ＦＴ処理部１０２は、ＤＭＡＣ３３を制御し、メモリロケーション１２１−１の追加セグメント１２２−１のＦ／Ｅビットに、“０”を書き込ませる。
【０２４３】
ステップＳ１５６において、ＦＴ処理部１０２は、ＦＴ処理を実行し、ステップＳ１５７に進む。このＦＴ処理は、図３０を参照して上述した処理と同様の処理を行うため、その説明を省略するが、ステップＳ１５６において、ＦＴ処理部１０２は、バッファ１１２に蓄積されている周波数領域データに、スケールファクタ処理を実行し、ステレオ処理を実行し、ＴＮＳ処理を施し、バッファ１１３に蓄積されている前フレームの参照データを用いて、ＴＮＳ処理が施されたデータに、逆ＭＤＣＴ処理を実行し、次フレームの参照データとＰＣＭデータを生成し、それぞれバッファ１１４および１１５に一旦蓄積させる。
【０２４４】
ＦＴ処理部１０２は、ステップＳ１５７において、メインメモリ１２に、次のフレームの参照データが書き出し可能であるか否かを判定し、次フレームの参照データが書き出し可能であると判定するまで待機する。すなわち、ＦＴ処理部１０２は、ＤＭＡＣ３３を制御し、バス３６を介して、次フレームの参照データを書き出す先のメモリロケーション１２１−２の追加セグメント１２２−２のＦ／Ｅビットを読み出させ、Ｆ／Ｅビットの値が“０”であれば、書き込み可能であると判定し、ステップＳ１５８に進む。
【０２４５】
ステップＳ１５８において、ＦＴ処理部１０２は、バッファ１１４に蓄積した次フレームの参照データと、バッファ１１５に蓄積したＰＣＭデータを、それぞれ、バス３６およびＤＭＡＣ３３を介してメインメモリ１２に書き込ませ、ステップＳ１５９に進む。
【０２４６】
なお、このとき、バッファ１１４に蓄積された次フレームの参照データが、メモリロケーション１２１−２に書き出されると、ＤＭＡＣ３３は、ＦＴ処理部１０２の制御のもと、追加セグメント１２２−２のＦ／Ｅビットに“１”を書き込む。これにより、上述した次回のステップＳ１５５においてサブプロセッサ３２−２により前フレームの参照データが取得される。
【０２４７】
ＦＴ処理部１０２は、ステップＳ１５９において、サブ制御部８１を介して、制御部７２に処理完了を通知し、デコード処理を終了し、図２６のステップＳ２７に戻り、ステップＳ２８に進む。
【０２４８】
次に、図３２のフローチャートを参照して、図２６のステップＳ２７のデコード処理の他の例を説明する。したがって、図２８における処理と同じ処理については、繰り返しになるのでその詳細な説明は省略する。なお、図３２の処理は、図１７のパイプライン１９１構成により実行される処理であり、サブプロセッサ３２−１および３２−２によりそれぞれの所定の処理が実行される。
【０２４９】
サブプロセッサ３２−１のサブ制御部８１は、図３２のステップＳ１７１において、制御部７２から処理開始のコマンドを入力するまで待機しており、制御部７２から処理開始のコマンドを入力したと判定した場合、サブプロセッサ３２−１のＣＲ処理部１０１に処理開始を指示し、ステップＳ１７２に進む。
【０２５０】
サブプロセッサ３２−１のＣＲ処理部１０１は、ステップＳ１７２において、サブプロセッサ３２−１のＣＲ処理部１０１が担当するデコード処理を実行する。このサブプロセッサ３２−１のデコード処理を、図３３のフローチャートを参照して説明する。
【０２５１】
サブプロセッサ３２−１のＣＲ処理部１０１は、図３３のステップＳ１８１において、バス３６およびＤＭＡＣ３３を介して、メインメモリ１２から１フレームの圧縮データを取得し、バッファ１１１に蓄積させ、ステップＳ１８２に進み、ＣＲ処理を実行し、ステップＳ１８３に進む。
【０２５２】
このＣＲ処理は、図２９を参照して上述した処理と同様の処理を行うため、その説明を省略するが、ステップＳ１８３において、サブプロセッサ３２−１のＣＲ処理部１０１はバッファ１１１に蓄積されている圧縮データに、ハフマン符号の復号を行い、逆量子化し、その結果として生成される周波数領域データを、バッファ２１１に出力する。また、このとき、サブプロセッサ３２−１のＣＲ処理部１０１は、サブプロセッサ３２−２のＦＴ処理部１０２に逆量子化処理が終了したことを通知する。
【０２５３】
サブプロセッサ３２−１のＣＲ処理部１０１は、ステップＳ１８３において、メインメモリ１２に、周波数領域データが書き出し可能であるか否かを判定し、周波数領域データが書き出し可能であると判定するまで待機する。すなわち、サブプロセッサ３２−１のＣＲ処理部１０１は、ＤＭＡＣ３３を制御し、バス３６を介して、周波数領域データを書き出す先のメモリロケーション２２１の追加セグメント２２２のＦ／Ｅビットを読み出させ、Ｆ／Ｅビットの値が“０”であれば、書き込み可能であると判定し、ステップＳ１８４に進む。
【０２５４】
ステップＳ１８４において、サブプロセッサ３２−１のＣＲ処理部１０１は、バッファ２１１に蓄積した周波数領域データを、バス３６およびＤＭＡＣ３３を介してメインメモリ１２（メモリロケーション２２１）に書き込ませる。なお、このとき、サブプロセッサ３２−１のＣＲ処理部１０１は、ＤＭＡＣ３３を制御し、追加セグメント２２２のＦ／Ｅビットに“１”を書き込ませる。その後、サブプロセッサ３２−１のＣＲ処理部１０１は、自己（サブプロセッサ３２−１）のデコード処理を終了し、図３２のステップＳ１７２に戻り、ステップＳ１７３に進む。
【０２５５】
ステップＳ１７３において、サブプロセッサ３２−２のＦＴ処理部１０２は、サブプロセッサ３２−１のＣＲ処理部１０１からの逆量子化処理が終了した通知を受け取るまで待機しており、サブプロセッサ３２−１のＣＲ処理部１０１からの逆量子化処理が終了した通知を受け取ったと判定すると、ステップＳ１７４に進み、サブプロセッサ３２−２のＦＴ処理部１０２が担当するデコード処理を実行する。このサブプロセッサ３２−２のデコード処理を、図３４のフローチャートを参照して説明する。
【０２５６】
サブプロセッサ３２−２のＦＴ処理部１０２は、ステップＳ１９１において、メインメモリ１２から周波数領域データが読み出し可能であるか否かを判定し、周波数領域データが読み出し可能であると判定するまで待機する。
【０２５７】
上述した図３３のステップＳ１８４において、サブプロセッサ３２−１のＣＲ処理部１０１により、メモリロケーション２２１に周波数領域データが書き込まれ、追加セグメント２２２のＦ／Ｅビットに“１”が書き込まれている。サブプロセッサ３２−２のＦＴ処理部１０２は、ＤＭＡＣ３３を制御し、バス３６を介して、周波数領域データが書き込まれているメモリロケーション２２１の追加セグメント２２２のＦ／Ｅビットを読み出させ、Ｆ／Ｅビットの値が“１”であれば、そのメモリロケーション２２１のデータが未処理の最新データであり、読み出し可能であると判定し、ステップＳ１９２に進む。
【０２５８】
サブプロセッサ３２−２のＦＴ処理部１０２は、ステップＳ１９２において、ＤＭＡＣ３３を制御し、バス３６を介して、メモリ１２（メモリロケーション２２１）から周波数領域データを取得させ、バッファ２１２に蓄積させ、ステップＳ１９３に進む。なお、周波数領域データが取得された後、サブプロセッサ３２−２のＦＴ処理部１０２は、ＤＭＡＣ３３を制御し、メモリロケーション２２１の追加セグメント２２２のＦ／Ｅビットに、“０”を書き込ませる。
【０２５９】
サブプロセッサ３２−２のＦＴ処理部１０２は、ステップＳ１９３において、メインメモリ１２から前フレームの参照データが読み出し可能であるか否かを判定し、前フレームの参照データが読み出し可能であると判定するまで待機する。
【０２６０】
すなわち、後述する前回のステップＳ１９７の処理において、メモリロケーション１２１−１には、前フレームの参照データが書き込まれ、追加セグメント１２２−１のＦ／Ｅビットに“１”が書き込まれている。サブプロセッサ３２−２のＦＴ処理部１０２は、ＤＭＡＣ３３を制御し、バス３６を介して、前フレームの参照データが書き込まれているメモリロケーション１２１−１の追加セグメント１２２−１のＦ／Ｅビットを読み出させ、Ｆ／Ｅビットの値が“１”であれば、そのメモリロケーション１２１−１のデータが未処理の最新データであり、読み出し可能であると判定し、ステップＳ１９４に進む。
【０２６１】
サブプロセッサ３２−２のＦＴ処理部１０２は、ステップＳ１９４において、ＤＭＡＣ３３を制御し、バス３６を介して、メモリ１２（メモリロケーション１２１−１）から前フレームの参照データを取得させ、バッファ１１３に蓄積させ、ステップＳ１９５に進む。なお、参照データが取得された後、ＦＴ処理部１０２は、ＤＭＡＣ３３を制御し、メモリロケーション１２１−１の追加セグメント１２２−１のＦ／Ｅビットに、“０”を書き込ませる。
【０２６２】
ステップＳ１９５において、サブプロセッサ３２−２のＦＴ処理部１０２は、ＦＴ処理を実行し、ステップＳ１９６に進む。このＦＴ処理は、図３０を参照して上述した処理と同様の処理を行うため、その説明を省略するが、ステップＳ１９５において、ＦＴ処理部１０２は、バッファ２１２に蓄積されている周波数領域データに、スケールファクタ処理を行い、ステレオ処理を実行し、ＴＮＳ処理を施し、バッファ１１３に蓄積されている前フレームの参照データを用いて、ＴＮＳ処理が施されたデータに、逆ＭＤＣＴ処理を実行し、次フレームの参照データとＰＣＭデータを生成し、それぞれバッファ１１４および１１５に一旦蓄積させる。
【０２６３】
サブプロセッサ３２−２のＦＴ処理部１０２は、ステップＳ１９６において、メインメモリ１２に、次のフレームの参照データが書き出し可能であるか否かを判定し、次フレームの参照データが書き出し可能であると判定するまで待機する。すなわち、サブプロセッサ３２−２のＦＴ処理部１０２は、ＤＭＡＣ３３を制御し、バス３６を介して、次フレームの参照データを書き出す先のメモリロケーション１２１−２の追加セグメント１２２−２のＦ／Ｅビットを読み出させ、Ｆ／Ｅビットの値が“０”であれば、書き込み可能であると判定し、ステップＳ１９７に進む。
【０２６４】
ステップＳ１９７において、サブプロセッサ３２−２のＦＴ処理部１０２は、バッファ１１４に蓄積した次フレームの参照データと、バッファ１１５に蓄積したＰＣＭデータを、それぞれ、バス３６およびＤＭＡＣ３３を介してメインメモリ１２に書き込ませ、ステップＳ１９８に進む。
【０２６５】
なお、このとき、バッファ１１４に蓄積された次フレームの参照データが、メモリロケーション１２１−２に書き出されると、ＤＭＡＣ３３は、サブプロセッサ３２−２のＦＴ処理部１０２の制御のもと、追加セグメント１２２−２のＦ／Ｅビットに“１”を書き込む。これにより、上述した次回のステップＳ１９４においてサブプロセッサ３２−２により前フレームの参照データが取得される。
【０２６６】
ステップＳ１９８において、サブプロセッサ３２−２のＦＴ処理部１０２は、サブプロセッサ３２−２のサブ制御部８１を介して、制御部７２に処理完了を通知し、デコード処理を終了し、図２６のステップＳ２７に戻り、ステップＳ２８に進む。
【０２６７】
以上のように、情報処理装置１においては、従来であれば、１つのサブプロセッサやプロセッサなどで実行されていた１つの処理（例えば、コーディック処理）を複数のサブプロセッサを用いて実行するように、１つの処理内でパイプラインを構成し、実行させるようにしたので、例えば、コーディックなどの処理がより高速に実行することができる。
【０２６８】
さらに、処理の優先度、サブプロセッサの空き状況、またはバスの空き状況に応じて、例えば、１サブプロセッサ構成、パイプライン構成１７１、およびパイプライン構成１９１を選択して、処理構成を切り替えることができるようにしたので、早く終わらせたい処理に優先的に、サブプロセッサやバスなどのリソースを割り当てることができたり、サブプロセッサやバスなどのリソースを余らせることなく、有効に利用することができる。
【０２６９】
また、複数のサブプロセッサでパイプラインを構成することにより、専用ハードウェアを組み込むことなく、処理を早くすることができ、さらに、処理が早くなる分、チップのクロック数を落とすことができるので、省電力化を図ることができる。
【０２７０】
なお、上記説明においては、音声データのデコード処理を行うオーディオ復号コーディックモジュール５４−２を用いて説明したが、もちろん、これに限ったことではなく、本発明は、ビデオ復号コーディックモジュール５４−１、ビデオ符号化コーディックモジュール５４−３、またはオーディオ符号化コーディックモジュール５４−４にも適用される。さらに、コーディック処理に限らず、本発明は、情報処理装置１における他の処理にも適用される。
【０２７１】
また、上記説明においては、サブプロセッサを２つ用いて、２種類のパイプラインを構成する例を説明したが、用いるサブプロセッサは、複数であればよく、さらに、パイプライン構成も、上述した２種類に限らず、他のパイプライン構成であってもよい。
【０２７２】
すなわち、本発明によれば、サブプロセッサにおける処理について、さらに高速なパイプライン構成やアルゴリズムが提案された場合にも、情報処理装置１内の他のモジュールに影響することなく、処理構成の追加と優先度の対応付けが可能となる。
【０２７３】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
【０２７４】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図１に示されるように、磁気ディスク５１（フレキシブルディスクを含む）、光ディスク５２（CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む）、光磁気ディスク５３（MD(Mini-Disc)（商標）を含む）、もしくは半導体メモリ５４などのリムーバブル記録媒体、または、プログラムが一時的もしくは永続的に格納される記録部１３−１または１３−２などにより構成される。すなわち、このようなリムーバブル記録媒体は、いわゆるパッケージソフトウェアとして提供することができる。
【０２７５】
また、プログラムは、上述したようなリムーバブル記録媒体から情報処理装置１にインストールされる他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、情報処理装置１に無線で転送したり、 ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、情報処理装置１に有線で転送し、情報処理装置１においては、そのようにして転送されてくるプログラムを、通信部１８で受信し、内蔵する記録部１３−１または１３−２にインストールすることができる。
【０２７６】
なお、本明細書において、フローチャートに示されるステップは、記載された順序に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０２７７】
【図１】本発明の情報処理装置の構成例を示すブロック図である。
【図２】メインメモリを説明する図である。
【図３】サブプロセッサのローカルストレージを説明する図である。
【図４】キー管理テーブルを説明する図である。
【図５】図１の情報処理装置のソフトウェアモジュールの構成例を示すブロック図である。
【図６】図５のＡＶ制御モジュールにより付加される優先度を説明する図である。
【図７】１サブプロセッサ構成の場合の図１のサブプロセッサの機能構成例を示すブロック図である。
【図８】図７のサブプロセッサにおける処理の流れを説明する図である。
【図９】図７のサブプロセッサにおけるデータの流れを説明する図である。
【図１０】パイプライン構成の場合の図１のサブプロセッサの機能構成例を示すブロック図である。
【図１１】図１０のサブプロセッサにおける処理の流れを説明する図である。
【図１２】図１０のサブプロセッサにおけるデータの流れを説明する図である。
【図１３】図１０のサブプロセッサにより実行される処理を説明する図である。
【図１４】図１０のサブプロセッサにより実行される処理を説明する図である。
【図１５】図１０のサブプロセッサにより実行される処理を説明する図である。
【図１６】図１０のサブプロセッサにより実行される処理を説明する図である。
【図１７】他のパイプライン構成の場合の図１のサブプロセッサの機能構成例を示すブロック図である。
【図１８】図１７のサブプロセッサにおける処理の流れを説明する図である。
【図１９】図１７のサブプロセッサにより実行される処理を説明する図である。
【図２０】図１７のサブプロセッサにより実行される処理を説明する図である。
【図２１】図１７のサブプロセッサにより実行される処理を説明する図である。
【図２２】図１７のサブプロセッサにより実行される処理を説明する図である。
【図２３】図７の１サブプロセッサ構成におけるデータの容量を説明する図である。
【図２４】図１７のパイプライン構成におけるデータの容量を説明する図である。
【図２５】各処理構成の場合のバス使用量を示す図である。
【図２６】図１の情報処理装置１の音声データの再生処理を説明するシーケンスチャートである。
【図２７】図２６のステップＳ２５の処理構成選択処理を説明するフローチャートである。
【図２８】図７のサブプロセッサにより実行される図２６のステップＳ２７のデコード処理を説明するフローチャートである。
【図２９】図２８のステップＳ１０３のＣＲ処理を説明するフローチャートである。
【図３０】図２８のステップＳ１０５のＦＴ処理を説明するフローチャートである。
【図３１】図１０のサブプロセッサにより実行される図２６のステップＳ２７のデコード処理を説明するフローチャートである。
【図３２】図１７のサブプロセッサにより実行される図２６のステップＳ２７のデコード処理を説明するフローチャートである。
【図３３】図３２のステップＳ１７２のデコード処理を説明するフローチャートである。
【図３４】図３２のステップＳ１７４のデコード処理を説明するフローチャートである。
【符号の説明】
【０２７８】
１  情報処理装置，  １１  情報処理コントローラ，  １２  メインメモリ，  １５  操作入力部，  ３１  メインプロセッサ，  ３２−１乃至３２−４  サブプロセッサ，  ３３  ＤＭＡＣ，  ３５  キー管理テーブル記憶部，  ４１，４２−１乃至４２−４  ローカルストレージ，  ５１  ＡＶ制御モジュール，  ５２  バス管理モジュール，  ５３  サブプロセッサ管理モジュール，  ５４  コーディックモジュール，  ６１  メイン用モジュール，  ６２  サブ用モジュール，  ７１  処理構成設定部，  ７２  制御部，  ７３  サブプロセッサ用オブジェクトコード管理部，  ８１  サブ制御部，  ８２  コーディック処理部，  １０１  ＣＲ処理部，  １０２  ＦＴ処理部，  １１１乃至１１５  バッファ，  １２１，１２１−１，１２１−２  メモリロケーション，  １２２，１２２−１，１２２−２  追加セグメント，  ２１１，２１２  バッファ，  ２２１  メモリロケーション，  ２２２  追加セグメント
【図１】
2006099451.tif 000003
【図２】
2006099451.tif 000004
【図３】
2006099451.tif 000005
【図４】
2006099451.tif 000006
【図５】
2006099451.tif 000007
【図６】
2006099451.tif 000008
【図７】
2006099451.tif 000009
【図８】
2006099451.tif 000010
【図９】
2006099451.tif 000011
【図１０】
2006099451.tif 000012
【図１１】
2006099451.tif 000013
【図１２】
2006099451.tif 000014
【図１３】
2006099451.tif 000015
【図１４】
2006099451.tif 000016
【図１５】
2006099451.tif 000017
【図１６】
2006099451.tif 000018
【図１７】
2006099451.tif 000019
【図１８】
2006099451.tif 000020
【図１９】
2006099451.tif 000021
【図２０】
2006099451.tif 000022
【図２１】
2006099451.tif 000023
【図２２】
2006099451.tif 000024
【図２３】
2006099451.tif 000025
【図２４】
2006099451.tif 000026
【図２５】
2006099451.tif 000027
【図２６】
2006099451.tif 000028
【図２７】
2006099451.tif 000029
【図２８】
2006099451.tif 000030
【図２９】
2006099451.tif 000031
【図３０】
2006099451.tif 000032
【図３１】
2006099451.tif 000033
【図３２】
2006099451.tif 000034
【図３３】
2006099451.tif 000035
【図３４】
2006099451.tif 000036