説明

メモリ管理装置およびメモリ管理方法

【課題】フラグメンテーションの発生を抑制でき、メモリの有効利用に有利なメモリ管理装置およびメモリ管理方法を提供する。
【解決手段】実施形態によれば、不揮発性半導体メモリ61〜6nと揮発性半導体メモリ5とを備えるメインメモリ65を管理するメモリ管理装置3であって、前記不揮発性半導体メモリへのデータ書き込み動作の際に、書き込み対象のデータについて、該データのデータ属性により決定される書き込み頻度についての情報22に基づき、前記不揮発性半導体メモリ上の書き込み領域の振り分けを行う振り分け部78と、前記振り分けられたデータを、追記方式により前記不揮発性半導体メモリに書き込む制御部77とを具備することを特徴とするメモリ管理装置。

【発明の詳細な説明】
【技術分野】
【0001】
メモリ管理装置およびメモリ管理方法に関する。
【背景技術】
【0002】
例えば、不揮発性半導体メモリと揮発性半導体メモリとをメインメモリとして用いる場合には、データ属性に応じて、データの配置領域を不揮発性半導体メモリとするか、または揮発性半導体メモリとするか決定する方法が提案されている(例えば、特許文献1参照)。不揮発性半導体メモリの一例としては、例えば、NAND型フラッシュメモリ等が提案されている。揮発性半導体メモリの一例としては、例えば、DRAM(Dynamic Random Access Memory)等が提案されている。
【0003】
ここで、NAND型フラッシュメモリ等の不揮発性半導体メモリへのデータ書き込み動作には、「上書き方式」と「追記方式」とが存在する。
【0004】
「上書き方式」とは、上書き不可能なNAND型フラッシュメモリを疑似的に上書き可能に見せる方式である。この方式では、消去ブロックの任意の位置のデータが更新された場合、その消去ブロックから全てのデータを一旦退避してブロックに消去処理を施してから、再度ブロック単位で更新されたデータを書き込む必要がある。
【0005】
一方、「追記方式」では、ページ単位のデータ書き込みを行う。この方式では、データが更新された場合、そのデータが存在するブロックページにマーク(無効データ)を付け、更新されたデータは別ブロック(同一ブロックでも可能)の別ページに配置される。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2008−242944号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
フラグメンテーションの発生を抑制でき、メモリの有効利用に有利なメモリ管理装置およびメモリ管理方法を提供する。
【課題を解決するための手段】
【0008】
一態様に係るメモリ管理装置は、不揮発性半導体メモリと揮発性半導体メモリとを備えるメインメモリを管理するメモリ管理装置であって、前記不揮発性半導体メモリへのデータ書き込み動作の際に、書き込み対象のデータについて、該データのデータ属性により決定される書き込み頻度についての情報に基づき、前記不揮発性半導体メモリ上の書き込み領域の振り分けを行う振り分け部と、前記振り分けられたデータを、追記方式により前記不揮発性半導体メモリに書き込む制御部とを具備する。
【図面の簡単な説明】
【0009】
【図1】実施形態に係る情報処理装置の全体構成例を示すシステムブロック図。
【図2】図1中の処理部におけるブロック選択部を示すブロック図。
【図3】本実施形態に係るカラーリングテーブルの構成例を示す図。
【図4】実施形態に係るメモリ管理装置のデータ書き込み動作を示すフロー図。
【図5】実施形態に係るメモリ管理装置のガーベジコレクション動作を示すフロー図。
【図6】実施形態に係るデータ書き込み動作後の物理ブロック(PEB)を示す図。
【図7】実施形態に係る更新頻度が高いデータを更新後の物理ブロック(PEB)を示す図。
【図8】比較例に係る上書き方式によるデータ書き込み動作後の物理ブロック(PEB)を示す図。
【図9】比較例に係る上書き方式による更新頻度が高いデータを更新後の物理ブロック(PEB)を示す図。
【図10】本実施形態および比較例におけるダーティ(dirty)領域サイズを示す図。
【発明を実施するための形態】
【0010】
以下、この発明の実施形態について図面を参照して説明する。尚、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
【0011】
[実施形態]
<1.構成例>
1−1.全体構成例
まず、図1を用い、この実施形態に係る情報処理装置の全体構成例について説明する。図1は、本実施形態に係る情報処理装置1の構成の一例を示すシステムブロック図である。
【0012】
図示するように、情報処理装置1は、例えばSoC(System-on-a-Chip)で構成される。情報処理装置1は、プロセッサP1〜P4、2次キャッシュメモリL2、バス2、メモリ管理装置3を備える。
【0013】
プロセッサP1〜P4は、それぞれが1次キャッシュメモリL1−1〜L1−4、MMU41〜44を具備する。プロセッサP1〜P4としては、例えばCPU(Central Processing Unit)が用いられるが、MPU(Micro Processor Unit)、GPU(Graphic Processor Unit)などのような他の処理ユニットが用いられてもよい。この図1において、プロセッサP1〜P4の数は4つであるが、プロセッサの数は1以上であればよい。
【0014】
プロセッサP1〜P4は、2次キャッシュメモリL2を共有し、バス2を介して、メモリ管理装置3と電気的に接続される。
【0015】
メモリ管理装置3は、外部の揮発性半導体メモリ5、不揮発性半導体メモリ61〜6nと電気的に接続されている。プロセッサP1〜P4は、メモリ管理装置3を介して、揮発性半導体メモリ5、不揮発性半導体メモリ61〜6nにアクセス可能である。
【0016】
プロセッサP1〜P4とメモリ管理装置3とは、バス2によってデータを送受信可能に接続されている。また、例えば、プロセッサP1〜P4とメモリ管理装置3とは、非同期に動作可能であり、プロセッサP1〜P4で処理実行中に、メモリ管理装置3が不揮発性半導体メモリ61〜6nに対してウェアレベリング、ガーベージコレクション、コンパクションを実行することができる。
【0017】
なお、本実施の形態において、情報処理装置1と、揮発性半導体メモリ5及び不揮発性半導体メモリ61〜6nとは、別チップとされているが、情報処理装置1内に、揮発性半導体メモリ5及び不揮発性半導体メモリ61〜6nが含まれる構成としてもよい。
【0018】
メモリ管理装置3の内部には、処理部7が備えられている。この処理部7としては、例えばMPUが用いられるが、他の処理ユニットが用いられるとしてもよい。
【0019】
処理部7は、不揮発性半導体メモリ61〜6nを使用するための種々の処理を、ソフトウェア8に基づいて制御する。本実施形態において、プロセッサP1〜P4と処理部7とで、不揮発性半導体メモリ61〜6nに対する処理を分担して実行するとしてもよい。例えば、ソフトウェア8は、不揮発性半導体メモリ61〜6nに記憶されており、起動時に処理部7によって不揮発性半導体メモリ61〜6nから読み出され、実行される。
【0020】
揮発性半導体メモリ5と不揮発性半導体メモリ61〜6nは、メインメモリとして使用される。本実施形態では、不揮発性半導体メモリ61〜6nに、十分なメモリ量が確保される。不揮発性半導体メモリ61〜6nのメモリ容量は、揮発性半導体メモリ5よりも大きい。そして、揮発性半導体メモリ5には、例えば、最近アクセスされたデータ、使用頻度の高いデータなどのアクセスされる可能性の高いデータが不揮発性半導体メモリ61〜6nからキャッシュされる。プロセッサP1〜P4が揮発性半導体メモリ5にアクセスする場合に、揮発性半導体メモリ5にアクセス対象のデータが存在しない場合、不揮発性半導体メモリ61〜6nと揮発性半導体メモリ5と間でデータ転送が実行される。このように、揮発性半導体メモリ5と不揮発性半導体メモリ61〜6nとを組み合わせて使用することで、揮発性半導体メモリ5のメモリ容量より大きいメモリ空間がメインメモリとして使用可能となる。
【0021】
本実施の形態において揮発性半導体メモリ5は、例えば、DRAM(Dynamic Random Access Memory)であるとする。しかしながら、揮発性半導体メモリ5としては、DRAMに代えて、FPM−DRAM(Fast Page Mode)、EDO−DRAM(Extended Data Out DRAM)、SDRAM(Synchronous DRAM)などのような、コンピュータにおいてメインメモリとして利用されるメモリを用いるとしてもよい。また、DRAM程度の高速ランダムアクセスが可能であり、アクセス可能上限回数に実質的な制限がないのであれば、揮発性半導体メモリ5に代えて、MRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)などの不揮発性ランダムアクセスメモリが用いられるとしてもよい。
【0022】
本実施の形態において不揮発性半導体メモリ61〜6nは、例えば、NAND型フラッシュメモリであるとする。しかしながら、不揮発性半導体メモリ61〜6nは、例えばNOR型フラッシュメモリなど、他の不揮発性半導体メモリが用いられるとしてもよい。
【0023】
揮発性半導体メモリ5は、不揮発性半導体メモリ61〜6nよりも小容量(例えば128Mbyte〜4GByteなど)だが高速にアクセス可能である。
【0024】
不揮発性半導体メモリ61〜6nは、揮発性半導体メモリ5よりも大容量(例えば32GByte〜512GByteなど)だがアクセス時間が長い。また、不揮発性半導体メモリ61〜6nは、データの書き込みにおいて、一旦データを消去し、書き込む必要がある。不揮発性半導体メモリ61〜6nは、最大の書き込み回数(例えば1万回や3万回など)に制限があり、その回数を超えると、エラー率が上昇し、デバイスとして正しいデータ書き込みの保証できなくなる場合がある。また、本例の場合、不揮発性半導体メモリ61〜6nに対して、「追記方式」により、データ書き込み動作を行う。
【0025】
ここで、「追記方式」は、ページ単位でデータ書き込みを行う。この追記方式で、データが更新された場合、そのデータが存在するブロックページにマーク(無効データ)を付け、更新されたデータは別ブロック(同一ブロックでも可能)の別ページに配置される。換言すれば、このような無効データとなった領域を、ダーティ(Dirty)領域(無効データ領域)と称する。
【0026】
ダーティ(Dirty)領域が増大すると、後述するガーベジコレクション動作がより必要なるため、フラグメンテーションが発生する。換言すると、フラグメンテーションはDirty領域の増加で有効領域が減る現象である。このようなフラグメンテーションが発生するため、ガーベジコレクションを行う。
【0027】
情報処理装置1では、プロセッサP1〜P4により、OS9及びアプリケーションなどのソフトウェア10が実行される。
【0028】
プロセッサP1〜P4により、情報処理装置1におけるOS9及びアプリケーションなどのソフトウェア10が実行される。
【0029】
OS9及びソフトウェア10は、例えば、1次キャッシュメモリL1−1〜L1−4、2次キャッシュメモリL2、揮発性半導体メモリ5、不揮発性半導体メモリ61〜6nに記憶されており、情報処理装置1の動作時に、プロセッサP1〜P4により読み出される。
【0030】
不揮発性半導体メモリ61〜6nの物理アドレス空間分のアクセス頻度情報は、OS9及びソフトウェア10によって利用され、テーブル形式で、カラーリングテーブルによりカラーリング情報として管理される。ここで、アクセス頻度情報とは、ページサイズ単位のアクセス頻度を表す。OS9は、例えば、プログラム自身が持つ特徴、プログラムのtxt領域、stack領域、heap領域、data領域に配置されたデータの区別に基づいてアクセス頻度情報を決定し、カラーリングテーブルを用いて管理する。詳細については、後述する。
【0031】
1−2.ブロック選択部の構成例
次に、図2を用い、この実施形態に係るメモリ管理装置3が有するブロック選択部の構成例について説明する。
【0032】
図示するように、本例の場合、ブロック選択部(処理部)77は、メモリ管理装置3中の処理部(MPU)7に配置されている。しかし、この例に限らず、ブロック選択部77は、NANDフラッシュメモリ61〜6nの図示しないメモリコントローラ上に実装されても良いし、MTD(Memory Technology Device)用のFS(File System)(例えば、NAND型フラッシュメモリ用のファイルシステム)上等に実装されても勿論良い。
【0033】
ブロック選択部77は、データ振り分け部78,ライトバッファA〜E(LA〜LE),およびGC用ライトバッファA〜C(GCLA〜GCLC)を備え、後述するカラーリングテーブルを元にデータのNANDフラッシュメモリ61〜6n上の書き込み先物理ブロックを選定する。
【0034】
データ振り分け部78は、NANDフラッシュメモリ61〜6nへのデータ書き込み動作の際に、書き込み対象のデータについて、該データのデータ属性により決定される書き込み頻度についての情報に基づき、NANDフラッシュメモリ61〜6n上の書き込み領域の振り分けを行い、データの更新頻度および消去頻度を示す変数に対応して配置されたライトバッファA〜E(LA〜LE)を選択する。データの更新頻度および消去頻度は、カラーリングテーブルを元に作成される。詳細については、後述する。また、データ振り分け部78は、GC用ライトバッファA〜C(GCLA〜GCLC)についても同様に選択する。詳細については、後述する。
【0035】
ライトバッファA〜E(LA〜LE)は、カラーリングテーブルにより算出された更新頻度を表す変数(0〜nの範囲)に対応して、n個分だけ配置される。換言すると、各ライトバッファA〜E(LA〜LE)は、更新頻度を表す変数に対応する。本例の場合、更新頻度を表す変数に対応して、5つのライトバッファA〜E(LA〜LE)が配置される例を示す。
【0036】
GC用ライトバッファA〜C(GCLA〜GCLC)についても、上記ライトバッファと同様に、カラーリングテーブルに基づいて算出された更新頻度を表す変数に対応して、複数(本例では、3つ)個分配置される。
【0037】
ブロック選択部77は、上記構成において、追記方式により、任意のタイミング(MPUにタスクが割り振られていない時)で、ライトバッファA〜E(LA〜LE)およびGC用ライトバッファA〜C(GCLA〜GCLC)の内容を論理ブロック(LEB)に、データの非同期書き込みを行う。尚、ライトバッファA〜E(LA〜LE)およびGC用ライトバッファA〜C(GCLA〜GCLC)の内容を論理ブロック(LEB)へ書き込もうとする際、論理ブロック(LEB)に空き領域がない場合、各ライトバッファに対応する論理ブロックを交換する。詳細については、後述する動作フローにより詳説する。
【0038】
1−3.カラーリングテーブルの構成例
次に、図3を用い、この実施形態に係るカラーリングテーブルの構成例の構成例について説明する。カラーリングテーブル22は、例えば、メインメモリとして用いられる揮発性メモリ5や不揮発性メモリ61〜6n等に配置されるものである。なお、カラーリングテーブル22は、例えば、メモリ管理装置3に設けられたRAM(図示せず)に保持されてもよい。
【0039】
図示するように、本実施形態に係るカラーリングテーブル22は、プロセッサP1〜P4の物理アドレス(不揮発性半導体メモリ及び揮発性半導体メモリの論理アドレス)を基に作成されたインデックス毎にカラーリング情報が付与される。ここで、プロセッサP1〜P4は、プロセッサP1〜P4の論理アドレスを、プロセッサP1〜P4の物理アドレス(不揮発性半導体メモリ及び揮発性半導体メモリの論理アドレス)に変換し、メモリ管理装置3に送信する。
【0040】
カラーリング情報が付与されるデータのデータサイズ単位は、例えば、読み出し、書き込みの最小の単位である。例えば、読み出し、書き込みの最小の単位は、NAND型フラッシュメモリ61〜6nのページサイズである。以下において、カラーリングテーブル22によりカラーリング情報が対応付けられるデータのデータサイズはページサイズであるとして説明するが、これに限定されるものではない。カラーリングテーブル22は、データ毎にカラーリング情報を対応付け、エントリ単位でカラーリング情報を格納する。カラーリングテーブル22の各エントリには、インデックスが付されている。インデックスとは、データの論理アドレスを基に生成される値である。
【0041】
例えば、上記メモリ管理装置3,ブロック選択部77,データ振り分け部78等は、データを指定する論理アドレスが与えられると、論理アドレスに対応するインデックスにより管理されているエントリを参照してカラーリングテーブル22中における、データのカラーリング情報を取得する。そして、このカラーリング情報に基づいて、揮発性メモリ(DRAM)5、不揮発性メモリ(多値メモリ(MLC:Multi Level Cell),2値メモリ(SLC:Single Level Cell))61〜6nの配置を決定する。さらに、上記不揮発性メモリ(多値メモリ(MLC:Multi Level Cell),2値メモリ(SLC:Single Level Cell))61〜6n内それぞれで、本例に係るデータ振り分けを行う。詳細については、後述する。
【0042】
カラーリング情報は、各データのメインメモリ64上の配置領域を決定する基準として用いられる情報であり、静的カラー情報と、動的カラー情報とを含む。静的カラー情報は、カラーリング情報が付与される当該データの特性(データ属性)に基づいて生成される情報であり、当該データの不揮発性メモリ61〜6n等におけるデータ配置(書き込み)領域を決定するヒントとなる情報である。動的カラー情報は、データの読み出しと書き込みの回数と頻度の少なくとも一方を含む情報である。
【0043】
静的カラー情報は、当該データの重要度、静的書き込み頻度を示す値SW_color、静的読み出し頻度を示すSR_color、データ寿命SL_color、データの生成された時刻ST_colorを含む。
【0044】
重要度とは、データの種類等に基づいて、当該データの重要性を推測して設定される値である。重要度は、例えば、ファイルシステムに保持されるファイルの特性、またはプログラムに一次的に使用される領域の特性により推測される。
【0045】
静的書き込み頻度SW_colorとは、データの種類等に基づいて、当該データが書き込まれる頻度を推測して設定される値である。例えば、静的書き込み頻度SW_colorは、書き込み頻度が高いと推測されるデータほど、高い値が設定される。本例の場合、上記データ振り分け部78は、カラーリングテーブル22中の静的書き込み頻度SW_colorを更新頻度を表す変数として参照し、この変数に基づいてライトバッファA〜E(LA〜LE)にデータの振り分けを行う。これに限られず、データ振り分け部78は、静的書き込み頻度SW_colorを更新頻度を表す変数に近似して段階を減らした変数を用い、データ振り分けを行っても良い。
【0046】
静的読み出し頻度SR_colorとは、データの種類等に基づいて、当該データが読み出される頻度を推測して設定される値である。例えば、静的読み出し頻度SR_colorは、読み出し頻度が高いと推測されるデータほど、高い値が設定される。
【0047】
データ寿命SL_colorとは、データの種類等に基づいて、当該データが消去されずにデータとして使用される期間(データの寿命)を推測して設定される値である。
【0048】
静的カラー情報は、データを生成するプログラム(プロセス)により、静的に、予め決められた値である。また、ゲストOSが、データのファイル拡張子またはファイルヘッダ等に基づいて、静的カラー情報を予測してもよい。
【0049】
動的カラー情報は、データの書き込み回数DWC_color、データの読み出し回数DRC_colorを含む。
【0050】
データの書き込み回数DWC_colorとは、当該データが不揮発性メモリ61〜6nに書き込まれた回数である。
【0051】
データの読み出し回数DRC_colorとは、当該データが不揮発性メモリ61〜6nから読み出された回数である。メモリ管理装置3は、データの書き込み回数DWC_colorにより、データ毎に、当該データが不揮発性メモリ61〜6nに書き込まれた回数を管理する。データ読み出し回数DRC_colorにより、メモリ管理装置3は、データ毎に、当該データが不揮発性メモリ61〜6nから読み出された回数を管理する。前述のように、不揮発性メモリ61〜6nは、メインメモリとして用いられる。このため、プロセッサP1〜P4で処理されるデータは、不揮発性メモリ61〜6nに書き込まれ、不揮発性メモリ61〜6nから読み出される。
【0052】
メモリ管理装置3は、データが書き込まれる度に、当該データの書き込み回数DWC_colorをインクリメントする。また、メモリ管理装置3は、データが読み出される度に、当該データの読み出し回数DRC_colorをインクリメントする。
【0053】
上記のように、データの更新頻度はカラーリングテーブル22から算出される。なお、本実施形態において、「更新頻度」とは、プロセッサP1〜P4等によりデータが変更(更新)される頻度を意味する。
【0054】
さらに、本実施形態では、後述するガーベジコレクション動作の際に、カラーリングテーブル22中の、データの書き込み回数DWC_colorおよびデータ読み出し回数DRC_colorを参照することにより、不揮発性メモリ61〜6nのデータ書き込み、およびデータ読み出しが記録された時刻を参照し、GC用ライトバッファA〜C(GCLA〜GCLC)のデータ振り分けを行う。そのため、GC用ライトバッファA〜C(GCLA〜GCLC)にて使用する最終アクセス時刻が、カラーリングテーブル22中の、データの書き込み回数DWC_colorおよびデータ読み出し回数DRC_colorに加えられる。上記最終アクセス時刻には、最後にデータ書き込み、およびデータ読み出しが行われた時刻が記録される。
【0055】
<2.データ書き込み動作>
2−1.データ書き込み動作フロー
次に、図4に沿って、本実施形態に係る情報処理装置のデータ書き込み動作について説明する。
【0056】
(ステップST11)
図示するように、まず、ステップST11の際、ブロック選択部77中のデータ振り分け部78は、上記図3に示したカラーリングテーブル22を参照する。より具体的には、本例の場合、データ振り分け部78は、カラーリングテーブル22中の静的書き込み頻度SW_colorを更新頻度を表す変数として参照する。
【0057】
(ステップST12)
続いて、ステップST12の際、データ振り分け部78は、参照したカラーリングテーブル22に基づき、更新頻度を表す変数を算出する。より具体的には、データ振り分け部78は、参照した上記静的書き込み頻度SW_colorに基づき、更新頻度を表す変数(本例の場合、変数:0〜4)を算出する。しかしながら、本例の場合に限られず、データ振り分け部78は、静的書き込み頻度SW_colorを更新頻度を表す変数に近似して段階を減らした変数を算出しても良い。例えば、上記静的書き込み頻度SW_colorを更新頻度を表す変数に近似して段階を減らした変数とは、4つの第1〜第4ライトバッファが配置され、変数が0〜7となった場合に、変数0〜1を第1ライトバッファ、変数2〜3を第2ライトバッファ、変数4〜5を第3ライトバッファ、変数6〜7を第4ライトバッファにそれぞれ段階を減らした変数を言う。
【0058】
(ステップST13)
続いて、ステップST13の際、データ振り分け部78は、上記ステップST12において算出した更新頻度を表す変数に基づいて、この変数に対応するライトバッファを決定する。
本例の場合、データ振り分け部78は、上記ステップST12において算出された更新頻度を表す変数(0〜4)に基づいて、変数(0〜4)に対応するライトバッファA〜E(LA〜LE)を決定する。更新頻度を表す変数(0〜4)は、本例の場合、順次変数が大きくなるほど更新頻度が低くなる、とする。そのため、変数(0〜4)に対応するライトバッファA〜E(LA〜LE)は、順次更新頻度が低くなる。即ち、本例の場合では、ライトバッファA(LA)に、最も更新頻度が高いデータが振り分けられる。
【0059】
(ステップST14)
続いて、ステップST14の際、ブロック選択部77は、ライトバッファA〜E(LA〜LE)に対応する、論理ブロック(LEB)の空き領域が十分か否か、について判定する。
【0060】
(ステップST15)
続いて、ステップST15の際、ブロック選択部77は、上記ステップST14の際に論理ブロック(LEB)の空き領域が十分でない(No)と判定された場合、対応する論理ブロック(LEB)を変更し、再び上記ステップST14に戻る。
【0061】
(ステップST16)
続いて、ステップST16の際、ブロック選択部77は、上記ステップST14の際に論理ブロック(LEB)の空き領域が十分である(Yes)と判定された場合、「追記方式」により、論理ブロック(LEB)にライトバッファA〜E(LA〜LE)に振り分けられたデータの書き込み指示を行う(End)。
【0062】
尚、続いて、論理ブロック(LEB)に追記方式にて書き込まれたデータは、図示しない論理物理変換テーブルが参照されることにより、不揮発性メモリ61〜6nの対応する物理アドレスの物理ブロックに、同様の「追記方式」により書き込まれる。
【0063】
以上のように、書き込み対象のデータについて、書き込み対象のデータのデータ属性により決定される書き込み頻度についての情報に基づき、不揮発性半導体メモリ61〜6n上の書き込み領域を振り分ける。
【0064】
2−2.ガーベジコレクション動作フロー
次に、図5に沿って、本実施形態に係る情報処理装置のガーベジコレクション動作について説明する。
【0065】
本実施形態では、データのガーベジコレクション(GC:Garbage collection)についても、上記カラーリングテーブル22を用いてデータ振り分けを行い、追記方式にてデータ書き込みを行う。ここで、「追記方式」で書き込まれたデータが更新された場合、そのデータが存在するブロックページにマーク(無効データ)を付け、更新されたデータは別ブロック(同一ブロックでも可能)の別ページに配置される。換言すれば、このような無効データとなった領域は、ダーティ(Dirty)領域となる。そこで、論理ブロック(LEB)中のダーティ(Dirty)領域が増加した場合、ガーベジコレクションにより、無効データとなっていない有効データを、他の論理ブロック(LEB)へ追記方式で書き込むように指示し、移動させる。この結果、Dirty領域が増えている論理ブロック(LEB)を消去対象とし、Dirty領域が増えている論理ブロックを再利用可能とする処理である。ガーベジコレクション動作により、不揮発性メモリ61〜6nの有効利用な領域が増加するので、フラグメンテーションを更に改善することができる。
本例の場合、このガーベジコレクション動作は、メモリ管理装置3中の処理部(MPU)7が、アイドル状態の際に起動するものである。
(ステップST21)
図示するように、まず、ステップST21の際、ブロック選択部77中のデータ振り分け部78は、情報処理装置システム1の全体のDrity領域が、閾値以上か否かを判定する。情報処理装置システム1の全体のDrity領域が、閾値以上でないと判定された場合(No)、ガーベジコレクション動作は必要でないと判定され、この動作を終了する(End)。この際の閾値は、必要に応じて変更可能なものである。より具体的には、データ振り分け部78は、例えば、不揮発性メモリ61〜6nの全体のうちDrity領域が、50パーセント以上か否かにより判定する。
【0066】
(ステップST22)
続いて、ステップST22の際、上記ステップST21において情報処理装置システム1の全体のDrity領域が閾値以上であると判定された場合(Yes)、データ振り分け部78は、メインメモリ中のDirty領域の論理ブロック(LEB)を検索する。より具体的には、データ振り分け部78は、例えば、データが存在する論理ブロックのリストを不揮発性メモリ61〜6n上に確保し、このリストのエントリに対応する論理ブロックを線形に探索する。
【0067】
(ステップST23)
続いて、ステップST23の際、データ振り分け部78は、カラーリングテーブル22を参照することにより、ガーベジコレクション対象のデータの最終アクセス時刻を参照する。より具体的には、カラーリングテーブル22中の、データの書き込み回数DWC_colorおよびデータ読み出し回数DRC_colorを参照することにより、ガーベジコレクション対象のデータのデータ書き込み、およびデータ読み出しが記録された時刻を参照する。
【0068】
(ステップST24)
続いて、ステップST24の際、データ振り分け部78は、上記ステップST23の際に参照した最終アクセス時刻により、更新可能性を予測する。より具体的には、本例の場合、参照した最終アクセス時刻により、3つの更新可能性(大,中,小)を予測する。
例えば、このステップST24の際における本例の場合の上記3つの更新可能性は、以下のように判定される。
<更新可能性の予測方法例>
最終更新時刻が1日以上前の場合 :更新可能性小
最終更新時刻が12時間以上前の場合:更新可能性中
それ以外の場合 :更新可能性大
(ステップST25)
続いて、ステップST25の際、データ振り分け部78は、上記ステップST23の際に更新可能性”大”と予測された場合には、GC用ライトバッファA(LA)を選択する。
【0069】
(ステップST26)
続いて、ステップST26の際、データ振り分け部78は、上記ステップST23の際に更新可能性”中”と予測された場合には、GC用ライトバッファB(LB)を選択する。
【0070】
(ステップST27)
続いて、ステップST27の際、データ振り分け部78は、上記ステップST23の際に更新可能性”小”と予測された場合には、GC用ライトバッファC(LC)を選択する。
【0071】
(ステップST28)
続いて、ステップST28の際、ブロック選択部77は、GC用ライトバッファA〜C(GCLA〜GCLC)に対応する論理ブロック(LEB)の空き領域が十分か否かを判定する。
【0072】
(ステップST29)
続いて、ステップST29の際、ブロック選択部77は、上記ステップST28においてGC用ライトバッファA〜Cに対応する論理ブロック(LEB)の空き領域が十分でないと判定された場合(No)、対応する論理ブロック(LEB)を変更する。
【0073】
(ステップST30)
続いて、ステップST30の際、ブロック選択部77は、上記ステップST28においてGC用ライトバッファA〜Cに対応する論理ブロック(LEB)の空き領域が十分あると判定された場合(Yes)、同様に、追記方式により、論理ブロック(LEB)にGC用ライトバッファA〜Cに振り分けられたデータの書き込みを行って、この動作を終了する(End)。
【0074】
尚、続いて、論理ブロック(LEB)に追記方式にて書き込まれたデータは、図示しないメモリコントローラにより、論理物理変換テーブルを参照することにより、不揮発性メモリ61〜6nの対応する物理アドレスの物理ブロックに、同様の追記方式により書き込まれる。
【0075】
上記のように、本実施形態では、ガーベジコレクション動作の際に、カラーリングテーブル22を参照することにより、最後にアクセスされた時刻から、今後アクセスされる可能性を予測した上で、移動先の論理ブロック(LEB)を決定することができる。最後にアクセスされた時刻が最近なものほど、今後更新される可能性が高いと判断することができるからである。そのため、上記本例に係る追記方式のデータ書き動作に加えた、このガーベジコレクション動作によって、不揮発性メモリ61〜6nの有効利用な領域が増加するので、フラグメンテーションを更に改善することができる。
<3.作用効果>
本実施形態に係るメモリ管理装置およびメモリ管理方法によれば、少なくとも下記(1)乃至(2)の効果が得られる。
【0076】
(1)フラグメンテーションの発生を抑制でき、メモリの有効利用に有利である。
【0077】
上記のように、本例に係るメモリ管理装置3は、データ書き込み動作の際に、データ振り分け部78が、カラーリングテーブル22を参照することによるデータの属性から、データの更新頻度を予測し、変数に基づいて、この変数に対応するライトバッファを決定する(ST13)。尚、変数に対応するライトバッファを決定する際には、データの更新頻度に限らず、データの消去頻度等でも良い。
【0078】
本例の場合、データ振り分け部78は、上記ステップST12において算出された更新頻度を表す変数(0〜4)に基づいて、変数(0〜4)に対応するライトバッファA〜E(LA〜LE)を決定する。更新頻度を表す変数(0〜4)は、本例の場合、順次変数が大きくなるほど更新頻度が低くなるとする。そのため、変数(0〜4)に対応するライトバッファA〜E(LA〜LE)は、順次更新頻度が低くなる。即ち、本例の場合では、ライトバッファA(LA)が、最も更新頻度が高いデータが振り分けられる。
【0079】
さらに、メモリ管理装置3は、「追記方式」により、論理ブロック(LEB)にライトバッファA〜E(LA〜LE)に振り分けられたデータの書き込みを行う(ST16)。
【0080】
その結果、不揮発性メモリ61〜6nには、対応する物理アドレスの物理ブロック(PEB)に、同様の追記方式により、更新頻度に応じたデータがブロックごとに集合して書き込まれる。
【0081】
例えば、本例に係る追記方式によるデータ書き込み後の物理ブロック(PEB)は、図6のように示される。
【0082】
図示するように、物理ブロック1(PEB1)には、更新頻度が低いデータB1〜B3が、物理アドレスPAA00〜PAA11にそれぞれ書き込まれている。
【0083】
物理ブロック2(PEB2)には、更新頻度が低いデータB4が、物理アドレスPAA00に書き込まれている。
【0084】
物理ブロック3(PEB3)は、空き物理ブロックである。
【0085】
物理ブロック4(PEB4)には、更新頻度がより高いデータA1〜A3が、物理アドレスPAA00〜PAA11にそれぞれ書き込まれている。
【0086】
物理ブロック5(PEB5)には、更新頻度がより高いデータA4が、物理アドレスPAA00に書き込まれている。
【0087】
このように、本例に係る追記方式のデータ書き込み動作によれば、更新頻度に応じてデータを不揮発性メモリ61〜6nの物理ブロック(PEB)ごとに振り分けることができる。
【0088】
加えて、本例に係るメモリ管理装置3は、ガーベジコレクション動作の際においても、カラーリングテーブル22を用いてデータ振り分けを行い(ST24)、追記方式にてデータ書き込みを行う(ST30)。
【0089】
上記ステップST24の際のカラーリングテーブル22を用いてデータ振り分けは、参照した最終アクセス時刻により、更新可能性を予測することにより行われる。より具体的には、本例の場合、参照した最終アクセス時刻により、以下の3つの更新可能性(大,中,小)を予測し、GC用ライトバッファA〜C(GCLA〜GCLC)にそれぞれ振り分けられる。
【0090】
その結果、例えば、本例に係るデータA(更新頻度が高い)を更新した後の物理ブロック(PEB)は、図7のように示される。
【0091】
図示するように、まず、更新頻度が高いデータA1〜A4が固めて振り分けられた物理ブロック4(PEB4)および物理ブロック5(PEB5)では、データA1〜A4が更新されるため、データA1〜A4がデータB1〜B4よりもまず先に、別の物理ブロック(ここでは図示せず)に移動される。
【0092】
続いて、更新頻度が低いデータB1〜B4が固めて振り分けられた物理ブロック1(PEB1)および物理ブロック2(PEB2)では、データB1〜B4が更新されるため、データB1〜B4がデータA1〜A4に続いて、別の物理ブロックに移動される(ここでは図示せず)。
【0093】
このように、追記方式において、更新頻度に応じて振り分けられたデータが、物理ブロックごとに固まって書き込まれるため、Dirty領域の発生を抑制でき、フラグメンテーションの発生を防止できる。
【0094】
[比較例]
一方、比較例として、追記方式において、本例のような上記データ属性に基づきデータ振り分けを行わない場合のデータ書き込み後の物理ブロック(PEB)は、例えば、図8のように示される。
【0095】
図示するように、比較例では、更新頻度ごとにデータが振り分けられず、データが物理ブロックに書き込まれる。
【0096】
そのため、例えば、物理ブロック1(PEB1)には、更新頻度が低いデータB1,B2および更新頻度が高いデータA1が、物理アドレスPAA00〜PAA11にランダムに書き込まれている。
【0097】
物理ブロック2(PEB2)には、更新頻度が低いデータB3,B4および更新頻度が高いデータA2が、物理アドレスPAA00等にランダムに書き込まれている。
【0098】
物理ブロック3(PEB3)には、更新頻度が高いデータA1のみが、物理アドレスPAA00に書き込まれている。
【0099】
物理ブロック4(PEB4)には、更新頻度が高いデータA4のみが、物理アドレスPAA11にランダムに書き込まれている。
【0100】
物理ブロック5(PEB5)は、空き物理ブロックである。
【0101】
このように、比較例に係るデータ書き込み動作によれば、更新頻度にデータが振り分けられず、物理ブロック(PEB)にデータが書き込まれている。
【0102】
その結果、その後、物理ブロック(PEB)にランダム書き込まれたデータは、更新頻度ごとに別のブロックに移動されるため、更新ごとにランダムなDirty領域が発生する。
【0103】
例えば、比較例に係るデータA(更新頻度が高い)を更新した後の物理ブロック(PEB)は、図9のように示される。
【0104】
図示するように、まず、更新頻度が高いデータA1〜A4が書き込まれた物理ブロック1〜4(PEB1〜PEB4)において更新されるため、データA1〜A4がデータB1〜B4よりもまず先に、別の物理ブロック(ここでは図示せず)に移動される。
そのため、Dirty領域が増大し、フラグメンテーションが発生する点で不利である。
【0105】
例えば、図示する比較例では、更新頻度が高いデータA1〜A4が更新されると、物理ブロック1,2(PEB1,2)中には、2つのDirty領域が増大するため、フラグメンテーションが発生する。このような場合は、続くデータB1〜B4の更新の場合でも同様に発生し得る。
【0106】
(2)書込み効率(WA)および情報処理装置1のシステム全体の性能を向上できる。
【0107】
上記のように、本例に係るメモリ管理装置3は、ガーベジコレクション動作の際においても、カラーリングテーブル22を用いてデータ振り分けを行い(ST24)、追記方式にてデータ書き込みを行う(ST30)。
【0108】
上記ステップST24の際のカラーリングテーブル22を用いてデータ振り分けは、参照した最終アクセス時刻により、更新可能性を予測することにより行われる。より具体的には、本例の場合、参照した最終アクセス時刻により、以下の3つの更新可能性(大,中,小)を予測し、GC用ライトバッファA〜C(GCLA〜GCLC)にそれぞれ振り分けられる。
【0109】
<更新可能性の予測方法例>
最終更新時刻が1日以上前の場合 :更新可能性小
最終更新時刻が12時間以上前の場合:更新可能性中
それ以外の場合 :更新可能性大
GC用ライトバッファA〜C(GCLA〜GCLC)に振り分けられたデータは、上記と同様に、追記方式により不揮発性メモリ61〜6nの物理ブロック(PEB)に書き込まれる。
【0110】
そのため、上記データ書き込み動作に加え、無効データが多い物理ブロック中の有効データを他の物理ブロックに移動し、無効データが多い物理ブロックを消去可能とし、不揮発性メモリ61〜6n中の有効領域を増やすことができる点で有利である。
【0111】
ここで、ガーベジコレクションが多くなりすぎることは、書込み効率(WA:Write Amplification)の向上の観点からは、望ましくない。ガーベジコレクションが増大すると、不揮発性メモリ(NAND型フラッシュメモリ)61〜6nの特性や、システムの実装方式によって発生する書き込みの増分が必要となるため、書込み効率(WA)が低減するからである。加えて、ガーベジコレクションが多発すると、ガーベジコレクション処理についてMMU41〜MMU44を多く使用する必要があり、情報処理装置1のシステム全体の性能劣化につながる。
【0112】
例えば、上記図9に示した比較例の場合では、上書き方式により、物理ブロック(PEB)にデータが書き込まれるため、物理ブロック1,2(PEB1、2)に2つのDirty領域が発生する。その結果、Dirty領域の発生のたびに、ガーベジコレクション動作が必要となり、書込み効率(WA)が低減し、情報処理装置1のシステム全体の性能が劣化する点で、不利である。
【0113】
これに対して本例では、上記図7に示したように、GC用ライトバッファA〜C(GCLA〜GCLC)に振り分けられたデータは、追記方式により不揮発性メモリ61〜6nの物理ブロック(PEB)に書き込まれるため、Dirty領域の発生を抑制できるから、ガーベジコレクション動作が多くなることもない。その結果、書込み効率(WA)を向上でき、情報処理装置1のシステム全体の性能を向上できる点で、有利である。
【0114】
より具体的に、本例および比較例における、Dirty領域サイズは、例えば、図10のように示される。図10では、時間(1/10分)とデータ量(Byte)との関係において、実線は本例(上記フラグメンテーション抑制有)の場合を示し、破線は比較例(上記フラグメンテーション抑制無)の場合を示している。ここで、図10中、time 7[1/10分]近傍において、いずれもダーティ領域のデータ量が小さくなっているのは、有効データが消去されると、一時的にDirty領域が解放される場合があるからである。
【0115】
図示するように、いずれの時間(1〜15[1/10分])においても、本例の方が、比較例に比べ、Dirty領域のデータ量を大きく低減できていることは明らかである。
【0116】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0117】
3…メモリ管理装置、7…処理部、77…ブロック選択部、78…データ振り分け部、LA〜LE…ライトバッファ、GCLA〜GCLE…GC用ライトバッファ、65…メインメモリ、61〜6n…不揮発性メモリ、5…揮発性メモリ。

【特許請求の範囲】
【請求項1】
不揮発性半導体メモリと揮発性半導体メモリとを備えるメインメモリを管理するメモリ管理装置であって、
前記不揮発性半導体メモリへのデータ書き込み動作の際に、書き込み対象のデータについて、該データのデータ属性により決定される書き込み頻度についての情報に基づき、前記不揮発性半導体メモリ上の書き込み領域の振り分けを行う振り分け部と、
前記振り分けられたデータを、追記方式により前記不揮発性半導体メモリに書き込む制御部と
を具備することを特徴とするメモリ管理装置。
【請求項2】
前記振り分け部は、前記不揮発性半導体メモリ上のデータのガーベジコレクション動作の際に、ガーベジコレクション対象のデータについて、該データが最終アクセスされた時刻についての情報に基づき、前記不揮発性半導体メモリ上の該データの移動先の振り分けを行い、
前記制御部は、前記振り分けられたデータを、追記方式により前記不揮発性半導体メモリに書き込む、ように更に制御すること
を特徴とする請求項1に記載のメモリ管理装置。
【請求項3】
前記データ書き込み動作の際に、前記データ属性により決定される書き込み頻度についての情報に基づき算出される変数に対応して配置される複数のライトバッファを更に具備し、
前記振り分け部は、前記複数のライトバッファに、前記算出された変数に基づいてデータを振り分けること
を特徴とする請求項1または2に記載のメモリ管理装置。
【請求項4】
前記ガーベジコレクション動作の際に、前記更新可能性に対応して配置される複数のガーベジ用ライトバッファを更に具備し、
前記振り分け部は、前記更新可能性に基づいて、対応する前記複数のガーベジ用ライトバッファにデータを振り分けること
を特徴とする請求項3に記載のメモリ管理装置。
【請求項5】
前記振り分け部は、前記データ属性の情報における静的書き込み頻度を更新頻度を表す変数として用い、または前記静的書き込み頻度を更新頻度を表す変数に近似して段階を減らした変数を用い、前記複数のライトバッファにデータ振り分けを行うこと
を特徴とする請求項2乃至4のいずれか1項に記載のメモリ管理装置。
【請求項6】
不揮発性半導体メモリと揮発性半導体メモリとを備えるメインメモリを管理する方法であって、
前記不揮発性半導体メモリへのデータ書き込み動作の際に、書き込み対象のデータについて、該データのデータ属性により決定される書き込み頻度についての情報に基づき、前記不揮発性半導体メモリ上の書き込み領域の振り分けを行う第1ステップと、
前記振り分けられたデータを、追記方式により前記不揮発性半導体メモリに書き込む第2ステップとを具備すること
を特徴とするメモリ管理方法。
【請求項7】
前記不揮発性半導体メモリ上のデータのガーベジコレクション動作の際に、ガーベジコレクション対象のデータについて、該データが最終アクセスされた時刻についての情報に基づき、前記不揮発性半導体メモリ上の該データの移動先の振り分けを行う第3ステップと、
前記振り分けられたデータを、追記方式により前記不揮発性半導体メモリに書き込む第4ステップとを更に具備すること
を特徴とする請求項6に記載のメモリ管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−33002(P2012−33002A)
【公開日】平成24年2月16日(2012.2.16)
【国際特許分類】
【出願番号】特願2010−172050(P2010−172050)
【出願日】平成22年7月30日(2010.7.30)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】