JP3182438B2 - データプロセッサ - Google Patents

データプロセッサ

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
English (en)
Other versions
JPH05120013A (ja
Inventor
進 成田
文男 荒川
邦男 内山
郭和 青木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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/ja
Priority to KR1019920018637A priority patent/KR100259306B1/ko
Priority to US07/965,441 priority patent/US5454087A/en
Publication of JPH05120013A publication Critical patent/JPH05120013A/ja
Application granted granted Critical
Publication of JP3182438B2 publication Critical patent/JP3182438B2/ja
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, 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/38Concurrent instruction execution, e.g. pipeline, 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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は分岐命令を実行する機能
と命令をプリフェッチする機能を共に有するデータプロ
セッサに関わり、特に分岐履歴情報に対して命令プリフ
ェッチ機能を連動させることにより、高速に分岐処理を
実行するデータプロセッサに関する。
【0002】
【従来の技術】従来、分岐処理の高速化のために、分岐
の履歴情報として分岐命令のアドレスと分岐先命令のア
ドレスをバッファに格納しておき、命令プリフェッチ時
にプリフェッチアドレスを入力として履歴情報を検索
し、先行的に分岐するデータ装置について、特開平1−
240931号公報に記載がある。
【0003】また従来、同じく分岐処理の高速化のため
に、分岐の履歴情報として分岐命令に先行する命令のア
ドレスと分岐先命令のアドレスをバッファに格納してお
き、命令解読時に命令アドレスを入力として履歴情報を
検索し、無条件分岐命令の実行処理を削除することで高
速に分岐するデータプロセッサについて、特開平2−1
66520号公報に記載がある。
【0004】
【発明が解決しようとする課題】上記従来技術のいずれ
も、主に無条件分岐命令の分岐処理を高速化するもので
あるが、無条件分岐命令の一つであるサブルーチンから
のリターン命令(rts命令)の分岐処理には対応でき
ないことが本願発明者等の検討により明らかとされた。
これは以下のような理由による。
【0005】上記従来技術はいずれも、分岐命令の各々
は常に分岐先アドレスが不変であるという仮定に立っ
て、分岐の履歴情報が次の分岐処理にも役に立つと考え
ている。しかしながら、サブルーチンからのリターン命
令の場合にはその仮定が成り立たない。なぜならば、リ
ターン命令はサブルーチンからコール元のルーチンへの
リターンに用いられる命令であるため、コール元が異な
れば当然、リターン先のアドレスも異なるものとなるか
らである。
【0006】サブルーチンのコールとリターンの処理
は、基本的には次のように行う。
【0007】まず、コール元のルーチンではサブルーチ
ンコール命令を実行する。サブルーチンコール命令(b
sr命令)は、まずリターン先アドレスを計算し、スタ
ックと呼ばれるメモリ上のLIFOキュー(ソフトウェ
アで作成する)に、リターンアドレスをストアする。そ
して、そのサブルーチンコール命令(bsr命令)によ
って、サブルーチンへと分岐する。続いてサブルーチン
での処理を実行し、最後にリターン命令を実行する。リ
ターン命令はまずスタックからリターンアドレスを読み
出し、続いてそのリターンアドレスへと分岐することで
コール元のルーチンにリターンする。
【0008】このように、リターンアドレスはサブルー
チンコール命令(bsr命令)のアドレスによって定ま
るものであって、一つのサブルーチンをコールするサブ
ルーチンコール命令(bsr命令)が複数ある場合に
は、リターン命令(rts命令)に対応したリターンア
ドレスは一意には定まらない。
【0009】従って、本発明の目的とするところは、高
速に分岐処理を実行することが可能であるとともに、無
条件分岐命令の一つであるリターン命令の分岐処理に対
応することの可能なデータプロセッサを提供することに
ある。
【0010】
【課題を解決するための手段】上記目的を解決するため
には、次の二つの手段が採用される。
【0011】(1)第1のバッファに、データプロセッ
サが一度実行した分岐命令のアドレス、分岐先アドレ
ス、分岐命令の種類を示す分岐履歴情報を格納する。
【0012】(2)第2のバッファにサブルーチンから
のリターンアドレスを格納する。
【0013】
【作用】第1のバッファには、データプロセッサが一度
実行した分岐命令のアドレス、分岐先アドレス、分岐命
令の種類を示す分岐履歴情報が格納されている。従っ
て、同一の分岐命令をデータプロセッサが実行するに際
して、第1のバッファから分岐先アドレスが高速に読み
出され、次命令プリフェッチアドレスが生成されること
ができる。
【0014】一方、リターンアドレスを格納する第2の
バッファは、サブルーチンコール命令(bsr命令)を
実行する際に書き込みを行い、リターン命令(rts命
令)がプリフェッチされたときに読み出しを行うLIF
O(ラストイン・ファーストアウト)キューである。
尚、リターン命令(rts命令)を実行するまで、第2
のバッファのポインタの更新は行わない。言い替える
と、第2のバッファはメモリ上にあるスタックの一部
(リターンアドレス)のコピーを格納するキャッシュメ
モリである。
【0015】リターン命令がプリフェッチされたことの
検出は、分岐履歴情報を格納する第1のバッファを用い
て行う。すなわち、リターン命令(rts命令)もまた
他の分岐命令(bra命令、bsr命令)と同様に、分
岐履歴情報をこの第1のバッファに登録する。但し、リ
ターン命令の場合はその検出にのみ第1のバッファを使
用し、分岐先アドレスのフィールドは使用しない。代り
に、上記のリターンアドレスを格納する第2のバッファ
から、分岐先アドレスを得る。
【0016】リターン命令を他の分岐命令と共に、同一
の分岐履歴情報を格納する第1のバッファに登録するた
め、分岐先アドレスとしていずれのバッファのそれを用
いるかを判断するための情報が必要になる。この問題を
解決するため、分岐履歴情報を格納する第1のバッファ
内に、分岐命令の種類を示す情報(分岐命令タイプ)を
格納している。
【0017】また別の解決方法として、単純に第1と第
2のバッファのいずれの分岐先アドレスを使用するかを
示す情報(選択候補が二つの場合には1ビット)を格納
してもいい。
【0018】また第1と第2のいずれのバッファの分岐
先アドレスを用いるかを示す情報は、必ずしも分岐命令
履歴情報を格納する第1バッファ内に持つ必要はない。
データプロセッサの制御回路内に、同等の情報を格納す
ることでも、同じ効果を期待できる。
【0019】また分岐履歴情報の検索に、プリフェッチ
アドレスではなく命令アドレスを使用することも可能で
ある。但しこの方法では、以下の実施例に示すほどの分
岐高速化の効果は期待できない。
【0020】また分岐履歴情報の検索に特開平2−16
6520号公報のように、分岐命令に先行する命令のア
ドレスを使用することも可能である。マイクロプロセッ
サのアーキテクチャによっては、一命令以上の先行を有
する場合もある。
【0021】
【実施例】図1は本発明の一実施例であるマイクロプロ
セッサのブロック図である。本発明は命令プリフェッチ
時の分岐処理を高速化する手法であるため、ここでは命
令プリフェッチ部を中心に説明する。
【0022】1.マイクロプロセッサの内部構造 図1を用いてマイクロプロセッサの内部構造を説明す
る。図1のマイクロプロセッサの各構成要素の機能は次
のとおりである。
【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が命令プリフェッチ部に含まれる。以下順に
各構成要素を説明する。
【0024】29ビット加算器であるPAG101は、
プリフェッチアドレスを生成する。プログラムを逐次実
行する場合、すなわち分岐時以外には、一回プリフェッ
チする毎にプリフェッチアドレスに固定値を加算して次
のプリフェッチアドレスを生成する。加算する固定値は
一度にプリフェッチする命令のバイト幅と等しく、外部
メモリとIC(命令キャッシュ)間のデ−タ線幅が8バ
イトの場合、加算値は8である。加算器への入力の一方
は信号線110であり、これにはプリフェッチアドレス
の値が出力されている。今一方の値は固定値であり、本
実施例では値8(LSBへのキャリー1ビットで値8を
表現できる)である。これらの加算結果は信号線105
に出力される。
【0025】分岐命令用バッファBW102は、分岐命
令の履歴すなわち分岐命令のアドレスと分岐先アドレ
ス、さらに分岐命令タイプを一組にして履歴情報として
記憶しておく。命令プリフェッチ時にはプリフェッチア
ドレスと履歴情報中の分岐命令アドレスを比較し、一致
した場合には分岐先アドレスと分岐命令タイプを出力す
る。
【0026】リターンバッファRB103は、分岐命令
の一つであるリターン命令用にリターンアドレスを保持
するLIFO(ラストイン・ファーストアウト)キュー
である。
【0027】命令キャッシュIC104は、信号線11
0を通してプリフェッチアドレス(29ビット)を入力
し、対応する命令(64ビット)をキャッシュから読み
出し、信号線108に出力する。入力したアドレスに対
応する命令がキャッシュIC104内にない場合には、
外部メモリアクセスを起動し、信号線120(64ビッ
ト)を通して命令が外部メモリから読み出されたキャッ
シュIC104に書き込まれる。
【0028】プリフェツチキューPFQ111はプリフ
ェッチした命令を保持するFIFO(ファーストイン・
ファーストアウト)キューの機能と、命令を整列する機
能(本実施例では64ビットから16ビットに整列す
る)を持つ。入力は信号線108(64ビット幅)、出
力は信号線112(16ビット幅)である。
【0029】命令アドレスキューPCQ121は、PA
G101で生成したプリフェッチアドレスを保持するF
IFOキューである。入力は3入力セレクタ109の出
力信号110(29ビット)であり、出力は信号線12
2(29ビット)である。
【0030】命令デコーダID113には、PFQ11
1から信号線112(16ビット)を通して命令が入力
される。入力される各命令の長さは16ビット単位で整
列された状態であり、命令のデコード結果は制御線を通
して各構成要素に接続される。ただし図1では制御信号
線を省略してある。
【0031】レジスタファイルRF114は、本実施例
では32ビット幅のレジスタ16本から構成され、入力
ポートを一つ、出力ポートを二つ持っている。かつこれ
らの三つのポートは同時に動作可能である。各ポートの
ビット幅は32ビットであり、それぞれ信号線121、
115、116に接続されている。
【0032】32ビット幅の整数論理演算器ALU11
7の入力はレジスタファイルから出力された信号線11
5、116であり、演算結果を信号線118に出力す
る。本実施例ではデータの演算とアドレスの計算を共に
ALU117で処理する。そのため、信号線118には
データまたはアドレスの何れかが出力される。
【0033】オペランドキャッシュOC119は、オペ
ランドをフェッチする場合には、信号線118にアドレ
スを入力としてアクセスされ、結果として得られたデー
タを信号線121に出力してレジスタファイル114に
値を転送する。オペランドストアの場合には、まず最初
のサイクルでストアアドレスをALU117からOC1
19に信号線118を用いて転送し、そのアドレスはO
C119内に保持する。続く次のサイクルでは信号線1
18を用いてストアデータを転送し、OC119及び外
部メモリへのオペランドストア処理を行う。また、オペ
ランドフェッチの際にアクセスしたデータがオペランド
キャッシュ119内に無い場合には、外部メモリアクセ
スを起動し、外部メモリからOC119に信号線120
を通してオペランドの転送を行う。
【0034】2.パイプライン処理の流れ 図2から図6を用いて、図1の本実施例のマイクロプロ
セッサのパイプライン処理の流れを説明する。
【0035】2.1 分岐の無い時のパイプラインの流
図2は分岐が無い時ときのパイプラインの処理の流れを
示している。横軸は時間であり、t0、t1、・・・の
それぞれが1サイクルである。縦軸にはパイプラインの
各ステージの処理をとっている。
【0036】ステージiは命令プリフェッチステージで
あり、図1のPAG101、BW102、RB103、
IC104、PFQ111、PCQ121の処理が含ま
れる。例えば図2において、時刻t0では命令1のプリ
フェッチが行われ、PFQ111から信号線112を通
して命令1が次の処理ステージ(命令デコード)に転送
される。尚、図2中の命令読み出しはすべて命令キャッ
シュIC104から行われると仮定している。
【0037】ステージdは命令デコードステージであ
り、図1のID113、RF114の処理が含まれる。
図2の時刻t1において命令1は命令デコーダID11
3でデコードされ、続いてデコード結果に基づいてレジ
スタファイルRF114からの読み出しを行う。読み出
されたデータは信号線115、116に出力される。
【0038】ステージeは演算及びアドレス計算ステー
ジであり、図1のALU117の処理が含まれる。図2
の時刻t2において命令1は命令デコーダID113か
らの制御に基づいて、ALU117を用いて演算を実行
する。入力は信号線115、116であり、結果を信号
線118に出力する。
【0039】ステージaはオペランドアクセスステージ
であり、図1のOC119の処理が含まれる。図2の時
刻t3において命令1は命令デコーダ113からの制御
に基づいて、オペランドアクセス処理を実行する。実行
する処理は次の3種類である。
【0040】(1)オペランドフェッチ(OC119内
にフェッチすべきデータが無い場合には、外部メモリか
らOC119へデータを転送後、再度OC119からフ
ェッチ処理を実行する。) (2)オペランドストア(OC119と外部メモリの両
方にデータをストアする。) (3)データ転送(ALU117の演算結果をRF11
4にストアする場合の処理。) いずれも入力は信号線118であり、上記処理(1)と
(3)における出力は信号線121に行う。また、外部
メモリとのデータの入出力には信号線120を用いる。
外部メモリへのアドレス出力線は図1では省略してい
る。
【0041】ステージsはレジスタストアステージであ
り、図1のRF114の処理が含まれる。図2の時刻t
4において命令1は命令デコーダ113からの制御に基
づいて、レジスタストアを実行する。入力は信号線12
1である。
【0042】2.2 分岐時のパイプラインの流れ 図3は無条件分岐命令braの実行時のパイプラインの
流れを示している。実行している命令の種類が無条件分
岐命令であることは、この命令の処理が命令デコードス
テージdを終了した時点すなわち時刻t0で判る。但し
分岐先アドレスはアドレス計算ステージeが終了する時
点すなわち時刻t1で明らかになる。そのため、分岐先
アドレスの命令11、12の命令プリフェッチは時刻t
2で行われる。そしてその結果として、1回の分岐あた
り2サイクルのオーバーヘッド(パイプライン処理のあ
き時間)が生じる。
【0043】図4は、図1の分岐命令用バッファBW1
02を用いてbra命令の分岐処理を高速化した場合の
パイプラインの流れを示している。図3と比べて、オー
バーヘッドが0サイクルになっている。これは時刻t0
のiステージにおいて、bra命令がプリフェッチされ
た事をBW102の履歴情報を用いて検出し、時刻t1
では既に分岐先命令である命令11をプリフェッチでき
ている結果である。またbra命令自体の処理は分岐処
理以外何も無いので、iステージにおいてbra命令そ
のものが削除され、dステージにはbra命令は転送さ
れていない。
【0044】図5は図4と同様に、図1の分岐命令バッ
ファBW102を用いて分岐処理を高速化した例であ
る。但し分岐命令は、サブルーチンコール命令bsrで
ある。サブルーチンコールのためのbsr命令は無条件
分岐のためのbra命令と異なり、分岐以外にも実行す
べき処理があるため、bra命令のように削除する訳に
は行かない。そのため分岐には2サイクルの実行時間を
必要とする。分岐によるオーバーヘッドは図4の場合と
同じく0サイクルである。
【0045】図6はやはり図4と同様に、分岐命令バッ
ファBW102を用いて分岐処理を高速化した例であ
る。但し分岐命令はリターン命令rtsである。rts
命令はbsr命令と同じ理由で、削除することはできな
い。そのため分岐には1サイクルを要する。但し分岐命
令バッファBW102の効果によってオーバーヘッドは
0サイクルである。
【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ビットである。
【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制御回路へ
と出力される。
【0048】分岐命令バッファ102BWの書き込み動
作は、次の通りである。
【0049】まず29ビットのプリフェッチアドレス信
号線110の下位5ビットが、アドレスデコーダ201
に入力される。続いて、アドレスデコーダ201でアド
レスデコードが行われ、32個のエントリのうちの一つ
が選択される。この時、BWA202とBWD203に
入力されている信号線122、204、118、205
の値が、選択されたエントリに同時に書き込まれる。分
岐命令アドレス122は図1の命令アドレスキューPC
Q121からの出力信号線、バリッドビット204は命
令プリフェッチ部の制御回路からの出力、分岐先アドレ
ス118は図1のALU117からの出力信号線(アド
レス計算の結果)、分岐命令タイプは命令デコーダID
113の出力情報を命令プリフェッチ部の制御回路でタ
イミング調整した信号である。
【0050】分岐命令バッファBWの読み出し動作は、
次の通りである。
【0051】書き込み動作と同様に、29ビットのプリ
フェッチアドレス信号線110の下位5ビットがアドレ
スデコーダ201に、残りの24ビットが一致比較器C
MP209に入力される。続いてアドレスデコーダ20
1でアドレスデコードが行われ、32個のエントリのう
ちの一つが選択される。BWAとBWDの選択されたエ
ントリのデータが読み出され、信号線206、213、
207、106、208にそれぞれ出力される。
【0052】信号線206に出力された分岐命令アドレ
スは、選択されたエントリに登録されている分岐命令の
アドレスの上位24ビットである。エントリの選択には
アドレスの下位5ビットのみを用いているので、登録さ
れている分岐命令のアドレスとプリフェッチ中の命令に
含まれる分岐命令のアドレスが同一であるかどうかを調
べるために、CMP209を用いてアドレスの上位24
ビットの一致比較を行う。
【0053】この24ビットに続くアドレスの下位7ビ
ットが、信号線213に出力される。信号線213の上
位5ビットは、プリフェッチアドレス110の5ビット
と一致している。それ故に、この5ビットをBWAから
削除することもまた可能である。信号線213の下位2
ビットはプリフェッチされた命令列8バイト中での分岐
命令(2バイト長)の位置を示しており、プリフェッチ
キューPFQ121の制御情報として使用される。
【0054】また、バリッドビット207は読み出され
たエントリの情報が有効であるか否かを示している。こ
のバリッドビット207は読み出されたエントリの情報
が有効な時は”1”となり、無効な時は”0”となる。
そこでバリッド信号207と一致比較結果の信号210
の論理積をとることで、BWA202とBWD203と
から読み出したデータがプリフェッチアドレス110に
対応した有効な情報であるか否かを示すヒット信号21
2を生成できる。
【0055】BWD203から読み出された分岐先アド
レス106は、命令プリフェッチ部内での分岐処理に用
いられる。すなわち、図1においてBW102から出力
された分岐先アドレス106はセレクタ109、信号線
110を通して、プリフェッチアドレスとして命令キャ
ッシュIC104、分岐命令用バッファBW102、プ
リフェッチアドレス発生器PAG101に入力される。
【0056】また、分岐命令タイプ208は、読み出さ
れたエントリの分岐命令が無条件分岐命令bra、サブ
ルーチンコール命令bsr、リターン命令rtsのいず
れであるかを示している。命令プリフェッチ部内の制御
回路はこの情報を受けて、図4から図6に示した処理の
いずれかを実行する。
【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では読み出されたバリッド
ビットがそのままヒット信号となる。
【0058】リターンバッファRB103への書き込み
動作は、次の通りである。
【0059】4ビットのポインタ301は、命令プリフ
ェッチ部の制御回路から与えられる。ポインタ301は
デコーダ302でデコードされ、RBD303のエント
リの一つを選択する。この時、RBD303に入力され
ているリターンアドレス118とバリッド信号304の
値とが選択されたエントリに書き込まれる。バリッド信
号304は命令プリフェッチ部の制御回路から与えられ
る。RB103への書き込みは、サブルーチンコール命
令(例えばbsr命令)の実行時に起動される。そして
その際、ポインタを一つ進める。
【0060】リターンバッファRB103からの読み出
し動作は、次の通りである。
【0061】書き込み時と同じく、4ビットのポインタ
301は命令プリフェッチ部の制御回路から与えられ
る。ポインタ301はデコーダ302でデコードされ、
RBD303のエントリの一つを選択する。選択された
エントリのデータは、信号線107と信号線305に同
時に出力される。BW102で読み出された分岐命令の
タイプがリターン命令rtsでありかつリターンバッフ
ァRB103から読み出されたヒット(バリッド)信号
が値1であった場合、リターンアドレス107を次のプ
リフェッチアドレスとして、図1のセレクタ109、信
号線110を通して命令キャッシュIC104、分岐命
令用バッファBW102、プリフェッチアドレス発生器
PAG101に転送する。リターンバッファRB103
のポインタは、サブルーチンリターン命令(例えばrt
s命令)の実行時に一つ戻す。
【0062】サブルーチンリターン命令rtsが無条件
分岐命令bra、サブルーチンコール命令bsrと異な
り、分岐先アドレスを分岐命令用バッファBW102内
に保持できない理由は次のとおりである。
【0063】リターン命令rtsは、サブルーチンから
のリターンのために使用される。すなわち、サブルーチ
ンの最後の命令として、サブルーチンをコールしたルー
チンのコール命令の次の命令に分岐する。一方、リター
ンアドレスはコール時にスタックに退避され、リターン
時にはスタックから回復される。そのため、どのルーチ
ンからコールされるかによって、同じサブルーチンリタ
ーン命令rtsであっても、リターン先アドレスが異な
る。
【0064】これに対して分岐命令バッファBW102
では、分岐命令のアドレスと分岐先アドレスを一組にし
た履歴情報を保持する。前述のようにサブルーチンリタ
ーン命令rtsの場合には分岐命令アドレスと分岐先ア
ドレスの関係が一意ではないから、サブルーチンリター
ン命令rtsの分岐先リターンアドレスを分岐命令用バ
ッフアBW102内に保持することはできない。そこ
で、スタックのリターンアドレスのコピーを保持するバ
ッファであるRB103を設け、このバッファRB10
3からリターンアドレスを得ることでこの問題を解決し
ている。
【0065】4. 動作フロー 図9、図10は上記に説明した本実施例によるデータプ
ロセッサの命令プリフェッチ部の制御基本フローであ
る。分岐、リセット、例外発生時の状態遷移は省略し
た。以下、図9、図10を用いて制御フローを説明す
る。
【0066】ステップ900はプリフェッチキューPF
Q111のあきを待っている状態である。PFQ111
はFIFOキューであるので、データが満杯になった場
合には、命令デコーダID113へのデータ転送によっ
て空きができるまで、次のデータ書き込みができなくな
る。そのためステップ901の判定動作(PFQが満杯
か否か)によって、再び待ち状態ステップ900に遷移
するか、それともステップ902に遷移するかが決定さ
れる。
【0067】ステップ902は、命令キャッシュIC1
04、分岐命令バッファBW102及びリターンバッフ
ァRB103の読み出しを行う状態である。それらの読
み出しの結果をステップ903から906で判定し、次
の動作状態を907から910のどれか一つに決定す
る。
【0068】ステップ903は命令キャッシュIC10
4の読み出しが成功(ヒット信号の値が1)したか否か
を判定し、成功した場合にはステップ904へ、失敗し
た場合にはステップ910に遷移する。
【0069】ステップ904は分岐命令バッファBW1
02の読み出しが成功したか否か、すなわち図7のヒッ
ト信号212の値が1であるか否かを判定する。読み出
しが成功した場合にはステップ905へ、失敗した場合
にはステップ909へ遷移する。
【0070】ステップ905は分岐命令バッファBW1
02から読み出された分岐命令タイプ情報(図7の信号
208)がリターン命令rtsを指示するものか否かを
判定する。リターン命令rtsの場合にはステップ90
6へ、そうでない場合にはステップ907へ遷移する。
【0071】ステップ906はリターンバッファRB1
03の読み出しが成功したか否か、すなわち図8のヒッ
ト信号305の値が1であるか否かを判定する。成功し
た場合にはステップ908へ、失敗した場合にはステッ
プ909へ遷移する。
【0072】ステップ907は分岐命令バッファBW1
02にヒットし、かつその分岐命令が無条件分岐命令b
raまたはサブルーチンコール命令bsrである場合に
遷移する状態であり、次のサイクルのプリフェッチアド
レスとしてBW102から出力された分岐先アドレス信
号106を用いる。具体的には、図1のセレクタ109
により信号106を選択し、その値を信号110に出力
する。
【0073】ステップ908は分岐命令バッファBW1
02とリターンバッファRB103の両方にヒットし、
かつその分岐命令がリターン命令rtsである場合に遷
移する状態であり、次のサイクルのプリフェッチアドレ
スとしてRB103から出力されたリターンアドレス信
号107を用いる。具体的には、図1のセレクタ109
により信号107を選択し、その値を信号110に出力
する。
【0074】ステップ909は命令キャッシュICには
ヒットしたが、ステップ907、ステップ908のいず
れへの遷移条件も満たさない場合に遷移する状態であ
る。次のサイクルのプリフェッチアドレスとしては図1
のPAG101から出力された信号105の値を用い
る。具体的には、図1のセレクタ109により信号10
5を選択し、その値を信号110に出力する。
【0075】ステップ910は命令キャッシュIC10
4の読み出しが失敗した場合に遷移する状態であり、外
部メモリアクセスが起動される。アクセスに用いるアド
レスは命令キャッシュの読み出しに用いたプリフェッチ
アドレス(信号110)である。このアドレス信号線は
図1中では省略している。外部メモリからの命令転送が
終了すると、状態は再びステップ902へと遷移する。
【0076】ステップ907、908、909の次状態
は、ステップ911である。
【0077】ステップ911では、BW102、RB1
03への書き込み動作を起動するか否かを決定する。そ
の判定は基本的には、無条件分岐命令bra、サブルー
チンコール命令bsr、リターン命令rtsのいずれか
の命令が命令デコーダ113でデコードされたという、
デコード情報を基に起動する。但しこれら3つの分岐命
令ごとに起動条件は若干異なる。
【0078】(1)無条件分岐命令bra bra命令がデコードされた場合にはBW102、RB
103が使用可能状態にある時には常に、BW102へ
の書き込みを起動する。bra命令がBW102を用い
た分岐を生じる場合、bra命令は命令プリフェッチ部
内で削除され、命令デコード部へは転送されない。逆
に、bra命令がデコードされた場合には、そのbra
命令はBW102を用いた分岐処理を実行していない。
【0079】(2)サブルーチンコール命令bsr、リ
ターンrts命令 bsr命令またはrts命令を、BW102を用いて分
岐処理する場合、命令プリフェッチ部は分岐命令を信号
112を通して命令デコード部へ転送すると共に、その
分岐命令がBW102を用いて分岐処理済みであること
を示すタグ情報を命令デコード部に送る。命令デコード
部ではこのタグ情報を基に、BW102を用いて分岐済
みの分岐命令について、分岐指示信号と、bsr命令ま
たはrts命令がデコードされたというデコード情報と
を命令プリフェッチ部に送らないようにする。
【0080】BW102への書き込みを起動する場合に
はステップ912へ、起動しない場合にはステップ90
1へ遷移する。
【0081】ステップ912は分岐指示信号待ち状態で
ある。分岐指示信号がアサ−トされたか否かはステップ
913で判定する。ステップ912では図1の命令アド
レスキューPCQ121を用いて分岐命令のアドレスを
信号線122に出力し、さらに図7の信号線204、2
05を生成して、分岐指示信号のアサートを待つ。分岐
指示信号アサート時にはステップ914へ遷移する。
【0082】ステップ914ではBW102への登録を
行う。図1の本実施例のマイクロプロセッサでは、分岐
指示信号と分岐先アドレスは同時に生成される。分岐先
アドレスは図1のALU117で生成され、信号線11
8を通してBWに転送される。BW102では分岐指示
信号のアサートにより、すべての入力データが揃い、図
7のBWA202とBWD203のプリフェッチアドレ
ス110で選択されたエントリに同時に書き込みを行
う。本アルゴリズムでは、ステップ914でBW102
の書き込みとIC104の読み出しを同時に行う。その
ため、BW102の書き込み時にはBW102の読み出
しを行えない。但しこれは、BW102を2ポートメモ
リとすれば、実現できる。
【0083】ステップ914でBW102への書き込み
が終了した後は、再びステップ903に遷移する。
【0084】
【発明の効果】以上に示したように、本発明を用いた実
施例においては、図4から図6に示したように分岐処理
特に無条件分岐処理を高速化できる。その特徴は、 1)分岐命令アドレスと分岐先アドレスを組にした分岐
の履歴情報を保持し、その履歴情報をプリフェッチアド
レスを用いて検索するため、早い時点での分岐が可能で
ある。
【0085】2)BW(分岐履歴情報を保持するバッフ
ァ)とRB(リターンアドレスを保持するバッファ)を
連動して動作させることにより、リターン命令の分岐処
理をも高速化できる。
【0086】3)BW内に分岐命令のタイプ情報を保持
することにより、上記2)の連動動作が可能になると共
に、分岐命令ごとに極め細かい制御が可能になる。例え
ば、無条件分岐命令braの場合には実行処理を削除
し、命令bsrの場合には削除しないといった処理の制
御にこの情報を使用している。
【図面の簡単な説明】
【図1】本発明の実施例によるマイクロプロセッサの全
体構成を示す図である。
【図2】分岐が無い時の図1のマイクロプロセッサのパ
イプラインの流れを示す図である。
【図3】図1のマイクロプロセッサの分岐命令バッファ
BW102のミス時のパイプラインの流れを示す図であ
る。
【図4】図1のマイクロプロセッサの分岐命令バッファ
BW102のヒット時のパイプラインの流れを示す図で
ある。
【図5】図1のマイクロプロセッサの分岐命令バッファ
BW102のヒット時のパイプラインの流れを示す図で
ある。
【図6】図1のマイクロプロセッサの分岐命令バッファ
BW102、リターンバッファRB103のヒット時の
パイプラインの流れを示す図である。
【図7】図1のマイクロプロセッサ中の分岐命令バッフ
ァBW102の構成をより詳細に示す図である。
【図8】図1のマイクロプロセッサ中のリターンバッフ
ァRB103の構成をより詳細に示す図である。
【図9】図1のマイクロプロセッサの命令プリフェッチ
部の制御フローを示す図である。
【図10】図1のマイクロプロセッサの命令プリフェッ
チ部の制御フローを示す図である(図9の続き)。
【符号の説明】
100…マイクロプロセッサ、101…プリフェッチア
ドレス発生器。29ビット加算器。102…分岐命令用
バッファ。分岐先アドレスを保持する。103…リター
ンバッファ。リターンアドレスを保持する。104…命
令キャッシュ。201…5ビットのアドレスデコ−ダ。
202…分岐命令バッファのアドレスタグ部。32エン
トリ、32ビット幅。203…分岐命令バッファのデ−
タ部。32エントリ、33ビット幅。209…24ビッ
ト一致比較器。302…4ビットのアドレスデコ−ダ。
303…リターンバッファのデ−タ部。16エントリ、
32ビット幅。
───────────────────────────────────────────────────── フロントページの続き (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

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】 プリフェッチアドレスを発生するプリフ
    ェッチアドレス発生器と、 前記プリフェッチアドレスに従ってメモリから命令をプ
    リフェッチするプリフェッチキューと、 前記プリフェッチキューに格納された命令をデコードす
    る命令デコーダと、 前記命令デコーダの出力によって制御され、アドレス演
    算によってコール命令の分岐先アドレス及びリターン命
    令のリターンアドレスを生成可能な演算ユニットと、 前記プリフェッチアドレス発生器で生成されたコール命
    令とリターン命令のアドレス、前記演算ユニットで生成
    されたコール命令の岐先アドレス、及びコール命令かリ
    ターン命令かのタイプを示し前記命令デコーダから出力
    される情報を格納するための第1のバッファと、前記演算ユニットで生成された リターンアドレスを格納
    するための第2のバッファと、 プリフェッチアドレスを前記第1のバッファに格納され
    ている分岐命令のアドレスと比較する比較器と、を含
    み、 前記比較器による比較結果が一致したとき前記第1のバ
    ッファから読み込んだ対応する前記タイプを示す情報が
    コール命令であることを示すなら対応する分岐先アドレ
    スを第1のバッファから読み出し、また、前記比較器に
    よる比較結果が一致したとき前記第1のバッファから読
    み込んだ対応する前記タイプを示す情報がリターン命令
    であることを示すならリターンアドレスを第2のバッフ
    ァから読み出し、読み出したアドレスに従って次のプリ
    フェッチアドレスを生成するものであることを特徴とす
    るデータプロセッサ。
  2. 【請求項2】 前記メモリはキャッシュメモリであり、
    それには外部メモリから命令が格納され、その命令は前
    記プリフェッチアドレスに従って前記キャッシュメモリ
    からプリフェッチキューにプリフェッチされるものであ
    ることを特徴とする請求項1記載のデータプロセッサ。
  3. 【請求項3】 前記プリフェッチキュー、前記命令デコ
    ーダ、前記演算ユニット、前記比較器、前記第1のバッ
    ファ、前記第2のバッファ、及び前記キャッシュメモリ
    は半導体基板に形成されて成るものであることを特徴と
    する請求項2記載のデータプロセッサ。
  4. 【請求項4】 前記プリフェッチキュー、前記命令デコ
    ーダ、及び前記演算ユニットはパイプライン処理を行う
    ものであることを特徴とする請求項3記載のデータプロ
    セッサ。
  5. 【請求項5】 前記第2のバッファはラストイン・ファ
    ーストアウト形式のバッファであることを特徴とする請
    求項4記載のデータプロセッサ。
JP28103091A 1991-10-28 1991-10-28 データプロセッサ Expired - Lifetime JP3182438B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP28103091A JP3182438B2 (ja) 1991-10-28 1991-10-28 データプロセッサ
KR1019920018637A KR100259306B1 (ko) 1991-10-28 1992-10-10 분기 명령 버퍼를 갖는 데이타 프로세서
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 (ja) 1991-10-28 1991-10-28 データプロセッサ

Publications (2)

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

Family

ID=17633315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28103091A Expired - Lifetime JP3182438B2 (ja) 1991-10-28 1991-10-28 データプロセッサ

Country Status (3)

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

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 (ko) * 1997-06-18 2005-09-08 삼성에스디아이 주식회사 보호수지막용조성물및이를이용한음극선관용형광막의제조방법
US20010029582A1 (en) * 1999-05-17 2001-10-11 Goodman Daniel Isaac Method and system for copy protection of data content
JP3513038B2 (ja) 1998-12-10 2004-03-31 富士通株式会社 命令フェッチ制御装置
JP2002342075A (ja) * 2001-05-11 2002-11-29 Mitsubishi Electric Corp マイクロプロセッサ
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 (ja) 2004-07-29 2006-02-09 Fujitsu Ltd 分岐予測装置および分岐予測方法
JP2007041837A (ja) * 2005-08-03 2007-02-15 Nec Electronics Corp 命令プリフェッチ装置及び命令プリフェッチ方法
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
DE3382350D1 (de) * 1982-11-17 1991-08-29 Nec Corp Anordnung zum vorabholen von befehlen mit vorhersage einer verzweigungszieladresse.
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 (ja) * 1988-03-23 1989-09-26 Hitachi Ltd データ処理装置
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 (ja) * 1988-12-21 1995-07-31 松下電器産業株式会社 データ処理装置
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 (ko) 2000-06-15
US5454087A (en) 1995-09-26
JPH05120013A (ja) 1993-05-18
KR930008615A (ko) 1993-05-21

Similar Documents

Publication Publication Date Title
JP3182438B2 (ja) データプロセッサ
JP2761688B2 (ja) データ処理装置
US5125083A (en) Method and apparatus for resolving a variable number of potential memory access conflicts in a pipelined computer system
JP3871884B2 (ja) 記憶からロードへの転送のための機構
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 (ja) データ処理装置
JP3658101B2 (ja) データ処理装置
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 (ja) 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
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 (ja) データ処理装置
JPH03129432A (ja) 分岐制御回路
JPH02287626A (ja) パイプライン方式の分岐命令制御装置
JPH07239780A (ja) 1クロック可変長命令実行処理型命令読み込み電子計 算機
US7401328B2 (en) Software-implemented grouping techniques for use in a superscalar data processing system
JP3708022B2 (ja) プロセッサ
JP2001022577A (ja) 情報処理装置
JPS61288230A (ja) パイプライン制御方式
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP3325309B2 (ja) サブルーチンリターン命令処理装置
JPH07191911A (ja) アドレス変換装置及びマイクロプロセッサ算出方法
JP3493110B2 (ja) 高速分岐処理装置
JP2928879B2 (ja) データ処理装置

Legal Events

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 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