JP2011059777A - タスクスケジューリング方法及びマルチコアシステム - Google Patents
タスクスケジューリング方法及びマルチコアシステム Download PDFInfo
- Publication number
- JP2011059777A JP2011059777A JP2009205907A JP2009205907A JP2011059777A JP 2011059777 A JP2011059777 A JP 2011059777A JP 2009205907 A JP2009205907 A JP 2009205907A JP 2009205907 A JP2009205907 A JP 2009205907A JP 2011059777 A JP2011059777 A JP 2011059777A
- Authority
- JP
- Japan
- Prior art keywords
- task
- scheduling
- processor
- tasks
- refills
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】キャッシュメモリの利用効率が低下しない範囲でできるだけ多くのタスクを実行できるように並列性とキャッシュの利用効率とのバランスをとる。
【解決手段】複数のマイクロプロセッサ1と、それらによって共有されるキャッシュメモリ2及びメインメモリ3と、これらの間で行われたリフィルの回数を数えるリフィルカウンタ5とを有するマルチコアシステムにおけるタスクスケジューリング方法であって、実行可能状態のタスクの中からマイクロプロセッサ1を割り当てて実行状態とするタスクを選択するスケジューリングの際に、マイクロプロセッサ1を解放することによって実行状態から待機状態へ移行してから該スケジューリングの時点までに行われたリフィルの回数が所定回数未満である若い世代のタスクが存在するか否かを判断し、若い世代のタスクが存在する場合には、そのいずれかを選択してマイクロプロセッサ1を割り当てる。
【選択図】図4
【解決手段】複数のマイクロプロセッサ1と、それらによって共有されるキャッシュメモリ2及びメインメモリ3と、これらの間で行われたリフィルの回数を数えるリフィルカウンタ5とを有するマルチコアシステムにおけるタスクスケジューリング方法であって、実行可能状態のタスクの中からマイクロプロセッサ1を割り当てて実行状態とするタスクを選択するスケジューリングの際に、マイクロプロセッサ1を解放することによって実行状態から待機状態へ移行してから該スケジューリングの時点までに行われたリフィルの回数が所定回数未満である若い世代のタスクが存在するか否かを判断し、若い世代のタスクが存在する場合には、そのいずれかを選択してマイクロプロセッサ1を割り当てる。
【選択図】図4
Description
本発明は、複数のプロセッサがキャッシュメモリを共有するマルチコアシステム及びそのスループットを向上させるタスクスケジューリング方法に関する。
複数のプロセッサがキャッシュメモリ及びメインメモリを共有するマルチコアシステムにおいては、同時に多数のタスクを実行させることで並列度を高めスループットを向上させることができる。
しかし、多数のタスクを同時に実行すると、時間的局所性や空間的局所性が低下するため、タスクが互いにキャッシュラインを置き換えあってキャッシュの利用効率が低下してしまう。さらに、キャッシュメモリ−メインメモリ間での転送がボトルネックとなってスループットが低下してしまう。このため、キャッシュメモリの利用効率が低下しない程度にできるだけ多くのタスクを実行できるように並列性とキャッシュの利用効率とのバランスをとることが求められている。
特許文献1には、バスのトラフィックを監視してトラフィックを軽減するようにタスクをスケジュールする技術が開示されている。しかし、キャッシュメモリを備えたマルチコアシステムにおいては、新たにタスクを実行することが即座にトラフィックの増加につながるわけではなく、新たに実行するタスクによる時間的局所性に応じてトラフィックの増加量が変動する。したがって、特許文献1に開示される発明は、キャッシュメモリの特性を考慮して並列性とキャッシュの利用効率とのバランスをとることはできない。
特許文献2には、同一のプロセッサで処理されたタスクの一覧を管理することで、キャッシュメモリの無用な置き換えを低減する技術が開示されている。この技術は、個々のプロセッサにキャッシュメモリを持つ場合には有効だが、複数のプロセッサが一つのキャッシュメモリを共有している場合には効果がない。
特許文献3には、タスクがアクセスするメモリ領域を検出し、同一領域をアクセスするタスクをグループにして、同一プロセッサに割り当てることでキャッシュメモリの無用な置き換えを低減する技術が開示されている。この技術は、複数のプロセッサが一つのキャッシュメモリを共有している場合には効果がない。
本発明は、キャッシュメモリの利用効率が低下しない範囲でできるだけ多くのタスクを実行できるように並列性とキャッシュの利用効率とのバランスをとるタスクスケジューリング方法及びマルチコアシステムを提供することを目的とする。
本願発明の一態様によれば、複数のプロセッサと、該プロセッサによって共有されるキャッシュメモリ及びメインメモリと、複数のプロセッサによってキャッシュメモリとメインメモリとの間で行われたデータの授受であるリフィルの回数を数えるリフィルカウンタとを有するマルチコアシステムにおけるタスクスケジューリング方法であって、プロセッサを割り当てる候補である実行可能状態のタスクの中からプロセッサを割り当てて実行状態とするタスクを選択するスケジューリングの際に、プロセッサを解放することによって実行状態から待機状態へ移行してから該スケジューリングの時点までに行われたリフィルの回数が所定回数未満である第1の種別のタスクが実行可能状態のタスクの中に存在するか否かを判断し、第1の種別のタスクが存在する場合には、該第1の種別のタスクのいずれかを選択してプロセッサを割り当てることを特徴とするタスクスケジューリング方法が提供される。
本発明によれば、キャッシュメモリの利用効率が低下しない範囲でできるだけ多くのタスクを実行できるように並列性とキャッシュの利用効率とのバランスをとるタスクスケジューリング方法を提供できるという効果を奏する。
また、本発明によれば、キャッシュメモリの利用効率が低下しない範囲でできるだけ多くのタスクを実行できるように並列性とキャッシュの利用効率とのバランスをとるマルチコアシステムを提供できるという効果を奏する。
以下に添付図面を参照して、本発明の実施の形態にかかるタスクスケジューリング方法及びマルチコアシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
(第1の実施の形態)
図1は、本発明の第1の実施の形態にかかるマルチコアシステムの構成を示す図である。
マルチコアシステムは、複数のマイクロプロセッサ1(1a、1b、1c)がキャッシュメモリ2及びメインメモリ3を共有したマルチプロセッサ構成であり、クロックカウンタ4とキャッシュリフィルカウンタ5とを備えている。
図1は、本発明の第1の実施の形態にかかるマルチコアシステムの構成を示す図である。
マルチコアシステムは、複数のマイクロプロセッサ1(1a、1b、1c)がキャッシュメモリ2及びメインメモリ3を共有したマルチプロセッサ構成であり、クロックカウンタ4とキャッシュリフィルカウンタ5とを備えている。
キャッシュリフィルカウンタ5は、キャッシュメモリ2がメインメモリ3から読み出した回数及びメインメモリ3に書き込んだ回数を計数する。具体的には、キャッシュリフィルカウンタ5は、キャッシュメモリ2からメインメモリ3に対するメモリの読み出し要求又はメモリの書き込み要求が1回送出されるごとに1回カウントする。
マイクロプロセッサ1a、1b、1cはそれぞれスケジューラ11a、11b、11cを備えており、タスクから解放された際にスケジューラ11a、11b、11cを起動してスケジューリングを実行する。すなわち、マイクロプロセッサ1a、1b、1cの各々は、タスクの実行が終了するとスケジューラ11a、11b、11cを起動して、次に自身が実行すべきタスクをメインメモリ3から選択的に取得し、そのタスクに自身を割り当てて実行する。なお、以下の説明においては、特に区別する必要がある場合を除いて、マイクロプロセッサ1及びスケジューラ11の符号に添え字a〜cは付さないものとする。
スケジューラ11は、キャッシュリフィルカウンタ5のカウント値を読み取ることが可能である。また、スケジューラ11は、クロックカウンタ4からカウント値を読み取ることが可能である。
図2に示すように、タスクは「実行状態」、「待機状態」、「実行可能状態」の三つの状態を取りうるものとする。実行状態のタスクとは、現在マイクロプロセッサ1が割り当てられて実行されているタスクである。実行可能状態のタスクとは、スケジューラ11がマイクロプロセッサ1を割り当てれば実行可能なタスクである。待機状態のタスクとは、条件が整わないため実行が保留されているタスクである。
図3に示すように、メインメモリ3内には、スケジューラ11が次に実行すべきタスクを選択するための情報が記録される。すなわち、マイクロプロセッサ1において実行中ではないタスクが「実行可能状態」と「待機状態」とに分類されて格納されており、実行可能状態のタスクは、実行可能状態に遷移した順番にディスパッチキューとして整列している。各タスクには、それが待機状態に遷移した時点でのキャッシュリフィルカウンタ5の値Wtが関連付けられて格納されている。Wtはスケジューリング時に「若い世代のタスク」(特許請求の範囲における「第1の種別のタスク」)、「老いた世代のタスク」(特許請求の範囲における「第2の種別のタスク」)を判定する際に参照される。また、後述するように、メインメモリ3には、前回のスケジューリング時のクロックカウンタ4のカウント値Tprevと、前回のスケジューリング時のキャッシュリフィルカウンタ5のカウント値Cprevとが格納されている。
スケジューラ11には、スケジューリングを行うパラメータとして、世代閾値Gthとキャッシュ閾値αとの二つを設定する。世代閾値Gthは、その時点でのキャッシュ容量に基づいて設定される。キャッシュ利用閾値αは、単位時間当たりのリフィル回数の閾値であり、キャッシュメモリ2とメインメモリ3との間のスループットに基づいて設定される。すなわち、スケジューラ11は、システムの特性に合わせて上記二つのパラメータによって調整される。
図4に、スケジューラ11がスケジューリングを実行する(次にマイクロプロセッサ1を割り当てるべきタスクを選択する)際の動作の流れを示す。
スケジューラ11は、実行可能状態のタスクの中から次にマイクロプロセッサ1に実行させるタスクを選択する際に、現在のキャッシュリフィルカウンタ5の値(Ccurr)及び現在のクロックカウンタ4の値(Tcurr)を読み取る(ステップS1)。
次に、スケジューラ11は、実行可能状態のタスクについて、Wtの値をメインメモリ3から読み出す(ステップS2)。そして、読み出したWtの値と現在のキャッシュリフィルカウンタ5の値(Ccurr)との差を世代閾値Gthと比較する(ステップS3)。Ccurr-Wt<Gthであるタスクが存在するならば(ステップS3/Yes)、スケジューラ11は、そのタスクを「若い世代のタスク」と判定し(ステップS4)、直ちに選択して、マイクロプロセッサ1を割り当てる(ステップS5)。一方、実行可能状態のタスクがCcurr-Wt>=Gthであった場合(ステップS3/No)、スケジューラ11は、それらのタスクを「老いた世代のタスク」と判定する(ステップS6)。「老いた世代のタスク」と判定した場合は、ステップS2に戻って他の実行可能状態のタスクにも同様の処理を行い、あるタスクを若い世代と判定してマイクロプロセッサ1を割り当てるか、全てのタスクを老いた世代と判定するまで処理を繰り返す。
スケジューラ11は、実行可能状態のタスクの中から次にマイクロプロセッサ1に実行させるタスクを選択する際に、現在のキャッシュリフィルカウンタ5の値(Ccurr)及び現在のクロックカウンタ4の値(Tcurr)を読み取る(ステップS1)。
次に、スケジューラ11は、実行可能状態のタスクについて、Wtの値をメインメモリ3から読み出す(ステップS2)。そして、読み出したWtの値と現在のキャッシュリフィルカウンタ5の値(Ccurr)との差を世代閾値Gthと比較する(ステップS3)。Ccurr-Wt<Gthであるタスクが存在するならば(ステップS3/Yes)、スケジューラ11は、そのタスクを「若い世代のタスク」と判定し(ステップS4)、直ちに選択して、マイクロプロセッサ1を割り当てる(ステップS5)。一方、実行可能状態のタスクがCcurr-Wt>=Gthであった場合(ステップS3/No)、スケジューラ11は、それらのタスクを「老いた世代のタスク」と判定する(ステップS6)。「老いた世代のタスク」と判定した場合は、ステップS2に戻って他の実行可能状態のタスクにも同様の処理を行い、あるタスクを若い世代と判定してマイクロプロセッサ1を割り当てるか、全てのタスクを老いた世代と判定するまで処理を繰り返す。
実行可能状態のタスクが全て「老いた世代のタスク」であったならば、スケジューラ11は、Ccurr-Cprev<α・(Tcurr-Tprev)が成立するか否か(前回のスケジュール後の単位時間当たりのリフィル回数{(Ccurr-Cprev)/(Tcurr-Tprev)}がキャッシュ利用閾値α未満であるか否か)を判定する(ステップS7)。Ccurr-Cprev<α・(Tcurr-Tprev)が成立する場合は(ステップS7/Yes)、スケジューラ11は、「老いた世代のタスク」がスケジュール可能であると判断し、実行可能状態のタスクの中で最初に実行可能状態となったタスク(換言するとディスパッチキューの先頭にあるタスク)にマイクロプロセッサ1を割り当てる(ステップS8)。Ccurr-Cprev<α・(Tcurr-Tprev)が成立しない場合は(ステップS7/No)、スケジューラ11は、「老いた世代のタスク」をスケジュールできないと判断し、次回のスケジュールのためにCcurrをCprevに、TcurrをTprevに保存する(ステップS9)。
「若い世代のタスク」又は「老いた世代のタスク」にマイクロプロセッサ1を割り当てた場合も、スケジューラ11は、次回のスケジュールのためにCcurrをCprevに、TcurrをTprevに代入し、メインメモリ3に保存する(ステップS9)。
以上の動作により、キャッシュリフィルが必要となる可能性が高い「老いた世代のタスク」は、キャッシュの利用度が低い場合にのみスケジュールされてマイクロプロセッサ1が割り当てられる。
このように、本実施の形態にかかるマルチコアシステムによれば、待機状態に遷移した後のキャッシュリフィル回数が所定数以上である「老いた世代のタスク」については、単位時間当たりのキャッシュリフィル回数が、キャッシュメモリとメインメモリとの間のスループットに基づいて設定されるキャッシュ利用閾値α未満である場合にのみ、スケジュール可能であると判断する。すなわち、タスクの実行世代をキャッシュリフィルカウンタの値を使用して判定し、世代別にスケジュール方法を変更する。これにより、キャッシュメモリのヒット率を維持できる範囲で同時に実行するタスクを最大化できる。換言すると、キャッシュメモリの利用効率が低下しない範囲でできるだけ多くのタスクを実行できるように並列性とキャッシュの利用効率とのバランスをとることができる。
なお、図1ではクロックカウンタ4を備え、前回のスケジューリング時のクロックカウンタ4のカウンタ値と今回のスケジューリング時のクロックカウンタ4のカウンタ値との差によって、前回のスケジューリングからの経過時間を計測する構成を例として示したが、クロックカウンタ4の代わりにタイマを設けても同様の動作を行えることは言うまでも無い。
(第2の実施の形態)
本発明の第2の実施の形態にかかるマルチコアシステムの構成は、第1の実施の形態と同様である。
本発明の第2の実施の形態にかかるマルチコアシステムの構成は、第1の実施の形態と同様である。
図5に、本発明の第2の実施の形態にかかるマルチコアシステムのスケジュール動作の流れを示す。
スケジューラ11は、実行可能状態のタスクの中から次にマイクロプロセッサ1に実行させるタスクを選択する際に、現在のキャッシュリフィルカウンタ5の値(Ccurr)及び現在のクロックカウンタ4の値(Tcurr)を読み取る(ステップS11)。そして、スケジューラ11は、Ccurr-Cprev<α・(Tcurr-Tprev)が成立するか否か(前回のスケジュール後の単位時間当たりのリフィル回数{(Ccurr-Cprev)/(Tcurr-Tprev)}がキャッシュ利用閾値α未満であるか否か)を判定する(ステップS12)。
スケジューラ11は、実行可能状態のタスクの中から次にマイクロプロセッサ1に実行させるタスクを選択する際に、現在のキャッシュリフィルカウンタ5の値(Ccurr)及び現在のクロックカウンタ4の値(Tcurr)を読み取る(ステップS11)。そして、スケジューラ11は、Ccurr-Cprev<α・(Tcurr-Tprev)が成立するか否か(前回のスケジュール後の単位時間当たりのリフィル回数{(Ccurr-Cprev)/(Tcurr-Tprev)}がキャッシュ利用閾値α未満であるか否か)を判定する(ステップS12)。
Ccurr-Cprev<α・(Tcurr-Tprev)が成立する場合は(ステップS12/Yes)、スケジューラ11は、実行可能状態のタスクについて、Wtの値をメインメモリ3から読み出す(ステップS13)。そして、読み出したWtの値と現在のキャッシュリフィルカウンタ5の値(Ccurr)との差を世代閾値Gthと比較する(ステップS14)。Ccurr-Wt<Gthであるタスクが存在するならば(ステップS14/Yes)、スケジューラ11は、そのタスクを「若い世代のタスク」と判定し(ステップS15)、直ちに選択して、マイクロプロセッサ1を割り当てる(ステップS16)。一方、実行可能状態のタスクがCcurr-Wt>=Gthであった場合(ステップS3/No)、スケジューラ11は、それらのタスクを「老いた世代のタスク」と判定する(ステップS17)。「老いた世代のタスク」と判定した場合は、ステップS13に戻って他の実行可能状態のタスクにも同様の処理を行い、あるタスクを若い世代と判定してマイクロプロセッサ1を割り当てるか、全てのタスクを老いた世代と判定するまで処理を繰り返す。
実行可能状態のタスクが全て「老いた世代のタスク」であったならば、実行可能状態のタスクのうち最初に実行可能状態となったタスク(換言するとディスパッチキューの先頭にあるタスク)にマイクロプロセッサ1を割り当てる(ステップS18)。
Ccurr-Cprev<α・(Tcurr-Tprev)が成立しない場合は(ステップS12/No)、スケジューラ11は、タスクをスケジュールできないと判断し、次回のスケジュールのためにCcurrをCprevに、TcurrをTprevに保存する(ステップS19)。
「若い世代のタスク」又は「老いた世代のタスク」にマイクロプロセッサ1を割り当てた場合も、スケジューラ11は、次回のスケジュールのためにCcurrをCprevに、TcurrをTprevに代入し、メインメモリ3に保存する(ステップS19)。
本実施の形態においては、先に単位時間当たりのリフィル回数がキャッシュ利用閾値α未満であるか否かの判定を行い(ステップS12)、閾値未満である場合に実行可能状態のタスクについて若い世代であるか老いた世代であるかの判定を行う(ステップS14)。すなわち、本実施の形態においては、単位時間当たりのリフィル回数がキャッシュ利用閾値α以上である場合には、世代の老若に関わらすタスクにマイクロプロセッサを割り当てない。
このため、第1の実施の形態と比較して、各マイクロプロセッサの稼働率は低くなるものの、キャッシュリフィル回数の増加を抑制する効果はより高くなる。従って、マイクロプロセッサの稼働率とリフィル回数の増加抑制とのどちらを優先するかに応じて、どちらの実施の形態を適用するかを決めるようにすれば良い。一例を挙げると、実行の遅れが許容されないタスク(リアルタイム性が要求されるストリーミング処理などのタスク)を実行する際には、本実施の形態のスケジュール動作を適用することが好ましい。
(第3の実施の形態)
図6は、本発明の第3の実施の形態にかかるマルチコアシステムの構成を示す図である。第1の実施の形態にかかるマルチコアシステムとは、クロックカウンタ4を備えていない点で相違する。
図7に、本実施の形態にかかるマルチコアシステムのスケジューラ11がスケジューリングを実行する際の動作の流れを示す。スケジューリングの際に、実行可能状態のタスクについて若い世代であるか否かを判定し(ステップS23)、若い世代のタスクが存在するならば(ステップS24)、優先的にマイクロプロセッサ1を割り当てる(ステップS25)点は第1の実施の形態と同様である。ただし、本実施の形態においては、若い世代のタスクが存在しない場合には、単位時間当たりのリフィル回数に関わらず老いた世代のタスクにプロセッサ1を割り当てる(ステップS27)。
これにより、老いた世代のタスクが、マイクロプロセッサ1が割り当てられることなく長時間放置されることを防止できる。
図6は、本発明の第3の実施の形態にかかるマルチコアシステムの構成を示す図である。第1の実施の形態にかかるマルチコアシステムとは、クロックカウンタ4を備えていない点で相違する。
図7に、本実施の形態にかかるマルチコアシステムのスケジューラ11がスケジューリングを実行する際の動作の流れを示す。スケジューリングの際に、実行可能状態のタスクについて若い世代であるか否かを判定し(ステップS23)、若い世代のタスクが存在するならば(ステップS24)、優先的にマイクロプロセッサ1を割り当てる(ステップS25)点は第1の実施の形態と同様である。ただし、本実施の形態においては、若い世代のタスクが存在しない場合には、単位時間当たりのリフィル回数に関わらず老いた世代のタスクにプロセッサ1を割り当てる(ステップS27)。
これにより、老いた世代のタスクが、マイクロプロセッサ1が割り当てられることなく長時間放置されることを防止できる。
若い世代のタスクを実行する上で必要なデータは、キャッシュメモリ2上に保持されている可能性が高い。このため、若い世代のタスクの有無を確認し、存在する場合には優先的にマイクロプロセッサ1を割り当てることで、キャッシュメモリの利用効率が低下しない範囲でできるだけ多くのタスクを実行できるように並列性とキャッシュの利用効率とのバランスをとることが可能となる。
(第4の実施の形態)
図8は、本発明の第4の実施の形態にかかるマルチコアシステムの構成を示す図である。第1の実施の形態にかかるマルチコアシステムとは、キャッシュリフィルカウンタ5を備えていない点で相違する。
図9に、本実施の形態にかかるマルチコアシステムのスケジューラ11がスケジューリングを実行する際の動作の流れを示す。スケジューリングの際に、単位時間当たりのリフィル回数がキャッシュ利用閾値α未満であるか否かの判定を行い(ステップS32)、閾値未満である場合に実行可能状態のタスクにマイクロプロセッサ1を割り当てる(ステップS33)点については第2の実施の形態と同様であるが、本実施の形態においては、実行可能状態のタスクに関して、世代の老若についての判断は行わない。
このため、待機状態となってから時間が経過したタスクが、マイクロプロセッサ1が割り当てられることなく放置されることを防止できる。
図8は、本発明の第4の実施の形態にかかるマルチコアシステムの構成を示す図である。第1の実施の形態にかかるマルチコアシステムとは、キャッシュリフィルカウンタ5を備えていない点で相違する。
図9に、本実施の形態にかかるマルチコアシステムのスケジューラ11がスケジューリングを実行する際の動作の流れを示す。スケジューリングの際に、単位時間当たりのリフィル回数がキャッシュ利用閾値α未満であるか否かの判定を行い(ステップS32)、閾値未満である場合に実行可能状態のタスクにマイクロプロセッサ1を割り当てる(ステップS33)点については第2の実施の形態と同様であるが、本実施の形態においては、実行可能状態のタスクに関して、世代の老若についての判断は行わない。
このため、待機状態となってから時間が経過したタスクが、マイクロプロセッサ1が割り当てられることなく放置されることを防止できる。
単位時間当たりのリフィル回数がキャッシュ利用閾値α未満である場合には、キャッシュのリフィルを要するタスクを割り当てたとしても、キャッシュメモリ2−メインメモリ3間でのキャッシュラインの転送がボトルネックとなってスループットが低下する可能性は低い。このため、単位時間当たりのリフィル回数がキャッシュ利用閾値α未満である場合には任意のキャッシュにマイクロプロセッサ1を割り当てることで、キャッシュメモリの利用効率が低下しない範囲でできるだけ多くのタスクを実行できるように並列性とキャッシュの利用効率とのバランスをとることが可能となる。
なお、上記各実施の形態は本発明の好適な実施の一例であり、本発明はこれらに限定されることなく様々な変形が可能である。
1 マイクロプロセッサ、2 キャッシュメモリ、3 メインメモリ、4 クロックカウンタ、5 キャッシュリフィルカウンタ、11 スケジューラ。
Claims (5)
- 複数のプロセッサと、該プロセッサによって共有されるキャッシュメモリ及びメインメモリと、前記複数のプロセッサによって前記キャッシュメモリと前記メインメモリとの間で行われたデータの授受であるリフィルの回数を数えるリフィルカウンタとを有するマルチコアシステムにおけるタスクスケジューリング方法であって、
前記プロセッサを割り当てる候補である実行可能状態のタスクの中から前記プロセッサを割り当てて実行状態とするタスクを選択するスケジューリングの際に、前記プロセッサを解放することによって前記実行状態から待機状態へ移行してから該スケジューリングの時点までに行われた前記リフィルの回数が所定回数未満である第1の種別のタスクが前記実行可能状態のタスクの中に存在するか否かを判断し、
前記第1の種別のタスクが存在する場合には、該第1の種別のタスクのいずれかを選択して前記プロセッサを割り当てることを特徴とするタスクスケジューリング方法。 - 前記スケジューリングの際に、実行可能状態のタスクの全てが、前記待機状態となってから前記スケジューリングの時点までに行われたリフィル回数が所定回数以上の第2の種別のタスクである場合には、該スケジューリングの時点までの所定の期間に行われた前記リフィルの回数が所定の閾値未満であるか否かを判断し、
前記閾値未満である場合には、前記第2の種別のタスクのいずれかに前記プロセッサを割り当て、前記閾値以上である場合には、いずれのタスクにも前記プロセッサを割り当てないことを特徴とする請求項1記載のタスクスケジューリング方法。 - 複数のプロセッサと、該プロセッサによって共有されるキャッシュメモリ及びメインメモリと、前記プロセッサによって前記キャッシュメモリと前記メインメモリとの間で行われたデータの授受であるリフィルの回数を数えるリフィルカウンタとを有するマルチコアシステムにおけるタスクスケジューリング方法であって、
前記プロセッサを割り当てる候補である実行可能状態のタスクの中から前記プロセッサを割り当てて実行状態とするタスクを選択するスケジューリングの際に、該スケジューリングの時点までの所定の期間に行われた前記リフィルの回数が所定の閾値未満であるか否かを判断し、
前記閾値未満である場合には、前記実行可能状態のタスクのいずれかを選択して前記プロセッサを割り当て、前記閾値以上である場合には、いずれのタスクにも前記プロセッサを割り当てないことを特徴とするタスクスケジューリング方法。 - 前記実行可能状態のタスクの中から前記プロセッサを割り当てるタスクを選択する際に、前記プロセッサを解放することによって前記実行状態から待機状態へ移行してから該スケジューリングの時点までに行われた前記リフィルの回数が所定回数未満である第1の種別のタスクが前記実行可能状態のタスクの中に存在するか否かを判断し、
前記第1の種別のタスクが存在する場合には、該第1の種別のタスクのいずれかを選択して前記プロセッサを割り当て、
存在しない場合には、前記待機状態となってから前記スケジューリングの時点までに行われたリフィル回数が所定回数以上の第2の種別のタスクのいずれかに前記プロセッサを割り当てることを特徴とする請求項3記載のタスクスケジューリング方法。 - 複数のプロセッサがキャッシュメモリ及びメインメモリを共有するマルチプロセッサ構成のマルチコアシステムであって、
前記複数のプロセッサによって前記キャッシュメモリと前記メインメモリとの間で行われたデータの授受であるリフィルの回数を計測するリフィルカウンタと、
前記各プロセッサ上で動作し、前記プロセッサを割り当てる候補である実行可能状態のタスクの中から前記プロセッサを割り当てて実行状態とするタスクを選択するスケジューリングを行うスケジューラとを有し、
前記スケジューラは、
前記スケジューリングの際に、前記プロセッサを解放することによって前記実行状態から待機状態へ移行してから該スケジューリングの時点までに行われた前記リフィルの回数が所定回数未満である第1の種別のタスクが前記実行可能状態のタスクの中に存在するか否かを判断する手段と、
前記第1の種別のタスク存在する場合に、該第1の種別のタスクのいずれかを選択して前記プロセッサを割り当てる手段と、
前記スケジューリングの時点での実行可能状態の全てのタスクが、前記待機状態となってから前記スケジューリングの時点までに行われたリフィル回数が所定回数以上である第2の種別のタスクの場合に、該スケジューリングの時点までの所定の期間に行われた前記リフィルの回数が所定の閾値未満であるか否かを判断する手段と、
前記所定の期間に行われたリフィルの回数が所定の閾値以上である場合には、いずれのタスクにも前記プロセッサを割り当てず、前記所定の期間に行われたリフィルの回数が閾値未満である場合にのみ、前記第2の種別のタスクのいずれかに前記プロセッサを割り当てる手段とを備えることを特徴とするマルチコアシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009205907A JP2011059777A (ja) | 2009-09-07 | 2009-09-07 | タスクスケジューリング方法及びマルチコアシステム |
US12/768,012 US20110061058A1 (en) | 2009-09-07 | 2010-04-27 | Task scheduling method and multi-core system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009205907A JP2011059777A (ja) | 2009-09-07 | 2009-09-07 | タスクスケジューリング方法及びマルチコアシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011059777A true JP2011059777A (ja) | 2011-03-24 |
Family
ID=43648654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009205907A Pending JP2011059777A (ja) | 2009-09-07 | 2009-09-07 | タスクスケジューリング方法及びマルチコアシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20110061058A1 (ja) |
JP (1) | JP2011059777A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281495A (zh) * | 2014-10-13 | 2015-01-14 | 湖南农业大学 | 多核处理器共享高速缓存任务调度方法 |
JPWO2013001613A1 (ja) * | 2011-06-28 | 2015-02-23 | 富士通株式会社 | スケジューリング方法およびシステム |
JP2015525940A (ja) * | 2012-09-28 | 2015-09-07 | インテル コーポレイション | 不揮発性メモリにコードをキャッシュする方法、システムおよび装置 |
CN115981829A (zh) * | 2023-03-20 | 2023-04-18 | 睿至科技集团有限公司 | 一种物联网中的调度方法及*** |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8788601B2 (en) * | 2011-05-26 | 2014-07-22 | Stratify, Inc. | Rapid notification system |
KR20130115574A (ko) * | 2012-04-12 | 2013-10-22 | 삼성전자주식회사 | 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치 |
TWI533211B (zh) * | 2013-11-14 | 2016-05-11 | 財團法人資訊工業策進會 | 用於任務排程之電腦系統,方法及電腦可讀取記錄媒體 |
KR102354848B1 (ko) | 2014-11-28 | 2022-01-21 | 삼성전자주식회사 | 캐시 메모리 장치 및 이를 포함하는 전자 시스템 |
US10169248B2 (en) | 2016-09-13 | 2019-01-01 | International Business Machines Corporation | Determining cores to assign to cache hostile tasks |
US10204060B2 (en) * | 2016-09-13 | 2019-02-12 | International Business Machines Corporation | Determining memory access categories to use to assign tasks to processor cores to execute |
CN108287751B (zh) * | 2017-01-09 | 2022-02-01 | 阿里巴巴集团控股有限公司 | 任务执行方法及装置、分布式*** |
CN109144691B (zh) * | 2018-07-13 | 2021-08-20 | 哈尔滨工程大学 | 一种面向多核处理器的任务调度分配方法 |
CN112486654A (zh) * | 2020-12-08 | 2021-03-12 | 浙江诺诺网络科技有限公司 | 一种异步慢任务调度方法、装置、设备及介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4633387A (en) * | 1983-02-25 | 1986-12-30 | International Business Machines Corporation | Load balancing in a multiunit system |
JP3155537B2 (ja) * | 1989-01-23 | 2001-04-09 | 株式会社日立製作所 | 実記憶管理方法 |
US5317738A (en) * | 1992-02-18 | 1994-05-31 | Ncr Corporation | Process affinity scheduling method and apparatus |
JP2002055966A (ja) * | 2000-08-04 | 2002-02-20 | Internatl Business Mach Corp <Ibm> | マルチプロセッサ・システム、マルチプロセッサ・システムに用いるプロセッサ・モジュール及びマルチプロセッシングでのタスクの割り当て方法 |
US7167916B2 (en) * | 2002-08-30 | 2007-01-23 | Unisys Corporation | Computer OS dispatcher operation with virtual switching queue and IP queues |
JP2008276331A (ja) * | 2007-04-25 | 2008-11-13 | Toshiba Corp | マルチプロセッサの制御装置及び方法 |
US8347301B2 (en) * | 2008-06-30 | 2013-01-01 | Intel Corporation | Device, system, and method of scheduling tasks of a multithreaded application |
US8725953B2 (en) * | 2009-01-21 | 2014-05-13 | Arm Limited | Local cache power control within a multiprocessor system |
-
2009
- 2009-09-07 JP JP2009205907A patent/JP2011059777A/ja active Pending
-
2010
- 2010-04-27 US US12/768,012 patent/US20110061058A1/en not_active Abandoned
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2013001613A1 (ja) * | 2011-06-28 | 2015-02-23 | 富士通株式会社 | スケジューリング方法およびシステム |
JP2015525940A (ja) * | 2012-09-28 | 2015-09-07 | インテル コーポレイション | 不揮発性メモリにコードをキャッシュする方法、システムおよび装置 |
CN104281495A (zh) * | 2014-10-13 | 2015-01-14 | 湖南农业大学 | 多核处理器共享高速缓存任务调度方法 |
CN104281495B (zh) * | 2014-10-13 | 2017-04-26 | 湖南农业大学 | 多核处理器共享高速缓存任务调度方法 |
CN115981829A (zh) * | 2023-03-20 | 2023-04-18 | 睿至科技集团有限公司 | 一种物联网中的调度方法及*** |
Also Published As
Publication number | Publication date |
---|---|
US20110061058A1 (en) | 2011-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2011059777A (ja) | タスクスケジューリング方法及びマルチコアシステム | |
US9952905B2 (en) | Methods and systems to identify and migrate threads among system nodes based on system performance metrics | |
JP4606142B2 (ja) | スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム | |
US8234431B2 (en) | Interrupt masking for multi-core processors | |
KR101686010B1 (ko) | 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법 | |
WO2015070789A1 (en) | Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address (es) | |
US9858115B2 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium | |
KR101622168B1 (ko) | 실시간 스케쥴링 방법 및 이를 이용한 중앙처리장치 | |
US20150242254A1 (en) | Method and apparatus for processing message between processors | |
JP5347451B2 (ja) | マルチプロセッサシステム、競合回避プログラム及び競合回避方法 | |
JP2008084009A (ja) | マルチプロセッサシステム | |
US10089155B2 (en) | Power aware work stealing | |
TWI503742B (zh) | 多核心處理器系統及其排程方法 | |
JP2008123157A (ja) | プロセッサ及び割込み制御方法 | |
JP5605131B2 (ja) | ジョブスケジューリングプログラム,方法,および装置 | |
US10545890B2 (en) | Information processing device, information processing method, and program | |
US20230127112A1 (en) | Sub-idle thread priority class | |
KR20210084620A (ko) | 프로세서에서의 여유시간 인식, 동적 우선순위 변경 | |
CN114500401B (zh) | 一种应对突发流量的资源调度方法和*** | |
Mutlu et al. | Parallelism-aware batch scheduling: Enabling high-performance and fair shared memory controllers | |
WO2024041625A1 (zh) | 多线程处理器的指令分发方法、装置和存储介质 | |
JP6311330B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
Kim et al. | Using DVFS and task scheduling algorithms for a hard real-time heterogeneous multicore processor environment | |
WO2015096031A1 (zh) | 线程共享资源分配方法及装置 | |
JP2015036959A (ja) | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 |