(57)【要約】      （修正有）【課題】マイクロプロセッサから３Ｄグラフィックスチップへのデータ転送に関連する帯域幅遅延および外部メモリからマイクロプロセッサのローカルメモリへのデータ転送に関連する帯域幅遅延を低減させる。【解決手段】スクリーン上にディスプレイされる３次元物体を形成する複数の三角形に対応する三角形セットアップ情報を発生するように構成された、マイクロプロセッサ回路を有する３次元グラフィックス処理を行う集積回路のマルチメディアプロセッサ。スクリーンは所定数の画素をもつ複数のビンにより形成されている。データキャッシュは、セットアップ情報を記憶するように構成されたマイクロプロセッサに接続されている。３次元三角形ラスタライザは、データキャッシュに接続されておりかつ三角形へのビン割当てを行ってスクリーン上の三角形と交差する全てのビンを識別するように構成されている。【選択図】図３２
2006185460.tif 000002
【特許請求の範囲】
【請求項１】
３次元グラフィックス処理を行う集積回路のマルチメディアプロセッサにおいて、
所定数の画素をもつ複数のビンにより形成されるスクリーン上に表示される３次元物体を形成する複数の三角形に対応する三角形セットアップ情報を発生するように構成されたマイクロプロセッサ回路と、
前記セットアップ情報を記憶するように構成された前記マイクロプロセッサに接続されたデータキャッシュと、
該データキャッシュに接続され、前記三角形へのビン割当てを行って前記スクリーン上の三角形と交差するすべてのビンを識別するように構成された３次元三角形ラスタライザと、を有するマルチメディアプロセッサ。
【請求項２】
前記データキャッシュは、前記ビンの各々に関する情報を記憶するタイルインデックスバッファを有している請求項１記載のマルチメディアプロセッサ。
【請求項３】
前記３次元三角形ラスタライザは、タイルデータ情報をローカルメモリユニットに供給するビニングユニットを有している請求項２記載のマルチメディアプロセッサ。
【請求項４】
前記３次元三角形ラスタライザは、前記ビニングユニットにより形成されるスパンラインと交差する各三角形に沿う交差画素の座標を形成するスクリーン座標補間回路を有していることを特徴とする請求項３記載のマルチメディアプロセッサ。
【請求項５】
前記ビニングユニットは、ビンの各三角形の識別に対応するタイルデータ情報を供給する請求項記載のマルチメディアプロセッサ。
【請求項６】
前記ビニングユニットは、前記各々の三角形を、前記三角形の各々の中間頂点と交差する水平線に沿う上方の小三角形と下方の小三角形とに分割する請求項５記載のマルチメディアプロセッサ。
【請求項７】
前記ビニングユニットは、下記条件を用いて、前記上方の三角形の各々が位置している前記ビンを識別する請求項６記載のマルチメディアプロセッサ。
X＝[min 2 (Cross XAC, Cross XAC + dxdy AC), max 2 (Cross XAB, Cross XAB + dxdy AB)]
ここで、Cross XACは、三角形ＡＢＣの辺ＡＣと次のスパンとの間の交点のｘ座標、Cross XABは、辺ＡＢと次のスパンとの間の交点のｘ座標
【請求項８】
前記ビニングユニットは、下記条件を用いて、前記下方の三角形の各々が位置している前記ビンを識別する請求項６記載のマルチメディアプロセッサ。
X＝[min 2 (Cross XAC, Cross XAC + dxdy AC), max 3 (Cross XAB, Bx, Cross XBC)]
ここで、Cross XACは、三角形ＡＢＣの辺ＡＣと次のスパンとの間の交点のｘ座標、Cross XBCは、辺ＢＣと次のスパンとの間の交点のｘ座標
【請求項９】
前記タイルインデックス情報を記憶するように構成されたデータキャッシュに接続されたメモリユニットを更に有する請求項３記載のマルチメディアプロセッサ。
【請求項１０】
前記メモリユニットおよび前記データキャッシュに接続され、データを転送するように構成されたデータストリーマを更に有する請求項９記載のマルチメディアプロセッサ。
【請求項１１】
マルチメディアプロセッサで３次元グラフィックスを行う方法において、
所定数の画素をもつ複数のビンにより形成されるスクリーン上に表示される３次元物体を形成する複数の三角形に対応する三角形セットアップ情報を発生する段階と、
前記セットアップ情報をデータキャッシュに記憶する段階と、
前記ビンの各々について、該ビンと交差する三角形を識別する段階とを有する方法。
【請求項１２】
前記ビンの各々に関する情報をデータキャッシュに記憶する段階を更に有する請求項１１記載の方法。
【請求項１３】
前記データキャッシュに接続されたメモリユニットにタイルデータ情報を供給する段階を更に有する請求項１２記載の方法。
【請求項１４】
ビニングユニットにより定められたように、スパンラインと交差する各三角形の辺に沿う交差画素の座標を設けるべくスクリーン座標を補間する段階を更に有する請求項１３記載の方法。
【請求項１５】
ビンの各三角形の識別に対応するタイルデータ情報を供給する段階を更に有する請求項１４記載の方法。
【請求項１６】
前記各々の三角形を、前記三角形の各々の中間頂点と交差する水平線に沿う上方の小三角形と下方の小三角形とに分割する段階を更に有する請求項１５記載の方法。
【請求項１７】
前記上方の三角形の各々が位置するビンを識別する段階を更に有する請求項１６記載の方法。
【請求項１８】
前記下方の三角形の各々が位置するビンを識別する段階を更に有する請求項１６記載の方法。
【請求項１９】
３次元グラフィックス処理を行う集積回路のマルチメディアプロセッサにおいて、
所定数の画素をもつ複数のビンにより形成されるスクリーン上に表示される３次元物体を形成する複数の三角形に対応する三角形セットアップ情報を発生するように構成されたマイクロプロセッサ回路と、
前記セットアップ情報を記憶するように構成された前記マイクロプロセッサに接続されたデータキャッシュと、
該データキャッシュに接続され、グラフィックラスタライゼーションを行って各三角形内のすべての画素についての画素情報をデータキャッシュに供給するように構成された３次元三角形ラスタライザと、を有するマルチメディアプロセッサ。
【請求項２０】
前記３次元三角形ラスタライザは、
前記データキャッシュに接続され、前記三角形の各々に対応する三角形セットアップ情報を受けるように構成されたテクスチャ座標補間回路と、
前記データキャッシュに接続され、前記三角形の各々に対応する三角形セットアップ情報を受けるように構成されたシェーディングカラー補間回路と、
前記データキャッシュに接続され、前記三角形の各々に対応する三角形セットアップ情報を受けるように構成された深さ補間回路と、を有する請求項１９記載のマルチメディアプロセッサ。
【請求項２１】
前記テクスチャ座標補間回路は、前記三角形内の各画素のテクスチャ座標をデータキャッシュに供給することを特徴とする請求項２０記載のマルチメディアプロセッサ。
【請求項２２】
前記テクスチャ座標補間回路は、前記スクリーン上で見ることができる各画素のテクスチャ座標をデータキャッシュに供給する請求項２０記載のマルチメディアプロセッサ。
【請求項２３】
前記データキャッシュに接続され、前記スクリーン上で見ることができる前記画素のメモリ位置を生成するように構成されている３次元テクスチャコントローラをさらに有する請求項２２記載のマルチメディアプロセッサ。
【請求項２４】
前記シェーディングカラー補間回路は、前記三角形内の各画素のシェーディングカラー座標を前記データキャッシュに供給する請求項２０記載のマルチメディアプロセッサ。
【請求項２５】
前記シェーディングカラー補間回路は、前記スクリーン上で見ることができる各画素のシェーディングカラー座標をデータキャッシュに供給することを特徴とする請求項２０記載のマルチメディアプロセッサ。
【請求項２６】
前記データキャッシュに接続され、前記スクリーン上で見ることができる前記画素のメモリ位置を生成するように構成されている３次元テクスチャコントローラをさらに有する請求項２５記載のマルチメディアプロセッサ。
【請求項２７】
３次元グラフィックス処理を行う集積回路のマルチメディアプロセッサにおいて、
所定数の画素をもつ複数のビンにより形成されるスクリーン上に表示される３次元物体を形成する複数の三角形に対応する三角形セットアップ情報を発生するように構成されたマイクロプロセッサ回路と、
前記セットアップ情報を記憶するように構成された前記マイクロプロセッサに接続されたデータキャッシュと、
該データキャッシュに接続され、グラフィックラスタライゼーションを行って各三角形内のすべての画素についての画素情報をデータキャッシュに供給するように構成された３次元三角形ラスタライザと、
前記データキャッシュに接続され、前記三角形ラスタライザにより供給される前記画素情報に応答して受け入れられるテクセルのフィルタリングを行うように構成された３次元テクスチャフィルタと、
該テクスチャフィルタに接続され、スケーリングされた画像を供給するスケーリング演算を行うように構成されたビデオスケーラと、を有するマルチメディアプロセッサ。
【請求項２８】
前記ビデオスケーラは、複数の隣接垂直画素および水平画素に対応する情報に、各画素に関連して予め定められた計数を乗じるように構成された乗算および加算ユニットを有している請求項２７記載のマルチメディアプロセッサ。
【請求項２９】
前記テクスチャフィルタは、前記データキャッシュに接続され、複数の垂直テクセルおよび水平テクセルを補間するように構成された水平およびリニア補間回路を有している請求項２８記載のマルチメディアプロセッサ。
【請求項３０】
前記リニア補間回路は、前記ビデオスケーラの前記乗算および加算ユニットからの補間結果を受け入れる請求項２９記載のマルチメディアプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、種々のモジュールを備えたデータ処理システムに関し、より詳しくは、３次元（３Ｄ）画像を処理するグラフィックモジュールに関する。
【背景技術】
【０００２】
近年、コンピュータハードウェアのコストが低下しているため、高品位３Ｄグラフィックスおよびアニメーションに対する要望が着実に増大している。３Ｄグラフィックスアーキテクチャを実施する上での２つの重要な設計的拘束はメモリの帯域幅およびシステムの待ち時間（latency）であり、第３ファクタはメモリコストである。
【０００３】
３Ｄグラフィックスシステムを実行する帯域幅条件は、システムの複雑さに基いて定まる。一般に、３Ｄグラフィックスシステムは、補間法、テクスチャマッピングおよびテクスチャフィルタリングによるジオメトリ変換（geometry transformation）、ライティング変換（lighting transformation）、シェーディング（陰影付け）またはラスタライジング等のパイプライン形アーキテクチャの多重モジュールを有している。
【０００４】
ジオメトリ変換は、３次元空間内の３次元物体のモデルを２次元スクリーン空間内面に変換する方法である。この方法は、三角形等の複数の多角形により３次元モデルを形成する段階と、これらの多角形を２次元空間内に変換する段階とを有している。
【０００５】
ライティング変換のジオメトリすなわちライティングは、３次元モデルから２次元スクリーン空間への光反射強度を表す方法である。３次元モデルは、複数の光源および色からの光を受ける。色反射およびライティングを数学的に表現する必要がある。反射強度は、数ある中で、光源の距離、入射光の角度、光源の輝度および色効果等のパラメータに基いて定まる。一般に、この変換は、各三角形の３つのノードにおいてのみ達成され、各三角形内の画素において達成されるものではない。ひとたび、三角形および３つのノードでの三角形のライティングが２次元スクリーン空間（スペース）内に定められたならば、三角形内の画素は、３つのノードが境界条件として機能する補間法により定められる。この補間技術によるこのシェーディングは、Guraughシェーディングとも呼ばれる。
【０００６】
テクスチャマッピング法は、３次元モデルのテクスチャを表す機構を提供する。かくして、水平座標（u）および垂直座標（v）と呼ばれる２つのテクスチャ座標により、２次元空間内にテクスチャ空間が形成される。テクスチャ空間内の各画素はテクセル（texel）と呼ばれる。各テクセルに関する情報は外部メモリに記憶され、フェッチテクセルコマンドに応答して、対応三角形のノードにマッピングされる。次に、テクセルカラーが上記シェーディングとブレンドされて、各三角形のノードの最終カラーを発生する。各三角形内に画素の陰を見出すのに、補間法によるシェーディングが再び用いられる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記のように、３Ｄグラフィックス処理を用いる慣用のマイクロプロセッサベースシステムは、帯域幅制限を受けるものである。例えば、X-86のようなマイクロプロセッサは、PCIバスを介して３Ｄグラフィックスチップに接続される。外部メモリは、３Ｄモデルに関する情報を記憶する。マイクロプロセッサは、ジオメトリおよびライティングの計算を遂行し、かつこの結果（この結果は、各三角形のノードに関する情報である）を、PCIバスを介して３Ｄグラフィックスチップに転送する。
【０００８】
３Ｄグラフィックスチップは、三角形の各辺の傾斜を測定する傾斜計算機を有している。補間回路（interpolator）測定した傾斜に基いて、三角形内の各画素のシェーディングカラーを計算する。テクスチャリングユニットは、測定した傾斜およびテクスチャマップに記憶された情報に基いて、三角形内の各画素のテクスチャを測定する。
【０００９】
上記テクスチャマップを記憶するには、別のフレームバッファメモリが使用される。テクスチャマップは、画像に使用される構成要素のテクスチャに対応する。また、フレームバッファメモリは、Zバッファと呼ばれる別のバッファスペースを有している。Zバッファは、三角形の隠れた部分をディスプレイしないときに、この隠れた部分を除去するのに使用される。かくして、複数の物体がオーバーラップするとき、該物体のどの縁部およびどの平面を見えるようにするかを決定し、可視平面のみをディスプレイするには、見えない平面を除去する必要がある。見えない平面を除去するには、慣用的に、本願に援用するJ.D. FoleyおよびA. Vandam著「対話形コンピュータグラフィックスの基礎（Fundamentals of Interactive Computer Graphics）」（Addisson Wesley、１９８２年）に開示されているような種々のアルゴリズムが使用される。
【００１０】
Zバッファは、Z値、すなわちスクリーン上にディスプレイする必要がある各画素の深さ値を記憶する。次に、三角形内のx、y座標値をもつ各点のZ値が計算され、得られた計算結果はx、y座標値に対応するZ値と比較される。或る点のZ値が記憶されたZ値より大きいときは、この点は隠れるものと考えられる。
【００１１】
かくして、上記マイクロプロセッサベースシステムは、マイクロプロセッサと３Ｄグラフィックスチップとの間のグラフィックス処理機能を分割する。マイクロプロセッサは、ジオメトリおよびライティング段階を遂行し、三角形データをPCIバスを介してグラフィックスチップに供給する。一般的なグラフィックス処理演算は、１M三角形／秒の処理を必要とする。各三角形は、約５０〜６０バイトの情報を収容する。この情報は、３つのノードの各々について、各ノードのx、y、z座標、カラー値R、G、B、３つのノードの各々についてのテクスチャ値u、wを含んでいる。かくして、各座標およびテクスチャ値が４バイトの情報で表されるときには、各三角形の３つのノードが９６（３２×３）バイトの情報により定められる。これは、マイクロプロセッサから３Ｄグラフィックスチップへの９６Mバイト／秒のデータ転送に関する。かくして、PCIバスは、過酷なボトルネッキングを受ける。
【００１２】
３Ｄグラフィックス処理の実行における他の帯域幅制限は、フレームバッファから３Ｄグラフィックスチップへのデータ転送である。通常、一般的なモデルのスペースは、各領域においてオーバーラップする２〜４個の物体を含むことができる。かくして、シェーディングおよびテクスチャリングは、Zバッファリングに関連して２〜４回行われる。一秒間のディスプレイ当たり６０フレームの場合には、フレームバッファと３Ｄグラフィックスチップとの間のデータ転送速度は、Zバッファリングを行わない場合に、約７２０Mバイト／秒（９６バイト／画素×１０２４画素／ライン×７６８ライン×（シェーディング）×６０フレーム／秒）である。Zバッファリングを行う場合には、読取りおよび書込み演算はZバッファリングに含まれるため、この転送速度は、２倍（１４４０Mバイト／秒）の高速になる。テクセルフェッチングはまた、３６０Mバイト／秒のデータ転送速度を必要とする。このようなデータ転送速度は、現在のメモリ技術では得られない。かくして、現在の３Ｄグラフィックス構成はかなり低い解像度を使用しており、これではリアリスチックな画像は得られない。
【００１３】
かくして、マイクロプロセッサから３Ｄグラフィックスチップへのデータ転送に関連する帯域幅遅延（bandwidth delays）および外部メモリからマイクロプロセッサのローカルメモリへのデータ転送に関連する帯域幅遅延を低減させる必要がある。
【課題を解決するための手段】
【００１４】
本発明の一実施形態によれば、３次元グラフィックス処理を行う集積回路のマルチメディアプロセッサは、スクリーン上にディスプレイされる３次元物体を形成する複数の三角形に対応する三角形セットアップ情報を発生するように構成されたマイクロプロセッサ回路を有している。スクリーンは所定数の画素をもつ複数のビンにより形成される。データキャッシュは、セットアップ情報を記憶するように構成された前記マイクロプロセッサに接続されている。３次元三角形ラスタライザは、データキャッシュに接続されておりかつ三角形へのビン割当てを行ってスクリーン上の三角形と交差するすべてのビンを識別するように構成されている。
【００１５】
本発明の他の実施形態によれば、データキャッシュは、ビンの各々に関する情報を記憶するタイルインデックスバッファを有している。３次元三角形ラスタライザは、タイルデータ情報をローカルメモリユニットに供給するビニングユニットを有している。３次元三角形ラスタライザはまた、ビニングユニットにより形成されるスパンラインと交差する各三角形に沿う交差画素の座標を形成するスクリーン座標補間回路を有している。ビニングユニットは、ビンの各三角形の識別に対応するタイルデータ情報を供給する。ビニングユニットは、各々の三角形を、該三角形の各々の中間頂点と交差する水平線に沿う上方の小三角形と下方の小三角形とに分割する。次に、ビニングユニットは、下記条件を用いて、下方の三角形の各々が位置しているビンを識別する。
【００１６】
X＝[min 2 (Cross XAC, Cross XAC + dxdy AC), max 2 (Cross XAB, Cross XAB + dxdy AB)]
ここで、Cross XACは、三角形ＡＢＣの辺ＡＣと次のスパンとの間の交点のｘ座標、Cross XABは、辺ＡＢと次のスパンとの間の交点のｘ座標、
を用いて、上方の三角形の各々が位置しているビンを識別する。
【００１７】
また、ビニングユニットは、下記条件、すなわち、
X＝[min 2 (Cross XAC, Cross XAC + dxdy AC), max 3 (Cross XAB, Bx, Cross XBC)]
ここで、Cross XACは、三角形ＡＢＣの辺ＡＣと次のスパンとの間の交点のｘ座標、Cross XBCは、辺ＢＣと次のスパンとの間の交点のｘ座標
メモリユニットは、タイルインデックス情報を記憶するように構成されたデータキャッシュに接続されている。また、データストリーマは、メモリユニットおよびデータを転送するように構成されたデータキャッシュに接続されている。
【発明を実施するための最良の形態】
【００１８】
本発明の一実施形態によれば、マルチメディアプロセッサ１００がＦＩＧ．１に示されているが、本発明の範囲は該マルチメディアプロセッサ１００に限定されるものではない。マルチメディアプロセッサ１００は、並行演算を取り扱う、すべてプログラム可能な単一チップである。これらの演算として、グラフィックス機能、オーディオ機能、ビデオ機能、通信機能、ネットワーク機能および他のマルチメディア機能の高速化がある。プロセッサ１００のすべての主構成要素は１つのチップセット上に配置されるため、より詳細に後述するように、このシステムのスループットは、慣用システムのスループットに比べて著しく優れている。
【００１９】
マルチメディアプロセッサ１００は、ホスト型環境およびホストレス型環境の両方に使用できる超長命令語（very-long instruction word: VLIW）を有している。この状況では、ホスト型環境とは、マルチメディアプロセッサ１００がINTEL（登録商標）X-86のような別のマイクロプロセッサに接続される環境をいい、ホストレス環境とは、マルチメディアプロセッサ１００が単独モジュールとして機能する環境をいう。VLIWプロセッサは、２つのクラスタすなわちCPU１０２、１０４を備えた中央処理装置として示されている。これらの処理装置１０２、１０４は、それぞれ、マルチメディアプロセッサ１００が、本発明の一実施形態に従って単独チップセットとして演算することを可能にする。
【００２０】
VLIWプロセッサの演算は、本願に援用するJohn R. Ellis著「ブルドッグ：ＶＬＩＷアーキテクチャ用コンパイラ（Bulldog: a Compiler for VLIW Architectures）」（The MIT Press、１９８６年）に記載されており、非常に良く知られている。基本的には、VLIWプロセッサは、プログラムの命令レベル並列性（instruction-level parallelism: ILP）を活用するのに適したアーキテクチャを使用する。この構成は、１つ以上の基本（原始）命令を一度に実行することを可能にする。これらのプロセッサは、幾つかの原始命令を含んでいる超長命令語を命令キャッシュから取り出して、命令を並列的に実行する多機能ユニットを有している。このため、原始命令から独立して一緒にグループ化された、並列的に実行されるコードを発生する特殊コンパイラが使用される。スーパースケーラプロセッサとは異なり、VLIWプロセッサは比較的簡単な制御論理を有する。なぜならば、VLIWプロセッサは演算のいかなる動的スケジューリングおよびリオーダリングも行わないからである。VLIWプロセッサはRISCへの後継（successor）と見られている。なぜならば、VLIWコンパイラは、以前のプロセッサのハードウェア構造内に埋め込まれた複雑さを引き継ぐからである。
【００２１】
VLIWアーキテクチャの命令セットは、簡単な命令から構成される傾向がある。コンパイラは、多機能ユニットがビジー（busy）に維持されるように、多くの原始演算を単一の「命令語」に組み立てなくてはならない。このためには、可用演算スロット（available operation slots）を満たすべく、コードシーケンスに充分な命令レベル並列性（ILP）を必要とする。このような並列性は、数ある中で、基本ブロックを推論的に横切ってコードをスケジューリングし、ソフトウェアパイプライニングし、かつ実行される演算数を減少させることにより、コンパイラにより暴露される。
【００２２】
VLIWプロセッサ１０２の出力ポートは、データキャッシュ１０８に接続されている。同様に、VLIWプロセッサ１０４の出力ポートは命令キャッシュ１１０に接続されている。本発明の一実施形態によると、データキャッシュ１０８および命令キャッシュ１１０の出力ポートは、次に、データ転送スイッチ１１２の入力ポートに接続されている。また、マルチメディアプロセッサ１００には、より詳細に後述する３次元グラフィック処理を取り扱う固定機能ユニット（fixed function unit）１０６が配置されている。固定機能ユニット１０６の出力ポートは、ＦＩＧ．１に示すように、データ転送スイッチ１１２の入力ポートに接続されている。固定機能ユニット１０６はまた、データキャッシュ１０８の入力ポートにも接続されている。データキャッシュと関連する固定機能ユニットの構成および演算は、図３２〜図３９を参照してより詳細に説明する。本発明によるデータキャッシュ１０８の構成および演算は、図２９および図３１を参照して以下に詳述する。
【００２３】
図１に示すように、マルチメディアプロセッサ１００のすべての構成要素はデータ転送スイッチに接続されている。このため、メモリコントローラ１２４の種々のポートがデータ転送スイッチ１１２に接続されている。メモリコントローラ１２４は、SDRAM１２８のような外部メモリの演算を制御する。データ転送スイッチ１１２はまた、データストリーマ１２２に接続されている。より詳細に後述するように、データストリーマ１２２は、マルチメディアプロセッサ１００内でバッファ型データ移動（buffered data movements）を行う。データストリーマ１２２は更に、帯域幅条件を変化させるメモリデバイスすなわち入力／出力（I/O）デバイス間のデータ転送をサポートする。本発明の一実施形態によれば、データストリーマ１２２により取り扱われるメモリデバイスは、アドレスできるシステム内の任意の物理的メモリ、例えば外部SDRAM１２８、データキャッシュ１０８、および固定機能ユニット１０６内に配置されるメモリ空間を有する。
【００２４】
また、データストリーマ１２２は、図３を参照してより詳細に後述するように、マルチメディアプロセッサ１００がPCIバスを介してホストプロセッサに接続される状況におけるホストメモリへのメモリ転送を取り扱う。このため、マルチメディアプロセッサ１００はまた、データ転送スイッチ１１２に接続されるポートを備えたPCI/AGPインタフェース１３０を有している。PCI/AGPインタフェース１３０は、マルチメディアプロセッサ１００が、本願に援用するそれぞれ、PCI Architecture specification Rev. 2.1（PCI Special Interest Group発行）およびAGP Architecture Specification Rev. 1.0として知られている標準プロトコルを用いた対応PCIバスおよびAGPバスと通信することを可能にする。
【００２５】
マルチメディアプロセッサ１００は、インタフェースユニット１３０を介してPCIバスまたはAGP（Accelerated Graphics Port: 加速型グラフィックスポート）バスに接続されると、マスタデバイスまたはスレーブデバイスとして機能できる。２つのバスは互いに独立してマルチメディアプロセッサ１００に接続できるため、マルチメディアプロセッサ１００は、一方のチャネルでバスマスタデバイスとして演算し、かつ他方のチャネルでスレーブデバイスとして演算できる。このため、マルチメディアプロセッサ１００は、該プロセッサが、ホストシステムの観点からスレーブデバイスとして演算するときは、多機能PCI/AGPデバイスとして考えることができる。
【００２６】
データストリーマ１２２はまた、DMA（direct memory access: 直接メモリアクセス）コントローラ１３８を介して入力／出力（I/O）バス１３２に接続されている。I/Oバス１３２には、複数のI/Oデバイスコントローラ１３４が接続されている。本発明の一実施形態によれば、I/Oデバイスコントローラ１３４の出力ポートは、多ポートマルチプレクサ（versa port multiplexer）１３６の入力ポートに接続されている。
【００２７】
プログラム可能な入力／出力コントローラ（programmable input/output controller: PI/OC）１２６の幾つかのポートがデータ転送スイッチ１１２に接続されており、他のポートがI/Oバス１３２に接続されている。
【００２８】
本発明の一実施形態によれば、I/Oデバイスコントローラ１３４は、協働してインタフェースユニット２０２を形成し、該インタフェースユニット２０２は、マルチメディアプロセッサ１００と外界とのインタフェースを形成するように構成されている。図２に関連してより詳細に説明するように、マルチメディアプロセッサ１００は、任意の時点で動作させられるI/Oデバイスの数に基づいて、種々の形態に構成できる。
【００２９】
図１に示すように、データ転送スイッチ１１２は、プロセッサメモリバス（processor memory bus: PMB）１１４を有し、該プロセッサメモリバス１１４は、固定機能ユニット１０６、データキャッシュ１０８、命令キャッシュ１１０およびデータストリーマ１２２からアドレス情報およびデータ情報を受けるように構成されている。
【００３０】
データ転送スイッチ１１２はまた、内部メモリバス（internal memory bus: IMB）１２０を有し、該内部メモリバス１２０は、メモリコントローラ１２４、データストリーマ１２２、プログラム可能な入力／出力（I/O）コントローラ１２６およびPCI/AGPコントローラ１３０からのアドレス情報およびデータ情報を受けるように構成されている。
【００３１】
データ転送スイッチ１１２はまた、リクエストバス１１８を有し、該リクエストバス１１８は、データ転送スイッチに接続されたマルチメディアプロセッサ１００のすべての構成要素からのリクエスト信号を受けるように構成されている。
【００３２】
データ転送スイッチ１１２はまた、切換可能なトランシーバ１１６を有し、該トランシーバ１１６は、プロセッサメモリバス（PMB）１１４と内部メモリバス（IMB）１２０との間でデータ接続を行うように構成されている。更に、データ転送スイッチ１１２は、それぞれ３つのバスアービタユニット１４０、１４２、１４４を有している。かくして、詳細に後述するシステムニーズに基づいて、リクエストバスおよびデータバスについての別のバス仲裁（bus arbitration）が取り扱われる。また、図１に示すように、マルチメディアプロセッサ１００の異なる構成要素が、別のグループとしてプロセッサメモリバス１１４または内部メモリバス１２０に接続されるけれども、データストリーマ１２２は両メモリバスに直接接続される。本発明の一実施形態によれば、プロセッサメモリバス１１４および内部メモリバス１２０はいずれも、それぞれ１６００MBのピーク帯域幅に対し２００MHZで作動する６４ビットまたは８バイトの幅である。
【００３３】
本発明の一実施形態によれば、参照番号１４０、１４２、１４４で示すような各バスアービタは、同時に送られる多数のリクエストのスケジューリングを達成するため、４レベルの先入れ先出し（first-in-first-out: FIFO）バッファを有している。一般に、割当てられた優先レベルに基づいて、各リクエストがサービスされる。
【００３４】
データ転送スイッチ１１２に接続されるすべての構成要素は、データ転送スイッチエージェントと呼ばれる。また、演算の達成をリクエストする構成要素は、この状況では、イニシエータまたはバスマスタと呼ばれる。同様に、リクエストに応答する構成要素は、この状況では、レスポンダまたはバススレーブと呼ばれる。特定機能についてのまたは特定時点でのイニシエータは、他の機能についてのまたは他の時点でのスレーブとなることに留意されたい。また、より詳細に説明すると、マルチメディアプロセッサ１００内のすべてのデータは、１つまたはそれぞれ両データバス１１４、１２０を用いて伝送される。
【００３５】
内部メモリバス（IMB）およびプロセッサメモリバス（PMB）の作動を支配するプロトコルを、以下により詳細に説明する。本発明の一実施形態によれば、リクエストバス１１４、１１８、１２０は、それぞれ、受け手アドレス（destination address）を表示するリクエストアドレスに適合する信号ラインを有している。リクエストフェーズの間、リクエストを行う構成要素はバスマスタであり、受け手アドレスに位置する構成要素はバススレーブである。リクエストバスはまた、リクエストバイト読取り可能信号と、リクエストのイニシエータを識別するリクエストイニシエータ識別信号とを有している。
【００３６】
データ転送フェーズの間、リクエストフェーズの受け手アドレスはバスマスタとなり、かつリクエストフェーズの間に開始する構成要素はバススレーブとなる。バスはまた、データ転送フェーズの間にバススレーブによりユニークに発生されるトランザクション識別ID信号に適合するラインを有している。
【００３７】
バスの付加ラインは、データ転送サイズをあてがうので、オリジネータおよび受け手側端点がトラックを２つのユニット間の転送のサイズに維持できる。また、バスは、処理されるコマンドの形式に適合する信号ラインを有する。
【００３８】
マルチプレクサに関連するインタフェースユニット２０２の演算を、図２に関連して以下により詳細に説明する。
【００３９】
インタフェースユニットおよびマルチプレクサ
マルチメディアプロセッサ１００は、最小のホストへの負荷および高いメディア品質により、スタンドアロンユニットとしてまたはパソコン上で、並行マルチメディア機能およびI/O機能を遂行することを可能にする。マルチプレクサ１３６は、マルチメディアプロセッサ１００がブート（boot）されるとソフトウェア構成できるI/Oピンセットを与える。これは、I/O機能をフレキシブルにし、かつソフトウェアをアップグレードする。I/Oピンセットの定義は、起動されているI/Oデバイスコントローラ１３４に基づいて定められる。
【００４０】
かくして、本発明の一実施形態によれば、マルチメディアプロセッサ１００で構成されたI/Oインタフェースユニットは、例えば、ソフトウェアアップグレードをロードし、かつリブートすることにより変更できる。同様に、新しい規格および特徴を利用できるようになると、ソフトウェアアップグレードが、ハードウェアアップグレードにとって代わることができる。
【００４１】
I/Oインタフェースユニットは、NTSC/PALエンコーダおよびデコーダデバイスコントローラ２２４を有し、該コントローラ２２４はI/Oバス１３２およびマルチプレクサ１３６に接続されている。ISDN GCIコントローラ２２０もI/Oバス１３２およびマルチプレクサ１３６に接続されている。同様に、T1ユニット２１０もI/Oバス１３２およびマルチプレクサ１３６に接続されている。レガシーオーディオ信号インタフェースユニット２１８は、I/Oバス１３２およびマルチプレクサ１３６に接続され、かつレガシーと呼ばれるオーディオプロトコルに従ってオーディオ信号インタフェースを形成するように構成されている。オーディオコーデック（audio codec: AC）ユニット２１４は、オーディオコーデックインタフェース信号を発生するように構成されている。オーディオコーデックユニット２１４は、I/Oバス１３２およびマルチプレクサ１３６に接続されている。ユニバーサル直列バス（universal serial bus: USB）ユニット２２２も、I/Oバスおよびマルチプレクサ１３６に接続されている。USBユニット２２２は、マルチメディアプロセッサ１００が、例えばキーボードデバイス、ジョイスティックおよびマウスデバイスからの制御信号を受けるためのUSBバスと通信することを可能にする。同様に、IEC958インタフェース２０８もI/Oバス１３２およびマルチプレクサ１３６に接続されている。
【００４２】
I2S（Inter-IC Sound）インタフェース２１２は、ホームシアタ用のD/Aコンバータ（図示せず）を駆動するように構成されている。I2Sインタフェースは、一般に、データとクロック信号とを結合して直列データ流を作る必要があるCDプレーヤに使用されている。このインタフェースとして、別々のマスタクロック、ワードクロック、ビットクロック、データおよびオプショナル強調フラグがある。
【００４３】
I2Cバスインタフェースユニット２１６は、マルチメディアプロセッサ１００と外部オンボードデバイスとの間の通信を行うように構成されている。IIC規格の演算は、本願に援用するPhillips Semiconductors社の刊行物「I2Cバスおよびその使用法（The I2C-bus and How to Use it）（含：仕様書）」（１９９５年４月）に開示されており、良く知られている。
【００４４】
バスインタフェースユニット２１６は、ディスプレイデータチャネルインタフェース（DDC）規格として知られている通信プロトコルに従って演算する。DDC規格は、コンピュータディスプレイとホストシステムとの間の通信チャネルを形成する。このチャネルは、形状情報の搬送、ディスプレイの最適使用およびディスプレイ制御情報の搬送に使用できる。また、このチャネルは、ディスプレイを介してホストに接続されるアクセスバス周辺機器用のデータチャネルとしても使用できる。ディスプレイデータチャネル規格は、ディスプレイデータチャネル仕様のためのVESA（Video Electronics Standard Association）に従ってデータを供給すべく構成されたハードウェア構成を必要とする。
【００４５】
上記各I/Oデバイスコントローラの機能を、以下に更に詳細に説明する。
【００４６】
RAMDACまたはSVGA DACインタフェース２０４は、外部RAMDACへの直接接続を行う。このインタフェース２０４はまた、CRTコントローラおよびクロックシンセサイザを有している。RAMDACは、I2C直列バスを介してプログラムされる。
【００４７】
NTSCデコーダ／エンコーダコントローラデバイス２２４は、CCIR601/656規格に従ってNTSCビデオ信号に直接インタフェースし、統合された単独構成を形成する。これにより、マルチメディアプロセッサ１００が、直接、高品位NTSCまたはPALビデオ信号を発生できるようになる。このインタフェースは、CCIR601規格により特定された解像度をサポートできる。プロセッサ１０２での進歩したビデオフィルタリングにより、プログレッシブ／インターレースおよびインターレース／プログレッシブ出力を変換するときに、フリッカのない出力が得られる。NTSCエンコーダは、I2C直列バスを介して制御される。
【００４８】
同様に、NTSCデコーダコントローラは、１３．５MHZ画素速度で１６YUVまで発生できるCCIR601/656フォーマット化NTSCビデオ信号への直接接続を行う。
【００４９】
ISDN（Integrated Services Digital Networks standard: 統合サービスデジタルネットワーク規格）インタフェース２２０は、外部ISDN UまたはS/Tインタフェースデバイスを介してISDN BRI（basic rate interface: 基本速度インタフェース）をサポートする５ピンインタフェースを有している。ISDN規格は、汎用デジタル電話網仕様を形成し、かつ１９８０年代の半ばから存在している。このモジュールの機能性は直列通信コントローラと同じ原理に基づいており、ISDN Uインタフェースデバイスに接続するのにIDL2およびSCPインタフェースを用いている。
【００５０】
T1インタフェース２１０は、T1直列または並列インタフェースを介して、第三者のT1 CSU（channel service unit: チャネルサービスユニット）またはデータサービスユニット（DSU）への直接接続を行っている。CSU/DSUおよび直列／並列出力は、専用抵抗器を介して構成できるソフトウェアである。別のユニットが、信号およびデータ制御を取り扱う。一般に、チャネルサービスユニット（CSU）はT1ネットワークから受けた波形を再生し、ユーザにDSC-1インタフェースでのきれいな信号を提供する。CSUはまた、送られたデータを再生する。遠隔試験機能として、ネットワーク側から試験するループバックがある。また、データサービスユニット（DSU）は、例えば特殊コーティングを用いてゼロを抑制することにより顧客のデータがDSC-1インタフェースのフォーマット条件に合致させる。DSUはまた、試験用のローカルおよび遠隔ループバックを備えた端末を構成する。
【００５１】
本発明の一実施形態による単一のマルチメディアプロセッサは、V.34モデムデータトラフィックの２４チャネルまでを取り扱うように構成されており、V.PCNL機能とV.34機能とを混合する。この特徴は、マルチメディアプロセッサ１００を用いてモデム集信機を構成することを可能にする。
【００５２】
レガシーオーディオユニット２１８は、レガシーオーディオPro８ビットステレオ規格に従って構成される。レガシーオーディオユニット２１８は、レジスタ通信演算（リセット、コマンド／ステータス、読取りデータ／ステータス）、デジタル化された音声演算（DMAおよびDirectモード）、およびプロフェッショナルミキササポート（CT1 345、モジュールミキサ）を行う。このユニット２１８の機能として、
８ビットモノラル／ステレオDMAスレーブモードプレー／録音
Directモード用８ビットホストI/Oインタフェース
リセット、コマンド／データ、コマンドステータス、読取りデータおよび読取りステータスレジスタサポート
プロフェッショナルミキササポート
FMシンセサイザ（OPLII、IIIまたはIVアドレスデコーディング）
MPU401 Generalサポート
ジョイスティックインタフェースサポート
ネイティブDOSモード用ソフトウェア形態サポート
Windows（登録商標） DOS ボックスの資源用PnP（plug and play: プラグおよびプレー）サポート
がある。
【００５３】
PCI信号デコーダユニットは、マルチプレクサ１３６ポートを介してPCIレガシーオーディオ信号の直接出力を行う。
【００５４】
AC Linkインタフェース２１４は、２方向固定速度直列PCMデジタル流である５ピンデジタル直列インタフェースである。AC Linkインタフェース２１４は、多入力／出力オーディオ流並びにTDMフォーマットを用いる制御レジスタアクセスを取り扱うことができる。インタフェースは、各オーディオフレームを、１２個の出ていくデータ流および１２個の入ってくるデータ流（各データ流は、２０ビットサンプル解像度をもつ）に分割する。インタフェース２１４として、固定48 KS KS/S DACおよびADCミキシング、およびアナログ処理がある。
【００５５】
トランスポートチャネルインタフェース（TCI）２０６は、トランスポート層フォーマットの復調チャネルデータを受け入れる。トランスポートチャネルインタフェース（TCI）２０６は、衛星またはケーブルからのパケットデータを同期化し、次に、バイトアラインドデータ（byte-aligned data）をアンパック（unpack）しかつDMAコントローラを介してマルチメディアプロセッサ１００メモリ内に入れる。基本的に、トランスポートチャネルインタフェースは、トランスポート層フォーマットの復調チャネルデータを受け入れる。トランスポート層フォーマットは、４つのバイトヘッダおよび１８４バイトペイロードを備えた１８８バイトパケットからなる。インタフェースは、あらゆるトランスポートヘッダの第１バイトである同期バイトを検出できる。バイト同期が検出されたならば、インタフェースは、バイトアラインドデータを、データストリーマ１２２およびデータ転送スイッチ１１２（図１）を介して、マルチメディアプロセッサ１００のメモリバッファ内に導く。トランスポートチャネルインタフェースはまた、MPEG-2システムのトランスポートパケットを、バイト並列またはバイト直列フォーマットに受け入れる。
【００５６】
マルチメディアプロセッサ１００は、ビデオチャネルおよびオーディオチャネルにクロック補正および同期化を行う。
【００５７】
ユニバーサル直列バス（USB）インタフェース２２２は、低速デバイスと通信する標準インタフェースである。このインタフェースは、標準仕様に一致する。Philips PDIUSBIIのような外部モジュールに接続することを期待するのは４ピンインタフェース（２つのパワーピンおよび２つのデータピン）である。
【００５８】
マルチメディアプロセッサ１００はUSBハブとしては作用しないが、１２Mbpsおよび１．５Mbpsデバイスと通信できる。ソフトウェアは、いずれの速度でも実行できるように構成できる。１２Mbpsの速度で実行するように構成すると、マルチメディアプロセッサは、個々のデータパケットを１．５Mbpsデバイスに送ることができる。本発明の一実施形態によれば、マルチメディアプロセッサ１００は、USBを介して２５６個までのデバイスと通信する。
【００５９】
USBは、タイムスロット型バスである。タイムスロットは１ミリ秒である。各タイムスロットには、等時性、非同期制御またはデータである多トランザクションを含めることができる。データトランザクションは非同期である。データはビットスタッフィングを有するNRZIである。これは、すべての６ビット可変長データパケットが少なくとも１回CRC保護されると、クロック調節のトランジションを保証する。バルクデータトランザクションは、より長いデータ流を、１パケット当たり１０２３バイトまでのパケットに分割し、１タイムスロット当たり１つのパケットを送り出す。
【００６０】
IEC958インタフェースユニット２０８は、Sony Philips Digital Interface (SPDIF)； Audio Engineering Society/European Broadcast Union (ES/EBU) インタフェース；TOSLINKインタフェース等の幾つかのオーディオ規格をサポートするように構成されている。TOSLINKインタフェースは、外部IRデバイスを必要とする。IEC958プロトコルコンベンションは、サウンドサンプルの各マルチビットフィールドが、最初に最下位ビット（リトル−エンディアン: little-endian）で、内または外にシフトすることを要求する。
【００６１】
インタフェースユニット２０２はまた、ホームシアタ用の高品位（９５dB SNR以上）オーディオデジタル／アナログ（D/A）コンバータを駆動するように構成されたI2Sコントローラユニット２１２を有している。タイミングは、１８ビットモードまたは１６ビットモードにソフトウェア構成できる。
【００６２】
I2Cユニット２１６は、主としてマルチメディアプロセッサ１００と外部オンボードデバイスとの間の通信を行うI2C規格を用いている。I2Cユニット２１６は２ライン直列インタフェースからなり、マルチメディアプロセッサ１００が、I2Cバスにあるマスタおよびスレーブデバイスとして機能できるようにする物理的層（signaling）を形成する。この結果、マルチメディアプロセッサ１００は、ステータスを遅延させかつ外部デバイスへの情報を制御するための付加ハードウェアは不要である。
【００６３】
DDCインタフェースは、ディスプレイデータチャネル（Display Data Channel: DDC）仕様バージョン１、２ａのVESA規格に完全に従う。DDC仕様のコンプライアンスは、標準VGAコネクタの２ピンを介してのDDC制御および標準VGAコネクタの２ピンを通るI2C接続を介してのDDC制御により与えられる。
【００６４】
上記各I/Oユニットは、I/Oバス１３２上の所定アドレスに位置するPIOレジスタに一致する制御レジスタ（図示せず）を有する点で優れていることに留意されたい。この結果、各ユニットはI/Oバス１３２を介して適当な制御信号を受けることにより直接制御される。
【００６５】
かくして、本発明の一実施形態によれば、マルチメディアプロセッサ１００は、所望セットのI/Oデバイスがマルチプレクサ１３６を介して外界にアクセスするようにI/Oユニット２０２のI/O形態を再プログラミングすることにより、種々のシステムを用いることができる。マルチプレクサ１３６のピン形態は、I/Oユニット２０２の形態に基づいて変化する。マルチメディアプロセッサ１００を用いるシステムが使用される幾つかの例示用途として、３次元（３Ｄ）ジオメトリPC、マルチメディアPC、セットトップボックス／３Ｄテレビジョン、またはWeb TV、および通信モデルシステムがある。
【００６６】
演算中に、プロセッサ１０２は、I/Oバス１３２を介して適正信号をI/Oユニット２０２に供給して、所望のI/Oユニットをマルチプレクサ１３６を介して外界に接続すべくプログラムできる。例えば、本発明の一実施形態によれば、TCIユニット２０６は、TV信号を受信すべく、マルチプレクサ１３６を介して外部チューナシステム（図示せず）に接続するためにアクティブにされる。マルチメディアプロセッサ１００は、受信した信号を操作して、これをモニタのようなディスプレイユニット上にディスプレイする。本発明の他の実施形態によれば、NTSCユニット２２４は、NTSCコンプライアントTV信号を受信すべく、マルチプレクサ１３６を介して外部チューナシステム（図示せず）に接続するためにアクティブにされる。
【００６７】
本発明の原理に従って、他の用途に使用できることは理解されよう。図示の目的から、図３および図４は、後述のように、本発明の２つの実施形態に従って構成される２つの典型的なシステムのブロック図を示すものである。
【００６８】
かくして、図３には、マルチメディアプロセッサ１００を用いたマルチメディアシステムが示されており、該マルチメディアシステムは、本発明の一実施形態に従って、X86（登録商標）のようなホストプロセッサ２３０を用いて演算する。マルチメディアプロセッサ１００は、加速型グラフィックスバス（accelerated graphics bus: AGP）を介してホストプロセッサに接続される。プロセッサ２３０は、PCIバス２６０およびサウスブリッジユニット２３２を介してISAバスに接続される。参照番号２１８（図２）で示すようなオーディオI/Oコントローラは、ISA SB/Comm マッパ２３２およびマルチプレクサ１３６を介して、ISAバス２５８との間で信号をやりとりするように構成されている。また、I2C/DDCドライバユニット２１６は、マルチプレクサ１３６を介して対応標準コンプライアント信号を受けるように構成されている。ドライバユニット２１６は、CRT解像度、スクリーンサイズおよびアスペクト比を制御する信号を供給することを意図したデータチャネル信号を受ける。マルチメディアプロセッサ１００のISDN/GCIドライバユニット２２１は、ISDN UまたはS/Tインタフェースユニット２３６との間で信号をやりとりするように構成されている。
【００６９】
マルチメディアプロセッサ１００は、アナログRGB信号を、ディスプレイリフレッシュユニット２２６を介してCRTモニタ（図示せず）に供給する。マルチメディアプロセッサ１００はまた、CCIR/NTSCドライバユニット２２４およびNTSCエンコーダユニット２３８を介して、NTSCまたはPALコンプライアントビデオ信号を供給するようにも構成されている。局部発振ユニット２４４は、５４MHZの信号をマルチメディアプロセッサ１００に供給して、NTSC信号を処理する。
【００７０】
復調器ユニット２４６は、マルチメディアプロセッサ１００のトランスポートチャネルインタフェースドライバユニット２０６に接続される。復調器ユニット２４６は、直交振幅変調または直交位相シフトキーイング変調またはF.E.C.に基づいて、信号を復調するように構成されている。
【００７１】
マルチメディアプロセッサ１００には第２PCIバス２５２も接続されており、該第２PCIバス２５２は、ビデオデコーダ２４８により発生された信号を受け、Brooktree（登録商標）により与えられる、Bt484規格に従ったNTSC/PAL信号を供給する。また、バス２５２は、１３９４ユニット２５０を介して高速直列データインタフェースを可能にする１３９４ link/phy規格による信号を受ける。バス２５２はまた、他のマルチメディアプロセッサ１００に接続できる。
【００７２】
最後に、マルチメディアプロセッサ１００は、AC'97規格によるコーデック２５４を介してアナログオーディオ信号を受けるように構成されている。局部発振器２５６は、AC'97コーデックを作動させるための発振信号を発生する。
【００７３】
図４は、本発明の他の実施形態によるマルチメディアプロセッサ１００を用いるマルチメディアTVまたはWEB TVのようなスタンドアロンシステムを示す。スタンドアロン形態では、マルチメディアプロセッサ１００は、キーボード、マウスおよびジョイスティック等のユーザインタフェースデバイスを介しての制御を可能にするユニバーサル直列バス（USB）ドライバユニット２２２をアクティブにする。スタンドアロン形態では、VLIWプロセッサが、後述のように、マルチメディアプロセッサ１００の他のモジュールに関連するすべてのグラフィックタスクを遂行することに留意されたい。しかしながら、ホストプロセッサ２３０により演算する構成では、幾つかのグラフィックタスクがホストプロセッサにより遂行される。
【００７４】
データ転送スイッチ
図５は、本発明の一実施形態によるデータ転送スイッチの作動を示すフローチャートであるが、本発明の範囲はこれに限定されるものではない。
【００７５】
図５は、データキャッシュ１０８内のデータをメモリコントローラ１２４を介してSDRAM１２８内の一位置に書き込むトランザクションのような、マルチメディアプロセッサ１００内の１つの機能ユニットから他の機能ユニットへの書込みトランザクションにおけるイニシエーションフェーズの一例を説明するバスプロトコルのフローチャートを示すが、本発明はこれに限定されるものではない。かくして、この例では、リクエストバスマスタはデータキャッシュ１０８であり、リクエストバススレーブはメモリコントローラ１２４である。ステップ４０２では、リクエストバスマスタは、レスポンダIDおよび明記できる優先レベルと一緒に、書込みリクエストをリクエストバスアービタ１４０に送る。ステップ４０４では、リクエストバスアービタは、リクエストバススレーブ（この場合には、メモリコントローラ１２４）が書込みリクエストを受け入れる準備ができているか否かを決定する。準備ができている場合には、リクエストバスアービタ１４０は、トランザクションIDと一緒に、認可信号（grant signal）をデータキャッシュ１０８に送り、次に、書込みリクエストをメモリコントローラ１２４に送る。
【００７６】
ステップ４０６では、リクエストバスマスタが、アドレス、コマンド、サイズおよびそれ自体の識別子ID信号を、リクエストバス１１８に供給する。この間、前のリクエスト信号に応答するリクエストバススレーブは、更新されたレディ信号をリクエストバスアービタ１４０に送り、該アービタが付加リクエストを受け入れることができるか否かを表示する。また、リクエストバススレーブは、トランザクション識別子IDをリクエストバスに置く。このトランザクション識別子は、このトランザクションへの入口がスレーブの書込みキュー内にあることを表示するのに使用される。リクエストバスマスタは、該マスタが、バススレーブからのこのリクエストに対応するデータを受けるときにこのトランザクションIDをサンプリングする。
【００７７】
上記書込みトランザクションでは、リクエストバスマスタ例えばデータキャッシュ１０８もデータバスマスタになる。かくして、ステップ４０８では、データキャッシュ１０８は、レシーバ識別子、適用可能な優先レベルおよびトランザクションサイズと一緒に書込みリクエストをデータバスアービタ（この場合には、プロセッサメモリバス１１４）に送る。ステップ４１０では、データバスアービタ１１４は、認可信号をデータバスマスタに送り、次に、リクエスト信号をデータバススレーブ（図示の例では、メモリコントローラ１２４）に送る。
【００７８】
ステップ４１２では、データバスマスタが、４連続サイクルまで、データおよびバイト許可信号をデータバスに供給する。応答時に、データバススレーブは、データをサンプリングする。データバスマスタも、ステップ４０４でリクエストバススレーブから元々受けたトランザクションIDを供給する。最後に、データバスアービタは、データバススレーブにより使用されるトランザクションのサイズを与える。
【００７９】
図６は、データ転送スイッチ１１２を用いる読取りトランザクションを示すフローチャートである。この例では、データキャッシュ１０８はSDRAM１２８で読取り演算を行うと考えられる。かくして、ステップ４２０では、リクエストバスマスタ（この例ではデータキャッシュ１０８）は、レスポンダ識別子ID信号および明記できる優先レベルと一緒に読取りリクエストをリクエストバスアービタ１４０に送る。ステップ４２２では、リクエストバスアービタは、リクエストバススレーブがトランザクションに利用できるか否かを決定する。利用できる場合には、リクエストバスアービタ１４０はトランザクションIDと一緒にリクエストバスマスタに信号を送り、かつ読取りリクエストをリクエストバススレーブ（この例では、メモリコントローラ１２４）に送る。ステップ４２４では、リクエストバスマスタ（データキャッシュ１０８）は、アドレス、サイズ、バイト読取りイネーブル（byte read enable）およびそれ自体の識別信号IDをリクエストバスに供給する。その間に、リクエストバススレーブはリクエストバスアービタ１４０のレディ信号を更新して、より多くのアクセスを受け入れる準備ができているか否かを表示する。リクエストバスマスタはまた、トランザクションID信号をリクエストバスに供給する。このトランザクションIDは、対応するリクエストがバスマスタの読取りキューに記憶されることを表示する。
【００８０】
図７は、読取りトランザクションの応答フェーズを示す。ステップ４２６では、バススレーブ（メモリコントローラ１２４）は、データバスマスタとなる。データバスマスタが読取りデータの準備が整うと、データバスマスタは、リクエスト、明記できる優先レベル信号、およびトランザクションサイズを適当なデータバスアービタ（この例では、内部メモリバスアービタ１４２）に送る。ステップ４２８では、内部メモリバスアービタ１４２が認可信号をデータバスマスタに送り、かつリクエストをデータバススレーブ（データキャッシュ１０８）に送る。ステップ４３０では、データバスマスタ（メモリコントローラ１２４）が、データの４つの連続サイクルを内部データバス１２０に供給する。データバスマスタはまた、リクエストフェーズ中に受けたトランザクション識別信号（トランザクションID）を供給する。最後に、内部バスアービタは、内部バススレーブ（データキャッシュ１０８）がサンプリングするようにトランザクションサイズを制御する。
【００８１】
要約すれば、本発明の一例により、イニシエータ構成要素が、リクエストバスアービタを介して転送をリクエストする。各イニシエータは、４、８、１６、２４、３２バイト転送をリクエストする。しかしながら、トランザクションは、通信サイズの境界上に整合されなくてはならない。各イニシエータは、すべてのサイクルにリクエストを作る。また、書込みイニシエータは、送りフェーズ中にレスポンダからトランザクションIDをサンプリングしなければならず、かつ次に、応答フェーズ中にトランザクションIDを送り出さなくてはならない。
【００８２】
また、読取り演算中に、レスポンダは、リクエストされたデータをいつ送るかを決定するように構成される。読取りレスポンダは送りフェーズ中にイニシエータからトランザクションID信号をサンプリングし、次に、応答フェーズ中に該トランザクションID信号を送り出す。書込み演算中に、レスポンダは、書込みリクエストを受けた後に書込みデータを受け入れる。
【００８３】
表１は、本発明の一実施形態による、リクエストバス１１８の例示信号の定義を示す。表２は、本発明の一実施形態によるデータバス１１４、１２０の例示信号定義を示す。
【００８４】
【表１】
2006185460.tif 000003
【００８５】
【表２】
2006185460.tif 000004
【００８６】
表３〜表９は、データ転送スイッチ１１２を介してデータを転送するときに用いられるコマンド呼出しを示す。
【００８７】
【表３】
2006185460.tif 000005
【００８８】
【表４】
2006185460.tif 000006
【００８９】
【表５】
2006185460.tif 000007
【００９０】
【表６】
2006185460.tif 000008
【００９１】
【表７】
2006185460.tif 000009
【００９２】
【表８】
2006185460.tif 000010
【００９３】
【表９】
2006185460.tif 000011
【００９４】
図８および図９は、本発明の一実施形態によるそれぞれ、リクエストバス接続および内部メモリバス接続中の信号の流れを示す。例えば、図８において、リクエストバスイニシエータは、表３に従って、情報をリクエストバスアービタに送る。このようなリクエスト情報として、リクエストバス読取り／書込みリクエスト、リクエストバスレスポンダ識別信号ID、およびリクエストの優先レベルがある。リクエストバスアービタは、読取り／書込みリクエスト信号を、識別されたレスポンダまたはリクエストバススレーブ（表６）に送り、これに応答して、レスポンダは、レディ表示信号をリクエストバスアービタに送り戻す（表４）。レディ表示信号を受けると、リクエストバスアービタは、バス認可信号をイニシエータに送る（表５）。認可信号がひとたびイニシエータにより認識されると、トランザクション情報は、表１に従って、リクエストバスを介してレスポンダに伝送される。このため、リクエストバストランザクションIDは、処理すべき特定トランザクションに割当てられる。
【００９５】
図９は、内部メモリバス１２０を用いたデータバス接続を示している。かくして、リクエストバス仲裁フェーズ中にひとたびトランザクション情報および識別がセットアップされると、イニシエータおよびレスポンダは、実データを転送する。イニシエータは、リクエスト、サイズ、イニシエータ識別信号ID、表７に定められた信号による優先レベルを含むトランザクション情報を、内部メモリバスアービタ１４２に伝送する。内部メモリバスアービタ１４２は、表８によるサイズ情報に加えて、リクエスト情報をレスポンダに送る。その後、アービタは、認可信号をイニシエータに送り、これに応答して、イニシエータと表２によるレスポンダとの間に実際のデータ転送が行われる。
【００９６】
図１０は、リクエストバス読取り演算のタイミング図を示す。図１１は、直ちに認可が与えられない読取りリクエストについてのタイミング図を示す。図１２は、リクエストバス書込み演算のタイミング図である。書込み演算の場合には、リクエストバストランザクション識別信号IDは、レスポンダにより与えられる。最後に、図１３は、データバスのデータ転送演算のタイミング図を示す。読取りトランザクションは、データバスマスタは読取りレスポンダであり、データバススレーブは読取りイニシエータである。
【００９７】
データ転送スイッチ１１２は、イニシエータによりなされるバックトゥバックリクエストに適合するように構成されている。タイミング図に示すように、リクエストの送出と認可の受領との間の待ち時間は２サイクルである。A0（またはD0）サイクルでは、アービタ１４０はマスタからのリクエストを検出する。しかしながら、A1（またはD1）サイクルでは、バスマスタは、好ましくは、認可を受けるまで主張される、そのリクエスト信号並びにアービタへの他の専用信号を維持する。それはそれとして、アービタ１４０は、これらの信号から、マスタが第２リクエストを作ることを望んでいるか否かを告げる。
【００９８】
バックトゥバックリクエストに適合するように、第２リクエストが係属（pending）していることをマスタがアービタに送信できるように、バスマスタからアービタ１４０への第２セットの専用信号が与えられる。マスタが、その第１リクエストが認可されるのを待つ間に他のリクエストを遂行したい場合には、マスタは、その第２セットの信号を主張する。アービタ１４０が、現サイクルでのマスタへのバックトゥバックを認可する場合には、次のサイクルについての仲裁を遂行するときに、マスタからの第２セットの信号を見なければならない。マスタがその第１リクエストの認可を受けるとき、マスタは、第２セットのリクエスト信号を搬送するラインのすべての情報を、第１セットリクエスト信号を搬送するラインに転送する。これは、アービタが第２リクエストを直ちに認可できない場合に必要になる。
【００９９】
RQBからのレディ信号も、同じ理由で複製される。RQBアービタ１４０がリクエストをスレーブに送るとき、更新されたレディ信号を最も早く見ることができるのは２サイクル後である。A0サイクルでは、そのレディ信号に基づいて、リクエストをスレーブに送ることを決定する。しかしながら、A1サイクルでは、スレーブは、未だリクエストを見ていないため、そのレディ信号を更新していない。従って、アービタ１４０は、このレディ信号からは、スレーブが他のリクエストを受け入れることができるか否かを告げることができない。
【０１００】
スレーブが第２リクエストを受け入れるか否かをアービタが告げることができるように、RQBスレーブからRQBアービタへの第２セットのレディ信号が与えられる。一般に、第１セットのレディ信号は、少なくとも２つのリクエストを受け入れることができるか否かを表示する。アービタ１４０がリクエストを現サイクルでスレーブに送る場合には、アービタは、次のサイクルの仲裁を行うときにスレーブからの第２セットのレディ信号を見なければならない。
【０１０１】
読取りおよび書込みのためのレディ信号があることに留意されたい。RQBスレーブは異なるキュー構造（単一キュー、別の読取りキューおよび書込みキュー等）にすることができる。RQBアービタ１４０は、書込み後に第１または第２読取りレディ信号を見るか否か、および読取り後に第１または第２書込みレディ信号を見るか否かを決定すべく、スレーブのキュー形態を知る。
【０１０２】
図１４は、バックトゥバック読取りリクエストを作るリクエストバスマスタのタイミング図である。図１５は、第２リクエストについての認可が直ちになされないときに、バックトゥバックリクエストを作るプロセッサメモリバスマスタのタイミング図である。最後に、図１６は、書込みリクエストが続く読取りリクエストを受け、リクエストバススレーブが単一化された読取りおよび書込みキューを有するものと仮定するリクエストバススレーブのタイミング図である。
【０１０３】
データストリーマ
データストリーマ１２２の演算を、ここに、更に詳細に説明する。データストリーマは、マルチメディアプロセッサ１００内での所定のバッファ型データ移動に用いられる。特定のシステム構成に従うこれらのデータ移動は、変調する帯域幅条件をもつメモリデバイスまたは入力／出力（I/O）デバイス間で行なうことができる。かくして、マルチメディアプロセッサ１００による物理的メモリは、データストリーマ１２２を用いることによりデータを伝送しかつ受けることができる。これらのメモリユニットは、外部SDRAMメモリ１２８と、データキャッシュ１０８と、固定機能ユニット１０６と、入力／出力（I/O）バッファ３２に接続された入力／出力デバイスと、１次または２次PCIバスコントローラによりアクセスされる任意のホストメモリとを有している。本発明の一実施形態によれば、データストリーマ１２２は、ソフトウェア制御下でのデータ転送作用を引き受けるが、本発明はこれに限定されるものではない。このため、コマンドは、マルチメディアプロセッサ１００のために定められたアドレス空間内の２つの構成要素間のデータ転送演算を開始する。
【０１０４】
図１７は、本発明の一実施形態によるデータストリーマ１２２のブロック図を示すが、本発明はこれに限定されるものではない。データストリーマ１２２は、データ転送スイッチ（DTS）インタフェース７１８を介してデータ転送スイッチ１１２に接続される。データストリーマ１２２内の転送エンジン７０２は、データストリーマ１２２のデータ転送演算を制御するのに使用される。詳細に後述するように、転送エンジン７０２は、マルチメディアプロセッサ１００の異なる構成要素間の同時データ転送を取り扱うパイプライン制御論理を実施する。
【０１０５】
転送エンジンは、ここでデータ転送演算を記述する記述子と呼ぶユーザプログラムを実行することに応答できる。より詳細に後述するように、メモリ転送演算に関する情報を含むデータフィールドとして、例えばデータアドレス、ピッチ、幅、カウントおよび制御情報がある。
【０１０６】
各記述子は、チャネルと呼ばれる、データストリーマ１２２のハードウェアの一部により実行される。チャネルは、チャネル状態メモリ（channel state memory）７０４と呼ばれる所定のメモリ位置の幾つかの状態ビットにより定められる。チャネル状態メモリ７０４は、本発明の一実施形態に従って６４チャネルをサポートする。図１７に示すように、チャネル状態メモリ７０４は転送エンジン７０２に接続されている。任意の所与の時点で、これらの６４チャネルの多くがアクティブでかつサービスを要求する。各アクティブチャネルは記述子により作動する。データストリーマ１２２は、データ転送演算のために１つまたは２つのチャネルを割当てる。これらのチャネルは、データがその元のアドレスからマルチメディアプロセッサ１００内の受け手アドレスに転送されるまで、同じデータ転送演算に割当てられる。より詳細に後述するように、データストリーマ１２２は、入力／出力のための１つのチャネルをメモリ転送に割当て、かつメモリのための２つのチャネルをメモリ転送に割当てる。
【０１０７】
転送エンジン７０２は、データ転送スイッチ１１２に送ることを意図したデータ転送スイッチリクエスト信号を供給するためのデータ転送スイッチインタフェース７１８に接続される。データ転送スイッチインタフェース７１８は、転送エンジン７０２により発生されたデータおよび記述子に対する、出ていく読取りリクエストを取り扱うように構成されている。データ転送スイッチはまた、データ転送スイッチ１１２から、内部先入れ先出しバス７１６の適当なレジスタに入ってくるデータを取り扱う。データ転送スイッチインタフェース７１８はまた、データストリーマ１２２により与えられる、出ていくデータをも取り扱う。
【０１０８】
データストリーマ１２２はまたバッファメモリ７１４を有し、該バッファメモリは、本発明の一実施形態によれば、マルチメディアプロセッサ１００内で物理的に実行される４KB SRAMメモリであるが、本発明の範囲はこれに限定されるものではない。バッファメモリ７１４は、本発明の一実施形態によれば、デュアルポート型ダブルメモリバンク７１４ａ、７１４ｂを有している。６４チャネルを取り扱うデータストリーマの場合には、バッファメモリ７１４は、６４個の小さいバッファ空間に分割できる。
【０１０９】
バッファメモリ７１４のデータアレーは、１ライン当たり８バイトとして物理的に組織され、マスキング技術を用いることにより一度に８バイトアクセスされる。しかしながら、演算中に４KBのメモリが小さいバッファに分割され、各バッファはデータ転送演算に関連して使用される。従って、データ転送演算は、１つまたは２つのチャネルおよび１つのバッファにより定められるデータストリーマ１２２内のデータ経路を使用する。メモリ対メモリ転送の場合には２つのチャネルが使用されるのに対し、I/O対メモリ転送（I/O-to-memory transfer）の場合には、１つのチャネルが使用される。より小さい各バッファのサイズは、データ転送特性により特定されるように変えることができる。
【０１１０】
本発明の一実施形態によれば、データ移動演算は、所定のチャンクサイズに基づいて行われる。「k」の送り手チャンクサイズ（source chunk size）は、受け手チャネル（destination channel）がバッファメモリ７１４の外に「k」バイトだけ移動されたときに、送り手チャネルがデータに対するリクエストをトリガすべきことを意味する。同様に、「k」の受け手チャンクサイズは、送り手チャネルがバッファ内に「k」バイトのデータを転送したときに、受け手チャネルがバッファ７１４の外へのデータ移動をスタートすべきことを意味する。チャンクサイズは複数の３２バイトであるが、本発明の範囲はこれに限定されるものではない。
【０１１１】
バッファメモリ７１４には、８バイトのライン当たり８ビットを保持する有効ビットメモリ（valid-bit memory）が同伴する。有効ビットの値を使用して、特定バイトが有効であるか否かを表示する。有効ビットのセンスは、対応する割当てバッファが満たされる度毎にフリップされる。これにより、チャンクが転送される度毎にバッファメモリを再初期化する必要性がなくなる。しかしながら、有効ビットにおける対応ビットは、バッファがデータ転送経路に割当てられるときは必ず、ゼロに初期化される。
【０１１２】
バッファメモリ７１４は、データストリーマバッファコントローラ７０６に接続されかつ該コントローラにより制御される。バッファコントローラ７０６は転送エンジンおよびDMAコントローラ１３８にも接続され、かつこれらの転送エンジンおよびDMAコントローラから受けた読取りおよび書込みリクエストを取り扱うように構成されている。バッファコントローラ７０６はバッファ状態メモリ７０８に記憶されたデータを使用してそのタスクを達成する。バッファコントローラ７０６は、バッファにもたらされるバイト数および取り出されるバイト数のカウントを維持する。データストリーマバッファコントローラ７０６はまた、パイプライン論理を実行して６４個のバッファを取り扱い、かつバッファメモリ７１４への書込みおよび読取りを管理する。
【０１１３】
バッファ状態メモリ７０８は、データ経路に使用される各バッファに関する状態情報を維持するのに使用される。前述のように、バッファ情報メモリは、６４個の個々のバッファFIFOをサポートする。
【０１１４】
DMAコントローラ１３８はI/Oバッファ３２に接続されている。本発明の一実施形態によれば、DMAコントローラ１３８は、DMAリクエストを行いたいI/Oデバイス間で仲裁（arbitrate）するように作用する。DMAコントローラはまた、データストリーマバッファコントローラに入るDMAリクエストおよびI/Oデバイスに出るデータのバッファリングを行う。 DMAコントローラ１３８に関する仲裁は、DMAコントローラ１３８およびI/Oバス１３２に接続されたラウンドロビン優先アービタ７１０により取り扱われる。アービタ７１０は、物理的入力／出力コントローラPIOC１２６とDMAコントローラとの間にI/Oデータバスを使用することを仲裁する。
【０１１５】
本発明の一実施形態によれば、データストリーマ１２２は、データキャッシュ１０８をアクセス可能なメモリ構成要素として処理し、かつデータキャッシュ１０８への直接読取りおよび書込みができる。より詳細に後述するように、データストリーマ１２２は、チャネル記述子がデータキャッシュ演算を特定するときはいつでも、データキャッシュ内にコヒーレンシーを維持するように構成されている。マルチメディアプロセッサ１００の他の構成要素によるデータキャッシュへの書込みおよび読取りを開始する能力は、CPU１０２、１０４によりそれぞれ使用されるデータが予め知られているデータアプリケーションに適している。かくして、キャッシュヒット率は大幅に改善される。なぜならば、このアプリケーションは、CPU１０２または１０４がデータを使用する前に必要なデータを満たすことができるからである。
【０１１６】
前述のように、本発明の一実施形態によるデータストリーマ１２２は、幾つかのアプリケーションプログラミングインタフェースすなわちAPI、ライブラリコールを用いることにより、ユーザ特定されたソフトウェアプログラムに基づいて演算する。このため、プログラム可能な入力／出力コントローラPIOC１２６は、マルチメディアプロセッサ１００およびデータストリーマ１２２の他の構成要素間のインタフェースとして機能する。従って、最低レベルでデータストリーマ１２２と通信すべく使用されるコマンドは、データストリーマ空間のPIO読取りおよび書込みに変換する。かくして、このようなPIO読取りおよび書込み演算を発生できるあらゆる構成要素は、データストリーマ１２２と通信できる。本発明の一実施形態によれば、これらのブロックとして、固定機能ユニット１０６と、中央処理装置１０２、１０４と、例えばPCIバスを介してマルチメディアプロセッサ１００に接続されたホスト中央処理装置とがある。
【０１１７】
本発明の一実施形態によれば、データストリーマ１２２は、PIO（physical memory: 物理的メモリ）の５１２Kバイトのアドレス空間を占有する。各データストリーマのチャネル状態メモリは、４Kバイトページの６４バイトより少ないバイトを占有する。各データストリーマのチャネル状態メモリは、保護のための別の４Kバイトページ内にあるが、本発明の範囲はこれに限定されるものではない。
【０１１８】
表１０は、種々のデバイスに使用されるアドレス範囲を示す。例えば、位置１８のビットは、転送エンジン７０２とデータストリーマ１２２の他の内部構成要素との間の選択に使用される。他の構成要素として、バッファメモリに使用されるデータRAMと、データRAMを伴う有効RAMビットと、データストリーマバッファコントローラと、DMAコントローラとがある。
【０１１９】
【表１０】
2006185460.tif 000012
【０１２０】
ビット１８が０の値を有するとき、PIOアドレスは転送エンジン７０２に属する。表１１は、転送エンジン７０２の内部演算についてのビット１７：０の解釈法を示す。
【０１２１】
【表１１】
2006185460.tif 000013
【０１２２】
ビット１８が１の値をもつとき、PIOアドレスは、表１２に示すように、バッファ状態メモリに関する、データストリーマバッファコントローラ７０６に属する。
【０１２３】
【表１２】
2006185460.tif 000014
【０１２４】
本発明の一実施形態によるデータストリーマ１２２の各構成要素の内部構造について、以下に詳細に説明する。
【０１２５】
転送エンジン
図１８は、本発明の一実施形態による転送エンジン７０２のブロック図であるが、本発明の範囲はこれに限定されるものではない。転送エンジン７０２の主構成要素は、フェッチ段７４４に接続された演算スケジューラ７４２を有し、フェッチ段７４４は更に発生および更新段７４６に接続され、該発生および更新段７４６は更にライトバック段７４８に接続されている。構成要素７４２〜７４８は、協働して転送エンジンの実行パイプラインを形成している。ラウンドロビン優先スケジューラ７４０を使用して、適当なチャネルおよびこれらの対応チャネル状態メモリを選択する。
【０１２６】
より詳細に後述するように、実施される準備が整ったチャネル（レディチャネル）に関する情報は、本発明の一実施形態に従って２つのチャネル状態メモリバンク７０４（ａ）、７０４（ｂ）に物理的に分割されたチャネル状態メモリ７０４に記憶される。優先スケジューラ７４０は、４つの優先レベルをもつレディチャネルのラウンドロビンスケジューリングを遂行する。このため、最高の優先レベルをもつレディチャネルが、ラウンドロビン構成に採用される。最高優先レベルをもつチャネルが存在しない場合にのみ、より低いレベルをもつチャネルが考えられる。
【０１２７】
優先スケジューラ７４０は、２サイクル毎に１回チャネルを採用し、かつこれを他のスケジューリングレベルで演算スケジューラに供給する。
【０１２８】
演算スケジューラ７４２は、任意の時点で４つの演算を受けかつ一度に１回の各演算を実行するように構成されている。これらの４つの演算として、プログラム可能な入力／出力PIO、プログラム可能な入力／出力コントローラPIOC１２６、データ転送スイッチインタフェース７１８から入ってくる記述子プログラム、データストリーマバッファコントローラ７０６により満たされるチャンクリクエストインタフェースキューからのチャネルに対するチャンクリクエスト、および優先スケジューラ７４０からのレディチャネルがある。
【０１２９】
図２３および図２４に関連して以下に詳述するように、送り手記述子プログラムはバッファメモリ７１４へのデータ転送演算の特定事項（specifics）を定め、受け手記述子プログラムはバッファメモリ７１４から受け手位置へのデータ転送演算の特定事項を定める。また、バッファは、チャネル状態メモリ７０４に記憶された対応する送り手チャネルに対するチャンクリクエストを発行して、バッファが受けることができるバイト数を表示する。演算スケジューラが最高から最低までタスクを採用する優先順序は、PIO演算、入ってくる記述子、チャンクリクエストおよびレディチャネルである。
【０１３０】
演算スケジューラにより選択される演算に関する情報は、フェッチ段７４４に転送される。フェッチ段は、選択された演算を行う必要があるチャネル状態メモリ７０４からのビットを検索するのに使用される。例えば、演算スケジューラがレディチャネルを採用する場合には、チャネルのチャンクカウントビットおよびバーストサイズは、データ転送演算のために発生されなくてはならないリクエストの数を決定すべく読取られなくてはならない。
【０１３１】
発生および更新段７４６は、フェッチ段７４４から派生されるデータ転送演算のために発生されなくてはならないリクエストの数に等しい回数だけ実行される。例えば、受け手チャネルの転送バーストサイズが４である場合には、発生および更新段７４６は４サイクルだけ実行され、１サイクル当たり１つのリクエストを発生する。他の例として、演算がチャネル状態メモリ７０４へのPIO書込み演算である場合には、発生および更新段が１回実行される。より詳細に後述するように、発生および更新段７４６により発生される読取り／書込みリクエストが、データ転送スイッチインタフェース７１８のリクエストキューRQQ７６４に付加される。
【０１３２】
チャネル状態メモリ７０４は、転送エンジン７０２により実行される殆どの演算後に更新する必要がある。例えば、チャネルが、発生および更新段７４６でのリクエスト発生を完了すると、チャンク数が減少され、かつチャネル状態メモリ７０４にライトバックされる。ライトバック段（write back stage）７４８はまた、リセット信号をチャネル状態メモリ７０４に送り、インターバースト遅延カウンタを、表１３に示すチャネル状態メモリ構造を参照して以下に説明する最小インターバースト遅延値で初期化する。
【０１３３】
チャネル状態メモリ
データストリーマ１２２の６４チャネルの各々に関する情報は、チャネル状態メモリ７０４に記憶される。データ移動演算の前および演算中に、データストリーマ１２２は、そのデータ移動タスクを達成するためのチャネル状態メモリ７０４のデータを使用する。表１３〜表１９は、チャネル状態メモリを形成するフィールドを示す。また、これらの表は、種々のフィールドのビット位置、およびチャネルが本発明の一実施形態に従ってデータ転送に割当てられるときにフィールドを初期化すべき値を示す。
【０１３４】
チャネル状態メモリ７０４は、本発明の一実施形態に従って、２つの位置７０４（ａ）、７０４（ｂ）に分割される。チャネル状態メモリ７０４（ａ）は、０ｘ００、０ｘ０８、０ｘ１０および０ｘ１８と呼ばれる４つの６４ビット値を有している。チャネル状態メモリ７０４（ｂ）は、位置０ｘ００、０ｘ０８および０ｘ１０での３つの６４ビット値を有している。
【０１３５】
【表１３】
2006185460.tif 000015
【０１３６】
【表１４】
2006185460.tif 000016
【０１３７】
【表１５】
2006185460.tif 000017
【０１３８】
【表１６】
2006185460.tif 000018
【０１３９】
【表１７】
2006185460.tif 000019
【０１４０】
【表１８】
2006185460.tif 000020
【０１４１】
【表１９】
2006185460.tif 000021
【０１４２】
チャネルにより達成されるデータの帯域幅は、数ある中で、次の４つのパラメータ、すなわち内部チャネル優先、最小インターバースト遅延、転送バーストサイズ、およびデータ転送スイッチ優先に基づいている。経路が割当てられると、これらの４つのパラメータはシステムにより考察される。チャネル特徴はまた、システムが初期化する３つのパラメータを有している。これらは、ベースアドレス、より詳細に後述するキャッシュウェイ置換マスク、および記述子フェッチモードビットである。
【０１４３】
チャネル優先：データストリーマ１２２のハードウェアは、４つの内部チャネル優先レベル（０が最高、３が最低）をサポートする。前述のように、ハードウェアは、優先順序によりラウンドロビン態様でチャネルをスケジュールする。メモリ−メモリ転送に関連するチャネルについては、同じ優先を両チャネルに割当てて、等ペースで移動する両側にデータ転送を維持することが好ましい。好ましくは、高帯域幅I/Oデバイスでフックアップされるチャネルが低レベル優先でセットアップされ、低帯域幅I/Oデバイスでフックアップされるチャネルが高レベル優先を用いる。このようなチャネルはスケジューリングプールを単に結合するものであるが、そのときに、チャネルは殆ど瞬時にスケジュールおよびサービスされるため、より高い帯域幅およびより高い優先チャネルによる許容できないサイクル数に注意する必要はない。
【０１４４】
最小インターバースト遅延：このパラメータは、任意のチャネルがサービスされた後、スケジューリングプールを再結合できる前に通らなくてはならない最小のサイクル数に関するものである。これは、８サイクルの倍数である。このパラメータは、或る期間大きいサービス時間（次のパラグラフで説明する）を有する高優先チャネル（単一または複数）を有効にブロックするのに使用され、低優先チャネルをスケジュールすることができる。
【０１４５】
転送バーストサイズ：ひとたびチャネルがスケジュールされたならば、転送バーストサイズパラメータは、チャネルが再びスケジュールされなくなる前に、データ転送スイッチ上に発生できる実リクエストの数を表示する。送り手チャネルについては、これは、バッファにもたらされるべきデータに対して発生するリクエスト数を表示する。このパラメータの値が大きいほど、特定チャネルのサービス時間が長くなる。各リクエストは、最大３２バイトを請求しかつ一度に３２バイトのデータを送ることができる。チャネルは、これがそのバーストサイズカウントを使い切るまでスケジュールされた発生リクエストを持続しかつ記述子の休止ビットに遭遇し、これ以上の記述子をメモリからフェッチする必要はない。
【０１４６】
DTS優先：リクエストバスアービタまたはデータ転送スイッチのメモリデータバスアービタに対する各リクエストには、リクエスタ（requestor）による優先が伴う。両アービタは４つの優先レベルをサポートし、チャネルによる転送に使用される優先は、チャネル状態に予めプログラムされる。SDRAMページがヒットするためには、メモリコントローラキュー内で隣接する同じチャネルから多数のリクエストを取得することが重要であると考えられるときには、より高い優先が使用される（０が最高優先、３が最低優先）。
【０１４７】
ベースアドレス、ウェイマスク、および記述子フェッチモード：メモリ−メモリ移動については、（正解をもつ）データ経路構造の入力は任意である。入力されない場合には、システムは、種々のパラメータに対して幾つかのデフォルト値をとる。これらのデフォルト値が下記の表に示されている。
【０１４８】
メモリ−I/OまたはI/O−メモリの経路をリクエストするとき、システムはデータ経路構造を形成する。このことは、どの転送がI/O転送であり、従ってチャネル割当てを必要としないのかをシステムに表示するブール（booleans）の設定を可能にする。メモリ転送へのI/Oについては、バッファサイズおよびチャンクサイズ等のパラメータは、メモリ−メモリ転送についてのものよりも一層適切なものである。なぜならば、転送パラメータをI/Oデバイス帯域幅条件に一致させることが重要だからである。
【０１４９】
本発明の一実施形態によれば、データ経路は、データ転送演算に対するリクエストに応答してリクエストされる。ソフトウェア制御に基いたシステムでは、カーネルは、セットされたパラメータの実値を埋めるデータ経路構造およびアプリケーションがidを開始するのに使用するチャネルのidを返却する。経路がI/Oデバイスを含む場合には、バッファidも返却される。このバッファidは、アプリケーションにより当該I/Oデバイスについてのデバイスドライバ呼出しへ通知される。デバイスドライバは、この値を使用してI/Oデバイスを準備させ、当該データストリーマバッファへのデータ転送をスタートさせる。ユーザアプリケーションが、得られたDS経路資源の形式（パラメータ）によっては満足されない場合には、経路を閉じて、後で再びトライすることができる。
【０１５０】
記述子プログラム
データ転送は、チャネル状態メモリフィールドにフォーマット１記述子およびフォーマット２記述子のように特定されている２形式の記述子に基づいている。本発明の一実施形態によれば、フォーマット１記述子は、多くの３Ｄグラフィックアプリケーションおよびビデオ画像アプリケーションの性質に基づいて定められる。
【０１５１】
一般に、図２２に示すように、画素情報は、ディスプレイすることを意図した画素と同じ構成で散乱された位置に記憶される。ときには、「ｎ」個のデータピースすなわち画素が、メモリ空間の「スタート送り手データ位置＝ｘ」でスタートするn個の位置から、「スタート受け手データ位置＝y」で始まる１つの隣接位置内に一緒に収集されるデータ収集演算を続行することが望まれる。収集されたデータの各ピースは１０バイト幅であり、かつ次のデータから２２バイト（ピッチ）で分離される。図２２に示すような転送をできるようにするには、２つの別々の記述子、すなわち、１つは送り手からバッファメモリ７１４（図１７）への転送を取り扱う送り手チャネル用記述子、他はバッファメモリから受け手への転送を取り扱う受け手チャネル用記述子をセットアップする必要がある。
【０１５２】
図２３は、本発明の一実施形態によるフォーマット１記述子用データ構造２２０を示す。記述子２２０のサイズは２つの８バイト語からなる１６バイトである。下記表は、記述子の異なるフィールド、およびデータ転送演算中に各フィールドが如何に用いられるかを記述する。
【０１５３】
１．次の記述子：最初の３２ビットは、他の記述子のアドレスを保持する。これにより、幾つかの記述子を複雑な転送パターンまたは単一の記述子を用いては記述されない転送パターンに一体に連鎖させることができる。
【０１５４】
２．記述子制御フィールド：このフィールドの１６ビットが次のように解釈される。
【０１５５】
［１５：１４］−未使用
［１３］−ホストcpuに割り込み（この記述子の完了時）
［１２］−マルチメディアプロセッサ１００のcpuに割り込み（この記述子の完了時）
［１１：９］−ソフトウェア使用のためのリザーブ
［８］−ノーモア記述子（これがこの連鎖の最後の記述子であるときにセットされる）
［７：４］−データフェッチモード（この記述子によりフェッチされるか、送られるすべてのデータ）
［７］：キャッシュモード０＝＞コヒーレント、１＝＞非コヒーレント
［６］：１＝＞ウェイマスク使用、０＝＞ウェイマスク非使用
［５］：１＝＞データキャッシュ内の割当て、０＝＞データキャッシュ内の非割当て
［４］：１＝＞PIO空間内のデータ、０＝＞not
［３］−１にセットした場合には、プリフェッチ禁止
［２］−１へのセットの記述子の端部での停止
［１：０］−記述子フォーマット形式
００：フォーマット１
０１：フォーマット２
１０：制御記述子
内または外に転送されるデータの存在をデータキャッシュがチェックしたか否かを、コヒーレンシービットが表示することに留意されたい。本発明の１つの好ましい実施形態によれば、このビットは、データがCPU１０２または１０４によりキャッシュ内にもたらされていないことをシステムが決定していなければターンオフされないことが望まれる。このビットをターンオフすると、キャッシュ１０８のバイパスによりパフォーマンスが向上する。なぜならば、ビットのターンオフにより、キャッシュへのロードが低減し、かつ読取りまたは書込みの待ち時間が短縮されるからである（キャッシュ内の非割当てを選択する場合には、データキャッシュキューの充満に基づいて２〜１８サイクル）。
【０１５６】
ウェイマスクは、データキャッシュ１０８が多数のウェイを有する環境で使用される。例えば、本発明の一実施形態によれば、データキャッシュ１０８は４つのウェイを有し、各ウェイは４kバイトを有している。本発明の範疇内では、データキャッシュの各ウェイは、特定のデータ形式を記憶すべく構成された別のメモリ空間として定められる。「ウェイマスク使用」のビットは、ウェイマスクを、データキャッシュへの現在の記述子により開始されるすべてのトランザクションに使用すべきであるか否かを単に表示する。
【０１５７】
「割当て」、「非割当て」ビットは、コヒーレントビットがセットされる場合にのみ適合する。基本的に、非割当ては、ユーザが、データキャッシュがもはや存在しない場合に、コヒーレンシーの理由からデータキャッシュのチェックを望むときで、データがデータキャッシュに終了することを望まないときには有効である。割当ては、cpuが計算を開始する前に、ユーザがメモリからの或るデータをデータキャッシュに予めロードすることを望むときにセットされなくてはならない。
【０１５８】
表２０は、データフェッチモードに関する記述子制御領域のビット７：４のコヒーレントと割当てビットの種々の値に対してとるべきアクションを示す。
【０１５９】
【表２０】
2006185460.tif 000022
【０１６０】
記述子の説明に戻ると、PIOビットは、データをPIO（Programmed I/O: プログラムされたI/O）アドレス空間から（または該空間へと）転送するときに必要とされる。例えば、データストリーマ１２２は、データストリーマバッファメモリ（PIOアドレス空間内にあるバッファメモリ）を読取るのに使用される。
【０１６１】
ユーザレベルからのデータストリーマ１２２と同期させるための停止ビット（halt bit）が使用される。セットされると、データストリーマ１２２は、これがこの記述子により表示されたすべてのデータの転送を行ったときにチャネルを停止させる。データストリーマはまた、「ノーモア記述子（no more descriptors）」ビットがセットされると停止する。
【０１６２】
データストリーマが記述子をフェッチし、かつその実行を開始すると、データストリーマは、次の記述子のプリフェッチを直ちに開始する。ユーザは、「プリフェッチ禁止（prefetch inhibit）」ビットをセッティングすることによりこのプリフェッチ処理を禁止する。これは、停止ビットもセットされるときにのみ有効である。すなわち、まったく停止しない場合には、プリフェッチの禁止を試みることは無意味である。
【０１６３】
下記リストに示すように、データフェッチモードビットのすべての組合せが有効な訳ではない。例えば、「割当て（allocate）」および「ウェイマスク使用（use way mask）」は、データキャッシュがターゲットであるときに意味を有するに過ぎない。なぜならば、データキャッシュは、PIO＝１および（他のビット）＝１が使用されないPIOアクセスの任意の組合せを受け入れないからである。
【０１６４】
コヒーレント  ウェイマスク使用  割当て    PIO空間
０              ０              ０      １  有効PIO
１              −              −      １  無効
−              １              −      １  無効
−              −              １      １  無効
０              ０              ０      ０  有効−非コヒーレント
０              １              −      −  無効
０              −              １      −  無効
１              ０              ０      ０有効−コヒーレント非割当て
１              ０              １      ０有効−コヒーレント割当て
１              １              ０      ０無効
１              １              １      ０有効  コヒーレント
３．カウント：これは、この記述子を用いて転送されるデータピース数を示す。
【０１６５】
４．幅：これは、所与の位置からピックアップされるバイト数である。
【０１６６】
５．ピッチ：これは、次のバイトに転送される最終バイトとの間のオフセット距離である。受け手は連続しており、従ってピッチは０である。ピッチは、収集されたデータ位置がメモリを通って後方移動できるようにする符号付きの値である。
【０１６７】
６．データ位置アドレス：これは、この記述子のための第１バイトが配置されるアドレスである。例１において、送り手側では、これは「x」であり、受け転送では「y」である。チャネル１により使用されるすべてのデータ位置アドレスは、最初にベースアドレスに付加される。このベースアドレス値は、チャネルの状態メモリに保持される。チャネルが、ds open patch（）コールにより初期化されるとき、ベースアドレス値はゼロにセットされる。この値は、制御記述子（後述）を用いてユーザが変えることができる。
【０１６８】
下記表２１は、SDRAM１２８からデータキャッシュ１０８内へのデータ転送すなわち、キャッシュプリロード演算について、送り手および受け手転送用記述子をどのように構成するかを示す。
【０１６９】
送り手での制御語は、コヒーレントデータ演算を表示するが、割当ては行わない。ノーモア記述子が存在しないので停止ビットはセットされず、このデータが転送されると、チャネルは自動的に停止する。「ノーモア記述子」ビットはセットされなくてはならない。
【０１７０】
【表２１】
2006185460.tif 000023
【０１７１】
表２２の受け手記述子のための制御語は、キャッシュミス時にキャッシュに割当てるコヒーレント基準（coherent reference）を作ることにより、データキャッシュがターゲットであることを示す。送り手の場合には停止ビットはセットされない。なぜならば、この転送がなされると次の記述子フィールドがゼロになって、チャネルが自動的に停止するからである。また、「ノーモア記述子」ビットが、送り手の場合についてセットされる。
【０１７２】
【表２２】
2006185460.tif 000024
【０１７３】
フォーマット２記述子
図２４は、本発明の一実施形態によるフォーマット２記述子に対応するデータ構造２４０を示す。フォーマット２記述子によるデータ移動演算は、多くの点で、フォーマット１記述子と同様である。しかしながら、フォーマット１記述子構造とは異なる１つの点は、ユニークなデータ位置アドレスが、転送すべきことを意図した各データブロックに供給されることである。また、フォーマット２記述子によるデータ構造はピッチフィールドを用いていない。フォーマット２記述子は、幅が同一（但し、或る均一ピッチで分離されてはいない）である幾つかのデータピースの転送を望むときにデータ転送演算に用いられる。
【０１７４】
従って、フォーマット２記述子の第１フィールドは、次の記述子アドレスを含んでいる。カウントフィールドは、転送すべきことを意図したデータピースの番号を含んでいる。図２３に関連して述べたように、制御フィールド仕様はフォーマット１記述子の仕様と同じである。幅フィールドは、転送すべきことを意図したデータピースの幅を特定する。本発明の一実施形態によれば、フォーマット２記述子は、コヒーレントアクセスについては１６バイト境界に、非コヒーレントアクセスについては８バイト境界に整合される。フォーマット２記述子の長さは、１６バイトから、１６より大きい４バイトの倍数まで変化する。
【０１７５】
データ転送スイッチインタフェース
図１９は、本発明の一実施形態によるデータ転送スイッチ（data transfer switch: DTS）のブロック図であるが、本発明の範囲はこれに限定されるものではない。データ転送スイッチインタフェースは、データ転送スイッチ１１２（図１）を介してデータを転送するマルチメディアプロセッサ１００のすべての構成要素に用いられている。
【０１７６】
DTSインタフェース７１８は、データ転送スイッチ１１２のリクエストバス１１８に接続されたバスリクエスタ７６０を有している。バスリクエスタ７６０は、リクエスト信号をリクエストバスキュー（request bus queue: RQQ）７６４に供給すべく構成されたリクエストイッシャ７６２を有している。リクエストバスキュー７６４は、ファーストカムファーストサーブドベースでデータおよび記述子リクエストを保持する先入れ先出し（FIFO）バッファである。
【０１７７】
リクエストバスキュー７６４の他の入力ポートは、転送エンジン７０２により発生された読取り／書込みリクエストを、発生および更新段７４６を介して受けるように構成されている。読取りリクエストは、データおよびチャネル記述子に対するリクエストを有している。書込みリクエストは、送り出されるデータに対するリクエストを有している。
【０１７８】
イッシャ７６２は、リクエスト信号を、データ転送スイッチのリクエストバスアービタ１４０に送るように構成されている。認識すると、バスアービタ７６０は、先入れ先出しリクエストキュー７６４の先頭に入れられたリクエストを送る。データ転送スイッチのリクエストバスアービタ１４０により認識されないリクエストは、数サイクル後に、リクエストキュー７６４から除去され、かつその最後尾に再び入れられる。かくして、データ転送演算は、特定バススレーブまたはレスポンダが準備されないときの不合理的遅延を回避する。前述のように、異なるレスポンダに対するリクエストは異なるチャネルに対応する。かくして、キューからリクエストを除去するメカニズムは、本発明の一実施形態により、１つのチャネルが他のすべてのチャネルを前進させないように保持すべく設計されている。
【０１７９】
データ転送スイッチインタフェースはまた、プロセッサメモリバス（PMB）レシーブFIFOバッファ７７６と、PMBリオーダテーブル７７８と、内部メモリバス（internal memory bus: IMB）レシーブFIFO７７４と、IMBリオーダテーブル７８０とを有するレシーブエンジン７７２を有している。PMBレシーブFIFOバッファ７７６の出力ポートは、データスイッチバッファコントローラ（data switch buffer controller: DSBC）７０６および転送エンジン７０２の演算スケジューラ７４２に接続されている。同様に、IMBレシーブFIFO７７４の出力ポートは、データスイッチバッファコントローラ７０６および転送エンジン７０２の演算スケジューラ７４２に接続される。イッシャ７６２の出力ポートは、プロセッサメモリバス（PMB）の入力ポートおよび内部メモリバス（IMP）リオーダテーブル７８０の入力ポートに接続される。PMBリオーダテーブル７７８の他の入力ポートは、データバス１１４からデータを受けるように構成されている。同様に、IMBリオーダテーブル７８０の他の入力ポートは、データバス１２０からデータを受けるように構成されている。
【０１８０】
プロセッサメモリバス（PMB）リオーダテーブル７７８または内部メモリバス（IMB）リオーダテーブル７８０は、それぞれ、依然として突出している読取りリクエストに対応するインデックスを記憶する。これらのインデックスとして、読取りリクエストに対して発生されるトランザクション識別信号（ID）と、各読取りリクエストに割当てられる対応バッファ識別信号（ID）と、データを受けたときに、データを処理するのに必要な対応バッファアドレスおよび他の情報とがある。
【０１８１】
先入れ先出しバッファ７７６、７７４は、戻されたデータが、バッファデータが戻される状況でのデータストリーマバッファコントローラ７０６、または記述子がメモリ位置から検索される状況での転送エンジン７０２により受け入れられるまで、前記戻されたデータを保持するように構成されている。
【０１８２】
イッシャ７６２は、テーブル７７８、７８０が充満されるまで停止する。これにより、転送エンジン７０２のパイプが停止される。本発明の一実施形態によれば、各テーブル７７８、７８０は、１バス当たり８個の突出リクエストをサポートする。戻りデータのバッファアドレスを記憶するテーブルを使用することにより、故障データ（out-of-order data）の戻りを取り扱うことができる。データストリーマバッファコントローラに関連してより詳細に説明するように、バッファメモリ７１４に記憶される各バイトとして、バッファコントローラの対応論理に関連して故障データの戻りが正しく取り扱われることを確実にする有効ビット表示信号がある。
【０１８３】
データ転送スイッチインタフェース７１８はまた、プロセッサメモリバス（PMB）伝送エンジン７６６を備えた伝送エンジン（transmit engines）７８２と、内部メモリバス（IMB）伝送エンジン７７０とを有し、これらの両エンジンは、先入れ先出し（FIFO）バッファである。バッファ７６８は、それぞれ伝送エンジン７６６、７７０からリクエスト信号を受けて、データバスリクエストをそれぞれデータバスアービタ１４０、１４２に送るように構成されている。各伝送エンジンはまた、データストリーマバッファコントローラ７０６からデータを受けて、対応データバスに伝送するようにも構成される。
【０１８４】
演算中、リクエスト−リクエストバス１１８が読取りデータに使用されるときは、イッシャ７６２は、これがリクエストバスアービタ１４０からの信号を受けると、アドレスをリクエストバス１１８に供給する。イッシャ７６２はまた、それぞれリオーダテーブル７７８、７８０に登録し、突出したリクエスト（outstanding requests）のトラックを維持する。リクエストが書込みデータに使用される場合には、イッシャは、アドレスをリクエストバス１１８に出力し、かつリクエストを、データストリーマバッファコントローラ７０６により使用するための内部FIFOバッファ７１６（図１７）をキューする。バッファコントローラ７０６は、このキューを試験し、かつデータストリーマバッファコントローラ７０６に関連してより詳細に後述するように、書込みデータに対するリクエストを行う。
【０１８５】
図２０は、本発明の一実施形態によるデータストリーマバッファコントローラ７０６のブロック図であるが、本発明の範囲はこれに限定されるものではない。データストリーマバッファコントローラ７０６は、バッファメモリ７１４を管理し、かつ転送エンジン７０２により発生された読取り／書込みリクエストおよびＦＩＧ．１のDMAコントローラ１３８およびPIOコントローラ１２６により発生されたリクエストを取り扱う。
【０１８６】
データストリーマバッファコントローラ７０６は、バッファ関連機能を処理する２つのパイプを有している。データストリーマバッファコントローラ７０６の第１処理パイプは、プロセッサメモリバス（PMB）パイプと呼ばれ、第２パイプは内部メモリバス（IMB）パイプと呼ばれる。各パイプの演算は、PMBパイプがプロセッサメモリバス１１４に追い出される転送エンジンのデータリクエストを取り扱いかつIMBパイプが内部メモリバス１２０に追い出される転送エンジンのデータリクエストを取り扱う点を除いて、同じである。
【０１８７】
図２０に示すように、各パイプは３つの別々のデータ入力を受けるように構成されている。このため、データストリーマバッファコントローラ７０６はプロセッサメモリバスPMBパイプ演算スケジューラ８０２を有し、該スケジューラ８０２は、次の３つの入力信号を受けるように構成されている。すなわち、３つの信号とは、（１）プログラム可能な入力／出力（PIO）コントローラ１２６からのすべてのリクエスト信号、（２）プロセッサメモリバス（PMB）およびデータ転送スイッチ７１８（図１９）のレシーブFIFOバッファ７７６から受けるデータ信号（これらのデータ信号は、ひとたび適当なチャンクサイズが特定チャネルのバッファメモリ７１４内に充満されると検索されるようにバッファメモリ７１４に書込まれることが意図されている）、および（３）特定チャネルのバッファメモリ７１４から適当なデータを検索するための転送エンジン読取り信号である。検索されたデータは、次に、ＦＩＧ．１および図１９に示すように、データストリーマ１２２のデータ転送スイッチインタフェース７１８を介して受け手に送られる。
【０１８８】
演算スケジューラ８０２は、実行順序を、上記入ってくる演算リクエストに割当てる。本発明の一実施形態によれば、プログラム可能な入力／出力（PIO）演算が最高優先で与えられ、次に、バッファメモリ７１４からデータを検索するためのバッファ読取り演算が続き、最低優先が、バッファメモリ７１４にデータを書込むためのバッファ書込み演算に与えられる。かくして、読取り演算は、図１９に関連して説明した適当なFIFOバッファの書込み演算をバイパスする。データが受け手メモリをターゲットとするか、受け手メモリから到達した場合には、データは、バッファメモリ７１４から送られる前、またはバッファメモリ７１４に書込まれる前に整合される必要があることに留意されたい。
【０１８９】
演算スケジューラ８０２の出力ポートは、フェッチ段８０４の入力ポートに接続される。フェッチ段８０４の他の入力ポートは、バッファ状態メモリ７０８の出力ポートに接続される。
【０１９０】
演算スケジューラ８０２がひとたび次の演算を決定すると、フェッチ段８０４は、バッファ状態メモリ７０８からの適当なバッファメモリ情報を検索して、バッファメモリ７１４の一部である対応チャネルバッファへの書込みまたは読取りを行なう。
【０１９１】
フェッチ段８０４の出力ポートはメモリパイプ段８０６に接続され、該メモリパイプ段８０６は、バッファメモリ７１４への書込みおよび読取りリクエストを処理するように構成されている。メモリパイプ段８０６はバッファ状態メモリ７０８に接続され、データ転送演算中に１つまたは２つのチャネルに割当てられる対応バッファに関するバッファ状態メモリレジスタを更新する。メモリパイプ段８０６もバッファメモリ７１４に接続されて、データをバッファメモリに書込みかつバッファメモリからデータを受け入れる。メモリパイプ段８０６の出力ポートはプロセッサメモリバス（PMB）伝送エンジン７６６に接続されて、バッファメモリ７１４から検索されたデータをデータ転送スイッチ７１８に送り、データ転送スイッチ１１２を介して受け手アドレスへと更に伝送する。メモリパイプ段８０６の他の出力ポートはプログラム可能な入力／出力（PIO）コントローラ１２６に接続され、バッファメモリから検索されたデータを、マルチメディアプロセッサ１００に接続された受け手入力／出力デバイスへと送る。
【０１９２】
データストリーマバッファコントローラ７０６はまた、内部メモリバス（IMB）パイプ演算スケジューラ８０８を有し、該スケジューラ８０８は次の３つの入力信号を受けるように構成されている。すなわち、これらの入力信号とは、（１）DMAコントローラ７１２からのすべてのリクエスト信号、（２）内部メモリバス（IMB）およびデータ転送スイッチ７１８（図１９）のレシーブFIFOバッファ７７４から受けるデータ信号（これらのデータ信号は、ひとたび適当なチャンクサイズが特定チャネルのバッファメモリ７１４内に充満されると検索されるようにバッファメモリ７１４に書込まれることが意図されている）、および（３）特定チャネルのバッファメモリ７１４から適当なデータを検索するための転送エンジン読取り信号である。検索されたデータは、次に、ＦＩＧ．１および図１９に示すように、データストリーマ１２２のデータ転送スイッチインタフェース７１８を介して受け手に送られる。
【０１９３】
演算スケジューラ８０８は、実行順序を、上記入ってくる演算リクエストに割当てる。本発明の一実施形態によれば、DMAが最高優先で与えられ、次に、バッファメモリ７１４からデータを検索するためのバッファ読取り演算が続き、最低優先が、バッファメモリ７１４にデータを書込むためのバッファ書込み演算に与えられる。かくして、読取り演算は、図１９に関連して説明した適当なFIFOバッファの書込み演算をバイパスする。データが受け手メモリをターゲットとするか、受け手メモリから到達した場合には、データは、バッファメモリ７１４から送られる前、またはバッファメモリ７１４に書込まれる前に整合される必要があることに留意されたい。
【０１９４】
演算スケジューラ８０８の出力ポートは、フェッチ段８１０の入力ポートに接続される。フェッチ段８１０の他の入力ポートは、バッファ状態メモリ７０８の出力ポートに接続される。演算スケジューラ８０２がひとたび次の演算を決定すると、フェッチ段８０４は、バッファ状態メモリ７０８からの適当なバッファメモリ情報を検索して、バッファメモリ７１４の一部である対応チャネルバッファへの書込みまたは読取りを行なう。
【０１９５】
フェッチ段８１０の出力ポートはメモリパイプ段８１２に接続され、該メモリパイプ段８１２は、バッファメモリ７１４への書込みおよび読取りリクエストを処理するように構成されている。メモリパイプ段８１２はバッファ状態メモリ７０８の入力ポートに接続され、データ転送演算中に１つまたは２つのチャネルに割当てられる対応バッファに関するバッファ状態メモリレジスタを更新する。メモリパイプ段８１２はバッファメモリ７１４に接続されて、データをバッファメモリに書込みかつバッファメモリからデータを受ける。メモリパイプ段８１２の出力ポートは内部メモリバス（IMB）伝送エンジン７７０に接続されて、バッファメモリ７１４から検索されたデータをデータ転送スイッチ７１８に送り、データ転送スイッチ１１２を介して受け手アドレスへと更に伝送する。メモリパイプ段８１２の他の出力ポートはDMAコントローラ７１２に接続され、バッファメモリ７１４から検索されたデータを、マルチメディアプロセッサ１００に接続された受け手入力／出力デバイスへと送る。
【０１９６】
バッファメモリ７１４はデュアルポート型であるので、上記各パイプは、接続することなく両バッファメモリバンク７１４ａ、７１４ｂにアクセスできる。前述のように、本発明の一実施形態によれば、バッファメモリ７１４は４KB SRAMメモリである。データアレーは、１ライン当たり８バイトとして組織化されかつ一度に８バイトアクセスされる。複数の小さいバッファ部分がバッファメモリ７１４内に分割されており、ここで、各バッファ部分は、データ転送演算中に特定チャネルに割当てられる。
【０１９７】
バッファメモリ７１４には、バッファメモリ内に８バイトのライン当たり８ビットを保持する有効ビットメモリが付随する。有効ビットの値は、特定バイトが有効であるか否かを表示するのに使用される。有効ビットは、対応する割当てバッファが充満されるたびごとにフリップされる。これにより、割当てられたバッファ部分を、これがデータ転送演算中に使用されるたびごとに再初期化する必要をなくすことができる。しかしながら、バッファが経路に割当てられるたびごとに、有効ビットアレーの対応ビットはゼロに初期化されなくてはならない。
【０１９８】
バッファ状態メモリ
前述のように、バッファ状態メモリ７０８は、これがサポートする６４個の各バッファの状態を保持する。各バッファ状態は、バッファ状態メモリ１（BSM1）およびバッファ状態メモリ２（BSM2）と呼ばれる２つの６４ビットサブフィールドに分割される１２８個のビットフィールドを有している。テーブル２３、２４は、バッファ状態メモリのビットおよびフィールドを記述する。
【０１９９】
【表２３】
2006185460.tif 000025
【０２００】
【表２４】
2006185460.tif 000026
【０２０１】
DMA CONTROLLER
図２１は本発明の一実施形態によるDMAコントローラ１３８を示すが、本発明の範囲はこれに限定されるものではない。前述のように、DMAコントローラ１３８は、入力／出力バス１３２およびデータストリーマバッファコントローラ７０６に接続されている。
【０２０２】
優先アービタ２０２は、Ｉ／Ｏバス１３２に接続された１つ以上のＩ／Ｏデバイスから直接メモリアクセスDMAを受けるように構成されている。
【０２０３】
入ってくるDMAリクエストバッファ２０４は、I/Oバスに接続されかつリクエストが認識されたI/Oデバイスから関連リクエストを受けるように構成されている。各I/Oデバイスは、所望のバッファメモリ、バイトの数およびバッファへの入力またはバッファからの出力のような転送形式のバッファ表示を有するリクエストデータを特定化する。各リクエストは、入ってくるDMAリクエスト２０４のバッファに記憶されて、DMAリクエストキューを形成する。DMAリクエストバッファ２０４の出力ポートは、図２０に関連して説明したように、データストリーマバッファコントローラ７０６に接続される。
【０２０４】
入ってくるDMAデータバッファ２０６はまた、I/Oバス１３２に接続され、かつリクエストが認識されておりかつリクエストデータが入ってくるDMAリクエストバッファ２０４に供給されているI/Oデバイスにより送られるべきことを意図したデータを受けるように構成されている。DMAデータバッファ２０６の出力ポートは、図２０に関連して説明したように、データストリーマバッファコントローラ７０６に接続されている。
【０２０５】
出ていくDMAデータバッファ２０８は、また、I/Oバス１３２にも接続されておりかつI/Oデバイスに送るべきことを意図したデータを伝送するように構成されている。出ていくDMAデータバッファ２０８は、図２０に関連して説明したように、データストリーマバッファコントローラ７０６からデータを受けるように構成されている。
【０２０６】
かくして、演算中に、DMAコントローラ１３８は２つの重要な機能を遂行する。第１に、DMAコントローラ１３８は、DMAリクエストを行うことを意図したI/Oデバイス間の仲裁を行う。第２に、DMAコントローラ１３８は、データストリーマバッファコントローラに送られるDMAリクエストおよびデータ、およびI/Oバス１３２を介してI/Oデバイスに送られるデータに対するバッファリングを行う。DMAリクエストを行うI/Oデバイスは、第１に、優先アービタ２０２がI/Oバスにアクセスしてその意図したデータを転送することをリクエストする。アービタ２０２は、異なるI/Oデバイス間の仲裁を行うことをI/Oデバイスによって特定されるDMA優先値を用いる。DMAコントローラ１３８は、I/Oデバイスから送られるデータについてI/Oデバイスからくるデータに高度の優先を割当てる。デバイスの優先に従って、矛盾するリクエストが仲裁される。
【０２０７】
好ましくは、DMAコントローラ１３８に対するデバイスリクエストは、完全なパイプライン型の、１サイクル当たりの速度でサービスされる。アービタ２０２は、４つの優先レベルをもつラウンドロビン優先スケジューラ構成を用いている。リクエストするI/Oデバイスがアービタ２０２からの認可信号を受けると、I/Oデバイスは、そのリクエストデータをDMAリクエストバッファリング２０４に供給する。リクエストが出力リクエストである場合には、リクエストは、データストリーマバッファコントローラ７０６に直接供給される。リクエストデータに収容されるバッファ識別に関連するバッファが、データ転送に適合するほど充分に大きくない場合には、データストリーマバッファコントローラは、DMAコントローラ１３８に知らせ、該コントローラ１３８は、非肯定応答NACK表示（not acknowledge NACK indication）をI/Oデバイスに戻す信号を送る。
【０２０８】
I/Oデバイスからのリクエストがデータ入力である場合には、DMAコントローラは、I/Oデータバスの１サイクルを得るときに、I/Oデバイスに信号を送ってそのデータをI/Oバス１３２に供給する。データストリーマバッファコントローラは、該コントローラがバッファのオーバーフローまたはアンダーフローを検知すると割込み信号を発生する。割込み信号は、次に、マルチメディアプロセッサ１００の演算を制御するプロセッサに伝送される。
【０２０９】
DMAコントローラ１３８は、各リクエストのバッファ識別を用いて、リクエストされたバイトをバッファに（またはバッファから）移動させるデータストリーマバッファコントローラ７０６を介して、経路の正しいバッファにアクセスする。
【０２１０】
データストリーマチャネル機能の例示演算を、データストリーマ１２２についての異なるステップのフローチャートを示す図２５〜図２７を参照して以下に詳細に説明する。
【０２１１】
データ転送演算に対するリクエストに応答して、チャネルの状態は、例えばステップ３０２でのds open patchと呼ばれるコマンドにより最初に初期化される。ステップ３０４では、データ経路をセットアップするための利用可能な資源がチェックされ、バッファメモリおよび１つまたは２つのチャネルがデータ転送演算に対するリクエストに応答して割当てられる。
【０２１２】
ステップ３０６では、適当な値が、表２３および表２４に関連して説明した値に従って、新しいデータ経路のバッファ状態メモリ７０８に書き込まれる。ステップ３０８では、有効ビットが、バッファに使用される割当てデータRAMの部分に対応する位置でバッファメモリ７１４にリセットされる。ステップ３１０では、各割当てチャネルについては、表１３〜表１９に従って、対応チャネル状態メモリ位置が、チャネル状態メモリ７０４で初期化される。
【０２１３】
データ経路がステップ３０２〜３１０に従ってひとたび定められたならば、初期化されたチャネルがステップ３１２においてアクティブにされる。本発明の一実施形態によれば、チャネルのアクディブ化は、ds kickコマンドと呼ばれるソフトウェアコールである。内部的には、このコールは、図２０〜図２２に関連して説明したようなPIOマップに特定化されたPIOアドレスへの非キャッシュ書込みであるチャネルds kick演算に変換する。チャネル状態メモリに記憶された値は、記述子２２０（図２３）または記述子２４０（図２４）のような記述子のアドレスであり、チャネルは実行を開始する。
【０２１４】
ステップ３１４では、転送エンジン７０２は、PIOコントローラ１２６からチャネルアクティブ化信号を受け、かつこの信号に応答して、記述子アドレスをチャネル状態メモリ７０４の対応位置に書き込む。ステップ３１６では、転送エンジン７０２は、チャネルアクティブ化信号が送り手（バッファへの入力）チャネルに対するものであるか否かを決定する。そうであれば、ステップ３１８において、バッファサイズ値が、表１５に示したような剰余チャンクカウント（remaining chunk count: RCCNT）で書き込まれる。送り手チャネルに対する剰余チャンクカウントの値は、このデータ転送のために割当てられたバッファメモリの空き空間の数、従ってチャネルがバッファ内に安全にフェッチできるバイト数を表示する。受け手チャネルに対する剰余チャンクの値は、バッファの有効バイト数、従ってチャネルが安全に転送できるバイト数を表示する。
【０２１５】
最後に、ステップ３２０で、転送エンジン７０２は、表１５に示したようなチャネル状態メモリの対応位置にアクティブフラグをターンオンする。割当て送り手チャネルのチャネル状態メモリ７０４の対応インターバースト遅延フィールドもゼロにセットされる。
【０２１６】
ステップ３２４では、チャネルが演算スケジューラ７４２（図１８）に供給される。各チャネルは、転送エンジン７０２（図１８）の演算スケジューラ７４２によるスケジューリングであると考えられ、チャネルがゼロインターバースト遅延カウントを有するとき、そのアクティブフラグがターンオンされかつその対応剰余チャンクカウント（RCCNT）が非ゼロ数となる。
【０２１７】
チャネルのターンがスケジューラ７４２に到達すると、転送エンジン７０２が、ステップ３２６で記述子フェッチ演算をスタートさせる。記述子がデータ転送スイッチインタフェース７１８（図１９）を介して到達すると、レシーブエンジン７７２は、到達した記述子を転送エンジン７０２にルーチングする。ステップ３２８では、記述子の値が、チャネル状態メモリ７０４の割当てられたチャネル位置に書込まれる。ステップ３３０では、送り手チャネルが、転送データをバッファメモリ７１４の割当てバッファにスタートさせる準備がなされる。
【０２１８】
送り手チャネルがスケジューリングされると、次の記述子のプリフェッチが開始され、ステップ３３２では、図１９のデータ転送スイッチインタフェース７１８のバッファキューRQQ７６４をリクエストすべく付加されるデータに対する読取りリクエストメッセージを発生する。本発明の一実施形態によれば、次の記述子のプリフェッチが、図２３および図２４に関連して説明したような制御語記述子に停止ビットおよびプリフェッチビットの両方をセッティングすることにより、ユーザにより禁じられることに留意されたい。また、プリフェッチは、「最終記述子」ビットが現在の記述子の制御語にセットされるときには遂行されない。
【０２１９】
リクエストキュー７６４に付加される読取りリクエストの数は、幾つかのパラメータに基づいて定まる。例えば、このような１つのパラメータとして、現在作動しているチャネルについてチャネル状態メモリに書込まれるバーストサイズがある。バーストサイズは、１つのリクエストコマンドにより開始されるデータ転送サイズを表示する。好ましくは、チャネルの単位スケジュール当たりに発生されるリクエスト数がバーストサイズを超えることはない。他のパラメータは剰余チャンクカウントである。例えば、３、ffのバーストサイズではバッファサイズは６４バイトであり、従って２つのリクエストが発生される。なぜならば、本発明の一実施形態によれば、各データ転送スイッチリクエストが３２バイトを超えないからである。他のパラメータは、記述子の幅、ピッチおよびカウントフィールドである。例えば、幅が、４のカウント（この場合には３のバーストサイズおよび６４の剰余チャンクカウントRCCNTとなる）について３２バイトのピッチで分離される８バイトである場合には、チャネルは、８バイトの長さの３つの読取りリクエストを発生する。次に、以後のカウントに対する記述子の必要性を満たす最終リクエストを発生すべくチャネルの他のスケジュールがとられる。
【０２２０】
チャネル３３４でひとたびチャネルがその読取りリクエストを完了すると、
剰余チャンクカウントの値は適当に減分（decremented）される。インターバースト遅延カウントフィールドは、特定化できる最小インターバースト遅延値にセットされる。このフィールドは、ステップ３３８で、８サイクルずつ減分される。このフィールドの値がステップ３４０でゼロにされると、チャネルは、その作動を継続すべく再びスケジューリングされる。
【０２２１】
ステップ３４２では、チャネルが再びスケジューリングされる。例えば前述のように、チャネルは、最初の８バイトを満たす１つのリクエストを発生する。ステップ３４４での記述子の完了時に、アクティブフラグがターンオフされ、チャネルは、表１５のアクティブフラグフィールドが、例えばds  continueコールと呼ばれるデータ経路連続演算コマンド（data path continue operation command ）により再びセットされるまで、優先スケジューラ７４０により再び考察されることはない。ステップ３４６で停止ビットがセットされない場合には、チャネルは、プリフェッチされた記述子が到達したか否かをチェックする。記述子が既に到達していれば、記述子は、ステップ３５０で、プリフェッチされた記述子を現在位置にコピーし、ステップ３５２で次の記述子のプリフェッチをスタートさせる。
【０２２２】
転送エンジン７０２は、バーストサイズを超え、剰余チャンクカウントRCCNTが尽き、停止ビットに遭遇し、次の記述子が未だ到達していないか、最終記述子が到達するまで、このチャネルの読取りリクエストを発生し続ける。
【０２２３】
図２５を参照し、ステップ３１６で現在考察されているチャネルが受け手チャネルであるときには、ステップ３８０が実行される。このステップ３８０では、チャネルは送り手チャネルのように直ちにスケジューリングされない。なぜならば、剰余チャンクカウントフィールドの値はゼロだからである。受け手チャネルは、ステップ３８２で、送り手側が充分な数のデータをその割当てバッファに転送するまで待機する。前述のように、データを割当てバッファに供給するデータ源は、他のチャネルまたは入力／出力（I/O）デバイスで構成できる。データストリーマバッファコントローラ７０６（図２０）は、入ってくるデータのトラックを維持することに留意されたい。入ってくるデータのバイト数が表２３に記載された出力チャンクカウントを超えるときは、チャンクカウントを、受け手チャネルの転送エンジン７０２（図１８）に送る。転送エンジン７０２は、この値を、チャネル状態メモリ７０４の適当なチャネル位置の受け手チャネルのRCCNTに付加する。ステップ３８４では、このことが起こると、受け手チャネルがスケジューリングされる準備がなされる。その後、ステップ３８６では、転送エンジン７０２が、書込みリクエストを、データ転送スイッチインタフェース７１８を介してデータ転送スイッチ１１２に発生する。
【０２２４】
書込みリクエストが発生される態様は、本発明の一実施形態に従って読取りリクエストが発生される態様に関連して前述したのと同じ原理に基づいている。かくして、考察されるべきパラメータとして、バーストサイズと、剰余チャンクカウント値と、ピッチ、幅およびカウント等の記述子フィールドとがある。
【０２２５】
ひとたび書込みリクエストアドレスがリクエストバスに供給されたならば、データ転送スイッチインタフェース７１８は、ステップ３８８で、リクエストをデータストリーマバッファコントローラDSBC７０６に進める。これに応答して、データストリーマバッファコントローラ７０６（図２０）は、バッファメモリ７１４から必要数のバイトを取り出し、検索したデータと整合させ、かつこれらのバイトを、図１８〜図２０に関連して前述したように、図１９の伝送エンジン７８２に戻す。
【０２２６】
データキャッシュ
本発明の一実施形態によるデータキャッシュ１０８の構造および演算を以下により詳細に説明するが、本発明の範囲はこれに限定されるものではない。
【０２２７】
図２９は、メモリバス１１４´に接続されたデータキャッシュ１０８のブロック図を示す。メモリバス１１４’は、ここでの説明の目的で示されたものであることに留意されたい。従って、本発明の一実施形態によれば、データキャッシュ１０８は、データ転送スイッチ１１２に接続でき、従って、トランシーバ１１６を介してプロセッサメモリバス１１４および内部メモリバス１２０に接続できる。
【０２２８】
データキャッシュ１０８は、メモリ位置（そのコンテンツがデータキャッシュに記憶される）のアドレスのタグビットを記憶するタグメモリディレクトリ５３６を有している。データキャッシュメモリ５３８は、主外部メモリに記憶されたデータのコピーを記憶すべく、タグメモリ５３６に接続される。タグメモリディレクトリ５３６およびデータキャッシュメモリ５３８の両者は、それぞれ、アービタ５３２、５３４を介してアクセスできる。タグメモリ５３６およびデータキャッシュメモリ５３８の各入力ポートは、より詳細に後述するように、「書込みデータ」を受けるように構成されている。また、タグメモリ５３６およびデータキャッシュメモリ５３８の各入力ポートは、より詳細に後述するように、「読取りデータ」を受けるように構成されている。
【０２２９】
補充コントローラユニット（データキャッシュコントローラ）５４０は、一定セットのキャッシュポリシーのすべてを遂行するのに使用される。キャッシュポリシーは、キャッシュ１０８の演算を実行すべく選択されたルールである。これらのポリシーの幾つかは良く知られており、かつ本願に援用するJ. Handy著「データキャッシュメモリブック（Data Cashe Memory Book）」（Academic Press,Inc.１９９３年）に開示されている。一般に、これらのポリシーとして、ダイレクトマップドキャッシングvs. Nウェイキャッシング（direct-mapped vs. N-Way caching）、ライトスルーvs.ライトバック構成（write-through vs. write-back arrangement）、ラインサイズ割当ておよびスヌーピングがある。
【０２３０】
前述のように、キャッシュの「ウェイ（way）」または「バンク（bank）」は、キャッシュの結合性（associativity）に関する。例えば、NウェイまたはNバンクキャッシュは、主メモリ位置からのデータを任意のNキャッシュ位置に記憶することができる。多ウェイ構成では、各ウェイまたはバンクは、それ自体のタグメモリディレクトリおよびデータメモリ（図示せず）を有している。ウェイまたはバンクの数が増大すると、各バンクのデータメモリに記憶される各メモリに対応するタグメモリディレクトリのビット数も増大することに留意されたい。また、ダイレクトマップドキャッシュはワンウェイキャッシュである。なぜならば、任意の主メモリ位置は、マッチングセットビットを有する単一キャッシュ位置にマッピングされるに過ぎないからである。
【０２３１】
スヌープの特徴は、コヒーレンシーを維持すべく、バス１１４´のトラフィックをモニタリングする処理に関する。本発明の一実施形態によれば、スヌープユニット５４４は、補充コントローラ５４０および外部アクセスコントローラ５４２の両方に接続される。メモリバストランザクションがデータキャッシュ１０８に複製されたアドレスに生じるとき、スヌープユニット５４４はスヌープヒットを検出し、かつシステムにより使用される書込みストラテジー（ライトバックまたはライトスルー）およびコヒーレンシープロトコルの両方に従って適当な作動を行う。本発明の一実施形態によれば、データキャッシュ１０８は、データストリーマ１２２により遂行されるデータ転送演算にスヌープ機能を遂行する。
【０２３２】
補充コントローラ５４０の説明に戻ると、補充コントローラの出力ポートは、それぞれ、アービタ５３２、５３６を介して、タグメモリ５３６およびデータメモリ５３８に接続されている。補充コントローラ５４０の他の出力ポートは、タグメモリ５３２の書込み入力ポートに接続される。補充コントローラ５４０の他の出力ポートは、キャッシュデータメモリ５３８の書込み入力ポートに接続される。
【０２３３】
補充コントローラ５４０の他の出力ポートとして、バスリクエスト信号を供給するメモリバス１１４´に接続されるバスリクエストポートと、データキャッシュ１０８がキャッシュラインのコンテンツを対応する外部メモリ位置に書込むことを意図するときに、ライトバックデータを供給するための、メモリバス１１４´に接続されるライトバックデータポートと、キャッシュライン（そのコンテンツは外部メモリ位置のために意図したものである）のデータアドレスを供給するための、メモリバス１１４´に接続される充填データアドレスポートとがある。
【０２３４】
補充コントローラ５４０の入力ポートは、データメモリ５１６の読取り出力からデータ信号を受けるように構成されている。補充コントローラ５４０の第２入力ポートは、タグメモリディレクトリ５３２からタグデータを受けるように構成されている。補充コントローラ５４０の他の入力ポートは、中央処理装置１０２のインストラクションユニットからのロード／記憶アドレス信号を受けるように構成されている。
【０２３５】
本発明の一実施形態によれば、データキャッシュ１０８も外部アクセスコントローラ５４２を有している。外部アクセスコントローラ５４２は、データキャッシュ１０８が、メディアプロセッサシステム１００の他のモジュールへのスレーブモジュールとして機能することを可能にする。かくして、システム１００の任意のモジュールは、中央処理装置１０２により遂行されるのと同じアクセス原理に基づいて、データキャッシュ１０８にアクセスするバスマスタとして機能する。
【０２３６】
外部アクセスコントローラ５４２の出力ポートは、それぞれアービタ５３２、５３４を介してタグメモリ５３６およびキャッシュデータメモリ５３８に接続され、かつタグメモリ５３６の書込み入力ポートに接続されている。外部アクセスコントローラ５４２の他の出力ポートは、キャッシュデータメモリ５３８の書込み入力ポートに接続される。最後に、外部アクセスコントローラ５４２の出力ポートは、マスタによりリクエストされるデータを供給するためのメモリバス１１４´に接続される。
【０２３７】
外部アクセスコントローラ５４２の入力ポートは、キャッシュデータメモリ５３８からのデータを受けるように構成されている。外部アクセスコントローラ５４２の他の入力ポートとして、他のバスマスタからのアクセスリクエストを受けるための、メモリバス１１４´に接続されるアクセスリクエストポートと、バスマスタリクエストに関するデータのアドレスを受けるための、メモリバス１１４´に接続されるリクエストデータアドレスポートと、データキャッシュ１０８に記憶されることを意図したバスマスタにより与えられるデータを受けるための、メモリバス１１４´に接続される記憶データポートとがある。
【０２３８】
メモリバス１１４´はまた、メモリコントローラ１２４を介してDRAM１２８に接続される。更に、メモリバス１１４´は、ダイレクトメモリアクセサリコントローラ１３８に接続される。中央処理装置１０２の出力ポートは、それぞれ、アービタ５３２、５３４を介してタグメモリ５３６およびキャッシュデータメモリ５３８に接続され、ロードおよび記憶演算に対応するアドレスを与える。中央処理装置１０２は、キャッシュデータメモリ５３８の書込み入力ポートに接続されて、記憶演算に対応するデータを与える。最後に、中央処理装置１０２の入力ポートは、キャッシュデータメモリ５３８の読取り出力ポートに接続され、ロード演算に対応するデータを受ける。
【０２３９】
次に、補充コントローラ５４０の演算を、図３０に関連して説明する。ステップ５６０では、補充コントローラがその演算を開始する。ステップ５６２では、補充コントローラ５４０は、タグ値と、中央処理装置１０２から受けたロードまたは記憶アドレスの上方部分とを比較することにより、キャッシュユニット１０８に対するリクエストがヒットかミスかを決定する。
【０２４０】
ステップ５６４では、リクエストに対してキャッシュミスが生じた場合には、補充コントローラ４０がステップ５６８に移行して、DRAM１２８のような外部メモリの対応メモリ位置のコンテンツと置換する必要があるキャッシュラインを決定する。ステップ５７０では、補充コントローラは、キャッシュ１０８がライトバックポリシーを用いるか否かを決定する。ライトバックポリシーを用いる場合には、補充コントローラ５４０は、記憶リクエスト信号をメモリコントローラ１２４に発行することにより、DRAM１２８に置換されるキャッシュラインを与える。ステップ５７２では、補充コントローラ５４０は、ミスがあったキャッシュラインへの読取りリクエスト信号を、補充データアドレスポートを介して、メモリコントローラ１２４に発行する。ステップ５７４では、補充コントローラ５４０が、補充データを受けかつ該データをキャッシュデータメモリ５３８に書込み、かつタグメモリ５３６を修正する。
【０２４１】
補充コントローラ５４０は、ステップ５７６に移行し、ロードリクエストに応答して、リクエストデータを中央処理装置１０２に供給する。別の構成として、補充コントローラ５４０は、中央処理装置１０２からの記憶リクエストに応答して、データをキャッシュデータメモリ５３８に書き込む。ステップ５７８では、補充コントローラ５４０は、中央処理装置１０２により与えられた記憶演算に応答して、DRAM１２８のような外部メモリにデータを書き込む。
【０２４２】
ステップ５６４で、中央処理装置１０２および補充コントローラ５４０からのロードまたは記憶リクエストに対してヒットする場合、ステップ５６６に移行して、読取り演算または書込み演算を行なうキャッシュデータメモリ５３８からのキャッシュラインを形成する。
【０２４３】
次に、本発明の一実施形態による補充コントローラ５４０に関連する外部アクセスコントローラ５８０の演算について、図３１を参照して説明する。
【０２４４】
ステップ５８０では、外部アクセスコントローラが、バスマスタアクセスリクエストに応答して、その演算を開始する。本発明の一実施形態によれば、バスマスタは、図１に関連して前述した任意のモジュールで構成でき、アクセスリクエストは、データストリーマ１２２およびデータ転送スイッチ１１２の演算に関連して説明したように発行できる。ステップ５８２では、外部アクセスコントローラ５４２は、任意のバスマスタによる読取りまたは書込みリクエストを待機する。
【０２４５】
ひとたび外部アクセスコントローラ５４２がリクエストを受けると、該コントローラ５４２はリクエストを受けてステップ５８４に移行し、バスマスタが読みまたは書込み演算をリクエストしたか否かを決定する。リクエストが読取り演算である場合には、外部アクセスコントローラ５４２はステップ５８６に移行して、ヒットまたはミスが生じているか否かを決定する。読取りリクエストに応答してキャッシュヒットが生じている場合には、外部アクセスコントローラはステップ６０４に移行して、リクエストされたデータをバスマスタに供給する。
【０２４６】
しかしながら、読取りリクエストに応答してキャッシュミスが生じる場合には、外部アクセスコントローラがステップ５８８に移行し、かつ補充コントローラ５４０がリクエストされたデータを得て、ステップ５９０でデータキャッシュを満たすように、補充コントローラ５４０をトリガする。データの補充後、外部アクセスコントローラ５４２は、ステップ６０４で、リクエストされたデータをバスマスタに供給する。
【０２４７】
ステップ５８４で、外部アクセスコントローラが、バスマスタがデータをデータキャッシュ１０８に書込むことをリクエストしたと判断した場合には、ステップ５９２に移行して、キャッシュヒットまたはキャッシュミスいが生じたか否かを決定する。キャッシュヒットに対して、外部アクセスコントローラ５４２は、ステップ５９６に移行し、バスマスタがリクエストされたデータをデータキャッシュメモリ５３８に書込むことを可能にする。
【０２４８】
しかしながら、ステップ５９２において、キャッシュミスが生じた場合には、外部アクセスコントローラはステップ５９４に移行し、キャッシュデータメモリのどのキャッシュラインを、DRAM１２８のような外部メモリのコンテンツと置換する必要があるかを決定する。外部アクセスコントローラは、次にステップ５９８に移行する。データキャッシュ１０８がライトバックポリシーを実行する場合には、外部アクセスコントローラは、ステップ５９８で、データキャッシュメモリ５３８から置換されるべきキャッシュラインを与えかつ記憶リクエストを、メモリバス１１４´を介してメモリコントローラ１２４に発行する。
【０２４９】
その後、外部アクセスコントローラ５４２は、ステップ６０２に移行し、リクエストされたデータをキャッシュデータメモリに書込み、従って、タグメモリ５３６を修正する。
【０２５０】
前述のように、外部アクセスコントローラ５４２は、中央処理装置が必要とするデータに先だって、予測できる多くのアプリケーションについて、キャッシュ正解率を顕著に増大させることができる。一例として、多くの３Ｄグラフィックアプリケーションの場合には、テクスチャマッピングに関する情報が、DRAM１２８等の外部メモリに記憶される。中央処理装置１０２がどの情報を使用する必要があるかを予測できるため、中央処理装置１０２により実際に使用される前にこの情報をデータキャッシュ１０８に転送するのが有効である。この場合には、中央処理装置１０２がテクスチャマッピング情報を必要とするときがきたとき、対応データは既にキャッシュデータに存在し、その結果キャッシュヒットが生じる。
【０２５１】
３次元（3Ｄ）グラフィックス処理
図１に示すように、データキャッシュメモリ１０８に関連する固定機能ユニット１０６、中央処理装置１０２、１０４および外部メモリ１２８は、本発明の一実施形態に従って実質的に短縮された帯域幅遅延をもつ３次元グラフィックスを遂行するが、本発明の範囲はこれに限定されるものではない。
【０２５２】
図３２は、３Ｄグラフィックス処理に応答するマルチメディアプロセッサ１００の主要構成要素に関するブロック図を示す。かくして、本発明の一実施形態によれば、固定機能ユニット１０６は、該固定機能ユニットの他の構成要素に対する制御コマンドを与える、プログラム可能な入力／出力コントローラ６１８を有している。固定機能ユニットの他の構成要素はVGAグラフィックスコントローラ６０３を有し、該コントローラ６０３は、プログラム可能な入力／出力コントローラPIOC６１８に接続され、かつVGAフォーマットのグラフィックスを処理するように構成されている。２次元（２Ｄ）論理ユニット６０５は、プログラム可能な入力／出力コントローラに接続されかつ２次元グラフィックスを処理するように構成されている。
【０２５３】
固定機能ユニット１０６はまた、より詳しく後述するようなビンベース型表現アルゴリズム（bin-based rendering algorithm）を用いる３次元ユニット６１１を有している。基本的に、本発明の一実施形態によれば、３Ｄユニットは、チャンク、タイルまたはビンと呼ばれるデータの単位を操作する。各タイルは、全スクリーンのうちの小さい部分である。かくして、本発明の一実施形態による３Ｄユニットは、好ましくは、マルチメディアプロセッサ１００内の対応バッファメモリ空間内に３Ｄ物体を引き出すビニング処理（binning process）を用いる。かくして、表現アルゴリズムについての外部メモリの使用で遭遇するボトルネック問題は実質的に回避される。なぜならば、マルチメディアプロセッサチップ内でのデータ転送は、実質的に高い帯域幅で達成されるからである。
【０２５４】
３Ｄユニット６１１は３Ｄタイルラスタライザ６０７であり、該ラスタライザ６０７もプログラム可能な入力／出力コントローラ６１８に接続されておりかつグラフィックス処理タスクを遂行するように構成されている。３Ｄタイルラスタライザ（3DTR）６０７の２つの主なタスクとして、図３３および図３４に関連してより詳細に説明するように、その演算モードに基いた、ビニングおよびラスタライゼーションがある。
【０２５５】
３Ｄユニット６１１はまた、３Ｄテクスチャコントローラ（3DTC）６０９を有し、該コントローラ６０９もプログラム可能な入力／出力コントローラ６１８に接続され、かつコントローラにより制御される。図３５に関連してより詳細に説明するように、３Ｄテクスチャコントローラは、３Ｄユニット６１１で使用すべきことを意図したテクセルのアドレスを引き出す。かくして、引き出されたアドレスに基づいて、３Ｄテクスチャコントローラ６０９は、データストリーマ１２２により使用されるチャンク記述子を発生し、データストリーマ１２２の演算に関連して前述したように、SDRAM１２８等のローカルメモリから適当なテクセルを得る。
【０２５６】
３Ｄユニット６１１はまた３Ｄテクスチャフィルタユニット（3DTF）６１０を有し、該ユニット６１０は、プログラム可能な入力／出力コントローラ６１８に接続され、かつ該コントローラにより制御される。図３６および図３７に関連してより詳細に後述するように、フィルタユニット６１０は、シェーディングカラーブレンディングおよびアキュムレーションブレンディングに関連して、バイリニア（１パス）およびトリリニア（２パス）補間のようなテクスチャフィルタリング演算を遂行する。
【０２５７】
固定機能ユニット１０６はビデオスケーラユニット６１２を有し、該ユニット６１２は、プログラム可能な入力／出力コントローラ６１８に接続されかつ該コントローラにより制御される。ビデオスケーラユニット６１２は、幾つかの水平および垂直タップを用いてビデオデータのアップスケーリングおよびダウンスケーリングを与えるように構成されている。ビデオスケーラ６１２は、ディスプレイスクリーン上に３Ｄ物体をディスプレイするディスプレイリフレッシュユニット２２６（図２）に出力画素を供給する。本発明の一実施形態に従ってより詳細に説明するように、テクスチャフィルタの幾つかの機能は、ビデオスケーラの機能と同じ原理に基づいている。いずれにせよ、ビデオスケーラ６１２は、本発明の一実施形態に従って、テクスチャフィルタ６１０と幾つかの機能を共有する。
【０２５８】
固定機能ユニット１０６は、該機能ユニット１０６の種々の構成要素がデータ転送スイッチ１１２およびデータストリーマ１２２と相互作用することを可能にするデータ転送スイッチインタフェース６１４を有する。データ転送インタフェース６１４は、図１９に示したデータ転送スイッチインタフェース７１８に関連して前述したのと同じ原理に基づいて演算する。データキャッシュインタフェース６１６は、固定機能ユニット１０６がデータキャッシュユニット１０８にアクセスすることを可能にする。
【０２５９】
図３２は、本発明の一実施形態による３Ｄグラフィックス処理演算に関連するデータキャッシュ１０８の種々の構成要素を示す。しかしながら、明瞭化の目的で、図２８〜図３１に関連して説明したようなデータキャッシュ１０８の他の特徴および構成要素は、図３２には示されていない。また、データキャッシュ１０８の構成要素はデータキャッシュ内に配置されているところが示されているが、本発明の他の実施形態に従って、１つ以上の他の構成要素を別のキャッシュユニットとして配置できることを理解すべきである。
【０２６０】
データキャッシュ１０８は、三角形セットアップバッファ６２０を有し、該バッファ６２０は、三角形の各辺の傾斜のような三角形パラメータを得るための計算結果を記憶すべく構成されている。データキャッシュ１０はまたラスタライザセットアップバッファ６２２を有し、該バッファ６２２は、スクリーン座標、テクスチャ座標、シェーディングカラー、深さおよびこれらの部分的に異なるパラメータ等の各三角形の付加パラメータを記憶するように構成されている。データキャッシュ１０８は、タイルのすべての深さ値を記憶するタイルZバッファ６２８とも呼ばれる深さタイルバッファを有する。
【０２６１】
データキャッシュ１０８はまた、図２９〜図３１に関連して前述したように、補充コントローラ５４０および外部アクセスコントローラ５４２を有している。また、中央処理装置１０２、１０４は、図１に関連して説明したように、データキャッシュ１０８に接続されている。図３２に示された付加構成要素として、ＦＩＧ．１〜ＦＩＧ．１５に関連して開示しかつ説明したような、データ転送スイッチ１１２と、データストリーマ１２２と、メモリコントローラ１２４と、SDRAMとがある。I/Oバス１３は、モニタ（図示せず）のような画像ディスプレイデバイスに信号を供給するディスプレイリフレッシュユニット２２６に信号を供給するように構成されている。本発明の一実施形態によれば、ビデオスケーラ６１２は、ディスプレイユニット２２６に直接接続されている。
【０２６２】
以下に詳述するように、スクリーン上のすべての三角形のジオメトリ変換およびライティング変換は、本発明の一実施形態により、VLIW中央処理装置１０２により遂行される。３Ｄユニット６１１は、各タイルと交差するすべてのビンまたはタイルおよびすべての三角形を識別することに応答できる。より詳しくは、３Ｄ三角形ラスタライザ６０７は、各タイルのすべての三角形を識別する。その後、各ビンまたはタイルについて、VLIW中央処理装置１０２は、三角形セットアップ試験を行って、各三角形の辺の傾斜等の各三角形のパラメータを計算する。３Ｄ三角形ラスタライザ６０７はまた、各ビンまたはタイルと交差するすべての三角形をラスタライズする。３Ｄテクスチャコントローラ６０７は、ビンまたはタイルのすべての画素のテクスチャアドレスを計算する。
【０２６３】
ひとたびテクセルのアドレスが得られたならば、データストリーマ１２２は、SDRAM１２８から対応するテクセル情報を得る。３Ｄテクセルフィルタ６１０は、フェッチされた画素のバイリニア補間およびトリリニア補間を遂行する。その後、データストリーマ１２２は、各タイルまたはビンの処理された画像データをフレームバッファに書込む。かくして、フレームバッファは、画像のすべての画素についての強さ／カラー値を含むDRAM１２８にアレーを形成する。グラフィックスディスプレイデバイスは、このアレーにアクセスして、各画素がディスプレイされる強さ／カラーを決定する。
【０２６４】
図３３は、本発明の一実施形態による３Ｄ三角形ラスタライザ６０７を示すブロック図である。明瞭化のため、図３３は、３Ｄ三角形ラスタライザ６０７がビニングモードで演算するときに生じる信号の流れを示すものである。
【０２６５】
データキャッシュ１０８は、ビニング演算に必要な情報を与えるべく、３Ｄ三角形ラスタライザ６０７に接続される。ビニング演算中に用いられるデータキャッシュ１０８の２つのバッファは、セットアップバッファ６２２およびタイルインデックスバッファ６３０である。
【０２６６】
３Ｄ三角形ラスタライザ６０７は、データキャッシュ１０８からの三角形セットアップ情報を受けるように構成されたフォーマットコンバータユニット６３２を有している。フォーマットコンバータユニット５３２は、データキャッシュ１０８から受けたパラメータを、浮動点番号から固定点番号に変換する。スクリーン座標補間回路（screen coordinates interpolator）６３４はフォーマットコンバータ６３２に接続され、３Ｄ三角形ラスタライザ６０７により処理される画素のx、y座標を形成する。ビニングユニット６４４は、補間回路６３４からx、y座標を受けかつ図３９に関連してより詳細に説明するようなビニング演算を遂行する。ビニングユニットもインデックスバッファ６３０に接続されている。ビニングユニット６４４により計算される情報は、データストリーマ１２２を介して、メモリ１２８内のタイルデータバッファ６４６に供給される。
【０２６７】
演算中、３Ｄ三角形ラスタライザ６０７は、データキャッシュ１０８からの入力として扱われる三角形の各ノードすなわち頂点のスクリーン座標を読取る。その後、三角形ラスタライザは、各ビンまたはタイルと交差するすべての三角形を識別しかつSDRAM１２８の出力としてタイルインデックスおよびタイルデータと呼ばれるデータ構造を構成する。
【０２６８】
前述のように、ラスタライゼーションフェーズが開始する前に、スクリーン全体のすべての三角形がジオメトリおよびライティングについて処理される。次に、セットアップおよびラスタライゼーションが、各ビンまたはタイルについて反復実行される。ビニングは、出力を分離して同サイズの正方形にイメージアップすることを含む。本発明の一実施形態によれば、各ビンまたはタイルのサイズは、１６×１６画素により形成される正方形領域である。各正方形はラスタライズされ、次に最終フレームバッファに移動される。ビンが正しくラスタライズされるようにするには、当該ビンと交差するすべての三角形に関する情報を得るのが好ましい。この目的のため、スクリーン内のすべての三角形についてのセットアップおよびラスタライゼーションが、ビニング処理の前に最初に得られる。
【０２６９】
ビニングは、三角形の辺に沿う各画素を求め、かつ三角形の画素が属するすべてのビンを識別する処理を含む。かくして、この処理は、三角形の頂点を表す画素を識別し、次に三角形の左右の辺に沿って移動させて、画素が属する対応ビンが得られるように、水平走査線と交差する他の画素を識別することにより開始する。ひとたびビンが識別されたならば、処理される三角形に対応する識別番号すなわち三角形IDが、識別されたビンと関連付けられる。
【０２７０】
インデックスバッファ６３０は、処理されるスクリーン上のビンの数に一致する２次元アレーであるのが好ましい。この数は、所与のスクリーン解像度に対して静的である。かくして、タイルインデックスバッファ６３０は、タイルデータバッファ６４６の第１三角形IDについてのインデックスを含んでいる。タイルバッファは、本発明の一実施形態によるローカルメモリの２６５Kサイズの静的アレーである。データバッファ６４６は、三角形インデックスおよび次の三角形へのポインタを含んでいる。かくして、連鎖を続けることにより、本発明の一実施形態に従って、所与のビンについてのすべての三角形を見出すことができる。
【０２７１】
図３９は、本発明の一実施形態による、例えば参照番号８６１で示す例示三角形についてのビニング処理の演算を示すものであるが、本発明の範囲はこれに限定されるものではない。三角形８６１は中間ノードすなわち頂点Ｂを通って引かれる水平線により２つの小三角形に分割される。図３９に示すように、三角形８６１は、三角形窓を形成する水平および垂直の両方向の幾つかの画素に跨っている。ビニングユニット６４４は、線毎にこれらの画素に跨る。かくして、ステップ８６２では、ビニングユニット６４４が、三角形の上頂点を含む線を処理する。このスパン（跨り）の間、最左方の画素のx座標はAxすなわちCross XACであり、最右方の画素のx座標はAxすなわちCross XABである。Cross XACは、辺ACと次のスパンとの間の交差点のx座標であり、Cross XABは、辺ABと次のスパンとの間の交差点のx座標である。これらの画素が属するビンを抽出するため、ビニングユニット６４４は、下記条件を用いている。
【０２７２】
X＝［min 2 (Ax, Cross XAC), max 2 (Ax, Cross XAB)］
ここで、Xは各走査線に対する三角形のx座標の範囲である。
【０２７３】
ステップ８６４では、ビニングユニット６４４は、下記条件を用いている。
【０２７４】
X＝［min 2 (Cross XAC, Cross XAC + dxdy AC), max 2(Cross XAB, Cross XAB + dxdy AB)］
次のスパンの辺ACと辺ABとの間の各交差点のx座標は、下記条件から導かれる。
【０２７５】
Cross XAC＝Cross XAC + dxdy AC
Cross XAB＝Cross XAB + dxdy AB
ここで、dxdy ACは三角形８６１の辺ACの傾斜であり、dxdy ABは三角形８６１の辺ABの傾斜である。ステップ８６４は、スパンが中頂点Bを含むまで反復する。その後、ビニングユニット６４４は、ステップ８６６に移行する。
【０２７６】
ステップ８６６では、最右方の画素のx座標は３つのパラメータの最大値であり、次のようになる。
【０２７７】
X＝［min 2 (Cross XAC, Cross XAC + dxdy AC), max 3(Cross XAB, Bx, Cross XBC)］
ここで、Cross XBCは、BCと次のスパンとの間の交差点のx座標である。その後、ビニングユニット６４４は、スパンが下頂点Cを含むようになるまで、Cross XACおよびCross XBCにdxdy ACおよびdxdy BCを加え続けることによりステップ８６８を、例えば次のように遂行する。
【０２７８】
X＝［min 2 (Cross XAC, Cross XAC + dxdy AC), Max2 (Cross XBC, Bx, Cross XBC +dxdy BC)］および、
Cross XAC＝Cross XAC + dxdy AC
Cross XBC＝Cross XBC ＋ dxdy BC
最後にステップ８７０では、ビニングユニット６４４は、最終画素が属するビンを、例えば次のように識別する。
【０２７９】
X＝［min 2 (Cross XAC, Cx), max 2 (Cross XBC, Cx)］
上記ステップ８６２〜８７０の間に、ビニングユニット６４４は、各三角形の辺の画素が属するすべてのビンのIDを記憶する。スクリーンに表示されるすべての三角形のビニング処理の結果として、インデックスバッファ６３０およびタイルデータバッファ６４６が満たされる。これにより、３Ｄユニット６１１は、各ビンまたはタイルが後述のようにして処理されるときにビンと交差する三角形を検索することが可能になる。
【０２８０】
図３４は、ラスタライゼーションモードにある３Ｄ三角形ラスタライザ（3DTR）６０７を示す。ラスタライゼーションモード中に用いられるデータ構造が、ビニングモード中にタイルインデックスバッファ６３０が用いられるデータキャッシュ１０８のメモリを再使用できることに留意されたい。かくして、ラスタライゼーションの前に、インデックスバッファ６３０のコンテンツがローカルメモリDRAM１２８に書込まれる。
【０２８１】
３Ｄ三角形ラスタライザ６０７はテクスチャ座標補間回路６３６を有し、該補間回路６３６は、フォーマットコンバータ６３２に接続されかつ補間法を用いることにより三角形内の画素のテクスチャ座標データを得るように構成されている。フォーマットコンバータ６３２にはカラー補間回路６１８が接続され、かつ補間法を用いることにより三角形内に画素のカラー座標を得るように構成されている。
【０２８２】
また、フォーマットコンバータ６３２には深さ補間回路６４０が接続されており、該補間回路６４０は、三角形内の画素の深さを得るように構成されている。本発明の一実施形態によれば、ビンが表現されるとき、ビン内の三角形がオーバーラップ層内に入る傾向にあることに留意することが重要である。層は、他の層から或る深さにある分離可能な表面である。３Ｄ三角形ラスタライザ６０７は、連続層内の完全な三角形をラスタライズすることを防止するため、層を前後に処理する。可視画素のみをラスタライズすることにより、かなりの計算および処理が節約される。かくして、ラスタライザ６０７は、層をビン毎に分類する。ビン内の三角形の平均個数は約１０であるので、分類処理には長時間を要しない。本発明の一実施形態によれば、この分類は、いかなる三角形セットアップすなわちラスタライゼーションよりも前に行われる。
【０２８３】
ビン内の三角形は、単純に各三角形の平均深さすなわちZ値では分類されないのが好ましいことに留意されたい。大きい三角形では、深さ補間回路６４０が三角形の中間のZ値を得る。深さ補間回路６４２にはZ有効レジスタ６４２が接続されており、後述のようにして、データキャッシュ１０８の深さタイルバッファ６２８に記憶される有効深さ値を追跡する。
【０２８４】
図３４に示すように、ラスタライゼーションモード中にデータキャッシュ１０８に用いられるバッファは、断片インデックス６５０、ラスタライザセットアップバッファ６２２、テクスチャ座標タイル（タイルT）、カラータイル（タイルC）、および深さタイル（タイルZ）である。断片インデックス６５０は断片発生器６４８に接続され、該断片発生器６４８は、アンチエイリアシングまたはαブレンディングに使用される断片を供給する。
【０２８５】
断片発生器６４８は、断片リンクバッファ６５２、断片バッファ６５４のテクスチャ座標、断片バッファ６５６のカラーおよび断片バッファ６５８の深さを有するメモリ１２８の４つのバッファ空間に接続されている。メモリのこれらのバッファの演算は、データキャッシュ１０８の対応バッファに関連して述べたのと同じ原理に基づいている。ラスタライザセットアップバッファ６２２は、ラスタライゼーション処理を完遂するのに必要な三角形パラメータを得るべく、フォーマットコンバータ６３２に接続される。また、テクスチャ座標タイル６２４は、テクスチャ座標補間回路６３６に接続される。同様に、カラータイル６２６はカラー補間回路６３８に接続され、深さタイル６２８は深さ補間回路６４０に接続される。深さタイル６２８は、各三角形の有効深さ値を、処理されるビン内に保持する。
【０２８６】
かくして、演算中に、３Ｄ三角形ラスタライザ６０７は、データキャッシュラスタライザセットアップバッファ６２２から、スクリーン座標、テクスチャ座標、シェーディングカラー、深さおよびこれらの部分的な差異、dR/dX、dR/dY等を含む各三角形の頂点に対応する三角形セットアップデータを読取る。例えばこれらの差異について、Rはシェーディングカラーの赤色成分、dR/dXはx方向に沿って１画素移動させるRの差異を意味する。これらのセットアップパラメータを使用して、３Ｄ三角形ラスタライザ６０７は、補間法により所与の三角形の内側をラスタライズする。Zバッファリングを用いることにより、可視三角形またはこれらの一部の結果のみがテクスチャ座標タイル６２４およびカラータイル６２６に記憶される。かくして、各画素のZ値がタイル６２８に記憶される。Z値は、ユーザの目から離れた画素の深さを表示する。かくして、Z値は、画素が他の物体から隠されているか否かを表示する。
【０２８７】
この結果、テクスチャ座標タイル６２４は、タイルについてのテクスチャマップアドレスおよびサイズ、およびテクスチャ座標等のテクスチャ関連情報を記憶する。テクスチャ座標は、固定点数としてテクスチャ座標補間回路６３６により補間され、かつ同じ固定点フォーマットのテクスチャ座標タイル６２４に記憶される。同様に、カラータイル６２６は、可視画素についてのRGBAシェーディングカラーを記憶するデータ構造を定める。かくして、ラスタライゼーション後に与えられるテクスチャおよびカラー情報は、本発明の一実施形態による可視画素に関するものである。
【０２８８】
図３５は、本発明の一実施形態に従ってアドレスされるテクセルを発生させるのに使用される３Ｄテクスチャコントローラ６０９を示すブロック図である。３Ｄテクスチャコントローラは、メモリアドレス計算機６６４に接続されるフォーマットコンバータ６３２を有している。メモリアドレス計算機の出力はテクスチャキャッシュタグチェックユニット６６６の入力ポートに接続され、該ユニット６６６は、アドレスマップ発生器６６８およびデータストリーマ記述子発生器６７０に接続されている。３Ｄテクスチャコントローラ（3DTC）６０９は、データキャッシュ１０８に接続されている。
【０２８９】
データキャッシュ１０８は、３Ｄテクスチャコントローラ６０９により遂行されるテクスチャアドレス発生中に、アドレスマップバッファ６６０と、テクスチャ座標タイル６２４と、カラータイル６６２とを用いる。かくして、アドレス発生器６６８は、アドレスマップを、データキャッシュ１０８のアドレスマップバッファ６６０に供給する。また、テクスチャ座標タイル６２４は、ラスタライゼーション処理中に発生されるテクスチャ座標をメモリアドレス計算機６６４に供給する。カラータイル６６２もまた、カラーデータをメモリアドレス計算機６６４に供給する。
【０２９０】
データキャッシュ１０８により供給される情報に応答して、３Ｄテクスチャコントローラ６０９は、必要なテクセルのメモリアドレスを計算する。次に、３Ｄテクスチャコントローラ６０９はキャッシュタグ６６６をルックアップして、テクセルが、テクスチャキャッシュ６６７と呼ばれるデータキャッシュ１０８の所定部分にあるか否かをチェックする。キャッシュがヒットすると、３Ｄテクスチャコントローラ６０９は、キャッシュアドレスを、アドレスマップ６６０と呼ばれるデータキャッシュ１０８の他のデータ構造に記憶する。さもなくば、３Ｄテクスチャコントローラは、ミスしたキャッシュラインアドレスを、データストリーマ記述子として記憶し、これによりデータストリーマ１２２はラインをメモリ１２８からテクスチャキャッシュ６６７へと移動させることができる。キャッシュミス状態中に、アドレスマップ６６０も書込まれる。
【０２９１】
テクセルフィルタリング中の後の段階で、アドレスマップ６６０に記憶されるデータが使用される。かくして、テクセルアドレスのマッピングを画素に表示するのに、アドレスマップバッファ６６０が使用される。アドレスマップバッファ６６０に記憶されるアレーは、ビン内の画素についての静的アレーであり、かつどの４×４テクセルブロックが所与の画素に適用できるかを表示するための、画素のバッファにおける位置へのポインタを含んでいる。必要とされるフィルタの形式もアドレスマップバッファ６６０に記憶される。
【０２９２】
図３６は、本発明の一実施形態による３Ｄテクスチャフィルタ６１０を示す。３Ｄテクスチャフィルタ６１０は、アドレスマップバッファ６６０からテクセル情報を受けるように構成されたテクセルフェッチユニット９４２を有している。テクセルフェッチユニット９４２が受けた情報はテクスチャキャッシュ６６７に供給されて、該テクスチャキャッシュ６６７のどのテクセルを次に濾過（フィルタリング）する必要があるかを表示する。
【０２９３】
３Ｄテクスチャフィルタ６１０はまた、テクスチャキャッシュ６６７からテクセルを受けるように構成されたパレタイズユニット９４４を有している。テクスチャキャッシュの値がテクセルカラーのインデックスを表示するとき、パレタイズユニット９４４は、テクセルカラーに、データキャッシュに設けられたテーブルからのインデックスを付す。パレタイズユニット９４４の出力ポートは、水平補間回路９４６に接続され、該水平補間回路９４６は垂直補間回路９４８に接続されている。水平および垂直の両補間回路９４６、９４８は、アドレスマップバッファ６６０からの係数パラメータを受けるように構成されている。垂直補間回路９４８の出力ポートはトリリニア補間回路９５０に接続され、該補間回路９５０は、補間回路の第１パスのカラータイル６２２からの係数パラメータを受け、かつ補間回路の第２パスのカラーバッファ９３０からの係数パラメータを受ける。
【０２９４】
本発明の一実施形態によれば、２種類の係数があることに留意すべきである。１つの係数はバイリニア補間回路に使用され、かつ４つの近隣テクセルカラーの重みをどのように補間するかを示す。他の係数は、トリリニア補間回路に使用され、かつ２つのバイリニアカラーの重みをどのように補間するかを示す。
【０２９５】
補間回路９５０の出力ポート９５０は、シェーディングカラーブレンドユニット９５２に接続される。シェーディングカラーブレンドユニット９５２はまた、カラータイル６２２からカラー値を受けるように構成されている。シェーディングカラーブレンドユニット９５２の出力ポートは、カラータイル６２２および累算ブレンドユニット９５４に接続される。累算ブレンドユニット９５４の出力ポートは、本発明の一実施形態に従ってデータキャッシュ１０８に存在する累算バッファ９３４の入力ポートに接続される。
【０２９６】
演算中、３Ｄテクスチャフィルタ６１０は、バイリニアテクスチャフィルタリングを行う。アドレスマップバッファ６６０に記憶されたメモリアドレスを用いることにより、入力テクセルがテクスチャキャッシュ６６７から読取られる。バイリニアフィルタリングの結果が、カラータイル６２２のシェーディングカラーとブレンドされ、かつ最終テクスチャードカラーとしてカラータイル６２２に戻される。累算が特定されると、最終カラーが、累算バッファ９３４での累算されたカラーにブレンドされる。
【０２９７】
トリリニアフィルタリングを遂行するには２つのパスが必要である。第１パスでは、３Ｄテクスチャフィルタが、カラーバッファ９３０に記憶されたバイリニアフィルタリング結果を出力する。第２パスでは、３Ｄテクスチャフィルタは、カラーバッファ９３０に記憶されたカラーを他のバイリニアフィルタリングカラーとブレンドすることにより最終トリリニア結果を発生する。
【０２９８】
パレタイズユニット９４４のコンテンツは、セットパレットモードで３Ｄテクスチャフィルタ６１０をアクティブにすることにより、データキャッシュ１０８からロードされる。
【０２９９】
バイリニアおよびトリリニアフィルタリングは、幾つかの近隣テクセルの重み付け合計を得る処理を使用する。本発明の一実施形態によれば、近隣テクセルの水平補間回路が後続する垂直補間回路を用いることによりテクセルデータが得られる。例えば、垂直テクセルの数は３とし、水平テクセルの数は５にすることができる。フィルタリングは特定化できる係数を用いて行われる。かくして、フィルタリング処理は１５テクセルの重み付け合計として定められ、濾過されたテクセルの最終出力Tは次のように定められる。
【０３００】
Tx＝k11 Txy + k12 Txy + 1 + k13 Txy +2
Tx + 1＝k21 Tx + 1y + k22 Tx + 1y + 1＝k23 Tx + 1y + 2
Tx + 2＝k31 Tx + 2y + k32 Tx + 2y + 1+ k33 Tx + 2y + 2
Tx + 3＝k41 Tx + 3y + k42 Tx + 3y + 1+ k43 Tx + 3y + 2
Tx + 4＝k51 Tx + 4y + k52 Tx + 4y + 1+ k53 Tx + 4y + 2
Toutput＝ka Tx + kb Tx + 1 + kc Tx +2 + kd Tx + 3 + kc Tx + 4
ここで、Tは、フェッチされたテクセルに対応するテクセル情報である。補間点が前のグリッドと同じグリッド内にあり、本発明の一実施形態により垂直補間を行う必要はない。垂直補間の結果は前の計算結果と同じになるため、これは当然のことである。これに対し、テクセルは前のグリッドと同じグリッド内にあるが、水平補間の再計算は必要になる。なぜならば、グリッド上のスケールされたテクセルの相対位置が異なっており、従って係数セットが異なっているからである。
【０３０１】
かくして、前述のように、テクセルフィルタリングのコア演算は、乗算および加算である。本発明の一実施形態によれば、これらの機能は、図３７および図３８に示したビデオスケーラ６１２の乗算機能および加算機能と共有できる。
【０３０２】
図３７は、本発明の一実施形態によるビデオスケーラ６１２のブロック図を示す。ビデオスケーラ６１２はバスインタフェース８２０を有し、該バスインタフェース８２０は、プロセッサメモリバス１１４に接続され、かつここからリクエストを送り、かつ画素情報を受けるように構成されている。固定機能メモリ８２８は、バスインタフェースユニット８２０に接続されており、かつデータストリーマ１２２を用いることによりメモリ１２８からYcbCr画素データを受けるように構成されている。固定機能メモリ８２８は、メモリ１２８とビデオスケーラ６１２との間のトラフィックを低減させるため、画素の所定部分（該部分は、補間に必要とされる部分よりも大きいことが好ましい）を記憶する。
【０３０３】
送り手画像バッファ８２２は、固定機能メモリ８２８に接続され、かつ補間演算を行うのに充分な画素データを受けるように構成されている。画素アドレスコントローラ８２６は、補間演算のために固定機能メモリ８２８から検索される画素データのアドレスを発生する。垂直送り手データシフトレジスタ８２４は送り手画像バッファ８２２に接続され、かつ補間処理の間に用いられる乗算および加算のために画素データをシフトするように構成されている。ビデオスケーラ６１２が３Ｄテクスチャフィルタ６１０についてのフィルタリング演算を行うときに、垂直送り手データシフトレジスタ８２４は、乗算および加算を行うための適当なテクセルデータを記憶しかつシフトするように構成されている。
【０３０４】
水平送り手データシフトレジスタ８３０は、乗算および加算回路８３４により得られた、垂直に補間された中間画素を記憶するように構成されている。水平データシフトレジスタ８３０は、乗算および加算を行うのに再びに使用できる。
【０３０５】
係数記憶ユニット８４４は、補間演算を行うための予め特定した係数を記憶するように構成されている。かくして、ビデオスケーラ６１２が３Ｄテクスチャフィルタ６１０のためのフィルタリング演算を行うときに、係数記憶ユニット８４４はテクセルのためのフィルタリング係数を記憶し、ビデオスケーラ６１２がスケーリング演算を行うときに、係数記憶ユニット８４４は画素のための補間係数を記憶する。
【０３０６】
座標加算器８４６はセレクタ８４０に接続されており、乗算および加算のための適当な係数の検索を制御する。座標加算器８４６が、スタート画素すなわちテクセルの座標に対応するx、yベースアドレスに接続されている。Δユニット８５０は、所望スケールの画素の座標の垂直方向および水平方向についての差異を与えるように構成されている。
【０３０７】
本発明の一実施形態により、図３８に示すように、乗算および加算回路８３４は、乗算および加算を行うように構成されているが、本発明の範囲はこれに限定されるものではない。かくして、乗算および加算ユニット８３４は、複数の画素および係数レジスタ８５２、８５４を有し、これらのレジスタは、乗算器８５６により乗算され、加算器８６０を介して１つの番号を発生する。
【０３０８】
出力画素先入れ先出し（FIFO）バッファ８４２は、ビデオスケーラ制御レジスタの対応制御ビットの値に基づいて、ディスプレイリフレッシュユニット２２６またはデータキャッシュ１０８への出力のために得られた画素を記憶するように構成されている。
【０３０９】
本発明の一実施形態によれば、演算中に、ビデオスケーラ６１２は、データストリーマ１２２を用いてメモリ１２８からYCbCr画素データを読取りかつ、該画素データを固定機能メモリ８２８に入れる。その後、Y、Cb、Cr画素データは、画素アドレスコントローラ８２６を用いて固定機能メモリ８２８から読取られる。検索されたデータは、Y、Cb、Crデータに対応する送り手画像バッファ８２２の３つの送り手画像バッファ空間内に書込まれる。垂直送り手データシフトレジスタが空き空間を有するときは、送り手画像バッファ８２２がそのデータのコピーを垂直送り手データシフトレジスタに供給する。垂直補間法の場合には、垂直に補間された中間画素が水平送り手データシフトレジスタ８３０内に記憶される。
【０３１０】
垂直および水平補間法のシーケンスは、スケーリングファクタに基づいている。本発明の一実施形態によれば、ビデオスケーラ６１２に３つの乗算および加算ユニット８３４があり、このため、３つの垂直補間および水平補間を同時に遂行できる。
【０３１１】
図４０は、図３２〜図３９に関連して説明した３Ｄグラフィックス処理に含まれるステップを要約するフローチャートである。かくして、ステップ８８０では、VLIWプロセッサ１０２が、フレーム内のすべての三角形について、スクリーン座標、カラーおよびビニングパラメータを計算することにより、ジオメトリデータを計算する。ステップ８８２では、ビニング表示信号を３Ｄ三角形ラスタライザ６０７に供給することにより、ビニングのために固定機能ユニットがアクティブにされる。ビニングの結果として、すべてのビンのタイルインデックスおよびタイルデータがステップ８８４で計算される。
【０３１２】
ステップ８８６では、フレーム内のすべてのビンについて、セットアップおよび三角形内の可視画素の補間が開始する。かくして、ステップ８８８で、VLIW１０２が三角形セットアップデータを計算する。ステップ８９０では、３Ｄ三角形ラスタライザは、ステップ８９２で補間モードで３Ｄ三角形ラスタライザ６０７をアクティブにすることにより、三角形内の各画素について、x、y、z、RGBA [s、tおよびw]を含む、表現のためのパラメータを計算する。パラメータs、tおよびwは、均質テクスチャ座標であり、遠近法補正として知られたパラメータとして用いられる。均質テクスチャ座標は、どのテクセルが画素に対応するかを表示する。
【０３１３】
ビン内のすべての画素について、VLIW１０２は、３Ｄ三角形ラスタライザ６０７により得られたs、t、w計算に応答して、各該装置についてのテクスチャ座標を計算する。ステップ８９６では、３Ｄテクスチャコントローラ６０９がテクスチャアドレスを計算する。ステップ８９８では、データストリーマ１２２が、計算されたテクスチャアドレスに応答してメモリ１２８からテクセルをフェッチする。データストリーマ１２２がビンに対応するテクセルをフェッチしている間に、VLIWプロセッサ１０２は、次のビンに対応するテクスチャ座標u、vを計算する。これは、本発明の一実施形態により、データキャッシュ１０８の構造が、固定機能ユニットによるキャッシュへのアクセスを可能にすることから可能になる。
【０３１４】
ステップ９００では、ビデオスケーラ６１２が３Ｄテクスチャフィルタ６１０に関連してアクティブにされ、フェッチされたフィルタの一部でテクセルフィルタリングを遂行する。
【０３１５】
本発明の一実施形態では、ステップ９０２〜ステップ９１２で、ステップ８９４〜ステップ９００に関連して説明したのと同じ原理に基づいて、断片のすべての画素についてのアンチエイリアシングおよびαブレンディングを遂行する。ステップ９１４で、固定機能ユニットにより得られたデータが、データをSDRAM１２８のローカルメモリ空間のようなローカルメモリ空間にデータを転送するデータストリーマ１２２を用いることにより、フレームバッファに記憶される。
【０３１６】
かくして、本発明は、マルチメディアプロセッサにデータキャッシュを用い、かつ各ビンに関する対応データをデータキャッシュに記憶することによりビニング処理を行うことができる。また、本発明の一態様によれば、テクセルのフェッチングの前に、三角形の可視画素が最初に識別され、かくして対応するテクセルのみがローカルメモリから検索される。
【０３１７】
以上、本発明の或る特徴のみを示しかつ説明したが、当業者には多くの変更、置換または均等物が明らかであろう。従って、特許請求の範囲の記載は、このような変更等をカバーするものであることを理解されたい。
【図面の簡単な説明】
【０３１８】
【図１】本発明の一実施形態によるマルチメディアプロセッサシステムを示すブロック図である。
【図２】図１に示したマルチメディアプロセッサシステムの入力／出力（I/O）ユニットを示すブロック図である。
【図３】本発明の一実施形態による、ホストコンピュータと関連するマルチメディアプロセッサを用いたマルチメディアシステムを示すブロック図である。
【図４】本発明の一実施形態によるマルチメディアプロセッサを用いた単独マルチメディアシステムを示すブロック図である。
【図５】本発明の一実施形態によるデータ転送スイッチに関連するデータ転送作動を示すフローチャートである。
【図６】本発明の一実施形態によるデータ転送スイッチを用いた読取りトランザクションを示すフローチャートである。
【図７】本発明の一実施形態によるデータ転送スイッチを用いた読取りトランザクションを示すフローチャートである。
【図８】本発明の一実施形態によるリクエストバス接続中の信号の流れを示す図面である。
【図９】本発明の一実施形態による内部メモリバス接続中の信号の流れを示す図面である。
【図１０】本発明の一実施形態によるリクエストバス読取り演算を示すタイミング図である。
【図１１】本発明の一実施形態による、認可が直ちには与えられない読取りリクエストを示すタイミング図である。
【図１２】本発明の一実施形態によるリクエストバス書込み演算を示すタイミング図である。
【図１３】本発明の一実施形態による、データバス転送演算を示すタイミング図である。
【図１４】バックトゥバック読取りリクエストを作るリクエストバスマスタを示すタイミング図である。
【図１５】第２リクエストに対して認可が直ちには行われないときに、バックトゥバックリクエストを作るプロセッサメモリバスマスタを示すタイミング図である。
【図１６】書込みリクエストが後続する読取りリクエストを受けるリクエストバススレーブを示すタイミング図である。
【図１７】本発明の一実施形態によるデータストリーマを示すブロック図である。
【図１８】本発明の一実施形態によるデータストリーマに用いられる転送エンジンを示すブロック図である。
【図１９】本発明の一実施形態によるデータ転送スイッチを示すブロック図である。
【図２０】本発明の一実施形態によるデータストリーマバッファコントローラを示すブロック図である。
【図２１】本発明の一実施形態によるダイレクトメモリアクセスコントローラを示すブロック図である。
【図２２】本発明の一実施形態に従って使用される例示メモリアドレス空間を示す図面である。
【図２３】本発明の一実施形態によるチャネル記述子のデータ構造を示す図面である。
【図２４】本発明の他の実施形態によるチャネル記述子のデータ構造を示す図面である。
【図２５】本発明の一実施形態に従ってデータ経路をセットするフローチャートである。
【図２６】本発明の一実施形態に従ってデータ経路をセットするフローチャートである。
【図２７】本発明の一実施形態に従ってデータ経路をセットするフローチャートである。
【図２８】従来技術によるキャッシュメモリシステムを示すブロック図である。
【図２９】本発明の一実施形態によるキャッシュメモリシステムを示すブロック図である。
【図３０】従来技術のキャッシュメモリシステムの演算を示すフローチャートである。
【図３１】本発明の一実施形態によるキャッシュメモリシステムの演算を示すフローチャートである。
【図３２】本発明の一実施形態によるマルチメディアプロセッサのデータキャッシュに関連する固定機能ユニットを示すブロック図である。
【図３３】本発明によるビニングモードにある３Ｄテクスチャコントローラを示すブロック図である。
【図３４】本発明による補間モードにある３Ｄテクスチャコントローラを示すブロック図である。
【図３５】本発明の一実施形態による３Ｄテクスチャコントローラを示すブロック図である。
【図３６】本発明の一実施形態による３Ｄテクスチャフィルタを示すブロック図である。
【図３７】本発明の一実施形態によるビデオスケーラを示すブロック図である。
【図３８】本発明の一実施形態によるビデオスケーラを示すブロック図である。
【図３９】本発明の一実施形態によるビニング処理を受ける三角形のプロットを示す図面である。
【図４０】本発明の一実施形態に従って３Ｄグラフィックスを実行する処理を示すフローチャートである。
【図１】
2006185460.tif 000027
【図２】
2006185460.tif 000028
【図３】
2006185460.tif 000029
【図４】
2006185460.tif 000030
【図５】
2006185460.tif 000031
【図６】
2006185460.tif 000032
【図７】
2006185460.tif 000033
【図８】
2006185460.tif 000034
【図９】
2006185460.tif 000035
【図１０】
2006185460.tif 000036
【図１１】
2006185460.tif 000037
【図１２】
2006185460.tif 000038
【図１３】
2006185460.tif 000039
【図１４】
2006185460.tif 000040
【図１５】
2006185460.tif 000041
【図１６】
2006185460.tif 000042
【図１７】
2006185460.tif 000043
【図１８】
2006185460.tif 000044
【図１９】
2006185460.tif 000045
【図２０】
2006185460.tif 000046
【図２１】
2006185460.tif 000047
【図２２】
2006185460.tif 000048
【図２３】
2006185460.tif 000049
【図２４】
2006185460.tif 000050
【図２５】
2006185460.tif 000051
【図２６】
2006185460.tif 000052
【図２７】
2006185460.tif 000053
【図２８】
2006185460.tif 000054
【図２９】
2006185460.tif 000055
【図３０】
2006185460.tif 000056
【図３１】
2006185460.tif 000057
【図３２】
2006185460.tif 000058
【図３３】
2006185460.tif 000059
【図３４】
2006185460.tif 000060
【図３５】
2006185460.tif 000061
【図３６】
2006185460.tif 000062
【図３７】
2006185460.tif 000063
【図３８】
2006185460.tif 000064
【図３９】
2006185460.tif 000065
【図４０】
2006185460.tif 000066
【手続補正書】
【提出日】平成18年3月2日(2006.3.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
グラフィックス処理を行うマルチメディアプロセッサにおいて、
スクリーンを所定の画素数を含む複数の画素群に分割し、該スクリーン上に表示される表示対象を形成する複数の三角形に関する特性情報を発生するマイクロプロセッサ回路と、
第１の経路を介して前記マイクロプロセッサ回路に接続され、前記三角形に関する特性情報を記憶するデータキャッシュと、
第２の経路を介して前記データキャッシュに接続され、前記三角形に関する特性情報に基づいて、前記複数の画素群の各々について前記画素群と交差する三角形を識別する三角形ラスタライザと、を有すること
を特徴とするマルチメディアプロセッサ。
【請求項２】
請求項１記載のマルチメディアプロセッサにおいて、
前記三角形に関する特性情報とは、前記三角形に関する前記スクリーン上での座標値を少なくとも含むジオメトリデータであること
を特徴とするマルチメディアプロセッサ。
【請求項３】
請求項１記載のマルチメディアプロセッサにおいて、
前記マイクロプロセッサ回路と前記三角形ラスタライザとは第３の経路を介して接続され、該第３の経路はバスであること
を特徴とするマルチメディアプロセッサ。
【請求項４】
請求項３記載のマルチメディアプロセッサにおいて、
前記三角形ラスタライザは、前記第３の経路を介してローカルメモリユニットに接続され、前記三角形と交差する前記画素群を識別した結果データを前記ローカルメモリユニットに供給すること
を特徴とするマルチメディアプロセッサ。
【請求項５】
請求項４記載のマルチメディアプロセッサにおいて、
前記データキャッシュに接続され、前記ポインタ情報を記憶するメモリユニットを更に有すること
を特徴とするマルチメディアプロセッサ。
【請求項６】
請求項５記載のマルチメディアプロセッサにおいて、
前記メモリユニットおよび前記データキャッシュに接続され、
前記メモリユニットおよび前記データキャッシュ各々との間でデータを転送するデータストリーマを更に有すること
を特徴とするマルチメディアプロセッサ。
【請求項７】
グラフィックス処理を行うマルチメディアプロセッサにおいて、
所定数の画素をもつ複数の画素群により形成されるスクリーン上の表示対象を形成する複数の三角形に関する特性情報を発生するマイクロプロセッサ回路と、
前記マイクロプロセッサ回路に接続され、前記三角形に関する特性情報を記憶するデータキャッシュと、
前記データキャッシュに接続され、グラフィックラスタライゼーションを行って各三角形内の画素についての画素情報を前記データキャッシュに供給する三角形ラスタライザと、を有するマルチメディアプロセッサ。
【請求項８】
請求項７記載のマルチメディアプロセッサにおいて、
前記データキャッシュとマイクロプロセッサ回路とが第１の経路により接続され、前記データキャッシュと前記三角形ラスタライザとが第２の経路により接続され、前記マイクロプロセッサ回路と前記三角形ラスタライザとは第３の経路であるバスを介して接続されていること
を特徴とするマルチメディアプロセッサ。
【請求項９】
請求項８記載のマルチメディアプロセッサにおいて、
前記三角形ラスタライザは、前記データキャッシュに接続され、前記三角形の各々に関する特性情報を受けるテクスチャ座標補間回路と、前記データキャッシュに接続され、前記三角形の各々に関する特性情報を受けるシェーディングカラー補間回路と、前記データキャッシュに接続され、前記三角形の各々に関する特性情報を受ける深さ補間回路と、を有すること
を特徴とするマルチメディアプロセッサ。
【請求項１０】
請求項９記載のマルチメディアプロセッサにおいて、
前記テクスチャ座標補間回路は、前記三角形内の各画素のテクスチャ座標をデータキャッシュに供給すること
を特徴とするマルチメディアプロセッサ。
【請求項１１】
請求項９記載のマルチメディアプロセッサにおいて、
前記テクスチャ座標補間回路は、前記スクリーン上で見ることができる各画素のテクスチャ座標をデータキャッシュに供給すること
を特徴とするマルチメディアプロセッサ。
【請求項１２】
請求項１１記載のマルチメディアプロセッサにおいて、
前記データキャッシュに接続され、前記スクリーン上で見ることができる前記画素のメモリ位置を生成するテクスチャコントローラをさらに有すること
を特徴とするマルチメディアプロセッサ。
【請求項１３】
請求項９記載のマルチメディアプロセッサにおいて、
前記シェーディングカラー補間回路は、前記三角形内の各画素のシェーディングカラー座標を前記データキャッシュに供給すること
を特徴とするマルチメディアプロセッサ。
【請求項１４】
請求項９記載のマルチメディアプロセッサにおいて、
前記シェーディングカラー補間回路は、前記スクリーン上で見ることができる各画素のシェーディングカラー座標をデータキャッシュに供給すること
を特徴とするマルチメディアプロセッサ。
【請求項１５】
請求項１４記載のマルチメディアプロセッサにおいて、
前記データキャッシュに接続され、前記スクリーン上で見ることができる前記画素のメモリ位置を生成するテクスチャコントローラをさらに有すること
を特徴とするマルチメディアプロセッサ。
【請求項１６】
グラフィックス処理を行うマルチメディアプロセッサにおいて、
所定数の画素をもつ複数の画素群により形成されるスクリーン上の表示対象を形成する複数の三角形に関する特性情報を発生するマイクロプロセッサ回路と、
前記マイクロプロセッサ回路に接続され、前記三角形に関する特性情報を記憶するデータキャッシュと、
前記データキャッシュに接続され、グラフィックラスタライゼーションを行って各三角形内の画素についての画素情報をデータキャッシュに供給する三角形ラスタライザと、
前記データキャッシュに接続され、前記三角形ラスタライザにより供給される前記画素情報に応答して受け入れられるテクセルのフィルタリングを行うテクスチャフィルタと、
前記テクスチャフィルタに接続され、スケーリングされた画像を供給するスケーリング演算を行うビデオスケーラと、を有するマルチメディアプロセッサ。
【請求項１７】
請求項１６記載のマルチメディアプロセッサにおいて、
前記ビデオスケーラは、複数の隣接垂直画素および水平画素に対応する情報に、各画素に関連して予め定められた計数を乗じる乗算および加算ユニットを有していること
を特徴とするマルチメディアプロセッサ。
【請求項１８】
請求項１６記載のマルチメディアプロセッサにおいて、
前記テクスチャフィルタは、前記データキャッシュに接続され、複数の垂直テクセルおよび水平テクセルを補間する水平およびリニア補間回路を有し、
前記リニア補間回路は、前記ビデオスケーラの前記乗算および加算ユニットからの補間結果を受け入れること
を特徴とするマルチメディアプロセッサ。
【請求項１９】
マルチメディアプロセッサでグラフィックス処理を行う情報処理方法において、
所定数の画素をもつ複数の画素群により形成されるスクリーン上の表示対象を形成する複数の三角形に関する特性情報を発生し、
前記三角形に関する特性情報をデータキャッシュに記憶し、
前記三角形に関する特性情報に基づいて、前記画素群の各々について前記画素群と交差する三角形を識別すること
を特徴とする情報処理方法。
【請求項２０】
請求項１９記載の情報処理方法において、
前記三角形と交差する前記画素群を識別した結果データを前記第３の経路を介してデータキャッシュに記憶するステップを更に有すること
を特徴とする情報処理方法。
【請求項２１】
請求項１９又は２０記載の情報処理方法において、
前記三角形と交差する前記画素群を識別した結果データとして、前記画素群と交差する三角形の識別情報を供給し、
前記各々の三角形を、前記三角形の各々の中間頂点と交差する水平線により、さらに上方の小三角形と下方の小三角形とに分割すること
を特徴とする情報処理方法。
【請求項２２】
請求項２１記載の情報処理方法において、
前記上方の三角形の各々が位置する画素群を識別し、前記下方の三角形の各々が位置する画素群を識別すること
を特徴とする情報処理方法。