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

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

Info

Publication number
JP3577331B2
JP3577331B2 JP00233094A JP233094A JP3577331B2 JP 3577331 B2 JP3577331 B2 JP 3577331B2 JP 00233094 A JP00233094 A JP 00233094A JP 233094 A JP233094 A JP 233094A JP 3577331 B2 JP3577331 B2 JP 3577331B2
Authority
JP
Japan
Prior art keywords
instruction
cache
prefetch buffer
block
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.)
Expired - Fee Related
Application number
JP00233094A
Other languages
English (en)
Other versions
JPH06243039A (ja
Inventor
タン・トラン
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

Images

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
    • 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
    • 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/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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
    • 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

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)
  • Advance Control (AREA)

Description

【0001】
【関連出願の相互参照】
この出願は、ジョンソン(Johnson )らによる「メモリ内のデータをアクセスするための方法、メモリシステムおよびメモリ制御システム」と題された出願、ジョンソンらによる「コンピュータメモリシステム、データキャッシュ動作の方法およびデータキャッシュシステム」と題された出願、およびトラン(Tran)による「ラッチ回路、データの受取りを制御するための装置、ラッチングを遅延させる方法、およびプリチャージ値の受取りを阻止する方法」と題された出願に関する。
【0002】
上に列挙した出願は、すべて本出願と同日に提出されており、本発明の譲受人に譲渡されたものであって、またすべてここで引用により全体的に再現されるかのように援用される。
【0003】
【発明の分野】
この発明は電子デジタルデータ処理システムに関し、より特定的にはメインメモリだけでなくキャッシュメモリをも含む、電子デジタルデータ処理システムに関する。
【0004】
【関連技術の説明】
データ処理システムの改良は、一般に所与の命令を実行するのに要求される平均時間の短縮か、そのような命令を実行するのに要求される装置のコストの低減かのどちらかに向けられてきた。典型的になされてきた設計上のトレードオフの1つは、データの記憶のためのメモリのユニットにおける、コスト対スピードについてのものである。たとえば、テープメモリは伝統的にディスクメモリより速度が低く費用が少ない。それに対しディスクメモリはいくつかのタイプが利用可能であり、コスト/スピードのかねあいでどれか1つのタイプを他のタイプに優先させて選択することもできる。ディスクメモリは固体メモリよりも低速だが、より安価であり、固体メモリ自体もいくつかのタイプが入手可能であってその選択はやはりコスト/スピードのトレードオフに関わるものである。したがって、より安価で迅速なメモリを提供するか、それができなければ現在あるタイプのメモリにおける効率を高めることが、当該技術分野において依然として必要である。この発明はこの第2のタイプの改良に関する。特定的にはこの発明は、関連のキャッシュメモリとメインメモリとを有するホスト中央処理装置(CPU)が、そのどちらのメモリからも記憶されたデータを得るのに必要な平均時間を短縮するための装置および動作の方法を提供する。
【0005】
背景として、コンピュータシステムには一般に1つより多くのタイプのメモリが提供されるということを認識されたい。単一の迅速なメモリは非常に高くつくだろうということを考えて、コンピュータ設計者らはこれまでデータおよび命令を保持するのにさまざまな装置を用いており、各情報を入れておくところは、CPUがどれくらい緊急にその情報を必要とするかに基づいて選択される。すなわち、一般に迅速ではあるが高価なメモリはCPUがおそらく即座に必要とする情報を記憶するのに用いられ、低速だが費用の少ない装置は、将来使うために情報を確保しておくのに用いられる。
【0006】
これまで、コンピュータシステムには多数のメモリおよび記憶装置が使われてきた。長期にわたる記憶は、一般にディスクおよびテープの記憶装置を用いてなされる。ディスクおよびテープで実現されたデータ記憶は、通常使用されているすべてのメモリおよび記憶装置の中で現在最も遅く、一般にプロセッサによって実際に使用されてはいないデータおよびプログラムを保持するのに用いられる。ディスクおよびテープに記憶された情報をメインメモリに動かすには、比較的長い時間が必要であるが、ディスクおよびテープの記憶装置からデータを動かすのは時たまのことであり、CPUが全面的に注意を向けずとも行なうことができるので、この遅さは許容できるものである。
【0007】
もう1つのメモリ装置は、リードオンリメモリまたはROMである。典型的なアクセス時間が50から200ナノセカンドの間であるROMは、コンピュータがオフになってもその内容を保持する。ROMメモリは、典型的には機械を使用するために準備を行なう始動プログラムを保持する。
【0008】
システムのメインメモリに最もよく使われるもう1つのメモリ装置は、RAMメモリであって、これはCPUがすぐに用いるための、ディスクまたはテープから持って来られたデータおよびプログラム命令の記憶に使用される。メインメモリは通常、いくつかのダイナミックRAM(「DRAM」)チップを含む。プロセッサはこれらDRAMの内容を約100ナノセカンドで検索できるので、このタイプのメモリはスピードではROMに匹敵する。
【0009】
さらにもう1つのタイプのメモリ装置は、キャッシュメモリである。キャッシュメモリは、普通いくつかのスタティックRAM(「SRAM」)チップを含む。キャッシュメモリはメインメモリより最高で10倍動作が速く、CPUが次に最も必要としそうな動作命令およびデータを保持するように設計されているので、コンピュータの動作速度を高めるものである。
【0010】
最後に、CPU内の少量のメモリは、CPUメモリまたはレジスタと呼ばれる。スピードのために最適化されたスタティックRAM回路でできた、プロセッサ内のデータレジスタは、すべての中で最も速いメモリである。プログラムレジスタは次のプログラム命令のメモリにおける記憶位置を記憶し、一方命令レジスタは実行されている命令を保持し、汎用レジスタは処理中の短い間、データを記憶する。
【0011】
前述のことに基づき、コンピュータシステムの中にキャッシュメモリ構成を含み、ひんぱんにアクセスされるデータの迅速な局所記憶のための位置を提供することが、当業者には知られているということを認識されたい。キャッシュシステムはマイクロプロセッサのメモリ参照の各々をインタセプトし、要求されるデータのアドレスがキャッシュ内にあるかどうかを調べる。データが実際にキャッシュの中にあれば(「ヒット」)、そのデータはメインシステムメモリにアクセスするのに必要な待ち状態を招くことなく即座にマイクロプロセッサに戻される。データがキャッシュの中になければ(「ミス」)、メモリアドレス参照がメインメモリ制御装置に送られ、データはメインメモリから検索される。キャッシュヒットは局所的にサービスされるので、局所キャッシュメモリの外で動作するプロセッサは「バス利用度」がずっと低く、それによりシステムが要求するバス帯域幅が減じられて、より多くのバス帯域幅が他のバスマスタに利用可能になる。これは重要なことであるが、なぜかというと当業者にはよく知られているように、コンピュータの中のバス、すなわちCPUとシステムのメモリおよび記憶装置との間の通信チャネルは、主要な障害だからである。処理されるべきすべての命令およびすべてのデータは、事実上このルートを少なくとも1回は移動しなければならない。特に単一のメモリと複数のプロセッサとを含むシステムでは、バスを効率的に使用してシステムの性能を最大限にすることが不可欠である。
【0012】
前述のように、キャッシュメモリシステムはメモリ参照をインタセプトし、それらがキャッシュ内で「ミス」であった場合のみシステムメモリに送る。先行技術の米国特許の多くはキャッシュメモリおよびメモリにアクセスする方法のさまざまな局面に向けられており、これらは以下の特許を含むキャッシュメモリ部分を含む。すなわちジーグラー(Ziegler )らへの米国特許第4,794,521号、ウェザフォード(Weatherford )らへの米国特許第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号、ハムストラ(Hamstra )への米国特許第4,811,203号、ジョイスらへの米国特許第4,785,398号、ギャノン(Gannon)らへの米国特許第4,189,770号、およびランゲ(Lange )らへの米国特許第3,896,419号である。キャッシュメモリシステムに多くの関心が寄せられ、上に列挙した米国特許によってそのようなシステムに対し数多くの進歩が明示されているにもかかわらず、そのようなシステムには、まだいくつかの短所および欠点が残っている。たとえば、プロセッサによりフェッチされる最も最近の命令を記憶するための命令キャッシュとそれに伴なう命令プリフェッチバッファとでシステムを構成することが知られている。現在、命令キャッシュと命令プリフェッチバッファとは2つの別個のブロックとして実現されている。そのような実現例では、命令はデコード/実行に送られる際にだけ命令キャッシュを更新する。命令キャッシュはワードのブロック1つにつき有効ビット1つで形成されてもよいし、キャッシュ内の各ワードにつき1つの有効ビットで形成されてもよい。ワードのブロックごとに有効ビットが1つある場合、バスインタフェースユニットは他のアクセスを許容する前にバスにブロック全体をフェッチさせる。ワードごとに有効ビットが1つある場合、取られた分岐はプリフェッチされたバッファ内のすべての命令を無効にする。上に述べたことは各々、実際上設計における短所である。命令キャッシュとプリフェッチバッファとを2つの独立したブロックとして実現することのもう1つの不利な点は、データをプリフェッチバッファから命令キャッシュへ転送するのに、32ビットバスが要求されるということである。
【0013】
【発明の概要】
上で記述された短所および欠点を克服するため、この発明は命令キャッシュと、命令キャッシュに直接かつ作動的に接続されるプリフェッチバッファとを含む、キャッシュメモリシステムを提供する。そのような命令キャッシュおよびプリフェッチバッファの組合せは、2つの素子を相互接続するバスのいかなる必要性をも回避し、さらにはプリフェッチされた命令の使用を改良しかつ電力およびシリコン領域の使用を減じて、命令バッファがデータを効率的にキャッシュに書込めるようにする。
【0014】
この発明は、命令が要求されていることを判断するステップと、要求される命令が命令キャッシュおよびプリフェッチバッファシステムの命令キャッシュ部分にあるかどうかを判断するステップと、もしそこにあれば要求される命令を命令キャッシュ部分からフェッチするステップと、もし命令キャッシュ部分になければ要求される命令を外部メモリからフェッチするステップとを含む、マイクロプロセッサ内の命令を操作するための方法をも提供する。さらにこの発明の教示に従う方法は、命令キャッシュおよびプリフェッチバッファシステムのプリフェッチバッファ部分の中の外部メモリからのフェッチされた命令を受取るステップと、フェッチされた命令を同時に前記マイクロプロセッサの命令キャッシュ部分と処理ユニット部分とに送って実行させるステップとを含む。
【0015】
したがって、この発明の目的はデータをキャッシュに書込むための命令バッファを効果的に実現することである。
【0016】
この発明の別の目的は、プリフェッチされた命令をより有効に使用するプリフェッチバッファおよび命令キャッシュの組合せを提供することである。
【0017】
この発明のさらに別の目的は、それが取って替わる先行技術の装置よりも使用する電力およびシリコンスペースが少ないプリフェッチバッファおよび命令キャッシュの組合せを提供することである。
【0018】
この発明の他の目的、利点および新規な特徴は、以下に述べる発明の詳しい説明に基づき、添付の図面との関連で明らかになるであろう。
【0019】
【発明の詳しい説明】
この発明を説明する際に便宜を図りかつわかりやすくするため、まずこの発明の教示に従って組合せられてよい、命令キャッシュの特定の一例とプリフェッチバッファの特定の一例とについて説明する。次に、組合せられた命令キャッシュおよびプリフェッチバッファを特徴とするこの発明の一実施例が説明される。この説明に続き、この発明の代替的実施例を案出するべく引き出され得るさまざまな教示を論じるつもりである。
【0020】
ここで、同じまたは類似の要素がいくつかの図面に一貫して同一の参照番号で表されている図面、より特定的には図1を参照すると、包括的に参照番号10で表される命令キャッシュが示される。命令キャッシュ10はもちろん、この発明の実施例においてその1または2以上が使用され得る、同じまたは類似の機能を行なうことのできるいくつかのキャッシュのただ1例にすぎない。そのことを念頭に置いて、示されている命令キャッシュ10はキャッシュアレイ12とタグステータスアレイ14とを含む。キャッシュアレイ12は(さらに後の部分で詳しく説明する)4キロバイトのツーウェイセットアソシアティブキャッシュである。キャッシュ10におけるブロックのサイズは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:11)と比較される。命令ワードがアクセスされると、命令はさらにアドレスの下位の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】
キャッシュミスが検出されてキャッシュ10が能動化されると、プロセッサは外部命令フェッチを開始することによって求められている命令をキャッシュ内に位置付けようとする。これは「キャッシュリローディング」と呼ばれる。キャッシュ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】
分岐がプリフェッチの間にとられるならば、次の順次的なアドレス指定されたブロックのプリフェッチを止めるのには、このブロックが必要とされるのは、たとえば次のブロックに分岐遅延命令があるためにその分岐がブロックにおける最後の命令である場合のみであっても、決して十分な時間はない。したがって、いくらかの外部メモリ容量が、必要とされるフェッチのために分岐を越えてとられ、これらの命令はキャッシュ10の中に存在しなくても排棄される。命令キャッシュとバッファされたデータキャッシュとを両方とも含むシステムでは、外部メモリインタフェースが同時に命令とデータアクセスとのために必要とされることはまれである。しかしながら、命令がキャッシュリロードの間にデコードされた場合、もし命令のリロードの間にデータキャッシュ内でロードがミスするか、または一杯になった書込バッファに記憶が行なわれるならば、命令およびデータアクセスの間で衝突があるかもしれない。
【0044】
データアクセスが命令のアクセスと衝突した場合、命令のフェッチはデータアクセスをサービスする前にキャンセルされるだろう。データアクセスを作り出すロードまたは記憶の命令は、リロードがキャンセルされるのを待っている間に実行を完了することを許される。しかしながら、ロードまたは記憶はライトバック段で保持され、後に続く命令はもっと早いパイプライン段に保持される。これにより、外部ロード/記憶アクセスは命令のフェッチがキャンセルされた直後に開始することができる。
【0045】
一旦データアクセスのサービスが完了すると、外部フェッチを再び始めることができる。これは、キャッシュのミスを検出しかつ外部フェッチを開始するのに用いられる通常のメカニズムによってトリガされてよい。別のデータアクセスがリロードが始まる前に要求される場合(すなわち別のロードまたは記憶が命令のストリームの中で第1のロードまたは記憶のすぐ後に続く場合)、リロードの前に第2のロードまたは記憶が行なわれる。
【0046】
ロードまたは記憶が分岐の遅延命令であり、分岐の目標がキャッシュ10の中でミスである場合、その分岐の目標とされる命令のフェッチはロードまたは記憶のための外部アクセスが行われる前に完了されてよい。
【0047】
命令キャッシュ10がマッピングされたDRAMアドレスでアクセスされた場合、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は、タグアレイ40の中へ送り込まれ、リクエストの下位ビット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 (4)

  1. 複数個のブロックを有する命令キャッシュ部分と、
    複数個のワードを有するプリフェッチバッファ部分とを含み、複数個のワードのは、複数個のブロックのに等しく、さらに、
    前記プリフェッチバッファ部分に記憶された命令ワードの有効性を示す第1の組の有効ビットと、
    前記命令キャッシュ部分に命令ワードを書込むことと命令ワードをデコーダに送ることとが独立した動作であるように、命令ワードが前記命令キャッシュ部分で更新されたかどうかを示す第2の組の有効ビットとを含む、プリフェッチバッファおよび命令キャッシュの組合せ。
  2. 前記プリフェッチバッファ部分は、書込カウンタおよび読出カウンを含む、請求項1に記載のプリフェッチバッファおよび命令キャッシュの組合せ。
  3. 前記プリフェッチバッファ部分は、先入れ先出しの態様で動作するよう構成され、前記先入れ先出しの構成により前記プリフェッチバッファの命令書込および読出時の先頭部分と末尾部分と規定される、請求項2に記載のプリフェッチバッファおよび命令キャッシュの組合せ。
  4. プリフェッチバッファおよび命令キャッシュの組合せを利用して中央処理装置に命令ワードを与えるための方法であって、前記方法は、
    a) 要求される命令が命令キャッシュ部分にないとき、要求される命令を外部メモリからフェッチするステップと、
    b) 前記プリフェッチバッファおよび命令キャッシュの組合せのプリフェッチバッファ部分によって、前記外部メモリから与えられた要求される命令を記憶するステップと、
    c) 前記プリフェッチバッファ部分に記憶された前記要求される命令が有効であることを示すよう第1の組のビットをセットするステップと、
    d) 前記プリフェッチバッファ部分によって、前記命令キャッシュ部分および中央処理装置に前記要求される命令を送るステップと、
    e) 前記要求される命令を前記命令キャッシュ部分に書込むことと前記要求される命令を前記中央処理装置に与えることとが独立した動作であるように、前記要求される命令が前記命令キャッシュ部分で更新されるとき第2の組のビットをセットするステップとを含む、方法。
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 JPH06243039A (ja) 1994-09-02
JP3577331B2 true 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) EP0795820B1 (ja)
JP (1) JP3577331B2 (ja)
DE (1) DE69327981T2 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0736319B2 (ja) * 1987-05-28 1995-04-19 株式会社東芝 カラ−受像管装置
TW228580B (en) * 1993-10-01 1994-08-21 Ibm Information processing system and method of operation
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 命令供給装置
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
US5737565A (en) * 1995-08-24 1998-04-07 International Business Machines Corporation System and method for diallocating stream from a stream buffer
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
SG83719A1 (en) * 1998-05-21 2001-10-16 Texas Instruments Inc Method and system for buffering instructions in a processor
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
US7080170B1 (en) 2003-09-03 2006-07-18 Advanced Micro Devices, Inc. Circular buffer using age vectors
US6873184B1 (en) 2003-09-03 2005-03-29 Advanced Micro Devices, Inc. Circular buffer using grouping for find first function
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
CN101558391B (zh) * 2006-12-15 2013-10-16 密克罗奇普技术公司 用于微处理器的可配置高速缓冲存储器
US9208095B2 (en) 2006-12-15 2015-12-08 Microchip Technology Incorporated Configurable cache for a microprocessor
KR100867269B1 (ko) * 2007-02-22 2008-11-06 삼성전자주식회사 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서
WO2012101761A1 (ja) * 2011-01-25 2012-08-02 富士通株式会社 システム、およびデータロード方法
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
DE3650584T2 (de) * 1985-02-22 1997-06-26 Intergraph Corp Anordnung von Cachespeicherverwaltungseinheiten
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3577331B2 (ja) キャッシュメモリシステムおよびマイクロプロセッサ内の命令を操作するための方法
US8725987B2 (en) Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data
US5210845A (en) Controller for two-way set associative cache
JP3683739B2 (ja) オーバラップしたl1およびl2メモリ・アクセス方法および装置
US7917701B2 (en) Cache circuitry, data processing apparatus and method for prefetching data by selecting one of a first prefetch linefill operation and a second prefetch linefill operation
JP3587591B2 (ja) キャッシュ・ミスを制御する方法およびその計算機システム
US6161166A (en) Instruction cache for multithreaded processor
US6212603B1 (en) Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US5623627A (en) Computer memory architecture including a replacement cache
US5499355A (en) Prefetching into a cache to minimize main memory access time and cache size in a computer system
US6105111A (en) Method and apparatus for providing a cache management technique
KR100262906B1 (ko) 데이터 선인출 방법 및 시스템
US5721864A (en) Prefetching instructions between caches
US6012134A (en) High-performance processor with streaming buffer that facilitates prefetching of instructions
JPH08272682A (ja) ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置
JPH06318177A (ja) キャッシュ・ミス・ペナルティを減少させる方法、装置及びコンピュータ・システム
JPH10232827A (ja) 先取りキャッシュ書戻しの方法と装置
KR100234647B1 (ko) 인스트럭션 프리페치 방법 및 데이터 처리 시스템
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
US6715035B1 (en) Cache for processing data in a memory controller and a method of use thereof to reduce first transfer latency
KR100348099B1 (ko) 단일의캐쉬액세스파이프단을이용하여파이프라인저장명령을실행하기위한장치및방법과,파이프라인프로세서및,컴퓨터시스템
JPH0721085A (ja) メモリとi/o装置の間で転送されるデータをキャッシュするためのストリーミングキャッシュおよびその方法
JP3431878B2 (ja) マルチスレッド・プロセッサの命令キャッシュ
US6766431B1 (en) Data processing system and method for a sector cache
US5926841A (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