JP2021135760A - メモリシステムおよびメモリ制御方法 - Google Patents
メモリシステムおよびメモリ制御方法 Download PDFInfo
- Publication number
- JP2021135760A JP2021135760A JP2020031667A JP2020031667A JP2021135760A JP 2021135760 A JP2021135760 A JP 2021135760A JP 2020031667 A JP2020031667 A JP 2020031667A JP 2020031667 A JP2020031667 A JP 2020031667A JP 2021135760 A JP2021135760 A JP 2021135760A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- physical
- logical
- memories
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
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 (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】メモリ階層を構成するメモリ資源の利用効率を向上させることができるメモリシステムを提供する。【解決手段】実施形態によれば、メモリシステムは、複数の物理メモリと、メモリ制御部と、を具備する。前記メモリ制御部は、1以上のプログラムによって各々使用される、前記複数の物理メモリの領域が割り当てられた1以上の論理メモリを構成する。前記メモリ制御部は、前記複数の物理メモリの応答性能を示す第1データを計算し、前記1以上の論理メモリに対するアクセス時の待機が前記1以上のプログラムの処理性能に及ぼす影響度を示す第2データを計算し、前記第1データおよび前記第2データに基づき、前記1以上の論理メモリに対する前記複数の物理メモリの領域の割り当てを制御する。【選択図】図1
Description
本発明の実施形態は、メモリシステムおよびメモリ制御方法に関する。
例えば高速・小容量のメモリと低速・大容量のメモリといった異なるメモリを組み合わせて構成されるメモリ階層を有するメモリシステムが普及している。メモリ階層を有するメモリシステムでは、一般的に、データの時間的・空間的局所性やアクセス頻度などに基づいたメモリ階層の制御が行われている。
複数のアプリケーションプログラムがメモリ階層を共同して使用する場合、さらに、メモリアクセスがそれぞれの処理性能に及ぼす影響度を考慮して、メモリ階層を構成するメモリ資源の利用効率を最大化するように、メモリ階層の制御を行うことが重要である。
本発明が解決しようとする課題は、メモリ階層を構成するメモリ資源の利用効率を向上させることができるメモリシステムおよびメモリ制御方法を提供することである。
実施形態によれば、メモリシステムは、複数の物理メモリと、メモリ制御部と、を具備する。前記メモリ制御部は、1以上のプログラムによって各々使用される、前記複数の物理メモリの領域が割り当てられた1以上の論理メモリを構成する。前記メモリ制御部は、前記複数の物理メモリの応答性能を示す第1データを計算し、前記1以上の論理メモリに対するアクセス時の待機が前記1以上のプログラムの処理性能に及ぼす影響度を示す第2データを計算し、前記第1データおよび前記第2データに基づき、前記1以上の論理メモリに対する前記複数の物理メモリの領域の割り当てを制御する。
以下、実施の形態について、図面を参照して説明する。
(第1実施形態)
まず、第1実施形態について説明する。
(第1実施形態)
まず、第1実施形態について説明する。
図1は、本実施形態のメモリシステム1の一構成例を示すブロック図である。メモリシステム1は、例えば、計算機システムや記憶装置などとして実現され得る。
図1に示すように、メモリシステム1は、メモリ制御部10と、データ記憶部20とを有している。メモリ制御部10は、ワークロード監視部11、待機レベル予測部12、メモリ監視部13、応答レベル予測部14、メモリ管理部15を有し、データ記憶部20と接続されている。データ記憶部20は、特性の異なる物理メモリであるメモリ[1]21とメモリ[2]22とを有し、複数のアプリケーションプログラムにより共有される。本メモリシステム1では、アプリケーションプログラムが専有して使用できるメモリ領域である論理メモリが、データ記憶部20のメモリ[1]21とメモリ[2]22との1つ以上の領域を組み合わせて構成される。なお、論理メモリは、メモリ[1]21またはメモリ[2]22の一方の領域のみによっても構成され得る。
論理メモリは、ユーザやアプリケーションプログラムから参照できる論理的なメモリ領域であり、一般的なオペレーティングシステムにおけるプロセスごとのメモリ領域、仮想マシンやコンテナごとのメモリ領域、仮想ストレージボリューム、名前空間(ネームスペース)によって管理されるメモリやストレージの領域、などを指すが、これに限定されるものではない。ただし、ある論理メモリを永続性記憶装置として使用する場合は、不揮発性メモリやバッテリー付きメモリなどの電源供給が途絶えてもデータが消失されないメモリを用いる。
物理メモリは、データを記憶する物理的なメモリ資源であり、SRAMやDRAMなどの揮発性メモリ、NANDフラッシュメモリ、相変化型メモリ(PCM)、抵抗変化型メモリ(ReRAM)、磁気抵抗メモリ(MRAM)などの不揮発性メモリに代表される半導体記憶メモリ、ハードディスクドライブ(HDD)、CDやDVDなどの光ディスク、テープドライブなども利用することができる。
例えばメモリシステム1が計算機システムとして実現される場合、論理メモリは、プロセッサ内部のキャッシュメモリと主記憶とを組み合わせたキャッシュ型のメモリ階層であってもよい。また、例えばメモリシステム1が記憶装置として実現される場合は、論理メモリは、高速・小容量の記憶媒体と低速・大容量の記憶媒体とを組み合わせたティアリング型のメモリ階層であってもよい。前者の場合、メモリ[1]21とメモリ[2]22とは、例えばSRAMとDRAMとである。後者の場合、メモリ[1]21とメモリ[2]22とは、例えばSSDとHDDとである。なお、特性の異なる物理メモリとは、必ずしも種類の異なる物理メモリではない。例えば経年的な要因によって個体差が生じ得る同じ製品の物理メモリであってもよい。
また、例えばメモリシステム1が計算機システムとして実現される場合、メモリ制御部10は、プロセッサが外部記憶から主記憶へプログラムをロードして実行することによって構築されるものであってもよい。例えばメモリシステム1が記憶装置として実現される場合には、メモリ制御部10は、SoCなどとして構成される、SSDやHDDなどを制御するコントローラであってもよい。
また、例えばメモリシステム1が計算機システムとして実現される場合、メモリ制御部10は、プロセッサが外部記憶から主記憶へプログラムをロードして実行することによって構築されるものであってもよい。例えばメモリシステム1が記憶装置として実現される場合には、メモリ制御部10は、SoCなどとして構成される、SSDやHDDなどを制御するコントローラであってもよい。
ワークロード監視部11は、論理メモリを専有・使用して動作するアプリケーションプログラムごとに処理の進行状況を監視し、アプリケーションプログラムの待機要因情報31を収集する。ここで、待機要因情報31とは、アプリケーションプログラムの処理を中断させ、計算機システムの利用効率を低下させる要因を示す情報である。例えば、プロセッサパイプラインのストールサイクル数、キャッシュメモリのミス回数、オペレーティングシステムにおけるコンテキストスイッチ回数などが該当する。待機要因情報31は、計算機システムのパフォーマンスカウンタで収集してもよいし、各アプリケーションプログラムからメモリアクセス要求の属性情報として取得してもよい。
待機レベル予測部12は、ワークロード監視部11が収集した各アプリケーションプログラムの待機要因情報31に基づき、論理メモリに対するアクセス待機が各アプリケーションプログラムの処理性能に及ぼす影響度を示す待機レベルを計算する。
メモリ監視部13は、物理メモリごとのアクセス状況を監視し、物理メモリへのアクセス種別(読み出し、書き込みなど)、アクセス回数、アクセスサイズなどに代表されるアクセス統計情報32を収集する。アクセス統計情報32は、メモリ監視部13にアクセスカウンタを設けて収集してもよいし、メモリ[1]21やメモリ[2]22にアクセスカウンタを設けて収集してもよい。
応答レベル予測部14は、メモリ監視部13が収集した各物理メモリのアクセス統計情報32に基づき、各物理メモリのアクセス応答性能を示す応答レベルを計算する。例えば、平均アクセス応答時間は応答レベルの代表的な例である。また、アクセス統計情報32からメモリアクセスのパターン(ランダムアクセス、シーケンシャルアクセス)を抽出し、パターンに応じて平均アクセス応答時間を計算してもよい。
メモリ管理部15は、予め定められるメモリ割り当て規則に基づき、論理メモリに物理メモリを割り当てる。例えば、待機レベルが高いアプリケーションプログラムが専有して使用している論理メモリから順に、応答レベルの高い物理メモリを割り当てるメモリ割り当て規則が考えられるが、これに限定されるものではない。また、メモリ管理部15は、論理メモリを構成する物理メモリの情報を保持するメモリ割り当て管理テーブル41を有し、物理メモリの割り当て時に当該メモリ割り当て管理テーブル41を更新する。メモリ割り当て管理テーブル41は、例えば、メモリ制御部10の作業領域用としてメモリシステム1に搭載されるメモリ制御部10専用のメモリ領域上に設けられる。論理メモリを構成する物理メモリの情報とは、論理メモリの領域と、この論理メモリの領域に割り当てられた物理メモリの領域との対応関係を示す情報である。メモリ割り当て管理テーブル41が保持する情報は、論理メモリのアドレスを物理メモリのアドレスに変換する際にも使用される。メモリ割り当て管理テーブル41は、論物変換テーブルなどとも称される。
論理メモリに対する物理メモリの割り当てが行われるタイミングは、アプリケーションプログラムから明示的に割り当て要求を受けた時、アプリケーションプログラムから新規データの書き込み要求を受けた時、アプリケーションプログラムの実行開始時、などが考えられるが、これに限定されるものではない。
次に、以上のような構成をもつ本実施形態に係るメモリシステム1が実行するメモリ階層の制御(メモリ割り当て方法)の詳細について説明する。
図2は、本メモリシステム1がメモリ割り当て要求の取得時に実行するメモリ割り当て要求処理の流れを示すフローチャートである。
ある論理メモリに対する物理メモリの割り当てを要求するメモリ割り当て要求を取得した場合、メモリ制御部10は、その論理メモリへ物理メモリを割り当てるメモリ割り当て要求処理を実行する。メモリ割り当て要求は、アプリケーションプログラムが必要に応じて生成することや、アプリケーションプログラムからのデータ書き込み要求の取得時にメモリ制御部10が内部の処理要求として生成することなどが考えられるが、これに限定されるものではない。
メモリ割り当て要求処理が開始されると、待機レベル予測部12が、ワークロード監視部11が収集した各アプリケーションプログラムの待機要因情報31に基づき、各アプリケーションプログラムが専有して使用する各論理メモリの待機レベルを計算する(S101)。例えば、アプリケーションプログラムiの論理メモリLiにおける待機レベルWaitLeveliを、
WaitLeveli = StallCycleCounti/ CacheMissCounti
と定義することができる。
WaitLeveli = StallCycleCounti/ CacheMissCounti
と定義することができる。
ここで、StallCycleCounti、CacheMissCountiは、アプリケーションプログラムiの実行に由来するプロセッサパイプラインのストールサイクル数とキャッシュミス回数とをそれぞれ示す。この待機レベルを使用することで、キャッシュミスあたりのストールサイクル数の大きいアプリケーションプログラムが専有して使用している論理メモリを待機レベルが高い(すなわち、アプリケーションプログラムの処理性能に及ぼすメモリアクセス待機の影響度が強い)と評価することができる。SSDのような不揮発性メモリを用いたストレージ装置では、ストレージへのアクセス完了待ちスレッド数やコンテキストスイッチ回数を待機レベルの計算に用いてもよい。論理メモリの待機レベルは、その論理メモリを専有して使用しているアプリケーションプログラムの待機レベルと同義である。
待機レベルの計算結果は、図3に例示される待機レベルテーブル42に保持される。待機レベルテーブル42は、前述のメモリ割り当て管理テーブル41と同様、例えば、メモリ制御部10の作業エリアとしてメモリシステム1に搭載されるメモリ制御部10専用のメモリ領域上に設けられる。図3に示す待機レベルテーブル42では、論理メモリ1の待機レベルは2245、論理メモリ2の待機レベルは34、論理メモリ3の待機レベルは894である。ここでは、待機レベルの数値が大きいことを待機レベルが高いと称し、待機レベルの数値が大きい程、アプリケーション性能に対するメモリアクセス遅延の影響が大きいものとする。よって、図3に示す待機レベルテーブル42は、最も待機レベルの高い論理メモリ1が、最もアプリケーション性能に対するメモリアクセス遅延の影響が大きく、最も待機レベルの低い論理メモリ2が、最もアプリケーション性能に対するメモリアクセス遅延の影響が小さいことを示している。
次に、応答レベル予測部14が、メモリ監視部13が収集した各物理メモリのアクセス統計情報32に基づき、各物理メモリの応答レベルを計算する(S102)。例えば、メモリ監視部13は、各物理メモリに対する一連のアクセス列におけるアクセスサイズ(1回のアクセスで参照されるデータのサイズ)とアクセスアドレス(各アクセスが参照するメモリ位置)とを収集する。応答レベル予測部14は、メモリ監視部13が収集したアクセス列のアクセスサイズとアクセスアドレスとから、アクセスパターンを予測する。例えば、アクセスサイズが小さく、アドレス間の差が大きい時はランダムアクセス、アクセスサイズが大きく、アドレス間の差が小さい時はシーケンシャルアクセス、と予測することができる。また、物理メモリjの応答レベルResponseLeveljは、例えば、
ResponseLevelj = α × Throughputj+ β × IOPSj
と定義することができる。
ResponseLevelj = α × Throughputj+ β × IOPSj
と定義することができる。
ここで、Throughputjは、物理メモリjの秒間データ転送量、IOPSjは秒間アクセス回数であり、α、βは定数である。ここで、α、βは、ThroughputjとIOPSjそれぞれの重要度を示すパラメータであり、ランダムアクセスを重視する場合には、β>αとしてIOPSjの重要度を高め、反対に、シーケンシャルアクセスを重視する場合には、α>βとしてThroughputjの重要度を高めることができる。なお、ThroughputjとIOPSjとは、メモリ監視部13にて観測してもよいし、メモリ[1]21およびメモリ[2]22の内部で観測してもよいが、これに限定されるものではない。
応答レベルの計算結果は、図4に例示される応答レベルテーブル43に保持される。応答レベルテーブル43は、前述のメモリ割り当て管理テーブル41と同様、例えば、メモリ制御部10の作業エリア領域用としてメモリシステム1に搭載されるメモリ制御部10専用のメモリ領域上に設けられる。図4に示す応答レベルテーブル43では、物理メモリ1の待機レベルは503、物理メモリ2の応答レベルは46である。ここでは、応答レベルの数値が大きいことを応答レベルが高いと称し、応答レベルの数値が大きい程、メモリアクセス応答性能が高いものとする。よって、図4に示す応答レベルテーブル43は、最も応答レベルの高い物理メモリ1が、最もメモリアクセス応答性能が高く、最も応答レベルの低い物理メモリ2が、最もメモリアクセス応答性能が低いことを示している。
待機レベルと応答レベルとの計算後、メモリ管理部15が、メモリ割り当て規則の更新処理を行う(S103)。メモリ割り当て規則は、待機レベルと応答レベルに基づいて各論理メモリに割り当て得る物理メモリを定義した規則であり、例えば図5に示すようなメモリ割り当て規則テーブル44に保持される。メモリ割り当て規則テーブル44は、前述のメモリ割り当て管理テーブル41と同様、例えば、メモリ制御部10の作業エリアとしてメモリシステム1に搭載されるメモリ制御部10専用のメモリ領域上に設けられる。図5に示すメモリ割り当て規則テーブル44では、論理メモリ1に割り当て得る物理メモリは物理メモリ1、論理メモリ2に割り当て得る物理メモリは物理メモリ2、論理メモリ3に割り当て得る物理メモリは物理メモリ1、物理メモリ2であることを規定している。
このメモリ割り当て規則によって、論理メモリ3のように、ある論理メモリに対して複数の物理メモリを割り当てることができる。このとき、割り当てられた物理メモリに優先度をつけてもよいし、ラウンドロビン方式で交互に割り当てを行うこともできるが、これに限定されるものではない。また、割り当ての際に、メモリ割り当て規則で規定された物理メモリの容量の不足や、故障などが原因で、メモリ割り当てができない場合は、後述するような例外処理に遷移する。
メモリ管理部15は、このメモリ割り当て要求処理の時点で取得した待機レベルと応答レベルとに基づき、かつ、メモリ割り当て条件に従って、メモリ割り当て規則テーブル44を更新する。メモリ割り当て条件は、論理メモリを分類するための条件と、分類ごとに論理メモリに割り当てる物理メモリを特定するための条件との組を定義したものである。メモリ割り当て条件を保持するメモリ割り当て条件テーブル45の例を図6に示す。メモリ割り当て条件テーブルは、前述のメモリ割り当て管理テーブル41と同様、例えば、メモリ制御部10の作業エリアとしてメモリシステム1に搭載されるメモリ制御部10専用のメモリ領域上に設けられる。
条件1は、待機レベルが1以上100未満の論理メモリに対して、物理メモリの中で応答レベルが最も低い物理メモリを割り当てることを示している。同様に、条件2は、待機レベルが100以上1000未満の論理メモリに対して、応答レベルが30以上の物理メモリを割り当てることを示し、条件3は、待機レベルが1000以上の論理メモリに対して、応答レベルが100以上の物理メモリを割り当てることを示している。
ここで、メモリ割り当て条件で使用される条件は、待機レベルや応答レベル以外のものであっても構わない。例えば、メモリ割り当て条件として使用できる条件として、メモリの空き容量、書き込み量、読み出しエラー回数、消費電力などが考えられるが、これに限定されるものではない。
メモリ割り当て条件テーブル45の作成の仕方、具体的には、論理メモリ条件の設け方によっては、ある1つの論理メモリが複数のメモリ割り当て条件で規定される論理メモリ条件を満足する可能性も考えられる。つまり、1つの論理メモリが複数の分類に属する可能性も考えられる。この場合は、例えば条件番号の小さいものを優先して1つの条件のみを採用しても良いし、見つかったすべての条件を採用してもよい。
ここで、ある論理メモリについて、メモリ割り当て条件テーブル45に保持されるいずれのメモリ割り当て条件も満足しない場合や、メモリ割り当て条件で定義された条件を満足する割り当て対象の物理メモリが特定できない場合は、割り当てエラーとして何らかの例外処理に遷移してもよいし、予め定義されたデフォルトの物理メモリを割り当てるように制御しても構わないが、これに限定されるものではない。
図7は、図2のS103のメモリ割り当て規則更新処理の流れを示すフローチャートである。
メモリ管理部15は、まず、論理メモリを待機レベル順に並び替える(S201)。これは、待機レベルが高い論理メモリの割り当て規則に優先的に物理メモリを設定するためであるが、別の順序手段を用いても構わない。次に、メモリ管理部15は、全ての論理メモリに対して、メモリ割り当て条件テーブル45に保持されるメモリ割り当て条件を参照しながら、物理メモリの割り当てを行う。つまり、物理メモリの割り当てが完了していない論理メモリが存在する間(S202:NO)、メモリ管理部15は、以下に説明するS203〜S205の処理を実行する。
まず、メモリ管理部15は、メモリ割り当て条件テーブル45を検索し、論理メモリlの待機レベルが満たすメモリ割り当て条件Cを特定する(S203)。次に、メモリ管理部15は、このメモリ割り当て条件Cで規定される応答レベルを満足する物理メモリpを特定する(S204)。最後に、メモリ管理部15は、論理メモリlのメモリ割り当て規則に対して当該特定した物理メモリpを設定する(S205)。
例えば、図3に示す待機レベルテーブル42と、図6に示すメモリ割り当て条件テーブル45との場合においては、論理メモリ3の待機レベルは894であり、メモリ割り当て条件2で規定される待機レベルが100以上1000未満の論理メモリに該当し、このときの割り当て対象物理メモリの条件は、応答レベルが30以上となる。図4の応答レベルテーブル43の場合、応答レベルが30以上の物理メモリは、物理メモリ1と物理メモリ2とが該当する。従って、メモリ管理部15は、図5に示すメモリ割り当て規則テーブル44のように、論理メモリ3のメモリ割り当て規則として、物理メモリ1と物理メモリ2を登録する。
メモリ管理部15は、すべての論理メモリに対する物理メモリの割り当てが完了した場合(S202:YES)、メモリ割り当て規則更新処理を終了する。このメモリ割り当て規則更新処理を終了したメモリ管理部15は、メモリ割り当て処理を実行する(図2:S104)
図8は、図2のS104のメモリ割り当て処理の流れを示すフローチャートである。
メモリ管理部15は、要求された論理メモリに対してメモリ割り当て規則で定義された割り当て対象の物理メモリの空き領域から、要求されたサイズの領域を確保する(S301)。メモリ管理部15は、物理メモリごとの割り当て状況を管理し、空き領域から要求に応じたサイズの領域を割り当て、領域を特定するための情報を出力する(S303)。確保する領域は、連続する領域であっても、断片的な複数の領域の集合であっても構わない。例えば、連続する領域を確保する場合は、物理メモリ番号と先頭からのオフセットとを出力し、複数の領域の集合を確保する場合は、各領域の、物理メモリ番号、先頭からのオフセット、領域サイズを列挙したリストを出力する。
図8は、図2のS104のメモリ割り当て処理の流れを示すフローチャートである。
メモリ管理部15は、要求された論理メモリに対してメモリ割り当て規則で定義された割り当て対象の物理メモリの空き領域から、要求されたサイズの領域を確保する(S301)。メモリ管理部15は、物理メモリごとの割り当て状況を管理し、空き領域から要求に応じたサイズの領域を割り当て、領域を特定するための情報を出力する(S303)。確保する領域は、連続する領域であっても、断片的な複数の領域の集合であっても構わない。例えば、連続する領域を確保する場合は、物理メモリ番号と先頭からのオフセットとを出力し、複数の領域の集合を確保する場合は、各領域の、物理メモリ番号、先頭からのオフセット、領域サイズを列挙したリストを出力する。
要求されたサイズの領域が確保できなかった場合は(S302:NO)、メモリ管理部15は、メモリ割り当て例外処理を行う(S303)。例えば、仮想記憶システムにおけるページフォールトのような割り込みを発生させ、物理メモリ上の不要なデータを削除するか、別の物理メモリへ退避して、空き領域を増やしてから、再度メモリ割り当て処理を実行する。
メモリ管理部15によるメモリ割り当ての例を図9に示す。論理メモリ1では、サイズ300の領域のメモリ割り当て要求に対し、図5に示すメモリ割り当て規則に従って、物理メモリ1の連続領域が割り当てられている。論理メモリ2では、サイズ200の領域のメモリ割り当て要求に対し、物理メモリ2のオフセット0(先頭)からのサイズ100の領域と、同じく物理メモリ2のオフセット350(先頭からサイズ350の領域に後続する位置)からのサイズ100の領域との2つの領域(合計サイズ200)が割り当てられている。また、論理メモリ3では、サイズ400のメモリ割り当て要求に対し、物理メモリ1のオフセット0からのサイズ50の領域と、物理メモリ2のオフセット100からのサイズ250の領域と、物理メモリ1のオフセット400からのサイズ100の領域との3つの領域(合計サイズ400)が割り当てられている。
メモリ管理部15は、要求された物理メモリの割り当てを完了すると、メモリ割り当て管理テーブル41の更新を行う(S304)。メモリ割り当て管理テーブルの例を図10に示す。なお、この例は、図9に示したメモリ割り当ての例に対応したものである。
図10に示すメモリ割り当て管理テーブル41では、論理メモリ番号と論理メモリオフセットとの組に対して、物理メモリ番号と物理メモリオフセットとの組が記載され、サイズは論理メモリと物理メモリとで共通である。一般的に、管理する領域のサイズを可変とすると、管理するために必要な計算量やメモリ量が増加する傾向がある。このため、メモリ割り当て管理テーブル41は、論理メモリの領域に対する物理メモリの領域の割り当てに関する情報を、固定サイズごとに記録するものであっても構わない。
このように、本実施形態のメモリシステム1は、複数のアプリケーションプログラムが同時に動作して複数のメモリ資源を共有利用する環境において、メモリ制御部10が、アプリケーションプログラムごとの待機レベルと物理メモリごとの応答レベルとを考慮したメモリ割り当てを行うことで、アプリケーションプログラムの実行待機に起因する非効率性を改善することができる。
つまり、本メモリシステム1は、ここで説明したメモリ割り当て方法により、複数の特性の異なる論理メモリ(アプリケーションプログラム)が、複数の特性の異なる物理メモリを共有する場合において、メモリアクセス遅延の影響度(待機レベル)が大きい論理メモリに対して優先的にメモリアクセス応答性能(応答レベル)の高い物理メモリを割り当てることができるようになる。これにより、本メモリシステム1は、メモリ資源の利用効率を最大化することができる。また、本実施形態のメモリシステム1は、アプリケーションプログラムの動作中に監視する待機レベルと応答レベルとに基づいてメモリ割り当てを行うことで、ワークロードに応じたメモリ階層の制御が可能となる。
(第2実施形態)
次に、第2実施形態について説明する。
次に、第2実施形態について説明する。
図11は、本実施形態のメモリシステム1の一構成例を示すブロック図である。本実施形態のメモリシステム1も、第1実施形態と同様、例えば、計算機システムや記憶装置などとして実現され得る。ここでは、第1実施形態のメモリシステム1と同一の構成要素に対しては同一の符号を使用する。そして、第1実施形態のメモリシステム1と共通する部分についての説明は省略し、異なる部分についてのみ説明する。第1実施形態のメモリシステム1と比較した場合における本実施形態のメモリシステム1の構成上の違いは、図11に示すように、疲弊レベル予測部16をさらに有している点にある。
本実施形態におけるメモリ監視部13は、物理メモリごとのアクセス統計情報32に加えて、物理メモリごとの疲弊状態を含む疲弊状態情報33を収集する。NANDフラッシュメモリに代表される不揮発性メモリは、一般的に、書き込みや消去などの操作によって記憶素子が摩耗し、ビットエラー率の増大要因となるなどの信頼性や性能保証の観点での制限がある。本実施形態における疲弊状態情報33は、例えば、NANDフラッシュメモリでは、プログラム/消去回数(P/Eサイクル)や、時間変化による記憶データの消失までの時間を示したデータ保持期間(データリテンションタイム)、訂正不能ビットエラー率(Uncorrectable Bit Error Rate) などを想定するが、これに限定されるものではない。また、疲弊状態情報33は、メモリ監視部13がメモリへのアクセス状況から生成してもよいし、各物理メモリが内部に疲弊状態情報33を保持して、メモリ監視部13が読み出してもよい。
疲弊レベル予測部16は、メモリ監視部13が収集した疲弊状態情報33に基づき、各物理メモリの疲弊の程度を示す疲弊レベルを計算する。例えば、ある物理メモリjの疲弊レベルWearLeveljは、
WearLevelj = α × PECyclej+ β × DataRetentionTimej
と定義することができる。
WearLevelj = α × PECyclej+ β × DataRetentionTimej
と定義することができる。
ここで、PECyclejは、物理メモリjの平均P/Eサイクル、DataRetentionTimejは、物理メモリjの平均データ保持期間、α、βは、各項の影響度を制御する定数である。この定義により、平均P/Eサイクルが大きく平均データ保持期間が長い物理メモリほど、疲弊レベルが高くなり疲弊が進んだ状態であることを示すことができる。
疲弊レベルの計算結果は、図12に例示される疲弊レベルテーブル46に保持される。疲弊レベルテーブル46は、第1実施形態で説明したメモリ割り当て管理テーブル41と同様、例えば、メモリ制御部10の作業エリアとしてメモリシステム1に搭載されるメモリ制御部10専用のメモリ領域上に設けられる。図12に示す疲弊レベルテーブル46では、物理メモリ1の疲弊レベルは368、物理メモリ2の疲弊レベルは10である。ここでは、疲弊レベルの数値が大きい程、より疲弊が進んだ状態であるものとする。よって、図12に示す疲弊レベルテーブル46は、物理メモリ1の方が、より疲弊が進んだ状態であることを示している。
また、疲弊レベルテーブル46は、図12に示すように、物理メモリごとに疲弊レベルの制約条件となる疲弊レベル制約を保持している。疲弊レベル制約は、物理メモリの仕様などから予め設定され、例えば、疲弊レベル制約を超えた疲弊レベルの物理メモリをメモリ割り当て対象から除外する、もしくは、割り当ての優先度を抑制する、などの制御に使用することができる。
そして、本実施形態におけるメモリ管理部15は、第1実施形態において説明した待機レベル、応答レベルに加えて、疲弊レベルに基づいて、論理メモリに対する物理メモリの割り当てを制御する。疲弊レベルは、応答レベルと同様に、メモリ割り当て条件における物理メモリの選択条件として用いることができる。図13に、疲弊レベルを割り当て対象物理メモリ条件に用いたメモリ割り当て条件を保持するメモリ割り当て条件テーブル45の例を示す。図13に示すメモリ割り当て条件テーブル45は、第1実施形態の説明の際に図6に示したメモリ割り当て条件テーブル45の条件3について、符号a1で示す部分を追加したものである。このように、条件3の割り当て対象物理メモリ条件として、応答レベルが100以上“かつ疲弊レベルが100以下”と規定することで、高い応答レベルが求められる場合、疲弊レベルが高い物理メモリの割り当てを抑制することができる。
また、疲弊レベルは、応答レベル予測部14に出力して、応答レベルの計算に使うこともできる。一般的に、疲弊が進行した不揮発性メモリは、ビットエラー率の上昇によるエラー訂正処理時間が増大し、メモリアクセス応答性能が低下するため、応答レベルの予測に疲弊レベルを反映することが考えられる。例えば、疲弊レベルを考慮した応答レベルResponseLevel'jを、
ResponseLevel'j = ResponseLevelj/ WearLevelj
と定義することで、疲弊レベルが高い物理メモリほど応答レベルが低くなり、疲弊が進行した物理メモリの割り当てを抑制することができる。
ResponseLevel'j = ResponseLevelj/ WearLevelj
と定義することで、疲弊レベルが高い物理メモリほど応答レベルが低くなり、疲弊が進行した物理メモリの割り当てを抑制することができる。
このように、本実施形態のメモリシステム1は、ここで説明した、さらに疲弊レベルに基づいたメモリ割り当て方法により、物理メモリの疲弊状態を考慮したメモリ割り当てを行うことができる。特に、疲弊が進んでいる物理メモリの割り当てを抑制しながら、論理メモリ(アプリケーションプログラム)の特性に応じたメモリ割り当てを行うことができるようになる。一般的に、不揮発性メモリを用いたSSDでは、ウェアレベリングとよばれる技術を用いて、メモリブロックの疲弊状態に応じて書き込み量の制御・平準化を行っている。ここで説明したメモリ割り当て方法を、計算機システムやSSDを使ったストレージシステムに適用することで、疲弊レベルを考慮した、メモリ割り当ての最適化を図ることができる。
また、本実施形態のメモリシステム1においては、メモリ監視部13が、物理メモリごとではなく、さらに、物理メモリ上の予め定められたサイズの領域それぞれの疲弊状態を含むように疲弊状態情報33を収集してもよい。この場合、より粒度の細かい単位で疲弊レベルを考慮した、メモリ割り当ての最適化を図ることができる。
また、本実施形態のメモリシステム1においては、メモリ監視部13が、物理メモリごとではなく、さらに、物理メモリ上の予め定められたサイズの領域それぞれの疲弊状態を含むように疲弊状態情報33を収集してもよい。この場合、より粒度の細かい単位で疲弊レベルを考慮した、メモリ割り当ての最適化を図ることができる。
(第3実施形態)
次に、第3実施形態について説明する。
次に、第3実施形態について説明する。
第1実施形態や第2実施形態でのメモリシステム1の説明においては、メモリ制御部10が、メモリ割り当て要求を取得した際にメモリ割り当て処理を行う例を示した。本実施形態のメモリシステム1では、メモリ制御部10が、さらに、既に物理メモリが割り当てられている論理メモリに対して、再度、物理メモリの割り当てを行い、データを再配置する。以下、本実施形態におけるデータ再配置方法について説明する。
本実施形態におけるメモリ管理部15は、特定の条件が成立した場合にデータ再配置処理を実行する。特定の条件とは、例えば、ある論理メモリが構成されてから一定時間経過した場合や、ある論理メモリに対するメモリ割り当て条件を満足する物理メモリが存在しない(例外処理)場合、などが考えられる。
図14は、本メモリシステム1が実行するデータ再配置処理の流れを示すフローチャートである。
まず、メモリ管理部15は、データ再配置を行う論理メモリを選択する(S401)。例えば、データ再配置処理実行時点で、最も待機レベルの高い論理メモリや、構成されてから最も時間が経過している論理メモリを選択することが考えられる。
次に、メモリ管理部15は、選択した論理メモリに割り当てられている物理メモリ領域の中からデータ再配置の対象とする物理メモリ領域Rを選択する(S402)。物理メモリ領域Rは、例えば、メモリ割り当て管理テーブル(図10)を参照し、対象の論理メモリに割り当てられている物理メモリ領域のうち、現時点のメモリ割り当て規則(図5)と異なる物理メモリが割り当てられているメモリ領域を選択することが考えられる。
続いて、メモリ管理部15は、選択した物理メモリ領域R上のデータをバッファメモリに読み出す(S403)。バッファメモリは、データ記憶部20の特定のメモリ領域を固定的に割り当てて使用してもよいし、メモリ制御部10の作業領域用としてメモリシステム1に搭載されるメモリ制御部10専用のメモリ領域上に設けても良い。
次に、メモリ管理部15は、S402で選択した物理メモリ領域Rに代えて、物理メモリ領域Rと同サイズの物理メモリ領域を割り当てるために、第1実施形態で説明したメモリ割り当て処理(図8)を行う(S404)。そして、メモリ管理部15は、S403で読み出したバッファメモリ上のデータを、S404で新たに割り当てた物理メモリ領域に書き込む(S405)。データの書き込みが完了したら、メモリ管理部15は、物理メモリ領域Rを解放し(S406)、自身が管理する物理メモリの空き情報を更新する。
本実施形態のメモリシステム1は、まず、第1実施形態や第2実施形態で説明したように、待機レベルと応答レベルとに基づいて、待機レベルの高い論理メモリに応答レベルの高い物理メモリを優先的に割り当てる。しかし、メモリ割り当て規則は、アプリケーションプログラムの実行に応じて適宜に更新されていくため、以前に割り当てた物理メモリが最新のメモリ割り当て規則に従った割り当てとなっていない可能性がある。本実施形態のメモリシステム1は、さらに、ここで説明したデータ再配置方法により、以前に割り当てたメモリ領域に記憶されているデータについて、最新のメモリ割り当て規則に従って、再度メモリ割り当ておよびデータの再配置を行うことで、メモリ資源を効率的に活用することができる。
なお、図14に示したデータ再配置処理の例では、論理メモリおよび物理メモリ領域ごとにデータ再配置を行っているが、複数の論理メモリや物理メモリ領域をまとめてデータ再配置の対象としても構わない。
また、本実施形態におけるデータ再配置方法は、メモリ割り当ての対象となる物理メモリの追加・削除の際にも用いることができる。例えば、記憶装置を増設した場合や、故障や交換などにより記憶装置を削除した場合などに、ここで説明したデータ再配置方法を適用することで、論理メモリを再構成することができる。
以下、第1実施形態から第3実施形態で説明した、各メモリシステム1において論理メモリに対して物理メモリを割り当てるメモリ制御を司るメモリ制御部10の適用例をいくつか示す。
<メモリ制御部10を有する計算機システム>
図15は、メモリ制御部10を有する計算機システム100の一例を示す図である。計算機システム100は、例えば、処理部110、入出力部120、記憶部[1]130および記憶部[2]140から構成され、これらは、互いにメモリバスなどの通信路を介して相互に接続されている。
図15は、メモリ制御部10を有する計算機システム100の一例を示す図である。計算機システム100は、例えば、処理部110、入出力部120、記憶部[1]130および記憶部[2]140から構成され、これらは、互いにメモリバスなどの通信路を介して相互に接続されている。
処理部110は、アプリケーション処理を実行するものであり、CPU、GPU、FPGA、用途に特化したLSIなどが考えられるが、これに限定されるものではない。ここでのメモリ制御部10は、処理部110で実現されることを想定しているが、メモリ制御専用の処理部を設けても良い。
入出力部120は、各種入出力や外部ネットワークとのインタフェースであり、計算機システム内部と外部システムとのデータ通信を制御するものである。
記憶部[1]130と記憶部[2]140とは、データを記憶するものであり、DIMM、HDD、SSDなどのメモリモジュールやストレージ機器を想定するが、これに限定されるものではない。記憶部[1]130および記憶部[2]140は、状態記憶部131、141とデータ記憶部132、142とを有する。状態記憶部131、141は、データ記憶部132、142のアクセス統計情報や疲弊状態情報を保持するものであり、メモリ制御部10から参照される。データ記憶部132、142は、実際にデータを記憶するための1つ以上のメモリを有する。ここでは、データ記憶部132、142に対応した状態記憶部131、141を設けているが、データ記憶部132、142が有するメモリごとに状態記憶部131、141を設けても構わない。
ここでのメモリ制御部10は、記憶部[1]130および記憶部[2]140が有するメモリを物理メモリとして制御し、第1実施形態から第3実施形態のいずれかで説明したメモリ割り当て方法に従って、メモリの割り当てを行う。メモリ割り当て方法で必要となるメモリ割り当て管理テーブル41などの管理データは、記憶部[1]130および記憶部[2]140に記憶されてもよいし、CPUにおけるキャッシュメモリに代表されるような処理部110の内部に具備されるメモリに記憶されてもよい。第1実施形態から第3実施形態のいずれかで説明したメモリ割り当て方法で構成される論理メモリは、一般的なオペレーティングシステムにおける主記憶や二次記憶(ストレージ)としてアプリケーションプログラムからアクセスすることができる。
このような構成をもつ計算機システム100では、多数のアプリケーションプログラムが独立して実行される場合や、複数のアプリケーションプログラムが連携してサービスを提供する場合に、メモリアクセスの影響度が高いアプリケーションプログラムに優先的に高速なメモリを割り当てることで、限られたメモリ資源の利用効率を最大化することができる。
<メモリ制御部10を有する記憶装置>
図16は、メモリ制御部10を有する記憶装置200の一例を示す図である。記憶装置200は、例えば、制御部210、入出力部220、記憶部[1]230および記憶部[2]240から構成され、これらは、互いにメモリバスなどの通信路を介して相互に接続されている。
図16は、メモリ制御部10を有する記憶装置200の一例を示す図である。記憶装置200は、例えば、制御部210、入出力部220、記憶部[1]230および記憶部[2]240から構成され、これらは、互いにメモリバスなどの通信路を介して相互に接続されている。
制御部210は、記憶装置200全体を制御するものであり、CPUや専用回路、メモリなどから構成されるが、これに限定されるものではない。ここでのメモリ制御部10は、制御部210で実現されることを想定しているが、メモリ制御専用の制御部を設けても良い。
入出力部220は、記憶装置200のホストとなる外部装置とのインタフェースであり、ホストが記憶装置200を制御するためのコマンドを解釈・応答するためのコマンド解釈部221を有する。不揮発正メモリを用いた記憶装置であるSSDでは、SATA規格やNVM Express(NVMe)(登録商標)規格で規定されたコマンド仕様が一般的に使用されるが、これに限定されるものではない。また、外部装置とのデータ通信には、PCI Express(PCIe)(登録商標)やEthernet(登録商標)などの通信規格が使用されることを想定するが、これに限定されるものではない。ここでは、記憶装置200にアクセスするアプリケーションプログラムは外部装置で実行されるため、メモリ割り当て要求や待機要因情報31は、外部装置から入出力部220を介して入力されることを想定する。待機レベル予測部12における待機レベルの計算では、外部装置から入力される待機要因情報31に加え、メモリ制御部10内のワークロード監視部11で特定可能なIOストリームの特性を示す情報を組み合せてもよい。
記憶部[1]230と記憶部[2]240とは、ホストが書き込んだデータや制御部210が管理する管理データを記憶するものであり、各種メモリチップのパッケージを想定するが、これに限定されるものではない。記憶部[1]および記憶部[2]は、状態記憶部231、241とデータ記憶部232、242とを有する。状態記憶部231、241は、データ記憶部232、242のアクセス統計情報32や疲弊状態情報33を保持するものであり、メモリ制御部10から参照される。データ記憶部232、242は、実際にデータを記憶するための1つ以上のメモリを有する。ここでは、データ記憶部232、242に対応した状態記憶部231、241を設けているが、データ記憶部232、242が有するメモリごとに状態記憶部231、241を設けても構わない。
ここでのメモリ制御部10は、記憶部[1]230および記憶部[2]240が有するメモリを物理メモリとして制御し、第1実施形態から第3実施形態のいずれかで説明したメモリ割り当て方法に従って、メモリの割り当てを行う。メモリ割り当て方法で必要となるメモリ割り当て管理テーブル41などの管理データは、記憶部[1]230および記憶部[2]記憶されてもよいし、CPUにおけるキャッシュメモリに代表されるような制御部210の内部に具備されるメモリに記憶されてもよい。さらに、第1実施形態から第3実施形態のいずれかで説明したメモリ割り当て方式で構成される論理メモリは、NVMe SSDにおけるネームスペースや、論理ボリューム、メモリ割り当て管理テーブル41(論物変換テーブル)の記憶領域などに利用できる。
このような構成をもつ記憶装置200では、多数のネームスペースや論理ボリュームが構成され、多数の独立したIOストリーム(要求列)が記憶装置200に入力される状況において、記憶装置200へのアクセスの影響度が高いIOストリームに優先的に高速なメモリを割り当てることで、限られたメモリ資源の利用効率を最大化することができる。
<メモリ制御部10を有する計算機システムおよび記憶装置をネットワークで相互に接続した分散システム>
図17は、図15を参照して説明した計算機システム100と、図16を参照して説明した記憶装置200とを相互に接続した分散システム300の一例を示す図である。より詳しくは、分散システム300は、各々がメモリ制御部10を有する2つの計算機システム100_1、100_2と、メモリ制御部10を有する記憶装置[1]200と、メモリ制御部10を有しない記憶装置[2]200Aとから構成され、これらは、互いにネットワークで接続されている。記憶装置[2]200Aは、例えば、一般的なSSDなどの記憶装置を想定したものである。記憶装置[2]200Aの入出力部220Aは、記憶装置200Aのホストとなる外部装置とのインタフェースである。記憶装置[2]200Aの記憶部230Aは、入出力部220Aによって受信されるホストの書き込みデータを記憶する。この分散システム300においては、アプリケーションプログラムは、計算機システム[1]100_1および計算機システム[2]100_2の処理部110において実行される。
図17は、図15を参照して説明した計算機システム100と、図16を参照して説明した記憶装置200とを相互に接続した分散システム300の一例を示す図である。より詳しくは、分散システム300は、各々がメモリ制御部10を有する2つの計算機システム100_1、100_2と、メモリ制御部10を有する記憶装置[1]200と、メモリ制御部10を有しない記憶装置[2]200Aとから構成され、これらは、互いにネットワークで接続されている。記憶装置[2]200Aは、例えば、一般的なSSDなどの記憶装置を想定したものである。記憶装置[2]200Aの入出力部220Aは、記憶装置200Aのホストとなる外部装置とのインタフェースである。記憶装置[2]200Aの記憶部230Aは、入出力部220Aによって受信されるホストの書き込みデータを記憶する。この分散システム300においては、アプリケーションプログラムは、計算機システム[1]100_1および計算機システム[2]100_2の処理部110において実行される。
計算機システム[1]100_1のメモリ制御部10_1は、計算機システム[1]100_1に備わる記憶部[1]130_1および記憶部[2]140_1を制御し、計算機システム[1]100_1や計算機システム[2]100_2上で動作するアプリケーションプログラムに論理メモリを提供する。また、計算機システム[2]100_2のメモリ制御部10_2は、計算機システム[2]100_2に備わる記憶部[1]130_2および記憶部[2]140_2を制御し、計算機システム[2]100_1上や計算機システム[2]100_2上で動作するアプリケーションプログラムに論理メモリを提供する。記憶装置[1]200のメモリ制御部10_3は、記憶装置[1]200に備わる記憶部[1]230および記憶部[2]240を制御し、計算機システム[1]100_1上や計算機システム[1]100_2上で動作するアプリケーションプログラムの要求に従って論理メモリを構成する。
このような構成をもつ分散システム300では、論理メモリとして使用できるメモリ量は、計算機システム[1]100_1のメモリ制御部10_1の制御下では、記憶部[1]130_1の容量と、記憶部[2]140_1の容量との合計となる。計算機システム[2]100_2のメモリ制御部10_2の制御下では、記憶部[1]130_2の容量と、記憶部[2]140_2の容量との合計となる。また、記憶装置[1]200のメモリ制御部10_3の制御下では、記憶部[1]230の容量と記憶部[2]240の容量との合計となる。このように、論理メモリとして使用できるメモリ量は、各機器(計算機システム[1]100_1、計算機システム[2]100_2、記憶装置[1]200)に搭載される物理メモリの容量に制限されるが、各機器でメモリ割り当てを行うことで、メモリ割り当て要求処理の複雑さを軽減することができる。
[単一のメモリ制御部10で集中的に制御するパターン]
また、以上のような構成をもつ分散システム300では、ある特定のメモリ制御部10が分散システム300内の記憶部を制御するように構成することもできる。例えば、図17における計算機システム[1]100_1のメモリ制御部10_1が、計算機システム[1]100_1、計算機システム[2]100_2、記憶装置[1]200、記憶装置[2]200Aの記憶部を制御して、分散システム300上で実行されるアプリケーションプログラムに対して論理メモリを提供する。このような構成を取ることで、異なる機器に備わる物理メモリを使った論理メモリを構成することが可能となる。この場合、メモリ割り当て要求処理は計算機システム[1]100_1において一元的に実行され、計算機システム[2]100_2および記憶装置[1]200では実行されない。このため、計算機システム[2]100_2および記憶装置[1]200では、メモリ制御部10の機能の一部または全てを省略することができる。例えば、計算機システム[2]100_2は、計算機システム[2]100_2における待機レベルと応答レベルとの計算結果を計算機システム[1]100_1に出力し、計算機システム[1]100_1のメモリ制御部10で、メモリ割り当て要求処理を実行する。
また、以上のような構成をもつ分散システム300では、ある特定のメモリ制御部10が分散システム300内の記憶部を制御するように構成することもできる。例えば、図17における計算機システム[1]100_1のメモリ制御部10_1が、計算機システム[1]100_1、計算機システム[2]100_2、記憶装置[1]200、記憶装置[2]200Aの記憶部を制御して、分散システム300上で実行されるアプリケーションプログラムに対して論理メモリを提供する。このような構成を取ることで、異なる機器に備わる物理メモリを使った論理メモリを構成することが可能となる。この場合、メモリ割り当て要求処理は計算機システム[1]100_1において一元的に実行され、計算機システム[2]100_2および記憶装置[1]200では実行されない。このため、計算機システム[2]100_2および記憶装置[1]200では、メモリ制御部10の機能の一部または全てを省略することができる。例えば、計算機システム[2]100_2は、計算機システム[2]100_2における待機レベルと応答レベルとの計算結果を計算機システム[1]100_1に出力し、計算機システム[1]100_1のメモリ制御部10で、メモリ割り当て要求処理を実行する。
また、分散システム300内の各機器はネットワークで相互接続されており、アプリケーションプログラムが実行される機器と、物理メモリが備わる機器が異なる場合、ネットワーク遅延を含めた応答レベルの計算を行う。例えば、アプリケーションプログラムが計算機システム[1]100_1で実行され、計算機システム[1]100_1と計算機システム[2]100_2の物理メモリを使って論理メモリを構成することができる。ここで、計算機システム[2]100_2の物理メモリの応答レベルの計算において、ネットワーク遅延による応答レベル低下率を、計算機システム[2]100_2から出力される応答レベルに乗じることで応答レベルを計算することができる。
このように制御することで、メモリ割り当て要求処理の複雑さが増大するが、分散システム300内の全ての物理メモリを対象として論理メモリを構成することができる。
[複数のメモリ制御部10で制御するパターン]
さらに、以上のような構成をもつ分散システム300では、例えば、計算機システム[1]100_1のメモリ制御部10が、計算機システム[1]100_1と記憶装置[1]200の記憶部を制御し、計算機システム[2]100_2のメモリ制御部10が、計算機システム[2]100_2と記憶装置「2」200Aの記憶部を制御するように構成してもよい。この場合、計算機システム「1」100_1のメモリ制御部10は、計算機システム[1]100_1および記憶装置[1]200に備わる物理メモリを用いて論理メモリを構成する。同様に、計算機システム[2]100_2のメモリ制御部10は、計算機システム[2]100_2および記憶装置[2]200Aに備わる物理メモリを用いて論理メモリを構成する。
さらに、以上のような構成をもつ分散システム300では、例えば、計算機システム[1]100_1のメモリ制御部10が、計算機システム[1]100_1と記憶装置[1]200の記憶部を制御し、計算機システム[2]100_2のメモリ制御部10が、計算機システム[2]100_2と記憶装置「2」200Aの記憶部を制御するように構成してもよい。この場合、計算機システム「1」100_1のメモリ制御部10は、計算機システム[1]100_1および記憶装置[1]200に備わる物理メモリを用いて論理メモリを構成する。同様に、計算機システム[2]100_2のメモリ制御部10は、計算機システム[2]100_2および記憶装置[2]200Aに備わる物理メモリを用いて論理メモリを構成する。
このように制御することで、複数のメモリ制御部10でメモリ割り当て要求処理を行うことができ、メモリ割り当てに要する複雑さを抑制するとともに、複数の機器に備わる物理メモリを対象として論理メモリを構成することができる。
<記憶部を有しない制御装置による記憶システム>
図18は、記憶部を有しない(メモリ制御部10を有する)制御装置410による記憶システム400の一例を示す図である。記憶システム400は、制御装置410、記憶装置[1]200A_1および記憶装置[2]A_2を有し、互いにネットワークで接続されている。制御装置410は、メモリ制御部10を有し、入出力部412を介して、記憶装置[1]200A_1および記憶装置[2]200A_2に備わる記憶部に対してメモリ割り当て要求処理を実行する。記憶装置[1]200A_1および記憶装置[2]200A_2は、1つ以上のメモリから構成される記憶部を有する記憶装置である。図18においては、メモリ制御部10を有しない記憶装置[1]200A_1、記憶装置[2]200A_2を例示しているが、その一方または両方は、図16に示したメモリ制御部10を有する記憶装置200であってもよい。
図18は、記憶部を有しない(メモリ制御部10を有する)制御装置410による記憶システム400の一例を示す図である。記憶システム400は、制御装置410、記憶装置[1]200A_1および記憶装置[2]A_2を有し、互いにネットワークで接続されている。制御装置410は、メモリ制御部10を有し、入出力部412を介して、記憶装置[1]200A_1および記憶装置[2]200A_2に備わる記憶部に対してメモリ割り当て要求処理を実行する。記憶装置[1]200A_1および記憶装置[2]200A_2は、1つ以上のメモリから構成される記憶部を有する記憶装置である。図18においては、メモリ制御部10を有しない記憶装置[1]200A_1、記憶装置[2]200A_2を例示しているが、その一方または両方は、図16に示したメモリ制御部10を有する記憶装置200であってもよい。
記憶システム400は、処理部を持たないため、アプリケーションプログラムは外部システムで実行されることを想定している。この記憶システム400では、アプリケーションプログラムは、制御装置410の制御部411が有するメモリ制御部10にメモリ割り当て要求を発行し、論理メモリに対する物理メモリの割り当てを行う。
このような構成にすることで、メモリ制御部10と記憶部とを分離したシステムを構成することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム、10…メモリ制御部、11…ワークロード監視部、12…待機レベル予測部、13…メモリ監視部、14…応答レベル予測部、15…メモリ管理部、16…疲弊レベル予測部、20…データ記憶部、31…待機要因情報、32…アクセス統計情報、33…疲弊状態情報、41…メモリ割り当て管理テーブル、42…待機レベルテーブル、43…応答レベルテーブル、44…メモリ割り当て規則テーブル、45…メモリ割り当て条件テーブル、46…疲弊レベルテーブル、100…計算機システム、110…処理部、120…入出力部、130,140…記憶部、131,141,231,241…状態記憶部、132,142,232,242…データ記憶部、200…記憶装置、210…制御部、220…入出力部、221…コマンド解釈部、300…分散システム、400…記憶システム、410…制御装置、411…制御部、412…入出力部。
Claims (11)
- 複数の物理メモリと、
1以上のプログラムによって各々使用される、前記複数の物理メモリの領域が割り当てられた1以上の論理メモリを構成するメモリ制御部と、
を具備し、
前記メモリ制御部は、
前記複数の物理メモリの応答性能を示す第1データを計算し、
前記1以上の論理メモリに対するアクセス時の待機が前記1以上のプログラムの処理性能に及ぼす影響度を示す第2データを計算し、
前記第1データおよび前記第2データに基づき、前記1以上の論理メモリに対する前記複数の物理メモリの領域の割り当てを制御する、
メモリシステム。 - 前記メモリ制御部は、前記1以上の論理メモリを分類するための条件であって、前記第2データの値の範囲を示す第1条件と、前記第1条件による分類ごとに論理メモリに割り当てる物理メモリを前記複数の物理メモリの中から特定するための条件であって、前記第1データの値の範囲を示す第2条件との組を定義するメモリ割り当て条件を用いて、前記1以上の論理メモリに対する前記複数の物理メモリの領域の割り当てを制御する請求項1に記載のメモリシステム。
- 前記メモリ割り当て条件は、
予め定められた範囲の値が前記第2データとして計算された論理メモリに対して、予め定められた範囲の値が前記第1データとして計算された物理メモリが割り当てられる
ように前記第1条件と前記第2条件との組が定義されている請求項2に記載のメモリシステム。 - 前記メモリ制御部は、
予め定められた範囲の値が前記第2データとして計算された論理メモリに対して、予め定められた範囲の値が前記第1データとして計算された物理メモリを割り当てる
請求項1に記載のメモリシステム。 - 前記メモリ制御部は、
前記複数の物理メモリまたは前記複数の物理メモリ上の予め定められたサイズの領域それぞれの疲弊の程度を示す第3データを計算し、
さらに、前記第3データに基づき、前記1以上の論理メモリに対する前記複数の物理メモリの領域の割り当てを制御する、
請求項1〜4のいずれか1項に記載のメモリシステム。 - 前記メモリ制御部は、
前記複数の物理メモリまたは前記複数の物理メモリ上の前記予め定められたサイズの領域のそれぞれについて、前記1以上の論理メモリに対する領域の割り当てを抑制すべき前記疲弊の程度を示す閾値を保持し、
前記複数の物理メモリの中のいずれかの物理メモリまたは前記予め定められたサイズの領域において前記閾値で示される程度を超えて疲弊が進んでいる状態を示す値が前記第3データとして計算された場合、当該物理メモリまたは前記予め定められたサイズの領域の前記1以上の論理メモリに対する割り当てを抑制する、
請求項5に記載のメモリシステム。 - 前記メモリ制御部は、前記複数の物理メモリまたは前記複数の物理メモリ上の予め定められたサイズの領域それぞれの疲弊の程度を示す第3データを計算し、前記第3データを用いて、前記複数の物理メモリの前記第1データを計算する請求項1〜4のいずれか1項に記載のメモリシステム。
- 前記メモリ制御部は、
前記1以上の論理メモリの中から前記複数の物理メモリの領域の割り当てを見直すべき論理メモリを選択し、
前記選択した論理メモリに対する前記複数の物理メモリの割り当てを再実行する、
請求項1〜7のいずれか1項に記載のメモリシステム。 - 前記メモリ制御部は、前記第2データとして計算された前記影響度を示す値が前記1以上の論理メモリの中で最も前記影響度が高い状態を示す論理メモリを、前記1以上の論理メモリの中から前記複数の物理メモリの領域の割り当てを見直すべき論理メモリとして選択する請求項8に記載のメモリシステム。
- 前記メモリ制御部は、前記1以上の論理メモリの中で前記複数の物理メモリの領域の割り当てが行われてからの経過時間が最も長い論理メモリを、前記1以上の論理メモリの中から前記複数の物理メモリの領域の割り当てを見直すべき論理メモリとして選択する請求項8に記載のメモリシステム。
- 1以上のプログラムによって各々使用される、複数の物理メモリの領域が割り当てられた1以上の論理メモリを構成するメモリシステムのメモリ制御方法であって、
前記複数の物理メモリの応答性能を示す第1データを計算することと、
前記1以上の論理メモリに対するアクセス時の待機が前記1以上のプログラムの処理性能に及ぼす影響度を示す第2データを計算することと、
前記第1データおよび前記第2データに基づき、前記1以上の論理メモリに対する前記複数の物理メモリの領域の割り当てを制御することと、
を具備するメモリ制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020031667A JP2021135760A (ja) | 2020-02-27 | 2020-02-27 | メモリシステムおよびメモリ制御方法 |
US17/007,600 US11372560B2 (en) | 2020-02-27 | 2020-08-31 | Utilization-efficient resource allocation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020031667A JP2021135760A (ja) | 2020-02-27 | 2020-02-27 | メモリシステムおよびメモリ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021135760A true JP2021135760A (ja) | 2021-09-13 |
Family
ID=77463007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020031667A Pending JP2021135760A (ja) | 2020-02-27 | 2020-02-27 | メモリシステムおよびメモリ制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11372560B2 (ja) |
JP (1) | JP2021135760A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12111756B2 (en) * | 2021-05-28 | 2024-10-08 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for wear-level aware memory allocation |
US12147706B2 (en) * | 2021-12-03 | 2024-11-19 | Samsung Electronics Co., Ltd. | Storage device controlled by temperature dependent operation commands |
KR20240175227A (ko) * | 2023-06-12 | 2024-12-19 | 삼성전자주식회사 | Cxl 메모리 장치 및 이를 이용한 방법 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0944381A (ja) | 1995-07-31 | 1997-02-14 | Toshiba Corp | データ格納方法およびデータ格納装置 |
US7529903B2 (en) | 2005-07-05 | 2009-05-05 | International Business Machines Corporation | Systems and methods for memory migration |
JP5304950B2 (ja) | 2010-08-04 | 2013-10-02 | 株式会社日立製作所 | データベース管理方法、データベース管理装置及びデータベース管理プログラム |
US9244769B2 (en) * | 2010-09-28 | 2016-01-26 | Pure Storage, Inc. | Offset protection data in a RAID array |
EP4086767B1 (en) * | 2011-12-27 | 2025-05-07 | INTEL Corporation | Methods and apparatus to manage workload memory allocation |
JP6274127B2 (ja) | 2015-02-24 | 2018-02-07 | 株式会社Jvcケンウッド | 不揮発性半導体記憶装置の評価システム、評価方法、及び評価プログラム |
EP3696681B1 (en) * | 2017-11-07 | 2023-12-20 | Huawei Technologies Co., Ltd. | Memory block recovery method and device |
CN110058788B (zh) * | 2018-01-18 | 2022-06-14 | 伊姆西Ip控股有限责任公司 | 分配存储的方法、电子设备、存储系统和计算机程序产品 |
JP2020086748A (ja) * | 2018-11-21 | 2020-06-04 | Tdk株式会社 | メモリコントローラ、及びメモリシステム |
-
2020
- 2020-02-27 JP JP2020031667A patent/JP2021135760A/ja active Pending
- 2020-08-31 US US17/007,600 patent/US11372560B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210271400A1 (en) | 2021-09-02 |
US11372560B2 (en) | 2022-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11354234B1 (en) | Memory controller for nonvolatile memory with targeted erase from host and write destination selection based on wear | |
CN107885456B (zh) | 减少io命令访问nvm的冲突 | |
US8417871B1 (en) | System for increasing storage media performance | |
TWI475561B (zh) | Memory system | |
US20140304452A1 (en) | Method for increasing storage media performance | |
CN102449607B (zh) | 具有多个闪存封装的存储系统 | |
US10241909B2 (en) | Non-volatile memory device | |
CN104090847B (zh) | 一种固态存储设备的地址分配方法 | |
WO2018119901A1 (zh) | 存储系统和固态硬盘 | |
Min et al. | {eZNS}: An elastic zoned namespace for commodity {ZNS}{SSDs} | |
JP4902501B2 (ja) | 電力制御方法、計算機システム、及びプログラム | |
US20150095554A1 (en) | Storage processor managing solid state disk array | |
JP7524426B2 (ja) | メモリシステム | |
US11372560B2 (en) | Utilization-efficient resource allocation | |
EP2784683B1 (en) | Storage control program, storage control method, storage system and hierarchy control apparatus thereof | |
CN103336744A (zh) | 一种固态存储设备的垃圾回收方法及其系统 | |
US9983806B2 (en) | Storage controlling apparatus, information processing apparatus, and computer-readable recording medium having stored therein storage controlling program | |
JP6193373B2 (ja) | 複合型ストレージシステム及び記憶制御方法 | |
US10372372B2 (en) | Storage system | |
CN111065997A (zh) | 用于存储介质的协同数据迁移 | |
CN115079939A (zh) | 用于数据存储的系统、方法和设备 | |
US10684964B1 (en) | System and method for reducing read latency in storage devices | |
Min et al. | eZNS: Elastic Zoned Namespace for Enhanced Performance Isolation and Device Utilization | |
CN107885667B (zh) | 降低读命令处理延迟的方法与装置 | |
US11644991B2 (en) | Storage device and control method |