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

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

Info

Publication number
JP5624583B2
JP5624583B2 JP2012125215A JP2012125215A JP5624583B2 JP 5624583 B2 JP5624583 B2 JP 5624583B2 JP 2012125215 A JP2012125215 A JP 2012125215A JP 2012125215 A JP2012125215 A JP 2012125215A JP 5624583 B2 JP5624583 B2 JP 5624583B2
Authority
JP
Japan
Prior art keywords
power state
power
area
partial
memory
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.)
Expired - Fee Related
Application number
JP2012125215A
Other languages
English (en)
Other versions
JP2013250791A (ja
Inventor
瀬 恒太郎 伊
瀬 恒太郎 伊
原 丈 士 石
原 丈 士 石
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 JP2012125215A priority Critical patent/JP5624583B2/ja
Priority to US13/790,143 priority patent/US9471131B2/en
Priority to CN2013100868861A priority patent/CN103455129A/zh
Publication of JP2013250791A publication Critical patent/JP2013250791A/ja
Application granted granted Critical
Publication of JP5624583B2 publication Critical patent/JP5624583B2/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
    • 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/3234Power saving characterised by the action undertaken
    • 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
    • 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/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • 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)
  • Power Sources (AREA)
  • Memory System (AREA)

Description

本発明の実施形態は、プログラムおよび計算処理装置に関し、たとえばデジタルデータを記憶するメモリ装置の消費電力を削減するための制御技術に関する。
近年、パーソナルコンピュータを代表とする計算機の普及は目覚ましく、携帯電話やコピー装置、ホームルータ、など様々な情報処理を行うために、計算機技術が用いられている。計算機技術の特徴として、DRAMなどのメモリ装置を有し、そのメモリ上に格納されたデータを処理し、処理された結果のデータをメモリに格納することで、情報処理を行うことがある。すなわち、データの読み・書きの片方あるいは両方を行うメモリ領域を有することが、これらの機器の特徴である。
近年、計算機の消費電力を削減することに対する要求が高まっている。この要求の基になっている動機は、電力コストの削減や、発熱に伴う計算機の誤動作の防止がある。また、バッテリ駆動されている機器では、稼働時間の延長などがある。このほかにも様々ある。この計算機の消費電力削減要求は、計算機に含まれるメモリ装置に対する消費電力削減要求へと分解されている。
この要求に応えるため、例えばメモリ領域をバンクと呼ばれる複数のセグメントに分割し、有効なデータを含まないセグメントへの給電を停止する。これにより、メモリ装置の消費電力削減の効果を狙うものが開示されている。
特開2005-196343号公報
ここで、例えば、複数のWebページを開いたWebタグブラウザを考える。この場合、ユーザがバックグラウンドに配したWeb画面については、そのWeb画面に対する処理は行われない。それにも関わらず、そのWeb画面を描画するためのメモリ領域は保持されたままである。
あるいは、ワープロソフトや表計算ソフトなど複数のソフトウエアを立ち上げている場合においても、ユーザは一つのソフトウエアしか操作しないため、それ以外のソフトウエアの処理は行われない。それにも関わらず、これらのソフトウエアのメモリ領域は保持されたままであり、保持されたメモリ領域が多い場合には、消費電力の削減効果が小さいという課題がある。
本発明は、メモリ装置の消費電力を削減することを目的とする。
本発明の一態様としてのプログラムは、電力状態決定ステップと、電力状態制御ステップと、をコンピュータに実行させる。
前記電力状態決定ステップは、複数の部分領域を含むメモリ領域のアクセス負荷を算出し、前記アクセス負荷に応じて、第1の電力状態と、前記第1の電力状態よりも消費電力が低い第2の電力状態とを含む複数の電力状態のうちの1つを前記部分領域のそれぞれについて決定する。
前記電力状態制御ステップは、各前記部分領域を、前記電力状態決定部により決定された電力状態にそれぞれ設定する。
本発明の一態様としての計算処理装置は、電力状態決定部と、電力状態制御部とを備える。
前記電力状態決定部は、複数の部分領域を含むメモリ領域のアクセス負荷を算出し、前記アクセス負荷に応じて、第1の電力状態と、前記第1の電力状態よりも消費電力が低い第2の電力状態とを含む複数の電力状態のうちの1つを前記部分領域のそれぞれについて決定する。
前記電力状態制御部は、各前記部分領域を、前記電力状態決定部により決定された電力状態にそれぞれ設定する。
本発明の実施例に係る計算機のハードウエア構成の例を示す図。 メモリモジュールの構成例を示す図。 メモリモジュールのアドレスとセグメントの関係を示す図。 論理アドレスから物理アドレスへのアドレス変換の動作を説明するための図。 セグメント情報管理テーブルの一例を示す図。 物理メモリの使用状態の一例を示す図。 セグメントに電力状態に関する順序制約を付けた例を示す図。 実施例2に係る処理の流れの一例を示すフローチャート。 実施例2に係る処理の流れの他の例を示すフローチャート。 ページ置換に伴うアドレス変換表の書き換えを説明するための図。 メモリモジュールの他の構成例を示す図。 スワップ情報テーブルの例を示す図。 メモリモジュールのさらに別の構成例を示す図。 本発明の実施例1に係る計算処理装置の構成例を示す図。 本発明の実施例2に係る計算処理装置の構成例を示す図。 バッファ領域の確保の様子を模擬的に示す図。
(実施例1) 図1でWireless NICやMain Memory等、英語名称を伊瀬が使用したため、明細書中および図面で日本語表記と英語表記が混在しています。このままで問題なければ、このままでOKです。問題があるのであれば表記の統一をお願いします。
図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のデータを読み、そのデータをバス上のデバイスに送信する。DMAコントローラ17およびCPUコア12は、メインメモリ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)などの不揮発性メモリ技術にて構成されていれば一層望ましい。
メインメモリ31は、CPU11からのread命令を受信した際には、read命令とともに与えられるアドレス情報に対応した領域に保持されている値を読み出して、CPU11に出力する。さらに、CPU11からwrite命令を受信した際には、write命令とともにアドレス情報と値を受信し、アドレス情報に対応する領域に受信した値を書き込む。メインメモリ31とCPU11との間の接続インタフェースには、DDR3以外にLPDDR3やWideIOなど様々なインタフェースが使用され得る。
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内に有するなど様々な変形が考え得る。
[メモリモジュールのHW構成]
図2にメインメモリ31に用いるメモリモジュールの構成例を示す。
メモリモジュール101は、8個のメモリチップ(LSI)102を、基板上に有している。メモリモジュール101は、アドレスとコマンドと制御信号とを送受信するための信号線を有し、当該信号線を介して、アドレスとコマンドと制御信号を、各メモリチップ102へ伝える。コマンドには、以下のようにReadコマンドおよびWriteコマンドに加え、メモリのセグメント(部分領域)の電力状態を変更するPowerStateChangeコマンドがある。制御信号は、クロック信号やread/writeタイミング信号などである。また、メモリモジュール101は、データの送受信を行う信号線を有し、当該信号線を介して、各メモリチップとデータを送受信する。
Figure 0005624583
ここで電力状態には、アクティブとスリープの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をそれぞれ別個のセグメントとして扱って、個別に電力状態制御を行う構成も可能である。
図3に、メモリモジュールのアドレスとセグメントの関係を示す。
メモリモジュール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のようになっていてもよい。
また、図3では8つのセグメントを有する場合を例に説明しているが、セグメントの数は8つに限定されない。一般にセグメント数は多いほど、高い消費電力削減効果を期待できるが、同時にセグメントを実現するための回路規模が大きくなる。セグメント数の増加は、その回路の実装コストの増加や消費電力増加につながる可能性がある。
[動作原理概略]
計算機の電源を投入すると、BIOSと呼ばれるプログラムがメインメモリ31に読み込まれ、CPUコア12にて実行される。BIOSは、計算機のハードウエア構成を確認し、各デバイス(HDDや無線NIC)を初期化し、HDD41に格納されたOSを、メモリ31に読み込む。OSがメモリ31に読み込まれた後は、BIOSはOSに制御を移す(OSの所定の命令にジャンプする)。OSは起動処理を行ない、予め定められたプログラムを実行する。あるいは外部入力手段の入力に従って、プログラムを起動する。
OSはアプリケーションからのメモリ確保要求、メモリ解放要求、確保したメモリへのread/write要求に従い、メインメモリ31にアクセスを行う。また、OSは、メインメモリ31のアクセス負荷を算出する。これは、メインメモリ31へのアクセス頻度、アクセス時間、メモリの領域使用量など、どの程度メモリに負荷がかかっているかを表す。たとえば、セグメント毎のアクセス頻度(定義および計算方法は後述する)がある。またCPUクロック数もアクセス負荷を表しているといえる。クロック数が高ければ、計算性能の上昇を図れるが、消費電力が大きくなり、負荷が増す。また、メモリへのアクセス時間が長ければ、また、領域の使用量が大きければ、大きな消費電力がかかり、負荷が高い。これらは一例であり、他の種類の指標を、アクセス負荷として採用することができる。以下では、主に説明のため、セグメントのアクセス頻度を例に説明を行う。
セグメントのアクセス頻度が、予め定められた閾値よりも高い場合には、そのセグメントの電力状態をアクティブに設定し、そうでない場合にはスリープに設定する。スリープに設定されたセグメントの領域に対するread/writeが発生した場合には、OSはそのセグメントをアクティブに設定し、read/writeが終了した後に、スリープに設定を戻す。このように、アクセス頻度の少ないセグメントをスリープ状態とすることで、メインメモリの消費電力を削減することができる。アクセス負荷として、クロック数を採用した場合には、たとえばクロック数に応じてスリープにするセグメント数を決定し、当該セグメント数のセグメントをスリープにしてもよい。この際、後述するページ交換を行っても良い(実施例2参照)。スリープにするセグメントは、たとえばアドレス線が長いセグメントほど駆動の消費電力が大きいとすると(後述の実施例2の説明等を参照)、アドレス線が長いセグメントから、すなわち消費電量が大きいものから、優先的に決定してもよい。
ここでは、スリープ状態のセグメントに対してread/writeする際に、その電力状態をアクティブにし、read/write後にスリープに戻すのをOSが行う例を示した。しかしながら、この電力状態の変更は、OSの代わりにメモリコントローラが行ってもよいし、メモリモジュール101上のメモリチップが行ってもよい。あるいは、メモリモジュール101上の制御回路(図示しない)が行ってもよい。
さらに、メモリコントローラは、未処理のメモリアクセス要求を多数保持している場合には、あるスリープセグメントに対するアクセスをなるべくまとめて処理することが望ましい。つまり、そのスリープセグメントをアクティブ状態にし、保持しているそのセグメントへの複数のアクセス要求をまとめて処理し、その後に、そのセグメントをスリープ状態に戻す。これにより、セグメントの電力状態の変更回数を減らすことができ、処理性能を向上できる。
ここで、セグメントの電力状態をアクティブにするか、スリープにするかの判定の閾値λ’は、メモリモジュールの特性により決めることができる。例えば、
Pa:アクティブ状態を維持するために必要な電力
Ps:スリープ状態を維持するために必要な電力
Psa:スリープ状態からアクティブ状態に遷移する際に必要な電力
Pas:アクティブ状態からスリープ状態に遷移する際に必要な電力
とすると、以下の式で、求めることができる。
Figure 0005624583
これは、スリープさせることによる電力利得(アクティブに滞在する電力とスリープに滞在する電力の差)が、スリープ状態のセグメントにアクセスする電力(電力状態をアクティブとスリープに遷移させる電力)の何回分に相当するかを求めている。
各セグメントに対してアクセス頻度と閾値λ’を比べ、アクセス頻度の方が大きければアクティブ状態とし、そうでなければスリープ状態とする。消費電力よりもメモリアクセスの遅延を少なくしたい場合には、アクセス頻度と比較する閾値を、λ’よりも小さくすることが望ましい。
また、セグメント毎に異なる閾値を用いることも可能である。例えば、セグメントのサイズが異なる場合には、大きいセグメントほど閾値を大きくすることで、大きいセグメントほどスリープ状態にしやすくする。これにより、消費電力削減効果を大きくすることが可能である。
CPU負荷によりCPUクロック数が動的に変化する場合には、CPUクロック数が大きくなるほど、この閾値を小さくすることが望ましい。これは、メモリアクセス頻度はCPUクロック数に比例して大きくなることが、経験則より知られているためである。
また、処理遅延が大きくても問題ない場合は、この閾値λ’を大きくすることが望ましい。たとえばユーザからのマウス入力やキーボード入力がある一定時間発生しない場合や、これによりディスプレイの表示を停止した場合がある。これにより、多くのセグメントがスリープ状態となり、消費電力を削減することが可能となる。
また、消費電力削減への要求度に応じて、この閾値を変化することも可能である。例えば、バッテリ残量が少ないほど、この閾値を大きくすることで、消費電力を削減することができる。もちろん、GUIにて、“ハイパワー”、”ノーマル“、”ロングパワー“などのメニューをユーザに選択させることで、ユーザがこの閾値を調節できるようにしてもよい。
ここで、アクセス頻度の計測は、例えば以下のように行う。
時刻Tから2Tの間のセグメントiのアクセス回数をSi(T,2T)とする。時刻Tから2Tの間のアクセス頻度をFi(T,2T)とすると、以下の式でアクセス頻度を計算できる。ただし、aは0以上1以下の定数である。
Figure 0005624583
時間間隔T毎にFi(nT,(n+1)T)を求め、これを閾値と比較することで、次の時間区間(n+2)Tにおけるセグメントiの電力状態(アクティブまたはスリープ)を決定する。
[アクセス頻度の他の例]
上述の例では、アクセス頻度Fi( )を用いて、セグメントの電力状態を決めた。これは、将来のアクセス頻度を、過去のアクセス頻度Fi( )を用いて予測し、これにより将来の消費電力が最も小さくなるようにセグメントの電力状態(アクティブまたはスリープ)を決めていると言える。
また、OSのタスクスケジューリング情報を参考に、セグメントの電力状態を決めることもできる。タスクスケジューリングとは、マルチタスクOSにおいて、複数のタスクに対してCPUにアサインする順番を決めるアルゴリズムである。CPUにアサインされたタスクは、予め定められたCPU時間だけCPUによる処理を実行される。その後、次にスケジューリングされたタスクが、CPUにアサインされる。タスクスケジューリング情報(例えばスケジュールキュー)を参照すれば、タスク実行順序を推測することができる。
そのため、予め定められた時間ウィンドウ内でCPUにアサインされないタスクを列挙し、それらのタスクが使用しているメモリ領域を調べる。各セグメントにおいて、CPUにアサインされないタスクが使用するメモリの使用量が予め定められた量よりも大きいセグメントの電力状態をスリープとして決定することができる。CPUにアサインされたタスクによる使用量がゼロのセグメントについては、無条件にスリープとしてもよい。
また別の例としては、OSのコンテキストスイッチングの際にMMUにアドレス変換表(ページテーブル)の情報が読み込みなおされる場合には、MMUに読み込まれているアドレス変換表に対応する物理ページを保持する量に応じてセグメントの電力状態を決定することも可能である。具体的には、ある種のOSは、コンテキストスイッチを行う際には、そのコンテキストに応じたアドレス変換表をMMUに設定する。MMUに設定されているアドレス変換表に記されている物理ページを列挙し、セグメント毎にその物理ページ数を数える。その物理ページ数が予め定められている閾値以上のセグメントをアクティブ状態とする。後述するように、プログラムあるいはOSがメモリにアクセスする際には論理アドレスを物理アドレスに変換する必要がある。そのため、MMUにアドレス変換表が設定されていない物理ページへのアクセス遅延は大きくてもよいと期待できる。
[OSの動作詳細]
図4に論理アドレスから物理アドレスへのアドレス変換の動作を模擬的に示す。
MMU15はアドレス変換表を有している。アドレス変換表を用いることで、論理ページ番号から対応するエントリを検索できる。ここで、例として、アドレス幅を32bit、ページサイズを4KBとして説明を行う。CPUは32bitの論理アドレスのうち上位22bitを論理ページ番号として用い、下位10bitをページ内アドレスとして用いる。論理アドレスから決定される論理ページ番号からアドレス変換表を検索し、該当するエントリを得る。そのエントリの物理ページアドレスに、ページ内アドレスを結合したものが物理アドレスである。ここで結合とは、物理ページ番号22bitの下位ビットとしてページ内アドレスを結合することを意味する。
検索されたエントリは、その物理ページに関する様々な属性を保持している。属性の例としては、キャッシュの可否や、アクセス情報(特権レベルごとの読み書き可否)、参照情報(参照されたか否か)、修正情報(修正されたか否か)、存在情報(物理メモリ上に存在するか否か)を挙げることができる。
ここで、MMU15は一つのアドレス変換表を有する場合を示した。そうではなく、マルチレベルページテーブルと呼ばれる階層構成をなす複数のアドレス変換表を有していてもよい。マルチページテーブルを用いることにより、MMU15の管理するテーブルサイズを小さくすることができる。大切なことは、論理アドレスから対応する物理アドレスの情報を得られることである。
また、MMU15の有するアドレス変換表は、メインメモリ31上にOSが保持しており、コンテキストスイッチ等のタイミングでCPUコア12上にて動作しているプロセス(あるいはOS)に対応するアドレス変換表を、MMU15にロードすることも可能である。
物理アドレスが得られると、図5に示したセグメント情報管理テーブルを参照し、物理アドレスに対応するエントリを検索する。例えば、物理アドレスefffffffがMMU15から得られた場合には、図5のテーブルを参照し、これがセグメント7に属し、セグメント7がスリープ状態であることが分かる。スリープ状態の場合には、該セグメントをアクティブ状態に変更する命令をメモリモジュール101に送信し、その後メモリモジュール101にアクセス(書き込みまたは読み出し)を行う命令を送り、この後、該セグメントをスリープ状態に変更する命令をメモリモジュール101に送信する。
図5のテーブルのアクセス回数は、上述したSi( )の値を格納しており、アクセス毎に1増加する。たとえばあるデータをメモリにH回に分けて書き込みが行われた場合は、このときアクセス回数に値Hが加算される。アクセス回数のインクリメントは、MMU15が行ってもよいし、CPUコア12が行ってもよいし、別の手段で行ってもよい。
また、アクセス頻度は、上述のFi( )を格納している。OSは時間間隔T毎のタイマ割り込みにより、数式2を用いてアクセス頻度を計算し、さらに、図5のテーブルのアクセス回数をゼロクリアする。さらに、アクセス頻度が予め定められた電力状態判定閾値よりも小さいセグメントについては、そのセグメントがアクティブ状態であれば、そのセグメントをスリープ状態とする命令をメモリモジュール101に発行する。アクセス頻度が予め定められた電力状態判定閾値以上のセグメントについては、そのセグメントがスリープ状態であれば、アクティブ状態とする命令をメモリモジュールに発行する。電力状態(スリープまたはアクティブ)が変化しないセグメントについては、命令を発行する必要は無い。
このようにアクセス頻度の少ないセグメントをスリープ状態とすることで、メモリの消費電力を削減することが可能である。また、スリープセグメントへのアクセスには、該セグメントをアクティブ状態に変更した上で、アクセスする必要があるため、アクセス遅延が増す。しかしながら、アクセス頻度の少ないセグメントをスリープ状態としているため、そのアクセス遅延の増加による計算機の処理速度への影響を小さくすることができる。
次に、計算機がACPIのS5状態から起動した場合を考える。
ACPIのS5状態とは、Windowsでいうシャットダウン操作により遷移する状態であり、それまでの実行状態は保持されない。S5から起動した場合、図5のセグメント情報管理テーブルの初期値は、アクセス回数とアクセス頻度は0である。そこで、S5からの起動時は、電力状態はすべてのセグメントをアクティブとし、起動完了後の予め定められたタイミング(たとえば起動完了後一定時間経過したタイミング)で、アクセス頻度に基づく電力状態設定を行うようにすることが望ましい。これにより、比較的メモリアクセスの多い起動時の処理性能の低下を防ぐことができる。
[セグメントの電力状態の変更のバリエーション]
上では、CPUコアがメモリモジュールにセグメントの電力状態を変更する命令を発行する場合を例に挙げて、説明を行ったが、この命令をMMU15が発行しても構わない。また、図5のセグメント情報管理テーブルをメモリモジュール101が保持し、アクセス回数とアクセス頻度の計算を行い、メモリモジュール101内でセグメントの電力状態を変更することも可能である。
[メモリの確保・解放]
プロセスあるいはOSがメモリを必要とする場合、OSは物理ページを確保し、対応する論理アドレスを決め、アドレス変換表に書き込む。図6は、物理メモリの使用状態を模擬的に記した図である。
セグメントあたり物理ページが4つあり、ページ0はアドレス00000000から00000fffの領域であり、ページ1はアドレス000001000から00002fffの領域である(ページサイズ4KB)。ページ1,2,3,4は既にメモリ確保され使用中であり、残りは空き(未使用)である。
OSは、新たにメモリを確保する必要がある場合、空きページの中で最もアドレスの若いものを確保する。このようにすることで、空ページをアドレスの大きい領域にまとめることができ、アドレスの大きいセグメントをスリープにできるチャンスが増える。そして、論理アドレスと物理アドレスの対応をアドレス変換表に記す。
メモリを開放する場合には、アドレス変換テーブルの該当する領域を削除する(あるいは該当領域のエントリの属性値を未使用に変更する)。
[メモリモジュールの構成]
図11は、メモリモジュール101の構成図である。図11に示す構成例は、4セグメントの構成である。メモリモジュールは、制御部201と、リフレッシュカウンタ202と、アドレスバッファ203と、I/Oバッファ204と、4つのメモリセルアレイ部211、212、213、214とを備える。各メモリセルアレイ部は、メモリセルアレイ、ロウデコーダ、カラムデコーダ、センスアンプを備える。
制御部201は、外部からコマンドあるいは制御指示を受信し、それに従いメモリモジュール内を制御する。制御の例として、セグメントを指定した電力状態の変更がある。
リフレッシュカウンタ202は、DRAMの場合に必要になるもので、メモリ保持内容が消失しないようにリフレッシュ動作を行う際の、リフレッシュ対象セルとタイミングを指示する。
アドレスバッファ203は、外部から物理アドレスを受信し、それをカラムアドレスとロウアドレスに分け、カラムデコーダとロウデコーダに送信する。このとき、アドレスバッファ203は、受信したアドレスから対応するセグメントを導出し、導出されたセグメントにのみカラムアドレスとロウアドレスを送信することが望ましい。カラムアドレスおよびロウアドレスの夫々を受信したカラムデコーダとロウデコーダは、そのアドレスで指定されたメモリセルの値を読み込み(読み出しコマンドの場合)、I/Oバッファ204に送信する。
センスアンプは、メモリセルに保持されている情報を読み出す際の信号増幅を行う。
メモリセルアレイは、複数のメモリセルから構成され、情報保持を行う。
I/Oバッファ204は、メモリセルアレイと送受信するデータをいったん蓄積する。
図13にメモリモジュールの別の構成例を示す。
図13では、4バンク構成で各バンク(メモリセルアレイ)311、312、313、314がセグメントに分割されている。CPUは物理アドレスを、以下のようにメモリアドレスと対応付けることが望ましい。ここで、カラムアドレス側がロウアドレス側よりもMSB(Most Significant Bit)である。転送単位とは、一度のアクセスで読み書きするデータのビット数を示している。チャネルとは、メモリチャネルの番号を示す。バンクとは、バンクの番号を示す。同一チャネルのDIMM番号とは、同じチャネルに接続されている各DIMMを識別する番号を示す。
Figure 0005624583
こうすることで、メモリセルアレイの同一行に対してバンクを切り替えながらメモリにアクセスすることで、特に転送単位が大きい場合に、メモリアクセスの高速化が可能である。また、図3に示したようにセグメント内で物理アドレスが連続領域となるため、転送単位が大きい場合にも、複数のセグメントを跨いだアクセスが発生しづらい効果がある。この効果は、図11のメモリモジュールの構成でも、カラムアドレスをロウアドレスよりもMSB側とすることで、有効となる。
[構成例]
図14は、本実施形態に係る計算処理装置の構成例である。
図14に示す計算処理装置は、電力状態決定部401と、電力状態制御部402と、入出力処理部403と、電力状態記憶部404とを備える。各ブロックの機能は、これらの機能の実行を記述したプログラム命令を含むプログラムを実行することにより、またはハードウエアにより、または、これらの組み合わせにより実現される。これらの機能の一部をCPUコア12とは別のハードウエアに備えさせてもよい。当該別のハードウエアは、メモリモジュールあるいはメモリチップに実装されていてもよい。上記プログラムは、コンピュータ読取可能記録媒体に格納され、当該記録媒体から読み出して実行してもよい。
図14に示すように、入出力処理部(普通は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は、各セグメントの電力状態を記憶している。
図14に示した構成では、図5のセグメント情報記憶テーブルは、電力状態記憶部404と電力状態決定部401で共有保持することが考えられる
[備考]
このように本実施例では、セグメント毎のメモリアクセス頻度といったアクセス負荷を計算し、そのアクセス負荷を元にセグメントの電力状態を制御する。本実施例は様々な変形が可能であり、例えば、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のように複数の種別のメモリを使用した計算機に、本発明を適用することもできる。
(実施例2:実施例1にページスワップを追加)
実施例1では、セグメント毎に電力状態を制御する方法を示した。本実施例では、さらにページのアクセス頻度に応じて、ページの所属するセグメントを変更することで、セグメントをスリープさせる機会を増やす手法を示す。
なお、本実施例における計算機アーキテクチャとメモリモジュールの構成は、実施例1と同様であるため、重複する説明は省略する。また、実施例1で記載した様々なバリエーションは実施例2にも適用可能である。
[動作原理概略]
メモリアクセスには、時間局所性(一度アクセスされたメモリ番地は短期間のうちに再度アクセスされる)と、空間局所性(一度アクセスされたメモリ番地の近隣のメモリがよくアクセスされる(ここでメモリ番地とは論理アドレスである))を有すると信じられている。もし、何らかの手段により、よくアクセスされるメモリ領域を特定のセグメントに集めることができれば、より多くのセグメントをスリープ状態にし得ると期待できる。
仮にアクティブセグメントへのアクセス頻度をλH、スリープセグメントへのアクセス頻度をλLとし、アクティブセグメントおよびスリープセグメントのセグメント数を夫々NH、NLとする。Nλ=λHNH+λLNLをメモリ全体へのアクセス頻度とする。N=NH+NLはセグメントの総数とする。このとき、メモリの消費電力は、以下のように求めることができる。
Figure 0005624583
数式3より、Nおよびλを一定とすると、NLが大きいほど消費電力は小さく、NLλLが小さいほど消費電力が小さいことが分かる。すなわち、スリープセグメント数が多く、スリープセグメント全体へのアクセス頻度が小さいほど、消費電力は小さくなる。
メモリアクセスの局所性という経験則を利用して、特定セグメントにアクセスを集中させることで消費電力を削減できる。
[OSの動作詳細]
メモリアクセスの局所性を利用するために、ページ置き換えを行う。ページ置き換えとは、あるページにアクセスが発生した際に、以後そのページ内のアクセスが多く発生することを見越して、アクセス頻度の高いセグメントにそのページを移動する操作である。
[ページ置き換えアルゴリズム]
CPUコア12が論理アドレスへのアクセスを実行する際に、MMU15のアドレス変換表を用いて、物理アドレスをみつける(実施例1と同様)。さらに、セグメント情報管理テーブル(図5参照)を参照し、その物理アドレスがスリープセグメントにあるかアクティブセグメントにあるかを調べる。もし、スリープセグメント上にあるならば、そのセグメントをアクティブ状態に移行し、その物理アドレスを含むページを別のアクティブセグメント上のページと置き換える。そして、当該別のアクティブセグメントにおける当該置換後のページにアクセスするとともに、アクティブ状態に移行された上記セグメントをスリープ状態に戻す。
図8に、この処理のフローチャートを示す。本フローは、論理アドレスから物理アドレスに変換後、その物理アドレスがセグメントnに存在する場合の処理を示す。
セグメントnをアクティブ状態に変更し(S101)、当該セグメントnとは別のアクティブセグメントにおいて、上記物理アドレスを含むページ(アクセスページ)と置き換えるページ(置き換え対象ページ)を決定する(S102)。アクセスページと置き換え対象ページを置き換える(S103)。セグメントnをスリープ状態に戻し(S104)、セグメントnのアクセス回数をインクリメントする(S105)。
ここで、アクセスページと置き換え対象ページを置き換えるとは、メモリ上の記憶箇所を置き換えるとともに、アドレス変換表のデータも書き直すことである。
図10を用いて、その処理の具体例を説明する。
図10(a)では、論理ページ0は物理ページ1と対応し、論理ページ1は物理ページ2に、論理ページ2は物理ページ4に、論理ページNは物理ページ17に対応している。論理ページ2(すなわち物理ページ4)に属するアドレスにアクセスがあり、その置き換え対象が物理ページ2である場合、メモリ上において物理ページ2と物理ページ4上に保持されている情報を置き換える(物理ページ2上のデータを物理ページ4に移動するととともに物理ページ4上のデータを物理ページ2に移動する)。
さらに、図10(b)のようにアドレス変換表の論理ページ1に対応するエントリと、論理ページ2に対応するエントリを交換する。これにより、かつて論理ページ1上のデータは、物理ページ2から4に移動しているが、アドレス変換表の書き換えにより依然論理ページ1上に存在する。このため、論理アドレスを通じてメモリアクセスするプログラムからは、このページ交換を意識する必要は無い。
ここで、置き換えるページをみつける方法には、様々なものが考えられる。例えば、LRU(Lease Recently Used)ページ置き換えアルゴリズムと呼ばれる方法を用いることができる。この方法では、アクティブセグメント上のページにおいて、最新のアクセスが最も過去に起こったページを選び、これをアクセスページと交換する。もちろん、アクティブセグメント上に空ページがあれば、それを置き換え対象とすることが望ましい。
また、NFU(Not Frequently Used Algorithm)と呼ばれるアルゴリズムを用いて置き換え対象のページを決めることもできる。NFUアルゴリズムでは、ページ毎にアクセス頻度を保持しており、もっともアクセス頻度の少ないページを置き換え対象ページとして選択する。そして、当該置き換え対象ページを、スリープセグメント上に移動する。
NFUアルゴリズムには、様々な派生アルゴリズムが存在する。例えば、エージング法では、ティックと呼ばれるある時間間隔(例えば、10 msec)毎に、アクセスの有無を記録し、その記録領域は10ティック分だけ用意する。これにより、各ページに対して1ティック毎のアクセス有無を過去10ティック分だけ知ることができる。スリープセグメント上のページにアクセスがあった場合には、アクティブセグメント上のもっとも最新アクセスが古いページをみつけて、置き換える。
置き換え対象ページを選ぶアルゴリズムとしては、この他にもFIFOアルゴリズム、セカンドチャンスアルゴリズム、クロックアルゴリズム、ワーキングセットアルゴリズム、WSClockアルゴリズムなどがある(詳細は、「モダンオペレーティングシステム 原著第2版」アンドリュー・S・タンネンバウム著、発行所:(株)ピアソン・エデュケーション)。
このように、ページ置き換えアルゴリズムを用いることで、メモリアクセスの局所性を利用して、アクセス頻度の高いセグメントと、低いセグメントを分けることができ、セグメントをスリープする機会を増やすことができる。
[スリープセグメント数の決定]
CPUが論理アドレスを用いてアクセスする際に、アドレス変換表から物理アドレスを調べ、セグメント情報変換テーブル(図5参照)からセグメント情報を得て、物理メモリにアクセスする。この際、該当セグメントのアクセス回数をインクリメントする。
OSは時間間隔T毎のタイマ割り込みにより、数式2を用いてアクセス頻度を計算し、アクセス回数をゼロクリアする。
スリープセグメントにおいて、アクセス頻度が、電力状態判定閾値λsleepよりも大きければ、そのスリープセグメントをアクティブにする。この際、ある一定時間にアクティブに変化させるスリープセグメント数に、上限を設けることが望ましい。具体的には、時間間隔T毎に、最大1個のセグメントのみ、電源状態を変えることができるようにする。
さらに、アクティブセグメントにおいて、アクセス頻度が、電力状態判定閾値λactiveよりも小さければ、そのアクティブセグメントをスリープにする。この際、ある一定時間にスリープに変化させるアクティブセグメント数に、上限を設けることが望ましい。具体的には、時間間隔T毎に最大1個のセグメントのみ、電源状態を変えることができるようにする。λactive<λsleepであることが望ましい。
ここで、λactiveとλsleepは、セグメント毎に異なる値を使用することも可能である。具体例としては、セグメントの電力特性およびアクセス特性(アクセスに要する消費電力、スリープ状態に要する消費電力、アクティブ状態に要する消費電力、電力状態を変更するのに要する時間など)に応じて変更することが挙げられる。
また、最も最近に電力状態を変更したときからの経過時間に応じて、λactive、λsleepを変更することも可能である。具体的には、経過時間が短いほど電力状態の変更が行わないように設定することで、電力状態の過度な変更を防ぐことができる。
図9に、時間間隔T毎に最大1つのスリープセグメントがアクティブに変更され、最大1つのアクティブセグメントがスリープに変更される場合の処理を示す。
まずパラメータ変数i=0として(S201)、セグメントiのアクセス頻度を計算し(S202)、セグメントiのアクセス回数をゼロにクリアする(S203)。すべてのセグメントについてS202、S203の処理を行う(S204、S205)。
アクティブセグメントの中で最小のアクセス頻度を有するものを特定する(S206)。特定したセグメントのアクセス頻度がλactive以下かを判定する(S207)。λactive以下の場合は、セグメントをスリープ状態に変更し(S208)、ステップS209に進む。λactiveより大きい場合は、ステップS209に進む。
次に、スリープセグメントの中で最大のアクセス頻度を有するものを特定する(S209)。特定したセグメントのアクセス頻度がλsleep以上かを判定する(S210)。λsleep以上の場合は、特定したセグメントをアクティブ状態に変更し(S211)、本処理を終了する。λsleepより小さい場合は、処理を終了する。
本アルゴリズムの変形として、セグメントに電力状態に対する順序を予めつけておき、その順序とアクセス頻度に応じて、電力状態を決定することもできる。順序をつけるとは、セグメントiは、セグメントi-1,i-2,,,0がアクティブ状態である場合にアクティブ状態にすることができ、またセグメントiはセグメントi+1,i+2,,,,がスリープ状態の場合にのみスリープ状態とすることができる、という制限を付けることである。
この順序は、アクティブ状態での消費電力の小さいセグメントほど小さいことが望ましい。あるいは、スリープ状態での消費電力が小さいセグメントほど大きいことが望ましい。あるいは、アクティブ状態でのアクセス遅延が小さいほど順序が小さい方が望ましい。あるいは、スリープ状態からアクティブ状態への遷移に要するコスト(遷移時間あるいは消費電力)が大きいセグメントほど順序が小さいことが望ましい。これらの順序は、メモリがDRAMで実現されているかMRAMで実現されているかによって、あるいはCPUとメモリの電気的な接続距離によって、決めることが望ましい。以下、具体的に述べる。
カラムアドレスを送信する信号線が、アドレスバッファ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パッケージに存在し、別のメモリモジュールは別パッケージにて実現されているとする。このとき、同一パッケージ内のメモリモジュールのアクセスは低消費電力・低アクセス遅延で実現できることが期待できる。このため、同一パッケージ内のメモリモジュールほどアクティブ状態になることが望ましい。すなわちセグメント順序を小さく割り当てることが望ましい。
図7(a)は、物理メモリを模擬的に示した図である。白抜きのセグメント(セグメント0,1)はアクティブ状態であり、ハッチングのセグメント(セグメント2~7)はスリープ状態である。時間間隔T毎に各セグメントのアクセス頻度を計算し、以下に従い、スリープセグメント数を決める。
1.アクセス頻度がλactive以下のアクティブセグメントが存在し、アクセス頻度がλsleep以上のスリープセグメントが存在しない場合、スリープセグメント数を一つ増やす。(図7において(a)から(c)に変更)
2.アクセス頻度がλactive以下のアクティブセグメントが存在せず、アクセス頻度がλsleep以上のスリープセグメントが存在する場合、スリープセグメント数を一つ減らす。(図7において(a)から(b)に変更)
3.アクセス頻度がλactive以下のアクティブセグメントが存在せず、アクセス頻度がλsleep以上のスリープセグメントが存在しない場合、スリープセグメント数を変更しない。
4.アクセス頻度がλactive下のアクティブセグメントが存在し、アクセス頻度がλsleep上のスリープセグメントが存在する場合、スリープセグメント数を変更しない。
上記項目4では、スリープセグメント数を変更していないが、消費電力を優先してスリープセグメント数を増やすこともできる。あるいは、処理性能を優先してスリープセグメント数を減らすことも可能である。
[セグメントの電力状態の変更のバリエーション]
上では、CPUがメモリモジュールにセグメントの電力状態を変更する命令を発行する場合を例に挙げて、説明を行ったが、この命令をMMU15が発行しても構わない。
また、図5のセグメント情報管理テーブルをメモリモジュールが保持し、メモリモジュール内でアクセス回数とアクセス頻度の計算を行い、メモリモジュール内でページ置き換えとセグメントの電力状態を変更することも可能である。この場合、図10のアドレス変換表と同様の変換表をメモリモジュールがMMU15とは別途保持して、CPUがメモリをアクセスする物理アドレスと、メモリモジュール内部の内部アドレスとの対応関係を維持する。これにより、ページ置き換えをメモリモジュールの中で隠ぺいして、ページ置き換えをCPUが意識しなくても済むようにする。
[メモリの確保・解放]
プロセスあるいはOSがメモリを必要とする場合、OSは物理ページを確保し、対応する論理アドレスを決め、アドレス変換表に書き込む。図6は、物理メモリの使用状態を模擬的に記した図である。
セグメントあたり物理ページが4つあり、ページ0はアドレス00000000から00000fffの領域であり、ページ1はアドレス000001000から00002fffの領域である(ページサイズ4KB)。ページ1,2,3,4は既にメモリ確保され使用中であり、残りは空き(未使用)である。
OSは、新たにメモリを確保する必要がある場合、空きページの中で最もアドレスの若いものを確保する。このようにすることで、空ページをアドレスの大きい領域にまとめることができ、アドレスの大きいセグメントをスリープにできるチャンスが増える。そして、論理アドレスと物理アドレスの対応をアドレス変換表に記す。
メモリを開放する場合には、アドレス変換テーブルの該当する領域を削除する(あるいは該当領域のエントリの属性値を未使用に変更する)。
[構成例]
図15は、本実施例に係る計算処理装置の構成例を示す。
図15に示す計算処理装置は、電力状態決定部501と電力状態制御部502と入出力処理部503と電力状態記憶部504とアドレス変換表管理部505とページ置き換え実行部506とを備える。実施例1と比べ、アドレス変換表管理部505と、ページ置き換え実行部506が追加されている。
入出力処理部503(普通はCPU)は、外部(普通はOSから)メモリアクセス要求を受信する((1))と、これに含まれる論理アドレスに対応する物理アドレスを、アドレス変換管理部505から導出する。そして、この物理アドレスを電力状態決定部501に送信するとともに、この物理アドレスを含むセグメントの電力状態を電力状態記憶部504から得る。
もし、そのセグメントの電力状態がスリープ状態の場合は、入出力処理部503は、電力状態制御部502にそのセグメントをアクティブ状態にするよう要求する。その後、メモリアクセス要求(read要求またはwrite要求)に従い、データのreadあるいはwriteを実行する((2))。電力状態がスリープであった場合には、ページ置き換え部506にページ置き換えを要求し、その後、電力状態制御部502にそのセグメントをスリープ状態に戻すことを要求する。
ここでメモリアクセス要求がread要求の場合は、要求に論理アドレス情報が含まれる。またメモリからの応答には、メモリ内の指定された論理アドレスに保持されていたデータが含まれる。また、メモリアクセス要求がwrite要求の場合は、要求に論理アドレス情報と書き込むべきデータとが含まれる。メモリからの応答は、書き込み完了を伝えるイベントが含まれる。
電力状態決定部501および電力状態制御部502の動作は実施例1と同じであるため、説明を省略する。
電力状態記憶部504は、実施例1と同様、各セグメントの電力状態を記憶している。
アドレス変換表管理部505は、図4に示したように論理アドレスと物理アドレスの対応(アドレス変換表)を管理している。図示しないが、メモリ確保やメモリ解放操作により、アドレス変換表の内容は変化する。
ページ置き換え実行部506は、入出力処理部503からアクセスする物理アドレスを受信すると、そのアクセスを記録する。さらに、入出力処理部503からページ置き換えを要求されると、上記アクセス記録を基に、例えばNFUアルゴリズムを用いて置き換え対象のページを決める。そして、ページ置き換え要求に含まれる物理アドレスから算出されるページと、置き換え対象ページを置き換える((4))。この置き換え操作は例えば、両ページ上のデータをメモリモジュールから読み、元とは異なるページに書き込むことで実現する。
[備考]
本実施例では、OSがメモリアクセス頻度を算出し、これを基に電力状態の変更要求をメモリモジュールに送信した。別の構成としてデーモンプロセスのようなユーザ空間で実行されるプログラムがこれを行ってもよいし、ソフトウエアのCPU処理ではなく別のハードウエアによる処理で実現することも可能である。
本発明は、DRAMのような不揮発メモリに対して適用可能であるが、MRAMのような不揮発メモリに対して適用すると、スリープ状態での消費電力を一層削減することができるため、一層好適である。
また、DRAMとMRAMのように複数の種別のメモリを使用した計算機に本発明を適用することもできる。この場合、MRAMのようにスリープ状態の消費電力の小さいメモリ上のセグメントをDRAM上のセグメントよりも優先的にスリープするよう制御することが望ましい。これは、例えば、MRAM上のセグメントにDRAM上のセグメントよりも大きな順序を与えることで実現できる。
(実施例3:仮想メモリを使用する場合)
実施例2の構成に加え、仮想メモリを利用する場合について、説明を行う。本実施例のブロック構成は、実施例2と同様である。また、実施例1、2で記載した様々なバリエーションは、実施例3にも適用可能である。
[仮想メモリの一般的な動作]
仮想メモリとは、論理ページ上のデータが物理メモリ上ではなく、HDDなどの他の記憶媒体上に存在できるようにする方法である。これは、アドレス変換表を拡張することで実現する。
CPUが論理アドレスのデータにアクセスする際に、図4で示したアドレス変換表から対応するエントリをMMU15が導出する。このエントリの属性として、在・不在情報と、アサイン済・未アサイン情報が記されている。
アサイン済とはメモリ確保済であることを示し、未アサインとはメモリ確保されていないことを示す。
在・不在情報とは、アサイン済である場合に有効な情報で、在の場合は物理メモリ上にデータが存在することを示す。不在の場合は、物理メモリ上にデータが存在しないことを示す。
対応するエントリの属性情報をMMU15は検査し、アサイン済で不在の場合、CPUコア12に割り込みを入れる。
割込みを受信したCPUコア12は割り込みハンドラを起動し、スワップ変換表からHDD41上のどの部分にデータが保持されているのかを導出する。割り込みハンドラは、その情報を基にHDD41にアクセスし、対応するデータを物理メモリ31に格納する。格納は、アクティブページに行うのが望ましい。格納した物理アドレスを基にアドレス変換表を書き換える。さらに、スワップ変換表を書き換える。その後、割り込みハンドラは処理を終え、当初のメモリアクセスの処理を継続する。論理アドレスに対応する物理アドレスをアドレス変換表にて導出し、これに記されている物理アドレスにアクセスすることで、論理アドレスに対応するデータにアクセスすることができる。
図12にこのスワップ変換表を模擬的に示す。
この例では、HDD41上のスワップファイルに、論理ページに対応するデータが保持されており、そのスワップファイルのどの部分にデータがあるのかをスワップ情報テーブルは記している。例えば、論理ページ0はスワップファイルの先頭4KB(ページサイズ4KBの場合)に保持されており、論理ページ1は先頭から4KBから8KB部分に保持されていることを示す。
ここで、スワップ領域はHDD41に保持する場合を例に示したが、HHDではなくSSDに保持することも可能である。また、SSDとHHDの両方に保持し、アクセス頻度の高いデータを優先してSSDに保持することで、計算機の処理性能を向上することもできる。これは、HDDよりもSSDの方が低遅延にアクセス可能であるためである。
[HDDへの書き出し動作]
次に、物理メモリ31上のデータをHDD41に書き出す処理について述べる。
(1)時間間隔τ毎に、物理メモリ上の空き領域を検査し、空き領域のサイズを計算する。空き領域のサイズは、メモリ領域全体の中での空いている領域の合計サイズを意味する。
(2)空き領域のサイズが予め定められた第1の閾値を下回っている場合には、リードバッファに使用している領域を解放することで、空き領域を広げる。リードバッファとは、HDD上のファイルのリードアクセスをした際に使用したバッファ(データを保持しているメモリ領域)を解放せずに保持していたものである。これにより、同じファイルに再びアクセスが発生した際に、HDDへアクセスすることなしに、データを読むことが可能となる。このようにリードバッファを用いることでファイルアクセスの遅延が短くなることが期待できる。リードバッファを解放する際には、アドレス変換表の解放した領域に対応するエントリの属性情報を、未アサインとする。リードバッファに使用している領域は、スリープセグメントから選択するのが望ましい。
(2)空き領域のサイズが第2の閾値を下回っていた場合には、ライトバッファの保持するデータをHDDに書き込み、ライトバッファを解放することで、空き領域を広げる。ライトバッファとはHDD上のファイルにライトアクセス要求が、ユーザプロセスあるいはOSから発生した際に、HDDにはアクセスせず一時的に物理メモリ上に書き込みデータを保持しているものである。これにより、再度書き込み要求が発生した場合に、ライトバッファ内のデータを書き換えることで、HDDにアクセスすることなしにデータを書き換える。これにより複数回のHDDへのアクセスをそれよりも少ない回数(理想的には1回)に減らすことで、ファイルアクセスに要する時間を短くすることができる。ライトバッファを解放する際には、ライトバッファ内のデータをHDDの対応する領域に書き出し、さらにアドレス変換表の解放した領域に対応するエントリの属性情報を未アサインとする。解放するライトバッファは、スリープセグメントに属するものを選択するのが望ましい。この場合、スリープセグメントをいったんアクティブにし、データをHDDに書き出した後、スリープに戻す。
(3)空き領域のサイズが第3の閾値を下回っていた場合には、物理メモリ上のアクセス頻度が、最も少ないまたは閾値以下のページをHDD上に書き出す(スワップアウト)ことで、空き領域を広げる。当該ページが、スリープセグメントに属する場合は、スリープセグメントをいったんアクティブにし、データをHDDに書き出した後、スリープに戻す。
スワップアウトする際には、アクセス頻度の少ないページをHDDに書き出し、書き出した場所をスワップ情報テーブルに記し、アドレス変換表の対応するエントリの属性情報を不在とする。
ここで、スワップアウトするページを選ぶアルゴリズムには様々なバリエーションが存在し、LRUアルゴリズムやNRUアルゴリズムやFIFOアルゴリズム、セカンドチャンスアルゴリズム、クロックアルゴリズム、ワーキングセットアルゴリズム、WSClockアルゴリズムなどがある。
ここで、第3の閾値は、第1閾値と第2の閾値よりも大きいことが望ましい。
また、第1の閾値を複数用意し(例えば、第1-1の閾値、第1-2の閾値、第1-3の閾値)、閾値毎に解放せずにメモリ上に残すリードバッファの量を変えてもよい。ここで閾値が大きいほど、メモリ上に残すリードバッファ量も大きいことが望ましい。
また、第2の閾値を複数用意し(例えば、第2-1の閾値、第2-2の閾値、第2-3の閾値)、閾値毎に解放せずにメモリ上に残すライトバッファの量を変えてもよい。ここで閾値が大きいほどメモリ上に残すライトバッファ量も大きいことが望ましい。
リードバッファの解放あるいは、ライトバッファの解放あるいは、スワップアウトを行う際には、あるスリープセグメントをアクティブ状態に変更し、そのセグメント上のリードバッファの解放、ライトバッファの解放、データのスワップアウトを全て行った後に、そのセグメントをスリープ状態に戻すことが望ましい。これによりセグメントの電力状態の変更回数が減り、処理性能の向上が期待できる。また、複数のスリープセグメントを同時にアクティブ状態にした後、そのセグメント上のリードバッファの解放あるいは、ライトバッファの解放あるいは、スワップアウトの処理を行うことも可能である。
[備考]
本発明は、DRAMのような不揮発メモリに対して適用可能であるが、MRAMのような不揮発メモリに対して適用すると、スリープ状態での消費電力を一層削減することができるため、一層好適である。
(実施例4:DMA転送)
実施例1〜3では、メモリ領域の一部がスリープ状態となるため、DMA転送を用いる場合に、そのアクセス先のメモリ領域がスリープしていると、DMA転送に失敗する可能性がある。そこで、本実施例では、これまで述べた実施例でDMA転送を実現する方法について述べる。本実施例のブロック構成は、実施例2と同様である。
[DMA転送の基本シーケンス]
DMA転送とは、バスデバイス上のデータをメインメモリに転送させる際(あるいはメインメモリ上のデータをバスデバイスに転送させる際)に、CPUのかわりにDMAコントローラ(図1参照)を用いて、データ転送を行う方法である。CPUがデータ転送処理を行なう必要がないため、データ転送以外の他の処理をCPUが行うことができ、計算機の処理性能の向上が期待できる。
ここで、バスデバイスとは、図1の無線NIC51のようにバス上に存在するデバイスのことである。バスデバイスの例としてはビデオデータの圧縮・伸張を行うビデオカードや、サウンドデータを処理するサウンドカードや、USBインタフェースを外部に提供する拡張ボードなど様々なものが存在する。
さらに、図1のバス上のデバイスだけでなく、SATAインタフェースで接続されたHDDなどもDMA転送を行うデバイスとして扱うことが可能である。すなわち、DMA転送とは、CPUを用いずに、デバイスにその接続インタフェースを通じてアクセスするとともにメモリコントローラを通じてメインメモリにアクセスする転送方法である。本実施例では、例としてバス上のデバイスを用いて説明を行っていく。
図1ではDMAコントローラ17はCPU11内に存在するが、バスデバイス上に配することも可能であり、一つの計算機内に複数のDMAコントローラを配することも可能である。
DMA転送処理の処理シーケンスについて説明する。
まず、readの場合の処理シーケンスを説明する。
1. プロセスがreadシステムコールを呼ぶなどして、バスデバイス上のデータを要求する。
2. そのプロセスはスリープし、以下、OSによるreadシステムコールの処理となる。
3. readシステムコールの読み込み元アドレスの値から、それがデバイス上のデータであることを判断し、そのデバイスに対応するデバイスドライバに処理を任せる。
4. デバイスドライバは、DMA転送先のバッファ領域をメインメモリ31上に確保し、DMAコントローラ17に、readシステムコールで指定されたデータを、確保したバッファ領域に転送するよう設定する。
5. DMAコントローラ17は、CPUコア12と交渉しバスマスタとなり、バス転送を開始できる権限を得る。その後、バスを用いてデバイス上のデータをバッファ領域に転送する。
6. DMA転送が終了すると、DMAコントローラ17はCPU割り込みをいれる。
7. この割込みによりCPUコア12は割り込みハンドラを起動し、バッファ領域上のデータを、プロセスがreadシステムコールで指定してきたメモリ領域にコピーする。
8. プロセスはスリープを終え、コピーされたデータを処理する。
次に、writeの場合の処理シーケンスは、以下となる。
1. プロセスがwriteシステムコールを呼ぶなどして、バスデバイス上へのデータ書き込みを要求する。
2. そのプロセスはスリープし、以下、OSによるwriteシステムコールの処理となる。
3. writeシステムコールの書き込み先アドレスの値から、それがデバイス上であることを判断し、そのデバイスに対応するデバイスドライバに処理を任せる。
4. デバイスドライバは、DMA転送先のバッファ領域をメインメモリ31上に確保し、writeシステムコールで指定されたデータを、このバッファ領域にコピーする。そして、DMAコントローラ17に、writeシステムコールで指定された転送先に、バッファ領域のデータを転送するよう設定する。
5. DMAコントローラ17は、CPUと交渉しバスマスタとなり、バス転送を開始できる権限を得る。その後、バスを用いてバッファ領域のデータをデバイスに転送する。
6. DMA転送が終了すると、DMAコントローラ17はCPUコア12に割り込み信号を送る。
7. プロセスはスリープを終え、writeシステムコールの次の処理を行う。
以上に述べたreadとwriteの両方の場合で、DMA転送を行う際のバッファ領域は物理アドレス上で連続領域である必要がある。例えばページサイズが4KBで、バッファ領域として9KBが必要な場合、連続する3ページが必要である。
もうひとつのDMA転送の例として、無線NIC51を例に、バスデバイスが、当該バスデバイスからメインメモリへのデータの転送を要求する場合の処理シーケンスを示す。
1. 無線NIC51が無線リンクを介してパケットを受信し、その物理層の処理とMAC層の処理を行い、抽出したパケット(イーサフレーム)をNIC内のFIFOに蓄え、割り込み信号をCPUに送る。
2. CPUコア12は割り込みハンドラを起動し、NIC51のデバイスドライバが処理を開始する。
3. デバイスドライバは、DMA転送先のバッファ領域をメインメモリ31上に確保し、DMAコントローラ17にパケットをバッファ領域に転送するよう設定する。
4. DMAコントローラ17は、CPUコア12と交渉しバスマスタとなり、バス転送を開始できる権限を得る。その後、バスを用いてNIC51のFIFO内のパケットをバッファ領域に転送する
5. DMA転送が終了すると、DMAコントローラ17はCPU割り込み信号を送る
6. この割込みによりCPUコア12は割り込みハンドラを起動し、バッファ領域上のパケットの処理を行う。
[DMA用のバッファ領域は、スリープさせない場合]
[動作概略]
上述のDMA転送シーケンスとは別に、デバイスドライバはその初期化時(例えば、OS起動時、あるいは動的にロード可能なデバイスドライバの場合は、そのロード時)に、DMA転送に使用するバッファ領域をOSに対して予め確保する。確保された領域を保持するセグメントはスリープ状態としないようにする。ブロック図での動作を説明すると、計算処理装置における入出力処理部503は、ダイレクトメモリアクセス用のバッファ領域をセグメントに確保する手段を備え、電力状態決定部501は、バッファ領域が確保されたセグメントをアクティブに維持することを決定する。上述のDMA転送シーケンスにおいてバッファ領域の確保を行う際に、この予め確保した領域を用いることで、DMA転送先(あるいは転送元)を必ずアクティブ状態のセグメントとすることができる。
また、このバッファ領域を確保するための領域は、将来デバイスドライバがロードしたときにバッファ領域を確保する領域として予約しておき、OSが他の処理に使用しないことが望ましい。例えばLinuxではOSは物理アドレスの低位側からメモリを使用するため、この予約領域は物理アドレスの高位側から確保していくことが望ましい。これにより、デバイスドライバが動的にロードされる際にもバッファ領域を確保できる。
[動作シーケンス]
予約領域の確保について詳細に記す。
デバイスドライバはその初期化処理の際に、OSのメモリ管理機能に対してDMA転送用のバッファ領域を確保する。具体的には、デバイスドライバは、必要な領域のサイズをOSのメモリ管理機能に伝え、OSのメモリ管理機能は物理アドレスの高位側よりバッファ領域を確保し、その先頭アドレスをデバイスドライバに通知する。
図16にこのバッファ領域の確保の様子を模擬的に示す。
物理アドレスが図3で示した構造である場合に、セグメント6とセグメント7を描いたものである。図16(a)はビデオカードとのDMA転送用のバッファ領域が、既に予約されている(物理アドレス f0000000~ffffffffの領域)様子を示す。さらに、無線NICのデバイスドライバが48KBのバッファ領域の予約をOSに要求した様子を図16(b)に示す。
OSは新たに物理アドレス efff447f~dfffffffの領域を確保し、その先頭アドレスefff447fをデバイスドライバに通知する。ここで、セグメント7は常にアクティブ状態とし、実施例2で示したページ交換の対象にしない。OSは予約領域を連続領域として確保するが、セグメントを跨いでも構わない。また、例えばセグメント6上に新たにバッファ領域を確保した場合には、セグメント6は常にアクティブ状態とする。すなわち、バッファ確保のための予約領域が複数セグメントあるとき、バッファが確保されていないセグメントはスリープ状態し、バッファが確保されているセグメントはアクティブ状態とすることが望ましい。
[常にバッファ領域がアクティブであるからこそのバッファの使用方法]
無線NIC51のデバイスドライバは、その初期化時に確保したバッファ領域を用いて、DMA転送を行う。この際、上述したように無線NIC51がパケットを受信する度に、NIC51が割り込み信号送信を行い、これをきっかけにDMA転送にバッファ領域を通知することもできるが、ここではさらに別の処理シーケンス例についても述べる。
1. 無線NIC51のデバイスドライバの初期化時に、図16のようにDMA転送用のバッファ領域を確保する。
2. デバイスドライバは、そのバッファ領域をDMAコントローラ17に通知し、DMA転送を許可する
3. 無線NIC51は、パケットを受信しFIFOにこれを蓄積すると、DMAコントローラ17が上記2で通知されていたバッファ領域に向けてパケットデータを転送し、割り込み信号をCPUに送信する
4. CPUは割り込み信号を受信すると、割り込みハンドラを通じてパケット処理関数を実行する。
5. パケット処理関数は、バッファ領域に転送されているパケットを処理する
ここで、パケット処理関数がパケットを処理中に無線NIC51がパケットを受信すると、DMAコントローラ17はバッファ領域の空き領域にパケットデータをDMA転送し、CPUに割り込み信号を送信する。パケット処理関数は現在のパケット処理終了後に、その2番目にDMA転送されたパケットの処理を開始する。
ここで、DMAコントローラ17は、バッファ領域をリングバッファとして使用することが望ましい。すなわち、バッファ領域の先頭からパケットデータを転送していき、バッファ領域の最後まで使用した際には、再度バッファ領域の先頭から使用する。このとき、バッファ領域のどこにパケットデータが存在し、どこのパケットデータの処理を終えたかを示す情報をパケット処理関数とDMAコントローラ17が共有することが望ましい。また、パケット処理関数の処理が間に合わず、バッファ領域が未処理パケットデータでいっぱいになった際には、DMAコントローラ17は、新たなDMA転送を停止することが望ましい。
また、この例では、DMAコントローラ17は無線NIC51上に存在することが望ましい。このようにデバイスが、専用のDMAコントローラを有することで、複数のデバイスが存在する際のDMAコントローラを設定する負荷を軽減することが可能となる。
また、この例では一つのパケットデータのDMA転送が完了する毎に、DMAコントローラ17はCPUに割り込み信号を送信していた。別の構成として、予め定められた数(例えば5個)のパケットデータのDMA転送を完了する毎に、割り込み信号を送信するよう変形してもよい。これにより、CPUの割り込み信号の処理を減らすことができる。この場合には、予め定められた数のパケットデータをDMA転送する前に、FIFOが空となり転送すべきパケットが無い場合には、DMAコントローラはCPUに割り込み信号を送信することが望ましい。
[DMA転送のバッファ領域はスリープしており、DMA転送に失敗してからアクティブにする]
先ほどの例では、バッファ領域を格納するセグメントは、常にアクティブ状態であるとしたが、ある一定時間セグメントへのアクセスがない場合には、そのセグメントをアクティブ状態からスリープ状態にする構成も可能である。これにより、消費電力の一層の削減を実現できる。このときの一定時間が0の場合には、DMA転送が終了次第、そのセグメントをスリープ状態に移行させることを意味する。ブロック図での動作は、電力状態決定部501は、セグメントがアクティブ状態に設定されている状態で、当該セグメントへのダイレクトメモリアクセスが完了した後、当該セグメントをスリープ状態に設定することを決定する。電力状態制御部502は、当該決定に従って、当該セグメントをスリープ状態に設定する。
このとき、DMAコントローラ17は、スリープセグメント上のバッファ領域にデータ転送を行うため、データ転送に失敗する。そこで、DMAコントローラ17は、データ転送の失敗を検出すると割り込み信号をCPUに送信し、これを受信したCPU上で動作するプログラムにより、そのセグメントをアクティブ状態にし、その後再度DMA転送を行う。このようにして、スリープセグメント上のバッファ領域へのDMA転送を実現する。この動作の処理手順を以下に示す。
1. DMAコントローラ17がデータ転送の失敗を検出する。失敗検出は、例えば、データ転送成功信号を一定時間内に受信したか否かで行う。ブロック図における計算処理装置の入出力処理部503は、スリープ状態のセグメントへのダイレクトメモリアクセスが失敗したことを検知する手段を備える。
2. DMAコントローラ17は、割り込み信号をCPUに送信する。
3. CPUは割り込み信号に含まれるデバイス情報から、そのデバイスに対応したデバイスドライバを実行する。
4. デバイスドライバは、保持しているバッファ領域の物理アドレスから、セグメント情報管理テーブルを検索して、セグメント番号を得る。そして、その番号のセグメントに対し、アクティブ状態への変更命令を送信する。ブロック図での動作を説明すると、計算処理装置の電力状態決定部501は、上記失敗が検出されたとき、スリープ状態のセグメントをアクティブに変更することを決定し、電力状態制御部502は当該セグメントをアクティブに設定する。
5. デバイスドライバは、DMA転送の再度の実施をDMAコントローラ17に設定する。
ここで、DMA転送の失敗をDMAコントローラ17が検出しているが、この失敗検出は様々な箇所で可能である。例えば、この失敗検出をメモリコントローラが代わりに行うことも可能である。
上のシーケンスは、[DMA転送の基本シーケンス]の欄で述べたDMA転送パターンでも有効である。
[DMA転送前にセグメントをアクティブにする]
先ほどの例では、スリープセグメント上へのDMA転送時には、DMA転送失敗を検出してから再転送を行っているが、ここでは別の例を示す。
DMAコントローラ17は、バッファ領域を通知される際に、同時にそのバッファ領域を格納しているセグメント番号も通知されている。そこで、DMAコントローラ17がDMA転送を行う際には、最初にそのセグメントをアクティブ状態にする命令をメモリコントローラに送信し、その後DMA転送を行うことで、失敗なくDMA転送を行うことが可能となる。ブロック図での動作を説明すると、計算処理装置の入出力処理部503は、ダイレクトメモリアクセスによりアクセスされようとするセグメントがアクティブ状態およびスリープ状態のいずれにあるのかを検出する手段を備える。電力状態決定部501は、スリープ状態が検出されたときは、セグメントをアクティブ状態にすることを決定し、電力状態制御部502は当該セグメントをアクティブに設定する。
このセグメントをアクティブにする命令の送信をDMAコントローラ17が行うのではなく、メモリコントローラが行うことも可能である。この場合、メモリコントローラはセグメント情報管理テーブルあるいはその一部を有し、DMAコントローラ17からのメモリアクセス命令の物理アドレス情報からセグメント番号とその電力状態を導出する。メモリコントローラは、それがスリープ状態であればアクティブ状態にそのセグメントを変更し、DMAコントローラ17から受信したデータをメモリに転送する。もちろん、メモリからデバイスへのデータ転送の場合も同様に、メモリコントローラでセグメントの電力状態をアクティブにする。
あるいは、DMA転送に先立ってCPUがDMAコントローラ17にバッファ領域を設定する場合([DMA転送の基本シーケンス]の欄で述べた処理シーケンス)には、CPUがそのバッファ領域のセグメント番号と電力状態をセグメント情報管理テーブルから導出する。CPUは、その番号のセグメントがスリープ状態である場合には、アクティブ状態に変更し、その後DMAコントローラ17にDMA転送を指示する。これにより、スリープセグメント上へのDMA転送を防止することができる。この場合、DMA転送完了の割り込み信号をCPUが受信すると、そのセグメントをスリープ状態に戻してもよい。
[備考]
本実施例において、バッファ領域を確保しているセグメントに空きがある場合には、ページを置くことも可能である。この場合には、そのセグメントのセグメント順序は最も小さいことが望ましい。
デバイスハンドラの初期化時にバッファ領域を確保するのではなく、DMA転送毎にバッファ領域を確保する場合には、アクティブセグメント上でバッファ領域を確保することでDMA転送を行うことも可能である。この場合、所望のサイズの連続領域が確保できない場合には、アクティブセグメント上のページをスリープセグメント上あるいはHDD上に書き出すことで、バッファ領域を用意することが望ましい。

Claims (27)

  1. 複数の部分領域を含むメモリ領域の各前記部分領域へのアクセス回数を記憶部に記憶する記憶ステップと、
    各前記部分領域へのアクセス回数に基づき、前記各部分領域へのアクセス頻度をアクセス負荷として算出し、前記アクセス負荷を前記各部分領域に対応する閾値とそれぞれ比較することにより、第1の電力状態と、前記第1の電力状態よりも消費電力が低い第2の電力状態とを含む複数の電力状態のうちの1つを前記部分領域のそれぞれについて決定する電力状態決定ステップと、
    各前記部分領域を、前記電力状態決定ステップにより決定された電力状態にそれぞれ設定する電力状態制御ステップと、
    をコンピュータに実行させ
    前記各部分領域に対応する閾値は、前記各部分領域を前記第1の電力状態に維持するために必要な電力、前記各部分領域を前記第2の電力状態に維持するために必要な電力、前記各部分領域を前記第1の電力状態から前記第2の電力状態に遷移させるために必要な電力、前記各部分領域を前記第2の電力状態から前記第1の電力状態に遷移させるために必要な電力に基づき定められる
    プログラム。
  2. 前記閾値は、前記各部分領域を前記第1の電力状態に維持するために必要な電力から前記各部分領域を前記第2の電力状態に維持するために必要な電力を減算した値を、前記各部分領域を前記第1の電力状態から前記第2の電力状態に遷移させるために必要な電力と前記各部分領域を前記第2の電力状態から前記第1の電力状態に遷移させるために必要な電力とを加算した値で除算することで計算される
    請求項1に記載のプログラム。
  3. 前記第1の電力状態は、メモリアクセスが可能な状態であり、
    前記第2の電力状態は、メモリアクセスが不可能な状態であり、
    前記電力状態制御ステップは、前前記第2の電力状態の前記部分領域へのメモリアクセスが要求されたときは、前記部分領域を前記第1の電力状態に設定し、前記メモリアクセスが完了した後、前記部分領域を前記第2の電力状態に戻す
    請求項1ないしのいずれか一項に記載のプログラム。
  4. 前記第2の電力状態の前記部分領域のうち、前記メモリアクセスが要求された領域に含まれる第1データを読み出し、前記第1の電力状態の部分領域内の領域に前記第1データを格納する実行ステップと、
    前記メモリアクセスが要求された領域のアドレスと、前記第1データが格納された領域のアドレスの対応関係を管理する管理ステップと、
    をさらに前記コンピュータに実行させる請求項に記載のプログラム。
  5. 前記実行ステップは、前記第1の電力状態の部分領域内の前記領域に前記第1データが格納される前に、前記領域に格納されている第2データを読み出し、前記メモリアクセスが要求された領域に前記第2データを格納し、
    前記管理ステップは、前記第2データが読み出された領域のアドレスと、前記第2データが格納された領域のアドレスの対応関係を管理する、
    請求項に記載のプログラム。
  6. 前記実行ステップは、前記第2の電力状態の部分領域内のデータを、外部の記憶装置に書き出す場合、前記部分領域を前記第1の電力状態に変更し、前記データを書き出した後、前記領域を前記第2の電力状態に戻す
    請求項4または5に記載のプログラム。
  7. 前記実行ステップは、外部の記憶装置に記憶されたデータにアクセスする場合、前記外部の記憶装置から読み出したデータを前記第1の電力状態の部分領域に書き込む
    請求項4ないし6のいずれか一項に記載のプログラム。
  8. ダイレクトメモリアクセス用のバッファ領域を前記部分領域に確保するステップをさらに前記コンピュータに実行させ、
    前記電力状態決定ステップは、前記バッファ領域が確保された前記部分領域を前記第1の電力状態に維持することを決定する
    請求項1ないしのいずれか一項に記載のプログラム。
  9. 前記第2の電力状態の前記部分領域へのダイレクトメモリアクセスが失敗したことを検知するステップをさらに前記コンピュータに実行させ、
    前記電力状態決定ステップは、前記ステップにより失敗が検出されたとき、前記第2の電力状態の前記部分領域を前記第1の電力状態に変更することを決定し、
    前記電力状態制御ステップは、前記部分領域を前記第1の電力状態に設定する
    請求項1ないしのいずれか一項に記載のプログラム。
  10. ダイレクトメモリアクセスによりアクセスされようとする部分領域が前記1の電力状態および前記第2の電力状態のいずれにあるのかを検出するステップを前記コンピュータに実行させ、
    前記電力状態決定ステップは、前記第2の電力状態が検出されたときは、前記部分領域を前記第1の電力状態にすることを決定し、
    前記電力状態制御ステップは、前記部分領域を前記第1の電力状態に設定する
    請求項1ないしのいずれか一項に記載のプログラム。
  11. 前記電力状態決定ステップは、前記部分領域が前記第1の電力状態に設定され、前記部分領域へのダイレクトメモリアクセスが完了した後、前記部分領域を前記第2の電力状態に戻すことを決定する
    請求項9または10に記載のプログラム。
  12. 複数の部分領域を含むメモリ領域の各前記部分領域へのアクセス回数をアクセス負荷として算出し、前記アクセス負荷を前記各部分領域に対応する閾値とそれぞれ比較することにより、第1の電力状態と、前記第1の電力状態よりも消費電力が低い第2の電力状態とを含む複数の電力状態のうちの1つを前記部分領域のそれぞれについて決定する電力状態決定部と、
    各前記部分領域を、前記電力状態決定部により決定された電力状態にそれぞれ設定する電力状態制御部と、
    を備え、
    前記各部分領域に対応する閾値は、前記各部分領域を前記第1の電力状態に維持するために必要な電力、前記各部分領域を前記第2の電力状態に維持するために必要な電力、前記各部分領域を前記第1の電力状態から前記第2の電力状態に遷移させるために必要な電力、前記各部分領域を前記第2の電力状態から前記第1の電力状態に遷移させるために必要な電力に基づき定められる計算処理装置。
  13. 前記閾値は、前記各部分領域を前記第1の電力状態に維持するために必要な電力から前記各部分領域を前記第2の電力状態に維持するために必要な電力を減算した値を、前記各部分領域を前記第1の電力状態から前記第2の電力状態に遷移させるために必要な電力と前記各部分領域を前記第2の電力状態から前記第1の電力状態に遷移させるために必要な電力とを加算した値で除算することで計算される
    請求項12に記載の計算処理装置。
  14. 前記第1の電力状態は、メモリアクセスが可能な状態であり、
    前記第2の電力状態は、メモリアクセスが不可能な状態であり、
    前記電力状態制御部は、前記第2の電力状態の前記部分領域へのメモリアクセスが要求されたときは、前記部分領域を前記第1の電力状態に設定し、前記メモリアクセスが完了した後、前記部分領域を前記第2の電力状態に戻す
    請求項12ないし13のいずれか一項に記載の計算処理装置。
  15. 前記第2の電力状態の前記部分領域のうち、前記メモリアクセスが要求された領域に含まれる第1データを読み出し、前記第1の電力状態の部分領域内の領域に前記第1データを格納する実行部と、
    前記メモリアクセスが要求された領域のアドレスと、前記第1データが格納された領域のアドレスの対応関係を管理する管理部と、
    をさらに備えた請求項14に記載の計算処理装置。
  16. 前記実行部は、前記第1の電力状態の部分領域内の前記領域に前記第1データが格納される前に、前記領域に格納されている第2データを読み出し、前記メモリアクセスが要求された領域に前記第2データを格納し、
    前記管理部は、前記第2データが読み出された領域のアドレスと、前記第2データが格納された領域のアドレスの対応関係を管理する、
    請求項15に記載の計算処理装置。
  17. 前記実行部は、前記第2の電力状態の部分領域内のデータを、外部の記憶装置に書き出す場合、前記部分領域を前記第1の電力状態に変更し、前記データを書き出した後、前記部分領域を前記第2の電力状態に戻す
    請求項15または16に記載の計算処理装置。
  18. 前記実行部は、外部の記憶装置に記憶されたデータにアクセスする場合、前記外部の記憶装置から読み出したデータを前記第1の電力状態の部分領域に書き込む
    請求項15ないし17のいずれか一項に記載の計算処理装置。
  19. ダイレクトメモリアクセス用のバッファ領域を前記部分領域に確保する手段を備え、
    前記電力状態決定部は、前記バッファ領域が確保された前記部分領域を前記第1の電力状態に維持することを決定する
    請求項12ないし18のいずれか一項に記載の計算処理装置。
  20. 前記第2の電力状態の前記部分領域へのダイレクトメモリアクセスが失敗したことを検知する手段を備え、
    前記電力状態決定部は、前記手段により失敗が検出されたとき、前記第2の電力状態の前記部分領域を前記第1の電力状態に変更することを決定し、
    前記電力状態制御部は、前記部分領域を前記第1の電力状態に設定する
    請求項12ないし18のいずれか一項に記載の計算処理装置。
  21. ダイレクトメモリアクセスによりアクセスされようとする部分領域が前記1の電力状態および前記第2の電力状態のいずれにあるのかを検出する手段を備え、
    前記電力状態決定部は、前記第2の電力状態が検出されたときは、前記部分領域を前記第1の電力状態にすることを決定し、
    前記電力状態制御部は、前記部分領域を前記第1の電力状態に設定する
    請求項12ないし18のいずれか一項に記載の計算処理装置。
  22. 前記電力状態決定部は、前記部分領域が前記第1の電力状態に設定され、前記部分領域へのダイレクトメモリアクセスが完了した後、前記部分領域を前記第2の電力状態に戻すことを決定する
    請求項20または21に記載の計算処理装置。
  23. 複数の部分領域を含むメモリ領域の各前記部分領域へのアクセス回数を記憶部に記憶する記憶ステップと、
    各前記部分領域へのアクセス回数に基づき、前記各部分領域へのアクセス頻度をアクセス負荷として算出し、前記アクセス負荷を前記各部分領域に対応する閾値とそれぞれ比較することにより、第1の電力状態と、前記第1の電力状態よりも消費電力が低い第2の電力状態とを含む複数の電力状態のうちの1つを前記部分領域のそれぞれについて決定する電力状態決定ステップと、
    各前記部分領域を、前記電力状態決定ステップにより決定された電力状態にそれぞれ設定する電力状態制御ステップと、を備え、
    前記各部分領域に対応する閾値は、前記各部分領域を前記第1の電力状態に維持するために必要な電力、前記各部分領域を前記第2の電力状態に維持するために必要な電力、前記各部分領域を前記第1の電力状態から前記第2の電力状態に遷移させるために必要な電力、前記各部分領域を前記第2の電力状態から前記第1の電力状態に遷移させるために必要な電力に基づき定められる
    メモリ管理方法。
  24. ユーザにより操作入力を行うための入力手段と、
    画像表示を行う表示手段と、
    ネットワークと通信する通信手段と、
    CPUと、
    複数の部分領域を含むメモリ領域を有するメモリへアクセス可能なメモリアクセス手段と、
    計算処理手段と
    を備え、
    前記計算処理手段は、
    前記メモリ領域の各前記部分領域へのアクセス回数に基づき、前記各部分領域へのアクセス頻度をアクセス負荷として算出し、前記アクセス負荷を前記各部分領域に対応する閾値とそれぞれ比較することにより、第1の電力状態と、前記第1の電力状態よりも消費電力が低い第2の電力状態とを含む複数の電力状態のうちの1つを前記部分領域のそれぞれについて決定し、各前記部分領域を、前記決定された電力状態にそれぞれ設定し、
    前記各部分領域に対応する閾値は、前記各部分領域を前記第1の電力状態に維持するために必要な電力、前記各部分領域を前記第2の電力状態に維持するために必要な電力、前記各部分領域を前記第1の電力状態から前記第2の電力状態に遷移させるために必要な電力、前記各部分領域を前記第2の電力状態から前記第1の電力状態に遷移させるために必要な電力に基づき定められる、計算機。
  25. 前記計算処理手段は前記CPUに含まれる
    請求項24に記載の計算機。
  26. 前記計算処理手段は前記メモリに含まれる
    請求項24に記載の計算機。
  27. 前記メモリアクセス手段は、前記CPUに含まれる
    請求項24ないし26のいずれか一項に記載の計算機。
JP2012125215A 2012-05-31 2012-05-31 プログラム、計算処理装置、メモリ管理方法および計算機 Expired - Fee Related JP5624583B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012125215A JP5624583B2 (ja) 2012-05-31 2012-05-31 プログラム、計算処理装置、メモリ管理方法および計算機
US13/790,143 US9471131B2 (en) 2012-05-31 2013-03-08 Apparatus and machine for reducing power consumption of memory including a plurality of segment areas, method therefore and non-transitory computer readable medium
CN2013100868861A CN103455129A (zh) 2012-05-31 2013-03-19 计算机可读介质和计算处理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012125215A JP5624583B2 (ja) 2012-05-31 2012-05-31 プログラム、計算処理装置、メモリ管理方法および計算機

Publications (2)

Publication Number Publication Date
JP2013250791A JP2013250791A (ja) 2013-12-12
JP5624583B2 true JP5624583B2 (ja) 2014-11-12

Family

ID=49671803

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012125215A Expired - Fee Related JP5624583B2 (ja) 2012-05-31 2012-05-31 プログラム、計算処理装置、メモリ管理方法および計算機

Country Status (3)

Country Link
US (1) US9471131B2 (ja)
JP (1) JP5624583B2 (ja)
CN (1) CN103455129A (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IN2012DE00977A (ja) * 2012-03-30 2015-09-11 Intel Corp
CN104380259B (zh) * 2012-10-17 2018-09-21 华为技术有限公司 降低内存系统功耗的方法和内存控制器
US9760149B2 (en) * 2013-01-08 2017-09-12 Qualcomm Incorporated Enhanced dynamic memory management with intelligent current/power consumption minimization
KR20140113069A (ko) * 2013-03-15 2014-09-24 삼성전자주식회사 휘발성 메모리 장치의 자가 진단 수행 방법 및 전자 장치
US10342032B2 (en) 2013-07-04 2019-07-02 Nxp Usa, Inc. Method and device for streaming control data in a mobile communication system
WO2015001390A1 (en) * 2013-07-04 2015-01-08 Freescale Semiconductor, Inc. Method and device for data streaming in a mobile communication system
JP5983665B2 (ja) * 2014-03-17 2016-09-06 日本電気株式会社 アクセス回数カウント装置、メモリシステム、および、アクセス回数カウント方法
US9684360B2 (en) * 2014-10-30 2017-06-20 Intel Corporation Dynamically controlling power management of an on-die memory of a processor
US11399344B2 (en) * 2015-01-26 2022-07-26 Apple Inc. System and method for SoC idle power state control based on I/O operation characterization
US9971606B2 (en) * 2016-04-18 2018-05-15 Super Micro Computer, Inc. Technique for reordering hard drive activation reports to achieve sequential hard drive ordering
JP6706159B2 (ja) * 2016-06-22 2020-06-03 キヤノン株式会社 情報処理装置、及びその制御方法
US10104146B2 (en) * 2016-07-12 2018-10-16 Stmicroelectronics Asia Pacific Pte Ltd DPCM data compression using compressed data tags
US10539997B2 (en) * 2016-09-02 2020-01-21 Qualcomm Incorporated Ultra-low-power design memory power reduction scheme
US10488911B2 (en) * 2016-11-01 2019-11-26 National Taiwan University Method and computing system of allocating registers
JP6919538B2 (ja) * 2017-12-05 2021-08-18 富士通株式会社 電力制御システム及び電力制御プログラム
CN112005208A (zh) * 2018-04-30 2020-11-27 惠普发展公司, 有限责任合伙企业 针对处理阶段设备的对策实施
CN110739013B (zh) * 2018-07-18 2021-08-10 华邦电子股份有限公司 动态随机存取存储器
CN110850951B (zh) * 2019-09-29 2021-07-06 苏州浪潮智能科技有限公司 一种psu信息的刷新和读取方法、系统及设备

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160574A (ja) * 1993-12-13 1995-06-23 Matsushita Electric Ind Co Ltd 情報処理装置
JP4841070B2 (ja) * 2001-07-24 2011-12-21 パナソニック株式会社 記憶装置
JP2004047051A (ja) * 2002-05-17 2004-02-12 Matsushita Electric Ind Co Ltd メモリ制御装置および方法ならびにプログラム
JP3867034B2 (ja) * 2002-09-11 2007-01-10 株式会社リコー メモリ制御装置
JP2004118234A (ja) * 2002-09-20 2004-04-15 Ricoh Co Ltd データ転送装置
US7043649B2 (en) * 2002-11-20 2006-05-09 Portalplayer, Inc. System clock power management for chips with multiple processing modules
US7752470B2 (en) * 2003-12-03 2010-07-06 International Business Machines Corporation Method and system for power management including device controller-based device use evaluation and power-state control
JP2005196343A (ja) 2004-01-05 2005-07-21 Mitsubishi Electric Corp メモリ管理装置及びメモリ管理方法及びプログラム
US8010764B2 (en) * 2005-07-07 2011-08-30 International Business Machines Corporation Method and system for decreasing power consumption in memory arrays having usage-driven power management
US8024508B2 (en) * 2006-03-21 2011-09-20 Lg Electronics Inc. Computer storage control
JP4209906B2 (ja) * 2006-08-02 2009-01-14 株式会社日立製作所 低消費電力メモリ管理方法及びその方法を用いた計算機
US20080056051A1 (en) * 2006-08-31 2008-03-06 Peter Mayer Memory with memory banks and mode registers and method of operating a memory
US7882319B2 (en) * 2007-09-27 2011-02-01 Oracle America Inc. Method and system for memory management
JP2009211153A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリ装置、情報処理装置及び電力制御方法
JP5337239B2 (ja) * 2009-04-27 2013-11-06 株式会社日立製作所 半導体装置
US8799553B2 (en) * 2010-04-13 2014-08-05 Apple Inc. Memory controller mapping on-the-fly
US9015441B2 (en) * 2010-04-30 2015-04-21 Microsoft Technology Licensing, Llc Memory usage scanning
US20110296098A1 (en) * 2010-06-01 2011-12-01 Dell Products L.P. System and Method for Reducing Power Consumption of Memory
US8990531B2 (en) * 2010-07-12 2015-03-24 Vmware, Inc. Multiple time granularity support 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
JP2012027655A (ja) * 2010-07-22 2012-02-09 Hitachi Ltd 情報処理装置および省電力メモリ管理方法
US8838935B2 (en) * 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
JP2012230737A (ja) * 2011-04-26 2012-11-22 Elpida Memory Inc 半導体装置
JP2013149065A (ja) * 2012-01-19 2013-08-01 Nec Corp サーバ、サーバの消費電力削減方法、およびコンピュータプログラム

Also Published As

Publication number Publication date
JP2013250791A (ja) 2013-12-12
CN103455129A (zh) 2013-12-18
US20130326252A1 (en) 2013-12-05
US9471131B2 (en) 2016-10-18

Similar Documents

Publication Publication Date Title
JP5624583B2 (ja) プログラム、計算処理装置、メモリ管理方法および計算機
JP5989574B2 (ja) 計算機、メモリ管理方法およびプログラム
US10282292B2 (en) Cluster-based migration in a multi-level memory hierarchy
US10133677B2 (en) Opportunistic migration of memory pages in a unified virtual memory system
KR101562973B1 (ko) 메모리 장치 및 메모리 장치의 동작 방법
CN111414132B (zh) 带异构存储器的主存储设备、计算机系统及数据管理方法
US20110072204A1 (en) Memory server
US8645612B2 (en) Information processing device and information processing method
JP4902501B2 (ja) 電力制御方法、計算機システム、及びプログラム
JP2017138853A (ja) 情報処理装置およびプログラム
JP2012068936A (ja) メモリシステム
US20220245066A1 (en) Memory system including heterogeneous memories, computer system including the memory system, and data management method thereof
US20170177482A1 (en) Computing system having multi-level system memory capable of operating in a single level system memory mode
KR101298171B1 (ko) 메모리 시스템 및 그 관리 방법
KR20220116041A (ko) 이기종 메모리 시스템용 시그널링
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
CN108139983B (zh) 用于在多级系统存储器中固定存储器页面的方法和设备
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
JP2012168871A (ja) 計算機、消費電力低減方法およびプログラム
JP6209573B2 (ja) 情報処理装置および情報処理方法
KR20140016405A (ko) 메모리 시스템 및 그 관리 방법
US20220229552A1 (en) Computer system including main memory device having heterogeneous memories, and data management method thereof
US20210191641A1 (en) Systems and methods for reducing instruction code memory footprint for multiple processes executed at a coprocessor
KR20220138324A (ko) 지속성 지원 방법 및 컴퓨팅 장치
KR20240063607A (ko) 데이터 및 데이터 블록을 제공하는 스왑 메모리 장치, 이의 동작하는 방법, 및 이를 포함하는 전자 장치의 동작하는 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140818

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: 20140902

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140926

R151 Written notification of patent or utility model registration

Ref document number: 5624583

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees