JP5445669B2 - マルチコアシステムおよび起動方法 - Google Patents

マルチコアシステムおよび起動方法 Download PDF

Info

Publication number
JP5445669B2
JP5445669B2 JP2012506709A JP2012506709A JP5445669B2 JP 5445669 B2 JP5445669 B2 JP 5445669B2 JP 2012506709 A JP2012506709 A JP 2012506709A JP 2012506709 A JP2012506709 A JP 2012506709A JP 5445669 B2 JP5445669 B2 JP 5445669B2
Authority
JP
Japan
Prior art keywords
scheduler
core
processor core
processor
master right
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.)
Expired - Fee Related
Application number
JP2012506709A
Other languages
English (en)
Other versions
JPWO2011117987A1 (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.)
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 JPWO2011117987A1 publication Critical patent/JPWO2011117987A1/ja
Application granted granted Critical
Publication of JP5445669B2 publication Critical patent/JP5445669B2/ja
Expired - Fee Related 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
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Power Sources (AREA)

Description

この発明は、マルチコアシステムおよび起動方法に関する。
従来、コンピュータや携帯端末などの情報処理装置、またはデジタルカメラやテレビシステムなどの画像や音声の処理装置では、ユーザが装置の電源をオンにした後、できるだけ速やかに装置の起動を完了することが望まれている。高速に装置を起動する方式の一つに、ハイバネートブート方式がある。ハイバネートブート方式は、通常の起動シーケンスを行わずに、メモリなどに保持しておいた前回の動作状態を復元することによって高速に起動する技術である。また、UI(User Interface、ユーザインターフェース)先行起動方式がある。UI先行起動方式は、装置の起動時に早い段階でユーザに対してダミーの画面を表示することにより擬似的に高速に起動したようにみせる技術である。
一方、複数のプロセッサを有するマルチプロセッサシステムや、複数のプロセッサコアを有するマルチコアシステム(以下、まとめてマルチコアシステムとする)がある。マルチコアシステムでは、複数のスケジューラのそれぞれに予め複数のプロセスを割り当てておき、選択されたスケジューラにおいてその割り当てに従って順次プロセスを実行するスケジューリング方式がある。また、マルチプロセッサシステムにおいて、アルゴリズムの異なる複数のスケジューラを用意し、タスクごとに適当なアルゴリズムのスケジューラでスケジューリングを行う方式がある。また、マスタスケジューラを有するプロセッサとスレーブスケジューラを有するプロセッサとがあり、マスタスケジューラがスレーブスケジューラによるプロセスの実行を制御する方式がある。
特開2001−117786号公報 特開平4−60843号公報 特開平11−265297号公報
しかしながら、ハイバネートブート方式では、装置の動作状態を格納するための記憶領域が必要であるという問題点がある。UI先行起動方式では、実際には装置の起動が高速に完了するわけではない。また、スケジューラごとにプロセスが予め割り当てられていると、各スケジューラに柔軟にプロセスを割り当てることができない。そのため、例えば携帯電話端末のように、使用中にユーザがシステムの更新や新機能の追加を行うことができるようなシステムには向いていない。また、複数のスケジューラが動作する場合には、確保したメモリや割込み番号などに矛盾が生じないようにスケジューラ間で同期をとる必要があるという問題点がある。また、アルゴリズムの異なる複数のスケジューラを動作させてスケジューリングの速さを競わせるような場合には、採用されなかったスケジューラが動作していたプロセッサは、結果として不要な演算を行ったことになる。これは、消費電力の点で問題である。また、アルゴリズムの異なる複数のスケジューラを用意しても、いずれかのアルゴリズムのスケジューラに負荷が集中すると、そのスケジューラが動作するプロセッサの処理が遅くなるという問題点がある。
マルチコアシステムにおいて装置を高速に起動することができるマルチコアシステムおよび起動方法を提供することを目的とする。
マルチコアシステムでは、複数のプロセッサコアでそれぞれスケジューラが動作する。各スケジューラは、マスタ権を有するときに各プロセッサコアに対して処理を割り振る。マスタ権は、処理の割り振りを行う権限である。マスタ制御部は、スケジューラ間でのマスタ権の移動を制御する。各スケジューラは、マスタ権を受信した後、各プロセッサコアに対して処理を割り振る前に他のプロセッサコアへマスタ権の移動を送信する。各スケジューラは、各プロセッサコアに対して処理を割り振った後、マスタ権を破棄してマスタ権の受信を待機する状態となる。各スケジューラは、このようなマスタ権の受信、マスタ権移動の送信、各プロセッサコアに対する処理の割り振り、マスタ権の破棄およびマスタ権の受信待機というサイクルを、処理対象の処理がなくなるまで繰り返す。
開示のマルチコアシステムおよび起動方法によれば、マルチコアシステムにおいて装置を高速に起動することができるという効果を奏する。
実施例1にかかるマルチコアシステムを示すブロック図である。 実施例1にかかる起動方法を示すフローチャートである。 実施例2にかかるマルチコアシステムを示すブロック図である。 実施例2にかかる起動方法において最初にマスタ権を受信するプロセッサコアの動作を示すフローチャートである。 実施例2にかかる起動方法において最初にマスタ権を受信しないプロセッサコアの動作を示すフローチャートである。 実施例2にかかる起動方法においてスレーブ制御状態における状態遷移を示す図である。 実施例2にかかる起動方法によるマルチコアシステムの動作を示す図である。 比較例とする起動方法によるマルチコアシステムの動作を示す図である。
以下に、この発明にかかるマルチコアシステムおよび起動方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
(実施例1)
実施例1では、各プロセッサコアで動作するスケジューラが他のプロセッサコアのスケジューラへマスタ権を譲り渡した後に各プロセッサコアに処理を割り振る。それにより、同時に複数のプロセッサコアでそれぞれに割り振られた処理が少しずつ時間をずらしながら並列に行われる。
・マルチコアシステムの説明
図1は、実施例1にかかるマルチコアシステムを示すブロック図である。図1に示すように、マルチコアシステムは、複数、特に限定しないが、図示例では4個のプロセッサコア1,2,3,4を有する。各プロセッサコア1,2,3,4では、それぞれスケジューラ5,6,7,8が動作する。各スケジューラ5,6,7,8は、マスタ権を有するときにスケジューリングを行う。スケジューリングによって、各プロセッサコア1,2,3,4に処理が割り振られる。マスタ権は、スケジューリングを行う権限である。マルチコアシステムは、スケジューラ5,6,7,8間でのマスタ権の移動を制御するマスタ制御部9を有する。
各スケジューラ5,6,7,8は、マスタ権を受信した後、スケジューリングを行う前に、他のプロセッサコア1,2,3,4へマスタ権の移動を送信する。各スケジューラ5,6,7,8は、スケジューリングを行った後、マスタ権を破棄してマスタ権の受信を待機する状態となる。マスタ制御部9は、各スケジューラ5,6,7,8がこのような一連のサイクルを、処理対象の処理がなくなるまで繰り返すように制御する。スケジューラ5,6,7,8およびマスタ制御部9は、各プロセッサコア1,2,3,4で例えばオペレーティングシステム(OS:Operating System)のカーネル部などのソフトウェアを実行することにより実現される。
・起動方法の説明
図2は、実施例1にかかる起動方法を示すフローチャートである。図2のフローチャートは、複数のスケジューラのうちの一つのスケジューラの動作を示すものである。ここでは、図1に示す構成のスケジューラP5の動作について説明する。図1に示す他のスケジューラQ6、R7およびS8の動作も同様である。
図2に示すように、上述したマルチコアシステムを有する装置の電源がオンになる(コールドブート、コールドスタート)か、またはリセット(コールドリブート、コールドリスタート)されると、スケジューラP5はマスタ権を受信する(ステップS1)。次いで、スケジューラP5は、他のプロセッサコアQ2、R3およびS4のいずれかへ、当該プロセッサコアで動作するスケジューラへマスタ権を移動することを送信する(ステップS2)。送信が終了するとスケジューラP5は、スケジューリングを行い、他のプロセッサコアQ2、R3およびS4に処理を割り振る(ステップS3)。スケジューラP5は、スケジューリングが終了するとマスタ権を破棄し(ステップS4)、マスタ権の受信を待機する状態となる(ステップS5)。最初にマスタ権を受信しないスケジューラQ6、R7およびS8については、マスタ権を受信するまではマスタ権の受信を待機する状態となるので、ステップS5から始まることになる。各スケジューラP5、Q6、R7およびS8は、このステップS1からステップS5までを、処理する対象の処理がなくなるまで繰り返す。
実施例1によれば、各スケジューラが他のスケジューラにマスタ権を譲り渡した後にスケジューリングを行うので、各プロセッサコアに割り振られた処理の一部と他のプロセッサコアに割り振られた別の処理の一部とが並列に実行されることになる。従って、各プロセッサコアに割り振られた処理の一部を並列に実行しない場合と比べて、マルチコアシステムを有する装置を高速に起動することができる。また、各プロセッサコアで動作するスケジューラが他のスケジューラからマスタ権を譲り受けてスケジューリングを行うので、複数のスケジューラがスケジューリングを並列に実行する。従って、マスタとなる唯一のスケジューラが全てのプロセッサコアに対してスケジューリングを行う場合と比べて、マルチコアシステムを有する装置を高速に起動することができる。
(実施例2)
実施例2は、実施例1のマルチコアシステムを、例えば携帯電話端末などの携帯端末やテレビシステムなどの家庭電化製品の組み込みシステムとして用いたものである。
・マルチコアシステムの説明
図3は、実施例2にかかるマルチコアシステムを示すブロック図である。図3に示すように、マルチコアシステムは、プロセッサコア11,12,13,14、例えば画像処理や音声処理や通信処理などの各種処理を行うデバイス15,16、例えばハードディスクなどのストレージ17および作業領域として使用されるメインメモリ18を備えている。これらプロセッサコア11,12,13,14、デバイス15,16、ストレージ17およびメインメモリ18は、バス19を介して相互に接続されている。各プロセッサコア11,12,13,14ではオペレーティングシステムが別々に動作するが、全体として一つのシステムが構築されている。プロセッサコアの数およびデバイスの数は、図示例に限らない。例えば、プロセッサコアの数は2個、3個または5個以上でもよい。
ストレージ17は、巡回マスタイメージ21、スレーブ機能イメージ22、初期化プロセスイメージ23およびOSカーネルブートイメージ24を記憶している。巡回マスタイメージ21は、スケジューラ間でのマスタ権の巡回を制御するプログラムのデータである。スレーブ機能イメージ22は、各プロセッサコアにおいて各スケジューラにより割り振られた処理の受け付けおよび起動を制御するプログラムのデータである。初期化プロセスイメージ23は、各種デバイスを初期化するプログラムのデータである。OSカーネルブートイメージ24は、オペレーティングシステムのカーネルを読み込んで動作させるプログラムのデータである。
巡回マスタイメージ21、スレーブ機能イメージ22、初期化プロセスイメージ23およびOSカーネルブートイメージ24は、ブートプログラムの実行によりストレージ17から読み出されてメインメモリ18に展開される。それによって、メインメモリ18上にマスタ制御部31、スレーブ制御部32、初期化プロセスとしての初期化スレッド33およびOSカーネル部34が存在することになる。
OSカーネル部34は、オペレーティングシステムの基本的な機能、例えばプロセスやスレッドの起動などの機能を実装した部分である。OSカーネル部34は、プロセッサコアごとに動作する図示しないスケジューラを含んでいる。マスタ制御部31は、スケジューラ間でのマスタ権の巡回を制御するプログラムである。マスタ権の一例として、例えばマルチコアオペレーティングシステムに記載されているマスタフラグを用いてもよい。この場合、マスタ制御部31は、このマスタフラグを制御する。初期化スレッド33は、各種デバイスを初期化するプログラムである。スレーブ制御部32は、全てのプロセッサコアに常駐し、各スケジューラにより割り振られた処理の受け付けおよび起動を制御するプログラムである。
・起動方法の説明
図4は、実施例2にかかる起動方法において最初にマスタ権を受信するプロセッサコアの動作を示すフローチャートである。ここでは、図3に示す構成のプロセッサコアP11で動作するカーネルが最初にマスタ権を受信するとして説明する。
図4に示すように、図3に示すマルチコアシステムを有する装置の電源がオンになるか、またはリセットされると(ステップS11)、各プロセッサコアP11、Q12、R13およびS14にリセット信号が入力される。それによって、各プロセッサコアP11、Q12、R13およびS14では、内部の起動プログラムが動作する。この起動プログラムには、装置内において各プロセッサコアP11、Q12、R13およびS14がアクセス可能なアドレス空間が定義されている。また、起動プログラムには、ブートプログラムの開始アドレスが記載されている。このような起動プログラムは、スタートアップルーチンと呼ばれることがある。
各プロセッサコアP11、Q12、R13およびS14は、起動プログラムの手続きに従ってブートプログラムを読み込み、カーネルコアを読み込んで起動する(ステップS12)。カーネルコアは、オペレーティングシステムの基本となる部分である。カーネルコアが起動することによって、各プロセッサコアP11、Q12、R13およびS14の初期設定が行われ、各プロセッサコアP11、Q12、R13およびS14でオペレーティングシステムが動作するようになる。カーネルコアだけでは、各種の機能サービスは起動されていない。
次いで、プロセッサコアP11で動作するカーネルは、マスタ権を受信する(ステップS13)。そして、プロセッサコアP11で動作するカーネルは、プロセッサコア間通信によって他のプロセッサコアQ12、R13またはS14へマスタ権の移動を送信する(ステップS14)。送信先のプロセッサコアはいずれでもよい。例えば、プロセッサコアの番号に基づいてマスタ権の移動を送信してもよい。例えば、送信先のプロセッサコアを、送信元のプロセッサコアの番号よりも1大きい番号のプロセッサコアとしてもよい。例えば、送信元のプロセッサコアの番号が最大値である場合、送信先のプロセッサコアを番号が最小のプロセッサコアとしてもよい。マスタ権の移動を送信してもマスタ権を破棄するまでは、プロセッサコアP11で動作するカーネルは、マスタ権を有する。
マスタ権の移動を送信した後、プロセッサコアP11で動作するカーネルは、自身を含めた各プロセッサコアP11、Q12、R13およびS14の負荷情報を集約する(ステップS15)。負荷情報は、各プロセッサコアP11、Q12、R13およびS14が使用するメモリ資源などのリソースの使用状況を示す情報である。負荷情報は、例えばメインメモリ18などのメモリに記憶されている。プロセッサコアP11で動作するカーネルは、集約した負荷情報に基づいて各プロセッサコアP11、Q12、R13およびS14の負荷が分散されるようにスケジューリングを行う(ステップS16)。
そして、プロセッサコアP11で動作するカーネルは、予め用意されている資源情報に基づいてリソースを確保し、初期化スレッドを割り振ったプロセッサコアに対して当該初期化スレッドの起動を依頼する(ステップS17)。資源情報には、装置の起動やリセットごとに固定されている情報として、利用する資源、コンテキスト領域、プロセス(スレッド)ID、プロセス(スレッド)名および競合する他のプロセス(スレッド)に関する情報が含まれている。処理するプロセッサコアが予約されている初期化スレッドについては、プロセッサコアP11で動作するカーネルは、スケジューリングを行わずに、その予約されているプロセッサコアに起動を依頼する。
次いで、プロセッサコアP11で動作するカーネルは、マスタ権を破棄し(ステップS18)、再度マスタ権を受信するのを待機する状態となる(ステップS19)。プロセッサコアP11で動作するカーネルは、再度マスタ権を受信すると(ステップS13)、ステップS13からステップS19までを繰り返す。
図5は、実施例2にかかる起動方法において最初にマスタ権を受信しないプロセッサコアの動作を示すフローチャートである。ここでは、図3に示す構成において、最初にマスタ権を受信しないプロセッサコアQ12、R13およびS14のうち、プロセッサコアQ12で動作するカーネルの動作について説明する。プロセッサコアR13およびS14で動作するカーネルの動作についても同様である。
図5に示すように、装置の電源がオンになるか、またはリセットされた後、カーネルコアが起動した状態となるまでは、図4を参照しながらプロセッサコアP11について説明した通りである(ステップS11、ステップS12)。カーネルコアが起動すると、プロセッサコアQ12で動作するカーネルは、他のプロセッサコアP11、R13およびS14からマスタ権を受信するのを待機する状態となる(ステップS21)。待機中にプロセッサコアQ12で動作するカーネルがマスタ権を受信すると(ステップS22)、プロセッサコア間通信によって他のプロセッサコアP11、R13またはS14へマスタ権の移動を送信する(ステップS23)。送信先については、例えば図4のステップS14に関連して説明したようにプロセッサコアの番号順であってもよい。この時点では、プロセッサコアQ12で動作するカーネルは、マスタ権を有している。
これ以降は、図4を参照しながらプロセッサコアP11で動作するカーネルについて説明した通りである。すなわち、プロセッサコアQ12で動作するカーネルは、上述したように、負荷情報を集約し(ステップS24)、スケジューリングを行い(ステップS25)、初期化スレッドの起動を依頼する(ステップS26)。そして、プロセッサコアQ12で動作するカーネルは、マスタ権を破棄し(ステップS27)、再度マスタ権を受信するのを待機する状態(ステップS21)に戻り、これを繰り返す。
ところで、あるプロセッサコアで動作するカーネルが他のプロセッサコアへマスタ権の移動を送信することによって、複数のプロセッサコアがマスタ権を同時に有する状態となることがある。例えば、図4および図5の例において、プロセッサコアP11で動作するカーネルがプロセッサコアQ12へマスタ権の移動を送信したとする。この場合、プロセッサコアP11およびプロセッサコアQ12は、それぞれがマスタ権を破棄するまで、マスタ権を保持することになる。
実施例2のような装置の起動時ではなく、稼働中の装置で通常のプロセスを起動する際には、このように複数のプロセッサコアが同時にマスタ権を有すると、次のような不具合が生じることがある。例えば、複数のマスタ権を有するカーネルが偶然同じタイミングでメモリ資源などを確保しようとした場合にコンフリクトが発生してしまう。それに対して、実施例2は装置の起動時の動作である。装置の起動時に起動されるスレッドやプロセスに必要な資源は、予めオペレーティングシステムの起動情報として用意されている機能テーブルなどに資源情報として予約されている。従って、複数のプロセッサコアが同時に資源の確保を行っても不具合は生じない。
図6は、実施例2にかかる起動方法においてスレーブ制御状態における状態遷移を示す図である。図6に示すように、装置の電源がオンになるか、またはリセットされた後、カーネルコアが起動すると、各プロセッサコアP11、Q12、R13およびS14は、スレーブ制御部32により初期化スレッドの起動依頼を受け付ける状態となる(ステップS31)。各プロセッサコアP11、Q12、R13およびS14は、他のプロセッサコアから初期化スレッドの起動依頼を受け付けると、当該スレッドを起動する(ステップS32)。その際、依頼された初期化スレッドを起動したプロセッサコアは、当該スレッドの起動に使用したメモリ資源などのリソースを使用中として負荷情報を更新する。プロセッサコアは、依頼された初期化スレッドによるデバイスの初期化が終了すると、他のプロセッサコアから別の初期化スレッドの起動依頼を受け付ける状態に戻る。
上述したように、各プロセッサコアP11、Q12、R13およびS14で動作するスケジューラは、負荷情報に基づいて負荷の低いプロセッサコアに初期化スレッドの起動を依頼する。その際、複数のスケジューラが同時に動作していることがあるので、各スケジューラが集約した負荷情報が、そのときの各プロセッサコアP11、Q12、R13およびS14の負荷状況を正確に反映した情報であるとは限らない。従って、負荷情報に基づいてプロセッサコアに初期化スレッドを割り振っていくと、プロセッサコアP11、Q12、R13およびS14の負荷に一時的に偏りが生じることがある。しかし、そのような負荷の偏りは、数多く、例えば50個から100個程度、あるいは100個以上の初期化スレッドを順次各プロセッサコアP11、Q12、R13およびS14に割り振っていく間に平均化されていく。従って、特に問題は生じない。
・動作の説明
図7は、実施例2にかかる起動方法によるマルチコアシステムの動作を示す図である。図7に示すように、図3に示すマルチコアシステムを有する装置の電源がオンになるか、またはリセットされると、プロセッサコアP11において、起動プログラムが動作し、ブートプログラムが動作する(ステップS41)。そして、プロセッサコア間通信によってプロセッサコアP11から他のプロセッサコアQ12、R13およびS14にブート指示が与えられる(ステップS42)。そして、各プロセッサコアP11、Q12、R13およびS14は、カーネルコアを起動し、初期設定を行う(ステップS43)。その際、プロセッサコアP11には、マスタ権が与えられる。
次いで、プロセッサコアP11は、プロセッサコア間通信によってプロセッサコアQ12へマスタ権の移動を送信する(ステップS44)。そして、プロセッサコアP11は、初期化スレッドaのスケジューリング(図7に「A」で示す)を行い(ステップS45)、マスタ権を破棄する。
マスタ権を受信したプロセッサコアQ12は、プロセッサコア間通信によってプロセッサコアR13へマスタ権の移動を送信する(ステップS46)。そして、プロセッサコアQ12は、初期化スレッドbのスケジューリング(図7に「B」で示す)を行い(ステップS47)、マスタ権を破棄する。
マスタ権を受信したプロセッサコアR13は、プロセッサコア間通信によってプロセッサコアS14へマスタ権の移動を送信する(ステップS48)。そして、プロセッサコアR13は、初期化スレッドcのスケジューリング(図7に「C」で示す)を行い(ステップS49)、マスタ権を破棄する。
マスタ権を受信したプロセッサコアS14は、プロセッサコア間通信によってプロセッサコアP11へマスタ権の移動を送信する(ステップS50)。そして、プロセッサコアS14は、初期化スレッドdのスケジューリング(図7に「D」で示す)を行い(ステップS51)、マスタ権を破棄する。
マスタ権を受信したプロセッサコアP11は、プロセッサコア間通信によってプロセッサコアQ12へマスタ権の移動を送信する(ステップS52)。そして、プロセッサコアP11は、初期化スレッドeのスケジューリング(図7に「E」で示す)を行い(ステップS53)、マスタ権を破棄する。以後、最終の初期化スレッドnのスケジューリング(図7に「N」で示す)が終了(ステップS54)するまで、同様の動作を繰り返す。最終の初期化スレッドnのスケジューリングを行うプロセッサコア、図示例ではプロセッサコアR13は、最初にマスタ権を受信したプロセッサコアP11にマスタ権を戻す(ステップS55)。これによって、マスタ権を巡回させる制御が解除される。
各初期化スレッドは、スケジューラにより、空いているプロセッサコア、すなわち処理を行っていないプロセッサコアに割り振られる。特に限定しないが、図7に示す例では、プロセッサコアP11がスケジューリングAを行っているときに、プロセッサコアQ12およびプロセッサコアR13は処理を行っており、プロセッサコアS14は処理を行っていない。従って、初期化スレッドaは、プロセッサコアS14に割り振られており、プロセッサコアS14で実行されている。同様に、初期化スレッドbは、スケジューリングBのときに空いているプロセッサコアP11に割り振られており、プロセッサコアP11で実行されている。c、d、eおよびnの初期化スレッドについても同様である。
このように、実施例2では、複数のスケジューラで別々の初期化スレッドのスケージュリングが並列に行われる。また、複数のプロセッサコアで別々の初期化スレッドが並列に行われる。カーネルコアの起動によって各プロセッサコアP11、Q12、R13およびS14の初期設定が完了した時点からF個の初期化スレッドによるデバイスの初期化が完了するまでの時間Tは、次の(1)式で表される。ただし、プロセッサコアの数をG、プロセッサコアでの平均スケジューリング時間をH[ms]、プロセッサコア間の平均通信時間をJ[ns]およびデバイスの平均初期化時間をK[ms]とする。JとHとKの大小関係は、通常、J<<H<Kである。Max(Y,Z)は、YとZのうちの大きい方であることを意味する。
T=(F/G)×Max(2×J+H,J+K) ・・・(1)
比較として、マスタ権を移動しないで、プロセッサコアP11が全ての初期化スレッドのスケジューリングを行う場合の動作を図8に示す。図8に示すように、マスタ権を移動しない場合には、プロセッサコアP11で初期化スレッドaのスケジューリングAが終了すると、初期化スレッドbのスケジューリングBが始まるというように、別々の初期化スレッドのスケージュリングは並列には行われない。この比較例において、カーネルコアの起動によって各プロセッサコアP11、Q12、R13およびS14の初期設定が完了した時点からF個の初期化スレッドによるデバイスの初期化が完了するまでの時間T’は、次の(2)式で表される。
T’=(F/G)×(H+J+K) ・・・(2)
スケジューリング時間には、例えば処理をしていないプロセッサコアの探索に要する時間などが含まれる。初期化時間には、例えばコンテキストの生成に要する時間やデバイスの初期化(レジスタへの初期値設定など)に要する時間などが含まれる。プロセッサコア間の通信には、一般にはプロセッサコアの動作クロックの1/2のクロックで1通信あたり10サイクル程度かかる。
一例として、初期化スレッドの数Fを100、プロセッサコアの数Gを4、プロセッサコアでの平均スケジューリング時間Hを1ms、プロセッサコア間の平均通信時間Jを20nsおよびデバイスの平均初期化時間Kを3msとする。また、プロセッサコアの動作クロックを1GHzとする。上記(1)式によれば、実施例2においてF個の初期化スレッドによるデバイスの初期化が完了するまでの時間Tは、75msとなる。一方、上記(2)式によれば、比較例においてF個の初期化スレッドによるデバイスの初期化が完了するまでの時間T’は、100msとなる。従って、実施例2によれば、比較例に対して装置の起動時間を25%改善することができる。また、従来のシングルコアシステム(プロセッサコアの数G=1)を有する装置では、プロセッサコアの動作クロックが1GHzであるときには、上記(2)式よりT’は400ms程度となる。従って、実施例2によれば、従来のシングルコアシステムを有する装置に対して装置の起動時間を81%程度改善することができる。
実施例2によれば、実施例1と同様の効果が得られる。また、実施例2では、スケジューラごとにプロセスやスレッドが予め割り当てられているわけではない。従って、ユーザがシステムの更新や新機能の追加を行っても、追加されたプロセスやスレッドもそのときの負荷情報に応じて各プロセッサコアに適当に割り振られていく。つまり、実施例2は、例えば携帯電話端末のように、ユーザによる操作で新機能を追加するなどの柔軟性の高い運用を行う組み込み機器に適している。また、実施例2は、組み込み機器のような固定用途の製品において、初期状態で起動されるアプリケーションまたは製品の出荷段階ですでに組み込まれているようなアプリケーションに対しても適用することができる。その場合には、そのようなアプリケーションに対しても、オペレーティングシステムの起動情報として用意されている機能テーブルと同等の機能テーブルを用意すればよい。実施例2によれば、そのようなアプリケーションの起動を含めて、装置を高速に起動することができる。
なお、実施例1および2においては、マルチコアシステムとして、一つのマイクロプロセッサに複数のプロセッサコアが内蔵されているマルチコアプロセッサを例にして説明したが、複数のマイクロプロセッサを搭載したマルチプロセッサにも同様に適用することができる。マルチプロセッサに適用する場合には、上述した説明においてプロセッサコアがプロセッサとなる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)複数のプロセッサコアと、
前記各プロセッサコアで動作し、処理の割り振りを行う権限であるマスタ権を有するときに前記各プロセッサコアに対して処理を割り振るスケジューラと、
前記各スケジューラが、マスタ権を受信した後、各プロセッサコアに対して処理を割り振る前に他のプロセッサコアへマスタ権の移動を送信し、各プロセッサコアに対して処理を割り振った後、マスタ権を破棄してマスタ権の受信を待機する状態となるサイクルを、処理対象の処理がなくなるまで繰り返すように制御するマスタ制御部と、
を備えることを特徴とするマルチコアシステム。
(付記2)マスタ権を有するスケジューラは、任意のプロセッサコアで処理可能な処理に対して割り振りを行い、プロセッサコアが予約されている処理に対しては、当該処理の起動を、当該予約されているプロセッサコアに依頼することを特徴とする付記1に記載のマルチコアシステム。
(付記3)前記各スケジューラは、マスタ権移動の送信後、前記各プロセッサコアの負荷情報を取得し、負荷の低いプロセッサコアに処理を割り振ることを特徴とする付記1に記載のマルチコアシステム。
(付記4)前記各スケジューラは、各プロセッサコアに対する処理の割り振りを終了するとマスタ権を破棄することを特徴とする付記1に記載のマルチコアシステム。
(付記5)前記マスタ制御部は、最後の処理対象の処理の割り振りが終了すると、マスタ権を所定のプロセッサコアに戻すことを特徴とする付記1に記載のマルチコアシステム。
(付記6)前記処理は、システムの起動時にシステムに接続されたデバイスを初期化する処理であることを特徴とする付記1〜5のいずれか一つに記載のマルチコアシステム。
(付記7)前記処理は、予めシステムの起動時に実行されるように組み込まれているプログラムであることを特徴とする付記1〜5のいずれか一つに記載のマルチコアシステム。
(付記8)複数のプロセッサコアを有するマルチコアシステムの起動方法において、
前記各プロセッサコアで動作し、処理の割り振りを行う権限であるマスタ権を有するときに前記各プロセッサコアに対して処理を割り振る各スケジューラが、マスタ権の受信、他のプロセッサコアへのマスタ権移動の送信、各プロセッサコアに対する処理の割り振り、マスタ権の破棄およびマスタ権の受信待機状態のサイクルを、処理対象の処理がなくなるまで繰り返すことを特徴とする起動方法。
(付記9)マスタ権を有するスケジューラは、任意のプロセッサコアで処理可能な処理に対して割り振りを行い、プロセッサコアが予約されている処理に対しては、当該処理の起動を、当該予約されているプロセッサコアに依頼することを特徴とする付記8に記載の起動方法。
(付記10)前記各スケジューラが、マスタ権移動の送信後、前記各プロセッサコアの負荷情報を取得し、負荷の低いプロセッサコアに処理を割り振ることを特徴とする付記8に記載の起動方法。
(付記11)前記各スケジューラが、各プロセッサコアに対する処理の割り振りを終了するとマスタ権を破棄することを特徴とする付記8に記載の起動方法。
(付記12)最後の処理対象の処理の割り振りが終了すると、マスタ権を所定のプロセッサコアに戻すことを特徴とする付記8に記載の起動方法。
(付記13)前記処理は、システムの起動時にシステムに接続されたデバイスを初期化する処理であることを特徴とする付記8〜12のいずれか一つに記載の起動方法。
(付記14)前記処理は、予めシステムの起動時に実行されるように組み込まれているプログラムであることを特徴とする付記8〜12のいずれか一つに記載の起動方法。
1,2,3,4,11,12,13,14 プロセッサコア
5,6,7,8 スケジューラ
9,31 マスタ制御部
15,16 デバイス

Claims (8)

  1. 複数のプロセッサコアと、
    処理の割り振りを行う権限であるマスタ権を有する場合に、前記複数のプロセッサコアに処理を割り振る複数のスケジューラと、
    前記複数のスケジューラの1つである第1のスケジューラがマスタ権を付与された場合に、前記第1のスケジューラが前記複数のプロセッサコアに処理を割り振る前に、前記第1のスケジューラのマスタ権を保持したまま、前記第1のスケジューラを除く前記複数のスケジューラのいずれかにマスタ権を付与し、前記第1のスケジューラが前記複数のプロセッサコアに処理を割り振った後、前記第1のスケジューラのマスタ権を排除するサイクルを、割り振り対象の処理がなくなるまで繰り返すマスタ制御部と、
    を備えることを特徴とするマルチコアシステム。
  2. マスタ権を有するスケジューラは、任意のプロセッサコアで処理可能な処理に対して割り振りを行い、プロセッサコアが予約されている処理に対しては、当該処理の起動を、当該予約されているプロセッサコアに依頼することを特徴とする請求項1に記載のマルチコアシステム。
  3. 前記複数のスケジューラの各々は、前記マスタ制御部によりマスタ権を付与された後、前記複数のプロセッサコアごとの負荷情報を取得し、前記複数のプロセッサコアのうち負荷の低いプロセッサコアに処理を割り振ることを特徴とする請求項1に記載のマルチコアシステム。
  4. 前記マスタ制御部は、前記複数のスケジューラの各々による最後の割り振り対象の処理の割り振りが終了すると、マスタ権を所定のプロセッサコアに戻すことを特徴とする請求項1に記載のマルチコアシステム。
  5. 複数のプロセッサコアを有するマルチコアシステムの起動方法において、
    処理の割り振りを行う権限であるマスタ権を有する場合に、前記複数のプロセッサコアに処理を割り振る複数のスケジューラの1つである第1のスケジューラが、マスタ権を付与された場合に、前記第1のスケジューラが前記複数のプロセッサコアに処理を割り振る前に、前記第1のスケジューラのマスタ権を保持したまま、前記第1のスケジューラを除く前記複数のスケジューラのいずれかにマスタ権を付与し、前記第1のスケジューラが前
    記複数のプロセッサコアに処理を割り振った後、前記第1のスケジューラのマスタ権を排除するサイクルを、割り振り対象の処理がなくなるまで繰り返すことを特徴とする起動方法。
  6. マスタ権を有するスケジューラは、任意のプロセッサコアで処理可能な処理に対して割り振りを行い、プロセッサコアが予約されている処理に対しては、当該処理の起動を、当該予約されているプロセッサコアに依頼することを特徴とする請求項5に記載の起動方法。
  7. 前記複数のスケジューラの各々が、マスタ権を付与された後、前記複数のプロセッサコアごとの負荷情報を取得し、前記複数のプロセッサコアのうち負荷の低いプロセッサコアに処理を割り振ることを特徴とする請求項5に記載の起動方法。
  8. 前記複数のスケジューラの各々による最後の割り振り対象の処理の割り振りが終了すると、マスタ権を所定のプロセッサコアに戻すことを特徴とする請求項5に記載の起動方法。
JP2012506709A 2010-03-24 2010-03-24 マルチコアシステムおよび起動方法 Expired - Fee Related JP5445669B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/055138 WO2011117987A1 (ja) 2010-03-24 2010-03-24 マルチコアシステムおよび起動方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013269776A Division JP5641128B2 (ja) 2013-12-26 2013-12-26 マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム

Publications (2)

Publication Number Publication Date
JPWO2011117987A1 JPWO2011117987A1 (ja) 2013-07-04
JP5445669B2 true JP5445669B2 (ja) 2014-03-19

Family

ID=44672579

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012506709A Expired - Fee Related JP5445669B2 (ja) 2010-03-24 2010-03-24 マルチコアシステムおよび起動方法

Country Status (5)

Country Link
US (1) US9218201B2 (ja)
EP (1) EP2551768A4 (ja)
JP (1) JP5445669B2 (ja)
CN (1) CN102812440B (ja)
WO (1) WO2011117987A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101689736B1 (ko) * 2010-08-18 2016-12-27 삼성전자주식회사 작업 스케쥴링 기능을 구비한 작업 처리장치, 스케쥴링 활성화 제어장치 및 대칭형 멀티프로세싱 환경에서의 작업 스케쥴링 방법
KR101842200B1 (ko) 2012-01-31 2018-03-26 엘지전자 주식회사 이동 단말기 및 그 제어방법
KR20140103569A (ko) * 2013-02-18 2014-08-27 한국전자통신연구원 적응적 계층 선택을 위한 장치 및 방법, 이를 구비한 서버
CN104142854B (zh) * 2013-05-09 2018-04-10 启碁科技股份有限公司 操作流程控制方法及电子系统
CN103346980B (zh) 2013-07-02 2016-08-10 华为技术有限公司 一种业务调度方法、装置及网络设备
JPWO2015015756A1 (ja) * 2013-08-02 2017-03-02 日本電気株式会社 不揮発性メモリ搭載サーバの省電力制御システム、制御装置、制御方法および制御プログラム
JP6263981B2 (ja) * 2013-11-20 2018-01-24 株式会社リコー 情報処理装置、情報処理装置の起動方法、及び、プログラム
KR102641520B1 (ko) * 2018-11-09 2024-02-28 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법
WO2021032287A1 (en) * 2019-08-20 2021-02-25 Nokia Solutions And Networks Oy Method and processing unit for performing tasks through master slave rotation

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6292045A (ja) * 1985-10-18 1987-04-27 Fujitsu Ltd 初期プログラムロ−ド制御方式
JPH07253960A (ja) * 1994-03-16 1995-10-03 Fujitsu Ltd マルチプロセッサシステムにおけるipl方式
JP2000339284A (ja) * 1999-05-28 2000-12-08 Fujitsu Ltd マルチプロセッサシステム及びその起動方法
JP2008186175A (ja) * 2007-01-29 2008-08-14 Toyota Motor Corp オペレーティングシステムの起動制御方法及び情報処理装置
JP2009075910A (ja) * 2007-09-21 2009-04-09 Seiko Epson Corp プロセッサ切り替え装置、情報表示装置およびマルチプロセッサシステム
JP2009098769A (ja) * 2007-10-15 2009-05-07 Sony Corp マルチプロセッサシステムおよび起動方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4630193A (en) * 1981-04-27 1986-12-16 Textron, Inc. Time multiplexed processor bus
JPH0460843A (ja) 1990-06-29 1992-02-26 Hitachi Ltd マルチプロセッサシステムにおけるタスクスケジュール方式
JPH11265297A (ja) 1998-03-17 1999-09-28 Mitsubishi Electric Corp 分散シミュレータシステム
JP2001117786A (ja) 1999-10-19 2001-04-27 Nec Corp プロセススケジューリング装置およびプロセススケジューリング方法
US7055060B2 (en) * 2002-12-19 2006-05-30 Intel Corporation On-die mechanism for high-reliability processor
JP2006252437A (ja) 2005-03-14 2006-09-21 Nec Corp パッチ適用方式及びパッチ適用方法
US7810094B1 (en) * 2005-09-30 2010-10-05 Emc Corporation Distributed task scheduling for symmetric multiprocessing environments
CN100562854C (zh) * 2008-03-11 2009-11-25 浙江大学 多核处理器操作系统负载均衡的实现方法
CN101819540B (zh) * 2009-02-27 2013-03-20 国际商业机器公司 在集群中调度任务的方法和系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6292045A (ja) * 1985-10-18 1987-04-27 Fujitsu Ltd 初期プログラムロ−ド制御方式
JPH07253960A (ja) * 1994-03-16 1995-10-03 Fujitsu Ltd マルチプロセッサシステムにおけるipl方式
JP2000339284A (ja) * 1999-05-28 2000-12-08 Fujitsu Ltd マルチプロセッサシステム及びその起動方法
JP2008186175A (ja) * 2007-01-29 2008-08-14 Toyota Motor Corp オペレーティングシステムの起動制御方法及び情報処理装置
JP2009075910A (ja) * 2007-09-21 2009-04-09 Seiko Epson Corp プロセッサ切り替え装置、情報表示装置およびマルチプロセッサシステム
JP2009098769A (ja) * 2007-10-15 2009-05-07 Sony Corp マルチプロセッサシステムおよび起動方法

Also Published As

Publication number Publication date
EP2551768A1 (en) 2013-01-30
US20130024870A1 (en) 2013-01-24
US9218201B2 (en) 2015-12-22
CN102812440A (zh) 2012-12-05
JPWO2011117987A1 (ja) 2013-07-04
CN102812440B (zh) 2016-05-04
EP2551768A4 (en) 2013-10-09
WO2011117987A1 (ja) 2011-09-29

Similar Documents

Publication Publication Date Title
JP5445669B2 (ja) マルチコアシステムおよび起動方法
JP4606142B2 (ja) スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
US9454397B2 (en) Data processing systems
US9043806B2 (en) Information processing device and task switching method
JP2006195823A (ja) Dma装置
TW200540634A (en) Processor system, dma control circuit, dma control method, control method for DMA controller, graphic processing method, and graphic processing circuit
JP2010044784A (ja) システムにおける要求のスケジューリング
US20130311751A1 (en) System and data loading method
JP5819184B2 (ja) 情報処理装置及び情報処理装置の制御方法
JP5641128B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
Bi et al. Research of key technologies for embedded Linux based on ARM
US20130298132A1 (en) Multi-core processor system and scheduling method
JP2002288104A (ja) コンピュータシステム、そのリソース割り当て方法及びプログラム
US9170839B2 (en) Method for job scheduling with prediction of upcoming job combinations
KR102416465B1 (ko) 공유 자원을 효율적으로 관리하는 데이터 처리 시스템
JP2008041059A (ja) マルチプロセッサ制御装置及び情報処理装置
JP6368452B2 (ja) 非同期のデバイスによって実行されるタスクのスケジューリングの向上
JP5447666B2 (ja) マルチプロセッサシステムおよびスケジューリング方法
EP4187374A1 (en) Kernel restarting method
JP2005327007A (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
JP2021043931A (ja) コンピュータ装置及びデバッグ方法
CN115599530B (zh) 一种基于Linux内核的硬实时优化改造方法
KR102268796B1 (ko) 하이퍼바이저 기반 plc 서비스 처리 장치
JP6435911B2 (ja) 情報処理装置、起動処理方法、及び起動処理プログラム
JP2007219925A (ja) バス制御装置、バス制御プログラム及び記録媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130521

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130827

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131028

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131209

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees