(57)【要約】  ビデオ処理オペレーションを実行する耐待ち時間システムについて説明する。さらに、ビデオプロセッサにおけるストリーム処理、スカラーコンポーネント及びベクトルコンポーネントを有するビデオプロセッサ、及びビデオプロセッサにおける多次元データパス処理も、説明する。【選択図】  図１
2008521097.tif 000002
【特許請求の範囲】
【請求項１】
スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
前記ベクトル実行ユニットのデータを格納するデータストアメモリと、
を備え、
前記データストアメモリは配列状に構成された対称バンクデータ構造を有する複数のタイルを備え、
前記バンクデータ構造は各バンクの異なるタイルへのアクセスをサポートするように構成されている
システム。
【請求項２】
前記システムが、ビデオ処理オペレーションを実行するための前記ビデオプロセッサ用の多次元データパス処理システムである、請求項１に記載のシステム。
【請求項３】
ビデオ処理オペレーションをサポートする多次元データパス処理のためのシステムであって、
マザーボードと、
前記マザーボードに結合されたホストＣＰＵと、
前記マザーボードに結合され、前記ＣＰＵに結合され、請求項１に記載の前記システムを有するビデオプロセッサと、
を備えるシステム。
【請求項４】
前記バンクデータ構造の各々が、４×４のパターンに構成された複数のタイルを備える、請求項１、２、又は３に記載のシステム。
【請求項５】
前記バンクデータ構造の各々が、８×８、８×１６、又は１６×２４のパターンに構成された複数のタイルを備える、請求項１、２、又は３に記載のシステム。
【請求項６】
前記バンクデータ構造が、各バンクデータ構造の異なるタイルへのアクセスをサポートするように構成されており、二つの隣接するバンクデータ構造への該二つの隣接するバンクデータ構造のタイルの列を含む少なくとも一つのアクセスをサポートするように構成されている、請求項１、２、又は３に記載のシステム。
【請求項７】
前記タイルが、各バンクデータ構造の異なるタイルへのアクセスをサポートするように構成されており、少なくとも一つのアクセスが、二つの隣接するバンクデータ構造への該二つの隣接するバンクデータ構造のタイルの列を含むものである、請求項１、２、又は３に記載のシステム。
【請求項８】
前記データストアに結合されており、且つ、前記複数のバンクデータ構造のタイルにアクセスするための構成を選択するクロスバーを更に備える、請求項１、２、又は３に記載のシステム。
【請求項９】
前記クロスバーが、前記複数のバンクデータ構造の前記タイルにアクセスして、１クロック毎にベクトルデータパスにデータを供給する、請求項８に記載のシステム。
【請求項１０】
前記クロスバーによってアクセスされる前記複数のバンクデータ構造の前記タイルを受け取り、１クロック毎に前記ベクトルデータパスの前端に前記タイルを供給するためのコレクタを更に備える、請求項９に記載のシステム。
【請求項１１】
ビデオ処理オペレーションを実行するためのビデオプロセッサであって、
前記ビデオプロセッサとホストＣＰＵとの間の通信を実施するホストインターフェイスと、
前記ビデオプロセッサとフレームバッファメモリとの間の通信を実施するメモリインターフェイスと、
前記ホストインターフェイス及び前記メモリインターフェイスに結合されており、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
前記ホストインターフェイス及び前記メモリインターフェイスに結合されており、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
を備えるビデオプロセッサ。
【請求項１２】
ビデオ処理オペレーションを実行するためのシステムであって、
マザーボードと、
前記マザーボードに結合されたホストＣＰＵと、
前記マザーボードに結合され、且つ、前記ＣＰＵに結合された請求項１１に記載の前記ビデオプロセッサと、
を備えるシステム。
【請求項１３】
前記スカラー実行ユニットが、前記ビデオプロセッサのコントローラとして機能し、前記ベクトル実行ユニットの前記オペレーションを制御する、請求項１１に記載のビデオプロセッサ。
【請求項１４】
前記スカラー実行ユニットと前記ベクトル実行ユニットのインターフェイスを取るベクトルインターフェイスユニットを更に備える、請求項１１に記載のビデオプロセッサ。
【請求項１５】
前記スカラー実行ユニット及び前記ベクトル実行ユニットが、非同期に動作するように構成されている、請求項１１に記載のビデオプロセッサ。
【請求項１６】
前記スカラー実行ユニットが、第１のクロック周波数で実行し、前記ベクトル実行ユニットは第２のクロック周波数で実行する、請求項１５に記載のビデオプロセッサ又は請求項１２に記載のシステム。
【請求項１７】
前記スカラー実行ユニットが、アプリケーションのフロー制御アルゴリズムを実行するように構成されており、前記ベクトル実行ユニットが、前記アプリケーションのピクセル処理オペレーションを実行するように構成されている、請求項１１に記載のビデオプロセッサ又は請求項１２に記載のシステム。
【請求項１８】
前記ベクトル実行ユニットが、前記スカラー実行ユニットの前記制御の下で要求駆動ベースで動作するように構成されている、請求項１７に記載のビデオプロセッサ。
【請求項１９】
前記スカラー実行ユニットが、コマンドＦＩＦＯを使用して前記ベクトル実行ユニットに関数呼び出しを送るように構成されており、前記ベクトル実行ユニットが、前記コマンドＦＩＦＯにアクセスすることによって要求駆動ベースで動作する、請求項１７に記載のビデオプロセッサ又はシステム。
【請求項２０】
前記ビデオプロセッサの前記非同期オペレーションが、前記アプリケーションのベクトルサブルーチン又はスカラーサブルーチンの別個の独立した更新をサポートするように構成されている、請求項１７に記載のビデオプロセッサ又はシステム。
【請求項２１】
前記スカラー実行ユニットが、ＶＬＩＷ（超長命令語）コードを使用して動作するように構成されている、請求項１１に記載のビデオプロセッサ。
【請求項２２】
ビデオ処理オペレーションを実行するビデオプロセッサのためのストリームベースのメモリアクセスシステムであって、
スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
前記スカラー実行ユニット及び前記ベクトル実行ユニット用のデータを格納するフレームバッファメモリと、
前記スカラー実行ユニットと前記ベクトル実行ユニットと前記フレームバッファメモリとの間の通信を実施するメモリインターフェイスと、
を備え、
前記フレームバッファメモリが、複数のタイルを備え、
前記メモリインターフェイスが、前記ベクトル実行ユニット又は前記スカラー実行ユニットに対して、タイルの第１の順次アクセスを含む第１のストリームを実施し、タイルの第２の順次アクセスを含む第２のストリームを実施する、
システム。
【請求項２３】
ビデオ処理オペレーションをサポートするためにストリームベースのメモリアクセスを実行するシステムであって、
マザーボードと、
前記マザーボードに結合されたホストＣＰＵと、
前記マザーボードに結合され、前記ＣＰＵに結合されたビデオプロセッサであって、
前記ビデオプロセッサと前記ホストＣＰＵとの間の通信を確立するホストインターフェイスと、
前記ホストインターフェイスに結合されており、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
前記ホストインターフェイスに結合されており、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
を有する該ビデオプロセッサと、
前記スカラー実行ユニットと前記ベクトル実行ユニットとに結合されており、前記スカラー実行ユニットと前記ベクトル実行ユニットとフレームバッファメモリとの間のストリームベースの通信を確立するメモリインターフェイスと、
を備え、
前記フレームバッファメモリが、複数のタイルを備え、
前記メモリインターフェイスが、前記ベクトル実行ユニット又は前記スカラー実行ユニットに対して、タイルの第１の順次アクセスを含む第１のストリームを実施し、タイルの第２の順次アクセスを含む第２のストリームを実施する、
システム。
【請求項２４】
前記第１のストリーム及び前記第２のストリームが、少なくとも一つのプリフェッチされたタイルを含む、請求項２２に記載のシステム。
【請求項２５】
前記第１のストリームが、前記フレームバッファメモリの第１のロケーションから生じ、前記第２のストリームが、前記フレームバッファメモリの第２のロケーションから生じる、請求項２２に記載のシステム。
【請求項２６】
前記メモリインターフェイスが、複数の異なる発生元ロケーションからのストリーム、及び複数の異なる終端ロケーションへのストリームを含む複数のストリームを管理するように構成されている、請求項２２又は２３に記載のシステム。
【請求項２７】
前記発生元ロケーションの少なくとも一つ、又は前記終端ロケーションの少なくとも一つが、システムメモリ内にある、請求項２６に記載のシステム。
【請求項２８】
前記メモリインターフェイスに組み込まれており、前記第１のストリーム及び前記第２のストリームをサポートするために複数のメモリ読み取りを実施し、前記第１のストリーム及び前記第２のストリームをサポートするために複数のメモリ書き込みを実施するように構成されたＤＭＡエンジンを更に備える、請求項２２又は２３に記載のシステム。
【請求項２９】
前記第１のストリームが、前記第２のストリームよりも多い待ち時間を受け、前記第１のストリームは、タイルを格納するために前記第２のストリームよりも多数のバッファが組み込まれる、請求項２２又は２３に記載のシステム。
【請求項３０】
前記メモリインターフェイスが、前記第１のストリーム又は前記第２のストリームの調整可能な数のタイルをプリフェッチして、前記第１のストリーム又は前記第２のストリームの待ち時間を補償するように構成されている、請求項２２又は２３に記載のシステム。
【請求項３１】
前記ビデオプロセッサとホストＣＰＵとの間の通信を実施するホストインターフェイスと、
前記ホストインターフェイスに結合されており、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
前記ホストインターフェイスに結合されており、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
前記ベクトル実行ユニットがメモリコマンドＦＩＦＯにアクセスすることによって要求駆動ベースで動作できるようにするコマンドＦＩＦＯと、
前記ビデオプロセッサとフレームバッファメモリとの間の通信を実施するメモリインターフェイスと、
複数の異なる記憶域の間のＤＭＡ転送を実施し、データストアメモリ及び命令キャッシュに前記ベクトル実行ユニットのデータと命令をロードするために前記メモリインターフェイスに組み込まれたＤＭＡエンジンと、
を備えるシステム。
【請求項３２】
前記システムがビデオ処理オペレーションを実行する耐待ち時間システムである、請求項３１に記載のシステム。
【請求項３３】
マザーボードと、
前記マザーボードに結合されたホストＣＰＵと、
前記マザーボードに結合されており、前記ＣＰＵに結合されたビデオプロセッサと、
を更に備える請求項３２に記載のシステム。
【請求項３４】
前記ベクトル実行ユニットが、前記要求駆動ベースで動作するために前記コマンドＦＩＦＯにアクセスすることによって前記スカラー実行ユニットに対して非同期に動作するように構成されている、請求項３１、３２、又は３３に記載のシステム。
【請求項３５】
前記要求駆動ベースが、前記異なる記憶域から前記ベクトル実行ユニットの前記コマンドＦＩＦＯへのデータ転送の待ち時間を隠蔽するように構成されている、請求項３１、３２、又は３３に記載のシステム。
【請求項３６】
前記スカラー実行ユニットがアルゴリズムのフロー制御処理を実施するように構成されており、前記ベクトル実行ユニットがビデオ処理ワークロードの大部分を実施するように構成されている、請求項３１、３２、又は３３に記載のシステム。
【請求項３７】
前記スカラー実行ユニットが、データ転送待ち時間を隠蔽するために前記ベクトル実行ユニットの作業パラメータを事前計算するように構成されている、請求項３６に記載のシステム。
【請求項３８】
前記ベクトル実行ユニットが、前記ＤＭＡエンジンを介してメモリ読み取りをスケジュールして、ベクトルサブルーチンの後続の実行のためのコマンドをプリフェッチするように構成されている、請求項３１に記載のシステム。
【請求項３９】
前記メモリ読み取りが、前記スカラー実行ユニットによる前記ベクトルサブルーチンの呼び出しに先立って、前記ベクトルサブルーチンの前記実行のためのコマンドをプリフェッチするようにスケジュールされる、請求項３８に記載のシステム。
【請求項４０】
前記ベクトル実行ユニットが、前記ＤＭＡエンジンを介してメモリ読み取りをスケジュールして、ベクトルサブルーチンの後続の実行のためのコマンドをプリフェッチするように構成されており、前記メモリ読み取りが、前記スカラー実行ユニットによる前記ベクトルサブルーチンの呼び出しに先立って、前記ベクトルサブルーチンの前記実行のためのコマンドをプリフェッチするようにスケジュールされる、請求項３３に記載のシステム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
本出願は、「Ａ  ＭＥＴＨＯＤ  ＡＮＤ  ＳＹＳＴＥＭ  ＦＯＲ  ＶＩＤＥＯ  ＰＲＯＣＥＳＳＩＮＧ」と題し、２００４年１１月１５日に出願したＧａｄｒｅ他の米国特許仮出願第６０／６２８，４１４号の、米国特許法第１１９（ｅ）条の下での利益を主張するものであり、当該仮出願を、その全体を参照することによって本明細書に援用するものである。
【発明の分野】
【０００２】
[001]本記載内容の分野は、デジタル電子コンピュータシステムに関するものである。より詳細には、本記載内容は、ビデオ情報をコンピュータシステムにおいて効率的に処理するシステムに関するものである。一側面に関して、ビデオ処理オペレーションを実行する耐待ち時間システムを説明する。別の一側面に関して、ビデオプロセッサにおけるストリーム処理を説明する。さらに、ビデオプロセッサにおける多次元データパス処理を説明する。また、スカラーコンポーネント及びベクトルコンポーネントを有するビデオプロセッサを説明する。
【背景】
【０００３】
[002]画像及びフルモーションビデオの表示は、近年の大幅な進歩に伴って改良されつつある電子業界の分野である。高品質ビデオ、特に高精細度デジタルビデオの表示及びレンダリングは、最新ビデオ技術のアプリケーション及びデバイスの主要な目標である。ビデオ技術は、携帯電話、パーソナルビデオレコーダ、デジタルビデオプロジェクタ、高精細度テレビ等にわたる多種多様な製品に使用されている。高精細度ビデオの生成及び表示に対応するデバイスの登場と成長展開は、大幅な技術革新と進歩を経験している電子業界の一つの領域である。
【０００４】
[003]多くの家庭用電化製品タイプ及び業務用レベルのデバイスにおいて導入されているビデオ技術は、一以上のビデオプロセッサを利用して、表示用のビデオ信号をフォーマット及び／又は強化する。これは特に、デジタルビデオアプリケーションに当てはまることである。例えば、一以上のビデオプロセッサは、標準的なセットトップボックスに組み込まれており、ＨＤＴＶ放送信号を、ディスプレイによって使用可能なビデオ信号に変換するために使用されている。このような変換には、例えば、スケーリングがあり、当該スケーリングでは、ビデオ信号が、１６：９以外のビデオ画像から、１６：９のディスプレイ（例えばワイドスクリーン）での適切な表示のために、変換される。一以上のビデオプロセッサを使用して走査変換を実行することが可能であり、当該走査変換では、奇数及び偶数の走査線が別個に表示されるインターレース形式から、フレーム全体が単一のスイープで描かれるプログレッシブ形式に、ビデオ信号が変換される。
【０００５】
[004]ビデオプロセッサのアプリケーションの更なる例には、信号の圧縮解除があり、当該圧縮解除においては、例えば、ビデオ信号が圧縮形式（例えばＭＰＥＧ−２）で受信され、圧縮解除されて表示用にフォーマットされる。別の例は、再インターレース走査変換であり、当該変換は、到来するデジタルビデオ信号を、ＤＶＩ（Ｄｉｇｉｔａｌ  Ｖｉｓｕａｌ  Ｉｎｔｅｒｆａｃｅ）形式から、市場に導入されている膨大な数の旧式のテレビディスプレイと互換性のある複合（コンポジット）ビデオ形式に変換することを伴う。
【０００６】
[005]より高度なユーザーは、例えば、インループ／アウトオブループ・デブロッキングフィルタ、高性能（advanced）動き適応型順次走査変換、符号化オペレーション用の入力ノイズフィルタリング、多相スケーリング／再サンプリング、サブピクチャ合成、並びに、色空間変換、調整、ピクセルポイントオペレーション（例えば、鮮明化、ヒストグラム調整等）、及び、種々のビデオの表面フォーマット変換サポートオペレーションのようなプロセッサ増幅器のオペレーション等、より高性能のビデオプロセッサ機能を必要とする。
【０００７】
[006]このような高性能のビデオプロセッサ機能を提供することに関する問題は、かかる機能を実装する十分に強力なアーキテクチャを有するビデオプロセッサが、多くのタイプのデバイスに組み込むにはあまりに高価なものであるということである。ビデオ処理機能が高性能になれば、それに応じて、シリコンダイ領域、トランジスタ数、メモリ速度要件等の点で、そのような機能を実装するために必要となる集積回路デバイスも更に高価となる。
【０００８】
[007]したがって、従来技術のシステム設計者は、ビデオプロセッサの性能とコストに関してトレードオフを強いられてきた。許容可能なコスト性能比を有すると広く見なされている従来のビデオプロセッサは、多くの場合、待ち時間の制約（例えば、ビデオの中断（stuttering）又はビデオ処理アプリケーションの停滞を防ぐためのもの）、及び計算密度（例えば、ダイの平方ミリメートルあたりのプロセッサオペレーションの数）に関して殆ど十分ではなかった。さらに、従来技術のビデオプロセッサは一般に、ビデオデバイスが複数のビデオストリームを処理することを期待されている場合（例えば、複数の到来ストリーム及び送出ディスプレイストリームの同時処理）など、線形スケーリング性能の要件に適合していない。
【０００９】
[008]したがって、従来技術の制限を克服する新規のビデオプロセッサシステムが必要とされている。新規のビデオプロセッサシステムは、ますます高度化するユーザーによって期待されている高性能なビデオプロセッサ機能を扱うよう、拡張可能であり、高い計算密度を有する必要がある。
【概要】
【００１０】
[009]本記載内容の実施の形態は、新規のビデオプロセッサシステムを提供するものであり、当該ビデオプロセッサシステムは、高性能なビデオ処理機能をサポートし、集積回路シリコンダイ領域、トランジスタ数、メモリ速度要件などを効率的に利用する。本記載内容の実施の形態は、高い計算密度を保持し、複数のビデオストリームを処理するために容易に拡張することができる。
【００１１】
[010]ある実施の形態では、ビデオプロセッサでビデオ処理オペレーションを実行する耐待ち時間システムが実施される。本システムは、ビデオプロセッサとホストＣＰＵ間の通信を実施するホストインターフェイスと、ホストインターフェイスに結合され、且つスカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ホストインターフェイスに結合され、且つ、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットとを備える。コマンドＦＩＦＯが、ベクトル実行ユニットがメモリコマンドＦＩＦＯにアクセスすることによって要求駆動ベースで動作できるようにするために備えられる。メモリインターフェイスが、ビデオプロセッサとフレームバッファメモリ間の通信を実施するために備えられる。ＤＭＡエンジンは、複数の異なる記憶域の間のＤＭＡ転送を実施し、データストアメモリ及び命令キャッシュにベクトル実行ユニットのデータと命令をロードするために、メモリインターフェイスに組み込まれている。
【００１２】
[011]ある実施の形態では、ベクトル実行ユニットは、コマンドＦＩＦＯにアクセスすることよってスカラー実行ユニットに対して非同期に動作して、要求駆動ベースで動作するように構成されている。要求駆動ベースは、異なる記憶域（例えば、フレームバッファメモリ、システムメモリ、キャッシュメモリなど）からベクトル実行ユニットのコマンドＦＩＦＯへのデータ転送の待ち時間を隠蔽するように構成することができる。コマンドＦＩＦＯは、ベクトル実行ユニットの停滞を防ぐためにパイプライン型ＦＩＦＯであってもよい。
【００１３】
[012]ある実施の形態では、本発明は、ビデオ処理オペレーションを実行するためのビデオプロセッサとして実施される。ビデオプロセッサは、ビデオプロセッサとホストＣＰＵとの間の通信を実施するホストインターフェイスを備える。ビデオプロセッサは、ビデオプロセッサとフレームバッファメモリとの間の通信を実施するメモリインターフェイスを備える。スカラー実行ユニットが、ホストインターフェイス及びメモリインターフェイスに結合され、且つ、スカラービデオ処理オペレーションを実行するように構成されている。ベクトル実行ユニットが、ホストインターフェイス及びメモリインターフェイスに結合され、且つ、ベクトルビデオ処理オペレーションを実行するように構成されている。ビデオプロセッサは、スタンドアロンのビデオプロセッサ集積回路であってもよく、或いは、ＧＰＵ集積回路に組み込まれたコンポーネントであってもよい。
【００１４】
[013]ある実施の形態では、スカラー実行ユニットは、ビデオプロセッサのコントローラとして機能し、ベクトル実行ユニットのオペレーションを制御する。スカラー実行ユニットは、アプリケーションのフロー制御アルゴリズムを実行するように構成することができ、ベクトル実行ユニットはアプリケーションのピクセル処理オペレーションを実行するように構成することができる。ベクトルインターフェイスユニットが、スカラー実行ユニットをベクトル実行ユニットにインターフェイスするためにビデオプロセッサにそなえられてもよい。ある実施の形態では、スカラー実行ユニット及びベクトル実行ユニットは、非同期に動作するように構成される。スカラー実行ユニットは第１のクロック周波数で実行することができ、ベクトル実行ユニットは異なるクロック周波数で（例えば、より速い、より遅いなど）実行することができる。ベクトル実行ユニットは、スカラー実行ユニットの制御の下で、要求駆動ベースで動作することができる。
【００１５】
[014]ある実施の形態では、本発明は、ビデオ処理オペレーションを実行するためのビデオプロセッサ用の多次元データパス処理システムとして実施される。ビデオプロセッサは、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、を備える。データストアメモリが、ベクトル実行ユニットのデータを格納するために備えられる。データストアメモリは、配列状に構成された対称バンクデータ構造を有する複数のタイルを有する。バンクデータ構造は、各バンクの異なるタイルへのアクセスをサポートするように構成されている。
【００１６】
[015]個々の構成の要件に応じて、各々のバンクデータ構造は、複数のタイル（例えば、４×４、８×８、８×１６、１６×２４など）を備えることができる。ある実施の形態では、バンクは、各バンクの異なるタイルへのアクセスをサポートするように構成されている。これにより、単一のアクセスで、二つの隣接するバンクから１行又は１列のタイルを取り出すことができる。ある実施の形態では、クロスバーが、複数のバンクデータ構造のタイルにアクセスする構成（例えば、行、列、ブロックなど）を選択するために使用される。また、コレクタを、クロスバーによってアクセスされるバンクのタイルを受け取るため、及び１クロックごとにベクトルデータパスの前端にタイルを提供するために備えることができる。
【００１７】
[016]ある実施の形態では、本発明は、ビデオプロセッサのためのストリームベースのメモリアクセスシステムとして実施される。ビデオプロセッサは、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、を備える。フレームバッファメモリが、スカラー実行ユニット及びベクトル実行ユニットのデータを格納するために備えられる。メモリインターフェイスが、スカラー実行ユニットと、ベクトル実行ユニットと、フレームバッファメモリとの間の通信を実施するために備えられる。フレームバッファメモリは、複数のタイルを備える。メモリインターフェイスは、スカラー実行ユニットのタイルの第１の順次アクセスの第１のストリームを実施し、ベクトル実行ユニットのタイルの第２の順次アクセスの第２のストリームを実施する。
【００１８】
[017]ある実施の形態において、第１のストリーム及び第２のストリームは、アクセス待ち時間を元の記憶域（例えば、フレームバッファメモリ、システムメモリなど）から隠蔽するような方法でプリフェッチされた、一連の順次プリフェッチタイルを備える。ある実施の形態では、メモリインターフェイスは、複数の異なる元の記憶域からのストリーム、及び、複数の異なる終端記憶域へのストリームを含む複数の異なるストリームを管理するように構成される。ある実施の形態では、メモリインターフェイスに組み込まれているＤＭＡエンジンを使用して、複数のメモリ読み取り及び複数のメモリ書き込みを実施し、多数のストリームをサポートする。
【００１９】
[018]概して、この書面は、少なくとも以下の四つの方法を開示する。
Ａ）この説明において広範に教示する方法は、ビデオ処理オペレーションを実行するビデオプロセッサにおける多次元データパス処理システムのための方法であり、スカラー実行ユニットを使用することによってスカラービデオ処理オペレーションを実行するステップと、ベクトル実行ユニットを使用することによってベクトルビデオ処理オペレーションを実行するステップと、データストアメモリを使用することによってベクトル実行ユニットのデータを格納するステップとを、含み、データストアメモリは配列状に構成された対称バンクデータ構造を有する複数のタイルを備え、当該バンクデータ構造は各バンクの異なるタイルへのアクセスをサポートするように構成される。さらに、上述のＡの方法では、各々のバンクデータ構造が４×４のパターンに構成された複数のタイルを含む。また、上述のＡの方法では、各々のバンクデータ構造が、８×８、８×１６、又は１６×２４のパターンに構成された複数のタイルを含む。加えて、上述のＡの方法は、バンクデータ構造が、各バンクデータ構造の異なるタイルへのアクセスをサポートするように構成され、少なくとも一つのアクセスが、二つの隣接するバンクデータ構造への当該二つのバンクデータ構造の１行のタイルを含むアクセスである。上述のＡの方法ではまた、タイルが、各バンクデータ構造の異なるタイルへのアクセスをサポートするように構成され、少なくとも一つのアクセスが、二つの隣接するバンクデータ構造への当該二つの隣接するバンクデータ構造の１列のタイルを含むアクセスである。さらに、上述のＡの方法は、複数のバンクデータ構造のタイルにアクセスするための構成を、データストアに結合されたクロスバーを使用することによって、選択するステップを含む。この選択ステップにおいて、クロスバーは、複数のバンクデータ構造のタイルにアクセスして、１クロック毎にベクトルデータパスにデータを供給する。また、クロスバーによってアクセスされる複数のバンクデータ構造のタイルを、コレクタを使用することによって受け取るステップと、タイルをベクトルデータパスの前端に１クロックごとに提供するステップと、を含む。
【００２０】
Ｂ）この説明において広範に教示する方法はまた、ビデオ処理オペレーションを実行するための方法であって、当該方法はコンピュータ可読コードを実行するコンピュータシステムのビデオプロセッサを使用して実施され、また、当該方法は、ビデオプロセッサとホストＣＰＵとの間の通信を、ホストインターフェイスを使用することによって確立するステップと、ビデオプロセッサとフレームバッファメモリとの間の通信を、メモリインターフェイスを使用することによって確立するステップと、スカラービデオ処理オペレーションを、ホストインターフェイス及びメモリインターフェイスに結合されたスカラー実行ユニットを使用することによって実行するステップと、ベクトルビデオ処理オペレーションを、ホストインターフェイス及びメモリインターフェイスに結合されたベクトル実行ユニットを使用することによって実行するステップと、を含む。上述のＢの方法では、更に、スカラー実行ユニットが、ビデオプロセッサのコントローラとして機能し、ベクトル実行ユニットのオペレーションを制御する。上述の方法Ｂはまた、スカラー実行ユニットとベクトル実行ユニットのインターフェイスを取るためにベクトルインターフェイスユニットを備える。上述のＢの方法ではまた、スカラー実行ユニット及びベクトル実行ユニットが、非同期に動作するように構成される。また、スカラー実行ユニットは第１のクロック周波数で実行し、ベクトル実行ユニットは第２のクロック周波数で実行する。上述のＢの方法では、スカラー実行ユニットが、アプリケーションのフロー制御アルゴリズムを実行するように構成され、ベクトル実行ユニットが、アプリケーションのピクセル処理オペレーションを実行するように構成される。さらに、ベクトル実行ユニットは、スカラー実行ユニットの制御のもとで、要求駆動ベースで動作するように構成される。加えて、スカラー実行ユニットは、メモリコマンドＦＩＦＯを使用してベクトル実行ユニットに関数呼び出しを送るように構成され、ベクトル実行ユニットはメモリコマンドＦＩＦＯにアクセスすることによって要求駆動ベースで動作する。また、ビデオプロセッサの非同期動作は、アプリケーションのベクトルサブルーチン又はスカラーサブルーチンの別個の独立した更新をサポートするように構成される。最後に、上述のＢの方法では、スカラー実行ユニットが、ＶＬＩＷ（超長命令語）コードを使用して動作するように構成される。
【００２１】
Ｃ）本明細書に説明する方法はまた、ビデオ処理オペレーションを実行するビデオプロセッサにおけるストリームベースのメモリアクセスのための方法を広範に教示するものであり、当該方法は、スカラービデオ処理オペレーションを、スカラー実行ユニットを使用することによって実行するステップと、ベクトルビデオ処理オペレーションを、ベクトル実行ユニットを使用することによって実行するステップと、スカラー実行ユニット及びベクトル実行ユニットのデータを、フレームバッファメモリを使用することによって格納するステップと、スカラー実行ユニットと、ベクトル実行ユニットと、フレームバッファメモリとの間の通信を、メモリインターフェイスを使用して実施するステップと、を含み、フレームバッファメモリは複数のタイルを備え、メモリインターフェイスは、ベクトル実行ユニット又はスカラー実行ユニットのために、タイルの第１の順次アクセスを含む第１のストリームを実施し、タイルの第２の順次アクセスを含む第２のストリームを実施する。上述のＣの方法はまた、少なくとも一つのプリフェッチされたタイルを含む第１のストリーム及び第２のストリームを有する。上述のＣの方法はさらに、フレームバッファメモリの第１のロケーションから生じる第１のストリームと、フレームバッファメモリの第２のロケーションから生じる第２のストリームとを備える。前述のＣの方法ではまた、メモリインターフェイスが、複数の異なる発生元ロケーションからのストリーム、及び、複数の異なる終端ロケーションへのストリームを含む複数のストリームを管理するように構成される。この点において、少なくとも一つの発生元ロケーション又は少なくとも一つの終端ロケーションは、システムメモリ内にある。上述のＣの方法はまた、複数のメモリ読み取りを実施して第１のストリーム及び第２のストリームをサポートするステップと、メモリインターフェイスに組み込まれたＤＭＡエンジンを使用することによって、複数のメモリ読み取りを実施して第１のストリーム及び第２のストリームをサポートするステップと、を含む。さらに、Ｃの方法では、第１のストリームが、第２のストリームよりも多い待ち時間を受け、当該第１のストリームは、タイルを格納するために第２のストリームよりも多数のバッファを組み込む。Ｃの方法ではまた、メモリインターフェイスが、第１のストリーム又は第２のストリームの調整可能な数のタイルをプリフェッチして、第１のストリーム又は第２のストリームの待ち時間を補償するように構成される。
【００２２】
Ｄ）本明細書に説明する方法はまた、耐待ち時間ビデオ処理オペレーションの方法を広範に含むものであり、当該方法は、ビデオプロセッサとホストＣＰＵとの間の通信を、ホストインターフェイスを使用することによって実施するステップと、スカラービデオ処理オペレーションを、ホストインターフェイスに結合されたスカラー実行ユニットを使用することによって実行するステップと、ベクトルビデオ処理オペレーションを、ホストインターフェイスに結合されたベクトル実行ユニットを使用することによって実行するステップと、ベクトル実行ユニットがメモリコマンドＦＩＦＯにアクセスすることによって要求駆動ベースで動作できるようにするステップと、ビデオプロセッサとフレームバッファメモリとの間の通信を、メモリインターフェイスを使用することによって実施するステップと、複数の異なる記憶域の間のＤＭＡ転送を、メモリインターフェイスに組み込まれ、且つ、データストアメモリ及び命令キャッシュにベクトル実行ユニットのデータと命令をロードするように構成されたＤＭＡエンジンを使用することによって、実施するステップとを含む。上述のＤの方法では更に、ベクトル実行ユニットが、コマンドＦＩＦＯにアクセスして要求駆動ベースで動作することによって、スカラー実行ユニットに対して非同期に動作するように構成される。上述のＤの方法ではまた、要求駆動ベースが、異なる記憶域からベクトル実行ユニットのコマンドＦＩＦＯへのデータ転送の待ち時間を隠蔽するように構成される。さらに、上述のＤの方法では、スカラー実行ユニットが、アルゴリズムのフロー制御処理を実施するように構成され、ベクトル実行ユニットはビデオ処理ワークロードの大部分を実施するように構成される。ここで、スカラー実行ユニットは、ベクトル実行ユニットの作業パラメータを事前に計算して、データ転送待ち時間を隠蔽するように構成される。上述のＤの方法では、ベクトル実行ユニットが、ＤＭＡエンジン経由でのメモリ読み取りをスケジュールし、ベクトルサブルーチンの後続の実行のためのコマンドをプリフェッチするように構成される。ここで、メモリ読み取りは、スカラー実行ユニットによるベクトルサブルーチンの呼び出しに先立ち、ベクトルサブルーチンの実行のためのコマンドをプリフェッチするようにスケジュールされる。
【００２３】
[019]本発明を、添付の図面の図において、限定することなく、例示の目的で説明する。当該図面においては、同様の参照番号によって同様の要素を参照する。
【発明の詳細な説明】
【００２４】
[026]以下、本発明の好適な実施の形態の詳細について言及し、当該実施の形態の例を添付の図面に示す。本発明を好適な実施の形態に関して説明するが、これら実施の形態は本発明をそれらに限定するよう意図したものでないことが理解されよう。一方、本発明は、代替、変更、及び等価物を網羅することが意図されたものであり、これらは、添付の特許請求の範囲によって定義される本発明の精神及び範囲内に含まれる。さらに、本発明の実施の形態の以下の詳細な説明では、本発明を完全な理解のために、多数の具体的な詳細を示す。しかしながら、本発明はそれら具体的な詳細なくしても実施され得ることは、当業者には理解されるであろう。例によっては、本発明の実施の形態の態様を不必要に不明瞭にしないように、既知の方法、手順、コンポーネント、及び回路については、詳細には説明しない。
【００２５】
＜表記及び用語＞
[027]以下の詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに対するオペレーションの手順、ステップ、論理ブロック、処理、及び、その他の記号による表記で、示されている。これらの説明及び表記は、当業者の分野の内容を他の当業者に最も効果的に伝達するために、データ処理分野の当業者によって使用される手段である。手順、コンピュータ実行ステップ、論理ブロック、プロセス等は、本明細書において、また一般的に、所望の結果を導く首尾一貫した一連のステップ又は命令であると考えられる。ステップは、物理量の物理的操作を必要とするものである。通常、必須ではないが、それらの量は、コンピュータシステムにおいて、格納、転送、結合、比較、その他の操作が行われうる電子信号又は磁気信号の形態をとる。主として一般的な用法であるという理由から、それらの信号をビット、値、要素、記号、文字、項、数等として参照することが、時として都合がよいことが判明している。
【００２６】
[028]しかしながら、それら及び類似の用語は全て、適切な物理量に関連付けられるべきものであり、それらの量に適用される便利なラベルに過ぎないことを念頭におく必要がある。特に具体的に別の記述がない限り、以下の説明から明らかなように、本発明全体を通じて、「処理」、「アクセス」、「実行」「格納」、「レンダリング」等のいずれの用語を使用する説明も、コンピュータシステムのレジスタ及びメモリ内の物理（電子）量として表されるデータを、コンピュータシステムメモリ又はレジスタその他のそのような情報記憶、伝送又は表示装置内の物理量として同様に表される他のデータへと操作及び変換する、コンピュータシステム（例えば、図１のコンピュータシステム１００）又は類似の電子計算装置のアクション及びプロセスを指すことを理解されたい。
【００２７】
＜コンピュータシステムプラットフォーム＞
[029]図１は、本発明のある実施の形態に係るコンピュータシステム１００を示している。コンピュータシステム１００は、本発明の実施の形態に係る基本コンピュータシステムのコンポーネントを示しており、特定のハードウェアベース及びソフトウェアベースの機能用に実行プラットフォームを提供するものである。一般に、コンピュータシステム１００は、少なくとも一つのＣＰＵ１０１と、システムメモリ１１５と、少なくとも一つのグラフィックス処理ユニット（ＧＰＵ）１１０と、一つのビデオ処理ユニット（ＶＰＵ）１１１と、を備えている。ＣＰＵ１０１は、ブリッジコンポーネント１０５を介してシステムメモリ１１５に結合することができ、又はＣＰＵ１０１の内部にあるメモリコントローラ（図示せず）を介してシステムメモリ１１５に直接結合することができる。ブリッジコンポーネント１０５（例えば、Ｎｏｒｔｈｂｒｉｄｇｅ）は、種々の入出力装置（例えば、一以上のハードディスクドライブ、イーサネットアダプタ、ＣＤ−ＲＯＭ、ＤＶＤ等）を接続する拡張バスをサポートすることができる。ＧＰＵ１１０及びビデオ処理装置１１１は、ディスプレイ１１２に結合されている。一以上の追加のＧＰＵを、オプションでシステム１００に結合して、その計算能力が更に増強することが可能である。ＧＰＵ１１０及びビデオ処理ユニット１１１は、ブリッジコンポーネント１０５を介してＣＰＵ１０１及びシステムメモリ１１５に結合されている。システム１００は、例えば、専用グラフィックスレンダリングＧＰＵ１１０に結合された強力な汎用ＣＰＵ１０１を有するデスクトップコンピュータシステム又はサーバコンピュータシステムとして実施されてもよい。このような実施の形態においては、周辺バス、専用のグラフィックスメモリ及びシステムメモリ、入出力装置等を追加するコンポーネントが含まれてもよい。同様に、システム１００は、ハンドヘルドデバイス（例えば、携帯電話等）、或いは、例えば、ワシントン州レドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎから提供されているＸｂｏｘ（登録商標）又は日本の東京のＳｏｎｙ  Ｃｏｍｐｕｔｅｒ  Ｅｎｔｅｒｔａｉｎｍｅｎｔ  Ｃｏｒｐｏｒａｔｉｏｎから提供されているＰｌａｙＳｔａｔｉｏｎ３（登録商標）等のセットトップビデオゲームコンソールデバイスとして実施されてもよい。
【００２８】
[030]ＧＰＵ１１０は、別個のコンポーネント、コネクタ（例えば、ＡＧＰスロット、ＰＣＩ−Ｅｘｐｒｅｓｓスロット等）を介してコンピュータシステム１００に結合するよう設計された別個のグラフィックスカード、別個の集積回路ダイ（例えば、マザーボードに直接搭載）、又はコンピュータシステムのチップセットコンポーネントの集積回路ダイに含められた（例えば、ブリッジチップ１０５内に組み込まれる）集積ＧＰＵとして実装され得ることを理解されたい。さらに、ローカルグラフィックスメモリが、ＧＰＵ１１０の高帯域グラフィックスデータストレージ用に含められてもよい。さらに、ＧＰＵ１１０及びビデオ処理装置１１１は、同一の集積回路ダイに統合されてもよく（例えば、コンポーネント１２０として）、或いは、コンピュータシステム１００のマザーボードに接続されるか又は搭載される別個の分離した集積回路コンポーネントであってもよいことを理解されたい。
【本発明の実施の形態】
【００２９】
[031]図２は、本発明のある実施の形態に係るビデオ処理ユニット１１１の内部コンポーネントを示す図である。図２に示すように、ビデオ処理ユニット１１１は、スカラー実行ユニット２０１と、ベクトル実行ユニット２０２と、メモリインターフェイス２０３と、ホストインターフェイス２０４と、を備えている。
【００３０】
[032]図２の実施の形態では、ビデオ処理ユニット（以降、単にビデオプロセッサ）１１１は、ビデオ処理オペレーションを実行する機能コンポーネントを有する。ビデオプロセッサ１１１は、ホストインターフェイス２０４を使用し、ブリッジ１０５を経由するビデオプロセッサ１１１とホストＣＰＵ１０１との間の通信を確立する。ビデオプロセッサ１１１は、メモリインターフェイス２０３を使用し、ビデオプロセッサ１１１とフレームバッファメモリ２０５（例えば、結合されたディスプレイ１１２用（図示せず））との間の通信を確立する。スカラー実行ユニット２０１は、ホストインターフェイス２０４及びメモリインターフェイス２０３に結合されており、スカラービデオ処理オペレーションを実行するように構成されている。ベクトル実行ユニットは、ホストインターフェイス２０４及びメモリインターフェイス２０３に結合されており、ベクトルビデオ処理オペレーションを実行するように構成されている。
【００３１】
[033]図２の実施の形態は、ビデオプロセッサ１１１が、その実行機能を、スカラーオペレーションとベクトルオペレーションに分割する方式を示している。スカラーオペレーションは、スカラー実行ユニット２０１によって実施される。ベクトルオペレーションは、ベクトル実行ユニット２０２によって実施される。
【００３２】
[034]ある実施の形態では、ベクトル実行ユニット２０２は、スカラー実行ユニット２０１のスレーブコプロセッサとして機能するように構成される。そのような実施の形態では、スカラー実行ユニットは、ベクトル実行ユニット２０２のワークロードを、制御ストリームをベクトル実行ユニット２０２に供給し、且つ、ベクトル実行ユニット２０２のデータ入出力を管理することによって、管理する。制御ストリームは通常、関数パラメータ、サブルーチン引数等を含む。通常のビデオ処理アプリケーションでは、アプリケーションの処理アルゴリズムの制御フローはスカラー実行ユニット２０１で実行されるが、実際のピクセル／データ処理オペレーションはベクトル実行ユニット２０２で実施される。
【００３３】
[035]更に図２を参照する。スカラー実行ユニット２０１は、ＲＩＳＣベースの実行技術が組み込まれたＲＩＳＣ型のスカラー実行ユニットとして実施することができる。ベクトル実行ユニット２０２は、例えば、一つ又は複数のＳＩＭＤパイプラインを有するＳＩＭＤマシンとして実施してもよい。二つのＳＩＭＤパイプラインの実施の形態では、例えば、各ＳＩＭＤパイプラインは幅１６ピクセルのデータパス（又はそれ以上）で実施することができ、従って、クロックあたり最大３２ピクセルのデータ出力を生み出す計算能力をベクトル実行ユニット２０２にもたらす。ある実施の形態では、スカラー実行ユニット２０１は、ＶＬＩＷ（超長命令語）ソフトウェアコードを使用して動作し、クロックあたりベースでスカラーオペレーションの並列実行を最適化するように構成されたハードウェアを備える。
【００３４】
[036]図２の実施の形態では、スカラー実行ユニット２０１は、スカラープロセッサ２１０に結合された命令キャッシュ２１１及びデータキャッシュ２１２を備えている。キャッシュ２１１〜２１２は、例えば、フレームバッファ２０５等の外部メモリへのアクセス用のメモリインターフェイス２０３とインターフェイスする。スカラー実行ユニット２０１は更に、ベクトル実行ユニット２０２との通信を確立するためにベクトルインターフェイスユニット２１３を備えている。ある実施の形態では、ベクトルインターフェイスユニット２１３は、スカラー実行ユニット２０１とベクトル実行ユニット２０２との間の非同期通信を可能にするように構成された一以上の同期メールボックス２１４を備えることができる。
【００３５】
[037]図２の実施の形態では、ベクトル実行ユニット２０２は、ベクトル制御ユニット２２０を備えており、当該ベクトル制御ユニット２２０は、ベクトル実行データパスであるベクトルデータパス２２１のオペレーションを制御するように構成されている。ベクトル制御ユニット２２０は、スカラー実行ユニット２０１から命令及びデータを受け取るために、コマンドＦＩＦＯ２２５を備えている。命令キャッシュ２２２は、命令をベクトル制御ユニット２２０に供給するように結合されている。データストアメモリ２２３は、入力データをベクトルデータパス２２１に供給し、結果として生じたデータをベクトルデータパス２２１から受け取るように、結合されている。データストア２２３は、ベクトルデータパス２２１の命令キャッシュ及びデータＲＡＭとして機能する。命令キャッシュ２２２及びデータストア２２３は、フレームバッファ２０５のような外部メモリにアクセスするためのメモリインターフェイス２０３に結合されている。図２の実施の形態はまた、第２のベクトルデータパス２３１及び対応の第２のデータストア２３３（例えば、点線の外枠）も示している。第２のベクトルデータパス２３１及び第２のデータストア２３３は、ベクトル実行ユニット２０２が二つのベクトル実行パイプライン（例えば、二重化ＳＩＭＤパイプライン構成）を有する場合を説明するために示されていることを理解されたい。本発明の実施の形態は、多数のベクトル実行パイプライン（例えば、４、８、１６など）を有するベクトル実行ユニットに適している。
【００３６】
[038]スカラー実行ユニット２０１は、データ及びコマンド入力をベクトル実行ユニット２０２に供給する。ある実施の形態では、スカラー実行ユニット２０１は、関数呼び出しをベクトル実行ユニット２０２に、メモリマップコマンドＦＩＦＯ２２５を使用して送る。ベクトル実行ユニット２０２のコマンドは、このコマンドＦＩＦＯ２２５のキューに入れられる。
【００３７】
[039]コマンドＦＩＦＯ２２５の使用は、スカラー実行ユニット２０１をベクトル実行ユニット２０２から効果的に分離する。スカラー実行ユニット２０１は、その独自の個別のクロックで機能し、ベクトル実行ユニット２０２のクロック周波数とは異なり、且つ、当該ベクトル実行ユニット２０２のクロック周波数とは独立に制御されるその独自の個別のクロック周波数で動作することができる。
【００３８】
[040]コマンドＦＩＦＯ２２５は、ベクトル実行ユニット２０２が要求駆動ユニットとして動作できるようにする。例えば、作業は、スカラー実行ユニット２０１からコマンドＦＩＦＯ２２５に渡され、次いで、分離した非同期方式で処理するためにベクトル実行ユニット２０２によってアクセスされる。したがって、ベクトル実行ユニット２０２は、スカラー実行ユニット２０１による必要に応じて、あるいは要求に応じて、そのワークロードを処理することになる。このような機能によって、ベクトル実行ユニット２０２は、最大性能が要求されない場合に（例えば、一以上の内部クロックを軽減／又は停止することによって）パワーを節約することが可能となる。
【００３９】
[041]スカラー部分（例えば、スカラー実行ユニット２０１による実行用）及びベクトル部分（例えば、ベクトル実行ユニット２０２による実行用）へのビデオ処理機能の分割によって、ビデオプロセッサ１１１用に構築されたビデオ処理プログラムを、別個のスカラーソフトウェアコード及びベクトルソフトウェアコードにコンパイルすることが可能となる。スカラーソフトウェアのコード及びベクトルソフトウェアのコードを、個別にコンパイルして、その後一貫性のあるアプリケーションを形成するようにリンクすることができる。
【００４０】
[042]この分割によって、ベクトルソフトウェアコード関数を個別に書いて、スカラーソフトウェアコード関数と区別することが可能となる。例えば、ベクトル関数を個別に書いて（例えば、異なる時間において、異なるエンジニアのチームによって等）、スカラー関数（例えば、スカラースレッド、プロセス等）によって／と共に使用する一以上のサブルーチン又はライブラリ関数として提供することが可能である。これによって、スカラーソフトウェアコード及び／又はベクトルソフトウェアコードの個別の独立した更新が可能になる。例えば、ベクトルサブルーチンを、スカラーサブルーチンから独立して更新することが可能であり（例えば、以前に配布されたプログラムの更新、配布プログラムの機能を増強するために追加された新しい特徴等の更新を通じて）、又、その逆も可能である。分割は、スカラープロセッサ２１０（例えばキャッシュ２２１〜２１２）及びベクトル制御ユニット２２０とベクトルデータパス２２１（例えばキャッシュ２２２〜２２３）のそれぞれ別個のキャッシュによって容易になる。上述したように、スカラー実行ユニット２０１及びベクトル実行ユニット２０２は、コマンドＦＩＦＯ２２５を介して通信する。
【００４１】
[043]図３は、本発明のある実施の形態に係るビデオプロセッサ１１１の例示的なソフトウェアプログラム３００を示している。図３に示すように、ソフトウェアプログラム３００は、ビデオプロセッサ１１１のプログラミングモデルの特性を表しており、これにより、スカラー制御スレッド３０１は、ベクトルデータスレッド３０２と共にビデオプロセッサ１１１によって実行される。
【００４２】
[044]図３の実施の形態のソフトウェアプログラム３００の例は、ビデオプロセッサ１１１のプログラミングモデルを表しており、これによって、スカラー実行ユニット２０１上のスカラー制御プログラム（例えば、スカラー制御スレッド３０１）は、ベクトル実行ユニット２０２におけるサブルーチン呼び出し（例えば、ベクトルデータスレッド３０２）を実行する。ソフトウェアプログラム３００の例は、コンパイラ又はソフトウェアプログラマがビデオ処理アプリケーションをスカラー部分（例えば、第１のスレッド）とベクトル部分（例えば、第２のスレッド）に分解した場合を示している。
【００４３】
[045]図３に示すように、スカラー実行ユニット２０１上で実行しているスカラー制御スレッド３０１は、事前に作業パラメータを計算して、これらパラメータを、処理作業の大部分を行うベクトル実行ユニット２０２に供給する。上述したように、二つのスレッド３０１及び３０２のソフトウェアコードは、個別に書いてコンパイルすることができる。
【００４４】
[046]スカラースレッドは、以下のことを担っている。
１．ホストユニット２０４とのインターフェイスを取り、クラスインターフェイスを実施する
２．ベクトル実行ユニット２０２の初期化、セットアップ、及び構成
３．以下のことを各反復が行なうよう、ループ内の作業単位、チャンク、又は作業セットにおけるアルゴリズムの実行
ａ．現在の作業セットのパラメータを計算する
ｂ．ベクトル実行ユニットへの入力データの転送を開始する
ｃ．ベクトル実行ユニットからの出力データの転送を開始する
【００４５】
[047]スカラースレッドの標準的な実行モデルは「応答不要送信（fire-and-forget）」である。応答不要送信との用語は、ビデオベースバンド処理の標準的なモデルの場合に、コマンド及びデータが（例えばコマンドＦＩＦＯ２２５を介して）スカラー実行ユニット２０１からベクトル実行ユニット２０２に送信され、アルゴリズムが完了するまでベクトル実行ユニット２０２から戻りデータがない特性を指す。
【００４６】
[048]図３のプログラム３００の例では、スカラー実行ユニット２０１は、コマンドＦＩＦＯ２２５にスペースがなくなるまで（例えば、！ｅｎｄ＿ｏｆ＿ａｌｇ  ＆  ！ｃｍｄ＿ｆｉｆｏ＿ｆｕｌｌ）、ベクトル実行ユニット２０２に対して作業をスケジューリングし続ける。スカラー実行ユニット２０１によってスケジュールされた作業は、パラメータを計算して、それらパラメータをベクトルサブルーチンに送信し、続いて、作業を実行するためにベクトルサブルーチンを呼び出す。ベクトル実行ユニット２０２によるサブルーチンの実行（例えば、ｖｅｃｔｏｒ＿ｆｕｎｃＢ）は、主に待ち時間を主記憶装置（例えば、システムメモリ１１５）から隠蔽するように、適切な時間で遅延される。したがって、ビデオプロセッサ１１１のアーキテクチャは、命令及びデータトラフィックの両方に対してベクトル実行ユニット２０２側に待ち時間補償機構をもたらす。これらの待ち時間補償機構を、以下により詳細に説明する。
【００４７】
[049]ソフトウェアプログラム３００の例は、二つ以上のベクトル実行パイプラインが存在する（例えば、図２のベクトルデータパス２２１及び第２のベクトルデータパス２３１）場合には、より複雑になることに留意されたい。同様に、ソフトウェアプログラム３００の例は、プログラム３００が二つのベクトル実行パイプラインを有するコンピュータシステム用に作成されているが、尚も単一のベクトル実行パイプラインを有するシステム上で実行する能力を保持している場合には、より複雑になるであろう。
【００４８】
[050]したがって、図２及び図３の説明において上述したように、スカラー実行ユニット２０１はベクトル実行ユニット２０２の計算を開始することを担っている。ある実施の形態では、スカラー実行ユニット２０１からベクトル実行ユニット２０２に渡されるコマンドには、以下の主たるタイプがある。
１．現在の作業セットデータをメモリからベクトル実行ユニット２０２のデータＲＡＭに転送するためにスカラー実行ユニット２０１によって開始される読み取りコマンド（例えば、ｍｅｍＲｄ）
２．スカラー実行ユニット２０１からベクトル実行ユニット２０２へのパラメータの受け渡し
３．実行すべきベクトルサブルーチンのＰＣ（例えば、プログラムカウンタ）の形式の実行コマンド
４．ベクトル計算の結果をメモリにコピーするためにスカラー実行ユニット２０１によって開始される書き込みコマンド（例えば、ｍｅｍＷｒ）
【００４９】
[051]ある実施の形態では、これらのコマンドを受け取ると、ベクトル実行ユニット２０２は、メモリインターフェイス２０３へのｍｅｍＲｄコマンドを即座にスケジュールする（例えば、フレームバッファ２０５から要求されたデータを読み取るなど）。ベクトル実行ユニット２０２はまた、実行コマンドを検査して、実行すべきベクトルサブルーチンをプリフェッチする（キャッシュ２２２に存在しない場合）。
【００５０】
[052]この状況でのベクトル実行ユニット２０２の目的は、ベクトル実行ユニット２０２が現在の実行に従事している間に、次の幾つかの実行の命令及びデータストリームを前もってスケジュールすることである。この事前スケジュール機能は、命令／データをその記憶域から取り出す際に要する待ち時間を効果的に隠蔽する。これらの読み取り要求を前もって行うために、ベクトル実行ユニット２０２、データストア（例えば、データストア２２３）、及び命令キャッシュ（例えば、キャッシュ２２２）は、高速最適化ハードウェアを使用することによって実施される。
【００５１】
[053]上述したように、データストア（例えば、データストア２２３）は、ベクトル実行ユニット２０２の作業ＲＡＭとして機能する。スカラー実行ユニット２０１は、ＦＩＦＯのコレクションであるかの如くデータストアを認識してデータストアと対話する。ＦＩＦＯは、それによってビデオプロセッサ１１１が動作する「ストリーム」を含む。ある実施の形態では、ストリームは一般に、スカラー実行ユニット２０１が（例えば、ベクトル実行ユニット２０２に）転送を開始する入出力ＦＩＦＯである。上述したように、スカラー実行ユニット２０１及びベクトル実行ユニット２０２のオペレーションは分離される。
【００５２】
[054]入出力ストリームが満杯になると、ベクトル制御ユニット２２０内のＤＭＡエンジンは、コマンドＦＩＦＯ２２５の処理を停止する。そのため、まもなくコマンドＦＩＦＯ２２５は満杯になる。スカラー実行ユニット２０１は、コマンドＦＩＦＯ２２５が満杯になった場合、ベクトル実行ユニット２０２への更なる作業の発行を停止する。
【００５３】
[055]ある実施の形態では、ベクトル実行ユニット２０２は、入出力ストリームに加えて中間ストリームを必要とする。したがって、全データストア２２３は、スカラー実行ユニット２０１との対話に関してストリームのコレクションと見なすことができる。
【００５４】
[056]図４は、本発明のある実施の形態によるビデオプロセッサを使用したビデオとのサブピクチャの混合（ブレンディング）の例を示している。図４は、ビデオサーフェス（video  surface）がサブピクチャと混合され、次いでＡＲＧサーフェスに変換される場合の例示的な事例を示している。サーフェスを含むデータは、輝度パラメータ４１２及び色度パラメータ４１３としてフレームバッファメモリ２０５内に存在する。サブピクチャのピクセル要素４１４もまた、図示したように、フレームバッファメモリ２０５内に存在する。ベクトルサブルーチン命令及びパラメータ４１１は、図示したように、メモリ２０５にインスタンス化される。
【００５５】
[057]ある実施の形態では、各ストリームは、「タイル」と呼ばれるデータの作業２ＤチャンクのＦＩＦＯを備える。このような実施の形態では、ベクトル実行ユニット２０２は、各ストリームについて読み取りタイルポインタ及び書き込みタイルポインタを保持する。例えば、入力ストリームの場合、ベクトルサブルーチンが実行されると、ベクトルサブルーチンは、現在の（読み取り）タイルを消費するか、又は読み取ることができる。バックグラウンドでは、データはｍｅｍＲｄコマンドによって現在の（書き込み）タイルに転送される。ベクトル実行ユニットはまた、出力ストリーム用の出力タイルを生成することもできる。次いで、これらのタイルは、実行コマンドに続くｍｅｍＷｒ（）コマンドによってメモリに移動される。これによって、タイルを効果的にプリフェッチして、操作されるよう準備し、効果的に待ち時間を隠蔽する。
【００５６】
[058]図４のサブピクチャ混合の例では、ベクトルデータパス２２１は、ベクトルサブルーチン命令及びパラメータ４１１のインスタンス化されたインスタンスによって構成される（例えば、＆ｖ＿ｓｕｂｐ＿ｂｌｅｎｄ）。このことは、線４２１によって示されている。スカラー実行ユニット２０１は、サーフェスのチャンク（例えば、タイル）を読み取り、それらを（例えば、メモリインターフェイス２０３内の）ＤＭＡエンジン４０１を使用してデータストア２２３にロードする。ロードオペレーションは、線４２２、線４２３、及び線４２４によって示されている。
【００５７】
[059]引き続き図４を参照する。複数の入力サーフェスが存在するので、複数の入力ストリームが保持される必要がある。各ストリームは、対応するＦＩＦＯを有する。各ストリームは、異なる数のタイルを有することができる。図４の例は、サブピクチャサーフェスがシステムメモリ１１５内（例えば、サブピクチャのピクセルエレメント４１４）にあり、したがって追加のバッファリング（例えば、ｎ、ｎ＋１、ｎ＋２、ｎ＋３など）を有するが、ビデオストリーム（例えば、輝度４１２、色度４１３など）はより少ない数のタイルを有することができる場合を示している。使用されるバッファ／ＦＩＦＯの数は、ストリームが受けた待ち時間の程度に従って調整することができる。
【００５８】
[060]上述したように、データストア２２３は、先読みプリフェッチ方法を使用して、待ち時間を隠蔽する。これによって、ストリームは、データが適切なベクトルデータパス実行ハードウェアにプリフェッチされる際に、二つ以上のタイルで当該データをもつことができる（例えば、ＦＩＦＯ  ｎ、ｎ＋１、ｎ＋２等として示されている）。
【００５９】
[061]データストアがロードされると、ＦＩＦＯは、ベクトルデータパスハードウェア２２１によってアクセスされ、ベクトルサブルーチン（例えば、サブルーチン４３０）によって操作される。ベクトルデータパスオペレーションの結果は、出力ストリーム４０３を構成する。この出力ストリームは、ＤＭＡエンジン４０１を介してスカラー実行ユニット２０１によってコピーされ、フレームバッファメモリ２０５（例えば、ＡＲＧＢ＿ＯＵＴ４１５）に戻される。このことは、線４２５によって示されている。
【００６０】
[062]したがって、本発明の実施の形態は、ストリーム処理の重要な特徴を使用するが、それはデータスストレージ及びメモリが複数のメモリタイトルとして抽象化されるということである。したがって、ストリームは、順次アクセスされるタイルのコレクションと見なすことができる。ストリームは、データをプリフェッチするために使用される。このデータは、タイルの形式をとる。タイルは、データの元となる特定のメモリソースから（例えば、システムメモリ、フレームバッファメモリ等）、待ち時間を隠蔽するためにプリフェッチされる。同様に、ストリームは、異なる場所に向けることができる（例えば、ベクトル実行ユニットのキャッシュ、スカラー実行ユニットのキャッシュ、フレームバッファメモリ、システムメモリ等）。ストリームの別の特徴は、一般に先読みプリフェッチモードでタイルにアクセスすることである。上述したように、待ち時間が大きくなれば、それに応じてプリフェッチはより深くなり、ストリームあたりで使用されるバッファリングはより多くなる（例えば、図４に示すように）。
【００６１】
[063]図５は、本発明のある実施の形態に係るベクトル実行ユニットの内部コンポーネントを示す図である。図５は、ベクトル実行ユニット２０２の種々の機能ユニット及びレジスタ／ＳＲＡＭリソースの構成を、プログラミングの観点から示している。
【００６２】
[064]図５の実施の形態では、ベクトル実行ユニット２０２は、ビデオベースバンド処理の性能及び種々のコーデック（圧縮−復元アルゴリズム）の実行用に最適化されたＶＬＩＷデジタル信号プロセッサを備えている。したがって、ベクトル実行ユニット２０２は、ビデオ処理／コーデック実行の効率を高めることに向けられた多数の特性を有する。
【００６３】
[065]図５の実施の形態では、上記特性は以下のものを含む。
１．複数のベクトル実行パイプラインの組み込み用のオプションを提供することによる拡張性能
２．パイプ毎の二つのデータアドレス発生器（ＤＡＧ）の割り当て
３．メモリ／レジスタのオペランド
４．２Ｄ（ｘ、ｙ）ポインタ／反復子（iterator）
５．深いパイプライン（例えば、１１〜１２）ステージ
６．スカラー（整数）／分岐ユニット
７．可変命令幅（Ｌｏｎｇ／Ｓｈｏｒｔ命令）
８．オペランド抽出のためのデータアライナ
９．標準的なオペランド及び結果の２Ｄデータパス（４×４）形状
１０.リモートプロシージャ呼び出しを実行する、スカラー実行ユニットに対するスレーブのベクトル実行ユニット
【００６４】
[066]一般に、プログラマの観点からは、ベクトル実行ユニット２０２は、二つのＤＡＧ５０３を備えるＳＩＭＤデータパスとして見られる。命令は、ＶＬＩＷの方式で発行され（例えば、命令はベクトルデータパス５０４及びアドレス発生器５０３に対して同時に発行され）、命令デコーダ５０１によってデコードされ適切な実行ユニットにディスパッチされる。命令は、可変長であり、最も一般に使用される命令が短形式でエンコードされている。完全な命令セットは、ＶＬＩＷタイプの命令として、長形式で使用可能である。
【００６５】
[067]凡例（legend）５０２は、三つのこのようなＶＬＩＷ命令を有する三つのクロックサイクルを示している。凡例５１０によれば、ＶＬＩＷ命令５０２の最上部は、二つのアドレス命令（例えば、二つのＤＳＧ５０３用）及びベクトルデータパス５０４用の一つの命令を備える。中間部のＶＬＩＷ命令は、一つの整数命令（例えば、整数ユニット５０５用）、一つのアドレス命令、及び一つのベクトル命令を備える。最下部のＶＬＩＷ命令は、一つの分岐命令（例えば、分岐ユニット５０６用）、一つのアドレス命令、及び一つのベクトル命令を備える。
【００６６】
[068]ベクトル実行ユニットは、単一のデータパイプ又は複数のデータパイプを有するように構成することができる。各データパイプは、ローカルＲＡＭ（例えば、データストア５１１）、クロスバー５１６、二つのＤＡＧ５０３、及びＳＩＭＤ実行ユニット（例えば、ベクトルデータパス５０４）から成る。図５は、説明の目的で基本構成を示しており、ここでは、一つのデータパイプのみがインスタンス化される。二つのデータパイプがインスタンス化される場合、それらは独立したスレッドとして、又は共同のスレッドとして実行することができる。
【００６７】
[069]六つの異なるポート（例えば、四つの読み取り及び二つの書き込み）を、アドレスレジスタファイルユニット５１５を介してアクセスすることができる。これらのレジスタは、スカラー実行ユニットから、若しくは、整数ユニット５０５又はアドレスユニット５０３の結果からパラメータを受け取る。ＤＡＧ５０３はまた、コレクションコントローラとして機能し、レジスタの配置を管理してデータストア５１１の内容をアドレス指定する（例えば、ＲＡ０、ＲＡ１、ＲＡ２、ＲＡ３、ＷＡ０、及びＷＡ１）。クロスバー５１６は、ベクトルデータパス５０４に任意の順序／組み合わせで出力データポートＲ０、Ｒ１、Ｒ２、Ｒ３を割り当てて所定の命令を実施するように結合されている。ベクトルデータパス５０４の出力は、図示したように、データストア５１１にフィードバックすることができる（例えば、Ｗ０）。定数ＲＡＭ５１７は、頻繁に使用されるオペランドを整数ユニット５０５からベクトルデータパス５０４、及びデータストア５１１に供給するために使用される。
【００６８】
[070]図６は、本発明のある実施の形態に係り、メモリ６００の複数のバンク６０１〜６０４、及び対称配列のタイル６１０を有するデータストアのレイアウトを示す図である。図６に示すように、説明の目的で、データストア６１０の一部だけが示されている。データストア６１０は論理的に、タイルの配列（又は複数の配列）を備えている。各タイルは、４×４形状のサブタイルの配列である。物理的には、メモリ６００によって示されるように、データストア６１０は、メモリの「Ｎ」個の物理バンク（例えば、バンク６０１〜６０４）の配列に格納される。
【００６９】
[071]さらに、データストア６１０は、ストリーム内の論理タイルを視覚的に示している。図６の実施の形態において、このタイルは、高さ１６バイト、幅１６バイトである。このタイルは、サブタイルの配列である（この例では４×４）。各サブタイルは、物理バンクに格納される。これは図６において、８バンクの物理メモリがある場合（例えば、バンク０〜７）、各４×４サブタイル内の番号によって示される。バンク内のサブタイルの編成は、２×２構成のサブタイトル内に共通のバンクが存在しないようになっている。これによって、バンクの衝突が発生することなく、不整列アクセス（例えば、ｘ及びｙ方向に）が可能になる。
【００７０】
[072]バンク６０１〜６０４は、各バンクの異なるタイルへのアクセスをサポートするように構成されている。例えば、ある事例では、クロスバー５１６は、バンク６０１から２×４のタイルのセットにアクセスすることができる（例えば、バンク６０１の最初の２行）。別の事例では、クロスバー５１６は、二つの隣接するバンクから１×８のタイルのセットにアクセスすることができる。同様に、別の事例では、クロスバー５１６は、二つの隣接するバンクから８×１のタイルのセットにアクセスすることができる。何れの場合にも、ＤＡＧ／コレクタ５０３は、バンクがクロスバー５１６によってアクセスされるとタイルを受け取り、それらタイルを１クロック毎にベクトルデータパス５０４の前端部に供給することができる。
【００７１】
[073]このように、本発明の実施の形態は、高性能なビデオ処理機能をサポートし、しかも集積回路シリコンダイ領域、トランジスタ数、メモリ速度要件などを効率的に利用する新しいビデオプロセッサアーキテクチャを提供する。本発明の実施の形態は、高い計算密度を保持し、複数のビデオストリームを処理するために容易に拡張することができる。本発明の実施の形態は、例えば、ＭＰＥＧ-２/ＷＭＶ９/Ｈ．２６４エンコードアシスト（例えば、インループデコーダ）、ＭＰＥＧ-２/ＷＭＶ９/Ｈ．２６４デコード（例えば、ポストエントロピーデコーディング）、及びインループ／アウトオブループデブロッキングフィルタなど、多数の高性能なビデオ処理オペレーションを提供することができる。
【００７２】
[074]本発明の実施の形態によって提供される更なるビデオ処理オペレーションには、例えば、高性能動き適応型順次走査変換、エンコード用入力ノイズフィルタリング、多相スケーリング／リサンプリング、及びサブピクチャ合成等がある。本発明のビデオプロセッサアーキテクチャはまた、例えば、色空間補正、色空間調整、鮮明化やヒストグラム調整のようなピクセルポイントオペレーション、及び種々のビデオサーフェスフォーマット変換といった、特定のビデオプロセッサ増幅器（ｐｒｏｃａｍｐ）アプリケーションにも使用することができる。
【００７３】
[075]広く、且つ、非限定的に、本書面は、以下の事項を開示している。即ち、ビデオ処理オペレーションを実行する耐待ち時間システムを説明している。システムは、ビデオプロセッサとホストＣＰＵ間の通信を実施するホストインターフェイスと、ホストインターフェイスに結合され、且つ、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ホストインターフェイスに結合され、且つ、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、を備える。コマンドＦＩＦＯが、ベクトル実行ユニットがメモリコマンドＦＩＦＯにアクセスすることによって要求駆動ベースで動作できるようにするために備えられている。メモリインターフェイスが、ビデオプロセッサとフレームバッファメモリ間の通信を実施するために備えられている。ＤＭＡエンジンが、複数の異なる記憶域の間のＤＭＡ転送を実施し、コマンドＦＩＦＯにベクトル実行ユニットのデータと命令をロードするために、メモリインターフェイスに組み込まれる。また、ビデオ処理オペレーションを実行するビデオプロセッサを説明している。ビデオプロセッサは、ビデオプロセッサとホストＣＰＵとの間の通信を実施するホストインターフェイスを備える。メモリインターフェイスが、ビデオプロセッサとフレームバッファメモリ間の通信を実施するために備えられている。スカラー実行ユニットが、ホストインターフェイス及びメモリインターフェイスに結合され、スカラービデオ処理オペレーションを実行するように構成されている。ベクトル実行ユニットが、ホストインターフェイス及びメモリインターフェイスに結合され、ベクトルビデオ処理オペレーションを実行するように構成されている。また、ビデオ処理オペレーションを実行するビデオプロセッサ用の多次元データパス処理システムを説明している。ビデオプロセッサは、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、を備える。データストアメモリが、ベクトル実行ユニットのデータを格納するために備えられている。データストアメモリは、配列状に構成された対称バンクデータ構造を有する複数のタイルを備える。バンクデータ構造は、各バンクの異なるタイルへのアクセスをサポートするように構成されている。また、ビデオオペレーションを実行するビデオプロセッサ用のストリームベースのメモリアクセスシステムを説明している。ビデオプロセッサは、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、を備える。フレームバッファメモリが、スカラー実行ユニット及びベクトル実行ユニットのデータを格納するために備えられている。メモリインターフェイスが、スカラー実行ユニットと、ベクトル実行ユニットと、フレームバッファメモリとの間の通信を確立するために備えられている。フレームバッファメモリは、複数のタイルを備える。メモリインターフェイスは、タイルの第１の順次アクセスを実施し、ベクトル実行ユニット又���スカラー実行ユニットのタイルの第２の順次アクセスを含む第２のストリームを実施する。
【００７４】
[076]本発明の具体的な実施の形態についての上述の説明は、例示と説明の目的で提示したものである。これらは、包括的であること、又は本発明を開示した厳密な形態に限定することを意図しておらず、上記の教示の下に多くの変更及び変形が可能である。本実施の形態は、本発明の原理及びその実践的な用途を最良に説明し、それによって当業者が本発明及び種々の実施の形態を、考えられる特定の使用に適するように様々変更を加えて最良に使用できるようにするために、選択して、説明したものである。本発明の範囲は本明細書に添付の特許請求の範囲及びそれらの均等物によって定義されることが意図される。
【００７５】
１  概要
ＶＰ２は、スカラー制御プロセッサに結合されたＶＬＩＷ  ＳＩＭＤビデオＤＳＰである。その主な焦点は、ビデオコーデック及びビデオベースバンド処理である。
１．１  ＶＰ２．０の核心
・効率：ＶＰ２．０は、ｐｅｒｆ／ｍｍ２及びｐｅｒｆ／ｍＷに関して、ビデオアプリケーション用途向けの計算効率の高いマシンとなる
・プログラム能力：ＶＰ２．０は、プログラミング能力が高く、容易にコンパイル可能であり、プログラムマシンに更に安全なものとなる
・拡張性：ＶＰ２．０の設計／アーキテクチャは、複数のアプリケーション分野の性能要件に適合するように拡張可能であるべきである
１．２  設計目標
・計算密度
ＶＰ１．０に大きく優るｐｅｒｆ／ｍｍ２の利点を提供
Ｈ．２６４のような新たなアプリケーション分野の効率的な実現
・ＳＷ開発者の負担を軽減するＨＷの耐待ち時間性
メモリアクセス及び計算を再順序付けすることによりデータフェッチ待ち時間を隠蔽
命令ストリームの自動プリフェッチ
・データパス待ち時間を隠蔽
中間結果の選択的転送
ストリーミング計算モデル
・拡張性：
アーキテクチャ的にＶＰ２ベクトルユニットはそのデータパスを２倍に拡張及び１／２倍に縮小可能
周波数の改善は選択的再パイプライン処理によって達成可能
１．３  アプリケーションターゲット
ＶＰ２．０の設計及び命令セットは、以下のアプリケーションを極めて効率的に行うように最適化される。
・ｍｐｅｇ２/ｗｍｖ９/Ｈ．２６４エンコードアシスト（インループデコーダ）
・ｍｐｅｇ２/ｗｍｖ９/Ｈ．２６４デコード（ポストエントロピーデコーディング）
・インループ／アウトオブループのデブロッキングフィルタ
・高性能動き適応順次走査変換
・エンコード用入力ノイズフィルタリング
・多相スケーリング／リサンプリング
・サブピクチャ合成
・ｐｒｏｃａｍｐ、色空間変換、色空間調整、鮮明化やヒストグラム調整等といったクセルポイントオペレーション
・様々なビデオサーフェスフォーマット変換サポート
アーキテクチャ的にＶＰ２．０は以下の領域において効率的となり得る。
・２Ｄのプリミティブ、ブリッツ、回転など
・微調整ベースのソフトウェア動き推定アルゴリズム
・１６／３２ビットのＭＡＣアプリケーション
【００７６】
２  トップレベルのアーキテクチャ
ＶＰ２．０マシンはスカラープロセッサ及びベクトルプロセッサに分割されている。ベクトルプロセッサは、スカラープロセッサに対するスレーブコプロセッサとして動作する。スカラープロセッサは、制御ストリーム（パラメータ、サブルーチン引数）をベクトルプロセッサに供給し、またベクトルプロセッサへのデータ入出力を管理することを担う。アルゴリズムの全ての制御フローはスカラーマシンで実行されるが、実際のピクセル／データ処理オペレーションはベクトルプロセッサで行われる。
スカラープロセッサは標準的なＲＩＳＣスタイルのスカラーであり、ベクトルコプロセッサは一つ又は二つのＳＩＭＤパイプ（各ＳＩＭＤパイプは１６ピクセルデータパスを有する）を備えるＳＩＭＤマシンである。したがって、ベクトルコプロセッサは、生の計算能力として最大３２ピクセルの処理結果を作成することができる。
スカラープロセッサは、メモリマップドコマンドＦＩＦＯを使用して、ベクトルコプロセッサに関数呼び出しを送る。コプロセッサコマンドは、このＦＩＦＯのキューに入れられる。スカラープロセッサは、このＦＩＦＯを使用してベクトルプロセッサから完全に分離される。スカラープロセッサは、独自のクロックで動作することができる。ベクトルプロセッサは、要求駆動ユニットとして動作する。
ＶＰ２．０のトップレベルの図を以下に示す。
【表１】
2008521097.tif 000003
ＶＰ２．０プログラムは、別個のスカラーコード及びベクトルコードにコンパイルされ、後に結合することができる。別々に、ベクトル関数は、個々に書き込まれ、サブルーチン又はライブラリ関数としてスカラースレッドに供給することができる。スカラープロセッサは、独自の命令及びデータキャッシュを有する。ベクトルユニットもまた、命令キャッシュ及びデータＲＡＭ（データストアと呼ばれる）を有する。これらの二つのエンジンは分離され、ＦＩＦＯを通じて通信する。
【００７７】
３  単純プログラミングモデル
ＶＰ２．０の最も単純なプログラミングモデルは、ベクトルスレーブコプロセッサでサブルーチン呼び出しを実行するスカラー制御プログラムである。ここにはプログラマが問題をこれらの二つのスレッドに分解している本質的な仮定がある。スカラープロセッサで実行しているスレッドは、事前に作業パラメータを計算して、それらを主力となるベクトルプロセッサに供給している。これらの二つのスレッドのプログラムは、個別に書き込まれてコンパイルされることが期待される。
スカラースレッドは、以下の事項を担う。
１．ホストユニットとインターフェイスを取り、クラスインターフェイスを実装する
２．ベクトルユニットの初期化、セットアップ、及び設定
３．以下のことを各反復が行なうよう、ループ内の作業単位、チャンク、又は作業セットにおけるアルゴリズムの実行
ａ．現在の作業セットのパラメータを計算
ｂ．ベクトルプロセッサへの入力データの転送を開始
ｃ．ベクトルプロセッサからの出力データの転送を開始
スカラースレッドの標準的な実行モデルは応答不要送信である。これは、ベクトルコプロセッサからの戻りデータがない場合のビデオベースバンド処理用の標準的なモデルであると期待される。スカラープロセッサは、コマンドＦＩＦＯにスペースがある限り、ベクトルプロセッサ用の作業をスケジュールし続ける。ベクトルプロセッサによるサブルーチンの実行は、主に主記憶装置からの待ち時間による時間で遅延される。したがって、ベクトル側に待ち時間補償機構を提供することが重要である。ＶＰ２．０では、ベクトルプロセッサは、命令及びデータトラフィックの両方に待ち時間補償を提供する。その機構について、セクションにおいて概略を示す。
標準的なＶＰプログラムは、以下のようなものである。
【表２】
2008521097.tif 000004
より複雑なプログラミングモデルは、二つのデータパイプを有する場合である。或いは、二つのデータパイプのコードを書いて、そのコードを一つのデータパイプマシン上で実行する場合である。そのプログラミングモデルを、第６節において考察する。
【００７８】
４  ストリーミングモデル
上に概説したように、スカラーエンジンは、ベクトルプロセッサでの計算の開始を担っている。スカラーエンジンからベクトルエンジンに渡されるコマンドには、以下の主なタイプがある。
１．現在の作業セットデータをメモリからベクトルエンジンのデータＲＡＭに転送するためにスカラーによって開始される読み取りコマンド（ｍｅｍＲｄ）
２．スカラーからベクトルに渡すパラメータ
３．実行すべきベクトルサブルーチンのＰＣの形式での実行コマンド
４．ベクトル計算の結果をメモリにコピーするためにスカラーによって開始される書き込みコマンド（たとえば、ｍｅｍＷｒ）
これらのコマンドを受け取ると、ベクトルプロセッサは即座に、フレームバッファ（ＦＢ）インターフェイスへのｍｅｍＲｄコマンドをスケジュールする。ベクトルプロセッサはまた、実行コマンドを検査して、実行すべきベクトルサブルーチンをプリフェッチする（キャッシュに存在しない場合）。一つの目的は、ベクトルエンジンが現在の実行に従事している間に、次の幾つかの実行の命令とデータスチームを前もってスケジュールすることである。これらの読み取り要求を事前に行うために、ベクトルエンジンは、ハードウェア内のデータストア及び命令キャッシュを管理する。
データストアは、ベクトルプロセッサの作業ＲＡＭである。スカラープロセッサは、このデータストアを、ＦＩＦＯ又はストリームのコレクションと見なす。ストリームは本質的には、スカラーが転送を開始する入出力ＦＩＦＯである。入出力ストリームが満杯になると、ベクトルのＤＭＡエンジンは、スカラーからのコマンドＦＩＦＯの処理を停止して、まもなくそれが満杯になる。したがって、スカラーは、ベクトルエンジンにそれ以上作業を発行することを停止する。入出力ストリームに加えて、ベクトルは中間ストリームを必要としてもよい。したがって、データストア全体は、スカラー側からはストリームのコレクションと見なすことができる。各ストリームは、タイルと呼ばれる作業２ＤチャンクのＦＩＦＯである。ベクトルプロセッサは、各ストリーム用の読み取りタイルポインタ及び書き込みタイルポインタを保持する。入力ストリームの場合、ベクトルサブルーチンが実行されると、ベクトルサブルーチンは現在の（読み取り）タイルを消費するか、又は読み取ることができる。バックグラウンドでは、データはｍｅｍＲｄコマンドによって現在の（書き込み）タイルに転送される。ベクトルプロセッサはまた、出力ストリーム用の出力タイルを生成することもできる。次いで、これらのタイルは、実行コマンドに続くｍｅｍＷｒ（）コマンドによってメモリに移動される。
このモデルを、ビデオとのサブピクチャの混合の例によって説明する。例えば、ビデオサーフェス（例えば、ＮＶ１２形式）がサブピクチャと混合され、次いで、ＡＲＧＢサーフェスに変換される場合の単純化した例を考察する。これらのサーフェスは、メモリに存在する。スカラープロセッサは、これらサーフェスのチャンク（タイル）を読み取り、それらをデータストアにロードする。複数の入力サーフェスが存在するので、複数の入力ストリームを保持する必要がある。各ストリームは様々な数のタイルを有することができるが（例えば、この例では、サブピクチャサーフェスがシステムメモリ内にあり、したがって、それを更にバッファすべきであると仮定する）、ビデオストリームはより少ない数のタイルを有することがある。
【表３】
2008521097.tif 000005
【００７９】
５  ベクトルコプロセッサ
ＶＰ２のベクトルコプロセッサは、ビデオベースバンド処理及びコーデック向けに設計されたＶＬＩＷ  ＤＳＰである。本プロセッサの一部の重要な設計特性は、以下のものを含む。
１．拡張性の高い性能、一つ又は二つのデータパイプ
２．各パイプが二つのデータアドレス発生器（ＤＡＧ）を有する
３．メモリ／レジスタのオペランド
４．２Ｄ（ｘ、ｙ）ポインタ／反復子
５．深いパイプライン（１１〜１２）ステージ
６．スカラー（整数）／分岐ユニット
７．可変命令幅（Ｌｏｎｇ／Ｓｈｏｒｔ命令）
８．オペランド抽出のためのデータアライナ
９．標準的なオペランド及び結果の２Ｄデータパス（４×４）形状
１０．リモートプロシージャ呼び出しを実行する、スカラープロセッサに対するスレーブプロセッサ
プログラマの観点からのベクトルコプロセッサは、簡単に言えば、二つのＤＡＧを備えるＳＩＭＤデータパスである。命令は、ＶＬＩＷの方式で発行される（即ち、命令はベクトルデータパス及びアドレス発生器に対して同時に発行される）。命令は、可変長であり、最も一般に使用される命令は短形式でエンコードされる。完全な命令セットは、長形式で使用可能である。例えば、プログラマの観点からは、種々の機能ユニット及びレジスタ／ＳＲＡＭリソースの構成は、以下に示す通りである。
【表４】
2008521097.tif 000006
ベクトルユニットは、単一のデータパイプ又は二重のデータパイプをインスタンス化する。各データパイプは、ローカルＲＡＭ（データストア）、二つのＤＡＧ、及びＳＩＭＤ実行ユニットから成る。基本構成では、一つのデータパイプのみが存在する。二つのデータパイプが存在する場合、それらは独立したスレッドとして、又は共同のスレッドとして実行することができる。ベクトルプロセッサの完全なパイプラインの図を以下に示す。これは、二つのデータパイプを備える完全構成である。
【表５】
2008521097.tif 000007
【００８０】
６  高度なプログラミングモデル
第３節では、基本アーキテクチャを説明するためにＲＰＣモデルを示した。この節では、更に高度な概念を示す。
６．１  二重データパイプ構成
二重パイプ構成において、プロセッサの以下のリソースが共用される。
・スカラーコントローラ
・ベクトルコプロセッサのベクトル制御ユニット
・命令／データフェッチ用のＤＭＡエンジン
・命令キャッシュ（デュアルポートであってもよい）
以下のリソースは複製される。
・データパイプ（アドレス／分岐／ベクトル実行ユニット）
・データストア
・レジスタファイル
以下の事項に留意されたい。
１．プログラムは、一つのパイプを用いるインスタンスで二つのパイプ用に作成することができる。ベクトル制御ユニットは、同一の物理パイプ上に各パイプの実行をマップする。しかし、両パイプ用のストリームが一つのデータストアだけに存在するので、データストアのサイズを調整する必要がある。簡単な方法は、ストリーム内のタイルのサイズ又はタイルの数を半分に削減することである。これは、設定時にスカラースレッドによって行われる。マクロアーキテクチャステージにおいて解決する必要のあるグローバルレジスタの重複及びストリームマッピングのような問題が存在する。
２．一つのパイプ用に作成されたプログラムは、二つのパイプを備えるインスタンスで実行することができる。しかし、このコードは、一つのパイプでのみで動作し、他方のパイプを使用しない。マシンは、半アイドル状態になる。
３．プログラムは、それぞれ二つの完全に異なるスレッドを実行する二つのパイプ用に作成することができる。これは、マルチスレッドではない単一のスカラーしか備えていないので、好ましくない場合もある。一つのスカラー実行スレッドしかサポートしないので、これは好ましくないことがあるが、このモデルをサポートすることができる。
４．プログラムは、それぞれ同一のスレッドを実行する二つのパイプ用に作成することができる。これは、多くのビデオベースバンド処理などの、並列化可能アルゴリズムに期待される標準的なモデルである。これにより、同じ命令ストリームを使用して、ビデオの二つのストリップ又は二等分などを操作することができる。各データパイプは、独自の実行ユニット及びデータストアを有する。スカラーコントローラは、二つのデータパイプを供給する必要がある。しかしながら、そのパラメータ、読み取り及び書き込みコマンドは、相互に関連（オフセット）しているので、スカラー性能要件は厳密に倍加することはない。このモデルの例を、以下に示す
【表６】
2008521097.tif 000008
５．プログラムは、二つの共同するスレッドを用いて作成することができる。これは、単一のスカラー制御スレッドを有するが、複数の機能ベクトルの機能ブロックが相互に接続される必要である場合のコーデックに期待されるモデルである。これは、機能ブロックのＤｉｒｅｃｔＳｈｏｗのｐｉｎモデルと類似している。そのようなアプリケーションの例を、以下に示す。このモデルは、二つのデータパイプしか備えていないので、二つの共同のスレッドのみに制限される。更に注意することは、スレッドが二つのスレッド間でバランスを取る必要があることである。そのようにしないと、性能が損なわれる。これらの制約の範囲内で、このモデルは二つのデータパイプで機能し、さらに単一パイプに縮小することができる。
【表７】
2008521097.tif 000009
６．二つのデータパイプは、相互に同期することができる。同期化の基本的な手法は、データ駆動である。ベクトル関数は、データが処理に使用可能である場合に実行される。ストリームは、メモリからの読み取り、又は他のデータパイプからの書き込みによって満たされる。データが使用可能となると、ベクトル制御ユニットは実行をアクティブ化してそれを動作させる。ストリームはまた、計数セマフォーとして使用することもできる。スカラーコントローラ及びベクトルデータパイプは何れも、タイルポインタを増分及び減分して、データ転送が行われない場合にも計数セマフォーとしてストリーム記述子を使用することができる。
【００８１】
補足的な概要：
一般に、本発明の実施の形態は以下のことを実行する。
１．メディアアルゴリズムをスカラー及びベクトル部分に分解する。
既製のスカラー設計であり、これはまた、パワーと性能要件に基づいて異なるクロック速度でスカラー及びベクトル部分を実行できる能力ももたらす。
２．ストリーム処理
３．２Ｄデータパス処理
４．待ち時間隠蔽（データ及びコマンドの両フェッチに対する）
【００８２】
応用分野 
暗号：
命令コードの隠蔽
暗号化プログラムは、単にチップ上に乗せることができる。スカラー／コントローラブロックは単に、特定のオペレーションが実行されるよう要求し、暗号化エンジンは命令等をフェッチする。スカラーは、どのアルゴリズムが実行中であるかを確認することさえもできないので、非常に安全である。これは、ユーザーから暗号化アルゴリズムを隠蔽する機構をもたらす。
２Ｄ
ＶＰ２命令セットアーキテクチャは、２Ｄ処理の命令をサポートする。これらは、多くのＧＵＩ／ｗｉｎｄｏｗシステムで使用されるＲＯＰ３及びＲＯＰ４のサポートを含む。これにより、メディアプロセッサは、メディアプロセッサ上で２Ｄオペレーションを実行することができる。ここで特有の利点は、省力化である。
【００８３】
ＩＳＡ
命令スロットとしての条件コード：
条件コードオペレーションに対して、（多重発行命令バンドルに）別個の発行スロットを備える。従来技術では、条件コード／述語レジスタにも影響を与えうるＳＩＭＤ命令が使用される。しかし、ＶＰ２データ処理及び述語レジスタで行われる手法によれば、処理は独立してスケジュールされ、その結果、より高い性能をもたらすことができる。
【００８４】
メモリＩ／Ｏ
マイクロコーディングされたＤＭＡエンジン：
ＤＭＡエンジンは、ストリームのデータのプリフェッチ、データ形式のフォーマッティング、エッジのパディングなど、様々なオペレーションを実行するようにプログラムすることができる（又は独自の小さなマイクロコードを有することができる）。一般に、プログラム可能ＤＭＡエンジンであって、ハードワイヤードの機能ではない。したがって、メモリ入出力プロセッサとメディア処理コアとの組み合わせは、全般的なシステムレベルの性能を増強する。メディアプロセッサコアは、データ入出力処理を行う必要から負荷を軽減される。
記憶装置階層アーキテクチャ：
ＶＰ２アーキテクチャでは、記憶装置の階層は、メモリＢＷを最小化して、待ち時間補償を行うように最適化される。以下のような多種多様な方式が提供される。
−  スクラッチｒａｍとしてベクトルコアに可視であるストリーミングデータストアの第１レベル。スカラープロセッサによって生成された要求ストリームを前もって調べるためにＨＷによって管理される。このデータストアは、オプションで、データ再使用のためにＬ２キャッシュによって支援される。Ｌ２キャッシュは、ストリームベースで個々のセクタに分割することができる。
−  ストリーミングデータストアによって支援されるＬ１キャッシュ。データストアは、次の関連データセットをプリフェッチしている。
−  データタグとしてＳｔｒｅａｍポインタを使用するキャッシュ。
−  Ｌ１データストア及びＬ２キャッシュをプリフェッチ／キャッシュするためのスカラー生成ストリームアドレスの使用。
【００８５】
ベクトル通信リンクへの最適化スカラー：
ＭｅｍＲｄ／Ｗｒフォーマット
システムメモリとローカルメモリとの間の読み取り及び書き込みを行うためのスカラーからの短縮コマンド。ＤＭＡエンジンを管理するために必要な制御フロー帯域幅を節約する。同時に、サポートされるトランザクションのタイプを制限しない。
ベクトルＬ２に対するスカラー２ベクトルの推測
通信の帯域幅を削減するためのパラメータ修飾子及び反復子のサポートによるパラメータ圧縮。
パイプラインキャッシュ：
パイプライン命令キャッシュ。以下のような様々な方式がサポートされる。
−  ベクトルとスカラープロセッサとの間の作動時の実行を追跡することにより各キャッシュラインのライフサイクルを管理。これにより、ベクトルプロセッサが実行を開始する前に命令を作動可能状態にすることができる。命令がまだキャッシュ内にない場合は、プリフェッチされる。
−  小規模な待ち時間構成の場合、小型のＦＩＦＯに変えることにより命令キャッシュが最小化される。既にＦＩＦＯ内にある実行は再使用することができるが、それ以外の場合は再度フェッチされる。
全般的アーキテクチャ
データストアは、さまざまな処理要素の間で共用することができる。これらは、ストリームを通じて通信し、相互に供給することができる。アーキテクチャは、ＳＩＭＤベクトルコア、ＤＭＡエンジン、ストリームを通じて接続された固定機能ユニットのような、異種の機能ユニットのセットを想定する。
【００８６】
計算／ＤＰ
任意／柔軟な形式／ハーフパイプ
データパスは、様々な形式で動作する。データパスの形式は、問題セットと適合するように構成することができる。通常、１Ｄデータパスが行われる。ＶＰ２は、アルゴリズムに適合するように、４×４、８×４、又は１６×１などの可変サイズとなりうる形式を処理する。
拡張性
ＶＰ２データパスアーキテクチャは、命令搬送技法を使用して（注：１６ウェイのＳＩＭＤパイプを備え、各オペランドは１バイト幅である。８ウェイのＳＩＭＤパイプを備え（二つのパイプをまとめる）、各オペランドが２バイトのより広いＳＩＭＤデータパスを備えることができ、同様に４ウェイのＳＩＭＤパイプを備え（四つのパイプをまとめる）、各オペランドが４バイトのより広いＳＩＭＤデータパスを備えることができる）、領域を節約するために複数サイクルにわたってより狭いデータパスでより広いＳＩＭＤ命令を実行することができる。
例えば、ＶＰ２は、１６ウェイのＳＩＭＤから８ウェイのＳＩＭＤまでデータパスを拡大縮小することができる。
バイトレーンの結合
オペランド幅を増大するためにＳＩＭＤのウェイを結合。例、現在８ビットオペランドの１６ウェイＳＩＭＤ。８ウェイのＳＩＭＤで１６ビットのオペランド、及び４ウェイのＳＩＭＤで３２ビットのオペランドに増大することができる。
ＳＩＭＤアドレス発生器
ＳＩＭＤパイプの各ウェイに対して別個のストリームアドレス発生器。
ＶＰ２は、要求がデータストアへの最小アクセスに合体されるＳＩＭＤアドレス発生器を使用することができる。
クロスバー及びコレクタを使用するデータ展開
クロスバーを使用してさらに多くのデータオペランドを作成する能力。読み取りポートのプレッシャを軽減してパワーを節約。
Ｘ２命令：
全ての命令がデータパス内の全てのＨＷ要素（加算器／乗算器）を使用することができるわけではない。したがって、加算／減算のような単純な命令に対しては、複雑な命令の場合よりも広いデータ形式を処理することができる。そのため、最小共通サイズに性能を限定する代わりに、ＶＰ２では、読み取りポートがオペレーション帯域幅を保持できる限り、より広い形式で動作するよう便宜的に試みる柔軟な命令セットを使用する。
マルチスレッド／マルチコアのメディア処理
ＶＰ２アーキテクチャは、以下のような様々なマルチスレッドのオプションをサポートする。
−  マルチスレッドスカラープロセッサは、ストリームを通じて接続された複数ベクトルユニットでプロシージャ呼び出しをスケジュールする。
−  命令で／命令により単一ベクトルエンジン上で実行するか又は実行スレッドスイッチングにより実行する複数スレッド。
異なるベクトル／スカラーを使用するパワー管理
分離されたスカラー及びベクトル部分により、これらの二つのブロックを、パワー及び性能の要件に基づいて異なる速度で実行することができる。
【００８７】
コンテキストスイッチ：
このメディアプロセッサは、その少ないレジスタのアーキテクチャにより、非常に高速のコンテキストスイッチをサポートする能力を有する。ＨＷサポートは、スカラー−ベクトルコマンドキューを追跡し、保存し、それを再生してコンテキストスイッチングを達成するために存在する。また、コンテキストスイッチは、ページフォールトで開始されうる。
これにより、メディアプロセッサは、入出力表示処理のようなリアルタイム処理タスクを保持することができ、同時に、２Ｄアクセラレーション又は表示パイプラインを供給するためのジャストインタイムのビデオ拡張のような非リアルタイムのタスクをサポートすることもできる。
このコンテキストスイッチ機能は、その命令セットと共に、ＶＰ２が統合されたピクセル／コーデック処理となるようにすることができる。
【００８８】
データストアの編成：
ＶＰ２は、以下の特性を有するデータストアの編成を使用する。
各方向最大１６ピクセルまでバンク競合を生じることなくアクセスすることができる。これは、ストライド要件を最小に抑えつつ行われる。
データストア編成により、データ形式の効率的な置き換えが可能になる。
２Ｄアドレシングはデータストア内でサポートされ、ビデオなどの多くのメディア処理アプリケーションにおいてリニアアドレスのＳＷ計算を除去する。
【００８９】
【表８】
2008521097.tif 000010
【００９０】
アプリケーション
【００９１】
【表９】
2008521097.tif 000011
【００９２】
【表１０】
2008521097.tif 000012
【００９３】
アーキテクチャ
【００９４】
高計算密度
・ＶＰ１アーキテクチャの２倍のｐｅｒｆ／ｍｍ２
・新しいアプリケーションで効率的（固定機能ＨＷに比べ）
プログラム能力
・「妥当に」コンパイル可能：スカラーについてはＣ、ベクトルについては固有
・ＨＷで管理される待ち時間隠蔽
・ハング及び不正アドレスに対する保護
拡張可能性
・２倍及び＿倍の拡張オプション
・クロック周波数を通じて拡張可能
高精度のオペレーションのサポート
・１０ｂ＋２０ｂ整数データ型
【００９５】
【表１１】
2008521097.tif 000013
【００９６】
ブロック概要
・スカラープロセッサ
・プログラムフロー制御
・タイルラスタライズ及びアドレス計算
・緩く結合されたベクトルユニットを供給
・ベクトルプロセッサ
・３発行ＶＬＩＷ（ｖ＋Ｉ、Ａ、Ｂ）
・４×４  ＳＩＭＤデータパス
・データストアから直接のベクトルオペランド（レジスタファイル転送なし）
・スカラー／ベクトルインターフェイス
・緩く結合されたプロセッサ−スカラーはコマンドＦＩＦＯを供給
・ＨＷによって管理される命令及びデータストリーミング（待ち時間隠蔽）
・命令及びデータが作動状態のときにベクトルコマンド発行
【００９７】
【表１２】
2008521097.tif 000014
【００９８】
ＶＰ１からの継承
・内積指向性のデータパス
・ＶＰ２は２タップから４タップの計算へ
・Ａ／Ｉ／Ｂ／Ｖ命令を備えるＶＬＩＷ（変更された発行規則）
・データパスアーキテクチャ：アキュムレータ、データ転送、ＨＷインターロック
・フリーな置き換え、１６×１６−＞４×４に変更
・専用のアドレスユニット
・複雑な命令セット（ビデオに最適化）
【００９９】
ＶＰ２の特徴１
・分離されたスカラープロセッサ
・Ｃでのコンパイル可能な外部ループコードの最適なターゲット
・命令ストリーミング
・ＨＷ管理の命令プリフェッチ（パイプラインＩ＄を使用）
・アプリケーションは命令キャッシュよりも大きいフットプリントを保有可能
・データプリフェッチ
・データストア内のＨＷ管理のストリーム
・プログラマは外部ループ制御する必要なし
・精度の向上
・１０ｂ単精度
・新たな２０ｂ倍精度
・より優れたＩＳＡ
・より優れたエラー管理
・メモリ保護、命令トラップ
【０１００】
ＶＰ２の特徴２
・４×４のＳＩＭＤデータパス
・ＶＰ１は１６×１のＳＩＭＤマシンであった
・高機能コードに非常に効率的な編成（Ｈ．２６４、ＷＭＶ９）
・２Ｄ処理に必要な帯域幅を軽減
・改善されたデータベース編成
・データパスに適合し、ＶＰ１に比べはるかに安価な転置機能を提供するタイル型４×４構造
・マルチポートＲＡＭをエミュレートするＳＰＡ様のコレクタ構造
・ベクトルパイプはデータストアから直接動作（ベクトルレジスタファイルなし）
・専用のクロスバーステージ
・不整列オペランドを抽出
・わずかな数の読み取りポートから複数のオペランドを作成
・定数ＲＡＭ
・データストア読み取り帯域幅のプレッシャを軽減
・非常に柔軟な条件コード／述語のサポート
【０１０１】
対象アプリケーション
・コーデック
・ｍｐｅｇ２／ｗｍｖ９／Ｈ．２６４エンコードアシスト（インループデコーダ）
・ｍｐｅｇ２／ｗｍｖ９／Ｈ．２６４デコード（ポストＶＬＤデコーディング）
・インループ／アウトオブループのデブロッキングフィルタ
・画像処理／強調
・高性能動き適応順次走査変換
・エンコード用入力ノイズフィルタリング
・多相スケーリング／リサンプリング
・サブピクチャ合成
・ピクセル単位の変換：ｐｒｏｃａｍｐ、色空間補正、ガンマ、ＬＣＤオーバードライブ、ヒストグラム調整など
・ビデオサーフェスフォーマット変換
【０１０２】
潜在的な対象アプリケーション
・２Ｄプリミティブ、ブリッツ、回転など
・微調整ベースのソフトウェアモーション推定アルゴリズム
・１６／３２ビットのＭＡＣアプリケーション（オーディオ？）
【０１０３】
プログラミングモデル
【０１０４】
【表１３】
2008521097.tif 000015
【０１０５】
【表１４】
2008521097.tif 000016
【図面の簡単な説明】
【０１０６】
【図１】本発明のある実施の形態に係るコンピュータシステムの基本コンポーネントを示す概略図である。
【図２】本発明のある実施の形態に係るビデオプロセッサユニットの内部コンポーネントを示す図である。
【図３】本発明のある実施の形態に係るビデオプロセッサの例示的なソフトウェアプログラムを示す図である。
【図４】本発明のある実施の形態に係り、ビデオプロセッサを使用してサブピクチャをビデオと混合させる例を示す図である。
【図５】本発明のある実施の形態に係るベクトル実行の内部コンポーネントを示す図である。
【図６】本発明のある実施の形態に係るタイルの対称配列を有するデータストアメモリのレイアウトを示す図である。
【図１】
2008521097.tif 000017
【図２】
2008521097.tif 000018
【図３】
2008521097.tif 000019
【図４】
2008521097.tif 000020
【図５】
2008521097.tif 000021
【図６】
2008521097.tif 000022
【手続補正書】
【提出日】平成19年7月3日(2007.7.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
前記ベクトル実行ユニットのデータを格納するデータストアメモリと、
を備え、
前記データストアメモリは配列状に構成された対称バンクデータ構造を有する複数のタイルを備え、
前記バンクデータ構造は各バンクの異なるタイルへのアクセスをサポートするように構成されている
システム。
【請求項２】
前記システムが、ビデオ処理オペレーションを実行するための前記ビデオプロセッサ用の多次元データパス処理システムである、請求項１に記載のシステム。
【請求項３】
ビデオ処理オペレーションをサポートする多次元データパス処理のためのシステムであって、
マザーボードと、
前記マザーボードに結合されたホストＣＰＵと、
前記マザーボードに結合され、前記ＣＰＵに結合され、請求項１に記載の前記システムを有するビデオプロセッサと、
を備えるシステム。
【請求項４】
前記バンクデータ構造の各々が、４×４のパターンに構成された複数のタイルを備え、
及び／又は、
前記バンクデータ構造の各々が、８×８、８×１６、又は１６×２４のパターンに構成された複数のタイルを備え、
及び／又は、
前記バンクデータ構造が、各バンクデータ構造の異なるタイルへのアクセスをサポートするように構成されており、二つの隣接するバンクデータ構造への該二つの隣接するバンクデータ構造のタイルの列を含む少なくとも一つのアクセスをサポートするように構成されており、
及び／又は、
前記タイルが、各バンクデータ構造の異なるタイルへのアクセスをサポートするように構成されており、少なくとも一つのアクセスが、二つの隣接するバンクデータ構造への該二つの隣接するバンクデータ構造のタイルの列を含むものであり、
及び／又は、
当該システムが、前記データストアに結合されており、且つ、前記複数のバンクデータ構造のタイルにアクセスするための構成を選択するクロスバーを更に備え、
及び／又は、
前記クロスバーが、前記複数のバンクデータ構造の前記タイルにアクセスして、１クロック毎にベクトルデータパスにデータを供給するようになっており、
及び／又は、
当該システムが、前記クロスバーによってアクセスされる前記複数のバンクデータ構造の前記タイルを受け取り、１クロック毎に前記ベクトルデータパスの前端に前記タイルを供給するためのコレクタを更に備える、請求項１〜３のいずれか一項に記載のシステム。
【請求項５】
ビデオ処理オペレーションを実行するためのビデオプロセッサであって、
前記ビデオプロセッサとホストＣＰＵとの間の通信を実施するホストインターフェイスと、
前記ビデオプロセッサとフレームバッファメモリとの間の通信を実施するメモリインターフェイスと、
前記ホストインターフェイス及び前記メモリインターフェイスに結合されており、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
前記ホストインターフェイス及び前記メモリインターフェイスに結合されており、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
を備えるビデオプロセッサ。
【請求項６】
ビデオ処理オペレーションを実行するためのシステムであって、
マザーボードと、
前記マザーボードに結合されたホストＣＰＵと、
前記マザーボードに結合され、且つ、前記ＣＰＵに結合された請求項５に記載の前記ビデオプロセッサと、
を備えるシステム。
【請求項７】
前記スカラー実行ユニットが、前記ビデオプロセッサのコントローラとして機能し、前記ベクトル実行ユニットの前記オペレーションを制御するようになっており、
及び／又は、
当該ビデオプロセッサが、前記スカラー実行ユニットと前記ベクトル実行ユニットのインターフェイスを取るベクトルインターフェイスユニットを更に備え、
及び／又は、
前記スカラー実行ユニット及び前記ベクトル実行ユニットが、非同期に動作するように構成されている、請求項５に記載のビデオプロセッサ。
【請求項８】
前記スカラー実行ユニットが、第１のクロック周波数で実行し、前記ベクトル実行ユニットは第２のクロック周波数で実行するようになっており、
及び／又は、
前記スカラー実行ユニットが、アプリケーションのフロー制御アルゴリズムを実行するように構成されており、前記ベクトル実行ユニットが、前記アプリケーションのピクセル処理オペレーションを実行するように構成されており、
及び／又は、
前記ベクトル実行ユニットが、前記スカラー実行ユニットの前記制御の下で要求駆動ベースで動作するように構成されており、
及び／又は、
前記スカラー実行ユニットが、コマンドＦＩＦＯを使用して前記ベクトル実行ユニットに関数呼び出しを送るように構成されており、前記ベクトル実行ユニットが、前記コマンドＦＩＦＯにアクセスすることによって要求駆動ベースで動作するようになっており、
及び／又は、
前記ビデオプロセッサの前記非同期オペレーションが、前記アプリケーションのベクトルサブルーチン又はスカラーサブルーチンの別個の独立した更新をサポートするように構成されている、請求項７に記載のビデオプロセッサ又は請求項６に記載のシステム。
【請求項９】
前記スカラー実行ユニットが、ＶＬＩＷ（超長命令語）コードを使用して動作するように構成されている、請求項５に記載のビデオプロセッサ。
【請求項１０】
ビデオ処理オペレーションを実行するビデオプロセッサのためのストリームベースのメモリアクセスシステムであって、
スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
前記スカラー実行ユニット及び前記ベクトル実行ユニット用のデータを格納するフレームバッファメモリと、
前記スカラー実行ユニットと前記ベクトル実行ユニットと前記フレームバッファメモリとの間の通信を実施するメモリインターフェイスと、
を備え、
前記フレームバッファメモリが、複数のタイルを備え、
前記メモリインターフェイスが、前記ベクトル実行ユニット又は前記スカラー実行ユニットに対して、タイルの第１の順次アクセスを含む第１のストリームを実施し、タイルの第２の順次アクセスを含む第２のストリームを実施する、
システム。
【請求項１１】
ビデオ処理オペレーションをサポートするためにストリームベースのメモリアクセスを実行するシステムであって、
マザーボードと、
前記マザーボードに結合されたホストＣＰＵと、
前記マザーボードに結合され、前記ＣＰＵに結合されたビデオプロセッサであって、
前記ビデオプロセッサと前記ホストＣＰＵとの間の通信を確立するホストインターフェイスと、
前記ホストインターフェイスに結合されており、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
前記ホストインターフェイスに結合されており、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
を有する該ビデオプロセッサと、
前記スカラー実行ユニットと前記ベクトル実行ユニットとに結合されており、前記スカラー実行ユニットと前記ベクトル実行ユニットとフレームバッファメモリとの間のストリームベースの通信を確立するメモリインターフェイスと、
を備え、
前記フレームバッファメモリが、複数のタイルを備え、
前記メモリインターフェイスが、前記ベクトル実行ユニット又は前記スカラー実行ユニットに対して、タイルの第１の順次アクセスを含む第１のストリームを実施し、タイルの第２の順次アクセスを含む第２のストリームを実施する、
システム。
【請求項１２】
前記第１のストリーム及び前記第２のストリームが、少なくとも一つのプリフェッチされたタイルを含み、
及び／又は、
前記第１のストリームが、前記フレームバッファメモリの第１のロケーションから生じ、前記第２のストリームが、前記フレームバッファメモリの第２のロケーションから生じるようになっており、
及び／又は、
前記メモリインターフェイスが、複数の異なる発生元ロケーションからのストリーム、及び複数の異なる終端ロケーションへのストリームを含む複数のストリームを管理するように構成されており、
及び／又は、
前記発生元ロケーションの少なくとも一つ、又は前記終端ロケーションの少なくとも一つが、システムメモリ内にあり、
当該システムが、前記メモリインターフェイスに組み込まれており、前記第１のストリーム及び前記第２のストリームをサポートするために複数のメモリ読み取りを実施し、前記第１のストリーム及び前記第２のストリームをサポートするために複数のメモリ書き込みを実施するように構成されたＤＭＡエンジンを更に備え、
及び／又は、
前記第１のストリームが、前記第２のストリームよりも多い待ち時間を受け、前記第１のストリームは、タイルを格納するために前記第２のストリームよりも多数のバッファが組み込まれるようになっており、
前記メモリインターフェイスが、前記第１のストリーム又は前記第２のストリームの調整可能な数のタイルをプリフェッチして、前記第１のストリーム又は前記第２のストリームの待ち時間を補償するように構成されている、請求項１０に記載のシステム。
【請求項１３】
前記ビデオプロセッサとホストＣＰＵとの間の通信を実施するホストインターフェイスと、
前記ホストインターフェイスに結合されており、スカラービデオ処理オペレーションを実行するように構成されたスカラー実行ユニットと、
前記ホストインターフェイスに結合されており、ベクトルビデオ処理オペレーションを実行するように構成されたベクトル実行ユニットと、
前記ベクトル実行ユニットがコマンドＦＩＦＯにアクセスすることによって要求駆動ベースで動作できるようにするコマンドＦＩＦＯと、
前記ビデオプロセッサとフレームバッファメモリとの間の通信を実施するメモリインターフェイスと、
複数の異なる記憶域の間のＤＭＡ転送を実施し、データストアメモリ及び命令キャッシュに前記ベクトル実行ユニットのデータと命令をロードするために前記メモリインターフェイスに組み込まれたＤＭＡエンジンと、
を備えるシステム。
【請求項１４】
前記システムがビデオ処理オペレーションを実行する耐待ち時間システムである、請求項１３に記載のシステム。
【請求項１５】
マザーボードと、
前記マザーボードに結合されたホストＣＰＵと、
前記マザーボードに結合されており、前記ＣＰＵに結合されたビデオプロセッサと、
を更に備える請求項１４に記載のシステム。
【請求項１６】
前記ベクトル実行ユニットが、前記要求駆動ベースで動作するために前記コマンドＦＩＦＯにアクセスすることによって前記スカラー実行ユニットに対して非同期に動作するように構成されており、
及び／又は、
前記要求駆動ベースが、前記異なる記憶域から前記ベクトル実行ユニットの前記コマンドＦＩＦＯへのデータ転送の待ち時間を隠蔽するように構成されており、
及び／又は、
前記スカラー実行ユニットがアルゴリズムのフロー制御処理を実施するように構成されており、前記ベクトル実行ユニットがビデオ処理ワークロードの大部分を実施するように構成されており、
及び／又は
前記スカラー実行ユニットが、データ転送待ち時間を隠蔽するために前記ベクトル実行ユニットの作業パラメータを事前計算するように構成されており、
及び／又は
前記ベクトル実行ユニットが、前記ＤＭＡエンジンを介してメモリ読み取りをスケジュールして、ベクトルサブルーチンの後続の実行のためのコマンドをプリフェッチするように構成されており、
及び／又は、
前記メモリ読み取りが、前記スカラー実行ユニットによる前記ベクトルサブルーチンの呼び出しに先立って、前記ベクトルサブルーチンの前記実行のためのコマンドをプリフェッチするようにスケジュールされるようになっており、
前記ベクトル実行ユニットが、前記ＤＭＡエンジンを介してメモリ読み取りをスケジュールして、ベクトルサブルーチンの後続の実行のためのコマンドをプリフェッチするように構成されており、前記メモリ読み取りが、前記スカラー実行ユニットによる前記ベクトルサブルーチンの呼び出しに先立って、前記ベクトルサブルーチンの前記実行のためのコマンドをプリフェッチするようにスケジュールされている、
請求項１３〜１５のいずれか一項に記載のシステム。