JP2008090395A - 計算機システム、演算用ノード及びプログラム - Google Patents
計算機システム、演算用ノード及びプログラム Download PDFInfo
- Publication number
- JP2008090395A JP2008090395A JP2006267843A JP2006267843A JP2008090395A JP 2008090395 A JP2008090395 A JP 2008090395A JP 2006267843 A JP2006267843 A JP 2006267843A JP 2006267843 A JP2006267843 A JP 2006267843A JP 2008090395 A JP2008090395 A JP 2008090395A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- rank
- power
- program
- processor
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/325—Power saving in peripheral device
- G06F1/3275—Power saving in memory, e.g. RAM, cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Power Sources (AREA)
- Memory System (AREA)
Abstract
【課題】プロセッサからメモリにアクセスする性能に影響を与えることなく、メモリが消費する電力を大幅にかつ確実に低減する演算用ノードを提供する。
【解決手段】制御用ノードによって送信されたユーザプログラムを実行する演算用ノードにおいて、演算用ノードは、ユーザプログラムを実行するために必要なメモリの容量を含むメッセージを受信すると、ユーザプログラムがメモリにロードされる前に、メモリコントローラによって、必要なメモリの容量に対応するメモリランクを、活性状態にすることを特徴とする演算用ノード。
【選択図】図2
【解決手段】制御用ノードによって送信されたユーザプログラムを実行する演算用ノードにおいて、演算用ノードは、ユーザプログラムを実行するために必要なメモリの容量を含むメッセージを受信すると、ユーザプログラムがメモリにロードされる前に、メモリコントローラによって、必要なメモリの容量に対応するメモリランクを、活性状態にすることを特徴とする演算用ノード。
【選択図】図2
Description
本発明は、計算機システムのメモリ管理およびプロセス管理方法に関し、特に、プログラム実行及びプロセス管理を考慮しつつ主記憶装置の消費電力を低減する方法に関する。
一般の計算機システムでは、計算機システムに備わるハードウェアが動作することによって、電力が消費される。ハードウェアは、例えば、処理装置(プロセッサ)、主記憶装置(メモリ)、二次記憶装置及び入出力装置等である。
計算機システムが大量に電力を消費する場合に、計算機システムには、同時に大量の熱が発生する。このため、計算機システムで発生した熱を除去するための冷却設備が設置されなくてはならない。
計算機システムが消費する電力のコストの他に、冷却設備に関するコストもかかる。このため、計算機システムが消費する電力と計算機システムの性能と考慮した計算機システムの設計が求められている。なお、ハードウェアが動作することによって、消費される電力を低減させることは、バッテリの容量を節約する観点から、組み込み機器等においても重要である。
計算機システムに備わる主記憶装置は、一般に電力を大量に消費するハードウェアの一つである。例えば、大規模計算機システム及び超並列計算機システム等の計算機システムは、膨大な容量の主記憶装置を備える。よって、計算機システムに備わる全ハードウェアが消費する電力のうち主記憶装置が消費する電力の割合が大きくなる。
また、今日では、計算機サーバ、パーソナルコンピュータ及び組み込み機器に備わる主記憶装置の容量も増加しつつある。
今日、プロセッサ及び周辺機器が消費する電力を低減させる制御は盛んである。しかし、主記憶装置が消費する電力を低減させる制御は、盛んではない。今後、主記憶装置が消費する電力も低減させなくてはならない。
一般に、主記憶装置は、プロセッサが処理を実行するための命令及びデータ等を記憶する。具体的には、プロセッサは、二次記憶装置に記憶されるオペレーティングシステム(以下、OSという)及びアプリケーションソフトウェア等を主記憶装置にロードする。
そして、プロセッサは、主記憶装置にロードされたOS及びアプリケーションソフトウェア等に含まれる命令を取り出し、処理を実行する。このとき、プロセッサが計算処理を実行する際に必要なデータ、計算処理によるデータ、計算処理の実行結果を記憶する手段としても主記憶装置は利用される。
プロセッサによって処理が実行されるために必要な命令及びデータ等は、二次記憶装置から主記憶装置に必ずしもロードされなくともよい。例えば、計算機システムに備わる複数の計算機がネットワークによって、相互に接続されている場合、プロセッサによって処理が実行されるために必要な命令及びデータ等は、ネットワークを介して、主記憶装置に記憶される。また、計算機システムに備わる計算機が高速入出力装置によって相互に接続される場合、プロセッサによって処理が実行されるために必要な命令及びデータ等は、高速入出力装置を介して、主記憶装置に記憶される。
計算機システムにおける主記憶装置の電力モードは、キャパシタに電荷を蓄えるか否かによってデータを記録する。具体的には、キャパシタが電荷を蓄えている場合には、“1”を記憶し、キャパシタが電荷を蓄えていない場合には、“0”を記憶する。そして、主記憶装置に記憶されたデータを維持するための操作(リフレッシュ)がされなければならない。
また、主記憶装置は、通常、複数の電力制御管理モードを有する。主記憶装置は、メモリコントローラ等を介して制御モードを遷移できる。例えば、主記記憶装置は、通常モードから低電力モードに遷移できる。低電力モードでは、通常モード時と比べて、主記憶装置が消費する電力は、低くなるが、プロセッサから主記憶装置へのアクセス速度性能が低下する。なお、例えば、主記憶装置には、DRAM(Dynamic Random Access Memory)及びSRAM(Static Random Access Memory)が利用される。
また、主記憶装置に区分されるメモリランク単位で主記憶装置の電力モードがメモリコントローラによって切り替えられる。なお、メモリランクは、メモリコントローラが独立に電力を制御可能な単位である。
計算機システムが消費する電力を低減させる技術としては、メモリコントローラが論理/物理アドレス変換テーブルを含み、メモリコントローラは、使用されているメモリの領域を任意のメモリデバイスに集約するための変換テーブルを操作する。又は、オペレーティングシステムは、未使用のメモリリストをメモリデバイスごとに管理し、未使用のメモリが少ない(メモリの使用度が高い)メモリデバイスからメモリを割り当てる。これによって、メモリコントローラは、未使用のメモリデバイスの電力モードを低電力モードに切り替える(例えば、特許文献1参照)。
また、データが記憶されたメモリデバイスのみが周期的にリフレッシュされ、メモリデバイスが消費する電力を低減させる技術が知られている(例えば、特許文献2参照)。
また、並列計算機システムにおいて、当該計算機システムに発生する熱に関する問題を解消する観点及び省エネルギ化の観点から、温度センサによって検出された温度情報に基づいて、温度分布情報が作成される。そして、作成された温度分布情報に基づいて並列計算機システムに備わる各計算機へのジョブスケジュールングを実施する方法が知られている(例えば、特許文献3参照)。
一方、プロセッサが消費する電力を低減させる技術において、演算回路を操作する命令が先行して検出され、その操作対象となる演算回路が先行して活性化される。そして、演算回路によって演算が終了した後、活性化された演算回路が不活性化される技術が知られている(例えば、特許文献4参照)。
米国特許第6954837号明細書
米国特許第6215714号明細書
特開2004−126968号公報
特開2005−235204号公報
従来技術は、計算機に備わるプロセッサが消費する電力を低減させる技術がほとんどである。一方、計算機に備わるハードウェアが消費する電力を低減させるために、主記憶装置はほとんど制御されていなかった。
例えば、特許文献4に記載された技術は、プロセッサに備わる演算回路が消費する電力を低減させる技術である。
特許文献1及び特許文献2に記載された技術は、主記憶装置が消費する電力を低減化する制御をハードウェアレベルで実行する技術である。一般に、物理メモリ資源は、基本システムソフトウェア(オペレーティングシステム等)によって、直接管理される。さらに、基本システムソフトウェアは、物理メモリ資源を利用するプロセスを制御し、物理メモリ資源を利用するプロセスを管理する。
よって、実用上、基本システムソフトウェアと連携しないで、ハードウェアレベルのみで、メモリが消費する電力を有効に低減させることは困難である。
なお、基本システムソフトウェアと連携した場合でも、単純にメモリデバイス全体が未使用であればメモリデバイスの電力が遮断され、使用される頻度の高いメモリデバイスがプログラムに割り当てられる方式では、使用されるメモリの領域が断片化してしまう。なお、オペレーティングシステム等によってメモリが管理される場合、この使用されるメモリの領域の断片化は必至である。
複数の計算機が相互にネットワーク又は高速入出力装置によって接続され、複数の計算機が並列的に処理を実行する並列計算機システムがある。この並列計算機システムでは、基本システムソフトウェアは、プログラム、計算ジョブ又はプロセス等を実行させたい計算機に割り当てる。よって、並列計算機システムの場合では、主記憶装置が消費する電力を低減させるために、基本システムソフトウェアとの連携が不可欠となる。
また、メモリによって消費される電力が低い電力モードから、メモリに書き込み/読み込み可能な通常の電力モード状態へ切り替える場合に、プロセッサからメモリへのアクセスに遅延(レイテンシ)が発生する。このため、プロセッサからメモリへのアクセスの性能が低下してしまう課題がある。
特許文献1に記載された技術では、使用される頻度の高いメモリデバイスから実行されるプログラムに割り当てられ、未使用のメモリデバイスが消費する電力は低減できる。しかし、計算機システムの動作が継続すると、メモリデバイスの使用される領域が断片化する。
また、特許文献1に記載された技術は、単一の計算機ノードから構成される計算機システムを対象とする技術である。よって、特許文献1に記載された技術は、ネットワーク接続又は高速入出力装置で相互接続された複数の計算機ノードを備える並列計算機システムに対応できない。
特に、特許文献1に記載された技術では、複数の計算機ノード間で、プログラム、計算ジョブ又はプロセス等が実行される計算機ノードに割り当てられる場合等を考慮した主記憶装置が消費する電力を低減させることはできない。また、特許文献1に記載された技術では、メモリの電力モードが切り替えられることによって生じるレイテンシが隠蔽できない。
一方、特許文献2に記載された技術では、使用されているメモリデバイスに記憶されたデータを維持するために、そのメモリデバイスの電力モードを消費される電力が少ないリフレッシュモードに切り替える。これによって、メモリデバイスが消費する電力が低減できる。
なお、各プログラムによって使用されている領域が複数のメモリデバイスに断片化してしまう。この場合、特許文献2に記載された技術では、メモリデバイスの電力モードをリフレッシュモードに切り替えることができない。よって、主記憶装置が消費する電力を低減させる確実性が低い。
また、特許文献2に記載された技術では、複数の計算機ノード間で、プログラム、計算ジョブ又はプロセス等が実行される計算機ノードに割り当てられる場合等を考慮した主記憶装置が消費する電力を低減させることはできない。また、特許文献2に記載された技術では、メモリの電力モードが切り替えられることによって生じるレイテンシが隠蔽できない。
特許文献3に記載されている技術では、並列計算機システムの温度の分布が均一になるように、計算ジョブをスケジューリングする。これによって、熱密度が増大することによって発生するシステム障害が回避できる。しかし、並列計算機システムに備わるハードウェア全体(主記憶装置も含む)が消費する電力を低減する技術ではない。
本発明の代表的な一形態によると、演算処理をする第一プロセッサと、前記第一プロセッサに接続され、ユーザプログラムを記憶する記憶部と、他のノードに接続される第一インタフェースと、を備える制御用ノードと、演算処理をする第二プロセッサと、前記第二プロセッサに接続されるメモリと、前記第二プロセッサに接続され、前記制御用ノードに接続される第二インタフェースと、前記メモリに接続されるメモリコントローラと、を備える演算用ノードと、を備える計算機システムであって、前記演算用ノードは、前記制御用ノードによって送信されたユーザ演算プログラムを実行し、前記メモリの記憶領域は、前記メモリコントローラが独立に電力を制御可能な単位であるメモリランクに区分され、前記メモリに供給される電力の状態は、前記メモリランク毎に、前記プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、アクセスに遅延が生じる不活性状態とのいずれかに制御され、前記第一プロセッサは、前記ユーザプログラムを実行するために必要なメモリの容量を含むメッセージを送信し、前記第二プロセッサは、前記第一プロセッサからメッセージを受信すると、前記ユーザプログラムが前記メモリにロードされる前に、前記メモリコントローラによって、前記必要なメモリの容量に対応する前記メモリランクを、前記活性状態にすることを特徴とする。
本発明の一形態によると、プロセッサからメモリにアクセスする性能に影響を与えることなく、メモリが消費する電力を大幅にかつ確実に低減できる。
(第1の実施形態)
本発明の第1の実施形態を図1〜図14を用いて説明する。
本発明の第1の実施形態を図1〜図14を用いて説明する。
図1は、本発明の第1の実施形態における計算機システムの構成を示す図である。
第1の実施形態の計算機システムは、制御用計算機1000及び演算用計算機1001を備える。制御用計算機1000及び演算用計算機1001のハードウェア構成は、同じであるので、制御用計算機1000のハードウェア構成を例に説明する。
制御用計算機1000は、プロセッサ(以下、CPUという)1010a〜1010n(以下、CPU1010a〜1010nを総称して、CPU1010という)、メモリコントローラ1020a〜1020n(以下、メモリコントローラ1020a〜1020nを総称して、メモリコントローラ1020という)、メモリ1030a〜1030n(以下、メモリ1030a〜1030nを総称してメモリ1030という)、システムROM1090、ビデオアダプタ1100、ネットワークインタフェース1110a〜1110n(以下、ネットワークインタフェース1110a〜1110nを総称して、ネットワークインタフェース1110という)、二次記憶装置インタフェース1120a〜1120n(以下、二次記憶装置インタフェース1120a〜1120nを総称して、二次記憶装置インタフェース1120という)、入力装置インタフェース1130及び高速入出力装置1140を備える。これらは、システムバス1150によって、各々接続される。
なお、メモリ1030a〜メモリ1030iは、チャネル1070aを介して、メモリコントローラ1020aに接続される。メモリ1030m〜メモリ1030nは、チャネル1030nを介して、メモリコントローラ1020nに接続される。
CPU1010は、メモリ1030から各種プログラムをロードし、各種プログラムを実行する。メモリコントローラ1020は、メモリ1030を制御する。システムROM1090には、ファームウェアが格納される。なお、ファームウェアは、制御用計算機1000に備わるハードウェアの基本的なデータを含む。また、ファームウェアは、制御用計算機1000に備わるハードウェアの基本的な制御を実行する。
メモリ1030には、CPU1010が各種プログラムを実行するために必要なデータが一時的に格納される。また、メモリ1030には、各種プログラムが実行された後のデータ及び各種プログラムの実行結果のデータが一時的に格納される。
メモリ1030は、メモリランク1031に区分される。メモリランク1031は、メモリコントローラ1020が独立に電力を制御できる最小の単位である。例えば、メモリ1030aは、メモリランク1031a〜メモリランク1031iに区分される。
メモリコントローラ1020は、メモリ1030にメモリアドレスを定義するアドレッシング機能、及びCPU1010によってアクセスされるメモリアクセス機能を、少なくとも備える。また、メモリコントローラ1020は、メモリ1030の電力を制御するために用いるインタフェースを備える。
制御用計算機1000は、入力装置インタフェース1130を介して、キーボード1170及びマウス1180に接続される。制御用計算機1000は、ビデオアダプタ1100を介して、ディスプレイ1200に接続される。制御用計算機1000は、二次記憶装置インタフェース1120を介して、二次記憶装置1160a〜1160n(以下、二次記憶装置1160a〜1160nを総称して、二次記憶装置1160という)に接続される。
制御用計算機1000は、ネットワークインタフェース1110を介して、ネットワーク1190に接続される。そして、制御用計算機1000は、ネットワーク1190を介して演算用計算機1001に接続される。これによって、複数の計算機で演算を並列的に実行する並列計算機システムが構成される。
また、制御用計算機1000は、高速入出力装置1140を介して演算用計算機1001に接続されてもよい。
なお、演算用計算機1001は、ボード形状であってもよい。なお、演算用計算機1001がボード形状である場合、演算用計算機1001は、CPU1010、メモリコントローラ1020、メモリ1030、システムROM1090及び高速入出力装置1140を備える。この場合、演算用計算機1001に備わる高速入出力装置1140が制御用計算機1000に備わる高速入出力装置1140に差し込まれることによって、演算用計算機1001が制御用計算機1000に接続される。なお、演算用計算機1001がボード形状である場合の例としては、アクセラレータボードがある。
また、制御用計算機1000が、ネットワーク1190を介して演算用計算機1001と接続されること、及び高速入出力装置1140を介して演算用計算機1001と接続されることによって、並列計算機システムが構成されてもよい。
また、制御用計算機1000は、ネットワークインタフェース1110を介して、ネットワーク1210に接続される。そして、制御用計算機1000は、ネットワーク1210を介して、遠隔地に配置される計算機1220に接続される。例えば、遠隔地にいるユーザが、計算機1220を利用して、並列計算機システムを管理できる。
なお、図1には、CPU1010、メモリコントローラ1020、メモリ1030、ネットワークインタフェース1110及び二次記憶装置インタフェース1120が複数図示されるが、単数であってもよい。また、制御用計算機1000及び演算用計算機1001の数は、単数であっても複数であってもよいが、制御用計算機1000は少なくとも一つ以上なければならない。
図2は、本発明の第1の実施形態の制御用計算機ノードソフトウェア2000及び演算用計算機ノードソフトウェア2100の構成を示す図である。
制御用計算機ノードソフトウェア2000は、制御用計算機1000によって実行される。また、演算用計算機ノードソフトウェア2100は、演算用計算機1001によって、実行される。
制御用計算機ノードソフトウェア2000は、ユーザ演算プログラム2010をリモートプロセスとして演算用計算機1001に実行させる機能、及びリモートプロセスを管理する機能を、少なくとも備える。演算用計算機ノードソフトウェア2100は、制御用計算機ノードソフトウェア2000によって割り当てられたリモートプロセスを実行する機能を少なくとも備える。
例えば、ユーザが演算用計算機1001にリモートプロセスを高速に実行させたい場合、計算機システムに備わる制御用計算機1000の数よりも、並列計算機システムに備わる演算用計算機1001の数を多くするとよい。
まず、制御用計算機ノードソフトウェア2000について説明する。
制御用計算機ノードソフトウェア2000は、制御用計算機1000に備わるメモリ1030にロードされ、制御用計算機1000に備わるCPU1010によって実行される。制御用計算機ノードソフトウェア2000は、ユーザ演算プログラム2010、ライブラリ2020、開発・インストールツール2030及び基本システムソフトウェア2040を含む。
ユーザ演算プログラム2010は、計算機システムを利用する利用者のアプリケーションプログラムである。ライブラリ2020は、ユーザ演算プログラム2010の一部として実行されるプログラムである。
開発・インストールツール2030は、ユーザ演算プログラム2010の開発に利用されるプログラムである。また、開発・インストールツール2030は、ユーザ演算プログラム2010のインストールに利用されるプログラムである。例えば、開発・インストールツール2030は、コンパイラ、リンカ及びファイルインストールプログラムである。
基本システムソフトウェア2040は、制御用計算機1000に備わるハードウェアを管理する。また、基本システムソフトウェア2040は、利用者にソフトウェアインタフェースを提供する。例えば、基本システムソフトウェア2040は、オペレーティングシステム及びハイパーバイザである。
なお、制御用計算機ノードソフトウェア2000は、制御用計算機1000に接続される二次記憶装置1160に格納される。なお、二次記憶装置1160に障害が発生した場合を考慮し、制御用計算機ノードソフトウェア2000は、複数台の二次記憶装置1160に格納されてもよい。また、制御用計算機ノードソフトウェア2000は、制御用計算機1000にネットワーク1210を介して接続される計算機1220によって、配布されてもよい。
また、制御用計算機ノードソフトウェア2000は、演算用計算機1001又は他の制御用計算機1000に記憶されていてもよい。この場合、制御用計算機ノードソフトウェア2000を記憶する演算用計算機1001又は他の制御用計算機1000は、起動されると、ネットワーク1190又は高速入出力装置1140を介して、制御用計算機ノードソフトウェア2000を制御用計算機1000に配布する。
基本システムソフトウェア2040は、リモートプロセス実行管理プログラム2041、リモートプロセス管理インタフェース2042、演算用計算機ノード情報テーブル2043及びリモートプロセス推定メモリ量テーブル2044を含む。
リモートプロセス実行管理プログラム2041は、ユーザ演算プログラム2010が演算用計算機1001によって実行される実体をリモートプロセスとして、演算用計算機1001に割り当てる。
リモートプロセス実行管理インタフェース2042は、演算用計算機1001によって実行されるリモートプロセスの管理に関するパラメータ及び設定の変更を可能にするインタフェースとして機能するプログラムである。
演算用計算機ノード情報テーブル2043は、リモートプロセスを実行する演算用計算機1001の状態を示す。なお、演算用計算機ノード情報テーブル2043については、図7で詳細を説明する。
リモートプロセス推定メモリ量テーブル2044は、演算用計算機1001がリモートプロセスを実行するために必要なメモリ1030の容量を示す。なお、リモートプロセス推定メモリ量テーブル2044については、図8で詳細を説明する。
なお、ユーザ演算プログラム2010は、制御用計算機1000によって起動される。そして、リモートプロセス実行管理プログラム2041によって割り当てられた演算用計算機1001は、ユーザ演算プログラム2010の処理をリモートプロセスとして実行する。また、ユーザ演算プログラム2010の処理が実行されるために必要なライブラリ2020も、演算用計算機1001によって実行される。
次に、演算用計算機ノードソフトウェア2100について説明する。
演算用計算機ノードソフトウェア2100は、演算用計算機1001に備わるメモリ1030にロードされ、演算用計算機1001に備わるCPU1010によって実行される。
演算用計算機ノードソフトウェア2100は、ファームウェア2110及び基本システムソフトウェア2120を含む。ファームウェア2110は、演算用計算機1001に備わるハードウェアの基本的なデータを格納する。また、ファームウェア2110は、演算用計算機1001に備わるハードウェアに基本的な制御を実行する。
基本システムソフトウェア2120は、演算用計算機1001に備わるハードウェアを管理する。また、基本システムソフトウェア2120は、利用者にソフトウェアインタフェースを提供する。例えば、基本システムソフトウェア2120は、オペレーティングシステム及びハイパーバイザである。
なお、ファームウェア2110は、演算用計算機1001に備わるシステムROM1090に格納される。
また、基本システムソフトウェア2120は、演算用計算機1001に接続される二次記憶装置1160に格納される。なお、二次記憶装置1160に障害が発生した場合を考慮し、基本システムソフトウェア2120は、複数台の二次記憶装置1160に格納されてもよい。
また、基本システムソフトウェア2120は、演算用計算機1001にネットワーク1210を介して接続される計算機1220によって、配布されてもよい。また、基本システムソフトウェア2120は、制御用計算機1000又は他の演算用計算機1001によって、配布されてもよい。例えば、制御用計算機1000が起動された後、起動された制御用計算機1000がネットワーク1190を介して接続される演算用計算機1001へ基本システムソフトウェア2120を配布してもよい。
ファームウェア2110は、ハードウェア構成テーブル2111、メモリ・アドレッシング・モード指定インタフェース2112、メモリ・アドレッシング・モードテーブル2113、電力ランクゾーン‐メモリランク対応管理テーブル2114及びメモリ電力モードテーブル2115を含む。
ハードウェア構成テーブル2111には、演算用計算機1001に備わるハードウェアの構成に関する基本的なデータが登録される。メモリ・アドレッシング・モード指定インタフェース2112は、メモリアドレスがメモリ1030に割り振られる方法を、入力装置から指定するインタフェースとして機能するプログラムである。
メモリ・アドレッシング・モードテーブル2113には、メモリアドレスがメモリ1030に割り振られる方法が登録される。なお、メモリ・アドレッシング・モードテーブル2113については、図3で詳細を説明する。
電力ランクゾーン‐メモリランク対応管理テーブル2114には、演算用計算機1001に備わるメモリコントローラ1020によって、電力モードが制御可能な連続するメモリアドレスを示す電力ランクゾーン、及びその電力ランクゾーンに属するメモリランク1031が登録される。なお、電力ランクゾーン‐メモリランク対応管理テーブル2114については、図4で詳細を説明する。
メモリ電力モードテーブル2115には、演算用計算機1001に備わるメモリ1030が切り替え可能な電力モード、各電力モードでメモリ1030が消費する電力、及びメモリ1030が電力モードを切り替える場合に発生するCPU1010からのアクセスが遅延する時間が登録される。
基本システムソフトウェア2120は、メモリ管理初期化プログラム2121、メモリ管理プログラム2122、メモリ電力管理プログラム2123、リモートプロセス実行管理プログラム2124、メモリ管理制御インタフェース2125及びメモリゾーン‐電力ランクゾーン状態管理テーブル2126を含む。
メモリ管理初期化プログラム2121は、演算用計算機1001に備わるメモリ1030の制御及び管理に必要なデータ等を初期化する。また、メモリ管理初期化プログラム2121は、演算用計算機1001に備わるメモリ1030に関するインタフェースをユーザに提供する準備をする。なお、メモリ管理初期化プログラム2121の処理については、図9で詳細を説明する。
メモリ管理プログラム2122は、演算用計算機1001に備わるメモリ1030の制御及び管理を実行する。また、メモリ管理プログラム2122は、演算用計算機1001に備わるメモリ1030に関するインタフェースをユーザに提供する。
メモリ電力管理プログラム2123は、メモリランク1031の電力モードを、メモリコントローラ1020を介して制御する。リモートプロセス実行管理プログラム2124は、制御用計算機1000によって割り当てられたユーザ演算プログラム2010を実行する。また、リモートプロセス実行管理プログラム2124は、リモートプロセスを管理する。
メモリ管理制御インタフェース2125は、メモリ1030の管理に関するパラメータ及び設定の変更を可能にするインタフェースとして機能するプログラムである。
メモリゾーン‐電力ランクゾーン状態管理テーブル2126には、連続するメモリアドレスごとのメモリゾーン、各連続するメモリアドレスの範囲に含まれる電力ランクゾーン、各電力ランクゾーンによって消費される電力、及び各電力ランクゾーンによって使用される状態を管理する。なお、メモリゾーン‐電力ランクゾーン状態管理テーブル2126については、図6で詳細を説明する。
なお、基本システムソフトウェア2120は、一つ以上のメモリランク1031をまとめた電力ランクゾーン単位でメモリ1030が消費する電力を制御する。
図3は、本発明の第1の実施形態のメモリ・アドレッシング・モードテーブル2113の構成を示す図である。
メモリ・アドレッシング・モードテーブル2113は、ファームウェア2110によって管理される。
メモリ・アドレッシング・モードテーブル2113は、アドレッシング・モード3000及びアドレッシング方法3100を含む。
アドレッシング・モード3000には、メモリアドレスがメモリ1030に割り振られる方法の一意な識別子が登録される。ユーザは、アドレッシング・モード3000に登録された識別子に基づいて、メモリアドレスがメモリ1030に割り振られる方法を決定する。
アドレッシング方法3100には、メモリアドレスがメモリ1030に割り振られる方法が登録される。ここで、メモリアドレスとは、CPU1010がメモリ1030にアクセスする場所を示すための一意な識別子である。
次に、アドレッシング方法3100に登録されるメモリアドレスがメモリ1030に割り振られる方法について説明する。
通常モード3200では、メモリコントローラ1020は、チャネル1070aによってメモリコントローラ1020に接続されたメモリ1030aからメモリアドレスを割り振る。その後、メモリコントローラ1020は、チャネル1070aによってメモリコントローラ1020に接続されたメモリ1030bにメモリアドレスを割り振る。次に、メモリコントローラ1020は、チャネル1070nによってメモリコントローラ1020に接続されたメモリ1030mから順にメモリアドレスを割り振る。
フル・インタリーブモード3300では、メモリコントローラ1020は、全てのチャネル1070a〜1070nに対して、チャネル1070aによってメモリコントローラ1020に接続されたメモリ1030a〜1030bと、チャネル1070nに接続されたメモリ1030m〜1030nとの間で交互に、予め定められたインタリーブ・サイズごとにメモリアドレスを割り振る。
「交互に」とは、例えば、ある番号のメモリアドレスがメモリ1030aに割り振られると、次の番号のメモリアドレスがメモリ1030bに割り振られることを意味する。以下の電力制御モードにおいても同じである。
mチャネル・インタリーブモード3400では、メモリコントローラ1020は、m個のチャネルを一つの単位として,チャネル1070aによってメモリコントローラ1020に接続されたメモリ1030a〜1030bとチャネルm−1に接続されたメモリ1030との間で交互に、予め定められたインタリーブ・サイズごとにメモリアドレスを割り振り、これをチャネル1070nによってメモリコントローラ1020に接続されたメモリ1030m〜1030nまで繰り返す。
フル・インタリーブ・電力制御モード3500では、メモリコントローラ1020は、全てのチャネル1070a〜1070nに対して、チャネル1070aによってメモリ1030に接続されたメモリ1030a〜1030bとチャネル1070nに接続されたメモリ1030m〜1030nとの間で交互に、メモリランク1031のサイズごとにメモリアドレスを割り振る。
mチャネル・インタリーブ・電力制御モード3600では、メモリコントローラ1020は、m個のチャネルを一つの単位として、チャネル1070aによってメモリコントローラ1020に接続されたメモリ1030a〜1030bと、チャネルm−1に接続されたメモリ1030との間で交互に、メモリランク1031のサイズごとにメモリアドレスを割り振り、これをチャネル1070nまで繰り返す。
なお、ここで、インタリーブとは、チャネル1070に接続されたメモリ1030にメモリアドレスが交互に割り振られることによって、複数のチャネル1070に跨って、メモリアドレスが連続に割り振られることをいう。これによって、CPU1010は、連続するメモリアドレスへのアクセスを高速化できる。
また、インタリーブ・サイズとは、一つのチャネル1070に割り振るメモリアドレスの容量のことをいう。メモリコントローラ1020〜1021は、インタリーブ・サイズごとにインタリーブするようにメモリアドレスを割り振る。
通常、インタリーブ・サイズは、CPU1010のキャッシュライン・サイズであることが多い。キャッシュ・ラインサイズであるインタリーブ・サイズは、メモリページフレームのサイズより小さい。このため、メモリアドレスは、複数のチャネル1070に跨るように割り振られているので、一つのメモリページフレームが複数のメモリアドレスに跨る。従って、一つのメモリページフレームが複数のメモリランク1031に跨るので、メモリ1030の電力の制御に関して効率的でない。
よって、インタリーブ・サイズごとにメモリアドレスが割り振られるフル・インタリーブモード3300及びmチャネル・インタリーブモード3400は、メモリの低電力化には適当ではない。
また、フル・インタリーブ・電力制御モード3500及びmチャネル・インタリーブ・電力制御モード3600のインタリーブ・サイズをメモリランク1031のサイズと等しい値に設定する。メモリランク1031のランクサイズは、メモリページフレームのサイズよりも大きいので、一つ又は複数のメモリページプレームは、一つのメモリランク1031内に含まれるので、メモリの効率的な電力制御ができる。
また、通常モード3200は、メモリランク1031から順にメモリアドレスが割り振られる、すなわちメモリランク1031ごとにメモリアドレスが割り振られることによって、メモリの効率的な電力制御ができる。
メモリ・アドレッシング・モードテーブル2113のアドレッシング・モード3000は、通常、ファームウェア2110によって通常モード3200に予め設定されている。
また、ユーザが、アドレッシング・モード3000を選択することもできる。具体的には、演算用計算機1001が起動され、ファームウェア2110が実行されると、ユーザは、計算機1000〜1001のキーボード1170等の入力装置を用いて、メモリ・アドレッシング・モード指定インタフェース2112を介して、アドレッシング・モード3000を選択できる。
また、ユーザが、メモリ・アドレッシング・モードテーブル2113の設定の内容(インタリーブ・サイズ及びインタリーブのチャネル1070の数等)を変更することもできる。
なお、ユーザが、ネットワーク1210を介して演算用計算機1001に接続される計算機1220を利用して、メモリ・アドレッシング・モード指定インタフェース2112を介して、アドレッシング・モード3000を選択できるようにしてもよい。
また、ユーザが、ネットワーク1210を介して演算用計算機1001に接続される計算機1220を利用して、メモリ・アドレッシング・モード指定インタフェース2112を介して、メモリ・アドレッシング・モードテーブル2113に登録された内容を変更できるようにしてもよい。
図4は、本発明の第1の実施形態の電力ランクゾーン‐メモリランク対応管理テーブル2114の構成を示す図である。
電力ランクゾーン‐メモリランク対応管理テーブル2114は、ファームウェア2110によって管理される。
電力ランクゾーン‐メモリランク対応管理テーブル2114は、電力ランクゾーン4000、メモリアドレス4100及びメモリランク4200を含む。
電力ランクゾーン4000には、連続するメモリアドレスの領域を構成するメモリランク1031の数が最小となるように構成される電力ランクゾーンの識別子が登録される。基本システムソフトウェア2120は、電力ランクゾーン4000単位で、メモリ1030によって消費される電力を制御する。
メモリアドレス4100には、電力ランクゾーン4000に属する連続するメモリアドレスの領域のメモリアドレスが登録される。メモリランク4200には、電力ランクゾーン4000に属するメモリランク1031の識別子が登録される。
例えば、電力ランクゾーン0(PR0)4300は、メモリアドレス0〜X0,0及びメモリ1030aに備わるメモリランク1031aによって構成されることを示す。
電力ランクゾーン‐メモリランク対応管理テーブル2114は、基本システムソフトウェア2120が実行されると、例えばメモリ1030にロードされる。これによって、基本システムソフトウェア2120は、電力ランクゾーン‐メモリランク対応管理テーブル2114を参照できる。
電力ランクゾーン‐メモリランク対応管理テーブル2114に登録される内容は、メモリ1030に割り振られたメモリアドレスに基づいて、ファームウェア2110によって予め設定される。なお、メモリアドレスは、メモリ・アドレッシング・モードテーブル2113で選択されたアドレッシング・モード3000に基づいてメモリ1030に割り振られる。
なお、メモリ・アドレッシング・モードテーブル2113に登録される内容がユーザによって変更された場合、メモリ1030に割り振られるメモリアドレスが変更される。よって、メモリアドレスが変更されるので、ファームウェア2110は変更された連続するメモリアドレスの領域を構成する最小のメモリランク1031を検出する。
そして、ファームウェア2110は、変更された連続するメモリアドレスをメモリアドレス4100に登録し、検出されたメモリランクの識別子をメモリランク4200に登録する。これによって、ファームウェア2110は、電力ランクゾーン‐メモリランク対応管理テーブル2114を変更する。
電力ランクゾーン‐メモリランク対応管理テーブル2114が変更される場合に、チャネル1070、メモリ1030及びメモリランク1031のデータが必要な場合には、ファームウェア2110は、これらのデータが登録されているハードウェア構成テーブル2111を参照する。
なお、基本システムソフトウェア2120が、メモリ・アドレッシング・モードテーブル2113及びハードウェア構成テーブル2111を参照して、電力ランクゾーン‐メモリランク対応管理テーブル2114を作成するようにしてもよい。また、基本システムソフトウェア2120が、電力ランクゾーン‐メモリランク対応管理テーブル2114に新たなエントリを追加するようにしてもよい。また、基本システムソフトウェア2120が、電力ランクゾーン‐メモリランク対応管理テーブル2114に登録された内容を変更するようにしてもよい。
また、電力ランクゾーン‐メモリランク対応管理テーブル2114は、メモリ・アドレッシング・モードテーブル2003の各アドレッシングモード(3200〜3600)に対応して、アドレッシングモード(3200〜3600)ごとに作成されてもよい。
図5は、本発明の第1の実施形態のメモリ電力モードテーブル2115の構成図である。
メモリ電力モードテーブル2115は、ファームウェア2110によって管理される。メモリ電力モードテーブル2115は、電力モード5000、消費電力5100及びモード切替レイテンシ5200を含む。
電力モード5000には、メモリランク1031の切り替え可能な電力モードの識別子が登録される。消費電力5100には、各電力モードのメモリランク1031が消費する電力の値が登録される。モード切替レイテンシ5200には、メモリランク1031が電力モードを他の電力モードへ切り替える場合に生じるCPU1011からのアクセスが遅延する時間(レイテンシ)の値が登録される。
例えば、図5に示すメモリ電力モードテーブル2115には、3つの電力モード(5300〜5500)が登録されている。メモリランク1031が電力モード0(Stanby)5300の状態の場合には、メモリランク1031が時間当たりに消費する電力はX0である。また、電力モード0(Stanby)5300のメモリランク1031が電力モード0に切り替わる場合には、切り替え先の電力モード0は、現在の電力モードであるため、レイテンシは生じない。また、電力モード0(Stanby)5300のメモリランク1031が電力モード1に切り替わる場合に生じるレイテンシはY0,1である。また、電力モード0(Stanby)5300のメモリランク1031が電力モード2に切り替わる場合に生じるレイテンシはY0,2である。
なお、CPU1010は、電力モード0(Stanby)5300のメモリランク1031〜1062にアクセスできる。また、CPU1010は、電力モード1(PowerDown)5400及び電力モード2(Self‐refresh)5500のメモリランク1031には、遅延を生じさせることなくアクセスできない。
すなわち、メモリランク1031の電力モード5000が電力モード0(Stanby)5300の状態に切り替わっていなければ、CPU1010は、メモリランク1031に読み書きを実行できない。
また、メモリランク1031〜1062によって消費される電力は、電力モード2(Self‐refresh)5500のX2が最も低く、次いで、電力モード1(PowerDown)が低く、電力モード0(Stanby)5300のX0が最も高い。電力モード0(Stanby)5300を活性状態といい、電力モード1(PowerDown)5400及び電力モード2(Self‐refresh)5500を不活性状態という。
メモリ電力モードテーブル2115の内容は、演算用計算機1001に備わるメモリ1030を構成するデータに基づいて、ファームウェア2110によって、予め設定される。
図6は、本発明の第1の実施形態のメモリゾーン‐電力ランクゾーン状態管理テーブル2126の構成を示す図である。
メモリゾーン‐電力ランクゾーン状態管理テーブル2126は、基本システムソフトウェア2120によって管理される。
メモリゾーン‐電力ランクゾーン状態管理テーブル2126は、メモリゾーン6000、アドレス範囲6010、電力ランクゾーン6020、電力ランクゾーンサイズ6030、電力状態6040及び未使用メモリページフレーム数6050を含む。
メモリゾーン6000には、メモリアドレスの範囲に応じて基本システムソフトウェア2120によって管理されるメモリゾーンの識別子が登録される。アドレス範囲6010には、各メモリゾーン6000に含まれるメモリアドレスが登録される。電力ランクゾーン6020には、アドレス範囲6010に含まれる電力ランクゾーンの識別子が登録される。電力ランクゾーンサイズ6030には、各電力ランクゾーン6020に登録された識別子の電力ランクゾーンの容量が登録される。
電力状態6040には、各電力ランクゾーン6020に登録された識別子の電力ランクゾーンに属するメモリランク1031の電力モードの識別子が登録される。未使用メモリページフレーム数6050には、各電力ランクゾーン6020に登録された識別子の電力ランクゾーンに属するメモリランク1031に備わるメモリページフレームのうち、演算用計算機1001によって実行されるソフトウェアによって使用されていない未使用メモリページフレームの数の値が登録される。
例えば、図6に示すメモリゾーン‐電力ランクゾーン状態管理テーブル2126は、3つのメモリゾーン(6060、6070、及び6080)、及び各メモリゾーンに含まれる電力ランクゾーン(6061〜6062、6071〜6072、及び6081〜6082)を管理する。
メモリゾーンZone0(6060)は、アドレス範囲0〜X0のメモリアドレスを含み、Zone0(6060)は、電力ランクゾーンPR0〜PRx0(6061〜6062)を含む。
電力ランクゾーンPR0(6061)は、容量がRS0であり、電力ランクゾーンPR0の電力モードはPS0であり、電力ランクゾーンPR0(6081)内の各ソフトウェアによって使用されていないメモリページフレーム数はSu0である。
なお、電力ランクゾーン6020には、電力ランクゾーン‐メモリランク対応管理テーブル2114に含まれるメモリアドレス4100に登録されたメモリアドレスの範囲がアドレス範囲6100に登録されたメモリアドレスの範囲内である電力ランクゾーン400に登録された識別子が登録される。
メモリゾーン‐電力ランクゾーン状態管理テーブル2126に登録される内容は、演算用計算機1001が起動された時に、メモリ管理初期化プログラム2121によって設定される。また、演算用計算機1001が動作中、メモリゾーン‐電力ランクゾーン状態管理テーブル2126に登録された内容は、メモリ管理プログラム2122によって更新される。
図7は、本発明の第1の実施形態の演算用計算機ノード情報テーブル2043の構成を示す図である。
演算用計算機ノード情報テーブル2043は、基本システムソフトウェア2040によって管理される。演算用計算機ノード情報テーブル2043は、演算計算機ノード7000、ノード状態、ノード識別子及び搭載メモリ7030を含む。
演算用計算機ノード7000には、制御用計算機1000によって割り当てられたリモートプロセスを実行する演算用計算機1001の名称が登録される。ノード状態7100には、各演算用計算機1001の状態を示す値が登録される。例えば、ノード状態7100には、Runningが登録される。Runningは、演算用計算機1001が稼動中であり、リモートプロセスを実行できる状態を示す。
ノード識別子7020には、各演算用計算機1001の一意な識別子が登録される。例えば、ノード識別子7020には、演算用計算機1001に備わるネットワークインタフェース1110に付与されるハードウェアアドレス(MACアドレス)が登録される。なお、ネットワークインタフェース1110に付与されるハードウェアアドレスは、ネットワークインタフェース1110の一意な識別子であるので、ネットワークインタフェース1110を備える演算用計算機1001の一意な識別子として利用できる。
また、ノード種別7020に登録される演算用計算機1001の一意な識別子としては、演算用計算機1001のIPアドレスが登録されてもよい。
搭載メモリ7030には、各演算用計算機1001に備わるメモリ1030の容量が登録される。
なお、一つの演算用計算機ノード情報テーブル2043は、一つの制御用計算機1000に接続される演算用計算機1001の情報を示す。
例えば、図7に示す演算用計算機ノード情報テーブル2043は、制御用計算機1000に接続される演算用計算機1001の名称は、Node p(7040)、Node q(7050)及びNode r(7060)であることを示す。また。図7に示す演算用計算機ノード情報テーブル2043は、名称がNode p(7040)、Node q(7050)及びNode r(7060)である演算用計算機1001は、ノード状態がRunnigであり、リモートプロセスを実行できることを示す。
また、図7に示す演算用計算機ノード情報テーブル2043は、名称がNode p(7040)である演算用計算機1001の一意な識別子はID0であり、名称がNode q(7050)である演算用計算機1001の一意な識別子はID1であり、及び名称がNode r(7060)である演算用計算機1001の一意な識別子はID2であることを示す。
また、図7に示す演算用計算機ノード情報テーブル2043は、名称がNode p(7040)である演算用計算機1001は、容量がR0であるメモリ1030を備え、名称がNode q(7050)である演算用計算機1001は、容量がR1であるメモリ1030を備え、名称がNode r(7050)である演算用計算機1001は、容量がR2であるメモリ1030を備えることを示す。
演算計算機ノード情報テーブル2043に登録される内容は、制御用計算機1000が起動されると、リモートプロセス実行管理プログラム2041によって登録される。また、演算用計算機1001のノード状態が変更された場合、及び演算用計算機1001の構成が変更された場合、制御用計算機1000が稼動中であっても、演算用計算機ノード情報テーブル2043に登録される内容は、リモートプロセス実行管理プログラム2041によって更新される。
なお、演算用計算機1001の構成が変更された場合は、例えば、演算用計算機1001に備わるメモリ1030が変更された場合等である。
なお、演算用計算機ノード情報テーブル2043に含まれる演算用計算機ノード7000に登録される演算用計算機1001の名称は、予め設定されている。しかし、演算用計算機ノード7000に登録される演算用計算機1001の名称は、ユーザによって変更されてもよい。
具体的には、ユーザが入力装置を用いて、演算用計算機ノード7000に登録される演算用計算機1001の名称を変更する。また、ネットワーク1210を介して制御用計算機1000に接続される計算機1220を利用して、リモートプロセス管理インタフェース2042を介して、演算用計算機ノード7000に登録される演算用計算機1001の名称を変更できるようにしてもよい。
図8は、本発明の第1の実施形態のリモートプロセス推定メモリ量テーブル2044の構成を示す図である。
リモートプロセス推定メモリ量テーブル2044は、制御用計算機ノードソフトウェア2100に含まれる基本システムソフトウェア2120によって管理される。
リモートプロセス推定メモリ量テーブル2044は、プログラム・ライブラリ名8000、コード領域8010、静的データ領域8020、動的データ領域8030、一時データ領域8040、合計値8050、調整値8060、全活性化フラグ8070、活性確認フラグ8080及び更新フラグ8090を含む。
プログラム・ライブラリ名8000には、制御用計算機ノードソフトウェア2000に含まれるリモートプロセス実行管理プログラム2041によって、演算用計算機1001にリモートプロセスとして実行するように指示されたユーザ演算プログラム2010の名称及び当該ユーザ演算プログラム2010が実行されるために必要なライブラリ2020の名称が登録される。
なお、プログラム・ライブラリ名8000には、一つのユーザ演算プログラム2010、及びライブラリ2020が登録される。また、ユーザ演算プログラム2010が実行されるために必要なライブラリ2020がない場合には、ライブラリ2020は、プログラム・ライブラリ名8000には、登録されない。
コード領域8010には、プログラム・ライブラリ名8000に登録された名称の各ユーザ演算プログラム2010及びライブラリ2020がリモートプロセスとして実行される場合に、各ユーザ演算プログラム2010及びライブラリ2020を記述したコードがロードされるために、メモリ1030に確保される容量が登録される。なお、このコードの領域は、一般に、テキスト領域という。
静的データ領域8020には、プログラム・ライブラリ名8000に登録された名称の各ユーザ演算プログラム2010及びライブラリ2020がリモートプロセスとして実行される場合に、各ユーザ演算プログラム2010及びライブラリ2020の初期化されていないデータがロードされるために、メモリ1030に確保される容量が登録される。なお、データ領域は、一般に、BSS未初期化データ領域という、
動的データ領域8030には、プログラム・ライブラリ名8000に登録された名称の各ユーザ演算プログラム2010及びライブラリ2020がリモートプロセスとして実行されている場合に、演算用計算機1001によってメモリ1030に動的に確保される各ユーザ演算プログラム2010及びライブラリ2020のメモリ領域の容量が登録される。なお、このメモリ領域は、一般に、ヒープ領域という。
動的データ領域8030には、プログラム・ライブラリ名8000に登録された名称の各ユーザ演算プログラム2010及びライブラリ2020がリモートプロセスとして実行されている場合に、演算用計算機1001によってメモリ1030に動的に確保される各ユーザ演算プログラム2010及びライブラリ2020のメモリ領域の容量が登録される。なお、このメモリ領域は、一般に、ヒープ領域という。
一時データ領域8040には、プログラム・ライブラリ名8000に登録された名称の各ユーザ演算プログラム2010及びライブラリ2020がリモートプロセスとして実行されている場合に、演算用計算機1001によってメモリ1030に一時的に確保される各ユーザ演算プログラム2010及びライブラリ2020のメモリ領域の容量が登録される。なお、このメモリ領域は、一般に、スタック領域という。
合計値8050には、コード領域8010、静的データ領域8020、動的データ領域8030及び一時データ領域8040に登録された容量の和が登録される。つまり、合計値8050は、演算用計算機1001がプログラム・ライブラリ名8000に登録された名称の各ユーザ演算プログラム2010及びライブラリ2020を実行時に、演算用計算機1001がメモリ1030に確保すると推定される容量を示す。
調整値8060には、各エントリの合計値8050に登録された値の和を調整する値が登録される。つまり、調整値8060は、演算用計算機1001がリモートプロセスを実行する場合に、メモリ1030に確保すると推定される推定値を調整する値を示す。
なお、調整値8060は、図14に示すリモートプロセス終了処理によって新たに設定される。また、調整値8060は、ユーザによって設定されてもよい。
全活性化フラグ8070には、演算用計算機1001がリモートプロセスを実行する場合に、演算用計算機1001に備わる全てのメモリランク1031を活性化するか否かを示す値が登録される。
活性確認フラグ8080には、演算用計算機1001は、演算用計算機1001に備わるメモリ1030に活性化処理が実行されたことを確認してから、リモートプロセスを実行するか否かを示す値が登録される。
更新フラグ8090には、リモートプロセスが実行された後に、リモートプロセス推定メモリ量テーブル2044が更新されるか否かを示す値が登録される。
例えば、図8に示すリモートプロセス推定メモリ量テーブル2044に含まれるプログラム・ライブラリ名8000には、Prog(8100)、Lib a(8110)及びLib n(8120)が登録される。つまり、演算用計算機1001がリモートプロセスとして、Prog(8100)、Lib a(8110)及びLib n(8120)を実行する。
Prog8100が実行される場合に、演算用計算機1001に備わるメモリ1030に確保されるコード領域8010はCpであり、静的データ領域8020はDspであり、動的データ領域8030はDdpであり、一時データ領域8040はDtpである。そして、Prog8100が実行される場合に、演算用計算機1001に備わるメモリ1030に確保される合計値8050はCp+Dsp+Ddp+Dtpである。
同時に、Lib 08110に関しては、演算用計算機1001に備わるメモリ1030に確保されるコード領域8010はCl0であり、静的データ領域8020はDsl0であり、動的データ領域8030はDdl0であり、一時データ領域8040はDtl0である。そして、Prog8100が実行される場合に、演算用計算機1001に備わるメモリ1030に確保される合計値8050はCl0+Dsl0+Ddl0+Dtl0である。
また、Lib n8120が実行される場合に、演算用計算機1001に備わるメモリ1030に確保されるコード領域8010はClnであり、静的データ領域8020はDslnであり、動的データ領域8030はDdlnであり、一時データ領域8040はDtlnである。そして、Prog8100が実行される場合に、演算用計算機1001に備わるメモリ1030に確保される合計値8050はCln+Dsln+Ddln+Dtlnである。
そして、リモートプロセスが実行される場合に演算用計算機1001によって確保されると推定される推定値を調整する調整値8060はAである。
また、全活性フラグ8070にはOFFが登録されているので、演算用計算機1001に備わる全てのメモリ1030が活性化されるのではなく、合計値8050及び調整値8060に登録された値に基づいて、演算用計算機1001に備わるメモリ1030が活性化される。
また、活性確認フラグ8080にはOFFが登録されるので、演算用計算機1001に備わるメモリ1030に活性化処理が実行されてなくても、演算用計算機1001は、リモートプロセスを実行する。
更新フラグ8090にはONが登録されるので、リモートプロセスが実行された後に、リモートプロセス推定メモリ量テーブル2044が更新される。
通常、リモートプロセス推定メモリ量テーブル2044は、開発・インストールツール2030を利用して、ユーザ演算プログラム2010がインストールされる場合に、リモートプロセス管理インタフェース2042を介して、作成される。なお、リモートプロセス管理インタフェース2042を介して、リモートプロセス推定メモリ量テーブル2044に新たにエントリが追加される。なお、リモートプロセス管理インタフェース2042を介して、リモートプロセス推定メモリ量テーブル2044に登録された値が変更される。
なお、ユーザが、制御用計算機1000に備わる入力装置からリモートプロセス推定メモリ量テーブル2044を作成してもよい。同じように、ユーザがリモートプロセス推定メモリ量テーブル2044に新たにエントリを追加してもよい。同じように、ユーザがリモートプロセス推定メモリ量テーブル2044に登録された値を変更してもよい。
また、ユーザが、遠隔地に配置された計算機1220に備わる入力装置からネットワーク1210を介してリモートプロセス推定メモリ量テーブル2044を作成してもよい。同じように、ユーザがリモートプロセス推定メモリ量テーブル2044に新たにエントリを追加してもよい。同じように、ユーザがリモートプロセス推定メモリ量テーブル2044に登録された値を変更してもよい。
また、ネットワーク1190又は高速入出力装置1140に接続された演算用計算機1001によって実行されるリモートプロセス実行管理プログラム2124が、制御用計算機1000に記憶されるリモートプロセス管理インタフェース2042を介して、リモートプロセス推定メモリ量テーブル2044を作成、リモートプロセス推定メモリ量テーブル2044に新たにエントリを追加、及びリモートプロセス推定メモリ量テーブル2044に登録された値を変更してもよい。
なお、リモートプロセス推定メモリ量テーブル2044は、ユーザ演算プログラム2010ごとに複数作成される。
コード領域8010及び静的データ領域8020に登録される値は、一般に、ユーザ演算プログラム2010及びライブラリ2020のファイルに書き込まれている。従って、ユーザ演算プログラム2010及びライブラリ2020のファイルに書き込まれたコード領域8010及び静的データ領域8020に対応する値が、コード領域8010及び静的データ領域8020に登録される。
動的データサイズ8030及び一時データサイズ8040には、開発・インストールツール2030によってヒント値が示されている場合には、そのヒント値が登録される。また、開発・インストールツール2030によってヒント値が示されていない場合には、動的データサイズ8030及び一時データサイズ8040には、デフォルトの値(0)が登録される。
なお、デフォルトの値は、リモートプロセスを実行する演算用計算機1001に備わるメモリの容量に対応して設定された値であってもよい。なお、リモートプロセスを実行する演算用計算機1001に備わるメモリの容量は、演算用計算機ノード情報テーブル2043に含まれる搭載メモリ7030に登録された値である。
調整値8060には、初期状態では、0が登録される。しかし、ユーザが調整値8060に登録された値を変更できる。
また、演算用計算機1001がリモートプロセスを一度実行した場合には、リモートプロセスの終了時に、リモートプロセス実行管理プログラム2124がメモリ1030に実場合に確保した容量の値と推定値との差分値が、調整値8050に反映されてもよい。
全活性化フラグ8070には、通常、OFFが登録される。リモートプロセス以外の処理(例えば、OSによるメモリ1030の電力を管理する処理等)が演算用計算機1001によって実行されないようにする場合に、全活性化フラグ8070にはONが登録される。
活性確認フラグ8080には、通常、OFFが登録される。演算用計算機1001に備わるメモリ1030において、リモートプロセスが実行されるために必要なメモリ1030の容量が確実に活性化されたことを確認したい場合には、活性確認フラグ8080に、ONが登録される。例えば、活性確認フラグ8080にONが登録される場合には、全活性化フラグ8070にONが登録された場合等がある。
更新フラグ8090には、通常、ONが登録される。なお、ユーザが更新フラグ8090に登録された値を変更できる。
図9は、本発明の第1の実施形態のメモリ管理初期化プログラム2121のフローチャートである。
まず、メモリ管理初期化プログラム2121は、基本システムソフトウェア2120が起動されると、CPU1010によって実行される(9000)。
メモリ管理初期化プログラム2121は、メモリゾーン‐電力ランクゾーン状態管理テーブル2126に含まれるメモリアドレス範囲6010に登録されたメモリアドレスの範囲ごとにメモリゾーン6000にメモリゾーンの識別子を登録する(10001)。
例えば、メモリゾーン6000は、DMA(Direct Memory Access)(16MB)、Normal(4GB)及びHigh(4GB以上)に区分される。
なお、図6に示すメモリゾーン‐電力ランクゾーン状態管理テーブル2126では、Zone0がDMAに対応し、Zone1がNormalに対応し、Zone2がHighに対応する。
また、複数の演算用計算機1001がNumaシステムを構成する場合のメモリゾーン6000の構成としては、各々の演算用計算機1001ごとにメモリゾーンが区分される構成がある。
メモリ管理初期化プログラム2121は、メモリ1030の構成のデータ及び他のハードウェアの構成のデータが必要な場合には、例えば、ファームウェア2110に含まれるハードウェア構成テーブル2111及び電力ランクゾーン‐メモリランク対応管理テーブル2114を参照する。
次に、メモリ管理初期化プログラム2121は、ステップ9001の処理で設定したメモリゾーン6060〜6080について、メモリゾーン‐電力ランクゾーン状態管理テーブル2126を初期化する処理(ステップ9003〜ステップ9007の処理)を繰り返す(9002)。
メモリ管理初期化プログラム2121は、電力ランクゾーン‐メモリランク対応管理テーブル2114を参照し、メモリゾーン‐電力ランクゾーン状態管理テーブル2126に含まれる電力ランクゾーン6020の各エントリを設定する(9003)。
具体的には、メモリ管理初期化プログラム2121は、ステップ9001の処理で設定されたメモリゾーン6000に対応するアドレス範囲6010に登録されたメモリアドレスの範囲を取得する。そして、メモリ管理初期化プログラム2121は、電力ランクゾーン‐メモリランク対応管理テーブル2114に含まれるメモリアドレス4100に登録されたメモリアドレスの範囲が対応取得されたメモリアドレス範囲内にある電力ランクゾーン4000に登録された識別子を取得する。そして、メモリ管理初期化プログラム2121は、取得した電力ランクゾーンの識別子を電力ランクゾーン6020に登録する。
なお、例えば、電力ランクゾーンPRxoがメモリゾーン0及びメモリゾーン1に跨る場合、すなわち、電力ランクゾーンPRxoのメモリアドレスの領域がZone0のメモリアドレスの領域及びZone1のメモリアドレスの領域の両方に含まれる場合には、メモリ管理初期化プログラム2121は、跨る複数のメモリゾーン(Zone0及びZone1)の電力ランクゾーン6020に電力ランクゾーンPRxoの識別子(6062、6071)を登録する。
また、メモリ管理初期化プログラム2121は、電力ランクゾーン‐メモリランク対応管理テーブル2114を参照し、メモリゾーン6000のアドレス範囲6010に含まれる電力ランクゾーン4000の容量の値をメモリゾーン‐電力ランクゾーン管理テーブル2126の電力ランクサイズ6030に登録する(9004)。
例えば、電力ランクゾーンPRxoがZone0及びZone1に跨る場合には、メモリ管理初期化プログラム2121は、Zone0の電力ランクゾーンサイズ6030には、Zone0のメモリアドレスの領域に含まれる電力ランクゾーンPRx0のメモリアドレスの領域分の電力ランクゾーンPRxoのサイズRSx0-0(6062)を登録する。
また、メモリ管理初期化プログラム2121は、Zone1の電力ゾーンランクサイズ6030には、Zone1のメモリアドレスの領域に含まれる電力ランクゾーンPRx0のメモリアドレスの領域分の電力ランクゾーンPRx0のサイズRSx0-1(6071)を登録する。
すなわち、電力ランクゾーンが複数のメモリゾーンに跨る場合には、メモリ管理初期化プログラム2121は、電力ランクゾーンが跨るメモリゾーン内に属する容量の値を電力ランクゾーンサイズ6030に登録する。
次に、メモリ管理初期化プログラム2121は、各電力ランクゾーン(6061〜6062、6071〜6072、6081〜6082)に、各電力ランクゾーンの電力モードの状態を電力状態6040に登録する(9005)。
例えば、メモリ管理初期化プログラム2121は、メモリコントローラ1020を介して、各メモリランク1031の電力モードの状態を取得する。そして、メモリ管理初期化プログラム2121は、取得した電力モードの状態を電力状態6040に登録する。
また、メモリ管理初期化プログラム2121がハードウェア構成テーブル2111を参照して、各メモリランク1031の電力モードの状態を電力状態6040に登録してもよい。
ステップ9005の処理の後、メモリ管理初期化プログラム2121は、各電力ランクゾーン(6061〜6062、6071〜6072、6081〜6082)に、各ソフトウェアによって使用されていないメモリページフレームの数を未使用メモリページフレーム数6050に登録する(9006)。
なお、メモリゾーン‐電力ランクゾーン状態管理テーブル2126が初期化された場合、各電力ランクゾーンの未使用メモリページフレーム6050には、例えば、各電力ランクゾーン6020の電力ランクゾーンサイズ6030に含まれるメモリページフレーム数と、基本システムソフトウェア2120を初期化する処理及びコード/データ等によって使用される各電力ランクゾーン6020のメモリページフレーム数との差分値が登録される。
ステップ9006の処理の後、メモリ管理初期化プログラム2121は、電力ランクゾーン6020に含まれる全てのメモリページフレームが各ソフトウェアによって使用されていない全メモリランク1031の電力モードの状態を不活性状態に切り替え、電力状態6040を更新する(9007)。
なお、メモリランク1031の電力モードの切り替えは、例えば、メモリコントローラ1020を介して実行される。
ステップ9007の処理を実行すると、メモリ管理初期化プログラム2121は、メモリゾーン6000に登録された全ての識別子のメモリゾーンに対して、ステップ9003〜ステップ9007の処理を繰り返す(9008)。メモリゾーン6000に登録された全ての識別子のメモリゾーンに対して、ステップ9003〜ステップ9007の処理が繰り返されると、メモリ管理初期化プログラム2121は終了する(9010)。
図10は、本発明の第1の実施形態の制御用計算機1000に記憶されるリモートプロセス実行管理プログラム2041におけるリモートプロセスを実行する処理のフローチャートである。
リモートプロセス実行管理プログラム2041におけるリモートプロセスを実行する処理は、演算用計算機1001にリモートプロセスを実行させる場合に、リモートプロセスを実行する演算用計算機1001が指定されて、呼び出される。
なお、制御用計算機1000に記憶される演算用計算機ノード情報テーブル2043に含まれるノード状態7010がRunningである演算用計算機1001が指定される。
また、リモートプロセス推定メモリ量テーブル2044に含まれる各エントリの合計値8050の和である推定値よりも、演算用計算機ノード情報テーブル2043に含まれる搭載メモリ7030に登録されたメモリの容量の値が大きい演算用計算機1001が指定されてもよい。
まず、リモートプロセス実行管理プログラム2041は、リモートプロセス推定メモリ量テーブル2044に含まれる活性確認フラグ8080にONが登録されているか否かを判定する(10001)。すなわち、リモートプロセス実行管理プログラム2041は、リモートプロセスが実行されるために必要なメモリ1030の容量が確実に活性化されてから、リモートプロセスが実行されるように設定されているか否かを判定する。
活性確認フラグ8080にONが登録されていると判定された場合には、リモートプロセス実行管理プログラム2041は、演算用計算機1001にメモリ1030が活性化されたことを確認してから演算用計算機1001にリモートプロセスを実行させる指令である活性確認指令を含むリモートプロセス実行メッセージを作成し(10002)、ステップ10003の処理に進む。
なお、一般に、リモートプロセス実行メッセージは、リモートプロセスを実行させる演算用計算機1001に、制御用計算機1000によって送信される。
一方、活性確認フラグ8080にONが登録されていないと判定された場合には、リモートプロセス実行管理プログラム2041は、ステップ10003の処理に進む。
次に、リモートプロセス実行管理プログラム2041は、リモートプロセス推定メモリ量テーブル2044を参照し、更新フラグ8090にONが登録されているか否かを判定する(10003)。すなわち、リモートプロセス実行管理プログラム2041は、リモートプロセスが実行された後に、リモートプロセス推定メモリ量テーブル2044が更新されるように設定されているか否かを判定する。
更新フラグ8090にONが登録されていると判定された場合には、リモートプロセス実行管理プログラム2041は、リモートプロセスが実行された後に、演算用計算機1001にリモートプロセス推定メモリ量テーブル2044を更新させる指令である更新指令を含むリモートプロセス実行メッセージを作成し(10004)、ステップ10005の処理に進む。
一方、更新フラグ8090にONが登録されていないと判定された場合には、リモートプロセス実行管理プログラム2041は、ステップ10005の処理に進む。
次に、リモートプロセス実行管理プログラム2041は、リモートプロセス推定メモリ量テーブル2044を参照し、全活性化フラグ8070にONが登録されているか否かを判定する(10005)。すなわち、リモートプロセス実行管理2041は、演算用計算機1001がリモートプロセスを実行する場合に、演算用計算機1001に備わる全てのメモリランク1031を活性化するように設定されているか否かを判定する
全活性化フラグ8070にONが登録されていると判定された場合には、リモートプロセス実行管理プログラム2041は、演算用計算機1001がリモートプロセスを実行する場合に、演算用計算機1001に備わる全ての電力ランクゾーンに属するメモリランク1031を演算用計算機1001に活性化させる指令である全活性化指令を含むリモートプロセス実行メッセージを作成し(10006)、ステップ10008の処理に進む。
全活性化フラグ8070にONが登録されていると判定された場合には、リモートプロセス実行管理プログラム2041は、演算用計算機1001がリモートプロセスを実行する場合に、演算用計算機1001に備わる全ての電力ランクゾーンに属するメモリランク1031を演算用計算機1001に活性化させる指令である全活性化指令を含むリモートプロセス実行メッセージを作成し(10006)、ステップ10008の処理に進む。
一方、全活性化フラグ8070にONが登録されていないと判定された場合には、リモートプロセス実行管理プログラム2041は、演算用計算機1001に実行させるユーザ演算プログラム2010に対応するリモートプロセス推定メモリ量テーブル2044を参照し、プログラム・ライブラリ名8000に登録されたユーザ演算プログラム2010及びライブラリ2020の名称、合計値8050に登録された値及び調整値8060に登録された値を含むリモートプロセス実行メッセージを作成し(10007)、ステップ10008の処理に進む。
次に、リモートプロセス実行管理プログラム2041は、ステップ10002〜ステップ10007の処理で作成されたリモートプロセス実行メッセージを指定された演算用計算機1001に送信する(10008)。
そして、リモートプロセス実行管理プログラム2041は、リモートプロセス実行メッセージの送信が完了したか否かを判定する(10009)。具体的には、リモートプロセス実行管理プログラム2041は、図11のステップ11008の処理で送信される受信完了メッセージを、制御用計算機1000が受信したか否かを判定する。
リモートプロセス実行メッセージの送信が完了したと判定された場合、リモートプロセス実行管理プログラム2041は、ステップ10010の処理に進む。一方、リモートプロセス実行メッセージの送信が完了してないと判定された場合、ステップ10009の処理に戻る。
すなわち、リモートプロセス実行メッセージの送信が完了するまで、リモートプロセス実行管理プロセス2041は、ステップ10010の処理に進めない。
リモートプロセス実行メッセージの送信が完了したと判定された場合、リモートプロセス実行管理プログラム2041は、演算用計算機1001によってリモートプロセスとして実行される実体を、指定された演算用計算機1001に送信する(10010)。
ここで、ユーザ演算プログラム2010が演算用計算機1001によって実行される実体は、プログラム・ライブラリ名8000に登録された名称のユーザ演算プログラム2010、プログラム・ライブラリ名8000に登録された名称のライブラリ2020、シグナル情報及びリモートプロセスの一意な識別子を含む。
そして、リモートプロセス実行管理プログラム2041は、リモートプロセスとして実行される実体の送信が完了したか否かを判定する(10011)。リモートプロセスとして実行される実体の送信が完了したと判定された場合、リモートプロセス実行管理プログラム2041を終了する(10012)。一方、リモートプロセスとして実行される実体の送信が完了してないと判定された場合、ステップ10011の処理に戻る。
すなわち、リモートプロセスとして実行される実体の送信が完了するまで、リモートプロセス実行管理プロセス2041は、ステップ10012の処理に進めない。
図11は、本発明の第1の実施形態の演算用計算機1001に記憶されるリモートプロセス実行管理プログラム2124におけるリモートプロセス実行メッセージ処理のフローチャートである。
リモートプロセス実行管理プログラム2124におけるリモートプロセス実行メッセージ処理は、演算用計算機1001がリモートプロセス実行メッセージを受信した場合に、呼び出される。
まず、リモートプロセス実行管理プログラム2124は、リモートプロセス実行メッセージを受信し、受信したリモートプロセス実行メッセージを解析する(11001)。
そして、リモートプロセス実行管理プログラム2124は、受信したリモートプロセス実行メッセージに活性確認指令が含まれているか否かを判定する(11002)。
受信したリモートプロセス実行メッセージに活性確認指令が含まれていると判定された場合、リモートプロセス実行管理プログラム2124は、リモートプロセス実行管理プログラム2124に定義される活性確認フラグを有効化する(11003)。
一方、受信したリモートプロセス実行メッセージに活性確認指令が含まれていないと判定された場合、リモートプロセス実行管理プログラム2124は、リモートプロセス実行管理プログラム2124に定義される活性確認フラグを無効化する(11004)。
次に、リモートプロセス実行管理プログラム2124は、受信したリモートプロセス実行メッセージに更新指令が含まれているか否かを判定する(11005)。
受信したリモートプロセス実行メッセージに更新指令が含まれていると判定された場合、リモートプロセス実行管理プログラム2124は、リモートプロセス実行管理プログラム2124に定義される更新フラグを有効化する(11006)。
一方、受信したリモートプロセス実行メッセージに更新指令が含まれていないと判定された場合、リモートプロセス実行管理プログラム2124は、リモートプロセス実行管理プログラム2124に定義される更新フラグを無効化する(11007)。
次に、リモートプロセス実行管理プログラム2124は、リモートプロセス実行メッセージの受信を完了したことを示すメッセージを制御用計算機1000に送信する(11008)。
そして、リモートプロセス実行管理プログラム2124は、受信したリモートプロセス実行メッセージに全活性化指令が含まれているか否かを判定する(11009)。
受信したリモートプロセス実行メッセージに全活性化指令が含まれていると判定された場合、リモートプロセス実行管理プログラム2124は、演算用計算機1001に備わる全ての電力ランクゾーンに属する全てのメモリランク1031を活性化し(11010)、ステップ11015の処理に進む。
一方、受信したリモートプロセス実行メッセージに全活性化指令が含まれていないと判定された場合、リモートプロセス実行管理プログラム2124は、受信したリモートプロセス実行メッセージに含まれるユーザ演算プログラム2010及びライブラリ2020の合計値8040に登録された値及び調整値8050に登録された値を取得する(11011)。
そして、リモートプロセス実行管理プログラム2124は、メモリゾーン-電力ランクゾーン状態管理テーブル2126を参照し、電力状態6040に登録された値が活性状態であるエントリの未使用メモリページフレーム数6050に登録された値に基づいて、未使用メモリページフレームの容量を算出する。なお、メモリページフレームの容量は予め設定されているので、この予め設定された容量と、未使用メモリページフレーム数6050に登録された値を乗算することによって、未使用メモリページフレームの容量が算出される。
そして、リモートプロセス実行管理プログラム2124は、ステップ11011の処理で取得した各合計値8040に登録された値の和である推定値を算出する。次に、リモートプロセス実行管理プログラム2124は、算出された未使用メモリページフレームの容量と、推定値及び調整値8050に登録された値の和との差分値を計算する(11012)。
そして、リモートプロセス実行管理プログラム2124は、ステップ11012の処理で計算された差分値が負か否かを判定する(11013)。
ステップ11012の処理で計算された差分値が負であると判定された場合、リモートプロセス実行管理プログラム2124は、電力モードが新たに活性状態に切り替えられた電力ランクゾーンに属する未使用メモリページフレームの容量が、ステップ11012の処理で計算された差分値となるように、電力モードが不活性状態であるメモリランク1031の電力モードを活性状態に切り替える(11014)。
具体的には、リモートプロセス実行管理プログラム2124は、予め指定されたメモリゾーンから順に、電力ランクゾーンサイズ6030に登録された値が小さい電力ランクゾーンから優先して、当該電力ランクゾーンに属するメモリランク1031の電力モードを不活性状態から活性状態に切り替える。
なお、一般に、メモリ管理プログラム2122には、ユーザプログラム(例えば、ユーザ演算プログラム2010)を実行するためにメモリ1030を割り当てる場合に、検索されるメモリゾーンの優先順位が予め指定されている。よって、リモートプロセス実行管理プログラム2124は、メモリ管理プログラム2122に指定されたメモリゾーンの優先順位で、メモリゾーンの電力ランクゾーンに属するメモリランク1031の電力モードの切り替えを実行するとよい。
次に、リモートプロセス実行管理プログラム2124は、メモリゾーン‐電力ランクゾーン状態管理テーブル2126において、新たに活性状態に切り替えた電力ランクゾーンに該当するエントリの電力状態6040を更新する(11015)。
そして、リモートプロセス実行管理プログラム2124は、リモートプロセス実行管理プログラム2124に定義される活性確認フラグが有効化されているか否かを判定する(11016)。
リモートプロセス実行管理プログラム2124に定義される活性確認フラグが有効化されていると判定された場合、リモートプロセス実行管理プログラム2124は、リモートプロセス実行管理プログラム2124に定義される活性済みフラグを有効化し(11017)、リモートプロセス実行管理プログラム2124を終了する(11018)。
一方、リモートプロセス実行管理プログラム2124に定義される活性確認フラグが有効化されていると判定された場合、リモートプロセス実行管理プログラム2124を終了する(11018)。
リモートプロセス実行管理プログラム2124は、リモート実行プロセスを受信すると、リモートプロセスを実行するために必要なメモリ1030の容量を、先行して活性化する。また、制御用計算機1000は、受信完了メッセージを受信するまで、リモートプロセスとして実行される実体を演算用計算機1001に送信しない。
これによって、リモートプロセスがメモリ1030にロードされる前に、メモリ1030が先行して活性化されるので、演算用計算機1001がリモートプロセスを実行する処理速度に影響を与えずに、メモリ1030が消費する電力を低減できる。
図12は、本発明の第1の実施形態の演算用計算機1001に記憶されるリモートプロセス実行管理プログラム2124におけるリモートプログラム実行処理のフローチャートである。
リモートプロセス実行管理プログラム2124におけるリモートプログラム実行処理は、ステップ10010の処理で制御用計算機1000から送信される演算用計算機1001によってリモートプロセスとして実行される実体を演算用計算機1001が受信した場合に、呼び出される。
まず、リモートプロセス実行管理プログラム2124は、演算用計算機1001によってリモートプロセスとして実行される実体を受信する(12001)。
リモートプロセス実行管理プログラム2124は、演算用計算機1001によってリモートプロセスとして実行される実体の受信を完了したことを示すメッセージを制御用計算機1000に送信する(12002)。
次に、リモートプロセス実行管理プログラム2124は、ユーザ演算プログラム2010を実行するための準備をする(12003)。具体的には、リモートプロセス実行管理プログラム2124は、受信したリモートプロセスとして実行される実体であるユーザ演算プログラム2010及びライブラリ2020を実行するために必要なメモリ1030の容量を確保する。また、リモートプロセス実行管理プログラム2124は、受信したシグナル情報及びプロセス番号等を設定する。
そして、リモートプロセス実行管理プログラム2124は、ステップ11003の処理で設定された活性確認フラグが有効化されているか否かを判定する(12004)。
活性確認フラグが有効化されていると判定された場合には、リモートプロセス実行管理プログラム2124は、ステップ11017の処理で設定された活性済みフラグが有効化されているか否かを判定する(12005)。
そして、ステップ12005の処理で活性済みフラグが有効化されていると判定される場合、及びステップ12004の処理で活性確認フラグが有効化されていないと判定される場合に、リモートプロセス実行管理プログラム2124は、ユーザ演算プログラム2010を実行し(12006)、リモートプロセス実行管理プログラム2124を終了する(12007)。
また、ステップ12005の処理で活性済みフラグが有効化されていないと判定される場合、リモートプロセス実行管理プログラム2124は、活性済みフラグが有効化されるのを待って、活性済みフラグが有効化された後、ユーザ演算プログラム2010を実行する。
図13は、本発明の第1の実施形態の演算用計算機1001に記憶されるリモートプロセス実行管理プログラム2124におけるリモートプロセス終了処理のフローチャートである。
リモートプロセス実行管理プログラム2124におけるリモートプロセス終了処理は、ステップ12006の処理で、ユーザ演算プログラム2010の実行(12006)が終了する場合に、呼び出される。
まず、リモートプロセス実行管理プログラム2124は、リモートプロセス実行管理プログラム2124に定義される更新フラグが有効化されているか否かを判定する(13001)。
更新フラグが有効化されていると判定された場合には、リモートプロセス実行管理プログラム2124は、ユーザ演算プログラム2010を実行している間に、使用したメモリ1030の容量の値を含むリモートプロセスの実行が終了したことを示すリモートプロセス終了メッセージを作成し(13002)、ステップ13003の処理に進む。
なお、ユーザ演算プログラム2010によって使用されたメモリ1030の容量は、一般に、メモリ管理プログラム2122によって管理される。従って、リモートプロセス実行管理プログラム2124は、メモリ管理プログラム2122を参照して、ユーザ演算プログラム2010によって使用されたメモリ1030の容量を取得する。
一方、更新フラグが有効化されていると判定された場合には、リモートプロセス実行管理プログラム2124は、リモートプロセスの実行が終了したことを示すリモートプロセス終了メッセージを作成し、ステップ13003の処理に進む。
次に、リモートプロセス実行管理プログラム2124は、リモートプロセス終了メッセージを制御用計算機1000に送信する(13003)。
リモートプロセス実行管理プログラム2124は、ユーザ演算プログラム2010によって使用されたメモリ1030の領域を未使用メモリページフレームとして解放する(13004)。
リモートプロセス実行管理プログラム2124は、メモリゾーン‐電力ランクゾーン状態管理テーブル2126に含まれる未使用メモリページフレーム数6050に登録された値を更新する(13005)。
なお、ユーザ演算プログラム2010によって使用されたメモリページフレームを解放する処理は、メモリ管理プログラム2122が呼び出され、呼び出されたメモリ管理プログラム2122によって実行されてもよい。
また、メモリゾーン‐電力ランクゾーン状態管理テーブル2126に含まれる未使用メモリページフレーム数6050に登録された値を更新する処理は、メモリ管理プログラム2122によって管理される未使用メモリページフレームの情報に基づいて、メモリ電力管理プログラム2123又はメモリ管理プログラム2122が呼び出され、呼び出されたメモリ電力管理プログラム2123又はメモリ管理プログラム2122によって実行されてもよい。
次に、リモートプロセス実行管理プログラム2124は、メモリゾーン‐電力ランクゾーン状態管理テーブル2126に含まれる各電力ランクゾーン6020に登録された識別子の電力ランクゾーンにステップ13007〜13009の処理を繰り返す(13006)。
まず、リモートプロセス実行管理プログラム2124は、未使用メモリページフレーム数6050に登録された値と、一つのメモリページフレーム当たりの容量とを乗算する。これによって、未使用メモリページフレームの容量が計算される。そして、リモートプロセス実行管理プログラム2124は、電力ランクゾーンサイズ6030に登録された値と計算された未使用メモリページフレームの容量との差分値を計算する(13007)。
そして、リモートプロセス実行管理プログラム2124は、ステップ13007の処理で計算された差分値が0か否かを判定する(13008)。
差分値が0と判定された場合には、該当する電力ランクゾーン6020に属するメモリランク1031の電力モードを不活性状態にする(13009)。
一方、ステップ13009の処理が実行された後、又はステップ13008の処理で差分値が0でないと判定された場合には、メモリゾーン‐電力ランクゾーン状態管理テーブル2126に含まれる各電力ランクゾーン6020に登録された全ての識別子の電力ランクゾーンにステップ13007〜13009の処理が実行されると(13010)、リモートプロセス実行管理プログラム2124を終了する(13011)。
図14は、本発明の第1の実施形態の制御用計算機1000に記憶されるリモートプロセス実行管理プログラム2041におけるリモートプロセス終了処理のフローチャートである。
リモートプロセス実行管理プログラム2041におけるリモートプロセス終了処理は、演算用計算機1001から送信されたリモートプロセス終了メッセージを制御用計算機1000が受信すると、呼び出される。
まず、リモートプロセス実行管理プログラム2041は、リモートプロセス終了メッセージを受信し、受信したリモートプロセス終了メッセージを解析する(14001)。
そして、リモートプロセス実行管理プログラム2041は、演算用計算機1001に実行させたリモートプロセスに対応するリモートプロセス推定メモリ量テーブル2044に含まれる更新フラグ8090にONが登録されているか否かを判定する(14002)。
更新フラグ8090にONが登録されていないと判定された場合には、ステップ14006の処理に進む。
更新フラグ8090にONが登録されていると判定された場合には、リモートプロセス実行管理プログラム2041は、リモートプロセス終了メッセージに、ユーザ演算プログラム2010によって実際に使用されたメモリ1030の容量の値が含まれるか否かを判定する(14003)。
ユーザ演算プログラム2010によって実際に使用されたメモリ1030の容量の値が含まれると判定された場合には、リモートプロセス実行管理プログラム2041は、リモートプロセス終了メッセージに含まれるメモリ1030の容量からリモートプロセス推定メモリ量テーブル2044に含まれる各エントリの合計値8050の和である推定値との差分値を計算する(14004)。
一方、リモートプロセス終了メッセージに、ユーザ演算プログラム2010によって実際に使用されたメモリ1030の容量の値が含まれないと判定された場合には、ステップ14006の処理に進む。
ステップ14004の処理が実行された後、リモートプロセス実行管理プログラム2041は、リモートプロセス推定メモリ量テーブル2044に含まれる調整値8060にステップ14004の処理で計算機された差分値を登録する(14005)。
次に、リモートプロセス実行管理プログラム2041は、ユーザ演算プログラム2010に関するリモートプロセス実行処理を終了し(14006)、リモートプログラム実行管理プログラム2041を終了する(14007)。
第1の実施形態では、相互接続された複数の計算機(制御用計算機1000及び演算用計算機1001)から構成される並列計算機システムと基本システムソフトウェア(2040及び2120)(オペレーティングシステム等)が連携して、メモリ1030が消費する電力を低減させる。そして、ユーザ演算プログラム2010がリモートプロセスとして演算用計算機1001によって実行されることを考慮した一連のメモリ1030の電力モードの制御並びにメモリ1030の割当及び解放が実行される。
これによって、ユーザ演算プログラム2010がリモートプロセスとして実行される場合に、最低限必要なメモリランク1031の電力モードを活性状態に切り替えることができる。また、メモリ1030の使用されている領域が、メモリランク1031に跨るような断片化を抑制できる。
従って、メモリ1030が消費する電力を確実かつ効率的に大幅に低減できる。さらに、演算用計算機1001がリモートプロセスを実行するために必要なメモリランク1031の電力モードを先行して活性化するので、メモリランク1031の電力モードを切り替える場合に発生するレイテンシを隠蔽できる。よって、CPU1010がメモリ1030にアクセスする性能に影響を与えずにメモリ1030が消費する電力を低減できる。
また、ユーザ演算プログラム2010が演算用計算機1001によって実行される場合に、外乱を排除できる。
特に、ユーザ演算プログラム2010が大量のメモリ1030の領域を使用する場合(例えば、科学技術計算プログラム等)等、より効果的にメモリ1030が消費する電力を低減できる。
(第2の実施形態)
本発明の第2の実施形態を図15〜図18を用いて説明する。
本発明の第2の実施形態を図15〜図18を用いて説明する。
第2の実施形態は、演算用計算機1001がリモートプロセスを実行するために必要なメモリ1030の容量を先行して活性化する場合に、先行して活性化される電力ランクゾーンの順番をユーザが指定できる実施形態である。
以下、第2の実施形態について第1の実施形態と異なる部分についてのみ説明する。なお、第1の実施形態と同じ構成には、同じ符号を付与する。
図15は、本発明の第2の実施形態の制御用計算機1000に記憶される基本システムソフトウェア15000の構成を示す図である。
基本システムソフトウェア15000は、制御用計算機ノード1000に備わるCPU1010によって実行される。
基本システムソフトウェア15000は、使用メモリ電力ランクポリシテーブル15010を含む。
使用メモリ電力ランクポリシテーブル15010は、演算用計算機1001がリモートプロセスを実行するために必要なメモリ1030の容量を先行して活性化する場合に、先行して活性化される電力ランクゾーンのポリシ等を示す。なお、基本システムソフトウェア15000の他の構成は、第1の実施形態と同じである。
図16は、本発明の第2の実施形態の使用メモリ電力ランクポリシテーブル15010の構成を示す図である。
使用メモリ電力ランクポリシテーブル15010は、基本システムソフトウェア15000によって管理される。
使用メモリ電力ランクポリシテーブル15010は、プログラム名16000、優先割当電力ランクゾーン数16010、使用電力ランクゾーン優先順位16020、メモリ割当ポリシ16030及び電力ランクゾーン指定フラグ16040を含む。
プログラム名16000には、ユーザ演算プログラム2010の名称が登録される。優先割当電力ランクゾーン数16010には、演算用計算機1001がリモートプロセスを実行するために必要なメモリ1030の容量を使用する場合に、優先して使用する電力ランクゾーンの数が登録される。
使用電力ランクゾーン優先順位16020には、演算用計算機1001がリモートプロセスを実行するために必要なメモリ1030の容量を使用する場合に、優先して使用する電力ランクゾーンの順番の電力ランクゾーンの識別子が登録される。
メモリ割当ポリシ16030には、使用電力ランクゾーン優先順位16020に登録された識別子の電力ランクゾーンが使用できない場合、優先して活性化される電力ランクゾーンを示すポリシが登録される。なお、使用電力ランクゾーン優先順位16020に登録された識別子の電力ランクゾーンが使用できない場合は、例えば、使用電力ランクゾーン優先順位16020に登録された全ての識別子の電力ランクゾーンが使用されている場合等がある。
電力ランクゾーン指定フラグ16040には、演算用計算機1001がリモートプロセスを実行するために必要なメモリ1030の容量を割り当てる場合に、優先割当電力ランクゾーン数16010、使用電力ランクゾーン優先順位16020、メモリ割当ポリシ16030等に登録された値等に基づいて、電力ランクゾーンを優先して活性化する否かの値が登録される。
なお、使用メモリ電力ランクポリシテーブル15010は、演算用計算機ノード情報テーブル2043に含まれる演算用計算機ノード7000に登録された名称の演算用計算機1001ごとに、制御用計算機1000に複数記憶されてもよい。
例えば、図16に示す使用メモリ電力ランクポリシテーブル15010では、Prog0(16050)は、優先して使用される電力ランクゾーンの数は5である。また、優先して使用される電力ランクゾーンの順番は、PPxp、PRxp+1、PRxp+2、PRxp+3及びPRxp+4の順である。そして、PPxp、PRxp+1、PRxp+2、PRxp+3及びPRxp+4のいずれもがユーザ演算プログラム2010に割り当てられない既に使用中である場合には、PRxp+5の電力ランクゾーンから昇順に優先して割り当てられる。
また、電力ランクゾーン指定フラグが有効化されている。よって、演算用計算機1001がリモートプロセスを実行するために必要なメモリ1030の容量を使用する場合に、優先割当電力ランクゾーン数16010、使用電力ランクゾーン優先順位16020、メモリ割当ポリシ16030等に登録された値等に基づいて、電力ランクゾーンは優先して使用される。
なお、プログラム名16000には、演算用計算機1001によってリモートプロセスとして実行されるユーザ演算プログラム2010の名称が登録される。なお、プログラム名16000に登録されるユーザ演算プログラム2010の名称の数は、単数であっても複数であってもよい。
優先割当電力ランクゾーン数16010には、0以上の整数である値が登録される。優先割当電力ランクゾーン数16010に登録される値は、演算用計算機ノード1001に備わるメモリ1030の電力ランクゾーンの数を超えない。これは、ユーザが優先割当電力ランクゾーン数16010を設定する場合に、メモリゾーン‐電力ランクゾーン状態管理テーブル2126に含まれる電力ランクゾーン6020に登録されたエントリの数を参照することによって防止できる。
なお、優先割当電力ランクゾーン数16010に登録された値の電力ランクゾーンの未使用メモリページフレームの容量が、リモートプロセス推定メモリ量テーブル2044に含まれる合計値8050及び調整値8060に登録された値以上になるように、ユーザは、優先割当電力ランクゾーン数16010に登録される値を設定してもよい。
使用電力ランクゾーン優先順位16020は、優先割当電力ランクゾーン数16010だけ優先順に電力ランクゾーンを設定する。メモリ割当ポリシ16030は、あるユーザ演算プログラムの実行が終了した時に、なるべく電力ランクゾーンに属する全メモリページフレームが未使用領域となることを考慮して設定される。なお、エントリ(16010、16020、16030)を設定しない場合には、リモートプロセス実行管理プログラム2124が、各エントリを適切に設定する。
なお、演算用計算機1001によってリモートプロセスとしてユーザ演算プログラム2010が実行される場合、演算用計算機1001に記憶されるメモリ管理プログラム2122は、使用電力ランクゾーン優先順位16020及びメモリ割当ポリシ16030に登録された値に基づいて、メモリ割当で実施する。
なお、使用メモリ電力ランクポリシテーブル15010の各エントリには、通常、デフォルトの値が登録される。また、ユーザが使用メモリ電力ランクポリシテーブル15010を設定できる。
具体的には、ユーザは、制御用計算機1000に備わる入力装置を用いて、リモートプロセス管理インタフェース2042を介して、使用メモリ電力ランクポリシテーブル15010を作成してもよいし、使用メモリ電力ランクポリシテーブル15010に登録されるエントリを追加してもよいし、及び使用メモリ電力ランクポリシテーブル15010に登録される値を変更してもよい。
また、ユーザは、遠隔地にある計算機1220からネットワーク1210を通じて、リモートプロセス管理インタフェース2042を介して、使用メモリ電力ランクポリシテーブル15010を設定できるようにしてもよい。
また、演算用計算機1001に記憶されるリモートプロセス実行管理プログラム2124が、ネットワーク1190又は高速入出力装置1140を通じて、制御用計算機1000に記憶されるリモートプロセス管理インタフェース2042を介して、使用メモリ電力ランクポリシテーブル15010を設定できるようにしてもよい。
例えば、リモートプロセス実行管理プログラム2124は、優先割当電力ランクゾーン数16010に登録される値、使用電力ランクゾーン優先順位16020に登録される電力ランクゾーンの識別子及びメモリ割当ポリシ16030に登録されるポリシを決定する。そして、決定された優先割当電力ランクゾーン数16010に登録される値、使用電力ランクゾーン優先順位16020に登録される電力ランクゾーンの識別子及びメモリ割当ポリシ16030に登録されるポリシがそのまま使用メモリ電力ランクポリシテーブル15010に登録されてもよい。
図17は、本発明の第2の実施形態の制御用計算機1000に記憶されるリモートプロセス実行管理プログラム2041におけるリモートプロセス実行処理のフローチャートである。
なお、図10に示す第1の実施形態のリモートプロセス実行管理プログラム2041におけるリモートプロセス実行処理と異なる部分を説明する。
ステップ10005の処理で、リモートプロセス実行管理プログラム2041は、全活性化フラグ8070にONが登録されていないと判定された場合、ステップ10007の処理に進む。
そして、リモートプロセス実行管理プログラム2041は、ステップ10007の処理を実行した後、使用メモリ電力ランクポリシテーブル15010を参照し、電力ランクゾーン指定フラグ16040にONが登録されているか否かを判定する(17000)。
電力ランクゾーン指定フラグ16040にONが登録されていない場合には、リモートプロセス実行管理プログラム2041は、ステップ10008の処理に進む。
一方、電力ランクゾーン指定フラグ16040にONが登録されている場合には、リモートプロセス実行管理プログラム2041は、使用メモリ電力ランクポリシテーブル15010で指定された電力ランクゾーンを優先して活性化する指令である電力ランクゾーン指定指令を含むプロセス実行メッセージを作成する(17001)。
そして、リモートプロセス実行管理プログラム2041は、使用メモリ電力ランクポリシテーブル15010に含まれるプログラム名16000に登録されたユーザ演算プログラムの名称のうち、演算用計算機1001にリモートプロセスとして実行させるユーザ演算プログラム2010の名称に一致するエントリを選択する。そして、選択したエントリから、優先割当電力ランクゾーン数16010、使用電力ランクゾーン優先順位16020及びメモリ割当ポリシ16030に登録された値を取得し、取得した値を含むリモート実行メッセージを作成し(17002)、ステップ10008の処理に進む。
図18は、本発明の第2の実施形態の演算用計算機1001に記憶されるリモートプロセス実行管理プログラム2124におけるリモートプロセス実行メッセージ処理のフローチャートである。
なお、図11に示す第1の実施形態の演算用計算機ノードソフトウェア2100のリモートプロセス実行管理プログラム2124におけるリモートプロセス実行メッセージ処理と異なる部分のみ説明する。
受信したリモートプロセス実行メッセージに全活性化指令が含まれていないと判定された場合、リモートプロセス実行管理プログラム2124は、ステップ11011〜ステップ11013の処理を実行する。
そして、ステップ11013の処理で、差分値が負でないと判定された場合、ステップ11015の処理に進む。
一方、ステップ11013の処理で、差分値が負であると判定された場合、リモートプロセス実行管理プログラム2124は、受信したリモートプロセス実行メッセージに電力ランクゾーン指定指令が含まれているか否かを判定する(18000)。
受信したリモートプロセス実行メッセージに電力ランクゾーン指定指令が含まれていると判定された場合、ステップ18001の処理に進む。
一方、受信したリモートプロセス実行メッセージに電力ランクゾーン指定指令が含まれていないと判定された場合、リモートプロセス実行管理プログラム2124は、ステップ11014の処理を実行し、ステップ11015の処理に進む。
一方、受信したリモートプロセス実行メッセージに電力ランクゾーン指定指令が含まれていると判定された場合、リモートプロセス実行管理プログラム2124は、受信したリモートプロセス実行メッセージに使用電力ランクゾーン優先順位16020に登録された値及びメモリ割当ポリシ16030に登録された値の少なくとも一方が含まれているか否かを判定する(18001)。
受信したリモートプロセス実行メッセージに使用電力ランクゾーン優先順位16020に登録された値及びメモリ割当ポリシ16030に登録された値のいずれもが含まれていないと判定された場合、リモートプロセス実行管理プログラム2124は、受信したリモートプロセス実行メッセージに優先割当電力ランクゾーン数16010に登録された値が含まれているか否かを判定する(18003)。
受信したリモートプロセス実行メッセージに優先割当電力ランクゾーン数16010に登録された値が含まれていると判定された場合、リモートプロセス実行管理プログラム2124は、演算用計算機1001によって実行される他のユーザ演算プログラム2010に対応する使用電力ランクゾーン優先順位16020に登録された識別子以外の電力ランクゾーンから、当該電力ランクゾーンの未使用メモリページフレーム数6040に登録された値が大きい順に、電力ランクゾーンに優先順位を付与する(18004)。
なお、優先順位が付与された電力ランクゾーンの数は、優先割当電力ランクゾーン数16010に登録された値と同じである。
そして、ステップ18004の処理が実行された後、ステップ18002の処理に進む。
一方、ステップ18003の処理で、受信したリモートプロセス実行メッセージに優先割当電力ランクゾーン数16010に登録された値が含まれていないと判定された場合、リモートプロセス実行管理プログラム2124は、演算用計算機1001によって実行される他のユーザ演算プログラム2010に対応する使用電力ランクゾーン優先順位16020に登録された識別子以外の電力ランクゾーンから、当該電力ランクゾーンの未使用メモリページフレーム数6040に登録された値が大きい順に、電力ランクゾーンに優先順位を付与する(18005)。
なお、優先順位が付与された全ての電力ランクゾーンが活性化された場合に、活性化された電力ランクゾーンに属する未使用メモリページフレームの容量の値が、ステップ11012の処理で計算された差分値以上になるように、電力ランクゾーンに優先順位が付与される。
そして、ステップ18005の処理が実行された後、ステップ18002の処理に進む。
次に、リモートプロセス実行管理プログラム2124は、ステップ18004若しくはステップ18005の処理で設定された優先順位、又は受信したリモートプロセス実行メッセージに含まれる使用電力ランクゾーン優先順位16020に登録された値に基づいて、優先して電力ランクゾーンの電力モードを活性化する。なお、電力モードを活性化する電力ランクゾーンに属する未使用メモリページフレームの容量の値がステップ11012の処理で計算された差分値以上になるように、電力ランクゾーンを活性化する(18002)。ステップ18002の処理が実行された後、ステップ11015の処理に進む。
なお、受信したリモートプロセス実行メッセージに使用電力ランクゾーン16020に登録された値が含まれていない場合、リモートプロセス実行管理プログラム2124は、受信したリモートプロセス実行メッセージに含まれるメモリ割当ポリシ16030に登録された値に基づいて、優先して電力ランクゾーンを活性化する。
これによって、ユーザ演算プログラム2010がリモートプロセスとして実行される場合に、最低限必要なメモリランク1031の電力モードを活性状態に切り替えることができる。また、メモリ1030の使用されている領域が、メモリランク1031に跨るような断片化を抑制できる。
従って、メモリ1030が消費する電力を確実かつ効率的に大幅に低減できる。さらに、演算用計算機1001がリモートプロセスを実行するために必要なメモリランク1031の電力モードを先行して活性化するので、メモリランク1031の電力モードを切り替える場合に発生するレイテンシを隠蔽できる。よって、CPU1010がメモリ1030にアクセスする性能に影響を与えずにメモリ1030が消費する電力を低減できる。
また、ユーザ演算プログラム2010が演算用計算機1001によって実行される場合に、外乱を排除できる。
特に、ユーザ演算プログラム2010が大量のメモリ1030の領域を使用する場合(例えば、科学技術計算プログラム等)等、より効果的にメモリ1030が消費する電力を低減できる。
1000…制御用計算機
1001…演算用計算機
1010…CPU
1020…メモリコントローラ
1030…メモリ
1031…メモリランク
1070…チャネル
1090…システムROM
1100…ビデオアダプタ
1110…ネットワークインタフェース
1120…二次記憶装置インタフェース
1130…入力装置インタフェース
1140…高速入出力装置
1150…システムバス
1160…二次記憶装置
1170…キーボード
1180…マウス
1190…ネットワーク
1200…ディスプレイ
1210…ネットワーク
1220…計算機
1001…演算用計算機
1010…CPU
1020…メモリコントローラ
1030…メモリ
1031…メモリランク
1070…チャネル
1090…システムROM
1100…ビデオアダプタ
1110…ネットワークインタフェース
1120…二次記憶装置インタフェース
1130…入力装置インタフェース
1140…高速入出力装置
1150…システムバス
1160…二次記憶装置
1170…キーボード
1180…マウス
1190…ネットワーク
1200…ディスプレイ
1210…ネットワーク
1220…計算機
Claims (20)
- 制御用ノードと演算用ノードとを備える計算機システムであって、
前記制御用ノードは、演算処理をする第一プロセッサと、前記第一プロセッサに接続され、ユーザプログラムを記憶する記憶部と、他のノードに接続される第一インタフェースと、を備え、前記演算用ノードに実行させるユーザ演算プログラムを送信し、
前記演算用ノードは、演算処理をする第二プロセッサと、前記第二プロセッサに接続されるメモリと、前記第二プロセッサに接続され、前記制御用ノードに接続される第二インタフェースと、前記メモリに接続されるメモリコントローラと、を備え、前記制御用ノードによって送信ユーザ演算プログラムを実行し、
前記メモリの記憶領域は、前記メモリコントローラが独立に電力を制御可能な単位であるメモリランクに区分され、
前記メモリに供給される電力の状態は、前記メモリランク毎に、前記プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、アクセスに遅延が生じる不活性状態とのいずれかに制御され、
前記第一プロセッサは、前記ユーザプログラムを実行するために必要なメモリの容量を含むメッセージを送信し、
前記第二プロセッサは、
前記第一プロセッサから送信されたメッセージを受信すると、
前記ユーザプログラムが前記メモリにロードされる前に、前記メモリコントローラによって、前記必要なメモリの容量に対応する前記メモリランクを、前記活性状態にすることを特徴とする計算機システム。 - 前記制御用ノードと前記演算用ノードとは同一の筐体に収納され、
前記第一インタフェースと前記第二インタフェースとが接続されることによって、前記制御用ノードと前記演算用ノードとが接続されることを特徴する請求項1に記載の計算機システム。 - 前記制御用ノードと前記演算用ノードとは異なる筐体に収納され、
前記第一インタフェースと前記第二インタフェースとがネットワークを介して接続されることによって、前記制御用ノードと前記演算用ノードとが接続されることを特徴とする請求項1に記載の計算機システム。 - 前記記憶部は、前記制御用ノードに備わるメモリの容量を示す情報を記憶し、
前記第一プロセッサは、前記メモリの容量を示す情報を参照し、前記メッセージの送信先を決定することを特徴とする請求項1に記載の計算機システム。 - 前記メッセージは、前記ユーザプログラムを実行するために必要と推定されるメモリの容量の推定値、前記推定値を調整するための調整値、前記メモリの全てのメモリランクを前記活性状態にするか否かを示す情報、及び前記メモリが前記活性状態にされた後に前記ユーザプログラムが実行されるか否かを示す情報を含むことを特徴とする請求項1に記載の計算機システム。
- 前記第二プロセッサは、全ての前記メモリランクを前記活性状態にする指令が含まれているメッセージを受信すると、前記ユーザプログラムが前記メモリにロードされる前に、前記メモリコントローラによって、前記全てのメモリランクを、前記活性状態にすることを特徴とする請求項1に記載の計算機システム。
- 前記第二プロセッサは、前記ユーザプログラムに割り当てられる記憶領域が、複数のメモリランクに跨がって割り当てられる断片化を抑制することを特徴とする請求項1に記載の計算機システム。
- 前記第二プロセッサは、前記ユーザプログラムの実行を終了する場合、前記メモリコントローラによって、前記ユーザプログラムによって使用されるために前記活性状態にされた前記メモリランクを、前記不活性状態にすることを特徴とする請求項1に記載の計算機システム。
- 前記記憶部は、前記ユーザプログラムを実行するために必要と推定されるメモリの容量の推定値及び前記推定値を調整するための調整値を記憶し、
前記前記第一プロセッサから送信されるメッセージは、前記推定値及び前記調整値を含み、
前記第二プロセッサは、前記ユーザプログラムの実行を終了する場合、前記ユーザプログラムによって使用されるために実際に活性状態にされた前記メモリランクの容量の値と前記受信したメッセージに含まれる推定値との差分値に基づいて、前記記憶部に記憶される前記調整値を更新することを特徴とする請求項1に記載の計算機システム。 - 前記プロセッサは、一つ以上の前記メモリランクをまとめた電力ランクゾーン単位で、前記メモリを管理し、
前記記憶部は、優先して前記活性状態にされるメモリランクが属する電力ランクゾーンの数、優先して前記活性状態にされるメモリランクが属する電力ランクゾーンの優先順位、及び優先して前記活性状態にされるメモリランクが属する電力ランクゾーンのポリシを記憶することを特徴とする請求項1に記載の計算機システム。 - 前記プロセッサは、一つ以上の前記メモリランクをまとめた電力ランクゾーン単位で、前記メモリを管理し、
前記第一プロセッサから送信されるメッセージは、優先して前記活性状態にされるメモリランクが属する電力ランクゾーンの数、優先して前記活性状態にされるメモリランクが属する電力ランクゾーンの優先順位、及び優先して前記活性状態にされるメモリランクが属する電力ランクゾーンのポリシの少なくとも一つをさらに含み、
前記第二プロセッサは、前記メッセージを受信すると、前記ユーザプログラムが前記メモリにロードされる前に、前記受信したメッセージに含まれる前記電力ランクの数、前記電力ランクゾーンの優先順位及び前記電力ランクゾーンのポリシの少なくとも一つに基づいて、前記必要なメモリの容量に対応する前記メモリランクを、前記活性状態にすることを特徴とする請求項1に記載の計算機システム。 - 演算処理をするプロセッサと、前記プロセッサに接続される記憶領域であるメモリと、制御用ノードに接続されるインタフェースと、前記メモリに接続されるメモリコントローラと、を備え、前記制御用ノードによって送信されたユーザプログラムを実行する演算用ノードにおいて、
前記メモリの記憶領域は、前記メモリコントローラが独立に電力を制御可能な単位であるメモリランクに区分され、
前記メモリに供給される電力の状態は、前記メモリランク毎に、前記プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、アクセスに遅延が生じる不活性状態とのいずれかに制御され、
前記プロセッサは、前記ユーザプログラムを実行するために必要なメモリの容量を含むメッセージを受信すると、前記ユーザプログラムが前記メモリにロードされる前に、前記メモリコントローラによって、前記必要なメモリの容量に対応する前記メモリランクを、前記活性状態にすることを特徴とする演算用ノード。 - 前記プロセッサは、全ての前記メモリランクを前記活性状態にする指令が含まれているメッセージを受信すると、前記ユーザプログラムが前記メモリにロードされる前に、前記メモリコントローラによって、前記全てのメモリランクを、前記活性状態にすることを特徴とする請求項12に記載の演算用ノード。
- 前記プロセッサは、前記ユーザプログラムに割り当てられる記憶領域が、複数のメモリランクに跨がって割り当てられる断片化を抑制することを特徴とする請求項12に記載の演算用ノード。
- 前記プロセッサは、前記ユーザプログラムの実行を終了する場合、前記メモリコントローラによって、前記ユーザプログラムによって使用されるために活性状態にされた前記メモリランクを、前記不活性状態にすることを特徴とする請求項12に記載の演算用ノード。
- 前記制御用ノードに備わる記憶部は、前記ユーザプログラムを実行するために必要と推定されるメモリの容量の推定値及び前記推定値を調整するための調整値を記憶し、
前記プロセッサは、前記推定値及び前記調整値を含むメッセージを受信すると、前記ユーザプログラムの実行を終了する場合、前記ユーザプログラムによって使用されるために実際に活性状態にされた前記メモリランクの容量の値と前記受信したメッセージに含まれる推定値との差分値に基づいて、前記記憶部に記憶される前記調整値を更新することを特徴とする請求項12に記載の演算用ノード。 - 前記プロセッサは、一つ以上の前記メモリランクをまとめた電力ランクゾーン単位で、前記メモリを管理し、
前記プロセッサが受信するメッセージは、優先して前記活性状態にされるメモリランクが属する電力ランクゾーンの数、優先して前記活性状態にされるメモリランクが属する電力ランクゾーンの優先順位、及び優先して前記活性状態にされるメモリランクが属する電力ランクゾーンのポリシの少なくとも一つをさらに含み、
前記プロセッサは、前記メッセージを受信すると、前記ユーザプログラムが前記メモリにロードされる前に、前記受信したメッセージに含まれる前記電力ランクの数、前記電力ランクゾーンの優先順位及び前記電力ランクゾーンのポリシの少なくとも一つに基づいて、前記必要なメモリの容量に対応する前記メモリランクを、前記活性状態にすることを特徴とする請求項12に記載の演算用ノード。 - 制御用ノードによって送信されたユーザプログラムを実行する演算用ノードにおいて実行されるプログラムであって、
前記演算用ノードは、演算処理をするプロセッサと、前記プロセッサに接続される記憶領域であるメモリと、前記制御用ノードに接続されるインタフェースと、前記メモリに接続されるメモリコントローラと、を備え、
前記メモリの記憶領域は、前記メモリコントローラが独立に電力を制御可能な単位であるメモリランクに区分され、
前記プログラムは、
前記メモリに供給される電力の状態は、前記メモリランク毎に、前記プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、アクセスに遅延が生じる不活性状態とのいずれかに制御させ、
前記ユーザプログラムを実行するために必要なメモリの容量を含むメッセージを受信すると、前記ユーザプログラムが前記メモリにロードされる前に、前記メモリコントローラによって、前記必要なメモリの容量に対応する前記メモリランクを、前記活性状態にさせることを特徴とするプログラム。 - 前記プログラムは、前記ユーザプログラムを実行するために必要と推定されるメモリの容量の推定値及び前記推定値を調整するための調整値を含むメッセージを受信すると、前記ユーザプログラムの実行を終了する場合、前記ユーザプログラムによって使用されるために実際に活性状態にされた前記メモリランクの容量の値と前記受信したメッセージに含まれる推定値との差分値に基づいて、前記記憶部に記憶される前記調整値を更新させることを特徴とする請求項18に記載のプログラム。
- 前記メッセージは、優先して前記活性状態にされるメモリランクが属する電力ランクゾーンの数、優先して前記活性状態にされるメモリランクが属する電力ランクゾーンの優先順位、及び優先して前記活性状態にされるメモリランクが属する電力ランクゾーンのポリシの少なくとも一つをさらに含み、
前記プログラムは、
一つ以上の前記メモリランクをまとめた電力ランクゾーン単位で、前記メモリを管理させ、
前記メッセージを受信すると、前記ユーザプログラムが前記メモリにロードされる前に、前記電力ランクの数、前記電力ランクゾーンの優先順位及び前記電力ランクゾーンのポリシの少なくとも一つに基づいて、前記必要なメモリの容量に対応する前記メモリランクを、前記活性状態にさせることを特徴とする請求項18に記載のプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006267843A JP2008090395A (ja) | 2006-09-29 | 2006-09-29 | 計算機システム、演算用ノード及びプログラム |
US11/783,897 US7721052B2 (en) | 2006-09-29 | 2007-04-12 | System and method of reducing power consumption of a main memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006267843A JP2008090395A (ja) | 2006-09-29 | 2006-09-29 | 計算機システム、演算用ノード及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008090395A true JP2008090395A (ja) | 2008-04-17 |
Family
ID=39262377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006267843A Pending JP2008090395A (ja) | 2006-09-29 | 2006-09-29 | 計算機システム、演算用ノード及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7721052B2 (ja) |
JP (1) | JP2008090395A (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8272781B2 (en) * | 2006-08-01 | 2012-09-25 | Intel Corporation | Dynamic power control of a memory device thermal sensor |
US8166316B2 (en) * | 2008-06-27 | 2012-04-24 | Oracle America, Inc. | Single interface access to multiple bandwidth and power memory zones |
US8838935B2 (en) | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
US8738875B2 (en) | 2011-11-14 | 2014-05-27 | International Business Machines Corporation | Increasing memory capacity in power-constrained systems |
WO2013095456A1 (en) * | 2011-12-21 | 2013-06-27 | Intel Corporation | Power management in a discrete memory portion |
US10152450B2 (en) * | 2012-08-09 | 2018-12-11 | International Business Machines Corporation | Remote processing and memory utilization |
US9448612B2 (en) * | 2012-11-12 | 2016-09-20 | International Business Machines Corporation | Management to reduce power consumption in virtual memory provided by plurality of different types of memory devices |
KR102225525B1 (ko) * | 2014-04-08 | 2021-03-09 | 삼성전자 주식회사 | 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법 |
US20160188534A1 (en) * | 2014-12-31 | 2016-06-30 | Samsung Electronics Co., Ltd. | Computing system with parallel mechanism and method of operation thereof |
US10379748B2 (en) * | 2016-12-19 | 2019-08-13 | International Business Machines Corporation | Predictive scheduler for memory rank switching |
US10409513B2 (en) * | 2017-05-08 | 2019-09-10 | Qualcomm Incorporated | Configurable low memory modes for reduced power consumption |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4056173B2 (ja) | 1999-04-14 | 2008-03-05 | 富士通株式会社 | 半導体記憶装置および該半導体記憶装置のリフレッシュ方法 |
US6742097B2 (en) | 2001-07-30 | 2004-05-25 | Rambus Inc. | Consolidation of allocated memory to reduce power consumption |
JP2004126968A (ja) | 2002-10-03 | 2004-04-22 | Fujitsu Ltd | 並列計算機のジョブスケジューリング装置 |
US6961821B2 (en) * | 2002-10-16 | 2005-11-01 | International Business Machines Corporation | Reconfigurable cache controller for nonuniform memory access computer systems |
US7340678B2 (en) | 2004-02-12 | 2008-03-04 | Fuji Xerox Co., Ltd. | Systems and methods for creating an interactive 3D visualization of indexed media |
US20080126690A1 (en) * | 2006-02-09 | 2008-05-29 | Rajan Suresh N | Memory module with memory stack |
US20070006000A1 (en) * | 2005-06-30 | 2007-01-04 | Sandeep Jain | Using fine-grained power management of physical system memory to improve system sleep |
-
2006
- 2006-09-29 JP JP2006267843A patent/JP2008090395A/ja active Pending
-
2007
- 2007-04-12 US US11/783,897 patent/US7721052B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7721052B2 (en) | 2010-05-18 |
US20080082779A1 (en) | 2008-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008090395A (ja) | 計算機システム、演算用ノード及びプログラム | |
JP2007272573A (ja) | 低消費電力化メモリ管理方法及びメモリ管理プログラム | |
US6986069B2 (en) | Methods and apparatus for static and dynamic power management of computer systems | |
CN102893266B (zh) | 存储器控制器飞速映射 | |
US7882319B2 (en) | Method and system for memory management | |
JP4982971B2 (ja) | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム | |
US9619287B2 (en) | Methods and system for swapping memory in a virtual machine environment | |
US9128845B2 (en) | Dynamically partition a volatile memory for a cache and a memory partition | |
US8307369B2 (en) | Power control method for virtual machine and virtual computer system | |
US20120192000A1 (en) | Method and apparatus for cost and power efficient, scalable operating system independent services | |
WO2006117950A1 (ja) | 情報処理装置における電力制御装置 | |
JP2008257572A (ja) | 論理区画に動的に資源割り当てを行うストレージシステム及びストレージシステムの論理分割方法 | |
US20130124810A1 (en) | Increasing memory capacity in power-constrained systems | |
JP2008040606A (ja) | 低消費電力メモリ管理方法及びその方法を用いた計算機 | |
BRPI0907774B1 (pt) | Programação de encadeamento ciente de energia e uso dinâmico de processadores | |
CN105103144A (zh) | 用于存储器的自适应控制的设备及方法 | |
JP2010277581A (ja) | 資源管理方法、資源管理プログラム、および、資源管理装置 | |
JP2005122640A (ja) | サーバシステム及びi/oスロット共有方法。 | |
JP2009122733A (ja) | 電力制御方法、計算機システム、及びプログラム | |
CN114063894A (zh) | 一种协程执行方法及装置 | |
US20190391851A1 (en) | System and method for managing memory in virtual machines | |
JP2012243096A (ja) | ゲストos管理装置、ゲストos管理方法及びゲストos管理プログラム | |
JP2019510284A (ja) | 不揮発性メモリとしての揮発性メモリの使用 | |
CN108932112B (zh) | 一种固态颗粒的数据读写方法、装置、设备及介质 | |
Weiland et al. | Exploiting the performance benefits of storage class memory for HPC and HPDA workflows |