JPH1049370A - 遅延命令を有するマイクロプロセッサ - Google Patents

遅延命令を有するマイクロプロセッサ

Info

Publication number
JPH1049370A
JPH1049370A JP8203675A JP20367596A JPH1049370A JP H1049370 A JPH1049370 A JP H1049370A JP 8203675 A JP8203675 A JP 8203675A JP 20367596 A JP20367596 A JP 20367596A JP H1049370 A JPH1049370 A JP H1049370A
Authority
JP
Japan
Prior art keywords
instruction
register
delay
value
delayed
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.)
Granted
Application number
JP8203675A
Other languages
English (en)
Other versions
JP3745039B2 (ja
Inventor
Horuman Edogaa
エドガー・ホルマン
Toyohiko Yoshida
豊彦 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP20367596A priority Critical patent/JP3745039B2/ja
Priority to US08/788,839 priority patent/US5815698A/en
Publication of JPH1049370A publication Critical patent/JPH1049370A/ja
Priority to US09/116,260 priority patent/US6851045B2/en
Application granted granted Critical
Publication of JP3745039B2 publication Critical patent/JP3745039B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

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

Abstract

(57)【要約】 【課題】 遅延命令は分岐命令に限られているので、効
果的な命令のスケジューリングができないという課題が
あった。 【解決手段】 ALU361、乗算器363、PC制御
部365、メモリ制御部367およびシフタ369は、
遅延命令のデコード結果をレジスタ362A,364
A,366A,368A,370Aに格納するととも
に、遅延命令で指定された遅延量に応じたプログラムカ
ウンタ値をレジスタ362B,364B,366B,3
68B,370Bに格納するものである。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、実行時期を遅ら
せて実行される遅延命令を有するマイクロプロセッサに
関するものである。
【0002】
【従来の技術】図20は従来のパイプライン制御方式に
よるマイクロプロセッサの処理シーケンスを示すシーケ
ンス図である。図において、300は分岐命令、301
はパイプラインにおける命令フェッチステージ、302
はパイプラインにおけるデコードステージ、303はパ
イプラインにおける命令実行ステージ、304はパイプ
ラインにおけるライトバックステージ、305は第1の
遅延スロットにおける命令、306は第2の遅延スロッ
トにおける命令、307は分岐先で実行される命令を示
す。なお、以下、単に「分岐命令」と表現された場合に
は、それは、プログラムカウンタ(PC)値にオペラン
ドで示されるオフセット値が加算された値であるアドレ
スに分岐する命令と、オペランドで示されるアドレスに
間接的にまたは直接に分岐する命令とを含む。分岐命令
とジャンプ命令とが、併記された場合には、それらは、
それぞれ、プログラムカウンタ値にオペランドで示され
るオフセット値が加算された値であるアドレスに分岐す
る分岐命令、オペランドで示されるアドレスに間接的に
または直接に分岐するジャンプ命令を意味する。また、
以下、分岐命令およびジャンプ命令は、サブルーチンコ
ール命令を含むものとして説明を進める。
【0003】次に動作について説明する。分岐命令が実
行されると、図20に示されたパイプライン制御を行う
マイクロプロセッサは、分岐先アドレスを3番目のステ
ージである命令実行ステージ303で得ることができ
る。その時点では、第1の遅延スロットにおける命令3
05および第2の遅延スロットにおける命令306は、
既にデコードステージ302または命令フェッチステー
ジ301にある。マイクロプロセッサは、それらの命令
を無効なものとして扱わなくてはならず、パイプライン
の無駄が生ずる。
【0004】パイプラインの無駄を防止するために、
「コンピュータアーキテクチャ:量的アプローチ(Co
mputer Architecture:A Qua
ntitative Approach),Morga
n Kaufmann社,1990年」等の文献で種々
の手法が提案されている。例えば、命令のスケジューリ
ング、または命令のスケジューリングと遅延分岐命令
(ディレイド分岐命令)との組み合わせによって、パイ
プラインの無駄を低減することができる。
【0005】例えば、特開平6−131180号公報や
特開平6−274352号公報に、ディレイド分岐命令
に関する技術が記載されている。一般にディレイド分岐
命令における遅延量はマイクロプロセッサのアーキテク
チャに応じた固定的な値であるが、特開平6−1311
80号公報には任意の遅延スロット数を指定できる命令
が開示されている。指定された遅延スロット数はデクリ
メントカウンタに設定される。デクリメントカウンタの
値は動作クロック信号の入力に従って減り、値が「1」
になると分岐先命令のフェッチが開始される。
【0006】図21は2演算を同時に行うマイクロプロ
セッサにおける命令デコーダおよび命令実行部の部分の
一般的な構成を示すブロック図である。図において、3
41は算術論理演算を実行するALU、342は乗算を
実行する乗算器、343はPC値を計算するPC制御
部、344はアドレス計算を行うメモリ制御部、345
はシフト演算を実行するシフタ、346は1サイクルで
2命令を転送できるバス、347は命令をデコードして
命令実行部に制御信号11,12を与えるデコーダ、3
48は汎用レジスタである。
【0007】図22はプログラムの一例を示す説明図で
ある。図において、ADD,SRA,SUB,MULお
よびJMPは、それぞれ、加算命令、シフト命令、減算
命令、乗算命令およびジャンプ命令を示す。加算命令、
シフト命令、減算命令、乗算命令およびジャンプ命令
は、ぞれぞれ、命令実行部におけるALU341、シフ
タ345、ALU341、乗算器342およびPC制御
部343において扱われる。また、例えば、(r3,r
0,6)は、汎用レジスタ348中のr0レジスタの値
と即値「6」とを対象とした演算結果を汎用レジスタ3
48中のr3レジスタに設定することを示す。
【0008】図20に示されたマイクロプロセッサは2
演算命令を扱えるので、命令実行部におけるリソースが
競合しない限り、図22に示されたプログラムを2演算
命令による各命令に変換したものを扱える。例えば、図
23に示されるように変換された各命令を実行できる。
図23において、各行は2演算命令の1命令に対応す
る。すなわち、各行は同時実行される2演算を示す。S
RAとSUBとは、リソースの競合はないがレジスタ依
存の関係にあるので、同時に実行することはできない。
よって、2行目にNOPが置かれている。このような命
令のスケジューリングは、プログラマまたはコンパイラ
によってなされる。
【0009】
【発明が解決しようとする課題】従来の遅延命令を有す
るマイクロプロセッサは以上のように構成されているの
で、以下のような課題があった。 (1)遅延量が固定的にしか指定できないディレイド分
岐命令を有するマイクロプロセッサでは、効果的な命令
のスケジューリングができない。例えば、図23におけ
る5行目のJMPを削除して2行目のNOPの位置に遅
延量「2」のディレイドジャンプ命令を置くことは効果
的である。そのようにすれば、図23の4行目の命令の
フェッチ後に直ちにジャンプ先アドレスTGTの命令の
フェッチが開始され、パイプラインの無駄が生じないか
らである。遅延量「2」しか指定できないマイクロプロ
セッサでは、そのようなディレイド分岐命令を置いた命
令群を実行できる。しかし、例えば遅延量「3」しか指
定できないマイクロプロセッサを使用する場合には、プ
ログラマまたはコンパイラは、そのようなスケジューリ
ングを行うことはできない。 (2)指定された遅延量に応じた値をデクリメントカウ
ンタに設定するマイクロプロセッサでは、命令遅延中に
割り込みや新たな分岐が生じた場合に矛盾なく処理を進
めるための構成が複雑になる。例えば、デクリメントカ
ウンタの値は動作クロックに従ってカウントダウンされ
るので、何等の考慮も払わないと、設定された遅延量と
実際の遅延量との間で、割り込み処理等で費やされた動
作クロック数分の狂いが生ずる。 (3)ディレイド命令は分岐命令に限られているので、
効果的な命令のスケジューリングができない。
【0010】この発明は上記のような課題を解決するた
めになされたもので、処理の矛盾を生じさせることなく
任意の遅延量を指定できるディレイド命令を扱えて効果
的な命令のスケジューリングができる環境をプログラマ
に提供でき、その結果、プログラムをより高速に実行し
うるマイクロプロセッサを得ることを目的とする。
【0011】
【課題を解決するための手段】請求項1記載の発明に係
る遅延命令を有するマイクロプロセッサは、PC値を制
御するPC制御部が、ディレイド分岐命令の分岐先アド
レスを示す値およびディレイド分岐命令で指定された遅
延量に応じたプログラムカウンタ値を保持する遅延分岐
命令保持手段を有するものである。
【0012】請求項2記載の発明に係る遅延命令を有す
るマイクロプロセッサは、各演算ユニットが、ディレイ
ド演算命令の内容およびディレイド演算命令の固定のま
たは可変の遅延量に応じた値を保持する遅延命令保持手
段を有するものである。ここで、ディレイド演算命令の
内容とは、ディレイド演算命令のデコード結果であっ
て、いかなる演算を行うかを示す情報である。なお、特
に断らない限り、ディレイド分岐命令は、ディレイド演
算命令に含まれないものとする。
【0013】請求項3記載の発明に係る遅延命令を有す
るマイクロプロセッサは、任意の遅延量を指定できるデ
ィレイド演算命令で指定された遅延量に応じた値を保持
する遅延命令保持手段を有するものである。
【0014】請求項4記載の発明に係る遅延命令を有す
るマイクロプロセッサは、各演算ユニットが、ディレイ
ド演算命令で指定された遅延量に応じたPC値を保持す
る遅延命令保持手段を有するものである。
【0015】請求項5記載の発明に係る遅延命令を有す
るマイクロプロセッサは、各演算ユニットに、複数の遅
延命令保持手段が設けられているものである。
【0016】請求項6記載の発明に係る遅延命令を有す
るマイクロプロセッサは、上記の各構成を有するととも
に、命令実行部が複数演算を同時に実行するものであ
る。
【0017】
【発明の実施の形態】以下、この発明の実施の一形態を
説明する。 実施の形態1.図1はこの発明の実施の形態1によるマ
イクロプロセッサの構成を示すブロック図である。この
マイクロプロセッサは、32ビットの内部データバスを
有する32ビットマイクロプロセッサである。図におい
て、2は命令RAM6から64ビット幅のIDバスを介
して入力した命令コードをデコードする処理を行う命令
デコードユニット(命令デコーダ)、3はアドレス計算
を行うメモリユニット(命令実行部)、4は論理演算や
シフト演算を行う整数演算ユニット(命令実行部)、5
は32ビット×64ワードの汎用レジスタ、7はデータ
が格納されるデータRAMである。
【0018】命令デコードユニット2において、8,9
はそれぞれ命令コードをデコードするデコーダ、10は
プロセッサの状態を示すプロセッサ状態語(Processor
Status Word 、以下、プロセッサ状態語をPSWと呼
ぶ)である。命令デコードユニット2は、さらに、デコ
ーダ8のデコード結果とPSW10の内容にもとづいて
制御信号11を作成し、それをメモリユニット3に与え
る。また、命令デコードユニット2は、デコーダ9のデ
コード結果とPSW10の内容にもとづいて制御信号1
2を作成し、それを整数演算ユニット4に与える。
【0019】メモリユニット3において、13はジャン
プや分岐を含まない命令を実行するとPC値に8を加え
て次に実行する命令に対するPC値を算出するととも
に、ジャンプや分岐を含む命令の実行時に分岐変位をP
C値に加算したり、演算で指定されたアドレッシングモ
ードに応じた計算を行ってジャンプ先の命令に対するP
C値を計算するPC制御部である。また、PC制御部1
3は、計算したPC値を32ビット幅のIAバスを介し
て命令RAM6に送り、命令RAM6から命令コードを
出力させる。14はオペランドとなるデータのアクセス
を制御するメモリ制御部である。メモリ制御部14は、
32ビット幅のDAバスを介してアドレスデータをデー
タRAM7に転送し命令実行に必要なデータを64ビッ
ト幅のDDバスを介してアクセスする。15は汎用レジ
スタ5から32ビット幅のS1バス、S2バス、S3バ
スを介して転送された最大3ワードのデータを用いて算
術論理演算を行い演算結果を32ビット幅のD1バスを
介して汎用レジスタ5に転送するALU、16は汎用レ
ジスタ5からS1バス、S2バス、S3バスを介して転
送されたデータを用いてシフト演算を行い演算結果をD
1バスを介して汎用レジスタ5に転送するシフタであ
る。
【0020】メモリユニット3に対して、S1バス、S
2バス、S3バス、S4バスを介して、32ビット長の
データを一時に4ワード転送することが可能である。従
って、例えば、第1のレジスタの内容と第2のレジスタ
の内容との和でアドレッシングされるメモリの領域に第
3のレジスタの内容をストアするとともに、第3のレジ
スタの内容をストアしたアドレスに所定値を加算して得
られる値でアドレッシングされるメモリの領域に第4の
レジスタの内容をストアする2ワードストア命令を実現
することができる。また、メモリユニット3は、D1バ
スおよびD2バスを介して、メモリユニット3内での2
ワードの演算結果またはデータRAM7から転送された
2ワードのデータを汎用レジスタ5に転送することがで
きる。
【0021】整数演算ユニット4において、17は汎用
レジスタ5から32ビット幅のS4バス、S5バス、S
6バスを介して転送された最大3ワードのデータを用い
て乗算を行い演算結果を32ビット幅のD2バス、D3
バスを介して汎用レジスタ5に転送する乗算器、18は
乗算の結果を累積加算または累積減算して保持するアキ
ュムレータである。アキュムレータとして、64ビット
のものが2本ある。19は汎用レジスタ5からS4バ
ス、S5バス、S6バスを介して転送された最大3ワー
ドのデータを用いて算術論理演算を行い演算結果をD2
バス、D3バスを介して汎用レジスタ5に転送するAL
U、20は汎用レジスタ5からS4バス、S5バス、S
6バスを介して転送されたデータを用いてシフト演算を
行い演算結果をD2バス、D3バスを介して汎用レジス
タ5に転送するシフタである。
【0022】このマイクロプロセッサでは、汎用レジス
タ5から、最大6種類のレジスタ値を読み出すことが可
能であって、読み出されたデータは、それぞれ、S1バ
ス、S2バス、S3バス、S4バス、S5バス、S6バ
スに出力される。また、汎用レジスタ5には、D1バ
ス、D2バス、D3バスを介して最大3種類のレジスタ
値を同時に書き込むことが可能である。
【0023】図2はこのマイクロプロセッサの命令フォ
ーマットを示す説明図である。命令フォーマットとし
て、図2(a)に示すような1つの命令コードで2つの
演算(operation )を指示する2演算命令のフォーマッ
ト101と、図2(b)に示すような1つの命令コード
で1つの演算を指示する1演算命令のフォーマット10
2とがある。2演算命令のフォーマット101には、フ
ィールド103およびフィールド104からなるフォー
マットフィールドと、2つの演算フィールド106,1
07と、各演算フィールド106,107に付属する各
実行条件フィールド105とがある。1演算命令のフォ
ーマット102には、フィールド103およびフィール
ド104からなるフォーマットフィールドと、演算フィ
ールドと、演算フィールドに付属する実行条件フィール
ド105とがある。演算フィールドは、フィールド10
8,109,110からなる。
【0024】フォーマットフィールドは、以下のような
意味を示す。 コード:フォーマット 実行の順番 operation_0 operation_1 FM=00:2命令 第1 第1 01:2命令 第1 第2 10:2命令 第2 第1 11:1命令 第1 …… ここで、FMは、フィールド103およびフィールド1
04からなる2ビットの値である。
【0025】FM=00の場合、この命令は2演算命令
であることを示す。そして、演算フィールド106で指
示されたoperation_0の演算と演算フィールド107で
指示されたoperation_1の演算とが、デコード直後のク
ロックサイクルで並列に実行される。operation_0の演
算はメモリユニット3で実行され、operation_1の演算
は整数演算ユニット4で実行される。FM=01の場
合、この命令は2演算命令であることを示す。そして、
operation_0の演算が、デコード直後のクロックサイク
ルで実行され、operation_1の演算が、operation_0の
演算に対して、1クロックサイクル遅れて実行される。
FM=10の場合、この命令は2演算命令であることを
示す。そして、operation_1の演算が、デコード直後の
クロックサイクルで実行され、operation_0の演算が、
operation_1の演算に対して、1クロックサイクル遅れ
て実行される。FM=11の場合、この命令は1演算命
令であることを示す。そして、フィールド108,10
9,110からなる演算フィールドで指示された1つの
演算がデコード直後のクロックサイクルで実行される。
【0026】実行条件フィールド105は、以下のよう
な意味を持つ。
【0027】実行条件フィールド105は、マイクロプ
ロセッサの実行コントロールフラグF0,F1の値に応
じて、演算フィールド106,107のoperation_0の
演算やoperation_1の演算、およびフィールド108,
109,110からなる演算フィールドの演算が有効で
あるか無効であるか定める。実行コントロールフラグF
0,F1については後で説明する。演算が有効であると
は、演算結果がレジスタ、メモリおよびフラグに反映さ
れ、その演算による動作の結果が残ることを意味する。
演算が無効であるとは、演算結果がレジスタ、メモリお
よびフラグに反映されず、あたかも無効演算(NOP)
が実行されたかのような動作の結果が残ることを意味す
る。
【0028】実行条件フィールド105の値CC=00
0のときには、実行コントロールフラグF0,F1の値
にかかわらず常に演算は有効である。CC=001のと
きには、実行コントロールフラグF0=真のときにのみ
演算は有効である。実行コントロールフラグF1の状態
はいずれでもよい。CC=010のときには、実行コン
トロールフラグF0=偽のときにのみ演算は有効であ
る。実行コントロールフラグF1の状態はいずれでもよ
い。CC=011のときには、実行コントロールフラグ
F1=真のときにのみ演算は有効である。実行コントロ
ールフラグF0の状態はいずれでもよい。CC=100
のときには、実行コントロールフラグF1=偽のときに
のみ演算は有効である。実行コントロールフラグF0の
状態はいずれでもよい。CC=101のときには、実行
コントロールフラグF0=真かつF1=真のときにのみ
演算は有効である。CC=110のときには、実行コン
トロールフラグF0=真かつF1=偽のときにのみ演算
は有効である。CC=111のときの動作は未定義であ
り、ユーザは、CC=111となる命令を用いることは
できない。
【0029】図3は演算フィールドの詳細な内容を示す
説明図である。フォーマット111〜117は、それぞ
れ28ビットで表現される短型の演算フィールド106
または演算フィールド107によるものである。フォー
マット118は、フィールド108,109,110で
構成される長型の演算フィールドによるものである。
【0030】フォーマット111(Short_M)
は、演算内容を指定するフィールド120、レジスタ番
号を指定する2つのフィールド121,122、レジス
タ番号または6ビット長の即値を指定するフィールド1
23、およびフィールド123がレジスタ番号を示すの
か即値を示すのかを指定するフィールド124で構成さ
れる。図3に示すように、フィールド124の値Xが
「00」、「01」または「11」であるときにはフィ
ールド123がレジスタ番号を示していることを示し、
「10」であるときには即値を示していることを示す。
このフォーマット111は、レジスタ間接アドレッシン
グのメモリアクセス演算に用いられる。
【0031】フォーマット112(Short_A)
は、演算内容を指定するフィールド120、レジスタ番
号を指定する2つのフィールド121,122、レジス
タ番号または6ビット長の即値を指定するフィールド1
23、およびフィールド123がレジスタ番号を示すの
か即値を示すのかを指定するフィールド125で構成さ
れる。図3に示すように、フィールド125の値X’が
「0」であるときにはフィールド123がレジスタ番号
を示していることを示し、「1」であるときには即値を
示していることを示す。このフォーマット112は、算
術演算、論理演算、シフト演算およびビット演算に用い
られる。
【0032】フォーマット113(Short_B1)
は、演算内容を指定するフィールド120およびレジス
タ番号を指定するフィールド126で構成される。この
フォーマット113は、レジスタ指定によるジャンプ命
令および分岐命令に用いられる。フォーマット114
(Short_B2)は、演算内容を指定するフィール
ド120および18ビット長のディスプレイスメントの
フィールド127で構成される。このフォーマット11
4は、ジャンプ命令および分岐命令に用いられる。
【0033】フォーマット115(Short_B3)
は、演算内容を指定するフィールド120、レジスタ番
号を指定するフィールド121、レジスタ番号または1
2ビット長の即値を指定するフィールド128、フィー
ルド128がレジスタ番号を示すのか即値を示すのかを
指定するフィールド129、およびゼロ判定にもとづい
てフィールド121にもとづく条件ジャンプまたは条件
分岐を行うか否か指定するフィールド130で構成され
る。このフォーマット115は、条件ジャンプ命令およ
び条件分岐命令に使用される。
【0034】フォーマット116(Short_D1)
は、演算内容を指定するフィールド120、レジスタ番
号を指定するフィールド121、レジスタ番号または1
2ビット長の即値を指定するフィールド128、フィー
ルド128がレジスタ番号を示すのか即値を示すのかを
指定するフィールド129で構成される。このフォーマ
ット116は、条件ジャンプ命令、条件分岐命令および
リピート命令に使用される。フォーマット117(Sh
ort_D2)は、演算内容を指定するフィールド12
0、レジスタ番号または12ビット長の即値を指定する
フィールド128、フィールド128がレジスタ番号を
示すのか即値を示すのかを指定するフィールド129、
遅延命令(ディレイド命令)に関するフィールド131
で構成される。このフォーマット117は、ディレイド
ジャンプ命令、ディレイド分岐命令およびリピート命令
に使用される。
【0035】フォーマット118(Long)は、演算
内容を指定するフィールド120、レジスタ番号を指定
する2つのフィールド121,122、32ビット長の
即値を指定するフィールド132で構成される。このフ
ォーマット118は、複雑な算術演算、大きな即値を用
いる算術演算、大きなディスプレイスメント付きレジス
タ間接アドレッシングのメモリアクセス演算、大きな変
位の分岐演算および絶対番地へのジャンプ命令などに使
用される。
【0036】図4はマイクロプロセッサのレジスタ構成
を示す説明図である。このマイクロプロセッサは、図4
(a)に示すような64本の32ビット長の汎用レジス
タ5、図4(b)に示すような12本の制御レジスタ1
50、および図4(c)に示すような2本のアキュムレ
ータ18を持つ。R0の汎用レジスタ140の内容は常
に0であり、そこへの書き込みは無視される。R62の
汎用レジスタは、サブルーチンからの戻り先アドレスが
設定されるリンクレジスタである。R63の汎用レジス
タは、スタックポインタであり、PSW10のSMフィ
ールドの値に応じてユーザスタックポインタ(SPU)
または割り込みスタックポインタ(SPI)として動作
する。制御レジスタ150には、プログラムカウンタ1
51、PSW10、および各種の専用レジスタが含まれ
る。図3に示すフォーマット112による演算では、6
4本の汎用レジスタ5のそれぞれを上位16ビットと下
位16ビットとに分けてアクセスできる。また、2本の
アキュムレータ18を、上位32ビットと下位32ビッ
トとに分けて別々にアクセスできる。
【0037】図5はPSW10の詳細内容を示す説明図
である。PSW10の上位16ビットには、スタックポ
インタを切り替えるためのSMフィールド171、セル
フデバッグトラップ(SDBT)の検出を示すEAフィ
ールド172、SDBTの許可を指定するDBフィール
ド173、割り込み許可を指定するIEフィールド17
4、リピート動作の許可を指定するRPフィールド17
5、モジュロアドレッシングの許可を指定するMDフィ
ールド176がある。下位16ビットはフラグフィール
ド180である。フラグフィールド180には8個のフ
ラグがあり、その中のF0フラグ181およびF1フラ
グ182は演算の有効/無効を指定する。各フラグの値
は比較演算や算術演算の結果に応じて変化する。また、
フラグ初期化演算で初期化したり、フラグ値書き込み演
算で任意の値をフラグフィールド180に書き込むこと
によって変化する。フラグフィールド180の内容は、
フラグ値読み出し演算によって読み出される。
【0038】各フラグは、以下のような意味を有する。 SM=0 :スタックモード0→SPIを使用 SM=1 :スタックモード1→SPUを使用 EA=0 :SDBTを未検出 EA=1 :SDBTを検出 DB=0 :SDBTを非許可 DB=1 :SDBTを許可 IE=0 :割り込み非許可 IE=1 :割り込み許可 RP=0 :リピートブロック無効 RP=1 :リピートブロック有効 MD=0 :モジュロアドレッシング無効 MD=1 :モジュロアドレッシング有効 F0 :汎用フラグ(実行コントロールフラグ) F1 :汎用フラグ(実行コントロールフラグ) F2 :汎用フラグ F3 :汎用フラグ F4(S) :飽和演算フラグ F5(V) :オーバーフローフラグ F6(VA):累積オーバーフローフラグ F7(C) :キャリー/ボローフラグ
【0039】以下、このマイクロプロセッサの命令一覧
を示す。 A.マイクロプロセッサ機能に関する命令 A−1.ロード/ストア命令 LDB :Load one byte to a register with sign extension [1バイトロード(符号拡張あり)] LDBU :Load one byte to a register with zero extension [1バイトロード(ゼロ拡張あり)] LDH :Load one half-word to a register with sign extension [1ハーフワードロード(符号拡張あり)] LDHH :Load one half-word to a register high [1ハーフワードロード(レジスタ上位へ)] LDHU :Load one half-word to a register with zero extension [1ハーフワードロード(ゼロ拡張あり)] LDW :Load one word to a register [1ワードロード] LD2W :Load two words to registers [2ワードロード] LD4BH :Load four bytes to four half-words in two registers with sign extension [4バイトロード(2レジスタへ,符号拡張あり)] LD4BHU :Load four bytes to four half-words in two registers with zero extension [4バイトロード(2レジスタへ,ゼロ拡張あり)] LD2H :Load two half-words to two words in two registers with sign extension [2ハーフワードロード(2レジスタへ,符号拡張あり)] STB :Store one byte from a register [1バイトストア] STH :Store one half-word from a register [1ハーフワードストア] STHH :Store one half-word from a register high [1ハーフワードストア(レジスタ上位から)] STW :Store one word from a register [1ワードストア] ST2W :Store two words from registers [2ワードストア] ST4HB :Store four bytes from four half-words from two registrers [4バイトストア(2レジスタの4ハーフワードから)] ST2H :Store two half-words from two registrers [2ハーフワードストア(2レジスタから)] MODDEC :Decrement a register value by a 5-bits immediate value [即値5ビットのデクリメント] MODINC :Increment a register value by a 5-bits immediate value [即値5ビットのインクリメント]
【0040】 A−2.転送命令 MVFSYS :Move a control register to a general purpose register [制御レジスタから汎用レジスタへ] MVTSYS :Move a general purpose register to a control register [汎用レジスタから制御レジスタへ] MVFACC :Move a word from an accumulator [アキュムレータからの1ワード転送] MVTACC :Move two general purpose registers to an accumulator [2汎用レジスタ内容のアキュムレータへの転送]
【0041】 A−3.比較命令 CMPcc :Compare [比較] cc=EQ(等しい),NE(不等),GT(より大), GE(以上),LT(未満),LE(以下), PS(ともに正),NG(ともに負) CMPUcc :Compare unsigned[比較(符号なし)] cc=GT,GE,LT,LE
【0042】A−4.最大値/最小値命令 reserved[予約済]
【0043】 A−5.算術演算命令 ABS :Absolute[絶対値をとる] ADD :Add [加算] ADDC :Add with carry[加算(キャリー付き)] ADDHppp:Add half-word [ハーフワード加算] ppp=LLL(レジスタ下位,レジスタ下位,レジスタ下 位),LLH(レジスタ下位,レジスタ下位,レジ スタ上位),LHL,LHH,HLL,HLH,H HL,HHH ADDS :Add register Rb with the sign of the third operand [レジスタRbに符号を付ける] ADDS2H :Add sign to two half-words [2ハーフワードに符号を付ける] ADD2H :Add two pairs of half-words [2ハーフワード同士の加算] AVG :Average with rounding towards positive infinity [平均をとる] AVG2H :Average two pairs of half-words rounding towards positive infinity [2ハーフワードそれぞれの平均をとる] JOINpp :Join two half-words [2ハーフワードの結合] pp=LL,LH,HL,HH SUB :Subtract[減算] SUBB :Subtract with borrow[ボロー付き減算] SUBHppp:Subtract half-word[ハーフワードの減算] ppp=LLL,LLH,LHL,LHH,HLL, HLH,HHL,HHH SUB2H :Subtract two pairs of half-words [2つのハーフワードの減算]
【0044】 A−6.論理演算命令 AND :logical AND [論理積] OR :logical OR [論理和] NOT :logical NOT [反転] XOR :logical exclusive OR[排他的論理和] ANDFG :logical AND flags [フラグの論理積] ORFG :logical OR flags[フラグの論理和] NOTFG :logical NOT a flag[フラグの反転] XORFG :logical exclusive OR flags[フラグの排他的論理和]
【0045】 A−7.シフト演算命令 SRA :Shift right arithmetic[算術右シフト] SRA2H :Shift right arithmetic two half-words [2つのハーフワードの算術右シフト] SRC :Shift right concatenated registers [レジスタ連鎖右シフト] SRL :Shift right logical [論理右シフト] SRL2H :Shift right logical two half-words [2つのハーフワードの論理右シフト] ROT :Rotate right[右回転] ROT2H :Rotate right two half-words [2つのハーフワードの右回転]
【0046】A−8.ビット操作命令 BCLR :Clear a bit [ビットクリア] BNOT :Invert a bit[ビット反転] BSET :Set a bit [ビットセット] BTST :Test a bit[ビットテスト]
【0047】 A−9.分岐命令 BRA :Branch[分岐] BRATZR :Branch if zero[ゼロなら分岐] BRATNZ :Branch if not zero[ゼロでないなら分岐] BSR :Branch to subroutine[サブルーチンへ分岐] BSRTZR :Branch to subroutine if zero [ゼロならサブルーチンへ分岐] BSRTNZ :Branch to subroutine if not zero [ゼロでないならサブルーチンへ分岐] JMP :Jump[無条件ジャンプ] JMPTZR :Jump if zero[ゼロならジャンプ] JMPTNZ :Jump if not zero[ゼロでないならジャンプ] JSR :Jump to subroutine[サブルーチンへジャンプ] JSRTZR :Jump to subroutine if zero [ゼロならサブルーチンへジャンプ] JSRTNZ :Jump to subroutine if not zero [ゼロでないならサブルーチンへジャンプ] NOP :No Operation[無操作] [ディレイド分岐,ジャンプ命令] DBRA :Delayed branch[ディレイド分岐] DBRAI :Delayed branch immediate[ディレイド分岐(即値)] DBSR :Delayed branch to subroutin
e [ディレイドサブルーチン分岐] DBSRI :Delayed branch immediate to
subroutine [ディレイドサブルーチン分岐(即値)] DJMP :Delayed jump[ディレイドジャンプ] DJMPI :Delayed jump immediate[ディレイドジャンプ(即値)] DJSR :Delayed jump to subroutine [ディレイドサブルーチンジャンプ] DJSRI :Delayed jump immediate to subroutine [ディレイドサブルーチンジャンプ(即値)]
【0048】 A−10.OS関連命令 TRAP :Trap[トラップ] REIT :Return from exception, interrupts and traps [例外、割り込み、トラップからのリターン]
【0049】 B.DSP機能に関する命令 B−1.算術操作命令 MUL :Multiply[乗算] MULX :Multiply with extended precision[倍精度乗算] MULXS :Multiply and shift to the right by one with extended precision [倍精度乗算および1ビット右シフト] MULX2H :Multiply two pairs of half-words with extended precision [2ハーフワードずつの倍精度乗算] MULHXpp:Multiply two half-words with extended precision pp=LL,LH,HL,HH [2ハーフワードの倍精度乗算] MUL2H :Multiply two pairs of half−
words [2ハーフワードずつの乗算] MACa :Multiply and add[積和演算] a(アキュムレータ指定)=0,1 MACSa :Multiply, shift to the right by one and add a=0,1 [1ビット右シフト付き積和演算] MSUBa :Multiply and subtract [積和(減算)演算] a=0,1 MSUBSa :Multiply, shift to the right by one and subtract a=0,1 [1ビット右シフト付き積和(減算)演算]
【0050】 B−2.リピート命令 REPEAT :Repeat a block of instructions [命令ブロックの繰り返し] REPEATI:Repeat a block of instructions immediate [命令ブロックの繰り返し(即値指定)]
【0051】図6はマイクロプロセッサの並列2命令実
行時のパイプライン動作を示す説明図である。この動作
は、命令のフォーマットフィールドの値FM=00のと
きに実行される。パイプライン190,195は、命令
フェッチステージ191、デコード/アドレス演算ステ
ージ192、実行/メモリアクセスステージ193およ
びライトバックステージ194で構成される。並列2命
令実行時には、メモリユニット3での実行と整数演算ユ
ニット4での実行とが並列に行われる。図7はマイクロ
プロセッサのシーケンシャル命令実行時のパイプライン
動作を示す説明図である。この動作は、命令のフォーマ
ットフィールドの値FM=01,10,11のときに実
行される。パイプライン200は、命令フェッチステー
ジ、デコード/アドレス演算ステージ、実行/メモリア
クセスステージ、およびライトバックステージで構成さ
れるが、この場合には、メモリユニット3での実行と整
数演算ユニット4での実行とのうちのいずれかが、一時
に実行される。なお、図6および図7に示されたパイプ
ライン動作では、2番目のステージであるデコード/ア
ドレス演算ステージ192において分岐先アドレスが得
られる。
【0052】図8はこの発明の実施の形態1によるマイ
クロプロセッサの構成を示すブロック図である。図にお
いて、366は分岐命令のデコード値を保持するための
レジスタ13Aと分岐命令が実行されるべき時期に対応
したPC値を保持するレジスタ13Bとを含む遅延分岐
命令レジスタ(遅延分岐命令保持手段)である。分岐命
令が実行されるべき時期に対応したPC値とは、マイク
ロプロセッサのPCの値がその値になるとディレイド分
岐命令を実行することになる値である。なお、既に定義
したように、単に「分岐命令」と表現した場合には、厳
密な意味での分岐命令とジャンプ命令との双方の概念を
含む。
【0053】図9はディレイド分岐命令の基本的なフォ
ーマット320を示す説明図である。基本的には、ディ
レイド分岐命令のフォーマット320は、オペコード3
21、遅延量を指定するフィールド322および分岐先
アドレスを指定するためのオフセットまたはアドレスが
指定されるフィールド323を持つ。ディレイド分岐命
令は、例えば、図3に示すフォーマット116(Sho
rt_D1)、フォーマット117(Short_D
2)またはフォーマット118(Long)で実現され
る。フォーマット116(Short_D1)は、遅延
量としてレジスタ設定値が用いられる場合に使用され
る。フォーマット117(Short_D2)は、遅延
量として即値が用いられる場合に使用される。フォーマ
ット118(Long)は、分岐先アドレスを32ビッ
ト即値で指定する場合に使用される。各フォーマットに
おいて、オペコードはフィールド120で指定される。
また、フィールド129は、フィールド128がレジス
タ番号を示すのか即値を示すのかを指定するために使用
される。フィールド121は、DBRA,DBSR,D
JMP,DJSRの各命令において遅延量がレジスタで
指定されるときのレジスタ指定領域として使用され、フ
ィールド131は、遅延量を指定する即値の領域として
使用される。
【0054】図10は幾つかのディレイド分岐命令の例
を示す説明図である。命令324は、遅延量を即値で指
定するとともに分岐のオフセットを即値で指定する命令
である。命令325は、遅延量をレジスタで指定すると
ともに分岐のオフセットを即値で指定する命令である。
命令326は、遅延量を即値で指定するとともに分岐の
オフセットをレジスタで指定する命令である。命令32
7は、遅延量をレジスタで指定するとともに分岐のオフ
セットをレジスタで指定する命令である。
【0055】図11はディレイド分岐命令330、ディ
レイドジャンプ命令332およびディレイドサブルーチ
ンコール命令331,333が、同一フォーマットでど
のように実現されるのかを示すための説明図である。
【0056】次に動作について説明する。命令がディレ
イド分岐命令であったことを命令デコードユニット2の
デコーダ8が認識すると、命令デコードユニット2は、
そのことを示す制御信号11をメモリユニット3に出力
する。メモリユニット3において、PC制御部13は、
制御信号11によって入力した命令デコード結果をレジ
スタ13Aに格納する。従って、レジスタ13Aには、
ディレイド分岐命令による分岐先を示す情報等が格納さ
れる。また、PC制御部13は、分岐命令が実行される
べき時期に応じたPC値をレジスタ13Bに格納する。
【0057】PC制御部13は、マイクロプロセッサに
おける実際のPC値がレジスタ13Bに格納されている
値と一致したことを検知したら、レジスタ13Aに格納
されている分岐先情報にもとづいて分岐命令を実行す
る。すなわち、レジスタ13Aに格納されている分岐先
情報が示す値をPCに設定する。この結果、レジスタ1
3Bに格納されている値に応じた数の命令がフェッチさ
れたら、次のサイクルで、分岐先にある命令がフェッチ
される。
【0058】図12はディレイド分岐命令を含むプログ
ラムの一例を示す説明図である。図12における2行目
のDBRA命令は、遅延量「3」を指定するとともに分
岐先としてTGT1を指定する命令である。命令デコー
ドユニット2において、DBRA命令がデコードされる
と、PC制御部13は、分岐先を示すTGT1に応じた
情報をレジスタ13Aに格納する。また、遅延量「3」
に応じたPC値、すなわち、そのときのPCの値に3×
8を加算した値をレジスタ13Bに格納する。DBRA
命令の下に記述されている3命令は無条件に処理される
が、3番目の遅延スロットにある命令をフェッチすると
き、マイクロプロセッサのPCの値はレジスタ13Bに
格納されているPC値に一致する。そこで、PC制御部
13は、DBRA命令による分岐処理を実行する。すな
わち、レジスタ13Bに格納されているPC値をマイク
ロプロセッサにおけるPCに設定する処理を行う。
【0059】図13はディレイド分岐命令を含むプログ
ラムの他の例を示す説明図である。ここでは、サブルー
チンコール命令であるDJSR命令が用いられている。
また、遅延量は、汎用レジスタ5におけるr4レジスタ
に設定されている値が用いられる。この場合も、PC制
御部13は、分岐先を示すTGT1に応じた情報をレジ
スタ13Aに格納する。また、PC制御部13は、r4
レジスタに設定されている値に応じたPC値をレジスタ
13Bに格納する。r4レジスタに設定されている値が
「4」であったとすると、DJSR命令の下に記述され
ている4命令は無条件に処理されるが、4番目の遅延ス
ロットの命令をフェッチするときに、マイクロプロセッ
サのPCの値はレジスタ13Bに格納されているPC値
に一致する。そこで、PC制御部13は、DJSR命令
によるサブルーチンジャンプを実行する。具体的には、
PCに、レジスタ13Bに格納されているPC値を設定
する。
【0060】以上のように、この実施の形態1によれ
ば、マイクロプロセッサは、ディレイド分岐命令で指定
された遅延量に応じたPC値を保持するように構成され
ているので、ディレイド分岐命令のデコード時点から実
行時点までの間に割り込み等のPC値を変化させる事象
が生じたとしても、確実に分岐命令が実行される。例え
ば、図12に示された例において、遅延スロットの命令
の実行時に割り込みが生ずるとマイクロプロセッサのP
Cの値は変化するとともに、割り込み処理において幾つ
かのサイクルが消費される。従来のマイクロプロセッサ
における処理のようにディレイド分岐命令の実行時期を
カウンタ値として保持していると、割り込み処理におい
て費やされたサイクル数分だけ実行時期がずれてしま
う。しかし、この実施の形態によれば、そのようなこと
はない。また、レジスタ13A,13Bをアクセスする
命令を備えれば、遅延スロットの命令実行時に起きた割
り込みにともないコンテクストスイッチが必要になった
場合、レジスタ13Aに保持された分岐先情報とレジス
タ13Bに保持された分岐発生PC値とをデータRAM
7に退避し、異なるコンテクストを実行後、再び割り込
まれたコンテクストに復帰したときにこれらの値を復帰
して遅延分岐を実行することも可能になる。
【0061】実施の形態2.図14はこの発明の実施の
形態2によるマイクロプロセッサにおける命令デコード
部分および命令実行部分を示すブロック図である。図に
おいて、361は算術論理演算を実行するALU(演算
ユニット)、363は乗算を実行する乗算器(演算ユニ
ット)、365はPC値を計算するPC制御部、367
はアドレス計算を行うメモリ制御部(演算ユニット)、
369はシフト演算を実行するシフタ(演算ユニッ
ト)、371は1サイクルで2命令(2演算指令を含む
命令)を転送できるバス、372は命令をデコードして
命令実行部に制御信号11,12を与える命令デコー
ダ、373は汎用レジスタである。
【0062】ALU361において、362はディレイ
ド算術論理演算命令のデコード結果を格納するレジスタ
362Aと遅延量に応じた値を格納するレジスタ362
Bとを有する遅延命令レジスタ(遅延命令保持手段)で
ある。乗算器363において、364はディレイド乗算
命令のデコード結果を格納するレジスタ364Aと遅延
量に応じた値を格納するレジスタ364Bとを有する遅
延命令レジスタ(遅延命令保持手段)である。PC制御
部365において、366はディレイド分岐命令のデコ
ード結果を格納するレジスタ366Aと遅延量に応じた
値を格納するレジスタ366Bとを有する遅延命令レジ
スタ(遅延分岐命令保持手段)である。メモリ制御部3
67において、368はディレイドメモリアクセス命令
のデコード結果を格納するレジスタ368Aと遅延量に
応じた値を格納するレジスタ368Bとを有する遅延命
令レジスタ(遅延命令保持手段)である。シフタ369
において、370はディレイドシフト命令のデコード結
果を格納するレジスタ370Aと遅延量に応じた値を格
納するレジスタ370Bとを有する遅延命令レジスタ
(遅延命令保持手段)である。
【0063】次に動作について説明する。図15は各行
の2演算を同時に実行する命令配置の一例を示す説明図
である。この配置は、図22に示されたプログラムをス
ケジューリングした結果である。図21に示された一般
的な2演算を同時に扱うマイクロプロセッサでは、図2
2に示されたプログラムを実行するために、図23に示
されたように5サイクルを要していた。SRA命令とS
UB命令とはr3レジスタ依存の関係にあって同時に実
行できないからである。ところが、この実施の形態によ
るマイクロプロセッサはディレイド分岐命令を扱えるの
で、図15に示されたように、図23における2行目の
NOPを遅延量「2」のDJMP命令で置き換えること
ができる。
【0064】図15に示されたような命令配置による各
命令を順次入力すると、第1サイクルでは、マイクロプ
ロセッサにおいて、ALU361とシフタ369とが、
1行目のADD演算とSRA演算とをそれぞれ実行す
る。第2サイクルでは、シフタ369とPC制御部36
5とがSRA演算とDJMP演算とを扱う。シフタ36
9はSRA演算を直ちに実行するが、PC制御部365
は、実施の形態1の場合と同様に、DJMP演算のデコ
ード結果である分岐先TGTに関する情報をレジスタ3
66Aに格納し、遅延量「2」に応じたPC値をレジス
タ366Bに格納する。第3サイクルでは、ALU36
1と乗算器363とが、3行目のSUB演算とMUL演
算とをそれぞれ実行する。第4サイクルでは、ALU3
61と乗算器363とが、4行目のADD演算とMUL
演算とをそれぞれ実行する。4行目の命令がフェッチさ
れるとき、マイクロプロセッサのPC(図14において
図示せず)の値はレジスタ366Bに格納されているP
C値に一致している。そこで、PC制御部365は、D
JMP演算で指定されたジャンプ命令を実行する。具体
的には、PCに、レジスタ366Bに格納されているP
C値を設定する。
【0065】このように、遅延量を任意に指定できる分
岐命令処理する機構を備えていれば、命令のスケジュー
リングをより有効に実行することができる。すなわち、
プログラマまたはコンパイラは、プログラムサイズをよ
り小さくするような命令のスケジューリングを行える。
その結果、ある処理を実行するのに要する時間は短縮さ
れる。しかも、PC制御部365は、分岐命令実行時期
をPC値として保持するので、ディレイド分岐命令は矛
盾なく実行される。
【0066】この実施の形態によるマイクロプロセッサ
は、ディレイド分岐命令以外のディレイド演算命令を扱
うこともできる。図16は、プログラムの一例を示す説
明図である。図21に示された一般的な2演算を同時に
扱うマイクロプロセッサでは、図16における1行目の
ADD演算と2行目のADD演算を同時実行することは
できない。1つのALU341しか持っていないからで
ある。従って、図16における1行目の命令と2行目の
命令とを同時実行するように命令のスケジューリングを
行うことはできなかった。
【0067】ところが、この実施の形態によるマイクロ
プロセッサは、図16に示すプログラムの各命令を図1
7に示すようにスケジューリングした各命令を実行でき
る。図17に示されたような命令配置による各命令を順
次入力すると、このマイクロプロセッサにおいて、第1
サイクルでは、ALU361は、ADD演算を実行する
とともにDADD(ディレイドADD)演算も扱う。す
なわち、DADDのデコード結果をレジスタ362Aに
格納するとともに、遅延値「1」に応じた値をレジスタ
362Bに格納する。第2サイクルでは、シフタ369
と乗算器363とは、SRA演算とMUL演算とをそれ
ぞれ実行する。2行目の命令がフェッチされるときに、
PCの値はレジスタ362B内の遅延値「1」に応じた
値に一致する。そこで、ALU361は、レジスタ36
2AからDADDで指定された演算指令内容を取り出
し、その演算を実行する。
【0068】なお、レジスタ362Bに格納される遅延
値に応じた値は、動作クロックに応じて値が変化するカ
ウンタ値であってもよいが、PC値であってもよい。遅
延値に応じた値としてPC値を保持した場合には、デコ
ード時と実行時との間で割り込み等が生じてもそれに対
する対処が容易になる。
【0069】ここでは、ディレイド演算命令を扱う演算
ユニットとしてALU361を例にとったが、乗算器3
63、メモリ制御部367およびシフタ369も、AL
U361の処理と同様の処理によってディレイド演算命
令を扱うことができる。また、遅延値「1」の場合を例
に説明したが、もちろん、任意の値を指定できる。任意
の値を指定可能なので、命令のスケジューリングの自由
度をより向上させることができる。なお、固定的な値を
指定するディレイド演算命令しか処理しないマイクロプ
ロセッサであっても、任意の遅延値を指定できるディレ
イド演算命令を処理するマイクロプロセッサに比べると
効果は低減するものの、命令のスケジューリングの自由
度を向上させる効果が期待できる。
【0070】以上のように、ディレイド演算命令を扱う
機構を有する場合には、プログラムの実行に要するサイ
クル数をさらに少なくでき、その結果、プログラム実行
時間を短縮できる。例えば、図16に示されたプログラ
ムがあった場合に、図21に示された一般的な2演算を
同時に扱うマイクロプロセッサでは、2つのADD命令
を同時実行できないので、命令のスケジューリングを行
ってもプログラム実行に3サイクルを要する。このマイ
クロプロセッサは、図17に示された例からわかるよう
に、2サイクルでプログラムを実行できる。また、ルー
プ内でディレイド命令を記述できるような場合に、この
マイクロプロセッサによれば、さらに処理を高速化でき
る。
【0071】ディレイド命令は、2演算同時実行できる
マイクロプロセッサにおいて、特に有効である。図15
および図17に示された例からわかるように、演算を並
列実行する場合のNOP挿入箇所を削減できるからであ
る。なお、ここでは、2演算同時実行のマイクロプロセ
ッサについて説明したが、リソースであるALU361
等の演算ユニットを複数個備え、同時実行演算数をさら
に多くしたマイクロプロセッサに、この実施の形態によ
るディレイド演算命令処理機構を設けてもよい。そのよ
うなマイクロプロセッサにおいても、実行サイクル数の
削減および処理の高速化が期待できる。
【0072】図18はこの実施の形態2によるマイクロ
プロセッサにおけるPSWの一例を示す説明図である。
このPSW380,390は図5に示されたものと同様
のものであるが、この場合には、RPフィールド381
がPC制御部365の遅延命令レジスタ366の動作を
有効にするかどうか決めるビットとして用いられる。ま
た、例えば、E4フィールド382、E3フィールド3
83、E2フィールド384およびE1フィールド38
5は、それぞれ、ALU361の遅延命令レジスタ36
2、乗算器363の遅延命令レジスタ364、メモリ制
御部367の遅延命令レジスタ368およびシフタ36
9の遅延命令レジスタ370の動作を有効にするかどう
か決めるビットとして用いられる。各ビットが無効状態
にセットされた場合には、対応する演算ユニットにおけ
るディレイド命令処理は禁止される。このようなPSW
380,390を用意することによって、ディレイド命
令処理の柔軟性を増すことができる。
【0073】実施の形態3.図19はこの発明の実施の
形態3によるマイクロプロセッサにおける命令デコード
部分および命令実行部分を示すブロック図である。図に
おいて、461は算術論理演算を実行するALU(演算
ユニット)、463は乗算を実行する乗算器(演算ユニ
ット)、465はPC値を計算するPC制御部、467
はアドレス計算を行うメモリ制御部(演算ユニット)、
469はシフト演算を実行するシフタ(演算ユニッ
ト)、371は1サイクルで2命令を転送できるバス、
372は命令をデコードして命令実行部に制御信号1
1,12を与える命令デコーダ、373は汎用レジスタ
である。
【0074】このマイクロプロセッサにおいて、ALU
461は、2つの遅延命令レジスタ362を有する。乗
算器463は、2つの遅延命令レジスタ364を有す
る。PC制御部465は、2つの遅延命令レジスタ36
6を有する。メモリ制御部467は、2つの遅延命令レ
ジスタ368を有する。そして、シフタ469は、2つ
の遅延命令レジスタ370を有する。
【0075】次に動作について説明する。各演算ユニッ
トおよびPC制御部465において、命令のデコード結
果と遅延量とからなる1セットはキュー管理される。例
えば、ALU461において、一方の遅延命令レジスタ
362のレジスタ362Aにディレイド算術演算命令の
デコード結果が格納されレジスタ362Bにそれに対応
する遅延量に応じた値が設定されている場合に、さら
に、命令デコーダ372から新たなディレイド算術演算
命令のデコード結果が送られてきたとする。すると、新
たなデコード結果および遅延量に応じた値は、他方の遅
延命令レジスタ362に格納される。そして、一方のレ
ジスタ362Bに格納されている遅延量に応じた値とマ
イクロプロセッサのPCの値とが一致したときに、一方
のレジスタ362Aに格納されているデコード結果に応
じた演算が実行される。その後、他方のレジスタ362
Bに格納されている遅延量に応じた値とマイクロプロセ
ッサのPCの値とが一致したときに、他方のレジスタ3
62Aに格納されているデコード結果に応じた演算が実
行される。
【0076】そのような構成によれば、あるディレイド
命令の実行時期に到達していない時点でも、別の同種類
のディレイド命令を扱うことができる。例えば、あるデ
ィレイドADD命令の実行時期に到達していない時点で
も、ALU461は、新たなディレイドADD命令を受
け入れることができる。従って、命令のスケジューリン
グの自由度をさらに上げることができ、プログラムサイ
ズの減少すなわち命令メモリの容量削減を図ることがで
きる。また、より高速にプログラムを実行することがで
きる。なお、ここでは各演算ユニットにおいて2つの遅
延命令レジスタが設けられている例を示したが、設置数
をさらに多くしてもよい。
【0077】
【発明の効果】以上のように、請求項1記載の発明によ
れば、遅延命令を有するマイクロプロセッサを、ディレ
イド分岐命令で指定された遅延量に応じたプログラムカ
ウンタ値を保持するように構成したので、ディレイド分
岐命令のデコード時点から実行時点までの間に割り込み
等のPCの値を変化させる事象が生じたとしても確実に
分岐命令が実行される効果がある。
【0078】請求項2記載の発明によれば、遅延命令を
有するマイクロプロセッサを、各演算ユニットがディレ
イド演算命令の固定のまたは可変の遅延量に応じた値を
保持するように構成したので、命令スケジューリングの
自由度を向上させることができる効果がある。
【0079】請求項3記載の発明によれば、遅延命令を
有するマイクロプロセッサを、各演算ユニットがディレ
イド演算命令で指定された任意の遅延量に応じた値を保
持するように構成したので、プログラムの実行に要する
サイクル数をより少なくでき、その結果、命令メモリの
容量を削減できるとともにプログラム実行時間を短縮で
きる効果がある。
【0080】請求項4記載の発明によれば、遅延命令を
有するマイクロプロセッサを、各演算ユニットがディレ
イド演算命令で指定された遅延量に応じたPC値を保持
するように構成したので、プログラムの実行に要するサ
イクル数をより少なくできるとともに、ディレイド演算
命令のデコード時点から実行時点までの間に割り込み等
のPCの値を変化させる事象が生じたとしても確実に演
算が実行される効果がある。
【0081】請求項5記載の発明によれば、遅延命令を
有するマイクロプロセッサを、各演算ユニットに複数の
遅延命令保持手段が設けられるように構成したので、命
令のスケジューリングの自由度を上げることができる効
果がある。
【0082】請求項6記載の発明によれば、遅延命令を
有するマイクロプロセッサを、命令実行部が複数演算を
同時に実行するように構成したので、命令のスケジュー
リングの自由度をさらに上げることができ、その結果、
プログラムの実行に要するサイクル数をさらに少なくで
きる効果がある。
【図面の簡単な説明】
【図1】 この発明の実施の形態1によるマイクロプロ
セッサの構成を示すブロック図である。
【図2】 マイクロプロセッサの命令フォーマットを示
す説明図である。
【図3】 演算フィールドの詳細な内容を示す説明図で
ある。
【図4】 マイクロプロセッサのレジスタ構成を示す説
明図である。
【図5】 PSWの詳細内容を示す説明図である。
【図6】 マイクロプロセッサの並列2命令実行時のパ
イプライン動作を示す説明図である。
【図7】 マイクロプロセッサのシーケンシャル命令実
行時のパイプライン動作を示す説明図である。
【図8】 この発明の実施の形態1によるマイクロプロ
セッサの構成を示すブロック図である。
【図9】 ディレイド分岐命令の基本的なフォーマット
を示す説明図である。
【図10】 幾つかのディレイド分岐命令の例を示す説
明図である。
【図11】 ディレイド分岐命令、ディレイドジャンプ
命令およびディレイドサブルーチンコール命令が、同一
フォーマットでどのように実現されるのかを示すための
説明図である。
【図12】 ディレイド分岐命令を含むプログラムの一
例を示す説明図である。
【図13】 ディレイド分岐命令を含むプログラムの他
の例を示す説明図である。
【図14】 この発明の実施の形態2によるマイクロプ
ロセッサにおける命令デコード部分および命令実行部分
を示すブロック図である。
【図15】 2演算を同時に実行する命令配置の一例を
示す説明図である。
【図16】 プログラムの一例を示す説明図である。
【図17】 図16に示された各命令にもとづく2演算
を同時に実行する命令配置を示す説明図である。
【図18】 この発明の実施の形態2によるマイクロプ
ロセッサにおけるPSWの一例を示す説明図である。
【図19】 この発明の実施の形態3によるマイクロプ
ロセッサにおける命令デコード部分および命令実行部分
を示すブロック図である。
【図20】 従来のパイプライン制御方式によるマイク
ロプロセッサの処理シーケンスを示すシーケンス図であ
る。
【図21】 2演算を同時に行うマイクロプロセッサに
おける命令デコーダおよび命令実行部の部分の一般的な
構成を示すブロック図である。
【図22】 プログラムの一例を示す説明図である。
【図23】 命令のスケジューリングの一例を示す説明
図である。
【符号の説明】
2 命令デコードユニット(命令デコーダ)、3 メモ
リユニット(命令実行部)、4 整数演算ユニット(命
令実行部)、13,365,465 PC制御部、36
1,461 ALU(演算ユニット)、362,36
4,368,370 遅延命令レジスタ(遅延命令保持
手段)、363,463 乗算器(演算ユニット)、3
66 遅延分岐命令レジスタ(遅延分岐命令保持手
段)、367,467 メモリ制御部(演算ユニッ
ト)、369,469 シフタ(演算ユニット)。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 命令をデコードする命令デコーダと、前
    記命令デコーダの出力に従って命令を実行する命令実行
    部とを備えた遅延命令を有するマイクロプロセッサにお
    いて、前記命令実行部におけるプログラムカウンタ値を
    制御するPC制御部は、遅延分岐命令の分岐先を示す値
    および遅延分岐命令で指定された遅延量に応じたプログ
    ラムカウンタ値を保持する遅延分岐命令保持手段を備え
    たことを特徴とする遅延命令を有するマイクロプロセッ
    サ。
  2. 【請求項2】 命令をデコードする命令デコーダと、前
    記命令デコーダの出力に従って命令を実行する命令実行
    部とを備えた遅延命令を有するマイクロプロセッサにお
    いて、前記命令実行部における演算ユニットは、遅延演
    算命令による演算内容および遅延演算命令による演算の
    実行開始を示す値を保持する遅延命令保持手段を備えた
    ことを特徴とする遅延命令を有するマイクロプロセッ
    サ。
  3. 【請求項3】 遅延命令保持手段は、遅延演算命令で指
    定された遅延量に応じた値を保持することを特徴とする
    請求項2記載の遅延命令を有するマイクロプロセッサ。
  4. 【請求項4】 遅延命令保持手段は、遅延演算命令で指
    定された遅延量に応じたプログラムカウンタ値を保持す
    ることを特徴とする請求項3記載の遅延命令を有するマ
    イクロプロセッサ。
  5. 【請求項5】 各演算ユニットは、複数の遅延命令保持
    手段を有する請求項3または請求項4記載の遅延命令を
    有するマイクロプロセッサ。
  6. 【請求項6】 命令実行部は、複数演算を同時に実行す
    る請求項1から請求項5のうちのいずれか1項記載の遅
    延命令を有するマイクロプロセッサ。
JP20367596A 1996-08-01 1996-08-01 遅延命令を有するマイクロプロセッサ Expired - Fee Related JP3745039B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP20367596A JP3745039B2 (ja) 1996-08-01 1996-08-01 遅延命令を有するマイクロプロセッサ
US08/788,839 US5815698A (en) 1996-08-01 1997-01-27 Microprocessor having delayed instructions
US09/116,260 US6851045B2 (en) 1996-08-01 1998-07-16 Microprocessor having delayed instructions with variable delay times for executing branch instructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20367596A JP3745039B2 (ja) 1996-08-01 1996-08-01 遅延命令を有するマイクロプロセッサ

Publications (2)

Publication Number Publication Date
JPH1049370A true JPH1049370A (ja) 1998-02-20
JP3745039B2 JP3745039B2 (ja) 2006-02-15

Family

ID=16477992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20367596A Expired - Fee Related JP3745039B2 (ja) 1996-08-01 1996-08-01 遅延命令を有するマイクロプロセッサ

Country Status (2)

Country Link
US (2) US5815698A (ja)
JP (1) JP3745039B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003508863A (ja) * 1999-09-07 2003-03-04 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 可変命令長処理
US6865666B2 (en) * 1998-02-09 2005-03-08 Renesas Technology Corp. Data processing device
JP2007287186A (ja) * 2007-08-09 2007-11-01 Denso Corp Risc型cpu,コンパイラ及びマイクロコンピュータ
JP2010501102A (ja) * 2006-08-16 2010-01-14 クゥアルコム・インコーポレイテッド 動的可変遅延に基づいてプロセッサ命令を実行するための方法および装置
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE509499C2 (sv) * 1996-05-03 1999-02-01 Ericsson Telefon Ab L M Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
WO1999048025A2 (en) * 1998-03-18 1999-09-23 Koninklijke Philips Electronics N.V. Data processing device and method of computing the cosine transform of a matrix
JP2000284970A (ja) * 1999-03-29 2000-10-13 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
CA2383531A1 (en) 1999-09-01 2001-03-08 Intel Corporation Instruction for multithreaded parallel processor
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20030154469A1 (en) * 2001-12-20 2003-08-14 Timothy Anderson Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor
US6954848B2 (en) * 2002-01-02 2005-10-11 Intel Corporation Marking in history table instructions slowable/delayable for subsequent executions when result is not used immediately
US7437724B2 (en) 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
AU2003243745A1 (en) * 2002-06-20 2004-01-06 Rambus Inc. Method and apparatus for the dynamic scheduling of device commands
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7130988B2 (en) * 2002-11-15 2006-10-31 Via-Cyrix, Inc. Status register update logic optimization
JP2004206389A (ja) * 2002-12-25 2004-07-22 Denso Corp Risc型cpu,コンパイラ,マイクロコンピュータ及び補助演算装置
US7343474B1 (en) * 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US9665970B2 (en) * 2006-09-19 2017-05-30 Imagination Technologies Limited Variable-sized concurrent grouping for multiprocessing
CN106559339B (zh) * 2015-09-30 2019-02-19 华为技术有限公司 一种报文处理方法及装置
US10877759B2 (en) 2015-09-30 2020-12-29 International Business Machines Corporation Managing the capture of information in applications with prefix instructions
US10394568B2 (en) * 2015-09-30 2019-08-27 International Business Machines Corporation Exception handling for applications with prefix instructions
US10761852B2 (en) 2015-09-30 2020-09-01 International Business Machines Corporation Extending data range addressing
US10180829B2 (en) * 2015-12-15 2019-01-15 Nxp Usa, Inc. System and method for modulo addressing vectorization with invariant code motion

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4929396A (en) 1983-01-13 1990-05-29 Celgene Corporation Production of hexamethylenediamine muconate salt
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
JP2834837B2 (ja) * 1990-03-30 1998-12-14 松下電工株式会社 プログラマブルコントローラ
US5390304A (en) * 1990-09-28 1995-02-14 Texas Instruments, Incorporated Method and apparatus for processing block instructions in a data processor
US5305446A (en) * 1990-09-28 1994-04-19 Texas Instruments Incorporated Processing devices with improved addressing capabilities, systems and methods
JPH06131180A (ja) * 1992-10-15 1994-05-13 Oki Electric Ind Co Ltd 命令処理方式および命令処理装置
JP3499252B2 (ja) * 1993-03-19 2004-02-23 株式会社ルネサステクノロジ コンパイル装置及びデータ処理装置
DE4345028A1 (de) * 1993-05-06 1994-11-10 Hewlett Packard Co Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
US5664135A (en) * 1994-09-28 1997-09-02 Hewlett-Packard Company Apparatus and method for reducing delays due to branches
US5581776A (en) * 1995-02-03 1996-12-03 Nokia Mobile Phones Limited Branch control system for rom-programmed processor
US5664193A (en) * 1995-11-17 1997-09-02 Sun Microsystems, Inc. Method and apparatus for automatic selection of the load latency to be used in modulo scheduling in an optimizing compiler

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6865666B2 (en) * 1998-02-09 2005-03-08 Renesas Technology Corp. Data processing device
JP2003508863A (ja) * 1999-09-07 2003-03-04 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 可変命令長処理
JP2010501102A (ja) * 2006-08-16 2010-01-14 クゥアルコム・インコーポレイテッド 動的可変遅延に基づいてプロセッサ命令を実行するための方法および装置
JP2007287186A (ja) * 2007-08-09 2007-11-01 Denso Corp Risc型cpu,コンパイラ及びマイクロコンピュータ
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging

Also Published As

Publication number Publication date
US5815698A (en) 1998-09-29
US20010013095A1 (en) 2001-08-09
US6851045B2 (en) 2005-02-01
JP3745039B2 (ja) 2006-02-15

Similar Documents

Publication Publication Date Title
JP3745039B2 (ja) 遅延命令を有するマイクロプロセッサ
EP0789297B1 (en) Data processor loading data and performing multiply-add operation in parallel
JP3881763B2 (ja) データ処理装置
US6560697B2 (en) Data processor having repeat instruction processing using executed instruction number counter
US6016543A (en) Microprocessor for controlling the conditional execution of instructions
JPH1049368A (ja) 条件実行命令を有するマイクロプロセッサ
JP2507638B2 (ja) デ―タ処理装置
JP2581236B2 (ja) データ処理装置
JPH03218523A (ja) データプロセッサ
JPH0766324B2 (ja) データ処理装置
JPH0496825A (ja) データ・プロセッサ
JPH081602B2 (ja) データ処理装置
JPH07120278B2 (ja) データ処理装置
US5941984A (en) Data processing device
JPH07120284B2 (ja) データ処理装置
JP2002215387A (ja) 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置
JP2000207210A (ja) マイクロプロセッサ
US6408380B1 (en) Execution of an instruction to load two independently selected registers in a single cycle
JPH0769806B2 (ja) データ処理装置
JP2522048B2 (ja) マイクロプロセッサ及びそれを使用したデ―タ処理装置
JP3547585B2 (ja) 条件実行命令を有するマイクロプロセッサ
JP3539914B2 (ja) マイクロコンピュータ
JPH10320197A (ja) 条件実行命令を備えるマイクロプロセッサ
GB2343973A (en) Delayed execution of conditional instructions
JPH0769805B2 (ja) データ処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050318

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050712

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050727

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051018

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051116

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20060123

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A072

Effective date: 20060606

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

Free format text: PAYMENT UNTIL: 20081202

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20091202

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101202

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101202

Year of fee payment: 5

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

Year of fee payment: 5

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

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111202

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121202

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121202

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20131202

Year of fee payment: 8

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees