JP6488738B2 - 並列化コンパイル方法、及び、並列化コンパイラ - Google Patents
並列化コンパイル方法、及び、並列化コンパイラ Download PDFInfo
- Publication number
- JP6488738B2 JP6488738B2 JP2015021112A JP2015021112A JP6488738B2 JP 6488738 B2 JP6488738 B2 JP 6488738B2 JP 2015021112 A JP2015021112 A JP 2015021112A JP 2015021112 A JP2015021112 A JP 2015021112A JP 6488738 B2 JP6488738 B2 JP 6488738B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- conditional
- executed
- macrotasks
- parallel
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 95
- 238000012545 processing Methods 0.000 claims description 73
- 230000008569 process Effects 0.000 claims description 58
- 238000012795 verification Methods 0.000 claims description 11
- 238000000605 extraction Methods 0.000 claims description 5
- 230000003068 static effect Effects 0.000 description 21
- 238000004458 analytical method Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 18
- 230000004927 fusion Effects 0.000 description 11
- 238000005111 flow chemistry technique Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 6
- 239000000470 constituent Substances 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000004807 localization Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000010410 layer Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
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
1.自動並列化コンパイラについて
本実施形態の自動並列化コンパイラは、組込みシステム向けのシングルプロセッサシステム用のソースプログラム(逐次プログラム)から、組込みシステム向けのマルチプロセッサシステム用の並列化プログラムを生成する機能を有している。
本実施形態の自動並列化コンパイラは、以下の機能を有している。
(1)マルチグレイン並列処理
(2)コンパイル時のスタティックスケジューリングコードの挿入
(3)実行時のダイナミックスケジューリングコードの生成
(4)階層型マクロデータフローの実現
(5)マクロタスクの分割/融合,Loop distribution/interchange等の並列性抽出
(6)データローカライズによるデータ転送効率の向上
(7)コンパイラによる電力削減
1−2.自動並列化コンパイラの内部処理
自動並列化コンパイラは、Front End(FE),Middle Path(MP),Back End(BE)の3つのステージを有している。各ステージは実行形態として独立しており、FE,MPから生成される中間言語によりコード授受が行われる。
また、BEは、MPが生成した並列化中間言語を読み込んで実際のマシンコードを生成する部位である。当該部位は、ターゲットとなっているマルチコアアーキテクチャのアセンブラコードを生成するBEの他、OpenMP用の並列化FortranコードやCコードを生成するBEを有している。さらには、当該部位は、後述する並列化APIによりメモリ配置,データ転送を含めて並列化したコードを生成するBE等、多様なアーキテクチャに対応したコードを出力するBEを有している。
自動並列化コンパイラは、逐次プログラムを、基本ブロック(BB),繰り返しブロック(RB),サブルーチンブロック(SB)の3種類の粗粒度タスク(マクロタスク(MT))に分割するマクロデータフロー処理を行う。
そこで、自動並列化コンパイラでは、従来の単階層マクロデータフロー処理手法を拡張し、MT内部に対してマクロデータフロー処理を階層的に利用する階層型マクロデータフロー処理を採用している。階層的マクロデータフロー処理では、MTの階層的な定義を行い、各階層のマクロタスクに対してマクロタスク間の並列性の解析を行う。
自動並列化コンパイラは、まず、生成された各階層のマクロタスクに対して、マクロタスク間の制御依存性とデータ依存性を解析する。この解析結果は、マクロフローグラフ(MFG)として表される。
MFGは、マクロタスク間の制御依存性とデータ依存性を表すが、並列性は表していない。並列性を抽出するためには、各マクロタスクに対し、制御依存性とデータ依存性の両方を考慮した最早実行可能条件解析を行う必要がある。最早実行可能条件とは、そのMTが最も早い時点で実行可能になる条件であり、次のような実行条件から求められる。
(2)MTjの条件分岐先が確定すれば、MTjの実行が終了しなくても、MTjに制御依存するMTiは実行できる。
(MTiが制御依存するMTjがMTiに分岐する)
AND
((MTiがデータ依存するMTk(0≦k≦|N|))が終了)OR(MTkが実行されないことが決定する))
マクロタスクの最早実行可能条件は、マクロタスクグラフ(MTG)で表される。
自動並列化コンパイラでは、従来のループ並列化に加え、ループ間,サブルーチン間における粗粒度タスク間の並列性を利用する粗粒度タスク並列処理や、ステートメント間の並列性を利用する近細粒度並列処理を効果的に組み合わせたマルチグレイン並列処理(参考文献1(本多弘樹, 岩田雅彦, 笠原博徳、「Fortranプログラム粗粒度タスク間の並列性検出手法」、電子情報通信学会論文誌、1990年)参照)を実現している。
自動並列化コンパイラは、BB,RB,SB等のMT間の制御依存性とデータ依存性を表現したマクロフローグラフ(MFG)を生成し、さらに、MFGから最早実行可能条件解析により引きだしたMT間の並列性を、マクロタスクグラフ(MTG)として表現する(参考文献1,参考文献2(笠原,合田,吉田,岡本,本多、「Fortranマクロデータフロー処理のマクロタスク生成手法」、信学論、1992年、Vol.J75-D-I、No.8、pp.511-525)参照)。
<中粒度並列処理>
PGに割り当てられたMTが、DOALLループ、或いはイタレーションレベルで並列処理が可能なものであれば、そのMTには、プロセッサクラスタ内のプロセッサによって中粒度並列処理がなされる。この中粒度並列処理は、DOループイタレーション間の並列性を利用する並列処理のことであり、マルチプロセッサにおける並列処理では最も一般的なものである。
ステートメントレベルの近細粒度タスクに対する並列処理を、近細粒度並列処理という。これによって、依存の無いステートメントも並列実行が可能になり、実行時間が短縮される。
粗粒度タスク並列処理では、各階層で生成されたマクロタスクは、PGに割り当てられて実行される。どのPGにマクロタスクを割り当てるかを決定するスケジューリング手法として、下記のダイナミックスケジューリングとスタティックスケジューリングがあり、これらは、マクロタスクグラフの形状や実行時非決定性等を元に選択される。
条件分岐等の実行時不確定性が存在する場合には、ダイナミックスケジューリングによって実行時にマクロタスクをPGに割り当てる。ダイナミックスケジューリングルーチンは、マクロタスクの終了や分岐方向の決定に応じてマクロタスク実行管理テーブルを操作し、各マクロタスクの最早実行可能条件を検査する。
一方、スタティックスケジューリングは、マクロタスクグラフがデータ依存エッジのみを持つ場合に使用され、自動並列化コンパイラが、コンパイル時にPGへのマクロタスクの割り当てを決める方式である。
1−6.データローカライゼーション
自動並列化コンパイラは、プログラム全域に渡るキャッシュ最適化を行うことが可能である。自動並列化コンパイラは、ループ間などの並列性を解析した後、ループ間にデータ依存があることが分かると、依存があるループ間でのキャッシュのグローバル最適化を試みる(参考文献3(特許第4177681号公報)参照)。
(1)任意のサイズのローカルメモリ或いは分散共有メモリが与えられた時に、DMA(DTU)(参考文献4(特許第4476267号公報)参照)を用いアクセスされる前に、前記プロセッサに近接したローカル或いは分散共有メモリに事前ロードし、プログラム全域で再利用する。
1−7.並列化プログラムの生成
自動並列化コンパイラにおける並列化プログラムの生成は、自動並列化API(参考文献7(早稲田大学、「Optimally Scheduled Advanced Multiprocessor Application Program Interface」、2008年)参照)を用い、並列化C或いは並列化Fortranのような、source-to-sourceで並列化を行うことが可能である。
次に、組み込みシステム用の逐次プログラムの特徴について述べ、本実施形態の自動並列化コンパイラによる並列化手法について説明する。なお、組み込みシステムとは、例えば、車載装置であっても良いし、車載装置以外の電子装置であっても良い。また、逐次プログラムは、モデルベース設計により自動生成されたもの(一例として、MathWork社のMatlab(登録商標),Simulink(登録商標)にて自動生成されたもの)であっても良い。
自動並列化コンパイラ1は、例えば、DVD,CD−ROM,USBメモリ,メモリカード(登録商標)等の光ディスク,磁気ディスク,半導体製メモリ等として構成された記憶媒体18に記憶された状態で、ユーザに提供される(図1参照)。無論、ネットワークを経由してユーザに提供されても良い。
また、入力装置16は、キーボード、マウス等から構成され、ユーザが操作することにより、その操作に応じた信号をCPU13に出力する。
また、RAM15は読み出し、書き込み可能な揮発性メモリであり、ROM14は読み出し専用の不揮発性メモリであり、HDD12は読み出し,書き込みが可能な不揮発性メモリである。ROM14,HDD12には、CPU13が読み出して実行するプログラム等が予め記憶されている。
次に、条件付コンパイルがなされる逐次プログラムに基づき並列化プログラムを生成する自動並列化処理について、図2のフローチャートを用いて説明する。なお、条件付コンパイルにより、該逐次プログラムからは、条件コンパイルスイッチにて参照される引数の値に対応する種別の組み込みシステムに搭載されるバイナリデータが生成される。また、本処理は、PC10にて動作している自動並列化コンパイラ1がユーザからの指示に応じて開始する。
S110では、自動並列化コンパイラ1は、ソフト構造解析処理で生成されたMTGに基づきスタティックスケジューリングを行う。これにより、並列実行可能なマクロタスクの全部又は一部が異なるPGに割り当てられ(該割り当ての結果を示す情報を割当情報とする)、並列化プログラムが生成される。この時、1の条件付記述に基づく処理に対応するマクロタスクは、全て同一のPGに割り当てられる。
S125では、自動並列化コンパイラ1は、並列化プログラムの性能の検証結果に基づき、並列化プログラムの性能が一定の水準に達しているか否かを判定する。具体的には、例えば、並列実行時間が予め定められた閾値以下である場合や、低減率が予め定められた閾値以下である場合等には、並列化プログラムの性能が一定の水準に達しているとみなしても良い。この他にも、例えば、並列実行時間と低減率の双方が閾値以下である場合には、並列化プログラムの性能が一定の水準に達しているとみなしても良い。そして、肯定判定が得られた場合には(S125:Yes)、S130に処理を移行し、否定判定が得られた場合には(S125:No)、S135に移行する。
次に、逐次プログラムからMTGを生成するソフト構造解析処理について、図3のフローチャートを用いて説明する。本処理は、自動並列化処理にて実行される。
次に、本実施形態の自動並列化コンパイラ1により生成された並列化プログラムにより動作する車載装置20の構成について説明する(図4参照)。無論、自動並列化コンパイラ1は、車載装置20に限らず、同様の構成を有する様々な電子装置を動作させる並列化プログラムを生成可能である。
マルチコアプロセッサ21は、ROM21aと、RAM21bと、複数のPE21c,21d…等を有している。
また、通信部22は、車内LAN等を介して接続された他のECUと通信を行う部位である。
また、入出力ポート24は、制御対象を制御するための各種信号の送受信を行う部位である。
次に、本実施形態の自動並列化コンパイラ1により並列化プログラムを生成する処理の具体例について説明する。以下の説明において、処理A等といった記載がなされるが、これは、各種演算や代入や分岐処理や関数コール等からなる一連の処理の記述を意味する。
また、S105(ソフト構造解析処理)では、自動並列化コンパイラ1は、“処理A〜E”の各々を異なるマクロタスク(“A”〜“E”)に分割し、MTGを生成する。なお、マクロタスク“A”〜“E”は、それぞれ、“処理A〜E”に対応する。
本実施形態の自動並列化コンパイラ1は、条件付記述を全て含んだ状態の逐次プログラムに基づきスタティックスケジューリング等を行い、並列化プログラムを生成する。そして、条件コンパイルスイッチの引数に応じて条件付記述の中からコンパイルの対象外となる部分を並列化プログラムから除去し、入力情報に対応する種別の並列化プログラムを生成する。
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく、種々の形態を採り得る。
上記実施形態の説明で用いた用語と、特許請求の範囲の記載に用いた用語との対応を示す。
また、PGや、具体例におけるPE(第1,第2コア)が、プロセッサユニットの一例に相当する。
また、条件コンパイルスイッチの引数の値が、入力情報の一例に相当する。
Claims (5)
- シングルプロセッサシステムにより実行されるプログラムであって、条件付コンパイルにより入力情報に応じてコンパイル対象とするか否かが切り替えられる複数の部分から構成される一連の記述である条件付記述が含まれている逐次プログラムに記述された処理を、前記入力情報に関わらず複数のマクロタスクに分割する分割手順と(S210)、
前記マクロタスク間のデータ依存性に基づき、マルチプロセッサシステムを構成する複数のプロセッサユニットにより並列実行可能な前記マクロタスクを抽出する抽出手順と(S220)、
それぞれの前記マクロタスクをいずれかの前記プロセッサユニットに割り当てる処理であって、並列実行可能な前記マクロタスクのうちの全部又は一部を、異なる前記プロセッサユニットに割り当て、前記マルチプロセッサシステムにより実行される並列化プログラムを生成するスケジューリング手順と(S110)、を備え、
前記スケジューリング手順において、1の前記条件付記述に基づく処理に対応する複数の前記マクロタスクを、同一の前記プロセッサユニットに割り当てること、
を特徴とする並列化コンパイル方法。 - 請求項1に記載の並列化コンパイル方法において、
異なる前記プロセッサユニットに割り当て可能な複数の前記マクロタスクに対応する処理に係る前記条件付記述に関する報知を行う報知手順(S130)をさらに備えること、
を特徴とする並列化コンパイル方法。 - 請求項1又は請求項2に記載の並列化コンパイル方法において、
前記並列化プログラムの性能を検証する検証手順(S120)をさらに備えること、
を特徴とする並列化コンパイル方法。 - 請求項1から請求項3のうちのいずれか1項に記載の並列化コンパイル方法において、
前記並列化プログラムの性能を検証する検証手順(S120)と、
前記検証手順での検証結果から前記並列化プログラムの性能が一定の水準に達しない場合には、異なる前記プロセッサユニットに割り当て可能な複数の前記マクロタスクに対応する処理に係る前記条件付記述に関する報知を行う報知手順(S130)と、
をさらに備えることを特徴とする並列化コンパイル方法。 - シングルプロセッサシステムにより実行されるプログラムであって、条件付コンパイルにより入力情報に応じてコンパイル対象とするか否かが切り替えられる複数の部分から構成される一連の記述である条件付記述が含まれている逐次プログラムに記述された処理を、前記入力情報に関わらず複数のマクロタスクに分割する分割手段と(S210)、
前記マクロタスク間のデータ依存性に基づき、マルチプロセッサシステムを構成する複数のプロセッサユニットにより並列実行可能な前記マクロタスクを抽出する抽出手段と(S220)、
それぞれの前記マクロタスクをいずれかの前記プロセッサユニットに割り当てる処理であって、並列実行可能な前記マクロタスクのうちの全部又は一部を、異なる前記プロセッサユニットに割り当て、前記マルチプロセッサシステムにより実行される並列化プログラムを生成するスケジューリング手段として(S110)、コンピュータを動作させることを特徴とし、
前記スケジューリング手段は、1の前記条件付記述に基づく処理に対応する複数の前記マクロタスクを、同一の前記プロセッサユニットに割り当てること、
を特徴とする並列化コンパイラ(1)。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015021112A JP6488738B2 (ja) | 2015-02-05 | 2015-02-05 | 並列化コンパイル方法、及び、並列化コンパイラ |
DE102016201614.8A DE102016201614A1 (de) | 2015-02-05 | 2016-02-03 | Parallelisierungskompilierungsverfahren, Parallelisierungskompilierer und elektronische Vorrichtung |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015021112A JP6488738B2 (ja) | 2015-02-05 | 2015-02-05 | 並列化コンパイル方法、及び、並列化コンパイラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016143377A JP2016143377A (ja) | 2016-08-08 |
JP6488738B2 true JP6488738B2 (ja) | 2019-03-27 |
Family
ID=56498722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015021112A Active JP6488738B2 (ja) | 2015-02-05 | 2015-02-05 | 並列化コンパイル方法、及び、並列化コンパイラ |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6488738B2 (ja) |
DE (1) | DE102016201614A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7107275B2 (ja) * | 2019-04-25 | 2022-07-27 | 株式会社デンソー | 並列化方法、半導体制御装置、及び車載制御装置 |
WO2021140812A1 (ja) * | 2020-01-09 | 2021-07-15 | 日立Astemo株式会社 | 演算装置及び検査方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02245934A (ja) * | 1989-03-20 | 1990-10-01 | Fujitsu Ltd | データ処理装置 |
JPH04177681A (ja) | 1990-11-13 | 1992-06-24 | Canon Inc | テープカセット |
JP3614372B2 (ja) * | 2001-02-26 | 2005-01-26 | 三菱電機株式会社 | コンパイル方法 |
JP4728563B2 (ja) * | 2003-01-27 | 2011-07-20 | 株式会社デンソー | コード生成装置、コード生成プログラム、機能実行装置、機能実行プログラム、モデル生成装置、およびモデル生成プログラム |
JP5119590B2 (ja) * | 2005-11-10 | 2013-01-16 | 富士通セミコンダクター株式会社 | マルチプロセッサを有するプロセッサ装置用のタスク分配プログラム及びタスク分配装置 |
JP4476267B2 (ja) | 2006-10-06 | 2010-06-09 | 株式会社日立製作所 | プロセッサ及びデータ転送ユニット |
JP5224498B2 (ja) | 2007-02-28 | 2013-07-03 | 学校法人早稲田大学 | メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム |
JP5381302B2 (ja) * | 2009-05-07 | 2014-01-08 | 三菱電機株式会社 | 並列化スケジューリング装置 |
JP6018022B2 (ja) * | 2013-06-14 | 2016-11-02 | 株式会社デンソー | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 |
-
2015
- 2015-02-05 JP JP2015021112A patent/JP6488738B2/ja active Active
-
2016
- 2016-02-03 DE DE102016201614.8A patent/DE102016201614A1/de active Granted
Also Published As
Publication number | Publication date |
---|---|
JP2016143377A (ja) | 2016-08-08 |
DE102016201614A1 (de) | 2016-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6018022B2 (ja) | 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 | |
JP6427054B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
JP6319880B2 (ja) | 並列性の抽出方法及びプログラムの作成方法 | |
JP4784827B2 (ja) | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ | |
Hormati et al. | Sponge: portable stream programming on graphics engines | |
Zhong et al. | Uncovering hidden loop level parallelism in sequential applications | |
Bellens et al. | CellSs: a programming model for the Cell BE architecture | |
JP4936517B2 (ja) | ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ | |
US8683468B2 (en) | Automatic kernel migration for heterogeneous cores | |
US10430191B2 (en) | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture to enable speculative execution and avoid data corruption | |
JP6488739B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
JP6427053B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
JP2017228029A (ja) | 並列化方法、並列化ツール、車載装置 | |
JP6488738B2 (ja) | 並列化コンパイル方法、及び、並列化コンパイラ | |
JP6427055B2 (ja) | 並列化コンパイル方法、及び並列化コンパイラ | |
Mehrara et al. | Multicore compilation strategies and challenges | |
Chandraiah et al. | Code and data structure partitioning for parallel and flexible MPSoC specification using designer-controlled recoding | |
Benoit et al. | Using an intermediate representation to map workloads on heterogeneous parallel systems | |
Sura et al. | Using multiple threads to accelerate single thread performance | |
Ying | Scaling sequential code with hardware-software co-design for fine-grain speculative parallelization | |
Aiken et al. | Modulo Scheduling | |
Zhou et al. | Automatically Tuning Task-Based Programs for Multicore Processors | |
Chen et al. | A Thread Merging Transformation to Improve Throughput of Multiple Programs | |
JP2018109943A (ja) | 並列化コンパイラ、並列化コンパイル装置、及び並列プログラムの生成方法 | |
KR20130028505A (ko) | 재구성가능 프로세서, 재구성가능 프로세서의 코드 변환 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170605 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180223 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180313 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180424 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20181002 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181206 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20181214 |
|
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: 20190129 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20190211 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6488738 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |