JP2012203443A - メモリシステムおよびメモリシステムの制御方法 - Google Patents
メモリシステムおよびメモリシステムの制御方法 Download PDFInfo
- Publication number
- JP2012203443A JP2012203443A JP2011064554A JP2011064554A JP2012203443A JP 2012203443 A JP2012203443 A JP 2012203443A JP 2011064554 A JP2011064554 A JP 2011064554A JP 2011064554 A JP2011064554 A JP 2011064554A JP 2012203443 A JP2012203443 A JP 2012203443A
- Authority
- JP
- Japan
- Prior art keywords
- data
- physical
- physical block
- logical
- memory system
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】信頼性を向上したメモリシステムを提供する。
【解決手段】実施形態のメモリシステム1は、ブロックを複数有する不揮発性メモリ2と、キャッシュ3と、ホスト7が指定する論理アドレスと不揮発性メモリ上のデータ位置を指定する物理アドレスの対応を示す論物変換テーブルと、論物変換テーブルに対応する論理アドレスを有するブロック毎の消去回数を保持する消去回数テーブルを備える。メモリシステムは、ホストが削除対象となる論理アドレスを通知した場合に、論物変換テーブルにてそれに対応する物理アドレスが指定する削除対象領域を含む削除対象ブロックの消去回数を取得し、当該消去回数の所定の割合以下の消去回数を有する少消去ブロックが消去回数テーブルに存在する場合には、少消去ブロック内の有効データのキャッシュへの読み出しおよび削除対象領域への書き込みを実行し、少消去ブロック内の有効データを無効化するコントローラ6を備える。
【選択図】図1
【解決手段】実施形態のメモリシステム1は、ブロックを複数有する不揮発性メモリ2と、キャッシュ3と、ホスト7が指定する論理アドレスと不揮発性メモリ上のデータ位置を指定する物理アドレスの対応を示す論物変換テーブルと、論物変換テーブルに対応する論理アドレスを有するブロック毎の消去回数を保持する消去回数テーブルを備える。メモリシステムは、ホストが削除対象となる論理アドレスを通知した場合に、論物変換テーブルにてそれに対応する物理アドレスが指定する削除対象領域を含む削除対象ブロックの消去回数を取得し、当該消去回数の所定の割合以下の消去回数を有する少消去ブロックが消去回数テーブルに存在する場合には、少消去ブロック内の有効データのキャッシュへの読み出しおよび削除対象領域への書き込みを実行し、少消去ブロック内の有効データを無効化するコントローラ6を備える。
【選択図】図1
Description
本発明の実施形態は、メモリシステムおよびメモリシステムの制御方法に関する。
オペレーティングシステム(OS)上において外部記憶装置(例えばハードディスク、ソリッドステートドライブ(SSD:Solid State Drive))上のファイルデータが削除される場合、OS上でのデータの管理情報が削除されるだけで、外部記憶装置からは実際にはデータが削除されない。OS上でデータ削除のたびに外部記憶装置上の削除処理が行われるわけではないので、外部記憶装置上の削除処理が行われない分、動作のパフォーマンスが向上する。この方式は特に、アクセスの遅いハードディスクドライブにおいて有効であった。
一方、OS上では削除したはずのデータが、外部記憶装置上ではまだ存在している有効なデータであると認識されているため(以後、このようなデータを「無効データ」と呼ぶ)、外部記憶装置上でデータの存在しない領域が、OSが認識している空き領域よりも常に少なくなってしまう。特に、外部記憶装置上での空き領域の枯渇は、論理アドレスとディスクの物理アドレスがかならずしも一対一で対応しないソリッドステートドライブ(SSD)においてウェアレベリングを実行するときなどに大きな問題となる場合がある。
このような問題点を列挙すると、例えば、サイズの小さな無効データがSSD領域の各所に分散している状態で、メモリシステムにデータ書き込みを行う場合、空き領域を検索したり確保したりする処理に負荷がかかり、書き込みのパフォーマンスが著しく劣化することがあげられる。また、無効データが多くメモリシステム上での空き領域が枯渇している状況で書き込みが行われると、特定の領域に書き込みが集中して、メモリシステムの信頼性が大きく低下するということもあげられる。このような問題は、OSでデータ削除が行われた場合に、メモリシステムにデータ削除通知を行うことで回避することができる。
本発明の実施形態は、信頼性を向上したメモリシステムを提供することを目的とする。
本発明の実施形態のメモリシステムは、データ消去の単位である物理ブロックを複数個有する不揮発性メモリと、キャッシュメモリと、ホストが指定する論理アドレスと前記不揮発性メモリ上のデータの位置を指定する物理アドレスとの対応を示す論物変換テーブルと、前記論物変換テーブルにて対応する論理アドレスを有する物理ブロック毎のデータ消去回数を保持する消去回数管理テーブルを備える。メモリシステムは、前記ホストが削除対象となる論理アドレスを通知した場合に、前記論物変換テーブルにおいて当該論理アドレスに対応する物理アドレスが指定する削除対象データ領域を含む削除対象物理ブロックのデータ消去回数を取得し、当該データ消去回数の所定の割合以下のデータ消去回数を有する少消去物理ブロックが前記消去回数管理テーブルに存在する場合には、前記少消去物理ブロック内の有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行し、前記少消去物理ブロック内の前記有効データを無効化するメモリコントローラを備える。
以下に添付図面を参照して、実施形態にかかるメモリシステム、およびメモリシステムの制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステム1の構成を示すブロック図である。メモリシステム1はたとえばSSDである。図示するように、メモリシステム1は、パーソナルコンピュータなどのホスト(Host)7と接続され、ホスト7の外部記憶装置として機能する。ここでは、ホスト7とメモリシステム1との間は、一例として、ATA(Advanced Technology Attachment)規格に準拠した通信インターフェースで接続されているものとする。メモリシステム1がホスト7から受信する書き込み/読み出し要求および後述のデータ削除通知は、LBA(Logical Block Addressing)で定義されたアクセス対象の先頭アドレスとアクセス対象の領域の範囲を示すセクタサイズとが含まれている。
図1は、第1の実施形態のメモリシステム1の構成を示すブロック図である。メモリシステム1はたとえばSSDである。図示するように、メモリシステム1は、パーソナルコンピュータなどのホスト(Host)7と接続され、ホスト7の外部記憶装置として機能する。ここでは、ホスト7とメモリシステム1との間は、一例として、ATA(Advanced Technology Attachment)規格に準拠した通信インターフェースで接続されているものとする。メモリシステム1がホスト7から受信する書き込み/読み出し要求および後述のデータ削除通知は、LBA(Logical Block Addressing)で定義されたアクセス対象の先頭アドレスとアクセス対象の領域の範囲を示すセクタサイズとが含まれている。
メモリシステム1は、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDフラッシュメモリと略す)2と、揮発性半導体メモリとしてのDRAMまたはSRAMなどからなるキャッシュメモリ3と、ホスト7とNANDフラッシュメモリ2との間でキャッシュメモリ3を介してデータ転送制御を行うとともにメモリシステム1内の各構成要素を制御するメモリシステムコントローラ6と、ホスト7との間の通信インターフェースの制御を実行するホストインターフェースコントローラであるインターフェース5とを備えて構成されている。なお、キャッシュメモリ3はNANDフラッシュメモリ2内のキャッシュ領域であっても構わない。また、キャッシュメモリ3はFeRAM、MRAMなどの不揮発性半導体メモリであっても構わない。
OSでデータ削除が行われた場合に、ホスト7がメモリシステム1に発行するデータ削除通知とは、たとえば、INCITS ATA8−ACSで採用されたData Set Management Command(通称トリム(TRIM)コマンド)である。これは、OS上でデータが削除された場合、削除されたデータの存在する論理アドレス領域をメモリシステムに通知することにより、以後メモリシステム上でもその領域を空き領域として扱うことができる方式である。
ホスト7から発行されたデータ削除通知を処理する(トリムコマンドを実行する)場合には、メモリシステム1は、メモリシステムコントローラ6が制御するデータ管理領域にアクセスして該当領域を無効化する処理を行う。無効化処理では、メモリシステムの管理情報を書き換えて該当領域が無効であることにすれば良く、該当領域のデータそのものは、実際には消しても消さなくてもよい。
NANDフラッシュメモリ2内部における書き換え回数分布の極端な偏りの発生により特定の領域が摩耗して動作不能になることを防ぐため、ホスト7からの書き込み要求時には、書き換え回数が少ない領域に優先して書き込みを行い、書き換え回数分布を平滑化するスタティックウェアレベリングという書き込み方式が存在する。削除通知処理を行うことで、メモリシステム上に空き領域を確保でき、スタティックウェアレベリングを行う対象領域の選択肢が増加するため、削除通知方式により信頼性が向上することがある。ただし、ディスク空き領域が少ない場合や空き領域それぞれの書き換え回数分布のばらつきがあまり存在しない場合には、スタティックウェアレベリングの効果は限定的である。
一方、頻繁に書き込みが行われる第1の領域と、あまり書き込みが行われない第2の領域に関して、第1の領域のデータを第2の領域にコピーし、第2の領域のデータを第1の領域にコピーすることで、書き換え回数の領域毎のばらつきを平滑化して信頼性を向上させるダイナミックウェアレベリングという手法もある。ダイナミックウェアレベリングはスタティックウェアレベリングと異なり、その効果は空き領域の量に依存しない。しかし、領域書き換えが余分に発生することにより、かえってメモリシステムの寿命を縮めてしまうこともある。また、動作中にダイナミックウェアレベリングが発生することでシステムのパフォーマンスを低下させる場合がある。
本実施形態では、メモリシステム1がホスト7からのデータ削除通知(トリム要求)を受信した際に、削除通知対象領域に比べて相対的に書き込み頻度の低い領域の有効データを削除通知対象領域にコピーし、当該書き込み頻度の低い領域のデータを無効化する。データが無効化された領域はフリーブロックになる可能性が高くなるので、これにより領域ごとの書き込みばらつきを平滑化することができる。即ち、スタティックウェアレベリングをさらに効果的に実行することが可能となる。
本実施形態のメモリシステムの制御方法の概念の概略を論理アドレス空間と対応する物理アドレス空間にわけて説明した図が図2である。ホスト7から、論理アドレス空間上の削除通知対象領域(領域α)に関する削除通知を受信すると、削除通知はインターフェース5を介してメモリシステムコントローラ6に通知される。削除通知されたメモリシステムコントローラ6はキャッシュメモリ3上の管理テーブル(論物変換テーブルおよび消去回数管理テーブルを含む)を参照し、領域αに対応する物理アドレスが示すNANDフラッシュメモリ2上の物理領域Aを特定すると共に、領域Aに含まれる各小領域の過去にわたる消去(書き換え)回数を取得する。論物変換テーブル(論理アドレス物理アドレス変換テーブル)はホスト7が指定する論理アドレスとNANDフラッシュメモリ2上のデータの位置を指定する物理アドレスとの対応を示すテーブルであり、消去回数管理テーブルは論物変換テーブルにおいて対応する論理アドレスを有する物理ブロック毎のデータ消去回数を保持するテーブルである。また、消去回数管理テーブルとして対応する論理アドレスの有無にかかわらずNANDフラッシュメモリ2上の物理ブロック毎のデータ消去回数を保持するテーブルであってもかまわない。
メモリシステムコントローラ6は領域A以外のNANDフラッシュメモリ2上の領域であってかつ有効なデータを保持するNANDフラッシュメモリ2上の領域の消去回数を取得する。領域Aの消去回数に比べて消去回数が所定の割合よりも少ない領域Bが存在し、かつ領域Bの合計のデータサイズが領域A以下である場合は領域Bの物理アドレスを取得し、領域Bの有効なデータをキャッシュメモリ3に読み出す(図2「ステップ1」)。上記所定の割合はシステム設計時に予め設定するなどしてもよい。領域Bのデータサイズが領域Aよりも大きい場合は、領域Aよりもデータサイズが小さくなるよう消去回数の少ない順に選択して領域Bとする。図示したように領域BはNANDフラッシュメモリ2上に分散して存在していてもかまわない。そして、領域Bから読み出した有効なデータを領域Aに書き込む(図2「ステップ2」)。領域Bのデータのコピーで埋まらない領域Aの部分がある場合は、管理テーブルを書き換えてその部分領域を追記可能な未書き込み領域とする。そして、メモリシステム1は領域Bを無効化処理する(図2「ステップ3」)。
以上の動作を通じて、削除通知対象領域である領域Aのかわりに書き換え回数が少ない領域Bを解放することで、次の書き込み以降に領域Bがスタティックウェアレベリングの対象になり、メモリシステム全体の書き換え回数分布が平滑化し、メモリシステム1の信頼性が向上する。
上記した本実施形態にかかるメモリシステム1の制御方法について、図3に示したフローチャート、および図4、図5の概念図を用いてさらに詳細に以下で説明する。図4及び図5は、本実施形態のメモリシステムの制御方法の概念を論理アドレス空間と対応する物理アドレス空間にわけてより詳細に説明した図である。これによりホスト7から削除通知を受信した際に、メモリシステム1の各領域の消去回数分布を平滑化することが可能となる。
ホスト7から、削除通知対象である論理アドレス領域αに関する削除通知を受信すると(ステップS101:Yes)、メモリシステムコントローラ6は管理テーブルを参照する。管理テーブルは例えば図1のキャッシュメモリ3上に管理されている。管理テーブルは、論理アドレスとNANDフラッシュメモリ2上のデータの位置を指定する物理アドレスとの対応を示す図6に示すような論物変換テーブルを含んでいる。メモリシステムコントローラ6は図6の論物変換テーブルを用いて、論理アドレス領域αに対応する物理アドレスのNANDフラッシュメモリ2上の領域A、および領域Aのデータを含む全てのNAND物理ブロック群を特定する(ステップS102)(図4「ステップ1」、または、図5「ステップ1」)。NAND物理ブロックはデータ消去の単位であり、ステップS102で特定される物理ブロック群は一般には1つまたは複数の物理ブロックとなる。以下では説明を簡易にするために、図4および図5の「ステップ1」に示すように領域Aのデータは1つのNAND物理ブロックXに含まれているとして説明する。
領域Aのデータが1つのNAND物理ブロックXに含まれているとしても、領域Aが物理ブロックXの一部である図4の場合と、領域Aが物理ブロックXの全体である図5の場合とでは、以下で説明するように処理が異なってくる。領域Aが複数のNAND物理ブロック群に分散して含まれている一般の場合は、それぞれの物理ブロックに対して以下の処理(図4或いは図5に示した処理)が実行される。
上記した管理テーブルは、図6の論物変換テーブルにおいて対応する論理アドレスを有する物理ブロックに対して、物理ブロック毎のデータ消去回数を保持する図7に示すような消去回数管理テーブルも含んでいる。そして次に、メモリシステムコントローラ6は、キャッシュメモリ3上に管理されている図7の消去回数管理テーブルからステップS102で特定された物理ブロックXのデータ消去回数を取得する(ステップS103)。そして、メモリシステムコントローラ6は物理ブロックX以外の有効なデータを持つ物理ブロックの消去回数を管理テーブルから取得し、物理ブロックXに対して消去回数が極端に少ない、例えば、物理ブロックXの消去回数の所定の割合以下のデータ消去回数を有する物理ブロック群Y(少消去物理ブロック)が存在するかどうかを判定する(ステップS104)。この所定の割合はシステム設計時などに設定しておく。なおステップS102において、領域Aのデータを含むとして特定された物理ブロックが複数の物理ブロックからなる物理ブロック群である場合は、ステップS104では、当該物理ブロック群以外の有効なデータを持つ物理ブロックの消去回数を管理テーブルから取得し、当該物理ブロック群それぞれの消去回数の所定の割合以下のデータ消去回数を有する物理ブロック群Y(「少消去物理ブロック」)が存在するかどうかを当該物理ブロック群のそれぞれの物理ブロック毎に判定することになる。以下再び、領域Aのデータは1つのNAND物理ブロックXに含まれているとして説明する。
「少消去物理ブロック」が存在しない場合(ステップS104:No)は、メモリシステムコントローラ6は、領域Aの物理アドレスの対応関係を論物変換テーブルから削除するか、あるいは論物変換テーブルにおいて領域Aの全物理アドレスをブランクに変えることによって、領域Aを解放する(ステップS11A)。メモリシステムコントローラ6は、領域Aを含む物理ブロックを指定する物理アドレスが論物変換テーブル(図6)に含まれているかどうかを判定し、当該物理ブロックを指定する物理アドレスが全く含まれていない場合は、 NAND物理ブロック内の全てのデータが無効である物理ブロックが新たに発生したことになるため、これをフリーブロックとして管理テーブルがさらに備えるフリーブロック管理テーブル(図8)に登録し(ステップS114)、これ以降新たにホスト7から書き込み命令を受信した場合は、このブロックを書き込み対象として選んでよい。
「少消去物理ブロック」が存在する場合(ステップS104:Yes)は、ステップS105に進む。ステップS105では、領域Aが物理ブロックXの一部である(図4の場合)(ステップS105:No)か、物理ブロックXの全体である(図5の場合)(ステップS105:Yes)かのいずれであるかが判定される。
図4の場合(ステップS105:No)は、物理ブロックXの有効な全データからなり、かつそこから領域Aを除外した領域を領域Cと定義する(領域Cは削除通知処理後も有効なデータを保持し続けることになる)。ブロック群Yに含まれる有効なデータからなり、かつ領域Cとの合計サイズが物理ブロックX(1ブロック)のサイズ以下となる領域(領域B)を選択する(ステップS106)。即ち、
(領域Cのサイズ)+(領域Bのサイズ)≦(物理ブロックXのサイズ)
が成立している。メモリシステムコントローラ6は、選択した領域Bの物理アドレス情報を取得する(ステップS106)。ここで、領域Bは、消去回数が少ないブロックから順に優先し、可能ならできるだけ少数のブロック数で構成されるよう選定するのが好ましい。
(領域Cのサイズ)+(領域Bのサイズ)≦(物理ブロックXのサイズ)
が成立している。メモリシステムコントローラ6は、選択した領域Bの物理アドレス情報を取得する(ステップS106)。ここで、領域Bは、消去回数が少ないブロックから順に優先し、可能ならできるだけ少数のブロック数で構成されるよう選定するのが好ましい。
メモリシステムコントローラ6は、領域Cの全データ(データc)および領域Bの全データ(データb)をキャッシュメモリ3上に読み出す(ステップS107)。具体的には、先に物理ブロックXの全データをキャッシュメモリ3上に一旦読み出し、その中のトリム要求の対象となるデータ領域Aのデータ上に領域Bの全データ(データb)を上書きする。リードモディファイライト(Read-Modify-Write)のリードモディファイまでを実行する(ステップS107)。その後ステップS110に進む。
図5の場合(ステップS105:Yes)は、ブロック群Yに含まれる有効なデータであって、合計サイズが物理ブロックX(1ブロック)のサイズ以下となる領域(領域B)を選択して、領域Bの物理アドレスを取得する(ステップS108)。メモリシステムコントローラ6は、領域Bの全データ(データb)をキャッシュメモリ3上に読み出す(ステップS109)。その後ステップS110に進む。
ステップS110では、物理ブロックXの全データを消去する。その後、ステップS106、S107を経由してきた場合は、データcおよびデータbをマージしたキャッシュメモリ3上のデータを物理ブロックXに書き込んで(書き戻して)、リードモディファイライトを完了する(ステップS111)(図4「ステップ2」)。ステップS108、S109を経由してきた場合は、キャッシュメモリ3上のデータbを物理ブロックXに書き込む(ステップS111)(図5「ステップ2」)。書き戻した(書き込んだ)データの全サイズは必ずしも物理ブロックXのサイズと等しいとは限らず、物理ブロックXのサイズ未満となる場合があるが、その場合は、残りの領域は未書き込み領域Zとして扱ってよい。未書き込み領域Zはその後にデータを追記することが可能である。
そして、物理ブロックXに書き込んだデータの論理アドレスを物理ブロックXの該当する物理アドレスに関連付けるように、図6の論物変換テーブルを書き換える(ステップS112)。具体的には、ステップS106、S107を経由してきた場合は、データbおよびデータcの論理アドレスを物理ブロックXの物理アドレスに関連付ける。ステップS108、S109を経由してきた場合は、データbの論理アドレスを物理ブロックXの物理アドレスに関連付ける。そして、図7の消去回数管理テーブルの物理ブロックXの消去回数を1増やすよう更新する(ステップS113)。
以上の動作を通じて、データbは領域Bの物理アドレスではなく、物理ブロックX内の物理アドレスに関連付けられていることになり、領域Bの物理アドレスは論理アドレスから参照できない解放状態となる(図4「ステップ3」、または図5「ステップ3」)。すなわち、領域Bの全データは無効となる。領域Bの解放後、メモリシステムコントローラ6は、領域Bを含む物理ブロックを指定する物理アドレスが論物変換テーブル(図6)に含まれているかどうかを判定し、当該物理ブロックを指定する物理アドレスが全く含まれていない場合は、NAND物理ブロック内の全てのデータが無効である物理ブロックが新たに発生したことになるため、これをフリーブロックとして管理テーブルがさらに備えるフリーブロック管理テーブル(図8)に登録し(ステップS114)、これ以降新たにホスト7から書き込み命令を受信した場合は、このブロックを書き込み対象として選んでよい。これにより、次の書き込み以降にスタティックウェアレベリングの対象になり、メモリシステム1全体のブロック消去回数分布が平滑化し、メモリシステム1の信頼性が向上する。
OSがメモリシステム1に対してデータ削除通知をする「ファイル削除が行われる」場合とは、たとえばWindows(登録商標)では「ごみ箱」を空にする場合であり、ユーザーがそのような処理を行う場合は、メモリシステム1へのアクセスがビジーでない場合がほとんどである。よって、本実施形態では、多くの場合、アクセスが少ない時にコピーが発生することになり、メモリシステム1の負荷を分散させ、メモリシステム1の性能を低下させない。メモリシステム1へのアクセスが頻繁に発生する状況下において削除通知を受信した場合は、上記した領域Bのデータの物理ブロックXへのデータコピー動作を必ずしも実行しなくてもよい。たとえば、ホスト7から削除通知を受信したタイミングが、それ以前で最後にホスト7がメモリシステム1にアクセスしてから一定時間以上が経過していた場合にのみ上記説明した動作を行うようにしてもよい。
(第2の実施形態)
図9は、第2の実施形態のメモリシステム1の構成を示すブロック図である。計時機能を有するタイマー8が追加されている点以外は図1と同様の構成である。図9では、タイマー8はメモリシステムコントローラ6と接続しているが、この構成に限定されるものではなく、タイマー8がメモリシステム1の外部に存在してもよい。
図9は、第2の実施形態のメモリシステム1の構成を示すブロック図である。計時機能を有するタイマー8が追加されている点以外は図1と同様の構成である。図9では、タイマー8はメモリシステムコントローラ6と接続しているが、この構成に限定されるものではなく、タイマー8がメモリシステム1の外部に存在してもよい。
本実施形態では、メモリシステム1がホスト7からのデータ削除通知(トリム要求)を受信した際に、メモリシステム1の各領域の有効なデータが最後に書き込まれてから経過した時間を平滑化する方式について説明する。メモリシステム1の中でも、特にNANDフラッシュメモリ2を使用するメモリシステム1(SSD)においては、NANDフラッシュメモリ2に保持されているデータに関して最後に書き込まれてからの時間(書き換え経過時間)が経過すればするほど、データが損失されやすくなる(データリテンション不良)。データリテンション不良は書き換え回数が極端に多くなっている領域において特に顕著となる。よって、極端に古くなったデータを別領域にコピーしなおすことで、各データの書き換え経過時間分布を平滑化することはメモリシステム1のデータ保持における信頼性向上に有効である。
本実施形態のメモリシステムの制御方法の概念の概略を論理アドレス空間と対応する物理アドレス空間にわけて説明した図が図10である。ホスト7から、論理アドレス空間上の削除通知対象領域(領域α)に関する削除通知を受信した際、メモリシステムコントローラ6はキャッシュメモリ3上の管理テーブル(論物変換テーブルおよび書き込み時刻管理テーブルを含む)を参照し、領域αに対応する物理アドレスが示す物理領域Aを含む物理ブロック以外のNANDフラッシュメモリ2上の領域における有効なデータの書き換え経過時間分布を取得する。論物変換テーブルは上述した図6に示したテーブルである。書き込み時刻管理テーブルは、論物変換テーブルにおいて対応する論理アドレスを有する物理アドレスに対して、当該物理アドレスのNANDフラッシュメモリ2上の領域にデータが最後に書き込まれた最終書き込み時刻を保持するテーブルである。また、書き込み時刻管理テーブルとしては、論物変換テーブルでの対応する論理アドレスの有無にかかわらずNANDフラッシュメモリ2上の物理アドレス毎にデータが最後に書き込まれた最終書き込み時刻を保持するテーブルであってもかまわない。
メモリシステムコントローラ6は、領域Aを含む物理ブロック以外の領域に書き込まれたデータであって最終書き込み時刻からの経過時間が極端に長いデータ、例えば、最終書き込み時刻からの経過時間が削除通知時に所定時間以上になっているデータを保有する領域Bが存在し、かつ当該領域Bの合計のデータサイズが領域A以下である場合は領域Bの物理アドレスを取得し、領域Bの有効なデータをキャッシュメモリ3に読み出す(図10「ステップ1」)。上記所定時間はシステム設計時に予め設定するなどしてもよい。領域Bのデータサイズが領域Aよりも大きい場合は、領域Aよりもデータサイズが小さくなるよう経過時間の長い順に取得しこれを領域Bとする。図示したように領域BはNANDフラッシュメモリ2上に分散して存在していてもかまわない。そして、領域Bから読み出した有効なデータを領域Aに書き込む(図10「ステップ2」)。領域Bのデータのコピーで埋まらない領域Aの部分がある場合は、データ管理テーブルを書き換えてその部分領域を追記可能な未書き込み領域とする。そして、メモリシステム1は領域Bを無効化処理する(図10「ステップ3」)。
以上の動作を通じて、領域B上の書き込み経過時間が極端に長いデータを削除通知対象領域である領域Aにコピーすることで、そのデータの書き込み経過時間はゼロにリセットされる。ホスト7から削除通知を受信するたびに、古いデータから順に更新されていくので、データリテンションが改善され、メモリシステム1のデータの信頼性が向上する。
上記した本実施形態にかかるメモリシステム1の制御方法について、図11に示したフローチャート、および図4、図5の概念図を用いてさらに詳細に以下で説明する。図4及び図5は、第1の実施形態のメモリシステムの制御方法の概念を論理アドレス空間と対応する物理アドレス空間にわけてより詳細に説明した図であるが、本実施形態においても同じ図を用いて説明する。本実施形態のメモリシステムの制御方法によりホスト7から削除通知を受信した際に、メモリシステム1の各領域の有効なデータが最後に書き込まれてから経過した時間を平滑化することが可能となる。
メモリシステムの中でも、特にNANDフラッシュメモリを使用するSSDにおいては、NANDフラッシュメモリに保持されているデータに関して最後に書き込まれてからの時間(書きこみ後経過時間)が経過すればするほど、データが損失されやすくなる(データリテンション不良)。データリテンション不良は消去回数が極端に多くなっている領域において特に顕著となる。よって、極端に古くなったデータを別領域にコピーしなおすことで、各データの書きこみ後経過時間分布を平滑化することはメモリシステムのデータ保持における信頼性向上に有効である。
ホスト7から、削除通知対象である論理アドレス領域αに関する削除通知を受信すると(ステップS201:Yes)、メモリシステムコントローラ6は管理テーブルを参照する。管理テーブルは例えば図9のキャッシュメモリ3上に管理されている。管理テーブルは、論理アドレスとNANDフラッシュメモリ2上のデータの位置を指定する物理アドレスとの対応を示す図6に示すような論物変換テーブルを含んでいる。メモリシステムコントローラ6は図6の論物変換テーブルを用いて、論理アドレス領域αに対応する物理アドレスのNANDフラッシュメモリ2上の領域A、および領域Aのデータを含む全てのNAND物理ブロック群を特定する(ステップS202)(図4「ステップ1」、または、図5「ステップ1」)。ステップS202で特定される物理ブロック群は一般には1つまたは複数の物理ブロックとなる。以下では説明を簡易にするために、図4および図5の「ステップ1」に示すように領域Aのデータは1つのNAND物理ブロックXに含まれているとして説明する。
領域Aのデータが1つのNAND物理ブロックXに含まれているとしても、領域Aが物理ブロックXの一部である図4の場合と、領域Aが物理ブロックXの全体である図5の場合とでは、以下で説明するように処理が異なってくる。領域Aが複数のNAND物理ブロック群に分散して含まれている一般の場合は、それぞれの物理ブロックに対して以下の処理(図4或いは図5に示した処理)が実行される。
上記した管理テーブルは、図6の論物変換テーブルにおいて対応する論理アドレスを有する物理ブロックに対して、物理ブロック毎に当該物理ブロックにデータが最後に書き込まれた物理ブロック最終書き込み時刻を保持する図12に示すような書き込み時刻管理テーブルも含んでいる。そして次に、メモリシステムコントローラ6は、削除通知を受信した時刻とキャッシュメモリ3上に管理されている図12の書き込み時刻管理テーブルとからステップS202で特定された物理ブロックX以外の物理ブロックにおける有効なデータの最終書き込み後の経過時間分布を取得する(ステップS203)。書き込み時刻管理テーブルとしては、図12のように物理ブロック毎に管理するよりも更に粒度の細かい物理アドレスの単位で最終書き込み時刻を管理してもよい。
例えば図13に示すように論物変換テーブルにおいて物理アドレスと当該物理アドレスに最終書き込み時刻を併記するようにしてもよい。この場合、図13は論物変換テーブルと書き込み時刻管理テーブルを兼ねたテーブルとなっており、ステップS203では、削除通知を受信した時刻とこのテーブルの最終書き込み時刻からステップS202で特定された物理ブロックX以外の領域に書き込まれている有効なデータの書き込み後の経過時間分布を取得する。なおステップS202において、領域Aのデータを含むとして特定された物理ブロックが複数の物理ブロックからなる物理ブロック群である場合は、ステップS203では、当該物理ブロック群以外に書き込まれている有効なデータの書き込み後の経過時間分布を書き込み時刻管理テーブルから取得する。以下再び、領域Aのデータは1つのNAND物理ブロックXに含まれているとして説明する。
次に、ステップS204において、ステップS203にて取得した経過時間分布の中で経過時間が極端に長い、具体的には、経過時間がシステム設計時などに設定した所定の時間以上となる有効なデータが書き込まれた領域がNANDフラッシュメモリ2上に存在するか否かを判定する。存在しない場合(ステップS204:No)は、メモリシステムコントローラ6は、領域Aの物理アドレスの対応関係を論物変換テーブルから削除するか、あるいは論物変換テーブルにおいて領域Aの全物理アドレスをブランクに変えることによって、領域Aを解放する(ステップS21A)。メモリシステムコントローラ6は、領域Aを含む物理ブロックを指定する物理アドレスが論物変換テーブル(図6)に含まれているかどうかを判定し、当該物理ブロックを指定する物理アドレスが全く含まれていない場合は、 NAND物理ブロック内の全てのデータが無効である物理ブロックが新たに発生したことになるため、これをフリーブロックとして管理テーブルがさらに備えるフリーブロック管理テーブル(図8)に登録し(ステップS214)、これ以降新たにホスト7から書き込み命令を受信した場合は、このブロックを書き込み対象として選んでよい。
存在する場合(ステップS204:Yes)は、ステップS205に進む。存在する場合とは、図12の書き込み時刻管理テーブルを用いているときは、物理ブロックXとは別の物理ブロックの最終書き込み時刻から削除通知時刻が所定時間以上経過していた場合であり、図13の書き込み時刻管理テーブルを用いているときは、物理ブロックX以外の領域を示す特定の物理アドレス(特定物理アドレス)の最終書き込み時刻から削除通知時刻が所定時間以上経過していた場合である。
ステップS205では、領域Aが物理ブロックXの一部である(図4の場合)(ステップS205:No)か、物理ブロックXの全体である(図5の場合)(ステップS205:Yes)かのいずれであるかが判定される。
図4の場合(ステップS205:No)は、物理ブロックXの有効な全データからなり、かつそこから領域Aを除外した領域を領域Cと定義する(領域Cは削除通知処理後も有効なデータを保持し続けることになる)。ステップS204において判定された領域(物理ブロックXとは別の物理ブロック、或いは上記特定物理アドレスが示す領域)に含まれる有効なデータからなり、かつ領域Cとの合計サイズが物理ブロックX(1ブロック)のサイズ以下となる領域(領域B)を選択する(ステップS206)。即ち、
(領域Cのサイズ)+(領域Bのサイズ)≦(物理ブロックXのサイズ)
が成立している。メモリシステムコントローラ6は、選択した領域Bの物理アドレス情報を取得する(ステップS206)。ここで、領域Bは、書きこみ後経過時間の長い順に優先し、できるだけ少数のブロック数で構成されるよう選定するのが好ましい。
(領域Cのサイズ)+(領域Bのサイズ)≦(物理ブロックXのサイズ)
が成立している。メモリシステムコントローラ6は、選択した領域Bの物理アドレス情報を取得する(ステップS206)。ここで、領域Bは、書きこみ後経過時間の長い順に優先し、できるだけ少数のブロック数で構成されるよう選定するのが好ましい。
なお、ステップS204およびS206における経過時間のクライテリアは、たとえば、データリテンション不良がECC訂正回路により十分余裕をもって訂正できるような不良率Fを算出し、書きこみ後経過時間と不良率の関係に関する実測データまたはシミュレーション結果を用いて不良率Fから導かれた書きこみ後経過時間を採用してもよい。
メモリシステムコントローラ6は、領域Cの全データ(データc)および領域Bの全データ(データb)をキャッシュメモリ3上に読み出す(ステップS207)。具体的には、先に物理ブロックXの全データをキャッシュメモリ3上に一旦読み出し、その中のトリム要求の対象となるデータ領域Aのデータ上に領域Bの全データ(データb)を上書きする。リードモディファイライト(Read-Modify-Write)のリードモディファイまでを実行する(ステップS207)。その後ステップS210に進む。
図5の場合(ステップS205:Yes)は、ステップS204において判定された領域(物理ブロックXとは別の物理ブロック、或いは上記特定物理アドレスが示す領域)に含まれる有効なデータであって、合計サイズが物理ブロックX(1ブロック)のサイズ以下となる領域(領域B)を選択して、領域Bの物理アドレスを取得する(ステップS208)。メモリシステムコントローラ6は、領域Bの全データ(データb)をキャッシュメモリ3上に読み出す(ステップS209)。その後ステップS210に進む。
ステップS210では、物理ブロックXの全データを消去する。その後、ステップS206、S207を経由してきた場合は、データcおよびデータbをマージしたキャッシュメモリ3上のデータを物理ブロックXに書き込んで(書き戻して)、リードモディファイライトを完了する(ステップS211)(図4「ステップ2」)。ステップS208、S209を経由してきた場合は、キャッシュメモリ3上のデータbを物理ブロックXに書き込む(ステップS211)(図5「ステップ2」)。書き戻した(書き込んだ)データの全サイズは必ずしも物理ブロックXのサイズと等しいとは限らず、物理ブロックXのサイズ未満となる場合があるが、その場合は、残りの領域は未書き込み領域Zとして扱ってよい。未書き込み領域Zはその後にデータを追記することが可能である。
そして、物理ブロックXに書き込んだデータの論理アドレスを物理ブロックXの該当する物理アドレスに関連付けるように、図6あるいは図13の論物変換テーブルを書き換える(ステップS212)。具体的には、ステップS206、S207を経由してきた場合は、データbおよびデータcの論理アドレスを物理ブロックXの物理アドレスに関連付ける。ステップS208、S209を経由してきた場合は、データbの論理アドレスを物理ブロックXの物理アドレスに関連付ける。そして、図12または図13の書き込み時刻管理テーブルにおいて、ステップS211で物理ブロックXに書き込んだデータの該当する物理ブロックあるいは物理アドレスに対応する最終書き込み時刻を更新する(ステップS213)。
以上の動作を通じて、データbは領域Bの物理アドレスではなく、物理ブロックX内の物理アドレスに関連付けられていることになり、領域Bの物理アドレスは論理アドレスから参照できない解放状態となる(図4「ステップ3」、または図5「ステップ3」)。すなわち、領域Bの全データは無効となる。領域Bの解放後、メモリシステムコントローラ6は、領域Bを含む物理ブロックを指定する物理アドレスが論物変換テーブル(図6)に含まれているかどうかを判定し、当該物理ブロックを指定する物理アドレスが全く含まれていない場合は、NAND物理ブロック内の全てのデータが無効である物理ブロックが新たに発生したことになるため、これをフリーブロックとして管理テーブルがさらに備えるフリーブロック管理テーブル(図8)に登録し(ステップS214)、これ以降新たにホスト7から書き込み命令を受信した場合は、このブロックを書き込み対象として選んでよい。
以上の動作を通じて、書き込み後経過時間が極端に長いデータを削除通知対象領域にコピーすることで、そのデータの書き込み後経過時間はゼロにリセットされる。ホスト7から削除通知を受信するたびに、古いデータから順に更新されていくので、データリテンションが改善され、メモリシステム1のデータの信頼性が向上する。
OSがメモリシステム1に対してデータ削除通知をする「ファイル削除が行われる」場合とは、たとえばWindows(登録商標)では「ごみ箱」を空にする場合であり、ユーザーがそのような処理を行う場合は、メモリシステム1へのアクセスがビジーでない場合がほとんどである。よって、本実施形態では、多くの場合、アクセスが少ない時にコピーが発生することになり、メモリシステム1の負荷を分散させ、メモリシステム1の性能を低下させない。メモリシステム1へのアクセスが頻繁に発生する状況下において削除通知を受信した場合は、上記した領域Bのデータの物理ブロックXへのデータコピー動作を必ずしも実行しなくてもよい。たとえば、ホスト7から削除通知を受信したタイミングが、それ以前で最後にホスト7がメモリシステム1にアクセスしてから一定時間以上が経過していた場合にのみ上記説明した動作を行うようにしてもよい。
(第3の実施形態)
図14および図15は、第3の実施形態のメモリシステム1の構成を示すブロック図である。図14は、第1の実施形態のメモリシステム1の構成を示すブロック図である図1に誤り訂正符号(ECC:Error Correcting Code)を用いてデータの符号化処理および記憶されたデータの復号化処理を行うための誤り訂正回路4が追加されている。図15は、第2の実施形態のメモリシステム1の構成を示すブロック図である図9に誤り訂正回路4が追加されている。本実施形態のメモリシステムの制御方法の概念の概略を論理アドレス空間と対応する物理アドレス空間にわけて説明した図が図16である。
図14および図15は、第3の実施形態のメモリシステム1の構成を示すブロック図である。図14は、第1の実施形態のメモリシステム1の構成を示すブロック図である図1に誤り訂正符号(ECC:Error Correcting Code)を用いてデータの符号化処理および記憶されたデータの復号化処理を行うための誤り訂正回路4が追加されている。図15は、第2の実施形態のメモリシステム1の構成を示すブロック図である図9に誤り訂正回路4が追加されている。本実施形態のメモリシステムの制御方法の概念の概略を論理アドレス空間と対応する物理アドレス空間にわけて説明した図が図16である。
本実施形態においては、第1および第2の実施形態において、削除通知の際にコピーするデータを、誤り訂正回路4を用いて誤り訂正する。コピー元となる領域Bの選定方法など、以下に説明する誤り訂正回路4を用いた処理以外の手順は第1および第2の実施形態で説明した方法と同じである。
領域Bの選定(図3のステップS106、S108、図11のS206、S208)後のキャッシュメモリ3への読み出し(図3のステップS107、S109、図11のS207、S209)においては、該当するデータをNANDフラッシュメモリ2から一旦誤り訂正回路4に入力後、復号化処理にて誤りを訂正して(図16「ステップ1」)からキャッシュメモリ3へ読み出す。誤り訂正を実行するために、あらかじめユーザーデータには符号化による冗長性が含まれている必要がある。キャッシュメモリ3からの書き込み(図3のステップS111、図11のS211)においては、キャッシュメモリ3のデータを誤り訂正回路4にて再び符号化したデータを、削除通知対象論理アドレス領域(領域α)に対応するNANDフラッシュメモリ2上の領域Aに書き込む(図16「ステップ2」)。領域Bのデータのコピーで埋まらない領域Aの部分がある場合は、データ管理テーブルを書き換えてその部分領域を追懐可能な未書き込み領域とする。メモリシステム1はコピー元である領域Bの全データを無効化処理する(図16「ステップ3」)。
また、上記説明した実施形態1乃至3においては、図2、図4、図5、図10および図16に示したように、削除通知対象の論理アドレス領域にはホスト7にとって既に有効なデータが存在しないが、対応するメモリシステム1の物理アドレス上にはメモリシステム1からみて有効なデータが存在すると想定して説明した。しかし、メモリシステム1からみても有効なデータが存在するとは認識していない論理アドレス(LBA)が削除通知対象領域となることも有りうる。即ち、同じくホスト7にとってはデータが無い領域へのトリム要求が行われるのであるが、例えば、ホスト7が一度もデータを書き込んだことが無い論理アドレス、または既に解放されている論理アドレスに対するトリム要求が行われるケースである。この場合、メモリシステム1の内部では、当該論理アドレス(LBA)に対応する物理アドレス(物理ブロック)が存在しない。このような論理アドレス(LBA)は論物変換テーブルに記載が有る場合もあれば無い場合もある。論物変換テーブルに記載がある場合は、対応する物理アドレスの欄は例えばブランクになっていて物理アドレスとの対応は無い。このようなデータ削除通知が、ホスト7からメモリシステム1に対してなされた場合は、メモリシステム1は即座にホスト7に対して処理終了の通知をする、あるいはエラーメッセージ等の応答をするようにすればよい。この場合メモリシステム1は、データ削除通知に対して何も行わないことになる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 NANDフラッシュメモリ、3 キャッシュメモリ、4 誤り訂正回路、5 インターフェース、6 メモリシステムコントローラ、7 ホスト。
Claims (21)
- データ消去の単位である物理ブロックを複数個有する不揮発性メモリと、
キャッシュメモリと、
ホストが指定する論理アドレスと前記不揮発性メモリ上のデータの位置を指定する物理アドレスとの対応を示す論物変換テーブルと、
前記論物変換テーブルにて対応する論理アドレスを有する物理ブロック毎のデータ消去回数を保持する消去回数管理テーブルと、
前記ホストが削除対象となる論理アドレスを通知した場合に、前記論物変換テーブルにおいて当該論理アドレスに対応する物理アドレスが指定する削除対象データ領域を含む削除対象物理ブロックのデータ消去回数を取得し、当該データ消去回数の所定の割合以下のデータ消去回数を有する少消去物理ブロックが前記消去回数管理テーブルに存在する場合には、前記少消去物理ブロック内の有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行し、前記少消去物理ブロック内の前記有効データを無効化するメモリコントローラと
を備えたことを特徴とするメモリシステム。 - データ消去回数がより少ない前記少消去物理ブロックから優先して前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行する
ことを特徴とする請求項1に記載のメモリシステム。 - データ消去の単位である物理ブロックを複数個有する不揮発性メモリと、
キャッシュメモリと、
ホストが指定する論理アドレスと前記不揮発性メモリ上のデータの位置を指定する物理アドレスとの対応を示す論物変換テーブルと、
前記論物変換テーブルにて対応する論理アドレスを有する物理アドレスにデータが最後に書き込まれた最終書き込み時刻を保持する書き込み時刻管理テーブルと、
前記ホストが削除対象となる論理アドレスを通知した通知時刻が、前記論物変換テーブルにおいて当該論理アドレスに対応する物理アドレスが指定する削除対象データ領域を含む削除対象物理ブロックとは別の物理ブロックに対応して前記書き込み時刻管理テーブルに保持された最終書き込み時刻より所定時間以上経過していた場合は、前記別の物理ブロック内の有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行し、前記別の物理ブロック内の前記有効データを無効化するメモリコントローラと
を備えたことを特徴とするメモリシステム。 - 前記書き込み時刻管理テーブルは前記最終書き込み時刻として、前記論物変換テーブルにて対応する論理アドレスを有する物理ブロック毎に当該物理ブロックにデータが最後に書き込まれた物理ブロック最終書き込み時刻を保持し、
前記メモリコントローラは、前記通知時刻が、前記別の物理ブロックの前記物理ブロック最終書き込み時刻より所定時間以上経過していた場合に、前記別の物理ブロック内の前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行し、前記別の物理ブロック内の前記有効データを無効化する
ことを特徴とする請求項3に記載のメモリシステム。 - 前記書き込み時刻管理テーブルは前記最終書き込み時刻として、前記論物変換テーブルにて対応する論理アドレスを有する物理アドレス毎に当該物理アドレスにデータが最後に書き込まれた物理アドレス最終書き込み時刻を保持し、
前記メモリコントローラは、前記通知時刻が、前記別の物理ブロック内の位置を指定する特定物理アドレスの前記物理アドレス最終書き込み時刻より所定時間以上経過していた場合に、当該特定物理アドレスの前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行し、当該特定物理アドレスの前記有効データを無効化する
ことを特徴とする請求項3に記載のメモリシステム。 - より古い前記最終書き込み時刻に対応する前記有効データから優先して前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行する
ことを特徴とする請求項3、4または5に記載のメモリシステム。 - 前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みは、
前記キャッシュメモリが読み出した前記削除対象物理ブロックの全データの中の前記削除対象データ領域の削除対象データに前記キャッシュメモリが読み出した前記有効データを上書きしたデータの、データ消去された前記削除対象物理ブロックへの書き込み
であることを特徴とする請求項1乃至6のいずれか1項に記載のメモリシステム。 - 前記削除対象物理ブロックが全て削除対象である場合は、
前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みは、
前記キャッシュメモリが読み出した前記有効データの、データ消去された前記削除対象物理ブロックへの書き込み
であることを特徴とする請求項1乃至6のいずれか1項に記載のメモリシステム。 - 誤り訂正手段をさらに備え、
前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みは、
前記キャッシュメモリが読み出した前記有効データに対して前記誤り訂正手段が誤り訂正を実行した誤り訂正後のデータを前記削除対象データ領域へ書き込む
ことを特徴とする請求項1乃至8のいずれか1項に記載のメモリシステム。 - 前記キャッシュメモリは、DRAM、SRAMあるいは前記不揮発性メモリ内のキャッシュ領域である
ことを特徴とする請求項1乃至9のいずれか1項に記載のメモリシステム。 - データ消去の単位である物理ブロックを複数個有する不揮発性メモリと、前記不揮発性メモリのデータの制御を行うメモリコントローラとを備えるメモリシステムの制御方法であって、
ホストが指定する論理アドレスと前記不揮発性メモリ上のデータの位置を指定する物理アドレスとの対応を示す論物変換テーブルを記憶し、
前記論物変換テーブルにて対応する論理アドレスを有する物理ブロック毎のデータ消去回数を保持する消去回数管理テーブルを記憶し、
前記ホストが削除対象となる論理アドレスを通知した場合に、前記論物変換テーブルにおいて当該論理アドレスに対応する物理アドレスが指定する削除対象データ領域を含む削除対象物理ブロックのデータ消去回数を取得し、当該データ消去回数の所定の割合以下のデータ消去回数を有する少消去物理ブロックが前記消去回数管理テーブルに存在する場合には、前記メモリコントローラは前記少消去物理ブロック内の有効データを読み出して前記削除対象データ領域へ書き込み、前記少消去物理ブロック内の前記有効データを無効化する
ことを特徴とするメモリシステムの制御方法。 - データ消去回数がより少ない前記少消去物理ブロックから優先して前記有効データを読み出して前記削除対象データ領域へ書き込む
ことを特徴とする請求項11に記載のメモリシステムの制御方法。 - データ消去の単位である物理ブロックを複数個有する不揮発性メモリと、前記不揮発性メモリのデータの制御を行うメモリコントローラとを備えるメモリシステムの制御方法であって、
ホストが指定する論理アドレスと前記不揮発性メモリ上のデータの位置を指定する物理アドレスとの対応を示す論物変換テーブルを記憶し、
前記論物変換テーブルにて対応する論理アドレスを有する物理アドレスにデータが最後に書き込まれた最終書き込み時刻を保持する書き込み時刻管理テーブルを記憶し、
前記ホストが削除対象となる論理アドレスを通知した通知時刻が、前記論物変換テーブルにおいて当該論理アドレスに対応する物理アドレスが指定する削除対象データ領域を含む削除対象物理ブロックとは別の物理ブロックに対応して前記書き込み時刻管理テーブルに保持された最終書き込み時刻より所定時間以上経過していた場合は、前記メモリコントローラは前記別の物理ブロック内の有効データを読み出して前記削除対象データ領域へ書き込み、前記別の物理ブロック内の前記有効データを無効化する
ことを特徴とするメモリシステムの制御方法。 - 前記書き込み時刻管理テーブルは前記最終書き込み時刻として、前記論物変換テーブルにて対応する論理アドレスを有する物理ブロック毎に当該物理ブロックにデータが最後に書き込まれた物理ブロック最終書き込み時刻を保持し、
前記通知時刻が、前記別の物理ブロックの前記物理ブロック最終書き込み時刻より所定時間以上経過していた場合に、前記メモリコントローラは前記別の物理ブロック内の前記有効データを読み出して前記削除対象データ領域へ書き込み、前記別の物理ブロック内の前記有効データを無効化する
ことを特徴とする請求項13に記載のメモリシステムの制御方法。 - 前記書き込み時刻管理テーブルは前記最終書き込み時刻として、前記論物変換テーブルにて対応する論理アドレスを有する物理アドレス毎に当該物理アドレスにデータが最後に書き込まれた物理アドレス最終書き込み時刻を保持し、
前記通知時刻が、前記別の物理ブロック内の位置を指定する特定物理アドレスの前記物理アドレス最終書き込み時刻より所定時間以上経過していた場合に、前記メモリコントローラは前記特定物理アドレスの前記有効データを読み出して前記削除対象データ領域へ書き込み、前記特定物理アドレスの前記有効データを無効化する
ことを特徴とする請求項13に記載のメモリシステムの制御方法。 - より古い前記最終書き込み時刻に対応する前記有効データから優先して読み出して前記削除対象データ領域へ書き込む
ことを特徴とする請求項13、14または15に記載のメモリシステムの制御方法。 - 前記有効データの読み出しおよび前記削除対象データ領域へ書き込みは、
キャッシュメモリが前記削除対象物理ブロックの全データを読み出し、
前記キャッシュメモリが前記有効データを読み出し、
読み出された前記削除対象物理ブロックの全データの中の前記削除対象データ領域の削除対象データに、読み出された前記有効データを前記キャッシュメモリ上にて上書きし、
前記削除対象物理ブロックの全データの読み出し後に、前記削除対象物理ブロックをデータ消去し、
前記キャッシュメモリ上にて上書きされたデータを、データ消去された前記削除対象物理ブロックへ書き込む
ことを含むことを特徴とする請求項11乃至16のいずれか1項に記載のメモリシステムの制御方法。 - 前記削除対象物理ブロックが全て削除対象である場合は、
前記有効データの読み出しおよび前記削除対象データ領域へ書き込みは、
キャッシュメモリが前記有効データを読み出し、
前記削除対象物理ブロックをデータ消去し、
読み出された前記有効データを、データ消去された前記削除対象物理ブロックへ書き込む
ことを含むことを特徴とする請求項11乃至16のいずれか1項に記載のメモリシステムの制御方法。 - 前記有効データの読み出しおよび前記削除対象データ領域へ書き込みは、
読み出された前記有効データに対して誤り訂正を実行し、
前記誤り訂正後のデータを前記削除対象データ領域へ書き込む
ことを特徴とする請求項11乃至18のいずれか1項に記載のメモリシステムの制御方法。 - 前記削除対象物理ブロック内における前記削除対象データ領域のデータ量が所定の値未満の場合は、
前記有効データの読み出しおよび前記削除対象データ領域へ書き込みと前記有効データの無効化を実行しない
ことを特徴とする請求項11乃至19のいずれか1項に記載のメモリシステムの制御方法。 - 前記ホストが最後に前記メモリシステムにアクセスした時から所定の時間以内に、前記ホストが削除対象となる論理アドレスを通知した場合は、
前記有効データの読み出しおよび前記削除対象データ領域へ書き込みと前記有効データの無効化を実行しない
ことを特徴とする請求項11乃至19のいずれか1項に記載のメモリシステムの制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011064554A JP2012203443A (ja) | 2011-03-23 | 2011-03-23 | メモリシステムおよびメモリシステムの制御方法 |
US13/420,808 US9026764B2 (en) | 2011-03-23 | 2012-03-15 | Memory system performing wear leveling based on deletion request |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011064554A JP2012203443A (ja) | 2011-03-23 | 2011-03-23 | メモリシステムおよびメモリシステムの制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012203443A true JP2012203443A (ja) | 2012-10-22 |
Family
ID=46878299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011064554A Withdrawn JP2012203443A (ja) | 2011-03-23 | 2011-03-23 | メモリシステムおよびメモリシステムの制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9026764B2 (ja) |
JP (1) | JP2012203443A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017521753A (ja) * | 2014-05-20 | 2017-08-03 | マイクロン テクノロジー, インク. | 読み出しキャッシュメモリ |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200828320A (en) * | 2006-12-28 | 2008-07-01 | Genesys Logic Inc | Method for performing static wear leveling on flash memory |
JP2011128998A (ja) | 2009-12-18 | 2011-06-30 | Toshiba Corp | 半導体記憶装置 |
JP2012123499A (ja) | 2010-12-07 | 2012-06-28 | Toshiba Corp | メモリシステム |
JP5405513B2 (ja) | 2011-03-22 | 2014-02-05 | 株式会社東芝 | メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム |
JP2012203443A (ja) | 2011-03-23 | 2012-10-22 | Toshiba Corp | メモリシステムおよびメモリシステムの制御方法 |
JP5659178B2 (ja) | 2012-03-16 | 2015-01-28 | 株式会社東芝 | 不揮発性記憶装置及び不揮発性メモリの制御方法 |
CN108595345B (zh) * | 2012-07-25 | 2021-11-23 | 慧荣科技股份有限公司 | 管理闪存中所储存的数据的方法及相关记忆装置与控制器 |
TWI492051B (zh) * | 2012-09-05 | 2015-07-11 | Silicon Motion Inc | 資料儲存裝置與快閃記憶體控制方法 |
US20140129758A1 (en) * | 2012-11-06 | 2014-05-08 | Spansion Llc | Wear leveling in flash memory devices with trim commands |
JP6005566B2 (ja) | 2013-03-18 | 2016-10-12 | 株式会社東芝 | 情報処理システム、制御プログラムおよび情報処理装置 |
CN103279562B (zh) * | 2013-06-09 | 2017-10-10 | 网易(杭州)网络有限公司 | 一种用于数据库二级缓存的方法、装置及数据库存储系统 |
US9304685B2 (en) | 2013-09-10 | 2016-04-05 | Kabushiki Kaisha Toshiba | Storage array system and non-transitory recording medium storing control program |
JP2015069241A (ja) * | 2013-09-26 | 2015-04-13 | キヤノン株式会社 | 画像処理装置、制御装置、それらの制御方法、及びプログラム |
JP2015204126A (ja) * | 2014-04-16 | 2015-11-16 | 株式会社東芝 | 半導体記憶装置 |
CN104618191B (zh) * | 2015-02-11 | 2018-05-11 | 新华三技术有限公司 | 一种主机与裸存储块之间的通信故障检测方法和装置 |
US20160321010A1 (en) | 2015-04-28 | 2016-11-03 | Kabushiki Kaisha Toshiba | Storage system having a host directly manage physical data locations of storage device |
US10503653B2 (en) | 2015-09-11 | 2019-12-10 | Toshiba Memory Corporation | Memory system |
US10229049B2 (en) | 2015-12-17 | 2019-03-12 | Toshiba Memory Corporation | Storage system that performs host-initiated garbage collection |
US9946596B2 (en) | 2016-01-29 | 2018-04-17 | Toshiba Memory Corporation | Global error recovery system |
US10101939B2 (en) | 2016-03-09 | 2018-10-16 | Toshiba Memory Corporation | Storage system having a host that manages physical data locations of a storage device |
US9858003B2 (en) | 2016-05-02 | 2018-01-02 | Toshiba Memory Corporation | Storage system that reliably stores lower page data |
US10095417B1 (en) * | 2016-12-13 | 2018-10-09 | EMC IP Holding Company LLC | Method and system for improving flash storage read performance in partially programmed blocks |
US11069418B1 (en) | 2016-12-30 | 2021-07-20 | EMC IP Holding Company LLC | Method and system for offline program/erase count estimation |
US10338983B2 (en) | 2016-12-30 | 2019-07-02 | EMC IP Holding Company LLC | Method and system for online program/erase count estimation |
US10289550B1 (en) | 2016-12-30 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for dynamic write-back cache sizing in solid state memory storage |
GB2559119B (en) * | 2017-01-20 | 2020-12-30 | Advanced Risc Mach Ltd | Apparatus and methods to prolong lifetime of memories |
US10403366B1 (en) | 2017-04-28 | 2019-09-03 | EMC IP Holding Company LLC | Method and system for adapting solid state memory write parameters to satisfy performance goals based on degree of read errors |
US10290331B1 (en) | 2017-04-28 | 2019-05-14 | EMC IP Holding Company LLC | Method and system for modulating read operations to support error correction in solid state memory |
CN108089994B (zh) * | 2018-01-04 | 2021-06-01 | 威盛电子股份有限公司 | 存储装置以及数据保存方法 |
CN108563397B (zh) | 2018-01-04 | 2021-08-24 | 威盛电子股份有限公司 | 存储装置以及数据保存方法 |
CN108762989B (zh) * | 2018-06-05 | 2021-08-31 | 郑州云海信息技术有限公司 | 固态硬盘的数据存储方法、装置、设备及可读存储介质 |
KR20200088713A (ko) * | 2019-01-15 | 2020-07-23 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
CN110286848B (zh) * | 2019-05-08 | 2022-12-09 | 西安万像电子科技有限公司 | 数据处理方法及装置 |
US11288007B2 (en) * | 2019-05-16 | 2022-03-29 | Western Digital Technologies, Inc. | Virtual physical erase of a memory of a data storage device |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5404485A (en) * | 1993-03-08 | 1995-04-04 | M-Systems Flash Disk Pioneers Ltd. | Flash file system |
US5867641A (en) * | 1995-10-27 | 1999-02-02 | Scm Microsystems (U.S.) Inc. | Flash translation layer cleanup system and method |
US5956473A (en) * | 1996-11-25 | 1999-09-21 | Macronix International Co., Ltd. | Method and system for managing a flash memory mass storage system |
US5745418A (en) * | 1996-11-25 | 1998-04-28 | Macronix International Co., Ltd. | Flash memory mass storage system |
US6418506B1 (en) * | 1996-12-31 | 2002-07-09 | Intel Corporation | Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array |
KR100577380B1 (ko) * | 1999-09-29 | 2006-05-09 | 삼성전자주식회사 | 플래시 메모리와 그 제어 방법 |
JP2001209543A (ja) * | 2000-01-28 | 2001-08-03 | Nec Ic Microcomput Syst Ltd | フラッシュ・マイコンにおけるプログラム書き換え方法 |
US6760805B2 (en) * | 2001-09-05 | 2004-07-06 | M-Systems Flash Disk Pioneers Ltd. | Flash management system for large page size |
US7089396B2 (en) * | 2002-10-10 | 2006-08-08 | International Business Machines Corporation | Method and profiling cache for management of virtual memory |
KR101122511B1 (ko) | 2002-10-28 | 2012-03-15 | 쌘디스크 코포레이션 | 비휘발성 저장 시스템들에서 자동 웨어 레벨링 |
KR100526190B1 (ko) | 2004-02-06 | 2005-11-03 | 삼성전자주식회사 | 플래시 메모리의 재사상 방법 |
US20060004951A1 (en) * | 2004-06-30 | 2006-01-05 | Rudelic John C | Method and apparatus to alter code in a memory |
US8122193B2 (en) | 2004-12-21 | 2012-02-21 | Samsung Electronics Co., Ltd. | Storage device and user device including the same |
US7315917B2 (en) | 2005-01-20 | 2008-01-01 | Sandisk Corporation | Scheduling of housekeeping operations in flash memory systems |
US20070016721A1 (en) * | 2005-07-18 | 2007-01-18 | Wyse Technology Inc. | Flash file system power-up by using sequential sector allocation |
JP4229140B2 (ja) * | 2006-06-16 | 2009-02-25 | ソニー株式会社 | 集積回路チップ、データ読み出し方法、データ書き込み方法、icカード、および携帯電話機 |
JP5010271B2 (ja) * | 2006-12-27 | 2012-08-29 | 富士通株式会社 | エラー訂正コード生成方法、およびメモリ制御装置 |
US20080282024A1 (en) * | 2007-05-09 | 2008-11-13 | Sudeep Biswas | Management of erase operations in storage devices based on flash memories |
JP4164118B1 (ja) | 2008-03-26 | 2008-10-08 | 眞澄 鈴木 | フラッシュメモリを用いた記憶装置 |
TWI389125B (zh) * | 2008-07-18 | 2013-03-11 | A Data Technology Co Ltd | 記憶體儲存裝置及其控制方法 |
US20100017650A1 (en) * | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
WO2010018613A1 (ja) * | 2008-08-11 | 2010-02-18 | 富士通株式会社 | ガーベジコレクションプログラム、及びガーベジコレクション方法、ならびにガーベジコレクションシステム |
TWI375887B (en) * | 2008-10-31 | 2012-11-01 | A Data Technology Co Ltd | Flash memory device with wear-leveling mechanism and controlling method thereof |
US8261030B2 (en) * | 2008-11-18 | 2012-09-04 | Microsoft Corporation | Using delete notifications to free related storage resources |
US8230159B2 (en) | 2009-03-27 | 2012-07-24 | Lsi Corporation | System, method, and computer program product for sending logical block address de-allocation status information |
US8065469B2 (en) * | 2009-04-20 | 2011-11-22 | Imation Corp. | Static wear leveling |
WO2011010348A1 (ja) * | 2009-07-23 | 2011-01-27 | 株式会社日立製作所 | フラッシュメモリ装置 |
JP2011128998A (ja) | 2009-12-18 | 2011-06-30 | Toshiba Corp | 半導体記憶装置 |
US8489855B2 (en) * | 2010-05-07 | 2013-07-16 | Ocz Technology Group Inc. | NAND flash-based solid state drive and method of operation |
JP2012123499A (ja) | 2010-12-07 | 2012-06-28 | Toshiba Corp | メモリシステム |
JP2012203443A (ja) | 2011-03-23 | 2012-10-22 | Toshiba Corp | メモリシステムおよびメモリシステムの制御方法 |
JP5581256B2 (ja) | 2011-03-28 | 2014-08-27 | 株式会社東芝 | メモリシステム、コントローラ、およびメモリシステムの制御方法 |
JP2012221251A (ja) | 2011-04-08 | 2012-11-12 | Toshiba Corp | メモリシステムの制御方法、情報処理装置、及びプログラム |
-
2011
- 2011-03-23 JP JP2011064554A patent/JP2012203443A/ja not_active Withdrawn
-
2012
- 2012-03-15 US US13/420,808 patent/US9026764B2/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017521753A (ja) * | 2014-05-20 | 2017-08-03 | マイクロン テクノロジー, インク. | 読み出しキャッシュメモリ |
US10768828B2 (en) | 2014-05-20 | 2020-09-08 | Micron Technology, Inc. | Data movement between volatile and non-volatile memory in a read cache memory |
Also Published As
Publication number | Publication date |
---|---|
US9026764B2 (en) | 2015-05-05 |
US20120246393A1 (en) | 2012-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012203443A (ja) | メモリシステムおよびメモリシステムの制御方法 | |
US11693463B2 (en) | Memory system and controller | |
CN109144888B (zh) | 存储器系统 | |
US9507711B1 (en) | Hierarchical FTL mapping optimized for workload | |
JP4844639B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
TWI497293B (zh) | 固態儲存裝置內之資料管理 | |
KR101473344B1 (ko) | 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법 | |
US8174912B2 (en) | Systems and methods for circular buffering control in a memory device | |
JP5525605B2 (ja) | フラッシュメモリモジュール | |
JP4164118B1 (ja) | フラッシュメモリを用いた記憶装置 | |
JP5612514B2 (ja) | 不揮発性メモリコントローラ及び不揮発性記憶装置 | |
CN108369818B (zh) | 一种闪存设备的刷新方法和装置 | |
CN110047546B (zh) | 存储器系统中的擦除管理 | |
CN111752487B (zh) | 一种数据恢复方法、装置及固态硬盘 | |
CN110895514A (zh) | 映射表更新方法 | |
US20140195725A1 (en) | Method and system for data storage | |
US20160139812A1 (en) | Hot-cold data separation method in flash translation layer | |
JP5480913B2 (ja) | 記憶装置、およびメモリコントローラ | |
TWI406127B (zh) | 更新使用者資料的方法 | |
JP2012123499A (ja) | メモリシステム | |
US9721669B2 (en) | Data protection method, memory control circuit unit and memory storage apparatus | |
TWI459198B (zh) | 記憶體儲存裝置、其記憶體控制器與有效資料識別方法 | |
KR20080104815A (ko) | 비휘발성 메모리의 데이터 처리 장치 및 방법 | |
JP5494086B2 (ja) | 不揮発性記憶装置および不揮発性メモリコントローラ | |
US10303397B1 (en) | Read disturb handling in storage devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140603 |