JPH04232549A - キャッシュメモリシステム - Google Patents

キャッシュメモリシステム

Info

Publication number
JPH04232549A
JPH04232549A JP3140695A JP14069591A JPH04232549A JP H04232549 A JPH04232549 A JP H04232549A JP 3140695 A JP3140695 A JP 3140695A JP 14069591 A JP14069591 A JP 14069591A JP H04232549 A JPH04232549 A JP H04232549A
Authority
JP
Japan
Prior art keywords
buffer
instruction code
instruction
processing unit
program counter
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
JP3140695A
Other languages
English (en)
Inventor
Chi-Hung Chi
チー チャン チー
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.)
Koninklijke Philips NV
Original Assignee
Philips Gloeilampenfabrieken NV
Koninklijke Philips Electronics NV
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 Philips Gloeilampenfabrieken NV, Koninklijke Philips Electronics NV filed Critical Philips Gloeilampenfabrieken NV
Publication of JPH04232549A publication Critical patent/JPH04232549A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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 or 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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 or 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
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

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)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータにおけるメ
モリを制御する方法及び装置に関するものである。特に
本発明は、中央処理ユニット又はマルチプロセッサ処理
素子と、コンピュータの主メモリとの間をインターフェ
ースする高速バッファメモリに関するものである。
【0002】超大規模集積化(VLSI)及びスーパコ
ンピューティングの進歩で、スーパコンピュータと同様
な計算能力を有するプロセッサを単一テップに作ること
ができる。集積回路技術の改良により、ゲート遅れが著
しく低減されるようにはなったが、メモリ素子の作動速
度及び記憶密度は、それに比例して改良されていない。 従って、これらのプロセッサを用いているコンピュータ
の総体的性能は通常メモリ装置の作動速度により制限さ
れている。メモリの作動速度とプロセッサの作動速度と
の間のギャップを埋め合わせるのにキャッシュメモリが
用いられている。
【0003】キャッシュメモリはコンピュータ処理ユニ
ットと、主メモリとの間をインターフェースする高速バ
ッファメモリである。なお、ここで用いている「処理ユ
ニット」とは、中央処理ユニット又はマルチプロセッサ
処理素子を称するものとすることができる。キャッシュ
メモリは、おそらくプロセッサにより必要とされるデー
タ及び命令のコピーを迅速にアクセスできるようにする
。キャッシュメモリは主メモリよりも記憶容量をずっと
小さくすることができるため、キャッシュメモリは主メ
モリを作成するのに経済的に使用し得る技術よりも一層
堅実で、さらに高価な技術を用いて作製することができ
る。キャッシュメモリが適切なデータ及び命令を保有し
ていれば、処理ユニットは実際上高速のキャッシュメモ
リアクセス時間を確かめるだけでよく、処理ユニットは
依然として大きな主メモリアドレス空間を有する。さら
に、適切に管理したキャッシュメモリはシステムバスの
通信量を減らすことにより計算効率に間接的に有利な効
果を持たらすことができる。
【0004】処理ユニットは主メモリのアドレス指定さ
れた位置に記憶されている命令のプロセッサを逐次実行
することにより作動する。逐次実行用の命令を包含して
いるプログラムブロックは連続したメモリアドレスに記
憶される。処理ユニットは、これらの命令をメモリから
プログラムカウンタレジスタを経て逐次要求し、このレ
ジスタの内容は各命令サイクル中に新規の命令コードの
点にまで増分される。プログラムのフローが連続的であ
る限り、プログラムカウンタに保有されている1ライン
以上の先行アドレスで主メモリ位置から命令コードを先
取りすることによりキャッシュメモリを容易に作動させ
ることができる。先取りした命令が実際にプロセッサに
よりアドレスされると、先取り命令が高速キャッシュメ
モリにて利用可能となり、「キャッシュ  ヒット」が
達成されることになる。しかし、プログラムフローが非
連続命令アドレスへのブランチ又はループを必要とする
場合には、要求命令コードがプロセッサによって要求さ
れても、その要求命令コードがキャッシュメモリには存
在せず、「キャッシュ  ミス」が生ずることになる。 キャッシュ  ミスが生じたら、データが主メモリから
取り出される間、処理を一時停止しなければならない。
【0005】これがため、良好なキャッシュメモリ装置
に対する設計目標は:処理ユニットが命令を待機しなく
ても済むようにキャッシュヒット率を高くし;データア
クセスと命令アクセスとの間のバス競合の機会を減らす
ようにバス通信量をできるだけ少なくし(バス通信量は
単一チップ装置にとっては特に重要な性能ボトルネック
となる。その理由は、チップの物理的I/Oピンの総数
が制限されることがよくあるからである)、且つ集積用
チップは通常高価であるから、チップ面積を有効に使用
することである。この最終要件はキャッシュ制御に関連
するハードウェアの複雑性をできるだけ簡単にすべきこ
とを意味している。
【0006】
【従来の技術】アドバンスド  マイクロ  デバイシ
ーズ社(AdvancedMicro Devices
, Inc.)により1988年に発行された“The
 AM 29000 32−bit Streamli
ned InstructionProcessor 
User’s Manual ”には、プロセッサによ
り実行させる全ての命令をブランチターゲットキャッシ
ュから取り出すか、又は外部命令メモリから先取りする
命令キャッシュ装置が記載されている。命令を外部メモ
リから先取りする際に、これらの命令は命令アクセスの
タイミングを支援するのに先立って要求される。プロセ
ッサはプログラムの各サイクル中に次の命令の取り出し
を開始しようとする。
【0007】命令は予期した需要に基づいて前もって要
求されるから、先取り命令を先取りが完了する際に実行
させなくて済ますことができる。このようにし得るため
に、命令取り出しユニットは4ワードの命令先取りバッ
ファを具えており、このバッファは循環的にアドレスさ
れ、しかも命令に対し先入れ先出しキューとして作用す
る。プロセッサは非連続的に取り出される命令に対して
高速にアクセスできるようにするブランチターゲットキ
ャッシュも具えている。非連続的な命令を取り出すター
ゲットは、最近発生したものと同じターゲットに似てい
る取り出し命令が、他の非連続的に取り出したターゲッ
トに取って代わるものでもなく、又介入命令によって無
効にされたものでもない十分なものである場合には、ブ
ランチターゲットキャッシュ内にある命令の非連続的取
り出しが、ブランチ命令、割込み又はトラップのいずれ
かにより起こる場合には、常に命令取り出し用のアドレ
スがブランチターゲットキャッシュに、それが主メモリ
を通過するのと同じ時間に与えられる。
【0008】
【発明が解決しようとする課題】従来の命令キャッシュ
の次点は、外部メモリの作動速度が遅過ぎると、非連続
的な命令取り出し後に、新規命令がメモリから入手し得
るようになる前に、ブランチターゲットキャッシュにお
ける有効命令が使い尽くされてしまい、従ってキャッシ
ュミスを起こして、達成し得る実行速度を低下させると
云うことにある。原則として、このような問題はブラン
チターゲットキャッシュブロックの大きさを外部メモリ
の作動速度に適合させることにより解決することができ
るが、これには多数のブランチターゲットに対する大形
のブランチターゲットメモリが必要である。
【0009】本発明の目的は記憶容量が限定されている
キャッシュメモリでキャッシュヒット率を向上させるキ
ャッシュアーキテクチャを提供することにある。
【0010】
【課題を解決するための手段】本発明によれば、キャッ
シュメモリ装置を3つのレベル、即ち 1) 先取りバ
ッファと; 2) ヘッドバッファと; 3) ユース
バッファとで編成する。先取りバッファは慣例の方法で
作動し、プログラムカウンタにより決められたアドレス
よりも前の逐次メモリアドレスから命令ラインを先取り
する。この先取りバッファは記憶容量が比較的小さく、
しかも先入れ先出し(FIFO)レジスタとし編成する
のが好適である。逐次実行されるコードのブロック内に
含まれる命令は通常先取りバッファ又はユースバッファ
にてキャッシュヒットする。
【0011】ユースバッファはチップ面積を有効に使用
すべく設計したハードウェアの制御が簡単な比較的ブロ
ックサイズが大きい高速キャッシュメモリである。代表
的に、例えばユースバッファはブロックサイズが大きい
ダイレクトマップバッファとすることができる。プロセ
ッサが先取りバッファでキャッシュヒットする時は常に
、参照命令を含んでいるキャッシュラインがユースバッ
ファにも転送され、ここでキャッシュラインは以前記憶
されていたラインに取って代わる。ユースバッファは最
近実行した命令を経済的に高速度でアクセスし、従って
命令コードを反復プログラムループで実行するのに特に
有効である。
【0012】ヘッドバッファはブロックサイズが比較的
小さく、FIFOレジスタとして構成されるバッファで
あり、これはプログラムコードブロックの頂部からの命
令を記憶するのに用いられる。処理ユニットがキャッシ
ュバッファでの要求命令をミスする場合に、命令は主メ
モリから優先度の高いバスフェッチを経てアクセスされ
る。取り出された命令の関連アドレスは予定した規則に
従ってテストされ、そのテストが満足される場合に、上
記命令はヘッドバッファに記憶される。テスト結果が満
足されなければ、命令はユースバッファに記憶される。
【0013】後にアクセスするためにキャッシュ内容を
一時的に凍結する命令をプログラムに選択的にコンパイ
ルすることによりキャッシュ効率を高めることができる
。本発明によれば、新規データのヘッドバッファ及びユ
ースバッファへの書き込みを禁ずることにより凍結命令
コードに応答するハードウェアをマルチレベルキャッシ
ュに含めることができる。このようなことは、例えばプ
ログラムループを高速度で実行するのに用いることがで
きる。
【0014】本発明の好適例では、先取りバッファを連
続的に作動させて、ヘッドバッファ及びユースバッファ
の内容に関係なく、プログラムカウンタに引き続き命令
を連続的に先取りさせる。
【0015】さらに本発明の他の例では、先取りすべき
命令がヘッドバッファ又はユースバッファに既に存在す
ることが確かめられる時には常に命令の連続的先取りを
禁止する。このようにすることにより、システムバスに
おける通信量を減らすことができる。
【0016】
【実施例】図1は本発明を具体化するコンピュータシス
テムにおけるキャッシュメモリの編成の仕方及び命令フ
ローを示す。処理ユニット10はVLSI単一チップマ
イクロプロセッサの一部とすることができ、このユニッ
トはプログラムカウンタレジスタ10a を具えている
。レジスタ10a の内容は、処理ユニットが実行すべ
き次期プログラム命令のアドレスを含むべく周期的に更
新される。 プログラム命令は主メモリユニット12に記憶されてお
り、これらの命令は代表的には非連続ブランチ及びルー
プ命令によって相互に関連付けられる逐次命令のブロッ
クで構成される。プロセッサユニット10にはハードウ
ェアを割込ませることもでき、この割込みによりプログ
ラムを他のプログラムシーケンス(これらのプログラム
シーケンスも主メモリユニット12内に記憶されている
) に非同期的に分岐させることができる。データは主
メモリ12とプロセッサユニット10との間にて、先取
りバッファ14と、ユース(use) バッファ16と
、ヘッドバッファ18とを含むキャッシュメモリを経て
転送される。命令はキャッシュメモリ制御部24により
設定されたプロトコルに従ってシステムバス20を経て
主メモリユニット12から取り出される。
【0017】先取りバッファ14は、参照すべき予定の
(又は参照される確立が高い)命令を先取りすることに
よりキャッシュヒット率を改善するのに用いられる。こ
のバッファ14はFIFOレジスタとして編成され、し
かもこれは一般にく記憶容量が比較的小さいものである
。 先取りバッファ14はプログラムカウンタ10a に含
まれるアドレスの内で逐次先行しているアドレスから低
い転送優先度でシステムバス20を経て命令をアクセス
する。下記に説明するように、先取りバッファは連続的
に命令を先取りするか、或いは先取りバッファの作動を
ヘッドバッファ及びユースバッファの内容に応じて制御
部24により禁止させることもできる。
【0018】ヘッドバッファ18はループ及びサブルー
チンの命令に対する基本ブロックの第1ラインを凍結さ
せる(不作動とする)のに用いられる。このヘッドバッ
ファも記憶容量が比較的小さく、しかもFIFOレジス
タとして編成される。先取りバッファ及び/又はヘッド
バッファは最低使用頻度(LRU)レジスタとして編成
することもできる。
【0019】ユースバッファ16は、前もってプロセッ
サにより最近アクセスされた命令を記憶して、これらの
命令を再び使用できるようにすることによりシステムバ
ス20における通信量を減らすために用いられる。この
ユースバッファ16はチップ面積を有効に使用すべく簡
単な構成で編成するのが好適であり、これは例えばキャ
ッシュブロックの大きさが大きい(即ち、キャッシュタ
グ面積が小さい)ダイレクトマップ  キャッシュとす
ることができる。ユースバッファは作動効率のためにチ
ップ面積のかね合いで、より一層複雑に関連付けたキャ
ッシュとして作製することもできる。
【0020】プロセッサユニット10がメモリ要求を送
出する場合に、次の4つの状況が起こり得る可能性があ
る。即ち、 −要求命令が既に先取りバッファ14にある場合 (即
ち、先取りバッファがヒットする場合) には、参照命
令が先取りバッファ14から処理ユニット10へと送ら
れ、しかも参照命令ラインがユースバッファ14に転送
され、そこで参照命令はそのラインに以前記憶されてい
た情報に取って代わる。参照ラインがユースバッファに
転送された後には、その参照ラインが先取りバッファか
ら除去される。
【0021】−要求命令が既にヘッドバッファ18に記
憶されている場合には、参照命令がヘッドバッファ18
から処理ユニット10に送られる。3つのバッファ間に
は他の情報転送はない。
【0022】−参照命令が既にユースバッファ16に記
憶されている場合には、参照命令がユースバッファ16
から処理ユニット10に送られる。3つのバッファ間に
は他の情報転送はない。
【0023】−参照命令が先取りバッファか、ユースバ
ッファか、ヘッドバッファのいずれにも見つからない(
即ち、キャッシュ  ミスがある)場合には、参照命令
に対するメモリ要求がシステムバス20を経て高い優先
度で主メモリ12に送られる。要求命令が主メモリから
キャッシュに到達すると、この命令はプロセッサ10に
送られると共に、予め定めたテスト結果に応じてヘッド
バッファ18か、ユースバッファ16のいずれにも記憶
される。命令がヘッドバッファ18に記憶される場合に
、その命令はヘッドバッファ18に記憶されている最も
古い命令コードに取って代わり、置換されるコードはキ
ャッシュからなくなる。
【0024】主メモリからアクセスされる命令をヘッド
バッファ18に記憶させるのか、又はユースバッファ1
6に記憶させるのかどうかを決めるのに採用し得るテス
トは、例えば主メモリからアクセスした命令のアドレス
と処理ユニット10により実行された最終命令のアドレ
スとの比較に基づいて行う。このテストの第1例では、
主メモリから取り出された命令が、プログラムカウンタ
にて最も最近実行された命令と連続しなければ、斯る主
メモリから取り出した命令はヘッドバッファに記憶させ
る。 テストの第2例では、主メモリから取り出された命令が
、以前実行した命令に対してユースバッファの(ブロッ
ク)サイズよりも大きな負性変位で連続しなければ、斯
る主メモリから取り出された命令はヘッドバッファにの
み記憶される。テストの第3例では、主メモリから取り
出された命令が以前記憶させた命令に対してユースバッ
ファのサイズよりも大きい絶対変位で連続しなければ、
斯る命令はヘッドバッファにのみ記憶させる。いずれの
場合にも、参照命令がヘッドバッファに記憶されなけれ
ば、その命令はユースバッファに記憶される。
【0025】図2はキャッシュバッファを典型的なプロ
グラムシーケンスで使用する例を示したものであり、こ
のシーケンスは逐次命令P1〜P N を有しているブ
ロックB1と、逐次命令Q1〜Q N を有しているル
ープ形態の第2の逐次ブロックB2と、逐次命令R1〜
R N を有している第3ブロックB3とを具えている
。典型的な作動として、プログラムは或る離れたメモリ
アドレスからブロックB1の第1命令P1に分岐する。 命令ラインP1が3つのキャッシュバッファのどれにも
なければ、それはヘッドバッファ18に記憶される。そ
の後、ブロックB1における命令P1〜P N が逐次
実行し、これらの命令が慣例の方法でメモリ12から先
取りバッファに先取りされる。ブロックB1の命令は、
これらが先取りバッファ14から処理ユニット10に送
られる時にユースバッファ16にも記憶されるが、図示
の例ではこれらの命令は再使用されるようにはなってい
ない。ブロックB1の終了時にプログラムは命令P N
 から非連続アドレスで命令Q1に分岐する。命令Q1
はプログラムブロックB2の頂部の命令を表し、これは
命令ループに対する入口点である。命令Q1は先取りバ
ッファから入手することはできないが、この命令はバス
を経て主メモリからアクセスされて、ヘッドバッファに
記憶される。次いで、命令Q1〜Q N が逐次実行さ
れる。これらの命令は先取りバッファにより主メモリか
ら先取りされ、しかもこれらの命令が処理ユニットに転
送されるのと同時にユースバッファに記憶される。プロ
グラムはブロックB2の終了時に命令Q1へと逆戻りに
分岐する。プログラムの分岐は非連続的なものであるが
、命令Q1は最近実行されたブロックの第1命令である
から、この命令はヘッドバッファにある。命令Q2から
Q N までの命令シーケンスの長さがユースバッファ
よりも大きくない場合には、これらの命令はループの最
初の実行後にもユースバッファ内に依然存在し、これら
の命令はループが継続する限り、他のシステムバスによ
る転送はなくキャッシュからアクセスすることができる
。ブロックB2の終了時にプログラムはブロックB3に
分岐する。キャッシュ内にない命令R1は主メモリから
アクセスされ、再びヘッドバッファ18に記憶される。
【0026】簡単な例では、先取りバッファ14が連続
的に作動し、従ってこのバッファによりバス20に定常
の通信量をロードさせるようにする。システムの好適例
では、先取りすべき次の逐次命令が既にキャッシュメモ
リにあるかどうかを決めるために、制御ユニット24に
より3つのバッファの内容を調べる。命令がキャッシュ
メモリに既にある場合には、命令の先取りを禁止して、
バス20の通信量を減らすようにする。
【0027】処理ユニットの命令セットには米国特許出
願第500,612 号に従って、キャッシュメモリへ
のデータのオーバライトを選択的に許可したり、又は禁
止したりする「凍結」及び「非凍結」命令と称される命
令を含めることができる。本発明の好適例では、凍結命
令をゲート22を介して与えることにより、この凍結命
令が有効である場合に、新規のデータがユースバッファ
16及びヘッドバッファ18に書き込まれるのを禁止す
る。ユースバッファ及びヘッドバッファが凍結されると
、先取りバッファは慣例の方法で作動し続け (絶えず
命令を先取りするか、又はキャッシュメモリの内容に応
じて命令を先取りする) 、処理ユニットはヘッドバッ
ファ18及びユースバッファ16からデータを依然読み
取ることができる。
【0028】図3はループ内の凍結命令の典型的な使用
法を示している。プログラムループ、例えばブロックB
2は2つのコードシーケンスにコンパイルされる。第1
シーケンスL1は最初の通過ループを表し、第2シーケ
ンスは次の通過ループを表している。第1シーケンスの
通過時には命令Q1a がヘッドバッファに記憶され、
且つユースバッファにも命令が逐次記憶される。ユース
バッファがX個の命令を保有でき、しかもループセグメ
ントL1がXよりも大きい場合には、ループの終わりに
(命令Q N の実行後) 、ユースバッファが命令Q
 N−X+1 〜Q N を保有するようになる。この
点でコンパイラは凍結命令を命令ストリーム内に挿入し
、この命令ストリームはユースバッファ及びヘッドバッ
ファの内容を凍結する。命令コードはループセグメント
L2を実行すべく進むが、命令Q1及びQ N−X+1
 はキャッシュ内に既に記憶されているため、その付随
バストラヒックでの先取りは命令Q2とQ N−X と
の間で必要とされるだけである。プログラムがループを
離れると、非凍結命令が実行され、キャッシュメモリは
普通の作動状態に戻る。
【0029】本発明は上述した例にのみ限定されるもの
でなく、幾多の変更を加え得ること勿論である。
【図面の簡単な説明】
【図1】本発明を具体化するコンピュータシステムにお
けるキャッシュメモリの編成の仕方及び命令フローを示
す図である。
【図2】コンピュータプログラムにおける命令のバッフ
ァリングを説明するための図である。
【図3】プログラムループを実行している間における凍
結及び非凍結命令の使用法を説明するための図である。
【符号の説明】
10  処理ユニット 10a   プログラムカウンタ 12  主メモリ 14  先取りバッファ 16  ユースバッファ 18  ヘッドバッファ 20  システムバス 22  ゲート

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】  主メモリから処理ユニットへの命令コ
    ードの転送を履行し、前記処理ユニットがプログラムカ
    ウンタを含み、該カウンタの内容が、前記処理ユニット
    により実行させるべき次の命令コードを含んでいる前記
    主メモリにおけるアドレスを指定するキャッシュメモリ
    装置が:前記プログラムカウンタに含まれるアドレスに
    逐次追従する前記主メモリにおけるアドレスから命令コ
    ードを先取りし、且つ記憶すべく接続した先取りバッフ
    ァ手段と;ヘッドバッファと;ユースバッファと;前記
    プログラムカウンタ、先取バッファ手段、ヘッドバッフ
    ァ及びユースバッファの内容に応答し: a)前記プログラムカウンタにより指定された命令コー
    ドが前記先取りバッファ手段にある場合には、該命令コ
    ードが処理ユニットに転送され、且つユースバッファに
    も記憶され、 b)前記プログラムカウンタにより指定された命令コー
    ドが前記ヘッドバッファか、ユースバッファにある場合
    には、前記命令コードが処理ユニットに転送され;c)
    前記プログラムカウンタにより指定された命令コードが
    前記先取りバッファ手段、ヘッドバッファ又はユースバ
    ッファのいずれにもない場合には、前記命令コードが主
    メモリから取り出されて、処理ユニットに転送され、且
    つ、 1)前記プログラムカウンタの内容が所定のテストを満
    足する場合には、ヘッドバッファにも記憶されるか、2
    )前記プログラムカウンタの内容が所定のテストを満足
    しない場合にはユースバッファに記憶されるように機能
    する命令転送制御手段;とを具えていることを特徴とす
    るキャッシュメモリ装置。
  2. 【請求項2】  前記命令転送制御手段が、前記プログ
    ラムカウンタにより指定された命令コードがユースバッ
    ファに記憶された後には先取りバッファから前記命令コ
    ードを除去すべく機能するようにもしたことを特徴とす
    る請求項1のキャッシュメモリ装置。
  3. 【請求項3】  前記命令転送制御手段が、前記プログ
    ラムカウンタの内容によって指定される実際のメモリア
    ドレスに応答するようにしたことを特徴とする請求項1
    又は2のキャッシュメモリ装置。
  4. 【請求項4】  前記プログラムカウンタの内容によっ
    て指定されたメモリアドレスが、前記処理ユニットによ
    り最後に実行された命令のアドレスと連続しない場合に
    前記所定のテストが満足されることを特徴とする請求項
    1又は2のキャッシュメモリ装置。
  5. 【請求項5】  前記プログラムカウンタの内容により
    指定されたメモリアドレスが、前記処理ユニットにより
    最後に実行された命令のアドレスから完全に変位し、ユ
    ースバッファのサイズよりも大きい量だけ変位している
    場合に前記所定のテストが満足されることを特徴とする
    請求項4のキャッシュメモリ装置。
  6. 【請求項6】  前記プログラムカウンタの内容により
    指定されたメモリアドレスが、前記処理ユニットにより
    最後に実行された命令のアドレスとは負性的に変位し、
    その変位量がユースバッファのサイズよりも大きい場合
    に前記所定のテストが満足されることを特徴とする請求
    項4のキャッシュメモリ装置。
  7. 【請求項7】  前記先取りバッファ手段が前記メモリ
    における順次アドレスから命令コードを連続的に先取り
    することを特徴とする請求項1又は2のキャッシュメモ
    リ装置。
  8. 【請求項8】  前記先取りバッファ手段、ヘッドバッ
    ファ及びユースバッファに接続され、要求命令コードが
    前記先取りバッファ手段、ヘッドバッファ又はユースバ
    ッファのいずれかに既にある場合に、主メモリアドレス
    からの命令コードの先取りを禁止する先取り制御手段も
    具えていることを特徴とする請求項1又は2のキャッシ
    ュメモリ装置。
  9. 【請求項9】  前記ユースバッファをダイレクト−マ
    ップキャッシュバッファとして編成することを特徴とす
    る請求項1又は2のキャッシュメモリ装置。
  10. 【請求項10】  前記ユースバッファを連想キャッシ
    ュバッファとして編成することを特徴とする請求項1又
    は2のキャッシュメモリ装置。
  11. 【請求項11】  前記ユースバッファの記憶容量を前
    記先取りバッファ手段及びヘッドバッファの記憶容量よ
    りも大きくしたことを特徴とする請求項1又は2のキャ
    ッシュメモリ装置。
  12. 【請求項12】  前記ユースバッファ及びヘッドバッ
    ファへのデータ転送を前記処理ユニットにより処理した
    所定の命令コードに応答して可制御的に禁止するキャッ
    シュ凍結手段も具えていることを特徴とする請求項1又
    は2のキャッシュメモリ装置。
  13. 【請求項13】  命令コードループを:先ずループの
    最初の反復を指定する逐次命令の第1ブロックとして、
    次いでユースバッファ及びヘッドバッファへのデータ転
    送を禁止する凍結命令コードとして、次にループの他の
    反復を実行する命令の第2ブロックとして、及びユース
    バッファ及びヘッドバッファへのデータ転送を許可する
    非凍結命令コードとして生成する命令コンパイラ手段と
    組み合わせたことを特徴とする請求項12のキャッシュ
    メモリ装置。
  14. 【請求項14】  処理ユニット及び請求項1又は2の
    キャッシュメモリ装置を具えているマイクロプロセッサ
    集積回路。
  15. 【請求項15】  下記の工程、即ちループの第1反復
    を実行する逐次命令コードの第1ブロックを発生する工
    程と;キャッシュメモリの少なくとも数個所の部分への
    データ転送を禁止する次の逐次凍結命令コードを発生す
    る工程と;ループの他の反復を実行する逐次命令コード
    の次の逐次第2ブロックを発生する工程と;前記キャッ
    シュメモリの前記数個所へのデータの転送を可能にする
    次の逐次非凍結命令を発生する工程;とを具えているプ
    ログラムループを実行するコンピュータ命令コードをコ
    ンパイルする方法。
  16. 【請求項16】  前記キャッシュメモリの数個所がヘ
    ッドバッファ及びユースバッファを含むことを特徴とす
    る請求項15の方法。
  17. 【請求項17】  主メモリから処理ユニットへの命令
    コードの転送を履行するコンピュータを作動させる方法
    であって、前記処理ユニットがプログラムカウンタを含
    み、該カウンタの内容が、前記処理ユニットにより実行
    されるべき次の命令コードを含んでいる前記主メモリに
    おけるアドレスを指定するコンピュータ作動方法が:キ
    ャッシュに先取りバッファ、ヘッドバッファ及びユース
    バッファを設ける工程と;前記プログラムカウンタに含
    まれるアドレスに逐次追従する前記主メモリにおけるア
    ドレスからの命令コードを前記先取りバッファに先取り
    すると共に記憶させる工程と;前記プログラムカウンタ
    により指定された命令コードが先取りバッファ手段にあ
    る場合には、該命令コードを処理ユニットに転送し、且
    つユースバッファにも記憶させる工程と;前記プログラ
    ムカウンタにより指定された命令コードがヘッドバッフ
    ァか、又はユースバッファにある場合には、該命令コー
    ドを処理ユニットに転送する工程と;前記プログラムカ
    ウンタにより指定された命令コードが前記先取りバッフ
    ァ、ヘッドバッファ又はユースバッファのいずれにもな
    い場合には、前記命令コードを主メモリから取り出し、
    該命令コードを処理ユニットに伝送し、且つ 1) 前
    記プログラムカウンタの内容が所定のテストを満足する
    場合には、前記命令コードをヘッドバッファに記憶させ
    るか、 2) 前記プログラムカウンタの内容が所定の
    テストを満足しない場合には前記命令コードをユースバ
    ッファに記憶させる工程;とを含むことを特徴とするコ
    ンピュータ作動方法。
JP3140695A 1990-05-18 1991-05-17 キャッシュメモリシステム Pending JPH04232549A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US52634190A 1990-05-18 1990-05-18
US07/526341 1990-05-18

Publications (1)

Publication Number Publication Date
JPH04232549A true JPH04232549A (ja) 1992-08-20

Family

ID=24096939

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3140695A Pending JPH04232549A (ja) 1990-05-18 1991-05-17 キャッシュメモリシステム

Country Status (4)

Country Link
US (1) US5473764A (ja)
EP (1) EP0457403B1 (ja)
JP (1) JPH04232549A (ja)
DE (1) DE69128741T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008257508A (ja) * 2007-04-05 2008-10-23 Nec Electronics Corp キャッシュ制御方法およびキャッシュ装置並びにマイクロコンピュータ
JP2013097638A (ja) * 2011-11-02 2013-05-20 Renesas Electronics Corp キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5649154A (en) * 1992-02-27 1997-07-15 Hewlett-Packard Company Cache memory system having secondary cache integrated with primary cache for use with VLSI circuits
GB2264577B (en) * 1992-02-27 1995-06-14 Hewlett Packard Co Cache memory system
WO1993018459A1 (en) * 1992-03-06 1993-09-16 Rambus Inc. Prefetching into a cache to minimize main memory access time and cache size in a computer system
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
EP0638183B1 (en) 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp., Tokio/Tokyo System und Verfahren zur Änderung der Namen von Registern
DE69327981T2 (de) * 1993-01-21 2000-10-05 Advanced Micro Devices, Inc. Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt.
US5848432A (en) * 1993-08-05 1998-12-08 Hitachi, Ltd. Data processor with variable types of cache memories
JPH07219766A (ja) * 1994-02-02 1995-08-18 Toshiba Corp 演算処理装置
US5621896A (en) * 1994-06-01 1997-04-15 Motorola, Inc. Data processor with unified store queue permitting hit under miss memory accesses
US5619663A (en) * 1994-09-16 1997-04-08 Philips Electronics North America Corp. Computer instruction prefetch system
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
US5940088A (en) * 1995-07-12 1999-08-17 Monolithic System Technology, Inc. Method and structure for data traffic reduction for display refresh
US5809529A (en) * 1995-08-23 1998-09-15 International Business Machines Corporation Prefetching of committed instructions from a memory to an instruction 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
US5860150A (en) * 1995-10-06 1999-01-12 International Business Machines Corporation Instruction pre-fetching of a cache line within a processor
JP2000507019A (ja) * 1996-12-13 2000-06-06 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 直列式に動作する2台のプログラムドロジックコントローラを有する冗長データ処理システム
US6122729A (en) 1997-05-13 2000-09-19 Advanced Micro Devices, Inc. Prefetch buffer which stores a pointer indicating an initial predecode position
US5887151A (en) * 1997-07-10 1999-03-23 Emc Corporation Method and apparatus for performing a modified prefetch which sends a list identifying a plurality of data blocks
US6253289B1 (en) * 1998-05-29 2001-06-26 Compaq Computer Corporation Maximizing sequential read streams while minimizing the impact on cache and other applications
DE10043003A1 (de) * 2000-09-01 2002-03-14 Infineon Technologies Ag Programmgesteuerte Einheit
US6516388B1 (en) * 2000-09-15 2003-02-04 Hewlett-Packard Company Method and apparatus for reducing cache pollution
CA2378777A1 (en) * 2002-03-25 2003-09-25 Catena Networks Canada Inc. Shared program memory with fetch and prefetch buffers
US20040186823A1 (en) * 2003-02-12 2004-09-23 International Business Machines Corporation Data packet processing
JP4374221B2 (ja) * 2003-08-29 2009-12-02 パナソニック株式会社 コンピュータシステムおよび記録媒体
EP1854011A2 (en) 2005-02-15 2007-11-14 Koninklijke Philips Electronics N.V. Enhancing performance of a memory unit of a data processing device by separating reading and fetching functionalities
US7493447B2 (en) * 2006-05-03 2009-02-17 Nuvoton Technology Corporation System and method for caching sequential programs
US10114750B2 (en) 2012-01-23 2018-10-30 Qualcomm Incorporated Preventing the displacement of high temporal locality of reference data fill buffers
US9436501B2 (en) 2014-08-26 2016-09-06 International Business Machines Corporation Thread-based cache content saving for task switching
CN112631658B (zh) * 2021-01-13 2022-11-15 成都国科微电子有限公司 指令发送方法、芯片和电子设备
US11650821B1 (en) * 2021-05-19 2023-05-16 Xilinx, Inc. Branch stall elimination in pipelined microprocessors

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4521850A (en) * 1977-12-30 1985-06-04 Honeywell Information Systems Inc. Instruction buffer associated with a cache memory unit
US4503501A (en) * 1981-11-27 1985-03-05 Storage Technology Corporation Adaptive domain partitioning of cache memory space
US4430712A (en) * 1981-11-27 1984-02-07 Storage Technology Corporation Adaptive domain partitioning of cache memory space
US4626988A (en) * 1983-03-07 1986-12-02 International Business Machines Corporation Instruction fetch look-aside buffer with loop mode control
US4701844A (en) * 1984-03-30 1987-10-20 Motorola Computer Systems, Inc. Dual cache for independent prefetch and execution units
US4807110A (en) * 1984-04-06 1989-02-21 International Business Machines Corporation Prefetching system for a cache having a second directory for sequentially accessed blocks
JPH0630075B2 (ja) * 1984-08-31 1994-04-20 株式会社日立製作所 キャッシュメモリを有するデータ処理装置
US4691277A (en) * 1984-10-24 1987-09-01 International Business Machines Corp. Small instruction cache using branch target table to effect instruction prefetch
US4783736A (en) * 1985-07-22 1988-11-08 Alliant Computer Systems Corporation Digital computer with multisection cache
EP0258453B1 (en) * 1986-02-28 1993-05-19 Nec Corporation Instruction prefetch control apparatus
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
US4980823A (en) * 1987-06-22 1990-12-25 International Business Machines Corporation Sequential prefetching with deconfirmation
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
US4876642A (en) * 1988-01-19 1989-10-24 Gibson Glenn A Rules and apparatus for a loop capturing code buffer that prefetches instructions
US4905141A (en) * 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
US5093778A (en) * 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008257508A (ja) * 2007-04-05 2008-10-23 Nec Electronics Corp キャッシュ制御方法およびキャッシュ装置並びにマイクロコンピュータ
JP2013097638A (ja) * 2011-11-02 2013-05-20 Renesas Electronics Corp キャッシュメモリ装置、キャッシュ制御方法、およびマイクロプロセッサシステム

Also Published As

Publication number Publication date
DE69128741T2 (de) 1998-07-16
US5473764A (en) 1995-12-05
EP0457403A3 (en) 1992-07-01
EP0457403A2 (en) 1991-11-21
EP0457403B1 (en) 1998-01-21
DE69128741D1 (de) 1998-02-26

Similar Documents

Publication Publication Date Title
US5473764A (en) Multilevel instruction cache
US12072812B2 (en) Highly integrated scalable, flexible DSP megamodule architecture
EP2476060B1 (en) Store aware prefetching for a datastream
US4701844A (en) Dual cache for independent prefetch and execution units
US6728839B1 (en) Attribute based memory pre-fetching technique
US6212603B1 (en) Processor with apparatus for tracking prefetch and demand fetch instructions serviced by cache memory
US5381533A (en) Dynamic flow instruction cache memory organized around trace segments independent of virtual address line
US6128703A (en) Method and apparatus for memory prefetch operation of volatile non-coherent data
JP3800383B2 (ja) コンピュータのランダムアクセスメモリシステム
EP2095243B1 (en) Configurable cache for a microprocessor
JP2870207B2 (ja) 延滞キャッシュ・ロードを有するデータプロセッサ
US6813701B1 (en) Method and apparatus for transferring vector data between memory and a register file
EP2092429B1 (en) Configurable cache for a microprocessor
EP0854428A1 (en) Microprocessor comprising a writeback cache memory
US6012134A (en) High-performance processor with streaming buffer that facilitates prefetching of instructions
US6978360B2 (en) Scalable processor
US11307858B2 (en) Cache preload operations using streaming engine
US20080140934A1 (en) Store-Through L2 Cache Mode
US12050914B2 (en) Cache management operations using streaming engine
EP2495662B1 (en) Configurable cache for a microprocessor
EP1039377B1 (en) System and method supporting multiple outstanding requests to multiple targets of a memory hierarchy
KR100348099B1 (ko) 단일의캐쉬액세스파이프단을이용하여파이프라인저장명령을실행하기위한장치및방법과,파이프라인프로세서및,컴퓨터시스템
US5860150A (en) Instruction pre-fetching of a cache line within a processor
US7251710B1 (en) Cache memory subsystem including a fixed latency R/W pipeline
EP0156307A2 (en) Pipelined processor having dual cache memories