JPH0667881A - Branch forecasting address processing system - Google Patents

Branch forecasting address processing system

Info

Publication number
JPH0667881A
JPH0667881A JP21668892A JP21668892A JPH0667881A JP H0667881 A JPH0667881 A JP H0667881A JP 21668892 A JP21668892 A JP 21668892A JP 21668892 A JP21668892 A JP 21668892A JP H0667881 A JPH0667881 A JP H0667881A
Authority
JP
Japan
Prior art keywords
instruction
address
buffer
branch
register
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.)
Pending
Application number
JP21668892A
Other languages
Japanese (ja)
Inventor
Masahiko Yamamouri
雅彦 山毛利
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP21668892A priority Critical patent/JPH0667881A/en
Publication of JPH0667881A publication Critical patent/JPH0667881A/en
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

PURPOSE:To quickly detect the execution of incorrect branch by quick address calculation. CONSTITUTION:Simultaneously with the reading of a normal instruction word from an instruction buffer 1 to an instruction register 4, a branch forecasting flag 3 indicating the end of an instruction in an instruction word is checked. When the flag 3 is set up, the flag 3 is read out to a register 5. When the flag 3 corresponding to the instruction is set up, a forecasting branched address is read out from a buffer 2 and set up in a register 6. The contents of a register 8 are read out in accordance with the contents of the register 5 and added to the address field of the register 5 by a branched address adder 10 and the added address is set up in an address register 13. Simultaneously the contents of the register 6 are transferred to a buffer 21. A comparator 16 compares the contents of the register 13 with that of a register buffer 21, and at the time of detecting discrepancy, the error of the precedently forecasted address is judged and the register 13 is selected by a selector 18 and sent to a memory control part 30.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は分岐予測アドレス処理方
式に関し、特に分岐命令処理における誤った分岐先アド
レスの再計算の方式に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a branch prediction address processing method, and more particularly to a method for recalculating an incorrect branch destination address in branch instruction processing.

【0002】[0002]

【従来の技術】従来、この種の分岐命令処理では、予測
した分岐先アドレスが正しいかどうかの判定を通常の命
令処理のタイミングで実施していた。分岐命令処理にお
いては図5に示す命令処理のタイムチャートのように、
分岐先アドレスがAサイクルで計算される。したがって
予測したアドレスが正しいかどうかの判定は、Aサイク
ル以降で行なわれる。
2. Description of the Related Art Conventionally, in this type of branch instruction processing, it has been determined whether or not the predicted branch destination address is correct at the timing of normal instruction processing. In the branch instruction processing, as shown in the time chart of the instruction processing shown in FIG.
The branch destination address is calculated in A cycle. Therefore, the determination as to whether the predicted address is correct is made after the A cycle.

【0003】[0003]

【発明が解決しようとする課題】上述した従来の予測ア
ドレス判定処理は、通常の分岐命令処理において分岐先
アドレスの計算が完了するまで実行できないため、予測
アドレクが異なる場合に正しい分岐先アドレスによる命
令が遅くなり、分岐予測の効果が損なわれるという欠点
がある。
The conventional predictive address determination process described above cannot be executed until the calculation of the branch target address is completed in the normal branch instruction process. Therefore, when the predicted address is different, the instruction with the correct branch target address is executed. Has the drawback of slowing down the branch prediction and impairing the effect of branch prediction.

【0004】[0004]

【課題を解決するための手段】本発明の分岐予測アドレ
ス処理方式は、先取りした命令語を格納する命令バッフ
ァと、前記命令バッファに対応して先取られた命令語が
分岐予測バッファにより分岐先が予測されている分岐命
令であることを示す分岐予測フラグと、前記命令ハッフ
ァに対応して予測分岐先アドレスを格納する予測分岐先
アドレスと、前記分岐予測フラグに応答して前記命令バ
ッファより命令語を読出す手段と、前記命令バッファに
接続され前記読出された命令語にしたがって分岐先アド
レスを計算するアドレス加算器と、前記アドレス加算器
の出力と前記予測分岐先アドレスバッファの出力とを比
較する手段とから構成されている。
According to the branch prediction address processing method of the present invention, an instruction buffer for storing a prefetched instruction word and an instruction word prefetched corresponding to the instruction buffer are branch destinations by a branch prediction buffer. A branch prediction flag indicating a predicted branch instruction, a predicted branch destination address for storing a predicted branch destination address corresponding to the instruction huffer, and an instruction word from the instruction buffer in response to the branch prediction flag. For comparing the output of the address adder with the output of the predicted branch destination address buffer, and an address adder connected to the instruction buffer for calculating a branch destination address according to the read instruction word. And means.

【0005】更に本発明の分岐予測アドレス処理方式
は、先取りした命令語を格納する命令バッファと、前記
命令バッファから読出された命令語を保持する第1の命
令レジスタと、前記命令バッファに対応して先取られた
命令語が分岐予測バッファにより分岐先が予測されてい
る分岐命令であることを示す分岐予測フラグと、前記命
令バッファに対応して予測分岐先アドレスを格納する予
測分岐先アドレスバッファと、前記分岐予測フラグに応
答して前記命令バッファより命令語を読出す手段と、前
記読出された命令語を保持する第2の命令レジスタと、
前記第1の命令レジスタと前記第2の命令レジスタのい
ずれかの出力を選択してアドレスを計算するアドレス加
算器と、前記アドレス加算器の出力と前記予測分岐先ア
ドレスバッファの出力とを比較する手段とから構成され
ている。
Further, the branch prediction address processing system of the present invention corresponds to the instruction buffer for storing the prefetched instruction word, the first instruction register for holding the instruction word read from the instruction buffer, and the instruction buffer. Branch prediction flag indicating that the prefetched instruction word is a branch instruction whose branch target is predicted by the branch prediction buffer, and a predicted branch target address buffer that stores the predicted branch target address corresponding to the instruction buffer. Means for reading an instruction word from the instruction buffer in response to the branch prediction flag, a second instruction register for holding the read instruction word,
An address adder that calculates an address by selecting the output of either the first instruction register or the second instruction register is compared with the output of the address adder and the output of the predicted branch destination address buffer. And means.

【0006】更に又、本発明は、先取りした命令語を格
納する命令バッファと、前記命令バッファから読出され
た命令語を保持する第1の命令レジスタと、前記命令バ
ッファに対応して先取られた命令語が分岐予測バッファ
により分岐先が予測されている分岐命令であることを示
す分岐予測フラグと、前記命令バッファに対応して予測
分岐先アドレスを格納する予測分岐先アドレスバッファ
と、前記分岐予測フラグに応答して前記命令バッファよ
り命令語を読出す手段と、前記読出された命令語を保持
する命令レジスタと、前記命令レジスタと前記命令レジ
スタのいずれかの出力を選択してアドレスを計算するア
ドレス加算器と、前記命令アドレス加算器の出力と前記
予測分岐先アドレスバッファの出力とを比較する手段と
から構成されている。
Still further, according to the present invention, an instruction buffer for storing a prefetched instruction word, a first instruction register for holding an instruction word read from the instruction buffer, and a prefetched corresponding to the instruction buffer. A branch prediction flag indicating that the instruction word is a branch instruction whose branch destination is predicted by the branch prediction buffer, a prediction branch destination address buffer that stores a predicted branch destination address corresponding to the instruction buffer, and the branch prediction Means for reading an instruction word from the instruction buffer in response to a flag, an instruction register for holding the read instruction word, and an output of any one of the instruction register and the instruction register is selected to calculate an address. An address adder and means for comparing the output of the instruction address adder with the output of the predicted branch destination address buffer. .

【0007】[0007]

【実施例】次に、本発明について図面を参照して説明す
る。
DESCRIPTION OF THE PREFERRED EMBODIMENTS Next, the present invention will be described with reference to the drawings.

【0008】図1は本発明の第1の実施例を示した図
で、1は命令バッファ(IB),2は予測アドレスバッ
ファ(PAB),3は分岐予測フラグ,4は命令レジス
タ(DIR),5は分岐命令レジスタ(TIR),6は
予測アドレスレジスタ(PAR),7は命令カウンタ
(IC),8は汎用レジスタ(GR),9はオアペラン
ドアドレスアダー(OAA),10は分岐先アドレスア
ダー(TAA),11は命令アドレスアダー(IA
A),12はオペランドアドレスレジスタ(OAR),
13は分岐先アドレスレジスタ(TAR),14は命令
アドレスレジスタ(IAR),15は分岐予測バッファ
(TAB),16、17は比較器,18はセレクタ,1
9は予測分岐先アドレスレジスタ(PTAR),20は
制御回路,21は予測アドレスレジスタバッファ(PA
RB),30はメモリ制御部である。
FIG. 1 shows a first embodiment of the present invention. 1 is an instruction buffer (IB), 2 is a prediction address buffer (PAB), 3 is a branch prediction flag, and 4 is an instruction register (DIR). , 5 is a branch instruction register (TIR), 6 is a prediction address register (PAR), 7 is an instruction counter (IC), 8 is a general register (GR), 9 is an operand address adder (OAA), and 10 is a branch destination address. Adder (TAA) and 11 are instruction address adders (IA)
A) and 12 are operand address registers (OAR),
13 is a branch destination address register (TAR), 14 is an instruction address register (IAR), 15 is a branch prediction buffer (TAB), 16 and 17 are comparators, 18 is a selector, 1
9 is a prediction branch destination address register (PTAR), 20 is a control circuit, and 21 is a prediction address register buffer (PA).
RB) and 30 are memory control units.

【0009】通常の命令処理におけるオペランドアドレ
ス計算について説明する。命令バッファ1より読出され
た命令語が命令レジスタ4にセットされ、命令処理が始
まる。アドレス修飾のために汎用レジスタ8がアクセス
され、読出された汎用レジスタ8の内容と命令語のアド
レスフィールドがオペランドアドレスアダー9により加
算される。計算されたオペランドアドレスはオペランド
アドレスレジスタ12にセットされ、その次のサイクル
でメモリ制御部30へ送出される。
Operand address calculation in normal instruction processing will be described. The instruction word read from the instruction buffer 1 is set in the instruction register 4, and instruction processing is started. The general purpose register 8 is accessed for address modification, and the contents of the read general purpose register 8 and the address field of the instruction word are added by the operand address adder 9. The calculated operand address is set in the operand address register 12 and sent to the memory control unit 30 in the next cycle.

【0010】次に命令取出しについて説明する。命令カ
ウンタ7の内容に従って命令取出しは行なわれる。命令
カウンタ7の出力は命令アドレスアダー11によりあら
かじめ定められた値(たとえば+8バイト)と加算され
る。命令アドレスアダー11により計算された命令アド
レスは、命令アドレスレジスタ14にセットされるとと
もに命令カウンタ7を更新する。命令アドレスレジスタ
14の出力はセレクタ18により選択されメモリ制御部
へ送出されるとともに分岐予測バッファ15をアクセス
する。分岐予測バッファ15は命令のアドレスと分岐先
アドレスとを対にして保持するセットアソシアティブ方
式のバッファであり、命令アドレスレジスタ14の命令
アドレスが分岐予測バッファ15に登録されていること
が比較器17により検出されると、予測分岐先アドレス
を予測分岐先アドレスレジスタ19にセットする。予測
分岐先アドレスレジスタ19の出力は、セレクタ18で
選択することによりメモリ制御部30に送出することが
できる。一方、命令アドレスレジスタ14の出力を用い
てメモリ制御部30により取出された命令語は命令バッ
ファ1にセットされる。この際分岐予測バッファ15に
より分岐先が予測されている命令語ならば、予測分岐先
アドレスレジスタ19の内容が予測アドレスバッファ2
の命令バッファ1に対応するエントリにセットされ、同
時に対応する分岐予測フラグがセットされる。
Next, the instruction fetch will be described. Instruction fetch is performed according to the contents of the instruction counter 7. The output of the instruction counter 7 is added to a predetermined value (for example, +8 bytes) by the instruction address adder 11. The instruction address calculated by the instruction address adder 11 is set in the instruction address register 14 and the instruction counter 7 is updated. The output of the instruction address register 14 is selected by the selector 18 and sent to the memory controller, and the branch prediction buffer 15 is accessed. The branch prediction buffer 15 is a set associative buffer that holds an instruction address and a branch destination address as a pair, and the comparator 17 indicates that the instruction address of the instruction address register 14 is registered in the branch prediction buffer 15. When detected, the predicted branch destination address is set in the predicted branch destination address register 19. The output of the prediction branch destination address register 19 can be sent to the memory control unit 30 by selecting with the selector 18. On the other hand, the instruction word fetched by the memory control unit 30 using the output of the instruction address register 14 is set in the instruction buffer 1. At this time, if it is an instruction word whose branch target is predicted by the branch prediction buffer 15, the contents of the predicted branch target address register 19 will be the contents of the predicted address buffer 2.
Is set in the entry corresponding to the instruction buffer 1 and the corresponding branch prediction flag is set at the same time.

【0011】次に予測アドレスのチェックについて説明
する。通常命令処理のために命令語が命令バッファ1か
ら命令レジスタ4に読出されると同時に命令レジスタ4
に読出される命令語の1命令終了の命令語の分岐予測フ
ラグ3を調べる。もし分岐予測フラグ3がセットされて
いたならば、その命令語が分岐命令レジスタ5に読出さ
れる。(ここでは1命令終了を仮定したが、数命令終了
であってもかまわない)ここで分岐命令レジスタ5に読
出された命令に対応する分岐予測フラグ3がセットされ
ていた場合、予測分岐先アドレスが予測アドレスバッフ
ァ2から読出され予測アドレスレジスタ6にセットされ
る。分岐命令レジスタ5の内容に従って汎用レジスタ8
が読出され分岐先アドレスアダー10により分岐命令レ
ジスタ5の命令語のアドレスフィールドと加算される。
計算された分岐先アドレスは、分岐先アドレスレジスタ
13にセットされる。これと同時に予測アドレスレジス
タ6の内容は予測アドレスレジスタバッファ21に転送
される。比較器16により分岐先アドレスレジスタ13
と予測アドレスレジスタバッファ21が比較される。こ
こで不一致が検出されると以前に予測した分岐先アドレ
スが誤まっていることになり、正しい分岐先を取出すた
めにセレクタ18により分岐先アドレスレジスタ13が
選択され、メモリ制御部に送出される。図4は予測アド
レスチェックの動作について説明した図で、分岐先アド
レスレジスタ13と予測アドレスレジスタバッファ21
の比較は通常の分岐命令処理のDサイクルに行なわれる
ことになり、従来(図5)に比べて1サイクル早い。
Next, the check of the predicted address will be described. At the same time as the instruction word is read from the instruction buffer 1 to the instruction register 4 for normal instruction processing, the instruction register 4
The branch prediction flag 3 of the instruction word of one instruction of the instruction word read in is checked. If the branch prediction flag 3 is set, the instruction word is read to the branch instruction register 5. (Here, it is assumed that one instruction is completed, but it may be completed by several instructions.) If the branch prediction flag 3 corresponding to the instruction read to the branch instruction register 5 is set, the predicted branch destination address Is read from the predicted address buffer 2 and set in the predicted address register 6. General-purpose register 8 according to the contents of branch instruction register 5
Is read and added to the address field of the instruction word of the branch instruction register 5 by the branch destination address adder 10.
The calculated branch destination address is set in the branch destination address register 13. At the same time, the contents of the predicted address register 6 are transferred to the predicted address register buffer 21. Branch destination address register 13 by comparator 16
And the predicted address register buffer 21 are compared. If a mismatch is detected here, the previously predicted branch target address is incorrect, and the branch target address register 13 is selected by the selector 18 to fetch the correct branch target and sent to the memory control unit. . FIG. 4 is a diagram for explaining the operation of the predicted address check. The branch destination address register 13 and the predicted address register buffer 21 are shown in FIG.
Will be performed in the D cycle of normal branch instruction processing, which is one cycle earlier than in the conventional case (FIG. 5).

【0012】図2は本発明の第2の実施例を示した図
で、図1に示す第1の実施例と同じものは同一番号を使
用した。なお、22はセレクタである。
FIG. 2 is a diagram showing a second embodiment of the present invention. The same parts as those in the first embodiment shown in FIG. Reference numeral 22 is a selector.

【0013】通常の命令処理におけるオペランドアドレ
ス計算について説明する。命令バッファ1より読出され
た命令語が命令レジスタ4にセットされ、命令処理が始
まる。アドレス修飾のために汎用レジスタ8がアクセス
され、読出された汎用レジスタ8の内容とセレクタ22
により選択された命令語のアドレスフィールドがオペラ
ンドアドレスアダー9により加算される。計算されたオ
ペランドアドレスはオペランドアドレスレジスタ12に
セットされ、その次のサイクルでメモリ制御部30へ送
出される。
Operand address calculation in normal instruction processing will be described. The instruction word read from the instruction buffer 1 is set in the instruction register 4, and instruction processing is started. The general-purpose register 8 is accessed for address modification, and the contents of the read general-purpose register 8 and the selector 22 are read.
The address field of the instruction word selected by is added by the operand address adder 9. The calculated operand address is set in the operand address register 12 and sent to the memory control unit 30 in the next cycle.

【0014】次に命令取出しについて説明する。命令カ
ウンタ7の内容に従って命令取出しは行なわれる。命令
カウンタ7の出力は命令アドレスアダー11によりあら
かじめ定められた値(たとえば+8バイト)と加算され
る。命令アドレスアダー11により計算された命令アド
レスは、命令アドレスレジスタ14にセットされるとと
もに命令カウンタ7を更新する。命令アドレスレジスタ
14の出力はセレクタ18により選択されメモリ制御部
へ送出されるとともに分岐予測バッファ15をアクセス
する。分岐予測バッファ15は命令のアドレスと分岐先
アドレスとを対にして保持するセットアソシアティブ方
式のバッファであり、命令アドレスレジスタ14の命令
アドレスが分岐予測バッファ15に登録されていること
が比較器17により検出されると、予測分岐先アドレス
を予測分岐先アドレスレジスタ19にセットする。予測
分岐先アドレスレジスタ19の出力は、セレクタ18で
選択することによりメモリ制御部30に送出することが
できる。一方、命令アドレスレジスタ14の出力を用い
てメモリ制御部30により取出された命令語は命令バッ
ファ1にセットされる。この際分岐予測バッファ15に
より分岐先が予測されている命令語ならば、予測分岐先
アドレスレジスタ19の内容が予測アドレスバッファ2
の命令バッファ1に対応するエントリにセットされ、同
時に対応する分岐予測フラグがセットされる。
Next, the instruction fetch will be described. Instruction fetch is performed according to the contents of the instruction counter 7. The output of the instruction counter 7 is added to a predetermined value (for example, +8 bytes) by the instruction address adder 11. The instruction address calculated by the instruction address adder 11 is set in the instruction address register 14 and the instruction counter 7 is updated. The output of the instruction address register 14 is selected by the selector 18 and sent to the memory controller, and the branch prediction buffer 15 is accessed. The branch prediction buffer 15 is a set associative buffer that holds an instruction address and a branch destination address as a pair, and the comparator 17 indicates that the instruction address of the instruction address register 14 is registered in the branch prediction buffer 15. When detected, the predicted branch destination address is set in the predicted branch destination address register 19. The output of the prediction branch destination address register 19 can be sent to the memory control unit 30 by selecting with the selector 18. On the other hand, the instruction word fetched by the memory control unit 30 using the output of the instruction address register 14 is set in the instruction buffer 1. At this time, if it is an instruction word whose branch target is predicted by the branch prediction buffer 15, the contents of the predicted branch target address register 19 will be the contents of the predicted address buffer 2.
Is set in the entry corresponding to the instruction buffer 1 and the corresponding branch prediction flag is set at the same time.

【0015】次に予測アドレスのチェックについて説明
する。通常命令処理のために命令語が命令バッファ1か
ら命令レジスタ4に読出されると同時に命令レジスタ4
に読出される命令語の1命令終了の命令語の分岐予測フ
ラグ3を調べる。もし分岐予測フラグ3がセットされて
いたならば、その命令語が分岐命令レジスタ5に読出さ
れる。(ここでは1命令終了を仮定したが、数命令終了
であってもかまわない)同時に予測分岐先アドレスが予
測アドレスベッァ2から読出され予測アドレスレジスタ
6にセットされる。分岐命令レジスタ5の内容に従って
汎用レジスタ8が読出され、また分岐命令レジスタ5の
アドレスフィールドがセレクタ22で選択されオペラン
ドアドレスアダー9により加算される。計算された分岐
先アドレスは分岐先アドレスレジスタ13にセットさる
る。これと同時に予測アドレスレジスタ6の内容は予測
アドレスレジスタバッファ21に転送される。比較器1
6により分岐先アドレスレジスタ13と予測アドレスレ
ジスタバッファ21が比較される。ここで不一致が検出
されると以前に予測した分岐先アドレスが誤まっている
ことになり、正しい分岐先を取出すためにセレクタ18
により分岐先アドレスレジスタ13が選択され、メモリ
制御部に送出される。図4は予測アドレスチェックの動
作について説明した図で、分岐先アドレスレジスタ13
と予測アドレスレジスタバッファ21の比較は通常の分
岐命令処理のDサイクルに行なわれることになり、従来
(図5)に比べて1サイクル早い。
Next, the check of the predicted address will be described. At the same time as the instruction word is read from the instruction buffer 1 to the instruction register 4 for normal instruction processing, the instruction register 4
The branch prediction flag 3 of the instruction word of one instruction of the instruction word read in is checked. If the branch prediction flag 3 is set, the instruction word is read to the branch instruction register 5. (Here, it is assumed that one instruction is completed, but it may be completed by several instructions.) At the same time, the predicted branch destination address is read from the predicted address buffer 2 and set in the predicted address register 6. The general-purpose register 8 is read according to the contents of the branch instruction register 5, and the address field of the branch instruction register 5 is selected by the selector 22 and added by the operand address adder 9. The calculated branch destination address is set in the branch destination address register 13. At the same time, the contents of the predicted address register 6 are transferred to the predicted address register buffer 21. Comparator 1
6, the branch destination address register 13 and the predicted address register buffer 21 are compared. If a mismatch is detected here, it means that the previously predicted branch destination address is incorrect, and the selector 18 is used to fetch the correct branch destination.
The branch destination address register 13 is selected by and is sent to the memory control unit. FIG. 4 is a diagram explaining the operation of the predicted address check.
The comparison between the predicted address register buffer 21 and the predicted address register buffer 21 is performed in the D cycle of normal branch instruction processing, which is one cycle earlier than the conventional case (FIG. 5).

【0016】次に、図3は本発明の第3の実施例を示し
た図で、23はセレクタで第1および第2の実施例と同
じものは同一番号を使用した。
Next, FIG. 3 is a diagram showing a third embodiment of the present invention, in which the reference numeral 23 designates the same reference numerals as those in the first and second embodiments.

【0017】通常の命令処理におけるオペランドアドレ
ス計算について説明する。命令バッファ1より読出され
た命令語が命令レジスタ4にセットされ、命令処理が始
まる。アドレス修飾のために汎用レジスタ8がアクセス
され、読出された汎用レジスタ8の内容と命令語のアド
レスフィールドがオペランドアドレスアダー9により加
算される。計算されたオペランドアドレスはオペランド
アドレスレジスタ12にセットされ、その次のサイクル
でメモリ制御部30へ送出される。
Operand address calculation in normal instruction processing will be described. The instruction word read from the instruction buffer 1 is set in the instruction register 4, and instruction processing is started. The general purpose register 8 is accessed for address modification, and the contents of the read general purpose register 8 and the address field of the instruction word are added by the operand address adder 9. The calculated operand address is set in the operand address register 12 and sent to the memory control unit 30 in the next cycle.

【0018】次に命令取出しについて説明する。命令カ
ウンタ7の内容に従って命令取出しは行なわれる。命令
カウンタ7の出力は命令アドレスアダー11によりあら
かじめ定められた値(たとえば+8バイト)と加算され
る。命令アドレスアダー11により計算された命令アド
レスは、命令アドレスレジスタ14にセットされるとと
もに命令カウンタ7を更新する。命令アドレスレジスタ
14の出力はセレクタ18により選択されメモリ制御部
へ送出されるとともに分岐予測バッファ15をアクセス
する。分岐予測バッファ15は命令のアドレスと分岐先
アドレスとを対にして保持するセットアソシアティブ方
式のバッファであり、命令アドレスレジスタ14の命令
アドレスが分岐予測バッファ15に登録されていること
が比較器17により検出されると、予測分岐先アドレス
を予測分岐先アドレスレジスタ19にセットする。予測
分岐先アドレスレジスタ19の出力は、セレクタ18で
選択することによりメモリ制御部30に送出することが
できる。一方、命令アドレスレジスタ14の出力を用い
てメモリ制御部30により取出された命令語は命令バッ
ファ1にセットされる。この際分岐予測バッファ15に
より分岐先が予測されている命令語ならば、予測分岐先
アドレスレジスタ19の内容が予測アドレスバッファ2
の命令バッファ1に対応するエントリにセットされ、同
時に対応する分岐予測フラグがセットされる。
Next, the instruction fetch will be described. Instruction fetch is performed according to the contents of the instruction counter 7. The output of the instruction counter 7 is added to a predetermined value (for example, +8 bytes) by the instruction address adder 11. The instruction address calculated by the instruction address adder 11 is set in the instruction address register 14 and the instruction counter 7 is updated. The output of the instruction address register 14 is selected by the selector 18 and sent to the memory controller, and the branch prediction buffer 15 is accessed. The branch prediction buffer 15 is a set associative buffer that holds an instruction address and a branch destination address as a pair, and the comparator 17 indicates that the instruction address of the instruction address register 14 is registered in the branch prediction buffer 15. When detected, the predicted branch destination address is set in the predicted branch destination address register 19. The output of the prediction branch destination address register 19 can be sent to the memory control unit 30 by selecting with the selector 18. On the other hand, the instruction word fetched by the memory control unit 30 using the output of the instruction address register 14 is set in the instruction buffer 1. At this time, if it is an instruction word whose branch target is predicted by the branch prediction buffer 15, the contents of the predicted branch destination address register 19 will be the predicted address buffer 2.
Is set in the entry corresponding to the instruction buffer 1 and the corresponding branch prediction flag is set at the same time.

【0019】次に予測アドレスのチェックについて説明
する。通常命令処理のために命令語が命令バッファ1か
ら命令レジスタ4に読出されると同時に命令レジスタ4
に読出される命令語の1命令終了の命令語の分岐予測フ
ラグ3を調べる。もし分岐予測フラグ3がセットされて
いたならば、その命令語が分岐命令レジスタ5に読出さ
れる。(ここでは1命令終了を仮定したが、数命令終了
であってもかまわない)。
Next, the check of the predicted address will be described. At the same time as the instruction word is read from the instruction buffer 1 to the instruction register 4 for normal instruction processing, the instruction register 4
The branch prediction flag 3 of the instruction word of one instruction of the instruction word read in is checked. If the branch prediction flag 3 is set, the instruction word is read to the branch instruction register 5. (Here, it is assumed that one instruction is finished, but it may be several instructions.).

【0020】同時に予測分岐先アドレスが予測アドレス
バッファ2から読出され予測アドレスレジスタ6にセッ
トされる。分岐先命令レジスタ5の内容に従って、汎用
レジスタ8が読出され、また分岐命令レジスタ5のアド
レスフィールドがセレクタ22で選択され、命令アドレ
スアダー11により加算される。計算された分岐先アド
レスは分岐先アドレスレジスタ13にセットされる。こ
れと同時に予測アドレスレジスタ6の内容は予測アドレ
スレジスタバッファ21に転送される。比較器16によ
り分岐先アドレスレジスタ13と予測アドレスレジスタ
バッファ21が比較される。ここで不一致が検出される
と以前に予測した分岐先アドレスが誤まっていることに
なり、正しい分岐先を取出すためにセレクタ18により
分岐先アドレスレジスタ13が選択され、メモリ制御部
に送出される。図4は予測アドレスチェックの動作につ
いて説明した図で、分岐先アドレスレジスタ13と予測
アドレスレジスタバッファ21の比較は通常の分岐命令
処理のDサイクルに行なわれることになり、従来(図
5)に比べて1サイクル早い。
At the same time, the predicted branch destination address is read from the predicted address buffer 2 and set in the predicted address register 6. The general-purpose register 8 is read according to the contents of the branch destination instruction register 5, and the address field of the branch instruction register 5 is selected by the selector 22 and added by the instruction address adder 11. The calculated branch destination address is set in the branch destination address register 13. At the same time, the contents of the predicted address register 6 are transferred to the predicted address register buffer 21. The comparator 16 compares the branch destination address register 13 with the predicted address register buffer 21. If a mismatch is detected here, the previously predicted branch target address is incorrect, and the branch target address register 13 is selected by the selector 18 to fetch the correct branch target and sent to the memory control unit. . FIG. 4 is a diagram for explaining the operation of the predicted address check. The branch destination address register 13 and the predicted address register buffer 21 are compared in the D cycle of the normal branch instruction processing, which is different from the conventional case (FIG. 5). 1 cycle earlier.

【0021】[0021]

【発明の効果】以上説明したように本発明は、通常の命
令処理より早くアドレス計算をすることにより、誤まっ
た分岐予測を行なっていることを早期に検出することが
できる効果がある。
As described above, the present invention has an effect that it is possible to early detect that an erroneous branch prediction is performed by performing address calculation faster than normal instruction processing.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明の第1の実施例を示す図である。FIG. 1 is a diagram showing a first embodiment of the present invention.

【図2】本発明の第2の実施例を示す図である。FIG. 2 is a diagram showing a second embodiment of the present invention.

【図3】本発明の第3の実施例を示す図である。FIG. 3 is a diagram showing a third embodiment of the present invention.

【図4】本実施例における動作を説明した図である。FIG. 4 is a diagram for explaining the operation in this embodiment.

【図5】従来技術での動作を説明した図である。FIG. 5 is a diagram illustrating an operation according to a conventional technique.

【符号の説明】[Explanation of symbols]

1 命令バッファ(IB) 2 予測アドレスバッファ(PAB) 3 分岐予測フラグ 4 命令レジスタ(DIR) 5 分岐命令レジスタ(TIR) 6 予測アドレスレジスタ(PAR) 7 命令カウンタ(IC) 8 汎用レジスタ(GR) 9 オペランドアドレスアダー(OAA) 10 分岐先アドレスアダー(TAA) 11 命令アドレスアダー(IAA) 12 オペランドアドレスレジスタ(OAR) 13 分岐先アドレスレジスタ(TAR) 14 命令アドレスレジスタ(IAR) 15 分岐予測バッファ(TAB) 16,17 比較器 18 セレクタ 19 予測分岐先アドレスレジスタ(PTAR) 20 制御回路 21 予測アドレスレジスタバッファ(PARB) 22,23 セレクタ 30 メモリ制御部 1 instruction buffer (IB) 2 prediction address buffer (PAB) 3 branch prediction flag 4 instruction register (DIR) 5 branch instruction register (TIR) 6 prediction address register (PAR) 7 instruction counter (IC) 8 general purpose register (GR) 9 Operand address adder (OAA) 10 Branch destination address adder (TAA) 11 Instruction address adder (IAA) 12 Operand address register (OAR) 13 Branch destination address register (TAR) 14 Instruction address register (IAR) 15 Branch prediction buffer (TAB) 16, 17 Comparator 18 Selector 19 Prediction branch destination address register (PTAR) 20 Control circuit 21 Prediction address register buffer (PARB) 22, 23 Selector 30 Memory control unit

Claims (3)

【特許請求の範囲】[Claims] 【請求項1】 命令後のアドレスと分岐先アドレスとを
対にして保持する分岐予測バッファを備え、命令の先取
りを行なう情報処理装置において、先取りした命令語を
格納する命令バッファと、前記命令バッファに対応して
先取られた命令語が前記分岐予測バッファにより分岐先
が予測されている分岐命令であることを示す分岐予測フ
ラグと、前記命令バッファに対応して予測分岐先アドレ
スを格納する予測分岐先アドレスバッファと、前記分岐
予測フラグに応答して前記命令バッファより命令語を読
出す手段と、前記命令バッファに接続され前記読出され
た命令語にしたがって分岐先アドレスを計算するアドレ
ス加算器と、前記アドレス加算器の出力と前記予測分岐
先アドレスバッファの出力とを比較する手段とから構成
され、前記比較する手段により不一致が検出された場
合、前記アドレス加算器の出力により命令を取出し直す
ことを特徴とする分岐予測アドレス処理方式。
1. An instruction buffer for storing a prefetched instruction word in an information processing device for prefetching an instruction, comprising: a branch prediction buffer for holding a post-instruction address and a branch destination address in a pair. A branch prediction flag indicating that the prefetched instruction word is a branch instruction whose branch target is predicted by the branch prediction buffer, and a prediction branch storing a predicted branch target address corresponding to the instruction buffer. A destination address buffer, means for reading an instruction word from the instruction buffer in response to the branch prediction flag, an address adder connected to the instruction buffer for calculating a branch destination address according to the instruction word read out, And comparing the output of the address adder with the output of the predictive branch destination address buffer. A branch prediction address processing method, wherein when a mismatch is detected by the means, the instruction is fetched again by the output of the address adder.
【請求項2】 命令後のアドレスと分岐先アドレスとを
対にして保持する分岐予測バッファを備え、命令の先取
りを行なう情報処理装置において、先取りした命令語を
格納する命令バッファと、前記命令バッファから読出さ
れた命令語を保持する第1の命令レジスタと、前記命令
バッファに対応して先取られた命令語が前記分岐予測バ
ッファにより分岐先が予測されている分岐命令であるこ
とを示す分岐予測フラグと、前記命令バッファに対応し
て予測分岐先アドレスを格納する予測分岐先アドレスバ
ッファと、前記分岐予測フラグに応答して前記命令バッ
ファより命令語を読出す手段と、前記読出された命令語
を保持する第2の命令レジスタと、前記第1の命令レジ
スタと前記第2の名レジスタのいずれかの出力を選択し
てアドレスを計算するアドレス加算器と、前記アドレス
加算器の出力と前記予測分岐先アドレスバッファの出力
とを比較する手段とから構成され、前記比較する手段に
より不一致が検出された場合、前記アドレス加算器の出
力により命令を取出し直すことを特徴とする分岐予測ア
ドレス処理方式。
2. An information buffer for prefetching an instruction, comprising: a branch prediction buffer for holding a post-instruction address and a branch destination address in a pair; an instruction buffer for storing a prefetched instruction word; and the instruction buffer. A first instruction register for holding the instruction word read from the branch instruction prediction unit, and a branch prediction indicating that the instruction word prefetched corresponding to the instruction buffer is a branch instruction whose branch target is predicted by the branch prediction buffer. A flag, a predicted branch destination address buffer for storing a predicted branch destination address corresponding to the instruction buffer, a unit for reading an instruction word from the instruction buffer in response to the branch prediction flag, and the read instruction word A second instruction register for holding the address, and an output from any one of the first instruction register and the second name register to calculate an address. Address adder, and means for comparing the output of the address adder with the output of the predicted branch destination address buffer, and when a mismatch is detected by the comparing means, the output of the address adder Branch prediction address processing method characterized by fetching instructions again.
【請求項3】 命令後のアドレスと分岐先アドレスとを
対にして保持する分岐予測バッファと、独立したオペラ
ンドアドレス加算器と命令アドレス加算器とを備え、命
令の先取りを行なう情報処理装置において、先取りした
命令語を格納する命令バッファと、前記命令バッファに
対応して先取られた命令語が前記分岐予測バッファによ
り分岐先が予測されている分岐命令であることを示す分
岐予測フラグと、前記命令バッファに対応して予測分岐
先アドレスを格納する予測分岐先アドレスバッファと、
前記分岐予測フラグに応答して前記命令バッファより命
令語を読出す手段と、前記読出された命令語を保持する
命令レジスタと、前記命令カウンタと前記命令レジスタ
のいずれかの出力を選択して前記命令アドレス加算器に
よりアドレスを計算する手段と、前記命令アドレス加算
器の出力と前記予測分岐先アドレスバッファの出力とを
比較する手段とから構成され、前記比較する手段により
不一致が検出された場合、前記命令アドレス加算器の出
力により命令を取出し直すことを特徴とする分岐予測ア
ドレス処理方式。
3. An information processing apparatus for prefetching an instruction, comprising: a branch prediction buffer that holds a post-instruction address and a branch destination address as a pair; an independent operand address adder and an instruction address adder; An instruction buffer for storing the prefetched instruction word, a branch prediction flag indicating that the prefetched instruction word corresponding to the instruction buffer is a branch instruction whose branch target is predicted by the branch prediction buffer, and the instruction A prediction branch destination address buffer that stores the prediction branch destination address corresponding to the buffer,
Means for reading an instruction word from the instruction buffer in response to the branch prediction flag; an instruction register for holding the read instruction word; an output from one of the instruction counter and the instruction register; When an address is calculated by the instruction address adder and a means for comparing the output of the instruction address adder and the output of the predicted branch destination address buffer, if a mismatch is detected by the comparing means, A branch prediction address processing method, wherein an instruction is fetched again by the output of the instruction address adder.
JP21668892A 1992-08-14 1992-08-14 Branch forecasting address processing system Pending JPH0667881A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP21668892A JPH0667881A (en) 1992-08-14 1992-08-14 Branch forecasting address processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21668892A JPH0667881A (en) 1992-08-14 1992-08-14 Branch forecasting address processing system

Publications (1)

Publication Number Publication Date
JPH0667881A true JPH0667881A (en) 1994-03-11

Family

ID=16692367

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21668892A Pending JPH0667881A (en) 1992-08-14 1992-08-14 Branch forecasting address processing system

Country Status (1)

Country Link
JP (1) JPH0667881A (en)

Similar Documents

Publication Publication Date Title
US4827402A (en) Branch advanced control apparatus for advanced control of a branch instruction in a data processing system
JPH0557616B2 (en)
KR100259306B1 (en) Data processor having a branch command buffer
JP2570859B2 (en) Data processing device
US6044455A (en) Central processing unit adapted for pipeline process
JP2723238B2 (en) Information processing device
JPH0667881A (en) Branch forecasting address processing system
JPS5991551A (en) Instruction prefetching device forecasting address to be branched
JPH0695306B2 (en) Instruction prefetching device
JPH06301537A (en) Instruction fetching circuit
JPH0248733A (en) Information processor
JPH10154072A (en) Pipeline processor
JPH0991139A (en) Information processor
JP2591325B2 (en) Branch control device
JPS63191231A (en) Information processor for prefetching of instruction
JPH04213727A (en) Information processor
JPS586972B2 (en) information processing equipment
JP2629479B2 (en) Information processing device
JPH0342722A (en) Branching prediction system using branching history table
JPH0715662B2 (en) Information processing device for prefetching instructions
JP2597744B2 (en) Branch control method
JP3102846B2 (en) Load address cache device and method
JPH05216715A (en) Function calling and returning detection system
JPH02278428A (en) Branch control system
JPH01205340A (en) Data processor

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20000404