JPH07129471A - 主メモリ・プリフェッチ・キャッシュを含むコンピュータ装置とその作動方法 - Google Patents

主メモリ・プリフェッチ・キャッシュを含むコンピュータ装置とその作動方法

Info

Publication number
JPH07129471A
JPH07129471A JP5339887A JP33988793A JPH07129471A JP H07129471 A JPH07129471 A JP H07129471A JP 5339887 A JP5339887 A JP 5339887A JP 33988793 A JP33988793 A JP 33988793A JP H07129471 A JPH07129471 A JP H07129471A
Authority
JP
Japan
Prior art keywords
cache
main memory
prefetch
memory
row
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.)
Pending
Application number
JP5339887A
Other languages
English (en)
Inventor
William J Kass
ジェイ.キャス ウィリアム
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.)
NCR International Inc
NCR Voyix Corp
Original Assignee
AT&T Global Information Solutions Co
AT&T Global Information Solutions International Inc
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 AT&T Global Information Solutions Co, AT&T Global Information Solutions International Inc filed Critical AT&T Global Information Solutions Co
Publication of JPH07129471A publication Critical patent/JPH07129471A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 主メモリ・プリフェッチ・キャッシュを備
え、オーバーヘッドを減少する。 【構成】 メモリ制御装置は、プロセッサが要求した現
在行がプリフェッチ・キャッシュ内に保存してあるかを
調べる制御回路を含み、現在行が保存してある場合には
メモリ制御装置はプリフェッチ・キャッシュから現在行
を取り出し、現在行をプロセッサに提供する。次の行を
主メモリから取り出してプリフェッチ・キャッシュ内の
現在行を上書きする。逆にプリフェッチ・キャッシュが
プロセッサの要求する現在行を含まないとメモリ制御装
置が判断した場合、現在行は主メモリから取り出しプロ
セッサへ提供する。次の行は主メモリから取り出し、キ
ャッシュ内で最低使用頻度行が占有していたレジスタ番
地のプリフェッチ・キャッシュ内に保存する。また、プ
リフェッチ・キャッシュ内部に保存されている最低使用
頻度行を決定するための回路を含む。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般にデジタルコンピュ
ータに関し、より特定すれば該コンピュータのキャッシ
ュ・メモリに関する。
【0002】
【従来の技術】現代のコンピュータは通常その装置に一
般に関連のある計算および論理演算を実行するため1つ
またはそれ以上のプロセッサを含む。プロセッサが実行
すべき命令は主メモリ内に保存される。コンピュータ上
でプログラムを走らせるまたは実行すると、その命令が
主メモリから呼び出されてプロセッサへ送り出され、こ
こで実行される。この過程は貴重な時間を消費する。
【0003】プロセッサにそのプロセッサで使用するた
めのキャッシュメモリを提供することがプロセッサで命
令を実行する速度を効率的に加速する1つの方法である
ことは公知である。このようなキャッシュ・メモリは主
メモリの大きさと比較すると比較的小さなメモリであ
る。しかし、このキャッシュメモリは主メモリにおける
アクセス時間より大幅に高速なアクセス時間を示す。キ
ャッシュメモリはもっとも頻繁に使用される命令および
データへ相対的に迅速なアクセスを提供することにな
る。
【0004】たとえば、典型的なパーソナル・コンピュ
ータ用アプリケーションプログラムの場合、主メモリは
1ないし64MBまたはそれ以上の比較的低速(アクセ
ス時間80ナノ秒)なダイナミック・ランダムアクセス
・メモリ(DRAM)よりなる。しかし、マイクロプロ
セッサに付随するキャッシュ・メモリは通常8キロバイ
トから256キロバイトまたはそれ以上の大きさの高速
な(アクセス時間20ナノ秒程度)スタティック・ラン
ダムアクセス・メモリ(SRAM)よりなる。SRAM
はDRAMと比較して非常に高価であるためコンピュー
タ装置は主メモリを完全に高速SRAMで構成するよう
には設計しない。マイクロプロセッサが実行のために主
メモリから命令およびデータを呼び出すと、これらは比
較的小さいが高速のキャッシュ内にも格納される。つま
りマイクロプロセッサはもっとも最近実行した命令およ
びデータを必要とした場合これらの命令およびデータに
容易にアクセスできる。マイクロプロセッサが同じ命令
またはデータを2度目に使用する必要がある場合、低速
主メモリに対し比較的低速なメモリ・サイクルを起動し
て情報をここから取り出すのではなく、高速のプロセッ
サ・キャッシュからその情報を迅速に取り出すことが出
来るのである。
【0005】インテル80386など幾つかのマイクロ
プロセッサは、インテル82385キャッシュコントロ
ーラなどのキャッシュ制御装置により80386マイク
ロプロセッサのローカルバスに密に接続したローカル・
プロセッサ・キャッシュを用いるように設計してある。
その他のマイクロプロセッサたとえばインテル8048
6などではマイクロプロセッサ・チップそれ自体の中に
組み込まれた小さい8Kのキャッシュを使用する。さら
に別のマイクロプロセッサたとえばモトローラ6804
0などでは、1つのキャッシュを実行コードキャッシン
グに使用し別のキャッシュをデータキャッシングに使用
する。簡単にするため、コード行とデータ行の両方をあ
わせて命令と称することにする。
【0006】実行コードとデータの行のどれがキャッシ
ュ内に保存されるかを正確に追跡するのは明らかに重要
なことである。1つの技術として、いわゆるタグ(TA
G)を含むキャッシュを用いてキャッシュ内に現在は位
置されている命令またはデータの要求を識別することが
出来る。キャッシュは現在キャッシュ内に保存されてい
る特定の情報のアドレスと対応するタグアドレスをを保
存するためのメモリ空間を含む。マイクロプロセッサは
アドレスの形態で命令またはデータの要求を生成する。
この情報は主メモリ内に保存されるが、使用頻度が高い
ためキャッシュ内にも保存されていることがある。マイ
クロプロセッサが生成したアドレスがキャッシュの保存
している必要な情報のアドレスであるかを決定するため
にタグを使用する。これを実行するには、マイクロプロ
セッサの生成したアドレスをタグアドレスと比較する。
マイクロプロセッサからの要求で生成されたアドレスが
タグアドレスと合致した場合、キャッシュは要求された
情報を含んでおり、タグのヒツトが起こり、マイクロプ
ロセッサは要求した情報を直接ローカル・プロセッサ・
キャッシュから取得できる。しかし、マイクロプロセッ
サの生成したアドレスがどのタグアドレスとも適合しな
い場合、タグミスが発生する。この場合要求された情報
はローカル・プロセッサ・キャッシュ内には含まれてお
らず、主メモリへのメモリ・サイクルを生成して要求さ
れた情報をここから取得しなければならない。メモリ・
サイクルは貴重な時間を消費することになる。
【0007】マイクロプロセッサは命令およびデータを
逐次処理してゆくので、キャッシュの内容が変化する。
もっとも頻繁に使用されたアドレスも変化する。こうし
た理由から、キャッシュが使用頻度の高い有効情報で満
杯となるような状況も有り得る。しかしその情報は頻繁
に使用されている情報に対応しないこともある。
【0008】この問題を解決するため、最低使用頻度
(LRU)の論理を生成してキャッシュ内の情報を最新
かつ有効なものとすることが行なわれた。これを行なう
ためには、LRU論理が最低使用頻度キャッシュアドレ
スの番地を追跡する。キャッシュミスが発生すると(ど
のタグアドレスも合致しなかった)、主メモリのアクセ
スが起こる。主メモリは要求された情報をマイクロプロ
セッサに提供し、その時点でキャッシュ内にもこの情報
が保存され対応するタグアドレスがキャッシュ内のタグ
番地の1つに保存される。LRU論理はキャッシュ内の
どの特定のタグ番地を要求のあった最新のアドレスで上
書きするかさらにどれがキャッシュミスを引き起こした
かをを決定する。置き換えの起こるタグ番地はLRU論
理が最低使用頻度タグアドレスを含むと決定したタグ番
地である。
【0009】端的には、キャッシュは一定のアドレスを
有することが出来る。この場合、キャッシュアドレスが
固定されているので、どのタグアドレスが最低使用頻度
かを追跡する必要がない。固定タグアドレスに対応する
情報それ自体が更新できる唯一の情報である。この条件
下では特定のタグ番地でキャッシュヒツトが発生したか
しないかを決定するための検査はタグアドレスがハード
ワイヤ配線されているので簡単である。これの対極に
は、どのタグ番地もマイクロプロセッサの生成したあら
ゆる番地を有することの出来るようなキャッシュ構造が
ある。この条件下だと、タグアドレスヒツトの決定には
キャッシュ内に保存されているタグアドレスを全部読み
取りそれぞれのタグアドレスについて保存してあるタグ
アドレスとマイクロプロセッサの要求した特定アドレス
の間で合致が起こったかを検証する必要がある。後者の
形式のキャッシュは「内容アドレス記憶キャッシュ」と
称する。
【0010】この時点でマイクロプロセッサが主メモリ
内に保存されている命令をどのように実行するのか概略
するのが有益である。コンピュータ・システムにおい
て、プロセッサは主メモリ内に配置された一連の命令ワ
ードから命令を取得する。一連の命令はそれぞれ一連の
アドレスで順序よく並べてメモリ内に配置してある。一
連の命令はシリアルモードにあるプロセッサが実行し、
アドレスの順番に1つづつ命令を取り出して行き、分岐
命令が主メモリ内のどこか別の場所に保存してある新し
いコード部分へジャンプさせるか「呼び出し」または
「割り込み」命令が新しいコード部分に一時的にジャン
プさせるまで続く。後者の処理では呼び出しまたは割り
込みが発生したコードの位置に戻って流れが続き、それ
以降の命令の実行を継起する。
【0011】分岐命令または呼び出し命令を実行する
と、新しい命令をメモリから取り出すまで処理が停止す
る。この時間間隔の間待機するマイクロプロセッサが消
費する時間はマイクロプロセッサの効率的な実行速度に
とって重要である。現在のマイクロプロセッサはコード
の次の行をプリフェッチ(先読み)しておくメモリを含
んでいる。この方式だと、マイクロプロセッサの命令バ
ッファは常に満杯である。しかし、この例は分岐命令ま
たは呼びだし命令からの復帰命令の間主メモリをアクセ
スして消費するシステムのオーバヘッド時間を減少させ
ることはない。言い換えれば、前述の問題は解決されな
い。残念ながらプリフェッチ行の大きさを増加させると
データバスの負荷が増大しその他の作業に遅延を起こす
ことがある。
【0012】より特定すれば、マイクロプロセッサの命
令キューはパイプと見なすことが出来る。パイプは何も
入っていない状態で始まるので、マイクロプロセッサは
主メモリ内の次の連続したコード実行アドレスにコード
プリフェッチを行なってパイプを満たす。分岐命令に遭
遇すると、シーケンス以外のメモリアクセスがその場で
要求されパイプへの詰め込みを開始する。マイクロプロ
セッサのプリフェッチ能力は主としてマイクロプロセッ
サが新しいコードを利用できるようになるまで待機状態
で待たなければならないストールを防止するために使用
されている。
【0013】前述のプロセッサ・キャッシュに見られる
ような主メモリとマイクロプロセッサ間のコード/デー
タキャッシュは前述の問題を幾らか改善することが出来
る。しかしプロセッサ・キャッシュを充分迅速に新しい
実行コードで満たし使用されない多くの剰余コードのシ
ーケンスを収集することでバスに過負荷を掛けることな
くコードに復帰するにはさらに困難が存在している。
【0014】
【発明が解決しようとする課題】よって本発明の1つの
目的は分岐およびコード復帰命令に対してマイクロプロ
セッサの実効的実行速度を拡大するようなキャッシュメ
モリを備えたコンピュータ・システムを提供することで
ある。
【0015】本発明の別の目的は性能を増大するために
主メモリのメモリ制御装置内に組み込んだキャッシュメ
モリを備えるコンピュータ・システムを提供することで
ある。
【0016】本発明のさらなる目的はシステムのオーバ
ヘッドの要因となすことなくプリフェッチを実現するよ
うなキャッシュメモリを備えたコンピュータ・システム
を提供することである。
【0017】本発明のさらに別の目的は主メモリのプリ
フェッチ・キャッシュを備え該プリフェッチ・キャッシ
ュ内に含まれる最低使用頻度行を決定しこれを排除する
能力を有するコンピュータ・システムを提供することで
ある。
【0018】本発明のさらなる目的はマルチプロセッサ
型コンピュータ・システム並びに単一プロセッサ型コン
ピュータ・システムの性能を向上させるような主メモリ
・プリフェッチ・キャッシュを提供することである。
【0019】
【課題を解決するための手段】本発明の1つの実施例に
おいて、プロセッサと該プロセッサに結合したプロセッ
サ・キャッシュを含むコンピュータ・システムを提供す
る。コンピュータ・システムは該プロセッサに結合した
メモリ制御装置と該メモリ制御装置に結合した主メモリ
も含む。メモリ制御装置は主メモリ・プリフェッチ・キ
ャッシュおよびキャッシュ制御回路を含む。キャッシュ
制御回路はプリフェッチ・キャッシュに結合しておりプ
ロセッサの要求した現在の行がプリフェッチ内に含まれ
るようにキャッシュヒツトが発生したかを調べるために
使用する。キャッシュヒツトの場合、制御回路は処理装
置で使用するためプリフェッチ・キャッシュから現在行
を取り出させ、さらに主メモリからの次の行でプリフェ
ッチメモリ内の現在行を上書きさせる。これ以外の場合
プリフェッチ・キャッシュがプロセッサの要求する現在
行を含まないすなわちキャッシュミスを表わす場合、制
御回路はプロセッサで使用するため主メモリから現在行
を取り出させ、主メモリから次の行を取り込みプリフェ
ッチ・キャッシュ内の次の行にこれを保存させる。
【0020】コンピュータ・システム内で使用するプリ
フェッチ・キャッシュは主メモリからプリフェッチした
命令を保存するためX個のプリフェッチ・キャッシュ・
レジスタを含む。ここでXは任意の数である。コンピュ
ータ・システムはさらにX個の最低使用頻度(LRU)
カウンタをさらに含み、各LRUカウンタはそれぞれプ
リフェッチ・キャッシュ・レジスタの1つに対応し、各
カウンタには対応するプリフェッチ・キャッシュ・レジ
スタの内容が最近のいつ頃使用されたかを示す計数値を
格納する。システムはまたキャッシュヒツトが発生した
プリフェッチ・キャッシュ・レジスタに対応するLRU
カウンタ内のヒットカウント(HIT COUNT )を表わす計
数値を消去するための消去回路も含む。第1の増分回路
がLRUカウンタに結合しておりキャッシュヒツトが発
生した時点でヒットカウント値より計数値が小さい全て
のLRUカウンタの値を増加させ、残りのLRUカウン
タの値はキャッシュヒツトが発生した時点で変更せずに
おく。システムはさらにプリフェッチ回路に結合し、キ
ャッシュミスが発生した場合に最大計数値を示すLRU
カウンタに対応する特定のキャッシュレジスタに次の行
を書き込むことで最低使用頻度行のプリフェッチ・キャ
ッシュをパージするためのパージ回路を含む。システム
はまたLRUカウンタに結合し、キャッシュミスが発生
した場合に次の行が書き込まれる特定のキャッシュレジ
スタに対応するLRUカウンタ以外のLRUカウンタを
増加させるための第2の増分回路も含む。
【0021】本発明のコンピュータ・システムの別の実
施例において、コンピュータ・システムはプロセッサと
該プロセッサがアクセス可能なプロセッサ・キャッシュ
メモリを含む。コンピュータ・システムはまたプロセッ
サが実行するための一連の命令を保存するための主メモ
リも含む。システムはさらにプロセッサと主メモリに結
合し主メモリ内に保存した命令へのプロセッサによるア
クセスを制御するためのメモリ制御装置を含む。メモリ
制御装置は処理装置からの要求以前に主メモリからプリ
フェッチした命令を保存するための主メモリ・プリフェ
ッチ・キャッシュを含む。メモリ制御装置はさらに、プ
リフェッチ・キャッシュに結合しており、プロセッサが
要求した現在の命令Nがプリフェッチ・キャッシュ内に
含まれているかを調べ、含まれている場合にはプリフェ
ッチ・キャッシュから現在の命令Nを取り出して現在の
命令Nをプロセッサに提供し、さらに主メモリから次の
命令N+1を取り出して現在の命令Nを次の命令N+1
で上書きするキャッシュ制御回路を含む。これ以外の場
合、プリフェッチ・キャッシュがプロセッサの要求する
現在の命令Nを含まない場合にはキャッシュ制御回路が
主メモリから現在の命令Nの取り込み動作を起動し現在
の命令Nをプロセッサに提供し、次の命令N+1を主メ
モリから取り出してプリフェッチ・キャッシュメモリ内
に次の命令N+1を保存する。
【0022】
【実施例】新規であると信じられる本発明の特徴は添付
の請求項に特に記載してある。しかし本発明はその構造
と作動方法の両方を以下の詳細な説明と添付の図面の参
照でもっともよく理解できるであろう。
【0023】I.主メモリ・プリフェッチ・キャッシュ
のハードウェアおよび最低使用頻度(LRU)行選択ハ
ードウェア
【0024】本発明によるコンピュータ・システムを図
1でシステム10として示す。システム10はマイクロ
プロセッサ15を含み、これは1つの実施例においてマ
イクロプロセッサ15が製造されるチップ上に組み込ま
れたキャッシュ20を含む。たとえば、インテル804
86は8Kバイトの内部キャッシュを含み、マイクロプ
ロセッサ15として使用するのに好適である。この構成
においてキャッシュ20は「第1水準の」キャッシュと
称する。
【0025】この特定の実施例において、コンピュータ
・システム10は図示したようにマイクロプロセッサ1
5の外部で結合している別のキャッシュメモリ25を含
む。キャッシュメモリ25は「第2水準」のキャッシュ
メモリであって第1水準のキャッシュメモリ20と組み
合わせて作動しキャッシュメモリ20を補完する。第1
水準のキャッシュメモリ20は第2水準のキャッシュメ
モリ25の大きさと比較すれば相対的に小さい。第2水
準のキャッシュメモリ25は高速のスタティック・ラン
ダムアクセスメモリ(SRAM)よりなり通常32KB
〜512KBの範囲の大きさの外部キャッシュである。
【0026】本発明は、外部の第2水準のキャッシュた
とえばキャッシュメモリ25などのない、内部キャッシ
ュだけを有するマイクロプロセッサ15で実現すること
も可能である。これ以外にも、本発明はキャッシュ20
などの内部キャッシュを有さないマイクロプロセッサを
使用し、マイクロプロセッサと組み合わせてキャッシュ
メモリ25などの外部プロセッサ・キャッシュメモリを
使用するならば実現することが出来る。第1水準のキャ
ッシュメモリ20と第2水準のキャッシュメモリ25は
両方ともプロセッサ15専用の「プロセッサ」キャッシ
ュメモリである。
【0027】第2水準のキャッシュメモリ25はシステ
ムバス30に結合し、マイクロプロセッサ15がコンピ
ュータ・システム10のその他の部材と通信できるよう
になしている。たとえば、ディスク制御装置35はシス
テムバス30に接続してありコンピュータ・システム1
0に対して1つまたはそれ以上のハードディスク・ドラ
イブ装置40のインタフェースを行なっている。通信制
御カード45はシステムバス30に接続してシステム1
0にシリアルおよびパラレルポートを提供する。
【0028】メモリ制御装置50は図示したようにシス
テムバス30へ接続する。メモリ制御装置50はデータ
線65経由で主メモリ60に結合するプリフェッチ・キ
ャッシュメモリ回路55を含む。主メモリ60は複数の
メモリ素子、たとえばダイナミック・ランダムアクセス
メモリ(DRAM)表面実装メモリモジュール(SIM
M)または類似のものを含む。プリフェッチ・キャッシ
ュメモリ回路55に含まれるメモリにおけるアクセス時
間はメモリ素子70のそれより大幅に高速である。
【0029】メモリ制御装置50はまたマイクロプロセ
ッサ15から主メモリ60へのアクセスの要求を制御す
るためのメモリアドレス制御回路75も含む。メモリア
ドレス制御回路75はシステムバス30およびプリフェ
ッチ・キャッシュメモリ回路55に結合する。メモリア
ドレス制御回路75も図1では全体として線80で図示
したアドレス、行アドレスストローブ(RAS)、列ア
ドレスストローブ(CAS)、読み込みイネーブル、書
き込みイネーブルの各線で主メモリ60に結合する。
【0030】図2はメモリ制御装置50のメモリアドレ
ス制御回路75部分のさらに詳細なブロック図である。
メモリアドレス制御回路75は16組のアドレスタグ・
レジスタとコンパレータを有するアドレスタグ・レジス
タおよびコンパレータ(比較回路)ブロック85を含
む。後述するように、プリフェッチ・キャッシュ198
(図3参照)内の16個のレジスタのそれぞれについて
1個のアドレスタグレジスタとコンパレータの組み合わ
せで構成している。メモリアドレス制御回路75は図示
したようにシステムバス30へ結合し、ここからのアド
レス要求を受信する。レジスタ/コンパレータ・ブロッ
ク85内のタグレジスタはプリフェッチ・キャッシュメ
モリ回路55内に現在保存されている命令のアドレスを
保存するために使用する。レジスタ/コンパレータ・ブ
ロック85内のコンパレータは、要求されたアドレスと
プリフェッチメモリ55内に現在保存されているアドレ
スが適合(ヒット)するかを調べるために使用する。レ
ジスタ/コンパレータ・ブロック85はそれぞれHIT
0 〜HIT15およびHIT+10 〜HIT+115と称す
る2系統の16個の出力を含む。メモリ制御装置50に
対して特定アドレスでの命令の要求がなされると、キャ
ッシュがヒットする場合にはプリフェッチ・キャッシュ
内のアドレスのレジスタ番地に対応するHIT0 〜HI
T15の出力の1つが真となる。レジスタ/コンパレータ
・ブロック85の動作と構成については詳細を後述す
る。
【0031】メモリアドレス制御回路75はさらに1組
16個のLRUカウンタを含む最低使用頻度(LRU)
カウンタブロック90を含む。LRUカウンタは最高使
用頻度の命令がプリフェッチ・キャッシュメモリ55内
に含まれることを確実にするために動作する。言い換え
れば、最低使用頻度命令はプリフェッチ・キャッシュ5
5が満杯になった場合の置換のために選択される。それ
ぞれのLRUカウンタはアドレスタグ・レジスタ/コン
パレータ・ブロック85内のアドレスタグ・レジスタそ
れぞれに用意してある。より特定すれば、LRUカウン
タブロック90内の第1のLRUカウンタはヒット出力
線HIT0 経由でブロック85内の第1のアドレスタグ
・レジスタ/コンパレータに対応しまたこれと結合して
おり、LRUカウンタブロック90内の第2のLRUカ
ウンタはヒット出力線HIT1 経由でブロック85内の
第2のアドレスタグ・レジスタ/コンパレータに対応し
またこれと結合する、と言うように対応、結合してい
る。
【0032】LRUカウンタブロック90はそれぞれR
EG0 、REG1 、...REG15と番号のついた16
個のREGx出力を含み、これらは16対4エンコーダ
回路95へ結合してアドレスタグ・レジスタ/コンパレ
ータ・ブロック85へ戻る。エンコーダ85は16本の
線の1つを4ビットREG POINTER値信号に変
換し出力する。LRUカウンタブロック90はまたCN
T0 、CNT1 、...CNT15と番号のついた16個
のCNTx出力も含み、これらは16対1マルチプレク
サ100に結合して、これの出力にHIT COUNT
信号が生成されるようになしてある。HIT COUN
T信号はLRUカウンタブロック90へフィードバック
する。/HIT信号がマルチプレクサ100に供給され
る。REGx、CNTx、HIT COUNT、および
/HIT信号の性質と機能については後の実施例で詳述
する。
【0033】メモリアドレス制御回路75もシステムバ
ス30に結合するaddress+1 加算回路105を含む。ad
dress+1 加算回路105はシステムバス30から受信し
たアドレス要求を取り出しそのアドレスから主メモリ内
の連続した次のアドレスに進める。加算回路105は図
2に図示したようにレジスタ/コンパレータ・ブロック
85とマルチプレクサ110に結合したADDRESS
+1出力を含む。システムバス30もマルチプレクサ1
10の入力に結合する。マルチプレクサ110の出力
は、要求された現在のアドレスまたは現在のアドレスに
1を足したもののどちらかを主メモリへ渡してアクセス
できるように主メモリ70に結合する。
【0034】図3は主メモリ制御回路50の読み込み経
路を含むプリフェッチ・キャッシュメモリ回路55のブ
ロック図である。プリフェッチ回路55はレジスタの組
200、201、...、215として番号を振った1
6組のキャッシュレジスタを有するプリフェッチ・キャ
ッシュメモリ198を含む。プリフェッチ・キャッシュ
メモリ198は主メモリ60に結合し、メモリ198が
主メモリ60から取り出した命令(実行コードおよびデ
ータ)を保存できるようになしてある。キャッシュレジ
スタの組200〜215のそれぞれの出力は16対1マ
ルチプレクサ220のそれぞれの入力に結合する。図2
のメモリアドレス制御回路50のREGPOINTER
出力は図3に図示したようにマルチプレクサ220に結
合して特定のキャッシュレジスタを選択し、ここからデ
ータを取得する。
【0035】主メモリ60は入力レジスタ225経由で
2対1マルチプレクサ230の入力に結合する。16対
1マルチプレクサ220の出力は図3に図示したように
2対1マルチプレクサの他方の入力に結合する。マルチ
プレクサ230は出力レジスタ235経由で4対1マル
チプレクサ240へ結合する。マルチプレクサ230も
プロセッサへのデータが主メモリから入るかまたはデー
タキャッシュから入るかを選択するための/HIT入力
を含む。4対1マルチプレクサ240の出力はシステム
バス30に結合し、要求されたアドレスの行または命令
(実行コードおよびデータ)がマイクロプロセッサ15
に必要なバス幅でマイクロプロセッサ15へ提供できる
ようになす。
【0036】メモリアドレス制御回路75内で使用する
16個のタグレジスタ85の1つの詳細な模式図をタグ
レジスタ回路85(0)として図4に示した。例にとっ
たタグレジスタ85(0)はADDR+1、LOAD、
ADDR、REGx、INVALIDATE、およびR
ESET入力を含む。システムバス30から受信したA
DDR信号の機能はマイクロプロセッサ15が主メモリ
60から取り出したい命令に対応する特定のアドレスを
メモリ制御装置50に通知することである。タグレジス
タ85(0)のADDR+1入力はADDRESS+1
加算回路105のADDR+1出力へ結合する。ADD
Rはマイクロプロセッサが主メモリ60から取り出そう
と現在試みているアドレスであるのに対し、ADDR+
1はADDRに続く主メモリ60内の連続した次のアド
レスである。言い換えれば、ADDR+1はADDRに
続く次の連続した行または命令のアドレスである。AD
DR+1コンパレータは第1のADDR+1行がキャッ
シュ内にすでに存在している場合第2のADDR+1行
をキャッシュ内に読み込むのを防止するために必要であ
る。
【0037】タグレジスタ85(0)のADDR+1入
力は図4に図示したようにD型フリップフロップ245
のD入力へ結合する。タグレジスタ85(0)のLOA
D入力は2入力ANDゲート250の一方の入力に結合
し、ANDゲートの他方の入力はREGx入力と別の2
入力ANDゲート255の一方の入力へ結合する。RE
Gx入力上へのREGx信号の取り出しは後述する。I
NVALIDATE線はANDゲート255の残りの入
力に結合する。INVALIDATEパルスはプロセッ
サ15が主メモリに書き込み主メモリの番地がキャッシ
ュ内にすでに保存されている場合キャッシュ線の「VA
LID」ビットを消去するために使用する。ANDゲー
ト250の出力はD型フリップフロップ245のクロッ
ク入力とRS型フリップフロップ260のS入力へ結合
する。ANDゲート255の出力はRS型フリップフロ
ップ260のR入力へ結合する。
【0038】RS型フリップフロップ260の出力はV
ALID出力で表わしてあり多入力ANDゲート265
の入力の1つと多入力ANDゲート270の入力の1つ
へ結合する。タグレジスタ85(0)のADDR+1入
力は2入力XOR(排他的論理和)ゲート285の一方
の入力に結合し、XORゲートの他方の入力はD型フリ
ップフロップ245のQ出力と2入力XORゲート29
0の一方の入力に結合する。XORゲート290の他方
の入力はタグレジスタ85(0)のADDR入力に結合
する。
【0039】フリップフロップ245とXORゲート2
85および290がブロック292を構成し、タグアド
レスレジスタ/コンパレータ・ブロック85(0)内で
主メモリ60のアドレスビットが存在する個数分だけ並
置する。たとえばコンピュータ・システム10が32ビ
ットシステムであるなら、ブロック292は32回、す
なわちアドレスの各ビットに1個づつ並置してある。こ
のような反復ブロック292内のXORゲート285と
290からの出力はANDゲート265および270の
それぞれの入力に結合する。これらの接続を反映するよ
うに、ANDゲート265および270は図4において
複数入力を備えるように図示してあるが、このような複
数入力のそれぞれの特定の接続は紙面を節約する目的か
ら図示していない。
【0040】以上から、HITx信号がANDゲート2
70の出力に生成され、HIT+1x信号がANDゲー
ト265の出力に生成される。HITx信号が真の場合
は、現在のプロセッサのアクセス要求をプリフェッチキ
ャッシュからレジスタ番地xで供給可能であることを示
している。プリフェッチ・キャッシュ198の16個の
データレジスタがxの値0から15までに対応するよう
に200〜215と番号がつけてある。言い換えれば、
HIT3が真になると、プリフェッチレジスタ203で
ヒツトが発生するという具合である。HITx+1信号
が真の場合、次の連続したメモリ行がすでにプリフェッ
チ・キャッシュ内に存在しており、この行についてメモ
リのプリフェッチを行なう必要はない。
【0041】メモリアドレス制御回路75内で使用する
最低使用頻度(LRU)カウンタ16個のうちの1つを
図5のLRUカウンタ90(0)として示す。LRUカ
ウンタ90(0)はHIT COUNT、/HIT、P
RESET、PRESETVALUEx、LOAD、お
よびHITx入力を含み、これらそれぞれにHITCO
UNT、/HIT、PRESET、PRESET VA
LUEx、LOAD、およびHITx信号が供給され
る。
【0042】LRUカウンタ90(0)のLOAD入力
は2入力ANDゲート300の一方の入力と2入力NA
NDゲート305の一方の入力に結合する。LRUカウ
ンタ90(0)の/HIT入力は2入力ANDゲート3
10の一方の入力に結合し、これの出力は2入力ORゲ
ート315の一方の入力に結合する。ORゲート315
の出力はNANDゲート305の他方の入力に結合して
LRUカウンタ90(0)のREGx出力を構成し、こ
こにREGx出力信号が生成される。
【0043】ANDゲート300の出力はカウンタ32
0のINC入力に結合する。NANDゲート305の出
力はカウンタ320の反転消去入力へ結合する。PRE
SETおよびPRESET VALUEx信号が図5に
図示したようにカウンタ320に供給される。PRES
ET VALUEx信号は16個の異なる初期計数値を
PRESET命令信号が指示する時刻に16個のそれぞ
れのLRUカウンタに供給する。カウンタ320の出力
はCNTxで表わしてあり、入力AとBを有するコンパ
レータのB入力へ結合する。HIT COUNT入力値
が図示したようにコンパレータ325のA入力へ供給さ
れる。コンパレータ325はCNTx値がHIT CO
UNT値と等しいかを検査し、等しい場合にはコンパレ
ータ325のB=A出力を真にする。コンパレータ32
5はCNTx値がHIT COUNT値より大きいかも
検査し、大きい場合にはコンパレータ325のB<A出
力を真にする。コンパレータ325のB=A出力はAN
Dゲート310の残りの入力に結合する。コンパレータ
325のB<A出力はANDゲート300の残りの入力
に結合する。
【0044】LRUカウンタブロック90は次のような
動作を行なう。カウンタブロック90内で使用している
LRU機構は16個のキャッシュタグ・エントリ/線の
それぞれに付随する4ビットLRUカウンタ320より
なる。つまりこの特定の実施例において、カウンタ32
0はそれぞれ0、1、2、...15の16個の計数値
を取り得る。線xでキャッシュヒツトが発生する場合、
線xのカウンタが消去されxのそれまでの計数値より低
い計数値を有する線のカウンタ全てがLOADパルスの
発生時に1づつ増分される。キャッシュミスが発生する
と、計数値1111(または10進値で15)を有する
カウンタに対応するタグレジスタおよびキャッシュ線が
消去されて新しいタグ/データに使用され、それ以外の
全てのカウンタが1づつ増分される。カウンタ320は
オーバーフローしないが、0000から1111へ増加
する値に全て初期化されることになる。
【0045】II.プリフェッチ・キャッシュの動作の
概略
【0046】コンピュータ・システム10の主メモリ・
プリフェッチ・キャッシュ機構の動作の全般的な概略を
ここで示す。主メモリ・プリフェッチ・キャッシュ55
は内部キャッシュ20および/または外部キャッシュ2
5などのプロセッサ・キャッシュをすでに有している処
理ユニット15を補助するものと見なすことが出来る。
【0047】この時点で、コンピュータ・システム10
の動作を起動時または初期化時から考えるのが有用であ
る。システムを起動すると、外部キャッシュ25および
/または内部キャッシュ20の内容は全て無効となる。
これらは基本的に内容を有していないためである。プリ
フェッチ・キャッシュ55の内容も同じ理由から同様に
無効である。これらのキャッシュそれぞれがそれに付随
して無効なビットを有しているので、それぞれのキャッ
シュの特定の番地が有効な命令を含むかまたは含まない
かを決定することが出来る。本明細書において、術語
「行」は命令を含み、それが実行コードまたはデータど
ちらであってもよい。行にはたとえば8または16バイ
トブロックなどの情報部ロックが含まれる。このような
行が主メモリ内に連続するアドレスの順番で連続的に格
納される。
【0048】マイクロプロセッサ15が現在行(実行コ
ードまたはデータいずれかであるような第1の命令)を
アクセスしようとすると、全キャッシュの内容が無効で
あることが解り、そのため主メモリ60(DRAM)へ
の直接アクセスを行なう。メモリ制御装置50は主メモ
リ60内の現在行の位置を指定して現在行を出力レジス
タ235へ送り、ここから処理のためにマイクロプロセ
ッサ15へ後で転送する。現在行は内部キャッシュ20
と外部キャッシュ25の一方または両方に保存され、現
在行+1が現在の命令以降で主メモリ60内で次に連続
する命令アドレスに保存されている命令であると決定さ
れる。より特定すれば、現在行をプロセッサへ転送する
のと同時に、システムのオーバーヘッドを起こさないよ
うに、現在行+1がアクセスされてプリフェッチメモリ
内に保存される。
【0049】マイクロプロセッサはこれが実行中の特定
のプログラムにおける次の行(次の命令)へ進み、新し
い行が新しく現在行となる。マイクロプロセッサ15は
新しい現在行の要求をメモリ制御装置50に送出し、こ
の要求は新しい現在行のアドレスから構成されている。
メモリ制御装置50は主メモリ・サイクル(DRAMサ
イクル)を開始し、同時に要求された新しい現在行がプ
リフェッチ・キャッシュメモリ55内に保存されている
かを検索する。新しい現在行がプリフェッチメモリ55
内に保存されていれば、キャッシュヒットとなるのでこ
れがアクセスされ、処理のためにマイクロプロセッサへ
送出され、主メモリ・サイクル(DRAMサイクル)が
変更されて新しい現在行+1を取り込む。いったん取り
込めれば、新しい現在行+1がプリフェッチ・キャッシ
ュ55内に保存される。この方法で、プリフェッチ・キ
ャッシュ55内で使用するプリフェッチ機構はなんらの
余分なシステムバスサイクルのオーバーヘッドをもたら
すことなくメモリ制御装置50への行要求より1段階先
行し続けられる。現実には、キャッシュヒツトが発生し
た場合、新しい現在行がプリフェッチ・キャッシュ55
から取り出され、後でマイクロプロセッサ15へ転送す
るために出力レジスタ235に一時的に保存される。現
在行+1が主メモリから取り出されてくると、現在行が
入っていたプリフェッチ・キャッシュ内の同じ番地にこ
れが保存される。このため、少ないキャッシュレジスタ
の組で複数の処理スレッドに追従することが可能であ
る。
【0050】メモリ制御装置50に対するマイクロプロ
セッサの行要求が現在実行しているプログラム内の分岐
命令の結果の場合、プリフェッチ・キャッシュメモリ5
5内の参照に失敗しキャッシュミスが発生する。キャッ
シュミスの場合、主メモリ・サイクル(DRAMサイク
ル)は変更されずに継続する。言い換えれば、メモリ要
求から得られるメモリ・サイクル内のアドレス検索は変
更を受けず、メモリ・サイクルが進行することになる。
主メモリ60内で要求されたアドレスにある命令(実行
コードおよびデータ)を取得して、後でマイクロプロセ
ッサへ転送するため出力レジスタ235内に保存する。
DRAMのページモード・アクセスが継続し新しい現在
行の後の次の行を取り出す(すなわち、新しい現在行+
1)。新しい現在行+1がプリフェッチ・キャッシュ5
5内に保存され、プリフェッチ・キャッシュ55はマイ
クロプロセッサ15が同じ順序の命令経路に沿って命令
の実行を継続する場合に備える。主メモリ60からのこ
のフェッチはページモード・アクセス速度で行なわれ、
通常の主メモリアクセスより高速である。
【0051】上述したキャッシュミスの事例は要求され
たアドレスに対応する新しい現在行がプリフェッチ・キ
ャッシュ55内に保存されていると発見できたキャッシ
ュヒツトの場合の事例と対照的である。キャッシュヒツ
トの場合、主メモリ・サイクル内で主メモリから検索す
るアドレスは新しい現在行のアドレスから新しい現在行
+1のアドレスに変更されたことを想起されたい。主メ
モリから取り出した新しい現在行+1はプリフェッチ・
キャッシュ内に保存されていることが解った新しい現在
行を上書きするために使用される。
【0052】III.最低使用頻度(LRU)行選択動
作の概略
【0053】LRUカウンタ、エンコーダ95、マルチ
プレクサ100の目的は最低使用頻度だったプリフェッ
チ・キャッシュメモリ内の特定の行を選択することであ
る。より特定すれば、キャッシュミスの状態において、
キャッシュが満杯になったときにこの最低使用頻度の行
が主メモリからの新しいデータで置換される。
【0054】この時点で図2でエンコーダ95の出力に
図示してあるREG POINTER信号を考えること
が有益である。図2を図3との関連で考えると、REG
POINTER信号の目的はプリフェッチデータキャ
ッシュレジスタ198のどれからデータ取得を試みるか
選択することである。図2において、REG POIN
TER信号はマルチプレクサ100にもフィードバック
して、マルチプレクサ100に供給される16個のCN
Tx計数値のどれをHIT COUNTとしてLRUカ
ウンタにフィードバックするかを選択することにも注意
されたい。
【0055】プリフェッチメモリ55内の16個のプリ
フェッチ・キャッシュレジスタ200〜215内に保存
された16行のそれぞれに対してそれぞれのLRUカウ
ンタ320が用意してある。LRUカウンタブロック9
0内のそれぞれのLRUカウンタ320は計数値CNT
xを保持している。CNTxはキャッシュ55内の対応
する行がどの程度の頻度でアクセスまたは使用されたか
を表わし、xはプリフェッチ・キャッシュメモリ内の1
6個のカウンタまたは対応する行のどれが参照されたか
により0から15までの数が入る。キャッシュヒツトの
状態においては特定のLRUカウンタ320が計数0を
含むので、プリフェッチメモリ・レジスタブロック19
8内の対応するレジスタはデータ行をこれに書き込んだ
ばかりである。この動作によりLRUカウンタ320内
の計数値を0にリセットすることとなり、対応するプリ
フェッチデータレジスタが最も最近使用されたことを表
わす。次のメモリ・サイクル内で、その特定のレジスタ
内の同一行または同一番地からのデータが必要でなけれ
ば、対応するLRUカウンタが値0から値1に増分され
る。残りの15個のLRUカウンタの選択されたカウン
タも後述するように1だけ増分される。特定のLRUカ
ウンタの計数値CNTxが15に達すると、そのLRU
カウンタに対応するプリフェッチメモリの番地にあるデ
ータは、キャッシュミスが発生した場合に置換するため
に選択される。
【0056】図2に戻ると、それぞれのアドレスタグレ
ジスタ/コンパレータ・ブロック85がプリフェッチ・
キャッシュデータレジスタ200〜215それぞれにつ
いて用意してある。つまり、タグレジスタ回路85
(0)はキャッシュレジスタ200のために用意してあ
り、タグレジスタ回路85(1)はキャッシュレジスタ
201のために用意してあり、タグレジスタ85(1
5)はキャッシュレジスタ215のために用意してあ
る。マイクロプロセッサが特定の主メモリ位置にアクセ
スを試みると、メモリ制御回路はプリフェッチ・キャッ
シュを第1に検索してここに保存してある行に要求され
た命令が含まれるかを調べる。ブロック85はプリフェ
ッチ・キャッシュ55内でキャッシュヒツトが発生した
かを検証する。より特定すれば、ブロック85はプリフ
ェッチ・キャッシュ55の16個のプリフェッチ・キャ
ッシュレジスタ200〜215のどれかが要求された行
を含むかを検索し、そのアドレスを16個のブロック8
5の16個のADDR入力のそれぞれに供給する(図4
参照)。これはブロック85内部の16このタグレジス
タに保存されたアドレスと要求された行のアドレスとを
照合することで実現する。適合が見つかると、キャッシ
ュヒツトが発生したことになる。ブロック85はADD
R+1行がプリフェッチ・キャッシュメモリ内にすでに
保存されているかを決定するための検査も行なう。プリ
フェッチ・キャッシュ内の2つの異なる番地に同一行が
保存されていないことを確認するために以上のことを実
行する。
【0057】マイクロプロセッサ15の要求した現在行
と16個のタグレジスタ回路85(0)〜85(15)
の間で適合が発生した場合、このキャッシュヒツト条件
下においてそのタグアドレスに対応するブロック85の
特定のHIT出力が真になる(図2参照)。
【0058】例示のために、以下の議論では、要求行が
3番目のタグレジスタ回路85(3)のタグアドレスと
適合するようなキャッシュヒツトが発生したと仮定す
る。つまり、アドレスタグレジスタ/コンパレータ85
のHIT3 出力が真である。この場合、HIT出力HI
T0 、HIT1 、HIT2 、およびHIT4 〜HIT15
は全て偽である。LRUカウンタ回路90(3)のLR
Uカウンタ320がCNT3 計数値として8を有すると
任意に仮定しておく。CNT計数値は特定のタグアドレ
スとその行が他のタグアドレスおよび行に対してどの程
度新しいまたは古いかを表わすことを想起されたい。C
NT値0は最も新しいまたは最高使用頻度の行を表わ
し、CNT値15は最も古いまたは最低使用頻度の行を
表わす。
【0059】HIT3 の真の値を図5のLRUカウンタ
に見られるようにORゲート315へ供給すると、その
出力にこの例ではREG3 となるREGxが現れる。こ
の場合REG3 は真であるがREG3 以外の全てのRE
Gxは偽である。REG3値はエンコーダ95(図2参
照)に供給して、これの4ビットREG POINTE
R出力に値3を供給し、プリフェッチ・キャッシュ19
8のプリフェッチ・キャッシュレジスタ203(図3参
照)に保存された行を選択することが出来る(REG
POINTER値3と選択するプリフェッチデータレジ
スタ番号203の数値的対応に注意する。REG PO
INTER値4はプリフェッチレジスタ204の内容を
選択するために用い、以下同様である)。
【0060】もう一度図2を参照すると、REG PO
INTER値3はマルチプレクサ100にも供給されて
LRUカウンタ回路90(3)の特定の計数値CNT3
(すなわちx=3としたCNTx)がHIT COUN
TとしてLRUカウンタ90に返される。つまり、この
特定の例において、CNT3は値8を有するものと仮定
し、HIT COUNT値8がLRUカウンタ90に返
される。16個のそれぞれのLRUカウンタはそれぞれ
の対応するタグアドレスレジスタとプリフェッチ・キャ
ッシュデータレジスタと関連する。LRUカウンタ回路
90内のCNT値はプリフェッチ・キャッシュデータレ
ジスタ内の対応するデータ行の使用頻度に従って変化す
る(増分または消去される)。
【0061】キャッシュヒツトが発生すれば、ヒツトの
発生したデータ行に対応するLRUカウンタ90(x)
が0に再設定され、このデータ行が最後に使用されたこ
とを表わす。またこのようなキャッシュヒツトが発生し
た場合、マイクロプロセッサの要求した現在行が適当な
プリフェッチ・キャッシュデータレジスタ200から出
力レジスタまたはバッファ235へ転送され、続けてマ
イクロプロセッサへ転送される。現在行は主メモリから
の次の行で上書きし、プリフェッチ・キャッシュ内容を
追跡する目的で、上書きした行に対応するタグレジスタ
85(x)を次の行の新しいアドレス情報で更新する。
【0062】LRUカウンタ回路90の動作について図
5のLRUカウンタ回路90(0)を参照して詳細に説
明する。コンピュータ・システム10の初期化時には、
0から15までの異なる独自のCNTx値がカウンタ回
路90(0)、90(1)、...、90(15)のそ
れぞれのLRUカウンタ内に保存される。説明のため、
LRUカウンタ90(3)がLRUカウンタ回路90
(0)と同一である場合を考えてみる。すでに述べたよ
うに、LRUカウンタ回路90(3)はキャッシュヒツ
トが発生したプリフェッチ・キャッシュレジスタ203
に対応するLRUカウンタである。例示の目的で、カウ
ンタ90(3)のCNT3値が8だと仮定しておく。つ
まりCNT3の値8がコンパレータ325のB入力に供
給される。HIT COUNT値8も、この場合、コン
パレータ325のA入力に供給される。
【0063】コンパレータ325は比較試験を行ない現
在の例ではA=Bであると解り、これによりコンパレー
タ325のA=B出力が真になる。A=Bであるから、
ヒツトが発生したと解る。つまりANDゲート310が
阻止されANDゲート310の出力には偽が現れる。コ
ンパレータ325のB<A出力も偽となる。この状態に
おいて、LOADパルスがANDゲート300のLOA
D入力に現れた場合レジスタ320が増分されないこと
になる。
【0064】プリフェッチ・キャッシュに主メモリ60
からのデータを読み込んでいる間、LOADパルスが発
行される。LOADパルスが発行されると、LRUカウ
ンタ320に保存してある値がこれから説明するような
方法で変化する。現在の例において、LOADパルスを
発行した場合、ANDゲート300で阻止されANDゲ
ート300の出力は偽である。しかしこのような条件下
ではLOADパルスが低値となってNANDゲートを通
過し、LRUカウンタ320を消去または計数値0にリ
セットすることになる。つまり、カウンタ回路90
(3)のLRUカウンタ320のCNT3 計数値は値が
8から0に変化する。これはキャッシュヒツトが発生し
対応するプリフェッチ・キャッシュデータレジスタ20
3の内容が「最高使用頻度」または最新のものであるこ
とを表わす。
【0065】以降の説明から理解されるように、残りの
カウンタ回路90(0)、90(1)、および90
(4)から90(15)のうちの選択した回路のLRU
カウンタ320の内容が1だけ増分されそれぞれの内容
の使用頻度が値1だけ低くなったことを反映する。説明
のために、プリフェッチデータレジスタ203(カウン
タ回路90(3)に対応する)でキャッシュヒツトが発
生した例で、残りのカウンタ回路90(0)のLRUカ
ウンタ320を考えてみる。プリフェッチデータレジス
タ203でキャッシュヒツトが発生しレジスタ200
(カウンタ回路90(0)に対応する)ではないので、
HIT(0)は偽であるがHIT COUNTがまだ8
である。この例で説明するために任意の値を選択したと
すると、カウンタ回路90(0)内のLRUカウンタ3
20に保存してある計数値CNT0 が5だと仮定する。
【0066】HIT COUNTが8なので、コンパレ
ータ325でAは8となる。またCNT0 がこの例では
5なので、コンパレタ325でBは5となる。よってコ
ンパレータのB<A出力が真となり、LOADパルスが
発行されると、ANDゲート300の出力が真となり、
カウンタ回路90(0)のカウンタ320を1だけ増分
させる。そのためカウンタ90(0)に保存してあるC
NT0 計数値は値が5から6に変わる。さらに、8以下
の値を含むLRUカウンタ全てで値が増分される。
【0067】しかしHIT COUNTまたはこの例の
場合8より大きい値を含む全てのLRUカウンタは同じ
内容を保持する。たとえば、カウンタ回路90(7)の
LRUカウンタ320がCNT7 値9を有する場合、コ
ンパレータ325ではA=8、B=9となる。コンパレ
ータ325ではB=AまたはB<Aのどちらも真になら
ない。ANDゲート310をオンにするためのヒツトが
ないため、LOADパルスが発行された時点でカウンタ
90(7)のLRUカウンタ320の内容は消去または
0にリセットされず、それまでと同じCNT7値9で残
る。同様に、9またはそれ以上(すなわちHIT CO
UNTより大きい)CNTx値を含む他の全てのLRU
カウンタも同じ値を保持する。
【0068】本発明のプリフェッチ・キャッシュ機構と
関連してLRU機構の動作を要約するにはキャッシュヒ
ツトの場合を第1に考察する。キャッシュヒットでは、
マイクロプロセッサの要求する現在行はプリフェッチ・
キャッシュ55に含まれる。現在行が取り出されて出力
レジスタ235へ送出され、マイクロプロセッサへ転送
される。現在行に続く次の行が主メモリから取り出さ
れ、これを用いてプリフェッチ・キャッシュの現在行を
上書きする。さらにキャッシュヒツトが特定のプリフェ
ッチデータレジスタ200〜215の行で発生した場
合、そのプリフェッチデータレジスタに対応する特定の
LRUカウンタ90(0)〜90(15)が消去(0に
リセット)され、その特定のカウンタの計数値より少な
い計数値を有する残り全てのLRUカウンタ90を1つ
づつ増分する。キャッシュヒツトの場合残りのLRUカ
ウンタ90内の計数値は変化しない。
【0069】しかしキャッシュミスが発生する場合、マ
イクロプロセッサの要求する現在行はプリフェッチ・キ
ャッシュには含まれていない。この場合、計数値が最大
計数値1111(10進数で15)に等しいLRUカウ
ンタ90に対応する特定のタグレジスタ85と特定のプ
リフェッチ・キャッシュレジスタ200〜215を選択
する。LOADパルスが発生すると、この特定のタグレ
ジスタとプリフェッチ・キャッシュレジスタを用いて主
メモリからそれぞれ新しいタグアドレスと新しいデータ
行(現在行)を保存し、このLRUカウントを計数値1
5から0にリセットする。残りの全てのカウンタ90は
キャッシュミスの場合1だけ増分される。
【0070】IV.方法−−段階的な処理の流れ
【0071】本発明の動作段階の概要を示す流れ図を図
6に示す。コンピュータ・システム10は段階400で
初期化され、段階405で命令の実行を開始し、ここで
マイクロプロセッサ15は現在行を要求する。コンピュ
ータ・システム10は初期化したばかりなので、内部キ
ャッシュ20、外部キャッシュ25、および主メモリ・
プリフェッチ・キャッシュ55でキャッシュミスが発生
する。この状態で、メモリ制御装置50は段階410と
して主メモリ・サイクルの結果主メモリ60内から現在
行を検索する。段階415で現在行が主メモリ60から
出力レジスタ235へ転送され、これが段階420でマ
イクロプロセッサ15へ転送される。現在行がマイクロ
プロセッサ15へ送出される段階420と同時に、現在
行+1が主メモリ60からプリフェッチされ、段階42
5でプリフェッチ・キャッシュメモリ55に保存され
る。
【0072】マイクロプロセッサ15はプログラムの実
行を継続し、段階430では新しい現在行を要求する。
これに応じて、メモリ制御装置50は段階435で主メ
モリ・サイクルを開始して新しい現在行を取り出す。メ
モリ制御装置50は、段階440で新しい現在行がプリ
フェッチ・キャッシュ55に存在するかを調べる。この
検索は段階435で開始した主メモリ・サイクルの起始
時に行なわれる。
【0073】新しい現在行がプリフェッチ・キャッシュ
55に保存されている場合、段階445でキャッシュ内
の新しい現在行にアクセスし出力レジスタ235に格納
する。段階450で新しい現在行は出力レジスタ235
からマイクロプロセッサ15に転送される。段階455
では段階435で開始した主メモリ・サイクルが変更さ
れ、新しい現在行の変わりに新しい現在行+1を主メモ
リから取り出す。段階455における新しい現在行+1
の取り出しは、段階450のマイクロプロセッサ15へ
の新しい現在行の転送と同時に行なわれる。段階460
では、主メモリ60から取り出しておいた新しい現在行
+1で現在行を上書きすることにより、新しい現在行を
プリフェッチ・キャッシュ55に保存する。
【0074】段階461では、ヒツトが発生した特定の
プリフェッチ・キャッシュデータレジスタに対応する特
定のLRUカウンタ90(x)が消去または0にリセッ
トされて、その特定のプリフェッチデータレジスタの内
容が最も使用頻度が高いデータであることを示す。この
特定のプリフェッチデータレジスタの内容が最高使用頻
度なのは新しい現在行+1がこの番地をそれまで占有し
ていた現在行をたった今上書きしたためである。HIT
COUNTより小さい計数値を有するLRUカウンタ
は段階462で1だけ増分される。段階463で、残り
のLRUカウンタの計数値は変更しない。
【0075】流れ図は段階430へ戻る。ここでマイク
ロプロセッサ15がプログラム内の次の命令を実行し、
メモリ制御装置55からの別の新しい現在行を要求す
る。
【0076】しかし決定段階44Oにおいて、新しい現
在行がプリフェッチ・キャッシュ55内に保存されてい
ないと解った場合(すなわちキャッシュミスの場合)、
段階435で開始した主メモリ・サイクルを段階465
で継続して、主メモリ60からその新しい現在行を取り
出す。取り出した後、段階470で新しい現在行は出力
レジスタ235に格納され、その後段階475でマイク
ロプロセッサ15に転送する。段階475で新しい現在
行がマイクロプロセッサ15に転送されるのと同時に、
段階480では、新しい現在行+1を取り出せるように
主メモリのページモード・アクセスを継続する。段階4
85で、新しい現在行+1は、最大計数値を示す特定の
LRUカウンタ回路90(x)に対応するレジスタ番地
でプリフェッチ・キャッシュ55に保存される。このレ
ジスタ番地には最低使用頻度の行が保存してあったが、
この動作でパージされる。段階490では残りのLRU
カウンタ回路90が1だけ増分される。
【0077】流れ図は段階430へ戻って、ここでマイ
クロプロセッサ15がプログラム内の次の命令を実行
し、メモリ制御装置55からさらに別の新しい現在行を
要求する。
【0078】上述の説明ではコンピュータ・システムを
説明しているが、コンピュータ・システムを作動させる
方法を開示したことは明らかである。より特定すれば、
メモリ制御装置内に組み込んであり主メモリと結合して
いる主メモリ・プリフェッチ・キャッシュを提供する段
階を含むコンピュータの主メモリをアクセスする方法を
開示している。本法は、主メモリ・サイクルを開始させ
て主メモリから現在行を取り出す段階を含む。本法はさ
らに、メモリ制御装置により現在行がプリフェッチ・キ
ャッシュ内に保存してあるかを調べる段階を含む。現在
行がプリフェッチ・キャッシュ内に保存してあると判断
した場合、本法はプリフェッチ・キャッシュから現在行
を取り出すことと、現在行をプロセッサに提供すること
と、主メモリから次の行を取り出してプリフェッチ・キ
ャッシュ内の現在行を次の行で上書きすることを含む。
しかし現在行がプリフェッチ・キャッシュ内に保存して
いないと判断した場合、本法は主メモリから現在行を取
り出して現在行をプロセッサに提供することと、主メモ
リから次の行を取り出してプリフェッチ・キャッシュ内
の次の行に保存することを含む。
【0079】プリフェッチ・キャッシュがX個(Xは任
意の数)のキャッシュを含むような本法の実施におい
て、本法はさらにプリフェッチ・キャッシュ内のそれぞ
れのレジスタに対応するそれぞれの最低使用頻度(LR
U)カウンタを提供することとLRUカウンタのそれぞ
れを0からX迄の独自の所定の計数値で初期化すること
を含む。検索の段階で、キャッシュヒットにより、現在
行がプリフェッチ・キャッシュ内に保存されていると解
った場合、本法はキャッシュヒツトが発生したプリフェ
ッチ・キャッシュ内のレジスタに対応する特定のLRU
カウンタに保存してある計数値を消去することを含み、
さらに消去段階の前に特定のLRUカウンタの計数値よ
り小さい計数値のLRUカウンタを増分することも含
む。検索の段階で、キャッシュミスにより、現在行がプ
リフェッチ・キャッシュ内に保存されていないことが解
った場合、本法は最大計数値Xを有するLRUカウンタ
に対応するプリフェッチ・キャッシュ内のレジスタに次
の行を保存することを含み、さらに残りのカウンタを増
分することも含む。
【0080】前述の説明は分岐およびコード復帰命令に
対してマイクロプロセッサの実効的実行速度を向上させ
るキャッシュメモリを含むコンピュータ・システムを説
明した。開示したコンピュータ・システムは主メモリ内
のメモリ制御装置に組み込んであるプリフェッチ・キャ
ッシュメモリを使用して性能を大幅に向上させている。
本発明のコンピュータ・システムは余分なシステムのオ
ーバーヘッドを引き起こすことなくプリフェッチを実現
するような主メモリ・プリフェッチ・キャッシュを含
む。さらに、開示の主メモリ・プリフェッチ・キャッシ
ュはマルチプロセッサ方式コンピュータ・システムの性
能も向上させることが出来る。
【0081】図示のために本発明の幾つかの好適な特徴
だけを図示したが、多くの変更および変化が当業者には
可能であろう。よって本発明の請求の範囲は本発明の主
旨に含まれる全てのこのような変更および変化を包括す
ることを意図したものであることを理解すべきである。
【0082】
【発明の効果】本発明は分岐およびコード復帰命令に対
してマイクロプロセッサの実効的実行速度を拡大するよ
うなキャッシュメモリを備えたコンピュータ・システム
を提供する。
【図面の簡単な説明】
【図1】本発明による主メモリプリフェッチを使用する
コンピュータ・システムのブロック図である。
【図2】図1のコンピュータ・システム内のメモリ制御
装置のメモリアドレス制御回路部分のブロック図であ
る。
【図3】図1のコンピュータ・システムのプリフェッチ
・キャッシュメモリ回路部分のブロック図である。
【図4】図2のメモリアドレス制御回路内で使用する1
6タグレジスタの1つの詳細な模式図である。
【図5】図2のメモリアドレス制御回路部分で使用する
16個の最低使用頻度(LRU)カウンタの1つの詳細
な模式図である。
【図6】本発明の動作段階の概略を示す流れ図である。
【符号の説明】
10 コンピュータ・システム 15 マイクロプロセッサ 20 内部キャッシュ 25 外部キャッシュ 30 システムバス 35 ディスク制御装置 40 ハードディスク装置 45 通信制御カード 50 メモリ制御装置 55 プリフェッチ・キャッシュメモリ回路 60 主メモリ 65 データ線 70 メモリ素子 75 メモリアドレス制御回路 85 レジスタ/コンパレータ・ブロック 90 LRUカウンタブロック 95 エンコーダ 100 マルチプレクサ 198 プリフェッチ・キャッシュメモリ 220 16対1マルチプレクサ 225 入力レジスタ 230 2対1マルチプレクサ 245 D型フリップフロップ 320 LRUカウンタ

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサと、 前記プロセッサに結合したプロセッサ・キャッシュと、 前記プロセッサに結合したメモリ制御装置とを含み、 前記メモリ制御装置は、 主メモリ・プリフェッチ・キャッシュと、 前記プリフェッチ・キャッシュに結合してあり、前記マ
    イクロプロセッサから要求された時にキャッシュの適合
    が起こった場合は前記プリフェッチ・キャッシュから現
    在行を取り出すためであって、この場合には主メモリ内
    の前記現在行の後の次の行で前記プリフェッチ・キャッ
    シュ内の現在行を上書きするための制御手段を含むこと
    を特徴とするコンピュータ・システム。
  2. 【請求項2】 プロセッサ・キャッシュを使用するプロ
    セッサを含むコンピュータ・システムにおいて主メモリ
    をアクセスするための方法であって、 主メモリからの複数行を保存するための複数のプリフェ
    ッチ・キャッシュを含む主メモリ・プリフェッチ・キャ
    ッシュを前記主メモリに提供することと、 前記主メモリに対してメモリ・サイクルを起動して現在
    行を取り出すことと、 前記メモリ・サイクルの間に前記現在行についてキャッ
    シュ適合が前記プリフェッチ・キャッシュ内で発生する
    かを調べることと、 キャッシュ適合が発生する場合前記プリフェッチ・キャ
    ッシュからの前記現在行を先読みして前記主メモリから
    の次の行で前記プリフェッチ・キャッシュ内の前記現在
    行を上書きすることと、 前記プリフェッチ・キャッシュ内の最低使用頻度行を調
    べることと、 キャッシュ不適合が発生した場合、前記主メモリから前
    記現在行を取り出すことと、 キャッシュ不適合が発生した場合、前記現在行に継起す
    る主メモリからの次の行を前記最低使用頻度行の占有し
    ていたプリフェッチレジスタに格納することを含むこと
    を特徴とする方法。
  3. 【請求項3】 プロセッサ・キャッシュを使用するプロ
    セッサを含むコンピュータ・システムにおいて主メモリ
    をアクセスするための方法であって、 メモリ制御装置内に配置してあり前記主メモリと結合し
    た主メモリ・プリフェッチ・キャッシュを提供すること
    と、 主メモリ・サイクルを起動して前記主メモリから現在行
    を取り出すことと、 前記メモリ制御装置により前記現在行が前記プリフェッ
    チ・キャッシュ内に保存してあるかを調べることと、 前記現在行が前記プリフェッチ・キャッシュ内に保存し
    てあることが解った場合には前記プリフェッチ・キャッ
    シュから前記現在行を取り出して前記現在行を前記プロ
    セッサに提供し、さらに前記主メモリから次の行を取り
    出して前記次の行で前記プリフェッチ・キャッシュ内の
    前記現在行を上書きすることと、 前記現在行が前記プリフェッチ・キャッシュ内に保存し
    ていないことが解った場合には前記主メモリから前記現
    在行を取り出して前記現在行を前記プロセッサに提供
    し、さらに前記主メモリから前記次の行を取り出して前
    記プリフェッチ・キャッシュ内に前記次の行を保存する
    ことを含むことを特徴とする方法。
JP5339887A 1992-12-24 1993-12-07 主メモリ・プリフェッチ・キャッシュを含むコンピュータ装置とその作動方法 Pending JPH07129471A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/996,533 US5566324A (en) 1992-12-24 1992-12-24 Computer apparatus including a main memory prefetch cache and method of operation thereof
US996533 2001-11-28

Publications (1)

Publication Number Publication Date
JPH07129471A true JPH07129471A (ja) 1995-05-19

Family

ID=25543018

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5339887A Pending JPH07129471A (ja) 1992-12-24 1993-12-07 主メモリ・プリフェッチ・キャッシュを含むコンピュータ装置とその作動方法

Country Status (4)

Country Link
US (1) US5566324A (ja)
EP (1) EP0604139B1 (ja)
JP (1) JPH07129471A (ja)
DE (1) DE69331039T2 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0613087B1 (en) * 1993-02-24 2002-11-20 Matsushita Electric Industrial Co., Ltd. Apparatus and method for achieving high-speed data read access to memory
TW228580B (en) * 1993-10-01 1994-08-21 Ibm Information processing system and method of operation
CA2118278C (en) * 1993-12-21 1999-09-07 J. David Garland Multimedia system
US5832231A (en) * 1995-01-13 1998-11-03 U S West, Inc. Method and system for preloading interactive multimedia applications
US5689255A (en) * 1995-08-22 1997-11-18 Hewlett-Packard Company Method and apparatus for compressing and decompressing image data
US5740399A (en) * 1995-08-23 1998-04-14 International Business Machines Corporation Modified L1/L2 cache inclusion for aggressive prefetch
US5758119A (en) * 1995-08-23 1998-05-26 International Business Machines Corp. System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache
US5737565A (en) * 1995-08-24 1998-04-07 International Business Machines Corporation System and method for diallocating stream from a stream buffer
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
US5860138A (en) * 1995-10-02 1999-01-12 International Business Machines Corporation Processor with compiler-allocated, variable length intermediate storage
EP0782079A1 (en) * 1995-12-18 1997-07-02 Texas Instruments Incorporated Burst access in data processing systems
US5778422A (en) * 1996-04-04 1998-07-07 International Business Machines Corporation Data processing system memory controller that selectively caches data associated with write requests
US5983313A (en) * 1996-04-10 1999-11-09 Ramtron International Corporation EDRAM having a dynamically-sized cache memory and associated method
US5724613A (en) * 1996-05-06 1998-03-03 Vlsi Technology, Inc. System and method for automatically enabling and disabling a prefetching capability
US5867731A (en) * 1996-08-12 1999-02-02 Unisys Corporation System for data transfer across asynchronous interface
US6055600A (en) * 1996-12-19 2000-04-25 International Business Machines Corporation Method and apparatus for detecting the presence and identification of level two cache modules
US6490658B1 (en) * 1997-06-23 2002-12-03 Sun Microsystems, Inc. Data prefetch technique using prefetch cache, micro-TLB, and history file
US6073225A (en) * 1997-06-24 2000-06-06 Intel Corporation Method and apparatus for monitoring bus transactions based on cycle type and memory address range
US6317810B1 (en) * 1997-06-25 2001-11-13 Sun Microsystems, Inc. Microprocessor having a prefetch cache
US6138212A (en) * 1997-06-25 2000-10-24 Sun Microsystems, Inc. Apparatus and method for generating a stride used to derive a prefetch address
US6098154A (en) * 1997-06-25 2000-08-01 Sun Microsystems, Inc. Apparatus and method for generating a stride used to derive a prefetch address
DE69837936T2 (de) * 1997-12-17 2008-02-28 Aventis Pharmaceuticals Inc. (N.D.Ges.D.Staates Delaware) Verfahren zur quantifizierung von reaktionen in der festphase unter verwendung von fluor nmr
GB2348024B (en) 1999-03-16 2003-06-25 Ibm Cache memory systems
US6314494B1 (en) * 1999-04-15 2001-11-06 Agilent Technologies, Inc. Dynamically size configurable data buffer for data cache and prefetch cache memory
DE10009677A1 (de) * 2000-02-29 2001-09-06 Infineon Technologies Ag Programmgesteuerte Einheit
US7243339B2 (en) * 2001-07-03 2007-07-10 Hewlett-Packard Development Company, L.P. System and method to decrease program analysis overhead
US6721861B2 (en) 2001-12-28 2004-04-13 Arm Limited Indicator of validity status information for data storage within a data processing system
US7039764B1 (en) * 2002-01-17 2006-05-02 Nokia Corporation Near-perfect, fixed-time searching algorithm using hashing, LRU and cam-based caching
US7340566B2 (en) * 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US20040088490A1 (en) * 2002-11-06 2004-05-06 Subir Ghosh Super predictive fetching system and method
US6871246B2 (en) 2003-05-07 2005-03-22 Freescale Semiconductor, Inc. Prefetch control in a data processing system
US7039747B1 (en) * 2003-12-18 2006-05-02 Cisco Technology, Inc. Selective smart discards with prefetchable and controlled-prefetchable address space
US20060069746A1 (en) * 2004-09-08 2006-03-30 Davis Franklin A System and method for smart persistent cache
US7685365B2 (en) * 2004-09-30 2010-03-23 Intel Corporation Transactional memory execution utilizing virtual memory
US20060075394A1 (en) * 2004-10-01 2006-04-06 Tatsuya Iwamoto Dynamic loading and unloading for processing unit
US7882309B2 (en) * 2007-07-26 2011-02-01 Globalfoundries Inc. Method and apparatus for handling excess data during memory access
KR100981884B1 (ko) 2008-01-08 2010-09-14 한국과학기술원 컴퓨터 저장장치에서의 프리페칭 데이터 관리 방법
JP2014115851A (ja) * 2012-12-10 2014-06-26 Canon Inc データ処理装置及びその制御方法
GB2506706B (en) 2013-04-02 2014-09-03 Imagination Tech Ltd Tile-based graphics
US9384136B2 (en) 2013-04-12 2016-07-05 International Business Machines Corporation Modification of prefetch depth based on high latency event
US9367348B2 (en) 2013-08-15 2016-06-14 Globalfoundries Inc. Protecting the footprint of memory transactions from victimization
US9244724B2 (en) 2013-08-15 2016-01-26 Globalfoundries Inc. Management of transactional memory access requests by a cache memory
US10599570B1 (en) 2014-06-20 2020-03-24 Google Llc Expiration of offline map data
EP3258383A1 (en) * 2016-06-13 2017-12-20 Advanced Micro Devices, Inc. Dynamically adjustable inclusion bias for inclusive caches
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing
US10846253B2 (en) 2017-12-21 2020-11-24 Advanced Micro Devices, Inc. Dynamic page state aware scheduling of read/write burst transactions
US11768779B2 (en) * 2019-12-16 2023-09-26 Advanced Micro Devices, Inc. Cache management based on access type priority

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4371927A (en) * 1977-11-22 1983-02-01 Honeywell Information Systems Inc. Data processing system programmable pre-read capability
US4214303A (en) * 1977-12-22 1980-07-22 Honeywell Information Systems Inc. Word oriented high speed buffer memory system connected to a system bus
US4317168A (en) * 1979-11-23 1982-02-23 International Business Machines Corporation Cache organization enabling concurrent line castout and line fetch transfers with main storage
US4481573A (en) * 1980-11-17 1984-11-06 Hitachi, Ltd. Shared virtual address translation unit for a multiprocessor system
US4439829A (en) * 1981-01-07 1984-03-27 Wang Laboratories, Inc. Data processing machine with improved cache memory management
US4490782A (en) * 1981-06-05 1984-12-25 International Business Machines Corporation I/O Storage controller cache system with prefetch determined by requested record's position within data block
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
US4488222A (en) * 1982-05-10 1984-12-11 Ncr Corporation Circuit for reusing previously fetched data
US4583165A (en) * 1982-06-30 1986-04-15 International Business Machines Corporation Apparatus and method for controlling storage access in a multilevel storage system
US4603380A (en) * 1983-07-01 1986-07-29 International Business Machines Corporation DASD cache block staging
US4631660A (en) * 1983-08-30 1986-12-23 Amdahl Corporation Addressing system for an associative cache memory
US4669043A (en) * 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
US4916605A (en) * 1984-03-27 1990-04-10 International Business Machines Corporation Fast write operations
US4791642A (en) * 1986-10-17 1988-12-13 Amdahl Corporation Buffer error retry
US4933837A (en) * 1986-12-01 1990-06-12 Advanced Micro Devices, Inc. Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories
US4972316A (en) * 1987-03-30 1990-11-20 International Business Machines Corporation Method of handling disk sector errors in DASD cache
IT1215539B (it) * 1987-06-03 1990-02-14 Honeywell Inf Systems Memoria tampone trasparente.
US4847758A (en) * 1987-10-30 1989-07-11 Zenith Electronics Corporation Main memory access in a microprocessor system with a cache memory
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
US4918587A (en) * 1987-12-11 1990-04-17 Ncr Corporation Prefetch circuit for a computer memory subject to consecutive addressing
US4996641A (en) * 1988-04-15 1991-02-26 Motorola, Inc. Diagnostic mode for a cache
GB2235554B (en) * 1989-08-31 1993-11-17 Sun Microsystems Inc Computer system architecture for improved floating point performance
JP2892148B2 (ja) * 1990-11-21 1999-05-17 株式会社東芝 情報処理装置
US5420994A (en) * 1990-08-06 1995-05-30 Ncr Corp. Method for reading a multiple byte data element in a memory system with at least one cache and a main memory
US5247642A (en) * 1990-12-05 1993-09-21 Ast Research, Inc. Apparatus for determining cacheability of a memory address to provide zero wait state operation in a computer system
US5283880A (en) * 1991-01-02 1994-02-01 Compaq Computer Corp. Method of fast buffer copying by utilizing a cache memory to accept a page of source buffer contents and then supplying these contents to a target buffer without causing unnecessary wait states
JP2881049B2 (ja) * 1991-07-30 1999-04-12 株式会社日立製作所 プリフェッチバッファ
US5381539A (en) * 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management

Also Published As

Publication number Publication date
DE69331039D1 (de) 2001-12-13
EP0604139A1 (en) 1994-06-29
EP0604139B1 (en) 2001-10-31
DE69331039T2 (de) 2002-07-04
US5566324A (en) 1996-10-15

Similar Documents

Publication Publication Date Title
JPH07129471A (ja) 主メモリ・プリフェッチ・キャッシュを含むコンピュータ装置とその作動方法
US5499355A (en) Prefetching into a cache to minimize main memory access time and cache size in a computer system
KR100262906B1 (ko) 데이터 선인출 방법 및 시스템
US8725987B2 (en) Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data
US5664147A (en) System and method that progressively prefetches additional lines to a distributed stream buffer as the sequentiality of the memory accessing is demonstrated
JP3577331B2 (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
USRE45078E1 (en) Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems
US5737565A (en) System and method for diallocating stream from a stream buffer
US5740399A (en) Modified L1/L2 cache inclusion for aggressive prefetch
US5758119A (en) System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache
US5136700A (en) Apparatus and method for reducing interference in two-level cache memories
US5751994A (en) System and method for enhancing computer operation by prefetching data elements on a common bus without delaying bus access by multiple bus masters
US5230068A (en) Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US7493452B2 (en) Method to efficiently prefetch and batch compiler-assisted software cache accesses
JP3016575B2 (ja) 複数キャッシュ・メモリ・アクセス方法
US5715427A (en) Semi-associative cache with MRU/LRU replacement
EP1029280B1 (en) Cache memory operation
US5367657A (en) Method and apparatus for efficient read prefetching of instruction code data in computer memory subsystems
JPH09160827A (ja) コールド・キャッシュ命令のプリフェッチ
CN1127693C (zh) 保持指令、数据高速缓存之间相关性的方法和设备
US5287512A (en) Computer memory system and method for cleaning data elements
JPH04253240A (ja) コンピューターメモリシステムにおけるデータ統合方法
US5926841A (en) Segment descriptor cache for a processor
US5835945A (en) Memory system with write buffer, prefetch and internal caches
US5749092A (en) Method and apparatus for using a direct memory access unit and a data cache unit in a microprocessor