JP3830683B2 - Vliwプロセッサ - Google Patents

Vliwプロセッサ Download PDF

Info

Publication number
JP3830683B2
JP3830683B2 JP37441598A JP37441598A JP3830683B2 JP 3830683 B2 JP3830683 B2 JP 3830683B2 JP 37441598 A JP37441598 A JP 37441598A JP 37441598 A JP37441598 A JP 37441598A JP 3830683 B2 JP3830683 B2 JP 3830683B2
Authority
JP
Japan
Prior art keywords
condition code
true
condition
false
instruction
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
JP37441598A
Other languages
English (en)
Other versions
JP2000194557A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP37441598A priority Critical patent/JP3830683B2/ja
Priority to US09/473,046 priority patent/US6516407B1/en
Priority to KR1019990063202A priority patent/KR100589102B1/ko
Priority to EP99310616.0A priority patent/EP1016961B1/en
Publication of JP2000194557A publication Critical patent/JP2000194557A/ja
Application granted granted Critical
Publication of JP3830683B2 publication Critical patent/JP3830683B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/3017Runtime instruction translation, e.g. macros

Landscapes

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

Description

【0001】
【発明の属する技術分野】
本発明は、複数の処理ユニットを備えたVLIWプロセッサに関する。
【0002】
【従来の技術】
図21は、条件コード生成機能付演算命令形式とこの命令を実行するための主要なハードウエア構成との関係を示す。
【0003】
この命令のオペレーションコードOPがデコードされてALU124が実行すべき演算の種類が定まり、この演算を実行するために次のような制御が行われる。すなわち、この命令の第1ソースオペランドRS1及び第2ソースオペランドRS2の値又はこれらをデコードした信号がそれぞれセレクタ125及び126の制御入力端に供給されて汎用レジスタファイル161内の選択されたレジスタの内容がALU124に供給される。該命令のデスティネーションオペランドRDの値又はこれをデコードした信号がマルチプレクサ127の制御入力端に供給されて、汎用レジスタファイル161内の1つのレジスタが指定され、このレジスタにALU124の演算結果が格納される。
【0004】
他方、該命令の第1条件コードレジスタIDコードCCiの値又はこれをデコードした信号がマルチプレクサ128の制御入力端に供給されて、第1条件コードレジスタファイル162のレジスタCC0〜CC7の1つが指定され、このレジスタに、ALU124の演算結果により定まる条件コードが格納される。条件コードは、ネガティブフラグN、ゼロフラグZ、オーバフローフラグOV及びキャリーフラグCからなる。この演算は、算術演算又は論理演算である。演算結果に応じて処理内容を変えるために、条件コードが所定条件を満たしているときに分岐をする分岐命令が用いられる。
【0005】
図22は、分岐命令内の条件フィールドの値と、そのニモニック、意味及び判定条件を示す。例えば条件フィールドの値が‘0100’の場合には、条件コードのゼロフラグZが‘1’であれば条件成立と判定されて分岐が実行され、Z=‘0’であれば条件不成立と判定されて分岐が実行されない。
【0006】
図23(A)に示すプログラムにおいて、I1〜I7は分岐命令以外の命令であり、ステップ3において無条件分岐命令BA 7が実行され、ステップ7において無条件分岐命令BA 9が実行される。従って、I1、I2、BA 7、BA 9、I7の順に命令が実行される。
【0007】
このプログラムを、複数の並列処理部を備えたVLIWプロセッサで実行する場合には、命令スケジューラにより図23(B)に示すようなステップ1〜3の各パケットが1VLIW命令とされる。各命令パケットには分岐命令を高々1個しか含むことができず、NOP命令が多く挿入されるので、並列処理の効率(並列度)が悪くなる。一般的に、分岐命令は、5命令中1命令の割合で出現すると言われている。
【0008】
これを改善するために、分岐命令を無くして条件付命令を導入するプリディケード実行技術("HPL PlayDoh Architecture SpecifiCation:Verl.0" Vinod Kathail Etc HPL-93-80 February 1994, "incorporating Guarded Execution into Existing Instruction Set" D.N. Pnevmatikatos PDH Paper Wisconsin Univ. 1996, and "The Bebefit of Predicated Execution for Software Pipelining" N.J. Warter etc. HICSS-26 Conference Proceedings January 1993 Vol. 1 pp497-606)が提案されている。
【0009】
例えば図23(A)のプログラムの場合には、ステップ3及び7の分岐命令を省略し、ステップ4〜6のI3〜I5を条件付命令CI3〜CI5に置き換え、ステップ8及び9のI6及びI7を条件付命令CI6及びCI7に置き換えて、図24(A)に示すようなプログラムにする。条件付命令CI3〜CI7のうち条件が成立して実際に実行されるのはCI7のみである。このプログラムをVLIWプロセッサで実行させる場合には、図24(B)に示す如く1命令パケットとなるので、NOP命令が少なくなり、並列度が向上する。
【0010】
【発明が解決しようとする課題】
しかしながら、このプリディケード技術には、次のような問題点がある。
【0011】
(1)既存の条件付分岐命令が図22に示すように複数ビットの条件フィールドを備え、例えばこれが‘0011’の場合には条件コードのネガティブフラグNと有効フラグVとの排他的論理和(xor)が‘1’であるか‘0’であるかを判定する。これに対し、プリディケード実行技術では、フラグ間の演算を行わずに1ビットのフラグの値により演算を実行するかどうかを決めるので、既存の命令セットとは異なる命令セットを用いなければならず、既存のソフトウエア資産をそのまま用いることができなくなる。
【0012】
(2)図22のような複数ビットの条件フィールドを条件付命令に備えてプリディケード実行技術を実現しようとすると、図22の判定条件に示す演算を行った後にその命令を実行するかどうかが決定されるので、命令スケジューラが複雑になり、実現困難である。
【0013】
(3)プリディケード実行技術の条件付命令は、1つの条件が成立しているかどうかのみを見ているので、多重条件の場合には従来の条件付分岐命令も用いなければならず、このため上述のようにNOP命令が多くなって並列度が悪くなる。
【0014】
本発明の目的は、このような問題点に鑑み、既存の命令セットアーキテクチャを承継すると共に、プリディケード技術の命令を使用可能なVLIWプロセッサを提供することにある。
【0015】
本発明の他の目的は、多重条件であっても条件付分岐命令を用いずにプリディケード技術の条件付命令を使用することが可能なVLIWプロセッサを提供することにある。
【0016】
本発明のさらに他の目的は、より多くの異なる条件の下での複数の処理を並列処理可能にすることにより並列度を向上させることが可能なVLIWプロセッサを提供することにある。
【0017】
【課題を解決するための手段及びその作用効果】
請求項1では、命令をデコードするデコーダと、該デコーダのデコード結果に応答して該命令を実行するための制御を行う制御回路とを含む処理ユニットを複数備え、第1条件コード生成機能付演算命令を実行して得られる第1条件コードが格納される第1条件コードレジスタを有するVLIWプロセッサにおいて、
該命令デコーダは、判定条件を示す条件フィールドを備えた条件コード変換命令をデコードし、条件フラグフィールドを備えた第2条件付命令をデコードし、
条件フラグを備えた第2条件コードレジスタと、
該条件フィールドに指定された判定条件に従って該第1条件コードレジスタの内容を判定する条件コード変換回路とをさらに有し、
該制御回路は、該条件コード変換命令のデコード結果に応答して、該条件コード変換回路の判定結果を該第2条件コードレジスタの該条件フラグに格納させ、該第2条件付命令のデコード結果に応答して、この命令の該条件フラグフィールドの内容が該第2条件レジスタの該条件フラグに一致しているときのみ該第2条件付命令の演算を実行するための制御を行う。
【0018】
このVLIWプロセッサによれば、従来の条件コード生成機能付演算命令を含む命令セットを使用すると共に、プリディケート実行機能である第2条件付命令を用いることができるので、過去のプログラム資産を流用しながら、第2条件付命令を用いて処理性能を向上せることができる。
【0019】
請求項2のVLIWプロセッサでは、請求項1において、上記第2条件コードレジスタは、上記条件フラグと対になり‘有効’又は‘無効’を示す有効フラグをさらに備え、
上記制御回路は、上記条件コード変換命令のデコード結果に応答して、該第2条件レジスタの該有効フラグを‘有効’にさせ、上記第2条件付命令のデコード結果に応答して、該有効フラグが‘無効’を示している場合には上記条件フラグの内容によらず該第2条件付命令の演算を実行するための制御を行わない。
【0020】
請求項3のVLIWプロセッサでは、請求項2において、上記第1条件コードレジスタを複数有し、
上記条件コード変換命令は第1条件コードレジスタ識別コードフィールドをさらに有し、
該第1条件コードレジスタ識別コードフィールドの内容に応答して、該複数の第1条件コードレジスタの1つを選択して上記条件コード変換回路に供給する第1セレクタをさらに有する。
【0021】
このVLIWプロセッサによれば、複数の第1条件コードレジスタを用いているので、並列度が向上する。
【0022】
請求項4のVLIWプロセッサでは、請求項3において、上記第2条件コードレジスタを複数有し、
上記条件コード変換命令及び上記第2条件付命令はいずれも第2条件コードレジスタ識別コードフィールドをさらに有し、
該第2条件コードレジスタ識別コードフィールドの内容に応答して、該複数の第2条件コードレジスタの1つを指定しこれに上記条件コード変換回路の判定結果を供給するマルチプレクサをさらに有し、
上記制御回路は、該第2条件付命令のデコード結果に応答して、この命令の該第2条件コードレジスタ識別コードフィールドで指定された第2条件レジスタを上記第2レジスタとする。
【0023】
このVLIWプロセッサによれば、複数の第2条件コードレジスタを用いているので、並列度が向上する。
【0024】
請求項5のVLIWプロセッサでは、請求項4において、上記命令デコーダはさらに、論理演算の種類を指定するオペレーションフィールドと該論理演算の対象となる上記複数の第2条件コードレジスタの2つを指定する第1及び第2ソースオペランドフィールドと該論理演算の結果が格納される該複数の第2条件コードレジスタの1つを指定するデスティネーションオペランドフィールドとを備えた第2条件コード間演算命令をデコードし、
該オペレーションフィールドで指定された論理演算を行う論理演算回路をさらに有する。
【0025】
このVLIWプロセッサによれば、多重条件であっても条件付分岐命令を用いずにプリディケード技術の条件付命令を使用することができる。また、多重条件を表現することができるので、より多くの第2条件付命令をパックにして1VLIW命令とすることが可能となり、並列度がさらに向上する。
【0026】
請求項6のVLIWプロセッサでは、請求項5において、上記第1ソースオペランドフィールドの内容に応答して、上記複数の第2条件コードレジスタの1つを選択して上記論理演算回路に供給する第2セレクタと、
上記第2ソースオペランドフィールドの内容に応答して、該複数の第2条件コードレジスタの他の1つを選択して該論理演算回路に供給する第3セレクタとをさらに有する。
【0027】
請求項7では、請求項5又は6において、上記マルチプレクサは、上記デスティネーションオペランドフィールドの内容に応答して、上記複数の第2条件コードレジスタの1つを指定しこれに上記論理演算の結果を供給する。
【0028】
請求項8のVLIWプロセッサでは、請求項5乃至7のいずれか1つにおいて、上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
(V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、 (V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、 (V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表すと、上記論理演算回路はその論理演算の1種として、
RS1=‘真’かつRS2=‘真’のときRD=‘真’
RS1=‘真’かつRS2=‘偽’のときRD=‘偽’
その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
となる非ブーリアンANDCR演算を実行する論理回路を有する。
【0029】
このVLIWプロセッサによれば、直列の多重条件を容易に表現することができる。
【0030】
請求項9のVLIWプロセッサでは、請求項5乃至7のいずれか1つにおいて、上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
(V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、 (V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、 (V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表し、‘真’と‘偽’の一方を他方に変換する演算子を*で表すと、上記論理演算回路はその論理演算の1種として、
*RS1=‘真’かつRS2=‘真’のときRD=‘真’
*RS1=‘真’かつRS2=‘偽’のときRD=‘偽’
その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
となる非ブーリアンANDNCR演算を実行する論理回路を有する。
【0031】
請求項10のVLIWプロセッサでは、請求項5乃至7のいずれか1つにおいて、上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
(V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、 (V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、 (V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表し、‘真’と‘偽’の一方を他方に変換する演算子を*で表すと、上記論理演算回路はその論理演算の1種として、
RS1=‘真’かつ*RS2=‘真’のときRD=‘真’
RS1=‘真’かつ*RS2=‘偽’のときRD=‘偽’
その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
となる非ブーリアンNANDCR演算を実行する論理回路を有する。
【0032】
請求項11のVLIWプロセッサでは、請求項5乃至7のいずれか1つにおいて、上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
(V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、 (V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、 (V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表し、‘真’と‘偽’の一方を他方に変換する演算子を*で表すと、上記論理演算回路はその論理演算の1種として、
*RS1=‘真’かつ*RS2=‘真’のときRD=‘真’
*RS1=‘真’かつ*RS2=‘偽’のときRD=‘偽’
その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
となる非ブーリアンNANDNCR演算を実行する論理回路を有する。
【0033】
請求項12のVLIWプロセッサでは、請求項5乃至7のいずれか1つにおいて、上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
(V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、 (V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、 (V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表すと、上記論理演算回路はその論理演算の1種として、
RS1とRS2の少なくとも一方が‘真’のときRD=‘真’
RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
その他のRS1とRS2の値の組み合わせのときRD=‘偽’
となるORCR演算を実行する論理回路を有する。
【0034】
このVLIWプロセッサによれば、異なる条件の下で同一処理を実行する場合に、同一処理を1箇所にまとめて実行することが可能となり、ステップ数を低減することができる。
【0035】
請求項13のVLIWプロセッサでは、請求項5乃至7のいずれか1つにおいて、上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
(V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、 (V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、 (V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表し、‘真’と‘偽’の一方を他方に変換する演算子を*で表すと、上記論理演算回路はその論理演算の1種として、
*RS1とRS2の少なくとも一方が‘真’のときRD=‘真’
RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
その他のRS1とRS2の値の組み合わせのときRD=‘偽’
となる非ブーリアンORNCR演算を実行する論理回路を有する。
【0036】
請求項14のVLIWプロセッサでは、請求項5乃至7のいずれか1つにおいて、上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
(V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、 (V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、 (V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表すと、上記論理演算回路はその論理演算の1種として、
RS1とRS2の少なくとも一方が‘真’のときRD=‘偽’
RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
その他のRS1とRS2の値の組み合わせのときRD=‘真’
となる非ブーリアンNORCR演算を実行する論理回路を有する。
【0037】
請求項15のVLIWプロセッサでは、請求項5乃至7のいずれか1つにおいて、上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
(V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、 (V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、 (V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表し、‘真’と‘偽’の一方を他方に変換する演算子を*で表すと、上記論理演算回路はその論理演算の1種として、
*RS1とRS2の少なくとも一方が‘真’のときRD=‘偽’
RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
その他のRS1とRS2の値の組み合わせのときRD=‘真’
となるNORNCR演算を実行する論理回路を有する。
【0038】
【発明の実施の形態】
以下、図面に基づいて本発明の実施形態を説明する。
【0039】
図1は、本発明が適用される4並列VLIWプロセッサの概略構成を示すブロック図である。
【0040】
命令キャシュメモリ10内には、命令スケジューラにより配列された命令が格納されており、読出回路11を介して互いに同一構成のスロット0〜3処理ユニット12〜15に供給され、各命令パックの並列処理においては、レジスタファイル16内の汎用レジスタ及び条件コードレジスタが用いられる。レジスタファイル16内の汎用レジスタの内容は、ストア命令の実行に応答して読出書込回路17を介しデータキャッシュメモリ18に格納され、データキャッシュメモリ18内のデータは、ロード命令の実行に応答して読出書込回路17を介しレジスタファイル16内のレジスタに格納される。全体の制御は、システム制御回路19により行われる。
【0041】
図2は、スロット0処理ユニット12の概略構成を示すブロック図である。
【0042】
読出回路11から読み出された命令は、命令レジスタ121に保持され、その内容が命令デコーダ122でデコードされる。制御回路123は、このデコード結果に基づいて各種制御を行うことにより、この命令を実行させる。構成要素124〜128は、図21を参照して説明した上述のものと同一である。
【0043】
本実施形態では、図22に示す条件フィールドを備えた分岐命令を含む従来の命令セットを承継して既存のソフトウエア資産をそのまま利用可能にすると共に、指定された条件が成立している場合のみ演算を実行する条件付命令を使用可能にするために、従来のVLIWプロセッサに次のような構成を付加している。すなわち、第2条件コードレジスタファイル163と、そのなかの1つのレジスタを選択するためのセレクタ129、条件コード変換回路12A及びマルチプレクサ12Bと、第2条件コードレジスタファイル163内の指定されたレジスタの内容を取り出すためのセレクタ12Cとを備え、従来の命令セットにさらに、図3に示すような形式の条件コード変換命令を新たに追加している。
【0044】
図3は、条件コード変換命令形式とこの命令を実行するための主要なハードウエア構成との関係を示す。図3では、第1条件コードレジスタファイル162が8個の第1条件コードレジスタCC0〜CC7からなり、第2条件コードレジスタファイル163が8個の第2条件コードレジスタCR0〜CR7からなる場合を示している。
【0045】
各第1条件コードレジスタCC0は、上述のようにネガティブフラグN、ゼロフラグZ、オーバフローフラグOV及びキャリーフラグCからなる。これに対し、各第2条件コードレジスタは、有効フラグVと条件フラグSとからなる。条件フラグSは、図22に示す判定条件の判定結果を1ビットで表すためのものであり、この判定は条件コード変換回路12Aで行われる。有効フラグVは、後述の多重条件を条件フラグSと共に表現するために導入されたものであり、‘1’は有効を示し‘0’は無効を示す。この条件コード変換の結果、有効フラグVは必ず‘1’に設定される。
【0046】
条件コード変換命令中の第1条件コードレジスタIDコードCCjの値又はこれをデコードした信号がセレクタ129の制御入力端に供給されて、第1条件コードレジスタファイル162内のレジスタが選択され、条件コード変換回路12Aに供給される。この命令の第1条件フィールドCONDは、図22の条件フィールドと同一であり、その値又はこれをデコードした信号が条件コード変換回路12Aに供給される。条件コード変換回路12Aは、選択された第1条件コードレジスタについて、第1条件フィールドCONDで表された条件が成立しているかどうかを判定する。例えば第1条件フィールドCONDが‘0011’の場合、選択された第1条件コードレジスタのネガティブフラグNと有効フラグVとの排他的論理和を演算し、その結果が‘1’であれば‘11’を出力し、‘0’であれば‘10’を出力する。
【0047】
この命令の第2条件コードレジスタIDコードCRkの値又はこれをデコードした信号がマルチプレクサ12Bの制御入力端に供給されて、第2条件コードレジスタファイル163内の1つのレジスタが指定され、これに条件コード変換回路12Aの出力が格納される。
【0048】
図4は、第2条件コードレジスタファイル163の指定された第2条件コードレジスタの内容に応じて演算の実行が決定される第2条件付命令の形式とこの命令を実行するための主要なハードウエア構成との関係を示す。
【0049】
この第2条件付命令は、分岐命令以外の演算命令や転送命令など(演算等)である。該命令の第2条件コードレジスタIDコードCRpの値又はこれをデコードした信号がセレクタ12Dの制御入力端に供給されて、第2条件コードレジスタファイル163内の1つのレジスタが選択され、制御回路123に供給される。制御回路123は、選択された第2条件コードレジスタの有効フラグVが‘1’のとき、条件フラグSと該命令の条件フラグSFとの値を比較し、両者が一致していればオペレーションコードOPで表される演算等を実行し、そうでなければ実行しない。この命令のRS1、RS2及びRDはそれぞれ、オペレーションコードOPで表される演算を実行するときの第1ソースオペランド、第2ソースオペランド及びデスティネーションオペランドである。
【0050】
次のようなプログラム例を考える。
【0051】
もし、条件R1>R2が成立すれば、
R20=[R10+R13]
R21=[R10+R14]
R22=R20−R21
を実行し、成立しなければ、
R20=[R10+R11]
R21=[R10+R12]
R22=R20+R21
を実行する。ここに[]は間接アドレス指定を意味しており、例えば[R10+R13]は汎用レジスタR10とR13の和をメモリアドレスとするメモリの内容である。
【0052】
このプログラムは、分岐命令を用い、機械語のニモニックで次のステップ(1)〜(10)のように記述される。
(1) SUBCC R1 R2 R3 CC1
SUBCCのCCは、条件コード生成機能付演算命令であることを示している。減算(R1−R2)の結果を汎用レジスタR3に格納すると共に、結果が負であればN=‘1’、ゼロであればZ=‘1’、桁借りがあれば、C=‘1’を、第1条件コードレジスタCC1に格納する。
(2) BICC BG CC1 L1
BICCは条件分岐命令であることを示している。第1条件コードレジスタCC1について、
論理演算not(Z or (N xor OV))を行い、その結果が‘1’であればラベルL1に分岐する。
(3) LD R10 R11 R20
加算(R10+R11)の結果をアドレスとするメモリ内のデータをロードしてR20に格納する。
(4) LD R10 R12 R21
加算(R10+R12)の結果をアドレスとするメモリ内のデータをロードしてR21に格納する。
(5) ADD R20 R21 R22
加算(R20+R21)の結果をR22に格納する。
(6) BA L2
ラベルL2に無条件分岐する。
(7)L1 LD R10 R13 R20
加算(R10+R13)の結果をアドレスとするメモリ内のデータをロードしてR20に格納する。
(8) LD R10 R14 R21
加算(R10+R14)の結果をアドレスとするメモリ内のデータをロードしてR21に格納する。
(9) SUB R20 R21 R22
減算(R20−R21)の結果をR22に格納する。
(10)L2
図7は、このプログラムの並列度を見るために、該プログラムを4並列同時実行可能なVLIW命令列に変換したものを示す。
【0053】
ここで図6に示す如く、有効フラグVと条件フラグSの対である第2条件コードについて、
V=‘1’(‘有効’)かつS=‘1’(‘真’)のとき、第2条件コード(V,S)が‘真’(TRUE)
V=‘1’かつS=‘0’(‘偽’)のとき、第2条件コード(V,S)が‘偽’(FALSE)
V=‘0’のとき、条件フラグSの値によらず第2条件コード(V,S)が‘未定義’(UNDEFINED)
であると定義する。
【0054】
また、例えば第2条件コードレジスタCR1が‘真’であることをCR1Tで表し、第2条件コードレジスタCR1が‘偽’であることをCR1Fで表す
上記命令シーケンス(1)〜(10)のプログラムは、分岐命令を用いずに条件コード変換命令及び第2条件付命令を使用すると、次の(11)〜(19)のように書き換えられる。
(11) SUBCC R1 R2 R3 CC1
減算(R1−R2)の結果を汎用レジスタR3に格納すると共に、結果が負であればN=1、ゼロであればZ=1、桁借りがあれば、C=1を、第1条件コードレジスタCC1に格納する。
(12) CKICC BG CR1
CKICCは、条件変換命令であることを示している。第1条件コードレジスタIDコードCCiで指定されるレジスタの内容(第1条件コード)は第2条件コードレジスタIDコードCRiで指定されるレジスタの内容(第2条件コード)に変換されるものとし、簡単化のために第1条件コードレジスタIDコードCCiの記載を省略している。
【0055】
第1条件コードレジスタCC1に対し、論理演算not(Z or (N xor OV)を行い、その結果を第2条件コードレジスタCR1に格納する。
(13) CLD R10 R11 R20 CR1T
CLDのCは、第2条件付命令であることを示している。
【0056】
CR1Tの場合、加算(R10+R11)の結果をアドレスとするメモリ内のデータをロードして汎用レジスタR20に格納する。
(14) CLD R10 R12 R21 CR1T
CR1Tの場合、加算(R10+R12)の結果をアドレスとするメモリ内のデータをロードして汎用レジスタR21に格納する。
(15) CADD R20 R21 R22 CR1T
CR1Tの場合、加算(R20+R21)の結果を汎用レジスタR22に格納する。
(16)L1 CLD R10 R13 R20 CR1F
CR1Fの場合、加算(R10+R13)の結果をアドレスとするメモリ内のデータをロードして汎用レジスタR20に格納する。
(17) CLD R10 R14 R21 CR1F
CR1Fの場合、加算(R10+R14)の結果をアドレスとするメモリ内のデータをロードして汎用レジスタR21に格納する。
(18) CSUB R20 R21 R22 CR1F
CR1Fの場合、減算(R20−R21)の結果を汎用レジスタR22に格納する。
(19)L2
このように、条件コード変換命令を用いると、従来の条件コード生成機能付演算命令を含む命令セットを使用しながら、プリディケート実行機能である第2条件付命令を用いることができるので、過去のプログラム資産を流用しながら、第2条件付命令を用いて性能向上を図ることができる。
【0057】
図8は、このプログラムの並列度を見るために、該プログラムを4並列VLIWプロセッサで実行するためのVLIW命令列に変換したものを示す。
【0058】
図8を図7と比較すれば明らかなように、本発明のVLIW命令列を用いると、従来よりも並列度が向上して、少ないVLIW命令数でプログラムを記述することができ、処理速度が向上する。
【0059】
次に、例えば図13に示すように条件1成立かつ条件2不成立というような多重条件の下で処理を実行する場合の並列度向上を考える。
【0060】
このような処理を、分岐命令を用いずに第2条件付命令を使用して実行可能にするために、図2において、セレクタ12D及び論理演算回路12Eをさらに備えると共に、多重条件を表すための第2条件コード間演算命令を新たに追加している。
【0061】
図5は、第2条件コード間演算命令形式とこの命令を実行するための主要なハードウエア構成との関係を示す。
【0062】
この命令の第2条件コードレジスタIDコードCRp及びCRqの値又はこれをデコードした信号がそれぞれセレクタ12C及び12Dの制御入力端に供給されて、第2条件コードレジスタファイル163内のレジスタが選択され、その内容がそれぞれRS1及びRS2として論理演算回路12Eに供給される。論理演算回路12Eは、この命令のオペレーションコードOPで指定される図9〜図12に示す演算の1つを第1ソースオペランドRS1及び第2ソースオペランドRS2に対して実行し、その結果をマルチプレクサ12Bに供給する。マルチプレクサ12Bの制御入力端にこの命令の第2条件コードレジスタIDコードCRkの値又はこれをデコードした信号が供給されて、第2条件コードレジスタファイル163内のレジスタが指定され、これに演算結果が格納される。
【0063】
図9〜図12では‘真’、‘偽’及び‘未定義’をそれぞれT(True)、F(False)及びU(Undefined)で示している。図9〜図12の論理演算の内容は、以下の具体例の説明から明らかとなる。
【0064】
図13は、条件1〜3により場合分けされる処理を示すフローチャートである。図14は、図13中の多重条件を、分岐命令を用いずに第2条件コード間論理演算を用いて表したフローチャートである。
【0065】
図中のS1〜S9のSはステップを示し、また、{条件}は、条件、例えばR1<R2を判定し、これにより得られた第1条件コードを、第2条件コードに変換したものを示している。
【0066】
(S1){条件1}が第2条件コードレジスタCR1に代入される。CR1Tであれば、S2へ進み、そうでなければS3へ進む。
【0067】
(S2)CR1Tであれば処理1を実行する。図4の第2条件付命令に条件CR1Tを与えることにより、分岐命令を用いずに処理1を実行することができる。次にS4へ進む。
【0068】
(S3)CR1Fであれば処理2を実行する。第2条件付命令に条件CR1Fを与えることにより、分岐命令を用いずに処理2を実行することができる。次にS7へ進む。
【0069】
(S4){条件2}が第2条件コードレジスタCR2に代入される。
【0070】
多重条件を表現することができれば、より多くの第2条件付命令をパックにして1VLIW命令とすることが可能となり、並列度が向上する。そこで、条件1と条件2に対し、図5の第2条件コード間演算命令を実行して、条件1と条件2の多重条件を判定する。ここでは、図9(A)の論理演算ANDCRを用いる。
【0071】
次の命令
ANDCR CR1 CR2 CR3
は、RS1=CR1とRS2=CR2との間の論理演算ANDCRを実行し、その結果を第2条件コードレジスタCR3に格納することを意味している。
【0072】
この演算の内容は、次の通りである。
【0073】
RS1=‘真’かつRS2=‘真’のときRD=‘真’
RS1=‘真’かつRS2=‘偽’のときRD=‘偽’
その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
したがって、{条件1}が‘真’且つ{条件2}が‘真’である場合には、CR3Tとなり、{条件1}が‘真’且つ{条件2}が‘偽’である場合にはCR3Fとなる。その他の場合には、第2条件コードレジスタCR3が‘未定義’になるので、以下のS5又はS6での処理が実行されないことが保証される。
【0074】
(S5)CR3Tであれば処理3を実行する。第2条件付命令に条件CR3Tを与えることにより、分岐命令を用いずに処理3を実行することができる。次にS10へ進む。
【0075】
(S6)CR3Fであれば処理4を実行する。第2条件付命令に条件CR3Fを与えることにより、分岐命令を用いずに処理4を実行することができる。次にS10へ進む。
【0076】
{条件1}が‘真’で{条件2}が‘偽’である場合には処理4が実行され、逆に、{条件1}が‘偽’で{条件2}が‘真’である場合には処理4が実行されないのでANDCRは、第1ソースオペランドRS1と第2ソースオペランドRS2に関し交換法則が成立しない。すなわち、論理演算ANDCRは非ブーリアンである。換言すれば、交換法則が成立しないので、多重条件を表現することができる。
【0077】
(S7){条件3}が第2条件コードレジスタCR4に代入される。
【0078】
図10(A)の論理演算ANDNCRを用い、
ANDNCR CR1 CR4 CR5
を実行する。すなわち、RS1=CR1とRS2=CR4との間の論理演算ANDNCRを実行し、その結果を第2条件コードレジスタCR5に格納する。
【0079】
この演算の内容は、‘真’と‘偽’の一方を他方に変換する演算子を*で表すと、次の通りである。
【0080】
*RS1=‘真’かつRS2=‘真’のときRD=‘真’
*RS1=‘真’かつRS2=‘偽’のときRD=‘偽’
その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
したがって、{条件1}が‘偽’且つ{条件2}が‘真’である場合には、CR5Tとなり、{条件1}が‘偽’且つ{条件2}が‘偽’である場合にはCR5Fとなる。その他の場合には、第2条件コードレジスタCR5が‘未定義’になるので、以下のS8又はS9での処理が実行されないことが保証される。
【0081】
この論理演算ANDCRも、非ブーリアンである。
【0082】
(S8)CR5Tであれば処理5を実行する。第2条件付命令に条件CR5Tを与えることにより、分岐命令を用いずに処理5を実行することができる。次にS10へ進む。
【0083】
(S9)CR5Fであれば処理6を実行する。第2条件付命令に条件CR5Fを与えることにより、分岐命令を用いずに処理6を実行することができる。次にS10へ進む。
【0084】
このように、非ブーリアンの第2条件コード間演算命令を用いれば、VLIWプロセッサにおいて、単一条件及び多重条件をまとめて判定した後に、処理1〜処理6を並列実行することが可能となり、並列度が向上する。
【0085】
なお、例えば条件2がR1<R2である場合、この条件をR1≧R2で表し、かつ、S4での第2条件コードレジスタCR2の‘真’と‘偽’を逆に考えてもよい。この場合、{条件1}が‘真’のとき、{条件2}が‘偽’であれば処理3を実行し、{条件2}が‘真’であれば処理4を実行する。したがって、S4では、図11(A)の論理演算NANDCRを用いる。
【0086】
この演算の内容は、次の通りである。
【0087】
RS1=‘真’かつ*RS2=‘真’のときRD=‘真’
RS1=‘真’かつ*RS2=‘偽’のときRD=‘偽’
その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
同様に、例えば条件4がR3<R4である場合、この条件をR3≧R4で表し、かつ、S7での第2条件コードレジスタCR4の‘真’と‘偽’を逆に考えてもよい。この場合、{条件1}が‘偽’のとき、{条件3}が‘偽’であれば処理5を実行し、{条件3}が‘真’であれば処理6を実行する。したがって、S7では、図12(A)の論理演算NANDNCRを用いる。
【0088】
この演算の内容は、次の通りである。
【0089】
*RS1=‘真’かつ*RS2=‘真’のときRD=‘真’
*RS1=‘真’かつ*RS2=‘偽’のときRD=‘偽’
その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
さらに、例えば条件2がR1<R2である場合、この条件をR1≧R2で表し、かつ、S4での第2条件コードレジスタCR2の‘真’と‘偽’を逆に考えずに、第2条件コードレジスタCR2に対し図9(D)の論理演算NOTCRを行ってもよい。
【0090】
次に、論理演算ORCRの利用とその定義について考える。
【0091】
図13において、例えば処理3の一部又は全部と処理5の一部又は全部とが同一処理を含む場合、({条件1}が‘真’かつ{条件2}が‘真’)又は({条件1}が‘偽’かつ{条件3}が‘真’)が‘真’のとき、この同一処理を1箇所にまとめて実行することにより、ステップ数を低減することが可能となる。図14のS4でANDCRを実行して第2条件コードレジスタCR3にその結果を格納し、S7でANDNCRを実行して第2条件コードレジスタCR5にその結果を格納しているので、第2条件コードレジスタCR3とCR5に対し論理演算ORCRを実行し、その結果を条件とする第2条件付命令でこの同一処理を行えばよい。
【0092】
このようなことを可能にするために、図9(B)の論理演算ORCRは、次のように定義されている。
【0093】
RS1とRS2の少なくとも一方が‘真’のときRD=‘真’
RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
その他のRS1とRS2の値の組み合わせのときRD=‘偽’
この論理演算ORCRは、交換法則が成立する。
【0094】
次に、論理演算ORNCRの利用について考える。
【0095】
図13において、例えば処理4の一部又は全部と処理5の一部又は全部とが同一処理を含む場合、図14において、CR3F又はCR5Tのとき、この同一処理を行う。これを可能にするために、図10(B)の論理演算ORNCRは、次のように定義されている。
【0096】
*RS1とRS2の少なくとも一方が‘真’のときRD=‘真’
RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
その他のRS1とRS2の値の組み合わせのときRD=‘偽’
この論理演算ORNCRは、交換法則が成立しない。
【0097】
次に、論理演算NORCRの利用について考える。
【0098】
図13において、例えば処理3の一部又は全部と処理6の一部又は全部とが同一処理を含む場合、図14において、CR3T又はCR5Fのとき、この同一処理を行う。これを可能にするために、図11(B)の論理演算NORCRは、次のように定義されている。
【0099】
RS1とRS2の少なくとも一方が‘真’のときRD=‘偽’
RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
その他のRS1とRS2の値の組み合わせのときRD=‘真’
次に、論理演算NORNCRの利用について考える。
【0100】
図13において、例えば処理4の一部又は全部と処理6の一部又は全部とが同一処理を含む場合、図14において、CR3F又はCR5Fのとき、この同一処理を行う。これを可能にするために、図12(B)の論理演算NORNCRは、次のように定義されている。
【0101】
*RS1と*RS2の少なくとも一方が‘真’のときRD=‘真’
RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
その他のRS1とRS2の値の組み合わせのときRD=‘偽’
この論理演算NORNCRは、交換法則が成立する。
【0102】
なお、上述のように異なる条件の下での複数の処理を並列処理することができるので、図13の処理1と処理5や処理3と処理2に同一処理を含む場合にも、上記のような論理演算を用いて同一処理を1箇所に纏めて実行することができる。
【0103】
論理演算ORCRと同様に、図9(C)に示す論理演算XORCRを定義することができる。この演算の内容は、次の通りである。
【0104】
RS1とRS2の一方が‘真’で他方が‘偽’のとき、RD=‘真’
RS1とRS2の両方が‘真’又は‘偽’で等しいとき、RD=‘偽’
その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
論理演算XORCRは、例えば図13において、条件2=条件3であり、T→Fの処理4とF→Tの処理5とで同一処理を行い、T→Tの処理3とF→Fの処理6とで他の同一処理を行う場合に有効である。
【0105】
上記同様にして、図10(C)に示す論理演算XORNCR、図11(C)に示す論理演算NXORCR、及び、図12(C)に示す論理演算NXORNCRを定義することができる。
【0106】
次に、第2条件コード間演算命令を用いたより具体的な例を説明する。
【0107】
図15は、多重条件の処理を示すフローチャートである。図16は、分岐命令を用いずにプリディケード実行を用いて図15の処理を行う場合のフローチャートである。
【0108】
S11とS15とで同一処理R12=R7*R8が行われるので、上述のようにこれを1箇所にまとめて行う。
【0109】
(S10)R10<R11であるかどうかを判定し、その結果が‘真’であればS11へ進み、‘偽’であればS12へ進む。
【0110】
この処理は、次の2つの命令で実行される。
【0111】
〔1〕 SUBCC R10 R11 R12 CC6
減算(R10−R11)の結果を汎用レジスタR12に格納すると共に、結果が負であればN=1、ゼロであればZ=1、桁借りがあれば、C=1を第1条件コードレジスタCC6に格納する。
【0112】
〔2〕 CKICC BL CC6
第1条件コードレジスタCC6について、ネガティブフラグNと有効フラグVとの排他的論理和演算を行い、その結果を第2条件コードレジスタCR6に格納する。
【0113】
(S12)R1<R2であるかどうかを判定し、その結果が‘真’であればS13へ進み、‘偽’であればS14へ進む。
【0114】
この処理は、次の2つの命令で実行される。
【0115】
〔3〕 SUBCC R1 R2 R3 CC1
減算(R1−R2)の結果を汎用レジスタR3に格納すると共に、結果が負であればN=1、ゼロであればZ=1、桁借りがあれば、C=1を第1条件コードレジスタCC1に格納する。
【0116】
〔4〕 CKICC BL CC1
第1条件コードレジスタCC1について、ネガティブフラグNと有効フラグVとの排他的論理和演算を行い、その結果を第2条件コードレジスタCR1に格納する。
【0117】
(S13)除算R20/R21を行い、その結果をR22に格納する。
【0118】
〔5〕 CUDIV R20 R21 R22 CR1T
CUDIVのUは、符号無し(unsigned)数の演算であることを示している。
【0119】
CR1Tの場合、除算R20/R21を行い、その結果をR22に格納する。
【0120】
(S14)R4>R5であるかどうかを判定し、その結果が‘真’であればS15へ進み、‘偽’であればS16へ進む。
【0121】
この処理は、分岐命令を使用せずに2重条件を判定する必要があるので、次の3つの命令で実行される。
【0122】
〔6〕 SUBCC R4 R5 R6 CC2
減算(R4−R5)の結果を汎用レジスタR6に格納すると共に、結果が負であればN=1、ゼロであればZ=1、桁借りがあれば、C=1を第1条件コードレジスタCC2に格納する。
【0123】
〔7〕 CKICC BG CC2
第1条件コードレジスタCC2について、not(Z or (N xor OV))の論理演算を行い、その結果を第2条件コードレジスタCR2に格納する。
【0124】
〔8〕 ANDNCR CR1 CR2 CR2
CR1とCR2について論理演算ANDNCRCRを行い、その結果を第2条件コードレジスタCR2に格納する。
【0125】
(S15)減算R7−R8を行い、その結果を汎用レジスタR9に格納する。
【0126】
〔9〕 CSUB R7 R8 R9 CR2T
CR2Tであれば減算(R7−R8)を行い、その結果を9に格納する。
【0127】
次に、乗算R7×R8を行い、その結果を汎用レジスタR12に格納する。
【0128】
S15の処理にS11の処理が一箇所にまとめられているので、この処理は次の2つの命令で実行される。
【0129】
〔10〕 ORCR CR2 CR6 CR5
第2条件コードレジスタCR2とCR6ついて論理演算ORCRを行い、その結果を第2条件コードレジスタCR5に格納する。
【0130】
〔11〕 CMUL R7 R8 R12 CR5T
CR5Tであれば、乗算R7×R8を行い、その結果を汎用レジスタR12に格納する。
【0131】
(S16)加算(R7+R8)を行い、その結果を汎用レジスタR9に格納する。
【0132】
〔12〕 CADD R7 R8 R9 CR2F
CR2Fであれば、加算(R7+R8)を行い、その結果を汎用レジスタR9に格納する。
【0133】
図17は、上記命令〔1〕〜〔12〕を4並列VLIWプロセッサで実行するために、命令スケジューラでこれを命令パケットに変換した命令列を示す。
【0134】
図18は、分岐命令を含む従来の命令セットで図15の処理を行うプログラムを記述した後、VLIWプロセッサで処理するために命令スケジューラでこれを命令パケットに変換した命令列を示す。
【0135】
図17の場合、並列度が図18の場合よりも2倍向上してNOP命令が少なくなり、処理速度が約2倍になる。
【0136】
図19は、図15と同じ内容の処理を、条件及びその結果の‘真’と‘偽’を逆にして行う場合のフローチャートである。
【0137】
図20は、分岐命令を用いずにプリディケード実行を用いて図19の処理を行う場合のフローチャートである。
【0138】
図20を図16と比較すると、条件コード変換命令の条件フィールドが次のように変わっている。すなわち、S10で、BLがBGLとなり、S12でBLがBGLとなり、S14でBGがBLEとなっている。
【0139】
また、第2条件コード間演算命令が次のように変わっている。すなわち、S14でANDNCRがNANDCRとなり、S152でORCRがNORNCRとなっている。
【0140】
さらに、第2条件付命令が次のように変わっている。すなわち、S13でCR1TがCR1Fとなり、S151でCR2TがCR2Fとなり、S16でCR2FがCR2Tとなっている。
【図面の簡単な説明】
【図1】本発明が適用されるVLIWプロセッサの概略構成を示すブロック図である。
【図2】図1中のスロット0処理ユニットの概略構成を示すブロック図である。
【図3】条件コード変換命令形式とこの命令を実行するための主要なハードウエア構成との関係を示す。
【図4】第2条件コードレジスタファイル内の指定されたレジスタの内容に応じて演算の実行が決定される第2条件付命令の形式とこの命令を実行するための主要なハードウエア構成との関係を示す図である。
【図5】第2条件コード間演算命令形式とこの命令を実行するための主要なハードウエア構成との関係を示す図である。
【図6】第2条件コードの値とその意味を示す図である。
【図7】明細書に記載した第1のプログラムを4並列VLIWで実行するための命令列を示す図である。
【図8】明細書に記載した第2のプログラムを4並列VLIWで実行するための命令列を示す図である。
【図9】(A)〜(D)はいずれも第2条件コード間の論理演算の真理値表である。
【図10】(A)〜(C)はいずれも第2条件コード間の論理演算の真理値表である。
【図11】(A)〜(C)はいずれも第2条件コード間の論理演算の真理値表である。
【図12】(A)〜(C)はいずれも第2条件コード間の論理演算の真理値表である。
【図13】条件1〜3により場合分けされる処理を示すフローチャートである。
【図14】図13中の多重条件を、分岐命令を用いずに第2条件コード間論理演算を用いて表したフローチャートである。
【図15】多重条件の処理を示すフローチャートである。
【図16】分岐命令を用いずにプリディケード実行を用いて図15の処理を行う場合のフローチャートである。
【図17】明細書に記載した第3のプログラムを4並列VLIWプロセッサで実行するためのVLIW命令列を示す図である。
【図18】分岐命令を含む従来の命令セットで記述したプログラムを4並列VLIWプロセッサで実行するためのVLIW命令列を示す図である。
【図19】図15と同じ内容の処理を、条件及びその結果の‘真’と‘偽’を逆にして行う場合のフローチャートである。
【図20】分岐命令を用いずにプリディケード実行を用いて図19の処理を行う場合のフローチャートである。
【図21】条件コード生成機能付演算命令形式とこの命令を実行するための主要なハードウエア構成との関係を示す図である。
【図22】分岐命令内の条件フィールドの値と、そのニモニック、意味及び判定条件を示す表である。
【図23】(A)は分岐命令を含むプログラムを示す図であり、(B)はこのプログラムを7並列VLIWプロセッサで実行する場合のVLIW命令列を示す図である。
【図24】(A)は第2条件付命令を用いて図23(A)のプログラムを置き換えたものを示す図であり、(B)はこのプログラムを7並列VLIWプロセッサで実行する場合のVLIW命令列を示す図である。
【符号の説明】
10 命令キャシュメモリ
11 読出回路
12〜15 スロット0〜3処理ユニット
16 レジスタファイル
17 読出書込回路
18 データキャッシュメモリ
19 システム制御回路
121 命令レジスタ
122 命令デコーダ
123 制御回路
124 ALU
125、126、129、12C、12D セレクタ
127、128、12B マルチプレクサ
12A 条件コード変換回路
12E 論理演算回路
161 汎用レジスタファイル
162 第1条件コードレジスタファイル
163 第2条件コードレジスタファイル
CC0〜CC7 第1条件コードレジスタ
CR0〜CR7 第2条件コードレジスタ
V 有効フラグ
S、SF 条件フラグ
CCi、CCj 第1条件コードレジスタIDコード
COND 第1条件フィールド
CRk、CRp、CRq 第2条件コードレジスタIDコード
OP オペレーションコード
RS1 第1ソースオペランド
RS2 第2ソースオペランド
RD デスティネーションオペランド
R1〜R12 汎用レジスタ
N ネガティブフラグ
Z ゼロフラグ
OV オーバフローフラグ
C キャリーフラグ

Claims (15)

  1. 命令をデコードするデコーダと、該デコーダのデコード結果に応答して該命令を実行するための制御を行う制御回路とを含む処理ユニットを複数備え、第1条件コード生成機能付演算命令を実行して得られる第1条件コードが格納される第1条件コードレジスタを有するVLIWプロセッサにおいて、
    該命令デコーダは、判定条件を示す条件フィールドを備えた条件コード変換命令をデコードし、条件フラグフィールドを備えた第2条件付命令をデコードし、
    条件フラグを備えた第2条件コードレジスタと、
    該条件フィールドに指定された判定条件に従って該第1条件コードレジスタの内容を判定する条件コード変換回路とをさらに有し、
    該制御回路は、該条件コード変換命令のデコード結果に応答して、該条件コード変換回路の判定結果を該第2条件コードレジスタの該条件フラグに格納させ、該第2条件付命令のデコード結果に応答して、この命令の該条件フラグフィールドの内容が該第2条件レジスタの該条件フラグに一致しているときのみ該第2条件付命令の演算を実行するための制御を行う、
    ことを特徴とするVLIWプロセッサ。
  2. 上記第2条件コードレジスタは、上記条件フラグと対になり‘有効’又は‘無効’を示す有効フラグをさらに備え、
    上記制御回路は、上記条件コード変換命令のデコード結果に応答して、該第2条件レジスタの該有効フラグを‘有効’にさせ、上記第2条件付命令のデコード結果に応答して、該有効フラグが‘無効’を示している場合には上記条件フラグの内容によらず該第2条件付命令の演算を実行するための制御を行わない、
    ことを特徴とする請求項1記載のVLIWプロセッサ。
  3. 上記第1条件コードレジスタを複数有し、
    上記条件コード変換命令は第1条件コードレジスタ識別コードフィールドをさらに有し、
    該第1条件コードレジスタ識別コードフィールドの内容に応答して、該複数の第1条件コードレジスタの1つを選択して上記条件コード変換回路に供給する第1セレクタをさらに有する、
    ことを特徴とする請求項2記載のVLIWプロセッサ。
  4. 上記第2条件コードレジスタを複数有し、
    上記条件コード変換命令及び上記第2条件付命令はいずれも第2条件コードレジスタ識別コードフィールドをさらに有し、
    該第2条件コードレジスタ識別コードフィールドの内容に応答して、該複数の第2条件コードレジスタの1つを指定しこれに上記条件コード変換回路の判定結果を供給するマルチプレクサをさらに有し、
    上記制御回路は、該第2条件付命令のデコード結果に応答して、この命令の該第2条件コードレジスタ識別コードフィールドで指定された第2条件レジスタを上記第2レジスタとする、
    ことを特徴とする請求項3記載のVLIWプロセッサ。
  5. 上記命令デコーダはさらに、論理演算の種類を指定するオペレーションフィールドと該論理演算の対象となる上記複数の第2条件コードレジスタの2つを指定する第1及び第2ソースオペランドフィールドと該論理演算の結果が格納される該複数の第2条件コードレジスタの1つを指定するデスティネーションオペランドフィールドとを備えた第2条件コード間演算命令をデコードし、
    該オペレーションフィールドで指定された論理演算を行う論理演算回路をさらに有する、
    ことを特徴とする請求項4記載のVLIWプロセッサ。
  6. 上記第1ソースオペランドフィールドの内容に応答して、上記複数の第2条件コードレジスタの1つを選択して上記論理演算回路に供給する第2セレクタと、
    上記第2ソースオペランドフィールドの内容に応答して、該複数の第2条件コードレジスタの他の1つを選択して該論理演算回路に供給する第3セレクタと、
    をさらに有することを特徴とする請求項5記載のVLIWプロセッサ。
  7. 上記マルチプレクサは、上記デスティネーションオペランドフィールドの内容に応答して、上記複数の第2条件コードレジスタの1つを指定しこれに上記論理演算の結果を供給することを特徴とする請求項5又は6記載のVLIWプロセッサ。
  8. 上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
    (V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、(V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、(V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表すと、上記論理演算回路はその論理演算の1種として、
    RS1=‘真’かつRS2=‘真’のときRD=‘真’
    RS1=‘真’かつRS2=‘偽’のときRD=‘偽’
    その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
    となる非ブーリアンANDCR演算を実行する論理回路を有することを特徴とする請求項5乃至7のいずれか1つに記載のVLIWプロセッサ。
  9. 上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
    (V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、(V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、(V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表し、‘真’と‘偽’の一方を他方に変換する演算子を*で表すと、上記論理演算回路はその論理演算の1種として、
    *RS1=‘真’かつRS2=‘真’のときRD=‘真’
    *RS1=‘真’かつRS2=‘偽’のときRD=‘偽’
    その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
    となる非ブーリアンANDNCR演算を実行する論理回路を有することを特徴とする請求項5乃至7のいずれか1つに記載のVLIWプロセッサ。
  10. 上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
    (V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、(V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、(V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表し、‘真’と‘偽’の一方を他方に変換する演算子を*で表すと、上記論理演算回路はその論理演算の1種として、
    RS1=‘真’かつ*RS2=‘真’のときRD=‘真’
    RS1=‘真’かつ*RS2=‘偽’のときRD=‘偽’
    その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
    となる非ブーリアンNANDCR演算を実行する論理回路を有することを特徴とする請求項5乃至7のいずれか1つに記載のVLIWプロセッサ。
  11. 上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
    (V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、(V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、(V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表し、‘真’と‘偽’の一方を他方に変換する演算子を*で表すと、上記論理演算回路はその論理演算の1種として、
    *RS1=‘真’かつ*RS2=‘真’のときRD=‘真’
    *RS1=‘真’かつ*RS2=‘偽’のときRD=‘偽’
    その他のRS1とRS2の値の組み合わせのときRD=‘未定義’
    となる非ブーリアンNANDNCR演算を実行する論理回路を有することを特徴とする請求項5乃至7のいずれか1つに記載のVLIWプロセッサ。
  12. 上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
    (V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、(V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、(V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表すと、上記論理演算回路はその論理演算の1種として、
    RS1とRS2の少なくとも一方が‘真’のときRD=‘真’
    RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
    その他のRS1とRS2の値の組み合わせのときRD=‘偽’
    となるORCR演算を実行する論理回路を有することを特徴とする請求項5乃至7のいずれか1つに記載のVLIWプロセッサ。
  13. 上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
    (V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、(V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、(V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表し、‘真’と‘偽’の一方を他方に変換する演算子を*で表すと、上記論理演算回路はその論理演算の1種として、
    *RS1とRS2の少なくとも一方が‘真’のときRD=‘真’
    RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
    その他のRS1とRS2の値の組み合わせのときRD=‘偽’
    となる非ブーリアンORNCR演算を実行する論理回路を有することを特徴とする請求項5乃至7のいずれか1つに記載のVLIWプロセッサ。
  14. 上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
    (V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、(V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、(V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表すと、上記論理演算回路はその論理演算の1種として、
    RS1とRS2の少なくとも一方が‘真’のときRD=‘偽’
    RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
    その他のRS1とRS2の値の組み合わせのときRD=‘真’
    となる非ブーリアンNORCR演算を実行する論理回路を有することを特徴とする請求項5乃至7のいずれか1つに記載のVLIWプロセッサ。
  15. 上記有効フラグ及びこれと対になる上記条件フラグをそれぞれV及びSで表し、
    (V,S)=(‘有効’,‘真’)のとき第2条件コード(V,S)が‘真’、(V,S)=(‘有効’,‘偽’)のとき第2条件コード(V,S)が‘偽’、(V,S)=(‘無効’,‘真’)又は(V,S)=(‘無効’,‘偽’)のとき第2条件コード(V,S)が‘未定義’であると定義し、上記第1及び第2ソースオペランドフィールド並びに上記デスティネーションオペランドフィールドで指定される上記第2条件コードレジスタをそれぞれRS1、RS2及びRDで表し、‘真’と‘偽’の一方を他方に変換する演算子を*で表すと、上記論理演算回路はその論理演算の1種として、
    *RS1とRS2の少なくとも一方が‘真’のときRD=‘偽’
    RS1=‘未定義’かつRS2=‘未定義’のときRD=‘未定義’
    その他のRS1とRS2の値の組み合わせのときRD=‘真’
    となるNORNCR演算を実行する論理回路を有することを特徴とする請求項5乃至7のいずれか1つに記載のVLIWプロセッサ。
JP37441598A 1998-12-28 1998-12-28 Vliwプロセッサ Expired - Lifetime JP3830683B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP37441598A JP3830683B2 (ja) 1998-12-28 1998-12-28 Vliwプロセッサ
US09/473,046 US6516407B1 (en) 1998-12-28 1999-12-28 Information processor
KR1019990063202A KR100589102B1 (ko) 1998-12-28 1999-12-28 Vliw 프로세서
EP99310616.0A EP1016961B1 (en) 1998-12-28 1999-12-29 Information processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP37441598A JP3830683B2 (ja) 1998-12-28 1998-12-28 Vliwプロセッサ

Publications (2)

Publication Number Publication Date
JP2000194557A JP2000194557A (ja) 2000-07-14
JP3830683B2 true JP3830683B2 (ja) 2006-10-04

Family

ID=18503810

Family Applications (1)

Application Number Title Priority Date Filing Date
JP37441598A Expired - Lifetime JP3830683B2 (ja) 1998-12-28 1998-12-28 Vliwプロセッサ

Country Status (4)

Country Link
US (1) US6516407B1 (ja)
EP (1) EP1016961B1 (ja)
JP (1) JP3830683B2 (ja)
KR (1) KR100589102B1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4542722B2 (ja) * 2001-04-25 2010-09-15 富士通株式会社 命令処理方法
JP3851228B2 (ja) 2002-06-14 2006-11-29 松下電器産業株式会社 プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム
US6865662B2 (en) * 2002-08-08 2005-03-08 Faraday Technology Corp. Controlling VLIW instruction operations supply to functional units using switches based on condition head field
EP1460765A1 (en) * 2003-03-19 2004-09-22 STMicroelectronics S.r.l. Method for performing error corrections of digital information codified as a symbol sequence
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
US7725694B2 (en) * 2004-12-21 2010-05-25 Denso Corporation Processor, microcomputer and method for controlling program of microcomputer
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
JP4228241B2 (ja) * 2006-12-13 2009-02-25 ソニー株式会社 演算処理装置
GB2480285A (en) * 2010-05-11 2011-11-16 Advanced Risc Mach Ltd Conditional compare instruction which sets a condition code when it is not executed
JP5813484B2 (ja) * 2011-11-30 2015-11-17 ルネサスエレクトロニクス株式会社 Vliwプロセッサと命令構造と命令実行方法
US9652242B2 (en) * 2012-05-02 2017-05-16 Apple Inc. Apparatus for predicate calculation in processor instruction set
KR102210997B1 (ko) 2014-03-12 2021-02-02 삼성전자주식회사 Vliw 명령어를 처리하는 방법 및 장치와 vliw 명령어를 처리하기 위한 명령어를 생성하는 방법 및 장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6043751A (ja) * 1983-08-18 1985-03-08 Hitachi Ltd 情報処理装置
JPS61110256A (ja) 1984-11-02 1986-05-28 Hitachi Ltd 複数の演算部を有するプロセツサ
US5974240A (en) * 1995-06-07 1999-10-26 International Business Machines Corporation Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US6055621A (en) 1996-02-12 2000-04-25 International Business Machines Corporation Touch history table
JPH1049368A (ja) * 1996-07-30 1998-02-20 Mitsubishi Electric Corp 条件実行命令を有するマイクロプロセッサ

Also Published As

Publication number Publication date
KR100589102B1 (ko) 2006-06-14
US6516407B1 (en) 2003-02-04
EP1016961A2 (en) 2000-07-05
KR20000052594A (ko) 2000-08-25
EP1016961A3 (en) 2003-05-14
JP2000194557A (ja) 2000-07-14
EP1016961B1 (en) 2015-07-15

Similar Documents

Publication Publication Date Title
US7127593B2 (en) Conditional execution with multiple destination stores
KR100464406B1 (ko) 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
US9477475B2 (en) Apparatus and method for asymmetric dual path processing
US6839828B2 (en) SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US9383999B2 (en) Conditional compare instruction
KR100715055B1 (ko) Vliw 프로세서, 인스트럭션 컴파일 방법, 머신 판독가능한 매체 및 컴퓨터 프로그램 실행 방법
US8484442B2 (en) Apparatus and method for control processing in dual path processor
US20100274988A1 (en) Flexible vector modes of operation for SIMD processor
JP3830683B2 (ja) Vliwプロセッサ
US7793084B1 (en) Efficient handling of vector high-level language conditional constructs in a SIMD processor
US20130212354A1 (en) Method for efficient data array sorting in a programmable processor
US20120221834A1 (en) Processor architecture
JPH03218523A (ja) データプロセッサ
JP5326314B2 (ja) プロセサおよび情報処理装置
US5274777A (en) Digital data processor executing a conditional instruction within a single machine cycle
US5684983A (en) Microprocessor executing multiple register transfer operations with a single instruction with derivation of destination register numbers from source register
CA2560093A1 (en) Apparatus and method for dual data path processing
US7937572B2 (en) Run-time selection of feed-back connections in a multiple-instruction word processor
JP2000207210A (ja) マイクロプロセッサ
JP2006053830A (ja) 分岐予測装置および分岐予測方法
JP2001306321A (ja) プロセッサ
JP2014164659A (ja) プロセッサ
KR20070022239A (ko) 비대칭 듀얼 경로 프로세싱용 장치 및 방법
JP2000293374A (ja) 情報処理装置
JPH06168121A (ja) データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050725

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060414

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060418

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060615

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060712

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100721

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100721

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110721

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110721

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120721

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120721

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130721

Year of fee payment: 7

EXPY Cancellation because of completion of term