(57)【要約】【課題】データ処理の負荷分散を図ることができるようにする。【解決手段】  音声記録プログラム１２３は、ＯＳ１１１がサブプロセッサ３２の資源を獲得した場合、音声符号化モジュール１５１をサブプロセッサ３２のローカルストレージ４２にロードし、音声符号化モジュール１５１を、キックコマンドおよびプログラムカウンタを用いて実行させる。一方、音声記録プログラム１２３は、ＯＳ１１１がサブプロセッサ３２の資源を獲得できなかった場合、音声符号化ライブラリ関数１５２をメインプロセッサ３１のメインメモリ１２にロードし、音声符号化ライブラリ関数１５２を実行する。本発明は、音声や映像を入力し、それらに対応する音声または映像データを記録するＡＶ装置からなる情報処理装置に適用できる。【選択図】図６
2005332009.tif 000002
【特許請求の範囲】
【請求項１】
データ処理を実行する情報処理装置において、
第１のプログラムに基づいて前記データ処理を実行する、少なくとも１の第１の処理手段と、
装置全体を管理する処理を実行する第２の処理手段と、
前記第１の処理手段において、前記第１のプログラムの実行に必要な計算資源が空いているか否かを判定する資源判定手段と、
前記資源判定手段により前記第１の処理手段において、前記第１のプログラムの実行に必要な計算資源が空いていないと判定された場合、前記第２の処理手段を、前記第１のプログラムと等価な結果が得られる第２のプログラムも実行するように制御する処理制御手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記データ処理は、映像データまたは音声データの処理である
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記処理制御手段は、前記資源判定手段により前記第１の処理手段において、前記第１のプログラムの実行に必要な計算資源が空いていると判定された場合、前記第１のプログラムを実行するように、前記第１の処理手段を制御する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
データ処理を実行する情報処理装置の情報処理方法において、
第１のプログラムに基づいて前記データ処理を実行する、少なくとも１の第１の処理手段において、前記第１のプログラムの実行に必要な計算資源が空いているか否かを判定する資源判定ステップと、
前記資源判定ステップの処理により前記第１の処理手段において、前記第１のプログラムの実行に必要な計算資源が空いていないと判定された場合、装置全体を管理する処理を実行する第２の処理手段を、前記第１のプログラムと等価な結果が得られる第２のプログラムも実行するように制御する処理制御ステップと
を含むことを特徴とする情報処理方法。
【請求項５】
データ処理をコンピュータに行わせるプログラムが記録されている記録媒体であって、
第１のプログラムに基づいて前記データ処理を実行する、少なくとも１の第１の処理手段において、前記第１のプログラムの実行に必要な計算資源が空いているか否かを判定する資源判定ステップと、
前記資源判定ステップの処理により前記第１の処理手段において、前記第１のプログラムの実行に必要な計算資源が空いていないと判定された場合、装置全体を管理する処理を実行する第２の処理手段を、前記第１のプログラムと等価な結果が得られる第２のプログラムも実行するように制御する処理制御ステップと
を含むことを特徴とするプログラムが記録されている記録媒体。
【請求項６】
データ処理をコンピュータに行わせるプログラムであって、
第１のプログラムに基づいて前記データ処理を実行する、少なくとも１の第１の処理手段において、前記第１のプログラムの実行に必要な計算資源が空いているか否かを判定する資源判定ステップと、
前記資源判定ステップの処理により前記第１の処理手段において、前記第１のプログラムの実行に必要な計算資源が空いていないと判定された場合、装置全体を管理する処理を実行する第２の処理手段を、前記第１のプログラムと等価な結果が得られる第２のプログラムも実行するように制御する処理制御ステップと
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、記録媒体、並びにプログラムに関し、特に、サブプロセッサの負荷を軽減することができるようにした情報処理装置および方法、記録媒体、並びにプログラムに関する。
【背景技術】
【０００２】
従来のコンピュータでは、メインプロセッサの負荷が大きくなる場合が多いため、負荷分散の方法として、サブプロセッサに必要な処理の一部を並列で行わせ、メインプロセッサの負荷を軽減するようにしていた。
【０００３】
そして、昨今、複数のプロセッサまたはコンピュータを用いて、処理を分散して実行させる、分散処理システムが注目されている（特許文献１乃至５参照）。分散処理を実行させる方法としては、ネットワークを介して接続される複数のコンピュータに処理を実行させる方法、１つのコンピュータに設けられた、複数のプロセッサに処理を実行させる方法、および上述した２つの方法を組み合わせて処理を実行させる方法がある。
【０００４】
【特許文献１】特開２００２−３４２１６５号公報
【特許文献２】特開２００２−３５１８５０号公報
【特許文献３】特開２００２−３５８２８９号公報
【特許文献４】特開２００２−３６６５３３号公報
【特許文献５】特開２００２−３６６５３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、この分散処理システムにおいては、ハードウェアで実現していたことを、サブプロセッサにソフトウェアで実現させているため、メインプロセッサよりもサブプロセッサの負荷の方が大きくなってしまう。したがって、メインプロセッサの負荷をサブプロセッサに分散させる従来の方法では、サブプロセッサの負荷を軽減することが困難である課題があった。
【０００６】
すなわち、この分散処理システムにおいて、例えば、複数のサブプロセッサがすべて実行中、または予約中であった場合、すぐに実行したい処理を実行させることができないなど、サブプロセッサに負荷がかかり、システムのスループットが低下してしまう課題があった。
【０００７】
本発明は、このような状況に鑑みてなされたものであり、サブプロセッサにおけるデータ処理の負荷分散を図ることができるようにするものである。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、第１のプログラムに基づいてデータ処理を実行する、少なくとも１の第１の処理手段と、装置全体を管理する処理を実行する第２の処理手段と、第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いているか否かを判定する資源判定手段と、資源判定手段により第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いていないと判定された場合、第２の処理手段を、第１のプログラムと等価な結果が得られる第２のプログラムも実行するように制御する処理制御手段とを備えることを特徴とする。
【０００９】
データ処理は、映像データまたは音声データの処理であるようにすることができる。
【００１０】
処理制御手段は、資源判定手段により第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いていると判定された場合、第１のプログラムを実行するように、第１の処理手段を制御するようにすることができる。
【００１１】
本発明の情報処理方法は、第１のプログラムに基づいてデータ処理を実行する、少なくとも１の第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いているか否かを判定する資源判定ステップと、資源判定ステップの処理により第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いていないと判定された場合、装置全体を管理する処理を実行する第２の処理手段を、第１のプログラムと等価な結果が得られる第２のプログラムも実行するように制御する処理制御ステップとを含むことを特徴とする。
【００１２】
本発明のプログラムが記録されている記録媒体は、第１のプログラムに基づいてデータ処理を実行する、少なくとも１の第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いているか否かを判定する資源判定ステップと、資源判定ステップの処理により第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いていないと判定された場合、装置全体を管理する処理を実行する第２の処理手段を、第１のプログラムと等価な結果が得られる第２のプログラムも実行するように制御する処理制御ステップとを含むことを特徴とする。
【００１３】
本発明のプログラムは、第１のプログラムに基づいてデータ処理を実行する、少なくとも１の第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いているか否かを判定する資源判定ステップと、資源判定ステップの処理により第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いていないと判定された場合、装置全体を管理する処理を実行する第２の処理手段を、第１のプログラムと等価な結果が得られる第２のプログラムも実行するように制御する処理制御ステップとを含むことを特徴とする。
【００１４】
本発明においては、第１のプログラムに基づいてデータ処理を実行する、少なくとも１の第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いているか否かが判定され、第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いていないと判定された場合、装置全体を管理する処理を実行する第２の処理手段が、第１のプログラムと等価な結果が得られる第２のプログラムも実行するように制御される。
【発明の効果】
【００１５】
本発明によれば、データ処理の負荷分散を図ることができる。また、本発明によれば、予約待ちによるスループットを向上させることができる。
【発明を実施するための最良の形態】
【００１６】
以下に本発明の最良の形態を説明するが、開示される発明と実施の形態との対応関係を例示すると、次のようになる。本明細書中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
【００１７】
さらに、この記載は、明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現し、追加される発明の存在を否定するものではない。
【００１８】
請求項１に記載の情報処理装置（例えば、図１の情報処理装置１−１）は、第１のプログラム（例えば、図６の音声符号化モジュール１５１）に基づいてデータ処理を実行する、少なくとも１の第１の処理手段（例えば、図１のサブプロセッサ３２−１）と、装置全体を管理する処理を実行する第２の処理手段（例えば、図１のメインプロセッサ３１）と、第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いているか否かを判定する資源判定手段（例えば、図６のＯＳ１１１）と、資源判定手段により第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いていないと判定された場合、第２の処理手段を、第１のプログラムと等価な結果が得られる第２のプログラム（例えば、図６の音声符号化ライブラリ関数１５２）も実行するように制御する処理制御手段（例えば、図６の音声記録プログラム１２３）とを備えることを特徴とする。
【００１９】
請求項４に記載の情報処理方法は、第１のプログラム（例えば、図６の音声符号化モジュール１５１）に基づいてデータ処理を実行する、少なくとも１の第１の処理手段（例えば、図１のサブプロセッサ３２−１）において、第１のプログラムの実行に必要な計算資源が空いているか否かを判定する資源判定ステップ（例えば、図９のステップＳ３２）と、資源判定ステップの処理により第１の処理手段において、第１のプログラムの実行に必要な計算資源が空いていないと判定された場合、装置全体を管理する処理を実行する第２の処理手段（例えば、図１のメインプロセッサ３１）を、第１のプログラムと等価な結果が得られる第２のプログラム（例えば、図６の音声記録プログラム１２３）も実行するように制御する処理制御ステップ（例えば、図９のステップＳ３９）とを含むことを特徴とする。
【００２０】
なお、請求項５に記載の記録媒体、および請求項６に記載のプログラムは、上述した請求項４に記載の情報処理方法と基本的に同様の構成であるため、繰り返しになるのでその説明は省略する。
【００２１】
以下、図を参照して本発明の実施の形態について説明する。
【００２２】
本発明は、例えば、ライブ映像ストリーミング配信システム、またはテレビなどのリアルタイムにストリーミングデータを伝送する通信システムに適用できる。
【００２３】
図１は、本発明を適用した通信システムの一実施の形態を示す図である。この通信システムにおいては、セルネットワークなどのネットワーク２を介して、情報処理装置１−１、情報処理装置１−２、および情報処理装置１−３が相互に接続されている。そして、１つのネットワーク２においては、１つの情報処理装置（例えば、情報処理装置１−１）がマスター装置として動作し、他の情報処理装置（例えば、情報処理装置１−２および情報処理装置１−３）がスレーブ装置として動作する。
【００２４】
情報処理装置１−１乃至１−３は、例えば、ポータブルＣＤ（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３３は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ１２のメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、サブプロセッサ３２から供給されたコマンドを実行する。
【００６２】
図４は、キー管理テーブルを説明する図である。キー管理テーブルに記録されているキーマスクは、その任意のビットが“１”になることによって、そのキーマスクと関連付けられたサブプロセッサキーの対応するビットを“０”または“１”にすることができる。
【００６３】
例えば、サブプロセッサキーが“１０１０”であるとする。通常、このサブプロセッサキーによって“１０１０”のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが“０００１”に設定されている場合には、キーマスクのビットが“１”に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ（キーマスクのビットが“１”に設定された桁について、判定されず）、このサブプロセッサキー“１０１０”によってアクセスキーが“１０１０”または“１０１１”のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【００６４】
以上のようにして、メインメモリ１２のサンドボックスの排他性が実現される。すなわち、複数のサブプロセッサ３２によってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサ３２と、後段階の処理を行うサブプロセッサ３２のみが、メインメモリ１２の所定のアドレスにアクセスできるようになり、データを保護することができる。
【００６５】
例えば、キーマスクの値は、以下のように変更されることが考えられる。まず、情報処理装置１の起動直後においては、キーマスクの値は全て“０”である。メインプロセッサ３１にロードされたプログラムが実行され、サブプロセッサ３２にロードされたプログラムと連携動作するものとする。サブプロセッサ３２−１により出力された処理結果データを、メインメモリ１２に記憶させ、メインメモリ１２に記憶させた処理結果データを、サブプロセッサ３２−２に入力したいときには、サブプロセッサ３２−１により出力された処理結果データを記憶しているメインメモリ１２の領域は、サブプロセッサ３２−１およびサブプロセッサ３２−２からアクセス可能である必要がある。そのような場合に、メインプロセッサ３１は、キーマスクの値を適切に変更し、複数のサブプロセッサ３２からアクセスできるメインメモリの領域を設けることにより、サブプロセッサ３２による多段階的の処理を可能にする。
【００６６】
より具体的には、例えば、情報処理装置１−２または情報処理装置１−３から送信されてきた、データを基に、サブプロセッサ３２−１が所定の処理実行し、処理が施されたデータをメインメモリ１２の第１の領域に記憶させる。そして、サブプロセッサ３２−２は、メインメモリ１２の第１の領域から、記憶されているデータを読み出し、読み出したデータを基に、所定の処理を実行し、処理が施されたデータをメインメモリ１２の第１の領域とは、異なる第２の領域に記憶させる。
【００６７】
ここで、サブプロセッサ３２−１のサブプロセッサキーが“０１００”であり、メインメモリ１２の第１の領域のアクセスキーが“０１００”であり、サブプロセッサ３２−２のサブプロセッサキーが“０１０１”であり、メインメモリ１２の第２の領域のアクセスキーが“０１０１”である場合、サブプロセッサ３２−２は、メインメモリ１２の第１の領域にアクセスすることができない。そこで、サブプロセッサ３２−２のキーマスクを“０００１”にすることによって、サブプロセッサ３２−２は、メインメモリ１２の第１の領域にアクセスすることができるようになる。
【００６８】
なお、図２乃至図４においては、サブプロセッサ３２がメインメモリ１２にアクセスする場合について説明したが、メインプロセッサ３１は、上述したサブプロセッサＩＤおよびサブプロセッサキーに対応する、メインプロセッサＩＤおよびメインプロセッサキーを有しており、メインプロセッサ３１が、例えば、ローカルストレージ４１で処理を行うために、メインメモリ１２にアクセスする場合も同様な処理が実行される。
【００６９】
図５は、メインメモリ１２に記憶されるプログラムの構成を示している。これらのプログラムは、情報処理装置１に電源が投入される前、記録部１３などに記憶されている。
【００７０】
各プログラムは、機能または特徴によって、制御プログラム１０１、機能プログラム１０２、およびデバイスドライバ１０３により分けて構成される。
【００７１】
制御プログラム１０１は、メインプロセッサ３１により実行されるものであり、情報処理装置１の主電源が投入されている間、常時動作する常駐プログラムである、例えば、ＯＳ（オペレーティングシステム）１１１、ＭＳ（マスター／スレーブ）マネージャ１１２、および能力交換プログラム１１３などにより構成される。
【００７２】
ＯＳ１１１は、情報処理装置１の基本的な動作を制御するプログラムである。ＭＳマネージャ１１２は、ネットワーク２に電気的かつ機能的に接続される情報処理装置１−１乃至１−３の中からマスター装置とスレーブ装置を設定するプログラムである。能力交換プログラム１１３は、ネットワーク２に電気的かつ機能的に接続される情報処理装置１−１乃至１−３の装置情報を取得し、メインメモリ１２に記憶される装置情報テーブルに登録するプログラムである。
【００７３】
なお、これらの制御プログラム１０１は、メインプロセッサ３１で実行されることに限らず、いずれかのサブプロセッサ３２で実行されてもよい。また、これらの制御プログラム１０１は、情報処理装置１の主電源が投入されている間、常時動作する常駐プログラムであるほうが望ましい。
【００７４】
機能プログラム１０２は、メインプロセッサ３１により、情報処理装置１内の必要な資源（リソース）が制御されて、実行されるものであり、例えば、記録プログラム１２１、再生プログラム１２２、および音声記録プログラム１２３などにより構成される。
【００７５】
記録プログラム１２１は、必要に応じたデバイスドライバ１０３を制御し、音声や映像データを入力させ、入力されるデータを符号化し、符号化したデータを記録部１３に記録させるプログラムである。再生プログラム１２２は、必要に応じたデバイスドライバ１０３を制御し、記録部１３に記録される映像や音声データを読み出させ、復号、伸張などを行い、出力部１７を構成するディスプレイやスピーカに、対応する映像や音声を出力させるプログラムである。音声記録プログラム１２３は、音声データを入力させ、入力されるデータを符号化し、符号化したデータを記録部１３に記録させるプログラムである。
【００７６】
なお、機能プログラム１０２は、各情報処理装置１に応じたもので構成される。すなわち、例えば、情報処理装置１がハードディスクレコーダで構成される場合には、機能プログラムは、映像音声記録プログラム、映像音声再生プログラム、素材検索プログラム、番組予約プログラムなどで構成される。また、例えば、情報処理装置１がＰＤＡで構成される場合には、機能プログラムは、映像音声記録プログラム、映像音声再生プログラム、電話帳プログラム、ワープロプログラム、表計算プログラム、およびＷｅｂブラウザプログラムなどで構成される。
【００７７】
デバイスドライバ１０３は、情報処理装置１の入出力（送受信）の制御を実行するプログラムであり、操作入力ドライバ１３１、音声入力ドライバ１３２、記録制御ドライバ１３３、および図示せぬネットワークドライバなどにより構成される。操作入力ドライバ１３１は、操作入力部１５の入力に対応した処理を実行するプログラムである。音声入力ドライバ１３２は、入力部１６を構成するマイクロフォンの音声入力を制御するプログラムである。記録制御ドライバ１３３は、ＤＣ３４を制御し、記録部１３への記録を制御するプログラムである。ネットワークドライバは、通信部１８を制御し、ネットワーク２の入出力を実行するプログラムである。
【００７８】
これらのプログラムは、情報処理装置１の電源投入後に、記録部１３から読み出され、メインメモリ１２にロードされる。すなわち、ケーブルの差込などによって情報処理装置１が物理的にネットワーク２に接続された状態で、情報処理装置１に主電源が投入され、情報処理装置１が電気的・機能的にもネットワーク２に接続されると、メインプロセッサ３１は、制御プログラム１０１に属する各プログラム、および、デバイスドライバ１０３に属する各プログラムをメインメモリ１２にロードする。
【００７９】
具体的には、メインプロセッサ３１は、ＤＣ３４に読み出し命令を実行させることによって、記録部１３からプログラムを読み出し、DMAC３３に書き込み命令を実行させることによって、そのプログラムをメインメモリ１２に書き込む。
【００８０】
機能プログラム１０２に属する各プログラムは、必要なときに必要なプログラムだけがロードされるが、制御プログラム１０１やデバイスドライバ１０３に属する各プログラムと同様に、主電源投入直後に各プログラムをロードするように構成してもよい。なお、機能プログラム１０２に属する各プログラムは、記録部１３に記録されていなくても、ネットワーク２を介して接続される他の情報処理装置の記録部１３に記録されていれば、ソフトウェアセルに含めることにより、ソフトウェアセルを用いて、ロードすることも可能である。
【００８１】
また、機能プログラム１０２に属する各プログラムは、図６に示されるように、所定の処理をサブプロセッサ３２に実行させるためのモジュール（例えば、spu_module）と、モジュールにより実行される所定の処理と同等の処理をメインプロセッサ３１に実行させるためのライブラリ関数（例えば、pu-xxx()）を有している。ライブラリ関数は、サブプロセッサ３２においてモジュールにより実行された処理結果と同等の処理結果が得られるように、メインプロセッサ３１用に生成されたプログラムである。すなわち、サブプロセッサ３２においてモジュールにより実行された処理結果と、メインプロセッサ３１においてライブラリ関数により実行された処理結果は、メインメモリ１２内の同じアドレスに格納される。
【００８２】
図６は、音声データを記録する情報処理装置１が実行するプログラムを説明する図である。なお、図６の例の場合、情報処理装置１がスタンドアローンで動作する場合を説明する。したがって、この場合、ＭＳマネージャ１１２、および能力交換プログラム１１３の説明は省略する。また、図６の例において、図５における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので省略する。
【００８３】
メインプロセッサ３１は、情報処理装置１に主電源が投入され、ＤＣ３４に読み出し命令を実行させることによって、記録部１３からＯＳ１１１を読み出し、DMAC３３に書き込み命令を実行させることによって、ＯＳ１１１をメインメモリ１２に書き込み、ＯＳ１１１を実行する。また、このとき、メインプロセッサ３１は、操作入力ドライバ１３１、音声入力ドライバ１３２、および記録制御ドライバ１３３もメインメモリ１２にロードし、実行する。
【００８４】
例えば、ユーザが操作入力部１５を操作するなどして、音声記録プログラム１２３の起動を要求する。操作入力部１５は、バス１４を介してメインプロセッサ３１に要求信号を供給する。これに対応して、メインプロセッサ３１は、記録部１３からメインメモリ１２に、音声記録プログラム１２３をロードし、ＯＳ１１１の制御の下で実行する。
【００８５】
そして、音声記録プログラム１２３が、例えば、入力部１６を構成するマイクロフォンからの音声を記録部１３に記録する要求を行うと、ＯＳ１１１は、その要求を処理するために必要な資源の獲得を行う。
【００８６】
すなわち、ＯＳ１１１は、音声記録プログラム１２３からの資源獲得の要求に応じて、音声符号化処理を実行することが可能なサブプロセッサ３２の資源があるか否かを判定し、音声符号化処理を実行することが可能なサブプロセッサ３２の資源がある場合には、そのサブプロセッサ３２の資源を獲得し、ロックするとともに、その判定結果を音声記録プログラム１２３に供給する。また、ＯＳ１１１は、音声記録プログラム１２３による符号化処理が終了すると、獲得したサブプロセッサ３２の資源を開放する。
【００８７】
ＯＳ１１１は、音声符号化処理を実行することが可能なサブプロセッサ３２の資源がないと判定した場合、その判定結果を音声記録プログラム１２３に供給する。なお、このとき、ＯＳ１１１は、例えば、サブプロセッサ３２が他の処理を実行しているか否か、またはサブプロセッサ３２に他の処理が予約されているか否かなどに基づいて、音声符号化処理を実行することが可能なサブプロセッサ３２の資源があるか否かを判定する。
【００８８】
また、ＯＳ１１１は、音声記録プログラム１２３からの要求に応じて、操作入力ドライバ１３１、音声入力ドライバ１３２、および記録制御ドライバ１３３を制御し、音声記録プログラム１２３からの要求を処理させる。
【００８９】
音声記録プログラム１２３は、音声データの符号化処理をサブプロセッサ３２に実行させるための音声符号化モジュール１５１、音声データの符号化処理をメインプロセッサ３１に実行させるための音声符号化ライブラリ関数１５２を有している。音声符号化ライブラリ関数１５２は、サブプロセッサ３２において音声符号化モジュール１５１により実行される音声データの符号化処理の結果と同等の処理結果がメインプロセッサ３１においても得られるように、音声符号化モジュール１５１に合わせて生成されたプログラムである。
【００９０】
音声記録プログラム１２３は、ＯＳ１１１がサブプロセッサ３２の資源を獲得した場合、音声符号化モジュール１５１をサブプロセッサ３２のローカルストレージ４２にロードし、音声符号化モジュール１５１を、キックコマンドおよびプログラムカウンタを用いて実行させる。キックコマンドは、プログラムの実行を開始するコマンドであり、プログラムカウンタは、プログラム実行用プログラムカウンタのためのアドレスを与えるものである。
【００９１】
一方、音声記録プログラム１２３は、ＯＳ１１１がサブプロセッサ３２の資源を獲得できなかった場合、音声符号化ライブラリ関数１５２をメインプロセッサ３１のメインメモリ１２にロードし、音声符号化ライブラリ関数１５２を実行する。なお、この場合、音声符号化ライブラリ関数１５２を、メインメモリ１２ではなく、メインプロセッサ３１のローカルストレージ４１にロードし、実行させるようにしてもよい。
【００９２】
音声記録プログラム１２３は、音声符号化モジュール１５１または音声符号化ライブラリ関数１５２から、実行完了の通知があると、記録制御ドライバ１３３を制御し、メインメモリ１２の所定領域に格納された、符号化処理結果である符号化データを読み出させ、読み出させた符号化データを、記録部１３に記録させる。
【００９３】
サブプロセッサ３２において、音声符号化モジュール１５１が実行された場合、音声符号化モジュール１５１は、音声データの符号化処理を実行し、実行結果を、DMAC３３を介して、メインメモリ１２の所定領域に格納し、その後、実行を完了したことを音声記録プログラム１２３に通知する。メインプロセッサ３１において、音声符号化ライブラリ関数１５２が実行された場合、音声符号化ライブラリ関数１５２は、音声データの符号化処理を実行し、実行結果（符号化されたデータ）を、DMAC３３を介して、メインメモリ１２の所定領域に格納し、その後、実行を完了したことを音声記録プログラム１２３に通知する。
【００９４】
操作入力ドライバ１３１は、操作入力部１５の入力に対応した信号を、ＯＳ１１１に供給する。音声入力ドライバ１３２は、音声記録プログラム１２３からの要求に対応するＯＳ１１１の制御の下、入力部１６を構成するマイクロフォンの音声入力を制御し、入力された音声データをメインメモリ１２の所定領域に記録する。記録制御ドライバ１３３は、音声記録プログラム１２３からの要求に対応するＯＳ１１１の制御の下、符号化されたデータを、ＤＣ３４を制御し、記録部１３に記録させる。
【００９５】
図７は、プログラムに含まれるモジュールとライブラリ関数の他の例を示している。
【００９６】
図７の例の場合、記録プログラム１２１は、図６を参照して上述した音声記録プログラム１２３と同様の音声データの符号化処理をサブプロセッサ３２に実行させるための音声符号化モジュール１５１、音声データの符号化処理をメインプロセッサ３１に実行させるための音声符号化ライブラリ関数１５２、映像データの符号化処理をサブプロセッサ３２に実行させるための映像符号化モジュール１６１−１乃至１６１−３、および、映像データの符号化処理をメインプロセッサ３１に実行させるための映像符号化ライブラリ関数１６２−１乃至１６２−３などを有している。なお、図７の例においては図示していないが、実際には、他のモジュールやライブラリ関数なども有している。
【００９７】
映像符号化ライブラリ関数１６２−１乃至１６２−３は、サブプロセッサ３２において映像符号化モジュール１６１−１乃至１６１−３によりそれぞれ実行される映像データの符号化処理の結果と同等の処理結果がメインプロセッサ３１においても得られるように、映像符号化モジュール１６１−１乃至１６１−３に合わせてそれぞれ生成されたプログラムである。
【００９８】
ここで、サブプロセッサ３２のローカルストレージ４２は、メインプロセッサ３１がモジュールを実行するメインメモリ１２の容量よりかなり小さく構成されている。このため、メインプロセッサ３１のモジュールは、サブプロセッサ３２のローカルストレージ４２の容量に合わせた実行単位で生成されるため、映像符号化処理のように、処理数の多い処理のモジュールの場合には、複数のモジュールに分けて構成される。
【００９９】
したがって、サブプロセッサ３２の資源が獲得された場合、記録プログラム１２１は、映像符号化モジュール１６１−１をサブプロセッサ３２のローカルストレージ４２にロードし、映像符号化モジュール１６１−１を、キックコマンドおよびプログラムカウンタを用いて実行させる。サブプロセッサ３２において、映像符号化モジュール１６１−１が実行された場合、映像符号化モジュール１６１−１は、映像データの符号化処理を実行し、実行結果を、DMAC３３を介して、メインメモリ１２の所定領域に格納し、その後、実行を完了したことを記録プログラム１２１に通知する。
【０１００】
これに対応して、記録プログラム１２１は、映像符号化モジュール１６１−２をサブプロセッサ３２のローカルストレージ４２にロードし、映像符号化モジュール１６１−２を、キックコマンドおよびプログラムカウンタを用いて実行させる。以降、説明は省略するが、映像符号化モジュール１６１−３についても、同様に実行される。
【０１０１】
一方、サブプロセッサ３２の資源が獲得されなかった場合、記録プログラム１２１は、映像符号化ライブラリ関数１６２−１をメインプロセッサ３１のメインメモリ１２にロードし、映像符号化ライブラリ関数１６２−１を実行する。メインプロセッサ３１において、映像符号化ライブラリ関数１６２−１が実行された場合、映像符号化ライブラリ関数１６２−１は、映像データの符号化処理を実行し、実行結果を、DMAC３３を介して、メインメモリ１２の所定領域に格納し、その後、実行を完了したことを記録プログラム１２１に通知する。
【０１０２】
これに対応して、記録プログラム１２１は、映像符号化ライブラリ関数１６２−２をメインプロセッサ３１のメインメモリ１２にロードし、映像符号化ライブラリ関数１６２−２を実行する。以降、説明は省略するが、映像符号化ライブラリ関数１６２−３についても、同様に実行される。
【０１０３】
以上のように、１つの処理が複数のモジュールまたはライブラリで構成される場合には、すべてのモジュールまたはライブラリが一通り終了するまでの処理が繰り返し続けられる。
【０１０４】
なお、図７の例においては、映像符号化モジュールおよび映像符号化ライブラリ関数が３つにより構成される場合を説明したが、モジュールおよびライブラリ関数の個数は、３つに限定されず、実際には、さらに多くのモジュールおよびライブラリ関数により構成される。
【０１０５】
また、映像符号化モジュール１６１−１および映像符号化モジュール１６１−２が並列処理可能な場合には、サブプロセッサ２３の資源が利用できれば、１つの映像符号化モジュール１６１の処理を待たなくても、２つ平行して実行されるようにしてもよい。
【０１０６】
次に、図８のフローチャートを参照して、情報処理装置１の音声データの記録処理を説明する。例えば、ユーザが操作入力部１５を操作するなどして、音声記録プログラム１２３の起動を要求すると、メインプロセッサ３１は、記録部１３からメインメモリ１２に、音声記録プログラム１２３をロードし、ＯＳ１１１の制御の下で実行する。
【０１０７】
音声記録プログラム１２３は、ステップＳ１１において、音声入力ドライバ１３２を制御し、入力部１６を構成するマイクロフォンから音声を入力させ、ステップＳ１２に進む。すなわち、ステップＳ１１において、音声入力ドライバ１３２は、音声記録プログラム１２３からの要求に対応するＯＳ１１１の制御の下、入力部１６を構成するマイクロフォンの音声入力を制御し、音声データを入力し、DMAC３３を制御し、メインメモリ１２の第１の所定領域に記録する。
【０１０８】
音声記録プログラム１２３は、ステップＳ１２において、音声データの符号化処理を実行し、ステップＳ１３に進む。この音声データの符号化処理は、図９のフローチャートを参照して詳しく後述するが、ステップＳ１２の処理において、サブプロセッサ３２またはメインプロセッサ３１により音声データが符号化され、符号化されたデータがメインメモリ１２の第２の所定領域に格納される。
【０１０９】
音声記録プログラム１２３は、ステップＳ１３において、記録制御ドライバ１３３を制御し、符号化されたデータを記録部１３に記録させ、ステップＳ１４に進む。すなわち、ステップＳ１３において、記録制御ドライバ１３３は、DMAC３３を制御し、第２の所定領域から符号化されたデータを読み出し、ＤＣ３４を制御し、記録部１３に記録させる。
【０１１０】
例えば、ユーザは、操作入力部１５を操作して、音声データの記録終了を要求する。これに対応して、音声記録プログラム１２３は、ステップＳ１４において、操作入力部１５を介して、ユーザの記録終了要求を入力したか否かを判定し、操作入力部１５を介して、ユーザの記録終了要求を入力したと判定した場合、音声データの記録処理を終了する。音声記録プログラム１２３は、ステップＳ１４において、ユーザの記録終了要求をまだ入力していないと判定した場合、ステップＳ１１に戻り、それ以降の処理を繰り返す。
【０１１１】
次に、図９のフローチャートを参照して、図８のステップＳ１２の音声データの符号化処理を詳しく説明する。
【０１１２】
音声記録プログラム１２３は、ステップＳ３１において、入力部１６を構成するマイクロフォンからの音声データを符号化するため、サブプロセッサの資源をＯＳ１１１に要求し、ステップＳ３２に進む。
【０１１３】
ＯＳ１１１は、ステップＳ３２において、音声記録プログラム１２３からの資源獲得の要求に応じて、音声符号化処理を実行することが可能なサブプロセッサ３２の資源があるか否かを判定し、音声符号化処理を実行することが可能なサブプロセッサ３２の資源がある場合には、そのサブプロセッサ３２の資源を獲得し、ロックするとともに、その判定結果を音声記録プログラム１２３に供給し、ステップＳ３３に進む。
【０１１４】
音声記録プログラム１２３は、ＯＳ１１１からの資源があるという判定結果に応じて、ステップＳ３３において、ＯＳ１１１により資源が獲得されたサブプロセッサ３２に音声符号化モジュール１５１をロードし、ステップＳ３４に進む。すなわち、音声記録プログラム１２３は、DMAC３３を制御し、メインメモリ１２から音声符号化モジュール１５１を読み出させ、サブプロセッサ３２のローカルストレージ４２に、読み出させた音声符号化モジュール１５１を書き込ませる。
【０１１５】
音声記録プログラム１２３は、ステップＳ３４において、サブプロセッサ３２に、キックコマンドおよびプログラムカウンタを出力し、音声符号化モジュール１５１を実行させ、ステップＳ３５に進む。
【０１１６】
これにより、サブプロセッサ３２において音声符号化モジュール１５１が実行される。すなわち、音声符号化モジュール１５１は、DMAC３３を制御し、メインメモリ１２の第１の所定領域にある音声データを読み出させ、読み出された音声データに所定の符号化処理を実行する。そして、音声符号化モジュール１５１は、DMAC３３を制御し、符号化されたデータを、メインメモリ１２の第２の所定領域に格納させ、実行を完了したことを音声記録プログラム１２３に通知する。
【０１１７】
ステップＳ３５において、音声記録プログラム１２３は、メインプロセッサ３１における自スレッドの実行優先度を退避し、実行優先順位を最高に設定し、ステップＳ３６において、サブプロセッサ３２からの実行完了通知があるまで待機している。すなわち、メインプロセッサ３１において、音声記録プログラム１２３が実行優先順位を最高にして、待ち状態に入るため、メインプロセッサ３１は、実行可能状態にあった別のスレッドに、実行権をプリエンプトし、実行状態にさせる。これにより、メインプロセッサ３１においては、別のスレッドの実行が開始される。
【０１１８】
サブプロセッサ３２からの実行完了が音声記録プログラム１２３に通知されると、音声記録プログラム１２３は、ステップＳ３６において、サブプロセッサ３２からの実行完了通知があったと判定し、実行可能状態になり、ステップＳ３７に進む。すなわち、音声記録プログラム１２３は、実行優先順位が最高であるため、すぐに実行状態となり、ステップＳ３６において、自スレッドの実行優先度を、ステップＳ３５において退避しておいたものに戻し、ステップＳ３８に進む。これにより、メインメモリ１２の第２の所定領域に格納された符号化データの利用が可能になる。
【０１１９】
音声記録プログラム１２３は、符号化処理が完了すると、ＯＳ１１１に、サブプロセッサ３２の資源の開放を要求するので、ステップＳ３８において、ＯＳ１１１は、サブプロセッサ３２の資源を開放し、符号化処理を終了し、図８のステップＳ１２に戻り、ステップＳ１３に進む。
【０１２０】
一方、例えば、すべてのサブプロセッサ３２が他の処理を実行していたり、他の処理が予約されている場合、ＯＳ１１１は、ステップＳ３２において、音声符号化処理を実行することが可能なサブプロセッサ３２の資源がないと判定し、その判定結果を音声記録プログラム１２３に供給し、ステップＳ３９に進む。
【０１２１】
音声記録プログラム１２３は、ステップＳ３９において、メインメモリ１２の音声符号化ライブラリ関数１５２をロードし、ステップＳ４０において、ロードした音声符号化ライブラリ関数１５２を実行させる。すなわち、音声記録プログラム１２３は、DMAC３３を制御し、メインメモリ１２の音声符号化モジュール１５１を読み出させ、実行する。
【０１２２】
これにより、メインプロセッサ３１において、音声符号化ライブラリ関数１５２が実行される。すなわち、音声符号化ライブラリ関数１５２は、DMAC３３を制御し、メインメモリ１２の第１の所定領域にある音声データを読み出させ、読み出された音声データに所定の符号化処理を実行する。そして、音声符号化ライブラリ関数１５２は、DMAC３３を制御し、符号化されたデータを、メインメモリ１２の第２の所定領域に格納させ、実行を完了したことを音声記録プログラム１２３に通知し、符号化処理を終了し、図８のステップＳ１２に戻り、ステップＳ１３に進む。
【０１２３】
以上により、メインメモリ１２の第２の所定領域に格納された符号化データの利用が可能になる。すなわち、ステップＳ４０の処理の結果、ステップＳ３４の音声符号化モジュール１５１と同様の結果が得られる。
【０１２４】
なお、図８の例においては、説明の便宜上、１の符号化処理が終了した場合にサブプロセッサ３２の資源を開放するように説明したが、実際には、音声データの記録処理が終了するまで（すなわち、入力される音声データのすべての符号化処理が終了するまで）、サブプロセッサ３２の資源は、ロックされ開放されない。
【０１２５】
以上のように、サブプロセッサ３２が実行するモジュールだけでなく、モジュールの実行単位で、サブプロセッサ３２と同じ結果が得られるライブラリ関数を生成しておき、サブプロセッサ３２の資源が獲得できない場合に、そのライブラリ関数を、情報処理装置１の管理などを実行するメインプロセッサ３１で実行させるようにしたので、サブプロセッサ３２の資源が空いていなくても、ユーザの要求に応じて、優先させたい処理などをすぐに実行することができる。
【０１２６】
したがって、メインプロセッサとサブプロセッサを臨機応変に用いることが可能になり、情報処理装置１全体のスループットの改善やパフォーマンスの向上を実現することができる。
【０１２７】
なお、上記説明においては、音声データの記録処理を用いて説明したが、もちろん、これに限ったことではない。また、上記説明においては、情報処理装置がスタンドアローンで動作する場合の処理を説明したが、ソフトウェアセルにもサブプロセッサ３２が実行するモジュールだけでなく、そのモジュールの実行単位で、サブプロセッサ３２と同じ結果が得られるライブラリ関数を含むようにしておくことにより、ネットワークを介して、他の情報処理装置１にも、上述した処理を実行させることが可能であるし、逆に、他の情報処理装置１から送信されてきたソフトウェアセルに応じて、上述した処理を実行することも可能である。
【０１２８】
以上により、情報処理装置１全体は、もちろんのこと、通信システム全体のスループットの改善やパフォーマンスの向上を実現することができる。
【０１２９】
また、上記説明においては、サブプロセッサ３２の資源の有無により、メインプロセッサ３１での実行を可能にする場合を説明したが、サブプロセッサ３２の資源の有無に拘らず、メインプロセッサ３１での実行を最優先するようにしてもよい。
【０１３０】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
【０１３１】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図１に示されるように、磁気ディスク５１（フレキシブルディスクを含む）、光ディスク５２（CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む）、光磁気ディスク５３（MD(Mini-Disc)（商標）を含む）、もしくは半導体メモリ５４などのリムーバブル記録媒体、または、プログラムが一時的もしくは永続的に格納される記録部１３−１または１３−２などにより構成される。すなわち、このようなリムーバブル記録媒体は、いわゆるパッケージソフトウェアとして提供することができる。
【０１３２】
また、プログラムは、上述したようなリムーバブル記録媒体から情報処理装置１にインストールされる他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、情報処理装置１に無線で転送したり、 ＬＡＮ(Local Area Network)、インターネットといったネットワークを介して、情報処理装置１に有線で転送し、情報処理装置１においては、そのようにして転送されてくるプログラムを、通信部１８で受信し、内蔵する記録部１３−１または１３−２にインストールすることができる。
【０１３３】
なお、本明細書において、フローチャートに示されるステップは、記載された順序に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０１３４】
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【図面の簡単な説明】
【０１３５】
【図１】本発明の通信システムの構成例を示すブロック図である。
【図２】メインメモリを説明する図である。
【図３】サブプロセッサのローカルストレージを説明する図である。
【図４】キー管理テーブルを説明する図である。
【図５】図１の情報処理装置のプログラムを示す図である。
【図６】音声データを記録する情報処理装置が実行するプログラムを示す図である。
【図７】図５の記録プログラムを示す図である。
【図８】図１の情報処理装置の記録処理を説明するフローチャートである。
【図９】図８のステップＳ１２の符号化処理の例を説明するフローチャートである。
【符号の説明】
【０１３６】
１−１乃至１−３  情報処理装置，２  ネットワーク，１１  情報処理コントローラ，１２  メインメモリ，１３−１および１３−２  記録部，１５  操作入力部，１６  入力部，１８  通信部，３１  メインプロセッサ，３２−１乃至３２−３  サブプロセッサ，３３  ＤＭＡＣ，３４  ＤＣ，３５  キー管理テーブル記憶部，４１，４２−１乃至４２−３  ローカルストレージ，１０１  制御プログラム，１０２  機能プログラム，１０３  デバイスドライバ，１１１  ＯＳ，１２３  音声記録プログラム，１３１  操作入力ドライバ，１３２  音声入力ドライバ，１３３  記録制御ドライバ，１５１  音声符号化モジュール，１６２  音声符号化ライブラリ関数 
【図１】
2005332009.tif 000003
【図２】
2005332009.tif 000004
【図３】
2005332009.tif 000005
【図４】
2005332009.tif 000006
【図５】
2005332009.tif 000007
【図６】
2005332009.tif 000008
【図７】
2005332009.tif 000009
【図８】
2005332009.tif 000010
【図９】
2005332009.tif 000011