(57)【要約】【課題】ＤＭＡ機構およびキャッシュをサポートするシステム中でキャッシュ管理コマンドを提供するための方法およびシステムを提供すること。【解決手段】プロセッサによってＤＭＡ機構がセットアップされる。そのプロセッサで動くソフトウェアがキャッシュ管理コマンドを生成する。ＤＭＡ機構はコマンドを実行し、それによって、キャッシュのソフトウェア・プログラム管理を可能にする。コマンドは、キャッシュにデータを書き込むためのコマンド、キャッシュからデータをロードするためのコマンド、およびキャッシュ中のもはや必要としないデータにマーキングするためのコマンドを含む。そのキャッシュは、システム・キャッシュ、またはＤＭＡキャッシュとすることができる。【選択図】図１
2005276199.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュ管理のソフトウェア・プログラムによる制御を提供するシステムであって、
ソフトウェア・プログラムを実行してキャッシュの管理のためのＤＭＡコマンドを生成するように構成されているプロセッサと、
前記プロセッサに結合され、キャッシュの管理のために前記ＤＭＡコマンドを実行するように構成されているＤＭＡコントローラと
を備えるシステム。
【請求項２】
前記ＤＭＡコントローラに結合されたキャッシュをさらに備えており、前記ＤＭＡコントローラに結合された前記キャッシュのオペレーションを管理するために、キャッシュの管理のための前記ＤＭＡコマンドを前記ＤＭＡコントローラで実行するように構成されている、請求項１に記載のシステム。
【請求項３】
少なくとも１つの前記ＤＭＡコマンドが、ゲット・コマンドであり、少なくとも１つの前記ＤＭＡコマンドが、プット・コマンドである、請求項１に記載のシステム。
【請求項４】
少なくとも１つの前記ＤＭＡコマンドが、フラッシュ・コマンドである、請求項１に記載のシステム。
【請求項５】
少なくとも１つの前記ＤＭＡコマンドが、ゼロ・コマンドである、請求項１に記載のシステム。
【請求項６】
前記ＤＭＡコマンドのパラメータが、クラス・ライン、タグ、転送サイズ、および有効アドレス・ローを含む、請求項１に記載のシステム。
【請求項７】
前記キャッシュが、前記ＤＭＡコントローラに密結合されたＤＭＡキャッシュである、請求項１に記載のシステム。
【請求項８】
前記キャッシュが、システム・メモリのためのキャッシュである、請求項１に記載のシステム。
【請求項９】
ＤＭＡコントローラおよびプロセッサを備えるシステムにおけるキャッシュ管理のための方法であって、
キャッシュの管理のためのＤＭＡコマンドを生成するために前記プロセッサでソフトウェアを動作させるステップと、
前記ＤＭＡコントローラに前記ＤＭＡコマンドを発行するステップと、
前記ＤＭＡコマンドを実行するステップと
を含む方法。
【請求項１０】
キャッシュが、前記ＤＭＡコントローラに結合されており、前記ＤＭＡコントローラで前記ＤＭＡコマンドを実行することにより、前記キャッシュのオペレーションが管理される、請求項９に記載の方法。
【請求項１１】
少なくとも１つの前記ＤＭＡコマンドが、プット・コマンドであり、少なくとも１つの前記ＤＭＡコマンドが、ゲット・コマンドである、請求項９に記載の方法。
【請求項１２】
少なくとも１つの前記ＤＭＡコマンドが、フラッシュ・コマンドである、請求項９に記載の方法。
【請求項１３】
前記キャッシュが、前記ＤＭＡコントローラに密結合されたＤＭＡキャッシュである、請求項９に記載の方法。
【請求項１４】
前記キャッシュが、システム・メモリのためのキャッシュである、請求項９に記載の方法。
【請求項１５】
ＤＭＡコントローラおよびプロセッサを備えるシステムにおけるキャッシュ管理のためのコンピュータ・プログラムであって、コンピュータ・プログラムが実施されている媒体を有しており、前記コンピュータ・プログラムが、
キャッシュの管理のためのＤＭＡコマンドを生成するために前記プロセッサでソフトウェアを動作させるためのコンピュータ・コードと、
前記ＤＭＡコントローラに前記ＤＭＡコマンドを発行するためのコンピュータ・コードと、
前記ＤＭＡコマンドを実行するためのコンピュータ・コードと
を含むコンピュータ・プログラム。
【請求項１６】
少なくとも１つの前記ＤＭＡコマンドが、ゲット・コマンドである、請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
少なくとも１つの前記ＤＭＡコマンドが、プット・コマンドである、請求項１５に記載のコンピュータ・プログラム。
【請求項１８】
少なくとも１つの前記ＤＭＡコマンドが、フラッシュ・コマンドである、請求項１５に記載のコンピュータ・プログラム。
【請求項１９】
少なくとも１つの前記ＤＭＡコマンドが、ゼロ・コマンドである、請求項１５に記載のコンピュータ・プログラム。
【請求項２０】
前記キャッシュが、前記ＤＭＡコントローラに密結合されたＤＭＡキャッシュである、請求項１５に記載のコンピュータ・プログラム。
【請求項２１】
前記キャッシュが、システム・メモリのためのキャッシュである、請求項１５に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にメモリ管理に関し、より詳細には、ＤＭＡ（ダイレクト・メモリ・アクセス）機構の使用によるキャッシュのソフトウェア・プログラムでの管理に関する。
【背景技術】
【０００２】
関連出願
本出願は、２００３年３月２７日に出願された「ＤＭＡプリフェッチ」（第１０／４０１,４１１号）、および２００３年７月３１日に出願された「キャッシュ可能なＤＭＡ」（第１０／６３１,５９０号）と題する同時継続の米国特許出願に関係する。
【０００３】
マルチプロセッサの設計では、ＤＭＡエンジンやＤＭＡコントローラなどのＤＭＡ機構は、情報を、あるメモリ・タイプからそのメモリ・タイプを含まない別のメモリ・タイプ（例えば、キャッシュ）に移動し、またはあるメモリ位置から他のメモリ位置に移動するのに使用される。具体的には、ＤＭＡ機構は、情報をシステム・メモリからプロセッサのローカル記憶装置に移動する。ＤＭＡコントローラが情報をシステム・メモリからプロセッサのローカル記憶装置に移動しようとしたとき、情報をメモリからプロセッサのローカル記憶装置にフェッチしロードするのに遅延を生じることがある。情報の移動によって、複数のプロセッサ・サイクルを消費する可能性がある。その遅延は、マルチプロセッサ・システム内でのメモリ待ち時間およびコヒーレンシ（coherency）アクションを含む多くのファクタが累積されたものである。単一のプロセッサ・システムにおいてさえ、メモリ・アクセスは、多くのサイクル数を費やす可能性がある。複数のメモリ・タイプを有し、いくつかのメモリとプロセッサの間の距離が比較的大きいマルチプロセッサ・システムでは、メモリ・アクセスを待つプロセッサまたはＤＭＡに関する問題はさらに悪くなる。
【０００４】
プロセッサは、プロセッサのためのメモリ・アクセスにおける遅延を低減するためにキャッシュを備えることができ、したがってそのプロセッサで動作するソフトウェアの性能を改善することができる。プロセッサは、さらに性能を改善するためにキャッシュを管理する命令を提供することができる。
【特許文献１】米国特許出願第１０／４０１,４１１号
【特許文献２】米国特許出願第１０／６３１,５９０号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、ＤＭＡ転送におけるメモリ・アクセスの待ち時間を低減するために、ＤＭＡ機構を使用して、キャッシュをソフトウェア・プログラムで管理することが、マルチプロセッサ・システムにおいて求められている。
【課題を解決するための手段】
【０００６】
本発明は、ＤＭＡ機構およびキャッシュをサポートするシステム中でキャッシュ管理コマンドを提供するための方法およびシステムを提供する。ＤＭＡ機構は、プロセッサによってセットアップされる。そのプロセッサで動作するソフトウェアは、キャッシュ管理コマンドを生成する。ＤＭＡ機構は、そのコマンドを実行し、それによって、キャッシュのソフトウェア・プログラム管理を可能にする。
【０００７】
本発明およびその利点をより完全に理解するために、添付の図面とともに以下の説明を次に参照する。
【発明を実施するための最良の形態】
【０００８】
以下の議論では、本発明の十分な理解を提供するために数多くの特有の詳細な説明が述べられている。しかし、当業者であればこのような特有の詳細な説明がなくとも本発明を実施可能であることは明らかであろう。他の場合では、本発明の不要な詳細部もあいまいにしないために、周知のエレメントを概略図またはブロック図の形で示している。
【０００９】
本明細書に記載のすべての機能は、他に指示のない限り、ハードウェアもしくはソフトウェア、あるいはそれらの何らかの組合わせ中で実施できることもさらに留意されたい。しかし、好ましい実施形態では、他に指定のない限り、その機能は、コンピュータ・プログラム・コードなどのコード、ソフトウェア、またはこのような機能を実施するために符号化された集積回路、あるいはそれらの組合わせに基づいたコンピュータまたは電子データ・プロセッサなどのプロセッサによって実施される。
【００１０】
図１は、キャッシュ可能なＤＭＡ機構およびＤＭＡキャッシュを有する非対称異機種マルチプロセッサ・コンピュータ・システムを示すブロック図である。キャッシュを有するＤＭＡ機構をキャッシュ可能ＤＭＡ機構と呼び、そのキャッシュをＤＭＡキャッシュと呼ぶものとする。
【００１１】
非対称異機種マルチプロセッサ・コンピュータ・システム１００は、キャッシュ可能なＤＭＡ機構を介して１つまたは複数の関連する非対称プロセッサ１０８（ＡＰＵ）に密結合された、共通の共用メモリまたはシステム・メモリ１０４を有する標準的なマルチプロセッサ構成における１つまたは複数の制御プロセッサ１０６（ＰＵ）から構成されており、ＡＰＵのそれぞれがプロセッサ１１０およびローカル・メモリ１１２を備えている。
【００１２】
ＡＰＵ１０８は、そのローカル・メモリ１１２との間のＤＭＡオペレーションを介して、共通の共用メモリまたはシステム・メモリ１０４に間接的にアクセスすることができる。ＤＭＡオペレーションは、ＤＭＡコントローラ１５０によって実施される。ＤＭＡコントローラ１５０は、接続１１４によってＤＭＡキャッシュ１０２に接続されており、ＤＭＡキャッシュ１０２は、接続１１６によってシステム・メモリ１０４に接続されている。ＤＭＡコントローラ１５０はまた、接続１２４によってシステム・メモリ１０４に直接接続されている。
【００１３】
ＡＰＵ１０８のプロセッサ１１０、およびＡＰＵ１０８のローカル・メモリ１１２は、接続１２０、１２２によってＤＭＡコントローラ１５０にそれぞれ接続されている。
【００１４】
一代替実施形態では、ＤＭＡコントローラ１５０はさらに、直接ＰＵ１０６に接続される。この接続を用いることによって、ＰＵ１０６はＤＭＡコマンドおよびＤＭＡキャッシュ管理コマンドを発行することができる。この接続により、ソフトウェアにより柔軟性が提供される。ＤＭＡコントローラ１５０とＰＵ１０６の間でこの直接接続を有する代替実施形態ではまた、ＰＵ１０６によって発行されたコマンドに対してＤＭＡコントローラ１５０に追加される関連のＤＭＡコマンド・キューがある。ＤＭＡコマンド・キューに関するさらなる情報については、以下の、図２の議論を参照されたい。また、図示されていない２つのキュー（ＡＰＵキューとＰＵキュー）にあるコマンドの実行順序を決定するために、選択マルチプレクサ（mux）が２つのキューの間に追加される。任意の選択方法、例えばラウンド・ロビンを使用することができる。
【００１５】
一代替実施形態では、すべてのＰＵ１０６とインターフェースするために、１つまたは複数の追加のキャッシュを使用することができる。この１つまたは複数のキャッシュは、ＰＵ１０６およびシステム・メモリに接続されるはずである。一代替実施形態では、ＤＭＡキャッシュはないが、ＰＵ１０６およびシステム・メモリ１０４に接続された１つまたは複数のキャッシュがある。ＤＭＡコントローラ１５０上で実行されるコマンドは、ＰＵ１０６およびシステム・メモリ１０４に接続された１つまたは複数のキャッシュのオペレーションに影響を与える。
【００１６】
データは、ＤＭＡキャッシュ１０２にフェッチされる。ＤＭＡコントローラ１５０がＤＭＡキャッシュ１０２に記憶されているデータを要求したとき、ＤＭＡコントローラ１５０はそのデータを取り出すためにシステム・メモリ１０４にまですべて戻る必要はない。そうではなく、ＤＭＡコントローラ１５０は、ＤＭＡキャッシュ１０２にアクセスしてそのデータを取り出し、ローカル・メモリ１１２にデータを転送する。ＤＭＡキャッシュ１０２とローカル・メモリ１１２の間のデータ転送は、システム・メモリ１０４とローカル・メモリ１１２の間でデータを転送するより何倍も速い。その結果、プロセッサ１１０で動くプログラムはずっと高速に動作することができる。
【００１７】
図２は、ＡＰＵ１０８またはＰＵ１０６で動くソフトウェアによって作成されたキャッシュ管理コマンドを実行するように構成されたＤＭＡコントローラ２００の拡大図を示すブロック図である。ＡＰＵ１０８またはＰＵ１０６で動くソフトウェアは、ＤＭＡキャッシュ２１０のオペレーションを制御するためのコマンドを生成する。そのコマンドは、ＡＰＵ１０８またはＰＵ１０６からＤＭＡコントローラ２００に送られ、次いで実行される。その結果、ＡＰＵ１０８またはＰＵ１０６で動くソフトウェア・プログラムは、ＤＭＡキャッシュ２１０の管理を制御する。
【００１８】
ＤＭＡコントローラ２００は、接続２１４を介してＡＰＵ１０８からコマンドを受け取る。そのコマンドは、ＤＭＡコマンド・キュー２０２中に置くことができる。そのコマンドに関連するパラメータは、転送サイズや、タグ、アドレッシング情報などの情報を提供する。ＤＭＡコントローラのアンロール（unroll）および変換ロジック・コンポーネント２０４は、転送長が完全に満たされるまでＤＭＡコマンドおよびそのパラメータによって記述されたＤＭＡオペレーションをアンロールして、１つまたは複数のより小さなバス要求２１８に変換する。アンロールおよびバス要求の発行は、並列に行うことができる。バス要求は、ＤＭＡデータ・キャッシュ２１０、およびローカル・メモリ１１２やシステム・メモリ１０４などの他のメモリに結合されたマルチプロセッサ・コヒーレント・バス（ＭＰコヒーレント・バス）２３２で転送される。データは、接続２２４、２２６、２２８、２３０を経由し、インバウンド・データ・バッファ２０８とアウトバウンド・データ・バッファ２０６を介してＤＭＡデータ・キャッシュ２１０とローカル・メモリ１１２の間で受け渡しされる。ＭＰコヒーレント・バス要求、データ転送、および次のバス要求の発行はすべて並列に行うことができる。
【００１９】
キャッシュ管理のためのコマンドは、データをキャッシュに記憶し、キャッシュからのデータを書き込み、キャッシュ中のデータを消去し、キャッシュ中のもはや必要としないデータをマーキングするためのコマンドを含む。コマンドのパラメータは、記憶すべきまたは書き込むべきデータの位置、および他の情報を指定する。ＤＭＡキャッシュ２１０が実装されると、ＤＭＡコントローラ２００がコマンドを実行することにより、ＤＭＡキャッシュ２１０のオペレーションが管理される。これらのコマンドは、ＤＭＡキャッシュが実装されない場合であっても使用することができる。このような実施形態では、ＤＭＡコントローラ２００がコマンドを実行することにより、ＤＭＡコントローラが転送しているデータを保持する他のキャッシュに影響を与えることになるであろう。
【００２０】
本発明の一実施形態では、パラメータには、クラス・ライン（ＣＬ）、タグ（ＴＧ）、転送サイズ（ＴＳ）、有効アドレス・ハイ（ＥＡＨ）、および有効アドレス・ロー（ＥＡＬ）が含まれる。ＴＳはコマンドで操作するデータのバイト数を示す。キャッシュ管理制御コマンドはすべて、暗黙のタグ特有のバリアを有する。暗黙のタグ特有のバリアは、以前に発行された同じタグＩＤを有するすべてのコマンドが完了するまで、同じタグＩＤを有するキャッシュ管理制御コマンドおよびその後に発行されるすべてのコマンドが、実行されないようにする。ＥＡＨおよびＥＡＬは組み合わされ、または結合されて有効アドレスが作成される。一実装形態では、ＥＡＨはアドレスの上位３２ビットであり、ＥＡＬは下位３２ビットである。それらを結合して、６４ビットのアドレスが作成される。特有のコマンドは、次のものを含む。
【００２１】
１．Data_cache_range_touch
このコマンドは、コマンドで指定されるアドレス範囲に対して、ゲット（すなわち、ロード）・コマンドが発行される可能性があるというＤＭＡコントローラ２００への指示を含む。ＤＭＡコントローラ２００は、その有効アドレスおよび転送サイズによって識別された範囲のデータを関連のＤＭＡキャッシュに移動しようとする。このコマンドは、ＤＭＡキャッシュを有しない実施形態でも使用することができ、メモリのコヒーレンシが必要とされるストレージのために、他のシステム・キャッシュに変更データをシステム・メモリへ記憶させるようにする。変更データをシステム・メモリへ記憶することにより、将来のＤＭＡ転送の待ち時間を低減することができる。その記憶は、必ずしも他のキャッシュ中のラインを無効にする必要はない。このコマンドはまた、ソフトウェアによるコヒーレンシの維持にも使用することができる。
【００２２】
２．data_cache_range_touch_for_store
このコマンドは、コマンドで指定されるアドレス範囲に対して、プット（すなわち、記憶）・コマンドが発行される可能性があるというＤＭＡコントローラ２００への指示を含む。ＤＭＡコントローラ２００は、その有効アドレスおよび転送サイズによって識別された範囲のデータを関連のＤＭＡキャッシュに移動しようとする。このコマンドは、コマンド１とは対照的に、データを変更する意図があることをＤＭＡコントローラ２００に知らせる。マルチプロセッサ・システムは、この知識を用いて他のシステム・キャッシュ中のデータの無効な（無効化された）コピーをマーキングし、したがって、現在のキャッシュがそのデータの唯一の所有者であるようにする。データの唯一の所有者は、コヒーレンシ・アクションを行う必要なく、データを修正することができる。このコマンドは、ＤＭＡキャッシュを有しない実施形態でも使用することができ、メモリのコヒーレンシが必要とされるストレージのために、他のシステム・キャッシュに変更データをシステム・メモリへフラッシュさせるようにする。変更データをシステム・メモリへフラッシュすることにより、将来のＤＭＡ転送の待ち時間を低減することができる。フラッシュは、他のキャッシュ中のラインを無効にする。このコマンドはまた、ソフトウェアによるコヒーレンシの維持にも使用することができる。
【００２３】
３．data_cache_range__set_to_zero
このコマンドは、有効アドレスおよび転送サイズによって指定されるストレージの範囲をゼロに設定する。ＤＭＡキャッシュを有する一実施形態では、このコマンドは、ＤＭＡコントローラ２００がシステム・メモリの領域に関連するキャッシュ・ラインの所有権を取得し、ＤＭＡキャッシュ中のデータをゼロにするようにする。システム・メモリの領域は実質的にゼロにされる。このコマンドは、ＤＭＡキャッシュを有しない実施形態で、システム・メモリの領域をゼロにするためにも使用することができる。ＤＭＡキャッシュを有しない実施形態では、システム・メモリ領域にはゼロが書き込まれる。
【００２４】
４．data_cache_range_store
有効アドレスおよび転送サイズによって指定されるデータ・ブロックが変更されていると見なされる場合、それはメイン・ストレージに書き込まれる。関連するプロセッサのＤＭＡキャッシュ中で変更されている場合もデータ・ブロックは変更され、あるいはそのストレージがメモリのコヒーレンシを必要とする場合、システム中のどのキャッシュ中のデータ・ブロックも変更される。データ・ブロックは、キャッシュ中に残る可能性もあるが、変更されているとは見なされなくなる。このコマンドは、ＤＭＡを有しない実施形態で使用することができ、メモリのコヒーレンシが必要されるストレージのために、他のシステム・キャッシュに変更データをシステム・メモリへ記憶させる。変更データをシステム・メモリへ記憶することにより、将来のＤＭＡ転送の待ち時間を低減することができる。この記憶は、必ずしも他のキャッシュ中のラインを無効にする必要はない。このコマンドはまた、ソフトウェアによるコヒーレンシの維持にも使用することができる。
【００２５】
５．data_cache_range_flush
メモリのコヒーレンシが必要なストレージであり、有効アドレスおよび転送サイズによって指定されるデータ・ブロックがシステム中の任意のキャッシュ中で変更されている場合、データ・ブロックはメイン・ストレージに書き込まれ、すべてのプロセッサのキャッシュ中で無効化される。メモリのコヒーレンシが必要なストレージであり、有効アドレスおよび転送サイズによって指定されるデータ・ブロックがいずれのキャッシュ中でも有効である場合、関連するキャッシュ・ブロックは無効化される。
【００２６】
メモリのコヒーレンシが必要なストレージではなく、データ・ブロックが、発行している（issuing）ＡＰＵのＤＭＡキャッシュ中で変更された場合、変更ブロックは、メイン・ストレージに書き込まれ、発行しているＡＰＵのＤＭＡキャッシュ中で無効にされる。メモリのコヒーレンシが必要なストレージではなく、データ・ブロックが、発行しているＡＰＵのＤＭＡキャッシュ中で有効である場合、ＤＭＡコントローラに関連するＤＭＡキャッシュ中でラインが無効化される。
【００２７】
このコマンドは、ＤＭＡを有しない実施形態中で使用することができ、他のシステム・キャッシュに変更データをシステム・メモリへフラッシュさせる。変更データをシステム・メモリへフラッシュすることにより、将来のＤＭＡ転送の待ち時間を低減する。フラッシュは、他のキャッシュ中のラインを無効にする。このコマンドはまた、ソフトウェアによるコヒーレンシの維持にも使用することができる。
【００２８】
多くの代替または追加のコマンドおよびコマンド形式を使用することができる。当業者であれば、容易に追加のＤＭＡコマンドを定義することができる。それらには、これに限らないが、data_cache_range_invalidateおよびストライド・コマンド形式が含まれる。ストライド方式（touch）では、例えば、非連続のデータ・ブロックにアクセスする。例えば、８ブロックにアクセスし、６４ブロックをスキップし、８ブロックにアクセスし、６４ブロックをスキップする。ストライド方式は、グラフィックスおよびマトリクス・オペレーションで有益であり得る。さらに、様々なフラッシュもしくは記憶の形式も使用することができる。より一般的には、ＤＭＡコマンド・セットは、今日のプロセッサ中で見られる、キャッシュ管理のための同じ機能を実施するように拡張することができる。
【００２９】
他のパラメータを同じまたは他のＤＭＡコントローラ・アーキテクチャに使用することもできる。例えば、コマンドは、有効アドレスではなく、実アドレスを参照し、あるいはタグを含まないこともできる。コマンドは、開始アドレスおよび転送サイズではなく、転送すべきデータの開始および終了アドレスを参照することもできる。より簡単には、コマンドは固定したデータ・ブロック・サイズに対して１度に働くこともできる。その場合、転送サイズ・パラメータまたはその等価な形態は必要ないはずである。
【００３０】
ＤＭＡキャッシュを制御するためのＤＭＡコマンドの多くの様々な形式、およびコマンドが実行される多くの様々な方式があり得る。パラメータは、他の情報を含むことができ、あるいはアドレッシング情報だけを含むこともできる。コマンドが単一のデータ・ブロックに対して働く場合、コマンドを１つまたは複数のより小さなバス要求にアンロールする必要はない。各コマンドがバス要求を生成する。
【００３１】
次に図３を参照すると、図１に示すキャッシュ可能なＤＭＡ機構を適用できる、ＤＭＡロードのためのキャッシュ機構のオペレーションを示す流れ図が示されている。図３は、キャッシュ管理コマンドを用いてデータをＤＭＡキャッシュにプリフェッチするためのステップを含む。
【００３２】
ステップ３０２で、ＤＭＡキャッシュ管理コマンドが、データをＤＭＡキャッシュ１０２にプリフェッチするために発行される。ステップ３０４で、ＤＭＡ機構は、システム・メモリからＤＭＡキャッシュ１０２へのデータ転送の実施を開始する。例えば、図１を見ると、ＤＭＡコントローラ１５０は、システム・メモリ１０４からＤＭＡキャッシュ１０２にデータ転送を行う。図３に戻ると、ステップ３０６で、システム・メモリのデータを要求するためのＤＭＡロード要求が発行される。ステップ３０８で、要求されたデータがＤＭＡキャッシュ１０２中で見つけられたかどうか判定される。ステップ３０８で、要求されたデータがＤＭＡキャッシュ１０２中で見つかった場合（キャッシュ・ヒット）、プロセスは、ステップ３１０に進み、要求されたデータがＤＭＡキャッシュ１０２からローカル・メモリ１１２に直接ロードされる。ステップ３０８で、要求されたデータがＤＭＡキャッシュ１０２中で見つからない場合（キャッシュ・ミス）、プロセスはステップ３１２に進み、要求されたデータはシステム・メモリ１０４からローカル・メモリ１１２にロードされる。
【００３３】
ステップ３０２で発行されたＤＭＡキャッシュ管理コマンド、およびステップ３０４で実施された転送の結果、ステップ３０８におけるキャッシュ・ヒットの確率は、ステップ３０２と３０４が実施されなかった場合よりずっと高い。したがって、キャッシュ管理コマンドの提供、およびＡＰＵ１０８上で実行されるソフトウェア・プログラムによるキャッシュ管理コマンドの生成によって、ＤＭＡキャッシュ１０２のより効率的な使用が可能になる。プログラムは、どのシステム・メモリ１０４のデータが必要になるか前もって知ることができ、キャッシュ管理コマンドをＤＭＡコントローラ１５０に発行してそのデータをＤＭＡキャッシュ１０２にプリロードし、それによって、ソフトウェア・プログラムはデータに高速アクセスできるようになる。その結果、データの取り出しを待っている待ち時間の多くが解消される。これらのキャッシュ管理コマンドが提供されない場合は、ＡＰＵ１０８によって要求されたデータは、ＤＭＡキャッシュ１０２中でほとんど見つからない可能性がある。
【００３４】
図３は、キャッシュ管理コマンドを１つだけ使用（ＤＭＡロードのためのプリフェッチ）する場合を示しているが、当業者であれば他のＤＭＡオペレーション（例えば、ＤＭＡ記憶）用にキャッシュ管理のための類似のフローを開発することができる。さらに、キャッシュ管理コマンドはまた、他のシステム・オペレーション（例えば、ソフトウェアよるキャッシュ・コヒーレンシの管理およびＩ／Ｏ転送）のために使用することもできる。
【００３５】
ローカル・メモリ１１２にデータを書き込み、かつシステム・メモリ１０４にライトバックすることを、本発明の真の趣旨から逸脱することなく別の方式とすることができる。例えば、ＤＭＡキャッシュ１０２を介してデータをシステム・メモリ１０４にライトバックすることができる。あるいは、ＤＭＡキャッシュ１０２を経由せずにデータをシステム・メモリ１０４に直接ライトバックすることもできる。後者の場合、システム・メモリ１０４にライトバックされるデータのためのキャッシュ・エントリを無効化することもできる。同様に、システム・メモリ１０４に要求したデータがＤＭＡキャッシュ１０２上で見つからなかったとき、データをＤＭＡキャッシュ１０２およびローカル・メモリ１１２に書き込み、またはローカル・メモリ１１２だけに、またはＤＭＡキャッシュ１０２だけに書き込むことができる。後者の場合、データをローカル・メモリ１１２にロードするために、ステップ３１２に代えて、２つのステップが必要となる。第１ステップでは、データがＤＭＡキャッシュ１０２に運ばれる。第２ステップは、ステップ３１０と同じである。このステップで、要求されたデータはＤＭＡキャッシュ１０２からローカル・メモリ１１２にロードされる。データのローカル・メモリ１１２への書込みおよびシステム・メモリ１０４へのライトバックのプロセスに関するこれらおよび他の詳細は、これ以上ここでは開示されない。
【００３６】
図４は、本発明の一実施形態におけるＤＭＡコマンドのアンロールを示す流れ図である。ステップ４０２で、ＤＭＡコントローラ１５０に接続されているＡＰＵ１０８または他のプロセッサによってコマンドが発行され、ＤＭＡコマンド・キュー２０２に記憶される。例えば、図１で、ＡＰＵ１０８がＤＭＡコントローラ１５０にコマンドを発行する。図４に戻ると、ステップ４０４で、ＤＭＡコマンド・キュー２０２から（タグまたは他の修飾子に基づいて）コマンドが送り出される。ＤＭＡコントローラ１５０が制御プロセッサ１０６に直接接続されており、かつ２つのプロセッサＤＭＡキューが存在する代替の実施形態では、コマンドおよびタグは関連するキュー用とだけ見なされる。各キューから送り出されたコマンド同士の間を選択するにはまた、他のステップが必要となる。他の実施形態では、ＤＭＡコントローラは、一度に１つのコマンドを処理し、またコマンド・パラメータは、記憶されフェッチされているデータの他のパラメータを参照することができる。
【００３７】
ステップ４０６で、コマンドは、アンロールおよび変換ロジック２０４を用いて、キャッシュ・ブロック・サイズのサブコマンドへとアンロールされる。ステップ４０８から４１４は、ステップ４０６のサブステップを示す。ステップ４０８で、各ブロックの有効アドレス（ＥＡ）が、正しいサイズのコマンドの実アドレスに変換される。ステップ４１０で、データ・ブロックに対するバス要求が発行される。ステップ４１２で、（キャッシュ・ブロック・サイズまたはストライド値によって増分されて）ＥＡが更新される。ＥＡの更新および次のバス要求は、並列に行うことができる。ステップ４１４で、バス要求に対するＭＰコヒーレント・バス結果が取得される。ステップ４１６で、バス要求に対するデータが転送される。ＭＰコヒーレント・バス結果、データ転送、および次のバス要求の発行は、すべて並列に行うことができる。ステップ４１８で、コマンドの転送サイズがすべて満たされるまでステップ４０６から４１６が繰り返される。
【００３８】
他の実施形態では、コマンドはアンロールの必要がないデータの単一ブロックを参照することもできる。他の実施形態では、コマンドは、パラメータとして有効アドレスではなく実アドレスを使用し、あるいは影響を受けるデータのアドレスを参照する他の任意のパラメータを使用することもできる。他の実施形態では、バスは、ＭＰコヒーレント・バスではなく、様々なシステム・ストレージ装置内で要求されるデータを転送するための任意の適切な１つまたは複数のバスとすることもできる。
【００３９】
本発明は、多くの形式および実施形態を取り得ることが理解されよう。したがって、本発明の趣旨または範囲を逸脱することなく、前の記載においていくつかの変形を行うことができる。ここに概要を示した機能によって、様々なプログラミング・モデルを可能とすることができる。特定のプログラミング・モデルのいずれかが好ましいとしてこの開示を読むべきではなく、この開示は、これらのプログラミング・モデルを構築できるその基礎となる機構を対象としている。
【００４０】
このように、本発明を、その好ましい実施形態のいくつかを参照することによって説明してきたが、開示の諸実施形態は、限定的ではなく例示的な性質のものであり、前述の開示には、広い範囲の変形、修正、変更、および代用が企図されており、いくつかの例では、本発明のいくつかの機能が、それに対応するその他の機能を使用せずに実施できることに留意されたい。当業者であれば、好ましい実施形態に関する前の説明を見直すことによって、かかる多くの変形形態および実施形態を望ましいものと考えることもあり得る。したがって、添付の特許請求の範囲は広く解釈され、また本発明の範囲に合致した形で解釈されるのが適切である。
【図面の簡単な説明】
【００４１】
【図１】キャッシュ可能なＤＭＡ機構およびＤＭＡキャッシュを有する非対称異機種マルチプロセッサ・コンピュータ・システムを示すブロック図である。
【図２】キャッシュ管理のためにＤＭＡコマンドが実行されるように構成されたＤＭＡコントローラの拡大図を示すブロック図である。
【図３】図１および図２に示すＤＭＡ機構に適用可能なキャッシュ機構のオペレーションを示す流れ図である。
【図４】ＤＭＡキャッシュ管理のためのコマンドのアンロールを示す流れ図である。
【符号の説明】
【００４２】
１００  コンピュータ・システム
１０２  ＤＭＡキャッシュ
１０４  システム・メモリ
１０６  制御プロセッサ、ＰＵ
１０８  非対称プロセッサ、ＡＰＵ
１１０  プロセッサ
１１２  ローカル・メモリ
１１４、１１６、１２０、１２２、１２４  接続
１５０、２００  ＤＭＡコントローラ
２０２  ＤＭＡコマンド・キュー
２０４  ＤＭＡコントローラのアンロールおよび変換ロジック・コンポーネント
２０６  アウトバウンド・データ・バッファ
２０８  インバウンド・データ・バッファ
２１０  ＤＭＡキャッシュ、ＤＭＡデータ・キャッシュ
２１４  接続
２１８  バス要求
２２４、２２６、２２８、２３０  接続
２３２  マイクロプロセッサ・コヒーレント・バス
【図１】
2005276199.tif 000003
【図２】
2005276199.tif 000004
【図３】
2005276199.tif 000005
【図４】
2005276199.tif 000006