JP2014167700A - 計算機、メモリ管理方法およびプログラム - Google Patents

計算機、メモリ管理方法およびプログラム Download PDF

Info

Publication number
JP2014167700A
JP2014167700A JP2013039079A JP2013039079A JP2014167700A JP 2014167700 A JP2014167700 A JP 2014167700A JP 2013039079 A JP2013039079 A JP 2013039079A JP 2013039079 A JP2013039079 A JP 2013039079A JP 2014167700 A JP2014167700 A JP 2014167700A
Authority
JP
Japan
Prior art keywords
data
memory
memory area
segment
address
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.)
Granted
Application number
JP2013039079A
Other languages
English (en)
Other versions
JP5989574B2 (ja
Inventor
Tsunetaro Ise
瀬 恒太郎 伊
Masataka Goto
藤 真 孝 後
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2013039079A priority Critical patent/JP5989574B2/ja
Priority to US14/190,334 priority patent/US20140244960A1/en
Publication of JP2014167700A publication Critical patent/JP2014167700A/ja
Application granted granted Critical
Publication of JP5989574B2 publication Critical patent/JP5989574B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2024Rewritable memory not requiring erasing, e.g. resistive or ferroelectric RAM
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Power Sources (AREA)

Abstract

【課題】メモリ装置の消費電力を削減する
【解決手段】本発明の一態様としての計算機は、第1メモリ領域と、記憶しているデータを保持する消費電力が前記第1メモリ領域よりも小さい第2メモリ領域とを管理する計算機であって、データ管理部と、データ処理部とを備える。前記データ管理部は、前記第1メモリ領域または前記第2メモリ領域に存在する第1データを参照しているプロセスの個数である参照数を管理する。前記データ処理部は、前記第1データが前記第1メモリ領域に存在し、前記第1データの参照数が予め定められた第1の条件を満たすとき、前記第1データを、前記第2メモリ領域に移動させる。
【選択図】図13

Description

本発明の実施形態は、計算機、メモリ管理方法およびプログラムに関する。
近年、パーソナルコンピュータを代表とする計算機の普及は目覚ましく、携帯電話やコピー装置、ホームルータ、など様々な情報処理を行うために、計算機技術が用いられている。計算機技術の特徴として、DRAMなどのメモリ装置を有し、そのメモリ上に格納されたデータを処理し、処理された結果のデータをメモリに格納することで、情報処理を行うことがある。すなわち、データの読み・書きの片方あるいは両方を行うメモリ領域を有することが、これらの機器の特徴である。
近年、計算機の消費電力を削減することに対する要求が高まっている。この要求の基になっている動機は、電力コストの削減や、発熱に伴う計算機の誤動作の防止がある。また、バッテリ駆動されている機器では、稼働時間の延長などがある。このほかにも様々ある。この計算機の消費電力削減要求は、計算機に含まれるメモリ装置に対する消費電力削減要求へとつながる。
特開2005-196343号公報
本発明の実施形態は、メモリ装置の消費電力を削減することを目的とする。
本発明の一態様としての計算機は、第1メモリ領域と、記憶しているデータを保持する消費電力が前記第1メモリ領域よりも小さい第2メモリ領域とを管理する計算機であって、データ管理部と、データ処理部とを備える。
前記データ管理部は、前記第1メモリ領域または前記第2メモリ領域に存在する第1データを参照しているプロセスの個数である参照数を管理する。
前記データ処理部は、前記第1データが前記第1メモリ領域に存在し、前記第1データの参照数が予め定められた第1の条件を満たすとき、前記第1データを、前記第2メモリ領域に移動させる。
本発明の実施形態に係る計算機のハードウエア構成の例を示す図。 マップドファイルを複数のプロセスが共有する様子を示す図。 メモリモジュールの構成例を示す図。 メモリモジュールのアドレスとセグメントの関係を示す図。 論理アドレスから物理アドレスへのアドレス変換の動作を説明するための図。 セグメント情報管理テーブルの一例を示す図。 物理メモリの使用状態の一例を示す図。 メモリモジュールの他の構成例を示す図。 メモリモジュールのさらに別の構成例を示す図。 システムキャッシュデータのOS内の管理構造を示す図。 本発明の実施形態に係る動作のフローチャートを示す。 本発明の実施形態に係る計算機のメモリ電力制御に関わる処理部のブロック図。 本発明の実施形態に係る計算機のメモリデータ管理制御に関わる処理部のブロック図。
図1に、本発明の実施形態に係る計算機のハードウエア構成の例を示す。
計算機は、CPU11とこれにつながる表示ディスプレイ(例えば、LCD(液晶ディスプレイ))21とメインメモリ31とHDD(ハードディスクドライブ)41と無線NIC51と外部入力手段(キーボードやマウス等)61を備える。CPU11は、一つ以上のCPUコア12と、キャッシュ領域(以下、キャッシュ)13と、グラフィックプロセッサ14と、MMU(Memory Management Unit:メモリ管理ユニット)15とUSBホストコントローラ16とDMA(ダイレクトメモリアクセス)コントローラ17とBUSコントローラ18とSATA(Serial Advanced Technology Attachment)ホストコントローラ19とを備える。
CPUコア12は、実行命令に基づいて演算を行う。
グラフィックプロセッサ14は、CPUコア12からの描画命令に従い、RGB信号を生成し、これを表示ディスプレイ21に出力する。
キャッシュ13は、CPUコア12がメインメモリ31にアクセスする際の遅延を改善するために設けられている記憶装置である。CPUコア12は、メモリの内容を読み込む際には、まずキャッシュ13の内容を確認する。キャッシュ13にその内容が保持されていなければ、メインメモリ31から値を読み込み、キャッシュ13にその内容を記憶する。キャッシュ13にその内容が存在すれば、キャッシュ13の値を読み込む。CPUコア12がメモリ31にデータを書き込むためには、まずキャッシュ13の保持する内容を書き換える。この書き換えられた内容が、例えばライトバックあるいはライトスルーと呼ばれる方法に従って、メインメモリ31に書き込まれる。キャッシュ13に用いられる記憶方式には、SRAMやDRAMなど様々なものを用いることができる。キャッシュ13は、メインメモリよりアクセス遅延の小さいことが望ましい。
MMU15は、メインメモリ31をアクセスする際に使う物理アドレスと、CPUコア12上で動作するOS(Operating System)が使用する仮想アドレス(あるいは論理アドレス。本明細書では仮想アドレスと論理アドレスを区別せず使用する。)との変換を行う装置である。仮想アドレスを入力として、これに対応する物理アドレスを出力する。この仮想アドレスと物理アドレスの変換情報の全てをMMU15内部のメモリに保持してもよい。または、変換表の一部をMMU15に保持し、その他の部分をメインメモリ31等の外部に保持してもよい。一部のみを保持する方式としては、例えば、TLB(Translation Lookaside Buffer)と呼ばれる高速メモリをMMU15が有し、TLBに保持していない変換データのみメインメモリ31を参照して取得するとともに、得られた変換データをTLBに書き込む方法がある。
USBホストコントローラ16は、USB(Universal Serial Bus)規格に基づいて、USBデバイスとの情報送受信を行う。
DMAコントローラ17は、メインメモリ31、バス上のデバイス(無線NICなど)およびSATAデバイス(HDDなど)とのデータの送受信処理を行う。DMAコントローラ17は、CPUコア12と交渉し、バスの制御権を得る。バスの制御権を得たDMAコントローラ17は、バス上のデバイスからデータを受信し、受信データをメインメモリ31に書き込む。あるいは、メインメモリ31のデータを読み、そのデータをバス上のデバイスに送信する。
バスコントローラ18は、例えば、PCI-Expressなどのバス規格に従って、バス上のデバイスとのデータの送受信を行う。
SATAホストコントローラ19は、SATA(Serial Advanced Technology Attachment)規格に従って、SATAケーブルを介してデバイス(HDD)とのデータの送受信を行う。
表示ディスプレイ21は、RGB信号を通じて入力した信号を、人間の読める形式にして表示する。
メインメモリ31は、例えばDRAM(Dynamic Random Access Memory)であり、例えばDDR3と呼ばれるインタフェース(メモリバス)にてCPU11と接続される(図示しないメモリコントローラをCPU11は有する)。このメインメモリ31は、MRAM(Magneto-resistive Random Access Memory)やFeRAM(Ferroelectric Random Access Memory)やPRAM(Phase change Random Access Memory)やReRAM(Resistive Random Access Memory)などの不揮発性メモリ技術にて構成されていれば一層望ましい。
MMU15から出力された物理アドレスが、メモリコントローラに渡されると、メモリコントローラがこれをメモリアドレスに変換し、そのメモリアドレスに対応するメインメモリの領域に保持されている値にアクセスすることができる。
メインメモリ31は、CPU11からのread命令を受信した際には、read命令とともに与えられるアドレス情報に対応した領域に保持されている値を読み出して、CPU11に出力する。さらに、CPU11からwrite命令を受信した際には、write命令とともにアドレス情報と値を受信し、アドレス情報に対応する領域に受信した値を書き込む。メインメモリ31とCPU11との間の接続インタフェースには、DDR3以外にLPDDR3やWideIOなど様々なインタフェースが使用され得る。
ここで、本実施形態では、メモリ領域として、ホットメモリ領域(第1メモリ領域)とコールドメモリ領域(第2メモリ領域)が存在する。ホットメモリ領域は、コールドメモリ領域よりもデータ保持に要する消費電力は大きく、データアクセス(read/write)に要する消費電力あるいはアクセス時間が小さい。例えば、DRAMにおいて、Idle状態およびActive状態(すなわちRowアドレスあるいはColアドレスを入力し、read/write可能な状態)をホット状態とし、それ以外の例えばSelf Refreshing状態やPower Down状態をコールド状態とみなすことができる。ホットメモリ領域およびコールドメモリ領域は事前に固定されていてもよいし、両者間で切り替え可能であっても良い。
メインメモリとしてDRAMとMRAMのような異なる特性のメモリを混在している場合には、データ保持に要する消費電力が大きいけれどもデータアクセスに要する消費電力あるいは時間の小さいメモリをホットメモリ領域、そうでないメモリをコールドメモリ領域とみなすことができる。以後、ホットメモリ領域のことをアクティブ領域、コールドメモリ領域のことをスリープ領域と呼ぶこともある。
HDD41は、例えば、TOSHIBA社のMK1059GSMのように、磁気媒体のデジタル情報を記憶する装置であり、SATAインタフェースにてCPU11と接続される。HDDの代わりに、SSDと呼ばれる半導体記憶装置(NAND フラッシュ)を用いてもよい。デジタル情報を記憶するための方式は様々であるが、メインメモリ31よりも大容量であることが望ましい。HDD41とCPU11との間の接続は、SATA以外にもSCSIやFiber ChannelやPCI-Expressなどの様々なインタフェースを使用し得る。
無線NIC(Network Interface Card)51は、例えばIEEE 802.11の規格に従って、ネットワークに対して通信パケットを送受信するものである。使用する規格は、IEEE802.11に限るものではなく、LTE(Long Term Evolution)と呼ばれるセルラー通信向きのインタフェースであってもよいし、100Mイーサネットと呼ばれるような有線インタフェースであってもよい。
外部入力手段61は、人間による操作を入力するための手段であり、例えばキーボードやマウス、表示ディスプレイ上のタッチパネルであってもよい。また、温度センサーなどでもよく、入力される情報は人間からのものに限定されるものではない。本実施形態ではUSB規格に従って外部入力をCPU11に送信しているが、外部入力手段61は、USB以外の他の規格(例えば、IEEE1394, RS-232C,HDMI)で接続されていてもよい。
本実施形態では、ハードウエア構成として、図1の構成を用いたが、グラフィックプロセッサ、MMU、USBホストコントローラ、DMAコントローラ、バスコントローラ、SATAホストコントローラのいずれか一つ以上がCPU11の外側に存在する構成もあり得る。また、無線NICの一部の機能を、CPU11内に有するなど様々な変形が考え得る。
(システムキャッシュの説明)
プロセスやOSが例えばハードディスク上のファイルを参照する際には、そのファイルはハードディスクからメモリ上に格納され、その後、そのメモリ上のファイルデータにアクセスするという手順が実行される。一般に、ハードディスクへのアクセスは、メモリへのアクセスよりも遅いため、そのファイルがプロセスやカーネルから使用されなくなった後も、メモリ上にファイルデータを保持し続ける。このように使用されていない保持されているデータを“システムキャッシュデータ”と呼ぶ。ここでファイルの格納場所としてハードディスク以外にCD-ROMやSSD(Solid State Drive)やNAS(Network Attached Storage)など様々な格納場所があり得る。また、システムキャッシュデータとして、ファイルデータ以外にもネットワークを介して取得したHTMLデータのようなデータであっても、メモリ上に保持しているデータを、システムキャッシュデータと称する。
ファイルが使用中であるか否かをOSが判断するために、プロセスはファイルを使用する際には、fopen()あるいはmmap()のようなファイル使用開始を宣言するシステムコールを呼ぶ。ファイルの使用を終了する場合には、fclose()あるいはunmap()のようなファイル使用終了を宣言するシステムコールを呼ぶ。
OSは、プロセスがファイルを参照した際に、メインメモリ上にファイルデータをハードディスクからコピーしマップドファイルとし、そのメモリアドレスをプロセスの仮想空間に対応させる。図2は、マップドファイルが物理メモリアドレスの300KB--315KBの領域に割り当てられ、それがプロセス1の論理アドレス200KB--215KBに割り当てられ、プロセス2の論理アドレス100KB--115KBに割り当てられている様子を示す。このようにマップドファイルは複数のプロセスに共有されることもできる。また、図2では4つのページが割り当てられている様子を描いているが、オンデマンドページング方式の場合は、実際にプロセスがメモリを参照するまで物理ページは割り当てられない。
図2において、プロセス1とプロセス2の両方がファイルへの参照を終えると、そのファイルに割り当てられた物理メモリを解放することができるが、物理メモリの空き容量がある場合には物理メモリを解放せずにおき、再度ファイルへの参照が発生した場合には、その物理アドレスをその参照したプロセスの論理アドレスと対応させることで、ファイルへのアクセス時間を短くすることができる。このように使用されていないが物理メモリ上に保持されているデータを、前述したようにシステムキャッシュデータと呼ぶ。
ここで、システムキャッシュデータの例としては、ファイルデータを物理メモリページに読み込んだ場合のようにページ単位で管理するページキャッシュデータや、ブロックデバイス上のデータの塊(例えば、ファイルシステムのブロック)を保持するバッファキャッシュデータが挙げることができる。
前述したような特性を有するホットメモリ領域とコールドメモリ領域とを含むメモリ領域を管理する計算機において、ホットメモリ領域に保持されているシステムキャッシュは、そのシステムキャッシュを参照するプロセスの個数(参照数)があらかじめ定められた第1の条件が満たされたとき、コールドメモリ領域に移動する。第1の条件としては、たとえば、そのシステムキャッシュが使用されなくなった、すなわちそのシステムキャッシュを参照するプロセスの個数(参照数)が0になった場合がある。より一般的に参照数が閾値より大きな値から閾値以下になった場合がある。あるいは、当該参照数が0になってから、予め定められた時間T_hotの間アクセスがない場合がある。このような場合にシステムキャッシュをコールドメモリ領域に移動することによって、ホットメモリ領域の空き容量を増やすことができ、今後アクセスされるデータをホットメモリ領域に配置することが可能となる。前述したようにホットメモリ領域はデータアクセスに要する消費電力が小さいため、アクセスされるデータをホット領域に配置することで、消費電力低減の効果を発揮する。
ここで、T_hotは固定値ではなく、ホットメモリ領域の空き容量が小さいほど小さな値となるよう設定することも可能である。さらに、システムキャッシュデータがプロセスによりWriteアクセスされることでダーティなデータ、すなわちハードディスク内の対応するデータとは異なる値となっている場合には、T_hotをクリーンなデータの場合と比べて、小さな値とすることが望ましい。また、システムキャッシュデータがダーティな場合は、ホットメモリ領域からコールドメモリ領域へ移動するのではなく、ハードディスクに移動することも可能である。
コールドメモリ領域に保持されているシステムキャッシュは、あらかじめ定められた第1の条件が満たされたとき、ハードディスクに移動してもよい。たとえば、そのシステムキャッシュの参照数が0になってから、予め定められた時間T_coldの間アクセスがない場合に、コールドメモリ領域からハードディスクに移動してもよい。これによって、コールドメモリ領域の空き容量を増やすことができ、アクセス頻度の小さなデータをコールドメモリ領域に保持することが可能となる。これによって、メモリ不足の発生をふせぐことができるという効果を発揮する。ここで、T_coldは固定値ではなく、コールドメモリ領域の空き容量が小さいほど小さな値となるよう設定することも可能である。さらに、システムキャッシュデータがプロセスによりWriteアクセスされることでダーティなデータ、すなわちハードディスク内の対応するデータとは異なる値となっている場合には、T_coldをクリーンなデータの場合と比べて、小さな値とすることが望ましい。
(メモリモジュールのHW構成)
図3にメインメモリに用いるメモリモジュールの構成例を示す。メモリモジュール101は、8個のメモリチップ(LSI)102を、基板上に有している。メモリモジュール101は、アドレスとコマンドと制御信号とを送受信するための信号線を有し、当該信号線を介して、アドレスとコマンドと制御信号を、各メモリチップ102へ伝える。コマンドには、以下のようにReadコマンドおよびWriteコマンドに加え、メモリのセグメント(部分領域)の電力状態を変更するPowerStateChangeコマンドがある。制御信号は、クロック信号やread/writeタイミング信号などである。また、メモリモジュール101は、データの送受信を行う信号線を有し、当該信号線を介して、各メモリチップとデータを送受信する。
Figure 2014167700
ここで電力状態には、アクティブとスリープの2状態が存在する。アクティブなセグメントは、データのread/writeが可能である。スリープであるセグメントは、記憶しているデータを保持し続けるが、read/writeはできない。セグメントの消費する電力は、アクティブ状態の方が、スリープ状態よりも大きい。
DRAMにおいて、スリープ状態とは、例えば、セグメントを選択してセルフリフレッシュモードにすることで実現できる。セルフリフレッシュモードとは、メモリモジュールあるいはメモリチップのセグメント内部で、リフレッシュ動作(DRAMではメモリセルに保持した情報が時間とともに消失するため、メモリセルの内容を読み出して再度そのセルに書き込む動作)を行う状態である。リフレッシュ間隔を長くすることで、消費電力を削減することができる。さらに、一般にDRAMのメモリセルの情報保持時間は低温であるほど長くなる。このため、このセルフリフレッシュ動作は、低温であるほどリフレッシュ間隔を長くすることが望ましい。さらに、メモリセル内で情報保持時間にばらつきがあるため、そのばらつきを考慮して、リフレッシュ間隔をなるべく長くすることが望ましい。
一方MRAMのような不揮発性メモリでは、情報を保持するための電力は不要である。このため、セグメントを選択し、そのメモリセルの読出し・書き込み用の信号への給電を停止あるいは電圧を下げることで、スリープ状態を実現できる。さらにPLL(Phase-locked loop)、カラムデコーダ、ロウデコーダ、センスアンプ回路などの他の回路への給電停止あるいは電圧の低電圧化、そしてクロック停止を行うことが望ましい。
メモリモジュール101は、上記した2種類の信号線を介して、CPU11とつながる。CPU11は複数のメモリモジュールと接続することができる。例えば、CPU11は、1チャンネル当たり2つのメモリモジュールを接続することができる。この場合、CPU11が3チャンネル有する場合には、合計6個のメモリモジュールを接続することが可能である。
各メモリチップ102のメモリ領域は、8セグメントに分かれている。各メモリチップ102は、セグメント単位で、電力状態を変更できる。メモリモジュール101の外部から、例えば、セグメント1に対して電力状態を指定すると、全てのメモリチップ102のセグメント1の電力状態が指定された状態となる。なお、この構成は一例であり、全てのメモリチップ102のセグメント1をそれぞれ別個のセグメントとして扱って、個別に電力状態制御を行う構成も可能である。
図4にメモリモジュールの物理アドレスとセグメントの関係を示す。メモリモジュール101が8つのセグメントを有する、すなわち各メモリチップ102がそれぞれ8つのセグメントに分かれているとする。アドレス0000000から1fffffffまでの領域がセグメント0に属し、アドレス20000000から3fffffffまでの領域がセグメント1に属する様子が示されている。
この例では各セグメントのサイズは等しい構成になっているが、各セグメントの大きさは任意の値に構成しても構わない。たとえば、セグメント0がメモリ容量の1/128であり、セグメント1が1/128、セグメント2が1/64、セグメント3が1/32、セグメント4が1/16、セグメント5が1/8、セグメント6が1/4、セグメント7が1/2のようになっていてもよい。
また、図4では8つのセグメントを有する場合を例に説明しているが、セグメントの数は8つに限定されない。一般にセグメント数は多いほど、高い消費電力削減効果を期待できるが、同時にセグメントを実現するための回路規模が大きくなる。セグメント数の増加は、その回路の実装コストの増加や消費電力増加につながる可能性がある。
計算機が4つのメモリモジュールを有しており、各メモリモジュールが8つのセグメントを有している場合には、計算機は合計32のセグメントを有していることになる。もちろん、計算機内の各メモリモジュールが異なる数のセグメントを有していても構わない。
(動作原理概略)
計算機の電源を投入すると、BIOSと呼ばれるプログラムがメインメモリ31に読み込まれ、CPUコア12にて実行される。BIOSは、計算機のハードウエア構成を確認し、各デバイス(HDDや無線NIC)を初期化し、HDD41に格納されたOSを、メモリ31に読み込む。OSがメモリ31に読み込まれた後は、BIOSはOSに制御を移す(OSの所定の命令にジャンプする)。OSは起動処理を行ない、予め定められたプログラムを実行する。あるいは外部入力手段の入力に従って、プログラムを起動する。
OSはアプリケーションからのメモリ確保要求、メモリ解放要求、確保したメモリへのread/write要求に従い、メインメモリにアクセスを行う。この際に、セグメント毎にアクセス頻度を計測する。セグメントのアクセス頻度(計算方法は後述)が予め定められた閾値よりも高い場合にはそのセグメントの電力状態をアクティブに設定し、そうでない場合にはスリープに設定する。スリープに設定されたセグメントの領域に対するread/writeが発生した場合には、OSはそのセグメントをアクティブに設定し、read/writeが終了した後にスリープに設定を戻す。このように、アクセス頻度の少ないセグメントをスリープ状態とすることで、メインメモリの消費電力を削減することができる。
ここでは、スリープ状態のセグメントに対してread/writeする際に、その電力状態をアクティブにし、read/write後にスリープに戻すのをOSが行う例を示した。しかしながら、この電力状態の変更は、OSの代わりにメモリコントローラが行ってもよいし、メモリモジュール101上のメモリチップが行ってもよい。あるいは、メモリモジュール101上の制御回路(図示しない)が行ってもよい。
さらに、メモリコントローラは、未処理のメモリアクセス要求を多数保持している場合には、あるスリープセグメントに対するアクセスをなるべくまとめて処理することが望ましい。つまり、そのスリープセグメントをアクティブ状態にし、保持しているそのセグメントへの複数のアクセス要求をまとめて処理し、その後に、そのセグメントをスリープ状態に戻す。これにより、セグメントの電力状態の変更回数を減らすことができ、処理性能を向上できる。
ここで、セグメントの電力状態をアクティブにするか、スリープにするかの判定の閾値λ’は、メモリモジュールの特性により決めることができる。例えば、
Pa:アクティブ状態を維持するために必要な電力
Ps:スリープ状態を維持するために必要な電力
Psa:スリープ状態からアクティブ状態に遷移する際に必要な電力
Pas:アクティブ状態からスリープ状態に遷移する際に必要な電力
とすると、以下の式で、求めることができる。
Figure 2014167700
これは、スリープさせることによる電力利得(アクティブに滞在する電力とスリープに滞在する電力の差)が、スリープ状態のセグメントにアクセスする電力(電力状態をアクティブとスリープに遷移させる電力)の何回分に相当するかを求めている。
各セグメントに対してアクセス頻度と閾値λ’を比べ、アクセス頻度の方が大きければアクティブ状態とし、そうでなければスリープ状態とする。消費電力よりもメモリアクセスの遅延を少なくしたい場合には、アクセス頻度と比較する閾値を、λ’よりも小さくすることが望ましい。
また、セグメント毎に異なる閾値を用いることも可能である。例えば、セグメントのサイズが異なる場合には、大きいセグメントほど閾値を大きくすることで、大きいセグメントほどスリープ状態にしやすくする。これにより、消費電力削減効果を大きくすることが可能である。
CPU負荷によりCPUクロック数が動的に変化する場合には、CPUクロック数が大きくなるほど、この閾値を小さくすることが望ましい。これは、メモリアクセス頻度はCPUクロック数に比例して大きくなることが、経験則より知られているためである。
また、処理遅延が大きくても問題ない場合は、この閾値λ’を大きくすることが望ましい。たとえばユーザからのマウス入力やキーボード入力がある一定時間発生しない場合や、これによりディスプレイの表示を停止した場合がある。これにより、多くのセグメントがスリープ状態となり、消費電力を削減することが可能となる。
また、消費電力削減への要求度に応じて、この閾値を変化することも可能である。例えば、バッテリ残量が少ないほど、この閾値を大きくすることで、消費電力を削減することができる。もちろん、GUIにて、“ハイパワー”、”ノーマル“、”ロングパワー“などのメニューをユーザに選択させることで、ユーザがこの閾値を調節できるようにしてもよい。
ここで、アクセス頻度の計測は、例えば以下のように行う。
時刻Tから2Tの間のセグメントiのアクセス回数をSi(T,2T)とする。時刻Tから2Tの間のアクセス頻度をFi(T,2T)とすると、以下の式でアクセス頻度を計算できる。ただし、aは0以上1以下の定数である。
Figure 2014167700
時間間隔T毎にFi(nT,(n+1)T)を求め、これを閾値と比較することで、次の時間区間(n+2)Tにおけるセグメントiの電力状態(アクティブまたはスリープ)を決定する。
ここで、システムキャッシュデータに対しては上述したとおり、アクティブ状態の領域(すなわちホットメモリ領域)に存在するシステムキャッシュデータは、プロセスの参照数が0になった後、T_hot以上経過した場合には、スリープ状態の領域(すなわちコールドメモリ領域)に移動する。また、スリープ状態の領域(すなわちコールドメモリ領域)に存在するシステムキャッシュは、プロセスの参照数が0になった後、T_cold以上経過した場合には、ハードディスクに書き戻す。T_coldはT_hot以上の値である。このように、アクセスされていないシステムキャッシュをコールドメモリ領域に移動することで、システムキャッシュの保持電力は低減され、全体として消費電力を削減することが期待できる。
ここで、予めシステムキャッシュ用のセグメントを定めておき、該セグメントをスリープ状態(すなわちコールドメモリ領域)とし、当該セグメントにはシステムキャッシュ以外のデータを格納しないようにすることもできる。これにより、システムキャッシュ用の保持領域が不足することを防ぐことができる。なお、該セグメントの空き容量が大きい場合にはシステムキャッシュ以外のデータも格納できるよう変形することも可能である。
(アクセス頻度以外の情報による電力状態の決め方)
上述の例では、アクセス頻度Fi( )を用いて、セグメントの電力状態を決めた。これは、将来のアクセス頻度を、過去のアクセス頻度Fi( )を用いて予測し、これにより将来の消費電力が最も小さくなるようにセグメントの電力状態(アクティブまたはスリープ)を決めていると言える。そのため、将来のアクセス頻度を予測する方法ならば同様に適用することが可能である。
別の例としては、OSのタスクスケジューリング情報を参考に、セグメントの電力状態を決めることができる。タスクスケジューリングとは、マルチタスクOSにおいて、複数のタスクに対してCPUにアサインする順番を決めるアルゴリズムである。CPUにアサインされたタスクは、予め定められたCPU時間だけCPUによる処理を実行される。その後、次にスケジューリングされたタスクが、CPUにアサインされる。タスクスケジューリング情報(例えばスケジュールキュー)を参照すれば、タスク実行順序を推測することができる。そのため、予め定められた時間ウィンドウ内でCPUにアサインされないタスクを列挙し、それらのタスクが使用しているメモリ領域を調べる。各セグメントにおいて、CPUにアサインされないタスクが使用するメモリの使用量が予め定められた量よりも大きいセグメントの電力状態をスリープとして決定することができる。CPUにアサインされたタスクによる使用量がゼロのセグメントについては、無条件にスリープとしてもよい。
(OSの動作詳細)
図5に論理アドレスから物理アドレスへのアドレス変換の動作を模擬的に示す。
MMU15はアドレス変換表を有している。アドレス変換表を用いることで、論理ページ番号から対応するエントリを検索できる。ここで、例として、アドレス幅を32bit、ページサイズを4KBとして説明を行う。CPUは32bitの論理アドレスのうち上位22bitを論理ページ番号として用い、下位10bitをページ内アドレスとして用いる。論理アドレスから決定される論理ページ番号からアドレス変換表を検索し、該当するエントリを得る。そのエントリの物理ページアドレスに、ページ内アドレスを結合したものが物理アドレスである。ここで結合とは、物理ページ番号22bitの下位ビットとしてページ内アドレスを結合することを意味する。
検索されたエントリは、その物理ページに関する様々な属性を保持している。属性の例としては、キャッシュの可否や、アクセス情報(書き込み可否)、参照情報(参照されたか否か)、修正情報(修正されたか否か)、存在情報(物理メモリ上に存在するか否か)を挙げることができる。
ここで、MMU15は一つのアドレス変換表を有する場合を示した。そうではなく、マルチレベルページテーブルと呼ばれる階層構成をなす複数のアドレス変換表を有していてもよい。マルチページテーブルを用いることにより、MMU15の管理するテーブルサイズを小さくすることができる。大切なことは、論理アドレスから対応する物理アドレスの情報を得られることである。
また、MMU15の有するアドレス変換表は、メインメモリ31上にOSが保持しており、コンテキストスイッチ等のタイミングで、CPUコア12上にて動作しているプロセス(あるいはOS)に対応するアドレス変換表を、MMU15にロードすることも可能である。
物理アドレスが得られると、図6に示したセグメント情報管理テーブルを参照し、物理アドレスに対応するエントリを検索する。例えば、物理アドレスefffffffがMMU15から得られた場合には、図6のテーブルを参照し、これがセグメント7に属し、セグメント7がスリープ状態であることが分かる。スリープ状態の場合には、該セグメントをアクティブ状態に変更する命令をメモリモジュール101に送信し、その後メモリモジュール101にアクセス(書き込みまたは読み出し)を行う命令を送り、この後、該セグメントをスリープ状態に変更する命令をメモリモジュール101に送信する。
図6のテーブルのアクセス回数は、上述したSi( )の値を格納しており、アクセス毎に1増加する。たとえばあるデータをメモリにH回に分けて書き込みが行われた場合は、このときアクセス回数に値Hが加算される。アクセス回数のインクリメントは、MMU15が行ってもよいし、CPUコア12が行ってもよいし、別の手段で行ってもよい。
また、アクセス頻度は、上述のFi( )を格納している。OSは時間間隔T毎のタイマ割り込みにより、数式2を用いてアクセス頻度を計算し、さらに、図6のテーブルのアクセス回数をゼロクリアする。さらに、アクセス頻度が予め定められた電力状態判定閾値よりも小さいセグメントについては、そのセグメントがアクティブ状態であれば、そのセグメントをスリープ状態とする命令をメモリモジュール101に発行する。アクセス頻度が予め定められた電力状態判定閾値以上のセグメントについては、そのセグメントがスリープ状態であれば、アクティブ状態とする命令をメモリモジュールに発行する。電力状態(スリープまたはアクティブ)が変化しないセグメントについては、命令を発行する必要は無い。
このようにアクセス頻度の少ないセグメントをスリープ状態とすることで、メモリの消費電力を削減することが可能である。また、スリープセグメントへのアクセスには、該セグメントをアクティブ状態に変更した後で、アクセスする必要があるため、アクセス遅延が増す。しかしながら、アクセス頻度の少ないセグメントをスリープ状態としているため、そのアクセス遅延の増加による計算機の処理速度への影響を小さくすることができる。
次に、計算機がACPIのS5状態から起動した場合を考える。ACPIのS5状態とは、Windowsでいうシャットダウン操作により遷移する状態であり、それまでの実行状態は保持されない。S5から起動した場合、図6のセグメント情報管理テーブルの初期値は、アクセス回数とアクセス頻度は0である。そこで、S5からの起動時は、電力状態はすべてのセグメントをアクティブとし、起動完了後の予め定められたタイミング(たとえば起動完了後一定時間経過したタイミング)で、アクセス頻度に基づく電力状態設定を行うようにすることが望ましい。これにより、比較的メモリアクセスの多い起動時の処理性能の低下を防ぐことができる。
(セグメントの電力状態の変更のバリエーション)
上では、CPUコアがメモリモジュールにセグメントの電力状態を変更する命令を発行する場合を例に挙げて、説明を行ったが、この命令をMMU15が発行しても構わない。また、図6のセグメント情報管理テーブルをメモリモジュール101が保持し、アクセス回数とアクセス頻度の計算を行い、メモリモジュール101内でセグメントの電力状態を変更することも可能である。
(メモリの確保・解放)
プロセスあるいはOSがメモリを必要とする場合、OSは物理ページを確保し、対応する論理アドレスを決め、アドレス変換表に書き込む。図7は、物理メモリの使用状態を模擬的に記した図である。
セグメントあたり物理ページが4つあり、ページ0はアドレス00000000から00000fffの領域であり、ページ1はアドレス000001000から00002fffの領域である(ページサイズ4KB)。ページ1,2,3,4は既にメモリ確保され使用中であり、残りは空き(未使用)である。
OSは、新たにメモリを確保する必要がある場合、空きページの中で最もアドレスの若いものを確保する。このようにすることで、空ページをアドレスの大きい領域にまとめることができ、アドレスの大きいセグメントをスリープにできるチャンスが増える。そして、論理アドレスと物理アドレスの対応をアドレス変換表に記す。
メモリを解放する場合には、アドレス変換テーブルの該当する領域を削除する(あるいは該当領域のエントリの属性値を未使用に変更する)。
(メモリモジュールの構成)
図8は、メモリモジュール101の構成図である。図8に示す構成例は、4セグメントの構成である。メモリモジュールは、制御部201と、リフレッシュカウンタ202と、アドレスバッファ203と、I/Oバッファ204と、4つのメモリセルアレイ部211、212、213、214とを備える。各メモリセルアレイ部は、メモリセルアレイ、ロウデコーダ、カラムデコーダ、センスアンプを備える。
制御部201は、外部からコマンドあるいは制御指示を受信し、それに従いメモリモジュール内を制御する。制御の例として、セグメントを指定した電力状態の変更がある。
リフレッシュカウンタ202は、DRAMの場合に必要になるもので、メモリ保持内容が消失しないようにリフレッシュ動作を行う際の、リフレッシュ対象セルとタイミングを指示する。
アドレスバッファ203は、外部から物理アドレスを受信し、それをカラムアドレスとロウアドレスに分け、カラムデコーダとロウデコーダに送信する。このとき、アドレスバッファ203は、受信したアドレスから対応するセグメントを導出し、導出されたセグメントにのみカラムアドレスとロウアドレスを送信することが望ましい。カラムアドレスおよびロウアドレスの夫々を受信したカラムデコーダとロウデコーダは、そのアドレスで指定されたメモリセルの値を読み込み(読み出しコマンドの場合)、I/Oバッファ204に送信する。
各センスアンプは、メモリセルに保持されている情報を読み出す際の信号増幅を行う。
各メモリセルアレイは、複数のメモリセルから構成され、情報保持を行う。
I/Oバッファ204は、メモリセルアレイと送受信するデータをいったん蓄積する。
ここで、カラムアドレスを送信する信号線が、アドレスバッファ203とセグメント0との間が一番短く、アドレスバッファ203とセグメント3との間が一番長いとする。アドレス線が長いほどアドレス線を駆動する電力消費が大きいとすると、その電力消費の大きいセグメントほど、なるべくスリープ状態とすることが望ましい。例えば、上述のセグメントの順序という点では消費電力の大きいセルアレイほど、セグメントの順序を大きくすることが望ましい。
また、図2で示したように、複数のメモリチップ102にて一つのメモリモジュールが構成されている場合、例えば、図2で右端のメモリチップのセルアレイほど大きなセグメント順序をアサインすることで、アクセスの遅延の大きいセルアレイへのアクセスを減らすことができる。
さらに、メモリモジュール内でスリープセグメント数が同じ場合でも、チップ間でスリープセグメントが散在するよりも、一つのチップにスリープセグメントが集中する方が消費電力削減効果が高い場合がある。例えば、一つのメモリチップ内の全てのセグメントがスリープになると、消費電力削減効果が高い。この場合、メモリチップ内およびメモリチップ間で、連続したセグメント順序をつけることが望ましい。例えば、4個のメモリチップを搭載したメモリモジュールを考えると、メモリチップ0内にセグメント0とセグメント1を配置し、メモリチップ1内にセグメント2とセグメント3を配置し、メモリチップ2内にセグメント4とセグメント5を配置し、メモリチップ3内にセグメント6とセグメント7を配置することが望ましい。
さらに、計算機が複数のメモリモジュールを備える場合には、計算機内でスリープセグメント数が同じでも、メモリモジュール間でスリープセグメントが散在するよりも、一つのメモリモジュールにスリープセグメントが集中すると、消費電力削減効果が高い場合がある。例えば、一つのメモリモジュール内の全てのセグメントがスリープになると、消費電力削減効果が高い。この場合は、メモリモジュール内およびメモリモジュール間で、連続したセグメント順序をつけることが望ましい。例えば、二つのメモリモジュールを備える場合には、メモリモジュール0にセグメント0とセグメント1を配置し、メモリモジュール1にセグメント2とセグメント3を配置することが望ましい。
また、複数のメモリモジュールを計算機が有し、あるメモリモジュール(あるいはメモリ機能を有する半導体)はCPUと同じLSIパッケージに存在し、別のメモリモジュールは別パッケージにて実現されているとする。このとき、同じパッケージ内のメモリモジュールのアクセスは低消費電力・低アクセス遅延で実現できることが期待できる。このため、同じパッケージ内のメモリモジュールほどアクティブ状態になることが望ましい。すなわちセグメント順序を小さく割り当てることが望ましい。
図9にメモリモジュールの別の構成例を示す。
図9では、4バンク構成で各バンク(メモリセルアレイ)311、312、313、314がセグメントに分割されている。CPUは物理アドレスを、以下のようにメモリアドレスと対応付けることが望ましい。ここで、カラムアドレス側がロウアドレス側よりもMSB(Most Significant Bit)である。転送単位とは、一度のアクセスで読み書きするデータのビット数を示している。チャネルとは、メモリチャネルの番号を示す。バンクとは、バンクの番号を示す。同一チャネルのDIMM番号とは、同じチャネルに接続されている各DIMMを識別する番号を示す。
Figure 2014167700
こうすることで、メモリセルアレイの同一行に対してバンクを切り替えながらメモリにアクセスすることで、特に転送単位が大きい場合に、メモリアクセスの高速化が可能である。また、図4に示したようにセグメント内で物理アドレスが連続領域となるため、転送単位が大きい場合にも、複数のセグメントを跨いだアクセスが発生しづらい効果がある。この効果は、図8のメモリモジュールの構成でも、カラムアドレスをロウアドレスよりもMSB側とすることで、有効となる。
(システムキャッシュデータに対する動作)
OS上で動作するプロセスが、例えばfopen()システムコールを呼ぶことで、あるファイルの参照を宣言すると、OSは、そのシステムコールの引数で与えられるファイル名(例えば “/etc/appl.cfg”)に対応するファイルをハードディスクから読み、そのデータをメモリ上に書き出す。そして、そのメモリの物理アドレスをプロセス内の論理アドレスへ対応付ける(図2参照)。そのプロセスが、例えばfclose()システムコールを呼び、その引数で与えられたファイルの参照終了を宣言すると、プロセス内の論理アドレスとファイルデータの物理アドレスとの対応付けを削除する。UNIXのlibcやWindowsのDLLのような動的ライブラリにおいては、プロセスが明示的にファイル参照を宣言することはないが、プロセスの実行時に必要なライブラリをOSは知ることができる。このため、OSは明示的なファイル参照の宣言がなくとも、プロセス実行時に必要なライブラリファイルをメモリ上に配置する。
図10は、システムキャッシュデータのOS内の管理構造を示している。ファイル名と対応づいたファイル識別子を基にページハッシュテーブル(page hash table)を検索することで、該当するシステムキャッシュに関するリストを得る。ここでファイル識別子とは、例えばUNIXのi nodeである。
Page has tableの各エントリは、(ファイル識別子、参照数、経過時間、next_hash)の情報を有する。ここで“参照数”とは、そのファイルを参照しているプロセスの数である。“経過時間”とは、参照数が0より大きい値から0になった時点からの経過時間である。“next_hash”は、システムキャッシュに関するリストのファイルデータエントリへのポインタである。
図10ではシステムキャッシュに関するリストは、ファイル識別子に対応したシングルリンクドリストで構成されている。このシングルリンクドリストの各エントリ(ファイルデータエントリ)は、(ファイル識別子、オフセット、データ、next_hash)のフィールドの値を有する。“オフセット”は、そのファイル識別子に対応するファイルの先頭から何バイト目からのデータをこのエントリが保持しているかを示す。“データ”は、ファイルデータを格納する物理メモリアドレスである。“next_hash”は、次のエントリを指すポインタである。1つのファイルデータエントリが指すファイルデータは、たとえば1ページ分のデータに対応する。
プロセスがファイルの参照を宣言すると、OSはそのファイル識別子からpage hash tableを検索し、もしエントリが存在すれば、そのファイル識別子に対応するリストのデータの物理アドレスを、そのプロセスの仮想空間内に割り当てる。この割り当ては、プロセスのアドレス変換表(図5参照)を用いて行われる。
図12は、本実施形態に係る計算機のメモリ電力制御に関わる処理部のブロック図である。本処理部は、電力状態決定部401と、電力状態制御部402と、入出力処理部403と、電力状態記憶部404とを備える。各ブロックの機能は、これらの機能の実行を記述したプログラム命令を含むプログラムを実行することにより、またはハードウエアにより、または、これらの組み合わせにより実現される。これらの機能の一部をCPUコア12とは別のハードウエアに備えさせてもよい。当該別のハードウエアは、メモリモジュールあるいはメモリチップに実装されていてもよい。上記プログラムは、コンピュータ読取可能記録媒体に格納され、当該記録媒体から読み出して実行してもよい。
図12に示すように、入出力処理部(普通はCPU)は、外部(普通はOSから)メモリアクセス要求を受信すると((1))、これに含まれるアドレスを電力状態決定部401に送信するとともに、このアドレスを含むセグメントの電力状態を電力状態記憶部404から得る。もし、その電力状態がスリープ状態の場合は、電力状態制御部402にそのセグメントをアクティブ状態にするよう要求し、その後、メモリアクセス要求に従い、データのreadあるいはwriteを実行する((2))。電力状態がスリープであった場合には、電力状態制御部402に、そのセグメントをスリープ状態に戻すことを要求する。
ここでメモリアクセス要求がread要求の場合は、当該read要求にはアドレス情報が含まれる。メモリからの応答には、メモリ内の指定されたアドレスに保持されていたデータ情報が含まれる。また、メモリアクセス要求がwrite要求の場合は、当該write要求に、アドレス情報と書き込むべきデータ情報が含まれる。メモリからの応答には、書き込み完了を伝えるイベントが含まれる。
電力状態決定部401は、入出力処理部403からアドレスを受信するとこれの属するセグメントのアクセス回数をインクリメントする。また、時間間隔T毎にアクセス頻度をアクセス回数に基づき計算し、導出したアクセス頻度を基に、各セグメントの電力状態(スリープまたはアクティブ)を決定する。電力状態決定部401は、決定した各セグメントの電力状態を、電力状態制御部402に送信する。
電力状態制御部402は、電力状態決定部401からセグメントの電力状態を受信すると、電力状態記憶部404に保持されている現在の電力状態と比較する。変更が必要であれば、電力状態を変更する((3))とともに、電力状態記憶部404に新しい電力状態を設定する。
電力状態記憶部404は、各セグメントの電力状態を記憶している。
図12に示した構成では、図6のセグメント情報記憶テーブルは、電力状態記憶部404と電力状態決定部401で共有保持することが考えられる。
図13は、本発明の実施形態に係る計算機のメモリデータ管理制御に関わる処理部のブロック図である。本処理部は、システムデータ処理部501と、アドレス変換表管理部502と、メモリ管理部503と、デバイスアクセス部504と、タイマ505とを備える。
アドレス管理表管理部502は、図5に示したアドレス管理表を管理する。すなわち物理アドレスと、各プロセスの論理アドレスとの対応関係を保持・変更する。
メモリ管理部503は、アドレス管理表に基づき、物理アドレスと論理アドレスとの変換を行う。論理アドレスを入力として、これに対応する物理アドレスを出力する。
メモリ管理部503とアドレス管理表管理部502は、図1に示したMMU15の機能や、メモリコントローラの機能等を含み、メインメモリへのデータのread/write処理も行う。メモリ管理部503に、図12に示した構成を組み込んでもよい。
デバイスアクセス部504は、メモリ管理部503の制御の下、外部のハードディスクへのデータのread/write処理を行う。
タイマ505は、一定時間毎にシステムデータ処理部501にイベントを送信する。
システムデータ処理部501は、システムデータ管理部506と、処理条件判定部507と、データ処理部508とを備える。
システムデータ管理部506は、図10に示したファイルデータ管理構造を保持・変更する。
処理条件判定部507は、システムデータ管理部506から、参照数0のファイルデータに対して、そのデータがホットメモリ領域上にあるか、コールドメモリ領域上にあるかを判別する。ホットメモリ領域上にあるデータについては、参照数0になってからの経過時間と、閾値T_hotとに基づき、コールドメモリ領域へ移動するかを判断し、判断の結果をデータ処理部508に通知する。コールドメモリ領域に存在するデータについては、参照数が0になってからの経過時間と、閾値T_coldに基づき、データを削除するかを判断し、判断の結果をデータ処理部508に通知する。ダーティなデータなど、ハードディスクにデータを書き戻す場合は、データ処理部508にその旨を通知してもよい。
データ処理部508は、処理条件判定部507からの通知内容に従い、その処理を実行する。ホットメモリ領域上のデータをコールドメモリ領域に移す場合は、そのデータを移動することをメモリ管理部503に指示する。メモリ管理部503は、指示にしたがってデータを移動し、またアドレス管理表を書き換える。また、データ処理部508は、データ処理の結果をシステムデータ管理部506に通知し、システムデータ管理部506は、図10のファイルデータ管理構造を実際のメモリ保持状態と整合させるよう更新する。
データ処理部508は、コールドメモリ領域上のデータを削除する場合は、そのデータを削除することをメモリ管理部503に指示する。メモリ管理部503は、指示にしたがってデータを削除し、またアドレス管理表を書き換える。また、データ処理部508は、データ処理の結果をシステムデータ管理部506に通知し、システムデータ管理部506は、図10のファイルデータ管理構造を実際のメモリ保持状態と整合させるよう更新する。削除するデータをハードディスクに書き戻す場合には、メモリ管理部503に指示を出し、メモリ管理部503からデバイスアクセス部504を介してデータを書き戻す。
図11に、図13に示した処理部の動作として、システムキャッシュの処理に関する動作のフローチャートを示す。本フローの処理は、page hash tableの各エントリ(すなわちメモリ上の各ファイル)に対して実行する。なお、前述したように、図10の page hash tableの各エントリは、メモリ上の各ファイルに関する情報のリストのリストヘッダである。図11のフローチャートに従った動作を、一定時間間隔毎に行うことで、システムキャッシュの移動を行う。
タイマ505から、定期的にイベントがシステムデータ処理部501に出力される。システムデータ処理部501がイベントを検知すると、処理条件判定部507が、page hash tableにおけるエントリ(ファイル)を1つ特定し、当該エントリの参照数が0か否かを検査する(S101)。参照数が0でなければ(すなわち1以上であれば)、すべてのエントリを処理したかを検査し(S102)、まだ処理していないエントリがpage hash tableに存在すれば、次のエントリに移動する(S103)。すべてのエントリを処理した場合は、本フローの動作を終了する。
参照数が0であれば、処理条件判定部507は、そのファイルのファイルデータエントリに移動し(S104)、ファイルデータがホットメモリ領域およびコールドメモリ領域のどちらに存在するかを検査する(S105)。
ファイルデータがホットメモリ領域に存在するならば、処理条件判定部507は、参照数が0になってからの経過時間がT_hotを越えたかを判断する(S106)。つまり参照数が0になった後、参照数0の状態が第1の時間継続したかを判断する。当該経過時間がT_hotを越えた場合(S106のYES)、コールドメモリ領域に空きがあれば(S107のYES)、そのファイルデータをコールドメモリ領域に移動することを決定し、データ処理部508にその決定を通知する。データ処理部508は、メモリ管理部503を介してデータを移動し、アドレス管理表を更新する(S108)。また、システムデータ管理部506は、そのファイルデータのエントリのデータフィールドが指す領域を移動先(コールドメモリ領域内の物理アドレス)に変更する(S109)。このように、物理メモリ上のデータを移動し(上記物理ページ管理データの使用中フラッグも操作する)、ファイルデータエントリのデータフィールドが指す先を移動先の物理ページとなるように変更する。
処理条件判定部507は、参照数が0になってからの経過時間がT_hot以下(S106のNO)、あるいはコールドメモリ領域に空きがなければ(S107のNO)、当該ファイルデータの移動を行わないことを決定する。
処理条件判定部507は、すべてのファイルデータエントリを処理したかを検査し(S110)、まだ処理していないエントリが存在するときは、現在のエントリ内のnext_hashの指す次のエントリの処理に進む(S104)。
一方、処理条件判定部507は、ファイルデータがコールドメモリ領域に存在するならば、参照数が0になってからの経過時間がT_coldを越えたかを判断する(S111)。つまり参照数が0になった後、参照数0の状態が第2の時間継続したかを判断する。なお、ホットメモリ領域上で参照数が0になってからコールドメモリ領域に移動した場合と、もともとコールドメモリ領域上に存在し、コールドメモリ領域に存在するときに参照数が0になった場合が考えられる。前者の場合は、ホットメモリ領域上で参照数が0になった時点が経過時間の起点となり、後者の場合は、コールドメモリ領域上で参照数が0になった時点が経過時間の起点となる。経過時間がT_coldを越えていれば、当該ファイルデータの削除をデータ処理部508に指示し、これに応じてデータ処理部508はメモリ管理部503を介してデータを削除し(S112)、システムデータ管理部506は、ファイルデータエントリをリストから削除する(S113)。ファイルデータ削除とは、(図示しない)物理ページ管理データの使用中フラッグ(データの有無を示すフラッグ)をクリアすることを意味する。ファイルデータエントリをリストから削除するとは、page hash tableの該当ファイルデータエントリをクリアすることを意味する。ファイルデータエントリを削除する際は、削除するファイルデータエントリの前段のエントリ(page hash tableのエントリか、あるいはファイルデータエントリ)のnext_hashの値を、削除するファイルデータエントリの後段のファイルデータエントリのファイル識別子を指すように更新する。処理条件判定部507は、すべてのファイルデータエントリを処理したかを検査し(S110)、まだ処理していないエントリが存在するときは、現在のエントリ内のnext_hashの指す次のエントリの処理に進む(S104)。
図11のフローチャートに従った動作を、一定時間間隔毎に行うことで、システムキャッシュの移動を行う。メモリの空き容量が少ない場合には、その動作の時間間隔を小さくしてもよい。また、T_hotおよびT_cold の両方または一方の値は、ファイルデータがダーティ(プロセスによりデータの値の変更が行われた)であるか、クリーン(データの値の変更が行われていない)であるかによって、異なる値を用いることもできる。ダーティの場合は、クリーンの場合よりも小さな値を用いることが望ましい。これにより、ハードディスクへの書き戻しの必要なダーティデータを優先して、メモリを解放することができる。よって、メモリが不足した際にも、ダーティデータの書き戻し時間によりメモリ解放に要する時間が長くなり、結果として新たなデータにメモリを割り当てる処理に要する時間が長くなる現象を防ぐことができる。
(備考)
本実施形態によれば、セグメント毎のメモリアクセス頻度を計算し、そのアクセス頻度を元にセグメントの電力状態を制御している。本実施形態においては様々な変形が可能であり、例えば、MMUを有さない計算機アーキテクチャにおいても実行可能である。
さらに、本実施形態では、OSがメモリアクセス頻度を算出し、これを基に電力状態の変更要求をメモリモジュールに送信した。別の構成として、メモリモジュールがアクセス回数の計測およびアクセス頻度の算出を行い、メモリモジュール自身がセグメントの電力状態を変更することも可能である。この場合、メモリモジュールはスリープセグメントへのメモリアクセスを検出した場合には、そのセグメントをアクティブ状態に変更し、アクセスを処理した後に、スリープ状態に該セグメントを移行する。
さらに、本実施形態では、OSがメモリアクセス頻度を算出し、これを基に電力状態の変更要求をメモリモジュールに送信した。別の構成として、デーモンプロセスのようなユーザ空間で実行されるプログラムがこれを行ってもよい。または、ソフトウエアのCPU処理ではなく、別のハードウエアによる処理で実現することも可能である。
本実施形態では、メモリはアクティブ状態とスリープ状態の2つの電力状態を有するとして説明を行ったが、3つ以上の電力状態を有することも可能である。例えば、読み書き可能な状態を第1アクティブ状態と第2アクティブ状態に分ける。第1アクティブ状態は第2アクティブ状態よりも、消費電力は大きいが、アクセス遅延は小さい。これは、たとえば、例えば、メモリ内部のクロックあるいはリフレッシュレートのどちから一方あるいは両方を、第1アクティブ状態の方が第2アクティブ状態よりも大きくすることで実現できる。第1アクティブ状態のセグメントのアクセス頻度Fi( )がある閾値よりも小さい場合に、第2アクティブ状態にする。もちろん、アクセス頻度がさらに小さい場合(アクセス頻度が、当該ある閾値より小さい別の閾値よりも小さい場合)にはスリープ状態にすることが望ましい
また、メモリへの読み書きのアクセスができない状態を複数に分けることができる。例えば、当該状態を、第1スリープ状態と第2スリープ状態に分ける。第1スリープ状態は第2スリープ状態よりも、消費電力は大きいが、アクティブ状態にするための遅延は小さいと定義することもできる。これは、アクセス回路のうち、給電を停止している回路部分の大きさで実現することができる。例えば、アクセス回路においてPLL以外の回路の給電を停止しているのが第1スリープ状態であり、アクセス回路においてPLLを含むほとんどの回路の給電を停止しているのが第2スリープ状態として実現することができる。第2スリープ状態のセグメントのアクセス頻度Fi( がある閾値よりも大きい場合に、第1スリープ状態にする。もちろん、アクセス頻度がさらに大きい場合(アクセス頻度が、当該ある閾値より大きい別の閾値以上の場合)には、アクティブ状態にすることが望ましい。
本実施形態では、readとwriteを区別せずアクセス頻度を計算したが、readアクセス頻度とwriteアクセス頻度を計算し、これに基づき、電力状態を設定することも可能である。たとえば、readアクセス頻度が閾値より小さいとき、セグメントの電力状態として、readに対してアクセス遅延を大きくすることで、メモリの消費電力が小さくなるように回路を構成する。さらに、writeアクセス頻度が閾値より小さいとき、セグメントの電力状態として、writeに対してアクセス遅延を大きくすることで、メモリの消費電力が小さくなるようにする。これらの場合、readとwriteの電力状態を、独立にかつ同時に扱うことが望ましい。
本発明は、DRAMのような揮発性メモリだけでなく、MRAMのような不揮発メモリに対しても適用可能である。この場合、スリープ状態での消費電力を一層削減することができるため、一層好適である。また、DRAMとMRAMのように複数の種別のメモリを使用した計算機に本発明を適用することもできる。
本実施形態では、システムキャッシュデータが、ホットメモリ上とコールドメモリ上との間で移動しているが、他のデータ、すなわち参照されているファイルデータや、プロセスのヒープ領域やデータ領域やテキスト領域のデータなども、そのアクセス頻度等に応じて、移動する場合にも適用することができる。
メモリ上のシステムキャッシュデータ(すなわち参照数0のデータ)がコールドメモリ上に保持されている場合、そのデータが参照された時点あるいは最初のアクセスが発生した時点でコールドメモリ上からホットメモリ上に移動させることが望ましい。最初のアクセスが発生した時点でホットメモリ上に移動させる場合には、そのアクセスのあったページのデータのみホットメモリ上に移動させることが望ましいが、処理を簡素化するためにアクセスのあったファイルに対する全てのコールドメモリ上のデータをホットメモリ上に移動させることも可能である。
システムキャッシュデータが参照数を管理しないデータの場合、参照数が0になってからの経過時間ではなく、最後のアクセスからの経過時間を用いて本実施形態の動作を行っても良い。また、T_hot,T_coldをシステムキャッシュデータの種類、例えばページキャッシュとバッファキャッシュによって異なる値を用いることも可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。

Claims (14)

  1. 第1メモリ領域と、記憶しているデータを保持する消費電力が前記第1メモリ領域よりも小さい第2メモリ領域とを管理する計算機であって、
    前記第1メモリ領域または前記第2メモリ領域に存在する第1データを参照しているプロセスの個数である参照数を管理するデータ管理部と、
    前記第1データが前記第1メモリ領域に存在し、前記第1データの参照数が予め定められた第1の条件を満たすとき、前記第1データを、前記第2メモリ領域に移動させるデータ処理部と、
    を備えた計算機。
  2. 前記第1メモリ領域へのアクセスに要する消費電力またはアクセス時間は、前記第2メモリ領域へのアクセスに要する消費電力またはアクセス時間よりも小さい
    請求項1に記載の計算機。
  3. 前記予め定められた第1の条件は、前記参照数が閾値より大きな値から前記閾値以下になったことである
    請求項1または2に記載の計算機。
  4. 前記予め定められた第1の条件は、前記参照数が閾値より大きな値から前記閾値以下になった後、前記閾値以下の状態が、第1の時間継続したことである
    請求項3に記載の計算機。
  5. 前記データ処理部は、前記第1データが前記第1メモリ領域に書き込まれた以降更新されている場合は、前記第1の時間の値を小さくする
    請求項4に記載の計算機。
  6. 前記データ処理部は、前記第1メモリ領域の空きサイズが小さいほど、前記第1の時間の値を小さくする
    請求項4または5に記載の計算機。
  7. 前記閾値は0である
    請求項3ないし6のいずれか一項に記載の計算機。
  8. 前記データ処理部は、前記第1データが前記第2メモリ領域に存在し、前記第1データの参照数が予め定められた第2の条件を満たすとき、前記第1データをストレージ装置に移動する
    請求項1ないし7のいずれか一項に記載の計算機。
  9. 前記データ処理部は、前記第1データが前記第2メモリ領域に書き込まれた以降更新されていない場合は、前記第1データを前記ストレージ装置に移動させることなく、前記第1データを消去する
    請求項8に記載の計算機。
  10. 前記予め定められた第2の条件は、前記参照数が0の状態が、第2の時間継続したことである
    請求項8または9に記載の計算機。
  11. 前記データ処理部は、前記第1データが前記第2メモリ領域に書き込まれた以降更新されている場合は、前記第2の時間の値を小さくする
    請求項10に記載の計算機。
  12. 前記データ処理部は、前記第2メモリ領域の空きサイズが小さいほど、前記第2の時間の値を小さくする
    請求項10または11に記載の計算機。
  13. 第1メモリ領域と、記憶しているデータを保持する消費電力が前記第1メモリ領域よりも小さい第2メモリ領域とを管理するメモリ管理方法であって、
    前記第1メモリ領域または前記第2メモリ領域に存在する第1データを参照しているプロセスの個数である参照数を管理するステップと、
    前記第1データが前記第1メモリ領域に存在し、前記第1データの参照数が予め定められた第1の条件を満たすとき、前記第1データを、前記第2メモリ領域に移動させるステップと、
    を備えたメモリ管理方法。
  14. 第1メモリ領域と、記憶しているデータを保持する消費電力が前記第1メモリ領域よりも小さい第2メモリ領域とを管理するためのプログラムであって、
    前記第1メモリ領域または前記第2メモリ領域に存在する第1データを参照しているプロセスの個数である参照数を管理するステップと、
    前記第1データが前記第1メモリ領域に存在し、前記第1データの参照数が予め定められた第1の条件を満たすとき、前記第1データを、前記第2メモリ領域に移動させるステップと、
    をコンピュータに実行させるためのプログラム。
JP2013039079A 2013-02-28 2013-02-28 計算機、メモリ管理方法およびプログラム Expired - Fee Related JP5989574B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013039079A JP5989574B2 (ja) 2013-02-28 2013-02-28 計算機、メモリ管理方法およびプログラム
US14/190,334 US20140244960A1 (en) 2013-02-28 2014-02-26 Computing device, memory management method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013039079A JP5989574B2 (ja) 2013-02-28 2013-02-28 計算機、メモリ管理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2014167700A true JP2014167700A (ja) 2014-09-11
JP5989574B2 JP5989574B2 (ja) 2016-09-07

Family

ID=51389460

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013039079A Expired - Fee Related JP5989574B2 (ja) 2013-02-28 2013-02-28 計算機、メモリ管理方法およびプログラム

Country Status (2)

Country Link
US (1) US20140244960A1 (ja)
JP (1) JP5989574B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190127310A (ko) * 2018-05-04 2019-11-13 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그 구동방법
US11023370B2 (en) 2018-09-19 2021-06-01 Toshiba Memory Corporation Memory system having a plurality of memory chips and method for controlling power supplied to the memory chips

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6116941B2 (ja) * 2013-02-28 2017-04-19 株式会社東芝 情報処理装置
JP6098301B2 (ja) * 2013-03-29 2017-03-22 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
US10515231B2 (en) * 2013-11-08 2019-12-24 Symcor Inc. Method of obfuscating relationships between data in database tables
US9478274B1 (en) 2014-05-28 2016-10-25 Emc Corporation Methods and apparatus for multiple memory maps and multiple page caches in tiered memory
US9313651B2 (en) * 2014-06-19 2016-04-12 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
US20170329830A1 (en) * 2014-11-26 2017-11-16 Hewlett Packard Enterprise Development Lp Read-optimized database changes
US20170068304A1 (en) * 2015-09-09 2017-03-09 Mediatek Inc. Low-power memory-access method and associated apparatus
CN107818808B (zh) * 2016-09-14 2023-09-12 群联电子股份有限公司 数据写入方法、存储器控制电路单元与存储器存储装置
US10180793B2 (en) 2017-01-31 2019-01-15 Hewlett Packard Enterprise Development Lp Performance attributes for memory
US10705590B2 (en) * 2017-11-28 2020-07-07 Google Llc Power-conserving cache memory usage
US10860491B2 (en) 2019-05-03 2020-12-08 Mediate Inc. Cache management method using object-oriented manner and associated microcontroller
JP2022114726A (ja) * 2021-01-27 2022-08-08 キオクシア株式会社 メモリシステムおよび制御方法
CN117112268B (zh) * 2023-10-23 2024-02-13 深圳市七彩虹禹贡科技发展有限公司 一种内存共享管理方法及系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06290096A (ja) * 1993-03-31 1994-10-18 Matsushita Electric Ind Co Ltd パス名解決装置
JPH07160574A (ja) * 1993-12-13 1995-06-23 Matsushita Electric Ind Co Ltd 情報処理装置
JP2006107054A (ja) * 2004-10-04 2006-04-20 Fujitsu Ltd ディスクアレイ装置
JP2007102452A (ja) * 2005-10-04 2007-04-19 Fujitsu Ltd システム管理プログラムおよびシステム管理方法
JP2007257174A (ja) * 2006-03-22 2007-10-04 Konica Minolta Business Technologies Inc データ記憶装置、データ入出力システム、データ記憶装置の制御方法、およびデータ記憶装置の制御プログラム
US20110087657A1 (en) * 2006-07-28 2011-04-14 Diskeeper Corporation Assigning data for storage based on speed with which data may be retrieved
JP2011513805A (ja) * 2008-01-10 2011-04-28 ディスキーパー・コーポレイション 保存耐用年数および速度に基づいたファイル保存のための保存場所の選択
JP2011186794A (ja) * 2010-03-09 2011-09-22 Hitachi Ltd ストレージシステム内のデータの配置を制御する管理システム、及び、データ配置制御方法
US20110271070A1 (en) * 2010-04-30 2011-11-03 Microsoft Corporation Memory usage scanning
JP2012203583A (ja) * 2011-03-24 2012-10-22 Toshiba Corp 情報処理装置およびプログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7159220B2 (en) * 2001-09-28 2007-01-02 Intel Corporation Flexible acceleration of java thread synchronization on multiprocessor computers
US7610296B2 (en) * 2004-12-17 2009-10-27 Microsoft Corporation Prioritized files
US8028113B2 (en) * 2008-08-15 2011-09-27 International Business Machines Corporation Methods and systems for deadlock-free allocation of memory
US8166269B2 (en) * 2009-11-05 2012-04-24 Oracle America, Inc. Adaptive triggering of garbage collection

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06290096A (ja) * 1993-03-31 1994-10-18 Matsushita Electric Ind Co Ltd パス名解決装置
JPH07160574A (ja) * 1993-12-13 1995-06-23 Matsushita Electric Ind Co Ltd 情報処理装置
JP2006107054A (ja) * 2004-10-04 2006-04-20 Fujitsu Ltd ディスクアレイ装置
JP2007102452A (ja) * 2005-10-04 2007-04-19 Fujitsu Ltd システム管理プログラムおよびシステム管理方法
JP2007257174A (ja) * 2006-03-22 2007-10-04 Konica Minolta Business Technologies Inc データ記憶装置、データ入出力システム、データ記憶装置の制御方法、およびデータ記憶装置の制御プログラム
US20110087657A1 (en) * 2006-07-28 2011-04-14 Diskeeper Corporation Assigning data for storage based on speed with which data may be retrieved
JP2011513805A (ja) * 2008-01-10 2011-04-28 ディスキーパー・コーポレイション 保存耐用年数および速度に基づいたファイル保存のための保存場所の選択
JP2011186794A (ja) * 2010-03-09 2011-09-22 Hitachi Ltd ストレージシステム内のデータの配置を制御する管理システム、及び、データ配置制御方法
US20110271070A1 (en) * 2010-04-30 2011-11-03 Microsoft Corporation Memory usage scanning
JP2012203583A (ja) * 2011-03-24 2012-10-22 Toshiba Corp 情報処理装置およびプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190127310A (ko) * 2018-05-04 2019-11-13 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그 구동방법
KR102642430B1 (ko) * 2018-05-04 2024-03-04 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그 구동방법
US11023370B2 (en) 2018-09-19 2021-06-01 Toshiba Memory Corporation Memory system having a plurality of memory chips and method for controlling power supplied to the memory chips

Also Published As

Publication number Publication date
US20140244960A1 (en) 2014-08-28
JP5989574B2 (ja) 2016-09-07

Similar Documents

Publication Publication Date Title
JP5989574B2 (ja) 計算機、メモリ管理方法およびプログラム
JP5624583B2 (ja) プログラム、計算処理装置、メモリ管理方法および計算機
US11966581B2 (en) Data management scheme in virtualized hyperscale environments
TWI675289B (zh) 包含異質多核心處理器的電子系統及其操作方法
US10203912B2 (en) Storage device for supporting virtual machine, storage system including the storage device, and method of operating the same
US10353454B2 (en) Information processing apparatus and computer program product for changing swap spaces based on a performance threshold
US10282292B2 (en) Cluster-based migration in a multi-level memory hierarchy
EP2936272B1 (en) Reducing power consumption of volatile memory via use of non-volatile memory
US8010764B2 (en) Method and system for decreasing power consumption in memory arrays having usage-driven power management
US8645612B2 (en) Information processing device and information processing method
JP4902501B2 (ja) 電力制御方法、計算機システム、及びプログラム
US20110276762A1 (en) Coordinated writeback of dirty cachelines
JP2012068936A (ja) メモリシステム
KR102553539B1 (ko) 고체 상태 드라이브에서 가비지 수집 리소스 할당을 적응시키는 메커니즘
US20110276763A1 (en) Memory bus write prioritization
US10884959B2 (en) Way partitioning for a system-level cache
KR101298171B1 (ko) 메모리 시스템 및 그 관리 방법
US10146483B2 (en) Memory system
Park et al. Power-aware memory management for hybrid main memory
CN110908595B (zh) 存储装置及信息处理系统
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
US10725675B2 (en) Management apparatus, information processing apparatus, management method, and computer program product
Lai et al. A read-write aware DRAM scheduling for power reduction in multi-core systems
US20190095122A1 (en) Memory management system, computing system, and methods thereof
JP5382471B2 (ja) 電力制御方法、計算機システム、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160630

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160715

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160810

R151 Written notification of patent or utility model registration

Ref document number: 5989574

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees