(57)【特許請求の範囲】
【請求項１】
プロセッサによって実行されるコマンドを待ち行列に並べる装置であって、
データ構造を格納する第１のメモリであって、各データ構造はヘッダと少なくとも１つのデータワードとを含み、該ヘッダが、該データ構造の中のデータワードの数を示す情報と、次に来るデータワードがコマンドを表すかコマンドに関連するデータを表すかを示す情報とを含む、第１のメモリと、
該第１のメモリに接続されたデータマネージャであって、該第１のメモリからデータ構造を取り出すデータマネージャと、
該データマネージャに接続されたコマンドパーサーであって、該データマネージャによって取り出された該データ構造に関連するヘッダを受け取り、該ヘッダ内の情報をパーシングし、パーシングされた情報を該データマネージャに提供するコマンドパーサーと、
該データマネージャ、該コマンドパーサー、および該プロセッサに接続された第２のメモリであって、該データマネージャによって取り出された該データ構造の中のデータワードがコマンドを表す場合、該データマネージャが、格納および／または待ち行列に並べるために該コマンドを該第２のメモリに送信する、第２のメモリと、
該データマネージャ、該コマンドパーサー、および該プロセッサに接続された第３のメモリであって、該データマネージャによって取り出された該データ構造の中のデータワードがコマンドに関連するデータを表す場合、該データマネージャが、格納および／または待ち行列に並べるために該データを該第３のメモリに送信する、第３のメモリと
を備える、装置。
【請求項２】
前記ヘッダは、前記少なくとも１つのデータワードが該ヘッダに連続するメモリ位置に格納されているかどうかを示す情報をさらに含む、請求項１に記載の装置。
【請求項３】
前記少なくとも１つのデータワードが前記ヘッダに連続するメモリ位置に格納されていないことを前記情報が示す場合、該少なくとも１つのデータワードは、該少なくとも１つのデータワードが格納されている前記第１のメモリ内のメモリ位置を指すリンクポインタをさらに含む、請求項２に記載の装置。
【請求項４】
前記少なくとも１つのデータワードが前記ヘッダに連続するメモリ位置に格納されていないことを前記情報が示す場合、該少なくとも１つのデータワードは、該少なくとも１つのデータワードが格納されており前記第１〜第３のメモリと異なるソースデータバッファを指すリンクポインタをさらに含む、請求項２に記載の装置。
【請求項５】
前記データマネージャが、
ＦＩＦＯバッファと、
該ＦＩＦＯバッファに接続された複数のレジスタであって、前記コマンドパーサーから受け取るパーシングされたヘッダ情報を格納する複数のレジスタと、
該ＦＩＦＯバッファおよび該複数のレジスタに接続された第１の状態機器であって、該複数のレジスタの中のパーシングされたヘッダ情報を用いて、該ＦＩＦＯバッファに格納するため、前記第１のメモリから前記データ構造の中のデータワードをフェッチする第１の状態機器と、
該第１の状態機器、該複数のレジスタ、および該ＦＩＦＯバッファに接続された第２の状態機器であって、該第１の状態機器からの制御信号に応答して、該データワードを前記プロセッサに転送する第２の状態機器と、
を備える、請求項３に記載の装置。
【請求項６】
前記第１のメモリが、前記装置の外部にある、請求項５に記載の装置。
【請求項７】
前記第２のメモリおよび前記第３のメモリが、ＦＩＦＯバッファである、請求項６に記載の装置。
【請求項８】
中央処理ユニット（ＣＰＵ）と、
該ＣＰＵに接続され、データ構造を格納するシステムメモリであって、各データ構造は、ヘッダと少なくとも１つのデータワードとを含み、該ヘッダが、該データ構造の中のデータワードの数を示す情報と、次に来るデータワードがコマンドを表すかコマンドに関連するデータを表すかを示す情報とを含む、システムメモリと、
該ＣＰＵおよび該システムメモリに接続されたグラフィックスコントローラと
を備えるシステムであって、
該グラフィックスコントローラが、
グラフィックスエンジンと、
該グラフィックスエンジンに接続されたマスターモードモジュールと
を備え、
該マスターモードモジュールが、
該システムメモリに接続されたデータマネージャであって、該システムメモリからデータ構造を取り出すデータマネージャと、
該データマネージャに接続されたコマンドパーサーであって、該データマネージャによって取り出された該データ構造に関連するヘッダを受け取り、該ヘッダ内の情報をパーシングし、パーシングされた情報を該データマネージャに提供するコマンドパーサーと、
該データマネージャ、該コマンドパーサー、および該プロセッサに接続された第１のメモリであって、該データマネージャによって取り出された該データ構造の中のデータワードがコマンドを表す場合、該データマネージャが、格納および／または待ち行列に並べるために該コマンドを該第１のメモリに送信する、第１のメモリと、
該データマネージャ、該コマンドパーサー、および該プロセッサに接続された第２のメモリであって、該データマネージャによって取り出された該データ構造の中の該データワードがコマンドに関連するデータを表す場合、該データマネージャが、格納および／または待ち行列に並べるために該データを該第２のメモリに送信する、第２のメモリと
を備え、
該グラフィックスエンジンが、処理するため、該第１のメモリおよび該第２のメモリから該コマンドおよび該コマンドに関連するデータを取り出す、
コンピュータシステム。
【請求項９】
前記ヘッダは、前記少なくとも１つのデータワードが該ヘッダに連続するメモリ位置に格納されているかどうかを示す情報をさらに含む、請求項８に記載のコンピュータシステム。
【請求項１０】
前記少なくとも１つのデータワードが前記ヘッダに連続するメモリ位置に格納されていないことを前記情報が示す場合、前記少なくとも１つのデータワードは、該少なくとも１つのデータワードが格納されている前記第１のメモリ内のメモリ位置を指すリンクポインタをさらに含む、請求項９に記載のコンピュータシステム。
【請求項１１】
前記少なくとも１つのデータワードが前記ヘッダに連続するメモリ位置に格納されていないことを前記情報が示す場合、前記少なくとも１つのデータワードは、該少なくとも１つのデータワードが格納されており前記システムメモリ並びに前記第１及び第２のメモリと異なるソースデータバッファを指すリンクポインタをさらに含む、請求項９に記載のコンピュータシステム。
【請求項１２】
前記データマネージャが、
ＦＩＦＯバッファと、
該ＦＩＦＯバッファに接続された複数のレジスタであって、前記コマンドパーサーから受け取るパーシングされたヘッダ情報を格納する複数のレジスタと、
該ＦＩＦＯバッファおよび該複数のレジスタに接続された第１の状態機器であって、該複数のレジスタの中のパーシングされたヘッダ情報を用いて、該ＦＩＦＯバッファに格納するために、前記システムメモリから前記データ構造の中のデータワードをフェッチする第１の状態機器と、
該第１の状態機器、該複数のレジスタ、および該ＦＩＦＯバッファに接続された第２の状態機器であって、該第１の状態機器からの制御信号に応答して、該データワードを前記グラフィックスエンジンに転送する第２の状態機器と、
を備える、請求項１０に記載のコンピュータシステム。
【請求項１３】
前記第１のメモリおよび前記第２のメモリが、ＦＩＦＯバッファである、請求項１２に記載の装置。
【請求項１４】
処理のためのコマンドおよび関連するデータを待ち行列に並べる方法であって、
データ構造を第１のメモリが格納する工程であって、各データ構造は、ヘッダと次に来る少なくとも１つのデータワードとを含み、該ヘッダが、該データ構造の中のデータワードの数を示す情報と、次に来るデータワードがコマンドを表すかコマンドに関連するデータを表すかを示す情報とを含む、工程と、
前記第１のメモリに接続されたデータマネ−ジャが、データ構造をフェッチする工程と、
前記データマネ−ジャに接続されるコマンドパーサーが、フェッチされた該データ構造の該ヘッダ内の情報をパーシングし、分離する工程と、
分離された該ヘッダ情報から、該データ構造の中のデータワードがコマンドを表すかコマンドに関連するデータを表すかを前記データマネージャが判定する工程と、
該データ構造の中のデータワードがコマンドを表す場合、格納および／または待ち行列に並べるために該コマンドを第２のメモリに前記データマネージャが送信する工程と、
該データ構造の中のデータワードがコマンドに関連するデータを表す場合、格納および／または待ち行列に並べるために該データを第３のメモリに前記データマネージャが送信する工程と、
を包含する、方法。
【請求項１５】
前記ヘッダは、前記少なくとも１つのデータワードが該ヘッダに連続するメモリ位置に格納されているかどうかを示す情報をさらに含む、請求項１４に記載の方法。
【請求項１６】
前記少なくとも１つのデータワードが前記ヘッダに連続するメモリ位置に格納されていないことを前記情報が示す場合、該少なくとも１つのデータワードは、該少なくとも１つのデータワードが格納されている前記第１のメモリ内のメモリ位置を指すリンクポインタをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記少なくとも１つのデータワードが前記ヘッダに連続するメモリ位置に格納されていないことを前記情報が示す場合、該少なくとも１つのデータワードは、該少なくとも１つのデータワードが格納されており前記第１〜第３のメモリと異なるソースデータバッファを指すリンクポインタをさらに含む、請求項１５に記載の方法。
【請求項１８】
前記第１のメモリが、システムメモリである、請求項１６に記載の方法。
【請求項１９】
前記第２のメモリに格納されたコマンド、および前記第３のメモリに格納されたコマンドに関連するデータを、処理のためにプロセッサに提供する工程をさらに包含する、請求項１８に記載の方法。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は概して、コンピュータシステムに関し、特に、実行するために行列に並べられたコマンドにアクセスする場合の遅延の最小化に関する。
【０００２】
（発明の背景）
半導体およびコンピュータ技術の発展に伴い、コンピュータシステムの高速化と同時に小型化が進んでいる。デスクトップコンピュータシステムはもちろん、ラップトップコンピュータシステムでさえも、今や、小さな部屋を占有するようなメインフレームコンピュータの処理速度を有している。現在普及が広がっているハンドヘルドコンピュータシステム（例えば、携帯情報端末（ＰＤＡ））でさえも、より高性能になってきている。コンピュータシステムの小型化および廉価化が進むにつれ、コンピュータシステムへの要求も常にかつより多く発生する。このような要求の例として、速度がある。
【０００３】
コンピュータシステムの速度を増大させるため、設計において、分散化のアプローチが実行されてきた。各コンピュータシステムにおいて、メモリコントローラ、ハードディスクコントローラ、グラフィックス／映像コントローラ、通信コントローラ、および他の周辺コントローラなどの、多くの専用機能を行うように設計された集積回路（ＩＣ）がある。これらの専用集積回路は、異なる機能を、独立して、同時に行い得る。このような分散化アプローチは、「ボトルネック」を最小化し、コンピュータ速度の向上に役立つ。
【０００４】
その場合でも、これらの専用集積回路によって行われるタスク、例えば、グラフィックおよび映像処理は、ますますより時間がかかり、複雑になってきている。グラフィックスおよび映像処理において、単純なタスクでさえ、数多くの工程を実行することを必要とするかもしれない。例として、３次元（３Ｄ）グラフィックスオブジェクトを、ディスプレイ画面上で、ある位置から他の位置に移動するというタスクについて考える。グラフィックスコントローラは、オブジェクトに関する属性データ（例えば、高さ、幅、色、質感など）をメモリ（例えば、フレームバッファ）から取り出す工程、およびソースと目的の位置との間の距離を計算する工程に加えて、新たな位置でのオブジェクトのシェーディングを正確に反映させるため、オブジェクトのピクセル用に、新たな色および質感の値を計算する工程が必要とされる。従って、グラフィックスコントローラは、この「移動」コマンドに応答して、これらの工程全てを行う必要がある。グラフィックスコントローラは、これらの工程を行う間、ビジーであり、他のコマンドを実行することはできない。一方、さらなるコマンド、例えば、フレームバッファにおけるグラフィックスオブジェクトをさらに操作するコマンドがコンピュータユーザによって生成され得る。従って、グラフィックスコントローラの処理能力に依存して、コマンドの長い行列が得られる可能性が高い。従来は、これらのコマンドは、グラフィックスコントローラの外部にあるバッファメモリに格納され、実行される順番になるまで待機する。しかし、これは、グラフィックスコントローラに周期的に割り込むか、ポーリングして、次のコマンドの用意ができたかどうか判定するホストプロセッサを必要とする。このような割り込みおよびポーリングは、ホストプロセッサの時間を多く必要とし、他のタスクが時間を使えないようになり、そのことによって、コンピュータシステムを全体として遅くする。さらに、外部のバッファメモリに格納されたコマンドにアクセスするために必要な時間は、他の大きな欠点である。
【０００５】
このボトルネックの高速化に役立つため、先入れ先出し（ＦＩＦＯ）バッファが、グラフィックスコントローラの内部においてインプリメントされて、グラフィックスコントローラが以前のコマンドをまだ実行している間に発生された新たなコマンドを格納する。内部ＦＩＦＯバッファのインプリメンテーションは、ホストプロセッサが、グラフィックスコントローラを、干渉またはポーリングする必要がもはやなく、ホストプロセッサオーバーヘッドが低減されるということを意味する。ＦＩＦＯバッファが、グラフィックスコントローラに埋め込まれている（すなわち、内部にある）ということは、さらに、ＦＩＦＯバッファアクセス時間が低減されるということを意味する。しかし、内部ＦＩＦＯバッファのサイズは、ＩＣチップの貴重なスペースを占め、ＩＣ回路においてインプリメントされる機能が少なくなるという理由で、非常に制限される。従って、内部コマンドＦＩＦＯバッファは、常に３つ、または４つのコマンドしか格納しないように制限される。現在のコンピュータシステムが行わなければならないタスク（例えば、グラフィックス）およびそのタスクに伴うコマンド行列の複雑さを想定すると、このようなコマンドＦＩＦＯバッファは、どうひいきめに見ても不十分であり、ＦＩＦＯバッファが利用可能になるのをホストプロセッサが待機する必要がある。
【０００６】
従って、過剰なホストプロセッサオーバーヘッドを必要とすることなしに、大容量および高速なアクセスコマンドの行列を可能にする装置、システム、および方法の必要性が存在する。
【０００７】
（発明の要旨）
従って、本発明は、過剰なホストプロセッサオーバーヘッドを必要とすることなしに、大容量および高速アクセスコマンド待ち行列を可能にする装置、システムおよび方法を提供する。
【０００８】
本発明は、プロセッサによって実行されるコマンドを行列に並べる（ｑｕｅｕｉｎｇ  ｃｏｍｍａｎｄ）装置の上記の必要性を満たす。装置は、第１のメモリと、第１のメモリに接続されたデータマネージャと、データマネージャに接続されたコマンドパーサーと、データマネージャ、コマンドパーサー、およびプロセッサに接続された第２のメモリと、データマネージャ、コマンドパーサー、およびプロセッサに接続された第３のメモリとを含む。
【０００９】
第１のメモリは、それぞれがヘッダおよび複数のデータワードを含むデータ構造を格納する。ヘッダは、データ構造の中のデータワードの数を示す情報と、次に来るデータワードがコマンドまたはコマンドに関連するデータを表すかどうかを示す情報とを有する。データマネージャは、第１のメモリからデータ構造を取り出す。コマンドパーサーは、データマネージャによって取り出されたデータ構造に関連するヘッダを受け取る。その後、コマンドパーサーは、ヘッダ内の情報をパーズし、パーズした結果をデータマネージャに提供する。データマネージャによって取り出されたデータ構造の中のデータワードがコマンドを表す場合、データマネージャは、格納するためコマンドを第２のメモリに送信する。一方、データマネージャによって取り出されたデータ構造の中のデータワードがコマンドに関連するデータを表す場合、データマネージャが、格納するためデータを第３のメモリに送信する。
【００１０】
代替的な実施形態において、ヘッダは、複数のデータワードを格納するメモリ位置がヘッダのメモリ位置と連続するかどうかを示す情報（例えば、リンクフィールド）をさらに含み得る。複数のデータワードが格納されているメモリ位置がヘッダのメモリ位置と連続しないことを、この情報が示す場合、各データ構造は、複数のデータワードが格納されている、第１のメモリ内のメモリ位置を指すリンクポインタをさらに含む。あるいは、リンクポインタは、複数のデータワードが格納されているソースデータバッファを指す。この方式によって、コマンド／ソースバッファのリンクされたリストが、ソースデータバッファのリスト共に、共存することが可能になる。
【００１１】
本発明の特徴および利点の全てが、添付の図面と共に、説明される以下の好適な実施形態の詳細な説明から明らかになる。
【００１２】
（発明の詳細な説明）
以下の本発明の詳細な説明において、本発明に対するより深い理解を提供するために、多くの特定の詳細について説明する。しかし、これらの特定の詳細が無くとも本発明が実施可能であることは、当業者にとって明らかである。別の場合において、本発明の局面を不必要に分かりにくくしないよう、周知の方法、手順、構成要素および回路についての詳細な説明は控えた。以下の本発明の詳細な説明では、グラフィックス／表示コントローラを含む分野における本発明の用途について説明するが、本発明は、例えば、通信、コアロジック、中央処理ユニット（ＣＰＵ）などの複数データ経路を伴う任意の適用例にも適用可能であることが理解される。
【００１３】
本発明によると、大円形（ｌａｒｇｅ  ｃｉｒｃｕｌａｒ）コマンド／ソースバッファ（ＣＳＢＵＦ）またはＣＳＢＵＦのリンクされたリストが、システムメモリ（すなわち、ＲＡＭ１０４）としてインプリメントされ、グラフィックスエンジンによって実行されるコマンドおよびこれらのコマンドに関連するデータを格納する。すなわち、システムメモリは、行列に並んだコマンド（ｑｕｅｕｅｄ  ｃｏｍｍａｎｄ）およびそのデータを格納するために用いられる。そうすることにおいて、任意の所与の時間で、かなり多くのコマンドおよびそのデータが行列に並び得る。本発明によると、各コマンド、およびその関連のデータは、単一のバッファまたは複数のバッファにおいて、データ構造ヘッダとして格納され得る。コマンドバッファに含まれる構造ヘッダは、少なくとも、構造に伴うデータワード（コマンドまたはデータ）の数を示すカウントフィールド、ならびに、コマンドまたはデータが伴うどうかを示すインデックスフィールドを含む。構造ヘッダは、さらに、取り出し、および格納に役立つ他の指数を含み得る。例えば、非連続メモリ位置にデータ構造が格納されることを可能にするため、ポインタも、データ構造に含まれて、直後のデータ構造を格納するシステムメモリ位置を示し得る。同様に、２つのリンクインデックスがヘッダに含まれて、リンクポインタが、データ構造の所定の位置（例えば、データ構造の次のデータワード）で予想されていることを示す。
【００１４】
従って、マスターモードモジュールは、まず、構造ヘッダを取り出し、検査するために用いられる。構造ヘッダから取り出される情報に基づいて、マスターモードモジュールは、データ構造に関連するコマンドまたはデータを取り出し、マスターモードモジュール内の適切なレジスタに格納する。その後、マスターモードモジュールは、処理するグラフィックスエンジンに、コマンドおよび関連するデータを提供する。本発明によると、マスターモードモジュールは、一度にシステムメモリに格納されたコマンドの数を、連続的にモニタリングすることが必要である。また、マスターモードモジュールはまた、マスターモードモジュールにおいて次のデータワードが格納され得るメモリ位置をモニタリングおよび決定することが必要である。なお、アプリケーションに依存して、マスターモードモジュールは、他の情報、例えば、ポインタをモニタリングするように変更され得る。そうすることによって、過剰なホストＣＰＵオーバーヘッドを必要としない大容量高速アクセスコマンド待ち行列構成が提供される。
【００１５】
ここで、図１を参照して、図１は、例えば、本発明のインプリメンテーションまたは実施が可能なコンピュータシステム１００の高レベル図を示す。より詳細には、コンピュータシステム１００は、ラップトップコンピュータシステムまたはハンドヘルドコンピュータシステムであり得る。コンピュータシステム１００は例示的なものに過ぎず、本発明は、複数の異なるコンピュータシステム（例えば、デスクトップコンピュータシステム、汎用コンピュータシステム、埋設型コンピュータシステム等）においても動作可能であることが、理解される。
【００１６】
図１に示すように、コンピュータシステム１００は、高集積型システムであり、集積プロセッサ回路１０１と、周辺コントローラ１０２と、読取り専用メモリ（ＲＯＭ）１０３と、ランダムアクセスメモリ（ＲＡＭ）１０４とを備える。この高集積型アーキテクチャにより、低電力消費が可能となる。集積プロセッサ回路１０１内に提供されていない複雑かつ／または高ピンカウント型の周辺機器とインターフェースをとることが必要な場合、コンピュータシステムアーキテクチャ１００は、周辺コントローラも含み得る。
【００１７】
周辺コントローラ１０２は集積プロセッサ回路１０１の一端に接続され、ＲＯＭ１０３およびＲＡＭ１０４は、集積プロセッサ回路１０１のもう一方の一端に接続される。集積プロセッサ回路１０１は、処理ユニット１０５と、メモリインターフェース１０６と、グラフィックス／表示コントローラ１０７と、ダイレクトメモリアクセス（ＤＭＡ）コントローラ１０８と、符号器／復号器（ＣＯＤＥＣ）インターフェース１０９を含むコア論理機能と、パラレルインターフェース１１０と、シリアルインターフェース１１１と、入力デバイスインターフェース１１２と、フラットパネルインターフェース（ＦＰＩ）１１３とを含む。処理ユニット１０５は、中央処理ユニット（ＣＰＵ）およびメモリ管理ユニット（ＭＭＵ）を、命令／データキャッシュと統合する。
【００１８】
ＣＯＤＥＣインターフェース１０９は、音声ソースおよび／またはモデムが集積プロセッサ回路１０１に接続するためのインターフェースを提供する。パラレルインターフェース１１０は、パラレル入力／出力（Ｉ／Ｏ）デバイス（例えば、ＺＩＰドライブ、プリンタ等）が集積プロセッサ回路１０１に接続することを可能にする。シリアルインターフェース１１１は、シリアルＩ／Ｏデバイス（例えば、ユニバーサル非同期型レシーバトランスミッタ（ＵＡＲＴ））を集積プロセッサ回路１０１に接続するためのインターフェースを提供する。入力デバイスインターフェース１１２は、入力デバイス（例えば、キーボード、マウスおよびタッチパッド）を集積プロセッサ回路１０１と接続するためのインターフェースを提供する。
【００１９】
ＤＭＡコントローラ１０８は、ＲＡＭ１０４中に格納されているデータにメモリインターフェース１０６を介してアクセスし、そのデータを、ＣＯＤＥＣインターフェース１０９、パラレルインターフェース１１０、シリアルインターフェース１１１または入力デバイスインターフェース１１２に接続された周辺デバイスに提供する。グラフィックス／表示コントローラ１０７は、ＲＡＭ１０４からの映像／グラフィックスデータにメモリインターフェース１０６を介してリクエストおよびアクセスする。次いで、グラフィックス／表示コントローラ１０７は、データを処理し、処理したデータをフォーマット化し、フォーマット化されたデータを、表示デバイス（例えば、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）またはテレビ（ＴＶ）モニタ）に送る。コンピュータシステム１００において、１つのメモリバスを用いて、集積プロセッサ回路１０１をＲＯＭ１０３およびＲＡＭ１０４に接続する。
【００２０】
好適な実施形態において、本発明は、グラフィックス／表示コントローラ１０７の一部としてインプリメントされる。より厳密には、本発明は、グラフィックス／ディスプレイコントローラ１０７の構成要素であるマスターモードモジュール２１１の内部でインプリメントされる。ここで図２を参照して、図２は、グラフィックス／表示コントローラ１０７をより詳細に示したものである。グラフィックス／表示コントローラ１０７は一般的には、ＣＰＵインターフェースユニット（ＣＩＦ）２０１と、フレームバッファ２０２と、位相ロックループ（ＰＬＬ）回路２０３と、発振器２０４と、パワーマネージメントユニット（ＰＭＵ）２０５と、グラフィックスエンジン（ＧＥ）２０６と、メモリインターフェースユニット（ＭＩＵ）２０７と、表示コントローラ２０８と、フラットパネルインターフェース（ＦＰＩ）２０９と、ＣＲＴデジタル／アナログ変換器（ＤＡＣ）２１０と、マスターモードモジュール２１１とを含む。ＣＩＦ２０１は、処理ユニット１０５およびＤＭＡコントローラ１０８に対するインターフェースを提供する。そのため、ＣＩＦ２０１は、処理ユニット１０５から受け取ったリクエストおよびデータを所望の宛先に経路設定する。特に、ＣＩＦ２０１は、ホストＣＰＵ処理ユニット１０５およびＤＭＡコントローラ１０８からのレジスタ読出し／書込みリクエストおよびメモリ読出し／書込みリクエストを、グラフィックス／表示コントローラ１０７内の適切なモジュールに送る。例えば、メモリ読出し／書込みリクエストはＭＩＵ２０７へと送られ、次いで、ＭＩＵ２０７は、フレームバッファ２０２へのデータの読出し／書込みの出入力を行う。ＣＩＦ２０１はまた、ＤＭＡコントローラ１０８への連絡（ｌｉａｉｓｏｎ）としても機能し、システムメモリ（ＲＯＭ１０３およびＲＡＭ１０４）からのデータをフェッチし、そのデータをＧＥ２０６およびＭＩＵ２０７に提供する。さらに、ＣＩＦ２０１は、処理ユニット１０５内のホストＣＰＵによってプログラム可能な電力モードレジスタＰＭＣＳＲも有し、これにより、グラフィックス／表示コントローラ１０７の電力状態を制御する。
【００２１】
フレームバッファ２０２は、表示画像を格納するために用いられ、また、様々な目的のための一時バッファとして機能するためにも用いられる。発振器２０４は、基準クロック信号をＰＬＬ回路２０３に提供し、次いで、ＰＬＬ回路２０３は、グラフィックス／表示コントローラ１０７中の異なるモジュール用に、３つのプログラム可能な位相ロックループクロック信号ＰＬＬ１、ＰＬＬ２およびＰＬＬ３を生成する。より詳細には、クロック信号ＰＬＬ１はＧＥ２０６およびＭＩＵ２０７用に用いられ、クロック信号ＰＬＬ２およびＰＬＬ３は、ＧＥ２０６、表示コントローラ２０８、およびＦＰＩ２０９用に用いられる。ＰＭＵ２０５は、ＣＩＦ２０１中のＰＭＣＳＲレジスタと外部信号ＰＤＷＮ＃とをモニタリングして、所望の電力状態を判定する。次いで、ＰＭＵ２０５は、異なるモジュールをイネーブルまたはディセーブルし、特定の電力状態について、様々なモジュールに必要なパワーオンおよびパワーオフの順序付けを行う。ＧＥ２０６は、ホストＣＰＵによって発行されたコマンドに基づいて、フレームバッファ２０２内に格納されるグラフィックス画像データを処理する。本発明によって、マスターモードモジュール２１１は、ＧＥ２０６が、ホストＣＰＵによって発生される行列に並べられたコマンドへの高速アクセスを有することを可能にする。
【００２２】
ＭＩＵ２０７は、フレームバッファ２０２から出入力される読出しトランザクションおよび書込みトランザクション全てを制御する。このような読出しリクエストおよび書込みリクエストは、ホストＣＰＵ、ＧＥ２０６、表示コントローラ２０８、ＦＰＩ２０９等から、送られ得る。表示コントローラ２０８は、ＭＩＵ２０７を介してフレームバッファ２０２から画像データを取り出し、その画像データを画素としてシリアル化し、その後、そのデータをＦＰＩ２０９またはＣＲＴ  ＤＡＣ２１０に出力する。従って、表示コントローラ２０８は、必要な水平方向の表示タイミング信号および垂直方向の表示タイミング信号を生成する。関連の表示デバイスがＬＣＤである場合、表示コントローラ２０８からの画素データはＦＰＩ２０９へと送られ、その後、ＬＣＤへと送られる。さらに、ＦＰＩ２０９は、異なる色相またはグレーシェードを表示用に追加することにより、データを処理する。さらに、薄膜トランジスタ（ＴＦＴ）ＬＣＤ（アクティブマトリクスＬＣＤともいう）またはスーパーツイスト型ネマチック（ＳＴＮ）ＬＣＤ（パッシブマトリクスＬＣＤともいう）のいずれが用いられるかに応じて、ＦＰＩ２０９は、データを表示形式に適するようにフォーマット化する。さらに、モノクロのＬＣＤが用いられる場合、ＦＰＩ２０９は、カラーデータのモノクロデータへの変換を可能にする。逆に言えば、表示デバイスが陰極線管（ＣＲＴ）である場合、画素データは、ＣＲＴへと送られる前に、ＣＲＴデジタル／アナログ変換器（ＤＡＣ）２１０に提供される。ＣＲＴ  ＤＡＣ２１０は、表示コントローラ２０８からのデジタル画素データを、ＣＲＴモニタ上への表示用として、アナログ赤緑青（ＲＧＢ）信号に変換する。
【００２３】
次に、本発明によるデータ構造の異なる実施形態を示す、図３Ａ〜３Ｄを参照する。図３Ａに、データ構造が複数のデータワードがすぐ次に（すなわち、連続的に）来るヘッダからなる、本発明によるデータ構造を示す。好適な実施形態において、各ヘッダおよび各データワードは、３２ビットの長さである。各データ構造の中のデータワードは、コマンド、または、コマンドに関連するデータのいずれかである。コマンドおよび関連するデータは、１つの連続するデータ構造に格納される。コマンドが、複数のデータワード（例えば、３つのデータワード）を伴い得ることが理解される。コマンドに関連するデータが、１ワードであってもよいし、１メガバイトであってもよいことが理解される。図３Ａに示すように、各ヘッダ（３２ヘッダを有する）が、少なくともカウント（ＣＯＵＮＴ）フィールドおよびインデックス（ＩＮＤＥＸ）フィールドを含む。カウントフィールドは、データ構造の中の構造ヘッダの次に来るデータワードの数を示す。インデックスフィールドは、データ構造が、コマンドまたはデータを伴うかどうかを示す。好適な実施形態において、インデックスフィールドは、データワードが格納される、目的のＦＩＦＯ内部マスターモードモジュール２１１のインデックスを提供する。コマンドおよびデータが、別個のＦＩＦＯバッファ（例えば、コマンドＦＩＦＯバッファおよびソースＦＩＦＯバッファ）に格納されるので、目的のインデックスフィールドを調査することによって、コマンドまたはデータを伴うかどうかが判定され得る。好適な実施形態において、先入れ先出し（ＦＩＦＯ）バッファがデータ構造のデータワードを格納するために用いられるので、データ構造の中の第１のデータワードは、その中の第１のデータであり、データ構造の中の最終のデータワードが、その中の最終のデータである。
【００２４】
各ヘッダは、さらに、データ構造のデータワードが、ヘッダの位置に連続するシステムメモリの位置、ヘッダの位置に連続しないシステムメモリにおける位置、異なるソースデータバッファ、または異なる位置の組合せ（例えば、連続しない位置、および異なるソースデータバッファ）のいずれかに格納されるかどうかを示すリンクフィールドを含み得る。同様に、データ構造が、ＣＳＢＵＦにおける連続する位置、ＣＳＢＵＦにおける連続しない位置、または、異なるソースデータバッファに格納され得るので、コマンド行列に、さらなるフレキシビリティが提供される。１つの実施形態において、ソースデータバッファは、システムメモリの一部であり得る。好適な実施形態において、リンクフィールドは、２ビットフィールド（ＬＩＮＫＣおよびＬＩＮＫＳビットのフィールド）である。このフィールドにおいて、値「００」は、検討中のデータ構造の中のデータワードがＣＳＢＵＦにおけるヘッダのすぐ次に（すなわち、連続的に）来ること示し、値「１０」は、データ構造の中のデータワードが、ＣＳＢＵＦにおける連続しない位置に格納されることを示し、値「０１」は、データ構造の中のデータワードが、別個のソースデータバッファに格納されることを示し、値「１１」は、データワードが、ＣＳＢＵＦにおける連続する位置と連続しない位置の組合せと、分散化された単数または複数のデータバッファとに格納されることを示す。
【００２５】
検討中のデータ構造のデータワードが、連続しない位置に格納される場合、次のＣＳＢＵＦポインタは、データワードの次のセットが格納されるメモリ位置を指すように提供される。このような次のＣＳＢＵＦポインタは、データ構造の中の所定の位置に配置され得る。例えば、好適な実施形態において、ＣＳＢＵＦポインタは、ヘッダのすぐ次に来るメモリ位置にある。そうすることによって、マスターモードモジュール２１１は、次のデータ構造をシステムメモリ内に配置し得る。同様に、検討中のデータ構造のデータワードが、システムメモリにおける別個のソースデータバッファに格納される場合、ソースデータポインタは、ソースデータバッファを指すように提供される。このようなソースデータポイントは、データ構造の中の所定の位置に位置し得る。例えば、好適な実施形態において、データポインタは、ヘッダのすぐ次に来るメモリ位置にある。さらに、各ヘッダは、飛ばされるＧＥレジスタを示すために用いられるＳＧ０およびＳＧ１フィールドを含み得る。
【００２６】
図３Ｂに、次のＣＳＢＵＦポインタが次に来るヘッダからなる、本発明によるデータ構造を示す。示すように、次のＣＳＢＵＦポインタは、検討中のデータ構造のヘッダに関連するデータワードが格納されているＣＳＢＵＦにおける連続しない位置へのリンクを提供する。これらのデータワードに関連するヘッダも、この位置で提供されることが理解される。図３Ｃに、ソースデータポインタが次に来るヘッダからなる、本発明によるデータ構造を示す。示すように、ソースデータポインタは、検討中のデータ構造のヘッダに関連するデータワードが格納されているソースデータバッファへのリンクを提供する。図３Ｄに、連続するＣＳＢＵＦ位置および連続しないＣＳＢＵＦ位置の両方、ならびに分散化ソースデータバッファに格納される、本発明によるデータ構造（すなわち、図３Ａ〜３Ｃのデータ構造の組合せ）を示す。より具体的には、図３Ｄに示すデータ構造は、図３Ａの位置のような連続する位置、図３Ｂに示すポインタのようなソースデータポインタが格納されているＣＳＢＵＦの連続しない位置を指す次のＣＳＢＵＦポインタ、および図３Ｃに示すように別のソースデータバッファを指す他の次のＣＳＢＵＦポインタが格納されているＣＳＢＵＦの他の連続しない位置を指す次のＣＳＢＵＦポインタにデータワードを含み得る。そうすることによって、ソースデータバッファと組み合わされたＣＳＢＵＦバッファのリンクされたリストが、可能になるので、行列するコマンドに、さらなるフレキシビリティが提供される。
【００２７】
従って、本発明によると、処理ユニット１０５からのホストＣＰＵがＧＥ２０６によって実行されるコマンドを発生する場合、ホストＣＰＵは、コマンドおよび関連するデータを、対応する上記のデータ構造にフォーマットする必要がある。このようなフォーマット化は、例えば、ＲＯＭ１０３に格納されている一連のインプリメントされた工程を実行することによって、行われ得る。このようなインプリメントされた工程は、当業者にとって、明らかである。各データ構造用にヘッダ情報を生成するために、ホストＣＰＵは、各データ構造の中のデータワードの数をモニタリングして、データ構造ヘッダにおけるカウントフィールドを生成する必要がある。また、ホストＣＰＵは、次に来る項目が、データ構造ヘッダにおける適切なインデックスフィールドを生成するコマンドまたはデータであるかどうかを判定する必要がある。ホストＣＰＵは、さらに、データ構造が、システムメモリの連続する位置に格納されて、データ構造ヘッダにおけるリンク（ＬＩＮＫ）フィールドをアサートするかどうかを判定する必要がある。さらに、ホストＣＰＵは、ＳＧ０およびＳＧ１のようなヘッダにおけるさらなるフィールドを生成するための必要に応じて、他の変数をモニタリングする必要を有し得る。
【００２８】
さらに、マスターモードモジュールが、任意の所与の時刻に、システムメモリにその時点で格納されているデータ構造の数をモニタリングするために必要とされる。参照のために、このようなカウントは、以下で、ＣＣＯＵＮＴと呼ばれる。データ構造カウントＣＣＯＵＮＴは、マスターモードモジュール２１１を起動して、コマンドおよび／またはコマンドに関連するデータを処理のためにＧＥ２０６に提供するベきかどうかの決定に役立つ。オーバーフローを避け、データの損失を避けるため、ホストＣＰＵは、さらに、全てのデータ構造が、現在システムメモリにおいてとられているデータワードの全体数をモニタリングすることが必要とされる。システムメモリにおけるデータ構造によって取られているデータワードの全体数は、以下、ＢＣＯＵＮＴと呼ばれる。ＢＣＯＵＮＴと、マスターモード動作に割り当てられた（ＣＳＢＵＦサイズと指定されている）システムメモリの量とを互いに比較することによって、オーバーフロー状態が検出され得る。この情報は、マスターモードモジュール２１１の構成要素に提供される。
【００２９】
次に、本発明を実現するマスターモードモジュール２１１をより詳細に示す図４を参照する。図４に示すように、マスターモードモジュール２１１は、データマネージャ（ＤＭ）４０１、コマンドパーサー（ＣＰ）４０２、コマンドＦＩＦＯバッファ４０３、およびソースＦＩＦＯバッファ４０４を含む。概して、ＤＭ４０１は、ＲＡＭ１０４におけるＣＳＢＵＦから、ＣＩＦ２０１を介して、図３に示したデータ構造をフェッチする。上述したように、ＣＳＢＵＦは、好適には、システムメモリの一部としてインプリメントされる。この実施形態において、ＣＳＢＵＦの容量（すなわち、ＣＳＢＵＦサイズ）は、４ｋ×３２ビット〜５１２ｋ×３２ビットの範囲であり得る。その後、ＤＭ３０１は、ヘッダ情報をパーズし、解釈して、データ構造に関連する情報、例えば、伴われるデータワードの数、データ構造タイプ（すなわち、コマンドまたはデータを伴うかどうか）、リンクフィールドがイネーブルされているかどうかなどを判定するＣＰ４０２に通過させる。その後、ＣＰ４０２は、解釈された情報を提供し、ＬＤＣＭＤ信号をＤＭ４０１に生成する。解釈された情報に基づいて、ＤＭ４０１は、データワードを、データ構造から、コマンドＦＩＦＯバッファ４０３またはソースＦＩＦＯバッファ４０４のいずれかにローディングする。このようなローディングが、ＬＤＣＭＤ信号の起動において行われる。
【００３０】
好適な実施形態において、コマンドＦＩＦＯバッファ４０３およびソースＦＩＦＯバッファ４０４は、両方とも、４０ビットの幅であり、１６ビットの深さである。したがって、３２ビット幅のコマンドおよびデータが、コマンドＦＩＦＯバッファ４０３にローディングされる場合、余分の８ビットが、コマンドまたはデータの各３２ビットに追加される。加えられた８ビットは、対応する構造ヘッダからのインデックスフィールドを表す。そうすることによって、ＧＥ２０６が連続して情報を受け取る場合、インデックスフィールド（すなわち、宛先メモリアドレス）を用いて、コマンドまたはデータを伴うかどうかを判定し得る。
【００３１】
名前が示すように、コマンドＦＩＦＯバッファ４０３は、ＧＥ２０６によって実行されるコマンドを格納するために用いられる。他方、ソースＦＩＦＯバッファ４０４は、コマンドに関連するデータを格納するために用いられる。すなわち、コマンドおよび関連するデータは、別のＦＩＦＯバッファに格納される。また、ＤＭ４０１は、コマンドＦＩＦＯバッファ４０３およびソースＦＩＦＯバッファ４０４と、制御／状態情報を交換する。例えば、ＤＭ４０１は、コマンドＦＩＦＯバッファ４０３またはソースＦＩＦＯバッファ４０４を選択的にイネーブルまたはディセーブルする信号を生成する。コマンドＦＩＦＯバッファ４０３およびソースＦＩＦＯバッファ４０４は、現在格納されているデータワードの数をモニタリングして、この情報がＤＭ４０１にとって利用可能になるようにし得る。ＧＥ２０６からのイネーブル信号に応答して、コマンドＦＩＦＯバッファ４０３およびソースＦＩＦＯバッファ４０４が、その中に含むものを出力する。同様に、ＧＥ２０６も、コマンドＦＩＦＯバッファ４０３およびソースＦＩＦＯバッファ４０４と、制御／状態情報を交換する。例えば、ＧＥ２０６は、コマンドＦＩＦＯバッファ４０３およびソースＦＩＦＯバッファ４０４の内部に格納されたデータワードの数を判定する状態信号を送信し得る。緊急の場合においては、ＣＰ４０２は、コマンドＦＩＦＯバッファ４０３およびソースＦＩＦＯバッファ４０４の動作を停止する中止信号を生成し得る。
【００３２】
図５は、ＣＰ４０２によって行われる、関連する工程／状態のフローチャートである。好適な実施形態において、図５の工程／状態は、状態機器の一部としてインプリメントされる。工程５０５は、アイドル状態を表し、ここで、ＣＰ４０２が、状態信号ＧＥＥＮ、ＭＭＥＮ、およびＣＣＯＵＮＴをモニタリングして、それぞれ、ＧＥ２０６がアクティブであるかどうか、マスターモードモジュール２１１がイネーブルされたかどうか、システムメモリに現在格納されているデータ構造があるかどうかを判定する。ＧＥ２０６がアクティブであり、マスターモードモジュール２１１がイネーブルされ、システムメモリに現在格納されている少なくとも１つのＧＥコマンドがある場合、ＣＰ４０２は、ＣＭＤＲＥＱ信号をアサートし、送信して、ＤＭ４０１をトリガして、システムメモリからデータ構造をフェッチする（工程５１０）。そうでない場合には、ＣＰ４０２は、状態信号ＧＥＥＮ、ＭＭＥＮ、およびＣＣＯＵＮＴのモニタリングを継続する。その後、ＣＰ４０２は、ＣＭＤＲＤＹ信号がアサートされるのを待つ（工程５１５）。アサートされる場合、ＣＭＤＲＤＹ信号は、ＤＭ４０１が、データ構造をフェッチし、データ構造ヘッダをＣＰ４０２に転送したことを示す。ＣＭＤＲＤＹ信号がアサートされなかった場合、ＣＰ４０２は、工程５１０で待ち続ける。ＣＭＤＲＤＹ信号がアサートされる後、ＣＰ４０２は、構造ヘッダをパーズし、解釈する（工程５２０）。これは、カウント、インデックス、リンク、ＳＧ０およびＳＧ１のようなヘッダフィールドが、切り離され、ＤＭ４０１に提供されることを意味する（工程５２５）。工程５３０において、ＣＰ４０２は、ＬＤＣＭＤ信号を、アサートし、ＤＭ４０１に送信する。アサートされる場合、ＬＤＣＭＤ信号は、解釈された情報が、そのレジスタにローディングされるために利用可能であることをＤＭ４０１に示す。
【００３３】
その後、ＣＰ４０２は、モニタリングして、コマンド／データが、何らかの理由で停止されたかどうかを判定する（工程５３５）。そうである場合、ＣＰ４０２は内部カウンタおよびレジスタをリセットし（工程５５０）、コマンドＦＩＦＯバッファ４０３およびソースＦＩＦＯバッファ４０４に中止信号を生成する。そうでない場合には、ＣＰ４０２は、ＤＭ４０１が、それぞれ、データ構造から、コマンドＦＩＦＯバッファ４０３またはソースＦＩＦＯバッファ４０４に、単数または複数のコマンドまたはデータのローディングを終了するまで待つ（工程５４０）。データ変換の完了において、ＣＰ４０１は、システムメモリに格納されているデータ構造が１つ少なくなるようにデータ構造カウントＣＣＯＵＮＴをデクリメントし、工程５０５に戻る。
【００３４】
次に、ＤＭ４０１を詳細に示す図６を参照する。図６に示すように、ＤＭ４０１は、ＤＭレジスタ６０１、ＤＭ状態機器６０２、ＤＭ状態機器６０３、およびＤＭ  ＦＩＦＯバッファ６０４を含む。概して、ＤＭ４０１は、システムメモリにおけるＣＳＢＵＦに格納されるデータ構造をフェッチする役割を果たす。この実施形態において、プロセッサによって提供されるＤＭＡ変換モードは、データ構造のフェッチに用いられる。しかし、他のデータ転送モード（例えば、ＰＣＩバスマスターモード）が、同様に採用され得ることが理解される。ＣＰ４０２が、ＣＳＢＵＦにおいて格納されるデータ構造をリクエストするＣＭＤＲＥＱ信号をアサートする場合、ＤＭ状態機器６０２は、ＣＳＢＵＦからのコマンドを有するデータ構造をフェッチすることによって応答する。ＤＭ状態機器６０２は、データ構造のヘッダを、ＣＰ４０２に送信し、データ構造の残り（すなわち、データワード）をＤＭ  ＦＩＦＯバッファ６０４に送信する。上述したように、ＣＰ４０２は、ヘッダの情報フィールドを分離させ、ＤＭレジスタ６０１に格納するためにＤＭ４０１に送信して戻す。ＤＭレジスタ６０１に格納される情報フィールドは、以下に記載するように、制御のために、ＣＣＯＵＮＴ、ＢＣＯＵＮＴ、およびＩＣＯＵＮＴのような様々なカウンタを更新する必要に応じて、ＤＭ状態機器６０２および６０３によってアクセスされる。ＤＭ状態機器  ２  ６０３は、概して、ＤＭ  ＦＩＦＯ６０４に格納される情報を、情報が単数または複数のコマンド、あるいはコマンドに関連するデータをそれぞれ含むかどうかに依存して、コマンドＦＩＦＯバッファ４０３またはソースＦＩＦＯバッファ４０４のいずれかに転送する役割を果たす。
【００３５】
図７は、ＤＭ状態機器６０２における関連工程／状態を示すフローチャートである。工程７０５において、ＤＭ状態機器６０２は、モニタリングして、ＣＰ４０２からのＣＭＤＲＥＱ信号がアサートされたかどうかを判定する。上述したように、ＣＭＤＲＥＱ信号がアサートされる場合、ＣＰ４０２が、システムメモリにおけるＣＳＢＵＦから、データ構造を取り出すリクエストをＤＭ４０１に生成することを示す。ＣＭＤＲＥＱ信号が、アサートされない場合、ＤＭ状態機器６０２は、ＣＭＤＲＥＱ信号のモニタリングを継続し、工程７０５に留まる。そうでない場合には、ＤＭ状態機器６０２は、ＤＲＥＱ信号をＤＭＡコントローラ１０８に生成して、ＣＳＢＵＦからのデータ構造のフェッチを開始する（工程７１０）。上述したように、ＤＭＡ転送モードは、この実施形態において、データ構造のフェッチに用いられる。その後、ＤＭ状態機器６０２は、データ構造の到着を待つ（工程７１５）。データ構造が到着する場合、ＤＭ状態機器６０２は、データ構造のヘッダ部分を、ＣＰ４０２に転送し、そのことを示すように、ＣＭＤＲＤＹ信号をアサートする（工程７２０）。その後、ＤＭ状態機器６０２は、ＬＤＣＭＤ信号をモニタリングして、コマンドが、コマンドパーサー４０２によってパーズされた（アクティブ）かどうか判定する（工程７２５）。上述したように、アサートされる場合、ＬＤＭＣＤ信号は、パーズヘッダフィールドが、ＤＭレジスタ６０１にローディングされるために利用可能であるかどうかを示す。さらに、ＬＤＭＣＤ信号がアサートされる場合、ＤＭ状態機器６０２は、データワードカウントＤＣＯＵＮＴを値（カウント−１）に設定し、インデックスカウントＩＣＯＵＮＴをインデックスフィールドの値に設定する。データワードカウントＤＣＯＵＮＴは、ＣＳＢＵＦからフェッチされるデータワードの数を判定し、また、データ構造の中のデータワードの全てがフェッチされたかどうかを判定するために用いられる。インデックスカウントＩＣＯＵＮＴは、コマンドＦＩＦＯ４０３またはソースＦＩＦＯ４０４のいずれかを指す。コマンドＦＩＦＯ４０３の場合、ＩＣＯＵＮＴは、データ転送が終わるたび、１ずつデクリメントされる。ソースＦＩＦＯ４０４の場合、ＩＣＯＵＮＴは、変化しない。
【００３６】
従って、ＬＤＣＭＤ信号がアサートされる場合、ヘッダフィールドは、所定のＤＭレジスタ６０１にローディングされる（工程７３０）。工程７３５において、ＤＭ状態機器６０２は、ヘッダフィールドを検査して、以下の状態のうちのいずれかが発生しているかどうかを判定する。１）インデックスフィールドが、任意の予約の位置を指す状態（工程７４０）、２）コマンドＦＩＦＯバッファ４０３またはソースＦＩＦＯバッファ４０４の格納場所がなくなっている状態（工程７４５）、および３）現在のデータ構造からのデータワードがもはやない状態（工程７５０）である。
【００３７】
インデックスフィールドが予約された位置を指す場合、これは、データ構造の中のデータワードが予約されたメモリ位置に送信されることになっていることを意味するので、エラー状態である（工程７４０）。この場合、ＤＭ状態機器６０２は、中止信号をアサートする（工程７７０）。その後、ＤＭ状態機器６０２は、ＤＭ状態機器６０３に、データ転送動作を停止するように知らせるために用いられるＤＴＡＣＴＩＶＥ信号をディアクティブにする（工程７７５）。上述したように、カウントＩＣＯＵＮＴは、コマンドＦＩＦＯバッファ４０３が利用可能な格納場所を表す。カウントＩＣＯＵＮＴがゼロ（０）に達する場合、コマンドＦＩＦＯバッファ４０３の中に利用可能な格納場所がもはやないことを示す（工程７４５）。この場合、ＤＭ状態機器６０２は、バッファ終端（ＥＯＢ）信号をアサートし（工程７８０）、ＤＴＡＣＴＩＶＥ信号をディアティブにする（工程７７５）。上述したように、カウントＤＣＯＵＮＴは、現在のデータ構造のデータワードの数を表す。カウントＤＣＯＵＮＴが、ゼロ（０）に達する場合、フェッチされる現在のデータ構造にもはやデータワードがないことを示す。この場合、ＤＭ状態機器６０２は、コマンド終端（ＥＯＣ）信号をアサートし（工程７５０）、ＤＴＡＣＴＩＶＥ信号をディアクティブにする（工程７８５）。工程７８５の後、ＤＭ状態機器６０２は、工程７０５に戻る。
【００３８】
エラー状態がなく、利用可能な格納場所が依然としてあり、フェッチされるデータワードがある場合、ＤＭ状態機器６０２は、ヘッダフィールドインデックスによって示される目的の位置に依存して、コマンドＦＩＦＯバッファ４０３またはソースＦＩＦＯバッファ４０４のいずれかへＤＭ  ＦＩＦＯ６０４内のデータワードの転送を開始する必要があることをＤＭ状態機器６０３に示すように、ＤＴＡＣＴＩＶＥ信号をアサートする（工程７５５）。次に、ＤＭ状態機器６０２は、ＤＭ  ＦＩＦＯバッファ６０４に、データ構造からの「新たな」データワードをローディングして、ＤＭ  ＦＩＦＯバッファ６０４に格納されていた「古い」データワードをコマンドＦＩＦＯバッファ４０３またはソースＦＩＦＯバッファ４０４のいずれかに送信するというタスクを行う（工程７６０）。システムメモリにおけるＣＳＢＵＦから、ＤＭ  ＦＩＦＯバッファ６０４にデータワードがフェッチされる場合、ＤＭ状態機器６０２は、カウントＤＣＯＵＮＴをデクリメントする。さらに、データワードが、ＣＳＢＵＦからＤＭ  ＦＩＦＯバッファ６０４にフェッチされるたびに、ＤＭ状態機器６０２は、システムメモリにおけるデータ構造によって取られるデータワードの総数を表すカウントＢＣＯＵＮＴをデクリメントする。
【００３９】
図８は、ＤＭ状態機器６０３における関連の工程／状態を示すフローチャートである。工程８０５において、ＤＭ状態機器６０３は、ＤＴＡＣＴＩＶＥ信号をモニタリングして、アサートされるかどうか判定する。ＤＴＡＣＴＩＶＥ信号がアサートされない場合、ＤＭ状態機器は、モニタリングを継続する。そうでない場合には、ＤＭ状態機器６０３は、ＤＭ  ＦＩＦＯバッファ６０４に読み出しリクエストを生成する（工程８１０）。次に、ＤＭ状態機器６０３は、ＤＭ  ＦＩＦＯバッファ６０４が空であるかどうかを判定する（工程８１５）。ＤＭ  ＦＩＦＯバッファ６０４が、空であることを示す場合、ＤＭ状態機器６０３は、データ転送を停止するエラー信号を生成する（工程８２０）。ＤＭ  ＦＩＦＯバッファ６０４が空でない場合、次に、ＤＭ状態機器６０３は、コマンドまたはデータを伴うかどうかを、（インデックスフィールドから）判定する（工程８２５）。コマンドが伴われる場合、ＤＭ状態機器６０３は、イネーブル信号をコマンドＦＩＦＯバッファ４０３に送信する（工程８３０）。他方、データが伴われる場合、ＤＭ状態機器６０３は、イネーブル信号を、ソースＦＩＦＯバッファ４０４に送信する（工程８３５）。コマンドＦＩＦＯバッファ４０３またはソースＦＩＦＯバッファ４０４がイネーブルされるかどうか、ＤＭ状態機器６０３の次の工程は、ＤＭ  ＦＩＦＯバッファ６０４から適切なＦＩＦＯバッファ（コマンドＦＩＦＯバッファ４０３またはソースＦＩＦＯバッファ４０４）にデータワードが転送されることを確実にする、モニタリングを含む（工程８４０）。その後、データがコマンドＦＩＦＯ４０３に転送される場合、ＤＭ状態機器６０３は、カウントＩＣＯＵＮＴをデクリメントする（工程８４５）。
【００４０】
本発明の実施形態、過剰なホストプロセッサオーバーヘッドを必要とすることなしに、大容量および高速アクセスコマンド行列を可能にするシステム、装置および方法について説明した。本発明を特定の実施形態について説明してきたが、本発明は、このような実施形態に限定されるものではなく、本明細書の特許請求の範囲に従って解釈されるべきである。
【図面の簡単な説明】
【図１】  図１は、本発明をインプリメントする代表的なコンピュータシステムを示す高レベルブロック図である。
【図２】  図２は、図１に示すグラフィックス／表示コントローラ１０７をより詳細に示すブロック図である。
【図３Ａ】  図３Ａは、本発明による、複数のデータワードがすぐ次に（すなわち、連続的に）来るヘッダからなるデータ構造を示す図である。
【図３Ｂ】  図３Ｂは、本発明による、次のＣＳＢＵＦポインタが次に来るヘッダからなるデータ構造を示す図である。
【図３Ｃ】  図３Ｃは、本発明による、ソースデータポインタが次に来るヘッダからなるデータ構造を示す図である。
【図３Ｄ】  図３Ｄは、本発明による、連続するＣＳＢＵＦ位置および非連続ＣＳＢＵＦ位置の両方、ならびに分散型ソースデータバッファに格納される、概略的なデータ構造を示す図である。
【図４】  図４は、図２に示すマスターモードモジュール２１１をより詳細に示すブロック図である。
【図５】  図５は、本発明による、コマンドパーサー３０２によって行われる関連の工程／状態を示すフローチャートである。
【図６】  図６は、図３に示すデータマネージャ３０１をより詳細に示すブロック図である。
【図７】  図７は、図６に示すＤＭ状態マシン１（６０２）によって行われる関連の工程／状態を示すフローチャートである。
【図８】  図８は、図６に示すＤＭ状態マシン２（６０３）によって行われる関連の工程／状態を示すフローチャートである。
【図１】
0004798849.tif 000002
【図２】
0004798849.tif 000003
【図３Ａ】
0004798849.tif 000004
【図３Ｂ】
0004798849.tif 000005
【図３Ｃ】
0004798849.tif 000006
【図３Ｄ】
0004798849.tif 000007
【図４】
0004798849.tif 000008
【図５】
0004798849.tif 000009
【図６】
0004798849.tif 000010
【図７】
0004798849.tif 000011
【図８】
0004798849.tif 000012