(57)【特許請求の範囲】
【請求項１】
描画コマンドに応答して、ラスター順に走査されるディスプレイを有するコンピュータシステムの表示メモリを更新するための方法であって、
前記表示メモリは、ある時点で、一方は現在表示中の表示データを格納するフロントバッファとして動作し、他方は現在構成中の表示データを格納するバックバッファとして動作する２つのバッファを備えており、
前記方法は、前記フロントバッファとして動作しているバッファを更新する過程を有し、該更新する過程は、
前記フロントバッファの第１のアドレスからディスプレイに表示データを読み出すステップと、
描画コマンドが、前記ラスター順において前記第１のアドレスを超える前記フロントバッファの第２のアドレスに書き込もうとしているか否かを判定するステップと、
前記第２のアドレスが前記ラスター順において前記第１のアドレスを超えた場合には、前記第２のアドレスへの書き込みを禁止するステップと、
前記第２のアドレスへの書き込みを禁止している間に、前記ラスター順に前記第１のアドレスを超えない前記フロントバッファの別のアドレスへの書き込みを許可するステップとを含むことを特徴とする方法。
【請求項２】
前記禁止するステップが、前記ラスター順において前記第２のアドレスを超えるアドレスからの表示データが、前記フロントバッファから前記ディスプレイに読み出されるまで、前記第２のアドレスへの書き込みを禁止するステップである、請求項１の方法。
【請求項３】
前記禁止するステップが、垂直帰線が生じるまで、前記第２のアドレスへの書き込みを禁止するステップである、請求項１の方法。
【請求項４】
表示データが、前記フロントバッファから前記ディスプレイに読み出されるに従い、前記第１のアドレスが増加し、
前記禁止するステップが、
前記第１のアドレスの増加を監視するステップと、
前記第１のアドレスが前記第２のアドレスを超えて増加したときに、前記第２のアドレスに書き込むステップをさらに含む、請求項１の方法。
【請求項５】
前記判定するステップが、
描画コマンドが書き込もうとしている目的アドレス範囲を示す信号を受け取るステップと、
前記フロントバッファの禁止アドレス範囲を決定するステップと、
前記目的アドレス範囲内のアドレスが、前記禁止アドレス範囲内にあるか否かを判定するステップからなる、請求項１の方法。
【請求項６】
禁止アドレス範囲を決定する前記ステップが、
第１のアドレスを決定するステップであって、該第１のアドレスから、表示データが前記フロントバッファから前記ディスプレイに読み出されている、ステップと、
前記フロントバッファの最終アドレスを決定するステップからなり、
前記禁止アドレス範囲が、前記第１のアドレスと前記最終アドレスによって画定される、請求項５の方法。
【請求項７】
次の描画コマンドが書き込もうとしている前記表示メモリのバッファを識別するページ切換コマンドを受け取るステップと、
前記次の描画コマンドが書き込もうとしている前記表示メモリのバッファが、前記フロントバッファであるか否かを判定するステップからさらになる、請求項１の方法。
【請求項８】
ラスター順に走査されるディスプレイの表示を更新するためのアクセラレータであって、
ディスプレイに表示するための表示データを格納する表示メモリであって、ある時点で、一方は現在表示中の表示データを格納するフロントバッファとして動作し、他方は現在構成中の表示データを格納するバックバッファとして動作する２つのバッファを備える、該表示メモリと、
前記フロントバッファの表示データを読み出して、前記ディスプレイにその表示データを書き込むために、前記フロントバッファと前記ディスプレイに結合された画面リフレッシュユニットと、
表示データを生成し、前記フロントバッファに生成した表示データを書き込むために、描画コマンドに応答する第１のエンジンと、
前記第１のエンジンが、前記ラスター順において前記画面リフレッシュユニットによって読み出されているアドレスを超えて前記フロントバッファに書き込むのを禁止するために、前記フロントバッファと前記第１のエンジンに結合されたメモリインターフェースユニットと、
表示データを生成し、生成した表示データを前記フロントバッファに書き込むために、前記メモリインターフェースユニットに結合された、描画コマンドに応答する第２のエンジンとを有し、
前記メモリインターフェースユニットは、前記第１のエンジンの書き込みが禁止されている間に、前記ラスター順において前記画面リフレッシュユニットによって読み出されているアドレスを越えない前記フロントバッファの他のアドレスに、前記第２のエンジンが書き込むことを可能とすることを特徴とするアクセラレータ。
【請求項９】
描画コマンドとページ切換コマンドを格納するためのコマンド待ち行列であって、前記第１のエンジンに結合されたコマンド待ち行列、をさらに備える、請求項８のアクセラレータ。
【請求項１０】
描画コマンドをパーズして送信するために、前記コマンド待ち行列と前記第１のエンジンに結合されたコマンド解析ユニットをさらに備える、請求項９のアクセラレータ。
【請求項１１】
処理ユニットからコマンドを受け取って、該コマンドを前記コマンド待ち行列に格納するために、前記コマンド待ち行列に結合されたバスインターフェースユニットをさらに備える、請求項１０のアクセラレータ。
【請求項１２】
前記画面リフレッシュユニットが、該画面リフレッシュユニットによって現在読み出されている表示データに対応するアドレスを格納する第１のアドレスレジスタを備える、請求項８のアクセラレータ。
【請求項１３】
前記画面リフレッシュユニットが、前記フロントバッファ内の最終アドレスに対応するアドレスを格納する第２のアドレスレジスタをさらに備える、請求項１２のアクセラレータ。
【請求項１４】
前記第１のエンジンが、前記ラスター順において前記画面リフレッシュユニットによって読み出されているアドレスを超えた目的アドレスに書き込もうとしている場合は、前記画面リフレッシュユニットが、前記ラスター順において前記目的アドレスを超えるアドレスから表示データを読み出すまで、前記メモリインターフェースユニットにより、前記第１のエンジンの書き込みが禁止される、請求項８のアクセラレータ。
【請求項１５】
前記第１のエンジンが、前記ラスター順において前記画面リフレッシュユニットによって読み出されているアドレスを超えた目的アドレスに書き込もうとしている場合は、垂直帰線が生じるまで、前記メモリインターフェースユニットが、前記第１のエンジンの書き込みを禁止する、請求項８のアクセラレータ。
【発明の詳細な説明】
［発明の背景］
１．発明の分野
本発明は、グラフィックス及びビデオ処理ハードウエアに関連し、特に、グラフィックス及びビデオ処理エンジンとフレームバッファメモリ間のメモリインターフェースに関連する。
２．従来技術の説明
現在のコンピュータシステムは、ディスプレイ（表示装置）にグラフィックスアニメーションや映像（ビデオ）の再生画像を極めて高速に更新する必要があるゲームやマルチメディアアプリケーション等のプログラムを実行する。このために、コンピュータシステムは、グラフィックス及び映像を高速に処理して表示するよう設計されたアクセラレータを備えている。しかしながら、現在のアクセラレータには、表示の更新速度を遅くするボトルネックがある。
【０００１】
かかるボトルネックの１つは、表示画像をアクセラレータによって描画する方法に原因がある。アクセラレータは、ディスプレイに表示するデータを保持するのに表示バッファ（display buffer）を利用する。一般的に、データはラスター順で、すなわち、左から右へのライン毎に、かつ、上から下にディスプレイに表示される。この順番は、ブラウン管（CRT）の性質によるものである（CRTでは、電子銃が、ディスプレイの左上部から右下部に向かって走査する）。電子銃が表示画面の右下部に到達すると、垂直帰線期間が開始して電子銃が左上部に戻る。
【０００２】
これとは対照的に、アクセラレータによって描画されるグラフィックデータは、ラスター順でないことが多く、表示バッファ内の任意の場所に存在しうる。しかし、アクセラレータは、走査線の前に表示バッファに書き込むことができない。もしそうでなければ、アクセラレータは、ディスプレイに表示するための、まだ読み出されていない表示バッファの一部を上書きして、一般にイメージテアリング（image tearing）と言われる、不完全に描画された画像の如きアーティファクトを表示してしまうであろう。
【０００３】
この問題を回避するために、グラフィックスエンジンが１つのバッファに書き込んでいる間に、別のバッファをディスプレイに対して読み出すことが可能なデュアルバッファシステムが開発されている。図１に、デュアルバッファアクセラレータとディスプレイを有するコンピュータシステムを示す。図１では、中央処理装置（CPU）１１０がバス１１４を介してアクセラレータ１１２に結合されており、ディスプレイ１１６がアクセラレータ１１２に結合されている。アクセラレータ１１２内部には、グラフィックス及びビデオ処理エンジン１１８と、表示アドレスレジスタ（DAR）１２０がある。アクセラレータ１１２は、２つのスクリーンバッファ１２４、１２６を備える表示用メモリ１２２にも結合されている。
【０００４】
DAR１２０は、１つの表示バッファの開始アドレスを選択的に識別する。データは、その開始アドレスから垂直帰線期間に続いて表示される。こうして認識された特定のバッファは、従来、フロントバッファ（front buffer）１２４と呼ばれている。他のバッファはバックバッファ（back buffer）１２６として機能し、これから描画されるフレーム、すなわち、表示用にはまだ読み出されていないフレームのデータを記憶する。アクセラレータ１１２がフロントバッファ１２４からディスプレイ１１６にデータを転送している間に、グラフィックスエンジン１１８は、CPU１１０から受信したコマンドを処理して実行し、バックバッファ１２６にデータを書き込む。
【０００５】
CPU１１０は、バックバッファ１２６に書き込むためのコマンドをアクセラレータ１１２に送信し終わると、ページ切換（または反転）コマンドを発行する。これに応答して、アクセラレータ１１２は、バックバッファ１２６の開始アドレスをDAR１２０に書き込み、これによって、現在のバックバッファ１２６を次のフロントバッファ１２４として認識する。しかし、イメージテアリングを防止するためには、現在のフロントバッファ１２４及びバックバッファ１２６の役割を逆にする前に、これから表示する現在のフロントバッファ１２４内のデータを読み出して、ディスプレイ１１６に伝送しなければならない。従って、垂直帰線が生じるまでは、現在のフロントバッファ１２４とバックバッファ１２６の役割を切り換えることはできない。
【０００６】
DARの更新と垂直帰線の間の時間間隔は、全画面のリフレッシュ期間に及び、非常に長い。この時間間隔の間、CPU１１０は、グラフィックスコマンドをアクセラレータ１１２に送信することはできない。なぜなら、現在のフロントバッファ１２４を、次のバックバッファ１２６として使用する準備がまだできていないからである。従って、グラフィックスエンジン１１８は、DARの更新と垂直帰線との間は、基本的に休止状態にある。CPU１１０は、垂直帰線状態にあり、従って、CPU１１０が、アクセラレータ１１２に対するグラフィックス及び／またはビデオ処理コマンドの送信を再開できることを判定するために、アクセラレータ１１２を連続的にポーリングする。このポーリングは、CPUサイクルを無駄使いするので極めて望ましくないものである。また、このポーリングによって、バス１１４上のトラフィックが大きくなり、コンピュータシステムのメインメモリ（不図示）から表示用メモリ１２２に送信されるテクスチャデータのような他のデータの転送が遅くなってしまう。
【０００７】
グラフィックスエンジンの休止時間を最小限にし、CPUの待ち時間及びポーリングを少なくする１つの方法は、追加のバッファを使用することである。例えば、従来のトリプルバッファ（３段式バッファ）方式では、第１の表示バッファをフロントバッファ１２４として使用し、その間に、グラフィックスエンジン１１８が第２のバッファにデータを書き込む。ページ切換（反転）コマンドに応答して、グラフィックスエンジン１１８は、第３のバッファへのデータの書き込みを開始する。垂直帰線になると、第２のバッファがフロントバッファ１２４として取り扱われ、第１のバッファは描画のために使用される次のバッファになる。
【０００８】
トリプルバッファ方式による解決策には、連続的に受信されるページ切換コマンドによって、グラフィックスまたはビデオデータが現在のフロントバッファ１２４に書き込まれることがないということを保証するための手段が依然として必要である。しかしながら、一般的に、トリプルバッファ方式では、CPU１１０がアクセラレータ１１２へのコマンドの発行を中断することを基本的に必要としない程度の十分なバッファリングを提供することができる。しかし、残念なことに、バッファの追加使用によって表示用メモリ１２２が消費され、他の目的に利用可能なメモリの量が減少してしまう。
【０００９】
表示用メモリをさらに消費することなく、グラフィックス／ビデオエンジン及びCPUの休止時間（アイドリング時間）を最小にし、同時に、垂直帰線が生じたことを判定する際のバス帯域幅の消費をも最小にするための手段が必要とされている。
［発明の概要］
上記の必要性は、エンジンが走査線の後にフロントバッファに書き込むことができるようにするアクセラレータによって満たされる。本発明の好適な１実施態様は、コンピュータシステムの中央処理装置（CPU）に結合されたバスインターフェースユニット（BIU）を備える。BIUは、コマンド待ち行列、コマンドパーサー、及びマスターコントロールユニット（CPMC）、さらに、２次元及び３次元グラフィックス描画エンジンとビデオ伸長（ビデオ解凍）エンジンを含む複数のエンジンに結合される。CPMC及びこれらのエンジンは、メモリインターフェースユニット（MIU）に結合され、メモリインターフェースユニットは、フレームバッファすなわちビデオメモリに結合される。フレームバッファは、１つ以上のチャンネルを介してメインメモリすなわちシステムメモリに結合され、複数のエージェントによって共有できることが好ましい。フレームバッファは、フロントバッファとバックバッファを備える。画面リフレッシュユニット（SRU）は、CPMC、フレームバッファ、及びディスプレイに結合される。
【００１０】
CPUは、描画コマンド及び制御コマンドを生成し、BIUを介してそれらをコマンド待ち行列に非同期に送信する。BIUは、周辺機器相互接続（PCI）バス、または、高速グラフィックスポート（AGP）のような専用のグラフィックス接続を介してCPUに結合するのが好ましい。コマンド待ち行列は、CPUのコマンドを記憶する、先入れ先出し方式のバッファ（ファーストイン・ファーストアウト・バッファ）または待ち行列である。CPMCは、コマンド待ち行列から各コマンドを読み出し、そのタイプを決定するためにコマンドをパーズ（解析）して、そのコマンドを適切なエンジンに送る。さらに、CPMCは、各エンジンの調整及び制御を行い、エンジン間の相互動作を同期させる。
【００１１】
エンジンは、描画コマンド処理して、フレームバッファに書き込む表示データを生成する。フレームバッファに書き込む前に、エンジンは、MIUからの許可を要求する。MIUは、フレームバッファへの書き込みの調停を行い、MIUが後述する書き込み禁止モードになければ、エンジンが書き込みを行うのを許可する。SRUは、フロントバッファからラスター順で表示データを読み出し、そのデータをディスプレイに表示する。
【００１２】
一般的に、CPUは、バックバッファ内に書き込むために１つ以上のエンジンに送られる描画コマンドのリストを生成する。このコマンドの後には、アクセラレータにフロントバッファとバックバッファの役目を切り換えるように通知する「ページ切換」コマンドが続く。次に、CPUは、エンジンが実行する別のコマンドのリストを生成する。CPMCがページ切換コマンドをパーズすると、CPMCは、ページ切換コマンドが受信されたことをSRUに知らせる。そして、SRUは、MIUに、書き込み禁止モードに入るように通知し、SRUによって読み出されている現在のラインを示すアドレスと、フロントバッファの終わりを示すアドレスを提供する。MIUは、SRUによって提供されたアドレスにより画定される範囲内におけるフロントバッファへのすべての書き込みを禁止するが、禁止されたアドレス範囲以外のフロントバッファへの書き込みは許容する。SRUは、SRUがバッファ内の各ラインを読み出す際に、MIUに対して更新したラインアドレスを送信するか、または、そのようなアドレス（ラインアドレスなど）をMIUに周期的に送信して、ディスプレイにラインを描画する。従って、垂直帰線が生じるまで、禁止されたアドレス範囲は連続的に小さくなり、垂直帰線が生じた時点で、そのアドレス範囲の大きさは０になり、すべての書き込みが許容される。垂直帰線の時点で、SRUは、MIUに、書き込み禁止モードから抜けるように通知する。
【００１３】
エンジンが、書き込みを禁止された範囲内のフロントバッファのアドレスに書き込みをしたいことをMIUに通知すると、MIUは、エンジンが書き込もうとしているアドレスを超える（または、そのアドレス以外の）アドレスにある表示データにSRUが移動するまで、エンジンに書き込み許可を与えない。
【００１４】
本発明によって提供される書き込み禁止は、CPUからアクセラレータに同期タスクをシフトすることによって、CPUとアクセラレータとの並列処理を最大限にする。さらに、書き込み禁止によって、ページ切り換え後、垂直帰線前の、エンジンが動作し続ける時間が最大となり、これによって、描画エンジンの動作と画面リフレッシュの実行との並列処理が最大になる。
［好適な実施態様の詳細な説明］
図２は、コンピュータシステムに結合された、本発明に従って構成された書き込み禁止機能付きアクセラレータ２００の好適な実施態様を示すブロック図である。図２では、中央処理装置２１０（CPU）が、グラフィックスバス２１２を介してバスインターフェースユニット２１４（BIU）に結合されており、BIUは、コマンド待ち行列２１６とコマンドパーサ／マスターコントロールユニット２１８（CPMC）に結合されている。２次元（２−Ｄ）グラフィックスエンジン２２０Ａ、３次元（３−Ｄ）グラフィックスエンジン２２０Ｂ、及び、ビデオ伸長エンジン２２０Ｃを備えるのが好ましい一組の処理エンジン２２０が、CPMC２１８に結合されている。エンジン２２０とCPMC２１８は、メモリインターフェースユニット２２２（MIU）に結合されており、MIUは、フレームバッファすなわちビデオメモリ２２４に結合されている。画面リフレッシュユニット２２６（SRU）と関連するディスプレイ２２８は、フレームバッファ２２４に結合されている。SRU２２６は、CPMC２１８とMIU２２２にも結合されている。
【００１５】
CPU２１０は、コマンドシーケンスをアクセラレータ２００に送信する。CPU２１０は、カリフォルニア、サンタクララのインテル社によって製造されているPentiumIIマイクロプロセッサのような汎用プロセッサであることが好ましい。本明細書では、コマンドには、１）グラフィックデータ及び／またはビデオデータを操作し、アニメーション（動画）にし、及び／または、表示する方法を指定する描画コマンド、２）ページ切換コマンド、及び、３）パーシング（parsing：解析）や実行タイミング命令、及び、ステータス通信命令を指定する制御コマンド、が含まれる。
【００１６】
CPU２１０によって生成される典型的なコマンドシーケンスには、描画コマンドのリスト、垂直帰線の後バッファ切り換えを実行するようアクセラレータ２００に通知する「ページ切換」コマンド、及び他の描画コマンドが含まれる。ページ切換（すなわち、バッファ切換）を高速に実行することによって、アクセラレータ２００は、画像をディスプレイ２２８上でアニメーション化する。CPU２１０は、非同期で、すなわち、射ち放し方式（fire-and-forget）で、アクセラレータ２００にコマンドを発行するのが好ましい。
【００１７】
グラフィックスバス２１２は、CPU２１０からBIU２１４へコマンドを送信するが、それは、高速グラフィックスポート（AGP）のような専用のグラフィックス接続（graphics coupling）であることが好ましい。しかし、グラフィックスバス２１２は、標準の周辺機器相互接続（PCI）や他のタイプのバスまたは接続とすることも可能である。グラフィックスバス２１２は、また、コンピュータシステムのメインメモリ（不図示）からテクスチャや他のグラフィックデータを運搬すなわち伝送し、ホストCPU２１０にステータス情報を伝送する。本明細書では、「グラフィックス」という用語には、グラフィック情報とビデオ情報の両方が含まれている。従って、グラフィックスバス２１２は、ビデオデータとグラフィックデータの両方を伝送することができる。
【００１８】
BIU２１４は、グラフィックスバス２１２を介して伝送されるデータやコマンドを受け取る。好適な実施態様では、BIU２１４は、当業者には容易に理解される方式で、バスマスタ方式（または、バスマスタリング）によりオンデマンドデータ転送を実行することができる。BIU２１４は、グラフィックスバス２１２を介して受け取った描画コマンドやページ切換コマンドをコマンド待ち行列２１６に、及び、テクスチャ情報のような他のデータをフレームバッファ２２４に送信する。コマンド待ち行列２１６は、CPU２１０から受信した描画コマンドを記憶する先入れ先出し（FIFO）バッファから構成される。コマンド待ち行列２１６は、それが本質的に満杯にならない程度、かつ、CPU２１０がコマンドを常にアクセラレータ２００に送信することができる程度に十分な大きさであることが好ましい。
【００１９】
本発明は、コマンド待ち行列２１６によって、CPU２１０から受け取ったページ切換コマンドをバッファリングする。後で詳述するページ切換コマンド待ち行列及び書き込み禁止処理により、アクセラレータ２００は、垂直帰線が生じたか否かに拘わらず、CPU２１０が描画コマンド及びページ切換コマンドを連続的に発行できるようにする方法で、フレームバッファ２２４に対するデータ転送を管理する。
【００２０】
CPMC２１８は、コマンド待ち行列２１６から各描画コマンドを読み出し、どのエンジン２２０にそのコマンドを与えるかを決定する。次に、CPMC２１８は、適切なエンジン２２０を起動して、そのエンジンに対してそのコマンドを送る。CPMC２１８は、CPMC２１８が別のエンジン２２０に与えるべきコマンドをパーズ（解析）するまで、そのエンジン２２０にコマンドを送り続ける。別のエンジンに与えるべきコマンドをパーズすると、CPMC２１８は、そのコマンドを別のエンジン２２０に送る。
【００２１】
上述したように、好適な書き込み禁止（機能付き）アクセラレータ２００は、２−Ｄエンジン２２０Ａ、３−Ｄエンジン２２０Ｂ、及びビデオ伸長エンジン２２０Ｃを含む、複数のエンジン２２０を備える。２−Ｄエンジン２２０Ａと３−Ｄエンジン２２０Ｂは、それぞれ、２−Ｄ描画コマンド、３−Ｄ描画コマンドを処理する。ビデオ伸長エンジン２２０Ｃは、カラー動画像データ圧縮標準規格（MPEG）に準拠したフォーマットのようなビデオフォーマットで記録されたデータを処理して伸長する。
【００２２】
エンジン２２０がCPMC２１８からコマンドを受け取ると、エンジン２２０は、そのコマンドを処理して、その後、ディスプレイ２２８のある場所を更新するために使用されることになる表示データを生成する。２−Ｄエンジン及び３−Ｄエンジンからのグラフィック表示データを、ディスプレイ２２８の任意の所与の場所に用いることができるが、一般的に、そのデータは、エンジン２２０Ａ、２２０Ｂによって、ラスター順、すなわち、左から右へ、上から下への順では生成されない。しかし、表示画像を水平ストリップ状に上から下に描画するストリップ描画法のような所定の描画技法をエンジン２２０Ａ、２２０Ｂにより使用して、ラスター順でグラフィックデータを生成することができる。これとは対照的に、ビデオ伸長エンジン２２０Ｃからのビデオ表示データは、通常、ラスター順で生成される。
【００２３】
MIU２２２は、フレームバッファ２２４へのエンジンのアクセスを制御する。フレームバッファ２２４は２つのバッファ２３０を備える。任意の所与の時間に、１方のバッファ２３０は、フロントバッファ２３０Ａとして動作し、一方、他方のバッファはバックバッファ２３０Ｂとして動作する。フロントバッファ２３０Ａは、現在表示中の表示データを格納し、バックバッファ２３０Ｂは、現在レンダリング（描画）中、すなわち「構成中」の表示データを格納する。
【００２４】
エンジン２２０は、ハンドシェークプロトコルによってMIU２２２に表示データを送信するのが好ましい。まず、送信エンジン２２０は、それが書き込もうとしているバッファ２３０内の開始アドレス及び終了アドレスと共に、MIU２２２に書き込み要求を発行する。MIU２２２は、要求を処理し、後で詳述するようにアドレス範囲が書き込みに利用可能であれば、肯定応答信号をエンジン２２０に送信する。エンジン２２０は、肯定応答を受け取るまでアイドリング状態（休止状態）であり、肯定応答を受け取るとデータをバッファ２３０に書き込む。
【００２５】
ページ切換コマンドの受信に先だって、エンジン２２０からの表示データを現在のバックバッファ２３０Ｂに書き込む間に、SRU２２６は、現在のフロントバッファ２３０Ａから表示データを読み出して、ディスプレイ２２８に描画する。SRU２２６はフロントバッファ２３０Ａから表示データをラスタ順で読み出し、従来方式で、そのデータをディジタル−アナログ変換器（不図示）に通し、当業者には容易に理解される方法で、そのデータをディスプレイ２２８に送る。
【００２６】
ページ切換コマンドに応答して、本発明は、書き込み禁止モードに移行する。このモードでは、エンジン２２０は、現在のフロントバッファ２３０Ａに表示データを書き込み、同時に、SRU２２６は、フロントバッファ２３０Ａからの現在の画像データをディスプレイ２２８に送信する。書き込み禁止モードでは、フロントバッファ２３０Ａへの書き込みは、ビームすなわち走査線の背後で行われ、これによって、表示画像に不連続やアーティファクトが生じるのを防止する。代替実施態様では、本発明は、常に書き込み禁止モードで動作することができ、従って、フロントバッファ２３０Ａの表示されない部分への書き込みが防止される。しかしながら、当業者には理解されるように、そのような書き込みは、通常、ページ切換コマンド後にのみ試行される。
【００２７】
SRU２２６は、書き込み禁止モードの間使用される最終アドレスレジスタ２３２と次アドレスレジスタ２３４を含む。最終アドレスレジスタ２３２は、現在のフロントバッファ２３０Ａ内の最終ラインの直後のラインの開始アドレスを記憶するのが好ましく、次アドレスレジスタ２３４は、次に表示される走査線に対応するデータの開始アドレスを記憶するのが好ましい。当業者には、代替実施態様において、次アドレスレジスタ２３４ではなく、現アドレスレジスタを用いて、表示中の現在の走査線に対応するデータの開始アドレスを記憶することができるということが理解されよう。SRU２２６は、最終アドレスレジスタ２３２と次アドレスレジスタ２３４に加えて、表示アドレスレジスタ（DAR）２３６も備える。表示アドレスレジスタの内容によって、現在のフロントバッファ２３０Ａを識別する。本発明によって実行される（次アドレスレジスタ２３４及び最終アドレスレジスタ２３２を書き込み禁止の間使用する方法を含む）詳細な動作については後述する。
【００２８】
図３は、本発明に従う書き込み禁止（機能付き）アクセラレータの好適な動作方法を示すフローチャートである。この方法は、SRU２２６がフロントバッファ２３０Ａの内容を使用してディスプレイ２２８に描画をするステップ３１０から開始する。SRU２２６は、前述したようにして、一度に一走査線分の表示データを読み出して出力するのが好ましい。SRU２２６の動作と並行して、CPMC２１８がコマンド待ち行列２１６に記憶されたコマンドを処理する。ページ切換コマンドの存在は、フロントバッファ２３０Ａとバックバッファ２３０Ｂの役目が逆にされるということを示す。CPMC２１８がコマンド待ち行列２１６からページ切換コマンドを受け取るかまたは取り出す（３１２）と、CPMC２１８は、現在実行中のエンジン２２０、あるいは、フレームバッファ２２４にデータを書き込むことができる任意の他のエンジン２２０が休止状態になるのを待ち（３１４）、これによって、次に表示されることになる画像の構成を確実に完了することができる。次に、CPMC２１８は、ページ切換コマンドを受け取ったということをSRU２２６に通知する（３１６）。
【００２９】
これに応答して、SRU２２６は、最終アドレスレジスタ２３２及び次アドレスレジスタ２３４の値を初期化または設定し、MIU２２２に書き込み禁止モードに入るように通知し、MIU２２２に次アドレスレジスタ２３４の内容を提供する（３１８）。次に、SRU２２６は、フロントバッファ２３０Ａからの表示データをディスプレイ２２８に送り続ける。SRU２２６が表示データのラインを読み出すたびに、SRU２２６は、次アドレスレジスタの値を増分して、MIU２２２に更新した次アドレスの値を送信するのが好ましい（３２０）。当業者には理解されるように、代替実施態様では、SRU２２６は、バイト毎またはラインのグループ毎のように、ライン毎のデータ転送に関連したものとは異なる特定の、あるいは可変の周期で、更新した次アドレスの値をMIU２２２に送信することができる。こうして、SRU２２６がフロントバッファ２３０Ａの中を移動、すなわち、前進するにつれて、禁止されたアドレス範囲は小さくなる。
【００３０】
MIU２２２は、次アドレス値によって、書き込みが禁止される禁止アドレスとして指定されたアドレス（すなわち、次アドレスレジスタ２３４及び最終アドレスレジスタ２３２の内容によって規定される範囲内のアドレス）以外のアドレスを処理する。MIU２２２は、エンジン２２０から受け取った書き込み要求のアドレス範囲をSRU２２６から受け取った次アドレス値と照合して調べる。禁止範囲以外のアドレスへの書き込み、すなわち、ディスプレイ２２８にすでに表示データが転送済みであるフロントバッファのアドレスに対する書き込みは、実施が許可される（３２４）。さらに、Ｚバッファのようなフレームバッファ２２４の他の部分への書き込みも実施が許可される。
【００３１】
エンジン２２０が禁止アドレス範囲内のアドレスに書き込もうとしている場合は、MIU２２２は、エンジン２２０が書き込もうとしているアドレスより大きい（または、アドレス以外の）次アドレス値を、SRU２２６が発行または提供するまで待つのが好ましく、その後に、MIU２２２は、エンジン２２０にハンドシェーキング信号を提供し、これによって、エンジンがフロントバッファ２３０Ａに書き込むことができるようにしている。
【００３２】
代替実施態様では、MIU２２２は、禁止されたエンジン２２０が休止状態の間、他のエンジン２２０からの有効な書き込みを受け付けることができる。他の代替実施態様では、MIU２２２は、垂直帰線が生じ、フロントバッファ２３０Ａとバックバッファ２３０Ｂが交換されるまで、禁止されたエンジン２２０からのハンドシェーキング要求に応答しない（３２６）。
【００３３】
SRU２２６が現在のフロントバッファ２３０Ａからディスプレイ２２８に最終ラインの表示データを伝送し、かつ、垂直帰線が生じた後に、書き込み禁止モードは終了する。この場合には、SRU２２６は、DAR２３６の内容を更新して、MIU２２２に書き込み禁止モードから出るように通知する（３２８）。好適な方法では、次に、ステップ３１０に戻る。
【００３４】
本発明の１つの利点は、エンジン２２０が、走査線すなわちビームの前に書き込みを行うことなく可能な限り多くのコマンドを処理し、これによって、表示画像が変化しないままであることを保証するということである。従って、アクセラレータ２００により、コンピュータシステムの他の部分との並行処理を最大にすることができる。本発明の他の利点は、CPMC２１８は、コマンドをパーズして、エンジンが書き込もうとするアドレス範囲を決定するのではなく、SRU２２６にページ切換を通知して、適切なエンジン２２０に次のコマンドを送信するだけでよいので、そのハードウエアが簡単であるということである。これに関連して生じる利点は、本発明が、任意のタイプのグラフィックスエンジンやビデオエンジン２２０で動作するということである。さらに別の利点は、CPU２１０が、垂直帰線がいつ生じたかを決定するためにアクセラレータ２００をポーリングする必要がなく、これよって、グラフィックスバスの帯域幅の効率的な利用が促進され、かつ、CPUの処理帯域幅が消費されるのを回避できるということである。
【００３５】
所定の好適な実施態様を参照して本発明を説明したが、種々の変更や修正を実施できることが当業者には理解されよう。例えば、本発明の教示するところを、トリプルバッファシステムに適用することができる。この場合、３つのバッファのうちの１つのバッファが任意の所与の時間にフロントバッファとして機能する。トリプルバッファ方式に適用する場合は、本発明は、上述したのと類似の方法で、ページ切換コマンドの発行後であって垂直帰線の前に、ビームすなわち走査線の後においてフロントバッファへの書き込みを行う。本明細書に記載した事項は、本発明に対するこれらの変更や修正も提供するものであり、請求の範囲によってのみ制限されるものである。
【図面の簡単な説明】
【図１】  デュアルバッファ式アクセラレータ及びディスプレイを有するコンピュータシステムを示す高レベルのブロック図である。
【図２】  本発明の好適な実施態様に従って構成された、コンピュータシステムの選択されたコンポーネントと、書き込み禁止機能付きアクセラレータを示すブロック図である。
【図３】  本発明に従う好適な書き込み禁止機能付きアクセラレータの動作を示すフローチャートである。
【図１】
0004487166.tif 000002
【図２】
0004487166.tif 000003
【図３】
0004487166.tif 000004