(57)【要約】【課題】  メモリを管理するためのシステムおよび方法を提供する。【解決手段】  本発明のメモリ管理のためのシステムは、メモリ装置とコミュニケーションを行うタグ制御のバッファを含む。メモリ装置は、複数の個々にアドレス可能なラインに分割された複数のページを含む。タグ制御のバッファはプリフェッチ・バッファを含み、プリフェッチ・バッファはメモリ装置からの個々にアドレス可能な少なくとも１つのラインを含む。タグ制御されたバッファは、プリフェッチ・バッファとコミュニケーションを行うタグ・キャッシュも含む。タグ・キャッシュは複数のタグを含み、各タグはメモリ装置におけるページの１つと関連付けられ、プリフェッチ・バッファにおけるラインの少なくとも１つに対するポインタを含む。プリフェッチ・バッファ内のラインに対するアクセスはタグ・キャッシュによって制御される。【選択図】  図１
2005302034.tif 000002
【特許請求の範囲】
【請求項１】
複数の個々にアドレス可能なラインに分割された複数のページを含むメモリ装置とコミュニケーションを行うタグ制御のバッファを含み、
前記タグ制御のバッファが、
前記メモリ装置からの前記個々にアドレス可能なラインの少なくとも１つを含むプリフェッチ・バッファと、
複数のタグを含み、前記プリフェッチ・バッファとコミュニケーションを行うタグ・キャッシュと、
を含み、前記タグの各々が前記メモリ装置におけるページの各々に関連付けられ、前記プリフェッチ・バッファにおけるラインの少なくとも１つに対するポインタを含み、前記プリフェッチ・バッファにおけるラインに対するアクセスが前記タグ・キャッシュによって制御される、メモリ管理のためのシステム。
【請求項２】
前記アクセスが、前記プリフェッチ・バッファに新しいラインを挿入すること、前記プリフェッチ・バッファから前記ラインの１つを削除すること、及び前記プリフェッチ・バッファにおける前記ラインの１つを読み出すことの少なくとも１つを含む、請求項１に記載のシステム。
【請求項３】
前記タグ制御のバッファが前記タグ・キャッシュからのコマンドに応答して前記プリフェッチ・バッファにおけるラインの１つをキャッシュ装置に送る、請求項１に記載のシステム。
【請求項４】
前記プリフェッチ・バッファがランダム・アクセス・メモリによって具現化される、請求項１に記載のシステム。
【請求項５】
前記タグが前記タグ・キャッシュから削除されたことに応答して、前記タグ・キャッシュにおけるタグの１つに対応したプリフェッチ・バッファにおけるすべてのラインが削除される、請求項１に記載のシステム。
【請求項６】
前記システムは、前記タグ・キャッシュにおけるタグおよび前記プリフェッチ・バッファにおけるラインに対する置換アルゴリズムを具現化するための命令を含み、
前記タグ・キャッシュに新たなタグを挿入するとき、前記新たなタグに対するスペースおよび前記新たなタグに関連付けられたプリフェッチ・ラインのためのスペースを作るに十分な数のタグが除去される、請求項１に記載のシステム。
【請求項７】
前記除去されたタグが低レベル・メモリに書き戻される、請求項６に記載のシステム。
【請求項８】
前記除去されたタグが低レベル・メモリに書き戻され、前記低レベル・メモリにおけるタグがページ識別子フィールド及び参照履歴フィールドを含む、請求項６に記載のシステム。
【請求項９】
前記低レベル・メモリにおけるタグがフラッグ・フィールドを更に含む、請求項８に記載のシステム。
【請求項１０】
前記システムは、前記プリフェッチ・バッファにおけるラインが挿入、削除、修正、または参照されたことに応答して、前記タグ・キャッシュにおけるタグを更新する手段を更に含む、請求項１に記載のシステム。
【請求項１１】
前記システムは、更に、
不在ページ識別子及び不在ライン識別子を含む不在通知をキャッシュ装置から受ける手段と、
前記プリフェッチ・バッファにおけるラインの１つが前記不在ページ識別子及び不在ライン識別子に対応するかどうかを決定するために前記タグ・キャッシュをアクセスする手段と、
前記プリフェッチ・バッファにおける前記不在ページ識別子及び前記不在ライン識別子に対応するラインを位置指定したことに応答して、前記不在ページ識別子及び前記不在ライン識別子に対応するラインを前記プリフェッチ・バッファから前記キャッシュ装置に伝送する手段と、
前記伝送を反映するように前記タグ・キャッシュを更新する手段と、
を含む、請求項１に記載のシステム。
【請求項１２】
前記タグ・キャッシュにおける各タグが、ページ識別子フィールド、存在ビット・フィールド、履歴ベクトル・フィールド、及びポインタ・フィールドを含む、請求項１に記載のシステム。
【請求項１３】
前記タグ・キャッシュにおける各タグがフラッグ・フィールドを更に含む、請求項１２に記載のシステム。
【請求項１４】
少なくとも１つのラインを含むランダム・アクセス・メモリであって、各ラインがメモリ装置におけるページに関連付けられ、前記ランダム・アクセス・メモリにおけるスペースがライン毎に割り振られる、ランダム・アクセス・メモリと、
複数のタグを含む第１キャッシュ装置であって、各タグが前記メモリ装置におけるページの１つに対応し、前記ページに関連付けられた少なくとも１つのラインの前記ランダム・アクセス・メモリにおけるロケーションを表す、第１キャッシュ装置と、
を含む、メモリ管理のためのシステム。
【請求項１５】
前記第１キャッシュ装置からのコマンドに応答して、前記ランダム・アクセス・メモリにおけるラインの１つを第２キャッシュ・メモリに送るための命令を含むコンピュータ・プロセッサを更に含む、請求項１４に記載のシステム。
【請求項１６】
前記タグがキャッシュから削除されたことに応答して、前記第１キャッシュ装置におけるタグの１つに対応する前記ランダム・アクセス・メモリにおけるすべてのラインが削除される、請求項１４に記載のシステム。
【請求項１７】
前記第１キャッシュ装置におけるタグ及び前記ランダム・アクセス・メモリにおけるラインに対する置換アルゴリズムを具現化するための命令を含むコンピュータ・プロセッサを更に含み、
前記第１キャッシュ装置に新たなタグを挿入するとき、前記新たなタグのためのスペース及び前記新たなタグに関連付けられたプリフェッチ・ラインのためのスペースを作るに十分な数のタグが除去される、請求項１４に記載のシステム。
【請求項１８】
前記除去されたタグが低レベル・メモリに書き戻される、請求項１７に記載のシステム。
【請求項１９】
前記除去されたタグが低レベル・メモリに書き戻され、前記低レベル・メモリにおけるタグがページ識別子フィールド及び参照履歴フィールドを含む、請求項１７に記載のシステム。
【請求項２０】
前記低レベル・メモリにおけるタグがフラッグ・フィールドを更に含む、請求項１９に記載のシステム。
【請求項２１】
前記ランダム・アクセス・メモリにおけるラインが挿入、削除、修正、または参照されたことに応答して、前記第１キャッシュ装置におけるタグを更新するための方法を実施するための命令を含むコンピュータ・プロセッサを更に含む、請求項１４に記載のシステム。
【請求項２２】
前記第１キャッシュ装置における各タグが、ページ識別子フィールド、存在ビット・フィールド、履歴ベクトル・フィールド、及びポインタ・フィールドを含む、請求項１４に記載のシステム。
【請求項２３】
前記第１キャッシュ装置における各タグがフラッグ・フィールドを更に含む、請求項２２に記載のシステム。
【請求項２４】
不在ページ識別子及び不在ライン識別子を含む不在通知を第１キャッシュ装置から受けるステップと、
ランダム・アクセス・メモリにおけるラインが前記不在ページ識別子及び前記不在ライン識別子に対応するかどうかを決定するために第２キャッシュ装置をアクセスするステップであって、前記ランダム・アクセス・メモリがメモリ装置におけるページに関連付けられた少なくとも１つのラインを含み、各々が前記メモリ装置におけるページの１つに対応する複数のタグを前記第２キャッシュ装置が含み、各タグが当該タグに対応するページに関連付けられた前記少なくとも１つのラインの前記ランダム・アクセス・メモリにおけるロケーションを表す、ステップと、
前記アクセスの結果、前記ランダム・アクセス・メモリにおける前記不在ページ識別子及び前記不在ライン識別子に対応するラインを位置指定したことに応答して、前記不在ページ識別子及び前記不在ライン識別子に対応するラインを前記ランダム・アクセス・メモリから前記第１キャッシュ装置に伝送するステップと、
前記伝送を反映するように前記不在ページ識別子に対応する第２キャッシュ装置におけるタグを更新するステップと、
を含む、メモリ管理のための方法。
【請求項２５】
メモリ管理のための方法であって、
不在ページ識別子及び不在ライン識別子を含む不在通知を要求者から受けるステップと、
前記不在ページ識別子に対応するタグがタグ・キャッシュにあるかどうかを決定するステップであって、前記タグ・キャッシュが複数のタグを含み、各タグがプリフェッチ・バッファにおけるラインに対する少なくとも１つのポインタを含み、前記タグ・キャッシュが少なくとも１つのプリフェッチ・ラインを指定する、ステップと、
前記不在ページ識別子に対応するタグを位置指定したことに応答して、前記不在ライン識別子に対応するラインを前記要求者に伝送し、前記伝送を反映するように前記不在ページ識別子に対応するタグを更新するステップと、
前記不在ページ識別子に対応するタグを位置指定しなかったことに応答して、前記不在ページ識別子に対応する新たなタグを前記タグ・キャッシュに挿入し、前記不在ライン識別子に対応するラインを前記要求者に伝送し、前記新たなタグに含まれたプリフェッチ・ラインを前記プリフェッチ・バッファに挿入するステップと、
を含み、
前記挿入するステップが前記タグ・キャッシュを介して遂行される、方法。
【請求項２６】
前記不在ライン識別子に対応するラインをメモリ装置から検索するステップを更に含む、請求項２５に記載の方法。
【請求項２７】
前記不在ライン識別子に対応するラインを前記プリフェッチ・バッファから検索するステップを更に含み、
前記検索するステップが前記タグ・キャッシュを介するステップである、請求項２５に記載の方法。
【請求項２８】
前記要求者がキャッシュ装置である、請求項２５に記載の方法。
【請求項２９】
処理回路による読み取りが可能な記憶媒体に記憶され、前記処理回路による実行のための命令を含む、キャッシュ・メモリ管理のためのコンピュータ・プログラムであって、
不在ページ識別子及び不在ライン識別子を含む不在通知を要求者から受けるステップと、
前記不在ページ識別子に対応するタグがタグ・キャッシュにあるかどうかを決定するステップであって、前記タグ・キャッシュが複数のタグを含み、各タグがプリフェッチ・バッファにおけるラインに対する少なくとも１つのポインタを含み、前記タグ・キャッシュが少なくとも１つのプリフェッチ・ラインを指定する、ステップと、
前記不在ページ識別子に対応するタグを位置指定したことに応答して、前記不在ライン識別子に対応するラインを前記要求者に伝送し、前記伝送を反映するように前記不在ページ識別子に対応するタグを更新するステップと、
前記不在ページ識別子に対応するタグを位置指定しなかったことに応答して、前記不在ページ識別子に対応する新たなタグを前記タグ・キャッシュに挿入し、前記不在ライン識別子に対応するラインを前記要求者に伝送し、前記新たなタグに含まれたプリフェッチ・ラインを前記プリフェッチ・バッファに挿入するステップであって、前記挿入が前記タグ・キャッシュを介して遂行される、ステップと、
をコンピュータに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ管理に関し、特に、キャッシュ・システムの一部であるタグ制御されたプリフェッチ・バッファ管理システムに関するものである。
【背景技術】
【０００２】
コンピュータのような処理システムでは、プロセッサが利用するデータはメモリ（例えば、メイン・メモリ、低レベル・メモリ）に記憶され、プロセッサによって発生されたリクエストに応答して、制御ロジックがメモリ及びプロセッサの間のデータ転送を管理する。メイン・メモリに記憶されたデータは、一般に、プロセッサによって実行されるべき命令及びプロセッサによって操作されるべきデータの両方を含む。便宜上、本願では、文脈上の関連が必要ない場合、命令及び実データの両方とも、一様に「データ」と呼ばれる。メイン・メモリのアクセスに必要な時間は、現在のプロセッサの動作速度に比べてかなり長い。これに対処するために、一般には、短いアクセス・タイムを有するキャッシュ・メモリがメイン・メモリとプロセッサとの間に設けられ、制御ロジックが、メイン・メモリから検索されたデータのキャッシュにおける保存、及びキャッシュからプロセッサへのデータの供給を管理する。
【０００３】
代表的なキャッシュは、複数の「ライン」に編成される。各ラインは、メイン・メモリからの１ラインのデータのための記憶装置を提供する。１ラインのデータは、その長さが複数バイトであってもよい。プロセッサが１つのページまたはブロックにおける特定のラインに含まれたデータを求めるリクエストを発生するとき、そのラインがキャッシュに記憶されているかどうかを制御ロジックが決定する。そのラインがキャッシュに記憶されている（即ち、キャッシュ・ヒットが存在する）場合、データがキャッシュから検索される。そのラインがキャッシュに記憶されていない（即ち、キャッシュ・ミスが存在する）場合、データはメイン・メモリから検索されなければならず、この操作が生じている間、プロセッサは機能停止させられる。キャッシュ・アクセスは低レベル・メモリのアクセスよりもずっと速いので、キャッシュ・ヒット対キャッシュ・ミスの高い比率を得るようにシステムを管理するのが望ましいことは明らかである。
【０００４】
メモリ待ち時間は、コンピュータ・システムのパフォーマンスにおける益々重要な要素になっている。この高まる重要性の意義は、低速のオンチップ・キャッシュに起因するキャッシュ障害がパフォーマンスの点からみて大きな費用のかかるものになりつつあるということである。この問題を軽減するための１つの方法は、キャッシュのサイズを大きくすることである。キャッシュのサイズを大きくすることはパフォーマンスの改善を可能にするが、キャッシュ・メモリは遅い低レベル・メモリに比べて高価である。従って、できるだけ効率的にキャッシュ・メモリ・スペースを使用することが重要である。
【０００５】
キャッシュ・メモリ・システムの効率を改善し、メモリ待ち時間を減少させるための１つの方法は、プロセッサ・リクエストを予測し、前以ってメモリからデータ・ラインを検索しようとすることである。この手法は、プリフェッチとして知られている。プリフェッチは、逐次的および／またはストライド・アクセスのようなリファレンス・データ・ストリームの動的特性に注目することによる遂行が可能である。別の方法として、プリフェッチは、記憶された情報に基づいて遂行することも可能である。この記憶された情報は、ページ内またはページ相互間のアクセスのパターン、或いは、コンパイラおよび／またはプログラマによって生成されたヒントに関連することもある。
【０００６】
プリフェッチを伴うキャッシュ構造において、１つの一般的な方法は、プリフェッチされているラインを保持するプリフェッチ・バッファを有することである。そのような別のバッファを有することは、誤ったプリフェッチによるキャッシュ特有の汚染を回避する。しかし、進行中のアクセスまたは記憶された情報の関数として何をプリフェッチすべきかを決定するロジックによって、そのようなプリフェッチ・バッファの内容を調整することは困難であることが多い。更に、プリフェッチ・バッファをサーチすることは、単一の操作に対して複数の連想ルックアップを必要とすることがある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、メモリ装置とコミュニケーションを行うタグ制御のバッファを含む、メモリ管理のためのシステムを提供することにある。
【課題を解決するための手段】
【０００８】
メモリ装置は、複数の個々にアドレス可能なラインに分割された複数のページを含む。タグ制御のバッファはプリフェッチ・バッファを含み、プリフェッチ・バッファはメモリ装置からの個々にアドレス可能な少なくとも１つのラインを含む。タグ制御のバッファは、プリフェッチ・バッファとコミュニケーションを行うタグ・キャッシュも含む。タグ・キャッシュは複数のタグを含み、各タグはメモリ装置におけるページの１つと関連付けられ、プリフェッチ・バッファにおけるラインの少なくとも１つに対するポインタを含む。プリフェッチ・バッファ内のラインに対するアクセスはタグ・キャッシュによって制御される。
【０００９】
本発明のもう１つの局面は、ランダム・アクセス・メモリを含むメモリ管理のためのシステムである。ランダム・アクセス・メモリは少なくとも１つのラインを含む。各ラインはメモリ装置におけるページと関連付けられ、ランダム・アクセス・メモリにおけるスペースがライン毎に割り振られる。システムは、複数のタグを伴う第１キャッシュ装置も含む。各タグはメモリ装置におけるページの１つに対応しており、ランダム・アクセス・メモリ内のそのタグに関連付けられた少なくとも１つのラインにおけるロケーションを表す。
【００１０】
本発明のもう１つの局面は、メモリ管理のための方法である。その方法は、第１キャッシュ装置からの不在（キャッシュ・ミス）通知を受けることを含む。その不在通知は、不在ページ識別子および不在ライン識別子を含む。ランダム・アクセス・メモリにおけるラインが不在ページ識別子および不在ライン識別子に対応するかどうかを決定するために第２キャッシュ装置がアクセスされる。ランダム・アクセス・メモリは、メモリ装置におけるページに関連付けられた少なくとも１つのラインを含む。第２キャッシュ装置は複数のタグを含み、各タグはメモリ装置におけるページの１つに対応する。各タグは、当該タグに対応するページに関連付けられた少なくとも１つのラインの、ランダム・アクセス・メモリにおけるロケーションを表す。ランダム・アクセス・メモリからの不在ページ識別子および不在ライン識別子に対応するラインは、不在ページ識別子および不在ライン識別子に対応するランダム・アクセス・メモリ内のラインをそのアクセスが位置指定したことに応答して、第１キャッシュ装置に伝送される。不在ページ識別子に対応するタグは、その伝送を反映するように第２キャッシュ装置において更新される。
【００１１】
本発明のもう１つの局面は、メモリ管理のための方法である。その方法は、要求者から不在通知を受けることを含む。その不在通知は、不在ページ識別子および不在ライン識別子を含む。その方法は、不在ページ識別子に対応するタグがタグ・キャッシュにおいて位置指定されたかどうかを決定することも含む。タグ・キャッシュは複数のページを含む。各タグは、プリフェッチ・バッファにおけるラインに対する少なくとも１つのポインタを含み、タグ・キャッシュはプリフェッチ・ラインの少なくとも１つを指定する。不在ページ識別子に対応するタグを位置指定したことに応答して、その不在ライン識別子に対応するラインが要求者に伝送され、不在ページ識別子に対応するタグがその伝送を反映するように更新される。不在ページ識別子に対応するタグを位置指定しなかったことに応答して、その不在ページ識別子に対応する新たなタグがタグ・キャッシュに挿入される。更に、不在ライン識別子に対応するラインが要求者に伝送され、その新たなタグに含まれたプリフェッチ・ラインがタグ・キャッシュを介してプリフェッチ・バッファに挿入される。
【００１２】
本発明のもう１つの局面は、メモリ管理のためのコンピュータ・プログラム製品である。コンピュータ・プログラム製品は、処理回路によって読み取り可能な記憶媒体を含み、その記憶媒体は要求者からの不在通知を受けることを含む方法を遂行するための命令を処理回路による実行のために記憶する。不在通知は、不在ページ識別子および不在ライン識別子を含む。その方法は、不在ページ識別子がタグ・キャッシュにおいて位置指定されたかどうかを決定することも含む。そのタグ・キャッシュは複数のタグを含む。各タグは、プリフェッチ・バッファにおけるラインに対する少なくとも１つのポインタを含み、タグ・キャッシュは少なくとも１つのプリフェッチ・ラインを指定する。不在ページ識別子に対応するタグを位置指定したことに応答して、不在ライン識別子に対応するラインが要求者に伝送され、不在ページ識別子に対応するタグがその伝送を反映するように更新される。不在ページ識別子に対応するタグを位置指定しなかったことに応答して、その不在ページ識別子に対応する新たなタグがタグ・キャッシュに挿入される。更に、不在ライン識別子に対応するラインが要求者に伝送され、その新たなタグに含まれたプリフェッチ・ラインがタグ・キャッシュを介してプリフェッチ・バッファに挿入される。
【発明を実施するための最良の形態】
【００１３】
本発明の実施例は、タグによって制御される内容を有するプリフェッチ・バッファを含む。各タグはメモリにおける１つのページの対応する。タグは、そのページにおけるライン、またはそのタグに対応するページと他のページとの間のラインに対するアクセス履歴を含む。あるページからの特定のラインがプリフェッチ・バッファ内にあるかどうかを決定するためにはタグを使用してサーチが遂行される。タグは、プリフェッチ・バッファに記憶されたラインに対するプリフェッチ・バッファ内のロケーション（例えば、共用メモリ・プール）に対するポインタを含む。タグは、将来のプリフェッチの助けとなるための関連の参照情報も保持する。タグは、プリフェッチ・バッファにおけるラインの存在および／または不存在を制御し、プリフェッチ・バッファにおけるそれらのラインに対するアクセスは、すべて、タグを介するものである。この設計にとっての利点は、すべてのサーチが、タグを保持する構造に集中し、それによって、単一の操作に対する複数の連想ルックアップを回避することである。更に、その設計は、最近入力されたタグがそれらのプリフェッチされたラインのためのスペースを保証されることを確実にする助けとなるであろう。
【００１４】
本発明の実施例は、レベル２（Ｌ２）キャッシュ、プリフェッチ・バッファ、および最近参照されたタグを含むタグ・キャッシュを含む。タグ・キャッシュにおける各タグは、メイン・メモリまたは低レベル・メモリにおける個々のページに関連付けられている。本発明の実施例では、低レベル・メモリにおける個々のページは４０００（４Ｋ）バイトである。タグはメモリ内に保持され、プリフェッチ・バッファに対する参照時にアクセスされる。低レベル・メモリにおける所与のページに関連付けられたタグを求めるサーチは、キャッシュ・メモリに対して、その分野では任意の既知の方法で（例えば、同一（congruence）クラス内の連想サーチによって）遂行される。本発明の実施例では、便宜上、タグ・キャッシュが完全に連想性のものであると仮定する。タグは、プリフェッチの決定または置換の決定において使用される情報を含む。本発明の実施例では、タグは、キャッシュ不在がそれのラインおよびいくつかのフラッグ・ビットの１つにおいて生じる場合、どのラインがページからフェッチされるべきかに関する情報を含む。タグ・キャッシュを伴うプリフェッチ・バッファは、一般に、タグ制御のバッファ（ＴＣＢ）と呼ばれる。
【００１５】
あるイベント（例えば、１つのページにおけるラインの１つに対する参照）は、ページ・タグを（例えば、ページ・テーブルから）プリフェッチさせ、おそらく、１つまたは複数の他のタグを変位させて、タグ・キャッシュ内に置かせることが可能である。タグに保持された情報は、そのタグおよび他のページからのタグに対応するラインをページからプリフェッチするために使用される。フェッチされたラインは、プロセッサ集積回路に存在する共用メモリ・プールによって実現可能な共用プリフェッチ・バッファに置かれる。あるタグに関連付けられたプリフェッチされたラインは、プリフェッチ・バッファにおける、ハードウェアおよび／またはソフトウェアによって維持されるフリー・スペース・リストによって決定された位置に置かれる。プリフェッチされたラインにとっては不十分なスペースしか存在しない場合、十分なスペースをフリーにするために別のタグがタグ・キャッシュから削除され、メモリに書き戻される。更に、削除されたタグに対応するプリフェッチ・バッファにおけるラインがプリフェッチ・バッファから除去される。ラインが（即ち、Ｌ２キャッシュ不在を償うために）参照されるとき、これらのラインはバッファから削除され、Ｌ２キャッシュに置かれることも可能である。そこで、プリフェッチ・バッファにおけるそのようなラインによって専有されていたスペースがフリー・スペース・リストに置かれる。変位させられたバッファは更新され、メモリに書き戻される。
【００１６】
図１は、本発明の実施例に従って、Ｌ２キャッシュ１０６、低レベル・メモリ１０８、プリフェッチ・バッファ１０４、タグ・キャッシュ１０２、およびプロセッサ１１４を含む。説明の便宜上、低レベル・キャッシュ１０８は、各々が４Ｋバイトである複数のページに分割される。更に、キャッシュ・ラインが１２８バイトを含むものと仮定し、従って、１ページ当たり３２ラインが存在するものと仮定する。タグ制御バッファ（ＴＣＢ）１１０がタグ・キャッシュ１０２およびプリフェッチ・バッファ１０４を含む。図１に示されるように、ＴＣＢ１１０は、プリフェッチ・バッファ１０４がキャッシュ１０６にラインを転送すること、低レベル・メモリ１０８からデータを読み出すこと、タグを低レベル・メモリから読取ること／それに書き込むことを可能にするために、キャッシュ１０６および低レベル・メモリ１０８の両方とコミュニケーションを行う。更に、キャッシュ１０６は、低レベル・キャッシュ１０８との間でデータを移動させるためにその低レベル・キャッシュとコミュニケーションを行う。ＴＣＢ１１０は、プロセッサ１１４ともコミュニケーションを行う。プロセッサ１１４は、本願で開示されるプロセスを実施するための命令を含み、ＴＣＢ１１０によってアクセスし得る種々の装置に（例えば、ＴＣＢ上の、またはメモリ・コントローラ上の装置に）物理的に設けることも可能である。更に、その分野で知られているように、それらの命令を１つまたは複数のプロセッサ１１４に物理的に設けることも可能である。
【００１７】
図１に示されたタグ・キャッシュ１０２は、最近参照されたＴＣＢタグ１１２を含み、それらのＴＣＢタグはプリフェッチ・バッファ１０４における１つまたは複数のロケーションに対するポインタを含む。更に、ＴＣＢタグ１１２は、プリフェッチ・バッファ１０４に保持されたラインに関する他の情報を含んでもよい。本発明の実施例では、タグ・キャッシュ１０２は、一組の等価クラスに分割されたＴＣＢタグ１１２の記憶装置を有する標準的なキャッシュ構造として編成される。なお、ＴＣＢタグ１１２は等価クラスによってサーチされる。その分野では既知の別のキャッシュ構造がタグ・キャッシュ１０２によって具現化されてもよい。本発明の実施例では、プリフェッチ・バッファ１０４の内容に対するアクセスはタグ・キャッシュ１０２を介するだけである。
【００１８】
図２は、本発明の実施例におけるタグの内容を示す。ＴＣＢタグ１１２はタグ・キャッシュ１０２に記憶され、メモリ・タグ２１６は低レベル・メモリ１０８に記憶される。ＴＣＢタグ１１２の実施例は、ページ識別子（ＩＤ）フィールド２０２、存在ビット・フィールド２０４、履歴ベクトル・フィールド２０６、ポインタ・フィールド２０８、およびフラッグ・フィールド２１０を含む。ページ識別フィールド２０２は、低レベル・メモリ１０８におけるページのアドレス（即ち、実アドレス）を含む。存在ビット・フィールド２０４は、ページにおける各ラインに対して１つのビットを含む。前述のように、１２８バイトのラインを有する４Ｋバイトのページでは、１ページ当たり３２ラインが存在する。従って、存在フィールド２０４には３２個の存在ビットがある。その各々がページにおける異なるラインに対応する。存在ビットは、対応するラインが、現在、プリフェッチ・バッファ１０４に含まれている場合、「１」にセットされ、対応するラインが、現在、プリフェッチ・バッファ１０４に含まれていない場合、「０」にセットされる。
【００１９】
ＴＣＢタグ１１２における履歴ベクトル・フィールド２０６は、ページにおけるラインが過去にどのように参照されたかに関する情報の集合を含む。ＴＣＢタグ１１２がアクセスされ、ラインが参照されるとき、このフィールドは更新され、どのようなデータがプリフェッチ・バッファ１０４に含まれるべきかに関する決定を行う場合にそれを支援するために使用される。本発明の実施例では、履歴ベクトル・フィールド２０６は、履歴シーケンスとして、またはページからの３２の最近のライン参照を含むベクトルとして、記憶される。ポインタ・フィールド２０８は、プリフェッチ・バッファ１０４に現在置かれているそのページにおけるラインのロケーションを表すデータを含む。ポインタ・フィールド２０８は、存在ビット・フィールド２０４の値によって決定される、プリフェッチ・バッファ１０４に現在置かれているそのページからの各ラインに対応したプリフェッチ・バッファ・ロケーションに対するポインタを含む。フラッグ・フィールド２１０は、そのページのステータスのような別の目的に利用可能なスペア・ビットを含む。
【００２０】
ＴＣＢタグ１１２がタグ・キャッシュ１０２から排出されるとき、そのＴＣＢタグ１１２のサブセットがメモリ・タグ２１６として低レベル・メモリ１０８に記憶される。図２に示されたメモリ・タグ２１６は、ページ識別フィールド２０２、参照履歴フィールド２１２、およびフラッグ・フィールド２１４を含む。ページ識別フィールド２０２は、ＴＣＢタグ１１２に関連して前述したフィールドと同じであり、それは実アドレスを有する。本発明の実施例では、参照履歴フィールド２１２は、ＴＣＢタグ１１２における履歴ベクトル・フィールド２０６と同じデータを含む。別の実施例では、メモリ・タグ２０６における参照履歴フィールド２１２は、ＴＣＢタグ１１２における履歴ベクトル・フィールド２１６以外にサブセットおよび／または更なるデータを含む。参照履歴フィールド２１２におけるデータは、あるページに対応するタグがタグ・キャッシュ２０２に入れられるとき、そのページからどのラインがプリフェッチされるべきかを決定するために利用されてもよい。フラッグ・フィールド２１４は、他の目的で利用することも可能であるスペア・ビットを含む。図２に関連して説明したＴＣＢタグ１１２およびメモリ・タグ２１６は１つの実装方法の例である。その分野では知られているように、それらは、本発明の真意から逸脱することなくフィールドを追加／削除することによって修正されてもよい。
【００２１】
図３は、本発明の実施例においてプリフェッチを行うための方法の流れ図である。ステップ３０２では、現在キャッシュ１０６にないラインに対する参照の結果として、キャッシュ不在（キャッシュ・ミス）が生じる。キャッシュ不在が生じたとき、その不在のラインがプリフェッチ・バッファ１０４から又は低レベル・メモリ１０８からフェッチされる。ステップ３０４において、その不在のラインに関連付けられたＴＣＢタグ１１２が現在タグ・キャッシュ１０２にあるかどうかを決定するためのチェックが行われる。これは、タグ・キャッシュをアクセスすること、およびその不在のラインに関連付けられたページに適合したページ識別のためのページ識別子フィールド２０２をサーチすることによって行われる。前述のように、そのサーチは、同一クラス内の連想サーチを行うというような標準的なキャッシュ方法を使用して行われる。
【００２２】
不在のラインが低レベル・メモリに記憶されているページに対応したＴＣＢタグ１１２がタグ・キャッシュ１０２に置かれている場合、ステップ３０６が遂行され、その不在のラインをキャッシュ１０６にフェッチする。不在のラインに対応したビットの値に関して、存在ビット・フィールド２０４が調べられる。不在のラインがプリフェッチ・バッファ１０４に置かれていることをそのビット値が表す場合、そのラインはキャッシュ１０６に移動し、プリフェッチ・バッファ１０４から削除される。そのラインは、プリフェッチ・バッファ１０４に対するアクセスがタグ・キャッシュ１０２を介するものであるので、そのラインに対応したビット値を「０」に変更することによって効果的に除去される。更に、不在のラインをプリフェッチ・バッファ１０４から削除するために、ポインタ・フィールド２０８における不在のラインに対応したポインタの値が削除されることもある。それとは別に、その不在のラインが現在プリフェッチ・バッファに置かれていないことを不在のラインに関連したビット値が表す（例えば、ビット値が「０」の値を有する）ことも可能である。この場合、不在のラインは、低レベル・メモリからキャッシュ１０６に直接にフェッチされる。一旦そのラインがキャッシュ１０６内にフェッチされてしまうと、ステップ３１２において処理が終了する。
【００２３】
ステップ３０４において決定されるように、不在のラインが低レベル・メモリに記憶されているページに対応したＴＣＢタグ１１２がタグ・キャッシュ１０２に置かれていない場合、ステップ３０８が遂行され、その不在のラインに関連付けられたメモリ・タグ２１６をタグ・キャッシュ１０２にフェッチし、その不在のラインを含むページに関連したＴＣＢタグ１１２を作成する。メモリ・タグ２１６は低レベル・メモリ１０８又はキャッシュ１０６に置かれてもよい。一旦その不在のラインに関連付けられたＴＣＭタグ１１２がタグ・キャッシュ１０２に加えられると、前述のように、不在のラインを低レベル・メモリ２１６からキャッシュ１０６に直接にフェッチすることによって、ステップ３０６が遂行される。一旦ラインがキャッシュの中にフェッチされてしまうと、ステップ３１２において処理が終了する。別の実施例では、ステップ３０６および３０８を遂行する順序が逆にされ、その結果、先ず、ラインがキャッシュ１０６にフェッチされ、しかる後、タグ・キャッシュ１０２におけるＴＣＢタグ１１２が作成されることになる。更に別の実施例では、ステップ３０６および３０８が同時に実行されてもよい。
【００２４】
ステップ３０６のほかに、一旦ステップ３０８が遂行されてしまうと、不在のラインに関連付けられたラインがキャッシュ１０６又はプリフェッチ・バッファ１０４に未だ含まれていない場合、ステップ３１０が実行され、その不在のラインに関連付けられたラインをプリフェッチ・バッファ１０４にフェッチする。本発明の実施例では、その関連付けられたラインは、ＴＣＢタグ１１２の履歴ベクトル・フィールド２０６内にエントリを有するラインである。プリフェッチすべきラインを決定するためのその分野で知られているいずれのアルゴリズムも、本発明の実施例によって実施可能である。この結果、更なるＴＣＢタグ１１２がタグ・キャッシュ１０２に入れられ、および／または、更なるラインがプリフェッチ・バッファ１０４に入れられることになる。ステップ３１０において、ＴＣＢタグ１１２の存在ビット・フィールド２０４が、プリフェッチ・バッファ１０４に含まれた対応するラインを反映するように更新される。ステップ３１０が完了するとき、ステップ３１２において処理が終了する。
【００２５】
図４は、本発明の実施例によって利用される、タグ・キャッシュに対する置換ロジックの流れ図である。説明を単純化するために、タグ・キャッシュ１０２のための最小使用頻度（ＬＲＵ）置換アルゴリズムを仮定する。その分野で知られているような他のキャッシュ・ロジックを、本発明の実施例が利用することも可能である。ＬＲＵ置換ロジックに関して、ＴＣＢタグ１１２は、それらが最近どの程度参照されたかに従って順序付けられる。ここでは、参照は、ＴＣＢタグ１１２を読み出しまたは修正する作用を含む。ステップ４０２において、メモリ・タグ１１２をフェッチ及び拡張することによって、現在のＴＣＢタグ１１２が作成される。現在のＴＣＢタグ１１２は、順序が最大最近参照頻度の位置においてタグ・キャッシュ１０２に挿入される。それとは別に、ステップ４０２において、既にタグ・キャッシュ１０２に置かれているＴＣＢタグ１１２を読み出すかまたは修正することによって、現在のＴＣＢタグ１１２が作成される。
【００２６】
ステップ４０４において、タグ・キャッシュ１０２内に、現在のＴＣＢタグ１１２のための十分なスペースが存在するかどうかに関する決定が行われる。タグ・キャッシュ１１２内に十分なスペースが存在する場合、ステップ４０６が遂行され、現在のＴＣＢキャッシュ１１２を、それがタグ・キャッシュに未だ存在しない場合、タグ・キャッシュ１０２に挿入し、ステップ４１２において処理が継続する。それとは別に、タグ・キャッシュ１０２において更なるスペースが必要である場合、ステップ４１０が遂行され、最小最近参照頻度のＴＣＢタグ１１２がタグ・キャッシュ１０２から削除される。この削除は、メモリ・タグ２１６を作成するためにＴＣＢタグ１１２を更新すること及びメモリ・タグ２１６を低レベル・メモリ１０８に書き戻すことによって遂行される。更に、現在プリフェッチ・バッファに保持されているＴＣＢタグ１１２によって参照されたこのページからのラインがフリー・スペース・リストに加えられる。本発明の実施例では、書き戻されたメモリ・タグ２１６は、ページ識別子フィールド２０２におけるページ識別子、参照履歴フィールド２１２におけるこのページからの３２個の最大最新参照ラインの参照履歴ベクトル及び上記のフラッグ・ビット・フィールド２１４を含む。
【００２７】
次に、ステップ４１２において、プリフェッチ・バッファ１０４における現在のＴＣＢタグ１１２に関連付けられた現在プリフェッチされているラインのための十分なスペースが存在するかどうかを決定するためのチェックが行われる。現在プリフェッチされているラインのための十分なスペースが存在する場合、ステップ４１４が遂行されて現在プリフェッチされているラインをプリフェッチ・バッファ１０４に挿入する。前述のように、これは、現在プリフェッチされているラインをそのバッファに加えること及び（存在ビット・フィールド２０４における対応ビットを「１」にセットする動作を介して）プリフェッチ・バッファ１０４における新たなラインの存在を表すように及び（ポインタ・フィールド２０８におけるデータを更新する動作を介して）その新たなラインのロケーションを表すように、対応するＴＣＢタグ１１２を更新することによって遂行される。しかる後、ステップ４０８において処理が終了する。それとは別に、ステップ４１２において、現在のＴＣＢタグ１１２に関連付けられた現在プリフェッチされているラインに対して十分なスペースが存在しないことが決定される場合、プリフェッチ・バッファ１０４におけるスペースを空けるためにステップ４１６が遂行される。現在のＴＣＢタグ１１２に関連付けられた現在プリフェッチされているラインに対するプリフェッチ・バッファ１０４に十分なフリー・スペースが存在するまで、ステップ４１６において、ＴＣＢタグ１１２及びプリフェッチ・バッファ１０４における関連付けられたラインが削除される。これは、ＬＲＵアルゴリズムを使用して遂行可能である。しかる後、前述のように、処理がステップ４１４に継続する。
【００２８】
図５は、プリフェッチ・バッファ１０４における記憶装置割り振りの実施例のブロック図である。図５は、プリフェッチ・バッファ１０４にキャッシュ・ラインを保持するための使用可能なロケーションのリストを含むフリー・スペース・リスト５０２の操作及び用法を示す。上述のように、タグ・キャッシュ１０２におけるエントリの削除を通してスペースが空けられるとき、対応するラインによって使用されたロケーションがフリー・スペース・リスト５０２に加えられる。スペースが割り振られるとき、その割り振られたスペースのロケーションがフリー・スペース・リスト５０２から削除される。その分野で知られている任意のデータ構造及び／又は方法、ハードウェア及び／又はソフトウェアがフリー・スペース・リスト５０２を実装するために利用可能である。例えば、フリー・スペース・リスト５０２は、連携したリスト及び関連のロジックによって実装することが可能である。
【００２９】
本発明の実施例は、詳述したものとは異なるサイズのページ、ライン、タグ、及びキャッシュを含むシステムによっても利用可能である。更に、本発明の実施例は、特定のレベルのキャッシュ（例えば、前述のようなＬ２キャッシュ）には限定されず、如何なるレベルのストレージ・ハイアラーキにも適用可能である。
【００３０】
本発明の実施例は、プリフェッチ・バッファにおけるプリフェッチされたラインのロケーションがタグ・キャッシュ内のタグ・エントリにおけるポインタによって指定されることを含む。この設計の利点は、すべてのサーチが、タグを保持した構造に集中していることであり、それによって、単一の操作に対する複数の連想ルックアップを回避している。この結果、関連付けられたタグ及びキャッシュ・ラインの両方を見つける必要があるという事実にもかかわらず、同じページからのどのような他のラインがプリフェッチ・バッファに存在しれも、プリフェッチ・バッファにあるキャッシュをアクセスしようとするときに単一のサーチしか必要としない。更に、タグがタグ・キャッシュから消去され、メモリに書き戻されるとき、プリフェッチ・バッファにおけるそれの関連付けられたラインのためのスペースがフリーにされる。これは、最近入れられたタグが、それらの関連付けられたプリフェッチされたラインに対してスペースを保証されるということを確保する助けとなる。
【００３１】
上述のように、本発明の実施例は、コンピュータ実装のプロセス及びそれらのプロセスを実施するための装置という形態で具現化することが可能である。本発明の実施例は、フロッピ・ディスク、ＣＤ−ＲＯＭ、又は他の任意のコンピュータ可読記憶媒体のような有形の媒体において具現化することも可能である。なお、この場合、コンピュータ・プログラム・コードがコンピュータにロードされて実行されるとき、そのコンピュータは本発明を実施するための装置となる。本発明の実施例は、例えば、記憶媒体に記憶され、コンピュータによってロード及び／又は実行されようとも、或いは、電気的配線又はケーブルのような何らかの伝送媒体、光ファイバ、或いは電磁的放射を通して伝送されようとも、コンピュータ・プログラム・コードの形態で具現化することが可能である。なお、その場合、コンピュータ・プログラム・コードがコンピュータによってロード及び実行されるとき、そのコンピュータは本発明を実施するための装置となる。汎用マイクロプロセッサ上で具現化されるとき、コンピュータ・プログラム・コードのセグメントが特定の論理回路を作るようにそのマイクロプロセッサを構成する。
【００３２】
実施例に関連して本発明を説明したが、本発明の範囲から逸脱することなくそれらの素子に対して、種々の変更を行い得ること及び均等物を代用し得ることは、当業者には明らかであろう。更に、本発明の本質的な範囲から逸脱することなく、特定の状況または本発明の教示事項にとって重要な状況に適応するように多くの修正を施すことも可能である。従って、本発明は、本発明を実行することを意図された最良のモードとして開示された特定の実施例に限定されず、「特許請求の範囲」の記載の範囲にあるすべての実施例を含むということに留意すべきである。更に、第１、第２等の用語の使用は何らかの順序又は重要性を示すものではなく、第１、第２等の用語はある素子と他の素子とを区別するために使用される。
【図面の簡単な説明】
【００３３】
【図１】本発明の実施例に従って、プリフェッチ・バッファ及びタグ・キャッシュを含むキャッシュ・システムのブロック図である。
【図２】本発明の実施例におけるタグの内容を示す図である。
【図３】本発明の実施例におけるプリフェッチを行うための方法の流れ図を示す。
【図４】本発明の実施例によって利用可能なタグ・キャッシュのための置換ロジックの流れ図を示す。
【図５】プリフェッチ・バッファにおける記憶装置割り振りの実施例のブロック図である。
【図１】
2005302034.tif 000003
【図２】
2005302034.tif 000004
【図３】
2005302034.tif 000005
【図４】
2005302034.tif 000006
【図５】
2005302034.tif 000007