JP3888508B2 - キャッシュ・データ管理方法 - Google Patents
キャッシュ・データ管理方法 Download PDFInfo
- Publication number
- JP3888508B2 JP3888508B2 JP2000003572A JP2000003572A JP3888508B2 JP 3888508 B2 JP3888508 B2 JP 3888508B2 JP 2000003572 A JP2000003572 A JP 2000003572A JP 2000003572 A JP2000003572 A JP 2000003572A JP 3888508 B2 JP3888508 B2 JP 3888508B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- cache
- hint
- prefetch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、一般的に、PCIバス(すなわち周辺コンポーネント接続バス)を経由して、システム・メモリから装置へデータを取り出すシステムおよび方法に関するもので、特に、PCIバス・トランザクションから観察されるヒントに基づいてシステム・メモリからPCIバス上で通信している装置へデータを効率的に取り出すシステムおよび方法に関するものである。
【0002】
【従来の技術】
コンピュータ・システム設計において、主要な目標は、一層迅速で一層効率的なコンピュータ・システムを継続的に設計することである。このような観点から、従来技術の高性能コンピュータ・システムの大部分はキャッシュ・メモリを含む。周知のように、キャッシュ・メモリは、システム性能を改善するためコンピュータ・システムにおいてマイクロプロセッサとメイン・メモリの間に配置されている高速のメモリである。典型的に、キャッシュ・メモリ(またはキャッシュ)は、プログラムが実行している間、中央処理装置(CPU)によって活発に使用されているメイン・メモリ・データ部分のコピーを記憶する。キャッシュのアクセス・タイムがメイン・メモリのそれより速いので、全般的アクセス・タイムを減少させることができる。
【0003】
たとえキャッシュ・メモリが典型的にはシステム性能を向上させるとしても、更なる改良が望まれている。例えば、(マイクロプロセッサのような)中央処理装置のメモリと(ISAバスやPCIバスのような)I/Oバスを相互接続するシステム・バスのような独立したバスを持つコンピュータ・システムを考察してみると、過去においてパソコンの性能を制限したボトルネックのうちの1つは、ISAバスの最大指定速度であった。IBM社によって製作されたIBM PC ATコンピュータにおいては、I/Oバスは、8MHzというデータ・レート(すなわちBCLK=8 MHz)で動作した。このデータ・レートは、その時代のCPUがホスト・バス上で動作できる最高データ・レートにほぼ等しかったので、当時は適切なデータ・レートであった。しかしながら、今日のCPUデータ・レートは数倍も速くなっているので、I/Oバスの遅い速度は今日ではシステムのスループットを厳しく制限する。この問題の1つの解決策はローカル・バス規格の開発であった。この規格によって、I/Oバス上に伝統的に配置されていた特定の装置が、今や、VESAVL−バス・ローカル・バス規格のようなホスト・バス配置されることができるようになった。
【0004】
別の1つ解決策は、PCI規格と呼ばれる別の規格の開発であった。周知のように、PCIは、Peripheral Component Interconnect(周辺コンポーネント相互接続)の頭文字である。PCI規格は、外部装置をコンピュータに接続する方式を定義するガイドライン・セットであり、1990年代の初めに開発されていた互換性のないバス・アーキテクチャの急速な増加を防止するローカル・バス規格を提供するため本来は開発された。このような点から、PCIバスは、コンピュータ・システムにおける好ましい主要ローカル・バスとして、ISA(EISA)、VL−ローカル・バス、マイクロチャネル、NUBusなどのローカル・バス・アーキテクチャを置き換えるものである。
【0005】
PCIバスは、その基礎的なデータ転送モードがバーストであるので、非常に高い性能を達成する。すなわち、アドレス空間における既知のシーケンスのデータ単位アドレスによって定義される既知のシーケンスのデータ単位でPCI装置の間でデータが転送される。"線形の"バースト・モードにおいては、始動元または宛先のいずれかがトランザクションを終了させるまで、(1を含める)任意の数の転送が線形に連続したアドレスの間で行われる。両者が、後に続くアドレスのシーケンスを知っているので、始動元は開始アドレスを指定するだけでよい。PCIバスの実施形態は当業界において周知であり、その仕様は公に入手可能である。
【0006】
【発明が解決しようとする課題】
高速の業界標準共通バスの間で転送する際、バスがバンド幅全体を維持すことを可能にするためにはデータに関する中間的ローカル・キャッシュ・バッファを備えることが望ましいことがしばしばある。すなわち、システム・バスに負荷をかけることなく、PCIバスをキャッシュに結びつけるI/Oバスの最大限の利用を維持することが望ましい。例えば、データがメモリからキャッシュへ取り出される時、一度に1つのキャッシュ行が取り出される。データがPCIバス上の装置によって最初に要求される時、データの最初のキャッシュ行がメモリからキャッシュへ取り出される間初期的待ち時間(アイドルI/Oクロック・サイクル)が存在する。PCI転送が1つ以上のキャッシュ行データを要求すれば、次のキャッシュ行データがシステム・メモリからキャッシュへ取り出される間更に1つの待ち時間が発生する。データの新しい行がメモリからキャッシュへ読み取られるたびに断続的な待ち時間が発生する。従って、このような待ち時間を除去または減少することが望ましい。この目標を達成する1つの方法はデータの追加キャッシュ行を常に事前取り出しすることである。例えば、初めからデータの2つのキャッシュ行がメモリからキャッシュへ取り出されることができるようにする。データの最初の行がキャッシュからPCIバスへ転送された後第2の行がPCIバスへ転送され。従って、データの追加キャッシュ行がメモリからキャッシュへ取り出される。
【0007】
この手法は、I/Oバス上で経験されるアイドル・サイクルを減少させるが、システム資源の非効率な利用を伴う。この手法にかかわ問題は、(1つのキャッシュ行によって)メモリからキャッシュへのデータ取り出しが過多になる点である。従って、この手法はシステム・バスのバンド幅を不必要に消費するとともに、キャッシュ・メモリ部分を浪費する。キャッシュ・メモリ空間の貧弱な利用は全般的システム効率を悪化させる。従って、上記のように認識されたものを含む欠点を克服するような、キャッシュとPCIバスをインタフェースさせる方法を提供することが求められている。
【0008】
【課題を解決するための手段】
発明の課題を解決するため、本発明は、システム・メモリと要求元装置の間に配置されるキャッシュ・メモリを有するコンピュータ・システムにおいて該キャッシュ・メモリの内部のデータを管理する方法を提供する。該方法は、システム・メモリからデータを取り出す要求を受け取るステップ、上記要求に関連する事前取り出しヒント・セットを評価するステップ、および、上記事前取り出しヒントに基づいて上記キャッシュ・メモリ内部におけるデータの取り出しおよび管理を制御するステップを含む。
【0009】
本発明は、PCIバスを経由してシステムと通信する装置へI/Oキャッシュを介してシステム・メモリからデータを取り出すシステムおよび方法を提供する。本発明は、広範囲には、一定の取り出しヒントを伝える新機軸の方法とみなすことができる。すなわち、ヒントは、システム・メモリから取り出されるべきデータに関する一定の品質を指定する。動作においては、I/Oキャッシュは、そこを通過するデータを効率的に管理するためそのようなヒントを使用することができる。1つの単純な例をあげれば、ヒントに基づいて、I/Oキャッシュに関するコントローラが、取り出されつつあるデータがATMデータであるということをヒントに基づいて認識(または仮定)するとすれば、コントローラは、(ATMデータの性質に基づいて)、正確に48バイトのデータ・ペイロードが要求元装置へ送信されるべきものであり、I/Oキャッシュは、また、正確にその量(典型的には1または2キャッシュ行)を事前取り出しすることができることを認識することができる。
【0010】
本発明の1つの側面に従えば、そのようなシステムは、システム・メモリとPCIバスの間に配置される入出力キャッシュ・メモリを含み、キャッシュ・メモリは、その内部に複数のデータ行の形態の内部メモリ空間を持つ。該システムは、取り出し基準を定義するように構成される各PCIマスタに関する複数のレジスタを含む。更に、該システムは、上記複数レジスタの中の活動的レジスタを選択するように構成されるレジスタ・セレクタを含む。装置に関する取り出し基準は活動的レジスタによって指定される。
【0011】
具体的には、本発明の好ましい実施形態に従って構築されるシステムにおいて、レジスタは、データ取り出しに関する特定のヒントを指定する内容を含む。例えば、そのようなヒントの1つは、事前取り出しの深さであり、この場合、レジスタが事前取り出し深さの種種の異なる値を含む。例えば、第1のレジスタが2キャッシュ行という事前取り出し深さを指定し、第2のレジスタが3キャッシュ行という事前取り出し深さを指定する。しかしながら、理解されるべき点であるが、これらレジスタの内容は異なるソースによって動的に変えられることが可能である。例えば、システム・ファームウェアがレジスタの内容をセットすることが可能である。代替的には、レジスタ内容は要求元装置上のドライバの制御の下で設定または変更される。次に、レジスタ・セレクタが、活動的レジスタとしてどのレジスタを選択すべきかを決定する。活動的レジスタは、当該キャッシュのデータを制御するためにI/Oキャッシュに関するコントローラによって使用されるレジスタである。このセレクタは、データに対する要求を識別するためPCIバスを監視するように構成され、要求の形態、要求元装置の識別情報またはその他の因子に基づいて、セレクタが活動的レジスタを選択する。
【0012】
【発明の実施の形態】
本発明は、添付図面を参照して以下に記述されるが、記述される実施形態に本発明を制約する意図はなく、むしろ、本発明の理念に含まれる代替的形態および修正をすべて包含するように意図されている。
【0013】
図1は、本発明の環境の1例である環境を定義するコンピュータ・システム100を示す。コンピュータ・システム100は、コンピュータ102およびモニタ104を持つハイエンド・デスクトップ・コンピュータ・システムのような、高性能コンピュータ・システムのいかなるタイプのものでもよい。コンピュータ102の形態には種種のものがあるが、典型的なコンピュータ102はマザーボード110を含む。周知のように、マザーボード110は典型的には種々のオンボードICコンポーネント120を含む。これらオンボードICコンポーネント120には、CPU122(例えばマイクロプロセッサ)、メモリ128、および、コンピュータ・アーキテクチャに含まれるその他周知のIC装置が含まれる。
【0014】
マザーボード上またはプラグイン・カード上に配置される別のIC装置はキャッシュ・メモリ126である。キャッシュ・メモリ126は、PCIバス130と通信するように配置される。本発明の概念および教示と整合する形態で、その他のICコンポーネントをコンピュータ・システム100の範囲内に含めることができる。実際、その他種々のサポート回路および付加的機能回路が大部分の高性能コンピュータ・システムに典型的に含まれる。そのようなその他の回路コンポーネントの付加および実施形態は当業者に十分理解されるものであるので、本明細書において説明を行う必要はない。図1のコンピュータ・システム10は、本発明の概念および教示を例示するため選択されたいくつかのコンポーネントだけを示している。
【0015】
更に、周知のように、種々のオンボード回路コンポーネントに加えて、コンピュータ・システムは、通常、拡張機能を含む。このため、大部分のコンピュータ・システム100は、ICカードをコンピュータ・システム100のマザーボード110にプラグインすることを可能にする複数の拡張スロット142、144、146を含む。拡張カード140は、典型的には、コンピュータ・システムのすべての用途にとって必要とされるというわけではなく、むしろ特定のユーザ・グループの特定用途に求められる専用の機能性を提供する。例えば、モデム・カード(図示されていない)は、コンピュータ・システム100が音声、データおよびその他の情報を通信リンクを経由して遠隔のコンピュータ・システムまたはユーザと通信することを可能にする。CPU122、メモリ128およびとキャッシュ126のような品目は、図ではマザーボード110上に配置されるように示されているが、拡張カード上に配置することもできる点は理解されることであろう。また、図1に示されている特定の実施形態は、例示の目的のためにのみ示されていて、本発明をそれに制約するものとみなされるべきでない点も理解されることであろう。
【0016】
種々の拡張カードが本発明の目的のためコンピュータ・システム100と関連して利用される可能性はあるが、それらは単なる例示に過ぎない。更に、図1には、システム・バス150およびPCIバス130が示されている。一般的に言えば、システム・バス150は、高速のバスであり、コンピュータ・システム100の範囲内に含まれるメモリ128、CPU122、キャッシュ126およびその他の装置(図示されていない)を相互接続する。拡張カード140はPCIバス130を経由してコンピュータ・システム100の他の部分と通信する。詳細は後述されるが、本発明は、拡張カード140を介する通信のためシステム・メモリ128からPCIバス130へデータを取り出す場合のコンピュータ・システム100の全般的性能、動作および効率を強化するシステムおよび方法を対象とする。
【0017】
しかしながら、本発明の詳細を記述する前に、キャッシュ・メモリ装置に関するいくつかの基本的な情報をまず記述する。この情報は、本発明の教示に従って構築されるシステムを完全に記述することを目的として提示されるに過ぎないが、以下に記述されるキャッシュ・メモリ装置の概念および動作は当業者によって理解されることであろう。
【0018】
キャッシュの基本
前述のように、キャッシュ・メモリは、システム効率を改善するためコンピュータ・システムにおいてマイクロプロセッサとメイン・メモリの間に配置される高速のメモリである。キャッシュ・メモリ(またはキャッシュ)は、プログラムが実行している間中央処理装置(CPU)によって活発に使用されるメイン・メモリ・データの一部分のコピーを記憶する。キャッシュのアクセス・タイムがメイン・メモリのそれより速いので、全般的アクセス・タイムを減少することができる。
【0019】
多くのマイクロプロセッサに基づくシステム実施形態は、"直接マップ型"キャッシュ・メモリを実施する。一般に、"直接マップ型"キャッシュ・メモリは、高速のデータRAMおよび並列高速タグRAMを含む。データ・キャッシュにおける各行のRAMアドレスは、各行のエントリに対応するメイン・メモリ行アドレスの下位部分と同じものであり、メイン・メモリ・アドレスの高位部分はタグRAMに記憶される。このように、メイン・メモリが各々1または複数バイトの2n"行"の2mブロックであるとみなされるとすれば、キャッシュ・データRAMの中のi番目の行は、メイン・メモリの2mブロックのうちの1つのi番目の行のコピーである。その行が対応するメイン・メモリ・ブロックの識別情報はタグRAMのi番目の位置に記憶されている。
【0020】
CPUがメモリからデータを要求する時、行アドレスの下位部分はキャッシュ・データおよびキャッシュ・タグRAM両方に対するアドレスとして供給される。選択されたキャッシュ・エントリに関するタグは、CPUのアドレスの上位部分と比較され、一致すれば、"キャッシュ・ヒット"が標示され、キャッシュ・データRAMからのデータがシステムのデータ・バス上に送られることができる状態となる。タグがCPUのアドレスの上位部分と一致しない場合、またはデータが無効であるとすれば、"キャッシュ・ミス"が標示され、データはメイン・メモリから取り出される。メイン・メモリから取り出されたデータは潜在的な将来の使用のためキャッシュに置かれ、前のエントリを上書きする。典型的には、キャッシュ・ミスの場合、たとえ1バイトだけが要求されたとしても、1行全体がメイン・メモリから読み取られ、キャッシュに記憶される。CPUからのデータ書込みの際、キャッシュRAMおよびメイン・メモリのいずれかまたは両方が更新されるが、その場合、他方に書込みが発生したことを一方に通知するためフラグが必要である点は理解されることであろう。
【0021】
従って、直接マップ型キャッシュでは、2次メモリの各"行"は、キャッシュの1つの行にだけマップされる。"完全連想"キャッシュにおいては、2次メモリの特定の1行は、キャッシュの行のいずれにでもマップされる。この場合、キャッシュ可能なアクセスにおいて、キャッシュ・ヒットまたはキャッシュ・ミスが起きたか否かを判断するためすべてのタグが比較されなければならない。また、直接マップ型キャッシュと完全連想キャッシュの間の妥協を表す"マップ先k行連想"キャッシュ・アーキテクチャが存在する。マップ先k行連想キャッシュ・アーキテクチャにおいては、2次メモリの各行はキャッシュのk行のいずれかにマップされる。この場合、キャッシュ・ヒットまたはキャッシュ・ミスが起きたか否かを判断するため、キャッシュ可能2次メモリ・アクセスの間k個のタグがアドレスと比較される。キャッシュは、また、"セクター・バッファ""か"サブ・ブロック"タイプである。この場合、各々それ自体の有効ビットを持ついくつかのキャッシュ・データ行が単一キャッシュ・タグRAMに対応する。
【0022】
CPUがキャッシュの内容を修正する命令を実行する時、メイン・メモリにおいてもその修正が行われなければならず、さもなければメイン・メモリのデータは"陳腐化"する。メイン・メモリとキャッシュの内容の整合性を保つ2つの従来技術の手法がある。すなわち、(1)書き込み続行(write-through)方法、および、(2)書き戻し(write-back)またはコピー戻し(copy-back)方法である。書き込み続行方法においては、キャッシュ書込みヒットがあれば、データのキャッシュへの書き込みの直後またはその間データがメイン・メモリに書き込まれる。これは、メイン・メモリの内容が常に有効でキャッシュの内容と一致していることを可能にする。書き戻し方法においては、キャッシュ書込みヒットがあれば、システムはキャッシュにデータを書き込み、データ・ワードがキャッシュに書き込まれたがメイン・メモリには書き込まれていないことを標示する"ダーティ・ビット(dirty bit)をセットする。キャッシュ・コントローラは、キャッシュにデータのいかなる行を上書きする前にダーティ・ビットを検査して、セットされていれば、新しいデータをそのキャッシュ行に記憶する前にそのデータ行をメイン・メモリへ書き出す。
【0023】
コンピュータ・システムは、所与のアドレス空間に関して1レベル以上のキャッシュ・メモリを持つことができる。例えば、2レベル・キャッシュ・システムにおいては、"レベル1"(L1)キャッシュは、ホスト・プロセッサに論理的に隣接している。"レベル2"(L2)キャッシュは、論理的にレベル1の後にあり、(3次メモリと呼ぶことができる)DRAMメモリが論理的にL2キャッシュの背後に位置する。ホスト・プロセッサがメモリ・アドレス空間におけるアドレスへのアクセスを実行する時、可能であればL1キャッシュが応答する。L1キャッシュが(例えばL1キャッシュ・ミスのため)応答することができないとすれば、可能であればL2キャッシュが応答する。L2キャッシュが応答することができないとすれば、DRAM自体に対してアクセスが行われる。ホスト・プロセッサは、システムにどれだけのキャッシュ・レベルが存在するか、あるいはキャッシュ機能が存在することさえ知っている必要はない。同じように、L1キャッシュは、DRAMに先行してL2キャッッシュが存在するかどうかについて知っている必要はない。このように、ホスト処理装置にとって、2つのキャッシュとDRAMの組み合せは単一メイン・メモリ構造としてみなされる。同じように、L1キャッシュにとって、L2キャッシュとDRAMの組み合せは単一メイン・メモリ構造としてみなされる。実際、レベル3キャッシュ機能をL2キャッシュとDRAMの間に含むことができ、L2キャッシュはL3キャッシュとDRAMの組み合せを単一メイン・メモリ構造とみなすであろう。
【0024】
キャッシュ行が状態Eにあれば(Eは"exclusive"の頭文字で、排他的の意味を表す)、その行は"修正"されない(すなわちメモリ・サブシステムのそれ以降のレベルと同じデータを含む)。共有キャッシュ・システムにおいては、状態Eは、そのキャッシュ行がキャッシュのうちのただ1つだけにおいて使用可能であることを標示する。ホスト・プロセッサ装置は、メモリ・サブシステムのより高いレベルに、バス・サイクルを生成することなく、E状態の行にアクセス(読み取りまたは書き込み)することができるが、ホスト・プロセッサがE状態行に書込みアクセスをする時、その行は"修正された"状態(状態M)となる(Mは"modified"の頭文字で、"修正された"を意味する)。
【0025】
状態Sの行が(Sは"shared"の頭文字で"共有されている"ことを表す)、1つ以上のキャッシュに存在することができる。ホスト・プロセッサによるS状態行への読み取りアクセスはバス活動を引き起こさないが、S状態行への書き込みアクセスは、共有キャッシュがそれ自身の対応する行を潜在的に無効にすることを可能にするため、メモリ・サブシステムのそれより高いレベルへの"書き込み続行"サイクルを引き起こす。書き込みは、また、データ・キャッシュ行の中のデータを更新する。
【0026】
状態Iの行は無効である(Iは"invalid"の頭文字で無効を意味する)。状態Iの行はキャッシュには存在しない。ホスト・プロセッサ装置によるI状態行への読み取りアクセスは"キャッシュ・ミス"を生成し、その結果キャッシュは行充当を実行する(メモリ・サブシステムのより高いレベルから行全体を取り出す)。ホスト・プロセッサ装置によるI状態行への書き込みアクセスによって、キャッシュは、メモリ・サブシステムのより高いレベルへの書き込み続行サイクルを実行する。
【0027】
コンピュータ・システム・キャッシュ・メモリは、典型的には、CPUに関するメイン・メモリ・データをキャッシュ記憶する。キャッシュが書き戻しプロトコルを使用するとすれば、キャッシュ・メモリがメイン・メモリの中の対応する行よりも一層多くの現在時データを含む場合が多い。これは、メイン・メモリ・バージョンがデータの最新のバージョンであるか否かはわからないので、メイン・メモリの行へのアクセスを望んでいる他のバス・マスター(およびマルチプロセッサ・システムにおける他のCPU)にとって問題を起こす。従って、書き戻しキャッシュ・コントローラが、典型的には、(詮索サイクルとしても知られている)問合せサイクルをサポートする。問い合わせサイクルにおいて、バス・マスターは、キャッシュ・メモリがデータの一層最新のコピーを持っているか否かキャッシュ・メモリに問い合わせする。
【0028】
図2は、キャッシュ・メモリ126の特定の基本コンポーネントを示すブロック図である。この基本コンポーネントには、複数のタグ232、対応する複数のデータ行234およびディレクトリ/インデックス236が含まれる。周知の通り、キャッシュ・タグ232は、典型的には、目標データのメモリ位置のブロック(複数行)を定義するアドレス・ビットの一部(最上位ビット)を含む。最下位ビットは、対応するデータ行234における目標データ値に対する(ブロックの範囲内の)特定の位置を識別する。従来技術の好ましい実施形態に従えば、キャッシュ・メモリ126は64バイトのデータ行234を利用する。従って、アドレス・ビットの最下位6ビットが、所与のデータ行234の範囲内における目標データ値の特定の位置を指定する。
【0029】
図2には、また、ディレクトリ/インデックス236が示されている。周知の通り、ディレクトリ236は種々のタグ232のログまたはデータベースを維持する。開始または初期化の時点では、キャッシュ・メモリ126の範囲内にデータはなく、従って、タグはディレクトリ236に記憶されていない。従って、装置がデータをシステム・メモリ128から読み取ることを要求すると、システム・メモリ128からキャッシュ・メモリ126のデータ行234へ行全体が読み込まれる。アドレス・バスの最上位ビットが対応するタグ232に含められ、このタグがディレクトリ236に保存される。指定されたメモリ位置からの次のデータ要求があると、キャッシュ・メモリ126は、ディレクトリ236を調べて、そのデータ値がキャッシュの範囲内に現在あるか否か判断する。そのデータ値がキャッシュ・メモリ126の範囲内にあれば、それがアクセスされ、高速で読み出される。一方、そのデータ値がキャッシュ・メモリ126の範囲内になければ、データ値はシステム・メモリから取り出され、キャッシュ・メモリ126の利用可能データ行234に読み込まれる。前述と同様に、アドレス・バスの最上位ビットが対応するタグに含められ、ディレクトリ236に記録される。
【0030】
上記プロセスは、システム・メモリ128からの後続のデータ要求に関して繰り返される。しかしながら、どこかの時点で、キャッシュ・メモリ126のすべてのデータ行234が占有される。この時点で、新しいデータをキャッシュ126に読み込むことができる空間を準備するため、キャッシュ・メモリ126は、少なくとも1つのデータ行234を破棄しなければならない。前述のように、キャッシュ126のどのデータ行234を破棄すべきかを決定する多種多様なアルゴリズムおよび方法が存在する。好ましくは、近い将来再度使用される可能性が最も少ないデータ行234を破棄するアルゴリズムが選択される。データがキャッシュ126から破棄されると、それに応じて対応するタグ232をディレクトリ空間から削除するようにディレクトリ236が修正される。
【0031】
本発明の動作
キャッシュ・メモリ装置に関する特定の基本的事項と共に、本発明のシステムの環境を以上記述したが、以下、本発明の特徴に焦点をあてて記述を進める。前述したが、本発明は、拡張カード140を介する通信のためシステム・メモリ128からPCIバス130へデータを取り出す場合のコンピュータ・システム100の全般的性能、動作および効率を強化するシステムおよび方法を対象とする。広義には、本発明は、特定のヒントを伝える新機軸の方法とみなすことができる。ヒントは、システム・メモリから取り出されるべきデータに関する特定の品質を指定する。動作の観点から、I/Oキャッシュはそれを通過するデータを一層効果的に管理するためそのようなヒントを使用する。1つの単純な例をあげれば、I/Oキャッシュに関するコントローラが、取り出されつつあるデータがATMデータであるということをヒントに基づいて認識(または仮定)するとすれば、コントローラは、(ATMデータの性質に基づいて)、正確に48バイトのデータ・ペイロードが要求元装置へ送信されるべきものであり、I/Oキャッシュは、また、正確にその量(典型的には1または2キャッシュ行)を事前取り出しすることができることを認識する。
【0032】
本発明の1つの側面に従えば、そのようなシステムは、システム・メモリとPCIバスの間に配置される入出力キャッシュ・メモリを含み、キャッシュ・メモリは、その内部に複数のデータ行の形態の内部メモリ空間を持つ。該システムは、取り出し基準を定義するように構成される各PCIマスタに関する複数のレジスタを含む。更に、該システムは、上記複数レジスタの中の活動的レジスタを選択するように構成されるレジスタ・セレクタを含む。装置に関する取り出し基準は活動的レジスタによって指定される。
【0033】
更に具体的に述べれば、本発明の好ましい実施形態に従って構築されるシステムにおいて、レジスタは、データ取り出しに関する特定のヒントを指定する内容を含む。例えば、そのようなヒントの1つは、事前取り出しの深さであり、この場合、レジスタが事前取り出し深さの種種の異なる値を含む。例えば、第1のレジスタが2キャッシュ行という事前取り出し深さを指定し、第2のレジスタが3キャッシュ行という事前取り出し深さを指定する。しかしながら、理解されるべきことではあるが、これらレジスタの内容は異なるソースによって動的に変えられることが可能である。例えば、システム・ファームウェアがレジスタの内容をセットするかもしれない。代替的には、レジスタ内容は要求元装置上のドライバの制御の下で設定または変更される。次に、レジスタ・セレクタが、活動的レジスタとしてどのレジスタを選択すべきかを決定する。活動的レジスタは、当該キャッシュのデータを制御するためにI/Oキャッシュに関するコントローラによって使用されるレジスタである。このセレクタは、データに対する要求を識別するためPCIバスを監視するように構成され、要求の形態、要求元装置の識別情報またはその他の因子に基づいて、セレクタが活動的レジスタを選択する。
【0034】
更に具体的な例として、PCIバス・マスターの各々ごとに専用の2つのレジスタを持つシステムを考察する。レジスタの各々は、要求されるデータ転送のタイプに基づいて、すなわち、データ要求がMRコマンド、MRLコマンドまたはMRMコマンドあるか否かに基づいて、異なる事前取り出し深さを指定するように構成される。例えば、(各レジスタ・セットにおける)第1のレジスタは、MRコマンドに対して1キャッシュ行だけの事前取り出し深さを指定し、MRLコマンドに対して2キャッシュ行の事前取り出し深さを指定し、MRMコマンドに対して3キャッシュ行の事前取り出し深さを指定するように構成される。(各レジスタ・セットにおける)第2のレジスタは、MRコマンドに対して2キャッシュ行だけの事前取り出し深さを指定し、MRLコマンドに対して3キャッシュ行の事前取り出し深さを指定し、MRMコマンドに対して4キャッシュ行の事前取り出し深さを指定するように構成される。
【0035】
上記の仮定を継続すれば、レジスタ・セレクタは、例えば取り出されるデータが制御型データであると見なされるならば各レジスタ・セットの第1のレジスタを選択し、例えば取り出されるデータがペイロード・データであると見なされるならば各レジスタ・セットの第2のレジスタを選択するように構成される。1つの実施形態に従えば、要求側装置は、アドレス・ビットの使用を通してレジスタ・セレクタの動作を制御することができる。具体的には、さもなければ特定のデータを識別する際に使用されることのないアドレス・ビットを使用して、所与のレジスタ・セットの活動的レジスタが指定される。
【0036】
しかしながら、理解されるべき点であるが、本発明の概念は、広義であり、本明細書の特定の使用または実施形態に限定されるものではない。このような意味から、本発明は、取り出しヒントをPCIバスを経由して要求元装置から伝える方法として広義に特徴づけることができる。
【0037】
本発明の1つの応用に従えば、I/Oキャッシュ・メモリの範囲内でデータを管理する方法が提供される。より具体的に述べれば、システム・メモリとI/Oバスの間に配置されるキャッシュ・メモリを持つシステムにおいてキャッシュメモリの範囲内でデータを管理する方法が提供される。該方法は、システム・メモリからのデータ要求を受け取り、その要求に関連する事前取り出しヒント・セットを評価する。所与の取り出しに関連する事前取り出しヒントに基づいて、該方法は、キャッシュ・メモリの範囲内のデータの取り出しおよび管理を制御する。
【0038】
そのような実施形態に従えば、該方法はI/Oバス上のトランザクションを監視するように動作する。監視されたトランザクションに基づいて、該方法は、バス110と通信している所与の装置に関する特定の側面を決定する。決定された装置の側面に基づいて、該方法は、全般的システム効率を最適化するためキャッシュ・メモリによって使用される特定のヒントを生成する。好ましくは、これらのヒントはレジスタ・セットに記憶され、取り出し要求に応じてキャッシュ・メモリがこのレジスタにアクセスする。これらヒントに基づいて、キャッシュ・メモリは、一定量のデータの事前取り出し、データの事前取り出しブロック・サイズの制限、データの積極的消去、または、キャッシュ・メモリの範囲内におけるデータの一層効率的管理を可能にするその他のタスクを実行する。
【0039】
本発明の1つの側面に従えば、事前取り出しヒントは、キャッシュ・メモリに事前取り出しすべきキャッシュ行数の識別情報を含む。例えば、要求元装置がATM装置であることを事前取り出しヒントが明らかにするとすれば、該方法は48バイトのデータを事前取り出しするように動作する。これは、第1のキャッシュ行の範囲内の最初のデータ・バイトの配列に従って、1または2データ行の事前取り出しを伴う。本発明の別の1つの側面に従えば、事前取り出しヒントは、システム・メモリ境界限界の識別情報を含む。この限界を超えたデータはキャッシュ・メモリへ事前取り出しされない。本発明の更に別の1つの側面に従えば、キャッシュ・メモリから取り出されたデータを消去するための条件の識別を含む。
【0040】
本発明の好ましい実施形態に従えば、MR、MRLおよびMRMコマンドを含む種々のPCIコマンドの監視に基づいて、事前取り出しヒントが生成される(MRはMemory Readの略称でメモリ読み取りを意味し、MRLはMemory Read Lineの略称でメモリ行読み取りを意味し、MRMはMemory Read Multipleの略称でメモリ複数行読み取りを意味する)。
【0041】
本発明の更に別の1つの実施形態に従えば、本発明は、I/Oキャッシュ・メモリの範囲内でデータを管理するシステムと見なすことができる。キャッシュは複数のデータ行を含むメモリ空間を含む。該システムは、キャッシュ・メモリとI/Oバス(好ましくはPCIバス)の間での通信を評価し、評価された通信に基づいて少なくとも1つの事前取り出しヒント・セットを生成するように構成される装置を含む。最後に、該システムは、メモリ空間におけるデータを管理するように構成されるメモリ管理機構を含む。メモリ管理機構は、更に、事前取り出しヒントを評価してメモリ空間におけるデータの管理を制御するように構成される論理機構を含む。
【0042】
好ましくは、メモリ管理機構は、更に、取り出し要求を評価する第1の手段、取り出し要求に基づいて事前取り出しヒントを評価する第2の手段、および、事前取り出しヒントの値に基づいてあらかじめ定められたデータ・キャッシュ行数の事前取り出しを制御する第3の手段を含む。当業者に理解されることであろうが、上記第1、第2および第3の手段は、それぞれの手段の上記機能を実行するように構成される回路、または、回路とマイクロコードの組み合わせで形成される。該システムは、更に、事前取り出しヒントを記憶する照合テーブルを含む。
【0043】
図3は、本発明に従って構築されるシステムの特定のコンポーネントを示している。前述の通り、本現在のシステムは、広義には、1つの装置からホスト・システムへPCIバス130経由で"ヒント"の通信を実施するシステムを対象とする。"ヒント"は、種々の事柄であり、多くの目的のために使用されることができる。本発明の1つの実施形態に従えば、ヒントは、要求装置に関する特定の情報やそのような装置が使用するデータに関する特性を指定する。これらのヒントは、例えばI/Oキャッシュの範囲内のデータの管理に役立てるためシステムによって使用される(例えばヒントは事前取り出し深さを定義する)。
【0044】
本発明の好ましい実施形態に従えば、該システムは、"ヒント"を定義する情報を記憶する複数のレジスタ324を使用する。特に、好ましい実施形態はレジスタのグループ化を利用する。図3に示されているように、本発明の1つの実施形態は、(PCIバスを駆動する装置である)PCIマスタの各々ごとに複数のレジスタを使用する。この実施形態において、各PCIマスタ装置に対して2つのレジスタが専用に配置される。しかしながら、本発明の概念と教示と整合性を保ちながら、各PCIマスタに関連するレジスタを必要に応じて追加することは可能である。
【0045】
本発明に従えば、各レジスタは1つのヒントまたはヒント・セットを記憶することができる。本発明の好ましい実施形態に従って、詳細は後述されるが、各レジスタはヒント・セットを記憶する。従って、この場合、2つのヒント・セットが各PCIマスタ装置に関連して記憶される。例えば、第1のPCIマスタに関連して2つのレジスタ325および326が例示されている。PCIバス130を経由するデータ転送に関して一層広く一般化するため、データを制御データまたはペイロード・データとして一般的に分類することができる。制御データは典型的には比較的短いデータ・ブロックを含むが、一方、ペイロード・データは一般に一層大きいデータ・ブロックを含む。従って、第1のレジスタ325は制御型データの通信に関するヒントを記憶するため使用され、第2のレジスタ326はペイロード型データの通信に関するヒントを記憶するため使用される。動作の間、該システムは、(所与のPCIマスタに関する転送のため)"活動的"レジスタとしてこれらのレジスタのうちの1つを選択する。
【0046】
ヒント生成回路322は、種々のレジスタ324に記憶される値を生成するため何らかのメカニズムが提供される概念を表現している。これらの値は実際に多数の異なる方法で導出されることができる。最適の場合として、所与の回路カード/PCIマスタはこれらの値を具体的に生成する。当然のことながら、この手法は、回路カードが本発明のシステムのため特に設計されているか、あるいはそのようなシステムのためのソフトウェア・ドライバを備えていると仮定される。しかしながら、そのような回路カードが多くの異なるシステムに関して動作するように一般的に設計されていると認識して、該システムは、これらのレジスタ値を特に生成するための回路またはその他のメカニズムを含むことができる。この場合、システムは初期化の際デフォルト値を記憶することができる。しかし、ヒント生成回路322は、個々のPCIマスタの間のPCIバス・トランザクションを監視するように構成されることもできる。所与の装置に対するバス・トラフィックの性質を時間の経過とともに観察することによって、ヒント生成回路322は種々のレジスタ325の範囲に記憶される値を更新するように構成される。このようにして、一般的なPCIカードでさえその性能は、本発明に従って構築されるシステムによって大幅に改善される。
【0047】
加えて、所与のレジスタ・セットのうちの"活動的"レジスタを選択するためレジスタ・セレクタ回路328が提供される。本発明の好ましい実施形態に従えば、さもなければ使用されないアドレス・ビットを使用することによって活動的レジスタが指定される。図3は、更に、PCIバス上のトランザクションを監視するように構成されるPCIインタフェース329を示している。集合的にPCIインタフェース329およびレジスタ・セレクタ328は、所与のレジスタ・セットから活動的レジスタを指定する。前述の通り、活動的レジスタは、(PCIマスタが本発明のシステムに関する特定の知識を持つ特別のカードであるとすれば)、PCIマスタによって指定されることができるし、あるいは、本発明のシステムによって指定されることもできる。
【0048】
本発明の概念の例示に役立つように、以下の記述は、I/Oキャッシュにおけるデータ管理を実施するための本発明の使用を説明する。この環境においては、システム・メモリ128に対して読み書きされるべきデータはキャッシュ・メモリ装置126によって読み取られる。このように、PCIバス130に沿って配置される装置へシステム・メモリ128からデータを読み取る時、データは、先ず、システム・メモリ128からキャッシュ・メモリ装置126のメモリ空間304に読み込まれなければならない(図4参照)。この実施形態のキャッシュ・メモリ装置126が、キャッシュ・メモリ管理においてよく知られている多くのデータ管理方法または技法を利用することができるが、いくつかの新しい機能も同様に利用される。本発明の実施形態の1つの側面に従えば、該システムは、PCIバス130とキャッシュ・メモリ126の間のバス・トラフィックを監視して、PCIバス130に沿って配置される装置に対する特定の洞察を取得する。具体的に述べれば、該システムは、PCIバス130と通信中のユニークな装置を指定する特定の装置位置との間のバス・トラフィックを監視して追跡する。例えば、(図1の)拡張カード140は、特別なアドレス110またはアドレス範囲を持つように定義されることができる。このI/Oアドレスまたはアドレス範囲との間のいかなる読み取りまたは書き取りもシステムによって監視されることができる。このカードとの間のデータ・トランザクションの特徴に基づいて、システムは、カードの性質に関する特定の決定を行い、それに応じてキャッシュ・メモリの範囲内でデータを管理する方法を変更する。好ましくは、データは全般的システム効率を最適化するように管理される。第1および第2という2つの拡張カードがある場合、システム・メモリ128から第1の拡張カードへのデータ取り出し要求は、2つのそれぞれのカードに関して本発明によって収集される情報に基づいて、メモリから第2の拡張カードへのデータ取り出し要求に関するものとは異なる形態で取り扱われる点は理解されることであろう。
【0049】
例として、拡張カードの1つが非同期転送モード(すなわちATM)通信装置であると仮定する。そのカードとの間のデータ・トランザクションを監視することによってカードが実際にATMカードであるとシステムが判断すれば、本発明はそのカードとの間のデータ・トラフィックに関して特定の仮定を行うことができる。具体的に述べれば、周知の通り、単純なATM装置においては、ATMデータは、5つのオクテット・ヘッダ部分と48バイトのデータ・ペイロードからなるパケットで伝送される。従って、ATM装置がシステム・メモリ128からのデータを要求する時、システムは、最終的には装置によってメモリから連続する48バイトが要求されると仮定することができる。従って、システムは、(データの最初のバイトに対する要求を受け取り次第)直ちにシステム・メモリ128からキャッシュ・メモリ126のメモリ空間304に48バイトのデータを取り出すように動作する。次に、このデータは、PCIバス130の装置がメモリ128からデータを要求する時典型的に派生する待ち時間(すなわち数サイクルの遅延)を発生させることなく、(PCIバス130からの要求があり次第)直ちにキャッシュ・メモリ126からPCIバス130へ書き込まれる。本実施形態に従って、キャッシュ・メモリ126は、データ・バイトではなくむしろキャッシュ行グループの形態でシステム・メモリ128からデータを取り出す。従って、システムは、データ要求を受け取り次第直ちにキャッシュ・データ行全体を取り出す。キャッシュ行の範囲内のデータの最初のバイトの位置およびキャッシュ・メモリ126のキャッシュ行のサイズに基づいて、48バイト・データを完全に事前取り出しするため、システムの装置は、少なくとも1データ・キャッシュ行を事前に取り出し、更に必要に応じて潜在的に2または3データ・キャッシュ行を事前に取り出す。
【0050】
しかしながら、本発明の概念と整合性を保ちながら、上述のATMに関連する場合と同様の方法で異なるタイプの拡張カードに関する種々の特徴を収集および使用して、キャッシュ・メモリ126の動作の効率を最適化または少なくとも改善することができる点は理解されることであろう。
【0051】
図4に示されているように、キャッシュ・メモリ装置126は、メモリ空間304、メモリ管理機構302およびディレクトリ/インデックス236を内包する。メモリ空間304は複数のキャッシュ行に区分される。1つの実施形態に従えば、メモリ空間304は、各行が64バイト・データを含む16キャッシュ行を含む。しかしながら、本発明の概念と整合性を保ちながら、異なる行サイズを利用することができる。メモリ管理記憶は、メモリ空間304の範囲内のデータ管理と共にキャッシュ・メモリ126の動作の制御を行う種々の機能を実行する回路から構成される。そのようなタスクは当業者には周知のもので、従って、ここで記述する必要はない。
【0052】
実際にここで記述が必要とされるものは、本発明を活用するシステムによってなされる特定の基本的進歩を例示する部分だけである。このような観点から、メモリ管理機構302の回路は、離散的ハードウェアまたはハードウェア/マイクロコード部分310から成る多数の機能ユニットを含む。1つ機能ユニットは、取り出し命令314を評価するように構成される。PCIバス130に沿って配置される装置から受け取られる命令がメモリ管理機構302によって評価され、具体的にどのようなアクションが要求されているか決定される。
【0053】
別の機能ユニットは、ブロック314によって評価された取り出し命令に関連する事前取り出しヒントのセット316を評価するように構成される。この機能は更に詳細に後述される。本発明に従って構築されるシステムによって提供される更に別の機能は、ブロック314によって識別される取り出しコマンドに部分的に基づき、また、ブロック316によって識別される事前取り出しヒントに部分的に基づいて、データ・キャッシュ行318の特定数"X"の事前取り出しを実行することを要求する機能である。前述のように、取り出し要求が単に1バイト・データに関する要求であっても事前取り出しヒントが要求元装置をATMカードであると識別すれば、キャッシュ行の範囲内のデータの最初のバイトの位置およびキャッシュ・メモリ126のキャッシュ行のサイズに基づいて、ブロック318は、少なくとも1データ・キャッシュ行を事前に取り出し、更に必要に応じて潜在的に2または3データ・キャッシュ行を事前に取り出すように動作するように構成される。(64バイトのキャッシュ行を持つ)好ましい実施形態のキャッシュ・メモリ装置126においては、ATMカードからのデータ取り出し要求は、1または2キャッシュ行の事前取り出しを派生する。一層具体的に述べれば、要求されるデータの最初のバイトのアドレスがキャッシュ行の最後の47バイト以内にあれば、2キャッシュ行全体がメモリ空間304に事前取り出しされる。
【0054】
本発明に従って構築されるシステムの別の1つの機能ユニットは、あらかじめ定められた数"X"のデータ・キャッシュ行320を消去するように構成される機能ユニットである。前述の例を継続すれば、典型的には、ATM装置(またはそのような入出力装置のいずれでも)が、システム・メモリ128からデータを取り出す時、近い将来において再度同じデータ要求をおこなわないであろう。従って、データがメモリ空間304からPCIバス130へ書きかまれると、メモリ管理機構302は、そのデータが近い将来再びアクセスされないと仮定して、メモリ空間304からそれを消去することができる。ATMからのデータ要求に応答して、本発明が2データ・キャッシュ行を事前取り出しすべきであったとすれば、48バイト・データの最後のバイトがメモリ空間304からPCIバス130へ書き込まれると、本発明は、直ちにメモリ空間304からそれら2データ行を消去する。キャッシュ126の比較的小さいメモリ空間304を効率的に管理することによって、全般的システム性能および効率が改善される。
【0055】
本発明に従って、PCIバス130とキャッシュ・メモリ126の間のバス・トラフィックおよびデータ・トランザクションが、PCIバス130上の装置の性質を識別および判断するため監視される。この情報は、PCIバス130上の所与の装置と関連するヒント・セットを生成するように構成されるヒント生成回路322によって利用される。これらのヒントは、上述のような種々の機能ブロック310によって利用される種々の事前取り出しヒントを保存する照合テーブル324に保存される。好ましい実施形態に従えば、ヒント生成回路322は、メモリ読み取りのようなバス・トランザクションを監視する。
【0056】
周知の通り、システム・メモリ128からPCIバス130上の装置へデータを読み取るために使用される命令は一般的に3つある。それらは、Memory Readの略称でメモリ読み取りを意味するMRコマンド、Memory Read Lineの略称でメモリ行読み取りを意味するMRLコマンド、およびMemory Read Multipleの略称でメモリ複数行読み取りを意味するMRMコマンドである。これらのコマンドは、標準PCIバスによって定義されているが、実施の度合いは厳密ではない。MRコマンドは、典型的には、メモリからデータの単一ワードを取り出す時に典型的に使用される。MRLコマンドは、メモリからデータの数ワードを取り出す時通典型的に使用されるが、通常キャッシュ行境界を越えた取り出しは行われない。MRMは、バイトまたはデータ・ブロックの比較的大きい数をメモリから取り出す時使用され、キャッシュ行境界を越えた取り出しが行われる。これらコマンドだけに基づいて、メモリ管理機構302は、MRLまたはMRMコマンドを受け取る時にのみデータを事前取り出しするように構成される。すなわち、メモリ管理機構302は、MRLコマンドに応答して1データ・キャッシュ行を必ず事前取り出しを行い、MRMコマンドに応答して2または3データ・キャッシュ行を必ず事前取り出しを行うように構成される。
【0057】
しかしながら、周知の通り、標準PCIはこれらコマンドをゆるく定義しているに過ぎず、これらを厳密に守る強制力はない。従って、別々の拡張カードの別々の製造業者が、異なる方法でそれぞれのカードに対するデバイス・ドライバをプログラムする可能性がある。例えば、ATM装置の例を更に続ければ、ATMカードに関するデバイス・ドライバは、MRコマンドだけを活用するプログラマによって開発されるかもしれない。従って、従来技術のシステムは、(たとえ48バイトが連続的に取り出されなければならないとしても)システム・メモリ128からデータを事前に取り出さないであろう。すなわち、(本発明の利点を持たない場合)メモリ管理機構302は、MRコマンドを受け取ると、システム・メモリ128から単に1バイト・データだけを取り出すべきものであり、追加の事前取り出しを実行する必要はないと仮定する。
【0058】
しかしながら、本発明の利点を適用すれば、特定の拡張カードが例えば常に48連続MRコマンドを実行して連続的な48データ・バイトを取り出すことをヒント生成回路322が決定することができる。この情報から、ヒント生成回路322は、PCIバス130に沿った所与のアドレスにおける装置または拡張カードがATMカードであると仮定することができる。ヒント生成回路322は、このカードに関連する事前取り出しに関する特定のヒントを照合テーブル324に記憶する。従って、MR要求がその装置から受け取られると、本発明のメモリ管理機構302は、直ちに48データ・バイト(1または2キャッシュ行のいずれ)を事前取り出しするように動作する。従って、PCIバス130に沿ったATM装置から実行される後続のメモリ読み込みはキャッシュ・メモリ126のメモリ空間304から直ちに取り出されることができるので、システム・メモリ128から取り出す場合の待ち時間遅延に苦しむことがない。
【0059】
当然のことではあるが、この仮定が間違っているとしても、メモリ128からメモリ空間へ事前取り出しされたデータが単にPCIバス130から要求されないだけであるので、特に大きな損失はなく、当然の成り行きとしてメモリ管理機構304によってメモリ空間304からそのデータが消去される。更に、理解されることであろうが、ヒント生成回路322は、多種多様な拡張カードに関して同様なヒントを生成するように構成することができる。すなわち、本発明は、ATMタイプの拡張カードに関連するヒントの生成のみに限定されているのではなく、本発明の広範囲な側面を例示するためにATMカードを取り上げたに過ぎない。
【0060】
本発明の実施形態を更に具体的に説明するため、図5を参照する。図5において、ヒント生成回路322は、キャッシュ・メモリ126とPCIバス130の間に配置されるインタフェース402において実施されている。拡張カード406および408(その他は図示されていない)がPCIバス130と通信するように配置されている。キャッシュ・メモリ装置126は、事前取り出しヒントを評価し、キャッシュ・メモリ管理を制御する回路410を含む。この回路410は、図3に図示されているメモリ管理機構302に部分的に対応する。同じように、インタフェース402は、図3と関連して記述されたヒント生成機能論理を提供するよう集合的に構成される種々の回路コンポーネントを含む。例えば、回路または論理は、事前取り出しヒント412を生成するように提供される。独立した回路が、特定の事前取り出しヒント414を定義するレジスタ・セットを含む。好ましい実施形態のシステムに従って、インタフェース402は、特定の事前取り出しヒントを定義するレジスタ・セットを含む。所与の取り出し要求に応答して、これらのレジスタ値414は、キャッシュ・メモリ126の範囲内の回路によって解釈され、キャッシュ・メモリ126の範囲内におけるデータの管理に使用される。
【0061】
図6の流れ図は、本現在の1つの実施形態に従って構築される方法の概略の機能的動作を示す。該方法は、PCIバス(特にPCIバスとシステム・メモリ128の間のトランザクション)を監視し(ステップ502)、ステップ502において監視されるバス・トランザクションに基づいて事前取り出しヒントを生成する(ステップ504)。種々の事前取り出しヒントが装置レジスタ・セットに保存される(ステップ506)。これら3つのステップ502、504および506は連続的に実行され、PCIバス130と通信する拡張スロットまたは装置における種々のカードに対して事前取り出しヒントが連続的に更新される。動作において、取り出し要求を受け取ると(ステップ508)、該方法は、取り出し要求に基づいて、好ましくはアドレス・ビットを使用して、活動的レジスタを選択する(ステップ510)。レジスタから取り出した事前取り出しヒントまたは情報に基づいて、種々の後続ステップがとられる。
【0062】
例えば、レジスタからの情報を使用して、事前取り出しブロック・サイズまたはブロック境界を制御する(ステップ512)。すなわち、この情報を使用して、システム・メモリ128からキャッシュ・メモリ304へ(特定の境界によって制限されるが)どれだけのデータを事前に取り出すか決定される。本発明の別の側面に従えば、レジスタに含まれる情報を使用して、キャッシュ消去条件が制御される(ステップ514)。前述のように、(ATMデータのような)多くのタイプのデータが、メモリ空間304からPCIバス130へ読み取られると、データが近い将来再び使用される可能性がないという仮定に基づいて、キャッシュ・メモリ空間304から直ちに消去される。同じように、レジスタから取り出したデータすなわち事前取り出しヒントを利用して、事前取り出しの深さが制御される(ステップ516)。このステップはステップ512に似ているが、事前取り出しの深さは、キャッシュ・メモリ126のメモリ空間304へ事前取り出しすべきデータの量を指定する。そこを越えてデータを事前取り出ししないアドレス境界を指定するためステップ512のブロック・サイズは使用される。
【0063】
メモリ管理機構302の動作に影響を及ぼす種々の異なる機能が使用されることができる点は理解されることであろう。しかしながら、本発明の好ましい実施形態に従って、特定の事前取り出しヒントが上記定義されているので、それらに関して以下に更に説明する。本発明の好ましい実施形態に従って、複数の"ヒント"レジスタが提供される。それらの各々は次の表1の通りである。
【0064】
【表1】
【0065】
具体的に述べれば、このレジスタは、32ビット・レジスタで、書き込みヒントを指定する3ビット・フィールド(ビット27−29)、読み取りヒントを指定する9ビット・フィールド(ビット18−26)、行読み取りヒントを指定する9ビット・フィールド(ビット9−17)、および、複数行読み取りヒントを指定する9ビット・フィールド(ビット0−8)を含む。この形式のレジスタは、図3のブロック324または図4のブロック414の一部を形成する。
【0066】
実際、本発明の好ましい実施形態に従って、各々が表1の形式をした複数の"ヒント"レジスタが提供される。所与のトランザクションに関して複数のヒント・レジスタのうちのどれを使用すべきかあるいはどれにアクセスすべきかを指定するためPCIアドレス・ビットが使用される。例えば、4つのヒント・レジスタ・セットがあると仮定すれば、所与のレジスタを指定するため未使用の2PCIアドレス・ビットを使用することが可能である。4つのレジスタはゼロ、1、2および3という番号がつけられているとすれば、00、01、10、11というアドレス・ビット値を使用して、それぞれのヒント・レジスタを指定することができる。次に、指定されたヒント・レジスタはメモリ管理機構302内部の回路によって解釈される。
【0067】
本発明の好ましい実施形態に従えば、メモリ書込み(Memory Write)コマンドまたはメモリ書き込み無効(Memory Write Invalidate)コマンドがPCIに対して使用される時、書き込みヒントが選択される。PCIメモリ読み取り(Memory Read)コマンドの場合読み取りヒントが選択される。PCIメモリ行読み取り(Memory Read Line)コマンドの場合、行読み取りヒントが選択される。PCIメモリ複数行読み取り(Memory Read Multiple)コマンドの場合、複数行読み取りヒントが選択される。メモリ管理機構302によって解釈される読み取りコマンドの各々に関するアクションは次の表2の通りである。
【0068】
【表2】
【0069】
具体的には、読み取りヒント、読み取り行ヒントおよび読み取り複数行ヒントの各々に関する9ビッ・フィールドは同じヒント記述を持つように定義されている。当然のことながら、本発明の概念と整合性を保ちながら、これらのフィールドを異なる機能または記述を持つように構成することは可能である。同様に多様な機能または記述を書き込みヒント・フィールドに用いることも可能である。しかしながら、本発明の好ましい実施形態に従えば、オプションはほとんど用意されていないので、書き込みヒント・フィールドは2、3ビットで定義される。具体的には、本実施形態では、ビット0だけが利用され、このビットの状態は、積極的消去が実行されるべきか否かを指定する。積極的な消去においては、メモリ管理機構は、書き込み更新が完了すると直ちにキャッシュ行を消去する。
【0070】
DMA読み取りに関する合理的なスループットを達成するため、事前取り出しが望ましい。事前取り出しのレベルは、インタフェース402によって供給される事前取り出しおよびブロック・サイズ・ヒント(表3参照)によって制御される。事前取り出しヒントは、当該バースト動作に関して事前取り出しすべきキャッシュ行数を指定する2ビット値である。本発明の好ましい実施形態は、0、1、2および3キャッシュ行という事前取り出し深さをサポートする。値ゼロは、事前取り出しを全く行わない、すなわち要求された行だけを取り出すことことを意味する。1、2および3という値は、要求された行に加えて、それぞれ、1、2または3の追加の連続行を取り出すことを意味する。DAMAバースト動作がキャッシュ行を消費するにつれて、追加のキャッシュ行が事前取り出しされる。
【0071】
ブロック・サイズ・ヒントは3ビット・フィールドである。ブロック・サイズは、読み取りバーストの長さに関するヒントとして使用される。次の表3は、ヒントの各値に関する意味を説明している。値0−3はキャッシュ行の数に基づく限度を指定する。残りの値はアドレスに基づく限度を指定する。DMAシーケンサおよびキャッシュは、ヒント値に従って、キャッシュ行カウントの使用とアドレス・ロールオーバー・テスト(address rollover tests)の間を切り替える。
【0072】
【表3】
【0073】
好ましくは、ブロック・サイズ・ヒントは事前取り出しヒントに優先する。DMAシーケンサは、ブロック・サイズによってセットされた制約に従うためキャッシュ・コントローラに対する実際の事前取り出し信号を増減する。更に、DMAシーケンサは、読み取りバーストがPCIバスに転送中のキャッシュ行を(事前取り出しヒント+1)行に維持し続けるので、事前取り出しヒントを調節する。これは、0または1という事前取り出しヒントを使用する遅いカードに関して実行され、それ以外の場合には、DMAシーケンサは、単に読み取りFIFOをいっぱいに維持しようとする。この結果、カード切断の時事前取り出しが無駄となり、プロセッサ・バス・バンド幅が不必要に浪費される。
【0074】
上述されたような方法で事前取り出しヒントを調節することは、非常に速いカードの場合性能へ悪影響を及ぼすことがある。そのようなケースでは、事前取り出しロック・ヒントをセットして、読み取りFIFOをいっぱいに維持しようとするDMAシーケンサの行動形態を変えることができる。事前取り出しロック・ヒントは、その目的がPCIバス130のパイプラインを可能な限りいっぱいにすることを試みるものであるので、3という事前取り出し深さを使用することが好ましい。
【0075】
以下は、事前取り出しヒントに関する若干のガイドラインである。
【0076】
*MRコマンドの場合、ヒントはほとんど常にゼロに設定される。他の値を使用する典型的な理由は、そうしなければならない時にMRLまたはMRMの使用に失敗するカードの性能を最適化することである。
【0077】
*MRLコマンドの場合、0および1というヒントが有意である(2または3という値は、MRMを使用すべき時にMRLを使用したカードに対して使用されることができる)。MRL使用の理由は次の2つの理由のうちの1つである。(1)カードが、例えば32または64バイトのようななんらかの制御情報を取り出し、次のアドレスにおいてキャッシュ行から追加データを取り出す意図を持たない。(2)カードが、データの大きいブロックのデータを取り出すが、インタフェースにおいて1データ・キャッシュ行を収納できるだけのバッファしか持っていないので、個々の読み取りごとに1キャッシュ行だけを取得するだけである。最初のケースではヒントはゼロでなければならない。後者の場合、装置が次の読み取りを試みる時次のキャッシュ行がすでにキャッシュにあるようにするため、ヒントは1でなければならない。しかしながら、このヒントはキャッシュにおける追加の行を使用する点に注意する必要がある。従って、装置が多くのストリームを同時に活動的にさせようとすれば、たとえ大きいブロックが読まれようとヒントをゼロにセットすることはより良い考えである。
【0078】
*MRMコマンドの場合、2または3という値が意味を持つ。正確な選択は、PCIに関するメモリ・システムの待ち時間および動作の頻度に依存する。事前取り出しロック・ヒントがこの場合もセットされる必要があるかもしれない。
【0079】
以上の記述は、本発明を記述した厳密な形態に制限するように意図されたものではない。上記の教示に照らして種々の修正またはバリエーションが可能である。そのような観点から、本発明の原理およびその実際的応用を最もよく例示し、それによって当業者がその特定用途に適するような修正を加えた種々の実施形態において本発明を活用することができるように、上記実施形態は選択されている。
【0080】
本発明には、例として次のような実施様態が含まれる。
(1)システム・メモリと要求元装置の間に配置されるキャッシュ・メモリを有するコンピュータ・システムにおいて、該キャッシュ・メモリの内部のデータを管理する方法であって、システム・メモリからデータを取り出す要求を受け取るステップと、上記要求に関連する事前取り出しヒント・セットを評価するステップと、上記事前取り出しヒントに基づいて上記キャッシュ・メモリ内部におけるデータの取り出しおよび管理を制御するステップと、を含むキャッシュ・データ管理方法。
(2)上記事前取り出しヒントがキャッシュ・メモリに事前に取り出すべきキャッシュ行数の識別情報を含む、上記(1)に記載の方法。
(3)上記事前取り出しヒントが、そこを越えてデータがキャッシュ・メモリに事前取り出しされることのないシステム・メモリ境界限界の識別情報を含む、上記(1)に記載の方法。
(4)上記事前取り出しヒントが、取り出されたデータをキャッシュ・メモリから消去する条件の識別情報を含む、上記(1)に記載の方法。
(5)上記条件が、取り出されたキャッシュ行が要求元装置へ書き出され次第消去されるべきことを指定する、上記(4)に記載の方法。
【0081】
(6)要求元装置とキャッシュ・メモリがPCIバスを介して相互通信する、上記(1)に記載の方法。
(7)Memory Readの略称でメモリ読み取りを意味するMRコマンド、Memory Read Lineの略称でメモリ行読み取りを意味するMRLコマンド、およびMemory Read Multipleの略称でメモリ複数行読み取りを意味するMRMコマンから事前取り出しヒントを導出するステップを更に含む、上記(6)に記載の方法。
(8)MR取り出しコマンドが、追加事前取り出しを行わないようにキャッシュ・メモリに関するメモリ・コントローラに指示する事前取り出しヒントを生成する、上記(7)に記載の方法。
(9)MRLコマンドが、2未満の追加データ・キャッシュ行を事前取り出しするようにキャッシュ・メモリに関するメモリ・コントローラに指示する事前取り出しヒントを生成する、上記(7)に記載の方法。
【0082】
(10)PCIバスを経由して通信している装置へシステム・メモリからデータを取り出すシステムであって、システム・メモリとPCIバスの間に配置され、複数のデータ行の形態でその内部にメモリ空間を有する入出力キャッシュ・メモリと、取り出し基準を定義するように構成される複数のレジスタと、上記複数レジスタの中から活動的レジスタを選択するように構成されるレジスタ・セレクタと、を備え、上記装置に関する取り出し基準が上記活動的レジスタによって指定される、システム。
【0083】
【発明の効果】
本発明によると、PCIバスに接続する装置とシステム・メモリの間に位置するキャッシュ・メモリへのシステム・メモリからのデータの事前取り出し量が装置やトランザクションなどの特性に基づいて決定されるので、キャッシュ・メモリの性能および効率が向上する。
【図面の簡単な説明】
【図1】PCIバスを経由してキャッシュ・メモリと通信する高性能なコンピュータ・システムのブロック図である。
【図2】キャッシュ・メモリの内部の基本的コンポーネントを示すブロック図である。
【図3】本発明に従って構築されるシステムの特定のコンポーネントを示すブロック図である。
【図4】本発明に従って構築されるシステムの特定のコンポーネントを示すブロック図である。
【図5】本発明に従って構築されるシステムのその他のコンポーネントを示すブロック図である。
【図6】本発明に従って構築されるシステムの機能的動作の概要を示す流れ図である。
【符号の説明】
100 コンピュータ・システム
126 キャッシュ・メモリ
128 システム・メモリ
130 PCIバス
322 ヒント生成回路
324 事前取り出しヒント・レジスタ
Claims (3)
- システム・メモリからPCIバスにより通信する装置へデータを取り出すシステムであって、
前記システム・メモリと前記PCIバスの間に配置され、複数のデータ・ラインの形態で内部にメモリ空間を有する入出力キャッシュ・メモリと、
前記キャッシュ・メモリと入出力バスの間の通信を評価し、評価した通信に基づいて少なくとも1組の事前取り出しヒントを生成するように構成された装置と、
前記メモリ空間内のデータを管理するメモリ管理手段であって、前記事前取り出しヒントを評価して前記メモリ空間内のデータ管理を制御するための手段をさらに備える、メモリ管理手段と、を備え、
前記事前取り出しヒントが、そこを越えてデータがキャッシュ・メモリに事前取り出しされることのないシステム・メモリ境界限界の識別情報を含む、システム。 - システム・メモリからPCIバスにより通信する装置へデータを取り出すシステムであって、
前記システム・メモリと前記PCIバスの間に配置され、複数のデータ・ラインの形態で内部にメモリ空間を有する入出力キャッシュ・メモリと、
前記キャッシュ・メモリと入出力バスの間の通信を評価し、評価した通信に基づいて少なくとも1組の事前取り出しヒントを生成するように構成された装置と、
前記メモリ空間内のデータを管理するメモリ管理手段であって、前記事前取り出しヒントを評価して前記メモリ空間内のデータ管理を制御するための手段をさらに備える、メモリ管理手段と、を備え、
前記事前取り出しヒントが、取り出されたデータをキャッシュ・メモリから消去する条件の識別情報を含む、システム。 - 前記メモリ管理手段が、
取り出し要求を評価する手段と、
前記取り出し要求に基づいて前記事前取り出しヒントを評価する手段と、
前記事前取り出しヒントの値に基づいて、予め定められた数のデータのキャッシュラインを制御可能であるように事前取り出しする手段と、
をさらに備える、請求項1または2に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/232293 | 1999-01-15 | ||
US09/232,293 US6542968B1 (en) | 1999-01-15 | 1999-01-15 | System and method for managing data in an I/O cache |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000235520A JP2000235520A (ja) | 2000-08-29 |
JP3888508B2 true JP3888508B2 (ja) | 2007-03-07 |
Family
ID=22872569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000003572A Expired - Fee Related JP3888508B2 (ja) | 1999-01-15 | 2000-01-12 | キャッシュ・データ管理方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US6542968B1 (ja) |
JP (1) | JP3888508B2 (ja) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7069306B1 (en) | 2000-07-20 | 2006-06-27 | Silicon Graphics, Inc. | Providing shared and non-shared access to memory in a system with plural processor coherence domains |
US6981101B1 (en) * | 2000-07-20 | 2005-12-27 | Silicon Graphics, Inc. | Method and system for maintaining data at input/output (I/O) interfaces for a multiprocessor system |
US7032035B2 (en) * | 2000-12-08 | 2006-04-18 | Intel Corporation | Method and apparatus for improving transmission performance by caching frequently-used packet headers |
US6760818B2 (en) * | 2002-05-01 | 2004-07-06 | Koninklijke Philips Electronics N.V. | Memory region based data pre-fetching |
US7117316B2 (en) | 2002-08-05 | 2006-10-03 | Micron Technology, Inc. | Memory hub and access method having internal row caching |
US6820181B2 (en) | 2002-08-29 | 2004-11-16 | Micron Technology, Inc. | Method and system for controlling memory accesses to memory modules having a memory hub architecture |
WO2004031943A1 (ja) * | 2002-09-30 | 2004-04-15 | Renesas Technology Corp. | データプロセッサ |
US7124262B2 (en) * | 2002-11-20 | 2006-10-17 | Intel Corporation | Selectivity pipelining and prefetching memory data |
US7237068B2 (en) * | 2003-01-28 | 2007-06-26 | Sun Microsystems, Inc. | Computer system employing bundled prefetching and null-data packet transmission |
US7146467B2 (en) * | 2003-04-14 | 2006-12-05 | Hewlett-Packard Development Company, L.P. | Method of adaptive read cache pre-fetching to increase host read throughput |
US6871246B2 (en) * | 2003-05-07 | 2005-03-22 | Freescale Semiconductor, Inc. | Prefetch control in a data processing system |
US7310707B2 (en) * | 2003-05-15 | 2007-12-18 | Seagate Technology Llc | Adaptive resource controlled write-back aging for a data storage device |
US7120727B2 (en) | 2003-06-19 | 2006-10-10 | Micron Technology, Inc. | Reconfigurable memory module and method |
US7260685B2 (en) | 2003-06-20 | 2007-08-21 | Micron Technology, Inc. | Memory hub and access method having internal prefetch buffers |
US7120743B2 (en) | 2003-10-20 | 2006-10-10 | Micron Technology, Inc. | Arbitration system and method for memory responses in a hub-based memory system |
US7330992B2 (en) * | 2003-12-29 | 2008-02-12 | Micron Technology, Inc. | System and method for read synchronization of memory modules |
US7188219B2 (en) * | 2004-01-30 | 2007-03-06 | Micron Technology, Inc. | Buffer control system and method for a memory system having outstanding read and write request buffers |
GB0402739D0 (en) * | 2004-02-09 | 2004-03-10 | Saviso Group Ltd | Methods and apparatus for routing in a network |
US7213082B2 (en) * | 2004-03-29 | 2007-05-01 | Micron Technology, Inc. | Memory hub and method for providing memory sequencing hints |
US20050216716A1 (en) * | 2004-03-29 | 2005-09-29 | Hoffman Philip M | System and method for licensing and distribution of I/O in partitioned computer systems |
US7238218B2 (en) * | 2004-04-06 | 2007-07-03 | International Business Machines Corporation | Memory prefetch method and system |
US7519788B2 (en) * | 2004-06-04 | 2009-04-14 | Micron Technology, Inc. | System and method for an asynchronous data buffer having buffer write and read pointers |
US20060031639A1 (en) * | 2004-08-06 | 2006-02-09 | International Business Machines Corporation | Write unmodified data to controller read cache |
US20060069818A1 (en) * | 2004-09-27 | 2006-03-30 | Cliff Mather | Synchronizing direct memory access and evacuation operations in a computer system |
US7383391B2 (en) * | 2005-05-18 | 2008-06-03 | International Business Machines Corporation | Prefetch mechanism based on page table attributes |
US7949794B2 (en) | 2006-11-02 | 2011-05-24 | Intel Corporation | PCI express enhancements and extensions |
US7624235B2 (en) * | 2006-11-30 | 2009-11-24 | Apple Inc. | Cache used both as cache and staging buffer |
JP2008262390A (ja) * | 2007-04-12 | 2008-10-30 | Toshiba Corp | プログラム |
US8161243B1 (en) * | 2007-09-28 | 2012-04-17 | Intel Corporation | Address translation caching and I/O cache performance improvement in virtualized environments |
US8250307B2 (en) * | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Sourcing differing amounts of prefetch data in response to data prefetch requests |
US8266381B2 (en) * | 2008-02-01 | 2012-09-11 | International Business Machines Corporation | Varying an amount of data retrieved from memory based upon an instruction hint |
US20090271578A1 (en) * | 2008-04-23 | 2009-10-29 | Barrett Wayne M | Reducing Memory Fetch Latency Using Next Fetch Hint |
US8176254B2 (en) * | 2009-04-16 | 2012-05-08 | International Business Machines Corporation | Specifying an access hint for prefetching limited use data in a cache hierarchy |
JP2011182314A (ja) * | 2010-03-03 | 2011-09-15 | Oki Semiconductor Co Ltd | データ中継装置及び方法 |
WO2013048943A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Active state power management (aspm) to reduce power consumption by pci express components |
US10015111B2 (en) * | 2013-03-15 | 2018-07-03 | Huawei Technologies Co., Ltd. | System and method for steering packet streams |
US9367467B2 (en) * | 2014-08-22 | 2016-06-14 | Nvidia Corporation | System and method for managing cache replacements |
US11500779B1 (en) | 2019-07-19 | 2022-11-15 | Marvell Asia Pte, Ltd. | Vector prefetching for computing systems |
US11379379B1 (en) * | 2019-12-05 | 2022-07-05 | Marvell Asia Pte, Ltd. | Differential cache block sizing for computing systems |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0727494B2 (ja) | 1992-01-02 | 1995-03-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | キャッシュ・スヌープ/データ無効化機能を有するコンピュータ・システム |
US5325503A (en) | 1992-02-21 | 1994-06-28 | Compaq Computer Corporation | Cache memory system which snoops an operation to a first location in a cache line and does not snoop further operations to locations in the same line |
US5724549A (en) | 1992-04-06 | 1998-03-03 | Cyrix Corporation | Cache coherency without bus master arbitration signals |
US5652858A (en) * | 1994-06-06 | 1997-07-29 | Hitachi, Ltd. | Method for prefetching pointer-type data structure and information processing apparatus therefor |
US5608878A (en) | 1994-10-03 | 1997-03-04 | International Business Machines Corporation | Dual latency status and coherency reporting for a multiprocessing system |
US5732243A (en) * | 1994-10-18 | 1998-03-24 | Cyrix Corporation | Branch processing unit with target cache using low/high banking to support split prefetching |
US5778436A (en) * | 1995-03-06 | 1998-07-07 | Duke University | Predictive caching system and method based on memory access which previously followed a cache miss |
US5732242A (en) * | 1995-03-24 | 1998-03-24 | Silicon Graphics, Inc. | Consistently specifying way destinations through prefetching hints |
US5664147A (en) * | 1995-08-24 | 1997-09-02 | International Business Machines Corp. | System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated |
US5860105A (en) * | 1995-11-13 | 1999-01-12 | National Semiconductor Corporation | NDIRTY cache line lookahead |
US5809022A (en) | 1996-03-19 | 1998-09-15 | Lucent Technologies Inc. | Method and apparatus for converting synchronous narrowband signals into broadband asynchronous transfer mode signals |
US6003106A (en) * | 1998-05-27 | 1999-12-14 | International Business Machines Corporation | DMA cache control logic |
-
1999
- 1999-01-15 US US09/232,293 patent/US6542968B1/en not_active Expired - Fee Related
-
2000
- 2000-01-12 JP JP2000003572A patent/JP3888508B2/ja not_active Expired - Fee Related
-
2002
- 2002-12-17 US US10/322,222 patent/US6772295B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6772295B2 (en) | 2004-08-03 |
US20030115422A1 (en) | 2003-06-19 |
JP2000235520A (ja) | 2000-08-29 |
US6542968B1 (en) | 2003-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3888508B2 (ja) | キャッシュ・データ管理方法 | |
US5958040A (en) | Adaptive stream buffers | |
US5802572A (en) | Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache | |
KR100262906B1 (ko) | 데이터 선인출 방법 및 시스템 | |
KR100240911B1 (ko) | 데이터 프리페치 방법, 캐시 라인 프리페치 방법 및 시스템(progressive data cache) | |
US6219760B1 (en) | Cache including a prefetch way for storing cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line | |
US5778422A (en) | Data processing system memory controller that selectively caches data associated with write requests | |
US6105111A (en) | Method and apparatus for providing a cache management technique | |
JP4486750B2 (ja) | テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造 | |
JP4028875B2 (ja) | メモリを管理するためのシステムおよび方法 | |
US7917701B2 (en) | Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation | |
US6782454B1 (en) | System and method for pre-fetching for pointer linked data structures | |
US6295582B1 (en) | System and method for managing data in an asynchronous I/O cache memory to maintain a predetermined amount of storage space that is readily available | |
US9311246B2 (en) | Cache memory system | |
US6078992A (en) | Dirty line cache | |
US6578111B1 (en) | Cache memory system and method for managing streaming-data | |
EP0803817A1 (en) | A computer system having cache prefetching capability based on CPU request types | |
US6457105B1 (en) | System and method for managing data in an asynchronous I/O cache memory | |
KR20090054657A (ko) | 라이트-백 동작시 라이트-백 데이터의 버스트 길이를조절할 수 있는 캐시 메모리와 이를 포함하는 시스템 | |
US8621152B1 (en) | Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access | |
JP2000090009A (ja) | キャッシュメモリにおいてキャッシュラインを置き換えるための方法および装置 | |
US6901500B1 (en) | Method and apparatus for prefetching information and storing the information in a stream buffer | |
US5551000A (en) | I/O cache with dual tag arrays | |
KR100348099B1 (ko) | 단일의캐쉬액세스파이프단을이용하여파이프라인저장명령을실행하기위한장치및방법과,파이프라인프로세서및,컴퓨터시스템 | |
US7949833B1 (en) | Transparent level 2 cache controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060308 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060418 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060713 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060719 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061011 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061024 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061122 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |