JPH06243039A - キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法 - Google Patents

キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法

Info

Publication number
JPH06243039A
JPH06243039A JP6002330A JP233094A JPH06243039A JP H06243039 A JPH06243039 A JP H06243039A JP 6002330 A JP6002330 A JP 6002330A JP 233094 A JP233094 A JP 233094A JP H06243039 A JPH06243039 A JP H06243039A
Authority
JP
Japan
Prior art keywords
cache
instruction
prefetch buffer
memory system
cache memory
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
JP6002330A
Other languages
English (en)
Other versions
JP3577331B2 (ja
Inventor
Thang Tran
タン・トラン
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JPH06243039A publication Critical patent/JPH06243039A/ja
Application granted granted Critical
Publication of JP3577331B2 publication Critical patent/JP3577331B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target 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/6022Using a prefetch buffer or dedicated prefetch cache
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

(57)【要約】 【目的】 命令バッファがキャッシュの中へデータを効
率的に書込めるようにする。 【構成】 上記の目的のためのキャッシュメモリシステ
ムは、命令キャッシュ10およびプリフェッチバッファ
36の組合せを特徴とする。これは、キャッシュとバッ
ファとを相互接続するバスに対するいかなる必要性をも
回避し、かつプリフェッチされた命令の利用を向上さ
せ、電力とシリコンスペースとの使用を低減して、命令
バッファがキャッシュの中にデータを効率的に書込める
ようにする。

Description

【発明の詳細な説明】
【0001】
【関連出願の相互参照】この出願は、ジョンソン(John
son )らによる「メモリ内のデータをアクセスするため
の方法、メモリシステムおよびメモリ制御システム」と
題された出願、ジョンソンらによる「コンピュータメモ
リシステム、データキャッシュ動作の方法およびデータ
キャッシュシステム」と題された出願、およびトラン
(Tran)による「ラッチ回路、データの受取りを制御す
るための装置、ラッチングを遅延させる方法、およびプ
リチャージ値の受取りを阻止する方法」と題された出願
に関する。
【0002】上に列挙した出願は、すべて本出願と同日
に提出されており、本発明の譲受人に譲渡されたもので
あって、またすべてここで引用により全体的に再現され
るかのように援用される。
【0003】
【発明の分野】この発明は電子デジタルデータ処理シス
テムに関し、より特定的にはメインメモリだけでなくキ
ャッシュメモリをも含む、電子デジタルデータ処理シス
テムに関する。
【0004】
【関連技術の説明】データ処理システムの改良は、一般
に所与の命令を実行するのに要求される平均時間の短縮
か、そのような命令を実行するのに要求される装置のコ
ストの低減かのどちらかに向けられてきた。典型的にな
されてきた設計上のトレードオフの1つは、データの記
憶のためのメモリのユニットにおける、コスト対スピー
ドについてのものである。たとえば、テープメモリは伝
統的にディスクメモリより速度が低く費用が少ない。そ
れに対しディスクメモリはいくつかのタイプが利用可能
であり、コスト/スピードのかねあいでどれか1つのタ
イプを他のタイプに優先させて選択することもできる。
ディスクメモリは固体メモリよりも低速だが、より安価
であり、固体メモリ自体もいくつかのタイプが入手可能
であってその選択はやはりコスト/スピードのトレード
オフに関わるものである。したがって、より安価で迅速
なメモリを提供するか、それができなければ現在あるタ
イプのメモリにおける効率を高めることが、当該技術分
野において依然として必要である。この発明はこの第2
のタイプの改良に関する。特定的にはこの発明は、関連
のキャッシュメモリとメインメモリとを有するホスト中
央処理装置(CPU)が、そのどちらのメモリからも記
憶されたデータを得るのに必要な平均時間を短縮するた
めの装置および動作の方法を提供する。
【0005】背景として、コンピュータシステムには一
般に1つより多くのタイプのメモリが提供されるという
ことを認識されたい。単一の迅速なメモリは非常に高く
つくだろうということを考えて、コンピュータ設計者ら
はこれまでデータおよび命令を保持するのにさまざまな
装置を用いており、各情報を入れておくところは、CP
Uがどれくらい緊急にその情報を必要とするかに基づい
て選択される。すなわち、一般に迅速ではあるが高価な
メモリはCPUがおそらく即座に必要とする情報を記憶
するのに用いられ、低速だが費用の少ない装置は、将来
使うために情報を確保しておくのに用いられる。
【0006】これまで、コンピュータシステムには多数
のメモリおよび記憶装置が使われてきた。長期にわたる
記憶は、一般にディスクおよびテープの記憶装置を用い
てなされる。ディスクおよびテープで実現されたデータ
記憶は、通常使用されているすべてのメモリおよび記憶
装置の中で現在最も遅く、一般にプロセッサによって実
際に使用されてはいないデータおよびプログラムを保持
するのに用いられる。ディスクおよびテープに記憶され
た情報をメインメモリに動かすには、比較的長い時間が
必要であるが、ディスクおよびテープの記憶装置からデ
ータを動かすのは時たまのことであり、CPUが全面的
に注意を向けずとも行なうことができるので、この遅さ
は許容できるものである。
【0007】もう1つのメモリ装置は、リードオンリメ
モリまたはROMである。典型的なアクセス時間が50
から200ナノセカンドの間であるROMは、コンピュ
ータがオフになってもその内容を保持する。ROMメモ
リは、典型的には機械を使用するために準備を行なう始
動プログラムを保持する。
【0008】システムのメインメモリに最もよく使われ
るもう1つのメモリ装置は、RAMメモリであって、こ
れはCPUがすぐに用いるための、ディスクまたはテー
プから持って来られたデータおよびプログラム命令の記
憶に使用される。メインメモリは通常、いくつかのダイ
ナミックRAM(「DRAM」)チップを含む。プロセ
ッサはこれらDRAMの内容を約100ナノセカンドで
検索できるので、このタイプのメモリはスピードではR
OMに匹敵する。
【0009】さらにもう1つのタイプのメモリ装置は、
キャッシュメモリである。キャッシュメモリは、普通い
くつかのスタティックRAM(「SRAM」)チップを
含む。キャッシュメモリはメインメモリより最高で10
倍動作が速く、CPUが次に最も必要としそうな動作命
令およびデータを保持するように設計されているので、
コンピュータの動作速度を高めるものである。
【0010】最後に、CPU内の少量のメモリは、CP
Uメモリまたはレジスタと呼ばれる。スピードのために
最適化されたスタティックRAM回路でできた、プロセ
ッサ内のデータレジスタは、すべての中で最も速いメモ
リである。プログラムレジスタは次のプログラム命令の
メモリにおける記憶位置を記憶し、一方命令レジスタは
実行されている命令を保持し、汎用レジスタは処理中の
短い間、データを記憶する。
【0011】前述のことに基づき、コンピュータシステ
ムの中にキャッシュメモリ構成を含み、ひんぱんにアク
セスされるデータの迅速な局所記憶のための位置を提供
することが、当業者には知られているということを認識
されたい。キャッシュシステムはマイクロプロセッサの
メモリ参照の各々をインタセプトし、要求されるデータ
のアドレスがキャッシュ内にあるかどうかを調べる。デ
ータが実際にキャッシュの中にあれば(「ヒット」)、
そのデータはメインシステムメモリにアクセスするのに
必要な待ち状態を招くことなく即座にマイクロプロセッ
サに戻される。データがキャッシュの中になければ
(「ミス」)、メモリアドレス参照がメインメモリ制御
装置に送られ、データはメインメモリから検索される。
キャッシュヒットは局所的にサービスされるので、局所
キャッシュメモリの外で動作するプロセッサは「バス利
用度」がずっと低く、それによりシステムが要求するバ
ス帯域幅が減じられて、より多くのバス帯域幅が他のバ
スマスタに利用可能になる。これは重要なことである
が、なぜかというと当業者にはよく知られているよう
に、コンピュータの中のバス、すなわちCPUとシステ
ムのメモリおよび記憶装置との間の通信チャネルは、主
要な障害だからである。処理されるべきすべての命令お
よびすべてのデータは、事実上このルートを少なくとも
1回は移動しなければならない。特に単一のメモリと複
数のプロセッサとを含むシステムでは、バスを効率的に
使用してシステムの性能を最大限にすることが不可欠で
ある。
【0012】前述のように、キャッシュメモリシステム
はメモリ参照をインタセプトし、それらがキャッシュ内
で「ミス」であった場合のみシステムメモリに送る。先
行技術の米国特許の多くはキャッシュメモリおよびメモ
リにアクセスする方法のさまざまな局面に向けられてお
り、これらは以下の特許を含むキャッシュメモリ部分を
含む。すなわちジーグラー(Ziegler )らへの米国特許
第4,794,521号、ウェザフォード(Weatherfor
d )らへの米国特許第4,646,233号、モレノ
(Moreno)らへの米国特許第4,780,808号、ジ
ーグラーらへの米国特許第4,783,736号、ジョ
イス(Joyce )らへの米国特許第4,195,342
号、クロフト(Kroft )らへの米国特許第4,370,
710号、ドッド(Dodd)への米国特許第4,476,
526号、シューネマン(Scheuneman)への米国特許第
4,070,706号、カプリンスキー(Kaplinsky )
への米国特許第4,669,043号、ハムストラ(Ha
mstra )への米国特許第4,811,203号、ジョイ
スらへの米国特許第4,785,398号、ギャノン
(Gannon)らへの米国特許第4,189,770号、お
よびランゲ(Lange )らへの米国特許第3,896,4
19号である。キャッシュメモリシステムに多くの関心
が寄せられ、上に列挙した米国特許によってそのような
システムに対し数多くの進歩が明示されているにもかか
わらず、そのようなシステムには、まだいくつかの短所
および欠点が残っている。たとえば、プロセッサにより
フェッチされる最も最近の命令を記憶するための命令キ
ャッシュとそれに伴なう命令プリフェッチバッファとで
システムを構成することが知られている。現在、命令キ
ャッシュと命令プリフェッチバッファとは2つの別個の
ブロックとして実現されている。そのような実現例で
は、命令はデコード/実行に送られる際にだけ命令キャ
ッシュを更新する。命令キャッシュはワードのブロック
1つにつき有効ビット1つで形成されてもよいし、キャ
ッシュ内の各ワードにつき1つの有効ビットで形成され
てもよい。ワードのブロックごとに有効ビットが1つあ
る場合、バスインタフェースユニットは他のアクセスを
許容する前にバスにブロック全体をフェッチさせる。ワ
ードごとに有効ビットが1つある場合、取られた分岐は
プリフェッチされたバッファ内のすべての命令を無効に
する。上に述べたことは各々、実際上設計における短所
である。命令キャッシュとプリフェッチバッファとを2
つの独立したブロックとして実現することのもう1つの
不利な点は、データをプリフェッチバッファから命令キ
ャッシュへ転送するのに、32ビットバスが要求される
ということである。
【0013】
【発明の概要】上で記述された短所および欠点を克服す
るため、この発明は命令キャッシュと、命令キャッシュ
に直接かつ作動的に接続されるプリフェッチバッファと
を含む、キャッシュメモリシステムを提供する。そのよ
うな命令キャッシュおよびプリフェッチバッファの組合
せは、2つの素子を相互接続するバスのいかなる必要性
をも回避し、さらにはプリフェッチされた命令の使用を
改良しかつ電力およびシリコン領域の使用を減じて、命
令バッファがデータを効率的にキャッシュに書込めるよ
うにする。
【0014】この発明は、命令が要求されていることを
判断するステップと、要求される命令が命令キャッシュ
およびプリフェッチバッファシステムの命令キャッシュ
部分にあるかどうかを判断するステップと、もしそこに
あれば要求される命令を命令キャッシュ部分からフェッ
チするステップと、もし命令キャッシュ部分になければ
要求される命令を外部メモリからフェッチするステップ
とを含む、マイクロプロセッサ内の命令を操作するため
の方法をも提供する。さらにこの発明の教示に従う方法
は、命令キャッシュおよびプリフェッチバッファシステ
ムのプリフェッチバッファ部分の中の外部メモリからの
フェッチされた命令を受取るステップと、フェッチされ
た命令を同時に前記マイクロプロセッサの命令キャッシ
ュ部分と処理ユニット部分とに送って実行させるステッ
プとを含む。
【0015】したがって、この発明の目的はデータをキ
ャッシュに書込むための命令バッファを効果的に実現す
ることである。
【0016】この発明の別の目的は、プリフェッチされ
た命令をより有効に使用するプリフェッチバッファおよ
び命令キャッシュの組合せを提供することである。
【0017】この発明のさらに別の目的は、それが取っ
て替わる先行技術の装置よりも使用する電力およびシリ
コンスペースが少ないプリフェッチバッファおよび命令
キャッシュの組合せを提供することである。
【0018】この発明の他の目的、利点および新規な特
徴は、以下に述べる発明の詳しい説明に基づき、添付の
図面との関連で明らかになるであろう。
【0019】
【発明の詳しい説明】この発明を説明する際に便宜を図
りかつわかりやすくするため、まずこの発明の教示に従
って組合せられてよい、命令キャッシュの特定の一例と
プリフェッチバッファの特定の一例とについて説明す
る。次に、組合せられた命令キャッシュおよびプリフェ
ッチバッファを特徴とするこの発明の一実施例が説明さ
れる。この説明に続き、この発明の代替的実施例を案出
するべく引き出され得るさまざまな教示を論じるつもり
である。
【0020】ここで、同じまたは類似の要素がいくつか
の図面に一貫して同一の参照番号で表されている図面、
より特定的には図1を参照すると、包括的に参照番号1
0で表される命令キャッシュが示される。命令キャッシ
ュ10はもちろん、この発明の実施例においてその1ま
たは2以上が使用され得る、同じまたは類似の機能を行
なうことのできるいくつかのキャッシュのただ1例にす
ぎない。そのことを念頭に置いて、示されている命令キ
ャッシュ10はキャッシュアレイ12とタグステータス
アレイ14とを含む。キャッシュアレイ12は(さらに
後の部分で詳しく説明する)4キロバイトのツーウェイ
セットアソシアティブキャッシュである。キャッシュ1
0におけるブロックのサイズは4ワード(16バイト)
である。キャッシュ10は従来、関連のプロセッサ(図
示せず)によって最も最近にフェッチされた命令を記憶
し、かつさらに各キャッシュブロックのためのステータ
ス情報を維持する。
【0021】命令キャッシュ10は、構成レジスタ内の
命令キャッシュ不能化ビットによって能動化されたり不
能化されたりしてよい。命令キャッシュ10が能動化さ
れると、命令のフェッチはキャッシュ10によって満た
されるだろう。命令キャッシュ10が不能化されると、
命令のフェッチは外部の命令/データメモリによっての
み満たされ、キャッシュ10はフェッチされた命令を記
憶しない。さまざまな命令がキャッシュ10を無効にす
るだろう。
【0022】キャッシュ10内のクリティカルルーチン
を保つには、命令キャッシュ10内のブロックは上述の
構成レジスタの命令キャッシュロックフィールドによっ
てロックされてよい。命令キャッシュロックフィールド
は、キャッシュ10内のすべてのブロックをロックする
こともできるし、特定の列内のブロックをロックするこ
ともできる。ブロックがロックされた場合、それが有効
であれば交換することはできない。ロックされたブロッ
クは無効であれば割当てられてよく、これによりクリテ
ィカルルーチンは単にそのルーチンをキャッシュ10が
無効にされた後で実行するだけでキャッシュ10の中に
ロードできるようになる。ロックされたブロックはま
た、キャッシュも不能化されていない限り無効にはでき
ないが、その場合不能化がロックに優先する。
【0023】命令キャッシュ10は1ワード当り1つの
有効ビットを有するので、部分的に有効なブロックをフ
ェッチしかつ記憶することができる。リロードの間、ワ
ードの有効ビットは、そのワードがキャッシュに書込ま
れる際にセットされる。すべての有効ビットはプロセッ
サリセットによって、または前述の無効化命令の1つを
実行することによって、単一のサイクルの間にクリアさ
れる。
【0024】各命令キャッシュブロックは、キャッシュ
インタフェースレジスタおよび/またはキャッシュデー
タレジスタを介してアクセス可能であろう。キャッシュ
インタフェースレジスタはアクセスされたブロックへの
ポインタを含み、アクセスされたフィールドを特定す
る。キャッシュデータレジスタはデータをキャッシュへ
およびキャッシュから転送するのに用いられてよい。そ
のようなキャッシュデータレジスタの内容は、キャッシ
ュの書込またはレジスタの読出の際に消えてしまうかも
しれないので、キャッシュ10はキャッシュのリローデ
ィングからの干渉を防ぐためキャッシュフィールドが読
出や書込をされている間は不能化されるべきである。
【0025】ここで図2を参照すると、包括的に参照番
号16で表される個々の命令キャッシュブロックの編成
が示される。図2では、ブロック16が複数個の命令ワ
ード18を関連のアドレスタグおよびステータス表示部
20とともに含むということが見てとれるだろう。考え
られるステータスの表示としては、図2で示される「有
効」の他に、スーパバイザモードであるかユーザモード
であるかの表示、アドレスが(変換された/されていな
い、および物理アドレス/仮想アドレス)であるといっ
た表示が含まれる。キャッシュ10にはそのようなブロ
ック16が256個あり、各々128ブロックの2つの
列として編成される。アクセスには、特定の列およびブ
ロックが第1のフィールドにおけるいくつかのビット
(すなわち命令アドレスにおけるビット10−4)によ
って選択される。次に、ブロック内のアクセスされたフ
ィールドは第2のフィールド(すなわちビット31:1
1)と比較される。命令ワードがアクセスされると、命
令はさらにアドレスの下位の2ビット(すなわちビット
3−2)によって選択される。もちろん、当業者には明
らかであろうように、そうしなければアクセスがすぐに
悪影響を受ける。
【0026】ここで図3を参照すると、キャッシュデー
タレジスタ内の、包括的に参照番号22で表される命令
ワードが示される。図3は、32ビット命令が命令キャ
ッシュ10(図1を参照)から読出され、またはそこへ
書込まれてよいということを示す。
【0027】ここで図4を参照して、キャッシュデータ
レジスタ内の命令アドレスタグおよびブロックステータ
スが示される。図4では、(包括的に参照番号24で表
される)ビット31ないし11が命令アドレスタグフィ
ールドを構成することが見てとれるだろう。命令アドレ
スタグフィールド24は、キャッシュブロックによって
どのアドレスが満たされるかを特定する。図4で示され
る特定の実施例では、たとえばビット10ないし6(参
照番号26で表される)が予約されている。ビット5な
いし2(包括的に参照番号28で示される)は有効ビッ
トである。対応する命令ワードが有効であれば、このフ
ィールドにはビットがセットされる。ここで説明される
特定の実施例では、最上位ビットはブロック内の4番目
のワードのための有効ビットであり、最下位ビットはブ
ロック内の第1のワードのための有効ビットである(図
2参照)。キャッシュ内のすべての有効ビットは単一の
サイクルでプロセッサリセットによって、および無効化
命令の実行によってクリアされる。最後に、図4で示さ
れる特定の実施例では、ビット1−0(包括的に参照番
号30で表される)はステータスビットである。
【0028】キャッシュヒットおよびミスに関連して、
サイクルごとに、プロセッサのプログラムカウンタのビ
ットがキャッシュアレイ12およびタグアレイ14(図
1参照)にアクセスするのに用いられる。プログラムカ
ウンタのビット10−4はキャッシュアレイ12および
タグアレイ14の列0および1にアクセスするのに用い
られる。タグフィールドがアレイから読出される際、プ
ログラムカウンタのビット31−11は各列のタグエン
トリにおいて命令アドレスタグフィールド(たとえば図
4のフィールド24)と比較される。列の1つに対して
プログラムカウンタのビット31−11が命令アドレス
タグフィールド(たとえばフィールド24)と一致し、
かつステータスビットが一致し、アクセスされたワード
の有効なステータスビットが1であり、命令キャッシュ
が不能化されていれば、キャッシュヒットが検出され
る。いずれかの列のブロックに対してこれらの条件があ
てはまらなければ、キャッシュミスが起こる。
【0029】キャッシュミスが検出されてキャッシュ1
0が能動化されると、プロセッサは外部命令フェッチを
開始することによって求められている命令をキャッシュ
内に位置付けようとする。これは「キャッシュリローデ
ィング」と呼ばれる。キャッシュ10が不能化される
と、プロセッサは不能化されたキャッシュを更新しない
ので、求められている命令はキャッシュの中に位置付け
られない。同様に、プロセッサはロックされた列内の有
効なブロックを交換しない。
【0030】ミスが検出されると、普通は交換のために
候補ブロックが選択され、リロードされた命令は選択さ
れたブロックの中に位置付けられる。多くの交換アルゴ
リズムを使用することができるが、その1つは以下のよ
うなものである。
【0031】・キャッシュサーチの間にアクセスされた
ブロックの1つが無効であれば、この無効ブロックは選
択されて交換される。双方の列が無効ブロックを含んで
いれば、列0のブロックが選択される。
【0032】・双方のブロックが有効であり、かつどち
らもロックされていない場合、交換されるブロックは任
意に選択される。
【0033】・列0のブロックがロックされておりかつ
有効であり、列1のブロックがロックされていなけれ
ば、列1のブロックが選択される。
【0034】・キャッシュ全体がロックされており、ど
ちらの列にあるブロックも有効であれば、どのブロック
も交換することはできない。命令のフェッチは外部メモ
リによって満たされ、命令はキャッシュの中に入れられ
ない。
【0035】一旦候補ブロックが選択されると、そのタ
グは求められているアドレスに応じてセットされ、すべ
ての有効ビットがリセットされる。外部命令フェッチ
は、プロセッサが要求する命令で始まり、分岐または優
先度の高い外部アクセスが起こるかキャッシュ10の中
に命令が見つかるまで続く。プロセッサは最初の命令が
受け取られるとすぐに命令を実行し始め、実行と並行し
て残りのキャッシュリロードが起こる。最初の命令がフ
ェッチされた後、後に続くブロック内の命令がフェッチ
され、外部メモリから受け取られるにつれてキャッシュ
の中に書込まれる。ワードのための有効ビットは、フェ
ッチにDRAMエラーが全くないと仮定すると、ワード
が書込まれたときにセットされるが、エラーがあれば有
効ビットはセットされない。プロセッサパイプラインが
プリフェッチの間に立ち往生すると、ブロックの残りの
ために受け取られた命令は(後に説明する)プリフェッ
チバッファの中に入れられ、デコード段がそれらを受入
れられるようになるまでそこに留まる。
【0036】リロードの間に取られた分岐が起こるか、
優先度の高い動作(たとえばDMA、ロードミス、また
はストアされたバッファがいっぱいになってしまったこ
と)のためにメモリインタフェースが必要とされる場
合、リロードは即座に止められ、分岐が取られるか、ま
たは他の外部アクセスが行なわれる。その後、次に要求
される命令がキャッシュの中になければリロードが再開
されるだろう。分岐の場合、目標とされる命令のために
リロードが生じるかもしれない。
【0037】命令のプリフェッチに関連して、プロセッ
サは外部フェッチを開始した後、求められているワード
を越えても命令を外部でフェッチし続けなければならな
いかもしれない。実行に先立ってそのような命令が要求
された場合、外部メモリには、そのメモリに十分な帯域
幅があれば、待ち状態なしでフェッチを行なうのに余る
ほど十分な時間を与えられる。これは、バーストモード
またはページモードのメモリシステムに特に適切であ
る。
【0038】理想的には、命令キャッシュ10でのよう
に命令キャッシュを使用するシステムは、キャッシュミ
スをサービスしながら次にシーケンシャルなキャッシュ
ブロックがあるか否かを確認する。そのような場合、現
在のブロックのフェッチが完了する前に、プロセッサは
次のブロックが存在するかどうかを知る。プロセッサは
ブロック内のすべての命令が有効であれば、次のブロッ
クが存在するものと考える。有効でない命令が1つでも
あれば、プロセッサはブロック全体が存在しないものと
考えて外部フェッチを続け、必要であればタグフィール
ドをセットすることによってブロックを割り当てる。プ
ロセッサは現在のブロックのためのすべてのフェッチを
開始してしまえば即座に次のブロックに対するプリフェ
ッチを開始することができるが、現在のブロックの中に
次のブロックを不必要なものとする取られた分岐がにあ
る場合はその限りではない。
【0039】外部でフェッチされた命令は、それらが受
け取られた後のサイクルでプリフェッチバッファ(図5
参照)に入れられる。プリフェッチバッファから、命令
はキャッシュに書込まれ、デコーダに送られる。デコー
ダがパイプラインの立ち往生(stall) のために命令を受
入れられない場合、その命令は立ち往生の状態がもはや
なくなるまでプリフェッチバッファの中に留まる。命令
は、デコーダに送られキャッシュに書込まれて初めてプ
リフェッチバッファから回収される(retired)。
【0040】したがって、プリフェッチバッファの主な
目的は、命令キャッシュを含むシステムがプロセッサの
デコーダ段に直接に結合されることによる複雑化を伴わ
ずに外部命令フェッチを中断するための、便利な、およ
び/または効果的な点に到達できるようにすることであ
る。たとえばロードミスは、命令キャッシュのリロード
のキャンセルを待って、リロードがキャンセルされるま
でパイプラインホールドを引起こす。パイプラインホー
ルドの間、デコーダはリロードされた命令を受取ること
には使えない。パイプラインホールドの状態が検出され
るとき、プロセッサはフェッチのさまざまな段にある3
つの命令を有する。プリフェッチバッファはこれらの命
令をキャッシュ10に書込むおよび/またはデコーダに
送ることができるようになるまで記憶しておくのに用い
られる。パイプラインホールドの間に受け取られる命令
は、そうするための自由なサイクルがあるにもかかわら
ず、キャッシュ10に書込まれることはない。それを行
なうと、キャッシュプログラム制御装置がプロセッサの
フェッチプログラム制御装置と違ったものになり、プロ
セッサによって必要とされる命令がキャッシュ10から
すぐに入手可能でないため、パイプラインの再開始を複
雑にするだろう。パイプラインホールドの間、プロセッ
サが要求する次の命令はプリフェッチバッファの中で保
持される。このことはフェッチ装置の動作を簡略化す
る。すなわちパイプラインホールドに応じてプリフェッ
チバッファとキャッシュとの間で切換えを行なうより
も、リロードの間命令は常にプリフェッチバッファによ
って供給されると仮定する方が簡単なのである。
【0041】この発明の命令キャッシュを含む、より大
きいシステムの実施例では、プリフェッチすることで、
次の要求されるブロックがキャッシュ10にあると判断
されるまでキャッシュの割当、外部フェッチ、およびリ
ローディングが続くようにされ得る。次に要求されるブ
ロックは順次的にアドレス指定されてもよいし、非順次
的にアドレス指定されてもよい。順次的アドレス指定で
は、プロセッサは現在のブロックのリロードに関してあ
るきまった時間にヒットについて知る。対照的に、非順
次的フェッチはリロード中のどの時点でも起こり得る。
【0042】分岐のため命令のプリフェッチを終わらせ
ることは、いくつかの要素によって複雑化される。第1
に、命令はブロックがリロードされている間に実行され
るので、分岐は現在のブロックをリロードしている間の
どの時点でも起こり得る。第2に、目標とされる命令
は、キャッシュ10の中でヒットすることもあり得るし
ミスすることもあり得る。目標がヒットであれば、プロ
セッサは外部フェッチを終了する。目標がミスであれ
ば、プロセッサは現在のフェッチを止めて新しいフェッ
チを再開しなければならない。最後に、現在のブロック
のリロードは目標とされる命令がフェッチされ得るより
前にキャンセルされなければならない。
【0043】分岐がプリフェッチの間にとられるなら
ば、次の順次的なアドレス指定されたブロックのプリフ
ェッチを止めるのには、このブロックが必要とされるの
は、たとえば次のブロックに分岐遅延命令があるために
その分岐がブロックにおける最後の命令である場合のみ
であっても、決して十分な時間はない。したがって、い
くらかの外部メモリ容量が、必要とされるフェッチのた
めに分岐を越えてとられ、これらの命令はキャッシュ1
0の中に存在しなくても排棄される。命令キャッシュと
バッファされたデータキャッシュとを両方とも含むシス
テムでは、外部メモリインタフェースが同時に命令とデ
ータアクセスとのために必要とされることはまれであ
る。しかしながら、命令がキャッシュリロードの間にデ
コードされた場合、もし命令のリロードの間にデータキ
ャッシュ内でロードがミスするか、または一杯になった
書込バッファに記憶が行なわれるならば、命令およびデ
ータアクセスの間で衝突があるかもしれない。
【0044】データアクセスが命令のアクセスと衝突し
た場合、命令のフェッチはデータアクセスをサービスす
る前にキャンセルされるだろう。データアクセスを作り
出すロードまたは記憶の命令は、リロードがキャンセル
されるのを待っている間に実行を完了することを許され
る。しかしながら、ロードまたは記憶はライトバック段
で保持され、後に続く命令はもっと早いパイプライン段
に保持される。これにより、外部ロード/記憶アクセス
は命令のフェッチがキャンセルされた直後に開始するこ
とができる。
【0045】一旦データアクセスのサービスが完了する
と、外部フェッチを再び始めることができる。これは、
キャッシュのミスを検出しかつ外部フェッチを開始する
のに用いられる通常のメカニズムによってトリガされて
よい。別のデータアクセスがリロードが始まる前に要求
される場合(すなわち別のロードまたは記憶が命令のス
トリームの中で第1のロードまたは記憶のすぐ後に続く
場合)、リロードの前に第2のロードまたは記憶が行な
われる。
【0046】ロードまたは記憶が分岐の遅延命令であ
り、分岐の目標がキャッシュ10の中でミスである場
合、その分岐の目標とされる命令のフェッチはロードま
たは記憶のための外部アクセスが行われる前に完了され
てよい。
【0047】命令キャッシュ10がマッピングされたD
RAMアドレスでアクセスされた場合、DRAMマッピ
ングがキャッシュ10における命令のマッピングに影響
を与えるようなやり方で変化させられると必ず、キャッ
シュ10のすべての内容はフラッシュされる(flush) だ
ろう。フラッシュは各キャッシュブロックのすべての有
効ビットをリセットすることによって達成される。有効
ビットは、プロセッサのリセットによって、ならびに割
込復帰および/または無効または類似の機能を実行する
ことによって単一の各サイクルの中でリセットされてよ
い。
【0048】無効化命令が実行される場合、システム
は、次の分岐または次のキャッシュブロック境界のうち
どちらか先のものが来るまで有効ビットをリセットしな
い。無効化命令がブロックにおける最後の命令であれ
ば、無効化が起こるブロック境界は次のブロックの終わ
りにある。これにより、プロセッサパイプラインは無効
化命令が実行されるとデコード中の命令の実行を完了で
きるようになり、それを強制的にパイプラインの中で無
効化し外部で再フェッチすることはない。
【0049】命令キャッシュと命令プリフェッチバッフ
ァとを個別に説明してきたが、これよりこの発明の教示
に従ったそれらの組合せについて論じる。そのような組
合せを説明するにあたって便宜を図りかつわかりやすく
するために、たくさんの可能な例の中からただ一例に焦
点をあてる。この例は4ワード命令プリフェッチバッフ
ァ、すなわち命令キャッシュ(図2参照)のブロックの
サイズと同じ数のワードを有するバッファを仮定する。
キャッシュ自体は各々32ビットを備える4つのブロッ
クとして編成され、各キャッシュブロックに4つのプリ
フェッチバッファが実現される。プリフェッチバッファ
はキャッシュと直接に接続されて実現されるので、バス
は全く必要ではない。
【0050】ここで図5を参照すると、この発明の教示
に従う組合せの命令キャッシュおよびプリフェッチバッ
ファが示される。より特定的には、図5では命令キャッ
シュの第1のブロック(包括的に参照番号32で表され
る)、および同じ命令キャッシュの第2のブロック(包
括的に参照番号34で表される)が、その間に配設され
かつ直接に接続されたプリフェッチバッファ(包括的に
参照番号36で表される)とともに示される。プリフェ
ッチバッファ36は4ワードバッファとして表され、命
令キャッシュのブロックサイズと、ワード数の点で対応
する。構造および動作についてのさらなる詳細は以下で
述べられる。しかしながら、一般に図5で示される装置
は外部メモリの代わりとなる迅速なメモリとして働くも
のである。
【0051】図5で表される装置の動作をこれより説明
するが、要求される命令がキャッシュの中にない場合、
それらは外部メモリからフェッチしなくてはならない。
プリフェッチバッファ(たとえばバッファ36)は命令
を受取り、それらを記憶のためのキャッシュと実行のた
めの中央処理装置との双方に送る。
【0052】場合によっては、キャッシュには現在の命
令のブロックはあっても次の命令のブロックはないかも
しれない。そのような場合には、次のブロックをプリフ
ェッチすることができる。現在のブロックの完了にあた
って、次の命令がすでにプリフェッチバッファの中に存
在するだろう。これにより、デコードユニットへの命令
のストリームが中断されないということが確実になる。
次のブロックで早くとられた分岐は、デコードユニット
に送る際にキャッシュを更新するだけなので、プリフェ
ッチ命令のほとんどを無駄にするだろう。
【0053】プリフェッチバッファ36は通常書込およ
び読出のカウンタで実現される。新しくフェッチされた
命令は書込カウンタを増加させ、読出カウンタは命令が
デコードに送られる際に増加する。書込カウンタは命令
バッファの先頭を指し、読出カウンタは命令バッファの
末尾を指す。命令バッファは先入れ先出しで動作する。
プリフェッチバッファ36内の有効な命令を示すのに
は、1組の有効ビットを用いることもできる。もう1組
の有効ビットを、命令がキャッシュを更新したかどうか
を示すために用いることができる。キャッシュに書込を
行ない、デコードに命令を送るために1組の制御を行な
う代わりに、2つの動作は独立している。このためにか
かるのはキャッシュへのデータの書込を示すための追加
された4つの有効ビットである。
【0054】プリフェッチバッファ36内の命令はブロ
ックアドレス(すなわち4ワードのブロック内のワー
ド)とともにアドレスを有していなければならない。そ
のような装置の最も大きな利点は、次の命令のブロック
がプリフェッチされたときに顕著となる。そのような場
合、プログラムカウンタが次のブロックまで増加するに
つれて、プリフェッチされた命令のすべてが即座にキャ
ッシュを更新することができる。キャッシュを一度に更
新することによって、動作電力の要求は低減される。分
岐がとられると、インタフェースユニットは通常必要な
命令を越えていくつかのワードをフェッチする。ブロッ
ク内のこれら余分なワードはここでキャッシュに入れる
ことができる。
【0055】前述のように、図5の実施例はこの発明の
教示に従うプリフェッチバッファおよび命令キャッシュ
の組合せにおける可能な実施例の1つにすぎない。図5
の実施例はマッピングの形式、すなわち1つのセットの
要素と別のセットの要素との間に直接な対応関係が確立
される動作を用いる。図6ないし8はマッピングの代替
例を表わす。図6はダイレクトマッピングを示す。ダイ
レクトマッピングの配列では、各アドレスはデータアレ
イの中のデータの単一のセットに対応する。そのような
配列ではリクエストの上位ビット38は、タグアレイ4
0の中へ送り込まれ、リクエストの下位ビット42はデ
コーダ44に送り込まれる。デコーダ44とタグアレイ
40とは次に協働してデータアレイ48のデータの選択
ブロック46に導かれる。
【0056】図7はツーウェイセットアソシアティブマ
ッピングを表わす。図7で表されるツーウェイセットア
ソシアティブマッピングは、図6で表されるダイレクト
マッピングとは2つのタグ50および52、ならびに2
つのデータのブロック54および56が互いに対応する
という点で異なっている、すなわち図6の配列のように
単に1対1の対応関係があるわけではない。
【0057】図8はさらに別の代替的なマッピング技
術、すなわちフルアソシアティブマッピングを表わす。
フルアソシアティブマッピングではタグアレイ40とデ
ータアレイ48とのそれぞれの間に直接的な完全にアソ
シアティブな関係があり、デコーダの必要性を回避して
いる。
【0058】前に述べたことすべてに基づいて、当業者
はこの発明がプリフェッチバッファを直接作動的に接続
された命令キャッシュを含むキャッシュメモリシステム
を提供するものであるということを今や完全に理解かつ
認識しているはずである。この発明はまた、プロセッサ
内の命令を操作するための方法をも提供する。この発明
の実施例は、命令キャッシュおよびプリフェッチバッフ
ァを相互接続するバスが必要とされず、命令バッファが
プリフェッチされた命令の利用を改良し、電力とシリコ
ンスペースとの使用を減じてキャッシュ内にデータを効
果的に書込むことができるようになるので、先行技術に
勝る改良となる。この発明の実施例を構成するにあた
り、ダイレクトマッピング、ツーウェイセットアソシア
ティブマッピング、およびフルアソシアティブマッピン
グのようなマッピングを何タイプ用いてもよい。
【0059】上の教示に照らして、この発明に対し数多
くの修正および変形がなされてよいことは明らかであ
る。したがって、前掲の特許請求の範囲内で、この発明
は本文中で特定的に述べられたものと異なって実施され
てもよい。
【図面の簡単な説明】
【図1】命令キャッシュ編成のブロック図である。
【図2】命令キャッシュ内の命令ブロックの図である。
【図3】キャッシュデータレジスタ内の命令ワードの図
である。
【図4】キャッシュデータレジスタ内の命令アドレスタ
グおよびブロックステータスの図である。
【図5】この発明の教示に従う、プリフェッチバッファ
および命令キャッシュの組合せの図である。
【図6】ダイレクトマッピング、すなわちこの発明の実
施例で用いられてよい1コンセプトを表わす図である。
【図7】ツーウェイセットアソシアティブマッピング、
すなわちこの発明の実施例で用いられてよい1コンセプ
トを表わす図である。
【図8】フルアソシアティブマッピング、すなわちこの
発明の実施例で用いられてよい1コンセプトを表わす図
である。
【符号の説明】
10 命令キャッシュ 12 キャッシュアレイ 14 タグステータスアレイ 32 命令キャッシュの第1のブロック 34 命令キャッシュの第2のブロック 36 プリフェッチバッファ

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 キャッシュを含み、前記キャッシュは各
    ブロックにつき複数個のビットのある、複数個のブロッ
    クで形成され、さらにプリフェッチバッファを含み、前
    記プリフェッチバッファは前記キャッシュを形成するブ
    ロックの前記数に等しい数の複数個のブロックで形成さ
    れ、かつ前記プリフェッチバッファは直接作動的に前記
    キャッシュに接続され、 前記キャッシュと前記プリフェッチバッファとを相互接
    続するバスの使用は必要とされない、キャッシュメモリ
    システム。
  2. 【請求項2】 前記プリフェッチバッファは2つの別個
    の有効ビットの組を含む、請求項1に記載のキャッシュ
    メモリシステム。
  3. 【請求項3】 前記2つの別個の有効ビットの組の一方
    は前記命令キャッシュに書込みを行なうために用いられ
    る、請求項2に記載のキャッシュメモリシステム。
  4. 【請求項4】 前記キャッシュメモリシステムは外部デ
    コードセクションと相互に作用し、前記2つの別個の有
    効ビットの組の他方は、前記外部デコードセクションに
    命令を送るために用いられる、請求項3に記載のキャッ
    シュメモリシステム。
  5. 【請求項5】 前記プリフェッチバッファは、書込カウ
    ンタと読出カウンタとを含む、請求項1に記載のキャッ
    シュメモリシステム。
  6. 【請求項6】 前記プリフェッチバッファは先入れ先出
    しの態様で動作するよう構成され、その構成は本質的に
    その先頭部分と末尾部分とを規定する、請求項5に記載
    のキャッシュメモリシステム。
  7. 【請求項7】 前記書込カウンタは前記プリフェッチバ
    ッファの前記先頭部分を指す、請求項6に記載のキャッ
    シュメモリシステム。
  8. 【請求項8】 前記読出カウンタは前記プリフェッチバ
    ッファの前記末尾部分を指す、請求項7に記載のキャッ
    シュメモリシステム。
  9. 【請求項9】 前記プリフェッチバッファは、中にある
    有効な命令を示すよう動作可能な、有効ビットの組をさ
    らに含む、請求項5に記載のキャッシュメモリシステ
    ム。
  10. 【請求項10】 前記プリフェッチバッファは、命令が
    前記キャッシュを更新したかどうかを示すのに動作可能
    な、有効ビットの第2の組をさらに含む、請求項9に記
    載のキャッシュメモリシステム。
  11. 【請求項11】 マイクロプロセッサ内の命令を操作す
    るための方法であって、 命令が要求されていることを判断するステップと、 前記要求される命令が命令キャッシュおよびプリフェッ
    チバッファシステムの命令キャッシュ部分にあるかどう
    かを判断するステップと、 前記要求される命令がそこにあった場合、前記命令キャ
    ッシュ部分からフェッチするステップと、 前記要求される命令が前記命令キャッシュ部分になかっ
    た場合、外部メモリからフェッチするステップと、 前記命令キャッシュおよびプリフェッチバッファシステ
    ムのプリフェッチバッファ部分で外部メモリから前記フ
    ェッチされた命令を受取るステップと、 前記フェッチされた命令を、実行のために前記マイクロ
    プロセッサの命令キャッシュ部分と処理ユニット部分と
    に同時に送るステップとを含む、方法。
  12. 【請求項12】 順序付けられたブロックの連鎖におけ
    る後続する命令のブロックをプリフェッチし、それら後
    続するブロックが前記命令キャッシュおよびプリフェッ
    チバッファシステムで必要とされるとすぐに利用可能と
    なるようにするステップをさらに含む、請求項11に記
    載の方法。
  13. 【請求項13】 前記プリフェッチバッファ内の命令が
    有効かどうかを決定しかつそのように指示するステップ
    をさらに含む、請求項11に記載の方法。
  14. 【請求項14】 命令がキャッシュ部分を更新したかど
    うかを決定しかつそのように指示するステップをさらに
    含む、請求項13に記載の方法。
JP00233094A 1993-01-21 1994-01-14 キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法 Expired - Fee Related JP3577331B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US674593A 1993-01-21 1993-01-21
US006745 1993-01-21

Publications (2)

Publication Number Publication Date
JPH06243039A true JPH06243039A (ja) 1994-09-02
JP3577331B2 JP3577331B2 (ja) 2004-10-13

Family

ID=21722366

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00233094A Expired - Fee Related JP3577331B2 (ja) 1993-01-21 1994-01-14 キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法

Country Status (4)

Country Link
US (1) US5586295A (ja)
EP (2) EP0612013A1 (ja)
JP (1) JP3577331B2 (ja)
DE (1) DE69327981T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4900979A (en) * 1987-05-28 1990-02-13 Kabushiki Kaisha Toshiba Color cathode ray apparatus provided with dynamic convergence means
JPH07121443A (ja) * 1993-10-01 1995-05-12 Internatl Business Mach Corp <Ibm> 情報処理システム及びその動作方法

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07182170A (ja) * 1993-12-24 1995-07-21 Ricoh Co Ltd マイクロプロセッサ
US5898854A (en) * 1994-01-04 1999-04-27 Intel Corporation Apparatus for indicating an oldest non-retired load operation in an array
US5752263A (en) * 1995-06-05 1998-05-12 Advanced Micro Devices, Inc. Apparatus and method for reducing read miss latency by predicting sequential instruction read-aheads
JPH0934786A (ja) * 1995-07-14 1997-02-07 Fujitsu Ltd 命令供給装置
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
US5918247A (en) * 1995-10-27 1999-06-29 Motorola, Inc. Method for canceling partial line fetch for cache when new data is requested during current fetch and invalidating portion of previously fetched data
US5822764A (en) * 1996-03-04 1998-10-13 Motorola, Inc. Method and circuit for efficiently replacing invalid locked portions of a cache with valid data
US5835947A (en) * 1996-05-31 1998-11-10 Sun Microsystems, Inc. Central processing unit and method for improving instruction cache miss latencies using an instruction buffer which conditionally stores additional addresses
US5764940A (en) * 1996-11-27 1998-06-09 International Business Machines Corporation Processor and method for executing a branch instruction and an associated target instruction utilizing a single instruction fetch
US6138213A (en) * 1997-06-27 2000-10-24 Advanced Micro Devices, Inc. Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US5919251A (en) * 1997-11-03 1999-07-06 Advanced Micro Devices, Inc. Search mechanism for a rotating pointer buffer
US6070229A (en) * 1997-12-02 2000-05-30 Sandcraft, Inc. Cache memory cell with a pre-programmed state
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
US6370415B1 (en) 1998-04-10 2002-04-09 Medi-Physics Inc. Magnetic resonance imaging method
JP3798180B2 (ja) * 1998-05-21 2006-07-19 テキサス インスツルメンツ インコーポレイテツド プロセッサにおいて命令をバッファリングする方法およびシステム
US6275924B1 (en) * 1998-09-15 2001-08-14 Texas Instruments Incorporated System for buffering instructions in a processor by reissuing instruction fetches during decoder stall time
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
US7181548B2 (en) 1998-10-30 2007-02-20 Lsi Logic Corporation Command queueing engine
JP3495266B2 (ja) * 1998-11-13 2004-02-09 Necエレクトロニクス株式会社 キャッシュロック装置及びキャッシュロック方法
US6314494B1 (en) 1999-04-15 2001-11-06 Agilent Technologies, Inc. Dynamically size configurable data buffer for data cache and prefetch cache memory
US6282614B1 (en) 1999-04-15 2001-08-28 National Semiconductor Corporation Apparatus and method for reducing the power consumption of a microprocessor with multiple levels of caches
US6539469B1 (en) * 1999-10-12 2003-03-25 Intel Corporation Rotator circular buffer with entries to store divided bundles of instructions from each cache line for optimized instruction supply
US20030145170A1 (en) * 2002-01-31 2003-07-31 Kever Wayne D. Dynamically adjusted cache power supply to optimize for cache access or power consumption
TWI227853B (en) * 2003-08-29 2005-02-11 Rdc Semiconductor Co Ltd Data accessing method and system for processing unit
US6873184B1 (en) 2003-09-03 2005-03-29 Advanced Micro Devices, Inc. Circular buffer using grouping for find first function
US7080170B1 (en) 2003-09-03 2006-07-18 Advanced Micro Devices, Inc. Circular buffer using age vectors
CA2465065A1 (en) * 2004-04-21 2005-10-21 Ibm Canada Limited - Ibm Canada Limitee Application cache pre-loading
US7877537B2 (en) 2006-12-15 2011-01-25 Microchip Technology Incorporated Configurable cache for a microprocessor
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
CN101558391B (zh) * 2006-12-15 2013-10-16 密克罗奇普技术公司 用于微处理器的可配置高速缓冲存储器
KR100867269B1 (ko) * 2007-02-22 2008-11-06 삼성전자주식회사 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서
JP5598554B2 (ja) * 2011-01-25 2014-10-01 富士通株式会社 システム、およびデータロード方法
US20140002469A1 (en) * 2011-06-07 2014-01-02 Mitsubishi Electric Corporation Drawing device
US8978022B2 (en) * 2013-01-10 2015-03-10 Oracle International Corporation Reducing instruction miss penalties in applications
JP5863855B2 (ja) * 2014-02-26 2016-02-17 ファナック株式会社 分岐命令を高速に処理するためのインストラクションキャッシュを有するプログラマブルコントローラ

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3896419A (en) * 1974-01-17 1975-07-22 Honeywell Inf Systems Cache memory store in a processor of a data processing system
US4070706A (en) * 1976-09-20 1978-01-24 Sperry Rand Corporation Parallel requestor priority determination and requestor address matching in a cache memory system
US4195342A (en) * 1977-12-22 1980-03-25 Honeywell Information Systems Inc. Multi-configurable cache store system
US4189770A (en) * 1978-03-16 1980-02-19 International Business Machines Corporation Cache bypass control for operand fetches
US4370710A (en) * 1980-08-26 1983-01-25 Control Data Corporation Cache memory organization utilizing miss information holding registers to prevent lockup from cache misses
US4780808A (en) * 1981-11-27 1988-10-25 Storage Technology Corporation Control of cache buffer for memory subsystem
US4476526A (en) * 1981-11-27 1984-10-09 Storage Technology Corporation Cache buffered memory subsystem
US4811203A (en) * 1982-03-03 1989-03-07 Unisys Corporation Hierarchial memory system with separate criteria for replacement and writeback without replacement
US4669043A (en) * 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
US4646233A (en) * 1984-06-20 1987-02-24 Weatherford James R Physical cache unit for computer
US4774654A (en) * 1984-12-24 1988-09-27 International Business Machines Corporation Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
EP0732656B1 (en) * 1985-02-22 2003-08-06 Intergraph Corporation Cache MMU system
US4847759A (en) * 1985-03-18 1989-07-11 International Business Machines Corp. Register selection mechanism and organization of an instruction prefetch buffer
US4714994A (en) * 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
AU5634086A (en) * 1985-05-06 1986-11-13 Wang Laboratories, Inc. Information processing system with enhanced instruction execution and support control
US4783736A (en) * 1985-07-22 1988-11-08 Alliant Computer Systems Corporation Digital computer with multisection cache
US4794521A (en) * 1985-07-22 1988-12-27 Alliant Computer Systems Corporation Digital computer with cache capable of concurrently handling multiple accesses from parallel processors
US4853846A (en) * 1986-07-29 1989-08-01 Intel Corporation Bus expander with logic for virtualizing single cache control into dual channels with separate directories and prefetch for different processors
JPS648458A (en) * 1987-06-22 1989-01-12 Ibm Prefetching of line sequentially to cache memory of computer from main memory
US4882673A (en) * 1987-10-02 1989-11-21 Advanced Micro Devices, Inc. Method and apparatus for testing an integrated circuit including a microprocessor and an instruction cache
JPH0769812B2 (ja) * 1987-12-29 1995-07-31 富士通株式会社 データ処理装置
IT1238313B (it) * 1990-01-18 1993-07-12 Memoria tampone in tandem
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5317718A (en) * 1990-03-27 1994-05-31 Digital Equipment Corporation Data processing system and method with prefetch buffers
EP0457403B1 (en) * 1990-05-18 1998-01-21 Koninklijke Philips Electronics N.V. Multilevel instruction cache and method for using said cache
US5530941A (en) * 1990-08-06 1996-06-25 Ncr Corporation System and method for prefetching data from a main computer memory into a cache memory
US5361391A (en) * 1992-06-22 1994-11-01 Sun Microsystems, Inc. Intelligent cache memory and prefetch method based on CPU data fetching characteristics

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4900979A (en) * 1987-05-28 1990-02-13 Kabushiki Kaisha Toshiba Color cathode ray apparatus provided with dynamic convergence means
JPH07121443A (ja) * 1993-10-01 1995-05-12 Internatl Business Mach Corp <Ibm> 情報処理システム及びその動作方法

Also Published As

Publication number Publication date
DE69327981D1 (de) 2000-04-06
DE69327981T2 (de) 2000-10-05
US5586295A (en) 1996-12-17
JP3577331B2 (ja) 2004-10-13
EP0795820A2 (en) 1997-09-17
EP0612013A1 (en) 1994-08-24
EP0795820B1 (en) 2000-03-01
EP0795820A3 (en) 1997-10-01

Similar Documents

Publication Publication Date Title
JP3577331B2 (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
US5210845A (en) Controller for two-way set associative cache
US8725987B2 (en) Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data
JP2554449B2 (ja) キャッシュ・メモリを有するデータ処理システム
US6161166A (en) Instruction cache for multithreaded processor
JP4486750B2 (ja) テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造
JP3683739B2 (ja) オーバラップしたl1およびl2メモリ・アクセス方法および装置
US5577227A (en) Method for decreasing penalty resulting from a cache miss in multi-level cache system
US5900011A (en) Integrated processor/memory device with victim data cache
JP3875738B2 (ja) ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置
US6199142B1 (en) Processor/memory device with integrated CPU, main memory, and full width cache and associated method
US6292871B1 (en) Loading accessed data from a prefetch buffer to a least recently used position in a cache
JPH06318177A (ja) キャッシュ・ミス・ペナルティを減少させる方法、装置及びコンピュータ・システム
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
JP4218820B2 (ja) ダイレクトマップドキャッシュとフルアソシアティブバッファとを含んだキャッシュシステム、その制御方法及び記録媒体
KR100234647B1 (ko) 인스트럭션 프리페치 방법 및 데이터 처리 시스템
US6715035B1 (en) Cache for processing data in a memory controller and a method of use thereof to reduce first transfer latency
JP2001297037A (ja) スマート・キャッシュ
KR100348099B1 (ko) 단일의캐쉬액세스파이프단을이용하여파이프라인저장명령을실행하기위한장치및방법과,파이프라인프로세서및,컴퓨터시스템
US20050216610A1 (en) Method to provide cache management commands for a DMA controller
KR100710922B1 (ko) 캐시 관리 방법
JP3431878B2 (ja) マルチスレッド・プロセッサの命令キャッシュ
US5926841A (en) Segment descriptor cache for a processor
US6976130B2 (en) Cache controller unit architecture and applied method
WO1997034229A9 (en) Segment descriptor cache for a processor

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040210

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040323

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040712

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20080716

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090716

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100716

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100716

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110716

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350