JP2007328416A - ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ - Google Patents

ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ Download PDF

Info

Publication number
JP2007328416A
JP2007328416A JP2006157308A JP2006157308A JP2007328416A JP 2007328416 A JP2007328416 A JP 2007328416A JP 2006157308 A JP2006157308 A JP 2006157308A JP 2006157308 A JP2006157308 A JP 2006157308A JP 2007328416 A JP2007328416 A JP 2007328416A
Authority
JP
Japan
Prior art keywords
program
compiler
processor
processing
information
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
JP2006157308A
Other languages
English (en)
Other versions
JP4784827B2 (ja
Inventor
Hironori Kasahara
博徳 笠原
Keiji Kimura
啓二 木村
Hiroaki Kano
裕明 鹿野
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
Original Assignee
Waseda University
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 filed Critical Waseda University
Priority to JP2006157308A priority Critical patent/JP4784827B2/ja
Priority to KR1020070019519A priority patent/KR100878917B1/ko
Priority to CNA2007100848260A priority patent/CN101086710A/zh
Priority to US11/716,563 priority patent/US8051412B2/en
Priority to EP07251186.8A priority patent/EP1881405B1/en
Publication of JP2007328416A publication Critical patent/JP2007328416A/ja
Application granted granted Critical
Publication of JP4784827B2 publication Critical patent/JP4784827B2/ja
Expired - Fee Related 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/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems

Landscapes

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

Abstract

【課題】ヘテロジニアスマルチプロセッサの構成に合わせた並列化を意識することなく、短期間にHCMP1の性能を最大限引き出すこと。
【解決手段】ヘテロマルチプロセッサシステムにおいて、コンパイラにより自動的に並列性を持つタスクを抽出すると共に、処理対象となる入力プログラムから専用プロセッサで効率良く処理できる部分の抽出と処理時間の見積もりを行うことで、PUの特性に合わせて当該タスクを配置することで当該複数のPUを並行して効率よく動かすスケジューリングを実施する。
【選択図】図2a

Description

本発明は、複数の異種プロセッサユニットで構成されるマルチプロセッサシステムにおいて、当該複数プロセッサユニットを効率よく動作させることを可能とする実行プログラムを生成するコンパイル方法及びコンパイラに関する。
半導体製造技術の進歩による素子の微細化により、膨大な数のトランジスタを集積することが可能となっている。それと同時にプロセッサの高周波数化も進むが、動作時電力の増加、またリーク電流に起因する待機時電力の増加により、従来のプロセッサが歩んできた動作周波数の向上と論理方式の改善により達成してきた性能向上に限界が見え始めている。一方で、自動車のナビゲーションシステム、携帯電話、デジタルテレビなど、画像、音声、データベース情報など多様なデータを同時に扱うデジタル民生機器が登場し、特性の異なる膨大なデータを短時間にかつ低電力に処理することが強く求められている。
そこで現在、性能改善と低電力化を実現する手段として、従来の単一チップで提供された汎用プロセッサ(CPU)を複数個単一チップ上に集積し、処理を並列で行うことで、動作周波数を向上させなくとも、高い演算性能を得ることが可能な、マルチプロセッサシステムが有望となっている。将来、微細化がさらに進むことで、PUをオンチップで100個〜1000個積載することも可能となると予測される。また、特に組み込み機器向けシステムにおいては、無線や画像、音声など定型的なデジタル信号処理を扱うことも多く、性能改善と低電力化を両立する手段として、同一の汎用プロセッサ(CPU)、つまり同一の命令セットで構成及び演算性能が同一な汎用プロセッサを複数個集積したホモジニアスなマルチプロセッサシステム以外に、複数個のCPUに加えある特定の処理を非常に効率良く(高速にかつ低電力に)処理可能な専用プロセッサ、アクセラレータ、といった命令セットが異種である、様々な種類のPUを複数個単一チップで搭載し、特に一定のアプリケーションを対象とし、高い演算効率を目指したヘテロジニアスマルチプロセッサシステム(HCMP)が現在提案されている。専用プロセッサの一例として、非特許文献1のような動的再構成可能プロセッサ(DRP)がある。
このようなマルチプロセッサシステムにおいて、PUの数に比例した演算性能を得るためには、搭載されたPUを同時に稼動させプログラムを処理する必要がある。しかしながら、通常の入力プログラムは処理が時系列で逐次的に記述されているため、複数のPUを搭載するにも関わらず、当該複数PUに比例して期待される演算性能を得ることができない。この問題点を解決するための一つの方法として、プログラム開発者が自らプログラムの並列性を考慮し、当該プログラムを実行させるマルチプロセッサシステムの構成に基づいて、当該プログラムを複数のPUで実行させるための並列化コードを付加する必要がある。しかしながら、本手法はPUが数個のシステムにおいては有効であるが、将来の数十〜数千といった数のPUが積載されたシステムにおいては、また特にPUが異種で構成されるHCMPの場合は、開発時間、実効性能の点で実用的ではない。
<公知例:マルチグレイン並列化コンパイラ>
そこで、ホモジニアスマルチプロセッサにおいては、プログラムの並列性を自動で抽出し、複数のPUに処理を分散し処理性能を向上させる自動並列化コンパイラが提案されている。つまり、入力プログラムを解析し、当該プログラム中から並列に動作可能な部分を抽出し、当該部分を複数のPUに割り当て同時に実行することを可能とする、自動並列化コンパイラの研究がすでに行われている。例えば、入力ソースプログラムを解析し、当該プログラムをサブルーチンやループなどさまざまな粒度のブロック(タスク)に分割し、当該複数タスク間の並列性を解析すると共に、タスクとそれらがアクセスするデータをキャッシュあるいはローカルメモリに適合するサイズに分割し、それらを各PUに対して当該タスクを最適割り当てすることによって、マルチプロセッサシステムを効率よく動かす目的プログラムを生成するコンパイル方式が、で特許文献1に開示されている。またマルチグレイン並列処理の機能をサポートするチップマルチプロセッサのアーキテクチャが、特許文献2で開示されている。
<公知例:非対称マルチプロセッサ、電力スケジューリング>
また、ヘテロジニアスマルチプロセッサ(HCMP)においては、その異種構成のプロセッサ群の性能を引き出すためのタスク割り当て手段として、画像処理など予め処理の手順が判明しているアプリケーションにおいて、各処理の特性に合わせてCPUやDSPなどの種類の異なる複数のプロセッサを組み合わせ、当該プロセッサ上での処理時間や消費電力情報を予め測定し与えておくことで、当該情報により動的に一連の処理を当該各プロセッサに割り当てる手法が、特許文献3で開示されている。
<公知例:自動ベクトルコンパイラ>
また、HCMPではプロセッサの種類前に専用の実行コードを生成する必要があるが、その生成手段として、例えば専用プロセッサがベクトル演算器である場合は、プログラムよりベクトル演算可能な部分(ループ)をデータ依存解析より抽出し、ベクトル演算命令を生成する自動ベクトルコンパイラが非特許文献2及び非特許文献3で開示されている。
特開2004−252728 特開2001−175619 特開2004−252900 津野田、他、「デジタルメディア向け再構成型プロセッサFE−GAの概要」、電気電子情報通信学会技術報告、RECONF−65 田中、岩澤、「ベクトル計算機のためのコンパイル技術」、情報処理、第31巻、第6号、平成2年6月5日発行 Kuck,D.J.,et.al.,:Dependence Graphs and Compiler Optimizations, Proc. 8th Annual ACM Symposium on Principles of Programming Languages,pp.177−189(1981)
現在、自動車のナビゲーションシステム、携帯電話、デジタルテレビなどといった、画像、音声、データベース情報など多様なデータを同時に扱う新アプリケーションが生まれる中で、様々な種類の入力データを、当該データ夫々に最適な方法で同時に処理をするために、プロセッサは複数種類のPUを搭載するHCMPが有望となると考えられる。従来のマルチプロセッサシステムでは、特許文献2で開示されているように同じ構成のPUを複数搭載したホモジニアスなプロセッサシステムであった。しかしながらこのように、多様なアプリケーションが同時に多種のPU上で処理される将来のヘテロジニアスマルチプロセッサシステムにおいて、搭載するPUの種類と数に比例して処理性能を得るためには、PUの種類を考慮したプログラムの並列化と配置が必須となることに発明者は気づいた。
また従来、複数のPU上でプログラムを効率よく実行するためには、小規模なプログラムや処理シーケンスが常に固定的に決定できる応用に対しスケジューリングを行うための実行時間などのスケジュール情報を得るために、一度プログラムを当該システム上で実行し測定することが必要となり、当該測定値を元に開発者が予め当該スケジュール情報を手動で生成する必要があった。この場合、事前に処理の内容やシーケンスが不明な一般のプログラムの場合、特に規模が大きな場合は、当該情報を事前に手動で生成することが困難となる。またPUの種類や数が増加した場合も同じく、当該情報を手動で生成することが困難となる。そこで発明者は、プログラムをコンパイルする時、PUの構成に基づきコンパイラが予め事前の処理時間を見積もり、コンパイル時に処理順序を静的に決定できる部分に関しては事前に処理手順を決定しておき、また実行時にならないと処理順序が決定できない部分に関しては、コンパイラが実行時間を含んだ処理情報に基づいたスケジューリングを動的に行うプログラムを生成することで、一般のプログラムを多様なPUで構成されるマルチプロセッサシステム上で効率よく処理できることに気づいた。
そこで本発明の目的は、多様なPUを積載するHCMPにおいて、処理対象となる入力プログラムから当該HCMPが持つ専用プロセッサ(またはアクセラレータ)で処理が可能なプログラム部分をユーザの指定に基づき、または当該専用プロセッサ向けの実行コードを生成するコンパイラが当該専用プロセッサにて効率良く実行可能な部分を抽出することにより、その当該指定並びに当該抽出されたタスクを含む形で、並列化コンパイラが自動的に並列性を持つタスクを抽出し、各PUの特性に合わせて当該タスクを配置することで当該PUを効率よく動かし、さらに当該PUの処理量を見積もることで動作周波数や電源電圧を最適化する、コードを生成し目的プログラムに付加するコンパイラ及びその最適化を可能とするヘテロジニアスマルチプロセッサ向け並列化コンパイラシステムを提供することで、ユーザがHCMPにあわせた並列化を意識することなく、短期間にHCMPの性能を最大限引き出すことを可能とすることにある。
本発明は、ヘテロジニアスマルチプロセッサ上で、プログラムを当該プロセッサが積載する各種プロセッサユニットの処理特性に合わせたプログラム分割手段となるグローバルコンパイラを提供する。またさらに、分割したプログラムを各種プロセッサユニットの性能を最大限活用できるよう、また当該複数プロセッサユニットを同時に並行して動作させることで、効率よく処理ができるよう、前記分割プログラムをスケジューリングする手段となるグローバルコンパイラを提供する。
その具体的な方法としては、単一または複数種類のプロセッサユニットを複数個有するヘテロジニアスマルチプロセッサにおいて、前記入力プログラムを、前記システムが持つプロセッサユニットの種別毎に予め用意した前記プロセッサユニット専用のコード生成コンパイラにて、前記入力プログラムを解析することで前記プロセッサユニット毎に実行可能なプログラムの部分を抽出し、当該プログラム部分を指定する処理プロセッサ情報を生成する。また、前記入力プログラムの解析を行って当該入力プログラムの並列性を抽出し、前記処理プロセッサ情報に基づいて前記プロセッサユニットに対するプログラム部分の割り当て(スケジューリング)を行う処理と、前記割り当てたプログラム部分を前記プロセッサユニット毎の出力コードとして出力する処理を行う。以上の処理を計算機に実行させことを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラにて、本課題を解決する。
また、前記グローバルコンパイラにおいて、プログラムの部分を実行すべきプロセッサを指定する前記プロセッサ情報を指示文として入力プログラムに挿入する処理を行うことで、課題を解決する。
また、前記グローバルコンパイラにおいて、前記プロセッサ情報に加え、前記プロセッサにて実行した際の実行時間、データ転送時間、制御時間等をコスト情報として生成する処理を行うことで、課題を解決する。
またさらに、前記コスト情報を指示文として入力プログラムに挿入する処理を行うことで、課題を解決する。
本発明により、多様なPUを集積するマルチプロセッサシステムにおいて、当該PUを効率よく動作させるプログラムの分割配置および制御コードを生成する複数コンパイラ連携プログラム並列化手法により、当該プロセッサシステムの性能を最大限活用しつつ、低電力にて効率よく処理することが可能となる。また、さらにはソフトウェア開発者がプロセッサの構成を意識することなく、短時間で効率良いプログラム作成が可能となる。
以下、本発明の一実施形態を添付図面に基づいて説明する。
<実施形態の全体構成>
本発明の実施形態として、まず本発明で提供する並列化コンパイル方式の適用対象となるヘテロジニアスマルチプロセッサシステム(以下、HCMP)1の構成を図1のブロック図を参照しながら説明する。HCMP1では、複数の異種のプロセッサユニット(PU)、共有メモリ(CSM)で構成する。当該各PUは、するインタコネクション・ネットワーク(LBUS)に接続される。また、当該SMはLBUSに接続される。当該各PUは、当該PUのプロセッサコア、メモリ等の各部位に対し電源電圧及び動作クロックを供給する、電源電圧・クロック周波数制御回路が接続される。本実施形態ではPUの種類と個数を、2個の汎用処理プロセッサ(CPU)、1個の信号処理プロセッサ(DSP)、2個の動的再構成可能プロセッサ(DRP)で構成したが、PUの種類や数は本実施形態で示した限りではなく、さまざまな構成を取り得る。
各PUは当該PUで処理されるプログラムやデータを一時的に保存するローカルメモリ(またはキャッシュ)(LM)及び、当該PUに対する電源電圧や動作周波数を決定する周波数・電源電圧制御レジスタ(FVR)、を具備する。なお、ローカルメモリ(LM)24は、他のPU及び当該LMを持つ自PUからアクセス可能なグローバルアドレスがマッピングされている空間と、当該自PUのみアクセス可能なプライベートアドレスがマッピングされている空間に分割される。なお、LBUSに接続された共有メモリ(CSM)はグローバルアドレスがマッピングされており、全PUからアクセス可能である。なお以上は本発明における適用構成の一例に過ぎず、実施方法としてはこの限りでない。例えば図1では表現されていないが、LBUSには入出力処理、割り込み処理、タイマ、デバッグ回路、等の周辺回路を必要に応じて接続することとなる。また、バスブリッジを介して、同種類または異種類のバスを階層的に接続することも考えられる。
このように、複数の種類のPUが持つ性能を引き出すためには、各PUを並行して動作させること、また特に専用プロセッサであるDRPやDSPには当該プロセッサを効率良く稼動させることが可能な処理を割り振ることが必要となる。
<グローバルコンパイラの構成>
HCMP1向けプログラム並列化並びに実行コード生成の処理の一例を示すフローチャートを図2aに図示する。入力されるプログラム200(以下、入力プログラム)は通常、逐次的に記述されるが、本フローチャートによりHCMP1が持つPUを最大限活用できるように、入力プログラム200のタスク分割と並列性解析、並びにスケジューリングが実施される。本発明では図2aで示したフローチャートによる処理手順を、グローバルコンパイラ2と呼ぶこととする。以下図2aに示すグローバルコンパイラ2の全体のフローチャートをまず簡単に説明し、次に各コンパイル段階におけるフローを詳細に説明する。なお、図2aに示す処理は、予め用意したコンピュータによって実行されるものである。
グローバルコンパイラ2への入力は、ユーザがC言語やFORTRANなどの高級言語を用いて処理ステップを逐次的に記述した入力プログラム200となる。また、さらにグローバルコンパイラ2がターゲットとするHCMP1の構成情報204もあわせて入力する。図3に入力プログラム200の一例を示す。入力プログラム200はこのようにループやサブルーチン、条件分岐などの制御構造を持ち、HCMP1並列化コンパイラではこの構造を手がかりに構造単位でタスク分割を行うことになる。
<HCMPアーキテクチャ構成情報>
続いてHCMP1の構成情報の例を図4に示す。図2aに示したアーキテクチャ構成情報204には、図1に示したHCMP1の構成のアーキテクチャ情報を、グローバルコンパイラによる並列化に必要なパラメータ情報として予め入力する。アーキテクチャ構成情報204へ入力する通常パラメータ情報としては、PUの種類、数、PUの対バス動作速度比、各PUが持つメモリの種類、メモリサイズ、及びメモリアクセスレイテンシ、HCMP1が持つメモリ種類、サイズ、レイテンシ、等が定義される。例えば、図4の1行目、「pu 0 cpu clock=2 ldm=128KB,2cyc dsm=16KB,1cyc icache=8KB,2way」は、先頭よりその意味を説明すると、「PU」はパラメータの種別を示しここではプロセッサユニットに関する属性を表現する。「0」はPU番号をあらわし、「cpu」はプロセッサ種別としてCPUであることを示す。次に「clock=2」は当該PUのバスに対する速度比が2倍であることを、「ldm=128KB、2cyc」はローカル・データ・メモリ(LDM)を保持しそのサイズが128KB、アクセスレイテンシが2サイクルであることを表現する。
さらに「dsm=16KB、1cyc」は分散共有メモリを保持しそのサイズが16KB、アクセスレイテンシが1サイクル、「icache=8KB、2way」は8KBの2ウェイ命令キャッシュを持つことを示している。また9行目はHCMP1が持つ集中共有メモリ(CSM)を示し、「onchip」はチップ上に搭載されたことを意味している。
つまり、この構成情報より、HCMP1が図1で示すように、汎用プロセッサCPU×4、信号処理プロセッサDSP×2、及び動的再構成可能プロセッサ(DRP)×2で構成され、各PUはローカルメモリを保持することになる。なお、構成情報としては、図4に示した以外にも、例えばバスの構成、各PUが持つ電力モードの種別、等を指定することも考えられる。例えば、バスのネットワーク構成としては、双方向の1本バスや3本バス、リング状のバス、クロスバ接続、等が表現できる。またバストランザクション方式(アトミックトランザクションか、バスの要求と返答を分離できるスプリットトランザクションか)の指定がある。また各PEがどのバスに接続されているか、またはクラスタ構造がとられた場合どのドメインのバスに属しているか、等も指定できる。
また電力モードの種別としては、クロック停止や電源遮断などの電力制御モードの定義や各モードにおける電力制御時の効果の記述も考えられる。本構成情報は、グローバルコンパイラが並列化スケジューリングする際に必要となる処理時間や電力といったコストを導出するために必要となる。また並列化のためのプログラム分割を行う際も、PUが持つメモリ容量を考慮する必要があるため、本構成ファイルの情報を用いることとなる。
<グローバルコンパイラの処理フロー>
次に、各プロセッサ向けコード生成コンパイラ210と並列化コンパイラ211を連携させ、入力プログラム200をヘテロジニアスマルチプロセッサ(HCMP)1上で並列実行する実行コード206に変換する、グローバルコンパイラ2の処理フローを説明する。まず、入力プログラム200はHCMP1が持つプロセッサの種類毎に用意された複数の各種プロセッサ向けコード生成コンパイラACCCPL210にて順次処理される。特にHCMP1が持つ専用プロセッサは通常のCPUとは命令セットが異なるため、並列化スケジューリング時に必要な処理コストを別途見積もる必要があり、またPUの種別によっては効率的に処理可能なプログラム構造が限られていることが多くあるため、HCMP1が持つプロセッサ種類毎に用意された各種プロセッサ向けのコード生成コンパイラACCPL210で処理を行うことで、次段の並列化コンパイラ211が必要とする情報を生成する。
なお、ヘテロジニアスマルチプロセッサ1では、命令セットが異なる汎用プロセッサが複数持つこともできる。この際も、汎用プロセッサといえどもアーキテクチャの違いで効率良く処理可能なプログラム構造が異なるため、プログラム構造に対する実行時間等の各種情報を生成することもできる。
つまり、ACCPL210は入力プログラム200に対し、各種プロセッサでの最適処理部の指定、並びに当該処理部の当該各種プロセッサで処理を行った際の処理時間(処理コスト=実行サイクル数)を求め、対象プロセッサ情報として当該入力プログラム200に付加する。なお、当該処理段階でのACCPL210の出力は、入力プログラム200に上述した情報を付加したプログラム201となる。また、前記対象プロセッサ情報は入力プログラム200に付加するのではなく、前記情報に加え、当該情報に対する当該入力プログラム200の位置を示す情報を別途ファイル等(209)で生成しておくことも考えられる。また、予めユーザによる処理プロセッサ指定などで、予め固定的に処理プロセッサが決められているプログラム部分に対しては、この段階で当該プロセッサ向け実行コード205を別に生成しておいて、並列化スケジューリング後に当該実行コードをリンクしてHCMP1向け実行コードとすることも可能である。
次に、ACCPL210における処理結果(対象プロセッサ情報付加プログラム)201を利用して並列化コンパイラ(PRLCPL)はプログラム構造を解析し、プログラムの分割と分割したプログラム単位(タスク)の並列性を抽出し、通常CPUで処理した際のコストを求め、並列性を元に同時に実行できる処理を複数のPUに全体の処理時間が短くなるようタスクの割り当てを行う。このとき、HCMP1上の専用プロセッサで処理できる部位に関しては、入力プログラム200に付加された情報を活用して、専用プロセッサに処理を割り当てることで全体の終了時間が早くなると判断できる場合は、当該専用プロセッサにタスク割り当てを行うこととなる。
また、専用プロセッサ資源の制約により当該専用プロセッサが混雑している場合で、通常のCPUで処理したほうが早くなると判断できる場合は、汎用プロセッサにタスクを割り当てる。スケジューリングの結果、分割されたタスク毎に対応する入力プログラム201に対し、タスクの目印となる指示文、処理対象となるPUを示す指示文(並列化情報)が並列コンパイラにより挿入・付加される。また、各タスクに対応するプログラムで用いるデータの、HCMP1上でのメモリ配置を示す指示文も併せて挿入されることとなる。
続いてこのタスク分割、配置を示す指示文が付加された入力プログラム202は、再度汎用プロセッサCPU及び専用プロセッサを含むPU種別毎の専用プロセッサ向けコンパイラACCPL210で処理することにより、各PUの実行コードを生成する。ACCCPLに入力されるプログラムには、処理対象となるPUが明記されているため、各PU向けコード生成コンパイラは各コンパイラが対象とするPUでの処理が指定された部分のみを解析し、実行コード203に変換すれば良い。
なお、スケジューリング全体の最適化をさらに行うために、並列化コンパイラPRLCPL211で生成されたスケジューリング情報等のコンパイラ情報208、またACCPL210で並列化コンパイラPRLCPL211によるスケジューリングに基づく実行コード生成の結果得た、より正確なコスト情報を含むコンパイラ情報207を、並列化コンパイラPRLCPL211に入力し(221)、再度スケジューリングを実行することも可能である。HCMP1における実行コードの最適化をより深く行いたいときは、この処理(210)を繰り返すことで、プログラム全体の最適化が実行される。
なお、図2bに示す通り、当該コンパイラ情報207、208をグローバルコンパイラ2の処理の初段に位置する各種プロセッサ向けコード生成コンパイラ210に入力し(223)、再度コード生成コンパイラ210による各種プロセッサ向けタスク抽出と実行時間評価を行うこともできる。
ACCPL210で生成された実行コード203は、リンカ212にて各プログラムやデータのHCMP1上でのメモリ位置を指定し、また第1段階の専用プロセッサ向けコンパイラACCCPL210で生成された実行コードを使用することが並列化コンパイラ211の出力プログラム202に指定されていた場合は当該実行コードを含め、単一のHCMP1向けの実行コード(オブジェクト)206としてマージする。実行オブジェクト206はディスク装置やオフチップ共有メモリ(CSM)上に置かれ、実行時にオブジェクトコードをロードすることにより、PU毎のプログラムが各PUに読み込まれ、実行を開始することとなる。
なお、実際にHCMP1チップまたはHCMPシミュレータ上で実行し、その結果得られたタスク実行時間、データ転送時間、バス利用時間、電力制御効果、キャッシュミス率、等の情報を実行プロファイル情報231として収集し、次回のコンパイルに活用することもできる。つまり、当該実行プロファイル情報を並列化コンパイラPRLCPL211に入力して、実行時間をより短縮する、また消費電力をより低減することを目的として、スケジューリング全体の最適化を行うこともできる。なお、図2bに示す通り、当該コンパイラ情報プロファイル情報231をグローバルコンパイラフローの初段に位置する各種プロセッサ向けコード生成コンパイラ210に入力し(222)、コード生成コンパイラ210による各種プロセッサ向けタスク抽出と実行時間評価に活用することもできる。
<各種プロセッサ向けライブラリを用いたコンパイルフロー>
各種専用プロセッサは、記述されたプログラムを各プロセッサ向けコード生成コンパイラ210にて各プロセッサ毎の実行コードに変換し、当該実行コードを処理するが、専用プロセッサによっては必ずしも実行コードに変換するコード生成コンパイラが用意されているとは限らない。例えば、信号処理プロセッサ(DSP)のようなプロセッサでは、通常のC言語の形で書かれたプログラムをDSP向け実行コードに変換することは難しい。
一般的には、ある機能を実現する実行コードを予めコンパイラを用いずアセンブリ等でライブラリとして記述しておき、ユーザが当該プロセッサを用いる場合は当該ライブラリを呼び出す形が取られる。また、通常プログラムを解釈しない、動作をハードウェア的に定義した専用処理回路は、当該回路に対しデータを与え処理を起動する、といった制御動作をライブラリとして定義することになる。
このようにライブラリベースで各種プロセッサを用いる場合も、グローバルコンパイラ2は対応する。具体的には、図2cに示すように、各種プロセッサライブラリ230を導入する。当該ライブラリ230は各種プロセッサ向けの実行コードや制御コード、並びに当該処理の実行時間といったコスト情報232が格納されている。ユーザはプログラム200においてサブルーチンコールの形でライブラリ230を呼び出すことができる。例えば、図3の入力プログラム例で「func3」のサブルーチンコール301と同様に記述できる。この際、コスト情報232を図3の「#pramga hcmp assign dsp」(300)のように指示文でプログラム中に明示するか、後段の並列化コンパイラPRLCPL211が各種プロセッサライブラリのコスト情報232を参照する。並列化コンパイラ211以下の処理は、図2a、図2bで示したフローと同様である。
<各種プロセッサ向けコンパイラの処理フロー>
以上が、HCMP1向けグローバルコンパイラ2の処理フローとなる。次に、各種専用プロセッサ向けコンパイラACCCPL210の処理手順を説明する。まず、並列化コンパイラPRLCPL211に入力するため、ACCCPL210の出力プログラム201を生成する処理フローを図5aに図示する。
以下では、プロセッサとしてDRP等の専用処理プロセッサを例に説明する。ACCCPL210はまずプログラム200の構造の解析を行い、コンパイラ内部で変数や演算、制御構造単位に分割した中間コードを生成する(2101)。続いて解析されたプログラム構造、特にループといった制御構造に着目し、ループ内の演算データフローやループのイタレーション間の依存性解析を行い、当該ループを連続的に効率良く対象となるPU上で処理可能かを判定する(2102、2103)。例えば、非特許文献1にあるようなDRPの場合は、例えば8×4のALUアレイで構成されており、8×4の演算器を縦方向で並列的に、また横方向でパイプライン処理的に用いることで効率良く処理できる。つまり、ループのイタレーション間で並列性があれば、ALUアレイを縦方向に分割してALUアレイの1面で複数イタレーション分を一度に処理することができる。また、ループ内の代入文といったステートメントレベルで並列性がある場合には、ステートメント単位で演算器を縦方向に並列的に分割することで、複数ステートメントを一度に処理することができる。また、ステートメント間でデータ依存がある場合には、ALUアレイの横方向をパイプライン的に活用するよう演算をマッピングすることで、命令とデータを1ないし数個ずつ処理を進めていくCPUに対し、大きな速度向上を得ることができる。このように、ステップ2102、2103、2104では専用プロセッサのアーキテクチャに合わせた最適化が行われる。
なお、入力プログラム200内にユーザによる指示文が存在する場合はそれも合わせて解析する。指示文としては、ユーザがHCMP1上のある特定の専用プロセッサで処理すべきことを示す指示文がある。つまり、もしACCCPL210が例えばDRP用のコード生成コンパイラであり、指示文としてあるプログラム・ブロックがユーザによってDRP上での処理を指定していたとすると、そのブロックはDRP処理部として扱う。つまり、指示文で指定された箇所(ループやサブルーチンなどのプログラム構造単位で指定される場合もあれば、当該DRP向け処理部のその前後に指示文で指定される場合もある)においては、DRPにて処理できるものとして扱い、当該部分の処理コストや実行コードを生成することになる。
続いて、当該PUで処理可能と判定されたブロックに対して、当該PUのアーキテクチャに中間コードレベルで最適化された結果より、当該ブロックを当該PUで処理を行った際の処理コストを算出する(2105)。なお、この処理コストは対象となるPUのアーキテクチャにより導出方法は異なるが、通常のプロセッサタイプではプログラムの命令を実行する際に消費される平均のクロック数を元に算出される。また、DRPなどの信号処理プロセッサでは、処理対象となるデータ量がわかればデータパス上の演算器に流すデータ供給のサイクル数より、正確なクロック数を算出できる。また、専用プロセッサがベクトル演算器である場合は、非特許文献2で開示されている自動ベクトル化コンパイラによるプログラムのベクトル化技術を用いることができる。ベクトル化技術は、ループ構造のデータ依存解析を行うことでループのベクトル化判定を行い、ベクトル化可能な部位に対してはベクトル演算命令を挿入する。ベクトル化のためのプログラム変換が可能かを決定する方法は、非特許文献3で開示されているようにデータ依存グラフを用いることで可能である。また、処理コストはベクトル命令及び演算対象となるデータ数より、ベクトル演算クロック数として得られる。
なお、専用プロセッサは上述したように、通常複数の演算器群とデータを連続的に供給するパスを持ち、演算器制御やデータ供給制御は別に設けたシーケンサや制御用プロセッサが行うことになる。つまり、当該プロセッサ上のメモリにCSMや他のプロセッサのローカルメモリ等、専用プロセッサ外部のメモリからデータを転送する、専用プロセッサ内のメモリから演算器へのデータの供給、または演算器の機能を決定するプログラム供給、演算器の機能やデータを供給するタイミングを決定する制御を行う時間も必要となり、コード生成コンパイラ210は例えばCSMから当該PU内のローカルメモリに対するデータロード時間、当該PU上の演算器機能を設定するために必要な制御時間等も含めて、処理コストを決定することになる。算出された処理コストは、入力プログラムに対し指示文として付加する(2106)。
なお、以上で算出された処理コストをコンパイル情報207として別途出力しても良い。図5bのステップ2111〜2116にコンパイラ情報207を生成する処理フローを示す。前記コンパイラ情報207は、前述したように再度並列化コンパイラPRLCPL211で処理(220)することによりプログラム全体を最適化するために用いられる。
また、コード生成コンパイラ211はコスト等の情報を入力プログラム200に付加する以外にも、当該プロセッサ実行コード及び、データ転送・専用プロセッサ制御コードを生成する。図5cのステップ2121〜2126に実行コード生成する各種プロセッサ向けコード生成コンパイラ処理フローを示す。
<各種プロセッサ向けコンパイラが出力するプログラム>
図3に示した、各種プロセッサ向けコード生成コンパイラ210に入力し、上述した処理手順にしたがって解析する入力プログラムについてまず説明する。図3の入力プログラム上では一部ユーザによる指示文が存在する。指示文は、「#pragma HCMP1」というキーワードで始まる行がそれである。300の「#pragma HCMP1 assign dsp」は、当該指示文の直後のサブルーチン「func3(d、e、f)」(301)はDSPに処理を割り当てることを指定している。つまり、前記サブルーチンはDSP上での処理が可能なことを示すとともに、DSPでの処理をユーザが指定している。なお、本指示があっても並列化コンパイラが、例えばDSPが他のタスクを処理中で通常CPUで処理したほうが、終了時間が早いと判定される場合は、結果的にCPUで処理されることもあり、必ずしも強制的に当該指示文による指定プロセッサで処理が行われるとは限らない。また、図3の302「#pragma HCMP1 assign drp process_a_01」及び303の「#pragma assign process_a_01」で囲まれた部分がDRPに処理を割り当てることを指定している。指示文の最後尾はユーザが指定する一意のIDとなっており、前例のようにループやサブルーチンに対する構造単位で指定する方式、並びにまた指示文で開始点と終了点を指定する方式がある。
次に前記入力プログラム200をまずDSP向けコード生成コンパイラにて処理を行った結果を図6に示す。DSP向けコード生成コンパイラでは、プログラム構造によりDSPにて処理可能なブロックを特定すると共に、DSPで当該ブロックを処理した際のコストを入力プログラムに挿入する。例えば、図6の310「#pragma HCMP1 exec dsp exec_cyc=700、000 data=20、000」は次行311の「#pragma HCMP1 assign dsp」で指定されたDSP処理ブロックに対する、DSP向けコード生成コンパイラにより算出された処理コストを示す。「exec_cyc=700、000」は実行時間が700Kサイクル、また「data_cyc=20、000」はデータ転送時間が20Kサイクル、かかることを示している。
続いてDSP向けコード生成コンパイラ210による出力プログラムを、DRP向けコード生成コンパイラに入力し、処理(201)した結果を図7に示す。例えば、図7の320「#pragma HCMP1 exec drp exec_cyc=200、000 data_cyc=10、000 config_cyc=3、000」は321「#pragma HCMP1 assign drp」で指定されたDRP処理ブロックに対する、DRP向けコード生成コンパイラにより算出された処理コストを示す。「exec_cyc=200、000」は実行時間が200Kサイクル、「data_cyc=10、000」はデータ転送時間が10Kサイクル、「config_cyc=3、000」はDRP用のプログラム情報(コンフィギュレーション)のロードに3Kサイクル、かかることを示している。また、あるブロックが複数の専用プロセッサで処理可能と判定された場合には、処理可能なそれぞれの専用プロセッサ向けのコストが複数行で挿入される。例えば、図7の322「#pragma HCMP1 exec drp」及び323「#pragma HCMP1 exec dsp」が連続して挿入されているが、これは次行のループがDRP及びDSP双方で実行可能なことを示している。並列化コンパイラ211は双方の実行コスト並びに、スケジューリング時の各PUの状況により、最終的に当該ループを割り当てるPUを決定することになる。
また、グローバルコンパイラオプションの指定により、ユーザが「#pragma HCMP1 assign ***」で明示的に処理プロセッサを指定し、当該処理プロセッサのみコストを求め、指示文を挿入する使い方もできる。本方法により図3の入力プログラムを処理した結果(コスト情報209)を図8に示す。
<並列化コンパイラの処理フロー>
次にグローバルコンパイラ2における並列化コンパイラ211の処理フローを説明する。図9に並列化コンパイラ211の処理フローを示す。
<マクロタスクの生成>
C言語やFortran等の高級言語で記述された逐次構造の入力プログラム201はまず、並列化コンパイラ211が当該プログラムの構造を解析することで、繰り返しブロック(RB:Repetition Block)、サブルーチン(SB:Sub Routine)、擬似代入文ブロック(BPA:Block of Pseudo Assignment statements)の3種類の粒度が大きなマクロタスク(MT)に分割、生成する(401)。RBはループブロックで各階層での最も外側のループであり、BPAはスケジューリングオーバーヘッドあるいは並列性を考慮し、代入文からなる複数の基本ブロックを融合あるいは分割したブロックである。図3の「#pragma HCMP1 assign ***」のように、専用プロセッサでの処理を指定されたブロックは、一つのマクロタスクとして扱うことになる。
<データ依存・制御フロー解析>
続いて、並列化コンパイラ211は、分割生成された当該マクロタスク間の制御フロー及びデータ依存性を解析し、MTの実行順序関係を抽出する(402)。入力プログラムは逐次的に記述されているため、通常のコンパイラによる実行コードは、当該プログラムの構造と同様に逐次的な順序で実行されるが、MT間で見ると必ずしも記述された順序で実行する必要がないことが多い。つまり、MT間において制御またはデータ参照の依存性がない場合、特にマルチプロセッサシステムにおいては、複数のPUに複数のMTを配置して同時にまたは順序を変更して、全体の実行時間が短くなるようスケジューリングすることが重要となる。このようなスケジューリングを行うためには、MT間の並列性を解析する必要がある。そこでこれに向けた準備として、データ依存・制御フロー解析処理402により、MT間の実行順序関係を抽出する。
<ループレベル並列性解析>
続いて並列化コンパイラ211は、マクロタスク内の中粒度レベルの並列性解析として、ループレベル並列化を行う(403)。ループレベル並列化403では、ループの繰り返し(イタレーション)単位間のデータ依存性を解析して、各イタレーションが独立に処理できるかを判断し、可能な場合は各イタレーションを複数のPUに割り当てて並列処理を行う。また、単一のループを複数のループに分割し並列性を高めたり、データのコピーや配列変数の拡張によりループ間のデータ依存性を削除することで並列したり、また複数のループを単一のループに融合することでループ制御に必要なオーバーヘッドを軽減したり、といった様々な手法によりループの並列化を実現する。
<処理コスト解析>
次に並列化コンパイラ211は、生成されたマクロタスクMTを各PUで実行した際に必要となる処理サイクルを、予め付加されたディレクティブ情報より求める。なお、CPUの処理サイクルに関しては、通常並列化コンパイラ内のCPU命令コストテーブルを参照することによってもとめる(404)。CPU処理コストの見積もり方法としては、例えばCPUなどに関しては乗算や加算など命令レベルで必要とするサイクル数をテーブル420に保持しておき、当該テーブル420を参照することでMTを当該PUで実行する際の逐次処理サイクル数を見積もることができる。
なお、コンパイル時にコストを決定できない要素が存在する場合、例えばMTが分岐を含む場合は、分岐確率を50%としてコスト算出を行う。また例えばループや配列のサイズが定まらない場合は、ループを固定回数とする、配列宣言時の最大サイズとする、等の方法を適用する。
<マクロタスク間並列性解析=最早実行条件解析>
コンパイラ211はマクロタスクMTの処理コストが決定した後、データ依存・制御フロー解析処理402で抽出したMT間の制御フローとデータ依存性を同時に解析結果から、MT間の並列性、つまり各MTの実行を最も早く実行してよい条件(最早実行条件)を決定する(405)。この最早実行条件をグラフで可視的に示したものがマクロタスクグラフ(MTG)である。図3の入力プログラム200を解析して生成されたMTGを、図10に示す。なお、マクロタスク間並列性解析結果は、マクロタスクグラフテーブル421として外部記憶装置に保持され、後段のコンパイル処理で使用される。
<マクロタスクグラフの説明>
以下、マクロタスクグラフMTGについて説明する。本グラフ中の各ノードはマクロタスクMTを示し、ノード間の実線はマクロタスク間のデータ依存関係を、ノード間の破線はマクロタスク間の制御依存関係を、ノード内の小円が条件分岐を表している。
例えば、MT1_1(501)からMT1_2(502)及びMT1_3(503)に対して実線が伸びているが、これはMT1_2及びMT1_3がMT1_1を実行した結果生じたデータを入力データとして用い処理を実行しているという依存関係があることを示している。そのため、実行順序として、MT1_2及びMT1_3はMT1_1タスク終了後、実行できることを示す。
また、入力プログラム200よりMT1_2(502)は複数のループやサブルーチンで構成されたブロックなので、コンパイラは当該MTをさらに複数のMTに階層的に分割する。よって、当該MTGではMT1_2中に、別階層でMTGを構成する。MTG1_3(503)も同様である。
MT1_2(502)内のMTG(510)を見ると、MT1_2_1(511)からはMT1_2_2(512)、MT1_2_3(513)、MT1_2_4(514)に実線が延びているため、MT1_2_1(511)終了後同時にこれら3つのタスク512、514、515を並行して実行することが可能である。また、MT1_2_3(513)及びMT1_2_4(514)からMT1_2_5(515)に対して実線が延びているため、MT1_2_3(513)及びMT1_2_4(514)双方の実行が終了した時点でMT1_2_5(515)が実行できる。以上のように、MT1_2は実行前に並列順序関係は確定されており、コンパイル時にスタティックにスケジューリング可能である。つまり、タスクのPU上での実行順序はコンパイル時に決定される。
続いて、MT1_3(503)内のMTG(520)を見ると、MT1_3_1(521)には小円が存在するが、これはタスクMT1_3_1(521)が分岐条件を含むことを示している。小円からMT1_3_2(523)、MT1_3_3(524)へは矢印のある破線が伸びており、また制御依存のOR条件を表す点線のアーク522が重なっているため、当該条件がMT1_3_2またはMT_1_3_3の何れかに分岐することを示している。なお、破線はタスクの実行が確定される制御依存関係と、データ依存しているタスクが実行されない場合の条件を表している。また、矢印がついた破線は、データ依存・制御フロー解析(402)で求めた制御手順と同一(つまり、オリジナル)であることを表す。なお、MT1_3_1(521)の分岐条件は、当該タスクMT1_3_1を実行しないと分岐方向が確定しないため、実行時の状況に応じたスケジューリングを行う必要がある。
<プロセッサグルーピング>
次にコンパイラは、生成されたMTGテーブル421を参照し、HCMP1のPU資源を勘案した上で、マクロタスクグラフの形状や並列性に応じた、またはユーザからの指定に応じたプロセッサのグループ化を、汎用プロセッサCPUを対象に行う(406)。DSP、DRP等の専用プロセッサ群はグループには含めずに、各グループでの処理で必要なときに随時タスクが専用プロセッサ群に割り当てられる。
つまり、MTGで表現された上位階層のMT、例えばMT1_2(502)、MT1_3(503)の形状、並列性を解析し、当該MTの処理に必要となるPUをグループ化し、当該グループにMTを割り当てる。なお、1つのグループは、当該グループ内の特定用途プロセッサ(DSP、DRP、BMP)を制御するための汎用プロセッサ(CPU)を含む集合となる。例えば図1に示したHCMP1構成上でスケジュールする場合、CPUは2個であるので、MT1_2とMT1_3をそれぞれ各CPU1個にグルーピングする。前記MT1_2及びMT1_3内の階層のタスク群は基本的にグルーピングされたCPUに対してタスクの割り当てが行われる。そのとき、専用プロセッサ指定がある場合で、専用プロセッサでタスクを処理したときに当該タスクの終了時間がCPUで行うよりも早いと判定され、なおかつ当該グループ内タスク全体の処理時間が最短となると判定できる場合には、指定された専用プロセッサに処理を割り当てる。
<スタティックスケジュールとダイナミックスケジュール>
コンパイラ211は次にスケジューリング方法として、スタティックスケジュールかダイナミックスケジュールかを判断する(407)。夫々のスケジューリング方法の詳細は後述するが、以下簡単に説明する。まずもし、MTに条件分岐がなく最早実行条件が予め決定できるMTフローであれば、前者のスタティックスケジュールを適用し、コンパイラが予めMTのスケジューリングを行い、コンパイル時に同期コードをタスク間に挿入する。またもし、MTに条件分岐がある、またMTの処理時間が実行時に変動するなど、コンパイラ時に予測できないMTフローであれば、後者のダイナミックスケジュールを適用し、コンパイラは、分岐などの状況に応じた制御を実行時に行うスケジューリングプログラムを生成しCPUにて実行することで、実行時にタスクの割り当てを行う。
<スタティックスケジューリング>
まず、スタティックスケジューリングの処理フローについて説明する。スタティックスケジューリングでは、コンパイル時にMTの割り当てと実行順序がすでに決定しているため、まずマクロタスクスケジューリング処理408により、マクロタスクテーブル421及びプロセッサグルーピングテーブル422情報を参照し、PU間における実行タスク間の同期や他タスクの起動等を行う制御情報を生成し、当該情報の挿入箇所を決定する。またさらに、タスクプログラムまたはタスクが必要とするデータを、他PUのLMや共有メモリSMより当該PUのローカルメモリLMにロードするといったデータ転送情報も併せて生成する。このような、データローカライゼーション手法により、ローカルメモリLMを有効に活用し、データの転送量を最小化する。以上の処理により生成されたスケジュール情報は、マクロタスクスケジュールテーブル423として、外部記憶装置に保持される。
続いて、コンパイラはスタティックFVスケジューリング処理409を行う。本処理では、タスクの並列スケジューリングの結果、PUがアイドル状態となる部分に対して、電源を遮断する、クロックを停止する、またはクロックを低減し電源電圧を降下させる、等の電源制御コードを生成する。
<ダイナミックスケジューリング>
次に、ダイナミックスケジューリングの処理フローについて説明する。ダイナミックスケジューリング時は、MT内の分岐条件等の不確定要素によりコンパイル時にスケジューリング内容を決定することができない。このためコンパイラは、MTの処理結果に基づきプログラム実行時に動的にスケジューリングを行うスケジューリングプログラムを生成する(410)。本プログラムは、処理結果に基づきMTの起動や同期、及び当該MTが必要とするデータのロードを行う。また、さらに図18で説明したタスク並列処理実行時のFV制御概念に基づき、PUの動作周波数・供給電圧を決定する動作モードを設定する。生成したスケジューリングプログラムは、電源・FV制御スケジュールテーブル424として、外部記憶装置に保持される。
<スケジューリングコードの生成>
コンパイラは以上の処理により、入力プログラムのPUへのスケジューリングを完了する。これまでの処理で生成したスケジューリング情報は外部記憶装置にテーブル(421〜424)として保持されている。コンパイラは、当該テーブル(421〜424)にアクセスし、タスクの実行順序やデータ転送情報、及びFV制御情報を読み込み、入力プログラムに対してスタティックスケジュール部には制御コード(スケジューリングコード)を、またダイナミックスケジュール部にはスケジューリングプログラムを付加する(411)。
<スケジューリングの結果>
本スケジューリング結果の例を図11に示す。図11は、MTのスケジューリング結果をPU毎に時間軸で示している。図中斜線のハッチングは、スタティックスケジューリングで埋め込まれた同期コードを示し、図中縦線のハッチングは、タスク割り当てようダイナミックスケジューラで生成されたスケジューリングコードを示す。本例ではCPU0がタスクの起動や同期、FV電力制御などの管理を行うため、最初にCPU0上にコンパイラが生成した制御コード550がロードされる。制御コードは初めにMT1_1をCPU0上で起動する。MT1_1処理終了後、コンパイラが生成した制御コード551を実行し、次に処理すべきタスクは、MT1_2及びMT1_3の下位層のMTGで指定されたMT1_2_1及びMT1_3_1であり、前者はCPU0にて、後者はDRP0にて実行される。
なお、前述した通り、MTG1_2は分岐条件を含まないためコンパイル時のすでにスケジューリングが行われており(スタティックスケジューリング)、コンパイル時にすでにCPU0、DRP0、DRP1、DSP0へMTがスケジュールされている。またMTG1_3は分岐条件を含むため、実行時にスケジューリングを行うプログラムを付加し、実行結果によってCPU1、及び必要であればDRP、DSPの専用プロセッサ群へMTを割り振る。
続いてMTG1_2のMTグループのスケジューリングについて説明する。MT1_2_1の実行がDRP0において終了すると同時にCPU0にMT1_2_1の処理終了を通知する。CPU0の制御コードは、DRP0上でMT1_2_2、DRP1上でMT1_2_3、DSP上で1_2_4を起動する。各PU上のタスクは処理終了と同時に、CPU0にその終了を通知する。この時点で未処理のタスクはMT1_2_5であるが、MT1_2_5はDSP処理タスクであり、MT1_2_4終了後CPU0にてMT1_2_2は起動される。
続いてMTG1_3のMTグループについて説明する。MT1_3は内部に分岐を持つため、タスクを実行しないと分岐方向がわからない。従って、実行時の状況によりタスク、データのロード、タスクの起動、同期及び電力制御コードの管理を行うダイナミックスケジューラ552を、CPU1において実行する。当該スケジューラ552は、まずCPU1上でMT1_3_1を起動し実行する。本例では、MT1_3_1の実行結果よりMT1_3_2に分岐したとすると、MT1_3_2はDRP実行タスクのため本来はDRPで実行したほうが効率良く処理できるが、MT1_3_1の割り当て時、DRP0、DRP1はMT1_3のタスクを実行しているため、当該タスク終了後にDRP0またはDRP1上で実行するか、それとも効率は下がるがCPU1上で実行するかを、予想終了時間を求めることで決定する。本例では、DRPがタスク実行中のためにCPU1で実行したほうが終了時刻が早いと判定され、CPU1にタスクが割り当てられる。
本発明により、多様なPUを集積するマルチプロセッサシステムにおいて、当該PUを効率よく動作させるプログラムの分割配置および制御コードを生成するコンパイラにより、当該プロセッサシステムの性能を最大限活用しつつ、低電力にて効率よく処理することが可能となる。また、さらにはソフトウェア開発者がプロセッサの構成を意識することなく、短時間で効率良いプログラム作成が可能となる。その結果、高い演算性能を持ちかつ低電力に処理することが強く望まれる、カーナビや形態電話、情報家電向けのLSIに本発明を適用することができ、高品質の動画像や音声処理、また画像認識や音声認識といった機能を実現することが可能となる。また、自動車における情報系、制御系システム向けLSIに対しても適用することができ、自動運転や安全運転システム等を実現することが可能となる。またさらには、将来非常に高い演算性能を有しつつ低電力化が必須となる、スーパーコンピュータへの応用も可能である。
実行コードの生成対象となるヘテロジニアスマルチプロセッサ(HCMP1)のアーキテクチャを説明するブロック図である。 HCMP1グローバルコンパイラの処理手順の一例を示すフローチャートである。 HCMP1グローバルコンパイラの処理手順の他の一例を示すフローチャートである。 HCMP1グローバルコンパイラの処理手順の他の一例を示すフローチャート図である。 入力プログラム例を示した図である。 HCMP1ハードウェア構成情報を説明するブロック図である。 各種プロセッサ向けコード生成コンパイラを説明する図である。 各種プロセッサ向けコード生成コンパイラを説明する図である。 各種プロセッサ向けコード生成コンパイラを説明する図である。 DSP向けコード生成コンパイラ出力結果を示した図である。 DRP向けコード生成コンパイラ出力結果を示した図である。 ユーザ指定ブロックに対するコスト情報の指定結果を示した図である。 並列化コンパイラの処理手順の一例を示すフローチャートである。 コンパイラが生成したタスク間依存関係図を示したマクロタスクグラフである。 HCMPタスクスケジューリングの結果を示したタイムチャートである。
符号の説明
200〜202 プログラム
203、205、206 実行コード
204 アーキテクチャ構成情報
207、208コンパイル情報
231 実行プロファイル情報
210〜212、220 処理
230 各種プロセッサ向けライブラリ
231コスト情報
300〜303、310、311、320〜323 指示文
400 入力プログラム
401〜411 処理
412 出力コード
413 処理
420〜424 テーブル
500、510、520 マクロタスクグラフ
501〜503、511〜515、521〜525、551 マクロタスク
522 OR条件
550 タスク間同期制御コード
552 タスク同期制御用ダイナミックスケジューラコード

Claims (8)

  1. 単一または複数種類のプロセッサユニットを複数個有するシステムにおいて、
    入力プログラムから並列性を抽出し、前記複数のプロセッサユニットに対応する目的プログラムを生成するコンパイラであって、
    前記入力プログラムを、前記システムが持つプロセッサユニットの種別毎に予め用意した前記プロセッサユニット専用のコード生成コンパイラにて、前記入力プログラムを解析することで前記プロセッサユニット毎に実行可能なプログラムの部分を抽出し、当該プログラム部分を指示する処理プロセッサ情報を生成する処理と、
    前記入力プログラムの解析を行って当該入力プログラムの並列性を抽出し、前記処理プロセッサ情報に基づいて前記プロセッサユニットに対するプログラム部分の割り当てを行う処理と、
    前記割り当てたプログラム部分を前記プロセッサユニット毎の出力コードとして出力する処理と、
    を計算機に実行させことを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラ。
  2. 請求項1に記載のヘテロジニアスマルチプロセッサ向けグローバルコンパイラにおいて、
    前記処理プロセッサ情報に対応する前記入力プログラムの部分に、前記プロセッサユニットで実行可能であることを示す指示文を挿入した中間プログラムを出力する処理と、
    前記中間プログラムの解析を行ってプログラム単位の並列性を抽出し、前記指示文で指定された前記プログラム部分の処理プロセッサユニット情報に基づいて前記プロセッサユニットに対する処理の割り当てを行う処理と、
    を含むことを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラ。
  3. 請求項1に記載のヘテロジニアスマルチプロセッサ向けグローバルコンパイラにおいて、
    前記専用プロセッサユニット毎に前記入力プログラムより実行可能な部分を抽出する際、前記前記抽出したプログラムを対象となるプロセッサユニットでの実行時間を見積もった実行時間情報を生成する処理と、
    前記入力プログラムの解析を行ってプログラム単位の並列性を抽出し、前記実行時間情報を用いて前記プロセッサユニットに対する処理の割り当てを行う処理と、を含むことを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラ。
  4. 請求項3に記載のヘテロジニアスマルチプロセッサ向けグローバルコンパイラにおいて、
    前記実行時間情報に対応する前記入力プログラムの部分に、前記プロセッサユニットで実行した際の実行時間を示す指示文を挿入した中間プログラムを出力する処理と、
    前記中間プログラムの解析を行って処理の並列性を抽出し、前記指示文で指定された前記プログラム部分の処理実行時間情報を用いて前記プロセッサユニットに対する処理の割り当てを行う処理と、を含むことを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラ。
  5. 請求項3に記載のヘテロジニアスマルチプロセッサ向けグローバルコンパイラにおいて、
    前記実行時間情報を生成する処理で求める実行時間に加え、前記各プロセッサユニット毎に必要となるデータの共有メモリとプロセッサユニット内のローカルメモリ間のデータ転送時間を算出し、データ時間転送時間情報を生成する処理と、を含むことを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラ。
  6. 請求項5に記載のヘテロジニアスマルチプロセッサ向けグローバルコンパイラにおいて、
    前記データ転送時間情報を、当該情報に対応する入力プログラムの部分に、データ転送を示す指示文として挿入した中間プログラムを生成する処理と、を含むことを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラ。
  7. 請求項3に記載のヘテロジニアスマルチプロセッサ向けグローバルコンパイラにおいて、
    前記実行時間情報を生成する処理は、
    さらに前記対象となるプロセッサユニットのハードウェアアーキテクチャに基づき、プログラムロード時間、並びに前記プロセッサユニット内の演算器制御時間を算出し、プログラムロード時間情報並びに演算器制御時間情報を生成する処理を含むことを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラ。
  8. 請求項4に記載のヘテロジニアスマルチプロセッサ向けグローバルコンパイラにおいて、
    前記プログラムロード時間情報並びに演算器制御時間情報を、当該情報に対応する入力プログラム部分に、プログラムロード時間並びに演算器制御時間を示す指示文として挿入した中間プログラムを生成することを特徴とするヘテロジニアスマルチプロセッサ向けグローバルコンパイラ。
JP2006157308A 2006-06-06 2006-06-06 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ Expired - Fee Related JP4784827B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2006157308A JP4784827B2 (ja) 2006-06-06 2006-06-06 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
KR1020070019519A KR100878917B1 (ko) 2006-06-06 2007-02-27 헤테로지니어스 멀티프로세서용 글로벌 컴파일러
CNA2007100848260A CN101086710A (zh) 2006-06-06 2007-02-27 面向异种多处理器的全局编译程序
US11/716,563 US8051412B2 (en) 2006-06-06 2007-03-12 Global compiler for controlling heterogeneous multiprocessor
EP07251186.8A EP1881405B1 (en) 2006-06-06 2007-03-21 Global compiler for controlling heterogeneous multiprocessor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006157308A JP4784827B2 (ja) 2006-06-06 2006-06-06 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ

Publications (2)

Publication Number Publication Date
JP2007328416A true JP2007328416A (ja) 2007-12-20
JP4784827B2 JP4784827B2 (ja) 2011-10-05

Family

ID=38779755

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006157308A Expired - Fee Related JP4784827B2 (ja) 2006-06-06 2006-06-06 ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ

Country Status (5)

Country Link
US (1) US8051412B2 (ja)
EP (1) EP1881405B1 (ja)
JP (1) JP4784827B2 (ja)
KR (1) KR100878917B1 (ja)
CN (1) CN101086710A (ja)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009169862A (ja) * 2008-01-18 2009-07-30 Panasonic Corp プログラム変換装置、方法、プログラムおよび記録媒体
WO2010029812A1 (ja) 2008-09-09 2010-03-18 日本電気株式会社 マルチコアにおけるプログラミングシステム、その方法及びそのプログラム
CN102081544A (zh) * 2009-11-30 2011-06-01 国际商业机器公司 应用程序生成系统和方法
JP2012133756A (ja) * 2010-11-10 2012-07-12 Src Computers Inc ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法
US8560812B2 (en) 2009-06-09 2013-10-15 Toyota Jidosha Kabushiki Kaisha Device for executing an instruction using a target execution speed
US8897372B2 (en) 2009-02-18 2014-11-25 Nec Corporation Task allocation device, task allocation method, and storage medium storing task allocation program
JP2015001807A (ja) * 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP2015095163A (ja) * 2013-11-13 2015-05-18 オリンパス株式会社 演算装置および演算方法
JP2017010077A (ja) * 2015-06-16 2017-01-12 富士通株式会社 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法
JP2017194974A (ja) * 2012-12-20 2017-10-26 インテル・コーポレーション スケーラブル計算ファブリック
US9846673B2 (en) 2011-11-04 2017-12-19 Waseda University Processor, accelerator, and direct memory access controller within a processor core that each reads/writes a local synchronization flag area for parallel execution
JP2018132981A (ja) * 2017-02-16 2018-08-23 日本電気株式会社 アクセラレータを有する情報処理装置および情報処理方法
US10983772B2 (en) 2018-02-07 2021-04-20 Omron Corporation Method, apparatus and program for generating application program
US11416281B2 (en) 2016-12-31 2022-08-16 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8849968B2 (en) 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US8074231B2 (en) 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US8032898B2 (en) 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
JP5079342B2 (ja) 2007-01-22 2012-11-21 ルネサスエレクトロニクス株式会社 マルチプロセッサ装置
US8291197B2 (en) 2007-02-12 2012-10-16 Oracle America, Inc. Aggressive loop parallelization using speculative execution mechanisms
DE102007009909B4 (de) * 2007-02-28 2016-09-08 Globalfoundries Inc. Verfahren zum Validieren einer atomaren Transaktion in einer Multikernmikroprozessorumgebung
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US20080244507A1 (en) * 2007-03-30 2008-10-02 Microsoft Corporation Homogeneous Programming For Heterogeneous Multiprocessor Systems
JP4339907B2 (ja) * 2007-10-24 2009-10-07 株式会社日立製作所 マルチプロセッサ向け最適コード生成方法及びコンパイル装置
JP2009146243A (ja) * 2007-12-17 2009-07-02 Hitachi Ltd 基板バイアス制御を活用する電力性能最適化コンパイラ及びプロセッサシステム
FR2928753B1 (fr) * 2008-03-14 2012-09-21 Pierre Fiorini Architecture de traitement informatique accelere.
US8776030B2 (en) * 2008-04-09 2014-07-08 Nvidia Corporation Partitioning CUDA code for execution by a general purpose processor
US9678775B1 (en) 2008-04-09 2017-06-13 Nvidia Corporation Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment
US8286198B2 (en) * 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8645933B2 (en) * 2008-08-01 2014-02-04 Leon Schwartz Method and apparatus for detection and optimization of presumably parallel program regions
US7681182B1 (en) 2008-11-06 2010-03-16 International Business Machines Corporation Including function call graphs (FCG) generated from trace analysis data within a searchable problem determination knowledge base
US9672019B2 (en) * 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9189233B2 (en) 2008-11-24 2015-11-17 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
EP2361408A4 (en) * 2008-12-01 2012-05-23 Kpit Cummins Infosystems Ltd METHOD AND SYSTEM FOR PARALLELIZING SEQUENCEL COMPUTER PROGRAM CODES
JP4621786B2 (ja) * 2009-04-28 2011-01-26 株式会社東芝 情報処理装置、並列処理最適化方法およびプログラム
JP5353566B2 (ja) * 2009-08-31 2013-11-27 オムロン株式会社 画像処理装置および画像処理プログラム
KR101645035B1 (ko) * 2009-09-22 2016-08-16 삼성전자주식회사 병렬 프로그래밍 조절 장치 및 방법
US8230410B2 (en) * 2009-10-26 2012-07-24 International Business Machines Corporation Utilizing a bidding model in a microparallel processor architecture to allocate additional registers and execution units for short to intermediate stretches of code identified as opportunities for microparallelization
US8656375B2 (en) * 2009-11-02 2014-02-18 International Business Machines Corporation Cross-logical entity accelerators
CN102449605B (zh) * 2010-06-14 2015-10-07 松下电器产业株式会社 多线程并行执行装置、广播流再现装置、广播流储存装置、储存流再现装置、储存流再编码装置、集成电路、多线程并行执行方法、多线程编译器
US8863128B2 (en) * 2010-09-30 2014-10-14 Autodesk, Inc System and method for optimizing the evaluation of task dependency graphs
KR101703328B1 (ko) 2010-11-23 2017-02-07 삼성전자 주식회사 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법
US20120179669A1 (en) * 2011-01-06 2012-07-12 Al-Omari Awny K Systems and methods for searching a search space of a query
US9417687B2 (en) 2011-07-12 2016-08-16 Rambus Inc. Dynamically changing data access bandwidth by selectively enabling and disabling data links
US9098209B2 (en) 2011-08-24 2015-08-04 Rambus Inc. Communication via a memory interface
WO2013028827A1 (en) 2011-08-24 2013-02-28 Rambus Inc. Methods and systems for mapping a peripheral function onto a legacy memory interface
US11048410B2 (en) 2011-08-24 2021-06-29 Rambus Inc. Distributed procedure execution and file systems on a memory interface
WO2013048468A1 (en) 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
FR2985824B1 (fr) * 2012-01-17 2014-02-07 Thales Sa Procede d'optimisation de traitement parallele de donnees sur une plateforme materielle
US9195443B2 (en) * 2012-01-18 2015-11-24 International Business Machines Corporation Providing performance tuned versions of compiled code to a CPU in a system of heterogeneous cores
KR20130115574A (ko) 2012-04-12 2013-10-22 삼성전자주식회사 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치
EP2880526A4 (en) * 2012-07-30 2016-03-23 Hewlett Packard Development Co COMPILATION SYSTEM FOR EXECUTABLE OBJECTS
CN102929723B (zh) * 2012-11-06 2015-07-08 无锡江南计算技术研究所 基于异构众核处理器的并行程序段划分方法
US8775691B1 (en) 2012-12-18 2014-07-08 International Business Machines Corporation Detecting firmware version for an input/output adapter
RU2630753C2 (ru) 2012-12-26 2017-09-12 Хуавэй Текнолоджиз Ко., Лтд. Способ обработки для многоядерного процессора и многоядерный процессор
US9405551B2 (en) * 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
US9880842B2 (en) 2013-03-15 2018-01-30 Intel Corporation Using control flow data structures to direct and track instruction execution
CN104423994B (zh) * 2013-09-03 2018-05-11 华为技术有限公司 一种代码生成方法、编译器、调度方法、装置及调度系统
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9563585B2 (en) 2014-02-19 2017-02-07 Futurewei Technologies, Inc. System and method for isolating I/O execution via compiler and OS support
US9268597B2 (en) * 2014-04-01 2016-02-23 Google Inc. Incremental parallel processing of data
CN104144210A (zh) * 2014-07-09 2014-11-12 中电科华云信息技术有限公司 数据服务自动构建的方法及系统
KR102197874B1 (ko) 2014-09-01 2021-01-05 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
FR3035243B1 (fr) * 2015-04-20 2018-06-29 Commissariat A L'energie Atomique Et Aux Energies Alternatives Placement d'une tache de calcul sur un processeur fonctionnellement asymetrique
EP3208712B1 (en) * 2016-02-22 2020-02-19 Karlsruher Institut für Technologie Computer system and method for parallel program code optimization and deployment
US11188348B2 (en) 2018-08-31 2021-11-30 International Business Machines Corporation Hybrid computing device selection analysis
CN110968320A (zh) * 2018-09-30 2020-04-07 上海登临科技有限公司 针对异构硬件架构的联合编译方法和编译系统
KR20200053318A (ko) 2018-11-08 2020-05-18 삼성전자주식회사 인공 신경망의 연산 처리 그래프를 관리하는 시스템 및 이를 이용한 연산 처리 그래프를 관리하는 방법
CN109714249B (zh) * 2018-12-28 2021-09-07 武汉斗鱼网络科技有限公司 一种小程序消息的推送方法及相关装置
EP3816793A1 (en) * 2019-10-31 2021-05-05 Siemens Aktiengesellschaft Method, system and execution unit for deploying software components of a software
WO2021107765A1 (en) * 2019-11-29 2021-06-03 Mimos Berhad System and method for executing heterogeneous compilation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06139212A (ja) * 1992-10-30 1994-05-20 Hitachi Ltd 分散記憶型並列計算機のためのデータ分割パタンの評価方法、それを用いた並列プログラム生成方法およびそのためのプログラム実行時間の推定方法
JPH08286896A (ja) * 1995-04-14 1996-11-01 Mitsubishi Electric Corp ソフトウェア開発方法及びソフトウェア開発システム
JP2001175619A (ja) * 1999-12-22 2001-06-29 Univ Waseda シングルチップマルチプロセッサ

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01108638A (ja) * 1987-10-21 1989-04-25 Hitachi Ltd 並列化コンパイル方式
JPH0744508A (ja) * 1993-08-03 1995-02-14 Hitachi Ltd プログラム分割方法
JP2634144B2 (ja) * 1994-07-06 1997-07-23 インターナショナル・ビジネス・マシーンズ・コーポレイション プログラムの並列化実行方法及び並列化実行コンパイラ
US5768594A (en) * 1995-07-14 1998-06-16 Lucent Technologies Inc. Methods and means for scheduling parallel processors
US5978583A (en) * 1995-08-07 1999-11-02 International Business Machines Corp. Method for resource control in parallel environments using program organization and run-time support
JPH11259437A (ja) * 1998-03-12 1999-09-24 Hitachi Ltd 不要バリア命令の削減方式
SE9803901D0 (sv) * 1998-11-16 1998-11-16 Ericsson Telefon Ab L M a device for a service network
US6438747B1 (en) * 1999-08-20 2002-08-20 Hewlett-Packard Company Programmatic iteration scheduling for parallel processors
JP3664473B2 (ja) * 2000-10-04 2005-06-29 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの最適化方法及びこれを用いたコンパイラ
JP2003173262A (ja) * 2001-12-06 2003-06-20 Hitachi Ltd プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体
JP4177681B2 (ja) 2003-02-20 2008-11-05 学校法人早稲田大学 コンパイル方法、コンパイラ、およびコンパイル装置
JP4090908B2 (ja) 2003-02-21 2008-05-28 シャープ株式会社 画像処理装置および画像形成装置
JP4589305B2 (ja) 2003-04-15 2010-12-01 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Ilp及びtlpを利用する再構成可能なプロセッサアレイ
RU2006101719A (ru) * 2003-06-24 2007-07-27 Роберт Бош ГмбХ (DE) Способ переключения между по меньшей мере двумя режимами работы процессора, а также соответствующий процессор
US7444632B2 (en) * 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
JP4934267B2 (ja) * 2003-10-17 2012-05-16 パナソニック株式会社 コンパイラ装置
US7802110B2 (en) * 2004-08-25 2010-09-21 Microsoft Corporation System and method for secure execution of program code
JP4405365B2 (ja) * 2004-10-27 2010-01-27 パナソニック株式会社 プログラム変換装置及び方法
US20060123401A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Method and system for exploiting parallelism on a heterogeneous multiprocessor computer system
JP4082706B2 (ja) * 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP3938387B2 (ja) * 2005-08-10 2007-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ、制御方法、およびコンパイラ・プログラム
US8104030B2 (en) * 2005-12-21 2012-01-24 International Business Machines Corporation Mechanism to restrict parallelization of loops
US8136102B2 (en) * 2006-06-20 2012-03-13 Google Inc. Systems and methods for compiling an application for a parallel-processing computer system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06139212A (ja) * 1992-10-30 1994-05-20 Hitachi Ltd 分散記憶型並列計算機のためのデータ分割パタンの評価方法、それを用いた並列プログラム生成方法およびそのためのプログラム実行時間の推定方法
JPH08286896A (ja) * 1995-04-14 1996-11-01 Mitsubishi Electric Corp ソフトウェア開発方法及びソフトウェア開発システム
JP2001175619A (ja) * 1999-12-22 2001-06-29 Univ Waseda シングルチップマルチプロセッサ

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009169862A (ja) * 2008-01-18 2009-07-30 Panasonic Corp プログラム変換装置、方法、プログラムおよび記録媒体
WO2010029812A1 (ja) 2008-09-09 2010-03-18 日本電気株式会社 マルチコアにおけるプログラミングシステム、その方法及びそのプログラム
US8694975B2 (en) 2008-09-09 2014-04-08 Nec Corporation Programming system in multi-core environment, and method and program of the same
US8897372B2 (en) 2009-02-18 2014-11-25 Nec Corporation Task allocation device, task allocation method, and storage medium storing task allocation program
US8560812B2 (en) 2009-06-09 2013-10-15 Toyota Jidosha Kabushiki Kaisha Device for executing an instruction using a target execution speed
CN102081544A (zh) * 2009-11-30 2011-06-01 国际商业机器公司 应用程序生成系统和方法
JP2011113449A (ja) * 2009-11-30 2011-06-09 Internatl Business Mach Corp <Ibm> アプリケーション生成システム、方法及びプログラム
JP2012133756A (ja) * 2010-11-10 2012-07-12 Src Computers Inc ヘテロジニアス黙示的及び明示的プロセッシング要素の計算の一体化のためのシステム及び方法
US9846673B2 (en) 2011-11-04 2017-12-19 Waseda University Processor, accelerator, and direct memory access controller within a processor core that each reads/writes a local synchronization flag area for parallel execution
US10095657B2 (en) 2011-11-04 2018-10-09 Waseda University Processor, accelerator, and direct memory access controller within a core reading/writing local synchronization flag area for parallel
JP2017194974A (ja) * 2012-12-20 2017-10-26 インテル・コーポレーション スケーラブル計算ファブリック
JP2015001807A (ja) * 2013-06-14 2015-01-05 株式会社デンソー 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP2015095163A (ja) * 2013-11-13 2015-05-18 オリンパス株式会社 演算装置および演算方法
JP2017010077A (ja) * 2015-06-16 2017-01-12 富士通株式会社 計算機、コンパイラプログラム、リンクプログラムおよびコンパイル方法
US11416281B2 (en) 2016-12-31 2022-08-16 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing
US11693691B2 (en) 2016-12-31 2023-07-04 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing
JP2018132981A (ja) * 2017-02-16 2018-08-23 日本電気株式会社 アクセラレータを有する情報処理装置および情報処理方法
US10983772B2 (en) 2018-02-07 2021-04-20 Omron Corporation Method, apparatus and program for generating application program

Also Published As

Publication number Publication date
EP1881405B1 (en) 2018-07-25
JP4784827B2 (ja) 2011-10-05
KR100878917B1 (ko) 2009-01-15
EP1881405A2 (en) 2008-01-23
CN101086710A (zh) 2007-12-12
EP1881405A3 (en) 2009-08-05
US20070283337A1 (en) 2007-12-06
KR20070116712A (ko) 2007-12-11
US8051412B2 (en) 2011-11-01

Similar Documents

Publication Publication Date Title
JP4784827B2 (ja) ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ
JP4082706B2 (ja) マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP6018022B2 (ja) 並列化コンパイル方法、並列化コンパイラ、並列化コンパイル装置、及び、車載装置
JP4936517B2 (ja) ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP6319880B2 (ja) 並列性の抽出方法及びプログラムの作成方法
US20180060275A1 (en) Processor system and accelerator
US20120096445A1 (en) Method and apparatus for providing portability of partially accelerated signal processing applications
Cong et al. Source-to-source optimization for HLS
JP6427054B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
Hormati et al. Macross: Macro-simdization of streaming applications
JP2007305148A (ja) マルチプロセッサシステム
JP6427053B2 (ja) 並列化コンパイル方法、及び並列化コンパイラ
JP6488739B2 (ja) 並列化コンパイル方法、及び、並列化コンパイラ
Ren Algorithm level power efficiency optimization for CPU–GPU processing element in data intensive SIMD/SPMD computing
Stitt et al. Thread warping: a framework for dynamic synthesis of thread accelerators
Ashraf et al. AAP4All: An Adaptive Auto Parallelization of Serial Code for HPC Systems.
JP6488738B2 (ja) 並列化コンパイル方法、及び、並列化コンパイラ
Leupers et al. Cool mpsoc programming
Medeiros et al. Transparent aging-aware thread throttling
Wada et al. A parallelizing compiler cooperative heterogeneous multicore processor architecture
Agathos et al. Compiler-assisted, adaptive runtime system for the support of OpenMP in embedded multicores
Aguilar et al. A toolflow for parallelization of embedded software in multicore DSP platforms
Stripf et al. A flexible approach for compiling scilab to reconfigurable multi-core embedded systems
Zhong et al. Accelerating Data Analytics Kernels with Heterogeneous Computing
Kim et al. An openmp translator with retargetable parallel programming model for mpsoc

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090520

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110523

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110629

R150 Certificate of patent or registration of utility model

Ref document number: 4784827

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140722

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S201 Request for registration of exclusive licence

Free format text: JAPANESE INTERMEDIATE CODE: R314201

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S804 Written request for registration of cancellation of exclusive licence

Free format text: JAPANESE INTERMEDIATE CODE: R314803

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees