JP3335379B2 - ブランチ・ヒストリーを持つ命令実行処理装置 - Google Patents

ブランチ・ヒストリーを持つ命令実行処理装置

Info

Publication number
JP3335379B2
JP3335379B2 JP23988992A JP23988992A JP3335379B2 JP 3335379 B2 JP3335379 B2 JP 3335379B2 JP 23988992 A JP23988992 A JP 23988992A JP 23988992 A JP23988992 A JP 23988992A JP 3335379 B2 JP3335379 B2 JP 3335379B2
Authority
JP
Japan
Prior art keywords
instruction
branch
address
history
fetch
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
JP23988992A
Other languages
English (en)
Other versions
JPH0689173A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP23988992A priority Critical patent/JP3335379B2/ja
Publication of JPH0689173A publication Critical patent/JPH0689173A/ja
Application granted granted Critical
Publication of JP3335379B2 publication Critical patent/JP3335379B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ブランチ・ヒストリー
を持つ命令実行処理装置に関し、特に、ブランチ・ヒス
トリーの効率的な使用の実現を図るブランチ・ヒストリ
ーを持つ命令実行処理装置に関する。
【0002】最近、分岐命令の命令アドレスと、分岐先
命令の命令アドレスとの対応関係を登録管理するブラン
チ・ヒストリーを備えることで、分岐命令をパイプライ
ン処理の損失を伴うことなく実行する命令実行処理装置
が実用化されつつある。このような命令実行処理装置を
実用的なものにしていくためには、ブランチ・ヒストリ
ーの効率的な使用の実現を図る構成の構築が必要であ
る。
【0003】
【従来の技術】パイプライン処理方式を採用するCPU
等の命令実行処理装置では、1つの命令の実行の完了を
待たずに、実行サイクルが空けば次々と後続の命令を投
入してその実行を開始する。このことによって性能の増
大を図ってきた。しかしながら、先行する命令の実行結
果が後続の命令の実行に影響を与えることで、先行する
命令の実行を待たなければ後続の命令の実行が開始でき
ないようなことが起こる。このような場合、パイプライ
ンに乱れが生じて性能低下が引き起こされる。
【0004】例えば、命令の実行は必ずしもパイプライ
ンの1フローの処理では完了しないことがあり、このこ
とは、少なくとも命令語をデコードした後でないと判明
しない。また、命令語の大きさは、その論理仕様によっ
て複数の種類が規定される場合がある。
【0005】このような場合においては、ある命令語を
フェッチした後、次に実行される命令語の先頭アドレス
は、先にフェッチされた命令語をデコードした後でない
と判明しない。従って、次に実行すべき命令語のアドレ
スと、それがいつ必要になるかは、命令語をフェッチす
る時点では判明しない。このため、次に実行される命令
語のフェッチは、現在実行中の命令語をデコードした後
でないと実行することができず、高性能のパイプライン
の実現を困難にする。
【0006】分岐命令を実行する場合には更に状況が悪
いものとなる。すなわち、分岐が成立するか否かという
ことと、分岐先の命令アドレスは、分岐命令を実行した
後でないと判明しないため、上記で述べた命令語のデコ
ードよりも更に後のサイクルでないと次に実行される命
令語のフェッチが行えないことになる。
【0007】この分岐命令の問題点の解決を図るため
に、最近、過去に実行した分岐命令の命令アドレスと、
その分岐先命令の命令アドレスとの対応関係を登録管理
するブランチ・ヒストリーを備える構成を採って、過去
に実行した分岐命令が再び現れるときには、このブラン
チ・ヒストリーから分岐先の命令アドレスを索引してい
くことで、分岐先命令をできるだけ早く命令実行パイプ
ラインに投入していくという構成を採るようになってき
た。
【0008】
【発明が解決しようとする課題】このブランチ・ヒスト
リーを備えると、確かに、分岐命令に伴うパイプライン
処理の損失をなくすことができる可能性がある。しかし
ながら、従来技術では、具体的に、どのようにブランチ
・ヒストリーを構成して、どのように使用していくのか
ということが充分検討されていないという問題点があっ
た。
【0009】本発明はかかる事情に鑑みてなされたもの
であって、ブランチ・ヒストリーを持つ命令実行処理装
置にあって、そのブランチ・ヒストリーの効率的な使用
の実現を図れるようにする新たなブランチ・ヒストリー
を持つ命令実行処理装置の提供を目的とするものであ
る。
【0010】
【課題を解決するための手段】図1に本発明の原理構成
を図示する。1はキャッシュであって、主記憶データの
写しを管理するもの、2-i(i=0〜2)は3系列備え
られる命令アドレス生成回路であって、キャッシュ1を
索引するための命令アドレスを例えば8バイトずつ順次
加算することで生成するもの、3はブランチ・ヒストリ
ーであって、過去に実行した分岐命令の命令アドレス
と、分岐先命令の命令アドレスと、その分岐処理の成立
・不成立等の各種制御情報とを登録管理するものであ
る。
【0011】4は書込・読出制御回路であって、ブラン
チ・ヒストリー3への書込・読出処理を実行するもの、
5は読出情報検査加工回路であって、ブランチ・ヒスト
リー3から読み出されるデータの検査・加工処理を実行
するもの、6-i(i=0〜2)は3系列備えられる命令
バッファ回路であって、キャッシュ1から読み出される
命令列をバッファリングするもの、7は命令バッファ回
路6-iに対応付けて備えられるタグ管理回路であって、
読出情報検査加工回路5の出力情報をタグ情報として、
命令バッファ回路6-iにバッファリングされている命令
に対応付けて管理するものである。
【0012】8は選択回路であって、命令アドレス生成
回路2-iの出力するいずれかの命令アドレスか、タグ管
理回路7の出力する分岐先命令の命令アドレスのいずれ
かを選択して、キャッシュ1/ブランチ・ヒストリー3
に提示するもの、9はバッファ系列選択回路であって、
いずれかの命令バッファ回路6-iを選択して、その選択
した命令バッファ回路6-iのバッファリングする命令列
を命令実行パイプラインに投入するもの、10は命令供
給制御回路であって、タグ管理回路7の管理するタグ情
報に従ってバッファ系列選択回路9に対して選択指示信
号を送出するものである。
【0013】
【作用】本発明では、ブランチ・ヒストリー3のエント
リーを、命令アドレスに対応付けられて、命令フェッチ
長と命令語最小単位長とから規定される個数のブロック
で構成する。例えば、命令フェッチ長が8バイトで、命
令語最小単位長が2バイトである場合には、ブランチ・
ヒストリー3は4個のブロックを用意する。
【0014】そして、書込・読出制御回路4は、このブ
ランチ・ヒストリー3のブロック構成に合わせて、ブラ
ンチ・ヒストリー3にエントリーデータを登録する際に
は、分岐命令の命令アドレスの指すブロックのエントリ
ーにエントリーデータを登録する構成を採る。例えば、
分岐命令が奇数アドレスに配置されない場合には、書込
・読出制御回路4は、分岐命令のアドレスの内の最下位
ビットを除く下位2ビットの指すブロックにエントリー
データを登録する。
【0015】そして、書込・読出制御回路4は、このブ
ランチ・ヒストリー3のブロック構成に合わせて、ブラ
ンチ・ヒストリー3のエントリーデータを参照する際に
は、命令フェッチ領域に含まれる命令語最小単位長毎の
命令アドレスを索引アドレスとして、各ブロックのエン
トリーデータを参照する構成を採る。例えば、フェッチ
アドレスが「1008HEX 」である場合にあって、命令
フェッチ長が8バイトであり、命令語最小単位長が2バ
イトである場合には、「1008HEX 」、「100A
HEX 」、「100CHEX 」及び「100EHEX 」を索引
アドレスとして、各ブロックのエントリーデータを参照
する。
【0016】読出情報検査加工回路5は、書込・読出制
御回路4がエントリーデータを参照することで、ブラン
チ・ヒストリー3に分岐成立の分岐命令が登録されてい
ることが検索されるときには、その分岐命令の命令アド
レスとフェッチアドレスとの差分アドレス情報を算出し
て、この算出した差分アドレス情報を、分岐成立情報及
び分岐先アドレス情報とともにタグ情報としてタグ管理
回路7に出力する。このようにして、読出情報検査加工
回路5から分岐命令のタグ情報を受け取ると、タグ管理
回路7は、分岐先アドレス情報については、直ちに選択
回路8に出力していくとともに、差分アドレス情報及び
分岐成立情報については、命令バッファ回路6-iをシフ
トしていく分岐命令に対応付けて管理していく。
【0017】この構成を採るときにあって、命令フェッ
チの際に、ブランチ・ヒストリーにフェッチした命令が
分岐命令として登録されていることで、過去の分岐命令
の実行結果から分岐成立となる可能性が高いことを示唆
する履歴情報が得られる場合に、ブランチ・ヒストリー
から読み出される過去の履歴情報に基づく分岐先命令に
ついての命令フェッチ、及び、この分岐先命令に連続す
る命令列についての命令フェッチを、命令実行パイプラ
インにおける分岐命令の実行とは独立に、これよりも先
行して行い、かつ、その先行する命令フェッチで使用す
る命令語の保持手段の識別情報を、先行フェッチする
岐先命令に関連付けて管理する。
【0018】また、ブランチ・ヒストリーを、命令語の
置かれるアドレス境界に対応付けられ、かつ、命令フェ
ッチの際に1回のアクセスでフェッチされる単位長さを
包含する個数のブロックに分割して構成し、分岐命令の
実行結果に基づいてブランチ・ヒストリーへ情報を登録
する際には、分岐命令の命令アドレスの指す単一のブロ
ックのエントリーに登録するとともに、ブランチ・ヒス
トリーの情報を参照する際には、1回のアクセスでフェ
ッチされる単位長の全域に対応して、ブランチ・ヒスト
リーの複数ブロックを同時に参照する。
【0019】また、ブランチ・ヒストリーの1つ以上
ブロックから、フェッチした命令が分岐命令として登録
されていることで、分岐成立となる可能性が高いことを
示唆する履歴情報が得られる場合には、それらのブロッ
クの内の最も低いアドレスに対応付けられるブロックか
ら得られる履歴情報を採用した上で、命令フェッチの1
回のアクセスでフェッチされる単位長さの中のどの位置
に、この採用した履歴情報が登録されているのかについ
て示す情報を生成し、それを、先行フェッチする分岐先
令に関連付けて管理する。
【0020】また、命令実行パイプラインの先頭に位置
する命令解読ステージにおける命令のデコード結果によ
て、分岐命令であることが判明し、かつ、その分岐命
令について、そのステージで、命令フェッチの際に参照
されたブランチ・ヒストリーに登録される履歴情報に従
って、分岐成立となる可能性が高いことを示唆する履歴
情報が得られる場合に、令解読ステージでの処理の完
了に同期して、命令語の命令実行パイプラインへの投入
の制御を、それまで命令実行パイプラインに投入してい
た命令列を保持する命令語の保持手段に代えて、先行す
る命令フェッチで使用される保持手段に切り替えること
によって、ブランチ・ヒストリーによって過去の実行結
果から分岐成立となる可能性が高いことを示唆する履歴
情報が得られた分岐命令に続いて、その履歴情報によっ
て予測される分岐先の命令列を命令実行パイプラインへ
投入する。
【0021】このようにして、本発明によれば、ブラン
チ・ヒストリー3の効率的な使用の実現が図れるように
なるのである。
【0022】
【実施例】以下、CPUに適用した実施例に従って本発
明を詳細に説明する。これから説明する実施例のCPU
は、命令フェッチのパイプラインと、命令実行のパイプ
ラインという独立したパイプラインを備えている。ここ
で、この命令フェッチパイプラインは、IAサイクル
(命令フェッチアドレスの計算サイクル)、ITサイク
ル(アドレス変換サイクル)、IBサイクル(バッファ
の読出サイクル)、IRサイクル(命令実行パイプライ
ンとの同期サイクル)という「IAーITーIBーI
R」という4サイクル構成を採り、一方、命令実行パイ
プラインは、Dサイクル(命令の解読サイクル)、Aサ
イクル(主記憶オペランドのアドレス計算サイクル)、
Tサイクル(アドレス変換サイクル)、Bサイクル(オ
ペランドの読出サイクル)、Eサイクル(演算実行サイ
クル)、Wサイクル(演算結果格納サイクル)という
「DーAーTーBーEーW」という6サイクル構成を採
るものとする。
【0023】図2に、本発明により構成されるCPUの
全体構成を図示する。図中、図1で説明したものと同じ
ものについては同一の記号で示してある。1aは命令フ
ェッチパイプラインで索引されるキャッシュ、1bは命
令実行パイプラインで索引されるキャッシュ、11は命
令実行パイプラインに展開されて主記憶オペランドのア
ドレス計算を行うオペランドアドレス生成回路(以下、
OP EAGと略記することがある)、12は命令実行
パイプラインに展開されて演算処理を行う演算器、13
は命令実行パイプラインに展開されてタグを管理するタ
グ管理回路である。
【0024】図3に、図2に示す命令アドレス生成回路
2(以下、IF EAGと略記することがある)の周辺
回路の一実施例を図示する。この図の命令アドレス生成
回路2-i(i=0〜2)は、A系列(ID=00)、B系
列(ID=01)、C系列(ID=10)という3系列から
構成されている。従って、これに対応して、後述するよ
うに、命令バッファ回路6もA系列、B系列、C系列と
いう3系列から構成されることになる。
【0025】図中、IARAはA系列の命令アドレスレ
ジスタであって、命令アドレス生成回路2-0に命令アド
レスを提示する。IARBはB系列の命令アドレスレジ
スタであって、命令アドレス生成回路2-1に命令アドレ
スを提示する。IARCはC系列の命令アドレスレジス
タであって、命令アドレス生成回路2-2に命令アドレス
を提示する。
【0026】このIARAには、PSW(プログラム
・ステータス・ワード)から入るか、分岐命令の分岐
先命令フェッチを行うときに、OP EAGやIB
RHS TIARの値がIF EAGの出力として選択
されて入る。また、IARBやIARCには、上記の
場合に、命令フェッチの先頭アドレスが入る。ここで、
IB BRHS TIARとは、ブランチ・ヒストリー
3を索引して得られた分岐先の命令アドレスを保持する
命令フェッチパイプラインのIBサイクルのタグであ
る。
【0027】20-0はA系列の選択回路であって、IA
RAの保持する命令アドレスか、命令アドレス生成回路
2-0の生成する命令アドレスのいずれか一方を選択す
る。20-1はB系列の選択回路であって、IARBの保
持する命令アドレスか、命令アドレス生成回路2-1の生
成する命令アドレスのいずれか一方を選択する。20-2
はC系列の選択回路であって、IARCの保持する命令
アドレスか、命令アドレス生成回路2-2の生成する命令
アドレスのいずれか一方を選択する。
【0028】21は選択回路であって、選択回路20-i
の出力する命令アドレスか、命令実行パイプラインのオ
ペランドアドレス生成回路11の生成するオペランドア
ドレス(OP EAG)か、IB BRHS TIAR
のいずれかを選択して、キャッシュ1a/ブランチ・ヒ
ストリー3に渡していくとともに、選択した命令アドレ
スを対応のIARに戻していく。
【0029】命令アドレス生成回路2-iは、このフィー
ドバックされてくる命令アドレスと、例えば8バイトと
いうフェッチの命令長とを加算して、その命令列の次の
命令フェッチのための命令アドレスを生成していくこと
で、次々にフェッチのための命令アドレスを生成して、
キャッシュ1a/ブランチ・ヒストリー3に渡していく
よう処理することになる。
【0030】この図3の構成に従って、命令フェッチ
は、各系列のいずれかを選択した上で、場合によって異
なる以下のアドレスを用いて行われる。すなわち、その
1つは、作動状態になった最初の命令フェッチや、同じ
系列に対する2つ目以降の命令フェッチの場合で、この
場合には、PSWのセットした命令アドレスを起点とし
て、それに8バイトずつ加算していくことで求められる
命令アドレスを用いて命令フェッチが行われる。別の1
つは、分岐命令を実行してその分岐先のターゲット・フ
ェッチを行う場合で、この場合には、オペランドアドレ
ス生成回路11で生成された分岐先の命令アドレスを起
点として、それに8バイトずつ加算していくことで求め
られる命令アドレスを用いて命令フェッチが行われる。
更に別の1つは、先行する命令フェッチにおいてブラン
チ・ヒストリー3にヒットした場合で、この場合には、
ブランチ・ヒストリー3から得られる過去に実行したこ
とのある分岐命令の分岐先の命令アドレスを起点とし
て、それに8バイトずつ加算していくことで求められる
命令アドレスを用いて命令フェッチが行われる。
【0031】図4に、図2に示す命令バッファ回路6
と、その周辺回路の一実施例を図示する。この図の命令
バッファ回路6-i(i=0〜2)は、図3に示した命令
アドレス生成回路2-iに対応して、A系列、B系列、C
系列という3系列から構成されることになる。
【0032】各系列の命令バッファ回路6-iは、連続す
る複数回の命令フェッチの結果を保持できるように、各
々1回分のフェッチデータを保持する4個の命令語レジ
スタIBR0,IBR1,IBR2,IBR3(図中の
IBRAはA系列、IBRBはB系列、IBRCはC系
列を表す)の直列接続で構成される。従って、命令フェ
ッチが8バイト単位で行われるとするときには合計32
バイトの容量を持つ。キャッシュ1aから読み出される
フェッチデータはIBR3に供給され、このようにして
新たにIBR3にフェッチデータが供給されると、各段
のフェッチデータは前段のIBRにシフトされていくこ
とになる。命令フェッチは、このIBR上のフェッチデ
ータが、命令実行パイプラインに命令語として供給され
て消費されるまで、上述のシフト動作によってIBRか
らのあふれを生じないないように制御されることにな
る。
【0033】図中、60-0はA系列のNSIカウンタ
(図中でNSICAと略記することがある)、60-1は
B系列のNSIカウンタ(図中でNSICBと略記する
ことがある)、60-2はC系列のNSIカウンタ(図中
でNSICCと略記することがある)、61-0はA系列
の抽出回路、61-1はB系列の抽出回路、61-2はC系
列の抽出回路、9は図1で説明したバッファ系列選択回
路である。
【0034】このNSIカウンタ60-iは、命令実行パ
イプラインに投入する命令語のIBR上の保持位置を管
理するものであって、命令語最小単位長がハーフワード
の2バイトである場合には、2バイト単位でもってIB
R上のアドレス位置を管理することになる。この実施例
のNSIカウンタ60-iは、5ビットで構成されて、I
BR0の先頭アドレスとして「00HEX 」、IBR1の
先頭アドレスとして「04HEX 」、IBR2の先頭アド
レスとして「08HEX 」、IBR3の先頭アドレスとし
て「0CHEX 」が割り付けられて、更に、「10HEX
でIBRが空であることを表す。例えば、NSIカウン
タ60-iの値が「00111」であれば、IBR1の0
番目から始まるハーフワードの内の第3番目のハーフワ
ードというように、IBR上のアドレス位置を管理する
とともに、例えば「10000」であればIBRが空で
あるということを管理するのである。
【0035】NSIカウンタ60-iは、命令フェッチパ
イプラインから新たなフェッチデータが供給されて、I
BRの各段のフェッチデータが前段にシフトされるとき
に、IBR0側に向けて8バイト分、すなわち4だけカ
ウンタ値をディクリメントするとともに、命令実行パイ
プラインに命令語が投入されると、IBR3側に向けて
その命令語長分カウンタ値をインクリメントする。な
お、命令フェッチは、常に8バイト単位で実行されるも
のであることから、各フェッチデータの先頭は、常に、
各IBRの先頭アドレス位置に保持されることになる。
【0036】一方、抽出回路61-iは、自系列のIBR
の保持するフェッチデータを入力として、自系列のNS
Iカウンタ60-iの指すIBR上のアドレス位置から、
命令語を抽出する。図5に、抽出回路61-iの詳細な回
路構成を図示する。ここで、図中のaは選択回路を表し
ており、この図では、NSIカウンタ60-iが「010
01」を管理することに対応して、抽出回路61-iは、
IBR2の第1番目のハーフワードから6バイトの命令
語を抽出する例を示してある。
【0037】また、バッファ系列選択回路9は、後述す
るように、命令供給制御回路10から与えられる系列選
択指示信号(PRESENT ID)の指す系列の抽出
回路61-iを選択して、その選択した抽出回路61-iの
抽出する命令語を命令実行パイプラインに投入していく
ことになる。
【0038】図6及び図7に、図2に示すタグ管理回路
7の回路の一実施例を図示する。タグ管理回路7は、図
6に示すように、命令フェッチパイプラインの実行サイ
クルに同期させて、ブランチ・ヒストリー3の索引によ
り得られる分岐命令のタグ情報を流していって、IBR
TAGSにこのタグ情報を流していくよう処理する。
このIBR TAGSの詳細な回路構成が図7に示すも
のであって、命令バッファ回路6-iと同様の回路構成を
採って、命令バッファ回路6-iのフェッチデータに対応
付けて分岐命令のタグ情報を管理することになる。
【0039】なお、命令バッファ回路6-iの命令語は、
2バイトといった命令語最小単位長で抽出されて命令実
行パイプラインに投入されていくのに対して、このIB
TAGSの管理するタグ情報は、命令レジスタIBR
に対応付けられるTAGレジスタの8バイトを単位とし
て1セットとなる。すなわち、フェッチデータを単位し
て管理されるものであることから、NSIカウンタ60
-iの下位2ビットのビット値(その下位2ビットに続く
上位2ビットの指すIBR内における命令語の保持位置
を表している)に関係なく、その上位2ビットの指すI
BRに対応付けて読み出されていくことになる。
【0040】ここで、ブランチ・ヒストリー3の索引に
より得られる分岐命令のタグ情報の内、分岐先命令の命
令アドレス(BRHS TIAR)については、図3に
も示したように、IBサイクルでもって選択回路21に
出力されて命令フェッチに使用され、分岐成立情報と後
述する差分アドレス情報(BRHS TID)とについ
ては、図7に示す構成を採るIBR TAGSに管理さ
れていく。
【0041】図8に、図2に示すブランチ・ヒストリー
3と、その周辺回路の一実施例を図示する。ここで、4
は図1で説明した書込・読出制御回路、5は図1で説明
した読出情報検査加工回路である。
【0042】ブランチ・ヒストリー3は、分岐命令自身
の命令アドレスとその分岐先の命令アドレスとの対応関
係を、分岐が成立したか否か等の制御情報とともに管理
する。ここで、このエントリーデータは、分岐命令を実
行する命令実行パイプラインのWサイクルで登録される
ことになる。これは、Wサイクルでは、分岐命令の分岐
成立・不成立が確定していることと、PSWの指すIA
Rの命令アドレス(PSW IAR)が、Wサイクルで
実行中の命令の命令アドレスを指し示すことで都合がよ
いからである。
【0043】エントリーデータの登録のために、ブラン
チ・ヒストリー3には、図8に示すように、PSW
AR(図中では、WIARで記述してある)と、命令実
行パイプラインのWサイクルのタグであるWOARと、
分岐命令の実行結果が分岐成立であったことを示すタグ
のW BR TKNとが入力されることになる。ここ
で、WOARは主記憶オペランドアドレスのタグで、オ
ペランドアドレス生成回路11の出力をパイプラインに
沿ってシフトしたものである。すなわち、ブランチ・ヒ
ストリー3には、分岐命令の命令アドレスの示すWIA
Rと、その分岐命令の分岐先となる命令アドレスの示す
WOARと、分岐成立情報のW BR TKNとが入力
されることになるのである。
【0044】図9に、このブランチ・ヒストリー3のエ
ントリーデータのデータ構造、図10に、このブランチ
・ヒストリー3を索引することになる命令アドレス生成
回路2-iの生成する命令アドレスのデータ構造を図示す
る。
【0045】この図9に示すように、ブランチ・ヒスト
リー3は、分岐命令自身の命令アドレスであるWIAR
のビット20〜28をアドレスとし、WIARのビット29〜
30で示されるブロックに、分岐命令自身の命令アドレス
であるWIARのビット1〜19をOIARとして登録
し、分岐先命令の命令アドレスであるWOARのビット
1〜30をTIARとして登録し、その分岐命令の分岐成
立を表すW BR TKN等を制御情報として登録して
これを管理する。一方、この図10に示すように、命令
アドレス生成回路2-iの生成する命令アドレスは、ブラ
ンチ・ヒストリー3のエントリーデータのOIARと比
較されるビット1〜19のEIAR部分と、ブランチ・ヒ
ストリー3の索引アドレスとして用いられるビット20〜
28のADRS部分と、これから説明するブランチ・ヒス
トリー3の持つ4つのブロックの内の1つを指定するビ
ット29〜30のID部分と、残りのビット31とから構成さ
れることになる。
【0046】命令語最小単位長がハーフワードの2バイ
トである場合、命令語は2バイトのアドレス境界に置か
れる。一方、命令フェッチは8バイトずつ行われる。こ
れから、ブランチ・ヒストリー3は、8バイトのフェッ
チデータの中に含まれる最大4個の命令語が分岐命令で
あるか否かを管理するために、図8に示すように、4個
のブロックのエントリーを持つ構造を採ることになる。
ここで、分岐命令の命令アドレスが与えられるときに、
4個ある内のどのブロックに登録されるかは命令アドレ
スにより決定されることになり、例えば、命令アドレス
が奇数アドレスをとらない場合には、最下位ビットを除
く下位2ビット、すなわち、図10で説明したビット29
〜30のID部分のビット値の指すブロックに登録される
構成が採られる。
【0047】図11に、図8に示す書込・読出制御回路
4の詳細な回路構成の一実施例を図示する図中、40は
加算器、41〜47は選択回路、48は第0番目(ID
=00)のブロックをアクセスするための命令アドレスを
保持するアドレスレジスタ、49は第1番目(ID=0
1)のブロックをアクセスするための命令アドレスを保
持するアドレスレジスタ、50は第2番目(ID=10)
のブロックをアクセスするための命令アドレスを保持す
るアドレスレジスタ、51は第3番目(ID=11)のブ
ロックをアクセスするための命令アドレスを保持するア
ドレスレジスタである。
【0048】この加算器40は、命令アドレス生成回路
2-iの生成する命令アドレスのビット1〜28に“1”を
加算する。選択回路41は、命令アドレス生成回路2-i
の生成する命令アドレスのビット29〜30が“00”の値
を示すときに、その命令アドレスを選択し、それ以外の
値を示すときに、加算器40の出力する命令アドレスを
選択する。選択回路42は、命令アドレス生成回路2-i
の生成する命令アドレスのビット29〜30が“0x(x=
0or1)”の値を示すときに、その命令アドレスを選択
し、“1x(x=0or1)”の値を示すときに、加算器
40の出力する命令アドレスを選択する。選択回路43
は、命令アドレス生成回路2-iの生成する命令アドレス
のビット29〜30が“11”以外の値を示すときに、その
命令アドレスを選択し、“11”の値を示すときに、加
算器40の出力する命令アドレスを選択する。
【0049】一方、選択回路44は、ブランチ・ヒスト
リー3への書込処理のときにはWIARの示す命令アド
レスを選択し、ブランチ・ヒストリー3からの読出処理
のときには選択回路41の出力する命令アドレスを選択
してアドレスレジスタ48にセットする。選択回路45
は、ブランチ・ヒストリー3への書込処理のときにはW
IARの示す命令アドレスを選択し、ブランチ・ヒスト
リー3からの読出処理のときには選択回路42の出力す
る命令アドレスを選択してアドレスレジスタ49にセッ
トする。選択回路46は、ブランチ・ヒストリー3への
書込処理のときにはWIARの示す命令アドレスを選択
し、ブランチ・ヒストリー3からの読出処理のときには
選択回路43の出力する命令アドレスを選択してアドレ
スレジスタ50にセットする。選択回路47は、ブラン
チ・ヒストリー3への書込処理のときにはWIARの示
す命令アドレスを選択し、ブランチ・ヒストリー3から
の読出処理のときには命令アドレス生成回路2-iの生成
する命令アドレスを選択してアドレスレジスタ50にセ
ットする。
【0050】この構成を採るときにあって、書込・読出
制御回路4は、ブランチ・ヒストリー3にエントリーデ
ータを登録するときには、WIARの示す命令アドレス
のビット29〜30のビット値の指すブロックにエントリー
データを登録していくよう処理する。
【0051】一方、ブランチ・ヒストリー3のエントリ
ーデータを参照するときには、加算器40と選択回路4
1,42,43の機能により、命令フェッチのアドレス
を使用して、そのフェッチアドレスを開始の索引アドレ
スとして、+2バイト、+4バイト、+6バイトした索
引アドレスに対応する合計4つの索引アドレスを使って
同時にアクセスするよう処理する。このアクセス処理に
従って、1回の命令フェッチでフェッチされる8バイト
分のフェッチデータに対応するブランチ・ヒストリー3
の4エントリー分のデータの索引を1回で行うことを可
能にする。
【0052】すなわち、加算器40と選択回路41,4
2,43の機能により、図12に示すように、フェッチ
アドレスのビット29〜30値が“00”を示すときには、
第0番目(ID=00)のブロックから始まって、同一の
エントリーライン上の4つのブロックを同時にアクセス
する。また、フェッチアドレスのビット29〜30値が“0
1”を示すときには、第1番目(ID=01)のブロック
から始まって、同一のエントリーライン上の第2番目
(ID=10)のブロック、第3番目(ID=11)のブロ
ックと、次エントリーライン上の第0番目(ID=00)
のブロックとを同時にアクセスする。また、フェッチア
ドレスのビット29〜30値が“10”を示すときには、第
2番目(ID=10)のブロックから始まって、同一のエ
ントリーライン上の第3番目(ID=11)のブロック
と、次エントリーライン上の第0番目(ID=00)のブ
ロック、第1番目(ID=01)のブロックとを同時にア
クセスする。また、フェッチアドレスのビット29〜30値
が“11”を示すときには、第3番目(ID=11)のブ
ロックから始まって、次エントリーライン上の第0番目
(ID=00)のブロック、第1番目(ID=01)のブロ
ック、第2番目(ID=11)のブロックを同時にアクセ
スするのである。
【0053】ここで、ブランチ・ヒストリー3の参照処
理は、命令フェッチパイプラインに同期して、IAサイ
クルで命令アドレス生成回路2-iの生成する命令アドレ
スをアドレスレジスタ48〜51にセットして、ITサ
イクルでブランチ・ヒストリー3のRAMをアクセスす
ることで実行されることになる。
【0054】図13ないし図15に、図8に示す読出情
報検査加工回路5の詳細な回路構成の一実施例を図示す
る。読出情報検査加工回路5は、図13に示すように、
ブランチ・ヒストリー3の4個のブロックに対応付けて
備えられる読出情報検査回路50-i(i=0〜3)と、
読出情報加工回路51とから構成される。この読出情報
検査回路50-i(i=0〜3)は、対応のブロックに、
索引アドレスの指す分岐命令が登録されているか否かを
検索して、分岐命令が登録されているときには分岐先命
令の命令アドレスを出力する。一方、読出情報加工回路
51は、これらの読出情報検査回路50-iの出力情報を
受けて、ブランチ・ヒストリー3に分岐命令が登録され
ているか否かを表示するヒット情報(BRHS HI
T)と、登録されている分岐先の命令アドレス(BRH
TIAR)と、これから詳述する差分アドレス情報
(BRHS TID)とを出力する。
【0055】図14に、読出情報検査回路50-iの回路
構成の一実施例、図15に、読出情報加工回路51の回
路構成の一実施例を図示する。読出情報検査回路50-i
は、図14に示すように、排他的NOR回路500-i
と、AND回路501-iとから構成される。この排他的
NOR回路500-iは、ブランチ・ヒストリー3の対応
のブロックから読み出されるOIARと、索引アドレス
のビット1〜19(図10のEIAR)とを比較すること
で、両者が一致しているか否かを検出する。AND回路
501-iは、排他的NOR回路500-iが一致を検出
し、かつ、そのブロックから読み出される制御情報が有
効なエントリーであることを表示しているときに、ヒッ
ト情報を出力する。そして、読出情報検査回路50-i
は、このヒット情報を出力するときに、TIARで表さ
れる分岐先命令の命令アドレスを出力するよう処理す
る。
【0056】この構成に従って、読出情報検査回路50
-iは、対応のブロックに、書込・読出制御回路4の生成
する命令アドレスを持つ分岐命令が登録されているか否
かを検査して、分岐命令が登録されているときには分岐
先命令の命令アドレスを出力するよう動作するのであ
る。
【0057】一方、読出情報加工回路51は、図15に
示すように、OR回路510と、プライオリティ回路5
11と、選択回路512と、エンコーダ513と、アド
レスレジスタ514と、減算器515とから構成され
る。このOR回路510は、読出情報検査回路50-iの
出力する4つのヒット情報の論理和値を算出して出力す
ることで、BRHS HITを出力する。プライオリテ
ィ回路511は、読出情報検査回路50-iの出力する4
つのヒット情報を入力として、ヒットした内の最も小さ
な索引アドレスを示すブランチ・ヒストリー3のブロッ
ク番号を選択する。選択回路512は、プライオリティ
回路511の選択したブロック番号の指す読出情報検査
回路50-iの出力するTIARを選択して出力すること
で、BRHS TIARを出力する。エンコーダ513
は、プライオリティ回路511の選択したブロック番号
をエンコードすることで、2ビット表示のブロック番号
を出力する。アドレスレジスタ514は、命令アドレス
生成回路2-iの出力する命令アドレスのビット29〜30の
ビット値、すなわちフェッチアドレスのビット29〜30の
ビット値を保持する。減算器515は、エンコーダ51
3の出力する2ビット値と、アドレスレジスタ514の
保持する2ビット値との差分値を算出することで、差分
アドレス情報であるBRHS TIDを出力する。すな
わち、減算器515は、ブランチ・ヒストリー3のヒッ
トしたエントリー(分岐命令か否かはこの時点では判明
していない)の内の最もフェッチアドレスに近いエント
リーに対応する命令アドレスと、フェッチアドレスとの
差分アドレス情報を算出するのである。
【0058】この構成に従って、読出情報加工回路51
は、ブランチ・ヒストリー3に過去の分岐命令の実行結
果が登録されているか否かを表示するヒット情報のBR
HS HITと、登録されている分岐先の命令アドレスの
BRHS TIARと、分岐命令の命令アドレスとフェ
ッチアドレスとの差分アドレス情報であるBRHS TI
Dとを特定して、これらのタグ情報をタグ管理回路7に
流していく。
【0059】上述したように、この読出情報加工回路5
1によりタグ管理回路7に流されるタグ情報の内、BR
HS TIARについては、図3に示したように、IB
サイクルで選択回路21に出力される構成が採られるの
で、このIBサイクルから、ブランチ・ヒストリー3に
ヒットした分岐先命令の命令フェッチが開始されること
になる。この先行フェッチされる命令は、使用されてい
ない系列の命令バッファ回路6-iにバッファリングさ
れ、このとき使用する系列ID(BRHS TARGE
REQ ID)は、ブランチ・ヒストリー3にヒッ
トした命令フェッチのタグ情報としてタグ管理回路7に
同様に流されていく。すなわち、読出情報加工回路51
によりタグ管理回路7に流されるタグ情報のBRHS
HIT,BRHS TIDと、このBRHS TARG
ET REQ IDとが、図7に示したIBR TAG
Sにセットされて命令供給制御回路10に提示されてい
くことになるのである。
【0060】図16に、図2に示す命令供給制御回路1
0の一実施例を図示する。図中、100は系列IDレジ
スタ、101,102は選択回路、103は排他的NO
R回路、104,105はAND回路である。
【0061】この系列IDレジスタ100は、バッファ
系列選択回路9に対しての系列選択指示信号となる命令
バッファ回路6-iの系列ID(PRESENT ID)
を保持する。選択回路101は、系列IDレジスタ10
0の保持するPRESENT IDの指すNSIカウンタ
60-iを選択して、その選択したNSIカウンタ60-i
の下位2ビットを出力する。選択回路102は、タグ管
理回路7から与えられる上述のBRHS TARGET
REQ IDか、系列IDレジスタ100の保持する
PRESENT IDのいずれか一方を選択して、系列
IDレジスタ100にセットする。
【0062】排他的NOR回路103は、タグ管理回路
7から与えられる2ビット値のBRHS TIDと、選
択回路101の選択出力するNSIカウンタ60-iの下
位2ビットのビット値とを比較することで、両者が一致
しているか否かを検出する。選択回路101の出力する
NSIカウンタ60-iの下位2ビットのビット値は、命
令実行パイプラインに投入する命令語の命令レジスタI
BRi内における保持位置を表しており、一方、タグ管
理回路7から与えられる2ビット値のBRHS TID
は、ブランチ・ヒストリー3にヒットした命令の命令ア
ドレスと、フェッチアドレスとの差分アドレスを表して
いることから、この両者が一致するということは、命令
実行パイプラインに投入する命令語がブランチ・ヒスト
リー3にヒットした命令であるということを意味する。
【0063】AND回路104は、排他的NOR回路1
03が一致を検出し、かつ、タグ管理回路7から与えら
れるBRHS HITがヒットを表示し、かつ、命令実
行パイプラインのDサイクルの命令デコード回路から分
岐命令のデコード表示があるときに、命令バッファ回路
6-iの系列IDの切替要求指示信号となるD BRHS
HITを発行する。AND回路105は、AND回路
104がD BRHS HITを発行し、かつ、命令実行
パイプラインのDサイクルのがリリースされ、かつ、D
サイクルにある命令の最後のフローであるときに、選択
回路102に対して、タグ管理回路7から与えられるB
RHS TARGET REQ IDを選択するよう指
示する。
【0064】なお、図16に示すBR HIS HIT
IBR PRESENTED及びBRHS TARG
ET REQ ID IBR PRESENTEDは、
IBR TAGSに保持されるタグ情報の内、NSIカ
ウンタ60-iとPRESENT IDで選択されたも
の、即ち、現在命令実行パイプラインに投入している命
令語の含まれるIBR上の8バイトのデータに対応する
BRHS HITとBRHS TARGET REQ
IDである。また、図16に示すBR TKN TARG
ET IDは、ブランチ・ヒストリー3にヒットしなか
った分岐命令の場合に、その分岐先の命令フェッチをO
EAGを用いて行ったときの命令フェッチの系列I
Dであり、これは、分岐成立を示すBR TKNがオン
になると、選択回路102によって選択されてPRES
ENT IDにセットされる。
【0065】この構成に従い、命令供給制御回路10
は、命令実行パイプラインに投入される命令語がブラン
チ・ヒストリー3にヒットした分岐命令であるときに
は、命令バッファ回路6-iにバッファリングされている
分岐先の命令列を選択して、命令実行パイプラインに投
入していくよう処理するのである。
【0066】次に、図16に示す具体的な命令列の実行
を例にして、このように構成される実施例の動作処理に
ついて説明する。ここで、この動作処理の説明にあって
は、説明を簡単にするために、分岐動作以外の各命令の
オペレーション内容は省略し、また、命令語長は何れも
4バイトで、命令実行パイプラインを1フローで処理を
完了するものとする。
【0067】最初に、図18及び図19に従って、この
命令列が最初に実行される場合のときの動作処理につい
て説明する。時刻0で、ID=00のA系列を使用して、
IF EAG=1000HEX で命令フェッチが開始さ
れ、命令フェッチパイプラインのIA,IT,IB,I
Rの各サイクルをこの命令フェッチ要求が流れていく。
この処理で、始めの2命令を含む8バイトの領域がIB
RAに取り込まれる。パイプライン処理に従って、これ
に続いて、アドレスを+8バイトずつインクリメントし
ながら、次々とこれに続く領域が8バイトずつIBRA
に取り込まれていく。NSCIAの初期値は00
HEX で、最初の要求がIBサイクルを抜けるときに−4
されて、時刻3で、0C HEX となる。
【0068】最初の要求がIRサイクルになる時刻3で
は、IBRA3上に要求した命令語がセットされるの
で、NSICA=0CHEX に従って、IBRA3の先頭
から命令語を取り出して命令実行パイプラインに供給し
て、命令実行パイプラインのDサイクルを有効にし、そ
の後、命令1は命令実行パイプラインを順にA,T,
B,E,Wと流れていく。命令1は4バイトであり、こ
れが1τでDサイクルの処理を完了すると、NSICA
を+2するが、これと同時に、2つの目の命令フェッチ
要求がIBサイクルを抜けるので、こちらからはNSI
CAを−4しようとする。従って、差し引き−2され
て、時刻4では、NSICA=0AHEX となる。また、
このとき、最初の命令フェッチ要求でIBRA3上にセ
ットされた8バイトは、IBRA2上にシフトされる。
【0069】時刻4では、NSICAの指示に従って、
IBRA2のバイト4から始まる命令語を命令実行パイ
プラインに供給して、命令実行パイプラインのDサイク
ルを有効にし、その後、命令2も命令実行パイプライン
を順にA,T,B,E,Wと流れていく。以下、同様
に、命令フェッチ要求と、命令実行パイプラインにおけ
る命令処理の完了に同期して、NSICAを更新しなが
ら処理が行われていく。しかし、命令4は分岐命令であ
るために、これが命令実行パイプラインのAサイクルに
至る時刻7以降では、以上とは異なる動作が行われる。
【0070】このサイクルで、分岐先の命令アドレスが
OP EAGによって算出され、このアドレスを用いて
ID=01のB系列の命令フェッチが始まる。また、命令
4の後には、命令5が命令実行パイプラインに投入され
るが、命令4の分岐がそのAサイクルで確定し、分岐成
立となるので、命令5は、途中でキャンセルされ、PR
ESENT IDがID=01に切り替わって、分岐先の
ターゲットの命令列を実行すべきことが示される。その
後、分岐先の命令が用意される時刻10まで待って、分
岐先のターゲットである命令1が実行される。B系列に
おける命令フェッチ要求と、命令実行パイプラインにお
ける命令処理の完了と、NSICBの更新も、前述のA
系列におけるそれと同様である。
【0071】以上の説明で明らかなように、この場合に
は、分岐命令の処理に関連して、4τの損失が生じてい
る。また、この場合には、命令4の分岐命令が実行され
ると、そのWサイクルでブランチ・ヒストリー3にそれ
が登録される。命令4の命令アドレスが100CHEX
あるので、登録されるブランチ・ヒストリー3のアドレ
スは「001HEX 」、ブロックはID=10であり、OI
AR=00001HEX、TIAR=00001000
HEX とともに、制御情報として分岐成立であったことが
記録される。
【0072】ブランチ・ヒストリー3に過去の履歴が登
録されている場合には、以上に説明したものとは異なる
動作を行う。次に、図20及び図21に従って、このと
きの動作処理について説明する。
【0073】最初の命令フェッチリクエストと、これに
関連して命令1,命令2が実行される様子は図18及び
図19の場合と同様である。2つ目の命令フェッチリク
エストは、IF EAG=1008HEX で行われる。こ
のリクエストのITサイクルでブランチ・ヒストリー3
を参照する場合には、1008HEX ,100AHEX ,1
00CHEX ,100EHEX に対応する1組のエントリー
が参照されて、この内の100CHEX 番地において、ブ
ランチ・ヒストリー3にヒットし、過去の実行結果が分
岐成立であったことが判明する。
【0074】そして、そのターゲットの命令アドレスB
RHS TIAR=1000HEX とともに、命令フェッ
チのアドレスと、ヒットしたエントリーに対応する命令
アドレスとの隔たりとからBRHS TID=10を求
める。より具体的には、図15の減算器515を用い
て、命令フェッチのアドレスのビット29,30 の値「0
0」を、ヒットしたブランチ・ヒストリー3のブロック
のID=10から減算して、BRHS TID=10を求
めるのである。これらをIBサイクルのタグとしてラッ
チアップして、時刻3で、これに基づく分岐のターゲッ
ト命令のフェッチをID=01の系列Bを使用して開始す
る。また、このターゲットの系列のIDも命令フェッチ
パイプラインのタグとして記憶する。
【0075】その後、系列Aの2つ目の命令フェッチの
要求は、IRサイクルに入るが、このとき以降、BRH
HIT,BRHS TID等のタグは、IBRAの
タグとして命令語と一緒に管理される。時刻6では、N
SICA=0EHEX で、IBRA3のバイト4からバイ
ト7にある命令4の分岐命令が命令実行パイプラインに
供給されて、Dサイクルで実行されている。このとき、
IBR TAGのA3 TAGに、BRHS HITがあ
って命令と同時にDサイクルに提示されており、更に、
BRHS TID=10で、NSICAの下位2ビット
と一致し、Dサイクルの命令がデコードした結果分岐命
令であるので、Dサイクルにある命令がブランチ・ヒス
トリー3にヒットしたことを示すD BRHS HIT
信号が上がっている。そこで、命令4がDサイクルを抜
けるときに、PRESENT IDをターゲットのIDで
あるID=01に切り替える。このタイミングで、既にI
D=01の命令フェッチのリクエストによって、命令4の
分岐先の命令1はIBRBに保持されており、時刻7で
は、それが命令実行パイプラインに投入される。これ以
降の動作は以上に説明したものと同様である。
【0076】このように、分岐命令の処理に関して、パ
イプラインの損失は全く生じないのである。
【0077】
【発明の効果】以上説明したように、本発明によれば、
ブランチ・ヒストリーを持つ命令実行処理装置におい
て、ブランチ・ヒストリーの効率的な使用の実現を図れ
るようになるのである。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】本発明により構成されるCPUの全体構成図で
ある。
【図3】命令アドレス生成回路の周辺回路の一実施例で
ある。
【図4】命令バッファ回路の一実施例である。
【図5】抽出回路の回路構成図である。
【図6】タグ管理回路の一実施例である。
【図7】タグ管理回路の一実施例である。
【図8】ブランチ・ヒストリーの周辺回路の一実施例で
ある。
【図9】ブランチ・ヒストリーのエントリーデータのデ
ータ構造図である。
【図10】命令アドレスのデータ構造図である。
【図11】書込・読出制御回路の一実施例である。
【図12】書込・読出制御回路の動作説明図である。
【図13】読出情報検査加工回路の一実施例である。
【図14】読出情報検査回路の一実施例である。
【図15】読出情報加工回路の一実施例である。
【図16】命令供給制御回路の一実施例である。
【図17】動作処理の説明に用いる命令列の説明図であ
る。
【図18】実施例の動作説明図である。
【図19】実施例の動作説明図である。
【図20】実施例の動作説明図である。
【図21】実施例の動作説明図である。
【符号の説明】
1 キャッシュ 2 命令アドレス生成回路 3 ブランチ・ヒストリー 4 書込・読出制御回路 5 読出情報検査加工回路 6 命令バッファ回路 7 タグ管理回路 8 選択回路 9 バッファ系列選択回路 10 命令供給制御回路
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平1−286031(JP,A) 特開 平2−71328(JP,A) 特開 平2−66628(JP,A) 特開 平4−361329(JP,A) 特開 平4−25939(JP,A) 特開 平3−77138(JP,A) 特開 平3−29027(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 過去に実行した分岐命令の命令アドレス
    と、その分岐先命令の命令アドレスとの対応関係を履歴
    情報として登録管理するブランチ・ヒストリーを持ち、
    かつ、命令フェッチ使用する命令語の保持手段を複数
    組備えて、複数の命令列の命令フェッチを、命令実行パ
    イプラインにおける命令実行とは独立に行う命令実行処
    理装置において、 命令フェッチの際に、ブランチ・ヒストリーにフェッチ
    した命令が分岐命令として登録されていることで、過去
    の分岐命令の実行結果から分岐成立となる可能性が高い
    ことを示唆する履歴情報が得られる場合に、 ブランチ・ヒストリーから読み出される過去の履歴情報
    に基づく分岐先命令についての命令フェッチ、及び、こ
    の分岐先命令に連続する命令列についての命令フェッチ
    を、命令実行パイプラインにおける分岐命令の実行とは
    独立に、これよりも先行して行い、 かつ、その先行する命令フェッチで使用する命令語の保
    持手段の識別情報を、先行フェッチする分岐先命令に関
    連付けて管理するように構成することを、 特徴とするブランチ・ヒストリーを持つ命令実行処理装
    置。
  2. 【請求項2】 請求項1記載のブランチ・ヒストリーを
    持つ命令実行処理装置において、 ブランチ・ヒストリーを、命令語の置かれるアドレス境
    界に対応付けられ、かつ、命令フェッチの際に1回のア
    クセスでフェッチされる単位長さを包含する個数のブロ
    ックに分割して構成し、 分岐命令の実行結果に基づいてブランチ・ヒストリーへ
    情報を登録する際には、分岐命令の命令アドレスの指す
    単一のブロックのエントリーに登録するとともに、ブラ
    ンチ・ヒストリーの情報を参照する際には、1回のアク
    セスでフェッチされる単位長の全域に対応して、ブラン
    チ・ヒストリーの複数ブロックを同時に参照するように
    構成することを、 特徴とするブランチ・ヒストリーを持つ命令実行処理装
    置。
  3. 【請求項3】 請求項2記載のブランチ・ヒストリーを
    持つ命令実行処理装置において、 ブランチ・ヒストリーの1つ以上のブロックから、フェ
    ッチした命令が分岐命令として登録されていることで、
    分岐成立となる可能性が高いことを示唆する履歴情報が
    得られる場合には、それらのブロックの内の最も低いア
    ドレスに対応付けられるブロックから得られる履歴情報
    を採用した上で、命令フェッチの1回のアクセスでフェ
    ッチされる単位長さの中のどの位置に、この採用した履
    歴情報が登録されているのかについて示す情報を生成
    し、それを、先行フェッチする分岐先命令に関連付けて
    理するように構成することを、 特徴とするブランチ・ヒストリーを持つ命令実行処理装
    置。
  4. 【請求項4】 請求項1、2又は3記載のブランチ・ヒ
    ストリーを持つ命令実行処理装置において、 命令実行パイプラインの先頭に位置する命令解読ステー
    ジにおける命令のデコード結果によって、分岐命令であ
    ることが判明し、かつ、その分岐命令について、そのス
    テージで、命令フェッチの際に参照されたブランチ・ヒ
    ストリーに登録される履歴情報に従って、分岐成立とな
    る可能性が高いことを示唆する履歴情報が得られる場合
    に、 上記命令解読ステージでの処理の完了に同期して、命令
    語の命令実行パイプラインへの投入の制御を、それまで
    命令実行パイプラインに投入していた命令列を保持する
    命令語の保持手段に代えて、上記先行する命令フェッチ
    で使用される保持手段に切り替えるように構成すること
    を、 特徴とするブランチ・ヒストリーを持つ命令実行処理装
    置。
JP23988992A 1992-09-09 1992-09-09 ブランチ・ヒストリーを持つ命令実行処理装置 Expired - Fee Related JP3335379B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23988992A JP3335379B2 (ja) 1992-09-09 1992-09-09 ブランチ・ヒストリーを持つ命令実行処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23988992A JP3335379B2 (ja) 1992-09-09 1992-09-09 ブランチ・ヒストリーを持つ命令実行処理装置

Publications (2)

Publication Number Publication Date
JPH0689173A JPH0689173A (ja) 1994-03-29
JP3335379B2 true JP3335379B2 (ja) 2002-10-15

Family

ID=17051379

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23988992A Expired - Fee Related JP3335379B2 (ja) 1992-09-09 1992-09-09 ブランチ・ヒストリーを持つ命令実行処理装置

Country Status (1)

Country Link
JP (1) JP3335379B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3499135B2 (ja) 1998-06-29 2004-02-23 富士通株式会社 情報処理装置
JP3490007B2 (ja) 1998-12-17 2004-01-26 富士通株式会社 命令制御装置
JP3851235B2 (ja) 2002-06-28 2006-11-29 富士通株式会社 分岐予測装置および分岐予測方法
JP3845043B2 (ja) 2002-06-28 2006-11-15 富士通株式会社 命令フェッチ制御装置
WO2007099604A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited コンピュータの分岐予測装置
JP5423156B2 (ja) 2009-06-01 2014-02-19 富士通株式会社 情報処理装置及び分岐予測方法
JP5861354B2 (ja) 2011-09-22 2016-02-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6205966B2 (ja) 2013-08-15 2017-10-04 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP6683918B2 (ja) 2015-07-24 2020-04-22 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP7077862B2 (ja) 2018-08-16 2022-05-31 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
JPH0689173A (ja) 1994-03-29

Similar Documents

Publication Publication Date Title
JP3182740B2 (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
JP3804941B2 (ja) 命令フェッチ制御装置
KR100341431B1 (ko) 다수의 예측 분기 명령을 통한 명령 페치의 정렬 명령캐시 제어
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US5652900A (en) Data processor having 2n bits width data bus for context switching function
EP0394624B1 (en) Multiple sequence processor system
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
US11372646B2 (en) Exit history based branch prediction
JPH11212788A (ja) プロセッサのデータ供給装置
JP2004038344A (ja) 命令フェッチ制御装置
JP3335379B2 (ja) ブランチ・ヒストリーを持つ命令実行処理装置
JP2801135B2 (ja) パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
JPH063584B2 (ja) 情報処理装置
US6725365B1 (en) Branching in a computer system
US7234046B2 (en) Branch prediction using precedent instruction address of relative offset determined based on branch type and enabling skipping
US5732254A (en) Pipeline system branch history table storing branch instruction addresses and target addresses with inhibit bits
JP2001522082A (ja) より小さな数の分岐予測および代替ターゲットを用いて近似的により大きな数の分岐予測をすること
JP3522135B2 (ja) 複数のウェイを持つブランチヒストリを備える情報処理装置
JP3741945B2 (ja) 命令フェッチ制御装置
US5440757A (en) Data processor having multistage store buffer for processing exceptions
JP2901247B2 (ja) 掃出し制御方式
JP2778610B2 (ja) パイプライン演算制御方法およびシステム
JPS63251835A (ja) ベクトル処理装置
JP2877531B2 (ja) 並列演算処理装置
JP2001022577A (ja) 情報処理装置

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: 20020716

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080802

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090802

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090802

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100802

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110802

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120802

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees