JP2014078266A - マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム - Google Patents

マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム Download PDF

Info

Publication number
JP2014078266A
JP2014078266A JP2013269776A JP2013269776A JP2014078266A JP 2014078266 A JP2014078266 A JP 2014078266A JP 2013269776 A JP2013269776 A JP 2013269776A JP 2013269776 A JP2013269776 A JP 2013269776A JP 2014078266 A JP2014078266 A JP 2014078266A
Authority
JP
Japan
Prior art keywords
core
processor
cores
master right
master
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.)
Granted
Application number
JP2013269776A
Other languages
English (en)
Other versions
JP5641128B2 (ja
Inventor
Koichiro Yamashita
浩一郎 山下
Hiromasa Yamauchi
宏真 山内
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
Priority to JP2013269776A priority Critical patent/JP5641128B2/ja
Publication of JP2014078266A publication Critical patent/JP2014078266A/ja
Application granted granted Critical
Publication of JP5641128B2 publication Critical patent/JP5641128B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】マルチコアプロセッサシステムにおいて装置を高速に起動すること。
【解決手段】複数のプロセッサコアでそれぞれ動作するスケジューラは、処理の割り振りを行う権限であるマスタ権を有するときに各プロセッサコアに対して処理を割り振る。マスタ制御部は、スケジューラ間でのマスタ権の移動を制御する。各スケジューラは、マスタ権を受信した後、各プロセッサコアに対して処理を割り振る前に他のプロセッサコアへマスタ権の移動を送信する。各スケジューラは、各プロセッサコアに対して処理を割り振った後、マスタ権を破棄してマスタ権の受信を待機する状態となる。各スケジューラは、このようなマスタ権の受信、マスタ権移動の送信、各プロセッサコアに対する処理の割り振り、マスタ権の破棄およびマスタ権の受信待機というサイクルを、処理対象の処理がなくなるまで繰り返す。
【選択図】図1

Description

この発明は、マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムに関する。
従来、コンピュータや携帯端末などの情報処理装置、またはデジタルカメラやテレビシステムなどの画像や音声の処理装置では、ユーザが装置の電源をオンにした後、できるだけ速やかに装置の起動を完了することが望まれている。高速に装置を起動する方式の一つに、ハイバネートブート方式がある。ハイバネートブート方式は、通常の起動シーケンスを行わずに、メモリなどに保持しておいた前回の動作状態を復元することによって高速に起動する技術である。また、UI(User Interface、ユーザインターフェース)先行起動方式がある。UI先行起動方式は、装置の起動時に早い段階でユーザに対してダミーの画面を表示することにより擬似的に高速に起動したようにみせる技術である。
一方、複数のプロセッサを有するマルチプロセッサシステムや、複数のプロセッサコアを有するマルチコアシステム(以下、まとめてマルチコアプロセッサシステムとする)がある。マルチコアプロセッサシステムでは、複数のスケジューラのそれぞれに予め複数のプロセスを割り当てておき、選択されたスケジューラにおいてその割り当てに従って順次プロセスを実行するスケジューリング方式がある。また、マルチプロセッサシステムにおいて、アルゴリズムの異なる複数のスケジューラを用意し、タスクごとに適当なアルゴリズムのスケジューラでスケジューリングを行う方式がある。また、マスタスケジューラを有するプロセッサとスレーブスケジューラを有するプロセッサとがあり、マスタスケジューラがスレーブスケジューラによるプロセスの実行を制御する方式がある。
特開2001−117786号公報 特開平4−60843号公報 特開平11−265297号公報
しかしながら、ハイバネートブート方式では、装置の動作状態を格納するための記憶領域が必要であるという問題点がある。UI先行起動方式では、実際には装置の起動が高速に完了するわけではない。また、スケジューラごとにプロセスが予め割り当てられていると、各スケジューラに柔軟にプロセスを割り当てることができない。そのため、例えば携帯電話端末のように、使用中にユーザがシステムの更新や新機能の追加を行うことができるようなシステムには向いていない。また、複数のスケジューラが動作する場合には、確保したメモリや割込み番号などに矛盾が生じないようにスケジューラ間で同期をとる必要があるという問題点がある。また、アルゴリズムの異なる複数のスケジューラを動作させてスケジューリングの速さを競わせるような場合には、採用されなかったスケジューラが動作していたプロセッサは、結果として不要な演算を行ったことになる。これは、消費電力の点で問題である。また、アルゴリズムの異なる複数のスケジューラを用意しても、いずれかのアルゴリズムのスケジューラに負荷が集中すると、そのスケジューラが動作するプロセッサの処理が遅くなるという問題点がある。
マルチコアプロセッサシステムにおいて装置を高速に起動することができるマルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムを提供することを目的とする。
本発明の一側面によれば、割り振られたスレッドをそれぞれ実行する複数のコアと、前記複数のコアに割り振る前記スレッドを記憶する記憶部と、を有するマルチコアプロセッサシステムであって、前記複数のコアのうちの第1のコアが、前記記憶部から読み出した前記スレッドを前記複数のコアに割り振る権限であるマスタ権を付与された場合に、読み出した前記スレッドを前記複数のコアに割り振る前に、前記マスタ権を保持したまま前記第1のコアを除く前記複数のコアのうちの第2のコアにマスタ権を付与し、前記第1のコアが前記複数のコアに前記スレッドを割り振った後、前記第1のコアのマスタ権を破棄するマルチコアプロセッサシステムが提案される。
また、本発明の一側面によれば、割り振られたスレッドをそれぞれ実行する複数のコアと、前記複数のコアに割り振る前記スレッドを記憶する記憶部を有するマルチコアプロセッサシステムが、前記記憶部から読み出した前記スレッドを前記複数のコアに割り振る権限であるマスタ権を前記複数のコアのうちの第1のコアに付与し、読み出した前記スレッドを前記複数のコアに割り振る前に、前記第1のコアに付与した前記マスタ権を保持したまま前記第1のコアを除く前記複数のコアのうちの第2のコアにマスタ権を付与し、前記第1のコアが前記複数のコアに前記スレッドを割り振った後、前記第1のコアに付与したマスタ権を破棄するマルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムが提案される。
開示のマルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラムによれば、マルチコアプロセッサシステムにおいて装置を高速に起動することができるという効果を奏する。
実施例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 (3)

  1. 割り振られたスレッドをそれぞれ実行する複数のコアと、
    前記複数のコアに割り振る前記スレッドを記憶する記憶部と、
    を有するマルチコアプロセッサシステムであって、前記複数のコアのうちの第1のコアは、
    前記記憶部から読み出した前記スレッドを前記複数のコアに割り振る権限であるマスタ権を付与された場合に、読み出した前記スレッドを前記複数のコアに割り振る前に、前記マスタ権を保持したまま前記第1のコアを除く前記複数のコアのうちの第2のコアにマスタ権を付与し、前記第1のコアが前記複数のコアに前記スレッドを割り振った後、前記第1のコアのマスタ権を破棄する
    マルチコアプロセッサシステム。
  2. 割り振られたスレッドをそれぞれ実行する複数のコアと、前記複数のコアに割り振る前記スレッドを記憶する記憶部を有するマルチコアプロセッサシステムの制御方法であって、前記マルチコアプロセッサシステムが、
    前記記憶部から読み出した前記スレッドを前記複数のコアに割り振る権限であるマスタ権を前記複数のコアのうちの第1のコアに付与し、
    読み出した前記スレッドを前記複数のコアに割り振る前に、前記第1のコアに付与した前記マスタ権を保持したまま前記第1のコアを除く前記複数のコアのうちの第2のコアにマスタ権を付与し、
    前記第1のコアが前記複数のコアに前記スレッドを割り振った後、前記第1のコアに付与したマスタ権を破棄する
    処理を実行するマルチコアプロセッサシステムの制御方法。
  3. 割り振られたスレッドをそれぞれ実行する複数のコアと、前記複数のコアに割り振る前記スレッドを記憶する記憶部を有するマルチコアプロセッサシステムの制御プログラムであって、前記マルチコアプロセッサシステムに、
    前記記憶部から読み出した前記スレッドを前記複数のコアに割り振る権限であるマスタ権を前記複数のコアのうちの第1のコアに付与し、
    読み出した前記スレッドを前記複数のコアに割り振る前に、前記第1のコアに付与した前記マスタ権を保持したまま前記第1のコアを除く前記複数のコアのうちの第2のコアにマスタ権を付与し、
    前記第1のコアが前記複数のコアに前記スレッドを割り振った後、前記第1のコアに付与したマスタ権を破棄する
    処理を実行させるマルチコアプロセッサシステムの制御プログラム。
JP2013269776A 2013-12-26 2013-12-26 マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム Expired - Fee Related JP5641128B2 (ja)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Related Parent Applications (1)

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

Publications (2)

Publication Number Publication Date
JP2014078266A true JP2014078266A (ja) 2014-05-01
JP5641128B2 JP5641128B2 (ja) 2014-12-17

Family

ID=50783462

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP5641128B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150146029A (ko) * 2014-06-20 2015-12-31 에스케이하이닉스 주식회사 반도체 장치 및 그의 글로벌 동기형 동적 전압 주파수 스케일링 방법
KR20190097843A (ko) * 2018-02-13 2019-08-21 서강대학교산학협력단 데이터 전송 시스템 및 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150146029A (ko) * 2014-06-20 2015-12-31 에스케이하이닉스 주식회사 반도체 장치 및 그의 글로벌 동기형 동적 전압 주파수 스케일링 방법
KR102032330B1 (ko) 2014-06-20 2019-10-16 에스케이하이닉스 주식회사 반도체 장치 및 그의 글로벌 동기형 동적 전압 주파수 스케일링 방법
KR20190097843A (ko) * 2018-02-13 2019-08-21 서강대학교산학협력단 데이터 전송 시스템 및 방법
KR102035843B1 (ko) 2018-02-13 2019-10-23 서강대학교 산학협력단 데이터 전송 시스템 및 방법

Also Published As

Publication number Publication date
JP5641128B2 (ja) 2014-12-17

Similar Documents

Publication Publication Date Title
JP5445669B2 (ja) マルチコアシステムおよび起動方法
JP4606142B2 (ja) スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
US9411646B2 (en) Booting secondary processors in multicore system using kernel images stored in private memory segments
US9454397B2 (en) Data processing systems
KR20140107408A (ko) 그래픽스 처리 유닛 상의 가상 기계들 사이의 변경
JP2006195823A (ja) Dma装置
CN111625364B (zh) 任务分配方法、装置、电子设备及计算机可读介质
TW202246977A (zh) 一種任務調度方法、任務調度裝置、電腦設備、電腦可讀儲存媒介和電腦程式產品
JP2008186175A (ja) オペレーティングシステムの起動制御方法及び情報処理装置
JP5641128B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP5819184B2 (ja) 情報処理装置及び情報処理装置の制御方法
JP2017162522A (ja) マルチコアシステムのインターラプト割り当て方法及び装置
JP2002288104A (ja) コンピュータシステム、そのリソース割り当て方法及びプログラム
US9372724B2 (en) System and method for conditional task switching during ordering scope transitions
WO2018084024A1 (ja) 車両制御装置
KR102416465B1 (ko) 공유 자원을 효율적으로 관리하는 데이터 처리 시스템
US20230067432A1 (en) Task allocation method, apparatus, electronic device, and computer-readable storage medium
JP2008041059A (ja) マルチプロセッサ制御装置及び情報処理装置
JP5447666B2 (ja) マルチプロセッサシステムおよびスケジューリング方法
JP2005327007A (ja) 組込みコンピュータ制御プログラム、そのプログラムを記録した記録媒体、及び組込みシステム
JP2021043931A (ja) コンピュータ装置及びデバッグ方法
CN115599530B (zh) 一种基于Linux内核的硬实时优化改造方法
JP6435911B2 (ja) 情報処理装置、起動処理方法、及び起動処理プログラム
WO2015024433A1 (zh) 线程运行方法及装置
EP4018306A1 (en) Method and processing unit for performing tasks through master slave rotation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140924

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141013

R150 Certificate of patent or registration of utility model

Ref document number: 5641128

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees