JPWO2012098683A1 - スケジューリング方法およびスケジューリングシステム - Google Patents

スケジューリング方法およびスケジューリングシステム Download PDF

Info

Publication number
JPWO2012098683A1
JPWO2012098683A1 JP2012553537A JP2012553537A JPWO2012098683A1 JP WO2012098683 A1 JPWO2012098683 A1 JP WO2012098683A1 JP 2012553537 A JP2012553537 A JP 2012553537A JP 2012553537 A JP2012553537 A JP 2012553537A JP WO2012098683 A1 JPWO2012098683 A1 JP WO2012098683A1
Authority
JP
Japan
Prior art keywords
cpu
application
processor
clock frequency
frequency
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
Application number
JP2012553537A
Other languages
English (en)
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2012098683A1 publication Critical patent/JPWO2012098683A1/ja
Pending legal-status Critical Current

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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Abstract

マルチコアプロセッサシステム(100)において、スケジューラ(102)は、アプリ(#0)が起動された場合、CPU(#0)にアプリ(#0)を割り当てる。CPU(#0)は、アプリ(#0)が割り当てられた結果、アプリ(#0)の実行を開始する。スケジューラ(102)は、CPU(#1)に対して、各CPU(#0)〜CPU(#N)の負荷の計算を指示する。スケジューラ(102)は、CPU(#0)〜CPU(#N)のうち負荷が最小のCPU(#i)にアプリ(#0)を割り当てる。この結果、アプリ(#0)のコンテキスト情報がCPU(#0)のキャッシュに退避され、該コンテキスト情報がCPU(#i)のキャッシュに転送される。CPU(#i)は、アプリ(#0)が割り当てられた結果、アプリ(#0)の実行を開始する。

Description

本発明は、スケジューリング方法およびスケジューリングシステムに関する。
近年、多くの情報機器において、高性能および低消費電力に対する要求は大きく、高性能および低消費電力化を実現するための手段として、マルチコアプロセッサを用いたシステム開発が行われるようになってきた。
関連する先行技術としては、例えば、マイクロコンピュータにおけるタスクの切り替えに関するものがある(例えば、下記特許文献1,2参照。)。また、複数のプロセッサコアの電力制御に関する技術がある(例えば、下記特許文献3参照。)。
特開2004−272894号公報 特開平10−207717号公報 特許第4413924号公報
しかしながら、従来のマルチコアプロセッサシステムでは、アプリケーションの起動時に、割当先となるプロセッサをスケジューリングした後、アプリケーションの実行を開始する。このため、従来のマルチコアプロセッサシステムは、シングルコアでアプリケーションを実行する場合に比べて、起動時間の長期化を招くという問題があった。
本発明は、上述した従来技術による問題点を解消するため、アプリケーションの起動時間の高速化を図ることができるスケジューリング方法およびスケジューリングシステムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、第1プロセッサおよび第2プロセッサを含む複数のプロセッサを管理するスケジューラが、アプリケーションが起動されたときに、前記アプリケーションを前記第1プロセッサに割り当て、前記第2プロセッサに前記複数のプロセッサの負荷の計算を指示し、前記負荷に基づいて、前記アプリケーションの割り当てを維持し、または、前記アプリケーションの割り当てを変更するスケジューリング方法が提案される。
また、上述した課題を解決し、目的を達成するため、本発明の一側面によれば、第1プロセッサおよび第2プロセッサを含む複数のプロセッサと、前記複数のプロセッサを管理するスケジューラとを含み、前記第1プロセッサは、起動されたアプリケーションの実行を開始し、前記第2プロセッサは、前記複数のプロセッサの負荷の計算を指示し、前記スケジューラは、前記負荷に基づいて、前記アプリケーションの割り当てを前記第1プロセッサに維持しまたは他のプロセッサに変更するスケジューリングシステムが提案される。
本発明の一側面によれば、アプリケーションの起動時間の高速化を図ることができるという効果を奏する。
図1は、実施の形態にかかるマルチコアプロセッサシステムのスケジューリング処理の一実施例を示す説明図である。 図2は、実施の形態にかかるマルチコアプロセッサシステム構成の一例を示す説明図である。 図3は、分周回路の一例を示す説明図である。 図4は、実施の形態にかかるスケジューラの機能的構成を示すブロック図である。 図5は、実施の形態にかかるスケジューラによるスケジューリング処理手順の一例を示すフローチャート(その1)である。 図6は、実施の形態にかかるスケジューラによるスケジューリング処理手順の一例を示すフローチャート(その2)である。 図7は、CPU#1の割当先決定処理手順の一例を示すフローチャートである。 図8は、CPU#2の実行処理手順の一例を示すフローチャートである。 図9は、実施の形態にかかるマルチコアプロセッサシステムの一実施例を示す説明図である。
以下に添付図面を参照して、この発明にかかるスケジューリング方法およびスケジューリングシステムの実施の形態を詳細に説明する。本実施の形態において、スケジューリングシステムは、コアが複数搭載されたマルチコアプロセッサを含むマルチコアプロセッサシステムである。マルチコアプロセッサは、コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。ただし、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
(マルチコアプロセッサシステム100のスケジューリング処理の一実施例)
図1は、実施の形態にかかるマルチコアプロセッサシステムのスケジューリング処理の一実施例を示す説明図である。図1において、マルチコアプロセッサシステム100は、CPU(Central Processing Unit)#0〜CPU#Nと、メモリ101と、を含むスケジューリングシステムである。
CPU#0は、OS(Operating System)#0を実行し、マルチコアプロセッサシステム100の全体の制御を司る。OS#0は、マスタOSであり、アプリケーションをどのCPUに割り当てるかを制御するスケジューラ102を備えている。また、CPU#0は、割り当てられたアプリケーションを実行する。
CPU#1〜CPU#Nは、それぞれOS#1〜OS#Nを実行し、各OSに割り当てられたアプリケーションを実行する。OS#1〜OS#Nは、スレーブOSである。メモリ101は、CPU#0〜#Nに共有される共有メモリである。なお、アプリケーションが割り当てられているCPUとアプリケーションが割り当てられているOSとは同一の意味である。
以下、アプリ(アプリケーション)#0が起動された場合を例に挙げて、マルチコアプロセッサシステム100のスケジューリング処理手順について説明する。
(1)マルチコアプロセッサシステム100において、スケジューラ102は、アプリ#0が起動された場合、CPU#0にアプリ#0を割り当てる。
(2)CPU#0は、アプリ#0が割り当てられた結果、アプリ#0の実行を開始する。具体的には、例えば、CPU#0が、アプリ#0の実行情報をメモリ101から読み出して、アプリ#0の実行を開始する。実行情報は、例えば、アプリ#0の命令コードである。
(3)スケジューラ102は、CPU#1に対して、各CPU#0〜CPU#Nの負荷の計算を指示する。この結果、CPU#1により、各CPU#0〜CPU#Nの負荷が計算される。ここでは、各CPU#0〜CPU#Nの負荷が計算された結果、CPU#iの負荷が最小の場合を例に挙げて説明する。
(4)スケジューラ102は、各CPU#0〜CPU#Nの負荷の計算結果に基づいて、アプリ#0の割当先となるCPUを決定する。具体的には、例えば、スケジューラ102が、CPU#1〜CPU#Nのうち、少なくともCPU#0よりも負荷が小さいCPUを、アプリ#0の割当先となるCPUに決定する。
ここでは、CPU#0〜CPU#Nのうち負荷が最小のCPU#iにアプリ#0が割り当てられている。この結果、CPU#0によるアプリ#0の実行が停止される。この際、アプリ#0のコンテキスト情報がCPU#0のキャッシュに退避され、該コンテキスト情報がCPU#iのキャッシュに転送される。
(5)CPU#iは、アプリ#0が割り当てられた結果、アプリ#0の実行を開始する。具体的には、例えば、CPU#iが、アプリ#0の実行情報をメモリ101から読み出し、CPU#iのキャッシュに転送されたアプリ#0のコンテキスト情報を用いて、アプリ#0の実行を開始する。
以上説明した実施の形態にかかるマルチコアプロセッサシステム100によれば、新たに起動されたアプリ#0の割当先の決定に先立って、制御用のCPU#0によって暫定的にアプリ#0の実行を開始することができる。そして、CPU#1によってアプリ#0の割当先が決定されると、CPU#0から割当先のCPU#iにアプリ#0を引き渡すことができる。これにより、CPU#0がアプリ#0をどのCPUに割り当てるかを決定した後に割当先のCPUi#によってアプリ#0の実行を開始する場合に比べて、アプリ#0の起動時間の高速化を図ることができる。
(マルチコアプロセッサシステム100のシステム構成)
つぎに、図1に示したマルチコアプロセッサシステム100のシステム構成について説明する。ここでは、マルチコアプロセッサシステム100に含まれるCPUが、CPU#0、CPU#1、CPU#2およびCPU#3の場合を例に挙げて説明する(N=3)。
図2は、実施の形態にかかるマルチコアプロセッサシステム構成の一例を示す説明図である。図2において、マルチコアプロセッサシステム100は、CPU#0と、CPU#1と、CPU#2と、CPU#3と、メモリ101と、1次キャッシュ201と、1次キャッシュ202と、1次キャッシュ203と、1次キャッシュ204と、スヌープ回路205と、2次キャッシュ206と、I/F(InterFace)207と、メモリコントローラ208と、分周回路209と、を有している。マルチコアプロセッサシステム100において、2次キャッシュ206と、I/F207と、メモリコントローラ208と、分周回路209とは、バス220を介して接続されている。また、メモリ101は、メモリコントローラ208を介して各部と接続されている。
CPU#0、CPU#1、CPU#2およびCPU#3は、それぞれレジスタとコアとを有している。各レジスタには、プログラムカウンタやリセットレジスタがある。CPU#0は、1次キャッシュ201とスヌープ回路205と2次キャッシュ206とを介して各部に接続されている。CPU#1は、1次キャッシュ202とスヌープ回路205と2次キャッシュ206とを介して各部に接続されている。CPU#2は、1次キャッシュ203とスヌープ回路205と2次キャッシュ206とを介して各部に接続されている。CPU#3は、1次キャッシュ204とスヌープ回路205と2次キャッシュ206とを介して各部に接続されている。
メモリ101は、CPU#0〜#3に共有されるメモリである。具体的には、例えば、メモリ101は、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有している。例えば、フラッシュROMが各OSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU#0〜CPU#3のワークエリアとして使用される。メモリ101に記憶されているプログラムは、各CPUにロードされることで、コーディングされている処理を該各CPUに実行させることとなる。
1次キャッシュ201〜204は、それぞれキャッシュメモリとキャッシュコントローラとを有している。例えば、1次キャッシュ201は、OS#0が実行するアプリケーションからメモリ101への書込処理を一時的に記憶する。1次キャッシュ201は、メモリ101から読み出されたデータを一時的に記憶する。
スヌープ回路205は、CPU#0〜CPU#3がアクセスする1次キャッシュ201〜204の整合性を取る。具体的には、例えば、スヌープ回路205は、1次キャッシュ201〜204の間で共有するデータがいずれかの1次キャッシュで更新された場合、該更新を検出して、他の1次キャッシュを更新する。
2次キャッシュ206は、キャッシュメモリとキャッシュコントローラとを有している。2次キャッシュ206では、各1次キャッシュ201〜204から追い出されたデータを記憶する。具体的には、例えば、2次キャッシュ206は、OS#0〜#3で共有するデータを記憶する。
I/F207は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。そして、I/F207は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F207には、例えば、モデムやLANアダプタなどを採用することができる。
メモリコントローラ208は、メモリ101に対するデータのリード/ライトを制御する。分周回路209は、クロックを供給する供給源である。具体的には、例えば、分周回路209は、CPU#0〜CPU#3と各CPUのキャッシュとバス220とメモリ101へクロックを供給する。なお、分周回路209についての詳細な説明は、図3を用いて後述する。
ファイルシステム210は、例えば、アプリケーションの命令コードや画像、映像などのコンテンツデータを記憶している。ファイルシステム210は、例えば、ハードディスクや光ディスクなどの補助記憶装置により実現される。なお、図示は省略するが、マルチコアプロセッサシステム100は、各部に電源電圧を供給するPMU(Power Managiment Unit)のほか、ディスプレイやキーボードなどを有することにしてもよい。
(分周回路209の一例)
図3は、分周回路の一例を示す説明図である。図3において、分周回路209は、クロックを逓倍にするPLL(Phase−locked loop)回路301とクロックを分周するカウンタ回路302とを備えている。分周回路209は、CLKINと、CMODE[3:0]と、CMODE_0[3:0]と、CMODE_1[3:0]と、CMODE_2[3:0]と、CMODE_3[3:0]と、を入力とし、各構成部へのクロックを出力とする。
CLKINには、例えば、発振回路からのクロックが入力される。例えば、CLKINに周波数が50MHzのクロックが入力されると、入力されたクロックの周波数をPLL回路301が2倍にし、PLL回路301が逓倍後の100MHzのクロックをカウンタ回路302に与える。カウンタ回路302は、CMODE[3:0]の値とCMODE_0[3:0]の値とCMODE_1[3:0]の値とCMODE_2[3:0]の値とCMODE_3[3:0]の値に沿って各構成部に100MHzを分周して与える。ここで、分周とは、周波数をさげることであり、2分周とは周波数を1/2にすることであり、4分周とは周波数を1/4にすることである。
CMODE_0[3:0]に入力される値に基づいて、CPU#0のキャッシュへ与えるクロックの周波数とメモリ101へのクロックの周波数が決定される。CMODE_1[3:0]に入力される値に基づいて、CPU#1のキャッシュへ与えるクロックの周波数とメモリ101へのクロックの周波数が決定される。
CMODE_2[3:0]に入力される値に基づいて、CPU#2のキャッシュへ与えるクロックの周波数とメモリ101へのクロックの周波数が決定される。CMODE_3[3:0]に入力される値に基づいて、CPU#3のキャッシュへ与えるクロックの周波数とメモリ101へのクロックの周波数が決定される。また、CMODE[3:0]に入力される値に基づいて、マルチコアプロセッサの構成部のうち各CPUのキャッシュおよびメモリ101を除く残余の構成部に与えるクロックの周波数が決定される。
(スケジューラ102の機能的構成例)
つぎに、スケジューラ102の機能的構成例について説明する。図4は、実施の形態にかかるスケジューラの機能的構成を示すブロック図である。図4において、スケジューラ102は、受付部401と、判定部402と、通知部403と、実行制御部404と、判断部405と、を含む構成である。各機能部(受付部401〜判断部405)は、具体的には、例えば、メモリ101に記憶されたスケジューラ102をCPU♯0に実行させることにより、その機能を実現する。なお、各機能部の処理結果は、例えば、CPU#0のレジスタ、1次キャッシュ201、2次キャッシュ206およびメモリ101などに記憶される。
受付部401は、イベント通知を受け付ける。イベント通知とは、例えば、アプリケーションの起動通知、終了通知、切替通知を示すものである。具体的には、例えば、受付部401が、アプリケーションの起動通知をOS#0から受け付ける。なお、以下の説明では、起動、終了対象となるアプリケーションを「アプリ#0」と表記し、切替対象となるアプリケーションを「アプリ#1」と表記する。
判定部402は、アプリ#0の起動通知が受け付けられた場合、CPU#0のクロック周波数をオーバークロックするか否かを判定する。オーバークロックとは、CPU#0のクロック周波数を、デフォルトのクロック周波数よりも高いクロック周波数に変更することである。
ここで、CPU#0は、制御用CPUであり、CPU#2やCPU#3などの処理用CPUに比べてクロック周波数が低い。このため、CPU#0が処理用CPUと同等の処理能力を実現するためには、CPU#0のクロック周波数を処理用CPUと同等のクロック周波数に変更する必要がある。
そこで、判定部402が、CPU#0のクロック周波数が処理用CPUのクロック周波数よりも低い場合、CPU#0のクロック周波数をオーバークロックすると判定する。例えば、CPU#0のクロック周波数を500MHz、CPU#2のクロック周波数を1GHzとする。この場合、判定部402が、CPU#0のクロック周波数を、500MHzから1GHzにオーバークロックすると判定する。なお、各CPU#0〜CPU#3のクロック周波数は、例えば、分周回路209の設定レジスタにアクセスすることで参照可能である。
通知部403は、CPU#0のクロック周波数をオーバークロックすると判定された場合、分周回路209にCPU#0のクロック周波数のオーバークロックを通知する。具体的には、例えば、通知部403が、CPU#0のクロック周波数を1GHzに設定する設定通知を分周回路209に通知する。
この結果、分周回路209により、例えば、CPU#0のクロック周波数が、500MHzから1GHzに変更される。なお、分周回路209は、CPU#0のクロック周波数を、要求されている値(例えば、1GHz)に変更できない場合、変更可能な最も高い値に変更することにしてもよい。
実行制御部404は、分周回路209にオーバークロックが通知された結果、アプリ#0の実行を制御する。具体的には、例えば、実行制御部404が、アプリ#0をCPU#0に割り当てる。この結果、CPU#0が、アプリ#0の命令コードをファイルシステム210からメモリ101に読み出す。そして、CPU#0が、アプリ#0の命令コードをメモリ101から1次キャッシュ201にロードして、アプリ#0を実行する。
また、通知部403は、アプリ#0の起動通知が受け付けられた場合、アプリ#0の割当先となるCPUの探索指示を他のCPUに通知する。具体的には、例えば、通知部403が、アプリ#0の割当先となるCPUの探索指示をCPU#1に通知する。CPU#1は、例えば、CPU#0と同様に、CPU#2やCPU#3よりもクロック周波数が低いCPUである。
この結果、CPU#1により、各CPU#0〜CPU#3の負荷が計算されて、アプリ#0の割当先となるCPUが決定される。なお、CPUの探索指示を受け付けたCPU#1の具体的な処理内容については後述する。
また、受付部401は、アプリ#0の割当先となるCPUの探索指示を通知した他のCPUから、アプリ#0の割当結果を受け付ける。具体的には、例えば、受付部401が、CPU#0にアプリ#0が割り当てられたことを示す割当結果をCPU#1から受け付ける。
また、実行制御部404は、アプリ#0の割当結果が受け付けられた場合、CPU#0に対するアプリ#0の割り当てを維持する。この結果、CPU#0により、アプリ#0の実行が継続して行われる。
判断部405は、アプリ#0の割当結果が受け付けられた場合、CPU#0のクロック周波数をオーバークロックしているか否かを判断する。具体的には、例えば、判断部405が、分周回路209のCPU#0のクロック周波数を示す設定レジスタの値を参照して、オーバークロックしているか否かを判断する。
また、判断部405は、CPU#0のクロック周波数をオーバークロックしている場合、CPU#0のデフォルトのクロック周波数でアプリ#0の要求性能を満たすか否かを判断する。具体的には、例えば、判断部405が、CPU#0のデフォルトのクロック周波数がアプリ#0の要求性能を満たすクロック周波数以上か否かを判断する。なお、アプリ#0の要求性能を満たすクロック周波数は、例えば、メモリ101に記憶されている。
また、通知部403は、デフォルトのクロック周波数でアプリ#0の要求性能を満たすと判断された場合、分周回路209にCPU#0のクロック周波数をデフォルトのクロック周波数に戻すよう通知する。具体的には、例えば、通知部403が、CPU#0のクロック周波数をデフォルトのクロック周波数に設定する設定通知を分周回路209に通知する。この結果、分周回路209により、CPU#0のクロック周波数が、デフォルトのクロック周波数に変更される。
また、受付部401は、アプリ#0の割当先のCPUから、アプリ#0の実行情報のロード完了通知を受け付ける。具体的には、例えば、アプリ#0の割当先となるCPU#2によってアプリ#0の命令コードがメモリ101からロードされた結果、受付部401が、CPU#2からアプリ#0の命令コードのロード完了通知を受け付ける。
また、実行制御部404は、アプリ#0の実行情報のロード完了通知が受け付けられた場合、アプリ#0の実行を停止するよう制御する。具体的には、例えば、実行制御部404が、アプリ#0の割当先をCPU#0からCPU#2に変更する。この結果、CPU#0が、アプリ#0の実行時情報を1次キャッシュ201に退避する。実行時情報とは、例えば、CPU#0のプログラムカウンタの値や、関数内の変数の値を格納する汎用レジスタの値などのコンテキスト情報である。
この結果、スヌープ回路205により、CPU#0の1次キャッシュ201上の実行時情報が、例えば、アプリ#0の割当先となるCPU#2の1次キャッシュ203に転送され、CPU#0とCPU#2との間のキャッシュメモリの整合性が確保される。
また、通知部403は、アプリ#0の実行時情報が1次キャッシュ201に退避されて、CPU#0とアプリ#0の割当先となるCPUとの間のキャッシュメモリの整合性が確保された場合、割当先となるCPUにアプリ#0の実行開始要求を通知する。この結果、例えば、割当先となるCPU#2により、アプリ#0が実行される。
また、判断部405は、アプリ#0の終了通知が受け付けられた場合、CPU#0のクロック周波数をオーバークロックしているか否かを判断する。そして、CPU#0のクロック周波数をオーバークロックしている場合、通知部403は、分周回路209にCPU#0のクロック周波数をデフォルトのクロック周波数に戻すよう通知する。この結果、分周回路209により、CPU#0のクロック周波数が、デフォルトのクロック周波数に変更される。
判断部405は、アプリ#0からアプリ#1への切替通知が受け付けられた場合、CPU#0のデフォルトのクロック周波数でアプリ#1の要求性能を満たすか否かを判断する。ここで、アプリ#1の要求性能を満たし、かつ、CPU#0のクロック周波数をオーバークロックしている場合、通知部403は、分周回路209にCPU#0のクロック周波数をデフォルトのクロック周波数に戻すよう通知する。
この結果、分周回路209により、CPU#0のクロック周波数が、デフォルトのクロック周波数に変更される。そして、実行制御部404は、アプリ#1の実行を制御する。具体的には、例えば、実行制御部404が、アプリ#1をCPU#0に割り当てる。この結果、CPU#0が、例えば、アプリ#1の命令コードを1次キャッシュ201にロードし、1次キャッシュ201上のアプリ#1の実行時情報を用いてアプリ#1の実行を開始する。
一方、アプリ#1の要求性能を満たさず、かつ、CPU#0のクロック周波数をオーバークロックしていない場合、通知部403は、分周回路209にCPU#0のクロック周波数のオーバークロックを通知する。この結果、分周回路209により、CPU#0のクロック周波数がオーバークロックされる。そして、実行制御部404は、アプリ#1の実行を制御する。
(CPUの探索指示を受け付けた他のCPUの処理内容)
つぎに、アプリ#0の割当先となるCPUの探索指示を受け付けた他のCPUの具体的な処理内容の一例について説明する。ここでは、CPU#1が、CPU#0からアプリ#0の割当先となるCPUの探索指示を受け付けた場合を例に挙げて説明する。
CPU#1は、アプリ#0の割当先となるCPUの探索指示を受け付けた場合、各CPU#0〜CPU#3の負荷を計算する。具体的には、例えば、CPU#1が、各CPU#0〜CPU#3に割り当てられているアプリケーションの数や各アプリケーションの実行時間に基づいて、各CPU#0〜CPU#3の負荷を計算する。
そして、CPU#1は、計算された各CPU#0〜CPU#3の負荷に基づいて、アプリ#0の割当先となるCPUを決定する。具体的には、例えば、CPU#1が、CPU#0〜CPU#3のうち、負荷が最小となるCPUを、アプリ#0の割当先となるCPUに決定する。
また、CPU#1は、アプリ#0の割当先に決定したCPUに、アプリ#0の割当結果を通知する。例えば、割当先がCPU#0の場合、CPU#1が、CPU#0にアプリ#0が割り当てられたことを示す割当結果をCPU#0に通知する。割当先がCPU#0とは異なる他のCPUの場合、CPU#1が、アプリ#0の実行要求を示す割当結果を他のCPUに通知する。
アプリ#0の実行要求は、具体的には、例えば、アプリ#0の命令コードのロード命令である。なお、アプリ#0の実行要求には、アプリ#0を現在実行中のCPU#0を識別する情報が含まれている。これにより、アプリ#0の割当先のCPUは、アプリ#0を現在実行しているCPU#0を識別することができる。
ここで、アプリ#0の割当先をCPU#2とする。CPU#2は、CPU#1からアプリ#0の命令コードのロード命令を受け付けた場合、アプリ#0の命令コードをメモリ101から1次キャッシュ203にロードする。そして、アプリ#0の命令コードのロードが完了した場合、CPU#2は、アプリ#0の命令コードのロード完了通知をCPU#0に通知する。
このあと、CPU#2は、スヌープ回路205を介して、アプリ#0の実行時情報を受信した場合、アプリ#0の命令コードおよび実行時情報を用いて、アプリ#0の実行を開始する。これにより、制御用CPUであるCPU#0により暫定的に実行していたアプリ#0を、処理用CPUであるCPU#2に引き渡すことができる。
なお、上述した説明では、CPUの探索要求を受け付けたCPU#1が、アプリ#0の割当先となるCPUを決定することにしたが、これに限らない。具体的には、例えば、スケジューラ102が、CPU#1から各CPU#0〜CPU#3の負荷の計算結果を受信して、アプリ#0の割当先となるCPUを決定することにしてもよい。
(マルチコアプロセッサシステム100のスケジューリング処理手順)
つぎに、実施の形態にかかるマルチコアプロセッサシステム100のスケジューリング処理手順について説明する。まず、実施の形態にかかるスケジューラ102によるスケジューリング処理手順について説明する。
<スケジューラ102によるスケジューリング処理手順>
図5および図6は、実施の形態にかかるスケジューラによるスケジューリング処理手順の一例を示すフローチャートである。図5のフローチャートにおいて、まず、CPU#0により、イベント通知を受け付けたか否かを判断する(ステップS501)。
ここで、CPU#0により、イベント通知を受け付けるのを待って(ステップS501:No)、受け付けた場合(ステップS501:Yes)、受け付けたイベント通知がアプリ#0の起動通知か否かを判断する(ステップS502)。
そして、受け付けたイベント通知がアプリ#0の起動通知ではない場合(ステップS502:No)、図6に示すステップS601に移行する。一方、受け付けたイベント通知がアプリ#0の起動通知の場合(ステップS502:Yes)、CPU#0により、CPU#0のクロック周波数をオーバークロックするか否かを判定する(ステップS503)。
ここで、CPU#0のクロック周波数をオーバークロックしない場合(ステップS503:No)、ステップS505に移行する。一方、CPU#0のクロック周波数をオーバークロックする場合(ステップS503:Yes)、CPU#0により、分周回路209にCPU#0のクロック周波数のオーバークロックを通知する(ステップS504)。
つぎに、CPU#0により、アプリ#0の割当先となるCPUの探索指示をCPU#1に通知する(ステップS505)。そして、CPU#0により、アプリ#0の命令コードをロードして(ステップS506)、アプリ#0の実行を開始する(ステップS507)。
このあと、CPU#0により、CPU#1からアプリ#0の割当結果を受け付けたか否かを判断する(ステップS508)。ここで、アプリ#0の割当結果を受け付けた場合(ステップS508:Yes)、ステップS512に移行する。
一方、アプリ#0の割当結果を受け付けていない場合(ステップS508:No)、CPU#0により、アプリ#0の割当先のCPUから、アプリ#0の命令コードのロード完了通知を受け付けたか否かを判断する(ステップS509)。ここで、ロード完了通知を受け付けていない場合(ステップS509:No)、ステップS508に戻る。
一方、ロード完了通知を受け付けた場合(ステップS509:Yes)、CPU#0により、アプリ#0の実行時情報を1次キャッシュ201に退避する(ステップS510)。この結果、アプリ#0の実行時情報が、アプリ#0の割当先のCPUの1次キャッシュに転送される。
このあと、CPU#0により、アプリ#0の実行開始要求を割当先のCPUに通知する(ステップS511)。つぎに、CPU#0により、CPU#0のクロック周波数をオーバークロックしているか否かを判断する(ステップS512)。ここで、オーバークロックしていない場合(ステップS512:No)、ステップS501に戻る。
一方、オーバークロックしている場合(ステップS512:Yes)、CPU#0により、CPU#0のデフォルトのクロック周波数でアプリ#0の要求性能を満たすか否かを判断する(ステップS513)。ここで、アプリ#0の要求性能を満たさない場合(ステップS513:No)、ステップS501に戻る。
一方、アプリ#0の要求性能を満たす場合(ステップS513:Yes)、CPU#0により、分周回路209にCPU#0のクロック周波数をデフォルトのクロック周波数に戻すよう通知して(ステップS514)、ステップS501に戻る。
図6のフローチャートにおいて、まず、CPU#0により、図5に示したステップS501において受け付けたイベント通知がアプリ#0の終了通知か否かを判断する(ステップS601)。
ここで、受け付けたイベント通知がアプリ#0の終了通知の場合(ステップS601:Yes)、CPU#0により、CPU#0のクロック周波数をオーバークロックしているか否かを判断する(ステップS602)。そして、CPU#0のクロック周波数をオーバークロックしていない場合(ステップS602:No)、図5に示したステップS501に移行する。
一方、CPU#0のクロック周波数をオーバークロックしている場合(ステップS602:Yes)、CPU#0により、分周回路209にCPU#0のクロック周波数をデフォルトのクロック周波数に戻すよう通知して(ステップS603)、図5に示したステップS501に移行する。
また、ステップS601において、受け付けたイベント通知がアプリ#0の終了通知ではない場合(ステップS601:No)、CPU#0により、受け付けたイベント通知がアプリ#1の切替通知か否かを判断する(ステップS604)。ここで、受け付けたイベント通知がアプリ#1の切替通知ではない場合(ステップS604:No)、図5に示したステップS501に移行する。
一方、受け付けたイベント通知がアプリ#1の切替通知の場合(ステップS604:Yes)、CPU#0により、CPU#0のデフォルトのクロック周波数でアプリ#1の要求性能を満たすか否かを判断する(ステップS605)。ここで、アプリ#1の要求性能を満たす場合(ステップS605:Yes)、CPU#0により、CPU#0のクロック周波数をオーバークロックしているか否かを判断する(ステップS606)。
ここで、CPU#0のクロック周波数をオーバークロックしていない場合(ステップS606:No)、ステップS608に移行する。一方、CPU#0のクロック周波数をオーバークロックしている場合(ステップS606:Yes)、CPU#0により、分周回路209にCPU#0のクロック周波数をデフォルトのクロック周波数に戻すよう通知する(ステップS607)。
そして、CPU#0により、アプリ#1の実行を開始して(ステップS608)、図5に示したステップS501に移行する。また、ステップS605において、アプリ#1の要求性能を満たさない場合(ステップS605:No)、CPU#0により、CPU#0のクロック周波数をオーバークロックしているか否かを判断する(ステップS609)。
ここで、CPU#0のクロック周波数をオーバークロックしている場合(ステップS609:Yes)、ステップS608に移行する。一方、CPU#0のクロック周波数をオーバークロックしていない場合(ステップS609:No)、CPU#0により、分周回路209にCPU#0のクロック周波数のオーバークロックを通知して(ステップS610)、ステップS608に移行する。
これにより、CPU#0がアプリ#0の割当先を決定した後に、割当先のCPUによってアプリ#0の実行を開始する場合に比べて、アプリ#0の起動時間の高速化を図ることができる。
<CPU#1の割当先決定処理手順>
つぎに、アプリ#0の割当先となるCPUの探索指示を受け付けたCPU#1の割当先決定処理手順について説明する。
図7は、CPU#1の割当先決定処理手順の一例を示すフローチャートである。図7のフローチャートにおいて、まず、CPU#1により、アプリ#0の割当先となるCPUの探索指示をCPU#0から受け付けたか否かを判断する(ステップS701)。
ここで、探索指示を受け付けるのを待って(ステップS701:No)、受け付けた場合(ステップS701:Yes)、CPU#1により、アプリ#0の割当先となるCPUを決定する(ステップS702)。そして、CPU#1により、決定したアプリ#0の割当先がCPU#0か否かを判断する(ステップS703)。
ここで、割当先がCPU#0の場合(ステップS703:Yes)、CPU#1により、CPU#0にアプリ#0の割当結果を通知して(ステップS704)、本フローチャートによる一連の処理を終了する。
一方、割当先がCPU#0ではない場合(ステップS703:No)、CPU#1により、割当先のCPUにアプリ#0の命令コードのロード命令を通知して(ステップS705)、本フローチャートによる一連の処理を終了する。
これにより、アプリ#0の割当先を決定して、割当先となるCPUにアプリ#0の割当結果を通知することができる。なお、ステップS702において決定されたアプリ#0の割当先がCPU#1の場合、後述の図8に示すステップS802〜S806の一連の処理をCPU#1が実行することになる。
<CPU#2の実行処理手順>
つぎに、図7に示したステップS702において、アプリ#0の割当先としてCPU#2が決定された場合を例に挙げて、CPU#2の実行処理手順について説明する。
図8は、CPU#2の実行処理手順の一例を示すフローチャートである。図8のフローチャートにおいて、まず、CPU#2により、アプリ#0の命令コードのロード命令をCPU#1から受け付けたか否かを判断する(ステップS801)。
ここで、ロード命令を受け付けるのを待って(ステップS801:No)、受け付けた場合(ステップS801:Yes)、CPU#2により、アプリ#0の命令コードをロードする(ステップS802)。そして、CPU#2により、アプリ#0の命令コードのロード完了通知をCPU#0に送信する(ステップS803)。
つぎに、CPU#2により、アプリ#0の実行時情報をCPU#0から受信したか否かを判断する(ステップS804)。ここで、アプリ#0の実行時情報を受信するのを待って(ステップS804:No)、受信した場合(ステップS804:Yes)、CPU#2により、アプリ#0の実行開始要求をCPU#0から受け付けたか否かを判断する(ステップS805)。
ここで、アプリ#0の実行開始要求を受け付けるのを待って(ステップS805:No)、受け付けた場合(ステップS805:Yes)、CPU#2により、アプリ#0の実行を開始して(ステップS806)、本フローチャートによる一連の処理を終了する。
これにより、制御用CPUであるCPU#0で実行されているアプリ#0を処理用CPUであるCPU#2に引き渡すことができる。
(マルチコアプロセッサシステム100の一実施例)
つぎに、実施の形態にかかるマルチコアプロセッサシステム100の一実施例について説明する。
図9は、実施の形態にかかるマルチコアプロセッサシステムの一実施例を示す説明図である。なお、図9では、OS#0が備えるスケジューラ102の図示を省略している。
(9−1)マルチコアプロセッサシステム100において、新たなアプリ#7が起動されると、CPU#0が、クロック周波数をオーバークロックしてアプリ#7の実行を開始する。(9−2)CPU#1が、アプリ#7の割当先となるCPUを決定する。ここでは、アプリ#7の割当先としてCPU#2が決定された場合を想定する。
(9−3)CPU#2が、アプリ#7の命令コード(図9中、「static context901」)をメモリ101から1次キャッシュ203にロードする。(9−4)CPU#2が、スヌープ回路205を介して、CPU#0の1次キャッシュ201に退避されたアプリ#7の実行時情報(図9中、「dynamic context902」)を受信する。
(9−5)CPU#2が、アプリ#7の実行を開始する。(9−6)CPU#0が、分周回路209にCPU#0のクロック周波数をデフォルトのクロック周波数に戻すよう通知する。これにより、CPU#0がアプリ#7の割当先を決定した後に、割当先のCPU#2によってアプリ#7の実行を開始する場合に比べて、アプリ#7の起動時間の高速化を図ることができる。
以上説明したように、本実施の形態によれば、新たに起動されたアプリ#0の割当先の決定に先立って、制御用のCPU#0により暫定的にアプリ#0の実行を開始し、アプリ#0の割当先が決まったら、CPU#0から割当先のCPUにアプリを引き渡すことができる。これにより、CPU#0がアプリ#0の割当先を決定した後に、割当先のCPUによってアプリ#0の実行を開始する場合に比べて、アプリ#0の起動時間の高速化を図ることができる。
また、本実施の形態によれば、CPU#0のクロック周波数が処理用CPUのクロック周波数よりも低い場合、CPU#0のクロック周波数をオーバークロックして、アプリ#0の実行を開始することができる。これにより、制御用のCPU#0が処理用CPUと同等の性能でアプリ#0を実行することができる。
また、本実施の形態によれば、CPU#0のデフォルトのクロック周波数でアプリ#0の要求性能を満たす場合、オーバークロックしたCPU#0のクロック周波数をデフォルトのクロック周波数に戻すことにより、無駄な消費電力を削減することができる。
また、本実施の形態によれば、CPU#0によるアプリ#0の実行が終了した場合、オーバークロックしたCPU#0のクロック周波数をデフォルトのクロック周波数に戻すことにより、無駄な消費電力を削減することができる。
なお、本実施の形態で説明したスケジューリング方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スケジューリングプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本スケジューリングプログラムは、インターネット等のネットワークを介して配布してもよい。
100 マルチコアプロセッサシステム
101 メモリ
102 スケジューラ
209 分周回路
401 受付部
402 判定部
403 通知部
404 実行制御部
405 判断部

Claims (9)

  1. 第1プロセッサおよび第2プロセッサを含む複数のプロセッサを管理するスケジューラが、
    アプリケーションが起動されたときに、前記アプリケーションを前記第1プロセッサに割り当て、
    前記第2プロセッサに前記複数のプロセッサの負荷の計算を指示し、
    前記負荷に基づいて、前記アプリケーションの割り当てを維持し、または、前記アプリケーションの割り当てを変更すること
    を特徴とするスケジューリング方法。
  2. 前記アプリケーションの割り当て時に、前記第1プロセッサの動作クロックの周波数を変更すること
    を特徴とする請求項1に記載のスケジューリング方法。
  3. 前記アプリケーションが割り当てられたときに、前記第1プロセッサにおいて、前記アプリケーションの実行が開始されること
    を特徴とする請求項1または請求項2に記載のスケジューリング方法。
  4. 前記スケジューラは、
    前記第1プロセッサの負荷が第3プロセッサの負荷よりも大きいとき、前記アプリケーションの割り当てを前記第3プロセッサに変更すること
    を特徴とする請求項1乃至請求項3の何れか一に記載のスケジューリング方法。
  5. 前記アプリケーションの割り当てが第3プロセッサに変更されるとき、前記第1プロセッサでの前記アプリケーションの実行情報およびコンテキスト情報を前記第3プロセッサに供給すること
    を特徴とする請求項1乃至請求項4の何れか一に記載のスケジューリング方法。
  6. 第1プロセッサおよび第2プロセッサを含む複数のプロセッサと、
    前記複数のプロセッサを管理するスケジューラと、
    を含み、
    前記第1プロセッサは、起動されたアプリケーションの実行を開始し、
    前記第2プロセッサは、前記複数のプロセッサの負荷の計算を指示し、
    前記スケジューラは、前記負荷に基づいて、前記アプリケーションの割り当てを前記第1プロセッサに維持しまたは他のプロセッサに変更すること
    を特徴とするスケジューリングシステム。
  7. 前記アプリケーションの実行前に、前記第1プロセッサの動作クロックの周波数を変更する分周回路を含むこと
    を特徴とする請求項6に記載のスケジューリングシステム。
  8. 前記スケジューラは、
    前記第1プロセッサの負荷が前記他のプロセッサの負荷よりも大きいとき、前記アプリケーションの割り当てを前記他のプロセッサに変更すること
    を特徴とする請求項6または請求項7に記載のスケジューリングシステム。
  9. 前記スケジューラは、
    前記第1プロセッサでの前記アプリケーションの実行情報およびコンテキスト情報を前記他のプロサッサに供給すること
    を特徴とする請求項6乃至請求項8の何れか一に記載のスケジューリングシステム。
JP2012553537A 2011-01-21 2011-01-21 スケジューリング方法およびスケジューリングシステム Pending JPWO2012098683A1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/051117 WO2012098683A1 (ja) 2011-01-21 2011-01-21 スケジューリング方法およびスケジューリングシステム

Publications (1)

Publication Number Publication Date
JPWO2012098683A1 true JPWO2012098683A1 (ja) 2014-06-09

Family

ID=46515334

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012553537A Pending JPWO2012098683A1 (ja) 2011-01-21 2011-01-21 スケジューリング方法およびスケジューリングシステム

Country Status (3)

Country Link
US (1) US20130305251A1 (ja)
JP (1) JPWO2012098683A1 (ja)
WO (1) WO2012098683A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189273B2 (en) 2014-02-28 2015-11-17 Lenovo Enterprise Solutions PTE. LTD. Performance-aware job scheduling under power constraints
CN113535239B (zh) 2020-04-16 2023-08-18 长鑫存储技术有限公司 底层驱动转发方法及基于uefi实现的多核系统
CN111738446B (zh) * 2020-06-12 2023-11-03 北京百度网讯科技有限公司 深度学习推理引擎的调度方法、装置、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171234A (ja) * 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム
JP2005285093A (ja) * 2004-03-02 2005-10-13 Mitsubishi Electric Corp プロセッサ電力制御装置及びプロセッサ電力制御方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005031736A (ja) * 2003-07-07 2005-02-03 Hitachi Information Systems Ltd サーバ負荷分散装置及びサーバ負荷分散方法及びクライアントサーバシステム
JP3914230B2 (ja) * 2004-11-04 2007-05-16 株式会社東芝 プロセッサシステム及びその制御方法
EP1715405A1 (en) * 2005-04-19 2006-10-25 STMicroelectronics S.r.l. Processing method, system and computer program product for dynamic allocation of processing tasks in a multiprocessor cluster platforms with power adjustment
KR101366075B1 (ko) * 2007-12-20 2014-02-21 삼성전자주식회사 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US8856196B2 (en) * 2008-07-22 2014-10-07 Toyota Jidosha Kabushiki Kaisha System and method for transferring tasks in a multi-core processor based on trial execution and core node
US8346999B2 (en) * 2009-12-15 2013-01-01 Intel Corporation Dynamic receive queue balancing with high and low thresholds
US8381004B2 (en) * 2010-05-26 2013-02-19 International Business Machines Corporation Optimizing energy consumption and application performance in a multi-core multi-threaded processor system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171234A (ja) * 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム
JP2005285093A (ja) * 2004-03-02 2005-10-13 Mitsubishi Electric Corp プロセッサ電力制御装置及びプロセッサ電力制御方法

Also Published As

Publication number Publication date
WO2012098683A1 (ja) 2012-07-26
US20130305251A1 (en) 2013-11-14

Similar Documents

Publication Publication Date Title
US10671133B2 (en) Configurable power supplies for dynamic current sharing
JP5433837B2 (ja) 仮想計算機システム、仮想計算機の制御方法及びプログラム
US8489904B2 (en) Allocating computing system power levels responsive to service level agreements
US9671854B2 (en) Controlling configurable peak performance limits of a processor
US8769316B2 (en) Dynamically allocating a power budget over multiple domains of a processor
US20140173311A1 (en) Methods and Systems for Operating Multi-Core Processors
US20100235662A1 (en) Server power manager and method for dynamically managing server power consumption
KR20160142835A (ko) 멀티-프로세서 시스템 온 칩에서의 에너지 효율 인지 열 관리
WO2014099024A1 (en) Dynamic balancing of power across a plurality of processor domains according to power policy control bias
US9311142B2 (en) Controlling memory access conflict of threads on multi-core processor with set of highest priority processor cores based on a threshold value of issued-instruction efficiency
US9760159B2 (en) Dynamic power routing to hardware accelerators
US9405351B2 (en) Performing frequency coordination in a multiprocessor system
US9600344B2 (en) Proportional resizing of a logical partition based on a degree of performance difference between threads for high-performance computing on non-dedicated clusters
US9563465B2 (en) Multi-task scheduling method for assigning threads based on time slices to multi-core processors and multi-core processor system therefor
JP5790758B2 (ja) スケジューリング方法およびスケジューリングシステム
WO2012098683A1 (ja) スケジューリング方法およびスケジューリングシステム
US20130298132A1 (en) Multi-core processor system and scheduling method
CN112230757A (zh) 用于通过腾空cpu和存储器的子集来降低功率的方法和系统
JP2009070389A (ja) 処理装置のためのコントローラ
JP2019219931A (ja) 半導体集積回路、cpuの割り当て方法、およびプログラム
US11669151B1 (en) Method for dynamic feature enablement based on power budgeting forecasting

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150309

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150331