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

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

Info

Publication number
JP2906315B2
JP2906315B2 JP5232277A JP23227793A JP2906315B2 JP 2906315 B2 JP2906315 B2 JP 2906315B2 JP 5232277 A JP5232277 A JP 5232277A JP 23227793 A JP23227793 A JP 23227793A JP 2906315 B2 JP2906315 B2 JP 2906315B2
Authority
JP
Japan
Prior art keywords
instructions
instruction
memory
address
cache memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP5232277A
Other languages
English (en)
Other versions
JPH06187150A (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.)
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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的にはメモリ・シ
ステムに関するものであり、より詳細にはキャッシュメ
モリを利用するコンピュータシステムにおいて、キャッ
シュメモリ中でインストラクションを管理する方法及び
回路に関するものである。
【0002】
【従来の技術】ほとんどのコンピュータシステムは、プ
ロセッサおよびメモリ・システムを含む。プロセッサ
が、データを処理するためにインストラクションをデコ
―ドし実行する速度は、ときどきインストラクションと
オペランドがメモリ・システムのメインメモリ装置から
プロセッサに転送される速度を超えることがある。速度
の不整合によって起こる問題を減少させるために、多く
のコンピュータシステムは、プロセッサとメインメモリ
装置間にキャッシュメモリを含む。
【0003】キャッシュメモリは、小さい、高速のバッ
ファメモリであり、プロセッサによって近い将来に使わ
れそうなメインメモリ装置の内容部分のコピーを一時的
に保持するために使われる。典型的には、プロセッサが
インストラクションを必要とするとき、インストラクシ
ョンは、インストラクションバスを介してキャッシュメ
モリからまたはメインメモリ装置からフェッチされる。
キャッシュメモリの主な目的は、プロセッサに必要なデ
ータまたはインストラクションを供給するための時間を
短くすることである。キャッシュ・メモリに置かれた情
報は、メインメモリ装置に置かれた情報よりもより少な
い時間でアクセスができる。したがって、キャッシュメ
モリを有するプロセッサはフェッチ及び/又はストアの
インストラクション及びオペランドに対するる待ち時間
が非常に少なくなる。例えば、典型的な大型の高速コン
ピュータにおいては、メインメモリ装置は300〜60
0のナノ秒で、キャッシュメモリは20〜40のナノ秒
でアクセスできる。
【0004】キャッシュメモリ装置の望ましい目的は、
キャッシュ中のメインメモリ装置に関する情報を探す確
率を最大にし、プロセッサ(アクセス時間)によって必
要な情報にアクセスする時間を最小にし、及びキャッシ
ュミスによる遅延を最小にすることである。これらの目
的のすべては、コスト制約のもとにパラメータの間の相
互関係、たとえば、ヒット率及びアクセス時間の間のト
レードオフを考慮して達成されなければならない。キャ
ッシュメモリ中の必要な情報を発見する可能性はそのサ
イズに比例し、そのサイズは、コスト、物理的サイズ、
及びアクセスタイムを始めとする多数の要因に依存す
る。
【0005】最近になって、キャッシュ・メモリはイン
ストラクション先読み回路に結合されるようになった。
このインストラクション先読み回路はプロセッサが実際
に要求を出す前にキャッシュ中に将来のプロセッサ・イ
ンストラクション要求を記憶するための回路である。イ
ンストラクションがメインメモリ装置及びから先読みさ
れ、キャッシュメモリに書かれるとき、それらの先読み
されたインストラクションは以前に書かれキャッシュ内
にストアされたインストラクションに上書きされる。先
読みされたインストラクションによって以前に書かれた
インストラクションに上書きされると、キャッシュメモ
リの経歴部は先読み部で置き換えられる。
【0006】インストラクションがプロセッサによって
要求される前に先読みされる先読みキャッシュ装置にお
いて、インストラクションは、一般に、シーケンスに先
読みされる。無条件の分岐インストラクションに遭遇す
ると、先読み装置は、通常、分岐パスに従い、分岐イン
ストラクションに続くインストラクションはシーケンシ
ャルに先読みされる。条件付き分岐インストラクション
に遭遇すると、分岐条件の結果についての情報を有して
いない先読み装置は、一般に直通パスに沿って条件付き
分岐インストラクションに続くインストラクションを先
読みするようにプログラムされる。したがって、キャッ
シュメモリ中の分岐参照情報に沿っての先読みをしな
い。もちろん、これは完全に設計上の選択の問題であ
る。ある場合には、インストラクションを分岐パスに沿
って条件付き分岐インストラクション上のデフォルトと
して先読みすることが好ましいかもしれない。
【0007】いくらかのインストラクション先読み装置
において、条件付き分岐インストラクションに遭遇する
場合にデフォルト条件が直通パスを取るところでは、直
通パスである先読み回路のデフォルト条件によって、コ
ンパイラはインストラクションを指令する。インストラ
クションは、本来、条件付き分岐パスが50パーセント
より少なくなるように、直通パスが50パーセントを超
えるように指令される。
【0008】
【発明が解決しようとする課題】先読み装置がどのパス
を取るか、従って、どのインストラクションを先読みす
るかについて決定する前に、条件付き分岐インストラク
ションの結果を予測する他の装置は公知である。どの先
読みパスを取るかに関する決定は予想された結果の確率
によって行われるので、多くのこれらの装置は理想的な
ものではない。
【0009】
【課題を解決するための手段】この発明の目的はインス
トラクションを有するキャッシュメモリを保管する改善
された方法を提供することである。
【0010】本発明の一つの見地においては、インスト
ラクションをストアしたメインメモリ装置を備え、この
インストラクションのいくつかは条件付き分岐インスト
ラクションであり、その条件付き分岐インストラクショ
ンはこの条件付き分岐に続く第1及び第2のパスを形成
し、さらに、インストラクションを処理するプロセッサ
と、そのプロセッサによって要求される前にインストラ
クションを先読みする先読み装置と、先読みされたイン
ストラクションをストアするキャッシュメモリと、プロ
セッサによって処理される予定のメインメモリ装置中の
インストラクションのロケーションに関する情報をスト
アするメモリ装置を備えたコンピュータシステムを用い
て、キャッシュメモリ中にインストラクションを保管す
る方法において: インストラクションを先読みし、それによってインスト
ラクションはメインメモリ装置から得られキャッシュメ
モリにストアし;条件付き分岐インストラクションであ
る先読みされたインストラクションを識別し;条件付き
分岐インストラクションである先読みされたインストラ
クションに応じて、インストラクションの第1のパスか
らシーケンシャルにインストラクションを先読みし、イ
ンストラクションの第2のパスの第1のインストラクシ
ョンに関する情報をメモリ装置にストアし;インストラ
クションの第1のパス中で先読みされる次のシーケンシ
ャルなインストラクションに関する情報をメモリ装置に
ストアし、そのメモリ装置にストアされた次の情報に関
するインストラクションでシーケンシャルに始まるイン
ストラクションを先読みし;メモリ装置中のロケーショ
ンにストアされた情報に関するインストラクションがも
はや実行されるパス中にないことが決定されたときは、
メモリ装置中のロケーションを無効にするように構成さ
れる。
【0011】本発明の他の見地においては、メインメモ
リ装置からのインストラクションをシーケンシャルに先
読みし、そのインストラクションをキャッシュメモリに
ストアし; もし条件付き分岐インストラクションが先読みされてい
る場合は:条件付き分岐インストラクションにシーケン
シャルに続くインストラクションをキャッシュメモリに
ストアし;条件付き分岐インストラクションに関する分
岐目標アドレスの及びその次の分岐目標アドレスのシー
ケンシャル・インストラクションをキャッシュメモリに
ストアし; もし条件付き分岐インストラクションの条件が満たされ
かつ分岐目標アドレスにおけるインストラクションが実
行されることがプロセッサによって決定される場合は:
条件付き分岐インストラクションにシーケンシャルに続
くインストラクションをキャッシュメモリから除去し; もし条件付き分岐インストラクションの条件が満たされ
ずかつ分岐インストラクションにシーケンシャルに続く
インストラクションが実行されることがプロセッサによ
って決定される場合は:分岐目標インストラクションお
よびキャッシュメモリ中にストアされたそのインストラ
クションにシーケンシャルに続くインストラクションを
除去するように構成される。
【0012】本発明のさらに他の見地においては、メモ
リバスに結合され、そのメモリバスにインストラクショ
ン・アドレスを供給し、キャッシュメモリとプロセッサ
からの要求に応答してインストラクションを先読みする
手段と、メモリバス・インタフェースに応答して、先読
みされたインストラクションが分岐インストラクション
であるか否かを決定する手段と;前記手段に応答して、
先読みされたインストラクションが分岐インストラクシ
ョンであるか否かを決定し、分岐インストラクションの
ターゲットアドレスをストアする第1のメモリ手段(5
0)と;第1のメモリ手段及びインストラクションを先
読みする手段に応答し、現在の先読みされたインストラ
クションのアドレスと関連分岐タグ・ビットをストアす
る先読みアドレスレジスタ(PAR)と;キャッシュ及
び第1のメモリ手段に結合され、プロセッサが実行して
いるインストラクションのアドレスをストアする現在ア
ドレスレジスタ(CAR)とを備えるように構成され
る。
【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からまでの10進数を含む。一つのディジッ
トフィールドは、図示の便宜のために10進数で表され
る。実行においては、一つのディジットフィールドの数
0,1,2および3が2進数として2ビットフィールド
としてストアされる。パスタグ及びパスカウントの形の
情報を有する各インストラクションを連合することによ
って、インストラクションをツリー内の特別のロケーシ
ョンにマッピングすることができる。図1の例におい
て、パスタグ000およびパスカウント2を有するインス
トラクションはツリーのレベル0からの2レベルだけカ
ウントダウンされる。しかし、ある場合には、ツリーの
先頭はパスタグ000およびパスカウント0を有しない。
どの場合にも、ツリーの先頭はプロセッサが現在インス
トラクションを実行しているところである。
【0018】システムはダイナミックに動作し、ツリー
の先頭またはヘッドは必ずしも図示されるように000ー0
で始まる必要はない。図1のツリーにおいて、パスタグ
000は、図示されるようにツリー中の現在のインストラ
クションの前に実行された分岐インストラクションがな
いことを示す。パスタグ001及びパスカウント1を有す
るインストラクションに対して、このパスカウントはイ
ンストラクションが、ツリーの先頭からのレベルだけ
カウントダウンされることを示す。パスタグ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か
ら削除される。FIFO50においてアドレスを除去す
ることによって、実行パス中にないインストラクション
を先読みしないことによって実行されるインストラクシ
ョンに対してより多くのロケーションがキャッシュメモ
リ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 メモリバス・インタフェース
───────────────────────────────────────────────────── フロントページの続き (73)特許権者 390023157 THE WORLD TRADE CE NTRE OF MONTREAL,M ONTREAL,QUEBEC H2Y 3Y4,CANADA (56)参考文献 特開 平5−165633(JP,A) 特開 平3−31933(JP,A) 特開 昭63−172343(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 9/38 G06F 12/08

Claims (11)

    (57)【特許請求の範囲】
  1. 【請求項1】 インストラクションをストアしたメイン
    メモリ装置を備え、このインストラクションのいくつか
    は条件付き分岐インストラクションであり、その条件付
    き分岐インストラクションはこの条件付き分岐に続く第
    1及び第2のパスを形成し、 さらに、インストラクションを処理するプロセッサと、
    そのプロセッサによって要求される前にインストラクシ
    ョンを先読みする先読み装置と、先読みされたインスト
    ラクションをストアするキャッシュメモリと、プロセッ
    サによって処理される予定のメインメモリ装置中のイン
    ストラクションに関する情報をストアするメモリ装置を
    備えたコンピュータシステムを用いて、キャッシュメモ
    リ中にインストラクションを保管する方法において: インストラクションを先読みし、それによってメインメ
    モリ装置から得られたインストラクションをキャッシュ
    メモリにストアし;先読みされたインストラクションが条件付き分岐インス
    トラクションであるかどうかを 識別し;先読みされたインストラクションが条件付き分岐インス
    トラクションであると識別されたことに 応じて、インス
    トラクションの第1のパスからシーケンシャルにインス
    トラクションを先読みし、インストラクションの第2の
    パスの第1のインストラクションに関する情報をメモリ
    装置にストアし; インストラクションの第1のパス中で先読みされる次の
    シーケンシャルなインストラクションに関する情報をメ
    モリ装置にストアし、そのメモリ装置にストアされた次
    シーケンシャルなインストラクションに関する情報に
    関するインストラクションでシーケンシャルに始まるイ
    ンストラクションを先読みし、キャッシュメモリにスト
    アし; メモリ装置中にストアされた情報に関するインストラク
    ションがもはや実行されるパス中にないことが決定され
    たときは、メモリ装置中にストアされた情報を無効にす
    ることを特徴とするキャッシュメモリ中にインストラク
    ションを保管する方法。
  2. 【請求項2】 請求項1の方法において、前記メモリ装
    置は、アドレス可能なFIFOであり、そこではデータ
    は通常先入れ先出し形態でストア及び削除され、ストア
    されたデータは上書きまたは削除によって無効にされる
    ことを特徴とするキャッシュメモリ中にインストラクシ
    ョンを保管する方法。
  3. 【請求項3】 請求項2の方法において、FIFO中に
    ストアされた次のシーケンシャルなインストラクション
    に関する情報に関するインストラクションからシーケン
    シャルに始まるインストラクションを先読みするステッ
    プは、FIFO中にストアされたもっとも古い情報から
    始まることを特徴とするキャッシュメモリ中にインスト
    ラクションを保管する方法。
  4. 【請求項4】 請求項1の方法において、インストラク
    ションの第1のパス中に先読みされる次のシーケンシャ
    ルなインストラクションに関する情報をメモリ装置にス
    トアするステップは、インストラクションの第1のパス
    から先読みされるn個のシーケンシャル・インストラク
    ションに対応して発生することを特徴とするキャッシュ
    メモリ中にインストラクションを保管する方法。
  5. 【請求項5】 請求項1の方法において、インストラク
    ションの第2のパス中の第1のインストラクションに関
    する情報は、インストラクションの第2のパス中の第1
    のインストラクションの位置に対応するデータビットを
    含む分岐タグの形であることを特徴とするキャッシュメ
    モリ中にインストラクションを保管する方法。
  6. 【請求項6】 請求項5の方法において、分岐タグは、
    一つの分岐パスを識別するための識別子であることを特
    徴とするキャッシュメモリ中にインストラクションを保
    管する方法。
  7. 【請求項7】 実行パス中にあるインストラクションを
    処理するためのインストラクションプロセッサ、メイン
    メモリ装置、キャッシュメモリ、及びメインメモリ中の
    インストラクションのアドレスをストアするアドレス可
    能なFIFOを有するコンピュータシステムを用いてキ
    ャッシュメモリ中にインストラクションを保管する方法
    において: (a)FIFO中にストアされたアドレスに応じて、n
    個のシーケンシャル・インストラクションのブロックを
    先読みし、次に、その先読みされたn個のインストラク
    ションをキャッシュメモリに保管し; (b)もし前記n個のインストラクションブロック中で
    先読みされたインストラクションが条件付き分岐インス
    トラクションである場合は、ステップ(a)で実行され
    るn個のインストラクションのブロックの先読みを中断
    、条件付き分岐インストラクションの分岐目標アドレ
    ス(この分岐目標アドレスはメインメモリ中のインスト
    ラクション・アドレスである)をアドレス可能なFIF
    Oにストアし、ステップ(a)で実行されるn個のイン
    ストラクションのブロックを先読みし; (c)もしn個のインストラクションのブロックの先読
    みが完了した場合は、n個のインストラクションのブロ
    ックの最後のインストラクションのアドレスにシーケン
    シャルであるメインメモリ中のインストラクション・
    ドレスをアドレス可能なFIFOにストアし; (d)プログラムを実行するときに、もはや実行パス中
    にないFIFOからアドレスを除去し、ステップ(a)
    を反復する; ことを特徴とするキャッシュメモリ中にインストラクシ
    ョンを保管する方法。
  8. 【請求項8】 コンピュータプロセッサによって、実行
    されるべきインストラクションのパスに従って、キャッ
    シュメモリ中にインストラクションを保管する方法にお
    いて: メインメモリ装置中のシーケンシャルアドレスにストア
    されたn個のインストラクションのブロックを先読み
    し、そのインストラクションをキャッシュメモリにスト
    アし; もしn個のインストラクションのブロックのインストラ
    クションが条件付き分岐インストラクションである場合
    は、他のメモリ中に条件付き分岐インストラクションの
    目標アドレスをストアし、ここで、目標アドレスとは、
    もし条件付き分岐インストラクションの条件が合えば、
    そこからインストラクションのパスが実行されるメイン
    メモリ中のアドレスであり; もしn個のインストラクションのブロックのインストラ
    クションがn個のインストラクションのブロック中の最
    後のインストラクションである場合は、n個のインスト
    ラクションの次のブロックのスタート・メインメモリ・
    アドレスを他のメモリ中にストアし、メインメモリ中で
    他のメモリ中の最も先にストアされたアドレス に置か
    れたインストラクションで始まるn個のインストラクシ
    ョンの次のブロックを先読みし; 他のメモリを保管する間、上のステップの全てをくり返
    し、ここで、他のメモリを保管するステップは、他のメ
    モリ中にストアされ、実行されるべきインストラクショ
    ンパス中のインストラクションがメインメモリ中でアド
    レスされていないアドレスを削除することを特徴とする
    キャッシュメモリ中にインストラクションを保管する方
    法。
  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
US935,941 1992-08-27
US07/935,941 US5423048A (en) 1992-08-27 1992-08-27 Branch target tagging

Publications (2)

Publication Number Publication Date
JPH06187150A JPH06187150A (ja) 1994-07-08
JP2906315B2 true 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)

Families Citing this family (26)

* 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
US6912650B2 (en) * 2000-03-21 2005-06-28 Fujitsu Limited Pre-prefetching target of following branch instruction based on past history
US6832308B1 (en) 2000-02-15 2004-12-14 Intel Corporation Apparatus and method for instruction fetch unit
US6826573B1 (en) * 2000-02-15 2004-11-30 Intel Corporation Method and apparatus for queue issue pointer
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
WO2012127628A1 (ja) * 2011-03-22 2012-09-27 富士通株式会社 演算処理装置、情報処理装置及び演算処理装置の制御方法
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 Nippon Electric Co 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

Also Published As

Publication number Publication date
JPH06187150A (ja) 1994-07-08
US5423048A (en) 1995-06-06

Similar Documents

Publication Publication Date Title
JP2906315B2 (ja) キャッシュメモリ中でインストラクションを保管する方法及び回路
US6128703A (en) Method and apparatus for memory prefetch operation of volatile non-coherent data
US7493452B2 (en) Method to efficiently prefetch and batch compiler-assisted software cache accesses
JP3587591B2 (ja) キャッシュ・ミスを制御する方法およびその計算機システム
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
US9311246B2 (en) Cache memory system
EP0097790B1 (en) Apparatus for controlling storage access in a multilevel storage system
US5958040A (en) Adaptive stream buffers
US5603004A (en) Method for decreasing time penalty resulting from a cache miss in a multi-level cache system
JP4028875B2 (ja) メモリを管理するためのシステムおよび方法
JP3016575B2 (ja) 複数キャッシュ・メモリ・アクセス方法
US5809566A (en) Automatic cache prefetch timing with dynamic trigger migration
JP3640355B2 (ja) キャッシュ制御の命令プリフェッチ方法及びシステム
US8499123B1 (en) Multi-stage pipeline for cache access
JPH10232827A (ja) 先取りキャッシュ書戻しの方法と装置
JP2744882B2 (ja) キューにより命令の実行を制御する装置及び方法
JPH0364893B2 (ja)
JPH04232549A (ja) キャッシュメモリシステム
US20100217937A1 (en) Data processing apparatus and method
US6668307B1 (en) System and method for a software controlled cache
US20030074530A1 (en) Load/store unit with fast memory data access mechanism
US5926841A (en) Segment descriptor cache for a processor
EP0741356A1 (en) Cache architecture and method of operation

Legal Events

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