JP5447666B2 - マルチプロセッサシステムおよびスケジューリング方法 - Google Patents

マルチプロセッサシステムおよびスケジューリング方法 Download PDF

Info

Publication number
JP5447666B2
JP5447666B2 JP2012521255A JP2012521255A JP5447666B2 JP 5447666 B2 JP5447666 B2 JP 5447666B2 JP 2012521255 A JP2012521255 A JP 2012521255A JP 2012521255 A JP2012521255 A JP 2012521255A JP 5447666 B2 JP5447666 B2 JP 5447666B2
Authority
JP
Japan
Prior art keywords
task
processor
flag
state
accepted
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
JP2012521255A
Other languages
English (en)
Other versions
JPWO2011161831A1 (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 JPWO2011161831A1 publication Critical patent/JPWO2011161831A1/ja
Application granted granted Critical
Publication of JP5447666B2 publication Critical patent/JP5447666B2/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Description

この発明は、マルチプロセッサシステムおよびスケジューリング方法に関する。
従来、複数のプロセッサ間で負荷情報を通知し、最も負荷の軽いプロセッサで処理を実行するマルチプロセッサのスケジューリング方式がある。また、オペレーティングシステムによって提供される機能と各機能を実行するプロセッサとの対応を示す管理情報を用意し、この管理情報に基づいて複数のプロセッサにタスク処理を振り分けるようにしたマルチプロセッサシステムがある。また、処理の実行を担うプロセッサから処理を依頼するプロセッサへ処理対象に関する情報を通知し、この情報に基づいて処理を実行するプロセッサを決定するマルチプロセッサシステムがある。また、予めユーザによってプログラム中に指定されたプロセッサの情報に基づいてタスクをプロセッサに割り付けるマルチプロセッサのスケジューリング方式がある。
特開平5−189390号公報 特開平6−139209号公報 特開昭64−13664号公報 特開昭63−208154号公報
しかしながら、従来のマルチプロセッサシステムにおいて各プロセッサに動的にタスクの割り付けを行って負荷を分散させる場合、各プロセッサは負荷情報を計算し、タスクの割り付けを行うプロセッサに負荷情報をプロセッサ間通信によって通知する。そのため、動的なタスクの割り付けを行う際のオーバーヘッドが大きくなってしまい、タスクの割り付け処理に時間がかかり、マルチプロセッサシステムにおけるスループットが低下するという問題点がある。
マルチプロセッサシステムにおけるスループットの低下を抑えることができるマルチプロセッサシステムおよびスケジューリング方法を提供することを目的とする。
マルチプロセッサシステムはマスタープロセッサ、一つ以上のスレーブプロセッサおよび同期部を備える。マスタープロセッサは第1のフラグを備える。第1のフラグは、マスタープロセッサがタスク起動の受け付け可能な状態にあるか否かを示す。マスタープロセッサは、自プロセッサで処理するタスク量に応じた頻度で第1のフラグの状態を繰り返し更新する。マスタープロセッサは第2のフラグを備える。第2のフラグはスレーブプロセッサの第3のフラグの状態を反映する。スレーブプロセッサは第3のフラグを備える。第3のフラグは、スレーブプロセッサがタスク起動の受け付け可能な状態にあるか否かを示す。スレーブプロセッサは、自プロセッサで処理するタスク量に応じた頻度で第3のフラグの状態を繰り返し更新する。同期部は第3のフラグと第2のフラグとの間でフラグの状態を同期させる。マスタープロセッサは自プロセッサまたはスレーブプロセッサに対して第1のフラグおよび第2のフラグの状態に基づいてタスクを起動する。スレーブプロセッサはマスタープロセッサによりタスクを割り付けられる。
開示のマルチプロセッサシステムおよびスケジューリング方法によれば、マルチプロセッサシステムにおけるスループットの低下を抑えることができるという効果を奏する。
実施例1にかかるマルチプロセッサシステムを示すブロック図である。 実施例1にかかるスケジューリング方法を示すフローチャートである。 実施例2にかかるマルチプロセッサシステムを示すブロック図である。 実施例2にかかるマルチプロセッサシステムにおけるタスク受付スレッドによる処理を示すフローチャートである。 実施例2にかかるスケジューリング方法を示すフローチャートである。 実施例2にかかるスケジューリング方法によるタスクの起動例を示す説明図である。
以下に、この発明にかかるマルチプロセッサシステムおよびスケジューリング方法の実施例を図面に基づいて詳細に説明する。以下の実施例は、マルチプロセッサシステムにおいて、各プロセッサにタスク起動の受付可否を示すフラグがあり、このフラグに同期したフラグがマスタープロセッサにあり、このフラグに基づいてマスタープロセッサが各プロセッサにタスクを起動するようにしたものである。なお、この実施例によりこの発明が限定されるものではない。
(実施例1)
・マルチプロセッサシステムの説明
図1は、実施例1にかかるマルチプロセッサシステムを示すブロック図である。図1に示すように、マルチプロセッサシステムはマスタープロセッサ1、一つ以上のスレーブプロセッサ2および同期部3を備える。
マスタープロセッサ1は第1のフラグ4および第2のフラグ5を備える。第1のフラグ4は、マスタープロセッサ1がタスク起動の受け付け可能な状態にあるか否かを示す。マスタープロセッサ1は、自プロセッサで処理するタスク量に応じた頻度で第1のフラグ4の状態を、タスク起動の受け付け可能な状態と不可能な状態とに繰り返し更新する。第2のフラグ5はスレーブプロセッサ2の第3のフラグ6の状態を反映する。
スレーブプロセッサ2は第3のフラグ6を備える。第3のフラグ6は、スレーブプロセッサ2がタスク起動の受け付け可能な状態にあるか否かを示す。スレーブプロセッサ2は、自プロセッサで処理するタスク量に応じた頻度で第3のフラグ6の状態を、タスク起動の受け付け可能な状態と不可能な状態とに繰り返し更新する。
同期部3は第3のフラグ6と第2のフラグ5との間でフラグの状態を同期させる。同期部3によるフラグの同期は、プロセッサ間通信によらずに行われる。マスタープロセッサ1は全てのプロセッサ1,2に対して第1のフラグ4の状態と第2のフラグ5の状態とに基づいてタスクを起動する。つまり、マスタープロセッサ1は、第1のフラグ4の状態と第2のフラグ5に反映された第3のフラグ6の状態とに基づいて自プロセッサまたはスレーブプロセッサ2にタスクを割り付ける。
・スケジューリング方法の説明
図2は、実施例1にかかるスケジューリング方法を示すフローチャートである。図2に示すように、タスク起動処理が開始されると、マスタープロセッサ1において自プロセッサで処理するタスク量に応じた頻度で第1のフラグ4の状態が繰り返し更新される(ステップS1)。
また、スレーブプロセッサ2において自プロセッサで処理するタスク量に応じた頻度で第3のフラグ6の状態が繰り返し更新される(ステップS2)。第3のフラグ6の状態が更新されると、同期部3により第3のフラグ6と第2のフラグ5とが同期される(ステップS3)。それによって、第3のフラグ6の状態が第2のフラグ5の状態に反映される。
マスタープロセッサ1は、第1のフラグ4の状態と第2のフラグ5の状態を参照してタスク起動の受け付け可能な状態にあるプロセッサを認識し、タスク起動の受け付け可能な状態にあるプロセッサにタスクを起動する(ステップS4)。そして、ステップS1に戻り、ステップS1からステップS4までの処理を起動するタスクがなくなるまで繰り返す。
なお、図2には、各ステップが逐次的に行われるように示されているが、これはフローチャートが逐次的に表現されるものであるからである。実際には、マスタープロセッサ1が第1のフラグ4を更新されることと、スレーブプロセッサ2が第3のフラグ6を更新し、その更新が第2のフラグ5に反映されることと、マスタープロセッサ1が各プロセッサにタスクを起動すること、との間には依存関係がない。従って、ステップS1の後にステップS4が起こったり、ステップS2およびステップS3の後にステップS4が起こったりすることがある。また、ステップS1が連続して起こったり、ステップS2およびステップS3が連続して起こったりすることがある。
実施例1によれば、スレーブプロセッサ2がタスク起動の受け付け可能な状態にあるか否かということが第2のフラグ5の状態に反映されるので、スレーブプロセッサ2がプロセッサ間通信によってマスタープロセッサ1に負荷情報を通知しなくても、マスタープロセッサ1はタスク起動の受け付け可能な状態にあるプロセッサにタスクを起動することができる。従って、タスクを割り付ける際のオーバーヘッドがなくなり、スループットの低下を抑えることができる。
また、実施例1によれば、各プロセッサ1,2が、自プロセッサで処理するタスク量に応じた頻度でタスク起動の受け付け可能な状態になるので、自プロセッサで処理するタスク量が多い場合にはタスク起動の受け付け可能な状態になる頻度が少なくなる。つまり、タスクが割り付けられる確率が低くなる。一方、自プロセッサで処理するタスク量が少ない場合にはタスク起動の受け付け可能な状態になる頻度が多くなり、タスクが割り付けられる確率が高くなる。従って、各プロセッサ1,2の負荷がほぼ均等になる。なお、スレーブプロセッサが二つ以上あっても同様である。
(実施例2)
・マルチプロセッサシステムの説明
図3は、実施例2にかかるマルチプロセッサシステムを示すブロック図である。図3に示すように、マルチプロセッサシステムはマスタープロセッサとしてのプロセッサ#0_21、特に限定しないが、例えば二つのスレーブプロセッサとしてのプロセッサ#1_22およびプロセッサ#2_23、並びに同期部としてのスヌープコントローラ24を備える。各プロセッサ(#0、#1および#2)21〜23はバスネットワーク25を介してメモリなどの共有資源26にアクセス可能となっている。各プロセッサ(#0、#1および#2)21〜23によって並列処理が行われる。
プロセッサ#0_21ではオペレーティングシステム32が動作する。オペレーティングシステム32上で実行タスク31が実行される。オペレーティングシステム32によってランキュー33、ウェイトキュー34およびタスクランチャー35が実現される。ウェイトキュー34は、実行準備が完了し、かつ実行先のプロセッサが決定していないタスクを保持する。タスクランチャー35は、ウェイトキュー34からタスクを取り出し、各プロセッサ(#0、#1および#2)21〜23に取り出したタスクを割り付ける。タスクランチャー35は、各プロセッサ(#0、#1および#2)21〜23に後述するタスク受付スレッドを配布する。ランキュー33は、タスクランチャー35によって割り付けられたタスクおよびタスク受付スレッドをタスクスイッチによる実行再開を待つ間保持する。
プロセッサ#0_21はキャッシュ36を備えている。キャッシュ36のアドレス空間には第1のフラグとしての受付フラグF0_38が設けられ、この領域をロックし、受付フラグF0_38のアドレス空間を常にキャッシュ36上に配置する。プロセッサ#0_21が実行タスク31としてタスク受付スレッドを実行することによって受付フラグF0_38のセットまたはアンセットが行われる。受付フラグF0_38は、プロセッサ#0_21がタスク起動の受け付け可能な状態にあるときにセットされ、タスク起動の受け付け不可能な状態にあるときにアンセットされる。
プロセッサ#1_22ではオペレーティングシステム42が動作する。オペレーティングシステム42上で実行タスク41が実行される。オペレーティングシステム42によってランキュー43が実現される。プロセッサ#1_22はキャッシュ44を備えている。キャッシュ44のアドレス空間には、プロセッサ#1_22がタスク受付スレッドを実行することによってセットまたはアンセットされる第3のフラグとしての受付フラグF1_45が設けられ、この領域をロックし、受付フラグF1_45のアドレス空間を常にキャッシュ44上に配置する。受付フラグF1_45は、プロセッサ#1_22がタスク起動の受け付け可能な状態にあるときにセットされ、タスク起動の受け付け不可能な状態にあるときにアンセットされる。
プロセッサ#2_23ではオペレーティングシステム52が動作する。オペレーティングシステム52上で実行タスク51が実行される。オペレーティングシステム52によってランキュー53が実現される。プロセッサ#2_23はキャッシュ54を備えている。キャッシュ54のアドレス空間には、プロセッサ#2_23がタスク受付スレッドを実行することによってセットまたはアンセットされる第3のフラグとしての受付フラグF2_55が設けられ、この領域をロックし、受付フラグF2_55のアドレス空間を常にキャッシュ54上に配置する。受付フラグF2_55は、プロセッサ#2_23がタスク起動の受け付け可能な状態にあるときにセットされ、タスク起動の受け付け不可能な状態にあるときにアンセットされる。
また、プロセッサ#0_21のキャッシュ36のアドレス空間には第2のフラグとしての受付フラグ(F’1およびF’2)37が設けられ、この領域をロックし、受付フラグ37のアドレス空間を常にキャッシュ36上に配置する。この受付フラグ37にはF’1、F’2の各フラグが設けられている。受付フラグF’1はプロセッサ#1_22の受付フラグF1_45に対応している。受付フラグF’2はプロセッサ#2_23の受付フラグF2_55に対応している。
スヌープコントローラ24は各プロセッサ(#0、#1および#2)21〜23においてキャッシュ36,44,54とプロセッサ内バスとの間に設けられている。スヌープコントローラ24は各プロセッサ(#0、#1および#2)21〜23のプロセッサ内バスを用いずにキャッシュ36,44,54の間でデータを移動させることができる。スヌープコントローラ24によって受付フラグ37のF’1とプロセッサ#1_22の受付フラグF1_45、および受付フラグ37のF’2とプロセッサ#2_23の受付フラグF2_55とが同期しており、常に同じ状態になっている。スヌープコントローラ24は例えばハードウェアで構成されている。
・タスク受付スレッドの説明
図4は、実施例2にかかるマルチプロセッサシステムにおけるタスク受付スレッドによる処理を示すフローチャートである。図4に示すように、タスク受付スレッドがディスパッチされると、タスク受付スレッドはディスパッチの開始時に、ディスパッチされたプロセッサの受付フラグ(F0、F1およびF2)38,45,55をセットする(ステップS11)。次いで、タスク受付スレッドはディスパッチの終了時、例えばディスパッチの終了直前に、ディスパッチの開始時にセットした受付フラグ(F0、F1およびF2)38,45,55をアンセットする(ステップS12)。そして、タスク受付スレッドによる処理が終了する。
図4に示すタスク受付スレッドによる処理は、各プロセッサ(#0、#1および#2)21〜23においてタスク受付スレッドがディスパッチされるたびに行われる。1回のディスパッチによって行われる受付フラグのセットおよびアンセットの処理(ステップS11、ステップS12)は、オペレーティングシステムにより設定されるディスパッチ周期内で完結する。
・スケジューリング方法の説明
初期状態では、各プロセッサ(#0、#1および#2)21〜23のランキュー33,43,53は空である。また、F0、F1およびF2の各受付フラグ38,45,55はアンセットの状態であり、各プロセッサ(#1および#2)22,23に対応したF’1およびF’2の各受付フラグ37もアンセットの状態であるとする。
図5は、実施例2にかかるスケジューリング方法を示すフローチャートである。図5に示すように、タスク起動処理が開始されると、ウェイトキュー34に実行準備が完了したタスクが蓄積されていく。初めにタスクランチャー35は各プロセッサ(#0、#1および#2)21〜23にタスク受付スレッドを配布する(ステップS21)。それによって、各プロセッサ(#0、#1および#2)21〜23のランキュー33,43,53にはタスク受付スレッドが一つずつ格納される。
次いで、タスクランチャー35はウェイトキュー34にタスクがあるか否かを判断する(ステップS22)。ウェイトキュー34にタスクがない場合(ステップS22:No)、ウェイトキュー34にタスクが格納されるのを待つ。ウェイトキュー34にタスクがある場合、あるいは空のウェイトキュー34にタスクが格納された場合(ステップS22:Yes)、タスクランチャー35はウェイトキュー34から最も早くウェイトキュー34に格納されたタスクを取り出し、その取り出したタスクをウェイトキュー34から削除する(ステップS23)。
次いで、タスクランチャー35はウェイトキュー34から取り出したタスクにタグ情報があり、このタグ情報により割り付け先のプロセッサが指定されているか否かを判断する(ステップS24)。タグ情報は、例えばアプリケーションプログラムの設計段階で予めプロファイラやシミュレータにより取得されている。タグ情報は、例えばアプリケーションプログラム中に記述されており、マスターとなるプロセッサ#0_21に内蔵されたメモリ(図示省略)に格納されている。
割り付け先のプロセッサが指定されている場合(ステップS24:Yes)、タスクランチャー35はタグ情報により指定されたプロセッサにタスクを起動する(ステップS25)。そして、ステップS22へ戻る。
一方、割り付け先のプロセッサが指定されていない場合(ステップS24:No)、タスクランチャー35は、マスターとなるプロセッサ#0_21に対応したF0の受付フラグ38とスレーブとなる各プロセッサ(#1および#2)22,23に対応したF’1およびF’2の各受付フラグ37を参照し、F0、F’1またはF’2の受付フラグがセットされているプロセッサがあるか否かを判断する(ステップS26)。F0、F’1またはF’2の受付フラグがセットされているプロセッサがない場合(ステップS26:No)、F0、F’1またはF’2の受付フラグがセットされるのを待つ。
F0、F’1またはF’2の受付フラグがセットされているプロセッサがある場合、あるいはアンセットの状態のF0、F’1またはF’2の受付フラグがセットされた場合(ステップS26:Yes)、F0、F’1またはF’2の受付フラグがセットされた状態のプロセッサにタスクを起動する(ステップS27)。そして、ステップS22へ戻る。タスクを起動する際、F0、F’1およびF’2の受付フラグのうち複数のフラグがセットされた状態となることがある。その場合には、タスクランチャー35は所定のルールに基づいて一つのプロセッサを選択し、その選択したプロセッサにタスクを起動する。プロセッサを選択するルールとしては、例えばプロセッサ番号の小さいプロセッサを選択するようにしてもよいし、乱数を発生させ、その乱数の値をプロセッサの数で除した剰余をプロセッサ番号とするプロセッサを選択するようにしてもよい。
ステップS25またはステップS27からステップS22に戻った後、ステップS22からステップS27までを繰り返す。タスクランチャー35が各プロセッサ(#0、#1および#2)21〜23に起動するタスクがなくなったら、図5に示すタスク起動の一連の処理を終了する。
・マルチプロセッサシステムの動作例
次に、タスクを起動する際の各プロセッサ(#0、#1および#2)21〜23の動作の一例について説明する。図6は、実施例2にかかるスケジューリング方法によるタスクの起動例を示す説明図である。図6に示すように、マスターとなるプロセッサ#0_21のタスクランチャー35によってスケジューリング処理が開始され、ある時刻t0における各プロセッサ(#0、#1および#2)21〜23の状態が次の通りであるとする。
・時刻t0の状態
プロセッサ#0_21では実行タスク31としてタスク受付スレッドがディスパッチされている。プロセッサ#0_21ではタスク受付スレッドによりプロセッサ#0_21の受付フラグF0_38がセットされる。プロセッサ#0_21のランキュー33にはタスク#1が格納されている。
プロセッサ#1_22では実行タスク41としてタスク#2がディスパッチされている。プロセッサ#1_22のランキュー43にはタスク#3およびタスク受付スレッドがこの順にタスクスイッチによる実行再開を待って格納されている。
プロセッサ#2_23では実行タスク51としてタスク#4がディスパッチされている。プロセッサ#2_23のランキュー53にはタスク#5、タスク#6およびタスク受付スレッドがこの順にタスクスイッチによる実行再開を待って格納されている。
ウェイトキュー34にはタスク#7、タスク#8およびタスク#9がこの順にプロセッサに割り付けられるのを待って格納されている。タスク#7およびタスク#8にはタグ情報がないとする。タスク#9はタグ情報により割り付け先のプロセッサとしてプロセッサ#0_21が指定されているとする。
・時刻t0後の時刻t1の状態
タスクランチャー35はウェイトキュー34からキューの先頭にあるタスク#7を取り出し、ウェイトキュー34からタスク#7を削除する。そして、タスクランチャー35は、取り出したタスク#7にタグ情報があるか否かを調べる。タスク#7にはタグ情報が付加されていないので、タスクランチャー35は、各プロセッサ(#0、#1および#2)21〜23に対応したF0、F’1およびF’2の受付フラグ37,38の状態を調べる。
・時刻t1後の時刻t2の状態
プロセッサ#0_21に対応したF0の受付フラグ38がセットされているので、タスクランチャー35はプロセッサ#0_21にタスク#7を起動する。それによって、タスク#7はプロセッサ#0_21のランキュー33の最後に格納されるので、ランキュー33にはタスク#1およびタスク#7がこの順にタスクスイッチによる実行再開を待って格納されることになる。プロセッサ#0_21ではタスク受付スレッドのディスパッチ終了時に受付フラグF0_38がアンセットされる。
・時刻t2後の時刻t3の状態
プロセッサ#0_21では実行タスク31としてウェイトキュー34の先頭に格納されていたタスク#1がディスパッチされる。プロセッサ#0_21のランキュー33にはタスク#7およびタスク受付スレッドがこの順にタスクスイッチによる実行再開を待って格納されている。
プロセッサ#1_22ではタスク#2およびタスク#3の実行が終了し、実行タスク41としてタスク受付スレッドがディスパッチされる。プロセッサ#1_22ではタスク受付スレッドによりプロセッサ#1_22の受付フラグF1_45がセットされる。それによって、プロセッサ#0_21にあるプロセッサ#1_22に対応したF’1の受付フラグ37がスヌープコントローラ24によってセットされる。プロセッサ#1_22のランキュー43にはタスク#2およびタスク#3がこの順にタスクスイッチによる実行再開を待って格納されている。
プロセッサ#2_23ではタスク#4、タスク#5およびタスク#6の実行が終了し、実行タスク51としてタスク受付スレッドがディスパッチされる。プロセッサ#2_23ではタスク受付スレッドによりプロセッサ#2_23の受付フラグF2_55がセットされる。それによって、プロセッサ#0_21にあるプロセッサ#2_23に対応したF’2の受付フラグ37がスヌープコントローラ24によってセットされる。プロセッサ#2_23のランキュー53にはタスク#4、タスク#5およびタスク#6がこの順にタスクスイッチによる実行再開を待って格納されている。
タスクランチャー35はウェイトキュー34からキューの先頭にあるタスク#8を取り出し、ウェイトキュー34からタスク#8を削除する。そして、タスクランチャー35は、取り出したタスク#8にタグ情報があるか否かを調べる。タスク#8にはタグ情報が付加されていないので、タスクランチャー35は、マスターとなるプロセッサ#0_21に対応したF0の受付フラグ38の状態とスレーブとなる各プロセッサ(#1および#2)22,23に対応したF’1およびF’2の受付フラグ37の状態を調べる。
・時刻t3後の時刻t4の状態
マスターとなるプロセッサ#0_21に対応したF0の受付フラグ38とスレーブとなる各プロセッサ(#1および#2)22,23に対応したF’1およびF’2の受付フラグ37とにおいて複数のフラグがセットされている場合、例えばタスクランチャー35はプロセッサ番号の小さいプロセッサにタスクを起動するとする。ここでは、タスクランチャー35は、プロセッサ#1_22およびプロセッサ#2_23のうち、プロセッサ番号がより小さいプロセッサ#1_22にタスク#8を起動する。それによって、タスク#8はプロセッサ#1_22のランキュー43の最後に格納されるので、ランキュー43にはタスク#2、タスク#3およびタスク#8がこの順にタスクスイッチによる実行再開を待って格納されることになる。
プロセッサ#1_22およびプロセッサ#2_23ではタスク受付スレッドのディスパッチ終了時に受付フラグF1_45および受付フラグF2_55がアンセットされる。それによって、プロセッサ#0_21にあるプロセッサ#1_22に対応したF’1およびプロセッサ#2_23に対応したF’2の受付フラグ37の状態がスヌープコントローラ24によってアンセットされる。
・時刻t4後の時刻t5の状態
プロセッサ#0_21では実行タスク31としてタスク#1がディスパッチされている。プロセッサ#0_21のランキュー33にはタスク#7およびタスク受付スレッドがこの順にタスクスイッチによる実行再開を待って格納されている。
プロセッサ#1_22ではタスク受付スレッドおよびタスク#2の実行が終了し、実行タスク41としてタスク#3がディスパッチされる。プロセッサ#1_22のランキュー43にはタスク#8、タスク受付スレッドおよびタスク#2がこの順にタスクスイッチによる実行再開を待って格納されている。
プロセッサ#2_23ではタスク#4、タスク#5およびタスク#6の実行が終了し、実行タスク51としてタスク受付スレッドがディスパッチされる。プロセッサ#2_23ではタスク受付スレッドによりプロセッサ#2_23の受付フラグF2_55がセットされる。それによって、プロセッサ#0_21にあるプロセッサ#2_23に対応したF’2の受付フラグ37がスヌープコントローラ24によってセットされる。プロセッサ#2_23のランキュー53にはタスク#4、タスク#5およびタスク#6がこの順にタスクスイッチによる実行再開を待って格納されている。
タスクランチャー35はウェイトキュー34からキューの先頭にあるタスク#9を取り出し、ウェイトキュー34からタスク#9を削除する。そして、タスクランチャー35は、取り出したタスク#9にタグ情報があるか否かを調べる。タスク#9にはタグ情報が付加されており、割り付け先のプロセッサとしてプロセッサ#0_21が指定されている。
・時刻t5後の時刻t6の状態
タスクランチャー35は、タスク#9のタグ情報に基づいてプロセッサ#0_21にタスク#9を起動する。それによって、タスク#9はプロセッサ#0_21のランキュー33の最後に格納されるので、ランキュー33にはタスク#7、タスク受付スレッドおよびタスク#9がこの順にタスクスイッチによる実行再開を待って格納されることになる。
実施例2のスレーブプロセッサ2によれば、実施例1と同様の効果が得られる。なお、スレーブとなるプロセッサが一つまたは三つ以上あっても同様である。なお、実施例1および2においては、マルチプロセッサシステムとして複数のマイクロプロセッサを搭載したシステムを例にして説明したが、一つのマイクロプロセッサに複数のプロセッサコアが内蔵されているマルチコアシステムにも同様に適用することができる。マルチコアシステムに適用する場合には、上述した説明においてプロセッサがプロセッサコアとなる。実施例1または実施例2にかかるマルチプロセッサシステムおよびスケジューリング方法は、例えば組み込みシステムを有する装置、例えば携帯電話機などに適用することができる。
1 マスタープロセッサ
2 スレーブプロセッサ
3 同期部
4 第1のフラグ
5 第2のフラグ
6 第3のフラグ

Claims (9)

  1. マスタプロセッサと、
    前記マスタプロセッサからタスクを割り当てられるスレーブプロセッサとを有し、
    前記マスタプロセッサは、前記マスタプロセッサでのタスク割り当ての受付可否を示す値を繰り返し更新する第1のフラグと、前記スレーブプロセッサでのタスク割り当ての受付可否を示す値を繰り返し更新する第3のフラグに同期する第2のフラグを有し、前記第1のフラグがタスク割り当ての受付可能を示す頻度を前記マスタプロセッサで処理中のタスク量に応じて設定し、前記第1のフラグがタスク割り当ての受付不可である場合に、前記第2のフラグの値に応じて前記スレーブプロセッサにタスクを割り当て、
    前記スレーブプロセッサは、前記スレーブプロセッサで処理中のタスク量に応じて前記第3のフラグがタスク割り当ての受付可能を示す頻度を設定する
    マルチプロセッサシステム。
  2. 前記第1のフラグおよび前記第2のフラグは前記マスタプロセッサ内のキャッシュに設けられており、前記第3のフラグは前記スレーブプロセッサ内のキャッシュに設けられており、前記同期は、前記マスタプロセッサ内のキャッシュと前記スレーブプロセッサ内のキャッシュとの間の同一性を制御するスヌープコントローラで行われる請求項1に記載のマルチプロセッサシステム。
  3. 前記マスタプロセッサでは前記第1のフラグの状態を更新するタスク受付スレッドが、前記マスタプロセッサで処理するタスク量に応じた頻度でディスパッチされ、前記スレーブプロセッサでは前記第3のフラグの状態を更新するタスク受付スレッドが、前記スレーブプロセッサで処理するタスク量に応じた頻度でディスパッチされる請求項1に記載のマルチプロセッサシステム。
  4. 前記タスク受付スレッドは、前記マスタプロセッサおよび前記スレーブプロセッサがタスク割り当ての受付可能な状態にあるか否かを示すフラグの状態を、ディスパッチ後にタスク割り当ての受付不可能な状態からタスク割り当ての受付可能な状態に変更し、ディスパッチ終了前にタスク割り当ての受付不可能な状態に戻す動作を各プロセッサに行わせる請求項3に記載のマルチプロセッサシステム。
  5. 前記マスタプロセッサは、予め起動先のプロセッサが指定されていないタスクを、前記
    第1のフラグの状態がタスク割り当ての受付可能な状態にあるときに前記マスタプロセッサに起動し、前記第2のフラグに反映された前記第3のフラグの状態がタスク割り当ての受付可能な状態にある前記スレーブプロセッサに起動する請求項4に記載のマルチプロセッサシステム。
  6. マスタプロセッサが、前記マスタプロセッサでのタスク割り当ての受付可否を示す値を繰り返し更新する第1のフラグと、前記マスタプロセッサからタスクを割り当てられるスレーブプロセッサでのタスク割り当ての受付可否を示す値を繰り返し更新する第3のフラグに同期する第2のフラグを有し、前記第1のフラグがタスク割り当ての受付可能を示す頻度を前記マスタプロセッサで処理中のタスク量に応じて設定し、前記第1のフラグがタスク割り当ての受付不可である場合に、前記第2のフラグの値に応じて前記スレーブプロセッサにタスクを割り当て、
    前記スレーブプロセッサが、前記スレーブプロセッサで処理中のタスク量に応じて前記第3のフラグがタスク割り当ての受付可能を示す頻度を設定する
    スケジューリング方法。
  7. 前記マスタプロセッサでは前記第1のフラグの状態を更新するタスク受付スレッドが、前記マスタプロセッサで処理するタスク量に応じた頻度でディスパッチされ、前記スレーブプロセッサでは前記第3のフラグの状態を更新するタスク受付スレッドが、前記スレーブプロセッサで処理するタスク量に応じた頻度でディスパッチされる請求項6に記載のスケジューリング方法。
  8. 前記マスタプロセッサおよび前記スレーブプロセッサは前記タスク受付スレッドを実行することによって、前記マスタプロセッサおよび前記スレーブプロセッサがタスク割り当ての受付可能な状態にあるか否かを示すフラグの状態を、ディスパッチ後にタスク割り当ての受付不可能な状態からタスク割り当ての受付可能な状態に変更し、ディスパッチ終了前にタスク割り当ての受付不可能な状態に戻す請求項7に記載のスケジューリング方法。
  9. 前記マスタプロセッサは、予め起動先のプロセッサが指定されていないタスクを、前記第1のフラグの状態がタスク割り当ての受付可能な状態にあるときに前記マスタプロセッサに起動し、前記第2のフラグに反映された前記第3のフラグの状態がタスク割り当ての受付可能な状態にある前記スレーブプロセッサに起動する請求項8に記載のスケジューリング方法。
JP2012521255A 2010-06-25 2010-06-25 マルチプロセッサシステムおよびスケジューリング方法 Expired - Fee Related JP5447666B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/060913 WO2011161831A1 (ja) 2010-06-25 2010-06-25 マルチプロセッサシステムおよびスケジューリング方法

Publications (2)

Publication Number Publication Date
JPWO2011161831A1 JPWO2011161831A1 (ja) 2013-08-19
JP5447666B2 true JP5447666B2 (ja) 2014-03-19

Family

ID=45371042

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012521255A Expired - Fee Related JP5447666B2 (ja) 2010-06-25 2010-06-25 マルチプロセッサシステムおよびスケジューリング方法

Country Status (3)

Country Link
US (1) US9367326B2 (ja)
JP (1) JP5447666B2 (ja)
WO (1) WO2011161831A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10175885B2 (en) 2015-01-19 2019-01-08 Toshiba Memory Corporation Memory device managing data in accordance with command and non-transitory computer readable recording medium
CN105808444B (zh) * 2015-01-19 2019-01-01 东芝存储器株式会社 存储装置及非易失性存储器的控制方法
US10671444B2 (en) * 2016-12-07 2020-06-02 Tata Consultancy Services Limited Systems and methods for scheduling tasks and managing computing resource allocation for closed loop control systems

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63208154A (ja) * 1987-02-25 1988-08-29 Mitsubishi Electric Corp マルチプロセツサスケジユ−ル方式
JPH07141302A (ja) * 1993-11-17 1995-06-02 Agency Of Ind Science & Technol 並列計算機における負荷分散方法
JPH11120147A (ja) * 1997-10-17 1999-04-30 Hitachi Ltd 負荷分散制御方法
JPH11195007A (ja) * 1998-01-07 1999-07-21 Sanyo Electric Co Ltd 分散処理システム及び分散処理方法
JP2009251997A (ja) * 2008-04-08 2009-10-29 Renesas Technology Corp 情報処理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4099236A (en) * 1977-05-20 1978-07-04 Intel Corporation Slave microprocessor for operation with a master microprocessor and a direct memory access controller
JPS6413864A (en) 1987-07-08 1989-01-18 Hitachi Ltd Original reader
JPH05189390A (ja) 1992-01-14 1993-07-30 Nec Corp トランザクションスケジューリング方式
JPH06139209A (ja) 1992-10-29 1994-05-20 Toshiba Corp 疎結合マルチプロセッサシステム
JP2882475B2 (ja) * 1996-07-12 1999-04-12 日本電気株式会社 スレッド実行方法
US6272602B1 (en) * 1999-03-08 2001-08-07 Sun Microsystems, Inc. Multiprocessing system employing pending tags to maintain cache coherence
US20030184960A1 (en) * 2002-03-28 2003-10-02 Compaq Information Technologies Group, L.P. Enumeration, manageability, and security of a KVM extension device
US8381212B2 (en) * 2007-10-09 2013-02-19 International Business Machines Corporation Dynamic allocation and partitioning of compute nodes in hierarchical job scheduling

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63208154A (ja) * 1987-02-25 1988-08-29 Mitsubishi Electric Corp マルチプロセツサスケジユ−ル方式
JPH07141302A (ja) * 1993-11-17 1995-06-02 Agency Of Ind Science & Technol 並列計算機における負荷分散方法
JPH11120147A (ja) * 1997-10-17 1999-04-30 Hitachi Ltd 負荷分散制御方法
JPH11195007A (ja) * 1998-01-07 1999-07-21 Sanyo Electric Co Ltd 分散処理システム及び分散処理方法
JP2009251997A (ja) * 2008-04-08 2009-10-29 Renesas Technology Corp 情報処理装置

Also Published As

Publication number Publication date
JPWO2011161831A1 (ja) 2013-08-19
WO2011161831A1 (ja) 2011-12-29
US9367326B2 (en) 2016-06-14
US20130185521A1 (en) 2013-07-18

Similar Documents

Publication Publication Date Title
JP3678414B2 (ja) 多重プロセッサ・システム
WO2015096656A1 (zh) 线程创建方法、业务请求处理方法及相关设备
CN108108463B (zh) 基于时间片调度的同步任务处理方法及装置
US8549524B2 (en) Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems
KR101626378B1 (ko) 병렬도를 고려한 병렬 처리 장치 및 방법
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
JP5347451B2 (ja) マルチプロセッサシステム、競合回避プログラム及び競合回避方法
JP5445669B2 (ja) マルチコアシステムおよび起動方法
WO2009101563A1 (en) Multiprocessing implementing a plurality of virtual processors
JP2011065645A (ja) マルチコアプロセッサシステム
CN103067425A (zh) 虚拟机创建方法、虚拟机管理系统及相关设备
JP2010267025A (ja) ジョブスケジューリングプログラム、ジョブスケジューリング装置及びジョブスケジューリング方法
JP2011028559A (ja) 中継プログラムおよび電子制御装置
CN107515785A (zh) 一种内存管理方法及装置
WO2007020739A1 (ja) スケジューリング方法およびスケジューリング装置
CN110990154B (zh) 一种大数据应用优化方法、装置及存储介质
JP2008186136A (ja) 計算機システム
JP2012108576A (ja) マルチコアプロセッサ、処理実行方法、プログラム
JP5790758B2 (ja) スケジューリング方法およびスケジューリングシステム
JP5447666B2 (ja) マルチプロセッサシステムおよびスケジューリング方法
CN110955501A (zh) 服务请求处理方法、装置、电子设备及可读介质
JP6372262B2 (ja) 印刷装置、およびプログラム
US9740530B2 (en) Decreasing the priority of a user based on an allocation ratio
JP2010170320A (ja) プログラム、及び制御装置
US20130298132A1 (en) Multi-core processor system and scheduling method

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130827

A521 Request for written amendment filed

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131216

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