JP6776914B2 - 並列化方法、並列化ツール - Google Patents

並列化方法、並列化ツール Download PDF

Info

Publication number
JP6776914B2
JP6776914B2 JP2017015286A JP2017015286A JP6776914B2 JP 6776914 B2 JP6776914 B2 JP 6776914B2 JP 2017015286 A JP2017015286 A JP 2017015286A JP 2017015286 A JP2017015286 A JP 2017015286A JP 6776914 B2 JP6776914 B2 JP 6776914B2
Authority
JP
Japan
Prior art keywords
parallelism
reference value
relaxation
pattern
control model
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
Application number
JP2017015286A
Other languages
English (en)
Other versions
JP2018124710A (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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2017015286A priority Critical patent/JP6776914B2/ja
Priority to DE102017220181.9A priority patent/DE102017220181A1/de
Publication of JP2018124710A publication Critical patent/JP2018124710A/ja
Application granted granted Critical
Publication of JP6776914B2 publication Critical patent/JP6776914B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/314Parallel programming languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

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

Description

本発明は、シングルコアマイコン用のプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法、並列化ツール、及び並列化方法で生成された並列プログラムを実装した車載制御装置に関する。
従来、シングルコアマイコン用のシングルプログラムから、マルチコアマイコン用の並列プログラムを生成する並列化方法の一例として特許文献1に開示された並列化コンパイル方法がある。
特開2015−1807号公報
しかしながら、並列化コンパイル方法では、シングルプログラムの並列性が低いと、並列化できる処理単位の数が少なかったり、シングルプログラムを必要なコア数に分けることができないという問題がある。
本開示は、上記問題点に鑑みなされたものであり、より多くの処理単位が並列化された並列プログラムを作成できる並列化方法、並列化ツールを提供することを目的とする。
上記目的を達成するために本開示は、
シングルコアマイコン用に記述されたプログラムの制御モデル(210)を解析して、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム(240)を生成する並列化方法であって、
制御モデルにおける構造と各処理ブロックのコスト情報とから、制御モデルの並列性を見積る見積手順(S10)と、
並列性の見積もり結果と並列性基準値とを比較して、制御モデルが並列性基準値を満たしているか否かを判定する並列性判定手順(S11)と、
制御モデルが並列性基準値を満たしていない場合に、制御モデルにおける少なくとも一部のデータ依存関係について処理順序を緩和したパターンである緩和パターンを抽出するとともに、各緩和パターンの並列性を見積る探索手順(S12〜S14)と、
緩和パターンの動作シミュレーションを実施して、制御モデルに設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求めるシミュレーション手順(S15)と、
シミュレーション手順にてシミュレーション結果が求められると、シミュレーション結果が、制御モデルに設定された性能要件の基準値であるパラメータ基準値を満たしているか否かを判定するパラメータ判定手順(S16)と、
シミュレーション結果がパラメータ基準値を満たしている緩和パターンにおける並列性の見積もり結果と並列性基準値とを比較して、並列性基準値を満たしている緩和パターンを、並列プログラムを生成するための対象パターンとして採用する決定手順(S18、S20)と、を備えていることを特徴とする。
このように、本開示は、シングルコアマイコン用に記述されたプログラムの制御モデルの段階で並列性を見積り、制御モデルが並列性基準値を満たしているか否かを判定する。これによって、本開示は、シングルコアマイコン用に記述されたプログラムではなく、プログラムの制御モデルが並列性基準値を満たしているか否かを判定できる。
また、本開示は、制御モデルが並列性基準値を満たしていない場合に、処理順序を緩和したパターンである緩和パターンを抽出する。そして、本開示は、緩和パターンに関して、制御モデルに設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求め、このシミュレーション結果が性能要件の基準値であるパラメータ基準値を満たしているか否かを判定する。これによって、本開示は、緩和パターンが、制御モデルとしての性能要件を満たしているか否かを判定できる。
さらに、本開示は、パラメータ基準値を満たしている緩和パターンの並列性を見積もり、並列性基準値を満たしている緩和パターンを、並列プログラムを生成するための対象パターンとして採用する。このため、本開示は、より多くの処理単位が並列化された並列プログラムを作成できる。言い換えると、本開示は、マルチコアマイコンの性能を十分に使える並列プログラムを生成できる。また、本開示は、パラメータ基準値と並列性基準値を満たしている緩和パターンを、並列プログラムを生成するための対象パターンとして採用するため、制御モデルとしての一定の制御性能を有しつつ、並列性が大きい制御モデルを生成できる。
本開示の他の一つは、
シングルコアマイコン用に記述されたプログラムの制御モデル(210)を解析して、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム(240)を生成する、コンピュータ(100)を含む並列化ツールであって、
制御モデルにおける構造と各処理ブロックのコスト情報とから、制御モデルの並列性を見積る見積部(S10)と、
並列性の見積もり結果と並列性基準値とを比較して、制御モデルが並列性基準値を満たしているか否かを判定する並列性判定部(S11)と、
制御モデルが並列性基準値を満たしていない場合に、制御モデルにおける少なくとも一部のデータ依存関係について処理順序を緩和したパターンである緩和パターンを抽出するとともに、各緩和パターンの並列性を見積る探索部(S12〜S14)と、
緩和パターンの動作シミュレーションを実施して、制御モデルに設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求めるシミュレーション部(S15)と、
シミュレーション部にてシミュレーション結果が求められると、シミュレーション結果が、制御モデルに設定された性能要件の基準値であるパラメータ基準値を満たしているか否かを判定するパラメータ判定部(S16)と、
シミュレーション結果がパラメータ基準値を満たしている緩和パターンにおける並列性の見積もり結果と並列性基準値とを比較して、並列性基準値を満たしている緩和パターンを、並列プログラムを生成するための対象パターンとして採用する決定部(S18、S20)と、を備えていることを特徴とする。
このように、並列化ツールでは、上記並列化方法と同様に、より多くの処理単位が並列化された並列プログラムを作成できる。これによって、本開示は、マルチコアマイコンの性能を十分に使える並列プログラムを生成できる。
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
実施形態における並列化ツールとECUの概略構成を示すブロック図である。 実施形態における並列化ツールの処理動作を示すフローチャートである。 実施形態における制御モデルを示すイメージ図である。 実施形態における依存関係解析時の各処理を示すイメージ図である。 実施形態における緩和パターンを示す表である。 実施形態における依存関係緩和後の各処理を示すイメージ図である。 実施形態における依存関係緩和後の制御モデルを示すイメージ図である。 変形例における並列化ツールの処理動作を示すフローチャートである。
以下において、図面を参照しながら、発明を実施するための形態を説明する。本実施形態では、コアが一つであるシングルコアマイコン用のシングルプログラム(ソフトウェア)における複数の処理単位から、マルチコアマイコン310用に並列化した並列化cソース240を生成するコンピュータ100を採用する。
なお、並列化cソース240は、並列プログラムに相当する。また、以下においては、並列化cソース240をcソース240と簡略化して記載する。cソース240をC言語コンパイラ250でコンパイルした後のプログラムを並列プログラムとみなすこともできる。
特に、コンピュータ100は、シングルプログラムの制御モデル210を解析して、マルチコアマイコン310用に並列化可能な処理単位を並列化した並列化cソース240を生成する。つまり、コンピュータ100は、シングルプログラムから直接並列化cソース240を生成するのではなく、シングルプログラムの制御モデル210を解析して並列化cソース240を生成する。コンピュータ100は、例えば、制御モデル210の並列性を改善した後のモデルである緩和モデル21を用いて、並列化cソース240を生成する。
このように、本実施形態は、cソース240を生成するためのコンピュータ100を含む並列化ツールを採用する。コンピュータ100は、処理部と、プログラムなどが記憶された記憶部などを備えており、処理部がプログラムを実行することで、cソース240を生成する。つまり、コンピュータ100の記憶部に記憶されたプログラムは、cソース240を生成するための手順を含んでいる。よって、コンピュータ100のプログラムは、並列化方法に相当する。また、本実施形態では、シングルプログラムの制御モデル210を解析して、マルチコアマイコン310用に並列化可能な処理単位を並列化したcソース240を生成する並列化方法を採用すると言える。さらに、本実施形態では、コンピュータ100で生成されたcソース240がC言語コンパイラ250でコンパイルされECU300に搭載されている例を採用する。ECU300は、特許請求の範囲における車載制御装置に相当する。
なお、マイコンは、プロセッサと言い換えることができる。よって、マルチコアマイコンは、マルチコアプロセッサと言い換えることができる。また、コンピュータ100の記憶部に記憶されたプログラムは、自動並列化コンパイラとも言える。
このように、cソース240を生成する背景としては、マイコンの発熱量増大や消費電力増加、クロック周波数の限界問題から、マルチコアマイコン310が主流になることなどがあげられる。そして、マルチコアマイコン310は、車載装置の分野においても適用が必要となっている。また、cソース240としては、ソフトの開発期間や開発費を抑えつつ、信頼性が高く高速に処理の実行が可能なものが求められる。
なお、本実施形態では、一例として、C言語で記述されたシングルプログラムやcソース240を採用する。しかしながら、本発明は、これに限定されない。シングルプログラムやcソース240は、C言語とは異なるプログラミング言語で記述されていてもよい。
ところで、車両のECUのプログラムの開発においては、例えば、開発者が直接ソースコードを記述せず、目的とするプログラムの機能を、より作成が簡易で視認性の良い制御モデル210という形態で記述する場合がある。開発者は、この制御モデル210に対応したプログラム開発環境がインストールされたワークステーションやパーソナルコンピュータ等を用いて、その制御モデル210にて定義された演算処理等のシミュレーションを行うとともに、制御モデル210からソースコードを自動生成できる。
このような制御モデルを記述できる開発環境として、MATLAB(登録商標)、Simulink(登録商標)等が挙げられる。つまり、制御モデル210は、ソースコードよりも記述が簡易になり、かつ人による可読性を高くする目的で定められたモデル言語仕様に基づいて作成されるプログラムの一表現形態である。
例えば、Simulinkで作成されたSimulinkモデルは、特定の処理を示すブロックと呼ばれる機能単位の組合せとして記述されている。そして、モデルを構成するブロックは、ブロック間のデータの入出力、及び、対応する処理手順の順序を示す結線により繋ぎ合わされている。なお、制御モデル210は、例えば、噴射制御をモデルで記述したものや、エンジン制御をモデルで記述したものなどが挙げられる。制御モデル210のブロックは、特許請求の範囲における処理ブロックに相当する。
ここで、コンピュータ100の構成に関して説明する。コンピュータ100は、上記のように処理部と記憶部とを備えている。コンピュータ100は、図1に示すように処理部が実行する機能を示す複数の機能ブロック11〜16、17a、17b、18を含んでいる。コンピュータ100は、記憶部に並列性基準値20が記憶されており、記憶部に緩和モデル21を記憶可能に構成されている。また、コンピュータ100は、制御モデル210、パラメータ基準値220、評価パラメータ230を取得可能に構成されている。
さらに、コンピュータ100は、表示部260と電気的に接続されている。しかしながら、コンピュータ100は、表示部260が接続されていなくてもよい。この場合、コンピュータ100は、後程説明する表示支持部18を備えていなくてもよい。
ここで、各機能ブロックに関して説明する。並列性見積部11は、制御モデル210や後程説明する緩和パターンにおける構造と各処理ブロックのコスト情報とから、制御モデル210や緩和パターンの並列性を見積る。つまり、並列性見積部11は、制御モデル210や緩和パターンの並列性を定量化する。なお、コスト情報は、各処理ブロックの処理時間とも言える。
並列性見積部11は、例えば、最悪実行パスの処理時間(Tc)と制御モデル全体の総処理時間(Ta)の比率(Ta/Tc)を並列性の指標として算出する。制御モデル内の各処理ブロックの処理時間は、既存技術により、制御モデルからCコード変換器を用いてCコードにした後に、命令セットシミュレータを用いてサイクル数を見積もる方法や、実機で実行した際の処理時間の計測値を用いる方法がある。また、各処理ブロック間の処理順序は、データアクセスの関係(例えばブロック間の信号線)を解析することで知ることができる。よって、処理順序と処理時間を考慮して最悪実行パスの処理時間を見積もることも可能である。なお、最悪実行パスは、クリティカルパス(CP)と言い換えることができる。
並列性合否判定部12は、制御モデル210や緩和パターンの並列性見積り結果と、並列性基準値20とを比較して合否判定することで、制御モデル210や緩和パターンが並列性の目標を達成しているかどうか判断する。並列性基準値20は、制御モデル210や、cソース240に求められる並列性の要求値(設計値)である。並列性基準値20は、cソース240を実装するマルチコアマイコン310のコア数に基づいて設定される。また、並列性合否判定部12は、cソース240を生成するため緩和パターンから緩和モデル21を生成する。
依存関係緩和探索部13は、制御モデル210における一部又は全てのデータ依存関係について、処理順序を緩和したパターン(組合せ)を生成する。つまり、依存関係緩和探索部13は、制御モデル210における依存関係を緩和した緩和パターンを生成する。このように、緩和パターンは、制御モデル210における一部又は全てのデータ依存関係について、処理順序を緩和したモデルである。緩和パターンは、依存関係緩和パターンとも言える。
シミュレータ14は、緩和パターンに対して、動作シミュレーションを行う。つまり、シミュレータ14は、緩和パターンの動作シミュレーションを実施して、制御モデル210に設定された性能要件を評価するための評価パラメータ230についてのシミュレーション結果を求める。評価パラメータ230は、制御モデル210に対応したパラメータであり、制御性能を評価するパラメータとも言える。また、シミュレータ14は、動作シミュレーションを実施することで、緩和パターンにおける、取得した評価パラメータ230に対応する値を算出するとも言える。なお、シミュレータ14は、動作シミュレーションを行う場合、処理順序が緩和された緩和箇所に関して、信号伝搬が一回遅れとなるようにする。
評価パラメータ合否判定部15は、シミュレーション結果とパラメータ基準値220とを比較して、緩和パターンの合否判定、すなわち、一定の制御性能を有した緩和パターンであるか否かを判定する。これによって、コンピュータ100は、一定の制御性能を有した緩和パターンのみを許可にすることもできる。
パラメータ基準値220は、制御毎の性能要件の基準値である。パラメータ基準値220は、例えば、入力に対しての応答時間や、応答後の静定値(理想値からの許容誤差範囲)など、対象の制御の要求性能に基づいて設定された設計値である。
保持部16は、緩和モデル21や緩和パターンなどを記憶部に保持する。また、保持部16は、緩和パターンのシミュレータ14によるシミュレーション結果や、緩和パターンの並列性見積部11による並列性の見積り結果などを記憶部に保持する。
並列化部17aは、緩和モデル21を並列化する。つまり、並列化部17aは、処理単位のデータ依存関係を解析して、複数の処理単位をマルチコアマイコン310の異なるコアに割り振る(言い換えると、割り付ける、配置する)。コード生成部17bは、並列化された緩和モデル21からcソース240を生成する。並列化部17aとコード生成部17bとは、周知技術であり、特開2015−1807号公報などを参照して採用することができる。
しかしながら、並列化部17a及びコード生成部17bは、緩和情報を加味してスケジューリングし、cソース240を生成する。つまり、並列化部17a及びコード生成部17bは、スケジューリング時に、各処理の処理順序(依存関係)を基に、各処理の実行順序とコア配置を決定するため、処理順序の緩和情報を読み取って反映する必要がある。緩和情報とは、緩和した依存関係を示す情報である。後程説明する例では、第1依存関係を緩和している。この場合の緩和情報は、第1依存関係を緩和したことを示す。
表示支持部18は、表示部260に対して指示信号を出力して、表示部260の表示制御を行う。コンピュータ100は、例えば、並列性基準値を満たしている複数の緩和パターンなどを表示部260に表示させる。
ここで、図2〜図7を用いて、コンピュータ100の処理動作に関して説明する。コンピュータ100は、制御モデル210を取得すると、図2のフローチャートに示す処理を行う。また、本実施形態では、一例として、図3に示す制御モデル210を採用する。よって、コンピュータ100は、図3に示す制御モデル210を取得すると図2のフローチャートに示す処理を行う。
制御モデル210は、第1入力、第1出力、第2出力、第1処理p1、第2処理p2、第3処理p3、第4処理p4を含んでいる。第1処理p1〜第4処理p4のそれぞれは、処理ブロックに相当する。
ステップS10では、並列性の見積もりを行う(見積手順、見積部)。並列性見積部11は、制御モデル210が並列性の目標を達成しているかどうか判断するために、上記のように制御モデル210の並列性を見積る。
ステップS11では、並列性が基準値以上であるか否かを判定する(並列性判定手順、並列性判定部)。並列性合否判定部12は、ステップS10で得た並列性の見積もり結果と、記憶部に記憶された並列性基準値20とを比較して、制御モデル210が並列性基準値20を満たしているか否かを判定する。つまり、並列性合否判定部12は、制御モデル210が並列性の目標を達成しているかどうか判断する。
並列性合否判定部12は、制御モデル210の並列性が並列性基準値20以上の場合、緩和パターンなどを生成することなくcソース240を生成できるとみなしてステップS20へ進む。つまり、この場合、並列性合否判定部12は、シングルプログラムの並列性が十分であり、シングルプログラムをマルチコアマイコン310のコア数に対応して並列化できるとみなす。
一方、並列性合否判定部12は、制御モデル210の並列性が並列性基準値20以上でない場合、シングルプログラムの並列性が十分でなく、シングルプログラムをマルチコアマイコン310のコア数に対応して並列化できないとみなしてステップS12へ進む。つまり、コンピュータ100は、制御モデル210が並列性基準値を満たしていない場合に、ステップS12以降の処理及び判定を行う。
ステップS12では、全依存関係をリストアップする(探索手順、探索部)。依存関係緩和探索部13は、図4に示すように、制御モデル210における処理ブロック間のデータアクセスの関係を解析することで全依存関係をリストアップする。図4に示すように、制御モデル210は、第1処理p1と第2処理p2との間に第1依存関係、第1処理p1と第3処理p3との間に第2依存関係、第3処理p3と第2処理p2との間に第3依存関係、第3処理p3と第4処理p4との間に第4依存関係がある。
ステップS13では、緩和パターンを抽出する(探索手順、探索部)。依存関係緩和探索部13は、制御モデル210における少なくとも一部のデータ依存関係について処理順序を緩和した緩和パターンを抽出する。図5に示すように、依存関係緩和探索部13は、第1パターン〜第nパターンの緩和パターンを抽出する。また、図6には、一例として、第2依存関係を緩和した第3パターンの各処理p1〜p4の関係を示している。なお、ここでは、複数の緩和パターンを抽出する例を採用する。しかしながら、本発明は、これに限定されず、一つの緩和パターンを抽出することもある。
依存関係緩和探索部13は、入力された制御モデル210内の各処理p1〜p4の処理順序が緩和、すなわち順不同化された緩和パターンを生成する。このとき、依存関係緩和探索部13は、各処理p1〜p4間の依存関係を一つずつ緩和して全パターン探索していくことで緩和パターンを抽出する。さらに、依存関係緩和探索部13は、並列性の特徴から、最悪実行パスにある依存関係に着目して緩和していくことで効率よく並列性を改善する緩和パターンを抽出することができる。なお、依存関係緩和探索部13は、緩和情報を別途持つ緩和パターンを生成することもできる。
各処理p1〜p4の処理順序とは、各処理p1〜p4間のデータ依存関係を維持するために発生する処理順序のことである。また、データ依存関係は、同じ変数に対する書込みを含むアクセス(書込み→書込み、書込み→読込み、読込み→書込み)と同意である。
ステップS14では、緩和パターンについて並列性を見積り、並列性が大きい順にソートする(探索手順、探索部)。コンピュータ100は、依存関係緩和探索部13が緩和パターンを抽出するとともに、並列性見積部11が緩和パターンの並列性を見積る。特に、並列性見積部11は、依存関係緩和探索部13が複数の緩和パターンを抽出した場合、複数の緩和パターンのそれぞれにおける並列性を見積る。
また、依存関係緩和探索部13は、並列性が大きい緩和パターンから順番にステップS16の判定を行うために、複数の緩和パターンを並列性が大きい順にソートする。しかしながら、本発明は、これに限定されず、複数の緩和パターンを並列性が大きい順にソートしなくてもよい。つまり、本発明は、ステップS14のソートを省略することもできる。この場合、コンピュータ100は、並列性の大きさに関係なく、複数の緩和パターンを順番に対称として、ステップS15以降を行う。
また、依存関係緩和探索部13は、並列性の見積もり結果と並列性基準値20とを比較して、並列性基準値20を満たしている緩和パターンのみを動作シミュレーションを実施する緩和パターンとしてもよい。例えば、依存関係緩和探索部13は、並列性基準値20を満たしていない緩和パターンを消去するなどして、ステップS15以降に対象する緩和パターンを、並列性基準値20を満たしている緩和パターンのみとする。
これによって、コンピュータ100は、ステップS15において、並列性基準値20を満たしている緩和パターンのみを対象とすることができる。よって、コンピュータ100は、全ての緩和パターンを対象としてステップS15を行う場合よりも、cソース240を生成するまでの処理を少なくできる。
ステップS15では、並列性の大きい順に各緩和パターンについて動作シミュレーションして、シミュレーション結果を算出する(シミュレーション手順、シミュレーション部)。シミュレータ14は、各緩和パターンが一定の制御性能を有した緩和パターンであるか否かを判定するために、動作シミュレーションを実施してシミュレーション結果を求める。特に、本実施形態では、並列性が大きい緩和パターンから順番に、動作シミュレーションを実施してシミュレーション結果を求める例を採用する。しかしながら、本発明は、これに限定されず、並列性の大きさに関係なく動作シミュレーションしてもよい。
ステップS16では、シミュレーション結果がパラメータ基準値以上であるか否かを判定する(パラメータ判定手順、パラメータ判定部)。評価パラメータ合否判定部15は、一定の制御性能を有した緩和パターンであるか否かを判定するため、シミュレーション結果がパラメータ基準値以上であるか否かを判定する。特に、本実施形態では、並列性が大きい緩和パターンから順番に、シミュレーション結果がパラメータ基準値以上であるか否かを判定する。しかしながら、本発明は、これに限定されず、並列性の大きさに関係なくシミュレーション結果がパラメータ基準値以上であるか否かの判定を行ってもよい。
そして、評価パラメータ合否判定部15は、シミュレーション結果がパラメータ基準値以上であると判定した場合、シミュレーション結果がパラメータ基準値を満たしているとみなしてステップS18へ進む。一方、評価パラメータ合否判定部15は、シミュレーション結果がパラメータ基準値以上でないと判定した場合、シミュレーション結果がパラメータ基準値を満たしていないとみなしてステップS17へ進む。
ステップS17では、全緩和パターンを処理したか否かを判定する(パラメータ判定手順、パラメータ判定部)。評価パラメータ合否判定部15は、ステップS13で抽出された全ての緩和パターンを対象としてステップS15、S16を行ったか否かを判定する。評価パラメータ合否判定部15は、全ての緩和パターンを対象としてステップS15、S16を行ったと判定した場合はステップS18へ進み、ステップS15、S16を行っていない緩和パターンがあると判定した場合はステップS15へ戻る。
ステップS18では、並列性が基準値以上であるか否かを判定する(決定手順、決定部)。並列性合否判定部12は、ステップS11と同様に、ステップS14で得た並列性の見積もり結果と、記憶部に記憶された並列性基準値20とを比較して、緩和パターンが並列性基準値20を満たしているか否かを判定する。ここでは、並列性合否判定部12は、制御モデル210ではなく、緩和パターンを対象として、並列性の見積もり結果と並列性基準値とを比較する。
並列性合否判定部12は、緩和パターンの並列性が並列性基準値20以上と判定した場合、cソース240を生成できるとみなしてステップS20へ進む。一方、並列性合否判定部12は、制御モデル210の並列性が並列性基準値20以上でないと判定した場合、シングルプログラムをマルチコアマイコン310のコア数に対応して並列化できないとみなしてステップS19へ進む。
ところで、ステップS14にて並列性基準値20を満たしている緩和パターンのみを動作シミュレーションを実施する緩和パターンとした場合、ステップS18では、全ての緩和パターンの並列性が並列性基準値20を満たすことになる。このため、並列性合否判定部12は、最初にステップS16でYES判定となった緩和パターンが対象の場合に、ステップS18でYES判定することになる。
ステップS20では、並列性基準OK判定する(決定手順、決定部)。つまり、並列性合否判定部12は、シミュレーション結果がパラメータ基準値を満たしており、且つ、並列性の見積もり結果が並列性基準値を満たしている緩和パターンを、cソース240を生成するための対象パターンとして採用する。本実施形態では、図6に示す、第3パターンを対象パターンとして採用する。なお、並列性合否判定部12は、例えば、ステップS18で最初にYES判定となった緩和パターンを対象パターンとして採用してもよい。
そして、並列性合否判定部12は、図7に示すように、対象パターンから緩和モデル21を生成する。このとき、並列性合否判定部12は、依存関係を緩和している箇所に、一回遅れバッファpdを追加して、緩和モデル21を生成する。本実施形態では、第2依存関係を緩和しているので、第1処理p1と第3処理p3との間に、一回遅れバッファpdを追加している。一回遅れバッファpdは、信号伝搬が一回遅れとなるようにするための処理である。なお、緩和モデル21は、緩和パターンに基づいて生成されたモデルであるため、制御モデル210の並列性を改善させたモデルとも言える。
なお、本実施形態では、並列性合否判定部12が緩和モデル21を生成する例を採用している。しかしながら、本発明は、これに限定されず、コンピュータ100が対象パターンから緩和モデル21を生成する手順(機能)を備えていればよい。
そして、並列化部17aは、緩和モデル21を並列化する。そして、コード生成部17bは、並列化された緩和モデル21からcソース240を生成する。つまり、コンピュータ100は、対象パターンからcソース240を生成する(生成手順、生成部)。
このように、コンピュータ100は、まず、並列性が最も大きい緩和パターンを対象としてステップS15、S16を行う。その後、コンピュータ100は、並列性が最も大きい緩和パターンを対象としたステップS16でYES判定であった場合、ステップS18へ進む。そして、コンピュータ100は、ステップS18でYES判定であった場合、並列性が最も大きい緩和パターンを並列性基準がOKであると判定する、すなわち対象パターンとする。
しかしながら、コンピュータ100は、並列性が最も大きい緩和パターンを対象としたステップS16でNO判定であった場合、次に並列性が大きい緩和パターンを対象として、S15、S16を行う。そして、コンピュータ100は、ステップS16でYES判定となるか、全ての緩和パターンを対象としてステップS15、S16を行うまで同様の処理を行う。
これによって、コンピュータ100は、制御モデルとしての一定の制御性能を有した、最も並列性が大きい緩和パターンを、cソース240を生成するための対象パターンとして採用することができる。また、コンピュータ100は、動作シミュレーション、パラメータ基準値を満たしているか否かの判定、並列性の見積り、並列性基準値との比較を、並列性が大きい緩和パターンから順番に行なう。このため、コンピュータ100は、これらを並列性の見積り結果に関係なく行う場合よりも、cソース240を生成するための対象パターンを決定するまでの処理を少なくできる。
なお、ステップS13で抽出された複数の緩和パターンは、いずれも、一定の制御性能を有していないこともありうる。よって、ステップS16では、全ての緩和パターンのシミュレーション結果がパラメータ基準値以上とならずNO判定となる。このような場合は、コンピュータ100は、パラメータ基準値を満たしていない緩和パターンのうち、並列性の見積もり結果が並列性基準値を満たしている緩和パターンを対象パターンとして採用してもよい(決定手順、決定部)。
この場合、パラメータ基準値の緩和検討をすることになる。もし、パラメータ基準値の緩和が可能であれば、上述の結果を採用することができる。または、パラメータ基準値を見直し、緩和された新たなパラメータ基準値を用いて、再度一連の手順をやり直してもよい。並列性合否判定部12は、ステップS18において、ステップS14で得た並列性の見積もり結果と、記憶部に記憶された並列性基準値20とを比較して、緩和パターンが並列性基準値20を満たしているか否かを判定する。ここでは、並列性合否判定部12は、ステップS16でシミュレーション結果がパラメータ基準値を満たしていない緩和パターンを対象として、並列性の見積もり結果と並列性基準値とを比較する。そして、並列性合否判定部12は、緩和パターンの並列性が並列性基準値20以上と判定した場合はステップS20へ進む。一方、並列性合否判定部12は、制御モデル210の並列性が並列性基準値20以上でないと判定した場合はステップS19へ進む。また、逆に並列性基準値を緩和する場合も同様である。
ステップS19では、並列性基準NG判定する。つまり、並列性合否判定部12は、シミュレーション結果がパラメータ基準値を満たしており、且つ、並列性の見積もり結果が並列性基準値を満たしている緩和パターンがなかったと判定する。
ECU300は、複数のコアを有するマルチコアマイコン310と、マルチコアマイコン310用に並列化可能な処理単位が並列化されたcソース240と、を備えている。つまり、ECU300は、上記のように生成されたcソース240を備えている。また、ECU300は、記憶媒体としてのROM320を備えており、ROM320にcソース240が記憶されている。マルチコアマイコン310は、各コアがcソース240を実行する。
なお、cソース240は、C言語コンパイラ250でコンパイルされ、マルチコアマイコン310が実行可能な状態、例えば実行ファイルの状態でECU300に搭載されている。よって、各コアは、cソース240がコンパイルされた状態の実行ファイルを実行することになる。
ECU300は、外部機器400と電気的に接続されており、外部機器400から出力された信号を取得可能に構成されている。また、ECU300は、外部機器400からの信号を取得し、マルチコアマイコン310の各コアがcソース240を実行することで、外部機器400に対して制御信号などを出力する。
以上のように、コンピュータ100は、シングルプログラムの制御モデル210の段階で並列性を見積り、制御モデル210が並列性基準値を満たしているか否かを判定する。これによって、コンピュータ100は、シングルプログラムではなく、シングルプログラムの制御モデル210が並列性基準値を満たしているか否かを判定できる。
また、コンピュータ100は、制御モデル210が並列性基準値を満たしていない場合に、処理順序を緩和したパターンである緩和パターンを抽出する。そして、コンピュータ100は、緩和パターンに関して、制御モデル210に設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求め、このシミュレーション結果がパラメータ基準値を満たしているか否かを判定する。これによって、コンピュータ100は、緩和パターンが、制御モデル210としての性能要件を満たしているか否かを判定できる。
さらに、コンピュータ100は、シミュレーション結果がパラメータ基準値を満たしており、且つ、並列性の見積もり結果が並列性基準値を満たしている緩和パターンを、cソース240を生成するための対象パターンとして採用する。このため、コンピュータ100は、より多くの処理単位が並列化されたcソース240を作成できる。言い換えると、本開示は、マルチコアマイコン310の性能を十分に使えるcソース240を生成できる。また、コンピュータ100は、パラメータ基準値を満たしている緩和パターンを対象パターンとして採用するため、制御モデル210としての一定の制御性能を有しつつ、並列性が大きい緩和モデルを生成できる。
なお、緩和モデル21を生成するまでの処理(手順)は、制御モデルの改善方法とも言える。そして、機能ブロック11〜15は、制御モデルの改善ツールとも言える。よって、制御モデルの改善方法は、制御モデルから、シミュレーション結果がパラメータ基準値を満たしており、且つ、並列性の見積もり結果が並列性基準値を満たしている緩和モデル21を生成できる。同様に、改善ツールは、制御モデルから、シミュレーション結果がパラメータ基準値を満たしており、且つ、並列性の見積もり結果が並列性基準値を満たしている緩和モデル21を生成できる。
ここで、図8を用いて、変形例のコンピュータ100に関して説明する。変形例のコンピュータ100は、上記実施形態のコンピュータ100と同様の構成を有している。このため、変形例では、上記実施形態と同じ符号を用いる。また、変形例のコンピュータ100の処理において、上記実施形態のコンピュータ100と同じ処理には、同じステップ番号を採用して説明を省略する。つまり、図8において、図2と同じステップ番号の処理は、図2の説明を参照できる。
ステップS21では、並列性基準値を満たしている緩和パターンを表示する(第1表示手順、第1表示部)。表示支持部18は、ステップS18において、並列性基準値を満たしている緩和パターンが複数あった場合、並列性基準値を満たしている複数の緩和パターンを表示部260に表示させる。この場合、並列性合否判定部12は、ステップS18で最初にYES判定となった緩和パターンを対象パターンとするのではなく、ステップS18で並列性基準値を満たした複数の緩和パターンを記憶部に記憶させる。そして、表示支持部18は、表示部260に対して指示信号を出力して、記憶部に記憶された複数の緩和パターンを表示部260に表示させる。
これによって、コンピュータ100は、複数の緩和パターンのうち対象パターンとする緩和パターンを、ユーザに選択させることができる。なお、コンピュータ100は、表示部260に複数の緩和パターンが表示された状態で、ユーザからの緩和パターンの選択指示を取得可能に構成を有することで、容易に対象パターンを選択することができる。
また、表示支持部18は、複数の緩和パターンを表示部260に表示させる際に、各緩和パターンのシミュレーション結果と並列性の見積もり結果を表示させてもよい。これによって、コンピュータ100は、ユーザが対称パターンを選択する際に考慮する情報量を増やすことができる。このため、コンピュータ100は、ユーザが対称パターンとする緩和パターンを選択しやすくすることができる。
ステップS22では、ステップS18において、並列性基準値を満たしている緩和パターンがなかった場合、並列性基準値を満たしていない緩和パターンを表示する(第2表示手順、第2表示部)。詳述すると、表示支持部18は、並列性基準値を満たしていない緩和パターンと、この緩和パターンにおけるシミュレーション結果と並列性の見積もり結果とを表示部260に表示させる。また、表示支持部18は、複数の緩和パターンの全てが並列性基準値を満たしていなかった場合、複数の緩和パターンと、これらの緩和パターンにおけるシミュレーション結果と並列性の見積もり結果とを表示部260に表示させることになる。これによって、コンピュータ100は、緩和パターンが並列性基準値を満たしていないことをユーザに知らせることができる。
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
10…制御モデル改善部、11…並列性見積部、12…並列性合否判定部、13…依存関係緩和探索部、14…シミュレータ、15…評価パラメータ合否判定部、16…保持部、17a…並列化部、17b…コード生成部、20…並列性基準値、100…コンピュータ、210…制御モデル、220…パラメータ基準値、230…評価パラメータ、240…並列化cソース、250…C言語コンパイラ、260…表示部、300…ECU、310…マルチコアマイコン、320…ROM、400…外部機器

Claims (14)

  1. シングルコアマイコン用に記述されたプログラムの制御モデル(210)を解析して、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム(240)を生成する並列化方法であって、
    前記制御モデルにおける構造と各処理ブロックのコスト情報とから、前記制御モデルの並列性を見積る見積手順(S10)と、
    前記並列性の見積もり結果と並列性基準値とを比較して、前記制御モデルが前記並列性基準値を満たしているか否かを判定する並列性判定手順(S11)と、
    前記制御モデルが前記並列性基準値を満たしていない場合に、前記制御モデルにおける少なくとも一部のデータ依存関係について処理順序を緩和したパターンである緩和パターンを抽出するとともに、各緩和パターンの前記並列性を見積る探索手順(S12〜S14)と、
    前記緩和パターンの動作シミュレーションを実施して、前記制御モデルに設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求めるシミュレーション手順(S15)と、
    前記シミュレーション手順にて前記シミュレーション結果が求められると、前記シミュレーション結果が、前記制御モデルに設定された性能要件の基準値であるパラメータ基準値を満たしているか否かを判定するパラメータ判定手順(S16)と、
    前記シミュレーション結果が前記パラメータ基準値を満たしている前記緩和パターンにおける前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを、前記並列プログラムを生成するための対象パターンとして採用する決定手順(S18、S20)と、を備えている並列化方法。
  2. 前記探索手順は、複数の前記緩和パターンを抽出した場合、複数の前記緩和パターンのそれぞれにおける前記並列性を見積り、
    前記シミュレーション手順は、前記探索手順にて見積られた前記並列性が大きい前記緩和パターンから順番に、前記動作シミュレーションを実施して前記シミュレーション結果を求め、
    前記パラメータ判定手順は、前記並列性が大きい前記緩和パターンから順番に、前記シミュレーション結果が前記パラメータ基準値を満たしているか否かを判定し、
    前記決定手順は、前記並列性が大きい前記緩和パターンから順番に、前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを前記対象パターンとして採用する請求項1に記載の並列化方法。
  3. 前記探索手順は、複数の前記緩和パターンを抽出した場合、複数の前記緩和パターンのそれぞれにおける前記並列性を見積り、前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンのみを前記動作シミュレーションを実施する前記緩和パターンとする請求項2に記載の並列化方法。
  4. 前記決定手順による比較結果において、前記並列性基準値を満たしている前記緩和パターンが複数あった場合、前記並列性基準値を満たしている複数の前記緩和パターンを表示する第1表示手順(S21)を備えている請求項2又は3に記載の並列化方法。
  5. 前記決定手順は、前記シミュレーション結果が前記パラメータ基準値を満たしている前記緩和パターンがなかった場合、前記パラメータ基準値を満たしていない前記緩和パターンにおける前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを前記対象パターンとして採用する請求項1乃至4のいずれか一項に記載の並列化方法。
  6. 少なくとも前記決定手順による比較結果において前記並列性基準値を満たしている前記緩和パターンがなかった場合、前記緩和パターンと、前記緩和パターンにおける前記シミュレーション結果と前記並列性の見積もり結果とを表示する第2表示手順(S22)を備えている請求項1乃至5のいずれか一項に記載の並列化方法。
  7. 前記決定手順で採用された前記対象パターンから前記並列プログラムを生成する生成手順を備えている請求項1乃至6のいずれか一項に記載の並列化方法。
  8. シングルコアマイコン用に記述されたプログラムの制御モデル(210)を解析して、マルチコアマイコン用に並列化可能な処理単位を並列化した並列プログラム(240)を生成する、コンピュータ(100)を含む並列化ツールであって、
    前記制御モデルにおける構造と各処理ブロックのコスト情報とから、前記制御モデルの並列性を見積る見積部(S10)と、
    前記並列性の見積もり結果と並列性基準値とを比較して、前記制御モデルが前記並列性基準値を満たしているか否かを判定する並列性判定部(S11)と、
    前記制御モデルが前記並列性基準値を満たしていない場合に、前記制御モデルにおける少なくとも一部のデータ依存関係について処理順序を緩和したパターンである緩和パターンを抽出するとともに、各緩和パターンの前記並列性を見積る探索部(S12〜S14)と、
    前記緩和パターンの動作シミュレーションを実施して、前記制御モデルに設定された性能要件を評価するための評価パラメータについてのシミュレーション結果を求めるシミュレーション部(S15)と、
    前記シミュレーション部にて前記シミュレーション結果が求められると、前記シミュレーション結果が、前記制御モデルに設定された性能要件の基準値であるパラメータ基準値を満たしているか否かを判定するパラメータ判定部(S16)と、
    前記シミュレーション結果が前記パラメータ基準値を満たしている前記緩和パターンにおける前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを、前記並列プログラムを生成するための対象パターンとして採用する決定部(S18、S20)と、を備えている並列化ツール。
  9. 前記探索部は、複数の前記緩和パターンを抽出した場合、複数の前記緩和パターンのそれぞれにおける前記並列性を見積り、
    前記シミュレーション部は、前記探索部にて見積られた前記並列性が大きい前記緩和パターンから順番に、前記動作シミュレーションを実施して前記シミュレーション結果を求め、
    前記パラメータ判定部は、前記並列性が大きい前記緩和パターンから順番に、前記シミュレーション結果が前記パラメータ基準値を満たしているか否かを判定し、
    前記決定部は、前記並列性が大きい前記緩和パターンから順番に、前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを前記対象パターンとして採用する請求項8に記載の並列化ツール。
  10. 前記探索部は、複数の前記緩和パターンを抽出した場合、複数の前記緩和パターンのそれぞれにおける前記並列性を見積り、前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンのみを前記動作シミュレーションを実施する前記緩和パターンとする請求項9に記載の並列化ツール。
  11. 前記決定部による比較結果において、前記並列性基準値を満たしている前記緩和パターンが複数あった場合、前記並列性基準値を満たしている複数の前記緩和パターンを表示する第1表示部(S21)を備えている請求項9又は10に記載の並列化ツール。
  12. 前記決定部は、前記シミュレーション結果が前記パラメータ基準値を満たしている前記緩和パターンがなかった場合、前記パラメータ基準値を満たしていない前記緩和パターンにおける前記並列性の見積もり結果と前記並列性基準値とを比較して、前記並列性基準値を満たしている前記緩和パターンを前記対象パターンとして採用する請求項8乃至11のいずれか一項に記載の並列化ツール。
  13. 少なくとも前記決定部による比較結果において前記並列性基準値を満たしている前記緩和パターンがなかった場合、前記緩和パターンと、前記緩和パターンにおける前記シミュレーション結果と前記並列性の見積もり結果とを表示する第2表示部(S22)を備えている請求項8乃至12のいずれか一項に記載の並列化ツール。
  14. 前記決定部で採用された前記対象パターンから前記並列プログラムを生成する生成部を備えている請求項8乃至13のいずれか一項に記載の並列化ツール
JP2017015286A 2017-01-31 2017-01-31 並列化方法、並列化ツール Active JP6776914B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017015286A JP6776914B2 (ja) 2017-01-31 2017-01-31 並列化方法、並列化ツール
DE102017220181.9A DE102017220181A1 (de) 2017-01-31 2017-11-13 Parallelisierungsverfahren, Parallelisierungstool und fahrzeuginterne Steuervorrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017015286A JP6776914B2 (ja) 2017-01-31 2017-01-31 並列化方法、並列化ツール

Publications (2)

Publication Number Publication Date
JP2018124710A JP2018124710A (ja) 2018-08-09
JP6776914B2 true JP6776914B2 (ja) 2020-10-28

Family

ID=62843038

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017015286A Active JP6776914B2 (ja) 2017-01-31 2017-01-31 並列化方法、並列化ツール

Country Status (2)

Country Link
JP (1) JP6776914B2 (ja)
DE (1) DE102017220181A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7318485B2 (ja) * 2019-10-25 2023-08-01 株式会社デンソー 自動コード生成方法、コードプログラム、電子制御装置、自動コード生成プログラム、及び自動コード生成装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6018022B2 (ja) 2013-06-14 2016-11-02 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Also Published As

Publication number Publication date
DE102017220181A1 (de) 2018-08-02
JP2018124710A (ja) 2018-08-09

Similar Documents

Publication Publication Date Title
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
Melani et al. Schedulability analysis of conditional parallel task graphs in multicore systems
US9081586B2 (en) Systems and methods for customizing optimization/transformation/ processing strategies
US7761272B1 (en) Method and apparatus for processing a dataflow description of a digital processing system
US9152389B2 (en) Trace generating unit, system, and program of the same
TWI507990B (zh) 多核心指令集模擬之高平行化同步方法
US20110239201A1 (en) Method and system for parallelization of sequencial computer program codes
EP2924559A2 (en) Program, compiler method, and compiler apparatus
US11636122B2 (en) Method and apparatus for data mining from core traces
Garcia et al. The kremlin oracle for sequential code parallelization
Bobrek et al. Stochastic contention level simulation for single-chip heterogeneous multiprocessors
JP6776914B2 (ja) 並列化方法、並列化ツール
Ferdinand et al. Static memory and timing analysis of embedded systems code
US10761820B2 (en) Assisting parallelization of a computer program
KR20150040663A (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
Sari et al. A Highly Scalable Instruction Scheduler Design based on CPU Stall Elimination
Uddin et al. Signature-based high-level simulation of microthreaded many-core architectures
Van Ertvelde et al. Workload reduction and generation techniques
Singh et al. Snowpack: Efficient parameter choice for GPU kernels via static analysis and statistical prediction
Widerspick et al. Latency measurements for an emulation platform on autonomous driving platform nvidia drive px2
Kassem et al. Simulator generation using an automaton based pipeline model for timing analysis
Abbas et al. Approximate data dependence graph generation using adaptive sampling
Jain et al. An efficient technique for exploring register file size in ASIP design
Kemmerer et al. Parallel code-specific CPU simulation with dynamic phase convergence modeling for HW/SW co-design
Carvalho et al. Framework for the Analysis and Configuration of Real-Time OpenMP Applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190320

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200407

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200921

R151 Written notification of patent or utility model registration

Ref document number: 6776914

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250