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