JP5214537B2 - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム Download PDF

Info

Publication number
JP5214537B2
JP5214537B2 JP2009125591A JP2009125591A JP5214537B2 JP 5214537 B2 JP5214537 B2 JP 5214537B2 JP 2009125591 A JP2009125591 A JP 2009125591A JP 2009125591 A JP2009125591 A JP 2009125591A JP 5214537 B2 JP5214537 B2 JP 5214537B2
Authority
JP
Japan
Prior art keywords
task
processor
interrupt
sending
movement
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
JP2009125591A
Other languages
English (en)
Other versions
JP2010272076A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009125591A priority Critical patent/JP5214537B2/ja
Priority to US12/614,046 priority patent/US8145820B2/en
Publication of JP2010272076A publication Critical patent/JP2010272076A/ja
Application granted granted Critical
Publication of JP5214537B2 publication Critical patent/JP5214537B2/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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Description

本発明は、マルチプロセッサシステムに関する。
従来、マルチプロセッサシステムにおいて、処理効率の向上などを目的とし、タスクをプロセッサ間で移動させることによってプロセッサ群の負荷のバランスの制御を行う技術がある(例えば特許文献1、特許文献2、特許文献3参照)。
しかしながら、一般的に、あるプロセッサで実行中のタスクを他のプロセッサへ移動させるときは、実行中のタスクを一旦止め、止まった状態でタスクを移動させる。タスクの移動の際、あるタスクとそのタスクに付随する割込み処理の受付とを同様に扱うため、割込み処理を持つタスクを別のコアに移動させるときは、割込みの受付も停止する。このとき、タスクの移動中にそのタスクで捕捉しなければならない割込みが発生すると、割込みの受付を停止しているために割込みを捕捉できない。このため、割込みを持つタスクを実行しているときはそのタスクを移動させることができないという問題があった。
特開2005−235229号公報 特開2006−216058号公報 特開2005−235228号公報
本発明は、割込み処理を持つタスクを割込み処理の受け付けを停止することなくプロセッサ間で移動させることができるマルチプロセッサシステムを提供することを目的とする。
本願発明の一態様によれば、複数のプロセッサを備えるマルチプロセッサシステムにおいて、前記複数のプロセッサは、夫々、自プロセッサで動作しているタスクを他のプロセッサに移動させる際、移動対象タスクを移動先のプロセッサに送り出す送り出しタスクを実行し、前記送り出しタスクは、前記移動対象タスクを送り出す最中に前記移動対象タスクに付随する割込み処理が受け付けて実行すべき割込み要求が発生したとき、該割込み要求を前記割込み処理に代わって受け付け、前記割込み処理を起動し、前記移動先のプロセッサは、前記移動対象タスクを受け入れる受け入れタスクを実行し、前記受け入れタスクは、前記移動先のプロセッサが前記移動対象タスクの受け入れを完了した後、前記移動先のプロセッサまたは前記移動対象タスクの移動元のプロセッサの何れか一方のみ確保できる前記割込み処理を実行するための割込み処理実行権を確保して前記移動元のプロセッサにおいて実行されている送り出しタスクが前記割込み要求を受け付け不可能なように設定する設定処理を開始し、前記設定処理を実行後、前記移動元のプロセッサから前記移動対象タスクを削除するとともに前記割込み処理実行権を放棄し、前記移動元のプロセッサにおいて実行されている送り出しタスクは、前記割込み要求を受け付けた際、前記割込み処理実行権の確保を試み、前記割込み処理実行権を確保できたとき、前記移動対象割込み処理を起動する、ことを特徴とするマルチプロセッサシステムが提供される。
本発明によれば、割込み処理を持つタスクを割込み処理の受け付けを停止することなくプロセッサ間で移動させることができるマルチプロセッサシステムを提供することができるという効果を奏する。
図1は、本実施の形態のマルチプロセッサシステムの構成を説明する図である。 図2は、第1の手法により移動対象タスクおよび受け入れプロセッサを決定する動作を説明するフローチャートである。 図3は、第2の手法により移動対象タスクおよび受け入れプロセッサを決定する動作を説明するフローチャートである。 図4は、指示タスクにより移動対象タスクの移動が開始される動作を説明するフローチャートである。 図5は、送り出しタスクにより移動対象タスクが送り出される動作を説明するフローチャートである。 図6は、受け入れタスクにより移動対象タスクが受け入れられる動作を説明するフローチャートである。 図7は、移動中割込み処理の動作を説明するフローチャートである。 図8は、タスク移動のシーケンス図である。 図9は、マルチプロセッサシステムの内部状態を説明する図である。 図10は、マルチプロセッサシステムの内部状態を説明する図である。 図11は、マルチプロセッサシステムの内部状態を説明する図である。 図12は、マルチプロセッサシステムの内部状態を説明する図である。 図13は、マルチプロセッサシステムの内部状態を説明する図である。 図14は、マルチプロセッサシステムの内部状態を説明する図である。 図15は、マルチプロセッサシステムの内部状態を説明する図である。 図16は、マルチプロセッサシステムの内部状態を説明する図である。 図17は、マルチプロセッサシステムの内部状態を説明する図である。 図18は、マルチプロセッサシステムの内部状態を説明する図である。 図19は、マルチプロセッサシステムの内部状態を説明する図である。 図20は、マルチプロセッサシステムの内部状態を説明する図である。 図21は、マルチプロセッサシステムの内部状態を説明する図である。 図22は、マルチプロセッサシステムの内部状態を説明する図である。 図23は、マルチプロセッサシステムの内部状態を説明する図である。 図24は、マルチプロセッサシステムの内部状態を説明する図である。 図25は、マルチプロセッサシステムの内部状態を説明する図である。 図26は、マルチプロセッサシステムの内部状態を説明する図である。
以下に添付図面を参照して、本発明の実施の形態にかかるマルチプロセッサシステムを詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
(第1の実施の形態)
図1は、本発明の第1の実施の形態にかかるマルチプロセッサシステムの構成を示すブロック図である。図示するように第1の実施の形態のマルチプロセッサシステム100は、複数(ここでは4個)のプロセッサ1a〜1dと、RAM(Random Access Memory)やSRAM(Static Random Access Memory)などで構成される共有メモリ2と、プロセッサ間通信ユニット3と、が夫々バス4に接続された構成となっている。プロセッサ間通信ユニット3は、プロセッサ間で通信するためのユニットであって、前記通信のための専用線の一端がプロセッサ間通信ユニット3に接続され、他端が4つに分岐して分岐先が夫々プロセッサ1a〜1dに接続されている。プロセッサ間のメッセージの通信はプロセッサ間通信ユニット3を介して行われ、データの送受信はバス4および共有メモリ2を介して行われる。マルチプロセッサシステム100外部で発生する割込み要求を伝達するための割込み要求線が4つに分岐し、分岐先が夫々プロセッサ1a〜1dに接続されている。
共有メモリ2には、カーネルプログラム5およびマルチプロセッサシステム100の使用目的に応じて用意されるユーザプログラム(図示せず)がロードされている。これらのプログラムのロード元は、これらのプログラムを予め格納したROM(Read Only Memory)や外部記憶装置などであってよい。プロセッサ1a〜1dは、カーネルプログラム5に含まれるカーネルタスクおよびユーザプログラムに含まれるユーザタスクを実行する。以下、単にタスクというと、カーネルタスクおよびユーザタスクを含むこととする。
ここで、タスクについて説明する。マルチプロセッサシステム100では、割込み処理を持つタスクを実行することができる。割込み処理を持つタスクには、例えば、マルチプロセッサシステム100が音楽再生機能を有する機器に組み込まれるものである場合、音楽を再生するタスクがある。このタスクは、再生をストップ/再開する割込み要求を受け付け、再生をストップ/再開する割込み処理を持つ。前述のように、一般的なスケジューリング方法によれば、このような割込み処理が付随するタスクを移動するとき、割込み処理の受付も停止するため、タスクの移動中にそのタスクで捕捉しなければならない割込みが発生すると、割込みの受付を停止しているために割込みを捕捉できない。これに対して、本実施の形態では、タスクの移動中に割込みを受け付けることを可能にするための専用のカーネルタスクが用意されている。
具体的には、カーネルプログラム5は、プロセッサ1a〜1dの負荷状態に基づき、タスクの移動を指示する移動指示タスクのタスクプログラムと、タスクを送り出すプロセッサにおいて実行され、移動対象のタスク(移動対象タスク)を送り出す最中に発生する割込み要求に対応する送り出しタスクのタスクプログラムと、移動対象タスクを受け入れるプロセッサにおいて実行され、移動対象タスクを受け入れ、移動対象タスクの実行を引き継ぐ受け入れタスクと、を含んでいる。送り出しタスクには、移動対象タスクが捕捉すべき割込み処理(移動対象割込み処理)が前記移動対象タスクの移動中に発生したとき、この移動対象割込処理を捕捉する機能を有する割込み処理(移動中割込み処理)が付随している。なお、移動指示タスクのことを単に指示タスクと表現することもある。また、移動対象タスクを送り出すプロセッサを送り出しプロセッサ、移動対象タスクを受け入れるプロセッサを受け入れプロセッサ、指示タスクが動作しているプロセッサを指示プロセッサと表現する。なお、図1は、プロセッサ1aにおいて実行されている指示タスクが、プロセッサ1bにて実行されている移動対象タスクをプロセッサ1cに移動させる決定を行ったときの様子を示している。すなわち、送り出しタスクがプロセッサ1b、受け入れタスクがプロセッサ1cにて実行されようとしている。
タスクの移動の際には、どのタスクを移動するかを示す移動制御情報が使用される。移動制御情報には、移動するタスクを示すタスク識別子、送り出しプロセッサを示すプロセッサ識別子および受け入れプロセッサを示すプロセッサ識別子からなるエントリが移動対象タスク毎に記録されている。すなわち、移動対象タスクが該移動対象タスクの送り出しプロセッサおよび受け入れプロセッサに対応付けられている。移動制御情報の各エントリは、各プロセッサの送り出し/受け入れタスク毎に実行キューとして共有メモリ2上に書き込まれる。送り出しタスクは自プロセッサの自タスクの実行キューを参照し、このキューのエントリに記述されている移動対象タスクを受け入れプロセッサに送り出すと、このエントリをこの実行キューから削除し、削除したエントリを受け入れプロセッサの受け入れタスクの実行キューに書き込む。受け入れタスクは、自プロセッサの自タスクの実行キューに書き込まれたエントリを参照し、エントリに記述されている移動対象タスクの受け入れを完了すると、このエントリを削除する。なお、移動制御情報が保持される場所はプロセッサ1a〜1dからアクセス可能な場所であれば共有メモリ2でなくてもよい。なお、以降、送り出しプロセッサで動作している送り出しタスクの実行キューを単に送り出しプロセッサの(移動制御情報の)キュー、受け入れプロセッサで動作している受け入れタスクの実行キューを単に受け入れプロセッサの(移動制御情報の)キュー、と表現することもある。
また、タスクの移動の際に発生した割込み処理を送り出しプロセッサまたは受け入れプロセッサにて捕捉して必ず1回だけ実行するために、タスク移動時においては、送り出しプロセッサおよび受け入れプロセッサのうちのどちらか一つのみ得ることができる割込み処理を実行する権利(割込み処理実行権)が使用される。割込み処理実行権がどちらに付与されているかを示す情報である割込み処理実行権情報6は、共有メモリ2に保持される。
プロセッサ1a〜1dは、夫々、割込みに関する設定を記憶する割込み設定情報7a〜7dを有している。具体的には、割込み設定情報7a〜7dは、自身のプロセッサで動作する割込み処理のうちの割込み要求線に割り当てられている割込み処理の識別子と、受信した割込み要求に反応するか否かを前記割り当てられている割込み処理毎に指定する情報と、が記録されている。なお、以降、割込み設定情報7a〜7dを編集して割込み処理を割込み要求線に割り当てることを、割込み要求線を割込み処理(あるいは割込み処理が付随するタスク)に設定する、と表現する。また、割込み設定情報7a〜7dを編集して受信した割込み要求に反応するように設定されている状態を、割込み処理実行が有効となっている状態、反応しないように設定されている状態を、割込み処理実行が無効となっている状態、と表現する。なお、図1以外に構成図を示す場合においては、煩雑さを避けるため、割込み設定情報7a〜7dを図示しないこととする。同様の理由で、カーネルプログラム5も図示しないこととする。
次に、本発明の実施の形態のマルチプロセッサシステム100の動作を説明する。まず、指示タスクが、送り出しプロセッサ、移動対象タスクおよび受け入れプロセッサを決定する動作を説明する。指示タスクによる移動対象タスクおよび送り出し・受け入れプロセッサの決定手法には、処理効率の向上を目的としてプロセッサ1a〜1d間のタスク負荷を均一に分散させるように決定する手法(第1の手法)と、低消費電力化を目的としてタスクを一部のプロセッサに集約させるように決定する手法(第2の手法)とが考えられる。まず、第1の手法について説明する。
図2は、第1の手法により移動対象タスクおよび受け入れプロセッサを決定する動作を説明するフローチャートである。まず、指示タスクは、プロセッサ1a〜1dの夫々において実行中のタスク数を取得する(ステップS1)。そして、指示タスクは、実行中のタスク数が予め設定されている適正同時実行数の範囲を上回るプロセッサが存在するか否かを判定する(ステップS2)、存在しなければ(ステップS2、No)、第1の手法の動作を終了する。適正同時実行数とは、一つのプロセッサがそのプロセッサの処理能力を越えることなく同時に適正に実行できるタスクの数である。一般にはプロセッサの処理能力は夫々異なるため、タスクの適正同時実行数として、プロセッサの処理能力を基にそれぞれのプロセッサに適した値が設定される。
指示タスクは、適正同時実行数の範囲を上回る(超える)プロセッサが存在した場合(ステップS2、Yes)、実行中のタスク数が最も大きいプロセッサをA、実行中のタスク数が最も小さいプロセッサをBとし(ステップS3)、プロセッサBの実行中のタスク数に1加算した値がプロセッサBの適正同時実行数の範囲内か否かを判定する(ステップS4)。指示タスクは、プロセッサBの実行中のタスク数に1加算した値が適正同時実行数の範囲を上回った場合(ステップS4、No)、動作を終了し、上回らなかった場合(ステップS4、Yes)、プロセッサAからプロセッサBへ移動するタスクを一つ移動対象タスクに決定する(ステップS5)。その場合、プロセッサAが送り出しプロセッサ、プロセッサBが受け入れプロセッサとなる。ステップS5の後、ステップS1に移行する。
このように第1の手法によれば、適正同時実行数を超える数のタスクを実行しているプロセッサがあったとき、該プロセッサで動作しているタスクを移動対象タスクに指定するとともに該移動対象タスクを追加しても実行タスク数が適正同時実行数を超えないプロセッサを移動先のプロセッサに指定する。
続いて、第2の手法について説明する。図3は、第2の手法により移動対象タスクおよび受け入れプロセッサを決定する動作を説明するフローチャートである。まず、指示タスクは、プロセッサ1a〜1dの夫々において実行中のタスク数を取得する(ステップS11)。そして、指示タスクは、実行中のタスク数の総和が、稼動中のプロセッサ数で処理可能なタスク数に対して十分小さいか否かを判定し(ステップS12)、十分小さくなかった場合(ステップS12、No)、動作を終了する。実行中のタスク数の総和が、稼動中のプロセッサ数で処理可能なタスク数に対して十分小さかった場合(ステップS12、Yes)、指示タスクは、実行中のタスク数が最も小さいプロセッサをAとする(ステップS13)。そして、指示タスクは、プロセッサAの実行中の全てのタスクを移動対象タスクに決定し、その他の稼動中のプロセッサのタスク数が均等になるように移動対象タスクの受け入れプロセッサを決定し(ステップS14)、ステップS11に移行する。
このように、第2の手法によれば、全てのプロセッサで実行しているタスクの総数がより少ない数のプロセッサでも実行できる状態になったとき、タスク実行数が最も少ないプロセッサで実行されている全てのタスクを移動対象タスクに指定する。
送り出しプロセッサ、移動対象タスクおよび受け入れプロセッサが決定されると、次に、移動対象タスクの移動の動作に移行する。まずタスク移動の際の指示タスクの動作を説明する。
図4は、指示タスクがタスクの移動を開始する動作を説明するフローチャートである。まず、移動対象タスクのステータスが移動状態、すなわち移動対象タスクが移動中ではないことを確認し(ステップS21)、移動状態でない、すなわち待ち状態である場合(ステップS21、Yes)、受け入れプロセッサの割込み要求線が空いているか否かを判定する(ステップS22)。待ち状態とは、タスクが移動状態ではない状態を指す。受け入れプロセッサの割込み要求線が空いているとは、割込み要求線に受け入れプロセッサで動作する何れのタスクも設定されていない状態を指す。割込み要求線が空いていた場合(ステップS22、Yes)、指示タスクは、割込み要求線にどのタスクも設定できないように割込み要求線を予約しておく(ステップS23)。ステップS21において、移動対象タスクが移動状態であった場合(ステップS21、No)、指示タスクは、別の移動対象タスクについてステップS21の判定を実行する。
ステップS23の後、指示タスクは、移動対象タスクのステータスを待ち状態から移動状態に変更する(ステップS24)。そして、指示タスクは、移動制御情報のエントリを生成し、生成した移動制御情報のエントリを送り出しプロセッサのキューに追加し(ステップS25)、送り出しプロセッサに送り出しタスクを起動するメッセージをプロセッサ間通信ユニット3を介して送信して送り出しタスクを起動し(ステップS26)、指示タスクは動作を終了する。
次に、指示タスクにより起動された送り出しタスクが移動対象タスクを送り出す動作を説明する。図5は、送り出しタスクの動作を説明するフローチャートである。まず、送り出しタスクは、移動制御情報のキューが空であるか否かを判定し(ステップS31)、空ではなかった場合(ステップS31、No)、移動制御情報のキューからエントリを一つ取り出し(ステップS32)、送り出しプロセッサの割込み設定情報を編集して割込み要求線に設定されている移動対象タスクを移動中割込み処理に設定変更する(ステップS33)。なお、この段階では、移動中割込み処理実行が有効に設定されている。すなわち、この時点で割込み要求を受信すると、移動中割込み処理がこの割込み要求に対応することとなる。
続いて、送り出しタスクは、移動対象タスク(および移動対象割込み処理)を共有メモリ2に送り出し(ステップS34)、移動制御情報のキューを受け入れプロセッサのキューに追加する(ステップS35)。ここで、送り出しタスクは、移動対象タスクを送り出す際、移動対象割込み処理を自プロセッサ1bから削除しないでおく。送り出しタスクは、受け入れプロセッサの受け入れタスクを起動し(ステップS36)、ステップS31に移行する。ステップS31において、移動制御情報のキューが空であった場合(ステップS31、Yes)、送り出しタスクは動作を終了する。
次に、送り出しタスクにより起動された受け入れタスクの動作を説明する。図6は、受け入れタスクの動作を説明するフローチャートである。まず、受け入れタスクは、移動制御情報のキューが空であるか否かを判定し(ステップS41)、空ではなかった場合(ステップS41、No)、移動制御情報のキューからエントリを一つ取り出し(ステップS42)、前記取り出したエントリに記述されている移動対象タスク(および移動対象割込み処理)を共有メモリ2から読み出して受け入れる(ステップS43)。そして、受け入れタスクは、予約されていた割込み設定レジスタを移動対象タスクに設定する(ステップS44)。ただし、この時点においては、移動対象割込み処理の実行が無効に設定されている。そして、受け入れタスクは、移動対象タスクの受け入れが完了すると、移動対象タスクの割込み処理実行の権利を確保する(ステップS45)。すなわち、受け入れタスクは、割込み処理実行権情報6に、受け入れプロセッサが割込み処理実行権を有することを記述する。続いて、受け入れタスクは、送り出しプロセッサの移動中割込み処理の実行を無効にし、受け入れプロセッサが受け入れた移動対象タスクの割込み処理実行を有効にする(ステップS46)。そして、受け入れタスクは、移動対象タスクのステータスを移動状態から待ち状態に変更するとともにステップS42にて取り出した移動制御情報のエントリをキューから削除する(ステップS47)。そして、受け入れタスクは、送り出しプロセッサに残しておいた受け入れ済みの移動対象タスクの移動対象割込み処理を送り出しプロセッサから削除するとともに、割込み処理実行権を放棄し(ステップS48)、ステップS41に移行する。ステップS41において、移動制御情報のキューが空であった場合(ステップS41、Yes)、送り出しタスクの動作が終了となる。
なお、ここでは送り出しタスクは自プロセッサに移動対象割込み処理を残し、受け入れタスクは移動対象タスク(および移動対象割込み処理)を受け入れた後、送り出しプロセッサから移動対象割込み処理を削除する、としたが、送り出しタスクは移動対象タスクも残すようにし、受け入れタスクがこの移動対象タスクを削除するようにしてもよい。
次に、送り出しタスクに付随する移動中割込み処理の動作を説明する。ステップS33にて送り出しプロセッサの割込み要求が移動中割込み処理に設定され、移動中割込み処理の実行が有効に設定されている状態において割込み要求を受信すると、割込み処理の動作がスタートされる。図7は、割込み処理の動作を説明するフローチャートである。
まず、移動中割込み処理は、送り出しプロセッサが割込み処理を実行する権利の確保を試み(ステップS51)、割込み処理実行権を確保できなかったとき(ステップS52、No)、再度ステップS51に移行する。送り出しプロセッサが割込み処理実行権を確保できたとき(ステップS52、Yes)、移動中割込み処理は、本来の移動対象タスクの割込み処理実行が有効か無効かを判定する(ステップS53)。移動対象割込み処理の実行が有効であった場合(ステップS53、Yes)、移動対象割込み処理を実行させる(ステップS54)。移動対象割込み処理実行が無効であれば(ステップS53、No)、移動対象割込み処理を実行させない(ステップS55)。ステップS54またはステップS55の後、動作を終了する。
次に、以上説明した動作を、タスク移動のシーケンス図である図8とタスク移動の際の内部状態の推移を説明する概念図である図9〜図26とを用いてより詳しく説明する。
図8のシーケンス図は、指示プロセッサ上のタスク移動指示タスク、送り出しプロセッサ上の送り出しタスク、受け入れプロセッサ上の受け入れタスクが協調して動作する状態を示している。全体の流れは以下のとおりである。すなわち、まず、指示プロセッサからタスクの移動を開始する指示が送り出しプロセッサに出される。次に、送り出しプロセッサが移動対象タスクを共有メモリ2に送り出し受け入れプロセッサは共有メモリ2から移動対象を受け入れ、移動が完了する。図8のシーケンス図中、移動対象タスクに3度の割込みが入っているが、どの場合でも割込み要求に正しく対応している。一度目の割込み要求は、送り出しプロセッサがタスクを実際に移動させる前に発生しており、送り出しプロセッサで割込み処理が実行される((d)〜(g))。二度目の割込み要求は、移動対象タスクは受け入れプロセッサに移されているが、受け入れプロセッサで割込みを受け付ける準備がまだ整っていないときに発生し、やはり送り出しプロセッサで割込みが処理されている((j)、(k))。三度目の割込み要求は、割込み処理の移動を完了させる手順中であり、割込み処理実行権を利用して割込み処理を受け入れプロセッサで実行している((l)〜(r))。
図9〜図26を使用して図8に示したシーケンス図における(a)〜(r)の各状態を説明する。図9は初期状態(a)の内部状態を示している。初期状態では指示タスクおよび移動対象タスクが稼動している。稼動しているタスクは枠を太線で描画して稼動していないタスクと区別することとする。この初期状態において、ステップS21〜ステップS25の動作によりタスクの移動が開始される。なお、図中では、プロセッサ間通信ユニット3には、指示プロセッサであるプロセッサ1aから送り出しプロセッサであるプロセッサ1bに対するメッセージが書き込まれる領域(メッセージ(1a→1b)と表記)と、プロセッサ1aから受け入れプロセッサであるプロセッサ1cに対するメッセージが書き込まれる領域(メッセージ(1b→1c)と表記)を表記しているが、現時点では夫々何もメッセージが書き込まれていない状態となっている。
図10は(b)の状態を示している。状態(b)においては、プロセッサ間通信ユニット3に移動指示タスクからプロセッサ1bに対する送り出しタスク起動の指示のメッセージが書き込まれ、それがプロセッサ1bに通知されている。これによって移動対象タスクは停止され、送り出しタスクに制御が移る。この動作は、ステップS26の動作に相当する。
図11は(c)の状態を示している。この状態では、送り出しタスクが起動されている。図12は(d)の状態を示している。この状態は、送り出し処理中に移動対象タスクに割込みが入った直後の状態を表している。図12に示す(d)の状態、図13に示す(e)の状態、図14に示す(f)の状態、および図15に示す(g)の状態は、この割込みに対する一連の処理の状態変化を説明している。まず、図12において、割込みは送り出しプロセッサ1bで処理され、また、移動対象割込み処理ではなく移動中割込み処理がまず実行される。図13では、移動中割込み処理が割込み処理実行権を確保している。この場合、割込み処理実行権はどのプロセッサにも占有されていないため、移動中割込み処理で確保できる。割込み処理実行権が確保でき、かつ移動対象割込み処理をプロセッサ1bが保持しているため、図14ではプロセッサ1bの移動対象割込み処理が実行されている。移動対象割込み処理の終了後、図15に示すように、制御は移動中割込み処理に戻され、割込み処理実行権は放棄される。
図16は(h)の状態を示している。図16では、送り出しタスクが移動対象タスクを共有メモリ2に送り出し、受け入れプロセッサであるプロセッサ1cが受け入れられるようにしている。すなわちステップS32〜ステップS35の動作を行っている。このとき、移動対象タスクはプロセッサ1bから送り出されるが、移動対象割込み処理はプロセッサ1bで残ったままとなる。すなわち、受け入れプロセッサ1cで割込みに対応できるようになるまで、送り出しプロセッサ1bで引き続き割込みに対応できるようになっている。
図17は(i)の状態を示している。(i)では、タスクの送り出しが終了したため、受け入れタスクに起動通知を送っている。これはステップS36の動作に相当する。
図18は(j)の状態、図19は(k)の状態を示している。これらは、受け入れ処理中に割込みが入った場合の状態である。割込み要求はプロセッサ1b、1cともに入るが、割込み処理実行権情報はプロセッサ1bに割込み処理実行権を与えているので、割込み要求に対応できるのはプロセッサ1bのみである。このため、プロセッサ1bでは、前述の図12〜図15にて説明した状態変化と同様の状態変化が実行される。一方、プロセッサ1cでは、受け入れ処理が続行され、プロセッサ1cに移動対象タスクが移動される。すなわち、ステップS42〜ステップS44の動作が実行される。
図20は(l)の状態、図21は(m)の状態、図22は(n)の状態、図23は(o)の状態、図24は(p)の状態、図25は(q)の状態を示している。図20〜図25は、割込み処理の移動を完了させる手順の間に割込みが入った場合の状態の変化を説明している。図20の時点では、受け入れタスク(受け入れプロセッサ1c)が割込み処理実行権を確保している。すなわちステップS45の動作を行っている。このとき、まだ割込みは入っていない。図21の時点では、割込み要求が入った直後であり、プロセッサ1bでは割込み処理実行権を確保しようとする。しかしながら、割込み処理実行権はすでにプロセッサ1cに確保されているため、割込み処理実行権の確保の試みは失敗し、割込み処理実行権の確保の成功は割込み処理実行権が放棄(開放)されるまで待つことになる。その後、受け入れタスクの処理が進み、図22ではプロセッサ1bの移動対象割込み処理を削除している。その後、図23では、プロセッサ1cが移動対象タスクを待ち状態に変更して割込み処理実行権を放棄する。すなわちステップS48までの動作を完了する。図24では、割込み処理実行権の確保を待っていたプロセッサ1bが確保している。しかし、図25では、すでにプロセッサ1bの移動対象割込み処理が削除されており、割込み処理はプロセッサ1bでは実行されない。かわって、プロセッサ1cが、この割込みに対する割込み処理を実行する。割込み処理の移動を完了させる手順中で割込みが入る場合には、プロセッサ1cで割込みが入ったことが記録されており、割込みの移動完了後に割込み処理が実行される。そして、タスクの移動が完了して図26に示す(r)の状態に移行する。
このように、本実施の形態によれば、自プロセッサで動作しているタスクを受け入れプロセッサに移動させる際、移動対象タスクを受け入れプロセッサに送り出す送り出しタスクを実行し、送り出しタスクは、移動対象タスクを送り出す最中に移動対象タスクに付随する割込み処理が受け付けて実行すべき割込み要求が発生したとき、該割込み要求を割込み処理に代わって受け付けるように構成したので、割込み処理を持つタスクを割込み処理の受け付けを停止することなくプロセッサ間で移動させることができる。
また、受け入れプロセッサは、移動対象タスクを受け入れる受け入れタスクを実行し、受け入れタスクは、自プロセッサまたは送り出しプロセッサの何れか一方のみ確保できる割込み処理実行権を確保し、自プロセッサが移動対象タスクの受け入れを完了した後、送り出しプロセッサから移動対象タスクを削除するとともに割込み処理実行権を放棄し、送り出しプロセッサにおいて実行されている送り出しタスクは、割込み要求を受け付けた際、割込み処理実行権の確保を試み、割込み処理実行権を確保できたとき、移動対象割込み処理を起動するように構成したので、移動対象タスクの移動中あるいは移動前後に発生した割込み要求を確実に実行できるようになる。
また、複数のプロセッサは、移動対象タスクおよび該移動対象タスクの移動先のプロセッサを指定する移動制御情報を生成する移動指示タスクを実行する移動指示プロセッサを含み、送り出しプロセッサにおいて実行されている送り出しタスクは、移動制御情報に基づいて移動対象タスクを送り出すように構成したので、移動させることが決定された移動対象タスクが複数あっても確実にこれらの移動対象タスクを移動させることができる。
また、移動指示タスクは、適正同時実行数を超える数のタスクを実行しているプロセッサがあったとき、該プロセッサで動作しているタスクを移動対象タスクに指定するとともに該移動対象タスクを追加しても実行タスク数が適正同時実行数を超えないプロセッサを受け入れプロセッサに指定する移動制御情報を生成するようにしたので、全てのプロセッサ間でタスク負荷を均一にすることができるので、タスクの処理効率を向上させることができる。
また、移動指示タスクは、複数のプロセッサで実行しているタスクの総数がより少ない数のプロセッサでも実行できる状態になったとき、タスク実行数が最も少ないプロセッサで実行されている全てのタスクを移動対象タスクに指定する移動制御情報を生成するように構成したので、一部のプロセッサにタスクが集約され、タスクを実行していないプロセッサの電源をOFFすることができるので、マルチプロセッサシステムの低消費電力化を図ることができるようになる。
ところで、汎用的なシステムで用いられるカーネルとして、linuxやwindows(登録商標)などがある。本発明の実施の形態が対象とする割込み受付は、システムに入力された割込みは均一にすべてのプロセッサに入力され、割込みへの対応は各プロセッサに任される。しかしながら、linuxやWindows(登録商標)では割込みは一旦カーネルが受け取り、カーネルが各プロセッサに必要な割込みを判定して、プロセッサに転送される。このようなより汎用的なカーネルは豊富な機能を持っており、本発明の実施の形態によらなくともタスクの移動が可能である。
しかしながら、このような割込み受付手順はカーネルが割込みに対応するための時間が必要でシステムの負荷を増大させ、かつ、割込みに対する応答時間も長くなる。これに対して、本発明の実施の形態はタスクの移動に直接的に関わるプロセッサにしか負荷がかからず、かつ必要最低限の処理でタスクの移動を実現するため、システム全体の処理量はlinuxやWindows(登録商標)などの汎用的なカーネルよりも大幅に少なく、割込みに対する応答時間も短い。また、豊富な機能を持たないカーネルでもタスクの移動が実現できるため、結果としてマルチプロセッサシステム全体で低負荷かつ柔軟な運用が可能になる。
1a〜1d プロセッサ、2 共有メモリ、3 プロセッサ間通信ユニット、4 バス、5 カーネルプログラム、6 割込み処理実行権情報、7a〜7d 割込み設定情報、100 マルチプロセッサシステム。

Claims (6)

  1. 複数のプロセッサを備えるマルチプロセッサシステムにおいて、
    前記複数のプロセッサは、夫々、自プロセッサで動作しているタスクを他のプロセッサに移動させる際、移動対象タスクを移動先のプロセッサに送り出す送り出しタスクを実行し、
    前記送り出しタスクは、前記移動対象タスクを送り出す最中に前記移動対象タスクに付随する割込み処理が受け付けて実行すべき割込み要求が発生したとき、該割込み要求を前記割込み処理に代わって受け付け、前記割込み処理を起動し、
    前記移動先のプロセッサは、前記移動対象タスクを受け入れる受け入れタスクを実行し、
    前記受け入れタスクは、前記移動先のプロセッサが前記移動対象タスクの受け入れを完了した後、前記移動先のプロセッサまたは前記移動対象タスクの移動元のプロセッサの何れか一方のみ確保できる前記割込み処理を実行するための割込み処理実行権を確保して前記移動元のプロセッサにおいて実行されている送り出しタスクが前記割込み要求を受け付け不可能なように設定する設定処理を開始し、前記設定処理を実行後、前記移動元のプロセッサから前記移動対象タスクを削除するとともに前記割込み処理実行権を放棄し、
    前記移動元のプロセッサにおいて実行されている送り出しタスクは、前記割込み要求を受け付けた際、前記割込み処理実行権の確保を試み、前記割込み処理実行権を確保できたとき、前記移動対象割込み処理を起動する、
    ことを特徴とするマルチプロセッサシステム。
  2. 前記設定処理は、前記移動先のプロセッサが受け入れた前記移動対象タスクに付随する割込み処理が割込み要求を受け付け可能なように設定する処理を含む、
    ことを特徴とする請求項1に記載のマルチプロセッサシステム。
  3. 前記複数のプロセッサは、移動対象タスクおよび該移動対象タスクの移動先のプロセッサを指定する移動制御情報を生成する移動指示タスクを実行するプロセッサを含み、
    前記移動対象タスクの移動元のプロセッサにおいて実行されている送り出しタスクは、移動制御情報に基づいて移動対象タスクを送り出す、
    ことを特徴とする請求項1に記載のマルチプロセッサシステム。
  4. 複数のプロセッサを備えるマルチプロセッサシステムにおいて、
    前記複数のプロセッサは、夫々、自プロセッサで動作しているタスクを他のプロセッサに移動させる際、移動対象タスクを移動先のプロセッサに送り出す送り出しタスクを実行し、
    前記送り出しタスクは、前記移動対象タスクを送り出す最中に前記移動対象タスクに付随する割込み処理が受け付けて実行すべき割込み要求が発生したとき、該割込み要求を前記割込み処理に代わって受け付け、前記割込み処理を起動し、
    記複数のプロセッサは何れも前記送り出しタスクおよび前記受け入れタスクを実行可能であって、当該複数プロセッサのうちの任意の一は、移動対象タスクおよび該移動対象タスクの移動先のプロセッサを指定する移動制御情報を生成する移動指示タスクを実行
    前記移動対象タスクの移動元のプロセッサにおいて実行されている送り出しタスクは、移動制御情報に基づいて移動対象タスクを送り出す、
    ことを特徴とするマルチプロセッサシステム。
  5. 前記移動指示タスクは、所定数を超える数のタスクを実行しているプロセッサがあったとき、該プロセッサで動作しているタスクを移動対象タスクに指定するとともに該移動対象タスクを追加しても実行タスク数が前記所定数を超えないプロセッサを移動先のプロセッサに指定する移動制御情報を生成する、
    ことを特徴とする請求項3または請求項4に記載のマルチプロセッサシステム。
  6. 前記移動指示タスクは、前記複数のプロセッサで実行しているタスクの総数がより少ない数のプロセッサでも実行できる状態になったとき、タスク実行数が最も少ないプロセッサで実行されている全てのタスクを移動対象タスクに指定する移動制御情報を生成する、
    ことを特徴とする請求項3または請求項4に記載のマルチプロセッサシステム。
JP2009125591A 2009-05-25 2009-05-25 マルチプロセッサシステム Expired - Fee Related JP5214537B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009125591A JP5214537B2 (ja) 2009-05-25 2009-05-25 マルチプロセッサシステム
US12/614,046 US8145820B2 (en) 2009-05-25 2009-11-06 Multiprocessor system and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009125591A JP5214537B2 (ja) 2009-05-25 2009-05-25 マルチプロセッサシステム

Publications (2)

Publication Number Publication Date
JP2010272076A JP2010272076A (ja) 2010-12-02
JP5214537B2 true JP5214537B2 (ja) 2013-06-19

Family

ID=43125325

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009125591A Expired - Fee Related JP5214537B2 (ja) 2009-05-25 2009-05-25 マルチプロセッサシステム

Country Status (2)

Country Link
US (1) US8145820B2 (ja)
JP (1) JP5214537B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10678744B2 (en) * 2010-05-03 2020-06-09 Wind River Systems, Inc. Method and system for lockless interprocessor communication
CN102934086B (zh) * 2010-06-10 2017-08-25 富士通株式会社 多核处理器系统、电力控制方法及电力控制程序
US8516492B2 (en) * 2010-06-11 2013-08-20 International Business Machines Corporation Soft partitions and load balancing
BR112012032060A2 (pt) * 2010-06-29 2016-11-08 Exxonmobil Upstream Res Co método e sistema para modelos de simulação paralela.
US9946582B2 (en) * 2010-10-14 2018-04-17 Nec Corporation Distributed processing device and distributed processing system
JP5915656B2 (ja) * 2011-08-09 2016-05-11 富士通株式会社 スケジューリング方法、およびスケジューリングシステム
US9354934B2 (en) 2012-01-05 2016-05-31 International Business Machines Corporation Partitioned shared processor interrupt-intensive task segregator
JP6248523B2 (ja) 2013-10-07 2017-12-20 富士通株式会社 データ処理管理方法、情報処理装置およびデータ処理管理プログラム
US10459759B2 (en) 2015-08-26 2019-10-29 Netapp, Inc. Migration between CPU cores
US9910700B2 (en) * 2015-08-26 2018-03-06 Netapp, Inc. Migration between CPU cores
WO2019026442A1 (ja) * 2017-08-02 2019-02-07 フェリカネットワークス株式会社 情報処理装置、および情報処理方法
CN109558238A (zh) * 2017-09-27 2019-04-02 北京国双科技有限公司 任务执行方法和装置
EP3462312B1 (en) * 2017-09-29 2022-08-17 ARM Limited Permitting unaborted processing of transaction after exception mask update instruction
JP7283191B2 (ja) * 2019-04-05 2023-05-30 富士フイルムビジネスイノベーション株式会社 情報処理システム
US11436043B2 (en) * 2019-11-13 2022-09-06 International Business Machines Corporation Operating system code patching during live migration

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09185589A (ja) * 1996-01-05 1997-07-15 Toshiba Corp 情報処理システムと情報処理システムの省電力方法
JP2000259581A (ja) * 1999-03-09 2000-09-22 Toshiba Corp 計算機システムの制御プログラム及びオブジェクト生成プログラムを記憶したコンピュータ読み取り可能な記憶媒体並びに計算機システム
US7614053B2 (en) * 2004-02-20 2009-11-03 Sony Computer Entertainment Inc. Methods and apparatus for task management in a multi-processor system
US7565653B2 (en) 2004-02-20 2009-07-21 Sony Computer Entertainment Inc. Methods and apparatus for processor task migration in a multi-processor system
US7437536B2 (en) 2004-05-03 2008-10-14 Sony Computer Entertainment Inc. Systems and methods for task migration
US20060095624A1 (en) * 2004-11-03 2006-05-04 Ashok Raj Retargeting device interrupt destinations
US20060123422A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Processor packing in an SMP server to conserve energy
JP4183712B2 (ja) 2005-02-04 2008-11-19 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステムにおいてプロセッサタスクを移動するデータ処理方法、システムおよび装置
US7761612B2 (en) * 2006-12-07 2010-07-20 International Business Machines Corporation Migrating domains from one physical data processing system to another
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
US8612973B2 (en) * 2007-09-26 2013-12-17 Hewlett-Packard Development Company, L.P. Method and system for handling interrupts within computer system during hardware resource migration
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
US7921330B2 (en) * 2008-02-29 2011-04-05 Red Hat, Inc. Data migration manager

Also Published As

Publication number Publication date
JP2010272076A (ja) 2010-12-02
US20100299472A1 (en) 2010-11-25
US8145820B2 (en) 2012-03-27

Similar Documents

Publication Publication Date Title
JP5214537B2 (ja) マルチプロセッサシステム
TWI307477B (ja)
KR101255382B1 (ko) 운영체제에 친숙한 부트로더
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
WO2015100878A1 (zh) 一种芯片启动方法及多核处理器芯片、存储介质
JP2009087332A (ja) ダンプ・データを収集する装置、システム、方法およびプログラム
JP4315016B2 (ja) コンピュータシステムの系切替方法
CN111274019A (zh) 一种数据处理方法、装置及计算机可读存储介质
CN108021434A (zh) 数据处理装置及其处理数据的方法、介质、存储控制器
TW200825923A (en) Task processing device
JP4609113B2 (ja) プロセッサ
JP4957765B2 (ja) ソフトウェアプログラム実行装置、ソフトウェアプログラム実行方法、及びプログラム
JP2005190207A5 (ja)
JP2014106660A (ja) 並列計算機、並列計算機の制御プログラム及び並列計算機の制御方法
CN111310638B (zh) 一种数据处理方法、装置及计算机可读存储介质
JP2002024195A (ja) 並列処理装置、及び、並列処理方法
JP4559958B2 (ja) マルチコアプロセッサにおけるマルチコア制御方法
JPH11353291A (ja) マルチプロセッサシステム及びタスク交換プログラムを記録した媒体
CN111143078B (zh) 一种数据处理方法、装置及计算机可读存储介质
JP2018120484A (ja) Dma転送制御装置、dma転送制御方法、及び、dma転送制御プログラム
JP2005050023A (ja) 情報処理装置及び方法
JPH11175355A (ja) 情報処理装置及び方法、オペレーティングシステム並びにコンピュータ読み取り可能な媒体
JP2007249661A (ja) 入出力制御装置、入出力制御方法および入出力制御プログラム
JPH113231A (ja) ソフトウェア処理方法
JP2008217659A (ja) Dma転送起動方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110801

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130115

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130227

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160308

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees