JP2508021B2 - Data processing device - Google Patents

Data processing device

Info

Publication number
JP2508021B2
JP2508021B2 JP61234860A JP23486086A JP2508021B2 JP 2508021 B2 JP2508021 B2 JP 2508021B2 JP 61234860 A JP61234860 A JP 61234860A JP 23486086 A JP23486086 A JP 23486086A JP 2508021 B2 JP2508021 B2 JP 2508021B2
Authority
JP
Japan
Prior art keywords
instruction
address
executed
branch
area
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 - Lifetime
Application number
JP61234860A
Other languages
Japanese (ja)
Other versions
JPS6388643A (en
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP61234860A priority Critical patent/JP2508021B2/en
Publication of JPS6388643A publication Critical patent/JPS6388643A/en
Application granted granted Critical
Publication of JP2508021B2 publication Critical patent/JP2508021B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 この発明は、命令のパイプライン処理機能とブランチ
ターゲツト命令バツフアを備えたデータ処理装置に関す
るものである。
Description: BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a data processor having an instruction pipeline processing function and a branch target instruction buffer.

〔従来の技術〕[Conventional technology]

第3図は命令のパイプライン処理機能とブランチター
ゲツト命令バツフアを備えた従来のマイクロプロセツサ
のブロツク図であり、図において、(1)は命令プリフ
エツチキユー、(2)は命令デコード部、(3)は命令
実行部、(12)はブランチターゲツト命令バツフアB、
(5)はブランチターゲツト命令バツフアB(12)に格
納されている飛び先アドレスと命令実行後の真の飛び先
アドレスとを比較する比較器、(6)は現在実行中の命
令デコードを無効化するキヤンセル信号である。第4図
は前記ブランチターゲツト命令バツフアB(12)の構成
を示しており、図において、(13)は分岐命令のアドレ
スを格納したアドレスタグ、(9)はアドレスタク部
(13)のアドレスに格納されている命令の飛び先アドレ
ス、(10)は飛び先アドレス(9)から始まるNバイト
の命令コード、(11)は1′の時、そのエントリが無効
であることを示す無効ビットである。
FIG. 3 is a block diagram of a conventional microprocessor equipped with an instruction pipeline processing function and a branch target instruction buffer. In the figure, (1) is an instruction prefetch queue, (2) is an instruction decoding section, and FIG. (3) is an instruction execution unit, (12) is a branch target instruction buffer B,
(5) is a comparator that compares the jump destination address stored in the branch target instruction buffer B (12) with the true jump destination address after the instruction execution, and (6) disables the instruction decoding currently being executed. This is the cancel signal. FIG. 4 shows the structure of the branch target instruction buffer B (12). In the figure, (13) is the address tag storing the address of the branch instruction, and (9) is the address of the address tag section (13). The jump address of the stored instruction, (10) is an N-byte instruction code starting from the jump address (9), and (11) is an invalid bit indicating that the entry is invalid when 1 '. .

次に前記マイクロプロセツサの動作について説明す
る。命令プリフエツチキユー(1)では、主記憶がアク
セスされていない時間を利用して命令をあらかじめ取り
込んでおき、次に実行する命令を命令プリフエツチキユ
ー(1)から命令デコード部(2)のフエツチすること
により命令プリフエツチにかかる時間を短縮している。
また、命令実行部(3)で命令を実行している間に命令
デコード部(2)では次の命令をデコードしており、命
令実行部(3)で実行が終了したら命令デコード(2)
でデコードが終了している次の命令が速やかに実行され
る。このように前記マイクロプロセツサではパイプライ
ン処理を行うことにより、実効的な速度を上げている。
Next, the operation of the microprocessor will be described. In the instruction pre-fetch queue (1), an instruction is fetched in advance by utilizing the time when the main memory is not accessed, and the next instruction to be executed is transferred from the instruction pre-fetch queue (1) to the instruction decoding section (2). This reduces the time required for instruction prefetching.
Further, while the instruction executing unit (3) is executing the instruction, the instruction decoding unit (2) decodes the next instruction, and when the instruction executing unit (3) finishes executing the instruction decoding (2)
The next instruction whose decoding has been completed is immediately executed. As described above, in the microprocessor, the pipeline processing is performed to increase the effective speed.

しかし、分岐命令のように命令の流れを乱す命令、例
えばジャンプ命令が実行された時には命令デコード部
(2)でのデコード結果および命令プリフエツチキユー
(1)に取り込まれている命令データはキヤンセルさ
れ、命令プリフエツチキユー(1)は飛び先アドレスか
ら新たにキユーイングを行う。すなわち、ジヤンプ命令
実行後初めて実行される命令は、主記憶から直接取り込
まなければならず、その間命令実行部(3)は命令の実
行を中断しなければならない。
However, when an instruction such as a branch instruction that disturbs the flow of instructions, for example, a jump instruction, is executed, the decoding result in the instruction decoding unit (2) and the instruction data fetched by the instruction prefetch queue (1) are canceled. Then, the instruction pre-fetch queue (1) newly performs the queue from the jump destination address. That is, the instruction executed for the first time after the execution of the jump instruction must be fetched directly from the main memory, and the instruction execution unit (3) must interrupt the execution of the instruction during that time.

前記マイクロプロセツサでは、この点を改善するため
にブランチターゲツト命令バツフアB(12)を備えて分
岐の予測を行うようにしている。動作について説明する
と、命令プリフエツチキユー(1)より命令デコード部
(2)に命令コードが取り込まれると、命令デコードを
開始すると共に、その命令のアドレスの値でブランチタ
ーゲツト命令バツフアB(12)内を検索する。ブランチ
ターゲツト命令バツフアB(12)には、最近実行された
ジヤンプ命令などの分岐命令アドレスをアドレスタグ部
(13)とし、アドレスタグ部(13)のアドレスに格納さ
れている命令の飛び先アドレス(9)とそのアドレスか
ら始まるNバイトの命令コード(10)が格納されてい
る。また、各エントリにはそのエントリが有効であるか
無効であるかを示す無効ビツト(11)が付いており、そ
の値が‘1'の時にはそのエントリは無効となり、ヒット
しない。
In the microprocessor, in order to improve this point, a branch target instruction buffer B (12) is provided to perform branch prediction. Describing the operation, when the instruction code is fetched from the instruction prefetch queue (1) to the instruction decoding section (2), the instruction decoding is started, and the branch target instruction buffer B (12) is started at the address value of the instruction. Search inside. In the branch target instruction buffer B (12), a branch instruction address such as a recently executed jump instruction is used as an address tag section (13), and an instruction jump destination address (at the address of the address tag section (13) ( 9) and an N-byte instruction code (10) starting from the address are stored. Further, each entry has an invalid bit (11) indicating whether the entry is valid or invalid. When the value is "1", the entry is invalid and does not hit.

現在デコード中の命令が分岐命令でなかつたり、分岐
命令であつても初めて実行される時や実行されてから他
の命令が何度も登録されてブランチターゲツト命令バツ
フアB(12)内に所望のデータがないときなどのよう
に、ブランチターゲツト命令バツフアB(12)内に現在
デコード中の命令のアドレスの値が見つからない場合に
は命令デコード部(2)は命令プリフエツチキユー
(1)から次の命令を取り込み、処理を続行する。一
方、現在デコード中の命令が最近実行された分岐命令で
あれば、そのデータがブランチターゲツト命令バツフア
B(12)内に登録されているので、検索したときに、そ
このエントリがヒットする。そのとき、命令デコード部
(2)はブランチターゲツト命令バツフアB(12)に格
納されている飛び先の命令データ(9)を取り込む。ま
た、命令プリフエツチキユー(1)はリセットされると
ともに命令デコード部(2)への送出を中止し、予測さ
れる飛び先アドレス(9)のNバイド先のアドレスから
キユーイングを行う。前記の命令の流れを乱す命令が実
行フエーズに入り飛び先アドレスが決定すると、その飛
び先アドレスとブランチターゲツト命令バツフアB(1
2)に格納されている飛び先アドレス(10)とが比較器
(5)で比較される。比較の結果、一致すればそのまま
処理を続行し、不一致の場合には比較器(5)から出る
リセツト信号(6)により、現在命令デコード部(2)
でデコード中の命令はキヤンセルされ、また命令プリフ
エツチキユー(1)もリセツトされて命令実行部(3)
で決定された真の飛び先アドレスから命令が取り込まれ
るまで待たなければならない。予測がはずれて命令の流
れが乱れなかつた場合には、次回この命令が実行された
ときには命令の流れが乱れない可能性が高いとしてブラ
ンチターゲツト命令バツフアB(12)のヒツトしたエン
トリの無効ビツト(11)を‘1'にセツトしてそのエント
リを無効化する。また、現在デコード中の命令のアドレ
スかブランチターゲツト命令バツフアB(12)内に見つ
からなかつたにもかかわらず、分岐したときや、見つか
つたけれどもブランチターゲツト命令バツフアB(12)
の内容と異なるアドレスに分岐した場合にはブランチタ
ーゲツト命令バツフアB(12)へ登録操作を行う。この
とき、流れを乱した命令のアドレスをアドレスタグ(1
3)とし、飛び先アドレス(9)とそのアドレスから始
まるNバイトの命令コード(10)をブランチターゲツト
命令バツフアB(12)に格納する。無効ビツト(11)は
‘0'にセツトしておく。
When the instruction currently being decoded is not a branch instruction, or even if it is a branch instruction, it is executed for the first time, or another instruction is registered many times after it is executed, and the desired instruction is stored in the branch target instruction buffer B (12). When the value of the address of the instruction currently being decoded is not found in the branch target instruction buffer B (12), such as when there is no data, the instruction decoding unit (2) outputs from the instruction prefetch queue (1). Fetch the next instruction and continue processing. On the other hand, if the instruction currently being decoded is a recently executed branch instruction, the data is registered in the branch target instruction buffer B (12), so that when the search is performed, the entry there is hit. At this time, the instruction decoding unit (2) fetches the jump destination instruction data (9) stored in the branch target instruction buffer B (12). Also, the instruction prefetch queue (1) is reset, the transmission to the instruction decoding section (2) is stopped, and the instruction is executed from the N-bide destination address of the predicted jump destination address (9). When an instruction that disturbs the flow of the instruction enters the execution phase and the jump destination address is determined, the jump destination address and the branch target instruction buffer B (1
The comparator (5) compares the jump destination address (10) stored in 2). As a result of the comparison, if they match each other, the processing is continued as it is, and if they do not match, the current instruction decoding unit (2) is caused by the reset signal (6) output from the comparator (5).
The instruction being decoded is canceled, and the instruction prefetch queue (1) is reset, and the instruction execution unit (3)
It is necessary to wait until an instruction is fetched from the true jump destination address determined in. If the prediction is not correct and the instruction flow is not disturbed, it is highly possible that the instruction flow is not disturbed the next time this instruction is executed, and it is highly probable that the branch target instruction buffer B (12) has an invalid bit ( Set 11) to '1' to invalidate that entry. In addition, even if the address of the instruction currently being decoded or the branch target instruction buffer B (12) is not found, the branch target instruction buffer B (12) is detected when the branch is taken or when the branch is found.
If a branch is made to an address different from the contents of the above, the registration operation is performed to the branch target instruction buffer B (12). At this time, the address of the instruction that disturbed the flow is changed to the address tag (1
3), the jump destination address (9) and the N-byte instruction code (10) starting from that address are stored in the branch target instruction buffer B (12). The invalid bit (11) is set to '0'.

このように、上記ブランチターゲツト命令バツフアB
(12)の付加により命令の流れが乱れたときにもパイプ
ライン処理の乱れを最小限に抑え、マイクロプロセツサ
の実効的な処理速度を上げている。
In this way, the branch target instruction buffer B
Even if the flow of instructions is disturbed by the addition of (12), the disturbance of pipeline processing is minimized and the effective processing speed of the microprocessor is increased.

〔発明が解決しようとする問題点〕[Problems to be solved by the invention]

従来の命令のパイプライン処理機能を備えたデータ処
理装置は、以上のように分岐命令を実行する場合、分岐
命令のアドレスをアドレスタグとし飛び先の命令列の先
頭アドレス及びそのアドレスから始まるNバイトの命令
コードを格納したブランチターゲツト命令バツフアを備
えることにより、ジヤンプ命令などの分岐命令実行後の
パイプライン処理の乱れを抑えている。しかし、次に処
理すべき命令のアドレスは命令長を確定しそれに現在の
プログラムカウンタの値を加えることにより得られ、
又、ブランチターゲツト命令バツフアを検索し飛び先の
命令列を命令デコード部に取り込む準備を行うにも時間
がかかるので、分岐命令のアドレスで検索すると分岐命
令のデコード終了後待ち時間なしに飛び先の命令列を命
令デコード部に取り込むことが困難であるという問題点
があつた。
When executing a branch instruction as described above, the conventional data processing device having a pipeline processing function for an instruction uses the address of the branch instruction as an address tag and the start address of the instruction sequence of the jump destination and N bytes starting from that address. By providing a branch target instruction buffer that stores the instruction code of, the disturbance of pipeline processing after execution of branch instructions such as jump instructions is suppressed. However, the address of the next instruction to be processed is obtained by determining the instruction length and adding the current program counter value to it,
Also, it takes time to search the branch target instruction buffer and prepare for fetching the instruction sequence of the jump destination into the instruction decode unit. There is a problem that it is difficult to take the instruction sequence into the instruction decoding unit.

この発明は上記のような問題点を改善するためになさ
れたもので、分岐命令の次に実行される命令のデコード
をより早く開始することができるようにすることを目的
とする。
The present invention has been made to solve the above problems, and an object of the present invention is to enable decoding of an instruction executed after a branch instruction to be started earlier.

〔問題点を解決するための手段〕[Means for solving problems]

この発明に係るデータ処理装置は、分岐命令の前に実
行された命令のアドレスをアドレスタグとし、分岐先の
先頭アドレスおよびそのアドレスから始まるNバイトの
命令コードを格納したブランチターゲツト命令バツフア
と、命令実行部で現在実行中の命令の前に実行された命
令のプログラムカウンタ値を保持する旧プログラムカウ
ンタ記憶部を備えたものである。
A data processing apparatus according to the present invention uses a branch target instruction buffer in which an address of an instruction executed before a branch instruction is used as an address tag, and a start address of a branch destination and an N-byte instruction code starting from the address are stored. The old program counter storage unit holds the program counter value of the instruction executed before the instruction currently being executed by the execution unit.

〔作用〕[Action]

この発明におけるデータ処理装置は、分岐命令の前に
実行された命令のアドレスでブランチターゲツト命令バ
ツフアを検索することにより、分岐先のアドレスを予測
し、その分岐先アドレスから始まる命令列を分岐命令の
直後、より短時間にパイプラインに流す。また、分岐予
測がはずれた場合には、旧プログラムカウンタ記憶部の
アドレスでブランチターゲツト命令バツフアに新しい分
岐情報を登録する。
The data processor according to the present invention predicts the branch target address by searching the branch target instruction buffer with the address of the instruction executed before the branch instruction, and determines the instruction sequence starting from the branch target address as the branch instruction address. Immediately after that, it flows into the pipeline in a shorter time. If the branch prediction is incorrect, new branch information is registered in the branch target instruction buffer at the address of the old program counter storage unit.

〔実施例〕〔Example〕

以下、この発明の一実施例について説明する。第1図
はこの発明の一実施例によるマイクロプロセツサのブロ
ツク図であり、図において(1)は命令プリフエツチキ
ユー、(2)は命令デコード部、(3)は命令実行部、
(4)はブランチターゲツト命令バツフアA、(5)は
ブランチターゲツト命令バツフアA(4)に格納されて
いる飛び先アドレス(9)と命令実行後の真の飛び先ア
ドレスとを比較する比較器、(6)は現在実行中の命令
デコードを無効化するキヤンセル信号である。(7)は
命令実行部(3)で現在実行中の命令の直前に実行され
た命令のプログラムカウンタを保持している旧プログラ
ムカウンタ記憶部、第2図はブランチターゲツト命令バ
ツフアA(4)の構成例であり、図において(8)は分
岐命令の直前に実行された命令のアドレスを格納したア
ドレスタグ、(9)はアドレスタグ部(8)のアドレス
の次に実行された分岐命令の飛び先アドレス、(10)は
飛び先アドレス(9)から始まるNバイトの命令コー
ド、(11)は‘1'の時、そのエントリが無効であること
を示す無効ビツトである。
An embodiment of the present invention will be described below. FIG. 1 is a block diagram of a microprocessor according to an embodiment of the present invention. In the figure, (1) is an instruction prefetch queue, (2) is an instruction decode section, (3) is an instruction execution section,
(4) is a branch target instruction buffer A, (5) is a comparator for comparing the jump destination address (9) stored in the branch target instruction buffer A (4) with the true jump address after the instruction execution, (6) is a cancel signal for invalidating the instruction decoding currently being executed. (7) is an old program counter storage unit that holds a program counter of an instruction executed immediately before the instruction currently being executed by the instruction execution unit (3). FIG. 2 shows a branch target instruction buffer A (4). In the figure, (8) is an address tag storing the address of the instruction executed immediately before the branch instruction, and (9) is the jump of the branch instruction executed next to the address of the address tag section (8). The destination address, (10) is an N-byte instruction code starting from the jump destination address (9), and (11) is an invalid bit indicating that the entry is invalid when it is '1'.

次に上記実施例の動作について説明する。命令プリフ
エツチキユー(1)より命令デコード部(2)に命令コ
ードが取り込まれると、命令デコードを開始すると共に
その命令のアドレス値でブランチターゲツト命令バツフ
アA(4)内を検索する。ブランチターゲツト命令バツ
フアA(4)には、最近実行された分岐命令の直前に実
行された命令のアドレスをアドレスタグ(8)とし、ア
ドレスタグ部(8)のアドレスの次に実行された流れを
乱す命令の飛び先アドレス(9)と、そのアドレスから
始まるNバイトの命令コード(10)が格納されている。
また、各エントリにはそのエントリが有効であるか無効
であるかを示す無効ビツト(11)が付いており、その値
が‘1'の時にはそのエントリは無効となりヒツトしな
い。現在デコード中の命令の次の命令がジヤンプ命令な
どの分岐命令であつたり、分岐命令であつてもその命令
が初めて実行される場合や実行されてから他の命令が何
度も登録されてブランチターゲツト命令バツファA
(4)内に所望のデータがないときなどのように、ブラ
ンチターゲツト命令バツフアA(4)内に、現在デコー
ド中の命令のアドレスの値が見つからない場合には、命
令デコード部(2)は命令プリフエツチキユー(1)か
ら次の命令を取り込み、処理を続行する。一方、現在デ
コード中の命令が最近実行された命令の流れを乱す命令
であれば、そのデータがブランチターゲツト命令バツフ
アA(4)に登録されているので、検索したときにその
エントリがヒットする。このとき、分岐命令の直前に実
行される命令のアドレスでブランチターゲツト命令バツ
フアA(4)内を検索を開始しているので、分岐命令の
アドレスで検索を始めるよりも早く検索を開始している
ことになる。したがつて、ヒツトしたエントリの命令コ
ード(10)を命令デコード部(2)に取り込む準備がそ
の分早くできるため、分岐命令のデコード終了後直ちに
飛び先の命令コード(10)を命令デコード部(2)に取
り込むことができる。又、命令プリフエツチキユー
(1)はリセツトされると共に命令デコード部(2)へ
の送出を中止し、予測される飛び先アドレス(9)のN
バイト先のアドレスからキユーイングを行う。前記の分
岐命令が実行フエーズに入り、飛び先アドレスが決定す
るとその飛び先アドレスとブランチターゲツト命令バツ
フアA(4)に格納されている飛び先アドレス(10)と
が比較器(5)で比較される。比較の結果、一致すれば
そのまま処理を続行し、不一致の場合には比較器(5)
から出るリセツト信号(6)により、現在行われている
命令デコードがキヤンセルされ、また命令プリフエツチ
キユー(1)もリセツトされて命令実行部(3)で決定
された真の飛び先アドレスから命令が取り込まれるまで
待たなければならない。予測がはずれて分岐しなかつた
場合には次回この命令が実行されたときには分岐しない
可能性が高いとして、命令実行部(3)で現在実行中の
命令の直前に実行された命令のプログラムカウンタを保
持している旧プログラムカウンタ記憶部(7)の内容に
対応するエントリの無効ビットを‘1'にセツトして、そ
のエントリを無効化する。又、現在デコード中の命令の
アドレスがブランチターゲツト命令バツフア(4)内に
見つからなかつたにもかかわらず分岐したときや、見つ
かつたけれどもブランチターゲツト命令バツフアA
(4)の内容と異なるアドレスに分岐した場合には、ブ
ランチターゲツト命令バツフアA(4)に登録を行う。
このとき、旧プログラムカウンタ記憶部(7)が保持し
ている分岐命令の直前の命令のアドレスをアドレスタグ
(8)とし、飛び先アドレス(9)とそのアドレスから
始まるNバイトの命令コード(10)をブランチターゲツ
ト命令バツフアA(4)に格納する。無効ビツト(11)
は、‘0'にセツトしておく。
Next, the operation of the above embodiment will be described. When the instruction code is fetched from the instruction prefetch queue (1) to the instruction decoding section (2), the instruction decoding is started and the branch target instruction buffer A (4) is searched by the address value of the instruction. In the branch target instruction buffer A (4), the address of the instruction executed immediately before the recently executed branch instruction is used as the address tag (8), and the flow executed next to the address of the address tag section (8) is set. The jump destination address (9) of the disturbed instruction and the N-byte instruction code (10) starting from the address are stored.
Each entry has an invalid bit (11) indicating whether the entry is valid or invalid. When the value is "1", the entry is invalid and does not hit. If the instruction next to the instruction currently being decoded is a branch instruction such as a jump instruction, or if the instruction is executed for the first time even if it is a branch instruction, other instructions are registered many times and branch Target command buffer A
When the value of the address of the instruction currently being decoded is not found in the branch target instruction buffer A (4), such as when there is no desired data in (4), the instruction decoding unit (2) The next instruction is fetched from the instruction prefetch (1) and the processing is continued. On the other hand, if the instruction currently being decoded is an instruction that disturbs the flow of the recently executed instruction, the data is registered in the branch target instruction buffer A (4), so that the entry is hit when the search is performed. At this time, since the search in the branch target instruction buffer A (4) is started with the address of the instruction executed immediately before the branch instruction, the search is started earlier than the search with the address of the branch instruction. It will be. Therefore, since the instruction code (10) of the hit entry can be prepared to be fetched into the instruction decode unit (2) accordingly, the instruction code (10) of the jump destination is immediately transferred to the instruction decode unit (10) immediately after the completion of the decoding of the branch instruction. 2) can be incorporated. Further, the instruction prefetch queue (1) is reset and at the same time the sending to the instruction decoding section (2) is stopped, and the predicted jump address (9) is N.
Queuing is performed from the byte address. When the branch instruction enters the execution phase and the jump destination address is determined, the jump destination address and the jump destination address (10) stored in the branch target instruction buffer A (4) are compared by the comparator (5). It As a result of the comparison, if they match, the process is continued, and if they do not match, the comparator (5)
The reset signal (6) issued from the instruction cancels the instruction decoding currently being performed, and the instruction prefetch (1) is also reset, and the instruction is executed from the true jump destination address determined by the instruction execution unit (3). Have to wait until If the prediction is incorrect and no branch occurs, it is highly possible that the next execution of this instruction will not cause a branch, and the instruction execution unit (3) sets the program counter of the instruction executed immediately before the instruction currently being executed. The invalid bit of the entry corresponding to the contents of the stored old program counter storage unit (7) is set to "1" to invalidate the entry. Further, when the address of the instruction currently being decoded is not found in the branch target instruction buffer (4) and the instruction is branched, or when the branch is found but the branch target instruction buffer A is found.
When branching to an address different from the content of (4), it is registered in the branch target instruction buffer A (4).
At this time, the address of the instruction immediately before the branch instruction held in the old program counter storage unit (7) is used as the address tag (8), and the jump address (9) and the N-byte instruction code (10) starting from that address ) Is stored in the branch target instruction buffer A (4). Invalid Bit (11)
Set to '0'.

このように、分岐命令の直前に実行された命令のアド
レスをアドレスタグとするブランチターゲツト命令バツ
フア(4)を備えることにより、分岐命令からデコード
される前に飛び先の予測を開始することができるように
なり、分岐命令のデコード終了後より早く飛び先の命令
コードを命令デコード部(2)に取り込むことができ
る。
As described above, by providing the branch target instruction buffer (4) having the address of the instruction executed immediately before the branch instruction as the address tag, the prediction of the jump destination can be started before being decoded from the branch instruction. As a result, the instruction code of the jump destination can be fetched into the instruction decoding unit (2) earlier than the completion of decoding the branch instruction.

なお、上記実施例ではブランチターゲツト命令バツフ
アA(4)内を検索した結果ビツトした場合、ブランチ
ターゲツト命令バツフアA(4)に格納してある命令コ
ードを直接命令デコード部(2)に入れているが、命令
デコード部(2)の入力バスの大きさに比べブランチタ
ーゲツト命令バツフアA(4)内に格納されたデータが
大きいときには、命令コードの一部を命令デコード部
(2)に入れ、残りの命令コードを命令プリフエツチキ
ユー(1)に取り込んでもよい。
In the above embodiment, when the result of the search in the branch target instruction buffer A (4) is bit, the instruction code stored in the branch target instruction buffer A (4) is directly input to the instruction decoding unit (2). However, when the data stored in the branch target instruction buffer A (4) is larger than the size of the input bus of the instruction decoding unit (2), a part of the instruction code is put into the instruction decoding unit (2) and the rest is left. The instruction code of 1 may be incorporated in the instruction prefetch queue (1).

なお、上記実施例では、ブランチターゲツト命令バツ
フアA(4)内を検索した結果ヒツトした場合、命令プ
リフエツチキユー(1)をリセツトし、ブランチターゲ
ツト命令バツフアA(4)内の飛び先アドレス(9)の
Nバイト先からキユーイングを行なつたが、条件ジヤン
プでは前回はジヤンプしたが今回はジヤンプしないとい
う場合も考えられるので、命令デコードはブランチター
ゲツト命令バツフアA(4)の命令データを用いて行う
が、命令プリフエツチキユーはリセツトせず命令デコー
ド部(2)へのデータの送出のみ中止しておき、比較器
(5)での比較結果が一致した時初めて命令プリフエツ
チキユー(1)をリセツトして新たに飛び先アドレスか
らキユーイングを行い、予測がはずれて命令の流れが乱
れなかつた場合には命令プリフエツチキユー(1)に取
り込まれていた命令コードを命令デコード部に入れ、キ
ユーイングを続行するようにしてもよい。
In the above embodiment, if the result of searching in the branch target instruction buffer A (4) is a hit, the instruction prefetch (1) is reset and the jump destination address () in the branch target instruction buffer A (4) is Although it is possible to perform the query from N bytes of 9), the condition jump may have been jumped last time but not jumped this time. Therefore, the instruction decode uses the instruction data of the branch target instruction buffer A (4). However, the instruction prefetch is not reset and only the transmission of the data to the instruction decoding unit (2) is stopped, and the instruction prefetch (1 ) Is reset and queuing is newly performed from the jump destination address, and if the prediction is off and the flow of instructions is not disturbed, Decree pre Hue Tutsi cue placed in the instruction decoding unit to the instruction code that was incorporated into (1), it may be to continue Kiyuingu.

なお、上記実施例では、分岐命令の直前に実行された
命令のアドレスで分岐予測を行なつているが、直前でな
くても分岐命令の前に実行されたどの命令のアドレスで
分岐予測を行つてもよい。
In the above embodiment, the branch prediction is performed at the address of the instruction executed immediately before the branch instruction, but the branch prediction is performed at the address of any instruction executed before the branch instruction even if not immediately before. May come.

〔発明の効果〕〔The invention's effect〕

以上のようにこの発明によれば、ブランチターゲツト
命令バツフアのアドレスタグを分岐命令の直前に実行さ
れた命令のアドレスとすることにより、分岐命令のデコ
ード終了後、分岐命令の次に実行される命令列を待ち時
間なしにもしくは待ち時間があるとしても従来の装置よ
りは短時間に命令デコード部にフエツチすることができ
るので、命令が分岐したときにもパイプライン処理の乱
れを抑えマイクルプロセツサの実効的な速度を上げるこ
とができるという効果がある。
As described above, according to the present invention, by using the address tag of the branch target instruction buffer as the address of the instruction executed immediately before the branch instruction, the instruction executed next to the branch instruction after the decoding of the branch instruction is completed. The queue can be fetched to the instruction decoding unit in a shorter time than the conventional device even if there is no waiting time, even if there is a waiting time, so even when an instruction branches, the disturbance of pipeline processing is suppressed and the micr processor The effect is that the effective speed can be increased.

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

第1図はこの発明の一実施例によるマイクロプロセツサ
のブロツク図、第2図は第1図のブランチターゲツト命
令バツフアAの構成例、第3図は従来のマイクロプロセ
ツサのブロツク図、第4図は第3図のブランチターゲツ
ト命令バツフアBの構成である。 図において、(1)は命令プリフエツチキユー、(2)
は命令デコード部、(3)は命令実行部、(4)はブラ
ンチターゲツト命令バツフアA、(5)はブランチター
ゲツト命令バツフアAに格納されている飛び先アドレス
(8)と命令実行後の真の飛び先アドレスを比較する比
較器、(6)は現在実行中の命令デコードを無効化する
キヤンセル信号、(7)は命令実行部(3)で現在実行
中の命令の直前に実行された命令のプログラムカウンタ
を保持する旧プログラムカウンタ記憶部、(8)は分岐
命令の直前に実行された命令のアドレスを格納したアド
レスタグ、(9)は分岐命令の飛び先アドレス、(10)
は飛び先アドレス(9)から始まるNバイドの命令コー
ド、(11)は‘1'の時そのエントリが無効であることを
示す無効ビツト、(12)はブランチターゲツト命令バツ
フアB、(13)は分岐命令のアドレスを格納したアドレ
スタグである。 なお、図中同一符号は同一、又は相当部分を示す。
FIG. 1 is a block diagram of a microprocessor according to an embodiment of the present invention, FIG. 2 is a configuration example of the branch target instruction buffer A of FIG. 1, and FIG. 3 is a block diagram of a conventional microprocessor. The figure shows the structure of the branch target instruction buffer B of FIG. In the figure, (1) is the instruction prefetch, (2)
Is an instruction decoding unit, (3) is an instruction execution unit, (4) is a branch target instruction buffer A, (5) is a jump destination address (8) stored in the branch target instruction buffer A, and a true address after the instruction execution. A comparator for comparing the jump destination address, (6) is a cancel signal for invalidating the instruction decoding currently being executed, and (7) is the instruction executed immediately before the instruction currently being executed by the instruction executing section (3). Old program counter storage unit that holds the program counter, (8) is an address tag that stores the address of the instruction executed immediately before the branch instruction, (9) is the jump destination address of the branch instruction, (10)
Is an N-byte instruction code starting from the jump address (9), (11) is an invalid bit indicating that the entry is invalid when it is "1", (12) is a branch target instruction buffer B, and (13) is An address tag that stores the address of a branch instruction. The same reference numerals in the drawings indicate the same or corresponding parts.

Claims (1)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】複数の命令を一定規則に従う領域認識記号
で順序付けされた複数の領域に格納する第一の記憶装置
と、上記第一の記憶装置の第一の領域認識記号で区別さ
れる領域に格納された一つまたは複数の命令からなる第
一の命令列を実行する命令実行装置と、上記第一の命令
列が上記命令実行装置で実行されている間に、上記第一
の命令列の次に上記命令実行装置で実行されるべき上記
第一の記憶装置の第二の領域認識記号で区別される領域
に格納された一つまたは複数の命令からなる第二の命令
列を解析する命令解析装置と、上記第二の命令列が上記
命令解析装置で解析されている間に、上記第二の命令列
の次に上記命令解析装置で解析されるべき上記第一の記
憶装置の第三の領域認識記号で区別される領域に格納さ
れた一つまたは複数の命令からなる第三の命令列を取り
込む命令先取り装置と、上記命令実行装置で上記第一の
記憶装置の第五の領域認識記号で区別される領域に格納
された一つまたは複数の命令からなる第五の命令列を実
行した結果、上記第一の記憶装置の上記第五の領域認識
記号で区別される領域に引き続いた順序の領域以外の第
六の領域認識記号で区別される領域に格納されている一
つまたは複数の命令からなる第六の命令列を次に上記命
令実行装置で実行する必要がある場合に、上記第五の命
令列の前に実行された上記第一の記憶装置の第四の領域
認識記号で区別された一つまたは複数の命令からなる第
四の命令列の領域認識記号を索引とし、上記第六の領域
認識記号を第一のデータ記憶部に記憶し、上記第六の命
令列を第二のデータ記憶部に記憶する第二の記憶装置
と、上記命令実行装置が次に実行すべき領域認識記号と
上記第二の記憶装置の上記第一のデータ記憶部に格納さ
れている領域認識記号の一つとを比較する比較装置と、
上記命令実行装置が現在実行している命令列の前に上記
命令実行装置が実行した命令列の領域認識記号を記憶す
る第三の記憶装置とを持つことを特徴としたデータ処理
装置。
1. A first storage device for storing a plurality of instructions in a plurality of regions ordered by region recognition symbols according to a certain rule, and a region distinguished by a first region recognition symbol of the first storage device. An instruction execution device for executing a first instruction sequence consisting of one or a plurality of instructions stored in, and the first instruction sequence while the first instruction sequence is being executed by the instruction execution device. Next, the second instruction sequence consisting of one or more instructions stored in the area distinguished by the second area recognition symbol of the first storage device to be executed by the instruction execution device is analyzed. While the instruction analysis device and the second instruction sequence are being analyzed by the instruction analysis device, the second instruction sequence is followed by the first storage device which is to be analyzed by the instruction analysis device. One or multiple stored in the area distinguished by the three area recognition symbols From a command prefetching device that fetches a third command sequence consisting of the command and one or a plurality of commands stored in a region distinguished by the fifth region recognition symbol of the first storage device in the command execution device. As a result of executing the fifth instruction sequence, the area is distinguished by the sixth area recognition symbol other than the area in the order following the area distinguished by the fifth area recognition symbol of the first storage device. The first memory executed before the fifth instruction sequence, when the sixth instruction sequence consisting of one or more stored instructions needs to be executed next by the instruction execution device. The area recognition symbol of the fourth command sequence consisting of one or more instructions distinguished by the fourth area recognition symbol of the device is used as an index, and the sixth area recognition symbol is stored in the first data storage unit. , Storing the sixth command sequence in the second data storage unit A comparison for comparing the area recognition symbol to be executed next by the second memory device and the instruction execution device with one of the area recognition symbols stored in the first data storage unit of the second memory device. Device,
A data processing device comprising: a third storage device for storing an area recognition symbol of an instruction sequence executed by the instruction execution device before the instruction sequence currently executed by the instruction execution device.
JP61234860A 1986-10-01 1986-10-01 Data processing device Expired - Lifetime JP2508021B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP61234860A JP2508021B2 (en) 1986-10-01 1986-10-01 Data processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61234860A JP2508021B2 (en) 1986-10-01 1986-10-01 Data processing device

Publications (2)

Publication Number Publication Date
JPS6388643A JPS6388643A (en) 1988-04-19
JP2508021B2 true JP2508021B2 (en) 1996-06-19

Family

ID=16977478

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61234860A Expired - Lifetime JP2508021B2 (en) 1986-10-01 1986-10-01 Data processing device

Country Status (1)

Country Link
JP (1) JP2508021B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0235525A (en) * 1988-07-25 1990-02-06 Fujitsu Ltd Instruction fetch control method
JPH0769811B2 (en) * 1988-12-21 1995-07-31 松下電器産業株式会社 Data processing device
US6393551B1 (en) * 1999-05-26 2002-05-21 Infineon Technologies North America Corp. Reducing instruction transactions in a microprocessor

Also Published As

Publication number Publication date
JPS6388643A (en) 1988-04-19

Similar Documents

Publication Publication Date Title
US4847753A (en) Pipelined computer
CA1268555A (en) Branch stream coprocessor
JP2603626B2 (en) Data processing device
US5276882A (en) Subroutine return through branch history table
JPH06110683A (en) Method and apparatus for extending branch target of microprocessor
JPH03147022A (en) Branch instruction processing apparatus and method
KR100259306B1 (en) Data processor having a branch command buffer
US20230350683A1 (en) Branch prediction method, branch prediction apparatus, processor, medium, and device
JPS6356731A (en) Data processor
US20060242394A1 (en) Processor and processor instruction buffer operating method
US8943301B2 (en) Storing branch information in an address table of a processor
JP3486690B2 (en) Pipeline processor
JP2508021B2 (en) Data processing device
JPH07306785A (en) Processor with branch instruction executing function and branch instruction control method
EP2693333A1 (en) Processor and instruction processing method thereof
JP2532560B2 (en) Data processing device for high-performance exception handling
JP3493110B2 (en) High-speed branch processing unit
JPH04246728A (en) Information processor
JPH0377138A (en) Data processor
JPS63106046A (en) Data processor
JPH04213727A (en) Information processor
JPS63124135A (en) Data processor
JPH052483A (en) Instruction processor
JPS6393042A (en) Data processor
JPH01106141A (en) Data processor

Legal Events

Date Code Title Description
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term