JP2019200473A - メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法 - Google Patents

メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法 Download PDF

Info

Publication number
JP2019200473A
JP2019200473A JP2018093154A JP2018093154A JP2019200473A JP 2019200473 A JP2019200473 A JP 2019200473A JP 2018093154 A JP2018093154 A JP 2018093154A JP 2018093154 A JP2018093154 A JP 2018093154A JP 2019200473 A JP2019200473 A JP 2019200473A
Authority
JP
Japan
Prior art keywords
memory
data
page
swap
stored
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
JP2018093154A
Other languages
English (en)
Other versions
JP7132491B2 (ja
Inventor
風間 哲
Satoru Kazama
哲 風間
慎哉 桑村
Shinya Kuwamura
慎哉 桑村
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018093154A priority Critical patent/JP7132491B2/ja
Priority to US16/395,305 priority patent/US11029892B2/en
Publication of JP2019200473A publication Critical patent/JP2019200473A/ja
Application granted granted Critical
Publication of JP7132491B2 publication Critical patent/JP7132491B2/ja
Active 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0604Improving or facilitating administration, e.g. storage 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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/0673Single storage device
    • G06F3/0674Disk device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】簡易なデータ構造によりデータ位置を効率的に特定可能にする。【解決手段】記憶部15は、データが格納されたメモリに応じて第1の識別情報または第2の識別情報が設定されるフラグとデータの格納先のメモリ領域におけるデータが格納されたアドレスを示す情報とをデータに対応付けて記憶する。処理部14は、第1のメモリ11または第2のメモリ12にデータを格納すると第1の識別情報をフラグに設定し、第3のメモリ13にデータを格納すると第2の識別情報をフラグに設定する。処理部14は、データにアクセスする際に、データに対応するフラグに第1の識別情報が設定されている場合、アドレスを示す情報に基づいて、第1のメモリ11および第2のメモリ12のうちデータの格納先のメモリを判定し、判定された格納先のメモリにおけるデータの格納位置を特定する。【選択図】図1

Description

本発明はメモリ制御装置、メモリ制御プログラムおよびメモリ制御方法に関する。
情報処理システムでは、演算装置(例えば、CPU(Central Processing Unit))により処理するデータを主記憶装置(例えば、RAM(Random Access Memory))に格納する。主記憶装置は、比較的高速であるが、容量が比較的小さい。そこで、主記憶装置よりも低速だが容量が比較的大きい補助記憶装置(例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)など)を主記憶装置と共に用いて、記憶容量を拡張することが多い。また、主記憶装置よりも低速だが補助記憶装置よりも高速である拡張記憶装置を、主記憶装置や補助記憶装置と共に用いて記憶容量を更に拡張することもある。
例えば、拡張記憶装置をファイルの一時記憶場所、仮想記憶管理におけるスワップエリアなどとして利用する情報処理装置の提案がある。提案の情報処理装置は、命令処理装置がアクセスする仮想アドレスを実アドレスに変換するためのアドレス変換テーブルを有する。アドレス変換テーブルは、仮想ページアドレスに対応する実ページアドレスと、実ページが主記憶装置に存在しているか、または拡張記憶装置に存在しているかを表示する拡張記憶存在ビット(ビットE)とを含むページテーブルワードをその要素とする。
この提案では、更に、ページテーブルワードは、ページが記憶装置上に存在しているかを示すページ存在ビットPを含む。情報処理装置は、ビットEの値によりページが主記憶装置に存在しているか拡張記憶装置に存在しているかを判定する他、ページへのアクセスの例外発生に応じて、ビットEの値とビットPの値との組み合わせによりページが外部記憶装置上にあるか否かを判定する。
また、特定の命令の所定オペランドのアドレス変換により得た実アドレスが拡張記憶装置の実アドレスか否かを確認する計算機の提案もある。提案の計算機では、この確認のためページテーブルのページ対応の各項に、割当実ページが拡張記憶装置か否かを示すフラグを設け、管理プログラムがページ割当処理時にそのフラグを設定しておくようにする。
特開平5−233452号公報 特開昭63−244152号公報
上記のように、主記憶装置の容量を、拡張記憶装置および補助記憶装置により補うことが考えられる。しかし、上記提案のように、データが、何れの種類の記憶装置に格納されているかを管理するために複数の管理情報(例えば、上記のビットEやビットPなど)を設けると、保持する情報量が増加する問題がある。また、処理対象の情報量が増すと処理ステップが増大して、データアクセスに伴うオーバーヘッドの要因になり得る。
1つの側面では、本発明は、簡易なデータ構造によりデータ位置を効率的に特定可能にするメモリ制御装置、メモリ制御プログラムおよびメモリ制御方法を提供することを目的とする。
1つの態様では、第1のメモリ、第1のメモリよりも低速の第2のメモリおよび第2のメモリよりも低速の第3のメモリにおけるデータ配置を制御するメモリ制御装置が提供される。メモリ制御装置は、記憶部と処理部とを有する。記憶部は、データが格納されたメモリに応じて第1の識別情報または第2の識別情報が設定されるフラグとデータの格納先のメモリ領域におけるデータが格納されたアドレスを示す情報とをデータに対応付けて記憶する。処理部は、第1のメモリまたは第2のメモリにデータを格納すると第1の識別情報をフラグに設定し、第3のメモリにデータを格納すると第2の識別情報をフラグに設定し、データにアクセスする際に、データに対応するフラグに第1の識別情報が設定されている場合、アドレスを示す情報に基づいて、第1のメモリおよび第2のメモリのうちデータの格納先のメモリを判定し、判定された格納先のメモリにおけるデータの格納位置を特定する。
また、1つの態様では、メモリ制御プログラムが提供される。
また、1つの態様では、メモリ制御方法が提供される。
1つの側面では、簡易なデータ構造によりデータ位置を効率的に特定可能にする。
第1の実施の形態のメモリ制御装置の例を示す図である。 第2の実施の形態のサーバのハードウェア例を示すブロック図である。 CPUの機能例を示すブロック図である。 スワップアウト/スワップインの例を示す図である。 ページテーブルの例を示す図である。 ページフレーム番号とメモリ空間との対応関係の例を示す図である。 メモリ管理の処理例を示すフローチャートである。 スワップアウト/スワップインの比較例を示す図である。 第3の実施の形態のページテーブルの例を示す図である。 メモリ管理の処理例を示すフローチャートである。 スワップイン制御の処理例を示すフローチャートである。 第1スワップアウト制御の処理例を示すフローチャートである。 第2スワップアウト制御の処理例を示すフローチャートである。 第4の実施の形態のページテーブルの例を示す図である。 スワップイン制御テーブルの例を示す図である。 スワップアウト/スワップインの例を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態のメモリ制御装置の例を示す図である。
メモリ制御装置10は、第1のメモリ11、第2のメモリ12、第3のメモリ13、処理部14および記憶部15を有する。メモリ制御装置10は、第1のメモリ11、第2のメモリ12および第3のメモリ13におけるデータ配置を制御する。
第2のメモリ12は第1のメモリ11よりも低速である。すなわち、第1のメモリ11は、第2のメモリ12よりも高速である。第3のメモリ13は第2のメモリ12よりも低速である。すなわち、第2のメモリ12は第3のメモリ13よりも高速である。ここで、「低速」とは、単位時間当たりのデータ転送量が小さいことを意味する。「高速」とは、単位時間当たりのデータ転送量が大きいことを意味する。
具体的には、第1のメモリ11は、主記憶装置(メインメモリ)である。主記憶装置の一例として、DRAM(Dynamic RAM)が挙げられる。第2のメモリ12は、拡張記憶装置である。拡張記憶装置の一例として、SCM(Storage Class Memory)が挙げられる。SCMとして、例えば、MRAM(Magnetoresistive RAM)が利用され得る。第3のメモリ13は、補助記憶装置である。補助記憶装置の一例として、SSDやHDDが挙げられる。第2のメモリ12および第3のメモリ13は、第1のメモリ11に対するスワップ領域として用いられる。
なお、第1のメモリ11、第2のメモリ12および第3のメモリ13は、メモリ制御装置10に内蔵されていなくてもよい。すなわち、第1のメモリ11、第2のメモリ12および第3のメモリ13は、メモリ制御装置10の外部に接続されてもよい。
処理部14は、第1のメモリ11、第2のメモリ12および第3のメモリ13に対するアクセスを制御する処理を実行する。処理部14は、CPU、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部14はプログラムを実行するプロセッサでもよい。「プロセッサ」は、複数のプロセッサの集合(マルチプロセッサ)を含み得る。
記憶部15は、処理部14の処理に用いられる情報を記憶する。記憶部15は、第1のメモリ11、第2のメモリ12および第3のメモリ13とは別個に設けられた所定のバッファメモリでもよい。あるいは、記憶部15は、例えば、第1のメモリ11のメモリ領域のうちの所定の部分領域でもよい。
記憶部15は、データが格納されたメモリに応じて第1の識別情報または第2の識別情報が設定されるフラグとデータの格納先のメモリ領域におけるデータが格納されたアドレスを示す情報とをデータに対応付けて記憶する。
例えば、記憶部15は、テーブル20を記憶する。テーブル20は、エントリ番号(#)、フラグ、および、アドレス情報の項目を含む。エントリ番号には、データを識別する番号が設定される。エントリ番号「X」に対応するデータを、「エントリ#Xのデータ」と表記する。フラグは1ビットで表される情報である。フラグには、第1の識別情報または第2の識別情報が設定される。第1の識別情報は、例えば、「True」や「1」などである。第2の識別情報は、例えば、「False」や「0」などである。アドレス情報には、エントリ番号に対応するデータが格納されたメモリ領域において、当該データが格納されたアドレスを示す情報が設定される。
処理部14は、第1のメモリ11または第2のメモリ12(第1のメモリ11および第2のメモリ12の何れか一方)にデータを格納すると第1の識別情報をフラグに設定する。処理部14は、第3のメモリ13にデータを格納すると第2の識別情報をフラグに設定する。
例えば、データは、所定サイズのページを単位として、各メモリに格納される。一例として、1つのページのサイズを、16進数表記で「0x1000」バイト(10進数表記では「4096」バイト)とする。この場合、例えば、テーブル20には、該当のメモリ領域の物理アドレスの下2桁を除去したアドレス情報が登録される。処理部14は、当該アドレス情報の下2桁に「0x000」を付加する(すなわち、アドレス情報に「0x1000」を乗じる)ことで、該当ページが格納された領域の先頭の物理アドレスを求めることが可能である。
ここで、第1のメモリ11および第2のメモリ12に対するアドレス情報として、第1のメモリ11のメモリ領域と、第2のメモリ12のメモリ領域とが属するメモリ空間30の物理アドレスに対応するアドレス情報が用いられる。すなわち、処理部14は、メモリ空間30の範囲31を第1のメモリ11に割り当て、当該アドレス空間の範囲32を第2のメモリ12に割り当てる。
図1の例では、範囲31は、「0x0000000〜0x00FFFFF」である。また、図1の例では、範囲32は、「0x1000000〜0x10FFFFF」である。範囲32の先頭アドレスは、メモリ空間30の先頭アドレスから所定のオフセット(図1の例では「0x1000000」)を加算したアドレスである。当該オフセット「0x1000000」で示される物理アドレスは、例えば、第2のメモリ12のメモリ領域の先頭アドレスに対応する。
例えば、処理部14は、エントリ#1のデータ(ページ)を、メモリ空間30の物理アドレス「0x0021000」を先頭アドレスとして、第1のメモリ11に格納する。当該データの末端アドレスは「0x0021000」となる。すると、処理部14は、エントリ#「1」に対して、フラグ「True」およびアドレス情報「0x0021」をテーブル20に格納する。すなわち、処理部14は、エントリ#「1」のデータに対して、フラグ「True」をテーブル20に設定し、アドレス情報「0x0021」をテーブル20に記録する。
また、例えば、処理部14は、エントリ#2のデータ(ページ)を、メモリ空間30の物理アドレス「0x10A1000」を先頭として、第2のメモリ12に格納する。当該データの末端アドレスは「0x10A1FFF」となる。すると、処理部14は、エントリ#「2」に対して、フラグ「True」およびアドレス情報「0x10A1」をテーブル20に格納する。すなわち、処理部14は、エントリ#「2」のデータに対して、フラグ「True」をテーブル20に設定し、アドレス情報「0x10A1」をテーブル20に記録する。
また、例えば、処理部14は、エントリ#3のデータ(ページ)を、第3のメモリ13に格納する。すると、処理部14は、エントリ#「3」に対して、フラグ「False」および第3のメモリ13におけるエントリ#「3」のデータを格納した物理アドレスに対応するアドレス情報「xxxx」を、テーブル20に格納する。
次に、処理部14が第1のメモリ11、第2のメモリ12および第3のメモリ13に格納されたデータにアクセスする場合を説明する。
処理部14は、データにアクセスする際に、当該データに対応するフラグを参照する。処理部14は、フラグに第1の識別情報が設定されている場合、アクセス対象のデータが第1のメモリ11または第2のメモリ12に格納されていると判定する。また、処理部14は、フラグに第2の識別情報が設定されている場合、アクセス対象のデータが第3のメモリ13に格納されていると判定する。
上記のように、処理部14は、当該フラグに第1の識別情報が設定されている場合、アクセス対象のデータが第1のメモリ11または第2のメモリ12に格納されていると判定できる。この場合、処理部14は、更に、当該データに対して記憶部15に格納されたアドレスを示す情報に基づいて、第1のメモリ11および第2のメモリ12のうちデータの格納先のメモリを判定する。
すなわち、処理部14は、アクセス対象のデータに対してテーブル20に格納されているアドレス情報に基づいて、当該データが、第1のメモリ11または第2のメモリ12のどちらに格納されているかを判定する。具体的には、前述のように、範囲32のアドレス範囲は、メモリ空間30の先頭アドレスに対して、所定オフセット「0x1000000」を加算したアドレスを先頭アドレスとする所定サイズの範囲である。したがって、処理部14は、テーブル20において、フラグ「True」のエントリに関し、アドレス情報に対応する物理アドレスが範囲31に属するか、または、アドレス情報に対応する物理アドレスが範囲32に属するかに応じて、格納先のメモリを判定する。処理部14は、フラグ「True」のエントリのアドレス情報に対応する物理アドレスが範囲31に属する場合、当該エントリのデータの格納先のメモリを第1のメモリ11と判定する。一方、処理部14は、フラグ「True」のエントリのアドレス情報に対応する物理アドレスが範囲32に属する場合、当該エントリのデータの格納先のメモリを第2のメモリ12と判定する。
更に、処理部14は、当該アドレス情報に基づいて、データの格納先として判定された格納先のメモリにおけるデータの格納位置を特定する。具体的には、アドレス情報から求まる物理アドレスは、第1のメモリ11の物理アドレス、または、第2のメモリ12の物理アドレスに対応する。前述のように、範囲31(物理アドレス範囲「0x0000000〜0x00FFFFF」)は、第1のメモリ11のメモリ領域に対応する。また、例えば、範囲32(物理アドレス範囲「0x1000000〜0x10FFFFF」)は、第2のメモリ12のメモリ領域に対応する。処理部14は、範囲31に対して求めたアクセス先の先頭物理アドレス(例えば、「0x0021000」)により、第1のメモリ11のアクセス位置(例えば、第1のメモリ11の先頭から0x0021000のオフセット位置)を特定可能である。あるいは、処理部14は、範囲32に対して求めたアクセス先の先頭物理アドレス(例えば、「0x10A1000」)により、第2のメモリ12のアクセス位置(例えば、第2のメモリ12の先頭から0x00A1000のオフセット位置)を特定可能である。
そして、処理部14は、特定した格納位置に格納されたデータにアクセスする。例えば、処理部14は、当該データの読み出しや書き込みを行う。ここで、処理部14は、第2のメモリ12に格納されたデータにアクセスする場合、第1のメモリ11への当該データのスワップインを省略して(当該スワップインを制限して)、第2のメモリ12に格納された当該データに直接アクセスする。すなわち、処理部14は、フラグに第1の識別情報が設定されたデータに対して第1のメモリ11から第2のメモリ12への階層移動(例えば、スワップアウト)を許可し、第2のメモリ12から第1のメモリ11への階層移動(例えば、スワップイン)を制限する。これにより、当該データのスワップインに伴うオーバーヘッドを削減できる利点がある。
なお、アクセス対象のデータに対応するフラグに第2の識別情報が設定されている場合、処理部14は、当該フラグによりデータの格納先のメモリが第3のメモリ13であると判定する。この場合、処理部14は、当該データに対して記録されたアドレス情報をテーブル20から取得し、当該アドレス情報に基づいて、第3のメモリ13におけるアクセス対象のデータの格納位置を特定する。処理部14は、第3のメモリ13の特定した格納位置に格納されたデータにアクセスする。例えば、処理部14は、該当のデータを第3のメモリ13から読み出して、第1のメモリ11に書き込み(スワップイン)、第1のメモリ11に書き込んだ当該データにアクセスする。
より具体的には、処理部14は、エントリ#1のデータに対するアクセスを受け付ける。処理部14は、テーブル20を参照して、エントリ#「1」に対応するフラグが「True」であることを確認する。処理部14は、フラグが「True」であるため、エントリ#「1」に対応するアドレス情報「0x0021」から、該当のデータの格納先のメモリを判定する。この場合、アドレス情報「0x0021」に対応する物理アドレス「0x0021000」は、メモリ空間30における範囲31に属する。よって、処理部14は、アクセス対象のデータが第1のメモリ11に格納されていると判定する。そして、処理部14は、第1のメモリ11について、アドレス情報「0x0021」に対応する物理アドレス「0x0021000」を先頭アドレスとして、所定サイズ(ページサイズ)のアドレス範囲に格納されたデータにアクセスする。
また、処理部14は、エントリ#2のデータに対するアクセスを受け付ける。処理部14は、テーブル20を参照して、エントリ#「2」に対応するフラグが「True」であることを確認する。処理部14は、フラグが「True」であるため、エントリ#「2」に対応するアドレス情報「0x10A1」から、該当のデータの格納先のメモリを判定する。この場合、アドレス情報「0x10A1」に対応する物理アドレス「0x10A1000」は、メモリ空間30における範囲32に属する。よって、処理部14は、アクセス対象のデータが第2のメモリ12に格納されていると判定する。そして、処理部14は、第2のメモリ12について、物理アドレス「0x10A1000」を先頭アドレスとして、所定サイズ(ページサイズ)のアドレス範囲に格納されたデータにアクセスする。このとき、前述のように、処理部14は、第1のメモリ11へのスワップインを省略して、第2のメモリ12に格納されたデータに直接アクセスする。
更に、処理部14は、エントリ#3のデータに対するアクセスを受け付ける。処理部14は、テーブル20を参照して、エントリ#「3」に対応するフラグが「False」であることを確認する。処理部14は、フラグが「False」であるため、エントリ#「3」に対応するアドレス情報「xxxx」から、該当のデータの格納先のメモリを第3のメモリ13と判定する。処理部14は、アドレス情報「xxxx」に基づいて、第3のメモリ13におけるアクセス対象のデータの格納位置を特定し、特定した格納位置に格納された当該データにアクセスする。このとき、処理部14は、第3のメモリ13から第1のメモリ11へ該当のデータをスワップインする。処理部14は、第1のメモリ11にスワップインした当該データにアクセスする。処理部14は、スワップインに伴って、テーブル20のエントリ#3に対応するフラグを「True」に設定し、アドレス情報を、スワップイン先を示すアドレス情報(メモリ空間30における物理アドレスを示す情報)に更新する。
メモリ制御装置10によれば、記憶部15により、データが格納されたメモリに応じて第1の識別情報または第2の識別情報が設定されるフラグとデータの格納先のメモリ領域におけるデータが格納されたアドレスを示す情報とがデータに対応付けて記憶される。処理部14により、第1のメモリ11または第2のメモリ12にデータが格納されると第1の識別情報がフラグに設定される。また、第3のメモリ13にデータが格納されると第2の識別情報がフラグに設定される。データにアクセスする際に、データに対応するフラグに第1の識別情報が設定されている場合、アドレスを示す情報に基づいて、第1のメモリ11および第2のメモリ12のうちデータの格納先のメモリが判定される。そして、判定された格納先のメモリにおけるデータの格納位置が特定される。
これにより、簡易なデータ構造によりデータ位置を効率的に特定可能になる。例えば、データが、何れの種類の記憶装置に格納されているかを管理するために複数の管理情報(例えば、複数のビット(あるいは、複数のフラグ)など)を設けると、保持する情報量が増加する問題がある。この問題は、各メモリの容量が増加してページ数が増すほど顕著になる。また、処理対象の情報量が増すと処理ステップが増大して、データアクセスに伴うオーバーヘッドの要因になり得る。
そこで、メモリ制御装置10は、単一のフラグに設定される第1の識別情報によって第1のメモリ11または第2のメモリ12にデータが格納されたことを表し、第2の識別情報によって第3のメモリ13にデータが格納されたことを表す。そして、データへのアクセス時には、当該フラグが第1の識別情報を示す場合、テーブル20に記録されたアドレス情報によって、データの格納先のメモリが第1のメモリ11であるか、第2のメモリ12であるかを判定し、また、当該データの格納位置を特定する。このため、データの格納先のメモリを特定するために複数のビット(あるいは複数のフラグ)を設けずに済み、メモリ制御装置10により保持する情報量の増加を抑えられる。また、処理対象の情報量を抑えられるので、処理ステップの増大を抑制し、データアクセスに伴うオーバーヘッドを低減できる。その結果、データアクセスを高速化できる。
また、前述のように、処理部14は、第2のメモリ12にアクセスする場合、第1のメモリ11へのスワップインを行わずに、第2のメモリ12に直接アクセスする。近年では、第2のメモリ12として、第3のメモリ13よりも大幅に高速なメモリが利用可能であり、スワップインを省略することで、スワップインに伴うオーバーヘッドを低減し、より高速なデータアクセスを実現できる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態のサーバのハードウェア例を示すブロック図である。
サーバ100は、CPU101、DRAM102、SCM103、SSD104、画像信号処理部105、入力信号処理部106、媒体リーダ107および通信インタフェース108を有する。なお、サーバ100は、第1の実施の形態のメモリ制御装置10の一例である。また、CPU101は、第1の実施の形態の処理部14の一例である。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、SSD104に記憶されたプログラムやデータの少なくとも一部をDRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、サーバ100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
DRAM102は、サーバ100の主記憶装置であり、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。DRAM102は、第1の実施の形態の第1のメモリ11の一例である。DRAM102を第1の種類のメモリと言うこともできる。
SCM103は、サーバ100の拡張記憶装置である。SCM103は、DRAM102に対するスワップ領域を提供する。SCM103は、例えば、MRAMである。SCM103は、第1の実施の形態の第2のメモリ12の一例である。SCM103を第2の種類のメモリと言うこともできる。
SSD104は、サーバ100の補助記憶装置であり、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。また、SSD104は、DRAM102に対するスワップ領域を提供する。SSD104は、SCM103に対するスワップ領域として用いられることもある。SSD104は、第1の実施の形態の第3のメモリ13の一例である。SSD104を第3の種類のメモリと言うこともできる。
ここで、DRAM102、SCM103およびSSD104のうち、アクセス速度は、DRAM102が最も速く、次にSCM103が速く、SSD104が最も遅い。一方、DRAM102、SCM103およびSSD104のうち、記憶容量は、SSD104が最も大きく、次にSCM103が大きく、DRAM102が最も小さい。
画像信号処理部105は、CPU101からの命令に従って、サーバ100に接続されたディスプレイ201に画像を出力する。ディスプレイ201としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
入力信号処理部106は、サーバ100に接続された入力デバイス202から入力信号を取得し、CPU101に出力する。入力デバイス202としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、サーバ100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ107は、記録媒体203に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体203として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ107は、例えば、記録媒体203から読み取ったプログラムやデータを、DRAM102、SCM103およびSSD104などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体203は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体203やSSD104を、コンピュータ読み取り可能な記録媒体と言うことがある。
通信インタフェース108は、ネットワーク204に接続され、ネットワーク204を介して他のコンピュータと通信を行うインタフェースである。通信インタフェース108は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
図3は、CPUの機能例を示すブロック図である。
CPU101は、命令実行部110、MMU(Memory Management Unit)120、DDR I/F(Double-Data-Rate InterFace)130およびPCIe I/F(Peripheral Component Interconnect express InterFace)140,150を有する。
命令実行部110は、CPU101のプロセッサコアである。命令実行部110は、アプリケーションプログラムを実行することで、アプリケーション111の機能を発揮する。アプリケーション111は、DRAM102、SCM103およびSSD104に格納されたデータにアクセスし、当該データに基づいて、アプリケーション111が提供する機能に応じた所定の処理を実行する。また、命令実行部110は、メモリ制御プログラムを実行することで、メモリ管理部112の機能を発揮する。
メモリ管理部112は、データをページの単位で管理する。一例として、1つのページのサイズは、0x1000バイト(4096バイト)であるとする。また、メモリ管理部112は、ページの格納先の記憶デバイスを管理する。メモリ管理部112は、DRAM102からSCM103へのスワップアウト、SCM103からSSD104へのスワップアウト、および、SSD104からDRAM102へのスワップインを制御する。
メモリ管理部112は、アプリケーション111によるメモリアクセスの要求を受け付ける。メモリ管理部112は、当該要求に応じて、MMU120を介したDRAM102またはSCM103へのメモリアクセス、または、MMU120を介さずにPCIe I/F150を介したSSD104へのブロックI/O(Input/Output)を行う。
メモリ管理部112は、SCM103に格納されたページにアクセスする際、SCM103からDRAM102への当該ページのスワップインを行わずに、SCM103に直接アクセスするようMMU120を制御する。
MMU120は、メモリ管理部112により指示されたメモリアクセスを処理する。MMU120は、メモリ管理部112の指示に応じて、DDR I/F130を介したDRAM102へのメモリアクセス、または、PCIe I/F140を介したSCM103へのMMIO(Memory-mapped Input/Output)を行う。MMIOの技術を用いることで、DRAM102のメモリ領域とSCM103のメモリ領域とを合わせたメモリ領域に属する単位領域に対して物理アドレスを割り当て、当該物理アドレスによりDRAM102およびSCM103へのアクセスを可能にする。
DDR I/F130は、Load/Store命令を用いて、DRAM102にアクセスする。Load命令は、指定されたDRAM102の物理アドレスからデータ(ページ)を読み出し、CPU101の所定のキャッシュ(図示を省略している)に格納する。Store命令は、キャッシュに格納されたデータを指定されたDRAM102の物理アドレスへ書き込む。
PCIe I/F140は、Load/Store命令を用いて、SCM103にアクセスする。Load命令は、指定されたSCM103の物理アドレスからデータ(ページ)を読み出し、CPU101の所定のキャッシュに格納する。Store命令は、キャッシュに格納されたデータを、指定されたSCM103の物理アドレスへ書き込む。
PCIe I/F150は、Read/Write命令を用いて、SSD104にアクセスする。Read命令は、指定されたSSD104の物理アドレスからデータ(ページ)を読み出す。メモリ管理部112は、読み出されたデータをDRAM102に格納する。Write命令は、SCM103に格納されたデータを、指定されたSSD104の物理アドレスへ書き込む。
ここで、CPU101を第1の実施の形態のメモリ制御装置10の一例と考えてもよい(この場合、命令実行部110を第1の実施の形態の処理部14の一例と考えることができる)。
図4は、スワップアウト/スワップインの例を示す図である。
CPU101は、Load/Store命令を用いて、DRAM102にアクセスする。CPU101からDRAM102に対するアクセスは直接アクセスである。CPU101は、Load/Store命令を用いて、SCM103にアクセスする。CPU101からSCM103に対するアクセスは直接アクセスである。DRAM102の記憶領域(フレーム)を新たなページに割り当てる際、DRAM102に空き領域がない場合、DRAM102に格納されたページが、SCM103にスワップアウトされる。また、SCM103に新たなページを割り当てる際、SCM103に空き領域がない場合、SCM103に格納されたページが、SSD104にスワップアウトされる。DRAM102からSCM103へのスワップアウト、および、SCM103からSSD104へのスワップアウトのアルゴリズムには、LRU(Least Recently Used)が用いられる。LRUによれば、該当のメモリに格納されているページのうち、最後のアクセスから最も長い時間が経過したページがスワップアウト対象として選択される。更に、CPU101がSSD104に格納されたページにアクセスする際、SSD104に格納されたページがDRAM102にスワップインされる。そして、CPU101は、DRAM102に格納されたページにLoad/Store命令を用いてアクセスする。
メモリ管理部112は、ページの格納先をページテーブルによって管理する。次に、ページテーブルについて説明する。
図5は、ページテーブルの例を示す図である。
ページテーブル160は、例えば、MMU120内のバッファに格納される。ページテーブル160は、DRAM102の所定の領域に格納されてもよい。ページテーブル160は、第1の実施の形態のテーブル20に対応する。ページテーブル160は、エントリ番号、ページフレーム番号(PFN:Page Frame Number)および有効フラグ(V)の項目を含む。
エントリ番号は、ページテーブル160のエントリ(ページテーブル160における1つのレコード)を識別する番号である。ページフレーム番号は、ページが格納された記憶領域(フレーム)の先頭の物理アドレスを示す情報(アドレス情報)である。以下の説明では、ページフレーム番号を「PFN」と略記することがある。有効フラグは、ページが、DRAM102またはSCM103に格納されているか否かを示す情報である。有効フラグ「1」は、ページが、DRAM102またはSCM103に格納されていることを示す。有効フラグ「0」は、ページが、DRAM102およびSCM103の何れにも格納されていないことを示す。SSD104に格納されたページに対しては、有効フラグ「0」が設定されることになる。
すなわち、ページテーブルのエントリには、有効フラグ「1」の場合、DRAM102の物理アドレスを示すページフレーム番号、または、SCM103の物理アドレスを示すページフレーム番号が設定される。また、SSD104にスワップアウトされたページに対しては、有効フラグとして「0」が、ページフレーム番号として「スワップファイル内のアドレス」がそれぞれ設定される。
また、ページテーブル160の各エントリ(例えば、エントリ番号)は、アプリケーション111が認識する仮想アドレスに対応付けられる。アプリケーション111は、メモリ管理部112に対してアクセス先の仮想アドレスを指定する。すると、メモリ管理部112は、指定された仮想アドレスに対応するエントリをページテーブル160から検索する。そして、メモリ管理部112は、当該エントリに含まれる有効フラグおよびページフレーム番号に基づいて、アクセス先の記憶デバイスおよび当該記憶デバイスにおける物理アドレスを特定する。
例えば、ページテーブル160には、エントリ番号「#00052」、ページフレーム番号「0x000000800」、有効フラグ「1」というエントリが登録される。このエントリは、エントリ番号「#00052」に対応するページに対する有効フラグが「1」であり、ページフレーム番号が「0x000000800」であることを示す。
また、ページテーブル160には、エントリ番号「#00160」、ページフレーム番号「0x010000A00」、有効フラグ「1」というエントリが登録される。このエントリは、エントリ番号「#00160」に対応するページに対する有効フラグが「1」であり、ページフレーム番号が「0x010000A00」であることを示す。
また、ページテーブル160には、エントリ番号「#00250」、ページフレーム番号「スワップファイル内のアドレスX」、有効フラグ「0」というエントリが登録される。このエントリは、エントリ番号「#00250」に対応するページに対する有効フラグが「0」であり、ページフレーム番号が「スワップファイル内のアドレスX」であることを示す。
なお、ページテーブル160には上記の情報に限らず、他の情報が格納されてもよい。例えば、該当のページに対するWrite/Readの制限を示す情報や、アクセス権限を示す情報などが格納され得る。
また、ページテーブル160がMMU120内のバッファに格納される場合、当該バッファは、第1の実施の形態の記憶部15の一例と考えることができる。ページテーブル160がDRAM102の所定のメモリ領域に格納される場合、当該所定のメモリ領域は第1の実施の形態の記憶部15の一例と考えることができる。
図6は、ページフレーム番号とメモリ空間との対応関係の例を示す図である。
例えば、メモリ管理部112は、DRAM102およびSCM103へのアクセスにメモリ空間40に属する物理アドレスを用いる。例えば、メモリ空間40は、先頭アドレスが「0x000000000000」であり、終端アドレスが「0xFFFFFFFFFFFF」である。メモリ空間40のうち、部分空間41は、DRAM102の記憶領域に対応する。例えば、部分空間41に相当する物理アドレス範囲は、「0x000000000000〜0x000000FFFFFF」である。また、メモリ空間40のうち、部分空間42は、SCM103の記憶領域に対応する。例えば、部分空間42に相当する物理アドレス範囲は、「0x010000000000〜0x010001FFFFFF」である。
前述のように、ページサイズは、0x1000バイトである。この場合、例えば、ページテーブル160の「#00052」のエントリにおけるページフレーム番号「0x000000800」が示す物理アドレス(フレームの先頭アドレス)は、「0x000000800000」である。当該フレームの終端アドレスは、「0x000000800FFF」である。すなわち、「#00052」のエントリに対応する物理アドレスは、部分空間41に属する。よって、当該「#00052」のエントリに対応するページは、DRAM102に格納されていることになる。
また、例えば、ページテーブル160の「#00160」のエントリにおけるページフレーム番号「0x010000A00」が示す物理アドレス(フレームの先頭アドレス)は、「0x010000A00000」である。当該フレームの終端アドレスは、「0x010000A00FFF」である。すなわち、「#00160」のエントリに対応する物理アドレスは、部分空間42に属する。よって、当該「#00160」のエントリに対応するページは、SCM103に格納されていることになる。
ここで、以下の説明では、ページテーブル160に格納されるページフレーム番号のうち、DRAM102に対応する部分空間41に属するページフレーム番号を「DRAM物理フレーム番号」と言うことがある。また、ページテーブル160に格納されるページフレーム番号のうち、SCM103に対応する部分空間42に属するページフレーム番号を「SCM物理フレーム番号」と言うことがある。
次に、メモリ管理部112によるメモリ管理の処理手順を説明する。
図7は、メモリ管理の処理例を示すフローチャートである。
メモリ管理部112は、アプリケーション111が起動されると、アプリケーション111が停止されるまで下記の手順を継続して実行する。
(S10)アプリケーション111は、メモリ管理部112にメモリを要求する。メモリ管理部112は、メモリの要求を受け付ける。
(S11)メモリ管理部112は、アプリケーション111にページを割り当てる。メモリ管理部112は、ページテーブル160に割り当てたページの情報を登録する。この段階では、アプリケーション111に割り当てられたページに関して、有効フラグ(V)およびページフレーム番号(PFN)に初期値が登録される。有効フラグ(V)の初期値は「0」である。ページフレーム番号(PFN)の初期値は「0」である。例えば、メモリ管理部112は、割り当てたページに対応する仮想アドレスをアプリケーション111に通知してもよい。
(S12)アプリケーション111は、メモリに対するアクセスを行う。メモリ管理部112は、アプリケーション111によるメモリアクセスを受け付ける。例えば、アプリケーション111は、メモリ管理部112により割り当てられたページに対応する仮想アドレスを指定して、メモリに対するアクセスをメモリ管理部112に要求する。前述のように仮想アドレスは、例えば、ページテーブル160のエントリ番号に対応付けられている。このため、メモリ管理部112は、仮想アドレスに基づいて、要求されたページに対応するページテーブル160のエントリを特定することができる。
(S13)メモリ管理部112は、ページテーブル160を参照して、要求されたページに対応する有効フラグが1(V=1)であるか否かを判定する。V=1の場合、ステップS21に処理が進む。V=0の場合、ステップS14に処理が進む。
(S14)メモリ管理部112は、DRAM102に空きがあるか否かを判定する。DRAM102に空きがある場合、ステップS18に処理が進む。DRAM102に空きがない場合、ステップS15に処理が進む。
(S15)メモリ管理部112は、SCM103に空きがあるか否かを判定する。SCM103に空きがある場合、ステップS16に処理が進む。SCM103に空きがない場合、ステップS17に処理が進む。
(S16)メモリ管理部112は、DRAM102のページをLRUによりSCM103にスワップアウトする。メモリ管理部112は、スワップアウトしたページについて、ページテーブル160の情報を更新する。具体的には、メモリ管理部112は、該当のページの有効フラグを「1」(V=1)のまま維持する(当該ページのスワップアウト元はDRAM102であり、有効フラグは「1」であったため)。また、メモリ管理部112は、該当のページのページフレーム番号(PFN)を、スワップアウト元のDRAM物理フレーム番号からスワップアウト先のSCM物理フレーム番号に変更する。そして、ステップS18に処理が進む。
(S17)メモリ管理部112は、SCM103のページをLRUによりSSD104にスワップアウトする。メモリ管理部112は、スワップアウトしたページについて、ページテーブル160の情報を更新する。具体的には、メモリ管理部112は、該当のページの有効フラグを「1」(V=1)から「0」(V=0)に更新する。また、メモリ管理部112は、該当のページのページフレーム番号(PFN)を、スワップアウト元のSCM物理フレーム番号からSSD104に格納されたスワップファイル内のアドレス(スワップファイル内アドレス)に変更する。そして、ステップS16に処理が進む。
(S18)メモリ管理部112は、アクセス要求されたページのページフレーム番号(PFN)が「0」以外(PFN≠0)であるか否かを判定する。PFNが「0」以外(PFN≠0)である場合、ステップS19に処理が進む。PFN=0の場合、ステップS20に処理が進む。なお、ステップS18でPFN≠0の場合、該当のページがSSD104にスワップアウトされていることを意味する。また、ステップS18でPFN=0の場合、該当のページに対してDRAM領域を未割り当てであることを意味する。
(S19)メモリ管理部112は、アクセス要求されたページをSSD104からDRAM102にスワップインする。メモリ管理部112は、スワップインしたページについて、ページテーブル160の情報を更新する。具体的には、メモリ管理部112は、該当のページの有効フラグを「0」(V=0)から「1」(V=1)に更新する。また、メモリ管理部112は、該当のページのページフレーム番号(PFN)を、スワップイン元のスワップファイル内アドレスから、スワップイン先のDRAM物理フレーム番号に変更する。そして、ステップS21に処理が進む。
(S20)メモリ管理部112は、アクセス要求されたページにDRAM102のフレームを割り当てる。メモリ管理部112は、当該ページについて、ページテーブル160の情報を更新する。具体的には、メモリ管理部112は、該当のページの有効フラグを「0」(V=0)から「1」(V=1)に更新する。また、メモリ管理部112は、該当のページのページフレーム番号「PFN」を、「0」(初期値)から、今回割り当てたDRAM物理フレーム番号に変更する。そして、ステップS21に処理が進む。
(S21)メモリ管理部112は、DRAM102またはSCM103に対するメモリアクセスを実行する。具体的には、メモリ管理部112は、アプリケーション111の書き込み要求に応じて、DRAM102またはSCM103に格納されたページに対する書き込みを行い、書き込み結果をアプリケーション111に通知する。また、メモリ管理部112は、アプリケーション111からの読み出し要求に応じて、DRAM102またはSCM103に格納されたページの読み出しを行い、読み出し結果をアプリケーション111に通知する。そして、ステップS12に処理が進む。
なお、ステップS21では、ステップS13 Yesの場合に、メモリ管理部112は、SCM103に対する直接アクセスを行うことがある。ステップS13 Yes(アクセス先ページの有効フラグが「1」)の場合、メモリ管理部112は、図6で例示したように、ページフレーム番号に応じて、アクセス先ページが、DRAM102およびSCM103のどちらに格納されているかを判定する。そして、メモリ管理部112は、当該ページフレーム番号に基づいて、SCM103におけるアクセス先ページの格納位置を特定する。
このように、メモリ管理部112は、アクセス先ページの有効フラグが「1」の場合に、ページテーブル160に格納されたページフレーム番号からDRAM102またはSCM103の何れに該当のページが格納されているかを判定する。そして、メモリ管理部112は、ページフレーム番号に基づいて、格納先として判定されたDRAM102またはSCM103のうち、該当のページを格納している格納位置を特定し、当該ページに対する直接アクセスを行う。
また、メモリ管理部112は、SCM103にページを格納した場合に、有効フラグを「1」としながら、ページフレーム番号にSCM物理フレーム番号を設定する。この操作により、メモリ管理部112は、アプリケーション111により取得済の仮想アドレスを変更することなく、DRAM102からSCM103へアクセス先を変更することができ、SCM103に直接アクセス可能になる。
図8は、スワップアウト/スワップインの比較例を示す図である。
CPU101がSCM103に直接アクセスしない構成も考えられる。例えば、CPU101は、Load/Store命令を用いて、DRAM102に対するアクセスのみを行い、SCM103に格納されたページについては、DRAM102へスワップインした後に、DRAM102に格納された当該ページにアクセスする。ところが、この場合、SCM103に格納されたページにアクセスする際、DRAM102へのスワップインによるオーバーヘッドが問題となる。近年では、SSD104に比べて大幅に高速な記憶デバイスがSCM103として利用可能になってきている。このため、SCM103からDRAM102に対するスワップインを行っていると、当該スワップインにより、データアクセスの性能が低下する可能性がある。このため、図6,7で例示したように、CPU101は、SCM103に対しても直接アクセスを行うことで、SCM103からDRAM102へのスワップインに伴うオーバーヘッドを削減し、データアクセスを高速化できる。
このとき、ページの有効フラグが「1」であるか否かによって、スワップインなしで当該ページにアクセス可能であるか否かを管理でき、物理アドレスに対応するページフレーム番号によって、当該ページの格納先がDRAM102かSCM103かを管理できる。このため、例えば、単一の有効フラグとページフレーム番号との組み合わせという簡便なスワップの仕組みをそのまま利用することができる。このため、DRAM102およびSCM103に対する直接アクセスの機能を、簡易なデータ構造によって実現でき、ページテーブル160のサイズの増大を抑えられる。また、当該機能を実現するための処理ステップの複雑化を回避できる。その結果、データアクセスに伴うオーバーヘッドを更に削減でき、データアクセスを高速化できる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
ここで、第3の実施の形態のサーバのハードウェア例および機能例は、図2,3で例示した第2の実施の形態のサーバ100のハードウェア例および機能例と同様である。そこで、第3の実施の形態でも図2,3で例示した名称・符号と同じ名称・符号を用いる。
メモリ管理部112は、各ページのデータ特性に応じて、該当のページの格納先を、SCM103を優先とするか、SSD104を優先とするかを制御可能にすることが考えられる。例えば、アクセス頻度の比較的少ない一部のページを、SCM103やSSD104に、優先的に格納することで、DRAM102の使用領域を低減し、スワップアウトやスワップインに伴うオーバーヘッドを一層軽減できるからである。
図9は、第3の実施の形態のページテーブルの例を示す図である。
メモリ管理部112は、ページテーブル160に代えて、ページテーブル170を用いる。ページテーブル170は、エントリ番号、ページフレーム番号(PFN)、有効フラグ(V)およびデータ特性(N)の項目を含む。ページテーブル170は、データ特性の項目を有する点で、第2の実施の形態のページテーブル160と異なる。エントリ番号、ページフレーム番号および有効フラグの項目に登録される情報は、ページテーブル160の同名の項目に登録される情報と同様であるため説明を省略する。
データ特性の項目には、該当のページの格納先を、SCM103を優先(「SCM優先」)とするか、SSD104を優先(「SSD優先」)とするかを示す情報が登録される。また、データ特性の項目には、第2の実施の形態の図7で説明したスワップイン/スワップアウトを行う対象のページであることを示す情報(「通常」)も登録され得る。データ特性の項目には、アプリケーション111にページが割り当てられた際に、アプリケーション111の指示に応じて、メモリ管理部112が予め設定を行う。
ここで、各データ特性に対するメモリ管理部112による具体的なメモリの階層制御は次の通りである。「通常」では、メモリ管理部112は、DRAM102、SCM103、SSD104の順にページを移動させる。「SCM優先」では、メモリ管理部112は、SSD104に移動させるページ選択を行う際に、SCM優先でないページを優先的に選択し、SCM優先でないページがない場合に、SCM優先のページをSSD104へ移動させる。なお、メモリ管理部112は、SCM優先のページをSSD104へ移動させた場合、次のアクセスで当該ページをSCM103に移動させる。「SSD優先」では、メモリ管理部112は、DRAM102からスワップアウトする際に、SCM103を経由せずに、SSD104にスワップアウトする。
例えば、ページテーブル170には、エントリ番号「#00052」、ページフレーム番号「0x000000800」、有効フラグ「1」、データ特性「SCM優先」というエントリが登録される。このエントリは、エントリ番号「#00052」に対応するページに対する有効フラグが「1」であり、ページフレーム番号が「0x000000800」であることを示す。また、当該ページをSCM103に優先的に格納することを示す。
また、ページテーブル170には、エントリ番号「#00160」、ページフレーム番号「0x010000A00」、有効フラグ「1」、データ特性「通常」というエントリが登録される。このエントリは、エントリ番号「#00160」に対応するページに対する有効フラグが「1」であり、ページフレーム番号が「0x010000A00」であることを示す。また、当該ページが、第2の実施の形態の図7で説明した「通常」のスワップイン/スワップアウトを行う対象のページであることを示す。
また、ページテーブル170には、エントリ番号「#00250」、ページフレーム番号「スワップファイル内のアドレスX」、有効フラグ「0」、データ特性「SSD優先」というエントリが登録される。このエントリは、エントリ番号「#00250」に対応するページに対する有効フラグが「0」であり、ページフレーム番号が「スワップファイル内のアドレスX」であることを示す。また、当該ページをSSD104に優先的に格納することを示す。
次に、メモリ管理部112によるメモリ管理の処理手順を説明する。
図10は、メモリ管理の処理例を示すフローチャートである。
第3の実施の形態では、メモリ管理部112は、図7の手順におけるステップS19に代えて、ステップS22を実行する。すなわち、メモリ管理部112は、ステップS18 Yesの場合にステップS22を実行し、ステップS18 Noの場合にステップS20を実行する。また、第3の実施の形態では、メモリ管理部112は、図7の手順におけるステップS15〜S16に代えて、ステップS23を実行する。すなわち、メモリ管理部112は、ステップS14 Yesの場合にステップS18を実行し、ステップS14 Noの場合にステップS23を実行する。そこで、以下では、ステップS22,S23を説明し、他のステップの説明を省略する。ただし、メモリ管理部112は、例えば、ステップS11において、アプリケーション111から割り当てたページに対するデータ特性の情報を取得し、ページテーブル170に登録する。
(S22)メモリ管理部112は、ステップS12におけるアクセス対象のページのデータ特性に基づいて、SSD104からのスワップイン制御を行う。スワップイン制御の詳細は後述される。そして、ステップS21に処理が進む。
(S23)メモリ管理部112は、DRAM102からスワップアウト対象のページを特定し、当該ページのデータ特性に基づいて、DRAM102からの第1スワップアウト制御を行う。第1スワップアウト制御の詳細は後述される。そして、ステップS18に処理が進む。
図11は、スワップイン制御の処理例を示すフローチャートである。
スワップイン制御は、ステップS22で実行される。
(S30)メモリ管理部112は、ページテーブル170を参照して、スワップインするページのデータ特性が「通常」または「SSD優先」であるか否かを判定する。「通常」または「SSD優先」である場合、ステップS31に処理が進む。「通常」および「SSD優先」の何れでもない(すなわち、「SCM優先」である)場合、ステップS32に処理が進む。
(S31)メモリ管理部112は、該当のページをDRAM102にスワップインする。メモリ管理部112は、スワップインしたページについて、ページテーブル170の情報を更新する。具体的には、メモリ管理部112は、該当のページの有効フラグを「0」(V=0)から「1」(V=1)に更新する。また、メモリ管理部112は、該当のページのページフレーム番号(PFN)を、スワップイン元のスワップファイル内アドレスから、スワップイン先のDRAM物理フレーム番号に変更する。そして、スワップイン制御が終了する。
(S32)メモリ管理部112は、SCM103に空きがあるか否かを判定する。SCM103に空きがある場合、ステップS33に処理が進む。SCM103に空きがない場合、ステップS34に処理が進む。
(S33)メモリ管理部112は、該当のページをSCM103にスワップインする。メモリ管理部112は、スワップインしたページについて、ページテーブル170の情報を更新する。具体的には、メモリ管理部112は、該当のページの有効フラグを「0」(V=0)から「1」(V=1)に更新する。また、メモリ管理部112は、該当のページのページフレーム番号(PFN)を、スワップイン元のスワップファイル内アドレスから、スワップイン先のSCM物理フレーム番号に変更する。そして、スワップイン制御が終了する。
(S34)メモリ管理部112は、SCM103からスワップアウト対象のページを特定し、当該ページのデータ特性に基づいて、SCM103からの第2スワップアウト制御を行う。第2スワップアウト制御の詳細は後述される。そして、ステップS33に処理が進む。
図12は、第1スワップアウト制御の処理例を示すフローチャートである。
第1スワップアウト制御は、ステップS23で実行される。
(S40)メモリ管理部112は、DRAM102のページからLRUによりスワップアウト対象ページを決定する。
(S41)メモリ管理部112は、ページテーブル170を参照して、スワップアウト対象ページのデータ特性が「SSD優先」であるか否かを判定する。「SSD優先」である場合、ステップS42に処理が進む。「SSD優先」でない場合、ステップS43に処理が進む。
(S42)メモリ管理部112は、スワップアウト対象ページをSSD104にスワップアウトする。メモリ管理部112は、スワップアウトした当該ページについて、ページテーブル170の情報を更新する。具体的には、メモリ管理部112は、該当のページの有効フラグを「1」(V=1)から「0」(V=0)に更新する。また、メモリ管理部112は、該当のページのページフレーム番号(PFN)を、スワップアウト元のDRAM物理フレーム番号からSSD104に格納されたスワップファイル内のアドレス(スワップファイル内アドレス)に変更する。そして、第1スワップアウト制御が終了する。
(S43)メモリ管理部112は、SCM103に空きがあるか否かを判定する。SCM103に空きがある場合、ステップS44に処理が進む。SCM103に空きがない場合、ステップS45に処理が進む。
(S44)メモリ管理部112は、スワップアウト対象ページをSCM103にスワップアウトする。メモリ管理部112は、スワップアウトした当該ページについて、ページテーブル170の情報を更新する。具体的には、メモリ管理部112は、該当のページの有効フラグを「1」(V=1)のまま維持する(当該ページのスワップアウト元はDRAM102であり、有効フラグは「1」であったため)。また、メモリ管理部112は、該当のページのページフレーム番号(PFN)を、スワップアウト元のDRAM物理フレーム番号からスワップアウト先のSCM物理フレーム番号に変更する。そして、第1スワップアウト制御が終了する。
(S45)メモリ管理部112は、SCM103からスワップアウト対象のページを特定し、当該ページのデータ特性に基づいて、SCM103からの第2スワップアウト制御を行う。第2スワップアウト制御の詳細は後述される。そして、ステップS44に処理が進む。
図13は、第2スワップアウト制御の処理例を示すフローチャートである。
第2スワップアウト制御は、ステップS34,S45で実行される。
(S50)メモリ管理部112は、SCM103のページからLRUによりスワップアウト候補ページを決定する。
(S51)メモリ管理部112は、ページテーブル170を参照して、スワップアウト候補ページのデータ特性が「SCM優先」であるか否かを判定する。「SCM優先」である場合、ステップS52に処理が進む。「SCM優先」でない場合、ステップS54に処理が進む。
(S52)メモリ管理部112は、スワップアウト候補として、SCM103に格納された全ページを探索済であるか否かを判定する。全ページを探索済である場合、ステップS55に処理が進む。全ページを探索済でない場合、ステップS53に処理が進む。
(S53)メモリ管理部112は、現スワップアウト候補ページを除き、SCM103のページからLRUにより次のスワップアウト候補ページを決定する。そして、ステップS51に処理が進む。
(S54)メモリ管理部112は、スワップアウト候補ページを、スワップアウト対象ページとする。そして、ステップS56に処理が進む。
(S55)メモリ管理部112は、SCM103のページからLRUによりスワップアウト対象ページを決定する。このとき、メモリ管理部112は、SCM103の各ページのデータ特性に拘わらずに、スワップアウト対象ページを決定する。このため、メモリ管理部112は、「SCM優先」でないページをスワップアウト対象ページと決定することもある。
(S56)メモリ管理部112は、スワップアウト対象ページをSSD104にスワップアウトする。メモリ管理部112は、スワップアウトした当該ページについて、ページテーブル170の情報を更新する。具体的には、メモリ管理部112は、該当のページの有効フラグを「1」(V=1)から「0」(V=0)に更新する。また、メモリ管理部112は、該当のページのページフレーム番号(PFN)を、スワップアウト元のSCM物理フレーム番号からSSD104に格納されたスワップファイル内のアドレス(スワップファイル内アドレス)に変更する。そして、第2スワップアウト制御が終了する。
このように、メモリ管理部112は、データ特性に応じた階層制御を行うことで、各データに適した格納先を選択可能になる。その結果、スワップアウト/スワップインに伴う余計なデータ移動を減らし、データアクセスを高速化することができる。
[第4の実施の形態]
次に、第4の実施の形態を説明する。前述の第2,第3の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
ここで、第4の実施の形態のサーバのハードウェア例および機能例は、図2,3で例示した第2の実施の形態のサーバ100のハードウェア例および機能例と同様である。そこで、第4の実施の形態でも図2,3で例示した名称・符号と同じ名称・符号を用いる。
第4の実施の形態では、各ページのデータ特性として、Read頻度およびWrite頻度を設定し、該当のページのスワップイン先を、当該データ特性に応じて選択する機能を提供する。
図14は、第4の実施の形態のページテーブルの例を示す図である。
メモリ管理部112は、ページテーブル160に代えて、ページテーブル180を用いる。ページテーブル180は、エントリ番号、ページフレーム番号(PFN)、有効フラグ(V)およびデータ特性の項目を含む。ページテーブル180は、データ特性の項目を有する点で、第2の実施の形態のページテーブル160と異なる。エントリ番号、ページフレーム番号および有効フラグの項目に登録される情報は、ページテーブル160の同名の項目に登録される情報と同様であるため説明を省略する。
データ特性の項目には、該当のページのアクセス頻度を示す情報が登録される。アクセス頻度は、例えば、Read頻度およびWrite頻度である(ただし、Read頻度およびWrite頻度の何れか一方でもよい)。
例えば、Read頻度「低」は、Read頻度が比較的低い(例えば、Read頻度が第1閾値より低い)ことを示す。Read頻度「高」は、Read頻度が比較的高い(例えば、Read頻度が第2閾値(>第1閾値)より高い)ことを示す。Read頻度「中」は、Read頻度がRead頻度「高」および「低」の間程度(例えば、第1閾値以上かつ第2閾値以下)であることを示す。
また、Write頻度「低」は、Write頻度が比較的低い(例えば、Write頻度が第3閾値より低い)ことを示す。Write頻度「高」は、Write頻度が比較的高い(例えば、Write頻度が第4閾値より高い)ことを示す。Write頻度「中」は、Write頻度がWrite頻度「高」および「低」の間程度(例えば、第3閾値以上かつ第4閾値以下)であることを示す。
データ特性の項目には、アプリケーション111にページが割り当てられた際に、アプリケーション111の指示に応じて、メモリ管理部112が予め設定を行う。ただし、メモリ管理部112は、各ページに対するアクセス頻度を監視し、当該監視結果に基づいて、各ページのデータ特性(Read頻度およびWrite頻度)をページテーブル180に登録してもよい。
例えば、ページテーブル180には、エントリ番号「#00052」、ページフレーム番号「0x000000800」、有効フラグ「1」、Read頻度「高」、Write頻度「低」というエントリが登録される。このエントリは、エントリ番号「#00052」に対応するページに対する有効フラグが「1」であり、ページフレーム番号が「0x000000800」であることを示す。また、当該ページは、Read頻度が高く、Write頻度が低いことを示す。
また、ページテーブル180には、エントリ番号「#00160」、ページフレーム番号「0x010000A00」、有効フラグ「1」、Read頻度「高」、Write頻度「高」というエントリが登録される。このエントリは、エントリ番号「#00160」に対応するページに対する有効フラグが「1」であり、ページフレーム番号が「0x010000A00」であることを示す。また、当該ページは、Read頻度が高く、Write頻度が高いことを示す。
また、ページテーブル180には、エントリ番号「#00250」、ページフレーム番号「スワップファイル内のアドレスX」、有効フラグ「0」、Read頻度「低」、Write頻度「低」というエントリが登録される。このエントリは、エントリ番号「#00250」に対応するページに対する有効フラグが「0」であり、ページフレーム番号が「スワップファイル内のアドレスX」であることを示す。また、当該ページは、Read頻度が低く、Write頻度が低いことを示す。
次に、Read頻度およびWrite頻度に応じたスワップイン制御の方法を定めたスワップイン制御テーブルを説明する。
図15は、スワップイン制御テーブルの例を示す図である。
スワップイン制御テーブル190は、例えば、MMU120内のバッファに予め格納される。スワップイン制御テーブル190は、DRAM102、SCM103またはSSD104の所定の領域に予め格納されてもよい。スワップイン制御テーブル190は、Read頻度、Write頻度、初期配置、SCM<−SSD、DRAM<−SSDの項目を含む。ここで、「<−」の表記は、左向き矢印を示し、「<−」の右側の記憶デバイスから、左側の記憶デバイスへのスワップインを示す。
Read頻度の項目には、Read頻度が登録される。例えば、Read頻度は、「高」、「中」、「低」の3段階である。Write頻度の項目には、Write頻度が登録される。例えば、Write頻度は、「高」、「中」、「低」の3段階である。初期配置の項目には、ページの初期配置が登録される。ページの初期配置としては、「DRAM」または「SCM」を選択可能である。
SCM<−SSDの項目には、SSD104からSCM103へのスワップインを行うか否か、および、行う場合に、ページの移動およびページのコピーの何れを行うかを示す情報が登録される。スワップインを行う場合、SCM<−SSDの項目には、「移動」または「コピー」が登録される。スワップインを行わない場合、SCM<−SSDの項目は、設定なしとなる。
DRAM<−SSDの項目には、SSD104からDRAM102へのスワップインを行うか否か、および、行う場合に、ページの移動およびページのコピーの何れを行うかを示す情報が登録される。スワップインを行う場合、DRAM<−SSDの項目には、「移動」または「コピー」が登録される。スワップインを行わない場合、DRAM<−SSDの項目は、設定なしとなる。
ここで、「移動」は、スワップイン元の記憶デバイスからスワップイン先の記憶デバイスへ、ページの移動を行うことを示す。ページの移動を行う場合、メモリ管理部112は、スワップイン元の記憶デバイスから当該ページを削除し、当該ページの領域を再利用可能にする。「コピー」は、スワップイン元の記憶デバイスからスワップイン先の記憶デバイスへ、ページのコピーを行うことを示す。ページのコピーを行う場合、メモリ管理部112は、スワップイン元の記憶デバイスから当該ページを削除せずに保持する。メモリ管理部112は、あるページについて、スワップイン時にコピーを行った場合、当該ページを更新しないまま次にスワップアウトする際、スワップアウト元から当該ページを削除すればよく、スワップアウト先に当該ページを書き込まなくてよい。このため、スワップアウト時のページ書き込みに伴うオーバーヘッドを低減できる。
例えば、スワップイン制御テーブル190には、Read頻度「高」、Write頻度「高」、初期配置「DRAM」、SCM<−SSDが設定なし(「−」)、DRAM<−SSDが「移動」というエントリが登録される。このエントリは、データ特性がRead頻度「高」、Write頻度「高」のページの初期配置がDRAM102であることを示す。また、当該ページについて、SSD104からDRAM102へのページの移動によるスワップインを行うことを示す。一方、データ特性がRead頻度「高」、Write頻度「高」のページについては、SSD104からSCM103へのスワップインを行わないことを示す。
また、スワップイン制御テーブル190には、Read頻度「高」、Write頻度「中」、初期配置「DRAM」、SCM<−SSDが設定なし(「−」)、DRAM<−SSD「移動」というエントリが登録される。このエントリは、データ特性がRead頻度「高」、Write頻度「中」のページの初期配置がDRAM102であることを示す。また、当該ページについて、SSD104からDRAM102へのページの移動によるスワップインを行うことを示す。一方、データ特性がRead頻度「高」、Write頻度「中」のページについては、SSD104からSCM103へのスワップインを行わないことを示す。
また、スワップイン制御テーブル190には、Read頻度「高」、Write頻度「低」、初期配置「DRAM」、SCM<−SSDが設定なし(「−」)、DRAM<−SSDが「コピー」というエントリが登録される。このエントリは、データ特性がRead頻度「高」、Write頻度「低」のページの初期配置がDRAM102であることを示す。また、当該ページについて、SSD104からDRAM102へのページのコピーによるスワップインを行うことを示す。一方、データ特性がRead頻度「高」、Write頻度「低」のページについては、SSD104からSCM103へのスワップインを行わないことを示す。
スワップイン制御テーブル190には、他のデータ特性(例えば、Read頻度「中」、Write頻度「高」の組み合わせなど)についても、初期配置、SCM<−SSD、DRAM<−SSDの項目に対する設定が行われる。例えば、スワップイン制御テーブル190には、比較的高頻度でアクセスされるページを、DRAM102やSCM103に優先的に配置し、比較的低頻度でアクセスされるページを、SSD104に優先的に配置するように各エントリが設定される。また、Write頻度が高いほど、ページの移動によるスワップインを行い、Write頻度が低いほど、ページのコピーによるスワップインを行うように、各エントリが設定される。Write頻度が高い場合、ページ更新により、ページが書き換えられる可能性が高いからである。
図16は、スワップアウト/スワップインの例を示す図である。
例えば、メモリ管理部112は、図7のステップS11で、アプリケーション111から、割り当て済ページに対するデータ特性の指示を受け付け、ページテーブル180に格納する。
メモリ管理部112は、図7のステップS19で、SSD104からページのスワップインを行う場合、当該ページのデータ特性とスワップイン制御テーブル190とに基づいて、SCM103またはDRAM102のどちらをスワップイン先とするかを判定する。メモリ管理部112は、判定した方の記憶デバイスのフレームを当該ページに割り当てる。例えば、メモリ管理部112は、SCM103のフレームを割り当てた場合、当該ページの有効フラグを「1」に設定し、当該ページのページフレーム番号として、SCM物理フレーム番号を、ページテーブル180に登録する。なお、メモリ管理部112は、スワップイン時に、スワップイン制御テーブル190に基づいて、スワップインの方法を「移動」とするか「コピー」とするかを決定する。
また、メモリ管理部112は、図7のステップS20において、該当のページのデータ特性とスワップイン制御テーブル190とに基づいて、DRAM102またはSCM103のどちらを初期配置として当該ページに割り当てるかを判定する。メモリ管理部112は、該当のデータ特性に対し、スワップイン制御テーブル190に設定された初期配置の記憶デバイスのフレームを当該ページに割り当てる。例えば、メモリ管理部112は、DRAM102のフレームを割り当てた場合、当該ページの有効フラグを「1」に設定し、当該ページのページフレーム番号として、格納先のDRAM物理フレーム番号を、ページテーブル180に登録する。あるいは、メモリ管理部112は、SCM103のフレームを割り当てた場合、当該ページの有効フラグを「1」に設定し、当該ページのページフレーム番号として、格納先のSCM物理フレーム番号を、ページテーブル180に登録する。
図16では、DRAM102、SCM103およびSSD104の間のスワップアウトおよびスワップインを例示している。例えば、DRAM102に格納されたページは、当該ページの移動により、SCM103にスワップアウトされることがある。SCM103に格納されたページは、当該ページの移動により、SSD104にスワップアウトされることがある。
なお、前述のように、コピーによるスワップインが行われたために、スワップアウト先に、スワップアウト対象のページと同一のページが存在する場合、メモリ管理部112は、当該ページのスワップアウト時には、スワップアウト元のページを削除すればよい。この仕組みにより、DRAM102に格納されたページが、当該ページの移動により、SSD104にページアウトされることもある(ただし、この場合、メモリ管理部112は、DRAM102に格納されたスワップアウト対象のページを削除すればよい)。また、DRAM102からSCM103へのスワップアウト、および、SCM103からSSD104へのスワップアウトの場合も同様に、スワップアウト元の記憶デバイスからスワップアウト対象のページを削除することでスワップアウトが行われることもある。
また、SSD104に格納されたページは、当該ページの移動またはコピーにより、SCM103にスワップインされることがある。
更に、SSD104に格納されたページは、当該ページの移動またはコピーによりDRAM102にスワップインされることがある。
このように、CPU101は、ページテーブル180におけるページ毎のデータ特性に応じた階層制御を行うことで、該当のページに適した格納先やスワップインの方法(移動またはコピー)を選択することができる。このため、スワップアウトやスワップインに伴う余計なページ移動を低減し、データアクセスを高速化できる。
なお、第1の実施の形態の情報処理は、処理部14にプログラムを実行させることで実現できる。また、第2,第3,第4の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体203に記録できる。
例えば、プログラムを記録した記録媒体203を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体203に記録されたプログラムまたは他のコンピュータから受信したプログラムを、第1のメモリ11、第2のメモリ12または第3のメモリ13などの記憶装置に格納(インストール)してもよい。あるいは、コンピュータは、例えば、記録媒体203に記録されたプログラムまたは他のコンピュータから受信したプログラムを、DRAM102やSCM103やSSD104などの記憶装置に格納(インストール)してもよい。そして、コンピュータは、当該記憶装置からプログラムを読み込んで実行してもよい。
以上の第1〜第4の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
(付記1) 第1のメモリ、前記第1のメモリよりも低速の第2のメモリおよび前記第2のメモリよりも低速の第3のメモリにおけるデータ配置を制御するメモリ制御装置であって、
データが格納されたメモリに応じて第1の識別情報または第2の識別情報が設定されるフラグと前記データの格納先のメモリ領域における前記データが格納されたアドレスを示す情報とを前記データに対応付けて記憶する記憶部と、
前記第1のメモリまたは前記第2のメモリに前記データを格納すると前記第1の識別情報を前記フラグに設定し、前記第3のメモリに前記データを格納すると前記第2の識別情報を前記フラグに設定し、前記データにアクセスする際に、前記データに対応する前記フラグに前記第1の識別情報が設定されている場合、前記アドレスを示す情報に基づいて、前記第1のメモリおよび前記第2のメモリのうち前記データの格納先のメモリを判定し、判定された格納先のメモリにおける前記データの格納位置を特定する処理部と、
を有するメモリ制御装置。
(付記2) 前記処理部は、前記フラグに前記第1の識別情報が設定された前記データに対して前記第1のメモリから前記第2のメモリへの階層移動を許可し、前記第2のメモリから前記第1のメモリへの階層移動を制限する、
付記1記載のメモリ制御装置。
(付記3) 前記処理部は、前記第2のメモリおよび前記第3のメモリを前記第1のメモリに対するスワップ領域として利用し、アクセス対象の前記データが前記第2のメモリに格納されている場合、前記第1のメモリへの前記データのスワップインを制限し、前記アドレスに基づいて前記第2のメモリに格納された前記データに直接アクセスする、
付記1記載のメモリ制御装置。
(付記4) 前記記憶部は、前記データを優先的に格納するメモリを示すデータ特性情報を記憶し、
前記処理部は、前記データ特性情報に基づいて、前記第1のメモリに格納された前記データのスワップアウト先を前記第2のメモリおよび前記第3のメモリから選択し、前記第3のメモリに格納された前記データのスワップイン先を前記第1のメモリおよび前記第2のメモリから選択する、
付記3記載のメモリ制御装置。
(付記5) 前記記憶部は、前記データに対するアクセス頻度を示す情報を記憶し、
前記処理部は、アクセス対象の前記データの前記アクセス頻度に基づいて、前記第3のメモリから前記第1のメモリまたは前記第2のメモリへのスワップインを行うか否かを判定し、スワップインを行う場合に前記データの移動またはコピーの何れによりスワップインを行うかを選択する、
付記3記載のメモリ制御装置。
(付記6) 前記アドレスは、前記第1のメモリまたは前記第2のメモリに前記データが格納された場合、前記第1のメモリのメモリ領域および前記第2のメモリのメモリ領域が属するメモリ空間のアドレスである、
付記1乃至5の何れか1つに記載のメモリ制御装置。
(付記7) 第1のメモリ、前記第1のメモリよりも低速の第2のメモリおよび前記第2のメモリよりも低速の第3のメモリにおけるデータ配置を制御するコンピュータに、
前記第1のメモリまたは前記第2のメモリにデータを格納すると、前記データの格納先を示すフラグに対する第1の識別情報の設定と前記第1のメモリおよび前記第2のメモリのメモリ領域における前記データが格納された第1のアドレスを示す情報の記録とを行い、また、前記第3のメモリに前記データを格納すると、前記フラグに対する第2の識別情報の設定と前記第3のメモリのメモリ領域における前記データが格納された第2のアドレスを示す情報の記録とを行い、
前記データにアクセスする際に、前記データに対応する前記フラグに前記第1の識別情報が設定されている場合、前記第1のアドレスを示す情報に基づいて、前記第1のメモリおよび前記第2のメモリのうち前記データの格納先のメモリを判定し、判定された格納先のメモリにおける前記データの格納位置を特定する、
処理を実行させるメモリ制御プログラム。
(付記8) 前記コンピュータに更に、前記フラグに前記第1の識別情報が設定された前記データに対して前記第1のメモリから前記第2のメモリへの階層移動を許可し、前記第2のメモリから前記第1のメモリへの階層移動を制限する、
処理を実行させる付記7記載のメモリ制御プログラム。
(付記9) 前記コンピュータに更に、前記第2のメモリおよび前記第3のメモリを前記第1のメモリに対するスワップ領域として利用し、アクセス対象の前記データが前記第2のメモリに格納されている場合、前記第1のメモリへの前記データのスワップインを制限し、前記アドレスに基づいて前記第2のメモリに格納された前記データに直接アクセスする、
処理を実行させる付記7記載のメモリ制御プログラム。
(付記10) 前記コンピュータに更に、前記データを優先的に格納するメモリを示すデータ特性情報に基づいて、前記第1のメモリに格納された前記データのスワップアウト先を前記第2のメモリおよび前記第3のメモリから選択し、前記第3のメモリに格納された前記データのスワップイン先を前記第1のメモリおよび前記第2のメモリから選択する、
処理を実行させる付記9記載のメモリ制御プログラム。
(付記11) 前記コンピュータに更に、アクセス対象の前記データのアクセス頻度を示す情報に基づいて、前記第3のメモリから前記第1のメモリまたは前記第2のメモリへのスワップインを行うか否かを判定し、スワップインを行う場合に前記データの移動またはコピーの何れによりスワップインを行うかを選択する、
処理を実行させる付記9記載のメモリ制御プログラム。
(付記12) 前記第1のアドレスは、前記第1のメモリのメモリ領域および前記第2のメモリのメモリ領域が属するメモリ空間のアドレスである、
付記7乃至11の何れか1つに記載のメモリ制御プログラム。
(付記13) 第1のメモリ、前記第1のメモリよりも低速の第2のメモリおよび前記第2のメモリよりも低速の第3のメモリにおけるデータ配置を制御するコンピュータが、
前記第1のメモリまたは前記第2のメモリにデータを格納すると、前記データの格納先を示すフラグに対する第1の識別情報の設定と前記第1のメモリおよび前記第2のメモリのメモリ領域における前記データが格納された第1のアドレスを示す情報の記録とを行い、また、前記第3のメモリに前記データを格納すると、前記フラグに対する第2の識別情報の設定と前記第3のメモリのメモリ領域における前記データが格納された第2のアドレスを示す情報の記録とを行い、
前記データにアクセスする際に、前記データに対応する前記フラグに前記第1の識別情報が設定されている場合、前記第1のアドレスを示す情報に基づいて、前記第1のメモリおよび前記第2のメモリのうち前記データの格納先のメモリを判定し、判定された格納先のメモリにおける前記データの格納位置を特定する、
メモリ制御方法。
(付記14) 前記フラグに前記第1の識別情報が設定された前記データに対して前記第1のメモリから前記第2のメモリへの階層移動を許可し、前記第2のメモリから前記第1のメモリへの階層移動を制限する、
付記13記載のメモリ制御方法。
(付記15) 前記第2のメモリおよび前記第3のメモリを前記第1のメモリに対するスワップ領域として利用し、アクセス対象の前記データが前記第2のメモリに格納されている場合、前記第1のメモリへの前記データのスワップインを制限し、前記アドレスに基づいて前記第2のメモリに格納された前記データに直接アクセスする、
付記13記載のメモリ制御方法。
(付記16) 前記データを優先的に格納するメモリを示すデータ特性情報に基づいて、前記第1のメモリに格納された前記データのスワップアウト先を前記第2のメモリおよび前記第3のメモリから選択し、前記第3のメモリに格納された前記データのスワップイン先を前記第1のメモリおよび前記第2のメモリから選択する、
付記15記載のメモリ制御方法。
(付記17) アクセス対象の前記データのアクセス頻度を示す情報に基づいて、前記第3のメモリから前記第1のメモリまたは前記第2のメモリへのスワップインを行うか否かを判定し、スワップインを行う場合に前記データの移動またはコピーの何れによりスワップインを行うかを選択する、
付記15記載のメモリ制御方法。
(付記18) 前記第1のアドレスは、前記第1のメモリのメモリ領域および前記第2のメモリのメモリ領域が属するメモリ空間のアドレスである、
付記13乃至17の何れか1つに記載のメモリ制御方法。
10 メモリ制御装置
11 第1のメモリ
12 第2のメモリ
13 第3のメモリ
14 処理部
15 記憶部
20 テーブル
30 メモリ空間
31,32 範囲

Claims (8)

  1. 第1のメモリ、前記第1のメモリよりも低速の第2のメモリおよび前記第2のメモリよりも低速の第3のメモリにおけるデータ配置を制御するメモリ制御装置であって、
    データが格納されたメモリに応じて第1の識別情報または第2の識別情報が設定されるフラグと前記データの格納先のメモリ領域における前記データが格納されたアドレスを示す情報とを前記データに対応付けて記憶する記憶部と、
    前記第1のメモリまたは前記第2のメモリに前記データを格納すると前記第1の識別情報を前記フラグに設定し、前記第3のメモリに前記データを格納すると前記第2の識別情報を前記フラグに設定し、前記データにアクセスする際に、前記データに対応する前記フラグに前記第1の識別情報が設定されている場合、前記アドレスを示す情報に基づいて、前記第1のメモリおよび前記第2のメモリのうち前記データの格納先のメモリを判定し、判定された格納先のメモリにおける前記データの格納位置を特定する処理部と、
    を有するメモリ制御装置。
  2. 前記処理部は、前記フラグに前記第1の識別情報が設定された前記データに対して前記第1のメモリから前記第2のメモリへの階層移動を許可し、前記第2のメモリから前記第1のメモリへの階層移動を制限する、
    請求項1記載のメモリ制御装置。
  3. 前記処理部は、前記第2のメモリおよび前記第3のメモリを前記第1のメモリに対するスワップ領域として利用し、アクセス対象の前記データが前記第2のメモリに格納されている場合、前記第1のメモリへの前記データのスワップインを制限し、前記アドレスに基づいて前記第2のメモリに格納された前記データに直接アクセスする、
    請求項1記載のメモリ制御装置。
  4. 前記記憶部は、前記データを優先的に格納するメモリを示すデータ特性情報を記憶し、
    前記処理部は、前記データ特性情報に基づいて、前記第1のメモリに格納された前記データのスワップアウト先を前記第2のメモリおよび前記第3のメモリから選択し、前記第3のメモリに格納された前記データのスワップイン先を前記第1のメモリおよび前記第2のメモリから選択する、
    請求項3記載のメモリ制御装置。
  5. 前記記憶部は、前記データに対するアクセス頻度を示す情報を記憶し、
    前記処理部は、アクセス対象の前記データの前記アクセス頻度に基づいて、前記第3のメモリから前記第1のメモリまたは前記第2のメモリへのスワップインを行うか否かを判定し、スワップインを行う場合に前記データの移動またはコピーの何れによりスワップインを行うかを選択する、
    請求項3記載のメモリ制御装置。
  6. 前記アドレスは、前記第1のメモリまたは前記第2のメモリに前記データが格納された場合、前記第1のメモリのメモリ領域および前記第2のメモリのメモリ領域が属するメモリ空間のアドレスである、
    請求項1乃至5の何れか1項に記載のメモリ制御装置。
  7. 第1のメモリ、前記第1のメモリよりも低速の第2のメモリおよび前記第2のメモリよりも低速の第3のメモリにおけるデータ配置を制御するコンピュータに、
    前記第1のメモリまたは前記第2のメモリにデータを格納すると、前記データの格納先を示すフラグに対する第1の識別情報の設定と前記第1のメモリおよび前記第2のメモリのメモリ領域における前記データが格納された第1のアドレスを示す情報の記録とを行い、また、前記第3のメモリに前記データを格納すると、前記フラグに対する第2の識別情報の設定と前記第3のメモリのメモリ領域における前記データが格納された第2のアドレスを示す情報の記録とを行い、
    前記データにアクセスする際に、前記データに対応する前記フラグに前記第1の識別情報が設定されている場合、前記第1のアドレスを示す情報に基づいて、前記第1のメモリおよび前記第2のメモリのうち前記データの格納先のメモリを判定し、判定された格納先のメモリにおける前記データの格納位置を特定する、
    処理を実行させるメモリ制御プログラム。
  8. 第1のメモリ、前記第1のメモリよりも低速の第2のメモリおよび前記第2のメモリよりも低速の第3のメモリにおけるデータ配置を制御するコンピュータが、
    前記第1のメモリまたは前記第2のメモリにデータを格納すると、前記データの格納先を示すフラグに対する第1の識別情報の設定と前記第1のメモリおよび前記第2のメモリのメモリ領域における前記データが格納された第1のアドレスを示す情報の記録とを行い、また、前記第3のメモリに前記データを格納すると、前記フラグに対する第2の識別情報の設定と前記第3のメモリのメモリ領域における前記データが格納された第2のアドレスを示す情報の記録とを行い、
    前記データにアクセスする際に、前記データに対応する前記フラグに前記第1の識別情報が設定されている場合、前記第1のアドレスを示す情報に基づいて、前記第1のメモリおよび前記第2のメモリのうち前記データの格納先のメモリを判定し、判定された格納先のメモリにおける前記データの格納位置を特定する、
    メモリ制御方法。
JP2018093154A 2018-05-14 2018-05-14 メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法 Active JP7132491B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018093154A JP7132491B2 (ja) 2018-05-14 2018-05-14 メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法
US16/395,305 US11029892B2 (en) 2018-05-14 2019-04-26 Memory control apparatus and memory control method for swapping data based on data characteristics

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018093154A JP7132491B2 (ja) 2018-05-14 2018-05-14 メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法

Publications (2)

Publication Number Publication Date
JP2019200473A true JP2019200473A (ja) 2019-11-21
JP7132491B2 JP7132491B2 (ja) 2022-09-07

Family

ID=68463567

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018093154A Active JP7132491B2 (ja) 2018-05-14 2018-05-14 メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法

Country Status (2)

Country Link
US (1) US11029892B2 (ja)
JP (1) JP7132491B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7261037B2 (ja) * 2019-02-21 2023-04-19 株式会社日立製作所 データ処理装置、ストレージ装置およびプリフェッチ方法
US11526445B2 (en) * 2019-05-13 2022-12-13 Rambus Inc. Managing memory maintenance operations in a memory system having backing storage media

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080270758A1 (en) * 2007-04-27 2008-10-30 Arm Limited Multiple thread instruction fetch from different cache levels
WO2011033600A1 (ja) * 2009-09-21 2011-03-24 株式会社 東芝 仮想記憶管理装置
US20140013045A1 (en) * 2011-12-29 2014-01-09 James B. Crossland Non-volatile ram disk
JP2017058951A (ja) * 2015-09-16 2017-03-23 株式会社東芝 メモリシステム
JP2017138853A (ja) * 2016-02-04 2017-08-10 株式会社東芝 情報処理装置およびプログラム
JP2017138823A (ja) * 2016-02-04 2017-08-10 キヤノン株式会社 情報処理装置、情報処理方法および撮像装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63244152A (ja) 1987-03-30 1988-10-11 Fujitsu Ltd 拡張記憶装置アクセス制御装置
JP3219826B2 (ja) 1992-02-21 2001-10-15 日本電気株式会社 情報処理装置
US9003150B2 (en) * 2012-04-26 2015-04-07 Hitachi, Ltd. Tiered storage system configured to implement data relocation without degrading response performance and method
US10613882B2 (en) * 2016-10-14 2020-04-07 Seagate Technology Llc Active drive API

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080270758A1 (en) * 2007-04-27 2008-10-30 Arm Limited Multiple thread instruction fetch from different cache levels
WO2011033600A1 (ja) * 2009-09-21 2011-03-24 株式会社 東芝 仮想記憶管理装置
US20140013045A1 (en) * 2011-12-29 2014-01-09 James B. Crossland Non-volatile ram disk
JP2017058951A (ja) * 2015-09-16 2017-03-23 株式会社東芝 メモリシステム
JP2017138853A (ja) * 2016-02-04 2017-08-10 株式会社東芝 情報処理装置およびプログラム
JP2017138823A (ja) * 2016-02-04 2017-08-10 キヤノン株式会社 情報処理装置、情報処理方法および撮像装置

Also Published As

Publication number Publication date
US11029892B2 (en) 2021-06-08
US20190347048A1 (en) 2019-11-14
JP7132491B2 (ja) 2022-09-07

Similar Documents

Publication Publication Date Title
US7793049B2 (en) Mechanism for data cache replacement based on region policies
US20080235477A1 (en) Coherent data mover
US8825946B2 (en) Memory system and data writing method
JP2009020881A (ja) 可変のページサイズのメモリ編成を実装する処理システム
US9880944B2 (en) Page replacement algorithms for use with solid-state drives
KR20100021868A (ko) 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법
US10430346B2 (en) DDR storage adapter
US20110320720A1 (en) Cache Line Replacement In A Symmetric Multiprocessing Computer
JP2011204060A (ja) ディスク装置
JP2009512943A (ja) 多階層の変換索引緩衝機構(TLBs)フィールドの更新
JP2013097416A (ja) 記憶装置および計算機
CN113641596B (zh) 缓存管理方法、缓存管理装置、处理器
JP2009294982A (ja) ディスク装置及びその制御方法
CN108228088B (zh) 用于管理存储***的方法和设备
JP7160792B2 (ja) キャッシュエントリ転送のためにキャッシュ位置情報を記憶するシステム及び方法
JP7132491B2 (ja) メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法
JP2016085677A (ja) メモリ管理方法、メモリ管理プログラム及び情報処理装置
US9268700B2 (en) Cache control device, cache control method, and program thereof
JP2018106573A (ja) ストレージ制御装置及び制御プログラム
JP2013073271A (ja) アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
CN111480151A (zh) 将高速缓存线从共用存储器页面冲洗到存储器
JP2019144921A (ja) 情報処理装置及び情報処理方法
JP2010176305A (ja) 情報処理装置およびデータ記憶装置
JP2013109404A (ja) 情報処理装置
KR20130086692A (ko) 환형 구조의 비휘발성 메모리 캐쉬에 데이터를 읽고 쓰기 위한 데이터 처리 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210113

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210122

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220713

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220808

R150 Certificate of patent or registration of utility model

Ref document number: 7132491

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150