JP6291209B2 - マルチコアプロセッサで行われるプログラムのコンパイル方法、マルチコアプロセッサのタスクマッピング方法及びタスクスケジューリング方法 - Google Patents

マルチコアプロセッサで行われるプログラムのコンパイル方法、マルチコアプロセッサのタスクマッピング方法及びタスクスケジューリング方法 Download PDF

Info

Publication number
JP6291209B2
JP6291209B2 JP2013214187A JP2013214187A JP6291209B2 JP 6291209 B2 JP6291209 B2 JP 6291209B2 JP 2013214187 A JP2013214187 A JP 2013214187A JP 2013214187 A JP2013214187 A JP 2013214187A JP 6291209 B2 JP6291209 B2 JP 6291209B2
Authority
JP
Japan
Prior art keywords
task
processing element
communication method
scheduling
communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013214187A
Other languages
English (en)
Other versions
JP2014078239A (ja
Inventor
振 浩 李
振 浩 李
武 ▲きょん▼ 鄭
武 ▲きょん▼ 鄭
起 榮 崔
起 榮 崔
淵 坤 趙
淵 坤 趙
秀 晶 柳
秀 晶 柳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
SNU R&DB Foundation
Original Assignee
Samsung Electronics Co Ltd
Seoul National University R&DB Foundation
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 Samsung Electronics Co Ltd, Seoul National University R&DB Foundation filed Critical Samsung Electronics Co Ltd
Publication of JP2014078239A publication Critical patent/JP2014078239A/ja
Application granted granted Critical
Publication of JP6291209B2 publication Critical patent/JP6291209B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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/46Multiprogramming arrangements

Landscapes

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

Description

本発明は、マルチコアプロセッサで行われるプログラムのコンパイリング、タスクマッピング及びタスクスケジューリング技術に関する。
マルチコアアーキテクチャーの性能を極大化するためには、マルチコアアーキテクチャーの特性に適したプログラミングが必要である。
マルチコアプロセッサを通じて行われるプログラミングにおいて、マッピングとは、グラフで表現されたアプリケーションの各部分、すなわち、タスクをマルチコア構造の如何なるプロセッシングエレメントで行うか否かを決定する手続きを意味する。
また、スケジューリングとは、具体的なマッピング方法が定められた後、それぞれのタスクがプロセッシングエレメント上で行われる順序とタイミングとを決定する手続きを意味する。
ところが、マルチコア上で行われるマルチコアプログラムは、プログラマーが手作業で作成するには、プログラミングの複雑度があまりにも大きくて、プログラミングの生産性が低いか、プログラムの品質が劣悪であるなどの問題点がある。特に、プログラミングの複雑度を高める要因としては、マッピング及びスケジューリングがある。
特に、マルチコアプログラムは、プログラムの高い複雑度によって、それぞれのコアにマッピングされたタスクに対してソースPE(Source Processing Element)と宛先PE(Destination Processing Element)との間に“如何なる通信方式を使うか”をプログラム開発者が直接指定するのに大きな難しさがある。
本発明は、マルチコアプロセッサで行われるプログラムのコンパイル方法、マルチコアプロセッサのタスクマッピング方法及びタスクスケジューリング方法を提供することである。
本発明の一側面によるマルチコアプロセッサで行われるプログラムのコンパイル方法は、ソースプロセッシングエレメントと宛先プロセッシングエレメントとをマッピングする初期解を生成し、前記ソースプロセッシングエレメントから前記宛先プロセッシングエレメントへのタスクの伝送のための通信方式を選択する段階と、前記初期解に含まれた前記マッピング及び前記通信方式を近似的に最適化する段階と、前記タスクをスケジューリングする段階と、を含む。
本発明の他の側面によるマルチコアプロセッサのタスクマッピング方法は、マルチコアプロセッサの複数のプロセッシングエレメントから第1プロセッシングエレメントにタスクをマッピングする段階と、前記第1プロセッシングエレメントから第2プロセッシングエレメントに前記タスクを0と1との間の第1確率で移動させる段階と、前記第1確率で再びマッピングされる前記タスクを、0と1との間の第2確率で、前記1つのプロセッシングエレメントではないプロセッシングエレメントの他のタスクと代替する段階と、を含む。
本発明のさらに他の側面によるマルチコアプロセッサのタスクスケジューリング方法は、マルチコアプロセッサの2以上のプロセッシングエレメントで行われる2以上のタスクに対して第1時間区間内でスケジューリングを試みる段階と、前記スケジューリングを試みる段階で、1つのタスクと他のタスクとが重なってスケジューリングが失敗した場合、前記他のタスクと重なった時間長を求める段階と、前記第1時間区間と前記重なった時間長の和に相当する第2時間区間内でスケジューリングを再度試みる段階と、を含む。
本発明のさらに他の側面によるマルチコア再構成可能プロセッサのタスクマッピング及びスケジューリング方法は、タスクに対してマッピング、通信方式及びスケジューリングを含む初期解を生成する段階と、第1確率に基づいて前記マッピングを変更し、第2確率に基づいて前記通信方式を変更することによって、前記タスクに対する前記初期解を変更する段階と、前記タスクが他のタスクと重複する場合、計算された重複値によって、前記タスクを再スケジューリングする段階と、を含む。
共有メモリを利用したマルチコアプロセッサのプロセッシングエレメントの間の通信の例を説明する図面である。 共有メモリを利用したマルチコアプロセッサのプロセッシングエレメントの間の通信の例を説明する図面である。 メッセージパッシングを利用したマルチコアプロセッサのプロセッシングエレメントの間の通信の例を説明する図面である。 メッセージパッシングを利用したマルチコアプロセッサのプロセッシングエレメントの間の通信の例を説明する図面である。 本発明の一側面によるタスクのマッピング及び通信方式決定方法を例示したフローチャートである。 図3の初期解変更段階(ステップS110)をさらに詳しく示す図面である。 βの確率でタスクが位置交換する場合を例示した図面である。 (1−β)の確率でタスクが位置変更する場合を例示した図面である。 最適化過程の流れの一例を示すフローチャートである。 モジュロアルゴリズムを利用したインストラクションスケジューリングの手続きを例示したフローチャートである。 変形されたモジュロアルゴリズムを利用したタスクスケジューリングの手続きを例示したフローチャートである。 本発明の一側面による再構成可能なプロセッサで行われるコンパイリング方法の一例を示すフローチャートである。 本発明の一側面による再構成可能なプロセッサで行われるコンパイリング方法の他の例を示すフローチャートである。 本発明の他の側面による再構成可能なプロセッサのタスクマッピング方法の一例を示すフローチャートである。 本発明のさらに他の側面による再構成可能なプロセッサのタスクスケジューリング方法の一例を示すフローチャートである。
以下、添付した図面を参照して、本発明の実施のための具体例を詳しく説明する。
図1A及び図1Bは、共有メモリを利用したマルチコアプロセッサのプロセッシングエレメントの間の通信の例を説明する図面である。
図1Aと図1Bで、同じ図面符号は、同じ構成要素を表わす。
マルチコアプロセッサ内のプロセッシングエレメント112a、112b間では、通信が行われる。図1Aと図1Bで、PEは、共有メモリ120を用いて互いに通信を行う。
共有メモリを利用した通信方式は、大きく下記のような段階を通じて行われる。
(1)ソースPE112aが共有メモリにデータを記録する。
(2)共有メモリがソースPE112aにACKを伝送する。
(3)ソースPE112aが記録を完了した場合、ソースPE112aが宛先PE112bに同期パケット(sync packet)を伝送する。
(4)宛先PE112bが共有メモリに読み取り要請を伝送する。
(5)共有メモリが宛先PE112bにデータを伝送する。
この方式は、プログラミングが簡単であり、マルチタスクが容易であるという長所がある。一方、プロセッシングエレメントから共有メモリまでの経路(図2Bで、“path(shared memory”として図示する)が長い場合が度々発生する点、共有メモリのサイズが大きな点、及び共有メモリの動作速度が比較的遅い点などによって、電力消費量が多く、タスクの遂行速度が遅いという短所がある。
図2A及び図2Bは、メッセージパッシングを利用したマルチコアプロセッサのプロセッシングエレメントの間の通信の例を説明する図面である。図2Aと図2Bで、同じ図面符号は、同じ構成要素を表わす。図2Aと図2Bで、PE112a、112bは、それぞれのPE内部のスクラッチパッドメモリ(SPM:Scratch Pad Memory)を用いて互いに通信を行う。すなわち、ソースPE112aは、伝送しなければならないデータを共有メモリ120に記録する代わりに、宛先PE112bのSPMに直接伝送する。この場合、ソースPE112aから宛先PE112bまでの最短経路(図2Bで、“path(PSM)”として図示する)を通じてデータを伝送できるので、共有メモリ120を経由する図1Bに示された経路(“path(shared memory)”)に比べて、伝送時間が短くなる長所を有する。また、PSMは、共有メモリに比べて、著しく小さな保存容量を有する場合が一般的なので、メッセージパッシングを利用した通信方式は、電力消費量も少ないという長所がある。
一方、SPMの小さく、限定された保存容量によって、あらゆるメッセージをメッセージパッシングを利用した通信方式で伝送できない短所もある。
すなわち、メッセージパッシングを利用した通信方式を適用する時に得られる利得は、2つのPC間の距離など多様な要因によって変わるので、共有メモリを利用した通信方式とメッセージパッシングを利用した通信方式とのうちの如何なる通信方式を利用するかに関する選択は、マッピング及びスケジューリングのときに共に決定されることが望ましい。
図3は、本発明の一側面によるタスクのマッピング及び通信方式決定方法を例示したフローチャートである。タスクスケジューリングを行うために、最も先に決定しなければならないことは、各PEに対するタスクのマッピング及びタスクに関するソースPEと宛先PEとの間の通信方式である。
図3に例示したタスクマッピング及び通信方式決定方法は、一種の確率的アルゴリズムであるシミュレーティドアニーリングアルゴリズム(SA:Simulated Annealing)を基盤としている。
シミュレーティドアニーリングアルゴリズムは、次のような基本的な手続きでなされる。
(1)初期解を生成する。
(2)初期解をランダムに変化させて新規解を得る。
(3)新規解が初期解よりもさらに良ければ、新規解で初期解を代替するが、新規解が初期解よりもさらに良くなければ、所定の確率r(rは、0よりも大きく、1よりも小さい)に従って新規解で初期解を代替する。
(1)ないし(3)の手続きを通じて、シミュレーティドアニーリングアルゴリズムは、局所探索アルゴリズム(Local Search Algorithm)よりも優れる解が得られうるという長所がある。
図3のタスクマッピング及び通信方式決定方法は、初期解生成段階(ステップS100)及び初期解変更段階(ステップS110)を含む。
初期解生成段階(ステップS100)では、各PEに対するタスクマッピング及び各タスクへの関するソースPEと宛先PEとの間の通信方式を含む初期解が生成される。
次いで、初期解変更段階(ステップS110)では、生成された初期解に含まれたタスクマッピング状態及び各タスクの通信方式を変更した新たな解が生成される。
図4は、図3の初期解変更段階(ステップS110)をさらに詳しく示す図面である。
初期解変更段階(ステップS110)は、タスク移動段階(ステップS112)及び通信方式変更段階(ステップS114)を含みうる。
タスク移動段階(ステップS112)では、初期解で特定のPEにマッピングされたタスクに対して、タスクを移動するか否かが決定される。例えば、αの確率でタスクを特定のPEから他のPEに移動させることができる(ステップS1120)。この際、αは、0と1との間の値になる。また、タスクが移動しない確率は、(1−α)になる(ステップS1130)。
もし、タスクが移動した場合には、再びβの確率で他のPEの他のタスクと互いに位置交換させうる(ステップS1121)。この際、βは、0と1との間の値になる。
図5は、βの確率でタスクが位置交換する場合を例示した図面である。
すなわち、プロセッシングエレメント(PE0)にtask(0)というタスクがマッピングされ、プロセッシングエレメント(PE1)にtask(1)というタスクがマッピングされた場合、タスク移動段階(ステップS112)でβの確率でプロセッシングエレメント(PE0)にマッピングされるタスクは、task(1)に、プロセッシングエレメント(PE1)にマッピングされるタスクは、task(0)に変更される(ステップS1121)。
一方、(1−β)の確率でタスクの位置は、1つのプロセッシングエレメントから他のプロセッシングエレメントに位置変更されうる。
図6は、(1−β)の確率でタスクが位置変更する場合を例示した図面である。
すなわち、プロセッシングエレメント(PE0)にtask(0)というタスクがマッピングされた場合、このタスクをプロセッシングエレメント(PE)に移動させることができる(ステップS1122)。
再び図4に戻れば、通信方式変更段階(ステップS114)では、特定のタスクに対するソースPEと宛先PEとの間の通信方式を変更するか否かが決定される。
例えば、γの確率で通信方式が現在の通信方式から他の通信方式に変更されうる(ステップS1140、ステップS1142、ステップS1144)。もし、現在の通信方式がメッセージパッシングを利用した通信方式であれば、共有メモリを利用した通信方式に変更される確率は、γになる。この際、γは、0と1との間の値になる。
また、通信方式変更段階(ステップS114)で、(1−γ)の確率で特定のタスクの通信方式は変更されないこともある(ステップS1141、ステップS1143、ステップS1145)。
一方、初期解変更段階(ステップS110)が行われた後の解には、一般的に、追加的な最適化過程が行われる必要がある。
メッセージパッシングを利用した通信方式を使うためのSPMのサイズは、制限されているという点を考慮すると、最適化された解を得るためには、“プロセッシングエレメントがSPMの容量を超過せずとも、SPMの容量を最大限活用”することが望ましい。
また、特定のタスクに対する通信方式を共有メモリを利用した通信方式の代わりに、メッセージパッシングを利用した通信方式とする場合の利得は、PE間の通信距離や通信データ量またはSPM使用量など多様な要因によって変わる点を考慮すると、“共有メモリを利用した通信方式を使うときよりもメッセージパッシングを利用した通信方式を使うときの利得が大きなタスクに対して優先的にメッセージパッシングを利用した通信方式を適用”することが良い。
そのために、ソースPEと宛先PEとを有するタスク(t)に対する利得G(t)を以下の式(1)のように定義することができる。
G(t)=(L×A)/T (1)
この際、Lは、ソースPEから宛先PEまでの通信距離、Aは、ソースPEと宛先PEとの間の通信量、Bは、SPM使用量の合計を示す。
最適化過程を行うために、ヒューリスティック、特に、貪欲法ヒューリスティックを適用することができる。このような意味で、初期解変更段階(ステップS110)以後に行われる最適化過程は、近似的最適化過程であると言える。
図7は、最適化過程の流れの一例を示すフローチャートである。図7で示すように、最適化過程は、違法性除去段階(ステップS200)及び活用度向上段階(ステップS210)を含む。違法性除去段階(ステップS200)では、初期解変更段階(ステップS110)後の解に含まれたタスクのマッピング及び通信方式に存在する違法性が除去される。
初期解変更段階(ステップS110)後の解に含まれたタスクのマッピング及び通信方式には、SPMの容量を超過する(すなわち、“違法な”)プロセッシングエレメントが存在する確率が高い。違法性除去段階では、違法なプロセッシングエレメントの違法性が除去される。
例えば、まず、違法なプロセッシングエレメントを容量超過量が多い順に並べる。次いで、並べられた違法なプロセッシングエレメントにマッピングされた各タスクに対して指定されたメッセージパッシングを利用した通信方式を、違法性が解消されるまで(すなわち、SPMの容量が超過されないまで)共有メモリを利用した通信方式に変更する。
この際、通信方式を変更しなければならないタスクが複数個である場合には、式(1)で表される利得が低いタスクから変更することが望ましい。
容量超過量が多いプロセッシングエレメントから始めて、あらゆる違法なプロセッシングエレメントに対してタスクの通信方式の変更作業を終えれば、解は適法となる。
次いで、活用度向上段階(ステップS210)では、プロセッシングエレメントのSPMの残余空間をさらに活用するための手続きが行われる。
違法性除去段階が行われた後には、プロセッシングエレメントのSPMに残余空間があまりにも多く残る問題が発生する恐れがある。これは、初期解のためでも、違法性除去段階で大きな容量を使うタスクの通信方式を共有メモリを利用した通信方式に変更したためでもあり得る。
このようにSPMに残余空間が残っているプロセッシングエレメントに対して、通信方式がタスクの通信方式の活用度向上段階では、まず、プロセッシングエレメントをSPMの残余空間が多く残った順に並べる。次いで、並べられたプロセッシングエレメントにマッピングされた各タスクに対して指定された共有メモリを利用した通信方式を、メッセージパッシングを利用した通信方式に変更する。
この際、通信方式を変更しなければならないタスクが複数個である場合には、式(1)で表される利得が高いタスクから変更することが望ましい。
SPMの残余空間が多く残ったプロセッシングエレメントから始めて、SPMの残余空間を活用することができるあらゆるプロセッシングエレメントに対してタスクの通信方式の変更作業を終えれば、SPMの活用度が以前に比べて向上する。したがって、解は、さらに良好となる。
近似的最適化手続きが行われた後には、スケジューリングが必要である。
マッピングはタスクを行うプロセッシングエレメントを如何に指定するかに対する問題であり、スケジューリングは、タスクを如何なる時点に行うかに対する問題である。
スケジューリングのためのアルゴリズムは、非常に多様に存在するが、ここでは、非循環的アプリケーション(acyclic application)だけではなく、後方連関性(backward dependency)を有した循環的アプリケーション(cyclic application)に対するスケジューリングも支援することができるスケジューリングアルゴリズムを提案する。これを、便宜上、“変形されたモジュロアルゴリズム(Modified Modulo Algorithm)”と言う。
モジュロアルゴリズムは、一種の優先順位に基づくスケジューリングアルゴリズム(prioritybased scheduling algorithm)である。モジュロアルゴリズムは、反復遂行がなされるサイクルとサイクルとの間の時間間隔を意味する初期間隔(II:Initiation Interval)を予測して、予測した時間間隔内にあらゆるタスクをスケジューリングすることを試みた後、試みが失敗したとき、反復遂行間隔を少しずつ増やしながら最適の初期間隔を探す。
図8は、モジュロアルゴリズムを利用したインストラクションスケジューリングの手続きを例示したフローチャートである。
本来、モジュロアルゴリズムは、インストラクションをスケジューリングするためのアルゴリズムである。例えば、或る繰り返し行われるルーチンに関する反復遂行間隔は、初期間隔II(Initinal Interval)の範囲内で割り当てられる(ステップS300)。この際、特定時間区間(t)内でスケジューリングを行うように条件を付与されうる(ステップS310)。このような反復遂行間隔及び時間区間を有してスケジューリングが反復的に試みられる(ステップS320)。試みられたスケジューリングが失敗する場合、時間区間をt+1、t+2のように1(または、“単位時間”)ずつ増やしながらスケジューリングを再度試みる(ステップS350)。もし、インストラクションの反復遂行サイクルの間で既定の初期間隔(II)内にスケジューリングができないと判断されれば(ステップS340)、初期間隔を1(または、“単位時間”)ずつ増やして反復遂行間隔を(II+1)に再設定することができる(ステップS360)。この場合、再び特定時間区間(t)からスケジューリング試みが反復される。
ところが、このような方式は、インストラクションスケジューリングには適するが、タスクスケジューリングに適用する場合には、スケジューリングを行う時間が過度に多く必要となる問題点がある。したがって、インストラクションスケジューリングに使われるアルゴリズムをそのままタスクスケジューリングに適用することはできない。
図9は、変形されたモジュロアルゴリズムを利用したタスクスケジューリングの手続きを例示したフローチャートである。
例えば、或る繰り返し行われるルーチンを有するタスクをスケジューリングするために、反復遂行間隔は初期間隔II(Initinal Interval)の範囲内で割り当てられる(ステップS400)。この際、特定時間区間(t)内でスケジューリングを行うように条件を付与されうる(ステップS410)。このような反復遂行間隔及び時間区間を有してスケジューリングが反復的に試みられる(ステップS420)。試みられたスケジューリングが失敗する場合、スケジューリングを再度試みる(ステップS450)。
変形されたモジュロアルゴリズムが、本来のモジュロアルゴリズムと異なる最初の特徴は、所定の時間区間(t)内でスケジューリングを行いながら、特定のタスク(task(a))が他のタスク(task(b))と重なることによって、スケジューリングに失敗する場合、タスクが重なった時間長(toverlap)を求めるという点である(ステップS420)。続くタスクスケジューリング試みでは、新たな時間区間を(t+toverlap)として設定してスケジューリングを試みる(ステップS450)。すなわち、本来のモジュロアルゴリズムが単位時間(例えば、“1”)ずつ時間区間を増加させた後、スケジューリングを再度試みる点が異なる。
もし、反復遂行サイクルの間で既定の初期間隔(II)内にスケジューリングができないと判断されれば(ステップS440)、初期間隔を増やして反復遂行間隔を再設定することができる(ステップS460)。この場合、再び特定時間区間(t)からスケジューリング試みが反復される。
変形されたモジュロアルゴリズムが、本来のモジュロアルゴリズムと異なる二番目の特徴は、初期間隔を再設定しなければならない場合、再設定直前の初期間隔(II)で求めた重畳時間(toverlap)の最小値、すなわち、min(toverlap)を求めるという点である(ステップS432)。続くタスクスケジューリング試みでは、新たな初期間隔を(II+min(toverlap))としてスケジューリングを試みる(ステップS442)。すなわち、本来のモジュロアルゴリズムが、単位時間(例えば、“1”)ずつ初期間隔を増加させた後、スケジューリングを再度試みる点が異なる。
このような2つの特徴を有する変形されたモジュロアルゴリズムを用いてタスクスケジューリングを行うことによって、本来のモジュロアルゴリズムを用いてタスクスケジューリングを行う場合に比べて、スケジューリングの遂行時間を著しく短縮させることができる。一般的に、toverlapは、単位時間よりも長い時間区間であり、min(toverlap)も、単位時間よりも長い時間間隔なので、スケジューリングの再度の試み回数が同一である場合、変形されたモジュロアルゴリズムによるスケジューリングが、本来のモジュロアルゴリズムよりも広い時間帯域に対してスケジューリングを試みるためである。
また、このような変形されたモジュロアルゴリズムを用いて得たスケジューリング結果は、本来のモジュロアルゴリズムを用いて得たスケジューリング結果と比較して品質が実質的にほとんど下落しない。
図10は、本発明の一側面による再構成可能なプロセッサで行われるコンパイリング方法の一例を示すフローチャートである。図10に例示したように、再構成可能なプロセッサで行われるコンパイリング方法は、初期解生成段階(ステップS500)、近似的最適化段階(ステップS510)及びスケジューリング段階(ステップS520)を含んでなる。
初期解生成段階(ステップS500)では、前述したような確率的アルゴリズムを用いて多数のプロセッシングエレメントに対して多数のタスクがマッピングされ、タスクのそれぞれに関するソースプロセッシングエレメントと宛先プロセッシングエレメントとの間の通信方式が指定されるように初期解が生成される。例えば、確率的アルゴリズムとしてシミュレーティドアニーリングアルゴリズムが使われる。また、通信方式は、共有メモリを利用した通信方式とスクラッチパッドメモリを利用したメッセージパッシング通信方式とのうちの何れか1つに指定される。一方、初期解によってマッピングされたタスクの再配置及び/または各タスクに指定された通信方式の変更が、それぞれのタスクに対して確率的になされうる。
近似的最適化段階(ステップS510)では、初期解に含まれたマッピング及び通信方式を近似的に最適化する。近似的な最適化のために、前述したような最適化のためのヒューリスティックが使われる。
例えば、特定のプロセッシングエレメントにマッピングされたタスクに関するデータのサイズの和が、スクラッチパッドメモリの容量を超過しないように違法性を除去する最適化手続きが行われる。
または、スクラッチパッドメモリに残余空間が存在するプロセッシングエレメントに対して、前記スクラッチパッドメモリの活用度を向上させるように、タスクに指定された通信方式が共有メモリ通信方式からメッセージパッシング通信方式に変更されうる。
スケジューリング段階(ステップS520)では、複数のタスクに関するスケジューリングが行われる。
タスクをスケジューリングする段階は、スケジューリングを試み、該試みられたスケジューリングが失敗した場合、1つのタスクと他のタスクとの重なった時間長を求めて、スケジューリングに割り当てられた時間区間と重なった時間長の和に相当する新たな時間区間とに基づいてスケジューリングを再度試みる反復的な過程を経て行われる。
図11は、本発明の一側面による再構成可能なプロセッサで行われるコンパイリング方法の他の例を示すフローチャートである。
初期解生成段階(ステップS600)、近似的最適化段階(ステップS610)及びスケジューリング段階(ステップS620)は、それぞれ図10に示した実施形態の初期解生成段階(ステップS500)、近似的最適化段階(ステップS510)及びスケジューリング段階(ステップS520)と同様に行われる。
但し、図11の実施形態では、スケジューリング(ステップS620)が行われた後、スケジューリングの結果を評価する手続きがさらに行われる(ステップS630)。また、スケジューリングの評価結果に基づいて初期解生成段階(ステップS600)で得られた初期解よりも良好な新規初期解を生成し(ステップS640)、新規初期解に対して再び近似的最適化段階(ステップS610)及びその後の手続きが反復的に行われる。
図12は、本発明の他の側面による再構成可能なプロセッサのタスクマッピング方法の一例を示すフローチャートである。図12に例示した再構成可能なプロセッサのタスクマッピング方法は、タスク再配置段階(ステップS700)及び通信方式変更段階(ステップS710)を含んでなる。
タスク再配置段階(ステップS700)では、マルチコアプロセッサの複数のプロセッシングエレメントのうち、1つのプロセッシングエレメントにマッピングされたタスクを、0と1との間の第1確率で、他のプロセッシングエレメントに移動させる手続きが行われる。
この際、再び第1確率で再びマッピングされるタスクを、0と1との間の第2確率で、他のプロセッシングエレメントの他のタスクと代替して互いに位置変更する手続きが行われることもある。
通信方式変更段階(ステップS710)では、プロセッシングエレメントにマッピングされたそれぞれのタスクに指定されたソースPEと宛先PEとの間の通信方式を0と1との間の第3確率で変更する手続きが行われる。
このようなタスク再配置及び通信方式変更過程を通じて、さらに望ましいマッピング結果が得られる。
図13は、本発明のさらに他の側面による再構成可能なプロセッサのタスクスケジューリング方法の一例を示すフローチャートである。図13に例示したように、再構成可能なプロセッサのタスクスケジューリング方法は、スケジューリング試み段階(ステップS800)、重なった時間長計算段階(ステップS810)、反復遂行間隔計算段階(ステップS820)及びスケジューリング再度試み段階(ステップS830)を含んでなる。
スケジューリング試み段階(ステップS800)では、タスクが第1時間区間内で行われるようにスケジューリングを試みる。もし、1つのタスクと他のタスクとが重なってスケジューリングが失敗した場合、重なった時間長計算段階(ステップS810)では、重なった時間長が計算され、第1時間区間及び重なった時間長の和に相当する時間長を有する第2時間区間で新たなスケジューリングが試みられる。
また、図13の実施形態は、繰り返し行われる周期的ルーチンを有した場合にも適用可能なので、タスクのうち少なくとも一部が、第1反復遂行間隔をおいて繰り返し行われる場合、重なった多くの時間長のうち、最小値を求めて、現在の反復遂行間隔と重なった時間長の最小値の和に相当する時間長を新たな反復遂行間隔で設定することができる(ステップS820)。その後、第2反復遂行間隔及び第2時間区間の条件下でスケジューリングが反復的に再度試みられる(ステップS830)。
一方、本発明の実施形態は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現することが可能である。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。
コンピュータで読み取り可能な記録媒体の例としては、ROM、RAM、CD−ROM、磁気テープ、フロッピー(登録商標)ディスク、光データ保存装置などがあり、また、キャリアウェーブ(例えば、インターネットを介した伝送)の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本発明を具現するための関数プログラム、コード及びコードセグメントは、本発明が属する技術分野のプログラマーによって容易に推論されうる。
さらに、前述した実施形態は、本発明を例示的に説明するためのものであって、本発明の権利範囲が、特定の実施形態に限定されるものではない。
本発明は、マルチコアプロセッサで行われるプログラムのコンパイル方法、マルチコアプロセッサのタスクマッピング方法及びタスクスケジューリング方法関連の技術分野に適用可能である。

Claims (17)

  1. マルチコアプロセッサで実行されるプログラムをコンパイルする方法であって、前記方法は、再構成可能なプロセッサが、
    前記マルチコアプロセッサでタスクを実行するとき、該タスクのデータを伝送するときのソースプロセッシングエレメントと宛先プロセッシングエレメントとをマッピングする初期解を生成する段階であって、前記初期解は、前記ソースプロセッシングエレメントから前記宛先プロセッシングエレメントへ前記タスクのデータを伝送する方式を表すタスクの通信方式を含む、段階と、
    前記ソースプロセッシングエレメントと前記宛先プロセッシングエレメントとのそれぞれにマッピングされたそれぞれのタスクの通信方式を変更する段階と、
    前記タスクをスケジューリングする段階と、を含み、
    前記通信方式は、コンパイルのときに指定される、方法。
  2. 前記初期解は、確率的アルゴリズムを用いて生成する、請求項1に記載の法。
  3. 前記確率的アルゴリズムは、シミュレーティドアニーリングアルゴリズムである、請求項2に記載の法。
  4. 前記初期解を生成する段階で、
    前記通信方式は、共有メモリを利用した第1通信方式と前記ソースプロセッシングエレメントと前記宛先プロセッシングエレメントとのそれぞれに含まれたスクラッチパッドメモリを利用した第2通信方式とのうちから選択的に指定される、
    請求項1乃至3のいずれか一項に記載の法。
  5. 前記タスクの通信方式を変更する段階は、
    前記ソースプロセッシングエレメントと前記宛先プロセッシングエレメントとにマッピングされたタスクを、0と1との間の第1確率で、他のプロセッシングエレメントに再びマッピングする段階をさらに含む、請求項に記載の法。
  6. 前記再マッピングする段階は、
    前記他のプロセッシングエレメントにマッピングされた前記タスクを、0と1との間の第2確率で、第2タスクと代替してソースプロセッシングエレメント及び宛先プロセッシングエレメントに再びマッピングする段階をさらに含む、請求項に記載の法。
  7. 前記第2タスクは、前記ソースプロセッシングエレメントと前記宛先プロセッシングエレメントとが反対となるようにマッピングされることによって、前記第2タスクが最初にマッピングされた前記タスクを代替可能にし、
    前記第2通信方式は、前記宛先プロセッシングエレメントから前記ソースプロセッシングエレメントへの前記第2タスクの伝送のために選択される請求項に記載の法。
  8. 前記再びマッピングする段階は、
    前記タスクに対して前記第1通信方式と前記第2通信方式とのうちから選択的に指定された前記通信方式を、0と1との間の第3確率で、他の通信方式に変更する段階をさらに含む、請求項乃至のいずれか一項に記載の法。
  9. 前記タスクの通信方式を変更する段階は、
    貪欲アルゴリズムヒューリスティックを用いて行われる、請求項乃至のいずれか一項に記載の法。
  10. 前記タスクの通信方式を変更する段階は、
    前記ソースプロセッシングエレメント及び前記宛先プロセッシングエレメントにマッピングされた前記タスクに関するデータのサイズの和がクラッチパッドメモリの容量を超過しないようにタスクの通信方式を変更することにより、前記ソースプロセッシングエレメント及び前記宛先プロセッシングエレメントの違法性を除去する段階をさらに含む、請求項乃至のいずれか一項に記載の法。
  11. 前記違法性を除去する段階は、
    前記ソースプロセッシングエレメント及び前記宛先プロセッシングエレメントにマッピングされた前記第2通信方式が指定されたタスクに対して通信方式を前記第1通信方式に変更する段階をさらに含む、請求項10に記載の法。
  12. 前記違法性を除去する段階は、
    少なくとも前記ソースプロセッシングエレメント及び前記宛先プロセッシングエレメントに対して違法性が除去されるように行われる請求項10又は11に記載の法。
  13. 前記違法性を除去する段階は、
    少なくとも前記ソースプロセッシングエレメント及び前記宛先プロセッシングエレメントを含むスクラッチパッドメモリの容量超過が多いプロセッシングエレメントから順に、前記タスクに関するデータのサイズの和がスクラッチパッドメモリの容量を超過しないようにタスクの通信方式を変更することにより、プロセッシングエレメントの違法性の除去が行われる、請求項10乃至12のいずれか一項に記載の法。
  14. 前記タスクの通信方式を変更する段階は、
    スクラッチパッドメモリに残余空間が存在するプロセッシングエレメントに対して、タスクの通信方式を変更することにより、前記スクラッチパッドメモリの活用度を向上させる段階をさらに含む、請求項乃至13いずれか一項に記載の法。
  15. 前記活用度を向上させる段階は、
    定のプロセッシングエレメントにマッピングされた前記第1通信方式が指定されたタスクに対して、通信方式を前記第2通信方式に変更する段階をさらに含む、請求項14に記載の法。
  16. 前記タスクをスケジューリングする段階は、
    前記タスクのスケジューリングのための第1時間区間内でスケジューリングを試みる段階と、
    前記スケジューリングを試みる段階で、1つのタスクと他のタスクとが重なってスケジューリングが失敗した場合、前記他のタスクとの重なった時間長を求める段階と、
    前記第1時間区間と前記重なった時間長の和に相当する第2時間区間内でスケジューリングを再試みる段階と、
    をさらに含む請求項1乃至15いずれか一項に記載の法。
  17. 前記タスクをスケジューリングする段階は、
    少なくとも1つの前記タスクのうち少なくとも一部が、第1反復遂行間隔をおいて繰り返し行われる場合、少なくとも1つの前記重なった時間長の最小値を求める段階と、
    前記第1反復遂行間隔と前記重なった時間長の最小値の和に相当する第2反復遂行間隔とをおいて繰り返し行われるようにスケジューリングを再度試みる段階と、
    をさらに含む、請求項16に記載の法。
JP2013214187A 2012-10-11 2013-10-11 マルチコアプロセッサで行われるプログラムのコンパイル方法、マルチコアプロセッサのタスクマッピング方法及びタスクスケジューリング方法 Active JP6291209B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2012-0113103 2012-10-11
KR1020120113103A KR101926464B1 (ko) 2012-10-11 2012-10-11 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법

Publications (2)

Publication Number Publication Date
JP2014078239A JP2014078239A (ja) 2014-05-01
JP6291209B2 true JP6291209B2 (ja) 2018-03-14

Family

ID=49382262

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013214187A Active JP6291209B2 (ja) 2012-10-11 2013-10-11 マルチコアプロセッサで行われるプログラムのコンパイル方法、マルチコアプロセッサのタスクマッピング方法及びタスクスケジューリング方法

Country Status (5)

Country Link
US (1) US9298430B2 (ja)
EP (1) EP2720147B1 (ja)
JP (1) JP6291209B2 (ja)
KR (1) KR101926464B1 (ja)
CN (1) CN103729228B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2880531B1 (en) * 2012-08-02 2017-11-08 Siemens Corporation Pipelining for cyclic control systems
CN103995744B (zh) * 2014-05-22 2017-04-26 西安交通大学 一种用于消除存储访问拥塞的同构计算任务分组方法
CN104572266B (zh) * 2015-01-04 2018-03-06 华东师范大学 制程变异下基于UPPAAL‑SMC的MPSoC任务调度建模与评估方法
CN107291548B (zh) * 2016-03-31 2021-04-13 阿里巴巴集团控股有限公司 任务的资源调度方法及装置
WO2019065302A1 (ja) * 2017-09-27 2019-04-04 日立オートモティブシステムズ株式会社 車載マルチコア制御用データ伝達装置および電子制御装置
CN108108237B (zh) * 2017-12-27 2021-09-28 电子科技大学 一种基于milp的周期关联任务异构多核映射调度方法
US11128531B2 (en) * 2018-04-30 2021-09-21 Hewlett Packard Enterprise Development Lp Systems and methods for aggregate bandwidth and latency optimization
CN110514982B (zh) * 2019-08-22 2022-03-22 上海兆芯集成电路有限公司 性能分析系统与方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3364274B2 (ja) * 1993-05-21 2003-01-08 松下電器産業株式会社 タスク割り当て装置
JP3016359B2 (ja) * 1995-07-21 2000-03-06 日本電気株式会社 マルチプロセッサシステムにおけるプロセッサ割り当て装置、プロセッサ割り当て方法、およびプロセッサ割り当てプログラムを記憶する媒体
CA2275826A1 (en) * 1999-06-18 2000-12-18 Jia Xu A method of scheduling executions of periodic and asynchronous real-time processes having hard or soft deadlines
US8020163B2 (en) 2003-06-02 2011-09-13 Interuniversitair Microelektronica Centrum (Imec) Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof
US7564847B2 (en) * 2004-12-13 2009-07-21 Intel Corporation Flow assignment
US20060161755A1 (en) * 2005-01-20 2006-07-20 Toshiba America Electronic Components Systems and methods for evaluation and re-allocation of local memory space
US8826228B2 (en) * 2006-03-27 2014-09-02 Coherent Logix, Incorporated Programming a multi-processor system
CN101165655A (zh) * 2006-10-20 2008-04-23 国际商业机器公司 多处理器计算系统及其任务分配方法
JP2007188523A (ja) * 2007-03-15 2007-07-26 Toshiba Corp タスク実行方法およびマルチプロセッサシステム
US20090213755A1 (en) 2008-02-26 2009-08-27 Yinghai Lu Method for establishing a routing map in a computer system including multiple processing nodes
CN102089752B (zh) * 2008-07-10 2014-05-07 洛克泰克科技有限公司 依赖性问题的有效率的并行计算
US8161127B2 (en) 2009-02-23 2012-04-17 International Business Machines Corporation Process mapping in parallel computing
US8255644B2 (en) 2009-05-18 2012-08-28 Lsi Corporation Network communications processor architecture with memory load balancing
CN101620526B (zh) * 2009-07-03 2011-06-15 中国人民解放军国防科学技术大学 一种减少流处理器片上指令存储器资源消耗的方法
KR101612780B1 (ko) * 2009-11-13 2016-04-18 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법
KR101565172B1 (ko) * 2010-01-15 2015-11-02 삼성전자주식회사 대규모 병렬 프로세서 어레이 시스템의 데이터 처리 장치 및 방법
KR101647817B1 (ko) * 2010-03-31 2016-08-24 삼성전자주식회사 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법
US8490112B2 (en) * 2010-12-03 2013-07-16 International Business Machines Corporation Data communications for a collective operation in a parallel active messaging interface of a parallel computer
CN102087609B (zh) * 2011-02-23 2013-06-05 中国人民解放军国防科学技术大学 多处理器平台下的动态二进制翻译方法

Also Published As

Publication number Publication date
US20140109069A1 (en) 2014-04-17
EP2720147A2 (en) 2014-04-16
JP2014078239A (ja) 2014-05-01
CN103729228A (zh) 2014-04-16
EP2720147A3 (en) 2014-10-29
CN103729228B (zh) 2018-05-11
KR20140046897A (ko) 2014-04-21
EP2720147B1 (en) 2020-06-17
US9298430B2 (en) 2016-03-29
KR101926464B1 (ko) 2018-12-07

Similar Documents

Publication Publication Date Title
JP6291209B2 (ja) マルチコアプロセッサで行われるプログラムのコンパイル方法、マルチコアプロセッサのタスクマッピング方法及びタスクスケジューリング方法
Arabnejad et al. List scheduling algorithm for heterogeneous systems by an optimistic cost table
US20200133735A1 (en) Method, device, and computer program product for assigning tasks to dedicated processing resources
JP4339907B2 (ja) マルチプロセッサ向け最適コード生成方法及びコンパイル装置
US8543993B2 (en) Compiler, compile method, and processor core control method and processor
EP2281236B1 (en) Just-ahead-of-time compilation
US8819653B2 (en) Automated improvement of executable applications based on evaluating independent execution heuristics
KR101645035B1 (ko) 병렬 프로그래밍 조절 장치 및 방법
US20060038811A1 (en) Fast multi-pass partitioning via priority based scheduling
US20040268335A1 (en) Modulo scheduling of multiple instruction chains
US10007495B2 (en) Code generation method for scheduling processors using hook function and exception handling function
KR20110105615A (ko) 단말 적합성 애플리케이션 최적화장치 및 방법
JP6464982B2 (ja) 並列化方法、並列化ツール、車載装置
Hong et al. GPU code optimization using abstract kernel emulation and sensitivity analysis
KR102062208B1 (ko) 멀티스레드 프로그램 코드의 변환 장치 및 방법
US9043582B2 (en) Enhanced instruction scheduling during compilation of high level source code for improved executable code
JP5504879B2 (ja) マルチスレッド処理方法及びマルチスレッド処理装置
JP2014164664A (ja) タスク並列処理方法、装置及びプログラム
Lumpp et al. Task mapping and scheduling for OpenVX applications on heterogeneous multi/many-core architectures
WO2022166480A1 (zh) 任务调度方法、装置及系统
Dietze et al. The search‐based scheduling algorithm HP* for parallel tasks on heterogeneous platforms
Zaki et al. Partial expansion graphs: Exposing parallelism and dynamic scheduling opportunities for DSP applications
Meyer et al. Implementation techniques for SPMD kernels on CPUs
De Landtsheer et al. Optimal mapping of task-based computation models over heterogeneous hardware using placer
Garibay-Martínez et al. A framework for the development of parallel and distributed real-time embedded systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170912

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180209

R150 Certificate of patent or registration of utility model

Ref document number: 6291209

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