(57)【要約】特定の方法は、１つまたは複数のメモリイメージをマルチウェイキャッシュにロードすることを含む。これらメモリイメージは、オーディオデコーダに関連し、マルチウェイキャッシュは、プロセッサからのアクセスが可能である。各々のメモリイメージは、マルチウェイキャッシュのページサイズを超えないようにサイズ調整される。【選択図】図１
2013539892.tif 000002
【特許請求の範囲】
【請求項１】
オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを、プロセッサからのアクセスが可能なマルチウェイキャッシュにロードすることを備え、前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュのページサイズを超えないようにサイズ調整される、方法。
【請求項２】
前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることは、前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスを発生させることなく、オーディオデコーディングを可能にする、請求項１に記載の方法。
【請求項３】
前記オーディオデコーディングは、前記プロセッサに利用可能なより上位のメモリにアクセスすることなく、前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードした後に行われる、請求項２に記載の方法。
【請求項４】
各メモリイメージのサイズは、前記マルチウェイキャッシュの前記ページサイズに等しい、請求項１に記載の方法。
【請求項５】
前記オーディオデコーダは、１つまたは複数のオーディオストリームをデコードするように動作可能である、請求項１に記載の方法。
【請求項６】
前記１つまたは複数のメモリイメージは、メモリから前記マルチウェイキャッシュにそれぞれロードされ、前記１つまたは複数のメモリイメージは、前記マルチウェイキャッシュの対応する単一のページにロードされるように、前記メモリにおいてそれぞれ整列される、請求項１に記載の方法。
【請求項７】
前記メモリにおける前記１つまたは複数のメモリイメージは、前記１つまたは複数のメモリイメージのすべてが前記マルチウェイキャッシュにロードされている場合にオーディオデコーディングおよび低電力オーディオデコーディングを可能にするようにアクセス可能である、請求項６に記載の方法。
【請求項８】
前記メモリは、第２のオーディオデコーダと関連づけられた１つまたは複数のメモリイメージを含む、請求項６に記載の方法。
【請求項９】
前記メモリは、複数のオーディオデコーダに共通の少なくとも１つのメモリイメージを含む、請求項６に記載の方法。
【請求項１０】
前記メモリは、動的メモリ割り当て領域を含む、請求項６に記載の方法。
【請求項１１】
前記マルチウェイキャッシュは、４ウェイキャッシュを備える、請求項１に記載の方法。
【請求項１２】
第１の前記１つまたは複数のメモリイメージは、オーディオデコーダプログラム命令を含み、第２の前記１つまたは複数のメモリイメージは、動的メモリ割り当て領域に対応し、第３の前記１つまたは複数のメモリイメージは、後処理プログラム命令を含む、請求項１に記載の方法。
【請求項１３】
前記１つまたは複数のメモリイメージの全メモリイメージを前記マルチウェイキャッシュにロードさせる処理を開始することをさらに備える、請求項１に記載の方法。
【請求項１４】
前記処理は、前記プロセッサのバックグラウンドスレッドを備える、請求項１３に記載の方法。
【請求項１５】
前記処理は、オーディオデコーディング処理の開始または停止を検出することに応答して開始される、請求項１３に記載の方法。
【請求項１６】
前記オーディオデコーダにおいて第１のオーディオストリームを、および第２のオーディオデコーダにおいて第２のオーディオストリームを、同時並行にデコードすることと、
前記第２のオーディオストリームの終了を検出することと、
前記第２のデコーダにおいて前記第２のオーディオストリームを前記デコードすることを終了することと、
前記第２のオーディオストリームを前記デコードすることを終了した後に、前記オーディオデコーダにおいて前記第１のオーディオストリームをデコードすることと、
をさらに備える、請求項１に記載の方法。
【請求項１７】
前記１つまたは複数のメモリイメージは、前記第１のオーディオストリームまたは前記第２のオーディオストリームにおける可聴中断なく、前記マルチウェイキャッシュにロードされる、請求項１６に記載の方法。
【請求項１８】
前記１つまたは複数のメモリイメージは、アプリケーションプロセッサからの介入とは無関係に、前記マルチウェイキャッシュにロードされる、請求項１に記載の方法。
【請求項１９】
前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスも発生させことなく、前記オーディオデコーダにおいて第１のオーディオストリームをデコードすることと、
前記第１のオーディオストリームの終了と、第２のオーディオデコーダによってデコードされる第２のオーディオストリームの開始とを検出することと、
前記第２のオーディオデコーダと関連づけられた１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることと、
前記第２のオーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスも発生させることなく、前記第２のオーディオデコーダにおいて前記第２のオーディオストリームをデコードすることと、
をさらに備える、請求項１に記載の方法。
【請求項２０】
前記第２のオーディオデコーダと関連づけられた前記１つまたは複数のメモリイメージは、前記第１のオーディオストリームまたは前記第２のオーディオストリームにおける可聴中断なく、前記マルチウェイキャッシュにロードされる、請求項１９に記載の方法。
【請求項２１】
前記第２のオーディオデコーダと関連づけられた前記１つまたは複数のメモリイメージは、アプリケーションプロセッサからの介入とは無関係に、前記マルチウェイキャッシュにロードされる、請求項１９に記載の方法。
【請求項２２】
前記プロセッサと一体化されたメモリにおいて、複数のオーディオデコーダに共通のプログラム命令にアクセスすることをさらに備える、請求項１に記載の方法。
【請求項２３】
前記プロセッサは、デジタル信号プロセッサを備える、請求項１に記載の方法。
【請求項２４】
オーディオデータを受信することと、
前記１つまたは複数のメモリイメージは、前記オーディオデータが前記オーディオデコーダに対応すると決定することに応答してロードされ、
前記マルチウェイキャッシュにおいてキャッシュミスを発生させることなく、前記オーディオデコーダにおいて前記オーディオデータをデコードすることと、
処理されたオーディオデータを前記プロセッサの出力ポートに提供することと、
をさらに備える、請求項１に記載の方法。
【請求項２５】
後処理されたオーディオデータを生成するために、デコードされたオーディオデータに１つまたは複数の後処理機能を適用することと、前記１つまたは複数の後処理機能は前記オーディオデコーダに固有であり、
前記処理されたオーディオデータを生成するために、前記後処理されたデータに１つまたは複数の共通処理機能を適用することと、前記１つまたは複数の共通処理機能は複数のオーディオデコーダに共通である、
をさらに備える、請求項２４に記載の方法。
【請求項２６】
非一時的なコンピュータ可読記憶媒体であって、プロセッサによって実行されるとき、前記プロセッサに、
オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを、プロセッサからのアクセスが可能なマルチウェイキャッシュにロードさせる命令を備え、
前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュのページサイズを超えないようにサイズ調整される、非一時的なコンピュータ可読記憶媒体。
【請求項２７】
前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることは、前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスを発生させることなく、オーディオデコーディングを可能にする、請求項２６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２８】
各メモリイメージのサイズは、前記マルチウェイキャッシュの前記ページサイズに等しい、請求項２６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２９】
プロセッサと、
前記プロセッサからのアクセスが可能なマルチウェイキャッシュと、
を備え、
前記プロセッサは、オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードするように構成され、前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュのページサイズを超えないようにサイズ調整される、電子デバイス。
【請求項３０】
前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることは、前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスも発生させることなく、オーディオデコーディングを可能にする、請求項２９に記載の電子デバイス。
【請求項３１】
前記１つまたは複数のメモリイメージを含むランダムアクセスメモリと、
前記プロセッサからのアクセスが可能な低電力メモリと、
オーディオデータを、前記ランダムアクセスメモリから取り出させ、前記低電力メモリにおいて前記オーディオデータを格納させるように構成されたアプリケーションプロセッサと、前記オーディオデコーダは、デコードされたオーディオデータを生成するために、前記低電力メモリから取り出されたオーディオデータをデコードするように構成され、
後処理されたオーディオデータを生成するために、前記デコードされたオーディオデータに１つまたは複数の後処理操作を適用するように構成された後処理回路と、前記１つまたは複数の後処理操作は、前記オーディオデコーダに固有であり、
処理されたオーディオデータを生成するために、前記後処理されたオーディオデータに１つまたは複数の共通処理操作を適用するように構成された共通処理回路と、前記１つまたは複数の共通処理操作は、複数のオーディオデコーダに共通であり、
前記処理されたオーディオデータを出力するように構成された出力ポートと、
をさらに備える、請求項２９に記載の電子デバイス。
【請求項３２】
データを処理する手段と、
複数のキャッシュウェイにおいてデータをキャッシュする手段と、
を備え、
前記キャッシュする手段は、前記処理する手段からのアクセスが可能であり、
前記処理する手段は、オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを前記キャッシュする手段にロードするように構成され、前記１つまたは複数のメモリイメージの各々は、前記キャッシュする手段のページサイズを超えないようにサイズ調整される、装置。
【請求項３３】
前記１つまたは複数のメモリイメージを前記キャッシュする手段にロードすることは、前記オーディオデコーダが前記キャッシュする手段においてキャッシュミスも発生させることなく、オーディオデコーディングを可能にする、請求項３２に記載の装置。
【請求項３４】
各メモリイメージのサイズは、前記キャッシュする手段の前記ページサイズに等しい、請求項３２に記載の装置。
【請求項３５】
前記オーディオデコーダは、アドバンスト・オーディオ・コーディング（ＡＡＣ）タイプのオーディオデコーダ、モーション・ピクチャ・エクスパーツ・グループ・オーディオ・レイヤ３（ＭＰ３）タイプのオーディオデコーダ、スピーチオーディオデコーダ、パルス符号変調（ＰＣＭ）オーディオデコーダ、またはこれらの任意の組み合わせである、請求項３２に記載の装置。
【請求項３６】
非一時的なコンピュータ可読記憶媒体であって、プロセッサによって実行されるとき、前記プロセッサに、
ビットマスクに基づいて、少なくとも１つのバッファが要求されたバッファサイズを満足し利用可能であるかどうかを決定させる命令を備え、
前記ビットマスクの第１のビットは、第１のバッファサイズを有するバッファが利用可能であるかどうかを示し、前記ビットマスクの第２のビットは、第２のバッファサイズを有するバッファが利用可能であるかどうかを示す、非一時的なコンピュータ可読記憶媒体。
【請求項３７】
前記ビットマスクの各ビット位置は、それぞれのバッファサイズに対応し、特定のビット位置におけるビット値は、前記特定のビット位置に対応する前記それぞれのバッファサイズを有するバッファの可用性を示す、請求項３６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３８】
前記プロセッサによって実行されるとき、前記プロセッサに、
マルチウェイキャッシュの単一のページに対応するように整列され、かつ前記マルチウェイキャッシュの前記単一のページのサイズに実質的に等しいサイズを有するメモリの領域を割り当てさせ、
前記メモリの割り当てられた領域の少なくとも一部分を、前記第１のバッファサイズを有する少なくとも１つのバッファと前記第２のバッファサイズを有する少なくとも１つのバッファとを含む複数の所定のバッファに分割させ、
前記所定のバッファへのポインタをもつ１つまたは複数のデータ構造を追加させ、特定のデータ構造の各ポインタは、特定のサイズの所定のバッファを指し示し、
前記メモリの割り当てられた領域において利用可能なバッファサイズを示すためにビットマスクをセットさせる、
命令をさらに備える、請求項３６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３９】
前記メモリの領域は、前記マルチウェイキャッシュにおいてキャッシュされ、オーディオデコーディングを可能にするために、プロセッサにおいて１つまたは複数のオーディオデコーダによるアクセスの実行を可能にし、前記オーディオデコーディングに対応するすべての動的メモリ割り当て要求は、前記マルチウェイキャッシュにおいてキャッシュされた前記メモリの領域から満たされる、請求項３８に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４０】
各所定のバッファは、
サイズ＝２n＋８バイト
という式に従うサイズを有し、
ここで、ｎは１以上の整数である、
請求項３８に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４１】
各所定のバッファの第１の４バイトは破損テストワードを表し、各所定のバッファの第２の４バイトは前記データ構造のうちの１つを識別するリターンポインタを表す、請求項３８に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４２】
前記プロセッサによって実行されるとき、前記プロセッサに、
要求されたサイズのメモリ割り当てを示す要求を受信させ、
前記要求されたサイズを満足する最小の利用可能なバッファに対応するポインタを提供させ、
前記提供されたバッファを割り当て解除する要求を受信させ、
前記提供されたバッファが破損しているかどうかを検出するために、前記提供されたバッファの前記破損テストワードを評価させ、
前記提供されたバッファが破損していない場合、前記提供されたバッファに対応する前記ポインタを、前記提供されたバッファの前記リターンポインタによって識別される前記データ構造に挿入させる、
命令をさらに備える、請求項４１に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４３】
プロセッサにおいて、ビットマスクに基づいて、プロセッサからのアクセスが可能なメモリの少なくとも１つのバッファが、要求されたバッファサイズを満たし利用可能であるかどうかを決定することを備え、
前記ビットマスクの第１のビットは、第１のバッファサイズを有するバッファが利用可能であるかどうかを示し、前記ビットマスクの第２のビットは、第２のバッファサイズを有するバッファが利用可能であるかどうかを示す、コンピュータ実装方法。
【請求項４４】
マルチウェイキャッシュの単一のページに対応するように整列され、かつ前記マルチウェイキャッシュの前記単一のページのサイズに実質的に等しいサイズを有する前記メモリの領域を割り当てることと、
前記メモリの割り当てられた領域の少なくとも一部分を、前記第１のバッファサイズを有する少なくとも１つのバッファと前記第２のバッファサイズを有する少なくとも１つのバッファとを含む複数の所定のバッファに分割することと、
前記所定のバッファへのポインタを用いて１つまたは複数のデータ構造を追加することと、特定のデータ構造の各ポインタは、特定のサイズの所定のバッファを指し示し、
前記メモリの割り当てられた領域において利用可能なバッファサイズを示すためにビットマスクをセットすることと、
をさらに備える、請求項４３に記載のコンピュータ実装方法。
【発明の詳細な説明】
【優先権の主張】
【０００１】
本願は、２０１０年１０月１５日に出願された米国仮特許出願第６１／３９３４９５号からの優先権を主張し、その内容は、ここにその全文を参照により明確に組み込まれる。
【技術分野】
【０００２】
本開示は、一般的にはオーディオの復号（デコーディング）および再生に関する。
【背景技術】
【０００３】
[0003]  技術の進歩は、より小型で、より強力なコンピューティングデバイスをもたらした。例えば、小型で、軽く、かつユーザによって容易に持ち運ばれる携帯用無線電話、携帯情報端末（ＰＤＡｓ）、およびページングデバイスなどの無線コンピューティングデバイスを含む様々な携帯用パーソナルコンピューティングデバイスが現在存在している。より具体的には、セルラ電話およびインターネットプロトコル（ＩＰ）電話などの、携帯用無線電話が無線ネットワーク上でボイスおよびデータパケットを通信しうる。さらに、多くのこのような無線電話は、その中に組み込まれるその他のタイプのデバイスを含む。例えば、無線電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤも含みうる。
【０００４】
[0004]  無線電話のようなコンピューティングデバイスは、複数の種類のオーディオストリームをデコードおよび再生する能力を有しうる。あるシナリオでは、これは、同時並行して（in concurrent fashion）異なる種類のオーディオストリームをデコードおよび再生することを含みうる。処理中のオーディオストリームのタイプまたは数が変更するたびに、コンピューティングデバイスは、電力リソース（例えば、バッテリ寿命）を費やして、コンピューティングデバイスにおけるオーディオ信号処理を再構成（再設定）しうる。
【発明の概要】
【０００５】
[0005]  電子デバイスにおいてオーディオストリームをデコードおよび再生することは、オーディオデジタル信号プロセッサ（ＤＳＰ）のようなプロセッサの使用を伴いうる。オーディオＤＳＰにおける動作を促進する試みにおいて、オーディオＤＳＰは、キャッシュに結合されうる。しかしながら、キャッシュは、オーディオのデコーディングおよび再生処理のために必要なデータ、命令、および動的メモリ割り当てのすべてを収容（accommodate）するには小さすぎる場合がある。さらに、たとえキャッシュがこの情報のすべてを収容するのに十分な大きさであったとしても、情報は、キャッシュ内に適切に収まる（fit）ように整列（aligned）されていない場合がある。この結果、オーディオのデコーディングおよび再生の間にキャッシュミス（cache misses）が発生しうる。例えば、キャッシュミスは、１つのオーディオデコーダから別のものへ切り換えるときに発生しうる。キャッシュミスは、キャッシュに新しいデータをロードすることになるので、キャッシュミスは、オーディオＤＳＰにおいて電力使用（例えば、他のメモリからデータを取り出して（retrieving）、このデータをキャッシュに書き込むことによる電力使用）を増大させうる。加えて、いくつかのシステムは、内部メモリをキャッシュとして構成し、あるいはキャッシュを密結合メモリ（ＴＣＭ）に変換しうる。例えば、このような構成および変換は、複数のオーディオストリームを同時並行して処理している場合、または同時並行処理から単一処理へ遷移する場合に起こりうる。これらの動作は、オーディオの再生中に望ましくない可聴中断（audible interruptions）（例えば、「ポッピング（popping）」ノイズ）を引き起こしうる。したがって、オーディオのデコーディングおよび再生の間のキャッシュミスおよびメモリ変換を低減または除去することは、電子デバイスにおける電力消費を低減させて、より快適なユーザ体験を提供しうる。
【０００６】
[0006]  本開示は、キャッシュされたイメージ（例えば、メモリイメージ）を用いた低電力のデコーディングおよび再生を行うためのシステムおよび方法を説明する。１つの構成では、プロセッサは、マルチウェイ（multi-way）（例えば、４ウェイ）キャッシュへのアクセスを有する。他のより上位のメモリ（例えば、ＲＡＭ）からのデータは、マルチウェイキャッシュにロードされうる。低電力のデコーディングおよび再生のシナリオが検出された場合、１つまたは複数のメモリイメージがＲＡＭからマルチウェイキャッシュにロードされうる。各メモリイメージは、メモリイメージがマルチウェイキャッシュにロードされるときに単一のキャッシュページ内に収まるように、ＲＡＭにおいてサイズ調整（sized）および整列されうる。ロードされたメモリイメージは、特定のオーディオデコーダに固有の動的メモリ割り当てエリア、命令、およびデータを含みうる。メモリイメージをロードしている間、オーディオ再生は、いくつかのキャッシュミスを生成しうるが、オーディオ再生は、可聴アーティファクト（audible artifact）を生じることも、停止する（stall）こともない。キャッシュにメモリイメージをロードする際に、オーディオストリームのデコーディングおよび再生は、マルチウェイキャッシュにおいてキャッシュミスなく、かつＲＡＭへの更なるアクセスなしに行われることができ、それによって電力を保存する。
【０００７】
[0007]  本開示はまた、このような低電力のデコーディングおよび再生のシナリオと共に使用されうる動的メモリ管理のシステムおよび方法を説明する。例えば、低電力のデコーディングおよび再生を可能にするために、マルチウェイキャッシュにロードされるメモリイメージのうちの１つは、ここに開示される動的メモリ管理技術を使用して管理される動的メモリ割り当て領域でありうる。動的メモリ割り当てエリアを管理することは、割り当てられた領域を予め定められたサイズの予め定められたバッファに分割することと、特定のサイズのバッファが利用可能であるかどうかを示すために、ビットマスクを使用することと、を含みうる。
【０００８】
[0008]  特定の実施形態では、方法は、オーディオデコーダと関連づけられた１つまたは複数のメモリイメージをマルチウェイキャッシュにロードすることを含む。このマルチウェイキャッシュは、プロセッサからアクセス可能である。１つまたは複数のイメージの各々は、マルチウェイキャッシュのページサイズを超えないようにサイズ調整される。
【０００９】
[0009]  別の特定の実施形態では、電子デバイスが、プロセッサと、プロセッサからアクセス可能なマルチウェイキャッシュとを含む。このプロセッサは、オーディオデコーダと関連づけられた１つまたは複数のメモリイメージをマルチウェイキャッシュにロードするように構成される。１つまたは複数のメモリイメージの各々は、マルチウェイキャッシュのページサイズを超えないようにサイズ調整される。
【００１０】
[0010]  別の特定の実施形態では、方法は、ビットマスクに基づいて、少なくとも１つのバッファが要求されたバッファサイズを満たすために利用可能であるかどうかを決定することを含む。ビットマスクの第１のビットは、第１のバッファサイズを有するバッファが利用可能であるかどうかを示す。ビットマスクの第２のビットは、第２のバッファサイズを有するバッファが利用可能であるかどうかを示す。
【００１１】
[0011]  開示された実施形態のうちの少なくとも１つによって提供される特定の利点は、低減された電力使用で１つまたは複数のオーディオストリームをデコードおよび再生する能力を含む。
【００１２】
[0012]  本開示の他の態様、利点、および特徴は、下記のセクション：図面の簡単な説明、発明を実施するための形態、および特許請求の範囲、を含む本願全体のレビュー後に明らかになるであろう。
【図面の簡単な説明】
【００１３】
【図１】図１は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行うためのシステムの特定の実施形態を例示するブロック図である。
【図２】図２は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行うためのシステムの別の特定の実施形態を例示するブロック図である。
【図３】図３は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行うためのシステムの別の特定の実施形態を例示するブロック図である。
【図４】図４は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行うためのシステムの別の特定の実施形態を例示するブロック図である。
【図５】図５は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行うためのシステムの別の特定の実施形態を例示する図である。
【図６】図６は、図１−図５のシステムにおいて使用されうる動的メモリ管理の特定の実施形態を例示する図である。
【図７】図７は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行う方法の特定の実施形態を例示するフロー図である。
【図８】図８は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生の間の動的メモリ管理の方法の特定の実施形態を例示するフロー図である。
【図９】図９は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行うことが可能な電子デバイスの特定の実施形態を例示する図である。
【発明を実施するための形態】
【００１４】
[0022]  図１は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行うためのシステム１００の特定の実施形態を例示するブロック図である。このシステムは、プロセッサ１１０およびメモリ１４０を含む。プロセッサ１１０は、プロセッサコア１２０およびマルチウェイキャッシュ１３０を含みうる。プロセッサ１１０での動作中（例えば、プロセッサコア１２０の動作に基づいて）、データは、メモリ１４０からマルチウェイキャッシュ１３０にロードされうる。例えば、マルチウェイキャッシュ１２０は、プロセッサ１１０によって最近使用された、または使用される頻度の高いメモリ１４０の部分からのデータを格納しうる。
【００１５】
[0023]  プロセッサ１１０は、汎用プロセッサまたはデジタル信号プロセッサ（ＤＳＰ）でありうる。特定の実施形態では、プロセッサ１１０は、オーディオＤＳＰであり、プロセッサコア１２０は、１つまたは複数のオーディオデコーディングブロック（例えば、例示的なオーディオデコーディングブロック１２２）を含む。オーディオデコーディングブロック１２２は、ハードウェア回路を含むことができ、および／または、特定のタイプのオーディオストリームをデコードするように動作可能なソフトウェアを実行することができる。例えば、オーディオデコーディングブロック１２２は、アドバンスト・オーディオ・コーディング（ＡＡＣ：advanced audio coding）タイプのオーディオデコーダ（例えば、ＡＡＣ＋）、モーション・ピクチャ・エクスパーツ・グループ・オーディオ・レイヤ３（ＭＰ３：motion picture experts group audio layer 3）タイプのオーディオデコーダ、スピーチオーディオデコーダ、パルス符号変調（ＰＣＭ）オーディオデコーダ、その他のタイプのオーディオデコーダ、またはこれらの任意の組み合わせのインプリメンテーション（implementation）を含みうる。
【００１６】
[0024]  マルチウェイキャッシュ１３０は、複数のキャッシュウェイ（例えば、図１に例示されるような「ウェイ０」、「ウェイ１」、...「ウェイＮ−１」）を含みうる。例えば、マルチウェイキャッシュ１３０は、４つのキャッシュウェイを含む４ウェイキャッシュであることができ、ここで、４ウェイキャッシュの各キャッシュラインは、４つのデータ要素を含み、その各々が異なるタグと関連づけられる。あるいは、マルチウェイキャッシュ１３０は、４つよりも多いまたは４つよりも少ないキャッシュウェイを含みうる。特定の実施形態では、マルチウェイキャッシュ１３０は、ページに分割され（例えば、各キャッシュウェイが、１つのページに対応しうる）、また、メモリ１４０のページ整列境界（page-alignment boundaries）にしたがって、メモリ１４０からのデータを格納するように動作し得る。例えば、マルチウェイキャッシュ１３０は、メモリ１４０から最大４つまでの６４キロバイト（ｋｂ）ページを格納することができる２５６キロバイト（ｋｂ）の４ウェイキャッシュでありうる。
【００１７】
[0025]  メモリ１４０は、マルチウェイキャッシュ１３０よりも上位のメモリでありうる。例えば、メモリ１４０は、プロセッサ１１０からアクセス可能なランダムアクセスメモリ（ＲＡＭ）でありうる。メモリ１４０は、マルチウェイキャッシュ１３０と比較した場合、増大された待ち時間（レイテンシー）とともに、マルチウェイキャッシュ１３０よりも多くの格納スペースを提供しうる。加えて、プロセッサ１１０によるメモリ１４０の使用は、マルチウェイキャッシュ１３０の使用に比べて追加の電力を伴いうる。例えば、メモリ１４０の使用は、プロセッサ１１０外部の１つまたは複数のデータバスに電力を供給することを伴いうる。
【００１８】
[0026]  特定の実施形態では、メモリ１４０は、マルチウェイキャッシュ１３０のページサイズと実質的に等しいページサイズを有するページにデータを格納する。例えば、メモリ１４０とマルチウェイキャッシュ１３０の両方が、６４ｋｂのページサイズを有しうる。メモリ１４０とマルチウェイキャッシュ１３０が等しいページサイズを有する場合、メモリ１４０の単一のページ内に格納されるように整列されたメモリイメージ（例えば、例示的なメモリイメージ１４２、１４４、および１４６）は、マルチウェイキャッシュ１３０の単一のページにロードされうる。例えば、図１に例示されるように、メモリイメージ１４２、１４４、および１４６の各々は、マルチウェイキャッシュ１３０の単一のページにロードされうる。特定の実施形態では、メモリイメージ１４２、１４４、および１４６は、特定のオーディオデコーダと関連づけられる。メモリイメージ１４２、１４４、および１４６をマルチウェイキャッシュ１３０にロードすることは、マルチウェイキャッシュ１３０においていずれのキャッシュミスも引き起こすことなく、またＲＡＭ １４０にアクセスすることなく、オーディオデコーディングを可能にしうる。メモリ１４０はまた、他のオーディオデコーダおよびアプリケーションと関連づけられた命令およびデータ１４８、１４９を格納しうる。
【００１９】
[0027]  動作中、データは、プロセッサコア１２０のオーディオデコーディングブロック１２２によって発行されたメモリアクセス要求（例えば、リードおよびライト要求）に応答して、マルチウェイキャッシュ１３０にロードされうる。アクセス要求がマルチウェイキャッシュ１３０にキャッシュされていないメモリアドレスに対応する場合、キャッシュミスが発生しうる。キャッシュミスに応答して、メモリアドレスを含むページのすべてまたは一部分が、メモリ１４０からマルチウェイキャッシュ１３０にロードされうる。あるいは、アクセス要求がマルチウェイキャッシュ１３０にキャッシュされているメモリアドレスに対応する場合、このアクセス要求は、キャッシュミスの発生なくサービスされうる。
【００２０】
[0028]  システム１００においてデコードおよび再生されている各オーディオストリームが同じタイプのものである場合（例えば、ＭＰ３オーディオストリームのみがデコードおよび再生されている）、システム１００は、低電力のデコーディングおよび再生モードに遷移されうる。低電力モードでは、オーディオデコーディングの命令およびデータ（例えば、メモリイメージ１４２、１４４、および１４６において格納されたＭＰ３デコーダの命令およびデータ）は、メモリ１４０からマルチウェイキャッシュ１３０にロードされ、これにより、（１つまたは複数の）オーディオストリームを処理することに関連づけられたすべてのメモリ要求は、マルチウェイキャッシュ１３０におけるキャッシュされたメモリイメージに対応し、オーディオストリームの処理によって引き起こされるキャッシュミスは起こらない。
【００２１】
[0029]  図１のシステム１００は、オーディオストリームの低電力のデコーディングおよび再生を可能にすることが理解されるであろう。例えば、図１のシステム１００は、メモリイメージ１４２、１４４、および１４６をマルチウェイキャッシュ１３０にロードして、キャッシュミスを引き起こすことなくオーディオデコーディングを可能にし、それによって、システム１００の全体的な電力消費を低減させる。したがって、単一のキャッシュページに対応するようにメモリイメージ１４２、１４４、および１４６をサイズ調整および整列することによって、アプリケーションのプログラマおよび開発者は、図１のシステム１００において低電力のデコーディングおよび再生を可能にし得る。加えて、低電力の再生は、マルチウェイキャッシュ１３０を、再生中に可聴エフェクト（audible effect）を引き起こしうる密結合メモリ（ＴＭＣ）構成に変換することなく達成できる。加えて、マルチウェイキャッシュ１３０のサイズに基づいて、低電力のデコーディングは、異なるストリームタイプの同時並行ストリームにまで拡張されうる。例えば、マルチウェイキャッシュは、ＭＰ３とＡＡＣ＋の両方のために必要なメモリイメージを収容するのに十分なサイズを有し、それによって、低電力の同時並行ＭＰ３およびＡＡＣ＋デコーディングおよび再生のシナリオのためのサポートを可能にする。低電力のデコーディングおよび再生はまた、超音波、グラフィックス、およびビデオなどの非オーディオ処理アプリケーションにまで拡張されうる。
【００２２】
[0030]  図２は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行うためのシステム２００の別の特定の実施形態を例示するブロック図である。システム２００は、４ウェイキャッシュ２１０およびＲＡＭ ２２０を含む。具体的には、図２に例示される実施形態は、同時並行のデコーディングおよび再生のシナリオから低電力のデコーディングおよび再生のシナリオへの第１の遷移２３０と、低電力のデコーディングおよび再生シナリオから同時並行のデコーディングおよび再生のシナリオへの第２の遷移２３１とを図示する。
【００２３】
[0031]  ＲＡＭ ２２０は、複数のオーディオデコーダと関連づけられたデータを格納しうる。例えば、ＲＡＭ ２２０は、各デコーダに対し、（複数の）デコーディングイメージ（例えば、デコーディングプログラム命令）と（複数の）動的バッファ割り当て領域を格納しうる。ＲＡＭ ２２０はまた、後処理イメージ（post-processing image）のような、複数のデコーダに共通の１つまたは複数のメモリイメージを格納しうる。あるいは、異なる後処理イメージが、オーディオストリームのタイプごとに存在しうる。図２に例示される特定の実施形態では、ＲＡＭ ２２０は、２つのＡＡＣ＋デコーディングイメージ２１１−２１２、ＭＰ３デコーディングイメージ２１３、ＰＣＭデコーディングイメージ２１６、すべてのオーディオストリームに適用可能な後処理イメージ２１４、ＡＡＣ＋動的バッファ割り当て領域２１７、ＭＰ３動的バッファ割り当て領域２１５、およびＰＣＭ動的バッファ割り当て領域２１８を含む。メモリイメージ２１１−２１８が、低電力モードのみならず、非低電力モードの両方で、オーディオのデコーディングおよび再生のために使用されうることに留意されたい。低電力モードと非低電力モードのために同じメモリイメージを使用する能力は、低電力モードでのみ使用可能な専用メモリイメージに必要とされるものを削除することによって、ＲＡＭ ２２０内のスペースを節約しうる。また、メモリイメージ２１１−２１８は、４ウェイキャッシュ２１０の単一のページにロードされるようにサイズ調整および整列されるが、低電力のデコーディングとの互換性がないオーディオデコーダのためのメモリイメージは、そのようにサイズ調整および整列されない場合があることにも留意されたい。
【００２４】
[0032]  初期構成では、４ウェイキャッシュ２１０は、異なるストリームタイプを有する同時並行ストリームをデコードする間に使用されうる。例えば、４ウェイキャッシュ２１０は、図２の上方部分に例示されるように、１つまたは複数のＡＡＣ＋ストリームおよび１つまたは複数のＭＰ３ストリームを同時並行にデコードする間に使用されうる。例示のために、４ウェイキャッシュ２１０は、ＭＰ３およびＡＡＣ＋オーディオの同時並行処理の間に使用される最大６個までのメモリイメージからの部分を含む部分データ２０１を格納しうる。部分データ２０１は、１つまたは複数のメモリイメージ２１１−２１５および２１７の最近アクセスされた部分を含みうる。ＰＣＭオーディオは処理されていないので、ＰＣＭデコーディングイメージ２１６またはＰＣＭ動的バッファ割り当て領域２１８またはからのデータは、４ウェイキャッシュ２１０に存在しない。
【００２５】
キャッシュミスは、このような同時並行処理の間に発生しうる。例えば、ＡＡＣ＋ストリーム処理は、４つのメモリイメージ（ＡＡＣ＋デコーディングイメージ２１１−２１２、ＡＡＣ＋動的バッファ割り当て領域２１７、および後処理イメージ２１４）に対するメモリアクセス要求を含み、ＭＰ３ストリーム処理は、３つのメモリイメージ（ＭＰ３デコーディングイメージ２１３、ＭＰ３動的バッファ割り当て領域２１５、および後処理イメージ２１４）へのメモリアクセス要求を含みうる。４ウェイキャッシュ２１０は、６個すべてのメモリイメージの全部を収容することができないので、ＡＡＣ＋ストリームとＭＰ３ストリームの同時並行処理は、システム２００においてキャッシュミスを引き起こしうる。
【００２６】
[0033]  動作中、（複数の）ＡＡＣ＋ストリームの終了の際に、システム２００は、図２の下方部分に例示されるような低電力構成への第１の遷移２３０を経験しうる。例えば、ＭＰ３デコーディングイメージ２１３、ＭＰ３動的バッファ割り当て領域２１５、および後処理イメージ２１４は、低電力構成における４ウェイキャッシュ２１０内に共存しうる。３つすべてのイメージ２１３、２１４、および２１５が、４ウェイキャッシュ２１０においてキャッシュされている場合、ＭＰ３デコーディングおよび再生は、キャッシュミスなく起こることができ、それによって、ＭＰ３ストリームの低電力処理を可能にする。さらに、低電力処理は、ＭＰ３ストリームにおける可聴中断なく、またシステム２００外部の任意のプロセッサ（例えば、アプリケーションプロセッサ）からの介入なしに行われうる。
【００２７】
[0034]  特定の実施形態では、低電力構成への第１の遷移２３０は、４ウェイキャッシュ２１０にメモリイメージをロードする処理を開始させる。例えば、第１の遷移２３０は、特定のメモリページからのデータ（即ち、特定のメモリイメージ）を、特定のキャッシュページのキャッシュラインに入れる（prime）ように動作可能であるシステム２００のバックグラウンドスレッド２４０を開始させる。バックグラウンドスレッド２４０は、オーディオデコーディング処理の開始または停止（例えば、オーディオストリームの開始または停止）を検出することに応答して、プロセッサによって開始および実行されうる。
【００２８】
[0035]  バックグラウンドスレッド２４０が４ウェイキャッシュ２１０にメモリイメージを入れる（prime）ために使用される場合、低電力のデコーディングおよび再生の間に生成されるキャッシュミスの数は、グラフ２９０の第１の曲線２９８によって表されうる。第１の曲線２９８によって例示されるように、キャッシュミスの数は、メモリイメージが４ウェイキャッシュ２１０に入れられている短い時間期間の間に減少して、一旦メモリイメージが４ウェイキャッシュ２１０において完全にキャッシュされるとゼロになる。バックグラウンドスレッド２４０が使用されない場合のキャッシュミスの発生は、第２の曲線２９９によって表されうる。第２の曲線２９９によって例示されるように、システム２００は、バックグラウンドスレッド２４０が使用されない場合、ゼロのキャッシュミスに達するのにより時間がかかることがあり、これは、システム２００においてより大きな電力消費を伴いうる。
【００２９】
[0036]  あるいは、またはこれに加えて、システム２００は、低電力のＭＰ３処理から同時並行のＡＣＣ＋およびＭＰ３処理への第２の遷移２３１を経験しうる。第２の遷移２３１は、可聴中断なく行われうる。例えば、ＭＰ３デコーダが（複数の）ＭＰ３ストリームをデコードし続けるとともに、ＡＡＣ＋デコーダが開始されうる。ＡＡＣ＋デコーダのためのコード、データ、および動的メモリ割り当ての部分（例えば、メモリイメージ２１１、２１２、および２１７によって表される）がアクセスされて、４ウェイキャッシュ２１０においてキャッシュされうる。同時並行処理の間、４ウェイキャッシュ２１０は、部分データ２０１を格納することができ、ここで、部分データ２０１は、ＭＰ３メモリイメージ２１３、２１５、ＡＡＣ＋メモリイメージ２１１、２１２、２１７、および後処理イメージ２１４の最近アクセスされた部分を表すことができる。ＭＰ３とＡＡＣ＋オーディオを同時並行に処理することは、キャッシュミスを引き起こしうるが、ＭＰ３メモリイメージ２１３、２１５とＡＡＣ＋メモリイメージ２１１、２１２、２１７の両方が４ウェイキャッシュ２１０のページサイズに整列されているという事実は、システム２００において改善されたキャッシュ効率を提供しうる。
【００３０】
[0037]  図３は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行うためのシステム３００の別の特定の実施形態を例示するブロック図である。具体的には、図３に例示される実施形態は、第１の低電力のデコーディングおよび再生シナリオから、第２の低電力のデコーディングおよび再生シナリオへの遷移３３０を図示する。
【００３１】
[0038]  初期構成では、図３の上方部分に例示さるように、４ウェイキャッシュ２１０は、低電力モードでの１つまたは複数のＭＰ３ストリームの処理中に使用されうる。例えば、ＭＰ３ストリームの低電力処理は、図２を参照して説明および例示されたように達成されうる。
【００３２】
[0039]  動作中、１つまたは複数のＭＰ３ストリームが終了し、１つまたは複数のＰＣＭストリームが開始し得る。これに応答して、システム３００は、図３の下方部分に例示されるように、低電力のＭＰ３処理モードから低電力のＰＣＭ処理モードに遷移３３０しうる。例えば、ＰＣＭ動的バッファ割り当て領域２１８およびＰＣＭデコーディングイメージ２１６がバックグラウンドスレッド２４０によって４ウェイキャッシュ２１０に入れられている間、後処理イメージ２１４は、４ウェイキャッシュ２１０内に残りうる。一旦、３つすべてのイメージ２１８、２１６、および２１４が、４ウェイキャッシュ２１０においてキャッシュされると、キャッシュミスなくＰＣＭデコーディングおよび再生が行われ、それによって、ＰＣＭストリームの低電力処理を可能にする。さらに、低電力処理は、（複数の）ＭＰ３ストリームまたは（複数の）ＰＣＭストリームにおける可聴中断（例えば、「ポッピング」ノイズ）なしに行われうる。
【００３３】
[0040]  図４は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行うためのシステム４００の別の特定の実施形態を例示するブロック図である。システム４００は、ＲＡＭ ４２０と通信可能に結合されたアプリケーションプロセッサ４１０およびＤＳＰ ４３０を含む。ＤＳＰ ４３０はまた、４ウェイキャッシュ２１０に結合される。例示的な実施形態では、ＤＳＰ ４３０は、図１のプロセッサ１１０である。代替の実施形態では、４ウェイキャッシュ２１０は、ＤＳＰ ２１０内に含まれうる。
【００３４】
[0041]  アプリケーションプロセッサ４１０は、未処理のオーディオビットストリームをＤＳＰ ４３０に提供しうる。例えば、アプリケーションプロセッサ４１０は、未処理のビットストリームをＲＡＭ ４２０内に配置することができ、この未処理のビットストリームについてＤＳＰ ４３０に通知することができる。これに応答して、ＤＳＰ ４３０は、ＲＡＭ ４２０から未処理のビットストリームを取り出しうる。
【００３５】
[0042]  特定の実施形態では、ＤＳＰ ４３０は、低電力メモリ（ＬＰＭ）４４０を含むか、あるいはそれに結合される。例えば、ＬＰＭ ４４０は、ビットストリームバッファ４４２と、ＤＳＰカーネルコードおよびデータ４４４と、出力ポート（例えば、オーディオフロントエンドポート）コードおよびデータ４４６とを含みうる。ＤＳＰカーネルコードおよびデータ４４４と出力ポートコードおよびデータ４４６は、複数のオーディオデコーダに共通のプログラム命令を含みうる。特定の実施形態では、ＬＰＭ ４４０は、４ウェイキャッシュ２１０に対する補完として機能しうる。すなわち、低電力のデコーディングおよび再生は、４ウェイキャッシュ２１０およびＬＰＭ ４４０の使用を伴うが、ＲＡＭ ４２０の使用を伴わない。ＤＳＰ ４３０は、バーストにおいて、ＲＡＭ４２０から未処理のビットストリームを取り出し（例えば、固定サイズまたは可変サイズの部分の周期的な取り出し）、ビットストリームバッファ４４２において未処理のビットストリームを格納し得る。
【００３６】
[0043]  ＤＳＰ ４３０はまた、１つまたは複数のデコーダ、後処理回路、ミキシング／ルーティング行列、共通処理回路、および出力ポートを含みうる。各デコーダ（例えば、例示的なデコーダ４５２、４５４、および４５６）は、ビットストリームバッファ４４２からデータを受信し、受信されたデータをデコードしてデコードされたデータを生成し、デコードされたデータを後処理回路（例えば、例示的な後処理回路４６２、４６４、および４６６）に送信するように動作可能である。各後処理回路は、１つまたは複数の後処理動作をデコードされたデータに適用して後処理されたデータを生成し、後処理されたデータをミキシングおよびルーティング行列４７０に送信しうる。特定の実施形態では、後処理動作は、デコーダおよびオーディオストリームのタイプに固有である。例えば、ＭＰ３の後処理動作は、ＰＣＭの後処理動作とは区別される。あるいは、後処理動作は、複数のタイプのデコーダおよびオーディオストリームに共通の動作を含みうる。
【００３７】
[0044]  行列４７０は、後処理されたデータを共通処理回路（例えば、例示的な共通処理回路４８２、４８４、および４８６）へルーティングしうる。共通処理回路は、出力の準備が整った処理されたデータを生成するために、１つまたは複数の共通処理動作を後処理されたデータに適用しうる。共通処理動作は、処理中のビットストリームのタイプに関係なく適用される、デコーダに不可知な動作でありうる。処理されたデータは、出力ポート（例えば、例示的な出力ポート４９２、４９４、および４９６）を介して出力されうる。例示的な実施形態では、各出力ポートは、システム４００の異なる出力に対応する。例えば、図４に例示されるように、第１の出力ポート４９２はＨＤＭＩ（登録商標）出力に対応し、第２の出力ポート４９４はヘッドセット出力に対応する。
【００３８】
[0045]  システム４００における動作は、典型的なユースケース−ユーザがモバイルフォンのヘッドセット出力を介してＭＰ３の曲を聴いている−を参照して説明される。ある特定の状況では（例えば、他のオーディオストリームまたは他のタイプのオーディオストリームがデコードされていない場合）、このユースケースは、低電力のオーディオのデコーディングおよび再生のユースケースを表しうる。アプリケーションプロセッサ４１０は、ＭＰ３の曲（またはその一部分）に対応するビットストリームをＲＡＭ ４２０に配置し、このビットストリームについてＤＳＰ ４３０に通知し得る。これに応答して、ＤＳＰ ４３０は、ビットストリームをＲＡＭ ４２０からＬＰＭ ４４０のビットストリームバッファ４４２にコピーしうる。
【００３９】
[0046]  その後、ＭＰ３ビットストリームは、デコードされ、後処理され、ミキシングされ、共通処理され、ヘッドセット出力ポート４９４を介して出力され、それによって、ユーザがＭＰ３の曲を聴くことを可能にする。これらの動作中、ＭＰ３処理に対応するすべてのメモリアクセスは、ＬＰＭ ４４０と、４ウェイキャッシュ２１０におけるメモリイメージ２１３、２１４、および２１５とを使用してサービスされうる。例えば、メモリイメージ２１３、２１４、および２１５は、ＭＰ３処理の開始において、図２のバックグラウンドスレッド２４０のようなバックグラウンドスレッドによって、４ウェイキャッシュ２１０にロードされている。
【００４０】
[0047]  ビットストリームバッファ４４２から出力ポートまでの処理経路が、４ウェイキャッシュ２１０とＬＰＭ ４４０を使用するが、ＲＡＭ ４２０を使用しないことによって、低電力のデコーディングおよび再生のユースケースを表すことが理解されるであろう。例えば、ビットストリームバッファ４４２からヘッドセット出力ポート４９４までの経路（図４の網掛けによって示される）は、ＭＰ３の曲をデコードおよび再生することと関連づけられる低電力のユースケースを表す。
【００４１】
[0048]  特定の実施形態では、低電力のユースケースは、（例えば、図２を参照して例示されるように）同時並行オーディオのユースケースからの遷移に続いて起こりうる。例えば、オーディオデコーダ４５２は、オーディオデコーダ４５４がＭＰ３の曲をデコードする間に、通話により生成されるスピーチオーディオストリームをデコードすることができる。通話が終了すると、スピーチオーディオストリームの終了が検出され、オーディオデコーダ４５２は、非アクティブになる。しかしながら、ＭＰ３の曲は再生し続けるので、オーディオデコーダ４５４は、ＭＰ３の曲をデコードし続ける。４ウェイキャッシュ２１０内にまだない任意のメモリイメージ２１３、２１４、および２１５は、スピーチオーディオストリームまたはＭＰ３オーディオストリームにおける可聴中断なく、またアプリケーションプロセッサ４１０からの介入なしに、４ウェイキャッシュ２１０にロードされうる。
【００４２】
[0049]  別の特定の実施形態では、低電力のユースケースは、（例えば、図３を参照して例示されるような）別の低電力のユースケースからの遷移に続いて起こりうる。例えば、オーディオデコーダ４５２は、通話によって生成されるスピーチオーディオストリームを（キャッシュミスなく）デコードし、一方、オーディオデコーダ４５４は（例えば、ユーザがＭＰ３の曲を聴いていないので）非アクティブである。通話が終了すると、スピーチオーディオストリームの終了が検出される。さらに、ユーザは、ＭＰ３の曲の再生を開始するためにコマンドを入力し、ＭＰ３ストリームを開始させる。これに応答して、メモリイメージ２１３、２１４、および２１５は、４ウェイキャッシュ２１０にロードされて、スピーチオーディオストリームまたはＭＰ３オーディオストリームにおける可聴中断なく、またアプリケーションプロセッサ４１０からの介入なしに、ＭＰ３の曲の低電力処理を可能にしうる。
【００４３】
[0050]  図５は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生を行うためのシステム５００の別の特定の実施形態を例示する図である。システム５００は、システムファブリック（system fabric）５１０を介して互いに通信可能に結合されたアプリケーションプロセッサ５０２、メモリ５０４、リソースマネージャ５０６、および低電力のオーディオサブシステム（ＬＰＡ−ＳＳ）５２０を含む。例示的な実施形態では、アプリケーションプロセッサ５０２は、図４のアプリケーションプロセッサ４１０であり、また、メモリ５０４は、図１のメモリ１４０、図２のメモリ２２０、または図４のＲＡＭ ４２０である。特定の実施形態では、メモリ５０４は、３２ビットのダブルデータレート（ＤＤＲ）シンクロナスＤＲＡＭ（ＳＤＲＡＭ：synchronous dynamic random access memory）である。
【００４４】
[0051]  ＬＰＡ−ＳＳ ５２０は、ＡＨＢマスタブリッジ５２１、ＡＨＢスレーブブリッジ５２２、ＤＭＡコントローラ５４０、１２８ｋｂ ＬＰＭ ５５０、および２５６ｋｂマルチウェイＬ２キャッシュ５７０に結合されたオーディオＤＳＰ ５６０などの、ＬＰＡ−ＳＳ ５２０の様々なコンポーネントの間でデータを通信するように動作可能なアドバンスト高性能バス（ＡＨＢ）５３０を含みうる。例示的な実施形態では、ＬＰＭ ５５０は、図４のＬＰＭ ４４０であり、キャッシュ５７０は、図１のマルチウェイキャッシュ１３０または図２の４ウェイキャッシュ２１０である。オーディオＤＳＰ ５６０は、リソースマネージャ５０６からのＤＳＰ割込み（interrupts）を受信しうる。例えば、オーディオＤＳＰ割込みは、アプリケーションプロセッサ５０２、オーディオ入力または出力デバイス、あるいは何らかの他の割込みソースによって生成されうる。
【００４５】
[0052]  動作時に、アプリケーションプロセッサ５０２は、オーディオビットストリーム（例えば、ＭＰ３の曲）をメモリ５０４に配置しうる。アプリケーションプロセッサ５０２はまた、（例えば、リソースマネージャ５０６によって発行されたオーディオＤＳＰ割込みを介して）このビットストリームについてオーディオＤＳＰ ５６０に通知しうる。これに応答して、ＤＭＡコントローラ５４０は、これらビットストリームをメモリ５０４からＬＰＭ ５５０にロードしうる。あるいは、ＤＭＡコントローラ５４０は、割込みベースのメカニズムに依存する代わりに、メモリ５０４からのビットストリームのバーストを周期的に取り出しうる。オーディオＤＳＰ ５６０は、ＬＰＭ ５５０内のビットストリームを処理して出力オーディオを生成する。ＬＰＡ−ＳＳ ５２０が低電力のユースケースにある場合、オーディオＤＳＰ ５６０によって生成されたすべてのメモリ要求は、ＬＰＭ ５５０またはキャッシュ５７０によって（例えば、キャッシュ５７０においてロードされたメモリイメージを使用して）サービスされうる。低電力のユースケースの間、アプリケーションプロセッサ５０２、メモリ５０４、リソースマネージャ５０６、およびシステムファブリック５１０に適用される電力は、低減され、それによって、システム５００において電力を保存することが理解されるであろう。例えば、１つまたは複数のアプリケーションプロセッサ５０２、メモリ５０４、リソースマネージャ５０６、およびシステムファブリック５１０は、低電力モードまたはスリープモードにされか、あるいは電源が切られる。
【００４６】
[0053]  オーディオストリームを処理することは、動的に割り当てられたバッファの使用を伴いうる。例えば、図２−図４に例示されるように、１つまたは複数の動的メモリ割り当て領域は、低電力のデコーディングおよび再生の間にマルチウェイキャッシュ内にキャッシュされうる。特定の実施形態では、（複数の）動的メモリ割り当て領域は、図６によって例示され全般的に６００と指定される動的メモリ管理技術にしたがって管理される動的メモリヒープ（dynamic memory heap）を表す。技術６００は、動的バッファの一定時間（即ち、Ｏ（１））の割り当ておよび割り当て解除を達成するために、低電力のユースケースの間のみならず、非低電力のユースケースの間にも使用されうる。
【００４７】
[0054]  技術６００は、低電力のオーディオのデコーディングおよび再生のユースケースに適用されるものとして例示され、ここで、メモリの領域６１０が割り当てられる。割り当てられた領域６１０は、マルチウェイキャッシュの単一のページに対応するように整列およびサイズ調整されうる。例えば、割り当てられた領域は６４ｋｂであり、２５６ｋｂの４ウェイキャッシュの単一の６４ｋｂページにロードできるように整列されうる。その後、割り当てられた領域６１０は、複数の所定のバッファに分割される。例えば、割り当てられた領域６１０は、図６に例示されるように、３２バイトのバッファ６１２、１２８バイトのバッファ６１４、および５１２バイトのバッファ６１６に分割されうる。データ構造（例えば、スタックまたはキュー）は、各バッファサイズに対し加えられ（populated）、各データ構造は、バッファサイズの利用可能なバッファへのポインタを格納する。例えば、データ構造６４１、６４２、および６４３は、それぞれバッファ６１２、６１４、および６１６に対応するように加えられる。
【００４８】
[0055]  ビットマスク６３０は、要求されたバッファサイズを満足する十分な大きさの所定のバッファが利用可能であるかどうかを示すために作成されうる。ビットマスクの各ビット位置は、特定のバッファサイズに対応し、またビット位置における値は、割り当てられた領域６１０において、特定のバッファサイズのバッファが利用可能であるかどうかを示す。図６の例示において、利用可能でないバッファは、「Ｘ」または「使用中」で示されている。
【００４９】
[0056]  図６の特定の実施形態では、ビットマスク６３０の１番目のビット位置は、２0バイト（即ち、１バイト）のバッファに対応し、また１番目のビット位置における値「０」は、割り当てられた領域６１０においていずれの１バイトのバッファも利用可能でないことを示す。５番目のビット位置６３１は、２5バイト（即ち、３２バイト）のバッファに対応し、またその値「１」は、３２バイトのバッファが、割り当てられた領域６１０において利用可能であり、データ構造６４１において利用可能な３２バイトのバッファへのポインタが存在するということを示す。７番目のビット位置６３２は、２7バイト（即ち、１２８バイト）のバッファに対応し、またその値「０」は、（即ち、割り当てられた領域６１０におけるすべての１２８バイトのバッファが「使用中」であるので、）割り当てられた領域６１０においていずれの１２８バイトのバッファも利用可能でないことを示す。９番目のビット位置６３３は、２9バイト（即ち、５１２バイト）のバッファに対応し、またその値「１」は、５１２バイトのバッファが、割り当てられた領域６１０において利用可能であり、データ構造６４３において利用可能な５１２バイトのバッファへのポインタが存在するということを示す。
【００５０】
[0057]  特定の実施形態では、各所定のバッファは、サイズ＝２n＋８バイト、という式に従うサイズを有し、ここで、ｎは１以上の整数である。余分の８バイトは、以下に説明されるように、割り当て解除の間に使用されるリターンポインタおよび破損テストワード（corruption test word）を表しうる。したがって、３２バイトのバッファ６１２は、実際には４０バイトを占有し、１２８バイトのバッファは、実際には１３０バイトを占有し、５１２バイトのバッファ６１６は、実際には５２０バイトを占有しうる。
【００５１】
[0058]  動作時に、割り当てられた領域６１０は、マルチウェイキャッシュにおいてキャッシュされ、オーディオデコーディングを可能にするために、１つまたは複数のオーディオデコーダがプロセッサにおいて実行するアクセスを可能にし、ここで、オーディオデコーディングに対応するすべての動的メモリ割り当て要求は、割り当てられた領域６１０から満たされる。すなわち、動的メモリ割り当てによるいずれのキャッシュミスも、オーディオデコーディングによって生成されることはない。
【００５２】
[0059]  特定の要求されたサイズのバッファに関する要求が受信された場合、ビットマスク６３０は、要求されたサイズを収容するのに十分な大きさのバッファが利用可能であるかどうかを決定するために調べられる（examined）。例えば、３２バイトのバッファが要求された場合、ビットマスク６３０は、そのサイズが３２バイト以上の任意バッファが利用可能であるかどうかをチェックするために調べられる。特定の実施形態では、一定時間で実行可能な単一の先行／末尾ゼロ（leading/trailing zeroes）のＤＳＰコマンドは、ビットマスク６３０、要求されたバッファサイズ、またはその両方を調べるために使用される。例えば、５番目のビット位置６３０における「１」は、要求を満たすために３２バイトのバッファが利用可能であることを示す。データ構造６４１からのポインタが、動的メモリ割り当て要求を満たすために提供されうる（また、データ構造６４１から除去されうる）。提供されたポインタがデータ構造の最後に残っているポインタである場合、ビットマスク６３０の対応する値は、「０」にセットされうる。ポインタを提供することおよびビットマスク値をセットすることもまた、（例えば、スタック／キューの「ポップ（pop）」動作および書き込みコマンドを使用して）一定時間で行われうる。
【００５３】
[0060]  例えば、代表的なバッファ６２０へのポインタが提供されうる。バッファ６２０は、３２バイトのバッファ６２２、４バイトの破損テストワード６２６、および４バイトのリターンポインタ６２４を含みうる。バッファ６２０を割り当て解除する要求が受信された場合、破損テストワード６２６が評価されうる（evaluated）。破損テストワード６２６（例えば、疑似ランダムの３２ビット値）が変更されている（modified）場合、バッファ６２０は、（例えば、バッファ領域を越えたデータによって不適切に上書きされたことにより）破損していると決定され、エラーが返される。破損テストワード６２６が変更されていないと決定された場合、バッファ６２０は、割り当て解除されうる。バッファ６２０を割り当て解除することは、バッファ６２０のリターンポインタと識別されるデータ構造６４１内にバッファ６２０へのポインタを配置することを含む。バッファ６２０を割り当て解除することはまた、ビットマスク６３０の対応する値を「１」にセットすることを含む。データ構造内にポインタを配置することおよびビットマスク値をセットすることは、(例えば、スタック／キューの「プッシュ（push）」動作およびライト（書き込み）コマンドを使用して)一定時間で行われる。
【００５４】
[0061]  図６の技術６００は、動的メモリの一定時間割り当ておよび割り当て解除を提供しうることが理解されるであろう。すなわち、図６の技術６００は、割り当てられた領域６１０のサイズとは無関係に動作することができ、したがって、１つのキャッシュよりも大きなスペースにおける動的メモリ割り当てに適用し得る。例示的な実施形態では、図６の技術６００は、他のソフトウェア開発者によって利用されうるメモリ管理ソフトウェアとして実装できる。例えば、図６の技術６００は、１つまたは複数のヘッダおよびソースファイル（例えば、ＣまたはＣ＋＋ファイル）を使用して実装でき、また、既存の動的メモリ管理技術（例えば、ｍａｌｌｏｃ（）およびｆｒｅｅ（））の代わりに使用できる。データ構造６４１−６４３の同じ側から「プッシュすること（pushing）」および「ポップすること（popping）」によって、図６の技術６００は、可能な範囲でバッファを再利用することができ、それによって、動的割り当てメモリの全体的なフットプリント（footprint）サイズを低減させる。
【００５５】
[0062]  図７は、キャッシュされたイメージを用いた低電力オーディオデコーディングおよび再生方法７００の特定の実施形態を例示するフロー図である。例示的な実施形態では、方法７００は、図１のシステム１００、図２のシステム２００、図３のシステム３００、図４のシステム４００、または図５のシステム５００において行われうる。
【００５６】
[0063]  方法７００は、７０２では、ＤＳＰにおいて低電力オーディオデコーディングシナリオを検出することを含む。低電力オーディオデコーディングシナリオは、単一のオーディオデコーディング処理の開始、または同時並行のオーディオデコーディングから単一のデコーディング処理への遷移に対応しうる。例えば、低電力オーディオデコーディングシナリオは、図４のＬＰＭ ４４０に格納されたＭＰ３ストリームの開始に基づいて検出されうる。あるいは、低電力オーディオデコーディングシナリオは、図２の第１の遷移２３０または図３の遷移３３０に基づいて検出されうる。
【００５７】
[0064]  方法７００はまた、７０４では、ＤＳＰのオーディオデコーダと関連づけられた１つまたは複数のメモリイメージをマルチウェイキャッシュにロードすることを含む。マルチウェイキャッシュは、ＤＳＰからのアクセスが可能であり、各メモリイメージは、マルチウェイキャッシュのページサイズを超えないようにサイズ調整される。例えば、図４において、メモリイメージ２１３、２１４、および２１５は、ＤＳＰ４３０からのアクセスが可能な４ウェイキャッシュ２１０にロードされうる。メモリイメージ２１３、２１４、および２１５は、４ウェイキャッシュ２１０のページサイズを超えないようにサイズ調整され、また、オーディオデコーダ４５４に対応し得る。（例えば、バックグラウンドスレッド２４０によって）メモリイメージ２１３、２１４、および２１５が、４ウェイキャッシュ２１０にロードされている間、オーディオデコーディングは、低減するキャッシュミスの数を低減しながら、オーディオデコーダにおいて続行しうる。例えば、キャッシュミスの数は、図２の第１の曲線２９８を参照して例示および説明されるように低減しうる。
【００５８】
[0065]  方法７００は、７０６において、マルチウェイキャッシュにおいてキャッシュミスを発生させることなく、またＤＳＰに利用可能なより上位のメモリにアクセスすることなく、オーディオデコーダにおいてオーディオデコーディングを行うことをさらに含みうる。例えば、図４では、オーディオデコーダ４５４は、４ウェイキャッシュ２１０においてキャッシュミスを発生させることなく、またＲＡＭ ４２０にアクセスすることなく、ＭＰ３ストリームをデコードしうる。例えば、図２の第１の曲線２９８を参照して例示および説明されたように、各々のメモリイメージ２１３、２１４、および２１５が、バクグラウンドスレッド２４０によって４ウェイキャッシュ２１０にロードされていた場合、キャッシュミスの数はゼロに低下しうる。
【００５９】
[0066]  他の実施形態では、方法７００は、オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを、プロセッサからのアクセスが可能なマルチウェイキャッシュにロードすることを含み、ここで、１つまたは複数のメモリイメージの各々は、マルチウェイキャッシュのページサイズを超えないようにサイズ調整される。マルチウェイキャッシュは、４ウェイキャッシュを含み、また、プロセッサは、デジタル信号プロセッサを含み得る。１つまたは複数のメモリイメージをロードすることは、オーディオデコーダがマルチウェイキャッシュにおいていずれのキャッシュミスも発生させることなく、オーディオデコーディングを可能にし、ここで、オーディオデコーディングは、プロセッサに利用可能なより上位のメモリにアクセスすることなく、マルチウェイキャッシュに１つまたは複数のメモリイメージをロードした後に行われる。各メモリイメージのサイズは、マルチウェイキャッシュのページサイズに等しく、また、オーディオデコーダは、１つまたは複数のオーディオストリームをデコードするように動作可能でありうる。１つまたは複数のメモリイメージは、メモリからマルチウェイキャッシュにそれぞれロードされ、マルチウェイキャッシュの対応する単一のページにロードされるように、当該メモリにおいてそれぞれ整列され得る。メモリはまた、複数のオーディオデコーダに共通の少なくとも１つのメモリイメージを含む、第２のオーディオデコーダと関連づけられた１つまたは複数のメモリイメージおよび動的メモリ割り当て領域を含みうる。方法７００は、プロセッサと一体化されたメモリにおいて、複数のオーディオデコーダに共通のプログラム命令にアクセスすることを含みうる。
【００６０】
[0067]  第１の１つまたは複数のメモリイメージは、オーディオデコーダプログラム命令を含み、第２の１つまたは複数のメモリイメージは、動的メモリ割り当て領域に対応し、第３の１つまたは複数のメモリイメージは、後処理プログラム命令を含み得る。方法７００は、１つまたは複数のメモリイメージの全メモリイメージをマルチウェイキャッシュにロードさせる処理を開始することを含みうる。この処理は、バックグラウンドスレッドを含み、オーディオデコーディング処理の開始または停止を検出することに応答して開始され得る。
【００６１】
[0068]  追加の実施形態では、方法７００は、オーディオデコーダにおいて第１のオーディオストリームを、および第２のオーディオデコーダにおいて第２のオーディオストリームを、同時並行にデコードすることを含みうる。第２のオーディオストリームの終了が検出され、第２のデコーダにおける第２のオーディオストリームのデコーディングが終了される。第１のオーディオストリームは、第２のオーディオストリームのデコーディング終了後、オーディオデコーダにおいてデコードされうる。１つまたは複数のメモリイメージは、第１または第２のオーディオストリームにおける可聴中断なく、またアプリケーションプロセッサからの介入とは無関係に、マルチウェイキャッシュにロードされうる。さらなる実施形態では、方法７００は、オーディオデコーダがマルチウェイキャッシュにおいていずれのキャッシュミスも発生させことなく、オーディオデコーダにおいて第１のオーディオストリームをデコードすることを含みうる。第１のオーディオストリームの終了および第２のオーディオデコーダによってデコードされる第２のオーディオストリームの開始が検出され、第２のオーディオデコーダと関連づけられた１つまたは複数のメモリイメージが、マルチウェイキャッシュにロードされ得る。第２のオーディオストリームは、第２のオーディオデコーダがマルチウェイキャッシュにおいていずれのキャッシュミスも発生させることなく、第２のオーディオデコーダにおいてデコードされうる。第２のオーディオデコーダと関連づけられた１つまたは複数のメモリイメージは、第１または第２のオーディオストリームにおける可聴中断なく、またアプリケーションプロセッサからの介入とは無関係に、マルチウェイキャッシュにロードされうる。
【００６２】
[0069]  他の実施形態では、方法７００は、オーディオデータを受信することと、ここで、１つまたは複数のメモリイメージは、オーディオデータがこのオーディオデコーダに対応すると決定することに応答してロードされ、マルチウェイキャッシュにおいてキャッシュミスを発生させることなく、オーディオデコーダにおいてオーディオデータをデコードすることと、後処理されたオーディオデータを生成するために、デコードされたオーディオデータに１つまたは複数の後処理機能（functions）を適用することと、処理されたオーディオデータを生成するために、後処理されたデータに１つまたは複数の共通処理機能を適用することと、処理されたオーディオデータをプロセッサの出力ポートに提供することと、を含みうる。１つまたは複数の後処理機能は、オーディオデコーダに固有であり、また、１つまたは複数の共通処理機能は、複数のオーディオデコーダに共通である。
【００６３】
[0070]  図７の方法７００は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）デバイス、特定用途向け集積回路（ＡＳＩＣ）、中央処理装置（ＣＰＵ）のような処理ユニット、デジタル信号プロセッサ（ＤＳＰ）、コントローラ、別のハードウェアデバイス、ファームウェアデバイス、またはこれらの任意の組み合わせによって実装されうる。一例として、図７の方法７００は、図９に関して説明されるように、命令を実行するプロセッサによって行われうる。
【００６４】
[0071]  図８は、キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生の間の動的メモリ管理の方法８００の特定の実施形態を例示するフロー図である。例示的な実施形態では、方法８００は、図６の技術６００を参照して例示されうる。
【００６５】
[0072]  方法８００は、８０２では、メモリの領域を割り当てることを含みうる。割り当てられた領域は、マルチウェイキャッシュの単一のページに対応するように整列されて、マルチウェイキャッシュの単一のページのサイズに実質的に等しいサイズを有する。例えば、図６を参照すると、領域６１０が割り当てられ、領域６１０は、マルチウェイキャッシュのページサイズ（例えば、図５の２５６ｋｂキャッシュ５７０のページサイズ）に等しいサイズ（６４ｋｂ）を有する。
【００６６】
[0073]  方法８００はまた、８０４において、オーディオデコーディングを可能にするために、１つまたは複数のオーディオデコーダによるアクセスを可能にするために、マルチウェイキャッシュの単一のページにおいて、メモリの割り当てられた領域をキャッシュすることを含みうる。オーディオデコーディングに対応するすべての動的メモリ割り当て要求は、メモリのキャッシュされた領域から満たされうる。例えば、図６を参照すると、割り当てられた領域６１０は、低電力オーディオデコーディングを可能にするためにキャッシュされる。
【００６７】
[0074]  方法８００は、８０６において、メモリの割り当てられた領域の少なくとも一部分を、第１のバッファサイズを有する第１のバッファと第２のバッファサイズを有する第２のバッファとを含む複数の所定のバッファに分割することをさらに含みうる。例えば、図６を参照すると、割り当てられた領域６１０は、３２バイトのバッファ６１２、１２８バイトのバッファ６１４、および５１２バイトのバッファ６１６に分割される。
【００６８】
[0075]  方法８００は、８０８において、所定のバッファへのポインタを有する１つまたは複数のデータ構造を加える（populating）ことを含みうる。特定のデータ構造の各ポインタは、特定のサイズの所定のバッファを指し示す。例えば、図６を参照すると、データ構造６４１、６４２、および６４３が加えられる（ポピュレートされる）。
【００６９】
[0076]  方法８００はまた、８１０において、メモリの割り当てられた領域における利用可能なバッファを示すためにビットマスクをセットすることを含みうる。ビットマスクの第１のビットは、第１のバッファサイズを有するバッファが利用可能であるかどうかを示し、ビットマスクの第２のビットは、第２のバッファサイズを有するバッファが利用可能であるかどうかを示す。例えば、図６を参照すると、ビットマスク６３０がセットされる。
【００７０】
[0077]  方法８００は、８１２において、要求されたサイズのメモリ割り当てを示す要求を受信することをさらに含みうる。例えば、図６を参照すると、３２バイトのバッファに対する要求が受信される。方法８００は、８１４において、ビットマスクが、この要求を満たすために少なくとも１つのバッファが利用可能あることを示すかどうかを決定することを含みうる。ビットマスクが、少なくとも１つのバッファが利用可能であることを示す場合、方法８００は、８１６において、この要求を満たす最小の利用可能なバッファに対応するポインタを提供することを含みうる。例えば、図６を参照すると、バッファ６２０へのポインタが提供される。この要求を満たすのに十分な大きさのバッファが存在しないと決定された場合、方法８００は、８１８において、要求を満たすことができないというインジケーションを提供することを含みうる。
【００７１】
[0078]  図８の方法８００は、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）デバイス、特定用途向け集積回路（ＡＳＩＣ）、中央処理装置（ＣＰＵ）のような処理ユニット、デジタル信号プロセッサ（ＤＳＰ）、コントローラ、別のハードウェアデバイス、ファームウェアデバイス、またはこれらの任意の組み合わせによって実装されうる。一例として、図８の方法８００は、図９に関して説明されるように、命令を実行するプロセッサによって行われうる。
【００７２】
[0079]  図９を参照すると、電子デバイスの特定の実施形態の図が図示され、全般的に９００と指定されている。デバイス９００は、アプリケーションプロセッサ９１０およびオーディオデジタル信号プロセッサ（ＤＳＰ）９５０などの、１つまたは複数のプロセッサを含む。アプリケーションプロセッサ９１０およびオーディオＤＳＰ ９５０は、ここに開示される方法を行うように構成されたハードウェアを含みうる。アプリケーションプロセッサ９１０およびオーディオＤＳＰ ９５０はまた、ここに開示される方法を行うために実行可能なソフトウェア命令を実行するように動作可能でありうる。アプリケーションプロセッサ９１０は、ランダムアクセスメモリ（ＲＡＭ）９３２に結合される。ＲＡＭは、オーディオストリームの低電力のデコーディングおよび再生を可能にするためにキャッシュ可能な１つまたは複数のキャッシュサイズ調整されたおよびキャッシュ整列されたメモリイメージ９７０を含む。例示的な実施形態では、メモリイメージ９７０は、図１のメモリイメージ１４２−１４６、図２のメモリイメージ２１１−２１８、または図６の割り当てられた領域６１０に対応しうる。
【００７３】
[0080]  図９はまた、アプリケーションプロセッサ９１０とディスプレイ９２８とに結合されたディスプレイコントローラ９２６を示す。オーディオＤＳＰ ９５０は、コーダ／デコーダ（ＣＯＤＥＣ）９５２および１つまたは複数のポート（例えば、例示的なポート９５４および９５６）を含みうる。スピーカ９３６およびマイクロホン９３８は、それぞれポート９５４および９５６を介してオーディオＤＳＰ ９５０に結合されうる。例示的な実施形態では、ＣＯＤＥＣ ９５２は、図１のオーディオデコーディングブロック１２２またはデコーダ４５４、４５４、および４５６などの図４のＤＳＰ ４３０の１つまたは複数のコンポーネントを含む。別の例示的な実施形態では、ポート９５４および９５６は、図４の出力ポート４９２、４９４、および４９６のうちのそれぞれ一つである。オーディオＤＳＰ ９５０はまた、メモリイメージ９７０をキャッシュするように動作可能なマルチウェイキャッシュ９６０を含むか、あるいはそれに結合されうる。例示的な実施形態では、マルチウェイキャッシュ９６０は、図１のマルチウェイキャッシュ１３０、図２の４ウェイキャッシュ２１０、または図５のキャッシュ５７０である。
【００７４】
[0081]  図９はまた、無線コントローラ９４０が、アプリケーションプロセッサ９１０と、無線アンテナ９４２とに結合されうることを示す。特定の実施形態では、アプリケーションプロセッサ９１０、オーディオＤＳＰ ９５０、マルチウェイキャッシュ９６０、ディスプレイコントローラ９２６、ＲＡＭ ９３２、および無線コントローラ９４０は、システム・イン・パッケージまたはシステム・オン・チップ・デバイス９２２に含まれる。特定の実施形態では、入力デバイス９３０（例えば、キーボードまたはタッチスクリーン）および電源９４４（例えば、バッテリ）が、システム・オン・チップ・デバイス９２２に結合される。さらに、特定の実施形態では、図９に例示されるように、ディスプレイ９２８、入力デバイス９３０、スピーカ９３６、マイクロホン９３８、無線アンテナ９４２、および電源９４４は、システム・オン・チップ・デバイス９２２の外部にありうる。しかしながら、ディプレイ９２８、入力デバイス９３０、スピーカ９３６、マイクロホン９３８、無線アンテナ９４２、および電源９４４の各々は、インタフェースまたはコントローラなどの、システム・オン・チップ・デバイス９２２のコンポーネントに結合されうる。
【００７５】
[0082]  当業者は、ここに開示された実施形態に関連して説明された様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、ハードウェアプロセッサのような処理デバイスによって実行されるコンピュータソフトウェア、または両方の組み合わせとして実装されうることをさらに理解するであろう。さまざまな例示的なコンポーネント、ブロック、構成、モジュール、回路、およびステップは、一般に、それらの機能の観点から上記に説明された。このような機能が、ハードウェアとして実装されるか、あるいは実行可能なソフトウェアとして実装されるかは、特定のアプリケーションおよびシステム全体に課せられる設計制約に依存する。当業者は、各々の特定のアプリケーションに関して、多様な方法で説明された機能を実装することができるが、このような実装の決定は、本開示の範囲からの逸脱を引き起こしていると解釈されるべきでない。
【００７６】
[0083]  ここに開示された実施形態に関連して説明されたアルゴリズムまたは方法のステップは、直接ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、またはこれら２つの組み合わせにおいて、具現化（embodied）されうる。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）、ＳＴＴ−ＭＲＡＭ（spin-torque transfer MRAM）、フラッシュメモリ、読み出し専用メモリ（ＲＯＭ）、プログラマブル読み出し専用メモリ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、または当該技術分野において周知であるその他任意の形状の記憶媒体などの非一時的な記憶媒体に存在しうる。典型的な記憶媒体は、プロセッサがこの記憶媒体から情報を読み取り、またこの記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替において、記憶媒体は、プロセッサと一体化されうる。プロセッサおよび記憶媒体は、特定用途向け集積回路（ＡＳＩＣ）内に存在しうる。ＡＳＩＣは、コンピューティングデバイスまたはユーザ端末内に存在しうる。代替において、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末内に個別のコンポーネントとして存在しうる。
【００７７】
[0084]  開示された実施形態の先の説明は、開示された実施形態を製造または使用することを当業者に可能にするために提供される。これらの実施形態への様々な修正は、当業者にとって容易に明らかであり、ここに定義された原理は、本開示の範囲から逸脱することなく他の実施形態に応用されうる。したがって、本開示は、ここに示された実施形態に限定されるようには意図されず、下記の特許請求の範囲によって定義されるような原理および新規な特徴と一致する可能である最も広い範囲を与えられることとなる。
【図１】
2013539892.tif 000003
【図２】
2013539892.tif 000004
【図３】
2013539892.tif 000005
【図４】
2013539892.tif 000006
【図５】
2013539892.tif 000007
【図６】
2013539892.tif 000008
【図７】
2013539892.tif 000009
【図８】
2013539892.tif 000010
【図９】
2013539892.tif 000011
【手続補正書】
【提出日】平成25年6月11日(2013.6.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを、プロセッサからのアクセスが可能なマルチウェイキャッシュにロードすることを備え、なお、前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュのページサイズを超えないようにサイズ調整され、
前記１つまたは複数のメモリイメージの各々は、メモリから前記マルチウェイキャッシュにロードされ、前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュの対応する単一のページにロードされるように、前記メモリにおいて整列される、方法。
【請求項２】
前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることは、前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスを発生させることなく、オーディオデコーディングを可能にする、請求項１に記載の方法。
【請求項３】
前記オーディオデコーディングは、前記プロセッサに利用可能なより上位のメモリにアクセスすることなく、前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードした後に行われる、請求項２に記載の方法。
【請求項４】
各メモリイメージのサイズは、前記マルチウェイキャッシュの前記ページサイズに等しい、請求項１に記載の方法。
【請求項５】
前記オーディオデコーダは、１つまたは複数のオーディオストリームをデコードするように動作可能である、請求項１に記載の方法。
【請求項６】
前記１つまたは複数のメモリイメージの各々は、前記オーディオデコーダによるメモリアクセス要求に応答して、前記マルチウェイキャッシュにロードされる、請求項１に記載の方法。
【請求項７】
前記メモリにおける前記１つまたは複数のメモリイメージは、前記１つまたは複数のメモリイメージのすべてが前記マルチウェイキャッシュにロードされている場合にオーディオデコーディングおよび低電力のオーディオデコーディングを可能にするようにアクセス可能である、請求項１に記載の方法。
【請求項８】
前記メモリは、第２のオーディオデコーダと関連づけられた１つまたは複数のメモリイメージを含む、請求項１に記載の方法。
【請求項９】
前記メモリは、複数のオーディオデコーダに共通の少なくとも１つのメモリイメージを含む、請求項１に記載の方法。
【請求項１０】
前記メモリは、動的メモリ割り当て領域を含む、請求項１に記載の方法。
【請求項１１】
前記マルチウェイキャッシュは、４ウェイキャッシュを備える、請求項１に記載の方法。
【請求項１２】
第１の前記１つまたは複数のメモリイメージは、オーディオデコーダプログラム命令を含み、第２の前記１つまたは複数のメモリイメージは、動的メモリ割り当て領域に対応し、第３の前記１つまたは複数のメモリイメージは、後処理プログラム命令を含む、請求項１に記載の方法。
【請求項１３】
前記１つまたは複数のメモリイメージの全メモリイメージを前記マルチウェイキャッシュにロードさせる処理を開始することをさらに備える、請求項１に記載の方法。
【請求項１４】
前記処理は、前記プロセッサのバックグラウンドスレッドを備える、請求項１３に記載の方法。
【請求項１５】
前記処理は、オーディオデコーディング処理の開始または停止を検出することに応答して開始される、請求項１３に記載の方法。
【請求項１６】
前記オーディオデコーダにおいて第１のオーディオストリームを、および第２のオーディオデコーダにおいて第２のオーディオストリームを、同時並行にデコードすることと、
前記第２のオーディオストリームの終了を検出することと、
前記第２のデコーダにおいて前記第２のオーディオストリームを前記デコードすることを終了することと、
前記第２のオーディオストリームを前記デコードすることを終了した後に、前記オーディオデコーダにおいて前記第１のオーディオストリームをデコードすることと、
をさらに備える、請求項１に記載の方法。
【請求項１７】
前記１つまたは複数のメモリイメージは、前記第１のオーディオストリームまたは前記第２のオーディオストリームにおける可聴中断なく、前記マルチウェイキャッシュにロードされる、請求項１６に記載の方法。
【請求項１８】
前記１つまたは複数のメモリイメージは、アプリケーションプロセッサからの介入とは無関係に、前記マルチウェイキャッシュにロードされる、請求項１に記載の方法。
【請求項１９】
前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスを発生させことなく、前記オーディオデコーダにおいて第１のオーディオストリームをデコードすることと、
前記第１のオーディオストリームの終了と、第２のオーディオデコーダによってデコードされる第２のオーディオストリームの開始とを検出することと、
前記第２のオーディオデコーダと関連づけられた１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることと、
前記第２のオーディオデコーダが前記マルチウェイキャッシュにおいていずれのキャッシュミスも発生させることなく、前記第２のオーディオデコーダにおいて前記第２のオーディオストリームをデコードすることと、
をさらに備える、請求項１に記載の方法。
【請求項２０】
前記第２のオーディオデコーダと関連づけられた前記１つまたは複数のメモリイメージは、前記第１のオーディオストリームまたは前記第２のオーディオストリームにおける可聴中断なく、前記マルチウェイキャッシュにロードされる、請求項１９に記載の方法。
【請求項２１】
前記第２のオーディオデコーダと関連づけられた前記１つまたは複数のメモリイメージは、アプリケーションプロセッサからの介入とは無関係に、前記マルチウェイキャッシュにロードされる、請求項１９に記載の方法。
【請求項２２】
前記プロセッサと一体化されたメモリにおいて、複数のオーディオデコーダに共通のプログラム命令にアクセスすることをさらに備える、請求項１に記載の方法。
【請求項２３】
前記プロセッサは、デジタル信号プロセッサを備える、請求項１に記載の方法。
【請求項２４】
オーディオデータを受信することと、
前記１つまたは複数のメモリイメージは、前記オーディオデータが前記オーディオデコーダに対応すると決定することに応答してロードされ、
前記マルチウェイキャッシュにおいてキャッシュミスを発生させることなく、前記オーディオデコーダにおいて前記オーディオデータをデコードすることと、
処理されたオーディオデータを前記プロセッサの出力ポートに提供することと、
をさらに備える、請求項１に記載の方法。
【請求項２５】
後処理されたオーディオデータを生成するために、デコードされたオーディオデータに１つまたは複数の後処理機能を適用することと、前記１つまたは複数の後処理機能は、前記オーディオデコーダに固有である、
前記処理されたオーディオデータを生成するために、前記後処理されたデータに１つまたは複数の共通処理機能を適用することと、前記１つまたは複数の共通処理機能は、複数のオーディオデコーダに共通である、
をさらに備える、請求項２４に記載の方法。
【請求項２６】
非一時的なコンピュータ可読記憶媒体であって、プロセッサによって実行されるとき、前記プロセッサに、
オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを、プロセッサからのアクセスが可能なマルチウェイキャッシュにロードさせる命令を備え、
前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュのページサイズを超えないようにサイズ調整され、
前記１つまたは複数のメモリイメージの各々は、メモリから前記マルチウェイキャッシュにロードされ、前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュの対応する単一のページにロードされるように、前記メモリにおいて整列される、非一時的なコンピュータ可読記憶媒体。
【請求項２７】
前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることは、前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスを発生させることなく、オーディオデコーディングを可能にする、請求項２６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２８】
各メモリイメージのサイズは、前記マルチウェイキャッシュの前記ページサイズに等しい、請求項２６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項２９】
プロセッサと、
前記プロセッサからのアクセスが可能なマルチウェイキャッシュと、
を備え、
前記プロセッサは、オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードするように構成され、前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュのページサイズを超えないようにサイズ調整され、
前記１つまたは複数のメモリイメージの各々は、メモリから前記マルチウェイキャッシュにロードされ、前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュの対応する単一のページにロードされるように、前記メモリにおいて整列される、電子デバイス。
【請求項３０】
前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることは、前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスを発生させることなく、オーディオデコーディングを可能にする、請求項２９に記載の電子デバイス。
【請求項３１】
前記１つまたは複数のメモリイメージを含むランダムアクセスメモリと、
前記プロセッサからのアクセスが可能な低電力メモリと、
オーディオデータを、前記ランダムアクセスメモリから取り出させ、前記低電力メモリにおける前記オーディオデータを格納させるように構成されたアプリケーションプロセッサと、前記オーディオデコーダは、デコードされたオーディオデータを生成するために、前記低電力メモリから取り出されたオーディオデータをデコードするように構成され、
後処理されたオーディオデータを生成するために、前記デコードされたオーディオデータに１つまたは複数の後処理操作を適用するように構成された後処理回路と、前記１つまたは複数の後処理操作は、前記オーディオデコーダに固有であり、
処理されたオーディオデータを生成するために、前記後処理されたオーディオデータに１つまたは複数の共通処理操作を適用するように構成された共通処理回路と、前記１つまたは複数の共通処理操作は、複数のオーディオデコーダに共通であり、
前記処理されたオーディオデータを出力するように構成された出力ポートと、
をさらに備える、請求項２９に記載の電子デバイス。
【請求項３２】
データを処理する手段と、
複数のキャッシュウェイにおいてデータをキャッシュする手段と、
を備え、
前記キャッシュする手段は、前記処理する手段からのアクセスが可能であり、
前記処理する手段は、オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを前記キャッシュする手段にロードするように構成され、前記１つまたは複数のメモリイメージの各々は、前記キャッシュする手段のページサイズを超えないようにサイズ調整され、
前記１つまたは複数のメモリイメージの各々は、メモリから前記キャッシュする手段にロードされ、前記１つまたは複数のメモリイメージの各々は、前記キャッシュする手段の対応する単一のページにロードされるように、前記メモリにおいて整列される、装置。
【請求項３３】
前記１つまたは複数のメモリイメージを前記キャッシュする手段にロードすることは、前記オーディオデコーダが前記キャッシュする手段においてキャッシュミスを発生させることなく、オーディオデコーディングを可能にする、請求項３２に記載の装置。
【請求項３４】
各メモリイメージのサイズは、前記キャッシュする手段の前記ページサイズに等しい、請求項３２に記載の装置。
【請求項３５】
前記オーディオデコーダは、アドバンスト・オーディオ・コーディング（ＡＡＣ）タイプのオーディオデコーダ、モーション・ピクチャ・エクスパーツ・グループ・オーディオ・レイヤ３（ＭＰ３）タイプのオーディオデコーダ、スピーチオーディオデコーダ、パルス符号変調（ＰＣＭ）オーディオデコーダ、またはこれらの任意の組み合わせである、請求項３２に記載の装置。
【請求項３６】
非一時的なコンピュータ可読記憶媒体であって、プロセッサによって実行されるとき、前記プロセッサに、
ビットマスクに基づいて、少なくとも１つのバッファが要求されたバッファサイズを満足し利用可能であるかどうかを決定させ、
前記ビットマスクの第１のビットは、第１のバッファサイズを有するバッファが利用可能であるかどうかを示し、前記ビットマスクの第２のビットは、第２のバッファサイズを有するバッファが利用可能であるかどうかを示し、
マルチウェイキャッシュの単一のページに対応するように整列され、かつ前記マルチウェイキャッシュの前記単一のページのサイズに実質的に等しいサイズを有するメモリの領域を割り当てさせ、
前記メモリの割り当てられた領域の少なくとも一部分を、前記第１のバッファサイズを有する少なくとも１つのバッファと前記第２のバッファサイズを有する少なくとも１つのバッファとを含む複数の所定のバッファに分割させ、
前記所定のバッファへのポインタをもつ１つまたは複数のデータ構造を追加させ、特定のデータ構造の各ポインタは、特定のサイズの所定のバッファを指し示し、
前記メモリの割り当てられた領域において利用可能なバッファサイズを示すためにビットマスクをセットさせる命令を備え、
前記メモリの領域は、前記マルチウェイキャッシュにおいてキャッシュされて、プロセッサにおいて１つまたは複数のオーディオデコーダによるアクセスの実行を可能にし、前記オーディオデコーディングに対応する動的メモリ割り当て要求は、前記マルチウェイキャッシュにおいてキャッシュされた前記メモリの領域から満たされる、非一時的なコンピュータ可読記憶媒体。
【請求項３７】
前記ビットマスクの各ビット位置は、それぞれのバッファサイズに対応し、特定のビット位置におけるビット値は、前記特定のビット位置に対応する前記それぞれのバッファサイズを有するバッファの可用性を示す、請求項３６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３８】
前記第１のバッファサイズは３２バイトである、請求項３６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項３９】
前記第２のバッファサイズは１２８バイトである、請求項３８に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４０】
各所定のバッファは、
サイズ＝２ｎ＋８バイト
という式に従うサイズを有し、
ここで、ｎは１以上の整数である、
請求項３６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４１】
各所定のバッファの第１の４バイトは、破損テストワードを表し、各所定のバッファの第２の４バイトは、前記データ構造のうちの１つを識別するリターンポインタを表す、請求項３６に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４２】
前記プロセッサによって実行されるとき、前記プロセッサに、
要求されたサイズのメモリ割り当てを示す要求を受信させ、
前記要求されたサイズを満たす最小の利用可能なバッファに対応するポインタを提供させ、
前記提供されたバッファを割り当て解除する要求を受信させ、
前記提供されたバッファが破損しているかどうかを検出するために、前記提供されたバッファの前記破損テストワードを評価させ、
前記提供されたバッファが破損していない場合、前記提供されたバッファに対応する前記ポインタを、前記提供されたバッファの前記リターンポインタによって識別される前記データ構造に挿入させる、
命令をさらに備える、請求項４１に記載の非一時的なコンピュータ可読記憶媒体。
【請求項４３】
プロセッサにおいて、ビットマスクに基づいて、プロセッサからのアクセスが可能なメモリの少なくとも１つのバッファが、要求されたバッファサイズを満たし利用可能であるかどうかを決定することと、前記ビットマスクの第１のビットは、第１のバッファサイズを有するバッファが利用可能であるかどうかを示し、前記ビットマスクの第２のビットは、第２のバッファサイズを有するバッファが利用可能であるかどうかを示し、
マルチウェイキャッシュの単一のページに対応するように整列され、かつ前記マルチウェイキャッシュの前記単一のページのサイズに実質的に等しいサイズを有する前記メモリの領域を割り当てることと、
前記メモリの割り当てられた領域の少なくとも一部分を、前記第１のバッファサイズを有する少なくとも１つのバッファと前記第２のバッファサイズを有する少なくとも１つのバッファとを含む複数の所定のバッファに分割することと、
前記所定のバッファへのポインタをもつ１つまたは複数のデータ構造を追加することと、特定のデータ構造の各ポインタは、特定のサイズの所定のバッファを指し示す、
前記メモリの割り当てられた領域において利用可能なバッファサイズを示すためにビットマスクをセットすることと、
を備え、
なお、前記メモリの領域は、前記マルチウェイキャッシュにおいてキャッシュされて、プロセッサにおいて１つまたは複数のオーディオデコーダによるアクセスの実行を可能にし、前記オーディオデコーディングに対応する動的メモリ割り当て要求は、前記マルチウェイキャッシュにおいてキャッシュされた前記メモリの領域から満たされる、コンピュータ実装方法。
【請求項４４】
要求されたサイズのメモリ割り当てを示す要求を受信することと、
前記要求されたサイズを満たす最小の利用可能なバッファに対応するポインタを提供することと、
をさらに備える、請求項４３に記載のコンピュータ実装方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００７７
【補正方法】変更
【補正の内容】
【００７７】
[0084]  開示された実施形態の先の説明は、開示された実施形態を製造または使用することを当業者に可能にするために提供される。これらの実施形態への様々な修正は、当業者にとって容易に明らかであり、ここに定義された原理は、本開示の範囲から逸脱することなく他の実施形態に応用されうる。したがって、本開示は、ここに示された実施形態に限定されるようには意図されず、下記の特許請求の範囲によって定義されるような原理および新規な特徴と一致する可能である最も広い範囲を与えられることとなる。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］  オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを、プロセッサからのアクセスが可能なマルチウェイキャッシュにロードすることを備え、前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュのページサイズを超えないようにサイズ調整される、方法。
［Ｃ２］  前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることは、前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスを発生させることなく、オーディオデコーディングを可能にする、Ｃ１に記載の方法。
［Ｃ３］  前記オーディオデコーディングは、前記プロセッサに利用可能なより上位のメモリにアクセスすることなく、前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードした後に行われる、Ｃ２に記載の方法。
［Ｃ４］  各メモリイメージのサイズは、前記マルチウェイキャッシュの前記ページサイズに等しい、Ｃ１に記載の方法。
［Ｃ５］  前記オーディオデコーダは、１つまたは複数のオーディオストリームをデコードするように動作可能である、Ｃ１に記載の方法。
［Ｃ６］  前記１つまたは複数のメモリイメージは、メモリから前記マルチウェイキャッシュにそれぞれロードされ、前記１つまたは複数のメモリイメージは、前記マルチウェイキャッシュの対応する単一のページにロードされるように、前記メモリにおいてそれぞれ整列される、Ｃ１に記載の方法。
［Ｃ７］  前記メモリにおける前記１つまたは複数のメモリイメージは、前記１つまたは複数のメモリイメージのすべてが前記マルチウェイキャッシュにロードされている場合にオーディオデコーディングおよび低電力のオーディオデコーディングを可能にするようにアクセス可能である、Ｃ６に記載の方法。
［Ｃ８］  前記メモリは、第２のオーディオデコーダと関連づけられた１つまたは複数のメモリイメージを含む、Ｃ６に記載の方法。
［Ｃ９］  前記メモリは、複数のオーディオデコーダに共通の少なくとも１つのメモリイメージを含む、Ｃ６に記載の方法。
［Ｃ１０］  前記メモリは、動的メモリ割り当て領域を含む、Ｃ６に記載の方法。
［Ｃ１１］  前記マルチウェイキャッシュは、４ウェイキャッシュを備える、Ｃ１に記載の方法。
［Ｃ１２］  第１の前記１つまたは複数のメモリイメージは、オーディオデコーダプログラム命令を含み、第２の前記１つまたは複数のメモリイメージは、動的メモリ割り当て領域に対応し、第３の前記１つまたは複数のメモリイメージは、後処理プログラム命令を含む、Ｃ１に記載の方法。
［Ｃ１３］  前記１つまたは複数のメモリイメージの全メモリイメージを前記マルチウェイキャッシュにロードさせる処理を開始することをさらに備える、Ｃ１に記載の方法。
［Ｃ１４］  前記処理は、前記プロセッサのバックグラウンドスレッドを備える、Ｃ１３に記載の方法。
［Ｃ１５］  前記処理は、オーディオデコーディング処理の開始または停止を検出することに応答して開始される、Ｃ１３に記載の方法。
［Ｃ１６］  前記オーディオデコーダにおいて第１のオーディオストリームを、および第２のオーディオデコーダにおいて第２のオーディオストリームを、同時並行にデコードすることと、
前記第２のオーディオストリームの終了を検出することと、
前記第２のデコーダにおいて前記第２のオーディオストリームを前記デコードすることを終了することと、
前記第２のオーディオストリームを前記デコードすることを終了した後に、前記オーディオデコーダにおいて前記第１のオーディオストリームをデコードすることと、
をさらに備える、Ｃ１に記載の方法。
［Ｃ１７］  前記１つまたは複数のメモリイメージは、前記第１のオーディオストリームまたは前記第２のオーディオストリームにおける可聴中断なく、前記マルチウェイキャッシュにロードされる、Ｃ１６に記載の方法。
［Ｃ１８］  前記１つまたは複数のメモリイメージは、アプリケーションプロセッサからの介入とは無関係に、前記マルチウェイキャッシュにロードされる、Ｃ１に記載の方法。
［Ｃ１９］  前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスも発生させことなく、前記オーディオデコーダにおいて第１のオーディオストリームをデコードすることと、
前記第１のオーディオストリームの終了と、第２のオーディオデコーダによってデコードされる第２のオーディオストリームの開始とを検出することと、
前記第２のオーディオデコーダと関連づけられた１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることと、
前記第２のオーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスも発生させることなく、前記第２のオーディオデコーダにおいて前記第２のオーディオストリームをデコードすることと、
をさらに備える、Ｃ１に記載の方法。
［Ｃ２０］  前記第２のオーディオデコーダと関連づけられた前記１つまたは複数のメモリイメージは、前記第１のオーディオストリームまたは前記第２のオーディオストリームにおける可聴中断なく、前記マルチウェイキャッシュにロードされる、Ｃ１９に記載の方法。
［Ｃ２１］  前記第２のオーディオデコーダと関連づけられた前記１つまたは複数のメモリイメージは、アプリケーションプロセッサからの介入とは無関係に、前記マルチウェイキャッシュにロードされる、Ｃ１９に記載の方法。
［Ｃ２２］  前記プロセッサと一体化されたメモリにおいて、複数のオーディオデコーダに共通のプログラム命令にアクセスすることをさらに備える、Ｃ１に記載の方法。
［Ｃ２３］  前記プロセッサは、デジタル信号プロセッサを備える、Ｃ１に記載の方法。
［Ｃ２４］  オーディオデータを受信することと、
前記１つまたは複数のメモリイメージは、前記オーディオデータが前記オーディオデコーダに対応すると決定することに応答してロードされ、
前記マルチウェイキャッシュにおいてキャッシュミスを発生させることなく、前記オーディオデコーダにおいて前記オーディオデータをデコードすることと、
処理されたオーディオデータを前記プロセッサの出力ポートに提供することと、
をさらに備える、Ｃ１に記載の方法。
［Ｃ２５］  後処理されたオーディオデータを生成するために、デコードされたオーディオデータに１つまたは複数の後処理機能を適用することと、前記１つまたは複数の後処理機能は、前記オーディオデコーダに固有であり、
前記処理されたオーディオデータを生成するために、前記後処理されたデータに１つまたは複数の共通処理機能を適用することと、前記１つまたは複数の共通処理機能は、複数のオーディオデコーダに共通である、
をさらに備える、Ｃ２４に記載の方法。
［Ｃ２６］  非一時的なコンピュータ可読記憶媒体であって、前記命令は、プロセッサによって実行されるとき、前記プロセッサに、
オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを、プロセッサからのアクセスが可能なマルチウェイキャッシュにロードさせる命令を備え、前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュのページサイズを超えないようにサイズ調整される、非一時的なコンピュータ可読記憶媒体。
［Ｃ２７］  前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることは、前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスも発生させることなく、オーディオデコーディングを可能にする、Ｃ２６に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ２８］  各メモリイメージのサイズは、前記マルチウェイキャッシュの前記ページサイズに等しい、Ｃ２６に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ２９］  プロセッサと、
前記プロセッサからのアクセスが可能なマルチウェイキャッシュと、
を備え、
前記プロセッサは、オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードするように構成され、前記１つまたは複数のメモリイメージの各々は、前記マルチウェイキャッシュのページサイズを超えないようにサイズ調整される、電子デバイス。
［Ｃ３０］  前記１つまたは複数のメモリイメージを前記マルチウェイキャッシュにロードすることは、前記オーディオデコーダが前記マルチウェイキャッシュにおいてキャッシュミスも発生させることなく、オーディオデコーディングを可能にする、Ｃ２９に記載の電子デバイス。
［Ｃ３１］  前記１つまたは複数のメモリイメージを含むランダムアクセスメモリと、
前記プロセッサからのアクセスが可能な低電力メモリと、
オーディオデータを、前記ランダムアクセスメモリから取り出させ、前記低電力メモリにおいて前記オーディオデータを格納させるように構成されたアプリケーションプロセッサと、前記オーディオデコーダは、デコードされたオーディオデータを生成するために、前記低電力メモリから取り出されたオーディオデータをデコードするように構成され、
後処理されたオーディオデータを生成するために、前記デコードされたオーディオデータに１つまたは複数の後処理動作を適用するように構成された後処理回路と、前記１つまたは複数の後処理動作は、前記オーディオデコーダに固有であり、
処理されたオーディオデータを生成するために、前記後処理されたオーディオデータに１つまたは複数の共通処理動作を適用するように構成された共通処理回路と、前記１つまたは複数の共通処理動作は、複数のオーディオデコーダに共通であり、
前記処理されたオーディオデータを出力するように構成された出力ポートと、
をさらに備える、Ｃ２９に記載の電子デバイス。
［Ｃ３２］  データを処理する手段と、
複数のキャッシュウェイにおいてデータをキャッシュする手段と、
を備え、
前記キャッシュする手段は、前記処理する手段からのアクセスが可能であり、
前記処理する手段は、オーディオデコーダと関連づけられた１つまたは複数のメモリイメージを前記キャッシュする手段にロードするように構成され、前記１つまたは複数のメモリイメージの各々は、前記キャッシュする手段のページサイズを超えないようにサイズ調整される、装置。
［Ｃ３３］  前記１つまたは複数のメモリイメージを前記キャッシュする手段にロードすることは、前記オーディオデコーダが前記キャッシュする手段においてキャッシュミスを発生させることなく、オーディオデコーディングを可能にする、Ｃ３２に記載の装置。
［Ｃ３４］  各メモリイメージのサイズは、前記キャッシュする手段の前記ページサイズに等しい、Ｃ３２に記載の装置。
［Ｃ３５］  前記オーディオデコーダは、アドバンスト・オーディオ・コーディング（ＡＡＣ）タイプのオーディオデコーダ、モーション・ピクチャ・エクスパーツ・グループ・オーディオ・レイヤ３（ＭＰ３）タイプのオーディオデコーダ、スピーチオーディオデコーダ、パルス符号変調（ＰＣＭ）オーディオデコーダ、またはこれらの任意の組み合わせである、Ｃ３２に記載の装置。
［Ｃ３６］  非一時的なコンピュータ可読記憶媒体であって、プロセッサによって実行されるとき、前記プロセッサに、
ビットマスクに基づいて、少なくとも１つのバッファが要求されたバッファサイズを満たすために利用可能であるかどうかを決定させる命令を備え、前記ビットマスクの第１のビットは、第１のバッファサイズを有するバッファが利用可能であるかどうかを示し、前記ビットマスクの第２のビットは、第２のバッファサイズを有するバッファが利用可能であるかどうかを示す、非一時的なコンピュータ可読記憶媒体。
［Ｃ３７］  前記ビットマスクの各ビット位置は、それぞれのバッファサイズに対応し、特定のビット位置におけるビット値は、前記特定のビット位置に対応する前記それぞれのバッファサイズを有するバッファの可用性を示す、Ｃ３６に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ３８］  前記プロセッサによって実行されるとき、前記プロセッサに、
マルチウェイキャッシュの単一のページに対応するように整列され、かつ前記マルチウェイキャッシュの前記単一のページのサイズに実質的に等しいサイズを有するメモリの領域を割り当てさせ、
前記メモリの割り当てられた領域の少なくとも一部分を、前記第１のバッファサイズを有する少なくとも１つのバッファと前記第２のバッファサイズを有する少なくとも１つのバッファとを含む複数の所定のバッファに分割させ、
前記所定のバッファへのポインタをもつ１つまたは複数のデータ構造を追加させ、特定のデータ構造の各ポインタは、特定のサイズの所定のバッファを指し示し、
前記メモリの割り当てられた領域において利用可能なバッファサイズを示すためにビットマスクをセットさせる、
命令をさらに備える、Ｃ３６に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ３９］  前記メモリの領域は、前記マルチウェイキャッシュにおいてキャッシュされ、オーディオデコーディングを可能にするために、プロセッサにおいて１つまたは複数のオーディオデコーダによるアクセスの実行を可能にし、前記オーディオデコーディングに対応するすべての動的メモリ割り当て要求は、前記マルチウェイキャッシュにおいてキャッシュされた前記メモリの領域から満たされる、Ｃ３８に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ４０］  各所定のバッファは、
サイズ＝２ｎ＋８バイト
という式に従うサイズを有し、
ここで、ｎは１以上の整数である、
Ｃ３８に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ４１］  各所定のバッファの第１の４バイトは破損テストワードを表し、各所定のバッファの第２の４バイトは、前記データ構造のうちの１つを識別するリターンポインタを表す、Ｃ３８に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ４２］  前記プロセッサによって実行されるとき、前記プロセッサに、
要求されたサイズのメモリ割り当てを示す要求を受信させ、
前記要求されたサイズを満足する最小の利用可能なバッファに対応するポインタを提供させ、
前記提供されたバッファを割り当て解除する要求を受信させ、
前記提供されたバッファが破損しているかどうかを検出するために、前記提供されたバッファの前記破損テストワードを評価させ、
前記提供されたバッファが破損していない場合、前記提供されたバッファに対応する前記ポインタを、前記提供されたバッファの前記リターンポインタによって識別される前記データ構造に挿入させる、
命令をさらに備える、Ｃ４１に記載の非一時的なコンピュータ可読記憶媒体。
［Ｃ４３］  プロセッサにおいて、ビットマスクに基づいて、プロセッサからのアクセスが可能なメモリの少なくとも１つのバッファが、要求されたバッファサイズを満たし利用可能であるかどうかを決定することを備え、前記ビットマスクの第１のビットは、第１のバッファサイズを有するバッファが利用可能であるかどうかを示し、前記ビットマスクの第２のビットは、第２のバッファサイズを有するバッファが利用可能であるかどうかを示す、コンピュータ実装方法。
［Ｃ４４］  マルチウェイキャッシュの単一のページに対応するように整列され、かつ前記マルチウェイキャッシュの前記単一のページのサイズに実質的に等しいサイズを有する前記メモリの領域を割り当てることと、
前記メモリの割り当てられた領域の少なくとも一部分を、前記第１のバッファサイズを有する少なくとも１つのバッファと前記第２のバッファサイズを有する少なくとも１つのバッファとを含む複数の所定のバッファに分割することと、
前記所定のバッファへのポインタをもつ１つまたは複数のデータ構造を追加することと、特定のデータ構造の各ポインタは、特定のサイズの所定のバッファを指し示し、
前記メモリの割り当てられた領域において利用可能なバッファサイズを示すためにビットマスクをセットすることと、
をさらに備える、Ｃ４３に記載のコンピュータ実装方法。
【国際調査報告】
2013539892.tif 000012
2013539892.tif 000013