JPH11259298A - サブル―チン呼び出しおよび復帰動作を実行するための装置および方法 - Google Patents

サブル―チン呼び出しおよび復帰動作を実行するための装置および方法

Info

Publication number
JPH11259298A
JPH11259298A JP11009258A JP925899A JPH11259298A JP H11259298 A JPH11259298 A JP H11259298A JP 11009258 A JP11009258 A JP 11009258A JP 925899 A JP925899 A JP 925899A JP H11259298 A JPH11259298 A JP H11259298A
Authority
JP
Japan
Prior art keywords
instruction
return
address
call
branch
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
JP11009258A
Other languages
English (en)
Other versions
JP3004013B2 (ja
Inventor
Rolf Hilgendorf
ロルフ・ヒルゲンドルフ
Oliver Laub
オリバー・ラウプ
Hans-Werner Tast
ハンス−ヴェルナー・タスト
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 JPH11259298A publication Critical patent/JPH11259298A/ja
Application granted granted Critical
Publication of JP3004013B2 publication Critical patent/JP3004013B2/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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)【要約】 【課題】サブルーチン復帰命令の標的アドレスを定義す
るための処理時間を減らす。 【解決手段】命令ストリーム中で見つかる複数の分岐命
令の標的アドレスを記憶するための分岐履歴テーブルを
含む命令先取り機構を備えたプロセッサを有するコンピ
ュータにおいて、サブルーチン呼び出しおよび復帰動作
を実行する装置および方法。分岐履歴テーブル22は、
潜在呼び出し命令タグ37および復帰命令タグ39を含
む。先取り命令ストリーム中に潜在サブルーチン呼び出
し命令が見つかるごとに、その命令の呼び出し標的アド
レスおよび次の順次命令アドレスを含むアドレス対が復
帰識別スタック24に記憶される。続いて検出される分
岐命令が、復帰識別スタック中の、マッチするエントリ
が分岐命令を復帰命令として識別する次の順次命令部に
対する連想探索を起動する。そして、マッチするエント
リに含まれるアドレス対が、分岐履歴テーブルに対して
並列に設けられた復帰キャッシュ30に転送される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、命令ストリーム中
で検出される複数の分岐命令の標的アドレスを記憶する
ための分岐履歴テーブルを含む命令先取り機構を備えた
プロセッサを有するコンピュータにおいて、サブルーチ
ン呼び出しおよび復帰動作を実行するための装置および
方法に関する。
【0002】
【従来の技術】プログラマは、プログラムを構成し、タ
スクを何度も繰り返し書くことを避けるため、サブルー
チンを使用することが非常に多い。サブルーチンは、呼
び出し命令によって主プログラムから呼び出され、呼び
出し命令ののちただちに制御を主プログラム中の命令に
戻す復帰命令とともに終了する。同じサブルーチンがし
ばしばプログラム中のいくつかの場所から呼び出される
ため、復帰命令には、サブルーチンを呼び出した元に依
存して、戻らなければならないいくつかの場所がある。
復帰命令とは、基本的には、この場合にはいくつかの標
的を有する分岐命令である。分岐が予想されるならば、
関連するものは、実施される予測でも実施されない予測
でもなく、実行時での時間危急的使用のための正しい標
的アドレスの決定である。専用の呼び出しおよび復帰命
令を有する命令セット・アーキテクチャでは、復帰スタ
ックを使用して復帰命令の標的アドレスを予測する。専
用の呼び出しおよび復帰命令を使用しない他の命令セッ
ト・アーキテクチャでは、復帰標的アドレスを予測する
ためにさらなるハードウェアが必要である。
【0003】Webbによる「Subroutine Call/Return S
tack」IBM Technical DisclosureBulletin, Vol.30,
No.11, April 1988, pages 221-225は、2スタッ
ク構造を開示している。2個のスタックの一方が呼び出
し命令の標的アドレスに使用され、他方が同じ呼び出し
命令の次の順次命令に使用される。潜在呼び出しである
分岐が命令ストリーム中で見つかるたびに、その標的ア
ドレスおよび次の順次アドレスがスタックに書き込まれ
る。命令ストリーム中で潜在復帰命令に遭遇するなら
ば、その標的アドレスが、次の順次スタックに記憶され
たすべてのアドレスと比較され、等しいアドレスを有す
る1個のエントリが見つかるならば、復帰マーク・ビッ
トが分岐履歴テーブル(BHT)の関連エントリに書き
込まれることにより、潜在復帰アドレスは、識別された
復帰になる。加えて、起動する呼び出しの標的アドレス
もまた、BHTのこのエントリに記憶される。次回、復
帰アドレスを得るためにBHT探索が行われるならば、
標的アドレスは、BHTから直接取り出されるのではな
く、BHTからのアドレスを使用して、呼び出し/復帰
スタックの標的部分が探索される。マッチが見つかるな
らば、対応する次の順次命令スタックからのエントリが
復帰の標的アドレスとみなされる。この処理は、復帰の
標的アドレスを定義するのに少なくとも2回のサイクル
を要し、そのサイクルの一方はスタック中の連想探索を
含む。
【0004】さらには、米国特許第5,276,882
号明細書(Emmaら)は、分岐エントリが、サブルーチン
呼び出しを実施するかもしれない分岐に対応することを
示すための呼び出しフィールドと、リンク情報を表し、
サブルーチン・エントリとサブルーチン復帰との間にリ
ンクを生成する疑似フィールドとからなる二つのさらな
るフィールドを含む分岐履歴テーブルを用いるサブルー
チン復帰を開示している。潜在復帰の標的アドレスがB
HTに送られ、このアドレスの直前に呼び出し命令が見
つかるならば、サブルーチン始動である呼び出し命令の
標的アドレスに疑似エントリが記憶されることによって
疑似呼び出し/復帰対が設けられる。疑似エントリは、
復帰命令のアドレスをその標的アドレスとして含む。サ
ブルーチンが呼び出されるならば、BHTエントリが探
索され、疑似エントリが見つかる。そのようなエントリ
の検出が、復帰命令の標的アドレスを呼び出しの次の順
次アドレスに変更する更新プロセスを呼び出す。する
と、実行時に復帰のBHT探索が実施されると、正しい
標的が見つかる。
【0005】サブルーチンの始動アドレスにおける疑似
エントリの位置づけは、このサブルーチン復帰手法を単
一出口サブルーチンに限定する。疑似エントリはまた、
BHT中にさらなる空間を要する。さらには、BHTの
ブロック構造は、先行する呼び出し命令を見いだすこと
が常に可能であるとはいえないような構造である。
【0006】
【発明が解決しようとする課題】請求項に定義する本発
明は、命令ストリーム中で検出される複数の分岐命令の
標的アドレスを記憶するための分岐履歴テーブルを含む
命令先取り機構を備えたプロセッサを有するコンピュー
タにおいて、サブルーチン呼び出しおよび復帰動作を実
行するための装置および方法に関する。本発明の目的
は、サブルーチン復帰命令の標的アドレスを定義するた
めの処理時間を減らすことにある。
【0007】
【課題を解決するための手段】本発明によると、分岐履
歴テーブルは、潜在呼び出し命令タグおよび復帰命令タ
グを含む、分岐命令ごとの分岐タイプ情報を含む。先取
り命令ストリーム中で潜在サブルーチン呼び出し命令が
検出されるごとに、識別された命令の呼び出し標的アド
レスおよび次の順次命令アドレスを含むアドレス対が復
帰識別装置のスタックに記憶される。先取り命令ストリ
ーム中で続いて検出される各潜在復帰命令に応答して、
スタック中の、マッチが命令を復帰として識別する次の
順次命令部に対して連想探索が実行される。マッチする
エントリに含まれるアドレス対が、分岐履歴テーブルに
対して並列に設けられた復帰キャッシュに転送される。
【0008】分岐履歴テーブルに記憶された分岐タイプ
情報を使用することにより、命令を分岐として識別し、
さらに命令を復帰として識別するために、分岐履歴テー
ブルと復帰キャッシュとが、各先取りされた命令のアド
レスで同時にアクセスされる。命令が復帰であるなら
ば、分岐履歴テーブルからの標的アドレスに代えて、復
帰キャッシュからの次の順次命令アドレスが復帰アドレ
スとみなされる。
【0009】命令ストリーム中の分岐命令に応答して、
対応する標的アドレスを有するエントリを求めて復帰キ
ャッシュを探索し、前記エントリ中の次の順次命令アド
レスを前記分岐命令の次の順次命令アドレスによって置
換することにより、復帰キャッシュ更新が実施される。
【0010】本発明は、わずか1回の動作サイクルで、
識別されたサブルーチン復帰命令の正しい標的アドレス
に対するアクセスを可能にする。本発明の装置および方
法は、復帰命令1個あたりでの動作時間を1回のBHT
探索よりも延ばすことなく、1個のサブルーチンの多数
の復帰を処理することができる。さらには、本発明は、
呼び出し/復帰対を識別するためのさらなるアドレス・
フィールドにより、分岐履歴テーブルのエントリ幅の拡
大を回避させる。
【0011】
【発明の実施の形態】図1に示す装置は、命令実行装置
を含むプロセッサと、主記憶およびキャッシュを含む記
憶装置の階層からなる記憶装置とを含むコンピュータの
一部である。プロセッサは、キャッシュまたは主記憶の
中で命令アクセス動作を実行し、先取り(prefetch)命
令ストリームを生成する命令先取り機構を備えている。
命令実行装置は、複数の命令を同時に処理するためのパ
イプライン概念にしたがって構成されている。先取り機
構およびパイプライン化命令実行装置を使用するコンピ
ュータ・アーキテクチャは周知であり、よってこの図に
は示さない。
【0012】このようなプロセッサによって処理される
命令シーケンスは、同じくサブルーチン呼び出し(cal
l)およびサブルーチン復帰(return)を実行する種々
のタイプの条件付きおよび無条件分岐命令を含むことが
できる。そのようなタイプの分岐(branch)命令は、明
示的にサブルーチン呼び出しおよび復帰に当てられたも
のではないが、命令シーケンス中でのそれらの見かけお
よび機能によってそのようなものとして識別しなければ
ならない。サブルーチン呼び出しを実行する分岐の例
は、BAL(分岐およびリンク)およびBALR(分岐
およびリンク・レジスタ)である。
【0013】図1に示す装置は、先取り命令ストリーム
中でサブルーチン呼び出しおよび復帰命令を識別し、識
別したサブルーチン呼び出しおよび復帰命令に必要なア
ドレス処理を先取り段階で実行して、可変性のサブルー
チン復帰アドレスの高速アクセス性を提供する。
【0014】図2は、命令シーケンス11、11′と、
プログラムの実行時にプログラムの同じ場所または異な
る場所で数回使用されるサブルーチン12とを含む典型
的なプログラム構造を示す。サブルーチン12は、始動
命令Bおよび復帰命令Cを有している。シーケンス11
の命令Aは、始動命令Bに対して呼び出しを実行する命
令の分岐およびリンク・タイプである。命令Cは通常の
分岐命令であり、命令Dであるシーケンス11中の次の
命令への復帰を実行する。同様に、第二の命令シーケン
ス11′の命令A′もまた、始動命令Bに対して呼び出
しを実行する命令の分岐およびリンク・タイプである。
この場合、命令Cがシーケンス11′の命令D′への復
帰を実行しなければならないため、命令Cの復帰アドレ
スは、前に使用されたCの復帰アドレスとは異なる。し
たがって、第二の命令シーケンス11′からの呼び出し
があると、Cのアドレスが変更されなければならない。
【0015】図3は、復帰アドレス処理をさらに複雑に
する2個以上の復帰命令を含むサブルーチン12の例を
示す。分岐命令16、17がサブルーチン12の異なる
部分を選択する。これらの部分それぞれは、制御を、始
動命令Bが呼び出されたところからシーケンスの次の命
令に戻すそれ自体の復帰命令C1、C2またはC3を有
する。したがって、異なる復帰命令C1、C2、C3ご
とに復帰アドレス変更を実行しなければならない。図4
は、多数の復帰を有する図3のサブルーチンの記憶レイ
アウトを示す。
【0016】再び図1を参照すると、同図に示す装置
は、図2〜4にしたがって、正しい復帰アドレスを得る
のに1回の機械サイクルしか要しない方法で、復帰アド
レス処理を実行する。実行装置(図示せず)の一部であ
る分岐評価装置20が、分岐が行われたかどうかを判定
し、分岐パラメータを調査する。分岐評価装置20は、
一定期間中もっとも最近に実行された分岐命令に関する
情報を含む分岐履歴テーブル(BHTとも呼ぶ)22に
接続されている。BHTは、分岐評価装置20によって
アドレス指定され、分岐評価装置20から分岐タイプ情
報を受ける。同じ情報が復帰識別装置24にも提示さ
れ、この装置が、潜在呼び出し命令ごとに、呼び出し標
的アドレス(CTA)および次の順次命令アドレス(N
SI)を記憶する。潜在呼び出しのCTA−NSIアド
レス対は、後続の分岐命令をサブルーチン復帰として識
別するのに使用される。復帰識別装置24は復帰識別信
号を生成し、この信号は復帰タグとしてBHTの関連の
エントリに記憶される。同時に、識別されたCTA−N
SIアドレス対は、先取り命令レジスタ28に関してB
HTに対して並列に配置された復帰キャッシュ26に転
送される。命令先取り動作が起こると、セレクタ30
が、BHTからの分岐標的アドレスまたは分岐復帰キャ
ッシュ26からのNSIアドレスであってもよい次の先
取りアドレスを決定する。BHT中で、命令アドレス・
レジスタ28によってアドレス指定されるエントリが復
帰タグを示すならば、NSIアドレスが選択され、そう
でなければ、BHTからの分岐標的アドレスが選択され
る。同じアドレスに関して、エントリがBHT中にも復
帰キャッシュ26中にもないならば、命令アドレス・レ
ジスタ28の内容が命令長だけインクリメントされたの
ち、次の先取りアドレスとして使用される。復帰キャッ
シュ26のNSIエントリの復帰キャッシュ更新処理が
更新回路32によって実行される。この処理は、復帰キ
ャッシュ22にすでに含まれる復帰命令の次の順次アド
レスNSIを更新する。潜在呼び出しが命令ストリーム
中で見つかるたびに、その呼び出し標的アドレスおよび
その次の順次アドレスが復帰キャッシュ26に転送され
て、その中の関連のエントリを変更する。これにより、
同じサブルーチンが異なる呼び出し命令、たとえば図2
の命令A′によって呼び出されるならば、キャッシュ2
6中の復帰エントリは、妥当なNSIに送り直される。
【0017】次に、図5および6を参照しながら図1の
実施態様をさらに詳細に説明する。分岐履歴テーブル2
2のエントリは、図6に示すようなフォーマットを有し
ている。各エントリは、分岐評価装置20によって示さ
れる分岐命令に割り当てられ、有効フラグ33、アドレ
ス・タグ34、分岐標的アドレス・フィールド35およ
び分岐履歴情報フィールド36を含む。BHTの各エン
トリは、潜在呼び出しタグ・フィールド37、命令長フ
ィールド38および復帰タグ・フィールド39である三
つのさらなるフィールドを含む。分岐履歴フィールド2
2はブロック単位で編成され、各ブロックは外部アドレ
スによってアクセスされるが、ブロック内でのアドレス
指定は、命令アドレス・レジスタ28からの命令アドレ
スの一部での内部アドレス指定によって実行される。こ
のアドレス部分は、連想アドレス・フィールドとして使
用されるアドレス・タグ・フィールド34に適用され
る。フィールド35は、分岐命令の標的アドレスを受け
る。このため、分岐評価装置20は、ラッチ41および
ライン42を介して、装置20によって処理される分岐
命令の命令アドレスで分岐履歴テーブルを指定する。こ
の分岐命令の標的アドレスは、ラッチ43およびライン
44を介して、アドレス指定されたエントリのフィール
ド35にロードされ、その有効フラグVが0から1にセ
ットされる。フィールド36中の分岐履歴情報は、分岐
が起こるごとに更新されるが、ここでは示さない。さら
に、分岐タイプ情報が、ラッチ45およびライン46を
介して、アドレス指定されたエントリのフィールド37
および39にロードされる。
【0018】分岐履歴テーブル22のロード動作時に、
三つのタイプの分岐、すなわち、分岐タイプ情報に依存
する可能な呼び出し命令、識別された復帰命令および通
常の分岐が区別される。BHTが新たなエントリをロー
ドされるならば、そのエントリは、三つの分岐タイプの
いずれかに割り当てられなければならない。ロード命令
が潜在呼び出しであるならば、対応するエントリの潜在
呼び出しタグ・フィールド37が「1」にセットされ、
2、4または6バイトである命令長がそのエントリのフ
ィールド38に書き込まれる。識別装置24が、ロード
命令が復帰命令であると判定すると、対応するエントリ
の復帰タグ・フィールド39が「1」にセットされ、そ
の対応するエントリの潜在呼び出しタグ・フィールド3
7が「0」にセットされる。ロード命令が潜在呼び出し
でも復帰でもないならば、両フィールド37および39
が「0」にセットされて、通常の分岐であることが示さ
れる。
【0019】分岐評価装置20は、命令アドレスおよび
呼び出し標的アドレスを、図1の復帰識別装置24の一
部である復帰識別スタック50にも供給する。復帰識別
スタック50の各エントリは1対のフィールド51、5
2を含み、そのフィールド51が次の命令アドレスNS
Iを含み、フィールド52が関連する呼び出し標的アド
レスを含む。復帰識別スタック50は、レジスタの円形
の待ち行列として動作する。スタックが満杯になると、
最新のエントリが最古のエントリを上書きする。加え
て、復帰識別スタック50のエントリには、NSIフィ
ールド51を装置20からの分岐標的アドレスで連想ア
ドレス指定することによってアクセスすることができ
る。命令ストリーム中で潜在呼び出しが見つかり、装置
20によって処理されるごとに、復帰識別スタック50
へのエントリが、装置20からライン56を介して分岐
タイプ情報を受けるデコーダ54によって生成されるラ
イン55上のロード制御信号によって生成される。この
エントリには、潜在呼び出し命令のNSIアドレスおよ
び標的アドレスがロードされる。NSIアドレスは、分
岐命令アドレスを命令長だけインクリメントすることに
よって導かれる。インクリメントは、装置20からの命
令アドレスを第一のオペランドとして受け、命令長をバ
イト単位で表す値を第二のオペランドとして受ける加算
器58によって実行される。加算器58は、デコーダ5
4からライン59を介して送られる加算制御信号によっ
て操作される。装置20によって提供される呼び出し標
的アドレスは、ライン60を介して、復帰識別スタック
50中に生成されたエントリのフィールド52にロード
される。
【0020】命令ストリーム中で潜在復帰命令が新たに
検出されるごとに、復帰識別スタック50のNSI部分
に対して連想探索が実行される。探索は、デコーダ54
によってライン62上で生成される探索制御信号によっ
て起動される。探索は、最新のエントリからより古いエ
ントリに向けて実施され、潜在復帰命令の標的アドレス
を、スタック50に記憶されたすべてのNSIアドレス
と比較する。マッチが見つからないならば、分岐命令は
復帰ではないとして分類され、フィールド39で復帰タ
グがセットされることなく、分岐命令の標的命令がBH
Tに入力される。マッチがあるならば、BHTに入力す
べき命令が復帰としてマークされる。スタック50中の
マッチするエントリによって生成されるマッチ表示信号
が、ラッチ64およびライン65を介して、分岐タイプ
情報の一部としてBHTに送られて、復帰タグ・フィー
ルド39を「1」にセットし、フィールド37を「0」
にセットし、一方、復帰として識別された命令の標的ア
ドレスが、BHT中のアドレス指定されたエントリのフ
ィールド35に入力される。
【0021】さらには、マッチ表示信号がライン66に
よってロード制御信号として復帰キャッシュ26に印加
されて、スタック50のマッチするエントリに含まれる
アドレス対をライン67、68を介して復帰キャッシュ
に転送し始める。復帰キャッシュ26は、各エントリが
有効フラグ・フィールド71、連想アドレス指定に使用
されるタグ・フィールド72、呼び出し標的アドレス・
フィールド74および次の順次アドレス・フィールド7
3を含む連想バッファのセットである。スタック50か
らのアドレス対は、ライン69上の識別された復帰命令
のアドレスによって指定されるエントリのフィールド7
3および74に記憶される。復帰キャッシュ26がアク
セスされるとき、このアドレスの一部が、連想アドレス
指定に使用されるアドレス指定されたエントリのタグ・
フィールド72にロードされる。
【0022】図3および4に示すようにサブルーチンが
2個以上の復帰を含む場合、分岐命令を復帰命令として
識別するステップおよび対応するアドレス対NSI/呼
び出し−標的を復帰キャッシュ26に転送するステップ
は、サブルーチンに含まれる復帰命令ごとに繰り返され
る。したがって、復帰キャッシュは、同じNSI/呼び
出し−標的アドレス対を含む2個以上のエントリを含む
かもしれない。
【0023】主メモリおよび/またはキャッシュから命
令が取り出されるごとに、分岐履歴テーブル22が探索
されて、この命令が分岐であるかどうか、そして分岐で
あるならば、その標的アドレスがどれであるのか、そし
てその復帰タッグの内容は何であるかが決定される。B
HT探索動作は、ライン76を介してBHTと復帰キャ
ッシュとに並列に印加される、レジスタ28(図1)に
含まれる命令アドレスを用いて実施される。BHTのア
ドレス指定は、混合アドレス指定モードで起こる。レジ
スタ28からのアドレスの一部が、BHTのブロックを
アドレス指定するのに使用され、別の部分が、アドレス
指定されるブロックのタグ・フィールド34に印加され
る連想アドレスとして使用される。このようにして、B
HTの1サイクル・アクセスが実行され、それにより、
マッチするエントリの、復帰タグ・フィールド39を含
む他のフィールドがアクセスされる。BHT探索と同時
に、同じ機械サイクルの中で、復帰キャッシュ26は、
レジスタ28からの同じ命令アドレスの一部を、復帰キ
ャッシュ26中の記憶場所の、レジスタ28からの同じ
アドレスの別の部分によってアドレス指定されるブロッ
クのすべてのエントリのタグ・フィールド72に適用さ
れる連想アドレスとして使用することによってアクセス
される。BHT探索の結果、マッチするエントリがあ
り、そのエントリが「1」にセットされた復帰タグを有
し、かつ同時に復帰キャッシュ26がマッチするエント
リを示すならば、次の順次アドレスNSIが、復帰キャ
ッシュ26中のマッチするエントリのフィールド73か
ら選択されて次の先取りアドレスとして使用される。ア
ドレス選択は、マルチプレクサ78、79、加算器80
およびAND回路81を含むセレクタ30(図1)によ
って実行される。マルチプレクサ78は、第一の入力ラ
イン84を介して、BHTのマッチするエントリから分
岐標的アドレスを受け、第二の入力ライン87を介し
て、復帰キャッシュ26のマッチするエントリから次の
順次アドレスを受ける。AND回路81からの制御信号
が「0」であるならば、マルチプレクサ78の第一の入
力がマルチプレクサ79に切り替えられる。AND回路
81は、BHTからライン85を介して、マッチするB
HTエントリの復帰タグ「1」を受け、復帰キャッシュ
26からライン86を介して、マッチするエントリの有
効フラグVを受け、マルチプレクサ78を調節して、B
HTからの分岐標的アドレスではなく、復帰キャッシュ
26のマッチするエントリからの次の命令アドレスをマ
ルチプレクサ79に転送させる制御信号「1」を生成す
る。マルチプレクサ79は、BHT中のマッチするエン
トリの有効フラグ・フィールド33からライン88を介
して送られる「1」制御信号によって調節されるなら
ば、マルチプレクサ78からの入力を、次の先取りアド
レスとして使用されるよう、出力ライン89に転送す
る。加算器80は、本質的には、ライン76上の命令ア
ドレスを命令長の値だけインクリメントするように制御
される。ライン88の「0」信号によって示されるよう
に、BHT中にマッチするエントリが見つからないなら
ば、マルチプレクサ79は、加算器80の出力を、次の
先取りアドレスとして使用されるよう、出力ライン89
に転送するように制御される。
【0024】復帰キャッシュ26中のエントリの次の順
次アドレスは、関連するサブルーチンが再び呼び出され
るとき、更新されなければならない。この更新は、マル
チプレクサ91および92、デコーダ93ならびに加算
器94を含む回路32(図1)の中で実現される復帰キ
ャッシュ更新手続きによって実行される。マルチプレク
サ91、92は、デコーダ93により、分岐履歴テーブ
ル22の動作のタイプにしたがって制御される。BHT
がライン76上の先取りアドレスによってアクセスさ
れ、潜在呼び出しをそのフィールド37の中で示すマッ
チするエントリが見つかるならば、このフィールドが読
み出されて、ラッチ96およびライン97を介して入力
信号がデコーダ93に生成され、デコーダは、制御信号
をライン95を介してマルチプレクサ91、92および
加算器94に送ることによって応答する。この制御信号
により、マルチプレクサ91は、呼び出し標的アドレス
をマッチするエントリのフィールド35からラッチ98
およびライン99を介して復帰キャッシュ22の探索入
力100に転送するよう調節される。復帰キャッシュ2
6の連想探索機構を使用して、復帰キャッシュ26中の
各エントリの呼び出し標的アドレス・フィールド74が
BHT中の潜在呼び出し命令の呼び出し標的アドレスと
比較される。マッチが見つかるならば、ライン76上の
先取り命令アドレスがラッチ101、ライン102およ
びマルチプレクサ92を介して加算器94に転送され、
この加算器が、このアドレスを、BHT中のマッチする
エントリの長さフィールド38によって示される命令長
だけインクリメントする。命令長情報は、ライン85お
よび97を介してデコーダ93に転送され、このデコー
ダが加算器94を相応に制御する。加算器94の出力
は、復帰キャッシュ26中のマッチするエントリのNS
Iフィールド73に入力される次の順次命令アドレスを
表し、このアドレスが、その中に前に記憶されていたN
SIアドレスを置換する。このNSIアドレスの置換
は、BHT中に潜在呼び出しが見つかるごとに繰り返さ
れる。
【0025】ライン42、44および46上に現れる分
岐情報によって分岐履歴テーブル22の新たなエントリ
が生成されると、同様なアドレス更新手続きが実行され
る。この場合、デコーダ93が、ライン42上の命令ア
ドレスによるBHTのアドレス指定により、分岐を潜在
呼び出しとして示す分岐タイプ情報をライン46から受
ける。この入力に応答して、デコーダ93は、制御信号
をマルチプレクサ91、92および加算器94に生成す
る。デコーダ93からの制御信号により、マルチプレク
サ91は、ライン44からの分岐命令の標的アドレスを
復帰キャッシュ26の探索入力100に転送して、復帰
キャッシュ26の各エントリの呼び出し標的フィールド
に対して探索を実行するよう調節される。マッチが見つ
かるならば、ライン42からの命令アドレスは、デコー
ダ93からの制御信号によって調節されるマルチプレク
サ95を介して加算器94に転送される。命令長は、ラ
イン46上の分岐タイプ情報によって指示され、デコー
ダ93を起動して、加算器94を制御する信号を生成さ
せて、ライン42からの命令アドレスを命令長だけイン
クリメントする。再び、加算器94の出力は、次の順次
命令アドレスを表し、復帰キャッシュ26中のマッチす
るエントリのNSIフィールド73に入力されて、前に
そこに記憶されていたNSIアドレスを置換する。
【0026】図3および4に示すように同じサブルーチ
ンの2個以上の復帰があるかもしれないため、復帰キャ
ッシュ中での探索動作の間、1個の呼び出し標的アドレ
スに対してマッチするエントリが2個以上見つかること
もある。連想探索によってマッチが見つかるごとに、上
述したように、マッチするエントリのフィールド73中
のNSIアドレスの対応する更新が実行される。したが
って、サブルーチン復帰アドレスのBHTおよび復帰キ
ャッシュ26中での各アドレス先取り動作の結果とし
て、実行される現復帰命令の更新されたNSIアドレス
である正しい標的アドレスが生じる。
【0027】次に、図7〜9を参照しながら本発明の変
形態様を説明する。この変形態様は、特定の場合におけ
るサブルーチン復帰標的アドレスを、図1〜6を参照し
て上述したNSIアドレスを4バイト超えるアドレスに
設定しなければならないプログラミング要件を考慮した
ものである。どの復帰アドレスを使用すべきであるかは
プログラミングの問題であり、サブルーチンごとに異な
る。したがって、この変形態様は、アドレスタイプ選択
機構を、復帰識別装置24および復帰アドレス更新回路
32の一部として提供する。
【0028】この変形態様によると、復帰識別スタック
50のエントリは、さらなるフィールドによって拡張さ
れている。図8は、各エントリがフィールド111、1
12および113を含む変形復帰識別スタック110を
示す。フィールド111および112は、図5のフィー
ルド51および52に対応し、フィールド111は次の
順次アドレスNSIを含み、フィールド112は、識別
された復帰命令の呼び出し標的アドレスCTAを含む。
さらなるフィールド113は、「4」だけインクリメン
トされたNSIアドレスを含むために使用される。この
NSI+4アドレスは、加算器58(図5)により、デ
コーダ54からライン59を介して送られる信号の制御
の下で生成される。部品54および58は、この目的の
ため、相応に変更されている。デコーダ54は、分岐評
価装置20からの対応する分岐タイプ情報に応答して、
使用される復帰アドレスのタイプを決定する前記制御信
号を生成する。加算器58の結果は、ライン114およ
び115を介して復帰識別スタック110にロードされ
る。ライン114はNSIアドレスに割り当てられ、ラ
イン115はNSI+4フィールド113に割り当てら
れている。
【0029】復帰の探索は、図5を参照して説明したよ
うに変形復帰識別スタック110中のすべてのエントリ
のフィールド111中のNSIアドレスに対して実行さ
れるだけでなく、変形復帰識別スタック110中のすべ
てのエントリのフィールド113に対しても実行され
る。NSI+4アドレスについてマッチが見つかるなら
ば、前記のようにBHT中の復帰タグ・フィールド39
がセットされ、また、前記のようにマッチするアドレス
対NSI+4/呼び出し−標的が復帰識別スタック11
0から復帰キャッシュに転送される。図9に示すよう
な、各エントリがフィールド121、122、123、
124および125を含む変形復帰キャッシュ120が
使用される。フィールド121、122、123および
124は、フィールド123が、復帰識別スタック11
0から受けられるNSIアドレスまたはNSI+4アド
レスを含むかもしれないことを除き、図5を参照して上
述したフィールド71、72、73および74に対応す
る。NSI+4アドレスが復帰識別スタック110から
受けられると、さらなるフィールド125の中でフラグ
・ビットTSIが「1」にセットされる。
【0030】復帰キャッシュ120中の次の順次アドレ
スの更新のために、図7に示す回路が設けられ、この回
路は、図1の更新回路32の一部であり、図5の加算器
に代わるものである。これは、加算器131、132、
AND回路133、134およびOR回路135を含
む。加算器131は、その第一の入力で、ライン128
を介してマルチプレクサ92(図5)からの呼び出し命
令アドレスを受け、その第二の入力で、ライン129を
介してバイト単位の命令長の値を受ける。命令長は、B
HTロード動作が実行されるのか、正常なBHTアクセ
ス動作が実行されるのかに依存して、分岐評価装置20
によって分岐タイプ情報の一部として供給されるか、B
HT22中の分岐エントリのフィールド38から供給さ
れる。加算器131が次の順次アドレスを生成し、この
アドレスは、AND回路133がライン136上のマッ
チ信号およびインバータ138の「1」出力によって調
節されるならば、AND回路133、OR回路135お
よびライン139を介して復帰キャッシュ120に転送
される。復帰キャッシュ22中の探索動作に応答して、
マッチするエントリのフィールド125がライン137
上でTSIフラグ「0」を示すとき、インバータ138
は「1」出力を生成する。OR回路135の出力は、復
帰キャッシュ120中のマッチするエントリ140の復
帰アドレス・フィールド141に入力されて、前にその
中に記憶されていた復帰アドレスを置換する。
【0031】また、加算器132は、その第一の入力
で、ライン128を介してマルチプレクサ92(図5)
からの呼び出し命令アドレスを受け、その第二の入力
で、ライン129を介して命令長の値を受け、さらに、
その第三の入力130で値「4」を受ける。加算器13
1の動作と同時に、加算器132が、加算器131によ
って生成されたアドレスを4だけインクリメントした次
の順次アドレスであるアドレスNSI+4を生成する。
AND回路134がライン136上のマッチ信号によっ
て調節され、TSIフラグ「1」が復帰キャッシュ22
中の探索動作によってマッチするエントリのフィールド
125からライン137を介して受けられるならば、ア
ドレスNSI+4は、AND回路134およびOR回路
135を介して復帰キャッシュ120に転送される。こ
こでもまた、OR回路135の出力は、次のサブルーチ
ン復帰がスタック50によって識別されるとき使用され
る更新復帰アドレスとして、復帰キャッシュ120中の
マッチするエントリ140の復帰アドレス・フィールド
141に入力される。エントリ140へのアクセスおよ
びフィールド141からの復帰アドレスの使用は、図5
を参照して上述した方法と同様にして実行される。
【0032】好ましい実施態様を参照しながら本発明を
説明したが、ここに示した実施態様からの逸脱もしくは
その変形または他の実施態様もまた、請求の範囲で定義
する本発明の範囲内である。
【0033】まとめとして、本発明の構成に関して以下
の事項を開示する。 (1)他のタイプの分岐の他に、サブルーチンの呼び出
しと、サブルーチンが実行されたのちの、次の順次アド
レスへの復帰とを実行する分岐命令を含む命令(11、
11′)のシーケンスによって制御されるプロセッサを
有するコンピュータにおいて、サブルーチン呼び出しお
よび復帰動作を実行するための装置であって、各呼び出
し命令が呼び出し標的アドレスを含み、各復帰命令が復
帰アドレスを含み、前記コンピュータが、先取り命令ス
トリームを生成するための手段(28)を含む命令先取
り機構を有し、前記先取り命令ストリーム中で見つかる
複数の分岐命令の標的アドレスを記憶するための分岐履
歴テーブル(22)を含み、前記装置が、(a)潜在サ
ブルーチン呼び出し命令タグおよびサブルーチン復帰命
令タグを含む分岐タイプ情報を分岐命令エントリごとに
記憶するための、前記分岐履歴テーブル(22)中の記
憶手段(37、39)と、(b)前記先取り命令ストリ
ーム中で潜在呼び出し命令が見つかるごとに、前記潜在
呼び出し命令の呼び出し標的アドレスおよび次の順次命
令アドレスを含むエントリを記憶するための復帰識別手
段(24)であって、続いて検出される分岐命令が復帰
命令であるかどうかを判定するための、続いて検出され
る分岐命令に応答する手段(54、62)を含む復帰識
別手段(24)と、(c)分岐履歴テーブル手段(2
2)に対して並列に配置された復帰キャッシュ手段(2
6)と、前記識別された復帰命令の前記エントリ中の復
帰タグを前記分岐履歴テーブルの中に記憶し、前記識別
された復帰命令の呼び出し標的アドレスおよび次の順次
命令アドレスが転送される前記復帰キャッシュ中にエン
トリを生成するための、前記復帰識別手段の復帰命令識
別信号に応答する手段(66)と、(d)前記分岐履歴
テーブルからの復帰タグに応答して、前記復帰キャッシ
ュから前記次の先取りアドレスを選択するための、各先
取りされた命令のアドレスで前記分岐履歴テーブルと前
記復帰キャッシュとに同時にアクセスするためのアクセ
スおよびセレクタ手段(28、30)と、を含むことを
特徴とする装置。 (2)前記分岐命令の標的アドレスに対応する標的アド
レスを有するエントリを求めて前記復帰キャッシュ手段
(26)中で探索動作を実行し、見つかったエントリ中
の次の順次命令アドレスを前記分岐命令の次の順次命令
アドレスによって置換するための、前記命令ストリーム
中の分岐命令に応答して作用する復帰キャッシュ更新手
段(32)をさらに含む上記(1)記載の装置。 (3)前記分岐履歴テーブル(22)の各エントリが、
潜在呼び出し命令の処理の際に分岐評価装置(20)に
よって提供される潜在呼び出しタグを記憶するための第
一の1ビット・フィールド(37)と、復帰命令を識別
したのち前記復帰識別手段(24)によって提供される
復帰タグを記憶するための第二の1ビット・フィールド
(39)と、前記潜在呼び出し命令の命令長を記憶する
ための第三のフィールド(38)とを含む上記(1)記
載の装置。 (4)前記復帰識別手段(24)が、複数の記憶場所を
有する復帰識別スタック手段(50)を含み、前記複数
の記憶場所それぞれが、アドレス対を記憶するための第
一のフィールド(51、111)および第二のフィール
ド(52、112)を含み、各アドレス対が、潜在呼び
出し命令の次の順次アドレスと、その同じ潜在呼び出し
命令の呼び出し標的命令とを含む上記(1)記載の装
置。 (5)前記復帰識別スタック手段(50)中の前記複数
の記憶場所が、最新のエントリが最古のエントリを上書
きする円形の待ち行列として動作する上記(4)記載の
装置。 (6)前記復帰識別スタック手段(50)中の前記複数
の記憶場所が、前記復帰識別スタック手段に記憶された
すべての次の順次アドレスに対する連想探索を可能にす
るための、その第一のフィールド(51、111)に関
する内部アドレス指定能力を含む上記(4)記載の装
置。 (7)前記復帰識別手段(24)が、潜在呼び出し命令
ごとに、その潜在呼び出し命令の命令アドレスを命令長
の値だけインクリメントすることによって次の順次アド
レスを生成する加算器(58)を含む上記(1)記載の
装置。 (8)前記復帰識別スタック手段(110)の前記複数
の記憶場所それぞれが、所定の値だけインクリメントさ
れたのちの潜在呼び出し命令の次の順次アドレスをさら
に記憶するための第三のフィールド(113)を含み、
前記スタック手段の前記内部アドレス指定能力が前記第
三のフィールド(113)に及んで、復帰識別スタック
手段(110)に記憶されたすべてのそのようなインク
リメントされた次の順次アドレスに対する連想探索を可
能にする上記(4)および(6)記載の装置。 (9)同じ命令アドレス指定(76)を適用し、前記セ
レクタ手段(30)に対して出力(84および87)を
並列に提供することにより、前記分岐履歴テーブル手段
(22)と前記復帰キャッシュ手段(26)とが同じ機
械サイクルで並列にアクセスされるように配置されてい
る上記(1)記載の装置。 (10)前記復帰キャッシュ手段(26)が複数の記憶
場所を含み、記憶場所それぞれが、前記復帰識別手段
(24)から受けた次の順次アドレスおよび呼び出し標
的アドレスを含むアドレス対を記憶するための第一のフ
ィールド(73)および第二のフィールド(74)を含
む上記(1)記載の装置。 (11)前記復帰キャッシュ手段(26)中の前記複数
の記憶場所が、前記復帰キャッシュ手段に記憶されたす
べての呼び出し標的アドレスに対して連想探索を可能に
して、前記キャッシュ更新手段(32)のアドレス更新
処理のために、マッチする呼び出し標的アドレスおよび
その関連する次の順次アドレスを位置づけるための、第
二のフィールド(74)の内部アドレス指定能力を含む
上記(10)記載の装置。 (12)前記復帰キャッシュ手段(26)中の前記複数
の記憶場所がブロックに細分され、各ブロックが先取り
命令アドレスの一部によってアドレス指定され、前記記
憶場所それぞれが、前記復帰キャッシュ手段のマッチす
るエントリから復帰命令の次の順次アドレスを読むため
に、復帰命令アドレスの一部を記憶し、前記先取り命令
アドレスの別の部分を前記タグ・フィールドに適用され
る連想アドレスとして使用することによって内部アドレ
ス指定フィールドとして働くタグ・フィールド(72)
をさらに含む上記(9)記載の装置。 (13)前記復帰キャッシュ手段(26)中の前記複数
の記憶場所それぞれが、前記記憶場所が復帰命令の次の
順次アドレスを含むことを示すために使用される有効フ
ラグ・フィールド(71)をさらに含み、そのエントリ
からの次の順次命令アドレスを、復帰キャッシュ手段に
対して並列にアクセスされる前記分岐復帰テーブル手段
(22)中のエントリからの分岐標的アドレスの代わり
に次の先取りアドレスとして選択するための、前記マッ
チするエントリの前記有効フラグ・フィールドに応答す
る手段(81、78)を含む上記(9)記載の装置。 (14)前記キャッシュ更新手段(32)が、前記復帰
命令の命令アドレスを命令長だけインクリメントするこ
とによって前記分岐履歴テーブル(22)の中でアクセ
スされる、またはそれに入力される復帰命令の次の順次
アドレスを生成する加算器(94、131)を含み、前
記復帰キャッシュ手段(26)中の前記呼び出し標的ア
ドレス・フィールド(74)の探索を実行して、更新す
べき次の順次命令アドレスを位置づけるための手段(9
1、93、100)をさらに含む上記(2)および(1
1)記載の装置。 (15)前記キャッシュ更新手段(32)が、前記復帰
命令の命令アドレスを所定の値だけさらにインクリメン
トすることによって前記分岐履歴テーブルの中でアクセ
スされる、またはそれに入力される復帰命令の次の順次
アドレスを生成する第二の加算器(132)を含み、前
記復帰キャッシュ手段(120)中の前記複数の記憶場
所それぞれが、前記さらにインクリメントされた次の順
次アドレスの使用に割り当てられたタグ・フィールド
(125)をさらに含み、前記キャッシュ更新手段(3
2)が、前記復帰キャッシュ手段(120)中のマッチ
するエントリの前記復帰アドレス・フィールド(14
1)に入力されるための、前記さらにインクリメントさ
れた次の順次アドレスを選択するための、前記復帰キャ
ッシュ手段中の前記マッチするエントリの前記タグ・フ
ィールド(125)に応答する手段(133〜137)
を含む上記(8)および(14)記載の装置。 (16)他のタイプの分岐の他に、サブルーチンの呼び
出しと、サブルーチンが実行されたのちの、次の順次ア
ドレスへの復帰とを実行する分岐命令を含む命令(1
1、11′)のシーケンスによって制御されるプロセッ
サを有するコンピュータにおいて、サブルーチン呼び出
しおよび復帰動作を実行する方法であって、各呼び出し
命令が呼び出し標的アドレスを含み、各復帰命令が復帰
アドレスを含み、前記コンピュータが、先取り命令スト
リームを生成するための手段を含む命令先取り機構を有
し、前記先取り命令ストリーム中で見つかる複数の分岐
命令の標的アドレスを記憶するための分岐履歴テーブル
(22)を含み、前記方法が、(a)潜在呼び出し命令
タグおよび復帰命令タグ(37、39)を含む分岐タイ
プ情報を分岐命令エントリごとに前記分岐履歴テーブル
に記憶するステップと、(b)先取り命令ストリーム中
で潜在呼び出し命令を検出し、検出した呼び出し命令
(24、50)の呼び出し標的アドレスおよび次の順次
命令アドレスを含むアドレス対を記憶するステップと、
(c)先取り命令ストリーム中で続いて検出される各潜
在復帰命令に応答して、前記記憶したアドレス対の次の
順次命令に対して探索を実行して、探索(54、62、
65、66)によって対応するアドレスが見つかるなら
ば、その命令を復帰として識別するステップと、(d)
マッチするアドレスを含むアドレス対を復帰キャッシュ
(26)に記憶し、前記識別した復帰命令のエントリ中
の復帰タグ(39)を前記分岐履歴テーブルに記憶する
ステップと、(e)各先取りされた命令のアドレスで前
記分岐履歴テーブルと前記復帰キャッシュとに同時にア
クセスして前記命令を復帰として判定し、前記復帰キャ
ッシュからの次の順次アドレスを、前記分岐履歴テーブ
ル(28、30)からの分岐標的アドレスではなく分岐
標的アドレスとして選択するステップと、を含むことを
特徴とする方法。 (17)対応する標的アドレスを有するエントリを求め
て前記復帰キャッシュを探索し、前記エントリ中の次の
順次命令アドレスを前記分岐命令(32)の次の順次ア
ドレスによって置換することにより、前記命令ストリー
ム中の分岐命令に応答して前記復帰キャッシュを更新す
るステップをさらに含む上記(16)記載の方法。 (18)前記分岐履歴テーブル(22)中の各エントリ
が、潜在呼び出し命令の処理の間に分岐評価装置(2
0)によって提供される潜在呼び出しタグを記憶するた
めの第一の1ビット・フィールド(37)と、前記復帰
命令識別ステップによって提供される復帰タグを記憶す
るための第二の1ビット・フィールド(39)と、前記
潜在呼び出し命令の命令長を記憶するための第三のフィ
ールド(38)とを含む上記(16)記載の方法。 (19)前記ステップ(b)が、前記アドレス対を復帰
識別スタック(50)に記憶し、その記憶場所を、最新
のエントリが最古のエントリを上書きする円形の待ち行
列として動作させるステップをさらに含む上記(16)
記載の方法。 (20)前記ステップ(c)が、前記復帰識別スタック
(50)に記憶されたすべての次の順次アドレスに対し
て連想探索を実行するステップをさらに含む上記(1
6)記載の方法。 (21)前記ステップ(b)が、潜在呼び出し命令ごと
に、その潜在呼び出し命令の命令アドレスを命令長の値
だけインクリメントすることによって次の順次アドレス
を生成するステップをさらに含む上記(16)記載の方
法。 (22)所定の値だけインクリメントされたのちの潜在
呼び出し命令の次の順次アドレスを前記復帰識別スタッ
ク(110)に記憶するステップをさらに含み、連想探
索を実行する前記ステップ(b)が、前記スタック中に
記憶されたすべてのインクリメントされた次の順次アド
レスに及ぶ上記(16)および(20)記載の方法。 (23)前記ステップ(e)が、同じ命令アドレス(7
6)を使用することによって並列かつ同じ機械サイクル
中で前記分岐履歴テーブル(22)および前記復帰キャ
ッシュ(26)にアクセスするステップと、両方(84
および87)の出力に対して並列に選択ステップを適用
するステップとをさらに含む上記(16)記載の方法。 (24)前記ステップ(e)が、前記復帰キャッシュ手
段に記憶されたすべての呼び出し標的アドレスに対して
連想探索を実行して、マッチする呼び出し標的アドレス
およびその関連の次の順次アドレスをアドレス更新ステ
ップのために位置づけるステップをさらに含む上記(2
3)記載の方法。 (25)復帰キャッシュ(26)中の前記記憶場所それ
ぞれが、識別された復帰命令のアドレスの一部を記憶す
ることによって内部アドレス指定フィールドとして働く
タグ・フィールド(72)をさらに含み、前記ステップ
(e)が、先取り命令アドレスの一部を使用して前記復
帰キャッシュの特定のブロックにアクセスすることによ
って前記復帰キャッシュにアクセスし、同じ先取り命令
アドレスの別の部分を連想アドレスとしてアクセスされ
るブロック中のすべてのタグ・フィールド(72)に適
用し、前記復帰キャッシュ中のマッチするタグ・フィー
ルドのエントリから復帰命令の次の順次アドレスを先取
りするステップを含む上記(23)記載の方法。 (26)前記復帰キャッシュ(26)中の前記記憶場所
それぞれが、前記記憶場所が復帰命令の次の順次アドレ
スを含むことを示す有効エントリ・フラッグ(71)を
さらに含み、前記ステップ(e)の前記選択ステップ
が、マッチするエントリの有効エントリ・フラッグに応
答して、前記分岐履歴テーブル(22)からの前記分岐
標的アドレスを使用する代わりに、そのエントリから次
の順次命令アドレスを次の先取りアドレスとして選択す
る上記(23)記載の方法。 (27)前記キャッシュ更新ステップが、前記呼び出し
命令の命令アドレスを命令長だけインクリメントするこ
とにより、前記分岐履歴テーブル中でアクセスされる、
またはそれに入力される呼び出し命令の次の順次アドレ
スを生成するステップと、前記復帰キャッシュ中に記憶
された呼び出し標的アドレスの探索を実行して、更新す
べき次の順次命令アドレスを位置づけるステップとを含
む上記(17)記載の方法。 (28)前記キャッシュ更新ステップが、前記呼び出し
命令の命令アドレスを所定の値だけさらにインクリメン
トすることにより、前記分岐履歴テーブル(22)中で
アクセスされる、またはそれに入力される呼び出し命令
の次の順次アドレスを生成するステップと、前記さらに
インクリメントされた次の順次アドレスの使用に割り当
てられたタグ(TSI)を前記復帰キャッシュ(12
0)の前記記憶場所に記憶するステップと、マッチする
エントリ中のタグ(TSI)に応答して、前記復帰キャ
ッシュ(120)中のマッチするエントリの前記復帰ア
ドレス・フィールド(141)に入力するためのさらに
インクリメントされた次の順次アドレスを選択するステ
ップとをさらに含む上記(27)記載の方法。 (29)サブルーチンが2個以上の復帰命令を含むなら
ば、マッチするエントリを有するアドレス対が見つから
なくなるまで、前記記憶されたアドレス対の次の順次命
令に対する探索を実行する前記ステップ(c)を繰り返
し、前記ステップ(c)でマッチが見つかるごとに前記
ステップ(d)を繰り返す上記(16)記載の方法。
【図面の簡単な説明】
【図1】本発明の実施態様の概略ブロック図である。
【図2】サブルーチンを繰り返し使用する命令シーケン
スを表す図である。
【図3】本発明にしたがって処理される多数の出口を有
するサブルーチンを表す図である。
【図4】図3に表すタイプのサブルーチンを含む記憶装
置のレイアウトを示す図である。
【図5】図1の実施態様のより詳細なブロック図であ
る。
【図6】図5の実施態様で使用される分岐履歴テーブル
のブロック図である。
【図7】図5の実施態様の拡張部のブロック図である。
【図8】図7の実施態様で使用される変形復帰スタック
のブロック図である。
【図9】図7の実施態様で使用される変形復帰キャッシ
ュのブロック図である。
【符号の説明】
20 分岐評価装置 22 分岐履歴テーブル 24 復帰識別装置 26 復帰キャッシュ 28 命令アドレス・レジスタ 30 セレクタ 32 キャッシュ更新回路
───────────────────────────────────────────────────── フロントページの続き (72)発明者 オリバー・ラウプ ドイツ連邦共和国デー−70771 ラインフ ェルデン、 ツルペンシュトラッッセ 3 (72)発明者 ハンス−ヴェルナー・タスト ドイツ連邦共和国デー−71093 ヴァイ ル・イー・シュ、 ハルトマンシュトラッ セ 66

Claims (29)

    【特許請求の範囲】
  1. 【請求項1】他のタイプの分岐の他に、サブルーチンの
    呼び出しと、サブルーチンが実行されたのちの、次の順
    次アドレスへの復帰とを実行する分岐命令を含む命令
    (11、11′)のシーケンスによって制御されるプロ
    セッサを有するコンピュータにおいて、サブルーチン呼
    び出しおよび復帰動作を実行するための装置であって、
    各呼び出し命令が呼び出し標的アドレスを含み、各復帰
    命令が復帰アドレスを含み、前記コンピュータが、先取
    り命令ストリームを生成するための手段(28)を含む
    命令先取り機構を有し、前記先取り命令ストリーム中で
    見つかる複数の分岐命令の標的アドレスを記憶するため
    の分岐履歴テーブル(22)を含み、前記装置が、 (a)潜在サブルーチン呼び出し命令タグおよびサブル
    ーチン復帰命令タグを含む分岐タイプ情報を分岐命令エ
    ントリごとに記憶するための、前記分岐履歴テーブル
    (22)中の記憶手段(37、39)と、 (b)前記先取り命令ストリーム中で潜在呼び出し命令
    が見つかるごとに、前記潜在呼び出し命令の呼び出し標
    的アドレスおよび次の順次命令アドレスを含むエントリ
    を記憶するための復帰識別手段(24)であって、続い
    て検出される分岐命令が復帰命令であるかどうかを判定
    するための、続いて検出される分岐命令に応答する手段
    (54、62)を含む復帰識別手段(24)と、 (c)分岐履歴テーブル手段(22)に対して並列に配
    置された復帰キャッシュ手段(26)と、 前記識別された復帰命令の前記エントリ中の復帰タグを
    前記分岐履歴テーブルの中に記憶し、前記識別された復
    帰命令の呼び出し標的アドレスおよび次の順次命令アド
    レスが転送される前記復帰キャッシュ中にエントリを生
    成するための、前記復帰識別手段の復帰命令識別信号に
    応答する手段(66)と、 (d)前記分岐履歴テーブルからの復帰タグに応答し
    て、前記復帰キャッシュから前記次の先取りアドレスを
    選択するための、各先取りされた命令のアドレスで前記
    分岐履歴テーブルと前記復帰キャッシュとに同時にアク
    セスするためのアクセスおよびセレクタ手段(28、3
    0)と、を含むことを特徴とする装置。
  2. 【請求項2】前記分岐命令の標的アドレスに対応する標
    的アドレスを有するエントリを求めて前記復帰キャッシ
    ュ手段(26)中で探索動作を実行し、見つかったエン
    トリ中の次の順次命令アドレスを前記分岐命令の次の順
    次命令アドレスによって置換するための、前記命令スト
    リーム中の分岐命令に応答して作用する復帰キャッシュ
    更新手段(32)をさらに含む請求項1記載の装置。
  3. 【請求項3】前記分岐履歴テーブル(22)の各エント
    リが、潜在呼び出し命令の処理の際に分岐評価装置(2
    0)によって提供される潜在呼び出しタグを記憶するた
    めの第一の1ビット・フィールド(37)と、復帰命令
    を識別したのち前記復帰識別手段(24)によって提供
    される復帰タグを記憶するための第二の1ビット・フィ
    ールド(39)と、前記潜在呼び出し命令の命令長を記
    憶するための第三のフィールド(38)とを含む請求項
    1記載の装置。
  4. 【請求項4】前記復帰識別手段(24)が、複数の記憶
    場所を有する復帰識別スタック手段(50)を含み、前
    記複数の記憶場所それぞれが、アドレス対を記憶するた
    めの第一のフィールド(51、111)および第二のフ
    ィールド(52、112)を含み、各アドレス対が、潜
    在呼び出し命令の次の順次アドレスと、その同じ潜在呼
    び出し命令の呼び出し標的命令とを含む請求項1記載の
    装置。
  5. 【請求項5】前記復帰識別スタック手段(50)中の前
    記複数の記憶場所が、最新のエントリが最古のエントリ
    を上書きする円形の待ち行列として動作する請求項4記
    載の装置。
  6. 【請求項6】前記復帰識別スタック手段(50)中の前
    記複数の記憶場所が、前記復帰識別スタック手段に記憶
    されたすべての次の順次アドレスに対する連想探索を可
    能にするための、その第一のフィールド(51、11
    1)に関する内部アドレス指定能力を含む請求項4記載
    の装置。
  7. 【請求項7】前記復帰識別手段(24)が、潜在呼び出
    し命令ごとに、その潜在呼び出し命令の命令アドレスを
    命令長の値だけインクリメントすることによって次の順
    次アドレスを生成する加算器(58)を含む請求項1記
    載の装置。
  8. 【請求項8】前記復帰識別スタック手段(110)の前
    記複数の記憶場所それぞれが、所定の値だけインクリメ
    ントされたのちの潜在呼び出し命令の次の順次アドレス
    をさらに記憶するための第三のフィールド(113)を
    含み、前記スタック手段の前記内部アドレス指定能力が
    前記第三のフィールド(113)に及んで、復帰識別ス
    タック手段(110)に記憶されたすべてのそのような
    インクリメントされた次の順次アドレスに対する連想探
    索を可能にする請求項4および6記載の装置。
  9. 【請求項9】同じ命令アドレス指定(76)を適用し、
    前記セレクタ手段(30)に対して出力(84および8
    7)を並列に提供することにより、前記分岐履歴テーブ
    ル手段(22)と前記復帰キャッシュ手段(26)とが
    同じ機械サイクルで並列にアクセスされるように配置さ
    れている請求項1記載の装置。
  10. 【請求項10】前記復帰キャッシュ手段(26)が複数
    の記憶場所を含み、記憶場所それぞれが、前記復帰識別
    手段(24)から受けた次の順次アドレスおよび呼び出
    し標的アドレスを含むアドレス対を記憶するための第一
    のフィールド(73)および第二のフィールド(74)
    を含む請求項1記載の装置。
  11. 【請求項11】前記復帰キャッシュ手段(26)中の前
    記複数の記憶場所が、前記復帰キャッシュ手段に記憶さ
    れたすべての呼び出し標的アドレスに対して連想探索を
    可能にして、前記キャッシュ更新手段(32)のアドレ
    ス更新処理のために、マッチする呼び出し標的アドレス
    およびその関連する次の順次アドレスを位置づけるため
    の、第二のフィールド(74)の内部アドレス指定能力
    を含む請求項10記載の装置。
  12. 【請求項12】前記復帰キャッシュ手段(26)中の前
    記複数の記憶場所がブロックに細分され、各ブロックが
    先取り命令アドレスの一部によってアドレス指定され、
    前記記憶場所それぞれが、前記復帰キャッシュ手段のマ
    ッチするエントリから復帰命令の次の順次アドレスを読
    むために、復帰命令アドレスの一部を記憶し、前記先取
    り命令アドレスの別の部分を前記タグ・フィールドに適
    用される連想アドレスとして使用することによって内部
    アドレス指定フィールドとして働くタグ・フィールド
    (72)をさらに含む請求項9記載の装置。
  13. 【請求項13】前記復帰キャッシュ手段(26)中の前
    記複数の記憶場所それぞれが、前記記憶場所が復帰命令
    の次の順次アドレスを含むことを示すために使用される
    有効フラグ・フィールド(71)をさらに含み、そのエ
    ントリからの次の順次命令アドレスを、復帰キャッシュ
    手段に対して並列にアクセスされる前記分岐復帰テーブ
    ル手段(22)中のエントリからの分岐標的アドレスの
    代わりに次の先取りアドレスとして選択するための、前
    記マッチするエントリの前記有効フラグ・フィールドに
    応答する手段(81、78)を含む請求項9記載の装
    置。
  14. 【請求項14】前記キャッシュ更新手段(32)が、前
    記復帰命令の命令アドレスを命令長だけインクリメント
    することによって前記分岐履歴テーブル(22)の中で
    アクセスされる、またはそれに入力される復帰命令の次
    の順次アドレスを生成する加算器(94、131)を含
    み、前記復帰キャッシュ手段(26)中の前記呼び出し
    標的アドレス・フィールド(74)の探索を実行して、
    更新すべき次の順次命令アドレスを位置づけるための手
    段(91、93、100)をさらに含む請求項2および
    11記載の装置。
  15. 【請求項15】前記キャッシュ更新手段(32)が、前
    記復帰命令の命令アドレスを所定の値だけさらにインク
    リメントすることによって前記分岐履歴テーブルの中で
    アクセスされる、またはそれに入力される復帰命令の次
    の順次アドレスを生成する第二の加算器(132)を含
    み、前記復帰キャッシュ手段(120)中の前記複数の
    記憶場所それぞれが、前記さらにインクリメントされた
    次の順次アドレスの使用に割り当てられたタグ・フィー
    ルド(125)をさらに含み、前記キャッシュ更新手段
    (32)が、前記復帰キャッシュ手段(120)中のマ
    ッチするエントリの前記復帰アドレス・フィールド(1
    41)に入力されるための、前記さらにインクリメント
    された次の順次アドレスを選択するための、前記復帰キ
    ャッシュ手段中の前記マッチするエントリの前記タグ・
    フィールド(125)に応答する手段(133〜13
    7)を含む請求項8および14記載の装置。
  16. 【請求項16】他のタイプの分岐の他に、サブルーチン
    の呼び出しと、サブルーチンが実行されたのちの、次の
    順次アドレスへの復帰とを実行する分岐命令を含む命令
    (11、11′)のシーケンスによって制御されるプロ
    セッサを有するコンピュータにおいて、サブルーチン呼
    び出しおよび復帰動作を実行する方法であって、各呼び
    出し命令が呼び出し標的アドレスを含み、各復帰命令が
    復帰アドレスを含み、前記コンピュータが、先取り命令
    ストリームを生成するための手段を含む命令先取り機構
    を有し、前記先取り命令ストリーム中で見つかる複数の
    分岐命令の標的アドレスを記憶するための分岐履歴テー
    ブル(22)を含み、前記方法が、 (a)潜在呼び出し命令タグおよび復帰命令タグ(3
    7、39)を含む分岐タイプ情報を分岐命令エントリご
    とに前記分岐履歴テーブルに記憶するステップと、 (b)先取り命令ストリーム中で潜在呼び出し命令を検
    出し、検出した呼び出し命令(24、50)の呼び出し
    標的アドレスおよび次の順次命令アドレスを含むアドレ
    ス対を記憶するステップと、 (c)先取り命令ストリーム中で続いて検出される各潜
    在復帰命令に応答して、前記記憶したアドレス対の次の
    順次命令に対して探索を実行して、探索(54、62、
    65、66)によって対応するアドレスが見つかるなら
    ば、その命令を復帰として識別するステップと、 (d)マッチするアドレスを含むアドレス対を復帰キャ
    ッシュ(26)に記憶し、前記識別した復帰命令のエン
    トリ中の復帰タグ(39)を前記分岐履歴テーブルに記
    憶するステップと、 (e)各先取りされた命令のアドレスで前記分岐履歴テ
    ーブルと前記復帰キャッシュとに同時にアクセスして前
    記命令を復帰として判定し、前記復帰キャッシュからの
    次の順次アドレスを、前記分岐履歴テーブル(28、3
    0)からの分岐標的アドレスではなく分岐標的アドレス
    として選択するステップと、を含むことを特徴とする方
    法。
  17. 【請求項17】対応する標的アドレスを有するエントリ
    を求めて前記復帰キャッシュを探索し、前記エントリ中
    の次の順次命令アドレスを前記分岐命令(32)の次の
    順次アドレスによって置換することにより、前記命令ス
    トリーム中の分岐命令に応答して前記復帰キャッシュを
    更新するステップをさらに含む請求項16記載の方法。
  18. 【請求項18】前記分岐履歴テーブル(22)中の各エ
    ントリが、潜在呼び出し命令の処理の間に分岐評価装置
    (20)によって提供される潜在呼び出しタグを記憶す
    るための第一の1ビット・フィールド(37)と、前記
    復帰命令識別ステップによって提供される復帰タグを記
    憶するための第二の1ビット・フィールド(39)と、
    前記潜在呼び出し命令の命令長を記憶するための第三の
    フィールド(38)とを含む請求項16記載の方法。
  19. 【請求項19】前記ステップ(b)が、前記アドレス対
    を復帰識別スタック(50)に記憶し、その記憶場所
    を、最新のエントリが最古のエントリを上書きする円形
    の待ち行列として動作させるステップをさらに含む請求
    項16記載の方法。
  20. 【請求項20】前記ステップ(c)が、前記復帰識別ス
    タック(50)に記憶されたすべての次の順次アドレス
    に対して連想探索を実行するステップをさらに含む請求
    項16記載の方法。
  21. 【請求項21】前記ステップ(b)が、潜在呼び出し命
    令ごとに、その潜在呼び出し命令の命令アドレスを命令
    長の値だけインクリメントすることによって次の順次ア
    ドレスを生成するステップをさらに含む請求項16記載
    の方法。
  22. 【請求項22】所定の値だけインクリメントされたのち
    の潜在呼び出し命令の次の順次アドレスを前記復帰識別
    スタック(110)に記憶するステップをさらに含み、
    連想探索を実行する前記ステップ(b)が、前記スタッ
    ク中に記憶されたすべてのインクリメントされた次の順
    次アドレスに及ぶ請求項16および20記載の方法。
  23. 【請求項23】前記ステップ(e)が、同じ命令アドレ
    ス(76)を使用することによって並列かつ同じ機械サ
    イクル中で前記分岐履歴テーブル(22)および前記復
    帰キャッシュ(26)にアクセスするステップと、両方
    (84および87)の出力に対して並列に選択ステップ
    を適用するステップとをさらに含む請求項16記載の方
    法。
  24. 【請求項24】前記ステップ(e)が、前記復帰キャッ
    シュ手段に記憶されたすべての呼び出し標的アドレスに
    対して連想探索を実行して、マッチする呼び出し標的ア
    ドレスおよびその関連の次の順次アドレスをアドレス更
    新ステップのために位置づけるステップをさらに含む請
    求項23記載の方法。
  25. 【請求項25】復帰キャッシュ(26)中の前記記憶場
    所それぞれが、識別された復帰命令のアドレスの一部を
    記憶することによって内部アドレス指定フィールドとし
    て働くタグ・フィールド(72)をさらに含み、前記ス
    テップ(e)が、先取り命令アドレスの一部を使用して
    前記復帰キャッシュの特定のブロックにアクセスするこ
    とによって前記復帰キャッシュにアクセスし、同じ先取
    り命令アドレスの別の部分を連想アドレスとしてアクセ
    スされるブロック中のすべてのタグ・フィールド(7
    2)に適用し、前記復帰キャッシュ中のマッチするタグ
    ・フィールドのエントリから復帰命令の次の順次アドレ
    スを先取りするステップを含む請求項23記載の方法。
  26. 【請求項26】前記復帰キャッシュ(26)中の前記記
    憶場所それぞれが、前記記憶場所が復帰命令の次の順次
    アドレスを含むことを示す有効エントリ・フラッグ(7
    1)をさらに含み、前記ステップ(e)の前記選択ステ
    ップが、マッチするエントリの有効エントリ・フラッグ
    に応答して、前記分岐履歴テーブル(22)からの前記
    分岐標的アドレスを使用する代わりに、そのエントリか
    ら次の順次命令アドレスを次の先取りアドレスとして選
    択する請求項23記載の方法。
  27. 【請求項27】前記キャッシュ更新ステップが、前記呼
    び出し命令の命令アドレスを命令長だけインクリメント
    することにより、前記分岐履歴テーブル中でアクセスさ
    れる、またはそれに入力される呼び出し命令の次の順次
    アドレスを生成するステップと、前記復帰キャッシュ中
    に記憶された呼び出し標的アドレスの探索を実行して、
    更新すべき次の順次命令アドレスを位置づけるステップ
    とを含む請求項17記載の方法。
  28. 【請求項28】前記キャッシュ更新ステップが、前記呼
    び出し命令の命令アドレスを所定の値だけさらにインク
    リメントすることにより、前記分岐履歴テーブル(2
    2)中でアクセスされる、またはそれに入力される呼び
    出し命令の次の順次アドレスを生成するステップと、前
    記さらにインクリメントされた次の順次アドレスの使用
    に割り当てられたタグ(TSI)を前記復帰キャッシュ
    (120)の前記記憶場所に記憶するステップと、マッ
    チするエントリ中のタグ(TSI)に応答して、前記復
    帰キャッシュ(120)中のマッチするエントリの前記
    復帰アドレス・フィールド(141)に入力するための
    さらにインクリメントされた次の順次アドレスを選択す
    るステップとをさらに含む請求項27記載の方法。
  29. 【請求項29】サブルーチンが2個以上の復帰命令を含
    むならば、マッチするエントリを有するアドレス対が見
    つからなくなるまで、前記記憶されたアドレス対の次の
    順次命令に対する探索を実行する前記ステップ(c)を
    繰り返し、前記ステップ(c)でマッチが見つかるごと
    に前記ステップ(d)を繰り返す請求項16記載の方
    法。
JP11009258A 1998-01-23 1999-01-18 サブル―チン呼び出しおよび復帰動作を実行するための装置および方法 Expired - Fee Related JP3004013B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP98101147 1998-01-23
DE98101147.1 1998-01-23

Publications (2)

Publication Number Publication Date
JPH11259298A true JPH11259298A (ja) 1999-09-24
JP3004013B2 JP3004013B2 (ja) 2000-01-31

Family

ID=8231299

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11009258A Expired - Fee Related JP3004013B2 (ja) 1998-01-23 1999-01-18 サブル―チン呼び出しおよび復帰動作を実行するための装置および方法

Country Status (3)

Country Link
US (1) US5974543A (ja)
JP (1) JP3004013B2 (ja)
DE (1) DE19855806A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010511251A (ja) * 2006-11-28 2010-04-08 クゥアルコム・インコーポレイテッド サブルーチン呼び出しを認識(recognize)する方法及び装置
US7757071B2 (en) 2004-07-29 2010-07-13 Fujitsu Limited Branch predicting apparatus and branch predicting method

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6334184B1 (en) * 1998-03-24 2001-12-25 International Business Machines Corporation Processor and method of fetching an instruction that select one of a plurality of decoded fetch addresses generated in parallel to form a memory request
JP3513038B2 (ja) * 1998-12-10 2004-03-31 富士通株式会社 命令フェッチ制御装置
JP3723020B2 (ja) * 1999-09-30 2005-12-07 富士通株式会社 分岐履歴情報の書き込み制御装置及びその方法
JP2001273137A (ja) * 2000-03-28 2001-10-05 Toshiba Corp マイクロプロセッサ
US6895498B2 (en) * 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US7165168B2 (en) * 2003-01-14 2007-01-16 Ip-First, Llc Microprocessor with branch target address cache update queue
US7200740B2 (en) * 2001-05-04 2007-04-03 Ip-First, Llc Apparatus and method for speculatively performing a return instruction in a microprocessor
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US7134005B2 (en) * 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US20020194462A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line
US6823444B1 (en) * 2001-07-03 2004-11-23 Ip-First, Llc Apparatus and method for selectively accessing disparate instruction buffer stages based on branch target address cache hit and instruction stage wrap
US7234045B2 (en) * 2001-07-03 2007-06-19 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7162619B2 (en) * 2001-07-03 2007-01-09 Ip-First, Llc Apparatus and method for densely packing a branch instruction predicted by a branch target address cache and associated target instructions into a byte-wide instruction buffer
US7203824B2 (en) * 2001-07-03 2007-04-10 Ip-First, Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US6898699B2 (en) * 2001-12-21 2005-05-24 Intel Corporation Return address stack including speculative return address buffer with back pointers
US7159097B2 (en) * 2002-04-26 2007-01-02 Ip-First, Llc Apparatus and method for buffering instructions and late-generated related information using history of previous load/shifts
US7152154B2 (en) * 2003-01-16 2006-12-19 Ip-First, Llc. Apparatus and method for invalidation of redundant branch target address cache entries
US7143269B2 (en) * 2003-01-14 2006-11-28 Ip-First, Llc Apparatus and method for killing an instruction after loading the instruction into an instruction queue in a pipelined microprocessor
US7185186B2 (en) 2003-01-14 2007-02-27 Ip-First, Llc Apparatus and method for resolving deadlock fetch conditions involving branch target address cache
US7178010B2 (en) * 2003-01-16 2007-02-13 Ip-First, Llc Method and apparatus for correcting an internal call/return stack in a microprocessor that detects from multiple pipeline stages incorrect speculative update of the call/return stack
US20050055544A1 (en) * 2003-07-30 2005-03-10 International Business Machines Corporation Central processing unit having a module for processing of function calls
US7237098B2 (en) 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US7243219B2 (en) * 2003-12-24 2007-07-10 Intel Corporation Predicting instruction branches with a plurality of global predictors using varying amounts of history instruction
US20060095752A1 (en) * 2004-08-28 2006-05-04 Min-Cheng Kao [method for return instruction identification and associated method for return target pointer prediction]
JP2007041837A (ja) * 2005-08-03 2007-02-15 Nec Electronics Corp 命令プリフェッチ装置及び命令プリフェッチ方法
US20080126771A1 (en) * 2006-07-25 2008-05-29 Lei Chen Branch Target Extension for an Instruction Cache
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
JP2010049656A (ja) * 2008-08-25 2010-03-04 Toshiba Storage Device Corp プロセッサ、プログラム及び記憶装置
US8402541B2 (en) * 2009-03-12 2013-03-19 Microsoft Corporation Proactive exploit detection
US10042776B2 (en) * 2012-11-20 2018-08-07 Arm Limited Prefetching based upon return addresses
GB2509830B (en) * 2013-02-11 2014-12-24 Imagination Tech Ltd Speculative load issue
US10108424B2 (en) * 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9489204B2 (en) * 2013-03-15 2016-11-08 Qualcomm Incorporated Method and apparatus for precalculating a direct branch partial target address during a misprediction correction process
US10289604B2 (en) * 2014-08-07 2019-05-14 Wisconsin Alumni Research Foundation Memory processing core architecture
US10908902B2 (en) * 2016-05-26 2021-02-02 International Business Machines Corporation Distance based branch prediction and detection of potential call and potential return instructions
US11099849B2 (en) * 2016-09-01 2021-08-24 Oracle International Corporation Method for reducing fetch cycles for return-type instructions
JP7486893B2 (ja) * 2020-05-18 2024-05-20 株式会社ディスコ ブレード交換装置及びブレード交換装置の調整方法
US11663126B1 (en) 2022-02-23 2023-05-30 International Business Machines Corporation Return address table branch predictor

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4399507A (en) * 1981-06-30 1983-08-16 Ibm Corporation Instruction address stack in the data memory of an instruction-pipelined processor
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
US5136696A (en) * 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5093778A (en) * 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache
US5276882A (en) * 1990-07-27 1994-01-04 International Business Machines Corp. Subroutine return through branch history table
US5623614A (en) * 1993-09-17 1997-04-22 Advanced Micro Devices, Inc. Branch prediction cache with multiple entries for returns having multiple callers
US5604877A (en) * 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for resolving return from subroutine instructions in a computer processor
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5850543A (en) * 1996-10-30 1998-12-15 Texas Instruments Incorporated Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7757071B2 (en) 2004-07-29 2010-07-13 Fujitsu Limited Branch predicting apparatus and branch predicting method
JP2010511251A (ja) * 2006-11-28 2010-04-08 クゥアルコム・インコーポレイテッド サブルーチン呼び出しを認識(recognize)する方法及び装置

Also Published As

Publication number Publication date
DE19855806A1 (de) 1999-07-29
JP3004013B2 (ja) 2000-01-31
US5974543A (en) 1999-10-26

Similar Documents

Publication Publication Date Title
JP3004013B2 (ja) サブル―チン呼び出しおよび復帰動作を実行するための装置および方法
US5606682A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
US5530825A (en) Data processor with branch target address cache and method of operation
US5805877A (en) Data processor with branch target address cache and method of operation
EP0135844B1 (en) A data processor with a branch target instruction storage
KR100212204B1 (ko) 계산기 시스템 내부에서 명령을 처리하는 장치
US5276882A (en) Subroutine return through branch history table
JP3542021B2 (ja) セット予測によりセット連想キャッシュの遅延を少なくする方法及び装置
US4466061A (en) Concurrent processing elements for using dependency free code
JP2746549B2 (ja) コンピュータシステム及びその動作方法
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
US5297281A (en) Multiple sequence processor system
US6185669B1 (en) System for fetching mapped branch target instructions of optimized code placed into a trace memory
EP0148478A2 (en) A data processor with control of the significant bit lenghts of general purpose registers
JPH10198563A (ja) マイクロプロセッサ内の動的にロード可能なパターン履歴表
JPH0557617B2 (ja)
JPH0564815B2 (ja)
JPH08292886A (ja) ノン・フォルティング・ロード命令をインプリメントする方法及び装置
JP3486690B2 (ja) パイプライン方式プロセッサ
JPH1040104A (ja) 分岐命令の結果予測装置及び方法
US8285976B2 (en) Method and apparatus for predicting branches using a meta predictor
US9086886B2 (en) Method and apparatus to limit millicode routine end branch prediction
EP0550289A2 (en) A mechanism to detect stores into the instruction stream
US7472264B2 (en) Predicting a jump target based on a program counter and state information for a process
US7085915B1 (en) Programmable prefetching of instructions for a processor executing a non-procedural program

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19991102

LAPS Cancellation because of no payment of annual fees