JP2015001807A - 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 - Google Patents

並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 Download PDF

Info

Publication number
JP2015001807A
JP2015001807A JP2013125607A JP2013125607A JP2015001807A JP 2015001807 A JP2015001807 A JP 2015001807A JP 2013125607 A JP2013125607 A JP 2013125607A JP 2013125607 A JP2013125607 A JP 2013125607A JP 2015001807 A JP2015001807 A JP 2015001807A
Authority
JP
Japan
Prior art keywords
task
executed
procedure
parallel
macro
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013125607A
Other languages
English (en)
Other versions
JP6018022B2 (ja
Inventor
裕司 森
Yuji Mori
裕司 森
充弘 谷
Mitsuhiro Tani
充弘 谷
博徳 笠原
Hironori Kasahara
博徳 笠原
啓二 木村
Keiji Kimura
啓二 木村
弾 梅田
Dan Umeda
弾 梅田
明宏 林
Akihiro Hayashi
明宏 林
広紀 見神
Hironori Migami
広紀 見神
洋平 金羽木
Yohei Kanehagi
洋平 金羽木
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.)
Waseda University
Denso Corp
Original Assignee
Waseda University
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 Waseda University, Denso Corp filed Critical Waseda University
Priority to JP2013125607A priority Critical patent/JP6018022B2/ja
Priority to DE102014211047.5A priority patent/DE102014211047A1/de
Priority to US14/302,886 priority patent/US9760355B2/en
Publication of JP2015001807A publication Critical patent/JP2015001807A/ja
Application granted granted Critical
Publication of JP6018022B2 publication Critical patent/JP6018022B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • G06F8/452Loops
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection

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)

Abstract

【課題】開発期間や開発費を抑えつつ、信頼性が高く、高速な処理が可能な車載装置用の組込みシステム向けの並列化プログラムを作成する。【解決手段】自動並列化コンパイラは、シングルプロセッサシステムにより実行される組込みシステム用の逐次プログラムを複数のマクロタスクに分割した後(S210)、制御依存性を有するマクロタスクを一つのマクロタスクに融合する(S215)。その後、データ依存性に基づき並列実行可能なマクロタスクを抽出すると共に(S220)と、スタティックスケジューリングを行い(S225)、並列化プログラムを生成する(S225,S230)。【選択図】図18

Description

本発明は、シングルプロセッサシステムにより逐次実行される車載装置向けの組込みシステム用の逐次プログラムから、車載装置に搭載されたマルチプロセッサシステム用の並列化プログラムを生成する並列化コンパイル方法,並列化コンパイラ,並列化コンパイル装置と、マルチプロセッサシステムが搭載された車載装置に関する。
より安全,快適,低価格且つ省エネを実現する世代自動車の開発のため、エンジン制御のようなリアルタイム制御系、人認識・他車認識や運転に必要な情報の提示や音楽・映像等の出力を行う情報系の高度化及び統合化が重要となっている。
制御系,情報系の高度化,統合化のためには、それらを実現するためのプロセッサの高能力化が重要となる。例えば、安全,快適で燃費の良い自動車開発のために重要なエンジン制御系を高度化するためには、制御アルゴリズムの高度化や新たな制御機能の実現等、計算負荷の増大を避けられない。このような問題を解決する為には、リアルタイム制御を実現しているプロセッサの高速化が必須となる。
しかし、従来のようにプロセッサの動作周波数を向上させることは、消費電力が周波数の三乗に比例して増大するため、困難となっている。このため、1チップ上に低動作周波数のプロセッサコアを複数集積し、電力削減のために低周波数化・低電圧化したプロセッサコアを並列動作させることで、処理の高速化と低電力化を同時に実現可能なマルチコアプロセッサへの移行が急ピッチで行われている。
ここで、マルチコアプロセッサにて、シングルコアプロセッサよりも高速な処理を行うためには、シングルコアプロセッサ用の逐次プログラムの処理を分割し、プロセッサコア間の通信が最小になる形で各プロセッサコアに各処理を割り当てる必要がある。従来、このような逐次プログラムの並列化の作業は人手で行う必要があったが、このような作業は大変困難で長期間を要し、開発費の増加や並列化されたプログラムの信頼性等、多くの課題が生じている。
ここで、非特許文献1には、マルチコアプロセッサが搭載された車載装置において、各プロセッサコアに機能を分散させることで、スループットを向上させることが記載されている。
K Seo,J Yoon,J Kim,T Chung,K Yi,N Chang、「Coordinated implementation and processing of a unified chassis control algorithm with multi-central processing unit」、JAUTO1346 IMechE、2009年、Vol.224 Part D
しかしながら、各プロセッサコアの処理能力を最大限利用するためには、並列実行可能な処理を抽出して異なるプロセッサコアに割り当てる必要がある。このため、単に各プロセッサコアに機能を分散させるのみでは、スループットを向上させることはできてもレイテンシを削減することができず、高速な処理を行うことはできない。
本願発明は上記課題に鑑みてなされたものであり、開発期間や開発費を抑えつつ、信頼性が高く、高速な処理が可能な車載装置用の組込みシステム向けの並列化プログラムを作成することができる並列化コンパイル方法等を提供する。
上記課題に鑑みてなされた請求項1に係る並列化コンパイル方法は、シングルプロセッサシステムにより実行される車載装置向けの組込みシステム用の逐次プログラムを、予め定められた方法に従い複数のマクロタスクに分割する分割手順と、マクロタスク間の制御依存性に基づき、異なるマクロタスクに分岐する処理を有するマクロタスクを始端タスクとして特定すると共に、該始端タスクを始点として順次実行される複数の一連の処理の全てにおいて共通して実行されるマクロタスクのうちのいずれか一つを終端タスクとして特定する特定手順と、を有する。
また、当該コンパイル方法は、特定手順により特定された始端タスクと、該始端タスクを始点とする処理における終端タスクと、該始端タスクの実行後であって、該終端タスクの実行前に実行される全てのマクロタスクとを、新たなマクロタスクとして融合させる融合手順と、融合手順による融合がなされた後のマクロタスク間のデータ依存性に基づき、車載装置に搭載されたマルチプロセッサシステムを構成する複数のプロセッサユニットにより並列実行可能なマクロタスクを抽出する抽出手順と、を有する。
また、当該コンパイル方法は、並列実行可能なマクロタスクが異なるプロセッサユニットにより並列的に実行されるよう、それぞれのマクロタスクをいずれかの前記プロセッサユニットに割り当てるスタティックスケジューリングを行うスケジューリング手順と、スタティックスケジューリングの結果に基づき、マルチプロセッサシステムにより実行される並列化プログラムを生成する生成手順と、を有する。
逐次プログラムを並列化する方法としては、粗粒度並列化,中粒度並列化,近細粒度並列化を組み合わせて行うマルチグレイン並列処理が知られている。
しかし、車載装置用の組込みシステム向けの逐次プログラムは、ループ構造が存在しないか、或いは非常に少なく、主に条件分岐と代入文から構造されているため、中粒度並列化(ループ内イタレーションレベルの並列化)を適用することはできない。さらに、処理が非常に細かいため、マルチプロセッサシステムにより並列実行される際のオーバーヘッドを抑える必要がある。
そこで、請求項1に記載の並列化コンパイル方法では、シングルプロセッサシステムにより実行される車載装置向けの組込みシステム用の逐次プログラムをマクロタスクに分割すると共に、各マクロタスクの並列性を抽出し、並列実行可能なマクロタスクを異なるプロセッサユニットに割り当てる粗粒度並列化が行われる。
また、車載装置用の組込みシステム向けの逐次プログラムから得られた各マクロタスクは、サイクルが短いため、ダイナミックスケジューリングを適用するとオーバーヘッドが大きくなり、高速化が困難となる。そこで、スタティックスケジューリングを適用することが考えられるが、マクロタスク間に制御依存性がある場合には、これを適用することはできない。
これに対し、請求項1に記載の並列化コンパイル方法では、融合手順により制御依存性のある複数のマクロタスクが一つのタスクに融合された後にスタティックスケジューリングが行われ、並列実行可能なマクロタスクが異なるプロセッサユニットに割り当てられる。
これにより、車載装置用の組込みシステム向けの逐次プログラムから、高速な処理が可能な並列化プログラムを自動生成することができる。したがって、従来のように人手により逐次プログラムの並列化を行う場合に比べ、開発期間や開発費を抑えつつ、高い信頼性を有する車載装置用の組込みシステム向けの並列化プログラムを作成することができる。
なお、本発明は、上述した並列化コンパイル方法のほか、種々の形態で実現することができる。このような形態の具体例としては、当該並列化コンパイル方法をコンピュータに実現させるためのプログラムである並列化コンパイラや、当該並列化コンパイル方法を実現するための並列化コンパイル装置等が考えられる。また、当該並列化コンパイル方法により生成されたプログラムにより動作するマルチプロセッサシステムを備える車載装置等が考えられる。
自動並列化コンパイラの構成を示すブロック図である。 階層的に定義されるマクロタスクについての説明図である。 マクロフローグラフの一例である。 マクロタスクグラフの一例である。 プロファイル自動フィードバック機能を用いた場合のコンパイル手順についての説明図である。 プロファイル自動フィードバック機能を用いた場合のコンパイル手順についてのフローチャートである。 マクロタスクグラフの一例である。 依存があるループ間におけるキャッシュのグローバル最適化のための分割がなされたマクロタスクグラフの一例である。 分割ループのプロセッサへの割り当ての様子を示す説明図である。 最速実行モードでの、各PGに割り当てられたマクロタスクの実行状態についての説明図である。 リアルタイムモードでの、各PGに割り当てられたマクロタスクの実行状態についての説明図である。 自動並列化APIの一例である。 本実施形態のマルチコアアーキテクチャのブロック図である。 自動並列化API標準解釈系と開発環境についての説明図である。 自動並列化APIの指示文の一例である。 自動並列化API標準解釈系により生成されたランタイムライブラリ関数の一例である。 自動並列化コンパイラがインストールされたPCの構成を示すブロック図である。 自動並列化処理のフローチャートである。 自動車制御プログラムの一例である。 自動車制御モデルと、これに基づき自動生成されたC言語の自動車制御プログラムの一例である。 インライン展開後のマクロフローグラフの一例である。 インライン展開前のマクロタスクグラフの一例である。 インライン展開後のマクロタスクグラフの一例である。 ローカル変数が繰り返し使用された自動車制御プログラムの一例である。 タスク融合前のマクロフローグラフの一例である。 タスク融合前のマクロタスクグラフの一例である。 タスク融合後のマクロフローグラフの一例である。 タスク融合後のマクロタスクグラフの一例である。 エンジン制御ECUの構成を示すブロック図である。
以下、本発明の実施形態について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
1.自動並列化コンパイラについて
本実施形態の自動並列化コンパイラ1は、組込みシステム向けのシングルプロセッサシステム用のソースプログラム(逐次プログラム)から、組込みシステム向けのマルチプロセッサシステム用の並列化プログラムを生成する機能を有している。
1−1.自動並列化コンパイラ1の設計概念
本実施形態の自動並列化コンパイラ1は、以下の機能を有している。
(1)マルチグレイン並列処理
(2)コンパイル時のスタティックスケジューリングコードの挿入
(3)実行時のダイナミックスケジューリングコードの生成
(4)階層型マクロデータフローの実現
(5)マクロタスクの分割/融合,Loop distribution/interchange等の並列性抽出
(6)データローカライズによるデータ転送効率の向上
(7)コンパイラによる電力削減
1−2.自動並列化コンパイラの内部処理
自動並列化コンパイラ1は、Front End(FE3),Middle Path(MP5),Back End(BE7)の3つのステージを有している(図1参照)。各ステージは実行形態として独立しており、FE3,MP5から生成される中間言語4,6(Intermediate language)によりコード授受が行われる。
なお、FE3は、逐次プログラムのソースコード2を字句解析・構文解析を行い、MP5においてparse可能な中間言語4を生成する部位である。FE3の生成する中間言語4は、基本的に4つのオペランドを持つ解析木(parse tree)で表現されており、全体として1つのブロックを形成していて構造化は行われていない。
また、MP5は、制御依存性解析・データ依存性解析・最適化等を行う部位であり、そのデータを用いて粗粒度(Macro Data Flow)・中粒度(Micro tasking/Doall loop parallelize)・近細粒度(Near fine grain)並列化のマルチグレイン並列処理を行う。
また、BE7は、MP5が生成した並列化中間言語6を読み込んで実際のマシンコードを生成する部位である。当該部位は、ターゲットとなっているマルチコアアーキテクチャのアセンブラコード8aを生成するBEの他、OpenMP用の並列化FortranコードやCコードを生成するBEを有している。さらには、当該部位は、後述する並列化API9によりメモリ配置,データ転送を含めて並列化したコード8b,8cを生成するBE等、多様なアーキテクチャに対応したコードを出力するBEを有している。
1−3.自動並列化コンパイラの並列性解析
自動並列化コンパイラ1は、逐次プログラムを、基本ブロック(BB),繰り返しブロック(RB),サブルーチンブロック(SB)の3種類の粗粒度タスク(マクロタスク(MT))に分割するマクロデータフロー処理を行う。
しかし、マクロデータフロー処理では、プログラムの形状によってはプロセッサの利用効率が上がらず、十分な粗粒度並列性が抽出できないという問題点がある。
そこで、自動並列化コンパイラ1では、従来の単階層マクロデータフロー処理手法を拡張し、MT内部に対してマクロデータフロー処理を階層的に利用する階層型マクロデータフロー処理を採用している。階層的マクロデータフロー処理では、図2に示すようなMTの階層的な定義を行う。その上で、生成された各階層のマクロタスクに対して、マクロタスク間の並列性の解析を行う。
<マクロフローグラフ(MFG)の生成>
自動並列化コンパイラ1は、まず、生成された各階層のマクロタスクに対して、マクロタスク間の制御依存性とデータ依存性を解析する。この解析結果は、マクロフローグラフ(MFG)として表される(図3参照)。
図3においては、ノードはマクロタスクを、実線エッジはデータ依存を、点線エッジは制御依存を、ノード内の小円は条件分岐を表す。なお、該MFGではエッジの矢印は省略されているが、エッジの方向は下向を仮定している。
<マクロタスクグラフ(MTG)の生成>
MFGは、マクロタスク間の制御依存性とデータ依存性を表すが、並列性は表していない。並列性を抽出するためには、各マクロタスクに対し、制御依存性とデータ依存性の両方を考慮した最早実行可能条件解析を行う必要がある。最早実行可能条件とは、そのMTが最も早い時点で実行可能になる条件であり、次のような実行条件から求められる。
(1)MTiがMTjにデータ依存するならば、MTjの実行が終了するまでMTiは実行できない。
(2)MTjの条件分岐先が確定すれば、MTjの実行が終了しなくても、MTjに制御依存するMTiは実行できる。
したがって、最早実行可能条件の一般形は次のようになる。
(MTiが制御依存するMTjがMTiに分岐する)
AND
((MTiがデータ依存するMTk(0≦k≦|N|))が終了)OR(MTkが実行されないことが決定する))
例えば、図3のMFGのMT6の最早実行可能条件は、次のようになる。
((MT1がMT3に分岐)OR(MT2がMT4に分岐))
AND
((MT3が終了する)OR(MT1がMT2に分岐))
MFGにおける制御依存性を考えると、MT3が終了するということは、MT1はMT3に分岐したということを含み、また、MT2がMT4に分岐するということは、MT1はMT2に分岐しているので、この条件は、簡略化されて次のようになる。
((MT3が終了する)OR(MT2がMT4に分岐))
マクロタスクの最早実行可能条件は、図4に示すようなマクロタスクグラフ(MTG)で表される。
MFGと同様に、MTGにおけるノードはマクロタスクを、ノード内の小円はマクロタスク内の条件分岐を、実線のエッジはデータ依存を、点線のエッジは拡張された制御依存を表す。なお、拡張された制御依存とは、通常の制御依存だけでなく、データ依存と制御依存を複合的に満足させるため、先行ノードが実行されないことが確定するという条件分岐を含んでいる。
また、エッジを束ねるアークには2つの意味があり、実線アークは、当該アークによって束ねられたエッジがAND関係にあることを、点線アークは、当該アークによって束ねられたエッジがOR関係にあることを示している。
また、MTGにおいてはエッジの矢印は省略されているが、下向きが想定されている。また、矢印を持つエッジは、オリジナルの制御依存性を表す。
1−4.マルチグレイン並列処理
自動並列化コンパイラ1では、従来のループ並列化に加え、ループ間,サブルーチン間における粗粒度タスク間の並列性を利用する粗粒度タスク並列処理や、ステートメント間の並列性を利用する近細粒度並列処理を効果的に組み合わせたマルチグレイン並列処理(参考文献1(本多弘樹, 岩田雅彦, 笠原博徳、「Fortranプログラム粗粒度タスク間の並列性検出手法」、電子情報通信学会論文誌、1990年)参照)を実現している。
<粗粒度タスク並列処理>
自動並列化コンパイラ1は、BB,RB,SB等のMT間の制御依存性とデータ依存性を表現したマクロフローグラフ(MFG)を生成し、さらに、MFGから最早実行可能条件解析により引きだしたMT間の並列性を、マクロタスクグラフ(MTG)として表現する(参考文献1,参考文献2(笠原,合田,吉田,岡本,本多、「Fortranマクロデータフロー処理のマクロタスク生成手法」、信学論、1992年、Vol.J75-D-I、No.8、pp.511-525)参照)。
その後、自動並列化コンパイラ1は、MTG上のMTを、1つ以上のプロセッサエレメント(PE)をグルーピングしたプロセッサグループ(PG)に割り当てる。
<中粒度並列処理>
PGに割り当てられたMTが、DOALLループ、或いはイタレーションレベルで並列処理が可能なものであれば、そのMTには、プロセッサクラスタ内のプロセッサによって中粒度並列処理がなされる。この中粒度並列処理は、DOループイタレーション間の並列性を利用する並列処理のことであり、マルチプロセッサにおける並列処理では最も一般的なものである。
<近細粒度並列処理>
ステートメントレベルの近細粒度タスクに対する並列処理を、近細粒度並列処理という。これによって、依存の無いステートメントも並列実行が可能になり、実行時間が短縮される。これが行われるのは、分岐のない逐次実行される基本ブロックと、シーケンシャルループ内のボディ部である。近細粒度並列処理では、ステートメントを、コンパイラによるスタティックスケジューリングによって各PEに割り当て、自動並列化コンパイラ1は、各PE用のマクロタスクコードとして、必要な同期,データ転送コードと共に割り当てられたステートメントのみを生成する。近細粒度並列処理は、ステートメントという小さな粒度のタスクを用いた並列処理であり、タスクの実行時間は短いものが多い。したがって、効率的に行うためには、PE間の高速なデータ転送がサポートされていることが必要である。
1−5.マクロタスクスケジューリング
粗粒度タスク並列処理では、各階層で生成されたマクロタスクは、PGに割り当てられて実行される。どのPGにマクロタスクを割り当てるかを決定するスケジューリング手法として、下記のダイナミックスケジューリングとスタティックスケジューリングがあり、これらは、マクロタスクグラフの形状や実行時非決定性等を元に選択される。
<ダイナミックスケジューリング>
条件分岐等の実行時不確定性が存在する場合には、ダイナミックスケジューリングによって実行時にマクロタスクをPGに割り当てる。ダイナミックスケジューリングルーチンは、マクロタスクの終了や分岐方向の決定に応じてマクロタスク実行管理テーブルを操作し、各マクロタスクの最早実行可能条件を検査する。
マクロタスクが実行可能であれば、レディキューにマクロタスクが投入される。レディキュー内のマクロタスクは、その優先順位に従ってソートされ、レディキューの先頭のマクロタスクが、アイドル状態のプロセッサクラスタに割り当てられる。
また、ダイナミックスケジューリングコード生成時には、一つの専用のプロセッサがスケジューリングを行う集中スケジューリング方式と、スケジューリング機能を各プロセッサに分散した分散スケジューリング方式を、使用するプロセッサ台数,システムの同期オーバーヘッドに応じて使い分けることができる。
<スタティックスケジューリング>
一方、スタティックスケジューリングは、マクロタスクグラフがデータ依存エッジのみを持つ場合に使用され、自動並列化コンパイラ1が、コンパイル時にPGへのマクロタスクの割り当てを決める方式である。
スタティックスケジューリングは、実行時スケジューリングオーバーへッドを無くし、データ転送と同期のオーバーへッドを最小化することが可能であるため、粒度の細かいタスクのスケジューリングに対しても効果的に利用できる。
また、スタティックスケジューリングの際、タスクのコストは自動並列化コンパイラ1でのタスクコスト推定値を適用するが、自動並列化コンパイラ1のプロファイル自動フィードバック機能を用いることで、実コストでタスクスケジューリングを行うことも可能である。
プロファイル自動フィードバック機能を用いた場合のコンパイルフローを、図5,6に示す。プロファイル自動フィードバック機能を用いる場合、第1フェーズとして、逐次プログラムをMTに分解し、MT毎にプロファイラ関数を挿入して逐次プログラムを生成する(図5参照)。このプロファイラ関数では、タスク実行コスト(clock cycle)とタスク実行回数を計測する。このプロファイラ関数が挿入された逐次プログラムを一度ターゲットとなるマシン上で実行することで、ターゲットとなるマシン上でのタスク実行コストとタスク実行回数の情報を持つファイルを出力する。
そして、第2フェーズにて、この出力ファイルと逐次プログラムを入力として、実コストに基づきスケジューリングした並列化プログラムが生成される(図6参照)。
1−6.データローカライゼーション
自動並列化コンパイラ1は、プログラム全域に渡るキャッシュ最適化を行うことが可能である。自動並列化コンパイラ1は、ループ間などの並列性を解析した後、図7の網掛けされた6つのMT2,3,7,8,11,14が、実線で示すデータ依存エッジで結ばれたマクロタスクグラフのようにループ間にデータ依存があることが分かると、依存があるループ間でのキャッシュのグローバル最適化を試みる(参考文献3(特許第4177681号公報)参照)。
具体的には、各ループでアクセスされる配列を調査し、図8の4つのループ20,21,22,23に分割し、同一の分割ループは同一の配列部分にアクセスするように調整することにより、同一の分割ループを同一プロセッサに割り当てる(図9参照)。これにより、同一の分割ループでは、全ての配列データがキャッシュ上で再利用されるようになる。
また、このローカライズ技術は、
(1)任意のサイズのローカルメモリ或いは分散共有メモリが与えられた時に、DMA(DTU)(参考文献4(特許第4476267号公報)参照)を用いアクセスされる前に、前記プロセッサに近接したローカル或いは分散共有メモリに事前ロードし、プログラム全域で再利用する。
(2)送付先のメモリが一杯の場合には、送付先プロセッサのDTUが、メモリからの掃き出し優先順位に従ってデータを共有メモリ等へ掃き出したことを同期フラグで知らされたら、自動的に空いたメモリにデータを転送する。
(3)将来再利用されるデータであるが、暫くの間使用されず、メモリの領域を開ける必要がある場合には、CPUによるタスク実行の裏側でDTUが当該データを集中共有メモリに待避し、使用時までに再ロードする。
といったローカルメモリ管理,データ転送技術へと進化している(参考文献5(英国特許第2478874号明細書)。
1−7.自動並列化コンパイラによる電力削減
自動並列化コンパイラ1では、タスクのプロセッサへのスケジュール結果を解析し、自動的に各プロセッサの周波数電圧制御、パワーゲーティング制御により電力を削減することが可能である。
図10に示す最速実行モードの際には、タスクグラフのクリティカルパス上のタスク集合はフルスピード(100%の周波数)で実行される必要があり、PG0に割り当てられたMT1と、PG1に割り当てられたMT3が最大周波数で実行される。
しかし、MT3は、MT1の計算結果を必要とするので、MT2の実行後、PG1は同期のためのビジーウエイト状態となり、PG0がMT1の出力データをPG1上の分散共有メモリにストアし、MT1の終了を通知する同期フラグを分散共有メモリ上にセットするのを待つ。
この際、ビジーウエイトは電力を消費してしまうので、自動並列化コンパイラ1は、MT2を低周波数・低電力で実行するか、もしくは、電源遮断するのに十分な待ち時間があれば、PG1の電源を一時遮断する。
また、図11に示すリアルタイム実行モードでは、処理終了後からデッドラインまでの待ち時間の電力消費を避けるため、MT1の周波数を1/4に、MT2の周波数を1/2に下げ、低電力で実行させるか、クロックゲーティング或いはパワーゲーティングにより各PGを停止させる。
この時、自動並列化コンパイラ1は、電源状態遷移オーバーヘッドも考慮して、ヒューリスティック的に適切な電力モードを自動選択する(参考文献6(特許第4082706号公報)参照)。
1−8.並列化プログラムの生成
自動並列化コンパイラ1における並列化プログラムの生成は、自動並列化API(参考文献7(早稲田大学、「Optimally Scheduled Advanced Multiprocessor Application Program Interface」、2008年)参照)を用い、並列化C或いは並列化Fortranのような、source-to-sourceで並列化を行うことが可能である。
この場合には、自動並列化コンパイラ1は、様々なプラットフォームにおいて並列化プログラムを実行可能とするため、後述する自動並列化API標準解釈系を用いて、各プロセッサ用のC或いはFortranのディレクティブ部分をランタイムライブラリコールに変換する。その後、自動並列化コンパイラ1は、各プロセッサ用のコードを逐次コンパイラでコンパイルしてバイナリを生成し、このバイナリをリンクすると、対象となるマルチプロセッサ上で並列化プログラムを実行可能となる。
1−9.自動並列化API
自動並列化APIは、後述する情報家電用のマルチコアアーキテクチャを意識したものであり、共有メモリ型マルチコアプロセッサで要求される、データのメモリ配置,DMAを用いたデータ転送,電力制御,グループバリア同期,リアルタイム制御を行うことができる。
自動並列化APIの使用例として、自動並列化コンパイラ1とターゲットとなるマルチコア用コンパイラとの間の中間表現としての利用があげられる。
例えば、自動並列化コンパイラ1を用いることにより、Fortran77或いはポインタ利用等に制限をつけた逐次Cプログラムを、自動的に自動並列化APIを加えた並列化Fortran 或いはCプログラムに翻訳できる。この並列化プログラムをサーバ上で動作させるときには、OpenMPコンパイラを通すことにより実行バイナリを生成することができる。
また,組込みシステム用のマルチコアプロセッサで使用する場合には、専用API解釈系によりランタイムライブラリを含むコードを生成し、逐次コンパイラを通すことによっても、実行バイナリを生成することができる。
図12における自動並列化APIの例では、“threadprivate”,“distributedshared”,“onchipshared”は、メモリ配置APIであり、変数をどのメモリに配置するかを指定している。
また、“pararell subsections”の部分が自動並列化APIであり、“subsection”を2つ配置することで、2スレッドを生成して処理を実行可能となっている。
また、“dma transfer”はデータ転送APIで、“dma contiguous parameter”はDTUによる連続転送を表すAPIである。具体的には、該連続転送APIは、第1引数が転送元アドレス,第2引数が転送先アドレス,第3引数が転送サイズ,第4引数が転送終了時に値が設定されるフラグ変数,第5引数がフラグに設定する値となっている。
1−10.マルチコアアーキテクチャと自動並列化API標準解釈系
自動並列化API標準解釈系とは、自動並列化コンパイラ1で生成した並列化プログラムのポータビリティの実現を図るためのものである。自動並列化コンパイラ1は、生成した並列化プログラムを多様なアーキテクチャで動作させるため、自動並列化API標準解釈系により生成コードをランタイムライブラリに変換し、様々なプラットフォームに合わせた並列化プログラムを生成することができる。
自動並列化コンパイラ1と自動並列化APIにより、後述するマルチコアアーキテクチャにおいて、逐次プログラムの並列化や電力制御を自動的に行うことができるようになった。しかし、自動並列化APIのメモリ配置APIやデータ転送APIを利用するには、ターゲットとなるプラットフォーム用にAPI解釈系を用意する必要があり、開発期間の短縮,開発の容易化が求められる状況において、プラットフォーム毎にAPI解釈系を開発するのは大きな負担となっている。
そこで、指示文やソースプログラムを解釈して変換する部分等のように、プラットフォームへの依存度が低い部分を自動並列化API標準解釈系として提供する。これにより、多くの組込み用のマルチコアプロセッサが備えるランタイムライブラリや、比較的容易に作成可能なランタイムライブラリをプラットフォーム毎に用意すれば、並列化プログラムを生成可能となる。その結果、様々なマルチコアプロセッサにおいて、非常に低コストで、自動並列化コンパイラ1により並列化や電力制御を行うことが可能となる。
以下では、情報家電向けのマルチコアアーキテクチャの一例と、自動並列化API標準解釈系の構造と変換例について述べる。
1−11.マルチコアアーキテクチャについて
マルチコアプロセッサにおけるメモリアーキテクチャであるローカルメモリアーキテクチャは、キャッシュアーキテクチャとは異なり、ソフトウェア上で明示的なローカルメモリ管理を行うことで性能を引き出すことが可能である。
本実施形態のマルチコアアーキテクチャ50では、1つのチップ上に複数のプロセッサエレメント(PE51,52,53)を持つ(図13参照)。各PEには、中央演算処理装置(CPU51a),ローカルプログラムメモリ(LPM51b),ローカルデータメモリ(LDM51c),分散共有メモリ(DSM51d),CPUと非同期に動作しデータ転送を行うことができるデータ転送ユニット(DTU51d)が設けられている。チップ上の全てのPEは、バスやクロスバーといったInterconnection Network54によって、オンチップ集中共有メモリ(OnChipCSM55)や、オフチップ集中共有メモリに接続されている。
1−12.自動並列化API標準解釈系の構造
本実施形態の自動並列化API標準解釈系70は、自動並列化APIを含むCプログラム71(或いはFortranプログラム)を入力とし、設定ファイル72の設定に従いランタイムライブラリ関数を含むCプログラム73(或いはFortranプログラム)を出力する(図14参照)。
設定ファイル72は、アーキテクチャ毎の設定を記述することができ、分散共有メモリ(DSM)のアドレスや、ネイティブコンパイラに対する指示を伝搬可能とする“comment指示文”や、データ転送API及び電力制御APIの変換や、プロセッサコア間で任意のグループによるバリア同期を実現する“groupbarrier 指示文”や、モジュール名とモジュール番号の対応付け等に関する設定ができる。
また、出力されたランタイムライブラリ関数を含むCプログラム73を、各開発環境80のコンパイラ81でコンパイルし、ランタイムライブラリ82,83とリンクすることで、実行ファイル84を生成することができる。
1−13.ランタイムライブラリコールへの変換
自動並列化APIの指示文は、Cプログラムでは“pragma”により記述されるが、これらの自動並列化APIの指示文は、自動並列化API標準解釈系によりランタイムライブラリ関数へ変換される。
<並列実行指示文>
図15の自動並列化APIの指示文では、“parallel subsections指示文”により4つのスレッドを生成している。図16のソースプログラムのように、自動並列化API標準解釈系では、スレッドとして実行するプログラム部分を、“thread_function_000〜003”という関数として切り出す。これらの切り出された関数のうち、“thread_function_001〜003”は、“oscar_thread_create関数”によりスレッドとして実行し、“thread_function_000”は、そのまま通常の関数として実行する。最後に、“oscar_thread_join”関数により、スレッド終了の待ち合わせを行う。
また、“pthreadライブラリ”が利用可能なプラットフォームでは、“oscar_thread_create”及び“oscar_thread_join”を、pthread create 及びpthread join を用いてそれぞれ実装すれば良い。
1−14.メモリ配置属性の指定
“thread private 指示文”等のメモリ配置指定は、ランタイムライブラリでは実現できない。そのため、これらのメモリ配置指定は、ネイティブコンパイラ用のメモリ属性指定の記述に変換する必要がある。
具体例を挙げると、“#pragma oscar onchipshared(var1)”という記述は、変数“var1”をオンチップ集中共有メモリに配置するように指定するものである(“onchipshared 指示文”)。
ネイティブコンパイラとしてgccを用いる場合、上記記述は、“int__attribute((subsection("OSCAR_SHARED")))var1;”という記述に変換される。該記述では、“attribute記述”により、変数“var1”を“OSCAR SHAREDセクション”に配置している。対象プラットフォーム用リンカの設定ファイルにより“OSCAR SHARED”セクションをオンチップ集中共有メモリに配置することで、リンカが変数“var1”がオンチップ集中共有メモリ上に配置される。
2.自動車制御プログラムの並列化手順と手法
次に、モデルベース設計で自動生成された自動車制御プログラムの特徴について述べ、自動並列化コンパイラ1による並列化手法について説明する。
具体的には、自動並列化コンパイラ1は、条件分岐と代入文により構成され、処理が細かい自動車制御プログラムに対して、インライン展開やリネーミングを行い、並列性を抽出する。また、リアルタイム性を順守するために条件分岐隠蔽のためのタスク融合を行い、オーバーヘッドが低くなるようにスタティックスケジューリングを行う。さらに、実コストでスタティックスケジューリングを行うために、プロファイル自動フィードバック機能を適用しても良い。
2−1.自動並列化コンパイラの動作環境等について
自動並列化コンパイラ1は、例えば、DVD,CD−ROM,USBメモリ,メモリカード(登録商標)等の光ディスク,磁気ディスク,半導体製メモリ等として構成された記憶媒体180に記憶された状態で、ユーザに提供される(図17参照)。無論、ネットワークを経由してユーザに提供されても良い。
そして、自動並列化コンパイラ1がインストールされたパーソナルコンピュータ(PC)100は、自動並列化コンパイル装置として動作する。PC100は、ディスプレイ110,HDD120,CPU130,ROM140,RAM150,入力装置160,読取部170等を備える。
ディスプレイ110は、CPU130から受けた映像信号を、ユーザに対して映像として表示する。
また、入力装置160は、キーボード、マウス等から構成され、ユーザが操作することにより、その操作に応じた信号をCPU130に出力する。
また、読取部170は、自動並列化コンパイラ1等が記憶された記憶媒体180からデータを読み取る部位である。
また、RAM150は読み出し、書き込み可能な揮発性メモリであり、ROM140は読み出し専用の不揮発性メモリであり、HDD120は読み出し,書き込みが可能な不揮発性メモリである。ROM140,HDD120には、CPU130が読み出して実行するプログラム等が予め記憶されている。
また、RAM150は、CPU130がROM140,HDD120に記憶されたプログラムを実行する際に、そのプログラムを一時的に保存するための記憶領域や、作業用のデータを一時的に保存するための記憶領域として用いられる。
また、CPU130は、OSをHDD120から読み出して実行し、HDD120に記録されている各種プログラムをOS上のプロセスとして実行する。また、CPU130は、このプロセスにおいて、必要に応じて入力装置160から信号の入力を受け付け、ディスプレイ110に映像信号を出力し、RAM150,HDD120に対してデータの読み出し/書き込みの制御を行う。
また、PC100には、読取部170を介して記憶媒体180から読み取られた自動並列化コンパイラ1がインストールされており、自動並列化コンパイラ1は、HDD120に保存され、OS上のプロセスとして実行されるアプリケーションの1つとなっている。
なお、この自動並列化コンパイル装置は、車載装置等といった組み込みシステム向けの並列化プログラムの開発に用いられる。しかしながら、これに限定されることは無く、例えば情報家電等といった様々な用途の組込みシステム向けの並列化プログラムの開発や、組込みシステム以外の他の用途の並列化プログラムの開発に用いることができる。
2−2.並列化の手順
本実施形態では、自動並列化コンパイラ1は、一例として、MathWork社のMatlab(登録商標),Simulink(登録商標)にてモデルベース設計により自動生成された自動車制御プログラム(逐次プログラム)から並列化プログラムを生成する。
具体的には、まず、Embedded Coderを用いて、Simulinkによりモデルベース設計された自動車制御モデルからC言語で記述された自動車制御プログラムが自動生成される。そして、自動並列化コンパイラ1は、自動並列化処理を行い、自動車制御プログラム250を解析して並列化プログラム251を生成する(図18)。
自動並列化処理では、自動並列化コンパイラ1は、自動車制御プログラム250に対し、インライン展開と(S200)、ローカル変数のリネームとを行う(S205)。そして、自動並列化コンパイラ1は、これらの処理がなされた自動車制御プログラム250をマクロタスクに分割し、データ依存性と制御依存性を解析してMFGを生成する(S210)。
続くS215では、自動並列化コンパイラ1は、MFGが示す制御依存性に基づき、異なるマクロタスクに分岐するマクロタスクを始端タスクとして特定する。また、自動並列化コンパイラ1は、該始端タスクを始点として順次実行される複数の一連の処理の全てにおいて共通して実行されるマクロタスクのうち、最初に実行されるものを終端タスクとして特定する。
そして、自動並列化コンパイラ1は、特定した始端タスクと、該始端タスクを始点とする処理における終端タスクと、該始端タスクの実行後であって、該終端タスクの実行前に実行される全てのマクロタスクとを、1つのマクロタスクに融合させ(タスク融合)、S220に処理を移行する。
なお、タスク融合を行うことで、MFGは制御依存性が無い状態となる。
また、マクロタスクの粒度を細かくするためには、S215での処理のように、始端タスクを始点として順次実行される複数の一連の処理の全てにおいて共通して実行されるマクロタスクのうち、最初に実行されるマクロタスクを終端タスクとして特定するのが好適である。しかし、これに限らず、これらのマクロタスクのうち、2番目以降に実行されるいずれか一つのマクロタスクを終端タスクとして特定しても良い。
S220では、自動並列化コンパイラ1は、タスク融合がなされたMFGに基づき、各マクロタスクの最早実行可能条件を解析し、MTGを生成する。また、自動並列化コンパイラ1は、MTGに基づきスタティックスケジューリングを行い、並列実行可能なマクロタスクを異なるPEに割り当て、並列化プログラム251を生成する(S225)。
なお、このとき、自動並列化コンパイラ1は、並列化プログラム251を様々なプラットフォームで動作させるため、自動並列化API標準解釈系を用いて、自動並列化APIが加えられた並列化プログラムをランタイムライブラリが実装された並列化プログラムに変換しても良い。
そして、自動並列化コンパイラ1は、並列化プログラム251からバイナリデータ252を生成する(S230)。
2−3.自動車制御プログラムの特徴
例えば、エンジン制御を行う自動車制御プログラムは、基本的に、初期化関数と、繰り返し実行される主要エンジン制御計算関数から構成される。
図19に例示されたエンジン制御用の自動車制御プログラムは、“Model_step関数”を繰り返し実行することでリアルタイム制御が行われる。自動車制御はデッドラインが短いため、“Model_step関数”では、1周期が長くてもマイクロ秒オーダーであり、プログラムの粒度は極めて細かい。この“Model_step関数”では、Simulinkモデルに記述されたブロックに該当するすべての処理が計算される。
また、図20は、自動車制御モデル300,301と、これに基づき自動生成されたC言語の自動車制御プログラム302,304とを示している。図20が示すように、例えば、モデル301の“Saturationブロック”は、“if”と“if else”と“else”から構成されるプログラムに変換される。また、モデル301の“Switchブロック”は、“if”と“else”のプログラムに変換される。
この自動車制御プログラムにおける“Model_step関数”は、この自動車制御モデル上の制御関数に対応しているため、本実施形態では、この制御関数を並列化し、高速化を行う。
また、このような自動車制御プログラムの特徴は、従来の並列化コンパイラが並列化の対象としてきたループが存在しない(或いは少ししか存在しない)という点である。そして、図20が示すように、自動車制御では、センサー情報等によって処理を変化させる必要があるので、“Switchブロック”や“Saturationブロック”を多用して設計を行うことが多く、基本的に条件分岐文と代入文の組み合わせで構成されている。
すなわち、自動車制御プログラムには、従来行われていたループ内イタレーションレベルでの並列化が適用できない。このため、自動並列化コンパイラ1は、上述した自動並列化処理において、Simulinkモデルレベルでの並列性を粗粒度レベルタスク並列化機能により抽出する。
また、モデルベース設計された制御関数は、サブルーチン間の並列性が乏しく、並列性を細かく引き出す必要性があるため、自動並列化コンパイラ1はインライン展開(自動並列化処理のS200)を行う。図21にはインライン展開後のMFGの一例が記載されている(該MFGにおけるBBは基本ブロックを示している)。該MFGからわかるように、モデルベース開発された逐次プログラムには、処理コストが大きい並列化可能なループが存在せず、ノード内の小円により表される条件分岐を持つ基本ブロックが多数存在する。
また、各ノードの処理時間は長くても数十クロックサイクル程度であり、大変処理が細かく、従来の手法では並列化が困難であり、オーバーヘッドを最大限抑えることが重要とある。
2−4.自動車制御プログラムのリストラクチャリング手法と並列化手法
そこで、自動並列化コンパイラ1は、Simulinkモデルから自動生成された自動車制御プログラムから十分に並列性を抽出し、よりオーバーヘッドを低くした状態で並列化が可能になるように、プログラムのリストラクチャリングを行う。
<関数のインライン展開(自動並列化処理のS200)>
自動車制御プログラムは、処理が細かく、粗い粒度での並列化が困難であるため、制御関数内のサブルーチン内の並列性をも有効活用すべきである。このため、自動並列化コンパイラ1は、制御関数内のサブルーチンのインライン展開を行う(サブルーチンをコールする記述を、該サブルーチンにて定義されている処理の記述に置き換える)。
インライン展開が有効な例を挙げると、図22のMTG320は、“sb2”と”sb3”とが依存関係を有しており、並列性が存在しない。しかし、“sb2”,“sb3”のMTG321,322が示すように、これらのサブルーチンの内部処理には並列性があるため、“sb2”と“sb3”をインライン展開することにより、これらのサブルーチンの並列性を利用することができる。なお、図23は、“sb2”と“sb3”をインライン展開した後のMTG323を示している。
<ローカル変数のリネーミング(自動並列化処理のS205)>
Simulinkモデルから自動生成された自動車制御プログラムでは、ROM使用量削減のため、多くの箇所でローカル変数が繰り返し使用されている。一例として、図24に記載の自動車制御プログラムでは、複数の箇所330,331でローカル変数“tmp”が繰り返し使用されている。
これにより、並列性解析の際にデータ依存があると特定され、並列性が十分引き出せなくなってしまう。そこで、自動並列化処理のS205では、使い回しされているローカル変数のリネームを行う。
具体的には、自動並列化コンパイラ1は、制御関数内において、同一名称のローカル変数が用いられている複数の処理ブロックを特定すると共に、特定した各処理ブロックにおいて独自の名称のローカル変数が用いられるよう、自動車制御プログラムを改変する。
なお、処理ブロックとは、例えば、ループ処理や、if文やswitch-case文等の分岐処理のステートメントと、これに付随する代入文等から構成される記述の集合体であっても良い。また、このほかにも、例えば、自動車制御プログラムを生成したSimulinkモデルにおける各ブロックに対応する記述の集合体を、処理ブロックとしても良い。
図24の自動車制御プログラムを例に挙げると、if-else文からなるステートメントと代入文及び関数コールから構成される処理ブロック330,331では、同一名称のローカル変数“tmp”が用いられている。リネームにより、例えば、処理ブロック330にてアクセスされるローカル変数の名称が“tmp1”に、処理ブロック331にてアクセスされるローカル変数の名称が“tmp2”に変更される。
なお、Embedded Coderを用いてSimulinkモデルから自動車制御プログラムを自動生成する際、Embedded Coderをローカル変数の使い回しがされない設定(各ブロックに対応する記述毎に別の名称のローカル変数が用いられる設定)としても良い。これにより、S205の処理を行わなくても、マクロタスク間に不要なデータ依存が生じてしまうことを防ぐことができる。
<条件分岐隠蔽のためのタスク融合(自動並列化処理のS215)>
上述したように、自動車制御プログラムにはループ構造が存在しないため、近細粒度並列化か粗粒度タスク並列化を適用することが考えられるが、実行オーバーヘッドを相対的に小さく抑えるため、自動並列化コンパイラ1は、粗粒度タスク並列化を適用する。
また、自動車制御プログラムでは、各マクロタスクのコストは数10クロック程度であるが、自動並列化コンパイラ1によりダイナミックスケジューリングを行った場合には、通常数10から数100クロックのオーバーヘッドが生じる。このため、ダイナミックスケジューリングは、自動車制御プログラムには不向きである。
しかしながら、条件分岐を持つマクロタスクは、その実行時に動的に分岐先が決定されるため、そのままでは、コンパイル時にプロセッサコアを割り当てるスタティックスケジューリングが適用できないという問題がある。
そこで、自動並列化処理のS215では、自動並列化コンパイラ1は、タスク融合アルゴリズムにより、条件分岐をもつマクロタスクと、その分岐先のマクロタスクまでを1つの粗粒度タスク(Blockタスク) に融合するタスク融合を行う。
具体的には、MFG350(図25参照)からMTG351(図26参照)が生成されるが、該MFG350に対してタスク融合を行うと、MFG352(図27参照)が生成され、MFG352からは、MTG353(図28参照)が生成される。
MFG350に対するタスク融合では、条件分岐を有する“bb1”,“bb6”が始端タスクとして特定される。
また、“bb1”を始点とする一連の処理として、“bb1”,“bb2”,“bb4”…と、“bb1”,“bb3”,“bb4”…とが特定される。また、これらの一連の処理において共通して実行されるマクロタスクのうち、最初に実行される“bb4”が、終端タスクとして特定される。
そして、始端タスクである“bb1”と、終端タスクである“bb4”と、“bb1”の後であって、“bb4”の前に実行される“bb2”,“bb3”とが、1つのマクロタスク(MFG352の“Block1”)に融合される。
また、MFG350に対するタスク融合では、“bb6”を始点とする一連の処理として、“bb6”,“bb7”,“bb12”…と、“bb6”,“bb8”,“bb10”,“bb11”,“bb12”…と、“bb6”,“bb8”,“bb9”,“bb11”,“bb12”…と、が特定される。また、これらの一連の処理において共通して実行されるマクロタスクのうち、最初に実行される“bb12”が、終端タスクとして特定される。
そして、始端タスクである“bb6”と、終端タスクである“bb12”と、“bb6”の後であって、“bb12”の前に実行される“bb7〜11”とが、1つのマクロタスク(MFG352の“Block3”)に融合される。
タスク融合により生成されたMFG352には条件分岐が存在しない(制御依存性が存在しない)ため、スタティックスケジューリングが可能となる。
3.性能評価について
次に、本実施形態の自動並列化コンパイラ1により生成された並列化プログラムにより動作するマルチコアプロセッサが搭載された車載装置の性能評価の結果について説明する。
3−1.車載装置の構成について
まず、自動並列化コンパイラ1により生成された並列化プログラムにより動作するエンジン制御ECU400の構成について説明する(図29参照)。
エンジン制御ECU400は、ROM410,RAM420,通信部430,マルチコアプロセッサ440,センサ部450,入出力ポート460等を備える。
ROM410は、自動並列化コンパイラ1により生成された並列化プログラムのバイナリデータを保存する部位であり、マルチコアプロセッサ440は、該バイナリデータに従い動作し、エンジン制御ECU400を統括制御する。
また、RAM420は、マルチコアプロセッサ440によりアクセスされる部位である。
また、通信部430は、車内LAN等を介して接続された他のECUと通信を行う部位である。
また、センサ部450は、エンジン470の状態を検出するための各種センサから構成される部位である。
また、入出力ポート460は、エンジン470を制御するための各種信号の送受信を行う部位である。
また、マルチコアプロセッサ440は、複数のPE441,442を有しており、例えば、情報家電用マルチコアであるRP2や、ルネサスエレクトロニクス株式会社のV850E2R等であっても良い。
RP2は、SH4a(SH−X3)コアを8個搭載したホモジニアスマルチコアであり、各コアには、中央演算処理装置(CPU),ローカルプログラムメモリ(LPM),ローカルデータメモリ(LDM),分散共有メモリ(DSM)が設けられている。また、各コアには、CPUと非同期に動作し、データ転送を行うことができるデータ転送ユニット(DTU)が設けられている。
なお、エンジン制御ECU400に限らず、マルチコアプロセッサが搭載された他のECU(例えば、ナビゲーション装置等)を、自動並列化コンパイラ1により生成された並列化プログラムにより動作させても良い。また、車載装置に限らず、マルチコアプロセッサが搭載された情報家電等の電子装置を、自動並列化コンパイラ1により生成された並列化プログラムにより動作させても良い。
3−2.エンジン制御ECUの評価結果について
エンジン制御ECU400の制御システムのモデルは、ECUモデル,Driverモデル,Carモデル,Sensorモデルの4つのサブシステムを有している。マルチコアプロセッサ440としてRP2とV850E2Rを用いた場合における、エンジン制御ECU400の制御システム全体の性能評価や、各サブシステムの性能評価の結果について説明する。
<RP2での性能評価>
まず、ECUモデル,Driverモデル,Sensorモデル,Carモデルを、2コアにより並列動作するRP2と、1コアにより逐次動作するRP2により動作させた。なお、これらのモデルから生成されたプログラムには、サイズ優先の最適化が施されている。
ECUモデルに関しては、1コアのPR2では1周期あたりの実行時間が119μsであったのに対し、2コアのPR2では1周期あたりの実行時間が63μsに短縮された。また、速度向上率に関しては、2コアのPR2は、1コアのPR2に比べ、1.89倍の性能向上が得られた。
また、Driverモデルに関しては、1コアのPR2では1周期あたりの実行時間が41μsであったのに対し、2コアのPR2では1周期あたりの実行時間が27μsに短縮された。また、速度向上率に関しては、2コアのPR2は、1コアのPR2に比べ、1.52倍の性能向上が得られた。
また、Sensorモデルに関しては、1コアのPR2では1周期あたりの実行時間が40μsであったのに対し、2コアのPR2では1周期あたりの実行時間が26μsに短縮された。また、速度向上率に関しては、2コアのPR2は、1コアのPR2に比べ、1.52倍の性能向上が得られた。
また、Carモデルに関しては、1コアのPR2では1周期あたりの実行時間が2382μsであったのに対し、2コアのPR2では1周期あたりの実行時間が1291μsに短縮された。また、速度向上率に関しては、2コアのPR2は、1コアのPR2に比べ、1.84倍の性能向上が得られた。
次に、エンジン制御ECU400の制御システム全体を、4コアにより並列動作するRP2と、2コアにより並列動作するRP2と、1コアにより逐次動作するRP2により動作させた。なお、制御システム全体のモデルから生成されたプログラムには、サイズ優先の最適化が施されている。
その結果、1コアのPR2では1周期あたりの実行時間が4161μsであったのに対し、2コアのPR2では1周期あたりの実行時間が2397μsに、4コアのPR2では1周期あたりの実行時間が1273μsに短縮された。また、速度向上率に関しては、2コアのPR2は、1コアのPR2に比べ1.74倍の性能向上が得られ、4コアのPR2は、1コアのPR2に比べ3.27倍の性能向上が得られた。
<V850E2Rでの性能評価>
また、ECUモデルを、2コアにより並列動作するV850E2Rと、1コアにより逐次動作するV850E2Rにより動作させた。なお、ECUモデルから生成されたプログラムには、サイズ優先の最適化が施されている。
その結果、速度向上率に関して、2コアのV850E2Rは、1コアのV850E2Rに比べ、1.91倍の性能向上が得られた。
3−3.エンジン燃料噴射制御モデルでの評価結果について
また、自動並列化コンパイラ1によりエンジン燃料噴射制御モデルから生成された並列化プログラムを、RP2とV850E2Rで動作させた場合の性能評価の結果について説明する。
<RP2での性能評価>
エンジン燃料噴射制御モデルを、4コアにより並列動作するRP2と、2コアにより並列動作するRP2と、1コアにより逐次動作するRP2により動作させた。なお、エンジン燃料噴射制御モデルから生成されたプログラムには、サイズ優先の最適化が施されている。
その結果、1コアのPR2では1周期あたりの実行時間が157μsであったのに対し、2コアのPR2では1周期あたりの実行時間が87μsに、4コアのPR2では1周期あたりの実行時間が42μsに短縮された。また、速度向上率に関しては、2コアのPR2は、1コアのPR2に比べ1.81倍の性能向上が得られ、4コアのPR2は、1コアのPR2に比べ3.76倍の性能向上が得られた。
<V850E2Rでの性能評価>
また、エンジン燃料噴射制御モデルを、2コアにより並列動作するV850E2Rと、1コアにより逐次動作するV850E2Rにより動作させた。なお、エンジン燃料噴射制御モデルから生成されたプログラムには、サイズ優先の最適化が施されている。
その結果、速度向上率に関して、2コアのV850E2Rは、1コアのV850E2Rに比べ、1.79倍の性能向上が得られた。
[他の実施形態]
(1)本実施形態の自動並列化コンパイラ1は、自動並列化処理のS200にて逐次プログラムのインライン展開を行うと共に、S205にてローカル変数のリネームを行うが、これらの処理の双方または一方を行わない構成としても良い。このような場合であっても、逐次プログラムの構造によっては、同様の効果が得られる。
(2)本実施形態の自動並列化コンパイラ1は、生成した並列化プログラムに対し、投機的実行を行うための最適化を行っても良い。こうすることにより、より一層、並列化プログラムの性能の向上を図ることができる。
[特許請求の範囲との対応]
上記実施形態の説明で用いた用語と、特許請求の範囲の記載に用いた用語との対応を示す。
自動並列化処理のS200が並列化コンパイル方法の置換手順の一例に、S205がリネーム手順の一例に相当する。
また、S210が、並列化コンパイル方法,並列化コンパイラの分割手順と、並列化コンパイル装置の分割手段の一例に、S215が、並列化コンパイル方法,並列化コンパイラの特定手順,融合手順と、並列化コンパイル装置の特定手段,融合手段の一例に相当に相当する。
また、S220が、並列化コンパイル方法,並列化コンパイラの抽出手順と、並列化コンパイル装置の抽出手段の一例に、S225が、並列化コンパイル方法,並列化コンパイラのスケジューリング手順と、並列化コンパイル装置のスケジューリング手段の一例に相当する。
また、S225,S230が、並列化コンパイル方法,並列化コンパイラの生成手順と、並列化コンパイル装置の生成手段の一例に相当する。
また、PE,PG,プロセッサコアが、プロセッサユニットの一例に相当する。
また、エンジン制御ECU400が車載装置の一例に相当する。
1…自動並列化コンパイラ、3…FE、4…中間言語、5…MP、6…中間言語、7…BE、9…並列化API、50…マルチコアアーキテクチャ、70…自動並列化API標準解釈系、100…PC、110…ディスプレイ、120…HDD、130…CPU、140…ROM、150…RAM、160…入力装置、170…読取部、180…記憶媒体、250…自動車制御プログラム、400…エンジン制御ECU、410…ROM、420…RAM、430…通信部、440…マルチコアプロセッサ、450…センサ部、460…入出力ポート。

Claims (6)

  1. シングルプロセッサシステムにより実行される車載装置向けの組込みシステム用の逐次プログラムを、予め定められた方法に従い複数のマクロタスクに分割する分割手順(S210)と、
    前記マクロタスク間の制御依存性に基づき、異なる前記マクロタスクに分岐する処理を有する前記マクロタスクを始端タスクとして特定すると共に、該始端タスクを始点として順次実行される複数の一連の処理の全てにおいて共通して実行される前記マクロタスクのうちのいずれか一つを終端タスクとして特定する特定手順(S215)と、
    前記特定手順により特定された前記始端タスクと、該始端タスクを始点とする処理における前記終端タスクと、該始端タスクの実行後であって、該終端タスクの実行前に実行される全ての前記マクロタスクとを、新たな前記マクロタスクとして融合させる融合手順(S215)と、
    前記融合手順による融合がなされた後の前記マクロタスク間のデータ依存性に基づき、車載装置に搭載されたマルチプロセッサシステムを構成する複数のプロセッサユニットにより並列実行可能な前記マクロタスクを抽出する抽出手順(S220)と、
    並列実行可能な前記マクロタスクが異なる前記プロセッサユニットにより並列的に実行されるよう、それぞれの前記マクロタスクをいずれかの前記プロセッサユニットに割り当てるスタティックスケジューリングを行うスケジューリング手順(S225)と、
    前記スタティックスケジューリングの結果に基づき、前記マルチプロセッサシステムにより実行される並列化プログラムを生成する生成手順(S225,S230)と、
    を有することを特徴とする並列化コンパイル方法。
  2. 請求項1に記載の並列化コンパイル方法において、
    前記逐次プログラムにおける関数をコールする記述を、該関数における処理の記述に置き換えるインライン展開を行う置換手順(S200)をさらに備え、
    前記分割手順では、前記インライン展開がなされた前記逐次プログラムを、前記マクロタスクに分割すること、
    を特徴とする並列化コンパイル方法。
  3. 請求項1または請求項2に記載の並列化コンパイル方法において、
    前記逐次プログラムに記述された関数における特定の目的を実現するための記述の集まりを処理ブロックとし、関数における同一名称のローカル変数が用いられた異なる前記処理ブロックを特定すると共に、これらの処理ブロックにおいて異なる名称のローカル変数が用いられるよう、該関数の記述を変更するリネーム手順(S205)と、
    前記特定手順では、前記リネーム手順によりローカル変数の名称の変更がなされた後に、前記マクロタスク間の制御依存性を解析し、前記始端タスクと前記終端タスクとを特定すること、
    を特徴とする並列化コンパイル方法。
  4. シングルプロセッサシステムにより実行される車載装置向けの組込みシステム用の逐次プログラムを、予め定められた方法に従い複数のマクロタスクに分割する分割手順(S210)と、
    前記マクロタスク間の制御依存性に基づき、異なる前記マクロタスクに分岐する処理を有する前記マクロタスクを始端タスクとして特定すると共に、該始端タスクを始点として順次実行される複数の一連の処理の全てにおいて共通して実行される前記マクロタスクのうちのいずれか一つを終端タスクとして特定する特定手順(S215)と、
    前記特定手順により特定された前記始端タスクと、該始端タスクを始点とする処理における前記終端タスクと、該始端タスクの実行後であって、該終端タスクの実行前に実行される全ての前記マクロタスクとを、新たな前記マクロタスクとして融合させる融合手順(S215)と、
    前記融合手順による融合がなされた後の前記マクロタスク間のデータ依存性に基づき、車載装置に搭載されたマルチプロセッサシステムを構成する複数のプロセッサユニットにより並列実行可能な前記マクロタスクを抽出する抽出手順(S220)と、
    並列実行可能な前記マクロタスクが異なる前記プロセッサユニットにより並列的に実行されるよう、それぞれの前記マクロタスクをいずれかの前記プロセッサユニットに割り当てるスタティックスケジューリングを行うスケジューリング手順(S225)と、
    前記スタティックスケジューリングの結果に基づき、前記マルチプロセッサシステムにより実行される並列化プログラムを生成する生成手順(S225,S230)と、
    をコンピュータに実行させることを特徴とする並列化コンパイラ。
  5. シングルプロセッサシステムにより実行される車載装置向けの組込みシステム用の逐次プログラムを、予め定められた方法に従い複数のマクロタスクに分割する分割手段(S210)と、
    前記マクロタスク間の制御依存性に基づき、異なる前記マクロタスクに分岐する処理を有する前記マクロタスクを始端タスクとして特定すると共に、該始端タスクを始点として順次実行される複数の一連の処理の全てにおいて共通して実行される前記マクロタスクのうちのいずれか一つを終端タスクとして特定する特定手段(S215)と、
    前記特定手段により特定された前記始端タスクと、該始端タスクを始点とする処理における前記終端タスクと、該始端タスクの実行後であって、該終端タスクの実行前に実行される全ての前記マクロタスクとを、新たな前記マクロタスクとして融合させる融合手段(S215)と、
    前記融合手段による融合がなされた後の前記マクロタスク間のデータ依存性に基づき、車載装置に搭載されたマルチプロセッサシステムを構成する複数のプロセッサユニットにより並列実行可能な前記マクロタスクを抽出する抽出手段(S220)と、
    並列実行可能な前記マクロタスクが異なる前記プロセッサユニットにより並列的に実行されるよう、それぞれの前記マクロタスクをいずれかの前記プロセッサユニットに割り当てるスタティックスケジューリングを行うスケジューリング手段(S225)と、
    前記スタティックスケジューリングの結果に基づき、前記マルチプロセッサシステムにより実行される並列化プログラムを生成する生成手段(S225,S230)と、
    を備えることを特徴とする並列化コンパイル装置。
  6. シングルプロセッサシステムにより実行される車載装置向けの組込みシステム用の逐次プログラムを、予め定められた方法に従い複数のマクロタスクに分割する分割手順(S210)と、
    前記マクロタスク間の制御依存性に基づき、異なる前記マクロタスクに分岐する処理を有する前記マクロタスクを始端タスクとして特定すると共に、該始端タスクを始点として順次実行される複数の一連の処理の全てにおいて共通して実行される前記マクロタスクのうちのいずれか一つを終端タスクとして特定する特定手順(S215)と、
    前記特定手順により特定された前記始端タスクと、該始端タスクを始点とする処理における前記終端タスクと、該始端タスクの実行後であって、該終端タスクの実行前に実行される全ての前記マクロタスクとを、新たな前記マクロタスクとして融合させる融合手順(S215)と、
    前記融合手順による融合がなされた後の前記マクロタスク間のデータ依存性に基づき、車載装置に搭載されたマルチプロセッサシステムを構成する複数のプロセッサユニットにより並列実行可能な前記マクロタスクを抽出する抽出手順(S220)と、
    並列実行可能な前記マクロタスクが異なる前記プロセッサユニットにより並列的に実行されるよう、それぞれの前記マクロタスクをいずれかの前記プロセッサユニットに割り当てるスタティックスケジューリングを行うスケジューリング手順(S225)と、
    前記スタティックスケジューリングの結果に基づき、前記マルチプロセッサシステムにより実行される並列化プログラムを生成する生成手順(S225,S230)と、
    を有する並列化コンパイル方法により生成された前記並列化プログラムにより動作する前記マルチプロセッサシステムを備えることを特徴とする車載装置(400)。
JP2013125607A 2013-06-14 2013-06-14 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置 Active JP6018022B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013125607A JP6018022B2 (ja) 2013-06-14 2013-06-14 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
DE102014211047.5A DE102014211047A1 (de) 2013-06-14 2014-06-10 Parallelisierungskompilierverfahren, Parallelisierungskompilierer, Parallelisierungskompiliervorrichtung und Bordvorrichtung
US14/302,886 US9760355B2 (en) 2013-06-14 2014-06-12 Parallelizing compile method, parallelizing compiler, parallelizing compile apparatus, and onboard apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013125607A JP6018022B2 (ja) 2013-06-14 2013-06-14 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Publications (2)

Publication Number Publication Date
JP2015001807A true JP2015001807A (ja) 2015-01-05
JP6018022B2 JP6018022B2 (ja) 2016-11-02

Family

ID=52009970

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013125607A Active JP6018022B2 (ja) 2013-06-14 2013-06-14 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置

Country Status (3)

Country Link
US (1) US9760355B2 (ja)
JP (1) JP6018022B2 (ja)
DE (1) DE102014211047A1 (ja)

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016143378A (ja) * 2015-02-05 2016-08-08 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び、電子装置
JP2016143377A (ja) * 2015-02-05 2016-08-08 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び、電子装置
DE102016204970A1 (de) 2015-03-31 2016-10-06 Denso Corporation Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
DE102016204963A1 (de) 2015-03-31 2016-10-06 Denso Corporation Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102016204960A1 (de) 2015-03-31 2016-10-06 Denso Corporation Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102016208339A1 (de) 2015-05-14 2016-11-17 Denso Corporation Parallelisierungskompilierverfahren, parallelisierungskompilierer und fahrzeuggebundene vorrichtung
DE102016208178A1 (de) 2015-05-18 2016-11-24 Denso Corporation Softwaresegmentierungsverfahren, Softwaresegmentierungsvorrichtung und fahrzeugeigene Vorrichtung
DE102016216298A1 (de) 2015-09-11 2017-03-16 Denso Corporation Parallelisierungsverfahren, parallelisierungstool und an einem fahrzeug befestigte vorrichtung
JP2017073000A (ja) * 2015-10-07 2017-04-13 株式会社デンソー 並列化方法、並列化ツール、車載装置
DE102016219721A1 (de) 2015-10-12 2017-04-13 Denso Corporation Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
JP2017073083A (ja) * 2015-10-09 2017-04-13 株式会社デンソー 並列化方法、並列化ツール、車載装置
DE102016220340A1 (de) 2015-10-20 2017-04-20 Denso Corporation Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
DE102016221570A1 (de) 2015-11-06 2017-05-11 Denso Corporation Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
DE102016223939A1 (de) 2015-12-10 2017-06-14 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung
DE102017209697A1 (de) 2016-06-13 2017-12-14 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
DE102017209285A1 (de) 2016-06-13 2017-12-14 Denso Corporation Parallelization method, parallelization tool, and in-vehicle device
DE102017210126A1 (de) 2016-06-21 2017-12-21 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
EP3343351A1 (en) 2016-12-28 2018-07-04 Waseda University Parallel program generating method and parallelization compiling apparatus
JP2018109943A (ja) * 2016-12-28 2018-07-12 学校法人早稲田大学 並列化コンパイラ、並列化コンパイル装置、及び並列プログラムの生成方法
DE102017220181A1 (de) 2017-01-31 2018-08-02 Denso Corporation Parallelisierungsverfahren, Parallelisierungstool und fahrzeuginterne Steuervorrichtung
DE102017222292A1 (de) 2017-02-02 2018-08-02 Denso Corporation Parallelisierungsverfahren, parallelisierungs-tool und fahrzeuginterne steuervorrichtung
DE102018214521A1 (de) 2017-09-07 2019-03-07 Denso Corporation Parallelisierverfahren, Parallelisierwerkzeug und Fahrzeugvorrichtung
JP2019040317A (ja) * 2017-08-23 2019-03-14 富士通株式会社 情報処理装置、コンパイル方法及びコンパイルプログラム
JP2019074851A (ja) * 2017-10-13 2019-05-16 株式会社デンソー 電子制御装置
DE102019202228A1 (de) 2018-02-21 2019-08-22 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug, Mehrkernmikrocomputer und fahrzeuginterne Vorrichtung
DE102019202870A1 (de) 2018-03-14 2019-09-19 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und Multikernmikrocomputer
DE102019205674A1 (de) 2018-04-24 2019-10-24 Denso Corporation Parallelisierverfahren, Parallelisierwerkzeug und Mehrkern-Microcomputer
DE102019207629A1 (de) 2018-06-14 2019-12-19 Denso Corporation Mehrkernmikrocomputer und Parallelisierungsverfahren
WO2023238276A1 (ja) * 2022-06-08 2023-12-14 三菱電機株式会社 情報処理装置および情報処理方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6481515B2 (ja) * 2015-05-29 2019-03-13 富士通株式会社 情報処理装置、コンパイル方法、及びコンパイラプログラム
US10996989B2 (en) * 2016-06-13 2021-05-04 International Business Machines Corporation Flexible optimized data handling in systems with multiple memories
US10671361B2 (en) * 2016-10-25 2020-06-02 Paypal, Inc. Automatically determining data dependencies to facilitate code execution
CN106874031B (zh) * 2017-01-03 2020-08-28 海信视像科技股份有限公司 一种终端设备系统程序的启动方法及装置
US11496506B2 (en) * 2017-07-03 2022-11-08 Denso Corporation Program generation method and electronic control unit for changing importance of functions based on detected operation state in a vehicle
US10628142B2 (en) * 2017-07-20 2020-04-21 Texas Instruments Incorporated Loop break
US10884720B2 (en) * 2018-10-04 2021-01-05 Microsoft Technology Licensing, Llc Memory ordering annotations for binary emulation
WO2023177320A1 (en) * 2022-03-17 2023-09-21 Huawei Technologies Co., Ltd Smt core controller, compiler, and methods for executeting compiled run-time code on smt core controller

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02163833A (ja) * 1988-12-16 1990-06-25 Matsushita Electric Ind Co Ltd プログラム繰り返し構造のブロック分割方法並びに同期処理位置決定方法及びプログラム変換装置
JP2007328416A (ja) * 2006-06-06 2007-12-20 Univ Waseda ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04177681A (ja) 1990-11-13 1992-06-24 Canon Inc テープカセット
JP4177681B2 (ja) 2003-02-20 2008-11-05 学校法人早稲田大学 コンパイル方法、コンパイラ、およびコンパイル装置
JP4082706B2 (ja) 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US8261270B2 (en) * 2006-06-20 2012-09-04 Google Inc. Systems and methods for generating reference results using a parallel-processing computer system
US8136102B2 (en) * 2006-06-20 2012-03-13 Google Inc. Systems and methods for compiling an application for a parallel-processing computer system
JP4476267B2 (ja) 2006-10-06 2010-06-09 株式会社日立製作所 プロセッサ及びデータ転送ユニット
JP5224498B2 (ja) 2007-02-28 2013-07-03 学校法人早稲田大学 メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム
JP2009069921A (ja) * 2007-09-11 2009-04-02 Hitachi Ltd マルチプロセッサシステム
EP2065803A1 (en) * 2007-11-30 2009-06-03 Neutrino Concepts Ltd. Parallel pipelining and width processing
JP4784842B2 (ja) 2008-03-31 2011-10-05 学校法人早稲田大学 マルチプロセッサ及びマルチプロセッサシステム
JP4629768B2 (ja) 2008-12-03 2011-02-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化処理方法、システム、及びプログラム
JP4931978B2 (ja) 2009-10-06 2012-05-16 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化処理方法、システム、及びプログラム
US20110271265A1 (en) * 2010-04-28 2011-11-03 Drozdov Alexander Y Method of automatic generation of executable code for multi-core parallel processing
US8799880B2 (en) * 2011-04-08 2014-08-05 Siemens Aktiengesellschaft Parallelization of PLC programs for operation in multi-processor environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02163833A (ja) * 1988-12-16 1990-06-25 Matsushita Electric Ind Co Ltd プログラム繰り返し構造のブロック分割方法並びに同期処理位置決定方法及びプログラム変換装置
JP2007328416A (ja) * 2006-06-06 2007-12-20 Univ Waseda ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6016033818; 金羽木 洋平 外6名: '「自動車エンジン制御ソフトウェアにおけるマルチコア上での並列処理」' 情報処理学会研究報告 2012(平成24)年度(5)[CD-ROM] , 20130215, pp.1-8, 一般社団法人情報処理学会 *
JPN6016033819; 笠原 博徳 外4名: '「Fortranマクロデータフロー処理のマクロタスク生成手法」' 電子情報通信学会論文誌 第J75-D-I巻,第8号, 19920825, pp.511-525, 社団法人電子情報通信学会 *

Cited By (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016143378A (ja) * 2015-02-05 2016-08-08 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び、電子装置
JP2016143377A (ja) * 2015-02-05 2016-08-08 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び、電子装置
DE102016204970A1 (de) 2015-03-31 2016-10-06 Denso Corporation Parallelisierungskompilierverfahren, Parallelisierungskomplierer und Fahrzeugvorrichtung
DE102016204963A1 (de) 2015-03-31 2016-10-06 Denso Corporation Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
DE102016204960A1 (de) 2015-03-31 2016-10-06 Denso Corporation Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
JP2016192154A (ja) * 2015-03-31 2016-11-10 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び車載装置
JP2016192152A (ja) * 2015-03-31 2016-11-10 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び車載装置
JP2016192153A (ja) * 2015-03-31 2016-11-10 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び車載装置
JP2016218503A (ja) * 2015-05-14 2016-12-22 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、及び車載装置
DE102016208339A1 (de) 2015-05-14 2016-11-17 Denso Corporation Parallelisierungskompilierverfahren, parallelisierungskompilierer und fahrzeuggebundene vorrichtung
DE102016208178A1 (de) 2015-05-18 2016-11-24 Denso Corporation Softwaresegmentierungsverfahren, Softwaresegmentierungsvorrichtung und fahrzeugeigene Vorrichtung
DE102016216298A1 (de) 2015-09-11 2017-03-16 Denso Corporation Parallelisierungsverfahren, parallelisierungstool und an einem fahrzeug befestigte vorrichtung
JP2017054447A (ja) * 2015-09-11 2017-03-16 株式会社デンソー 並列化方法、並列化ツール、車載装置
DE102016219403A1 (de) 2015-10-07 2017-04-13 Denso Corporation Parallelisierungsverarbeitung, parallelisierungswerkzeug und fahrzeuggebundene vorrichtung
JP2017073000A (ja) * 2015-10-07 2017-04-13 株式会社デンソー 並列化方法、並列化ツール、車載装置
JP2017073083A (ja) * 2015-10-09 2017-04-13 株式会社デンソー 並列化方法、並列化ツール、車載装置
DE102016219449A1 (de) 2015-10-09 2017-04-13 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugverbaute Einrichtung
DE102016219721A1 (de) 2015-10-12 2017-04-13 Denso Corporation Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
DE102016220340A1 (de) 2015-10-20 2017-04-20 Denso Corporation Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
JP2017078938A (ja) * 2015-10-20 2017-04-27 株式会社デンソー 並列化方法、並列化ツール、車載装置
DE102016221570A1 (de) 2015-11-06 2017-05-11 Denso Corporation Parallelisierungsverfahren, parallelisierungswerkzeug und fahrzeugverbaute einrichtung
JP2017091098A (ja) * 2015-11-06 2017-05-25 株式会社デンソー 並列化方法、並列化ツール、車載装置
DE102016223939A1 (de) 2015-12-10 2017-06-14 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeugeigene Vorrichtung
JP2017107448A (ja) * 2015-12-10 2017-06-15 株式会社デンソー 並列化方法、並列化ツール、車載装置
DE102017209697A1 (de) 2016-06-13 2017-12-14 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
DE102017209285A1 (de) 2016-06-13 2017-12-14 Denso Corporation Parallelization method, parallelization tool, and in-vehicle device
JP2017224046A (ja) * 2016-06-13 2017-12-21 株式会社デンソー 並列化方法、並列化ツール、車載装置
DE102017210126A1 (de) 2016-06-21 2017-12-21 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und fahrzeuginterne Vorrichtung
EP3343351A1 (en) 2016-12-28 2018-07-04 Waseda University Parallel program generating method and parallelization compiling apparatus
CN108255492A (zh) * 2016-12-28 2018-07-06 学校法人早稻田大学 并行程序的生成方法以及并行化编译装置
JP2018109943A (ja) * 2016-12-28 2018-07-12 学校法人早稲田大学 並列化コンパイラ、並列化コンパイル装置、及び並列プログラムの生成方法
US10698670B2 (en) 2016-12-28 2020-06-30 Waseda University Parallel program generating method and parallelization compiling apparatus
DE102017220181A1 (de) 2017-01-31 2018-08-02 Denso Corporation Parallelisierungsverfahren, Parallelisierungstool und fahrzeuginterne Steuervorrichtung
JP2018124876A (ja) * 2017-02-02 2018-08-09 株式会社デンソー 並列化方法、並列化ツール、車載制御装置
DE102017222292A1 (de) 2017-02-02 2018-08-02 Denso Corporation Parallelisierungsverfahren, parallelisierungs-tool und fahrzeuginterne steuervorrichtung
JP2019040317A (ja) * 2017-08-23 2019-03-14 富士通株式会社 情報処理装置、コンパイル方法及びコンパイルプログラム
DE102018214521A1 (de) 2017-09-07 2019-03-07 Denso Corporation Parallelisierverfahren, Parallelisierwerkzeug und Fahrzeugvorrichtung
JP2019074851A (ja) * 2017-10-13 2019-05-16 株式会社デンソー 電子制御装置
DE102019202228A1 (de) 2018-02-21 2019-08-22 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug, Mehrkernmikrocomputer und fahrzeuginterne Vorrichtung
DE102019202870A1 (de) 2018-03-14 2019-09-19 Denso Corporation Parallelisierungsverfahren, Parallelisierungswerkzeug und Multikernmikrocomputer
JP2019159931A (ja) * 2018-03-14 2019-09-19 株式会社デンソー 並列化方法、並列化ツール、及びマルチコアマイコン
JP7139633B2 (ja) 2018-03-14 2022-09-21 株式会社デンソー 並列化方法、並列化ツール、及びマルチコアマイコン
DE102019205674A1 (de) 2018-04-24 2019-10-24 Denso Corporation Parallelisierverfahren, Parallelisierwerkzeug und Mehrkern-Microcomputer
DE102019207629A1 (de) 2018-06-14 2019-12-19 Denso Corporation Mehrkernmikrocomputer und Parallelisierungsverfahren
WO2023238276A1 (ja) * 2022-06-08 2023-12-14 三菱電機株式会社 情報処理装置および情報処理方法

Also Published As

Publication number Publication date
DE102014211047A1 (de) 2014-12-18
JP6018022B2 (ja) 2016-11-02
US20140372995A1 (en) 2014-12-18
US9760355B2 (en) 2017-09-12

Similar Documents

Publication Publication Date Title
JP6018022B2 (ja) 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP6319880B2 (ja) 並列性の抽出方法及びプログラムの作成方法
JP4936517B2 (ja) ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP4784827B2 (ja) ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
KR101839544B1 (ko) 이종 코어의 자동 부하 균형
Cong et al. Source-to-source optimization for HLS
JP6427054B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
Karim et al. A multilevel computing architecture for embedded multimedia applications
Yazdanpanah et al. Analysis of the task superscalar architecture hardware design
JP6427053B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
JP6488739B2 (ja) 並列化コンパイル方法、及び、並列化コンパイラ
JP6488738B2 (ja) 並列化コンパイル方法、及び、並列化コンパイラ
Chandraiah et al. Code and data structure partitioning for parallel and flexible MPSoC specification using designer-controlled recoding
Karim et al. The Hyperprocessor: A template System-on-Chip architecture for embedded multimedia applications
JP6933001B2 (ja) 並列化方法、並列化ツール
Wada et al. A parallelizing compiler cooperative heterogeneous multicore processor architecture
Rafique et al. Synthesis of parallel software from heterogeneous dataflow models
Pop et al. Automatic streamization in GCC
Jammer Characterization and translation of OpenMP use cases to MPI using LLVM
Ha et al. Software synthesis in the ESL methodology for multicore embedded systems
Zhong et al. Accelerating Data Analytics Kernels with Heterogeneous Computing
Aydonat Compiler support for a multimedia system-on-chip architecture
Kwon et al. Data-parallel code generation from synchronous dataflow specification of multimedia applications
Cheng Accelerator Synthesis and Integration for CPU+ FPGA Systems
Papakonstantinou High-level automation of custom hardware design for high-performance computing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20151111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160829

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160929

R150 Certificate of patent or registration of utility model

Ref document number: 6018022

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250