JP2008165318A - 計算機システム - Google Patents

計算機システム Download PDF

Info

Publication number
JP2008165318A
JP2008165318A JP2006351412A JP2006351412A JP2008165318A JP 2008165318 A JP2008165318 A JP 2008165318A JP 2006351412 A JP2006351412 A JP 2006351412A JP 2006351412 A JP2006351412 A JP 2006351412A JP 2008165318 A JP2008165318 A JP 2008165318A
Authority
JP
Japan
Prior art keywords
memory
processor
computer
power
data
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
Application number
JP2006351412A
Other languages
English (en)
Inventor
Katsuhisa Ogasawara
克久 小笠原
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006351412A priority Critical patent/JP2008165318A/ja
Publication of JP2008165318A publication Critical patent/JP2008165318A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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

  • Memory System (AREA)

Abstract

【課題】プロセッサからメモリにアクセスする性能に影響を与えることなく、メモリが消費する電力を大幅かつ確実に低減する計算機システムを提供する。
【解決手段】制御用ノードと演算用ノードを備える計算機システムであって、制御用ノードは記憶装置に接続され、演算用ノードは、記憶装置に対する読み書きを制御用ノードに実行させるためにユーザ演算プログラムによって発行される処理要求を、制御用ノードに送信し、読み書き処理を完了したことを検出した場合、ユーザ演算プログラムの実行を再開する前に、ユーザ演算プログラムに割り当てられているメモリランクを活性状態にすることを特徴とする。
【選択図】図2

Description

本発明は、計算機システムのメモリ管理および入出力管理方法に関し、特に、プロセスの入出力処理を考慮しつつ主記憶装置の消費電力を低減する方法に関する。
一般の計算機システムでは、計算機システムに備わるハードウェアが動作することによって、電力が消費される。ハードウェアは、例えば、処理装置(プロセッサ)、主記憶装置(メモリ)、二次記憶装置及び入出力装置等である。
計算機システムが大量に電力を消費する場合に、計算機システムには、同時に大量の熱が発生する。このため、計算機システムで発生した熱を除去するための冷却設備が設置されていなくてはならない。
計算機システムが消費する電力のコストの他に、冷却設備に関するコストもかかる。このため、計算機システムが消費する電力と計算機システムの性能と考慮した計算機システムの設計が求められている。なお、ハードウェアが動作することによって消費される電力を低減させることは、バッテリの容量を節約する観点からも、組み込み機器等においても重要である。
計算機システムに備わる主記憶装置は、一般に電力を大量に消費するハードウェアのひとつである。例えば、大規模計算機システム及び超並列計算機システム等の計算機システムは、膨大な容量の主記憶装置を備える。よって、計算機システムに備わる全ハードウェアが消費する電力のうち主記憶装置が消費する電力の割合が大きくなる。
また、今日では、計算機サーバ、パーソナルコンピュータ及び組み込み機器に備わる主記憶装置の容量も増加しつつある。
今日、プロセッサ及び周辺機器が消費する電力を低減させる制御は盛んである。しかし、主記憶装置が消費する電力を低減させる制御は、盛んではない。今後、主記憶装置が消費する電力も低減させなくてはならない。
一般に、主記憶装置は、プロセッサが処理を実行するための命令及びデータ等を記憶する。具体的には、プロセッサは、二次記憶装置に記憶されるオペレーティングシステム(以下、OSという)及びアプリケーションソフトウェア等を主記憶装置にロードする。
そして、プロセッサは、主記憶装置にロードされたOS及びアプリケーションソフトウェア等に含まれる命令を取り出し、処理を実行する。このとき、プロセッサが計算処理を実行する際に必要なデータ、計算処理によるデータ、計算処理の実行結果を記憶する手段としても主記憶装置は利用される。
プロセッサによって処理が実行されるために必要な命令及びデータ等は、二次記憶装置から主記憶装置に必ずしもロードされなくともよい。例えば、計算機システムに備わる複数の計算機がネットワークによって、相互に接続されている場合、プロセッサによって処理が実行されるために必要な命令及びデータ等は、ネットワークを介して、主記憶装置に記憶される。また、計算機システムに備わる計算機が高速入出力装置によって相互に接続される場合、プロセッサによって処理が実行されるために必要な命令及びデータ等は、高速入出力装置を介して、主記憶装置に記憶される。
計算機システムにおける主記憶装置は、キャパシタに電荷を蓄えるか否かによってデータを記録する方式が多く利用される。具体的には、キャパシタが電荷を蓄えている場合には、“1”を記憶し、キャパシタが電荷を蓄えていない場合には、“0”を記憶する。そして、主記憶装置に記憶されたデータを維持するための操作(リフレッシュ)がされなければならない。
また、主記憶装置は、通常、複数の電力制御モードを備え、メモリコントローラ等を介して別モードに遷移することができる。例えば、通常モードから低電力モードに遷移することができる。低電力モードでは、通常モード時と比べて、消費電力が低くなるが、プロセッサからメモリのアクセス速度性能が低下する。
計算機システムが消費する電力を低減させる技術としては、メモリコントローラが論理/物理アドレス変換テーブルを含み、メモリコントローラは、使用されているメモリの領域を任意メモリデバイスに集約するように変換テーブルを操作する。又は、オペレーティングシステムは、未使用メモリリストをメモリデバイスごとに管理し、未使用のメモリが少ない(メモリの使用度が高い)メモリデバイスからメモリを割り当てる。これによって、メモリコントローラは、未使用のメモリデバイスの電力モードを低電力モードに切り替える(例えば、特許文献1参照)。
また、データが記憶されたメモリデバイスのみが周期的にリフレッシュされ、メモリデバイスが消費する電力を低減させる技術が知られている(例えば、特許文献2参照)。
また、並列計算機システムにおいて、当該計算機システムに発生する熱に関する問題を解消する観点及び省エネルギ化の観点から、温度センサによって検出された温度情報に基づいて、温度分布情報が作成される。そして、作成された温度分布情報に基づいて並列計算機システムに備わる各計算機へのジョブスケジューリングを実施する方法が知られている(例えば、特許文献3参照)。
一方、プロセッサが消費する電力を低減させる技術において、演算回路を操作する命令が先行して検出され、その操作対象となる演算回路が先行して活性化される。そして、演算回路によって演算が終了した後、活性化された演算回路が不活性化される技術が知られている(例えば、特許文献4参照)。
米国特許6954837号明細書 米国特許6215714号明細書 特開2004−126968号公報 特開2005−235204号公報
従来技術は、計算機に備わるプロセッサが消費する電力を低減させる技術がほとんどである。一方、計算機に備わる主記憶装置が消費する電力に関して、今日までほとんど制御されていなかった。
例えば、特許文献4に記載された技術は、プロセッサに備わる演算回路が消費する電力を低減させる技術である。
特許文献1及び特許文献2に記載された技術は、主記憶装置が消費する電力を低減化する制御をハードウェアレベルで実行する技術である。一般に、物理メモリ資源は、基本システムソフトウェア(オペレーティングシステム等)によって、直接管理される。さらに、基本システムソフトウェアは、物理メモリ資源を利用するプロセスおよび入出力処理を制御及び管理する。
よって、実用上、基本システムソフトウェアと連携なしに、ハードウェアレベルのみで、メモリが消費する電力を有効かつ効率的に低減させることは困難である。
複数の計算機が相互にネットワーク又は高速入出力装置によって接続され、複数の計算機が並列に処理を実行する並列計算機システムがある。この並列計算機システムでは、基本システムソフトウェアは、プログラム、計算ジョブ若しくはプロセスを実行させたい計算機に割り当てる。さらに、基本システムソフトウェアは、入出力処理についても同様に実行させたい計算機に割り当てる。よって、並列計算機システムの場合では、主記憶装置が消費する電力を低減させるために、基本システムソフトウェアとの連携が不可欠となる。
また、メモリによって消費される電力が低い電力モードから、メモリに書き込み/読み込み可能な通常の電力モード状態へ切り替える場合に、プロセッサからメモリへのアクセスに遅延(レイテンシ)が発生する。このため、プロセッサからメモリへのアクセス性能が低下してしまう課題がある。
特許文献1に記載された技術では、使用される頻度の高いメモリデバイスから実行されるプログラムに割り当てられ、未使用のメモリデバイスが消費する電力は低減できる。
また、特許文献1に記載された技術は、単一の計算機ノードから構成される計算機システムを対象とする技術である。よって、特許文献1に記載された技術は、ネットワーク接続又は高速入出力装置で相互接続された複数の計算機ノードを備える並列計算機システムに対応できない。
特に、特許文献1に記載された技術では、複数の計算機ノード間で、プログラム、計算ジョブ又はプロセス等の実行及び入出力処理等を考慮した主記憶装置の低電力制御方式ではない。また、特許文献1に記載された技術では、メモリの電力モードが切り替えられることによって生じるレイテンシが隠蔽できない。
一方、特許文献2に記載された技術では、使用されているメモリデバイスに記憶されたデータを維持するために、そのメモリデバイスの電力モードを消費される電量が少ないリフレッシュモードに切り替える。これによって、メモリデバイスが消費する電力が低減できる。
なお、プログラム、計算ジョブ又はプロセス等の実行及び入出力処理等を考慮した主記憶装置の低電力制御方式ではなく、メモリデバイスの電力モードを低電力モードに切り替えることができない場合が多い。よって、主記憶装置が消費する電力を低減させる確実性が低い。
また、特許文献2に記載された技術では、複数の計算機ノード間で、プログラム、計算ジョブ又はプロセス等の実行及び入出力処理等を考慮した主記憶装置の低電力制御方式ではない。また、特許文献2に記載された技術では、メモリの電力モードが切り替えられることによって生じるレイテンシが隠蔽できない。
特許文献3に記載されている技術では、並列計算機システムの温度の分布が均一になるように、計算ジョブをスケジューリングする。これによって、熱密度が増大することによって発生するシステム障害が回避できる。しかし、並列計算機システムに備わるハードウェア全体(主記憶装置を含む)が消費する電力を低減する技術ではない。
本発明の代表的な一形態によると、 制御用ノードと演算用ノードとを備える計算機システムであって、
前記制御用ノードは、第一プロセッサと、前記第一プロセッサに接続され、ユーザ演算プログラムを記憶する記憶部と、他のノードに接続される第一インタフェースと、を備え、前記演算用ノードに実行させるユーザ演算プログラムを前記演算用ノードに送信し、
前記制御用ノードは、データを記憶する記憶装置に接続され、
前記演算用ノードは、前記制御用ノードによって送信されたユーザ演算プログラムを実行する第二プロセッサと、前記第二プロセッサに接続されるメモリと、前記第二プロセッサに接続され、前記制御用ノードに接続される第二インタフェースと、前記メモリに接続されるメモリコントローラと、を備え、
前記メモリの記憶領域は、前記メモリコントローラが独立に電力を制御可能な単位であるメモリランクに区分され、
前記メモリに供給される電力の状態は、前記メモリランク毎に、前記第二プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、前記活性状態よりもアクセスに遅延が生じる不活性状態とのいずれかに制御され、
前記第二プロセッサは、
前記記憶装置に対する読み書きを前記第一プロセッサに実行させるために前記ユーザ演算プログラムによって発行される処理要求を、前記第二インタフェースを介して前記第一プロセッサに送信し、
前記処理要求の送信後に、前記ユーザ演算プログラムの実行を中断し、
前記第一プロセッサは、
前記処理要求を受信した場合、前記受信した処理要求に基づいて、前記記憶装置に対して読み書き処理を実行し、
前記第二プロセッサは、
前記第一プロセッサが読み書き処理を完了したことを検出した場合、前記ユーザ演算プログラムの実行を再開する前に、前記ユーザ演算プログラムに割り当てられているメモリランクを活性状態にすることを特徴とする。
本発明の一形態によると、プロセッサからメモリにアクセスする性能に影響を与えることなく、メモリが消費する電力を大幅かつ確実に低減できる。
(第一の実施形態)
本発明の第1の実施の形態を図1〜図12を用いて説明する。
図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に実行させる機能、演算用計算機1001によって実行されるリモートプロセスが発行するInput/Output処理(以下、IO処理という)を演算用計算機1001に代わって実行する機能、及びリモートプロセスを管理する機能を、少なくとも備える。演算用計算機ノードソフトウェア2100は、制御用計算機ノードソフトウェア2000によって割り当てられたリモートプロセスを実行する機能、リモートプロセスが発行するIO処理を制御用計算機1000にリモートIO処理として実行させる機能、及び演算用計算機1001に備わるメモリ1030の電力を制御する機能を少なくとも備える。
ここで、演算用計算機1001によってリモートプロセスとして実行されるユーザ演算プログラム2010が発行するIO処理について説明する。
IO処理は、二次記憶装置等1160の周辺装置に記憶されたデータを読み出す処理又は二次記憶装置1160にデータを書き込む処理である。
演算用計算機1001は、演算用計算機1001によってリモートプロセスとして実行されるユーザ演算プログラム2010が発行したIO処理を制御用計算機1000にそのIO処理を実行させる場合がある。このユーザ演算プログラム2010が発行するIO処理を、制御用計算機1000が実行する処理を、リモートIO処理という。
この場合、演算用計算機1001は、IO処理要求を制御用計算機1000に送信する。そして、制御用計算機1000は、IO処理要求を受信すると、制御用計算機1000に備わる二次記憶装置1060に対してIO処理を実行する。そして、IO処理要求にデータの読み出し要求が含まれる場合、制御用計算機1000は、読み出したデータを演算用計算機1001に送信する。
まず、制御用計算機ノードソフトウェア2000について説明する。
制御用計算機ノードソフトウェア2000は、制御用計算機1000に備わるメモリ1030にロードされ、制御用計算機1000に備わるCPU1010によって実行される。制御用計算機ノードソフトウェア2000は、ユーザ演算プログラム2010、開発・インストールツール2020及び基本システムソフトウェア2030を含む。
ユーザ演算プログラム2010は、計算機システムを利用する利用者のアプリケーションプログラムである。開発・インストールツール2020は、ユーザ演算プログラム2010の開発に利用されるプログラムである。また、開発・インストールツール2020は、ユーザ演算プログラム2010のインストールに利用されるプログラムである。例えば、開発・インストールツール2020は、コンパイラ、リンカ及びファイルインストールプログラムである。
基本システムソフトウェア2030は、制御用計算機1000に備わるハードウェアを管理する。また、基本システムソフトウェア2030は、利用者にソフトウェアインタフェースを提供する。例えば、基本システムソフトウェア2030は、オペレーティングシステム及びハイパーバイザである。
なお、制御用計算機ノードソフトウェア2000は、制御用計算機1000に接続される二次記憶装置1160に格納される。なお、二次記憶装置1160に障害が発生した場合を考慮し、制御用計算機ノードソフトウェア2000は、複数台の二次記憶装置1160に格納されてもよい。また、制御用計算機ノードソフトウェア2000は、制御用計算機1000にネットワーク1210を介して接続される計算機1220によって、配布されてもよい。
また、制御用計算機ノードソフトウェア2000は、演算用計算機1001又は他の制御用計算機1000に記憶されていてもよい。この場合、制御用計算機ノードソフトウェア2000を記憶する演算用計算機1001又は他の制御用計算機1000は、起動されると、ネットワーク1190又は高速入出力装置1140を介して、制御用計算機ノードソフトウェア2000を制御用計算機1000に配布する。
基本システムソフトウェア2030は、リモートプロセス実行管理プログラム2031、IO管理プログラム2032及びリモートプロセス管理インタフェース2033を含む。
リモートプロセス実行管理プログラム2031は、演算用計算機1001によって実行されるユーザ演算プログラム2010をリモートプロセスとして、演算用計算機1001に割り当てる。
IO管理プログラム2032は、演算用計算機1001によってリモートプロセスとして実行されるユーザ演算プログラム2010が発行するIO処理を、演算用計算機1001に代わって実行する。なお、IO管理プログラム2032は、図11で詳細を説明する。
リモートプロセス管理インタフェース2033は、演算用計算機1001によって実行されるリモートプロセスの管理に関するパラメータ及び演算用計算機1001によって実行されるリモートプロセスの管理に関する設定の変更を可能にするインタフェースとして機能するプログラムである。
なお、ユーザ演算プログラム2010は、制御用計算機1000によって起動される。そして、リモートプロセス実行管理プログラム2031によって割り当てられた演算用計算機1001は、ユーザ演算プログラム2010の処理をリモートプロセスとして実行する。
次に、演算用計算機ノードソフトウェア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からのアクセスが遅延する時間が登録される。なお、メモリ電力モードテーブル2115は、図5で詳細に説明する。
基本システムソフトウェア2120は、メモリ管理初期化プログラム2121、メモリ管理プログラム2122、メモリ電力管理プログラム2123、リモートプロセス実行管理プログラム2124、IO管理プログラム2125、メモリ管理制御インタフェース2126、メモリゾーン‐電力ランクゾーン状態管理テーブル2127及びリモートIO管理テーブル2128を含む。
メモリ管理初期化プログラム2121は、演算用計算機1001に備わるメモリ1030の制御及び管理に必要なデータ等を初期化する。また、メモリ管理初期化プログラム2121は、演算用計算機1001に備わるメモリ1030に関するインタフェースをユーザに提供する準備をする。なお、メモリ管理初期化プログラム2121の処理は、図8で詳細に説明する。
メモリ管理プログラム2122は、演算用計算機1001に備わるメモリ1030の制御及び管理を実行する。また、メモリ管理プログラム2122は、演算用計算機1001に備わるメモリ1030に関するインタフェースをユーザに提供する。
メモリ電力管理プログラム2123は、メモリランク1031の電力モードを、メモリコントローラ1020を介して制御する。リモートプロセス実行管理プログラム2124は、制御用計算機1000によって割り当てられたユーザ演算プログラム2010を実行する。また、リモートプロセス実行管理プログラム2124は、リモートプロセスを管理する。
IO管理プログラム2125は、演算用計算機1001によってリモートプロセスとして実行されるユーザ演算プログラム2010が発行するIO処理を管理する。具体的には、IO管理プログラム2125は、演算用計算機1001によってリモートプロセスとして実行されるユーザ演算プログラム2010が発行するIO処理を、制御用計算機1000に実行させる。
なお、IO管理プログラム2125は、リモートプロセスが発行する全てのIO処理を制御用計算機1000に実行させなくてもよい。IO管理プログラム2125は、リモートプロセスが発行するIO処理の種類によって、リモートプロセスを実行している演算用計算機1001又は他の演算用計算機1001に、IO処理を実行させてもよい。なお、IO管理プログラム2125は、図9、図10及び図12で詳細に説明する。
メモリ管理制御インタフェース2126は、メモリ1030の管理に関するパラメータ及び設定の変更を可能にするインタフェースとして機能するプログラムである。
メモリゾーン‐電力ランクゾーン状態管理テーブル2127には、連続するメモリアドレスごとのメモリゾーン、各連続するメモリアドレスの範囲に含まれる電力ランクゾーン、各電力ランクゾーンによって消費される電力、及び各電力ランクゾーンによって使用される状態を管理する。なお、メモリゾーン‐電力ランクゾーン状態管理テーブル2127については、図6で詳細を説明する。
リモートIO管理テーブル2128は、制御用計算機1000に実行させるIO処理の種類と、制御用計算機1000にIO処理を実行させた場合に、演算用計算機1001に備わるメモリ1030が消費する電力を制御する方法に関するパラメータとが登録される。なお、リモートIO管理テーブル2128は、図7で詳細に説明する。
なお、基本システムソフトウェア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実施形態のメモリゾーン‐電力ランクゾーン状態管理テーブル2127の構成を示す図である。
メモリゾーン‐電力ランクゾーン状態管理テーブル2127は、基本システムソフトウェア2120によって管理される。
メモリゾーン‐電力ランクゾーン状態管理テーブル2127は、メモリゾーン6000、アドレス範囲6010、電力ランクゾーン6020、電力ランクゾーンサイズ6030、電力状態6040及び未使用メモリページフレーム数6050を含む。
メモリゾーン6000には、メモリアドレスの範囲に応じて基本システムソフトウェア2120によって管理されるメモリゾーンの識別子が登録される。アドレス範囲6010には、各メモリゾーン6000に含まれるメモリアドレスが登録される。電力ランクゾーン6020には、アドレス範囲6010に含まれる電力ランクゾーンの識別子が登録される。電力ランクゾーンサイズ6030には、各電力ランクゾーン6020に登録された識別子の電力ランクゾーンの容量が登録される。
電力状態6040には、各電力ランクゾーン6020に登録された識別子の電力ランクゾーンに属するメモリランク1031の電力モードの識別子が登録される。未使用メモリページフレーム数6050には、各電力ランクゾーン6020に登録された識別子の電力ランクゾーンに属するメモリランク1031に備わるメモリページフレームのうち、演算用計算機1001によって実行されるソフトウェアによって使用されていない未使用メモリページフレームの数の値が登録される。
例えば、図6に示すメモリゾーン‐電力ランクゾーン状態管理テーブル2127は、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に登録された識別子が登録される。
メモリゾーン‐電力ランクゾーン状態管理テーブル2127に登録される内容は、演算用計算機1001が起動された時に、メモリ管理初期化プログラム2121によって設定される。また、演算用計算機1001が動作中、メモリゾーン‐電力ランクゾーン状態管理テーブル2127に登録された内容は、メモリ管理プログラム2122によって更新される。
図7は、本発明の第1実施形態のリモートIO管理テーブル2128の構成を示す図である。
リモートIO管理テーブル2128は、基本システムソフトウェア2120によって管理される。
リモートIO管理テーブル2128は、リモートIOファンクション7000、IO実行時条件7010、不活性化フラグ7020、IOサイズ閾値7030、閾値確認数7040及びエントリ更新フラグ7050を含む。
リモートIOファンクション7000には、演算用計算機1001によってリモートプロセスとして実行されるユーザ演算プログラム2010が発行するIO処理のうち、制御用計算機1000に実行させるリモートIO処理の識別子が登録される。
具体的には、リモートIOファンクション7000には、演算用計算機1001によってリモートプロセスとして実行されるユーザ演算プログラム2010が発行するIO処理のうち、リモートIO処理のシンボル又は関数名が登録される。なお、リモートIO処理のシンボル又は関数名は、IO処理の種類を示す一意な識別子である。
例えば、リモートIOファンクション7000に登録されるリモートIO処理のシンボルとしては、システムコールファンクション、VFS(Virtual File System)レイヤ・ファンクション及びデバイス・ドライバレイヤIOファンクション等がある。
システムコールファンクションには、Readシステムコールファンクション及びWriteシステムコールファンクション等がある。
VFSレイヤ・ファンクションには、メモリマップド・ファイルIO機能において、ページフォールト処理が実行されることによって、ファイルを読み込むファンクションがある。
さらに、VFSレイヤ・ファンクションには、メモリ1030に記憶されるファイルページキャッシュを二次記憶装置1160等に書き込むファンクションがある。
IO実行時条件7010には、リモートIOファンクション7000に登録された識別子によって識別されるリモートIO処理が実行される際の条件が登録される。
例えば、リモートIOファンクション7000にWriteシステムコールが登録された場合、IO実行時条件7010には、Syncモードのファイルにのみデータを書き込むという条件、又はRawモードのファイルにのみデータを書き込むという条件が登録される。
さらに、IO実行時条件7010には、制御用計算機1000の二次記憶装置1160から読み出されるIOデータ(受信IOデータ)の数又は制御用計算機1000の二次記憶装置1160に書き込まれるIOデータ(送信IOデータ)の数が登録される。
不活性化フラグ7020には、制御用計算機1000によってIO処理が実行されている間に、IO処理を発行したユーザ演算プログラム2010を実行している演算用計算機1001が、その演算用計算機1001のメモリ1030の電力状態を不活性状態に切り替えるか否かを示す値が登録される。
具体的には、不活性化フラグ7020には、ON又はOFFが登録される。不活性化フラグ7020にONが登録された場合、メモリ1030の電力状態を不活性状態にする処理が実行される。一方、不活性化フラグ7020にOFFが登録された場合、メモリ1030の電力状態を不活性状態にする処理は実行されない。
不活性化フラグ7020には、通常、ONが登録される。不活性化フラグ7020にOFFが登録される場合の例としては、例えば、演算用計算機1001がリモートプロセスのみを実行するように設定された場合、及びIOデータの容量が小さい場合等がある。
なお、演算用計算機1001がリモートプロセスのみを実行するように設定された場合とは、換言すると、演算用計算機1001がリモートプロセス以外の処理を実行しないように設定された場合である。例えば、演算用計算機1001がOSを実行することによって生じる外乱が、リモートプロセスとして実行されるユーザ演算プログラム2010の処理に影響しないようにするために、演算用計算機1001がリモートプロセス以外の処理を実行しないように設定される。なお、リモートプロセス以外の処理には、例えば、メモリ電力管理プログラム2123の処理等がある。
IOサイズ閾値7030には、各IOデータの容量の閾値が登録される。具体的には、IOサイズ閾値7030には、該当するIO処理で読み書きされる各IOデータを要素として、各要素に対するIOデータの容量の閾値が登録される。閾値確認数7040には、IOサイズ閾値7030に登録された閾値よりも大きい容量のIOデータの数の閾値が登録される。
IOサイズ閾値7030に登録された閾値よりも大きい容量のIOデータの数が、閾値確認数7040に登録された閾値以上の場合、演算用計算機1001は、演算用計算機1001のメモリ1030の電力状態が不活性状態に切り替えられる。
一方、IOサイズ閾値7030に登録された閾値よりも大きい容量のIOデータの数が、閾値確認数7040に登録された閾値よりも小さい場合、演算用計算機1001は、演算用計算機1001のメモリ1030の電力状態が不活性状態に切り替えない。
したがって、制御用計算機1000が、容量がある程度大きいIOデータに対して、IO処理を実行している場合に、演算用計算機1001のメモリ1030の電力状態が不活性状態に切り替えられる。
すなわち、IO処理が実行されている時間が短いIO処理については、演算用計算機1001に備わるメモリ1030の電力状態が不活性状態に切り替えられない。よって、IO処理が実行された後、演算用計算機1001がリモートプロセスとしてユーザ演算プログラム2010を再度実行する場合に、不活性状態に切り替えられたメモリ1030が活性状態に切り替えられていないため、ユーザ演算プログラム2010が実行する処理に遅延が生じる事態を予防できる。
IOサイズ閾値7030には、通常、予め設定された値が登録される。なお、制御用計算機1000がIO処理を実行した場合、IO処理が終了した後、IOサイズ閾値7030に登録された値が更新されてもよい。
具体的には、IOサイズ閾値7030には、制御用計算機1000がIO処理を実行するためにかかった時間が、演算用計算機1001のメモリ1030が不活性状態から活性状態に切り替えられるためにかかった時間よりも十分に大きくなるようなIOデータの容量の閾値に更新される。
なお、IOサイズ閾値7030の要素数は、IOファンクション7000に登録された識別子よって識別されるリモートIO処理の対象となるIOデータの数と対応する。IOサイズ閾値7030の要素数は、通常、IOファンクション7000に登録された識別子によって識別されるリモートIO処理の対象となるIOデータのバッファの数と一致する。また、IOサイズ閾値7030の要素の順は、例えば、左から順に、IOファンクション7000に登録された識別子によって識別されるリモートIO処理の引数のうちIOデータを扱う引数順としてよい。
エントリ更新フラグ7050には、制御用計算機1000によってIO処理が実行された後、リモートIO管理テーブル2128に含まれるエントリ(7061〜7062,7071及び7081〜7082)が更新されるか否かを示す値が登録される。
エントリ更新フラグ7050には、通常、ONが登録される。なお、エントリ更新フラグ7050に登録された値は、変更できる。
リモートIOファンクションFiのIO実行時条件7010は、Oi,0〜Ootherがある。例えば、
リモートプロセスが発行したIO処理のシンボルがFiであって、そのIO処理の実行時条件がIO実行時条件7010に登録されたOi,0の実行時条件と一致する場合、当該エントリ(7061)の不活性化フラグ7020にはONが登録され、IOサイズ閾値7030にはSi,0,0〜Si,0,pが登録され
、閾値確認数7040にはCi,0が登録され、エントリ更新フラグ7050にはONが登録されている
また、IO実行時条件7010に登録されたOOtherの実行時条件は、リモートプロセスが発行したIO処理の実行時条件がIO実行時条件7010に登録されたOi,0の実行時条件と一致しない場合を示す実行時条件である。
IO実行時条件7010にOallが登録されている場合、IO処理の実行時条件がどんな条件であっても、該当するエントリの設定が適用される。
リモートIO管理テーブル2128の各エントリには、演算用計算機1001が起動されると、リモートプロセス実行管理プログラム2041によって、デフォルト値が予め登録される。
なお、ユーザが、制御用計算機1000に備わる入力装置(キーボード1170又はマウス1180)からリモートプロセス管理インタフェース2033を介して、リモートIO管理テーブル2128に登録される内容を作成又は変更してもよい。同じく、ユーザが、制御用計算機1000に備わる入力装置(キーボード1170又はマウス1180)からリモートプロセス管理インタフェース2033を介して、リモートIO管理テーブル2128に新たなエントリを追加してもよい。
また、ユーザが、遠隔地に配置された計算機1220に備わる入力装置からネットワーク1210を介して、リモートIO管理テーブル2128を作成又は変更してもよい。同じく、ユーザが、遠隔地に配置された計算機1220に備わる入力装置からネットワーク1210を介して、リモートIO管理テーブル2128に新たなエントリを追加してもよい。
また、リモートIO管理テーブル2128が記憶される演算用計算機1001に、ネットワーク1190又は高速入出力装置1140を介して接続される制御用計算機1000によって実行される基本システムソフトウェア2030が、リモートプロセス管理インタフェース2033を介して、リモートIO管理テーブル2128を作成又は変更してもよい。同じく、リモートIO管理テーブル2128が記憶される演算用計算機1001に、ネットワーク1190又は高速入出力装置1140を介して接続される制御用計算機1000によって実行される基本システムソフトウェア2030が、リモートプロセス管理インタフェース2033を介して、リモートIO管理テーブル2128に新たなエントリを追加してもよい。
また、演算用計算機1001によって実行される基本システムソフトウェア2120が、リモートIO管理テーブル2128を作成又は変更してもよい。同じく、演算用計算機1001によって実行される基本システムソフトウェア2120が、リモートIO管理テーブル2128に新たなエントリを追加してもよい。
なお、リモートプロセスとして実行されるユーザ演算プログラム2010ごとに、リモートIO管理テーブル2128を作成してもよい。
図8は、本発明の第1実施形態のメモリ管理初期化プログラム2121のフローチャートである。
まず、メモリ管理初期化プログラム2121は、基本システムソフトウェア2120が起動されると、CPU1010によって実行される(8000)。
メモリ管理初期化プログラム2121は、メモリゾーン‐電力ランクゾーン状態管理テーブル2127に含まれるアドレス範囲6010に登録されたメモリアドレスの範囲ごとにメモリゾーン6000にメモリゾーンの識別子を登録する(8001)。
例えば、メモリゾーン6000には、メモリ1030がDMA(Direct Memory Access)(16MB)、Normal(4GB)及びHigh(4GB以上)の領域に区分されるような値が登録される。
なお、図6に示すメモリゾーン‐電力ランクゾーン状態管理テーブル2127では、Zone0がDMAに対応し、Zone1がNormalに対応し、Zone2がHighに対応する。
また、複数の演算用計算機1001がNumaシステムを構成する場合のメモリゾーン6000の構成としては、各々の演算用計算機1001ごとにメモリゾーンが区分される構成がある。
メモリ管理初期化プログラム2121は、メモリ1030の構成に関するデータ及び他のハードウェアの構成に関するデータが必要な場合には、例えば、ファームウェア2110に含まれるハードウェア構成テーブル2111及び電力ランクゾーン‐メモリランク対応管理テーブル2114を参照する。
次に、メモリ管理初期化プログラム2121は、ステップ8001の処理で設定したメモリゾーン6060〜6080について、メモリゾーン‐電力ランクゾーン状態管理テーブル2127を初期化する処理(ステップ8003〜ステップ8007の処理)を繰り返す(8002)。
メモリ管理初期化プログラム2121は、電力ランクゾーン‐メモリランク対応管理テーブル2114を参照し、メモリゾーン‐電力ランクゾーン状態管理テーブル2127に含まれる電力ランクゾーン6020の各エントリを設定する(8003)。
具体的には、メモリ管理初期化プログラム2121は、ステップ8001の処理で設定されたメモリゾーン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の容量の値をメモリゾーン‐電力ランクゾーン状態管理テーブル2127の電力ランクゾーンサイズ6030に登録する(8004)。
例えば、電力ランクゾーン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に登録する(8005)。
例えば、メモリ管理初期化プログラム2121は、メモリコントローラ1020を介して、各メモリランク1031の電力状態を取得する。そして、メモリ管理初期化プログラム2121は、取得した電力状態を電力状態6040に登録する。
また、メモリ管理初期化プログラム2121は、ハードウェア構成テーブル2111を参照し、各メモリランク1031の電力状態を電力状態6040に登録してもよい。
ステップ8005の処理の後、メモリ管理初期化プログラム2121は、各電力ランクゾーン(6061〜6062、6071〜6072、6081〜6082)に、各ソフトウェアによって使用されていないメモリページフレームの数を未使用メモリページフレーム数6050に登録する(8006)。
なお、メモリゾーン‐電力ランクゾーン状態管理テーブル2127が初期化された場合、各電力ランクゾーンの未使用メモリページフレーム数6050には、例えば、各電力ランクゾーン6020の電力ランクゾーンサイズ6030に含まれるメモリページフレーム数と、基本システムソフトウェア2120を初期化する処理及びコード/データ等によって使用される各電力ランクゾーン6020のメモリページフレーム数との差分値が登録される。
ステップ8006の処理の後、メモリ管理初期化プログラム2121は、電力ランクゾーン6020に含まれる全てのメモリページフレームが各ソフトウェアによって使用されていない全メモリランク1031の電力状態を不活性状態に切り替え、電力状態6040を更新する(8007)。
なお、メモリランク1031の電力モードの切り替えは、例えば、メモリコントローラ1020を介して実行される。
ステップ8007の処理を実行すると、メモリ管理初期化プログラム2121は、メモリゾーン6000に登録された全ての識別子のメモリゾーンに対して、ステップ8003〜ステップ8007の処理を繰り返す(8008)。メモリゾーン6000に登録された全ての識別子のメモリゾーンに対して、ステップ8003〜ステップ8007の処理が繰り返されると、メモリ管理初期化プログラム2121は終了する(8010)。
図9は、本発明の第1実施形態のIO管理プログラム2125がリモートIOメッセージを送信する処理のフローチャートである。
まず、演算用計算機1001によってリモートプロセスとして実行されているユーザ演算プログラム2010が、IO処理を発行する。そして、発行されたIO処理が制御用計算機1000によって実行されるリモートIO処理である場合に、演算用計算機1001は、IO管理プログラム2125を実行する(9000)。
演算用計算機1001は、リモートIOメッセージを作成する(9001)。なお、作成されたリモートIOメッセージには、リモートIO処理の一意な識別子及び発行されたリモートIO処理の実行時条件情報が含まれる。なお、リモートIO処理の一意な識別子は、例えば、リモートIO処理のシンボルである。また、リモートIO処理の実行時条件情報は、発行されたIO処理が実行される際の条件を示す情報である。
次に、演算用計算機1001は、リモートIO管理テーブル2128を参照し、リモートIOファンクション7000に、リモートIOメッセージに含まれるリモートIO処理の識別子と一致する識別子が登録されているか否かを判定する(9002)。
ステップ9002の処理で、リモートIOファンクション7000に、リモートIOメッセージに含まれるリモートIO処理の識別子と一致する識別子が登録されていないと判定されると、ステップ9009の処理に進む。
一方、ステップ9002の処理で、リモートIOファンクション7000に、リモートIOメッセージに含まれるリモートIO処理の識別子と一致する識別子が登録されていると判定されると、演算用計算機1001は、リモートIO管理テーブル2128を参照し、リモートIO処理の識別子と一致する識別子が登録されたリモートIOファンクション7000に含まれるIO実行時条件7010に、IO処理の実行時条件情報と一致する実行時条件が登録されているか否かを判定する(9003)。
具体的には、IO実行時条件7010にIOデータの数が登録されている場合、演算用計算機1001は、IO実行時条件7010に、発行されたIO処理のIOデータの数と一致するIOデータの数が登録されているか否かを判定する。発行されたIO処理のIO属性(例えばRAW(Read After Write)モードIO処理等)の実行時条件も同じく、登録内容と一致するか否か判定される。
なお、IO実行時条件7010にIOデータの数の他に、IO実行時条件7010にIO処理の他の実行時条件が登録されている場合、演算用計算機1001は、IO処理を管理するテーブル及びファイルを管理するテーブルを参照し、IO実行時条件7010に、発行されたIO処理の実行時条件情報と一致する実行時条件が登録されているか否かを判定する。
ステップ9003の処理で、IO処理の実行時条件情報と一致する実行時条件がIO実行時条件7010に登録されていないと判定された場合、ステップ9009の処理に進む。
一方、ステップ9003の処理で、IO処理の実行時条件情報と一致する実行時条件がIO実行時条件7010に登録されていると判定された場合、演算用計算機1001は、IO処理の実行時条件情報と一致する実行時条件がIO実行時条件7010のエントリを取得する。
そして、演算用計算機1001は、取得されたエントリに含まれる不活性化フラグ7020にONが登録されているか否かを判定する(9004)。
ステップ9004の処理で、不活性化フラグ7020にONが登録されていると判定された場合、演算用計算機1001は、電力制御フラグを有効に設定し(9005)、ステップ9007の処理に進む。
一方、ステップ9004の処理で、不活性化フラグ7020にONが登録されていないと判定された場合、演算用計算機1001は、電力制御フラグを無効に設定し(9006)、ステップ9007の処理に進む。なお、電力制御フラグは、IO管理プログラム2125によって保持される。
次に、演算用計算機1001は、取得されたエントリに含まれるエントリ更新フラグ7050にONが登録されているか否かを判定する(ステップ9007)。
ステップ9007の処理で、エントリ更新フラグ7050にONが登録されていないと判定された場合、ステップ9009の処理に進む。
一方、ステップ9007の処理で、エントリ更新フラグ7050にONが登録されていると判定された場合、ステップ9001の処理で作成されたリモートIOメッセージに、IO処理終了後にリモートIO管理テーブル2128のエントリを更新する指令を含め(9008)、ステップ9009の処理に進む。
次に、演算用計算機1001は、IO処理を実行させる制御用計算機1000に、作成されたリモートIOメッセージを送信する(9009)。なお、リモートIOメッセージが送信される制御用計算機1000は、通常、演算用計算機1001にリモートプロセスとしてユーザ演算プログラム2010を実行させている制御用計算機1000である。
そして、演算用計算機1001は、リモートIOメッセージの送信が完了したか否かを判定する(9010)。
ステップ9010の処理で、リモートIOメッセージの送信が完了していないと判定された場合、ステップ9010の処理に戻る。
一方、ステップ9010の処理で、リモートIOメッセージの送信が完了したと判定された場合、演算用計算機1001は、リモートIOメッセージを送信する処理を終了する。
図10は、本発明の第1実施形態のIO管理プログラム2125が演算用計算機1001のメモリ1030の電力を制御する処理のフローチャートである。
演算用計算機1001のメモリ1030の電力を制御する処理は、演算用計算機1001がリモートIOメッセージを送信する処理が終了した後に、リモートIO処理の識別子及びリモートIO処理の実行時条件情報が指定されて、呼び出される(10000)。なお、リモートIO処理の実行時条件情報は、少なくとも、IO実行時条件7010に登録された実行時条件に対応する実行時条件情報、制御用計算機1000によって実行されるIO処理の引数の情報、各IOデータの容量及び制御用計算機1000に送信する各IOデータを一次的にメモリ1030に記憶する領域(送信バッファ)のメモリアドレス及び制御用計算機1000から受信した各IOデータを一次的にメモリ1030に記憶する領域(受信バッファ)のメモリアドレスを含む。
なお、演算用計算機1001のメモリ1030の記憶領域は、ユーザ演算プログラム2010及びユーザ演算プログラム2010以外のプログラム等(例えば、OS)に割り当てられる。
なお、ユーザ演算プログラム2010に割り当てられた記憶領域は、受信バッファに割り当てられた記憶領域及び送信バッファに割り当てられた記憶領域を含む。
具体的には、メモリ1030のメモリページフレームが、各プログラムに割り当てられることによって、メモリ1030の記憶領域が、各プログラムに割り当てられる。
まず、演算用計算機1001は、電力制御フラグが有効であるか否かを判定する(10001)。なお、電力制御フラグは、ステップ9005又は9006の処理で設定されている。
ステップ10001の処理で、電力制御フラグが有効でないと判定された場合、演算用計算機1001のメモリ1030の電力を制御する処理を終了する(10024)。
一方、ステップ10001の処理で、電力制御フラグが有効であると判定された場合、ステップ10002の処理に進む。
次に、演算用計算機1001は、IO管理プログラム2125によって保持される閾値確認カウンタを0に設定する(10002)。
そして、演算用計算機1001は、各IOデータに、ステップ10004〜10007の処理を繰り返す(10003)。具体的には、演算用計算機1001は、ユーザ演算プログラム2010が発行したIO処理の実行時条件と一致する実行時条件が登録されるIO実行時条件7010を含むレコードのIOサイズ閾値7030に登録された各IOデータ(要素)に、ステップ10004〜10007の処理を繰り返す。
まず、演算用計算機1001は、IOサイズ閾値7030に登録された要素を一つ選択する。
次に、演算用計算機1001は、IO実行時条件情報を参照し、選択された要素に対応するIOデータの容量を取得する。そして、演算用計算機1001は、取得されたIOデータの容量から、選択された要素に登録された閾値を減算することによって、IOデータの容量とIOサイズ閾値7030に登録された閾値との差分値を計算する(10004)。
次に、演算用計算機1001は、ステップ10004の処理で計算された差分値が正であるか否かを判定する(10005)。
ステップ10005の処理で、差分値が正でないと判定された場合、つまり、取得されたIOデータの容量がIOサイズ閾値7030に登録された値よりも小さいと判定された場合、ステップ10008の処理に進む。
一方、ステップ10005の処理で、差分値が正と判定された場合、つまり、取得されたIOデータの容量がIOサイズ閾値7030に登録された値以上である場合、演算用計算機1001は、閾値確認カウンタに1を加算する。
そして、演算用計算機1001は、閾値確認カウンタに格納されている値から閾値確認数7040に登録された値を減算することによって、差分値を計算する(10006)。
次に、演算用計算機1001は、ステップ10006の処理で計算された差分値が正であるか否かを判定する(10007)。
ステップ10007の処理で、差分値が正と判定された場合、つまり、閾値確認カウンタに格納されている値が閾値確認数7040に登録された値以上の場合、ステップ10009の処理に進む。
ステップ10007の処理で、差分値が正でないと判定された場合、つまり、閾値確認カウンタに格納されている値が閾値確認数7040に登録された値よりも小さい場合、全てのIOデータについて、ステップ10004〜10007の処理が実行されていれば、演算用計算機1001のメモリ1030の電力を制御する処理を終了し(10024)、全てのIOデータについて、ステップ10004〜10007の処理が実行されていなければ、ステップ10004の処理に戻る。
次に、演算用計算機1001は、メモリゾーン‐電力ランクゾーン状態管理テーブル2127に登録された電力ランクゾーンの全てのエントリに対して、ステップ10010〜10014の処理を繰り返す(10009)。
まず、演算用計算機1001は、メモリゾーン‐電力ランクゾーン状態管理テーブル2127に登録された電力ランクゾーンのエントリから、一つの電力ランクゾーンのエントリを選択する。
そして、演算用計算機1001は、選択されたエントリの電力ランクゾーン6020に登録された識別子によって識別される電力ランクゾーンの全てのメモリページフレーム数から、その電力ランクゾーンのメモリページフレームにおいてユーザ演算プログラム2010に割り当てられたメモリページフレームのうち送信バッファに割り当てられていないメモリページフレーム数及び選択された電力ランクゾーンのエントリに含まれる未使用メモリページフレーム数6050に登録された値を減算して、差分値を計算する(10010)。
そして、演算用計算機1001は、ステップ10010の処理で計算された差分値が0か否かを判定する(10011)。
ここで、ユーザ演算プログラム2010は、制御用計算機1000にIO処理を実行させている間、実行されない。そして、送信バッファは、送信IOデータが存在する場合、送信IOデータを制御用計算機1000に送信するために使用される。
ステップ10011の処理で、差分値が0と判定された場合、その電力ランクゾーンの全てのメモリページフレームは、制御用計算機1000にIO処理を実行させている間、使用されないので、演算用計算機1001は、その電力ランクゾーンの電力状態を、不活性状態に切り替え(10012)、ステップ10013の処理に進む。
ステップ10011の処理で、差分値が0でないと判定された場合、その電力ランクゾーンのメモリページフレームは、制御用計算機1000にIO処理を実行させている間、使用するメモリページフレームを含む場合があるので、その電力ランクゾーンの電力状態を不活性状態に切り替えないで、ステップ10013の処理に進む。
次に、演算用計算機1001は、リモートプロセスとして実行されるユーザ演算プログラム2010によって発行されたIO処理の実行時条件を参照し、制御用計算機1000に二次記憶装置等に書き込ませるために、制御用計算機1000に送信する必要のある送信IOデータが存在するか否かを判定する(10013)。
ステップ10013の処理で、送信IOデータが存在すると判定された場合、その送信IOデータが一次的に記憶される送信バッファが必要なので、演算用計算機1001は、選択された電力ランクゾーンのエントリに含まれる電力ランクゾーン6020に登録された識別子によって識別される電力ランクゾーンのメモリページフレームが、送信バッファに割り当てられたメモリページフレームの少なくとも一つを含む場合、その電力ランクゾーンの識別子を記憶し(10014)、ステップ10015の処理に進む。
なお、例えば、送信バッファに割り当てられたメモリページフレームの少なくとも一つを含む電力ランクゾーンの識別子は、IO管理プログラム2127のデータ記憶領域に記憶される。
一方、ステップ10013の処理で、送信IOデータが存在しないと判定された場合、送信IOデータを一時的に記憶する送信バッファが必要ないので、演算用計算機1001は、ステップ10014の処理を実行しないで、ステップ10015の処理に進む。
演算用計算機1001は、メモリゾーン‐電力ランクゾーン状態管理テーブル2127に登録された全ての電力ランクゾーンのエントリに、ステップ10010〜10014の処理が実行されると、ステップ10016の処理に進む(10015)。
次に、演算用計算機1001は、リモートプロセスとして実行されるユーザ演算プログラム2010によって発行されたIO処理の実行時条件を参照し、制御用計算機1000に二次記憶装置等に書き込ませるために、制御用計算機1000に送信する必要のある送信IOデータが存在するか否かを判定する(10016)。
ステップ10016の処理で、送信IOデータが存在しない場合、ステップ10012の処理で、制御用計算機1000がIO処理を実行している間、不要となるメモリページフレームが属する電力ランクゾーンは全て電力状態が不活性状態に切り替えられている。よって、送信IOデータの送信後に、電力ランクゾーンの電力状態を不活性状態に切り替える必要はないので、演算用計算機1001のメモリ1030の電力を制御する処理を終了する(10024)。
一方、ステップ10016の処理で、送信IOデータが存在する場合、電力状態が活性状態である送信バッファとして割り当てられたメモリページフレームが属する電力ランクゾーンが存在し、送信IOデータを送信後に、この電力ランクゾーンの電力状態を不活性状態に切り替えるために、ステップ10017の処理に進む。
次に、演算用計算機1001は、送信IOデータを指定された制御用計算機1000に送信する(10017)。なお、指定された制御用計算機1000は、通常、リモートプロセスを実行する要求を演算用計算機1001に送信した制御用計算機1000である。
そして、演算用計算機1001は、送信IOデータの送信が完了したか否かを判定する(10018)。
ステップ10018の処理で、送信IOデータの送信が完了していないと判定された場合、ステップ10017の処理に戻る。
一方、ステップ10018の処理で、送信IOデータの送信が完了したと判定された場合、ステップ10019の処理に進む。
なお、送信IOデータの送信が完了した場合、送信IOデータを送信バッファに一時的に記憶させる必要がないので、送信バッファに使用されていたメモリページフレームの電力状態を不活性状態するために、ステップ10019〜10023の処理に進む。
演算用計算機1001は、送信IOデータの送信が完了した場合、ステップ10014の処理で記憶された電力ランクゾーンの全ての識別子に対して、ステップ10020〜10022の処理を繰り返す(10019)。
まず、演算用計算機1001は、ステップ10014の処理で記憶された電力ランクゾーンの識別子から、一つの電力ランクゾーンの識別子を選択する。
次に、演算用計算機1001は、選択された識別子によって識別される電力ランクゾーンの全てのメモリページフレーム数から、その電力ランクゾーンのメモリページフレームのうちリモートプロセスとして実行されるユーザ演算プログラム2010に割り当てられたメモリページフレーム数及びその電力ランクゾーンの使用されていないメモリページフレーム数を減算して、差分値を計算する(10020)。
なお、その電力ランクゾーンのメモリページフレームのうちリモートプロセスとして実行されるユーザ演算プログラム2010に割り当てられたメモリページフレーム数には、送信バッファに割り当てられたメモリページ数及び受信バッファに割り当てられたメモリページフレーム数を含む。
また、その電力ランクゾーンの使用されていないメモリページフレーム数は、演算用計算機1001がメモリゾーン‐電力ランクゾーン状態管理テーブル2127を参照し、電力ランクゾーン6020に登録された識別子のうち、選択された電力ランクゾーンの識別子と一致する識別子が登録されたエントリを選択する。そして、演算用計算機1001は、選択されたエントリに含まれる未使用メモリページフレーム数6050に登録された値を取得することによって、使用されていないメモリページフレーム数を取得する。
そして、演算用計算機1001は、ステップ10021の処理で計算された差分値が0であるか否かを判定する(10021)。
ステップ10021の処理で、差分値が0と判定された場合、選択された識別子によって識別される電力ランクゾーンの全てのメモリページフレームは、リモートプロセスとして実行されるユーザ演算プログラム2010以外のプログラム等によって使用されていない。
また、制御用計算機1000がIO処理を実行している間、ユーザ演算プログラム2010に割り当てられたメモリページフレームは使用されない。したがって、ステップ10021の処理で、差分値が0と判定された場合、選択された識別子によって識別される電力ランクゾーンのメモリページフレームは、制御用計算機1000がIO処理を実行している間、不要になるので、その電力ランクゾーンの電力状態を不活性状態に切り替え(10022)、ステップ10023の処理に進む。
一方、ステップ10021の処理で、差分値が0でないと判定された場合、選択された識別子によって識別される電力ランクゾーンのメモリページフレームは、リモートプロセスとして実行されるユーザ演算プログラム2010以外のプログラム等によって使用されている。よって、ステップ10021の処理で、差分値が0でないと判定された場合、制御用計算機1000がIO処理を実行している間、不要にならないので、その電力ランクゾーンの電力状態を不活性状態に切り替えずに、ステップ10023の処理に進む。
そして、演算用計算機1001は、ステップ10014の処理で、記憶された電力ランクゾーンの全ての識別子に対して、ステップ10020〜10022の処理が実行されると、演算用計算機1001のメモリ1030の電力を制御する処理を終了する(10024)。
以上の処理によって、制御用計算機1000がIO処理を実行している間、不要となる電力ランクゾーンが不活性状態に切り替えられるので、メモリ1030が消費する電力が低減できる。
図11は、本発明の第1実施形態のIO管理プログラム2032によって実行されるIO処理のフローチャートである。
制御用計算機1000は、演算用計算機1001によって送信されたリモートIOメッセージを受信すると、IO管理プログラム2032を実行する(11000)。
制御用計算機1000は、リモートIOメッセージを受信すると、受信したリモートIOメッセージに含まれるリモートIO処理の識別子及びリモートIO処理の実行時条件情報を取得する(11001)。
次に、制御用計算機1000は、取得したリモートIO処理の実行時条件情報を参照し、送信IOデータが、演算用計算機1001から送信されるか否かを判定する(11002)。
ステップ11002の処理で、送信IOデータが、演算用計算機1001から送信されないと判定された場合、ステップ11004の処理に進む。
一方、ステップ11002の処理で、送信IOデータが、演算用計算機1001から送信されると判定された場合、制御用計算機1000は、演算用計算機1001から送信IOデータを受信する(ステップ11003)。
次に、制御用計算機1000は、受信したリモートIOメッセージに含まれるリモートIO処理の実行時条件情報に基づいて、リモートIO処理の識別子によって識別されるIOファンクションを実行し、制御用計算機1000から二次記憶装置1160に、受信した送信データを書き込む。また、受信したリモートIOメッセージに受信IOデータの読み出し要求が含まれる場合、制御用計算機1000は、二次記憶装置1160から受信IOデータを読み出す(11004)。
制御用計算機1000は、送信IOデータを二次記憶装置1160等に書き込む処理及び受信IOデータを二次記憶装置1160等から読み出す処理が完了した場合に、リモートIOファンクションの実行が完了したことを示すリモートIOファンクション完了メッセージを、演算用計算機1001に送信する(11005)。
次に、制御用計算機1000は、リモートIOファンクション完了メッセージの送信が完了したか否かを判定する(11006)。
ステップ11006の処理で、リモートIOファンクション完了メッセージの送信が完了していないと判定された場合、ステップ11006の処理に戻る。
一方、ステップ11006の処理で、リモートIOファンクション完了メッセージの送信が完了したと判定された場合、制御用計算機1000は、受信したリモートIOメッセージに含まれるIO処理の実行時情報を参照し、二次記憶装置1160から読み出し、演算用計算機1001に送信される受信IOデータが存在するか否かを判定する(11007)。
ステップ11007の処理で、受信IOデータが存在しないと判定された場合、ステップ11010の処理に進む。
一方、ステップ11007の処理で、受信IOデータが存在すると判定された場合、制御用計算機1000は、受信IOデータを演算用計算機1001に送信する(11008)。
次に、制御用計算機1000は、受信IOデータの送信が完了したか否かを判定する(11009)。
ステップ11009の処理で、受信IOデータの送信が完了していないと判定された場合、ステップ11009の処理に戻る。
一方、ステップ11006の処理で、受信IOデータの送信が完了したと判定された場合、制御用計算機1000は、受信したリモートIOメッセージにエントリ更新指令が含まれているか否かを判定する(11010)。
ステップ11010の処理で、受信したリモートIOメッセージにエントリ更新指令が含まれる場合、制御用計算機1000は、IO処理が実行された結果であるIO処理実行プロファイル情報を含むリモートIO処理完了メッセージを作成する(11011)。
なお、リモートIO処理完了メッセージは、制御用計算機1000によって実行されるIO処理(リモートIO処理)が全て完了したことを示す。IO処理は、二次記憶装置1160へのIOデータが読み書きされる処理であり、リモートIO処理は、IO処理及び受信IOデータを送信する処理を含む処理である。
IO処理実行プロファイル情報には、例えば、IO処理が実行されたIOデータの容量及びそのIOデータのIO処理にかかった時間が含まれる。また、IO処理実行プロファイル情報には、制御用計算機1000が受信IOデータを読み出した場合に、制御用計算機1000が二次記憶装置から読み出したデータの容量と、制御用計算機1000がメモリ1030のキャッシュから読み出したデータの容量との割合が含まれてもよい。さらに、IO処理実行プロファイル情報には、制御用計算機1000が受信IOデータを読み出した場合に、二次記憶装置1160から読み出されたデータが、メモリ1030のキャッシュに記憶されたデータの容量の値が含まれてもよい。
なお、IO処理実行プロファイル情報は、IO処理が完了した場合に、基本システムソフトウェア2030のIO処理管理テーブルに格納される。
一方、ステップ11010の処理で、受信したリモートIOメッセージにエントリ更新指令が含まれていない場合、制御用計算機1000は、リモートIO処理完了メッセージが作成されていないので、リモートIO処理完了メッセージを作成し、ステップ11012の処理に進む。
そして、作成されたリモートIO処理完了メッセージを演算用計算機1001に送信する(11012)。
制御用計算機1000は、リモートIO処理完了メッセージの送信が完了したか否かを判定する(11013)。
ステップ11013の処理で、リモートIO処理完了メッセージの送信が完了していないと判定された場合、ステップ11013の処理に戻る。
一方、ステップ11013の処理で、リモートIO処理完了メッセージの送信が完了したと判定された場合、IO処理管理プログラム2023を終了する(11014)。
図12は、本発明の第1実施形態のIO管理プログラム2125によって実行されるIO処理完了処理のフローチャートである。
演算用計算機1001は、ステップ11005の処理で制御用計算機1000が送信したIO処理完了メッセージを受信した場合、IO管理プログラム2125を呼び出し、IO処理完了処理を実行する(12000)。
まず、演算用計算機1001は、リモートプロセスとして実行されるユーザ演算プログラム2010によって発行されたIO処理の実行時条件を参照し、受信IOデータが制御用計算機1000から送信されるか否かを判定する(12001)。
ステップ12001の処理で、受信IOデータが制御用計算機1000から送信されないと判定された場合、ステップ12005の処理に進む。
一方、ステップ12001の処理で、受信IOデータが制御用計算機1000から送信されると判定された場合、演算用計算機1001は、受信バッファに割り当てられたメモリページを含む電力ランクゾーンの電力状態を活性状態に切り替え(12002)、ステップ12003の処理に進む。
そして、演算用計算機1001は、受信IOデータを受信するために待機する(12003)。
ステップ11003の処理で、制御用計算機1000が受信IOデータの送信を開始すると、演算用計算機1001は、受信IOデータを受信し、受信した受信IOデータを受信バッファに記憶する(12004)。
受信IOデータの受信が完了した場合、又はステップ12001の処理で受信IOデータが制御用計算機1000から送信されないと判定された場合、演算用計算機1001は、ユーザ演算プログラム2010に割り当てられたメモリページフレームを含む電力ランクゾーンの電力状態を活性状態に切り替える(12005)。
なお、受信IOデータの受信が完了した場合でなくても、演算用計算機1001が受信IOデータの受信を開始した場合、演算用計算機1001がステップ12005の処理を実行してもよい。また、受信IOデータの受信の途中で、演算用計算機1001がステップ12005の処理を実行してもよい。
なお、ステップ12005の処理で電力状態が活性状態に切り替えられる電力ランクゾーンは、ステップ10012の処理で電力状態が不活性状態に切り替えられた電力ランクゾーンに対応する。
ステップ12005の処理は、リモートIO処理終了後、ユーザ演算プログラム2010の実行が再開される前に、ユーザ演算プログラム2010に割り当てられたメモリページフレームを含む電力ランクゾーンの電力状態を先行的に活性状態に切り替える処理である。
そして、演算用計算機1001は、ステップ11012の処理で送信されたリモートIO処理完了メッセージを受信すると(12006)、エントリ更新フラグが有効であるか否かを判定する(12007)。
具体的には、演算用計算機1001は、ステップ9007の処理で電力制御フラグが有効に設定され、ステップ9008の処理でエントリ更新指令を含むリモートIOメッセージが作成されたか否かによって、エントリ更新フラグが有効であるか否かを判定する。
ステップ12007の処理で、エントリ更新フラグが有効でないと判定された場合、演算用計算機1001は、リモートIO管理テーブル2128に登録されたエントリを更新しないので、IO処理完了処理を終了する(12009)。
一方、ステップ12007の処理で、エントリ更新フラグが有効であると判定された場合、演算用計算機1001は、受信したリモートIO処理完了メッセージに含まれるIO処理実行プロファイル情報に基づいて、リモートIO管理テーブル2128に登録されたエントリを更新し(12008)、IO処理完了処理を終了する(12009)。
具体的には、演算用計算機1001は、電力ランクゾーンの電力状態を不活性状態から活性状態に切り替える時間が、制御用計算機1000がIO処理にかかる時間よりも短くならないように、IOサイズ閾値7030に登録された閾値を更新する。
例えば、演算用計算機1001は、IO処理実行プロファイル情報に含まれるIO処理が実行されたIOデータの容量及びそのIOデータのIO処理にかかった時間を線形補間することによって、IO処理にかかる時間が、メモリ電力モードテーブル2115のモード切替レイテンシ5200に登録された値よりも大きくなるような、IOデータの容量の値を算出する。そして、演算用計算機1001は、IOサイズ閾値7030に登録された閾値を算出されたIOデータの容量の値に更新する。
また、演算用計算機1001は、IO処理実行プロファイル情報に含まれる制御用計算機1000が二次記憶装置から読み出したデータの容量と、制御用計算機1000がメモリ1030のキャッシュから読み出したデータの容量との割合を線形補間することによって、IO処理にかかる時間が、メモリ電力モードテーブル2115のモード切替レイテンシ5200に登録された値よりも大きくなるような、IOデータの容量の値を算出する。そして、演算用計算機1001は、IOサイズ閾値7030に登録された閾値を算出されたIOデータの容量の値に更新してもよい。
演算用計算機1001は、IO処理実行プロファイルに含まれる二次記憶装置1160から読み出されたデータがメモリ1030のキャッシュに記憶されたデータの容量の値を線形補間することによって、IO処理にかかる時間が、メモリ電力モードテーブル2115のモード切替レイテンシ5200に登録された値よりも大きくなるような、IOデータの容量の値を算出する。そして、演算用計算機1001は、IOサイズ閾値7030に登録された閾値を算出されたIOデータの容量の値に更新してもよい。
図13は、本発明の第1実施形態の計算機システムのシーケンス図である。
まず、演算用計算機1001は、ユーザ演算プログラム2010が発行したIO処理を発行すると(130)、リモートIOメッセージを作成する。そして、演算用計算機1001は、リモートIOメッセージを制御用計算機1000に送信する(131)。
演算用計算機1001は、リモートIOメッセージを送信した後、ユーザ演算プログラム2010は実行されないので、ユーザ演算プログラム2010に割り当てられたメモリページフレームを含むメモリランクのうち、送信バッファに割り当てられたメモリページフレームを含むメモリランクを除くメモリランクの電力状態が不活性状態に切り替える(132)。なお、図14の(B)は、ステップ132の処理の後のメモリ1030の電力状態を示す。
次に、演算用計算機1001は、送信IOデータを制御用計算機1000に送信する(133)。演算用計算機1001は、送信IOデータを送信後に、送信バッファに割り当てられたメモリページフレームを含むメモリランクの電力状態を不活性状態に切り替える(134)。なお、図14の(C)は、ステップ134の処理の後のメモリ1030の電力状態を示す。
次に、制御用計算機1000は、送信IOデータ受信後、IO処理を実行する(135)。なお、IO処理が、データの読み出し要求のみである場合、リモートIOメッセージを受信した後、すぐにIO処理が実行されてもよい。
そして、制御用計算機1000は、IO処理の実行が完了すると、リモートIOファンクション完了メッセージを演算用計算機1001に送信する(136)。
演算用計算機1001は、リモートIOファンクション完了メッセージを受信すると、受信IOデータが制御用計算機1000から送信される前に、ユーザ演算プログラム2010に割り当てられたメモリページを含むメモリランクのうち、受信バッファに割り当てられたメモリページフレームを含むメモリランクの電力状態を、先行的に活性状態に切り替える(137)。なお、図14の(D)は、ステップ137の処理の後のメモリ1030の電力状態を示す。
そして、演算用計算機1001は、制御用計算機1000が送信した受信IOデータを受信すると(138)、ユーザ演算プログラム2010を実行する前に、ユーザ演算プログラムに割り当てられたメモリページフレームを含むメモリランクの電力状態を先行的に活性状態に切り替える(139)。なお、図14の(E)は、ステップ139の処理の後のメモリ1030の電力状態を示す。
演算用計算機1001は、制御用計算機1000が送信したリモートIO処理完了メッセージを受信すると(140)、エントリ更新フラグにONが登録されている場合、制御用計算機1000がIO処理を実行した結果に基づいて、リモートIO管理テーブル2128を更新する(141)。
図14は、本発明の第1実施形態のメモリ1030の電力状態の遷移を説明する図である。
図14に示す(A)は、ユーザ演算プログラム2010が演算用計算機1001によって実行されている間のメモリ1030の電力状態を説明する図である。
この場合、OS等のシステムプログラムに割り当てられたメモリページフレームを含むメモリランクの電力状態は、活性状態である。以降の(B)〜(D)でも、OS等のシステムプログラムに割り当てられたメモリページフレームを含むメモリランクの電力状態は、常に活性状態である。
そして、ユーザ演算プログラム2010は実行されているので、ユーザ演算プログラム2010に割り当てられているメモリページフレームを含むメモリランクの電力状態は、活性状態である。なお、ユーザ演算プログラム2010に割り当てられているメモリページフレームを含むメモリランクは、ユーザ演算プログラム2010を実行するために割り当てられたメモリページフレームを含むメモリランク、受信バッファに割り当てられたメモリページフレームを含むメモリランク、及び送信バッファに割り当てられたメモリページフレームを含むメモリランクである。
図14に示す(B)は、ステップ132の処理が実行された後のメモリ1030の電力状態を説明する図である。
この場合、ユーザ演算プログラム2010は実行されず、受信バッファもしようされない。また、送信バッファは、演算用計算機1001が送信IOデータを送信するために使用される。
よって、ユーザ演算プログラム2010に割り当てられたメモリページフレームを含むメモリランクのうち、送信バッファに割り当てられたメモリページを含むメモリランク以外のメモリランクの電力状態は、不活性状態に切り替えられる。
図14に示す(C)は、ステップ134の処理が実行された後のメモリ1030の電力状態を説明する図である。
この場合、演算用計算機1001が送信IOデータを送信した後なので、送信バッファは、使用されない。
よって、ユーザ演算プログラム2010に割り当てられたメモリページフレームを含むメモリランクのうち、送信バッファに割り当てられたメモリページを含むメモリランクの電力状態は、不活性状態に切り替えられる。
図14に示す(D)は、ステップ137の処理が実行された後のメモリ1030の電力状態を説明する図である。
この場合、ステップ138の処理で演算用計算機1001が受信IOデータを受信するので、受信バッファが使用される。よって、演算用計算機1001が受信IOデータを受信する前に、受信バッファに割り当てられたメモリページフレームを含むメモリランクの電力状態が先行的に活性状態に切り替えられる。
図14に示す(E)は、ステップ139の処理が実行された後のメモリ1030の電力状態を説明する図である。
この場合、ステップ140の処理でリモートIO処理完了メッセージを受信した後、ユーザ演算プログラム2010が実行される。よって、ユーザ演算プログラム2010が実行される前に、受信バッファに割り当てられたメモリページフレームを含むメモリランク以外のメモリランクの電力状態が先行的に活性状態に切り替えられる。
これによって、演算用計算機1001によってリモートプロセスとして実行されるユーザ演算プログラム2010が発行するIO処理を制御用計算機1000が実行する場合、制御用計算機1000がIO処理を実行している間、演算用計算機1001に備わるメモリ1030のメモリランク1031において、不要なメモリランク1031の電力状態が不活性状態に切り替えられる。これによって、演算用計算機1001に備わるメモリ1030が消費する電力を低減できる。
また、制御用計算機1000がIO処理を完了した場合、演算用計算機1001は、演算用計算機1001に備わるメモリ1030のメモリランク1031において、受信バッファに割り当てられたメモリランク1031及びユーザ演算プログラム2010に割り当てられたメモリランク1031の電力状態を先行して活性状態に切り替える。これによって、IO処理が完了した場合に、演算用計算機1001が、ユーザ演算プログラム2010の実行を再開しても、CPU1010がメモリ1030にアクセスする性能に影響を与えずに、メモリ1030が消費する電力を低減できる。
また、ユーザ演算プログラム2010が演算用計算機1001によって実行される場合、外乱を排除できる。
本発明の実施形態は、特に、ユーザ演算プログラム2010が大量のメモリ1030の記憶領域を使用する場合及びIO処理が実行されるIOデータの容量が大きい場合(例えば、科学技術計算プログラムのIO処理等)、メモリ1030が消費する電力をより効果的に低減できる。
(第2実施形態)
次に、本発明の第2実施形態について、図15〜図16を用いて説明する。
本発明の第2実施形態は、演算用計算機1001が、制御用計算機1000にIO処理を実行させている間にも、リモートプロセスとしてユーザ演算プログラム2010を実行する場合の実施形態である。なお、このようなIO処理を非同期IO処理という。
これによって、演算用計算機1001は、制御用計算機1000にIO処理要求を送信した後でも、リモートプロセスとしてユーザ演算プログラム2010を実行し続けることができる。
非同期IO処理が実行される方法としては、ユーザの指示によって実行されるプロセスに含まれるスレッドを用いて実行される方法と、基本システムソフトウェア2120のプロセスに含まれるスレッドを用いて実行される方法とがある。なお、スレッドは、プロセスの実行単位である。また、スレッドは、メモリ1030等のリソースをプロセスと共有する。
まず、非同期IO処理が、ユーザの指示によって実行されるプロセスに含まれるスレッドを用いて実行される方法について詳細に説明する。
演算用計算機1001は、ユーザ演算プログラム2010に割り当てられているメモリ1030の記憶領域の一部を、非同期IO処理を実行する作業用スレッドに割り当てる。そして、この作業用スレッドが、ユーザ演算プログラム2010に代わってIO処理を実行する。
作業用スレッドがIO処理の実行を完了した場合、及び作業用スレッドがIO処理を実行中に、エラーが発生した場合、演算用計算機1001は、イベントシグナル等を利用して、IO処理の実行を完了した旨及びエラーが発生した旨を、ユーザ演算プログラム2010に通知する。
ユーザ演算プログラム2010は、IO処理の実行が完了した旨及びエラーが発生した旨を受信した場合、シグナルハンドラを起動させる。そして、シグナルハンドラは、IO処理の結果を確認する。
なお、作業用スレッドが発行する非同期IO処理は、第1実施形態のIO処理と同じファンクションによって実行される。よって、非同期IO処理が、ユーザの指示によって実行されるプロセスに含まれるスレッドを用いて実行される場合、ユーザ演算プログラム2010の代わりに、作業用スレッドに割り当てられたメモリページフレームの電力ランクゾーンの電力状態を制御すればよい。
具体的には、作業スレッド用スレッドに割り当てられたメモリ1030の記憶領域は、送信バッファに割り当てられた記憶領域及び受信バッファに割り当てられた記憶領域を含む。そして、演算用計算機1001は、送信バッファに割り当てられた記憶領域及び受信バッファに割り当てられた記憶領域の電力状態を制御すればよい。
また、非同期IO処理が基本システムソフトウェア2120のスレッドを用いて実行される場合、基本システムソフトウェア2120によって提供される非同期IOファンクションの処理の延長で実行される同期IOファンクションに対してメモリ1030の低消費電力制御を実施すればよい。
以下、第2実施形態について、具体的に説明する。なお、第1実施形態と異なる部分についてのみ説明する。
図15は、本発明の第2実施形態のIO管理プログラム2125が演算用計算機1001のメモリ1030の電力を制御する処理のフローチャートである。
本実施形態のIO管理プログラム2125が演算用計算機1001のメモリ1030の電力を制御する処理では、演算用計算機1001は、第1実施形態のステップ10010の処理に代わって、ステップ13000の処理を実行する。また、演算用計算機1001は、第1実施形態のステップ10020の処理に代わって、ステップ13001の処理を実行する。
まず、ステップ13000の処理について説明する。
演算用計算機1001は、選択されたエントリの電力ランクゾーン6020に登録された識別子によって識別される電力ランクゾーンの全てのメモリページフレーム数から、その電力ランクゾーンのメモリページフレームにおいてユーザ演算プログラム2010に割り当てられたメモリページフレームのうち受信バッファに割り当てられたメモリページフレームの数及び選択された電力ランクゾーンのエントリに含まれる未使用メモリページフレーム数6050に登録された値を減算して、差分値を計算する(13000)。
そして、演算用計算機1001は、ステップ10010の処理で計算された差分値が0か否かを判定する(10011)。
なお、制御用計算機1000が作業用スレッドによって発行されたIO処理を実行中に、演算用計算機1001は、ユーザ演算プログラム2010を実行する。すなわち、演算用計算機1001が、制御用計算機1000にリモートIOメッセージを送信した後、ユーザ演算プログラム2010に割り当てられているメモリページフレームは使用され続ける。
また、受信バッファに割り当てられているメモリページフレームは、演算用計算機10011が制御用計算機1000から受信IOデータを受信するまで、使用されない。
よって、差分値が0と判定された場合、つまり受信バッファに割り当てられたメモリフレームのみが使用されている電力ランクゾーンの電力状態を不活性状態に切り替える(10012)。
一方、差分値が0でないと判定された場合、ユーザ演算プログラム2010等に割り当てられたメモリページフレームも使用されているので、その電力ランクゾーンの電力状態を不活性状態に切り替えず、ステップ10013の処理に進む。
次に、ステップ13001の処理について説明する。
演算用計算機1001は、選択された識別子によって識別される電力ランクゾーンの全てのメモリページフレーム数から、受信バッファに割り当てられたメモリページフレーム数、送信バッファに割り当てられたメモリページフレーム数、及びその電力ランクゾーンの使用されていないメモリページフレーム数を減算して、差分値を計算する(13001)。
そして、演算用計算機1001は、ステップ10010の処理で計算された差分値が0か否かを判定する(10021)。
ステップ10021の処理で、差分値が0と判定された場合、選択された電力ランクゾーンのエントリに含まれる電力ランクゾーン6020に登録された識別子によって識別される電力ランクゾーンのメモリページフレームのうち、受信バッファに割り当てられたメモリページフレーム及び送信バッファに割り当てられたメモリページフレーム以外のメモリページフレームは、使用されていない。
また、送信バッファに割り当てられているメモリページフレームは、演算用計算機1001が送信IOデータを送信後、使用されない。また、受信バッファに割り当てられているメモリページフレームは、演算用計算機10011が制御用計算機1000から受信IOデータを受信するまで、使用されない。
よって、差分値が0と判定された場合、つまり受信バッファに割り当てられているメモリページフレーム及び送信バッファに割り当てられたメモリフレームのみが使用されている電力ランクゾーンの電力状態を不活性状態に切り替える(10022)。
一方、差分値が0でないと判定された場合、ユーザ演算プログラム2010等に割り当てられたメモリページフレームも使用されているので、その電力ランクゾーンの電力状態を不活性状態に切り替えず、ステップ10023の処理に進む。
図16は、本発明の第2実施形態のIO管理プログラム2125によって実行されるIO処理完了処理のフローチャートである。
本実施形態のIO処理完了処理では、第1実施形態のステップ12005の処理に代わって、ステップ14000及び14001の処理を実行する。
演算用計算機1001は、送信IOデータを制御用計算機1000に送信したか否かを判定する(14000)。演算用計算機1001は、例えば、リモートIOファンクション実行時情報を参照して、送信IOデータを制御用計算機1000に送信したか否かを判定する。
ステップ14000の処理で、送信IOデータを制御用計算機1000に送信したと判定された場合、ステップ10022の処理、つまり、送信バッファに割り当てられたメモリページフレームの電力ランクゾーンの電力状態が不活性状態に切り替える処理は実行されている。よって、演算用計算機1001は、送信バッファに割り当てられたメモリページフレームの電力ランクゾーンの電力状態を先行的に活性状態に切り替える(14001)。
一方、ステップ14000の処理で、送信IOデータを制御用計算機1000に送信していないと判定された場合、ステップ10022の処理、つまり送信バッファに割り当てられたメモリページフレームの電力ランクゾーンの電力状態が不活性状態に切り替える処理は実行されていないので、送信バッファに割り当てられたメモリページフレームの電力ランクゾーンの電力状態を先行的に活性化する必要はない。よって、演算用計算機1001は、ステップ14001の処理を実行しないで、ステップ12006の処理に進む。
これによって、演算用計算機1001が、ユーザ演算プログラム2010をリモートプロセスとして実行し、非同期IO処理を実行する場合、最低限必要なメモリランクの電力状態を活性状態としたまま、必要ないメモリランクの電力状態を不活性状態に切り替える。よって、メモリ1030が消費する電力を確実かつ効率的に低減できる。
また、制御用計算機1000がIO処理を実行した後、演算用計算機1001は、IO処理結果を確認するために必要なメモリランク1031の電力状態を先行して活性状態に切り替える。よって、メモリランク1031の電力状態が切り替えられる場合に発生するレイテンシを隠蔽できる。したがって、CPU1010がメモリ1030にアクセスする性能に影響を与えずにメモリ1030が消費する電力を低減できる。
また、ユーザ演算プログラム2010が演算用計算機1001によって実行される場合、外乱を排除できる。
本発明の実施形態は、特に、ユーザ演算プログラム2010が大量のメモリ1030の記憶領域を使用する場合及びIO処理が実行されるIOデータの容量が大きい場合(例えば、科学技術計算プログラムのIO処理等)、メモリ1030が消費する電力をより効果的に低減できる。
(第3実施形態)
本発明の第3実施形態を図17〜図21を用いて説明する。
本実施形態では、演算用計算機1001によってリモートプロセスとして実行されるユーザ演算プログラム2010は、制御用計算機1000及び演算用計算機1001の少なくとも一方のIO状態を監視する。そして、演算用計算機1001は、ユーザ演算プログラム2010が監視している制御用計算機1000及び演算用計算機1001のうち、少なくとも一つのIO状態がIO処理を実行できる状態(ready状態)になるまで待機する処理(多重IOイベント監視処理)を実行する場合、IO処理を考慮して、メモリ1030が消費する電力を低減させる。
なお、ready状態とは、例えば、読み出し要求を受信した制御用計算機1000が、対象となるファイルを読み出す準備ができた状態である。
以下、第3実施形態について、具体的に説明する。なお、第1実施形態と異なる部分についてのみ説明する。
図17は、本発明の第3実施形態のIO管理プログラム2125がリモートIOメッセージを送信する処理のフローチャートである。なお、第1実施形態と同じ処理については、同じ符号を付し、説明を省略する。
まず、リモートIOメッセージを送信する処理は、演算用計算機1001によってリモートプロセスとして実行されるユーザ演算プログラム2010が発行した多重IOイベント同期処理のIOファンクションを制御用計算機1000又は他の演算用計算機1001が実行する場合、実行される処理である(9000)。なお、本実施形態のIOファンクションは、演算用計算機1001又は制御用計算機1000が、その計算機のIO状態を監視するファンクションである。
演算用計算機1001は、IO状態を監視する範囲に応じてステップ15001〜16003の処理のいずれかを実行する(15000)。なお、演算用計算機1001は、演算用計算機1001がIO状態を監視する範囲を、例えば、IOファンクションの識別子及び実行時情報(例えば、IOファンクションの引数の情報)から取得できる。
なお、演算用計算機1001が、演算用計算機1001のみのIO状態を監視する場合、制御用計算機1000にIOファンクションを実行させない。つまり、制御用計算機1000はIO状態を監視しない。
また、演算用計算機1001が制御用計算機1000のIO状態を監視する場合、演算用計算機1001は、制御用計算機1000にIOファンクションを実行させ、その制御用計算機1000のIO状態を監視させる。
そして、演算用計算機1001が、演算用計算機1001のみのIO状態を監視する場合、演算用計算機1001が多重IOイベント監視ファンクションを実行するために必要な引数情報を作成する(15001)。
なお、演算用計算機1001が、制御用計算機1000のみのIO状態を監視する場合、制御用計算機1000が多重IOイベント監視ファンクションを実行するために必要な引数情報を作成する(15002)。
また、演算用計算機1001が、演算用計算機1001及び制御用計算機1000のIO状態を監視する場合、演算用計算機1001が多重IOイベント監視ファンクションを実行するために必要な引数情報を作成し、さらに制御用計算機1000が多重IOイベント監視ファンクションを実行するために必要な引数情報を作成する(15003)。
なお、ステップ15003の処理で作成される引数情報は、演算用計算機1001と制御用計算機1000との間でIO状態を通知する演算用計算機1001及び制御用計算機1000の情報を含む。
また、ステップ15002又は15003の処理の実行後、演算用計算機1001は、制御用計算機1000にIO処理を実行させるため、多重IOイベント監視ファンクションの識別子及び多重IOイベント監視ファンクションを実行する際の実行時条件情報を含むリモートIOメッセージを作成し(15004)、図9に示すステップ9002の処理に進む。
なお、多重IOイベント監視ファンクションの識別子は、例えば、IOファンクションのシンボル又はそのIOファンクションのシンボルのアドレス情報である。また、実行時条件情報は、例えば、IOファンクションの引数情報等である。
ステップ15001の処理の実行後、図9に示すステップ9002の処理に進む。
そして、ステップ9007の処理で、取得されたエントリに含まれるエントリ更新フラグ7050にONが登録されていると判定された場合、演算用計算機1001は、制御用計算機1000のIO状態を監視するか否かを判定する(15005)。例えば、演算用計算機1001は、IOファンクションの識別子及び実行時情報(例えば、IOファンクションの引数の情報)を参照し、制御用計算機1000のIO状態を監視するか否かを判定する。
そして、ステップ15005の処理で、制御用計算機1000のIO状態を監視すると判定された場合、ステップ9008の処理を実行後、ステップ15006の処理に進む。一方、ステップ15005の処理で、制御用計算機1000のIO状態を監視しないと判定された場合、制御用計算機1000にその制御用計算機1000のIO状態を監視させないので、リモートIO管理テーブル2128に含まれるエントリが更新されることはない。よって、演算用計算機1001は、エントリ更新フラグ7050にONが登録されている場合でも、エントリ更新指令を含むリモートIOメッセージを作成せずに、ステップ15006の処理に進む。
演算用計算機1001は、制御用計算機1000のIO状態を監視するか否かを判定する(15006)。
ステップ15006の処理で、制御用計算機1000のIO状態を監視すると判定された場合、演算用計算機1001は、制御用計算機1000にIO状態を監視させるので、リモートIOメッセージを制御用計算機1000に送信するために、ステップ9009の処理に進む。
一方、ステップ15006の処理で、制御用計算機1000のIO状態を監視しないと判定された場合、演算用計算機1001は、制御用計算機1000にIO状態を監視させないので、リモートIOメッセージを制御用計算機1000に送信する必要がない。よって、演算用計算機1001は、リモートIOメッセージを送信する処理を終了する(9011)。
図18は、本発明の第3実施形態のIO管理プログラム2125が演算用計算機1001のメモリ1030の電力を制御する処理のフローチャートである。なお、第1実施形態と同じ処理については、同じ符号を付し、説明を省略する。
なお、本実施形態では、演算用計算機1001は、制御用計算機1000にIO状態を監視させるのみで、制御用計算機1000の二次記憶装置1160等にデータを読み書きするリモートIO処理を制御用計算機1000に実行させない。演算用計算機1001は、受信IOデータ及び送信IOデータを送受信しない。よって、演算用計算機1001は、演算用計算機1001のメモリ1030の記憶領域のうち、受信バッファに割り当てられた記憶領域及び送信バッファに割り当てられた記憶領域を考慮せず、ユーザ演算プログラム2010に割り当てられた記憶領域が使用中か否かを考慮して、メモリ1030の電力を制御する。
ステップ10001の処理で、電力制御フラグが有効であると判定された場合、演算用計算機1001は、メモリゾーン‐電力ランクゾーン状態管理テーブル2127に登録された電力ランクゾーンの全てのエントリに対して、ステップ10010〜10014の処理を繰り返す(10009)。
まず、演算用計算機1001は、メモリゾーン‐電力ランクゾーン状態管理テーブル2127に登録された電力ランクゾーンのエントリから、一つの電力ランクゾーンのエントリを選択する。
そして、演算用計算機1001は、選択されたエントリの電力ランクゾーン6020に登録された識別子によって識別される電力ランクゾーンの全てのメモリページフレーム数から、その電力ランクゾーンのメモリページフレームにおいてユーザ演算プログラム2010に割り当てられたメモリページフレーム数及び選択された電力ランクゾーンのエントリに含まれる未使用メモリページフレーム数6050に登録された値を減算して、差分値を計算する(16000)。
そして、演算用計算機1001は、ステップ10010の処理で計算された差分値が0か否かを判定する(10011)。
ステップ10011の処理で、差分値が0と判定された場合、選択された電力ランクゾーンのエントリに含まれる電力ランクゾーン6020に登録された識別子によって識別される電力ランクゾーンのメモリページフレームのうち、ユーザ演算プログラム2010に割り当てられたメモリページフレーム以外のメモリページフレームは使用されていない。
ここで、ユーザ演算プログラム2010は、演算用計算機1001が制御用計算機1000にIO状態を監視させている間、実行されない。
よって、ステップ10011の処理で、差分値が0と判定された場合、その電力ランクゾーンの全てのメモリページフレームは、演算用計算機1001が制御用計算機1000にIO状態を監視させている間、使用されないので、演算用計算機1001は、その電力ランクゾーンの電力状態を、不活性状態に切り替え(10012)、ステップ10015の処理に進む。
ステップ10011の処理で、差分値が0でないと判定された場合、その電力ランクゾーンのメモリページフレームは、演算用計算機1001が制御用計算機1000にIO状態を監視させている間、使用するメモリページフレームを含む場合があるので、その電力ランクゾーンの電力状態を不活性状態に切り替えないで、ステップ10015の処理に進む。
演算用計算機1001は、メモリゾーン‐電力ランクゾーン状態管理テーブル2127に登録された全ての電力ランクゾーンのエントリに、ステップ16000、10011〜1012、及び10015の処理が実行されると(10015)、演算用計算機1001のメモリ1030の電力を制御する処理を終了する(10024)。
図19は、本発明の第3実施形態のIO管理プログラム2032によって実行されるIO処理のフローチャートである。なお、第1実施形態と同じ処理については、同じ符号を付し、説明を省略する。
なお、図19に示すIO管理プログラム2032によって実行されるIO処理は、制御用計算機1000がリモートIOメッセージを受信後に実行される。よって、演算用計算機1001のみのIO状態を監視する場合、演算用計算機1001は、リモートIOメッセージを制御用計算機1000に送信しないので、図19に示すIO管理プログラム2032によって実行されるIO処理は実行されない。
制御用計算機1000は、ステップ11001の処理を実行後、実行時条件情報を参照し、多重IOイベント監視ファンクションを実行する(17000)。つまり。制御用計算機1000は、その制御用計算機1000のIO状態を監視する。
そして、制御用計算機1000は、IOイベントがready状態になった場合、当該ready状態になったIOイベントが制御用計算機1000のIOイベントであるか否かを判定する(17002)。
ステップ17002の処理で、制御用計算機1000のIOイベントがready状態でないと判定された場合、つまり、演算用計算機1001のIOイベントがready状態になった場合、ステップ17004の処理に進む。
なお、この場合には、例えば、演算用計算機1001が、その演算用計算機1001のIO状態を監視し、演算用計算機1001において、ready状態になったIOイベントが存在し、その旨が制御用計算機1000に通知された場合等がある。
一方、ステップ17002の処理で、ready状態になった制御用計算機1000のIOイベントが存在すると判定された場合、制御用計算機1000は、多重IOイベント監視ファンクションの実行を終了し、ノード間通知を使用して、ready状態になったIOイベントが存在する旨を演算用計算機1001に送信し(17003)。ステップ17004の処理に進む。
制御用計算機1000は、多重IOイベント監視ファンクションが実行された結果を含むリモートIOファンクション完了メッセージを、演算用計算機1001に送信する(17004)。なお、多重IOイベント監視ファンクションが実行された結果には、ready状態になったIOイベントが存在する場合には、そのIOイベントの識別子が含まれる。
そして、制御用計算機1000は、ステップ17004の処理を実行後、ステップ11006の処理を実行し、ステップ11010の処理以降の処理を実行する。
図20は、本発明の第3実施形態の演算用計算機1001に記憶されるIO管理プログラム2125によって実行されるリモートIO処理のフローチャートである。
演算用計算機1001は、図18に示す演算用計算機1001のメモリ1030の電力を制御する処理が実行された後に、多重IOイベント監視ファンクションの識別子及び実行時条件情報が指定されて、実行される(18000)。なお、実行時条件情報には、IOファンクションの引数情報が含まれる。
まず、演算用計算機1001は、その演算用計算機1001のIO状態を監視するか否かを判定する(18001)。演算用計算機1001は、例えば、多重IOイベント監視ファンクションの識別子、実行時条件情報(例えば、引数情報等)を参照し、その演算用計算機1001のIO状態を監視するか否かを判定する。
ステップ18001の処理で、演算用計算機1001は、その演算用計算機1001のIO状態を監視しないと判定された場合、リモートIO処理を終了する。
一方、ステップ18001の処理で、演算用計算機1001は、その演算用計算機1001のIO状態を監視すると判定された場合、実行時条件情報に基づいて、多重IOイベント監視ファンクションを実行する(18002)。つまり、演算用計算機1001は、その演算用計算機1001のIO状態を監視する。
そして、演算用計算機1001は、演算用計算機1001にIOイベントにおいて、ready状態になったIOイベントが存在するか否かを判定する(18003)。
ステップ18003の処理で、演算用計算機1001にIOイベントにおいて、ready状態になったIOイベントが存在しないと判定された場合、ステップ18005の処理に進む。
一方、ステップ18003の処理で、ready状態になったIOイベントが存在すると判定された場合、演算用計算機1001は、多重IOイベント監視ファンクションの実行を終了し、ノード間通知を使用して、ready状態になったIOイベントが存在する旨を制御用計算機1000に送信し(18004)、ステップ18005の処理に進む。
次に、演算用計算機1001は、多重IOイベント監視処理によって監視されるIO状態が、演算用計算機1001のみのIO状態であるか否かを判定する(18005)。なお、演算用計算機1001は、多重IOイベント監視ファンクションの識別子及び実行時条件情報を参照し、多重IOイベント監視処理によって監視されるIO状態が、演算用計算機1001のみのIO状態であるか否かを判定する。
ステップ18005の処理で、多重IOイベント監視処理によって監視されるIO状態が、演算用計算機1001のみのIO状態でないと判定された場合、演算用計算機1001は、制御用計算機1000から送信されるリモートIO処理管理メッセージに含まれるIOファンクション実行プロファイルに基づいて、リモートIO管理テーブル2128に含まれるエントリを更新する。よって、演算用計算機1001は、ステップ11010〜ステップ18006の処理を実行せず、リモートIO処理を終了する(18007)。
一方、ステップ18005の処理で、多重IOイベント監視処理によって監視されるIO状態が、演算用計算機1001のみのIO状態であると判定された場合、演算用計算機1001は、制御用計算機1000からリモートIO処理管理メッセージは送信されない。よって、作成されたリモートIOメッセージにエントリ更新指令が含まれている場合、演算用計算機1001は、リモートIO管理テーブル2128に含まれるエントリを更新するために必要なIOファンクション実行プロファイルを作成するために、ステップ11010の処理以降の処理を実行する。
まず、演算用計算機1001は、作成されたリモートIOメッセージにエントリ更新指令が含まれているか否かを判定する(11010)。
ステップ11010の処理で、作成されたリモートIOメッセージにエントリ更新指令が含まれていないと判定された場合、演算用計算機1001は、リモートIO管理テーブル2128に含まれるエントリを更新しないので、IOファンクション実行プロファイル情報は必要ない。よって、ステップ11011の処理を実行せず、ステップ18006の処理に進む。
一方、ステップ11010の処理で、作成されたリモートIOメッセージエントリ更新指令が含まれていると判定された場合、演算用計算機1001は、リモートIO管理テーブル2128に含まれるエントリを更新するために、IOファンクション実行情報を記憶し(11011)、ステップ18006処理に進む。
そして、演算用計算機1001は、リモートIO処理が終了した後に、図21に示すリモートIO処理完了処理が呼び出されるように、IO管理プログラム2125を設定し(18006)、リモートIO処理を終了する。
図21は、本発明の第3実施形態のIO管理プログラム2125によって実行されるIO処理完了処理のフローチャートである。なお、第1実施形態と同じ処理については、同じ符号を付し、説明を省略する。
演算用計算機1001がリモートIO完了メッセージを受信した場合、又はステップ18007の処理でリモートIO処理が終了した後に、リモートIO完了処理が実行されるように設定された場合、リモートIO処理を完了させる処理は、演算用計算機1001によって実行される(12000)。
次に、演算用計算機1001は、ユーザ演算プログラム2010に割り当てられたメモリページフレームを含む電力ランクゾーンの電力状態を活性状態に切り替える(12005)。
そして、演算用計算機1001は、制御用計算機1000に、その制御用計算機1000のIO状態を監視させたか否かを判定する(19000)。具体的には、演算用計算機1001は、多重IOイベント監視ファンクションの識別子及び実行時条件情報を参照し、制御用計算機1000に、その制御用計算機1000のIO状態を監視させたか否かを判定する。
ステップ19000の処理で、演算用計算機1001は、制御用計算機1000に、その制御用計算機1000のIO状態を監視させたと判定された場合、制御用計算機1000からリモートIO完了メッセージが送信されるため、演算用計算機1001は、リモートIO完了メッセージを受信し(12006)、ステップ12007の処理に進む。
一方、ステップ19000の処理で、演算用計算機1001は、制御用計算機1000に、その制御用計算機1000のIO状態を監視させたと判定された場合、ステップ12007の処理に進む。
演算用計算機1001は、エントリ更新フラグが有効であるか否かを判定する(12007)。
ステップ12007の処理で、エントリ更新フラグが有効であると判定された場合、演算用計算機1001は、IOファンクション実行プロファイルに基づいて、リモートIO管理テーブル2128に含まれるエントリを更新し(12008)、ステップ19001の処理に進む。
一方、ステップ12007の処理で、エントリ更新フラグが有効でないと判定された場合、ステップ19001の処理に進む。
演算用計算機1001は、リモート多重IOファンクションの実行結果をまとめる(19001)。リモート多重IOファンクションの実行結果は、具体的には、ready状態になったIOイベントの識別子等である。
ステップ19001の処理では、演算用計算機1001は、例えば、制御用計算機1000によって実行されたリモート多重IOファンクションの実行結果と演算用計算機1001によって実行されたリモート多重IOファンクションの実行結果とをまとめる。
そして、演算用計算機1001は、ステップ19001の処理を実行した後、リモートIO処理完了処理を終了し(12009)、ユーザ演算プログラム2010のリモートプロセスとしての実行を再開する。また、ユーザ演算プログラム2010は、ステップ19001の処理でまとめられたリモート多重IO監視ファンクションの実行結果を参照できる。
これによって、演算用計算機1001によって、リモートプロセスとしてユーザ演算プログラム2010を実行する場合、演算用計算機1001がIO状態を監視する計算機を考慮して、演算用計算機1001のメモリ1030の電力を制御するので、演算用計算機1001のメモリ1030が消費する電力を低減できる。
また、演算用計算機1001が制御用計算機1000にIO状態を監視させている間、又は演算用計算機1001がその演算用計算機1001のIO状態を監視している間、演算用計算機1001によって実行されないユーザ演算プログラム2010に割り当てられたメモリページフレームを含むメモリランク1031の電力状態を不活性状態に切り替える。よって、演算用計算機1001のメモリ1030が消費する電力を低減できる。
さらに、少なくとも一つのIOイベントのIO状態がready状態になった場合、演算用計算機1001は、ユーザ演算プログラム2010に割り当てられたメモリページフレームを含むメモリランク1031の電力状態を先行して活性状態に切り替える。よって、メモリランク1031の電力状態が活性状態に切り替えられる場合に発生するレイテンシを隠蔽できる。したがって、CPU1010がメモリ1030にアクセスする性能に影響を与えずにメモリ1030が消費する電力を低減できる。
また、ユーザ演算プログラム2010が演算用計算機1001によって実行される場合、外乱を排除できる。
本発明の実施形態は、特に、ユーザ演算プログラム2010が大量のメモリ1030の記憶領域を使用する場合及びIO処理が実行されるIOデータの容量が大きい場合(例えば、科学技術計算プログラムのIO処理等)、メモリ1030が消費する電力をより効果的に低減できる。
本発明の第1実施形態における計算機システムの構成を示す図である 本発明の第1の実施の形態の制御用計算機ノードソフトウェア及び演算用計算機ノードソフトウェアの構成を示す図である 本発明の第1実施形態のメモリ・アドレッシング・モード・テーブルの構成を示す図である 本発明の第1実施形態の電力ランクゾーン−メモリランク対応管理テーブルの構成を示す図である 本発明の第1実施形態のメモリ電力モードテーブルの構成を示す図である 本発明の第1実施形態のメモリゾーン−電力ランクゾーン状態管理テーブルの構成を示す図である 本発明の第1実施形態のリモートIO管理テーブルの構成を示す図である 本発明の第1実施形態のメモリ管理初期化プログラムのフローチャートである 本発明の第1実施形態の演算用計算機ノードに記憶されるIO管理プログラムにおけるリモートIOメッセージ送信処理のフローチャートである 本発明の第1実施形態の演算用計算機ノードに記憶されるIO管理プログラムにおける電力制御を実行する処理のフローチャートである 本発明の第1実施形態の制御用計算機ノードに記憶されるIO管理プログラムにおけるリモートIO処理を実行する処理のフローチャートである 本発明の第1実施形態の演算用計算機ノード記憶されるIO管理プログラムにおけるリモートIO完了処理を実行する処理のフローチャートである 本発明の第1実施形態の計算機システムのシーケンス図である。 本発明の第1実施形態のメモリの電力状態の遷移を説明する図である。 本発明の第2の実施形態の演算用計算機ノードに記憶されるIO管理プログラムにおける電力制御を実行する処理のフローチャートである 本発明の第2の実施形態の演算用計算機ノード記憶されるIO管理プログラムにおけるリモートIO完了処理を実行する処理のフローチャートである 本発明の第3の実施形態の演算用計算機ノードに記憶されるIO管理プログラムにおけるリモートIOメッセージ送信を実行する処理のフローチャートである 本発明の第3の実施形態の演算用計算機ノードに記憶されるIO管理プログラムにおける電力制御処理を実行する処理のフローチャートである 本発明の第3の実施形態の制御用計算機ノードに記憶されるIO管理プログラムにおけるリモートIO処理を実行する処理のフローチャートである 本発明の第3の実施形態の演算用計算機ノードに記憶されるIO管理プログラムにおけるリモートIO処理を実行する処理のフローチャート 本発明の第3実施形態の演算計算機に記憶されるIO管理プログラムによって実行されるIO処理完了処理のフローチャートである。
符号の説明
1000…制御用計算機
1010…CPU
1020…メモリコントローラ
1030…メモリ
1031…メモリランク
1070…チャネル
1090…システムROM
1100…ビデオアダプタ
1110…ネットワークインタフェース、
1120…二次記憶装置インタフェース
1130…入力装置インタフェース
1140…高速入出力装置
1150…システムバス
1160…二次記憶装置
1170…キーボード
1180…マウス
1190…ネットワーク
1200…ディスプレイ
1210…ネットワーク
1220…計算機

Claims (13)

  1. 制御用ノードと演算用ノードとを備える計算機システムであって、
    前記制御用ノードは、第一プロセッサと、前記第一プロセッサに接続され、ユーザ演算プログラムを記憶する記憶部と、他のノードに接続される第一インタフェースと、を備え、前記演算用ノードに実行させるユーザ演算プログラムを前記演算用ノードに送信し、
    前記制御用ノードは、データを記憶する記憶装置に接続され、
    前記演算用ノードは、前記制御用ノードによって送信されたユーザ演算プログラムを実行する第二プロセッサと、前記第二プロセッサに接続されるメモリと、前記第二プロセッサに接続され、前記制御用ノードに接続される第二インタフェースと、前記メモリに接続されるメモリコントローラと、を備え、
    前記メモリの記憶領域は、前記メモリコントローラが独立に電力を制御可能な単位であるメモリランクに区分され、
    前記メモリに供給される電力の状態は、前記メモリランク毎に、前記第二プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、前記活性状態よりもアクセスに遅延が生じる不活性状態とのいずれかに制御され、
    前記第二プロセッサは、
    前記記憶装置に対する読み書きを前記第一プロセッサに実行させるために前記ユーザ演算プログラムによって発行される処理要求を、前記第二インタフェースを介して前記第一プロセッサに送信し、
    前記処理要求の送信後に、前記ユーザ演算プログラムの実行を中断し、
    前記第一プロセッサは、
    前記処理要求を受信した場合、前記受信した処理要求に基づいて、前記記憶装置に対して読み書き処理を実行し、
    前記第二プロセッサは、
    前記第一プロセッサが読み書き処理を完了したことを検出した場合、前記ユーザ演算プログラムの実行を再開する前に、前記ユーザ演算プログラムに割り当てられているメモリランクを活性状態にすることを特徴とする計算機システム。
  2. 前記制御用ノードと前記演算用ノードとは同一の筐体に収納され、
    前記第一インタフェースと前記第二インタフェースとが接続されることによって、前記制御用ノードと前記演算用ノードとが接続されることを特徴とする請求項1に記載の計算機システム。
  3. 前記制御用ノードと前記演算用ノードとは異なる筐体に収納され、
    前記第一インタフェースと前記第二インタフェースとがネットワークを介して接続されることによって、前記制御用ノードと前記演算用ノードとが接続されることを特徴とする請求項1に記載の計算機システム。
  4. 前記第一プロセッサは、データを前記記憶装置から読み出す要求が前記処理要求に含まれる場合、前記受信した処理要求に基づいて、前記記憶装置からデータを読み出し、
    前記読み出されたデータを前記第一インタフェースを介して前記第二プロセッサに送信し、
    前記第二プロセッサは、前記第一プロセッサが読み出し処理の完了を検出した場合、前記読み出されたデータの受信前に、前記読み出されたデータが一時的に記憶される受信バッファに割り当てられるメモリランクを活性状態にすることを特徴とする請求項1に記載の計算機システム。
  5. 前記第二プロセッサは、データを前記記憶装置に書き込む要求を含む前記処理要求、及び前記処理要求に基づいて書き込まれるデータを前記第二インタフェースを介して前記第一プロセッサに送信し、
    前記書き込まれるデータの送信後に、前記書き込まれるデータが一時的に記憶されていた送信バッファに割り当てられているメモリランクを不活性状態にすることを特徴とする請求項1に記載の計算機システム。
  6. 前記第二プロセッサは、前記処理要求の送信後に、前記ユーザ演算プログラムに割り当てられているメモリランクを不活性状態にすることを特徴とする請求項1に記載の計算機システム。
  7. 前記第二プロセッサは、前記第一プロセッサが読み書きするデータの容量と予め定められた閾値との比較結果に基づいて、前記読み書きされるデータの容量が大きいと判定された場合、前記ユーザ演算プログラムに割り当てられているメモリランクを不活性状態にすることを特徴とする請求項6に記載の計算機システム。
  8. 前記第一プロセッサは、
    前記読み書き処理が完了すると、処理完了情報を作成し、
    前記作成された処理完了情報に、前記読み書き処理の実行結果を含め、前記作成された処理完了情報を前記第一インタフェースを介して前記第二プロセッサに送信し、
    前記第二プロセッサは、
    前記処理完了情報を受信することによって、前記第一プロセッサが前記読み書き処理を完了したことを検出し、
    前記受信した処理完了情報に含まれる前記読み書き処理の実行結果に基づいて、前記閾値を変更することを特徴とする請求項7に記載の計算機システム。
  9. 制御用ノードと演算用ノードとを備える計算機システムであって、
    前記制御用ノードは、第一プロセッサと、前記第一プロセッサに接続され、ユーザ演算プログラムを記憶する記憶部と、他のノードに接続される第一インタフェースと、を備え、前記演算用ノードに実行させるユーザ演算プログラムを前記演算用ノードに送信し、
    前記制御用ノードは、データを記憶する記憶装置に接続され、
    前記演算用ノードは、前記制御用ノードによって送信されたユーザ演算プログラムを実行する第二プロセッサと、前記第二プロセッサに接続されるメモリと、前記第二プロセッサに接続され、前記制御用ノードに接続される第二インタフェースと、前記メモリに接続されるメモリコントローラと、を備え、
    前記メモリの記憶領域は、前記メモリコントローラが独立に電力を制御可能な単位であるメモリランクに区分され、
    前記メモリに供給される電力の状態は、前記メモリランク毎に、前記第二プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、前記活性状態よりもアクセスに遅延が生じる不活性状態とのいずれかに制御され、
    前記第二プロセッサは、前記記憶装置に対する読み書きを前記第一プロセッサに実行させるために前記ユーザ演算プログラムによって発行される処理要求を、前記第二インタフェースを介して第一プロセッサに送信し、
    前記処理要求の送信後も、前記ユーザ演算プログラムの実行を続行し、
    前記第一プロセッサは、
    前記処理要求を受信し、データを前記記憶装置から読み出す要求が前記処理要求に含まれる場合、前記受信した処理要求に基づいて、前記記憶装置からデータを読み出し、
    前記読み出されたデータを前記第一インタフェースを介して前記第二プロセッサに送信し、
    前記第二プロセッサは、
    前記第一プロセッサが読み出し処理の完了を検出した場合、前記読み出されたデータの受信前に、前記読み出されたデータが一時的に記憶される受信バッファに割り当てられるメモリランクを活性状態にすることを特徴とする計算機システム。
  10. 前記第二プロセッサは、データを前記記憶装置に書き込む要求を含む前記処理要求、及び前記処理要求に基づいて書き込まれるデータを前記第二インタフェースを介して前記第一プロセッサに送信し、
    前記書き込まれるデータの送信後に、前記書き込まれるデータが一時的に記憶されていた送信バッファに割り当てられているメモリランクを不活性状態にすることを特徴とする請求項9に記載の計算機システム。
  11. 制御用ノードと演算用ノードとを備える計算機システムであって、
    前記制御用ノードは、第一プロセッサと、前記第一プロセッサに接続され、ユーザ演算プログラムを記憶する記憶部と、他のノードに接続される第一インタフェースと、を備え前記演算用ノードに実行させるユーザ演算プログラムを前記演算用ノードに送信し、
    前記制御用ノードは、データを記憶する記憶装置に接続され、
    前記演算用ノードは、前記制御用ノードによって送信されたユーザ演算プログラムを実行する第二プロセッサと、前記第二プロセッサに接続されるメモリと、前記第二プロセッサに接続され、前記制御用ノードに接続される第二インタフェースと、前記メモリに接続されるメモリコントローラと、を備え、
    前記メモリの記憶領域は、前記メモリコントローラが独立に電力を制御可能な単位であるメモリランクに区分され、
    前記メモリに供給される電力の状態は、前記メモリランク毎に、前記第二プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、前記活性状態よりもアクセスに遅延が生じる不活性状態とのいずれかに制御され、
    前記第二プロセッサは、
    前記記憶装置が読み書きの実行状態を前記第一プロセッサに監視させるための監視要求を、前記第二インタフェースを介して前記第一プロセッサに送信し、
    前記監視要求の送信後に、前記ユーザ演算プログラムの実行を中断し、
    前記第一プロセッサは、
    前記監視要求を受信した場合、前記受信した処理要求に基づいて、前記監視処理を実行し、
    前記第二プロセッサは、
    前記記憶装置が読み書きの実行可能な状態であることを検出した場合、前記ユーザ演算プログラムの実行を再開する前に、前記ユーザ演算プログラムに割り当てられているメモリランクを活性状態にすることを特徴とする計算機システム。
  12. 前記第二プロセッサは、前記監視要求を送信後に、前記ユーザ演算プログラムに割り当てられているメモリランクを不活性状態にすることを特徴とする請求項11に記載の計算機システム。
  13. 前記第二プロセッサは、前記ユーザ演算プログラムの実行再開後に、前記記憶装置に対する読み書きを前記第一プロセッサに実行させるための処理要求を、前記第二インタフェースを介して前記第一プロセッサに送信することを特徴とする請求項11に記載の計算機システム。
JP2006351412A 2006-12-27 2006-12-27 計算機システム Pending JP2008165318A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006351412A JP2008165318A (ja) 2006-12-27 2006-12-27 計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006351412A JP2008165318A (ja) 2006-12-27 2006-12-27 計算機システム

Publications (1)

Publication Number Publication Date
JP2008165318A true JP2008165318A (ja) 2008-07-17

Family

ID=39694785

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006351412A Pending JP2008165318A (ja) 2006-12-27 2006-12-27 計算機システム

Country Status (1)

Country Link
JP (1) JP2008165318A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014078251A (ja) * 2009-04-02 2014-05-01 Qualcomm Inc 関連情報の表示方法、及び携帯通信端末
WO2015068382A1 (ja) 2013-11-08 2015-05-14 日本電気株式会社 情報処理装置、情報処理方法、記録媒体、計算処理装置、計算処理方法
US10565135B2 (en) 2015-02-19 2020-02-18 Nec Corporation Information processing device, information processing method, main processor core, program, information processing method, and sub processor core

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014078251A (ja) * 2009-04-02 2014-05-01 Qualcomm Inc 関連情報の表示方法、及び携帯通信端末
WO2015068382A1 (ja) 2013-11-08 2015-05-14 日本電気株式会社 情報処理装置、情報処理方法、記録媒体、計算処理装置、計算処理方法
CN105723340A (zh) * 2013-11-08 2016-06-29 日本电气株式会社 信息处理设备、信息处理方法、记录介质、计算处理设备、计算处理方法
KR20160083916A (ko) 2013-11-08 2016-07-12 닛본 덴끼 가부시끼가이샤 정보 처리 장치, 정보 처리 방법, 기록 매체, 계산 처리 장치, 계산 처리 방법
US10241829B2 (en) 2013-11-08 2019-03-26 Nec Corporation Information processing device, information processing method, recording medium, calculation processing device, calculation processing method
US10565135B2 (en) 2015-02-19 2020-02-18 Nec Corporation Information processing device, information processing method, main processor core, program, information processing method, and sub processor core

Similar Documents

Publication Publication Date Title
JP4938080B2 (ja) マルチプロセッサ制御装置、マルチプロセッサ制御方法及びマルチプロセッサ制御回路
JP4982971B2 (ja) 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
JP5469940B2 (ja) 計算機システム、仮想計算機モニタ及び仮想計算機モニタのスケジューリング方法
JP5433837B2 (ja) 仮想計算機システム、仮想計算機の制御方法及びプログラム
JP5598493B2 (ja) 情報処理装置、演算装置および情報転送方法
US20060085794A1 (en) Information processing system, information processing method, and program
JP5624583B2 (ja) プログラム、計算処理装置、メモリ管理方法および計算機
JP2007272573A (ja) 低消費電力化メモリ管理方法及びメモリ管理プログラム
JP2008090395A (ja) 計算機システム、演算用ノード及びプログラム
JP2005122640A (ja) サーバシステム及びi/oスロット共有方法。
WO2006117950A1 (ja) 情報処理装置における電力制御装置
US9063794B2 (en) Multi-threaded processor context switching with multi-level cache
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
JP2008257572A (ja) 論理区画に動的に資源割り当てを行うストレージシステム及びストレージシステムの論理分割方法
CN109313604B (zh) 用于压缩虚拟存储器的动态配置的计算系统、装置和方法
JP5408330B2 (ja) マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム
WO2011161782A1 (ja) マルチコアシステムおよび外部入出力バス制御方法
JP2010160565A (ja) タスクスケジューリング装置、タスクスケジューリング制御方法、及びタスクスケジューリング制御プログラム
JP2010020743A (ja) 複数のコアを含むプロセッサを有するコンピュータ・システムの制御
JP5045163B2 (ja) 演算処理装置および演算処理装置の制御方法
JP2012243096A (ja) ゲストos管理装置、ゲストos管理方法及びゲストos管理プログラム
JP2008165318A (ja) 計算機システム
JP2008152567A (ja) コンピュータ及びその制御方法
JP2017033375A (ja) 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
US8719499B2 (en) Cache-line based notification