(57)【特許請求の範囲】
【請求項１】
システム・メモリからＰＣＩバスにより通信する装置へデータを取り出すシステムであって、
前記システム・メモリと前記ＰＣＩバスの間に配置され、複数のデータ・ラインの形態で内部にメモリ空間を有する入出力キャッシュ・メモリと、
前記キャッシュ・メモリと入出力バスの間の通信を評価し、評価した通信に基づいて少なくとも１組の事前取り出しヒントを生成するように構成された装置と、
前記メモリ空間内のデータを管理するメモリ管理手段であって、前記事前取り出しヒントを評価して前記メモリ空間内のデータ管理を制御するための手段をさらに備える、メモリ管理手段と、を備え、
前記事前取り出しヒントが、そこを越えてデータがキャッシュ・メモリに事前取り出しされることのないシステム・メモリ境界限界の識別情報を含む、システム。
【請求項２】
システム・メモリからＰＣＩバスにより通信する装置へデータを取り出すシステムであって、
前記システム・メモリと前記ＰＣＩバスの間に配置され、複数のデータ・ラインの形態で内部にメモリ空間を有する入出力キャッシュ・メモリと、
前記キャッシュ・メモリと入出力バスの間の通信を評価し、評価した通信に基づいて少なくとも１組の事前取り出しヒントを生成するように構成された装置と、
前記メモリ空間内のデータを管理するメモリ管理手段であって、前記事前取り出しヒントを評価して前記メモリ空間内のデータ管理を制御するための手段をさらに備える、メモリ管理手段と、を備え、
前記事前取り出しヒントが、取り出されたデータをキャッシュ・メモリから消去する条件の識別情報を含む、システム。
【請求項３】
前記メモリ管理手段が、
取り出し要求を評価する手段と、
前記取り出し要求に基づいて前記事前取り出しヒントを評価する手段と、
前記事前取り出しヒントの値に基づいて、予め定められた数のデータのキャッシュラインを制御可能であるように事前取り出しする手段と、
をさらに備える、請求項１または２に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的に、ＰＣＩバス(すなわち周辺コンポーネント接続バス)を経由して、システム・メモリから装置へデータを取り出すシステムおよび方法に関するもので、特に、ＰＣＩバス・トランザクションから観察されるヒントに基づいてシステム・メモリからＰＣＩバス上で通信している装置へデータを効率的に取り出すシステムおよび方法に関するものである。
【０００２】
【従来の技術】
コンピュータ・システム設計において、主要な目標は、一層迅速で一層効率的なコンピュータ・システムを継続的に設計することである。このような観点から、従来技術の高性能コンピュータ・システムの大部分はキャッシュ・メモリを含む。周知のように、キャッシュ・メモリは、システム性能を改善するためコンピュータ・システムにおいてマイクロプロセッサとメイン・メモリの間に配置されている高速のメモリである。典型的に、キャッシュ・メモリ(またはキャッシュ)は、プログラムが実行している間、中央処理装置(ＣＰＵ)によって活発に使用されているメイン・メモリ・データ部分のコピーを記憶する。キャッシュのアクセス・タイムがメイン・メモリのそれより速いので、全般的アクセス・タイムを減少させることができる。
【０００３】
たとえキャッシュ・メモリが典型的にはシステム性能を向上させるとしても、更なる改良が望まれている。例えば、(マイクロプロセッサのような)中央処理装置のメモリと(ＩＳＡバスやＰＣＩバスのような)Ｉ／Ｏバスを相互接続するシステム・バスのような独立したバスを持つコンピュータ・システムを考察してみると、過去においてパソコンの性能を制限したボトルネックのうちの１つは、ＩＳＡバスの最大指定速度であった。ＩＢＭ社によって製作されたＩＢＭ ＰＣ ＡＴコンピュータにおいては、Ｉ／Ｏバスは、８MHzというデータ・レート(すなわちBCLK=8 MHz)で動作した。このデータ・レートは、その時代のＣＰＵがホスト・バス上で動作できる最高データ・レートにほぼ等しかったので、当時は適切なデータ・レートであった。しかしながら、今日のＣＰＵデータ・レートは数倍も速くなっているので、Ｉ／Ｏバスの遅い速度は今日ではシステムのスループットを厳しく制限する。この問題の１つの解決策はローカル・バス規格の開発であった。この規格によって、Ｉ／Ｏバス上に伝統的に配置されていた特定の装置が、今や、ＶＥＳＡＶＬ−バス・ローカル・バス規格のようなホスト・バス配置されることができるようになった。
【０００４】
別の１つ解決策は、ＰＣＩ規格と呼ばれる別の規格の開発であった。周知のように、ＰＣＩは、Peripheral Component Interconnect(周辺コンポーネント相互接続)の頭文字である。ＰＣＩ規格は、外部装置をコンピュータに接続する方式を定義するガイドライン・セットであり、１９９０年代の初めに開発されていた互換性のないバス・アーキテクチャの急速な増加を防止するローカル・バス規格を提供するため本来は開発された。このような点から、ＰＣＩバスは、コンピュータ・システムにおける好ましい主要ローカル・バスとして、ＩＳＡ(ＥＩＳＡ)、ＶＬ−ローカル・バス、マイクロチャネル、ＮＵＢｕｓなどのローカル・バス・アーキテクチャを置き換えるものである。
【０００５】
ＰＣＩバスは、その基礎的なデータ転送モードがバーストであるので、非常に高い性能を達成する。すなわち、アドレス空間における既知のシーケンスのデータ単位アドレスによって定義される既知のシーケンスのデータ単位でＰＣＩ装置の間でデータが転送される。"線形の"バースト・モードにおいては、始動元または宛先のいずれかがトランザクションを終了させるまで、(１を含める)任意の数の転送が線形に連続したアドレスの間で行われる。両者が、後に続くアドレスのシーケンスを知っているので、始動元は開始アドレスを指定するだけでよい。ＰＣＩバスの実施形態は当業界において周知であり、その仕様は公に入手可能である。
【０００６】
【発明が解決しようとする課題】
高速の業界標準共通バスの間で転送する際、バスがバンド幅全体を維持すことを可能にするためにはデータに関する中間的ローカル・キャッシュ・バッファを備えることが望ましいことがしばしばある。すなわち、システム・バスに負荷をかけることなく、ＰＣＩバスをキャッシュに結びつけるＩ／Ｏバスの最大限の利用を維持することが望ましい。例えば、データがメモリからキャッシュへ取り出される時、一度に１つのキャッシュ行が取り出される。データがＰＣＩバス上の装置によって最初に要求される時、データの最初のキャッシュ行がメモリからキャッシュへ取り出される間初期的待ち時間(アイドルＩ／Ｏクロック・サイクル)が存在する。ＰＣＩ転送が１つ以上のキャッシュ行データを要求すれば、次のキャッシュ行データがシステム・メモリからキャッシュへ取り出される間更に１つの待ち時間が発生する。データの新しい行がメモリからキャッシュへ読み取られるたびに断続的な待ち時間が発生する。従って、このような待ち時間を除去または減少することが望ましい。この目標を達成する１つの方法はデータの追加キャッシュ行を常に事前取り出しすることである。例えば、初めからデータの２つのキャッシュ行がメモリからキャッシュへ取り出されることができるようにする。データの最初の行がキャッシュからＰＣＩバスへ転送された後第２の行がＰＣＩバスへ転送され。従って、データの追加キャッシュ行がメモリからキャッシュへ取り出される。
【０００７】
この手法は、Ｉ／Ｏバス上で経験されるアイドル・サイクルを減少させるが、システム資源の非効率な利用を伴う。この手法にかかわ問題は、(１つのキャッシュ行によって)メモリからキャッシュへのデータ取り出しが過多になる点である。従って、この手法はシステム・バスのバンド幅を不必要に消費するとともに、キャッシュ・メモリ部分を浪費する。キャッシュ・メモリ空間の貧弱な利用は全般的システム効率を悪化させる。従って、上記のように認識されたものを含む欠点を克服するような、キャッシュとＰＣＩバスをインタフェースさせる方法を提供することが求められている。
【０００８】
【課題を解決するための手段】
発明の課題を解決するため、本発明は、システム・メモリと要求元装置の間に配置されるキャッシュ・メモリを有するコンピュータ・システムにおいて該キャッシュ・メモリの内部のデータを管理する方法を提供する。該方法は、システム・メモリからデータを取り出す要求を受け取るステップ、上記要求に関連する事前取り出しヒント・セットを評価するステップ、および、上記事前取り出しヒントに基づいて上記キャッシュ・メモリ内部におけるデータの取り出しおよび管理を制御するステップを含む。
【０００９】
本発明は、ＰＣＩバスを経由してシステムと通信する装置へＩ／Ｏキャッシュを介してシステム・メモリからデータを取り出すシステムおよび方法を提供する。本発明は、広範囲には、一定の取り出しヒントを伝える新機軸の方法とみなすことができる。すなわち、ヒントは、システム・メモリから取り出されるべきデータに関する一定の品質を指定する。動作においては、Ｉ／Ｏキャッシュは、そこを通過するデータを効率的に管理するためそのようなヒントを使用することができる。１つの単純な例をあげれば、ヒントに基づいて、Ｉ／Ｏキャッシュに関するコントローラが、取り出されつつあるデータがＡＴＭデータであるということをヒントに基づいて認識(または仮定)するとすれば、コントローラは、(ＡＴＭデータの性質に基づいて)、正確に４８バイトのデータ・ペイロードが要求元装置へ送信されるべきものであり、Ｉ／Ｏキャッシュは、また、正確にその量(典型的には１または２キャッシュ行)を事前取り出しすることができることを認識することができる。
【００１０】
本発明の１つの側面に従えば、そのようなシステムは、システム・メモリとＰＣＩバスの間に配置される入出力キャッシュ・メモリを含み、キャッシュ・メモリは、その内部に複数のデータ行の形態の内部メモリ空間を持つ。該システムは、取り出し基準を定義するように構成される各ＰＣＩマスタに関する複数のレジスタを含む。更に、該システムは、上記複数レジスタの中の活動的レジスタを選択するように構成されるレジスタ・セレクタを含む。装置に関する取り出し基準は活動的レジスタによって指定される。
【００１１】
具体的には、本発明の好ましい実施形態に従って構築されるシステムにおいて、レジスタは、データ取り出しに関する特定のヒントを指定する内容を含む。例えば、そのようなヒントの１つは、事前取り出しの深さであり、この場合、レジスタが事前取り出し深さの種種の異なる値を含む。例えば、第１のレジスタが２キャッシュ行という事前取り出し深さを指定し、第２のレジスタが３キャッシュ行という事前取り出し深さを指定する。しかしながら、理解されるべき点であるが、これらレジスタの内容は異なるソースによって動的に変えられることが可能である。例えば、システム・ファームウェアがレジスタの内容をセットすることが可能である。代替的には、レジスタ内容は要求元装置上のドライバの制御の下で設定または変更される。次に、レジスタ・セレクタが、活動的レジスタとしてどのレジスタを選択すべきかを決定する。活動的レジスタは、当該キャッシュのデータを制御するためにＩ／Ｏキャッシュに関するコントローラによって使用されるレジスタである。このセレクタは、データに対する要求を識別するためＰＣＩバスを監視するように構成され、要求の形態、要求元装置の識別情報またはその他の因子に基づいて、セレクタが活動的レジスタを選択する。
【００１２】
【発明の実施の形態】
本発明は、添付図面を参照して以下に記述されるが、記述される実施形態に本発明を制約する意図はなく、むしろ、本発明の理念に含まれる代替的形態および修正をすべて包含するように意図されている。
【００１３】
図１は、本発明の環境の１例である環境を定義するコンピュータ・システム１００を示す。コンピュータ・システム１００は、コンピュータ１０２およびモニタ１０４を持つハイエンド・デスクトップ・コンピュータ・システムのような、高性能コンピュータ・システムのいかなるタイプのものでもよい。コンピュータ１０２の形態には種種のものがあるが、典型的なコンピュータ１０２はマザーボード１１０を含む。周知のように、マザーボード１１０は典型的には種々のオンボードＩＣコンポーネント１２０を含む。これらオンボードＩＣコンポーネント１２０には、ＣＰＵ１２２(例えばマイクロプロセッサ)、メモリ１２８、および、コンピュータ・アーキテクチャに含まれるその他周知のＩＣ装置が含まれる。
【００１４】
マザーボード上またはプラグイン・カード上に配置される別のＩＣ装置はキャッシュ・メモリ１２６である。キャッシュ・メモリ１２６は、ＰＣＩバス１３０と通信するように配置される。本発明の概念および教示と整合する形態で、その他のＩＣコンポーネントをコンピュータ・システム１００の範囲内に含めることができる。実際、その他種々のサポート回路および付加的機能回路が大部分の高性能コンピュータ・システムに典型的に含まれる。そのようなその他の回路コンポーネントの付加および実施形態は当業者に十分理解されるものであるので、本明細書において説明を行う必要はない。図１のコンピュータ・システム１０は、本発明の概念および教示を例示するため選択されたいくつかのコンポーネントだけを示している。
【００１５】
更に、周知のように、種々のオンボード回路コンポーネントに加えて、コンピュータ・システムは、通常、拡張機能を含む。このため、大部分のコンピュータ・システム１００は、ＩＣカードをコンピュータ・システム１００のマザーボード１１０にプラグインすることを可能にする複数の拡張スロット１４２、１４４、１４６を含む。拡張カード１４０は、典型的には、コンピュータ・システムのすべての用途にとって必要とされるというわけではなく、むしろ特定のユーザ・グループの特定用途に求められる専用の機能性を提供する。例えば、モデム・カード(図示されていない)は、コンピュータ・システム１００が音声、データおよびその他の情報を通信リンクを経由して遠隔のコンピュータ・システムまたはユーザと通信することを可能にする。ＣＰＵ１２２、メモリ１２８およびとキャッシュ１２６のような品目は、図ではマザーボード１１０上に配置されるように示されているが、拡張カード上に配置することもできる点は理解されることであろう。また、図１に示されている特定の実施形態は、例示の目的のためにのみ示されていて、本発明をそれに制約するものとみなされるべきでない点も理解されることであろう。
【００１６】
種々の拡張カードが本発明の目的のためコンピュータ・システム１００と関連して利用される可能性はあるが、それらは単なる例示に過ぎない。更に、図１には、システム・バス１５０およびＰＣＩバス１３０が示されている。一般的に言えば、システム・バス１５０は、高速のバスであり、コンピュータ・システム１００の範囲内に含まれるメモリ１２８、ＣＰＵ１２２、キャッシュ１２６およびその他の装置(図示されていない)を相互接続する。拡張カード１４０はＰＣＩバス１３０を経由してコンピュータ・システム１００の他の部分と通信する。詳細は後述されるが、本発明は、拡張カード１４０を介する通信のためシステム・メモリ１２８からＰＣＩバス１３０へデータを取り出す場合のコンピュータ・システム１００の全般的性能、動作および効率を強化するシステムおよび方法を対象とする。
【００１７】
しかしながら、本発明の詳細を記述する前に、キャッシュ・メモリ装置に関するいくつかの基本的な情報をまず記述する。この情報は、本発明の教示に従って構築されるシステムを完全に記述することを目的として提示されるに過ぎないが、以下に記述されるキャッシュ・メモリ装置の概念および動作は当業者によって理解されることであろう。
【００１８】
キャッシュの基本
前述のように、キャッシュ・メモリは、システム効率を改善するためコンピュータ・システムにおいてマイクロプロセッサとメイン・メモリの間に配置される高速のメモリである。キャッシュ・メモリ(またはキャッシュ)は、プログラムが実行している間中央処理装置(ＣＰＵ)によって活発に使用されるメイン・メモリ・データの一部分のコピーを記憶する。キャッシュのアクセス・タイムがメイン・メモリのそれより速いので、全般的アクセス・タイムを減少することができる。
【００１９】
多くのマイクロプロセッサに基づくシステム実施形態は、"直接マップ型"キャッシュ・メモリを実施する。一般に、"直接マップ型"キャッシュ・メモリは、高速のデータＲＡＭおよび並列高速タグＲＡＭを含む。データ・キャッシュにおける各行のＲＡＭアドレスは、各行のエントリに対応するメイン・メモリ行アドレスの下位部分と同じものであり、メイン・メモリ・アドレスの高位部分はタグＲＡＭに記憶される。このように、メイン・メモリが各々１または複数バイトの２n"行"の２mブロックであるとみなされるとすれば、キャッシュ・データＲＡＭの中のｉ番目の行は、メイン・メモリの２mブロックのうちの１つのｉ番目の行のコピーである。その行が対応するメイン・メモリ・ブロックの識別情報はタグＲＡＭのｉ番目の位置に記憶されている。
【００２０】
ＣＰＵがメモリからデータを要求する時、行アドレスの下位部分はキャッシュ・データおよびキャッシュ・タグＲＡＭ両方に対するアドレスとして供給される。選択されたキャッシュ・エントリに関するタグは、ＣＰＵのアドレスの上位部分と比較され、一致すれば、"キャッシュ・ヒット"が標示され、キャッシュ・データＲＡＭからのデータがシステムのデータ・バス上に送られることができる状態となる。タグがＣＰＵのアドレスの上位部分と一致しない場合、またはデータが無効であるとすれば、"キャッシュ・ミス"が標示され、データはメイン・メモリから取り出される。メイン・メモリから取り出されたデータは潜在的な将来の使用のためキャッシュに置かれ、前のエントリを上書きする。典型的には、キャッシュ・ミスの場合、たとえ１バイトだけが要求されたとしても、１行全体がメイン・メモリから読み取られ、キャッシュに記憶される。ＣＰＵからのデータ書込みの際、キャッシュＲＡＭおよびメイン・メモリのいずれかまたは両方が更新されるが、その場合、他方に書込みが発生したことを一方に通知するためフラグが必要である点は理解されることであろう。
【００２１】
従って、直接マップ型キャッシュでは、２次メモリの各"行"は、キャッシュの１つの行にだけマップされる。"完全連想"キャッシュにおいては、２次メモリの特定の１行は、キャッシュの行のいずれにでもマップされる。この場合、キャッシュ可能なアクセスにおいて、キャッシュ・ヒットまたはキャッシュ・ミスが起きたか否かを判断するためすべてのタグが比較されなければならない。また、直接マップ型キャッシュと完全連想キャッシュの間の妥協を表す"マップ先ｋ行連想"キャッシュ・アーキテクチャが存在する。マップ先ｋ行連想キャッシュ・アーキテクチャにおいては、２次メモリの各行はキャッシュのｋ行のいずれかにマップされる。この場合、キャッシュ・ヒットまたはキャッシュ・ミスが起きたか否かを判断するため、キャッシュ可能２次メモリ・アクセスの間ｋ個のタグがアドレスと比較される。キャッシュは、また、"セクター・バッファ""か"サブ・ブロック"タイプである。この場合、各々それ自体の有効ビットを持ついくつかのキャッシュ・データ行が単一キャッシュ・タグＲＡＭに対応する。
【００２２】
ＣＰＵがキャッシュの内容を修正する命令を実行する時、メイン・メモリにおいてもその修正が行われなければならず、さもなければメイン・メモリのデータは"陳腐化"する。メイン・メモリとキャッシュの内容の整合性を保つ２つの従来技術の手法がある。すなわち、(1)書き込み続行(write-through)方法、および、(2)書き戻し(write-back)またはコピー戻し(copy-back)方法である。書き込み続行方法においては、キャッシュ書込みヒットがあれば、データのキャッシュへの書き込みの直後またはその間データがメイン・メモリに書き込まれる。これは、メイン・メモリの内容が常に有効でキャッシュの内容と一致していることを可能にする。書き戻し方法においては、キャッシュ書込みヒットがあれば、システムはキャッシュにデータを書き込み、データ・ワードがキャッシュに書き込まれたがメイン・メモリには書き込まれていないことを標示する"ダーティ・ビット(dirty bit)をセットする。キャッシュ・コントローラは、キャッシュにデータのいかなる行を上書きする前にダーティ・ビットを検査して、セットされていれば、新しいデータをそのキャッシュ行に記憶する前にそのデータ行をメイン・メモリへ書き出す。
【００２３】
コンピュータ・システムは、所与のアドレス空間に関して１レベル以上のキャッシュ・メモリを持つことができる。例えば、２レベル・キャッシュ・システムにおいては、"レベル１"(Ｌ１)キャッシュは、ホスト・プロセッサに論理的に隣接している。"レベル２"(Ｌ２)キャッシュは、論理的にレベル１の後にあり、(３次メモリと呼ぶことができる)ＤＲＡＭメモリが論理的にＬ２キャッシュの背後に位置する。ホスト・プロセッサがメモリ・アドレス空間におけるアドレスへのアクセスを実行する時、可能であればＬ１キャッシュが応答する。Ｌ１キャッシュが(例えばＬ１キャッシュ・ミスのため)応答することができないとすれば、可能であればＬ２キャッシュが応答する。Ｌ２キャッシュが応答することができないとすれば、ＤＲＡＭ自体に対してアクセスが行われる。ホスト・プロセッサは、システムにどれだけのキャッシュ・レベルが存在するか、あるいはキャッシュ機能が存在することさえ知っている必要はない。同じように、Ｌ１キャッシュは、ＤＲＡＭに先行してＬ２キャッッシュが存在するかどうかについて知っている必要はない。このように、ホスト処理装置にとって、２つのキャッシュとＤＲＡＭの組み合せは単一メイン・メモリ構造としてみなされる。同じように、Ｌ１キャッシュにとって、Ｌ２キャッシュとＤＲＡＭの組み合せは単一メイン・メモリ構造としてみなされる。実際、レベル３キャッシュ機能をＬ２キャッシュとＤＲＡＭの間に含むことができ、Ｌ２キャッシュはＬ３キャッシュとＤＲＡＭの組み合せを単一メイン・メモリ構造とみなすであろう。
【００２４】
キャッシュ行が状態Ｅにあれば(Ｅは"exclusive"の頭文字で、排他的の意味を表す)、その行は"修正"されない(すなわちメモリ・サブシステムのそれ以降のレベルと同じデータを含む)。共有キャッシュ・システムにおいては、状態Ｅは、そのキャッシュ行がキャッシュのうちのただ１つだけにおいて使用可能であることを標示する。ホスト・プロセッサ装置は、メモリ・サブシステムのより高いレベルに、バス・サイクルを生成することなく、Ｅ状態の行にアクセス(読み取りまたは書き込み)することができるが、ホスト・プロセッサがＥ状態行に書込みアクセスをする時、その行は"修正された"状態(状態Ｍ)となる(Ｍは"modified"の頭文字で、"修正された"を意味する)。
【００２５】
状態Ｓの行が(Ｓは"shared"の頭文字で"共有されている"ことを表す)、１つ以上のキャッシュに存在することができる。ホスト・プロセッサによるＳ状態行への読み取りアクセスはバス活動を引き起こさないが、Ｓ状態行への書き込みアクセスは、共有キャッシュがそれ自身の対応する行を潜在的に無効にすることを可能にするため、メモリ・サブシステムのそれより高いレベルへの"書き込み続行"サイクルを引き起こす。書き込みは、また、データ・キャッシュ行の中のデータを更新する。
【００２６】
状態Ｉの行は無効である(Ｉは"invalid"の頭文字で無効を意味する)。状態Ｉの行はキャッシュには存在しない。ホスト・プロセッサ装置によるＩ状態行への読み取りアクセスは"キャッシュ・ミス"を生成し、その結果キャッシュは行充当を実行する(メモリ・サブシステムのより高いレベルから行全体を取り出す)。ホスト・プロセッサ装置によるＩ状態行への書き込みアクセスによって、キャッシュは、メモリ・サブシステムのより高いレベルへの書き込み続行サイクルを実行する。
【００２７】
コンピュータ・システム・キャッシュ・メモリは、典型的には、ＣＰＵに関するメイン・メモリ・データをキャッシュ記憶する。キャッシュが書き戻しプロトコルを使用するとすれば、キャッシュ・メモリがメイン・メモリの中の対応する行よりも一層多くの現在時データを含む場合が多い。これは、メイン・メモリ・バージョンがデータの最新のバージョンであるか否かはわからないので、メイン・メモリの行へのアクセスを望んでいる他のバス・マスター(およびマルチプロセッサ・システムにおける他のＣＰＵ)にとって問題を起こす。従って、書き戻しキャッシュ・コントローラが、典型的には、(詮索サイクルとしても知られている)問合せサイクルをサポートする。問い合わせサイクルにおいて、バス・マスターは、キャッシュ・メモリがデータの一層最新のコピーを持っているか否かキャッシュ・メモリに問い合わせする。
【００２８】
図２は、キャッシュ・メモリ１２６の特定の基本コンポーネントを示すブロック図である。この基本コンポーネントには、複数のタグ２３２、対応する複数のデータ行２３４およびディレクトリ／インデックス２３６が含まれる。周知の通り、キャッシュ・タグ２３２は、典型的には、目標データのメモリ位置のブロック(複数行)を定義するアドレス・ビットの一部(最上位ビット)を含む。最下位ビットは、対応するデータ行２３４における目標データ値に対する(ブロックの範囲内の)特定の位置を識別する。従来技術の好ましい実施形態に従えば、キャッシュ・メモリ１２６は６４バイトのデータ行２３４を利用する。従って、アドレス・ビットの最下位６ビットが、所与のデータ行２３４の範囲内における目標データ値の特定の位置を指定する。
【００２９】
図２には、また、ディレクトリ/インデックス２３６が示されている。周知の通り、ディレクトリ２３６は種々のタグ２３２のログまたはデータベースを維持する。開始または初期化の時点では、キャッシュ・メモリ１２６の範囲内にデータはなく、従って、タグはディレクトリ２３６に記憶されていない。従って、装置がデータをシステム・メモリ１２８から読み取ることを要求すると、システム・メモリ１２８からキャッシュ・メモリ１２６のデータ行２３４へ行全体が読み込まれる。アドレス・バスの最上位ビットが対応するタグ２３２に含められ、このタグがディレクトリ２３６に保存される。指定されたメモリ位置からの次のデータ要求があると、キャッシュ・メモリ１２６は、ディレクトリ２３６を調べて、そのデータ値がキャッシュの範囲内に現在あるか否か判断する。そのデータ値がキャッシュ・メモリ１２６の範囲内にあれば、それがアクセスされ、高速で読み出される。一方、そのデータ値がキャッシュ・メモリ１２６の範囲内になければ、データ値はシステム・メモリから取り出され、キャッシュ・メモリ１２６の利用可能データ行２３４に読み込まれる。前述と同様に、アドレス・バスの最上位ビットが対応するタグに含められ、ディレクトリ２３６に記録される。
【００３０】
上記プロセスは、システム・メモリ１２８からの後続のデータ要求に関して繰り返される。しかしながら、どこかの時点で、キャッシュ・メモリ１２６のすべてのデータ行２３４が占有される。この時点で、新しいデータをキャッシュ１２６に読み込むことができる空間を準備するため、キャッシュ・メモリ１２６は、少なくとも１つのデータ行２３４を破棄しなければならない。前述のように、キャッシュ１２６のどのデータ行２３４を破棄すべきかを決定する多種多様なアルゴリズムおよび方法が存在する。好ましくは、近い将来再度使用される可能性が最も少ないデータ行２３４を破棄するアルゴリズムが選択される。データがキャッシュ１２６から破棄されると、それに応じて対応するタグ２３２をディレクトリ空間から削除するようにディレクトリ２３６が修正される。
【００３１】
本発明の動作
キャッシュ・メモリ装置に関する特定の基本的事項と共に、本発明のシステムの環境を以上記述したが、以下、本発明の特徴に焦点をあてて記述を進める。前述したが、本発明は、拡張カード１４０を介する通信のためシステム・メモリ１２８からＰＣＩバス１３０へデータを取り出す場合のコンピュータ・システム１００の全般的性能、動作および効率を強化するシステムおよび方法を対象とする。広義には、本発明は、特定のヒントを伝える新機軸の方法とみなすことができる。ヒントは、システム・メモリから取り出されるべきデータに関する特定の品質を指定する。動作の観点から、Ｉ／Ｏキャッシュはそれを通過するデータを一層効果的に管理するためそのようなヒントを使用する。１つの単純な例をあげれば、Ｉ／Ｏキャッシュに関するコントローラが、取り出されつつあるデータがＡＴＭデータであるということをヒントに基づいて認識(または仮定)するとすれば、コントローラは、(ＡＴＭデータの性質に基づいて)、正確に４８バイトのデータ・ペイロードが要求元装置へ送信されるべきものであり、Ｉ／Ｏキャッシュは、また、正確にその量(典型的には１または２キャッシュ行)を事前取り出しすることができることを認識する。
【００３２】
本発明の１つの側面に従えば、そのようなシステムは、システム・メモリとＰＣＩバスの間に配置される入出力キャッシュ・メモリを含み、キャッシュ・メモリは、その内部に複数のデータ行の形態の内部メモリ空間を持つ。該システムは、取り出し基準を定義するように構成される各ＰＣＩマスタに関する複数のレジスタを含む。更に、該システムは、上記複数レジスタの中の活動的レジスタを選択するように構成されるレジスタ・セレクタを含む。装置に関する取り出し基準は活動的レジスタによって指定される。
【００３３】
更に具体的に述べれば、本発明の好ましい実施形態に従って構築されるシステムにおいて、レジスタは、データ取り出しに関する特定のヒントを指定する内容を含む。例えば、そのようなヒントの１つは、事前取り出しの深さであり、この場合、レジスタが事前取り出し深さの種種の異なる値を含む。例えば、第１のレジスタが２キャッシュ行という事前取り出し深さを指定し、第２のレジスタが３キャッシュ行という事前取り出し深さを指定する。しかしながら、理解されるべきことではあるが、これらレジスタの内容は異なるソースによって動的に変えられることが可能である。例えば、システム・ファームウェアがレジスタの内容をセットするかもしれない。代替的には、レジスタ内容は要求元装置上のドライバの制御の下で設定または変更される。次に、レジスタ・セレクタが、活動的レジスタとしてどのレジスタを選択すべきかを決定する。活動的レジスタは、当該キャッシュのデータを制御するためにＩ／Ｏキャッシュに関するコントローラによって使用されるレジスタである。このセレクタは、データに対する要求を識別するためＰＣＩバスを監視するように構成され、要求の形態、要求元装置の識別情報またはその他の因子に基づいて、セレクタが活動的レジスタを選択する。
【００３４】
更に具体的な例として、ＰＣＩバス・マスターの各々ごとに専用の２つのレジスタを持つシステムを考察する。レジスタの各々は、要求されるデータ転送のタイプに基づいて、すなわち、データ要求がＭＲコマンド、ＭＲＬコマンドまたはＭＲＭコマンドあるか否かに基づいて、異なる事前取り出し深さを指定するように構成される。例えば、(各レジスタ・セットにおける)第１のレジスタは、ＭＲコマンドに対して１キャッシュ行だけの事前取り出し深さを指定し、ＭＲＬコマンドに対して２キャッシュ行の事前取り出し深さを指定し、ＭＲＭコマンドに対して３キャッシュ行の事前取り出し深さを指定するように構成される。(各レジスタ・セットにおける)第２のレジスタは、ＭＲコマンドに対して２キャッシュ行だけの事前取り出し深さを指定し、ＭＲＬコマンドに対して３キャッシュ行の事前取り出し深さを指定し、ＭＲＭコマンドに対して４キャッシュ行の事前取り出し深さを指定するように構成される。
【００３５】
上記の仮定を継続すれば、レジスタ・セレクタは、例えば取り出されるデータが制御型データであると見なされるならば各レジスタ・セットの第１のレジスタを選択し、例えば取り出されるデータがペイロード・データであると見なされるならば各レジスタ・セットの第２のレジスタを選択するように構成される。１つの実施形態に従えば、要求側装置は、アドレス・ビットの使用を通してレジスタ・セレクタの動作を制御することができる。具体的には、さもなければ特定のデータを識別する際に使用されることのないアドレス・ビットを使用して、所与のレジスタ・セットの活動的レジスタが指定される。
【００３６】
しかしながら、理解されるべき点であるが、本発明の概念は、広義であり、本明細書の特定の使用または実施形態に限定されるものではない。このような意味から、本発明は、取り出しヒントをＰＣＩバスを経由して要求元装置から伝える方法として広義に特徴づけることができる。
【００３７】
本発明の１つの応用に従えば、Ｉ／Ｏキャッシュ・メモリの範囲内でデータを管理する方法が提供される。より具体的に述べれば、システム・メモリとＩ／Ｏバスの間に配置されるキャッシュ・メモリを持つシステムにおいてキャッシュメモリの範囲内でデータを管理する方法が提供される。該方法は、システム・メモリからのデータ要求を受け取り、その要求に関連する事前取り出しヒント・セットを評価する。所与の取り出しに関連する事前取り出しヒントに基づいて、該方法は、キャッシュ・メモリの範囲内のデータの取り出しおよび管理を制御する。
【００３８】
そのような実施形態に従えば、該方法はＩ／Ｏバス上のトランザクションを監視するように動作する。監視されたトランザクションに基づいて、該方法は、バス１１０と通信している所与の装置に関する特定の側面を決定する。決定された装置の側面に基づいて、該方法は、全般的システム効率を最適化するためキャッシュ・メモリによって使用される特定のヒントを生成する。好ましくは、これらのヒントはレジスタ・セットに記憶され、取り出し要求に応じてキャッシュ・メモリがこのレジスタにアクセスする。これらヒントに基づいて、キャッシュ・メモリは、一定量のデータの事前取り出し、データの事前取り出しブロック・サイズの制限、データの積極的消去、または、キャッシュ・メモリの範囲内におけるデータの一層効率的管理を可能にするその他のタスクを実行する。
【００３９】
本発明の１つの側面に従えば、事前取り出しヒントは、キャッシュ・メモリに事前取り出しすべきキャッシュ行数の識別情報を含む。例えば、要求元装置がＡＴＭ装置であることを事前取り出しヒントが明らかにするとすれば、該方法は４８バイトのデータを事前取り出しするように動作する。これは、第１のキャッシュ行の範囲内の最初のデータ・バイトの配列に従って、１または２データ行の事前取り出しを伴う。本発明の別の１つの側面に従えば、事前取り出しヒントは、システム・メモリ境界限界の識別情報を含む。この限界を超えたデータはキャッシュ・メモリへ事前取り出しされない。本発明の更に別の１つの側面に従えば、キャッシュ・メモリから取り出されたデータを消去するための条件の識別を含む。
【００４０】
本発明の好ましい実施形態に従えば、ＭＲ、ＭＲＬおよびＭＲＭコマンドを含む種々のＰＣＩコマンドの監視に基づいて、事前取り出しヒントが生成される(ＭＲはMemory Readの略称でメモリ読み取りを意味し、ＭＲＬはMemory Read Lineの略称でメモリ行読み取りを意味し、ＭＲＭはMemory Read Multipleの略称でメモリ複数行読み取りを意味する)。
【００４１】
本発明の更に別の１つの実施形態に従えば、本発明は、Ｉ／Ｏキャッシュ・メモリの範囲内でデータを管理するシステムと見なすことができる。キャッシュは複数のデータ行を含むメモリ空間を含む。該システムは、キャッシュ・メモリとＩ／Ｏバス(好ましくはＰＣＩバス)の間での通信を評価し、評価された通信に基づいて少なくとも１つの事前取り出しヒント・セットを生成するように構成される装置を含む。最後に、該システムは、メモリ空間におけるデータを管理するように構成されるメモリ管理機構を含む。メモリ管理機構は、更に、事前取り出しヒントを評価してメモリ空間におけるデータの管理を制御するように構成される論理機構を含む。
【００４２】
好ましくは、メモリ管理機構は、更に、取り出し要求を評価する第１の手段、取り出し要求に基づいて事前取り出しヒントを評価する第２の手段、および、事前取り出しヒントの値に基づいてあらかじめ定められたデータ・キャッシュ行数の事前取り出しを制御する第３の手段を含む。当業者に理解されることであろうが、上記第１、第２および第３の手段は、それぞれの手段の上記機能を実行するように構成される回路、または、回路とマイクロコードの組み合わせで形成される。該システムは、更に、事前取り出しヒントを記憶する照合テーブルを含む。
【００４３】
図３は、本発明に従って構築されるシステムの特定のコンポーネントを示している。前述の通り、本現在のシステムは、広義には、１つの装置からホスト・システムへＰＣＩバス１３０経由で"ヒント"の通信を実施するシステムを対象とする。"ヒント"は、種々の事柄であり、多くの目的のために使用されることができる。本発明の１つの実施形態に従えば、ヒントは、要求装置に関する特定の情報やそのような装置が使用するデータに関する特性を指定する。これらのヒントは、例えばＩ／Ｏキャッシュの範囲内のデータの管理に役立てるためシステムによって使用される(例えばヒントは事前取り出し深さを定義する)。
【００４４】
本発明の好ましい実施形態に従えば、該システムは、"ヒント"を定義する情報を記憶する複数のレジスタ３２４を使用する。特に、好ましい実施形態はレジスタのグループ化を利用する。図３に示されているように、本発明の１つの実施形態は、(ＰＣＩバスを駆動する装置である)ＰＣＩマスタの各々ごとに複数のレジスタを使用する。この実施形態において、各ＰＣＩマスタ装置に対して２つのレジスタが専用に配置される。しかしながら、本発明の概念と教示と整合性を保ちながら、各ＰＣＩマスタに関連するレジスタを必要に応じて追加することは可能である。
【００４５】
本発明に従えば、各レジスタは１つのヒントまたはヒント・セットを記憶することができる。本発明の好ましい実施形態に従って、詳細は後述されるが、各レジスタはヒント・セットを記憶する。従って、この場合、２つのヒント・セットが各ＰＣＩマスタ装置に関連して記憶される。例えば、第１のＰＣＩマスタに関連して２つのレジスタ３２５および３２６が例示されている。ＰＣＩバス１３０を経由するデータ転送に関して一層広く一般化するため、データを制御データまたはペイロード・データとして一般的に分類することができる。制御データは典型的には比較的短いデータ・ブロックを含むが、一方、ペイロード・データは一般に一層大きいデータ・ブロックを含む。従って、第１のレジスタ３２５は制御型データの通信に関するヒントを記憶するため使用され、第２のレジスタ３２６はペイロード型データの通信に関するヒントを記憶するため使用される。動作の間、該システムは、(所与のＰＣＩマスタに関する転送のため)"活動的"レジスタとしてこれらのレジスタのうちの１つを選択する。
【００４６】
ヒント生成回路３２２は、種々のレジスタ３２４に記憶される値を生成するため何らかのメカニズムが提供される概念を表現している。これらの値は実際に多数の異なる方法で導出されることができる。最適の場合として、所与の回路カード／ＰＣＩマスタはこれらの値を具体的に生成する。当然のことながら、この手法は、回路カードが本発明のシステムのため特に設計されているか、あるいはそのようなシステムのためのソフトウェア・ドライバを備えていると仮定される。しかしながら、そのような回路カードが多くの異なるシステムに関して動作するように一般的に設計されていると認識して、該システムは、これらのレジスタ値を特に生成するための回路またはその他のメカニズムを含むことができる。この場合、システムは初期化の際デフォルト値を記憶することができる。しかし、ヒント生成回路３２２は、個々のＰＣＩマスタの間のＰＣＩバス・トランザクションを監視するように構成されることもできる。所与の装置に対するバス・トラフィックの性質を時間の経過とともに観察することによって、ヒント生成回路３２２は種々のレジスタ３２５の範囲に記憶される値を更新するように構成される。このようにして、一般的なＰＣＩカードでさえその性能は、本発明に従って構築されるシステムによって大幅に改善される。
【００４７】
加えて、所与のレジスタ・セットのうちの"活動的"レジスタを選択するためレジスタ・セレクタ回路３２８が提供される。本発明の好ましい実施形態に従えば、さもなければ使用されないアドレス・ビットを使用することによって活動的レジスタが指定される。図３は、更に、ＰＣＩバス上のトランザクションを監視するように構成されるＰＣＩインタフェース３２９を示している。集合的にＰＣＩインタフェース３２９およびレジスタ・セレクタ３２８は、所与のレジスタ・セットから活動的レジスタを指定する。前述の通り、活動的レジスタは、(ＰＣＩマスタが本発明のシステムに関する特定の知識を持つ特別のカードであるとすれば)、ＰＣＩマスタによって指定されることができるし、あるいは、本発明のシステムによって指定されることもできる。
【００４８】
本発明の概念の例示に役立つように、以下の記述は、Ｉ／Ｏキャッシュにおけるデータ管理を実施するための本発明の使用を説明する。この環境においては、システム・メモリ１２８に対して読み書きされるべきデータはキャッシュ・メモリ装置１２６によって読み取られる。このように、ＰＣＩバス１３０に沿って配置される装置へシステム・メモリ１２８からデータを読み取る時、データは、先ず、システム・メモリ１２８からキャッシュ・メモリ装置１２６のメモリ空間３０４に読み込まれなければならない(図４参照)。この実施形態のキャッシュ・メモリ装置１２６が、キャッシュ・メモリ管理においてよく知られている多くのデータ管理方法または技法を利用することができるが、いくつかの新しい機能も同様に利用される。本発明の実施形態の１つの側面に従えば、該システムは、ＰＣＩバス１３０とキャッシュ・メモリ１２６の間のバス・トラフィックを監視して、ＰＣＩバス１３０に沿って配置される装置に対する特定の洞察を取得する。具体的に述べれば、該システムは、ＰＣＩバス１３０と通信中のユニークな装置を指定する特定の装置位置との間のバス・トラフィックを監視して追跡する。例えば、(図１の)拡張カード１４０は、特別なアドレス１１０またはアドレス範囲を持つように定義されることができる。このＩ／Ｏアドレスまたはアドレス範囲との間のいかなる読み取りまたは書き取りもシステムによって監視されることができる。このカードとの間のデータ・トランザクションの特徴に基づいて、システムは、カードの性質に関する特定の決定を行い、それに応じてキャッシュ・メモリの範囲内でデータを管理する方法を変更する。好ましくは、データは全般的システム効率を最適化するように管理される。第１および第２という２つの拡張カードがある場合、システム・メモリ１２８から第１の拡張カードへのデータ取り出し要求は、２つのそれぞれのカードに関して本発明によって収集される情報に基づいて、メモリから第２の拡張カードへのデータ取り出し要求に関するものとは異なる形態で取り扱われる点は理解されることであろう。
【００４９】
例として、拡張カードの１つが非同期転送モード(すなわちＡＴＭ)通信装置であると仮定する。そのカードとの間のデータ・トランザクションを監視することによってカードが実際にＡＴＭカードであるとシステムが判断すれば、本発明はそのカードとの間のデータ・トラフィックに関して特定の仮定を行うことができる。具体的に述べれば、周知の通り、単純なＡＴＭ装置においては、ＡＴＭデータは、５つのオクテット・ヘッダ部分と４８バイトのデータ・ペイロードからなるパケットで伝送される。従って、ＡＴＭ装置がシステム・メモリ１２８からのデータを要求する時、システムは、最終的には装置によってメモリから連続する４８バイトが要求されると仮定することができる。従って、システムは、(データの最初のバイトに対する要求を受け取り次第)直ちにシステム・メモリ１２８からキャッシュ・メモリ１２６のメモリ空間３０４に４８バイトのデータを取り出すように動作する。次に、このデータは、ＰＣＩバス１３０の装置がメモリ１２８からデータを要求する時典型的に派生する待ち時間(すなわち数サイクルの遅延)を発生させることなく、(ＰＣＩバス１３０からの要求があり次第)直ちにキャッシュ・メモリ１２６からＰＣＩバス１３０へ書き込まれる。本実施形態に従って、キャッシュ・メモリ１２６は、データ・バイトではなくむしろキャッシュ行グループの形態でシステム・メモリ１２８からデータを取り出す。従って、システムは、データ要求を受け取り次第直ちにキャッシュ・データ行全体を取り出す。キャッシュ行の範囲内のデータの最初のバイトの位置およびキャッシュ・メモリ１２６のキャッシュ行のサイズに基づいて、４８バイト・データを完全に事前取り出しするため、システムの装置は、少なくとも１データ・キャッシュ行を事前に取り出し、更に必要に応じて潜在的に２または３データ・キャッシュ行を事前に取り出す。
【００５０】
しかしながら、本発明の概念と整合性を保ちながら、上述のＡＴＭに関連する場合と同様の方法で異なるタイプの拡張カードに関する種々の特徴を収集および使用して、キャッシュ・メモリ１２６の動作の効率を最適化または少なくとも改善することができる点は理解されることであろう。
【００５１】
図４に示されているように、キャッシュ・メモリ装置１２６は、メモリ空間３０４、メモリ管理機構３０２およびディレクトリ／インデックス２３６を内包する。メモリ空間３０４は複数のキャッシュ行に区分される。１つの実施形態に従えば、メモリ空間３０４は、各行が６４バイト・データを含む１６キャッシュ行を含む。しかしながら、本発明の概念と整合性を保ちながら、異なる行サイズを利用することができる。メモリ管理記憶は、メモリ空間３０４の範囲内のデータ管理と共にキャッシュ・メモリ１２６の動作の制御を行う種々の機能を実行する回路から構成される。そのようなタスクは当業者には周知のもので、従って、ここで記述する必要はない。
【００５２】
実際にここで記述が必要とされるものは、本発明を活用するシステムによってなされる特定の基本的進歩を例示する部分だけである。このような観点から、メモリ管理機構３０２の回路は、離散的ハードウェアまたはハードウェア／マイクロコード部分３１０から成る多数の機能ユニットを含む。１つ機能ユニットは、取り出し命令３１４を評価するように構成される。ＰＣＩバス１３０に沿って配置される装置から受け取られる命令がメモリ管理機構３０２によって評価され、具体的にどのようなアクションが要求されているか決定される。
【００５３】
別の機能ユニットは、ブロック３１４によって評価された取り出し命令に関連する事前取り出しヒントのセット３１６を評価するように構成される。この機能は更に詳細に後述される。本発明に従って構築されるシステムによって提供される更に別の機能は、ブロック３１４によって識別される取り出しコマンドに部分的に基づき、また、ブロック３１６によって識別される事前取り出しヒントに部分的に基づいて、データ・キャッシュ行３１８の特定数"Ｘ"の事前取り出しを実行することを要求する機能である。前述のように、取り出し要求が単に１バイト・データに関する要求であっても事前取り出しヒントが要求元装置をＡＴＭカードであると識別すれば、キャッシュ行の範囲内のデータの最初のバイトの位置およびキャッシュ・メモリ１２６のキャッシュ行のサイズに基づいて、ブロック３１８は、少なくとも１データ・キャッシュ行を事前に取り出し、更に必要に応じて潜在的に２または３データ・キャッシュ行を事前に取り出すように動作するように構成される。(６４バイトのキャッシュ行を持つ)好ましい実施形態のキャッシュ・メモリ装置１２６においては、ＡＴＭカードからのデータ取り出し要求は、１または２キャッシュ行の事前取り出しを派生する。一層具体的に述べれば、要求されるデータの最初のバイトのアドレスがキャッシュ行の最後の４７バイト以内にあれば、２キャッシュ行全体がメモリ空間３０４に事前取り出しされる。
【００５４】
本発明に従って構築されるシステムの別の１つの機能ユニットは、あらかじめ定められた数"Ｘ"のデータ・キャッシュ行３２０を消去するように構成される機能ユニットである。前述の例を継続すれば、典型的には、ＡＴＭ装置(またはそのような入出力装置のいずれでも)が、システム・メモリ１２８からデータを取り出す時、近い将来において再度同じデータ要求をおこなわないであろう。従って、データがメモリ空間３０４からＰＣＩバス１３０へ書きかまれると、メモリ管理機構３０２は、そのデータが近い将来再びアクセスされないと仮定して、メモリ空間３０４からそれを消去することができる。ＡＴＭからのデータ要求に応答して、本発明が２データ・キャッシュ行を事前取り出しすべきであったとすれば、４８バイト・データの最後のバイトがメモリ空間３０４からＰＣＩバス１３０へ書き込まれると、本発明は、直ちにメモリ空間３０４からそれら２データ行を消去する。キャッシュ１２６の比較的小さいメモリ空間３０４を効率的に管理することによって、全般的システム性能および効率が改善される。
【００５５】
本発明に従って、ＰＣＩバス１３０とキャッシュ・メモリ１２６の間のバス・トラフィックおよびデータ・トランザクションが、ＰＣＩバス１３０上の装置の性質を識別および判断するため監視される。この情報は、ＰＣＩバス１３０上の所与の装置と関連するヒント・セットを生成するように構成されるヒント生成回路３２２によって利用される。これらのヒントは、上述のような種々の機能ブロック３１０によって利用される種々の事前取り出しヒントを保存する照合テーブル３２４に保存される。好ましい実施形態に従えば、ヒント生成回路３２２は、メモリ読み取りのようなバス・トランザクションを監視する。
【００５６】
周知の通り、システム・メモリ１２８からＰＣＩバス１３０上の装置へデータを読み取るために使用される命令は一般的に３つある。それらは、Memory Readの略称でメモリ読み取りを意味するＭＲコマンド、Memory Read Lineの略称でメモリ行読み取りを意味するＭＲＬコマンド、およびMemory Read Multipleの略称でメモリ複数行読み取りを意味するＭＲＭコマンドである。これらのコマンドは、標準ＰＣＩバスによって定義されているが、実施の度合いは厳密ではない。ＭＲコマンドは、典型的には、メモリからデータの単一ワードを取り出す時に典型的に使用される。ＭＲＬコマンドは、メモリからデータの数ワードを取り出す時通典型的に使用されるが、通常キャッシュ行境界を越えた取り出しは行われない。ＭＲＭは、バイトまたはデータ・ブロックの比較的大きい数をメモリから取り出す時使用され、キャッシュ行境界を越えた取り出しが行われる。これらコマンドだけに基づいて、メモリ管理機構３０２は、ＭＲＬまたはＭＲＭコマンドを受け取る時にのみデータを事前取り出しするように構成される。すなわち、メモリ管理機構３０２は、ＭＲＬコマンドに応答して１データ・キャッシュ行を必ず事前取り出しを行い、ＭＲＭコマンドに応答して２または３データ・キャッシュ行を必ず事前取り出しを行うように構成される。
【００５７】
しかしながら、周知の通り、標準ＰＣＩはこれらコマンドをゆるく定義しているに過ぎず、これらを厳密に守る強制力はない。従って、別々の拡張カードの別々の製造業者が、異なる方法でそれぞれのカードに対するデバイス・ドライバをプログラムする可能性がある。例えば、ＡＴＭ装置の例を更に続ければ、ＡＴＭカードに関するデバイス・ドライバは、ＭＲコマンドだけを活用するプログラマによって開発されるかもしれない。従って、従来技術のシステムは、(たとえ４８バイトが連続的に取り出されなければならないとしても)システム・メモリ１２８からデータを事前に取り出さないであろう。すなわち、(本発明の利点を持たない場合)メモリ管理機構３０２は、ＭＲコマンドを受け取ると、システム・メモリ１２８から単に１バイト・データだけを取り出すべきものであり、追加の事前取り出しを実行する必要はないと仮定する。
【００５８】
しかしながら、本発明の利点を適用すれば、特定の拡張カードが例えば常に４８連続ＭＲコマンドを実行して連続的な４８データ・バイトを取り出すことをヒント生成回路３２２が決定することができる。この情報から、ヒント生成回路３２２は、ＰＣＩバス１３０に沿った所与のアドレスにおける装置または拡張カードがＡＴＭカードであると仮定することができる。ヒント生成回路３２２は、このカードに関連する事前取り出しに関する特定のヒントを照合テーブル３２４に記憶する。従って、ＭＲ要求がその装置から受け取られると、本発明のメモリ管理機構３０２は、直ちに４８データ・バイト(１または２キャッシュ行のいずれ)を事前取り出しするように動作する。従って、ＰＣＩバス１３０に沿ったＡＴＭ装置から実行される後続のメモリ読み込みはキャッシュ・メモリ１２６のメモリ空間３０４から直ちに取り出されることができるので、システム・メモリ１２８から取り出す場合の待ち時間遅延に苦しむことがない。
【００５９】
当然のことではあるが、この仮定が間違っているとしても、メモリ１２８からメモリ空間へ事前取り出しされたデータが単にＰＣＩバス１３０から要求されないだけであるので、特に大きな損失はなく、当然の成り行きとしてメモリ管理機構３０４によってメモリ空間３０４からそのデータが消去される。更に、理解されることであろうが、ヒント生成回路３２２は、多種多様な拡張カードに関して同様なヒントを生成するように構成することができる。すなわち、本発明は、ＡＴＭタイプの拡張カードに関連するヒントの生成のみに限定されているのではなく、本発明の広範囲な側面を例示するためにＡＴＭカードを取り上げたに過ぎない。
【００６０】
本発明の実施形態を更に具体的に説明するため、図５を参照する。図５において、ヒント生成回路３２２は、キャッシュ・メモリ１２６とＰＣＩバス１３０の間に配置されるインタフェース４０２において実施されている。拡張カード４０６および４０８(その他は図示されていない)がＰＣＩバス１３０と通信するように配置されている。キャッシュ・メモリ装置１２６は、事前取り出しヒントを評価し、キャッシュ・メモリ管理を制御する回路４１０を含む。この回路４１０は、図３に図示されているメモリ管理機構３０２に部分的に対応する。同じように、インタフェース４０２は、図３と関連して記述されたヒント生成機能論理を提供するよう集合的に構成される種々の回路コンポーネントを含む。例えば、回路または論理は、事前取り出しヒント４１２を生成するように提供される。独立した回路が、特定の事前取り出しヒント４１４を定義するレジスタ・セットを含む。好ましい実施形態のシステムに従って、インタフェース４０２は、特定の事前取り出しヒントを定義するレジスタ・セットを含む。所与の取り出し要求に応答して、これらのレジスタ値４１４は、キャッシュ・メモリ１２６の範囲内の回路によって解釈され、キャッシュ・メモリ１２６の範囲内におけるデータの管理に使用される。
【００６１】
図６の流れ図は、本現在の１つの実施形態に従って構築される方法の概略の機能的動作を示す。該方法は、ＰＣＩバス(特にＰＣＩバスとシステム・メモリ１２８の間のトランザクション)を監視し(ステップ５０２)、ステップ５０２において監視されるバス・トランザクションに基づいて事前取り出しヒントを生成する(ステップ５０４)。種々の事前取り出しヒントが装置レジスタ・セットに保存される(ステップ５０６)。これら３つのステップ５０２、５０４および５０６は連続的に実行され、ＰＣＩバス１３０と通信する拡張スロットまたは装置における種々のカードに対して事前取り出しヒントが連続的に更新される。動作において、取り出し要求を受け取ると(ステップ５０８)、該方法は、取り出し要求に基づいて、好ましくはアドレス・ビットを使用して、活動的レジスタを選択する(ステップ５１０)。レジスタから取り出した事前取り出しヒントまたは情報に基づいて、種々の後続ステップがとられる。
【００６２】
例えば、レジスタからの情報を使用して、事前取り出しブロック・サイズまたはブロック境界を制御する(ステップ５１２)。すなわち、この情報を使用して、システム・メモリ１２８からキャッシュ・メモリ３０４へ(特定の境界によって制限されるが)どれだけのデータを事前に取り出すか決定される。本発明の別の側面に従えば、レジスタに含まれる情報を使用して、キャッシュ消去条件が制御される(ステップ５１４)。前述のように、(ＡＴＭデータのような)多くのタイプのデータが、メモリ空間３０４からＰＣＩバス１３０へ読み取られると、データが近い将来再び使用される可能性がないという仮定に基づいて、キャッシュ・メモリ空間３０４から直ちに消去される。同じように、レジスタから取り出したデータすなわち事前取り出しヒントを利用して、事前取り出しの深さが制御される(ステップ５１６)。このステップはステップ５１２に似ているが、事前取り出しの深さは、キャッシュ・メモリ１２６のメモリ空間３０４へ事前取り出しすべきデータの量を指定する。そこを越えてデータを事前取り出ししないアドレス境界を指定するためステップ５１２のブロック・サイズは使用される。
【００６３】
メモリ管理機構３０２の動作に影響を及ぼす種々の異なる機能が使用されることができる点は理解されることであろう。しかしながら、本発明の好ましい実施形態に従って、特定の事前取り出しヒントが上記定義されているので、それらに関して以下に更に説明する。本発明の好ましい実施形態に従って、複数の"ヒント"レジスタが提供される。それらの各々は次の表１の通りである。
【００６４】
【表１】
0003888508.tif 000002
【００６５】
具体的に述べれば、このレジスタは、３２ビット・レジスタで、書き込みヒントを指定する３ビット・フィールド(ビット２７−２９)、読み取りヒントを指定する９ビット・フィールド(ビット１８−２６)、行読み取りヒントを指定する９ビット・フィールド(ビット９−１７)、および、複数行読み取りヒントを指定する９ビット・フィールド(ビット０−８)を含む。この形式のレジスタは、図３のブロック３２４または図４のブロック４１４の一部を形成する。
【００６６】
実際、本発明の好ましい実施形態に従って、各々が表１の形式をした複数の"ヒント"レジスタが提供される。所与のトランザクションに関して複数のヒント・レジスタのうちのどれを使用すべきかあるいはどれにアクセスすべきかを指定するためＰＣＩアドレス・ビットが使用される。例えば、４つのヒント・レジスタ・セットがあると仮定すれば、所与のレジスタを指定するため未使用の２ＰＣＩアドレス・ビットを使用することが可能である。４つのレジスタはゼロ、１、２および３という番号がつけられているとすれば、00、01、10、11というアドレス・ビット値を使用して、それぞれのヒント・レジスタを指定することができる。次に、指定されたヒント・レジスタはメモリ管理機構３０２内部の回路によって解釈される。
【００６７】
本発明の好ましい実施形態に従えば、メモリ書込み(Memory Write)コマンドまたはメモリ書き込み無効(Memory Write Invalidate)コマンドがＰＣＩに対して使用される時、書き込みヒントが選択される。ＰＣＩメモリ読み取り(Memory Read)コマンドの場合読み取りヒントが選択される。ＰＣＩメモリ行読み取り(Memory Read Line)コマンドの場合、行読み取りヒントが選択される。ＰＣＩメモリ複数行読み取り(Memory Read Multiple)コマンドの場合、複数行読み取りヒントが選択される。メモリ管理機構３０２によって解釈される読み取りコマンドの各々に関するアクションは次の表２の通りである。
【００６８】
【表２】
0003888508.tif 000003
【００６９】
具体的には、読み取りヒント、読み取り行ヒントおよび読み取り複数行ヒントの各々に関する９ビッ・フィールドは同じヒント記述を持つように定義されている。当然のことながら、本発明の概念と整合性を保ちながら、これらのフィールドを異なる機能または記述を持つように構成することは可能である。同様に多様な機能または記述を書き込みヒント・フィールドに用いることも可能である。しかしながら、本発明の好ましい実施形態に従えば、オプションはほとんど用意されていないので、書き込みヒント・フィールドは２、３ビットで定義される。具体的には、本実施形態では、ビット０だけが利用され、このビットの状態は、積極的消去が実行されるべきか否かを指定する。積極的な消去においては、メモリ管理機構は、書き込み更新が完了すると直ちにキャッシュ行を消去する。
【００７０】
ＤＭＡ読み取りに関する合理的なスループットを達成するため、事前取り出しが望ましい。事前取り出しのレベルは、インタフェース４０２によって供給される事前取り出しおよびブロック・サイズ・ヒント(表３参照)によって制御される。事前取り出しヒントは、当該バースト動作に関して事前取り出しすべきキャッシュ行数を指定する２ビット値である。本発明の好ましい実施形態は、０、１、２および３キャッシュ行という事前取り出し深さをサポートする。値ゼロは、事前取り出しを全く行わない、すなわち要求された行だけを取り出すことことを意味する。１、２および３という値は、要求された行に加えて、それぞれ、１、２または３の追加の連続行を取り出すことを意味する。ＤＡＭＡバースト動作がキャッシュ行を消費するにつれて、追加のキャッシュ行が事前取り出しされる。
【００７１】
ブロック・サイズ・ヒントは３ビット・フィールドである。ブロック・サイズは、読み取りバーストの長さに関するヒントとして使用される。次の表３は、ヒントの各値に関する意味を説明している。値０−３はキャッシュ行の数に基づく限度を指定する。残りの値はアドレスに基づく限度を指定する。ＤＭＡシーケンサおよびキャッシュは、ヒント値に従って、キャッシュ行カウントの使用とアドレス・ロールオーバー・テスト(address rollover tests)の間を切り替える。
【００７２】
【表３】
0003888508.tif 000004
【００７３】
好ましくは、ブロック・サイズ・ヒントは事前取り出しヒントに優先する。ＤＭＡシーケンサは、ブロック・サイズによってセットされた制約に従うためキャッシュ・コントローラに対する実際の事前取り出し信号を増減する。更に、ＤＭＡシーケンサは、読み取りバーストがＰＣＩバスに転送中のキャッシュ行を(事前取り出しヒント＋１)行に維持し続けるので、事前取り出しヒントを調節する。これは、０または１という事前取り出しヒントを使用する遅いカードに関して実行され、それ以外の場合には、ＤＭＡシーケンサは、単に読み取りＦＩＦＯをいっぱいに維持しようとする。この結果、カード切断の時事前取り出しが無駄となり、プロセッサ・バス・バンド幅が不必要に浪費される。
【００７４】
上述されたような方法で事前取り出しヒントを調節することは、非常に速いカードの場合性能へ悪影響を及ぼすことがある。そのようなケースでは、事前取り出しロック・ヒントをセットして、読み取りＦＩＦＯをいっぱいに維持しようとするＤＭＡシーケンサの行動形態を変えることができる。事前取り出しロック・ヒントは、その目的がＰＣＩバス１３０のパイプラインを可能な限りいっぱいにすることを試みるものであるので、３という事前取り出し深さを使用することが好ましい。
【００７５】
以下は、事前取り出しヒントに関する若干のガイドラインである。
【００７６】
＊ＭＲコマンドの場合、ヒントはほとんど常にゼロに設定される。他の値を使用する典型的な理由は、そうしなければならない時にＭＲＬまたはＭＲＭの使用に失敗するカードの性能を最適化することである。
【００７７】
＊ＭＲＬコマンドの場合、０および１というヒントが有意である(２または３という値は、ＭＲＭを使用すべき時にＭＲＬを使用したカードに対して使用されることができる)。ＭＲＬ使用の理由は次の２つの理由のうちの１つである。(1)カードが、例えば３２または６４バイトのようななんらかの制御情報を取り出し、次のアドレスにおいてキャッシュ行から追加データを取り出す意図を持たない。(2)カードが、データの大きいブロックのデータを取り出すが、インタフェースにおいて１データ・キャッシュ行を収納できるだけのバッファしか持っていないので、個々の読み取りごとに１キャッシュ行だけを取得するだけである。最初のケースではヒントはゼロでなければならない。後者の場合、装置が次の読み取りを試みる時次のキャッシュ行がすでにキャッシュにあるようにするため、ヒントは１でなければならない。しかしながら、このヒントはキャッシュにおける追加の行を使用する点に注意する必要がある。従って、装置が多くのストリームを同時に活動的にさせようとすれば、たとえ大きいブロックが読まれようとヒントをゼロにセットすることはより良い考えである。
【００７８】
＊ＭＲＭコマンドの場合、２または３という値が意味を持つ。正確な選択は、ＰＣＩに関するメモリ・システムの待ち時間および動作の頻度に依存する。事前取り出しロック・ヒントがこの場合もセットされる必要があるかもしれない。
【００７９】
以上の記述は、本発明を記述した厳密な形態に制限するように意図されたものではない。上記の教示に照らして種々の修正またはバリエーションが可能である。そのような観点から、本発明の原理およびその実際的応用を最もよく例示し、それによって当業者がその特定用途に適するような修正を加えた種々の実施形態において本発明を活用することができるように、上記実施形態は選択されている。
【００８０】
本発明には、例として次のような実施様態が含まれる。
(1)システム・メモリと要求元装置の間に配置されるキャッシュ・メモリを有するコンピュータ・システムにおいて、該キャッシュ・メモリの内部のデータを管理する方法であって、システム・メモリからデータを取り出す要求を受け取るステップと、上記要求に関連する事前取り出しヒント・セットを評価するステップと、上記事前取り出しヒントに基づいて上記キャッシュ・メモリ内部におけるデータの取り出しおよび管理を制御するステップと、を含むキャッシュ・データ管理方法。
(2)上記事前取り出しヒントがキャッシュ・メモリに事前に取り出すべきキャッシュ行数の識別情報を含む、上記(1)に記載の方法。
(3)上記事前取り出しヒントが、そこを越えてデータがキャッシュ・メモリに事前取り出しされることのないシステム・メモリ境界限界の識別情報を含む、上記(1)に記載の方法。
(4)上記事前取り出しヒントが、取り出されたデータをキャッシュ・メモリから消去する条件の識別情報を含む、上記(1)に記載の方法。
(5)上記条件が、取り出されたキャッシュ行が要求元装置へ書き出され次第消去されるべきことを指定する、上記(4)に記載の方法。
【００８１】
(6)要求元装置とキャッシュ・メモリがＰＣＩバスを介して相互通信する、上記(1)に記載の方法。
(7)Memory Readの略称でメモリ読み取りを意味するＭＲコマンド、Memory Read Lineの略称でメモリ行読み取りを意味するＭＲＬコマンド、およびMemory Read Multipleの略称でメモリ複数行読み取りを意味するＭＲＭコマンから事前取り出しヒントを導出するステップを更に含む、上記(6)に記載の方法。
(8)ＭＲ取り出しコマンドが、追加事前取り出しを行わないようにキャッシュ・メモリに関するメモリ・コントローラに指示する事前取り出しヒントを生成する、上記(7)に記載の方法。
(9)ＭＲＬコマンドが、２未満の追加データ・キャッシュ行を事前取り出しするようにキャッシュ・メモリに関するメモリ・コントローラに指示する事前取り出しヒントを生成する、上記(7)に記載の方法。
【００８２】
(10)ＰＣＩバスを経由して通信している装置へシステム・メモリからデータを取り出すシステムであって、システム・メモリとＰＣＩバスの間に配置され、複数のデータ行の形態でその内部にメモリ空間を有する入出力キャッシュ・メモリと、取り出し基準を定義するように構成される複数のレジスタと、上記複数レジスタの中から活動的レジスタを選択するように構成されるレジスタ・セレクタと、を備え、上記装置に関する取り出し基準が上記活動的レジスタによって指定される、システム。
【００８３】
【発明の効果】
本発明によると、ＰＣＩバスに接続する装置とシステム・メモリの間に位置するキャッシュ・メモリへのシステム・メモリからのデータの事前取り出し量が装置やトランザクションなどの特性に基づいて決定されるので、キャッシュ・メモリの性能および効率が向上する。
【図面の簡単な説明】
【図１】ＰＣＩバスを経由してキャッシュ・メモリと通信する高性能なコンピュータ・システムのブロック図である。
【図２】キャッシュ・メモリの内部の基本的コンポーネントを示すブロック図である。
【図３】本発明に従って構築されるシステムの特定のコンポーネントを示すブロック図である。
【図４】本発明に従って構築されるシステムの特定のコンポーネントを示すブロック図である。
【図５】本発明に従って構築されるシステムのその他のコンポーネントを示すブロック図である。
【図６】本発明に従って構築されるシステムの機能的動作の概要を示す流れ図である。
【符号の説明】
１００    コンピュータ・システム
１２６    キャッシュ・メモリ
１２８    システム・メモリ
１３０    ＰＣＩバス
３２２    ヒント生成回路
３２４    事前取り出しヒント・レジスタ
【図１】
0003888508.tif 000005
【図２】
0003888508.tif 000006
【図３】
0003888508.tif 000007
【図４】
0003888508.tif 000008
【図５】
0003888508.tif 000009
【図６】
0003888508.tif 000010