JPH06187150A - キャッシュメモリ中でインストラクションを保管する方法及び回路 - Google Patents

キャッシュメモリ中でインストラクションを保管する方法及び回路

Info

Publication number
JPH06187150A
JPH06187150A JP5232277A JP23227793A JPH06187150A JP H06187150 A JPH06187150 A JP H06187150A JP 5232277 A JP5232277 A JP 5232277A JP 23227793 A JP23227793 A JP 23227793A JP H06187150 A JPH06187150 A JP H06187150A
Authority
JP
Japan
Prior art keywords
instruction
instructions
memory
branch
address
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
JP5232277A
Other languages
English (en)
Other versions
JP2906315B2 (ja
Inventor
Walter J Jager
ウォルター・ジョアン・ジャガー
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.)
Nortel Networks Ltd
Original Assignee
Northern Telecom Ltd
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 Northern Telecom Ltd filed Critical Northern Telecom Ltd
Publication of JPH06187150A publication Critical patent/JPH06187150A/ja
Application granted granted Critical
Publication of JP2906315B2 publication Critical patent/JP2906315B2/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/3804Instruction prefetching for branches, e.g. hedging, branch folding

Abstract

(57)【要約】 【目的】 インストラクションを選択的にキャッシング
する先読みのための方法及び回路が提供される。 【構成】 複数のインストラクションを含むインストラ
クション実行ツリーが開示される。条件付き分岐インス
トラクションの両方のパスに依存するインストラクショ
ンが先読みされる。先読みされたインストラクションの
分岐が実行されるパス中にないことが決定されると、そ
の分岐に関するインストラクションは削除され、それに
より分岐は除去される。したがって、インストラクショ
ンアドレスは、プロセッサによって要求されるインスト
ラクションをキャッシュメモリに供給することにより選
択的にメモリ装置から除去される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的にはメモリ・シ
ステムに関するものであり、より詳細にはキャッシュメ
モリを利用するコンピュータシステムにおいて、キャッ
シュメモリ中でインストラクションを管理する方法及び
回路に関するものである。
【0002】
【従来の技術】ほとんどのコンピュータシステムは、プ
ロセッサおよびメモリ・システムを含む。プロセッサ
が、データを処理するためにインストラクションをデコ
―ドし実行する速度は、ときどきインストラクションと
オペランドがメモリ・システムのメインメモリ装置から
プロセッサに転送される速度を超えることがある。速度
の不整合によって起こる問題を減少させるために、多く
のコンピュータシステムは、プロセッサとメインメモリ
装置間にキャッシュメモリを含む。
【0003】キャッシュメモリは、小さい、高速のバッ
ファメモリであり、プロセッサによって近い将来に使わ
れそうなメインメモリ装置の内容部分のコピーを一時的
に保持するために使われる。典型的には、プロセッサが
インストラクションを必要とするとき、インストラクシ
ョンは、インストラクションバスを介してキャッシュメ
モリからまたはメインメモリ装置からフェッチされる。
キャッシュメモリの主な目的は、プロセッサに必要なデ
ータまたはインストラクションを供給するための時間を
短くすることである。キャッシュ・メモリに置かれた情
報は、メインメモリ装置に置かれた情報よりもより少な
い時間でアクセスができる。したがって、キャッシュメ
モリを有するプロセッサはフェッチ及び/又はストアの
インストラクション及びオペランドに対するる待ち時間
が非常に少なくなる。例えば、典型的な大型の高速コン
ピュータにおいては、メインメモリ装置は300〜60
0のナノ秒で、キャッシュメモリは20〜40のナノ秒
でアクセスできる。
【0004】キャッシュメモリ装置の望ましい目的は、
キャッシュ中のメインメモリ装置に関する情報を探す確
率を最大にし、プロセッサ(アクセス時間)によって必
要な情報にアクセスする時間を最小にし、及びキャッシ
ュミスによる遅延を最小にすることである。これらの目
的のすべては、コスト制約のもとにパラメータの間の相
互関係、たとえば、ヒット率及びアクセス時間の間のト
レードオフを考慮して達成されなければならない。キャ
ッシュメモリ中の必要な情報を発見する可能性はそのサ
イズに比例し、そのサイズは、コスト、物理的サイズ、
及びアクセスタイムを始めとする多数の要因に依存す
る。
【0005】最近になって、キャッシュ・メモリはイン
ストラクション先読み回路に結合されるようになった。
このインストラクション先読み回路はプロセッサが実際
に要求を出す前にキャッシュ中に将来のプロセッサ・イ
ンストラクション要求を記憶するための回路である。イ
ンストラクションがメインメモリ装置及びから先読みさ
れ、キャッシュメモリに書かれるとき、それらの先読み
されたインストラクションは以前に書かれキャッシュ内
にストアされたインストラクションに上書きされる。先
読みされたインストラクションによって以前に書かれた
インストラクションに上書きされると、キャッシュメモ
リの経歴部は先読み部で置き換えられる。
【0006】インストラクションがプロセッサによって
要求される前に先読みされる先読みキャッシュ装置にお
いて、インストラクションは、一般に、シーケンスに先
読みされる。無条件の分岐インストラクションに遭遇す
ると、先読み装置は、通常、分岐パスに従い、分岐イン
ストラクションに続くインストラクションはシーケンシ
ャルに先読みされる。条件付き分岐インストラクション
に遭遇すると、分岐条件の結果についての情報を有して
いない先読み装置は、一般に直通パスに沿って条件付き
分岐インストラクションに続くインストラクションを先
読みするようにプログラムされる。したがって、キャッ
シュメモリ中の分岐参照情報に沿っての先読みをしな
い。もちろん、これは完全に設計上の選択の問題であ
る。ある場合には、インストラクションを分岐パスに沿
って条件付き分岐インストラクション上のデフォルトと
して先読みすることが好ましいかもしれない。
【0007】いくらかのインストラクション先読み装置
において、条件付き分岐インストラクションに遭遇する
場合にデフォルト条件が直通パスを取るところでは、直
通パスである先読み回路のデフォルト条件によって、コ
ンパイラはインストラクションを指令する。インストラ
クションは、本来、条件付き分岐パスが50パーセント
より少なくなるように、直通パスが50パーセントを超
えるように指令される。
【0008】
【発明が解決しようとする課題】先読み装置がどのパス
を取るか、従って、どのインストラクションを先読みす
るかについて決定する前に、条件付き分岐インストラク
ションの結果を予測する他の装置は公知である。どの先
読みパスを取るかに関する決定は予想された結果の確率
によって行われるので、多くのこれらの装置は理想的な
ものではない。
【0009】
【課題を解決するための手段】この発明の目的はインス
トラクションを有するキャッシュメモリを保管する改善
された方法を提供することである。
【0010】本発明の一つの見地においては、インスト
ラクションをストアしたメインメモリ装置を備え、この
メインメモリ装置のいくつかは条件付き分岐インストラ
クションを含み、その条件付き分岐インストラクション
はこの条件付き分岐に続くそれぞれ第1及び第2のパス
を形成する第1及び第2のインストラクションのシーケ
ンスを有し、さらに、インストラクションを処理するプ
ロセッサと、そのプロセッサによって要求される前にイ
ンストラクションを先読みする先読み装置と、先読みさ
れたインストラクションをストアするキャッシュメモリ
と、プロセッサによって処理される予定のメインメモリ
装置中のインストラクションのロケーションに関する情
報をストアするメモリ装置を備えたコンピュータシステ
ムを用いて、キャッシュメモリ中でインストラクション
を保管する方法において:インストラクションを先読み
し、条件付き分岐インストラクションに対応する先読み
されたインストラクションを識別し;先読みされたイン
ストラクションが条件付き分岐インストラクションの場
合は、条件付き分岐インストラクションに続く第1及び
第2のパスのいずれか一つからインストラクションを先
読みし、第1及び第2のパスから他の第1のインストラ
クションのロケーションに関する情報をメモリ装置にス
トアし;最後に先読みされたインストラクションのロケ
ーションに対応した情報をメモリ装置にストアし、その
メモリ装置にストアされたインストラクションのアドレ
スで始まるシーケンシャルなインストラクションを先読
みし;メモリ装置にストアされたインストラクション・
アドレスがもはや実行されるパス中にないことが決定さ
れたときは、もはや実行パス上にないそのアドレスはメ
モリ装置から無効にされることを特徴とするキャッシュ
メモリ中でインストラクションを保管する方法が提供さ
れる。
【0011】本発明の他の見地においては、メインメモ
リ装置からインストラクションをシーケンシャルに先読
みし;もしインストラクションが条件付き分岐インスト
ラクションである場合は、メモリ中の分岐インストラク
ションのターゲットアドレスをストアし;もし先読みさ
れた最後のインストラクションがインストラクションブ
ロックの最後のインストラクションである場合は、イン
ストラクションの次のシーケンシャル・ブロックのスタ
ートアドレスをメモリ中にストアし、メモリ中のもっと
も古いアドレスで始まるシーケンシャル・インストラク
ションのブロックを先読みし;インストラクションをス
トアするメモリを保管する間、上のステップをくり返
し、ここで、インストラクションが実行パス中にないこ
とが決定された後に後者の場合はメモリからインストラ
クションを削除することを特徴とするキャッシュメモリ
中でインストラクションを保管する方法が提供される。
【0012】本発明のさらに他の見地においては、メモ
リバスに結合され、そのメモリバスにインストラクショ
ン・アドレスを供給し、キャッシュメモリとプロセッサ
からの要求に応答してインストラクションを先読みする
手段と、メモリバス・インタフェースに応答して、先読
みされたインストラクションが分岐インストラクション
であるか否かを決定する手段と;前記手段に応答して、
先読みされたインストラクションが分岐インストラクシ
ョンであるか否かを決定し、分岐インストラクションの
ターゲットアドレスをストアする第1のメモリ手段と;
第1のメモリ手段及びインストラクションを先読みする
手段に応答し、現在の先読みされたインストラクション
のアドレスと関連分岐タグ・ビットをストアする第2の
メモリ手段と;キャッシュ及び第1のメモリ手段に結合
され、プロセッサが実行しているインストラクションの
アドレスをストアする第3のメモリ手段とを備えたこと
を特徴とするインストラクション含むキャッシュメモリ
を保管する回路が提供される。
【0013】
【作用】本願発明においては、相互接続され先読みされ
たインストラクションの分岐はメモリ装置にストアさ
れ、既にストアされプロセッサに必要でないと決定され
た不要なインストラクションの分岐は除去される。この
決定は、関連の条件付き分岐インストラクションを処理
し、どの分岐を選択するかが決定された後で、プロセッ
サによって行われる。選択されなかったすべての分岐は
すでにストアされ相互接続された分岐から除去される。
相互接続された分岐がストアされたメモリ装置は固定サ
イズであるので、プロセッサによって必要とされないイ
ンストラクションは除去され、それによって、他のイン
ストラクションのためのスペースが増加する。
【0014】
【実施例】コンピュータプログラムが高級または低級言
語で書かれるとき、インストラクションは、一般にコン
パイルされ、機械言語プログラムが生成される。この機
械言語プログラムは、プロセッサによって実行可能なシ
ーケンシャル・インストラクションの形でメインメモリ
装置にストアされる。プロセッサがインストラクション
を実行するする前に、そのインストラクションの処理に
関するデータはメインメモリ装置からフェッチされなけ
ればならない。インストラクションはシーケンシャルに
フェッチされ、分岐インストラクションが最後に実行さ
れたインストラクションにシーケンシャルに続かない場
合を除き実行される。したがって、分岐パスが選択され
ると、シーケンシャル・インストラクションの普通の流
れは中断される。
【0015】図1において、ツリーは複数のインストラ
クション実行パスを有する。ツリーは分岐9を有し、こ
の分岐9はノード12に接続される。各ノードは、条件
付き分岐インストラクションを表し、各分岐9は、複数
のシーケンシャル・インストラクションを表す。シーケ
ンシャル・インストラクションと呼ばれるインストラク
ションは、メインメモリ装置中のシーケンシャルなロケ
ーションにストアされる。インストラクションのいくつ
かの分岐9は他の分岐9よりも長く構成され、したがっ
て、他の分岐よりも多くのインストラクションを含む。
所定の数の実行インストラクションのグループは、ブロ
ック・インストラクションと呼ばれる。分岐9は複数の
インストラクションのブロックを含むことができ、ある
いはインストラクションブロックより少ないインストラ
クションを含むこともできる。プロセッサがインストラ
クションを処理する間に、ノード12の条件付き分岐イ
ンストラクションは、満たされた分岐の状態になること
ができる。
【0016】したがって、条件付き分岐パスが選ばれ、
ノードの12に依存する右端の分岐9がそれに続く。一
方、条件付き分岐パスが選ばれない場合は、直通パスが
選ばれ左端の分岐9がそれに続く。ノード12に接続さ
れた左端の分岐9はインストラクションのシーケンシャ
ル・シーケンスに対応する。ノード12に依存する右の
分岐9は、シーケンシャル・インストラクションの前の
ブロックから分岐したインストラクション又はインスト
ラクションのブロックを示す。
【0017】図1において、隣接する各分岐9の情報
は、ハイフンおよび一つのディジットが続く3つのディ
ジットを有する分岐タグである。パスタグと呼ばれる3
つのディジットフィールドは000から111までの二進数を
含み、パスカウントと呼ばれる一つのディジットフィー
ルドは0から2までの10進数を含む。一つのディジッ
トフィールドは、図示の便宜のために10進数で表され
る。実行においては、一つのディジットフィールドの数
0,1および2が2進数として2ビットフィールドとし
てストアされる。パスタグ及びパスカウントの形の情報
を有する各インストラクションを連合することによっ
て、インストラクションをツリー内の特別のロケーショ
ンにマッピングすることができる。図1の例において、
パスタグ000およびパスカウント2を有するインストラ
クションはツリーのレベル0からの2レベルだけカウン
トダウンされる。しかし、ある場合には、ツリーの先頭
はパスタグ000およびパスカウント0を有しない。どの
場合にも、ツリーの先頭はプロセッサが現在インストラ
クションを実行しているところである。
【0018】システムはダイナミックに動作し、ツリー
の先頭またはヘッドは必ずしも図示されるように000ー0
で始まる必要はない。図1のツリーにおいて、パスタグ
000は、図示されるようにツリー中の現在のインストラ
クションの前に実行された分岐インストラクションがな
いことを示す。パスタグ001及びパスカウント1を有す
るインストラクションに対して、このパスタグはインス
トラクションが、ツリーの先頭からの2レベルだけカウ
ントダウンされることを示す。パスタグ001は一つ分岐
が直通パスから選択されたことを示す。パスタグ及びパ
スカウントを各インストラクションと連合させマッピン
グを形成することによって、インストラクションが実行
パス中にないと決定された後にインストラクションがキ
ャッシュメモリに書かれることを防止するメカニズムが
提供される。
【0019】例えば、もしプロセッサによって選択され
ない分岐のインストラクションのグループがキャッシュ
されなかった場合、インストラクションのグループは、
プロセッサに必要なインストラクションに対してキャッ
シュメモリ中により多くのスペースを残すために無視さ
れるか又は無効にされる。パスタグ及びパスカウントフ
ィールド中のビット位置の数は、もちろん、実行ツリー
の先読みされた部分の所望の深さに依存する。実行ツリ
ーの深さが大きければ大きいほど、パスタグ及びパスカ
ウントフィールドに対し要求されるビット位置の数はよ
り大きくなる。
【0020】図2は本発明の一実施例の回路を示す。プ
ロセッサ・バスインタフェース回路10は、従来の方法
でキャッシュメモリ20および先読み制御回路40に結
合される。プロセッサ(図示されていない)がインスト
ラクションの形でデータを要求するとき、インストラク
ションは、もしそれがキャッシュ中にあれば、キャッシ
ュメモリ20からプロセッサに供給される。これは、キ
ャッシュヒットと呼ばれる。要求されたインストラクシ
ョンがキャッシュ中になければキャッシュミスと呼ば
れ、メモリバス・インタフェース70を介してメインメ
モリ装置(図示されていない)からフェッチされなけれ
ばならない。先読み制御回路40は2つの機能を有す
る。一つはキャッシュメモリ20中のインストラクショ
ンをインストラクションがプロセッサによって要求され
る前に先読みしストアする機能であり、2つ目はキャッ
シュミスが合った場合、メインメモリ装置からインスト
ラクションをフェッチする機能である。現在のアドレス
レジスタ30(CAR)は、キャッシュメモリ20及び
内容アドレス先入れ先出しメモリ(FIFO)50に結
合される。
【0021】図3は図2に示される内容アドレス先入れ
先出しメモリ(FIFO)50の詳細図を示す。このF
IFO50は3つのメモリブロック51、52および5
3を含み、これらはタンデムに接続され全て従来の先入
れ先出しの方法で動作する。メモリブロック51は、m
×nのブロックのメモリであり、後で実行されるインス
トラクションのアドレスをストアする。メモリブロック
53は、1×nのメモリであり、ストアされたデータが
有効か無効かを示すために使用される。データは各リセ
ット・ラインを介してコンパレータ54によって先入れ
先出しの順序でメモリ53に書かれる。コンパレータ5
4は、CAR30中にストアされたパスタグとメモリブ
ロック52中にストアされたパスタグとを比較する。書
き込み読み取り要求信号及びマルチプレクサ55及び5
8を制御するマルチプレクサ制御信号のような外部的に
発生される制御信号は先読み制御回路40によって発生
される。
【0022】動作において、CAR30は、プロセッサ
が現在実行しているインストラクションのアドレスを含
む。FIFO50は、実行リストはプロセッサによって
実行される予定の将来のインストラクションをストアす
る。条件付き分岐インストラクションの実行の後、もし
分岐パスまたは直通パスを取る場合は、その実行は知ら
れている。もし直通パスを取らない場合は、直通パスに
沿った及びノードに依存しているすべてのインストラク
ションアドレスはFIFO50から削除される。これに
よって、ツリーの不必要な分岐のインストラクションは
除去される。一方、もし、プロセッサによって実行され
たインストラクションが分岐直通パスを取ることを示す
場合は、分岐ターゲットインストラクション・アドレス
及び分岐ターゲットインストラクションに依存するイン
ストラクションは、FIFO50から削除される。FI
FO50においてアドレスを除去することによって、実
行パス中にないインストラクションを先読みしないこと
によって実行されるインストラクションに対してより多
くのロケーションがキャッシュメモリ20中で使用でき
ることである。
【0023】さらに、近い将来に実行されないインスト
ラクションを先読みすることは時間を無駄にすることに
はならない。実際に選択を除去することに関する詳細は
設計上の選択の問題である。例えば、除去すべきFIF
O50中のエントリは、後に上書きされ又は不必要なエ
ントリは削除されあるいは無視される。例えば、削除プ
ロセスの詳細は、下記のメンテナンス・ステップのステ
ップ(C)において与えられる。先読みアドレスレジス
タ(PAR)45は、先読み制御回路40及びFIFO
50に結合され、現在の先読みインストラクションのア
ドレス及び関連の分岐タグをストアする。
【0024】図1に示されるツリーは、上述のインスト
ラクションを有するキャッシュメモリ20をメンテナン
スする動作を一例として示す。実際には、図1に示され
たツリーは、メインメモリ装置にストアされたインスト
ラクションをシーケンシャルに先読みすることによって
斜めに動く。もしインストラクションの先読み中に条件
付き分岐インストラクションに遭遇すると、分岐ターゲ
ットアドレスは実行リスト中のFIFO50に一時的に
ストアされ、シーケンシャル・インストラクション中で
の先読みは、最も左端の直通パスに沿って続く。
【0025】一方、先読みは分岐ターゲットアドレスか
ら継続し、最後に先読みされたインストラクションにシ
ーケンシャルに続くインストラクションのアドレスは実
行リストの中にストアされる。次のシーケンシャル・イ
ンストラクションのアドレス及びツリー中のインストラ
クションのロケーションに関する情報は、インストラク
ションのブロックを先読みする目的のこの実施例で定義
された所定の間隔で、実行リスト中にストアされ、先読
みは、実行リスト中の最新に使用された有効アドレスか
ら継続する。アドレスをブロックの終わり又は分岐イン
ストラクションのターゲットにストアするメカニズムに
よって、各ノード側でインストラクションを交互に先読
みすることができるようになる。これによって、プロセ
ッサに必要とされないインストラクションのキャッシン
グを行う一つの分岐パス上のインストラクションの先読
みを防止することができる。両側のノードまたはいくつ
かのノードを先読みすることによって、よりバランスの
とれた装置が実現できる。プロセッサが上位の関連分岐
を実行していないことを知った場合は、実行リスト中の
アドレスは、除去又は削除される。図2に示された回路
の動作は、以下の一実施例によって、次の先読み及びメ
ンテナンス方法によって理解できる。
【0026】先読み方法 キャッシュミスがある場合は、PAR45中のキャッシ
ュで発見されなかったアドレスをストアする。(また、
この「if」宣言文は、所望の情報がキャッシュ中で発
見されなかった開始シナリオで注意が必要である。) (A)PAR45にストアされたアドレスに対応したイ
ンストラクションを先読みする。現在のブロックに関す
るインストラクションは先読みされる(先読み制御回路
40は、ステップを制御し実行する。) (B)インストラクションが分岐インストラクションで
ある場合: (i)転送先のアドレスを分岐タグを有する実行リスト
(FIFO50)に追加する。この分岐タグは、パスタ
グのパスカウントビットが補間され、パスカウントが増
加することを除いて、分岐インストラクションの分岐タ
グと同じものである(これにより、レベルダウンを示
す)。(分岐デコーダ60はこのインストラクションが
オペレーションコードからのブランチであるか否かを決
定する。) (ii)PAR45中でパスカウントを増加する。 (C)PAR45中でアドレスを増加する。(先読み制
御回路40は、このステップを実行する。) (D)現在のブロックが先読みされていない場合は、
(A)に行き、インストラクションの先読みを線上で継
続する。先読み制御回路40はこの状態をテストする。 (E)現在のアドレスおよび分岐タグ(パスタグ及びパ
スカウント)を実行リスト(FIFO50)に追加す
る。先読み制御回路40はこのステップを制御する。 (F)第1のアドレスを実行リストからPAR45にス
トアし、(A)に行く。
【0027】メンテナンス方法 (A)インストラクション要求のためにCPUを待機さ
せる。 (B)要求されたインストラクションがキャッシュ中に
ある場合は、キャッシュからインストラクションをフェ
ッチする。インストラクションが分岐インストラクショ
ンでない場合は、(A)に行く。 (C)次のインストラクションについて、CAR30中
のパスタグのパスカウントビットを実行リスト中のすべ
てと比較し、もしこれらが異なる場合は、異なるエント
リを削除する。必要に応じてPAR45をアップデート
し、除去ブランチ上で先読みが行われるのを中止し、
(A)に行く。 他の方法として (A’)インストラクション要求のためにCPUを待機
させる。 (B’)要求されたインストラクションがキャッシュメ
モリ20中にある場合は、キャッシュメモリ20からイ
ンストラクションをフェッチする。 (C’)次のインストラクションについて、CAR30
中のパスタグのパスカウントビットを実行リスト中のす
べてと比較し、もしこれらが異なる場合は、異なるエン
トリを削除し、(A’)に行く。 上述の先読み方法において、ステップ(B)と(E)の
場合は、シーケンシャル・インストラクションの連続し
た先読みは中断され、FIFO50はアップデートされ
る。
【0028】下記は命令されたインストラクションのリ
ストを表わすテーブルである。各インストラクションに
示されるCAR30、PAR45およびキャッシュ20
の内容が実行される。FIFO50または実行リストの
内容は、命令されたインストラクションのシーケンスに
対して同様に示される。先読み インストラクション CAR #1 - ALU インストラクション #1 000-0 PARは次のシーケンシャル・インストラクションを含
む。 PAR: #2 000-0 先読み制御回路40は、n=8のインストラクション・
ブロックをキャッシュにフェッチする。キャッシュ #1 - ALUインストラクション 000-0 #2 - ALUインストラクション 000-0 #3 - ALUインストラクション 000-0 #4 - bcc #20 000-0 #5 - ALUインストラクション 000-1 #6 - ALUインストラクション 000-1 #7 - bcc #30 000-1 #8 - ALUインストラクション 000-2 この時、 PAR: #9 000-2 先読みの間、各条件付き分岐のターゲットのアドレスと
分岐タグは、実行リストに追加される。先読みブロック
が先読みされた後、PAR45にストアされた次のシー
ケンシャル・インストラクションのアドレス及び分岐タ
グが実行リストの最後に追加される。実行リスト : #20 - 001-1 #30 - 010-1 # 9 - 000-2 実行リストの先頭エントリは除去されPAR45中に入
れられる。 PAR: #20 001-1 先読みブロックは、PAR45中の新しいエントリから
先読みされる。キャッシュ # 1 - ALUインストラクション 000-0 # 2 - ALUインストラクション 000-0 # 3 - ALUインストラクション 000-0 # 4 - bcc #20 000-0 # 5 - ALUインストラクション 000-1 # 6 - ALUインストラクション 000-1 # 7 - bcc #30 000-1 # 8 - ALUインストラクション 000-2 #20 - ALUインストラクション 001-1 #21 - ALUインストラクション 001-1 #22 - bcc #40 001-1 #23 - ALUインストラクション 001-2 #24 - ALUインストラクション 001-2 #25 - ALUインストラクション 001-2 #26 - ALUインストラクション 001-2 #27 - ALUインストラクション 001-2 この時 PAR: #28 001-2 アドレス#22の条件付きブランチ・インストラクショ
ンのターゲットは、実行リストに追加される。次のシー
ケンシャル・インストラクション(PAR)のアドレス
及び分岐タグは、実行リストの最後に追加される。実行リスト : #30 - 010-1 # 9 - 000-2 #40 - 011-2 #28 - 001-2 実行リスト中の先頭エントリをPAR45に転送するこ
とによって、先読みは継続する。
【0029】メンテナンス この間、CPUはインストラクションのフェッチを続け
る:インストラクション CAR #1 - ALU インストラクション #1 000-0 #2 - ALU インストラクション #2 000-0 #3 - ALU インストラクション #3 000-0 #4 - bcc #20 #4 000-0 #5 - ALU インストラクション #5 000-1 CPUは、インストラクション#4においては条件付き
分岐パスを取らない。インストラクション#5(選択さ
れたパス)中のパスタグと異なるxx1(0)ビットの
パスタグを有する実行リスト中のすべてのエントリは削
除又は無効にすることによってゼロにされる。実行リスト : #30 - 010-1 # 9 - 000-2 #40 - 011-2 削除 #28 - 001-2 削除 現在の先読みされたインストラクションのブロックは、
xx1の分岐パスを有する。 PAR: #28 001-2 このブロックの先読みは停止し、実行リストの先頭から
の次のエントリはPAR45に転送される。 PAR: #30 010-1実行リスト : # 9 - 000-2 アドレス#30でスタートしたインストラクションのブ
ロックは先読みされる。
【0030】上述のインストラクションはシーケンシャ
ルにリストされ、その時にインストラクションはメモリ
にストアされる。最初のインストラクションは、従来の
メモリの次の記憶ロケーションにストアされたインスト
ラクションに続くアドレス#lにストアされる。各イン
ストラクションが実行されるとき、CAR30の内容
は、実行されるべき対応の現インストラクションのアド
レスと分岐タグを保持するために変更される。テーブル
は、各インストラクションの実行に対応するCAR30
の内容を示す。またFIFO50の内容は、将来先読み
されるインストラクションのアドレスと分岐タグを含ん
でいる。
【0031】メンテナンス方法が示すように、一度特別
の関連分岐パスが実行されないことが確定した場合は、
FIFO50にストアされたアドレス・エントリは削除
される。実行リストまたはFIFO50からエントリを
削除することによって、プロセッサが近い将来に実行し
そうにないインストラクションの先読みを防止する。し
かしながら、図3に示す実施例においては、従来のよう
な削除器によってエントリが消去されるのではない。エ
ントリを無視するようにタグを付することによって消去
され、その後上書きされる。タグが付されたエントリは
メモリ53中の有効/無効ビットをセットすることによ
って無効のタグ付けがされる。
【0032】図2、図3に示される内容アドレス可能な
FIFO50の動作は次の詳細な説明によってよりよく
理解できる。インストラクションのアドレスが実行リス
トに追加されるときはいつでも、アドレス関連分岐タグ
はメモリブロック51および52の第n番目のロケーシ
ョンにストアされる。第n番目のロケーションにストア
されたすべてのデータは、新しいデータが第n番目のロ
ケーションに書かれるときに、(n−l)番目のロケー
ションにシフトされる。エントリを上方へシフトするこ
とによって、データを第n番目から0番目のロケーショ
ンにシフトする。有効/無効ビットが無効な状態にセッ
トされると0番目のロケーションから読出されたデータ
は無視される。一方、ビットが有効な状態にセットされ
ると、メモリブロック51の0番目のロケーションから
読出されたアドレスから先読みが続けられる。
【0033】これに対して、固定されたロケーションで
ある第0番目および第n番目のロケーションの代わり
に、ロケーションはエントリのトラックを一時的に保持
するために使われる先頭及び末尾ポインタで可変され
る。コンパレータ54は、CAR30中にストアされ選
択されたパスタグ・ビットとメモリブロック52の第n
番目のロケーションの各々にストアされた同じパスタグ
・ビットとを比較する。2つの比較された対応のパスタ
グ・ビットが等しくないときは、関連の有効/無効ビッ
トは対応のコンパレータ54からのリセット・ラインを
介して無効状態にセットされる。無効状態にセットされ
た関連の有効/無効ビットを有するメモリブロック51
中のデータは、無視され、その後により新しいデータで
上書きされる。これによって、図1のツリー上のノード
の12及びそれに従属する分岐は削除される。このよう
に、内容アドレス可能なFIFO50は、先入れ先出し
メモリおよび内容アドレス可能なメモリの機能を実行す
る。多数の他の実施例が本発明の範囲から逸れることな
く考慮されることができる。
【0034】
【発明の効果】本願発明においては、相互接続され先読
みされたインストラクションの分岐はメモリ装置にスト
アされ、既にストアされプロセッサに必要でないと決定
された不要なインストラクションの分岐は除去される。
従って、実行インストラクションに対してより多くのロ
ケーションがキャッシュメモリ20中で使用できる。す
なわち、他のインストラクションのためのスペースを増
加させる効果がある。
【図面の簡単な説明】
【図1】インストラクションの実行ツリーを示す図であ
る。
【図2】本発明の一実施例のメモリ・システムのブロッ
ク図である。
【図3】図2のメモリ・システムにおけるFIFOの詳
細図である。
【符号の説明】
9 分岐 12 ノード 10 プロセッサバス・インタフェース回路 20 キャッシュメモリ 30 アドレスレジスタ 40 先読み制御回路 50 先入れ先出しメモリ(FIFO) 51,52,53 メモリブロック 54 コンパレータ 55,58 マルチプレクサ 70 メモリバス・インタフェース

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 インストラクションをストアしたメイン
    メモリ装置を備え、このメインメモリ装置のいくつかは
    条件付き分岐インストラクションを含み、その条件付き
    分岐インストラクションはこの条件付き分岐に続くそれ
    ぞれ第1及び第2のパスを形成する第1及び第2のイン
    ストラクションのシーケンスを有し、 さらに、インストラクションを処理するプロセッサと、
    そのプロセッサによって要求される前にインストラクシ
    ョンを先読みする先読み装置と、先読みされたインスト
    ラクションをストアするキャッシュメモリと、プロセッ
    サによって処理される予定のメインメモリ装置中のイン
    ストラクションのロケーションに関する情報をストアす
    るメモリ装置を備えたコンピュータシステムを用いて、
    キャッシュメモリ中でインストラクションを保管する方
    法において:インストラクションを先読みし、条件付き
    分岐インストラクションに対応する先読みされたインス
    トラクションを識別し;先読みされたインストラクショ
    ンが条件付き分岐インストラクションの場合は、条件付
    き分岐インストラクションに続く第1及び第2のパスの
    いずれか一つからインストラクションを先読みし、第1
    及び第2のパスから他の第1のインストラクションのロ
    ケーションに関する情報をメモリ装置にストアし;最後
    に先読みされたインストラクションのロケーションに対
    応した情報をメモリ装置にストアし、そのメモリ装置に
    ストアされたインストラクションのアドレスで始まるシ
    ーケンシャルなインストラクションを先読みし;メモリ
    装置にストアされたインストラクション・アドレスがも
    はや実行されるパス中にないことが決定されたときは、
    もはや実行パス上にないそのアドレスはメモリ装置から
    無効にされることを特徴とするキャッシュメモリ中でイ
    ンストラクションを保管する方法。
  2. 【請求項2】 請求項1の方法において、前記メモリ装
    置は、アドレス可能なFIFOであり、そこではデータ
    は通常先入れ先出し形態でストア及び削除され、ストア
    されたデータは上書きまたは削除によって無効にされる
    ことを特徴とするキャッシュメモリ中でインストラクシ
    ョンを保管する方法。
  3. 【請求項3】 請求項2の方法において、FIFOから
    インストラクションをシーケンシャルに先読みするステ
    ップは、FIFO中のもっとも古いインストラクション
    から始まることを特徴とするキャッシュメモリ中でイン
    ストラクションを保管する方法。
  4. 【請求項4】 請求項1の方法において、ストアするス
    テップは分岐パスから先読みされるn個のシーケンシャ
    ル・インストラクションに対応して発生することを特徴
    とするキャッシュメモリ中でインストラクションを保管
    する方法。
  5. 【請求項5】 請求項1の方法において、情報は、第1
    及び第2のパスの他の第1のインストラクションのロケ
    ーションに対応するデータビットを含む分岐タグの形で
    あることを特徴とするキャッシュメモリ中でインストラ
    クションを保管する方法。
  6. 【請求項6】 請求項5の方法において、分岐タグは、
    一つの分岐パスを識別するための単一の識別子であるこ
    とを特徴とするキャッシュメモリ中でインストラクショ
    ンを保管する方法。
  7. 【請求項7】 インストラクションプロセッサ、メイン
    メモリ装置、キャッシュメモリ、及びアドレス可能なF
    IFOを有するコンピュータシステムを用いてキャッシ
    ュメモリ中でインストラクションを保管する方法におい
    て: (a)メインメモリ装置からのn個のシーケンシャル・
    インストラクションのブロックを形成するインストラク
    ションを先読みし、それらをキャッシュメモリに保管
    し; (b)もし先読みされたインストラクションが条件付き
    分岐インストラクションである場合は、シーケンシャル
    ・インストラクションのブロックの先読みを解釈し、次
    のシーケンシャル・インストラクションのアドレスに対
    応したアドレスおよび前記の中断ブロックのロケーショ
    ンに対応した情報をアドレス可能なFIFOにストア
    し; (c)分岐ターゲットアドレスのインストラクションで
    始まるシーケンシャル・インストラクションの次のブロ
    ックを先読みし、ステップ(b)を反復し; (d)もし現在のブロックが先読みされていない場合
    は、ステップ(a)を実行することによって先読みを継
    続し; (e)もし現在のブロックが先読みされている場合は、
    次のシーケンシャル・ブロックの初めのインストラクシ
    ョンの宛先アドレスをアドレス可能なFIFOにストア
    し;最後にFIFOにストアされたアドレスで始まるイ
    ンストラクションのブロックからシーケンシャルにイン
    ストラクションを先読みし; (f)プログラムの実行の所定の場合に、もはや実行パ
    ス中にないFIFOからアドレスを除去し、ステップ
    (b)を反復する;ことを特徴とするキャッシュメモリ
    中でインストラクションを保管する方法。
  8. 【請求項8】 メインメモリ装置からインストラクショ
    ンをシーケンシャルに先読みし;もしインストラクショ
    ンが条件付き分岐インストラクションである場合は、メ
    モリ中の分岐インストラクションのターゲットアドレス
    をストアし;もし先読みされた最後のインストラクショ
    ンがインストラクションブロックの最後のインストラク
    ションである場合は、インストラクションの次のシーケ
    ンシャル・ブロックのスタートアドレスをメモリ中にス
    トアし、メモリ中のもっとも古いアドレスで始まるシー
    ケンシャル・インストラクションのブロックを先読み
    し;インストラクションをストアするメモリを保管する
    間、上のステップをくり返し、ここで、インストラクシ
    ョンが実行パス中にないことが決定された後に後者の場
    合はメモリからインストラクションを削除することを特
    徴とするキャッシュメモリ中でインストラクションを保
    管する方法。
  9. 【請求項9】 メインメモリ装置からのインストラクシ
    ョンをシーケンシャルに先読みし、そのインストラクシ
    ョンをキャッシュメモリにストアし;もし条件付き分岐
    インストラクションが先読みされている場合は:条件付
    き分岐インストラクションに続くインストラクションを
    シーケンシャルにキャッシュメモリにストアし;条件付
    き分岐インストラクションに関する分岐ターゲットアド
    レス及びその次のシーケンシャル・インストラクション
    をキャッシュメモリにストアし;もしプロセッサによっ
    て条件付き分岐インストラクションの状態が満たされか
    つ分岐ターゲットアドレスにおけるインストラクション
    の実行が決定される場合は:条件付き分岐インストラク
    ションに続くインストラクションをキャッシュメモリか
    らシーケンシャルに除去し;もしプロセッサによって条
    件付き分岐インストラクションの状態が満たされずかつ
    分岐ターゲットアドレスにおけるインストラクションの
    実行が決定される場合は:分岐ターゲットインストラク
    ションおよびキャッシュメモリ中にストアされたそのイ
    ンストラクションに続くインストラクションを除去する
    ことを特徴とするキャッシュメモリ中でインストラクシ
    ョンを保管する方法。
  10. 【請求項10】 メモリバスに結合され、そのメモリバ
    スにインストラクション・アドレスを供給し、キャッシ
    ュメモリとプロセッサからの要求に応答してインストラ
    クションを先読みする手段と、 メモリバス・インタフェースに応答して、先読みされた
    インストラクションが分岐インストラクションであるか
    否かを決定する手段と;前記手段に応答して、先読みさ
    れたインストラクションが分岐インストラクションであ
    るか否かを決定し、分岐インストラクションのターゲッ
    トアドレスをストアする第1のメモリ手段と;第1のメ
    モリ手段及びインストラクションを先読みする手段に応
    答し、現在の先読みされたインストラクションのアドレ
    スと関連分岐タグ・ビットをストアする第2のメモリ手
    段と;キャッシュ及び第1のメモリ手段に結合され、プ
    ロセッサが実行しているインストラクションのアドレス
    をストアする第3のメモリ手段とを備えたことを特徴と
    するインストラクション含むキャッシュメモリを保管す
    る回路。
  11. 【請求項11】 請求項10の回路において、第1のメ
    モリ手段はアドレス可能なFIFOであることを特徴と
    するインストラクション含むキャッシュメモリを保管す
    る回路。
JP5232277A 1992-08-27 1993-08-25 キャッシュメモリ中でインストラクションを保管する方法及び回路 Expired - Fee Related JP2906315B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/935,941 US5423048A (en) 1992-08-27 1992-08-27 Branch target tagging
US935,941 1992-08-27

Publications (2)

Publication Number Publication Date
JPH06187150A true JPH06187150A (ja) 1994-07-08
JP2906315B2 JP2906315B2 (ja) 1999-06-21

Family

ID=25467930

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5232277A Expired - Fee Related JP2906315B2 (ja) 1992-08-27 1993-08-25 キャッシュメモリ中でインストラクションを保管する方法及び回路

Country Status (2)

Country Link
US (1) US5423048A (ja)
JP (1) JP2906315B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912650B2 (en) 2000-03-21 2005-06-28 Fujitsu Limited Pre-prefetching target of following branch instruction based on past history

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5584009A (en) * 1993-10-18 1996-12-10 Cyrix Corporation System and method of retiring store data from a write buffer
TW253946B (en) * 1994-02-04 1995-08-11 Ibm Data processor with branch prediction and method of operation
US5687338A (en) * 1994-03-01 1997-11-11 Intel Corporation Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor
US5603045A (en) * 1994-12-16 1997-02-11 Vlsi Technology, Inc. Microprocessor system having instruction cache with reserved branch target section
US5701426A (en) * 1995-03-31 1997-12-23 Bull Information Systems Inc. Data processing system and method using cache miss address prediction and forced LRU status in a cache memory to improve cache hit ratio
US5742804A (en) * 1996-07-24 1998-04-21 Institute For The Development Of Emerging Architectures, L.L.C. Instruction prefetch mechanism utilizing a branch predict instruction
US5918246A (en) * 1997-01-23 1999-06-29 International Business Machines Corporation Apparatus and method for prefetching data based on information contained in a compiler generated program map
US6064818A (en) * 1997-04-10 2000-05-16 International Business Machines Corporation Straight path optimization for compilers
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
US6289442B1 (en) * 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
US7134004B1 (en) * 1999-09-29 2006-11-07 Fujitsu Limited Processing device for buffering sequential and target sequences and target address information for multiple branch instructions
US6826573B1 (en) * 2000-02-15 2004-11-30 Intel Corporation Method and apparatus for queue issue pointer
US6832308B1 (en) 2000-02-15 2004-12-14 Intel Corporation Apparatus and method for instruction fetch unit
DE10009677A1 (de) * 2000-02-29 2001-09-06 Infineon Technologies Ag Programmgesteuerte Einheit
US6760818B2 (en) * 2002-05-01 2004-07-06 Koninklijke Philips Electronics N.V. Memory region based data pre-fetching
US20030233530A1 (en) * 2002-06-14 2003-12-18 International Business Machines Corporation Enhanced instruction prefetch engine
US20050182920A1 (en) * 2004-02-13 2005-08-18 Alexandre Palus Apparatus and method for expedited exception handling using a dedicated port
JP5233078B2 (ja) * 2006-03-23 2013-07-10 富士通セミコンダクター株式会社 プロセッサ及びその処理方法
JP2008071061A (ja) * 2006-09-13 2008-03-27 Fujitsu Ltd 情報処理装置
US7702888B2 (en) * 2007-02-28 2010-04-20 Globalfoundries Inc. Branch predictor directed prefetch
JP5630568B2 (ja) * 2011-03-22 2014-11-26 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
US9250912B2 (en) * 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US9250909B2 (en) * 2012-06-12 2016-02-02 International Business Machines Corporation Fast index tree for accelerated branch prediction
US20170060591A1 (en) * 2015-08-26 2017-03-02 Huawei Technologies Co., Ltd. System and method for multi-branch switching
US10372413B2 (en) * 2016-09-18 2019-08-06 International Business Machines Corporation First-in-first-out buffer

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
DE3785897T2 (de) * 1986-02-28 1993-09-30 Nec Corp Steuervorrichtung zum vorabruf von befehlen.
JPS6393041A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US5226138A (en) * 1990-11-27 1993-07-06 Sun Microsystems, Inc. Method for selectively transferring data instructions to a cache memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912650B2 (en) 2000-03-21 2005-06-28 Fujitsu Limited Pre-prefetching target of following branch instruction based on past history

Also Published As

Publication number Publication date
US5423048A (en) 1995-06-06
JP2906315B2 (ja) 1999-06-21

Similar Documents

Publication Publication Date Title
JP2906315B2 (ja) キャッシュメモリ中でインストラクションを保管する方法及び回路
US6134634A (en) Method and apparatus for preemptive cache write-back
US6560693B1 (en) Branch history guided instruction/data prefetching
US7120744B2 (en) System and method for managing a cache memory
EP0604139B1 (en) Computer system including a prefetch cache
US5353426A (en) Cache miss buffer adapted to satisfy read requests to portions of a cache fill in progress without waiting for the cache fill to complete
EP0097790B1 (en) Apparatus for controlling storage access in a multilevel storage system
US6092182A (en) Using ECC/parity bits to store predecode information
JP4298800B2 (ja) キャッシュメモリにおけるプリフェッチ管理
US8499123B1 (en) Multi-stage pipeline for cache access
JPH0364893B2 (ja)
JP2744882B2 (ja) キューにより命令の実行を制御する装置及び方法
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
US8621152B1 (en) Transparent level 2 cache that uses independent tag and valid random access memory arrays for cache access
CN112119377A (zh) 用于多个软件工作负载的分支预测缓存
KR100348099B1 (ko) 단일의캐쉬액세스파이프단을이용하여파이프라인저장명령을실행하기위한장치및방법과,파이프라인프로세서및,컴퓨터시스템
US5951671A (en) Sharing instruction predecode information in a multiprocessor system
US5926841A (en) Segment descriptor cache for a processor
US7685372B1 (en) Transparent level 2 cache controller
JPH08314802A (ja) キャッシュシステム、キャッシュメモリアドレスユニット、およびキャッシュメモリを動作させる方法
US6516388B1 (en) Method and apparatus for reducing cache pollution
JPH1055276A (ja) 多重レベル分岐予測方法および装置
US20010032297A1 (en) Cache memory apparatus and data processing system
US6934810B1 (en) Delayed leaky write system and method for a cache memory
US5765190A (en) Cache memory in a data processing system

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees