(57)【特許請求の範囲】
【請求項１】
ビデオパイプラインにおけるビデオ処理ハードウェアモジュールのためにデータを調停するための方法であって、前記方法は、
前記ビデオ処理ハードウェアモジュールについてアービトレーション重みを判断するステップと、
どのビデオ処理ハードウェアモジュールがしきい値を上回るアービトレーション重みを有するかを判断するステップと、
前記しきい値を上回るアービトレーション重みを有する前記ビデオ処理ハードウェアモジュールにデータを発行するステップと、
データが発行されたビデオ処理ハードウェアモジュールについてのアービトレーション重みをデクリメントするステップと、
前記しきい値を上回るアービトレーション重みを有するビデオ処理ハードウェアモジュールがなくなるまで、前記判断するステップ、発行するステップ、およびデクリメントするステップを繰り返すステップとを含む、方法。
【請求項２】
前記アービトレーション重みを判断するステップは、メモリと前記ビデオ処理ハードウェアモジュールに結合されたビデオダイレクトメモリアクセスモジュール（ＶＤＭＡモジュール）との間の最大帯域幅に関連付けられたバースト長を判断するステップを含む、請求項１に記載の方法。
【請求項３】
前記アービトレーション重みを判断するステップはさらに、前記バースト長に基づいて前記ＶＤＭＡモジュールから前記ビデオ処理ハードウェアモジュールにデータを送信することによって前記ビデオ処理ハードウェアモジュールについての帯域幅特性を判断するステップを含む、請求項２に記載の方法。
【請求項４】
前記アービトレーション重みを判断するステップはさらに、前記ビデオ処理ハードウェアモジュールについての前記帯域幅特性に基づいて前記アービトレーション重みを判断するステップを含む、請求項３に記載の方法。
【請求項５】
前記ビデオ処理ハードウェアモジュールにデータを発行するステップは、メモリと前記ビデオ処理ハードウェアモジュールに結合されたビデオダイレクトメモリアクセスモジュール（ＶＤＭＡモジュール）との間の最大帯域幅に関連付けられたバースト長を用いて前記ビデオ処理ハードウェアモジュールにデータを発行するステップを含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記アービトレーション重みをデクリメントするステップは、最小正規化帯域幅値だけ前記アービトレーション重みをデクリメントするステップを含む、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記アービトレーション重みを判断するステップは、正規化帯域幅を残りの帯域幅値に加算するステップを含み、
前記残りの帯域幅値は、以前のアービトレーションサイクルから残った値を含む、請求項１〜５のいずれか１項に記載の方法。
【請求項８】
ビデオパイプラインにおける複数のビデオ処理ハードウェアモジュールのためにデータを調停するためのコンピューティング装置であって、前記コンピューティング装置は、
前記複数のビデオ処理ハードウェアモジュールを含むビデオパイプラインと、
スイッチを通して前記ビデオ処理ハードウェアモジュールに結合されたビデオダイレクトメモリアクセス（ＶＤＭＡ）モジュールとを含み、前記ＶＤＭＡモジュールは、
前記ビデオ処理ハードウェアモジュールについてアービトレーション重みを判断するように構成された分析モジュールと、
アービタとを含み、前記アービタは、
どのビデオ処理ハードウェアモジュールがしきい値を上回るアービトレーション重みを有するかを判断し、
前記しきい値を上回るアービトレーション重みを有する前記ビデオ処理ハードウェアモジュールにデータを発行し、
データが発行されたビデオ処理ハードウェアモジュールについてのアービトレーション重みをデクリメントし、
前記しきい値を上回るアービトレーション重みを有するビデオ処理ハードウェアモジュールがなくなるまで、前記判断すること、発行すること、およびデクリメントすることを繰り返すように構成される、コンピューティング装置。
【請求項９】
前記分析モジュールは、メモリと前記ビデオ処理ハードウェアモジュールに結合された前記ＶＤＭＡモジュールとの間の最大帯域幅に関連付けられたバースト長を判断することにより、前記アービトレーション重みを判断するように構成される、請求項８に記載のコンピューティング装置。
【請求項１０】
前記分析モジュールはさらに、前記バースト長に基づいて前記ＶＤＭＡモジュールから前記ビデオ処理ハードウェアモジュールにデータを送信することによって前記ビデオ処理ハードウェアモジュールについての帯域幅特性を判断することにより、前記アービトレーション重みを判断するように構成される、請求項９に記載のコンピューティング装置。
【請求項１１】
前記分析モジュールはさらに、前記ビデオ処理ハードウェアモジュールについての前記帯域幅特性に基づいて前記アービトレーション重みを判断することにより、前記アービトレーション重みを判断するように構成される、請求項１０に記載のコンピューティング装置。
【請求項１２】
前記アービタは、メモリと前記ＶＤＭＡモジュールとの間の最大帯域幅に関連付けられたバースト長を用いて前記ビデオ処理ハードウェアモジュールにデータを発行することにより、前記ビデオ処理ハードウェアモジュールにデータを発行するように構成される、請求項８に記載のコンピューティング装置。
【請求項１３】
前記アービタは、最小正規化帯域幅値だけ前記アービトレーション重みをデクリメントすることにより、前記アービトレーション重みをデクリメントするように構成される、請求項８〜１２のいずれか１項に記載のコンピューティング装置。
【請求項１４】
前記分析モジュールは、正規化帯域幅を残りの帯域幅値に加算することにより、前記アービトレーション重みを判断するように構成される、請求項８に記載のコンピューティング装置。
【請求項１５】
前記残りの帯域幅値は、以前のアービトレーションサイクルから残った値を含む、請求項１４に記載のコンピューティング装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の例は一般にビデオ処理に関し、特にマルチチャネルビデオダイレクトメモリアクセスモジュールに関する。
【背景技術】
【０００２】
背景
フィールドプログラマブルゲートアレイは、コンピューティング装置の迅速な試作および設計を可能にする。予め設計された多くのモジュラーコンピュータ処理モジュールは、そのようなコンピューティング装置の迅速で強力な作成のために存在する。エンドユーザに表示するためのビデオデータを提供するように１つ以上のビデオ処理機能を有するコンピューティング装置を設計することは、よくあることである。
【０００３】
ビデオ処理機能は一般に、画素データを検索して処理するいくつかのビデオ処理ハードウェアモジュールを含むビデオパイプラインを伴う。当該画素データは異なるデータ作成者らによって生成され得るため、そのような画素データは一般に、ビデオパイプラインのモジュールによる検索のために、メインシステムメモリなどの共通メモリバッファに格納される。ビデオダイレクトメモリアクセス（video direct memory access：ＶＤＭＡ）モジュールと呼ばれるモジュールは、メモリバッファから画素データを検索し、その画素データを処理のためにパイプラインのモジュールに送信するよう機能する。ビデオ処理は一般に、ビデオフレームレート、解像度、および潜在的には他の要因によって支配される特定のタイミングに従って機能するため、ＶＤＭＡは、ビデオデータがメモリから検索されるタイミング、および、画素データを得るためにメモリとインターフェイス接続することに関連する他の局面を管理する。
【０００４】
多くのビデオパイプラインは複数のビデオ処理ハードウェアモジュールを含み、それらは各々独立してシステムメモリとインターフェイス接続する。典型的には、そのような状況に対処するために、複数のＶＤＭＡモジュールが提供される。各ＶＤＭＡモジュールは、システムメモリへの独立したアクセスを有し、このため、システムメモリ内のデータにアクセスすることができる。
【０００５】
上述のような複数の独立したＶＤＭＡモジュールの提供に関する問題がいくつかある。１つの問題は、各ビデオ処理ハードウェアモジュールは同じ速度でデータを読出して処理するわけではないため、各ビデオ処理ハードウェアモジュールが同じ帯域幅特性を有するわけではない、ということである。このため、異なるＶＤＭＡモジュールは典型的には、異なるハードウェアモジュールの異なる帯域幅特性に基づいて手動でプログラミングされる。なぜなら、大型のＶＤＭＡモジュールを含むことは無駄であるためである。別の問題は、複数のＶＤＭＡモジュールを含むことが、それらのＶＤＭＡモジュールを設計中のコンピューティング装置の他の部分に結合するためのインフラストラクチャの複数のインスタンスをもたらす、ということである。さらに別の問題は、各ＶＤＭＡモジュールは関連付けられたビデオ処理ハードウェアモジュールによって実行されている特定の機能に対処するようにプログラミングされているため、複数のＶＤＭＡモジュールとは、プログラミングが複数回行なわれなければならないことを意味する、ということである。
【０００６】
以上のように、当該技術分野において必要なことは、さまざまなビデオ処理アプリケーションに対処するための向上した手法である。
【発明の概要】
【課題を解決するための手段】
【０００７】
概要
ビデオパイプラインにおけるチャネルのためにデータを調停するための方法が提供される。この方法は、チャネルについてアービトレーション重みを判断するステップを含む。この方法はまた、どのチャネルがしきい値を上回るアービトレーション重みを有するかを判断するステップを含む。この方法はさらに、しきい値を上回るアービトレーション重みを有するチャネルにデータを発行するステップを含む。この方法はまた、データが発行されたチャネルについてのアービトレーション重みをデクリメントするステップを含む。この方法はさらに、しきい値を上回るアービトレーション重みを有するチャネルがなくなるまで、判断するステップ、発行するステップ、およびデクリメントするステップを繰り返すステップを含む。
【０００８】
ビデオパイプラインにおけるチャネルのためにデータを調停するためのコンピューティング装置が提供される。このコンピューティング装置は、チャネルに結合されたビデオダイレクトメモリアクセス（ＶＤＭＡ）モジュールを含む。ＶＤＭＡモジュールは、チャネルについてアービトレーション重みを判断するように構成される。ＶＤＭＡモジュールはまた、どのチャネルがしきい値を上回るアービトレーション重みを有するかを判断するように構成される。ＶＤＭＡモジュールはさらに、しきい値を上回るアービトレーション重みを有するチャネルにデータを発行するように構成される。ＶＤＭＡモジュールはまた、データが発行されたチャネルについてのアービトレーション重みをデクリメントするように構成される。ＶＤＭＡモジュールはさらに、しきい値を上回るアービトレーション重みを有するチャネルがなくなるまで、判断すること、発行すること、およびデクリメントすることを繰り返すように構成される。
【０００９】
プロセッサによって実行されると、プロセッサに方法を行なわせる命令を格納する、非一時的なコンピュータ読取可能媒体も提供される。この方法は、チャネルについてアービトレーション重みを判断するステップを含む。この方法はまた、どのチャネルがしきい値を上回るアービトレーション重みを有するかを判断するステップを含む。この方法はさらに、しきい値を上回るアービトレーション重みを有するチャネルにデータを発行するステップを含む。この方法はまた、データが発行されたチャネルについてのアービトレーション重みをデクリメントするステップを含む。この方法はさらに、しきい値を上回るアービトレーション重みを有するチャネルがなくなるまで、判断するステップ、発行するステップ、およびデクリメントするステップを繰り返すステップを含む。
【００１０】
図面の簡単な説明
上述の特徴が詳細に理解され得る態様で、上に簡潔に概説されたより特定的な説明が、例示的実現化例を参照して提供されてもよく、それらのうちのいくつかを添付図面に示す。しかしながら、添付図面は典型的な例示的実現化例を示すに過ぎず、したがって、範囲を限定すると考えられるべきではない。
【図面の簡単な説明】
【００１１】
【図１Ａ】マルチチャネルＶＤＭＡモジュールによってサービスされるビデオパイプラインを含む電子処理装置を設計するための回路設計システムを示すブロック図である。
【図１Ｂ】ＦＰＧＡ構成モジュールによってＦＰＧＡ内に構成される回路モデルのブロック図である。
【図２】一例に従った、ビデオダイレクトメモリアクセスモジュールに結合されたビデオ処理チャネルについてアービトレーション重みを判断するための方法ステップのフロー図である。
【図３】一例に従った、異なるビデオパイプラインチャネル間でデータを調停するための方法ステップのフロー図である。
【発明を実施するための形態】
【００１２】
理解を促すため、図面に共通している同じ要素を示すために、可能であれば同じ参考符号を使用している。一例の要素は他の例に有益に取り入れられ得る、ということが考えられる。
【００１３】
詳細な説明
アービタを有するマルチチャネルビデオダイレクトメモリアクセス（ＶＤＭＡ）モジュール、および、ビデオパイプラインのビデオ処理ハードウェアモジュールの測定された帯域幅特性に基づいてＶＤＭＡモジュールを自動的にプログラミングするための手法が提供される。マルチチャネルＶＤＭＡモジュールは、メモリから画素データを読出し、アービトレーションスケジュールに従って画素データを適切なビデオ処理ハードウェアモジュールに流し出す。アービトレーションスケジュールは、ＶＤＭＡとメモリとの間の測定された帯域幅特性に、および、異なるビデオ処理ハードウェアモジュールのデータ消費レートに基づいて設定される。
【００１４】
図１Ａは、マルチチャネルＶＤＭＡモジュールによってサービスされるビデオパイプラインを含む電子処理装置を設計するための回路設計システム１００を示すブロック図である。図示されるように、回路設計システム１００は、設計コンピュータシステム１０１と、フィールドプログラマブルゲートアレイ（field programmable gate array：ＦＰＧＡ）１２０とを含む。
【００１５】
設計コンピュータシステム１０１は、中央処理装置１０２（central processing unit：ＣＰＵ）と、メモリ１０４と、入力／出力ブリッジ１０６と、不揮発性ストレージ１１０と、入力／出力装置１０８とを含む。ＣＰＵ１０２は、命令およびデータを受信し、当該命令に従って当該データを処理する。メモリ１０４は、ＣＰＵ１０２によって使用されるための命令およびデータを格納する。入力／出力ブリッジ１０６は、ＣＰＵ１０２、メモリ１０４、不揮発性ストレージ１１０、入力／出力装置１０８、およびＦＰＧＡ１２０間の通信を提供する。不揮発性ストレージ１１０は、設計コンピュータシステム１０１の電源がオフにされると、データおよび命令を格納する。入力／出力装置１０８は、設計コンピュータシステム１０１の外部の装置とインターフェイス接続するための装置を含む。一般に知られているように、ＦＰＧＡとは、異なる論理ブロックをイネーブルにするかまたはディスエーブルにすることによって所望の機能を行なうように構成され得る構成可能論理ブロックを有する回路である。
【００１６】
メモリ１０４は、設計モジュール１１２と、回路モデル１１４と、ＦＰＧＡ構成モジュール１１６とを格納する。設計モジュール１１２は、回路モデル１１４を設計するための機能性を提供するためのアプリケーションを包含する。このため、設計モジュール１１２は、回路モデル１１４のさまざまな局面の設計を可能にするツールを含んでいてもよい。たとえば、設計モジュール１１２は、回路モデル１１４内の回路モジュールの配置、接続性、およびさまざまな局面の特定を可能にしてもよい。ＦＰＧＡ構成モジュール１１６は、回路モデル１１４に基づいてＦＰＧＡ１２０を構成し、回路モデル１１４によって特定された設計に従ってＦＰＧＡ１２０のさまざまな構成可能要素を構成する。
【００１７】
図１Ｂは、ＦＰＧＡ構成モジュール１１６によってＦＰＧＡ１２０内に構成される回路モデル１１４のブロック図である。図示されるように、回路モデル１１４は、ビデオデータソース１５０と、メモリ１５２と、ビデオダイレクトメモリアクセス（ＶＤＭＡ）モジュール１５８と、スイッチ１６０と、ビデオ処理モジュール１６２とを含む。ＶＤＭＡモジュール１５８は、アービタ１５９と分析モジュール１１８とを含む。
【００１８】
図１Ｂに示す主題はＦＰＧＡ１２０内に構成される回路モデル１１４であるとしてここに説明されるものの、本開示の教示はそのように限定されない、ということが理解されるべきである。たとえば、図１Ｂに示すさまざまな要素は、配線回路の要素であってもよい。そのような配線回路は、システム・オン・チップ（system on a chip：ＳｏＣ）内に、または別のハードウェアプラットフォームに含まれてもよい。
【００１９】
ビデオデータソース１５０は一般に、画素データを生成するモジュールを含む。そのようなビデオデータソース１５０は、中央処理装置またはマイクロコントローラ、専用グラフィックス処理装置、テストデータ生成モジュール、または、メモリ１５２に格納されるフレームデータ１５４に書込むための画素データを生成する他の電子モジュールを含んでいてもよい。フレームデータ１５４は、ビデオ出力の１つ以上のフレーム用の画素データを格納する。
【００２０】
メモリ１５２とＶＤＭＡモジュール１５８との接続、および、ＶＤＭＡモジュール１５８とスイッチ１６０との接続は、ＡＸＩ準拠の接続であってもよく、ここで、ＡＸＩは、ＡＲＭ社によって開発されたＡＭＢＡ（Advance Microcontroller Bus Architecture：高度マイクロコントローラバスアーキテクチャ）オープン規格の一部である、「高度拡張可能インターフェイス」（Advanced Extensible Interface）規格である。スイッチ１６０は、ＡＸＩストリーミングスイッチであってもよい。
【００２１】
上述のように、回路モデル１１４として表わされるシステムの設計者は、フレームデータ１５４に格納された画素データがディスプレイに出力される前に、さまざまなビデオ処理手法が当該画素データに適用されることを望む場合がある。一例では、特定の解像度で生成されたフレーム用の画素データがより高い解像度にアップコンバートされる、アップコンバーション手法が適用される。別の例では、より低い解像度の複数のビデオ入力を「タイル表示する」ことによって高解像度の最終ビデオ出力が生成される、モザイク手法が適用される。他の例では、フレームレート変換が適用されてもよく、３次元表示用のフレーム多重化が適用されてもよく、または、さまざまな他の手法が適用されてもよい。
【００２２】
これらの手法を行なうために、ビデオ処理モジュール１６２が、設計者によって回路モデル１１４内に含まれる。これらのビデオ処理モジュール１６２は、ビデオパイプラインの「チャネル」であると考えられ得る。一例では、ビデオ処理モジュール１６２はアップスケーリングパイプラインとして機能し、上述のアップコンバーション手法を行なう。より具体的には、当該アップスケーリングパイプラインは、ある解像度のビデオを受付け、そのビデオを、第２のより高い解像度のビデオにアップコンバートする。そのようなパイプラインは、デインターレース機能を行なう１つ以上のビデオ処理モジュール１６２と、スケーリング機能を行なう１つ以上の他のビデオ処理モジュール１６２と、オンスクリーン表示機能を行なう１つ以上の他のビデオ処理モジュール１６２とを含んでいてもよい。ビデオ処理モジュール１６２はまた、モザイク表示パイプラインとして機能してもよい。そのようなパイプラインは、より低い解像度の複数のビデオストリームを入力として受付け、それらの入力を単一の「タイル状」ビデオ出力に変換する。ビデオ処理モジュール１６２は、デインターレースモジュールと、スケーリングモジュールと、オンスクリーン表示モジュールとを含むであろう。別の例示的なパイプラインは、ブロードキャストマルチビューアパイプラインである。そのようなパイプラインも、特定の態様で配置された、デインターレーサ、スケーラ、オンスクリーンディスプレイを含むであろう。
【００２３】
ビデオ処理モジュール１６２の各々にデータを提供するために、アービタ１５９と分析モジュール１１８とを含むビデオダイレクトメモリアクセス（ＶＤＭＡ）モジュール１５８が提供される。一般に、ＶＤＭＡモジュール１５８は、メモリ内のフレームデータ１５４から、異なるビデオ処理モジュール１６２に関連付けられた画素データを順次読出し、読出されたデータをインターリーブし、当該データをスイッチ１６０に送信する。このインターリーブされたデータは、異なるビデオ処理モジュール１６２向けのデータを含む。スイッチ１６０は、当該データを、処理のために特定のビデオ処理モジュール１６２に送信する。
【００２４】
分析モジュール１１８は、ビデオ処理モジュール１６２への効率的なビデオデータアービトレーションのためにＶＤＭＡモジュール１５８を「調整する」ために、分析を行なう。より具体的には、分析モジュール１１８は、ビデオトラフィックが、メモリ１５２とＶＤＭＡモジュール１５８との間、および、ＶＤＭＡモジュール１５８とビデオ処理モジュール１６２との間を流れるようにする。分析モジュールはまた、帯域幅特性といった、流れるデータのある特性を測定し、データフローのさまざまな局面を修正し、アービタ１５９のアービトレーションスケジュールを調節して、ＶＤＭＡモジュール１５８がビデオ処理モジュール１６２にデータを効率的に転送するようにする。
【００２５】
分析モジュール１１８によって行なわれる分析は一般に、メモリ１５２とＶＭＤＡモジュール１５８との間の最大帯域幅を測定することと、この最大帯域幅に関連付けられたバースト長を判断することと、ＶＤＭＡモジュール１５８と各ビデオ処理モジュール１６２との間の帯域幅を測定することと、アービタ１５９用のアービトレーションスケジュールを決定することと、アービトレーションスケジュールに従ってアービタ１５９を構成することとを含む。
【００２６】
メモリ１５２とＶＤＭＡモジュール１５８との間の最大量帯域幅を判断するために、分析モジュール１１８はＶＤＭＡモジュール１５８を「無限シンクモード」でプログラミングする。この無限シンクモードにより、ＶＤＭＡモジュール１５８は、メモリ１５２からデータを連続的に要求するようになる。分析モジュール１１８はまた、ＶＤＭＡモジュール１５８を、最小許容バースト長を用いてフレームデータ１５４からデータを連続的に要求するようプログラミングする。バースト長とは、特定のアドレスにあるデータに対する要求に応答して、メモリ１５２によって提供されるデータの量を指す。ＶＤＭＡモジュール１５８とメモリ１５２との接続は、可能なバースト長の範囲に関連付けられてもよい。これらのバースト長のうちのいずれも、メモリ１５２とＶＤＭＡモジュール１５８との間の送信のために選択されてもよい。
【００２７】
しきい値量の時間の間にメモリ１５２からデータを受信した後で、分析モジュール１１８は、このしきい値量の時間および転送されたデータの量に基づいて、選択されたバースト長に関連付けられた帯域幅を判断する。この時点で、分析モジュール１１８は、バースト長を次の許容バースト長まで増加させ、そのバースト長に関連付けられた帯域幅を測定する。分析モジュール１１８は、最大許容バースト長に達するまで、引き続きバースト長を増加させ、それらのバースト長に関連付けられた帯域幅を測定する。分析モジュール１１８は、これらの異なるバースト長に関連付けられた最大帯域幅を識別する。２つ以上のバースト長が同等の最大帯域幅に、または互いのしきい値内の帯域幅に関連付けられる場合、分析モジュール１１８は、最大帯域幅に関連付けられた最大バースト長および最小バースト長双方を識別する。
【００２８】
最大帯域幅が一旦判断されると、分析モジュール１１８は、最大帯域幅に関連付けられた最小バースト長を使用して、ビデオ処理モジュール１６２の各々に関連付けられた帯域幅を判断する。より具体的には、分析モジュール１１８は、第１のビデオ処理モジュール１６２（１）以外のすべてのビデオ処理モジュール１６２をディスエーブルにし、そのビデオ処理モジュール１６２（１）に対して、しきい値量の時間の間にＶＤＭＡモジュール１５８から読出すようにという読出リクエストを、上述の最小バースト長を用いて発行する。そのしきい値量の時間の後で、分析モジュール１１８は、それらのデータ転送に関連付けられた帯域幅の量を測定する。この帯域幅は一般に、その特定のビデオ処理モジュール１６２（１）が受信データを読出し、および／または処理することができるレートに関係する。１つのビデオ処理モジュール１６２について帯域幅を測定した後で、分析モジュール１１８は、測定されたビデオ処理モジュール１６２（１）をディスエーブルにし、別のビデオ処理モジュール１６２（２）をイネーブルにして、そのビデオ処理モジュール１６２（２）に関連付けられた帯域幅を同じ態様で測定する。分析モジュール１１８はこのようにして、各ビデオ処理モジュール１６２に関連付けられた帯域幅を測定する。
【００２９】
ビデオ処理モジュール１６２の各々について、分析モジュール１１８は、使用されるバースト長に関連付けられたデータがそのビデオ処理モジュール１６２によって処理されるサイクル数を得る。より具体的には、このサイクル数は、選択されたバースト長のデータの１バーストに関連付けられた（すなわち、ここでも、メモリ１５２とＶＤＭＡモジュール１５８との間の最大帯域幅に関連付けられた）データを処理するためにビデオ処理モジュール１６２が消費するサイクル数を表わす。各ビデオ処理モジュール１６２について、トラフィックをメモリ１５２から異なるビデオ処理モジュール１６２に調停するためにＶＤＭＡモジュール１５８によって使用される相対アービトレーション重みを割り当てるために、相対サイクル数が使用される。
【００３０】
これらの重みを割り当てるために、各ビデオ処理モジュール１６２について、分析モジュール１１８は、すべてのビデオ処理モジュール１６２のうちの特定のビデオ処理モジュールの判断されたサイクル数を最小サイクル数で除算して、正規化サイクルカウントを求める。正規化サイクルカウントは、最小の正規化サイクルカウントについては１を構成し、最小ではない正規化サイクルカウントについてはより大きい数を構成するであろう。たとえば、第３のビデオ処理モジュール１６２（２）がバースト長のデータを処理するために６４サイクルを消費し、その数が最小サイクル数である場合、第３のビデオ処理モジュール１６２（２）についての正規化サイクルカウントは１であろう。次に、第４のビデオ処理モジュール１６２（４）がバースト長のデータを処理するために１２８サイクルを消費する場合、第４のビデオ処理モジュール１６２（４）についての正規化サイクルカウントは２であろう。正規化サイクルカウントは、他のビデオ処理モジュール１６２に同様の態様で割り当てられる。
【００３１】
正規化サイクルカウントを割り当てた後で、分析モジュール１１８は、最大正規化サイクルカウントに正規化帯域幅値１を割り当て、正規化帯域幅値１に対する正規化帯域幅値を他のビデオ処理モジュール１６２に割り当てる。より具体的には、任意の特定のビデオ処理モジュール１６２についての正規化帯域幅値を求めるために、分析モジュール１１８は、最大正規化サイクルカウントを、正規化帯域幅値が所望されるビデオ処理モジュール１６２の正規化サイクルカウントで除算する。この演算の結果が、そのビデオ処理モジュール１６２についての正規化帯域幅値である。上述の例を続けると、第２のビデオ処理モジュール１６２（２）が最大正規化サイクルカウント４を有する場合、分析モジュール１１８は、第２のビデオ処理モジュール１６２（２）に正規化帯域幅１を割り当てるであろう。分析モジュール１１８は、正規化サイクルカウント１を有する第３のビデオ処理モジュール１６２（３）は、最大正規化サイクルカウント４を第３のビデオ処理モジュール１６２（３）についての正規化サイクルカウント１で除算することにより正規化値４／１を得て、１になると判断するであろう。分析モジュール１１８はまた、第４のビデオ処理モジュール１６２（４）の正規化帯域幅値は、最大正規化サイクルカウント４を第４のビデオ処理モジュール１６２（４）についての正規化サイクルカウント２で除算することにより値２を得て、２であると判断するであろう。なお、分数の正規化帯域幅値が可能である。
【００３２】
これらの正規化帯域幅値を用いて、ＶＤＭＡモジュール１５８におけるアービタ１５９は、メモリ１５２から受信されたデータのアービトレーションを行なう。より具体的には、アービタ１５９は、アービトレーションスキームに基づいて、どのビデオ処理モジュール１６２にデータを送信するかを判断する。当該アービトレーションスキームは、アービトレーションサイクルのスケジュールでビデオ処理モジュール１６２をスケジュールする。
【００３３】
各アービトレーションサイクル内で、アービタ１５９は、１つ以上のアービトレーションサブサイクルで、１つ以上のビデオ処理モジュール１６２にデータを送信する。アービトレーションサブサイクルごとに、アービタ１５９は、各ビデオ処理モジュール１６２について、アービタ１５９がその特定のサブサイクルでそのモジュールにデータを送信するかどうかを判断するために、優先度テスト動作を行なう。
【００３４】
各アービトレーションサイクルの最初に、アービタ１５９は、各ビデオ処理モジュール１６２について優先度値を判断する。アービタ１５９はこの優先度値を、ビデオ処理モジュール１６２についての正規化帯域幅を以前のアービトレーションサイクルからの「残りの」帯域幅量に加算して優先度値を得ることによって判断する。第１のアービトレーションサイクルでは残りの値は０であるが、他のアービトレーションサイクルでは、残りの値は、ビデオ処理モジュール１６２がそのアービトレーションサイクルでデータを受信した後に残っている「未使用の」帯域幅の量に関係する。
【００３５】
サブサイクルごとに、優先度テスト動作は下記を含む。アービタ１５９は、しきい値に対する優先度値をテストする。しきい値は、１であり得る最小正規化帯域幅値と等しくてもよい。優先度値がしきい値以上である場合、アービタ１５９は、そのアービトレーションサブサイクルでビデオ処理モジュール１６２にデータを発行し、そのビデオ処理モジュール１６２についての優先度値は、デクリメント量だけデクリメントされる。デクリメント量は、１であり得る最小正規化帯域幅値と等しくてもよい。優先度値がしきい値未満である場合、アービタ１５９は、そのアービトレーションサブサイクルでビデオ処理モジュール１６２にデータを発行せず、そのビデオ処理モジュール１６２についての優先度値をデクリメントしない。
【００３６】
上記の結果は、アービタ１５９が、特定のサブサイクルごとに、どのビデオ処理モジュール１６２がデータを受信するかを判断する、ということである。この判断に基づいて、アービタ１５９は、そのサブサイクルですべてのそのような処理モジュール１６２にデータを総当たり式に送信する。具体的には、アービタ１５９は、各サブサイクルでこれらの処理モジュール１６２にデータを特定の順序で送信する。各サブサイクルでは、順序は同じであってもよく、このため、順序は「総当たり」である。任意の特定のサブサイクルの持続時間はこのため、その特定のサブサイクルでデータを受信するビデオ処理モジュール１６２の数に依存する。
【００３７】
状況によっては、アービタ１５９は総当たりから逸脱してもよい。より具体的には、ある特定のサイクルである処理モジュール１６２が使用中でデータを受信できないことをアービタ１５９が検出した場合、アービタ１５９は、処理を進めるために、データを受信する異なる処理モジュール１６２を選択してもよい。
【００３８】
データを受信するビデオ処理モジュール１６２（または、上述のように「チャネル」）がない場合、アービトレーションサイクルは終了する。より具体的には、すべてのビデオ処理モジュール１６２についての最大優先度値がしきい値未満である場合、当該アービトレーションサイクルは終了し、新規のアービトレーションサイクルが始まる。
【００３９】
表１を参照して、このアービトレーションの一例をここに提供する。
【００４０】
【表１】
0006738826.tif 000002
【００４１】
第１のアービトレーションサイクル（アービトレーションサイクル１）で、および第１のサブサイクルで、アービタ１５９は、各ビデオ処理モジュール１６２についての優先度値を、残りの帯域幅値とそのサブサイクルについての正規化帯域幅との合計として計算する。残りの帯域幅がないため、チャネル１６２  １の優先度値は４である（正規化帯域幅４＋０）。同様に、第２、第３、および第４のチャネル１６２の優先度値は、図示されるようなそれらのチャネル１６２の正規化帯域幅に基づいて、それぞれ４、２、および１である。第１のサブサイクルでは、各チャネル１６２が、最小正規化帯域幅（１）であるしきい値以上の値を有するため、アービタ１５９は各チャネル１６２にデータを発行する。また、それらのチャネル１６２の各々についての優先順度値は、最小正規化帯域幅だけデクリメントされる。次のサブサイクルでは、チャネル１６２  １、２、および３だけがしきい値（１）以上の優先度値を有し、そのため、チャネル１６２  １、２、および３だけにデータが発行される。第３および第４のサブサイクルでは、チャネル１および２だけがしきい値以上の優先度値を有し、そのため、それらのチャネル１６２だけにデータが発行される。最後に、第４のサブサイクルの後では、しきい値以上の優先度値を有するチャネル１６２がないため、アービトレーションサイクルは第４のサブサイクルの後に終了する。第１のアービトレーションサイクルと同様の態様で、第２のアービトレーションサイクルが進行する。
【００４２】
表２を参照して、残りの帯域幅値の概念を示すために、別の例をここに提供する。
【００４３】
【表２】
0006738826.tif 000003
【００４４】
第１のアービトレーションサイクルで、チャネル１６２には、それらのチャネル１６２の正規化帯域幅値に基づいて、優先度値４、２、１．５、および１が割り当てられる。第１のサブサイクルについては、各チャネル１６２にデータが発行され、それぞれの優先度値はデクリメント値−１だけデクリメントされる。第２のサブサイクルについては、チャネル１６２  ２および３にはデータが発行されるが、チャネル１６２  ３および４の優先度値はしきい値１よりも小さいため、チャネル１６２  ３および４にはデータが発行されない。第３および第４のサブサイクルでは、第１のチャネル１６２に関係する優先度値だけがしきい値以上であるため、第１のチャネル１６２だけにデータが発行される。第２のアービトレーションサイクルは、アービトレーションサイクル１からの残りの帯域幅．５があるためにチャネル１６２  ３の初期優先度値が１．５ではなく２であるという点を除き、第１のアービトレーションサイクルと同様である。このため、アービトレーションサイクル１では、チャネル１６２  ３は第２のサブサイクルでデータを受信しないが、アービトレーションサイクル２では、チャネル１６２  ３は第２のサブサイクルでデータを受信する。
【００４５】
図２は、一例に従った、ビデオダイレクトメモリアクセスモジュール１５８に結合されたビデオ処理チャネルについてアービトレーション重みを判断するための方法ステップのフロー図である。方法２００は図１Ａおよび図１Ｂのシステムに関して説明されるが、当業者であれば、当該方法ステップをさまざまな代替的順序で行なうように構成されたどのシステムも本開示の範囲内にあるということを認識するであろう。
【００４６】
図示されるように、方法２００は、ＶＤＭＡモジュール１５８が、許容バースト長ごとに、ＶＤＭＡモジュール１５８とＶＤＭＡモジュール１５８にビデオデータを提供するメモリ１０４との間の帯域幅を測定する、ステップ２０２で始まる。具体的には、ＶＤＭＡモジュール１５８は、メモリ１５８からデータを連続的に読出し、ある量の時間の後で、読出されたデータの量を測定して、帯域幅を求める。ステップ２０４で、ＶＤＭＡモジュール１５８は、最大帯域幅に関連付けられた最小バースト長を判断する。具体的には、ＶＤＭＡモジュール１５８は、ステップ２０２で判断された帯域幅および関連付けられたバースト長を調べ、最大帯域幅に関連付けられたバースト長を選択する。ステップ２０６で、ＶＤＭＡモジュール１５８は、最大帯域幅に関連付けられた選択されたバースト長を使用して、ビデオパイプラインの各チャネルについて帯域幅を判断する。より具体的には、ＶＤＭＡモジュール１５８は、各チャネルがどれくらいの帯域幅をサポートできるかを判断するために、バースト長を用いてメモリ１５８から読出し、各チャネルに独立して送信する。ステップ２０８で、各チャネルに関連付けられた帯域幅を判断した後で、ＶＤＭＡモジュール１５８は、各チャネルについて、相対帯域幅値に基づいてアービトレーション重みを設定する。アービトレーション重みは、最小帯域幅についての正規化帯域幅値を１に設定し、他の正規化帯域幅値をそれぞれの帯域幅を最小帯域幅で除算したものに設定することにより、最初に帯域幅値を正規化することによって設定される。
【００４７】
図３は、一例に従った、異なるビデオパイプラインチャネル間でデータを調停するための方法ステップのフロー図である。方法３００は図１Ａおよび図１Ｂのシステムに関して説明されるが、当業者であれば、当該方法ステップをさまざまな代替的順序で行なうように構成されたどのシステムも本開示の範囲内にあるということを認識するであろう。
【００４８】
図示されるように、方法３００は、アービタ１５９が各チャネルについて初期重みを割り当てるステップ３０２で始まる。初期重みは、特定チャネルについての正規化帯域幅を、以前のアービトレーションサイクルからの残りの帯域幅がもしあればそれに加算することによって、割り当てられる。ステップ３０４で、アービタ１５９は、重みがしきい値を上回る各チャネルにデータを発行する。ステップ３０６で、アービタ１５９は、データが発行された各チャネルについての重みをデクリメントする。ステップ３０８で、アービタ１５９は、いずれかのチャネルがしきい値を上回る重みを有するかどうかを判断するためにチェックする。しきい値を上回る重みを有するチャネルがない場合、方法は、次のサブサイクルを処理するためにステップ３０４に戻る。少なくとも１つのチャネルがしきい値を上回る重みを有する場合、方法はステップ３１０に進む。ステップ３１０で、アービタ１５９は、次のアービトレーションサイクルについてアービトレーションを開始する。
【００４９】
ここに説明されたさまざまな例は、コンピュータシステムに格納されたデータを伴うさまざまなコンピュータ実装動作を採用してもよい。たとえば、これらの動作は物理量の物理的操作を必要としてもよく、必ずではないが通常、これらの量は電気信号または磁気信号の形態をとってもよく、その場合、それらまたはそれらの表現は、格納され、転送され、組合され、比較され、または他の態様で操作され得る。また、そのような操作はしばしば、生成、識別、判断、または比較といった用語で呼ばれる。１つ以上の例示的実現化例の一部を形成する、ここに説明されたどの動作も、有用なマシン動作であってもよい。これに加えて、１つ以上の例はまた、これらの動作を行なうための装置または機器に関する。当該機器は、要求される具体的な目的のために具体的に構成されてもよく、または、それは、それ自体に格納されたコンピュータブログラムによって選択的に作動または構成される汎用コンピュータであってもよい。特に、さまざまな汎用マシンが、ここでの教示に従って書かれたコンピュータプログラムとともに使用されてもよく、または、要求される動作を行なうためのより特殊な機器を構成することがより便利であってもよい。
【００５０】
ここに説明されたさまざまな例は、ハンドヘルド装置、マイクロプロセッサシステム、マイクロプロセッサベースのまたはプログラマブルな民生用電子機器、ミニコンピュータ、メインフレームコンピュータなどといった、他のコンピュータシステム構成で実践されてもよい。
【００５１】
１つ以上の例が、１つ以上のコンピュータ読取可能媒体で具現化された、１つ以上のコンピュータプログラムとして、または１つ以上のコンピュータプログラムモジュールとして実現されてもよい。コンピュータ読取可能媒体という用語は、後でコンピュータシステムに入力され得るデータを格納できる任意のデータ記憶装置を指す。コンピュータ読取可能媒体は、コンピュータプログラムを、それらがコンピュータによって読取られることを可能にする態様で具現化するための、既存の、または今後開発される任意の技術に基づいていてもよい。コンピュータ読取可能媒体の例は、ハードドライブ、ネットワーク接続ストレージ（network attached storage：ＮＡＳ）、読出専用メモリ、ランダムアクセスメモリ（たとえばフラッシュメモリ装置）、コンパクトディスク（Compact Disc：ＣＤ）−ＲＯＭ、ＣＤ−Ｒ、またはＣＤ−ＲＷ、ＤＶＤ（Digital Versatile Disc：デジタル多用途ディスク）、磁気テープ、ならびに、他の光学的および非光学的データ記憶装置を含む。コンピュータ読取可能媒体はまた、コンピュータ読取可能コードが分散された態様で格納されて実行されるように、ネットワーク結合コンピュータシステム中に分散され得る。
【００５２】
いくつかの追加の例が続く。
一例では、ビデオパイプラインにおけるチャネルのためにデータを調停するための方法が提供されてもよい。そのような方法は、チャネルについてアービトレーション重みを判断するステップと、どのチャネルがしきい値を上回るアービトレーション重みを有するかを判断するステップと、しきい値を上回るアービトレーション重みを有するチャネルにデータを発行するステップと、データが発行されたチャネルについてのアービトレーション重みをデクリメントするステップと、しきい値を上回るアービトレーション重みを有するチャネルがなくなるまで、判断するステップ、発行するステップ、およびデクリメントするステップを繰り返すステップとを含んでいてもよい。
【００５３】
何らかのそのような方法では、アービトレーション重みを判断するステップは、メモリとチャネルに結合されたビデオダイレクトメモリアクセスモジュール（ＶＤＭＡモジュール）との間の最大帯域幅に関連付けられたバースト長を判断するステップを含んでいてもよい。
【００５４】
何らかのそのような方法では、アービトレーション重みを判断するステップはさらに、バースト長に基づいてＶＤＭＡモジュールからチャネルにデータを送信することによってチャネルについての帯域幅特性を判断するステップを含んでいてもよい。
【００５５】
何らかのそのような方法では、アービトレーション重みを判断するステップはさらに、チャネルについての帯域幅特性に基づいてアービトレーション重みを判断するステップを含んでいてもよい。
【００５６】
何らかのそのような方法では、チャネルにデータを発行するステップは、総当たり順序でデータを発行するステップを含んでいてもよい。
【００５７】
何らかのそのような方法では、チャネルにデータを発行するステップは、メモリとチャネルに結合されたビデオダイレクトメモリアクセスモジュール（ＶＤＭＡモジュール）との間の最大帯域幅に関連付けられたバースト長を用いてチャネルにデータを発行するステップを含んでいてもよい。
【００５８】
何らかのそのような方法では、アービトレーション重みをデクリメントするステップは、最小正規化帯域幅値だけアービトレーション重みをデクリメントするステップを含んでいてもよい。
【００５９】
何らかのそのような方法では、アービトレーション重みを判断するステップは、正規化帯域幅を残りの帯域幅値に加算するステップを含んでいてもよい。
【００６０】
何らかのそのような方法では、残りの帯域幅値は、以前のアービトレーションサイクルから残った値を含んでいてもよい。
【００６１】
別の例では、ビデオパイプラインにおける複数のチャネルのためにデータを調停するためのコンピューティング装置が提供されてもよい。このコンピューティング装置は、複数のチャネルを含み得るビデオパイプラインと、スイッチを通してチャネルに結合されたビデオダイレクトメモリアクセス（ＶＤＭＡ）モジュールとを含んでいてもよく、ＶＤＭＡモジュールは、チャネルについてアービトレーション重みを判断するように構成された分析モジュールと、アービタとを含み、アービタは、どのチャネルがしきい値を上回るアービトレーション重みを有するかを判断し、しきい値を上回るアービトレーション重みを有するチャネルにデータを発行し、データが発行されたチャネルについてのアービトレーション重みをデクリメントし、しきい値を上回るアービトレーション重みを有するチャネルがなくなるまで、判断すること、発行すること、およびデクリメントすることを繰り返すように構成される。
【００６２】
何らかのそのようなコンピューティング装置では、分析モジュールは、メモリとチャネルに結合されたＶＤＭＡモジュールとの間の最大帯域幅に関連付けられたバースト長を判断することにより、アービトレーション重みを判断するように構成されてもよい。
【００６３】
何らかのそのようなコンピューティング装置では、分析モジュールはさらに、バースト長に基づいてＶＤＭＡモジュールからチャネルにデータを送信することによってチャネルについての帯域幅特性を判断することにより、アービトレーション重みを判断するように構成されてもよい。
【００６４】
何らかのそのようなコンピューティング装置では、分析モジュールはさらに、チャネルについての帯域幅特性に基づいてアービトレーション重みを判断することにより、アービトレーション重みを判断するように構成されてもよい。
【００６５】
何らかのそのようなコンピューティング装置では、アービタは、総当たり順序でデータを発行することにより、チャネルにデータを発行するように構成されてもよい。
【００６６】
何らかのそのようなコンピューティング装置では、アービタは、メモリとＶＤＭＡモジュールとの間の最大帯域幅に関連付けられたバースト長を用いてチャネルにデータを発行することにより、チャネルにデータを発行するように構成されてもよい。
【００６７】
何らかのそのようなコンピューティング装置では、アービタは、最小正規化帯域幅値だけアービトレーション重みをデクリメントすることにより、アービトレーション重みをデクリメントするように構成されてもよい。
【００６８】
何らかのそのようなコンピューティング装置では、分析モジュールは、正規化帯域幅を残りの帯域幅値に加算することにより、アービトレーション重みを判断するように構成されてもよい。
【００６９】
何らかのそのようなコンピューティング装置では、残りの帯域幅値は、以前のアービトレーションサイクルから残った値を含んでいてもよい。
【００７０】
何らかのそのようなコンピューティング装置では、スイッチ、および、ＶＤＭＡモジュールとスイッチとの接続、のうちの１つ以上が、高度拡張可能インターフェイス（ＡＸＩ）に準拠していてもよい。
【００７１】
別の例では、非一時的なコンピュータ読取可能媒体が提供されてもよい。この非一時的なコンピュータ読取可能媒体は、プロセッサによって実行されると、プロセッサに、ビデオパイプラインにおけるチャネル１６２のためにデータを調停するための方法を行なわせる命令を格納していてもよい。この方法は、チャネルについてアービトレーション重みを判断するステップと、どのチャネルがしきい値を上回るアービトレーション重みを有するかを判断するステップと、しきい値を上回るアービトレーション重みを有するチャネルにデータを発行するステップと、データが発行されたチャネルについてのアービトレーション重みをデクリメントするステップと、しきい値を上回るアービトレーション重みを有するチャネルがなくなるまで、判断するステップ、発行するステップ、およびデクリメントするステップを繰り返すステップとを含む。
【００７２】
前述の説明は具体的な例示的実現化例に向けられているが、他の、およびさらに別の例示的実現化例が、その基本的範囲から逸脱することなく考え出されてもよく、その範囲は請求項によって定められる。
【図１Ａ】
0006738826.tif 000004
【図１Ｂ】
0006738826.tif 000005
【図２】
0006738826.tif 000006
【図３】
0006738826.tif 000007