JP6156379B2 - スケジューリング装置、及び、スケジューリング方法 - Google Patents

スケジューリング装置、及び、スケジューリング方法 Download PDF

Info

Publication number
JP6156379B2
JP6156379B2 JP2014530463A JP2014530463A JP6156379B2 JP 6156379 B2 JP6156379 B2 JP 6156379B2 JP 2014530463 A JP2014530463 A JP 2014530463A JP 2014530463 A JP2014530463 A JP 2014530463A JP 6156379 B2 JP6156379 B2 JP 6156379B2
Authority
JP
Japan
Prior art keywords
task
priority
execution order
execution
tasks
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
JP2014530463A
Other languages
English (en)
Other versions
JPWO2014027444A1 (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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2014027444A1 publication Critical patent/JPWO2014027444A1/ja
Application granted granted Critical
Publication of JP6156379B2 publication Critical patent/JP6156379B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、複数のコアをスケジューリングする装置及び方法に関し、特に、コアの処理のスケジューリングに関する。
デジタル機器に対する高性能化又は低消費電量化は、常に、要求されてきた。近年、これらの要求を受け、組み込み等に用いられるLSI(Large Scale Integration)に複数の「プロセッサ・コア(以下、単に「コア」と言う)」を搭載するマルチコア構成が、注目を集めている。LSIのマルチコア化は、例えば、システム制御を目的とするリアルタイムシステムにおいて、重要な技術と、なっている。
マルチコアを搭載したシステム又は装置は、対照型マルチプロセッシング(SMP:Symmetric Multi Processing)方式と、非対称型マルチプロセッシング(AMP:Asymmetric Multiple Processing)方式とに、大別される。
SMP方式は、コアの空き状況及び実行中のタスクの優先度等に応じて、タスクを実行するコアを切り替える。この切り替えに基づき、SMP方式は、各タスクを、いずれのコア上でも実行できる。つまり、SMP方式は、コアの動的な負荷分散が可能である。動的な負荷分散が可能なため、SMP方式は、システム全体の性能を、向上できる。しかし、動的な負荷分散は、リアルタイム性能の予測を、困難とする。従って、SMP方式は、リアルタイムシステムへの適用には適していない。
一方、AMP方式は、各タスクが、特定のコア上で実行される機能分散型である。そのため、AMP方式は、システムの挙動が予測できることが重要なリアルタイムシステム、及び、特定のハードウェアが接続されているコアが限定されるシステム等に、好適である。
このようなAMP方式のマルチコアシステムにおいて、システムの性能は、タスクのコアへの配置に応じて変化する。このため、AMP方式のマルチコアシステムでは、最適な実行状態となるタスク配置を探索し、タスクの最適な配置を決定することが、必要である。
AMP方式のマルチコアシステムを活用する手法の一例として、自動並列化コンパイラを用いる方法がある。
自動並列化コンパイラとして、静的タスクスケジューリング手法が、研究されている。静的タスクスケジューリング手法として、例えば、次のような処理を用いた手法がある。まず、この手法は、プログラムをタスクに分割する。そして、この手法は、タスクと、タスク間の依存関係とを、グラフ表現したタスクグラフを、作成する。そして、この手法は、作成したタスクグラフを用いて、マルチコアに対して、静的に、タスクを配置する。そして、この手法は、各コア上でのタスクの実行順序を、静的に、スケジューリングする。
また、静的タスクスケジューリング手法として、例えば、リストスケジューリングを用いた手法が、ある。(例えば、特許文献1及び非特許文献1を参照)。
リストスケジューリングの手法は、特に、各コア上でのタスクのスケジューリングを動的に変更しないシステムにおいて、良好な性能を、得ることができる。
特開2003−029988
Y. K. Kwok and I. Ahmad, "Static Scheduling Algorithms for Allocating Directed Task Graphs to Multiprocessors," ACM Computing Surveys, vol. 31, no. 4, pp. 406 -471, December 1999
特許文献1及び非特許文献1に記載の静的タスクスケジューリング手法は、各コア上でのタスクの実行順序が確定できることを、前提とする。
一方、AMP方式のマルチコアの利用として、RTOS(Real-Time Operating System)を搭載し、RTOS上でタスクを実行するモデルが、ある。このモデルは、実装の容易さのため、広く用いられている。
このモデルでは、RTOSが、タスクの実行時に、マルチコアの各コア上でのスケジューリングを、動的に決定する。そのため、このようなシステムにおいて、同一優先度の複数タスクが同時に実行可能となった場合、実際に実行されるタスクは、RTOSのスケジューリングの状態に基づき、決定される。つまり、タスクの実行順序は、不確定である。
特許文献1及び非特許文献1に記載の自動並列化コンパイラの手法は、RTOS上でタスクを実行するモデルにおいて、実行順序が不確定のため、マルチコアに基づく効果が得られないという問題点があった。
この対策として、例えば、実行順序を守るようタスク間での通信を追加するようにプログラムを修正する方法がある。しかし、プログラムを修正する場合、プログラムの再検証が、必要である。そのため、プログラムを修正する方法は、一般的に、好まれない。
そこで、プログラムを修正しない方法として、各タスクへの優先度付けを用いる方法が、用いられている。コアで実行するn個のタスクがある場合、優先度付けを用いる方法は、n個の優先度、つまり、実行するタスクの数の優先度を用いて、優先度が高い順に、タスクに優先度を付ける。このように、優先度付けを用いる方法は、プログラムを変更せずに、タスクの実行順序を守ることができる。
しかし、タスク数が非常に多い場合、全てのタスクに優先度を割り付けることは、現実的でない。タスクが多いシステムは、多数存在する。そのため、タスクが多いシステムへの対策が、問題点となっていた。
本発明の目的は、上述の問題点を解決し、静的タスクスケジューリングに基づく実行順序を守った上で、必要な優先度の個数を削減するスケジューリング装置、及び、スケジューリング方法を提供することにある。
本発明のタスクスケジューリング装置は、タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成する静的タスクスケジューリング生成手段と、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する、又は、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する、優先度生成手段とを含む。
本発明のタスクスケジューリング方法は、複数のコアを含むマルチコアの装置において、タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成し、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する、又は、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジュール結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する。
本発明のプログラムは、複数のコアを含むマルチコアの装置において、タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成する処理と、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する処理、又は、前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジュール結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する処理とを、コンピュータに実行させる。
本発明によれば、静的タスクスケジューリングに基づく実行順序を維持した上で、実行順序の維持に必要な優先度の個数を削減することが可能となる。
図1は、本発明における第1の実施形態に係るマルチコアシステムの構成の一例を示すブロック図である。 図2は、第1の実施形態に係るタスクスケジューリング装置の構成の一例を示すブロック図である。 図3は、第1の実施形態のタスクスケジューリング装置の動作の一例を示すフローチャートである。 図4は、第1の実施形態のタスクスケジューリング装置の構成の一例を示すブロック図である。 図5は、第2の実施形態に係る優先度生成部の構成の一例を示すブロック図である。 図6は、第2の実施形態の優先度生成部の動作の一例を示すフローチャートである。 図7は、説明に用いる静的タスクスケジューリング結果の一例を示す図である。 図8は、第2の実施形態に係る動作を説明するための図である。 図9は、第2の実施形態に係る動作を説明するための図である。 図10は、第2の実施形態に係る動作を説明するための図である。 図11は、第2の実施形態に係る動作を説明するための図である。 図12は、第2の実施形態に係る動作を説明するための図である。 図13は、第2の実施形態に係る動作を説明するための図である。 図14は、第3の実施形態の優先度生成部の動作の一例を示すフローチャートである。 図15は、第3の実施形態に係る動作を説明するための図である。 図16は、第3の実施形態に係る動作を説明するための図である。 図17は、第3の実施形態に係る動作を説明するための図である。 図18は、第3の実施形態に係る動作を説明するための図である。 図19は、第3の実施形態に係る動作を説明するための図である。 図20は、第3の実施形態に係る動作を説明するための図である。 図21は、第4の実施形態の優先度生成部の動作の一例を示すフローチャートである。 図22は、説明に用いる静的タスクスケジューリング結果の一例を示す図である。 図23は、説明で参照する第2の実施形態の結果を示す図である。 図24は、第4の実施形態に係る動作を説明するための図である。 図25は、第4の実施形態に係る動作を説明するための図である。 図26は、第4の実施形態に係る動作を説明するための図である。 図27は、第4の実施形態に係る動作を説明するための図である。 図28は、第4の実施形態に係る動作を説明するための図である。 図29は、第4の実施形態に係る動作を説明するための図である。 図30は、第4の実施形態に係る動作を説明するための図である。 図31は、第5の実施形態に係るタスクスケジューリング装置の構成の一例を示すブロック図である。 図32は、第5の実施形態に係るタスクスケジューリング装置の動作の一例を示すフローチャートである。 図33は、第5の実施形態に係る動作を説明するための図である。 図34は、第5の実施形態に係る動作を説明するための図である。 図35は、第5の実施形態に係る動作を説明するための図である。 図36は、第5の実施形態に係る動作を説明するための図である。 図37は、第5の実施形態に係る動作を説明するための図である。 図38は、第5の実施形態に係る動作を説明するための図である。
次に、本発明の実施形態について、図面を参照して、説明する。
なお、各図面は、本発明の実施形態を説明するためのものである。そのため、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。
また、本発明において、コアで実行する処理単位は、特に制限はない。例えば、処理単位は、タスク、又は、スレッドでも良い。また、処理単位は、タスク又はスレッドをまとめたアプリケーションプログラムでも良い。以下では、これら処理単位をまとめ、「タスク」として、説明する。そのため、以下の実施形態の説明では、本発明のスケジューリング装置を、タスクスケジューリング装置として説明する。
(第1の実施形態)
まず、本発明における第1の実施形態について説明する。
図1は、本発明のおける第1の実施形態に係るマルチコアシステム1の構成の一例を示すブロック図である。
マルチコアシステム1は、タスクスケジューリング装置10と、コア部20と、タスクメモリ30とを含む。
コア部20は、複数のコアを含む。コアは、タスクスケジューリング装置10が生成するスケジューリングに基づいて、タスクが割り当てられ、割り当てられたタスクを実行する。
タスクスケジューリング装置10は、後ほど詳細に説明するように、タスクをスケジューリングし、所定のコアでタスクを実行させる。
タスクメモリ30は、コアで実行されるタスクを、記憶する。
ここで、マルチコアシステム1は、全ての構成を組み込んだ組み込みLSIでも良い。あるいは、マルチコアシステム1は、1つ又は複数の機能を含む複数のLSIを信号線で接続したLSIシステムでも良い。あるいは、マルチコアシステム1は、1つ又は複数の機能を含む複数の装置を、バス又は通信線で接続したシステムでも良い。
なお、図1に示すタスクスケジューリング装置10は、マルチコアシステム1に含まれるとした。しかし、本実施形態のタスクスケジューリング装置10は、これに限らない。例えば、タスクスケジューリング装置10は、マルチコアシステム1に含まれなくても良い。つまり、マルチコアシステム1は、タスクスケジューリング装置10を含まない構成でも良い。その構成の場合、例えば、本実施形態のタスクスケジューリング装置10は、予め、タスクスケジューリングを作成する。そして、タスクスケジューリング装置10は、作成したタスクスケジューリングを図示しない記憶装置に保存する。マルチコアシステム1は、タスクの実行時に、図示しない記憶装置から作成済みのタスクスケジューリングを取り出し、用いればよい。
次に、タスクスケジューリング装置10について、図面を参照して、より詳細に説明する。
図2は、タスクスケジューリング装置10の構成の一例を示すブロック図である。
タスクスケジューリング装置10は、静的タスクスケジューリング生成部11と、優先度生成部12とを含む。なお、図2は、本発明に関連する機能を示し、タスクに関するマルチコアの選択機能など他の機能については、省略した。
静的タスクスケジューリング生成部11は、タスクをどのコアに配置するかを表すコア配置と、タスクの各コア上での実行順序とを静的に決定(生成)する。つまり、静的タスクスケジューリング生成部11は、静的なタスクのスケジューリングを生成する。
優先度生成部12は、静的タスクスケジューリング生成部11で決定された各コア上での実行順序に従って、各タスクが実行されるように、タスクに優先度を付ける(付与する/生成する)。ただし、本実施形態の優先度生成部12は、全てのタスクに異なる優先度を付けるのではなく、使用する優先度の個数を削減するように、タスクに優先度を付ける。この優先付けについては、後ほど説明する。
次に、タスクスケジューリング装置10の動作について説明する。
図3は、タスクスケジューリング装置10の動作の一例を示すフローチャートである。
まず、タスクスケジューリング装置10の静的タスクスケジューリング生成部11は、静的タスクスケジューリングを生成(決定)する(ステップS100)。
より具体的には、静的タスクスケジューリング生成部11は、静的タスクスケジューリングとして、次に示す項目を静的に決定(生成)する。(以下、静的タスクスケジューリングの結果を「静的タスクスケジューリング結果」と言うこともある。)
(1)タスクを、どのコアに、配置するかを、表すコア配置
(2)各コア上での、タスクの実行順序
なお、本実施形態の静的タスクスケジューリング生成部11は、静的タスクスケジューリングに用いる手法に、特に制限はない。例えば、静的タスクスケジューリング生成部11は、既に説明した特許文献1又は非特許文献1に記載した技術を、用いても良い。
次に、タスクスケジューリング装置10の優先度生成部12は、静的タスクスケジューリング生成部11が決定した実行順序(上記(2)項)でタスクが実行されるように、タスクに優先度を付ける(優先度を生成する)(ステップS101)。ただし、本実施形態の優先度生成部12は、タスクに設定する優先度の個数を削減するように、優先度を付ける。
本実施形態の優先度生成部12の優先度付けについて、さらに説明する。
<第1の手法>
まず、優先度生成部12が、静的タスクスケジューリング生成部11が決定した静的タスクスケジューリング結果を、タスクが実行される順に、見ていく(優先度を付ける)場合の手法について、説明する。
この手法では、優先度生成部12は、最初に実行されるタスク(以下、「先頭タスク」と言う)に、最も高い優先度(最高優先度)を、付与する。そして、優先度生成部12は、静的タスクスケジューリング結果の後ろのタスクに行く(進む)に従って、タスクに付与する優先度を下げる。このような優先度の付与を用いて、優先度生成部12は、タスクの実行順序を維持する。
ただし、優先度生成部12は、付与する優先度に関わらず実行の順序の変動が起こらない箇所については、後ろのタスクに付与する優先度を、下げない。より具体的に説明すると、優先度生成部12は、付与する優先度に関わらず実行の順序の変動が起こらない箇所については、後ろのタスクに付与する優先度を、前のタスクの優先度と同等又は高くする。
ここで、優先度生成部12は、可能な限り高い優先度(最も望ましくは、先頭タスクの優先度と同等の最高優先度)を付与することが望ましい。これは、次の示す理由に基づく。高い優先度をタスクに設定すると、優先度生成部12は、そのタスクに続くタスクに設定する優先度を、高い優先度に続く優先度から付与できる。そのため、優先度生成部12は、タスクの付与するために必要となる優先度の個数を、削減できる。
この優先度生成部12の動作をより詳細に説明する。
優先度生成部12は、優先度付与対象のタスクが他のタスクより優先して実行されると仮定した場合に、最も早く実行の開始が可能となる順序である「最良実行順序」を求める。
そして、優先度生成部12は、先頭タスクから各タスクの最良実行順序と、静的タスクスケジューリング結果の実行順序とを比較する。比較の結果として実行順序が異なる場合、そのタスクは、実行順序の変動が起こりえるタスクである。一方、比較の結果として実行順序が同じ場合、そのタスクは、実行順序の変動が起こりえないタスクである。
そこで、タスクの最良実行順序と静的タスクスケジューリング結果の実行順序とが異なる場合、優先度生成部12は、次のように動作する。まず、優先度生成部12は、そのタスクが最良実行順序で実行された場合の実行開始時刻以降で、そのタスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行するタスク(以下、「先行実行タスク」と言う)の全ての優先度を調べる。そして、優先度生成部12は、全ての先行実行タスクの優先度より低い優先度を、そのタスクに、付与する。まとめると、優先度生成部12は、そのタスクの全ての先行実行タスクの優先度より低い優先度を、そのタスクに付与する。
つまり、優先度生成部12は、先行するタスクの優先度を、後続するタスクの優先度と比較して、相対的に、高くする。この優先度の付与に基づき、優先度生成部12は、タスクの実行順序を、維持する。
一方、タスクの最良実行順序と静的タスクスケジューリング結果の実行順序とが変化しない場合、優先度生成部12は、そのタスクに先行する全てのタスクの最低の優先度と同等又は高い優先度(既に説明のとおり最高優先度が望ましい)を、そのタスクに付与する。つまり、優先度生成部12は、先行するタスクの優先度を、後続するタスクの優先度と比較して、相対的に、同等又は低くする。この優先度の付与に基づき、優先度生成部12は、必要な優先度の個数を、削減する。
<第2の手法>
次に、優先度生成部12が、静的タスクスケジューリング生成部11が決定した静的タスクスケジューリング結果を、タスクが実行される順序の後ろから、見ていく(優先度を付ける)場合の手法について、説明する。
この手法では、優先度生成部12は、最後に実行されるタスク(以下、「最終タスク」と言う)に、最も低い優先度(最低優先度)を、付与する。そして、優先度生成部12は、静的タスクスケジューリング結果の前のタスクに行く(戻る)に従って、タスクに付与する優先度を上げる。このような優先度の付与を用いて、優先度生成部12は、タスクの実行順序を維持する。
ただし、優先度生成部12は、付与する優先度に関わらず実行の順序の変動が起こらない箇所については、前のタスクに付与する優先度を、上げない。より具体的に説明すると、優先度生成部12は、付与する優先度に関わらず実行の順序の変動が起こらない箇所については、前のタスクに付与する優先度を後ろのタスクの優先度と同等又は低くする。
ここで、優先度生成部12は、可能な限り低い優先度(最も望ましくは、最終タスクの優先度と同等の最低優先度)を付与することが望ましい。これは、次に示す理由に基づく。低い優先度をタスクに設定すると、優先度生成部12は、そのタスクの前のタスクに設定する優先度を、低い優先度に続く優先度から付与できる。そのため、優先度生成部12は、タスクに付与するために必要となる優先度の個数を、削減できる。
この優先度生成部12の動作をより詳細に説明する。
優先度生成部12は、優先度付与対象のタスクより他のタスクが優先して実行されると仮定した場合に、最も遅く実行の開始が可能となる順序である「最悪実行順序」を求める。
そして、優先度生成部12は、最終タスクから各タスクの最悪実行順序と静的タスクスケジューリング結果の実行順序とを比較する。比較の結果として順序が異なる場合、そのタスクは、実行順序の変動が起こりえるタスクである。一方、比較の結果として順序が同じ場合、そのタスクは、実行順序の変動が起こりえないタスクである。
そこで、タスクの最悪実行順序と静的タスクスケジューリング結果の実行順序とが異なる場合、優先度生成部12は、次のように動作する。まず、優先度生成部12は、そのタスクが最悪実行順序で実行された場合の実行終了時刻以前で、そのタスクの静的タスクスケジューリング結果の実行順序での実行終了時刻に後続して実行するタスク(以下、「後続実行タスク」と言う)の全ての優先度を調べる。そして、優先度生成部12は、全ての後続実行タスクの優先度よりも高い優先度を、そのタスクに、付与する。まとめると、優先度生成部12は、そのタスクの全ての後続実行タスクの優先度より高い優先度を、そのタスクに、付与する。
つまり、優先度生成部12は、先行するタスクの優先度を、後続するタスクの優先度と比較して、相対的に、高くする。この優先度の付与に基づき、優先度生成部12は、タスクに実行順序を、維持する。
一方、タスクの最悪実行順序と静的タスクスケジューリング結果の実行順序とが変化しない場合、優先度生成部12は、そのタスクに後続する全てのタスクの優先度と同等又は低い優先度(既に説明のとおり最低優先度が望ましい)を、そのタスクに付与する。つまり、優先度生成部12は、先行するタスクの優先度を、後続するタスクの優先度と比較して、相対的に、同等又は低くする。この優先度の付与に基づき、優先度生成部12は、必要な優先度の個数を、削減する。
なお、最悪実行順序を求める際、優先度生成部12は、望ましくは、後続するタスクに更に従属するタスクを、検討対象から除外した上で、最悪実行順序を求める。
また、優先度生成部12は、最良実行順序又は最悪実行順序として、例えば、タスクの実行順序の数値を用いても良い。ただし、本実施形態の優先度生成部12が用いる実行順序は、タスクの実行順序に限らない。優先度生成部12が用いる実行順序は、タスクの実行開始時刻又は実行終了時刻など、優先度生成部12においてタスクの順序関係が判断できれば、表現形式を限定されない。例えば、あるタスクの実行中に別の高い優先度が付与されてタスクが起動した場合、起動したタスクに実行が遷移する。このような場合、優先度生成部121は、単純にタスクの並びとして順序を表現できない。このような場合、優先度生成部12は、実行順序として、時刻を用いた表現を用いても良い。
なお、本実施形態のタスクスケジューリング装置10の構成は、図2に示す構成に限らない。各構成は、さらに複数の構成に分けられても良い。あるいは、タスクスケジューリング装置10は、図2に示す構成を、1つの構成に含めても良い。
また、本実施形態のタスクスケジューリング装置10は、ハードウェア構成も特に制限はない。例えば、タスクスケジューリング装置10は、CPU(Central Processing Unit)と、ROM(Read Only Memory)と、RAM(Random Access Memory)とを含むコンピュータとして実現しても良い。
図4は、本実施形態のタスクスケジューリング装置10と同様に動作するタスクスケジューリング装置60のハードウェアの構成の一例を示す図である。
タスクスケジューリング装置60は、CPU610と、ROM620と、RAM630と、記憶装置640と、IO(Input/Output)650と、入力機器660と、表示機器670とを含み、コンピュータを構成している。
CPU610は、ROM620又は記憶装置640からプログラムを読み込む。そして、CPU610は、読み込んだプログラムに基づいて、図2に示すタスクスケジューリング装置10の静的タスクスケジューリング生成部11と、優先度生成部12としての、各機能を実現する。CPU610は、各機能を実現する際に、RAM630及び記憶装置640を一時記憶として使用する。また、CPU610は、IO650を介して、入力機器660から入力データを受信し、表示機器670にデータを表示する。
なお、CPU610は、コンピュータで読み取り可能なプログラムを記憶した記憶媒体700が含むプログラムを、図示しない記憶媒体読み取り装置を用いて、読み込んでも良い。あるいは、CPU610は、図示しないネットワークを介して、外部の装置から、プログラムを受け取っても良い。
ROM620は、CPU610が実行するプログラム、及び、固定的なデータを記憶する。ROM620は、例えば、P−ROM(Programmable-ROM)又はフラッシュROMである。
RAM630は、CPU610が実行するプログラム及びデータを一時的に記憶する。RAM630は、例えば、D−RAM(Dynamic-RAM)である。
記憶装置640は、タスクスケジューリング装置60で長期的に保存するデータ及びプログラムを保存する。また、記憶装置640は、CPU610の一時記憶装置として動作しても良い。記憶装置640は、例えば、ハードディスク装置、光磁気ディスク装置、SSD(Solid State Drive)、又は、ディスクアレイ装置である。
IO650は、CPU610と、入力機器660及び表示機器670とのデータを仲介する。IO650は、例えば、IOインターフェースカードである。
入力機器660は、タスクスケジューリング装置60の操作者からの入力指示を受信する入力部である。入力機器660は、例えば、キーボード、マウス又はタッチパネルである。
表示機器670は、タスクスケジューリング装置60の表示部である。表示機器670は、例えば、液晶ディスプレイである。
なお、図4に示すタスクスケジューリング装置60は、タスクスケジューリング装置10としての機能に加え、図1に示すコア部20及びタスクメモリ30の機能を含み、マルチコアシステム1として動作しても良い。
この場合、CPU610は、図1に示すコア部20、つまり、複数のコアを含む。
また、CPU610が図示しない内蔵メモリを含む場合、タスクスケジューリング装置60は、内蔵メモリを、タスクメモリ30として用いても良い。あるいは、タスクスケジューリング装置60は、RAM630又は記憶装置640を、タスクメモリ30として用いても良い。
本実施形態のタスクスケジューリング装置10の効果について説明する。
このように構成された本実施形態のタスクスケジューリング装置10は、静的タスクスケジューリング結果に基づく実行順序を維持した上で、実行順序の維持に必要な優先度の個数を削減する効果を得ることができる。
その理由は、次のとおりである。
本実施形態のタスクスケジューリング装置10は、静的タスクスケジューリング結果を決定する。そして、タスクスケジューリング装置10は、各タスクについて、タスクの優先度に基づいて実行順序が変わりえる箇所(タスク)と、優先度に関わらず実行順序が変わりえない箇所(タスク)とに分類する。
順序が変わりえる箇所の場合、タスクスケジューリング装置10は、先行するタスクの優先度を、後続するタスクの優先度と比較して相対的に高くするように、優先度と付与する。そのため、タスクスケジューリング装置10は、タスクの実行順序を、維持できる。
一方、順序が変わりえない箇所の場合、タスクスケジューリング装置10は、先行するタスクの優先度を、後続するタスクの優先度と比較して相対的に同等又は低くする。
より具体的に説明すると、次のとおりになる。静的タスクスケジューリング結果の先頭から優先度を設定する場合、タスクスケジューリング装置10は、先行する全てのタスクの最低の優先度と同等又は高い優先度を付与する。静的タスクスケジューリング結果の実行される順序の後ろから優先度を設定する場合、タスクスケジューリング装置10は、後続する全てのタスクの最高の優先度と同等又は低い優先度を付与する。そのため、タスクスケジューリング装置10は、必要な優先度の個数を、削減できる。
(第2の実施形態)
静的タスクスケジューリング結果の先頭タスクから優先度を定義(付与)していく手法(第1の手法)を用いるタスクスケジューリング装置10の、より詳細な実施形態について、第2の実施形態として、説明する。
繰り返しの説明となるが、本実施形態のタスクスケジューリング装置10が用いる手法は、静的タスクスケジューリング結果に基づく実行順序の、先頭タスクから優先度を定義する方法であり、次のような動作を含む。
まず、タスクスケジューリング装置10は、各タスクの優先度に基づいて実行順序が変わりえる箇所と、優先度に基づいて実行順序が変わらない箇所とを、分類する。タスクスケジューリング装置10は、実行順序が変わりえる箇所について、先行するタスクの優先度に対し、後続のタスクの優先度を、低く定義する。この動作に基づき、タスクスケジューリング装置10は、タスクの実行順序を、維持する。
一方、タスクスケジューリング装置10は、実行順序が変わらない箇所について、先行するタスクの優先度に対して、後続のタスクの優先度を、下げない。この動作に基づき、タスクスケジューリング装置10は、必要な優先度の個数を、抑制する。
上記の動作を実現するため、本実施形態のタスクスケジューリング装置10の優先度生成部12は、図5に示す構成を含む。なお、本実施形態のタスクスケジューリング装置10の構成は、図5に示す優先度生成部12の構成を除き、第1の実施形態の同じ構成のため、同じ構成の説明を省略する。
図5は、本実施形態の優先度生成部12の構成の一例を示すブロック図である。
優先度生成部12は、優先度制御部121と、優先度付与対象タスク保持部122と、優先度保持部123とを含む。
優先度制御部121は、タスクの優先度の設定(付与)の処理を、制御する。
優先度付与対象タスク保持部122は、優先度付与対象タスクが、いずれのタスクであるかを示す情報を、保持する。
優先度保持部123は、タスクに設定された優先度の値を、保持する。本実施形態の優先度保持部123は、少なくとも、優先度を設定するタスクの数の優先度の値を保持する領域を、備える。
なお、本実施形態のタスクスケジューリング装置10は、図4に示すタスクスケジューリング装置60と同様に、CPU610と、ROM620と、RAM630とを含むコンピュータで実現されても良い。
次に、本実施形態の優先度生成部12の動作について、図面を参照して、説明する。
図6は、本実施形態の優先度生成部12の動作の一例を示すフローチャートである。
優先度生成部12は、図6に示す処理を、スケジューリングの対象となる各コアに対し、実施する。なお、タスクスケジューリングに用いる最高優先度は、予め、タスクスケジューリング装置10に、設定されていてもよい。
まず、優先度制御部121は、タスクスケジューリングに用いる最高優先度を設定する(ステップS201)。優先度制御部121は、最高優先度として、任意の値を用いても良い。また、優先度制御部121は、既に説明したように、最高優先度が予め設定されていても良い。あるいは、優先度制御部121は、タスクスケジューリングで設定するタスクより重要な処理で必要とする優先度を取り除き、残った利用可能な優先度の中で最も高い優先度を、最高優先度としても良い。
次に、優先度制御部121は、静的タスクスケジューリング結果の中の先頭から、順に、タスクを選択する。以下、選択されたタスクは、「優先度付与対象タスク」と言う。優先度制御部121は、優先度付与対象タスクを、優先度付与対象タスク保持部122に、設定する(ステップS202)。
続いて、優先度制御部121は、優先度付与対象タスクの実行順序の変動の可能性を、調べる(ステップS203)。
より具体的に説明すると、次のようになる。
優先度制御部121は、優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合に、最も早く実行の開始が可能となる順序である最良実行順序を求める。そして、優先度制御部121は、最良実行順序と、静的タスクスケジューリング結果の実行順序とを比較する。
実行順序が異なる場合、優先度制御部121は、実行順序の変動が起こり得ると判断する。一方、実行順序が等しい場合、優先度制御部121は、実行順序の変動が起こり得ないと判断する。
実行順序の変動が起こり得る場合(ステップS203でYes)、優先度制御部121は、優先度付与対象タスクの全ての先行実行タスクの優先度より低い優先度を、優先度付与対象タスクに、付与する(ステップS204)。
例えば、優先度が高いタスクに付与する優先度の値が小さく、優先度が低いタスクに付与する優先度の値が大きいとすると、優先度制御部121は、優先度の数値が大きい値を、優先度付与対象タスクに設定する。これは、優先度付与対象タスクの優先度を下げることになる。
なお、優先度制御部121は、低い優先度として、優先度が一つ下がる(低くなる)値にすることが望ましい。このように設定すると、使用されない優先度が発生せず、使用する優先度の個数が少なくなるためである。
優先度制御部121は、付与した優先度を優先度保持部123の優先度付与対象タスクの領域に保存する。
この動作に基づき、優先度制御部121は、タスクの実行順序を維持する。
一方、実行順序の変動が起こり得ない場合(ステップS203 No)、優先度制御部121は、優先度付与対象タスクに付与する優先度を下げない(ステップS205)。
例えば、優先度が高いタスクに付与する優先度の値が小さく、優先度が低いタスクに付与する優先度の値が大きいとすると、優先度制御部121は、優先度付与対象タスクに、先行するタスクの優先度の数値として同等又は低い値を付ける。
なお、優先度制御部121は、優先度として、最高優先度の値を設定することが望ましい。ただし、優先度制御部121は、必要に応じて最高優先度以外で現在の優先度より高い優先度を付与しても良く、優先度を同等としても良い。
優先度制御部121は、付与した優先度を優先度保持部123のうち優先度付与対象タスクの領域に保存する。
この動作に基づき、優先度制御部121は、必要な優先度の個数を、削減する。
優先度付与対象タスクに優先度を設定すると、優先度制御部121は、スケジューリングの対象のコアの全てのタスクについて、優先度付けが終了したか否かを判定する(ステップS206)。
終了した場合(ステップS206でYes)、優先度制御部121は、優先度の付与の処理を終了する。
終了していない場合(ステップS206でNo)、優先度制御部121は、ステップS202に戻り、静的タスクスケジューリング結果の次のタスク(1つ後のタスク)を優先度付与対象タスクに設定して、上記の処理を繰り返す。
次に、図面を用いて、図6を参照して説明した処理について、さらに説明する。
図7は、説明に用いる静的タスクスケジューリング結果の一例を示す図である。
図7は、コア0とコア1との2つのコアを示している。優先度制御部121は、コア0のタスクに優先度を付与するとする。コア0上には、図7に示すようにタスクAからタスクFまでの6つのタスクが配置されている。コア1のタスクは、表示を省略した。また、各タスク間の依存関係が、破線の矢印で示されている。この依存関係は、矢印の根元のタスクが完了後、矢印の先のタスクの実行が可能となる関係である。
タスクAは、先頭タスクである。タスクBは、図示を省略したコア1のタスクの完了後、実行可能となるタスクである。タスクCは、タスクAの完了後、実行可能なタスクである。タスクDは、タスクAの完了後、実行可能なタスクである。タスクEは、タスクDの完了後、実行可能なタスクである。タスクFは、最終タスクであり、タスクDの完了後、実行可能なタスクである。
また、優先度は、数値が小さいタスクの優先度が高いとする。つまり、同時に複数のタスクが実行可能な場合、優先度の数値が小さいタスクが、実行される。なお、数値が小さいタスクの優先度が低いとする場合、数値の大小を入れ替えればよい。また、最高優先度は、「3」とする。(つまり、優先度の最小値は、「3」とする。)
続いて、図7に示す静的タスクスケジューリング結果を用いて、優先度制御部121の動作について図面を参照して説明する。
図8乃至図13は、優先度制御部121が、設定する優先度を説明するための図である。図中の数値は、タスクに設定された優先度である。
まず、優先度制御部121は、静的タスクスケジューリング結果の先頭タスクであるタスクAの優先度を定義(付与)する。(これは、優先度制御部121が、タスクAを優先度付与対象タスクに設定することである。)タスクAは、先頭タスクである。そこで、優先度制御部121は、タスクAに最高優先度である「3」を定義する(図8)。
次に、優先度制御部121は、優先度付与対象タスクとして、タスクAの次に実行されるタスクBを設定する。そして、優先度制御部121は、タスクBの実行順序変動可能性について判断する。より具体的に説明すると、優先度制御部121は、タスクBがスケジューリングされている時刻より前に実行される可能性があるか否かを判断する。
ここで、タスクBは、コア1との依存関係に基づき、スケジューリングされている実行位置より前に実行されることはない。つまり、タスクBの最良実行順序は、図に示された静的タスクスケジューリング結果の実行順序と同じである。そのため、優先度制御部121は、タスクBの実行順序変動可能性がないと判断する。
優先度に関わらずタスクBは、実行順序変動可能性がない。そのため、優先度制御部121は、タスクBの優先度を先行するタスクAより下げる処理を行わず、タスクBの優先度を「3」とする(図9)。
次に、優先度制御部121は、タスクBの次に実行されるタスクCを優先度付与対象タスクとする。そして、優先度制御部121は、タスクCの実行順序変動可能性を判断する。
タスクCは、タスクAとの依存関係があるが、タスクBとは依存関係がない。そのため、優先度に基づき、タスクCは、タスクBと入れ替わり、前に実行される可能性がある。つまり、タスクCの最良実行順序は、タスクAの直後である。この順序は、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクCを実行順序変動可能性があると判断する。
そこで、優先度制御部121は、タスクCの全ての先行実行タスクより低い優先度を、タスクCに付与する。今の場合、タスクCの先行実行タスクは、タスクBである。そこで、優先度制御部121は、タスクCの優先度を、タスクBの優先度「3」より下げた「4」とする(図10)。
次に、優先度制御部121は、タスクCの次に実行されるタスクDを優先度付与対象タスクとする。そして、優先度制御部121は、タスクDの実行順序変動可能性を判断する。
タスクDは、タスクAとの依存関係があるが、タスクB及びタスクCとは依存関係がない。そのため、優先度に基づき、タスクDは、タスクB及びタスクCと入れ替わり、前に実行される可能性がある。つまり、タスクDの最良実行順序は、タスクAの直後である。この順序は、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクDを実行順序変動可能性があると判断する。
そこで、優先度制御部121は、タスクDの全ての先行実行タスクより低い優先度を、タスクDに付与する。今の場合、タスクDの先行実行タスクは、タスクB及びタスクCである。そこで、優先度制御部121は、タスクDの優先度を、タスクCの優先度「4」より下げた「5」とする(図11)。
次に、優先度制御部121は、タスクDの次に実行されるタスクEを優先度付与対象タスクとする。そして、優先度制御部121は、タスクEの実行順序変動可能性を判断する。
タスクEは、タスクA及びタスクDとの依存関係がある。そのため、タスクEの最良実行順序は、タスクDの直後となる。また、タスクEは、静的タスクスケジューリング結果においても、同じタスクDの直後である。その結果、優先度制御部121は、タスクEの実行順序変動可能性がないと判断する。
そこで、優先度制御部121は、タスクEの優先度を先行するタスクDの優先度より下げず、設定可能な最も高い優先度「3」を付与する(図12)。
次に、優先度制御部121は、タスクEの次に実行されるタスクFを優先度付与対象タスクとする。そして、優先度制御部121は、タスクFの実行順序変動可能性を判断する。
タスクFは、タスクDとの依存関係があるが、タスクEとは依存関係がない。そのため、優先度に基づき、タスクFは、タスクEと入れ替わり、前に実行される可能性がある。つまり、タスクFの最良実行順序は、タスクDの直後である。この順序は、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクFを実行順序変動可能性があると判断する。
そこで、優先度制御部121は、タスクFの全ての先行実行タスクより低い優先度を、タスクFに付与する。今の場合、タスクFの先行実行タスクは、タスクEである。そこで、優先度制御部121は、タスクFの優先度を、タスクEの優先度「3」より下げた「4」とする(図13)。
このように構成された第2の実施形態のタスクスケジューリング装置10は、第1の実施形態の効果に加え、優先度が高いタスクを多く生成する効果を得ることができる。
その理由は、第2の実施形態のタスクスケジューリング装置10は、優先度を高く設定する静的タスクスケジューリング結果の最初に実行される先頭タスクから、優先度を定義(付与)していくためである。
そのため、本実施形態のタスクスケジューリング装置10は、優先度が低い領域での優先度の値をできるだけ確保したい場合に、特に、有効である。
(第3の実施形態)
静的タスクスケジューリング結果の最終タスクから優先度を定義(付与)していく手法(第2の手法)を用いるタスクスケジューリング装置10の、より詳細な実施形態について、第3の実施形態として、説明する。
繰り返しの説明となるが、本実施形態のタスクスケジューリング装置10が用いる手法は、静的タスクスケジューリング結果に基づく実行順序の最終タスクから優先度を定義する方法であり、次のような動作を含む。
まず、タスクスケジューリング装置10は、各タスクの優先度に基づいて実行順序が変わりえる箇所と、優先度に基づいて実行順序が変わらない箇所とを、分類する。タスクスケジューリング装置10は、実行順序が変わりえる箇所について、後続するタスクの優先度に対し、先行のタスクの優先度を高く定義する。この動作に基づき、タスクスケジューリング装置10は、実行順序を、維持する。
一方、タスクスケジューリング装置10は、実行順序が変わらない箇所について、先行のタスクの優先度を上げない。この動作に基づき、タスクスケジューリング装置10は、必要な優先度の個数を、抑制する。
なお、本実施形態のタスクスケジューリング装置10の構成は、第2の実施形態と同じため、構成の説明を省略する。
また、本実施形態のタスクスケジューリング装置10は、図4に示すタスクスケジューリング装置60と同様に、CPU610と、ROM620と、RAM630とを含むコンピュータで実現されても良い。
次に本実施形態の優先度生成部12の動作について図面を参照して説明する。
図14は、本実施形態の優先度生成部12の動作の一例を示すフローチャートである。
優先度生成部12は、図14に示す処理を、スケジューリングの対象となる各コアに対し、実施する。なお、タスクスケジューリングで用いる最低優先度は、予め、タスクスケジューリング装置10に、設定されていてもよい。
まず、優先度制御部121は、タスクスケジューリングに用いる最低優先度を設定する(ステップS301)。優先度制御部121は、最低優先度として、任意の値を用いても良い。また、優先度制御部121は、既に説明したように、最低優先度が予め設定されていても良い。あるいは、優先度制御部121は、タスクスケジューリングで設定するタスクより重要な処理で必要とする優先度を取り除き、残った利用可能な優先度の中で最も低い優先度を、最低優先度としても良い。
次に、優先度制御部121は、静的タスクスケジューリング結果の実行される順序の後ろから順にタスクを選択する。選択されたタスクは、「優先度付与対象タスク」である。優先度制御部121は、優先度付与対象タスクを、優先度付与対象タスク保持部122に、設定する(ステップS302)。
続いて、優先度制御部121は、優先度付与対象タスクの実行順序の変動の可能性を、調べる(ステップS303)。
より具体的に説明すると、次のようになる。
優先度制御部121は、まず、後続タスクに更に従属するタスクを、検討対象から除外する。そして、優先度制御部121は、優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合に、最も遅く実行の開始が可能となる順序である最悪実行順序を求める。そして、優先度制御部121は、最悪実行順序と、静的タスクスケジューリング結果の実行順序とを比較する。
順序が異なる場合、優先度制御部121は、実行順序の変動が起こり得ると判断する。一方、実行順序が等しい場合、優先度制御部121は、実行順序の変動が起こり得ないと判断する。
実行順序の変動が起こり得る場合(ステップS303でYes)、優先度制御部121は、優先度付与対象タスクの全ての後続実行タスクより高い優先度を、優先度付与対象タスクに、付与する(ステップS304)。例えば、優先度が高いタスクに付与する優先度の値が小さく、優先度が低いタスクに付与する優先度の値が大きいとすると、優先度制御部121は、優先度の数値が小さい値を、優先度付与対象タスクに設定する。これは、優先度付与対象タスクの優先度を上げることになる。なお、優先度制御部121は、高い優先度として、優先度が一つ上がる(高くなる)値にすることが望ましい。このように設定すると、使用されない優先度が発生せず、使用する優先度の個数が少なくなるためである。優先度制御部121は、付与した優先度を優先度保持部123の優先度付与対象タスクの領域に保存する。この動作に基づき、優先度制御部121は、タスクの実行順序を、維持する。
一方、実行順序の変動が起こり得ない場合(ステップS303 No)、優先度制御部121は、優先度付与対象タスクに付与する優先度を上げない(ステップS305)。例えば、優先度が高いタスクに付与する優先度の値が小さく、優先度が低いタスクに付与する優先度の値が大きいとすると、優先度制御部121は、優先度付与対象タスクに、先行するタスクの優先度の数値として同等又は高い値を付ける。なお、優先度制御部121は、優先度として、最低優先度の値を設定することが望ましい。ただし、優先度制御部121は、必要に応じて最低優先度以外で現在の優先度より低い優先度を付与しても良く、優先度を同等としても良い。優先度制御部121は、付与した優先度を優先度保持部123のうち優先度付与対象タスクの領域に保存する。この動作に基づき、優先度制御部121は、必要な優先度の個数を、削減する。
優先度付与対象タスクに優先度を設定すると、優先度制御部121は、スケジューリングの対象のコアの全てのタスクについて、優先度付けが終了したか否かを判定する(ステップS306)。
終了した場合(ステップS306でYes)、優先度制御部121は、優先度の付与の処理を終了する。
終了していない場合(ステップS306でNo)、優先度制御部121は、ステップS302に戻り、静的タスクスケジューリング結果の次のタスク(1つ前のタスク)を優先度付与対象タスクに設定して、上記の処理を繰り返す。
続いて、図7に示す静的タスクスケジューリング結果を用いて、優先度制御部121の動作についてさらに説明する。
また、優先度は、数値が小さいタスクの優先度が高いとする。つまり、同時の複数のタスクが実行可能な場合、数値が小さいタスクが、実行される。なお、数値が小さいタスクの優先度が低いとする場合、数値の大小を入れ替えればよい。最低優先度は、「5」とする。(つまり、優先度の最大値は、「5」とする。)
図15乃至図20は、優先度制御部121が、設定する優先度を説明するための図である。図中の数値は、タスクに設定された優先度である。
まず、優先度制御部121は、静的タスクスケジューリング結果の最終タスクであるタスクFの優先度を定義(付与)する。(これは、優先度制御部121が、タスクFを優先度付与対象タスクに設定することである。)タスクFは、最終タスクである。そこで、優先度制御部121は、タスクFに最低優先度(数値としては最大値)である「5」を定義する(図15)。
次に、優先度制御部121は、優先度付与対象タスクとして、タスクFの前に実行されるタスクEを設定する。そして、優先度制御部121は、タスクEの実行順序変動可能性について判断する。より具体的に説明すると、優先度制御部121は、タスクEがスケジューリングされている時刻より後に実行される可能性があるか否かを判断する。
ここで、タスクEとタスクFは、タスクDに依存している。そのため、タスクFは、優先度に基づき、タスクEと入れ替わり、前の実行位置で実行される可能性がある。つまり、タスクEの最悪実行順序は、タスクFの後である。これは、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクEの実行順序変動可能性があると判断する。なお、タスクFは、タスクEの後続実行タスクである。
そこで、優先度制御部121は、タスクEの優先度を、後続のタスクF(後続実行タスク)より上げる。今の場合、タスクFの優先度は「5」である。そこで、優先度制御部121は、タスクEの優先度を「4」とする(図16)。
次に、優先度制御部121は、タスクEの前に実行されるタスクDを優先度付与対象タスクとする。そして、優先度制御部121は、タスクDの実行順序変動可能性を判断する。
タスクDは、後続するタスクE及びタスクFと依存関係がある。そのため、優先度に関わらず、タスクE及びタスクFは、タスクDの前に実行されることはない。つまり、タスクDの最悪実行順序は、静的タスクスケジューリング結果の実行順序と同じである。従って、優先度制御部121は、タスクDの実行順序変動可能性がないと判断する。
実行順序変動可能性がないため、優先度制御部121は、タスクDの優先度を上げる処理を行わず、タスクDに最も低い優先度(最低優先度「5」)を付与する(図17)。
次に、優先度制御部121は、タスクDの前に実行されるタスクCを優先度付与対象タスクとする。そして、優先度制御部121は、タスクCの実行順序変動可能性を判断する。
なお、優先度制御部121は、タスクDに従属するタスクE及びタスクFを検討対象から除外する。除外する理由は、次のとおりである。優先度制御部121が、タスクCをタスクDより前に実行されるように優先度を設定すれば、タスクE及びタスクFは、タスクCより前に実行されることがないためである。
タスクC及びタスクDの依存関係は、同様で、タスクAとの依存関係である。そのため、タスクDは、優先度に基づいて、タスクCより前に実行される可能性がある。つまり、タスクCの最悪実行順序は、タスクDの後(タスクEの直前)となる。最悪実行順序は、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクCの実行順序変動可能性があると判断する。
そこで、優先度制御部121は、タスクCの優先度を後続実行タスクより上げる処理を行う。より具体的には、優先度制御部121は、タスクCの全ての後続実行タスクの優先度より上げる。今の場合、対象となる後続実行タスクは、タスクDである。そのため、優先度制御部121は、タスクCの優先度を、タスクDの優先度「5」より高い優先度「4」とする(図18)。
次に、優先度制御部121は、タスクCの前に実行されるタスクBを優先度付与対象タスクとする。そして、優先度制御部121は、タスクBの実行順序変動可能性を判断する。
ただし、タスクDに従属するタスクE、タスクFは、タスクBがタスクDより前に実行されるよう優先度付けされればタスクBより前に実行されることはない。そのため、優先度制御部121は、タスクE及びタスクFを、順序変動の検討対象から除外する。
タスクC及びタスクDは、共に、タスクAからの依存が存在し、他の依存関係がない。つまり、タスクC及びタスクDは、タスクBとの依存関係がない。そのため、タスクC及びタスクDは、優先度に基づき、タスクBと入れ替わり、前に実行される可能性がある。つまり、タスクBの最悪実行順序は、タスクDの後(検討対象から削除したタスクEの直前)である。最悪実行順序は、静的タスクスケジューリング結果の実行順序と異なる。そのため、優先度制御部121は、タスクBの実行順序変動可能性があると判断する。
そこで、優先度制御部121は、タスクBの優先度を、タスクBの全ての後続実行タスクの優先度より上げる。今の場合、対象となる後続実行タスクは、タスクC及びタスクDである。そのため、優先度制御部121は、タスクBの優先度を、タスクCの優先度「4」より高い優先度「3」とする(図19)。
次に、優先度制御部121は、タスクBの前に実行されるタスクAを優先度付与対象タスクとする。そして、優先度制御部121は、タスクAの実行順序変動可能性を判断する。まず、優先度制御部121は、タスクE及びタスクFを検討対象から除外する。また、タスクC及びタスクDは、タスクAと依存関係があるため、タスクAより前に実行されることはない。さらに、タスクBは、コア1との依存関係に基づき、タスクAより前に実行されることはない。つまり、タスクAより前に実行されるタスクはない。つまり、タスクAの最悪実行順序は、静的タスクスケジューリング結果の実行順序と同じである。
そこで、優先度制御部121は、タスクAの実行変動可能性がないと判断する。その結果、優先度制御部121は、タスクAに最低優先度「5」を付与する(図20)。
このように構成された第3の実施形態のタスクスケジューリング装置10は、第1の実施形態の効果に加え、優先度が低いタスクを多く生成する効果を得ることができる。
その理由は、第3の実施形態のタスクスケジューリング装置10は、優先度を低く設定する静的タスクスケジューリング結果の最後に実行される最終タスクから、優先度を定義(付与)していくためである。
そのため、本実施形態のタスクスケジューリング装置10は、優先度が高い領域での優先度の値をできるだけ確保したい場合に、特に、有効である。
(第4の実施形態)
次に、第4の実施形態について図面を参照して説明する。
まず、以下の説明において、実行順序の変動が外部へ影響するタスクを、「順序変動禁止タスク」と呼ぶ。順序変動禁止タスクとして、例えば、I/Oアクセスを行うタスク、又は、他のコア上のタスクとの通信の依存関係があるタスクが、考えられる。一方、実行順序の変動が外部に影響しないタスクとして、例えば、コアでの演算処理に限られたタスク、又は、依存関係が同一コア内のタスクに限れられたタスクが、考えられる。
第4の実施形態のタスクスケジューリング装置10は、順序変動禁止タスクの実行順序が変動しない範囲で、実行順序の変動が外部に影響しないタスク群について、同じ優先度を用いる。このような優先度の付与に基づき、本実施形態のタスクスケジューリング装置10は、必要な優先度の個数を、第1乃至第3の実施形態より、さらに、削減する。
本実施形態のタスクスケジューリング装置10は、静的タスクスケジューリング結果の先頭タスクから優先度を定義(付与)する手法(第1の手法)と、最終タスクから定義(付与)する手法(第2の手法)との、どちらも、用いることができる。以下の説明では、一例として、先頭タスクから優先度を定義する手法を用いて、説明する。
本実施形態の構成は、第1の実施形態乃至第3の実施形態と同様のため、構成の説明を省略する。
なお、本実施形態のタスクスケジューリング装置10は、図4に示すタスクスケジューリング装置60と同様に、CPU610と、ROM620と、RAM630とを含むコンピュータで、実現されても良い。
図21は、本実施形態の優先度生成部12の動作の一例を示すフローチャートである。なお、優先度生成部12は、各コアについて、以下で説明する処理を、実施する。また、最高優先度についても、第2の実施形態と同様に、予め、最高優先度が設定されていても良い。
まず、優先度制御部121は、タスクスケジューリングで用いる最高優先度を、設定する(ステップS401)。ここで、優先度制御部121は、最高優先度として、任意の値を用いても良い。また、優先度制御部121は、既に説明したように、最高優先度が、予め、設定されても良い。あるいは、優先度制御部121は、タスクスケジューリングで設定するタスクより重要な処理で必要とする優先度を取り除き、残った利用可能な優先度の中で最も高い優先度を、最高優先度としても良い。なお、静的タスクスケジューリング結果の最終タスクから優先度を設定する場合、優先度制御部121は、最低優先度を設定する。
次に、優先度制御部121は、優先度付与対象タスクを、選択する。そして、優先度制御部121は、選択した優先度付与対象タスクを、優先度付与対象タスク保持部122に、設定(保持)する(ステップS402)。
次に、優先度制御部121は、優先度付与対象タスクの実行順序変動可能性を、調べる(ステップS403)。より具体的には、優先度制御部121は、次のように動作する。
優先度制御部121は、優先度付与対象タスクの最良実行順序を求める。そして、優先度制御部121は、求めた最良実行順序と、静的タスクスケジューリング結果の実行順序とを比較する。順序が異なる場合、優先度制御部121は、実行順序の変動が起こり得ると判断する。実行順序が等しい場合、優先度制御部121は、実行順序の変動が起こり得ないと判断する。
実行順序の変動が起こり得ない場合(ステップS403でNo)、優先度制御部121は、優先度を下げない処理を用いて、必要な優先度の個数を、削減する(ステップS407)。具体的には、優先度制御部121は、次のような動作を実行する。
優先度制御部121は、優先度の数値として先行するタスクの優先度と同等又は高い優先度を選択し、優先度保持部123の優先度付与対象タスクの領域に保存する。
なお、優先度制御部121は、最高優先度の値を設定することが望ましい。ただし、優先度制御部121は、必要に応じて、最高優先度以外で先行するタスクの優先度より高い優先度に上げる、又は、優先度を先行するタスクの優先度と同等としてもよい。優先度を設定後、優先度制御部121は、ステップS408へと進む。
一方、実行順序の変動が起こり得る場合(ステップS403 Yes)、優先度制御部121は、優先度付与対象タスクの実行順序の変動に基づき、外部への影響があるか否か判定する(ステップS404)。
ここで、優先度付与対象タスクが順序変動禁止タスクならば、当然、実行順序の変更は、外部へ影響する。しかし、ステップS404で優先度制御部121が判断する外部への影響の有無は、優先度付与対象タスクが順序変動禁止タスクの場合に限られない。そのため、優先度付与対象タスクが順序変動禁止タスクの場合に限らず、優先度制御部121は、実行順序の変更に基づく外部への影響を判定する。
例えば、優先度付与対象タスクが順序変動禁止タスク以外であっても、順序変動禁止タスクが、優先度付与対象タスクの先行実行タスクに、含まれる場合がある。その場合、順序変動禁止タスクの実行順序は、優先度付与対象タスクの実行順序に基づき、変更となる可能性がある。つまり、外部への影響が、順序変動禁止タスクでない優先度付与対象タスクの実行順序に基づいて、発生する場合がある。そこで、先行実行タスクの一部が、順序変動禁止タスクの場合、優先度制御部121は、順序変動禁止タスクに影響を与えない範囲で、外部への影響がない場合の処理を、優先度付与対象タスクに、適用する。
外部への影響がある場合(ステップS404でYes)、優先度制御部121は、優先度付与対象タスクの全ての先行実行タスクより低い優先度を、優先度付与対象タスクに、付与する(ステップS405)。
例えば、優先度が低いと大きな数値を付与する場合、優先度制御部121は、優先度付与対象タスクの優先度の数値に大きな値を付与する。そして、優先度制御部121は、選択した優先度を、優先度保持部123の優先度付与対象タスクの領域に保存する。なお、優先度制御部121は、優先度が一つ下がる値を選択することが望ましい。その後、優先度制御部121は、ステップS408に進む。
外部への影響がない場合(ステップS404でNo)、優先度制御部121は、優先度付与対象タスクに、次の条件を満足する優先度を付与する。
条件1:優先度付与対象タスクが最良実行順序で実行された場合の実行開始時刻以降で、全ての、優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全ての順序変動禁止タスク(以下、「先行実行の順序変動禁止タスク」と言う)の優先度より低い優先度。
条件2:優先度付与対象タスクの最良実行順序で実行された場合の実行開始時刻以降で、優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する順序変動禁止タスクでないタスク(以下、「先行実行の順序変動可能タスク」と言う)と同等の優先度。
例えば、優先度が低い場合に大きな数値を付与とする。そして、先行実行の順序変動禁止タスクの優先度が「3」の場合、優先度制御部121は、優先度として、例えば、「4」を付与する。そして、優先度制御部121は、選択した優先度を、優先度保持部123の優先度付与対象タスクの領域に保存する。なお、優先度制御部121は、条件2の先行実行の順序変動可能タスクと同じ優先度として、最も高い優先度を選択することが望ましい。その後、優先度制御部121は、ステップS408に進む。
ステップS405乃至S407の後、優先度制御部121は、対象となっているコアの全てのタスクについて優先度付けが終了したか否かを判定する(ステップS408)。
全てのタスクについて優先度付けが終了した場合(ステップS408 Yes)、優先度制御部121は、処理を終了する。
優先度付けしてないタスクがある場合(ステップS408 No)、優先度制御部121は、ステップS402へと戻り、次のタスクを優先度付与対象タスクに設定し、これまで説明した処理を繰り返す。
次に、静的タスクスケジューリング結果の一例を参照して、本実施形態の動作について説明する。
図22は、説明に用いる静的タスクスケジューリング結果の一例を示す図である。
図22は、コア0とコア1との2つのコアを示している。優先度制御部121は、コア0のタスクに優先度を付与するとする。コア0上には、図22に示すようにタスクGからタスクNまでの8つのタスクが配置されている。図22において、コア1のタスクの表示を、省略した。また、図22において、各タスク間の依存関係が、破線の矢印で示されている。この依存関係は、矢印の根元のタスクが完了後、矢印の先のタスクの実行が可能となる関係である。
タスクGは、先頭タスクである。タスクHは、タスクGの終了後、実行可能なタスクである。タスクIは、タスクGの終了後、実行可能なタスクである。タスクJは、タスクGの終了後、実行可能なタスクである。タスクKは、タスクHの終了後、実行可能なタスクである。タスクLは、タスクIの終了後、実行可能なタスクである。タスクMは、タスクJの終了後、実行可能なタスクである。タスクNは、最終タスクであり、タスクL及びタスクMの終了後、実行可能なタスクである。また、タスクJ、タスクK及びタスクNは、順序変動禁止タスクとする。そのため、タスクJ、タスクK、タスクNは、依存関係の先がコア1となっている矢印を付した。タスクJ、タスクK及びタスクN以外のタスクは、順序変動禁止タスクではなく、順序変動禁止タスクへの影響がない範囲で実行順序の変動が許可される。
また、優先度は、数値が小さいタスクの優先度が高いとする。つまり、同時の複数のタスクが実行可能な場合、優先度の数値が小さいタスクが、実行される。なお、数値が小さいタスクの優先度が低いとする場合、数値の大小を入れ替えればよい。また、最高優先度は、「1」とする。(つまり、優先度の最小値は、「1」とする。)
本実施形態の説明の参考として、第2の実施形態のタスクスケジューリング装置10が図22に示す静的タスクスケジューリング結果を付与する優先度を示しておく。
図23は、第2の実施形態のタスクスケジューリング装置10が付与する優先度を示す図である。第2の実施形態のタスクスケジューリング装置10は、優先度として、「1」から「6」と、タスクの数の8より少ない6個の優先度を使用する。
続いて、図22に示す静的タスクスケジューリング結果を用いて、本実施形態のタスクスケジューリング装置10の動作について図面を参照して説明する。
図24乃至図30は、本実施形態の優先度制御部121が、設定する優先度を説明するための図である。図中の数値は、タスクに定義(設定、又は、付与)された優先度である。
まず、優先度制御部121は、コア0で最初に実行されるタスクGを優先度付与対象タスクと設定する。そして、優先度制御部121は、タスクGの優先度を定義する。優先度制御部121は、タスクGの優先度として最高優先度(優先度の最小値)の「1」を設定する。
次に、優先度制御部121は、優先度付与対象タスクを、タスクGの次に実行されるタスクHとする。そして、優先度制御部121は、優先度付与対象タスク(タスクH)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクHが静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。
タスクHは、タスクGとの依存関係に基づき、静的タスクスケジューリング結果の実行位置(実行順序)より前に実行されることはない。つまり、タスクHの最良実行順序は、図22に示された静的タスクスケジューリング結果の実行順序と同じタスクGの直後である。このため、優先度制御部121は、タスクHを実行順序変動可能性なしと判断する。
判断後、優先度制御部121は、タスクHに優先度を付与する。既に説明したとおり、タスクHは、優先度に関わらず、静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性がない。そのため、優先度制御部121は、タスクHの優先度を、先行するタスク(タスクG)より下げる処置は行わず、タスクGと同じ優先度(今の場合「1」)とする(図24)。
次に、優先度制御部121は、優先度付与対象タスクを、タスクHの次に実行されるタスクIとする。そして、優先度制御部121は、優先度付与対象タスク(タスクI)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクIが静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。
タスクIは、タスクGとの依存関係が存在するが、先行するタスクHとの依存関係はない。そのため、タスクIは、優先度に基づき、タスクHと入れ替わり、静的タスクスケジューリング結果の実行順序より前に実行される可能性がある。つまり、タスクIの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なり、タスクGの直後である。このため、優先度制御部121は、タスクIを実行順序変動可能性ありと判断する。
判断後、優先度制御部121は、タスクIに優先度を付与する。優先度制御部121は、タスクIを、実行順序変動可能性ありの判断している。しかし、タスクIは、順序変動禁止タスクではない。すなわち、優先度制御部121は、外部への影響を与えない範囲で、タスクIの実行順序の変動が許可される。
今回の例において、タスクIに対応する先行実行の順序変動禁止タスクは、ない。
タスクIの実行順序の変動可能範囲は、最良実行順序以降である。また、繰り返しになるが、タスクIの最良実行順序は、タスクGの直後である。そのため、タスクIに対応する先行実行の順序変動可能タスクは、タスクHである。そのため、優先度制御部121は、タスクIの優先度をタスクHより下げる処置を行わない。つまり、優先度制御部121は、タスクIの優先度として、タスクIの先行実行の順序変動可能タスク(今の場合、タスクH)の優先度と同じ優先度(今の場合「1」)と定義する(図25)。
次に、優先度制御部121は、優先度付与対象タスクを、タスクIの次に実行されるタスクJとする。そして、優先度制御部121は、優先度付与対象タスク(タスクJ)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクJが静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。
タスクJは、タスクGからの依存関係が存在するが、その他の先行するタスクとの依存関係はない。そのため、タスクJは、優先度に基づき、タスクH及びタスクIと入れ替わり、静的タスクスケジューリング結果の実行順序より前に実行される可能性がある。つまり、タスクJの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なり、タスクGの直後である。このため、優先度制御部121は、タスクJを実行順序変動可能性ありと判断する。
判断後、優先度制御部121は、タスクJに優先度を付与する。優先度制御部121は、タスクJを、実行順序変動可能性ありと判断している。また、タスクJは、順序変動禁止タスクである。従って、優先度制御部121は、タスクJの優先度を下げる処置を行う。タスクJの最良実行順序は、タスクGの直後である。従って、優先度制御部121は、タスクJの優先度として、全ての先行実行タスク(タスクH、タスクI)の優先度の中で最も低い優先度(今の場合「1」)より低い優先度(例えば「2」)を定義する(図26)。
次に、優先度制御部121は、優先度付与対象タスクを、タスクJの次に実行されるタスクKとする。そして、優先度制御部121は、優先度付与対象タスク(タスクK)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクKが静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。
タスクKは、タスクHとの依存関係が存在するが、タスクI及びタスクJとの依存関係がない。そのため、タスクKは、優先度に基づき、タスクI及びタスクJと入れ替わり、静的タスクスケジューリング結果の実行順序より前に実行される可能性がある。つまり、タスクKの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なり、タスクHの直後である。このため、優先度制御部121は、タスクKを実行順序変動可能性ありと判断する。
判定後、優先度制御部121は、タスクKに優先度を付与する。優先度制御部121は、タスクKを、実行順序変動可能性ありと判断している。また、タスクKは、順序変動禁止タスクである。従って、優先度制御部121は、タスクKの優先度を下げる処置を行う。タスクKの最良実行順序は、タスクHの直後である。従って、優先度制御部121は、タスクKの優先度として、全ての先行実行タスク(タスクI、タスクJ)の優先度の中で最も低い優先度(今の場合「2」)より低い優先度(例えば、「3」)を定義する(図27)。
次に、優先度制御部121は、優先度付与対象タスクを、タスクKの次に実行されるタスクLとする。そして、優先度制御部121は、優先度付与対象タスク(タスクL)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクLが静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。
タスクLは、タスクIとの依存関係が存在するが、タスクJ及びタスクKとの依存関係がない。そのため、タスクLは、優先度に基づき、タスクJ及びタスクKと入れ替わり、静的タスクスケジューリング結果の実行順序より前に実行される可能性がある。つまり、タスクLの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なり、タスクIの直後である。このため、優先度制御部121は、タスクLを実行順序変動可能性ありと判断する。
判断後、優先度制御部121は、タスクLに優先度を付与する。優先度制御部121は、タスクLを実行順序変動可能性ありの判断している。また、タスクLは、順序変動禁止タスクではない。すなわち、優先度制御部121は、外部への影響を与えない範囲で、タスクLの実行順序の変動が許可されている。
ただし、今回の場合、タスクLの先行実行タスク(タスクJ及びタスクK)は、全て順序変動禁止タスクである。従って、タスクLは、先行実行タスク(タスクJ及びタスクK)と入れ替わることができない。そのため、優先度制御部121は、タスクLの優先度として、全ての先行実行タスク(タスクJ、タスクK)の優先度の中で最も低い優先度(今の場合「3」)より低い優先度(例えば、「4」)を定義する(図28)。
次に、優先度制御部121は、優先度付与対象タスクを、タスクLの次に実行されるタスクMとする。そして、優先度制御部121は、優先度付与対象タスク(タスクM)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクMの静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。
タスクMは、タスクJとの依存関係が存在するが、タスクK及びタスクLとの依存関係がない。そのため、タスクMは、優先度に基づき、タスクK及びタスクLと入れ替わり、静的タスクスケジューリング結果の実行順序より前に実行される可能性がある。つまり、タスクMの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なり、タスクJの直後である。このため、優先度制御部121は、タスクMを実行順序変動可能性ありと判断する。
判断後、優先度制御部121は、タスクMに優先度を付与する。優先度制御部121は、タスクMを実行順序変動可能性ありの判断している。また、タスクMは、順序変動禁止タスクではない。すなわち、優先度制御部121は、外部への影響を与えない範囲で、タスクMの実行順序の変動が許可される。
ただし、タスクMの先行実行タスク(タスクK、タスクL)の中で、タスクKは、順序変動禁止タスクである。つまり、タスクMは、タスクKと入れ替わることができない。そのため、優先度制御部121は、タスクMの優先度として、先行実行の順序変動禁止タスク(タスクK)の優先度より下げた優先度で、先行実行の順序変動可能タスク(タスクL)の優先度(今の場合「4」)と同等の優先度(「4」)を定義する(図29)。
次に、優先度制御部121は、優先度付与対象タスクを、タスクMの次に実行されるタスクNとする。そして、優先度制御部121は、優先度付与対象タスク(タスクN)の実行順序変動可能性について判断する。具体的には、優先度制御部121は、タスクNの静的タスクスケジューリング結果の実行順序の時刻より前に実行される可能性があるか否かを判断する。
タスクNは、タスクL及びタスクMとの依存関係が存在する。また、タスクL及びタスクMは、順序変動禁止タスクではない。つまり、タスクL及びタスクMは、実行順序が入れ替わる可能性がある。しかし、タスクNは、タスクL及びタスクMのどちらとも依存関係が存在する。従って、タスクL及びタスクMの実行順序に関わらず、タスクNは、2つのタスクの実行後に実行される。つまり、タスクNの最良実行順序は、静的タスクスケジューリング結果の実行順序と同じ(タスクMの直後)である。そのため、優先度制御部121は、タスクNを実行順序変動可能性なしと判断する。
判断後、優先度制御部121は、タスクNに優先度を付与する。優先度制御部121は、タスクNを、実行順序変動可能性なしと判断している。そのため、優先度制御部121は、タスクNの優先度として、先行するタスクより下げる処置は行わず、設定可能な優先度の中で最も高い優先度(今の場合「1」)を定義する(図30)。
本実施形態の優先度付与結果である図30と、第2の実施形態の優先度付与結果である図23を比較すると、本実施形態のタスクスケジューリング装置10は、優先度として、第2の実施形態の6個より少ない4個を使用している。
このように、本実施形態の係るタスクスケジューリング装置10は、使用する優先度の数を、第1乃至第3の実施形態のタスクスケジューリング装置10より削減する効果を得ることができる。
その理由は、本実施形態のタスクスケジューリング装置10は、タスクの実行順序の変動が外部に影響しないタスクについて、同じ優先度を用いるためである。
(第5の実施形態)
第5の実施形態について図面を参照して説明する。
図31は、本実施形態に係るタスクスケジューリング装置10Aの構成の一例を示すブロック図である。図31において、図2と同様の構成には同様の番号を付し、その詳細な説明を省略する。
タスクスケジューリング装置10Aは、図2に示すタスクスケジューリング装置10が含む静的タスクスケジューリング生成部11と、優先度生成部12とに加え、装置制御部13を含む。
装置制御部13は、静的タスクスケジューリング生成部11と優先度生成部12との動作を制御する。より具体的には、装置制御部13は、静的タスクスケジューリング生成部11に、タスクの静的タスクスケジューリングを実行させる。そして、装置制御部13は、優先度生成部12に、静的タスクスケジューリングしたタスクに優先度を付与させる。装置制御部13は、この動作を全てにタスクが終了するまで繰り返す。
このような制御に基づき、装置制御部13は、静的タスクスケジューリング生成部11と優先度生成部12とを密に連携させ、最良実行順序の検出を容易にする。
なお、本実施形態のタスクスケジューリング装置10Aは、図4に示すタスクスケジューリング装置60と同様に、CPU610と、ROM620と、RAM630とを含むコンピュータで実現されても良い。
本実施形態のタスクスケジューリング装置10Aの動作について図面を参照して説明する。
図32は、本実施形態のタスクスケジューリング装置10Aの動作の一例を示すフローチャートである。
まず、装置制御部13は、静的タスクスケジューリング生成部11に、処理対象のタスクについての静的タスクスケジューリングを指示する。静的タスクスケジューリング生成部11は、指定されたタスクのコア配置と、タスクのコア上での実行順序とを決定する静的タスクスケジューリングを実行する(ステップS501)。なお、静的タスクスケジューリングに用いる手法は、既に説明した実施形態の手法を用いれば良い。また、静的タスクスケジューリングを行ったタスクは、次に優先度生成部12で処理されるため、優先度付与対象タスクとなる。
静的タスクスケジューリング生成部11の処理が終了すると、装置制御部13は、静的タスクスケジューリングが終了したタスクの優先度付与を、優先度生成部12に指示する。指示を受けた優先度生成部12は、静的タスクスケジューリングが終了した優先度付与対象タスクに優先度を付与する(ステップS502)。優先度生成部12が優先度付与に用いる手法は、既に説明した実施形態の手法を用いれば良い。なお、後ほど説明するが、優先度生成部12が優先度を付与する際、タスクスケジューリング装置10Aは、優先度付与対象タスクが最良実行順序(又は最悪実行順序)で静的タスクスケジューリングされているか否かを容易に判定できる。
優先度付与後、装置制御部13は、全てのタスクの処理が終了したか否かを判定する(ステップS503)。
処理してないタスクがある場合(ステップS503 No)、装置制御部13は、ステップS501に戻り、次のタスクについて処理を繰り返す。
終了した場合(ステップS503 Yes)、装置制御部13は、処理を終了する。
次に、図7に示した静的タスクスケジューリング結果と同様のタスクA乃至タスクFを用いて、本実施形態のタスクスケジューリング装置10Aの動作について、さらに説明する。
なお、静的タスクスケジューリングは、複数コアを統合して処理できる。本実施形態のタスクスケジューリング装置10Aは、静的タスクスケジューリングと優先度生成とを、複数コアを統合して処理しても良い。ただし、複数コアを統合した処理の場合、説明が煩雑となる。そのため、以下では、説明の明確にするため、コア0の動作として説明する。
また、優先度は、数値が小さいタスクの優先度が高いとする。つまり、同時に複数のタスクが実行可能であった場合、優先度として付与された数値が小さいタスクが、優先して実行されるとする。なお、数値が小さいタスクの優先度が低いとする場合、数字の大小の判定を入れ替えれば良い。
また、以下の説明では、タスクが実行される順に優先度を設定するとし、最高優先度(優先度の数値の最小値)を「3」とする。
図33乃至図38は、本実施形態のタスクスケジューリング装置10Aが、設定する優先度を説明するための図である。図中の数値は、タスクに定義(設定、付与)された優先度である。
まず、装置制御部13は、静的タスクスケジューリング生成部11に最初のタスクの静的タスクスケジューリングを指示する。今の場合、静的タスクスケジューリング生成部11は、コア0上で最初にタスクAを実行することが、性能向上に良いと判断したとする。そのため、静的タスクスケジューリング生成部11は、タスクAの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクAとなる。
また、静的タスクスケジューリングのときに、タスクAの後に実行可能であるタスクが、明らかになる。今の場合、実行可能となるタスクは、コア1からの依存が解消するタスクB、並びに、タスクAとの依存が解消するタスクC及びタスクDである。つまり、タスクスケジューリング装置10Aは、タスクB、タスクC及びタスクDの最良実行順序がタスクAの直後であることを知ることができる。以下、依存が解消され、配置が可能となったタスクを「配置可能タスク」と言う。
その後、装置制御部13は、優先度生成部12に、タスクAの優先度の定義を指示する。タスクAは、先頭タスクである。そのため、優先度生成部12は、タスクAの優先度として、最高優先度(優先度の最小値)である「3」を設定(付与)する(図33)。
装置制御部13は、まだタスクが残っているため、次のタスクを処理する。
装置制御部13は、静的タスクスケジューリング生成部11に、次のタスクの静的タスクスケジューリングを指示する。ここで、静的タスクスケジューリング生成部11は、コア0上で次にタスクBを実行することが、性能向上に良いと判断したとする。そのため、静的タスクスケジューリング生成部11は、タスクBの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクBとなる。
静的タスクスケジューリングの後、装置制御部13は、優先度生成部12に優先度付与対象タスク(タスクB)の優先度の定義(付与)を指示する。
タスクAの静的タスクスケジューリング時に明らかなように、タスクBの最良実行順序は、タスクAの直後である。この実行順序は、上記の静的タスクスケジューリング結果の実行順序と同じである。このため、優先度生成部12は、タスクBを実行順序変動可能性なしと判断する。そして、優先度生成部12は、タスクBの優先度を、先行するタスクAより下げる処置は行わず、最高優先度(今の場合「3」)とする(図34)。なお、今回の場合、先行するタスクAの優先度が最高優先度のため、タスクBの優先度は、タスクAの優先度と同じである。
装置制御部13は、まだタスクが残っているため、次のタスクを処理する。
装置制御部13は、静的タスクスケジューリング生成部11に、次のタスクの静的タスクスケジューリングを指示する。ここで、静的タスクスケジューリング生成部11は、コア0上で次にタスクCを実行することが、性能向上に良いと判断したとする。そのため、静的タスクスケジューリング生成部11は、タスクCの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクCとなる。
静的タスクスケジューリングの後、装置制御部13は、優先度生成部12に優先度付与対象タスク(タスクC)の優先度の定義(付与)を指示する。
タスクAの静的タスクスケジューリング時に明らかなように、タスクCの最良実行順序は、タスクAの直後である。タスクCは、優先度に基づき、タスクBと入れ替わる可能性がある。つまり、タスクCの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なる。このため、優先度生成部12は、タスクCを実行順序変動可能性ありと判断する。そして、優先度生成部12は、タスクCの優先度を、先行実行タスク(タスクB)の優先度(「3」)より低い優先度(例えば「4」)とする(図35)。
装置制御部13は、まだタスクが残っているため、次のタスクを処理する。
装置制御部13は、静的タスクスケジューリング生成部11に、次のタスクの静的タスクスケジューリングを指示する。ここで、静的タスクスケジューリング生成部11は、コア0上で次にタスクDを実行することが、性能向上に良いと判断したとする。(なお、この時点での配置可能タスクに残っているタスクは、タスクDである(図35を参照)。)そのため、静的タスクスケジューリング生成部11は、タスクDの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクDとなる。
また、静的タスクスケジューリングのときに、タスクDの後に実行可能であるタスク(配置可能タスク)が、明らかになる。今の場合、配置可能タスクは、タスクDとの依存が解消するタスクE及びタスクFである。つまり、タスクスケジューリング装置10Aは、タスクE及びタスクFの最良実行順序がタスクDの直後であることを知ることができる。
静的タスクスケジューリングの後、装置制御部13は、優先度生成部12に優先度付与対象タスク(タスクD)の優先度の定義(付与)を指示する。
タスクAの静的タスクスケジューリング時に明らかなように、タスクDの最良実行順序は、タスクAの直後である。タスクDは、優先度に基づき、タスクB及びタスクCと入れ替わる可能性がある。つまり、タスクDの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なる。このため、優先度生成部12は、タスクDを実行順序変動可能性ありと判断する。そして、優先度生成部12は、タスクDの優先度を、先行実行タスク(タスクB及びタスクC)の中の最も低い優先度(「4」)より低い優先度(例えば「5」)とする(図36)。
装置制御部13は、まだタスクが残っているため、次のタスクを処理する。
装置制御部13は、静的タスクスケジューリング生成部11に、次のタスクの静的タスクスケジューリングを指示する。ここで、静的タスクスケジューリング生成部11は、コア0上で次にタスクEを実行することが、性能向上に良いと判断したとする。そのため、静的タスクスケジューリング生成部11は、タスクEの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクEとなる。
静的タスクスケジューリングの後、装置制御部13は、優先度生成部12に優先度付与対象タスク(タスクE)の優先度の定義(付与)を指示する。
タスクDの静的タスクスケジューリング時に明らかなように、タスクEの最良実行順序は、タスクDの直後である。この実行順序は、上記の静的タスクスケジューリング結果の実行順序と同じである。このため、優先度生成部12は、タスクEを実行順序変動可能性なしと判断する。そして、優先度生成部12は、タスクEの優先度を、先行するタスクDより下げる処置は行わず、設定可能な最高の優先度(今の場合「3」)とする(図37)。
装置制御部13は、まだタスクが残っているため、次のタスクを処理する。
装置制御部13は、静的タスクスケジューリング生成部11に、次のタスクの静的タスクスケジューリングを指示する。ここで、静的タスクスケジューリング生成部11は、コア0上で次にタスクFを実行することが、性能向上に良いと判断したとする。(なお、配置可能タスクの残りは、タスクFである(図37を参照)。)そのため、静的タスクスケジューリング生成部11は、タスクFの静的タスクスケジューリングを行う。なお、優先度付与対象タスクは、タスクFとなる。
タスクDの静的タスクスケジューリング時に明らかなように、タスクFの最良実行順序は、タスクDの直後である。タスクFは、優先度に基づき、タスクEと入れ替わる可能性がある。つまり、タスクFの最良実行順序は、静的タスクスケジューリング結果の実行順序と異なる。このため、優先度生成部12は、タスクFを実行順序変動可能性ありと判断する。そして、優先度生成部12は、タスクFの優先度として、先行実行タスク(タスクE)の中の最も低い優先度(「3」)より低い優先度(例えば「4」)とする(図38)。
なお、ここまでの説明において、装置制御部13が、静的タスクスケジューリング生成部11と優先度生成部12を、密に連携させることに基づき、タスクスケジューリング装置10Aは、最良実行順序の検出を容易とした。しかし、本実施形態のタスクスケジューリング装置10Aが最良実行順序を検出する手法は、これに限らない。
例えば、予め、実行順序が変わり得る箇所について符号を設定することが想定できる。この設定として、静的タスクスケジューリング生成部11が、最良実行順序で静的タスクスケジューリングされたか否かを示す符号を付与しても良い。このような構成を用いると、本実施形態のタスクスケジューリング装置10Aは、静的タスクスケジューリング生成部11と優先度生成部12との動作を分離して、図31を用いて説明した構成と同様の効果を得ることができる。
このように、第5の実施形態のタスクスケジューリング装置10Aは、既に説明した構成に限らず様々な変形が可能である。
このように、本実施形態のタスクスケジューリング装置10Aは、第1乃至第4の実施形態の効果に加え、最良実行順序の検出を容易にする効果を得ることができる。
その理由は、本実施形態のタスクスケジューリング装置10Aは、装置制御部13を含み、静的タスクスケジューリング生成部11と優先度生成部12との連携を実現しているためである。
あるいは、本実施形態にタスクスケジューリング装置10Aは、実行順序が変わり得る箇所に符号を設定するためである。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2012年 8月13日に出願された日本出願特願2012−179495を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、静的タスクスケジューリングに基づく実行順序を維持した上で、実行順序の維持に必要な優先度の個数を削減するソフトウェア開発ツールに利用可能である。
1 マルチコアシステム
10 タスクスケジューリング装置
10A タスクスケジューリング装置
11 静的タスクスケジューリング生成部
12 優先度生成部
13 装置制御部
20 コア部
30 タスクメモリ
60 タスクスケジューリング装置
121 優先度制御部
122 優先度付与対象タスク保持部
123 優先度保持部
610 CPU
620 ROM
630 RAM
640 記憶装置
650 IO
660 入力機器
670 表示機器
700 記憶媒体

Claims (8)

  1. タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成する静的タスクスケジューリング生成手段と、
    前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する、
    又は、
    前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジュール結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する、
    優先度生成手段とを含む
    タスクスケジューリング装置。
  2. 前記優先度生成手段が、
    実行順序が変化しない場合に、最も低い優先度と同等以上の優先度として設定可能な最高優先度を付与する、
    又は、
    実行順序が変化しない場合に、最も高い優先度と同等以下の優先度として設定可能な最低優先度を付与する
    請求項1に記載のタスクスケジューリング装置。
  3. 前記優先度生成手段が、
    前記最悪実行順序を求める際に、前記優先度付与対象タスクに後続するタスクに従属するタスクを検討対象から除外する
    請求項1又は2記載に記載のタスクスケジューリング装置。
  4. 前記優先度生成手段が、
    優先度を設定する処理の制御する優先度制御手段と、
    前記優先度付与対象タスクがいずれのタスクであるかを示す情報を保持する優先度付与対象タスク保持手段と、
    各タスクに設定された優先度を保持する優先度保持手段部と
    をさらに含む
    請求項1乃至3のいずれか1項に記載のタスクスケジューリング装置。
  5. 前記優先度生成手段が、
    実行順序の変動が外部へ影響するタスクである順序変動禁止タスクの実行順序が変動しない範囲で、実行順序の変動が外部に影響しない前記優先度付与対象タスクに、同一の優先度を用いる請求項1乃至4のいずれか1項に記載のタスクスケジューリング装置。
  6. 前記静的タスクスケジューリング生成手段に1つタスクの静的タスクスケジューリングを行わせ、
    前記優先度生成手段に、前記静的タスクスケジューリングが行われたタスクを前記優先度付与対象タスクとして、優先度を付与させ、
    前記静的タスクスケジューリング生成手段及び前記優先度生成手段の動作を優先度付与対象の全てのタスクについて繰り返すように制御する
    装置制御手段を
    さらに含む請求項1乃至5のいずれか1項に記載のタスクスケジューリング装置。
  7. 複数のコアを含むマルチコアの装置において、
    タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成し、
    前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する、
    又は、
    前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジュール結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する、
    タスクスケジューリング方法。
  8. 複数のコアを含むマルチコアの装置において、
    タスクを複数のコアのいずれのコアに配置するかを示すコア配置と、前記タスクの前記コア上での実行順序とを含むタスクスケジューリングを静的に決定した静的タスクスケジューリング結果を生成する処理と、
    前記静的タスクスケジューリング結果の実行順序をタスクが実行される順に見ていき、優先度を付与するタスクである優先度付与対象タスクが他のタスクより優先して実行されると仮定した場合の最も早く実行の開始が可能となる順序である最良実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最良実行順序で実行された場合の実行開始時刻以降で前記優先度付与対象タスクの静的タスクスケジューリング結果の実行順序での実行開始時刻までに先行して実行する全てのタスクよりも低い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最良実行順序で実行された場合の実行開始時刻以降の前記優先度付与対象タスクに先行する全てのタスクの最も低い優先度と同等若しくは高い優先度を前記優先度付与対象タスクに付与する処理、
    又は、
    前記静的タスクスケジューリング結果の実行順序をタスクが実行される順序の後ろから見ていき、優先度を付与するタスクである優先度付与対象タスクより他のタスクが優先して実行されると仮定した場合の最も遅く実行の開始が可能となる順序である最悪実行順序と、前記静的タスクスケジューリング結果の実行順序とを比較し、実行順序が異なる場合は前記最悪実行順序で実行された場合の実行終了時刻以前で前記優先度付与対象タスクの静的タスクスケジュール結果の実行順序での実行終了時刻に後続して実行する全てのタスクよりも高い優先度を前記優先度付与対象タスクに付与し、実行順序が変化しない場合は前記最悪実行順序で実行された場合の実行終了時刻以前の前記優先度付与対象タスクに後続する全てのタスクの最も高い優先度と同等若しくは低い優先度を前記優先度付与対象タスクに付与する処理とを、
    コンピュータに実行させるプログラム。
JP2014530463A 2012-08-13 2013-07-31 スケジューリング装置、及び、スケジューリング方法 Active JP6156379B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012179495 2012-08-13
JP2012179495 2012-08-13
PCT/JP2013/004623 WO2014027444A1 (ja) 2012-08-13 2013-07-31 スケジューリング装置、及び、スケジューリング方法

Publications (2)

Publication Number Publication Date
JPWO2014027444A1 JPWO2014027444A1 (ja) 2016-07-25
JP6156379B2 true JP6156379B2 (ja) 2017-07-05

Family

ID=50685498

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014530463A Active JP6156379B2 (ja) 2012-08-13 2013-07-31 スケジューリング装置、及び、スケジューリング方法

Country Status (2)

Country Link
JP (1) JP6156379B2 (ja)
WO (1) WO2014027444A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210034189A (ko) * 2019-09-20 2021-03-30 인천대학교 산학협력단 실시간 시스템을 위한 실시간성 분석 장치 및 그 동작 방법
KR20220085578A (ko) * 2020-12-15 2022-06-22 현대오토에버 주식회사 멀티 코어 환경에서 코어 연동 시스템 및 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6365387B2 (ja) * 2015-04-20 2018-08-01 株式会社デンソー 電子制御装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4781089B2 (ja) * 2005-11-15 2011-09-28 株式会社ソニー・コンピュータエンタテインメント タスク割り当て方法およびタスク割り当て装置
US8881158B2 (en) * 2008-11-14 2014-11-04 Nec Corporation Schedule decision device, parallel execution device, schedule decision method, and program
WO2012020478A1 (ja) * 2010-08-10 2012-02-16 富士通株式会社 スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210034189A (ko) * 2019-09-20 2021-03-30 인천대학교 산학협력단 실시간 시스템을 위한 실시간성 분석 장치 및 그 동작 방법
KR20220085578A (ko) * 2020-12-15 2022-06-22 현대오토에버 주식회사 멀티 코어 환경에서 코어 연동 시스템 및 방법
KR102497255B1 (ko) * 2020-12-15 2023-02-06 현대오토에버 주식회사 멀티 코어 환경에서 코어 연동 시스템 및 방법

Also Published As

Publication number Publication date
JPWO2014027444A1 (ja) 2016-07-25
WO2014027444A1 (ja) 2014-02-20

Similar Documents

Publication Publication Date Title
US9965324B2 (en) Process grouping for improved cache and memory affinity
EP2176751B1 (en) Scheduling by growing and shrinking resource allocation
KR101626378B1 (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
US8482571B2 (en) Information processing processing apparatus, method for controlling information processing apparatus, and program
JP6241300B2 (ja) ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
JP4185103B2 (ja) 実行可能プログラムをスケジューリングするためのシステム及び方法
US20130346985A1 (en) Managing use of a field programmable gate array by multiple processes in an operating system
WO2016164155A1 (en) Coalition based memory management
WO2017112149A1 (en) Thread and/or virtual machine scheduling for cores with diverse capabilities
KR20200091789A (ko) Gpu 연산의 동시 실행을 위한 플랫폼
CN110300959B (zh) 用于动态运行时任务管理的方法、系统、设备、装置和介质
WO2016092856A1 (ja) 情報処理装置、情報処理システム、タスク処理方法、及び、プログラムを記憶する記憶媒体
EP3097492B1 (en) Method and apparatus for preventing bank conflict in memory
JP6156379B2 (ja) スケジューリング装置、及び、スケジューリング方法
JP2020095441A (ja) 演算制御装置
JP6372262B2 (ja) 印刷装置、およびプログラム
CN103294449B (zh) 发散操作的预调度重演
US9740530B2 (en) Decreasing the priority of a user based on an allocation ratio
US8615762B2 (en) Multiprocessor system, multiple threads processing method and program
CN112130977B (zh) 一种任务调度方法、装置、设备及介质
US20120137300A1 (en) Information Processor and Information Processing Method
JP7367365B2 (ja) タスク実行管理装置、タスク実行管理方法、および、タスク実行管理プログラム
US9705985B1 (en) Systems and methods for cross protocol automatic sub-operation scheduling
KR101952221B1 (ko) 캐시 부스팅과 경과시간 최소화를 통한 효율적인 멀티태스킹 그래픽처리장치
WO2018198745A1 (ja) 計算資源管理装置、計算資源管理方法、及びコンピュータ読み取り可能な記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160616

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170522

R150 Certificate of patent or registration of utility model

Ref document number: 6156379

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150