JP2012203443A - メモリシステムおよびメモリシステムの制御方法 - Google Patents

メモリシステムおよびメモリシステムの制御方法 Download PDF

Info

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
Application number
JP2011064554A
Other languages
English (en)
Inventor
Daisuke Hashimoto
大輔 橋本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011064554A priority Critical patent/JP2012203443A/ja
Priority to US13/420,808 priority patent/US9026764B2/en
Publication of JP2012203443A publication Critical patent/JP2012203443A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear 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

Description

本発明の実施形態は、メモリシステムおよびメモリシステムの制御方法に関する。
オペレーティングシステム(OS)上において外部記憶装置(例えばハードディスク、ソリッドステートドライブ(SSD:Solid State Drive))上のファイルデータが削除される場合、OS上でのデータの管理情報が削除されるだけで、外部記憶装置からは実際にはデータが削除されない。OS上でデータ削除のたびに外部記憶装置上の削除処理が行われるわけではないので、外部記憶装置上の削除処理が行われない分、動作のパフォーマンスが向上する。この方式は特に、アクセスの遅いハードディスクドライブにおいて有効であった。
一方、OS上では削除したはずのデータが、外部記憶装置上ではまだ存在している有効なデータであると認識されているため(以後、このようなデータを「無効データ」と呼ぶ)、外部記憶装置上でデータの存在しない領域が、OSが認識している空き領域よりも常に少なくなってしまう。特に、外部記憶装置上での空き領域の枯渇は、論理アドレスとディスクの物理アドレスがかならずしも一対一で対応しないソリッドステートドライブ(SSD)においてウェアレベリングを実行するときなどに大きな問題となる場合がある。
このような問題点を列挙すると、例えば、サイズの小さな無効データがSSD領域の各所に分散している状態で、メモリシステムにデータ書き込みを行う場合、空き領域を検索したり確保したりする処理に負荷がかかり、書き込みのパフォーマンスが著しく劣化することがあげられる。また、無効データが多くメモリシステム上での空き領域が枯渇している状況で書き込みが行われると、特定の領域に書き込みが集中して、メモリシステムの信頼性が大きく低下するということもあげられる。このような問題は、OSでデータ削除が行われた場合に、メモリシステムにデータ削除通知を行うことで回避することができる。
特開2009−237668号公報
本発明の実施形態は、信頼性を向上したメモリシステムを提供することを目的とする。
本発明の実施形態のメモリシステムは、データ消去の単位である物理ブロックを複数個有する不揮発性メモリと、キャッシュメモリと、ホストが指定する論理アドレスと前記不揮発性メモリ上のデータの位置を指定する物理アドレスとの対応を示す論物変換テーブルと、前記論物変換テーブルにて対応する論理アドレスを有する物理ブロック毎のデータ消去回数を保持する消去回数管理テーブルを備える。メモリシステムは、前記ホストが削除対象となる論理アドレスを通知した場合に、前記論物変換テーブルにおいて当該論理アドレスに対応する物理アドレスが指定する削除対象データ領域を含む削除対象物理ブロックのデータ消去回数を取得し、当該データ消去回数の所定の割合以下のデータ消去回数を有する少消去物理ブロックが前記消去回数管理テーブルに存在する場合には、前記少消去物理ブロック内の有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行し、前記少消去物理ブロック内の前記有効データを無効化するメモリコントローラを備える。
図1は、第1の実施形態のメモリシステムの構成を示すブロック図である。 図2は、第1の実施形態のメモリシステムの制御方法の概念の概略を論理アドレス空間と対応する物理アドレス空間にわけて説明した図である。 図3は、第1の実施形態のメモリシステムの制御方法を示すフローチャートである。 図4は、本実施形態のメモリシステムの制御方法の概念の詳細を論理アドレス空間と対応する物理アドレス空間にわけて説明した図である。 図5は、本実施形態のメモリシステムの制御方法の概念の詳細を論理アドレス空間と対応する物理アドレス空間にわけて説明した別の図である。 図6は、本実施形態の論物変換テーブルを示した図である。 図7は、第1の実施形態の消去回数管理テーブルを示した図である。 図8は、本実施形態のフリーブロック管理テーブルを示した図である。 図9は、第2の実施形態のメモリシステムの構成を示すブロック図である。 図10は、第2の実施形態のメモリシステムの制御方法の概念の概略を論理アドレス空間と対応する物理アドレス空間にわけて説明した図である。 図11は、第2の実施形態のメモリシステムの制御方法を示すフローチャートである。 図12は、第2の実施形態の書き込み時刻管理テーブルを示した図である。 図13は、第2の実施形態の論物変換テーブルと書き込み時刻管理テーブルを兼ねたテーブルを示した図である。 図14は、第3の実施形態のメモリシステムの構成を示すブロック図である。 図15は、第3の実施形態のメモリシステムの別の構成を示すブロック図である。 図16は、第3の実施形態のメモリシステムの制御方法の概念の概略を論理アドレス空間と対応する物理アドレス空間にわけて説明した図である。
以下に添付図面を参照して、実施形態にかかるメモリシステム、およびメモリシステムの制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図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は、消去回数が少ないブロックから順に優先し、可能ならできるだけ少数のブロック数で構成されるよう選定するのが好ましい。
メモリシステムコントローラ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の外部に存在してもよい。
本実施形態では、メモリシステム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は、書きこみ後経過時間の長い順に優先し、できるだけ少数のブロック数で構成されるよう選定するのが好ましい。
なお、ステップ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である。
本実施形態においては、第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. データ消去の単位である物理ブロックを複数個有する不揮発性メモリと、
    キャッシュメモリと、
    ホストが指定する論理アドレスと前記不揮発性メモリ上のデータの位置を指定する物理アドレスとの対応を示す論物変換テーブルと、
    前記論物変換テーブルにて対応する論理アドレスを有する物理ブロック毎のデータ消去回数を保持する消去回数管理テーブルと、
    前記ホストが削除対象となる論理アドレスを通知した場合に、前記論物変換テーブルにおいて当該論理アドレスに対応する物理アドレスが指定する削除対象データ領域を含む削除対象物理ブロックのデータ消去回数を取得し、当該データ消去回数の所定の割合以下のデータ消去回数を有する少消去物理ブロックが前記消去回数管理テーブルに存在する場合には、前記少消去物理ブロック内の有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行し、前記少消去物理ブロック内の前記有効データを無効化するメモリコントローラと
    を備えたことを特徴とするメモリシステム。
  2. データ消去回数がより少ない前記少消去物理ブロックから優先して前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行する
    ことを特徴とする請求項1に記載のメモリシステム。
  3. データ消去の単位である物理ブロックを複数個有する不揮発性メモリと、
    キャッシュメモリと、
    ホストが指定する論理アドレスと前記不揮発性メモリ上のデータの位置を指定する物理アドレスとの対応を示す論物変換テーブルと、
    前記論物変換テーブルにて対応する論理アドレスを有する物理アドレスにデータが最後に書き込まれた最終書き込み時刻を保持する書き込み時刻管理テーブルと、
    前記ホストが削除対象となる論理アドレスを通知した通知時刻が、前記論物変換テーブルにおいて当該論理アドレスに対応する物理アドレスが指定する削除対象データ領域を含む削除対象物理ブロックとは別の物理ブロックに対応して前記書き込み時刻管理テーブルに保持された最終書き込み時刻より所定時間以上経過していた場合は、前記別の物理ブロック内の有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行し、前記別の物理ブロック内の前記有効データを無効化するメモリコントローラと
    を備えたことを特徴とするメモリシステム。
  4. 前記書き込み時刻管理テーブルは前記最終書き込み時刻として、前記論物変換テーブルにて対応する論理アドレスを有する物理ブロック毎に当該物理ブロックにデータが最後に書き込まれた物理ブロック最終書き込み時刻を保持し、
    前記メモリコントローラは、前記通知時刻が、前記別の物理ブロックの前記物理ブロック最終書き込み時刻より所定時間以上経過していた場合に、前記別の物理ブロック内の前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行し、前記別の物理ブロック内の前記有効データを無効化する
    ことを特徴とする請求項3に記載のメモリシステム。
  5. 前記書き込み時刻管理テーブルは前記最終書き込み時刻として、前記論物変換テーブルにて対応する論理アドレスを有する物理アドレス毎に当該物理アドレスにデータが最後に書き込まれた物理アドレス最終書き込み時刻を保持し、
    前記メモリコントローラは、前記通知時刻が、前記別の物理ブロック内の位置を指定する特定物理アドレスの前記物理アドレス最終書き込み時刻より所定時間以上経過していた場合に、当該特定物理アドレスの前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行し、当該特定物理アドレスの前記有効データを無効化する
    ことを特徴とする請求項3に記載のメモリシステム。
  6. より古い前記最終書き込み時刻に対応する前記有効データから優先して前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みを実行する
    ことを特徴とする請求項3、4または5に記載のメモリシステム。
  7. 前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みは、
    前記キャッシュメモリが読み出した前記削除対象物理ブロックの全データの中の前記削除対象データ領域の削除対象データに前記キャッシュメモリが読み出した前記有効データを上書きしたデータの、データ消去された前記削除対象物理ブロックへの書き込み
    であることを特徴とする請求項1乃至6のいずれか1項に記載のメモリシステム。
  8. 前記削除対象物理ブロックが全て削除対象である場合は、
    前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みは、
    前記キャッシュメモリが読み出した前記有効データの、データ消去された前記削除対象物理ブロックへの書き込み
    であることを特徴とする請求項1乃至6のいずれか1項に記載のメモリシステム。
  9. 誤り訂正手段をさらに備え、
    前記有効データの前記キャッシュメモリへの読み出しおよび前記削除対象データ領域への書き込みは、
    前記キャッシュメモリが読み出した前記有効データに対して前記誤り訂正手段が誤り訂正を実行した誤り訂正後のデータを前記削除対象データ領域へ書き込む
    ことを特徴とする請求項1乃至8のいずれか1項に記載のメモリシステム。
  10. 前記キャッシュメモリは、DRAM、SRAMあるいは前記不揮発性メモリ内のキャッシュ領域である
    ことを特徴とする請求項1乃至9のいずれか1項に記載のメモリシステム。
  11. データ消去の単位である物理ブロックを複数個有する不揮発性メモリと、前記不揮発性メモリのデータの制御を行うメモリコントローラとを備えるメモリシステムの制御方法であって、
    ホストが指定する論理アドレスと前記不揮発性メモリ上のデータの位置を指定する物理アドレスとの対応を示す論物変換テーブルを記憶し、
    前記論物変換テーブルにて対応する論理アドレスを有する物理ブロック毎のデータ消去回数を保持する消去回数管理テーブルを記憶し、
    前記ホストが削除対象となる論理アドレスを通知した場合に、前記論物変換テーブルにおいて当該論理アドレスに対応する物理アドレスが指定する削除対象データ領域を含む削除対象物理ブロックのデータ消去回数を取得し、当該データ消去回数の所定の割合以下のデータ消去回数を有する少消去物理ブロックが前記消去回数管理テーブルに存在する場合には、前記メモリコントローラは前記少消去物理ブロック内の有効データを読み出して前記削除対象データ領域へ書き込み、前記少消去物理ブロック内の前記有効データを無効化する
    ことを特徴とするメモリシステムの制御方法。
  12. データ消去回数がより少ない前記少消去物理ブロックから優先して前記有効データを読み出して前記削除対象データ領域へ書き込む
    ことを特徴とする請求項11に記載のメモリシステムの制御方法。
  13. データ消去の単位である物理ブロックを複数個有する不揮発性メモリと、前記不揮発性メモリのデータの制御を行うメモリコントローラとを備えるメモリシステムの制御方法であって、
    ホストが指定する論理アドレスと前記不揮発性メモリ上のデータの位置を指定する物理アドレスとの対応を示す論物変換テーブルを記憶し、
    前記論物変換テーブルにて対応する論理アドレスを有する物理アドレスにデータが最後に書き込まれた最終書き込み時刻を保持する書き込み時刻管理テーブルを記憶し、
    前記ホストが削除対象となる論理アドレスを通知した通知時刻が、前記論物変換テーブルにおいて当該論理アドレスに対応する物理アドレスが指定する削除対象データ領域を含む削除対象物理ブロックとは別の物理ブロックに対応して前記書き込み時刻管理テーブルに保持された最終書き込み時刻より所定時間以上経過していた場合は、前記メモリコントローラは前記別の物理ブロック内の有効データを読み出して前記削除対象データ領域へ書き込み、前記別の物理ブロック内の前記有効データを無効化する
    ことを特徴とするメモリシステムの制御方法。
  14. 前記書き込み時刻管理テーブルは前記最終書き込み時刻として、前記論物変換テーブルにて対応する論理アドレスを有する物理ブロック毎に当該物理ブロックにデータが最後に書き込まれた物理ブロック最終書き込み時刻を保持し、
    前記通知時刻が、前記別の物理ブロックの前記物理ブロック最終書き込み時刻より所定時間以上経過していた場合に、前記メモリコントローラは前記別の物理ブロック内の前記有効データを読み出して前記削除対象データ領域へ書き込み、前記別の物理ブロック内の前記有効データを無効化する
    ことを特徴とする請求項13に記載のメモリシステムの制御方法。
  15. 前記書き込み時刻管理テーブルは前記最終書き込み時刻として、前記論物変換テーブルにて対応する論理アドレスを有する物理アドレス毎に当該物理アドレスにデータが最後に書き込まれた物理アドレス最終書き込み時刻を保持し、
    前記通知時刻が、前記別の物理ブロック内の位置を指定する特定物理アドレスの前記物理アドレス最終書き込み時刻より所定時間以上経過していた場合に、前記メモリコントローラは前記特定物理アドレスの前記有効データを読み出して前記削除対象データ領域へ書き込み、前記特定物理アドレスの前記有効データを無効化する
    ことを特徴とする請求項13に記載のメモリシステムの制御方法。
  16. より古い前記最終書き込み時刻に対応する前記有効データから優先して読み出して前記削除対象データ領域へ書き込む
    ことを特徴とする請求項13、14または15に記載のメモリシステムの制御方法。
  17. 前記有効データの読み出しおよび前記削除対象データ領域へ書き込みは、
    キャッシュメモリが前記削除対象物理ブロックの全データを読み出し、
    前記キャッシュメモリが前記有効データを読み出し、
    読み出された前記削除対象物理ブロックの全データの中の前記削除対象データ領域の削除対象データに、読み出された前記有効データを前記キャッシュメモリ上にて上書きし、
    前記削除対象物理ブロックの全データの読み出し後に、前記削除対象物理ブロックをデータ消去し、
    前記キャッシュメモリ上にて上書きされたデータを、データ消去された前記削除対象物理ブロックへ書き込む
    ことを含むことを特徴とする請求項11乃至16のいずれか1項に記載のメモリシステムの制御方法。
  18. 前記削除対象物理ブロックが全て削除対象である場合は、
    前記有効データの読み出しおよび前記削除対象データ領域へ書き込みは、
    キャッシュメモリが前記有効データを読み出し、
    前記削除対象物理ブロックをデータ消去し、
    読み出された前記有効データを、データ消去された前記削除対象物理ブロックへ書き込む
    ことを含むことを特徴とする請求項11乃至16のいずれか1項に記載のメモリシステムの制御方法。
  19. 前記有効データの読み出しおよび前記削除対象データ領域へ書き込みは、
    読み出された前記有効データに対して誤り訂正を実行し、
    前記誤り訂正後のデータを前記削除対象データ領域へ書き込む
    ことを特徴とする請求項11乃至18のいずれか1項に記載のメモリシステムの制御方法。
  20. 前記削除対象物理ブロック内における前記削除対象データ領域のデータ量が所定の値未満の場合は、
    前記有効データの読み出しおよび前記削除対象データ領域へ書き込みと前記有効データの無効化を実行しない
    ことを特徴とする請求項11乃至19のいずれか1項に記載のメモリシステムの制御方法。
  21. 前記ホストが最後に前記メモリシステムにアクセスした時から所定の時間以内に、前記ホストが削除対象となる論理アドレスを通知した場合は、
    前記有効データの読み出しおよび前記削除対象データ領域へ書き込みと前記有効データの無効化を実行しない
    ことを特徴とする請求項11乃至19のいずれか1項に記載のメモリシステムの制御方法。
JP2011064554A 2011-03-23 2011-03-23 メモリシステムおよびメモリシステムの制御方法 Withdrawn JP2012203443A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017521753A (ja) * 2014-05-20 2017-08-03 マイクロン テクノロジー, インク. 読み出しキャッシュメモリ

Families Citing this family (34)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 メモリシステムの制御方法、情報処理装置、及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
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