(57)【要約】【課題】複数のＣＰＵで効率よくエンコード処理およびデコード処理を行なうことが可能な情報処理装置を提供すること。【解決手段】ＲＯＭ１６は、エンコーダプログラムおよびデコーダプログラムを記憶する。ＣＰＵ０（１０）は、ＲＯＭ１６に記憶されるエンコーダプログラムを実行することによって、エンコード処理を行なう。ＣＰＵ１（１１）は、ＲＯＭ１６に記憶されるデコーダプログラムを実行することによって、複数のストリームデータに対応するデコード処理を並列に行なう。したがって、ソフトウェアをスレッド化する必要がなくなり、エンコード処理およびデコード処理を効率的に行なうことが可能となる。【選択図】図１
2009020565.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサによってエンコード処理およびデコード処理を行なう情報処理装置であって、
エンコーダプログラムおよびデコーダプログラムを記憶する記憶手段と、
前記記憶手段に記憶されるエンコーダプログラムを実行することによって、エンコード処理を行なう第１のプロセッサと、
前記記憶手段に記憶されるデコーダプログラムを実行することによって、複数のストリームデータに対応するデコード処理を並列に行なう第２のプロセッサとを含む、情報処理装置。
【請求項２】
前記第２のプロセッサは、前記記憶手段に記憶される共通のデコーダプログラムを実行することによって、複数のストリームデータに対応するデコード処理を並列に行なう、請求項１記載の情報処理装置。
【請求項３】
前記デコーダプログラムは、プロセッサ単体で実行可能な形式のプログラムである、請求項１または２記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンコード処理およびデコード処理を行なう技術に関し、特に、複数のＣＰＵ（Central Processing Unit）にエンコード処理およびデコード処理を行なわせる情報処理装置に関する。
【背景技術】
【０００２】
近年、情報を圧縮する技術の開発が進んでおり、様々なエンコード／デコード方式が存在している。たとえば、オーディオのエンコード／デコード方式として、ＭＰ３（MPEG Audio Layer-3）、ＡＡＣ（Advanced Audio Coding）などの方式がある。
【０００３】
従来、複数のＣＰＵを用いてエンコード処理およびデコード処理を行なう場合、その処理を実現するためのソフトウェアをまとまった単位に分割するスレッド化を行なってＣＰＵに並列に実行させることにより、処理効率の向上を図っていた。これに関連する技術として、下記の特許文献１に開示された発明がある。
【０００４】
特許文献１に開示されたデータ処理システムにおいて、ＭＰＥＧ２ソフトウェアデコードモジュールによる復号化処理は、スレッド＃１とスレッド＃２の２つのスレッドに分割して実行される。スレッド＃１は、ＭＰＥＧ２によって符号化された画像データを復号する復号処理シーケンスの内、他の画面に非依存の部分の処理を実行するためのものもである。一方、スレッド＃２は、他の画面に依存する部分の処理を実行する。スレッド＃１は、１枚のピクチャデータ毎に生成され、空き状態のＣＰＵに割り付けられて実行される。
【特許文献１】特開２００１−６９５１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ソフトウェアをスレッド化する場合、ＣＰＵ単体で処理を実行するように作成されたソフトウェアをそのまま流用することができないため、専用のソフトウェアを新たに作成しなければならないといった問題点がある。このような問題点は、上述した特許文献１に開示された発明を用いたとしても解決することができない。
【０００６】
本発明は、上記問題点を解決するためになされたものであり、その目的は、複数のＣＰＵで効率よくエンコード処理およびデコード処理を行なうことが可能な情報処理装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明の一実施例によれば、複数のＣＰＵによってエンコード処理およびデコード処理を行なう情報処理装置が提供される。ＲＯＭは、エンコーダプログラムおよびデコーダプログラムを記憶する。ＣＰＵ０は、ＲＯＭに記憶されるエンコーダプログラムを実行することによって、エンコード処理を行なう。ＣＰＵ１は、ＲＯＭに記憶されるデコーダプログラムを実行することによって、複数のストリームデータに対応するデコード処理を並列に行なう。
【発明の効果】
【０００８】
この実施例によれば、ＣＰＵ１が、ＲＯＭに記憶されるデコーダプログラムを実行することによって、複数のストリームデータに対応するデコード処理を並列に行なうので、ソフトウェアをスレッド化する必要がなくなり、エンコード処理およびデコード処理を効率的に行なうことが可能になるという効果がある。
【発明を実施するための最良の形態】
【０００９】
図１は、本発明の実施の形態における情報処理装置の概略構成の一例を示すブロック図である。この情報処理装置は、キャッシュ１２を有するＣＰＵ０（１０）と、キャッシュ１３を有するＣＰＵ１（１１）と、ＤＭＡＣ（Direct Memory Access Controller）１４と、ＲＡＭ（Random Access Memory）１５と、ＲＯＭ（Read Only Memory）１６と、出力ポート１７と、入力ポート１８とを含む。これらは、バス１９を介して接続され、１チップで構成されてもよい。
【００１０】
ＣＰＵ０（１０）は、ＲＯＭ１６に格納された制御プログラムおよびエンコーダプログラムを実行することにより、主に情報処理装置の全体的な制御と、エンコード処理とを行なう。本実施の形態においては、ＣＰＵ０（１０）が１つのエンコーダを実行するとして説明するが、複数のエンコーダを並列に実行するようにしてもよい。
【００１１】
ＣＰＵ１（１１）は、ＲＯＭ１６に格納された複数のデコーダプログラムを並列に実行することにより、最大３つの曲（ストリーム）を同時に再生することが可能である。なお、デコーダの数はこれに限られるものではない。
【００１２】
ＤＭＡＣ１４は、メモリ間のＤＭＡ転送や、Ｉ／Ｏ（Input/Output）−メモリ間のＤＭＡ転送を行なうものであり、たとえば、入力ポート１８を介して接続されるＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）装置やハードディスクからストリームデータをＲＡＭ１５に転送する場合などに用いられる。
【００１３】
出力ポート１７は、スピーカ、表示装置、ハードディスクなどの外部デバイスに接続され、たとえば、ＣＰＵ１（１１）からの音楽のデコードデータをスピーカを介して出力したり、ＣＰＵ０（１０）からの表示データを表示装置に出力したり、ＣＰＵ０（１０）からのエンコードデータをハードディスクに出力したりする。
【００１４】
入力ポート１８は、ボタンスイッチ、ＣＤ−ＲＯＭ装置、ハードディスクなどの外部デバイスに接続され、たとえば、ユーザによってボタンスイッチが操作されたときにその情報を入力してＣＰＵ０（１０）に出力したり、ＣＤ−ＲＯＭ装置やハードディスクからストリームデータを入力したりする。
【００１５】
図２は、ＲＡＭ１５およびＲＯＭ１６の構成例を説明するための図である。図２（ａ）は、ＲＯＭ１６の構成例を示す図である。このＲＯＭ１６は、制御タスクＲＯＭ部２１と、エンコーダＲＯＭ部２２と、デコーダ共通ＲＯＭ部２３とを含む。
【００１６】
ＣＰＵ０（１０）は、制御タスクＲＯＭ部２１に格納された制御プログラムを実行することによって、情報処理装置の全体的な制御処理を実現する。このＣＰＵ０（１０）によって実現される機能を、以下、単に制御タスクと呼ぶ。
【００１７】
また、ＣＰＵ０（１０）は、エンコーダＲＯＭ部２２に格納されたエンコーダプログラムを実行することによって、エンコード処理を実現する。このＣＰＵ０（１０）によって実現される機能を、以下、単にエンコーダと呼ぶ。ＣＰＵ０（１０）は、制御タスクとエンコーダとを別々のタスク上で実現し、タスクスイッチを適宜切替えることによって制御処理とエンコード処理とを並列に実行する。
【００１８】
ＣＰＵ１（１１）は、デコーダ共通ＲＯＭ部２３に格納されたデコーダプログラムを実行することによってデコード処理を実現する。このＣＰＵ１（１１）によって実現される機能を、以下、単にデコーダと呼ぶ。ＣＰＵ１（１１）は、複数のタスク上で別々のデコード処理を行ない、タスクスイッチを適宜切替えることによって複数のデコード処理を並列に実行する。
【００１９】
なお、本実施の形態においては、各プログラムがＲＯＭ１６に格納されているが、ハードディスクなどから各プログラムをＲＡＭ１５にロードし、ＣＰＵ０（１０）およびＣＰＵ１（１１）がそれを実行するようにしてもよい。
【００２０】
図２（ｂ）は、ＲＡＭ１５の構成例を示す図である。このＲＡＭ１５は、制御タスクＲＡＭ部３１と、エンコーダＲＡＭ部３２と、デコーダ（１）ＲＡＭ部３３と、デコーダ（２）ＲＡＭ部３４と、デコーダ（３）ＲＡＭ部３５とを含む。
【００２１】
制御タスクＲＡＭ部３１は、ＣＰＵ０（１０）が制御タスクを実行する際にワークエリアなどで使用される領域である。エンコーダＲＡＭ部３２は、ＣＰＵ０（１０）がエンコーダを実行する際にワークエリアなどで使用される領域である。
【００２２】
デコーダ（１）ＲＡＭ部３３は、ＣＰＵ１（１１）が第１のタスク上で第１のデコーダを実行する際にワークエリアなどで使用される領域である。デコーダ（２）ＲＡＭ部３４は、ＣＰＵ１（１１）が第２のタスク上で第２のデコーダを実行する際にワークエリアなどで使用される領域である。デコーダ（３）ＲＡＭ部３５は、ＣＰＵ１（１１）が第３のタスク上で第３のデコーダを実行する際にワークエリアなどで使用される領域である。
【００２３】
図３は、制御タスクの処理手順を説明するためのフローチャートである。まず、入力ポート１８に接続されるボタンスイッチなどからユーザの操作による制御入力があったか否かが判定される（Ｓ１１）。制御入力がなければ（Ｓ１１，Ｎｏ）、ステップＳ１１の処理を繰返す。
【００２４】
制御入力があれば（Ｓ１１，Ｙｅｓ）、その制御入力がエンコードであるか、デコードであるかが判定される（Ｓ１２）。制御入力がエンコードであれば（Ｓ１２、Ｙｅｓ）、現在実行中のエンコード数が所定数未満であるか否かが判定される（Ｓ１３）。本実施の形態において、エンコードの所定数を“１”とする。
【００２５】
エンコード数が“１”未満でなければ、すなわち既に別のエンコード処理が行なわれている場合には（Ｓ１３，Ｎｏ）、ステップＳ１１に戻って以降の処理を繰返す。また、エンコード数が“１”未満であれば（Ｓ１３，Ｙｅｓ）、別のタスク上で実行されるエンコーダに対してエンコード開始通知を行ない（Ｓ１４）、ステップＳ１１に戻って以降の処理を繰返す。
【００２６】
また、制御入力がデコードであれば（Ｓ１２，Ｎｏ）、現在実行中のデコード数が所定数未満であるか否かが判定される（Ｓ１５）。本実施の形態において、デコードの所定数を“３”とする。
【００２７】
デコード数が“３”未満でなければ、すなわち既に３つのエンコード処理が行なわれている場合には（Ｓ１５，Ｎｏ）、ステップＳ１１に戻って以降の処理を繰返す。また、デコード数が“３”未満であれば（Ｓ１５，Ｙｅｓ）、エンコード処理が行なわれていないタスクに対してデコード開始通知を行ない（Ｓ１６）、ステップＳ１１に戻って以降の処理を繰返す。
【００２８】
なお、制御タスクは、エンコーダおよびデコーダからの完了通知を受け、どのエンコーダおよびデコーダが動作中であるかを管理している。
【００２９】
図４は、エンコーダの処理手順を説明するためのフローチャートである。まず、制御タスクからエンコード開始通知を受けたか否かが判定される（Ｓ２１）。エンコード開始通知を受けていなければ（Ｓ２１，Ｎｏ）、ステップＳ２１の処理を繰返す。
【００３０】
エンコード開始通知を受ければ（Ｓ２１，Ｙｅｓ）、１フレーム分のエンコード処理を行なう（Ｓ２２）。そして、１曲分のデータのエンコード処理が終了したか否かが判定される（Ｓ２３）。
【００３１】
１曲分のデータのエンコード処理が終了していなければ（Ｓ２３，Ｎｏ）、ステップＳ２２に戻って次の１フレーム分のデータのエンコード処理が行なわれる。１曲分のデータのエンコード処理が終了すれば（Ｓ２３，Ｙｅｓ）、制御タスクに対してエンコード完了通知を行ない（Ｓ２４）、ステップＳ２１に戻って以降の処理を繰返す。
【００３２】
図５は、デコーダの処理手順を説明するためのフローチャートである。まず、制御タスクからデコード開始通知を受けたか否かが判定される（Ｓ３１）。デコード開始通知を受けていなければ（Ｓ３１，Ｎｏ）、ステップＳ３１の処理を繰返す。デコード開始通知を受ければ（Ｓ３１，Ｙｅｓ）、デコード処理を行なっていないデコーダにデコード処理を行なわせる。
【００３３】
ステップＳ３２〜Ｓ３３は、第１のタスク上で動作するデコーダの処理を示している。１フレーム分のデコード処理が行なわれると（Ｓ３２）、１曲分のデータのデコード処理が終了したか否かが判定される（Ｓ３３）。１曲分のデータのデコード処理が終了していなければ（Ｓ３３，Ｎｏ）、ステップＳ３２に戻って次のフレームのデコード処理が行なわれる。１曲分のデータのデコード処理が終了すれば（Ｓ３３，Ｙｅｓ）、制御タスクに対してデコード完了通知を行ない（Ｓ３８）、ステップＳ３１に戻って以降の処理を繰返す。
【００３４】
ステップＳ３４〜Ｓ３５は、第２のタスク上で動作するデコーダの処理を示している。１フレーム分のデコード処理が行なわれると（Ｓ３４）、１曲分のデータのデコード処理が終了したか否かが判定される（Ｓ３５）。１曲分のデータのデコード処理が終了していなければ（Ｓ３５，Ｎｏ）、ステップＳ３４に戻って次のフレームのデコード処理が行なわれる。１曲分のデータのデコード処理が終了すれば（Ｓ３５，Ｙｅｓ）、制御タスクに対してデコード完了通知を行ない（Ｓ３８）、ステップＳ３１に戻って以降の処理を繰返す。
【００３５】
ステップＳ３６〜Ｓ３７は、第３のタスク上で動作するデコーダの処理を示している。１フレーム分のデコード処理が行なわれると（Ｓ３６）、１曲分のデータのデコード処理が終了したか否かが判定される（Ｓ３７）。１曲分のデータのデコード処理が終了していなければ（Ｓ３７，Ｎｏ）、ステップＳ３６に戻って次のフレームのデコード処理が行なわれる。１曲分のデータのデコード処理が終了すれば（Ｓ３７，Ｙｅｓ）、制御タスクに対してデコード完了通知を行ない（Ｓ３８）、ステップＳ３１に戻って以降の処理を繰返す。
【００３６】
エンコード処理は高速に実行されることが要求されるため、本実施の形態においてはエンコード数を“１”とし、ＣＰＵ０（１０）にエンコード処理と制御処理とを行なわせている。このような構成にすることにより、エンコード処理が高速に行なわれると共に、エンコード処理が不要な場合にはＣＰＵ０（１０）のクロック周波数を下げて制御処理のみを行なわせることにより、消費電力を削減することができる。
【００３７】
一方、デコード処理は出力で間に合えばよいため平均速度が１倍速以上であればよく、高速に行なわせる必要がない。そのため、ＣＰＵ１（１１）に複数のデコード処理を行なわせても十分に処理可能である。また、ＲＯＭ１６に配置されるデコーダ部分を共通とすることにより、ＣＰＵ１（１１）のタスク切替え時におけるキャッシュヒット率が向上し、処理速度を向上させることができる。
【００３８】
また、このような構成とすることにより、たとえば、ＣＤ−ＲＯＭからハードディスクにオーディオデータを高速に転送したり、複数のオーディオを同時に再生して複数のユーザに提供したりすることができる。
【００３９】
以上の説明においては、オーディオのエンコード処理およびデコード処理についてであったが、それ以外のエンコード処理およびデコード処理についても適用することが可能である。
【００４０】
以上説明したように、本実施の形態における情報処理装置によれば、エンコード処理とデコード処理とを別々のＣＰＵで実行させると共に、１つのＣＰＵに複数のデコード処理を並列に行なわせるようにしたので、ソフトウェアをスレッド化する必要がなくなり、エンコード処理およびデコード処理を効率的に行なうことが可能となった。
【００４１】
また、１つのＣＰＵに複数のデコード処理を並列に行なわせるようにしたので、タスク切替え時におけるキャッシュヒット率を向上させることができ、処理速度を向上させることが可能となった。
【００４２】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【００４３】
本発明は、カーオーディオ、ホームオーディオなどに適用でき、特に、複数のオーディオを同時に再生して出力するような情報処理装置に好適である。
【図面の簡単な説明】
【００４４】
【図１】本発明の実施の形態における情報処理装置の概略構成の一例を示すブロック図である。
【図２】ＲＡＭ１５およびＲＯＭ１６の構成例を説明するための図である。
【図３】制御タスクの処理手順を説明するためのフローチャートである。
【図４】エンコーダの処理手順を説明するためのフローチャートである。
【図５】デコーダの処理手順を説明するためのフローチャートである。
【符号の説明】
【００４５】
１０，１１  ＣＰＵ、１２，１３  キャッシュ、１４  ＤＭＡＣ、１５  ＲＡＭ、１６  ＲＯＭ、１７  出力ポート、１８  入力ポート、１９  バス、２１  制御タスクＲＯＭ部、２２  エンコーダＲＯＭ部、２３  デコーダ共通ＲＯＭ部、３１  制御タスクＲＡＭ部、３２  エンコーダＲＡＭ部、３３  デコーダ（１）ＲＡＭ部、３４  デコーダ（２）ＲＡＭ部、３５  デコーダ（３）ＲＡＭ部。
【図１】
2009020565.tif 000003
【図２】
2009020565.tif 000004
【図３】
2009020565.tif 000005
【図４】
2009020565.tif 000006
【図５】
2009020565.tif 000007