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

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

Info

Publication number
JP7010667B2
JP7010667B2 JP2017213955A JP2017213955A JP7010667B2 JP 7010667 B2 JP7010667 B2 JP 7010667B2 JP 2017213955 A JP2017213955 A JP 2017213955A JP 2017213955 A JP2017213955 A JP 2017213955A JP 7010667 B2 JP7010667 B2 JP 7010667B2
Authority
JP
Japan
Prior art keywords
block
retention period
data retention
data
blocks
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.)
Active
Application number
JP2017213955A
Other languages
English (en)
Other versions
JP2019086970A (ja
Inventor
伸一 菅野
英樹 吉田
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.)
Kioxia Corp
Original Assignee
Kioxia 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 Kioxia Corp filed Critical Kioxia Corp
Priority to JP2017213955A priority Critical patent/JP7010667B2/ja
Priority to US16/004,509 priority patent/US11042305B2/en
Priority to CN201810887402.6A priority patent/CN109753234B/zh
Priority to TW107127264A priority patent/TWI729307B/zh
Publication of JP2019086970A publication Critical patent/JP2019086970A/ja
Priority to US17/331,043 priority patent/US11747989B2/en
Application granted granted Critical
Publication of JP7010667B2 publication Critical patent/JP7010667B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Description

近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
SSDのようなメモリシステムにおいては、その信頼性の向上を図るための技術が求められている。
特開2011-70346号公報
本発明が解決しようとする課題は、信頼性の向上を図ることができるメモリシステムおよび制御方法を提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、不揮発性メモリと、前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するコントローラとを具備する。前記コントローラは、前記不揮発性メモリ内の複数のブロックそれぞれの消耗度を管理する。前記コントローラは、前記複数のブロックそれぞれの消耗度に基づいて前記複数のブロックを複数のデータ保持期間に対応する複数のブロックグループに分類する。前記コントローラは、書き込むべき第1のデータに必要なデータ保持期間を指定するパラメータを含むライト要求を前記ホストから受信する。前記コントローラは、前記指定されたデータ保持期間に一致するデータ保持期間を有する第1のブロックグループに分類されているブロックが存在する場合、前記第1のブロックグループに分類されている第1のブロックを前記複数のブロックから選択し、前記第1のデータを前記第1のブロックに書き込む。前記コントローラは、前記第1のブロックグループに分類されているブロックが存在しない場合、前記指定されたデータ保持期間よりも長いデータ保持期間を有する第2のブロックグループに分類されている第2のブロックを前記複数のブロックから選択し、前記第1のデータを前記第2のブロックに書き込む。
第1実施形態に係るメモリシステムの構成例を示すブロック図。 第1実施形態のメモリシステムに設けられたNANDインタフェースと複数のNAND型フラッシュメモリダイとの関係を示すブロック図。 複数のブロックの集合によって構築されるスーパーブロック(並列単位)の構成例を示す図。 第1実施形態のメモリシステムによって実行される消去動作のシーケンスを示すタイミングチャート。 第1実施形態のメモリシステムによって実行される書き込み動作を示す図。 第1実施形態のメモリシステムによって管理されるブロック消耗度管理テーブルの例を示す図。 第1実施形態のメモリシステムによって管理されるブロック消耗度管理テーブルの別の例を示す図。 第1実施形態のメモリシステムに適用されるライトコマンドを説明するための図。 図8のライトコマンドの受信に応答して第1実施形態のメモリシステムによって実行されるデータ書き込み処理シーケンスを示す図。 ライトコマンドによって指定されたデータ保持期間に一致するデータ保持期間を有するブロックが存在する場合における、第1実施形態のメモリシステムによって実行される、書き込み先ブロックの選択の仕方を示す図。 ライトコマンドによって指定されたデータ保持期間に一致するデータ保持期間を有するブロックが存在する場合における、第1実施形態のメモリシステムによって実行される、書き込み先ブロックの選択の仕方を示す図。 ライトコマンドによって指定されたデータ保持期間に一致するデータ保持期間を有するブロックが存在する場合における、第1実施形態のメモリシステムによって実行される、図11に示すものとは別の書き込み先ブロックの選択の仕方を示す図。 ライトコマンドによって指定されたデータ保持期間に一致するデータ保持期間を有するブロックが存在しない場合における、第1実施形態のメモリシステムによって実行される、書き込み先ブロックの選択の仕方を示す図。 ライトコマンドによって指定されたデータ保持期間に一致するデータ保持期間を有するブロックが存在しない場合における、第1実施形態のメモリシステムによって実行される、書き込み先ブロックの選択の仕方を示す図。 ライトコマンドによって指定されたデータ保持期間に一致するデータ保持期間を有するブロックが存在しない場合における、第1実施形態のメモリシステムによって実行される、選択されたブロックへの消耗低減プログラムモードによるデータの書き込み動作を示す図。 第1実施形態のメモリシステムによって実行される、消耗低減プログラムモードによるデータの書き込み動作の際の閾値電圧レベルについて説明するための図。 第1実施形態のメモリシステムによって実行される、ブロックを消耗度に基づいて分類する手順を示すフローチャート。 第1実施形態のメモリシステムによって実行される、消耗度に基づいて書き込み先ブロックを選択し、選択したブロックにデータを書き込む動作の手順を示すフローチャート。 第1実施形態のメモリシステムによって実行される、消耗度に基づいて書き込み先ブロックを選択し、消耗低減プログラムモードにより選択したブロックにデータを書き込む動作の手順を示すフローチャート。 第1実施形態のメモリシステムによって実行される、ブロックを消去回数に基づいて分類する手順を示すフローチャート。 第1実施形態のメモリシステムによって実行される、消去回数に基づいて書き込み先ブロックを選択し、選択したブロックにデータを書き込む動作の手順を示すフローチャート。 第1実施形態のメモリシステムによって実行される、消去回数に基づいて書き込み先ブロックを選択し、消耗低減プログラムモードにより選択したブロックにデータを書き込む動作の手順を示すフローチャート。 第1実施形態のメモリシステムによって実行される、ブロックを消去時間に基づいて分類する手順を示すフローチャート。 第1実施形態のメモリシステムによって実行される、消去時間に基づいて書き込み先ブロックを選択し、選択したブロックにデータを書き込む動作の手順を示すフローチャート。 第1実施形態のメモリシステムによって実行される、消去時間に基づいて書き込み先ブロックを選択し、消耗低減プログラムモードにより選択したブロックにデータを書き込む動作の手順を示すフローチャート。 第2実施形態に係るメモリシステム(フラッシュストレージデバイス)の構成例を示すブロック図。 第2実施形態のメモリシステムに適用されるライトコマンドを説明するための図。 図27のライトコマンドに対するレスポンスを説明するための図。 第2実施形態のメモリシステムに適用されるTrimコマンドを説明するための図。 ホストと第2実施形態のメモリシステムとによって実行されるデータ書き込み処理シーケンスを示す図。 ホストと第1または第2のメモリシステムとを含むコンピュータの構成例を示す図。
以下、図面を参照して、実施形態を説明する。
(第1実施形態)
まず、図1を参照して、第1実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、不揮発性メモリにデータを書き込みし、不揮発性メモリからデータを読み込むように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NAND型フラッシュメモリを備えたフラッシュストレージデバイス3として実現されている。フラッシュストレージデバイス3は、ソリッドステートドライブ(SSD)として実現されてもよいし、メモリカードとして実現されてもよい。
情報処理システム1は、ホスト(ホストデバイス)2と、フラッシュストレージデバイス3とを含む。ホスト2は、フラッシュストレージデバイス3をアクセスする情報処理装置(コンピューティングデバイス)である。ホスト2は、大量且つ多様なデータをフラッシュストレージデバイス3に保存するストレージサーバ(サーバ)であってもよいし、パーソナルコンピュータであってもよい。
フラッシュストレージデバイス3は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。フラッシュストレージデバイス3は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とフラッシュストレージデバイス3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)等を使用し得る。
フラッシュストレージデバイス3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラ(制御回路)である。フラッシュストレージデバイス3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックB0~Bm-1を含む。ブロックB0~Bm-1の各々は多数のページ(ここではページP0~Pn-1)によって編成される。ブロックB0~Bm-1は、最小の消去単位として機能する。ブロックは、「物理ブロック」、または「消去ブロック」と称されることもある。ページP0~Pn-1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0~Pn-1は、データ書き込み動作およびデータ読み込み動作の単位である。
ブロックB0~Bm-1は限られた消去回数を有している。消去回数は、プログラム/消去サイクル(Program/Erase cycles)の数によって表されてもよい。あるブロックの一つのプログラム/消去サイクル(Program/Erase cycles)は、このブロック内の全てのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作(プログラム動作)とを含む。
第1実施形態では、コントローラ4は、ブロックの集合を各々が含む複数のスーパーブロックを管理してもよく、スーパーブロックの単位で消去動作を実行してもよい。したがって、スーパーブロックは、実際上、消去単位として機能することがある。よって、同じスーパーブロックに含まれるブロックそれぞれの消去回数を同じになる。
コントローラ4は、Toggle、ONFIのようなNANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。NANDインタフェース13は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。
NAND型フラッシュメモリ5は、図2に示すように、複数のNAND型フラッシュメモリダイを含む。各NAND型フラッシュメモリダイは、複数のブロック(物理ブロック)BLKを含むメモリセルアレイとこのメモリセルアレイを制御する周辺回路とを含む不揮発性メモリダイである。個々のNAND型フラッシュメモリダイは独立して動作可能である。このため、NAND型フラッシュメモリダイは、最小の並列動作単位として機能する。NAND型フラッシュメモリダイは、「NAND型フラッシュメモリチップ」または「不揮発性メモリチップ」とも称される。図2においては、NANDインタフェース13に16個のチャンネルCh0、Ch1、…Ch15が接続されており、これらチャンネルCh0、Ch1、…Ch15の各々に、同数(例えばチャンネル当たり1個のダイ)のNAND型フラッシュメモリダイそれぞれが接続されている場合が例示されている。各チャンネルは、対応するNAND型フラッシュメモリダイと通信するための通信線(メモリバス)を含む。
コントローラ4は、チャンネルCh0、Ch1、…Ch15を介してNAND型フラッシュメモリダイ#0~#15を制御する。コントローラ4は、チャンネルCh0、Ch1、…Ch15を同時に駆動することができる。
図2の構成例においては、最大16個のNAND型フラッシュメモリダイを並列動作させることができる。
第1実施形態では、コントローラ4は、各々が複数のブロックBLKから構成される複数の並列単位(スーパーブロック)を管理することができる。スーパーブロックは、これに限定されないが、異なるチャンネルに接続されたNAND型フラッシュメモリダイ#0~#15から一つずつ選択される計16個のブロックBLKを含んでいてもよい。なお、NAND型フラッシュメモリダイ#0~#15の各々はマルチプレーン構成を有していてもよい。例えば、NAND型フラッシュメモリダイ#0~#15の各々が、2つのプレーンを含むマルチプレーン構成を有する場合には、一つのスーパーブロックは、NAND型フラッシュメモリダイ#0~#15に対応する32個のプレーンから一つずつ選択される計32個のブロックBLKを含んでいてもよい。
図3には、一つのスーパーブロックSBが、NAND型フラッシュメモリダイ#0~#15から一つずつ選択される計16個のブロックBLKから構成される場合が例示されている。スーパーブロックSBに対する書き込み動作においては、データは、NAND型フラッシュメモリダイ#0に属するブロックBLKのページP0、NAND型フラッシュメモリダイ#1に属するブロックBLKのページP0、…NAND型フラッシュメモリダイ#15に属するブロックBLKのページP0、NAND型フラッシュメモリダイ#0に属するブロックBLKのページP1、NAND型フラッシュメモリダイ#2に属するブロックBLKのページP1、…NAND型フラッシュメモリダイ#15に属するブロックBLKのページP1、…という順序で書き込まれる。
次に、図1のコントローラ4の構成について説明する。
コントローラ4は、複数のチャンネル(例えば16個のチャンネル)を介して複数のNAND型フラッシュメモリチップに電気的に接続される。コントローラ4は、NAND型フラッシュメモリ5(複数のNAND型フラッシュメモリチップ)を制御する。
コントローラ4は、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、フラッシュストレージデバイス3をアドレス指定するためにホストによって使用されるアドレスである。この論理アドレスとしては、通常、論理ブロックアドレス(LBA)LBA(logical block address(addressing))が使用され得る。
論理ブロックアドレス(LBA)それぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル(論理物理アドレス変換テーブル)として機能するルックアップテーブル(LUT)32を用いて実行される。コントローラ4は、ルックアップテーブル(LUT)32を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスのデータがライトされたNANDフラッシュメモリ5内の最新の物理記憶位置を示す。アドレス変換テーブル(LUT32)は、フラッシュストレージデバイス3の電源オン時にNANDフラッシュメモリ5からDRAM6にロードされてもよい。
ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。このため、コントローラ4は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、ルックアップテーブル(LUT)32を更新してこの論理アドレスをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。
ブロック管理には、ウェアレベリングと、ガベージコレクション等が含まれる。ウェアレベリングは、ブロックそれぞれの消耗を均一化するための動作である。ガベージコレクションは、データを書き込むことが可能なフリーブロックの個数を増やすため、有効データと無効データとが混在する幾つかの対象ブロック内の有効データを別のブロックにコピーする。ここで、有効データとは、LUT32から参照されているデータ(すなわち論理アドレスから最新のデータとして紐付けられているデータ)であって、後にホスト2からリードされる可能性があるデータを意味する。無効データとは、もはやホスト2からリードされる可能性が無いデータを意味する。例えば、ある論理アドレスに関連付けられているデータは有効データであり、どの論理アドレスにも関連付けられていないデータは無効データである。
そして、ガベージコレクションは、ルックアップテーブル(LUT)32を更新して、コピーされた有効データの論理アドレスそれぞれを移動先の物理アドレスにマッピングする。有効データが別のブロックにコピーされることによって無効データのみになったブロックはフリーブロックとして解放される。これによって、このブロックはその消去後に再利用することが可能となる。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、およびDRAMインタフェース14等を含む。これらCPU12、NANDインタフェース13、DRAMインタフェース14は、バス10を介して相互接続される。
ホストインタフェース11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。ホストインタフェース11は、ホスト2から様々なコマンド(例えば、ライトコマンド、リードコマンド、アンマップ(UNMAP)/トリム(Trim)コマンド、等)を受信する。
CPU12は、ホストインタフェース11、NANDインタフェース13、およびDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、フラッシュストレージデバイス3の電源オンに応答して、NAND型フラッシュメモリ5に格納されている制御プログラム(ファームウェア)をDRAM6上にロードし、このファームウェアを実行することによって様々な処理を行う。このCPU12は、例えば、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、FTL処理およびコマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
CPU12は、消去回数モニタ部21、消去時間モニタ部22、ブロック分類部23、ライト動作制御部24および消耗低減処理部25として機能することができる。
消去回数モニタ部21は、NAND型フラッシュメモリ5の複数のブロックそれぞれの消去回数を監視する。消去回数は、上述したようにプログラム/消去サイクル(Program/Erase cycles)の数によって表されてもよい。
消去時間モニタ部22は、NAND型フラッシュメモリ5の複数のブロックそれぞれの消去時間を監視する。あるブロックの消去時間とは、このブロックに対する消去動作が完了するまでに要する時間を意味する。
消去時間モニタ部22は、NANDインタフェース13内に含まれる消去時間測定部13Aから、各ブロックの消去時間を取得してもよい。
図4のタイミングチャートは、あるNAND型フラッシュメモリダイ内のあるブロック(物理ブロック)に対する消去動作シーケンスの例を示す。NANDインタフェース13は、イレーズセットアップコマンド“60h”、消去動作が実行されるべきブロックを指定するアドレス、イレーズ開始コマンド“D0h”を、あるチャンネル内のIOバスを介してこのNAND型フラッシュメモリダイに送出する。そして、NANDインタフェース13は、このNAND型フラッシュメモリダイのレディー/ビジー信号(RY/BY)を監視し、消去動作の完了を待つ。このNAND型フラッシュメモリダイにおいてブロックの消去動作が実行されている間は、このNAND型フラッシュメモリダイはビジー状態に維持される。NAND型フラッシュメモリダイがビジー状態の期間は、レディー/ビジー信号(RY/BY)は、例えば、ロウレベルに維持される。消去時間測定部13Aは、NAND型フラッシュメモリダイがブロックの消去動作によってビジー状態に維持されている時間(tBERASE)を、このブロックの消去時間として測定してもよい。この場合、消去時間測定部13Aは、消去動作シーケンスにおいてレディー/ビジー信号(RY/BY)がロウレベルに維持されている時間を測定し、測定された時間を消去時間モニタ部22に報告してもよい。
NAND型フラッシュメモリダイは、ブロックの消去動作が成功したか否かを検証するためのベリファイ動作を実行する。消去およびベリファイ動作は、消去動作が成功するか、あるいは消去およびベリファイ動作のループ回数が設定された最大ループ回数に達するまで繰り返される。消去およびベリファイ動作が完了すると、NAND型フラッシュメモリダイは、レディー状態に戻る。この時、レディー/ビジー信号(RY/BY)は、例えば、ロウレベルからハイレベルに戻る。NAND型フラッシュメモリダイがレディー状態になると、NANDインタフェース13は、ステータスリードコマンド“70h”を、IOバスを介してNAND型フラッシュメモリチップに送出する。消去動作が成功したならば、成功を示すステータス(passステータス)がNAND型フラッシュメモリダイからNANDインタフェース13に通知される。一方、消去動作が成功しなかったならば、失敗を示すステータス(failステータス)がNAND型フラッシュメモリダイからNANDインタフェース13に通知される。
あるいは、コントローラ4は、レディー/ビジー信号(RY/BY)を使用せずに、消去時間(tBERASE)を測定してもよい。この場合、コントローラ4は、消去動作の間、NAND型フラッシュメモリダイチップにステータスリードコマンドを繰り返し発行することでポーリングを行ってもよい。
ブロック分類部23は、複数のブロックそれぞれの消耗度に基づいて複数のブロックを複数のデータ保持期間に対応する複数のブロックグループに分類する。あるブロックの消耗度とは、このブロックに含まれるメモリセル群の消耗の程度を意味する。ブロックそれぞれの消耗度は、これらブロックの消去回数(プログラム/イレーズサイクルの数)によって表されてもよい。あるブロックの消耗が進めにつれて、このブロックの消去時間(tBERASE)は増加する。このため、ブロックそれぞれの消耗度は、これらブロックの消去時間(tBERASE)によって表されてもよい。ブロックの消耗度が大きいと、このブロック内の各メモリセルにチャージされた電荷がリークし易くなる場合がある。このため、ブロックの消耗度が大きいほど、このブロックに対応するデータ保持期間(つまりこのブロック内の各メモリセルがデータを保持可能な期間)は短くなる。
ブロックそれぞれの消耗度が消去回数(プログラム/イレーズサイクルの数)によって表されるケースにおいては、ブロック分類部23は、複数のブロックそれぞれの消去回数に基づいて複数のブロックを複数のデータ保持期間に対応する複数のブロックグループに分類してもよい。
ブロックそれぞれの消耗度が消去時間によって表されるケースにおいては、ブロック分類部23は、複数のブロックそれぞれの消去時間に基づいて複数のブロックを複数のデータ保持期間に対応する複数のブロックグループに分類してもよい。さらに、ブロック分類部23は、複数のブロックそれぞれの消去回数および消去時間の双方に基づいて複数のブロックを複数のデータ保持期間に対応する複数のブロックグループに分類してもよい。
第1実施形態では、ブロック毎に消耗度(例えば、消去回数、消去時間)を監視する動作および消耗度(例えば、消去回数、消去時間)に基づいてブロックを分類する動作は、物理ブロックの単位で実行されてもよい。
なお、フラッシュストレージデバイス3がスーパーブロックの単位で書き込み動作、読み出し動作、消去動作を行う構成である場合においては、ブロック毎に消耗度(例えば、消去回数、消去時間)を監視する動作および消耗度(例えば、消去回数、消去時間)に基づいてブロックを分類する動作は、複数の物理ブロックを含む並列単位(スーパーブロック)の単位で実行されてもよい。同じ並列単位(スーパーブロック)を構成するブロック(物理ブロック)の消去動作は並列に実行されるため、これらブロック(物理ブロック)は同じ消去回数を有する。また、ある並列単位(スーパーブロック)の消去時間としては、この並列単位(スーパーブロック)を構成するブロックそれぞれの消去時間から求められる代表値を使用し得る。この代表値は、これらブロックそれぞれの消去時間の平均値であってもよい。
ライト動作制御部24は、書き込むべきデータ(ライトデータ)に必要なデータ保持期間(data retention term)を指定するパラメータを含むライト要求(ライトコマンド)をホスト2から受信する。このライト要求を受信した場合、ライト動作制御部24は、消耗度から推定されるデータ保持期間が指定されたデータ保持期間以上のブロックをNAND型フラッシュメモリ5に含まれる複数のブロックから書き込み先ブロックとして選択し、このライトデータを選択したブロック(書き込み先ブロック)に書き込む。
ライト動作制御部24は、消耗度から推定されるデータ保持期間がライト要求(ライトコマンド)により指定されたデータ保持期間以上のブロックの中で、より短いデータ保持期間に対応する消耗度を有するブロックを、書き込み先ブロックとして優先的に選択することもできる。これにより、例えば、1年のデータ保持期間を必要とするデータの書き込みのために、10年以上のデータ保持期間に対応する低消耗度のブロックが無駄に使用されることを防ぐことができる。換言すれば、10年のデータ保持期間を必要とするデータを書き込むためのライト要求のために、この10年以上のデータ保持期間に対応する低消耗度のブロックを消費せずに維持しておくことができる。
その場合、ライト動作制御部24は、ライト要求(ライトコマンド)により指定されたデータ保持期間に一致するデータ保持期間を有するブロックグループに分類されているブロックが存在する場合、そのブロックグループに分類されたブロックを、書き込み先ブロックとして選択してもよい。また、ライト動作制御部24は、ライト要求(ライトコマンド)により指定されたデータ保持期間に一致するデータ保持期間を有するブロックが存在しない場合、そのデータ保持期間よりも長いデータ保持期間を有するブロックグループに分類されているブロックを、書き込み先ブロックとして選択してもよい。
また、ライト動作制御部24は、選択されたブロックの消耗度により推定されるデータ保持期間がライト要求(ライトコマンド)により指定されたデータ保持期間と同じである場合、第1のプログラム動作によって、データ(ライトデータ)を選択されたブロック(書き込み先ブロック)に書き込む。他方、ライト動作制御部24は、選択されたブロック(書き込み先ブロック)の消耗度により推定されるデータ保持期間がライト要求(ライトコマンド)によりデータ保持期間よりも長い場合、第2のプログラム動作によってデータ(ライトデータ)を選択されたブロック(書き込み先ブロック)に書き込む。
ここで、第1のプログラム動作とは、通常のプログラムモードによる書き込み動作(プログラム動作)を意味し、第2のプログラム動作とは、第1のブロックのメモリセル群に充電する電荷量が少ないプログラムモード(以下、消耗低減プログラムモードと称する)による書き込み動作(プログラム動作)を意味する。消耗低減プログラムモードによるデータの書き込みを実行することで、通常のプログラムモードによるデータの書き込み動作を実行する場合と比べて、メモリセル群に印加されるプログラム電圧を下げること、またはメモリセル群にプログラム電圧が印可される回数を減らすことができるため、メモリセル群に加わるストレスを低減させることができる。したがって、メモリセル群の消耗を低減させることができ、フラッシュストレージデバイスを長寿命化することができる。
なお、ライトデータを書き込むべき書き込み先ブロックを選択する処理においては、この書き込み先ブロックは、有効データを含まないフリーブロックのグループから選択されてもよい。もし別のライトデータの書き込みのために選択された書き込み先ブロックが既に存在する場合には、ライトデータを書き込むべき書き込み先ブロックは、この既に存在する書き込みブロックとフリーブロックのグループの中から選択されてもよい。
また、フラッシュストレージデバイス3がスーパーブロックの単位で書き込み動作、読み出し動作、消去動作を行う構成である場合においては、ライト動作制御部24は、消耗度から推定されるデータ保持期間が指定されたデータ保持期間以上のスーパーブロックを複数のスーパーブロック(例えば、有効データを含まないフリースーパーブロックのグループ)から書き込み先ブロック(書き込み先スーパーブロック)として選択し、このライトデータを選択したスーパーブロックに書き込めばよい。
消耗低減処理部25は、第1のプログラム動作よりもメモリセル群に充電する電荷量が少ない第2のプログラム動作(消耗低減プログラムモードによるプログラム動作)によってデータを書き込み先ブロックに書き込むための処理を実行する。
図1のDRAMインタフェース14は、DRAM6をアクセス制御するように構成されたDRAMコントローラである。DRAM6の記憶領域は、ライトバッファ(WB)31、ルックアップテーブル(LUT)32、およびシステム管理情報33を格納するために利用される。システム管理情報33は、ホストによって指定されたデータ保持期間以上のデータ保持期間を有する書き込み先ブロックの選択のために必要な様々な管理情報を含む。例えば、システム管理情報33は、後述するブロック消耗度管理テーブル33A、ブロック消耗度管理テーブル33A’を含む。さらに、システム管理情報33は、ブロック情報を含む。ブロック情報には、NAND型フラッシュメモリ5内のブロックの各々に含まれるデータそれぞれの有効/無効を示すフラグ(ビットマップフラグ)が含まれる。
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAM制御回路である。DRAM6の記憶領域の一部は、ライトバッファ(WB)31、ルックアップテーブル(LUT)32、システム管理情報33の格納のために使用される。なお、これらライトバッファ(WB)31、ルックアップテーブル(LUT)32、システム管理情報33は、コントローラ4内の図示しないSRAMに格納されてもよい。
次に、ホスト2の構成について説明する。
ホスト2は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションソフトウェアレイヤ41、オペレーティングシステム(OS)42、ファイルシステム43等が含まれる。
一般に知られているように、オペレーティングシステム(OS)42は、ホスト2全体を管理し、ホスト2内のハードウェアを制御し、アプリケーションがハードウェアおよびフラッシュストレージデバイス3を使用することを可能にするための制御を実行するように構成されたソフトウェアである。
ファイルシステム43は、ファイルの操作(作成、保存、更新、削除等)のための制御を行うために使用される。
アプリケーションソフトウェアレイヤ41がリードコマンドまたはライトコマンドのようなリクエストをフラッシュストレージデバイス3に送出することが必要な時、アプリケーションソフトウェアレイヤ41は、OS42にそのリクエストを送出する。OS42はそのリクエストをファイルシステム43に送出する。ファイルシステム43は、そのリクエストを、コマンド(リードコマンド、ライトコマンド等)にトランスレートする。ファイルシステム43は、コマンドを、フラッシュストレージデバイス3に送出する。フラッシュストレージデバイス3からのレスポンスが受信された際、ファイルシステム43は、そのレスポンスをOS42に送出する。OS42は、そのレスポンスをアプリケーションソフトウェアレイヤ41に送出する。
図5は、第1実施形態のフラッシュストレージデバイス3によって実行されるデータの書き込み動作を示す。
各ブロックの状態は、有効データを格納しているアクティブブロックと、有効データを格納していないフリーブロックとに大別される。アクティブブロックである各ブロックは、アクティブブロックプール51と称されるリストによって管理される。一方、フリーブロックである各ブロックは、フリーブロックプール52と称されるリストによって管理される。
第1実施形態では、コントローラ4は、消耗度から推定されるデータ保持期間がライト要求(ライトコマンド)により指定されるデータ保持期間以上であるデータ保持期間を有するブロックを、ホスト2から受信されたデータの書き込み先ブロックとしてフリーブロックプール52内のブロックから選択する。この場合、コントローラ4は、まず、選択されたブロックに対して消去動作を実行し、これによってこのブロックを、書き込み可能な消去状態にする。現在の書き込み先ブロックの全体がホスト2からのデータで満たされると、コントローラ4は、現在の書き込み先ブロックをアクティブブロックプール51に移動する。
ここで、図5には、フリーブロックプール52から書き込み先ブロックを選択することを示しているが、必ずしもこれに限られない。上述したように、以前のライト要求(ライトコマンド)により指定されるデータ保持期間を有するブロックが既に書き込み先ブロックとして選択されていて、まだ有効データで満たされていない場合には、フリーブロックプール52内のブロックから書き込み先ブロックが新たに選択されない場合もある。例えば、既に、以前のホスト2からのデータに対して書き込み先ブロックとして選択されているブロックが、今回のライト要求(ライトコマンド)により指定されるデータ保持期間を満たすブロックであるならば、このブロックが、今回のライト要求によって書き込まれるべき新たなライトデータに対する書き込み先ブロックとして選択され、選択されたブロックにこの新たなライトデータが書き込まれることがある。
また、書き込み先ブロックとして既に選択されており、且つ有効データで満たされていないブロックが複数個存在する状態もあり得る。例えば、ライト要求(ライトコマンド)によって1年がデータ保持期間として指定され、1年のデータ保持期間を有するブロックが書き込み先ブロックとして選択され後、この1年のデータ保持期間を有するブロックが有効データで満たされる前に、ライト要求(ライトコマンド)によって5年がデータ保持期間として指定され、この5年のデータ保持期間を有するブロックが書き込み先ブロックとして選択され、その5年のデータ保持期間を有するブロックも有効データで満たされていない場合である。
アクティブブロックプール51内のあるブロック内の有効データの一部が、データ更新等によって無効化され、無効データ量が所定値以下に低下すると、そのブロックはガベージコレクションの対象となる。ガベージコレクションにより、このブロック内の有効データの全てが別のブロック(フリーブロック)にコピーされることによってこのブロック内の有効データのすべて無効化されると、コントローラ4は、このブロックをフリーブロックプール52に移動する。
図6は、ブロック消耗度管理テーブル33Aを示す。
ブロック消耗度管理テーブル33Aは、システム管理情報33の一部であり、複数の消耗度に対応する複数のブロックグループを管理する。
ブロック消耗度管理テーブル33Aは、複数の消耗度に対応する複数のエントリを含む。これらエントリの各々は、消耗度フィールドと、ブロックアドレスフィールドと、推定されるデータ保持期間フィールドとを含んでもよい。消耗度フィールドは、ブロックの消耗の程度によってレベル分けされたブロックの消耗のレベルを保持する。なお、消耗度が小さいほうが消耗のレベルが小さいことを意味する。図6の例では、ブロックの消耗度は、ブロックの消去回数によって表されており、ブロックの消去回数によってレベル分けされている。
ブロックアドレスフィールドは、NAND型フラッシュメモリ5に含まれる複数のブロック(物理ブロック)それぞれに対応する複数のブロックアドレスを保持する。図6の例では、ブロックアドレスは、個々のブロックに対して、“#1”、“#2”、“#3”、…と示されている。このブロックアドレスは、ダイ番号とチップ内ブロック番号との組み合わせによって表現されてもよい。例えば、NAND型フラッシュメモリダイ#0内のブロックBLK0のブロックアドレス“#0”を(Die#0,BLK0)と表現されてもよい。同様に、NAND型フラッシュメモリダイ#0内のブロックBLK1のブロックアドレス“#2”を(Die#0,BLK1)と、NAND型フラッシュメモリダイ#0内のブロックBLK2のブロックアドレス“#3”を(Die#0,BLK2)、…、NAND型フラッシュメモリダイ#0内のブロックBLKnのブロックアドレス“#n+1”を(Die#0,BLKn)と表現されてもよい。
図6の例では、レベル1(消去回数が0~500回)のブロックは、ブロックアドレスが“#10”、“#11”、“#23”、“#30”、…であることが示されている。同様に、レベル2(消去回数が500~1000回)のブロックは、ブロックアドレスが“#9”、“#16”、“#22”、“#29”、…であること、レベル3(消去回数が1000~1500回)のブロックは、ブロックアドレスが“#7”、“#8”、“#21”、“#28”、…であること、…、レベル10(消去回数が9500~10000回)のブロックは、ブロックアドレスが“#1”、“#12”、…であることが示されている。
推定されるデータ保持期間フィールドは、消耗度に基づいて推定されるデータ保持期間を保持する。図6の例では、データ保持期間は、ブロックの消去回数に基づいて推定されている。
図6の例では、レベル1(消去回数0~500回)のブロックについて推定されるデータ保持期間は“10年”であることが示されている。同様に、レベル2(消去回数500~1000回)のブロックについて推定されるデータ保持期間は“5年”であることが示され、レベル3(消去回数1000~1500回)のブロックについて推定されるデータ保持期間は“1年”であることが示され、…、レベル10(消去回数9500~10000回)のブロックについて推定されるデータ保持期間は“1週間”であることが示さている。
図7は、図6とは別のブロック消耗度管理テーブル33A’を示す。
ブロック消耗度管理テーブル33A’は、システム管理情報33の一部であり、各消耗度の範囲に対応するブロックのブロックアドレスを管理する。図6のブロック消耗度管理テーブル33Aとの違いは、消耗度がブロックの消去時間で表され、ブロックのデータ保持期間が消去時間によって推定されていることである。
ブロック消耗度管理テーブル33A’は、ブロック消耗度管理テーブル33Aと同様に、複数のエントリを含み、これらエントリの各々は、消耗度フィールドと、ブロックアドレスフィールドと、推定されるデータ保持期間フィールドとを含んでもよい。消耗度フィールドは、ブロックの消耗の程度によってレベル分けされたブロックの消耗のレベルを保持する。図7の例では、上述したようにブロックの消耗度は、ブロックの消去時間によって表されており、ブロックの消去時間によってレベル分けされている。
ブロックアドレスフィールドは、NAND型フラッシュメモリ5に含まれる複数のブロックそれぞれに対応する複数のブロックアドレスを保持する。
推定されるデータ保持期間フィールドは、消耗度に基づいて推定されるデータ保持期間を保持する。図7の例では、データ保持期間は、ブロックの消去時間に基づいて推定されている。
なお、図6には、ブロックが一定の消耗度の範囲毎にレベル分けされて、消耗度毎にブロックアドレスが管理されているが、NAND型フラッシュメモリ内のすべてのブロックの消耗度が小さい(または大きい)ほうから順に並べて、ブロックアドレスを管理してもよい。
図7の例では、レベル1(消去時間t1~t2sec)のブロックについて推定されるデータ保持期間は“10年”であることが示されている。同様に、レベル2(消去時間t2~t3sec)のブロックについて推定されるデータ保持期間は“5年”であることが示され、レベル3(消去時間t3~t4sec)のブロックについて推定されるデータ保持期間は“1年”であることが示され、…、レベル10(消去時間t10~t11sec)のブロックについて推定されるデータ保持期間は“1週間”であることが示さている。
なお、図7には、ブロックが一定の消耗度の範囲毎にレベル分けされて、消耗度毎にブロックアドレスが管理されているが、NAND型フラッシュメモリ内のすべてのブロックのブロックアドレスのリストを、消耗度が小さい(または大きい)ほうから順に並べて、管理してもよい。
第1実施形態のフラッシュストレージデバイス3は、ブロック消耗度管理テーブル33A、ブロック消耗度管理テーブル33A’のいずれか一方のみを備えていてもよく、両方を備えていてもよい。両方を備えている場合でも、フラッシュストレージデバイス3のコントローラ4は、消去回数のみに基づいてブロックの消耗度の判断およびホスト2から指定されてデータ保持期間を満たすブロックの選択動作を実行してもよく、消去時間のみに基づいてブロックの消耗度の判断、およびホスト2から指定されてデータ保持期間を満たすブロックの選択動作を実行してもよい。また、コントローラ4は、消去回数および消去時間の両方に基づいて、ブロックの消耗度の判断およびホスト2から指定されてデータ保持期間を満たすブロックの選択動作を実行してもよい。
図8は、フラッシュストレージデバイス3に適用されるライトコマンドの例を示す。
このライトコマンドは、フラッシュストレージデバイス3にデータの書き込みを要求するコマンドである。このライトコマンドは、開始LBAを指定するパラメータ、長さ(論理ブロックの数)を指定するパラメータ、必要なデータ保持期間を示すパラメータ、等を含んでもよい。
開始LBA(開始論理アドレス)は、書き込まれるべきデータの最初のLBAを示す。
長さは、書き込まれるべきデータの長さ(書き込まれるべきデータに対応する論理ブロックの数)を示す。
必要なデータ保持期間(required-data-retention term)は、書き込まれるべきデータに必要なデータ保持期間を示す。必要なデータ保持期間の例は、1週間、2週間、1か月、2か月、4か月、6か月、8か月、1年、5年、10年等である。
図9のシーケンスチャートは、図8のライトコマンドの受信に応答して第1実施形態のフラッシュストレージデバイス3によって実行されるデータ書き込み処理を示す。
ホスト2は、LBA、データ長、必要なデータ保持期間を含むライトコマンドをフラッシュストレージデバイス3に送信する。フラッシュストレージデバイス3のコントローラ4は、消耗度から推定されるデータ保持期間が、ホスト2(ライトコマンドの必要なデータ保持期間)によって指定されるデータ保持期間以上のブロックを選択する(ステップS101)。続いて、コントローラ4は、選択されたブロックに、書き込まれるべきデータを書き込む(ステップS102)。そして、コントローラ4は、LUT32を更新して、書き込まれたデータのLBAに、そのデータの書き込まれたNAND型フラッシュメモリ5の物理記憶位置を示す物理アドレスをマッピングする(ステップS103)。
その後、コントローラ4は、ホスト2に書き込み完了のレスポンスを返す(ステップS104)。ここで、レスポンスには、ステータス(成功/失敗)が含まれる。
図10~図12は、ライトコマンドによって指定されたデータ保持期間に一致するデータ保持期間を有するブロックが存在する場合におけるフラッシュストレージデバイス3によって実行される、書き込み先ブロックの選択の仕方を示す。
図10~図12では、消耗度がレベル1~レベル10の10段階にグループ分けされて管理されていることが想定されている。なお、消耗度が小さい(レベルが低い)ほど、データ保持期間は長い。また、消耗度が大きい(レベルが高い)ほど、データ保持期間は短い。また、ブロック301~303の消耗度は、消耗度=レベル1(データ保持期間は10年)に相当し、ブロック304~307の消耗度は、消耗度=レベル2(データ保持期間は5年)に相当し、ブロック308~311の消耗度は、消耗度=レベル3(データ保持期間は1年)に相当し、ブロック312~315の消耗度は、消耗度=レベル4(データ保持期間は8か月)に相当し、ブロック316~318の消耗度は、消耗度=レベル5(データ保持期間は6か月)に相当し、ブロック319~322の消耗度は、消耗度=レベル6(データ保持期間は4か月)に相当し、ブロック323~326の消耗度は、消耗度=レベル7(データ保持期間は2か月)に相当し、ブロック327~329の消耗度は、消耗度=レベル8(データ保持期間は1か月)に相当し、ブロック330~332の消耗度は、消耗度=レベル9(データ保持期間は2週間)に相当し、ブロック333~335の消耗度は、消耗度=レベル10(データ保持期間は1週間)に相当する。
ここで、図11に示すように、ホスト2によって書き込まれるべきデータのデータ保持期間として“1年”が指定されたとする。ホスト2によって指定された書き込まれるべきデータのデータ保持期間である“1年”以上の推定されるデータ保持期間を有するブロックは、消耗度=レベル1のグループに属するブロック301~303、消耗度=レベル2のグループに属するブロック304~307、消耗度=レベル3のグループに属するブロック308~311である。コントローラ4は、これらのブロック301~311の中から書き込み先ブロックを選択する。
他方、コントローラ4は、図12に示すように書き込み先ブロックを選択することもできる。
ホスト2によって書き込まれるべきデータのデータ保持期間として“1年”が指定された場合、コントローラ4は、消耗度により推定されるデータ保持期間がホスト2によって指定されたデータ保持期間以上のブロックの中で、より短いデータ保持期間に対応する消耗度を有するブロックを書き込み先ブロックとして優先的に選択する。図12の例では、ホスト2によって指定された書き込まれるべきデータのデータ保持期間である“1年”以上の推定されるデータ保持期間を有するブロックの中で、より短いデータ保持期間に対応する消耗度を有するブロックは、推定されるデータ保持期間が“1年”である消耗度=レベル3のグループに属するブロック308~311である。コントローラ4は、これらのブロック308~311の中から書き込み先ブロックを選択する。
図13~図14は、ライトコマンドによって指定されたデータ保持期間に一致するデータ保持期間を有するブロックが存在しない場合における、フラッシュストレージデバイス3によって実行される、書き込み先ブロックの選択の仕方を示す。
図13に示すように、ホスト2から指定されたデータ保持期間である“1年”に一致するデータ保持期間を有するブロックのグループ(消耗度=レベル3のグループ)に属するブロックが存在しない場合、コントローラ4は、指定されたデータ保持期間よりも長いデータ保持期間を有するブロックのグループに属するブロックから書き込み先ブロックを選択する。図13では、ホスト2によって指定されたデータ保持期間“1年”に一致する消耗度=レベル3のグループの次に長いデータ保持期間(データ保持期間5年)を有するブロックのグループ(消耗度=レベル2のグループ)に属するブロック304~307が存在するため、図14に示すように、コントローラ4は、それらのブロック304~307の中から書き込み先ブロックを選択する。もし、データ保持期間が5年である消耗度を有するブロックのグループ(消耗度=レベル2のグループ)に属するブロック304~307も存在しなければ、コントローラ4は、その次に長いデータ保持期間(データ保持期間10年)を有するブロックのグループ(消耗度=レベル1のグループ)に属するブロック301~303の中から書き込み先ブロックを選択する。
図15は、ライトコマンドによって指定されたデータ保持期間に一致するデータ保持期間を有するブロックが存在しない場合における、フラッシュストレージデバイス3によって実行される、選択されたブロックへの消耗低減プログラムモードによるデータの書き込み動作を示す。
指定されたデータ保持期間“1年”よりも長いデータ保持期間“5年”を有するブロックが書き込み先ブロックとして選択された場合、図14のケースでは、コントローラ4は、第1のプログラム動作(通常のプログラムモード)によってライトデータを書き込み先ブロックに書き込む。
一方、図15のケースでは、コントローラ4は、プログラムモードを、通常のプログラムモードから消耗低減プログラムモードに切り替えて、消耗低減プログラムモードによってライトデータを書き込み先ブロックに書き込む。消耗低減プログラムモードでは、書き込み先ブロック内のメモリセル群に充電する電荷量は通常のプログラムモードよりも少ない。したがって、書き込み動作(プログラム動作)によってメモリセル群に加わるストレスを低く抑えることが可能となり、一回の書き込み動作(プログラム動作)当たりの書き込み先ブロックの消耗量を低減することができる。プログラム動作では、各メモリセルは複数のステートのいずれか1つに対応する閾値電圧に設定される。メモリセルに充電する電荷量が少ない場合には、ステート間の閾値電圧間のマージンが狭くなるので、データリテンションエラーが発生しやすくなり、この結果、メモリセルのデータ保持期間が短くなる。しかし、図15のケースでは、選択された書き込み先ブロックは、指定されたデータ保持期間“1年”よりも遙かに長いデータ保持期間“5年”を有している低消耗度のブロックであるので、消耗低減プログラムモードによる書き込み動作が実行されても、指定されたデータ保持期間“1年”を十分に満たすことができる。
図16は、フラッシュストレージデバイス3によって実行される、消耗低減プログラムモードによるデータの書き込み動作の際の閾値電圧レベルについて示す。
図16には、マルチレベルセル(MLC)に対応する4つの閾値電圧レベルと2ビットデータとの関係の例が示されている。
各メモリセルは、4つのステート(一つの消去ステート、および3つのプログラムステート)のいずれかに設定される。これら4つのステートは、互いに異なる閾値電圧レベルを有している。ここで、4つのステートには、2ビットデータ“11”、“01”、“00”、“10”がマッピングされてもよい。
図16の上部には、通常のプログラムモードで書き込み動作が実行された場合における4つのステートそれぞれの閾値電圧レベルについて示されている。読み出し動作においては、“11”、“01”、“00”、“10”ステートを互いに分離するための3つの電圧VA1、VB1、VC1のいずれかが読み出し電圧として使用される。なお、電圧VR1は読み出し動作において非選択ワード線に印加される電圧であり、電圧VR1は保持データに関係なくメモリセルをオンさせることが可能な電圧に設定されている。
他方、図16の下部には、消耗低減プログラムモードで書き込み動作が実行された場合における4つのステートそれぞれの閾値電圧レベルについて示されている。4つのステートは、“11”、“01”、“00”、“10”ステートを互いに分離するための3つの電圧VA2(<VA1)、VB2(<VB1)、VC2(<Vc1)のいずれかが読み出し電圧として使用される。なお、電圧VR2(<VR1)は読み出し動作において非選択ワード線に印加される電圧であり、電圧VR2は保持データに関係なくメモリセルをオンさせることが可能な電圧に設定されている。
消耗低減プログラムモードでは、通常のプログラムモードに比べ、メモリセル群に印加されるプログラム電圧を下げること、またはメモリセル群にプログラム電圧が印可される回数を減らすことができる。これにより、データ書き込み動作によるメモリセル群の消耗を低減させることができ、フラッシュストレージデバイス3を長寿命化することができる。
図17のフローチャートは、ブロックを消耗度に基づいて分類する手順を示す。ここでは、説明を簡単にするために、NAND型フラッシュメモリ5に含まれるブロックは、消耗度=レベル1のグループ、消耗度=レベル2のグループ、消耗度=レベル3のグループ、消耗度=レベル4のグループに分類されるものとする。
コントローラ4は、NAND型フラッシュメモリ5に含まれる各ブロックの消耗度を監視する(ステップS201)。そして、コントローラ4は、ある一つのブロックを選択する(ステップS202)。
以後のステップS203~S209において、ステップS202で選択されたブロックの消耗度に基づいて、選択されたブロックのグループ分けが実行される。
コントローラ4は、選択されたブロックの消耗度がレベル1に対応するか否かを判定する(ステップS203)。選択されたブロックの消耗度がレベル1に対応するならば(ステップS203のYES)、コントローラ4は、選択されたブロックを消耗度=レベル1のグループに分類する(ステップS204)。
選択されたブロックの消耗度がレベル1に対応しないならば(ステップS203のNO)、コントローラ4は、選択されたブロックの消耗度がレベル2に対応するか否かを判定する(ステップS205)。選択されたブロックの消耗度がレベル2に対応するならば(ステップS205のYES)、コントローラ4は、選択されたブロックを消耗度=レベル2のグループに分類する(ステップS206)。
選択されたブロックの消耗度がレベル2に対応しないならば(ステップS205のNO)、コントローラ4は、選択されたブロックの消耗度がレベル3に対応するか否かを判定する(ステップS207)。選択されたブロックの消耗度がレベル3に対応するならば(ステップS207のYES)、コントローラ4は、選択されたブロックを消耗度=レベル3のグループに分類する(ステップS208)。
選択されたブロックの消耗度がレベル3に対応しないならば(ステップS207のNO)、コントローラ4は、選択されたブロックを消耗度=レベル4のグループに分類する(ステップS209)。
図18のフローチャートは、消耗度に基づいて書き込み先ブロックを選択し、選択したブロックにデータを書き込む動作の手順を示す。
書き込むべきデータに必要なデータ保持期間を指定するパラメータを含むライトコマンドがホスト2から受信されると(ステップS301のYES)、コントローラ4は、必要なデータ保持期間を満たす消耗度を有するブロックを探し(ステップS302)、必要なデータ保持期間を満たすブロックが存在するか否かを判定する(ステップS303)。必要なデータ保持期間を満たす消耗度を有するブロックとは、その消耗度により推定されるデータ保持期間がライトコマンドによって指定されたデータ保持期間以上であるブロックのことである。
必要なデータ保持期間を満たす消耗度を有するブロックが存在しなければ(ステップS303のNO)、コントローラ4は、ホスト2にエラーを返す(ステップS315)。必要なデータ保持期間を満たす消耗度を有するブロックが存在しなければ、ホスト2により指定されるデータ保持期間を満たすブロックに書き込むべきデータを書き込むことができないため、書き込むべきデータに必要なデータ保持期間を確保することができない。したがって、その旨をホスト2にエラーとして返す。
必要なデータ保持期間を満たす消耗度を有するブロックが存在するならば(ステップS303のYES)、コントローラ4は必要なデータ保持期間と一致するデータ保持期間に対応する消耗度を有するブロックが存在するか否かを判定する(ステップS304)。
必要なデータ保持期間と一致するデータ保持期間に対応する消耗度を有するブロックが存在するならば(ステップS304のYES)、コントローラ4は、必要なデータ保持期間と一致するデータ保持期間に対応する消耗度を有するブロックを選択する(ステップS305)。例えば、ライトコマンドにより指定されるデータ保持期間と一致するデータ保持期間に対応する消耗度がレベル3である場合、コントローラ4は、レベル3の消耗度を有するブロックが存在するか否かを判定し、レベル3の消耗度を有するブロックが存在するならば、レベル3の消耗度を有するブロックを選択する。
そして、コントローラ4は、選択されたブロックに、書き込むべきデータを通常のプログラムモードにより書き込む(ステップS306)。
必要なデータ保持期間と一致するデータ保持期間に対応する消耗度を有するブロックが存在しないならば(ステップS304のNO)、コントローラ4は、必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消耗度のブロックが存在するか否か判定する(ステップS307)。必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消耗度のブロックが存在するならば(ステップS307のYES)、コントローラ4は、必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消耗度のブロックを選択する(ステップS308)。
例えば、ライトコマンドにより指定されるデータ保持期間と一致するデータ保持期間に対応する消耗度がレベル3であり、レベル3の消耗度を有するブロックが存在しない場合に、コントローラ4は、レベル3の消耗度により推定されるデータ保持期間よりも1レベル長いデータ保持期間を有するブロック、即ち、レベル2の消耗度を有するブロックが存在するか否かを判定し、レベル2の消耗度を有するブロックが存在するならば、レベル2の消耗度を有するブロックを書き込み先ブロックとして選択する。
そして、コントローラ4は、選択されたブロックに、書き込むべきデータを通常のプログラムモードにより書き込む(ステップS309)。
必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消耗度のブロックが存在しないならば(ステップS307のNO)、コントローラ4は、必要なデータ保持期間よりも2レベル長いデータ保持期間に対応する消耗度のブロックが存在するか否かを判定する。そして、必要なデータ保持期間よりも2レベル長いデータ保持期間に対応する消耗度のブロックが存在しなければ、コントローラ4は、必要なデータ保持期間よりも3レベル長いデータ保持期間に対応する消耗度のブロックが存在するか否かを判定する。このように、コントローラ4は、判定したレベルの消耗度を有するブロックが存在しなければ、その判定したレベルよりも1レベル長いデータ保持期間に対応する消耗度のブロックが存在するか否かを判定していく。これは、必要なデータ保持期間以上のデータ保持期間に対応する消耗度を有するブロックの中で、できるだけ短いデータ保持期間に対応する消耗度を有するブロックを優先的に書き込み先ブロックとして選択するためである。
例えば、ライトコマンドにより指定されるデータ保持期間と一致するデータ保持期間に対応する消耗度はレベル3である場合において、コントローラ4は、レベル3の消耗度を有するブロックが存在するか否かを判定し、レベル3の消耗度を有するブロックが存在しないならばレベル2の消耗度を有するブロックが存在するか否かの判定を実行する。
そして、最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消耗度のブロックが存在するか否かが判定され(ステップS310)、最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消耗度のブロックが存在するならば(ステップS310のYES)、コントローラ4は、最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消耗度のブロックを書き込み先ブロックとして選択する(ステップS311)。
コントローラ4は、選択されたブロックに書き込むべきデータを通常のプログラムモードにより書き込む(ステップS312)。
最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消耗度のブロックが存在しないならば(ステップS310のNO)、コントローラ4は、最も長いデータ保持期間に対応する消耗度のブロックを書き込み先ブロックとして選択する(ステップS313)。そして、コントローラ4は、選択されたブロックに書き込むべきデータを通常のプログラムモードにより書き込む(ステップS314)。例えば、ライトコマンドにより指定されるデータ保持期間と一致するデータ保持期間に対応する消耗度はレベル3であり、レベル3およびレベル2の消耗度を有するブロックが存在しない場合には、コントローラ4は、ライトコマンドにより指定されるデータ保持期間以上のデータ保持期間に対応する消耗度を有するブロックの中で最も長いデータ保持期間に対応する消耗度を有するブロックであるレベル1の消耗度を有するブロックを書き込み先ブロックとして選択する。
図19のフローチャートは、消耗度に基づいて書き込み先ブロックを選択し、消耗低減プログラムモードにより選択したブロックにデータを書き込む動作の手順を示す。
図19のフローチャートは、図18のフローチャートにおけるステップS309をステップS409、ステップS312をステップS412、ステップS314をステップS414に変更されたフローチャートである。
必要なデータ保持期間と一致するデータ保持期間に対応する消耗度を有するブロックが書き込み先ブロックとして選択された場合には(ステップS303~S305)、コントローラ4は、選択されたブロックに、書き込むべきデータを通常のプログラムモードにより書き込む(ステップS306)。
他方、必要なデータ保持期間と一致するデータ保持期間に対応する消耗度を有するブロックが存在しないため、指定されたデータ保持期間よりも長いデータ保持期間に対応する消耗度を有するブロックが書き込み先ブロックとして選択された場合(ステップS308、ステップS311、ステップS313)、コントローラ4は、選択されたブロックに書き込むべきデータを、消耗低減プログラムモードで書き込む(ステップS409、ステップS412、ステップS414)。
図20のフローチャートは、ブロックを消去回数に基づいて分類する手順を示す。ブロックの消耗度はブロックの消去回数に基づいて判断することができるため、ブロックの消去回数に基づいてブロックが分類される動作が実行されてもよい。なお、消去回数が多いほど消耗度が大きくなり、消去回数が少ないほど消耗度が小さくなる。
コントローラ4は、NAND型フラッシュメモリ5に含まれる各ブロックの消去回数を監視する(ステップS501)。そして、コントローラ4は、ある一つのブロックを選択する(ステップS502)。
以後のステップS503~S509において、ステップS502で選択されたブロックの消去回数に基づいて、選択されたブロックのグループ分けが実行される。
コントローラ4は、選択されたブロックの消去回数がレベル1に対応するか否かを判定する(ステップS503)。選択されたブロックの消去回数がレベル1に対応するならば(ステップS503のYES)、コントローラ4は、選択されたブロックを消耗度=レベル1のグループに分類する(ステップS504)。
選択されたブロックの消去回数がレベル1に対応しないならば(ステップS503のNO)、コントローラ4は、選択されたブロックの消去回数がレベル2に対応するか否かを判定する(ステップS505)。選択されたブロックの消去回数がレベル2に対応するならば(ステップS505のYES)、コントローラ4は、選択されたブロックを消耗度=レベル2のグループに分類する(ステップS506)。
選択されたブロックの消去回数がレベル2に対応しないならば(ステップS505のNO)、コントローラ4は、選択されたブロックの消去回数がレベル3に対応するか否かを判定する(ステップS507)。選択されたブロックの消去回数がレベル3に対応するならば(ステップS507のYES)、コントローラ4は、選択されたブロックを消耗度=レベル3のグループに分類する(ステップS508)。
選択されたブロックの消去回数がレベル3に対応しないならば(ステップS507のNO)、コントローラ4は、選択されたブロックを消耗度=レベル4のグループに分類する(ステップS509)。
図21のフローチャートは、消去回数に基づいて書き込み先ブロックを選択し、選択したブロックにデータを書き込む動作の手順を示す。
書き込むべきデータに必要なデータ保持期間を指定するパラメータを含むライトコマンドがホスト2から受信されると(ステップS601のYES)、コントローラ4は、ブロック消耗度管理テーブル33Aを参照し、必要なデータ保持期間を満たす消去回数を有するブロックを探し(ステップS602)、必要なデータ保持期間を満たす消去回数を有するブロックが存在するか否かを判定する(ステップS603)。必要なデータ保持期間を満たす消去回数を有するブロックとは、消去回数により推定されるデータ保持期間がライトコマンドによって指定されたデータ保持期間以上であるブロックのことである。
必要なデータ保持期間を満たす消去回数を有するブロックが存在しなければ(ステップS603のNO)、コントローラ4は、ホスト2にエラーを返す(ステップS615)。
必要なデータ保持期間を満たす消去回数を有するブロックが存在するならば(ステップS603のYES)、コントローラ4は必要なデータ保持期間と一致するデータ保持期間に対応する消去回数を有するブロックが存在するか否かを判定する(ステップS604)。
必要なデータ保持期間と一致するデータ保持期間に対応する消去回数を有するブロックが存在するならば(ステップS604のYES)、コントローラ4は、必要なデータ保持期間と一致するデータ保持期間に対応する消去回数を有するブロックを選択する(ステップS605)。そして、コントローラ4は、選択されたブロックに、書き込むべきデータを通常のプログラムモードにより書き込む(ステップS606)。
必要なデータ保持期間と一致するデータ保持期間に対応する消去回数を有するブロックが存在しないならば(ステップS604のNO)、コントローラ4は、必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消去回数のブロックが存在するか否か判定する(ステップS607)。必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消去回数のブロックが存在するならば(ステップS607のYES)、コントローラ4は、必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消去回数のブロックを選択する(ステップS608)。そして、コントローラ4は、選択されたブロックに、書き込むべきデータを通常のプログラムモードにより書き込む(ステップS609)。
必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消去回数のブロックが存在しないならば(ステップS607のNO)、コントローラ4は、必要なデータ保持期間よりも2レベル長いデータ保持期間に対応する消去回数のブロックが存在するか否かを判定する。そして、コントローラ4は、必要なデータ保持期間よりも2レベル長いデータ保持期間に対応する消去回数のブロックが存在しなければ、必要なデータ保持期間よりも3レベル長いデータ保持期間に対応する消去回数のブロックが存在するか否かを判定する。このように、コントローラ4は、判定したレベルの消去回数を有するブロックが存在しなければ、その判定したレベルよりも1レベル長いデータ保持期間に対応する消去回数のブロックが存在するか否かを判定していく。これは、必要なデータ保持期間以上のデータ保持期間に対応する消去回数を有するブロックの中で、できるだけ短いデータ保持期間に対応する消去回数を有するブロックを優先的に書き込み先ブロックとして選択するためである。
そして、最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消去回数のブロックが存在するか否かが判定され(ステップS610)、最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消去回数のブロックが存在するならば(ステップS610のYES)、コントローラ4は、最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消去回数のブロックを書き込み先ブロックとして選択する(ステップS611)。そして、コントローラ4は、選択されたブロックに書き込むべきデータを通常のプログラムモードにより書き込む(ステップS612)。
最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消去回数のブロックが存在しないならば(ステップS610のNO)、コントローラ4は、最も長いデータ保持期間に対応する消去回数のブロックを書き込み先ブロックとして選択する(ステップS613)。コントローラ4は、選択されたブロックに書き込むべきデータを通常のプログラムモードにより書き込む(ステップS614)。
図22のフローチャートは、消去回数に基づいて書き込み先ブロックを選択し、消耗低減プログラムモードにより選択したブロックにデータを書き込む動作の手順を示す。
図22のフローチャートは、図21のフローチャートにおけるステップS609をステップS709、ステップS612をステップS712、ステップS614をステップS714に変更されたフローチャートである。
必要なデータ保持期間と一致するデータ保持期間に対応する消去回数を有するブロックが書き込み先ブロックとして選択された場合には(ステップS603~S605)、コントローラ4は、選択されたブロックに、書き込むべきデータを通常のプログラムモードにより書き込む(ステップS606)。
他方、必要なデータ保持期間と一致するデータ保持期間に対応する消去回数を有するブロックが存在しないため、指定されたデータ保持期間よりも長いデータ保持期間に対応する消去回数を有するブロックが書き込み先ブロックとして選択された場合(ステップS608、ステップS611、ステップS613)、コントローラ4は、選択されたブロックに書き込むべきデータを、消耗低減プログラムモードで書き込む(ステップS709、ステップS712、ステップS714)。
図23のフローチャートは、ブロックを消去時間に基づいて分類する手順を示す。ブロックの消耗度はブロックの消去時間に基づいて判断することができるため、ブロックの消去時間に基づいてブロックが分類される動作が実行されてもよい。なお、消去時間が長いほど消耗度が大きくなり、消去時間が短いほど消耗度が小さくなる。
コントローラ4は、NAND型フラッシュメモリ5に含まれる各ブロックの消去時間を監視する(ステップS801)。そして、コントローラ4は、ある一つのブロックを選択する(ステップS802)。
以後のステップS803~S809において、ステップS802で選択されたブロックの消去時間に基づいて、選択されたブロックのグループ分けが実行される。
コントローラ4は、選択されたブロックの消去時間がレベル1に対応するか否かを判定する(ステップS803)。選択されたブロックの消去時間がレベル1に対応するならば(ステップS803のYES)、コントローラ4は、選択されたブロックを消耗度=レベル1のグループに分類する(ステップS804)。
選択されたブロックの消去時間がレベル1に対応しないならば(ステップS803のNO)、コントローラ4は、選択されたブロックの消去時間がレベル2に対応するか否かを判定する(ステップS805)。選択されたブロックの消去時間がレベル2に対応するならば(ステップS805のYES)、コントローラ4は、選択されたブロックを消耗度=レベル2のグループに分類する(ステップS806)。
選択されたブロックの消去時間がレベル2に対応しないならば(ステップS805のNO)、コントローラ4は、選択されたブロックの消去時間がレベル3に対応するか否かを判定する(ステップS807)。選択されたブロックの消去時間がレベル3に対応するならば(ステップS807のYES)、コントローラ4は、選択されたブロックを消耗度=レベル3のグループに分類する(ステップS808)。
選択されたブロックの消去時間がレベル3に対応しないならば(ステップS807のNO)、コントローラ4は、選択されたブロックを消耗度=レベル4のグループに分類する(ステップS809)。
図24のフローチャートは、消去時間に基づいて書き込み先ブロックを選択し、選択したブロックにデータを書き込む動作の手順を示す。
書き込むべきデータに必要なデータ保持期間を指定するパラメータを含むライトコマンドがホスト2から受信されると(ステップS901のYES)、コントローラ4は、ブロック消耗度管理テーブル33A’を参照し、必要なデータ保持期間を満たす消去時間を有するブロックを探し(ステップS902)、必要なデータ保持期間を満たす消去時間を有するブロックが存在するか否かを判定する(ステップS903)。必要なデータ保持期間を満たす消去時間を有するブロックとは、消去時間により推定されるデータ保持期間がライトコマンドによって指定されたデータ保持期間以上であるブロックのことである。
必要なデータ保持期間を満たす消去時間を有するブロックが存在しなければ(ステップS903のNO)、コントローラ4は、ホスト2にエラーを返す(ステップS915)。
必要なデータ保持期間を満たす消去時間を有するブロックが存在するならば(ステップS903のYES)、コントローラ4は必要なデータ保持期間と一致するデータ保持期間に対応する消去時間を有するブロックが存在するか否かを判定する(ステップS904)。
必要なデータ保持期間と一致するデータ保持期間に対応する消去時間を有するブロックが存在するならば(ステップS904のYES)、コントローラ4は、必要なデータ保持期間と一致するデータ保持期間に対応する消去時間を有するブロックを選択する(ステップS905)。そして、コントローラ4は、選択されたブロックに、書き込むべきデータを通常のプログラムモードにより書き込む(ステップS906)。
必要なデータ保持期間と一致するデータ保持期間に対応する消去時間を有するブロックが存在しないならば(ステップS904のNO)、コントローラ4は、必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消去時間のブロックが存在するか否か判定する(ステップS907)。必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消去時間のブロックが存在するならば(ステップS907のYES)、コントローラ4は、必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消去時間のブロックを選択する(ステップS908)。そして、コントローラ4は、選択されたブロックに、書き込むべきデータを通常のプログラムモードにより書き込む(ステップS909)。
必要なデータ保持期間よりも1レベル長いデータ保持期間に対応する消去時間のブロックが存在しないならば(ステップS907のNO)、必要なデータ保持期間よりも2レベル長いデータ保持期間に対応する消去時間のブロックが存在するか否かを判定する。そして、必要なデータ保持期間よりも2レベル長いデータ保持期間に対応する消去時間のブロックが存在しなければ、必要なデータ保持期間よりも3レベル長いデータ保持期間に対応する消去時間のブロックが存在するか否かを判定する。このように、判定したレベルの消去時間を有するブロックが存在しなければ、その判定したレベルよりも1レベル長いデータ保持期間に対応する消去時間のブロックが存在するか否かを判定していく。これは、必要なデータ保持期間以上のデータ保持期間に対応する消去時間を有するブロックの中で、できるだけ短いデータ保持期間に対応する消去時間を有するブロックを優先的に書き込み先ブロックとして選択するためである。
そして、最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消去時間のブロックが存在するか否かが判定され(ステップS910)、最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消去時間のブロックが存在するならば(ステップS910のYES)、コントローラ4は、最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消去時間のブロックを書き込み先ブロックとして選択する(ステップS911)。そして、コントローラ4は、選択されたブロックに書き込むべきデータを通常のプログラムモードにより書き込む(ステップS912)。
最も長いデータ保持期間よりも1レベル短いデータ保持期間に対応する消去時間のブロックが存在しないならば(ステップS910のNO)、コントローラ4は、最も長いデータ保持期間に対応する消去時間のブロックを書き込み先ブロックとして選択する(ステップS913)。コントローラ4は、選択されたブロックに書き込むべきデータを通常のプログラムモードにより書き込む(ステップS914)。
図25のフローチャートは、消去時間に基づいて書き込み先ブロックを選択し、消耗低減プログラムモードにより選択したブロックにデータを書き込む動作の手順を示す。
図25のフローチャートは、図24のフローチャートにおけるステップS909をステップS1009、ステップS912をステップS1012、ステップS914をステップS1014に変更されたフローチャートである。
必要なデータ保持期間と一致するデータ保持期間に対応する消去時間を有するブロックが書き込み先ブロックとして選択された場合には(ステップS903~S905)、コントローラ4は、選択されたブロックに、書き込むべきデータを通常のプログラムモードにより書き込む(ステップS906)。
他方、必要なデータ保持期間と一致するデータ保持期間に対応する消去時間を有するブロックが存在しないため、指定されたデータ保持期間よりも長いデータ保持期間に対応する消去時間を有するブロックが書き込み先ブロックとして選択された場合(ステップS908、ステップS911、ステップS913)、コントローラ4は、選択されたブロックに書き込むべきデータを消耗低減プログラムモードで書き込む(ステップS1009、ステップS1012、ステップS1014)。
(第2実施形態)
第1実施形態においては、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理を行うルックアップテーブル(LUT)32がフラッシュストレージデバイス3内に設けられていた。第2実施形態においては、ホスト2が、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理を行うルックアップテーブル(LUT)32Aを有しており、フラッシュストレージデバイス3にはルックアップテーブル(LUT)32は存在しない。
以下、第1実施形態と異なる点のみを説明する。
図26は、第2実施形態に係るメモリシステムを含む情報処理システム1の構成例を示す。
第1実施形態との違いは、フラッシュストレージデバイス3内には、LUT32が無く、その代わりに、ホスト2のフラッシュストレージマネージャ44内にLUT32Aがあることである。
LUT32Aでは、論理アドレスそれぞれとフラッシュストレージデバイス3の物理アドレスそれぞれとの間のマッピングが管理される。LUT32Aにおいては、論理アドレスはデータを識別する識別子(タグ)であり、この論理アドレス(タグ)は、LBAであってもよいし、キー・バリュー・ストアのキーであってもよいし、ファイル名のようなファイル識別子であってもよい。LUT32Aはフラッシュストレージマネージャ44によって管理されており、LUT32Aの更新もフラッシュストレージマネージャ44によって行われる。
また、フラッシュストレージデバイス3内のシステム管理情報33には、第1実施形態と同様に、ブロック消耗度管理テーブル33A、ブロック消耗度管理テーブル33A’、ブロック情報が含まれる。ブロック情報には、上述したように、NAND型フラッシュメモリ5内のブロックの各々に含まれるデータそれぞれの有効/無効を示すフラグ(ビットマップフラグ)が含まれる。
図27は、第2実施形態のフラッシュストレージデバイス3に適用されるライトコマンドを示す。
このライトコマンドは、フラッシュストレージデバイス3にデータの書き込みを要求するコマンドである。このライトコマンドは、QoSドメインIDを指定するパラメータ、論理アドレスを指定するパラメータ、長さを指定するパラメータ、必要なデータ保持期間を指定するパラメータ、等を含んでもよい。
QoSドメインIDは、データを書き込むべきQoSドメインを一意に識別可能な識別子である。あるエンドユーザからのライト要求に応じてホスト2から送信されるライトコマンドは、このエンドユーザに対応するQoSドメインを指定するQoSドメインIDを含んでもよい。ネームスペースIDがQoSドメインIDとして扱われてもよい。
論理アドレスは、書き込むべきデータを識別するタグであり、例えば、LBA、キー・バリュー・ストアのキー、ファイル識別子がこれに相当する。
長さは、書き込むべきライトデータの長さを示す。長さは、LBAの数によって指定されてもよいし、あるいはそのサイズがバイトによって指定されてもよい。
必要なデータ保持期間は、書き込むべきデータに必要なデータ保持期間(例えば、1週間、2週間、1か月、2か月、4か月、6か月、8か月、1年、5年、10年等)を示す。
図28は、図27のライトコマンドに対するレスポンスを示す。
このレスポンスは、論理アドレス、物理アドレス、長さを含む。
論理アドレスは、図27のライトコマンドに含まれていた論理アドレスである。
物理アドレスは、図27のライトコマンドに応じてデータが書き込まれたNAND型フラッシュメモリ5内の物理記憶位置の物理アドレスを示す。
長さは、書き込まれたライトデータの長さを示す。長さは、LBAの数によって指定されてもよいし、あるいはそのサイズがバイトによって指定されてもよい。
図29は、第2実施形態のフラッシュストレージデバイス3に適用されるTrimコマンドを示す。
このTrimコマンドは、物理アドレス、長さを含む。
物理アドレスは、無効化すべきデータ(参照カウントを減らすべきデータ)が格納されている最初の物理記憶位置を示す。
長さは、無効化すべきデータ(参照カウントを減らすべきデータ)の長さを示す。この長さ(データ長)は、バイトによって指定されてもよい。
コントローラ4は、ブロックの各々に含まれるデータそれぞれの有効/無効を示すフラグ(ビットマップフラグ)を管理する。無効にすべきデータが格納されている物理記憶位置を示す物理アドレスを含むTrimコマンドをホスト2から受信した場合、コントローラ4は、システム管理情報33の一部であるブロック情報を更新して、Trimコマンドに含まれる物理アドレスに対応する物理記憶位置のデータに対応するフラグ(ビットマップフラグ)を、無効を示す値に変更する。
図30のシーケンスチャートは、図27のライトコマンドの受信に応答してホスト2とフラッシュストレージデバイス3とによって実行されるデータ書き込み処理を示す。
ホスト2は、QoSドメインID、論理アドレス、ライトデータ、長さ、必要なデータ保持期間を含むライトコマンドをフラッシュストレージデバイス3に送信する。フラッシュストレージデバイス3のコントローラ4がこのライトコマンドを受信した時、コントローラ4は、消耗度により推定されるデータ保持期間がホスト2によって指定されたデータ保持期間以上のブロックを選択し(ステップS1101)、選択されたブロック内の書き込み位置を決定し、この選択されたブロック内の書き込み位置にライトデータを書き込む(ステップS1102)。
続いて、コントローラ4は、このライトコマンドに対するレスポンスをホスト2に返す(ステップS1103)。レスポンスには、論理アドレス、物理アドレス、長さが含まれる。物理アドレスは、選択されたブロックとこの選択されたブロック内の書き込み位置の双方を指定する。この物理アドレスは、選択されたブロックを示すブロックアドレスと、書き込み位置を示すブロック内オフセットとによって表現されてもよい。
ホスト2がこのレスポンスを受信した時、ホスト2は、ホスト2によって管理されているLUT32Aを更新して、書き込まれたライトデータに対応する論理アドレスに物理アドレスをマッピングする(ステップS1104)。
この後、ホスト2は、上述の更新データの書き込みによって不要になった以前のデータを無効化するためのTrimコマンドをフラッシュストレージデバイス3に送信する。
フラッシュストレージデバイス3のコントローラ4は、このTrimコマンドに応じて、ブロック情報を更新する(ステップS1105)。ブロック情報の更新とは、システム管理情報33の一部であるブロック情報を更新して、Trimコマンドに含まれる物理アドレスに対応する物理記憶位置のデータに対応するフラグ(ビットマップフラグ)を、無効を示す値に変更することである。
図31は、フラッシュストレージデバイス3を内蔵するホスト2の構成例を示す。
この情報処理装置は、ラックに収容可能な薄い箱形の筐体201を備える。多数のフラッシュストレージデバイス3は筐体201内に配置されてもよい。この場合、各フラッシュストレージデバイス3は筐体201の前面201Aに設けられたスロットに取り外し可能に挿入されてもよい。
システムボード(マザーボード)202は筐体201内に配置される。システムボード(マザーボード)202上においては、CPU101、メモリ102、ネットワークコントローラ105、コントローラ107を含む様々な電子部品が実装されている。これら電子部品がホスト2として機能する。
以上説明したように、第1および第2実施形態によれば、書き込むべきデータに必要なデータ保持期間を指定するパラメータを含むライト要求がホスト2から受信された場合、消耗度から推定されるデータ保持期間がホスト2によって指定されたデータ保持期間以上のブロックが書き込み先ブロックとして選択され、この選択されたブロックにデータが書き込まれる。これにより、異なるデータ保持期間を指定するライト要求それぞれが混在される環境においては、異なる消耗度を有する複数のブロックを、必要なデータ保持期間が異なる複数種のデータに対して最適に配分することが可能となる。例えば、5年のデータ保持期間が必要なデータのライト要求に対しては低消耗度のブロックを書き込み先ブロックとして割り当て、1か月のデータ保持期間が必要なデータのライト要求に対しては比較的大消耗度のブロックを書き込み先ブロックとして割り当てることができる。
また、第1および第2実施形態によれば、消耗度から推定されるデータ保持期間が指定されたデータ保持期間以上のブロックの中で、より短いデータ保持期間に対応する消耗度を有するブロックが優先的に書き込み先ブロックとして選択される。このため、ホスト2から指定されたデータ保持期間が短いデータを書き込む場合に、必要以上のデータ保持期間を有するブロックをそのデータの書き込みに使用してしまい、ホスト2から指定されたデータ保持期間が長いデータの書き込みを実行する際に、ホスト2から指定されたデータ保持期間以上のデータ保持期間に対応する消耗度を有するブロックが不足してしまうという事態を防ぐことができる。したがって、異なる消耗度を有する複数のブロックを、必要なデータ保持期間が異なる複数種のデータに対してより最適に配分することが可能となる。
さらに、書き込み先ブロックとして選択されたブロックの消耗度により推定されるデータ保持期間がホスト2により指定されたデータ保持期間よりも長い場合、通常のプログラムモードによるプログラム動作よりも選択されたブロックのメモリセル群に充電する電荷量が少ない消耗低減モードによるプログラム動作によってデータを選択されたブロックに書き込むことができる。これにより、通常のプログラムモードによるプログラム動作を実行する場合と比べて、メモリセル群の消耗を低減させることができ、フラッシュストレージデバイス3を長寿命化することができる。
よって、第1および第2実施形態によれば、信頼性の向上を図ることができるメモリシステムを提供することができる。
なお、第1および第2実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、第1および第2実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…フラッシュストレージデバイス、4…コントローラ、5…NAND型フラッシュメモリ、21…消去回数モニタ部、22…消去時間モニタ部、23…ブロック分類部、24…ライト動作制御部、25…消耗低減処理部。

Claims (10)

  1. ホストに接続可能なメモリシステムであって、
    不揮発性メモリと、
    前記不揮発性メモリに電気的に接続され、前記不揮発性メモリを制御するコントローラとを具備し、
    前記コントローラは、
    前記不揮発性メモリ内の複数のブロックそれぞれの消耗度を管理し、
    前記複数のブロックそれぞれの消耗度に基づいて前記複数のブロックを複数のデータ保持期間に対応する複数のブロックグループに分類し、
    書き込むべき第1のデータに必要なデータ保持期間を指定するパラメータを含むライト要求を前記ホストから受信し、
    前記指定されたデータ保持期間に一致するデータ保持期間を有する第1のブロックグループに分類されているブロックが存在する場合、前記第1のブロックグループに分類されている第1のブロックを前記複数のブロックから選択し、前記第1のデータを前記第1のブロックに書き込み、
    前記第1のブロックグループに分類されているブロックが存在しない場合、前記指定されたデータ保持期間よりも長いデータ保持期間を有する第2のブロックグループに分類されている第2のブロックを前記複数のブロックから選択し、前記第1のデータを前記第2のブロックに書き込むように構成されている、メモリシステム。
  2. 前記複数のブロックそれぞれの消耗度は前記複数のブロックそれぞれの消去回数によって表される請求項1記載のメモリシステム。
  3. 前記複数のブロックそれぞれの消耗度は前記複数のブロックそれぞれの消去時間によって表される請求項1記載のメモリシステム。
  4. 前記コントローラは、前記第1のブロックグループに分類されているブロックが存在しない場合、前記指定されたデータ保持期間よりも長いデータ保持期間を有するブロックグループの中で、より短いデータ保持期間に対応するブロックグループ前記第2のブロックグループとして優先的に選択するように構成されている請求項1記載のメモリシステム。
  5. 前記コントローラは、
    前記第1のブロックグループに分類されているブロックが存在する場合、前記第1のブロックグループに分類されている前記第1のブロックに、第1のプログラム動作によって前記第1のデータを書き込み、
    前記第1のブロックグループに分類されているブロックが存在しない場合、前記第2のブロックグループに分類されている前記第2のブロックに、前記第1のプログラム動作よりもメモリセル群に充電する電荷量が少ない第2のプログラム動作によって前記第1のデータを書き込む請求項1記載のメモリシステム。
  6. 不揮発性メモリを制御する制御方法であって、
    前記不揮発性メモリ内の複数のブロックそれぞれの消耗度を管理することと、
    前記複数のブロックそれぞれの消耗度に基づいて前記複数のブロックを複数のデータ保持期間に対応する複数のブロックグループに分類することと、
    書き込むべき第1のデータに必要なデータ保持期間を指定するパラメータを含むライト要求をホストから受信することと、
    前記指定されたデータ保持期間に一致するデータ保持期間を有する第1のブロックグループに分類されているブロックが存在する場合、前記第1のブロックグループに分類されている第1のブロックを前記複数のブロックから選択し、前記第1のデータを前記第1のブロックに書き込むことと、
    前記第1のブロックグループに分類されているブロックが存在しない場合、前記指定されたデータ保持期間よりも長いデータ保持期間を有する第2のブロックグループに分類されている第2のブロックを前記複数のブロックから選択し、前記第1のデータを前記第2のブロックに書き込むことと、を具備する制御方法。
  7. 前記複数のブロックそれぞれの消耗度は前記複数のブロックそれぞれの消去回数によって表される請求項記載の制御方法。
  8. 前記複数のブロックそれぞれの消耗度は前記複数のブロックそれぞれの消去時間によって表される請求項記載の制御方法。
  9. 前記第1のブロックグループに分類されているブロックが存在しない場合、前記指定されたデータ保持期間よりも長いデータ保持期間を有するブロックグループの中で、より短いデータ保持期間に対応するブロックグループ前記第2のブロックグループとして優先的に選択する請求項記載の制御方法。
  10. 前記第1のブロックグループに分類されている前記第1のブロックに対しては、第1のプログラム動作によって前記第1のデータが書き込まれ
    前記第2のブロックグループに分類されている前記第2のブロックに対しては、前記第1のプログラム動作よりもメモリセル群に充電する電荷量が少ない第2のプログラム動作によって前記第1のデータが書き込まれる請求項記載の制御方法。
JP2017213955A 2017-11-06 2017-11-06 メモリシステムおよび制御方法 Active JP7010667B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2017213955A JP7010667B2 (ja) 2017-11-06 2017-11-06 メモリシステムおよび制御方法
US16/004,509 US11042305B2 (en) 2017-11-06 2018-06-11 Memory system and method for controlling nonvolatile memory
CN201810887402.6A CN109753234B (zh) 2017-11-06 2018-08-06 存储器系统及非易失性存储器的控制方法
TW107127264A TWI729307B (zh) 2017-11-06 2018-08-06 記憶體系統及非揮發性記憶體之控制方法
US17/331,043 US11747989B2 (en) 2017-11-06 2021-05-26 Memory system and method for controlling nonvolatile memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017213955A JP7010667B2 (ja) 2017-11-06 2017-11-06 メモリシステムおよび制御方法

Publications (2)

Publication Number Publication Date
JP2019086970A JP2019086970A (ja) 2019-06-06
JP7010667B2 true JP7010667B2 (ja) 2022-01-26

Family

ID=66327149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017213955A Active JP7010667B2 (ja) 2017-11-06 2017-11-06 メモリシステムおよび制御方法

Country Status (4)

Country Link
US (2) US11042305B2 (ja)
JP (1) JP7010667B2 (ja)
CN (1) CN109753234B (ja)
TW (1) TWI729307B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11301143B2 (en) * 2019-06-05 2022-04-12 Micron Technology, Inc. Selective accelerated sampling of failure-sensitive memory pages
US11720352B2 (en) * 2019-12-10 2023-08-08 Micron Technology, Inc. Flexible command pointers to microcode operations
US11562792B2 (en) * 2020-03-18 2023-01-24 Kioxia Corporation Memory system having a non-volatile memory and a controller configured to switch a mode for controlling an access operation to the non-volatile memory
US11543987B2 (en) * 2020-06-04 2023-01-03 Western Digital Technologies, Inc. Storage system and method for retention-based zone determination
US11556257B2 (en) * 2020-08-14 2023-01-17 Micron Technology, Inc. Selectable wear life indicator based on data retention
JP2022114726A (ja) * 2021-01-27 2022-08-08 キオクシア株式会社 メモリシステムおよび制御方法
TWI821152B (zh) * 2021-02-23 2023-11-01 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
TWI808384B (zh) * 2021-02-23 2023-07-11 慧榮科技股份有限公司 儲存裝置、快閃記憶體控制器及其控制方法
US20230075055A1 (en) * 2021-09-08 2023-03-09 Quanta Computer Inc. Method and system for providing life cycle alert for flash memory device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011227802A (ja) 2010-04-22 2011-11-10 Funai Electric Co Ltd データ記録装置
US20130073785A1 (en) 2011-09-15 2013-03-21 International Business Machines Corporation Retention management for phase change memory lifetime improvement through application and hardware profile matching

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7523013B2 (en) * 2006-05-15 2009-04-21 Sandisk Corporation Methods of end of life calculation for non-volatile memories
JP4575346B2 (ja) 2006-11-30 2010-11-04 株式会社東芝 メモリシステム
US9153337B2 (en) * 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
TW200834181A (en) 2007-02-12 2008-08-16 Wang yong qi Display system with LED backlighting module
TWI385669B (zh) * 2008-07-23 2013-02-11 Phison Electronics Corp 用於快閃記憶體的平均磨損方法、儲存系統與控制器
US8213229B2 (en) * 2008-08-22 2012-07-03 HGST Netherlands, B.V. Error control in a flash memory device
US8412880B2 (en) * 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
EP2455865B1 (en) * 2009-07-17 2020-03-04 Toshiba Memory Corporation Memory management device
JP2011070346A (ja) 2009-09-25 2011-04-07 Toshiba Corp メモリシステム
US8380915B2 (en) * 2010-01-27 2013-02-19 Fusion-Io, Inc. Apparatus, system, and method for managing solid-state storage media
JP4987997B2 (ja) * 2010-02-26 2012-08-01 株式会社東芝 メモリシステム
KR101180406B1 (ko) * 2011-01-28 2012-09-10 에스케이하이닉스 주식회사 비휘발성 메모리 시스템 및 블럭 관리 방법
US8806111B2 (en) 2011-12-20 2014-08-12 Fusion-Io, Inc. Apparatus, system, and method for backing data of a non-volatile storage device using a backing store
KR101989850B1 (ko) * 2012-04-03 2019-06-18 삼성전자주식회사 불휘발성 메모리 장치, 메모리 시스템 및 그것의 프로그램 방법
US20140122774A1 (en) * 2012-10-31 2014-05-01 Hong Kong Applied Science and Technology Research Institute Company Limited Method for Managing Data of Solid State Storage with Data Attributes
US9201786B2 (en) * 2012-12-21 2015-12-01 Kabushiki Kaisha Toshiba Memory controller and memory system
US9263136B1 (en) 2013-09-04 2016-02-16 Western Digital Technologies, Inc. Data retention flags in solid-state drives
CN106909318B (zh) 2013-12-23 2020-05-08 华为技术有限公司 固态硬盘使用方法及装置
US9329797B2 (en) * 2013-12-30 2016-05-03 Sandisk Technologies Inc. Method and system for adjusting block erase or program parameters based on a predicted erase life
CN104156317A (zh) * 2014-08-08 2014-11-19 浪潮(北京)电子信息产业有限公司 一种非易失性闪存的擦写管理方法及系统
US9225527B1 (en) 2014-08-29 2015-12-29 Coban Technologies, Inc. Hidden plug-in storage drive for data integrity
CN105353979B (zh) * 2015-10-22 2017-10-27 湖南国科微电子股份有限公司 Ssd内部数据文件管理系统及管理方法
JP6414853B2 (ja) * 2015-12-14 2018-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011227802A (ja) 2010-04-22 2011-11-10 Funai Electric Co Ltd データ記録装置
US20130073785A1 (en) 2011-09-15 2013-03-21 International Business Machines Corporation Retention management for phase change memory lifetime improvement through application and hardware profile matching

Also Published As

Publication number Publication date
CN109753234B (zh) 2022-05-13
JP2019086970A (ja) 2019-06-06
US20190138226A1 (en) 2019-05-09
US11042305B2 (en) 2021-06-22
US20210278974A1 (en) 2021-09-09
US11747989B2 (en) 2023-09-05
TWI729307B (zh) 2021-06-01
TW201918885A (zh) 2019-05-16
CN109753234A (zh) 2019-05-14

Similar Documents

Publication Publication Date Title
JP7010667B2 (ja) メモリシステムおよび制御方法
US11221914B2 (en) Memory system for controlling nonvolatile memory
CN110781096B (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
CN106874217B (zh) 存储器系统及控制方法
US10761780B2 (en) Memory system
CN109725847B (zh) 存储器系统及控制方法
CN106874211B (zh) 存储器系统及非易失性存储器的控制方法
US20190220396A1 (en) Data Storage Device
US10496334B2 (en) Solid state drive using two-level indirection architecture
JP2018049522A (ja) メモリシステム及び制御方法
CN111078582B (zh) 基于模式调整映射段的存储器系统及其操作方法
US9195579B2 (en) Page replacement method and memory system using the same
CN110955384A (zh) 数据储存装置以及非挥发式存储器控制方法
US10168951B2 (en) Methods for accessing data in a circular block mode and apparatuses using the same
JP2018142240A (ja) メモリシステム
US11210226B2 (en) Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof
JP2009503743A (ja) データファイルを直接記憶するメモリブロックの管理
KR20200135549A (ko) 카운터 업데이트 동작을 위한 장치 및 방법
CN114077549A (zh) 基于数据特性寻址区域命名空间和非分区存储器
JP2019148913A (ja) メモリシステム
KR20070061543A (ko) 메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
US20240069771A1 (en) Read operations for mixed data
US20230236964A1 (en) Storage controller deallocating memory block, method of operating the same, and method of operating storage device including the same
KR20230115196A (ko) 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200915

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220113

R150 Certificate of patent or registration of utility model

Ref document number: 7010667

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150