JP3182438B2 - Data processor - Google Patents

Data processor

Info

Publication number
JP3182438B2
JP3182438B2 JP28103091A JP28103091A JP3182438B2 JP 3182438 B2 JP3182438 B2 JP 3182438B2 JP 28103091 A JP28103091 A JP 28103091A JP 28103091 A JP28103091 A JP 28103091A JP 3182438 B2 JP3182438 B2 JP 3182438B2
Authority
JP
Japan
Prior art keywords
instruction
address
branch
buffer
prefetch
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
JP28103091A
Other languages
Japanese (ja)
Other versions
JPH05120013A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP28103091A priority Critical patent/JP3182438B2/en
Priority to KR1019920018637A priority patent/KR100259306B1/en
Priority to US07/965,441 priority patent/US5454087A/en
Publication of JPH05120013A publication Critical patent/JPH05120013A/en
Application granted granted Critical
Publication of JP3182438B2 publication Critical patent/JP3182438B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【産業上の利用分野】本発明は分岐命令を実行する機能
と命令をプリフェッチする機能を共に有するデータプロ
セッサに関わり、特に分岐履歴情報に対して命令プリフ
ェッチ機能を連動させることにより、高速に分岐処理を
実行するデータプロセッサに関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a data processor having both a function of executing a branch instruction and a function of prefetching an instruction. In particular, the present invention relates to a branch processing at high speed by linking an instruction prefetch function to branch history information. A data processor that performs

【0002】[0002]

【従来の技術】従来、分岐処理の高速化のために、分岐
の履歴情報として分岐命令のアドレスと分岐先命令のア
ドレスをバッファに格納しておき、命令プリフェッチ時
にプリフェッチアドレスを入力として履歴情報を検索
し、先行的に分岐するデータ装置について、特開平1−
240931号公報に記載がある。
2. Description of the Related Art Conventionally, in order to speed up branch processing, the address of a branch instruction and the address of a branch destination instruction are stored in a buffer as history information of a branch, and the history information is input using a prefetch address at the time of instruction prefetch. Japanese Patent Laid-Open Publication No. Hei.
No. 2,093,131.

【0003】また従来、同じく分岐処理の高速化のため
に、分岐の履歴情報として分岐命令に先行する命令のア
ドレスと分岐先命令のアドレスをバッファに格納してお
き、命令解読時に命令アドレスを入力として履歴情報を
検索し、無条件分岐命令の実行処理を削除することで高
速に分岐するデータプロセッサについて、特開平2−1
66520号公報に記載がある。
Conventionally, in order to speed up branch processing, the address of an instruction preceding a branch instruction and the address of a branch destination instruction are stored in a buffer as branch history information, and the instruction address is input when the instruction is decoded. Japanese Patent Application Laid-Open No. Hei 2-1 describes a data processor that searches for history information and branches at high speed by deleting the execution of unconditional branch instructions.
No. 66520.

【0004】[0004]

【発明が解決しようとする課題】上記従来技術のいずれ
も、主に無条件分岐命令の分岐処理を高速化するもので
あるが、無条件分岐命令の一つであるサブルーチンから
のリターン命令(rts命令)の分岐処理には対応でき
ないことが本願発明者等の検討により明らかとされた。
これは以下のような理由による。
In each of the above-mentioned prior arts, mainly for speeding up branch processing of an unconditional branch instruction, a return instruction (rts) from a subroutine which is one of the unconditional branch instructions is used. The inventors of the present application have clarified that they cannot cope with the branch processing of the instruction).
This is for the following reasons.

【0005】上記従来技術はいずれも、分岐命令の各々
は常に分岐先アドレスが不変であるという仮定に立っ
て、分岐の履歴情報が次の分岐処理にも役に立つと考え
ている。しかしながら、サブルーチンからのリターン命
令の場合にはその仮定が成り立たない。なぜならば、リ
ターン命令はサブルーチンからコール元のルーチンへの
リターンに用いられる命令であるため、コール元が異な
れば当然、リターン先のアドレスも異なるものとなるか
らである。
[0005] All of the above prior arts believe that the branch history information is useful for the next branch processing on the assumption that each branch instruction always has the same branch destination address. However, in the case of a return instruction from a subroutine, that assumption does not hold. This is because the return instruction is an instruction used for returning from the subroutine to the routine of the caller, and therefore, if the caller is different, the address of the return destination is naturally different.

【0006】サブルーチンのコールとリターンの処理
は、基本的には次のように行う。
The subroutine call and return processes are basically performed as follows.

【0007】まず、コール元のルーチンではサブルーチ
ンコール命令を実行する。サブルーチンコール命令(b
sr命令)は、まずリターン先アドレスを計算し、スタ
ックと呼ばれるメモリ上のLIFOキュー(ソフトウェ
アで作成する)に、リターンアドレスをストアする。そ
して、そのサブルーチンコール命令(bsr命令)によ
って、サブルーチンへと分岐する。続いてサブルーチン
での処理を実行し、最後にリターン命令を実行する。リ
ターン命令はまずスタックからリターンアドレスを読み
出し、続いてそのリターンアドレスへと分岐することで
コール元のルーチンにリターンする。
First, the calling routine executes a subroutine call instruction. Subroutine call instruction (b
The sr instruction) first calculates a return destination address and stores the return address in a LIFO queue (created by software) on a memory called a stack. Then, a branch is made to a subroutine by the subroutine call instruction (bsr instruction). Subsequently, the subroutine is executed, and finally, a return instruction is executed. The return instruction first reads the return address from the stack, and then returns to the calling routine by branching to the return address.

【0008】このように、リターンアドレスはサブルー
チンコール命令(bsr命令)のアドレスによって定ま
るものであって、一つのサブルーチンをコールするサブ
ルーチンコール命令(bsr命令)が複数ある場合に
は、リターン命令(rts命令)に対応したリターンア
ドレスは一意には定まらない。
As described above, the return address is determined by the address of the subroutine call instruction (bsr instruction). When there are a plurality of subroutine call instructions (bsr instructions) for calling one subroutine, the return instruction (rts The return address corresponding to (instruction) is not uniquely determined.

【0009】従って、本発明の目的とするところは、高
速に分岐処理を実行することが可能であるとともに、無
条件分岐命令の一つであるリターン命令の分岐処理に対
応することの可能なデータプロセッサを提供することに
ある。
Accordingly, it is an object of the present invention to provide a data processing apparatus capable of executing branch processing at high speed and capable of coping with branch processing of a return instruction which is one of unconditional branch instructions. It is to provide a processor.

【0010】[0010]

【課題を解決するための手段】上記目的を解決するため
には、次の二つの手段が採用される。
In order to achieve the above object, the following two means are employed.

【0011】(1)第1のバッファに、データプロセッ
サが一度実行した分岐命令のアドレス、分岐先アドレ
ス、分岐命令の種類を示す分岐履歴情報を格納する。
(1) The first buffer stores the address of the branch instruction once executed by the data processor, the branch destination address, and the branch history information indicating the type of the branch instruction.

【0012】(2)第2のバッファにサブルーチンから
のリターンアドレスを格納する。
(2) The return address from the subroutine is stored in the second buffer.

【0013】[0013]

【作用】第1のバッファには、データプロセッサが一度
実行した分岐命令のアドレス、分岐先アドレス、分岐命
令の種類を示す分岐履歴情報が格納されている。従っ
て、同一の分岐命令をデータプロセッサが実行するに際
して、第1のバッファから分岐先アドレスが高速に読み
出され、次命令プリフェッチアドレスが生成されること
ができる。
The first buffer stores the address of the branch instruction once executed by the data processor, the branch destination address, and the branch history information indicating the type of the branch instruction. Therefore, when the data processor executes the same branch instruction, the branch destination address can be read from the first buffer at a high speed, and the next instruction prefetch address can be generated.

【0014】一方、リターンアドレスを格納する第2の
バッファは、サブルーチンコール命令(bsr命令)を
実行する際に書き込みを行い、リターン命令(rts命
令)がプリフェッチされたときに読み出しを行うLIF
O(ラストイン・ファーストアウト)キューである。
尚、リターン命令(rts命令)を実行するまで、第2
のバッファのポインタの更新は行わない。言い替える
と、第2のバッファはメモリ上にあるスタックの一部
(リターンアドレス)のコピーを格納するキャッシュメ
モリである。
On the other hand, the second buffer for storing the return address performs writing when a subroutine call instruction (bsr instruction) is executed, and performs reading when the return instruction (rts instruction) is prefetched.
This is an O (last in first out) queue.
Note that until the return instruction (rts instruction) is executed, the second
Does not update the buffer pointer. In other words, the second buffer is a cache memory that stores a copy of a part (return address) of the stack in the memory.

【0015】リターン命令がプリフェッチされたことの
検出は、分岐履歴情報を格納する第1のバッファを用い
て行う。すなわち、リターン命令(rts命令)もまた
他の分岐命令(bra命令、bsr命令)と同様に、分
岐履歴情報をこの第1のバッファに登録する。但し、リ
ターン命令の場合はその検出にのみ第1のバッファを使
用し、分岐先アドレスのフィールドは使用しない。代り
に、上記のリターンアドレスを格納する第2のバッファ
から、分岐先アドレスを得る。
The detection of the prefetch of the return instruction is performed using the first buffer storing the branch history information. That is, the return instruction (rts instruction) also registers the branch history information in the first buffer, like the other branch instructions (bra instruction, bsr instruction). However, in the case of a return instruction, the first buffer is used only for its detection, and the field of the branch destination address is not used. Instead, the branch destination address is obtained from the second buffer storing the return address.

【0016】リターン命令を他の分岐命令と共に、同一
の分岐履歴情報を格納する第1のバッファに登録するた
め、分岐先アドレスとしていずれのバッファのそれを用
いるかを判断するための情報が必要になる。この問題を
解決するため、分岐履歴情報を格納する第1のバッファ
内に、分岐命令の種類を示す情報(分岐命令タイプ)を
格納している。
Since the return instruction is registered together with the other branch instructions in the first buffer storing the same branch history information, information for determining which buffer is used as the branch destination address is required. Become. To solve this problem, information indicating the type of branch instruction (branch instruction type) is stored in the first buffer storing the branch history information.

【0017】また別の解決方法として、単純に第1と第
2のバッファのいずれの分岐先アドレスを使用するかを
示す情報(選択候補が二つの場合には1ビット)を格納
してもいい。
As another solution, information indicating which branch destination address of the first and second buffers is to be used (1 bit if there are two selection candidates) may be stored. .

【0018】また第1と第2のいずれのバッファの分岐
先アドレスを用いるかを示す情報は、必ずしも分岐命令
履歴情報を格納する第1バッファ内に持つ必要はない。
データプロセッサの制御回路内に、同等の情報を格納す
ることでも、同じ効果を期待できる。
The information indicating which of the first and second buffers uses the branch destination address does not necessarily need to be stored in the first buffer for storing the branch instruction history information.
The same effect can be expected by storing equivalent information in the control circuit of the data processor.

【0019】また分岐履歴情報の検索に、プリフェッチ
アドレスではなく命令アドレスを使用することも可能で
ある。但しこの方法では、以下の実施例に示すほどの分
岐高速化の効果は期待できない。
It is also possible to use an instruction address instead of a prefetch address to search for branch history information. However, in this method, the effect of speeding up branching as shown in the following embodiments cannot be expected.

【0020】また分岐履歴情報の検索に特開平2−16
6520号公報のように、分岐命令に先行する命令のア
ドレスを使用することも可能である。マイクロプロセッ
サのアーキテクチャによっては、一命令以上の先行を有
する場合もある。
Japanese Patent Laid-Open No. 2-16 / 1990 discloses a search for branch history information.
It is also possible to use the address of the instruction preceding the branch instruction, as in JP 6520. Some microprocessor architectures have more than one instruction precedence.

【0021】[0021]

【実施例】図1は本発明の一実施例であるマイクロプロ
セッサのブロック図である。本発明は命令プリフェッチ
時の分岐処理を高速化する手法であるため、ここでは命
令プリフェッチ部を中心に説明する。
FIG. 1 is a block diagram of a microprocessor according to an embodiment of the present invention. Since the present invention is a technique for speeding up branch processing at the time of instruction prefetch, the following description focuses on the instruction prefetch unit.

【0022】1.マイクロプロセッサの内部構造 図1を用いてマイクロプロセッサの内部構造を説明す
る。図1のマイクロプロセッサの各構成要素の機能は次
のとおりである。
1. The internal structure of the microprocessor will be described with reference to FIG. The function of each component of the microprocessor of FIG. 1 is as follows.

【0023】PAG 101 プリフェッチアドレス発
生器(加算器)。 BW 102 分岐命令用バッファ。分岐先アドレス
を保持する。 RB 103 リターンバッファ。リターンアドレス
を保持する。 IC 104 命令キャッシュ。 PFQ 111 プリフェッチキュー。 PCQ 121 命令アドレスキュー。PAGで生成し
た命令アドレスを保持する。 ID 113 命令デコーダ。 RF 114 レジスタファイル。 ALU 117 整数論理演算器。 OC 119 オペランドキャッシュ。 上記構成要素のうち、PAG、BW、RB、IC、PF
Q、PCQが命令プリフェッチ部に含まれる。以下順に
各構成要素を説明する。
PAG 101 Prefetch address generator (adder). BW 102 Branch instruction buffer. Holds the branch destination address. RB 103 return buffer. Holds return address. IC 104 instruction cache. PFQ 111 prefetch queue. PCQ 121 Instruction address queue. Holds the instruction address generated by PAG. ID 113 Instruction decoder. RF 114 register file. ALU 117 Integer logical operation unit. OC 119 Operand cache. Among the above components, PAG, BW, RB, IC, PF
Q and PCQ are included in the instruction prefetch unit. Hereinafter, each component will be described in order.

【0024】29ビット加算器であるPAG101は、
プリフェッチアドレスを生成する。プログラムを逐次実
行する場合、すなわち分岐時以外には、一回プリフェッ
チする毎にプリフェッチアドレスに固定値を加算して次
のプリフェッチアドレスを生成する。加算する固定値は
一度にプリフェッチする命令のバイト幅と等しく、外部
メモリとIC(命令キャッシュ)間のデ−タ線幅が8バ
イトの場合、加算値は8である。加算器への入力の一方
は信号線110であり、これにはプリフェッチアドレス
の値が出力されている。今一方の値は固定値であり、本
実施例では値8(LSBへのキャリー1ビットで値8を
表現できる)である。これらの加算結果は信号線105
に出力される。
The PAG 101, which is a 29-bit adder,
Generate a prefetch address. When the program is executed sequentially, that is, except at the time of branching, a fixed value is added to the prefetch address each time the prefetch is performed once to generate the next prefetch address. The fixed value to be added is equal to the byte width of the instruction to be prefetched at one time. When the data line width between the external memory and the IC (instruction cache) is 8 bytes, the added value is 8. One of the inputs to the adder is a signal line 110 to which the value of the prefetch address is output. The other value is a fixed value, and in this embodiment, the value is 8 (the value 8 can be expressed by 1 bit of carry to LSB). The result of these additions is
Is output to

【0025】分岐命令用バッファBW102は、分岐命
令の履歴すなわち分岐命令のアドレスと分岐先アドレ
ス、さらに分岐命令タイプを一組にして履歴情報として
記憶しておく。命令プリフェッチ時にはプリフェッチア
ドレスと履歴情報中の分岐命令アドレスを比較し、一致
した場合には分岐先アドレスと分岐命令タイプを出力す
る。
The branch instruction buffer BW 102 stores a history of branch instructions, that is, a set of a branch instruction address and a branch destination address, and a branch instruction type as history information. At the time of instruction prefetch, the prefetch address is compared with the branch instruction address in the history information, and if they match, the branch destination address and the branch instruction type are output.

【0026】リターンバッファRB103は、分岐命令
の一つであるリターン命令用にリターンアドレスを保持
するLIFO(ラストイン・ファーストアウト)キュー
である。
The return buffer RB103 is a LIFO (last-in / first-out) queue for holding a return address for a return instruction which is one of branch instructions.

【0027】命令キャッシュIC104は、信号線11
0を通してプリフェッチアドレス(29ビット)を入力
し、対応する命令(64ビット)をキャッシュから読み
出し、信号線108に出力する。入力したアドレスに対
応する命令がキャッシュIC104内にない場合には、
外部メモリアクセスを起動し、信号線120(64ビッ
ト)を通して命令が外部メモリから読み出されたキャッ
シュIC104に書き込まれる。
The instruction cache IC 104 is connected to the signal line 11
The prefetch address (29 bits) is input through 0, the corresponding instruction (64 bits) is read from the cache, and output to the signal line 108. If the instruction corresponding to the input address is not in the cache IC 104,
The external memory access is activated, and the instruction is written to the cache IC 104 read from the external memory via the signal line 120 (64 bits).

【0028】プリフェツチキューPFQ111はプリフ
ェッチした命令を保持するFIFO(ファーストイン・
ファーストアウト)キューの機能と、命令を整列する機
能(本実施例では64ビットから16ビットに整列す
る)を持つ。入力は信号線108(64ビット幅)、出
力は信号線112(16ビット幅)である。
The prefetch queue PFQ 111 is a FIFO (first-in-first-out) for holding prefetched instructions.
A first-out) queue function and a function of aligning instructions (aligning from 64 bits to 16 bits in this embodiment). The input is the signal line 108 (64-bit width), and the output is the signal line 112 (16-bit width).

【0029】命令アドレスキューPCQ121は、PA
G101で生成したプリフェッチアドレスを保持するF
IFOキューである。入力は3入力セレクタ109の出
力信号110(29ビット)であり、出力は信号線12
2(29ビット)である。
The instruction address queue PCQ121 has a PA
F holding the prefetch address generated in G101
This is an IFO queue. The input is the output signal 110 (29 bits) of the three-input selector 109, and the output is the signal line 12
2 (29 bits).

【0030】命令デコーダID113には、PFQ11
1から信号線112(16ビット)を通して命令が入力
される。入力される各命令の長さは16ビット単位で整
列された状態であり、命令のデコード結果は制御線を通
して各構成要素に接続される。ただし図1では制御信号
線を省略してある。
The instruction decoder ID 113 includes a PFQ 11
An instruction is input from 1 through a signal line 112 (16 bits). The length of each input instruction is aligned in units of 16 bits, and the decoded result of the instruction is connected to each component through a control line. However, in FIG. 1, the control signal lines are omitted.

【0031】レジスタファイルRF114は、本実施例
では32ビット幅のレジスタ16本から構成され、入力
ポートを一つ、出力ポートを二つ持っている。かつこれ
らの三つのポートは同時に動作可能である。各ポートの
ビット幅は32ビットであり、それぞれ信号線121、
115、116に接続されている。
In this embodiment, the register file RF114 is composed of 16 registers each having a 32-bit width, and has one input port and two output ports. And these three ports can operate simultaneously. The bit width of each port is 32 bits, and the signal lines 121,
115, 116 are connected.

【0032】32ビット幅の整数論理演算器ALU11
7の入力はレジスタファイルから出力された信号線11
5、116であり、演算結果を信号線118に出力す
る。本実施例ではデータの演算とアドレスの計算を共に
ALU117で処理する。そのため、信号線118には
データまたはアドレスの何れかが出力される。
A 32-bit integer logical operation unit ALU11
7 is the signal line 11 output from the register file
5, 116, and outputs the operation result to the signal line 118. In this embodiment, the ALU 117 processes both data operation and address calculation. Therefore, either data or address is output to the signal line 118.

【0033】オペランドキャッシュOC119は、オペ
ランドをフェッチする場合には、信号線118にアドレ
スを入力としてアクセスされ、結果として得られたデー
タを信号線121に出力してレジスタファイル114に
値を転送する。オペランドストアの場合には、まず最初
のサイクルでストアアドレスをALU117からOC1
19に信号線118を用いて転送し、そのアドレスはO
C119内に保持する。続く次のサイクルでは信号線1
18を用いてストアデータを転送し、OC119及び外
部メモリへのオペランドストア処理を行う。また、オペ
ランドフェッチの際にアクセスしたデータがオペランド
キャッシュ119内に無い場合には、外部メモリアクセ
スを起動し、外部メモリからOC119に信号線120
を通してオペランドの転送を行う。
When fetching an operand, operand cache OC 119 is accessed by inputting an address to signal line 118, outputs the resulting data to signal line 121, and transfers the value to register file 114. In the case of operand store, first, the store address is transferred from ALU 117 to OC1 in the first cycle.
19, using a signal line 118, and its address is O
It is held in C119. In the following next cycle, signal line 1
18 to transfer the store data, and perform an operand store process to the OC 119 and the external memory. If the data accessed at the time of operand fetch is not in the operand cache 119, an external memory access is started and the signal line 120 is sent from the external memory to the OC 119.
Transfer of operands through

【0034】2.パイプライン処理の流れ 図2から図6を用いて、図1の本実施例のマイクロプロ
セッサのパイプライン処理の流れを説明する。
[0034] 2. From the flow diagram 2 of the pipeline processing with reference to FIG. 6, the flow of the pipeline processing of the microprocessor of this embodiment of FIG.

【0035】2.1 分岐の無い時のパイプラインの流
図2は分岐が無い時ときのパイプラインの処理の流れを
示している。横軸は時間であり、t0、t1、・・・の
それぞれが1サイクルである。縦軸にはパイプラインの
各ステージの処理をとっている。
2.1 Pipeline Flow without Branch
It is Figure 2 shows a flow of pipeline processing when when the branch is not. The horizontal axis is time, and each of t0, t1,... Is one cycle. The vertical axis represents the processing of each stage of the pipeline.

【0036】ステージiは命令プリフェッチステージで
あり、図1のPAG101、BW102、RB103、
IC104、PFQ111、PCQ121の処理が含ま
れる。例えば図2において、時刻t0では命令1のプリ
フェッチが行われ、PFQ111から信号線112を通
して命令1が次の処理ステージ(命令デコード)に転送
される。尚、図2中の命令読み出しはすべて命令キャッ
シュIC104から行われると仮定している。
The stage i is an instruction prefetch stage, and includes PAG101, BW102, RB103,
The processing of the IC 104, the PFQ 111, and the PCQ 121 is included. For example, in FIG. 2, at time t0, the instruction 1 is prefetched, and the instruction 1 is transferred from the PFQ 111 to the next processing stage (instruction decode) via the signal line 112. It is assumed that all the instruction readings in FIG. 2 are performed from the instruction cache IC 104.

【0037】ステージdは命令デコードステージであ
り、図1のID113、RF114の処理が含まれる。
図2の時刻t1において命令1は命令デコーダID11
3でデコードされ、続いてデコード結果に基づいてレジ
スタファイルRF114からの読み出しを行う。読み出
されたデータは信号線115、116に出力される。
Stage d is an instruction decode stage, and includes the processing of ID 113 and RF 114 in FIG.
At time t1 in FIG. 2, instruction 1 is an instruction decoder ID11.
3 and then read from the register file RF114 based on the decoding result. The read data is output to signal lines 115 and 116.

【0038】ステージeは演算及びアドレス計算ステー
ジであり、図1のALU117の処理が含まれる。図2
の時刻t2において命令1は命令デコーダID113か
らの制御に基づいて、ALU117を用いて演算を実行
する。入力は信号線115、116であり、結果を信号
線118に出力する。
The stage e is an operation and address calculation stage, and includes the processing of the ALU 117 in FIG. FIG.
At time t2, the instruction 1 executes an operation using the ALU 117 based on the control from the instruction decoder ID 113. Inputs are signal lines 115 and 116, and the result is output to a signal line 118.

【0039】ステージaはオペランドアクセスステージ
であり、図1のOC119の処理が含まれる。図2の時
刻t3において命令1は命令デコーダ113からの制御
に基づいて、オペランドアクセス処理を実行する。実行
する処理は次の3種類である。
Stage a is an operand access stage, which includes the processing of OC 119 in FIG. At time t3 in FIG. 2, instruction 1 executes an operand access process based on the control from the instruction decoder 113. The processes to be executed are the following three types.

【0040】(1)オペランドフェッチ(OC119内
にフェッチすべきデータが無い場合には、外部メモリか
らOC119へデータを転送後、再度OC119からフ
ェッチ処理を実行する。) (2)オペランドストア(OC119と外部メモリの両
方にデータをストアする。) (3)データ転送(ALU117の演算結果をRF11
4にストアする場合の処理。) いずれも入力は信号線118であり、上記処理(1)と
(3)における出力は信号線121に行う。また、外部
メモリとのデータの入出力には信号線120を用いる。
外部メモリへのアドレス出力線は図1では省略してい
る。
(1) Operand fetch (if there is no data to be fetched in the OC 119, the data is transferred from the external memory to the OC 119, and the fetch process is executed again from the OC 119.) (2) Operand store (with the OC 119 and the OC 119) Data is stored in both external memories.) (3) Data transfer (operation result of ALU 117 is stored in RF11
Processing for storing data in No. 4. In each case, the input is the signal line 118, and the outputs in the above processes (1) and (3) are performed on the signal line 121. The signal line 120 is used for inputting and outputting data to and from the external memory.
The address output line to the external memory is omitted in FIG.

【0041】ステージsはレジスタストアステージであ
り、図1のRF114の処理が含まれる。図2の時刻t
4において命令1は命令デコーダ113からの制御に基
づいて、レジスタストアを実行する。入力は信号線12
1である。
The stage s is a register store stage, and includes the processing of the RF 114 in FIG. Time t in FIG.
In instruction 4, the instruction 1 executes the register store based on the control from the instruction decoder 113. Input is signal line 12
It is one.

【0042】2.2 分岐時のパイプラインの流れ 図3は無条件分岐命令braの実行時のパイプラインの
流れを示している。実行している命令の種類が無条件分
岐命令であることは、この命令の処理が命令デコードス
テージdを終了した時点すなわち時刻t0で判る。但し
分岐先アドレスはアドレス計算ステージeが終了する時
点すなわち時刻t1で明らかになる。そのため、分岐先
アドレスの命令11、12の命令プリフェッチは時刻t
2で行われる。そしてその結果として、1回の分岐あた
り2サイクルのオーバーヘッド(パイプライン処理のあ
き時間)が生じる。
[0042] 2.2 Flow diagram of the pipeline when a branch 3 shows a flow of the pipeline during execution of an unconditional branch instruction bra. That the type of the instruction being executed is an unconditional branch instruction is known at the time when the processing of this instruction ends the instruction decode stage d, that is, at time t0. However, the branch destination address becomes clear at the time when the address calculation stage e ends, that is, at time t1. Therefore, the instruction prefetch of the instructions 11 and 12 at the branch destination address is performed at the time t.
2 is performed. As a result, an overhead of two cycles per branch (open time of pipeline processing) occurs.

【0043】図4は、図1の分岐命令用バッファBW1
02を用いてbra命令の分岐処理を高速化した場合の
パイプラインの流れを示している。図3と比べて、オー
バーヘッドが0サイクルになっている。これは時刻t0
のiステージにおいて、bra命令がプリフェッチされ
た事をBW102の履歴情報を用いて検出し、時刻t1
では既に分岐先命令である命令11をプリフェッチでき
ている結果である。またbra命令自体の処理は分岐処
理以外何も無いので、iステージにおいてbra命令そ
のものが削除され、dステージにはbra命令は転送さ
れていない。
FIG. 4 shows the branch instruction buffer BW1 of FIG.
02 shows the flow of the pipeline when the branch processing of the bra instruction is speeded up using 02. Compared to FIG. 3, the overhead is 0 cycle. This is time t0
Is detected using the history information of the BW 102 at the i stage of
Is the result that the instruction 11 which is the branch destination instruction has already been prefetched. Also, since there is no processing other than branch processing in the bra instruction itself, the bra instruction itself is deleted in the i stage, and the bra instruction is not transferred to the d stage.

【0044】図5は図4と同様に、図1の分岐命令バッ
ファBW102を用いて分岐処理を高速化した例であ
る。但し分岐命令は、サブルーチンコール命令bsrで
ある。サブルーチンコールのためのbsr命令は無条件
分岐のためのbra命令と異なり、分岐以外にも実行す
べき処理があるため、bra命令のように削除する訳に
は行かない。そのため分岐には2サイクルの実行時間を
必要とする。分岐によるオーバーヘッドは図4の場合と
同じく0サイクルである。
FIG. 5 shows an example in which the branch processing is speeded up using the branch instruction buffer BW102 of FIG. 1, as in FIG. However, the branch instruction is a subroutine call instruction bsr. Unlike the bra instruction for unconditional branch, the bsr instruction for subroutine call has processing to be executed other than the branch, and therefore cannot be deleted like the bra instruction. Therefore, the branch requires two cycles of execution time. The overhead due to the branch is 0 cycle as in the case of FIG.

【0045】図6はやはり図4と同様に、分岐命令バッ
ファBW102を用いて分岐処理を高速化した例であ
る。但し分岐命令はリターン命令rtsである。rts
命令はbsr命令と同じ理由で、削除することはできな
い。そのため分岐には1サイクルを要する。但し分岐命
令バッファBW102の効果によってオーバーヘッドは
0サイクルである。
FIG. 6 shows an example in which the branch processing is speeded up by using the branch instruction buffer BW102, similarly to FIG. However, the branch instruction is a return instruction rts. rts
Instructions cannot be deleted for the same reasons as bsr instructions. Therefore, one cycle is required for branching. However, the overhead is 0 cycle due to the effect of the branch instruction buffer BW102.

【0046】以上説明したように、無条件分岐命令br
aとサブルーチンコール命令bsrの処理には分岐命令
用バッファBW102を用い、リターンバッファRB1
03は用いない。しかし、リターン命令rtsの処理に
はBW102とRB103の両方を用いる。動作フロー
を説明する前に、次にBWとRBの構造を説明する。 3. BWとRBの構造と動作 3.1 BWの構造と動作 図7は、図1の分岐命令バッファBW102をより詳細
に説明する構成図である。分岐命令バッファBWはアド
レスデコーダ201、アドレスタグ部BWA202、デ
ータ部BWD203、及び一致比較器CMP209で構
成されている。ここにアドレスデコーダ201は5ビッ
トデコーダであり、デコードの結果としてBWA202
とBWD203の32個のエントリの一つを指定するポ
インタを得る。BWA202とBWD203とは、いず
れもRAMメモリを用いて構成されているが、連想メモ
リを用いて構成することも可能である。エントリすなわ
ちワード数は共に32であり、ビット幅はそれぞれ3
2、33ビットである。
As described above, the unconditional branch instruction br
a and a branch instruction to process subroutine call instruction bsr
Using the return buffer RB1
03 is not used. However, in the processing of the return instruction rts
Uses both BW102 and RB103. Operation flow
Before explaining this, the structures of BW and RB will be described next. 3. Structure and operation of BW and RB 3.1 Structure and operation of BW FIG. 7 shows the branch instruction buffer BW102 of FIG. 1 in more detail.
FIG. Branch instruction buffer BW is added
Address decoder 201, address tag section BWA202,
Data unit BWD203 and the coincidence comparator CMP209.
Has been established. Here, the address decoder 201 has 5 bits.
And a BWA 202 as a decoding result.
And one of the 32 entries of the BWD 203
Get Inter. BWA202 and BWD203
These are also configured using RAM memory,
It is also possible to use a configuration using a key. Entry sandals
The number of words is 32 and the bit width is 3
2, 33 bits.

【0047】32ビットの内訳は、BWA202が分岐
命令アドレス31ビット(入力線122、出力線20
6、213)、バリッドビット1ビット(入力線20
4、出力線207)である。またBWD203では分岐
先アドレス31ビット(入力線118、出力線10
6)、分岐命令タイプ2ビット(入力線205、出力線
208)である。分岐命令タイプは、前述の無条件分岐
命令bra、サブルーチンコール命令bsr、リターン
命令rtsの命令の種別を区別する情報である。CMP
209は24ビット幅の一致比較器であり、一致比較結
果を示す信号210(一致時には値1、不一致時には値
0となる)はAND回路211でバリッド信号207と
論理積が取られ、AND回路211の出力はヒット信号
212となって命令プリフェッチ部内のBW制御回路へ
と出力される。
The breakdown of the 32 bits is that the BWA 202 uses the 31-bit branch instruction address (input line 122, output line 20).
6, 213), 1 valid bit (input line 20
4, output line 207). In the BWD 203, the branch destination address 31 bits (input line 118, output line 10
6), 2-bit branch instruction type (input line 205, output line 208). The branch instruction type is information for distinguishing the types of the above-described unconditional branch instruction bra, subroutine call instruction bsr, and return instruction rts. CMP
A coincidence comparator 209 has a 24-bit width. A signal 210 indicating the result of the coincidence comparison (the value is 1 when the value matches, and the value is 0 when the value does not match) is ANDed with the valid signal 207 by the AND circuit 211. Is output as a hit signal 212 to the BW control circuit in the instruction prefetch unit.

【0048】分岐命令バッファ102BWの書き込み動
作は、次の通りである。
The write operation of the branch instruction buffer 102BW is as follows.

【0049】まず29ビットのプリフェッチアドレス信
号線110の下位5ビットが、アドレスデコーダ201
に入力される。続いて、アドレスデコーダ201でアド
レスデコードが行われ、32個のエントリのうちの一つ
が選択される。この時、BWA202とBWD203に
入力されている信号線122、204、118、205
の値が、選択されたエントリに同時に書き込まれる。分
岐命令アドレス122は図1の命令アドレスキューPC
Q121からの出力信号線、バリッドビット204は命
令プリフェッチ部の制御回路からの出力、分岐先アドレ
ス118は図1のALU117からの出力信号線(アド
レス計算の結果)、分岐命令タイプは命令デコーダID
113の出力情報を命令プリフェッチ部の制御回路でタ
イミング調整した信号である。
First, the lower 5 bits of the 29-bit prefetch address signal line 110 correspond to the address decoder 201.
Is input to Subsequently, address decoding is performed by the address decoder 201, and one of the 32 entries is selected. At this time, the signal lines 122, 204, 118, 205 input to the BWA 202 and the BWD 203
Is simultaneously written to the selected entry. The branch instruction address 122 is the instruction address queue PC of FIG.
The output signal line from Q121, the valid bit 204 is the output from the control circuit of the instruction prefetch unit, the branch destination address 118 is the output signal line from the ALU 117 in FIG. 1 (result of address calculation), and the branch instruction type is the instruction decoder ID.
The output information 113 is a signal whose timing is adjusted by the control circuit of the instruction prefetch unit.

【0050】分岐命令バッファBWの読み出し動作は、
次の通りである。
The read operation of the branch instruction buffer BW is as follows.
It is as follows.

【0051】書き込み動作と同様に、29ビットのプリ
フェッチアドレス信号線110の下位5ビットがアドレ
スデコーダ201に、残りの24ビットが一致比較器C
MP209に入力される。続いてアドレスデコーダ20
1でアドレスデコードが行われ、32個のエントリのう
ちの一つが選択される。BWAとBWDの選択されたエ
ントリのデータが読み出され、信号線206、213、
207、106、208にそれぞれ出力される。
Similarly to the write operation, the lower 5 bits of the 29-bit prefetch address signal line 110 are sent to the address decoder 201, and the remaining 24 bits are sent to the match comparator C.
Input to MP209. Subsequently, the address decoder 20
At 1, address decoding is performed, and one of the 32 entries is selected. The data of the selected entry of BWA and BWD is read, and the signal lines 206, 213,
207, 106, and 208, respectively.

【0052】信号線206に出力された分岐命令アドレ
スは、選択されたエントリに登録されている分岐命令の
アドレスの上位24ビットである。エントリの選択には
アドレスの下位5ビットのみを用いているので、登録さ
れている分岐命令のアドレスとプリフェッチ中の命令に
含まれる分岐命令のアドレスが同一であるかどうかを調
べるために、CMP209を用いてアドレスの上位24
ビットの一致比較を行う。
The branch instruction address output to the signal line 206 is the upper 24 bits of the address of the branch instruction registered in the selected entry. Since only the lower 5 bits of the address are used for selecting an entry, the CMP 209 is used to check whether the address of the registered branch instruction is the same as the address of the branch instruction included in the instruction being prefetched. Top 24 addresses using
Performs bit match comparison.

【0053】この24ビットに続くアドレスの下位7ビ
ットが、信号線213に出力される。信号線213の上
位5ビットは、プリフェッチアドレス110の5ビット
と一致している。それ故に、この5ビットをBWAから
削除することもまた可能である。信号線213の下位2
ビットはプリフェッチされた命令列8バイト中での分岐
命令(2バイト長)の位置を示しており、プリフェッチ
キューPFQ121の制御情報として使用される。
The lower 7 bits of the address following the 24 bits are output to the signal line 213. The upper 5 bits of the signal line 213 match the 5 bits of the prefetch address 110. Therefore, it is also possible to delete this 5 bits from the BWA. Lower 2 of signal line 213
The bit indicates the position of the branch instruction (2-byte length) in the prefetched instruction string of 8 bytes, and is used as control information of the prefetch queue PFQ121.

【0054】また、バリッドビット207は読み出され
たエントリの情報が有効であるか否かを示している。こ
のバリッドビット207は読み出されたエントリの情報
が有効な時は”1”となり、無効な時は”0”となる。
そこでバリッド信号207と一致比較結果の信号210
の論理積をとることで、BWA202とBWD203と
から読み出したデータがプリフェッチアドレス110に
対応した有効な情報であるか否かを示すヒット信号21
2を生成できる。
The valid bit 207 indicates whether the information of the read entry is valid. The valid bit 207 is “1” when the read entry information is valid, and is “0” when the information is invalid.
Therefore, the valid signal 207 and the signal 210 of the match comparison result
And a hit signal 21 indicating whether or not the data read from the BWA 202 and the BWD 203 is valid information corresponding to the prefetch address 110.
2 can be generated.

【0055】BWD203から読み出された分岐先アド
レス106は、命令プリフェッチ部内での分岐処理に用
いられる。すなわち、図1においてBW102から出力
された分岐先アドレス106はセレクタ109、信号線
110を通して、プリフェッチアドレスとして命令キャ
ッシュIC104、分岐命令用バッファBW102、プ
リフェッチアドレス発生器PAG101に入力される。
The branch destination address 106 read from the BWD 203 is used for branch processing in the instruction prefetch unit. That is, the branch destination address 106 output from the BW 102 in FIG. 1 is input as a prefetch address to the instruction cache IC 104, the branch instruction buffer BW102, and the prefetch address generator PAG101 through the selector 109 and the signal line 110.

【0056】また、分岐命令タイプ208は、読み出さ
れたエントリの分岐命令が無条件分岐命令bra、サブ
ルーチンコール命令bsr、リターン命令rtsのいず
れであるかを示している。命令プリフェッチ部内の制御
回路はこの情報を受けて、図4から図6に示した処理の
いずれかを実行する。
The branch instruction type 208 indicates whether the branch instruction of the read entry is an unconditional branch instruction bra, a subroutine call instruction bsr, or a return instruction rts. The control circuit in the instruction prefetch unit receives this information and executes one of the processes shown in FIGS.

【0057】3.2 リターンバッファRBの構造と動
図8は、図1のリターンバッファRB103の構成をよ
り詳細に示している。RBは、デコーダ302とRAM
メモリRBD303とで構成される。デコーダ302は
4ビットデコーダであり、4ビット幅のポインタ301
を入力として、RBD303の16エントリのうちの一
つを選択する。RBD303は16エントリ、ビット幅
32ビットのRAMである。32ビットの内訳は、リタ
ーンアドレス31ビット(入力線118、出力線10
7)、バリッドビット1ビット(入力線304、出力線
305)である。RB303では読み出されたバリッド
ビットがそのままヒット信号となる。
3.2 Structure and Operation of Return Buffer RB
Create Figure 8 shows the configuration of the return buffer RB103 in FIG 1 in greater detail. RB is a decoder 302 and RAM
And a memory RBD 303. The decoder 302 is a 4-bit decoder, and has a 4-bit width pointer 301.
, And one of the 16 entries of the RBD 303 is selected. The RBD 303 is a RAM having 16 entries and a bit width of 32 bits. The breakdown of the 32 bits is that the return address is 31 bits (input line 118, output line 10
7), one valid bit (input line 304, output line 305). In the RB 303, the read valid bit becomes a hit signal as it is.

【0058】リターンバッファRB103への書き込み
動作は、次の通りである。
The write operation to the return buffer RB103 is as follows.

【0059】4ビットのポインタ301は、命令プリフ
ェッチ部の制御回路から与えられる。ポインタ301は
デコーダ302でデコードされ、RBD303のエント
リの一つを選択する。この時、RBD303に入力され
ているリターンアドレス118とバリッド信号304の
値とが選択されたエントリに書き込まれる。バリッド信
号304は命令プリフェッチ部の制御回路から与えられ
る。RB103への書き込みは、サブルーチンコール命
令(例えばbsr命令)の実行時に起動される。そして
その際、ポインタを一つ進める。
The 4-bit pointer 301 is provided from the control circuit of the instruction prefetch unit. The pointer 301 is decoded by the decoder 302, and selects one of the entries of the RBD 303. At this time, the return address 118 and the value of the valid signal 304 input to the RBD 303 are written to the selected entry. The valid signal 304 is provided from a control circuit of the instruction prefetch unit. Writing to the RB 103 is started when a subroutine call instruction (for example, a bsr instruction) is executed. At this time, the pointer is advanced by one.

【0060】リターンバッファRB103からの読み出
し動作は、次の通りである。
The read operation from the return buffer RB103 is as follows.

【0061】書き込み時と同じく、4ビットのポインタ
301は命令プリフェッチ部の制御回路から与えられ
る。ポインタ301はデコーダ302でデコードされ、
RBD303のエントリの一つを選択する。選択された
エントリのデータは、信号線107と信号線305に同
時に出力される。BW102で読み出された分岐命令の
タイプがリターン命令rtsでありかつリターンバッフ
ァRB103から読み出されたヒット(バリッド)信号
が値1であった場合、リターンアドレス107を次のプ
リフェッチアドレスとして、図1のセレクタ109、信
号線110を通して命令キャッシュIC104、分岐命
令用バッファBW102、プリフェッチアドレス発生器
PAG101に転送する。リターンバッファRB103
のポインタは、サブルーチンリターン命令(例えばrt
s命令)の実行時に一つ戻す。
As in the case of writing, the 4-bit pointer 301 is given from the control circuit of the instruction prefetch unit. The pointer 301 is decoded by the decoder 302,
One of the entries of the RBD 303 is selected. The data of the selected entry is output to the signal lines 107 and 305 at the same time. When the type of the branch instruction read by the BW 102 is the return instruction rts and the hit (valid) signal read from the return buffer RB103 is the value 1, the return address 107 is set as the next prefetch address in FIG. Through the selector 109 and the signal line 110 to the instruction cache IC 104, the branch instruction buffer BW102, and the prefetch address generator PAG101. Return buffer RB103
Pointer is a subroutine return instruction (for example, rt
s instruction).

【0062】サブルーチンリターン命令rtsが無条件
分岐命令bra、サブルーチンコール命令bsrと異な
り、分岐先アドレスを分岐命令用バッファBW102内
に保持できない理由は次のとおりである。
The reason why the subroutine return instruction rts cannot hold the branch destination address in the branch instruction buffer BW102, unlike the unconditional branch instruction bra and the subroutine call instruction bsr, is as follows.

【0063】リターン命令rtsは、サブルーチンから
のリターンのために使用される。すなわち、サブルーチ
ンの最後の命令として、サブルーチンをコールしたルー
チンのコール命令の次の命令に分岐する。一方、リター
ンアドレスはコール時にスタックに退避され、リターン
時にはスタックから回復される。そのため、どのルーチ
ンからコールされるかによって、同じサブルーチンリタ
ーン命令rtsであっても、リターン先アドレスが異な
る。
The return instruction rts is used for returning from a subroutine. That is, as the last instruction of the subroutine, the process branches to the instruction following the call instruction of the routine that called the subroutine. On the other hand, the return address is saved on the stack at the time of a call, and is restored from the stack at the time of a return. Therefore, depending on which routine is called from, the return destination address differs even for the same subroutine return instruction rts.

【0064】これに対して分岐命令バッファBW102
では、分岐命令のアドレスと分岐先アドレスを一組にし
た履歴情報を保持する。前述のようにサブルーチンリタ
ーン命令rtsの場合には分岐命令アドレスと分岐先ア
ドレスの関係が一意ではないから、サブルーチンリター
ン命令rtsの分岐先リターンアドレスを分岐命令用バ
ッフアBW102内に保持することはできない。そこ
で、スタックのリターンアドレスのコピーを保持するバ
ッファであるRB103を設け、このバッファRB10
3からリターンアドレスを得ることでこの問題を解決し
ている。
On the other hand, the branch instruction buffer BW102
Holds history information in which the address of the branch instruction and the branch destination address are paired. As described above, in the case of the subroutine return instruction rts, since the relationship between the branch instruction address and the branch destination address is not unique, the branch destination return address of the subroutine return instruction rts cannot be stored in the branch instruction buffer BW102. Therefore, a buffer RB103 for holding a copy of the return address of the stack is provided.
This problem has been solved by obtaining the return address from No.3.

【0065】4. 動作フロー 図9、図10は上記に説明した本実施例によるデータプ
ロセッサの命令プリフェッチ部の制御基本フローであ
る。分岐、リセット、例外発生時の状態遷移は省略し
た。以下、図9、図10を用いて制御フローを説明す
る。
[0065] 4. Operation Flow FIGS. 9 and 10 are basic control flows of the instruction prefetch unit of the data processor according to the present embodiment described above. Branches, resets, and state transitions when an exception occurs are omitted. Hereinafter, the control flow will be described with reference to FIGS.

【0066】ステップ900はプリフェッチキューPF
Q111のあきを待っている状態である。PFQ111
はFIFOキューであるので、データが満杯になった場
合には、命令デコーダID113へのデータ転送によっ
て空きができるまで、次のデータ書き込みができなくな
る。そのためステップ901の判定動作(PFQが満杯
か否か)によって、再び待ち状態ステップ900に遷移
するか、それともステップ902に遷移するかが決定さ
れる。
Step 900 is a prefetch queue PF
It is in a state of waiting for the opening of Q111. PFQ111
Is a FIFO queue, so when data is full, the next data cannot be written until a space is created by data transfer to the instruction decoder ID 113. Therefore, whether to transit to the waiting state step 900 again or to step 902 is determined by the determination operation of step 901 (whether or not the PFQ is full).

【0067】ステップ902は、命令キャッシュIC1
04、分岐命令バッファBW102及びリターンバッフ
ァRB103の読み出しを行う状態である。それらの読
み出しの結果をステップ903から906で判定し、次
の動作状態を907から910のどれか一つに決定す
る。
Step 902 is the instruction cache IC 1
04, a state in which the branch instruction buffer BW102 and the return buffer RB103 are read out. The results of those readings are determined in steps 903 to 906, and the next operation state is determined to be one of 907 to 910.

【0068】ステップ903は命令キャッシュIC10
4の読み出しが成功(ヒット信号の値が1)したか否か
を判定し、成功した場合にはステップ904へ、失敗し
た場合にはステップ910に遷移する。
Step 903 is the instruction cache IC 10
Then, it is determined whether or not reading of No. 4 is successful (the value of the hit signal is 1). If the reading is successful, the process proceeds to step 904;

【0069】ステップ904は分岐命令バッファBW1
02の読み出しが成功したか否か、すなわち図7のヒッ
ト信号212の値が1であるか否かを判定する。読み出
しが成功した場合にはステップ905へ、失敗した場合
にはステップ909へ遷移する。
Step 904 is a branch instruction buffer BW1
It is determined whether or not the readout of No. 02 is successful, that is, whether or not the value of the hit signal 212 in FIG. If the reading is successful, the process proceeds to step 905; otherwise, the process proceeds to step 909.

【0070】ステップ905は分岐命令バッファBW1
02から読み出された分岐命令タイプ情報(図7の信号
208)がリターン命令rtsを指示するものか否かを
判定する。リターン命令rtsの場合にはステップ90
6へ、そうでない場合にはステップ907へ遷移する。
Step 905 is a branch instruction buffer BW1.
It is determined whether or not the branch instruction type information (signal 208 in FIG. 7) read from 02 indicates a return instruction rts. Step 90 in the case of the return instruction rts
The process proceeds to step 907 otherwise.

【0071】ステップ906はリターンバッファRB1
03の読み出しが成功したか否か、すなわち図8のヒッ
ト信号305の値が1であるか否かを判定する。成功し
た場合にはステップ908へ、失敗した場合にはステッ
プ909へ遷移する。
Step 906 is the return buffer RB1
It is determined whether or not the reading of the hit signal 03 is successful, that is, whether or not the value of the hit signal 305 in FIG. If successful, go to step 908; if unsuccessful, go to step 909.

【0072】ステップ907は分岐命令バッファBW1
02にヒットし、かつその分岐命令が無条件分岐命令b
raまたはサブルーチンコール命令bsrである場合に
遷移する状態であり、次のサイクルのプリフェッチアド
レスとしてBW102から出力された分岐先アドレス信
号106を用いる。具体的には、図1のセレクタ109
により信号106を選択し、その値を信号110に出力
する。
Step 907 is a branch instruction buffer BW1.
02 and the branch instruction is an unconditional branch instruction b
This is a transition state when the instruction is ra or the subroutine call instruction bsr, and the branch destination address signal 106 output from the BW 102 is used as the prefetch address in the next cycle. Specifically, the selector 109 of FIG.
Selects the signal 106, and outputs the value to the signal 110.

【0073】ステップ908は分岐命令バッファBW1
02とリターンバッファRB103の両方にヒットし、
かつその分岐命令がリターン命令rtsである場合に遷
移する状態であり、次のサイクルのプリフェッチアドレ
スとしてRB103から出力されたリターンアドレス信
号107を用いる。具体的には、図1のセレクタ109
により信号107を選択し、その値を信号110に出力
する。
Step 908 is a branch instruction buffer BW1.
02 and both return buffer RB103
This is a state where the transition is made when the branch instruction is the return instruction rts, and the return address signal 107 output from the RB 103 is used as the prefetch address in the next cycle. Specifically, the selector 109 of FIG.
Selects the signal 107, and outputs the value to the signal 110.

【0074】ステップ909は命令キャッシュICには
ヒットしたが、ステップ907、ステップ908のいず
れへの遷移条件も満たさない場合に遷移する状態であ
る。次のサイクルのプリフェッチアドレスとしては図1
のPAG101から出力された信号105の値を用い
る。具体的には、図1のセレクタ109により信号10
5を選択し、その値を信号110に出力する。
Step 909 is a state where a transition is made when the instruction cache IC has been hit, but the transition condition to neither step 907 nor step 908 is satisfied. Figure 1 shows the prefetch address of the next cycle.
The value of the signal 105 output from the PAG 101 is used. Specifically, the signal 10 is output by the selector 109 of FIG.
5 is selected and the value is output to the signal 110.

【0075】ステップ910は命令キャッシュIC10
4の読み出しが失敗した場合に遷移する状態であり、外
部メモリアクセスが起動される。アクセスに用いるアド
レスは命令キャッシュの読み出しに用いたプリフェッチ
アドレス(信号110)である。このアドレス信号線は
図1中では省略している。外部メモリからの命令転送が
終了すると、状態は再びステップ902へと遷移する。
Step 910 is the instruction cache IC 10
This is a state where a transition is made when the reading of No. 4 fails, and external memory access is activated. The address used for access is the prefetch address (signal 110) used for reading the instruction cache. This address signal line is omitted in FIG. When the instruction transfer from the external memory is completed, the state transitions to step 902 again.

【0076】ステップ907、908、909の次状態
は、ステップ911である。
The next state after steps 907, 908 and 909 is step 911.

【0077】ステップ911では、BW102、RB1
03への書き込み動作を起動するか否かを決定する。そ
の判定は基本的には、無条件分岐命令bra、サブルー
チンコール命令bsr、リターン命令rtsのいずれか
の命令が命令デコーダ113でデコードされたという、
デコード情報を基に起動する。但しこれら3つの分岐命
令ごとに起動条件は若干異なる。
In step 911, the BW 102, RB1
It is determined whether or not to start the write operation to the 03. The determination is basically that any one of the unconditional branch instruction bra, the subroutine call instruction bsr, and the return instruction rts has been decoded by the instruction decoder 113.
Start based on decode information. However, the activation conditions are slightly different for each of these three branch instructions.

【0078】(1)無条件分岐命令bra bra命令がデコードされた場合にはBW102、RB
103が使用可能状態にある時には常に、BW102へ
の書き込みを起動する。bra命令がBW102を用い
た分岐を生じる場合、bra命令は命令プリフェッチ部
内で削除され、命令デコード部へは転送されない。逆
に、bra命令がデコードされた場合には、そのbra
命令はBW102を用いた分岐処理を実行していない。
(1) Unconditional branch instruction bra If the bra instruction is decoded, BW102, RB
Whenever 103 is in a usable state, it starts writing to BW 102. When the bra instruction causes a branch using the BW 102, the bra instruction is deleted in the instruction prefetch unit and is not transferred to the instruction decode unit. Conversely, when the bra instruction is decoded,
The instruction does not execute the branch processing using the BW 102.

【0079】(2)サブルーチンコール命令bsr、リ
ターンrts命令 bsr命令またはrts命令を、BW102を用いて分
岐処理する場合、命令プリフェッチ部は分岐命令を信号
112を通して命令デコード部へ転送すると共に、その
分岐命令がBW102を用いて分岐処理済みであること
を示すタグ情報を命令デコード部に送る。命令デコード
部ではこのタグ情報を基に、BW102を用いて分岐済
みの分岐命令について、分岐指示信号と、bsr命令ま
たはrts命令がデコードされたというデコード情報と
を命令プリフェッチ部に送らないようにする。
(2) Subroutine call instruction bsr, return rts instruction When a bsr instruction or an rts instruction is subjected to branch processing using the BW 102, the instruction prefetch unit transfers the branch instruction to the instruction decode unit through the signal 112 and branches the instruction. The tag information indicating that the instruction has been subjected to the branch processing using the BW 102 is sent to the instruction decoding unit. Based on the tag information, the instruction decoding unit does not send a branch instruction signal and decode information indicating that the bsr instruction or the rts instruction has been decoded to the instruction prefetch unit for the branch instruction that has been branched using the BW 102. .

【0080】BW102への書き込みを起動する場合に
はステップ912へ、起動しない場合にはステップ90
1へ遷移する。
If the writing to the BW 102 is to be started, the process proceeds to step 912;
Transitions to 1.

【0081】ステップ912は分岐指示信号待ち状態で
ある。分岐指示信号がアサ−トされたか否かはステップ
913で判定する。ステップ912では図1の命令アド
レスキューPCQ121を用いて分岐命令のアドレスを
信号線122に出力し、さらに図7の信号線204、2
05を生成して、分岐指示信号のアサートを待つ。分岐
指示信号アサート時にはステップ914へ遷移する。
Step 912 is a state of waiting for a branch instruction signal. It is determined in step 913 whether or not the branch instruction signal has been asserted. In step 912, the address of the branch instruction is output to the signal line 122 using the instruction address queue PCQ121 of FIG.
05 and waits for the branch instruction signal to be asserted. When the branch instruction signal is asserted, the flow goes to step 914.

【0082】ステップ914ではBW102への登録を
行う。図1の本実施例のマイクロプロセッサでは、分岐
指示信号と分岐先アドレスは同時に生成される。分岐先
アドレスは図1のALU117で生成され、信号線11
8を通してBWに転送される。BW102では分岐指示
信号のアサートにより、すべての入力データが揃い、図
7のBWA202とBWD203のプリフェッチアドレ
ス110で選択されたエントリに同時に書き込みを行
う。本アルゴリズムでは、ステップ914でBW102
の書き込みとIC104の読み出しを同時に行う。その
ため、BW102の書き込み時にはBW102の読み出
しを行えない。但しこれは、BW102を2ポートメモ
リとすれば、実現できる。
At step 914, registration with the BW 102 is performed. In the microprocessor of this embodiment shown in FIG. 1, the branch instruction signal and the branch destination address are generated simultaneously. The branch destination address is generated by the ALU 117 of FIG.
8 to the BW. In the BW 102, all the input data are aligned by the assertion of the branch instruction signal, and the BW 202 and the BWD 203 in FIG. 7 simultaneously write to the entry selected by the prefetch address 110. In the present algorithm, in step 914, the BW102
And reading of the IC 104 are performed simultaneously. Therefore, when writing to the BW 102, the BW 102 cannot be read. However, this can be realized if the BW 102 is a two-port memory.

【0083】ステップ914でBW102への書き込み
が終了した後は、再びステップ903に遷移する。
After the writing to the BW 102 is completed in step 914, the process returns to step 903.

【0084】[0084]

【発明の効果】以上に示したように、本発明を用いた実
施例においては、図4から図6に示したように分岐処理
特に無条件分岐処理を高速化できる。その特徴は、 1)分岐命令アドレスと分岐先アドレスを組にした分岐
の履歴情報を保持し、その履歴情報をプリフェッチアド
レスを用いて検索するため、早い時点での分岐が可能で
ある。
As described above, in the embodiment using the present invention, the branch processing, particularly the unconditional branch processing, can be sped up as shown in FIGS. Its features are as follows: 1) Branch history information, which is a set of a branch instruction address and a branch destination address, is held and the history information is searched using a prefetch address, so that an earlier branch is possible.

【0085】2)BW(分岐履歴情報を保持するバッフ
ァ)とRB(リターンアドレスを保持するバッファ)を
連動して動作させることにより、リターン命令の分岐処
理をも高速化できる。
2) By operating the BW (buffer holding branch history information) and RB (buffer holding return address) in conjunction with each other, the branch processing of the return instruction can be sped up.

【0086】3)BW内に分岐命令のタイプ情報を保持
することにより、上記2)の連動動作が可能になると共
に、分岐命令ごとに極め細かい制御が可能になる。例え
ば、無条件分岐命令braの場合には実行処理を削除
し、命令bsrの場合には削除しないといった処理の制
御にこの情報を使用している。
3) By holding the type information of the branch instruction in the BW, the interlocking operation of the above 2) can be performed, and very fine control can be performed for each branch instruction. For example, this information is used to control processing such that the execution process is deleted in the case of the unconditional branch instruction bra and is not deleted in the case of the instruction bsr.

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

【図1】本発明の実施例によるマイクロプロセッサの全
体構成を示す図である。
FIG. 1 is a diagram showing an overall configuration of a microprocessor according to an embodiment of the present invention.

【図2】分岐が無い時の図1のマイクロプロセッサのパ
イプラインの流れを示す図である。
FIG. 2 is a diagram showing a flow of a pipeline of the microprocessor of FIG. 1 when there is no branch;

【図3】図1のマイクロプロセッサの分岐命令バッファ
BW102のミス時のパイプラインの流れを示す図であ
る。
FIG. 3 is a diagram showing a pipeline flow at the time of a miss in a branch instruction buffer BW102 of the microprocessor of FIG. 1;

【図4】図1のマイクロプロセッサの分岐命令バッファ
BW102のヒット時のパイプラインの流れを示す図で
ある。
4 is a view showing a flow of a pipeline at the time of a hit of a branch instruction buffer BW102 of the microprocessor of FIG. 1;

【図5】図1のマイクロプロセッサの分岐命令バッファ
BW102のヒット時のパイプラインの流れを示す図で
ある。
5 is a view showing a flow of a pipeline at the time of a hit of a branch instruction buffer BW102 of the microprocessor of FIG. 1;

【図6】図1のマイクロプロセッサの分岐命令バッファ
BW102、リターンバッファRB103のヒット時の
パイプラインの流れを示す図である。
6 is a diagram showing a pipeline flow at the time of a hit of a branch instruction buffer BW102 and a return buffer RB103 of the microprocessor of FIG. 1;

【図7】図1のマイクロプロセッサ中の分岐命令バッフ
ァBW102の構成をより詳細に示す図である。
FIG. 7 is a diagram showing the configuration of a branch instruction buffer BW102 in the microprocessor of FIG. 1 in more detail;

【図8】図1のマイクロプロセッサ中のリターンバッフ
ァRB103の構成をより詳細に示す図である。
FIG. 8 is a diagram showing the configuration of a return buffer RB103 in the microprocessor of FIG. 1 in more detail;

【図9】図1のマイクロプロセッサの命令プリフェッチ
部の制御フローを示す図である。
FIG. 9 is a diagram illustrating a control flow of an instruction prefetch unit of the microprocessor of FIG. 1;

【図10】図1のマイクロプロセッサの命令プリフェッ
チ部の制御フローを示す図である(図9の続き)。
10 is a diagram illustrating a control flow of an instruction prefetch unit of the microprocessor of FIG. 1 (continuation of FIG. 9);

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

100…マイクロプロセッサ、101…プリフェッチア
ドレス発生器。29ビット加算器。102…分岐命令用
バッファ。分岐先アドレスを保持する。103…リター
ンバッファ。リターンアドレスを保持する。104…命
令キャッシュ。201…5ビットのアドレスデコ−ダ。
202…分岐命令バッファのアドレスタグ部。32エン
トリ、32ビット幅。203…分岐命令バッファのデ−
タ部。32エントリ、33ビット幅。209…24ビッ
ト一致比較器。302…4ビットのアドレスデコ−ダ。
303…リターンバッファのデ−タ部。16エントリ、
32ビット幅。
100: microprocessor, 101: prefetch address generator. 29-bit adder. 102: Branch instruction buffer. Holds the branch destination address. 103 ... Return buffer. Holds return address. 104 Instruction cache. 201 ... 5-bit address decoder.
202: Address tag part of the branch instruction buffer. 32 entries, 32 bits wide. 203: Data of the branch instruction buffer
Part. 32 entries, 33 bits wide. 209 24-bit match comparator. 302 4-bit address decoder.
303 Data part of return buffer. 16 entries,
32 bits wide.

───────────────────────────────────────────────────── フロントページの続き (72)発明者 青木 郭和 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (56)参考文献 特開 平2−155038(JP,A) 特開 平2−255917(JP,A) 特開 昭61−196332(JP,A) 特開 平2−121034(JP,A) 特開 平3−31933(JP,A) 特開 昭62−151936(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/42 ────────────────────────────────────────────────── ─── Continuing on the front page (72) Kouwa Aoki 1-280 Higashi Koikebo, Kokubunji-shi, Tokyo Inside the Central Research Laboratory of Hitachi, Ltd. (56) References JP-A-2-155038 (JP, A) JP-A-Hei JP-A-2-255917 (JP, A) JP-A-61-196332 (JP, A) JP-A-2-121034 (JP, A) JP-A-3-31933 (JP, A) JP-A-62-151936 (JP, A) A) (58) Field surveyed (Int. Cl. 7 , DB name) G06F 9/30-9/42

Claims (5)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】 プリフェッチアドレスを発生するプリフ
ェッチアドレス発生器と、 前記プリフェッチアドレスに従ってメモリから命令をプ
リフェッチするプリフェッチキューと、 前記プリフェッチキューに格納された命令をデコードす
る命令デコーダと、 前記命令デコーダの出力によって制御され、アドレス演
算によってコール命令の分岐先アドレス及びリターン命
令のリターンアドレスを生成可能な演算ユニットと、 前記プリフェッチアドレス発生器で生成されたコール命
令とリターン命令のアドレス、前記演算ユニットで生成
されたコール命令の岐先アドレス、及びコール命令かリ
ターン命令かのタイプを示し前記命令デコーダから出力
される情報を格納するための第1のバッファと、前記演算ユニットで生成された リターンアドレスを格納
するための第2のバッファと、 プリフェッチアドレスを前記第1のバッファに格納され
ている分岐命令のアドレスと比較する比較器と、を含
み、 前記比較器による比較結果が一致したとき前記第1のバ
ッファから読み込んだ対応する前記タイプを示す情報が
コール命令であることを示すなら対応する分岐先アドレ
スを第1のバッファから読み出し、また、前記比較器に
よる比較結果が一致したとき前記第1のバッファから読
み込んだ対応する前記タイプを示す情報がリターン命令
であることを示すならリターンアドレスを第2のバッフ
ァから読み出し、読み出したアドレスに従って次のプリ
フェッチアドレスを生成するものであることを特徴とす
るデータプロセッサ。
A prefetch address generator for generating a prefetch address; a prefetch queue for prefetching an instruction from a memory according to the prefetch address; an instruction decoder for decoding an instruction stored in the prefetch queue; and an output of the instruction decoder. And the return address of the call instruction by the address operation.
An operation unit capable of generating a return address of the instruction, and a call instruction generated by the prefetch address generator.
Instruction and return instruction addresses, generated by the arithmetic unit
The branch address of the called call instruction and the call instruction
Indicates the type of turn command or not and is output from the command decoder
A first buffer for storing information to be read, a second buffer for storing a return address generated by the arithmetic unit, and a prefetch address for a branch instruction stored in the first buffer. And a comparator for comparing with the address, the information indicating the corresponding type read from the first buffer when the comparison result by the comparator matches.
If it indicates that the instruction is a call instruction, the corresponding branch destination address is read from the first buffer, and when the comparison result by the comparator matches, the information indicating the corresponding type read from the first buffer is returned. A data processor for reading a return address from a second buffer if the instruction indicates an instruction, and generating a next prefetch address according to the read address .
【請求項2】 前記メモリはキャッシュメモリであり、
それには外部メモリから命令が格納され、その命令は前
記プリフェッチアドレスに従って前記キャッシュメモリ
からプリフェッチキューにプリフェッチされるものであ
ることを特徴とする請求項1記載のデータプロセッサ。
2. The memory according to claim 2, wherein the memory is a cache memory.
2. The data processor according to claim 1, wherein instructions are stored from an external memory, and the instructions are prefetched from said cache memory to a prefetch queue according to said prefetch address.
【請求項3】 前記プリフェッチキュー、前記命令デコ
ーダ、前記演算ユニット、前記比較器、前記第1のバッ
ファ、前記第2のバッファ、及び前記キャッシュメモリ
は半導体基板に形成されて成るものであることを特徴と
する請求項2記載のデータプロセッサ。
Wherein the prefetch queue, the instruction decoder, before Ki演 calculation unit, said comparator, said first buffer, said second buffer, and the cache memory are those formed by formed on a semiconductor substrate 3. The data processor according to claim 2, wherein:
【請求項4】 前記プリフェッチキュー、前記命令デコ
ーダ、及び前記演算ユニットはパイプライン処理を行う
ものであることを特徴とする請求項3記載のデータプロ
セッサ。
Wherein said prefetch queue, the data processor of claim 3, wherein said instruction decoder, and before Ki演 calculation unit performs a pipeline process.
【請求項5】 前記第2のバッファはラストイン・ファ
ーストアウト形式のバッファであることを特徴とする請
求項4記載のデータプロセッサ。
5. The data processor according to claim 4, wherein said second buffer is a last-in first-out buffer.
JP28103091A 1991-10-28 1991-10-28 Data processor Expired - Lifetime JP3182438B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP28103091A JP3182438B2 (en) 1991-10-28 1991-10-28 Data processor
KR1019920018637A KR100259306B1 (en) 1991-10-28 1992-10-10 Data processor having a branch command buffer
US07/965,441 US5454087A (en) 1991-10-28 1992-10-23 Branching system for return from subroutine using target address in return buffer accessed based on branch type information in BHT

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28103091A JP3182438B2 (en) 1991-10-28 1991-10-28 Data processor

Publications (2)

Publication Number Publication Date
JPH05120013A JPH05120013A (en) 1993-05-18
JP3182438B2 true JP3182438B2 (en) 2001-07-03

Family

ID=17633315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28103091A Expired - Lifetime JP3182438B2 (en) 1991-10-28 1991-10-28 Data processor

Country Status (3)

Country Link
US (1) US5454087A (en)
JP (1) JP3182438B2 (en)
KR (1) KR100259306B1 (en)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623614A (en) * 1993-09-17 1997-04-22 Advanced Micro Devices, Inc. Branch prediction cache with multiple entries for returns having multiple callers
US5896528A (en) * 1995-03-03 1999-04-20 Fujitsu Limited Superscalar processor with multiple register windows and speculative return address generation
US5968169A (en) * 1995-06-07 1999-10-19 Advanced Micro Devices, Inc. Superscalar microprocessor stack structure for judging validity of predicted subroutine return addresses
US5898864A (en) * 1995-09-25 1999-04-27 International Business Machines Corporation Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
US5881278A (en) * 1995-10-30 1999-03-09 Advanced Micro Devices, Inc. Return address prediction system which adjusts the contents of return stack storage to enable continued prediction after a mispredicted branch
US5864707A (en) * 1995-12-11 1999-01-26 Advanced Micro Devices, Inc. Superscalar microprocessor configured to predict return addresses from a return stack storage
US5835947A (en) * 1996-05-31 1998-11-10 Sun Microsystems, Inc. Central processing unit and method for improving instruction cache miss latencies using an instruction buffer which conditionally stores additional addresses
KR100496271B1 (en) * 1997-06-18 2005-09-08 삼성에스디아이 주식회사 Composition for protective resin layer and manufacturing method of phosphor layer for crt using the same
US20010029582A1 (en) * 1999-05-17 2001-10-11 Goodman Daniel Isaac Method and system for copy protection of data content
JP3513038B2 (en) 1998-12-10 2004-03-31 富士通株式会社 Instruction fetch control unit
JP2002342075A (en) * 2001-05-11 2002-11-29 Mitsubishi Electric Corp Microprocessor
US6954849B2 (en) * 2002-02-21 2005-10-11 Intel Corporation Method and system to use and maintain a return buffer
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
JP2006040173A (en) 2004-07-29 2006-02-09 Fujitsu Ltd Branch prediction device and method
JP2007041837A (en) * 2005-08-03 2007-02-15 Nec Electronics Corp Instruction prefetch apparatus and method
US7472264B2 (en) * 2006-06-30 2008-12-30 Sun Microsystems, Inc. Predicting a jump target based on a program counter and state information for a process
US8635406B2 (en) * 2012-03-08 2014-01-21 Arm Limited Data processing apparatus and method for providing target address information for branch instructions
US11099849B2 (en) * 2016-09-01 2021-08-24 Oracle International Corporation Method for reducing fetch cycles for return-type instructions
US11481221B2 (en) * 2018-05-02 2022-10-25 Micron Technology, Inc. Separate branch target buffers for different levels of calls
GB2577051B (en) * 2018-09-11 2021-03-03 Advanced Risc Mach Ltd Branch prediction using branch target buffer

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
US4488227A (en) * 1982-12-03 1984-12-11 Honeywell Information Systems Inc. Program counter stacking method and apparatus for nested subroutines and interrupts
US4884244A (en) * 1985-01-28 1989-11-28 Data General Corporation Method of addressing a computer memory
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
US4831517A (en) * 1986-10-10 1989-05-16 International Business Machines Corporation Branch and return on address instruction and methods and apparatus for implementing same in a digital data processing system
JPH01240931A (en) * 1988-03-23 1989-09-26 Hitachi Ltd Data processor
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
JPH0769811B2 (en) * 1988-12-21 1995-07-31 松下電器産業株式会社 Data processing device
US5276882A (en) * 1990-07-27 1994-01-04 International Business Machines Corp. Subroutine return through branch history table
US5313634A (en) * 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns

Also Published As

Publication number Publication date
KR100259306B1 (en) 2000-06-15
US5454087A (en) 1995-09-26
KR930008615A (en) 1993-05-21
JPH05120013A (en) 1993-05-18

Similar Documents

Publication Publication Date Title
JP3182438B2 (en) Data processor
JP2761688B2 (en) Data processing device
US5125083A (en) Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
JP3871884B2 (en) Mechanism for memory-to-load transfers
CA1323938C (en) Control of multiple function units with parallel operation in a microcoded execution unit
US4827402A (en) Branch advanced control apparatus for advanced control of a branch instruction in a data processing system
JP2616182B2 (en) Data processing device
JP3658101B2 (en) Data processing device
US20060236080A1 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
EP1241567A2 (en) Method and apparatus for executing coprocessor instructions
JP3794918B2 (en) Branch prediction that classifies branch prediction types using return selection bits
US5381532A (en) Microprocessor having branch aligner between branch buffer and instruction decoder unit for enhancing initiation of data processing after execution of conditional branch instruction
JP3345787B2 (en) Data processing device
JP3741870B2 (en) Instruction and data prefetching method, microcontroller, pseudo instruction detection circuit
JPH03129432A (en) Branch control circuit
JPH02287626A (en) Pipeline system branch instruction controller
JPH07239780A (en) One-clock variable length instruction execution process type instruction read computer
US7401328B2 (en) Software-implemented grouping techniques for use in a superscalar data processing system
JP3708022B2 (en) Processor
JP2001022577A (en) Information processor
JPS61288230A (en) Pipeline control system
JP3147884B2 (en) Storage device and information processing device
JP3325309B2 (en) Subroutine return instruction processing unit
JPH07191911A (en) Address converter and microprocessor computation method
JP3493110B2 (en) High-speed branch processing unit

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

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

Free format text: PAYMENT UNTIL: 20080420

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090420

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20090420

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20100420

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20100420

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110420

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20110420

Year of fee payment: 10

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

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

Free format text: PAYMENT UNTIL: 20110420

Year of fee payment: 10

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120420

Year of fee payment: 11

EXPY Cancellation because of completion of term
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120420

Year of fee payment: 11