JP2010079622A - マルチコアプロセッサシステム、および、そのタスク制御方法 - Google Patents
マルチコアプロセッサシステム、および、そのタスク制御方法 Download PDFInfo
- Publication number
- JP2010079622A JP2010079622A JP2008247476A JP2008247476A JP2010079622A JP 2010079622 A JP2010079622 A JP 2010079622A JP 2008247476 A JP2008247476 A JP 2008247476A JP 2008247476 A JP2008247476 A JP 2008247476A JP 2010079622 A JP2010079622 A JP 2010079622A
- Authority
- JP
- Japan
- Prior art keywords
- task
- execution
- pattern
- cpu
- execution pattern
- 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.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
【課題】マルチコアプロセッサシステムにおいて、CPUコアの負荷による処理遅延の増加と、通信時間増加による処理の待ち時間の増加の両者を考慮して、タスクのスケジューリングをおこない、処理化の効率化をおこなう。
【解決手段】タスク複製をおこなって、並列処理プログラムを実行させるための各CPUコアによって実行されるタスクの実行パターンを複数生成する。そして、専従処理プログラムを実行時の状態を反映した推定負荷を求めて、その推定負荷に基づき、各CPUコアの処理の実行時間を計算する。また、CPUコア間での通信時間を計算して、各CPUコアの処理の実行時間とCPUコア間での通信時間との合計を、各々の実行パターンの推定所要時間し、推定所要時間の一番小さな実行パターンを最適な実行パターンとして選択して、各々の実行パターンに基づき、各タスクを実行する。
【選択図】図5
【解決手段】タスク複製をおこなって、並列処理プログラムを実行させるための各CPUコアによって実行されるタスクの実行パターンを複数生成する。そして、専従処理プログラムを実行時の状態を反映した推定負荷を求めて、その推定負荷に基づき、各CPUコアの処理の実行時間を計算する。また、CPUコア間での通信時間を計算して、各CPUコアの処理の実行時間とCPUコア間での通信時間との合計を、各々の実行パターンの推定所要時間し、推定所要時間の一番小さな実行パターンを最適な実行パターンとして選択して、各々の実行パターンに基づき、各タスクを実行する。
【選択図】図5
Description
本発明は、マルチコアプロセッサシステム、および、そのタスク制御方法に係り、特に、ハードウェア資源に制限がある組み込み機器のプロセッサで、並列処理を効率的に実行するのに好適なマルチコアプロセッサシステムのタスク制御方法に関する。
マルチコアプロセッサ(Multiple core Processor、Multi-core Processor)は、一つのCPUパッケージ内に複数のCPUコアを封入したプロセッサである。このマルチコアプロセッサは、外部的には1つのCPUでありながら内部的には2つのCPUとして認識されるため、主に並列処理をおこなわせる環境下において、CPUチップ全体での処理能力を上げ、性能向上を果たすために用いられる。
特に、近年では、組込み機器向けへのマルチコア技術の応用が期待されている。
このように複数のプロセッサによって、並列処理をおこなうシステムに関しては、特許文献1に開示がある。この特許文献1では、「マルチプロセッサ上でシングルプロセッサ向けOSと既存のアプリケーションをそれらに改造を加えることなく動作させる」ために、アプリケーションを並列化が可能な処理単位に分割して、各々のプロセッサで制御する技術が開示されている。
また、特許文献2には、「膨大な繰り返し演算を必要とする分割問題においても全てのCPUを有効に活用しCPUの数が増大しても並列処理効率を向上させる」ために、セルコンピュータの稼働率を勘案し、他のセルコンピュータに元のプログラムを複製したクーロンプログラムを他のセルコンピュータに実行させる技術が開示されている。
さらに、非特許文献1には、「並列プログラムを分散メモリアーキテクチャ上にスケジューリングする際に発生する通信遅延を削減するため」に、「タスク複製による通信コストを定量的に分析し、選ばれたタスクを複製すべきかどうかの条件」を導いている。
上記従来技術は、いずれもマルチプロセッサ上で並列処理をおこなう技術に関するものである。
しかしながら、特許文献1においては、並列処理をどのように効率的に実行していくかについては記載されていない。
また、非特許文献1においては、タスク複製に起因する処理時間の増加が課題となる。一般にタスク複製をおこなうと、タスク複製をおこなわない場合とは異なる通信がおこなわれる。この通信の通信時間が、タスク複製をおこなった場合の処理の効率化される時間と比較して小さい場合、通信によるオーバヘッドは問題とはならない。しかし、タスク複製により、本来存在しないタスクを実行するため、CPUの処理負荷が増加し、実行しようとしている並列プログラムよりも優先度の低い他の処理は実行が遅延するというおそれがある。反面、実行しようとしている並列プログラム以外の他の処理が優先して実行されると、複製したタスクの実行時間が伸び、反って並列プログラムの処理時間が増加すると言うおそれがある。
さらに、特許文献2においては、並列処理を実行する際のタスク間の通信時間を削減することについては記載がない。この特許文献2で提案されている手法は、通信時間を考慮した並列処理のスケジューリングをおこなっていない。しかしながら、CPUコア間で共有されるメモリの容量や速度、CPUコアを結合するバスの速度によって、通信時間が処理時間よりも大きくなる状況が考えられる。例えば、特定の機能を実現する目的で各機器にコンピュータを組み込む組込み機器では、コストが非常に重要であるためメモリ容量が制限されることが多く、通信に使用できるメモリ容量は小さくなる。このような組込み機器においては、大容量のメモリ領域を使用するアプリケーションに対して並列処理を適用する場合、通信用のメモリ容量が小さいと通信回数が増加し、通信スループットが低下し、ひいては処理待ち時間の増加による、並列処理効率の低下が発生するという問題点がある。
本発明は、上記問題点を解決するためになされたもので、その目的は、マルチコアプロセッサシステムにおいて、CPUコアの負荷による処理遅延の増加と、通信時間増加による処理の待ち時間の増加の両者を考慮して、タスクのスケジューリングをおこない、処理化の効率化をおこなうタスク制御方法を提供することにある。
本発明のマルチコアプロセッサシステムでは、実行パターン生成部により、並列処理プログラムを実行させるための各CPUコアによって実行されるタスクの実行スケジュールの実行パターンを複数生成するようにする。この実行パターン生成時には、同一のタスクを異なるCPUコアに実行させるためのタスク複製をおこなった実行パターンを生成する。
そして、一つのCPUコアにのみ実行される専従処理プログラムを実行時の状態を反映した推定負荷を求めて、その推定負荷に基づき、各CPUコアの処理の実行時間を計算する。また、CPUコア間での通信時間を計算して、各CPUコアの処理の実行時間とCPUコア間での通信時間との合計を、各々の実行パターンの推定所要時間とする。
スケジューリング部は、推定所要時間の一番小さな実行パターンを最適な実行パターンとして選択して、各々の実行パターンに基づき、各タスクを実行するように、タスク実行部に指示を与える。
本発明によれば、マルチコアプロセッサシステムにおいて、CPUコアの負荷による処理遅延の増加と、通信時間増加による処理の待ち時間の増加の両者を考慮して、タスクのスケジューリングをおこない、処理化の効率化をおこなうタスク制御方法を提供することができる。
以下、本発明の一実施形態を、図1ないし図15を用いて説明する。
(I)マルチコアプロセッサシステムのハードウェア環境
先ず、図1を用いて本発明の一実施形態に係るマルチコアプロセッサシステムのハードウェア構成について説明する。
図1は、本発明の一実施形態に係るマルチコアプロセッサシステムのハードウェア構成図である。
(I)マルチコアプロセッサシステムのハードウェア環境
先ず、図1を用いて本発明の一実施形態に係るマルチコアプロセッサシステムのハードウェア構成について説明する。
図1は、本発明の一実施形態に係るマルチコアプロセッサシステムのハードウェア構成図である。
現在のマルチコア搭載システムでは、各CPUコア、およびメモリとI/Oが単一のバスに結線され、すべてのコアがメモリ、およびI/Oを共有する構成を取るシステムが多くなっており、本実施形態でもそのような構成を取るものとする。
本実施形態のマルチコアプロセッサシステムは、図1に示されるように、マルチコアプロセッサ101が、複数のCPUコア1C1、1C2、…、1CNを保持している。そして、各々のCPUコアは、共有メモリ102やI/O103と、バス104により結線されている。
CPUコアは、プログラムによって様々な数値計算や情報処理、機器制御などをおこない、演算をするALU(Arithmetic and Logic Unit)、データを一時記憶するレジスタ、CPUコア全体を制御する制御部分などで構成されている。
共有メモリは、マルチコア101の保持する各CPUコアがアクセスする情報を保持する記憶装置であり、各CPUコアが実行する演算に必要な情報は、共有メモリ102内の対応する使用領域1M1、1M2、…、1MNなどに保持される。
また、共有メモリ102内に、複数のコアが相互にデータを通信するための共有領域1MCを設ける。
I/O103は、各CPUコアと入出力装置とのインターフェイスをおこなうための制御回路である。
(II)並列プログラムの実行環境のシステム階層
次に、図2を用いてマルチコアプロセッサシステム上で実行される並列プログラムの実行環境のシステム階層について説明する。
図2は、本発明の一実施形態に係るマルチコアプロセッサシステム上で実行される並列プログラムの実行環境のシステム階層を示す図である。
(II)並列プログラムの実行環境のシステム階層
次に、図2を用いてマルチコアプロセッサシステム上で実行される並列プログラムの実行環境のシステム階層について説明する。
図2は、本発明の一実施形態に係るマルチコアプロセッサシステム上で実行される並列プログラムの実行環境のシステム階層を示す図である。
本実施形態のシステム階層としては、図2に示されるように、ハードウェアレイヤLI、OSレイヤLII、アプリケーションレイヤLIIIの三階層により構成されているものとする。
ハードウェアレイヤLIに属するCPUコア1C1、1C2、…、1CNは、図1で説明したハードウェアの装置である。
そして、各々の上でOSレイヤLIIに属するOS(Operating System)(O1、O2、…、ON)を実行する。OSは、アプリケーションプログラムとハードウェアの制御をおこない、各々のアプリケーションプログラムにハードウェアのリソースを分配する。
アプリケーションレイヤLIIIは、OSレイヤ上で動作するプログラムが属するレイヤであり、並列処理プログラムP1、…、PMと、専従処理プログラムS1と、ミドルウェアM1が含まれている。
並列処理プログラムP1、…、PMは、各々の処理を各CPUコアにより並列実行が可能なプログラムである。OS上で実行されるプログラム単位は、タスクであり、各OSへの割り当ては、ミドルウェアM1でおこなわれる。専従処理プログラムS1は、一つのCPUコアで実行されることが想定されるプログラムである。
なお、通常、並列処理プログラムは、プログラム作成者が並行処理について意識してコーディングする必要がある。
(III)タスクと実行パターン
次に、図3および図4を用いて本発明の理解のために、タスクと実行パターンについて説明する。
図3は、本発明の一実施形態の並列処理のタスクグラフを例示した図である。
図4は、図3に示したタスクグラフの並列処理の実行パターンを示した図である。
(III)タスクと実行パターン
次に、図3および図4を用いて本発明の理解のために、タスクと実行パターンについて説明する。
図3は、本発明の一実施形態の並列処理のタスクグラフを例示した図である。
図4は、図3に示したタスクグラフの並列処理の実行パターンを示した図である。
一般に、複数の演算装置により、処理を並列実行する情報処理システムにおいて、並列実行される個々の処理を「タスク」、各演算装置に対してタスクを割り当てることを「スケジューリング」と呼んでいる。並列処理においては、タスクの実行に他のタスクの実行結果が必要となる場合があり、この場合に、本実施形態では、実行結果を引き渡すタスクを「先行タスク」、実行結果を受け取るタスクを「後続タスク」と呼ぶ。また、先行タスクと後続タスクの関係を、「タスクの依存関係」と呼ぶことにする。
ここで、図3のタスクグラフは、タスクの依存関係を表したものである。
また、図4は、実行パターンの例を表したものである。実行パターンは、タスクグラフ上に、タスクの関係に加え、タスクを実行するCPUコアを示したものを言う。
図3において、T1、T2、T3はタスクを、entry、exitは並列処理の始点と終点のタスクを、a、b、c、d、eはタスク実行結果の引渡し(タスク間の通信)を意味している。
なお、本実施形態を実施する際のタスク、およびタスク間の通信についての受け渡される情報については、後に、図6のタスクグラフ情報のデータ構造の例を示して、詳細に説明する。
図4に示されるように、実行パターン1は、タスクT1、T2、T3をCPU1で実行した場合の例を示している。また、実行パターン2は、タスクT3をCPU1で、タスクT1、T2をCPU2で実行した場合の例である。さらに、実行パターン6は、実行パターン2のタスクT1を複製し、タスクT1、T3をCPU1で、タスクT1、T2をCPU2で実行した場合の例を示している。
なお、entry、exitは並列処理の始点と終点のタスクを意味するため、常に並列処理の実行依頼がおこなわれたCPUコアにおいて実行される。
本実施形態を実施する際の実行パターンの情報については、後に、図8の実行パターンリストのデータ構造の例を示して、詳細に説明する。
(IV)モジュール構成の詳細
次に、図5を用いて本発明の一実施形態に係るマルチコアプロセッサシステムのタスク制御方法をおこなう際のモジュール構成の詳細について説明する。
図5は、本発明の一実施形態に係るマルチコアプロセッサシステムのモジュール構成を示す図である。
(IV)モジュール構成の詳細
次に、図5を用いて本発明の一実施形態に係るマルチコアプロセッサシステムのタスク制御方法をおこなう際のモジュール構成の詳細について説明する。
図5は、本発明の一実施形態に係るマルチコアプロセッサシステムのモジュール構成を示す図である。
各コアが実行するモジュール、データは、図1に示した共有メモリ102上の各コア使用領域1M1、1M2、…、共有領域1MCに配置される。また、図5において、「〜部」と記述される各々の機能を有するモジュールは、メモリ上に配置される実行コードが、CPUコア1C1、1C2において実行されるモジュールである。
CPU1が使用する領域であるCPU1使用領域1M1には、並列処理プログラム311、並列処理実行部211、専従処理プログラム317が保持される。同様に、CPU1が使用する領域であるCPU2使用領域1M2には、並列処理プログラム321、並列処理実行部221、専従処理プログラム323が保持される。また、共有領域1MCは、タスク実行情報3C1が保持する。
並列処理プログラム311は、並列実行する部分を含むアプリケーションプログラムである。なお、並列処理に適したアプリケーションプログラムは、相互にデータ通信が少ない異なる処理を複数実行するアプリケーションプログラムや、複数のデータを入力して各データに対して独立に同じ処理を実行するアプリケーションプログラムである。例えば、複数の画像データを入力し、画像エンコード/デコードを並列実行する画像管理アプリケーションプログラムなどがある。
また、CPU1使用領域1M1上の並列処理プログラム311は、並列実行する部分をCPU1で実行するために必要な実行コード、メモリ領域を保持し、 CPU2使用領域1M2上の並列処理プログラム321は、並列実行する部分をCPU2で実行するために必要な実行コード、メモリ領域を保持する。
並列処理実行部211は、並列処理プログラム実行部311から並列処理依頼を受け、並列処理を実行するモジュールである。この並列処理実行部211は、図2に示したミドルウェアM1に該当する。並列処理は、並列処理実行部211、221において分散実行される。そして、並列処理実行部211、221において実行された並列処理の結果を、並列処理実行部211が統合し、並列処理結果として並列処理プログラム311に返す。
専従処理プログラム317、323は、複数のCPUコアにおいて並列実行されない、各CPUコア固有のアプリケーションプログラムである。なお、並列実行されないアプリケーションプログラムの例としては、各CPUコア特有の機能を利用するアプリケーションプログラムや、通信データが多く並列実行効率が低いアプリケーションプログラムが挙げられる。専従処理プログラム317は、CPU1において実行され、専従処理プログラム323は、CPU2において実行される。
タスク実行情報3C1は、各CPUコアによってタスクを実行するために必要な情報である。タスク実行情報3C1については、後に、図7にタスク実行情報3C1のデータ構造の例を示して、詳細に説明する。
並列処理プログラム311は、逐次実行部312と、並列化対象部313により構成され、並列処理プログラム321は、並列化対象部322により構成される。ここでは、並列処理プログラム321は、説明の都合上、逐次実行部を持たないことにしている。
逐次実行部312は、並列処理プログラム311の逐次処理される部分である。
並列化対象部313、322は、並列処理プログラム311、312の各々のCPU1、2により並列実行される部分である。
並列処理実行部211は、実行パターン生成部212、タスクスケジューリング部213、タスク実行部214、タスク実行結果統合部215、負荷推定部216、タスクグラフ情報315、実行パターンリスト314、負荷情報316により構成され、並列処理実行部221は、タスク実行部222と、負荷推定部223により構成される。
実行パターン生成部212は、タスクグラフ情報315に基づいて、各タスクを実行するCPUコアを決定した実行パターンの実行パターンリスト314を生成する。
タスクスケジューリング部213は、負荷情報316を読み取り、実行パターンリスト314から最適な実行パターンを選択する。また、選択した実行パターンに従い、タスク実行部214、222にタスクの実行を依頼する。
タスク実行部214、222は、タスクスケジューリング部213からのタスク実行依頼を受け、タスクの実行をおこなう。タスクの実行は、タスク実行情報3C1に基づいて、並列化対象部313、322を実行する。また、タスクの完了時にタスク実行結果統合部にタスク完了を通知する。
タスク実行結果統合部215は、タスク実行部214、222からタスク完了通知を受け、タスクの実行結果を統合し、並列処理結果として並列処理プログラム311に伝達する。
負荷推定部216、223は、各CPUコアにおける専従処理プログラム317、323による負荷を推定する。そして、推定した各CPUコアの負荷を負荷情報316に書き込む。
タスクグラフ情報315は、タスク間の関係やタスクの入出力データなどタスク実行に必要な情報を記述するグラフ情報である。タスクグラフ情報315については、後に、図6のタスクグラフ情報のデータ構造の例を示して、詳細に説明する。
実行パターンリスト314は、実行パターン生成部212により生成されたタスクの実行スケジュールの実行パターンのリストである。実行パターンリスト314については、後に、図7のデータ構造の例を示して、詳細に説明する。
負荷情報316は、専従処理プログラムによる各CPUコアの推定負荷や各CPUコアへのタスクの割当て状況の情報である。負荷情報316については、後に、図9のデータ構造の例を示して、詳細に説明する。
(V)データ構造
次に、図6ないし図9を用いて本発明の一実施形態に係るタスク制御方法で用いるデータ構造について説明する。
図6は、タスクグラフ情報315のデータ構造の一例を示す図である。
図7は、実行パターンリスト314のデータ構造の一例を示す図である。
図8は、タスク実行情報3C1のデータ構造の一例を示す図である。
図9は、負荷情報316のデータ構造の一例を示す図である。
(V)データ構造
次に、図6ないし図9を用いて本発明の一実施形態に係るタスク制御方法で用いるデータ構造について説明する。
図6は、タスクグラフ情報315のデータ構造の一例を示す図である。
図7は、実行パターンリスト314のデータ構造の一例を示す図である。
図8は、タスク実行情報3C1のデータ構造の一例を示す図である。
図9は、負荷情報316のデータ構造の一例を示す図である。
タスクグラフ情報315は、図6に示されるように、タスクID、処理時間、先行タスクID、通信時間、関数ID、入力データID、出力データIDの各フィールドを保持する。
タスクIDは、タスクグラフ情報において、タスクを一意に識別できるIDを格納するフィールドである。処理時間は、CPUに専従処理プログラムに起因する負荷がかからない場合において、タスクの実行に必要な時間を格納するフィールドである。先行タスクIDは、当該タスクの開始時に実行完了していなければならないタスクのIDを格納するフィールドである。通信時間は、先行タスクが実行完了してからタスクを開始するまでに必要な時間を格納するフィールドである。関数IDは、タスクを実行する際に呼び出す関数のIDを格納するフィールドである。入力データIDと出力データIDは、タスク間の入出力関係を格納するフィールドである。例えば、図6に示される例では、タスクID(T1)は、出力データID(b、c)を保持し、タスクID(T2)は、入力データID(b)を保持している。これは、タスクT1の出力bをタスクT2が入力として使用することを意味している。
なお、このタスクグラフ情報315は、並列処理プログラム311により並列処理実行部211に受け渡される。
次に、実行パターンリスト314は、生成された複数の実行パターンを保持するリストである。各実行パターンは、図7に示されるように、実行パターンID、パターンタスクID、処理時間、先行パターンタスクID、通信時間、関数ID、入力データID、出力データID、CPUIDの各フィールドを保持する。
実行パターンIDは、実行パターンを一意に識別できるIDを格納するフィールドである。パターンタスクIDは、実行パターンリストにおいて、パターンタスクを一意に識別できるIDを格納するフィールドである。ここで、パターンタスクとは、実行するCPUが決定されているタスクであり、タスクを複製した各パターンタスクは異なるパターンタスクとして認識される。本実施形態においては、パターンタスクIDは、タスクIDと実行パターンIDとの組合せによって示すことにする。具体的には、パターンタスクID(P6entry)は、パターンIDがP6のパターンにおけるタスクIDが、entryのタスクによるパターンタスクを示し、同様に、パターンタスクID(P6T1)は、パターンIDがP6のパターンにおけるタスクIDがT1のタスクのパターンタスクを示している。また、パターンタスクID(P6T1−2)は、パターンIDがP6のパターンにおけるタスクIDがT1のタスクの複製タスクを示している。図7の例では、CPU2で実行されているパターンタスクID(P6T1)のパターンタスクの複製タスクとして、パターンタスクID(P6T1−2)のパターンタスクが生成され、それがCPU1で実行されることを示している。
処理時間は、パターンタスクの実行に必要な時間を格納するフィールドである。先行パターンタスクIDは、当該パターンタスクを開始時に実行完了していなければならないパターンタスクのIDを格納するフィールドである。通信時間は、先行パターンタスクが実行完了してからパターンタスクを開始するまでに必要な時間を格納するフィールドである。ただし、後述するCPUIDが当該パターンタスクと、先行パターンタスクとで同一の場合、通信時間は0とする。CPUIDは、当該パターンタスクを実行するCPUコアのIDを格納するフィールドである。
実行パターンリスト314は、タスク複製の有無を含む複数の実行パターンを保持する。実行パターンを選択することにより、各CPUコアに割り振る処理時間や、タスク複製の有無を選択することができる。
次に、タスク実行情報3C1は、図8に示されるように、パターンタスクID、関数ID、入力データID、出力データID、実行状態の各フィールドからなる情報である。
パターンタスクID、関数ID、入力データID、出力データIDの各フィールドは、タスクスケジューリング部213によって選択された実行パターンと同一の情報を保持する。実行状態は、タスク実行部214、222によって実行されるパターンタスクの状態を格納するフィールドである。パターンタスクの状態として、「未実行」、「実行中」、「実行完了」の三つの状態がある。
次に、負荷情報316は、図9に示されるように、CPUID、推定負荷、実行中パターンタスクID、実行待ちパターンタスクIDの各フィールドからなる情報である。
CPUIDは、対象となるマルチコアプロセッサシステムにおいて、並列処理の負荷分散対象となるCPUコアを一意に識別できるIDを格納するフィールドである。推定負荷は、負荷推定部216、223によって推定された各CPUコアの推定負荷を格納するフィールドである。実行中パターンタスクIDは、タスク実行部において実行中のパターンタスクIDを格納するフィールドである。実行待ちパターンタスクIDは、当該CPUコアにおいてつぎに実行予定のパターンタスクIDを格納するフィールドである。
負荷推定部216、223によって推定された各CPUコアの推定負荷は、専従処理プログラムによる負荷を示しており、100%から引いた残りの負荷(CPU1の場合は、50%、CPU2の場合は、30%)が、並列処理プログラムによって使用可能なCPUコアのパワーとなる。
(VI)タスク制御方法の処理
次に、既に述べた図5と、図10ないし図15を用いて本発明の一実施形態に係るマルチコアプロセッサシステムのタスク制御方法の処理について説明する。
(VI)タスク制御方法の処理
次に、既に述べた図5と、図10ないし図15を用いて本発明の一実施形態に係るマルチコアプロセッサシステムのタスク制御方法の処理について説明する。
先ず、図5を用いてマルチコアプロセッサシステムのタスク制御方法の処理の概要について説明する。
初めに、並列処理プログラム311から、図6に示したタスクグラフ情報315が渡されて、並列処理実行部211の実行パターン生成部212に並列処理実行が依頼される。
実行パターン生成部212は、図7に示した実行パターンリスト314を生成し、タスクスケジューリング部213に並列処理開始を依頼する。
タスクスケジューリング部213は、実行パターンリスト314と図9に示した負荷情報316を参照し、図8に示したタスク実行情報3C1を生成する。また、タスク実行部214、222においてタスクが実行されていない場合、タスク実行情報3C1を参照し、タスク実行部214、222にタスクの実行開始を通知する。
タスク実行部214、222は、タスク実行情報3C1を参照し、パターンタスクIDによって特定されるタスクを実行する。そして、タスク実行完了後、タスク実行結果統合部215にタスク実行完了を通知する。
タスク実行結果統合部215は、タスク実行情報3C1を参照し、タスクスケジューリング部213にタスク実行完了を通知する。また、全てのタスクが実行完了している場合、並列処理結果を出力する。
負荷推定部216、223は、専従処理プログラム317、323から推定負荷情報を受け取り、各負荷推定部が実行されているCPUの推定負荷を計算する。負荷推定部216と負荷推定部223の間で、各CPUの推定負荷を相互に伝達し、負荷情報316を生成する。
なお、専従処理プログラム317、323が、推定負荷情報を出力するために、専従処理プログラム317、323に特定のブレークポイントに達すると、処理量を出力するなどのコーディングが必要となる。
以上の処理により、並列処理を実行する。
次に、図10ないし図15を用いて本実施形態の各モジュールの処理について説明する。
先ず、図10を用いて実行パターン生成部212の処理について説明する。
図10は、実行パターン生成部212の処理を示すフローチャートである。
図10は、実行パターン生成部212の処理を示すフローチャートである。
先ず、実行パターン生成部212は、並列処理プログラム311からの、並列処理実行依頼を待ち受ける(ステップ1211)。
次に、タスクグラフ情報315の基づき、実行パターンを生成し、実行パターンリスト314に追加する(ステップ1212)。
実行パターンは、タスクグラフ情報315を参照し、各タスクにタスクを実行するCPUコアのIDを追加して生成する。ただし、実行パターンの始点と終点となるタスクentryとタスクexitのCPUIDは、並列処理プログラム311から、並列処理実行依頼を受けたCPUコアのIDとする。
図7に示された実行パターンリスト314の処理時間、通信時間、関数ID、入力データID、出力データIDは、各パターンタスクの基となったタスクのものとする。
ステップ1212における、実行パターンの生成手順は、本実施形態では、例えば、以下の手順によりおこなう。
(1)すべてのタスクのCPUIDをCPU1とした実行パターンを生成し、実行パターンリスト314に追加する。
(2)実行パターンリスト314から、実行パターンを一つ選択する。
(3)選択した実行パターンにおいて、タスクexitを選択するか、または、CPUIDがCPU2であるタスクを一つ選択する。
(4)選択したタスクの先行タスクから、CPUIDがCPU1である先行タスクを選択する。
(5)選択した先行タスクのCPUIDをCPU2に変更した実行パターンを生成し、実行パターンリスト314に追加する。
(6)新しい実行パターンが生成できなくなるまで、上記の(2)〜(5)の手順を繰り返す。
(1)すべてのタスクのCPUIDをCPU1とした実行パターンを生成し、実行パターンリスト314に追加する。
(2)実行パターンリスト314から、実行パターンを一つ選択する。
(3)選択した実行パターンにおいて、タスクexitを選択するか、または、CPUIDがCPU2であるタスクを一つ選択する。
(4)選択したタスクの先行タスクから、CPUIDがCPU1である先行タスクを選択する。
(5)選択した先行タスクのCPUIDをCPU2に変更した実行パターンを生成し、実行パターンリスト314に追加する。
(6)新しい実行パターンが生成できなくなるまで、上記の(2)〜(5)の手順を繰り返す。
具体的には、すべてのタスクのCPUIDをCPU1とした図4の実行パターン1が生成され、実行パターンリストに追加される。次に、実行パターン1のタスクexitから先行タスクT2を選択し、T2のCPUIDをCPU2に変更した実行パターン2が生成され、実行パターンリストに追加される。
次に、実行パターンリスト314に基づき、タスクを複製する実行パターンを生成し、実行パターンリスト314に追加する(ステップ1213)。なお、このステップ1223については、後に、図15を用いてタスクを複製する実行パターンの生成手順を示し、詳細に説明をおこなうこととする。
次に、実行パターンリスト314における、各パターンタスクの通信時間を計算する(ステップ1214)。このパターンタスクの通信時間を計算する場合に、実行パターンリスト314を参照し、パターンタスクと先行パターンタスクが同一のCPUIDを保持している場合、パターンタスクの通信時間を0に変更する。また、パターンタスクと先行パターンタスクが異なるCPUIDを保持している場合、パターンタスクの通信時間を変更しない。
次に、むだな実行パターンを、実行パターンリスト314から削除する(ステップ1215)。ここで、「むだな実行パターン」とは、いずれの負荷状況においても選択されることのない実行パターンを指す。
例えば、後述するステップ1312において詳細に解説するが、本実施形態では実行パターンの推定所要時間と呼ぶものを計算し、推定所要時間が小さい実行パターンを選択する。二つの実行パターンを比較して、いずれの負荷状況においても常に、一方の実行パターンの推定所要時間が小さい場合、もう一方の実行パターンは選択されることはない。例えば、CPU1とCPU2があり、両者の負荷が0から100%変わるとき、いずれの組み合わせでも、ある実行パターンが他の実行パターンよりも、推定所要時間が大きくなるときには、そのような実行パターンは、「むだな実行パターン」であるとして、削除されることになる。
このように選択されることが無いことが明らかな実行パターンを、実行パターンリスト314から削除する。
次に、並列処理開始をタスクスケジューリング部213に通知し(ステップ1216)、ステップ1211に戻る。
なお、実行パターン生成部212による実行パターンの生成は、過去に並列処理を依頼されたタスクグラフと同一のタスクグラフに対して、再度生成を依頼された場合、省略してもよいものとする。省略する場合、実行パターンを生成する代わりに、保存しておいた実行パターンリストを採用する。
次に、図11を用いてタスクスケジューリング部213の処理について説明する。
図11は、タスクスケジューリング部213の処理を示すフローチャートである。
図11は、タスクスケジューリング部213の処理を示すフローチャートである。
先ず、タスクスケジューリング部213は、実行パターン生成部212からの並列処理開始通知を待ち受ける(ステップ1311)。
次に、負荷情報316と実行パターンリスト314に基づき、各実行パターンの推定所要時間を計算する(ステップ1312)。本実施形態では、負荷情報316の推定負荷と実行パターンリスト314のCPUID、処理時間、通信時間を用いて、推定所要時間を計算する。
例えば、CPU1の処理時間合計をCPU1の推定負荷に応じて増加させたCPU1推定所要時間と、CPU2の処理時間合計をCPU2の推定負荷に応じて増加させ、それに通信時間を加算したCPU2推定所要時間とを比較して、より大きいものを実行パターンの推定所要時間とする。
具体的には、図7の実行パターンID(P6)と、図9の負荷情報を例にとった場合、CPU1の処理時間合計は、パターンタスクID(P6T1−2)の10、パターンタスクID(P6T3)の10を合計して20となる。また、CPU1の推定負荷は50%なので、並列処理に使われる負荷は、(100−50)%=50%となる。したがって、CPU1推定所要時間は、(10+10)/(1−0.5)により計算され、20を2倍した40となる。なお、パターンタスクID(P6entry)からパターンタスクID(P6T1−2)、パターンタスクID(P6T1−2)からパターンタスクID(P6T3)、パターンタスクID(P6T3)からパターンタスクID(P6exit)の通信時間は、CPU1のみで処理するタスクのため、すべて、0になる。
同様にCPU2の処理時間合計は、パターンタスクID(P6T1)の10、パターンタスクID(P6T2)の10を合計して20となる。また、CPU2の推定負荷は70%なので、並列処理に使われる負荷は、(100−70)%=30%となり、負荷がない状態と比較して、1/0.3倍の処理時間が必要となる。一方、通信時間は、パターンタスクID(P6entry)からパターンタスクID(P6T1)へは、10、パターンタスクID(P6T1)からパターンタスクID(P6T2)は、0、パターンタスクID(P6T2)からパターンタスクID(P6exit)へは、10となり、これらのすべてを合計して20となる。
CPU2の負荷を考慮した処理時間は、(10+10)/(1−0.7)により、計算され、20を3.33倍した66.6となり、CPU2推定所要時間は、これに通信時間の合計20を加算した86.6となる。
以上より、実行パターンID(P6)の推定所要時間は、CPU1推定所要時間の40とCPU2推定所要時間の86.6を比較して、より大きい値の86.6となる。
次に、ステップ1312において計算した推定所要時間が最小となる実行パターンを選択する(ステップ1313)。
推定所要時間は、CPUコアの負荷に応じた並列処理に必要な推定時間なので、推定所要時間が最小となる実行パターンを選択することにより、CPUコアの負荷に応じて処理効率の良い実行パターンを選択することができる。
次に、ステップ1313において選択された実行パターンに基づき、並列処理を開始する(ステップ1314)。
このときに、パターンタスクが、負荷情報316の実行待ちパターンタスクに追加される。パターンタスクを追加する負荷情報におけるCPUIDは、実行パターンのCPUIDを同一とする。例えば、図7の実行パターンID(P6)が実行パターンに決定された場合、パターンタスクP6T1、P6T2は、CPU2の実行待ちパターンタスクに、パターンタスクP6T1−2、P6T3はCPU1の実行待ちパターンタスクに追加される。
次に、負荷情報316を参照し、実行待ちパターンタスクがあるCPUコアが存在する場合には、ステップ1316に進み、存在しない場合には、ステップ1311に進む(ステップ1315)。
実行待ちパターンタスクがあるCPUコアが存在するときに、負荷情報316を参照し、実行可能な実行待ちパターンタスクがあるCPUコアが存在する場合には、ステップ1317に進み、存在しない場合には、ステップ131bに進む(ステップ1316)。実行可能な実行待ちパターンタスクとは、実行待ちパターンタスクの中で、すべての先行パターンタスクが実行完了となっているパターンタスクである。
実行可能な実行待ちパターンタスクがあるCPUコアが存在するときに、負荷情報316を参照し、当該CPUコアの実行中パターンタスクが存在する場合には、ステップ131bに進み、存在しない場合には、ステップ1318に進む(ステップ1317)。
該当するCPUコアの実行中パターンタスクが存在するときに、負荷情報316を参照し、当該CPUコアの推定負荷が閾値以下の場合には、ステップ1319に進み、それ以外の場合には、ステップ131bに進む(ステップ1318)。
閾値はシステム設計者が任意に設定する値で、本実施形態においては、例えば、80%とする。この閾値を設定するのは、並列処理プログラムの方にCPUのパワーが独占されるのを避けて、ある程度、専従処理プログラムの実行のためのCPUパワーを確保するためである。
CPUコアの推定負荷が閾値以下のときに、負荷情報316において、当該CPUコアの実行可能な実行待ちパターンタスクを一つ、実行中パターンタスクに変更して、設定する(ステップ1319)。
次に、ステップ1319において変更されたパターンタスクの実行開始を、当該CPUコアのタスク実行部に通知する(ステップ131a)。
次に、タスク実行結果統合部からのタスク完了通知、または、負荷推定部からの負荷情報変化通知を待ち受け(ステップ131b)、ステップ1315に戻る。
なお、本実施形態では、CPUの推定負荷について閾値を設ける例を示したが、ステップ1313で選択された実行パターンの各パターンタスクの通信時間の合計に、閾値を設けて、その閾値を超える実行パターンは、採用しないようにしてもよい。これは、メモリ容量が少ない組込み用途のマルチコアプロセッサシステムでは、通信のために割り当てられるメモリ容量も少なくなるために、有効な方法となりえる。
次に、図12を用いてタスク実行部214、222の処理について説明する。
図12は、タスク実行部214、222の処理を示すフローチャートである。
図12は、タスク実行部214、222の処理を示すフローチャートである。
先ず、タスク実行部214、222は、タスクスケジューリング部213からの、タスク実行開始通知を待ち受ける(ステップ1411)。
次に、タスク実行情報3C1における、タスク実行開始通知を受けたパターンタスクの実行状態を、実行中に変更する(ステップ1412)。
次に、パターンタスクを実行する(ステップ1413)。
タスク実行の際、呼び出す関数アドレス、関数に引数として渡す入力データアドレス、関数の処理結果を保持する出力データアドレスは、タスク実行情報3C1を参照し、関数ID、入力データID、出力データIDから特定する。
次に、タスク実行情報3C1における、タスク実行開始通知を受けたパターンタスクの実行状態を、実行完了に変更する(ステップ1414)。
次に、タスク完了を、タスク実行結果統合部215に通知し(ステップ1415)、ステップ1411に戻る。
次に、図13を用いてタスク実行結果統合部215の処理について説明する。
図13は、タスク実行結果統合部215の処理を示すフローチャートである。
図13は、タスク実行結果統合部215の処理を示すフローチャートである。
先ず、タスク実行結果統合部215は、タスク実行部214、222からのタスク完了通知を待ち受ける(ステップ1511)。
次に、タスク実行情報3C1を参照し、全パターンタスクの実行状態が、実行完了の場合には、ステップ1513に進み、それ以外の場合には、ステップ1514に進む(ステップ1512)。
全パターンタスクの実行状態が、実行完了のときに、タスク実行情報3C1を参照し、出力データIDから関数の処理結果を保持する出力データアドレスを特定する(ステップ1513)。
そして、特定した出力データアドレスから、出力データを読み込む。すべてのタスク実行結果を統合して、並列処理結果を並列処理プログラム実行部に出力する。
次に、タスク完了を、タスクスケジューリング部213に通知し(ステップ1514)、ステップ1511に戻る。
次に、図14を用いて負荷推定部216、223の処理について説明する。
図14は、負荷推定部216、223の処理を示すフローチャートである。
図14は、負荷推定部216、223の処理を示すフローチャートである。
先ず、負荷推定部216、223は、専従処理プログラム実行部317、323、負荷推定部216、223からの、負荷変化通知を待ち受ける(ステップ1611)。ここで、負荷変化通知とは、専従処理プログラムによるCPUコアの推定負荷が変化したことや、各負荷推定部を実行しているCPUコアの推定負荷が変化したことを知らせる通知を意味する。具体的には、ユーザの入力により、推定負荷が0%の入力待ち状態から、推定負荷が100%の処理実行状態に変化したことや、処理が終了し、推定負荷が0%の入力待ち状態に変化したことなどである。
次に、専従処理プログラムからの負荷変化通知の場合には、ステップ1613に進み、それ以外の場合には、ステップ1615に進む(ステップ1612)。
専従処理プログラムからの負荷変化通知を受けたとには、その負荷変化通知に基づき、自CPUコアの推定負荷を計算する(ステップ1613)。
次に、計算した自CPUコアの推定負荷を、各CPUコアの負荷推定部に通知する(ステップ1614)。
次に、自CPUコアが、タスクスケジューリング部213が動作しているCPUコアである場合には、ステップ1616に進み、それ以外の場合、ステップ1611に進む(ステップ1615)。
次に、ステップ1613において計算した自CPUコアの推定負荷、ステップ1614において通知された他CPUコアの推定負荷を負荷情報316に設定して、更新する(ステップ1616)。
次に、負荷情報変化を、タスクスケジューリング部213に通知し(ステップ1617)、ステップ1611に戻る。
このようにして、負荷推定部216、223により推定したCPUコアの負荷を用いることにより、CPUコアの負荷に応じた実行パターンの選択が可能となる。
次に、図15を用いて実行パターン生成部において、タスクを複製する実行パターンの生成手順のステップ1213の処理について説明する。
図15は、実行パターン生成部において、タスクを複製する実行パターンの生成手順のステップ1213の詳細を示すフローチャートである。
図15は、実行パターン生成部において、タスクを複製する実行パターンの生成手順のステップ1213の詳細を示すフローチャートである。
この図15のフローチャートは、図10に示したタスクを複製する実行パターンの生成手順のステップ1213の詳細を説明するものである。
先ず、実行パターンリスト314の全ての実行パターンを一度選択した場合には、タスクを複製する実行パターンの生成手順を終了し。選択したことのない実行パターンがある場合には、ステップ1712に進む(ステップ1711)。
次に、実行パターンリスト314から、選択していない実行パターンを一つ選択する(ステップ1712)。
次に、ステップ1712において選択した実行パターンの全てのパターンタスクを一度選択したことがある場合には、ステップ1711に進み、選択したことがないパターンタスクがある場合、ステップ1714に進む(ステップ1713)。ただし、タスクentryとタスクexitは対象外とする。
ステップ1712において選択した実行パターンの全てのパターンタスクを一度選択したことがあるときに、選択した実行パターンから、選択したことのないパターンタスクを選択する(ステップ1714)。ただし、タスクentryとタスクexitは選択しない。
次に、ステップ1714において選択したパターンタスクの全ての先行パターンタスクを一度選択したことがある場合、ステップ1713に進み、選択したことがない先行パターンタスクがある場合、ステップ1716に進む(ステップ1715)。
ステップ1714において選択したことがない先行パターンタスクがあるときに、選択したパターンタスクから、選択したことのない先行パターンタスクを選択する(ステップ1716)。
次に、ステップ1714において選択したパターンタスクのCPUIDと、ステップ1716において選択した先行パターンタスクのCPUIDが同じである場合、ステップ1713に進み、異なる場合、ステップ1718に進む(ステップ1717)。
ステップ1714において選択したパターンタスクのCPUIDと、ステップ1716において選択した先行パターンタスクのCPUIDが異なるときに、ステップ1716において選択した先行パターンタスクを複製した実行パターンを生成し、実行パターンリスト314に追加する(ステップ1718)。このとき、複製したパターンタスクのCPUIDは、ステップ1714において選択したパターンタスクのCPUIDを有する。また、複製したパターンタスクを先行パターンタスクとして持つパターンタスクのうち、複製したパターンタスクのCPUIDと同一のCPUIDを持つパターンタスクは、先行パターンタスクを複製したパターンタスクに変更する。
例えば、図4において、実行パターンとして実行パターン2を、パターンタスクとしてタスクT2を、複製元パターンタスクとしてタスクT1を選択した場合、タスクT1を複製して、実行パターン6が生成される。
101…マルチコアプロセッサ、102…共有メモリ、103…I/O、104…バス、1C1…CPUコア1、1C2…CPUコア2、1CN…CPUコアN、1M1…CPU1使用領域、1M2…CPU2使用領域、1MN…CPUN使用領域、1MC…共有領域、311…並列処理プログラム、211…並列処理実行部、317…専従処理プログラム実行部、312…逐次実行部、313…並列化対象部、212…実行パターン生成部、213…タスクスケジューリング部、214…タスク実行部、215…タスク実行結果統合部、216・演ラ推定部、315…タスクグラフ情報、314…実行パターンリスト、316…負荷情報、321…並列処理プログラム、221…並列処理実行部、323…専従処理プログラム、322…並列化対象部、222…タスク実行部、223…負荷推定部、3C1…タスク実行情報。
Claims (8)
- 複数のCPUコアを搭載し、各CPUコアにより分散して、処理を実行するマルチコアプロセッサシステムにおいて、
各CPUコアによって実行されるタスクの実行スケジュールの実行パターンを複数生成する実行パターン生成部と、
各CPUコアの負荷を推定する負荷推定部と、
前記負荷推定部により推定された推定負荷より計算された各CPUコアにおける処理の実行時間と、CPUコア間の通信時間とに基づいて、前記実行パターンを選択するタスクスケジューリング部と、
前記タスクスケジューリング部の指示に従い、前記実行パターンの各タスクを実行するタスク実行部とを有するマルチコアプロセッサシステム。 - 前記実行パターン生成部は、同一のタスクを異なるCPUコアに実行させるためのタスク複製をおこなった実行パターンを生成することを特徴とする請求項1記載のマルチコアプロセッサシステム。
- 前記実行パターンのタスクを実行する際のあるCPUコアの前記推定負荷が、一定の閾値より大きいときには、その実行パターンを選択しないようにすることを特徴とする請求項1記載のマルチコアプロセッサシステム。
- 前記実行パターンのCPUコア間の通信時間の合計が、一定の閾値より大きいときには、その実行パターンを選択しないようにすることを特徴とする請求項1記載のマルチコアプロセッサシステム。
- 複数のCPUコアを搭載し、各CPUコアにより分散して、処理を実行するマルチコアプロセッサシステムのタスク制御方法において、
各CPUコアによって実行されるタスクの実行スケジュールの実行パターンを複数生成するステップと、
各CPUコアの負荷を推定するステップと、
前記負荷推定部により推定された推定負荷より計算された各CPUコアにおける処理の実行時間と、CPUコア間の通信時間とに基づいて、前記実行パターンを選択するステップと、
前記タスクスケジューリング部の指示に従い、前記実行パターンの各タスクを実行するステップとを有するマルチコアプロセッサシステムのタスク制御方法。 - 前記実行パターンを複数生成するステップにおいて、同一のタスクを異なるCPUコアに実行させるためのタスク複製をおこなった実行パターンを生成することを特徴とする請求項5記載のマルチコアプロセッサシステムのタスク制御方法。
- 前記実行パターンを選択するステップにおいて、前記実行パターンのタスクを実行する際のあるCPUコアの前記推定負荷が、一定の閾値より大きいときには、その実行パターンを選択しないようにすることを特徴とする請求項5記載のマルチコアプロセッサシステムのタスク制御方法。
- 前記実行パターンを選択するステップにおいて、前記実行パターンのCPUコア間の通信時間の合計が、一定の閾値より大きいときには、その実行パターンを選択しないようにすることを特徴とする請求項5記載のマルチコアプロセッサシステムのタスク制御方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008247476A JP2010079622A (ja) | 2008-09-26 | 2008-09-26 | マルチコアプロセッサシステム、および、そのタスク制御方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2008247476A JP2010079622A (ja) | 2008-09-26 | 2008-09-26 | マルチコアプロセッサシステム、および、そのタスク制御方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2010079622A true JP2010079622A (ja) | 2010-04-08 |
Family
ID=42209987
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2008247476A Pending JP2010079622A (ja) | 2008-09-26 | 2008-09-26 | マルチコアプロセッサシステム、および、そのタスク制御方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2010079622A (ja) |
Cited By (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012054643A (ja) * | 2010-08-31 | 2012-03-15 | Kyocera Mita Corp | 画像処理装置 |
| JP2012146234A (ja) * | 2011-01-14 | 2012-08-02 | Nec Corp | 制御装置、及びファームウェア更新方法とそのプログラム |
| JP2012252413A (ja) * | 2011-05-31 | 2012-12-20 | Toshiba Corp | 情報処理装置、情報処理方法及び制御プログラム |
| CN102866921A (zh) * | 2012-08-29 | 2013-01-09 | 惠州Tcl移动通信有限公司 | 一种多核cpu的调控方法及系统 |
| WO2013024597A1 (ja) * | 2011-08-15 | 2013-02-21 | 日本電気株式会社 | 分散処理管理装置及び分散処理管理方法 |
| JP2013037290A (ja) * | 2011-08-10 | 2013-02-21 | Canon Inc | 情報処理システム、情報処理方法、及びプログラム |
| WO2013081744A1 (en) * | 2011-11-30 | 2013-06-06 | Axis Semiconductor, Inc. | Herarchical multi-core processor and method of programming for efficient data processing |
| JP2013134670A (ja) * | 2011-12-27 | 2013-07-08 | Toshiba Corp | 情報処理装置及び情報処理方法 |
| WO2014016950A1 (ja) * | 2012-07-27 | 2014-01-30 | 株式会社日立製作所 | 並列計算機システムおよび並列計算機システムへの処理負荷配置方法 |
| CN103885826A (zh) * | 2014-03-11 | 2014-06-25 | 武汉科技大学 | 一种多核嵌入式系统实时任务调度实现方法 |
| JP2015038646A (ja) * | 2010-11-30 | 2015-02-26 | 株式会社東芝 | 情報処理装置及び情報処理方法 |
| US9552230B2 (en) | 2011-07-21 | 2017-01-24 | Samsung Electronics Co., Ltd. | Apparatus and method for allocating a task based on measured and estimated core usage |
| US9588915B2 (en) | 2012-12-18 | 2017-03-07 | Samsung Electronics Co., Ltd. | System on chip, method of operating the same, and apparatus including the same |
| JP2017538212A (ja) * | 2014-12-18 | 2017-12-21 | インテル コーポレイション | 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構 |
| JP2020506465A (ja) * | 2017-01-17 | 2020-02-27 | ロベルト・ボッシュ・ゲゼルシャフト・ミト・ベシュレンクテル・ハフツングRobert Bosch Gmbh | 制御装置を作動させるための方法および装置、コンピュータプログラム、ならびにコンピュータプログラムを生成するための方法 |
| CN111240829A (zh) * | 2019-12-31 | 2020-06-05 | 潍柴动力股份有限公司 | 一种基于时间片的多核任务调度方法、装置、存储介质及电子设备 |
| CN115769187A (zh) * | 2020-07-07 | 2023-03-07 | 三菱电机株式会社 | 程序创建辅助装置 |
| CN116679664A (zh) * | 2023-05-18 | 2023-09-01 | 上汽通用汽车有限公司 | 用于实现并行刷新的系统、方法及车辆 |
| US11861227B2 (en) | 2020-12-29 | 2024-01-02 | Samsung Electronics Co., Ltd. | Storage device with task scheduler and method for operating the device |
-
2008
- 2008-09-26 JP JP2008247476A patent/JP2010079622A/ja active Pending
Cited By (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2012054643A (ja) * | 2010-08-31 | 2012-03-15 | Kyocera Mita Corp | 画像処理装置 |
| JP2015038646A (ja) * | 2010-11-30 | 2015-02-26 | 株式会社東芝 | 情報処理装置及び情報処理方法 |
| JP2012146234A (ja) * | 2011-01-14 | 2012-08-02 | Nec Corp | 制御装置、及びファームウェア更新方法とそのプログラム |
| JP2012252413A (ja) * | 2011-05-31 | 2012-12-20 | Toshiba Corp | 情報処理装置、情報処理方法及び制御プログラム |
| US9552230B2 (en) | 2011-07-21 | 2017-01-24 | Samsung Electronics Co., Ltd. | Apparatus and method for allocating a task based on measured and estimated core usage |
| JP2013037290A (ja) * | 2011-08-10 | 2013-02-21 | Canon Inc | 情報処理システム、情報処理方法、及びプログラム |
| WO2013024597A1 (ja) * | 2011-08-15 | 2013-02-21 | 日本電気株式会社 | 分散処理管理装置及び分散処理管理方法 |
| JPWO2013024597A1 (ja) * | 2011-08-15 | 2015-03-05 | 日本電気株式会社 | 分散処理管理装置及び分散処理管理方法 |
| US9075768B2 (en) | 2011-11-30 | 2015-07-07 | Rs Stata Llc | Hierarchical multi-core processor and method of programming for efficient data processing |
| WO2013081744A1 (en) * | 2011-11-30 | 2013-06-06 | Axis Semiconductor, Inc. | Herarchical multi-core processor and method of programming for efficient data processing |
| JP2013134670A (ja) * | 2011-12-27 | 2013-07-08 | Toshiba Corp | 情報処理装置及び情報処理方法 |
| WO2014016950A1 (ja) * | 2012-07-27 | 2014-01-30 | 株式会社日立製作所 | 並列計算機システムおよび並列計算機システムへの処理負荷配置方法 |
| JPWO2014016950A1 (ja) * | 2012-07-27 | 2016-07-07 | 株式会社日立製作所 | 並列計算機システムおよび並列計算機システムへの処理負荷配置方法 |
| US9600330B2 (en) | 2012-08-29 | 2017-03-21 | Huizhou Tcl Mobile Communication Co., Ltd. | Method and system for regulation and control of a multi-core central processing unit |
| CN102866921A (zh) * | 2012-08-29 | 2013-01-09 | 惠州Tcl移动通信有限公司 | 一种多核cpu的调控方法及系统 |
| US9588915B2 (en) | 2012-12-18 | 2017-03-07 | Samsung Electronics Co., Ltd. | System on chip, method of operating the same, and apparatus including the same |
| CN103885826B (zh) * | 2014-03-11 | 2017-04-12 | 武汉科技大学 | 一种多核嵌入式系统实时任务调度实现方法 |
| CN103885826A (zh) * | 2014-03-11 | 2014-06-25 | 武汉科技大学 | 一种多核嵌入式系统实时任务调度实现方法 |
| JP2017538212A (ja) * | 2014-12-18 | 2017-12-21 | インテル コーポレイション | 中央処理装置(cpu)と補助プロセッサとの間の改善した関数コールバック機構 |
| US10706496B2 (en) | 2014-12-18 | 2020-07-07 | Intel Corporation | Function callback mechanism between a Central Processing Unit (CPU) and an auxiliary processor |
| JP2020506465A (ja) * | 2017-01-17 | 2020-02-27 | ロベルト・ボッシュ・ゲゼルシャフト・ミト・ベシュレンクテル・ハフツングRobert Bosch Gmbh | 制御装置を作動させるための方法および装置、コンピュータプログラム、ならびにコンピュータプログラムを生成するための方法 |
| US11500679B2 (en) | 2017-01-17 | 2022-11-15 | Robert Bosch Gmbh | Operating a controller in a motor vehicle according to different time slots |
| CN111240829A (zh) * | 2019-12-31 | 2020-06-05 | 潍柴动力股份有限公司 | 一种基于时间片的多核任务调度方法、装置、存储介质及电子设备 |
| CN111240829B (zh) * | 2019-12-31 | 2023-12-15 | 潍柴动力股份有限公司 | 一种基于时间片的多核任务调度方法、装置、存储介质及电子设备 |
| CN115769187A (zh) * | 2020-07-07 | 2023-03-07 | 三菱电机株式会社 | 程序创建辅助装置 |
| US11861227B2 (en) | 2020-12-29 | 2024-01-02 | Samsung Electronics Co., Ltd. | Storage device with task scheduler and method for operating the device |
| CN116679664A (zh) * | 2023-05-18 | 2023-09-01 | 上汽通用汽车有限公司 | 用于实现并行刷新的系统、方法及车辆 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2010079622A (ja) | マルチコアプロセッサシステム、および、そのタスク制御方法 | |
| US8914805B2 (en) | Rescheduling workload in a hybrid computing environment | |
| US8739171B2 (en) | High-throughput-computing in a hybrid computing environment | |
| Warneke et al. | Exploiting dynamic resource allocation for efficient parallel data processing in the cloud | |
| KR101332840B1 (ko) | 병렬 컴퓨팅 프레임워크 기반의 클러스터 시스템, 호스트 노드, 계산 노드 및 어플리케이션 실행 방법 | |
| US8171267B2 (en) | Method and apparatus for migrating task in multi-processor system | |
| CN105808334B (zh) | 一种基于资源重用的MapReduce短作业优化系统及方法 | |
| WO2013131340A1 (zh) | 片上系统soc的多处理器的调度方法及装置 | |
| US20110131425A1 (en) | Systems and methods for power management in a high performance computing (hpc) cluster | |
| JP7122299B2 (ja) | 処理タスクを実行するための方法、装置、デバイス、および記憶媒体 | |
| Roy et al. | SLAQA: Quality-level aware scheduling of task graphs on heterogeneous distributed systems | |
| KR20200014378A (ko) | 직무 관리 | |
| US9471387B2 (en) | Scheduling in job execution | |
| JP4381459B1 (ja) | 情報処理装置、粒度調整方法およびプログラム | |
| WO2024109312A1 (zh) | 任务调度执行方法、任务调度执行指令的生成方法及装置 | |
| JP2007188523A (ja) | タスク実行方法およびマルチプロセッサシステム | |
| Fan et al. | Parallel cpu-gpu execution for llm inference on constrained gpus | |
| US20120137300A1 (en) | Information Processor and Information Processing Method | |
| CN119311316B (zh) | 一种调度方法、装置、系统和计算设备 | |
| CN116301874A (zh) | 代码编译方法、电子设备及存储介质 | |
| Faragardi et al. | A resource efficient framework to run automotive embedded software on multi-core ECUs | |
| JP2016143378A (ja) | 並列化コンパイル方法、並列化コンパイラ、及び、電子装置 | |
| CN117130748B (zh) | 一种基于异构多核平台上类型化dag任务的分析及调度方法 | |
| KR101332839B1 (ko) | 병렬 컴퓨팅 프레임워크 기반 클러스터 시스템의 호스트 노드 및 메모리 관리 방법 | |
| Karande et al. | Task management for heterogeneous multi-core scheduling |