(57)【要約】【課題】システムの実施形態は、グラフィック描画演算を含むコンピュータシステムのアドレス変換性能を向上する。【解決手段】仮想ページ変換を容易にするシステム。本システムの実施形態は、処理装置と、フロントエンドユニットと、アドレス変換ロジックを含む。処理装置は現在のデータブロックのデータを処理するように構成される。フロントエンドユニットは処理装置に結合される。フロントエンドユニットは電子メモリ装置内の現在のデータブロックにアクセスして、処理のためにプロセッサに現在のデータブロックを送るように構成される。アドレス変換ロジックはフロントエンドユニットと電子メモリ装置に結合される。アドレス変換ロジックは、現在のデータブロックの仮想アドレスに基づいて予測仮想アドレスに対する仮想アドレス変換を先取りするように構成される。【選択図】図１
2008282396.tif 000002
【特許請求の範囲】
【請求項１】
仮想ページ変換を容易にするシステムであって、
現在のデータブロックのデータを処理する処理装置と、
前記処理装置に結合され、電子メモリ装置における前記現在のデータブロックにアクセスし、処理のために、前記プロセッサに前記現在のデータブロックを送るように構成されるフロントエンドユニットと、
前記フロントエンドユニットと、前記電子メモリ装置に結合され、前記現在のデータブロックの仮想アドレスに基づいて、予測仮想アドレスのための仮想アドレス変換を先取りするように構成されるアドレス変換ロジックと、を備えるシステム。
【請求項２】
前記アドレス変換ロジックは、前記プロセッサにより処理される演算のタイプに基づいて、前記予測仮想アドレスを予測するように構成されるアドレス予測ロジックを備える請求項１に記載のシステム。
【請求項３】
前記アドレス予測ロジックは、前記現在のデータブロックの後の次のデータブロックに基づいて、前記予測仮想アドレスとして、次の順次仮想アドレスを予測するように更に構成される請求項２に記載のシステム。
【請求項４】
前記アドレス予測ロジックは、前記現在のデータブロックの前の前回のデータブロックに基づいて、前記予測仮想アドレスとして、前回の順次仮想アドレスを予測するように更に構成される請求項２に記載のシステム。
【請求項５】
前記アドレス変換ロジックは、アドレス変換ソースから前記仮想アドレス変換を先取りするアドレス先取りロジックを備える請求項１に記載のシステム。
【請求項６】
前記アドレス先取りロジックは、前記現在のデータブロックに対する仮想／物理アドレス変換とほぼ同時に、前記仮想アドレス変換を先取りするように更に構成される請求項５に記載のシステム。
【請求項７】
前記アドレス変換ロジックは、前記現在のデータブロックに対する前記仮想／物理アドレス変換をフェッチし、前記予測仮想アドレスのための前記仮想アドレス変換を先取りする、単一アドレス変換要求を発するように更に構成される請求項６に記載のシステム。
【請求項８】
前記アドレス変換ソースは、トランスレーションルックアサイドバッファを備える請求項５に記載のシステム。
【請求項９】
前記フロントエンドユニットは、前記アドレス変換ロジックに結合され、前記予測仮想アドレスに対する前記先取りされた仮想アドレス変換を格納するように構成されるキャッシュを備える請求項１に記載のシステム。
【請求項１０】
前記プロセッサは、グラフィックス処理ユニットを備える請求項１に記載のシステム。
【請求項１１】
前記アドレス変換ロジックは、前記現在のデータブロックの前記仮想アドレスに基づいて、複数の予測仮想アドレスに対応する複数の仮想アドレス変換を先取りするように更に構成される請求項１に記載のシステム。
【請求項１２】
仮想ページ変換と関連する予測を先取りする方法であって、
現在のデータブロック内のデータを処理するためのコマンドであって、前記現在のデータブロックに関連付けられた仮想アドレスを備えるコマンドを受け取ることと、
電子メモリ装置内の前記現在のデータブロックにアクセスすることと、
前記現在のデータブロックの前記仮想アドレスに基づいて、予測仮想アドレスに対する仮想アドレス変換を先取りすることと、を含む方法。
【請求項１３】
前記データを処理する前記コマンドに基づいて、前記予測仮想アドレスを予測することを更に含み、前記コマンドは、グラフィカルデータを操作するグラフィカルコマンドを備える請求項１２に記載の方法。
【請求項１４】
前記グラフィカルコマンドは、前記グラフィカルデータを、ホストメモリ装置から、グラフィックス処理ユニットに局所的に結合された前記電子メモリ装置に移動するメモリコピーコマンドを含む請求項１３に記載の方法。
【請求項１５】
前記グラフィカルコマンドは、複数の非共有頂点を使用して、複数の基本形を描画する基本形描画コマンドを含む請求項１３に記載の方法。
【請求項１６】
前記グラフィカルコマンドは、複数の共有および非共有頂点を使用して、複数の基本形を描画するインデックス基本形描画コマンドを含む請求項１３に記載の方法。
【請求項１７】
前記現在のデータブロックの後の、次のデータブロックに基づいて、前記予測仮想アドレスとして、次の順次仮想アドレスを予測することを更に含む請求項１２に記載の方法。
【請求項１８】
前記現在のデータブロックの後の、前回のデータブロックに基づいて、前記予測仮想アドレスとして、前回の順次仮想アドレスを予測することを更に含む請求項１２に記載の方法。
【請求項１９】
前記現在のデータブロックに基づいて、複数の予測仮想アドレスに対応する複数の仮想アドレス変換を先取りすることを更に含む請求項１２に記載の方法。
【請求項２０】
デジタルプロセッサにより実行可能で、先取りされた予測による仮想ページ変換を容易にするための演算を実行するマシン読取可能指令のプログラムを具現化するコンピュータ読取可能格納媒体であって、前記演算は、
現在のデータブロック内のデータを処理するコマンドであって、前記現在のデータブロックに関連付けられた仮想アドレスを含むコマンドを受け取ることと、
電子メモリ装置内の前記現在のデータブロックにアクセスすることと、
前記現在のデータブロックの前記仮想アドレスに基づいて、予測仮想アドレスに対する仮想アドレス変換を先取りすることと、を含むコンピュータ読取可能格納媒体。
【請求項２１】
前記演算は、前記データを処理する前記コマンドに基づいて、前記予測仮想アドレスを予測する演算を更に含み、前記コマンドは、グラフィカルデータを操作するグラフィカルコマンドを備える請求項２０に記載のコンピュータ読取可能格納媒体。
【請求項２２】
前記演算は、前記現在のデータブロックの後の、次のデータブロックに基づいて、前記予測仮想アドレスとして、次の順次仮想アドレスを予測する演算を更に含む請求項２０に記載のコンピュータ読取可能格納媒体。
【請求項２３】
前記演算は、前記現在のデータブロックの後の、前回のデータブロックに基づいて、前記予測仮想アドレスとして、前回の順次仮想アドレスを予測する演算を更に含む請求項２０に記載のコンピュータ読取可能格納媒体。
【請求項２４】
前記演算は、前記現在のデータブロックに基づいて、複数の予測仮想アドレスに対応する複数の仮想アドレス変換を先取りする演算を更に含む請求項２０に記載のコンピュータ読取可能格納媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータシステムの多くのタイプが仮想メモリを使用している。仮想メモリの使用により、コンピュータは補助格納装置に格納されているデータをあたかもそれがメインメモリに常駐しているかのように参照できるようになる。仮想メモリの使用の別の利点は、非連続物理メモリアドレスに相関付けられた順次仮想メモリアドレスを参照できる機能である。仮想メモリアドレスを物理メモリアドレスに相関付けるために仮想アドレス変換が実行される。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
仮想メモリアドレス変換は、典型的には、最近使用された仮想アドレス変換をキャッシュする変換テーブル（トランスレーションルックアサイドバッファ、またはＴＬＢとよく称される）を参照することにより実行される。変換テーブルが、仮想メモリアドレスに対する要求された物理メモリアドレスを有していない場合は、変換はメモリから（例えば、メインメモリに格納されたページテーブルから）フェッチされる。そして、フェッチされたアドレス変換は変換テーブルに格納される。要求者は要求された変換が変換テーブルで利用できるようになるまで待たされる。
【０００３】
従来のコンピュータシステムにおいては、仮想アドレス変換は物理メモリアクセスの非連続使用は本質的に予測不可なのでオンデマンドで実行される。言い換えると、メモリ管理ユニット（ＭＭＵ）に対する従来の設計は仮想アドレス変換を予測しようとは試みない。この理由は、物理アドレス指定の非連続的性質により、いかなる精度でも仮想アドレス変換を予測するという試みは難しくなり、そのため非常に高価なものとなるからである。
【課題を解決するための手段】
【０００４】
システムの実施形態を説明する。１つの実施形態において、本システムは仮想ページ変換を容易にするシステムである。本システムの実施形態は、処理装置と、フロントエンドユニットと、およびアドレス変換ロジックを含む。処理装置は現在のデータブロックのデータを処理するように構成される。フロントエンドユニットは処理装置に結合される。フロントエンドユニットは電子メモリ装置内の現在のデータブロックにアクセスし現在のデータブロックを処理のためにプロセッサに送るように構成される。アドレス変換ロジックはフロントエンドユニットと電子メモリ装置に結合される。アドレス変換ロジックは、現在のデータブロックの仮想アドレスに基づいて予測仮想アドレスのための仮想アドレス変換を先取りするように構成される。システムの実施形態は、コンピュータグラフィックスシステムを含むコンピュータシステムのアドレス変換性能を高める。システムの他の実施形態も説明する。
【０００５】
方法の実施形態もまた説明する。１つの実施形態において、本方法は仮想ページ変換に関連する予測を先取りする方法である。本方法の実施形態は、現在のデータブロック内のデータを処理するコマンドを受け取ることを含む。コマンドは現在のデータブロックに関連付けられた仮想アドレスを含む。本方法はまた電子メモリ装置内の現在のデータブロックをアクセスすることも含む。本方法はまた、現在のデータブロックの仮想アドレスに基づいて予測仮想アドレスのための仮想アドレス変換を先取りすることも含む。本方法の他の実施形態もまた説明する。
【０００６】
本発明の実施形態の他の態様および利点は本発明の原理の例により図示された付随する図面と連係する下記の詳細な説明により明白になるであろう。
【発明を実施するための最良の形態】
【０００７】
図１は、コンピュータグラフィックスシステム１００の１つの実施形態の模式ブロック図を示している。図示されているコンピュータグラフィックスシステム１００は、フロントエンド／直接メモリアクセス（ＦＥ／ＤＭＡ）ユニット１０２とグラフィックス処理ユニット（ＧＰＵ）１０４を含む。ＦＥ／ＤＭＡユニット１０２はアドレス変換ロジック１０６を含む。コンピュータグラフィックスシステム１００はまた、ＦＥ／ＤＭＡユニット１０２に結合された電子メモリ装置１０８と、ＧＰＵ１０４に結合された表示装置１１０も含む。更に、ＦＥ／ＤＭＡユニット１０２はメモリインタフェース１１４を介してホストメモリ装置１１２に結合される。図示されているコンピュータグラフィックスシステム１００はある構成要素部品を示しているが、コンピュータグラフィックスシステム１００の他の実施形態はより少ないまたはより多い構成要素部品を含むことができる。
【０００８】
一般的に、コンピュータグラフィックスシステム１００は対象物をモデル化し、モデル化された対象物を表示装置１１０上に表示するように構成される。対象物は３つの頂点と、この３つの頂点を接続する３つのエッジまたは辺を有する三角形のような多角形によりモデル化されることがよくある。対象物は単一の三角形によりモデル化でき、または数千、数百万の三角形によりモデル化できる。対象物をモデル化するために、コンピュータグラフィックスシステム１００は各三角形の頂点を格納および参照できる。追加的な詳細は対象物の頂点の格納と処理に関連して下記に説明される。
【０００９】
１つの実施形態において、ＦＥ／ＤＭＡユニット１０２は、グラフィックスパイプラインを供給するコマンドストリームと種々のＤＭＡ頂点ストリームの入力トラフィックを制御する。ＦＥ／ＤＭＡユニット１０２はまた、ローカルメモリ装置１０８とのインタフェースを取り種々の頂点ストリームを引き込む。または、メモリ装置１０８はＦＥ／ＤＭＡユニット１０２と統合することができる。いったん複数の頂点ストリームが引き込まれると、ＦＥ／ＤＭＡユニット１０２はストリームを１つの頂点ストリームに組み立ててフォーマット化する。更に、ＦＥ／ＤＭＡユニット１０２は、頂点を頂点シェイダー（図示せず）に入力するための要素組み立ても行う。１つの実施形態において、ＦＥ／ＤＭＡユニット１０２はまた、頂点キャッシュまたはストリームアセンブリ先入れ先出し方式（ＦＩＦＯ）バッファとして構成できるバッファ（図２の説明を参照）も含む。キャッシュまたはストリームアセンブリバッファの出力は、フォーマット／変換ユニット（図示せず）に結合され、フォーマット／変換ユニットは頂点シェイダーのために種々の要素を組み立てる。頂点シェイダーはこの技術において知られているのでその機能の更なる詳細はここでは説明しない。
【００１０】
図２は、図１のコンピュータグラフィックスシステム１００のＦＥ／ＤＭＡユニット１０２の１つの実施形態の模式ブロック図を示している。図示されているＦＥ／ＤＭＡユニット１０２はアドレス変換ロジック１０６とキャッシュ（またはバッファ）１１６を含む。１つの実施形態において、キャッシュ１１６はＧＰＵ１０４による処理と、表示装置１１０上での表現のために頂点を格納する。
【００１１】
アドレス変換ロジック１０６は、アドレス予測ロジック１１８とアドレス先取りロジック１２０を含む。アドレス変換ロジック１０６の他の実施形態は、図２に示されているよりもより少ないまたはより多いロジックブロックを含むことができる。１つの実施形態において、アドレス変換ロジック１０６はアドレス予測ロジック１１８および／またはアドレス先取りロジック１２０を起動して、現在のデータブロックの仮想アドレスに基づいて予測仮想アドレスのための仮想アドレス変換を先取りする。
【００１２】
特に、アドレス予測ロジック１１８は、ＧＰＵ１０４のようなプロセッサにより処理される演算のタイプに基づいて予測仮想アドレスを予測するように構成される。例としての演算のタイプには基本形描画およびインデックス基本形描画演算が含まれる。別の例としての演算にはメモリコピー、または移動演算がある。
【００１３】
演算のタイプに依存して、アドレス予測ロジック１１８は、現在のデータブロックの後の次のデータブロックに基づいて、予測仮想アドレスとして次の順次仮想アドレスを予測する。これは、予測アドレスが後の物理アドレスなので、順方向アドレス予測と称される。または、アドレス予測ロジック１１８は、現在のデータブロックの前の前回のデータブロックに基づいて、予測仮想アドレスとして前回の順次仮想アドレスを予測する。これは、予測アドレスが前回の物理アドレスなので、逆方向アドレス予測と称される
【００１４】
１つの実施形態において、アドレス先取りロジック１２０はアドレス変換ソースから仮想アドレス変換を先取りするように構成される。アドレス変換ソースの例は、トランスレーションルックアサイドバッファ（ＴＬＢ）である。アドレス変換ソースの別の例は、図１のコンピュータグラフィックスシステム１００のホストメモリ１１２のような、補助格納装置である。
【００１５】
アドレス先取りロジック１２０はまた、現在のデータブロックに対する仮想／物理アドレス変換とほぼ同時に仮想アドレス変換を先取りするように構成される。１つの実施形態において、アドレス変換ロジック１０６は現在のデータブロックに対する仮想／物理アドレス変換をフェッチし、予測仮想アドレスに対する仮想アドレス変換を先取りする、単一アドレス変換要求を発する。またはアドレス変換ロジック１０６は、現在のデータブロックに対する仮想／物理アドレス変換をフェッチし、予測仮想アドレスに対する仮想アドレス変換を先取りする、別個のアドレス変換コマンドを発することができる。いくつかの実施形態においては、アドレス変換ロジック１０６は、複数の仮想アドレス変換をほぼ同時に先取りする１つまたは２つ以上のコマンドを発することができる。複数の仮想アドレス変換は複数の予測仮想アドレスに対応する。予測仮想アドレスは現在のデータブロックの仮想アドレスに基づいている。１つの実施形態において、予測仮想アドレスに対する先取りされた仮想アドレス変換はキャッシュ１１６に格納される。
【００１６】
図３は、仮想／物理メモリアドレスマッピング１３０の１つの実施形態の模式図を示している。便宜上、仮想および物理メモリブロックはページと称する。１つの実施形態においてページはサイズが約４ＫＢである。しかし、他の実施形態は、従来のページ以外のサイズのメモリのブロックまたはチャンクを使用できる。また、ここで使用される約束事として、仮想メモリアドレスページまたはブロックは「ＰＶ」として示し、物理メモリアドレスページまたはブロックは「ＰＰ」として示す。
【００１７】
図示されている仮想／物理メモリアドレスマッピング１３０は、ＰＶ０からＰＶ（Ｎ−１）として特定されている複数の仮想ページ１３２を示している。１つの実施形態において、これらの仮想ページ１３２はメインメモリ１０８に常駐している。これらの仮想ページ１３２のそれぞれは対応する仮想メモリアドレスを有する。図示されている仮想／物理メモリアドレスマッピング１３０はまた、ＰＰ０からＰＰ（Ｍ−１）として特定される複数の物理ページ１３４も示している。１つの実施形態において、これらの物理ページ１３４はホストメモリ１１２に常駐している。これらの物理ページ１３４のそれぞれは対応する物理メモリアドレスを有する。
【００１８】
図３から、連続する仮想ページ１３２は非連続物理ページ１３４と相関付けられることが分かる。例えば、仮想ページＰＶ０は物理ページＰＰ２に対応し、仮想ページＰＶ１は物理ページＰＰ（Ｊ＋１）に対応し、仮想ページＰＶ２は物理ページＰＰ（Ｋ＋２）に対応する。従来のメモリマッピングのようなこのタイプの非連続マッピングスキームを示す仮想／物理メモリアドレスマッピング１３０に対しては、効果的なアドレス変換予測および先取りすることは実装するのが極端に困難である。更に、可能であってもそのような実装のコストは現実的でないほど高価なものになる。しかし、より連続しているマッピングスキームを示す仮想／物理メモリアドレスマッピングに対しては、アドレス変換予測および先取りすることを実装することは有効である。コンピュータグラフィックスシステム１００は、少なくともいくつかの仮想および物理メモリアドレスに対してより連続しているマッピングスキームを使用するシステムの例である。また、コスト効果がある、アドレス変換予測と先取りすることを実装できる。
【００１９】
図４は、仮想／物理変換アーキテクチャ１４０の１つの実施形態の模式ブロック図を示している。１つの実施形態において、仮想／物理変換アーキテクチャ１４０は、仮想メモリアドレスを物理メモリアドレスに変換するために使用される。図示されている仮想／物理変換アーキテクチャ１４０は、トランスレーションルックアサイドバッファ（ＴＬＢ）１４２と、ページテーブル１４４と、変換データ１４６を含む。１つの実施形態において、ＴＬＢ１４２は仮想メモリアドレスを受け取る。ＴＬＢ１４２におけるエントリーが仮想メモリアドレスに対応する場合は、ＴＬＢ１４２は、仮想メモリアドレスがマッピングされた対応する物理メモリアドレスを出力する。それ以外で、ＴＬＢ１４２が要求された仮想／物理変換を含まない場合は、ＴＬＢ１４２は例えばローカルメモリ１０８に格納されたページテーブル１４４からその変換を要求する。ページテーブル１４４が要求された変換を含む場合はＴＬＢ１４２は変換を格納して対応する物理メモリアドレスを出力する。ページテーブル１４４が要求された変換を含まない場合は、ページテーブルは例えばホストメモリ１１２に格納された変換データ１４６にアクセスする。成功すればページテーブル１４４は要求されたデータをＴＬＢ１４２に戻し、ＴＬＢ１４２は対応する物理メモリアドレスを出力する。それ以外は、示されている仮想／物理変換アーキテクチャ１４０はエラーを発生する。他の実施形態は、仮想メモリアドレスを物理メモリアドレスに変換するためにより多くのまたは少ない演算を実行できる。
【００２０】
図５は、仮想ページ１３２をホストメモリ１１２からローカルメモリ１０８に移動するためのメモリコピー演算１５０の１つの実施形態の模式図を示している。このタイプの演算は移動演算と称される。ホストメモリ１１２とローカルメモリ１０８の間の矢印は、仮想ページ１３２がホストメモリ１１２からローカルメモリ１０８に移動されることを示している。メモリ・コピー・アドレス・ストリームの順番（つまり、仮想ページが移動される順番）は、矢印に隣接するページ識別子により示されている。特に、ホストメモリ１１２からローカルメモリ１０８に移動された第１仮想ページ１３２は仮想ページＰＶ０であり、その後に仮想ページＰＶ１、ＰＶ２、ＰＶ３と続く。
【００２１】
メモリコピー演算１５０を実装するために、アドレス変換ロジック１０６は後続の仮想／物理アドレス変換を予測し先取りできる。例えば、アドレス変換ロジック１０６は仮想ページＰＶ０に対応する仮想メモリアドレスを変換でき、ほぼ同時に仮想ページＰＶ１に対する仮想アドレス変換を先取りできる。別の実施形態において、アドレス変換ロジック１０６は複数の仮想アドレス変換を同時に予測し先取りできる。
【００２２】
図６は、メモリコピー演算１５０の別の実施形態の模式図を示している。特に、図６に示されているメモリコピー演算１５０は、仮想ページ１３２をホストメモリ１１２からローカルメモリ１０８に反対の順序でコピーする。言い換えれば、ホストメモリ１１２からローカルメモリ１０８へ移動される第一仮想ページ１３２は仮想ページＰＶ５であり、その後に仮想ページＰＶ４、ＰＶ３、ＰＶ２が続く。
【００２３】
図６のメモリコピー演算１５０を実装するために、アドレス変換ロジック１０６は後続の仮想／物理アドレス変換を予測し先取りできる。例えば、アドレス変換ロジック１０６は仮想ページＰＶ５に対応する仮想メモリアドレスを変換でき、ほぼ同時に仮想ページＰＶ４に対する仮想アドレス変換を予測し先取りできる。別の実施形態において、アドレス変換ロジック１０６は複数の仮想アドレス変換を同時に予測し先取りできる。
【００２４】
図７は、頂点バッファアーキテクチャ１６０の１つの実施形態の模式図を示している。図示されている頂点バッファアーキテクチャ１６０は、インデックスバッファ１６２と、頂点バッファ１６４と、ローカルメモリ１０８を含む。１つの実施形態において、インデックスバッファ１６２と頂点バッファ１６４は、実際には、ローカルメモリ１０８に格納される。
【００２５】
頂点バッファ１６４は、対象物の一部、対象物全体、または複数の対象物を表現する頂点の集合体を含む。インデックスバッファ１６２は、コンピュータグラフィックスシステム１００がインデックスモードで動作するとき、例えば、インデックス基本形描画コマンドを実践するときに使用される。コンピュータグラフィックスシステム１００が頂点モードで動作するとき、例えば、基本形描画コマンドを実践するときは、インデックスバッファ１６２は省略されるかまたは無視される。
【００２６】
頂点モードにおけるコンピュータグラフィックスシステム１００の演算の例として、基本形描画コマンドが発せられて２つの三角形が描画される。２つの要求された三角形を描画するために、ＦＥ／ＤＭＡユニット１０２は頂点バッファ１６４から頂点を順番に読み込む。３頂点の連続するセットは三角形を表現する。従って、第１三角形は頂点Ｖ０、Ｖ１、およびＶ２を含むことになる。第２三角形は、頂点Ｖ３、Ｖ４、およびＶ５を含むことになる。更なる例として、頂点Ｖ０〜Ｖ５は下記の座標が与えられる。
【表１】
2008282396.tif 000003
【００２７】
頂点Ｖ０〜Ｖ５に対する座標リストを頂点モードで使用すると、第１三角形は頂点（−１，−１）、（−１，１）、および（１，１）を含むことになる。第２三角形は、頂点（１，−１）、（−１，−１）、および（１，１）を含むことになる。頂点モードの実装は、ある頂点は頂点バッファ１６４で複製されるので、複製的であるということに留意されたい。例えば、頂点Ｖ０とＶ４に対する座標は同じでありＶ２とＶ５に対する座標は同じである。
【００２８】
一般的に、対象物は三角形メッシュまたは三角形ストリップによりモデル化される。従って、多数の三角形は同じ頂点を共有する。１つの実施形態において、コンピュータグラフィックスシステム１００は、お互いに接近している三角形を同じ頂点で描画することによりこの利点を利用するように設計されている。オンチップキャッシュ１１６を使用すると、同じ頂点はメモリ帯域と頂点処理を節約するために複数回使用できる。そのため、インデックスモードにおいては、インデックスバッファ１６２からのインデックスは頂点バッファ１６４内の頂点を直接使用する代わりに、頂点バッファ１６４内の対応する頂点を指し示すために使用できる。このようにして、Ｖ４とＶ５に対する複製座標は頂点バッファ１６４から省略できる。上述した頂点Ｖ０〜Ｖ５による三角形と同じ三角形を描画するために、インデックスバッファ１６２は、頂点Ｖ４とＶ５が頂点Ｖ０とＶ２の複製であるため、単に頂点Ｖ０〜Ｖ３を参照できる。例として、インデックスバッファ１６２と頂点バッファ１６４は下記を含むことができる。
【表２】
2008282396.tif 000004
【００２９】
命名法の問題として、インデックスバッファ１６２と頂点バッファ１６４を、インデックスバッファ１６２と頂点バッファ１６４内に格納された内容から個々にインデックスを付けるために使用されるタグを区別することは有効である。１つの実施形態において、タグ０〜Ｎをインデックスバッファ１６２と共に使用して、インデックスバッファ１６２内の特別なエントリーを参照できる。インデックスバッファ１６２の実際の内容は、単に、頂点バッファ１６４にインデックスを付けるために使用されるタグへのポインタであってよい。言い換えれば、インデックスタグ０はインデックスバッファ１６２内の要素０を参照でき、インデックスバッファ１６２は頂点バッファ１６４を参照するための頂点タグＶ０を格納する。同様に、頂点タグＶ０〜ＶＮ−１を頂点バッファ１６４と共に使用し頂点バッファ１６４内の特別なエントリーを参照するために使用でき、一方、頂点バッファ１６４の実際の内容は特別な座標を含む。言い換えれば、タグＶ０は頂点バッファ１６４内の第１要素を参照し、頂点バッファ１６４は、例えば、座標（−１，−１）を格納する。他の実施形態を実装することもでき、他の命名法がここで記述した実施形態および命名法の代わりにまたはそれに追加して使用できる。
【００３０】
図示されている頂点バッファアーキテクチャ１６０はまた、複数の頂点１６４をローカルメモリ１０８内の単一仮想ページ１３２（またはブロック）に格納できることを示している。例えば、頂点Ｖ０〜Ｖ３は仮想ページＰＶ０に格納され、頂点Ｖ４から開始する複数の頂点は仮想ページＰＶ１に格納される。そのため、少なくとも１つの実施形態においては、頂点は連続する仮想ページ１３２に順番に格納される。また、いくつかの実施形態においては、連続する仮想ページ１３２は連続する物理ページ１３４にマッピングされる。
【００３１】
図８は、頂点キャッシュアーキテクチャ１７０の１つの実施形態の模式図を示している。１つの実施形態において、ＦＥ／ＤＭＡユニット１０２のキャッシュ１１６は頂点キャッシュ１７２を実装して、１つまたは２つ以上のグラフィッカルコマンドに対応する頂点を格納する。矢印に隣接して示されている頂点ストリームは、頂点がそれらが頂点バッファ１６４に格納されるのと同じ順番、つまり、Ｖ０、Ｖ１、Ｖ２、という順番で頂点キャッシュ１７２に読み込むことができることを示している。頂点が、ローカルメモリ１０８の連続する仮想ページ１３２に位置し、仮想ページ１３２がホストメモリ１１２の連続する物理ページ１３４に対応する場合は、頂点ストリーム１７０はホストメモリ１１２の連続する物理ページ１３４に対応する。そのため、仮想／物理アドレス変換は連続的に進めることができ、アドレス予測ロジック１１８とアドレス先取りロジック１２０は、相対的に高い有効性を伴って連続的に仮想アドレス変換を予測して先取りできる。
【００３２】
頂点キャッシュ１７２は、頂点バッファ１６４に格納されている頂点データの少なくともいくつかへのより高速なアクセスを促進する。特に、頂点キャッシュ１７２は特別な描画コマンドに対して、頂点のいくつかまたはすべてを格納できる。各コマンドは１つの対象物に対応する。一般的に、対象物の特性は対象物それ自身内では変化しない。そのため、対象物をモデル化するために使用される頂点のすべては、典型的には同数の要素を有し、要素は同じサイズを有する。例えば、対象物に対する描画コマンドは８つの頂点を含むことができる。各頂点は１６の要素を含むことができる。各要素のサイズは１６バイトであってよい。従って、８つの頂点のそれぞれは２５６バイトのサイズを有することができ、対象物は、約２，０４８バイトの合計サイズを有することができる。他の対象物は、異なる数の頂点、異なる数の頂点当たりの要素、または異なる要素サイズを使用できる。
【００３３】
図９は、仮想メモリアドレス変換の先取り予測方法１８０の１つの実施形態の模式フローチャート図を示している。先取り予測方法１８０のいくつかの実施形態が、図１のコンピュータグラフィックスシステム１００と連係して実装できる。先取り予測方法１８０の他の実施形態は、コンピュータグラフィックスシステムの他のタイプと連係して実装できる。
【００３４】
図示されている先取り予測方法１８０において、アドレス変換ロジック１０６は要求された仮想アドレスに対応する物理アドレスをフェッチする（１８２）。１つの実施形態において、この演算は図４の仮想／物理変換アーキテクチャ１４０を使用して実践される。
【００３５】
アドレス変換ロジック１０６が仮想／物理アドレス変換をフェッチする（１８２）のと、ほぼ同時にまたはその少し後に、アドレス先取りロジック１２０は予測仮想アドレスに対する物理アドレスを先取りする（１８４）。１つの実施形態において、アドレス予測ロジック１１８は予測仮想アドレスを予測する。実装された描画コマンドのタイプに依存して、アドレス予測ロジック１１８は予測仮想アドレスとして前回のアドレスまたは後続のアドレスを予測できる。
【００３６】
そして、コンピュータグラフィックスシステム１００は、要求された仮想アドレスに対応する現在のページのデータの演算を行う（１８６）。アドレス変換ロジック１０６は、別のページのデータに対する要求がないかを判断する（１８８）ことにより、別の仮想アドレス変換に対する要求を監視し続ける。別のページのデータに対する要求がなければ、コンピュータグラフィックスシステム１００は現在のページのデータの演算を続ける（１８６）。別のページのデータに対する要求がある場合は、アドレス変換ロジック１０６は要求されたページに対する仮想アドレスがキャッシュ１１６内にあるかを判断する。
【００３７】
要求されたページに対する仮想アドレスが予測仮想アドレスと同じ場合は、上記の先取り演算（１８４）のため仮想／物理アドレス変換は既にキャッシュ１１６内にある。従って、アドレス変換ロジック１０６は次の予測仮想アドレスのための物理アドレスを先取りする（１８４）。このようにして、アドレス変換ロジック１０６は、要求されたアドレス変換がすでにキャッシュ１１６内にあっても、アドレス変換ロジック１０６が別の仮想／物理アドレス変換に対する要求を受け取るたびに予測仮想アドレスに対する仮想アドレス変換を先取りし続ける。
【００３８】
または、要求されたページに対する仮想アドレスがキャッシュ１１６内にない場合は、アドレス変換ロジック１０６は要求された仮想アドレスに対する物理アドレスを先取りする（１８２）。先取り予測方法１８０はこのようにして続けられる。
【００３９】
図１０は、図９の先取り予測方法１８０の別の実施形態の模式フローチャート図を示している。便宜上、図１０に示されている演算のいくつかは図９に示されている演算と同じであり、図９で上述されている。しかし、図９の先取り演算１８４は図１０における異なる演算と置き換えられている。特に、図１０に示されている実施形態はアドレス変換の方向を判定する１９２ａための演算を実装する。例えば、アドレス予測ロジック１１８は要求されたアドレス変換のための仮想アドレスが増加しているかまたは減少しているかを判定できる。１つの実施形態において、アドレス変換は基本形描画、またはインデックス基本形描画コマンドの実行との連係において増加するのみである。別の実施形態においては、アドレス変換はメモリコピーコマンドの実行と連係して増加または減少する。
【００４０】
アドレス予測ロジック１１８が、アドレス変換が減少していると判断した場合は、アドレス先取りロジック１２０は前回の仮想アドレスのための物理アドレスを先取りする（１９４）。それ以外で、アドレス予測ロジック１１８がアドレス変換は増加していると判断すると、アドレス先取りロジック１２０は次の仮想アドレスに対する物理アドレスを先取りする（１９６）。そして、図示されている先取り予測方法１８０は上記の演算を継続する。
【００４１】
先取り予測方法１８０の実施形態は、ソフトウェア、ファームウェア、ハードウェア、または、そのある組合せにより実装できるということに留意されたい。更に、先取り予測方法１８０のいくつかの実施形態は、上記の演算に関連する１つまたは２つ以上のアルゴリズムのハードウェアまたはソフトウェア表現を使用して実装できる。例えば、ソフトウェア、ハードウェア、またはソフトウェアとハードウェアの組合せを実装して予測仮想アドレスを予測できる。１つの実施形態において、アルゴリズムのソフトウェアおよび／またはハードウェア実装は予測仮想アドレスのための仮想／物理アドレス変換を先取りする。
【００４２】
上記に説明したように、ここで説明したシステムと方法の実施形態は仮想メモリアドレス変換の性能を高める方法を提供する。更に、いくつかの実施形態はＧＰＵ１０４の性能を改善しそのコストを削減する。他の実施形態は他の有効な使用法を提供または提示できる。
【００４３】
本発明の実施形態はまた中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、またはマイクロプロセッサのような、コンピュータプロセッサにより実行される多数の関数も含むことができる。マイクロプロセッサは、特別なタスクを定義するマシン読取可能ソフトウェアコードを実行することにより、特別なタスクを実行するように構成された特殊または専用マイクロプロセッサであってよい。マイクロプロセッサはまた、直接メモリアクセスモジュール、メモリ格納装置、インターネット関連ハードウェア、およびデータ送信に関連する他の装置のような他の装置を作動およびそれらと通信するようにも構成できる。ソフトウェアコードは、Ｊａｖａ（登録商標）、Ｃ＋＋、ＸＭＬ（拡張マークアップ言語）、および、ここで記載されたことに関連する関数演算を実行することを要求される装置の演算に関連する関数を定義するために使用できる他の言語のような、ソフトウェアのフォーマットを使用して構成できる。コードは異なる形式およびスタイルで書くことができ、その多くはこの技術に精通した者には知られている。ソフトウェアプログラムの異なるコードフォーマット、コード構成、スタイルおよび形式、およびコードを構成して、マイクロプロセッサの演算を定義する他の手段を実装できる。
【００４４】
本発明を利用する、コンピュータサーバーのような異なるタイプのコンピュータにおいては、ここで記載した関数のいくつかまたはすべてを実行する間に情報を格納および取り出す異なるタイプのメモリ装置が存在する。いくつかの実施形態においては、データが格納されるメモリ／格納装置はプロセッサの外側にある別個の装置であってもよく、または、単一の基板上で接続された構成要素のように、メモリまたは格納装置が同じ集積回路上に位置するモノリシックな装置に構成されてもよい。キャッシュメモリ装置は、頻繁に格納および取り出される情報に対する便利な格納位置としてＣＰＵまたはＧＰＵによる使用のためにコンピュータに含まれることもよくある。同様に、永続的メモリもまた、中央処理ユニットにより頻繁に取り出される情報を維持するためにそのようなコンピュータでよく使用されるが、キャッシュメモリとは異なり永続的メモリ内では情報はあまり変更されない。メインメモリもまた、中央処理ユニットにより実行されるときに、ある関数を実行するように構成されたデータおよびソフトウェアアプリケーションのようなより大きな量の情報を格納および取り出すために普通は含まれる。これらのメモリ装置は、ランダムアクセスメモリ（ＲＡＭ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）、フラッシュメモリ、および中央処理ユニットが情報を格納および取り出すためにアクセスできる他のメモリ格納装置として構成できる。実施形態は、普通に使用されるこれらのメモリ装置それぞれに情報を格納またはそれぞれから情報を取り出すためのプロトコルと同様に、種々のメモリおよび格納装置により実装できる。
【００４５】
ここでの方法の演算は特別な順序で示され説明されたが、各方法の演算の順序は変更することができ、それによりある演算は逆の順序で実行でき、または、ある演算は少なくとも部分的には他の演算と同時に実行できる。別の実施形態において、指令または個々の演算のサブ演算は間欠的および／または交互の方法で実践できる。
【００４６】
本発明の具体的な実施形態が説明され示されてきたが、本発明は、この説明され図示された部分の特別な形式または装置に制限されない。本発明の範囲は、ここに付随する請求項とその均等物により定義される。
【００４７】
説明を通して、類似の参照番号が、類似の要素を特定するために使用されている。
【図面の簡単な説明】
【００４８】
【図１】図１は、コンピュータグラフィックスシステムの１つの実施形態の模式ブロック図を示している。
【図２】図２は、図１のコンピュータグラフィックスシステムのＦＥ／ＤＭＡユニットの１つの実施形態の模式ブロック図を示している。
【図３】図３は、仮想／物理メモリアドレスマッピングの１つの実施形態の模式図を示している。
【図４】図４は、仮想／物理変換アーキテクチャの１つの実施形態の模式ブロック図を示している。
【図５】図５は、仮想ページを、ホストメモリからローカルメモリに移動するための、メモリコピー演算の１つの実施形態の模式図を示している。
【図６】図６は、メモリコピー演算の別の実施形態の模式図を示している。
【図７】図７は、頂点バッファアーキテクチャの１つの実施形態の模式図を示している。
【図８】図８は、頂点キャッシュアーキテクチャの１つの実施形態の模式図を示している。
【図９】図９は、仮想メモリアドレス変換の、先取り予測方法の１つの実施形態の模式フローチャート図を示している。
【図１０】図１０は、図９の先取り予測方法の別の実施形態の模式フローチャート図を示している。
【図１】
2008282396.tif 000005
【図２】
2008282396.tif 000006
【図３】
2008282396.tif 000007
【図４】
2008282396.tif 000008
【図５】
2008282396.tif 000009
【図６】
2008282396.tif 000010
【図７】
2008282396.tif 000011
【図８】
2008282396.tif 000012
【図９】
2008282396.tif 000013
【図１０】
2008282396.tif 000014
【外国語明細書】
2008282396.tif 000015
2008282396.tif 000016
2008282396.tif 000017
2008282396.tif 000018
2008282396.tif 000019
2008282396.tif 000020
2008282396.tif 000021
2008282396.tif 000022
2008282396.tif 000023
2008282396.tif 000024
2008282396.tif 000025
2008282396.tif 000026
2008282396.tif 000027
2008282396.tif 000028
2008282396.tif 000029
2008282396.tif 000030
2008282396.tif 000031
2008282396.tif 000032
2008282396.tif 000033
2008282396.tif 000034
2008282396.tif 000035
2008282396.tif 000036
2008282396.tif 000037
2008282396.tif 000038
2008282396.tif 000039
2008282396.tif 000040
2008282396.tif 000041
2008282396.tif 000042