(57)【要約】      （修正有）【課題】共有リソースへのアクセス方法及び装置を提供する。【解決手段】メモリコントローラは帯域幅制御回路６２０を備え、帯域幅制御回路は、プログラム可能ハードウェアレジスタ７１０及びハードウェアアキュムレータ７２０を含む。アキュムレータ７２０は、ある所定の数に初期化され（例えば０．００００００００）、サイクル毎に、プログラム可能レジスタ７１０にプログラムされた数は、自動的にアキュムレータ７２０に加算される。アキュムレータ７２０のビット８（最上位ビット）が設定されると、対応する要求はそのサイクルで調停される。【選択図】図１２
2012164344.tif 000002
【特許請求の範囲】
【請求項１】
共有リソースへのアクセスを制御するコントローラであって、
共有リソースへの複数のアクセス要求を調停するアービトレータ、及び
アービトレータによる要求の調停頻度を制御するプログラム可能帯域幅制御回路を備える、コントローラ。
【請求項２】
共有リソースが、コンピュータ読み出し可能媒体を含むことを特徴とする、請求項１に記載のコントローラ。
【請求項３】
要求は、コンピュータ読み出し可能媒体から／への読み出し及び書き込み要求を含むことを特徴とする、請求項２に記載のコントローラ。
【請求項４】
コンピュータ読み出し可能媒体は、静的ランダムアクセスメモリを含むことを特徴とする、請求項１に記載のコントローラ。
【請求項５】
帯域幅制御回路は、プログラム可能レジスタを備えることを特徴とする、請求項１に記載のコントローラ。
【請求項６】
帯域幅制御回路は、さらにアキュムレータを備え、
プログラム可能レジスタの内容は、それぞれ対応するアキュムレータに繰り返し加算され、プログラム可能レジスタに対応する要求は、アキュムレータの値が所定の値に達すると調停されることを特徴とする、請求項５に記載のコントローラ。
【請求項７】
プログラム可能レジスタの内容は、クロック信号に従って、それぞれ対応するアキュムレータに繰り返し加算されることを特徴とする、請求項６に記載のコントローラ。
【請求項８】
レジスタは、アプリケーションプログラミングインタフェースを用いてプログラム可能であることを特徴とする、請求項５に記載のコントローラ。
【請求項９】
帯域幅制御回路は、対応する要求を調停させるデフォルト設定を有することを特徴とする、請求項１に記載のコントローラ。
【請求項１０】
アービトレータは、ステートマシンであることを特徴とする、請求項１に記載のコントローラ。
【請求項１１】
共有リソースは、バスを含むことを特徴とする、請求項１に記載のコントローラ。
【請求項１２】
３Ｄグラフィックスシステムであって、
表示用の３Ｄ視覚画像を生成するためのグラフィックスコマンドを処理するグラフィックス処理回路、
グラフィックス処理回路にアクセス可能なメモリ、
グラフィックス処理回路からの、複数のメモリアクセス要求を調停するためのアービトレータ、及び
アービトレータによる要求の調停頻度を制御するプログラム可能帯域幅制御回路を備える、３Ｄグラフィックスシステム。
【請求項１３】
メモリは、静的ランダムアクセスメモリを含むことを特徴とする、請求項１２に記載の３Ｄグラフィックスシステム。
【請求項１４】
要求は、メモリから／への読み出し及び書き込み要求を含むことを特徴とする、請求項１２に記載の３Ｄグラフィックスシステム。
【請求項１５】
帯域幅制御回路は、プログラム可能レジスタを備えることを特徴とする、請求項１２に記載の３Ｄグラフィックスシステム。
【請求項１６】
帯域幅制御回路は、さらにアキュムレータを備え、
プログラム可能レジスタの内容は、それぞれ対応するアキュムレータに繰り返し加算され、プログラム可能レジスタに対応する要求は、アキュムレータの値が所定の値に達すると調停されることを特徴とする、請求項１５に記載の３Ｄグラフィックスシステム。
【請求項１７】
プログラム可能レジスタの内容は、クロック信号に従って、それぞれ対応するアキュムレータに繰り返し加算されることを特徴とする、請求項１６に記載の３Ｄグラフィックスシステム。
【請求項１８】
レジスタは、アプリケーションプログラミングインタフェースを用いてプログラム可能であることを特徴とする、請求項１５に記載の３Ｄグラフィックスシステム。
【請求項１９】
帯域幅制御回路は、対応する要求を調停させるデフォルト設定を有することを特徴とする、請求項１２に記載の３Ｄグラフィックスシステム。
【請求項２０】
アービトレータは、ステートマシンであることを特徴とする、請求項１２に記載の３Ｄグラフィックスシステム。
【請求項２１】
ビデオゲームシステムであって、
メインプロセッサ、
表示用の３Ｄ視覚画像を生成するためのグラフィックスコマンドを処理するグラフィックス処理回路、
３Ｄ視覚画像を伴うオーディオコンテンツを生成するためのオーディオコマンドを処理するオーディオ処理回路、
グラフィックス処理回路及びオーディオ処理回路にアクセス可能であるメモリ、
少なくともメインプロセッサとグラフィックス処理回路とからの複数のメモリアクセス要求を調停するアービトレータ、及び
アービトレータによる要求の調停頻度を制御するプログラム可能帯域幅制御回路を備える、ビデオゲームシステム。
【請求項２２】
メモリは、静的ランダムアクセスメモリを含むことを特徴とする、請求項２１に記載のビデオゲームシステム。
【請求項２３】
要求は、メモリから／への読み出し及び書き込み要求を含むことを特徴とする、請求項２１に記載のビデオゲームシステム。
【請求項２４】
帯域幅制御回路は、プログラム可能レジスタを備えることを特徴とする、請求項２１に記載のビデオゲームシステム。
【請求項２５】
帯域幅制御回路は、さらにアキュムレータを備え、
プログラム可能レジスタの内容は、それぞれ対応するアキュムレータに繰り返し加算され、プログラム可能レジスタに対応する要求は、アキュムレータの値が所定の値に達すると調停されることを特徴とする、請求項２４に記載のビデオゲームシステム。
【請求項２６】
プログラム可能レジスタの内容は、クロック信号に従って、それぞれ対応するアキュムレータに繰り返し加算されることを特徴とする、請求項２５に記載のビデオゲームシステム。
【請求項２７】
レジスタは、アプリケーションプログラミングインタフェースを用いてプログラム可能であることを特徴とする、請求項２４に記載のビデオゲームシステム。
【請求項２８】
帯域幅制御回路は、対応する要求を調停させるデフォルト設定を有することを特徴とする、請求項２１に記載のビデオゲームシステム。
【請求項２９】
アービトレータは、ステートマシンであることを特徴とする、請求項２１に記載のビデオゲームシステム。
【請求項３０】
共有リソースへのアクセスを制御する方法であって、
共有リソースへの複数のアクセス要求を調停し、及び
要求の調停頻度をプログラム可能に制御する、方法。
【請求項３１】
共有リソースが、コンピュータ読み出し可能媒体を含むことを特徴とする、請求項３０に記載の方法。
【請求項３２】
要求は、コンピュータ読み出し可能媒体から／への読み出し及び書き込み要求を含むことを特徴とする、請求項３１に記載の方法。
【請求項３３】
コンピュータ読み出し可能媒体は、静的ランダムアクセスメモリを含むことを特徴とする、請求項３１に記載の方法。
【請求項３４】
共有リソースは、バスを含むことを特徴とする、請求項３０に記載の方法。
【請求項３５】
３Ｄグラフィックスシステムにおいてメモリへのアクセスを制御する方法であって、
表示用の３Ｄ視覚画像を生成するグラフィックスコマンドを処理し、
その処理中に複数のメモリアクセス要求を調停し、及び
要求の調停頻度をプログラム可能に制御することを特徴とする、方法。
【請求項３６】
要求は、コンピュータ読み出し可能媒体から／への読み出し及び書き込み要求を含むことを特徴とする、請求項３５に記載の方法。
【請求項３７】
コンピュータ読み出し可能媒体は、静的ランダムアクセスメモリを含むことを特徴とする、請求項３５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有リソースへのアクセス方法及び装置に関し、より特定的には、家庭用ビデオゲームプラットフォーム用の対話式グラフィックス等の対話式グラフィックスシステムの共有リソースへのアクセス方法及び装置に関する。
【背景技術】
【０００２】
恐竜、宇宙人、アニメ化されたおもちゃといった空想的な生物が、非常にリアルに映像化された映画を見かけることが多くなっている。このような動画は、コンピュータグラフィックスにより可能となっている。この技術を用いることにより、コンピュータグラフィックスアーチストは、各物体の形状及び時間の経過に伴って生じる外見上の変化を特定することができる。そして、コンピュータが物体をモデリングして、ホームテレビやコンピュータ等の画面上に表示する。表示画像の各部分は、そのシーンにおける物体相互の距離及び向き、各物体に対する照明方向、各物体の表面の質感、その他様々な要素に基づき着色・形成され、この着色・形成を適切に行うために必要な数多くの処理は、コンピュータが引き受ける。
【０００３】
コンピュータグラフィックスの生成処理が複雑なため、ほんの数年前まで、コンピュータで生成した３次元グラフィックスの活用は、高価格で専門化されたフライトシュミレータ、ハイエンドグラフィックスワークステーション及びスーパーコンピュータに限られていた。人々は、これらコンピュータシステムによって作り出された画像を、映画や制作費の高いテレビコマーシャルで目にすることがあっても、実際にグラフィックスを作成しているコンピュータと接触することはできなかったのである。しかし、ニンテンドウ６４（登録商標）や各種３Ｄグラフィックスカード等、比較的安価なパーソナルコンピュータ用グラフィックスプラットフォームの登場により、状況は変わった。今や、自宅やオフィスでも、手ごろな価格のコンピュータグラフィックスシステムを用いて、迫力のある３Ｄアニメーション及びシミュレーションを、対話的に作り出すことが可能になっている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
コンピュータグラフィックスシステムにおいて、リソースは、数多くのそれぞれ異なる構成要素によって「共有」されることが多い。例えば、グラフィックスプロセッサやメインプロセッサの動作は、システムメモリへの多数のアクセス要求に終始しがちである。各要求へのメモリアクセスの適切な割り当てを確実にするために、アービトレータ回路を使用することが知られている。調停には、構成要素のうちの１つに高い優先度が付与される技法や、構成要素のすべてにメモリアクセスのチャンスが与えられるラウンドロビン方式等の、それぞれ異なるいくつかの技法が適用可能である。本明細書では、メモリコントローラ等の、調停プロセスに関係する共有リソースへのアクセス要求の頻度制御が構成可能であるコントローラに関して説明する。
【課題を解決するための手段】
【０００５】
本発明の１つの局面は、共有リソースへのアクセスを制御するコントローラを備えていることにある。このコントローラは、例えばステートマシンとして実現され、共有リソースへの複数のアクセス要求を調停するためのアービトレータと、アービトレータによる要求の調停頻度を制御するプログラム可能帯域幅制御回路とを含む。
【０００６】
共有リソースは、コンピュータ読み出し可能媒体であってもよく、要求は、コンピュータ読み出し可能媒体への／からの読み出し及び書き込みの要求を含んでいてもよい。帯域幅制御回路は、プログラム可能レジスタと、関連アキュムレータとで構成されていてもよい。プログラム可能レジスタの内容は、それぞれ対応するアキュムレータに繰り返し加算され、その対応するアキュムレータの値が所定の値に達すると（例えば、ある特定のビットが設定／クリアされると）調停される。レジスタは、アプリケーションプログラミングインタフェースを用いてプログラム可能である。
【０００７】
本発明の別の局面は、共有リソースへのアクセス制御方法であって、共有リソースへの複数のアクセス要求を調停し、それら要求の調停頻度をプログラム可能に制御する。
【図面の簡単な説明】
【０００８】
【図１】対話式コンピュータグラフィックスシステム例の全体図である。
【図２】図１に示すコンピュータグラフィックスシステム例を示すブロック図である。
【図３】図２に示すグラフィックス＆オーディオプロセッサ例を示すブロック図である。
【図４】図３に示す３Ｄグラフィックスプロセッサ例を示すブロック図である。
【図５】図４のグラフィックス＆オーディオプロセッサのロジカルフロー例を示す図である。
【図６】メモリコントローラ１５２とその他のシステム構成要素との関係を示す全体図である。
【図７】メインメモリ１１２へのアクセスの競合に関与する動作のいくつかを示す図である。
【図８】メモリコントローラ１５２のインタフェースを詳細に示す図である。
【図９】メモリコントローラ１５２の帯域幅制御回路６２０−１〜６２０−５を示す図である。
【図１０】メモリコントローラ１５２のためのアドレスパス及び読み出しデータパスをそれぞれ示す図である。
【図１１】メモリコントローラ１５２のためのアドレスパス及び読み出しデータパスをそれぞれ示す図である。
【図１２】帯域幅制御回路６２０−１〜６２０−５の詳細を示すブロック図である。
【図１３】別の互換的な実施例を示す図である。
【図１４】別の互換的な実施例を示す図である。
【発明を実施するための形態】
【０００９】
図１に、対話式３Ｄコンピュータグラフィックスシステム５０の一例を示す。システム５０は、興味をそそるステレオサウンドを伴う対話式３Ｄビデオゲームをプレイするのに使用され得る。さらに、その他様々なアプリケーションにも使用され得る。
【００１０】
本例において、システム５０は、デジタル表現又は３次元世界のモデルを、対話的にリアルタイムで処理する機能を有する。システム５０は、その世界をどこでも任意の視点から部分的又は全体的に表示することができる。例えば、システム５０は、手持ちコントローラ５２ａ及び５２ｂ、又はその他の入力装置からのリアルタイム入力に応答して、対話的に視点を変えることができる。これにより、ゲームプレイヤは、世界の内部又は外部にいる誰かの目を通してその世界を見ることができる。システム５０は、リアルタイム対話式３Ｄ表示を必要としないアプリケーションに使用可能であるが（例えば、２Ｄ表示生成及び／又は非対話式表示）、その高品質な３Ｄ画像の超高速表示機能により、非常にリアルで迫力のあるゲームプレイの制作、又はその他グラフィカルな対話に使用することができる。
【００１１】
システム５０を用いてビデオゲーム等のアプリケーションをプレイするには、ユーザは、まずケーブル５８を用いて、メインユニット５４を自身のカラーテレビセット５６又はその他の表示装置に接続する。メインユニット５４は、ビデオ信号とオーディオ信号とを生成して、カラーテレビセット５６を制御する。ビデオ信号は、テレビスクリーン５９上に表示される画像を制御するものであり、オーディオ信号は、テレビステレオスピーカ６１Ｌ、６１Ｒを通して、サウンドとして再生される。
【００１２】
さらに、ユーザは、メインユニット５４を電源に接続する。この電源は、従来のＡＣアダプタ（図示せず）であって、標準型の家庭用電気コンセントに差込まれ、家庭用電流をメインユニット５４への電力供給に適した低いＤＣ電圧信号に変換する。電池は他の実施形態で使用可能である。
【００１３】
ユーザは、手持ちコントローラ５２ａ及び５２ｂでメインユニット５４を制御してもよい。例えば、操縦部６０を用いて、テレビ５６に表示されるキャラクタが３次元世界で動く方向を特定してもよい（上下、左右、近づける・遠ざける）。操縦部６０は、さらにその他のアプリケーションに入力を与える（例えば、メニューの選択、ポインタ／カーソルの制御等）。コントローラ５２は、様々な形をとることができる。本例においては、図示されるコントローラ５２は、それぞれジョイスティック、プッシュボタン及び／又は方向スイッチ等の操縦部６０を備える。コントローラ５２は、電磁（無線、赤外線等）波を介して、ケーブル又はワイヤレスでメインユニット５４に接続されてもよい。
【００１４】
ゲーム等のアプリケーションをプレイする場合、ユーザは、ビデオゲーム等の自身がプレイしたいアプリケーションを記憶している記憶媒体６２を適宜選択し、その記憶媒体をメインユニット５４のスロット６４に挿入する。記憶媒体６２は、例えば、特別にコード化及び／又は暗号化された光及び／又は磁気ディスクであってもよい。ユーザは、電源スイッチ６６を操作してメインユニット５４をオンにし、記憶媒体６２に記憶されているソフトウェアに基づいて、ビデオゲーム等のアプリケーションの実行を開始させる。ユーザは、コントローラ５２を操作して、メインユニット５４に入力を与えてもよい。例えば、操縦部６０を操作すると、ゲーム等のアプリケーションがスタートし得る。他の操縦部６０を動かすと、アニメ化されたキャラクタがそれぞれ異なる方向に移動したり、３次元世界におけるユーザの視点が変化し得る。記憶媒体６２内部に格納されている特定のソフトウェアにより、コントローラ５２上の各操縦部６０は、異なる時間に異なる機能を実行することができる。
【００１５】
（システム全体の電子部品例）
図２は、システム５０の構成要素例を示すブロック図である。主な構成要素としては、
・メインプロセッサ（ＣＰＵ）１１０
・メインメモリ１１２、及び
・グラフィックス＆オーディオプロセッサ１１４
が含まれる。
【００１６】
本例において、メインプロセッサ１１０（例えば、機能拡張型ＩＢＭ  Ｐｏｗｅｒ  ＰＣ  ７５０）は、グラフィックス＆オーディオプロセッサ１１４を介して、手持ちコントローラ５２（及び／又はその他の入力装置）から入力を受け取る。メインプロセッサ１１０は、ユーザ入力に対話的に応答し、例えば、光ディスクドライブ等の大容量記憶アクセス装置１０６を介して外部記憶媒体６２によって提供されるビデオゲーム又はその他のプログラムを実行する。例えば、ビデオゲームプレイの状況において、メインプロセッサ１１０は、様々な対話式制御機能に加え、衝突検出や動画処理を行うことができる。
【００１７】
本例では、メインプロセッサ１１０は、３Ｄグラフィックスコマンドとオーディオコマンドとを生成し、それらをグラフィックス＆オーディオプロセッサ１１４に送出する。グラフィックス＆オーディオプロセッサ１１４は、これらコマンドを処理し、ディスプレイ５９上に動的な視覚画像を生成し、さらにステレオスピーカ６１Ｒ及び６１Ｌ、又はその他の適切なサウンド発生装置から、高品質なステレオサウンドを出力する。
【００１８】
例示のシステム５０は、グラフィックス＆オーディオプロセッサ１１４から画像信号を受信し、その画像信号を、コンピュータのモニタや家庭用カラーテレビセット５６等の標準的な表示装置に表示するのに適したアナログ及び／又はデジタルビデオ信号に変換するビデオエンコーダ１２０を含む。システム１５０は、デジタル化されたオーディオ信号を圧縮／伸張し、さらに必要に応じてデジタルオーディオ信号フォーマットとアナログオーディオ信号フォーマットとの間の変換を行うオーディオコーデック（コンプレッサ／デコンプレッサ）１２２をさらに含む。オーディオコーデック１２２は、バッファ１２４を介してオーディオ入力を受け取り、それらを処理（プロセッサが生成したその他のオーディオ信号や、大容量記憶アクセス装置１０６のオーディオ出力ストリームを介して受信するオーディオ信号をミックス）するためにグラフィックス＆オーディオプロセッサ１１４に提供することもできる。本例におけるグラフィックス＆オーディオプロセッサ１１４は、オーディオ関連情報をオーディオタスクに使用可能なオーディオメモリ１２６に格納することができる。グラフィックス＆オーディオプロセッサ１１４は、処理結果のオーディオ出力信号を、伸張してアナログ信号に変換（例えば、バッファアンプ１２８Ｌ及び１２８Ｒを介して）するために、オーディオコーデック１２２に出力し、その結果、スピーカ６１Ｌ及び６１Ｒによって再生され得る。
【００１９】
グラフィックス＆オーディオプロセッサ１１４は、システム５０中に存在する様々な付加装置と通信する機能を備えている。例えば、パラレルデジタルバス１３０は、大容量記憶アクセス装置１０６及び／又はその他の構成要素との通信に使用され得る。シリアル周辺バス１３２は、例えば、
・プログラム可能な読み出し専用メモリ及び／又はリアルタイムクロック１３４
・モデム１３６又はその他のネットワーキングインタフェース（プログラム命令及び／又はデータが、そこからダウンロード又はそこにアップロードされ得る、インターネットやその他のデジタルネットワーク等のテレコミュニケーションネットワーク１３８に、システム５０を接続し得るもの）
・フラッシュメモリ１４０
等の各種周辺装置と通信するのに使用されてもよい。なお、さらなる外部シリアルバス１４２は、追加拡張メモリ１４４（例えば、メモリカード）等の装置との通信に使用されてもよい。コネクタは、様々な装置をバス１３０、１３２、１４２に接続するために使用されてもよい。
【００２０】
（グラフィックス＆オーディオプロセッサの例）
図３は、グラフィックス＆オーディオプロセッサ１１４の一例を示すブロック図である。グラフィックス＆オーディオプロセッサ１１４は、例えば、１チップＡＳＩＣ（特定用途向け集積回路）である。本例においては、グラフィックス＆オーディオプロセッサ１１４は、
・プロセッサインタフェース１５０
・メモリインタフェース／コントローラ１５２
・３Ｄグラフィックスプロセッサ１５４
・オーディオデジタル信号プロセッサ（ＤＳＰ）１５６
・オーディオメモリインタフェース１５８
・オーディオインタフェース＆ミキサ１６０
・周辺コントローラ１６２、及び
・ディスプレイコントローラ１６４
を備える。
【００２１】
３Ｄグラフィックスプロセッサ１５４は、グラフィックス処理タスクを行う。オーディオデジタル信号プロセッサ１５６は、オーディオ処理タスクを行う。ディスプレイコントローラ１６４は、メインメモリ１１２の画像情報にアクセスし、それをディスプレイ装置５６に表示するためビデオエンコーダ１２０に供給する。オーディオインタフェース＆ミキサ１６０は、オーディオコーデック１２２と接続されて、異なるソースからのオーディオ（例えば、大容量記憶アクセス装置１０６からのオーディオストリーム、オーディオＤＳＰ１５６からの出力及びオーディオコーデック１２２を介して受信した外部オーディオ入力）をミックスすることができる。プロセッサインタフェース１５０は、メインプロセッサ１１０とグラフィックス＆オーディオプロセッサ１１４との間で、データの供給とインタフェース制御とを行う。
【００２２】
以下に詳細を後述するが、メモリインタフェース１５２は、グラフィックス＆オーディオプロセッサ１１４とメモリ１１２との間で、データの供給とインタフェース制御とを行う。本例では、メインプロセッサ１１０は、グラフィックス＆オーディオプロセッサ１１４の一部であるプロセッサインタフェース１５０及びメモリインタフェース１５２を介して、メインメモリ１１２にアクセスする。周辺コントローラ１６２は、グラフィックス＆オーディオプロセッサ１１４と前述した様々な周辺装置との間で、データの供給とインタフェース制御とを行う。オーディオメモリインタフェース１５８は、オーディオメモリ１２６とのインタフェースとなる。
【００２３】
（グラフィックスパイプラインの例）
図４に、図３に例示の３Ｄグラフィックスプロセッサ１５４をより詳細に示した、グラフィックスプロセッシングシステムを示す。３Ｄグラフィックスプロセッサ１５４は、他の構成要素に加え、コマンドプロセッサ２００と３Ｄグラフィックスパイプライン１８０とを備える。メインプロセッサ１１０は、コマンドプロセッサ２００にデータのストリーム（例えば、グラフィックスコマンドストリームや表示リスト）を通信する。メインプロセッサ１１０は、２レベルキャッシュ１１５を備え、メモリ待ち時間を最小にする。さらに、メインプロセッサ１１０は、グラフィックス＆オーディオプロセッサ１１４向けのアンキャッシュデータストリーム用の書き込み用ギャザリングバッファ１１１を備える。この書き込み用ギャザリングバッファ１１１は、キャッシュラインを部分的に集めてフルキャッシュラインにし、バスを最大限に使用するために、１回につき１キャッシュラインでデータをグラフィックス＆オーディオプロセッサ１１４に送出する。
【００２４】
コマンドプロセッサ２００は、メインプロセッサ１１０から表示コマンドを受信し、それらを解析する。なお、この処理を行うのに必要な追加データがあれば、メモリコントローラ１５２を介して共有されたメモリ１１２から取得する。コマンドプロセッサ２００は、２Ｄ及び／又は３Ｄ処理及びレンダリングを行うために、頂点コマンドのストリームをグラフィックスパイプライン１８０に提供する。グラフィックスパイプライン１８０は、これらのコマンドに基づいて画像を生成する。結果作り出された画像情報は、メインメモリ１１２に転送され、パイプライン１８０のフレームバッファ出力をディスプレイ５６に表示するディスプレイコントローラ／ビデオインタフェースユニット１６４によりアクセスされる。
【００２５】
図５は、グラフィックスプロセッサ１５４を用いて行われる例示的な処理を説明する論理フロー図である。メインプロセッサ１１０は、グラフィックスコマンドストリーム２１０、表示リスト２１２及び頂点配列２１４をメインメモリ１１２に格納し、コマンドプロセッサ２００にプロセッサ／バスインタフェース１５０を介してポインタを送り出してもよい。メインプロセッサ１１０は、メインメモリ１１２内に割り当てられた１つ又はそれ以上のグラフィックス先入れ先出し（ＦＩＦＯ）バッファ２１０に、グラッフィクスコマンドを格納する。コマンドプロセッサ２００は、
・同期／フロー制御及びロードバランシングのために、グラフィックスコマンドを受信してバッファリングする、オンチップＦＩＦＯメモリバッファ２１６を介するメインメモリ１１２からのコマンドストリーム
・オンチップコールＦＩＦＯメモリバッファ２１８を介するメインメモリ１１２からの表示リスト２１２、及び
・頂点キャッシュ２２０を介するメインメモリ１１２内のコマンドストリーム及び／又は頂点配列２１４からの頂点属性、
を取り込む。
【００２６】
コマンドプロセッサ２００は、コマンド処理動作２００ａを行い、属性のタイプを浮動小数点形式に変換して、その結果である完全な頂点ポリゴンデータを、レンダリングとラスタライゼーションのためにグラフィックスパイプライン１８０に送出する。プログラム可能なメモリ調停回路１３０（図４参照）は、グラフィックスパイプライン１８０と、コマンドプロセッサ２００と、ディスプレイコントローラ／ビデオインタフェースユニット１６４との間で、共有されたメインメモリ１１２へのアクセスを調停する。
図４は、
・変換ユニット３００
・セットアップ／ラスタライザ４００
・テクスチャユニット５００
・テクスチャ環境ユニット６００、及び
・ピクセルエンジン７００、
を備えるグラフィックスパイプライン１８０を示す。
【００２７】
変換ユニット３００は、様々な２Ｄ及び３Ｄ変換やその他動作３００ａ（図５参照）を実行する。変換ユニット３００は、１つ又はそれ以上のマトリクスメモリ３００ｂを備え、変換処理３００ａで使用するマトリクスを格納する。変換ユニット３００は、受け取った図形を頂点毎にオブジェクト空間からスクリーン空間に変換したり、受け取ったテクスチャ座標を変換して投影するテクスチャの座標を求めたり（３００ｃ）する。変換ユニット３００は、さらにポリゴンのクリッピング／カリング３００ｄを行う。照明処理３００ｅも同様に変換ユニット３００によって行われ、頂点毎に照明計算を行って、例えば最高８段階の明暗を得る。変換ユニット３００は、さらにテクスチャ座標を作成（３００ｃ）し、ポリゴンのクリッピング／カリング処理（３００ｄ）同様、エンボスタイプのバンプマッピング効果を得る。
【００２８】
セットアップ／ラスタライザ４００は、変換ユニット３００から頂点データを受信し、エッジのラスタライズ、テクスチャ座標のラスタライズ及び色のラスタライズを行う１つ又はそれ以上のラスタライズユニット（４００ｂ）に、三角形セットアップ情報を送出するセットアップユニットを含んでいる。
【００２９】
テクスチャユニット５００（オンチップテクスチャメモリ（ＴＭＥＭ）５０２を備えていてもかまわない）は、テクスチャに関する様々な処理、例えば
・メインメモリ１１２からのテクスチャ５０４の取得、
・例えば、マルチテクスチャ処理、キャッシュ後テクスチャの伸張、テクスチャフィルタリング、エンボス、投影テクスチャを使用しての陰影付け及び照明処理、アルファ透明度や深度のＢＬＩＴを含むテクスチャ処理（５００ａ）、
・バンプマッピング、疑似テクスチャ、及びテクスチャタイリング効果（５００ｂ）用にテクスチャ座標のずれを計算するバンプマップ処理、及び
・間接的テクスチャ処理（５００ｃ）、
を行う。
【００３０】
テクスチャユニット５００は、テクスチャ環境処理（６００ａ）のために、フィルタ処理されたテクスチャの値を、テクスチャ環境ユニット６００に出力する。テクスチャ環境ユニット６００は、ポリゴンとテクスチャの色／アルファ／深度とをブレンドし、テクスチャフォグ処理（６００ｂ）を行って、フォグ効果に基づく逆レンジを得ることができる。テクスチャ環境ユニット６００は、例えば色／アルファ変調、エンボス、細部テクスチャリング、テクスチャスワッピング、クランピング、及び深度ブレンディングに基づいて、興味深い様々な環境関連機能を実行するための段階を複数備え得る。
【００３１】
ピクセルエンジン７００は、深度（Ｚ）比較（７００ａ）及びピクセルブレンディング（７００ｂ）を行う。本例において、ピクセルエンジン７００は、データを埋め込み型（オンチップ）フレームバッファメモリ７０２に格納する。グラフィックスパイプライン１８０は、１つ又はそれ以上の埋め込み型ＤＲＡＭメモリ７０２を備え、フレームバッファ及び／又はテクスチャの情報をローカルに格納してもよい。Ｚ比較７００ａ’は、その時点におけるレンダリングモードによっては、グラフィックスパイプライン１８０の初期段階において行われてもよい（アルファブレンディングが必要でなければ、Ｚ比較は初期の段階で実行されてもよい）。ピクセルエンジン７００は、オンチップフレームバッファ７０２をメインメモリ１１２に定期的に書き込むコピー動作７００ｃを行い、ディスプレイ／ビデオインタフェースユニット１６４のアクセスに備える。さらに、このコピー動作７００ｃは、動的なテクスチャ合成効果を得るために、埋め込み型フレームバッファ７０２の内容をメインメモリ１１２内のテクスチャにコピーする際にも利用され得る。アンチエリアシング及びその他のフィルタリングは、コピーアウト動作中に行われる。グラフィックスパイプライン１８０のフレームバッファ出力（最終的にメインメモリ１１２内に蓄えられる）は、ディスプレイ／ビデオインタフェースユニット１６４によってフレーム毎に読み出される。ディスプレイコントローラ／ビデオインタフェース１６４は、デジタルＲＧＢピクセル値を出力して、ディスプレイ５６に表示させる。
【００３２】
（メモリコントローラ例）
図６は、メモリコントローラ１５２の他のシステム構成要素との関係を示す全体図である。図３及び図４において、メモリコントローラ１５２とグラフィックスメモリ要求調停１３０とが、それぞれ個別の構成要素であるように描かれているが、以下の本実施形態例においては、メモリコントローラ１５２がこの構成要素の両方を含む。
【００３３】
メモリコントローラ１５２は、メインメモリ１１２へのアクセス要求を制御する。メインメモリ１１２は、例えば、Ｍｏｓｙｓ社製であって、内部リフレッシュ動作を自動的に行う１ＴＳＲＡＭ等のＳＲＡＭを備える。メインメモリ１１２へのアクセス要求には、
・３Ｄグラフィックスプロセッサ１５４（具体的には、コマンドプロセッサ２００、テクスチャユニット５００及びピクセルエンジン７００）、
・プロセッサインタフェース１５０を介するメインプロセッサ１１０、
・オーディオＤＳＰ１５６、
・ディスプレイコントローラ１６４、及び
・様々なＩ／Ｏユニット（例えば、大容量記憶アクセス装置１０６）のための周辺コントローラ１６２、
等がある。
【００３４】
これら「要求部」は、メインメモリ１１２へのアクセスを競合する。図７にこの競合に関わるいくつかの典型的な動作を示す。図７中の番号付き矢印は、以下の動作を示す。
１．新たなゲームセクタ又はレベルのための大容量記憶デバイス６２（例えばＤＶＤ）からメインメモリ１１２へのテクスチャ画像のロード
２．新たなゲームセクタ又はレベルのための大容量記憶デバイス６２からメインメモリ１１２への形状頂点表示リストのロード
３．メインプロセッサ１１０によるテクスチャマップの動的レンダリング
４．メインプロセッサ１１０による頂点の動的生成又は変更
５．メインプロセッサ１１０による光及びマトリクスのアニメーティング
６．メインプロセッサ１１０による表示リストの作成
７．メインプロセッサ１１０によるグラフィックスコマンドストリームの生成
８．３Ｄグラフィックスプロセッサ１５４によるグラフィックスコマンドストリームの読み出し
９．３Ｄグラフィックスプロセッサ１５４による表示リストの読み出し
１０．３Ｄグラフィックスプロセッサ１５４によるレンダリングのための頂点アクセス
１１．３Ｄグラフィックスプロセッサ１５４によるレンダリングのためのテクスチャアクセス
【００３５】
これら動作は例示であって、メインメモリ１１２の読み出し及び書き込みに関する多くの動作のうちのいくつかに過ぎない。その他にも、メモリコントローラ１５２は、メインメモリの読み出し及び書き込み動作に関与するポートに対して調停を行う。より具体的には、図８を参照して、メモリコントローラ１５２は、
・テクスチャユニット５００用の読み出しポート６０２
・コマンドプロセッサ２００用の読み出しポート６０４
・ピクセルエンジン７００用の書き込みポート６０６
・プロセッサインタフェース１５０用の読み出し／書き込みポート６０８
・オーディオＤＳＰ１５６用の読み出し／書き込みポート６１０
・表示コントローラ／ビデオインタフェース１６４用の読み出しポート６１２、及び
・周辺コントローラ１６２用の読み出し／書き込みポート６１４
の間で調停を行う。
【００３６】
もちろん、これらポートは例示目的であって、ある実施例においては、ポートの数はこれ以上であっても、これ以下であってもよい。さらに、図８等に示すバス／信号ライン幅は、例示目的だけに過ぎず、本発明の範囲を制限するものではない。メモリコントローラ１５２は、これらポートの間で調停を行い、メインメモリ１１２へのアクセスを割り当てる。本例において、メモリコントローラ１５２及びその入力及び出力のすべては、例えば２００ＭＨｚで動作する。アドレス及び制御信号は、メモリコントローラ１５２のＩ／Ｏピンに直接接続され、一方、１２８ビット２００ＭＨｚデータバスは、メモリアクセスコントロールＭＡＣ０〜ＭＡＣ３を介して、例えば４００ＭＨｚでクロック制御される。各ＭＡＣは、メモリコントローラデータバス上の３２ビットをメインメモリバス上の通信のために１６ビットに変換する。以下の説明では、メインメモリ１１２に送出される要求を出す装置の動作を「マスタ」と称する。
【００３７】
あるマスタのいくつかは、メモリ「ホグ」である（例えば、メインプロセッサ読み出しマスタ、コマンドプロセッサ読み出しマスタ、テクスチャユニット読み出しマスタ、メインプロセッサ書き込みマスタ及びピクセルエンジン書き込みマスタ）。図９に概略的に示すように、メモリコントローラ１５２は、帯域幅制御回路６２０−１〜６２０−５を備え、以下に詳細に説明するが、これらメモリホグによるメインメモリの使用に影響を及ぼす。帯域幅制御回路６２０−１〜６２０−５を「ダイアル」であると見なし、対応マスタによる要求がメモリアービトレータ６２２によりマスクされるように設定されてもよい。メモリアービトレータ６２２は、例えば３．２ギガバイトの帯域幅でメインメモリ１１２へのアクセスを割り当てるように、要求を調停する。帯域幅制御回路６２０−１、６２０−２及び６２０−３は、対応読み出しマスタからの読み出し要求がメモリアービトレータ６２２の調停プロセスに参加して、メインメモリ１１２に読み出し要求を与える割合を制御する。例えば、コマンドプロセッサ読み出しマスタ及びテクスチャユニット読み出しマスタに関連する帯域幅制御回路は、コマンドプロセッサ読み出し要求がメモリアービトレータ６２２に供給される割合を、テクスチャユニット読み出し要求がメモリアービトレータ６２２に供給される割合に関連付けて構成するのに使用される。帯域幅制御回路６２０−４と６２０−５とは、対応書き込みマスタからの書き込み要求がメモリアービトレータ６２２の調停プロセスに参加して、書き込み要求をグローバル書き込み用バッファのキューに与える割合を制御する。例えば、メインプロセッサ書き込みマスタ及びピクセルエンジン書き込みマスタに関連する帯域幅制御回路は、メインプロセッサ書き込み要求がグローバル書き込み用バッファキューに配置される割合を、ピクセルエンジン書き込み要求がグローバル書き込み用バッファキューに配置される割合に関連付けて構成するのに使用されてもよい。そのため、帯域幅制御回路は、例えばグローバル書き込み用バッファにエントリをスロットリングする（エントリの割合を減少させる）ことにより、書き込みマスタの書き込み要求をスローダウンさせることができる。グローバル書き込み用バッファは、通常、自身のキューがフルになった場合、又はある一定レベルを超えた場合、又はメインプロセッサの読み出し要求がグローバル書き込み用バッファへのエントリと一致した場合に、メインメモリ１１２への書き込み要求を開始する。
【００３８】
調停方式は、典型的には、予め意図されたシステム全体の動作に合わせて設定され、かつ、バランスが取られる。これにより、ある調停方式では、メインプロセッサ読み出し要求が最優先される。しかしながら、アプリケーションによっては、メインプロセッサの読み出しには低めの優先度を付与して、グラフィックス処理により多くの帯域幅を与えることが好ましい場合もある。この場合、メインプロセッサ用帯域幅制御回路は、メインプロセッサ読み出しがサイクル毎に調停されないように構成されることも可能である。これにより、システムの性能がアプリケーションに合わせてうまく調整される。
【００３９】
図１０及び図１１のそれぞれに、メモリコントローラ１５２用のアドレスパス及び読み出しデータパスを示す。メインメモリ１１２へのアクセスをシークする読み出しマスタは、読み出しキューＲＱ１〜ＲＱ６のうちそれぞれ対応するものと関連付けられて、メインメモリ１１２から読み出すための読み出し要求（アドレス）のキューを形成する。メインメモリ１１２へのアクセスをシークする書き込みマスタは、書き込みキューＷＱ１〜ＷＱ４のうちそれぞれ対応するものと関連付けられて、メインメモリ１１２に書き込むための書き込みアドレス及び対応データのキューを形成する。メモリアービトレータ６２２は、所定の調停プロセスで、読み出しキューＲＱ１〜ＲＱ６にメインメモリへのアクセスを割り当て、かつ、書き込みキューＷＱ１〜ＷＱ４のうちのどの書き込み要求がグローバル書き込み用バッファＷＱ０に与えられるかを制御する。少なくとも要求のうちのいくつかがこの調停プロセスに供給される割合は、上記帯域幅制御回路の設定に従って制御可能である。ある特定の動作に対して帯域幅制御回路を適切に設定することにより、見識のあるユーザであれば、調停プロセスへの要求の流れを調整して、その動作におけるシステムの性能を向上させることが可能である。
【００４０】
グローバル書き込み用バッファＷＱ０向けの調停方式がある。というのは、４つの要求部がメインメモリ１１２に対して書き込み要求を行う場合があるためである。グローバル書き込み用バッファ向けの調停方式では、これら４つの要求部の間で調停を行う。各書き込みマスタは、ローカルキュー（すなわち、ＷＱ１〜ＷＱ４のうちの１つ）を有し、ある特定の書き込みマスタ用のローカルキューが空でない場合はいつでも、グローバル書き込み用バッファへのその他エントリを調停する。メインプロセッサ１１０の書き込みは常に最優先され、そのため帯域幅制御回路は、この優先度に対して「ダイアルダウン」される。ピクセルエンジン７００は、オーディオＤＳＰ１５６及び周辺（Ｉ／Ｏ）コントローラ１６２と同様の書き込み優先度を有する。しかしながら、ピクセルエンジン７００は、１２８ビットバスを使用し、メインメモリ１１２に対してコピーが行われると、ピクセルエンジン７００は、サイクル毎に書き込み要求を行う場合がある。そのため、帯域幅制御回路は、この書き込み要求部に対して「ダイアルダウン」を付与して、その書き込み要求をサイクル毎に調停されないようにする。
【００４１】
グローバル書き込み用バッファＷＱ０に書き込み要求を集めることにより、読み出しから書き込み及び書き込みから読み出しへの切り替えが減少され、メインメモリバスが変更される際に生じるデッドメモリサイクルが最小化できる。書き込み要求はグローバル書き込み用バッファＷＱ０に供給され、一方、読み出し要求は調停方式に従って処理される。グローバル書き込み用バッファＷＱ０があるレベルまで満たされた場合、あるいはメインプロセッサの読み出し要求がグローバル書き込み用バッファのエントリにマッチした場合、メインメモリバスは、読み出しから書き込み状態に切り替えられることが多い。このスイッチオーバーにより、グローバル書き込み用バッファＷＱ０は、メインメモリ１１２のある特定アドレスにデータを書き込むためにフラッシュされる。
【００４２】
図１２に、帯域幅制御回路６２０−１〜６２０−５の実現例を示す。もちろん、帯域幅制御回路はその他の方法でも実現可能であり、本発明はこれに限定されるものではない。本実施形態例において、各帯域幅制御回路は、プログラム可能ハードウェアレジスタ７１０及びハードウェアアキュムレータ７２０を含む。プログラム可能レジスタは、９ビットレジスタ（ビット８〜ビット０）であって、プログラム用のデータは、１．８フォーマット（すなわちｘ．ｘｘｘｘｘｘｘｘ）である。アキュムレータ７２０は、ある所定の数に初期化され（例えば０．００００００００）、サイクル毎に、プログラム可能レジスタ７１０にプログラムされた数は、自動的にアキュムレータ７２０に加算される。アキュムレータ７２０のビット８（最上位ビット）が設定されると、対応する要求はそのサイクルで調停され、メインメモリから読み出されるか又はグローバル書き込み用バッファキューに配置される。これを、入力要求とアービトレータ６２２との間の信号パスの閉鎖部によって、図１２において表現する。プログラム可能レジスタ７１０が０ｘ１．００に設定された場合、対応する要求はサイクル毎に調停される。例えば、あるマスタからの要求を１サイクルおきに調停するようにするには、対応するプログラム可能レジスタを０ｘ８０に設定する。この場合のプログラム可能レジスタのデフォルト値は０ｘ１．００であり、レジスタはアプリケーションプログラミングインタフェース（ＡＰＩ）を介してプログラム可能である。
【００４３】
プログラム可能レジスタの例を以下に示す。
【表１】
2012164344.tif 000003
【００４４】
ある要求部からのメモリアクセス要求は先入れ／先出しされ、対応プログラム可能レジスタにより決定されるＮサイクル毎に、その先入れ／先出しされた要求のうちの１つが調停される。これにより、帯域幅制御回路が要求フィルタとして機能し、例えばこれら要求部が一度に大量の要求を生成し、他の要求部も同様に要求を生成している場合、特定の要求部によるメインメモリ１１２へのアクセス要求をスローダウンさせることができる。従って、特定の要求部がメインメモリ１１２へのデータ書き込み要求を大量に生成しているような場合、その帯域幅制御回路が、これら要求が調停される割合を制御するようプログラミングされる。どの要求部もアクセスを主張していない場合、ある要求部からの要求が直ちに処理される。
【００４５】
帯域幅制御回路は、対応マスタのためにメモリ帯域幅を制御する。例えば、コマンドプロセッサのプログラム可能レジスタの内容がメモリサイクル毎に加算される、アキュムレータのビット８（すなわち最上位ビット）が１でない場合、待ち状態のコマンドプロセッサ要求があったとしても、アキュムレータのビット８が１に等しくなるように十分なサイクルが経過するまで、又は他のマスタからの待ち状態の要求がなくなるまで、その要求は調停されない。メモリコントローラ１５２は、帯域幅制御回路の設定により、メインメモリ１１２がアイドル状態にならないようにするのが好ましい。帯域幅制御回路６２０−１〜６２０−５は、マスタに対応するアキュムレータのビット８（すなわち最上位）が１に等しくなるまで、そのマスタからの要求をマスキングすることにより、この調停方式に作用する。
【００４６】
このように、帯域幅制御回路６２０−１〜６２０−５は、マスタからの要求を調停する頻度をプログラム可能に制御することにより、主要メモリの「ホグ」によるメモリの使用に影響を及ぼす。ある書き込みマスタ用の帯域幅制御回路は、例えば、そのマスタからの書き込み要求をグローバル書き込み用バッファＷＱ０にスロットリングすることにより、その書き込みマスタからメインメモリ１１２への書き込みをスローダウンさせることができる。ここで、帯域幅制御回路のプログラム可能レジスタ設定により、許可されない未処理読み出し要求がある場合、調停によりメインメモリ１１２をアイドル状態にしないことが好ましい。この場合、スロットリングされる要求部の間で、ラウンドロビン方式が用いられる。例えば、２つの要求部がラウンドロビン方式に関与すると仮定すると、調停コントロール６２２は、最初の要求部に１番目のメモリサイクルを与え、２つ目の要求部に２番目のメモリサイクルを与え、最初の要求部に３番目のメモリサイクルを与える。
【００４７】
このシステム例においては、読み出しはすべて単一キャッシュライン（３２バイト）である。そのため、キャッシュラインの読み出しには２００ＭＨｚで２サイクル要し、新規読み出しは１０ナノ秒毎に行われる。その他要求部の間でのラウンドロビン調停において、メインプロセッサ１１０からの読み出し要求が最優先される。メモリ所有権は、読み出し要求部の間で１０ナノ秒毎に変わってリフレッシュされるが、書き込みキューは、常に全体にわたって書き込みされる。書き込みキューは、あるレベルまで、又はあるレベルを超えて満たされたとき、あるいはメインプロセッサ読み出し要求が書き込み用バッファのエントリにマッチしたときに、要求を開始する。これらには、要求の頻度に関して以下の制限が課せられる。
・メインプロセッサの読み出しは、２つ連続して行えない。
・システムの読み出しは、２つ連続して行えない。
・１０ナノ秒のリフレッシュサイクル中、２行リフレッシュされる。５ナノ秒毎に１行。
ここに記載する帯域幅制御回路は、ある特定の調停プロセスとの使用に限定されない。読み出しキュー調停方式例と書き込みキュー調停方式例とを以下に説明するが、これらは例示であって制限ではない。これら例示調停方式のさらなる詳細は、共に名称が「機能向上型メモリコントローラを用いたグラフィックス処理システム」である、上記仮出願番号６０／２２６，８９４、及び対応出願番号０９／７２６，２２０に記載されている。
【００４８】
（読み出しキューの調停例）
メインプロセッサ１１０は、以下の場合を除いて最優先される。
・メインプロセッサ１１０が先のアクセスに対するマスタである場合
・メインプロセッサ読み出しマスタ用のアキュムレータのビット８（ＭＳＢ）が１に等しくなく、アキュムレータのビット８（ＭＳＢ）が１に等しい他のマスタによる他の要求がある場合
・書き込み用バッファが完全なフル状態で、書き込みサイクルの最中である場合
・先のメインプロセッサアドレスが、書き込み用バッファをフラッシュさせるプロセッサインタフェースローカル書き込み用バッファ、又はグローバル書き込み用バッファにおける有効なメインプロセッサ書き込みアドレスに合致する場合
【００４９】
コマンドプロセッサ２００又はテクスチャユニット５００が、その他のシステムマスタ（すなわち、オーディオＤＳＰ１５６、周辺（Ｉ／Ｏ）コントローラ１６２、ビデオコントローラ１６４）と同じ優先度を有し、従って、以下の条件以外でシステムマスタをラウンドロビン方式でメモリ調停する。
・オーディオＤＳＰ１５６、周辺（Ｉ／Ｏ）コントローラ１６２又はビデオコントローラ１６４が、先のアクセスに対するマスタである場合
・コマンドプロセッサ読み出し又はテクスチャユニット読み出しのアキュムレータのビット８（ＭＳＢ）が１に等しくなく、その対応アキュムレータのビット８が１に等しい他のマスタによる他の要求がある場合。
【００５０】
オーディオＤＳＰ１５６（又は周辺（Ｉ／Ｏ）コントローラ１６２、又はビデオコントローラ１６４）の読み出しは、その他グラフィックスマスタ（コマンドプロセッサ２００及びテクスチャユニット５００）と同じ優先度を有し、従って、以下の条件以外でグラフィックスマスタをラウンドロビン方式でメモリ調停する。
・オーディオＤＳＰ１５６（又は周辺（Ｉ／Ｏ）コントローラ１６２、又はビデオコントローラ１６４）が、先のアクセスに対するマスタである場合
【００５１】
グローバル書き込み用バッファＷＱ０は、以下の状態以外でメインプロセッサ１１０、グラフィックス又はシステムマスタより低い優先度を有する。
・グローバル書き込み用バッファＷＱ０が完全なフル状態で、ラウンドロビン方式で調停を行う場合
・メインプロセッサ読み出しアドレスは、グローバル書き込み用バッファＷＱ０内の書き込みアドレスと合致する場合、最優先される。
・優先度が高いその他のマスタのアキュムレータのビット８が１に等しくない場合
【００５２】
以下の条件以外で、リフレッシュは最低の優先度を有する。
・リフレッシュ要求の合計がしきい値に達すると、その優先度はメインプロセッサ読み出しのすぐ下のレベルまであがる。
・優先度が高いその他のマスタのアキュムレータのビット８が１に等しくない場合
【００５３】
（書き込みキューの調停例）
メインプロセッサ１１０、ピクセルエンジン７００、オーディオＤＳＰ１５６及び周辺（Ｉ／Ｏ）コントローラ１６２は、書き込みキューの４つのマスタである。メインプロセッサによる書き込みは最優先され、その他３つのマスタは以下の状態以外の場合にラウンドロビン方式で調停される。
・メインプロセッサ書き込みのアキュムレータのビット８（ＭＳＢ）が１に等しくなく、そのアキュムレータのビット８（ＭＳＢ）が１に等しい書き込みマスタが他にある場合
【００５４】
上記説明は、メモリ装置へのアクセスについてであるが、本発明はこれに限定されるものではなく、ここに説明するコンセプトは、バス（例えば、ＰＣＩバス）、プロセッサ（例えば、非埋め込み型プロセッサ）等の共有リソースへのアクセスを複数の要求部が要求するような状況下でも、十分に適用可能である。
【００５５】
（その他互換性のあるインプリメンテーション例）
上記システム装置５０は、上述したホームビデオゲームコンソール構成以外でも実現され得る。例えば、システム５０をエミュレート、そうでなければ互換性がある違った構成を有するプラットフォーム上で、システム５０向けに記述されたグラフィックスアプリケーションや他のソフトウェアを実行することができる。システム５０のハードウェア及びソフトウェアリソースの一部又はすべてを、エミュレート、シミュレート及び／又は提供できるプラットフォームであれば、ソフトウェアを首尾良く実行することができる。
【００５６】
例えば、エミュレータは、システム５０のハードウェア及び／又はソフトウェア構成（プラットフォーム）とは異なるハードウェア及び／又はソフトウェア構成（プラットフォーム）を提供し得る。このエミュレータシステムは、アプリケーションソフトウェアが記述されたシステムのハードウェア及び／又はソフトウェア構成要素の一部又はすべてを、エミュレート又はシミュレートするソフトウェア及び／又はハードウェア構成要素を含むこともある。例えば、このエミュレータシステムは、システム５０のハードウェア及び／又はファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行するパーソナルコンピュータのような汎用デジタルコンピュータを備えることもある。上記オーディオシステムのＤＳＰ処理は、パーソナルコンピュータ上でエミュレート可能である。
【００５７】
汎用デジタルコンピュータ（例えば、ＩＢＭやマッキントッシュのパーソナルコンピュータ、及びその互換機）によっては、ＤｉｒｅｃｔＸやその他の標準３ＤグラフィックスコマンドＡＰＩに準拠する３Ｄグラフィックスパイプラインを提供する、３Ｄグラフィックスカードを装備している。あるいは、サウンドコマンドの標準セットに基づく高品質な立体的サウンドを可能にする、立体的サウンドカードも装備していることがある。このような、エミュレータソフトウェアを実行するマルチメディアハードウェア対応パーソナルコンピュータは、システム５０のグラフィックス及びサウンド性能を近似させるのに十分な性能を有し得る。エミュレータソフトウェアは、パーソナルコンピュータのプラットフォーム上のハードウェアリソースを制御して、ゲームプログラマがゲームソフトウェアを記述したホームビデオゲームコンソールプラットフォームの処理、３Ｄグラフィックス、サウンド、周辺、及びその他機能をシミュレートする。
【００５８】
図１３に、ホストプラットフォーム１２０１、エミュレータ構成１３０３及び記憶媒体６２に用意されたゲームソフトウェアの実行可能な２値画像を用いた、包括的なエミュレーション処理の例を示す。ホスト１２０１は、例えば、パーソナルコンピュータ、ビデオゲームコンソール又はその他十分な演算能力を有するプラットフォームのような、汎用又は特殊目的用デジタル演算装置である。エミュレータ１３０３は、ホストプラットフォーム１２０１上で実行され、記憶媒体６２からのコマンド、データ及び情報をホスト１２０１により処理可能な形式にリアルタイムに変換するソフトウェア及び／又はハードウェアである。例えば、エミュレータ１３０３は、システム５０による実行を意図する「ソース」２値画像プログラム命令を記憶媒体６２から取り出し、これらプログラム命令をホスト１２０１が実行又は処理可能な対象形式に変換する。
【００５９】
例えば、ソフトウェアが、ＩＢＭ  Ｐｏｗｅｒ  ＰＣ等の特定のプロセッサを用いて、プラットフォーム上で実行されるよう記述されたものであり、ホスト１２０１がそれとは異なる（例えば、インテルの）プロセッサを使用したパーソナルコンピュータである場合、エミュレータ１３０３は、記憶媒体６２から２値画像のプログラム命令を１つ又はそのシーケンスを取り出して、これらプログラム命令を１つ又はそれ以上の同等なインテルの２値画像プログラム命令に変換する。エミュレータ１３０３は、グラフィックス＆オーディオプロセッサ１１４による処理向けのグラフィックスコマンドとオーディオコマンドも取り出し及び／又は生成し、これらコマンドを、ホスト１２０１上で使用可能なハードウェア及び／又はソフトウェアグラフィックス及びオーディオ処理リソースにより処理され得るフォーマットに変換する。一例として、エミュレータ１３０３は、これらのコマンドを、ホスト１２０１の特定グラフィックス及び／又はオーディオハードウェアで処理され得るコマンドに変換してもよい（例えば、標準ＤｉｒｅｃｔＸ、ＯｐｅｎＧＬ及び／又はサウンドＡＰＩを用いて）。
【００６０】
上記ビデオゲームシステムの特長の一部又はすべてを提供するために使用されるエミュレータ１３０３は、グラフィックスユーザインタフェース（ＧＵＩ）を備えていてもよく、これによりエミュレータを用いて実行されるゲームの様々なオプションやスクリーンモードの選択が簡易化又は自動化される。例えば、このようなエミュレータ１３０３は、本来のソフトウェア用ホストプラットフォームと比べてさらに機能が拡張されていてもよい。
【００６１】
図１４に、エミュレータ１３０３と共に使用するのに適したエミュレーションホストシステム１２０１を示す。システム１２０１は、処理ユニット１２０３及びシステムメモリ１２０５を含む。システムバス１２０７は、システムメモリ１２０５を始めとする様々なシステム構成要素を処理ユニット１２０３に接続する。システムバス１２０７は、メモリバス又はメモリコントローラを含むバス構造のいくつかのタイプのうちの１つであり、様々なバスアーキテクチャのうちの１つを利用した周辺バス及びローカルバスである。システムメモリ１２０７は、読み出し専用メモリ（ＲＯＭ）１２５２、及びランダムアクセスメモリ（ＲＡＭ）１２５４を含む。起動中等、パーソナルコンピュータシステム１２０１の内部要素の間での情報転送に役立つ基本ルーチンを含む基本入出力システム（ＢＩＯＳ）１２５６は、ＲＯＭ１２５２に格納される。システム１２０１は、さらに様々なドライブと、それに関連するコンピュータ読み出し可能媒体を含む。ハードディスクドライブ１２０９は、（典型的に固定の）磁気ハードディスク１２１１からの読み出し／への書き込みを行う。追加（できればオプションで）磁気ディスクドライブ１２１３は、着脱可能な「フロッピー（登録商標）」又はその他の磁気ディスク１２１５からの読み出し／への書き込みを行う。光ディスクドライブ１２１７は、ＣＤ−ＲＯＭやその他の光学媒体等の着脱可能な光ディスク１２１９から読み出しを行い、構成によっては書き込みも行う。ハードディスクドライブ１２０９及び光ディスクドライブ１２１７は、それぞれハードディスクドライブインタフェース１２２１と光ドライブインタフェース１２２５とによって、システムバス１２０７に接続される。そのドライブとそれに関連するコンピュータ読み出し可能媒体とは、コンピュータ読み出し可能命令、データ構造、プログラムモジュール、ゲームプログラム及びその他パーソナルコンピュータシステム１２０１向けのデータを、不揮発的に記憶する。他の構成において、データを格納し、コンピュータによってアクセスされ得るコンピュータ読み出し可能媒体（例えば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）等）も使用され得る。
【００６２】
エミュレータ１３０３を含む数多くのプログラムモジュールは、ハードディスク１２１１、着脱式磁気ディスク１２１５、光ディスク１２１９、及び／又はシステムメモリ１２０５のＲＯＭ１２５２及び／又はＲＡＭ１２５４上に記憶される。このようなプログラムモジュールは、グラフィックス＆サウンドＡＰＩ、１つ又はそれ以上のアプリケーションプログラム、その他プログラムモジュール、プログラムデータ及びゲームデータを提供するオペレーティングシステムを含んでいてもよい。ユーザは、キーボード１２２７、ポインティング装置１２２９、マイク、ジョイスティック、ゲームコントローラ、衛星放送用アンテナ、スキャナ等の入力装置を通して、パーソナルコンピュータシステム１２０１にコマンドや情報を入力する。例えば、これらの入力装置は、システムバス１２０７に接続されるシリアルポートインタフェース１２３１を介して処理ユニット１２０３に接続され得るが、もちろん他のインタフェース、例えばパラレルポート、ゲームポートファイアワイヤバス又はユニバーサルシリアルバス（ＵＳＢ）によっても接続され得る。モニタ１２３３等の表示装置も、ビデオアダプタ１２３５等のインタフェースを介してシステムバス１２０７に接続される。
【００６３】
システム１２０１は、モデム１１５４やその他のネットワークインタフェース手段も含み、インターネット等のネットワーク１１５２を介して通信を確立する。内部、外部を問わず、モデム１１５４は、シリアルポートインタフェース１２３１を介してシステムバス１２３に接続される。ネットワークインタフェース１１５６も備えられていてもよく、これによりシステム１２０１がローカルエリアネットワーク１１５８を介して、リモート演算装置１１５０（別システム１２０１等）と通信可能になる（この通信は、広域ネットワーク１１５２、又はダイアルアップやその他の通信手段等の通信パスでもかまわない）。システム１２０１は、典型的には、プリンタやその他の標準的な周辺装置等、その他周辺出力装置を含む。
【００６４】
例えば、ビデオアダプタ１２３５は、マイクロソフトのＤｉｒｅｃｔ７．０、又はその他のバージョン等の標準３Ｄグラフィックスアプリケーションプログラマインタフェースに基づいて送出される３Ｄグラフィックスコマンドに応答して、高速３Ｄグラフィックスレンダリングを行う３Ｄグラフィックスパイプラインチップを含んでいてもよい。ステレオスピーカ１２３７のセットは、バス１２０７からのサウンドコマンドに基づいて、高品質な立体的サウンドを生成するためのハードウェア及び組み込みソフトウェアサポートを提供する、従来の「サウンドカード」のようなサウンド生成インタフェースを介して、システムバス１２０７に接続される。これらハードウェア機能により、システム１２０１が、記憶媒体６２に格納されているソフトウェアをプレイするための、十分なグラフィックス及びサウンドスピード性能を提供する。
【００６５】
以上、本発明を、最も実用的で好ましい実施形態であると現時点で判断される内容に関して説明してきたが、本発明は、開示された実施形態にのみ制限されるべきものではなく、反対に記載した請求項の範囲内において、様々に変更、及び同等な内容が適用されるものとする。
【図１】
2012164344.tif 000004
【図２】
2012164344.tif 000005
【図３】
2012164344.tif 000006
【図４】
2012164344.tif 000007
【図５】
2012164344.tif 000008
【図６】
2012164344.tif 000009
【図７】
2012164344.tif 000010
【図８】
2012164344.tif 000011
【図９】
2012164344.tif 000012
【図１０】
2012164344.tif 000013
【図１１】
2012164344.tif 000014
【図１２】
2012164344.tif 000015
【図１３】
2012164344.tif 000016
【図１４】
2012164344.tif 000017
【手続補正書】
【提出日】平成24年5月1日(2012.5.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
共有リソースへのアクセスを制御するコントローラであって、
前記共有リソースへの複数のアクセス要求を調停するアービトレータ、及び
前記アービトレータによる要求の調停頻度を制御するプログラム可能帯域幅制御回路を備え、
前記帯域幅制御回路は、
プログラム可能レジスタ、及び
アキュムレータを有し、
前記プログラム可能レジスタの内容は、それぞれ対応するアキュムレータに繰り返し加算され、当該プログラム可能レジスタに対応する要求は、当該アキュムレータの値が所定の値に達すると調停される、コントローラ。
【請求項２】
前記プログラム可能レジスタの内容は、クロック信号に従って、それぞれ対応するアキュムレータに繰り返し加算される、請求項１に記載のコントローラ。
【請求項３】
前記プログラム可能レジスタは、アプリケーションプログラミングインタフェースを用いてプログラム可能である、請求項１または２に記載のコントローラ。
【請求項４】
前記プログラム可能レジスタは、プログラム可能なハードウェアレジスタである、請求項１ないし３のいずれか一項に記載のコントローラ。
【請求項５】
前記帯域幅制御回路は、複数種類のアクセス要求に対応した複数の前記プログラム可能レジスタを有し、
前記複数の前記プログラム可能レジスタのそれぞれは、個別にプログラム可能である、請求項１ないし４のいずれか一項に記載のコントローラ。
【請求項６】
３Ｄグラフィックスシステムであって、
表示用の３Ｄ視覚画像を生成するためのグラフィックスコマンドを処理するグラフィックス処理回路、
前記グラフィックス処理回路にアクセス可能なメモリ、
前記グラフィックス処理回路からの、複数のメモリアクセス要求を調停するためのアービトレータ、及び
前記アービトレータによる要求の調停頻度を制御するプログラム可能帯域幅制御回路を備え、
前記帯域幅制御回路は、
プログラム可能レジスタ、及び
アキュムレータを有し、
前記プログラム可能レジスタの内容は、それぞれ対応するアキュムレータに繰り返し加算され、当該プログラム可能レジスタに対応する要求は、当該アキュムレータの値が所定の値に達すると調停される、３Ｄグラフィックスシステム。
【請求項７】
ビデオゲームシステムであって、
メインプロセッサ、
表示用の３Ｄ視覚画像を生成するためのグラフィックスコマンドを処理するグラフィックス処理回路、
３Ｄ視覚画像を伴うオーディオコンテンツを生成するためのオーディオコマンドを処理するオーディオ処理回路、
前記グラフィックス処理回路及び前記オーディオ処理回路にアクセス可能であるメモリ、
少なくとも前記メインプロセッサと前記グラフィックス処理回路とからの複数のメモリアクセス要求を調停するアービトレータ、及び
前記アービトレータによる要求の調停頻度を制御するプログラム可能帯域幅制御回路を備え、
前記帯域幅制御回路は、
プログラム可能レジスタ、及び
アキュムレータを有し、
前記プログラム可能レジスタの内容は、それぞれ対応するアキュムレータに繰り返し加算され、当該プログラム可能レジスタに対応する要求は、当該アキュムレータの値が所定の値に達すると調停される、ビデオゲームシステム。