本発明の一実施形態によれば、マルチメディアプロセッサ100がFIG.1に示されているが、本発明の範囲は該マルチメディアプロセッサ100に限定されるものではない。マルチメディアプロセッサ100は、並行演算を取り扱う、すべてプログラム可能な単一チップである。これらの演算として、グラフィックス機能、オーディオ機能、ビデオ機能、通信機能、ネットワーク機能および他のマルチメディア機能の高速化がある。プロセッサ100のすべての主構成要素は1つのチップセット上に配置されるため、より詳細に後述するように、このシステムのスループットは、慣用システムのスループットに比べて著しく優れている。
マルチメディアプロセッサ100は、ホスト型環境およびホストレス型環境の両方に使用できる超長命令語(very-long instruction word: VLIW)を有している。この状況では、ホスト型環境とは、マルチメディアプロセッサ100がINTEL(登録商標)X-86のような別のマイクロプロセッサに接続される環境をいい、ホストレス環境とは、マルチメディアプロセッサ100が単独モジュールとして機能する環境をいう。VLIWプロセッサは、2つのクラスタすなわちCPU102、104を備えた中央処理装置として示されている。これらの処理装置102、104は、それぞれ、マルチメディアプロセッサ100が、本発明の一実施形態に従って単独チップセットとして演算することを可能にする。
VLIWプロセッサの演算は、本願に援用するJohn R. Ellis著「ブルドッグ:VLIWアーキテクチャ用コンパイラ(Bulldog: a Compiler for VLIW Architectures)」(The MIT Press、1986年)に記載されており、非常に良く知られている。基本的には、VLIWプロセッサは、プログラムの命令レベル並列性(instruction-level parallelism: ILP)を活用するのに適したアーキテクチャを使用する。この構成は、1つ以上の基本(原始)命令を一度に実行することを可能にする。これらのプロセッサは、幾つかの原始命令を含んでいる超長命令語を命令キャッシュから取り出して、命令を並列的に実行する多機能ユニットを有している。このため、原始命令から独立して一緒にグループ化された、並列的に実行されるコードを発生する特殊コンパイラが使用される。スーパースケーラプロセッサとは異なり、VLIWプロセッサは比較的簡単な制御論理を有する。なぜならば、VLIWプロセッサは演算のいかなる動的スケジューリングおよびリオーダリングも行わないからである。VLIWプロセッサはRISCへの後継(successor)と見られている。なぜならば、VLIWコンパイラは、以前のプロセッサのハードウェア構造内に埋め込まれた複雑さを引き継ぐからである。
VLIWアーキテクチャの命令セットは、簡単な命令から構成される傾向がある。コンパイラは、多機能ユニットがビジー(busy)に維持されるように、多くの原始演算を単一の「命令語」に組み立てなくてはならない。このためには、可用演算スロット(available operation slots)を満たすべく、コードシーケンスに充分な命令レベル並列性(ILP)を必要とする。このような並列性は、数ある中で、基本ブロックを推論的に横切ってコードをスケジューリングし、ソフトウェアパイプライニングし、かつ実行される演算数を減少させることにより、コンパイラにより暴露される。
VLIWプロセッサ102の出力ポートは、データキャッシュ108に接続されている。同様に、VLIWプロセッサ104の出力ポートは命令キャッシュ110に接続されている。本発明の一実施形態によると、データキャッシュ108および命令キャッシュ110の出力ポートは、次に、データ転送スイッチ112の入力ポートに接続されている。また、マルチメディアプロセッサ100には、より詳細に後述する3次元グラフィック処理を取り扱う固定機能ユニット(fixed function unit)106が配置されている。固定機能ユニット106の出力ポートは、FIG.1に示すように、データ転送スイッチ112の入力ポートに接続されている。固定機能ユニット106はまた、データキャッシュ108の入力ポートにも接続されている。データキャッシュと関連する固定機能ユニットの構成および演算は、FIG.20〜FIG.26を参照してより詳細に説明する。本発明によるデータキャッシュ108の構成および演算は、FIG.17およびFIG.19を参照して以下に詳述する。
FIG.1Aに示すように、マルチメディアプロセッサ100のすべての構成要素はデータ転送スイッチに接続されている。このため、メモリコントローラ124の種々のポートがデータ転送スイッチ112に接続されている。メモリコントローラ124は、SDRAM128のような外部メモリの演算を制御する。データ転送スイッチ112はまた、データストリーマ122に接続されている。より詳細に後述するように、データストリーマ122は、マルチメディアプロセッサ100内でバッファ型データ移動(buffered data movements)を行う。データストリーマ122は更に、帯域幅条件を変化させるメモリデバイスすなわち入力/出力(I/O)デバイス間のデータ転送をサポートする。本発明の一実施形態によれば、データストリーマ122により取り扱われるメモリデバイスは、アドレスできるシステム内の任意の物理的メモリ、例えば外部SDRAM128、データキャッシュ108、および固定機能ユニット106内に配置されるメモリ空間を有する。
また、データストリーマ122は、FIG.1Cを参照してより詳細に後述するように、マルチメディアプロセッサ100がPCIバスを介してホストプロセッサに接続される状況におけるホストメモリへのメモリ転送を取り扱う。このため、マルチメディアプロセッサ100はまた、データ転送スイッチ112に接続されるポートを備えたPCI/AGPインタフェース130を有している。PCI/AGPインタフェース130は、マルチメディアプロセッサ100が、本願に援用するそれぞれ、PCI Architecture specification Rev. 2.1(PCI Special Interest Group発行)およびAGP Architecture Specification Rev. 1.0として知られている標準プロトコルを用いた対応PCIバスおよびAGPバスと通信することを可能にする。
マルチメディアプロセッサ100は、インタフェースユニット130を介してPCIバスまたはAGP(Accelerated Graphics Port: 加速型グラフィックスポート)バスに接続されると、マスタデバイスまたはスレーブデバイスとして機能できる。2つのバスは互いに独立してマルチメディアプロセッサ100に接続できるため、マルチメディアプロセッサ100は、一方のチャネルでバスマスタデバイスとして演算し、かつ他方のチャネルでスレーブデバイスとして演算できる。このため、マルチメディアプロセッサ100は、該プロセッサが、ホストシステムの観点からスレーブデバイスとして演算するときは、多機能PCI/AGPデバイスとして考えることができる。
データストリーマ122はまた、DMA(direct memory access: 直接メモリアクセス)コントローラ138を介して入力/出力(I/O)バス132に接続されている。I/Oバス132には、複数のI/Oデバイスコントローラ134が接続されている。本発明の一実施形態によれば、I/Oデバイスコントローラ134の出力ポートは、多ポートマルチプレクサ(versa port multiplexer)136の入力ポートに接続されている。
プログラム可能な入力/出力コントローラ(programmable input/output controller: PI/OC)126の幾つかのポートがデータ転送スイッチ112に接続されており、他のポートがI/Oバス132に接続されている。
本発明の一実施形態によれば、I/Oデバイスコントローラ134は、協働してインタフェースユニット202を形成し、該インタフェースユニット202は、マルチメディアプロセッサ100と外界とのインタフェースを形成するように構成されている。FIG.1Bに関連してより詳細に説明するように、マルチメディアプロセッサ100は、任意の時点で動作させられるI/Oデバイスの数に基づいて、種々の形態に構成できる。
FIG.1Aに示すように、データ転送スイッチ112は、プロセッサメモリバス(processor memory bus: PMB)114を有し、該プロセッサメモリバス114は、固定機能ユニット106、データキャッシュ108、命令キャッシュ110およびデータストリーマ122からアドレス情報およびデータ情報を受けるように構成されている。
データ転送スイッチ112はまた、内部メモリバス(internal memory bus: IMB)120を有し、該内部メモリバス120は、メモリコントローラ124、データストリーマ122、プログラム可能な入力/出力(I/O)コントローラ126およびPCI/AGPコントローラ130からのアドレス情報およびデータ情報を受けるように構成されている。
データ転送スイッチ112はまた、リクエストバス118を有し、該リクエストバス118は、データ転送スイッチに接続されたマルチメディアプロセッサ100のすべての構成要素からのリクエスト信号を受けるように構成されている。
データ転送スイッチ112はまた、切換可能なトランシーバ116を有し、該トランシーバ116は、プロセッサメモリバス(PMB)114と内部メモリバス(IMB)120との間でデータ接続を行うように構成されている。更に、データ転送スイッチ112は、それぞれ3つのバスアービタユニット140、142、144を有している。かくして、詳細に後述するシステムニーズに基づいて、リクエストバスおよびデータバスについての別のバス仲裁(bus arbitration)が取り扱われる。また、FIG.1Aに示すように、マルチメディアプロセッサ100の異なる構成要素が、別のグループとしてプロセッサメモリバス114または内部メモリバス120に接続されるけれども、データストリーマ122は両メモリバスに直接接続される。本発明の一実施形態によれば、プロセッサメモリバス114および内部メモリバス120はいずれも、それぞれ1600MBのピーク帯域幅に対し200MHZで作動する64ビットまたは8バイトの幅である。
本発明の一実施形態によれば、参照番号140、142、144で示すような各バスアービタは、同時に送られる多数のリクエストのスケジューリングを達成するため、4レベルの先入れ先出し(first-in-first-out: FIFO)バッファを有している。一般に、割当てられた優先レベルに基づいて、各リクエストがサービスされる。
データ転送スイッチ112に接続されるすべての構成要素は、データ転送スイッチエージェントと呼ばれる。また、演算の達成をリクエストする構成要素は、この状況では、イニシエータまたはバスマスタと呼ばれる。同様に、リクエストに応答する構成要素は、この状況では、レスポンダまたはバススレーブと呼ばれる。特定機能についてのまたは特定時点でのイニシエータは、他の機能についてのまたは他の時点でのスレーブとなることに留意されたい。また、より詳細に説明すると、マルチメディアプロセッサ100内のすべてのデータは、1つまたはそれぞれ両データバス114、120を用いて伝送される。
内部メモリバス(IMB)およびプロセッサメモリバス(PMB)の作動を支配するプロトコルを、以下により詳細に説明する。本発明の一実施形態によれば、リクエストバス114、118、120は、それぞれ、受け手アドレス(destination address)を表示するリクエストアドレスに適合する信号ラインを有している。リクエストフェーズの間、リクエストを行う構成要素はバスマスタであり、受け手アドレスに位置する構成要素はバススレーブである。リクエストバスはまた、リクエストバイト読取り可能信号と、リクエストのイニシエータを識別するリクエストイニシエータ識別信号とを有している。
データ転送フェーズの間、リクエストフェーズの受け手アドレスはバスマスタとなり、かつリクエストフェーズの間に開始する構成要素はバススレーブとなる。バスはまた、データ転送フェーズの間にバススレーブによりユニークに発生されるトランザクション識別ID信号に適合するラインを有している。
バスの付加ラインは、データ転送サイズをあてがうので、オリジネータおよび受け手側端点がトラックを2つのユニット間の転送のサイズに維持できる。また、バスは、処理されるコマンドの形式に適合する信号ラインを有する。
マルチプレクサに関連するインタフェースユニット202の演算を、FIG.1Bに関連して以下により詳細に説明する。
インタフェースユニットおよびマルチプレクサ
マルチメディアプロセッサ100は、最小のホストへの負荷および高いメディア品質により、スタンドアロンユニットとしてまたはパソコン上で、並行マルチメディア機能およびI/O機能を遂行することを可能にする。マルチプレクサ136は、マルチメディアプロセッサ100がブート(boot)されるとソフトウェア構成できるI/Oピンセットを与える。これは、I/O機能をフレキシブルにし、かつソフトウェアをアップグレードする。I/Oピンセットの定義は、起動されているI/Oデバイスコントローラ134に基づいて定められる。
かくして、本発明の一実施形態によれば、マルチメディアプロセッサ100で構成されたI/Oインタフェースユニットは、例えば、ソフトウェアアップグレードをロードし、かつリブートすることにより変更できる。同様に、新しい規格および特徴を利用できるようになると、ソフトウェアアップグレードが、ハードウェアアップグレードにとって代わることができる。
I/Oインタフェースユニットは、NTSC/PALエンコーダおよびデコーダデバイスコントローラ224を有し、該コントローラ224はI/Oバス132およびマルチプレクサ136に接続されている。ISDN GCIコントローラ220もI/Oバス132およびマルチプレクサ136に接続されている。同様に、T1ユニット210もI/Oバス132およびマルチプレクサ136に接続されている。レガシーオーディオ信号インタフェースユニット218は、I/Oバス132およびマルチプレクサ136に接続され、かつレガシーと呼ばれるオーディオプロトコルに従ってオーディオ信号インタフェースを形成するように構成されている。オーディオコーデック(audio codec: AC)ユニット214は、オーディオコーデックインタフェース信号を発生するように構成されている。オーディオコーデックユニット214は、I/Oバス132およびマルチプレクサ136に接続されている。ユニバーサル直列バス(universal serial bus: USB)ユニット222も、I/Oバスおよびマルチプレクサ136に接続されている。USBユニット222は、マルチメディアプロセッサ100が、例えばキーボードデバイス、ジョイスティックおよびマウスデバイスからの制御信号を受けるためのUSBバスと通信することを可能にする。同様に、IEC958インタフェース208もI/Oバス132およびマルチプレクサ136に接続されている。
I2S(Inter-IC Sound)インタフェース212は、ホームシアタ用のD/Aコンバータ(図示せず)を駆動するように構成されている。I2Sインタフェースは、一般に、データとクロック信号とを結合して直列データ流を作る必要があるCDプレーヤに使用されている。このインタフェースとして、別々のマスタクロック、ワードクロック、ビットクロック、データおよびオプショナル強調フラグがある。
I2Cバスインタフェースユニット216は、マルチメディアプロセッサ100と外部オンボードデバイスとの間の通信を行うように構成されている。IIC規格の演算は、本願に援用するPhillips Semiconductors社の刊行物「I2Cバスおよびその使用法(The I2C-bus and How to Use it)(含:仕様書)」(1995年4月)に開示されており、良く知られている。
バスインタフェースユニット216は、ディスプレイデータチャネルインタフェース(DDC)規格として知られている通信プロトコルに従って演算する。DDC規格は、コンピュータディスプレイとホストシステムとの間の通信チャネルを形成する。このチャネルは、形状情報の搬送、ディスプレイの最適使用およびディスプレイ制御情報の搬送に使用できる。また、このチャネルは、ディスプレイを介してホストに接続されるアクセスバス周辺機器用のデータチャネルとしても使用できる。ディスプレイデータチャネル規格は、ディスプレイデータチャネル仕様のためのVESA(Video Electronics Standard Association)に従ってデータを供給すべく構成されたハードウェア構成を必要とする。
上記各I/Oデバイスコントローラの機能を、以下に更に詳細に説明する。
RAMDACまたはSVGA DACインタフェース204は、外部RAMDACへの直接接続を行う。このインタフェース204はまた、CRTコントローラおよびクロックシンセサイザを有している。RAMDACは、I2C直列バスを介してプログラムされる。
NTSCデコーダ/エンコーダコントローラデバイス224は、CCIR601/656規格に従ってNTSCビデオ信号に直接インタフェースし、統合された単独構成を形成する。これにより、マルチメディアプロセッサ100が、直接、高品位NTSCまたはPALビデオ信号を発生できるようになる。このインタフェースは、CCIR601規格により特定された解像度をサポートできる。プロセッサ102での進歩したビデオフィルタリングにより、プログレッシブ/インターレースおよびインターレース/プログレッシブ出力を変換するときに、フリッカのない出力が得られる。NTSCエンコーダは、I2C直列バスを介して制御される。
同様に、NTSCデコーダコントローラは、13.5MHZ画素速度で16YUVまで発生できるCCIR601/656フォーマット化NTSCビデオ信号への直接接続を行う。
ISDN(Integrated Services Digital Networks standard: 統合サービスデジタルネットワーク規格)インタフェース220は、外部ISDN UまたはS/Tインタフェースデバイスを介してISDN BRI(basic rate interface: 基本速度インタフェース)をサポートする5ピンインタフェースを有している。ISDN規格は、汎用デジタル電話網仕様を形成し、かつ1980年代の半ばから存在している。このモジュールの機能性は直列通信コントローラと同じ原理に基づいており、ISDN Uインタフェースデバイスに接続するのにIDL2およびSCPインタフェースを用いている。
T1インタフェース210は、T1直列または並列インタフェースを介して、第三者のT1 CSU(channel service unit: チャネルサービスユニット)またはデータサービスユニット(DSU)への直接接続を行っている。CSU/DSUおよび直列/並列出力は、専用抵抗器を介して構成できるソフトウェアである。別のユニットが、信号およびデータ制御を取り扱う。一般に、チャネルサービスユニット(CSU)はT1ネットワークから受けた波形を再生し、ユーザにDSC-1インタフェースでのきれいな信号を提供する。CSUはまた、送られたデータを再生する。遠隔試験機能として、ネットワーク側から試験するループバックがある。また、データサービスユニット(DSU)は、例えば特殊コーティングを用いてゼロを抑制することにより顧客のデータがDSC-1インタフェースのフォーマット条件に合致させる。DSUはまた、試験用のローカルおよび遠隔ループバックを備えた端末を構成する。
本発明の一実施形態による単一のマルチメディアプロセッサは、V.34モデムデータトラフィックの24チャネルまでを取り扱うように構成されており、V.PCNL機能とV.34機能とを混合する。この特徴は、マルチメディアプロセッサ100を用いてモデム集信機を構成することを可能にする。
レガシーオーディオユニット218は、レガシーオーディオPro8ビットステレオ規格に従って構成される。レガシーオーディオユニット218は、レジスタ通信演算(リセット、コマンド/ステータス、読取りデータ/ステータス)、デジタル化された音声演算(DMAおよびDirectモード)、およびプロフェッショナルミキササポート(CT1 345、モジュールミキサ)を行う。このユニット218の機能として、
8ビットモノラル/ステレオDMAスレーブモードプレー/録音
Directモード用8ビットホストI/Oインタフェース
リセット、コマンド/データ、コマンドステータス、読取りデータおよび読取りステータスレジスタサポート
プロフェッショナルミキササポート
FMシンセサイザ(OPLII、IIIまたはIVアドレスデコーディング)
MPU401 Generalサポート
ジョイスティックインタフェースサポート
ネイティブDOSモード用ソフトウェア形態サポート
Windows DOS ボックスの資源用PnP(plug and play: プラグおよびプレー)サポート
がある。
PCI信号デコーダユニットは、マルチプレクサ136ポートを介してPCIレガシーオーディオ信号の直接出力を行う。
AC Linkインタフェース214は、2方向固定速度直列PCMデジタル流である5ピンデジタル直列インタフェースである。AC Linkインタフェース214は、多入力/出力オーディオ流並びにTDMフォーマットを用いる制御レジスタアクセスを取り扱うことができる。インタフェースは、各オーディオフレームを、12個の出ていくデータ流および12個の入ってくるデータ流(各データ流は、20ビットサンプル解像度をもつ)に分割する。インタフェース214として、固定48 KS KS/S DACおよびADCミキシング、およびアナログ処理がある。
トランスポートチャネルインタフェース(TCI)206は、トランスポート層フォーマットの復調チャネルデータを受け入れる。トランスポートチャネルインタフェース(TCI)206は、衛星またはケーブルからのパケットデータを同期化し、次に、バイトアラインドデータ(byte-aligned data)をアンパック(unpack)しかつDMAコントローラを介してマルチメディアプロセッサ100メモリ内に入れる。基本的に、トランスポートチャネルインタフェースは、トランスポート層フォーマットの復調チャネルデータを受け入れる。トランスポート層フォーマットは、4つのバイトヘッダおよび184バイトペイロードを備えた188バイトパケットからなる。インタフェースは、あらゆるトランスポートヘッダの第1バイトである同期バイトを検出できる。バイト同期が検出されたならば、インタフェースは、バイトアラインドデータを、データストリーマ122およびデータ転送スイッチ112(FIG.1A)を介して、マルチメディアプロセッサ100のメモリバッファ内に導く。トランスポートチャネルインタフェースはまた、MPEG-2システムのトランスポートパケットを、バイト並列またはバイト直列フォーマットに受け入れる。
マルチメディアプロセッサ100は、ビデオチャネルおよびオーディオチャネルにクロック補正および同期化を行う。
ユニバーサル直列バス(USB)インタフェース222は、低速デバイスと通信する標準インタフェースである。このインタフェースは、標準仕様に一致する。Philips PDIUSBIIのような外部モジュールに接続することを期待するのは4ピンインタフェース(2つのパワーピンおよび2つのデータピン)である。
マルチメディアプロセッサ100はUSBハブとしては作用しないが、12Mbpsおよび1.5Mbpsデバイスと通信できる。ソフトウェアは、いずれの速度でも実行できるように構成できる。12Mbpsの速度で実行するように構成すると、マルチメディアプロセッサは、個々のデータパケットを1.5Mbpsデバイスに送ることができる。本発明の一実施形態によれば、マルチメディアプロセッサ100は、USBを介して256個までのデバイスと通信する。
USBは、タイムスロット型バスである。タイムスロットは1ミリ秒である。各タイムスロットには、等時性、非同期制御またはデータである多トランザクションを含めることができる。データトランザクションは非同期である。データはビットスタッフィングを有するNRZIである。これは、すべての6ビット可変長データパケットが少なくとも1回CRC保護されると、クロック調節のトランジションを保証する。バルクデータトランザクションは、より長いデータ流を、1パケット当たり1023バイトまでのパケットに分割し、1タイムスロット当たり1つのパケットを送り出す。
IEC958インタフェースユニット208は、Sony Philips Digital Interface (SPDIF); Audio Engineering Society/European Broadcast Union (ES/EBU) インタフェース;TOSLINKインタフェース等の幾つかのオーディオ規格をサポートするように構成されている。TOSLINKインタフェースは、外部IRデバイスを必要とする。IEC958プロトコルコンベンションは、サウンドサンプルの各マルチビットフィールドが、最初に最下位ビット(リトル−エンディアン: little-endian)で、内または外にシフトすることを要求する。
インタフェースユニット202はまた、ホームシアタ用の高品位(95dB SNR以上)オーディオデジタル/アナログ(D/A)コンバータを駆動するように構成されたI2Sコントローラユニット212を有している。タイミングは、18ビットモードまたは16ビットモードにソフトウェア構成できる。
I2Cユニット216は、主としてマルチメディアプロセッサ100と外部オンボードデバイスとの間の通信を行うI2C規格を用いている。I2Cユニット216は2ライン直列インタフェースからなり、マルチメディアプロセッサ100が、I2Cバスにあるマスタおよびスレーブデバイスとして機能できるようにする物理的層(signaling)を形成する。この結果、マルチメディアプロセッサ100は、ステータスを遅延させかつ外部デバイスへの情報を制御するための付加ハードウェアは不要である。
DDCインタフェースは、ディスプレイデータチャネル(Display Data Channel: DDC)仕様バージョン1、2aのVESA規格に完全に従う。DDC仕様のコンプライアンスは、標準VGAコネクタの2ピンを介してのDDC制御および標準VGAコネクタの2ピンを通るI2C接続を介してのDDC制御により与えられる。
上記各I/Oユニットは、I/Oバス132上の所定アドレスに位置するPIOレジスタに一致する制御レジスタ(図示せず)を有する点で優れていることに留意されたい。この結果、各ユニットはI/Oバス132を介して適当な制御信号を受けることにより直接制御される。
かくして、本発明の一実施形態によれば、マルチメディアプロセッサ100は、所望セットのI/Oデバイスがマルチプレクサ136を介して外界にアクセスするようにI/Oユニット202のI/O形態を再プログラミングすることにより、種々のシステムを用いることができる。マルチプレクサ136のピン形態は、I/Oユニット202の形態に基づいて変化する。マルチメディアプロセッサ100を用いるシステムが使用される幾つかの例示用途として、3次元(3D)ジオメトリPC、マルチメディアPC、セットトップボックス/3Dテレビジョン、またはWeb TV、および通信モデルシステムがある。
演算中に、プロセッサ102は、I/Oバス132を介して適正信号をI/Oユニット202に供給して、所望のI/Oユニットをマルチプレクサ136を介して外界に接続すべくプログラムできる。例えば、本発明の一実施形態によれば、TCIユニット206は、TV信号を受信すべく、マルチプレクサ136を介して外部チューナシステム(図示せず)に接続するためにアクティブにされる。マルチメディアプロセッサ100は、受信した信号を操作して、これをモニタのようなディスプレイユニット上にディスプレイする。本発明の他の実施形態によれば、NTSCユニット224は、NTSCコンプライアントTV信号を受信すべく、マルチプレクサ136を介して外部チューナシステム(図示せず)に接続するためにアクティブにされる。
本発明の原理に従って、他の用途に使用できることは理解されよう。図示の目的から、FIG.1CおよびFIG.1Dは、後述のように、本発明の2つの実施形態に従って構成される2つの典型的なシステムのブロック図を示すものである。
かくして、FIG.1Cには、マルチメディアプロセッサ100を用いたマルチメディアシステムが示されており、該マルチメディアシステムは、本発明の一実施形態に従って、X86(登録商標)のようなホストプロセッサ230を用いて演算する。マルチメディアプロセッサ100は、加速型グラフィックスバス(accelerated graphics bus: AGP)を介してホストプロセッサに接続される。プロセッサ230は、PCIバス260およびサウスブリッジユニット232を介してISAバスに接続される。参照番号218(FIG.1B)で示すようなオーディオI/Oコントローラは、ISA SB/Comm マッパ232およびマルチプレクサ136を介して、ISAバス258との間で信号をやりとりするように構成されている。また、I2C/DDCドライバユニット216は、マルチプレクサ136を介して対応標準コンプライアント信号を受けるように構成されている。ドライバユニット216は、CRT解像度、スクリーンサイズおよびアスペクト比を制御する信号を供給することを意図したデータチャネル信号を受ける。マルチメディアプロセッサ100のISDN/GCIドライバユニット221は、ISDN UまたはS/Tインタフェースユニット236との間で信号をやりとりするように構成されている。
マルチメディアプロセッサ100は、アナログRGB信号を、ディスプレイリフレッシュユニット226を介してCRTモニタ(図示せず)に供給する。マルチメディアプロセッサ100はまた、CCIR/NTSCドライバユニット224およびNTSCエンコーダユニット238を介して、NTSCまたはPALコンプライアントビデオ信号を供給するようにも構成されている。局部発振ユニット244は、54MHZの信号をマルチメディアプロセッサ100に供給して、NTSC信号を処理する。
復調器ユニット246は、マルチメディアプロセッサ100のトランスポートチャネルインタフェースドライバユニット206に接続される。復調器ユニット246は、直交振幅変調または直交位相シフトキーイング変調またはF.E.C.に基づいて、信号を復調するように構成されている。
マルチメディアプロセッサ100には第2PCIバス252も接続されており、該第2PCIバス252は、ビデオデコーダ248により発生された信号を受け、Brooktree(登録商標)により与えられる、Bt484規格に従ったNTSC/PAL信号を供給する。また、バス252は、1394ユニット250を介して高速直列データインタフェースを可能にする1394 link/phy規格による信号を受ける。バス252はまた、他のマルチメディアプロセッサ100に接続できる。
最後に、マルチメディアプロセッサ100は、AC'97規格によるコーデック254を介してアナログオーディオ信号を受けるように構成されている。局部発振器256は、AC'97コーデックを作動させるための発振信号を発生する。
FIG.1Dは、本発明の他の実施形態によるマルチメディアプロセッサ100を用いるマルチメディアTVまたはWEB TVのようなスタンドアロンシステムを示す。スタンドアロン形態では、マルチメディアプロセッサ100は、キーボード、マウスおよびジョイスティック等のユーザインタフェースデバイスを介しての制御を可能にするユニバーサル直列バス(USB)ドライバユニット222をアクティブにする。スタンドアロン形態では、VLIWプロセッサが、後述のように、マルチメディアプロセッサ100の他のモジュールに関連するすべてのグラフィックタスクを遂行することに留意されたい。しかしながら、ホストプロセッサ230により演算する構成では、幾つかのグラフィックタスクがホストプロセッサにより遂行される。
データ転送スイッチ
FIG.2は、本発明の一実施形態によるデータ転送スイッチの作動を示すフローチャートであるが、本発明の範囲はこれに限定されるものではない。
FIG.2は、データキャッシュ108内のデータをメモリコントローラ124を介してSDRAM128内の一位置に書き込むトランザクションのような、マルチメディアプロセッサ100内の1つの機能ユニットから他の機能ユニットへの書込みトランザクションにおけるイニシエーションフェーズの一例を説明するバスプロトコルのフローチャートを示すが、本発明はこれに限定されるものではない。かくして、この例では、リクエストバスマスタはデータキャッシュ108であり、リクエストバススレーブはメモリコントローラ124である。ステップ402では、リクエストバスマスタは、レスポンダIDおよび明記できる優先レベルと一緒に、書込みリクエストをリクエストバスアービタ140に送る。ステップ404では、リクエストバスアービタは、リクエストバススレーブ(この場合には、メモリコントローラ124)が書込みリクエストを受け入れる準備ができているか否かを決定する。準備ができている場合には、リクエストバスアービタ140は、トランザクションIDと一緒に、認可信号(grant signal)をデータキャッシュ108に送り、次に、書込みリクエストをメモリコントローラ124に送る。
ステップ406では、リクエストバスマスタが、アドレス、コマンド、サイズおよびそれ自体の識別子ID信号を、リクエストバス118に供給する。この間、前のリクエスト信号に応答するリクエストバススレーブは、更新されたレディ信号をリクエストバスアービタ140に送り、該アービタが付加リクエストを受け入れることができるか否かを表示する。また、リクエストバススレーブは、トランザクション識別子IDをリクエストバスに置く。このトランザクション識別子は、このトランザクションへの入口がスレーブの書込みキュー内にあることを表示するのに使用される。リクエストバスマスタは、該マスタが、バススレーブからのこのリクエストに対応するデータを受けるときにこのトランザクションIDをサンプリングする。
上記書込みトランザクションでは、リクエストバスマスタ例えばデータキャッシュ108もデータバスマスタになる。かくして、ステップ408では、データキャッシュ108は、レシーバ識別子、適用可能な優先レベルおよびトランザクションサイズと一緒に書込みリクエストをデータバスアービタ(この場合には、プロセッサメモリバス114)に送る。ステップ410では、データバスアービタ114は、認可信号をデータバスマスタに送り、次に、リクエスト信号をデータバススレーブ(図示の例では、メモリコントローラ124)に送る。
ステップ412では、データバスマスタが、4連続サイクルまで、データおよびバイト許可信号をデータバスに供給する。応答時に、データバススレーブは、データをサンプリングする。データバスマスタも、ステップ404でリクエストバススレーブから元々受けたトランザクションIDを供給する。最後に、データバスアービタは、データバススレーブにより使用されるトランザクションのサイズを与える。
FIG.3Aは、データ転送スイッチ112を用いる読取りトランザクションを示すフローチャートである。この例では、データキャッシュ108はSDRAM128で読取り演算を行うと考えられる。かくして、ステップ420では、リクエストバスマスタ(この例ではデータキャッシュ108)は、レスポンダ識別子ID信号および明記できる優先レベルと一緒に読取りリクエストをリクエストバスアービタ140に送る。ステップ422では、リクエストバスアービタは、リクエストバススレーブがトランザクションに利用できるか否かを決定する。利用できる場合には、リクエストバスアービタ140はトランザクションIDと一緒にリクエストバスマスタに信号を送り、かつ読取りリクエストをリクエストバススレーブ(この例では、メモリコントローラ124)に送る。ステップ424では、リクエストバスマスタ(データキャッシュ108)は、アドレス、サイズ、バイト読取りイネーブル(byte read enable)およびそれ自体の識別信号IDをリクエストバスに供給する。その間に、リクエストバススレーブはリクエストバスアービタ140のレディ信号を更新して、より多くのアクセスを受け入れる準備ができているか否かを表示する。リクエストバスマスタはまた、トランザクションID信号をリクエストバスに供給する。このトランザクションIDは、対応するリクエストがバスマスタの読取りキューに記憶されることを表示する。
FIG.3Bは、読取りトランザクションの応答フェーズを示す。ステップ426では、バススレーブ(メモリコントローラ124)は、データバスマスタとなる。データバスマスタが読取りデータの準備が整うと、データバスマスタは、リクエスト、明記できる優先レベル信号、およびトランザクションサイズを適当なデータバスアービタ(この例では、内部メモリバスアービタ142)に送る。ステップ428では、内部メモリバスアービタ142が認可信号をデータバスマスタに送り、かつリクエストをデータバススレーブ(データキャッシュ108)に送る。ステップ430では、データバスマスタ(メモリコントローラ124)が、データの4つの連続サイクルを内部データバス120に供給する。データバスマスタはまた、リクエストフェーズ中に受けたトランザクション識別信号(トランザクションID)を供給する。最後に、内部バスアービタは、内部バススレーブ(データキャッシュ108)がサンプリングするようにトランザクションサイズを制御する。
要約すれば、本発明の一例により、イニシエータ構成要素が、リクエストバスアービタを介して転送をリクエストする。各イニシエータは、4、8、16、24、32バイト転送をリクエストする。しかしながら、トランザクションは、通信サイズの境界上に整合されなくてはならない。各イニシエータは、すべてのサイクルにリクエストを作る。また、書込みイニシエータは、送りフェーズ中にレスポンダからトランザクションIDをサンプリングしなければならず、かつ次に、応答フェーズ中にトランザクションIDを送り出さなくてはならない。
また、読取り演算中に、レスポンダは、リクエストされたデータをいつ送るかを決定するように構成される。読取りレスポンダは送りフェーズ中にイニシエータからトランザクションID信号をサンプリングし、次に、応答フェーズ中に該トランザクションID信号を送り出す。書込み演算中に、レスポンダは、書込みリクエストを受けた後に書込みデータを受け入れる。
表1は、本発明の一実施形態による、リクエストバス118の例示信号の定義を示す。表2は、本発明の一実施形態によるデータバス114、120の例示信号定義を示す。
表3〜表9は、データ転送スイッチ112を介してデータを転送するときに用いられるコマンド呼出しを示す。
FIG.4AおよびFIG.4Bは、本発明の一実施形態によるそれぞれ、リクエストバス接続および内部メモリバス接続中の信号の流れを示す。例えば、FIG.4Aにおいて、リクエストバスイニシエータは、表3に従って、情報をリクエストバスアービタに送る。このようなリクエスト情報として、リクエストバス読取り/書込みリクエスト、リクエストバスレスポンダ識別信号ID、およびリクエストの優先レベルがある。リクエストバスアービタは、読取り/書込みリクエスト信号を、識別されたレスポンダまたはリクエストバススレーブ(表6)に送り、これに応答して、レスポンダは、レディ表示信号をリクエストバスアービタに送り戻す(表4)。レディ表示信号を受けると、リクエストバスアービタは、バス認可信号をイニシエータに送る(表5)。認可信号がひとたびイニシエータにより認識されると、トランザクション情報は、表1に従って、リクエストバスを介してレスポンダに伝送される。このため、リクエストバストランザクションIDは、処理すべき特定トランザクションに割当てられる。
FIG.4Bは、内部メモリバス120を用いたデータバス接続を示している。かくして、リクエストバス仲裁フェーズ中にひとたびトランザクション情報および識別がセットアップされると、イニシエータおよびレスポンダは、実データを転送する。イニシエータは、リクエスト、サイズ、イニシエータ識別信号ID、表7に定められた信号による優先レベルを含むトランザクション情報を、内部メモリバスアービタ142に伝送する。内部メモリバスアービタ142は、表8によるサイズ情報に加えて、リクエスト情報をレスポンダに送る。その後、アービタは、認可信号をイニシエータに送り、これに応答して、イニシエータと表2によるレスポンダとの間に実際のデータ転送が行われる。
FIG.5Aは、リクエストバス読取り演算のタイミング図を示す。FIG.5Bは、直ちに認可が与えられない読取りリクエストについてのタイミング図を示す。FIG.5Cは、リクエストバス書込み演算のタイミング図である。書込み演算の場合には、リクエストバストランザクション識別信号IDは、レスポンダにより与えられる。最後に、FIG.5Dは、データバスのデータ転送演算のタイミング図を示す。読取りトランザクションは、データバスマスタは読取りレスポンダであり、データバススレーブは読取りイニシエータである。
データ転送スイッチ112は、イニシエータによりなされるバックトゥバックリクエストに適合するように構成されている。タイミング図に示すように、リクエストの送出と認可の受領との間の待ち時間は2サイクルである。A0(またはD0)サイクルでは、アービタ140はマスタからのリクエストを検出する。しかしながら、A1(またはD1)サイクルでは、バスマスタは、好ましくは、認可を受けるまで主張される、そのリクエスト信号並びにアービタへの他の専用信号を維持する。それはそれとして、アービタ140は、これらの信号から、マスタが第2リクエストを作ることを望んでいるか否かを告げる。
バックトゥバックリクエストに適合するように、第2リクエストが係属(pending)していることをマスタがアービタに送信できるように、バスマスタからアービタ140への第2セットの専用信号が与えられる。マスタが、その第1リクエストが認可されるのを待つ間に他のリクエストを遂行したい場合には、マスタは、その第2セットの信号を主張する。アービタ140が、現サイクルでのマスタへのバックトゥバックを認可する場合には、次のサイクルについての仲裁を遂行するときに、マスタからの第2セットの信号を見なければならない。マスタがその第1リクエストの認可を受けるとき、マスタは、第2セットのリクエスト信号を搬送するラインのすべての情報を、第1セットリクエスト信号を搬送するラインに転送する。これは、アービタが第2リクエストを直ちに認可できない場合に必要になる。
RQBからのレディ信号も、同じ理由で複製される。RQBアービタ140がリクエストをスレーブに送るとき、更新されたレディ信号を最も早く見ることができるのは2サイクル後である。A0サイクルでは、そのレディ信号に基づいて、リクエストをスレーブに送ることを決定する。しかしながら、A1サイクルでは、スレーブは、未だリクエストを見ていないため、そのレディ信号を更新していない。従って、アービタ140は、このレディ信号からは、スレーブが他のリクエストを受け入れることができるか否かを告げることができない。
スレーブが第2リクエストを受け入れるか否かをアービタが告げることができるように、RQBスレーブからRQBアービタへの第2セットのレディ信号が与えられる。一般に、第1セットのレディ信号は、少なくとも2つのリクエストを受け入れることができるか否かを表示する。アービタ140がリクエストを現サイクルでスレーブに送る場合には、アービタは、次のサイクルの仲裁を行うときにスレーブからの第2セットのレディ信号を見なければならない。
読取りおよび書込みのためのレディ信号があることに留意されたい。RQBスレーブは異なるキュー構造(単一キュー、別の読取りキューおよび書込みキュー等)にすることができる。RQBアービタ140は、書込み後に第1または第2読取りレディ信号を見るか否か、および読取り後に第1または第2書込みレディ信号を見るか否かを決定すべく、スレーブのキュー形態を知る。
FIG.6Aは、バックトゥバック読取りリクエストを作るリクエストバスマスタのタイミング図である。FIG.6Bは、第2リクエストについての認可が直ちになされないときに、バックトゥバックリクエストを作るプロセッサメモリバスマスタのタイミング図である。最後に、FIG.6Cは、書込みリクエストが続く読取りリクエストを受け、リクエストバススレーブが単一化された読取りおよび書込みキューを有するものと仮定するリクエストバススレーブのタイミング図である。
データストリーマ
データストリーマ122の演算を、ここに、更に詳細に説明する。データストリーマは、マルチメディアプロセッサ100内での所定のバッファ型データ移動に用いられる。特定のシステム構成に従うこれらのデータ移動は、変調する帯域幅条件をもつメモリデバイスまたは入力/出力(I/O)デバイス間で行なうことができる。かくして、マルチメディアプロセッサ100による物理的メモリは、データストリーマ122を用いることによりデータを伝送しかつ受けることができる。これらのメモリユニットは、外部SDRAMメモリ128と、データキャッシュ108と、固定機能ユニット106と、入力/出力(I/O)バッファ32に接続された入力/出力デバイスと、1次または2次PCIバスコントローラによりアクセスされる任意のホストメモリとを有している。本発明の一実施形態によれば、データストリーマ122は、ソフトウェア制御下でのデータ転送作用を引き受けるが、本発明はこれに限定されるものではない。このため、コマンドは、マルチメディアプロセッサ100のために定められたアドレス空間内の2つの構成要素間のデータ転送演算を開始する。
FIG.7は、本発明の一実施形態によるデータストリーマ122のブロック図を示すが、本発明はこれに限定されるものではない。データストリーマ122は、データ転送スイッチ(DTS)インタフェース718を介してデータ転送スイッチ112に接続される。データストリーマ122内の転送エンジン702は、データストリーマ122のデータ転送演算を制御するのに使用される。詳細に後述するように、転送エンジン702は、マルチメディアプロセッサ100の異なる構成要素間の同時データ転送を取り扱うパイプライン制御論理を実施する。
転送エンジンは、ここでデータ転送演算を記述する記述子と呼ぶユーザプログラムを実行することに応答できる。より詳細に後述するように、メモリ転送演算に関する情報を含むデータフィールドとして、例えばデータアドレス、ピッチ、幅、カウントおよび制御情報がある。
各記述子は、チャネルと呼ばれる、データストリーマ122のハードウェアの一部により実行される。チャネルは、チャネル状態メモリ(channel state memory)704と呼ばれる所定のメモリ位置の幾つかの状態ビットにより定められる。チャネル状態メモリ704は、本発明の一実施形態に従って64チャネルをサポートする。FIG.7に示すように、チャネル状態メモリ704は転送エンジン702に接続されている。任意の所与の時点で、これらの64チャネルの多くがアクティブでかつサービスを要求する。各アクティブチャネルは記述子により作動する。データストリーマ122は、データ転送演算のために1つまたは2つのチャネルを割当てる。これらのチャネルは、データがその元のアドレスからマルチメディアプロセッサ100内の受け手アドレスに転送されるまで、同じデータ転送演算に割当てられる。より詳細に後述するように、データストリーマ122は、入力/出力のための1つのチャネルをメモリ転送に割当て、かつメモリのための2つのチャネルをメモリ転送に割当てる。
転送エンジン702は、データ転送スイッチ112に送ることを意図したデータ転送スイッチリクエスト信号を供給するためのデータ転送スイッチインタフェース718に接続される。データ転送スイッチインタフェース718は、転送エンジン702により発生されたデータおよび記述子に対する、出ていく読取りリクエストを取り扱うように構成されている。データ転送スイッチはまた、データ転送スイッチ112から、内部先入れ先出しバス716の適当なレジスタに入ってくるデータを取り扱う。データ転送スイッチインタフェース718はまた、データストリーマ122により与えられる、出ていくデータをも取り扱う。
データストリーマ122はまたバッファメモリ714を有し、該バッファメモリは、本発明の一実施形態によれば、マルチメディアプロセッサ100内で物理的に実行される4KB SRAMメモリであるが、本発明の範囲はこれに限定されるものではない。バッファメモリ714は、本発明の一実施形態によれば、デュアルポート型ダブルメモリバンク714a、714bを有している。64チャネルを取り扱うデータストリーマの場合には、バッファメモリ714は、64個の小さいバッファ空間に分割できる。
バッファメモリ714のデータアレーは、1ライン当たり8バイトとして物理的に組織され、マスキング技術を用いることにより一度に8バイトアクセスされる。しかしながら、演算中に4KBのメモリが小さいバッファに分割され、各バッファはデータ転送演算に関連して使用される。従って、データ転送演算は、1つまたは2つのチャネルおよび1つのバッファにより定められるデータストリーマ122内のデータ経路を使用する。メモリ対メモリ転送の場合には2つのチャネルが使用されるのに対し、I/O対メモリ転送(I/O-to-memory transfer)の場合には、1つのチャネルが使用される。より小さい各バッファのサイズは、データ転送特性により特定されるように変えることができる。
本発明の一実施形態によれば、データ移動演算は、所定のチャンクサイズに基づいて行われる。「k」の送り手チャンクサイズ(source chunk size)は、受け手チャネル(destination channel)がバッファメモリ714の外に「k」バイトだけ移動されたときに、送り手チャネルがデータに対するリクエストをトリガすべきことを意味する。同様に、「k」の受け手チャンクサイズは、送り手チャネルがバッファ内に「k」バイトのデータを転送したときに、受け手チャネルがバッファ714の外へのデータ移動をスタートすべきことを意味する。チャンクサイズは複数の32バイトであるが、本発明の範囲はこれに限定されるものではない。
バッファメモリ714には、8バイトのライン当たり8ビットを保持する有効ビットメモリ(valid-bit memory)が同伴する。有効ビットの値を使用して、特定バイトが有効であるか否かを表示する。有効ビットのセンスは、対応する割当てバッファが満たされる度毎にフリップされる。これにより、チャンクが転送される度毎にバッファメモリを再初期化する必要性がなくなる。しかしながら、有効ビットにおける対応ビットは、バッファがデータ転送経路に割当てられるときは必ず、ゼロに初期化される。
バッファメモリ714は、データストリーマバッファコントローラ706に接続されかつ該コントローラにより制御される。バッファコントローラ706は転送エンジンおよびDMAコントローラ138にも接続され、かつこれらの転送エンジンおよびDMAコントローラから受けた読取りおよび書込みリクエストを取り扱うように構成されている。バッファコントローラ706はバッファ状態メモリ708に記憶されたデータを使用してそのタスクを達成する。バッファコントローラ706は、バッファにもたらされるバイト数および取り出されるバイト数のカウントを維持する。データストリーマバッファコントローラ706はまた、パイプライン論理を実行して64個のバッファを取り扱い、かつバッファメモリ714への書込みおよび読取りを管理する。
バッファ状態メモリ708は、データ経路に使用される各バッファに関する状態情報を維持するのに使用される。前述のように、バッファ情報メモリは、64個の個々のバッファFIFOをサポートする。
DMAコントローラ138はI/Oバッファ32に接続されている。本発明の一実施形態によれば、DMAコントローラ138は、DMAリクエストを行いたいI/Oデバイス間で仲裁(arbitrate)するように作用する。DMAコントローラはまた、データストリーマバッファコントローラに入るDMAリクエストおよびI/Oデバイスに出るデータのバッファリングを行う。 DMAコントローラ138に関する仲裁は、DMAコントローラ138およびI/Oバス132に接続されたラウンドロビン優先アービタ710により取り扱われる。アービタ710は、物理的入力/出力コントローラPIOC126とDMAコントローラとの間にI/Oデータバスを使用することを仲裁する。
本発明の一実施形態によれば、データストリーマ122は、データキャッシュ108をアクセス可能なメモリ構成要素として処理し、かつデータキャッシュ108への直接読取りおよび書込みができる。より詳細に後述するように、データストリーマ122は、チャネル記述子がデータキャッシュ演算を特定するときはいつでも、データキャッシュ内にコヒーレンシーを維持するように構成されている。マルチメディアプロセッサ100の他の構成要素によるデータキャッシュへの書込みおよび読取りを開始する能力は、CPU102、104によりそれぞれ使用されるデータが予め知られているデータアプリケーションに適している。かくして、キャッシュヒット率は大幅に改善される。なぜならば、このアプリケーションは、CPU102または104がデータを使用する前に必要なデータを満たすことができるからである。
前述のように、本発明の一実施形態によるデータストリーマ122は、幾つかのアプリケーションプログラミングインタフェースすなわちAPI、ライブラリコールを用いることにより、ユーザ特定されたソフトウェアプログラムに基づいて演算する。このため、プログラム可能な入力/出力コントローラPIOC126は、マルチメディアプロセッサ100およびデータストリーマ122の他の構成要素間のインタフェースとして機能する。従って、最低レベルでデータストリーマ122と通信すべく使用されるコマンドは、データストリーマ空間のPIO読取りおよび書込みに変換する。かくして、このようなPIO読取りおよび書込み演算を発生できるあらゆる構成要素は、データストリーマ122と通信できる。本発明の一実施形態によれば、これらのブロックとして、固定機能ユニット106と、中央処理装置102、104と、例えばPCIバスを介してマルチメディアプロセッサ100に接続されたホスト中央処理装置とがある。
本発明の一実施形態によれば、データストリーマ122は、PIO(physical memory: 物理的メモリ)の512Kバイトのアドレス空間を占有する。各データストリーマのチャネル状態メモリは、4Kバイトページの64バイトより少ないバイトを占有する。各データストリーマのチャネル状態メモリは、保護のための別の4Kバイトページ内にあるが、本発明の範囲はこれに限定されるものではない。
表10は、種々のデバイスに使用されるアドレス範囲を示す。例えば、位置18のビットは、転送エンジン702とデータストリーマ122の他の内部構成要素との間の選択に使用される。他の構成要素として、バッファメモリに使用されるデータRAMと、データRAMを伴う有効RAMビットと、データストリーマバッファコントローラと、DMAコントローラとがある。
ビット18が0の値を有するとき、PIOアドレスは転送エンジン702に属する。表11は、転送エンジン702の内部演算についてのビット17:0の解釈法を示す。
ビット18が1の値をもつとき、PIOアドレスは、表12に示すように、バッファ状態メモリに関する、データストリーマバッファコントローラ706に属する。
本発明の一実施形態によるデータストリーマ122の各構成要素の内部構造について、以下に詳細に説明する。
転送エンジン
FIG.8は、本発明の一実施形態による転送エンジン702のブロック図であるが、本発明の範囲はこれに限定されるものではない。転送エンジン702の主構成要素は、フェッチ段744に接続された演算スケジューラ742を有し、フェッチ段744は更に発生および更新段746に接続され、該発生および更新段746は更にライトバック段748に接続されている。構成要素742〜748は、協働して転送エンジンの実行パイプラインを形成している。ラウンドロビン優先スケジューラ740を使用して、適当なチャネルおよびこれらの対応チャネル状態メモリを選択する。
より詳細に後述するように、実施される準備が整ったチャネル(レディチャネル)に関する情報は、本発明の一実施形態に従って2つのチャネル状態メモリバンク704(a)、704(b)に物理的に分割されたチャネル状態メモリ704に記憶される。優先スケジューラ740は、4つの優先レベルをもつレディチャネルのラウンドロビンスケジューリングを遂行する。このため、最高の優先レベルをもつレディチャネルが、ラウンドロビン構成に採用される。最高優先レベルをもつチャネルが存在しない場合にのみ、より低いレベルをもつチャネルが考えられる。
優先スケジューラ740は、2サイクル毎に1回チャネルを採用し、かつこれを他のスケジューリングレベルで演算スケジューラに供給する。
演算スケジューラ742は、任意の時点で4つの演算を受けかつ一度に1回の各演算を実行するように構成されている。これらの4つの演算として、プログラム可能な入力/出力PIO、プログラム可能な入力/出力コントローラPIOC126、データ転送スイッチインタフェース718から入ってくる記述子プログラム、データストリーマバッファコントローラ706により満たされるチャンクリクエストインタフェースキューからのチャネルに対するチャンクリクエスト、および優先スケジューラ740からのレディチャネルがある。
FIG.13およびFIG.14に関連して以下に詳述するように、送り手記述子プログラムはバッファメモリ714へのデータ転送演算の特定事項(specifics)を定め、受け手記述子プログラムはバッファメモリ714から受け手位置へのデータ転送演算の特定事項を定める。また、バッファは、チャネル状態メモリ704に記憶された対応する送り手チャネルに対するチャンクリクエストを発行して、バッファが受けることができるバイト数を表示する。演算スケジューラが最高から最低までタスクを採用する優先順序は、PIO演算、入ってくる記述子、チャンクリクエストおよびレディチャネルである。
演算スケジューラにより選択される演算に関する情報は、フェッチ段744に転送される。フェッチ段は、選択された演算を行う必要があるチャネル状態メモリ704からのビットを検索するのに使用される。例えば、演算スケジューラがレディチャネルを採用する場合には、チャネルのチャンクカウントビットおよびバーストサイズは、データ転送演算のために発生されなくてはならないリクエストの数を決定すべく読取られなくてはならない。
発生および更新段746は、フェッチ段744から派生されるデータ転送演算のために発生されなくてはならないリクエストの数に等しい回数だけ実行される。例えば、受け手チャネルの転送バーストサイズが4である場合には、発生および更新段746は4サイクルだけ実行され、1サイクル当たり1つのリクエストを発生する。他の例として、演算がチャネル状態メモリ704へのPIO書込み演算である場合には、発生および更新段が1回実行される。より詳細に後述するように、発生および更新段746により発生される読取り/書込みリクエストが、データ転送スイッチインタフェース718のリクエストキューRQQ764に付加される。
チャネル状態メモリ704は、転送エンジン702により実行される殆どの演算後に更新する必要がある。例えば、チャネルが、発生および更新段746でのリクエスト発生を完了すると、チャンク数が減少され、かつチャネル状態メモリ704にライトバックされる。ライトバック段(write back stage)748はまた、リセット信号をチャネル状態メモリ704に送り、インターバースト遅延カウンタを、表13に示すチャネル状態メモリ構造を参照して以下に説明する最小インターバースト遅延値で初期化する。
チャネル状態メモリ
データストリーマ122の64チャネルの各々に関する情報は、チャネル状態メモリ704に記憶される。データ移動演算の前および演算中に、データストリーマ122は、そのデータ移動タスクを達成するためのチャネル状態メモリ704のデータを使用する。表13〜表19は、チャネル状態メモリを形成するフィールドを示す。また、これらの表は、種々のフィールドのビット位置、およびチャネルが本発明の一実施形態に従ってデータ転送に割当てられるときにフィールドを初期化すべき値を示す。
チャネル状態メモリ704は、本発明の一実施形態に従って、2つの位置704(a)、704(b)に分割される。チャネル状態メモリ704(a)は、0x00、0x08、0x10および0x18と呼ばれる4つの64ビット値を有している。チャネル状態メモリ704(b)は、位置0x00、0x08および0x10での3つの64ビット値を有している。
チャネルにより達成されるデータの帯域幅は、数ある中で、次の4つのパラメータ、すなわち内部チャネル優先、最小インターバースト遅延、転送バーストサイズ、およびデータ転送スイッチ優先に基づいている。経路が割当てられると、これらの4つのパラメータはシステムにより考察される。チャネル特徴はまた、システムが初期化する3つのパラメータを有している。これらは、ベースアドレス、より詳細に後述するキャッシュウェイ置換マスク、および記述子フェッチモードビットである。
チャネル優先:データストリーマ122のハードウェアは、4つの内部チャネル優先レベル(0が最高、3が最低)をサポートする。前述のように、ハードウェアは、優先順序によりラウンドロビン態様でチャネルをスケジュールする。メモリ−メモリ転送に関連するチャネルについては、同じ優先を両チャネルに割当てて、等ペースで移動する両側にデータ転送を維持することが好ましい。好ましくは、高帯域幅I/Oデバイスでフックアップされるチャネルが低レベル優先でセットアップされ、低帯域幅I/Oデバイスでフックアップされるチャネルが高レベル優先を用いる。このようなチャネルはスケジューリングプールを単に結合するものであるが、そのときに、チャネルは殆ど瞬時にスケジュールおよびサービスされるため、より高い帯域幅およびより高い優先チャネルによる許容できないサイクル数に注意する必要はない。
最小インターバースト遅延:このパラメータは、任意のチャネルがサービスされた後、スケジューリングプールを再結合できる前に通らなくてはならない最小のサイクル数に関するものである。これは、8サイクルの倍数である。このパラメータは、或る期間大きいサービス時間(次のパラグラフで説明する)を有する高優先チャネル(単一または複数)を有効にブロックするのに使用され、低優先チャネルをスケジュールすることができる。
転送バーストサイズ:ひとたびチャネルがスケジュールされたならば、転送バーストサイズパラメータは、チャネルが再びスケジュールされなくなる前に、データ転送スイッチ上に発生できる実リクエストの数を表示する。送り手チャネルについては、これは、バッファにもたらされるべきデータに対して発生するリクエスト数を表示する。このパラメータの値が大きいほど、特定チャネルのサービス時間が長くなる。各リクエストは、最大32バイトを請求しかつ一度に32バイトのデータを送ることができる。チャネルは、これがそのバーストサイズカウントを使い切るまでスケジュールされた発生リクエストを持続しかつ記述子の休止ビットに遭遇し、これ以上の記述子をメモリからフェッチする必要はない。
DTS優先:リクエストバスアービタまたはデータ転送スイッチのメモリデータバスアービタに対する各リクエストには、リクエスタ(requestor)による優先が伴う。両アービタは4つの優先レベルをサポートし、チャネルによる転送に使用される優先は、チャネル状態に予めプログラムされる。SDRAMページがヒットするためには、メモリコントローラキュー内で隣接する同じチャネルから多数のリクエストを取得することが重要であると考えられるときには、より高い優先が使用される(0が最高優先、3が最低優先)。
ベースアドレス、ウェイマスク、および記述子フェッチモード:メモリ−メモリ移動については、(正解をもつ)データ経路構造の入力は任意である。入力されない場合には、システムは、種々のパラメータに対して幾つかのデフォルト値をとる。これらのデフォルト値が下記の表に示されている。
メモリ−I/OまたはI/O−メモリの経路をリクエストするとき、システムはデータ経路構造を形成する。このことは、どの転送がI/O転送であり、従ってチャネル割当てを必要としないのかをシステムに表示するブール(booleans)の設定を可能にする。メモリ転送へのI/Oについては、バッファサイズおよびチャンクサイズ等のパラメータは、メモリ−メモリ転送についてのものよりも一層適切なものである。なぜならば、転送パラメータをI/Oデバイス帯域幅条件に一致させることが重要だからである。
本発明の一実施形態によれば、データ経路は、データ転送演算に対するリクエストに応答してリクエストされる。ソフトウェア制御に基いたシステムでは、カーネルは、セットされたパラメータの実値を埋めるデータ経路構造およびアプリケーションがidを開始するのに使用するチャネルのidを返却する。経路がI/Oデバイスを含む場合には、バッファidも返却される。このバッファidは、アプリケーションにより当該I/Oデバイスについてのデバイスドライバ呼出しへ通知される。デバイスドライバは、この値を使用してI/Oデバイスを準備させ、当該データストリーマバッファへのデータ転送をスタートさせる。ユーザアプリケーションが、得られたDS経路資源の形式(パラメータ)によっては満足されない場合には、経路を閉じて、後で再びトライすることができる。
記述子プログラム
データ転送は、チャネル状態メモリフィールドにフォーマット1記述子およびフォーマット2記述子のように特定されている2形式の記述子に基づいている。本発明の一実施形態によれば、フォーマット1記述子は、多くの3Dグラフィックアプリケーションおよびビデオ画像アプリケーションの性質に基づいて定められる。
一般に、FIG.12に示すように、画素情報は、ディスプレイすることを意図した画素と同じ構成で散乱された位置に記憶される。ときには、「n」個のデータピースすなわち画素が、メモリ空間の「スタート送り手データ位置=x」でスタートするn個の位置から、「スタート受け手データ位置=y」で始まる1つの隣接位置内に一緒に収集されるデータ収集演算を続行することが望まれる。収集されたデータの各ピースは10バイト幅であり、かつ次のデータから22バイト(ピッチ)で分離される。FIG.12に示すような転送をできるようにするには、2つの別々の記述子、すなわち、1つは送り手からバッファメモリ714(FIG.7)への転送を取り扱う送り手チャネル用記述子、他はバッファメモリから受け手への転送を取り扱う受け手チャネル用記述子をセットアップする必要がある。
FIG.13は、本発明の一実施形態によるフォーマット1記述子用データ構造220を示す。記述子220のサイズは2つの8バイト語からなる16バイトである。下記表は、記述子の異なるフィールド、およびデータ転送演算中に各フィールドが如何に用いられるかを記述する。
1.次の記述子:最初の32ビットは、他の記述子のアドレスを保持する。これにより、幾つかの記述子を複雑な転送パターンまたは単一の記述子を用いては記述されない転送パターンに一体に連鎖させることができる。
2.記述子制御フィールド:このフィールドの16ビットが次のように解釈される。
[15:14]−未使用
[13]−ホストcpuに割り込み(この記述子の完了時)
[12]−マルチメディアプロセッサ100のcpuに割り込み(この記述子の完了時)
[11:9]−ソフトウェア使用のためのリザーブ
[8]−ノーモア記述子(これがこの連鎖の最後の記述子であるときにセットされる)
[7:4]−データフェッチモード(この記述子によりフェッチされるか、送られるすべてのデータ)
[7]:キャッシュモード0=>コヒーレント、1=>非コヒーレント
[6]:1=>ウェイマスク使用、0=>ウェイマスク非使用
[5]:1=>データキャッシュ内の割当て、0=>データキャッシュ内の非割当て
[4]:1=>PIO空間内のデータ、0=>not
[3]−1にセットした場合には、プリフェッチ禁止
[2]−1へのセットの記述子の端部での停止
[1:0]−記述子フォーマット形式
00:フォーマット1
01:フォーマット2
10:制御記述子
内または外に転送されるデータの存在をデータキャッシュがチェックしたか否かを、コヒーレンシービットが表示することに留意されたい。本発明の1つの好ましい実施形態によれば、このビットは、データがCPU102または104によりキャッシュ内にもたらされていないことをシステムが決定していなければターンオフされないことが望まれる。このビットをターンオフすると、キャッシュ108のバイパスによりパフォーマンスが向上する。なぜならば、ビットのターンオフにより、キャッシュへのロードが低減し、かつ読取りまたは書込みの待ち時間が短縮されるからである(キャッシュ内の非割当てを選択する場合には、データキャッシュキューの充満に基づいて2〜18サイクル)。
ウェイマスクは、データキャッシュ108が多数のウェイを有する環境で使用される。例えば、本発明の一実施形態によれば、データキャッシュ108は4つのウェイを有し、各ウェイは4kバイトを有している。本発明の範疇内では、データキャッシュの各ウェイは、特定のデータ形式を記憶すべく構成された別のメモリ空間として定められる。「ウェイマスク使用」のビットは、ウェイマスクを、データキャッシュへの現在の記述子により開始されるすべてのトランザクションに使用すべきであるか否かを単に表示する。
「割当て」、「非割当て」ビットは、コヒーレントビットがセットされる場合にのみ適合する。基本的に、非割当ては、ユーザが、データキャッシュがもはや存在しない場合に、コヒーレンシーの理由からデータキャッシュのチェックを望むときで、データがデータキャッシュに終了することを望まないときには有効である。割当ては、cpuが計算を開始する前に、ユーザがメモリからの或るデータをデータキャッシュに予めロードすることを望むときにセットされなくてはならない。
表20は、データフェッチモードに関する記述子制御領域のビット7:4のコヒーレントと割当てビットの種々の値に対してとるべきアクションを示す。
記述子の説明に戻ると、PIOビットは、データをPIO(Programmed I/O: プログラムされたI/O)アドレス空間から(または該空間へと)転送するときに必要とされる。例えば、データストリーマ122は、データストリーマバッファメモリ(PIOアドレス空間内にあるバッファメモリ)を読取るのに使用される。
ユーザレベルからのデータストリーマ122と同期させるための停止ビット(halt bit)が使用される。セットされると、データストリーマ122は、これがこの記述子により表示されたすべてのデータの転送を行ったときにチャネルを停止させる。データストリーマはまた、「ノーモア記述子(no more descriptors)」ビットがセットされると停止する。
データストリーマが記述子をフェッチし、かつその実行を開始すると、データストリーマは、次の記述子のプリフェッチを直ちに開始する。ユーザは、「プリフェッチ禁止(prefetch inhibit)」ビットをセッティングすることによりこのプリフェッチ処理を禁止する。これは、停止ビットもセットされるときにのみ有効である。すなわち、まったく停止しない場合には、プリフェッチの禁止を試みることは無意味である。
下記リストに示すように、データフェッチモードビットのすべての組合せが有効な訳ではない。例えば、「割当て(allocate)」および「ウェイマスク使用(use way mask)」は、データキャッシュがターゲットであるときに意味を有するに過ぎない。なぜならば、データキャッシュは、PIO=1および(他のビット)=1が使用されないPIOアクセスの任意の組合せを受け入れないからである。
コヒーレント ウェイマスク使用 割当て PIO空間
0 0 0 1 有効PIO
1 − − 1 無効
− 1 − 1 無効
− − 1 1 無効
0 0 0 0 有効−非コヒーレント
0 1 − − 無効
0 − 1 − 無効
1 0 0 0有効−コヒーレント非割当て
1 0 1 0有効−コヒーレント割当て
1 1 0 0無効
1 1 1 0有効−コヒーレント割当て、マスクド
3.カウント:これは、この記述子を用いて転送されるデータピース数を示す。
4.幅:これは、所与の位置からピックアップされるバイト数である。
5.ピッチ:これは、次のバイトに転送される最終バイトとの間のオフセット距離である。受け手は連続しており、従ってピッチは0である。ピッチは、収集されたデータ位置がメモリを通って後方移動できるようにする符号付きの値である。
6.データ位置アドレス:これは、この記述子のための第1バイトが配置されるアドレスである。例1において、送り手側では、これは「x」であり、受け転送では「y」である。チャネル1により使用されるすべてのデータ位置アドレスは、最初にベースアドレスに付加される。このベースアドレス値は、チャネルの状態メモリに保持される。チャネルが、ds open patch()コールにより初期化されるとき、ベースアドレス値はゼロにセットされる。この値は、制御記述子(後述)を用いてユーザが変えることができる。
下記表21は、SDRAM128からデータキャッシュ108内へのデータ転送すなわち、キャッシュプリロード演算について、送り手および受け手転送用記述子をどのように構成するかを示す。
送り手での制御語は、コヒーレントデータ演算を表示するが、割当ては行わない。ノーモア記述子が存在しないので停止ビットはセットされず、このデータが転送されると、チャネルは自動的に停止する。「ノーモア記述子」ビットはセットされなくてはならない。
表22の受け手記述子のための制御語は、キャッシュミス時にキャッシュに割当てるコヒーレント基準(coherent reference)を作ることにより、データキャッシュがターゲットであることを示す。送り手の場合には停止ビットはセットされない。なぜならば、この転送がなされると次の記述子フィールドがゼロになって、チャネルが自動的に停止するからである。また、「ノーモア記述子」ビットが、送り手の場合についてセットされる。
フォーマット2記述子
FIG.14は、本発明の一実施形態によるフォーマット2記述子に対応するデータ構造240を示す。フォーマット2記述子によるデータ移動演算は、多くの点で、フォーマット1記述子と同様である。しかしながら、フォーマット1記述子構造とは異なる1つの点は、ユニークなデータ位置アドレスが、転送すべきことを意図した各データブロックに供給されることである。また、フォーマット2記述子によるデータ構造はピッチフィールドを用いていない。フォーマット2記述子は、幅が同一(但し、或る均一ピッチで分離されてはいない)である幾つかのデータピースの転送を望むときにデータ転送演算に用いられる。
従って、フォーマット2記述子の第1フィールドは、次の記述子アドレスを含んでいる。カウントフィールドは、転送すべきことを意図したデータピースの番号を含んでいる。FIG.13に関連して述べたように、制御フィールド仕様はフォーマット1記述子の仕様と同じである。幅フィールドは、転送すべきことを意図したデータピースの幅を特定する。本発明の一実施形態によれば、フォーマット2記述子は、コヒーレントアクセスについては16バイト境界に、非コヒーレントアクセスについては8バイト境界に整合される。フォーマット2記述子の長さは、16バイトから、16より大きい4バイトの倍数まで変化する。
データ転送スイッチインタフェース
FIG.9は、本発明の一実施形態によるデータ転送スイッチ(data transfer switch: DTS)のブロック図であるが、本発明の範囲はこれに限定されるものではない。データ転送スイッチインタフェースは、データ転送スイッチ112(FIG.1A)を介してデータを転送するマルチメディアプロセッサ100のすべての構成要素に用いられている。
DTSインタフェース718は、データ転送スイッチ112のリクエストバス118に接続されたバスリクエスタ760を有している。バスリクエスタ760は、リクエスト信号をリクエストバスキュー(request bus queue: RQQ)764に供給すべく構成されたリクエストイッシャ762を有している。リクエストバスキュー764は、ファーストカムファーストサーブドベースでデータおよび記述子リクエストを保持する先入れ先出し(FIFO)バッファである。
リクエストバスキュー764の他の入力ポートは、転送エンジン702により発生された読取り/書込みリクエストを、発生および更新段746を介して受けるように構成されている。読取りリクエストは、データおよびチャネル記述子に対するリクエストを有している。書込みリクエストは、送り出されるデータに対するリクエストを有している。
イッシャ762は、リクエスト信号を、データ転送スイッチのリクエストバスアービタ140に送るように構成されている。認識すると、バスアービタ760は、先入れ先出しリクエストキュー764の先頭に入れられたリクエストを送る。データ転送スイッチのリクエストバスアービタ140により認識されないリクエストは、数サイクル後に、リクエストキュー764から除去され、かつその最後尾に再び入れられる。かくして、データ転送演算は、特定バススレーブまたはレスポンダが準備されないときの不合理的遅延を回避する。前述のように、異なるレスポンダに対するリクエストは異なるチャネルに対応する。かくして、キューからリクエストを除去するメカニズムは、本発明の一実施形態により、1つのチャネルが他のすべてのチャネルを前進させないように保持すべく設計されている。
データ転送スイッチインタフェースはまた、プロセッサメモリバス(PMB)レシーブFIFOバッファ776と、PMBリオーダテーブル778と、内部メモリバス(internal memory bus: IMB)レシーブFIFO774と、IMBリオーダテーブル780とを有するレシーブエンジン772を有している。PMBレシーブFIFOバッファ776の出力ポートは、データスイッチバッファコントローラ(data switch buffer controller: DSBC)706および転送エンジン702の演算スケジューラ742に接続されている。同様に、IMBレシーブFIFO774の出力ポートは、データスイッチバッファコントローラ706および転送エンジン702の演算スケジューラ742に接続される。イッシャ762の出力ポートは、プロセッサメモリバス(PMB)の入力ポートおよび内部メモリバス(IMP)リオーダテーブル780の入力ポートに接続される。PMBリオーダテーブル778の他の入力ポートは、データバス114からデータを受けるように構成されている。同様に、IMBリオーダテーブル780の他の入力ポートは、データバス120からデータを受けるように構成されている。
プロセッサメモリバス(PMB)リオーダテーブル778または内部メモリバス(IMB)リオーダテーブル780は、それぞれ、依然として突出している読取りリクエストに対応するインデックスを記憶する。これらのインデックスとして、読取りリクエストに対して発生されるトランザクション識別信号(ID)と、各読取りリクエストに割当てられる対応バッファ識別信号(ID)と、データを受けたときに、データを処理するのに必要な対応バッファアドレスおよび他の情報とがある。
先入れ先出しバッファ776、774は、戻されたデータが、バッファデータが戻される状況でのデータストリーマバッファコントローラ706、または記述子がメモリ位置から検索される状況での転送エンジン702により受け入れられるまで、前記戻されたデータを保持するように構成されている。
イッシャ762は、テーブル778、780が充満されるまで停止する。これにより、転送エンジン702のパイプが停止される。本発明の一実施形態によれば、各テーブル778、780は、1バス当たり8個の突出リクエストをサポートする。戻りデータのバッファアドレスを記憶するテーブルを使用することにより、故障データ(out-of-order data)の戻りを取り扱うことができる。データストリーマバッファコントローラに関連してより詳細に説明するように、バッファメモリ714に記憶される各バイトとして、バッファコントローラの対応論理に関連して故障データの戻りが正しく取り扱われることを確実にする有効ビット表示信号がある。
データ転送スイッチインタフェース718はまた、プロセッサメモリバス(PMB)伝送エンジン766を備えた伝送エンジン(transmit engines)782と、内部メモリバス(IMB)伝送エンジン770とを有し、これらの両エンジンは、先入れ先出し(FIFO)バッファである。バッファ768は、それぞれ伝送エンジン766、770からリクエスト信号を受けて、データバスリクエストをそれぞれデータバスアービタ140、142に送るように構成されている。各伝送エンジンはまた、データストリーマバッファコントローラ706からデータを受けて、対応データバスに伝送するようにも構成される。
演算中、リクエスト−リクエストバス118が読取りデータに使用されるときは、イッシャ762は、これがリクエストバスアービタ140からの信号を受けると、アドレスをリクエストバス118に供給する。イッシャ762はまた、それぞれリオーダテーブル778、780に登録し、突出したリクエスト(outstanding requests)のトラックを維持する。リクエストが書込みデータに使用される場合には、イッシャは、アドレスをリクエストバス118に出力し、かつリクエストを、データストリーマバッファコントローラ706により使用するための内部FIFOバッファ716(FIG.7)をキューする。バッファコントローラ706は、このキューを試験し、かつデータストリーマバッファコントローラ706に関連してより詳細に後述するように、書込みデータに対するリクエストを行う。
FIG.10は、本発明の一実施形態によるデータストリーマバッファコントローラ706のブロック図であるが、本発明の範囲はこれに限定されるものではない。データストリーマバッファコントローラ706は、バッファメモリ714を管理し、かつ転送エンジン702により発生された読取り/書込みリクエストおよびFIG.1のDMAコントローラ138およびPIOコントローラ126により発生されたリクエストを取り扱う。
データストリーマバッファコントローラ706は、バッファ関連機能を処理する2つのパイプを有している。データストリーマバッファコントローラ706の第1処理パイプは、プロセッサメモリバス(PMB)パイプと呼ばれ、第2パイプは内部メモリバス(IMB)パイプと呼ばれる。各パイプの演算は、PMBパイプがプロセッサメモリバス114に追い出される転送エンジンのデータリクエストを取り扱いかつIMBパイプが内部メモリバス120に追い出される転送エンジンのデータリクエストを取り扱う点を除いて、同じである。
FIG.10に示すように、各パイプは3つの別々のデータ入力を受けるように構成されている。このため、データストリーマバッファコントローラ706はプロセッサメモリバスPMBパイプ演算スケジューラ802を有し、該スケジューラ802は、次の3つの入力信号を受けるように構成されている。すなわち、3つの信号とは、(1)プログラム可能な入力/出力(PIO)コントローラ126からのすべてのリクエスト信号、(2)プロセッサメモリバス(PMB)およびデータ転送スイッチ718(FIG.9)のレシーブFIFOバッファ776から受けるデータ信号(これらのデータ信号は、ひとたび適当なチャンクサイズが特定チャネルのバッファメモリ714内に充満されると検索されるようにバッファメモリ714に書込まれることが意図されている)、および(3)特定チャネルのバッファメモリ714から適当なデータを検索するための転送エンジン読取り信号である。検索されたデータは、次に、FIG.1およびFIG.9に示すように、データストリーマ122のデータ転送スイッチインタフェース718を介して受け手に送られる。
演算スケジューラ802は、実行順序を、上記入ってくる演算リクエストに割当てる。本発明の一実施形態によれば、プログラム可能な入力/出力(PIO)演算が最高優先で与えられ、次に、バッファメモリ714からデータを検索するためのバッファ読取り演算が続き、最低優先が、バッファメモリ714にデータを書込むためのバッファ書込み演算に与えられる。かくして、読取り演算は、FIG.9に関連して説明した適当なFIFOバッファの書込み演算をバイパスする。データが受け手メモリをターゲットとするか、受け手メモリから到達した場合には、データは、バッファメモリ714から送られる前、またはバッファメモリ714に書込まれる前に整合される必要があることに留意されたい。
演算スケジューラ802の出力ポートは、フェッチ段804の入力ポートに接続される。フェッチ段804の他の入力ポートは、バッファ状態メモリ708の出力ポートに接続される。
演算スケジューラ802がひとたび次の演算を決定すると、フェッチ段804は、バッファ状態メモリ708からの適当なバッファメモリ情報を検索して、バッファメモリ714の一部である対応チャネルバッファへの書込みまたは読取りを行なう。
フェッチ段804の出力ポートはメモリパイプ段806に接続され、該メモリパイプ段806は、バッファメモリ714への書込みおよび読取りリクエストを処理するように構成されている。メモリパイプ段806はバッファ状態メモリ708に接続され、データ転送演算中に1つまたは2つのチャネルに割当てられる対応バッファに関するバッファ状態メモリレジスタを更新する。メモリパイプ段806もバッファメモリ714に接続されて、データをバッファメモリに書込みかつバッファメモリからデータを受け入れる。メモリパイプ段806の出力ポートはプロセッサメモリバス(PMB)伝送エンジン766に接続されて、バッファメモリ714から検索されたデータをデータ転送スイッチ718に送り、データ転送スイッチ112を介して受け手アドレスへと更に伝送する。メモリパイプ段806の他の出力ポートはプログラム可能な入力/出力(PIO)コントローラ126に接続され、バッファメモリから検索されたデータを、マルチメディアプロセッサ100に接続された受け手入力/出力デバイスへと送る。
データストリーマバッファコントローラ706はまた、内部メモリバス(IMB)パイプ演算スケジューラ808を有し、該スケジューラ808は次の3つの入力信号を受けるように構成されている。すなわち、これらの入力信号とは、(1)DMAコントローラ712からのすべてのリクエスト信号、(2)内部メモリバス(IMB)およびデータ転送スイッチ718(FIG.9)のレシーブFIFOバッファ774から受けるデータ信号(これらのデータ信号は、ひとたび適当なチャンクサイズが特定チャネルのバッファメモリ714内に充満されると検索されるようにバッファメモリ714に書込まれることが意図されている)、および(3)特定チャネルのバッファメモリ714から適当なデータを検索するための転送エンジン読取り信号である。検索されたデータは、次に、FIG.1およびFIG.9に示すように、データストリーマ122のデータ転送スイッチインタフェース718を介して受け手に送られる。
演算スケジューラ808は、実行順序を、上記入ってくる演算リクエストに割当てる。本発明の一実施形態によれば、DMAが最高優先で与えられ、次に、バッファメモリ714からデータを検索するためのバッファ読取り演算が続き、最低優先が、バッファメモリ714にデータを書込むためのバッファ書込み演算に与えられる。かくして、読取り演算は、FIG.9に関連して説明した適当なFIFOバッファの書込み演算をバイパスする。データが受け手メモリをターゲットとするか、受け手メモリから到達した場合には、データは、バッファメモリ714から送られる前、またはバッファメモリ714に書込まれる前に整合される必要があることに留意されたい。
演算スケジューラ808の出力ポートは、フェッチ段810の入力ポートに接続される。フェッチ段810の他の入力ポートは、バッファ状態メモリ708の出力ポートに接続される。演算スケジューラ802がひとたび次の演算を決定すると、フェッチ段804は、バッファ状態メモリ708からの適当なバッファメモリ情報を検索して、バッファメモリ714の一部である対応チャネルバッファへの書込みまたは読取りを行なう。
フェッチ段810の出力ポートはメモリパイプ段812に接続され、該メモリパイプ段812は、バッファメモリ714への書込みおよび読取りリクエストを処理するように構成されている。メモリパイプ段812はバッファ状態メモリ708の入力ポートに接続され、データ転送演算中に1つまたは2つのチャネルに割当てられる対応バッファに関するバッファ状態メモリレジスタを更新する。メモリパイプ段812はバッファメモリ714に接続されて、データをバッファメモリに書込みかつバッファメモリからデータを受ける。メモリパイプ段812の出力ポートは内部メモリバス(IMB)伝送エンジン770に接続されて、バッファメモリ714から検索されたデータをデータ転送スイッチ718に送り、データ転送スイッチ112を介して受け手アドレスへと更に伝送する。メモリパイプ段812の他の出力ポートはDMAコントローラ712に接続され、バッファメモリ714から検索されたデータを、マルチメディアプロセッサ100に接続された受け手入力/出力デバイスへと送る。
バッファメモリ714はデュアルポート型であるので、上記各パイプは、接続することなく両バッファメモリバンク714a、714bにアクセスできる。前述のように、本発明の一実施形態によれば、バッファメモリ714は4KB SRAMメモリである。データアレーは、1ライン当たり8バイトとして組織化されかつ一度に8バイトアクセスされる。複数の小さいバッファ部分がバッファメモリ714内に分割されており、ここで、各バッファ部分は、データ転送演算中に特定チャネルに割当てられる。
バッファメモリ714には、バッファメモリ内に8バイトのライン当たり8ビットを保持する有効ビットメモリが付随する。有効ビットの値は、特定バイトが有効であるか否かを表示するのに使用される。有効ビットは、対応する割当てバッファが充満されるたびごとにフリップされる。これにより、割当てられたバッファ部分を、これがデータ転送演算中に使用されるたびごとに再初期化する必要をなくすことができる。しかしながら、バッファが経路に割当てられるたびごとに、有効ビットアレーの対応ビットはゼロに初期化されなくてはならない。
バッファ状態メモリ
前述のように、バッファ状態メモリ708は、これがサポートする64個の各バッファの状態を保持する。各バッファ状態は、バッファ状態メモリ1(BSM1)およびバッファ状態メモリ2(BSM2)と呼ばれる2つの64ビットサブフィールドに分割される128個のビットフィールドを有している。テーブル23、24は、バッファ状態メモリのビットおよびフィールドを記述する。
DMA CONTROLLER
FIG.11は本発明の一実施形態によるDMAコントローラ138を示すが、本発明の範囲はこれに限定されるものではない。前述のように、DMAコントローラ138は、入力/出力バス132およびデータストリーマバッファコントローラ706に接続されている。
優先アービタ202は、I/Oバス132に接続された1つ以上のI/Oデバイスから直接メモリアクセスDMAを受けるように構成されている。
入ってくるDMAリクエストバッファ204は、I/Oバスに接続されかつリクエストが認識されたI/Oデバイスから関連リクエストを受けるように構成されている。各I/Oデバイスは、所望のバッファメモリ、バイトの数およびバッファへの入力またはバッファからの出力のような転送形式のバッファ表示を有するリクエストデータを特定化する。各リクエストは、入ってくるDMAリクエスト204のバッファに記憶されて、DMAリクエストキューを形成する。DMAリクエストバッファ204の出力ポートは、FIG.10に関連して説明したように、データストリーマバッファコントローラ706に接続される。
入ってくるDMAデータバッファ206はまた、I/Oバス132に接続され、かつリクエストが認識されておりかつリクエストデータが入ってくるDMAリクエストバッファ204に供給されているI/Oデバイスにより送られるべきことを意図したデータを受けるように構成されている。DMAデータバッファ206の出力ポートは、FIG.10に関連して説明したように、データストリーマバッファコントローラ706に接続されている。
出ていくDMAデータバッファ208は、また、I/Oバス132にも接続されておりかつI/Oデバイスに送るべきことを意図したデータを伝送するように構成されている。出ていくDMAデータバッファ208は、FIG.10に関連して説明したように、データストリーマバッファコントローラ706からデータを受けるように構成されている。
かくして、演算中に、DMAコントローラ138は2つの重要な機能を遂行する。第1に、DMAコントローラ138は、DMAリクエストを行うことを意図したI/Oデバイス間の仲裁を行う。第2に、DMAコントローラ138は、データストリーマバッファコントローラに送られるDMAリクエストおよびデータ、およびI/Oバス132を介してI/Oデバイスに送られるデータに対するバッファリングを行う。DMAリクエストを行うI/Oデバイスは、第1に、優先アービタ202がI/Oバスにアクセスしてその意図したデータを転送することをリクエストする。アービタ202は、異なるI/Oデバイス間の仲裁を行うことをI/Oデバイスによって特定されるDMA優先値を用いる。DMAコントローラ138は、I/Oデバイスから送られるデータについてI/Oデバイスからくるデータに高度の優先を割当てる。デバイスの優先に従って、矛盾するリクエストが仲裁される。
好ましくは、DMAコントローラ138に対するデバイスリクエストは、完全なパイプライン型の、1サイクル当たりの速度でサービスされる。アービタ202は、4つの優先レベルをもつラウンドロビン優先スケジューラ構成を用いている。リクエストするI/Oデバイスがアービタ202からの認可信号を受けると、I/Oデバイスは、そのリクエストデータをDMAリクエストバッファリング204に供給する。リクエストが出力リクエストである場合には、リクエストは、データストリーマバッファコントローラ706に直接供給される。リクエストデータに収容されるバッファ識別に関連するバッファが、データ転送に適合するほど充分に大きくない場合には、データストリーマバッファコントローラは、DMAコントローラ138に知らせ、該コントローラ138は、非肯定応答NACK表示(not acknowledge NACK indication)をI/Oデバイスに戻す信号を送る。
I/Oデバイスからのリクエストがデータ入力である場合には、DMAコントローラは、I/Oデータバスの1サイクルを得るときに、I/Oデバイスに信号を送ってそのデータをI/Oバス132に供給する。データストリーマバッファコントローラは、該コントローラがバッファのオーバーフローまたはアンダーフローを検知すると割込み信号を発生する。割込み信号は、次に、マルチメディアプロセッサ100の演算を制御するプロセッサに伝送される。
DMAコントローラ138は、各リクエストのバッファ識別を用いて、リクエストされたバイトをバッファに(またはバッファから)移動させるデータストリーマバッファコントローラ706を介して、経路の正しいバッファにアクセスする。
データストリーマチャネル機能の例示演算を、データストリーマ122についての異なるステップのフローチャートを示すFIG.15A〜FIG.15Cを参照して以下に詳細に説明する。
データ転送演算に対するリクエストに応答して、チャネルの状態は、例えばステップ302でのds open patchと呼ばれるコマンドにより最初に初期化される。ステップ304では、データ経路をセットアップするための利用可能な資源がチェックされ、バッファメモリおよび1つまたは2つのチャネルがデータ転送演算に対するリクエストに応答して割当てられる。
ステップ306では、適当な値が、表23および表24に関連して説明した値に従って、新しいデータ経路のバッファ状態メモリ708に書き込まれる。ステップ308では、有効ビットが、バッファに使用される割当てデータRAMの部分に対応する位置でバッファメモリ714にリセットされる。ステップ310では、各割当てチャネルについては、表13〜表19に従って、対応チャネル状態メモリ位置が、チャネル状態メモリ704で初期化される。
データ経路がステップ302〜310に従ってひとたび定められたならば、初期化されたチャネルがステップ312においてアクティブにされる。本発明の一実施形態によれば、チャネルのアクディブ化は、ds kickコマンドと呼ばれるソフトウェアコールである。内部的には、このコールは、FIG.10〜FIG.12に関連して説明したようなPIOマップに特定化されたPIOアドレスへの非キャッシュ書込みであるチャネルds kick演算に変換する。チャネル状態メモリに記憶された値は、記述子220(FIG.13)または記述子240(FIG.14)のような記述子のアドレスであり、チャネルは実行を開始する。
ステップ314では、転送エンジン702は、PIOコントローラ126からチャネルアクティブ化信号を受け、かつこの信号に応答して、記述子アドレスをチャネル状態メモリ704の対応位置に書き込む。ステップ316では、転送エンジン702は、チャネルアクティブ化信号が送り手(バッファへの入力)チャネルに対するものであるか否かを決定する。そうであれば、ステップ318において、バッファサイズ値が、表15に示したような剰余チャンクカウント(remaining chunk count: RCCNT)で書き込まれる。送り手チャネルに対する剰余チャンクカウントの値は、このデータ転送のために割当てられたバッファメモリの空き空間の数、従ってチャネルがバッファ内に安全にフェッチできるバイト数を表示する。受け手チャネルに対する剰余チャンクの値は、バッファの有効バイト数、従ってチャネルが安全に転送できるバイト数を表示する。
最後に、ステップ320で、転送エンジン702は、表15に示したようなチャネル状態メモリの対応位置にアクティブフラグをターンオンする。割当て送り手チャネルのチャネル状態メモリ704の対応インターバースト遅延フィールドもゼロにセットされる。
ステップ324では、チャネルが演算スケジューラ742(FIG.8)に供給される。各チャネルは、転送エンジン702(FIG.8)の演算スケジューラ742によるスケジューリングであると考えられ、チャネルがゼロインターバースト遅延カウントを有するとき、そのアクティブフラグがターンオンされかつその対応剰余チャンクカウント(RCCNT)が非ゼロ数となる。
チャネルのターンがスケジューラ742に到達すると、転送エンジン702が、ステップ326で記述子フェッチ演算をスタートさせる。記述子がデータ転送スイッチインタフェース718(FIG.9)を介して到達すると、レシーブエンジン772は、到達した記述子を転送エンジン702にルーチングする。ステップ328では、記述子の値が、チャネル状態メモリ704の割当てられたチャネル位置に書込まれる。ステップ330では、送り手チャネルが、転送データをバッファメモリ714の割当てバッファにスタートさせる準備がなされる。
送り手チャネルがスケジューリングされると、次の記述子のプリフェッチが開始され、ステップ332では、FIG.9のデータ転送スイッチインタフェース718のバッファキューRQQ764をリクエストすべく付加されるデータに対する読取りリクエストメッセージを発生する。本発明の一実施形態によれば、次の記述子のプリフェッチが、FIG.13およびFIG.14に関連して説明したような制御語記述子に停止ビットおよびプリフェッチビットの両方をセッティングすることにより、ユーザにより禁じられることに留意されたい。また、プリフェッチは、「最終記述子」ビットが現在の記述子の制御語にセットされるときには遂行されない。
リクエストキュー764に付加される読取りリクエストの数は、幾つかのパラメータに基づいて定まる。例えば、このような1つのパラメータとして、現在作動しているチャネルについてチャネル状態メモリに書込まれるバーストサイズがある。バーストサイズは、1つのリクエストコマンドにより開始されるデータ転送サイズを表示する。好ましくは、チャネルの単位スケジュール当たりに発生されるリクエスト数がバーストサイズを超えることはない。他のパラメータは剰余チャンクカウントである。例えば、3、ffのバーストサイズではバッファサイズは64バイトであり、従って2つのリクエストが発生される。なぜならば、本発明の一実施形態によれば、各データ転送スイッチリクエストが32バイトを超えないからである。他のパラメータは、記述子の幅、ピッチおよびカウントフィールドである。例えば、幅が、4のカウント(この場合には3のバーストサイズおよび64の剰余チャンクカウントRCCNTとなる)について32バイトのピッチで分離される8バイトである場合には、チャネルは、8バイトの長さの3つの読取りリクエストを発生する。次に、以後のカウントに対する記述子の必要性を満たす最終リクエストを発生すべくチャネルの他のスケジュールがとられる。
チャネル334でひとたびチャネルがその読取りリクエストを完了すると、
剰余チャンクカウントの値は適当に減分(decremented)される。インターバースト遅延カウントフィールドは、特定化できる最小インターバースト遅延値にセットされる。このフィールドは、ステップ338で、8サイクルずつ減分される。このフィールドの値がステップ340でゼロにされると、チャネルは、その作動を継続すべく再びスケジューリングされる。
ステップ342では、チャネルが再びスケジューリングされる。例えば前述のように、チャネルは、最初の8バイトを満たす1つのリクエストを発生する。ステップ344での記述子の完了時に、アクティブフラグがターンオフされ、チャネルは、表15のアクティブフラグフィールドが、例えばds continueコールと呼ばれるデータ経路連続演算コマンド(data path continue operation command )により再びセットされるまで、優先スケジューラ740により再び考察されることはない。ステップ346で停止ビットがセットされない場合には、チャネルは、プリフェッチされた記述子が到達したか否かをチェックする。記述子が既に到達していれば、記述子は、ステップ350で、プリフェッチされた記述子を現在位置にコピーし、ステップ352で次の記述子のプリフェッチをスタートさせる。
転送エンジン702は、バーストサイズを超え、剰余チャンクカウントRCCNTが尽き、停止ビットに遭遇し、次の記述子が未だ到達していないか、最終記述子が到達するまで、このチャネルの読取りリクエストを発生し続ける。
FIG.15Aを参照し、ステップ316で現在考察されているチャネルが受け手チャネルであるときには、ステップ380が実行される。このステップ380では、チャネルは送り手チャネルのように直ちにスケジューリングされない。なぜならば、剰余チャンクカウントフィールドの値はゼロだからである。受け手チャネルは、ステップ382で、送り手側が充分な数のデータをその割当てバッファに転送するまで待機する。前述のように、データを割当てバッファに供給するデータ源は、他のチャネルまたは入力/出力(I/O)デバイスで構成できる。データストリーマバッファコントローラ706(FIG.10)は、入ってくるデータのトラックを維持することに留意されたい。入ってくるデータのバイト数が表23に記載された出力チャンクカウントを超えるときは、チャンクカウントを、受け手チャネルの転送エンジン702(FIG.8)に送る。転送エンジン702は、この値を、チャネル状態メモリ704の適当なチャネル位置の受け手チャネルのRCCNTに付加する。ステップ384では、このことが起こると、受け手チャネルがスケジューリングされる準備がなされる。その後、ステップ386では、転送エンジン702が、書込みリクエストを、データ転送スイッチインタフェース718を介してデータ転送スイッチ112に発生する。
書込みリクエストが発生される態様は、本発明の一実施形態に従って読取りリクエストが発生される態様に関連して前述したのと同じ原理に基づいている。かくして、考察されるべきパラメータとして、バーストサイズと、剰余チャンクカウント値と、ピッチ、幅およびカウント等の記述子フィールドとがある。
ひとたび書込みリクエストアドレスがリクエストバスに供給されたならば、データ転送スイッチインタフェース718は、ステップ388で、リクエストをデータストリーマバッファコントローラDSBC706に進める。これに応答して、データストリーマバッファコントローラ706(FIG.10)は、バッファメモリ714から必要数のバイトを取り出し、検索したデータと整合させ、かつこれらのバイトを、FIG.8〜FIG.10に関連して前述したように、FIG.9の伝送エンジン782に戻す。
データキャッシュ
本発明の一実施形態によるデータキャッシュ108の構造および演算を以下により詳細に説明するが、本発明の範囲はこれに限定されるものではない。
FIG.17は、メモリバス114′に接続されたデータキャッシュ108のブロック図を示す。メモリバス114′は、ここでの説明の目的で示されたものであることに留意されたい。従って、本発明の一実施形態によれば、データキャッシュ108は、データ転送スイッチ112に接続でき、従って、トランシーバ116を介してプロセッサメモリバス114および内部メモリバス120に接続できる。
データキャッシュ108は、メモリ位置(そのコンテンツがデータキャッシュに記憶される)のアドレスのタグビットを記憶するタグメモリディレクトリ536を有している。データキャッシュメモリ538は、主外部メモリに記憶されたデータのコピーを記憶すべく、タグメモリ536に接続される。タグメモリディレクトリ536およびデータキャッシュメモリ538の両者は、それぞれ、アービタ532、534を介してアクセスできる。タグメモリ536およびデータキャッシュメモリ538の各入力ポートは、より詳細に後述するように、「書込みデータ」を受けるように構成されている。また、タグメモリ536およびデータキャッシュメモリ538の各入力ポートは、より詳細に後述するように、「読取りデータ」を受けるように構成されている。
補充コントローラユニット(データキャッシュコントローラ)540は、一定セットのキャッシュポリシーのすべてを遂行するのに使用される。キャッシュポリシーは、キャッシュ108の演算を実行すべく選択されたルールである。これらのポリシーの幾つかは良く知られており、かつ本願に援用するJ. Handy著「データキャッシュメモリブック(Data Cashe Memory Book)」(Academic Press,Inc.1993年)に開示されている。一般に、これらのポリシーとして、ダイレクトマップドキャッシングvs. Nウェイキャッシング(direct-mapped vs. N-Way caching)、ライトスルーvs.ライトバック構成(write-through vs. write-back arrangement)、ラインサイズ割当ておよびスヌーピングがある。
前述のように、キャッシュの「ウェイ(way)」または「バンク(bank)」は、キャッシュの結合性(associativity)に関する。例えば、NウェイまたはNバンクキャッシュは、主メモリ位置からのデータを任意のNキャッシュ位置に記憶することができる。多ウェイ構成では、各ウェイまたはバンクは、それ自体のタグメモリディレクトリおよびデータメモリ(図示せず)を有している。ウェイまたはバンクの数が増大すると、各バンクのデータメモリに記憶される各メモリに対応するタグメモリディレクトリのビット数も増大することに留意されたい。また、ダイレクトマップドキャッシュはワンウェイキャッシュである。なぜならば、任意の主メモリ位置は、マッチングセットビットを有する単一キャッシュ位置にマッピングされるに過ぎないからである。
スヌープの特徴は、コヒーレンシーを維持すべく、バス114′のトラフィックをモニタリングする処理に関する。本発明の一実施形態によれば、スヌープユニット544は、補充コントローラ540および外部アクセスコントローラ542の両方に接続される。メモリバストランザクションがデータキャッシュ108に複製されたアドレスに生じるとき、スヌープユニット544はスヌープヒットを検出し、かつシステムにより使用される書込みストラテジー(ライトバックまたはライトスルー)およびコヒーレンシープロトコルの両方に従って適当な作動を行う。本発明の一実施形態によれば、データキャッシュ108は、データストリーマ122により遂行されるデータ転送演算にスヌープ機能を遂行する。
補充コントローラ540の説明に戻ると、補充コントローラの出力ポートは、それぞれ、アービタ532、536を介して、タグメモリ536およびデータメモリ538に接続されている。補充コントローラ540の他の出力ポートは、タグメモリ532の書込み入力ポートに接続される。補充コントローラ540の他の出力ポートは、キャッシュデータメモリ538の書込み入力ポートに接続される。
補充コントローラ540の他の出力ポートとして、バスリクエスト信号を供給するメモリバス114′に接続されるバスリクエストポートと、データキャッシュ108がキャッシュラインのコンテンツを対応する外部メモリ位置に書込むことを意図するときに、ライトバックデータを供給するための、メモリバス114′に接続されるライトバックデータポートと、キャッシュライン(そのコンテンツは外部メモリ位置のために意図したものである)のデータアドレスを供給するための、メモリバス114′に接続される充填データアドレスポートとがある。
補充コントローラ540の入力ポートは、データメモリ516の読取り出力からデータ信号を受けるように構成されている。補充コントローラ540の第2入力ポートは、タグメモリディレクトリ532からタグデータを受けるように構成されている。補充コントローラ540の他の入力ポートは、中央処理装置102のインストラクションユニットからのロード/記憶アドレス信号を受けるように構成されている。
本発明の一実施形態によれば、データキャッシュ108も外部アクセスコントローラ542を有している。外部アクセスコントローラ542は、データキャッシュ108が、メディアプロセッサシステム100の他のモジュールへのスレーブモジュールとして機能することを可能にする。かくして、システム100の任意のモジュールは、中央処理装置102により遂行されるのと同じアクセス原理に基づいて、データキャッシュ108にアクセスするバスマスタとして機能する。
外部アクセスコントローラ542の出力ポートは、それぞれアービタ532、534を介してタグメモリ536およびキャッシュデータメモリ538に接続され、かつタグメモリ536の書込み入力ポートに接続されている。外部アクセスコントローラ542の他の出力ポートは、キャッシュデータメモリ538の書込み入力ポートに接続される。最後に、外部アクセスコントローラ542の出力ポートは、マスタによりリクエストされるデータを供給するためのメモリバス114′に接続される。
外部アクセスコントローラ542の入力ポートは、キャッシュデータメモリ538からのデータを受けるように構成されている。外部アクセスコントローラ542の他の入力ポートとして、他のバスマスタからのアクセスリクエストを受けるための、メモリバス114′に接続されるアクセスリクエストポートと、バスマスタリクエストに関するデータのアドレスを受けるための、メモリバス114′に接続されるリクエストデータアドレスポートと、データキャッシュ108に記憶されることを意図したバスマスタにより与えられるデータを受けるための、メモリバス114′に接続される記憶データポートとがある。
メモリバス114′はまた、メモリコントローラ124を介してDRAM128に接続される。更に、メモリバス114′は、ダイレクトメモリアクセサリコントローラ138に接続される。中央処理装置102の出力ポートは、それぞれ、アービタ532、534を介してタグメモリ536およびキャッシュデータメモリ538に接続され、ロードおよび記憶演算に対応するアドレスを与える。中央処理装置102は、キャッシュデータメモリ538の書込み入力ポートに接続されて、記憶演算に対応するデータを与える。最後に、中央処理装置102の入力ポートは、キャッシュデータメモリ538の読取り出力ポートに接続され、ロード演算に対応するデータを受ける。
次に、補充コントローラ540の演算を、FIG.18に関連して説明する。ステップ560では、補充コントローラがその演算を開始する。ステップ562では、補充コントローラ540は、タグ値と、中央処理装置102から受けたロードまたは記憶アドレスの上方部分とを比較することにより、キャッシュユニット108に対するリクエストがヒットかミスかを決定する。
ステップ564では、リクエストに対してキャッシュミスが生じた場合には、補充コントローラ40がステップ568に移行して、DRAM128のような外部メモリの対応メモリ位置のコンテンツと置換する必要があるキャッシュラインを決定する。ステップ570では、補充コントローラは、キャッシュ108がライトバックポリシーを用いるか否かを決定する。ライトバックポリシーを用いる場合には、補充コントローラ540は、記憶リクエスト信号をメモリコントローラ124に発行することにより、DRAM128に置換されるキャッシュラインを与える。ステップ572では、補充コントローラ540は、ミスがあったキャッシュラインへの読取りリクエスト信号を、補充データアドレスポートを介して、メモリコントローラ124に発行する。ステップ574では、補充コントローラ540が、補充データを受けかつ該データをキャッシュデータメモリ538に書込み、かつタグメモリ536を修正する。
補充コントローラ540は、ステップ576に移行し、ロードリクエストに応答して、リクエストデータを中央処理装置102に供給する。別の構成として、補充コントローラ540は、中央処理装置102からの記憶リクエストに応答して、データをキャッシュデータメモリ538に書き込む。ステップ578では、補充コントローラ540は、中央処理装置102により与えられた記憶演算に応答して、DRAM128のような外部メモリにデータを書き込む。
ステップ564で、中央処理装置102および補充コントローラ540からのロードまたは記憶リクエストに対してヒットする場合、ステップ566に移行して、読取り演算または書込み演算を行なうキャッシュデータメモリ538からのキャッシュラインを形成する。
次に、本発明の一実施形態による補充コントローラ540に関連する外部アクセスコントローラ580の演算について、FIG.19を参照して説明する。
ステップ580では、外部アクセスコントローラが、バスマスタアクセスリクエストに応答して、その演算を開始する。本発明の一実施形態によれば、バスマスタは、FIG.1Aに関連して前述した任意のモジュールで構成でき、アクセスリクエストは、データストリーマ122およびデータ転送スイッチ112の演算に関連して説明したように発行できる。ステップ582では、外部アクセスコントローラ542は、任意のバスマスタによる読取りまたは書込みリクエストを待機する。
ひとたび外部アクセスコントローラ542がリクエストを受けると、該コントローラ542はリクエストを受けてステップ584に移行し、バスマスタが読みまたは書込み演算をリクエストしたか否かを決定する。リクエストが読取り演算である場合には、外部アクセスコントローラ542はステップ586に移行して、ヒットまたはミスが生じているか否かを決定する。読取りリクエストに応答してキャッシュヒットが生じている場合には、外部アクセスコントローラはステップ604に移行して、リクエストされたデータをバスマスタに供給する。
しかしながら、読取りリクエストに応答してキャッシュミスが生じる場合には、外部アクセスコントローラがステップ588に移行し、かつ補充コントローラ540がリクエストされたデータを得て、ステップ590でデータキャッシュを満たすように、補充コントローラ540をトリガする。データの補充後、外部アクセスコントローラ542は、ステップ604で、リクエストされたデータをバスマスタに供給する。
ステップ584で、外部アクセスコントローラが、バスマスタがデータをデータキャッシュ108に書込むことをリクエストしたと判断した場合には、ステップ592に移行して、キャッシュヒットまたはキャッシュミスいが生じたか否かを決定する。キャッシュヒットに対して、外部アクセスコントローラ542は、ステップ596に移行し、バスマスタがリクエストされたデータをデータキャッシュメモリ538に書込むことを可能にする。
しかしながら、ステップ592において、キャッシュミスが生じた場合には、外部アクセスコントローラはステップ594に移行し、キャッシュデータメモリのどのキャッシュラインを、DRAM128のような外部メモリのコンテンツと置換する必要があるかを決定する。外部アクセスコントローラは、次にステップ598に移行する。データキャッシュ108がライトバックポリシーを実行する場合には、外部アクセスコントローラは、ステップ598で、データキャッシュメモリ538から置換されるべきキャッシュラインを与えかつ記憶リクエストを、メモリバス114′を介してメモリコントローラ124に発行する。
その後、外部アクセスコントローラ542は、ステップ602に移行し、リクエストされたデータをキャッシュデータメモリに書込み、従って、タグメモリ536を修正する。
前述のように、外部アクセスコントローラ542は、中央処理装置が必要とするデータに先だって、予測できる多くのアプリケーションについて、キャッシュ正解率を顕著に増大させることができる。一例として、多くの3Dグラフィックアプリケーションの場合には、テクスチャマッピングに関する情報が、DRAM128等の外部メモリに記憶される。中央処理装置102がどの情報を使用する必要があるかを予測できるため、中央処理装置102により実際に使用される前にこの情報をデータキャッシュ108に転送するのが有効である。この場合には、中央処理装置102がテクスチャマッピング情報を必要とするときがきたとき、対応データは既にキャッシュデータに存在し、その結果キャッシュヒットが生じる。
3次元(3D)グラフィックス処理
FIG.1Aに示すように、データキャッシュメモリ108に関連する固定機能ユニット106、中央処理装置102、104および外部メモリ128は、本発明の一実施形態に従って実質的に短縮された帯域幅遅延をもつ3次元グラフィックスを遂行するが、本発明の範囲はこれに限定されるものではない。
FIG.20は、3Dグラフィックス処理に応答するマルチメディアプロセッサ100の主要構成要素に関するブロック図を示す。かくして、本発明の一実施形態によれば、固定機能ユニット106は、該固定機能ユニットの他の構成要素に対する制御コマンドを与える、プログラム可能な入力/出力コントローラ618を有している。固定機能ユニットの他の構成要素はVGAグラフィックスコントローラ603を有し、該コントローラ603は、プログラム可能な入力/出力コントローラPIOC618に接続され、かつVGAフォーマットのグラフィックスを処理するように構成されている。2次元(2D)論理ユニット605は、プログラム可能な入力/出力コントローラに接続されかつ2次元グラフィックスを処理するように構成されている。
固定機能ユニット106はまた、より詳しく後述するようなビンベース型表現アルゴリズム(bin-based rendering algorithm)を用いる3次元ユニット611を有している。基本的に、本発明の一実施形態によれば、3Dユニットは、チャンク、タイルまたはビンと呼ばれるデータの単位を操作する。各タイルは、全スクリーンのうちの小さい部分である。かくして、本発明の一実施形態による3Dユニットは、好ましくは、マルチメディアプロセッサ100内の対応バッファメモリ空間内に3D物体を引き出すビニング処理(binning process)を用いる。かくして、表現アルゴリズムについての外部メモリの使用で遭遇するボトルネック問題は実質的に回避される。なぜならば、マルチメディアプロセッサチップ内でのデータ転送は、実質的に高い帯域幅で達成されるからである。
3Dユニット611は3Dタイルラスタライザ607であり、該ラスタライザ607もプログラム可能な入力/出力コントローラ618に接続されておりかつグラフィックス処理タスクを遂行するように構成されている。3Dタイルラスタライザ(3DTR)607の2つの主なタスクとして、FIG.21およびFIG.22に関連してより詳細に説明するように、その演算モードに基いた、ビニングおよびラスタライゼーションがある。
3Dユニット611はまた、3Dテクスチャコントローラ(3DTC)609を有し、該コントローラ609もプログラム可能な入力/出力コントローラ618に接続され、かつコントローラにより制御される。FIG.23に関連してより詳細に説明するように、3Dテクスチャコントローラは、3Dユニット611で使用すべきことを意図したテクセルのアドレスを引き出す。かくして、引き出されたアドレスに基づいて、3Dテクスチャコントローラ609は、データストリーマ122により使用されるチャンク記述子を発生し、データストリーマ122の演算に関連して前述したように、SDRAM128等のローカルメモリから適当なテクセルを得る。
3Dユニット611はまた3Dテクスチャフィルタユニット(3DTF)610を有し、該ユニット610は、プログラム可能な入力/出力コントローラ618に接続され、かつ該コントローラにより制御される。FIG.24およびFIG.25に関連してより詳細に後述するように、フィルタユニット610は、シェーディングカラーブレンディングおよびアキュムレーションブレンディングに関連して、バイリニア(1パス)およびトリリニア(2パス)補間のようなテクスチャフィルタリング演算を遂行する。
固定機能ユニット106はビデオスケーラユニット612を有し、該ユニット612は、プログラム可能な入力/出力コントローラ618に接続されかつ該コントローラにより制御される。ビデオスケーラユニット612は、幾つかの水平および垂直タップを用いてビデオデータのアップスケーリングおよびダウンスケーリングを与えるように構成されている。ビデオスケーラ612は、ディスプレイスクリーン上に3D物体をディスプレイするディスプレイリフレッシュユニット226(FIG.1B)に出力画素を供給する。本発明の一実施形態に従ってより詳細に説明するように、テクスチャフィルタの幾つかの機能は、ビデオスケーラの機能と同じ原理に基づいている。いずれにせよ、ビデオスケーラ612は、本発明の一実施形態に従って、テクスチャフィルタ610と幾つかの機能を共有する。
固定機能ユニット106は、該機能ユニット106の種々の構成要素がデータ転送スイッチ112およびデータストリーマ122と相互作用することを可能にするデータ転送スイッチインタフェース614を有する。データ転送インタフェース614は、FIG.9に示したデータ転送スイッチインタフェース718に関連して前述したのと同じ原理に基づいて演算する。データキャッシュインタフェース616は、固定機能ユニット106がデータキャッシュユニット108にアクセスすることを可能にする。
FIG.20は、本発明の一実施形態による3Dグラフィックス処理演算に関連するデータキャッシュ108の種々の構成要素を示す。しかしながら、明瞭化の目的で、FIG.16〜FIG.19に関連して説明したようなデータキャッシュ108の他の特徴および構成要素は、FIG.20には示されていない。また、データキャッシュ108の構成要素はデータキャッシュ内に配置されているところが示されているが、本発明の他の実施形態に従って、1つ以上の他の構成要素を別のキャッシュユニットとして配置できることを理解すべきである。
データキャッシュ108は、三角形セットアップバッファ620を有し、該バッファ620は、三角形の各辺の傾斜のような三角形パラメータを得るための計算結果を記憶すべく構成されている。データキャッシュ10はまたラスタライザセットアップバッファ622を有し、該バッファ622は、スクリーン座標、テクスチャ座標、シェーディングカラー、深さおよびこれらの部分的に異なるパラメータ等の各三角形の付加パラメータを記憶するように構成されている。データキャッシュ108は、タイルのすべての深さ値を記憶するタイルZバッファ628とも呼ばれる深さタイルバッファを有する。
データキャッシュ108はまた、FIG.17〜FIG.19に関連して前述したように、補充コントローラ540および外部アクセスコントローラ542を有している。また、中央処理装置102、104は、FIG.1Aに関連して説明したように、データキャッシュ108に接続されている。FIG.20に示された付加構成要素として、FIG.1〜FIG.15に関連して開示しかつ説明したような、データ転送スイッチ112と、データストリーマ122と、メモリコントローラ124と、SDRAMとがある。I/Oバス13は、モニタ(図示せず)のような画像ディスプレイデバイスに信号を供給するディスプレイリフレッシュユニット226に信号を供給するように構成されている。本発明の一実施形態によれば、ビデオスケーラ612は、ディスプレイユニット226に直接接続されている。
以下に詳述するように、スクリーン上のすべての三角形のジオメトリ変換およびライティング変換は、本発明の一実施形態により、VLIW中央処理装置102により遂行される。3Dユニット611は、各タイルと交差するすべてのビンまたはタイルおよびすべての三角形を識別することに応答できる。より詳しくは、3D三角形ラスタライザ607は、各タイルのすべての三角形を識別する。その後、各ビンまたはタイルについて、VLIW中央処理装置102は、三角形セットアップ試験を行って、各三角形の辺の傾斜等の各三角形のパラメータを計算する。3D三角形ラスタライザ607はまた、各ビンまたはタイルと交差するすべての三角形をラスタライズする。3Dテクスチャコントローラ607は、ビンまたはタイルのすべての画素のテクスチャアドレスを計算する。
ひとたびテクセルのアドレスが得られたならば、データストリーマ122は、SDRAM128から対応するテクセル情報を得る。3Dテクセルフィルタ610は、フェッチされた画素のバイリニア補間およびトリリニア補間を遂行する。その後、データストリーマ122は、各タイルまたはビンの処理された画像データをフレームバッファに書込む。かくして、フレームバッファは、画像のすべての画素についての強さ/カラー値を含むDRAM128にアレーを形成する。グラフィックスディスプレイデバイスは、このアレーにアクセスして、各画素がディスプレイされる強さ/カラーを決定する。
FIG.21は、本発明の一実施形態による3D三角形ラスタライザ607を示すブロック図である。明瞭化のため、FIG.21は、3D三角形ラスタライザ607がビニングモードで演算するときに生じる信号の流れを示すものである。
データキャッシュ108は、ビニング演算に必要な情報を与えるべく、3D三角形ラスタライザ607に接続される。ビニング演算中に用いられるデータキャッシュ108の2つのバッファは、セットアップバッファ622およびタイルインデックスバッファ630である。
3D三角形ラスタライザ607は、データキャッシュ108からの三角形セットアップ情報を受けるように構成されたフォーマットコンバータユニット632を有している。フォーマットコンバータユニット532は、データキャッシュ108から受けたパラメータを、浮動点番号から固定点番号に変換する。スクリーン座標補間回路(screen coordinates interpolator)634はフォーマットコンバータ632に接続され、3D三角形ラスタライザ607により処理される画素のx、y座標を形成する。ビニングユニット644は、補間回路634からx、y座標を受けかつFIG.26に関連してより詳細に説明するようなビニング演算を遂行する。ビニングユニットもインデックスバッファ630に接続されている。ビニングユニット644により計算される情報は、データストリーマ122を介して、メモリ128内のタイルデータバッファ646に供給される。
演算中、3D三角形ラスタライザ607は、データキャッシュ108からの入力として扱われる三角形の各ノードすなわち頂点のスクリーン座標を読取る。その後、三角形ラスタライザは、各ビンまたはタイルと交差するすべての三角形を識別しかつSDRAM128の出力としてタイルインデックスおよびタイルデータと呼ばれるデータ構造を構成する。
前述のように、ラスタライゼーションフェーズが開始する前に、スクリーン全体のすべての三角形がジオメトリおよびライティングについて処理される。次に、セットアップおよびラスタライゼーションが、各ビンまたはタイルについて反復実行される。ビニングは、出力を分離して同サイズの正方形にイメージアップすることを含む。本発明の一実施形態によれば、各ビンまたはタイルのサイズは、16×16画素により形成される正方形領域である。各正方形はラスタライズされ、次に最終フレームバッファに移動される。ビンが正しくラスタライズされるようにするには、当該ビンと交差するすべての三角形に関する情報を得るのが好ましい。この目的のため、スクリーン内のすべての三角形についてのセットアップおよびラスタライゼーションが、ビニング処理の前に最初に得られる。
ビニングは、三角形の辺に沿う各画素を求め、かつ三角形の画素が属するすべてのビンを識別する処理を含む。かくして、この処理は、三角形の頂点を表す画素を識別し、次に三角形の左右の辺に沿って移動させて、画素が属する対応ビンが得られるように、水平走査線と交差する他の画素を識別することにより開始する。ひとたびビンが識別されたならば、処理される三角形に対応する識別番号すなわち三角形IDが、識別されたビンと関連付けられる。
インデックスバッファ630は、処理されるスクリーン上のビンの数に一致する2次元アレーであるのが好ましい。この数は、所与のスクリーン解像度に対して静的である。かくして、タイルインデックスバッファ630は、タイルデータバッファ646の第1三角形IDについてのインデックスを含んでいる。タイルバッファは、本発明の一実施形態によるローカルメモリの265Kサイズの静的アレーである。データバッファ646は、三角形インデックスおよび次の三角形へのポインタを含んでいる。かくして、連鎖を続けることにより、本発明の一実施形態に従って、所与のビンについてのすべての三角形を見出すことができる。
FIG.26は、本発明の一実施形態による、例えば参照番号861で示す例示三角形についてのビニング処理の演算を示すものであるが、本発明の範囲はこれに限定されるものではない。三角形861は中間ノードすなわち頂点Bを通って引かれる水平線により2つの小三角形に分割される。FIG.26に示すように、三角形861は、三角形窓を形成する水平および垂直の両方向の幾つかの画素に跨っている。ビニングユニット644は、線毎にこれらの画素に跨る。かくして、ステップ862では、ビニングユニット644が、三角形の上頂点を含む線を処理する。このスパン(跨り)の間、最左方の画素のx座標はAxすなわちCross XACであり、最右方の画素のx座標はAxすなわちCross XABである。Cross XACは、辺ACと次のスパンとの間の交差点のx座標であり、Cross XABは、辺ABと次のスパンとの間の交差点のx座標である。これらの画素が属するビンを抽出するため、ビニングユニット644は、下記条件を用いている。
X=[min 2 (Ax, Cross XAC), max 2 (Ax, Cross XAB)]
ここで、Xは各走査線に対する三角形のx座標の範囲である。
ステップ864では、ビニングユニット644は、下記条件を用いている。
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は三角形861の辺ACの傾斜であり、dxdy ABは三角形861の辺ABの傾斜である。ステップ864は、スパンが中頂点Bを含むまで反復する。その後、ビニングユニット644は、ステップ866に移行する。
ステップ866では、最右方の画素のx座標は3つのパラメータの最大値であり、次のようになる。
X=[min 2 (Cross XAC, Cross XAC + dxdy AC), max 3(Cross XAB, Bx, Cross XBC)]
ここで、Cross XBCは、BCと次のスパンとの間の交差点のx座標である。その後、ビニングユニット644は、スパンが下頂点Cを含むようになるまで、Cross XACおよびCross XBCにdxdy ACおよびdxdy BCを加え続けることによりステップ868を、例えば次のように遂行する。
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
最後にステップ870では、ビニングユニット644は、最終画素が属するビンを、例えば次のように識別する。
X=[min 2 (Cross XAC, Cx), max 2 (Cross XBC, Cx)]
上記ステップ862〜870の間に、ビニングユニット644は、各三角形の辺の画素が属するすべてのビンのIDを記憶する。スクリーンに表示されるすべての三角形のビニング処理の結果として、インデックスバッファ630およびタイルデータバッファ646が満たされる。これにより、3Dユニット611は、各ビンまたはタイルが後述のようにして処理されるときにビンと交差する三角形を検索することが可能になる。
FIG.22は、ラスタライゼーションモードにある3D三角形ラスタライザ(3DTR)607を示す。ラスタライゼーションモード中に用いられるデータ構造が、ビニングモード中にタイルインデックスバッファ630が用いられるデータキャッシュ108のメモリを再使用できることに留意されたい。かくして、ラスタライゼーションの前に、インデックスバッファ630のコンテンツがローカルメモリDRAM128に書込まれる。
3D三角形ラスタライザ607はテクスチャ座標補間回路636を有し、該補間回路636は、フォーマットコンバータ632に接続されかつ補間法を用いることにより三角形内の画素のテクスチャ座標データを得るように構成されている。フォーマットコンバータ632にはカラー補間回路618が接続され、かつ補間法を用いることにより三角形内に画素のカラー座標を得るように構成されている。
また、フォーマットコンバータ632には深さ補間回路640が接続されており、該補間回路640は、三角形内の画素の深さを得るように構成されている。本発明の一実施形態によれば、ビンが表現されるとき、ビン内の三角形がオーバーラップ層内に入る傾向にあることに留意することが重要である。層は、他の層から或る深さにある分離可能な表面である。3D三角形ラスタライザ607は、連続層内の完全な三角形をラスタライズすることを防止するため、層を前後に処理する。可視画素のみをラスタライズすることにより、かなりの計算および処理が節約される。かくして、ラスタライザ607は、層をビン毎に分類する。ビン内の三角形の平均個数は約10であるので、分類処理には長時間を要しない。本発明の一実施形態によれば、この分類は、いかなる三角形セットアップすなわちラスタライゼーションよりも前に行われる。
ビン内の三角形は、単純に各三角形の平均深さすなわちZ値では分類されないのが好ましいことに留意されたい。大きい三角形では、深さ補間回路640が三角形の中間のZ値を得る。深さ補間回路642にはZ有効レジスタ642が接続されており、後述のようにして、データキャッシュ108の深さタイルバッファ628に記憶される有効深さ値を追跡する。
FIG.22に示すように、ラスタライゼーションモード中にデータキャッシュ108に用いられるバッファは、断片インデックス650、ラスタライザセットアップバッファ622、テクスチャ座標タイル(タイルT)、カラータイル(タイルC)、および深さタイル(タイルZ)である。断片インデックス650は断片発生器648に接続され、該断片発生器648は、アンチエイリアシングまたはαブレンディングに使用される断片を供給する。
断片発生器648は、断片リンクバッファ652、断片バッファ654のテクスチャ座標、断片バッファ656のカラーおよび断片バッファ658の深さを有するメモリ128の4つのバッファ空間に接続されている。メモリのこれらのバッファの演算は、データキャッシュ108の対応バッファに関連して述べたのと同じ原理に基づいている。ラスタライザセットアップバッファ622は、ラスタライゼーション処理を完遂するのに必要な三角形パラメータを得るべく、フォーマットコンバータ632に接続される。また、テクスチャ座標タイル624は、テクスチャ座標補間回路636に接続される。同様に、カラータイル626はカラー補間回路638に接続され、深さタイル628は深さ補間回路640に接続される。深さタイル628は、各三角形の有効深さ値を、処理されるビン内に保持する。
かくして、演算中に、3D三角形ラスタライザ607は、データキャッシュラスタライザセットアップバッファ622から、スクリーン座標、テクスチャ座標、シェーディングカラー、深さおよびこれらの部分的な差異、dR/dX、dR/dY等を含む各三角形の頂点に対応する三角形セットアップデータを読取る。例えばこれらの差異について、Rはシェーディングカラーの赤色成分、dR/dXはx方向に沿って1画素移動させるRの差異を意味する。これらのセットアップパラメータを使用して、3D三角形ラスタライザ607は、補間法により所与の三角形の内側をラスタライズする。Zバッファリングを用いることにより、可視三角形またはこれらの一部の結果のみがテクスチャ座標タイル624およびカラータイル626に記憶される。かくして、各画素のZ値がタイル628に記憶される。Z値は、ユーザの目から離れた画素の深さを表示する。かくして、Z値は、画素が他の物体から隠されているか否かを表示する。
この結果、テクスチャ座標タイル624は、タイルについてのテクスチャマップアドレスおよびサイズ、およびテクスチャ座標等のテクスチャ関連情報を記憶する。テクスチャ座標は、固定点数としてテクスチャ座標補間回路636により補間され、かつ同じ固定点フォーマットのテクスチャ座標タイル624に記憶される。同様に、カラータイル626は、可視画素についてのRGBAシェーディングカラーを記憶するデータ構造を定める。かくして、ラスタライゼーション後に与えられるテクスチャおよびカラー情報は、本発明の一実施形態による可視画素に関するものである。
FIG.23は、本発明の一実施形態に従ってアドレスされるテクセルを発生させるのに使用される3Dテクスチャコントローラ609を示すブロック図である。3Dテクスチャコントローラは、メモリアドレス計算機664に接続されるフォーマットコンバータ632を有している。メモリアドレス計算機の出力はテクスチャキャッシュタグチェックユニット666の入力ポートに接続され、該ユニット666は、アドレスマップ発生器668およびデータストリーマ記述子発生器670に接続されている。3Dテクスチャコントローラ(3DTC)609は、データキャッシュ108に接続されている。
データキャッシュ108は、3Dテクスチャコントローラ609により遂行されるテクスチャアドレス発生中に、アドレスマップバッファ660と、テクスチャ座標タイル624と、カラータイル662とを用いる。かくして、アドレス発生器668は、アドレスマップを、データキャッシュ108のアドレスマップバッファ660に供給する。また、テクスチャ座標タイル624は、ラスタライゼーション処理中に発生されるテクスチャ座標をメモリアドレス計算機664に供給する。カラータイル662もまた、カラーデータをメモリアドレス計算機664に供給する。
データキャッシュ108により供給される情報に応答して、3Dテクスチャコントローラ609は、必要なテクセルのメモリアドレスを計算する。次に、3Dテクスチャコントローラ609はキャッシュタグ666をルックアップして、テクセルが、テクスチャキャッシュ667と呼ばれるデータキャッシュ108の所定部分にあるか否かをチェックする。キャッシュがヒットすると、3Dテクスチャコントローラ609は、キャッシュアドレスを、アドレスマップ660と呼ばれるデータキャッシュ108の他のデータ構造に記憶する。さもなくば、3Dテクスチャコントローラは、ミスしたキャッシュラインアドレスを、データストリーマ記述子として記憶し、これによりデータストリーマ122はラインをメモリ128からテクスチャキャッシュ667へと移動させることができる。キャッシュミス状態中に、アドレスマップ660も書込まれる。
テクセルフィルタリング中の後の段階で、アドレスマップ660に記憶されるデータが使用される。かくして、テクセルアドレスのマッピングを画素に表示するのに、アドレスマップバッファ660が使用される。アドレスマップバッファ660に記憶されるアレーは、ビン内の画素についての静的アレーであり、かつどの4×4テクセルブロックが所与の画素に適用できるかを表示するための、画素のバッファにおける位置へのポインタを含んでいる。必要とされるフィルタの形式もアドレスマップバッファ660に記憶される。
FIG.24は、本発明の一実施形態による3Dテクスチャフィルタ610を示す。3Dテクスチャフィルタ610は、アドレスマップバッファ660からテクセル情報を受けるように構成されたテクセルフェッチユニット942を有している。テクセルフェッチユニット942が受けた情報はテクスチャキャッシュ667に供給されて、該テクスチャキャッシュ667のどのテクセルを次に濾過(フィルタリング)する必要があるかを表示する。
3Dテクスチャフィルタ610はまた、テクスチャキャッシュ667からテクセルを受けるように構成されたパレタイズユニット944を有している。テクスチャキャッシュの値がテクセルカラーのインデックスを表示するとき、パレタイズユニット944は、テクセルカラーに、データキャッシュに設けられたテーブルからのインデックスを付す。パレタイズユニット944の出力ポートは、水平補間回路946に接続され、該水平補間回路946は垂直補間回路948に接続されている。水平および垂直の両補間回路946、948は、アドレスマップバッファ660からの係数パラメータを受けるように構成されている。垂直補間回路948の出力ポートはトリリニア補間回路950に接続され、該補間回路950は、補間回路の第1パスのカラータイル622からの係数パラメータを受け、かつ補間回路の第2パスのカラーバッファ930からの係数パラメータを受ける。
本発明の一実施形態によれば、2種類の係数があることに留意すべきである。1つの係数はバイリニア補間回路に使用され、かつ4つの近隣テクセルカラーの重みをどのように補間するかを示す。他の係数は、トリリニア補間回路に使用され、かつ2つのバイリニアカラーの重みをどのように補間するかを示す。
補間回路950の出力ポート950は、シェーディングカラーブレンドユニット952に接続される。シェーディングカラーブレンドユニット952はまた、カラータイル622からカラー値を受けるように構成されている。シェーディングカラーブレンドユニット952の出力ポートは、カラータイル622および累算ブレンドユニット954に接続される。累算ブレンドユニット954の出力ポートは、本発明の一実施形態に従ってデータキャッシュ108に存在する累算バッファ934の入力ポートに接続される。
演算中、3Dテクスチャフィルタ610は、バイリニアテクスチャフィルタリングを行う。アドレスマップバッファ660に記憶されたメモリアドレスを用いることにより、入力テクセルがテクスチャキャッシュ667から読取られる。バイリニアフィルタリングの結果が、カラータイル622のシェーディングカラーとブレンドされ、かつ最終テクスチャードカラーとしてカラータイル622に戻される。累算が特定されると、最終カラーが、累算バッファ934での累算されたカラーにブレンドされる。
トリリニアフィルタリングを遂行するには2つのパスが必要である。第1パスでは、3Dテクスチャフィルタが、カラーバッファ930に記憶されたバイリニアフィルタリング結果を出力する。第2パスでは、3Dテクスチャフィルタは、カラーバッファ930に記憶されたカラーを他のバイリニアフィルタリングカラーとブレンドすることにより最終トリリニア結果を発生する。
パレタイズユニット944のコンテンツは、セットパレットモードで3Dテクスチャフィルタ610をアクティブにすることにより、データキャッシュ108からロードされる。
バイリニアおよびトリリニアフィルタリングは、幾つかの近隣テクセルの重み付け合計を得る処理を使用する。本発明の一実施形態によれば、近隣テクセルの水平補間回路が後続する垂直補間回路を用いることによりテクセルデータが得られる。例えば、垂直テクセルの数は3とし、水平テクセルの数は5にすることができる。フィルタリングは特定化できる係数を用いて行われる。かくして、フィルタリング処理は15テクセルの重み付け合計として定められ、濾過されたテクセルの最終出力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は、フェッチされたテクセルに対応するテクセル情報である。補間点が前のグリッドと同じグリッド内にあり、本発明の一実施形態により垂直補間を行う必要はない。垂直補間の結果は前の計算結果と同じになるため、これは当然のことである。これに対し、テクセルは前のグリッドと同じグリッド内にあるが、水平補間の再計算は必要になる。なぜならば、グリッド上のスケールされたテクセルの相対位置が異なっており、従って係数セットが異なっているからである。
かくして、前述のように、テクセルフィルタリングのコア演算は、乗算および加算である。本発明の一実施形態によれば、これらの機能は、FIG.25AおよびFIG.25Bに示したビデオスケーラ612の乗算機能および加算機能と共有できる。
FIG.25Aは、本発明の一実施形態によるビデオスケーラ612のブロック図を示す。ビデオスケーラ612はバスインタフェース820を有し、該バスインタフェース820は、プロセッサメモリバス114に接続され、かつここからリクエストを送り、かつ画素情報を受けるように構成されている。固定機能メモリ828は、バスインタフェースユニット820に接続されており、かつデータストリーマ122を用いることによりメモリ128からYcbCr画素データを受けるように構成されている。固定機能メモリ828は、メモリ128とビデオスケーラ612との間のトラフィックを低減させるため、画素の所定部分(該部分は、補間に必要とされる部分よりも大きいことが好ましい)を記憶する。
送り手画像バッファ822は、固定機能メモリ828に接続され、かつ補間演算を行うのに充分な画素データを受けるように構成されている。画素アドレスコントローラ826は、補間演算のために固定機能メモリ828から検索される画素データのアドレスを発生する。垂直送り手データシフトレジスタ824は送り手画像バッファ822に接続され、かつ補間処理の間に用いられる乗算および加算のために画素データをシフトするように構成されている。ビデオスケーラ612が3Dテクスチャフィルタ610についてのフィルタリング演算を行うときに、垂直送り手データシフトレジスタ824は、乗算および加算を行うための適当なテクセルデータを記憶しかつシフトするように構成されている。
水平送り手データシフトレジスタ830は、乗算および加算回路834により得られた、垂直に補間された中間画素を記憶するように構成されている。水平データシフトレジスタ830は、乗算および加算を行うのに再びに使用できる。
係数記憶ユニット844は、補間演算を行うための予め特定した係数を記憶するように構成されている。かくして、ビデオスケーラ612が3Dテクスチャフィルタ610のためのフィルタリング演算を行うときに、係数記憶ユニット844はテクセルのためのフィルタリング係数を記憶し、ビデオスケーラ612がスケーリング演算を行うときに、係数記憶ユニット844は画素のための補間係数を記憶する。
座標加算器846はセレクタ840に接続されており、乗算および加算のための適当な係数の検索を制御する。座標加算器846が、スタート画素すなわちテクセルの座標に対応するx、yベースアドレスに接続されている。Δユニット850は、所望スケールの画素の座標の垂直方向および水平方向についての差異を与えるように構成されている。
本発明の一実施形態により、FIG.25Bに示すように、乗算および加算回路834は、乗算および加算を行うように構成されているが、本発明の範囲はこれに限定されるものではない。かくして、乗算および加算ユニット834は、複数の画素および係数レジスタ852、854を有し、これらのレジスタは、乗算器856により乗算され、加算器860を介して1つの番号を発生する。
出力画素先入れ先出し(FIFO)バッファ842は、ビデオスケーラ制御レジスタの対応制御ビットの値に基づいて、ディスプレイリフレッシュユニット226またはデータキャッシュ108への出力のために得られた画素を記憶するように構成されている。
本発明の一実施形態によれば、演算中に、ビデオスケーラ612は、データストリーマ122を用いてメモリ128からYCbCr画素データを読取りかつ、該画素データを固定機能メモリ828に入れる。その後、Y、Cb、Cr画素データは、画素アドレスコントローラ826を用いて固定機能メモリ828から読取られる。検索されたデータは、Y、Cb、Crデータに対応する送り手画像バッファ822の3つの送り手画像バッファ空間内に書込まれる。垂直送り手データシフトレジスタが空き空間を有するときは、送り手画像バッファ822がそのデータのコピーを垂直送り手データシフトレジスタに供給する。垂直補間法の場合には、垂直に補間された中間画素が水平送り手データシフトレジスタ830内に記憶される。
垂直および水平補間法のシーケンスは、スケーリングファクタに基づいている。本発明の一実施形態によれば、ビデオスケーラ612に3つの乗算および加算ユニット834があり、このため、3つの垂直補間および水平補間を同時に遂行できる。
FIG.27は、FIG.20〜FIG.26に関連して説明した3Dグラフィックス処理に含まれるステップを要約するフローチャートである。かくして、ステップ880では、VLIWプロセッサ102が、フレーム内のすべての三角形について、スクリーン座標、カラーおよびビニングパラメータを計算することにより、ジオメトリデータを計算する。ステップ882では、ビニング表示信号を3D三角形ラスタライザ607に供給することにより、ビニングのために固定機能ユニットがアクティブにされる。ビニングの結果として、すべてのビンのタイルインデックスおよびタイルデータがステップ884で計算される。
ステップ886では、フレーム内のすべてのビンについて、セットアップおよび三角形内の可視画素の補間が開始する。かくして、ステップ888で、VLIW102が三角形セットアップデータを計算する。ステップ890では、3D三角形ラスタライザは、ステップ892で補間モードで3D三角形ラスタライザ607をアクティブにすることにより、三角形内の各画素について、x、y、z、RGBA [s、tおよびw]を含む、表現のためのパラメータを計算する。パラメータs、tおよびwは、均質テクスチャ座標であり、遠近法補正として知られたパラメータとして用いられる。均質テクスチャ座標は、どのテクセルが画素に対応するかを表示する。
ビン内のすべての画素について、VLIW102は、3D三角形ラスタライザ607により得られたs、t、w計算に応答して、各該装置についてのテクスチャ座標を計算する。ステップ896では、3Dテクスチャコントローラ609がテクスチャアドレスを計算する。ステップ898では、データストリーマ122が、計算されたテクスチャアドレスに応答してメモリ128からテクセルをフェッチする。データストリーマ122がビンに対応するテクセルをフェッチしている間に、VLIWプロセッサ102は、次のビンに対応するテクスチャ座標u、vを計算する。これは、本発明の一実施形態により、データキャッシュ108の構造が、固定機能ユニットによるキャッシュへのアクセスを可能にすることから可能になる。
ステップ900では、ビデオスケーラ612が3Dテクスチャフィルタ610に関連してアクティブにされ、フェッチされたフィルタの一部でテクセルフィルタリングを遂行する。
本発明の一実施形態では、ステップ902〜ステップ912で、ステップ894〜ステップ900に関連して説明したのと同じ原理に基づいて、断片のすべての画素についてのアンチエイリアシングおよびαブレンディングを遂行する。ステップ914で、固定機能ユニットにより得られたデータが、データをSDRAM128のローカルメモリ空間のようなローカルメモリ空間にデータを転送するデータストリーマ122を用いることにより、フレームバッファに記憶される。
かくして、本発明は、マルチメディアプロセッサにデータキャッシュを用い、かつ各ビンに関する対応データをデータキャッシュに記憶することによりビニング処理を行うことができる。また、本発明の一態様によれば、テクセルのフェッチングの前に、三角形の可視画素が最初に識別され、かくして対応するテクセルのみがローカルメモリから検索される。
以上、本発明の或る特徴のみを示しかつ説明したが、当業者には多くの変更、置換または均等物が明らかであろう。従って、特許請求の範囲の記載は、このような変更等をカバーするものであることを理解されたい。