JP4979875B2 - リターゲッタブルコンパイルシステム及び方法 - Google Patents

リターゲッタブルコンパイルシステム及び方法 Download PDF

Info

Publication number
JP4979875B2
JP4979875B2 JP2002533068A JP2002533068A JP4979875B2 JP 4979875 B2 JP4979875 B2 JP 4979875B2 JP 2002533068 A JP2002533068 A JP 2002533068A JP 2002533068 A JP2002533068 A JP 2002533068A JP 4979875 B2 JP4979875 B2 JP 4979875B2
Authority
JP
Japan
Prior art keywords
instruction set
instruction
type
statement
code
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 - Fee Related
Application number
JP2002533068A
Other languages
English (en)
Other versions
JP2004511043A (ja
Inventor
ガゲルドンク ヨハン エス エイチ ヴァン
マルコ ジェイ ジー ベコーアイ
アドリアヌス ジェイ ビンク
ジャン ホーゲルブルッゲ
ジェロエン エイ ジェイ レアイテン
バート メスマン
Original Assignee
シリコン ハイブ ビー・ヴィー
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 シリコン ハイブ ビー・ヴィー filed Critical シリコン ハイブ ビー・ヴィー
Publication of JP2004511043A publication Critical patent/JP2004511043A/ja
Application granted granted Critical
Publication of JP4979875B2 publication Critical patent/JP4979875B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、請求項1及び12でそれぞれ規定されるように、アーキテクチャリソースが命令を対応する命令セットから実行する処理アーキテクチャにおいて用いられる、プログラム命令のシーケンスを発生させるコンパイル方法及びシステムに関する。更に、本発明は請求項14に定義されるようなコンピュータプログラムに関する。
【0002】
【従来の技術】
高パフォーマンスDSPの開発は、主に処理能力の増大を指向していた。これは、より高いプロセッサクロック速度を備えるか、又は、演算ユニットを更に加えること(すなわち並列化)によって達成できる。後者のアプローチはプログラムセクション中の複数の部分タスクの並列処理に基づき、いわゆる「超長命令語(Very Long Instruction Word)」(VLIW)プロセッサを使用することにより達成できる。VLIWの概念に基づいて幾つかの処理ユニットを同じチップ上に集積化することにより、超長命令語により制御されるパワフルな処理マシンが実現される。このような並列命令語は個々の処理ユニットに対する個々の命令を含む。このようなアプローチの困難な点は、アルゴリズムを、このアーキテクチャ上で並列に実行できる部分タスクに分割することである。これらの部分タスクが処理タイミングの厳密な考慮の下に個々の処理ユニットに分配されることにより、各ユニットにおいて一定のデューティレートが実現される。これはインテリジェントコンパイラにより形成できる、いわゆるスケジューリング動作により達成することができる。
【0003】
【発明が解決しようとする課題】
デジタル信号プロセッサ(DSP)のコードは二つのクラスに分類することができる:規則的な、計算集中型で時間クリティカルなコードと、さほど時間重視でない不規則的な管理コードとである。規則的コードはタイミング条件を満たすため通常プロセッサデータパスで可能な完全な並列性を活用しなければならない。その一方、管理コードが一般的にタイミング条件を満たすために必要なのはデータパスのサブセットのみである。
【0004】
VLIWコンパイラは操作を可能な限り並列にスケジュールすることによりデータパスで利用可能な並列性を活用することができる。しかし、不利な点として、VLIW命令のコードサイズが大きいことがある。特に、全ての命令の数の大部分(しばしば80%)を構成する管理コードに対して完全なVLIW命令セットを用いることは不利である。
【0005】
米国特許公報第5933642号で、請求項1及び12の前文で規定されたコンパイルシステム及び方法が開示されている。特に、動的に再構成できる処理ユニットについて記述されており、当該処理ユニットは、複数のハードウェアアーキテクチャの内で選択的に変更可能な内蔵ハードウェア構成を持ち、前記ハードウェアアーキテクチャのそれぞれは命令を対応する命令セットから実行する。ハードウェア構成は特定の命令セットアーキテクチャ(ISA)の実行に、専念し、最適化されている。このISAには対応する構成データセットで特定されるような独自の内蔵ハードウェア構成が実装されている。与えられた再構成指示文の選択において、プログラム命令はその後、構成指示文が参照したビットストリームにより特定された独自の構成を介して、対応するISAに応じて実行される。コンパイラはソースコード命令ステートメントを含むソースファイルをディスク記憶装置又は他の何らかの入力装置若しくは記憶装置から読む。次に、アセンブリ言語ステートメントを作るため、コンパイラはソースコード命令ステートメントのサブセットのためのISAを識別し、識別されたISAを特定するのに適当な再構成命令を発生させ、更に、識別されたISAによる実行のための命令のサブセットをコンパイルする。しかし、このようなハードウェア構成の動的な再構成は、フィールドプログラマブルゲートアレー(FPGA)を採用しているアーキテクチャにおいてのみ可能であり、ハードウェアアーキテクチャの連続的な修正を必要とする。
【0006】
よって本発明の目的は、ハードウェアアーキテクチャの大幅な修正を必要とすることなくコード効率を増加することができるコンパイル方法及びシステムを提供することである。
【0007】
【課題を解決するための手段】
この目的は請求項1に規定されたコンパイル方法及び請求項12に規定されたコンパイルシステムによって達成される。更に、この目的は請求項14に規定されたコンピュータプログラムによって達成される。
【0008】
しかるべく、二つのビュー、つまり、完全なデータパスの一部にのみアクセスするのに使用される小型の命令セットと、時間クリティカルな並列コードに必要な完全なデータパスへのアクセスを提供する完全な命令セットとが、プロセッサリソースに提供される。これによって、リターゲッタブル性の特徴が、同一の処理アーキテクチャに対して異なった命令セットを用いた命令コードを発生させるのに用いられる。二つの命令セットの違いは、命令セットのいずれかを用いて命令コードを発生させる際の、アーキテクチャリソースについてのコンパイラのビューである。このスキームにより、二つの異なった命令セットを用いて、ソースコード命令をコンパイルするのに同一のリターゲッタブルコンパイラツールを用いることができる。
【0009】
このコード命令ステートメントはC言語ステートメントであってよい。この場合、C言語に必要な機能ユニットのみが制御可能でありさえすればよい。この結果、機能ユニットクラスタのための演算コードビット(opcode bits)が節約できる。更に、処理アーキテクチャはVLIW DSPアーキテクチャであってよい。VLIW命令フォーマットが複数の交付スロットの連結で構成されていることにより、小型の命令セットと第一命令セットとの間で単純な変換が達成できる。
【0010】
本発明の好適な開発例によれば、第二の種類の命令ステートメントは完全なプロセッサ並列性を使用する必要のないコードであってよく、第一の種類の命令ステートメントは並列コードであってよい。よって、時間クリティカルな並列コードと管理コードとの間で変更があるたびに二つの命令セットの間でスイッチングが行われることが可能である。コンパイラは、小さい方の命令セットのコードサイズの利点を活用し、大きい方の命令セットのパフォーマンスの利点を活用するために、これらの二つの命令セットを取り扱う。
【0011】
他の好適な開発例によれば、アーキテクチャリソースのサブセットは処理アーキテクチャの全体のデータパスの一部と対応する。特に、全体のデータパスの一部は処理アーキテクチャの機能ユニットクラスタを唯一つ有することができる。この場合、第二のすなわち小型の命令セットのVLIWフォーマットへの単純な復号は、単に、小型の命令の命令ビットを対応する機能ユニットの交付スロット(issue slot)にコピーすることによって達成することができる。
【0012】
他の好適な開発例によれば、コンパイルのステップは第一の種類の命令ステートメントに対して第一マシン記述ファイルを使用すること及び第二の種類の命令ステートメントに対して第二マシン記述ファイルを使用することによって実行され、ここで、前記第二マシン記述ファイルはアーキテクチャリソースのサブセットの可能な操作を規定する。小型の命令セットは完全な命令セットが見るデータパスのサブセットだけをビューすることから、これを追加のマシン記述ファイルで表現することは単純である。この結果、二つの異なるマシン記述ファイルを使用するアーキテクチャの二つのビューのためのアセンブリコードを発生するのに単一のリターゲッタブルコンパイラが使用できる。
【0013】
他の更に好適な開発例によれば、小型の命令セットを用いることにより発生したプログラム命令は、小型の命令の命令ビットを第二命令セットのフォーマットの交付スロットの対応する位置にコピーし、他の交付スロットをこれらの交付スロットは使用されていないことを示すビット値で満たすことによりコンパイルのステップの後第二命令セットのフォーマットに復号される。これにより、小型の命令を第一命令セットのフォーマットに復号するための単純な復号操作が達成可能である。好適には、第一命令セットはVLIW命令セットであってよい。
【0014】
他の更に好適な開発例によれば、小型の命令セットは、操作の結果がオペランドの一つがフェッチされてきたのと同一のレジスタ位置に書き返されるように適用される。この「破壊的」レジスタオペランドの使用は、多くの命令に対して特定されなくてはならないオペランド/結果アドレスが三個でなく二個のみであるため、レジスタアドレスビットが節約されるという利点につながる。
【0015】
他の更に好適な開発例によれば、小型の命令セットは単一のレジスタファイルのレジスタサブセットのみが使用されるように適応させることができる。この結果、小型の命令に必要なレジスタアドレスビットの数は低減することができ、これにより小型の命令セットの命令幅は低減される。好適には、小型の命令セットは短い接近した(immediate)フォーマットと少なくとも制限された数のガード付き操作とを有するように適応される。これらの手段は小型の命令セットの命令幅の更なる低減につながる。
【0016】
以下で、本発明の好適な実施例を、添付の図を参照して説明する。
【0017】
【発明の実施の形態】
ここで、好適な実施例を、分割したレジスタファイル付きのデュアル命令セットVLIWプロセッサのデータパスに基づいて説明する。
【0018】
図1はDSPアーキテクチャ中のデータパスの基本ブロック図を示し、ここでは同一のデータパスのときの二つの異なったマシンビューが示されている。小型のビュー(実線)ではデータパスの小さな一部分のみ用いられ、完全なビューすなわち並行ビューでは全体のデータパス(実線及び破線)が用いられている。
【0019】
図1によれば、アーキテクチャは七つの機能ユニットクラスタUC1からUC7を有し、ここで各機能ユニットクラスタは、パラメータ化可能な数のオペランド入力ポート及び結果出力ポートを持つ少なくとも一つの機能ユニットを有する。図1では簡単のため、機能ユニットクラスタUC1からUC7のそれぞれに対して二つのオペランド入力ポートと一つの結果出力ポートとが示されている。どの機能ユニットにも操作タイプのセットを関連付けることができる。このセットは機能ユニットが実行できる特定の操作を表す。機能ユニットクラスタ及び機能ユニットに与えられる命令又は演算コードを介して、操作タイプセットから操作を選択することができる。オペランドサンプリング時間が異なる操作及び、結果作成時間が異なる操作は、機能ユニット入力/出力ポートを共有することができ、よって機能ユニットクラスタ入力/出力ポートも共有することができる。ポートのこの共有により起こり得るリソース衝突はコンパイラによって解決される必要がある。従ってコンパイラ中では、どの操作タイプについても、時間に対する異なったリソースの使用が表される一つ以上のリソース使用パターンが関連付けられる。コンパイラは衝突のない操作スケジュールを構成するためこれらのパターンを考慮に入れる。コンパイラから見た場合、操作タイプが同一の機能ユニットに属するか属さないかということは関係ない。図1では、第一機能ユニットクラスタUC1は演算操作及び論理操作を行うための第一演算論理ユニットALU1と、ロード操作及び記憶操作を行うための第一ロード/記憶ユニットL/S1と、分岐操作を行うのに必要な第一分岐ユニットBU1と、乗算操作を行う乗算ユニットMUL1とを有する。第二機能ユニットクラスタUC2は三つの機能ユニット、つまり、第二演算論理ユニットALU2と、第一シフトユニットSHU1と、第二分岐ユニットBU2とを有する。更に、第三機能ユニットクラスタUC3は三つの機能ユニット、つまり、第三演算論理ユニットALU3と、第二ロード/記憶ユニットL/S2と、第三分岐ユニットBU3とを有し、第四機能ユニットクラスタUC4は二つの機能ユニット、つまり、第四演算論理ユニットALU4と第二シフトユニットSHU2とを有し、第五機能ユニットクラスタUC5は一つの機能ユニット、つまり、DSPアルゴリズムのフィルタ操作を行うための第一フィルタセクションFIL1を有し、第六機能ユニットクラスタUC6は二つの機能ユニット、つまり、第二フィルタセクションFIL2ともう一つの分岐ユニットBUTとを有し、更に、第七機能ユニットクラスタUC7は一つの機能ユニット、つまり、特別な種類のフィルタとしてバイクワッドフィルタをサポートするバイクワッドユニットBiQを有する。
【0020】
各機能ユニットクラスタは、プロセッサコアの操作交付スロットに対応し、パラメータ化可能な数の機能ユニットを含む。各サイクルにおいて、多くとも一つの操作をクラスタ中の機能ユニットの一つにおいて開始することができる。機能ユニットで操作が開始されると、その機能ユニットは入力ポートからその操作のためのオペランドをサンプルする。ハードウェアの複雑性を低減するため、機能ユニットクラスタ中の全ての機能ユニットは入力ポートを共有すると考える。入力ポートで衝突が起きない限り機能ユニットクラスタで新しい操作を開始することができる。もし機能ユニットの出力ポートが共有されていたら、コンパイラは衝突が起こるのを防止しなくてはならず、操作の開始時間を決定するときに、起こり得る衝突を考慮に入れるべきである。代替の解決策は、クラスタの出力において結果を同時に出せるようにするということである。この場合、待ち時間の異なる機能ユニットは出力ポートを共有できず、これは、必要とされる機能ユニットクラスタ出力の数が、一回のサイクルでクラスタが出せる結果の数の最大値と等しくなければならないということを意味する。アプリケーションの要求に応じて、共有の有無の何れかがプロセッサアーキテクチャに適用できる。
【0021】
図1によれば、第一機能ユニットクラスタUC1と第二機能ユニットクラスタUC2とは第一レジスタファイルRF1を共有し、第三機能ユニットクラスタUC3と第四機能ユニットクラスタUC4とは第二レジスタファイルRF2を共有し、第五機能ユニットクラスタUC5と第六機能ユニットクラスタUC6とは第三レジスタファイルRF3を共有し、更に、第七ユニットクラスタUC7は第四レジスタファイルRF4と結合されている。レジスタファイルRF1、RF2、RF3及びRF4のそれぞれは、変数の値が保存できる多くの物理レジスタを含む。これらの物理レジスタはレジスタファイル中に静的ランダムアクセスレジスタとして構成することができる、つまり、独自の固定したレジスタインデックスにより回転レジスタとして指名された物理レジスタとして、つまり、レジスタインデックスオフセットをレジスタが所属する回転バッファのサイズのグローバルレジスタインデックスベースモジュロに加えることによりブロードキャスト(又はマルチキャスト)レジスタとして指名された物理レジスタとして、つまり、FIFO(最初に入ったものが最初に出る)レジスタとして、レジスタアドレスを他のレジスタファイル中のブロードキャストレジスタと共有する静的ランダムアクセスレジスタとして、つまり、共通レジスタインデックスにより、異なった物理レジスタから構成される全体のFIFOバッファとして指名された物理レジスタ、又はスタックレジスタとして、つまり、共通レジスタインデックスにより、異なった物理レジスタから構成される全体のスタックバッファとして指名された物理レジスタとして、構成することができる。レジスタファイルRF1、RF2、RF3及びRF4のそれぞれも、上記の構成タイプのいずれの組み合わせでも含むことができる。各レジスタファイルは書き込みポートと読み込みポートとを持ち、ここで、各書き込みポートは、ファイル中の一つ又はグループのレジスタを選択する、書き込みを可能にする入力及び書き込みレジスタインデックス入力、並びに結果データがその書き込みデータ入力を介してレジスタファイルに書き込まれる書き込みデータ入力により構成されている。
【0022】
図1によるデュアル命令セットアーキテクチャでは、二つの命令セットが使用される。コア及びコンパイラの複雑性を増加させないために、両方の命令セットはデータパスリソースを共有し、同一の基本命令復号器を使用し、更に同一のコンパイラツールを使用する。二つの命令セットの違いは、命令セットのいずれかを使用してコードを発生させるときにアーキテクチャリソースに対してコンパイラが持つビューにある。このスキームにより、二つの異なった命令セットを用いてコードをコンパイルするのに同一のリターゲッタブルコンパイラツールが使用できる。特に、完全なプロセッサ並列性を必要としないコード、例えば管理コードに対しては、実線のブロックにより示される、完全なデータパスの一部にのみアクセスするようにされた小型の命令セットが使用される。これは第一機能ユニットクラスタUC1、特に機能ユニットALU1、L/S1及びBU1のみであり、レジスタファイルのRF1’の部分は小型の命令セット、つまり管理コードによって見ること又は使用が可能である。他の命令セットは時間クリティカルな並列コードにとって完全な命令セットであり、ここで全ての機能ユニット及びレジスタファイルは時間クリティカルな並列コードにより見られる又は使用される。極端な場合、時間クリティカルなコードと管理コードとの間でスイッチが起こる度にこれらの二つの命令セットの間で細やかな(fine-grained levelでの)スイッチングが必要である。実際上は、このようなレベルのスイッチングは機能レベルであり得る、つまり、基本ブロック又は決定ツリーレベルであり得る。コンパイラコードの、再利用、マーケットに出るまでの時間の短縮、及びより良い保全性のためには単一のコンパイラが望ましい。このような単一のコンパイラは、小型の命令セットのコードサイズの利点と大きい命令セットのパフォーマンスの利点とを活用するためこれらの二つの命令セットを使用できるように都合される。よって、好適な実施例によれば、リターゲッタブル性の特徴は、同一のプロセッサアーキテクチャの異なった命令セットを用いたアセンブリコードを発生させるのに使用される。
【0023】
図2は好適な実施例によるリターゲッタブルコンパイラの基本ブロック図を示す。プロセッサアーキテクチャは、 パラメータ化可能な数の機能ユニットクラスタ、クラスタ毎の機能ユニット、バス、レジスタファイル及びレジスタファイル構成のテンプレートとして都合される。これらのパラメータに効率的に対処できるためには、 ハードウェア説明はパラメータ化可能でなくてはならず、且つ、ソフトウェア開発環境はリターゲッタブルでなくてはならない。ハードウェアアーキテクチャとソフトウェア開発ツールとの間の橋として, 完全なデータパス及び低減されたデータパスのために第一マシン記述ファイル51及び第二マシン記述ファイル52 がそれぞれ提供される。これらのファイルは考慮されているアーキテクチャ例についての情報を含む。第一マシン記述ファイル51及び第二マシン記述ファイル52は、バス、ポートその他をモデル化することが可能な、リソースの抽象的な概念によるカスタム操作のリソース使用を特定する。
【0024】
図2によれば、コンパイラは入力高級言語(例えばC/C++ プログラム)を中間フォーマットに翻訳するコアコンパイラ1を有する。コアコンパイラはスキャナ、パーサ及びセマンティックチェッカを含む前端から構成される。更に、コアコンパイラ1は多くの最適化アルゴリズム及びコード選択器を実施する。コアコンパイラの最適化はターゲットアーキテクチャに多くの部分影響されない。これらはループ展開、機能インライン、エイリアス解析、定数畳み込み、定数伝播、共通部分式消去及びグローバルコード運動を有することができる。コアコンパイラ1はあまり規則的でない管理コードをグローバルスケジューラ 3に供給し、時間クリティカルな規則的な、ループコード又は並列コードをループスケジューラ2に供給するように都合することができる。グローバルスケジューラ3は、典型的には時間重視でなく限られた並列性を持つか又は全く並列性を持たない、あまり規則的でない管理コードをスケジュールする。管理コードはしばしば開始タスク又は制御タスク用のコードである。ループスケジューラ2 は、DSPアプリケーションで典型的に現れる時間クリティカルな規則的な、ループコード又は並列コードをスケジュールするように都合される。このコードは典型的には多くの並列性を含む。コアコンパイラ1、ループスケジューラ2及びグローバルスケジューラ 3の操作はそれぞれ第一マシン記述ファイル51及び 第二マシン記述ファイル52から得られた情報を基本に行われる。次に、アセンブリコードの最後のシーケンスがループスケジューラ2及びグローバルスケジューラ3の出力から選択器4により選択される。
【0025】
コンパイル操作中には、コアコンパイラ1は、ループコード又は並列コードが完全な命令セットを用いてコンパイルされるときは、完全なデータパスをカバーする第一マシン記述ファイル51を選択し、管理コードが小型の命令セットを用いてコンパイルされるときは、低減されたデータパスをカバーする第二マシン記述ファイル52を選択する。グローバルスケジューラ3はコアコンパイラ1の小型の出力を受信し、第二マシン記述ファイル52及び小型の命令セットに基づいて小型の操作を小型の命令にスケジュールする。第二マシン記述ファイル52のパーシングを含む初期化後、グローバルスケジューラ3は入力ファイルからの決定ツリーのパーシングを開始してそれらをスケジュールし、アセンブリ出力ファイルに結果を書き込む。
【0026】
DSP計算の周期的な特徴から、実際の信号処理が行われるDSPコード中でしばしばループが起こる。これらのループは通常規則的な形をしており時間重視と判断される。これらのDSPループはループスケジューラ2によりスケジュールされる。一般的には、DSPループは高いスループットを要求する。従って、ループスケジューラ2は第一マシン記述ファイル51及び完全な命令セットを使用することで、データパス中で完全に利用可能な並列性を活用しようとする。ループスケジューラ2はリストスケジューラがするのと同様に決定を行うかもしれないが、偽の決定の下にバックトラックする可能性がある。スケジューリング前及びスケジューリング中には、制約条件解析をキーテクニックとして用いてスケジューラのためのサーチスペースを低減することができる。制約条件解析は可能な解を排除することなくスケジューラのサーチスペースを効果的に低減させる。制約条件解析は、実行不可能な結果につながるスケジュール決定を排除する。しかし、制約条件解析が、最適なスケジュールされたDSPループを発生させるという課題に対応する唯一の方法というわけではない。DSPループをスケジュールするという課題に対応するのに、反復モジュロスケジューリング、整数線形計画法(ILP)又はヒューリスティックス(heuristics)などの他の技術を採用することができる。
【0027】
グローバルスケジューラ3も、時間クリティカルな、規則性のない又は規則性の低いコードをスケジュールすることができるということに注意する。この場合、グローバルスケジューラ3はコンパイル時間推測を行うことにより命令レベル並列性を出すことが可能である。これにより、グローバルスケジューラ3は並列スケジュールを作ることが可能である。よって、一般的に、グローバルスケジューラ3及びループスケジューラ2の両方とも第一マシン記述ファイル51及び第二マシン記述ファイル52の両方にアクセスすることが可能である。
【0028】
その次に、選択器4は正しいアセンブリコードのシーケンスを得るためにループスケジューラ2及びグローバルスケジューラ3のアセンブリ出力ファイルからそれぞれのアセンブリコードを選択する。
【0029】
よって、全ての命令セットはデータパスリソース及びコンパイラツールを共有する。完全な命令セット又は並列命令セットでは、全てのハードウェアリソースはコンパイラにより見られ、使用されることが可能である。小型の命令セットでは、第一機能ユニットクラスタUC1の機能ユニットALU1、L/S1及びBU1のみが見える。更に、第一レジスタファイルRF1のRF1’の部分のみが見える。第一レジスタファイルRF1中のスタックバッファを用い、命令セットをデータアクセスに対して少なくとも一部はスタックベースにしておくことにより追加の命令ビットを保存することができる。小型の命令セットの最低限の条件は、高級言語、例えばC/C++言語をコンパイルするのに必要な全ての操作をサポートするということである。機能ユニットALU1、L/S1及びBU1はこの最低限の条件を満たすのに十分である。
【0030】
唯一つの機能ユニットクラスタUC1しか用いられていないという事実から、並列命令セット中ではVL2IW命令(可変長VLIW命令)には命令ヘッダは必要でない。更に、第一機能ユニットクラスタUC1の機能ユニットのサブセットしか用いられていないため、機能ユニットクラスタ用に演算コードビットを節約することができる。第一レジスタファイルRF1のレジスタのサブセットのみがアドレス可能であればよいという事実から、命令コードビットの更なる低減が達成可能である。これにより小型の命令中で必要なレジスタアドレスビットの数が低減される。
【0031】
命令中で短い又はより短い中間フォーマットを用いること及び、ガード付きオペランドをアドレスするのに必要なビットが節約できるようにガード付き操作を使用しないか使用しても制限された数の操作を使用することにより、小型の命令の命令幅は更に低減できる。更に、オペランドの一つが消費されたか又はフェッチされてきたのと同一のレジスタ位置へ操作の結果がまた書き込みされることを意味する「破壊的」レジスタオペランドを使用することによりレジスタアドレスビットは節約できる。これにより、三個ではなく二個のオペランド/結果アドレスしか特定の必要がなくなる。
【0032】
小型の命令セットは機能ユニットクラスタUC1からUC7に適用されるVLIWフォーマットへの復号が簡単な方法で行われるようにデザインできる。図3は小型の命令フォーマット及び当該小型の命令フォーマットのVLIWフォーマットへの復号を示す。小型の命令フォーマットはガード付き操作をサポートしておらず、破壊的オペランドを使用する。特には、これは14ビットで構成され、その内4ビットがソースレジスタsrcをアドレスするのに使用され、4ビットが「破壊的」レジスタsrcdstをアドレスするのに使用され、6ビットが演算コードopc用に使用される。完全な命令フォーマットは、各機能ユニットクラスタがC個の交付スロットを有するVLIWフォーマットであり、その命令により使用されるべき有効な機能ユニットクラスタを示す操作有効フラグの初期フィールドである。図1に示された場合では、VLIWフォーマットは交付スロット1からCを有する。各交付スロットは、一定のTRUE値gsrcに使用される5ビットのフィールド、ソースレジスタをアドレスするのに使用される6ビットのフィールド、もう一つのソースレジスタをアドレスするのに使用される6ビットのフィールド、演算コード用に使用される7ビットのフィールド、及び宛先レジスタをアドレスするのに使用される7ビットのフィールドから成る。図3によれば、単純な復号操作は小型の命令フォーマットのソースレジスタsrcのアドレスビットをVLIWフォーマットのソースレジスタのアドレスフィールドへコピーすることと、小型の命令フォーマットの「破壊的」レジスタsrcdstのアドレスビットをVLIWフォーマットのもう一つのソースアドレスフィールド及び宛先レジスタのアドレスフィールドへコピーすることと、小型の命令フォーマットの演算コードをVLIWフォーマットの演算コードフィールドへコピーすることとにより達成できる。残りのビット位置は0のビットで満たされている。他の交付スロットが小型の命令フォーマットで使用されていないことから、それらはそれぞれの機能ユニットクラスタの無演算関数(NOP)を示すように満たされる。これはVLIWフォーマットの最初に操作有効フラグでも示されている。
【0033】
図4は好適な実施例によるリターゲッタブルコンパイラ用のコンパイル方法の原理的流れ図を示す。最初に、ステップS100で、コアコンパイラ1が高級言語のソースファイルを読み込む。高級言語の中間フォーマットへの翻訳中に、コアコンパイラ1はソースコードのタイプが管理コードか時間クリティカルな並列コードかを検知する(ステップS101)。検知されたソースコードのタイプに基づいて、コアコンパイラは第一マシン記述ファイル51を選んで完全な命令セットを用いるか、第二マシン記述ファイル52を選んで小型の命令セットを用いる(ステップS102)。選択操作に基づいて、中間フォーマットが、対応するアセンブリコードのシーケンスを発生させるループスケジューラ2又はグローバルスケジューラ3に供給される(ステップS103)。次に、アセンブリコードの最後のシーケンスが、シーケンスの順番に基づいてループスケジューラ2及びグローバルスケジューラ3から得られたアセンブリコードを結合させる選択器4から得られる。
【0034】
よって、デュアル命令セットコンセプトをサポートするのに必要なアーキテクチャ又はコンパイラの修正は小さくてよい。しかし、小型の命令セットを用いることで、操作及びレジスタを符号化するのに必要なビットはより少なくなるため、コンパイラはより小さな命令コードを発生させることができる。これにより、最適化されたアセンブリコードが発生される。本発明は好適な実施例と併せて説明したが、当業者には多くの更なる代替例、変形例及び変化例が前記の説明から明らかであろう。 特に、本発明は複数の機能ユニット又は機能ユニットクラスタを有するいかなる並列DSPアーキテクチャにも適用することができる。更に、本発明は処理リソースが特定の命令セットを規定することにより制限できるいかなる種類の処理アーキテクチャにも適用可能である。更に本発明は、本発明でカバーしたコンパイルのステップを実行するようにコンピュータを適切に適応させられるいかなるコンピュータプログラム(対応するプログラムが保存されたレコードキャリア又は通信ネットワークからダウンロードできるソフトウェアなど)でもカバーするように意図されている。
【0035】
よって、ここで説明した本発明は、添付した請求項の範囲内の全てのこのような代替例、変形例、適用例及び変化例を包含するよう意図されている。
【図面の簡単な説明】
【図1】 好適な実施例によるデュアル命令セットDSPアーキテクチャ中のデータパスを示す基本図。
【図2】 好適な実施例によるリターゲッタブルコンパイラの基本ブロック図。
【図3】 好適な実施例による小型の命令のVLIWフォーマットへの復号の例を示す図。
【図4】 好適な実施例によるリターゲッタブルコンパイラのためのコンパイル方法の原理的流れ図。

Claims (14)

  1. アーキテクチャリソースが命令を対応する命令セットから実行する処理アーキテクチャにおいて用いられる、プログラム命令のシーケンスを発生させるコンパイル方法であって、
    当該方法が、
    少なくとも第一の種類の命令ステートメントと第二の種類の命令ステートメントとを含む複数のソースコード命令ステートメントを有するソースファイルを入力するステップと、
    少なくとも第一命令セットと第二命令セットとをそれぞれ前記第一の種類の命令ステートメントと前記第二の種類の命令ステートメントとに対して選択するステップと、
    前記第一命令セットを用いて前記第一の種類の命令ステートメントをコンパイルし、前記第二命令セットを用いて前記第二の種類の命令ステートメントをコンパイルするステップとを有
    前記第一命令セット及び第二命令セットは同一の処理アーキテクチャで用いられ、
    前記第二命令セットが前記第一命令セットによりサポートされるアーキテクチャリソースのサブセットのみをサポートするようにデザインされた小型の命令セットであり、
    前記選択するステップでは、前記ソースコード命令ステートメントの種類が検出され、検出された種類に基づいて前記第一命令セットと前記第二命令セットが選択される、ことを特徴とする方法。
  2. 前記コード命令ステートメントがC言語ステートメントであることを特徴とする請求項1に記載の方法。
  3. 前記処理アーキテクチャがVLIW DSPアーキテクチャであることを特徴とする請求項1又は2に記載の方法。
  4. 前記第二命令セットが完全なプロセッサ並列性を使用する必要のないコードであり、
    前記第一命令セットが並列コードであることを特徴とする請求項1乃至3のいずれか一項に記載の方法。
  5. 前記アーキテクチャリソースの前記サブセットが前記処理アーキテクチャの全体のデータパスの一部に対応することを特徴とする請求項1乃至4のいずれか一項に記載の方法。
  6. 前記全体のデータパスの前記一部が前記処理アーキテクチャの機能ユニットクラスタを唯一つ有することを特徴とする請求項5に記載の方法。
  7. 前記コンパイルのステップが、前記第一の種類の命令ステートメントに対して第一マシン記述ファイルを使用すること及び前記第二の種類の命令ステートメントに対して第二マシン記述ファイルを使用することによって実行され、ここで、前記第二マシン記述ファイルがアーキテクチャリソースの前記サブセットの可能な操作を規定することを特徴とする請求項1乃至6のいずれか一項に記載の方法。
  8. 前記小型の命令セットを用いることにより発生したプログラム命令が、前記小型の命令の命令ビットを前記第二命令セットのフォーマットの交付スロットの対応する位置にコピーし、
    他の交付スロットをこれらの交付スロットが使用されていないことを示すビット値で満たすことにより前記コンパイルのステップの後に、前記第二命令セットのフォーマットに復号されることを特徴とする請求項1乃至7のいずれか一項に記載の方法。
  9. 前記小型の命令セットは、操作の結果がオペランドの一つがフェッチされたのと同一のレジスタ位置に書き返されることを特徴とする請求項1乃至8のいずれか一項に記載の方法。
  10. 前記小型の命令セットは、単一のレジスタファイルのレジスタのサブセットのみが使用されるようになされることを特徴とする請求項1乃至9のいずれか一項に記載の方法。
  11. 前記小型の命令セットが、短いイミディエイト(immediate)フォーマットを有しガードつき操作をサポートしていないか、又は、前記短いイミディエイトフォーマットと制限された数のみのガード付き操作とを有することを特徴とする請求項1乃至10のいずれか一項に記載の方法。
  12. アーキテクチャリソースが命令を対応する命令セットから実行する処理アーキテクチャにおいて用いられるプログラム命令のシーケンスを発生させるコンパイルシステムであって、
    当該システムが、
    少なくとも第一の種類の命令ステートメントと第二の種類の命令ステートメントとを含む複数のソースコード命令ステートメントを有するソースファイルを入力する入力装置と、
    少なくとも第一命令セットと第二命令セットとをそれぞれ前記第一の種類の命令ステートメントと前記第二の種類の命令ステートメントとに対して選択し、前記第一命令セットを用いて前記第一の種類の命令ステートメントをコンパイルし、前記第二命令セットを用いて前記第二の種類の命令ステートメントをコンパイルするための、前記入力装置から前記ソースファイルを受け取るよう結合されたコンパイラとを有
    前記第一命令セット及び第二命令セットは同一の処理アーキテクチャで用いられ、
    前記第二命令セットが前記第一命令セットによりサポートされるアーキテクチャリソースのサブセットのみをサポートするようにデザインされた小型の命令セットであり、
    前記コンパイラは、前記ソースコード命令ステートメントの種類を検出し、検出された種類に基づいて前記第一命令セットと前記第二命令セットとを選択する、ことを特徴とするシステム。
  13. 前記コンパイルシステムがVLIW DSPアーキテクチャにおいて使用されることを特徴とする請求項12に記載のシステム。
  14. コンピュータのメモリにロードできるコンピュータプログラムであって、前記コンピュータで前記コンピュータプログラムがランされたときに前記コンピュータが請求項1に記載の方法を実行するコンピュータプログラム。
JP2002533068A 2000-10-05 2001-09-20 リターゲッタブルコンパイルシステム及び方法 Expired - Fee Related JP4979875B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP00203467.6 2000-10-05
EP00203467 2000-10-05
PCT/EP2001/010859 WO2002029562A2 (en) 2000-10-05 2001-09-20 Retargetable compiling system and method

Publications (2)

Publication Number Publication Date
JP2004511043A JP2004511043A (ja) 2004-04-08
JP4979875B2 true JP4979875B2 (ja) 2012-07-18

Family

ID=8172108

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002533068A Expired - Fee Related JP4979875B2 (ja) 2000-10-05 2001-09-20 リターゲッタブルコンパイルシステム及び方法

Country Status (6)

Country Link
US (1) US6948158B2 (ja)
EP (1) EP1417576A2 (ja)
JP (1) JP4979875B2 (ja)
CN (1) CN1296823C (ja)
TW (1) TW525091B (ja)
WO (1) WO2002029562A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860321B2 (en) 2017-12-05 2020-12-08 Samsung Electronics Co., Ltd. Electronic device and method for processing instruction using the same

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2364579A (en) * 1999-11-30 2002-01-30 Sgs Thomson Microelectronics An assembler using a descriptor file that contains information descriptive of the instruction set of a target microprocessor
US6976249B1 (en) * 2001-11-12 2005-12-13 Apple Computer, Inc. Method for embedding object codes in source codes
US7100022B1 (en) * 2002-02-28 2006-08-29 Mindspeed Technologies, Inc. Area and power efficient VLIW processor with improved speed
US7120780B2 (en) * 2002-03-04 2006-10-10 International Business Machines Corporation Method of renaming registers in register file and microprocessor thereof
US7574583B2 (en) * 2002-09-24 2009-08-11 Silicon Hive B.V. Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
CN1759615B (zh) * 2003-03-12 2012-05-09 皇家飞利浦电子股份有限公司 存储互动电视节目的方法和设备
GB0315165D0 (en) * 2003-05-02 2003-08-06 Transitive Ltd Improved architecture for generating intermediate representations for program code conversion
GB2411990B (en) * 2003-05-02 2005-11-09 Transitive Ltd Improved architecture for generating intermediate representations for program code conversion
WO2005036384A2 (en) * 2003-10-14 2005-04-21 Koninklijke Philips Electronics N.V. Instruction encoding for vliw processors
TWI306215B (en) 2005-04-29 2009-02-11 Ind Tech Res Inst Method and corresponding apparatus for compiling high-level languages into specific processor architectures
US7966608B2 (en) * 2005-10-26 2011-06-21 Hewlett-Packard Development Company, L.P. Method and apparatus for providing a compiler interface
KR100662846B1 (ko) * 2005-11-09 2007-01-02 삼성전자주식회사 데이터 처리 시스템 및 데이터 처리방법
US8145888B2 (en) * 2006-09-06 2012-03-27 Silicon Hive B.V. Data processing circuit with a plurality of instruction modes, method of operating such a data circuit and scheduling method for such a data circuit
US8209662B2 (en) 2006-12-04 2012-06-26 Microsoft Corporation Application retargeting
US20080162522A1 (en) * 2006-12-29 2008-07-03 Guei-Yuan Lueh Methods and apparatuses for compaction and/or decompaction
US20080162879A1 (en) * 2006-12-29 2008-07-03 Hong Jiang Methods and apparatuses for aligning and/or executing instructions
US8561037B2 (en) * 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US7941641B1 (en) 2007-10-01 2011-05-10 Yong-Kyu Jung Retargetable instruction decoder for a computer processor
CN102074331B (zh) * 2010-12-13 2012-07-04 山东大学 一种磁饱和电抗器
US20120185670A1 (en) * 2011-01-14 2012-07-19 Toll Bret L Scalar integer instructions capable of execution with three registers
CN102184765B (zh) * 2011-02-21 2012-11-21 山东大学 一种饱和电抗器
EP2523120A1 (en) * 2011-05-12 2012-11-14 Imec Microcomputer architecture for low power efficient baseband processing
US8914615B2 (en) 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format
US9672042B2 (en) 2012-05-29 2017-06-06 Nxp Usa, Inc. Processing system and method of instruction set encoding space utilization
US8924927B2 (en) * 2012-06-01 2014-12-30 Google Inc. Representation and conversion of dynamically-typed arrays
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
KR20140122564A (ko) * 2013-04-10 2014-10-20 삼성전자주식회사 프로세서에서 레지스터의 물리 주소 산출 장치 및 방법
CN104424009B (zh) * 2013-09-06 2017-10-17 华为技术有限公司 OpenCL程序编译方法和编译器
US20150378698A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Integrated compilation modes for data flow code generation
US9715392B2 (en) * 2014-08-29 2017-07-25 Qualcomm Incorporated Multiple clustered very long instruction word processing core
TWI696948B (zh) * 2018-05-30 2020-06-21 臺灣發展軟體科技股份有限公司 編譯器最佳化方法
JP7163697B2 (ja) * 2018-09-28 2022-11-01 富士通株式会社 生成プログラム,情報処理装置及び生成方法
WO2021000638A1 (zh) * 2019-07-03 2021-01-07 上海寒武纪信息科技有限公司 深度学习算法的编译方法、装置及相关产品
CN112307431B (zh) * 2020-11-09 2023-10-27 哲库科技(上海)有限公司 一种vdsp、数据处理方法及通讯设备

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0248770A (ja) * 1988-08-10 1990-02-19 Hitachi Ltd 情報処理装置
US5933642A (en) * 1995-04-17 1999-08-03 Ricoh Corporation Compiling system and method for reconfigurable computing
KR100445542B1 (ko) * 1995-09-01 2004-11-20 필립스 일렉트로닉스 노쓰 아메리카 코포레이션 프로세서의커스텀오퍼레이션들을위한방법및장치
JP3424430B2 (ja) * 1996-03-29 2003-07-07 株式会社日立製作所 プロセッサ
EP0833246B1 (en) * 1996-09-27 2014-11-26 Texas Instruments Incorporated A method of producing a computer program
JPH10232779A (ja) * 1997-01-24 1998-09-02 Texas Instr Inc <Ti> 命令並列処理方法及び装置
JPH11119993A (ja) * 1997-10-13 1999-04-30 Matsushita Electric Ind Co Ltd 信号処理装置
US6101592A (en) * 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
US5974537A (en) * 1997-12-29 1999-10-26 Philips Electronics North America Corporation Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit
US6076154A (en) * 1998-01-16 2000-06-13 U.S. Philips Corporation VLIW processor has different functional units operating on commands of different widths
JP3264901B2 (ja) * 1998-04-01 2002-03-11 松下電器産業株式会社 コンパイル装置及びコンパイル方法
US6026479A (en) * 1998-04-22 2000-02-15 Hewlett-Packard Company Apparatus and method for efficient switching of CPU mode between regions of high instruction level parallism and low instruction level parallism in computer programs
EP0997815A3 (en) * 1998-10-29 2004-05-26 Texas Instruments Incorporated Interactive translation system and method
JP2000207223A (ja) * 1999-01-12 2000-07-28 Matsushita Electric Ind Co Ltd 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体
JP2000322259A (ja) * 1999-05-11 2000-11-24 Hitachi Ltd データ処理装置
US6640315B1 (en) * 1999-06-26 2003-10-28 Board Of Trustees Of The University Of Illinois Method and apparatus for enhancing instruction level parallelism
US6691305B1 (en) * 1999-11-10 2004-02-10 Nec Corporation Object code compression using different schemes for different instruction types
US6718539B1 (en) * 2000-12-22 2004-04-06 Lsi Logic Corporation Interrupt handling mechanism in translator from one instruction set to another

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860321B2 (en) 2017-12-05 2020-12-08 Samsung Electronics Co., Ltd. Electronic device and method for processing instruction using the same

Also Published As

Publication number Publication date
US20020042909A1 (en) 2002-04-11
CN1518693A (zh) 2004-08-04
TW525091B (en) 2003-03-21
WO2002029562A2 (en) 2002-04-11
WO2002029562A3 (en) 2004-02-26
US6948158B2 (en) 2005-09-20
EP1417576A2 (en) 2004-05-12
JP2004511043A (ja) 2004-04-08
CN1296823C (zh) 2007-01-24

Similar Documents

Publication Publication Date Title
JP4979875B2 (ja) リターゲッタブルコンパイルシステム及び方法
US6490673B1 (en) Processor, compiling apparatus, and compile program recorded on a recording medium
JP3797471B2 (ja) マルチスレッドvliwプロセッサにおける分割可能なパケットを識別するための方法および装置
JP4283131B2 (ja) プロセッサ及びコンパイル方法
US20100122105A1 (en) Reconfigurable instruction cell array
US7313671B2 (en) Processing apparatus, processing method and compiler
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
US6324639B1 (en) Instruction converting apparatus using parallel execution code
US20030200426A1 (en) System for expanded instruction encoding and method thereof
US20050257200A1 (en) Generating code for a configurable microprocessor
WO2012167933A1 (en) Tool-level and hardware-level code optimization and respective hardware modification
US20100211760A1 (en) Apparatus and method for providing instruction for heterogeneous processor
Gokhale et al. Co-synthesis to a hybrid RISC/FPGA architecture
Kessler Compiling for VLIW DSPs
Stripf et al. A compiler back-end for reconfigurable, mixed-ISA processors with clustered register files
JP3553845B2 (ja) プロセッサ、コンパイラ、コイパイル方法及び記録媒体
JP3737573B2 (ja) Vliwプロセッサ
Forsell et al. REPLICA MBTAC: multithreaded dual-mode processor
Schwarz et al. Engineering an optimized instruction set architecture for AMIDAR processors
US6704855B1 (en) Method and apparatus for reducing encoding needs and ports to shared resources in a processor
JP2006525583A (ja) 時間−静止型プロセッサにおけるゼロ−オーバヘッドのブランチング及びルーピング
Lin et al. Utilizing custom registers in application-specific instruction set processors for register spills elimination
JP4006887B2 (ja) コンパイラ、プロセッサおよび記録媒体
WO2005036384A2 (en) Instruction encoding for vliw processors
Alam et al. A Custom Code Generation Technique for ASIPs from High-level Language

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040907

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20071024

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080826

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20110419

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110819

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110826

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111122

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111216

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111226

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120126

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120201

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120202

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120418

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

Free format text: PAYMENT UNTIL: 20150427

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees