IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許7405008情報処理装置、情報処理プログラム、及び、情報処理方法
<>
  • 特許-情報処理装置、情報処理プログラム、及び、情報処理方法 図1
  • 特許-情報処理装置、情報処理プログラム、及び、情報処理方法 図2
  • 特許-情報処理装置、情報処理プログラム、及び、情報処理方法 図3
  • 特許-情報処理装置、情報処理プログラム、及び、情報処理方法 図4
  • 特許-情報処理装置、情報処理プログラム、及び、情報処理方法 図5
  • 特許-情報処理装置、情報処理プログラム、及び、情報処理方法 図6
  • 特許-情報処理装置、情報処理プログラム、及び、情報処理方法 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-18
(45)【発行日】2023-12-26
(54)【発明の名称】情報処理装置、情報処理プログラム、及び、情報処理方法
(51)【国際特許分類】
   G06F 1/3287 20190101AFI20231219BHJP
   G06F 9/48 20060101ALI20231219BHJP
   G06F 1/329 20190101ALI20231219BHJP
【FI】
G06F1/3287
G06F9/48 300Z
G06F1/329
【請求項の数】 7
(21)【出願番号】P 2020099353
(22)【出願日】2020-06-08
(65)【公開番号】P2021193498
(43)【公開日】2021-12-23
【審査請求日】2023-03-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【弁理士】
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】張 雷
【審査官】豊田 真弓
(56)【参考文献】
【文献】特開2018-026050(JP,A)
【文献】特開2015-094974(JP,A)
【文献】特開2016-091305(JP,A)
【文献】特開2018-129003(JP,A)
【文献】特開2008-225639(JP,A)
【文献】特開2016-177423(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/3287
G06F 9/48
G06F 1/329
(57)【特許請求の範囲】
【請求項1】
複数のコアを備えるプロセッサを備え、
前記複数のコアのうちの第1コアは、
前記複数のコアのうちの第2コアの動作状態を、プログラムを実行する実行状態から前記第2コアの動作を停止する停止状態に移行させる停止指示と、前記停止状態から前記実行状態に移行させる復帰指示と、を前記第2コアに発行する処理部を備え、
前記処理部は、
第1の停止指示を発行するときの前記プログラムの進行度を示す指標と、前記第1の停止指示を発行してから第1の復帰指示を発行するまでの停止時間と、を記憶部に格納し、
第2の停止指示を発行する場合であって、第2の停止指示を発行するときの前記プログラムの進行度を示す指標が前記記憶部に格納された前記指標と一致する場合、前記記憶部に格納された前記停止時間から、前記第2コアの動作状態が前記復帰指示の発行に応じて前記実行状態に移行するまでの遅延時間を減じた時間、に基づくタイミングで第2の復帰指示を発行する、
情報処理装置。
【請求項2】
前記処理部は、前記第2の停止指示の発行タイミングに前記時間を加算した前記タイミングで、前記第2の復帰指示を発行する、
請求項1に記載の情報処理装置。
【請求項3】
前記処理部は、前記第2の停止指示を発行する場合であって、前記第2の停止指示を発行するときの前記指標が前記記憶部に格納された前記指標と一致しない場合、前記第2の停止指示を発行するときの前記指標と、前記第2の停止指示を発行してから前記第2の復帰指示を発行するまでの停止時間と、を前記記憶部に格納する、
請求項1又は請求項2に記載の情報処理装置。
【請求項4】
前記第1の停止指示を発行するときの前記指標は、前記プログラムの実行開始後、前記第1の停止指示の発行タイミングまでの時間であり、
前記第2の停止指示を発行するときの前記指標は、前記プログラムの実行開始後、前記第2の停止指示の発行タイミングまでの時間である、
請求項1~請求項3のいずれか1項に記載の情報処理装置。
【請求項5】
前記第2コアは、前記プログラムを各々が並列に実行する複数のコアである、
請求項1~請求項4のいずれか1項に記載の情報処理装置。
【請求項6】
プロセッサが備える複数のコアのうちの第1コアに、
前記複数のコアのうちの第2コアの動作状態を、プログラムを実行する実行状態から前記第2コアの動作を停止する停止状態に移行させる停止指示と、前記停止状態から前記実行状態に移行させる復帰指示と、を前記第2コアに発行する、
処理を実行させ、
前記第1コアに、前記処理において、
第1の停止指示を発行するときの前記プログラムの進行度を示す指標と、前記第1の停止指示を発行してから第1の復帰指示を発行するまでの停止時間と、を記憶部に格納し、
第2の停止指示を発行する場合であって、第2の停止指示を発行するときの前記プログラムの進行度を示す指標が前記記憶部に格納された前記指標と一致する場合、前記記憶部に格納された前記停止時間から、前記第2コアの動作状態が前記復帰指示の発行に応じて前記実行状態に移行するまでの遅延時間を減じた時間、に基づくタイミングで第2の復帰指示を発行する、
処理を実行させる、情報処理プログラム。
【請求項7】
プロセッサが備える複数のコアのうちの第1コアが、
前記複数のコアのうちの第2コアの動作状態を、プログラムを実行する実行状態から前記第2コアの動作を停止する停止状態に移行させる停止指示と、前記停止状態から前記実行状態に移行させる復帰指示と、を前記第2コアに発行する、
処理を実行し、
前記第1コアは、前記処理において、
第1の停止指示を発行するときの前記プログラムの進行度を示す指標と、前記第1の停止指示を発行してから第1の復帰指示を発行するまでの停止時間と、を記憶部に格納し、
第2の停止指示を発行する場合であって、第2の停止指示を発行するときの前記プログラムの進行度を示す指標が前記記憶部に格納された前記指標と一致する場合、前記記憶部に格納された前記停止時間から、前記第2コアの動作状態が前記復帰指示の発行に応じて前記実行状態に移行するまでの遅延時間を減じた時間、に基づくタイミングで第2の復帰指示を発行する、
処理を実行する、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理プログラム、及び、情報処理方法に関する。
【背景技術】
【0002】
並列処理装置、例えばHPC(High Performance Computing)等の計算機システムでは、例えば同一構成の複数の計算ノード(「ノード」又は「情報処理装置」と称されてもよい)による並列処理によって、計算ノード数に応じた高い性能が得られる。
【0003】
並列処理装置では、計算ノード数の増加に伴い、消費電力が増加する。例えば、数千~数万台の計算ノードを備える並列処理装置では、消費電力が数十MW(メガワット)に達する場合もある。
【0004】
ノードあたりの電力を削減するための手法として、ノードで使用されるプロセッサ、例えば複数のコアを備えるCPU(Central Processing Unit)の動作を停止することにより、電力を削減する手法が知られている。
【0005】
当該手法では、例えば、1つのコアが、他のコアに対して動作の停止を指示するとともに、コアとしての処理を継続する。他のコアは、指示に応じてレジスタの値を保持したまま動作を停止する。
【0006】
また、他のコアによる動作を再開させる場合、上記1つのコアは、他のコアに対して、動作の再開を指示する。他のコアは、指示に応じて、保持するレジスタの値を用いて動作を再開(プログラムの実行状態に移行)する。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2013-092839号公報
【文献】特開2014-021877号公報
【文献】特開2009-245449号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
CPUが備えるコアは、多数の論理回路を含んでおり、これらの論理回路の動作は複雑である。このようなコアの動作を停止するために、コア内部では、例えば、動作中の回路を停止できる状態になるまで待ち合わせる等の処理が発生する。また、コアの動作を再開するために、コア内部では、例えば、停止中の回路を動作できる状態にするための処理、一例としてレジスタの値の読み込み等の処理が発生する。これらの処理には、例えば、数ms(ミリ秒)程度の時間がかかる場合がある。
【0009】
一方、並列処理装置のように多数のノードを同時に並列動作させるシステムにおいて、コアの動作遅延が許容される時間は、例えば数μs(マイクロ秒)程度のオーダである。
【0010】
このため、上述した電力の削減手法において、他のコアに対する動作の再開指示の発行後、他のコアで実際に動作が再開されるまでの遅延時間は、複数のノードが並列動作を行なう際の同期の乱れを生じさせ、システムの性能を低下させる可能性がある。
【0011】
1つの側面では、本発明は、停止状態のコアを適切なタイミングで実行状態に復帰させることを目的の1つとする。
【課題を解決するための手段】
【0012】
1つの側面では、情報処理装置は、複数のコアを備えるプロセッサを備えてよい。前記複数のコアのうちの第1コアは、前記複数のコアのうちの第2コアの動作状態を、プログラムを実行する実行状態から前記第2コアの動作を停止する停止状態に移行させる停止指示と、前記停止状態から前記実行状態に移行させる復帰指示と、を前記第2コアに発行する処理部を備えてよい。前記処理部は、第1の停止指示を発行するときの前記プログラムの進行度を示す指標と、前記第1の停止指示を発行してから第1の復帰指示を発行するまでの停止時間と、を記憶部に格納してよい。また、前記処理部は、第2の停止指示を発行する場合であって、第2の停止指示を発行するときの前記プログラムの進行度を示す指標が前記記憶部に格納された前記指標と一致する場合、前記記憶部に格納された前記停止時間から、前記第2コアの動作状態が前記復帰指示の発行に応じて前記実行状態に移行するまでの遅延時間を減じた時間、に基づくタイミングで第2の復帰指示を発行してよい。
【発明の効果】
【0013】
1つの側面では、停止状態のコアを適切なタイミングで実行状態に復帰させることができる。
【図面の簡単な説明】
【0014】
図1】一実施形態に係る計算機システムのハードウェア構成例を示すブロック図である。
図2】一実施形態に係るプロセッサによるリテンション処理の一例を説明するための図である。
図3】リテンション処理において発生するディレイの一例を示す図である。
図4】一実施形態に係るコアの構成例を示すブロック図である。
図5】一実施形態に係る制御部の動作例を説明するための図である。
図6】一実施形態に係るノードの動作例を説明するためのフローチャートである。
図7】コンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【0015】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0016】
〔1〕一実施形態
〔1-1〕一実施形態の構成例
図1は、一実施形態に係る計算機システム1のハードウェア(HW;Hardware)構成例を示すブロック図である。
【0017】
計算機システム1は、複数のノードにより並列処理を行なう並列処理装置又は並列処理システムの一例である。図1に示すように、計算機システム1は、例示的に、複数の計算ノード2、端末装置3、及び、管理装置4を備えてよい。
【0018】
計算ノード(以下、単に「ノード」と表記する場合がある)2は、情報処理装置又はコンピュータの一例である。ノード2は、他のノード2と協働して、計算機システム1が提供する並列処理を含む種々の処理を実行する。
【0019】
ノード2は、IN(Interconnect Network;インタコネクトネットワーク)5を介して、相互に通信可能に接続されてよい。IN5は、計算機システム1における計算(演算)用のインターコネクトを形成するネットワークである。IN5は、例えば、イーサネット(Ethernet;登録商標)、インフィニバンド(InfiniBand)、又はミリネット(Myrinet)等の高速なバスアーキテクチャに対応したネットワークであってよい。
【0020】
端末装置3は、計算機システム1の管理者又は利用者等のオペレータが操作する操作端末であり、ノード2に関する操作を行なうための情報処理端末の一例である。例えば、オペレータは、端末装置3により計算機システム1、例えば管理装置4にログインし、複数のノード2を利用する並列処理を実行するための種々の設定又は操作を行なってよい。
【0021】
管理装置4は、計算機システム1、例えば複数のノード2を利用する並列処理を管理する情報処理装置の一例である。管理装置4は、例えば、並列処理において複数のノード2が実行するプログラムの管理(例えば各ノード2への配布)、並列処理結果の保存、等の種々の処理を行なってよい。
【0022】
なお、端末装置3及び管理装置4の一方又は双方は、ノード2と同様の構成であってもよい。換言すれば、端末装置3及び管理装置4の一方又は双方は、複数のノード2のうちのいずれか1つ以上のノード2により実現されてもよい。
【0023】
また、端末装置3及び管理装置4の機能は、1つのコンピュータ或いはノード2に集約されてもよい。
【0024】
さらに、図1の例では、端末装置3及び管理装置4が、IN5を介してノード2に接続されるものとしたが、これに限定されるものではない。例えば、ノード2、端末装置3、及び管理装置4は、図示しないLAN(Local Area Network)等の管理用のネットワークを介して、相互に通信可能に接続されてもよい。
【0025】
図1に示すように、各ノード2は、1以上(図1の例では1つ)のプロセッサ2aを備えてよい。
【0026】
プロセッサ2aは、ノード2に供給される電力を利用して動作し、種々の制御や演算を行なう集積回路(IC;Integrated Circuit)であり、演算処理装置の一例である。プロセッサ2aは、メモリ、記憶装置、コントローラ、通信インタフェース(IF;Interface)等の図示しない他のコンポーネントとバスで相互に通信可能に接続されてよい。
【0027】
図1に例示するように、プロセッサ2aは、計算の並列度を高めるために、複数(図1の例では64個)のコア20を備えてよい。
【0028】
プロセッサ2aとしては、例えば、CPU、MPU、GPU、DSP、ASIC、及び、PLD(例えばFPGA)等の集積回路のいずれか1つ、又は、これらの2以上の組み合わせであってよい。なお、MPUはMicro Processing Unitの略称である。GPUはGraphics Processing Unitの略称であり、DSPはDigital Signal Processorの略称である。ASICはApplication Specific Integrated Circuitの略称であり、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
【0029】
〔1-2〕リテンション処理の説明
図1に示す計算機システム1において、プロセッサ2aの動作を停止することにより電力を削減する場合を想定する。
【0030】
プロセッサ2aは、内部にデータやアドレス等の情報を記憶する種々のレジスタを備えており、レジスタの記憶状態(記憶内容)を変更又は保持するために電力を消費する。これらのレジスタには、プロセッサ2aが動作している期間中は常時動作するレジスタが存在する。当該レジスタは、プロセッサ2aがプログラムを実行する必要のない期間中であっても電力を消費するため、計算機システム1における電力消費の要因となっている。
【0031】
また、プロセッサ2aの動作において、全てのコア20を動作させておく必要がない時間、プロセッサ2aの外部からのIO(Input / Output)待ちの時間等、外部要因によって、プロセッサ2a(1以上のコア20)が動作する必要のない時間が発生することがある。
【0032】
そこで、計算機システム1では、プロセッサ2aの停止が許容される時間(停止許容時間)の発生に着目し、プロセッサ2aのレジスタの状態を保持したままプロセッサ2aの動作を停止するリテンション処理を行なう。
【0033】
例えば、図2に示すように、プロセッサ2aのコア20のうちの1つのコア#0が、他のコア#1~#63に対して、コア20の動作を停止することを指示するリテンション指示を発行する(符号A参照)。
【0034】
コア#1~#63は、プログラムを実行する実行状態11においてリテンション指示を通知されると、リテンション指示に従い、レジスタの値を保持した状態で、コア20自身の動作を停止する停止処理を行なう。停止処理は、例えば、論理回路等のHWにより実現されてよい。
【0035】
コア#0は、コア#1~#63がリテンション状態(停止状態)12の場合、プロセッサ2aとしての処理、例えばIO待ち等の処理を行なう。IO待ちが完了(例えばIOを処理)すると、コア#0は、動作状態に復帰させるコア#1~#63に対して動作の再開を指示する復帰指示を発行する(符号B参照)。
【0036】
復帰指示を通知されたコア#1~#63は、復帰指示に従い、コア20自身の動作を、プログラムを実行する実行状態13に復帰(遷移)させる復帰処理を行なう。
【0037】
ここで、上述のように、停止処理及び復帰処理では、例えば、数ms程度の時間がかかる場合があり、計算機システム1で許容される遅延時間である数μs程度を大きく上回ることがある。
【0038】
例えば、図3に示すように、リテンション状態12のコア#1~#63は、コア#0が復帰指示を発行したタイミング(符号B参照)で復帰処理を開始する。しかし、コア#1~#63が実際に実行状態13に遷移するのは、斜線で示すディレイ(符号C参照)の期間(遅延時間)分だけ遅延したタイミングとなる。
【0039】
このように、復帰指示が発行されてからコア#1~#63が実行状態に移行するまでのディレイの期間の発生は、複数のノード2が並列動作を行なう際の同期の乱れ(例えばノイズ)を生じさせ、計算機システム1の性能を低下させる可能性がある。
【0040】
そこで、一実施形態に係る計算機システム1は、以下に例示するように、リテンション状態12のコア20を適切なタイミングで実行状態13に復帰させることを可能とする。
【0041】
〔1-3〕コアの構成例
図4は、一実施形態に係るコア20の構成例を示すブロック図である。図4に示すコア20は、プロセッサ2aが備える複数のコア20(図1参照)のうちの第1コア20の一例であり、例えばコア#0であってよい。コア#0は、コア#1~#63を制御する役割を与えられたコア20であってよい。コア#1~#63は、プロセッサ2aが備える複数のコア20のうちの第2コア20の一例である。なお、第1コア20は、プロセッサ2aが備える複数のコア20のうちのいずれのコア20であってもよく、また、冗長化のために2以上のコア20であってもよい。
【0042】
コア#1~#63(又は、コア#0~#63)は、同一のプログラムのコードを各々が並行して(例えば同時又は略同時に)実行してよい。換言すれば、プロセッサ2aが実行するプログラムは、複数のコア20で並列に実行されるように作成された並列処理用のプログラムである。各ノード2において、各プロセッサ2aの各コア20がプログラムを実行することにより、複数のノード2が協働して並列処理を実現することができる。
【0043】
図4に示すように、コア20は、リテンション処理の実行に着目すると、例示的に、制御部21、位置記録部22、タイマ23、リテンション時間記録部24、及び、復帰タイマ25を備えてよい。
【0044】
制御部21、タイマ23、及び、復帰タイマ25のそれぞれは、論理回路等のHWとしてコア20に実装されてよく、位置記録部22、及び、リテンション時間記録部24のそれぞれは、レジスタ等のHWとしてコア20に実行されてよい。なお、ブロック21~25のうちの少なくとも1つは、コア20が実行するプログラムの機能として実現されてもよい。
【0045】
制御部21は、リテンション指示及び復帰指示の発行を含む、リテンション処理に関する種々の制御を行なう。リテンション指示は、第2コア20の動作状態を、プログラムを実行する実行状態から第2コア20の動作を停止する停止状態に移行させる停止指示の一例である。復帰指示は、第2コア20の動作状態を、停止状態から実行状態に移行させる指示である。このため、制御部21は、停止指示と復帰指示とを第2コア20に発行する処理部の一例である。
【0046】
図5は、一実施形態に係る制御部21の動作例を説明する図である。図5の例では、上段にN=1のときのリテンション処理の動作例を示し、下段にN=n(nは2以上の整数)のときのリテンション処理の動作例を示す。Nは、リテンション処理の実行回数を示す。
【0047】
なお、N=1~N=nのそれぞれのリテンション処理は、同一のプログラムの複数回の実行処理の中でそれぞれ発生してもよい。或いは、プログラムの一連の実行処理の中で、リテンション処理が複数回発生する場合もあるため、N=1~N=nのそれぞれのリテンション処理は、プログラムの一度の実行処理の中で発生してもよい。
【0048】
図5の例では、N=1の場合、リテンション指示の発行タイミング(符号A参照)を時刻t、復帰指示の発行タイミング(符号B参照)を時刻t、コア#1~#63が実行状態13に遷移したタイミングを時刻t、ディレイの期間を時間tとする。また、N=nの場合、リテンション指示の発行タイミング(符号E参照)を時刻t、復帰指示の発行タイミング(符号F参照)を時刻t、コア#1~#63が実行状態13に遷移したタイミングを時刻t、ディレイの期間を時間tとする。
【0049】
例えば、図5の上段に示すように、N=1の場合、制御部21は、通常通り、リテンション指示及び復帰指示を発行する(符号A及びB参照)。リテンション指示及び復帰指示を発行するトリガは、管理装置4から通知されてもよいし、プログラムで指定されてもよい。或いは、制御部21が、第2コア20によるプログラムの実行状況を監視し、リテンション指示及び復帰指示のそれぞれの発行タイミングを検知してもよい。
【0050】
ここで、リテンション指示が発行されてから、復帰指示が発行されるまでの時間は、コア20が実行するプログラムの処理内容(例えばコード内容)に依存する場合がある。例えば、プログラムの実行過程において、所定のタイミングで、全てのコア20を動作させておく必要がない時間、及び、IO待ちの時間、等が発生する場合がある。
【0051】
このため、プログラムの実行過程において、或るタイミングでリテンション指示が発行された場合の復帰指示の発行タイミングは、過去にリテンション指示が発行されたときの復帰指示の発行タイミングから予測できる。
【0052】
そこで、制御部21は、例えば、図5の上段に示すように、N=1の場合、リテンション指示の発行から復帰指示の発行までの時間(t-t)を記録する。
【0053】
これにより、N=nの場合において、タイミングtでリテンション指示が発行された場合、制御部21は、復帰指示の発行タイミングを、タイミングtと、記録した時間(t-t)とを用いて、t+(t-t)により予測することができる。
【0054】
また、符号Cで示すディレイの時間t、換言すれば、第2コア20の動作状態が復帰指示の発行に応じて実行状態に移行するまでの遅延時間tは、コア20の論理回路等の内部構造に依存する遅延時間であり、固定値と捉えることができる。ディレイの時間の情報は、例えば、プロセッサ2aのメーカから取得したり、計測したりすることによって予め取得できる。
【0055】
従って、制御部21は、N=nの場合、リテンション指示の発行(符号E参照)の際に、記録した時間(t-t)とディレイの時間tとに基づき、タイミングtにおいて復帰指示(符号F参照)を投機的に発行する制御を行なう。
【0056】
例えば、制御部21は、タイミングtでリテンション指示が発行された場合、予測される復帰指示の発行タイミングt+(t-t)よりもディレイの時間t分だけ早めたタイミングt=t+(t-t)-tで、復帰指示を発行するのである。
【0057】
これにより、図5の下段(N=n)に示すように、制御部21が復帰指示(符号F参照)を時刻tで発行すると、コア#1~#63は、復帰指示に応じて復帰処理を行ない、時刻tから遅延時間tだけ経過した時刻tに、実行状態13に遷移する。
【0058】
従って、プログラムの実行過程に従って通常通り復帰指示が発行されると予測される時刻t(=t+(t-t))の時点で、図5の下段(N=n)に示すように、コア#1~#63をプログラムの実行が可能な状態にすることができる。
【0059】
以上のように、一実施形態に係る制御部21によれば、リテンション状態12のコア20を適切なタイミングで実行状態13に復帰させることができる。
【0060】
例えば、計算機システム1の複数のノード2の各々のプロセッサ2aが、第1コア20を備えることにより、各ノード2でリテンション処理が行なわれたとしても、複数のノード2が並列動作を行なう際の同期の乱れ(例えばノイズ)の発生を抑制することができる。従って、計算機システム1の性能低下を抑制することができる。
【0061】
上述した制御を可能とするために、制御部21は、例えば、位置記録部22、タイマ23、リテンション時間記録部24及び復帰タイマ25を利用してよい。
【0062】
位置記録部22は、制御部21がリテンション指示を発行した時点のプログラム上の位置に関する位置情報を記録する。位置情報は、実行されるプログラムの進行度を示す指標の一例である。一実施形態では、位置情報として、例えば、プログラムの実行開始後、リテンション指示の発行タイミングまでの期間(経過時間)が用いられるものとする。
【0063】
なお、位置情報の他の例としては、実行されるプログラムの実行状況を把握できる種々の情報が挙げられる。例えば、プログラムが、所定の処理を実行するごと、又は、一定期間ごとに、現在の処理段階を示す情報をコア#0に通知する場合には、当該処理段階を示す情報が位置情報と捉えられてもよい。
【0064】
制御部21は、コア#1~#63によりプログラムが実行されている間に、コア#0からリテンション指示を発行すると、リテンション指示がプログラム上の同じ位置で過去に発行されたか否かを判定する。
【0065】
例えば、制御部21は、コア#0からリテンション指示を発行すると、リテンション指示の発行時点におけるプログラム上の位置情報(p)を取得してよい。そして、制御部21は、取得した位置情報(p)が位置記録部22に記録された1以上の位置情報のうちのいずれかと一致するか否かを判定してよい。
【0066】
取得した位置情報(p)が位置記録部22に記録された位置情報と一致しない場合、今回発行したリテンション指示は、位置情報(p)が示すプログラム上の位置においては初めて実行されるリテンション指示であることを意味する。図5の例では、時刻tにおける初回のリテンション指示の場合、或いは、時刻tにおけるリテンション指示であってt≠tの場合である。この場合、制御部21は、位置情報(p)を位置記録部22に記録してよい。
【0067】
このように、位置記録部22は、互いに異なると判定された複数の位置情報のそれぞれを記録してよい。
【0068】
なお、取得した位置情報(p)と、位置記録部22が記録する位置情報とが一致するか否かの判定には、或る程度の誤差が考慮されてもよい。誤差としては、例えば、μsオーダ、一例として、前後数μs程度の誤差が許容されてよい。例えば、制御部21は、取得した位置情報(p)の前後数μs程度の範囲に含まれる位置情報が、位置記録部22に存在するか否かを判定してよい。以下の説明では、取得した位置情報(p)と、位置記録部22が記録する位置情報とが一致するか否かの判定は、上記誤差の範囲を用いた判定であるものとする。
【0069】
タイマ23は、リテンション指示の発行から復帰指示の発行までのリテンション時間(図5の例ではt-t)を計測する。
【0070】
リテンション時間記録部24は、タイマ23が計測したリテンション時間を記録する。リテンション時間は、コア#1~#63がリテンションを行なっていた時間であり、リテンション指示を発行してから復帰指示を発行するまでの停止時間の一例である。
【0071】
例えば、制御部21は、位置記録部22に位置情報を記録する場合、コア#0からリテンション指示を発行したタイミングでタイマ23をリセットし、時間計測を開始する。そして、制御部21は、コア#0から復帰指示を発行したタイミングでタイマ23のカウント値を取得し、取得したカウント値をリテンション時間としてリテンション時間記録部24に記録する。
【0072】
このように、リテンション時間記録部24は、位置記録部22が記録する位置情報の数(エントリ数)と同数のリテンション時間のそれぞれを記録してよい。なお、制御部21は、位置記録部22が記録する位置情報と、リテンション時間記録部24が記録するリテンション時間とを対応付けて管理してよい。
【0073】
以上のように、制御部21は、位置情報(p)と位置記録部22が記録する位置情報とが一致しない場合、或いは、位置記録部22に位置情報が存在しない場合(例えばリテンション処理が初めて実行される場合)、位置情報及びリテンション時間を位置記録部22及びリテンション時間記録部24に格納する。位置記録部22及びリテンション時間記録部24は、記憶部の一例である。換言すれば、制御部21は、第1の停止指示を発行するときのプログラムの進行度を示す指標と、第1の停止指示を発行してから第1の復帰指示を発行するまでの停止時間と、を記憶部に格納する。
【0074】
制御部21は、以上のように、位置情報(p)が位置記録部22に記録された位置情報と一致しない場合、位置情報(p)を位置記録部22に記録するとともに、リテンション指示の発行から復帰指示の発行までの時間を計測しリテンション時間記録部24に記録する。このとき、制御部21は、通常のトリガに基づき復帰指示を発行する。
【0075】
一方、制御部21は、取得した位置情報(p)が位置記録部22に記録された位置情報と一致する場合、例えば、図5において、時刻tにおけるリテンション指示であってt=tの場合、当該位置情報に対応するリテンション時間を取得する。例えば、制御部21は、位置記録部22に記録された当該位置情報が取得されたときにタイマ23により計測されたリテンション時間を、リテンション時間記録部24から読み出す。
【0076】
そして、制御部21は、取得したリテンション時間(図5の例ではt-t)からディレイの時間(図5の例ではt)を減じることで、復帰指示の復帰時間trを算出し、復帰時間trを復帰タイマ25にセット(設定)する。復帰時間trは、リテンション指示を発行してから、制御部21が発行指示を発行するまでの期間である。
【0077】
復帰タイマ25は、セットされた復帰時間trの期間をカウント(計測)する。
【0078】
例えば、制御部21は、復帰時間trを復帰タイマ25にセットしてから、復帰タイマ25による復帰時間trのカウントが満了したタイミングで、コア#0からコア#1~#63の各々に復帰指示を発行する。
【0079】
なお、制御部21は、復帰指示の復帰時刻Trを算出してもよい。復帰時刻Trは、復帰指示を発行する時刻(タイミング)である。例えば、制御部21は、リテンション指示の復帰時刻(図5の下段の例ではt)に、上述した復帰時間trを加算することで、復帰指示の復帰時刻Trを算出し、復帰時刻Trを復帰タイマ25にセットしてもよい。
【0080】
この場合、復帰タイマ25は、セットされた復帰時刻Trの到来を検知する。
【0081】
例えば、制御部21は、復帰タイマ25により、復帰時刻Trの到来が検知されたタイミングで、コア#0からコア#1~#63の各々に復帰指示を発行する。
【0082】
以上のように、制御部21は、第2の停止指示を発行する場合であって、第2の停止指示を発行するときのプログラムの進行度を示す指標が記憶部に格納された指標と一致する場合、復帰時間tr又は復帰時刻Trを算出する。例えば、制御部21は、リテンション時間記録部24に格納されたリテンション時間から、ディレイの時間tを減じた時間に基づくタイミングで第2の復帰指示を発行する。なお、第2の停止指示及び第2の復帰指示は、第1の停止指示及び第1の復帰指示よりも時間的に後に発行されるリテンション指示及び復帰指示の一例である。
【0083】
ここで、上述のように、リテンション時間は、コア20が実行するプログラムの処理内容(例えばコード内容)に依存する場合がある。このため、コア#0からリテンション指示を発行したときのプログラム上の位置情報(p)が、過去の位置情報と一致する場合、今回の復帰指示の発行タイミングは、当該過去のリテンション時間から推定することができる。
【0084】
そこで、制御部21は、取得した位置情報(p)が過去の位置情報と一致する場合、当該過去の位置情報に対応するリテンション時間から推定できる復帰指示の発行タイミングよりも、ディレイの時間分だけ早めたタイミングで、復帰指示を投機的に発行するのである。これにより、制御部21は、過去に計測したリテンション時間よりもディレイ分だけ早く、コア#1~#63をリテンション状態12(リテンションモード)から復帰させることができる。
【0085】
なお、過去と同一の位置情報であっても、リテンション時間が過去とは相違する場合も生じうる。この場合、制御部21は、以下の処理を行なってよい。
【0086】
例えば、制御部21は、外部からの命令等のトリガにより、算出した復帰時間tr(又は復帰時刻Tr)以前に復帰指示を発行する場合、復帰指示を発行するとともに、当該復帰指示の発行タイミング(時刻)を、次回の復帰指示のタイミングとしてよい。また、制御部21は、算出した復帰時間tr(又は復帰時刻Tr)よりも後(例えばコア20の復帰後)に、復帰指示の発行トリガを検知した場合、検知したトリガに応じて復帰指示を発行する場合のタイミング(時刻)を、次回の復帰指示のタイミングとしてよい。
【0087】
これらの場合、制御部21は、例えば、リテンション指示を受信してから、検知したトリガに応じて復帰指示を発行するまでの時間を算出し、算出した時間により、リテンション時間記録部24に記録された対応するリテンション時間を更新してよい。
【0088】
〔1-4〕動作例
次に、図6を参照して、上述の如く構成された一実施形態に係るノード2の動作例を説明する。図6は、ノード2の動作例を説明するフローチャートである。
【0089】
図6に例示するように、ノード2が備えるプロセッサ2aにおいて、プログラムが実行されている場合、コア#0の制御部21は、トリガの検出により、コア#0からコア#1~#63にリテンション指示を発行する(ステップS1)。
【0090】
制御部21は、リテンション指示を発行したときの現在のプログラム上の位置情報(p)を取得する(ステップS2)。
【0091】
制御部21は、位置記録部22を参照し、取得した位置情報(p)に一致する、記録済みの位置情報が位置記録部22に存在するか否かを判定する(ステップS3)。
【0092】
位置情報(p)に一致する位置情報が位置記録部22に存在しないと判定した場合(ステップS3でNO)、制御部21は、タイマ23をリセットし、時間計測を開始する(ステップS4)。
【0093】
制御部21は、トリガの検出により、コア#0からコア#1~#63に復帰指示を発行する(ステップS5)。
【0094】
制御部21は、タイマ23の時間計測を停止し、復帰指示を発行したときのタイマ23のカウント値をリテンション時間としてリテンション時間記録部24に記録し(ステップS6)、処理が終了する。
【0095】
一方、ステップS3において、位置情報(p)に一致する位置情報が位置記録部22に存在すると判定した場合(ステップS3でYES)、制御部21は、復帰時間trを算出する(ステップS7)。
【0096】
例えば、制御部21は、位置情報(p)に一致すると判定した位置記録部22内の位置情報に対応するリテンション時間をリテンション時間記録部24から取得し、リテンション時間からディレイの時間tを減じることで、復帰時間trを算出する。なお、制御部21は、ステップS1で発行したリテンション指示の復帰時刻に復帰時間trを加算することで、復帰時刻Trを算出してもよい。
【0097】
制御部21は、復帰時間tr(又は復帰時刻Tr)を復帰タイマ25にセットし(ステップS8)、復帰時間trの満了(又は復帰時刻Trの到来)を待ち合わせる(ステップS9、ステップS9でNO)。
【0098】
復帰時間trが満了した(又は復帰時刻Trが到来した)と判定した場合(ステップS9でYES)、制御部21は、復帰時間tr(又は復帰時刻Tr)に基づく復帰指示を発行し(ステップS10)、処理が終了する。
【0099】
なお、制御部21は、リテンション指示を発行するトリガを検出する都度、図6に例示するフローチャートの処理を実行してよい。
【0100】
〔1-5〕ノードのハードウェア構成例
図7は、コンピュータ10のハードウェア(HW)構成を示すブロック図である。上述のように、ノード2のプロセッサ2aのうちの第1コア20は、リテンション処理をプログラムにより実行してもよい。以下、第1コア20がリテンション処理をプログラムにより実行するために、ノード2の一例であるコンピュータ10が備えるHW構成を説明する。
【0101】
図7に示すように、コンピュータ10は、HW構成として、例示的に、プロセッサ10a、メモリ10b、記憶部10c、IF部10d、IO部10e、及び読取部10fを備えてよい。
【0102】
プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10iで相互に通信可能に接続されてよい。プロセッサ10aは、図1に示すプロセッサ2aの一例であり、複数のコア20を備えるマルチコアプロセッサである。なお、プロセッサ10aは、複数のプロセッサ2aを備えるマルチプロセッサであってもよい。
【0103】
メモリ10bは、種々のデータやプログラム等の情報を格納するHWの一例である。メモリ10bとしては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリ、及び、PM(Persistent Memory)等の不揮発性メモリ、の一方又は双方が挙げられる。
【0104】
記憶部10cは、種々のデータやプログラム等の情報を格納するHWの一例である。記憶部10cとしては、HDD(Hard Disk Drive)等の磁気ディスク装置、SSD(Solid State Drive)等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
【0105】
また、記憶部10cは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10g(情報処理プログラム)を格納してよい。例えば、第1コア20は、記憶部10cに格納されたプログラム10gをメモリ10bに展開して実行することにより、図4に例示する制御部21、タイマ23及び復帰タイマ25としての機能を実現できる。また、1以上の第2コア20は、記憶部10cに格納された図示しないプログラムをメモリ10bに展開して実行することにより、並列処理を実現できる。
【0106】
IF部10dは、ネットワークとの間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部10dは、イーサネット(登録商標)、インフィニバンド、ミリネット、或いは、FC(Fibre Channel)等の光通信、等に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。例えば、ノード2は、IF部10dを介して、端末装置3及び管理装置4のそれぞれと相互に通信可能に接続されてよい。また、例えば、プログラム10gは、当該通信IFを介して、ネットワークからコンピュータ10にダウンロードされ、記憶部10cに格納されてもよい。
【0107】
IO部10eは、入力装置、及び、出力装置、の一方又は双方を含んでよい。入力装置としては、例えば、キーボード、マウス、タッチパネル等が挙げられる。出力装置としては、例えば、モニタ、プロジェクタ、プリンタ等が挙げられる。
【0108】
読取部10fは、記録媒体10hに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10fは、記録媒体10hを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10fとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10hにはプログラム10gが格納されてもよく、読取部10fが記録媒体10hからプログラム10gを読み出して記憶部10cに格納してもよい。
【0109】
記録媒体10hとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
【0110】
上述したコンピュータ10のHW構成は例示である。従って、コンピュータ10内でのHWの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、ノード2において、IO部10e及び読取部10fの少なくとも一方は、省略されてもよい。
【0111】
なお、情報処理端末の一例である端末装置3及び情報処理装置の一例である管理装置4のそれぞれは、上述したコンピュータ10と同様のHW構成により実現されてよい。例えば、端末装置3のプロセッサ10aは、記憶部10cに格納されたプログラム10gをメモリ10bに展開して実行することにより、図1に示す端末装置3としての機能を実現できる。また、管理装置4のプロセッサ10aは、記憶部10cに格納されたプログラム10gをメモリ10bに展開して実行することにより、図1に示す管理装置4としての機能を実現できる。
【0112】
〔2〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【0113】
例えば、図4に示すコア20において、制御部21、タイマ23及び復帰タイマ25の機能は、任意の組み合わせで併合してもよく、それぞれ分割してもよい。
【0114】
〔3〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0115】
(付記1)
複数のコアを備えるプロセッサを備え、
前記複数のコアのうちの第1コアは、
前記複数のコアのうちの第2コアの動作状態を、プログラムを実行する実行状態から前記第2コアの動作を停止する停止状態に移行させる停止指示と、前記停止状態から前記実行状態に移行させる復帰指示と、を前記第2コアに発行する処理部を備え、
前記処理部は、
第1の停止指示を発行するときの前記プログラムの進行度を示す指標と、前記第1の停止指示を発行してから第1の復帰指示を発行するまでの停止時間と、を記憶部に格納し、
第2の停止指示を発行する場合であって、第2の停止指示を発行するときの前記プログラムの進行度を示す指標が前記記憶部に格納された前記指標と一致する場合、前記記憶部に格納された前記停止時間から、前記第2コアの動作状態が前記復帰指示の発行に応じて前記実行状態に移行するまでの遅延時間を減じた時間、に基づくタイミングで第2の復帰指示を発行する、
情報処理装置。
【0116】
(付記2)
前記処理部は、前記第2の停止指示の発行タイミングに前記時間を加算した前記タイミングで、前記第2の復帰指示を発行する、
付記1に記載の情報処理装置。
【0117】
(付記3)
前記処理部は、前記第2の停止指示を発行する場合であって、前記第2の停止指示を発行するときの前記指標が前記記憶部に格納された前記指標と一致しない場合、前記第2の停止指示を発行するときの前記指標と、前記第2の停止指示を発行してから前記第2の復帰指示を発行するまでの停止時間と、を前記記憶部に格納する、
付記1又は付記2に記載の情報処理装置。
【0118】
(付記4)
前記第1の停止指示を発行するときの前記指標は、前記プログラムの実行開始後、前記第1の停止指示の発行タイミングまでの時間であり、
前記第2の停止指示を発行するときの前記指標は、前記プログラムの実行開始後、前記第2の停止指示の発行タイミングまでの時間である、
付記1~付記3のいずれか1項に記載の情報処理装置。
【0119】
(付記5)
前記第2コアは、前記プログラムを各々が並列に実行する複数のコアである、
付記1~付記4のいずれか1項に記載の情報処理装置。
【0120】
(付記6)
プロセッサが備える複数のコアのうちの第1コアに、
前記複数のコアのうちの第2コアの動作状態を、プログラムを実行する実行状態から前記第2コアの動作を停止する停止状態に移行させる停止指示と、前記停止状態から前記実行状態に移行させる復帰指示と、を前記第2コアに発行する、
処理を実行させ、
前記第1コアに、前記処理において、
第1の停止指示を発行するときの前記プログラムの進行度を示す指標と、前記第1の停止指示を発行してから第1の復帰指示を発行するまでの停止時間と、を記憶部に格納し、
第2の停止指示を発行する場合であって、第2の停止指示を発行するときの前記プログラムの進行度を示す指標が前記記憶部に格納された前記指標と一致する場合、前記記憶部に格納された前記停止時間から、前記第2コアの動作状態が前記復帰指示の発行に応じて前記実行状態に移行するまでの遅延時間を減じた時間、に基づくタイミングで第2の復帰指示を発行する、
処理を実行させる、情報処理プログラム。
【0121】
(付記7)
前記第2の復帰指示の発行は、前記第2の停止指示の発行タイミングに前記時間を加算した前記タイミングで、前記第2の復帰指示を発行することを含む、
付記6に記載の情報処理プログラム。
【0122】
(付記8)
前記第1コアに、
前記第2の停止指示を発行する場合であって、前記第2の停止指示を発行するときの前記指標が前記記憶部に格納された前記指標と一致しない場合、前記第2の停止指示を発行するときの前記指標と、前記第2の停止指示を発行してから前記第2の復帰指示を発行するまでの停止時間と、を前記記憶部に格納する、
処理を実行させる、付記6又は付記7に記載の情報処理プログラム。
【0123】
(付記9)
前記第1の停止指示を発行するときの前記指標は、前記プログラムの実行開始後、前記第1の停止指示の発行タイミングまでの時間であり、
前記第2の停止指示を発行するときの前記指標は、前記プログラムの実行開始後、前記第2の停止指示の発行タイミングまでの時間である、
付記6~付記8のいずれか1項に記載の情報処理プログラム。
【0124】
(付記10)
前記第2コアは、前記プログラムを各々が並列に実行する複数のコアである、
付記6~付記9のいずれか1項に記載の情報処理プログラム。
【0125】
(付記11)
プロセッサが備える複数のコアのうちの第1コアが、
前記複数のコアのうちの第2コアの動作状態を、プログラムを実行する実行状態から前記第2コアの動作を停止する停止状態に移行させる停止指示と、前記停止状態から前記実行状態に移行させる復帰指示と、を前記第2コアに発行する、
処理を実行し、
前記第1コアは、前記処理において、
第1の停止指示を発行するときの前記プログラムの進行度を示す指標と、前記第1の停止指示を発行してから第1の復帰指示を発行するまでの停止時間と、を記憶部に格納し、
第2の停止指示を発行する場合であって、第2の停止指示を発行するときの前記プログラムの進行度を示す指標が前記記憶部に格納された前記指標と一致する場合、前記記憶部に格納された前記停止時間から、前記第2コアの動作状態が前記復帰指示の発行に応じて前記実行状態に移行するまでの遅延時間を減じた時間、に基づくタイミングで第2の復帰指示を発行する、
処理を実行する、情報処理方法。
【0126】
(付記12)
前記第2の復帰指示の発行は、前記第2の停止指示の発行タイミングに前記時間を加算した前記タイミングで、前記第2の復帰指示を発行することを含む、
付記11に記載の情報処理方法。
【0127】
(付記13)
前記第1コアは、
前記第2の停止指示を発行する場合であって、前記第2の停止指示を発行するときの前記指標が前記記憶部に格納された前記指標と一致しない場合、前記第2の停止指示を発行するときの前記指標と、前記第2の停止指示を発行してから前記第2の復帰指示を発行するまでの停止時間と、を前記記憶部に格納する、
処理を実行する、付記11又は付記12に記載の情報処理方法。
【0128】
(付記14)
前記第1の停止指示を発行するときの前記指標は、前記プログラムの実行開始後、前記第1の停止指示の発行タイミングまでの時間であり、
前記第2の停止指示を発行するときの前記指標は、前記プログラムの実行開始後、前記第2の停止指示の発行タイミングまでの時間である、
付記11~付記13のいずれか1項に記載の情報処理方法。
【0129】
(付記15)
前記第2コアは、前記プログラムを各々が並列に実行する複数のコアである、
付記11~付記14のいずれか1項に記載の情報処理方法。
【符号の説明】
【0130】
1 計算機システム
10 コンピュータ
2 計算ノード、ノード
2a プロセッサ
20 コア
21 制御部
22 位置記録部
23 タイマ
24 リテンション時間記録部
25 復帰タイマ
3 端末装置
4 管理装置
5 インタコネクトネットワーク(IN)
図1
図2
図3
図4
図5
図6
図7