(57)【特許請求の範囲】
【請求項１】
複数の入力チャネルについて、複数の処理機能を実行する方法であって、各々の処理機能は、処理される入力チャネルの数で表現された、好ましい処理機能バッチサイズを有し、前記複数の処理機能は、キャッシュを備えるマイクロプロセッサによって実行され、
前記マイクロプロセッサが、前記複数の処理機能の好ましい処理機能バッチサイズの最小公倍数を求めることによって、処理される入力チャネルの数で表現された、システムバッチサイズを定めることと、
前記マイクロプロセッサが、単一のチャネルを処理するのに必要とされるデータの量を定めることと、
前記マイクロプロセッサが、前記キャッシュのサイズ、定められた前記必要とされるデータの量および前記システムバッチサイズに基づいて、処理中に前記キャッシュのオーバーフローが生じないように、前記システムバッチサイズの整数倍である好ましいバッチサイズを定めることと、
前記マイクロプロセッサが、好ましい処理機能バッチサイズを有する第１の処理機能を、前記好ましいバッチサイズを該第１の処理機能の好ましい処理機能バッチサイズで除した回数だけ実行して、該第１の処理機能が、前記好ましいバッチサイズの入力チャネルを処理するようにすることと、
前記マイクロプロセッサが、好ましい処理機能バッチサイズを有する第２の処理機能を、前記好ましいバッチサイズを該第２の処理機能の好ましい処理機能バッチサイズで除した回数だけ実行して、該第２の処理機能が、前記好ましいバッチサイズの入力チャネルを処理するようにすることと、
前記マイクロプロセッサが、残りの処理機能を実行して、該残りの処理機能が前記好ましいバッチサイズの入力チャネルを処理するようにすることと、を含む、複数の入力チャネルについて、複数の処理機能を実行する方法。
【請求項２】
前記マイクロプロセッサがメモリを備え、前記方法が、連続する入力チャネルを処理することにより生成されるデータを続けて前記メモリに格納するステップをさらに含む、請求項１に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータを処理する分野に関し、詳細には、複数のデータチャネルを並列に処理する効率を改善する方法に関する。
【０００２】
【従来の技術】
数多くの最近のマイクロプロセッサは、単一命令複数データ（ＳＩＭＤ）型演算のような並列処理演算をサポートする。ＳＩＭＤ型演算は、たとえばインテル・ペンティアム４（Intel Pentium 4）あるいはヒューレット・パッカード（Hewlett-Packard）ＰＡ−ＲＩＳＣ／ＭＡＸプロセッサ上で利用することができる。ＳＩＭＤ型演算を用いる処理は、特にある集中的なメディア処理演算に対して、非ＳＩＭＤ型演算と比べてきわだった性能の改善を示す。
【０００３】
【発明が解決しようとする課題】
複数のデータチャネルあるいはデータストリームを処理するとき、ＳＩＭＤ型演算を利用して処理性能を改善することが望ましいが、多数のデータストリームを処理する際に性能上の問題が生じる可能性がある。さらに、ＳＩＭＤ型演算の使用可能範囲は、データストリーム中のデータ特性に依存する場合がある。
【０００４】
したがって、本発明の１つの目的は、ＳＩＭＤ型あるいは他の並列処理演算を用いる際のデータストリームの処理効率を改善することである。
【０００５】
【課題を解決するための手段】
本発明の第１の態様によれば、複数の入力チャネルについて複数の処理機能を実行する方法が提供される。各処理機能は処理する入力チャネル数についての好みを有する。本発明に係る方法は、複数の入力チャネルを複数のバッチに分けることにより、各処理機能の上記好みに基づいて入力チャネルのバッチサイズを決定し、各処理機能を前記バッチ毎に全ての入力チャネルについて実行することにより、前記決定されたバッチサイズ又は前記決定されたバッチサイズの倍数をもつバッチ毎に入力チャネルを処理することを含む。
【０００６】
本発明の第２の態様によれば、複数の入力チャネル上で複数の処理機能を実行する方法が提供される。各処理機能は処理する入力チャネル数についての好みを有する。さらに複数の処理機能はキャッシュを有するマイクロプロセッサ上で実行される。本発明に係る方法は、１チャネルを処理するためのデータ必要量を決定し、複数の入力チャネルを、それぞれのサイズが各処理機能の好みに基づくバッチに分割することによりバッチサイズを決定し、前記キャッシュのサイズ、前記決定されたデータ必要量、及び前記決定されたバッチサイズに基づいて、各バッチの処理中に前記キャッシュがオーバーフローするのを防ぐための所望のバッチサイズを決定し、各入力チャネルについてバッチ毎に各処理機能を実行することにより、前記所望のバッチサイズのバッチ毎に各入力チャネルを処理することを含む。
【０００７】
本発明の第３の態様によれば、複数の入力チャネルを処理するデータ処理システムにおいて用いるソフトウェアツールが提供される。本発明に係るシステムは、それぞれ処理する入力チャネル数の好みを有する処理機能を含む。ソフトウェアツールは、複数の入力チャネルを、それぞれのサイズが各処理機能の上記好みに基づくバッチに分割することによりバッチサイズを決定する手段と、前記決定されたバッチサイズのバッチ毎に入力チャネルを処理できるように処理機能を配置する手段を有し、各処理機能は、同じ数の入力チャネルを確実に処理するように必要な回数だけ実行される。
【０００８】
ここで本発明を実現する一例を説明するが、限定するものではなく、添付の図面を参照して行う。
【０００９】
【発明の実施の形態】
図１は電気通信音声処理システム１０４の一部を示すブロック図である。その音声処理システムは、ＳＩＭＤ型あるいは並列処理演算をサポートするハードウェアプラットフォーム、たとえばヒューレット・パッカード（Hewlett-Packard）ＰＡ−ＲＩＳＣプラットフォーム上で動作することが好ましい。入力１０２、たとえば光ＳＯＮＥＴ入力は、音声チャネルを音声処理システム１０４に送る。通常の電気通信システムの場合、最大２０００の音声チャネルを、音声処理システム１０４による処理のために入力１０２で供給することができる。音声処理システム１０４は入力音声チャネルを処理し、処理された音声チャネルの出力１０６を生成する。
【００１０】
音声処理システム１０４では、多くの数の処理機能１１０、１１４、１１８および１２２が、連続して各入力データチャネルで実行される。処理機能１１０、１１４、１１８および１２２は、特定のハードウェアプラットフォーム上で実行するため、ソフトウェアで記述される。一連のバッファ１０８、１１２、１１６および１２０が各処理機能の前になる。
【００１１】
処理機能１１０、１１４、１１８および１２２はそれぞれ、通常異なる命令を実行する。たとえば処理機能１１０はデュアルトーンマルチ周波数（ＤＴＭＦ）検出命令を実行することができ、処理機能１１４はエコーキャンセル演算を実行することができ、他の機能も別の命令を実行することができる。
【００１２】
入力チャネルのそれぞれの処理は、各入力チャネルからの離散サンプル上で実行される。サンプルのサイズは、各入力チャネルに対し一度に処理されるが、処理システムのタイプに応じて異なる可能性がある。図１の電気通信音声処理システムでは、各入力チャネルから、８ｍｓに相当するデータが一度に処理される。これは６４バイトのデータに等しい。他のシステムでは、必要に応じて、より小さなサンプルサイズあるいはより大きなサンプルサイズを使用することができる。
【００１３】
音声処理システムの目的は、次のデータサンプルが入力に到達する前に、到来する全てのチャネルからの全ての現在のデータサンプルを、処理機能のそれぞれを用いて処理することである。
【００１４】
図２は、図１の入力音声チャネルおよび処理機能を表すマトリクスを示す図である。マトリクスの列は、図示のように処理機能１１０、１１４、１１８および１２２のそれぞれを表す。マトリクスの各行はチャネルｎからチャネルｎ＋ｋまでの異なる入力チャネルを表す。
【００１５】
そのような音声処理システムにおいて処理を行うための１つの手法は、各入力チャネルを別々に処理することである。たとえば、チャネルｎが処理機能１１０によって最初に処理され、その後、この処理ステップの出力が処理機能１１４によって処理され、以降同様に処理が行われる。チャネルｎ用の現在のデータサンプルが完全に処理されると、処理ステップはチャネルｎ＋１に対して繰り返され、入力チャネルからの現在のデータサンプルを処理し終えるまで繰り返される。
【００１６】
この手法が抱える１つの問題は、ＳＩＭＤ型対応プロセッサが用いられる場合でも、データ依存性が各チャネル内のデータサンプル間に存在する場合があるので、ＳＩＭＤ型演算を利用できるとは限らないことである。そのようなデータサンプル間の依存性があるということは、最初のデータサンプルを処理した結果が、直後のデータサンプルの処理において用いられることを意味する。これは、同じ入力チャネルからの複数の隣接するデータサンプルを並列に処理できる可能性を排除する。
【００１７】
この手法が抱える別の問題点は、処理機能のそれぞれが一度に少量のデータに対してしか実行されず、プロセッサが新しい命令を命令キャッシュに頻繁にロードしなければならないので、マイクロプロセッサの命令キャッシュの使用効率がよくないことである。
【００１８】
第２の手法は、処理機能１１０によって入力チャネルｎからｎ＋ｋの全てからのデータサンプルを同時に処理し、その後、処理機能１１４によって最初の処理機能の結果を処理し、以降同様に処理することである。このようにして処理を実行することにより、異なる入力チャネルからのデータサンプルが互いに依存しないので、データ依存性が排除される。この手法によって、ＳＩＭＤ型演算が利用できるようになり、異なるデータサンプルの処理が並列に実行されるようになる。この手法を用いることから生じる別の利点は、同じ演算命令が繰返し実行され、それゆえ、より効率的にキャッシュされるので、マイクロプロセッサの命令キャッシュをより充分に用いることができることである。
【００１９】
上に略述された第２の手法は一般的に第１の手法よりも好ましいが、さらに処理効率を高めることが望ましい。
【００２０】
第１の実施形態では、処理機能１１０、１１４、１１８および１２２が、ハードウェアプラットフォーム上で利用可能なＳＩＭＤ型演算を利用するように設計され、書かれる。各処理機能が種々の、多くの場合に複雑な処理タスクを実行するので、各処理機能の設計者は、処理機能１１０、１１４、１１８および１２２のそれぞれに対して好ましい処理機能バッチサイズを規定する。利用可能なＳＩＭＤ型演算が利用できるようにする特定のアセンブラ言語演算が用いられることは当業者には理解されよう。アセンブラ言語演算はマイクロプロセッサ間で異なるので、ここでは具体的な細部には立ち入らない。
【００２１】
上記のように、ＳＩＭＤ型演算によって、マイクロプロセッサは複数のデータ項目を同時に処理演算できるようになる。これは、たとえば、データをマイクロプロセッサの特定のレジスタにロードすることにより達成される。たとえば、そのレジスタが６４ビットレジスタであり、かつ入力チャネルのそれぞれから一度に単一のバイトサイズのサンプルが処理されることになる場合、８個の異なる入力チャネルからの１バイトづつが、レジスタを完全に満たすので、好ましい処理機能バッチサイズは８になる。別の方法では、１つの処理機能が各入力チャネルからの２バイトのデータを一度に処理する場合、好ましい処理機能バッチサイズは４になる。よって機能設計者によって規定される通り、バッチサイズが入力チャネルの数を規定する。入力チャネルは、ＳＩＭＤ型演算の使用を最大化するために、１つの処理機能によって１度に処理されることが好ましい。各処理機能は、たとえば、予め規定されたＡＰＩを呼び出すことにより、あるいは個別の記述子ファイルを通して、その好ましいバッチサイズをシステムが利用できるようにすることができる。
【００２２】
図１の音声処理システム１０４では、ある数の異なる処理機能１１０、１１４、１１８および１２２が提供され、各処理機能は異なる好ましいバッチサイズを有することができる。
【００２３】
所望の処理機能バッチサイズのそれぞれからシステムバッチサイズが決定されるが、処理機能１１０、１１４、１１８および１２２のそれぞれの好ましい処理機能バッチサイズを考慮に入れている。システムバッチサイズは、処理機能１１０、１１４、１１８および１２２の全てについて好ましい処理機能バッチサイズ全ての最小公倍数をとることにより決定されることができる。たとえば、処理機能１１０、１１４、１１８および１２２の所望の処理機能バッチサイズがそれぞれ４、１、４および８である場合には、所望の処理機能バッチサイズの最小公倍数は８である。
【００２４】
いったんシステムバッチサイズが決定されると、システム内の各処理機能は、処理を行うためにそのシステムバッチサイズを利用する。たとえば、所望のバッチサイズ４を有する処理機能１１０は２回実行され、それにより４だけの入力チャネルではなく、８の入力チャネルが処理される。結果として、１の好ましいバッチサイズを有する処理機能１１８は、１回だけでなく８回実行される。このようにして、音声処理システム１０４内の各処理機能は、それぞれ同じ数の入力チャネルを処理する。
【００２５】
いったんシステムバッチサイズが決定されると、入力チャネルの処理は図３に示されるように実行される。
【００２６】
図３は図２のマトリクスをさらに詳細に示す図である。好ましいバッチサイズが８の場合、入力チャネルｎからｎ＋７のそれぞれからのデータサンプルが処理機能１１０によって処理される（バッチ３００）。次に、入力チャネルｎからｎ＋７に対して処理機能１１４が処理され（バッチ３０２）、以降同じように繰り返される。いったん、入力チャネルｎからｎ＋７に対して処理機能１２２が処理されると（バッチ３０６）、チャネルの次のバッチを処理することができる。その後、処理機能１１０が入力チャネルｎ＋８からｎ＋１５に対して実行され（バッチ３０８）、以降同じように繰り返される。このバッチ処理は、ｎからｎ＋ｋまでの全ての入力チャネルがその現在の各データサンプルに対して処理されるまで続けられる。その後、各入力チャネルから次のデータサンプルが得られ、上記のように処理が続けられる。
【００２７】
上記の例では、システムバッチサイズが８であると決定された。この結果として、処理機能１１０は、個々の好ましいバッチサイズの２倍だけ多くの入力チャネルを処理するようになる。このことから、一度に処理される入力チャネルの数を増やすことにより、ハードウェアプラットフォームのＳＩＭＤ型あるいは並列演算によって得られる利点が大きくなるように思われるであろう。これはある程度まではあてはまるが、予想できるように、入力チャネルをさらに増やして同時に処理して、さらに高い性能の向上を見込むことはできない。制限要因の１つは、処理機能を実行するために用いられるマイクロプロセッサのキャッシュサイズである。
【００２８】
図４は通常のマイクロプロセッサおよびキャッシュ構成の概要を示すブロック図である。マイクロプロセッサ４００はデータバス４０８およびアドレスバス４１０を介してキャッシュメモリ４０４およびメインメモリ４０６に接続される。そのマイクロプロセッサはさらに、アドレスバス４０８を介してキャッシュコントローラ４０２にのみ接続される。キャッシュコントローラは、ＣＰＵによって現在アクセスされているデータがキャッシュメモリ４０４に存在しているか否か、すなわちデータをメインメモリ４０６から得られる必要があるか否かをはっきりさせるように動作する。キャッシュメモリは一般にメインメモリよりも非常に速い速度で動作するので、できる限り多くのデータアクセスをキャッシュメモリ４０４から直に行うことが有利である。アクセスされるデータをメインメモリ４０６から得る必要があるときはいつも、さらに多くのプロセッササイクルがデータを入手するにあたり必要とされる。これに加えて、低速のメインメモリ４０６が必要とされるデータを実際に供給する間、マイクロプロセッサは待機しなければならない場合もある。
【００２９】
ここで再び図２を参照して、入力チャネルｎからｎ＋ｋの全てが同時に処理される場合について考えてみる。処理は最初に処理機能１１０によってなされ、その後に処理機能１１４によってなされ、同じように続く。各入力チャネルについて処理されるデータは、処理機能の実行に用いられるマイクロプロセッサのデータキャッシュに書き込まれる。さらに多くの入力チャネルが処理されるにつれ、データキャッシュが満たされる。データキャッシュのサイズは限られているので、データキャッシュが満杯になるとき、データキャッシュ内に存在するデータは上書きされる。データキャッシュが満杯になる場合には、次の処理ステップすなわち処理機能１１４が実行されるとき、処理機能１１０によって処理された以前に格納されたデータは、データキャッシュにおいてもはや利用できなくなる。そのようなデータにアクセスするための次の要求はそれゆえ、より低速のメインメモリ４０６から取得されなければならない。そのような音声処理システムによって大量のデータが処理される場合、低速のメインメモリからデータを検索しなければならないことによる性能の低下は著しく大きくなる可能性がある。
【００３０】
さらに別の実施形態では、システムバッチサイズにより、データキャッシュがオーバーフローするか否かが判定され、さらに、データキャッシュを最大限使用するためにシステムバッチサイズを増加することができるか否かが検討される。
【００３１】
データキャッシュがオーバーフローするか否かを判定するために、最初に、処理機能１１０、１１４、１１８および１２２の全てを実行する間に１つのチャネルに対して生成され、必要とされるデータの量が決定されなければならない。ここには、たとえば全ての入力、出力およびデータ構造のサイズを含むことができる。説明のために、各チャネルの処理が５ｋバイトのキャッシュを必要とするものと仮定する。これは、データキャッシュのサイズが２５６ｋバイトである場合、データキャッシュがオーバーフローすることなく、一度に５１チャネルを処理できるということである。それゆえ、所望のシステムバッチサイズは、キャッシュがオーバーフローしないようにして処理することができるチャネルの最大数以下の、システムバッチサイズ、すなわち８の最も大きな倍数、この場合には４８であると決定される。それゆえ、４８の入力チャネルは、データキャッシュをオーバーフローさせずに一度に処理することができるものと判定される。上述のように、処理機能のそれぞれは、複数回、あるいは多数段階で実行されることができるが、適当な数のチャネルが全処理機能によって確実に処理されるようにするためである。
【００３２】
キャッシュのオーバーフローを確実に防止するために、入力、出力およびデータ構造を上述のように、連続する各チャネルに対してメモリ内で隣接して格納することが好ましい。キャッシュインデックスとしてメモリアドレスの下位ビットを用いるキャッシュシステムの場合、この手法によって、データがキャッシュにおいて確実にオーバーフローしないようになる。
【００３３】
一度所望のシステムバッチサイズが決定されると、入力チャネルの処理は、上記のように、所望のシステムバッチサイズのバッチにおいて進めることができる。いったん、入力チャネルのそれぞれに対する現在のデータサンプルが処理されると、各入力チャネルからの次のデータサンプルを同じようにして処理することができる。
【００３４】
このことは、全てのデータ要求がキャッシュメモリによって供給されることができることから、マイクロプロセッサの性能を高める点で有利である。さらに、ＳＩＭＤ型演算を十分に利用できる。さらに、単一処理機能を複数回処理する結果として命令のキャッシュ処理が改善されることにより、性能の向上が得られる。
【００３５】
上記の例に記載される手法は、音声処理システムを構成するためのソフトウェアツールとして実施することができる。図１に示されるように、ある数の処理機能１１０、１１４、１１８および１２２が示される。異なる音声処理システムにおいては、異なる数および／または異なる構成の処理機能が必要とされる場合がある。たとえば、音声復元／圧縮機能をさらに実行することが必要とされる場合がある。通常、各処理機能は、たとえば、ハードウェアプラットフォーム上にライブラリ機能として設けられる。音声処理システムが初期化されるとき、処理機能の数、タイプおよび構成がソフトウェアツールを用いて定義される。いったん、ソフトウェアツールが、音声処理システムに実装される処理機能の数およびタイプを知ると、ソフトウェアツールは、上記の説明に従って、システムバッチサイズあるいは好ましいシステムバッチサイズを決定することができる。
【００３６】
いったん、適当なバッチサイズが決定されると、ソフトウェアツールは、各処理機能の好ましいバッチサイズに基づいて、全ての処理機能が同じ数の入力チャネルを確実に処理するようにするために、各処理機能が何回実行されるべきか、または何段階で実行されるべきかを決定することができる。たとえば、システムバッチサイズが８であると決定され、１つの処理機能が４の好ましいバッチサイズを有する場合には、ソフトウェアツールによって、処理機能は２回実行され、それにより８の入力チャネルが確実に処理されるようになるであろう。
【００３７】
上記の発明の概念は音声処理システムへの適用に制限されないことは当業者には理解されよう。実際に、本明細書に記載される発明の概念は、任意の他のデータ処理システムに同じく適用することができ、こうしたシステムにおいて、特にＳＩＭＤ型あるいはそれと等価な演算のような、ある特定の並列処理演算を最大にする、プロセッサ効率を最大にすることが望ましい。他のそのようなデータ処理システムは、たとえば、デジタルビデオ放送（ＤＶＢ）転送ストリームを処理するためのシステムを含むことができる。ＤＶＢ転送ストリームは、単一転送ストリーム内に多くの多重化されたＤＶＢチャネルを含む。各ＤＶＢチャネルはマルチプレクサによって分離され、各チャネルは、たとえば、上記の説明に従ったシステムを用いて復号化されることができる。
【図面の簡単な説明】
【図１】電気通信音声処理システムの一部を示すブロック図である。
【図２】図１の入力音声チャネルおよび処理機能を表すマトリクスを示す図である。
【図３】図２のマトリクスをさらに詳細に示す図である。
【図４】通常のマイクロプロセッサおよびキャッシュ構成の概要を示すブロック図である。
【符号の説明】
１０２  入力
１０４  音声処理システム
１０６  出力
１０８、１１２、１１６、１２０  バッファ
１１０、１１４、１１８．１２２  処理機能
３００〜３１４  バッチ
４００  マイクロプロセッサ
４０２  キャッシュコントローラ
４０４  キャッシュメモリ
４０６  メインメモリ
４０８  データバス
４１０  アドレスバス
【図１】
0004184034.tif 000002
【図２】
0004184034.tif 000003
【図３】
0004184034.tif 000004
【図４】
0004184034.tif 000005