(57)【要約】  リアルタイムにタスクロードを決定する方法。該方法は、リアルタイムにタスクの実行の前にフリーランニングカウンタからの第１のカウント値と、該タスクの実行停止後の第２のカウント値との間の差をとる。その後、タスクロードは、基準間隔の間該第１のカウント値と該第２のカウント値との間の差を累積するアキュムレータを使用すること、および合計値を設定可能な該基準間隔で除すること、により決定され得る。リアルタイムに計算された個々のタスクロードは、オーディオタスクのスケジューリングに使用され得る。【選択図】  図１
2011524574.tif 000002
【特許請求の範囲】
【請求項１】
タスクロードを決定する方法であって、
タスクの実行の前にフリーランニングカウンタから第１のカウント値を読み出すこと、
前記タスクの実行停止後に前記フリーランニングカウンタから第２のカウント値を読み出すこと、
リアルタイムに前記第１のカウント値と前記第２のカウント値との間の差をとること、
前記第１のカウント値と前記第２のカウント値との間の差を基準間隔の間累積するためにアキュムレータを使用すること、および
前記累積された差を前記基準間隔で除すること、
を含む方法。
【請求項２】
前記基準間隔は、前記アキュムレータの最大カウント値を乗じた前記フリーランニングカウンタの期間以下の値に設定される請求項１の方法。
【請求項３】
前記決定されたタスクロードは、セットトップボックス、音楽プレーヤー、ビデオプレーヤー、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末（ＰＤＡ）、固定ロケーションデータユニット、およびコンピュータから構成されるグループから選択された、前記タスクロードを決定する方法が統合されている電子デバイスに適用される請求項１の方法。
【請求項４】
オーディオタスクをスケジューリングする方法であって、
オーディオタスクを処理する基準間隔を取り出すこと、
前記オーディオタスクを処理するための実際のサイクル数と、前記基準間隔内のサイクル数との間の差を計算すること、および
将来のオーディオタスクについてパラメータをスケジューリングすること、
を含む方法。
【請求項５】
前記オーディオタスクのタスクロードに基づき、および前記オーディオタスクを処理するための実際のサイクル数に基づき、前記将来のオーディオタスクを処理するために利用可能なサイクル数を計算すること、
をさらに含む請求項４の方法。
【請求項６】
NumCyclesAvailableにより前記将来のオーディオタスクを処理するために利用可能なサイクル数を計算すること、をさらに含む請求項４の方法。
【請求項７】
前記スケジューリングパラメータはオーディオフレーム中の合成音声（synthesis voice）パラメータである請求項４の方法。
【請求項８】
前記基準間隔はハードウェアまたはソフトウェアによって設定可能である請求項４の方法。
【請求項９】
前記スケジューリングすることは、前記将来のオーディオタスクについて、前記現在のオーディオタスクで処理されるよりも少ないオーディオタスクサイクルを処理すること、  を含む請求項４の方法。
【請求項１０】
前記スケジューリングすることは、前記将来のオーディオタスクについて、前記現在のオーディオタスクと比較して等しいかより大きい数のオーディオタスクサイクルを処理すること、を含む請求項４の方法。
【請求項１１】
前記オーディオタスクをスケジューリングする方法は、セットトップボックス、音楽プレーヤー、ビデオプレーヤー、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末（ＰＤＡ）、固定ロケーションデータユニット、およびコンピュータを含むグループから選択された、前記オーディオタスクをスケジューリングする方法が統合されている電子デバイスに適用される請求項４の方法。
【請求項１２】
オーディオタスクを処理するための実際の時間と基準間隔の中のサイクル数との間の差を計算し、前記計算された差に基づいて将来のオーディオタスクをスケジューリングするプロセッサと、
前記スケジューリングパラメータを記憶するメモリと、
前記オーディオタスクの実際の時間を計算するためにプロセッサに少なくとも２つのカウント値を供給するフリーランニングカウンタと、
を備える装置。
【請求項１３】
前記プロセッサは、リアルタイムコンピュータシステムを動作させるように構成される請求項１２の装置。
【請求項１４】
前記オーディオタスクを処理するための前記実際の時間は、１つまたは複数のタスク実行時間と、１つまたは複数の他のタスクを処理するために費やされる時間とに基づく請求項１２の装置。
【請求項１５】
前記スケジューリングされたオーディオタスクサイクルは、将来のオーディオタスクについては、現在のオーディオタスクと比較して少ない、請求項１２の装置。
【請求項１６】
前記スケジューリングされたオーディオタスクサイクルは、前記将来のオーディオタスクについては、前記現在のオーディオタスクと比較して等しいかより大きなサイクル数である請求項１２の装置。
【請求項１７】
音楽プレーヤー、ビデオプレーヤー、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末（ＰＤＡ）、固定ロケーションデータユニットおよびコンピュータで構成されるグループから選択されたデバイスに組み入れられている、請求項１２の装置。
【請求項１８】
タスク実行の前にフリーランニングカウンタから第１のカウント値を読み出す手段と、
前記タスクの実行停止後に前記フリーランニングカウンタから第２のカウント値を読み出す手段と、
リアルタイムに前記第１のカウント値と前記第２のカウント値との間の差をとる手段と、
前記第１のカウント値と前記第２のカウント値との間の差を基準間隔の間累積するためにアキュムレーティングを使用する手段と、
前記累積された差を前記基準間隔で除する手段と、
を備える装置。
【請求項１９】
前記基準間隔は、前記アキュムレータの最大カウント値を乗じた前記フリーランニングカウンタの期間以下の値に設定される請求項１８の装置。
【請求項２０】
現在のフレームの中のオーディオタスクを処理する基準間隔を取り出す手段と、
前記オーディオタスクを処理するための実際のサイクル数と、前記基準間隔内のサイクル数との間の差を計算する手段と、
将来のオーディオタスクについてパラメータをスケジューリングする手段と、
を備える装置。
【請求項２１】
前記オーディオタスクのタスクロードに基づき、および前記オーディオタスクを処理するための実際のサイクル数に基づき、前記将来のオーディオタスクを処理するために利用可能なサイクル数を計算する手段、
をさらに備える請求項２０の装置。
【請求項２２】
NumCyclesAvailableにより前記将来のオーディオタスクを処理するために利用可能なサイクル数を計算する手段、
をさらに備える請求項２０の装置。
【請求項２３】
前記スケジューリングパラメータはオーディオフレーム中の合成音声（synthesis voice）パラメータである請求項２０の装置。
【請求項２４】
前記基準間隔はハードウェアまたはソフトウェアによって設定可能である請求項２０の装置。
【請求項２５】
前記スケジューリングすることは、前記将来のオーディオタスクについて、前記現在のオーディオタスクで処理されるよりも少ないサイクルを処理する手段を含む請求項２０の装置。
【請求項２６】
前記スケジューリングすることは、前記将来のオーディオタスクについて、前記現在のタスクと比較してより多くのオーディオタスクサイクルを処理する手段を含む請求項２０の装置。
【請求項２７】
１つまたは複数のプロセッサによって実行可能な命令のセットの命令を含むコンピュータ読出可能媒体であって、
オーディオタスクを処理する基準間隔を取り出すためのコードと、
前記オーディオタスクを処理するための実際のサイクル数と、前記基準間隔内のサイクル数との間の差を計算するためのコードと、
将来のオーディオタスクについて、パラメータをスケジューリングするためのコードと、
を含むコンピュータ読出可能媒体。
【請求項２８】
前記オーディオタスクのタスクロードに基づき、および前記オーディオタスクを処理するための実際のサイクル数に基づき、前記将来のオーディオタスクを処理するために利用可能なサイクル数を計算するためのコード、
をさらに含む請求項２７のコンピュータ読出可能媒体。
【請求項２９】
NumCyclesAvailableにより、前記将来のオーディオタスクを処理するために利用可能なサイクル数を計算することを、さらに含む請求項２７のコンピュータ読出可能媒体。
【請求項３０】
前記スケジューリングパラメータはオーディオフレーム中の合成音声（synthesis voice）パラメータである、請求項２７のコンピュータ読出可能媒体。
【請求項３１】
前記基準間隔を、前記アキュムレータの最大カウント値を乗じた前記フリーランニングカウンタの期間以下の値に設定するためのコードを、
さらに含む請求項２７のコンピュータ読出可能媒体。
【請求項３２】
前記スケジューリングは、前記将来のオーディオタスクについて、前記現在のオーディオタスクで処理されるよりも少ないオーディオタスクサイクルを処理すること、を含む請求項２７のコンピュータ読出可能媒体。
【請求項３３】
前記スケジューリングは、前記将来のオーディオタスクについて、前記現在のオーディオタスクと比較して等しいかより大きな数のオーディオタスクサイクルを処理すること、を含む請求項２７のコンピュータ読出可能媒体。
【発明の詳細な説明】
【優先権の主張】
【０００１】
本出願は、２００８年６月１１日に出願された米国仮出願第６０／０６０，５３２号「ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＭＥＡＳＵＲＩＮＧ  ＴＡＳＫ  ＬＯＡＤ」に関連し、該出願からの優先権を主張し、該出願全体は参照としてここに組込まれる。
【技術分野】
【０００２】
記述された実施形態は、一般にリアルタイムコンピューティングに関する。
【０００３】
特に、記述された実施形態は、システム上のアプリケーションロードを制限するために使用できる１つまたは複数のタスクロードを測定することに関する。
【背景技術】
【０００４】
図１は、一般にリアルタイムコンピューティングシステムの従来技術について記述する。リアルタイムコンピューティングシステムは、アプリケーションプログラムの実行およびシステムハードウェアやユーティリィティへのインタフェースを制御する。
【０００５】
リアルタイムコンピューティングシステム１０３は、プロセッサ、またはデジタル・シグナル・プロセッサのような電子ハードウェア１０１上に設けられ得る。例として、ハードウェアは、携帯電話上のハードウェアまたはソフトウェアまたはファームウェアが埋め込まれた任意のデバイス上のハードウェアであり得る。ユーティリィティ１０５は、一般に入出力デバイスを制御するコンピューティングシステムと、ファイル管理とを支援するプログラムである。
【０００６】
そのような適用において、システムデザイン考察のために、またはタスクロード情報を利用する他のアプリケーション１０７への入力パラメータとして、１つまたは複数の個々のタスクからリアルタイムコンピューティングシステム上のロードを知ることは有用である。タスクのローディング（loading）を決定する従来技術アプローチは、ロジックアナライザを使用してタスク実行データを取得し、特定の個々のタスクで実行される命令をカウントすることである。このアプローチはリアルタイムではなく、そのため、タスクロードが、該情報を有効に使用する別のアプリケーションへの入力として使用されることができない。例えば、MIDI（Musical Instrument Digital Interface）アプリケーションは、将来のフレームのために処理されるMIDIボイスを低減するべきかどうかを決定するためにリアルタイムタスクロードを使用する。
【発明の概要】
【０００７】
詳細な説明で開示された実施形態は、タスクロードを計算するためにタスク実行サイクル数を決定することを含む。タスク実行サイクル数を決定することは、タスクの実行前にフリーランニングカウンタから第１のカウンタ値を読み出すこと、該タスクの実行停止後に該フリーランニングカウンタから第２のカウンタ値を読み出すこと、リアルタイムに該第１のカウンタ値と該第２のカウンタ値との間の差をとること、を含む。該タスク実行サイクルは基準間隔の間累積され得る。当該基準間隔は設定可能な値であり得る。当該タスクロードは、基準間隔の間該第１のカウンタ値と該第２のカウンタ値との間の差を累積するアキュムレータを使用すること、および合計値を該基準間隔で除すること、により決定され得る。
【０００８】
別の実施形態はオーディオタスクをスケジューリングすることを含む。オーディオタスクをスケジューリングすることは、現在のフレーム内のオーディオタスクを処理する基準間隔を定めること、該オーディオタスクを処理する実際のサイクル数と該基準間隔内のサイクル数との間の差を計算すること、および将来のオーディオタスクについてパラメータをスケジューリングすること、を含む。該将来のオーディオタスクを処理するために利用可能なサイクル数は、該オーディオタスクのタスクロードに基づき、およびオーディオタスクを処理するための該実際のサイクル数に基づき、計算され得る。該将来のオーディオタスクの処理に利用可能なサイクル数は、該基準期間内のサイクル数（MaxCycles）をとること、該現在のオーディオタスクを処理するのに使用されるサイクル数（ActualCycles）を減算すること、現在のフレーム中の該基準間隔内のオーディオタスクを処理するのに使用されるサイクル数（累積されたタスク実行サイクル）を加算すること、により計算され得る。典型的な実施形態は、スケジューリングパラメータがオーディオフレーム中の合成音声（synthesis voice）パラメータの場合である。該基準間隔はハードウェアまたはソフトウェアによって設定可能である。計算される差は、時間とサイクルとの間の変換に基づく。スケジューリングの典型的な実施形態は、該将来のオーディオタスクについて、該現在のオーディオタスクと比較して少ないオーディオフレームパラメータを処理すること、または、該将来のオーディオタスクについて、該現在のオーディオタスクと比較して等しいかより大きな数のオーディオフレームパラメータを処理すること、を含む。該将来のオーディオタスクを処理するのに利用可能なサイクル数は、オーディオフレームパラメータの最大数が処理されるときはゼロであり、またはプロセッサの電源オンの間ゼロとなり得る。
【０００９】
別の実施形態は、オーディオタスクを処理する実際の時間と、基準間隔内のサイクル数との間の差を計算し、該計算された差に基づいて将来のオーディオタスクをスケジューリングするプロセッサを含む装置である。メモリはスケジューリングパラメータを記憶し、オーディオタスクの実際の時間を計算するために、フリーランニングカウンタはプロセッサに対して少なくとも２つのカウント値を与える。
【００１０】
別の実施形態は、現在のフレーム中のオーディオタスクを処理する基準間隔を取り出す手段、該オーディオタスクを処理するための実際のサイクル数と該基準間隔のサイクル数との間の差を計算する手段、および将来のタスクについてのパラメータをスケジューリングする手段を含む装置である。
【００１１】
別の実施形態は、１つまたは複数のプロセッサによって実行可能な１セットの命令を含むコンピュータ読出可能媒体である。コンピュータ読出可能媒体は、オーディオタスクを処理する基準間隔を取り出すためのコード、該オーディオタスクを処理する実際のサイクル数と、該基準間隔内のサイクル数との間の差を計算するためのコードと、将来のオーディオタスクについてパラメータをスケジューリングするためのコードと、を含む。
【図面の簡単な説明】
【００１２】
【図１】リアルタイムコンピューティングシステムを表すブロック図である。
【図２】リアルタイムにタスクロードを測定するリアルタイムコンピューティングシステムの典型的な実施形態のブロック図である。
【図３】ホストプロセッサ上で実行され得る方法を説明するフローチャートである。
【図４】アプリケーションタスクの処理中にリアルタイムコンピューティングシステム内で起こる様々なタイミングシナリオを表す図である。
【図５】マルチプロセッサシステムの典型的な実施形態のブロック図である。
【図６】オーディオデバイスの典型的な実例のブロック図である。
【図７】次のフレーム中のオーディオタスクの処理に利用可能な時間またはサイクルを推定するための計算でタスクロードを利用するオーディオタスクの典型的な実施形態におけるタイミングを示すグラフである。
【図８】タスクロードを決定する方法を説明するフローチャートである。
【図９】オーディオタスクをスケジューリングする方法を説明するフローチャートである。
【発明を実施するための形態】
【００１３】
様々な実施形態を以下の説明および関連する図面で開示される。別の実施形態が発明の範囲から逸脱することなく考案され得る。さらに、発明のいくつかの周知な要素は詳細に記述されず、発明の関係のある詳細が不明瞭にならないように省略される。
【００１４】
「典型的」という語は、ここでは「例（example, instance, illustration）として役に立つ」という意味で使用される。「典型的」とここに記述された任意の実施形態は、他の実施形態よりも好ましいまたは有利であると必ずしも解釈されない。同様に、用語「発明の実施形態」は、発明の全ての実施形態が、議論された特徴や利点または動作モードを含むことを必要としない。
【００１５】
用語「リアルタイムコンピューティングシステム」は、これに限定するものではないが、ここでは、スケジューリングシステムを使用してリアルタイムに少なくとも１つのタスクを処理することを意味する。
【００１６】
図２は、リアルタイムコンピューティングシステム２３０を実行するホストプロセッサ２１０の典型的な実施形態である。コンピューティングシステム２３０は、特定の間隔でフリーランニングカウンタ２２５からの出力値を読み出し記憶する。用語「フリーランニングカウンタ」は、ここでは、低パワーモードの間、および／またはホストプロセッサがスリープ状態の間、実行し続けるカウンタまたは他の基準ソース（reference source）を意味するために使用される。ソフトウェアカウンタまたはハードウェアカウンタのような基準ソースが代表的な実施形態の精神および範囲から逸脱せずに使用され得ることは、当業者には言うまでもない。フリーランニングカウンタ２２５は、物理的にプロセッサ内部かまたはプロセッサ外部に位置する。
【００１７】
リアルタイムコンピューティングシステム２３０を実行するホストプロセッサ２１０は、アプリケーションタスク２０５を処理する。タスクはタスクスケジューラ２１５によって処理され、タスクスケジューラ２１５は、プロセッサ２１０がいつ利用可能であるのか、およびタスクはいつ処理の準備ができるのかを決定する。割り込みハンドラー２２０はプロセッサ２１０によって現在実行されているタスク２０５を割り込むために使用され得る。割り込まれたタスク２０５は、タスクスケジューラによって管理される。
【００１８】
図３は、ホストプロセッサ２１０上で実行され得る典型的な方法を説明するフローチャートである。タスクのスケジューリング（３４０）は多数のスキームによって実装され得る。そのようなスキームは、これに限定するものではないが、プリエンプティブ（preemptive）スキームおよび時分割スキームを含む。プリエンプティブスキームは、最も高い割り当て優先度をもつタスクが最初に実行されることを可能にする。プリエンティティブスキームは、より高い優先度のタスクを実行するために、処理されている別の優先度の低いタスクを割り込む。時分割設計は、すべてのタスクが完了するまで、処理のためのタイムスライスがそれぞれのタスクに割り当てられるクロック割り込みスケジュールでタスクを実行する。
【００１９】
実行可能なタスクが存在する場合（ブロック３３０を参照）、タスクはスケジューリングされて（３４０）、例えばホストプロセッサ２１０に処理のために送られる（３４５）。他のタスクが実行のための準備状態になるとき、ホストプロセッサが現在のタスクを実行するビジー状態にある場合、タスクスケジューラ（３４０）は現在のタスクを切り替えるべきかどうかを決定する（３５０）。割り込みはスケジューリングスキームまたは他の考察に基づいて決定され得る。
【００２０】
現在のタスクが割り込まれない場合、ホストプロセッサはタスクが完了するまで（３６０）現在のタスクを実行し続ける（３４５）。完了したタスクがオーディオタスクでない場合（３５８）、ブロック３３０で、ホストプロセッサは次のタスクを処理し始める。完了したタスクがオーディオタスクである場合（３５８）、将来のオーディオタスクのスケジューリングが実行され得る（３５９）。ブロック３５９が完了すると、または代わりにブロック３５９の実行と同時に、ブロック３３０で、ホストプロセッサは次のタスクを処理し始める。オーディオタスクのスケジューリングについては後述する。
【００２１】
割り込みが起こる場合（３５０）、その割り込みは処理される（３５５）。当業者は、例として、処理されているタスクの状態を保存するか、割り込まれたタスクを停止させる前に他のクリーンアップ（clean-up）を実行するシステムを設計する。したがって、割り込みを受け取ると、割り込まれたタスクは、処理を直ちに停止させてもよいし、停止させなくてもよい。タスクスケジューラ３４０は、実行完了していないタスクを管理し続ける。一旦現在のタスクが停止され、ホストプロセッサが利用可能となったならば、ホストプロセッサは次のスケジューリングされたタスクを実行し始める。
【００２２】
ブロック３３０が実行の準備ができているタスクがないことを検知し、ブロック３４５が処理されるタスクがないことを検知するとき、コンピューティングシステムはブロック３３５にてスリープ状態に入る。スリープ状態の間、ホストプロセッサはアイドルであり、その電力消費を低減または無効にすることができる。フリーランニングカウンタ２２５はスリープ状態の間、カウントし続ける。割り込みを受け取ると、プロセッサのスリープ状態は割り込まれ（３６５）、それにより、スリープ状態から起きて、その電力消費を増加させる。タスクスケジューラ（３４０）は実行の準備ができている任意のタスクをスケジューリングし、タスクが処理される（３４５）。
【００２３】
図４は、時系列４００、４０５および４１０は、アプリケーションタスクの処理中にリアルタイムコンピューティングシステム内で起こり得る様々なタイミングシナリオの実例である。これらの実例では、図４において、時間はＴＸからＴＹまで増加する。
【００２４】
用語「基準間隔」は、時間期間として定義されるか、または対応するサイクル数として記述され、フリーランニングカウンタ２２５によって測定される。基準間隔は変数ＸおよびＹによって表され、Ｘは基準間隔の始点を示し、Ｙは一期間後の基準間隔４２０の終点を示す。
【００２５】
基準間隔＝TY − TX                      （式１）
図４において、エレメント４００は、コンピューティングシステム上で実行するタスクロードを測定する典型的な方法を説明する。スケジューリングされたタスクの実行の前に、コンピューティングシステムはフリーランニングカウンタ２２５から値を読み出し、その値はTstartと定義される。その後、スケジューリングされたタスクは停止されるまで実行される。タスクは、その実行が完了するか、または別のタスクによって切り替えられることで停止される。一旦タスクが停止されると、リアルタイムコンピューティングシステムはフリーランニングカウンタから値を読み出し、その値はTendと定義される。Tstart およびTendの例はエレメント４００に示される。用語「タスク実行サイクル」は、TendとTstartとの間の差をとることにより定義され、そのことは式２に示される。当業者はそのような差をとることを、ソフトウェアにより、またはハードウェアにより実行できる。
【００２６】
タスク実行サイクル＝Tend − Tstart                （式２）
タスク実行サイクルは、式３に示されるように、間隔Ｘ、Ｙ（４２０）の間に予め定義された基準間隔の間累積され得る。タスク実行サイクルを累積する典型的な実施形態は、基準間隔の間でオーバーフローを避けるために十分なビットを備えたハードウェアまたはソフトウェアアキュムレータエレメントを用いることである。このハードウェアまたはソフトウェアアキュムレータはここでは「アキュムレータ」と呼ぶ。さらなる典型的な実施形態として、アキュムレータはコンピューティングシステムの内部で実装されてもよいし、またはコンピューティングシステムの外部にあるアキュムレータとすることもできる。
【数１】
2011524574.tif 000003
【００２７】
式４に示されるように、それぞれのタスクのロードは、累積されたタスク実行サイクルを基準間隔で除することにより決定できる。この計算が、そのロードを計算するために任意のタスクに適用されることは、当業者には言うまでもない。
【数２】
2011524574.tif 000004
【００２８】
図８はタスクロードを決定する方法を説明するフローチャートである。基準間隔は設定および記憶される（８１０）。前述したように、構成の典型的な実例はソフトウェアによって基準間隔を設定し、メモリまたはハードウェア構成によって値を記憶する。タスク実行前に、第１のカウント値はフリーランニングカウンタから読み出される（８２０）。タスクの実行停止後、第２のカウント値はフリーランニングカウンタから読み出される（８３０）。プロセッサは、リアルタイムに第１のカウント値と第２のカウント値との間の差をとる（８４０）。リアルタイムに第１のカウント値と第２のカウント値との間の差をとることの典型的な実例は、式２で示され、当該差はハードウェアまたはソフトウェア方法によって出すことができる。アキュムレータは、第１のカウント値と第２のカウント値との間の差を、設定された基準間隔の間、累積する（８５０）。カウント値間の差を累積する典型的な実例は、式３に示され、ここではアキュムレータはハードウェアまたはソフトウェアの中で実装され得る。タスクロードは累積された差を基準間隔で除することにより計算される（８６０）。タスクロードを計算する典型的な実例は、式４に示され、ここでは計算がハードウェアまたはソフトウェアで起こり得る。
【００２９】
決定されたタスクロードが、セットトップボックス、音楽プレーヤー、ビデオプレーヤー、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末（ＰＤＡ）、固定ロケーションデータユニット、およびコンピュータから構成されるグループから選択された、タスクロードを決定する方法が統合されている電子デバイスに適用されることについては、当業者には言うまでもない。
【００３０】
当業者は、システムデザイン考察のような、またはタスクロード情報を利用できる他のアプリケーションへの入力パラメータのような様々な目的にタスクロードを使用できる。例えば、優先度の高いタスクが実行されているとき、別のアプリケーションは、システムのローディングの計算を制限するためにタスクロード情報を使用できる。タスクロードを利用するための典型的な実施形態はこの文書中の後の方で記述される。
【００３１】
基準間隔は設定および記憶され得る。基準間隔は、基準間隔の間正確にタスク実行サイクルを累積することが十分に解決するように設定され得る。実例として、基準間隔は下記よりも小さい値に設定され得る。：アキュムレータの最大カウント値を乗じたフリーランニングカウンタの期間。設定可能な基準間隔はソフトウェアまたはハードウェアによって設定され得る。例えば、基準間隔はソフトウェアによって設定され、基準間隔はメモリに記憶されてプロセッサによって読み出される。または、基準間隔はハードウェアの中で設定されてもよい。ハードウェア構成の典型的な実例は、ラッチまたはフリップフロップを基準間隔の値で設定することである。
【００３２】
さらに、２２５で示されるフリーランニングカウンタは、当業者によって、タスク実行サイクルを正確に取得できるほど大きな周波数に設定され得る。
【００３３】
図５はマルチプロセッサシステムの典型的な実施形態である。マルチプロセッサシステムは、単一のまたは共有のフリーランニングカウンタに接続され得る。記述しているように、個々のタスクロードは式１−４を使うことで計算され得る。例として、図５のプロセッサのうちのいずれかで実行される任意のタスクがタスクロードを計算する。
【００３４】
図６はオーディオデバイス６００の典型的な例である。オーディオデバイスには、任意のタイプのオーディオまたはビデオファイル、例えば、ボイスまたはMIDI（Musical Instrument Digital Interface）ファイルを処理できるデバイスである。オーディオデバイス６００は、MIDIファイルや他のタイプのデータを記憶するオーディオ記憶ユニット６０５を含むことができる。オーディオ記憶ユニット６０５は、任意のタイプの揮発性メモリか不揮発性メモリかプロセッサ６１０につながれた記憶装置を含むことができる。
【００３５】
オーディオデバイス６００はさらに、オーディオファイルを処理するために共に動作する第１のプロセッサ６１０および第２のプロセッサ６３０を含み、エンドユーザのためにオーディオ情報を生成する。図６は、第１のプロセッサ６１０と第２のプロセッサ６３０との間でオーディオタスクを分けるアーキテクチャを図示している。１つのプロセッサがエレメント６１０および６３０の機能を実行するように、エレメント６１０および６３０を単一のユニットに組み合わせるような他の代替の実装も、当業者には理解されよう。例として、第１のプロセッサ６１０はARMプロセッサ、第２のプロセッサ６３０はデジタルシグナルプロセッサ（DSP）でもよい。別の例として、単一のプロセッサは６１０と６３０とを組み合わせた機能を実行し、該単一のプロセッサは処理とデジタル信号処理の両方を実行してもよい。
【００３６】
典型的な実施形態では、第１のプロセッサ６１０および第２のプロセッサ６３０が基準間隔の間オーディオタスクを処理する。ここに使用されるように、「オーディオフレーム」という語句は時間のブロック、またはクロックサイクルまたはカウンタサイクルの対応する数を指す。オーディオフレームはオーディオタスクが処理される基準間隔となり得る。
【００３７】
基準間隔は１０ミリセカンド（ms）の間隔と等しく選択されることができる。基準間隔は４８ＫＨｚのサンプリングレートで動作するデバイスについて４８０サンプルをもつことができる。オーディオ波形は異なるレートでサンプリングされ、そのようなサンプリングレートの１つが４８Ｋｈｚであり得ることは、当業者には認識できるだろう。１つのプロセッサが１つのオーディオタスクを処理するための好ましい最大サイクル数は、ここでMaxCyclesと呼ぶ。MaxCyclesは本質的にサイクルに変換された基準間隔時間である。この値は、以下の式５で計算される。
【００３８】
MaxCycles＝（クロック周波数）ｘ （基準間隔）          （式５）
クロック周波数＝19.2MHzの場合の計算例：
MaxCycles =（19.2MHz）ｘ（10ミリセカンド）= 192,000サイクル
プロセッサ６１０はオーディオ記憶６０５からデータを読み出し、オーディオ記憶６０５へデータを書き込む。さらに、プロセッサ６１０はメモリユニット６１５にデータの読み書きを行う。例として、プロセッサ６１０はオーディオ記憶６０５からMIDIファイルを読み出し、メモリユニット６１５へMIDIファイルを書き込む。それぞれのオーディオフレームについて、プロセッサ６１０は複数のMIDIファイルのうちの１つまたは複数を取り出し、MIDIファイルを解析して、１つまたは複数のMIDI命令を抽出する。MIDI命令は、処理を要求するMIDIボイスを含む様々なパラメータを含む。MIDI命令パラメータは、アフタータッチ効果、ブレス制御効果、プログラム変更、ピッチベンド効果、左右にパンすること、サステインペダル（sustain pedal）効果、主音量制御のような制御メッセージ、タイミングパラメータ、照明効果キュー、および／または他のサウンド効果のようなシステムメッセージに関連しており、開始または終了するための特別なMIDIボイスを命令できる。「ボイス」または「MIDIボイス」は任意の特定の音声であり得る。
【００３９】
MIDI命令のタイミングに基づいて、第１のプロセッサ６１０は第２のプロセッサ６３０によって処理するMIDI命令をスケジューリングする。第１のプロセッサ６１０は、第２のプロセッサ６３０がMIDI命令を処理できるように、第２のプロセッサ６３０によるアクセス用のメモリユニット６１５へMIDI命令のスケジューリングを提供できる。または、第１のプロセッサ６１０は、時刻同期方法で第２のプロセッサ６３０に対して直接MIDI命令をディスパッチすることでスケジューリングを実行できる。典型的なモデルでは、第１のプロセッサ６１０が、合成されたパルス符号変調（PCM）オーディオサンプルを処理し、メモリユニット６５０に記憶する。デジタル・アナログ変換器（ＤＡＣ）６２５は６５０から当該ＰＣＭサンプルを取得し、当該サンプルをスピーカー６４０へ再生する。
【００４０】
第２のプロセッサ６３０は第１のプロセッサ６１０によって作られたスケジューリングに従ってMIDI命令を処理する。しかしながら、第２のプロセッサ６３０は、さらに、MIDI命令を実行する前に処理が必要な優先度の高い他のタスクをもつことがあり、そのため、オーディオタスクの処理はMaxCyclesまたは基準間隔より長くかかることがある。これらのタイプの割込みは、将来のオーディオタスクをMaxCyclesまたは基準間隔よりも超過させ得る。第１のプロセッサ６１０は、将来のオーディオタスクの処理が、MaxCyclesまたは基準間隔より長くかからないように、次のまたは将来のオーディオタスクをスケジューリングする方法を利用し得る。実例として、これは処理されるボイスの数を減らすことにより達成され得る。低減されるボイスの数は、前のオーディオタスクを処理するときに超過したサイクル数に比例する。これは、式１２のコンテキストでさらに記述される。
【００４１】
図７は、オーディオタスク７１０の典型的な処理を示しており、タスクN７００、またはタスクN+1  ７０５のような優先度のより高いタスクが現在実行中のオーディオタスクを割り込むときのオーディオ処理の割込みを示している。オーディオタスク７１０は後述の計算（式４）でタスクロードを利用でき、次のフレーム中のオーディオタスクの処理をスケジューリングするのを支援する。
【００４２】
高音質のためにより多数のMIDIボイスを合成するために、単一のオーディオタスクの処理が一基準間隔４２０内で完了することが望ましい。オーディオ処理がより高い優先度の他のタスクの処理のために割り込みされる期間中に、オーディオタスクの処理はMaxCyclesまたは基準間隔内に完了できないが、後の基準間隔で処理され続けることができる。この追加時間を相殺するために、次のオーディオタスクが基準間隔内で処理を完了する可能性がより高くなるように、処理される次のオーディオタスクからボイス数が低減され得る。この典型的な実施形態の精神および範囲から逸脱せずに、任意の将来のオーディオタスクからボイス数を低減するために、この実施形態が使用され得ることは、当業者には認識できるだろう。
【００４３】
将来のオーディオタスクについてのパラメータをスケジューリングすることが確立され得る。つまり、現在のオーディオタスクの処理が基準間隔またはMaxCyclesを超過した場合、すなわち、次の基準間隔への「キャリーオーバー（carry-over）」の処理があった場合、次のオーディオタスクまたは将来のオーディオタスクで処理されるボイス数は低減され得る。ここに、用語「キャリーオーバー」は、MaxCyclesを超過したオーディオタスクのサイクル数を示すために使用される。しかしながら、ここに、オーディオタスクがMaxCyclesに達する前に処理を完了するとき、「キャリーオーバー」はまた利用可能なサイクル数を示すことができる。またあるときには、「キャリーオーバー」値は、この方法を適用するデバイスの電源オンでゼロとなり得る。電源オンは、典型的には、オーディオアプリケーションが定常状態に達するのにある程度の時間がかかることを意味する。オーディオタスクがMaxCycles期間と同じサイクル数内に処理されたとき、「キャリーオーバー」値はまたゼロとなり得る。
【００４４】
キャリーオーバーサイクルを決定するために、ＭａｘＣｙｃｌｅｓは、式６に示されるように、処理にかかるオーディオタスクの実際のサイクル数から減算され得る。ここで、MaxCyclesの値は式５を使用して計算され得る。ActualCyclesは、割り込み時間を含む、オーディオタスクの処理を完了するために要するサイクルの総数である。単位時間が、単位時間にカウンタまたはクロック周波数を乗算することによりサイクルに変換されることができ、またサイクル数にカウンタまたはクロック周波数の逆数を乗算することにより単位サイクルが単位時間に変換され得ることは、当業者には認識できるだろう。従って、割り込み時間とは、プロセッサが他のタスクを処理している間にオーディオタスクの処理の時間が割り込まれた時間か、同等のサイクル数のことである。またCarryOverCyclesがこの典型的な実施形態の精神から逸脱せずに他の方法によって決定され得ることは、当業者には認識できるだろう。例えば、CarryOverCyclesも、またMaxCyclesからActualCyclesを減算する式６の修正により計算され得る。明確のために、式６はこの文書の中で使用され得る。
【００４５】
CarryOverCycles = ActualCycles − MaxCycles     （式６）
例として、ActualCyclesは、任意のオーディオタスクについての処理の始点および終点を測定するためにフリーランニングカウンタ２２５を利用し、それらの間の差をとることにより決定され得る。この概念は式７に示される。この典型的な実施形態の精神から逸脱せずに、ActualCyclesを測定する他の方法は、当業者には理解できるだろう。
【００４６】
ActualCycles = Tprocesssing_end − Tprocessing_start     （式７）
MaxCycles＝192,000サイクル、オーディオタスクのActualCyclesが249,600サイクルまたは13ミリセカンドの場合の計算例：
CarryOverCycles = 249,600サイクル - 192,000サイクル = 57,600サイクル
式６のコンテキストで、CarryOverCyclesの値がゼロかまたはゼロ未満のとき、オーディオタスクの処理はMaxCyclesを超過しない。そのため、次のオーディオタスクまたは将来のオーディオタスクは処理のためのボイスを低減せずに処理されるか、または処理のためのボイスを低減し得る。CarryOverCyclesの値がゼロを越えるとき、オーディオタスクを処理するために使用されるサイクル数は、基準間隔４２０または対応するMaxCyclesを超過し、オーディオタスクの処理がその基準間隔またはMaxCycles内で完了する可能性が高くなるように、次のまたは将来のオーディオ処理からボイスが低減され得る。
【００４７】
キャリーオーバーがゼロより大きい場合、すなわち、現在のタスクの実行が基準間隔４２０またはMaxCyclesで定義された期間より長くかかった場合、次のまたは将来のオーディオタスクを処理するときに低減されるボイス数は、現在のタスクからのパラメータを使用して計算またはスケジューリングされるか計算され得る。次のまたは将来のオーディオタスクの処理に利用可能なサイクル数を決定するために、現在のオーディオタスクからの特定のパラメータは、次のまたは将来のオーディオタスクについてのMaxCycles値に対し減算または加算され得る。これらのパラメータは、プロセッサが、オーディオタスク以外のより高い優先度のタスクの処理に費やす時間またはサイクル数と、CarryOverCyclesとを含む。ここでは、プロセッサがオーディオタスク以外のタスクの処理に費やすサイクル数は、「OtherTasks」と呼ばれる。式８は、次のオーディオタスクまたは将来のオーディオタスクの処理に利用可能なサイクル数を示す。
【００４８】
NumCyclesAvailable = MaxCycles - OtherTasks - CarryOverCycles     (式８)
OtherTasksを計算する典型的な例は、ActualCyclesから、式７で与えられるCarryOverCyclesおよび式３で与えられる累積されたタスク実行サイクルを減算することである。この典型的な実施形態の精神から逸脱せずに、OtherTasksを決定する他の方法を、当業者には認識できるだろう。
【００４９】
OtherTasks = ActualCycles − CarryOverCycles − 累積されたタスク実行サイクル
（式９）
式８および式９が式１０へ単純化されることは、当業者には理解できるだろう。
【００５０】
NumCyclesAvailable = MaxCycles - ActualCycles + 累積されたタスク実行サイクル 
（式１０）
次のまたは将来のオーディオタスクのためにサポートされ得るボイス数は、ここでは「MaxVoiceCount」と呼ばれ、プロセッサが前のオーディオタスクを合成または復号に費やしたサイクル数で除したvoice countを乗じた次のまたは将来のオーディオタスクに利用可能なサイクル数と等しい。この概念は式１１に示される。パラメータ「voice count」はオーディオタスクに含められる。パラメータ「tsynth」は、任意のオーディオタスクについて音声（voice）合成が開始したときから、音声合成が完了するときまでに任意のカウンタによって測定され得る。
【００５１】
MaxVoiceCount = NumCyclesAvailable x (voice count / tsynth)   （式１１）
前述していたように、処理ロードから低減されるボイスの数が計算され得る。低減されるボイスの数は、前のオーディオタスクを処理するときに超過したサイクル数に比例する。例えば、低減されるボイスの数を計算するために、CarryOverCyclesには、tsynthで除したvoice countが乗じられる。前述の計算結果は、ボイスの総数が低減されるように切り上げられることは、当業者には認識されるだろう。
【００５２】
NumVoicesReduced = CarryOverCycles x (voice count / ｔsynth)   （式１２）
図９はオーディオタスクをスケジューリングする方法を説明するフローチャートである。基準間隔は取り出される（９１０）。前述したように、基準間隔はソフトウェアまたはハードウェアによって記憶および設定され得る。さらに、基準間隔は、タスク実行サイクルを正確に累積することを解決できるような値に設定され得る。オーディオタスクを処理する実際のサイクル数と、基準間隔内のサイクル数との間の差が、計算される（９２０）。オーディオタスクを処理する実際のサイクル数と、基準間隔内のサイクル数との間の差を計算する典型的な例が、式６に見られ、ここではCarryOverCyclesが計算される。計算された差（例えばCarryOverCycles）は将来のオーディオタスクのパラメータのスケジューリング（９３０）を決定するのに使われる。例えば、現在のフレーム中のオーディオタスクを処理する実際のサイクル数が基準間隔内のサイクル数より大きい場合、将来のオーディオタスクで処理されるボイス数は低減され得る。
【００５３】
オーディオタスクをスケジューリングする方法が、セットトップボックス、音楽プレーヤー、ビデオプレーヤー、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末（ＰＤＡ）、固定ロケーションデータユニット、およびコンピュータを含むグループから選択された、当該オーディオタスクをスケジューリングする方法が統合されている電子デバイスに適用され得ることは、当業者には理解できるだろう。
【００５４】
ここに開示された方法、スキーム、技術の実装も、論理素子アレイ（例えばプロセッサ、マイクロプロセッサ、マイクロコントローラまたは他の有限状態機械）を含む機械によって読出可能および／または実行可能な、１つまたは複数の命令セットとして（例えばここに挙げられたような１つまたは複数のコンピュータ読出可能媒体で）明確に具体化され得る。１つまたは複数の典型的な実施形態では、ここに記述された動作は、ハードウェア、ソフトウェア、ファームウェアまたはそれらの任意の組合せで実装され得る。ソフトウェアにて実装される場合、そのような動作は１つまたは複数の命令またはコードとして、コンピュータ読出可能媒体に記憶されるか、またはコンピュータ読出可能媒体を通して送信され得る。用語「コンピュータ読出可能媒体」は、コンピュータ記憶媒体および通信媒体の両方を含み、１つの場所から別の場所へコンピュータプログラムの転送を容易にする任意の媒体を含む。記憶媒体はコンピュータによってアクセスできる任意の利用可能な媒体である。例として、これに限定するものではないが、そのようなコンピュータ読出可能媒体は、半導体メモリ（限定はしないが、ダイナミックまたはスタティックＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、および／またはフラッシュＲＡＭを含む）、強誘電体、磁気抵抗、オブニック（ovonic）、ポリマー（polymeric）、または相変化（phase-change）メモリのような複数の記憶素子のアレイを含むことができる。ＣＤ−ＲＯＭまたは他の光ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、または所望のプログラムコードを命令またはデータ構造の形で記憶するために使用でき、コンピュータによってアクセスすることができる他の媒体。ここで使用されるディスク（disk and disc）は、コンパクトディスク（ＣＤ）、レーザーディスク（登録商標）、光ディスク、ＤＶＤ（digital versatile disc）、フロッピー（登録商標）ディスクおよびブルーレーディスク（TM）（ブルーレイディスク協会、ユニヴァーサルシティ、ＣＡ）を含み、ディスク（disk）は通常磁気的にデータを再生し、ディスク（disc）はレーザーで光学的にデータを再生する。上記の組み合わせもコンピュータ読出可能媒体の範囲内に含まれるべきである。
【図１】
2011524574.tif 000005
【図２】
2011524574.tif 000006
【図３】
2011524574.tif 000007
【図４】
2011524574.tif 000008
【図５】
2011524574.tif 000009
【図６】
2011524574.tif 000010
【図７】
2011524574.tif 000011
【図８】
2011524574.tif 000012
【図９】
2011524574.tif 000013
【国際調査報告】
2011524574.tif 000014
2011524574.tif 000015
2011524574.tif 000016
2011524574.tif 000017
2011524574.tif 000018
2011524574.tif 000019