JP2005302034A - メモリを管理するためのシステムおよび方法 - Google Patents

メモリを管理するためのシステムおよび方法 Download PDF

Info

Publication number
JP2005302034A
JP2005302034A JP2005115147A JP2005115147A JP2005302034A JP 2005302034 A JP2005302034 A JP 2005302034A JP 2005115147 A JP2005115147 A JP 2005115147A JP 2005115147 A JP2005115147 A JP 2005115147A JP 2005302034 A JP2005302034 A JP 2005302034A
Authority
JP
Japan
Prior art keywords
tag
cache
line
absent
identifier
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.)
Granted
Application number
JP2005115147A
Other languages
English (en)
Other versions
JP4028875B2 (ja
Inventor
Peter Franaszek
ピーター・フラナスゼック
Luis A Lastras
ルイス・エー・ラストラス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2005302034A publication Critical patent/JP2005302034A/ja
Application granted granted Critical
Publication of JP4028875B2 publication Critical patent/JP4028875B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching

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)

Abstract

【課題】
メモリを管理するためのシステムおよび方法を提供する。
【解決手段】
本発明のメモリ管理のためのシステムは、メモリ装置とコミュニケーションを行うタグ制御のバッファを含む。メモリ装置は、複数の個々にアドレス可能なラインに分割された複数のページを含む。タグ制御のバッファはプリフェッチ・バッファを含み、プリフェッチ・バッファはメモリ装置からの個々にアドレス可能な少なくとも1つのラインを含む。タグ制御されたバッファは、プリフェッチ・バッファとコミュニケーションを行うタグ・キャッシュも含む。タグ・キャッシュは複数のタグを含み、各タグはメモリ装置におけるページの1つと関連付けられ、プリフェッチ・バッファにおけるラインの少なくとも1つに対するポインタを含む。プリフェッチ・バッファ内のラインに対するアクセスはタグ・キャッシュによって制御される。
【選択図】 図1

Description

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

Claims (29)

  1. 複数の個々にアドレス可能なラインに分割された複数のページを含むメモリ装置とコミュニケーションを行うタグ制御のバッファを含み、
    前記タグ制御のバッファが、
    前記メモリ装置からの前記個々にアドレス可能なラインの少なくとも1つを含むプリフェッチ・バッファと、
    複数のタグを含み、前記プリフェッチ・バッファとコミュニケーションを行うタグ・キャッシュと、
    を含み、前記タグの各々が前記メモリ装置におけるページの各々に関連付けられ、前記プリフェッチ・バッファにおけるラインの少なくとも1つに対するポインタを含み、前記プリフェッチ・バッファにおけるラインに対するアクセスが前記タグ・キャッシュによって制御される、メモリ管理のためのシステム。
  2. 前記アクセスが、前記プリフェッチ・バッファに新しいラインを挿入すること、前記プリフェッチ・バッファから前記ラインの1つを削除すること、及び前記プリフェッチ・バッファにおける前記ラインの1つを読み出すことの少なくとも1つを含む、請求項1に記載のシステム。
  3. 前記タグ制御のバッファが前記タグ・キャッシュからのコマンドに応答して前記プリフェッチ・バッファにおけるラインの1つをキャッシュ装置に送る、請求項1に記載のシステム。
  4. 前記プリフェッチ・バッファがランダム・アクセス・メモリによって具現化される、請求項1に記載のシステム。
  5. 前記タグが前記タグ・キャッシュから削除されたことに応答して、前記タグ・キャッシュにおけるタグの1つに対応したプリフェッチ・バッファにおけるすべてのラインが削除される、請求項1に記載のシステム。
  6. 前記システムは、前記タグ・キャッシュにおけるタグおよび前記プリフェッチ・バッファにおけるラインに対する置換アルゴリズムを具現化するための命令を含み、
    前記タグ・キャッシュに新たなタグを挿入するとき、前記新たなタグに対するスペースおよび前記新たなタグに関連付けられたプリフェッチ・ラインのためのスペースを作るに十分な数のタグが除去される、請求項1に記載のシステム。
  7. 前記除去されたタグが低レベル・メモリに書き戻される、請求項6に記載のシステム。
  8. 前記除去されたタグが低レベル・メモリに書き戻され、前記低レベル・メモリにおけるタグがページ識別子フィールド及び参照履歴フィールドを含む、請求項6に記載のシステム。
  9. 前記低レベル・メモリにおけるタグがフラッグ・フィールドを更に含む、請求項8に記載のシステム。
  10. 前記システムは、前記プリフェッチ・バッファにおけるラインが挿入、削除、修正、または参照されたことに応答して、前記タグ・キャッシュにおけるタグを更新する手段を更に含む、請求項1に記載のシステム。
  11. 前記システムは、更に、
    不在ページ識別子及び不在ライン識別子を含む不在通知をキャッシュ装置から受ける手段と、
    前記プリフェッチ・バッファにおけるラインの1つが前記不在ページ識別子及び不在ライン識別子に対応するかどうかを決定するために前記タグ・キャッシュをアクセスする手段と、
    前記プリフェッチ・バッファにおける前記不在ページ識別子及び前記不在ライン識別子に対応するラインを位置指定したことに応答して、前記不在ページ識別子及び前記不在ライン識別子に対応するラインを前記プリフェッチ・バッファから前記キャッシュ装置に伝送する手段と、
    前記伝送を反映するように前記タグ・キャッシュを更新する手段と、
    を含む、請求項1に記載のシステム。
  12. 前記タグ・キャッシュにおける各タグが、ページ識別子フィールド、存在ビット・フィールド、履歴ベクトル・フィールド、及びポインタ・フィールドを含む、請求項1に記載のシステム。
  13. 前記タグ・キャッシュにおける各タグがフラッグ・フィールドを更に含む、請求項12に記載のシステム。
  14. 少なくとも1つのラインを含むランダム・アクセス・メモリであって、各ラインがメモリ装置におけるページに関連付けられ、前記ランダム・アクセス・メモリにおけるスペースがライン毎に割り振られる、ランダム・アクセス・メモリと、
    複数のタグを含む第1キャッシュ装置であって、各タグが前記メモリ装置におけるページの1つに対応し、前記ページに関連付けられた少なくとも1つのラインの前記ランダム・アクセス・メモリにおけるロケーションを表す、第1キャッシュ装置と、
    を含む、メモリ管理のためのシステム。
  15. 前記第1キャッシュ装置からのコマンドに応答して、前記ランダム・アクセス・メモリにおけるラインの1つを第2キャッシュ・メモリに送るための命令を含むコンピュータ・プロセッサを更に含む、請求項14に記載のシステム。
  16. 前記タグがキャッシュから削除されたことに応答して、前記第1キャッシュ装置におけるタグの1つに対応する前記ランダム・アクセス・メモリにおけるすべてのラインが削除される、請求項14に記載のシステム。
  17. 前記第1キャッシュ装置におけるタグ及び前記ランダム・アクセス・メモリにおけるラインに対する置換アルゴリズムを具現化するための命令を含むコンピュータ・プロセッサを更に含み、
    前記第1キャッシュ装置に新たなタグを挿入するとき、前記新たなタグのためのスペース及び前記新たなタグに関連付けられたプリフェッチ・ラインのためのスペースを作るに十分な数のタグが除去される、請求項14に記載のシステム。
  18. 前記除去されたタグが低レベル・メモリに書き戻される、請求項17に記載のシステム。
  19. 前記除去されたタグが低レベル・メモリに書き戻され、前記低レベル・メモリにおけるタグがページ識別子フィールド及び参照履歴フィールドを含む、請求項17に記載のシステム。
  20. 前記低レベル・メモリにおけるタグがフラッグ・フィールドを更に含む、請求項19に記載のシステム。
  21. 前記ランダム・アクセス・メモリにおけるラインが挿入、削除、修正、または参照されたことに応答して、前記第1キャッシュ装置におけるタグを更新するための方法を実施するための命令を含むコンピュータ・プロセッサを更に含む、請求項14に記載のシステム。
  22. 前記第1キャッシュ装置における各タグが、ページ識別子フィールド、存在ビット・フィールド、履歴ベクトル・フィールド、及びポインタ・フィールドを含む、請求項14に記載のシステム。
  23. 前記第1キャッシュ装置における各タグがフラッグ・フィールドを更に含む、請求項22に記載のシステム。
  24. 不在ページ識別子及び不在ライン識別子を含む不在通知を第1キャッシュ装置から受けるステップと、
    ランダム・アクセス・メモリにおけるラインが前記不在ページ識別子及び前記不在ライン識別子に対応するかどうかを決定するために第2キャッシュ装置をアクセスするステップであって、前記ランダム・アクセス・メモリがメモリ装置におけるページに関連付けられた少なくとも1つのラインを含み、各々が前記メモリ装置におけるページの1つに対応する複数のタグを前記第2キャッシュ装置が含み、各タグが当該タグに対応するページに関連付けられた前記少なくとも1つのラインの前記ランダム・アクセス・メモリにおけるロケーションを表す、ステップと、
    前記アクセスの結果、前記ランダム・アクセス・メモリにおける前記不在ページ識別子及び前記不在ライン識別子に対応するラインを位置指定したことに応答して、前記不在ページ識別子及び前記不在ライン識別子に対応するラインを前記ランダム・アクセス・メモリから前記第1キャッシュ装置に伝送するステップと、
    前記伝送を反映するように前記不在ページ識別子に対応する第2キャッシュ装置におけるタグを更新するステップと、
    を含む、メモリ管理のための方法。
  25. メモリ管理のための方法であって、
    不在ページ識別子及び不在ライン識別子を含む不在通知を要求者から受けるステップと、
    前記不在ページ識別子に対応するタグがタグ・キャッシュにあるかどうかを決定するステップであって、前記タグ・キャッシュが複数のタグを含み、各タグがプリフェッチ・バッファにおけるラインに対する少なくとも1つのポインタを含み、前記タグ・キャッシュが少なくとも1つのプリフェッチ・ラインを指定する、ステップと、
    前記不在ページ識別子に対応するタグを位置指定したことに応答して、前記不在ライン識別子に対応するラインを前記要求者に伝送し、前記伝送を反映するように前記不在ページ識別子に対応するタグを更新するステップと、
    前記不在ページ識別子に対応するタグを位置指定しなかったことに応答して、前記不在ページ識別子に対応する新たなタグを前記タグ・キャッシュに挿入し、前記不在ライン識別子に対応するラインを前記要求者に伝送し、前記新たなタグに含まれたプリフェッチ・ラインを前記プリフェッチ・バッファに挿入するステップと、
    を含み、
    前記挿入するステップが前記タグ・キャッシュを介して遂行される、方法。
  26. 前記不在ライン識別子に対応するラインをメモリ装置から検索するステップを更に含む、請求項25に記載の方法。
  27. 前記不在ライン識別子に対応するラインを前記プリフェッチ・バッファから検索するステップを更に含み、
    前記検索するステップが前記タグ・キャッシュを介するステップである、請求項25に記載の方法。
  28. 前記要求者がキャッシュ装置である、請求項25に記載の方法。
  29. 処理回路による読み取りが可能な記憶媒体に記憶され、前記処理回路による実行のための命令を含む、キャッシュ・メモリ管理のためのコンピュータ・プログラムであって、
    不在ページ識別子及び不在ライン識別子を含む不在通知を要求者から受けるステップと、
    前記不在ページ識別子に対応するタグがタグ・キャッシュにあるかどうかを決定するステップであって、前記タグ・キャッシュが複数のタグを含み、各タグがプリフェッチ・バッファにおけるラインに対する少なくとも1つのポインタを含み、前記タグ・キャッシュが少なくとも1つのプリフェッチ・ラインを指定する、ステップと、
    前記不在ページ識別子に対応するタグを位置指定したことに応答して、前記不在ライン識別子に対応するラインを前記要求者に伝送し、前記伝送を反映するように前記不在ページ識別子に対応するタグを更新するステップと、
    前記不在ページ識別子に対応するタグを位置指定しなかったことに応答して、前記不在ページ識別子に対応する新たなタグを前記タグ・キャッシュに挿入し、前記不在ライン識別子に対応するラインを前記要求者に伝送し、前記新たなタグに含まれたプリフェッチ・ラインを前記プリフェッチ・バッファに挿入するステップであって、前記挿入が前記タグ・キャッシュを介して遂行される、ステップと、
    をコンピュータに実行させる、コンピュータ・プログラム。
JP2005115147A 2004-04-15 2005-04-12 メモリを管理するためのシステムおよび方法 Expired - Fee Related JP4028875B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/709,128 US7386679B2 (en) 2004-04-15 2004-04-15 System, method and storage medium for memory management

Publications (2)

Publication Number Publication Date
JP2005302034A true JP2005302034A (ja) 2005-10-27
JP4028875B2 JP4028875B2 (ja) 2007-12-26

Family

ID=35097659

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005115147A Expired - Fee Related JP4028875B2 (ja) 2004-04-15 2005-04-12 メモリを管理するためのシステムおよび方法

Country Status (4)

Country Link
US (2) US7386679B2 (ja)
JP (1) JP4028875B2 (ja)
CN (1) CN100392620C (ja)
TW (1) TWI307465B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013529815A (ja) * 2010-06-23 2013-07-22 インテル・コーポレーション メモリアクセスを正確に予測するための、領域に基づく技術
JP2019164497A (ja) * 2018-03-19 2019-09-26 株式会社東芝 管理装置、情報処理装置、管理方法、およびプログラム

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7010655B1 (en) * 2003-03-24 2006-03-07 Veritas Operating Corporation Locking and memory allocation in file system cache
US7624235B2 (en) * 2006-11-30 2009-11-24 Apple Inc. Cache used both as cache and staging buffer
US7877537B2 (en) * 2006-12-15 2011-01-25 Microchip Technology Incorporated Configurable cache for a microprocessor
CN101558390B (zh) * 2006-12-15 2014-06-18 密克罗奇普技术公司 用于微处理器的可配置高速缓冲存储器
US7966457B2 (en) * 2006-12-15 2011-06-21 Microchip Technology Incorporated Configurable cache for a microprocessor
US9208095B2 (en) * 2006-12-15 2015-12-08 Microchip Technology Incorporated Configurable cache for a microprocessor
US7539799B2 (en) * 2007-02-08 2009-05-26 Dot Hill Systems Corp. Method and apparatus for identifying enclosures and devices
US8376815B1 (en) * 2008-04-30 2013-02-19 Perdue Holdings, Inc. Method and apparatus for electrical stimulation of meat
US8364898B2 (en) * 2009-01-23 2013-01-29 International Business Machines Corporation Optimizing a cache back invalidation policy
US9165021B2 (en) * 2009-04-14 2015-10-20 International Business Machines Corporation Managing database object placement on multiple storage devices
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
EP2689330B1 (en) * 2011-03-25 2022-12-21 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
JP2013008094A (ja) * 2011-06-22 2013-01-10 Sony Corp メモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体
CN102662690B (zh) * 2012-03-14 2014-06-11 腾讯科技(深圳)有限公司 应用程序启动方法和装置
US9092341B2 (en) 2012-07-10 2015-07-28 International Business Machines Corporation Methods of cache preloading on a partition or a context switch
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9645934B2 (en) 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
CN107810491B (zh) * 2015-05-27 2022-02-01 谷歌有限责任公司 用于管理并控制存储器高速缓存的方法和系统
US10565121B2 (en) * 2016-12-16 2020-02-18 Alibaba Group Holding Limited Method and apparatus for reducing read/write contention to a cache
US11762777B2 (en) 2021-03-31 2023-09-19 Advanced Micro Devices, Inc. Method and apparatus for a dram cache tag prefetcher
US11693779B2 (en) 2021-04-30 2023-07-04 International Business Machines Corporation Prefetch of random data using application tags

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4807110A (en) * 1984-04-06 1989-02-21 International Business Machines Corporation Prefetching system for a cache having a second directory for sequentially accessed blocks
JPS6154547A (ja) 1984-08-24 1986-03-18 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 3レベルの階層メモリを備えたデ−タ処理システム
US4658351A (en) * 1984-10-09 1987-04-14 Wang Laboratories, Inc. Task control means for a multi-tasking data processing system
US5423011A (en) * 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
US5361391A (en) * 1992-06-22 1994-11-01 Sun Microsystems, Inc. Intelligent cache memory and prefetch method based on CPU data fetching characteristics
US5715421A (en) * 1992-10-16 1998-02-03 Seiko Epson Corporation Apparatus and method of addressing paged mode memory including adjacent page precharging
US5537573A (en) * 1993-05-28 1996-07-16 Rambus, Inc. Cache system and method for prefetching of data
US5544342A (en) * 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
US5732409A (en) * 1994-03-21 1998-03-24 Legend Research Limited Caching disk controller implemented by hardwired logic
US5761706A (en) * 1994-11-01 1998-06-02 Cray Research, Inc. Stream buffers for high-performance computer memory system
JPH08161230A (ja) 1994-12-05 1996-06-21 Oki Electric Ind Co Ltd オンデマンドページングにおける先読み方法
EP0752644A3 (en) * 1995-07-07 2001-08-22 Sun Microsystems, Inc. Memory management unit incorporating prefetch control
US5996071A (en) * 1995-12-15 1999-11-30 Via-Cyrix, Inc. Detecting self-modifying code in a pipelined processor with branch processing by comparing latched store address to subsequent target address
US6119222A (en) * 1996-12-23 2000-09-12 Texas Instruments Incorporated Combined branch prediction and cache prefetch in a microprocessor
US6182201B1 (en) * 1997-04-14 2001-01-30 International Business Machines Corporation Demand-based issuance of cache operations to a system bus
US5887151A (en) * 1997-07-10 1999-03-23 Emc Corporation Method and apparatus for performing a modified prefetch which sends a list identifying a plurality of data blocks
US6012106A (en) * 1997-11-03 2000-01-04 Digital Equipment Corporation Prefetch management for DMA read transactions depending upon past history of actual transfer lengths
US6535961B2 (en) * 1997-11-21 2003-03-18 Intel Corporation Spatial footprint prediction
US6134643A (en) * 1997-11-26 2000-10-17 Intel Corporation Method and apparatus for cache line prediction and prefetching using a prefetch controller and buffer and access history
US6012134A (en) * 1998-04-09 2000-01-04 Institute For The Development Of Emerging Architectures, L.L.C. High-performance processor with streaming buffer that facilitates prefetching of instructions
US6606617B1 (en) * 1998-09-24 2003-08-12 International Business Machines Corporation Optimized technique for prefetching LOB table space pages
US6138188A (en) * 1998-09-28 2000-10-24 Mentor Arc Inc. Buffer management device and method for improving buffer usage and access performance in data processing system
US6286075B1 (en) * 1998-11-16 2001-09-04 Infineon Technologies Ag Method of speeding up access to a memory page using a number of M page tag registers to track a state of physical pages in a memory device having N memory banks where N is greater than M
US6314494B1 (en) * 1999-04-15 2001-11-06 Agilent Technologies, Inc. Dynamically size configurable data buffer for data cache and prefetch cache memory
JP3710341B2 (ja) 1999-09-02 2005-10-26 富士通株式会社 キャッシュパージ制御機構を有するプロセッサ
US6412043B1 (en) 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6470437B1 (en) * 1999-12-17 2002-10-22 Hewlett-Packard Company Updating and invalidating store data and removing stale cache lines in a prevalidated tag cache design
US6598123B1 (en) * 2000-06-28 2003-07-22 Intel Corporation Snoop filter line replacement for reduction of back invalidates in multi-node architectures
US6678795B1 (en) * 2000-08-15 2004-01-13 International Business Machines Corporation Method and apparatus for memory prefetching based on intra-page usage history
US20020089983A1 (en) 2000-12-18 2002-07-11 Zarlink Semiconductor V.N. Inc. Switching database cache management system
US6687794B2 (en) * 2001-10-18 2004-02-03 International Business Machines Corporation Prefetching mechanism for data caches
AU2002352742A1 (en) * 2001-11-16 2003-06-10 Sun Microsystems, Inc. Coherence message prediction mechanism and multiprocessing computer system employing the same
US7073030B2 (en) * 2002-05-22 2006-07-04 International Business Machines Corporation Method and apparatus providing non level one information caching using prefetch to increase a hit ratio
DE10234990B4 (de) * 2002-07-31 2007-03-29 Advanced Micro Devices, Inc., Sunnyvale Hostcontroller, Verfahren zum Betreiben, zugehöriges Southbridgebauelement und Computersystem zur Steuerung der Ersetzung im voraus geholter Deskriptoren in einem Cache
US7133995B1 (en) * 2002-12-16 2006-11-07 Advanced Micro Devices, Inc. Dynamic page conflict prediction for DRAM
US7266676B2 (en) * 2003-03-21 2007-09-04 Analog Devices, Inc. Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
US7099999B2 (en) * 2003-09-30 2006-08-29 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013529815A (ja) * 2010-06-23 2013-07-22 インテル・コーポレーション メモリアクセスを正確に予測するための、領域に基づく技術
KR101485651B1 (ko) * 2010-06-23 2015-01-22 인텔 코포레이션 메모리 액세스를 정확하게 예측하기 위한 영역 기반 기술
US9418011B2 (en) 2010-06-23 2016-08-16 Intel Corporation Region based technique for accurately predicting memory accesses
JP2019164497A (ja) * 2018-03-19 2019-09-26 株式会社東芝 管理装置、情報処理装置、管理方法、およびプログラム

Also Published As

Publication number Publication date
US20080201530A1 (en) 2008-08-21
US7386679B2 (en) 2008-06-10
CN100392620C (zh) 2008-06-04
CN1744058A (zh) 2006-03-08
US7783837B2 (en) 2010-08-24
TWI307465B (en) 2009-03-11
JP4028875B2 (ja) 2007-12-26
US20050235115A1 (en) 2005-10-20
TW200615752A (en) 2006-05-16

Similar Documents

Publication Publication Date Title
JP4028875B2 (ja) メモリを管理するためのシステムおよび方法
KR100389549B1 (ko) 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조
US7493452B2 (en) Method to efficiently prefetch and batch compiler-assisted software cache accesses
US6584549B2 (en) System and method for prefetching data into a cache based on miss distance
US20180300258A1 (en) Access rank aware cache replacement policy
US7657726B2 (en) Context look ahead storage structures
JP3888508B2 (ja) キャッシュ・データ管理方法
US8935478B2 (en) Variable cache line size management
US8909871B2 (en) Data processing system and method for reducing cache pollution by write stream memory access patterns
US8140759B2 (en) Specifying an access hint for prefetching partial cache block data in a cache hierarchy
US6782454B1 (en) System and method for pre-fetching for pointer linked data structures
US8924648B1 (en) Method and system for caching attribute data for matching attributes with physical addresses
US6578111B1 (en) Cache memory system and method for managing streaming-data
US6668307B1 (en) System and method for a software controlled cache
US20100217937A1 (en) Data processing apparatus and method
US7716424B2 (en) Victim prefetching in a cache hierarchy
US20100011165A1 (en) Cache management systems and methods
US6687807B1 (en) Method for apparatus for prefetching linked data structures
US5926841A (en) Segment descriptor cache for a processor
US6598124B1 (en) System and method for identifying streaming-data
WO2002027498A2 (en) System and method for identifying and managing streaming-data
US8176254B2 (en) Specifying an access hint for prefetching limited use data in a cache hierarchy
US8484423B2 (en) Method and apparatus for controlling cache using transaction flags
WO2002027481A2 (en) System and method for pre-fetching for pointer linked data structures
CN118020064A (zh) 具有伪lru补充年龄信息的重新引用区间预测(rrip)

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070717

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070920

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: 20071009

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071012

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101019

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101019

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111019

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121019

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121019

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131019

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees