JP2007272573A - 低消費電力化メモリ管理方法及びメモリ管理プログラム - Google Patents

低消費電力化メモリ管理方法及びメモリ管理プログラム Download PDF

Info

Publication number
JP2007272573A
JP2007272573A JP2006097586A JP2006097586A JP2007272573A JP 2007272573 A JP2007272573 A JP 2007272573A JP 2006097586 A JP2006097586 A JP 2006097586A JP 2006097586 A JP2006097586 A JP 2006097586A JP 2007272573 A JP2007272573 A JP 2007272573A
Authority
JP
Japan
Prior art keywords
memory
power
rank
zone
program
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
JP2006097586A
Other languages
English (en)
Inventor
Katsuhisa Ogasawara
克久 小笠原
Yumiko Sugita
由美子 杉田
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 JP2006097586A priority Critical patent/JP2007272573A/ja
Priority to US11/729,957 priority patent/US7793129B2/en
Publication of JP2007272573A publication Critical patent/JP2007272573A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Power Sources (AREA)

Abstract

【課題】プロセッサからメモリにアクセスする性能に影響を与えることなく、メモリが消費する電力を低減する。
【解決手段】メモリに供給される電力の状態は、メモリランク毎に、プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、遅延なしでアクセスできない不活性状態とのいずれかに制御され、基本システムソフトウェアは、割り当てられる記憶領域が、複数のメモリランクに跨がって割り当てられる断片化を抑制し、メモリコントローラを介して、割り当てられる記憶領域を含まないメモリランクの電力状態を不活性状態にし、割り当てに必要な記憶領域が含まれるメモリランクの電力状態を先行して活性状態にすることを特徴とする。
【選択図】 図2

Description

本発明は、計算機システムのメモリ管理方法に関し、特に、アクセス性能を考慮しつつメモリの消費電力を低減する方法に関する。
一般の計算機システムは、ハードウェアを備え、ハードウェアの動作によって、電力を消費する。ハードウェアは、具体的には、処理装置(プロセッサ)、主記憶装置(メモリ)、二次記憶装置、及び入出力装置等である。
計算機システムが大量の電力を消費する場合には、同時に、計算機システムは、大量の熱を発生させる。従って、熱を除去する冷却設備も備える必要がある。
従って、計算機システムが消費する電力コストと冷却設備に関するコストがかかるので、大規模計算機システムを構築する場合には、消費電力あたりの計算機性能を考慮したシステム設計が要求される。すなわち、大規模計算機システムは、消費電力の低減を考慮した設計が必要である。なお、組み込み機器もバッテリ容量の制約等の条件があるので、同様に消費電力の低減を考慮する必要がある。
計算機システムにおいて、メモリは、大量に電力を消費するデバイスのひとつである。例えば、大規模計算機システムは、膨大な数のメモリを備えるので、大規模計算機システム全体の消費電力に占めるメモリの消費電力が大きい。また、計算機サーバ、パーソナルコンピュータ、及び組み込み機器等が備えるメモリの容量は増加している。
今日、低消費電力化の主要な対象は、プロセッサ及び周辺機器であって、メモリの消費電力を低減させる制御は、盛んとはいえない。今後、メモリも、低消費電力化の対象となる。
一般的に、メモリは、プロセッサが計算処理を実行するための命令及びデータ等を格納する。具体的には、プロセッサは、二次記憶装置からオペレーティングシステム(OS)又はアプリケーションソフトウェア等をメモリに読み出す。そして、プロセッサは、そのメモリから命令を読み出し、計算処理を実行する。また、プロセッサが計算処理を実行する際に、メモリは、計算処理に必要なデータ及び計算処理によるデータ若しくは結果を格納する。
計算機システムのメモリは、通常、DRAM(Dynamic Random Access Memory)である。DRAMは、トランジスタとキャパシタとを備え、キャパシタに電荷を蓄えるか否かによってデータを記録する。具体的には、キャパシタが電荷を蓄えている場合には、“1”を記憶し、キャパシタが電荷を蓄えていない場合には、“0”を記憶する。DRAMは、その構造上、コンデンサに充電された電荷は減衰するので、記録したデータを保持するため、周期的にコンデンサの状態を元の状態に戻すリフレッシュをしなければならない。
また、DRAMは、通常、複数の電力制御管理モードを備え、メモリコントローラ等を介して別モードに遷移することができる。例えば、通常モードから低電力モードに遷移することができる。低電力モードでは、通常モード時と比べて消費電力が低くなるが、プロセッサからメモリへのアクセス速度性能が低下する。
従来の計算機システムの低電力制御には、メモリコントローラが論理/物理アドレス変換テーブルを備え、メモリコントローラは、メモリ使用領域が任意のメモリデバイスに集約するように変換テーブルを操作することが知られている。又、OSが管理する未使用メモリリストをメモリデバイスごとに管理し、未使用のメモリが少ない(すなわち、メモリ使用度の高い)メモリデバイスからメモリを割り当てる低電力制御方法も知られている(例えば、特許文献1参照。)。これによって、未使用のメモリデバイスを低電力モードに遷移させ、メモリデバイスの消費電力を低減することができる。
また、データを有するメモリデバイスのみ周期的にリフレッシュし、データを保持することによって、メモリデバイスの消費電力をする技術が知られている(例えば、特許文献2参照。)。
一方、メモリの低電力制御ではなく、プロセッサの低電力制御として、演算回路を操作する命令を先行して検出し、その演算回路を先行して活性化し、演算終了後、使用した演算回路を不活性化することによってプロセッサの消費電力を低減する技術が知られている(例えば、特許文献3参照。)。
米国特許第6954837号明細書 米国特許第6215714号明細書 特開2005−235203号公報
前述した従来技術では、計算機システムにおける低電力制御の主要な対象はプロセッサであり、一方、メモリの消費電力は、今日までほとんど制御されていなかった。
例えば、特許文献3に記載された技術は、プロセッサ内の演算器の低消費電力制御に関する。
前述したように、特許文献1及び特許文献2には、ハードウェアレベルで、メモリが消費する電力を低減化する制御に関する技術が記載されている。一般に、基本システムソフトウェア(オペレーティングシステム等)が物理メモリ資源を直接管理するので、実用上、基本システムソフトウェアと連携することなくハードウェアのみで有効な低電力制御を実現することは極めて困難である。
また、基本システムソフトウェア等のソフトウェアと連携した場合でも、単純にメモリデバイス全体が未使用ならば電力の供給を遮断し、使用度の高いメモリデバイスからメモリを割り当てる方法は、使用される物理メモリの領域が複数のメモリデバイスに跨る断片化が生じるので、有効な方法ではない。特に、オペレーティングシステム等によるメモリ管理では、通常、断片化が生じてしまう。また、メモリが消費する電力が低い電力モード状態から、メモリに書き込み/読み込み可能な通常の電力モード状態へ切り替える際に、プロセッサからメモリへのアクセスに遅延(レイテンシ)が発生し、プロセッサからメモリへのアクセスの性能が低下してしまう課題がある。
しかしながら、特許文献1に記載された技術では、使用される頻度の高いメモリデバイスから物理メモリを割り当てるので、未使用のメモリデバイスが消費する電力は低減する。しかしながら、メモリを割り当てる方式及びメモリの割り当てを解放する方式は、メモリの消費電力の低減化を考慮した制御ではない。このため、計算機システムが動作を継続し、オペレーティングシステム等によってメモリを管理する場合には、通常、物理メモリの使用される領域が断片化する。よって、この断片化に対応できないという課題がある。
また、特許文献1に記載された低電力制御技術は、オペレーティングシステムがメモリをゾーン(物理メモリを低位アドレス領域、通常アドレス領域および高位アドレス領域等)に分割して管理する方式、及びNuma(Non-Uniform Memory Access)構成に対応していない。このため、オペレーティングシステムと協調して、確実に主記憶装置を低電力制御するという要求に十分に応えられていない。また、電力モードの切り替えによって生じるレイテンシが隠蔽できない。
一方、特許文献2に記載された技術では、使用中のメモリデバイスのみデータを維持するためリフレッシュ動作をしてメモリデバイスが消費する電力を抑えることができるが、前述したように、物理メモリの使用領域が各メモリデバイスに断片化すると、メモリデバイスを消費電力が低いモードに移行することができず、メモリの低消費電力制御の確実性が低い問題がある。
本発明の代表的な一形態によると、基本システムソフトウェア、ファームウェア、及びアプリケーションソフトウェアを実行する少なくとも一つのプロセッサと、記憶領域であるメモリと、前記メモリに接続されるメモリコントローラと、を備える計算機において、前記メモリを管理する方法であって、前記メモリコントローラは、前記メモリにアドレスを定義するメモリアドレッシングと、前記プロセッサからの前記メモリへのメモリアクセスと、メモリの電力状態と、を制御し、前記メモリの記憶領域は、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当て可能な領域であって、さらに、前記記憶領域は、前記メモリコントローラが独立に電力を制御可能な最小単位の記憶素子であるメモリランクに区分され、前記メモリに供給される電力の状態は、前記メモリランク毎に、前記プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、アクセスに遅延が生じる不活性状態とのいずれかに制御され、前記基本システムソフトウェアは、前記割り当てられる記憶領域が、複数のメモリランクに跨がって割り当てられる断片化を抑制し、前記メモリコントローラを介して、前記割り当てられる記憶領域を含まないメモリランクの電力状態を前記不活性状態にし、前記割り当てに必要な記憶領域が含まれるメモリランクの電力状態を先行して前記活性状態にすることを特徴とする。
本発明の一形態によると、主記憶装置(メモリ)を備える計算機システムにおいて、プロセッサからメモリにアクセスする性能に影響を与えることなく、かつ、確実にメモリに対して、メモリの消費する電力を低減化する制御ができ、メモリが消費する電力を大幅に低減することができる。
(第1の実施の形態)
本発明の第1の実施の形態を図1〜図14を用いて説明する。
図1は、本発明の第1の実施の形態における計算機システムの構成図である。
本発明の第1の実施の形態の計算機システムは、計算機1000〜1001、キーボード1190、マウス1200、ディスプレイ1170及び二次記憶装置1180〜1181を備える。キーボード1190、マウス1200、ディスプレイ1170、及び二次記憶装置1180〜1181は一つ若しくは複数の計算機1001〜1002に接続されている。
計算機1000は、プロセッサ(CPU)1010〜1011、メモリコントローラ1020〜1021、メモリ1030〜1060、システムROM1100、ビデオアダプタ1110、ネットワークインタフェース1120〜1121、二次記憶装置インタフェース1130〜1131、及び入力装置インタフェース1140を備える。プロセッサ(CPU)1010〜1011、メモリコントローラ1020〜1021、メモリ1030〜1060、システムROM1100、ビデオアダプタ1110、ネットワークインタフェース1120〜1121、二次記憶装置インタフェース1130〜1131、及び入力装置インタフェース1140は、システムバス1150によって接続される。なお、メモリコントローラ1020は、チャネル1070によって、メモリ1030〜1040に接続され、チャネル1080によって、メモリ1050〜1060に接続される。また、キーボード1190及びマウス1200は、入力装置インタフェース1140を介して計算機1000に接続される。
CPU1010は、メモリ1030〜1060から各種プログラムをロードし、各種プログラムを実行する。メモリコントローラ1020〜1021は、メモリ1030〜1060を管理する。システムROM1100は、計算機1000が備えるハードウェアの基本的な制御及び情報を提供するファームウェア2000を格納する。メモリ1030〜1060は、システムROM1100又は二次記憶装置1180〜1181に格納された各種プログラムを一次的に格納する。また、メモリ1030〜1060は、CPU1010によって各種プログラムが実行されるために必要なデータ、実行後のデータ及び実行結果を一次的に格納する。
メモリ1030は、独立に電力を制御できる最小単位の記憶素子であるメモリランク1031〜1032に区分される。他のメモリ1040〜1060についても同一である。メモリコントローラ1020〜1021は、少なくとも、メモリ1030〜1060にアドレスを定義するメモリアドレッシング、CPU1010〜1011がメモリ11030〜1060にアクセスするメモリアクセス、及びメモリ1030〜1060の電力の状態を制御するインタフェースを備える。なお、計算機システムの計算機1000の数は、任意であり、一つでも複数でもよい。また、計算機1000に備わる各構成要素の数は任意であり、一つでも複数でもよい。
また、計算機1000が、他の計算機1001とメモリ1030〜1060を共有する計算機システムの場合には、計算機1000と計算機1001は、ノードコントローラ1090、ノード間バス1160を介して、通信速度が速い回線によって接続される。
計算機1000は、入力装置インタフェース1140を介して入力装置であるキーボード1190及びマウス1200と接続される。また、計算機1000は、ビデオアダプタ1110を介してディスプレイ1170と接続される。また、計算機1000は、二次記憶装置インタフェース1130を介して二次記憶装置1180に接続される。
計算機1000は、ネットワークインタフェース1120を介してネットワーク1210に接続され、遠隔地に存在する計算機1220と通信する。
なお、計算機1001は、計算機1000と同一の構成である。
図2は、本発明の第1の実施の形態のファームウェア及び基本システムソフトウェアの構成図である。
ファームウェア2000は、計算機1000〜1001上で実行されるメモリ1030〜1060が消費する電力を低減させるメモリ管理システムに関する。
ファームウェア2000は、システムROM1100に格納される。CPU1010〜1011は、システムROM1100からファームウェア2000をメモリ1030〜1060にロードし、ファームウェア2000を実行する。具体的に、ファームウェア2000は、計算機1000〜1001が備えるハードウェアの基本的な制御及び情報を提供する。例えばファームウェア2000は、ハイパーバイザである。
ファームウェア2000は、ハードウェア構成テーブル2001、メモリ・アドレッシング・モード指定インタフェース2002、メモリ・アドレッシング・モードテーブル2003、電力ランクゾーン−メモリ対応管理テーブル2004、及びメモリ電力モードテーブル2005を備える。
ハードウェア構成テーブル2001には、計算機1000が備えるハードウェアの情報と、ハードウェアの構成に関する情報と、が登録される。メモリ・アドレッシング・モード指定インタフェース2002は、入力装置等からメモリ1030〜1060のメモリ・アドレッシング・モードを指定するインタフェースとして機能するプログラムである。メモリ・アドレッシング・モードテーブル2003には、メモリ1030〜1060にアドレスを割り振るモードが登録される。
電力ランクゾーン−メモリ対応管理テーブル2004には、基本システムソフトウェア2100が、メモリコントローラ1020を介して、電力モードを制御できる連続するメモリアドレスを示す電力ランクゾーンと、電力ランクゾーンに対応するメモリランク1031〜1062とが登録される。メモリ電力モードテーブル2005には、計算機1000〜1001に備わるメモリ1030〜1060の複数の電力モードと各電力モードにおける消費電力及び電力モード切り替え時に発生するCPU1010〜1011からメモリ1030〜1060へのアクセスに生じる遅延時間(レイテンシ)が登録される。
基本システムソフトウェア2100は、計算機1000に接続される二次記憶装置1180又は二記憶装置1181に格納され、二次記憶装置1180又は二記憶装置1181からメモリ1030〜1060にロードされ、CPU1010〜1011によって実行される。具体的に、基本システムソフトウェア2100は、計算機1000〜1001の物理資源(例えば、メモリ1030〜1060)を管理し、及びユーザへのインタフェースを提供するソフトウェアであり、例えばオペレーティングシステムである。
なお、基本システムソフトウェア2100は、二次記憶装置1180に障害が発生した場合に備え、複数の二次記憶装置1180と二次記憶装置1181に格納されてもよい。また、ネットワークインタフェース1120を介してネットワーク1210に接続された遠隔地に存在する計算機1220が、基本システムソフトウェア2100を配布するようにしてもよい。
基本システムソフトウェア2100上では、各種アプリケーションソフトウェアが動作し、サービスを提供する。各ソフトウェア(各種アプリケーションソフトウェア、ファームウェア2000、及び基本システムソフトウェア2100等を含む)へのメモリ1030〜1060資源の割り当ての要求若しくは割り当ての解放、プロセスの生成及びプロセスの終了等の処理が計算機システム1000〜1001の稼働中に実行される。なお、基本システムソフトウェア2100上で動作するアプリケーションソフトウェアの種類及び数は、任意である。
基本システムソフトウェア2100は、メモリ管理プログラム2110、メモリゾーン‐電力ランクゾーン状態管理テーブル2120、メモリページフレーム管理テーブル2130、使用中メモリページフレーム管理リストヘッド2140、未使用メモリページフレーム管理リストヘッド2150、及び電力ランクゾーン‐解放候補メモリページフレーム管理テーブル2160を備える。
さらに、メモリ管理プログラム2110は、メモリ管理初期化プログラム2111、メモリページフレーム割当管理プログラム2112、メモリページフレーム回収管理プログラム2113、メモリランク電力管理プログラム2114、及びメモリ管理制御インタフェース2115を備える。
メモリ管理プログラム2110は、計算機1000〜1001が備えるメモリ1030〜1060資源を制御及び管理し、メモリ1030〜1060資源に関連するインタフェースをユーザへ提供する。
メモリ管理初期化プログラム2111は、メモリ1030〜1060資源の制御及び管理に必要なデータ等の初期化等を実行し、またメモリ1030〜1060資源に関連するインタフェースを提供する準備をする。メモリページフレーム割当管理プログラム2112は、ソフトウェアへのメモリ1030〜1060資源の割り当ての要求に対して、適切なメモリページフレーム(基本システムソフトウェア2100がメモリ1030〜1060を管理する一単位)を割り当てる。
メモリページフレーム回収管理プログラム2113は、メモリ1030〜1060資源のメモリページフレームの割り当ての解放要求に対して、使用中の適切なメモリページフレームを未使用メモリページフレームに変更する。メモリランク電力管理プログラム2114は、メモリランク1031〜1062の電力モードを制御する。メモリ管理制御インタフェース2115は、メモリ1030〜1060を管理するための各パラメータの設定等を変更することを可能とするインタフェースとして機能するプログラムである。
メモリゾーン‐電力ランクゾーン状態管理テーブル2120には、連続するメモリアドレスごとのメモリゾーンと、その連続するメモリアドレスの範囲内に含まれる電力ランクゾーンと、各電力ランクゾーンが消費する電力と、各電力ランクゾーンがメモリを使用する使用状態とが登録される。
メモリページフレーム管理テーブル2130には、メモリページフレームに関する情報を登録される。
使用中メモリページフレーム管理リストヘッド2140は、メモリページフレーム管理テーブル2130の各メモリページフレームであって、各ソフトウェアによって使用されている使用中メモリページフレームによって構成されるLRU(Least Recently Used)リストである使用中メモリページフレーム管理リスト8000の先頭を示す変数である。
未使用メモリページフレーム管理リストヘッド2150は、メモリページフレーム管理テーブル2130の各メモリページフレームであって、各ソフトウェアによって使用されていない未使用メモリページフレームによって構成される未使用メモリページフレーム管理リスト8100の先頭を示す変数である。
電力ランクゾーン‐解放候補メモリページフレーム管理テーブル2160には、電力ランクゾーンと、その電力ランクゾーン内の各ソフトウェアへの割り当てを解放する候補となるメモリページフレーム数と、解放する候補のメモリページフレームを解放した場合に、各ソフトウェアによって使用されている残使用メモリページフレーム数とが、を登録される。
また、メモリ管理プログラム2110は、メモリ1030〜1060の消費する電力を独立に制御できる最小単位である単数又は複数のメモリランク1031〜1062をまとめた電力ランクゾーン単位でメモリ1030〜1060の電力を制御する。
図3は、本発明の第1の実施の形態のメモリ・アドレッシング・モード・テーブル2003の構成図である。
メモリ・アドレッシング・モード・テーブル2003は、ファームウェア2000によって管理される。
メモリ・アドレッシング・モード・テーブル2003は、アドレッシング・モード3000とアドレッシング方法3100とを含む。
アドレッシング・モード3000は、アドレッシング方法の一意な識別子である。管理者は、アドレッシングモード3000によって、メモリ1030〜1060にメモリアドレスを割り振る方法を決定する。アドレッシング方法3100は、各アドレッシング・モードに対応するメモリアドレスの割り振る方法を示す。ここで、メモリアドレスとは、CPU1010〜1011がメモリ1030〜1060にアクセスする場所を示すための一意な識別子である。
次に、アドレッシング方法3100に登録される具体的なメモリアドレスを割り振る方法について説明する。
通常モード3200では、メモリコントローラ1020〜1021は、チャネル0(1070)によってメモリコントローラ1020に接続されたメモリ1030にメモリアドレスを割り振り、その後チャネル0(1070)に接続されたメモリ1040にメモリアドレスを割り振る。次に、チャネル1のメモリ1050から順にチャネルnのメモリ1040にメモリアドレスを割り振る。
フル・インタリーブモード3300では、メモリコントローラ1020〜1021は、全チャネル0〜n(1070〜1080)に対して、予め定められたインタリーブ・サイズごとにチャネル0(1070)に接続されたメモリ(1030及び1040)からチャネルn(1080)に接続されたメモリ(1050及び1060)に交互にメモリアドレスを割り振る。「交互に」とは、例えば、ある番号のメモリアドレスがメモリ1030に割り振られ、次の番号のメモリアドレスがメモリ1040に割り振られることを意味する。以下の電力制御モードにおいても同じである。
mチャネル・インタリーブモード3400では、メモリコントローラ1020〜1021は、m個のチャネルを一つの単位として,予め定められたインターリーブ・サイズごとにチャネル0(1070)に接続されたメモリ(1030及び1040)からチャネルm1に接続されたメモリと交互にメモリアドレスを割り振り、これをチャネルnまで繰り返す。
フル・インタリーブ・電力制御モード3500では、メモリコントローラ1020〜1021は、全チャネル0〜n(1070〜1080)に対して、メモリランク1031のサイズごとにチャネル0(1070)に接続されたメモリ(1030及び1040)からチャネルn(1080)に接続されたメモリ(1050及び1060)と交互にメモリアドレスを割り振る。
mチャネル・インタリーブ・電力制御モード3600では、メモリコントローラ1020〜1021は、m個のチャネルを一つの単位として、メモリランク1031のサイズごとにチャネル0(1070)に接続されたメモリ(1030及び1040)からチャネルm−1に接続されたメモリと交互にメモリアドレスを割り振り、これをチャネルnまで繰り返す。
なお、ここで、インタリーブとは、チャネルに接続されたメモリ1030〜1060が交互にメモリアドレスを割り振られることによって、複数のチャネル1070〜1080に跨って、メモリアドレスが連続に割り振られることをいう。これによって、CPU1010〜1011が連続するメモリアドレスへのアクセスを高速化できる。
また、インタリーブ・サイズとは、一つのチャネルに割り振るメモリアドレスの大きさのことをいう。メモリコントローラ1020〜1021は、インタリーブ・サイズごとにインタリーブするようにメモリアドレスを割り振る。
通常、インタリーブ・サイズは、CPU1010〜1011のキャッシュライン・サイズである。キャッシュ・ラインサイズであるインタリーブ・サイズは、メモリページフレームのサイズより小さい。このため、メモリアドレスは、複数のチャネル1070〜1080に跨るように割り振られているので、一つのメモリページフレームが複数のメモリアドレスに跨る。従って、一つのメモリページフレームが複数のメモリランク1031〜1062に跨るので、メモリ1030〜1060の電力の制御に関して効率的でない。
インタリーブ・サイズごとにメモリアドレスを割り振るフル・インタリーブモード3300及びmチャネル・インタリーブモード3400は、メモリの低電力化には適当ではない。
また、フル・インタリーブ・電力制御モード3500及びmチャネル・インタリーブ・電力制御モード3600のインタリーブ・サイズをメモリランク1031のサイズと同等に設定する。メモリランク1031のランクサイズは、メモリページフレームのサイズよりも大きいので、一つ又は複数のメモリページプレームは、一つのメモリランク1031内に含まれるので、メモリの効率的な電力制御ができる。また、通常モード3200は、メモリランク1031から順にメモリアドレスを割り当てる、すなわちメモリランクごとにメモリアドレスを割り当てることによって、メモリの効率的な電力制御ができる。
アドレッシング・モードテーブル2003のアドレッシング・モード3000は、通常、ファームウェア2000によって通常モード3200に予め設定されている。
また、管理者が、アドレッシング・モード3000を選択することもできる。具体的には、計算機1000〜1001を起動し、ファームウェア2000が実行されると、管理者は、計算機1000〜1001のキーボード1190等の入力装置を用いて、メモリ・アドレッシング・モード指定インタフェース2002を介して、アドレッシング・モード3000を選択できる。
また、管理者が、アドレッシング・モード・テーブル2003の設定の内容(インタリーブ・サイズ及びインタリーブのチャネルの数等)を変更することもできる、
なお、アドレッシング・モード3000の選択及びアドレッシング・モード・テーブル2003の内容は、他の計算機1220からネットワーク1210を通じて、メモリ・アドレッシング・モード指定インタフェース2002を介して設定してもよい。
図4は、本発明の第1の実施の形態の電力ランク‐メモリランク対応管理テーブル2004の構成図である。
電力ランク‐メモリランク対応管理テーブル2004は、ファームウェア2000によって管理される。
電力ランク‐メモリランク対応管理テーブル2004は、電力ランクゾーン4000と、メモリアドレス4100と、メモリランク4200とを含む。
電力ランクゾーン4000は、連続するメモリアドレスの領域を構成するメモリランク1031〜1062の数が最小となるように構成され、電力を制御可能な単位である。
メモリアドレス4100は、電力ランクゾーン4000に属する連続するメモリアドレスの領域のメモリアドレスを示す。メモリランク4200は、電力ランクゾーン4000に属するメモリランク1031〜1062を示す。
例えば、電力ランクゾーン0(PR)4300は、メモリアドレスが0〜X0,0の範囲の連続するメモリアドレスの領域、及びメモリ(1030)のランク0(1031)によって構成されることを示す。
電力ランク‐メモリランク対応管理テーブル2004は、基本システムソフトウェア2100から参照できるように、基本システムソフトウェア2100が実行されると、例えば、メモリ1030〜1060上に配置される。
電力ランク‐メモリランク対応管理テーブル2004の内容は、メモリ・アドレッシング・モード・テーブル2003に基づいて、ファームウェア2000によって、予め設定される。
なお、メモリ・アドレッシング・モード・テーブル2003の内容が、管理者によって変更されると、メモリ1030〜1060に割り振られるメモリアドレスが変更される。ファームウェア2000は、その変更に応じて、連続するメモリアドレスの領域を構成する最小のメモリランクを求めて電力ランク‐メモリランク対応管理テーブル2004を変更する。ファームウェア2000が、電力ランク‐メモリランク対応管理テーブル2004を変更する場合に、計算機1000〜1001のチャネル1070〜1080、メモリ1030〜1060、及びメモリランク1031〜1062の情報が必要な場合には、これらの情報が登録されているハードウェア構成テーブル2001を参照する。
なお、基本システムソフトウェア2100が、メモリ・アドレッシング・モード・テーブル2003及びハードウェア構成テーブル2001を参照して、電力ランク‐メモリランク対応管理テーブル2004を作成、追加、及び変更するようにしてもよい。また、電力ランク‐メモリランク対応管理テーブル2004は、メモリ・アドレッシング・モード・テーブル2003の各アドレッシングモード(3200〜3600)に対応して、アドレッシングモード(3200〜3600)ごとに作成されてもよい。
図5は、本発明の第1の実施の形態のメモリ電力モードテーブル2005の構成図である。
メモリ電力モードテーブル2005は、ファームウェア2000によって管理される。メモリ電力モードテーブル2005は、電力モード5000と、消費電力5100と、モード切替レイテンシ5200とを含む。
電力モード5000には、メモリ1030〜1060の各メモリランク1031〜1062が遷移できるメモリランク1031〜1060の電力の状態が登録される。消費電力5100には、メモリランク1031〜1062の各電力状態で、メモリランク1031〜1060によって消費される電力が登録される。モード切替レイテンシ5200には、メモリランク1031〜1062が電力モードを他の電力モードへ切り替える際に生じる遅延の時間(レイテンシ)が登録される。
例えば、図5に示すメモリ電力モードテーブル2005には、3つの電力モード(5300〜5500)が登録されている。電力モード0(Stanby)5300の状態の場合には、メモリランクが時間当たりに消費する消費電力はXである。また、電力モード0(Stanby)5300のメモリランクが電力モード0へ遷移する場合には、現在の電力モードであるため、レイテンシは生じない。また、電力モード0(Stanby)5300のメモリランクが電力モード1へ遷移する場合に生じるレイテンシはY0,1であり、電力モード2へ遷移する場合に生じるレイテンシはY0,2である。
なお、CPU1010〜1011は、電力モード0(Stanby)5300のメモリランク1031〜1062にアクセスできる。また、CPU1010〜1011は、電力モード1(PowerDown)5400及び電力モード2(Self‐refresh)5500のメモリランク1031〜1062には、遅延を生じさせることなくアクセスできない。すなわち、CPU1010〜1011がメモリランク1031〜1062に読み書きする場合には、メモリランクの電力モード5000は、電力モード0(Stanby)5300の状態になった後にアクセスする。
また、メモリランク1031〜1062によって消費される消費電力5100は、電力モード2(Self‐refresh)5500のXが最も低く、次いで、電力モード1(PowerDown)が低く、電力モード0(Stanby)5300のXが最も高い。電力モード0(Stanby)5300を活性状態といい、電力モード1(PowerDown)5400及び電力モード2(Self‐refresh)5500を不活性状態という。
メモリ電力モードテーブル2005の内容は、計算機1000〜1001のメモリ1030〜1060に基づいて、ファームウェア2000によって、予め設定される。
図6は、本発明の第1の実施の形態のメモリゾーン‐電力ランクゾーン状態管理テーブル2120の構成図である。
メモリゾーン‐電力ランクゾーン状態管理テーブル2120は、基本ソフトウェア2100によって管理される。
メモリゾーン‐電力ランクゾーン状態管理テーブル2120は、メモリゾーン6000と、アドレス範囲6010と、電力ランクゾーン6020と、電力ランクゾーンサイズ6030と、電力状態6040と、未使用メモリページフレーム数6050と、使用メモリページフレーム数1階時間微分6060と、使用メモリページフレーム数2階時間微分6070と、を含む。
メモリゾーン6000は、基本システムソフトウェア2100がメモリアドレスに応じて管理する領域を示す。アドレス範囲6010には、各メモリゾーン6000に含まれるメモリアドレスが登録される。電力ランクゾーン6020には、アドレス範囲6010に含まれる電力ランクゾーンが登録される。電力ランクゾーンサイズ6030には、各電力ランクゾーン6020の容量が登録される。電力状態6040には、各電力ランクゾーン6020に属するメモリランク1031〜1062の電力状態が登録される。未使用メモリページフレーム数6050には、各電力ランクゾーン6020に属するメモリランク1031〜1062のメモリページフレームのうち、各ソフトウェアによって使用されていない未使用メモリページフレームの数が登録される。使用メモリページフレーム数1階時間微分6060には、電力ランクゾーン6020に属するメモリランク1031〜1062のメモリページフレームのうち、各ソフトウェアによって使用されている使用メモリページフレーム数の時間で1階微分した値が登録される。すなわち、使用メモリページフレーム数を1階時間微分値は、メモリページフレームが使用される速度を示す。使用メモリページフレーム数2階時間微分6070には、電力ランクゾーン6020に属するメモリランク1031〜1062の使用メモリページフレーム数を時間で2階微分した値が登録される。すなわち、使用メモリページフレーム数の2階時間微分値は、メモリページフレームが使用される加速度を示す。
例えば、図6に示すメモリゾーン‐電力ランクゾーン状態管理テーブル2120は、3つのメモリゾーン(6080、6090、及び6100)と、各メモリゾーン内でそれぞれ電力ランクゾーン(6081〜6082、6091〜6092、及び6101〜6102)とを管理する。メモリゾーンZone0(6080)はアドレス範囲0〜Xのメモリアドレスを含み、Zone0(6080)は、電力ランクゾーンPR〜PRx0(6081〜6082)を含む。
電力ランクゾーンPR(6081)は、容量がRSであり、電力ランクゾーンPRの電力の状態はPSであり、電力ランクゾーンPR(6081)内の各ソフトウェアによって使用されていないメモリページフレーム数がSuであり、各ソフトウェアによって使用されるメモリページフレーム数の1階時間微分値がSu'であり、各ソフトウェアによって使用されるメモリページフレーム数の2階時間微分値がSu''であることを示す。
なお、電力ランクゾーン6020には、メモリゾーン6000のアドレス範囲6010のメモリアドレスの範囲内にあるメモリアドレス4100の電力ランクゾーン4000が登録される。
メモリゾーン‐電力ランクゾーン状態管理テーブル2120の内容は、計算機1000〜1001の起動時に、メモリ管理初期化プログラム2111によって設定される。また、計算機1000〜1001が動作中、メモリ管理プログラム2110によって更新される。
図7は、本発明の第1の実施の形態のメモリページフレーム管理テーブル2130の構成図である。
メモリページフレーム管理テーブル2130は、基本システムソフトウェア2100によって管理される。メモリページフレーム管理テーブル2130は、メモリページフレーム(7000〜7200)を管理するテーブルである。
メモリページフレーム管理テーブル2130は、少なくとも、使用中メモリページ管理リストヘッド2140及び未使用メモリページ管理リストヘッド2150を先頭とするリスト構造に接続するためのlistデータ変数7010を含む。
メモリページフレーム管理テーブル2130には、計算機1000〜1001のメモリ1030〜1060全体の容量を一つのメモリページフレームの容量で割った数のメモリページフレーム(7000〜7200)が含まれる。基本システムソフトウェア2100は、メモリコントローラ1020を介して、メモリページフレーム単位で、ソフトウェアにメモリ1030〜1060資源の割り当て等を実行する。
なお、使用中メモリページフレームとは、各ソフトウェアに割り当てられていて、各ソフトウェアに使用されているメモリページフレームをいう。一方、未使用メモリページフレームとは、各ソフトウェアによって使用されていないメモリページフレームをいう。
メモリページフレーム管理テーブル2130は、計算機1000〜1001が起動されると、メモリ管理初期化プログラム2111によって設定される。また、メモリページフレーム管理テーブル2130は、計算機1000〜1001の動作中に、メモリ管理プログラム2110によって更新される。
図8は、本発明の第1の実施の形態の使用中メモリページフレーム管理リスト8000、使用中メモリページフレーム管理リストヘッド2140、未使用メモリページフレーム管理リスト8100、及び未使用メモリページフレーム管理リストヘッド2150の構成図である。
使用中メモリページフレーム管理リスト8000は、LRU(Least Recently Used)リストである。使用中メモリページフレーム管理リスト8000は、先頭から使用された順にメモリページフレームのlistデータ変数7010を接続して構成される。すなわち、使用された順にメモリページフレームのListデータ変数7010は関連付けられる。先頭のメモリページフレームは、最近使用されたメモリページフレームである。
使用中メモリページフレーム管理リストヘッド2140は、基本システムソフトウェア2100によって管理される。使用中メモリページフレーム管理リストヘッド2140は、LRUリスト8000の先頭を示す先頭リスト変数である。
基本システムソフトウェア2100は、CPU1010〜1011からの各ソフトウェアに対するメモリ1030〜1060の割り当ての要求に対して、未使用メモリページフレーム管理リスト8100を参照して、適切なメモリページフレームを割り当てる。そして、基本システムソフトウェア2100は、割り当てたメモリページフレームのメモリページフレーム管理テーブル7000〜7200を使用中メモリページフレーム管理リスト8000の先頭に接続する。
また、基本システムソフトウェア2100は、CPU1010〜1011からの各ソフトウェアへのメモリ1030〜1060の割り当てを解放する要求に対して、使用中メモリページフレーム管理リスト8000から適切なメモリページフレームを選択し、メモリページフレームを解放する。
未使用メモリページフレームリスト8100は、未使用メモリページフレームを接続することによって、未使用メモリページフレームを管理する。未使用メモリページフレーム管理リストヘッド2150は、基本システムソフトウェア2100によって管理される。未使用メモリページフレーム管理リストヘッド2150は、未使用メモリページフレームリスト8100の先頭リスト変数である。
基本システムソフトウェア2100は、CPU1010〜1011からの各ソフトウェアへのメモリ1030〜1060の割り当てを解放する要求に対して、通常、使用メモリページフレーム管理リスト8000の最後尾のメモリページフレームを解放する。そして、基本システムソフトウェア2100は、解放したメモリページフレームのメモリページフレーム管理テーブル7000〜7200を未使用メモリページフレーム管理リスト8100に接続する。
また、基本システムソフトウェア2100は、メモリ1030〜1060の割り当ての要求に対して、未使用メモリページフレーム管理リスト8100から適切なメモリページフレームを選択し、メモリページを割り当てる。
使用中メモリページフレーム管理リスト8000及び未使用メモリページフレーム管理リスト8100は、計算機1000〜1001が起動されると、メモリ管理初期化プログラム2111によって設定される。また、計算機1000〜1001の動作中には、メモリ管理プログラム2120によって更新される。
なお、本実施の形態では、使用中メモリページフレーム管理リスト8000及び未使用メモリページフレーム管理リスト8100は単数のリスト構成を説明したが、使用中メモリページフレーム管理リスト8000及び未使用メモリページフレーム管理リスト8100は複数のリスト構成としてもよい。複数のリスト構成とすることによって、よりきめ細かに管理できる。
図9は、本発明の実施の形態の電力ランクゾーン‐解放候補ページテーブル2160の構成図である。
電力ランクゾーン‐解放候補ページテーブル2160は、基本システムソフトウェア2100によって管理される。電力ランクゾーン‐解放候補ページテーブル2160は、電力ランクゾーン9000と、解放候補メモリページフレーム数9100と、残使用メモリページフレーム数9200とを含む。
電力ランクゾーン9000は、電力ランクゾーンを示す。解放候補メモリページフレーム数9100には、電力ランクゾーンに含まれるメモリページフレームのうち、解放する候補となるメモリページフレームの数が登録される。残使用メモリページフレーム数9200には、電力ランクゾーンに属するメモリページフレーム数から解放候補メモリページフレーム数9100と、各ソフトウェアによって使用されていない未使用メモリページフレーム数と、の差分値が登録される。すなわち、残使用メモリページフレーム数9200には、電力ランクゾーン毎に、解放候補対象メモリページフレームを解放した場合に、各ソフトウェアによって使用されているメモリページフレームの数が登録される。
例えば、図9に示す電力ランクゾーン‐解放候補ページテーブル2160は、複数の電力ランクゾーン(9300〜9500)を管理する。電力ランクゾーンPR(9300)の解放候補ページフレーム数はP、残使用ページフレーム数はDである。
電力ランクゾーン‐解放候補ページテーブル2160の内容は、メモリページ回収管理プログラム2113によって作成及び更新される。
図10は、本発明の第1の実施の形態のメモリ管理初期化プログラム2111のフローチャートである。
メモリ管理初期化プログラム2111は、基本システムソフトウェア2100の種々のテーブルを初期設定するプログラムである。
まず、メモリ初期化プログラム2111は、計算機1000〜1001が起動されると、CPU1010〜1011によって、実行される(ステップ10000)。
メモリ管理初期化プログラム2111は、メモリゾーン‐電力ランクゾーン状態管理テーブル2120においてメモリアドレス範囲6010ごとにメモリゾーン6000を設定する(10001)。例えば、メモリゾーン6000の構成としては、DMA(Direct Memory Access)(16MB)、Normal(4GB)、High(4GB以上)の3つのメモリゾーンに区分するメモリゾーン構成がある。図6に示すメモリゾーン‐電力ランクゾーン状態管理テーブル2120は、Zone0がDMAに対応し、Zone1がNormalに対応し、Zone2がHighに対応する。
また、計算機1000〜1001がNumaシステムを構成する場合のメモリゾーン6000の構成としては、計算機1000〜1001ごとにメモリゾーンを区分する構成がある。メモリ初期化プログラム2111は、メモリ1030〜1060の構成及び他のハードウェアの構成が必要な場合には、例えば、ファームウェア2000が提供するハードウェア構成テーブル2001及び電力ランクゾーン‐メモリ対応管理テーブル2004を参照する。
次に、メモリ初期化プログラム2111は、ステップ10001で設定したメモリゾーン6080〜6100について、メモリゾーン‐電力ランクゾーン状態管理テーブル2120を初期化する処理(ステップ10003〜ステップ10008)を繰り返す(ステップ10002)。
メモリ初期化プログラム2111は、電力ランクゾーン‐メモリ対応管理テーブル2004を参照し、ステップ10001で登録されたメモリゾーン6000のアドレス範囲6010に含まれる電力ランクゾーン4000をメモリゾーン‐電力ランクゾーン管理テーブル2120の電力ランクゾーン6020に登録する(ステップ10003)。例えば、電力ランクゾーンPRxoがメモリゾーン0及びメモリゾーン1に跨る場合、すなわち、電力ランクゾーンPRxoのメモリアドレスの領域がZone0のメモリアドレスの領域及びZone1のメモリアドレスの領域の両方に含まれる場合には、メモリ初期化プログラム2111は、跨る複数のメモリゾーン(Zone0及びZone1)に電力ランクゾーンPRxo(6082、6091)を登録する。
また、ステップ10003と同様に、メモリ初期化プログラム2111は、電力ランクゾーン‐メモリ対応管理テーブル2004を参照し、メモリゾーン6000のアドレス範囲6010に含まれる電力ランクゾーン4000の容量をメモリゾーン‐電力ランクゾーン管理テーブル2120の電力ランクサイズ6030に登録する(ステップ10004)。
例えば、電力ランクゾーンPRxoがZone0及びZone1に跨る場合には、メモリ初期化プログラム2111は、Zone0の電力ランクゾーンサイズ6030には、Zone0のメモリアドレスの領域に含まれる電力ランクゾーンPRx0のメモリアドレスの領域分の電力ランクゾーンPRxoのサイズRSx0−0(6082)を登録する。また、メモリ初期化プログラム2111は、Zone1の電力ゾーンランクサイズ6030には、Zone1のメモリアドレスの領域に含まれる電力ランクゾーンPRx0のメモリアドレスの領域分の電力ランクゾーンPRx0のサイズRSx0−1(6091)を登録する。すなわち電力ランクゾーンが複数のメモリゾーンに跨る場合には、メモリ初期化プログラム2111は、電力ランクゾーンのサイズは、メモリゾーン内に属するサイズ分を登録する。
次に、メモリ初期化プログラム2111は、各電力ランクゾーンごと(6081〜6082、6091〜6092、6101〜6102)に、各電力ランクゾーンの電力モードの状態を電力状態6040を登録する(ステップ10005)。例えば、メモリ初期化プログラム2111は、メモリコントローラ1020〜1021を介して、直接メモリ1031〜メモリランク1062を参照して、メモリランク1031〜1062の電力状態を登録する。また、メモリ初期化プログラム2111がハードウェア構成テーブル2001を参照して、メモリランク1031〜1062の電力状態を登録してもよい。
ステップ10005の後、メモリ初期化プログラム2111は、各電力ランクゾーンごと(6081〜6082、6091〜6092、6101〜6102)に、各ソフトウェアによって使用されていないメモリページフレームの数を未使用メモリページフレーム数6050に登録する(ステップ10006)。メモリ管理を初期化した際、各電力ランクゾーンの未使用のメモリページフレームの数は、例えば、各電力ランクゾーン6020の電力ランクゾーンサイズ6030に含まれるメモリページフレーム数と、基本システムソフトウェア2100を初期化する処理及びコード/データ等によって使用される各電力ランクゾーン6020のメモリページフレーム数との差分値を計算して算出される。
ステップ10006の後、メモリ初期化プログラム2111は、電力ランクゾーン6020に含まれる全てのメモリページフレームが各ソフトウェアによって使用されていない全メモリランク1031〜1062の電力状態を不活性状態に設定し、電力状態6040を更新する(ステップ10007)。メモリランク1031〜1062の電力状態の切り替えは、例えば、メモリコントローラ1020〜1021を介して実行される。
ステップ10007の後、メモリ初期化プログラム2111は、各電力ランクゾーンごと(6081〜6082、6091〜6092、6101〜6102)の各ソフトウェアによって使用されているメモリページフレームの数の1階時間微分値6060及び2階微分値6070を0で初期化する(ステップ10008)。
ステップ10008の後、メモリ管理初期化プログラム2111は、各メモリゾーン6080〜6100についてステップ10003〜ステップ10008を繰り返し(ステップ10009)、全てのメモリゾーン6000についてステップ10003〜ステップ10008を終了すると、メモリページフレーム管理テーブル2130を作成及び初期化する(ステップ10010)。
ステップ10010の後、メモリ管理初期化プログラム2111は、使用中メモリページフレーム管理リストヘッド2140を初期化し、使用中のメモリページフレームを使用中メモリページフレーム管理リスト8000に登録する(ステップ10011)。なお、ファームウェア2000及び基本システムソフトウェア2100等によって使用されている使用中メモリページフレームのうち、メモリ1030〜1060資源の割り当ての解放及び回収の対象にしないメモリページフレームは使用中メモリページフレーム管理リスト8000に登録しなくてもよい。
さらに、メモリ初期化プログラム2111は、未使用メモリページ管理リストヘッド2150を初期化し、未使用メモリページフレーム管理リスト8100を作成する(10012)。
ステップ10012の後、メモリ管理初期化プログラム2111を終了する(10013)。
図11は、本発明の第1の実施の形態のメモリページフレーム割当管理プログラム2112のフローチャートである。
例えば、メモリ管理プログラム2110がメモリページフレームを割り当てるメモリゾーン6000とメモリページフレーム数とを指定して、メモリページフレーム割当管理プログラム2112は実行される(ステップ11000)。なお、指定されるメモリゾーン6080〜6100は一つでも複数でもよい。複数のメモリゾーンを指定する場合には、割り当ての優先度が指定されていれば、メモリゾーン6080〜6100の優先度の順とする。
まず、メモリページフレーム割当管理プログラム2112は、割り当てるメモリページフレームを検索する対象となる電力モード(検索電力モード)を最大電力モード(PS電力モード0(Stanby)5300)、に設定する(ステップ11001)。すなわち、メモリページフレーム割当プログラム2112は、メモリゾーン‐電力ランクゾーン状態管理テーブル2120の電力状態6040が活性状態である電力ランクゾーンのメモリページフレームを検索する対象とする。
次に、メモリページフレーム割当管理プログラム2112は、指定されたメモリゾーン6080〜6100に各ソフトウェアによって使用されていないメモリページフレームがあるか否かを判定する(ステップ11002)。具体的には、メモリゾーン‐電力ランクゾーン状態管理テーブル2120の未使用メモリページフレーム数6050を参照して、判定する。
メモリページフレーム割当管理プログラム2112は、未使用のメモリページフレームがあると判定した場合には、ステップ11003に進み、未使用のメモリページフレームがないと判定した場合には、ステップ11016に進む。
メモリ割当管理プログラム2112は、エラーを返し、異常終了する(ステップ11016)。
まず、メモリページフレーム割当管理プログラム2112は、未使用のメモリページフレームがあると判定した場合には、フック関数が登録されているかどうか判定する(ステップ11003)。フック関数に登録されるプログラムは、任意のプログラムである。なお、本実施の形態では、フック関数には、メモリランク電源管理プログラム2114が登録されている。
フック関数が登録されている場合には、そのフック関数が実行される(ステップ11004)。フック関数が登録されていない場合には、ステップ11005に進む。
ステップ11004の後、及びフック関数が登録されていないと判定された場合には(11003)、メモリ管理プログラム2110等によって最初に指定されたメモリゾーン(メモリ割り当てに関して最高優先度のメモリゾーン)6000を、各ソフトウェアに割り当てるメモリページフレームを検索する対象のメモリゾーン(検索メモリゾーン)に設定する(ステップ11005)。
ステップ11005の後、メモリ割当管理プログラム2112は、未使用メモリページフレーム数6050を参照して、検索メモリゾーンに各ソフトウェアによって使用されていないメモリページフレームが存在するか否かを判定する(ステップ11006)。
検索メモリゾーンに未使用のメモリページフレームが存在する場合には、ステップ11007に進み、検索メモリゾーンに未使用のメモリページフレームが存在しない場合には、ステップ11011に進む。
検索メモリゾーンに未使用メモリページフレームが存在する場合には、未使用メモリページフレーム数6050を参照して、検索メモリゾーンに検索電力モード(活性状態)の電力ランクゾーン6020に未使用メモリページフレームが存在するか否かを判定する(ステップ11007)。
検索電力モードの電力ランクゾーンに未使用のメモリページフレームが存在すると判定した場合には、ステップ11008に進み、検索電力モードの電力ランクゾーンに未使用のメモリページフレームが存在しないと判定した場合には、ステップ11011に進む。
検索電力モードの電力ランクゾーンに未使用のメモリページフレームが存在する場合には、メモリ割当管理プログラム2112は、未使用メモリページフレーム管理リスト8100を参照し、検索電力モードの検索電力ランクゾーン6020に属する一つのメモリページフレームを割り当てる対象のメモリページフレームとする(ステップ11008)。
ステップ11008の後、メモリ割当管理プログラム2112は、割り当てる対象のメモリページフレーム管理テーブル2130のメモリページフレーム7000〜7200に関して、使用中メモリページフレーム管理リスト8000及び未使用メモリページフレーム管理リスト8100を更新する(ステップ11009)。
ステップ11009の後、メモリ割当管理プログラム2112は、指定された必要なメモリページフレーム数が割り当てられたか否かを判定する(ステップ11010)。
指定されたメモリページフレーム数が割り当てられたと判定された場合には、メモリページフレーム管理プログラム2112を終了する(ステップ11015)。
指定されたメモリページフレーム数が割り当てられていない場合には、ステップ11007に戻る。
ステップ11006で検索メモリゾーンに未使用のメモリページフレームが存在しないと判定した場合、又はステップ11007で検索電力モードの電力ランクゾーン6020に未使用のメモリページフレームが存在しないと判定した場合には、メモリ割当管理プログラム2112は、指定されたメモリゾーンの次の優先度のメモリゾーン6080〜6100が存在するか否かを判定する(ステップ11011)。
指定された次の優先度のメモリゾーン6080〜6100が存在する場合には、メモリ割当管理プログラム2112は、検索メモリゾーンを次の優先度のメモリゾーンに設定し(ステップ11012)、ステップ11006に戻る。
ステップ11011で、指定された次の優先度のメモリゾーンが存在しないと判定した場合には、次の優先度の検索電力モードが存在するか否かを判定する(ステップ11013)。
次の優先度の検索電力モードが存在すると判定した場合には、検索電力モードを次の優先度の電力モードに設定し(ステップ11014)、ステップ11002に戻る。次の優先度の検索電力モードが存在しないと判定した場合には、メモリ割当管理プログラム2112は、エラーを返し、異常終了する(ステップ11016)。
図12Aは、本発明の第1の実施形態のメモリランク電源管理プログラム2114のフローチャートである。
メモリランク電源管理プログラム2114は、例えば、周期的に実行されるように、メモリ管理初期化プログラム2111によって設定される。周期実行時間は、デフォルトの値が設定されているが、管理者は、計算機1000〜1001のキーボード1190等の入力装置を用いて、メモリ管理制御インタフェース2115を介して周期実行時間を変更できる。なお、管理者は、遠隔地にある計算機1600からネットワーク1500を通じて、メモリ管理制御インタフェース2115を介して周期実行時間を設定することもできる。また、メモリランク電源管理プログラム2114は、周期的に実行されるのではなく、直接呼び出されるようにもよい。例えば、メモリランク電源管理プログラム2114が直接呼び出される場合には、メモリ電源管理プログラム2114がメモリページフレーム割当管理プログラム2112のフック関数として登録されていて、フック関数として実行される場合(ステップ11004)がある。
メモリランク電源管理プログラム2114が実行されると(ステップ12000)、初めに、メモリランク電源管理プログラム2114は、各電力ランクゾーン6020について以下で述べるステップ12002〜12005を繰り返す(ステップ12001)。
まず、メモリランク電源管理プログラム2114は、メモリゾーン‐電力ランクゾーン状態管理テーブル2120の未使用のメモリページフレーム数6050を更新し、前回メモリランク電源管理プログラム2114が実行された時の使用中のメモリページフレーム数と今回メモリランク電源管理プログラム2114が実行された時のメモリ使用中のメモリページフレーム数との差分値を計算する(ステップ12002)。この差分値は、前回メモリランク電源管理プログラム2114が実行された時からメモリ電源管理プログラム2114が実行される時の間に、各ソフトウェアによって使用されたメモリページフレームの数を示す。なお、未使用メモリページフレーム数6050は、未使用メモリページフレーム管理リスト8100を参照して更新される。
ステップ12002の後、メモリランク電源管理プログラム2114は、メモリゾーン‐電力ランクゾーン状態管理テーブル2120の前回更新時刻と現時刻との差分値、及びステップ12002で計算した差分値から、前回のメモリランク電源管理プログラム2114が実行された時と今回のメモリランク電源管理プログラム2114が実行された間に使用されたメモリページフレーム数を時間で1階微分した値と2階微分した値を計算し、使用メモリページフレーム数1階時間微分6060と使用メモリページフレーム数2階時間微分6070とを更新する(ステップ12003)。
各ソフトウェアによって使用されているメモリページフレームが無い場合には、メモリランク電源管理プログラム2114は、電力ランクゾーン‐メモリ対応管理テーブル2120から選択されたその電力ランクゾーン(6081〜6082、6091〜6092、6101〜6102)に属するメモリランク1031〜1062の電力モード5000を不活性状態に変更する(ステップ12004)。
ステップ12004でメモリランク1031〜1062の電力モード5000が変更された場合には、メモリランク電源管理プログラム2114は、メモリゾーン‐電力ランクゾーン状態管理テーブル2120の電力ランクゾーン6020の電力状態6040を更新する(ステップ12005)。メモリランク電源管理プログラム2114は、例えば、ハードウェア構成テーブル2001を参照して、メモリランク1031〜1062の電力モードの情報を取得する。または、メモリ電源管理プログラム2114は、メモリコントローラ1020〜1021を介して直接メモリランク1031〜1062の電力モードの情報を取得してもよい。
なお、ステップ12004において、メモリランク電源管理プログラム2114が、メモリコントローラ1020〜1021を介して、電力ランクゾーン6020を不活性状態に変更した場合に、メモリランク電源管理プログラム2114が、その電力ランクゾーン6020の電力状態6040を更新するようにしてもよい。
ステップ12005の後、メモリランク電源管理プログラム2114は、各電力ランクゾーン(6081〜6082、6091〜6092、及び6101〜6102)についてステップ12002〜12005を繰り返し(ステップ12006)、全ての電力ランクゾーン6020について終了すると、メモリランク電源管理プログラム2114が周期的に実行された場合(ステップ12007)と直接呼び出された場合(ステップ12008)で処理が分岐する。
次に図12Bを用いて、メモリランク電源管理プログラム2114が周期的に実行された場合のメモリランク電源管理プログラム2114の処理について説明する。図12Cを用いて、メモリランク電源管理プログラム2114が直接呼び出された場合のメモリランク電源管理プログラム2114の処理について説明する。
図12Bは、本発明の第1の実施の形態のメモリランク電源管理プログラム2114が周期的に実行される場合のメモリランク電源管理プログラム2114のフローチャートである。
メモリランク電源管理プログラム2114が周期的に実行された場合(ステップ12007)、メモリランク電源管理プログラム2114は、各メモリゾーン6080〜6100について、電力ランクゾーン先行活性処理1(ステップ12010)、又は電力ランクゾーン先行活性処理2(ステップ12011)を繰り返す(ステップ12009)。全てのメモリゾーンについて、ステップ12010又はステップ12011が実行されると(ステップ12012)、メモリランク電源管理プログラム2114は終了する(ステップ12013)。
なお、電力ランクゾーンの活性処理は、予め、電力ランクゾーン先行活性処理1(ステップ12010)を実行するように設定されている。なお、管理者は、計算機1000が備えるキーボード1190等の入力装置を用いて、メモリ管理制御インタフェース2115から電力ランクゾーンの活性処理で、電力ランクゾーン先行活性処理2(ステップ12011)を実行するように設定を変更できる。また、遠隔地にある計算機1600からネットワーク1500を通じて、メモリ管理制御インタフェース2115から電力ランクゾーンの活性処理で、電力ランクゾーン先行活性処理2(ステップ12011)を実行するよう設定を変更できるようにしてもよい。
なお、電力ランクゾーン先行活性処理1は、図13Aにて説明する。電力ランクゾーン先行活性処理2は、図13Bにて説明する。
図12Cは、本発明の第1の実施の形態のメモリランク電源管理プログラム2114が直接呼び出され、実行される場合のメモリ電源管理プログラム2114のフローチャートである。
メモリ電源管理プログラム2114が直接呼び出される場合とは、例えば、メモリランク電源管理プログラム2114が、メモリページフレーム割当管理プログラム2112のフック関数に登録されていて(ステップ11003)、フック関数として実行される場合がある(ステップ11004)。
まず、メモリランク電源管理プログラム2114は、ステップ11000でメモリ管理プログラム2110等によって指定されたメモリゾーン6000のメモリゾーン‐電力ランクゾーン状態管理テーブル2120の電力状態6040が活性状態である電力ランクゾーン6020の未使用メモリページフレーム数6050の合計値を計算し、その合計値と指定されたページ数との差分値を計算する(ステップ12014)。新たに電力ランクゾーンを活性状態にする必要があるか否かを判定するためである。
ステップ12014の後、メモリ電源管理プログラム2114は、差分値が負か否かを判定する(ステップ12015)。メモリ電源管理プログラム2114は、差分値が負である場合には、差分値の絶対値のメモリページフレームの数だけ、活性状態であるメモリページフレームの数が足りないと判定し、新たに電力ランクゾーンを活性状態に変更する必要があると判定し、差分値が負でないと判定された場合、指定されたメモリページフレームの数より活性状態であるメモリページフレームの数が多いと判定し、新たに電力ランクゾーンを活性状態に変更する必要がないと判定する。
差分値が負と判定された場合には、メモリ電源管理プログラム2114は、その差分値分のメモリページフレーム数を満足するだけ、かつ、電力状態6040が不活性状態である電力ランクゾーン6020を電力ランクゾーンサイズ6030が小さい順に選択する。そして、メモリ電源管理プログラム2114は、選択した電力ランクゾーン6020のメモリランク1031〜1062の電力状態を活性状態に変更する(ステップ12016)。なお、差分値が負でないと判定された場合には、ステップ12018に進む。
ステップ12016の後、メモリ電源管理プログラム2114は、ステップ12016で活性化した電力ランクゾーン6020について、メモリゾーン‐電力ランクゾーン状態管理テーブル2120の電力状態6040を更新する(ステップ12017)。
ステップ12017の後、又は、ステップ12015で差分値が負でないと判定された場合には、新たに電力ランクゾーンを活性状態に変更する必要がないので、メモリランク電源管理プログラム2114を終了する(ステップ12018)。
図13Aは、本発明の第1の実施の形態のメモリランク電源管理プログラム2114の電力ランクゾーン先行活性処理1(ステップ12010)のフローチャートである。
電力ランクゾーン先行活性処理1(ステップ12010)は、まず、メモリランク電源管理プログラム2114が次に周期的に実行される時間までに各ソフトウェアに割り当てるメモリページフレーム数の予測値を計算する(ステップ13100)。例えば、予測値は、メモリ電源管理プログラム2114が実行される周期実行時間とメモリゾーン‐電力ランクゾーン状態管理テーブル2120の使用メモリページフレーム数の1階時間微分値6060と2階時間微分値6070とから計算する。
ステップ13100の後、メモリ電源管理プログラム2114は、メモリゾーン‐電力ランクゾーン状態管理テーブル2110の電力状態6040が活性状態である電力ランクゾーン6020の未使用メモリページフレーム数6050の合計値を計算する(ステップ13101)。
ステップ13101の後、メモリ電源管理プログラム2114は、ステップ13101で計算した合計値とステップ13100で計算した予測値との差分値を計算する(ステップ13102)。
ステップ13102の後、メモリ電源管理プログラム2114は、ステップ13102で計算された差分値が負か否かを判定する(ステップ13103)。すなわち、活性状態である未使用のメモリページフレームの数の合計値が予測値より少ないか否かを判定する。
差分値が負と判定された場合、すなわち、活性状態である未使用のメモリページフレームの数の合計値が予測値よりも少ない場合には、先行してメモリページフレームを活性状態にするために、ステップ13014及びステップ13105の処理を実行する。なお、ステップ13104及びステップ13105は、それぞれステップ12016及びステップ12017に同一である。
ステップ13105の終了後、及びステップ13103で差分値が負でないと判定された場合(活性状態であるメモリページフレームの数が予測値より多い場合)には、先行してメモリページフレームを活性状態にする必要はないので、電力ランクゾーン先行活性処理1を終了する(ステップ12018)。
図13Bは、本発明の第1の実施の形態の電力ランクゾーン先行活性処理2(ステップ12011)のフローチャートである。
電力ランクゾーン先行活性処理2(ステップ12011)は、初めに、各電力ランクゾーン(6081〜6082、6091〜6092、及び6101〜6102)についてステップ13201の処理とステップ13202の処理を繰り返す(ステップ13200)。
まず、メモリ電源管理プログラム2114は、電力状態6040が活性状態か否か判定する(ステップ13201)。
選択された電力ランクゾーン6020の電力状態6040が活性状態と判定された場合には、未使用メモリページフレーム数6050が閾値以上であるか否かを判定する(ステップ13202)。なお、この閾値は、予め、電力ランクゾーン6020における電力ランクゾーンサイズ6030に基づいて、パーセンテージで設定されている。管理者は、計算機1000が備えるキーボード1190等の入力装置を用いて、メモリ管理制御インタフェース2115から設定又は変更できる。また、管理者は、遠隔地にある計算機1600からネットワーク1500を通じて、メモリ管理制御インタフェース2115から設定又は変更してもよい。
ステップ13202で未使用メモリページフレーム数6050が閾値未満であると判定された場合及びステップ13201で電力状態6040が不活性状態であると判定された場合、各電力ランクゾーン(6081〜6082、6091〜6092、6101〜6102)についてステップ13201の処理とステップ13202の処理を繰り返す(ステップ13203)。また、全ての電力ランクゾーン(6081〜6082、6091〜6092、6101〜6102)について、ステップ13201の処理とステップ13202の処理とが実行されていれば、ステップ13203に進む。
ステップ13203の後、メモリ電源管理プログラム2114は、電力状態6040が不活性状態である電力ランクゾーン6020を、電力ランクゾーンサイズ6030の小さい順に指定数だけ選択する。選択した電力ランクゾーン(6081〜6082、6091〜6092、6101〜6102)を活性状態に変更して、電力状態6040を更新する(ステップ13204)。なお、この指定数は、予め、デフォルト値として「1」が設定されている。なお、管理者は、計算機1000が備えるキーボード1190等の入力装置を用いて、メモリ管理制御インタフェース2115から指定数の値を設定又は変更できる。また、遠隔地にある計算機1600からネットワーク1500を通じて、メモリ管理制御インタフェース2115から指定数の値を設定又は変更してもよい。
ステップ13204の後、又は未使用メモリページフレーム数6050が閾値以上存在すると判定された場合(ステップ13202)、電力ランクゾーン先行活性処理2(ステップ12011)を終了する。
図14は、本発明の第1の実施の形態のメモリページフレーム回収管理プログラム2113のフローチャートである。
メモリページフレーム回収管理プログラム2113は、例えば、メモリ管理プログラム2110等によって回収するメモリページフレーム数、すなわち各ソフトウェアに割り当てられているメモリページフレームの各ソフトウェアの割り当てを解放するメモリページフレームの数が指定されて、呼び出される(ステップ14000)。このメモリ管理プログラムによって指定された解放するメモリページフレームの数を解放要求メモリページフレーム数という。なお、指定するメモリページフレーム数は一つでも複数でもよい。
まず、メモリページフレーム回収管理プログラム2113は、メモリ管理プログラム2110等によって指定される解放要求メモリページフレームの数から、使用中メモリページフレーム管理リスト8000の検索する範囲を計算する(ステップ14001)。通常、最近使用されていないメモリページフレームを解放する。従って、解放するメモリページフレームは、LRUリストである使用中メモリページフレーム管理リスト8000のリスト最後尾から検索する範囲の分だけ検索する。使用中メモリページフレーム管理リスト8000を検索する範囲は、例えば、解放要求メモリページフレーム数に検索係数を乗じた値とする。検索係数は、予め「1」に設定されている。なお、管理者は、計算機1000が備えるキーボード1190等の入力装置を用いて、メモリ管理制御インタフェース2115から検索係数を設定又は変更可能である。また、遠隔地にある計算機1600からネットワーク1500を通じて、メモリ管理制御インタフェース2115から設定又は変更してもよい。
ステップ14001の後、メモリページフレーム回収管理プログラム2113は、使用中メモリページフレーム管理リスト8000の検索する範囲において、電力ランクゾーン‐解放候補ページテーブル2160を作成する(ステップ14002)。具体的には、メモリページフレーム回収管理プログラム2113は、検索範囲に含まれるメモリページフレームが属する電力ランクゾーンを電力ランクゾーン9000に登録する。
さらに、メモリページフレーム回収管理プログラム2113は、各電力ランクゾーンに属する全てのメモリページフレーム数を解放候補メモリページフレーム数9100に登録する。さらに、メモリページフレーム回収管理プログラム2113は、電力ランクゾーンに属するメモリページフレーム数から各電力ランクゾーンの解放候補対象メモリページフレーム数9100と各電力ランクゾーンの使用されていないメモリページフレームの数との差分を残使用メモリページフレーム数9200に登録する。
すなわち、残使用メモリページフレーム数9200には、各電力ランクゾーンの解放候補対象メモリページフレーム9100のメモリページフレームの割り当てを解放した場合に、各ソフトウェアによって使用されているメモリページフレームの数が登録される。
ステップ14002の後、メモリページフレーム回収管理プログラム2113は、残使用メモリページフレーム数9200が0の電力ランクゾーン9000に属する全ての使用中メモリページフレームを解放対象メモリページフレームとする(ステップ14003)。残使用メモリページフレーム数9200が0であれば、この電力ランクゾーンに属する全てのメモリページフレームが、各ソフトウェアによって使用されていないメモリページフレームだからである。
ステップ14003の後、メモリページフレーム回収管理プログラム2113は、残使用メモリページフレーム数9200の昇順に各電力ランクゾーン9000ごとにステップ14005〜ステップ14007の処理を繰り返す(ステップ14004)。
まず、メモリページフレーム回収管理プログラム2113は、解放要求メモリページフレーム数と解放候補対象メモリページフレーム数との差分値を計算する(ステップ14005)。
次に、メモリページフレーム回収管理プログラム2113は、ステップ14005で計算した差分値が正か否かを判定する(ステップ14006)。すなわち、解放候補メモリページフレーム数が解放要求メモリページフレーム数より少ないか否かを判定する。
差分値が正と判定された場合(解放候補メモリページフレーム数が解放要求メモリページフレーム数より少ない場合)、選択された電力ランクゾーン9000に属する全ての解放候補メモリページフレーム9100を解放対象ページに加える(ステップ14007)。
次に、残使用メモリページフレーム数9200の昇順に電力ランクゾーン9000ごとに処理14005〜14007の処理を繰り返す(ステップ14008)。
差分値が負と判定された場合(解放候補メモリページフレーム数が解放要求メモリページフレーム数より多い場合)、解放候補メモリページフレームのうち、使用中メモリページフレーム管理リスト8000の最後尾から優先して、解放要求メモリページフレーム数を満足する分だけ解放対象ページに加える(ステップ14009)。
ステップ14009の後、及び残使用メモリページフレーム数9200の昇順に電力ランクゾーン9000ごとに処理14005〜14007を繰り返した後(ステップ14008)、メモリページフレーム回収管理プログラムを終了する(ステップ14010)。
前述したように、本実施の形態は、計算機1000〜1001及び基本システムソフトウェア2100(オペレーティングシステム等)が連携したメモリが消費する電力を低減させるメモリ管理システムである。本実施の形態は、メモリ1030〜1060の消費する電力を低減させるメモリ1030〜1060の制御を考慮し、基本システムソフトウェア2100が、電力ランクゾーンによって、各ソフトウェアへのメモリ資源の割り当て、この割り当ての解放、及びメモリ1030〜1060の電力モードの一連の制御を実行する。
これによって、メモリ1030〜1060を各ソフトウェアが使用する領域が、メモリ1030〜1060が消費する電力を独立に制御できる単位であるメモリランク1031〜1062を複数に跨る断片化を抑制することができる。また、基本システムソフトウェア2100におけるメモリ1030〜1060を管理する方法(メモリゾーン管理)に対応し、実用上、確実かつ効率的にメモリ1030〜1060が消費する電力を大幅に低減することができる。さらに、必要なメモリランク1031〜1062の電力モードを先行して活性化し、電力モードの切り替え時のレイテンシを隠蔽することによって、CPU1010〜1011がメモリ1030〜1060にアクセスする性能に影響を与えずにメモリ1030〜1060の消費する電力の低減が可能となる。
(第2の実施の形態)
本発明の第2の実施の形態を、図15〜図17を用いて説明する。
本発明の第2の実施の形態は、計算機1000〜1001がNumaシステムを構成する場合において、第1の実施形態とは異なる低消費電力メモリ制御について説明する。
なお、Numaシステムとは、計算機1000がノードコントローラ1090及びノード間バス1160を介して、他の計算機1001に接続され、各計算機1000〜1001のCPU1010〜1011が各計算機1000〜1001のメモリにアクセス可能なシステムである。また、一般的に、計算機1000〜1001のCPU1010〜1011が同一計算機のメモリ1030〜1060にアクセスする速度は、計算機1000〜1001のCPU1010〜1011が他の計算機のメモリ1030〜1060にアクセスする速度よりも速い。
なお、第1の実施形態において、基本システムソフトウェア2100のメモリ管理プログラム2110は、メモリ1030〜1060資源をメモリ1030〜1060のゾーンによって管理し、メモリ1030〜1060資源を各ソフトウェアに割り当て及び割り当てを解放する。Numaシステムにおいても、計算機ノード1000〜1001ごとにメモリのゾーンを構成することによって、第1の実施形態のメモリ管理プログラム2110と同じ構成で、メモリ1030〜1060の消費する電力を低減することができる。
なお、第1の実施の形態と同じ構成には、同一の符号を付与し、説明を省略する。
図15は、本発明の第2の実施形態のファームウェア2000及び基本システムソフトウェア2100の構成図である。
ファームウェア2000及び基本システムソフトウェア2100は、計算機1000〜1001上で動作する。
基本システムソフトウェア2100は、第1の実施形態の基本システムソフトウェア2100のメモリゾーン‐電力ランクゾーン状態管理テーブル2120及び電力ランクゾーン‐解放候補メモリページフレーム管理テーブル2160に代わって、CPU‐メモリ位置ポテンシャルテーブル15000、メモリランク‐電力ポテンシャルテーブル15100〜15110、及びメモリポテンシャルテーブル15200〜15210を備える。
CPU‐メモリ位置ポテンシャルテーブル15000は、各計算機1000〜1001が備える各CPU1010〜1011と各メモリ1030〜1060との間の距離によって生じるアクセスの遅延(レイテンシ)を示す。メモリランク‐電力ポテンシャルテーブル15100〜15110は、各計算機1000〜1001が備える各メモリ1030〜1060のメモリランク1031〜1062と各メモリランク1031〜1062の電力の状態とを示す‐。メモリポテンシャルテーブル15200〜152100は、各CPU1010〜1011ごとの位置と電力とによって生じるメモリランク1031〜1062へのアクセスの遅延(レイテンシ)を示す。他の構成は、第1の実施形態と同一である。
図16Aは、本発明の第2の実施の形態のCPU‐メモリ位置ポテンシャルテーブル15000を示す構成図である。
CPU‐メモリ位置ポテンシャルテーブル15000は、基本システムソフトウェア2100によって管理される。
行エントリ16001〜16003に登録されるCPU1010〜1011から列エントリ16004〜16006に登録されるメモリ1010〜1011への位置ポテンシャルを示している。位置ポテンシャルは、CPU1010〜1011とメモリ1030〜1060の距離によって生じるアクセスの遅延を示す。例えば、CPU0からメモリ0への位置ポテンシャルは0であり、CPU0からメモリ0へのアクセスは遅延が発生しない。CPU0からメモリm、及びCPU0からメモリnへの位置ポテンシャルは、各々D0m、D0nであることを示す。なお、このCPUとメモリは、Numaシステムを構成する計算機0〜n(1000〜1001)に備わる。
CPU‐メモリ位置ポテンシャルテーブル15000の内容は、計算機1000〜1001の起動時に、メモリ管理初期化プログラム2111によって設定される。なお、それぞれの位置ポテンシャルの値は、例えば、ファームウェア2000のハードウェア構成テーブル2001が通常、提供するCPU1010〜1011とメモリ1030〜1060との距離に比例した値である。すなわち、位置ポテンシャルが高いほど、メモリ1030〜1060はCPU1010〜1011と離れていて、CPU1010〜1011からメモリ1030〜1060へのアクセスに発生する遅延が大きい。
図16Bは、本発明の第2の実施の形態のメモリランク‐電力ポテンシャルテーブル15100〜15110を示す構成図である。
メモリランク‐電力ポテンシャルテーブル15100〜15110は、基本システムソフトウェア2100によって管理され、計算機1000〜1001が備えるメモリ1030〜1060数の分のメモリランク‐電力ポテンシャルテーブル15100〜15110が存在する。メモリランク‐電力ポテンシャルテーブル15100は、メモリ0のメモリランク16101と電力ポテンシャル16102とを示すテーブルである。
メモリランク‐電力ポテンシャルテーブル15100〜15110は、該当するメモリ1030〜1060のランクを示すメモリランク16101と電力ポテンシャル16102を有する。
メモリランク‐電力ポテンシャルテーブ15100〜15110の内容は、計算機1000〜1001の起動時に、メモリ管理初期化プログラム2111によって設定される。また、計算機1000〜1001の動作中には、メモリ管理プログラム2120によって更新される。なお、各電力ポテンシャル16102の値は、例えば、ファームウェア2000のメモリ電力モードテーブル2005が提供する各電力モード5000の消費電力値5100に反比例した値である。すなわち、電力ポテンシャル16102の値が高いほど、メモリランク1031〜1062が消費する電力は小さく、メモリランクを読み書き可能な活性状態にする遅延が大きい。従って、電力ポテンシャル16102の値が高いほど、最初のCPU1010〜1011からメモリ1030〜1060へのアクセスに発生する遅延が大きい。また、メモリランク‐電力ポテンシャルテーブル15100は、該当するメモリ0(1030)のメモリランク0〜i(1031〜1032)について電力ポテンシャルを管理する。
図16Cは、本発明の第1の実施の形態のメモリポテンシャルテーブル15200〜15210を示す構成図である。
メモリポテンシャルテーブル15200〜15210は、基本システムソフトウェア2100によって管理され、計算機1000〜1001が備えるCPU1010〜1011数の分のテーブルが存在する。
メモリポテンシャルテーブル15200〜15210は、該当するCPUにおいて、行16201〜16203の各メモリと列16004〜16006の各メモリのメモリランクのメモリポテンシャルを示す。
メモリポテンシャルテーブル15200〜15210の内容は、計算機1000〜1001起動時に、メモリ管理初期化プログラム2111によって設定される。また、計算機1000〜1001の動作中には、メモリ管理プログラム2120によって更新される。
なお、各メモリポテンシャルの値は、CPU‐メモリ位置ポテンシャルテーブル15000とメモリランク‐電力ポテンシャルテーブル15100〜15110とから算出する。具体的には、例えば、メモリポテンシャルの値は、CPU‐メモリ位置ポテンシャルテーブル15000の各CPU1010〜1011ごとに(16001〜16003)、計算機1000〜1001が備えるメモリに対する位置ポテンシャル(16004〜16006)に位置ポテンシャル係数(α)を乗じた値と各メモリの電力ポテンシャル(16102)に電力ポテンシャル係数(β)を乗じた値の和である。なお、位置ポテンシャル係数(α)及び電力ポテンシャル係数(β)は、予め、それぞれデフォルト値に設定されている。管理者は、計算機1000が備えるキーボード1190等の入力装置を用いてメモリ管理制御インタフェース2115から位置ポテンシャル係数(α)及び電力ポテンシャル係数(β)を設定又は変更できる。また、遠隔地にある計算機1600からネットワーク1500を通じて、メモリ管理制御インタフェース2115から位置ポテンシャル係数(α)及び電力ポテンシャル係数(β)を設定又は変更してもよい。
図17は、本発明の第2の実施の形態のメモリ初期化プログラム2111のフローチャートである。
メモリ初期化プログラムは、計算機1000〜1001の起動時に、実行される(17000)。
まず、メモリ管理初期化プログラム2111は、CPU‐メモリ位置ポテンシャルテーブル15000を設定する(ステップ17001)。
次に、メモリ管理初期化プログラム2111は、計算機1000と計算機1001が備える各メモリ1030〜1060ごとに、メモリランク‐電力ポテンシャルテーブル17100を設定する(ステップ17002)。
ステップ17002の後、メモリ管理初期化プログラム2111は、計算機1000と計算機1001が備える各CPU1010〜1011ごとに、メモリポテンシャルテーブル15200〜15210を設定する(ステップ17003)。なお、各ポテンシャルテーブル(15000、15100〜15110、15200〜15210)のポテンシャル値の算出方法については、図16で説明した方法と同一である。
ステップ17002の後のステップ17004〜ステップ17007は、第1の実施形態で説明したステップ10010〜ステップ10012の処理と同一である。ステップ17007の後、メモリ管理初期化プログラム2111を終了する。
メモリページフレーム割当管理プログラム2112は、例えば、メモリ管理プログラム2110等によって、メモリページフレームの割り当てを要求したソフトウェアが動作するNuma計算機1000〜1001のCPU1010〜1011とメモリページフレーム数を指定されて、呼び出される。
メモリ割当管理プログラム2112は、指定されたCPU1010〜1011に対応するメモリポテンシャルテーブル15200〜15210を参照し、メモリポテンシャルの値が最小のメモリランクから優先して、指定されたメモリページフレームの数を満足するメモリページフレームを割り当てる。さらに、メモリ割当管理プログラム2112は、使用中メモリページフレーム管理リスト8000と未使用メモリページフレーム管理リスト8100とを更新する。
位置ポテンシャル係数(α)と電力ポテンシャル係数(β)は管理者によって、変更可能であるので、位置ポテンシャル係数(α)と電力ポテンシャル係数(β)を変更することによって、位置ポテンシャルを優先してメモリページを割り当てる、又は電力ポテンシャルを優先してメモリページを割り当てることが選択できる。
また、メモリポテンシャル値が最小のメモリランク、すなわちレイテンシの小さいメモリランクを優先するので、メモリのアクセス性能の低下を抑制できる。
メモリページフレーム回収管理プログラム2113は、例えば、メモリ管理プログラム2110等によって、回収するメモリページフレーム数を指定されて、呼び出される。解放対象メモリページフレームは、LRU管理リストである使用中メモリページフレーム管理リスト8000のリスト最後尾から検索する。
メモリランク電力管理プログラム2114は、例えば、周期的に実行され、メモリランク‐電力ポテンシャルテーブ15100〜15110を更新する。その後、メモリランク電力管理プログラム2114は、メモリポテンシャルテーブル15200〜15210を更新する。
このように、第2の実施の形態を利用することによっても、特にNuma計算機構成において、CPU1010〜1011からメモリ1030〜1060へのアクセスする性能を維持しつつ、メモリが消費する電力を低減できる。
本発明の第1の実施の形態のおける計算機システムの構成図である。 本発明の第1の実施の形態のファームウェア及び基本システムソフトウェアの構成図である。 本発明の第1の実施の形態のメモリ・アドレッシング・モード・テーブルの構成図である。 本発明の第1の実施の形態の電力ランク‐メモリランク対応管理テーブルの構成図である。 本発明の第1の実施の形態のメモリ電力モードテーブルの構成図である。 本発明の第1の実施の形態のメモリゾーン‐電力ランクゾーン状態管理テーブルの構成図である。 本発明の第1の実施の形態のメモリページフレーム管理テーブルの構成図である。 本発明の第1の実施の形態の使用中メモリページフレーム管理リスト、使用中メモリページフレーム管理リストヘッド、未使用メモリページフレーム管理リスト、及び未使用メモリページフレーム管理リストヘッドの構成図である。 本発明の第1の実施の形態の電力ランクゾーン‐解放候補ページテーブルの構成図である。 本発明の第1の実施の形態のメモリ管理初期化プログラムのフローチャートである。 本発明の第1の実施の形態のメモリページフレーム割当管理プログラムのフローチャートである。 本発明の第1の実施形態のメモリランク電源管理プログラムのフローチャートである。 本発明の第1の実施の形態のメモリランク電源管理プログラムが周期的に実行される場合のメモリランク電源管理プログラムのフローチャートである。 本発明の第1の実施の形態のメモリランク電源管理プログラムが直接呼び出され実行される場合メモリランク電源管理プログラムのフローチャートである。 本発明の第1の実施の形態の電力ランクゾーン先行活性処理1のフローチャートである。 本発明の第1の実施の形態の電力ランクゾーン先行活性処理2のフローチャートである。 本発明の第1の実施の形態のメモリページフレーム回収管理プログラムのフローチャートである。 本発明の第2の実施形態のファームウェア及び基本システムソフトウェアの構成図である。 本発明の第2の実施の形態のCPU‐メモリ位置ポテンシャルテーブルを示す構成図である。 本発明の第2の実施の形態のメモリランク‐電力ポテンシャルテーブルを示す構成図である。 本発明の第2の実施の形態のメモリポテンシャルテーブルを示す構成図である。 本発明の第2の実施の形態のメモリ初期化プログラムのフローチャートである。
符号の説明
1000 計算機0
1010 CPU
1020 メモリコントローラ
1030〜1060 メモリ
1031〜1032 メモリランク
1070 チャネル
1090 ノードコントローラ
1100 システムROM
1110 ビデオアダプタ
1120 ネットワークインタフェース
1130 二次記憶装置インタフェース
1140 入力装置インタフェース
1150 システムバス
1150 ノード間バス
1170 ディスプレイ
1180 二次記憶装置
1190 キーボード
1200 マウス
1210 ネットワーク
1220 計算機

Claims (10)

  1. 基本システムソフトウェア、ファームウェア、及びアプリケーションソフトウェアを実行する少なくとも一つのプロセッサと、記憶領域であるメモリと、前記メモリに接続されるメモリコントローラと、を備える計算機において、前記メモリを管理する方法であって、
    前記メモリコントローラは、前記メモリにアドレスを定義するメモリアドレッシングと、前記プロセッサからの前記メモリへのメモリアクセスと、メモリの電力状態と、を制御し、
    前記メモリの記憶領域は、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当て可能な領域であって、さらに、前記記憶領域は、前記メモリコントローラが独立に電力を制御可能な最小単位の記憶素子であるメモリランクに区分され、
    前記メモリに供給される電力の状態は、前記メモリランク毎に、前記プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、アクセスに遅延が生じる不活性状態とのいずれかに制御され、
    前記基本システムソフトウェアは、
    前記割り当てられる記憶領域が、複数のメモリランクに跨がって割り当てられる断片化を抑制し、
    前記メモリコントローラを介して、前記割り当てられる記憶領域を含まないメモリランクの電力状態を前記不活性状態にし、
    前記割り当てに必要な記憶領域が含まれるメモリランクの電力状態を先行して前記活性状態にすることを特徴とするメモリ管理方法。
  2. 前記基本システムソフトウェアは、前記未割り当ての記憶領域が前記活性状態のメモリランクに含まれるか否かを判定し、当該活性状態のメモリランクに含まれる未割り当ての記憶領域を、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当てることを特徴とする請求項1に記載のメモリ管理方法。
  3. 前記基本システムソフトウェアは、割り当てる領域の予測値を計算し、前記メモリコントローラを介して、前記予測値に基づいてメモリランクの電力状態を先行して活性状態にすることを特徴とする請求項1に記載のメモリ管理方法。
  4. 前記基本システムソフトウェアは、前記電力状態が不活性状態であるメモリランクのうち、前記割り当て可能なサイズが小さいメモリランクを選択し、前記メモリコントローラを介して、前記選択されたメモリランクの電力状態を先行して活性状態にすることを特徴とする請求項1に記載のメモリ管理方法。
  5. 前記基本システムソフトウェアは、前記プロセッサが前記メモリにアクセスする遅延時間を示す位置ポテンシャルに、予め定められた位置ポテンシャル係数を乗じた値と、前記メモリランクの電力状態を示す電力ポテンシャルに、予め定められた電力ポテンシャル係数を乗じた値との和であるメモリポテンシャル値とを、各メモリの各メモリランクごとに示すメモリポテンシャルテーブルを管理し、
    前記基本システムソフトウェアは、前記メモリポテンシャルテーブル参照して、前記メモリポテンシャル値が最小のメモリのメモリランクを選択し、当該メモリランクに含まれる未割り当ての記憶領域を、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当てることを特徴とする請求項1に記載のメモリ管理方法。
  6. 基本システムソフトウェア、ファームウェア、及びアプリケーションソフトウェアを実行する少なくとも一つのプロセッサと、記憶領域であるメモリと、前記メモリに接続されるメモリコントローラと、を備える計算機において実行される前記メモリを管理するプログラムであって、
    前記メモリコントローラは、前記メモリにアドレスを定義するメモリアドレッシングと、前記プロセッサからの前記メモリへのメモリアクセスと、メモリの電力状態と、を制御し、
    前記メモリの記憶領域は、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当て可能な領域であって、さらに、前記記憶領域は、前記メモリコントローラが独立に電力を制御可能な最小単位の記憶素子であるメモリランクに区分され、
    前記メモリに供給される電力の状態は、前記メモリランク毎に、前記プロセッサから当該メモリランクに含まれる記憶領域にアクセスできる活性状態と、アクセスできない不活性状態とのいずれかに制御され、
    前記プログラムは、
    前記割り当てられる領域が、複数のメモリランクに跨がって割り当てられる断片化を抑制し、
    前記領域が割り当てられる記憶領域を含まないメモリランクの電力状態を前記不活性状態にし、
    前記割り当てに必要な記憶領域が含まれるメモリランクの電力状態を先行して前記活性状態にすることを前記計算機に実行させるためのプログラム。
  7. 前記プログラムは、未割り当ての記憶領域が前記活性状態のメモリランクに含まれるか否かを判定し、当該活性状態のメモリランクに含まれる未割り当ての記憶領域を、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当てることを特徴とする請求項6に記載のプログラム。
  8. 前記プログラムは、割り当てる領域の予測値を計算し、前記予測値に基づいてメモリランクの電力状態を先行して活性状態にすることを特徴とする請求項6に記載のプログラム。
  9. 前記プログラムは、前記電力状態が不活性状態であるメモリランクのうち、前記割り当て可能なサイズが小さいメモリランクを選択し、前記選択されたメモリランクの電力状態を先行して活性状態にすることを特徴とする請求項6に記載のプログラム。
  10. さらに前記プログラムは、前記プロセッサが前記メモリにアクセスする遅延時間を示す位置ポテンシャルに、予め定められた位置ポテンシャル係数を乗じた値と、前記メモリランクの電力状態を示す電力ポテンシャルに、予め定められた電力ポテンシャル係数を乗じた値との和であるメモリポテンシャル値とを、各メモリの各メモリランクごとに示すメモリポテンシャルテーブルの管理を前記計算機に実行させ、
    前記プログラムは、前記メモリポテンシャルテーブル参照して、前記メモリポテンシャル値が最小のメモリのメモリランクを選択し、当該メモリランクに含まれる未割り当ての記憶領域を、前記基本システムソフトウェア、前記ファームウェア、及び前記アプリケーションソフトウェアに割り当てることを特徴とする請求項6に記載のプログラム。
JP2006097586A 2006-03-31 2006-03-31 低消費電力化メモリ管理方法及びメモリ管理プログラム Pending JP2007272573A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006097586A JP2007272573A (ja) 2006-03-31 2006-03-31 低消費電力化メモリ管理方法及びメモリ管理プログラム
US11/729,957 US7793129B2 (en) 2006-03-31 2007-03-30 Power consumption decrease memory management method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006097586A JP2007272573A (ja) 2006-03-31 2006-03-31 低消費電力化メモリ管理方法及びメモリ管理プログラム

Publications (1)

Publication Number Publication Date
JP2007272573A true JP2007272573A (ja) 2007-10-18

Family

ID=38675317

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006097586A Pending JP2007272573A (ja) 2006-03-31 2006-03-31 低消費電力化メモリ管理方法及びメモリ管理プログラム

Country Status (2)

Country Link
US (1) US7793129B2 (ja)
JP (1) JP2007272573A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015505388A (ja) * 2011-11-22 2015-02-19 インテル・コーポレーション メモリ管理を有するコンピューティングプラットフォームインターフェース

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7958312B2 (en) * 2005-11-15 2011-06-07 Oracle America, Inc. Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state
US7873788B1 (en) 2005-11-15 2011-01-18 Oracle America, Inc. Re-fetching cache memory having coherent re-fetching
US7934054B1 (en) 2005-11-15 2011-04-26 Oracle America, Inc. Re-fetching cache memory enabling alternative operational modes
US7899990B2 (en) * 2005-11-15 2011-03-01 Oracle America, Inc. Power conservation via DRAM access
US7516274B2 (en) * 2005-11-15 2009-04-07 Sun Microsystems, Inc. Power conservation via DRAM access reduction
KR101228934B1 (ko) * 2007-08-28 2013-02-01 삼성전자주식회사 컴퓨터 시스템, 그 제어 방법 및 데이터 처리 장치
KR101440107B1 (ko) * 2008-01-28 2014-09-12 삼성전자주식회사 다중 코어 시스템에서 접근 시간에 기초한 메모리 관리방법 및 장치
JP2010211644A (ja) * 2009-03-11 2010-09-24 Nec Corp メモリ消費電力削減システム、方法及びプログラム
US9015441B2 (en) 2010-04-30 2015-04-21 Microsoft Technology Licensing, Llc Memory usage scanning
US9063866B1 (en) 2010-07-12 2015-06-23 Vmware, Inc. Page table data structure for online classification of memory pages based on activity level
US9032398B2 (en) * 2010-07-12 2015-05-12 Vmware, Inc. Online classification of memory pages based on activity level represented by one or more bits
US8832390B1 (en) 2010-07-12 2014-09-09 Vmware, Inc. Online classification of memory pages based on activity level using dynamically adjustable scan rates
US8990531B2 (en) 2010-07-12 2015-03-24 Vmware, Inc. Multiple time granularity support for online classification of memory pages based on activity level
US20120124269A1 (en) * 2010-11-15 2012-05-17 International Business Machines Corporation Organizing Memory for Effective Memory Power Management
US8407501B2 (en) 2011-03-28 2013-03-26 International Business Machines Corporation Allocation of storage resources in a networked computing environment based on energy utilization
US8793459B2 (en) * 2011-10-31 2014-07-29 International Business Machines Corporation Implementing feedback directed NUMA mitigation tuning
US8738875B2 (en) 2011-11-14 2014-05-27 International Business Machines Corporation Increasing memory capacity in power-constrained systems
US20140136873A1 (en) * 2012-11-14 2014-05-15 Advanced Micro Devices, Inc. Tracking memory bank utility and cost for intelligent power up decisions
US20140136870A1 (en) * 2012-11-14 2014-05-15 Advanced Micro Devices, Inc. Tracking memory bank utility and cost for intelligent shutdown decisions
US10296263B2 (en) * 2014-04-30 2019-05-21 International Business Machines Corporation Dispersed bloom filter for determining presence of an object
US10379748B2 (en) * 2016-12-19 2019-08-13 International Business Machines Corporation Predictive scheduler for memory rank switching
US10353829B2 (en) * 2017-06-30 2019-07-16 Dell Products, Lp System and method to account for I/O read latency in processor caching algorithms
US10831384B2 (en) * 2017-08-31 2020-11-10 Micron Technology, Inc. Memory device with power management
US11079829B2 (en) * 2019-07-12 2021-08-03 Micron Technology, Inc. Peak power management of dice in a power network
US11454941B2 (en) 2019-07-12 2022-09-27 Micron Technology, Inc. Peak power management of dice in a power network
US11487339B2 (en) * 2019-08-29 2022-11-01 Micron Technology, Inc. Operating mode register
US11175837B2 (en) 2020-03-16 2021-11-16 Micron Technology, Inc. Quantization of peak power for allocation to memory dice
CN112181465A (zh) * 2020-12-01 2021-01-05 深圳杰睿联科技有限公司 物联网通信模组中第三方应用的管理方法与装置
US11934251B2 (en) * 2021-03-31 2024-03-19 Advanced Micro Devices, Inc. Data fabric clock switching

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03126133A (ja) * 1989-10-11 1991-05-29 Matsushita Electric Ind Co Ltd コンパイラ処理方法
JPH04143819A (ja) * 1989-12-15 1992-05-18 Hitachi Ltd 消費電力制御方法、半導体集積回路装置およびマイクロプロセツサ
JP2005235203A (ja) 1989-12-15 2005-09-02 Renesas Technology Corp マイクロプロセッサ
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
US20040193775A1 (en) * 2001-08-15 2004-09-30 Egidius Gerardus Petrus Van Doren Memory pools with moving memory blocks
US7454639B2 (en) * 2005-06-30 2008-11-18 Intel Corporation Various apparatuses and methods for reduced power states in system memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015505388A (ja) * 2011-11-22 2015-02-19 インテル・コーポレーション メモリ管理を有するコンピューティングプラットフォームインターフェース

Also Published As

Publication number Publication date
US7793129B2 (en) 2010-09-07
US20070288783A1 (en) 2007-12-13

Similar Documents

Publication Publication Date Title
JP2007272573A (ja) 低消費電力化メモリ管理方法及びメモリ管理プログラム
JP4209906B2 (ja) 低消費電力メモリ管理方法及びその方法を用いた計算機
US10353454B2 (en) Information processing apparatus and computer program product for changing swap spaces based on a performance threshold
US7721052B2 (en) System and method of reducing power consumption of a main memory
US8689017B2 (en) Server power manager and method for dynamically managing server power consumption
KR101459866B1 (ko) 온 더 플라이 메모리 컨트롤러 맵핑
US9128845B2 (en) Dynamically partition a volatile memory for a cache and a memory partition
EP2476037B1 (en) Managing resources to facilitate altering the number of active processors
US7882319B2 (en) Method and system for memory management
KR102423713B1 (ko) 가상 어드레스를 물리적 어드레스로 번역을 수행하기 위해 입력-출력 메모리 관리 유닛내 다수의 메모리 소자들 사용
JP2018521385A (ja) 共有システムキャッシュの仮想化制御のための方法および装置
JP4902501B2 (ja) 電力制御方法、計算機システム、及びプログラム
WO2006117950A1 (ja) 情報処理装置における電力制御装置
US20190294355A1 (en) Information processing device, information processing method, estimation device, estimation method, and computer program product
CN112988387A (zh) 一种内存页管理方法及计算设备
US20120017052A1 (en) Information Handling System Universal Memory Wear Leveling System and Method
WO2017056310A1 (ja) 計算機および計算機の制御方法
US11263101B2 (en) Decision model generation for allocating memory control methods
JP5045163B2 (ja) 演算処理装置および演算処理装置の制御方法
JP6873942B2 (ja) 推定装置、推定方法およびプログラム
CN112654965A (zh) 动态模块的外部分页和交换
JP6877381B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP2017033375A (ja) 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
JP2008165318A (ja) 計算機システム
JP2021506028A (ja) 共通のメモリページからメモリへのキャッシュラインのリンス