(57)【特許請求の範囲】
【請求項１】
バスに接続されたホストプロセッサ、該バスに接続された物理メモリ、及び周辺グラフィックデバイスを有するコンピュータシステムにおける、該周辺グラフィックデバイスに対して該物理メモリ内に記憶されるグラフィックバッファのページへのアクセスを提供する、コンピュータによって実行される方法であって、
（ａ）該物理メモリのページを該グラフィックバッファに割り当て、該物理ページが該物理メモリ内で不連続であり得る、コンピュータによって実行される工程と、
（ｂ）該グラフィックバッファのページそれぞれの論理アドレス及び物理アドレスの間のマッピングを維持するグラフィックデバイスページテーブルを構築し、前記グラフィックデバイスページテーブルは複数のエントリを含み、前記各エントリは前記グラフィックバッファの論理アドレスとそれに対応する物理アドレスとを含み、該構築する工程が、該ホストプロセッサによって実施され、該周辺グラフィックデバイスにアクセスが不可能なプロセッサページテーブルを読み出す工程を含む、コンピュータによって実行される工程と、
（ｃ）前記グラフィックバッファの全ページが前記物理メモリ内で連続するかどうかを判断する工程と、
（ｄ）前記グラフィックバッファの前記ページの全てが物理メモリ内で連続することを条件に、前記周辺グラフィックデバイスが前記グラフィックバッファにアクセスできるように前記グラフィックバッファのベース物理アドレスを供給する工程と、
前記グラフィックバッファの前記ページの全てが前記物理メモリ内で連続する、というわけではないことを条件に、前記周辺グラフィックデバイスが前記グラフィックバッファにアクセスできるように前記グラフィックデバイスページテーブルのベース物理アドレスを前記周辺グラフィックデバイスに供給する工程と、
を含む、コンピュータによって実行される方法。
【請求項２】
前記グラフィックバッファの前記ページの全てが前記物理メモリ空間内で連続するかどうかを判断する前記工程が、前記グラフィックバッファのページそれぞれについて、現在アクセスされているページの該物理アドレスが前にアクセスされたページの前記物理アドレス及び前記コンピュータシステムによって使用されたページサイズの和と同一であるかどうかを判断する工程を含む、請求項１に記載のコンピュータによって実行される方法。
【請求項３】
バスに接続されたホストプロセッサ、該バスに接続された物理メモリ、及び周辺グラフィックデバイスを有するコンピュータシステムにおける、該周辺グラフィックデバイスに対して該物理メモリ内に記憶されるグラフィックバッファのページへのアクセスを提供する、コンピュータによって実行される方法であって、
（ａ）該物理メモリのページを該グラフィックバッファに割り当て、該物理ページが該物理メモリ内で不連続であり得る、コンピュータによって実行される工程と、
（ｂ）該グラフィックバッファのページそれぞれの論理アドレス及び物理アドレスの間のマッピングを維持するグラフィックデバイスページテーブルを構築し、前記グラフィックデバイスページテーブルは複数のエントリを含み、前記各エントリは前記グラフィックバッファの論理アドレスとそれに対応する物理アドレスとを含み、該構築する工程が、該ホストプロセッサによって実施され、該周辺グラフィックデバイスにアクセスが不可能なプロセッサページテーブルを読み出す工程を含む、コンピュータによって実行される工程と、
（ｃ）前記グラフィックバッファの全ページが前記物理メモリ内で連続するかどうかを判断する工程と、
（ｄ）前記グラフィックバッファの前記ページの全てが物理メモリ内で連続することを条件に、前記周辺グラフィックデバイスが前記グラフィックバッファにアクセスできるように前記グラフィックバッファのベース物理アドレスを供給する工程と、
前記グラフィックバッファの前記ページの全てが前記物理メモリ内で連続する、というわけではないことを条件に、
（１）前記グラフィックデバイスページテーブルの論理アドレス及び物理アドレスを前記グラフィックバッファと関連するユーザハンドルによって指標化されたデータベースに記憶する工程と、
（２）前記グラフィックバッファの前記アドレス全てが前記物理メモリ内で連続するわけではないことを表示するグラフィックバッファの物理アドレスの指定ビットを設定する工程と、
（３）前記グラフィックバッファの物理アドレスを前記周辺グラフィックデバイスに転送する工程と、
（４）前記グラフィックバッファの物理アドレスの前記指定ビットが設定されたかどうかを前記周辺グラフィックデバイスが判断する工程と、
（５）前記グラフィックバッファの物理アドレスの前記ビットが設定されていることを条件に、前記グラフィックバッファの不連続ページにアクセスするために前記グラフィックデバイスページテーブルを前記周辺グラフィックデバイスが使用する工程と、を実行する工程と、
を含む、コンピュータによって実行される方法。
【請求項４】
バスに接続されたホストプロセッサ、該バスに接続された物理メモリ、及び周辺グラフィックデバイスを含むコンピュータシステムであって、該物理メモリが、該周辺グラフィックデバイスに対して該物理メモリ内に記憶されるグラフィックバッファのページへのアクセスを提供する方法を、該コンピュータシステムに実行させるためのプログラム命令を、該物理メモリは含み、該方法が、
前記周辺グラフィックデバイスにアクセスが不可能なプロセッサページテーブルの開始仮想アドレスにアクセスする工程と、
前記プロセッサページテーブルの該開始仮想アドレスを、ユーザアプリケーションによる進行を許可するために、開始論理アドレスへマッピングする工程と、
該グラフィックバッファのページそれぞれの論理アドレス及び物理アドレスの間のマッピングを維持するグラフィックデバイスページテーブルに論理メモリブロック及び物理メモリブロックを割り当てる工程と、
前記グラフィックバッファのページそれぞれの論理アドレスに連続してアクセスするために前記プロセッサページテーブルを使用し、前記グラフィックバッファのページそれぞれの対応する物理アドレスを判断する工程と、
前記グラフィックバッファのページそれぞれの論理アドレス及び物理アドレスを前記メモリブロックに記憶する工程と、
前記グラフィックバッファの前記ページの全てが前記物理メモリ内で連続するかどうかを判断する工程と、
前記グラフィックバッファの前記ページの全てが物理メモリ空間内で連続することを条件に、前記周辺グラフィックデバイスが前記グラフィックバッファにアクセスできるように前記グラフィックバッファのベース物理アドレスを供給する工程と、
前記グラフィックバッファの前記ページの全てが前記物理メモリ内で連続する、というわけではないことを条件に、前記周辺グラフィックデバイスが前記グラフィックバッファにアクセスできるように前記グラフィックデバイスページテーブルのベース物理アドレスを前記周辺グラフィックデバイスに供給する工程と、
を含む、コンピュータシステム。
【請求項５】
前記グラフィックバッファの前記ページの全てが前記物理メモリ空間内で連続するかどうかを判断する前記工程が、前記グラフィックバッファのページそれぞれについて、現在アクセスされているページの物理アドレスが前にアクセスされたページの物理アドレス及び前記コンピュータシステムによって使用されたページサイズの和と同一であるかどうかを判断する工程を含む、請求項４に記載のコンピュータシステム。
【請求項６】
該方法は、前記グラフィックバッファの前記ページの全てが前記物理メモリ内で連続する、というわけではないことを条件に、
（１）前記グラフィックデバイスページテーブルの論理アドレス及び物理アドレスを前記グラフィックバッファと関連するユーザハンドルによって指標化されたデータベースに記憶する工程と、
（２）前記グラフィックバッファの前記アドレス全てが前記物理メモリ内で連続するわけではないことを表示するグラフィックバッファの物理アドレスの指定ビットを設定する工程と、
（３）前記グラフィックバッファの物理アドレスを前記周辺グラフィックデバイスに転送する工程と、
（４）前記グラフィックバッファの物理アドレスの前記指定ビットが設定されたかどうかを前記周辺グラフィックデバイスが判断する工程と、
（５）前記グラフィックバッファの物理アドレスの前記ビットが設定されていることを条件に、前記グラフィックバッファの不連続ページにアクセスするために前記グラフィックデバイスページテーブルを前記周辺グラフィックデバイスが使用する工程と、を実行する工程と、
をさらに含む請求項４に記載のコンピュータシステム。
【請求項７】
ホストプロセッサ、物理メモリ、及び周辺グラフィックデバイスを有するコンピュータシステムにおいて、該周辺グラフィックデバイスに対してグラフィックバッファのページへのアクセスを提供するコンピュータによって実行される方法であって、該方法が、
所定のサイズのグラフィックバッファにメモリを割り当てるためのリクエストを受けるコンピュータによって実行される工程と、
該所定のサイズ内での、前記コンピュータシステムによって使用されるページサイズのページ数を判断するコンピュータによって実行される工程と、
該グラフィックバッファを記憶するための論理メモリ及び物理メモリの第１のメモリブロックを割り当て、該第１のメモリブロックのページが該物理メモリの外部にスワップされることを防ぐために該第１のメモリブロックをロックするコンピュータによって実行される工程と、
該周辺グラフィックデバイスにアクセスが可能なグラフィックデバイスページテーブルを物理メモリ内に構築し、前記グラフィックデバイスページテーブルは複数のエントリを含み、前記各エントリは前記グラフィックバッファの論理アドレスとそれに対応する物理アドレスとを含み、該グラフィックデバイスページテーブルが該グラフィックバッファのページそれぞれの論理アドレス及び物理アドレスを含むコンピュータによって実行される工程と、
該グラフィックバッファの全ページが物理メモリ内で連続するかどうかを判断するコンピュータによって実行される工程と、
前記グラフィックバッファの前記ページの全てが前記物理メモリ空間内で連続することを条件に、前記周辺グラフィックデバイスが前記グラフィックバッファにアクセスできるように前記グラフィックバッファの前記物理アドレスを供給するコンピュータによって実行される工程と、
前記グラフィックバッファの前記ページの全てが前記物理メモリ内で連続する、というわけではないことを条件に、前記周辺グラフィックデバイスが前記グラフィックバッファにアクセスできるように前記グラフィックデバイスページテーブルを供給するコンピュータによって実行される工程と、
を含む、コンピュータによって実行される方法。
【請求項８】
グラフィックデバイスページテーブルを構築する前記工程が、
前記コンピュータシステム内のプロセッサページテーブルの開始仮想アドレスにアクセスし、前記プロセッサページテーブルが前記周辺グラフィックデバイスにアクセスが不可能な工程と、
前記プロセッサページテーブルの該開始仮想アドレスを、ユーザアプリケーションによる進行を許可するために、開始論理アドレスへマッピングする工程と、
前記グラフィックデバイスページテーブルに前記物理メモリ内の第２のメモリブロックを割り当てる工程と、
前記グラフィックバッファのページそれぞれの論理アドレスに連続してアクセスし、前記グラフィックバッファのページそれぞれの対応する物理アドレスを該プロセッサページテーブルから判断し、前記グラフィックバッファのページそれぞれの論理アドレス及び物理アドレスを該第２のメモリブロックに記憶する工程と、
を含む、請求項７に記載のコンピュータによって実行される方法。
【請求項９】
前記周辺グラフィックデバイスが前記グラフィックバッファにアクセスできるように前記グラフィックバッファの前記物理アドレスを供給する前記工程が、
前記グラフィックバッファの物理アドレス及び論理アドレスを前記グラフィックバッファに関連するユーザハンドルによって指標化されたデータベースに記憶する工程と、
前記グラフィックバッファのハンドルにアクセスする工程と、
前記グラフィックバッファの物理アドレスを獲得するために該データベースを使用する工程と、
前記グラフィックバッファの前記物理アドレスを前記周辺グラフィックデバイスに転送する工程と、
を含む、請求項７に記載のコンピュータによって実行される方法。
【請求項１０】
前記周辺グラフィックデバイスが前記グラフィックバッファにアクセスできるように前記グラフィックデバイスページテーブルを供給する前記工程が、
前記グラフィックデバイスページテーブルの物理アドレス及び論理アドレスを前記グラフィックバッファに関連するユーザハンドルによって指標化されたデータベースに記憶する工程と、
前記グラフィックバッファのハンドルにアクセスする工程と、
グラフィックバッファの物理アドレスを獲得するために該データベースを使用する工程と、
前記グラフィックバッファの前記アドレス全てが前記物理メモリ内で連続するわけではないことを表示する前記グラフィックバッファの物理アドレスの指定ビットを設定する工程と、
前記グラフィックバッファの物理アドレスを前記周辺グラフィックデバイスに転送する工程と、
前記周辺グラフィックデバイスが、前記グラフィックバッファの物理アドレスの前記指定ビットが設定されているかどうかを判断する工程と、
前記グラフィックバッファの物理アドレスの前記指定ビットが設定されていることを条件に、前記周辺グラフィックデバイスが前記グラフィックバッファにアクセスするために前記グラフィックデバイスページテーブルを使用する工程と、
を含む、請求項７に記載のコンピュータによって実行される方法。
【請求項１１】
前記グラフィックバッファの前記ページの全てが物理メモリ内で連続するかどうかを判断する前記工程が、前記グラフィックバッファのページそれぞれについて、現在アクセスされているページの物理アドレスが前にアクセスされたページの該物理アドレス及び前記コンピュータシステムによって使用された前記ページサイズの和と同一であるかどうかを判断する工程を含む、請求項７に記載のコンピュータによって実行される方法。
【請求項１２】
該所定のサイズ内での、前記コンピュータシステムによって使用されるページサイズのページの数を判断する前記工程がブールプロセスによって実行され、該ブールプロセスが、
第１のブールＡＮＤ操作を前記グラフィックバッファの前記受け取られた所定のサイズ、及び前記コンピュータシステムによって使用される前記ページサイズについて実施するコンピュータによって実行される工程と、
第１のブールＡＮＤ操作がゼロでない結果を与えることを条件として、前記ページサイズを前記受け取られた所定のサイズに付加するコンピュータによって実行される工程と、
第２のブールＡＮＤ操作を前記所定のサイズ、及び前記コンピュータシステムによって使用される前記ページサイズの論理反転について実施するコンピュータによって実行される工程と、
を含む、請求項７に記載のコンピュータによって実行される方法。
【発明の詳細な説明】
発明の分野
本発明はコンピュータ制御のグラフィックディスプレイシステムの分野に関する。具体的には、本発明は（１）グラフィックバッファが物理メモリ空間内において連続するかどうかを判断し、（２）グラフィックデバイスページテーブルを構築し、よって、グラフィックバッファのページが物理メモリ空間内において連続しない場合は周辺グラフィックデバイスがグラフィックバッファのページを読むことが可能となる、方法に関する。
発明の背景
一般的に、周辺デバイス（例えば、周辺グラフィックデバイス）を有するコンピュータシステムにおいて、周辺デバイスはシステムの物理メモリ部へのアクセスのみを許可されており、仮想では物理メモリマッピングリソースへのアクセスは許可されていない。したがって、周辺デバイスは物理メモリ空間内で連続しないコンピュータシステムのメモリブロックへは、容易にアクセスすることができない。典型的な周辺デバイスは、ベース物理メモリアドレスを使用することによって、ホストコンピュータシステム内に記憶されているメモリブロックにアクセスするように設計されている。周辺デバイスによってアクセスされようとしているメモリブロックが物理メモリ空間内で連続していない場合、そのメモリブロックにアクセスするにはメモリブロックの単なるベース物理アドレスのみでは十分ではない。
メモリ管理システムがホストコンピュータシステム内で動作状態にある場合、ページングが動作状態にあり得、その場合、メモリブロックは物理メモリ空間内で不連続であり得る。ページングは、プログラムまたはデータをページと呼ばれる固定長のブロックに分割する記憶領域割り当て技術（storage allocation technique）であり、主記憶はページフレームと呼ばれる同一長のブロックに分割される。ページフレームは物理メモリの固定された領域を含む。ページはページフレームに記憶されるが、必ずしも連続した状態ではない。ページングスキームにおいて、必要とされれば、データのページは主記憶装置及び補助記憶装置の間でスワップされる。ページングは、補助記憶装置が主記憶装置の１部であるかのようにアドレス指定され得るので、仮想メモリを許可する。ユーザプログラムとデータの一部は補助記憶装置に配置され、オペレーティングシステムは必要に応じてそれらを主記憶装置の外部と内部で自動的にスワップする。ページングを特徴とするメモリ管理システムもページテーブルを採用する。ページテーブルは各論理ページアドレスについて物理アドレスを提供するメモリマップである。周辺デバイスは一般的にページテーブルを含むメモリマップにアクセスする機能を有しない。
ページングを特徴とするメモリ管理システムはＤＯＳベースの保護モードエクステンダであるＥＭＭ３８６．ＥＸＥを含み、且つ種々の他の保護モードオペレーティングシステムを含む。インテル８０３８６マイクロプロセッサの仮想メモリシステムは、例えば、ページング及びセグメンテーションの双方を含む。セグメンテーションは主メモリをセグメントごとに分割する、メモリ管理技術である。主メモリに現在存在していないセグメントが要求された場合、全セグメントが二次メモリから転送される。セグメントに割当てられた物理アドレスはメモリマップ内に維持される。セグメンテーション及びページングの双方が使用される場合、プログラムによって発生するあらゆるメモリアドレスは下記関係（１）に定義される２段階翻訳プロセスを通過する。
仮想アドレスＬ  −→  論理アドレスＮ  −→  物理アドレスＰ        （１）
セグメンテーション無しの場合、Ｌ＝Ｎである。ページング無しの場合、Ｎ＝Ｐである。セグメンテーション及びページングユニットは双方とも、アドレス翻訳に必要な種々のメモリマップの動作状態にある部分を記憶する高速キャッシュメモリを含む。インテル８０３８６マイクロプロセッサに使用されるページサイズは４キロバイトである。
典型的な周辺グラフィックデバイスはベース物理メモリアドレスを使用して、物理メモリ空間内で連続しているメモリブロックにアクセスする。グラフィックデータのブロックサイズが典型的に１ページを越えないことから、１ページより多いページを含むメモリバッファへのアクセスを周辺グラフィックデバイスが典型的には要求しなかったので、本方法論は過去において十分であった。しかし、現在、サイズが１ページを越すグラフィックデータのブロックを処理するためにコンピュータグラフィックシステムが使用されている。したがって、周辺グラフィックデバイスに対してサイズが１ページを越え得るメモリバッファへのアクセスを提供する方法が必要とされている。そのようなメモリバッファは物理メモリ空間内にて不連続であり得るので、周辺グラフィックデバイスに対してメモリバッファへのアクセスを提供する方法が必要とされる。
上記をふまえ、本発明は（１）メモリブロックが物理メモリ空間内で連続しているかどうかを判断する方法、及び（２）物理メモリ内で不連続である場合、周辺デバイスに対してメモリブロックへのアクセスを提供する方法、を提供する。以下の本発明についての議論において、本発明のこれらの、及び他の利点が明らかになる。
発明の要旨
ページング及びセグメンテーションを許可するアーキテクチャを有するコンピュータシステムにおいて、本発明は、周辺グラフィックデバイス（ＰＧＤ）に対してグラフィックバッファのページが物理メモリ空間内で連続または不連続となり得るグラフィックバッファのページへのアクセスを提供する、コンピュータによって実行されるプロセスを提供する。本発明のプロセスはコンピュータによって実行される複数のステップを提供する。はじめに、プロセスは、所定のサイズ及びハンドルのグラフィックバッファに対してメモリを割り当てるようにリクエストを受取る。サイズパラメータ内のページ数は、コンピュータシステムによって使用されるページサイズ及び要求されるバッファサイズに基づいて決定される。
プロセスは、コンピュータシステム内でＤＯＳ保護モードインタフェース（ＤＰＭＩ）サービスが現在動作状態にあるかどうかを判断する。ＤＰＭＩサービスが現在動作状態にない場合、ページングが動作状態になく、グラフィックバッファのページが物理空間内で連続していると見なされる。この場合、２つの周知のステップがＰＧＤに対してグラフィックバッファの連続するページへのアクセスを提供する。これらの２つの周知のステップはグラフィックバッファにメモリを割り当てること及びグラフィックバッファのベースアドレスをユーザハンドルによって指標化されたデータベースに記憶することを含む。
ＤＰＭＩサービスが利用可能であることを条件に、本発明のプロセスはコンピュータシステム内で現在ページングが動作状態にあるかどうかを判断する。ページングが現在動作状態にない場合、グラフィックバッファのページは物理メモリ空間内で連続すると見なされ、上記の２つの周知のステップを介してＰＧＤに対してグラフィックバッファの連続するページへのアクセスが提供される。
ページングが動作状態にある場合、グラフィックバッファのページは物理メモリ空間内で連続または不連続であり得る。その場合、ＰＧＤにグラフィックバッファへのアクセスを提供するため、プロセスは論理メモリ空間内にグラフィックデバイスページテーブル（ＧＤＰＴ）を構築する。連続する物理ページを割り当て得る、またはし得ない周知のメモリ割り当て手順を使用し、グラフィックバッファを格納するため第１のメモリブロックが割り当てられる。第１のメモリブロックは、次に、第１のメモリブロックのスワップを防ぐためにロックされる。ＣＰＵページテーブル（ＣＰＵ／ＰＴ）の開始仮想アドレスがアクセスされる。グラフィックアプリケーションソフトウェアなどのユーザアプリケーションによる進行を許可するため、ＣＰＵ／ＰＴの開始仮想アドレスは開始論理アドレスにマッピングされる。ＧＤＰＴ構築のため第２のメモリブロックが割り当てられる。本発明のプロセスは、グラフィックバッファのページそれぞれの論理アドレスに連続してアクセスし、ＣＰＵ／ＰＴからのグラフィックバッファの物理ページそれぞれに対応する物理アドレスを判断することによって、ＧＤＰＴを構築する。グラフィックバッファのページそれぞれの論理アドレス及び物理アドレスはＧＤＰＴに記憶される。グラフィックバッファの全ページが物理メモリ空間内で連続するかどうかが判断される。
グラフィックバッファの全ページが物理メモリ空間内で連続していることを条件に、グラフィックバッファの物理アドレス及び論理アドレスはユーザハンドルによって指標化されたデータベースに記憶される。グラフィックバッファの全ページが物理メモリ空間内で連続していないことを条件に、ＧＤＰＴの開始物理アドレス及び論理アドレスはユーザハンドルによって指標化されたデータベースに記憶される。グラフィックバッファの物理アドレスの指定ビットはグラフィックバッファの全ページが物理メモリ空間内で連続していないことを表示し、よってＰＧＤへアクセスするためにＧＤＰＴが要求されていることを表示するように設定される。
物理メモリ内でＰＧＤがグラフィックバッファにアクセスする前に、グラフィックバッファのハンドルがアクセスされる。データベースはグラフィックバッファの物理アドレスを獲得するため使用される。グラフィックバッファの物理アドレスは次にＰＧＤに転送される。
ＰＧＤはグラフィックバッファの物理アドレスを獲得する。次に、ＰＧＤはグラフィックバッファの物理アドレスの指定ビットが設定されているかどうかを判断する。グラフィックバッファの物理アドレスの指定ビットが設定されていない場合、グラフィックバッファのページは連続していると見なされ、ＰＧＤはグラフィックバッファにアクセスするためグラフィックバッファの物理アドレスを使用する。グラフィックバッファの物理アドレスの指定ビットが設定されている場合、グラフィックバッファのページは連続していないと見なされ、ＰＧＤはグラフィックバッファにアクセスするため本発明のＧＤＰＴを使用する。
【図面の簡単な説明】
図１は、本発明のプロセスを使用するために、接続された周辺グラフィックデバイス（ＰＧＤ）を含む、例示的なホストコンピュータシステムのブロック図である。
図２Ａは、例示的なホストコンピュータシステム内の仮想、論理、及び物理メモリ空間を表した論理図である。
図２Ｂは、ＣＰＵページテーブル（ＣＰＵ／ＰＴ）、グラフィックデバイスページテーブル（ＧＤＰＴ）、グラフィックバッファ（ＧＢ）、及びそこに含まれるデータベースを含むメモリ空間のブロック図である。
図３Ａ及び３Ｂは、グラフィックバッファ（ＧＢ）のページが物理メモリ空間内で連続しているかどうかを判断し、連続していない場合は、本発明によるＧＤＰＴを構築するための本発明の方法のフロー図である。
図４は、ＰＧＤに対してグラフィックバッファの物理アドレスを提供するための、本発明の方法によるプロセス４００のフロー図である。
図５は、グラフィックバッファのページが物理メモリ空間内で全て連続していない場合にはＤＧＰＴを介してグラフィックバッファにアクセスし、またはグラフィックバッファのページが物理メモリ空間内で全て連続している場合には物理ベースアドレスを介してグラフィックバッファにアクセスをするための、本発明の方法によるプロセス５００のフロー図である。
好ましい実施形態の説明
以下の、本発明についての詳細な説明において、本発明の完全なる理解を提供するため多数の具体的な詳細が提示される。しかし、これらの具体的な詳細なしに、またはその他の素子や方法を使用して、本発明を実施し得ることが当業者には自明である。他の場合には、本発明の局面を不必要に不明瞭にしないため、周知の方法、手順、構成要素、及び回路は詳細には説明されない。
以下の詳細な説明の一部は、手順、論理ブロック、処理、及びコンピュータメモリ内のデータビットでの動作の記号表示の観点から提示される。これらの説明及び表示は、データ処理技術の当業者がその業務内容を当該技術の他の当業者に最も効率的に伝達する手段として使用される。手順、論理ブロック、プロセスなどが含まれ、広義にはある所望の結果に導くための一貫した連続するステップ或いは指示として考えられる。ステップは、物理的な量の物理的な操作を要求するステップである。通常、必ずしもそうでないが、物理的な操作はコンピュータシステムにおいて記憶され、転送され、組み合わされ、比較され、及び他の操作されることが可能な電気的または磁気的な信号という形をとる。便宜上、及び一般的な使用を参照すると、本発明に関しては、これらの信号はビット、値、素子、記号、文字、用語、数字などとして言及される。
しかし、これらの用語全ては物理的操作及び量に関連していると解釈され、単なる便利なラベルとして、及び当該分野では普通に使用される用語として更に解釈される。具体的に述べられなければ以下の議論で明らかなように、本発明の議論全体を通して”処理する”、”マッピングする”、”翻訳する”、”判断する”、”表示する”などの用語を使用する議論は、データを操作及び変換するコンピュータシステム、または同様の電気的なコンピュータデバイスの動作及びプロセスを参照すると理解される。データはコンピュータシステムのレジスタ及びメモリ内における物理的な（電気的な）量を表現し、コンピュータシステムメモリまたはレジスタ、或いは情報記憶装置、伝送デバイスまたはディスプレイデバイスなどにおける物理的な量を同様に表現する他のデータに変換される。
図１を参照し、ホストコンピュータシステム１１２を示す。一般的には、本発明に使用されるホストコンピュータシステム１１２は情報を通信するバス１００、バスに接続され情報及び命令を処理する中央プロセッサ１０１、バス１００に接続されホストプロセッサ１０１に対する情報及び命令を記憶するコンピュータ読み出し可能揮発性メモリユニット１０２（例えば、ランダムアクセスメモリユニット）、バス１００に接続されホストプロセッサ１０１に対する静的情報及び命令を記憶するコンピュータ読み出し可能不揮発性メモリユニット１０３（例えば、読み出し専用メモリ）、バス１００に接続され情報及び命令を記憶する磁気ディスク、または光ディスク及びディスクドライブなどのデータ記憶デバイス１０４、バス１００に接続され情報をコンピュータユーザに対して表示するディスプレイデバイス１０５、及びバス１００に接続される周辺グラフィックデバイス（ＰＧＤ）１０９を含む。１つの例示的な実施形態において、システム１１２は周知のｘ８６アーキテクチャから成る。
ＰＧＤ１０９は、ディスプレイリスト内に見いだされる（グラフィックプリミティブを含み、且つコマンドを与える）一連のディスプレイ命令を実行するディスプレイプロセッサ１１０を含み得る。ディスプレイプロセッサ１１０はデータ及び制御信号を、ディスプレイデバイス１０５上に画像を描くためにディスプレイデバイス１０５をリフレッシュするフレームバッファに供給する。
図２Ａは、図１の例示的なホストコンピュータシステム１１２内の仮想、論理、及び物理メモリ空間を表す論理図である。システム１１２内において、プロセッサ１０１のページング機能を使用して、論理メモリ空間２０２は物理メモリ空間２０３内にマッピングされる。システム１１２のＰＧＤ１０９は典型的に仮想メモリ空間２０２へのアクセスを有さず、むしろ物理メモリ空間２０３へのアクセスを有することが理解される。一般的に、仮想メモリ空間はホストプロセッサ１０１によってのみ容易にアクセスされる。
図２Ｂは例示的なホストコンピュータシステム１１２内におけるメモリ空間２０７のブロック図である。メモリ空間２０７は、その中に記憶されたＣＰＵページテーブル（ＣＰＵ／ＰＴ）２０５、グラフィックデバイスページテーブル（ＧＤＰＴ）２０６、グラフィックバッファ２０８、及びデータベース２０９を含む。グラフィックバッファ２０８は物理メモリ空間２０３内に存在し、論理メモリ空間２０２内にマッピングされる（図２Ａ）。本発明の好ましい実施形態で、グラフィックバッファ２０８は、ディスプレイリスト、テクスチャマップ、データなどのグラフィックデータを含み得、或いは空であり得る。グラフィックバッファ２０８のページは論理メモリ空間２０２内において連続しているが、物理メモリ２０３空間内では連続し得るか、不連続であり得る。グラフィックバッファ２０８のページが物理メモリ２０３空間内において連続するか否かは、例示的なホストコンピュータシステム１１２内においてページングが動作状態にあるか否かによる。ＣＰＵ／ＰＴ２０５は、グラフィックバッファ２０８を含むメモリブロックのアドレスを論理メモリ空間２０２及び物理メモリ空間２０３の間にマッピングする。例示的なホストコンピュータシステム１１２内においてページングが動作状態にない場合、グラフィックバッファ２０８のページの物理アドレスはグラフィックバッファ２０８のページの論理アドレスと同一であり、ＣＰＵ／ＰＴ２０５はグラフィックバッファ２０８のページの論理アドレスを物理アドレスに翻訳する必要がなくなる。
一般的に、例示的なホストコンピュータシステム１１２内のＣＰＵ／ＰＴ２０５は仮想メモリ空間２０１（図２Ａ）のみに常駐し、プロセッサ１０２によってのみアクセス可能である。ＣＰＵ／ＰＴ２０５は一般的に例示的なホストコンピュータ１１２内の論理メモリ空間２０２内においては容易に利用できない。例示的なホストコンピュータシステム１１２内においてページングが動作状態にある場合、グラフィックバッファ２０８のページの物理アドレスはグラフィックバッファ２０８のページの論理アドレスと同一ではない。その場合、ＣＰＵ／ＰＴ２０５はグラフィックバッファ２０８のページの論理アドレスをグラフィックバッファ２０８のページのマッピングされた物理アドレスに翻訳する必要がある。そのとき、物理ページは不連続である可能性がある。
図１のＰＧＤ１０９はＣＰＵ／ＰＴ２０５に容易にアクセスできない。したがって、本発明の一局面は、ＰＧＤ１０９に対して物理メモリ空間２０３内で不連続であり得るグラフィックバッファ２０８のページの物理アドレスへのアクセスを提供するために、グラフィックデバイスページテーブル（ＧＤＰＴ）２０６を構築する。ＧＤＰＴ２０６は、以下に説明される本発明の方法によって論理メモリ空間２０２及び物理メモリ空間２０３内に記憶される。
図３Ａ及び３Ｂは、本発明の方法による、作成されたグラフィックバッファ２０８のページが物理メモリ空間内で連続するかどうかを判断するためのプロセス３００のステップを示すフロー図である。グラフィックバッファ２０８のページが物理メモリ空間内で連続していないことを条件に、プロセス３００はＰＧＤ１０９がグラフィックバッファ２０８のページにアクセスできるようにＧＤＰＴ２０６を構築する。プロセス３００は、システム１１２のコンピュータ読み出し可能メモリユニット内に記憶されるプログラムコードとして実行される。プログラムコードは、以下に説明されるステップを実施するプロセッサ１０１上で実行される。
図３Ａを参照すると、プロセス３００のステップ３０２は、グラフィックバッファ２０８に所定のサイズ及びハンドルのメモリを割り当てるためにユーザリクエストを受けることを必要とする。プロセス３００のステップ３０４は、グラフィックバッファ２０８の所定のサイズ内の、ホストコンピュータシステム１１２によって使用されるサイズのページの数を判断することを必要とする。グラフィックバッファの所定のサイズ内のページの数は、最も近いページに切上げる方法によって判断される。本発明の好ましい実施形態において、ステップ３０４は以下のブール関係式（２）及び（３）を使用することにより実行される。
サイズＡＮＤ４０９５が０でない場合、サイズ＝サイズ＋４０９６    （２）
サイズ＝サイズＡＮＤ（ＮＯＴ４０９５）                          （３）
ブール関係式（２）及び（３）は好ましい実施形態におけるホストプロセッサ１０１によって使用されるページサイズが４キロバイトであると見なす。しかし、本発明の方法は異なったページサイズ（例えば、１、２、８キロバイト）を使用するホストコンピュータシステムにおいても良好に適応する。ブール関係式（２）及び（３）はグラフィックバッファの所定のサイズを記憶するのに要求されるページ数に対して整数を得る。
図３Ａのプロセス３００のステップ３０６は、ＤＯＳ保護モードインタフェース（ＤＰＭＩ）サービスが現在ホストコンピュータシステム１１２（図１）内において動作状態にあるかどうかを判断することを必要とする。ＤＰＭＩサービスが現在ホストコンピュータシステム１１２（図１）内において動作状態にない場合、ページングは動作状態にないと見なされ、且つグラフィックバッファ２０８の全物理ページは物理メモリ空間２０３内で連続すると見なされる。
ＤＰＭＩサービスが現在ホストコンピュータシステム１１２内において動作状態にないことを条件に、プロセス３００は周知のプロセス及び技法を使用して実行されるステップ３０８及び３１０に進む。ステップ３０８は、論理メモリ空間及び物理メモリ空間内でグラフィックバッファ２０８にメモリブロックを割り当てることを必要とする。ステップ３０８で割り当てられるメモリブロックは上記ステップ３０４で判断された適当なページ数を含む。ステップ３０８は、Ｃプログラミング言語の数々の周知のメモリ割り当てソフトウェア手順コールを使用して実行される。そのようなステップ３０８にて使用されるメモリ分配手順コールの１つに、ＤＰＭＩメモリ割り当てコールがある。ステップ３１０は、グラフィックバッファ２０８のベース物理アドレス（ステップ３０８において発生される）をユーザハンドルによって指標化される図２Ｂのデータベース２０９に記憶する。現在ＤＰＭＩサービスがホストコンピュータシステム１１２内で動作状態にないことを条件に、ステップ３０８及び３１０の実行でプロセス３００が終了する。
ＤＰＭＩサービスがホストコンピュータシステム１１２内で動作状態にあることを条件に、プロセス３００はホストコンピュータシステム１１２内においてページングが動作状態にあるどうかを判断する図３Ａのステップ３１２に進む。本発明の例示的な実施形態において、ホストマイクロプロセッサ１０１はｘ８６アーキテクチャ（例えば、８０３８６マイクロプロセッサ）から成る。インテル８０３８６型マイクロプロセッサの制御レジスタゼロ（ＣＲ０）の内容を検査することによって、ｘ８６型マイクロプロセッサ内でページングが動作状態にあるかどうかを判断することが可能となる。インテル８０３８６型マイクロプロセッサの制御レジスタゼロ（ＣＲ０）のビット３１が設定されている場合、ホストコンピュータシステム１１２内でページングは動作状態にある。これはステップ３１２においてチェックされる。
ホストコンピュータシステム１１２内において現在ページングが動作状態にないことを条件に、グラフィックバッファ２０８の全物理ページは物理メモリ空間２０３内で連続すると見なされ、プロセス３００はステップ３１２から、上記説明の通り、プロセス３００を終了するステップ３０８及び３１０を実行するために進む。
ホストコンピュータシステム１１２内において現在ページングが動作状態にあることを条件に、プロセス３００は図２ＢのＣＰＵ／ＰＴ２０５の仮想アドレスにアクセスするために図３Ａのステップ３１４に進む。本発明の好ましい実施形態において、ＣＰＵ／ＰＴ２０５の仮想アドレスは図１のホストマイクロプロセッサ１０１を実現するインテル８０３８６型マイクロプロセッサの制御レジスタ３（ＣＲ３）においてアクセスされる。次に、ユーザアプリケーションソフトウェアによる進行を許可するため、ステップ３１６がＣＰＵ／ＰＴ２０５の仮想アドレスをマッピングするか、ＣＰＵ／ＰＴ２０５の論理アドレスに翻訳する。
ステップ３１８は論理メモリ空間２０２及び物理メモリ空間２０３内の第１のメモリブロックを図２Ｂのグラフィックバッファ２０８に割り当てる。本発明の例示的な実施形態において、第１のメモリブロックはステップ３０８に関して説明された「Ｃ」機能コールを使用することによって割り当てられる。ステップ３１８においては数々の周知のメモリ割り当て手順が利用される。ステップ３１８で割り当てられたメモリブロックは、ステップ３０２においてグラフィックバッファに受けられたサイズパラメータを基に上記ステップ３０４において判断された適当なページ数を含むサイズになっている。ステップ３２０は、第１のメモリブロックのページがホストコンピュータシステム１１２の主メモリからディスク記憶装置１０４にスワップされることを防ぐためにステップ３１８で割り当てられた第１のメモリブロックをロックする。本発明の好ましい実施形態において、第１のメモリブロックはＤＰＭＩコールを使用することによってロックされる。第１のメモリブロックは、ＰＧＤ１０９によってアクセスされた場合にグラフィックバッファ２０８の全ページが物理メモリ空間２０３にあること確実にするためにロックされる。
図３Ａのステップ３２２は論理メモリ空間及び物理メモリ空間内の第２のメモリブロックを図２ＢのＧＤＰＴ２０６の記憶装置に割り当てる。プロセス３００の次の４つのステップ（３２４、３２６、３２８及び３３０）は本発明のＧＤＰＴ２０６を構築する。図３Ｂのステップ３２４はグラフィックバッファ２０８の第１のページの論理アドレス（ステップ３１８において発生される）にアクセスし、グラフィックバッファ２０８の第１のページの対応する物理アドレスをＣＰＵ／ＰＴ２０６から判断する。ステップ３２６はステップ３２４にてアクセスされた論理アドレス及び物理アドレスをＧＤＰＴ２０６のエントリに記憶する。このステップは、ＰＧＤ１０９によってアクセス可能な物理メモリ空間２０３内にＣＰＵ／ＰＴ２０６のコピーを構築する。ステップ３２８は次にグラフィックバッファ２０８の次のページの論理アドレスにアクセスし、グラフィックバッファ２０８の次のページの対応する物理アドレスをＣＰＵ／ＰＴ２０６から判断する。ステップ３３０はステップ３２８にてアクセスされた論理アドレス及び物理アドレスをＧＤＰＴ２０６内に記憶する。再び、ステップ３３０は、ＰＧＤ１０９によってアクセス可能な形態及び場所における物理メモリ内にて、ＧＤＰＴ２０６のエントリを構成する。
図３Ｂのステップ３３２はグラフィックバッファ２０８の現在のページ及び前のページの物理アドレスが物理メモリ空間内で相互に連続しているかどうかを判断する。本発明の実施形態において、ステップ３３２は、現在のページの物理アドレスが前のページの物理アドレス及びホストコンピュータシステム１１２によって使用されるバイトでのページサイズの和と同一であるか否かを判断することによって実行される。グラフィックバッファ２０８の現在のページ及び前のページが物理メモリ空間内で相互に連続していることを条件に、プロセス３００はグラフィックバッファ２０８の現在のページがグラフィックバッファ２０８の最後のページであるかどうかを判断するためステップ３３４に進む。グラフィックバッファ２０８の現在のページがグラフィックバッファ２０８の最後のページでないことを条件に、プロセス３００はグラフィックバッファ２０８の次のページの論理アドレスにアクセスするために、及びグラフィックバッファ２０８の同ページの対応する物理アドレスをＣＰＵ／ＰＴ２０５から判断するためにステップ３２８に戻る。物理メモリ空間内のＧＤＰＴ２０６の論理アドレスはＰＧＤ１０９によってアクセス可能な形態及び場所にあることが理解される。グラフィックバッファ２０８の全ページが物理メモリ空間内で相互に連続していることが見出されることを条件に、プロセス３００はグラフィックバッファ２０８の論理ベースアドレス及び物理ベースアドレスをユーザハンドルによって指標化されるデータベース２０９に記憶するステップ３３６に進む。物理メモリ空間２０３内でグラフィックバッファ２０８のページは連続していることから、ステップ３３６にてＧＤＰＴ２０６は構築されたが、ＧＤＰＴ２０６はＰＧＤ１０９によって必要とされない。グラフィックバッファ２０８の全ページが物理メモリ空間内にて連続することを条件に、図３Ｂのステップ３３５はステップ３２２においてＧＤＰＴ２０６に割り当てられたメモリブロックを解放する。
グラフィックバッファ２０８の１つのページが物理メモリ空間内でグラフィックバッファ２０８の前のページと連続していないことをステップ３３２において検出した場合、プロセス３００はステップ３４０に進む。ステップ３４０はＧＤＰＴ２０６の物理ベースアドレスをＣＰＵ／ＰＴ２０５を使用するＧＤＰＴ２０６の論理ベースアドレスから判断する。ステップ３４２はユーザハンドルによって指標化されたデータベース２０９内にＧＤＰＴ２０６の論理ベースアドレス及び物理ベースアドレスを記憶する。ステップ３４４が次にグラフィックバッファ２０８が不連続であることを表示する、グラフィックバッファ２０８の物理アドレスの指定ビットを設定する。本発明の好ましい実施形態において、ステップ３４４はグラフィックバッファ２０８が不連続であることを表示するためにグラフィックバッファ２０８の物理ベースアドレスのビットゼロを（例えば、「１」に）設定する。それ以外では、ビットゼロは論理「０」である。グラフィックバッファ２０８の全ページが物理メモリ空間内で連続していないことを条件に、ＧＤＰＴ２０６が必要とされる。ステップ３４５はスワップを防ぐためにメモリ内のＧＤＰＴ２０６をロックする。
プロセス３００は、物理メモリ空間内で、及び物理メモリ空間２０３からＰＧＤ１０９がアクセス可能な形態で、ＧＤＰＴ２０６を効率的に発生させる。以下に議論されるように、ＰＧＤ１０９は、物理メモリ不連続グラフィックバッファ２０８の物理ページを有利に見つけるためにＧＤＰＴ２０６を利用し得る。この方式で、不連続な物理メモリページに記憶された大規模なグラフィックバッファ２０８（例えば、１ページ以上の）が、ＰＧＤ１０９がホストプロセッサ１０１（図１）の割り込みなしにグラフィック表現を行うことによって、ＰＧＤ１０９によって直接アクセスされる。
図４を参照して、ＰＧＤ１０９に対してプロセス３００によって発生されたグラフィックバッファ２０８の物理アドレスを提供するための本発明の方法によるプロセス４００のフロー図を示す。プロセス４００はシステム１１２のコンピュータ読み出し可能メモリユニット内に記憶されるプログラムコードとして実行される。プログラムコードはホストプロセッサ１０１上で実行される。ステップ４０２はグラフィックバッファ２０８のハンドルにアクセスする。ステップ４０４は、所望のグラフィックバッファのハンドルによって指標化されたグラフィックバッファの物理アドレスを獲得するため、データベース２０９を使用する。最後に、ステップ４０６はグラフィックバッファ２０８の物理アドレスを図１のＰＧＤ１０９に転送する。プロセス４００は一般的に、ＰＧＤ１０９にグラフィックバッファ２０８内に記憶されたデータを処理するように命令する前に、ホストコンピュータシステム１１２によって実行される。したがって、プロセス３００によるグラフィックバッファ２０８の構築とプロセス４００の実施との間に、データはシステム１１２によってグラフィックバッファ２０８にロードされる。
図５を参照して、本発明の方法によるプロセス５００のフロー図を示す。プロセス５００はプログラムコードとして実行され、システム１１２のコンピュータ読み出し可能メモリユニット内に記憶され得る。本発明の好ましい実施形態において、このプログラムコードは図１のＰＧＤ１０９内におけるコンピュータ読み出し可能メモリユニット内に記憶される。さらに本発明の好ましい実施形態において、プロセス５００のプログラムコードは図１のディスプレイプロセッサ１１０上で実行される。しかし、本発明はプロセス５００のプログラムコードをホストプロセッサ１０１または指定された論理回路上で実行する別の実施形態においても良好に適応され得る。プロセス５００はＰＧＤ１０９によるリクエストの後、グラフィックバッファ２０８の物理アドレスに関してシステム１１２に呼び出され得、或いはＰＧＤ１０９に直接物理アドレスを非同期的に転送するシステム１１２に対して割り込み駆動され、且つ反応的であり得る。ステップ５０２において、グラフィックバッファ２０８の物理アドレスが受け取られる。ステップ５０４において、グラフィックバッファ２０８の物理アドレスの指定ビットが設定されたかどうか判断される。
グラフィックバッファ２０８の物理アドレスの指定ビット（ビットゼロ）が設定されていないことを条件に、グラフィックバッファ２０８のページは物理メモリ空間２０３内で連続すると見なされ、プロセス５００はステップ５０８に進む。ステップ５０８において、ＰＧＤ１０９は、グラフィックバッファ２０８にアクセスするためにグラフィックバッファ２０８の最初の物理アドレスを使用する。グラフィックバッファ２０８の引き続くページは、ＥＯＦに遭遇するまで、処理のため連続してアクセスされる。グラフィックバッファ２０８の物理アドレスの指定ビットが設定されていることを条件に、グラフィックバッファ２０８のページは物理メモリ空間２０３内で不連続であると見なされ、プロセス５００はステップ５１０に進む。ステップ５１０において、ＰＧＤ１０９はＧＤＰＴ２０６の開始アドレスにアクセスし、処理のため、グラフィックバッファ２０８の物理ページを位置決めし、アクセスするためにＧＤＰＴ２０６エントリを使用する。これは、ＧＤＰＴ２０６がＰＧＤ１０９に対してグラフィックバッファ２０８のページの仮想アドレスと対応する物理空間アドレスとの間のアクセス可能なマップを提供するため、許可される。ＧＤＰＴ２００を使用することによって、ＰＧＤ１０９はグラフィックバッファ２０８を構成する不連続な物理ページを見つけ得、グラフィック表現（例えば、記憶されたディスプレイリスト）のため、不連続な物理ページにアクセスし得る。
以上により、メモリが連続するかどうかを判断し、ページテーブルを構築するための方法である本発明の好まし実施形態が説明された。本発明が特定の実施形態で説明されたが、本発明がそのような実施形態に限定されたものであると解釈されてはならず、むしろ、以下の請求項によって解釈されなければならない。
【図１】
0004156033.tif 000002
【図２Ａ】
0004156033.tif 000003
【図２Ｂ】
0004156033.tif 000004
【図３Ａ】
0004156033.tif 000005
【図３Ｂ】
0004156033.tif 000006
【図４】
0004156033.tif 000007
【図５】
0004156033.tif 000008