以下、図を参照して本発明の実施の形態について説明する。
図1は、本発明を適用した情報処理装置の一実施の形態を示す図である。情報処理装置1は、例えば、ポータブルCD(Compact Disk)プレイヤ、ハードディスクレコーダ、またはカムコーダなどのAV(Audio Visual)機器、パーソナルコンピュータ、もしくはPDA(Personal Digital Assistant)などにより構成される。
情報処理装置1は、情報処理コントローラ11、メインメモリ12、記録部13−1、記録部13−2、バス14、操作入力部15、入力部16、出力部17、通信部18、およびドライブ19により構成される。
情報処理コントローラ11は、メインメモリ12に記録されている各種のプログラムを実行し、情報処理装置1全体を制御する。情報処理コントローラ11は、例えば、図示せぬネットワークを介して接続される他の情報処理装置に送信するソフトウェアセルを生成し、生成したソフトウェアセルを、バス14を介して、通信部18に供給する。情報処理コントローラ11は、通信部18から供給されたデータを記録部13−1または13−2に供給する。情報処理コントローラ11は、操作入力部15からの指示信号に基づいて、指定されたデータを、メインメモリ12や、記録部13−1または13−2から取得し、取得したデータを、バス14を介して出力部17に供給する。
なお、情報処理コントローラ11には、情報処理装置1を、通信部18を介して接続される図示せぬネットワーク全体を通して、一意的に特定できる装置IDが割り当てられている。
情報処理コントローラ11は、メインプロセッサ31、サブプロセッサ32−1乃至サブプロセッサ32−4、DMAC(Direct Memory Access Controller)33、DC(Disk Controller)34、キー管理テーブル記憶部35、およびバス36により密結合に構成される。
メインプロセッサ31、サブプロセッサ32−1乃至サブプロセッサ32−4、DMAC33、DC34、およびキー管理テーブル記憶部35は、バス36を介して、相互に接続されている。また、メインプロセッサ31には、メインプロセッサ31を特定するためのメインプロセッサIDが識別子として割り当てられる。同様に、サブプロセッサ32−1乃至サブプロセッサ32−4のそれぞれには、サブプロセッサ32−1乃至サブプロセッサ32−4のそれぞれを特定するためのサブプロセッサIDのそれぞれが識別子として割り当てられる。
メインプロセッサ31は、サブプロセッサ32−1乃至サブプロセッサ32−4によるプログラムの実行のスケジュール管理および情報処理コントローラ11(情報処理装置1)の全体の管理を行う。メインプロセッサ31は、RAM(Random Access Memory)などで構成されるローカルストレージ41を備える。
メインプロセッサ31は、DC34を制御し、記録部13−1または13−2に記録されているデータおよびプログラムを読み出させ、DMAC33を制御し、メインメモリ12にロードさせて、一時的に記憶させる。メインプロセッサ31は、メインメモリ12からデータおよびプログラムを読み込み、読み込んだデータおよびプログラムをもとに、情報処理装置1の各種の処理を実行する。また、メインプロセッサ31は、記録部13−1または13−2に記録されているデータおよびプログラムだけでなく、図示せぬ他の情報処理装置からネットワークを介して通信部18で受信されたセルに含まれるプログラムやデータも、メインメモリ12にロードする。
メインプロセッサ31は、ネットワークを介して接続されている、他の情報処理装置に分散処理を実行させる場合、操作入力部15を介して要求された処理を実行するために必要なデータおよびプログラムを含むソフトウェアセルを生成し、生成したソフトウェアセルをバス36およびバス14を介して、通信部18に供給する。
サブプロセッサ32−1乃至サブプロセッサ32−4は、メインプロセッサ31の制御の下、並列的かつ独立に、プログラムを実行し、データを処理する。なお、必要に応じて、メインプロセッサ31が実行するプログラムは、サブプロセッサ32−1乃至サブプロセッサ32−4のそれぞれが実行するプログラムのそれぞれと連携して動作するように構成することも可能である。
サブプロセッサ32−1乃至サブプロセッサ32−4のそれぞれは、ローカルストレージ42−1乃至ローカルストレージ42−4のそれぞれを備える。サブプロセッサ32−1乃至サブプロセッサ32−4のそれぞれは、ローカルストレージ42−1乃至ローカルストレージ42−4のそれぞれに、必要に応じて、データおよびプログラムを一時的に記憶させる。サブプロセッサ32−1乃至サブプロセッサ32−4のそれぞれは、ローカルストレージ42−1乃至ローカルストレージ42−4のそれぞれからデータおよびプログラムを読み込み、読み込んだデータおよびプログラムをもとに、各種の処理を実行する。
以下、サブプロセッサ32−1乃至サブプロセッサ32−4のそれぞれを個々に区別する必要のないとき、単にサブプロセッサ32と称する。同様に、以下、ローカルストレージ42−1乃至ローカルストレージ42−4のそれぞれを個々に区別する必要のないとき、単にローカルストレージ42と称する。なお、情報処理装置1においては、4つのサブプロセッサ32により構成されているが、接続される数は任意である。
DMAC33は、キー管理テーブル記憶部35に記録されている、メインプロセッサキー、サブプロセッサキー、およびアクセスキーをもとに、メインプロセッサ31およびサブプロセッサ32からのメインメモリ12に記憶されているプログラムおよびデータへのアクセスを管理する。DC34は、メインプロセッサ31およびサブプロセッサ32からの記録部13−1および13−2などへのアクセスを行う。
キー管理テーブル記憶部35は、メインプロセッサキー、サブプロセッサキー、およびアクセスキーを記録している。なお、メインプロセッサキー、サブプロセッサキー、およびアクセスキーの詳細は後述する。
メインメモリ12は、例えば、DRAM(Dynamic Random Access Memory)などにより構成される。メインメモリ12は、メインプロセッサ31およびサブプロセッサ32が実行する各種のプログラムおよびデータを一時的に記憶する。
記録部13−1および13−2は、それぞれ、例えば、ハードディスクなどにより構成される。記録部13−1および記録部13−2は、メインプロセッサ31およびサブプロセッサ32が実行する各種のプログラムおよびデータを記録している。また、記録部13−1および記録部13−2は、情報処理コントローラ11から供給されたデータを記録する。以下、記録部13−1および13−2を個々に区別する必要のないとき、単に記録部13と称する。
なお、記録部13は、固定ディスクやリムーバブルディスクなどのハードディスクだけでなく、例えば、Blu-ray Disc、CD−RW(Compact Disk ReWritable)、DVD±RW(Digital Versatile Disk ReWritable)などの光ディスク、磁気ディスク(フレキシブルディスクを含む)、を含む)、光磁気ディスク(MD(Mini-Disk)(商標)を含む)、もしくは半導体メモリなどにより構成されるようにしてもよい。
また、情報処理コントローラ11には、バス14を介して、操作入力部15、入力部16、出力部17、通信部18、ドライブ19が接続されている。操作入力部15は、キーボード、マウスなどからなり、ユーザの操作に応じた指示信号を、情報処理コントローラ11に供給する。入力部16は、音声を集音し、音声データとして、情報処理コントローラ11に供給するマイクロフォンや、被写体を撮像し、撮像により得られた映像に対応する映像データを情報処理コントローラ11に供給する撮像部などにより構成される。出力部17は、例えば、ディスプレイ、スピーカ、およびランプなどよりなり、情報処理コントローラ11から供給されたデータを出力する。
通信部18は、情報処理コントローラ11から供給されたソフトウェアセルを、ネットワークを介して他の情報処理装置宛てに送信する。また、通信部18は、他の情報処理装置からネットワークを介して送信されてきたデータを、バス14を介して、情報処理コントローラ11に供給する。
ドライブ19は、磁気ディスク51、光ディスク52、光磁気ディスク53、あるいは半導体メモリ54などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて、バス14を介して、情報処理コントローラ11に転送され、情報処理コントローラ11によって、記録部13に記録される。
次に、図2乃至図4を参照して、サブプロセッサ32がメインメモリ12にアクセスする場合の処理について説明する。
図2で示されるように、メインメモリ12には、複数のアドレスを指定できるメモリロケーションが配置される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、F/Eビット、サブプロセッサIDおよびLSアドレス(ローカルストレージアドレス)を含む。また、各メモリロケーションには、後述するアクセスキーが割り振られる。
“0”であるF/Eビットは、サブプロセッサ32によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーションから読み出し不可であることを示す。また、“0”であるF/Eビットは、そのメモリロケーションにデータ書き込み可能であることを示し、データが書き込まれると、F/Eビットは“1”に設定される。
“1”であるF/Eビットは、そのメモリロケーションのデータがサブプロセッサ32によって読み出されておらず、未処理の最新データであることを示す。F/Eビットが“1”であるメモリロケーションのデータは読み出し可能であり、サブプロセッサ32によって読み出されてから、F/Eビットは“0”に設定される。また、“1”であるF/Eビットは、メモリロケーションがデータ書き込み不可であることを示す。
さらに、F/Eビットが“0”(読み出し不可/書き込み可)である状態において、メモリロケーションについて読み出し予約を設定することが可能である。F/Eビットが“0”であるメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ32は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報としてサブプロセッサ32のサブプロセッサIDおよびLSアドレスを書き込む。そして、データを書き込むサブプロセッサ32によって、読み出し予約されたメモリロケーションにデータが書き込まれ、F/Eビットが“1”(読み出し可/書き込み不可)に設定されたとき、あらかじめ読み出し予約情報として追加セグメントに書き込まれているサブプロセッサIDおよびLSアドレスによって特定されるローカルストレージ42に読み出される。
複数のサブプロセッサ32によってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出しおよび書き込みを制御することによって、前段階の処理を行うサブプロセッサ32が、処理済みのデータをメインメモリ12における所定のアドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ32が前処理後のデータを読み出すことが可能となる。
また、図3で示されるように、サブプロセッサ32のローカルストレージ42は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含む。
サブプロセッサ32がメインメモリ12に記憶されているデータをサブプロセッサ32のローカルストレージ42のメモリロケーションに読み出すときには、対応するビジービットを“1”に設定して予約する。ビジービットが“1”であるメモリロケーションには、他のデータを格納することができない。ローカルストレージ42のメモリロケーションにデータが読み出されると、ビジービットは“0”に設定され、他のデータを格納することができるようになる。
さらに、図2で示すように情報処理コントローラ11に接続されているメインメモリ12には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ12内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ32に割り当てられ、割り当てられたサブプロセッサ32が排他的に使用することができる。すなわち、サブプロセッサ32は、割り当てられたサンドボックスを使用できるが、この領域を超えてデータにアクセスすることはできない。
メインメモリ12は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
さらに、メインメモリ12の排他的な制御を実現するために、図4で示されるキー管理テーブルが用いられる。キー管理テーブルは、キー管理テーブル記憶部35に記録され、DMAC33と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサID、サブプロセッサキーおよびキーマスクが含まれる。
サブプロセッサ32がメインメモリ12にアクセスする場合、サブプロセッサ32はDMAC33に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、サブプロセッサ32を特定するサブプロセッサIDおよびアクセス要求先であるメインメモリ12のアドレスが含まれる。
DMAC33は、サブプロセッサ32から供給されたコマンドを実行する場合、キー管理テーブルを参照して、アクセス要求元のサブプロセッサ32のサブプロセッサキーを調べる。そして、DMAC33は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ12のメモリロケーションに割り振られたアクセスキーとを比較して、2つのキーが一致した場合にのみ、サブプロセッサ32から供給されたコマンドを実行する。
図4は、キー管理テーブルを説明する図である。キー管理テーブルに記録されているキーマスクは、その任意のビットが“1”になることによって、そのキーマスクと関連付けられたサブプロセッサキーの対応するビットを“0”または“1”にすることができる。
例えば、サブプロセッサキーが“1010”であるとする。通常、このサブプロセッサキーによって“1010”のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが“0001”に設定されている場合には、キーマスクのビットが“1”に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ(キーマスクのビットが“1”に設定された桁について、判定されず)、このサブプロセッサキー“1010”によってアクセスキーが“1010”または“1011”のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
以上のようにして、メインメモリ12のサンドボックスの排他性が実現される。すなわち、複数のサブプロセッサ32によってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサ32と、後段階の処理を行うサブプロセッサ32のみが、メインメモリ12の所定のアドレスにアクセスできるようになり、データを保護することができる。
例えば、キーマスクの値は、以下のように変更されることが考えられる。まず、情報処理装置1の起動直後においては、キーマスクの値は全て“0”である。メインプロセッサ31にロードされたプログラムが実行され、サブプロセッサ32にロードされたプログラムと連携動作するものとする。サブプロセッサ32−1により出力された処理結果データを、メインメモリ12に記憶させ、メインメモリ12に記憶させた処理結果データを、サブプロセッサ32−2に入力したいときには、サブプロセッサ32−1により出力された処理結果データを記憶しているメインメモリ12の領域は、サブプロセッサ32−1およびサブプロセッサ32−2からアクセス可能である必要がある。そのような場合に、メインプロセッサ31は、キーマスクの値を適切に変更し、複数のサブプロセッサ32からアクセスできるメインメモリの領域を設けることにより、サブプロセッサ32による多段階的の処理を可能にする。
より具体的には、例えば、他の情報処理装置などから送信されてきた、データを基に、サブプロセッサ32−1が所定の処理実行し、処理が施されたデータをメインメモリ12の第1の領域に記憶させる。そして、サブプロセッサ32−2は、メインメモリ12の第1の領域から、記憶されているデータを読み出し、読み出したデータを基に、所定の処理を実行し、処理が施されたデータをメインメモリ12の第1の領域とは、異なる第2の領域に記憶させる。
ここで、サブプロセッサ32−1のサブプロセッサキーが“0100”であり、メインメモリ12の第1の領域のアクセスキーが“0100”であり、サブプロセッサ32−2のサブプロセッサキーが“0101”であり、メインメモリ12の第2の領域のアクセスキーが“0101”である場合、サブプロセッサ32−2は、メインメモリ12の第1の領域にアクセスすることができない。そこで、サブプロセッサ32−2のキーマスクを“0001”にすることによって、サブプロセッサ32−2は、メインメモリ12の第1の領域にアクセスすることができるようになる。
なお、図2乃至図4においては、サブプロセッサ32がメインメモリ12にアクセスする場合について説明したが、メインプロセッサ31は、上述したサブプロセッサIDおよびサブプロセッサキーに対応する、メインプロセッサIDおよびメインプロセッサキーを有しており、メインプロセッサ31が、例えば、ローカルストレージ41で処理を行うために、メインメモリ12にアクセスする場合も同様な処理が実行される。
図5は、情報処理コントローラ11上で動作するソフトウェアモジュールの構成例を示している。なお、図5の例においては、AV(Audio Visual)再生または記録を実現するために必要最低限のモジュールのみが示されており、OS(オペレーティングシステム)やデバイスドライバなどの情報処理装置1上の基本的な動作を制御するモジュールは省略されている。
AV制御モジュール51は、メインプロセッサ31により実行されるものであり、音声または映像のコーディックモジュール54に対して、符号化または復号処理を要求し、要求した符号化または復号処理の結果を受け取った後に、音声および映像の同期を取って、再生、または記録を行う。また、AV制御モジュール51は、符号化または復号処理の要求とともに、後述する複数種類のコーディックモジュール54に優先度を付加する。
バス管理モジュール52は、メインプロセッサ31により実行されるものであり、メインプロセッサ31、サブプロセッサ32、およびDMAC33を介してメインメモリ12を接続するバス36を管理する。すなわち、バス管理モジュール52は、バス36に接続されている各部から、バス36に対するデータ送受信の要求を受け、データ送受信を制御するとともに、バス36のバス帯域を監視する。
サブプロセッサ管理モジュール53は、メインプロセッサ31により実行されるものであり、サブプロセッサ32を管理する。すなわち、サブプロセッサ管理モジュール53は、サブプロセッサ32への実行コード(サブ用モジュール62)をロードしたり、サブプロセッサ32が動作中であるか、または停止中であるかなどのサブプロセッサ32の状態を管理する。
コーディックモジュール54は、音声データまたは映像データのコーディック処理を行う。コーディックモジュール54は、例えば、図6に示されるように、映像データを復号するビデオ復号コーディックモジュール54−1、音声データを復号するオーディオ復号コーディックモジュール54−2、映像信号を符号化するビデオ符号化コーディックモジュール54−3、および音声信号を符号化するオーディオ符号化コーディックモジュール54−4など、情報処理装置1が搭載を必要とするコーディックの種類だけ存在する。
図6の例において、AV制御モジュール51は、ビデオ復号コーディックモジュール54−1、オーディオ復号コーディックモジュール54−2、ビデオ符号化コーディックモジュール54−3、およびオーディオ符号化コーディックモジュール54−4にそれぞれ優先度1乃至4を付加して、処理要求を行っている。なお、この処理要求は、操作入力部15を介して入力されるユーザからの指示信号などに基づいて行われる。
すなわち、AV制御モジュール51は、処理を要求した4つのコーディックモジュール54の中で、ビデオ復号コーディックモジュール54−1に、一番高い優先度を付加している。換言すると、ビデオ復号コーディックモジュール54−1が実行する処理が、情報処理装置1において最も重要視されており、AV制御モジュール51は、情報処理装置1内のリソースをビデオ復号コーディックモジュール54−1が優先的に利用することを許可している。
なお、図6のビデオ復号コーディックモジュール54−1、オーディオ復号コーディックモジュール54−2、ビデオ符号化コーディックモジュール54−3、およびオーディオ符号化コーディックモジュール54−4の構成は、コーディック処理部82における処理の対象(映像データ、音声データ)と、コーディック処理(符号化、復号)がそれぞれ異なるだけであり、図5のコーディックモジュール54と基本的に同様の構成である。したがって、以下、図5のコーディックモジュール54の構成は、図6のビデオ復号コーディックモジュール54−1、オーディオ復号コーディックモジュール54−2、ビデオ符号化コーディックモジュール54−3、またはオーディオ符号化コーディックモジュール54−4の構成としても適宜用いられる。
図5に戻って、コーディックモジュール54は、メインプロセッサ31により実行されるものであり、他のモジュール(AV制御モジュール51、バス管理モジュール52、またはサブプロセッサ管理モジュール53)からの要求を受け取ったり、後述するコーディック処理の処理構成設定(選択)処理などを行うメイン用モジュール61、および、サブプロセッサ32により実行され、実際に符号化処理や復号処理を行うサブ用モジュール62により構成される。
メイン用モジュール61は、処理構成設定部71、制御部72、およびサブプロセッサ用オブジェクトコード管理部73により構成される。
処理構成設定部71は、AV制御モジュール51から処理要求を受けると、バス管理モジュール52およびサブプロセッサ管理モジュール53に問い合わせを行うことにより、バス36およびサブプロセッサ32のリソース状況を受け、それらのリソース状況、またはAV制御モジュール51により付加されている優先度に基づいて、コーディック処理の処理構成を設定する。すなわち、処理構成設定部71は、コーディック処理の処理構成として、1のサブプロセッサ32のみによる構成、または複数のサブプロセッサ32によるパイプライン構成を選択、設定し、設定した処理構成を制御部72に供給する。
制御部72は、処理構成設定部71により設定された処理構成に応じたサブプロセッサ32のオブジェクトコードに関する情報を取得し、取得した情報に基づいて、サブプロセッサ32へのサブ用モジュール62のロードを、サブプロセッサ管理モジュール53に要求する。また、制御部72は、サブ制御部81とコマンド送受信を行い、データの受け渡しや、処理の開始または停止などを制御したり、AV制御モジュール51に、コーディック処理の結果などを送信する。
サブプロセッサ用オブジェクトコード管理部73は、各パイプライン構成を実現するためのサブプロセッサ32のオブジェクトコードに関する情報を保持している。サブプロセッサ32のオブジェクトコードに関する情報(以下、オブジェクトコード情報とも称する)は、例えば、オブジェクトコードが存在するメインメモリ12上のアドレスやサイズなどである。
サブ用モジュール62は、サブ制御部81およびコーディック処理部82により構成され、処理構成設定部71により設定される処理構成に応じて、1つのサブプロセッサ32、または複数のサブプロセッサ32により実行されるものである。
サブ制御部81は、制御部72とコマンド送受信などを行い、受信したコマンドに基づいて、コーディック処理部82を制御する。コーディック処理部82は、サブ制御部81の制御のもと、入力されるデータ(映像データまたは音声データ)を符号化、あるいは復号する処理を実行する。
次に、サブプロセッサ32における音声データのデコード(コーディック)処理を説明する。なお、以下、AAC(MPEG-2 Audio AAC(Advanced Audio Coding)により音声データを復号するオーディオ復号コーディックモジュール54−2を用いて説明する。
図7は、コーディック処理に対して、1つのサブプロセッサ32−1が割り当てられている場合(以下、1サブプロセッサ構成とも称する)を示している。すなわち、図7においては、処理構成設定部71により1のサブプロセッサ32のみによる処理構成が設定され、サブプロセッサ32−1によりオーディオ復号コーディックモジュール54−2のサブ用モジュール62が実行されることにより、実現される機能構成例が示されている。なお、サブ制御部81の図示は省略されている。
図7の例において、コーディック処理部82は、CR(Channel Reconstruction)処理部101およびFT(Frequency to Time)処理部102により構成される。
CR処理部101は、入力されるデータに対して、ハフマン符号復号処理と逆量子化処理(なお、以下、ハフマン符号復号処理と逆量子化処理をまとめてCR処理とも適宜称する)を実行する。FT処理部102は、CR処理部101により逆量子化されたデータに、スケールファクタ処理、ステレオ処理、TNS(Temporal Noise Shaping)処理、および逆MDCT演算処理(なお、以下、スケールファクタ処理、ステレオ処理、TNS処理、および逆MDCT演算処理をまとめてFT処理とも適宜称する)を実行する。すなわち、CR処理部101は、音声データを復号するコーディック(デコード)処理のうちのCR処理を実行し、FT処理部102は、音声データを復号するコーディック処理のうちのFT処理を実行する。
ローカルストレージ42−1は、各種データを蓄積するバッファ111乃至115により構成されている。バッファ111は、メインメモリ12からDMAC33およびバス36を介して入力されるAAC形式で圧縮された1フレーム分の圧縮データを蓄積し、CR処理部101に入力する。
バッファ112は、CR処理部101によりCR処理が実行された周波数領域データを蓄積し、後段のFT処理部102に入力する。周波数領域データは、例えば、1024点の周波数サンプリングデータで構成される。
バッファ113は、メインメモリ12からDMAC33およびバス36を介して入力される前フレームの参照データを蓄積し、FT処理部102に入力する。前フレームの参照データとは、現在処理中の1つ前のフレームの時間領域サンプリングデータを表しており、1つ前のフレームのFT処理部102の処理によりメインメモリ12に書き出されている。この前フレームの参照データは、FT処理部102による逆MDCT処理に用いられる。
バッファ114は、FT処理部102によりFT処理が実行されて出力される次フレームの参照データを蓄積し、バス36およびDMAC33を介してメインメモリ12に出力する。次フレームの参照データは、現在処理中の1つ後のフレームのFT処理部102による逆MDCT処理に用いられる。
バッファ115は、FT処理部102により復号されたPCM(Pulse Code Modulation)データを蓄積し、バス36およびDMAC33を介してメインメモリ12に出力する。PCMデータは、FT処理部102によりスケールファクタ処理、ステレオ処理、TNS処理、および逆MDCT演算処理が実行され、復号された1024点の時間領域データである。
メインメモリ12は、図2乃至図4を参照して上述したので、その詳細な説明は省略するが、複数のメモリロケーション121(図7の場合、メモリロケーション121−1および121−2)が配置されており、各メモリロケーション121には、追加セグメント122(図7の場合、追加セグメント122−1および122−2)がそれぞれ割り振られ、排他性が実現されている。
1サブプロセッサ構成の音声データのデコード処理について、具体的に説明する。メインメモリ12からの1フレームの圧縮データは、バッファ111に一旦蓄積され、バッファ111を介して、CR処理部101に入力される。CR処理部101は、CR処理を実行して、周波数領域データを生成し、生成した周波数領域データをバッファ112に一旦蓄積するとともに、FT処理部102に処理の終了を通知する。
また、バッファ113には、FT処理部102の制御のもと、DMAC33により、メインメモリ12のメモリロケーション121−1から読み出された前フレームの参照データが蓄積されている。なお、このとき、DMAC33は、FT処理部102の制御のもと、追加セグメント122−1のF/Eビットを読み出し、追加セグメント122−1の値が“1”であれば、そのメモリロケーション121−1のデータがまだ読み出されておらず、未処理の最新データであるとして、書き込まれているデータ(前フレームの参照データ)を読み出す。そして、読み出した前フレームの参照データが、バッファ113に蓄積されると、DMAC33は、FT処理部102の制御のもと、追加セグメント122−2のF/Eビットに“0”を書き込む。これにより、次のフレームの処理の際に、メモリロケーション121−1に、データを書き込むことが可能になる。
FT処理部102は、CR処理部101からの通知を受けると、バッファ112から周波数領域データを入力し、バッファ113から前フレームの参照データを入力する。FT処理部102は、バッファ112から入力した周波数領域データに、スケールファクタ処理、ステレオ処理、およびTNS処理を実行する。
その後、FT処理部102は、上記処理が実行されたデータに、バッファ113から入力した前フレームの参照データを用いて、逆MDCT演算処理を実行して、その結果得られる次フレームの参照データおよびPCMデータを、それぞれバッファ114および115に一旦蓄積させる。バッファ114およびバッファ115に蓄積された次フレームの参照データおよびPCMデータは、バス36およびDMAC33を介してメインメモリ12のメモリロケーション121−2および図示せぬ他のメモリロケーション121にそれぞれ書き出される。
なお、このとき、DMAC33は、FT処理部102の制御のもと、追加セグメント122−2のF/Eビットを読み出し、追加セグメント122−2の値が“0”であれば、サブプロセッサ32によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーション121−2から読み出し不可であり、書き込み可能であるとし、バッファ114に蓄積された次フレームの参照データを、メモリロケーション121−2に書き出す。そして、データがメモリロケーション121−2に書き込まれると、DMAC33は、FT処理部102の制御のもと、追加セグメント122−2のF/Eビットに“1”を書き込む。これにより、次のフレームの処理の際に、メモリロケーション121−2から、データを読み出すことが可能になる。
なお、繰り返しになるので、その説明は省略するが、バッファ115に蓄積されたPCMデータも同様に、メインメモリ12の他のメモリロケーション121に書き出される。
次に、図8および図9を参照して、図7のサブプロセッサ32−1において実行される処理およびデータの流れについて詳しく説明する。
なお、図8および図9の例において、横軸は、時間の経過を表し、CR処理(CR)131は、CR処理部101が実行するCR処理を表し、FT処理(FT)132は、FT処理部102が実行するFT処理を表し、各処理に付加された符号の枝番は、処理回数(何フレーム目の処理であるか)を表している。すなわち、CR処理131−1は、1フレーム目のCR処理を表し、CR処理131−2は、2フレーム目のCR処理を表し、CR処理131−3は、3フレーム目のCR処理を表している。また、FT処理132−1は、1フレーム目のFT処理を表し、FT処理132−2は、2フレーム目のFT処理を表し、FT処理132−3は、3フレーム目のFT処理を表している。
図8は、図7の1サブプロセッサ構成の場合のサブプロセッサ32−1における処理の流れを示している。なお、CR処理131とFT処理132には、空間が示されていないが、FT処理132の後、CR処理131の開始までに示されるわずかな空間(時間)は、メインメモリ12への参照データなどのデータの読み書きにかかる時間を表している。
図8の例の場合、サブプロセッサ32−1においては、1フレーム目のCR処理131−1が実行され、CR処理131−1の後、1フレーム目のFT処理132−1が実行され、FT処理132−1の後、2フレーム目のCR処理131−2が実行されている。また、CR処理131−2の後、2フレーム目のFT処理132−2が実行され、FT処理132−2の後、3フレーム目CR処理131−3が実行され、CR処理131−3の後、3フレーム目のFT処理132−3が実行されている。
以上のように、1サブプロセッサ構成の場合、1つのサブプロセッサ32−1において、CR処理とFT処理が順番に処理される。
図9は、図7の1サブプロセッサ構成の場合のサブプロセッサ32−1におけるデータの流れを示している。
図9の例の場合、サブプロセッサ32−1に、1フレーム目の圧縮データ151−1が入力されると、CR処理131−1とFT処理132−1が続いて実行され、その結果、1フレーム目の参照データ152−1および1フレーム目のPCMデータ153−1が得られ、得られた1フレーム目の参照データ152−1は、2フレーム目のFT処理132−2で用いられる。
サブプロセッサ32−1に、2フレーム目の圧縮データ151−2が入力されると、CR処理131−2と、1フレーム目の参照データ152−1を用いたFT処理132−2が続いて実行され、その結果、2フレーム目の参照データ152−2および2フレーム目のPCMデータ153−2が得られ、得られた2フレーム目の参照データ152−2は、3フレーム目のFT処理132−3で用いられる。
サブプロセッサ32−1に、3フレーム目の圧縮データ151−3が入力されると、CR処理131−3と、2フレーム目の参照データ152−2を用いたFT処理132−3が続いて実行され、その結果、3フレーム目の参照データ152−3および3フレーム目のPCMデータ153−3が得られ、得られた3フレーム目の参照データ152−3は、図示せぬ4フレーム目のFT処理で用いられる。
以上のように、1サブプロセッサ構成の場合(すなわち、複数のサブプロセッサ32からなるパイプライン構成ではない場合)、1のサブプロセッサ32−1において、CR処理とFT処理が順番に処理され、FT処理で用いられる前のフレームの参照データは、前フレームのFT処理により取得される。すなわち、1サブプロセッサ構成の場合、データも順番に取得され、処理されていく。
図10は、音声データのデコード(コーディック)処理に対して、2つのサブプロセッサが割り当てられ、パイプライン構成171が構成されている場合のサブプロセッサの機能構成例を示している。すなわち、図10の例においては、処理構成設定部71により複数(いまの場合、2)のサブプロセッサ32−1および32−2によるパイプライン構成171が設定され、サブプロセッサ32−1および32−2によりオーディオ復号コーディックモジュール54−2のサブ用モジュール62が実行されることで、実現される機能構成例が示されている。
なお、図10のパイプライン構成171において、サブプロセッサ32−1と同様の構成をしたサブプロセッサ32−2が追加された点を除いて、その他の構成は、上述した図7の1のサブプロセッサ32−1のみによる処理構成の場合と同様の構成であり、図7における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので省略する。
また、図10の例において、サブプロセッサ32−2およびローカルストレージ42−2の構成は、サブプロセッサ32−1およびローカルストレージ42−1の構成と基本的に同様の構成であり、その図示および説明は省略されている。すなわち、図10パイプライン構成171は、図7のサブプロセッサ32−1が2台で構成されており、サブプロセッサ32−1および32−2により、フレーム順に交互に並行して音声データのデコード処理が実行される。
したがって、図10の例の場合、メインメモリ12からの1フレームの圧縮データは、サブプロセッサ32−1のバッファ111に一旦入力され、バッファ111から、CR処理部101に入力される。CR処理部101は、CR処理を実行して、周波数領域データを生成し、生成した周波数領域データをバッファ112に一旦蓄積するとともに、FT処理部102に処理の終了を通知する。
また、サブプロセッサ32−1のバッファ113には、FT処理部102の制御のもと、DMAC33により、メインメモリ12のメモリロケーション121−1から読み出された前フレームの参照データが蓄積されている。なお、この前フレームの参照データは、サブプロセッサ32−2のFT処理部102の1つ前のFT処理時に書き出されたものである。
サブプロセッサ32−1のFT処理部102は、CR処理部101からの通知を受けると、バッファ112から周波数領域データを入力し、バッファ113から前フレームの参照データを入力する。FT処理部102は、バッファ112から入力した周波数領域データに、スケールファクタ処理、ステレオ処理、およびTNS処理を実行する。
その後、サブプロセッサ32−1のFT処理部102は、バッファ113から入力した前フレームの参照データを用いて、上記処理が実行されたデータに、逆MDCT演算処理を実行して、その結果得られる次フレームの参照データおよびPCMデータを、それぞれバッファ114および115に一旦蓄積させる。バッファ114およびバッファ115に蓄積された次フレームの参照データおよびPCMデータは、バス36およびDMAC33を介してメインメモリ12のメモリロケーション121−2および図示せぬ他のメモリロケーション121にそれぞれ書き出される。
したがって、サブプロセッサ32−1により、メインメモリ12のメモリロケーション121−2に書き込まれた次フレームの参照データは、サブプロセッサ32−2のFT処理部102による次のフレームのFT処理時に読み出され、使用される。
すなわち、次のフレームの処理の際には、メインメモリ12からの1フレームの圧縮データは、サブプロセッサ32−2のバッファ111に一旦入力され、バッファ111から、CR処理部101に入力される。CR処理部101は、CR処理を実行して、周波数領域データを生成し、生成した周波数領域データをバッファ112に一旦蓄積するとともに、FT処理部102に処理の終了を通知する。
また、サブプロセッサ32−2のバッファ113には、FT処理部102の制御のもと、DMAC33により、メインメモリ12のメモリロケーション121−2から読み出された前フレーム(前回における次フレーム)の参照データが蓄積されている。なお、この前フレームの参照データは、サブプロセッサ32−1のFT処理部102の1つ前のFT処理時により書き出されたものである。
サブプロセッサ32−2のFT処理部102は、CR処理部101からの通知を受けると、バッファ112から周波数領域データを入力し、バッファ113から前フレームの参照データを入力する。FT処理部102は、バッファ112から入力した周波数領域データに、スケールファクタ処理、ステレオ処理、およびTNS処理を実行する。
その後、サブプロセッサ32−2のFT処理部102は、バッファ113から入力した前フレームの参照データを用いて、上記処理が実行されたデータに、逆MDCT演算処理を実行して、その結果得られる次フレームの参照データおよびPCMデータを、それぞれバッファ114および115に一旦蓄積させる。バッファ114およびバッファ115に蓄積された次フレームの参照データおよびPCMデータは、バス36およびDMAC33を介してメインメモリ12の図示せぬメモリロケーション121にそれぞれ書き出される。
したがって、サブプロセッサ32−2により、メインメモリ12の図示せぬメモリロケーション121に書き込まれた次フレームの参照データは、サブプロセッサ32−1のFT処理部102による次のフレームのFT処理時に読み出され、使用される。
次に、図11および図12を参照して、図10のパイプライン構成171において実行される処理およびデータの流れについて詳しく説明する。なお、図11および図12において、図8および図9における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので省略する。
図11は、図10のパイプライン構成171(サブプロセッサ32−1およびサブプロセッサ32−2)における処理の流れを示している。
図11の例の場合、サブプロセッサ32−1においては、1フレーム目のCR処理131−1が実行され、CR処理131−1の後、1フレーム目のFT処理132−1が実行されている。サブプロセッサ32−1における1フレーム目のFT処理132−1と並行して、サブプロセッサ32−2においては、2フレーム目のCR処理131−2が実行され、CR処理131−2の後、2フレーム目のFT処理132−2が実行されている。
また、サブプロセッサ32−2における2フレーム目のFT処理132−2と並行して、サブプロセッサ32−1においては、3フレーム目のCR処理131−3が実行され、CR処理131−3の後、3フレーム目のFT処理132−3が実行されている。サブプロセッサ32−1における3フレーム目のFT処理132−3と並行して、サブプロセッサ32−2においては、4フレーム目のCR処理131−4が実行され、CR処理131−4の後、4フレーム目のFT処理132−4が実行されている。
さらに、サブプロセッサ32−2における4フレーム目のFT処理132−4と並行して、サブプロセッサ32−1においては、5フレーム目のCR処理131−5が実行され、CR処理131−5の後、5フレーム目のFT処理132−5が実行されている。サブプロセッサ32−1における5フレーム目のFT処理132−5と並行して、サブプロセッサ32−2においては、6フレーム目のCR処理131−6が実行され、CR処理131−6の後、6フレーム目のFT処理132−6が実行されている。
以上のように、パイプライン構成171による処理の場合、サブプロセッサ32−1および32−2においては、CR処理およびFT処理からなる1フレームのコーディック処理が、フレーム毎に交互に順番に実行される。
図12は、図10のパイプライン構成171(サブプロセッサ32−1およびサブプロセッサ32−2)におけるデータの流れを示している。
図12の例の場合、サブプロセッサ32−1に、1フレーム目の圧縮データ151−1が入力されると、サブプロセッサ32−1は、CR処理131−1とFT処理132−1を続いて実行し、その結果、1フレーム目の参照データ152−1および1フレーム目のPCMデータ153−1を取得する。そして、取得された1フレーム目の参照データ152−1は、2フレーム目のFT処理132−2を行うサブプロセッサ32−2により用いられる。
サブプロセッサ32−1によるFT処理132−1の実行と並行して、サブプロセッサ32−2に、2フレーム目の圧縮データ151−2が入力されると、サブプロセッサ32−2は、CR処理131−2を実行し、CR処理131−2の後、サブプロセッサ32−1により取得された1フレーム目の参照データ152−1を用いて、FT処理132−2を実行し、その結果、2フレーム目の参照データ152−2および2フレーム目のPCMデータ153−2を取得する。そして、取得された2フレーム目の参照データ152−2は、3フレーム目のFT処理132−3を行うサブプロセッサ32−1により用いられる。
サブプロセッサ32−2によりFT処理132−2が実行されている最中に、3フレーム目の圧縮データ151−3が入力されると、サブプロセッサ32−1は、CR処理131−3を実行し、CR処理131−3の後、サブプロセッサ32−2により取得された2フレーム目の参照データ152−2を用いて、FT処理132−3を実行し、その結果、3フレーム目の参照データ152−3および3フレーム目のPCMデータ153−3を取得する。そして、取得された3フレーム目の参照データ152−3は、図示せぬ、4フレーム目のFT処理132−4を行うサブプロセッサ32−2により用いられる。
さらに、図13乃至図16を参照して、図10のパイプライン構成171において実行される処理を詳しく説明する。
図13乃至図16は、図10のパイプライン構成171で各フレームの処理が実行されている場合のサブプロセッサ32−1およびサブプロセッサ32−2における各処理部の状態を示している。なお、図13乃至図16において、サブプロセッサ32−1および32−2のCR処理部101、並びにFT処理部102を区別するために、それぞれ、CR処理部101−1および101−2、並びに、FT処理部102−1および102−2と称する。また、各処理部のハッチングは、各処理部が実行中であることを表しており、ハッチングがないものは、待機中であることを表している。
図13の例において、サブプロセッサ32−1のCR処理部101−1に1フレーム目の圧縮データ151−1が入力され、CR処理部101−1は、1フレーム目のCR処理を実行している。このとき、その他の処理部(サブプロセッサ32−1のFT処理部102−1、並びにサブプロセッサ32−2のCR処理部101−2およびFT処理部102−2)は、待機中の状態である。
図14の例において、サブプロセッサ32−1のCR処理部101−1は、1フレーム目のCR処理を完了し、待機状態となっており、このCR処理部101−1によるCR処理の完了に対応して、サブプロセッサ32−1のFT処理部102−1は、1フレーム目のFT処理を実行中の状態となっている。また、このとき、サブプロセッサ32−2のCR処理部101−2に、2フレーム目の圧縮データ151−2が入力され、CR処理部101−2は、2フレーム目のCR処理を実行中の状態となるが、FT処理部102−2は、まだ待機中の状態である。
図15の例において、サブプロセッサ32−1のFT処理部102−1は、1フレーム目のFT処理を完了し、1フレーム目の参照データ152−1およびPCMデータ153−1を出力して、待機状態となるが、CR処理部101−1に3フレーム目の圧縮データ151−3が入力され、CR処理部101−1は、3フレーム目のCR処理を実行中の状態となる。このとき、サブプロセッサ32−2のCR処理部101−2は、2フレーム目のCR処理を完了し、待機状態となっており、このCR処理部101−2によるCR処理の完了に対応して、サブプロセッサ32−2のFT処理部102−2は、サブプロセッサ32−1のFT処理部102−1からの1フレーム目の参照データ152−1を用いて、2フレーム目のFT処理を実行中の状態となる。
図16の例において、サブプロセッサ32−2のFT処理部102−2は、2フレーム目のFT処理を完了し、2フレーム目の参照データ152−2およびPCMデータ153−2を出力すると、待機状態となるが、CR処理部101−2に4フレーム目の圧縮データ151−4が入力され、CR処理部101−2は、4フレーム目のCR処理を実行中の状態となる。このとき、サブプロセッサ32−1のCR処理部101−1は、3フレーム目のCR処理を完了し、待機状態となっており、このCR処理部101−1によるCR処理の完了に対応して、サブプロセッサ32−1のFT処理部102−1は、サブプロセッサ32−2のFT処理部102−2からの2フレーム目の参照データ152−2を用いて、3フレーム目のFT処理を実行中の状態となる。
以上のように、パイプライン構成171による処理の場合、サブプロセッサ32−1においては、サブプロセッサ32−2が実行したFT処理により得られる前フレームの参照データが用いられて、次フレームのFT処理が実行される。これに対して、サブプロセッサ32−2においては、サブプロセッサ32−1が実行したFT処理により得られる前フレームの参照データが用いられて、次フレームのFT処理が実行される。すなわち、パイプライン構成171による処理の場合、サブプロセッサ32−1および32−2においては、CR処理およびFT処理からなる一連の音声データのデコード処理が、1処理(CR処理またはFT処理の)分ずらして並行に、かつ、フレーム毎に交互に順番に実行される。
したがって、パイプライン構成171による処理の場合においては、2つのサブプロセッサ32により、2フレームの処理が、1処理(CR処理またはFT処理の)分ずらして並行で実行されるので、図7の1のサブプロセッサ構成の場合(すなわち、パイプライン構成ではない場合)よりも、コーディック処理の高速化を図ることができる。
図17は、音声データのデコード(コーディック)処理に対して、2つのサブプロセッサが割り当てられ、パイプライン構成191が構成されている場合のサブプロセッサの機能構成例を示している。
図17の例においては、処理構成設定部71により2のサブプロセッサ32−1および32−2によるパイプライン構成191が設定され、サブプロセッサ32−1および32−2によりオーディオ復号コーディックモジュール54−2のサブ用モジュール62が実行されることで、実現される機能構成例が示されている。なお、図17の例において、図7または図10における場合と対応する部分には対応する符号を付してあり、その説明は繰り返しになるので省略する。
図17の例の場合、コーディック処理部82のうちのCR処理部101は、サブプロセッサ32−1において実行されることで実現されており、コーディック処理部82のうちのFT処理部102は、サブプロセッサ32−2において実行されることで実現されている。
すなわち、サブプロセッサ32−1においては、CR処理部101しか実行されず、また、サブプロセッサ32−2においては、FT処理部102しか実行されない。したがって、1フレームのCR処理とFT処理が一連で実行されるサブプロセッサ32よりも、各処理しか実行されないサブプロセッサ32の方が、ローカルストレージ42の空き容量が増えるため、例えば、ループを展開させたり、計算結果を予め蓄積させたりして、各処理をそれぞれのサブプロセッサ用に最適化することができる。図17の例の場合、CR処理をサブプロセッサ32−1用に最適化することができ、また、FT処理をサブプロセッサ32−2用に最適化することができる。
サブプロセッサ32−1で実行されるCR処理部101に対応して、ローカルストレージ42−1は、メインメモリ12からDMAC33およびバス36を介して入力される1フレーム分の圧縮データを蓄積し、CR処理部101に入力するバッファ111、並びに、CR処理部101によりCR処理が実行された周波数領域データを蓄積し、バス36およびDMAC33を介してメインメモリ12に出力するバッファ211により構成される。
また、サブプロセッサ32−2で実行されるFT処理部102に対応して、ローカルストレージ42−2は、メインメモリ12からDMAC33およびバス36を介して入力される周波数領域データを蓄積し、FT処理部102に入力するバッファ212、メインメモリ12からDMAC33およびバス36を介して入力される前フレームの参照データを蓄積し、FT処理部102に入力するバッファ113、FT処理部102によりFT処理が実行されて出力される次フレームの参照データを蓄積し、バス36およびDMAC33を介してメインメモリ12に出力するバッファ114、並びに、FT処理部102により復号されたPCMデータを蓄積し、バス36およびDMAC33を介してメインメモリ12に出力するバッファ115により構成される。
以上のように、パイプライン構成191においては、図10のパイプライン構成171の場合よりも、バス36およびDMAC33を介して、メインメモリ12に書き込まれたり、読み出されるデータが周波数領域データの分だけ多くなってしまう。
図17のメインメモリ12は、図7のメインメモリ12のメモリロケーション121−1および121−2に加えて、メモリロケーション221が配置され、メモリロケーション121−1の追加セグメント122−1やメモリロケーション121−2の122−2と同様に、メモリロケーション221には、追加セグメント222が割り振られている。
パイプライン構成191の音声データのデコード処理について具体的に説明する。メインメモリ12からの1フレームの圧縮データは、バッファ111に一旦蓄積され、バッファ111を介して、CR処理部101に入力される。CR処理部101は、CR処理を実行して、周波数領域データを生成し、生成した周波数領域データをバッファ211に一旦蓄積するとともに、FT処理部102に処理の終了を通知する。
また、バッファ211に蓄積された周波数領域データは、バス36およびDMAC33を介してメインメモリ12のメモリロケーション222に書き出される。
なお、このとき、図7を参照して上述した追加セグメント122−1および122−2の場合と同様に、DMAC33は、CR処理部101の制御のもと、追加セグメント222のF/Eビットを読み出し、追加セグメント222の値が“0”であれば、メモリロケーション221のデータが、サブプロセッサ32−2によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーション221から読み出し不可であり、書き込み可能であるとし、バッファ211に蓄積された周波数領域データを、メモリロケーション221に書き出す。そして、データがメモリロケーション211に書き込まれると、DMAC33は、CR処理部101の制御のもと、追加セグメント222のF/Eビットに“1”を書き込む。これにより、サブプロセッサ32−2は、メモリロケーション221から、データを読み出すことが可能になる。
したがって、DMAC33は、FT処理部102の制御のもと、追加セグメント222のF/Eビットを読み出し、追加セグメント222の値が“1”であれば、そのメモリロケーション221のデータがまだ読み出されておらず、未処理の最新データであるとし、書き込まれている周波数領域データを読み出す。これにより、バッファ212には、DMAC33により、メインメモリ12のメモリロケーション221から読み出された周波数領域データが蓄積される。なお、読み出した周波数領域データが、バッファ212に蓄積されると、DMAC33は、FT処理部102の制御のもと、追加セグメント222のF/Eビットに“0”を書き込む。これにより、サブプロセッサ32−1は、メモリロケーション221に、データを書き込むことが可能になる。
また、バッファ113には、図7を参照して上述した場合と同様に、FT処理部102の制御のもと、DMAC33により、メインメモリ12のメモリロケーション121−1から読み出された前フレームの参照データが蓄積されている。
サブプロセッサ32−2のFT処理部102は、CR処理部101からの通知を受けると、バッファ212から周波数領域データを入力し、バッファ113から前フレームの参照データを入力すると、バッファ212から入力した周波数領域データに、スケールファクタ処理、ステレオ処理、およびTNS処理を実行し、バッファ113から入力した前フレームの参照データを用いて、上記処理が実行されたデータに、逆MDCT演算処理を実行して、その結果得られる次フレームの参照データおよびPCMデータを、それぞれバッファ114および115に一旦蓄積させる。
バッファ114およびバッファ115に蓄積された次フレームの参照データおよびPCMデータは、バス36およびDMAC33を介してメインメモリ12のメモリロケーション121−2および図示せぬ他のメモリロケーションにそれぞれ書き出される。
図18は、パイプライン構成191(サブプロセッサ32−1およびサブプロセッサ32−2)における処理の流れを示している。なお、図18の例においては、図11のパイプライン構成171における処理の流れと比較することにより、図17のパイプライン構成191の処理の流れを説明する。
図18においては、図11のパイプライン構成171における処理の流れと比較するために、図中、パイプライン構成171の下部に、パイプライン構成191における処理の流れが示されている。
パイプライン構成191において、CR処理(CR)231は、サブプロセッサ32−1のCR処理部101が実行するCR処理を表し、FT処理(FT)232は、FT処理部102が実行するFT処理を表し、各処理に付加された符号の枝番は、処理回数(何フレーム目の処理であるか)を表している。
すなわち、パイプライン構成171においては、図11を参照して上述したように、サブプロセッサ32−1においては、1フレーム目のCR処理131−1が実行され、CR処理131−1の後、1フレーム目のFT処理132−1が実行される。サブプロセッサ32−1における1フレーム目のFT処理132−1と並行して、サブプロセッサ32−2においては、2フレーム目のCR処理131−2が実行され、CR処理131−2の後、2フレーム目のFT処理132−2が実行されるというように、サブプロセッサ32−1および32−2においては、CR処理131およびFT処理132が連続して、フレーム毎に交互に順番に実行されている。
これに対して、パイプライン構成191においては、サブプロセッサ32−1においては、1フレーム目のCR処理231−1が実行され、CR処理231−1の後、2フレーム目のCR処理231−2が実行される。そして、サブプロセッサ32−1において、CR処理231−1の後、2フレーム目のCR処理231−2が実行されているときに、サブプロセッサ32−2においては、1フレーム目のFT処理232−1が実行される。
サブプロセッサ32−1において、2フレーム目のCR処理231−2の後、3フレーム目のCR処理231−3が実行されるときに、サブプロセッサ32−2においては、2フレーム目のFT処理232−2が実行される。同様に、サブプロセッサ32−1において、3フレーム目のCR処理231−3の後、4フレーム目のCR処理231−4が実行されるときに、サブプロセッサ32−2においては、3フレーム目のFT処理232−3が実行される。
なお、以下、5乃至8フレーム目や、8フレーム目以降においても、同じであるため、その説明を省略する。
ここで、図18の例においては、パイプライン構成171のCR処理131よりも、パイプライン構成191のCR処理231の方が、時間方向の大きさが小さく示され、同様に、パイプライン構成171のFT処理132よりも、パイプライン構成191のFT処理232の方が、時間方向の大きさが小さく示されているように、パイプライン構成171のCR処理131よりも、パイプライン構成191のCR処理231の方が、処理時間が早く、パイプライン構成171のFT処理132よりも、パイプライン構成191のFT処理232の方が、処理時間が早い。
すなわち、これは、パイプライン構成191のサブプロセッサ32−1においては、CR処理部101しか実行されず、また、パイプライン構成191のサブプロセッサ32−2においては、FT処理部102しか実行されないため、CR処理とFT処理が続けて実行されるパイプライン構成171のサブプロセッサ32よりも、ローカルストレージ42の空き容量が増え、例えば、関数のインライン展開やループアンロールを行ったり、sinやcosなどの処理量の多い数学関数の計算結果を予め展開しておくというように、CR処理をサブプロセッサ32−1用に最適化することができ、また同様に、FT処理をサブプロセッサ32−2用に最適化することができるからである。これにより、パイプライン構成191においては、各処理の高速化が図られるため、パイプライン構成171よりも処理時間を短くすることができる。
また、パイプライン構成191においては、サブプロセッサ32−1におけるCR処理231−1とCR処理231−2の間、サブプロセッサ32−2におけるFT処理232−1とFT処理232−2の間、または、サブプロセッサ32−1におけるCR処理231−1とサブプロセッサ32−2におけるFT処理232−1との間に、わずかな空間(時間)が示されている。
この空間は、パイプライン構成191において、メインメモリ12への各データの読み書きにかかる時間も表している。すなわち、この空間は、パイプライン構成171でも必要なメインメモリ12への参照データなどの読み書きにかかる時間だけでなく、パイプライン構成191において、サブプロセッサ32−1とサブプロセッサ32−2との間で、周波数領域データを共用するために必要なメインメモリ12への周波数領域データの読み書きにかかる時間も表している。
したがって、パイプライン構成191を、パイプライン構成171と比較した場合、各サブプロセッサ32用に各処理が最適化され、高速化される反面、周波数領域データの分だけ、バス36およびDMAC33を介して、メインメモリ12に書き込まれたり、読み出されるデータ(バス使用量)が多くなり、読み書きにかかる時間がかかってしまう。
以上により、バス36のバス帯域を多く使用することができれば、周波数領域データの読み書きにかかる時間を少なくすることができるので、パイプライン構成171での処理よりもパイプライン構成191での処理の方を全体的に早くすることができる。
すなわち、バス使用量の増加分よりも各処理の最適化によって処理を高速にすることにより、パイプライン構成171での処理よりもパイプライン構成191での処理の方を全体的に早くすることができる。
次に、図19乃至図22を参照して、図17のパイプライン構成191において実行される処理を詳しく説明する。
図19乃至図22は、図17のパイプライン構成191で各フレームの処理が実行されている場合のサブプロセッサ32−1におけるCR処理部101、およびサブプロセッサ32−2におけるFT処理部102の状態を示している。なお、図19乃至図22において、各処理部のハッチングは、各処理部が実行中であることを表しており、ハッチングがないものは、待機中であることを表している。
図19の例において、サブプロセッサ32−1のCR処理部101に1フレーム目の圧縮データ151−1が入力され、CR処理部101は、1フレーム目のCR処理を実行している。一方、サブプロセッサ32−2のFT処理部102は、待機中の状態である。
図20の例において、サブプロセッサ32−1のCR処理部101は、1フレーム目のCR処理を完了した結果として、1フレーム目の周波数領域データ251−1を出力し、その後、2フレーム目の圧縮データ151−2が入力されるので、2フレーム目のCR処理を実行中の状態となる。一方、CR処理部101による1フレーム目のCR処理の完了に対応して、サブプロセッサ32−2のFT処理部102は、1フレーム目の周波数領域データ251−1を入力し、1フレーム目のFT処理を実行中の状態となる。
図21の例において、サブプロセッサ32−1のCR処理部101は、2フレーム目のCR処理を完了した結果として、2フレーム目の周波数領域データ251−2を出力し、その後、3フレーム目の圧縮データ151−3が入力されるので、3フレーム目のCR処理を実行中の状態となる。一方、サブプロセッサ32−2のFT処理部102は、1フレーム目のFT処理を完了した結果として、1フレーム目の参照データ152−1およびPCMデータ153−1を出力した後、CR処理部101による2フレーム目のCR処理の完了に対応して、2フレーム目の周波数領域データ251−2を入力し、前回のFT処理において出力した1フレーム目の参照データ152−1を用いて、2フレーム目のFT処理を実行中の状態となる。
図22の例において、サブプロセッサ32−1のCR処理部101は、3フレーム目のCR処理を完了した結果として、3フレーム目の周波数領域データ251−3を出力し、その後、4フレーム目の圧縮データ151−4が入力されるので、4フレーム目のCR処理を実行中の状態となる。一方、サブプロセッサ32−2のFT処理部102は、2フレーム目のFT処理を完了した結果として、2フレーム目の参照データ152−2およびPCMデータ153−2を出力した後、CR処理部101による3フレーム目のCR処理の完了に対応して、3フレーム目の周波数領域データ251−3を入力し、前回のFT処理において出力した2フレーム目の参照データ152−2を用いて、3フレーム目のFT処理を実行中の状態となる。
以上のように、パイプライン構成191による処理の場合、サブプロセッサ32−1においては、入力される圧縮データを用いてCR処理がフレームの順に実行され、一方、サブプロセッサ32−2においては、サブプロセッサ32−1のCR処理により得られる周波数領域データを用いて、さらに、前フレームのFT処理により得られる前フレームの参照データを用いて、FT処理がフレームの順に実行される。すなわち、パイプライン構成191による処理の場合、サブプロセッサ32−1におけるCR処理と、サブプロセッサ32−2におけるFT処理は、フレーム順番に並行して実行される。
以上より、パイプライン構成191による処理の場合においては、パイプライン構成171による処理の場合よりも、音声データのデコード処理の高速化を図ることができる。
次に、図23および図24を参照して、各処理構成におけるバス36の使用量を説明する。なお、図23および図24の例においては、入力されるデータが2チャンネル、サンプリングレートが48000kHzの場合の1秒分データあたりのバス36の使用量を説明する。
図23は、図7の1サブプロセッサ構成においてローカルストレージ42に蓄積される各データの容量を表している。
図23の例の場合、バッファ111に蓄積される1フレームの圧縮データは、およそ1536bytesとなり、バッファ112に蓄積される周波数領域データは、およそ8192bytesとなり、バッファ113に蓄積される前フレームの参照データは、およそ8192bytesとなり、バッファ114および115に蓄積される次フレームの参照データとPCMデータは、およそ16384bytesとなる。また、バッファ112の周波数領域データは、バス36に送出されない。
したがって、1サブプロセッサ構成のバス36の使用量Q1は、次の式(1)で表される。
Q1=(1536+8192+16384)*48000/1024
= 1224000 (Bytes/sec) =1.17(Mbytes/sec) ・・・(1)
なお、図10のパイプライン構成171のバス36の使用量Q2は、図7の1サブプロセッサ32構成のバス36の使用量Q1と、音声データのデコード処理を行うサブプロセッサ数が異なるだけであり、バス36の使用量は、基本的に同じとなる。
図24は、図17のパイプライン構成191において蓄積される各データの容量を表している。
図24の例の場合、バッファ111に蓄積される1フレームの圧縮データは、およそ1536bytesとなり、バッファ211およびバッファ212に蓄積される周波数領域データは、およそ8192bytesとなり、バッファ113に蓄積される前フレームの参照データは、およそ8192bytesとなり、バッファ114および115に蓄積される次フレームの参照データとPCMデータは、およそ16384bytesとなる。すなわち、バッファ211およびバッファ212に蓄積される周波数領域データが、バス36を経由して、メインメモリ12に書き出されたり、読み出されたりする点(図中、太線部分)が、図23の処理構成と異なる。
したがって、パイプライン構成191のバス36の使用量Q3は、次の式(2)で表される。
Q3=(1536+8192+8192+8192+16384)*48000/1024
= 1992000 (Bytes/sec) =1.9(Mbytes/sec) ・・・(2)
以上により、1サブプロセッサ構成、パイプライン構成171、およびパイプライン構成191におけるバス36の使用量は、図25に示されるように、それぞれ、1.17(Mbytes/sec),1.17(Mbytes/sec),および1.9(Mbytes/sec)となる。
ここで、1フレーム処理にかかる時間が短くなるほど、単位時間あたりのバス36の使用量は増加する。例えば、1サブプロセッサ構成と較べて、パイプライン構成191における1フレームが3倍早く処理が可能であるとすると、同じ時間内でのバス36の使用量は、次の式(3)で表される。
1.9(Mbytes/sec) ×3 / 1.17(Mbytes/sec) = 4.87 ・・・(3)
すなわち、1サブプロセッサ構成と較べて、パイプライン構成191におけるバス36の使用量は、4.87倍となってしまう。
以上により、音声データのリアルタイム再生などではなく、データをとにかく早くデコード(復号)したいなどの用途においては、バス36の帯域の量が多ければ、バス36の使用量が多いほうが有利になる。したがって、バス36の帯域の量に応じても、1サブプロセッサ構成、パイプライン構成171、およびパイプライン構成191などのどの処理構成になるかを設定することにより、情報処理装置1の状況において最適な処理構成を設定することが可能となる。
次に、図26のシーケンスチャートを参照して、情報処理装置1の音声データの再生処理を説明する。
例えば、ユーザは、情報処理装置1の操作入力部15を構成するマウスなどを操作し、例えば、記録部13に記録されている音声データの再生を指示する。操作入力部15は、ユーザの操作に応じた指示信号を、AV制御モジュール51に供給する。
AV制御モジュール51は、操作入力部15からの指示信号に応じて、ステップS11において、オーディオ復号コーディックモジュール54−2に、音声データの復号(デコード)を要求する。
オーディオ復号コーディックモジュール54−2の処理構成設定部71は、AV制御モジュール51からの要求を受け取ると、ステップS21において、サブプロセッサ管理モジュール53に、サブプロセッサ32の空き状況を問い合わせる。
サブプロセッサ管理モジュール53は、処理構成設定部71からの問い合わせを、ステップS41において受信し、ステップS42に進み、サブプロセッサ32の空き状況を調査(取得)し、調査したサブプロセッサ32の空き状況を、処理構成設定部71に応答する。
処理構成設定部71は、ステップS22において、サブプロセッサ管理モジュール53からのサブプロセッサ32の空き状況の応答を受信すると、ステップS23に進み、バス管理モジュール52に、バス36のバス帯域(バス使用量)を問い合わせる。
バス管理モジュール52は、処理構成設定部71からの問い合わせを、ステップS51において受信し、ステップS52に進み、バス36の帯域(使用量)を調査(取得)し、調査したバス36の帯域の空き状況を、処理構成設定部71に応答する。
なお、この後、図26の例においては、説明の便宜上、バス管理モジュール52の処理が終了されるが、この処理は、実際には、処理構成設定部71からの問い合わせに応じて、繰り返し実行される。
処理構成設定部71は、ステップS24において、サブプロセッサ管理モジュール53からのサブプロセッサ32の空き状況の応答を受信すると、ステップS25に進み、処理構成選択処理を実行する。なお、この処理構成選択処理は、図27を参照して後述するが、ステップS25においては、処理構成設定部71により、例えば、図7の1サブプロセッサ構成、図10のパイプライン構成171、および図17のパイプライン構成191のいずれかの処理構成が選択、設定され、制御部72により、設定された処理構成(用)のオブジェクトコードに関する情報(以下、オブジェクトコード情報とも称する)が、サブプロセッサ用オブジェクトコード管理部73から取得され、ステップS26に進む。
制御部72は、サブプロセッサ管理モジュール53に、オブジェクトコード管理部73から取得した処理構成のオブジェクトコード情報を供給するとともに、サブ用モジュール62のロードを要求する。
サブプロセッサ管理モジュール53は、ステップS43において、制御部72からの処理構成のオブジェクトコード情報を受信し、ステップS44に進み、受信した処理構成のオブジェクトコード情報に基づいて、対応するサブプロセッサ32に、サブ用モジュール62をロードする。
なお、この後、図26においては、説明の便宜上、サブプロセッサ管理モジュール53の処理が終了されるが、この処理は、実際には、処理構成設定部71からの問い合わせに応じて、繰り返し実行される。
ステップS44において、サブプロセッサ管理モジュール53が対応するサブプロセッサ32に、サブ用モジュール62をロードすることにより、処理構成に応じた数のサブプロセッサ32において、サブ用モジュール62が実行され、図7、図10、または図17の機能ブロックが実現される。
これに対応して、制御部72は、処理開始のコマンドをサブ制御部81に供給し、サブ制御部81は、ステップS27において、音声データのデコード(コーディック)処理を実行する。なお、このデコード処理は、図28を参照して後述するが、ステップS27においては、メインメモリ12からの1フレームの圧縮データを用いて音声データのデコード処理が実行され、デコード処理が終了すると、デコード処理完了が、制御部72に通知され、ステップS28に進む。
ステップS28において、制御部72は、AV制御モジュール51に、デコード結果を送信し、音声データの再生処理を終了する。
AV制御モジュール51は、ステップS12において、制御部72からのデコード結果を受信すると、対応する音声を、出力部17を構成するスピーカから出力させ、音声データの再生処理を終了する。
なお、ステップS27,S28,およびS12の処理は、全フレームの圧縮データがデコードされるまで、または、操作入力部15からのユーザによる中止の指示信号が入力されるまで続けられる。
次に、図27のフローチャートを参照して、図26のステップS25の処理構成選択処理を説明する。なお、図27の例においては、音声データのデコード処理について、図7の1サブプロセッサ構成、図10のパイプライン構成171、および図17のパイプライン構成191が予め構成され記憶されており、それらの中から処理構成を選択、設定する場合を説明する。
処理構成設定部71は、ステップS71において、オーディオ復号コーディックモジュール54−2に付加されている優先度が最高であるか否かを判定し、優先度が最高であると判定した場合、ステップS72に進み、処理構成として、図17のパイプライン構成191を選択し、選択結果を制御部72に供給し、ステップS78に進む。
ステップS71において、オーディオ復号コーディックモジュール54−2に付加されている優先度が最高ではないと判定された場合、処理構成設定部71は、ステップS73に進み、図26のステップS22で受信されたサブプロセッサ管理モジュール53からのサブプロセッサ32の空き状況に基づいて、サブプロセッサ32が1つしか空いていないか否かを判定し、サブプロセッサ32が1つしか空いていないと判定した場合、ステップS74に進む。
処理構成設定部71は、ステップS74において、処理構成として、図7の1サブプロセッサ構成を選択し、選択結果を制御部72に供給し、ステップS78に進む。
ステップS73において、サブプロセッサ32が2つ以上空いていると判定された場合、処理構成設定部71は、ステップS75に進み、図26のステップS24で受信されたバス管理モジュール52からのバス36の帯域に基づいて、バス帯域が1.9Mbytes以上あるか否かを判定し、バス帯域が1.9Mbytes以上あると判定した場合、ステップS76に進む。
処理構成設定部71は、ステップS76において、処理構成として、図17のパイプライン構成191を選択し、選択結果を制御部72に供給し、ステップS78に進む。
ステップS75において、バス帯域が1.9Mbytes未満であると判定された場合、処理構成設定部71は、ステップS77において、処理構成として、図10のパイプライン構成171を選択し、選択結果を制御部72に供給し、ステップS78に進む。
制御部72は、処理構成設定部71から、処理構成の選択結果が供給されると、ステップS78において、サブプロセッサ用オブジェクトコード管理部73から、選択された処理構成のオブジェクトコード情報を取得し、処理構成選択処理を終了し、図26のステップS25に戻り、ステップS26に進む。
以上のように、コーディック処理の処理構成を、AV制御モジュール51により付加される各コーディックモジュールの優先度、サブプロセッサ32の空き状況、またはバス36のバス帯域などに応じて選択(設定)するようにしたので、早く終わらせたい処理に対して、優先的にリソースを割り当てることができたり、複数のサブプロセッサやバスをなるべく余らせずに有効に利用することができる。すなわち、処理時の状況に応じた最適な処理を実行することができる。
次に、図28のフローチャートを参照して、図26のステップS27の音声データのデコード処理を説明する。なお、図28の処理は、図7の1サブプロセッサ構成により実行される処理である。
サブ制御部81は、図28のステップS101において、制御部72から処理開始のコマンドを入力するまで待機しており、制御部72から処理開始のコマンドを入力したと判定した場合、CR処理部101に処理開始を指示し、ステップS102に進む。
CR処理部101は、ステップS102において、バス36およびDMAC33を介して、メインメモリ12から1フレームの圧縮データを取得し、バッファ111に一旦蓄積させ、ステップS103に進み、CR処理を実行する。ステップS103のCR処理を、図29のフローチャートを参照して説明する。
CR処理部101は、図29のステップS121において、バッファ111に蓄積されている圧縮データに、ハフマン符号の復号を実行し、ステップS122に進む。CR処理部101は、ステップS122において、復号したデータを逆量子化し、その結果の周波数領域データをバッファ112に出力し、CR処理を終了し、図28のステップS103に戻り、ステップS104に進む。なお、このとき、CR処理部101は、FT処理部102に逆量子化処理を終了したことを通知する。
メインメモリ12のメモリロケーション121−1には、後述する前回のステップS106でFT処理部102により前フレームの参照データが書き出されている。
FT処理部102は、CR処理部101からの通知を受けると、ステップS104において、バス36およびDMAC33を介して、メインメモリ12から前フレームの参照データを取得し、バッファ113に蓄積させ、ステップS105に進む。
すなわち、ステップS104において、DMAC33は、FT処理部102の制御のもと、追加セグメント122−1のF/Eビットを読み出し、追加セグメント122−1の値が“1”であれば、そのメモリロケーション121−1のデータがまだ読み出されておらず、未処理の最新データであるとして、書き込まれているデータ(前フレームの参照データ)を読み出して、取得し、バッファ113に蓄積させ、その後、追加セグメント122−1のF/Eビットに“0”を書き込む。
FT処理部102は、ステップS105において、FT処理を実行する。ステップS105のFT処理を、図30のフローチャートを参照して説明する。
FT処理部102は、図30のステップS131において、バッファ112に蓄積されている周波数領域データに、スケールファクタ処理を行い、ステップS132に進み、スケールファクタ処理されたデータに、ステレオ処理を実行し、ステップS133に進む。
FT処理部102は、ステップS133において、ステレオ処理が実行されたデータにTNS処理(信号レベルの大きな箇所に、量子化ノイズを集中させる処理)を施し、ステップS134に進み、バッファ113に蓄積されている前フレームの参照データを用いて、TNS処理が施されたデータに、逆MDCT処理を実行し、次フレームの参照データとPCMデータを生成し、それぞれバッファ114および115に一旦蓄積させ、FT処理を終了し、図28のステップS105に戻り、ステップS106に進む。
FT処理部102は、ステップS106において、バッファ114に蓄積した次フレームの参照データと、バッファ115に蓄積したPCMデータを、それぞれ、バス36およびDMAC33を介してメインメモリ12に書き込ませ、ステップS107に進む。
すなわち、ステップS106において、DMAC33は、FT処理部102の制御のもと、追加セグメント122−2のF/Eビットを読み出し、追加セグメント122−2の値が“0”であれば、サブプロセッサ32によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、そのメモリロケーション121−2から読み出し不可であり、書き込み可能であるとし、バッファ114に蓄積された次フレームの参照データを、メモリロケーション121−2に書き出し、その後、追加セグメント122−2のF/Eビットに“1”を書き込む。
FT処理部102は、ステップS107に進み、サブ制御部81を介して、制御部72に処理完了を通知し、デコード処理を終了し、図26のステップS27に戻り、ステップS28に進む。
次に、図31のフローチャートを参照して、図26のステップS27のデコード処理の他の例を説明する。なお、図28における処理と同じ処理については、繰り返しになるのでその詳細な説明は省略する。また、図31の処理は、図10のパイプライン171構成により実行される処理であるので、サブプロセッサ32−1および32−2において交互に実行される処理であるが、いまの場合、サブプロセッサ32−1を用いて説明する。
サブプロセッサ32−1のサブ制御部81は、図31のステップS151において、制御部72から処理開始のコマンドを入力するまで待機しており、制御部72から処理開始のコマンドを入力したと判定した場合、CR処理部101に処理開始を指示し、ステップS152に進む。
CR処理部101は、ステップS152において、バス36およびDMAC33を介して、メインメモリ12から1フレームの圧縮データを取得し、バッファ111に蓄積させ、ステップS153に進み、CR処理を実行し、ステップS154に進む。
このCR処理は、図29を参照して上述した処理と同様の処理を行うため、その説明を省略するが、ステップS153において、CR処理部101はバッファ111に蓄積されている圧縮データに、ハフマン符号の復号を行い、逆量子化し、その結果として生成される周波数領域データを、バッファ112に出力する。また、このとき、CR処理部101は、FT処理部102に逆量子化処理が終了したことを通知する。
FT処理部102は、CR処理部101からの通知を受けると、ステップS154において、メインメモリ12から前フレームの参照データが読み出し可能であるか否かを判定し、前フレームの参照データが読み出し可能であると判定するまで待機する。
すなわち、後述する前回のステップS158の処理において、メモリロケーション121−1には、サブプロセッサ32−2により前フレームの参照データが書き込まれており、その際に、追加セグメント122−1のF/Eビットに“1”が書き込まれている。FT処理部102は、DMAC33を制御し、バス36を介して、前フレームの参照データが書き込まれているメモリロケーション121−1の追加セグメント122−1のF/Eビットを読み出させ、F/Eビットの値が“1”であれば、そのメモリロケーション121−1のデータが未処理の最新データであり、読み出し可能であると判定し、ステップS155に進む。
FT処理部102は、ステップS155において、DMAC33を制御し、バス36を介して、メモリ12(メモリロケーション121−1)から前フレームの参照データを取得させ、バッファ113に蓄積させ、ステップS156に進む。なお、参照データが取得された後、FT処理部102は、DMAC33を制御し、メモリロケーション121−1の追加セグメント122−1のF/Eビットに、“0”を書き込ませる。
ステップS156において、FT処理部102は、FT処理を実行し、ステップS157に進む。このFT処理は、図30を参照して上述した処理と同様の処理を行うため、その説明を省略するが、ステップS156において、FT処理部102は、バッファ112に蓄積されている周波数領域データに、スケールファクタ処理を実行し、ステレオ処理を実行し、TNS処理を施し、バッファ113に蓄積されている前フレームの参照データを用いて、TNS処理が施されたデータに、逆MDCT処理を実行し、次フレームの参照データとPCMデータを生成し、それぞれバッファ114および115に一旦蓄積させる。
FT処理部102は、ステップS157において、メインメモリ12に、次のフレームの参照データが書き出し可能であるか否かを判定し、次フレームの参照データが書き出し可能であると判定するまで待機する。すなわち、FT処理部102は、DMAC33を制御し、バス36を介して、次フレームの参照データを書き出す先のメモリロケーション121−2の追加セグメント122−2のF/Eビットを読み出させ、F/Eビットの値が“0”であれば、書き込み可能であると判定し、ステップS158に進む。
ステップS158において、FT処理部102は、バッファ114に蓄積した次フレームの参照データと、バッファ115に蓄積したPCMデータを、それぞれ、バス36およびDMAC33を介してメインメモリ12に書き込ませ、ステップS159に進む。
なお、このとき、バッファ114に蓄積された次フレームの参照データが、メモリロケーション121−2に書き出されると、DMAC33は、FT処理部102の制御のもと、追加セグメント122−2のF/Eビットに“1”を書き込む。これにより、上述した次回のステップS155においてサブプロセッサ32−2により前フレームの参照データが取得される。
FT処理部102は、ステップS159において、サブ制御部81を介して、制御部72に処理完了を通知し、デコード処理を終了し、図26のステップS27に戻り、ステップS28に進む。
次に、図32のフローチャートを参照して、図26のステップS27のデコード処理の他の例を説明する。したがって、図28における処理と同じ処理については、繰り返しになるのでその詳細な説明は省略する。なお、図32の処理は、図17のパイプライン191構成により実行される処理であり、サブプロセッサ32−1および32−2によりそれぞれの所定の処理が実行される。
サブプロセッサ32−1のサブ制御部81は、図32のステップS171において、制御部72から処理開始のコマンドを入力するまで待機しており、制御部72から処理開始のコマンドを入力したと判定した場合、サブプロセッサ32−1のCR処理部101に処理開始を指示し、ステップS172に進む。
サブプロセッサ32−1のCR処理部101は、ステップS172において、サブプロセッサ32−1のCR処理部101が担当するデコード処理を実行する。このサブプロセッサ32−1のデコード処理を、図33のフローチャートを参照して説明する。
サブプロセッサ32−1のCR処理部101は、図33のステップS181において、バス36およびDMAC33を介して、メインメモリ12から1フレームの圧縮データを取得し、バッファ111に蓄積させ、ステップS182に進み、CR処理を実行し、ステップS183に進む。
このCR処理は、図29を参照して上述した処理と同様の処理を行うため、その説明を省略するが、ステップS183において、サブプロセッサ32−1のCR処理部101はバッファ111に蓄積されている圧縮データに、ハフマン符号の復号を行い、逆量子化し、その結果として生成される周波数領域データを、バッファ211に出力する。また、このとき、サブプロセッサ32−1のCR処理部101は、サブプロセッサ32−2のFT処理部102に逆量子化処理が終了したことを通知する。
サブプロセッサ32−1のCR処理部101は、ステップS183において、メインメモリ12に、周波数領域データが書き出し可能であるか否かを判定し、周波数領域データが書き出し可能であると判定するまで待機する。すなわち、サブプロセッサ32−1のCR処理部101は、DMAC33を制御し、バス36を介して、周波数領域データを書き出す先のメモリロケーション221の追加セグメント222のF/Eビットを読み出させ、F/Eビットの値が“0”であれば、書き込み可能であると判定し、ステップS184に進む。
ステップS184において、サブプロセッサ32−1のCR処理部101は、バッファ211に蓄積した周波数領域データを、バス36およびDMAC33を介してメインメモリ12(メモリロケーション221)に書き込ませる。なお、このとき、サブプロセッサ32−1のCR処理部101は、DMAC33を制御し、追加セグメント222のF/Eビットに“1”を書き込ませる。その後、サブプロセッサ32−1のCR処理部101は、自己(サブプロセッサ32−1)のデコード処理を終了し、図32のステップS172に戻り、ステップS173に進む。
ステップS173において、サブプロセッサ32−2のFT処理部102は、サブプロセッサ32−1のCR処理部101からの逆量子化処理が終了した通知を受け取るまで待機しており、サブプロセッサ32−1のCR処理部101からの逆量子化処理が終了した通知を受け取ったと判定すると、ステップS174に進み、サブプロセッサ32−2のFT処理部102が担当するデコード処理を実行する。このサブプロセッサ32−2のデコード処理を、図34のフローチャートを参照して説明する。
サブプロセッサ32−2のFT処理部102は、ステップS191において、メインメモリ12から周波数領域データが読み出し可能であるか否かを判定し、周波数領域データが読み出し可能であると判定するまで待機する。
上述した図33のステップS184において、サブプロセッサ32−1のCR処理部101により、メモリロケーション221に周波数領域データが書き込まれ、追加セグメント222のF/Eビットに“1”が書き込まれている。サブプロセッサ32−2のFT処理部102は、DMAC33を制御し、バス36を介して、周波数領域データが書き込まれているメモリロケーション221の追加セグメント222のF/Eビットを読み出させ、F/Eビットの値が“1”であれば、そのメモリロケーション221のデータが未処理の最新データであり、読み出し可能であると判定し、ステップS192に進む。
サブプロセッサ32−2のFT処理部102は、ステップS192において、DMAC33を制御し、バス36を介して、メモリ12(メモリロケーション221)から周波数領域データを取得させ、バッファ212に蓄積させ、ステップS193に進む。なお、周波数領域データが取得された後、サブプロセッサ32−2のFT処理部102は、DMAC33を制御し、メモリロケーション221の追加セグメント222のF/Eビットに、“0”を書き込ませる。
サブプロセッサ32−2のFT処理部102は、ステップS193において、メインメモリ12から前フレームの参照データが読み出し可能であるか否かを判定し、前フレームの参照データが読み出し可能であると判定するまで待機する。
すなわち、後述する前回のステップS197の処理において、メモリロケーション121−1には、前フレームの参照データが書き込まれ、追加セグメント122−1のF/Eビットに“1”が書き込まれている。サブプロセッサ32−2のFT処理部102は、DMAC33を制御し、バス36を介して、前フレームの参照データが書き込まれているメモリロケーション121−1の追加セグメント122−1のF/Eビットを読み出させ、F/Eビットの値が“1”であれば、そのメモリロケーション121−1のデータが未処理の最新データであり、読み出し可能であると判定し、ステップS194に進む。
サブプロセッサ32−2のFT処理部102は、ステップS194において、DMAC33を制御し、バス36を介して、メモリ12(メモリロケーション121−1)から前フレームの参照データを取得させ、バッファ113に蓄積させ、ステップS195に進む。なお、参照データが取得された後、FT処理部102は、DMAC33を制御し、メモリロケーション121−1の追加セグメント122−1のF/Eビットに、“0”を書き込ませる。
ステップS195において、サブプロセッサ32−2のFT処理部102は、FT処理を実行し、ステップS196に進む。このFT処理は、図30を参照して上述した処理と同様の処理を行うため、その説明を省略するが、ステップS195において、FT処理部102は、バッファ212に蓄積されている周波数領域データに、スケールファクタ処理を行い、ステレオ処理を実行し、TNS処理を施し、バッファ113に蓄積されている前フレームの参照データを用いて、TNS処理が施されたデータに、逆MDCT処理を実行し、次フレームの参照データとPCMデータを生成し、それぞれバッファ114および115に一旦蓄積させる。
サブプロセッサ32−2のFT処理部102は、ステップS196において、メインメモリ12に、次のフレームの参照データが書き出し可能であるか否かを判定し、次フレームの参照データが書き出し可能であると判定するまで待機する。すなわち、サブプロセッサ32−2のFT処理部102は、DMAC33を制御し、バス36を介して、次フレームの参照データを書き出す先のメモリロケーション121−2の追加セグメント122−2のF/Eビットを読み出させ、F/Eビットの値が“0”であれば、書き込み可能であると判定し、ステップS197に進む。
ステップS197において、サブプロセッサ32−2のFT処理部102は、バッファ114に蓄積した次フレームの参照データと、バッファ115に蓄積したPCMデータを、それぞれ、バス36およびDMAC33を介してメインメモリ12に書き込ませ、ステップS198に進む。
なお、このとき、バッファ114に蓄積された次フレームの参照データが、メモリロケーション121−2に書き出されると、DMAC33は、サブプロセッサ32−2のFT処理部102の制御のもと、追加セグメント122−2のF/Eビットに“1”を書き込む。これにより、上述した次回のステップS194においてサブプロセッサ32−2により前フレームの参照データが取得される。
ステップS198において、サブプロセッサ32−2のFT処理部102は、サブプロセッサ32−2のサブ制御部81を介して、制御部72に処理完了を通知し、デコード処理を終了し、図26のステップS27に戻り、ステップS28に進む。
以上のように、情報処理装置1においては、従来であれば、1つのサブプロセッサやプロセッサなどで実行されていた1つの処理(例えば、コーディック処理)を複数のサブプロセッサを用いて実行するように、1つの処理内でパイプラインを構成し、実行させるようにしたので、例えば、コーディックなどの処理がより高速に実行することができる。
さらに、処理の優先度、サブプロセッサの空き状況、またはバスの空き状況に応じて、例えば、1サブプロセッサ構成、パイプライン構成171、およびパイプライン構成191を選択して、処理構成を切り替えることができるようにしたので、早く終わらせたい処理に優先的に、サブプロセッサやバスなどのリソースを割り当てることができたり、サブプロセッサやバスなどのリソースを余らせることなく、有効に利用することができる。
また、複数のサブプロセッサでパイプラインを構成することにより、専用ハードウェアを組み込むことなく、処理を早くすることができ、さらに、処理が早くなる分、チップのクロック数を落とすことができるので、省電力化を図ることができる。
なお、上記説明においては、音声データのデコード処理を行うオーディオ復号コーディックモジュール54−2を用いて説明したが、もちろん、これに限ったことではなく、本発明は、ビデオ復号コーディックモジュール54−1、ビデオ符号化コーディックモジュール54−3、またはオーディオ符号化コーディックモジュール54−4にも適用される。さらに、コーディック処理に限らず、本発明は、情報処理装置1における他の処理にも適用される。
また、上記説明においては、サブプロセッサを2つ用いて、2種類のパイプラインを構成する例を説明したが、用いるサブプロセッサは、複数であればよく、さらに、パイプライン構成も、上述した2種類に限らず、他のパイプライン構成であってもよい。
すなわち、本発明によれば、サブプロセッサにおける処理について、さらに高速なパイプライン構成やアルゴリズムが提案された場合にも、情報処理装置1内の他のモジュールに影響することなく、処理構成の追加と優先度の対応付けが可能となる。
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム格納媒体からインストールされる。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム格納媒体は、図1に示されるように、磁気ディスク51(フレキシブルディスクを含む)、光ディスク52(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク53(MD(Mini-Disc)(商標)を含む)、もしくは半導体メモリ54などのリムーバブル記録媒体、または、プログラムが一時的もしくは永続的に格納される記録部13−1または13−2などにより構成される。すなわち、このようなリムーバブル記録媒体は、いわゆるパッケージソフトウェアとして提供することができる。
また、プログラムは、上述したようなリムーバブル記録媒体から情報処理装置1にインストールされる他、ダウンロードサイトから、ディジタル衛星放送用の人工衛星を介して、情報処理装置1に無線で転送したり、 LAN(Local Area Network)、インターネットといったネットワークを介して、情報処理装置1に有線で転送し、情報処理装置1においては、そのようにして転送されてくるプログラムを、通信部18で受信し、内蔵する記録部13−1または13−2にインストールすることができる。
なお、本明細書において、フローチャートに示されるステップは、記載された順序に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
1 情報処理装置, 11 情報処理コントローラ, 12 メインメモリ, 15 操作入力部, 31 メインプロセッサ, 32−1乃至32−4 サブプロセッサ, 33 DMAC, 35 キー管理テーブル記憶部, 41,42−1乃至42−4 ローカルストレージ, 51 AV制御モジュール, 52 バス管理モジュール, 53 サブプロセッサ管理モジュール, 54 コーディックモジュール, 61 メイン用モジュール, 62 サブ用モジュール, 71 処理構成設定部, 72 制御部, 73 サブプロセッサ用オブジェクトコード管理部, 81 サブ制御部, 82 コーディック処理部, 101 CR処理部, 102 FT処理部, 111乃至115 バッファ, 121,121−1,121−2 メモリロケーション, 122,122−1,122−2 追加セグメント, 211,212 バッファ, 221 メモリロケーション, 222 追加セグメント