JPH04233632A - デイジタルデータプロセツサ作動方法及び分岐履歴テーブル - Google Patents

デイジタルデータプロセツサ作動方法及び分岐履歴テーブル

Info

Publication number
JPH04233632A
JPH04233632A JP3183557A JP18355791A JPH04233632A JP H04233632 A JPH04233632 A JP H04233632A JP 3183557 A JP3183557 A JP 3183557A JP 18355791 A JP18355791 A JP 18355791A JP H04233632 A JPH04233632 A JP H04233632A
Authority
JP
Japan
Prior art keywords
instruction
address
branch
entry
branch instruction
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
JP3183557A
Other languages
English (en)
Other versions
JP2500958B2 (ja
Inventor
Philip G Emma
フイリツプ・ジヨージ・エマ
Joshua W Knight
ジヨシユア・ウイルソン・ナイト
James H Pomerene
ジエームス・ハーバート・ポマーン
Rudolph N Rechtschaffen
ルドルフ・ナザン・リチシヤフン
Frank J Sparacio
フランク・ジヨン・スパラシオ
Charles F Webb
チヤールス・フランクリン・ウエブ
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH04233632A publication Critical patent/JPH04233632A/ja
Application granted granted Critical
Publication of JP2500958B2 publication Critical patent/JP2500958B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

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)
  • Executing Machine-Instructions (AREA)

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ処理システムに関
し、特にサブルーチンのリターンを実現する条件レジス
タ分岐(BCR)形式の命令の目標アドレスを予測する
ための方法に関する。
【0002】
【従来の技術】デイジタルデータプロセツサにおける命
令の流れは一般にメモリ内の連続的記憶位置から命令を
取り出してデコードすることを要求する。分岐命令はこ
の流れを中断させる命令であり、例えば採用された分岐
命令は連続的な順番に従つてデコードすることを中断さ
せてメモリの新しい記憶位置において再出発させる。メ
モリのこの新しい記憶位置は分岐の目標アドレスと呼ば
れる。逐次的命令の流れにおけるこの種の割込みは逐次
制御の性能について効率をかなり低下させる。
【0003】分岐命令の形式の1つは無条件分岐として
知られており、分岐命令(BR)から目標命令(TAR
G)に無条件に制御を移す。すなわち分岐命令がデコー
ドされたとき制御が目標命令TARGに移動する。性能
について一層の低下を生ずる分岐命令は条件付き分岐(
BC)として知られている。この命令は前の命令の結果
によつて決定される所定の条件が揃つた場合にだけ制御
を目標命令TARGに移すべきことを指定する。
【0004】命令デコード時に条件付き分岐命令を採用
しないことが決定されれば、当該条件付き分岐命令の実
行に伴う不利益は存在しない。すなわち分岐命令デコー
ドのすぐ後に続く次の順序の命令がデコードされる。分
岐命令の採用が決定されると、目標アドレスを生成して
当該目標命令を取り出さなければならないので、分岐に
伴つて複数サイクルに亘る不利益が生ずることになる。
【0005】当該分野において、いくつかの条件付き分
岐予測機構が知られている。命令デコード時に条件付き
分岐の結果を予測しようと試行する機構はデコード時予
測機構として知られている。米国特許第4,477,8
72号及び米国特許第4,430,706号に「デコー
ド履歴テーブル」(DHT)と呼ばれる特定の形式をも
つデコード時予測機構が述べられている。
【0006】このデコード履歴テーブルDHTはエント
リのテーブルであり、分岐命令のアドレスを定義するビ
ツトへのハツシユ又は打切り変形のような変形に基づい
てエントリがアクセスされる。エントリはそれ自身1ビ
ツトで構成され、対応する分岐命令が最後に採用されて
実行された場合には当該ビツトがセツトされ、そうでな
い場合にはセツトされない。特定の分岐に対してデコー
ド履歴テーブルDHTエントリがセツトされていれば目
標アドレスが生成され、この目標命令が取出されてデコ
ードされる。デコード履歴テーブルDHTエントリがセ
ツトされていなければ、分岐命令のデコードに続くサイ
クルにおいて、次の順序の命令がデコードされる。
【0007】先取り時予測機構として知られている他の
形式の機構として、採用された分岐に関する予想をして
、分岐命令がデコードされる時点に先立つて目標命令を
取り出すようになされている。この先取り時予測機構は
命令先取り機関に組み込まれ、予測採用された先取り分
岐のすぐ後に続く分岐目標パスを流れ下るように命令先
取り先を方向変更させる。そうすることによつて、この
先取り時機構は、分岐命令のデコード時に命令バツフア
が既に分岐目標命令を格納していることを保証し、これ
により分岐命令のデコードの直後に分岐目標命令がデコ
ードされるようにする。その結果、先取り時機構の予測
が正しいときには分岐命令に関連する時間損失をなくす
ことができる。
【0008】米国特許第3,559,183号に述べら
れている先取り時予測機構は一般に分岐履歴テーブル(
BHT)の変形である。分岐履歴テーブルBHTはデコ
ード履歴テーブルDHTの時間を先取りするようにした
点を除いて類似している。すなわち分岐履歴テーブルB
HTは先取りされている命令ブロツクのアドレスを定義
するビツトに対するハツシユ又は打切りなどの変形に基
づいてアクセスされるエントリのテーブルである。分岐
履歴テーブルBHTは先取り時に「盲目的に」動作する
ので、そのエントリそれ自身はデコード履歴テーブルD
HTエントリよりも複雑である。すなわち分岐履歴テー
ブルBHTは命令ブロツクの内容検査の利益を受けるこ
となしに命令ブロツクを取り出す。従つて分岐履歴テー
ブルBHTエントリは命令ブロツクのうち到達した採用
分岐に基づいて、対応する命令ブロツクが採用された分
岐を格納していることを識別できなければならない。 その上特定の分岐命令は現在の命令取出しとは関連がな
く、現在の命令取出しがブロツクのどこに入つたかに依
存するのであるから、採用された分岐命令がブロツクの
どこにあるかを識別できなければならない。最後にその
特定の分岐が現在の先取り機能に関連があれば直ちに目
標パスの下方に先取り方向を変更させ得るようにエント
リが分岐目標アドレスを指定する必要がある。
【0009】プロセツサは採用すべきであることが判つ
ている分岐命令が到達すると、当該分岐のアドレスに基
づいて分岐履歴テーブルBHTエントリを生成する。こ
のエントリ自身が分岐目標アドレスを収納している。分
岐を含んでいる命令群の特定の部分が重ねて到達すると
、分岐命令が先取りされる時に分岐履歴テーブルBHT
エントリが先取り方向に変更を生じさせる。分岐履歴テ
ーブルBHTは先取り方向を変更させるとき、「採用さ
れた分岐と当該分岐の目標アドレスとがそこに存在する
と「信ずる」アドレス」のような情報を待ち行列に入れ
る。分岐履歴テーブルBHTが正確に分岐を予想した場
合には分岐したことによる不利益はなくなる。
【0010】サブルーチンへの制御移転を生ずるプログ
ラム内の分岐命令はサブルーチン呼出し命令と呼ばれる
。呼び出している手続きに制御をリターンするサブルー
チンにある分岐命令はサブルーチンリターン命令と呼ば
れる。サブルーチンは別のサブルーチンを呼び出しても
良く、このサブルーチンは入れ子形サブルーチン呼出し
として知られている。いくつかの命令セツトアーキテク
チヤにおいてはサブルーチン呼出し及びリターン命令は
明示的である。すなわちサブルーチン呼出しは全て呼出
し命令CALLによつて実行され、サブルーチンリター
ンは全てリターン命令RETURNによつて実行される
【0011】
【発明が解決しようとする課題】呼出し命令CALL及
びリターン命令RETURNが明示的命令であれば、サ
ブルーチンのリターンはスタツクによつて容易に処理し
得る。米国特許第4,586,127号及び米国特許第
4,348,721号においては、サブルーチンリター
ン処理にスタツクを用いている。これらの従来技術が教
示する一般的技術は、「各呼出し命令ごとにリターンア
ドレスをスタツクにプツシユし、各リターン命令ごとに
スタツクをポツプさせてその内容をリターンアドレスと
して使用する」というものである。しかしながらそこに
は分岐予測が含まれていない。実際には、呼出し命令C
ALL及びリターン命令RETURNが明示的である多
くのプロセツサアーキテクチヤにおいては命令はスタツ
クを介して動作するように定義される。
【0012】その他の命令セツトアーキテクチヤにおい
ては、サブルーチン呼出し命令及びリターン命令が明示
的ではなく、一般的分岐命令によつて実行される。この
場合にはどの分岐命令を呼び出すかの決定及びどれをリ
ターンするかの決定に重大な困難がある。以下に示す論
文はどの分岐命令が呼び出されかつリターンされるかを
分岐命令に関する命令の形式に基づいて推論する方法を
提案している。
【0013】ジエイ・ロスク(J・Losq)は、19
81年12月発行の「IBM技術開示報告第24巻7a
号」の「サブルーチンリターンアドレススタツク(Su
broutine  Return  Address
  Stack)」と題する論文において、「分岐履歴
テーブル」と共同で動作する単一スタツクを教示してい
る。全ての潜在的呼出しリターン命令のリターンスポツ
トがスタツクにプツシユされ、当該スタツクはあらゆる
潜在的リターン命令についてポツプする。ロスクは潜在
的呼出し命令が全てサブルーチン呼出しということはな
く、また潜在的リターン命令が全てサブルーチンリター
ンであつて無関係な情報がスタツクにプツシユされる結
果になるものではないことを認識していると記述してい
る。
【0014】ピー・ジー・エマ(P.G.Emma)ほ
かは、1986年3月発行の「IBM技術開示報告第2
8巻10号」の「高精度サブルーチンスタツク予測機構
(Highly  Accurate  Subrou
tine  StackPrediction  Me
chanism)」と題する論文において、長めの予測
逡巡期間を置くことによつて予測精度を向上できること
について述べている。これはロードマルチプル命令LM
及びストアマルチプル命令SMの介入に基づく予測を禁
止し、かつロードプログラムステータスワード命令LP
SWの場合にはスタツクを消去することによつて達成さ
れる。
【0015】上述の2つの論文におけるスタツクはあら
ゆる潜在的呼出し命令のために保持され、限定的状況下
において可能性のあるリターン命令を予測するために使
用される。
【0016】またシー・エフ・ウエツブ(C.F.We
bb)も1988年4月発行の「IBM技術開示報告第
30巻11号」の「サブルーチン呼出し/リターンスタ
ツク(Sub−routine  Call/Retu
rn  Stack)」と題する論文において、「分岐
履歴テーブル」と協同して動作するスタツクの使用を述
べている。
【0017】本発明の目的は、外部スタツクを必要とし
ない分岐履歴テーブルでありかつその分岐履歴テーブル
によつて直接的に連係情報を管理するようにした分岐履
歴テーブルを提供することである。
【0018】
【課題を解決するための手段】分岐命令の結果を予測す
る装置及び方法によつて、前述の問題点及びその他の問
題点が解決され、本発明の目的が達成される。ここに提
示する実施例において、前に実行された分岐命令を記述
するサブルーチンリターンポイントを含むエントリ用の
記憶装置を有する履歴に基礎を置く予測機構を含む装置
を開示する。この装置はさらに、サブルーチン呼出しを
実行する分岐命令とサブルーチンリターンを実行する分
岐命令とを識別する機構を含んでいる。この装置はさら
に、履歴に基づくサブルーチンリターンポイントを将来
のサブルーチンリターンポイントに置き換えるべく識別
機構の動作に応答する機構を含んでおり、将来のサブル
ーチンリターンポイントは現在のサブルーチン呼出しポ
イントに基づいて決定される。スタツクを必要とせず、
分岐履歴テーブルによつて直接的に連係情報を管理する
ようにした本発明の実施例について述べる。
【0019】
【作用】従来技術よりも一層優れた信頼性を有する上に
、分岐履歴テーブルBHTをもつことによりそれ以上の
ハードウエア構成の追加を必要としないサブルーチンリ
ターン予測方法及び装置が本発明の実施例により提供さ
れる。本発明は、非明示的なサブルーチン呼出し命令と
リターン命令BALR(Branch and Lin
k Register)及びBCR(Branch o
n Condition to Register)に
よつて動作する。本発明の技術は、対応するサブルーチ
ンのエントリポイントにおいてリターンBCRを明確に
識別し、これにより呼出し分岐及びリターン分岐の識別
に関連する混乱を除去し、かくして一層高度な信頼性を
獲得する。
【0020】この技術は、スタツクやその他のロジツク
の必要性をなくし、分岐履歴テーブルBHT内のエント
リにそれぞれ1ビツトの長さにし得る2つのタグフイー
ルドを付加するだけで済む。これらのタグフイールドは
以下の通りである。 (1)CALLフイールド……BAL又はBALRに対
応する現在の分岐エントリを指示するためのフイールド
(2)PSEUDOフイールド……当該エントリが、分
岐に対応するものではなく「擬似エントリ」であること
を指示するためのフイールド BAL又はBALRに対応するエントリの場合にのみ、
エントリセツトのためのCALLビツトが分岐履歴テー
ブルBHTに生成される。好結果の分岐命令の目標アド
レスは分岐履歴テーブルBHTを探索するために使用さ
れ、目標4ワードがCALLビツトセツトを有する目標
ハーフワードに先立つてエントリを格納するとき、当該
分岐はサブルーチンリターンであると判定する。この場
合、CALLビツトセツトを伴うエントリは対応するサ
ブルーチン呼出しであると判定でき、またサブルーチン
へのエントリポイントはこの分岐履歴テーブルBHTエ
ントリと共に格納される目標アドレスによつて与えられ
る。擬似エントリは分岐履歴テーブルBHTのサブルー
チンのエントリポイントに対応する記憶位置に挿入され
、PSEUDOフイールドビツトセツトをもつているこ
とにより又は表明されることにより、擬似エントリとし
て識別される。擬似エントリは目標アドレスフイールド
の代わりにリターン分岐命令のアドレスを格納する。 この擬似エントリは連係情報を表し、サブルーチンエン
トリ及び対応するサブルーチンリターン間に連係を作る
ように機能する。
【0021】採用されたBAL又はBALRに対する目
標アドレスに応じてなされる分岐履歴テーブルBHT探
索がPSEUDOエントリであるとき、分岐履歴テーブ
ルBHTの更新が実行される。この更新は擬似エントリ
の目標アドレスフイールドにおいて指定されているエン
トリに対してなされる目標アドレスの変更を有する型式
のものである。エントリ内に置かれている目標アドレス
はBAL又はBALRに対する次順のアドレスである。
【0022】
【実施例】以下図面について、本発明の一実施例を詳述
する。
【0023】図1はサブルーチン呼出し命令及びリター
ン命令の処理動作を示す。サブルーチンXは、特定の記
憶位置Cに置かれており、記憶位置A及びBに記憶され
ている命令によつて異なる時点において呼び出される。 記憶位置Dにあるサブルーチンリターン命令は、理想的
には、サブルーチンXが記憶位置Aの命令によつて呼び
出されたとき記憶位置Aに続く記憶位置の命令にリター
ンすべきであり、またサブルーチンXが記憶位置Bの命
令によつて呼び出されたときには記憶位置Bに続く記憶
位置の命令にリターンすべきである。しかしながら履歴
に基礎を置く分岐履歴テーブルのような予測装置におい
ては、記憶位置Dにおけるリターン分岐は正しく予測さ
れるが、記憶位置Aの命令が最後にサブルーチンXを呼
び出していた場合には、制御はサブルーチンXが記憶位
置Bの命令によつて呼び出されたとき、正しくない記憶
位置Aの命令にリターンされることになる。
【0024】一例として、「IBM370」及びそのコ
ンパチブルアーキテクチヤにおいては、サブルーチン呼
出しを実行するために使用される命令は、分岐及び結合
命令「BAL(Branch and Link)」又
は分岐及び結合レジスタ命令「BALR(Branch
 and Link Register) 」の変形で
ある。サブルーチンのリターンを実行するために用いら
れる命令は、レジスタ条件に基づく分岐命令「BCR(
Branch on Condition to Re
gister)」の変形である。
【0025】ここで注意すべきことは、与えられたコン
ピユータ命令群において、分岐及び結合レジスタ命令B
ALRの全てがサブルーチン呼出しというわけではなく
、またレジスタ条件分岐命令BCRの全てがサブルーチ
ンリターンというわけでもないことである。さらに注意
すべきことは本発明の教示はこれらの特定の命令型式に
限定されるものと解釈されるべきではなく、また特定型
式のコンピユータアーキテクチヤ又は特定のアーキテク
チヤとコンパチブルなアーキテクチヤにおいてのみ実行
されるものと限定的に解釈されるべきでもないことであ
る。
【0026】分岐及び結合レジスタ命令BALRは、「
BALR  R1、R2」の形式を有する2バイトの命
令で構成されている。この命令はアドレスAにあるとき
、実行の際に位置A+2にバイト命令R1をプログラム
ステータス語PSWからの他の情報と共にロードさせる
。記述子R2がゼロでなければ、記述子R2に収納され
ているアドレスへの分岐が生ずる。図1の実施例の場合
記述子R2はアドレスCを収納している。分岐及び結合
レジスタ命令BALRが実行されるとき、バイト命令R
1にはリターンポイントアドレスA+2がロードされる
【0027】レジスタ条件分岐命令BCRも2バイトの
命令で構成され、「BCR  M1、R2」の形式を有
する。レジスタ条件分岐命令BCRは、マスクフイール
ドM1を用いてレジスタ条件分岐命令BCRが発生して
いるか否かを判断させる。肯定結果が得られると、制御
は記述子R2に収納されているアドレスの記憶位置に移
される。例えば図1の実施例の場合、上記レジスタ条件
分岐命令BCRは記憶位置Dにおけるリターン分岐であ
り、記述子R2はアドレスA+2又はB+2を収納して
いる。
【0028】図2は、2系列のスタツクと共に動作する
分岐履歴テーブルBHTをブロツク図として示す。デー
タ処理システム10はプロセツサ12を含み、プロセツ
サ12は分岐を実行したときパス16を介して分岐情報
を分岐履歴テーブルBHT(Branch Histo
ry Table)14に格納する。分岐履歴テーブル
BHT14は履歴情報を使用して将来の分岐を予測し、
パス18を介してこれらの予測情報をプロセツサ12に
提供する。プロセツサ12は予測誤りを見出すとパス1
6を介して分岐履歴テーブルBHT14を更新する。分
岐履歴テーブルBHT14のエントリ14aは第1に捕
捉された分岐アドレス(BA)と、第2に分岐先の目標
アドレス(TA)とを少くとも収納する。
【0029】データ処理システム10はさらに、第1ス
タツク(S1)20と、第2スタツク(S2)22と、
複数のデータパス24、26、28、30、32、34
、36と、分岐履歴テーブルBHT14のエントリ14
a内の付加的記憶ビツト(SR)とを含む。この分岐履
歴テーブルBHT14のエントリ14a内の付加的記憶
ビツト(SR)は対応するエントリがサブルーチンのリ
ターンであることを示す。サブルーチンリターンビツト
SRがセツトされているときこれはエントリ14aの目
標アドレス(TA)についてのフイールドの内容が、以
下に述べるように解釈されるべきであるということを示
す。
【0030】第1スタツク(S1)20及び第2スタツ
ク(S2)22についての以下の説明においては、図1
の実施例を使用する。アドレスAにおいて分岐及び結合
レジスタ命令BALRが実行されるとき、アドレスA及
びCがパス16を介して分岐履歴テーブルBHT14に
送られることによりBA=A、TA=Cを有するエント
リを生成する。分岐及び結合レジスタ命令BALRの目
標アドレス、すなわちサブルーチンのエントリポイント
Cが第1スタツク(S1)20にパス24を介して送り
出されると共に、リターンポイントA+2が第2スタツ
ク(S2)22にパス30を介して送り出される。
【0031】レジスタ条件分岐命令BCRがアドレスD
において目標アドレスA+2と共に実行されると、アド
レスD及びA+2がパス16を介して分岐履歴テーブル
BHT14に送られることにより、BA=D、TA=A
+2でなる見掛上のエントリが生成される。このデータ
転送の際に、アドレスA+2がパス30を通つて第2ス
タツク(S2)22に送られることにより第2スタツク
(S2)22がアドレスA+2についてのエントリをも
つているか否かを判断させる。この実施例の場合、第2
スタツク(S2)22はそのようなエントリをもつてい
る。対応するエントリは第1スタツク(S1)20(こ
の例では値C)であり、パス34を介して見出され、パ
ス26を通つて送られてパス16上のTAフイールドに
置き換えられる。分岐履歴テーブルBHT14に格納さ
れたエントリはこうしてBA=D及びTA=Cを有する
。これは「ノーマル」エントリではなく、このことを示
すために、対応するエントリ14aとしてSRビツトが
用いられる。
【0032】アドレスBの分岐及び結合レジスタ命令B
ALRが実行されるとき、アドレスB及びアドレスCは
、パス16を通つて分岐履歴テーブルBHT14に送ら
れ、これによりBA=B及びTA=Cをもつエントリ1
4aを生成する。また分岐及び結合レジスタ命令BAL
Rの目標アドレスすなわちサブルーチンに対するエント
リポイントCは、パス24上を第1スタツク(S1)2
0に押し出され、リターンポイントB+2はパス30上
を第2スタツク(S2)22に押し出される。
【0033】その後の命令取出し過程の間に、分岐履歴
テーブルBHT14はアドレスDについてのエントリ、
すなわち続いて発生して来るレジスタ条件分岐命令BC
Rを検出したとき、当該エントリをSRビツトによつて
表明する。上述のようにBA=D及びTA=Cになつて
いるエントリに対応する予測がパス18に転送される。 SRビツトが表明されているので、エントリのTAフイ
ールドもパス28を介して第1スタツク(S1)20に
送られて第1スタツク(S1)20がアドレスCのエン
トリをもつているか否かを確認する。この場合、第1ス
タツク(S1)20はそのようなエントリをもつている
ので、第2スタツク(S2)22の対応するエントリ(
この場合対応するエントリはB+2である)がパス36
を介して識別されると共に、パス32に送出されること
によりパス18を介してTAフイールドに置き換えられ
る。
【0034】このようにしてパス18からプロセツサ1
2に受け取られた予測はBA=D及びTA=B+2をも
つ。すなわち、プロセツサ12が受け取つた予測は、目
標アドレスがB+2のアドレスDに分岐があるというこ
とである。その結果、図2の2系列スタツク装置は、履
歴目標アドレスA+2の代わりに、正しい目標アドレス
B+2を提供する。
【0035】次に、スタツクを使用しない本発明の実施
例について説明する。説明が必要なものは、以下に図3
について述べるように、分岐履歴テーブルBHT14を
変更すること以外には図2のプロセツサ12、分岐履歴
テーブルBHT14、並びにデータパス16及び18の
みである。
【0036】前述したように、命令取出し機構が命令「
ブロツク」を取り出す。そのように、命令取出し機構は
「命令」の概念をもつておらず、むしろ命令取出し機構
はキヤツシユから命令バツフアに連続的なバイトブロツ
クを転送させる自律的なデバイスである。従つて分岐履
歴テーブルBHTのような先取り時間予測機構は命令の
ブロツクにおいて処理動作をし、かつ各命令アドレスで
は処理動作をしない。命令ブロツクは1つ以上の分岐を
含むことがあるので、先取り時間予測機構はセツト連想
とされ、これにより与えられた命令ブロツクについて複
数の分岐エントリが格納される。
【0037】以下の説明において、キヤツシユから取出
されるブロツクの大きさは4ワード(16バイト)であ
るものと仮定する。例えば、「IBM370」の上向き
互換アーキテクチヤの場合、命令長はハーフワード(2
バイト)の倍数であり、ハーフワードの境界に配設され
ている。図4の例における分岐及び結合レジスタ命令B
ALR(2バイトすなわち1ハーフワードの命令)は、
上述のようにアドレスAにおいて、8つのハーフワード
を含む4ワードの命令40のうち第4ハーフワード42
に入れられている。当該4ワードごとに取り出される場
合、分岐履歴テーブルBHT14は少なくも4ワードを
単位として編成される。すなわちアドレスDにあるレジ
スタ条件分岐命令BCRがアドレスA+2となつたとき
、分岐履歴テーブルBHT14はアドレスA+2を使用
して探索されるが、図示されている4ワード内のすべて
の分岐についてのエントリが使用できる状態になされる
。特にアドレスAにある分岐及び結合レジスタ命令BA
LRについてのエントリがなされる。次に本発明の実施
例の処理動作について詳細に述べる。
【0038】本発明によれば、図3に示すように、分岐
履歴テーブルBHT14の各エントリは少なくも2つの
付加的フイールドを有する。第1の付加的フイールドは
呼出し(CALL)フイールドで、この呼出しフイール
ドはそのエントリが潜在的呼出し分岐(BALR)に対
応していることを表している。呼出し(CALL)フイ
ールドは、分岐及び結合レジスタ命令BALRの変形に
フルワード命令があるので、これを表明するため2ビツ
トを必要とする。この場合2ビツトは命令の長さを示す
ために用いられる。必要な場合は、分岐用のエントリは
分岐命令の最後のハーフワードのアドレスに従つて格納
される。この後者の手法が採用される場合、分岐命令の
実際の長さは重要ではなく、呼出しCALLフイールド
は1ビツトであつても良い。第2のフイールドは1ビツ
トの擬似フイールドPSEUDOであり、この擬似フイ
ールドPSEUDOは対応するエントリが分岐に該当し
ないことを示すために設けられている。分岐履歴テーブ
ルBHTエントリの擬似フイールドPSEUDOのロー
ル処理については後述する。
【0039】分岐予測は次のようにしてなされる。アド
レスAにある分岐及び結合レジスタ命令BALRが実行
されると(図1)、BA=Aと、TA=Cと、当該エン
トリが分岐及び結合レジスタ命令BALRに対応するこ
とを表わす表明状態になつているCALLフイールドと
を有する分岐履歴テーブルBHTエントリを生成させる
。この分岐及び結合レジスタ命令BALRはサブルーチ
ン呼出しであつても良く、命令実行中のこの点において
分岐及び結合レジスタ命令BALRがサブルーチン呼出
しであることが未知か否かに拘らない。
【0040】アドレスDにあるレジスタ条件分岐命令B
CR命令が実行されると、BA=Dと、TA=A+2と
を有するエントリを分岐履歴テーブルBHT14に生成
させる。レジスタ条件分岐命令BCR命令を実行するこ
とによつて記憶位置A+2に命令取出しの転送を生じさ
せる場合は、分岐履歴テーブルBHTのアドレスA+2
が探索され、アドレスAにある分岐及び結合レジスタ命
令BALRの実行に応答して上述のように生成されたエ
ントリがアドレスAを指称する。このエントリはCAL
L表明を有している。分岐及び結合レジスタ命令BAL
Rが潜在的呼出し命令である場合にはレジスタ条件分岐
命令BCRが潜在的リターン命令であり、またレジスタ
条件分岐命令BCRが分岐及び結合レジスタ命令BAL
Rのすぐ後に続く命令に分岐するためにレジスタ条件分
岐命令BCRがサブルーチンリターンとして明示的に識
別され、分岐及び結合レジスタ命令BALRがサブルー
チン呼出しとして明示的に識別される。
【0041】レジスタ条件分岐命令BCRがサブルーチ
ンリターンとして認識されると、これがPSEUDOエ
ントリも生成させる。認識の際に、次のような情報を使
用することができる。すなわち、Dはリターンするレジ
スタ条件分岐命令BCRのアドレスであり、Cは記憶位
置Aにある分岐及び結合レジスタ命令BALRに対応す
るエントリのTAフイールドによつて得られるサブルー
チンへのエントリポイントのアドレスである。
【0042】アドレスCに対するPSEUDOエントリ
が生成されると、これがサブルーチン内へ入つたとき直
ちに認識される。PSEUDOエントリは記憶位置Dを
指し示すようにセツトされる。記憶位置Dはサブルーチ
ンからリターンするレジスタ条件分岐命令BCRのアド
レスである。かくして、分岐履歴テーブルBHT14内
に格納されたPSEUDOエントリはBA=Cと、TA
=Dと、PSEUDOビツトとを有し当該PSEUDO
ビツトはエントリが記憶位置Cにある分岐を表わしてお
らず、分岐が記憶位置Dに移つたことを表明している。
【0043】結局、記憶位置Bにある分岐及び結合レジ
スタ命令BALRが記憶位置Cに移つたとき、分岐履歴
テーブルBHT14が探索され、その結果記憶位置Dを
指称するPSEUDOエントリが見出される。PSEU
DOエントリが見出された場合は、以下の情報を使用す
ることができる。すなわちDはレジスタ条件分岐命令B
CRをリターンさせる記憶位置であり、B+2は命令先
取りユニツトのアドレス自動インクリメント部から得る
ことができるリターンポイントである。ここでB+2は
分岐履歴テーブルBHTの探索をトリガした分岐及び結
合レジスタ命令BALRの次に続く命令のアドレスであ
る。
【0044】この情報は分岐履歴テーブルBHTを更新
するために使用される。特に記憶位置Dに対するエント
リが見出されると、TAフイールドの内容はアドレスB
+2に置き換えられる。すなわち採用された分岐及び結
合命令BAL又は分岐及び結合レジスタ命令BALRに
対する目標アドレスに応じてなされた分岐履歴テーブル
BHT14への探索結果がPSEUDOエントリを示し
ていれば、分岐履歴テーブルBHT14の更新が実行さ
れる。この更新はPSEUDOエントリのTAフイール
ドの中に記入されているエントリの目標アドレスを変更
する。エントリに置かれた目標アドレスは分岐及び結合
命令BAL又は分岐及び結合レジスタ命令BALRの次
の順序のアドレスである。
【0045】もつと後の命令取出し過程において、分岐
履歴テーブルBHT14はアドレスDに対するエントリ
すなわちやがて起こるレジスタ条件分岐命令BCRを提
供する。このエントリはB+2にセツトされたTAフイ
ールドを有する。すなわちリターンは正しい目標アドレ
スに向けてなされ、履歴目標アドレスに向けてはなされ
ない。
【0046】本発明の動作に関する理解を一段と深める
ように、次に図5について分岐履歴テーブルBHTをも
たないプロセツサ命令パイプラインの実施例を例示する
と共に、図6について分岐履歴テーブルBHT90をも
つプロセツサ命令パイプラインの実施例を例示する。
【0047】先ず、図5について分岐履歴テーブルBH
Tをもたない実施例の概略的な動作を述べる。このパイ
プラインは命令デコーダ52と、アドレス生成ユニツト
54と、キヤツシユ56と、実行ユニツト58とを有す
る。処理されるべき命令は命令レジスタ60に保持され
ており、命令はデコーダ52によつてデコードされる。 デコーダ52はレジスタ60に保持されている命令の形
式を確認し、当該命令の処理を開始するに必要な汎用レ
ジスタ(図示せず)の内容を読み出す。命令がメモリの
動作を要求しているとき、前述の汎用レジスタの内容が
パス62を介してアドレス生成ユニツト54に送られ、
アドレス生成ユニツト54において組み合わされてメモ
リアドレスを形成する。次にこのアドレスはパス64を
介してキヤツシユ56に送られる。
【0048】メモリ動作がオペランド取出しであれば、
適切なオペランドがパス66を介して実行ユニツト58
に送られる。また命令が分岐命令であれば、当該メモリ
動作は命令取出しである。このとき、4ワードの目標命
令が取り出されて、パス70を介して命令バツフア68
に送られる。分岐命令が採用されるべきものであると判
定されると、シフト/選択ハードウエア72が命令4ワ
ードの命令によつて動作して目標命令を抽出してパス7
4を介して命令レジスタ60に送る。このとき命令デコ
ード処理が開始されて分岐目標の処理に入る。本発明の
内容と直接的関係がないので、ここではキヤツシユミス
の影響及びメモリ格納動作については述べない。
【0049】命令及びこれに関連するオペランドが実行
ユニツト58に到着した後、当該命令が実行される。命
令の実行中に例外が生じなければ、動作終了ENDOP
信号58aが生成され、当該命令は完了したものとされ
る。当該命令によつて実行動作をしたメモリ領域は動作
終了ENDOP信号により解放され、当該命令が分岐で
あつたとき、実行ユニツト58が分岐の採用を確認した
ことを条件として分岐目標パスへの転送が認可される。
【0050】この命令パイプラインは上述した要素及び
パスだけを有する。このパイプラインの要素は互いにロ
ツクされながらステツプ処理動作をする。命令の先取り
及び処理動作は以下に述べるように残りのブロツクにお
いて実行される。命令の先取りはパイプラインに対して
自律的に動作するので、命令の先取りは正式には命令パ
イプラインの一部であるとは考えられていない。すなわ
ち命令の先取りは命令バツフア68を一杯に保つために
命令デコーダ52の先を走る自由走行機関として動作す
る。
【0051】繰り返すが、命令はハーフワードの境界上
に並んでおり、2バイト又は4バイト又は6バイトの長
さを有し、当該命令自体がキヤツシユから取り出される
ことはない。命令を収納している4ワードの情報は4ワ
ード境界に基づいて取り出されて命令バツフア68にロ
ードされる。命令バツフア68は単なる4ワード用バツ
フアであり、命令はこの命令バツフア68にあるときは
「独自性」をもたない。次の命令の最初のハーフワード
位置を現在の命令長から決定するのはデコーダ52であ
り、デコーダ52はさらにシフト/選択ロジツク72に
処理実行用の次の命令を適切に選択させかつ配列させる
【0052】採用される分岐命令が存在しない場合には
、命令先取りアドレスレジスタ(IPFAR)76によ
つて命令先取りが開始される。命令先取りアドレスレジ
スタIPFAR76はキヤツシユ56から先取りされて
命令バツフア68にロードされるべき次の4ワードの4
ワードアドレスを格納する。この先取りはパス70及び
78を介して行われる。インクリメンタ80は次に続く
4ワードアドレスを得るために、命令先取りアドレスレ
ジスタIPFAR76の4ワードアドレスに4ワードオ
フセツトを加算する。採用される分岐がなければ、次に
続くこの4ワードアドレスはセレクタ82を通つてパス
84を介して、命令先取りアドレスレジスタIPFAR
76の現在の4ワードアドレスと置き換えられる。
【0053】採用される分岐が実行ユニツト58に到達
した場合、標準的な目標取出しがパス64、70、74
を通つてすでに進行していても、当該自律的な命令先取
り過程の方向を変更する必要がある。分岐エラー処理ユ
ニツト86はパス88を通り、セレクタ82を抜け、パ
ス84を下つて命令先取りアドレスレジスタIPFAR
76に対してこの方向の変更を指令する。次に図6につ
いて分岐履歴テーブルBHT90を有する場合の本発明
による命令先取り処理の動作について説明する。上述し
たように、先取りされるのは4ワードの命令であるから
、分岐履歴テーブルBHT90は、1命令(ハーフワー
ド)単位ではなく4ワードを単位として編成されるエン
トリのテーブル、すなわち先取りされる4ワード命令の
テーブルで構成される。
【0054】キヤツシユ56から命令4ワードを先取り
するために命令先取りアドレスレジスタIPFAR76
の4ワードアドレスが使用されるとき、そのアドレスは
分岐履歴テーブルBHT90を探索するためにも使用さ
れ、これと同時にインクリメンタ80によつて当該アド
レスに増分がインクリメントされる。分岐履歴テーブル
BHT90は先取りされた4ワードにある採用された分
岐命令に対応するエントリを探し出すように試行する。 そのようなエントリが見出されかつ当該エントリの1つ
に対応する分岐命令がその後にデコーダ52に到達した
ことが確認されると、「分岐履歴テーブルBHTヒツト
」と呼ばれるこの事象がこの先取りを転送するために使
用され、分岐履歴テーブルBHTの出力92はセレクタ
82を介して命令先取りアドレスレジスタIPFAR7
6に送られる。このときの分岐履歴テーブルBHT90
の出力92は当該エントリに対応する分岐命令の目標ア
ドレスになる。
【0055】分岐履歴テーブルBHTの分岐アドレス(
BA)フイールドは概念的には全体として一体のもので
あるが、実際に具体化する際には、3つの部分に分割さ
れる。低位の3ビツトは4ワードの命令ハーフワードオ
フセツトを指定する。分岐履歴テーブルBHT90は4
ワードアドレスにより探索されるので、これらのビツト
はアドレス比較器(図示せず)によつて直接的に使用さ
れることはない。しかしながら、転送を生じさせたもの
がプロセツサである場合(ライン58b、分岐エラー処
理ユニツト86、ライン88、セレクタ82、ライン8
4を通つて命令先取りアドレスレジスタIPFAR76
に至る)、又は分岐履歴テーブルBHT90である場合
(ライン92、セレクタ82、ライン84を通つて命令
先取りアドレスレジスタIPFAR76に至る)、この
転送は分岐目標(ハーフワード)アドレス向けとなる。 従つて目標4ワード内の分岐命令に対応する分岐アドレ
スのハーフワードオフセツト以前にハーフワード分岐目
標アドレスが有るか否かを確認するために、分岐履歴テ
ーブルBHT90エントリにこの低位3ビツトが必要で
ある。もしなければ、目標4ワード内の分岐命令はデコ
ーダ52に到達できず、当該エントリは分岐履歴テーブ
ルBHTヒツトを構成しない。
【0056】代表的実施例の場合、分岐履歴テーブルB
HT90はセツト連想テーブルとして構成され、4ワー
ドアドレスのいずれかの部分(典型的には低位ビツト)
が適切な合同クラスを選択するために使用される。従つ
て4ワードアドレスのこの部分は与えられた合同クラス
に対して暗示的であり、分岐履歴テーブルBHT90の
エントリに格納される必要はない。
【0057】当該4ワードアドレスのうち合同クラス選
択のために使用されない部分は、各エントリのためのア
ドレスタグとして格納される。このように、命令先取り
アドレスレジスタIPFAR76の低位ビツトは分岐履
歴テーブルBHT90内の合同クラスを選択するために
使用され、高位ビツトは当該合同クラス内の全分岐履歴
テーブルBHT90のエントリに対するアドレスタグと
比較される。アドレスタグが命令先取りアドレスレジス
タIPFAR76の高位ビツトと一致している前記合同
クラス内のエントリのみが、命令先取りアドレスレジス
タIPFAR76によつて指定される4ワード内の分岐
に対応する。
【0058】BAフイールドの機能について、分岐履歴
テーブルBHT90はさらに、分岐目標命令の(ハーフ
ワード)アドレスを与えている目標アドレス(TA)フ
イールドを含んでいる。当該エントリが有効であること
を示すため有効ビツトが用いられる。擬似PSEUDO
ビツトフイールドは前述のように動作する。
【0059】分岐履歴テーブルBHT90は分岐が実際
にデコーダ52に到達する前に当該分岐を予測してその
先取りを転送するように動作するものであるから、誤つ
た指示を生ずる可能性が大きくなる。従つてこれらの誤
つた指示を訂正するためより多くの信号パスが必要とな
る。例えば分岐履歴テーブルBHT90は採用された分
岐を指示しており、これにより転送を生じさせているけ
れども分岐履歴テーブルBHT90によつて指示されて
いるアドレスには分岐命令が存在しないことをデコーダ
52が後に発見した場合には、本来のパスを通つて命令
先取りが再開されなければならない。この誤つた指示を
訂正する信号パスはライン94によつて示されている。 また分岐履歴テーブルBHT90によつて指示された目
標アドレスが誤つていることをアドレス生成ユニツト5
4が見出した場合には、正しい目標アドレスに先取りを
転送せねばならない。このパスはライン96によつて指
示される。本発明を使用することにより最少にできるの
は第2のタイプの分岐履歴テーブルBHT90のエラー
である。
【0060】分岐履歴テーブルBHT90に知られてい
ない無条件の分岐はデコーダ52において検出される。 かかる無条件分岐はこれが実行されるに先立つて変形さ
れても良く、また変形されなくても良い。予期せぬ無条
件分岐及び不正確に推測された条件付き分岐のための先
取りはできる限り早い時期に転送される。これはプロセ
ツサに分岐履歴テーブルBHT90が設けられているか
否かに関わつて来る事柄であるから、これらの経路を明
確には示さない。分岐履歴テーブルBHT90がエラー
を生じたことを見出すと、その命令先取りが転送される
ときに分岐履歴テーブルBHT90を更新する。この分
岐履歴テーブルBHTの更新経路を分岐エラー処理ブロ
ツク86から分岐履歴テーブルBHT90に入るライン
によつて図示する。
【0061】以上のように、特定の実施例に基づいて本
発明を説明したが、本発明の精神及び範囲から離れるこ
となく、様式と詳細との双方にわたつて本発明に変更が
加えられても良いものである。
【0062】
【発明の効果】上述のように本発明によれば、前に実行
された分岐命令の履歴に基づいて、メモリ手段の現在の
サブルーチン呼出しポイントから将来のサブルーチンリ
ターンポイントを決定するようにしたことにより、直接
的に連係情報を管理でき、その結果性能を一段と改善し
得るデータ処理システムを実現することができる。
【図面の簡単な説明】
【図1】図1は2つの異なる記憶位置から呼び出される
サブルーチンXの呼出し及びリターンにおける制御の流
れを示す図である。
【図2】図2は2系列のスタツクと共に動作する分岐履
歴テーブルを示す本発明の一実施例を示すブロツク図で
ある。
【図3】図3は本発明の他の実施例を示す分岐履歴テー
ブルである。
【図4】図4は本発明の分岐履歴テーブルの動作を説明
するためにアドレスAに分岐及び結合レジスタ命令BA
LRを含んだ4ワードを示す略線図である。
【図5】図5はプロセツサ命令パイプラインを示すブロ
ツク図である。
【図6】図6は本発明による分岐履歴テーブルを含んだ
プロセツサ命令パイプラインを示すブロツク図である。
【符号の説明】
10……データ処理システム、12……プロセツサ、1
4、19……分岐履歴テーブル(BHT)、14a……
分岐履歴テーブル(BHT)のエントリ、20……第1
スタツク(S1)、22……第2スタツク(S2)、4
0……4ワードデータ、42……第4ハーフワード、5
2……命令デコーダ、54……アドレス生成ユニツト、
56……キヤツシユ、58……実行ユニツト、58a…
…動作終了信号、60……命令レジスタ、68……命令
緩衝域、72……シフト/選択ハードウエア、76……
命令先取りアドレスレジスタ(IPFAR)、80……
インクリメンタ、82……セレクタ、86……分岐エラ
ー処理ユニツト、92……分岐履歴テーブル(BHT)
の出力。

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】分岐命令を含む命令を格納するための記憶
    位置を有するメモリ手段を含むデータ処理システムであ
    つて、上記データ処理システムはさらに上記メモリ手段
    から命令を取り出すために上記メモリ手段に接続されて
    いる処理手段を含んでおり、上記処理手段は実行に先立
    つて命令をデコードするための手段を含んでおり、上記
    デコード手段はサブルーチン呼出し機能を実行する第1
    の形式の分岐命令及びサブルーチンリターン命令を実行
    する第2の形式の分岐命令を含む分岐命令を認識するた
    めの手段を含んでおり、上記データ処理システムはさら
    に分岐命令の将来の成り行きを予測するための手段を含
    んでおり、上記予測手段は、上記デコード手段の動作に
    応答して上記第1の形式の分岐命令を識別しかつ上記第
    2の形式の分岐命令を識別する識別手段と、履歴に基づ
    くサブルーチンリターンアドレスを含み以前に実行され
    た分岐命令をそれぞれ記述するエントリを記憶する手段
    と、サブルーチンを呼び出す分岐命令のアドレスから将
    来のサブルーチンリターンアドレスを決定する手段と、
    上記識別手段の動作に応答して上記エントリ記憶手段の
    履歴に基づくサブルーチンリターンアドレスを上記決定
    された将来のサブルーチンリターンアドレスに置換する
    手段とを具えることを特徴とするデータ処理システム。
  2. 【請求項2】上記記憶手段は、各エントリについて、分
    岐命令を格納するアドレスを識別するデータを記憶する
    第1のフイールドと、分岐命令の目標アドレスを識別す
    るデータを記憶する第2のフイールドと、エントリがサ
    ブルーチン呼出し機能を実行する形式の分岐命令に対応
    していることを表示するデータを記憶する第3のフイー
    ルドと、上記エントリが擬似エントリであること及び上
    記第1のフイールドに記憶されているアドレスが上記第
    2のフイールドに記憶されている目標アドレスを有する
    分岐命令のアドレスではないことを表示するデータを記
    憶する第4のフイールドとを具えることを特徴とする特
    許請求の範囲第1項に記載のデータ処理システム。
  3. 【請求項3】さらに、前の分岐命令によつて既に呼び出
    されたサブルーチンを呼び出す分岐命令をデコードする
    デコード手段の動作に応答して、上記記憶手段を探索し
    、かつ上記第4のフイールドに記憶されているデータを
    有する対応するエントリを識別する手段と、前の分岐命
    令のアドレスのすぐ後に続く次の命令のアドレスの代わ
    りにさらに後の分岐命令のアドレスのすぐ後に続く次の
    命令のアドレスを上記第2のフイールドが記憶するよう
    に、上記識別されたエントリの第2のフイールドを更新
    する手段とを含むことを特徴とする特許請求の範囲第1
    項に記載のデータ処理システム。
  4. 【請求項4】分岐命令を含む命令を格納する記憶位置を
    有するメモリ手段を含むデータ処理システムであつて、
    上記データ処理システムはさらに上記メモリ手段から命
    令を取り出すために上記メモリ手段に接続されている処
    理手段を含んでおり、上記処理手段は分岐命令を含む命
    令をその実行に先立つてサブルーチン呼出し機能を実行
    する第1の形式の分岐命令及びサブルーチンリターン命
    令を実行する第2の形式の分岐命令にデコードする手段
    を含んでおり、上記データ処理システムはさらに分岐命
    令の将来の成り行きを予測するための手段を含んでおり
    、上記予測手段は、上記処理手段に接続され、かつ上記
    処理手段に応答して以前に実行された分岐命令に関する
    データを有するエントリを記憶する記憶手段を有し、上
    記各エントリは、分岐命令に対応するアドレスを識別す
    るためのデータを記憶する第1のフイールドと、分岐命
    令の目標アドレスを識別するためのデータを記憶する第
    2のフイールドと、上記エントリがサブルーチン呼出し
    機能を実行する形式の分岐命令に対応していることを表
    示するためのデータを記憶する第3のフイールドと、上
    記エントリが分岐命令に対応しない擬似エントリである
    ことを表示するためのデータを記憶する第4のフイール
    ドとを含み、上記予測手段はさらに、サブルーチンリタ
    ーン機能を実行する形式の分岐命令をデコードするデコ
    ード手段に応答して対応するサブルーチン呼出し機能に
    対応するエントリを探し出すべく上記記憶手段のエント
    リを探索することによつてサブルーチンを識別すると共
    に、当該エントリの探索に応答して上記記憶手段内に新
    しいエントリを生成する手段を含み、上記新しいエント
    リは上記識別されたサブルーチンのエントリポイントの
    アドレスに対する第1のフイールドセツトと、上記識別
    されたサブルーチンの出口ポイントのアドレスに対する
    第2のフイールドセツトと、上記エントリが上記エント
    リポイントのアドレスから上記出口ポイントのアドレス
    への分岐を表していないことを示す第4のフイールドセ
    ツトとを有することを特徴とするデータ処理システム。
  5. 【請求項5】上記予測手段はさらに、上記識別されたサ
    ブルーチンの呼出しを実行するさらに後の分岐命令のデ
    コードの発生に応答して上記記憶手段を探索しかつ上記
    第4のフイールドセツトを有するエントリを識別する手
    段と、上記第2のフイールドがさらに後の上記分岐命令
    のアドレスのすぐ後に続く次の命令のアドレスを記憶す
    るように上記識別されたエントリの第2のフイールドを
    更新する手段とを含むことを特徴とする特許請求の範囲
    第4項に記載のデータ処理システム。
  6. 【請求項6】さらに、命令先取り手段によつて先取りさ
    れた命令のアドレスをインクリメントする手段を含み、
    上記アドレスインクリメント手段に対してさらに後にそ
    こからの上記分岐命令に続く次の命令のアドレスを読み
    取る更新手段が接続されていることを特徴とする特許請
    求の範囲第5項に記載のデータ処理システム。
  7. 【請求項7】上記命令先取り手段は命令を収納している
    データブロツクを先取りすることを特徴とする特許請求
    の範囲第6項に記載のデータ処理システム。
  8. 【請求項8】上記データのブロツクは4ワードの境界に
    あることを特徴とする特許請求の範囲第7項に記載のデ
    ータ処理システム。
  9. 【請求項9】デイジタルデータ処理装置を動作させるこ
    とによつてサブルーチンリターン分岐のリターンアドレ
    スを正確に予測する方法において、先取りされた命令ブ
    ロツク内の分岐命令のデコード動作に応答してエントリ
    を分岐履歴テーブルに格納し、当該格納された各エント
    リは上記分岐命令のアドレス及び上記分岐命令に対応す
    る目標アドレスを記述するデータを含むようにしたステ
    ツプと、デコードされた分岐命令をサブルーチン呼出し
    を実行する第1の形式の命令であり又はサブルーチンリ
    ターンを実行する第2の形式の命令であると識別するス
    テツプと、サブルーチンを呼び出す分岐命令のアドレス
    に基づいて将来のサブルーチンリターンアドレスを決定
    するステツプと、記憶手段内の履歴に基づくサブルーチ
    ンリターンアドレスを上記決定された将来のサブルーチ
    ンリターンアドレスに置き換えるステツプとを具えるこ
    とを特徴とするデイジタルデータ処理装置を動作させる
    方法。
  10. 【請求項10】上記記憶ステツプは、上記分岐命令が記
    憶されているアドレスを識別するために第1のフイール
    ドにデータを格納するステツプと、上記分岐命令の目標
    アドレスを識別するために第2のフイールドにデータを
    記憶するステツプと、上記デコードされた分岐命令が上
    記第1の形式のものであると識別されたとき、上記エン
    トリはサブルーチン呼出し機能を実行する形式の分岐命
    令に対応しているということを表示するデータを第3の
    フイールドに記憶するステツプとを含むことを特徴とす
    る特許請求の範囲第9項に記載のデイジタルデータ処理
    装置を動作させる方法。
  11. 【請求項11】上記第3のフイールドにデータを記憶す
    る上記ステツプが、デコードされた分岐命令が第2の形
    式の命令であると識別されたとき、上記エントリは、擬
    似エントリであることを表示すると共に、上記第1のフ
    イールドに収納されているアドレスが上記第2のフイー
    ルドに収納されている目標アドレスを有する分岐命令の
    アドレスではないことを表示するために、上記第4のフ
    イールドにデータを記憶するステツプに置き換えられる
    ことを特徴とする特許請求の範囲第10項に記載のデイ
    ジタルデータ処理装置を動作させる方法。
  12. 【請求項12】前の分岐命令によつて既に呼び出された
    サブルーチンを呼び出す上記第1の形式の現在の分岐命
    令の識別に応答して、上記第4のフイールドに収納され
    ているデータを有する対応するエントリを識別するため
    に上記記憶手段を探索するステツプと、前の分岐命令の
    アドレスのすぐ後に続く次の命令のアドレスの代わりに
    、現在の分岐命令のアドレスのすぐ後に続く次の命令の
    アドレスを第2のフイールドが収納することとなるよう
    に、上記識別されたエントリの上記第2のフイールドを
    更新するステツプとを含むことを特徴とする特許請求の
    範囲第11項に記載のデイジタルデータ処理装置を動作
    させる方法。
  13. 【請求項13】システムメモリ手段からの命令を含むデ
    ータブロツクを先取りするために、分岐履歴テーブルを
    含む命令先取り手段を有する形式のデイジタルデータ処
    理装置を動作させる方法であつて、上記命令はサブルー
    チン呼出し機能を実行する第1の形式の分岐命令と、サ
    ブルーチンリターン機能を実行する第2の形式の分岐命
    令とを含み、上記デイジタルデータ処理装置は、命令を
    収納しているデータのブロツクを先取りするステツプと
    、データブロツクが先取りされている間に上記分岐履歴
    テーブルを探索することにより、データブロツク内の分
    岐命令に対応するアドレスを識別する少なくも1つのエ
    ントリを上記分岐履歴テーブルが含んでいるか否かを確
    認するステツプと、データブロツクが上記エントリによ
    つて識別されたアドレス位置に分岐命令を収納している
    と推論するステツプと、データブロツクに収納されてい
    る命令を順次実行することによつて遭遇するであろうと
    最初に推論された分岐命令が、命令の順序に、分岐アド
    レスに対応する分岐履歴テーブルのエントリの分岐目標
    アドレスへの方向変更を生じさせるであろうと予測する
    ステツプと、上記予測に従つて上記システムメモリ手段
    からのその後の命令ブロツクの先取りを方向変更させる
    ステツプと、上記予測が正しくないと判定されたとき、
    上記システムメモリ手段からのその後の命令ブロツクの
    先取りを再び方向変更させて当該方向変更された命令順
    序を反映すべく分岐履歴テーブルを更新するステツプと
    を含むことを特徴とするデイジタルデータ処理装置を動
    作させる方法。
  14. 【請求項14】上記先取りステツプは、次のデータブロ
    ツクを先取りする準備をする際に上記データブロツクに
    対応するアドレスをインクリメントするステツプを含む
    ことを特徴とする特許請求の範囲第13項に記載のデイ
    ジタルデータ処理装置を動作させる方法。
  15. 【請求項15】上記インクリメントするステツプは、4
    ワードの境界に合わせて編成されているデータブロツク
    を先取りするため、アドレスを16づつインクリメント
    することを特徴とする特許請求の範囲第14項に記載の
    デイジタルデータ処理装置を動作させる方法。
JP3183557A 1990-07-27 1991-06-27 デイジタルデ―タプロセツサ作動方法及び分岐履歴テ―ブル Expired - Lifetime JP2500958B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/558,998 US5276882A (en) 1990-07-27 1990-07-27 Subroutine return through branch history table
US07/558998 1990-07-27

Publications (2)

Publication Number Publication Date
JPH04233632A true JPH04233632A (ja) 1992-08-21
JP2500958B2 JP2500958B2 (ja) 1996-05-29

Family

ID=24231868

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3183557A Expired - Lifetime JP2500958B2 (ja) 1990-07-27 1991-06-27 デイジタルデ―タプロセツサ作動方法及び分岐履歴テ―ブル

Country Status (3)

Country Link
US (1) US5276882A (ja)
EP (1) EP0468134A3 (ja)
JP (1) JP2500958B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6530016B1 (en) 1998-12-10 2003-03-04 Fujitsu Limited Predicted return address selection upon matching target in branch history table with entries in return address stack
JP2014036899A (ja) * 2013-11-27 2014-02-27 Daito Giken:Kk 遊技台
JP2014195639A (ja) * 2014-02-17 2014-10-16 株式会社大都技研 遊技台
JP2015128695A (ja) * 2015-04-14 2015-07-16 株式会社大都技研 遊技台
JP2015535634A (ja) * 2012-11-28 2015-12-14 クアルコム,インコーポレイテッド 実行パイプラインバブルを低減するためにサブルーチンリターンのための分岐ターゲット命令キャッシュ(btic)エントリを確立すること、ならびに関連するシステム、方法、およびコンピュータ可読媒体
JP2016147083A (ja) * 2016-03-25 2016-08-18 株式会社大都技研 遊技台

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414822A (en) * 1991-04-05 1995-05-09 Kabushiki Kaisha Toshiba Method and apparatus for branch prediction using branch prediction table with improved branch prediction effectiveness
JP3182438B2 (ja) * 1991-10-28 2001-07-03 株式会社日立製作所 データプロセッサ
US5448707A (en) * 1991-10-29 1995-09-05 Intel Corporation Mechanism to protect data saved on a local register cache during inter-subsystem calls and returns
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5577217A (en) * 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5623614A (en) * 1993-09-17 1997-04-22 Advanced Micro Devices, Inc. Branch prediction cache with multiple entries for returns having multiple callers
JP2801135B2 (ja) * 1993-11-26 1998-09-21 富士通株式会社 パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
US5604877A (en) * 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for resolving return from subroutine instructions in a computer processor
US5758142A (en) * 1994-05-31 1998-05-26 Digital Equipment Corporation Trainable apparatus for predicting instruction outcomes in pipelined processors
US5608886A (en) * 1994-08-31 1997-03-04 Exponential Technology, Inc. Block-based branch prediction using a target finder array storing target sub-addresses
US5896528A (en) * 1995-03-03 1999-04-20 Fujitsu Limited Superscalar processor with multiple register windows and speculative return address generation
US5943494A (en) * 1995-06-07 1999-08-24 International Business Machines Corporation Method and system for processing multiple branch instructions that write to count and link registers
US5732272A (en) * 1995-07-31 1998-03-24 Apple Computer, Inc. Subroutine execution time tracer
US5764970A (en) * 1995-11-20 1998-06-09 International Business Machines Corporation Method and apparatus for supporting speculative branch and link/branch on count instructions
US5794024A (en) * 1996-03-25 1998-08-11 International Business Machines Corporation Method and system for dynamically recovering a register-address-table upon occurrence of an interrupt or branch misprediction
US5822577A (en) * 1996-05-01 1998-10-13 International Business Machines Corporation Context oriented branch history table
US5949995A (en) * 1996-08-02 1999-09-07 Freeman; Jackie Andrew Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
US5809566A (en) * 1996-08-14 1998-09-15 International Business Machines Corporation Automatic cache prefetch timing with dynamic trigger migration
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US6289441B1 (en) * 1998-01-09 2001-09-11 Sun Microsystems, Inc. Method and apparatus for performing multiple branch predictions per cycle
US5974543A (en) * 1998-01-23 1999-10-26 International Business Machines Corporation Apparatus and method for performing subroutine call and return operations
US6125444A (en) * 1998-04-30 2000-09-26 International Business Machines Corporation Millimode capable computer system providing global branch history table disables and separate millicode disables which enable millicode disable to be turned off for some sections of code execution but not disabled for all
US6108776A (en) * 1998-04-30 2000-08-22 International Business Machines Corporation Globally or selectively disabling branch history table operations during sensitive portion of millicode routine in millimode supporting computer
US6289444B1 (en) 1999-06-02 2001-09-11 International Business Machines Corporation Method and apparatus for subroutine call-return prediction
US6304962B1 (en) 1999-06-02 2001-10-16 International Business Machines Corporation Method and apparatus for prefetching superblocks in a computer processing system
JP3723019B2 (ja) * 1999-09-29 2005-12-07 富士通株式会社 サブルーチンリターン相当の命令の分岐予測を行う装置および方法
US7024545B1 (en) * 2001-07-24 2006-04-04 Advanced Micro Devices, Inc. Hybrid branch prediction device with two levels of branch prediction cache
JP3843048B2 (ja) * 2002-06-28 2006-11-08 富士通株式会社 分岐予測機構を有する情報処理装置
US20060095752A1 (en) * 2004-08-28 2006-05-04 Min-Cheng Kao [method for return instruction identification and associated method for return target pointer prediction]
US8782384B2 (en) * 2007-12-20 2014-07-15 Advanced Micro Devices, Inc. Branch history with polymorphic indirect branch information
US7882338B2 (en) * 2008-02-20 2011-02-01 International Business Machines Corporation Method, system and computer program product for an implicit predicted return from a predicted subroutine
US20110093658A1 (en) * 2009-10-19 2011-04-21 Zuraski Jr Gerald D Classifying and segregating branch targets
US11347507B2 (en) 2018-03-15 2022-05-31 SiFive, Inc. Secure control flow prediction
US11321095B2 (en) * 2018-12-14 2022-05-03 Apple Inc. Indirect branch predictor security protection
US11048515B2 (en) 2018-12-28 2021-06-29 SiFive, Inc. Way predictor and enable logic for instruction tightly-coupled memory and instruction cache

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6049340A (ja) * 1983-08-29 1985-03-18 Nippon Kogaku Kk <Nikon> 網点写真システム
JPS62293434A (ja) * 1986-06-12 1987-12-21 Nec Corp 分岐先予測制御方式
JPH01169538A (ja) * 1987-12-02 1989-07-04 Internatl Business Mach Corp <Ibm> 命令事前取出し装置
JPH02153428A (ja) * 1988-12-05 1990-06-13 Matsushita Electric Ind Co Ltd キャッシュ装置と命令読出し装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4348721A (en) * 1978-06-30 1982-09-07 International Business Machines Corporation System for selectively addressing nested link return addresses in a microcontroller
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
US4586127A (en) * 1982-11-03 1986-04-29 Burroughs Corp. Multiple control stores for a pipelined microcontroller
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
US4763245A (en) * 1985-10-30 1988-08-09 International Business Machines Corporation Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table
US4853840A (en) * 1986-01-07 1989-08-01 Nec Corporation Instruction prefetching device including a circuit for checking prediction of a branch instruction before the instruction is executed
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
JP2603626B2 (ja) * 1987-01-16 1997-04-23 三菱電機株式会社 データ処理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6049340A (ja) * 1983-08-29 1985-03-18 Nippon Kogaku Kk <Nikon> 網点写真システム
JPS62293434A (ja) * 1986-06-12 1987-12-21 Nec Corp 分岐先予測制御方式
JPH01169538A (ja) * 1987-12-02 1989-07-04 Internatl Business Mach Corp <Ibm> 命令事前取出し装置
JPH02153428A (ja) * 1988-12-05 1990-06-13 Matsushita Electric Ind Co Ltd キャッシュ装置と命令読出し装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6530016B1 (en) 1998-12-10 2003-03-04 Fujitsu Limited Predicted return address selection upon matching target in branch history table with entries in return address stack
US7350062B2 (en) 1998-12-10 2008-03-25 Fujitsu Limited Predicted return address from return stack entry designated by computation unit with multiple inputs including return hit flag and re-fetch signal
US7925870B2 (en) 1998-12-10 2011-04-12 Fujitsu Limited Return target address prediction by moving entry pointer to return stack popped at completion to deeper one at return instruction fetch
JP2015535634A (ja) * 2012-11-28 2015-12-14 クアルコム,インコーポレイテッド 実行パイプラインバブルを低減するためにサブルーチンリターンのための分岐ターゲット命令キャッシュ(btic)エントリを確立すること、ならびに関連するシステム、方法、およびコンピュータ可読媒体
JP2014036899A (ja) * 2013-11-27 2014-02-27 Daito Giken:Kk 遊技台
JP2014195639A (ja) * 2014-02-17 2014-10-16 株式会社大都技研 遊技台
JP2015128695A (ja) * 2015-04-14 2015-07-16 株式会社大都技研 遊技台
JP2016147083A (ja) * 2016-03-25 2016-08-18 株式会社大都技研 遊技台

Also Published As

Publication number Publication date
EP0468134A3 (en) 1992-08-19
US5276882A (en) 1994-01-04
EP0468134A2 (en) 1992-01-29
JP2500958B2 (ja) 1996-05-29

Similar Documents

Publication Publication Date Title
JPH04233632A (ja) デイジタルデータプロセツサ作動方法及び分岐履歴テーブル
US4763245A (en) Branch prediction mechanism in which a branch history table is updated using an operand sensitive branch table
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US5606682A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
US5136696A (en) High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5210831A (en) Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
US8171260B2 (en) Fetching all or portion of instructions in memory line up to branch instruction based on branch prediction and size indicator stored in branch target buffer indexed by fetch address
JP2504830Y2 (ja) デ―タ処理装置
JPH06110683A (ja) マイクロプロセッサの拡張ブランチターゲット方法及びその装置
JPH0429093B2 (ja)
JP2003005956A (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
JPS62221036A (ja) 計算装置
JPH0334024A (ja) 分岐予測の方法とそのための装置
KR100259306B1 (ko) 분기 명령 버퍼를 갖는 데이타 프로세서
EP2220556B1 (en) A method and a system for accelerating procedure return sequences
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
JP3486690B2 (ja) パイプライン方式プロセッサ
US20080120468A1 (en) Instruction Cache Trace Formation
JP2001527233A (ja) 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
JPH0773104A (ja) キャッシュ・システム
US20050154859A1 (en) Branch prediction in a data processing apparatus
JP2508021B2 (ja) デ−タ処理装置
JP2000515277A (ja) ストアおよびロードミス命令を完了するための複数のポインタを備えるロード/ストアユニット
JPH06301537A (ja) 命令フェッチ回路
JPH09311787A (ja) データ処理装置