(57)【特許請求の範囲】
【請求項１】
ＣＰＵ用キャッシュを有するＣＰＵとシステムメモリとを接続するシステムバスと、ダイレクト・メモリ・アクセス（ＤＭＡ）機能を備えるＩ／Ｏデバイスを接続するＩ／Ｏバスと、前記Ｉ／Ｏバスおよび前記システムバスに接続され、ＰＣＩホスト・ブリッジ用キャッシュを有するＰＣＩホスト・ブリッジと、を備えるデータ処理装置におけるＤＭＡ方法であって、
前記ＰＣＩホスト・ブリッジが前記システムメモリ上のベージバッファの第１キャッシュ・ラインを、キャッシュ可能読取りコマンドにより前記ＰＣＩホスト・ブリッジ用キャッシュに読込む第１読込みステップと、
前記第１読込みステップに応答して、前記第１キャッシュ・ラインに関して前記ＣＰＵが前記ＣＰＵ用キャッシュにより共用状態として取り扱うステップと、
前記ＰＣＩホスト・ブリッジが前記システムメモリ上のページバッファの残りのキャッシュ・ラインを、キャッシュ目的でない読取りコマンドにより前記ＰＣＩホスト・ブリッジ用キャッシュに読込む第２読込みステップと、
前記第２読込みステップに応答して、前記残りのキャッシュ・ラインについて前記ＣＰＵが前記ＣＰＵ用キャッシュで変更状態として取り扱うステップと、
前記ＣＰＵが共用状態として管理している前記第１キャッシュ・ラインに対し、前記ＣＰＵが書込みを行う場合、前記ＣＰＵが前記システムバスを介して前記ＰＣＩホスト・ブリッジ用キャッシュでの無効化処理を行うためのシステム・バス・コマンドを出力するステップと、
前記システム・バス・コマンドを出力するステップに応答して、前記ＰＣＩホスト・ブリッジが前記第１キャッシュ・ラインを含むページバッファ全体について前記ＰＣＩホスト・ブリッジ用キャッシュの無効化処理を実行するステップと、
前記ＣＰＵが変更状態として管理している前記残りのキャッシュ・ラインに対し、前記ＣＰＵが書込を実行する場合、前記ＣＰＵが前記システムバスを介して前記無効化処理のための前記システム・バス・コマンドを発行しないように制御するステップと を含む、ＤＭＡ方法。
【請求項２】
ＣＰＵ用キャッシュを有するＣＰＵとシステムメモリとを接続するシステムバスと、ダイレクト・メモリ・アクセス（ＤＭＡ）機能を備えるＩ／Ｏデバイスを接続するＩ／Ｏバスと、前記Ｉ／Ｏバスおよび前記システムバスに接続され、ＰＣＩホスト・ブリッジ用キャッシュを有するＰＣＩホスト・ブリッジと、を備えるデータ処理装置であって、
前記ＰＣＩホスト・ブリッジが前記システムメモリ上のベージバッファの第１キャッシュ・ラインを、キャッシュ可能読取りコマンドにより前記ＰＣＩホスト・ブリッジ用キャッシュに読込ませる第１読込み手段と、
前記第１読込み手段による読込みに応答して、前記第１キャッシュ・ラインに関して前記ＣＰＵが前記ＣＰＵ用キャッシュにより共用状態として取り扱う手段と、
前記ＰＣＩホスト・ブリッジが前記システムメモリ上のページバッファの残りのキャッシュ・ラインを、キャッシュ目的でない読取りコマンドにより前記ＰＣＩホスト・ブリッジ用キャッシュに読込ませる第２読込み手段と、
前記第２読込み手段による読込みに応答して、前記残りのキャッシュ・ラインについて前記ＣＰＵが前記ＣＰＵ用キャッシュで変更状態として取り扱う手段と、
前記ＣＰＵが共用状態として管理している前記第１キャッシュ・ラインに対し、前記ＣＰＵが書込みを行う場合、前記ＣＰＵが前記システムバスを介して前記ＰＣＩホスト・ブリッジ用キャッシュでの無効化処理を行うためのシステム・バス・コマンドを出力する手段と、
前記システム・バス・コマンドを出力する手段の出力に応答して、前記ＰＣＩホスト・ブリッジが前記第１キャッシュ・ラインを含むページバッファ全体について前記ＰＣＩホスト・ブリッジ用キャッシュの無効化処理を実行する手段と、
前記ＣＰＵが変更状態として管理している前記残りのキャッシュ・ラインに対し、前記ＣＰＵが書込を実行する場合、前記ＣＰＵが前記システムバスを介して前記無効化処理を実行させための前記システム・バス・コマンドを発行しないように制御する手段と を含む、データ処理装置。
【請求項３】
請求項２に記載の機能手段を前記データ処理装置に実現する、装置実行可能なプログラムを記録した装置可読な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にデータ処理システムに関し、特にメイン・メモリおよび１つ以上のキャッシュ・メモリからデータをプリフェッチする処理システムに関する。さらに特に、本発明は、ダイレクト・メモリ・アクセスとキャッシュ・メモリの性能を改善することに関する。
【０００２】
【従来の技術】
最新のマイクロプロセッサ・システムでは、プロセッサ・サイクル・タイムは、技術が改善し続けるにつれて、減少し続けている。また、見込み実行、より深いパイプライン、さらに多くの実行エレメント等のデザイン技術は、処理システムの性能を改善し続けている。プロセッサがメモリからより速くデータと命令を要求するので、改善された性能は、システムのメモリ・インターフェースに重い負担を課す。処理システムの性能を増すために、キャッシュ・メモリ・システムがしばしば実装される。
【０００３】
キャッシュ・メモリを用いる処理システムは、技術上周知である。キャッシュ・メモリは、現在のプログラムとデータを、最小の待ち時間でプロセッサ（ＣＰＵ）に使用可能にすることによって、データ処理システムの速度を増す、非常に高速なメモリ・デバイスである。メモリ待ち時間を減少させるために、大きなオンチップ・キャッシュ（Ｌ１キャッシュ）が実装され、そしてそれらはより大きなオフチップ・キャッシュ（Ｌ２キャッシュ）によってしばしば増大される。キャッシュは、キャッシュ・ライン・データのための記憶領域として働く。キャッシュ・メモリは、「ライン」に典型的に分割され、各ラインは、関連する「タグ」と属性ビットを有している。キャッシュ・メモリ内のラインは、メイン・メモリからのデータのコピーを含む。例えば、キャッシュ内の「４Ｋページ」のデータは、メモリからの３２ラインのデータ（各ライン毎に１２８バイトを有する）から成ると定義できる。
【０００４】
キャッシュ・メモリ・システムの隠れた重要な利点は、最も頻繁にアクセスされた命令とデータを、高速のキャッシュ・メモリ内に保持することによって、全処理システムの平均メモリ・アクセス・タイムが、キャッシュのアクセス・タイムに近づくことである。キャッシュ・メモリのサイズは、メイン・メモリのサイズに対しほんのわずかな部分であるが、プログラムの「参照の局所性(locality of reference)」特性によって、メモリ要求の大部分は高速キャッシュ・メモリ内で首尾よく検出される。この特性は、メモリ参照がメモリのいくつかの局所化された領域（この例では、Ｌ１とＬ２）に限定されるようにしている。
【０００５】
キャッシュ・メモリの基本動作は、周知である。プロセッサがメモリにアクセスする必要があると、キャッシュが調べられる。プロセッサによってアドレスされたワードがキャッシュ内に検出されるならば、そのワードは高速メモリから読み取られる。プロセッサによってアドレスされたワードがキャッシュで検出されないならば、そのワードを読み取るために、メイン・メモリがアクセスされる。アクセスされたワードを含むワードのブロックが、メイン・メモリからキャッシュ・メモリに転送される。このようにして、追加データがキャッシュに転送され（プリフェッチされ）、メモリへの将来の参照は、要求されたワードを高速キャッシュ・メモリ内に、おそらく検出するであろう。
【０００６】
プリフェッチ技術は、オンチップＬ１キャッシュに時間的に先にメモリ・データを供給して、待ち時間を減らすために、しばしば実装される。理想的には、データと命令は、十分に先んじてプリフェッチされ、したがって、命令とデータのコピーは、プロセッサが必要とするとき、常にＬ１キャッシュにある。命令および／またはデータのプリフェッチは、技術上周知である。
【０００７】
高いＩ／Ｏダイレクト・メモリ・アクセス（ＤＭＡ）性能を要求するシステム（例えば、グラフィックス）では、Ｉ／Ｏ予定のシステム・メモリ・データの典型的管理は、次の通りである。
【０００８】
１）システム・プロセッサは、システム・メモリ空間内の１組の４Ｋバイト（４Ｋ）・ページ・バッファに、一連のストアを行うことによって、データを作成する。これは、Ｌ１／Ｌ２キャッシュ内で、データを‘変更された’（キャッシュ内で有効であり、システム・メモリにライトバックされない）としてマークさせる。
【０００９】
２）プロセッサは、Ｉ／Ｏデバイスに、作成されたそれら４ＫページへのＤＭＡ読み出しの実行を開始させる。
【００１０】
３）Ｉ／Ｏデバイスは、システム・メモリに一連のＤＭＡ読取りを行う。
【００１１】
４）Ｉ／Ｏデバイスに代わってＤＭＡ動作を実行するＰＣＩホスト・ブリッジは、‘共用された’（キャシュ内で有効、システム・メモリ内で有効）状態で、データをプリフェッチおよびキャッシュする。Ｌ１／Ｌ２は、ＰＣＩホスト・ブリッジがデータを読み取るとき、各データ・キャッシュ・ラインを、‘変更された’状態から、‘共用された’状態に変更する（すなわち、Ｌ１／Ｌ２が介入し、およびデータをメモリに直接に供給し、またはデータをメモリに‘プッシュ’する。データは、メモリから読み取ることができる。）。
【００１２】
５）ＤＭＡデバイスが終了すると、４Ｋバッファは再使用される（すなわち、ソフトウェアは、データが循環する一定組のバッファを有する）。
【００１３】
ＤＭＡ Ｉ／Ｏ 性能を管理するために、ＰＣＩホスト・ブリッジは、それ自身のキャッシュを含むことができる。このキャッシュは、共用状態のデータをプリフェッチ／キャッシュするために用いられる。これは、ＤＭＡデータがデータ消費者（例えば、Ｉ／Ｏデバイス）の近くに移動することを可能にし、ＤＭＡ読取り性能を最大にする。ＰＣＩホスト・ブリッジが、システム・バス上にキャッシュ可能読取りを発行すると、キャッシュ可能読取りを実行するＰＣＩホスト・ブリッジの故に、Ｌ１／Ｌ２を‘変更された’状態から‘共用された’状態にさせる。この状態変更アクションは、ソフトウェアがこの４Ｋページ・キャッシュ空間を再使用することを要求して、新しいＤＭＡデータをストアすると、性能の不利を生ずる。というのは、Ｌ１／Ｌ２キャッシュ内の各ラインが‘共用された’状態に変更されているからである。新しいストアが生じさせるためには、Ｌ１／Ｌ２は、各ラインにシステム・バス・コマンドを実行して、ラインが‘共用された’から‘変更された’にされていることを指示しなければならない。これは、たとえ古いデータが使用されていなくても（ＰＣＩホスト・ブリッジは、そのデータが現在無効である指示を必要とする）、４Ｋページ内の各キャッシュ・ライン（３２ラインある）に生じなければならない。新しいストアが実行できる前に、システム・バス上で実行されて、全てのそれらキャッシュ・ラインの状態を‘変更された’に変更しなければならない、追加のメモリ・コヒーレンシー・トラフィック，３２システム・バス・コマンドは、プロセッサ性能をかなり低下させることもある。
【００１４】
Ｌ１／Ｌ２キャッシュが、‘変更された’状態とは逆に‘共用された’状態にあるとき、プロセッサによる４Ｋページへのストアは、４〜５倍長くかかることが示されてきた。これは、各キャッシュ・ラインの状態を‘変更された’に変更するために、システム・バス上に必要とされる追加のコヒーレンシー・トラフィックのためである。
【００１５】
ダイレクト・メモリ・アクセス・デバイスの速度と効率を増す方法と装置を提供することが望ましい。また、Ｌ１／Ｌ２キャッシュ内のページのデータの状態を変更するために、要求されるシステム・バス・コマンドの数を減らす方法と装置を提供することが望ましい。
【００１６】
【発明が解決しようとする課題】
したがって、本発明の１つの目的は、Ｌ１／Ｌ２キャッシュ内のバッファの状態を変更するために、要求されるシステム・バス・コマンドの数を減らす方法と装置を提供することである。
【００１７】
本発明の他の目的は、ダイレクト・メモリ・アクセス・デバイスの速度と効率を増大させる方法と装置を提供することである。
【００１８】
本発明のさらに他の目的は、キャッシュが、１つのバス動作でメモり・バッファをクリアすることを可能にする方法と装置を提供することである。
【００１９】
【課題を解決するための手段】
前述の目的は、次に述べられるように達成される。特別の‘Ｉ／Ｏ’ページは、大きなサイズ（例えば、４Ｋバイト）を有するが、区別できるキャッシュ・ライン特性を有するように定義される。ＤＭＡ読取りに対して、Ｉ／Ｏページ内の第１のキャッシュ・ラインは、ＰＣＩホスト・ブリッジによって、キャッシュ可能読取りとしてアクセスでき、および全ての他のラインは、キャッシュ不可アクセス（キャッシュ目的でないＤＭＡ読取り）である。ＤＭＡ書込みに対しては、ＰＣＩホスト・ブリッジは、全てのキャッシュ・ラインをキャッシュ可能としてアクセスする。ＰＣＩホスト・ブリッジは、データのためのＩ／Ｏページ・サイズのキャッシュ・スヌープ細分性(granularity)を管理する。このことは、ホスト・ブリッジがＩ／Ｏページ内のキャッシュ・ライン上でストア（無効にする）・タイプ・システム・バス動作を検出するならば、そのページ内のキャッシュされたデータは、無効にされる（Ｌ１／Ｌ２キャッシュは、このページ内の全てのキャッシュ・ラインをキャッシュ可能として、扱い続ける）ことを意味している。第１のラインをキャッシュ可能と定義することによって、ＰＣＩホスト・ブリッジ内のデータのページ全体を無効にするために、ただ１つのキャッシュ・ラインは、Ｌ１／Ｌ２キャッシュによってシステム・バス上で無効にされる必要がある。Ｉ／Ｏページ内の他のキャッシュ・ラインへの全てのストアは、システム・バス動作なしでＬ１／Ｌ２キャッシュ内で直接行うことができる。というのは、これらのキャッシュ・ラインがＬ１／Ｌ２キャッシュ内で‘変更された’状態にされているからである。
【００２０】
本発明の上述したおよび他の目的、特徴、利点は、以下の説明で明らかになるであろう。
【００２１】
【発明の実施の形態】
次に図に関して、特に図１に関して、本発明の実施の形態によるマルチプロセッサ・データ処理システムが表されている。データ処理システム１００は、マルチプロセッサ（ＳＭＰ）・システム１０２（１つだけ示されている）であり、これは、好ましくは、ＩＢＭ社から入手できるプロセッサのＰｏｗｅｒＰＣ（登録商標）ファミリーの１つから成る。ただ１つのプロセッサが、典型的な実施の形態で表されているが、当業者は、追加のプロセッサが、本発明によるマルチプロセッサ・データ処理システムで利用できることを理解するであろう。
【００２２】
プロセッサ１０２は、レベル１（Ｌ１）キャッシュ１０４を含む。データ・アクセス待ち時間を最小にするために、レベル２（Ｌ２）キャッシュ１０６のような、キャッシュ・メモリの１つ以上の追加レベルを、データ処理システム１００内に実装できる。下位のキャッシュ・レベル、Ｌ２は、データをＬ１キャッシュに送るために使用され、一般に漸次的により大きな記憶容量であるがより長い待ち時間を有する。例えば、Ｌ１キャッシュ１０４は、３２ＫＢの記憶容量と、約１〜２プロセッサ・サイクルのアクセス待ち時間を有することができる。Ｌ２キャッシュ１０６は、５１２ＫＢの記憶容量であるが、５プロセッサ・サイクルのアクセス待ち時間を有することができる。Ｌ２キャッシュ１０６は、プロセッサ１０２と、非常に大きな記憶容量を有するが５０プロセッサ・サイクルより長いアクセス待ち時間を有することができるシステム・メモリ１１０との間の中間記憶として働く。
【００２３】
キャッシュ階層内のレベルの数と、データ処理システム１００で用いられるキャッシュ階層構成との両方は、変更しうる。Ｌ２キャッシュ１０６は、ＣＰＵ１０２とシステム・メモリ１１０との間に接続された（システム・バス１１２を介して）専用キャッシュである。当業者は、示されたレベルと構成のさまざまな変更を実施できることが分かるであろう。
【００２４】
Ｌ２キャッシュ１０６は、システム・バス１１２を介してシステム・メモリ１１０に接続されている。また、システム・バス１１２には、メモリ・コントローラ１１４とＰＣＩホスト・ブリッジ１０８が接続されている。メモリ・コントローラ１１４は、システム・メモリ１１０へのアクセスを調整する。ソフトウェアは、ＤＭＡメモリ１２４（例えば、ＤＭＡメモリ１２４は、システム・メモリ１１０空間内の１組の４Ｋページ・バッファとすることができる）によって利用されるバッファ領域を、システム・メモリ１１０内に編成できる。ＰＣＩホスト・ブリッジ１０８は、システム・バス１１２をＰＣＩバス１１６に接続する。このＰＣＩバスは、ディスプレイ（図示せず）への接続を与えるグラフィックス・アダプタのようなＩ／Ｏデバイス、すなわちＩ／Ｏデバイス１１８，１２０に接続を与える。このように、システム・バス１１２，ＰＣＩホスト・ブリッジ１０８，ＰＣＩバス１１６は、付加デバイスを結合する相互接続部を形成し、その代替実施は技術上周知である。
【００２５】
入出力（Ｉ／Ｏ）サブシステムは、ＰＣＩホスト・ブリッジ（ＰＣＩＨＢ）１０８と共に、各Ｉ／Ｏデバイス１１８，１２０が付加される、ＰＣＩ(Peripheral Component Interconnect)バスのような、Ｉ／Ｏバス１１６から一般に構成される。Ｉ／Ｏバス１１６は、１つ以上のＩ／ＯデバイスをＰＣＩＨＢ１０８を介してシステム・バス１１２へ接続するのに用いられ、Ｉ／Ｏデバイス１１８，１２０にコマンドとデータを、ＰＣＩＨＢ１０８を介してシステム・メモリ１１０へ／から転送させる。
【００２６】
プロセッサ１０２が、Ｉ／Ｏデバイス１１８，１２０にアクセスしたいとき、ＰＣＩＨＢ１０８は、システム・バス１１２からＩ／Ｏバス１１６へプロセッサ・コマンドを渡すことができる。さらに、ＰＣＩＨＢ１０８は、また、Ｉ／Ｏデバイス１１８，１２０によって開始されるＩ／Ｏバス１１６からシステム・メモリ１１０へダイレクト・メモリ・アクセス（ＤＭＡ）を渡すことができる。ＤＭＡアクセスのために、ＰＣＩＨＢ１０８は、ＤＭＡ性能を改善するために、データをプリフェッチおよびキャシュできる。ＰＣＩＨＢ１０８は、システム・メモリ１１０にアクセスし、Ｌ１／Ｌ２キャッシュ１０４，１０６および自身のキャッシュ１０９にわたってコヒーレンシーを管理するために、システム・バス・コマンドを発行する際に、システム・バス１１２上でプロセッサ１０２と非常によく似た働きをする。
【００２７】
Ｉ／Ｏマスタ・デバイスは、ＰＣＩＨＢ１０８を介してシステム・メモリ１１０からいくつかの他の位置に（およびいくつかの他の位置からシステム・メモリ１１０に）データを転送するＩ／Ｏバス１１６上でＤＭＡを開始することができるデバイスである。このブロック図では、Ｉ／Ｏデバイス１２０は、システム・メモリ１１０へおよびからデータを転送できるＩ／Ｏマスタ・デバイスを示す。これらのタイプの転送は、プロセッサ１０２による介入なしに、行うことができる。
【００２８】
Ｉ／Ｏデバイス１１８，１２０は、マウスまたはトラックボールのようなグラフィカル・ポインティング・デバイス，ディスプレイ，プリンタ（これらの全ては、標準的なアダプタを介してＰＣＩバス１１６にインターフェースできる）を含む、標準的な周辺装置を備えることができる。不揮発性メモリ１２２は、ハード・ディスク・ドライブを備えることができ、オペレーティング・システムとシステム１００の動作を制御する他のソフトウェアとをストアし、それらはパワーオンされているシステム１００に応じて揮発性システム・メモリ１１０にロードされる。当業者は、データ処理システム１００が、シリアルおよびパラレル・ポート、ネットワークまたは付加デバイスへの接続、等のような、図１に示されない多くの追加コンポーネントを含むことができることが分かるであろう。そのような変更と変形は、本発明の趣旨と範囲内にある。
【００２９】
ＤＭＡバッファ１２４内では、例えば、各１２８バイトのデータの３２ラインから成る４Ｋページ・バッファ１３０，１３２に、データをストアできる。Ｌ１／Ｌ２キャッシュ１０２と１０４が、プロセッサ１０２からＬ１／Ｌ２キャッシュ内で共用状態のラインへのストアを実行できる前に、分離システム・バス動作が、各キャッシュのコピーを無効にすることを他のキャッシュに知らせるために要求される。これが各キャッシュ・ラインに対して行われるので、プロセッサは、１つのページ・バッファをクリアして、新しいデータのための空間をあけるための繰り返しバス動作の数の故にスローダウンされる。本発明は、バッファが３２個のバス動作の代わりに１個のバス動作でクリアできるように、４Ｋページ・バッファ（Ｉ／Ｏ）をセットアップする。
【００３０】
典型的な４Ｋページ・バッファは、バッファ１３０と１３２によって表される。４Ｋ Ｉ／Ｏ ページ・バッファは、本発明から、バッファ１３４と１３６によって表される。バッファ内のデータのラインは、バッファ内のブロックによって表され、ブロック内のクロスハッチは、共用状態を表す。バッファ１３０では、ＤＭＡアクセスが完了した後、全てのキャッシュ・ラインは共用され、バッファがクリアできる前に、各キャッシュ・ライン（３２ライン）のための個々のシステム・バス動作を必要とする。バッファ１３２キャッシュ・ラインは、データをバッファ１３２に書き込み可能なように変更されて示されている。ＤＭＡアクセスが本発明によって要求されるように完了した後に、Ｉ／Ｏバッファ１３４の第１のキャッシュ・ラインは、共用状態にあり、残りのラインは変更状態にある。Ｉ／Ｏバッファ１３６内の全てのキャッシュ・ラインは、変更された状態にある。バッファ１３０のコヒーレンシー状態をバッファ１３２のコヒーレンシー状態に変換するのと対照的に、バッファ１３４のコヒーレンシー状態をバッファ１３６のコヒーレンシー状態への変換は、データをＩ／Ｏバッファ１３４にストア可能とするために、Ｉ／Ｏバッファ１３４内の第１のラインにのみが変更されることを要求する。比較すると、Ｉ／Ｏページ・バッファを変更させること（１ラインを変更状態にさせるのみ）は、典型的バッファ（３２ラインを変更状態に変更することを必要とする）をクリアするよりも少ない時間で済むであろう。
【００３１】
図２を参照すると、本発明の好適な実施の形態に従って、特別のＤＭＡ Ｉ／Ｏ ページを利用する方法のハイレベル・フローチャートが示されている。処理はステップ２０２で始まり、このステップは、ソフトウェア・アプリケーションが、後で読み取るべきＰＣＩ Ｉ／Ｏ デバイスのためのデータを作成するために、現在使用していない４Ｋ Ｉ／Ｏ ページを獲得することを示している。処理は次にステップ２０４に進み、このステップは、ソフトウェア・アプリケーションが４Ｋ Ｉ／Ｏ ページへの一連のストア（ここでは、ストアの少なくとも１つは、４Ｋ Ｉ／Ｏ ページ内の第１のキャッシュ・ラインに対するものである）を達成することを示している。処理はステップ２０６に続き、このステップは、ソフトウェア・アプリケーションがＤＭＡデバイスに、ＰＣＩホスト・ブリッジを介して４Ｋ Ｉ／Ｏ ページのＤＭＡ読取り（ここでは、読取りの少なくとも１つは、４Ｋ Ｉ／Ｏ ページ内の第１のキャッシュ・ラインに対するものである）の実行を開始させることを示している。処理は次にステップ２０８に進み、このステップは、ソフトウェア・アプリケーションが送るべきデータをさらに有するか否かの判別を示している。データを有しないならば、処理は完了する。送るべきデータがさらにあるならば、処理はステップ２０２に戻り、このステップで、ソフトウェア・アプリケーションが、使用していない４Ｋ Ｉ／Ｏ ページ・バッファを獲得する。
【００３２】
次に図３を参照すると、本発明の実施の形態に従って、特別のＤＭＡ Ｉ／Ｏ ページを再利用する方法のハイレベル・フローチャートが示されている。処理はステップ２２２で始まり、このステップは、Ｉ／ＯデバイスがＩ／Ｏページ・バッファからのＤＭＡ読取りを完了しているか否かの判別を示す。完了していなければ、処理はステップ２２２に戻り、ステップを繰り返す。Ｉ／ＯデバイスがＩ／Ｏページ・バッファからのＤＭＡ読取りを完了していれば、処理はステップ２２４に進み、このステップは、ソフトウェアがＩ／Ｏページ・バッファを「ソフトウェア・アプリケーションによる再使用の準備完了」としてマークすることを示している。そして処理はステップ２２２に戻り、Ｉ／ＯデバイスがＩ／Ｏページ・バッファへのＤＭＡ読取りを終了しているか否か判別する。
【００３３】
図４を参照すると、本発明の実施の形態に従って、プロセッサ・ストアを実行するＬ１／Ｌ２コヒーレンシー処理のためのハイレベル・フローチャートが示されている。処理はステップ３００で始まり、このステップは、手順の開始を示している。次に、処理はステップ３０２に進み、このステップは、プロセッサがストア動作を実行しようとしているか否かの判別を示している。ストア動作を実行しようとしていなければ、処理はステップ３０２に戻り、ステップを繰り返す。プロセッサがストア動作を実行しようとしているならば、処理はステップ３０４に進み、このステップは、ストアを完了させる前に、Ｌ１／Ｌ２キャッシュがＬ１／Ｌ２キャッシュの状態をチェックすることを示している。次に、処理はステップ３０６に進み、このステップは、Ｌ１／Ｌ２キャッシュ・ラインの状態が‘無効’か否かの判別を示している。キャッシュが‘無効’ならば、処理はステップ３０８に進み、このステップは、システム・バス上に‘変更目的の読取り’動作を実行して、キャッシュ・ラインとラインのコピーを読取り、‘変更された’状態にするために発行された命令を示している。そして処理はステップ３１８に進み、このステップは、プロセッサのストア命令がＬ１／Ｌ２キャッシュに実行されることを示す。
【００３４】
ステップ３０６に戻り、Ｌ１／Ｌ２キャッシュ・ラインの状態が‘無効’でないならば、処理はステップ３１０に進み、このステップは、Ｌ１／Ｌ２キャッシュ・ラインの状態が‘共用された’か否かの判別を示している。キャッシュ・ラインが‘共用された’ならば、処理はステップ３１２に進み、このステップは、ラインの所有権を得て、そのラインを‘変更された’状態に変更するために、‘データ請求’動作がシステム・バス上で実行されることを示している。次に、処理はステップ３１８に進み、このステップでプロセッサのストア機能がＬ１／Ｌ２キャッシュに実行される。Ｌ１／Ｌ２キャッシュ・ラインの状態が‘共用されていない’ならば、処理はステップ３１４に進み、このステップは、Ｌ１／Ｌ２キャッシュ・ラインの状態が‘変更された’か否かの判別を示している。キャッシュ・ラインが変更されていなければ、処理はステップ３１６に進み、このステップは、３つのＬ１／Ｌ２キャッシュ・ライン状態のみであるとみなされるので、エラー・メッセージを示している。
【００３５】
ステップ３１４に戻り、Ｌ１／Ｌ２キャッシュ・ラインの状態が‘変更された’ならば、処理はステップ３１８に進み、このステップは、プロセッサのストアがＬ１／Ｌ２キャッシュに実行されることを示している。次に、処理はステップ３０２に進み、このステップは、プロセッサが他のストアを実行しようとしていることを示している。
【００３６】
次に図５を参照すると、本発明の好適な実施の形態に従って、ＰＣＩホスト・ブリッジが、ＤＭＡ要求をサービスできる、特別のＤＭＡ Ｉ／Ｏ ページを利用する方法のハイレベル・フローチャートが示されている。処理はステップ４００で始まり、このステップは、Ｉ／Ｏページ・バッファが指定されることを示している。ステップはステップ４０２に進み、このステップは、Ｉ／ＯデバイスがＤＭＡ読取りを実行しようとしているか否かの判別を示している。実行しようとしていなければ、処理はステップ４０２に戻り、ＤＭＡ読取りが判別されるまで繰り返す。Ｉ／ＯデバイスがＤＭＡ読取りを実行しようとしていれば、処理はステップ４０４に進み、このステップは、ＰＣＩホスト・ブリッジが、ホスト・ブリッジ・キャッシュ内のラインの状態をチェックすることを示している。次に、処理はステップ４０６に進み、このステップは、ＰＣＩホスト・ブリッジ・キャッシュが‘無効’状態であるか否かの判別を示している。キャッシュが‘無効’状態ならば、処理はステップ４０８に進み、このステップは、Ｉ／ＯページへのＤＭＡ読取りがＩ／Ｏページの第１のキャッシュ・ラインの読取り、または標準的なＩ／Ｏバッファ（Ｉ／Ｏページでない）の読取りであるか否かの判別を示している。読取りが、Ｉ／Ｏページの第１のキャッシュ・ライン、または標準的なＩ／Ｏバッファ内のキャッシュ・ラインの読取りであるならば、処理はステップ４１２に進み、このステップは、ラインの共用されたコピーを検索するために、‘読取り’システム・バス動作が実行されることを示している。Ｌ１／Ｌ２キャッシュは、ラインの状態を‘変更された’から‘共用された’に変更させられる。次に、処理はステップ４１８に進み、このステップは、ＰＣＩホスト・ブリッジがＤＭＡ読取りデータをＩ／Ｏデバイスに送ることを示している。
【００３７】
ステップ４０８に戻り、読取りがＩ／Ｏページに対してであるが、ページ内の第１のキャッシュ・ラインに対してでなければ、処理はステップ４１０に進み、このステップは、ラインおよびＬ１／Ｌ２キャッシュの共用されたコピーが、キャッシュ・ラインを‘変更された’状態に保持できることを検索する‘キャッシュ目的でない読取り’システム・バス動作を示している。次に、処理はステップ４１８に進み、このステップは、ＰＣＩホスト・ブリッジがＤＭＡ読取りデータをＩ／Ｏデバイスに送ることを示している。
【００３８】
次にステップ４０６に戻り、ＰＣＩホスト・ブリッジ・キャッシュが‘無効’状態でないならば、処理はステップ４１４に進み、このステップは、Ｌ１／Ｌ２キャッシュ・ラインが‘共用された’状態にあるか否かの判別を示している。キャッシュ・ラインが‘共用された’状態でないならば、処理はステップ４１６に進み、このステップは、２つのＰＣＩホスト・ブリッジ・キャッシュ状態のみとみなされているので、エラー・メッセージを示している。ステップ４１４に戻り、Ｌ１／Ｌ２キャッシュ・ラインが共用された状態ならば、処理はステップ４１８に進み、このステップは、ＰＣＩホスト・ブリッジがＤＭＡ読取りデータをＩ／Ｏデバイスに送ることを示している。処理はステップ４０２に続き、このステップは、Ｉ／ＯデバイスがＤＭＡ読取りをＩ／Ｏページに実行しようとすることを示している。
【００３９】
‘Ｉ／Ｏページ’のコヒーレンスを管理するために、ＰＣＩホスト・ブリッジがトリガされて、４Ｋ‘Ｉ／Ｏページ’が再使用できる前に、ページの第１のキャッシュ・ラインにストアすることによって、４Ｋ‘Ｉ／Ｏページ’を無効にする。第１のキャッシュ・ラインが、Ｌ１／Ｌ２キャッシュへのキャッシュ可能読取りとして現れるように工夫されているので、ＰＣＩホスト・ブリッジは、第１のキャッシュ・ラインをＤＭＡ読取りにおける特例とみなす。Ｌ１／Ｌ２キャッシュは、プロセッサの意図を示すシステム・バス・コヒーレンシー・アクセスを行い、第１のキャッシュ・ラインを‘共用された’から‘変更された’に変更する。ＰＣＩホスト・ブリッジは４Ｋページ細分性（サイズ）でスヌープする。したがって、４Ｋページの第１のキャッシュ・ラインに対しストアが行われると、ＰＣＩホスト・ブリッジはページ全体を無効にして、４Ｋページ内の各キャッシュ・ラインを無効にすることが要求される全てのシステム・バス・トラフィックを回避する。
【００４０】
次に図６を参照すると、本発明の好適な実施の形態に従って、ＰＣＩホスト・ブリッジが、システム・バス・コヒーレンシーをスヌープできる、特別のＤＭＡＩ／Ｏ ページを利用する方法のＩ／Ｏページ無効部分のハイレベル・フローチャートが、示されている。処理はステップ５００で始まり、このステップは、無効手順を開始することを示している。処理はステップ５０２に進み、このステップは、Ｌ１／Ｌ２キャッシュが、ＰＣＩホスト・ブリッジによって‘共用された’とマークされた４Ｋ Ｉ／Ｏ ページをヒットするＬ１／Ｌ２キャッシュ・ラインの状態を変更するシステム・バス動作を実行しようとしているか否かの判別を示している。実行していなければ、処理はステップ５０４に進み、このステップは、ＰＣＩホスト・ブリッジによってとられるアクションがないことを示している。処理はステップ５０２に続き、繰り返す。ステップ５０２に戻り、Ｌ１／Ｌ２キャッシュが、Ｌ１／Ｌ２キャッシュ・ラインの状態を変更するシステム・バス動作を実行しようとしているならば、処理はステップ５０６に進み、このステップは、ページが‘共用された’とマークされているので、ＰＣＩホスト・ブリッジがＰＣＩホスト・ブリッジ・キャッシュ内でデータの対象４Ｋページ（例えば、Ｉ／Ｏページ）を無効にすることを示している。
【００４１】
キャッシュ可能と読み取られるべき４Ｋ Ｉ／Ｏ ページ内の第１のキャッシュ・ラインのみを定義することによって、４Ｋバッファを再使用しようとするとき、Ｌ１キャッシュは、‘変更された’状態の第１のキャッシュ・ライン以外の全てをまだ有している。ＤＭＡが実行されると、第１のラインのみが‘共用された’状態になる。ページを再使用しようとし、その結果、ＰＣＩホスト・ブリッジがそのページを無効にすべきことに気づくと、ソフトウェアはＩ／Ｏページ内の第１のキャッシュ・ラインにストアする。Ｉ／Ｏページの第１のキャッシュ・ラインへのＤＭＡ読取りまたはＤＭＡ書込みは、Ｌ１／Ｌ２に第１のキャッシュ・ラインを‘変更された’から‘共用された’に変更させる。
【００４２】
本発明の好適な実施の形態に従って定義された、このＩ／Ｏページは、古い再使用可能な４Ｋ Ｉ／Ｏ ページにストアすることによって、新しい４Ｋページを作成するとき、プロセッサの性能を大きく改善する。というのは、４Ｋページの第１のキャッシュ・ラインへのストアは、１つのシステム・バス・トランザクションのみがＬ１／Ｌ２を‘共用された’状態から‘変更された’状態にすることを要求するからである。Ｉ／Ｏページ内の全ての他のキャッシュ・ラインは、Ｌ１／Ｌ２内で‘変更された’状態のままであり、したがって、それらのキャッシュ・ラインへのプロセッサ・ストアは、システム・バス・コヒーレンシー・トラフィックを要求しないＬ１／Ｌ２キャッシュに直接行うことができる。
【００４３】
本発明は、メモリ・ページが異なる手段によってアクセスされるシステムに適用できる。本発明の他の実施の形態は、ＰＣＩホスト・ブリッジにおいてトランザクション・コントロール・エントリ（ＴＣＥ）テーブルを利用するシステムに与えることができる。ＴＣＥテーブルは、セット・リミット（例えば４ギガバイト（ＧＢ））を超えたシステム・メモリのアクセスに使用するために、ＰＣＩホスト・ブリッジに通常与えられる。そのようなシステムでは、ＴＣＥエントリ自身は、４Ｋ Ｉ／Ｏ ページ内の第１のキャッシュ・ラインを用いる代わりに、トリガ・メカニズムとして用いることができる。この例では、ＰＣＩホスト・ブリッジは、全ての読取りを‘キャッシュ目的でない読取り’（もはや特別に扱われない）として実行でき、およびプログラム・ロジックは、ページが再使用される毎に、ＤＭＡ読取りのために使用されたＴＣＥエントリへのストアを行うことによって、ページを無効にする（すなわち、データをフェッチするために用いられたＴＣＥが変更されたならば、ＰＣＩホスト・ブリッジは４Ｋページ内でフェッチされた全てのデータを無効にする）。Ｉ／Ｏページの実施の形態におけるように、システム・バス・トラフィックは、かなり減少される。
【００４４】
本発明を、完全に機能的なデバイスで説明したが、当業者は、本発明のメカニズムおよび／または本発明の態様が、種々の形態のコンピュータ使用可能命令媒体の形で配布可能であり、また本発明が、配布を実際に行うために用いられる特定タイプの信号担持媒体とは関係なく、同じように適用できることを、理解するであろうことに注意することは重要である。コンピュータ使用可能媒体の例は、不揮発性、ＲＯＭ(read only memories)またはＥＥＰＲＯＭ(erasable electrically programmable read only memories)のようなハードコーディング・タイプ媒体，フロッピー・ディスクのような記録可能タイプ媒体，ハード・ディスク・ドライブおよびＣＤ−ＲＯＭ，デジタルおよびアナログ通信リンクのような伝送タイプの媒体を含む。
【００４５】
本発明を、好適な実施の形態によって、特に示し説明してきたが、当業者によれば、形式と詳細のさまざまな変更を、本発明の趣旨と範囲から逸脱せずに実施できることが理解されるであろう。
【００４６】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００４７】
（１）ダイレクト・メモリ・アクセスおよびキャッシュ性能を改善する方法であって、
メモリ・バッファを定義するステップを含み、前記メモリ・バッファ内の第１のキャッシュ・ラインが、キャッシュ可能として読み取られ、
前記メモリ・バッファ内の残りのキャッシュ・ラインを、変更された状態としてさらに定義するステップと、
前記キャッシュによる試みに応じて、前記第１のキャッシュ・ラインを、共用された状態から変更された状態に変更するために、前記メモリ・バッファ全体を無効にするステップとを含む方法。
【００４８】
（２）ＰＣＩホスト・ブリッジをトリガして、前記メモリ・バッファを無効にするステップをさらに含む、上記（１）記載の方法。
【００４９】
（３）前記メモリ・バッファの前記第１のキャッシュ・ラインにストア動作を実行するステップをさらに含む、上記（２）記載の方法。
【００５０】
（４）システム・メモリ内のページ・バッファをスヌープするステップをさらに含む、上記（１）記載の方法。
【００５１】
（５）前記第１のキャッシュ・ラインが前記共用された状態から前記変更された状態に変更されるならば、前記メモリ・バッファ内のデータのページ全体を無効にするステップをさらに含む、上記（４）記載の方法。
【００５２】
（６）ダイレクト・メモリ・アクセスおよびキャッシュ性能を改善する装置であって、
情報をストアするキャッシュと、
キャッシュ動作を実行するコントロール・ロジックと、
メモリ・バッファを定義するハードウェアとを備え、前記メモリ・バッファ内の第１のキャッシュ・ラインが、キャッシュ可能として読み取られ、
追加のシステム・バス・コマンド無しで、前記メモリ・バッファ内の全てのキャッシュ・ラインを同時に無効にする手段を備える装置。
【００５３】
（７）メモリ記憶域を予約できるロジック手段をさらに備える、上記（６）記載の装置。
【００５４】
（８）前記メモリ・バッファ内の残りのキャッシュ・ラインを、変更された状態としてさらに定義する追加ロジック手段をさらに備える、上記（６）記載の装置。
【００５５】
（９）ＰＣＩホスト・ブリッジをトリガして、前記メモリ・バッファを無効にするロジックをさらに備える、上記（６）記載の装置。
【００５６】
（１０）前記メモリ・バッファの前記第１のキャッシュ・ラインにストア動作を実行する手段をさらに備える、上記（６）記載の装置。
【００５７】
（１１）システム・メモリ内のページ・バッファをスヌープするスヌープ手段をさらに備える、上記（６）記載の装置。
【００５８】
（１２）追加のシステム・バス・コマンド無しで、前記メモリ・バッファ内の全てのキャッシュ・ラインを同時に無効にする手段が、
前記第１のキャッシュ・ラインが前記共用されたから前記変更された状態に変更されるならば、前記メモリ・バッファ内のデータのページ全体を無効にする手段をさらに有する、上記（６）記載の装置。
【００５９】
（１３）ダイレクト・メモリ・アクセスおよびキャッシュ性能を改善する命令を、コンピュータ読取り可能媒体内に含むコンピュータ・プログラム製品であって、
ページ・バッファを定義する前記コンピュータ読取り可能媒体内の命令を含み、前記ページ・バッファ内の第１のキャッシュ・ラインが、キャッシュ可能として読み取られ、
前記ページ・バッファ内の残りのキャッシュ・ラインを、変更された状態としてさらに定義する前記コンピュータ読取り可能媒体内の命令と、
前記キャッシュによる試みに応じて、前記第１のキャッシュ・ラインを、共用された状態から変更された状態に変更するために、前記ページ・バッファの内容を無効にする前記コンピュータ読取り可能媒体内の命令とを含むコンピュータ・プログラム製品。
【００６０】
（１４）ＰＣＩホスト・ブリッジをトリガして、前記ページ・バッファの内容を無効にする前記コンピュータ読取り可能媒体内の命令をさらに含む、上記（１３）記載のコンピュータ・プログラム製品。
【００６１】
（１５）前記ページ・バッファの前記第１のキャッシュ・ラインにストア動作を実行する前記コンピュータ読取り可能媒体内の命令をさらに含む、上記（１４）記載のコンピュータ・プログラム製品。
【００６２】
（１６）システム・メモリ内の前記ページ・バッファをスヌープする前記コンピュータ読取り可能媒体内の命令をさらに含む、上記（１３）記載のコンピュータ・プログラム製品。
【００６３】
（１７）前記第１のキャッシュ・ラインが前記共用された状態から前記変更された状態に変更されるならば、前記ページ・バッファ内のデータのページ全体を無効にする前記コンピュータ読取り可能媒体内の命令をさらに含む、上記（１６）記載のコンピュータ・プログラム製品。
【００６４】
（１８）ダイレクト・メモリ・アクセスおよびキャッシュ性能を改善する方法であって、
キャッシュ・メモリのためのアドレス・テーブル内に４Ｋ Ｉ／Ｏ ページのためのアドレス・エントリを定義するステップと、
前記エントリを、トリガ・メカニズムとして利用するステップと、
前記４Ｋ Ｉ／Ｏ ページに対する全ての読取りを、‘キャッシュ目的でない読取り’として実行するステップと、
ダイレクト・メモリ・アクセス（ＤＭＡ）読取りを、前記エントリによって参照された位置にストアするステップと、
前記４Ｋ Ｉ／Ｏ ページ内の全てのデータを無効にするステップとを含む方法。
【００６５】
（１９）前記４Ｋ Ｉ／Ｏ ページが再使用されるか否かを判別するステップをさらに含む、上記（１８）記載の方法。
【００６６】
（２０）前記エントリへの前記ＤＭＡ読取りをストアするステップが、
ホスト・ブリッジをトリガして、前記４Ｋ Ｉ／Ｏ ページ内のデータ全体を無効にするステップをさらに含む、上記（１８）記載の方法。
【００６７】
（２１）前記４Ｋページに新しいデータを書き込むステップをさらに含む、上記（１８）記載の方法。
【図面の簡単な説明】
【図１】本発明の好適な実施の形態を実現できるデータ処理システムを示すハイレベル・ブロック図である。
【図２】本発明の実施の形態に従って、特別のＤＭＡ Ｉ／Ｏ ページを利用する方法を示すハイレベル・フローチャートである。
【図３】本発明の実施の形態に従って、特別のＤＭＡ Ｉ／Ｏ ページを再利用する方法を示すハイレベル・フローチャートである。
【図４】本発明の実施の形態に従って、プロセッサ・ストアを実行するＬ１／Ｌ２コヒーレンシー手順を示すフローチャートである。
【図５】特別のＤＭＡ Ｉ／Ｏ ページを利用する方法のハイレベル・フローチャートであって、本発明の実施の形態に従って、ＰＣＩホスト・ブリッジがＤＭＡ要求をサービスできることを示すフローチャートである。
【図６】特別のＤＭＡ Ｉ／Ｏ ページを利用する方法の部分のハイレベル・フローチャートであって、本発明の実施の形態に従って、ＰＣＩホスト・ブリッジがシステム・バス・コヒーレンシーをスヌープできることを示すフローチャートである。
【符号の説明】
１００  データ処理システム
１０２  マルチプロセッサ・システム
１０４  レベル１（Ｌ１）キャッシュ
１０６  レベル２（Ｌ２）キャッシュ
１０８  ＰＣＩホスト・ブリッジ
１０９  キャッシュ
１１０  システム・メモリ
１１２  システム・バス
１１４  メモリ・コントローラ
１１６  ＰＣＩバス
１１８，１２０  Ｉ／Ｏデバイス
１２２  不揮発性メモリ
１２４  ＤＭＡメモリ
１３０，１３２，１３４，１３６  ４Ｋページ・バッファ
【図１】
0003893008.tif 000002
【図２】
0003893008.tif 000003
【図３】
0003893008.tif 000004
【図４】
0003893008.tif 000005
【図５】
0003893008.tif 000006
【図６】
0003893008.tif 000007