JP6385556B2 - 不揮発性メモリデバイスおよび不揮発性メモリデバイスのデータ記憶方法 - Google Patents

不揮発性メモリデバイスおよび不揮発性メモリデバイスのデータ記憶方法 Download PDF

Info

Publication number
JP6385556B2
JP6385556B2 JP2017501801A JP2017501801A JP6385556B2 JP 6385556 B2 JP6385556 B2 JP 6385556B2 JP 2017501801 A JP2017501801 A JP 2017501801A JP 2017501801 A JP2017501801 A JP 2017501801A JP 6385556 B2 JP6385556 B2 JP 6385556B2
Authority
JP
Japan
Prior art keywords
storage area
physical storage
data
write frequency
write
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
JP2017501801A
Other languages
English (en)
Other versions
JPWO2016135955A1 (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2016135955A1 publication Critical patent/JPWO2016135955A1/ja
Application granted granted Critical
Publication of JP6385556B2 publication Critical patent/JP6385556B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/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
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • 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/7202Allocation control and policies
    • 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/7207Details relating to flash memory management management of metadata or control data
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、不揮発性メモリデバイスおよび不揮発性メモリデバイスのデータ記憶方法に関する。
NAND型フラッシュメモリ(以降、単にフラッシュメモリ、またはFM)について説明する。フラッシュメモリは、記憶しているデータを直接書き換えることができず、消去処理を必要とする。ブロックは、データの消去単位であり、ページは、データの読み書き単位である。今後特に断りがない限り、単にブロック/ページと記述した場合はフラッシュメモリのものを指す。1つのブロック内に複数のページが設けられる。
フラッシュメモリを用いる記憶デバイスであるフラッシュメモリデバイスは、データを書き換える場合、まず記憶している有効なデータを、例えばDRAM(Dynamic Random Access Memory)などの消去単位のない記憶デバイスにロードして、必要な箇所を更新する。次に、フラッシュメモリデバイスは、元々データが記憶されていたブロックに消去処理を施す。最後に、フラッシュメモリデバイスは、消去したブロックにデータを書き込む。このように、フラッシュメモリにおけるデータの書き換えは、ブロック毎のデータの消去を伴う。しかし、フラッシュメモリの1ブロック分のデータ消去にかかる時間は、1ページ分のデータを書き込むのに要する時間と比べて大きく、従って、1ページ分のデータの書換えのために毎回1ブロック分のデータ消去を行なうような方式では、フラッシュメモリのデータ書換え性能が低下する。
このような課題に対処するため、フラッシュメモリデバイスは、データの書換え動作において、更新データを未使用領域へ追記する。これにより、データを更新するその時点では、ブロック消去が不要になる。また、このような追記動作の為に、通常、フラッシュメモリデバイスは、上位装置に公開している容量以上の物理領域を更新領域として保有している。しかし、データの書き換え量が増えると、フラッシュメモリデバイス内の更新領域が枯渇するため、データの更新で論理的に無効化されたデータを消去して記憶領域を再利用可能な状態(空き領域)にする必要がある。そこで、フラッシュメモリデバイスは、無効データを含むブロック内の、有効なデータのみを未使用領域にコピーし、ブロック内のデータを全て無効化した上で、コピー元のブロックを消去して空き領域にするブロック再生処理が知られている。以下、この処理をリクラメーションと呼ぶ。場合によってはRCと省略して表記する。このリクラメーションは、無効データ率の高いブロックを対象に実行することで効率よく空き領域を作成可能である。
フラッシュメモリは、使用とともに特性が劣化する。劣化は、セルの消去回数に相関があるとされ、一般的にSSD(Solid State Disk)ベンダは、データ保持特性の品質保証が可能な、最大の消去回数を提示している。劣化はセル単位であるが、消去によって劣化が進むため、ブロック内セルの劣化の進行度はある程度均一化される。ここで、特定のブロックにデータの書換えが集中し、消去回数が増大して使用不可能となった場合、最悪、他のブロックが健全な状態にも関わらず、一部のブロックが書き換え限界に達して使用できなくなることで、フラッシュメモリデバイスの容量を満足できなくなる問題が発生する。そのため、劣化が特定ブロックに集中しないように、各ブロックの劣化の平準化処理が知られている。本処理はウェアレベリングと呼ばれ、以降WLと表記することもある。
フラッシュメモリは、一度書き込んだページでも、時間とともに読み出しエラー率が増加する。このようなエラーは、リテンションエラーと呼ばれる。これを回避するために、書き込んでから一定時間経過したページを、別ページにコピーする処理が知られている。この処理は、リフレッシュと呼ばれる。場合によってはRFと省略して表記する。リフレッシュにおいても、既に述べた平準化の問題や性能影響を考慮する必要がある。
以上で述べたデータ消去時間の隠蔽とデータ消去回数の平準化のため、フラッシュメモリデバイスは、データ書込みの際に、論理アドレスを物理アドレスへ変換する論理物理アドレス変換処理を行う。フラッシュメモリデバイスは、1つ以上のFMチップと、FMチップに対するデータの読み書きを制御するデバイスコントローラとを有する。このデバイスコントローラが、論理物理アドレス変換処理を行なう。さらにデバイスコントローラは、論理物理アドレス変換処理のための情報を、論理物理アドレス変換テーブルとして保存する。以下、論理物理アドレス変換処理を論物変換、論理物理アドレス変換テーブルを論物変換テーブルと呼ぶことがある。
論物変換は、フラッシュメモリを効率的に使用するために重要な役割を有している。低い自由度の論物変換を用いる場合、論物変換テーブルのサイズを抑えられる代わりに、リクラメーションが頻発するなどにより性能が低下する。一方、高い自由度の論物変換を用いる場合、論物変換テーブルのサイズが膨大になるとともに、制御コストが大幅に増大する。
前述のウェアレベリングは、データのライト頻度判定と各ブロックの劣化度のマッチングによって成立する。データのライト頻度の管理の最小粒度は、論物変換によって規定される物理記憶領域への割り付け単位である。論物変換方式は、目的とする動作に応じて様々な方式が提案されているが、簡単かつ効率的な方式として、フラッシュメモリデバイスから上位装置へ提供される論理アドレスであるホストアドレスを、固定長で分割して、これをフラットなテーブルで物理アドレス上にマップする方式が考えられる。ホストアドレスを分割した論理単位を論理ページ、フラッシュメモリのページを、これと区別するために物理ページと呼ぶ。論理ページサイズは、物理ページと一致させることで、管理容易性や、リードの応答性能改善、といった利点を狙うことも考えられるが、より緻密な配置を実現するために、論理ページサイズを物理ページサイズより小さくして管理したり、逆に管理に必要な情報量を低減するために、論理ページサイズを物理ページサイズより大きくしたりすることも考えられる。
論物変換テーブルは、I/O時に必ず参照されるため、アクセスレイテンシの小さい記憶媒体、例えばDRAMなどに格納されることが一般的である。
特許文献1には、フラッシュメモリデバイスのコントローラが、消去頻度の少ない論理ブロックを、消去回数の少ない物理ブロックに割り当てることが開示されている。
米国特許第8447915号明細書
しかし、論理容量の拡大に伴い、揮発性メモリに格納される論物変換テーブルのサイズも拡大するため、揮発性メモリが細かい粒度でライト頻度を格納することは困難である。
上記課題を解決するために、本発明の一態様である不揮発性メモリデバイスは、不揮発性メモリと、揮発性メモリと、前記不揮発性メモリ、前記揮発性メモリ、及び上位装置に接続されるコントローラと、を備える。前記不揮発性メモリは、複数の物理記憶領域グループを含み、各物理記憶領域グループは、少なくとも一つの、消去の単位の領域であり、各物理記憶領域グループは、複数の物理記憶領域を含み、各物理記憶領域は、ライト及びリードの単位の領域である。前記コントローラは、前記複数の物理記憶領域グループの夫々の分類を示す分類情報を、前記揮発性メモリへ格納し、前記上位装置に提供する特定論理記憶領域に対し、特定物理記憶領域グループと、前記特定物理記憶領域グループ内の特定物理記憶領域とを関連付け、特定データを前記特定物理記憶領域へ書き込み、前記特定論理記憶領域のライト頻度を示す特定ライト頻度情報を前記不揮発性メモリへ書き込み、前記特定論理記憶領域と、前記特定物理記憶領域グループと、前記特定物理記憶領域とを示す変換情報を、前記揮発性メモリへ格納し、前記特定物理記憶領域から他の物理記憶領域への特定データのコピーを実行すると判定した場合、前記特定物理記憶領域に格納された前記特定データと、前記不揮発性メモリに格納された前記特定ライト頻度情報とを読み出し、前記特定ライト頻度情報及び前記分類情報に基づいて、前記複数の物理記憶領域グループの中からライト先物理記憶領域グループを選択し、前記ライト先物理記憶領域グループからライト先物理記憶領域を選択し、前記特定ライト頻度情報を変更し、前記特定データを前記ライト先物理記憶領域へ書き込み、前記変更された特定ライト頻度情報を前記不揮発性メモリへ書き込み、前記ライト先物理記憶領域グループ及び前記ライト先物理記憶領域に基づいて前記変換情報を更新する。
揮発性メモリの消費を抑えつつ、細かい粒度で不揮発性メモリのライト頻度を判定することができる。
実施例の計算機システムの構成を示す。 FMPKG113の構成を示す。 メインメモリ207に格納される情報の一例を示す。 FMチップ210の構成を示す。 ページベースの論物変換処理の概要を示す。 論物変換テーブルを示す。 論理ページ毎のライト頻度管理方式を示す。 クラスライト頻度テーブルを示す。 ブロック属性テーブルを示す。 更新ライト処理を示す。 コピー処理を示す。 データライト処理を示す。 ブロック劣化度テーブルを示す。 劣化度ランク定義を示す。 ランクブロック数テーブルを示す。 クラスデータ量テーブルを示す。 ブロックの状態遷移を示す。 マッチング処理を示す。 リクラメーション対象選択処理を示す。
以下、本発明のいくつかの実施例を、図面を用いて説明する。なお、これらの実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。
なお、以後の説明では「aaaテーブル」、「aaaキュー」、「aaaリスト」等の表現にて本発明の情報を説明するが、これら情報はテーブル、キュー等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」、「aaaキュー」、「aaaリスト」等について「aaa情報」と呼ぶことがある。
さらに、各情報の内容を説明する際に、「識別情報」、「番号」、「名」、という表現を用いるが、これらについてはお互いに置換が可能である。
以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポートを用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理計算機や情報処理装置が行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
また、各図において共通の構成については、同一の参照番号を付して説明する。また、共通の構成に関し、各構成を識別する場合には、999a、999bなど、数字の最後に英文字を付すか、又は、#1、#2等の個別の番号を付して説明する。ただし、必要に応じて英文字又は番号を省略して説明する場合がある。
また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。
本発明は、以下の実施例に限定されない。以下の実施例における不揮発性メモリは、FM(Flash Memory)である。本実施例におけるFMは、ブロック単位で消去が行われ、ページ単位でリード及びライトが行われる種類のFM、典型的にはNAND型のフラッシュメモリである。しかし、FMは、NAND型に代えて他種のフラッシュメモリ(例えばNOR型)でも良い。また、FMに代えて、他種の不揮発性メモリ、例えば、磁気抵抗メモリであるMRAM(Magnetoresistive random access memory)や、抵抗変化型メモリであるReRAM(Resistance random access memory)、強誘電体メモリであるFeRAM(Ferroelectric random access memory)等の半導体メモリや、相変化メモリであるPCM(Phase change random access memory)が使用されても良い。
図1は、実施例の計算機システムの構成を示す。
計算機システムは、ストレージシステム101と、1つ以上のホスト計算機103(ホスト計算機103a、103b)と、管理端末104とを有する。ホスト計算機103a、103bのそれぞれは、SAN(Storage Area Network)105を介して、ストレージシステム101に接続される。
ストレージシステム101は、ストレージコントローラ102と、複数のフラッシュメモリストレージ装置113とを有する。図面及び以下の説明では、フラッシュメモリストレージ装置113をFMPKG(Flash Memory Package)と呼ぶことがある。なお、本実施例では、ストレージコントローラ102は1つであるが、複数のストレージコントローラ102を含む冗長構成であっても良い。
ストレージコントローラ102は、CPU(Central Processing Unit)108と、メモリ109と、複数のホストIF(Interface)107(ホストIF107a、107b)と、複数のストレージIF111(ストレージIF111a、111b)と、保守IF106と、通信コントローラ110とを有する。ストレージコントローラ102内の各部は、バス及び通信コントローラ110を介して接続される。メモリ109は、ストレージシステム101を制御するためのプログラムを格納する領域及びデータを一時的に格納するキャッシュメモリとしての領域を有する。CPU108は、メモリ109に格納されたプログラムに従ってストレージシステム101を制御する。
ホストIF107は、ホスト計算機103との通信を行うインタフェイスである。保守IF106は、管理端末104と接続され管理端末104との通信を行うインタフェイスである。
なお、管理者は、管理端末104からストレージコントローラ102の管理やメンテナンスを行う。しかし、管理端末104は必須要素ではなく、管理者は、例えば、ホスト計算機103から、ストレージコントローラ102の管理やメンテナンスなどを行っても良い。
上記の計算機システムでは、ホスト計算機103とFMPKG113とが、ストレージコントローラ102を介して接続されているが、例えば、ストレージコントローラ102を省き、ホスト計算機103とFMPKG113とが直接接続されても良い。
以下、FMPKG113の構成を説明する。なお、複数のFMPKG113a〜113eは、基本的な構成は同じである。
図2は、FMPKG113の構成を示す。
FMPKG113は、デバイスコントローラ201と、1つ以上のフラッシュメモリ(FM)チップ210a〜210hとを含む。
デバイスコントローラ201は、ストレージインタフェイス202と、フラッシュメモリ(FM)コントローラ203と、バッファ204と、バッテリ205と、CPU206と、メインメモリ207と、フラッシュメモリインタフェイス209とを含む。
ストレージインタフェイス202は、上位装置102との通信を行うインタフェイスである。本実施例における上位装置102は、ストレージコントローラ102である。
フラッシュメモリインタフェイス209は、FMチップ210との通信を行うインタフェイスである。
CPU206は、デバイスコントローラ201の全体を制御するプロセッサであり、メインメモリ207に格納されたマイクロプログラムに基づき動作する。例えば、CPU206は、受領したI/O要求に対して、メインメモリ207に格納された論物変換テーブルを参照してFMチップ210にデータを読み書きする。また、CPU206は、FMチップ210の使用状況に応じて、リクラメーションやウェアレベリング等を実施する。
FMコントローラ203は、CPU206によって制御され、FMチップ210に対してデータの読み書きを実施する。また、FMコントローラ203は、FMチップ210に対するものと同様にストレージインタフェイス202を通じて上位装置102との通信を制御する。
本図では、CPU206は、FMコントローラ203に対して外付けとなっているが、FMコントローラ203は、CPU206や、上位/下位インタフェイスを含む1つのLSIで構成されていてもよい。
メインメモリ207とバッファ204は、FMチップ210より高速なアクセスが可能な、揮発性の記憶領域であり、例えばSRAM(Static Random Access Memory)やDRAMである。メインメモリ207は、制御のためにCPU206により直接用いられるワークスペースであり、バッファ204より短いレイテンシを提供する。一方、バッファ204は、ユーザデータの一時格納用や、メインメモリ207に格納しきれない大サイズテーブルを格納する。バッファ204とメインメモリ207は、レイテンシと容量を相互補間するものである。
本図では、メインメモリ207とバッファ204は分離されているが、これらを1つの記憶領域で実現してもよい。
ストレージインタフェイス202は、上位装置102とデバイスコントローラ201を接続し、通信を行う。このインタフェイスには、例えばSATA(Serial Advanced Technology Attachment)やSAS(Serial Attached Small Computer System Interface)、FC(Fibre Channel)などのストレージインタフェイスが採用されてもよいし、PCI−Express(登録商標)などのインタフェイスが採用されてもよい。
バッテリ205は、非常時、FMPKG113の各部へ給電を行う。
デバイスコントローラ201の内部アーキテクチャは、必ずしも図の通りである必要は無く、それぞれの機能を1つないしは複数のデバイスによって代用してもよい。
アシスト回路208は、データに対する処理をCPU206に代わって実施する回路である。この処理は、例えばデータ圧縮、暗号化、ハッシュ計算、符号計算などが考えられる。本実施例では直接は用いないが、これらの機能は本実施例と排他的なものではなく、組み合わせても問題無い。また、アシスト回路208は、必ずしも必要ではなく、汎用プロセッサであるCPU206が上述の機能を実現してもよい。
図3は、メインメモリ207に格納される情報の一例を示す。
メインメモリ207は、例えば、オペレーティングシステム301、フラッシュストレージ制御プログラム304、データ転送制御プログラム303、入出力制御プログラム302、論物変換プログラム305、及び論物変換情報306を記憶する。
オペレーティングシステム301は、CPU206が各プログラムを実行する際のスケジューリングや資源管理等の基本処理を行うプログラムである。
入出力制御プログラム302は、ストレージI/F202、フラッシュメモリI/F209の制御に用いるプログラムである。
データ転送制御プログラム303は、FMコントローラ203の制御に用いるプログラムである。
フラッシュストレージ制御プログラム304は、デバイスコントローラ201が上位装置102へ提供する論理記憶領域であるボリュームの管理や、バッファ204の管理など、デバイスコントローラ201がストレージデバイスとして動作するための制御に用いるプログラムである。
論物変換プログラム305は、上位装置102から発行されたI/O要求に示されている論理アドレスを、FMチップ210上の物理位置を示す物理アドレスに変換するプログラムである。なお、本実施例で言う「論理アドレス」は、ボリューム内の論理記憶領域を示すアドレスであり、例えば、LBA(Logical Block Address)である。
論物変換情報306は、論物変換プログラム305が動作する際に使用する論物変換のための情報である。その内約は後述する。
図4は、FMチップ210の構成を示す。
フラッシュメモリインタフェイス209には、フラッシュメモリバス401が接続される。フラッシュメモリバス401には、1つ以上のFMチップ210が接続される。FMチップ210は、複数のダイ402a〜402bと、デバイスコントローラ201からダイ402へ発行されたフラッシュメモリI/Oコマンドの対象データを一時的に格納するページバッファ403a〜403bとを含む。ダイ402は、データの実際の記憶領域である、1つ以上の物理ブロック404a〜404cを含む。
物理ブロック404は、フラッシュメモリにおける消去単位である。物理ブロック404は、1つ以上の物理ページ405a〜405cを含む。以後、物理ブロックを単にブロックと呼ぶことがあり、物理ページを単にページと呼ぶことがある。物理ページ405は、フラッシュメモリにおける書き込み及び読み込みの単位である。
ここでの書き込みは、消去済みの物理ページ405に対するデータの書き込みであり、読み込みは、物理ページ405に書き込まれたデータを読み取ることである。書き込みが行われた物理ページ405に再度書き込みを行うことはできず、その物理ページ405に書き込みを行うためには、一度、物理ブロック404ごと消去を実施する必要がある。消去処理により、その物理ブロック404に含まれる全ての物理ページ405に格納されたデータは消去され、それらの物理ページ405に再び書き込むことが可能となる。1つの物理ページ405のみを消去することは出来ない。FMチップ210は、デバイスコントローラ201を接続するフラッシュメモリI/F209から、書き込み・読み込み・消去などのコマンドを受領する。
物理ページ405に格納されるデータの構成について説明する。Code Word(CW)406は、データ407と、それを保護するECC(Error Correction Code)410との1セットであり、デバイスコントローラ201とFMチップ210の間のデータ送受におけるエラー訂正単位である。物理ページ405には、1つ以上のCW406が書き込まれることができる。物理ページ405は一般的に、2の冪乗のByte数のサイズのデータ領域と、余剰領域とを含む。この余剰領域は、ECC410やメタ情報を格納する。ECC410によって保護されるデータ領域は、データ407として、ユーザデータ408とメタデータ409を格納する。従って、最終的に物理ページ405内に格納されるユーザデータ408のサイズは、物理ページサイズからECCサイズとメタデータサイズを除いたものになる。なお、メタデータサイズは、CW406毎に均一でなくても良い。ECCサイズは、FMチップ210に要求される信頼性に応じてサイズが決まるため、データ領域サイズは必ずしも2の冪乗分確保できるわけではない。
なお、FMチップ210の内部構成、ページサイズ、ブロックサイズなどは、図に示した構成に限定されるものではない。例えば物理ページ405のサイズは、2KB+α、4KB+α、8KB+α程度のサイズであり、物理ブロック404に含まれる物理ページ405の数は128、256などである。
図5は、ページベースの論物変換処理の概要を示す。
CPU206は、上位装置102に公開されるアドレス空間(LBA501)を内部の管理単位である論理ページ(LP)502へ変換する。この変換は、一意な計算式を用いても良いし、何らかの間接的な参照を用いても良い。CPU206は、続いて論理ページ502から、ブロック503及び物理ページ504等を示す物理位置を取得する。本実施例において、論理ページ502のサイズと物理ページ504のサイズは固定的で等しい。従って、1つの論理ページ502は、任意の1つの物理ページ504に対して論物変換テーブル601を介して一意に対応づけられる。CPU206は、ある論理ページ502への書き込みを行う場合、新規に未使用の物理ページ504を取得し、当該論理ページ502の更新されたデータを、取得された物理ページ504へ書き込み、論物変換テーブル601における対応付けを更新する。当該論理ページからの参照を外された旧物理ページは、無効なページとして登録され、リクラメーションによって回収・消去され、空きページとして再利用される。なお、仮に、論理ページサイズが物理ページサイズより大きい場合は、論理ページが複数の物理ページに対応づけられ、逆に小さい場合は、複数の論理ページが1つの物理ページに対応づけられるようになるだけで、概念的に大きな違いはなく、本発明はその形態に限定されるものではない。
図6は、論物変換テーブルを示す。
論物変換情報306は、論物変換テーブル601を含む。論物変換テーブル601は、論理ページ番号602毎に対応する物理アドレス603を保持している。CPU206は、論理ページの格納先を変更した場合、このテーブルも更新する。物理アドレス603は、その値からFMチップ、ダイ、ブロック、ページ位置を導出できるものとなっている。例えば、物理アドレス603は、それらの位置情報を夫々示す複数のビットを含んでも良いし、それらの位置情報を複数のエントリにより夫々示しても良い。
ここまでは、前提となる一般的なフラッシュメモリ制御方式について説明してきた。以降、本実施例のライト頻度管理方式について説明する。
図7は、論理ページ毎のライト頻度管理方式を示す。
ページライト頻度情報701は、メインメモリ207上ではなく、FMチップ210上に格納される。ページライト頻度情報701は、各論理ページ番号702に対する、連続コピー回数703を示す。連続コピー回数は、リクラメーションによって当該論理ページのデータがコピーされる契機で更新され、上位からの更新ライトが実施されるとリセットされる値である。言い換えれば、連続コピー回数は、当該論理ページのデータが更新されないまま、コピーされた回数である。即ち、当該論理ページの連続コピー回数が多いほど、当該論理ページのライト頻度が低いことを示す。
あるブロックのうち、無効データを格納する物理ページである無効ページは、更新ライトによる更新前のデータを格納している。リクラメーションは、有効データを格納する物理ページである有効ページだけを対象ページとして選択し、対象ページに格納されたデータを別のブロックへコピーする。したがって、連続してリクラメーションによりコピーされたデータに対応する論理ページは、その間更新されていないことを示す。即ち、論理ページの連続コピー回数が多いほど、その論理ページのライト頻度が低いことを示す。
各論理ページはメインメモリ207上の論物変換テーブル601により物理ブロック503及び物理ページ504等の物理位置と関連づけられ、連続コピー回数はその物理ページ504に格納される。本実施例において、論理ページ502の連続コピー回数は、その論理ページ502に関連付けられた物理ページ504の先頭のメタデータ703として格納されることにより、その論理ページ502のユーザデータ704と共に格納される。このように、CPU206は、各論理ページの連続コピー回数をこのようにしてデータの読み書きの単位である物理ページ504へ格納することにより、1回の読み出し処理で、ユーザデータとそのユーザデータに関連づけられた連続コピー回数とを取得することができる。このため、CPU206は、連続コピー回数へのアクセスのために他の物理ページ504へのアクセスを行わなくて済むため、性能の低下を防ぐことができる。また、もし、CPU206がユーザデータと連続コピー回数を別々の領域に格納すると、個別の論物変換テーブルが必要となり、メインメモリ207に格納される管理情報量が増えてしまう。
なお、CPU206は、連続コピー回数を、ユーザデータに関連づけられた他の情報とまとめて配置する、又は、連続コピー回数を、コピー時に参照される他の情報に含める、というような形で、ユーザデータと別々に格納しても良い。この方法の一例を説明する。CPU206は、ブロックをリクラメーションする際、コピーの対象データの論理ページを得るために、ブロック内の物理ページから論理ページを特定するための逆引き情報(物論変換情報)を、FMチップ210に格納する。CPU206は、逆引き情報を、コピー時のみ参照すればよく、またブロック単位でまとめて参照できる為、ユーザデータとは別の領域に格納することができる。この場合、CPU206は、ブロックに関連付けられた各論理ページの連続コピー回数を、逆引き情報とまとめてFMチップ210へ格納する。これにより、CPU206は、コピー時に読み出される逆引き情報とともに、コピー時に参照される連続コピー回数の情報も読み出すことができるため効率が良く、性能の低下を防ぐことができる。さらに、このようにユーザデータとメタデータを互いに異なる領域で管理することのメリットは、障害発生時にユーザデータとメタデータの同時消失を避けることができる点と、物理ページアライメントの観点で都合が良い点とが挙げられる。
このように、論理ページの連続コピー回数を用いることにより、論理ページのライト頻度を管理することができる。論理ページ毎の連続コピー回数をFMチップ210へ格納することにより、メインメモリ207等の揮発性メモリの容量を消費することなく、論理ページ毎の連続コピー回数を管理することができる。
図8は、クラスライト頻度テーブルを示す。
各論理ページは、ライト頻度を元にいくつかのライト頻度クラスの何れか一つに分類される。ここでは、各論理ページが、HOT+1、HOT、COLD、COLD−1の4つのライト頻度クラスの何れか一つに分類されるとする。HOT+1が最もライト頻度が高い論理ページの集合であり、COLD−1が最もライト頻度が低い論理ページの集合である。4つのライト頻度クラスは順に、4、3、2、1のような数値で表されてもよい。論物変換情報306は更に、クラスライト頻度テーブル802を含む。クラスライト頻度テーブル802は、ライト頻度クラス801毎に、更新ライト回数803と、コピー回数804とを格納する。ここでのライトは、上位装置102からの更新ライトと、FMPKG112内部のコピーとである。ここでのライト頻度クラス数は4つであるが、これより多くても少なくてもよい。更新ライト回数803とコピー回数804のカウンタは累積値でも良いが、I/Oパタンの変動に追随するために定期的にリセットされることが望ましい。その場合、例えば、CPU206は、更新ライト回数803とコピー回数804の夫々について、現在の設定値と、次の設定値に用いるカウンタとを別々に管理することで、リセットによる特性の急激な変化を吸収してもよい。ライト頻度クラスを用いることにより、論理ページとブロックを分類し、論理ページのライト頻度に応じたブロックを選択することができる。
図9は、ブロック属性テーブルを示す。
ブロック属性テーブル901は、物理ブロック番号902毎に、属性903を格納する。属性903は、ライト頻度クラスに対応する。例えば、HOT属性の物理ブロックは、HOTの論理ページのデータを格納する。また、属性903は、固定的ではない。或る物理ブロックが消去された後に、論理ページのデータを書き込まれた場合、用途によってその物理ブロックの属性が定まる。
なお、複数のブロックをグルーピングし、ブロックグループとして管理してもよい。この場合、CPU206は、ブロックグループ単位でリクラメーション及び消去を行う。この場合、ブロック属性テーブル901は、ブロックグループ毎の属性を示す。消去単位がブロックかブロックグループかという点による差異は、本実施例で開示する内容に影響しない。本実施例のブロック属性テーブル901は、ブロック単位の情報であり、そのサイズは、ページ単位で管理する情報のサイズに比べて十分小さい。そのため、ブロック属性テーブル901は、FMチップ210上ではなく、よりCPU206に近いバッファ204やメインメモリ207に格納される。
CPU206は、メインメモリ207上のブロック属性テーブル901と、FMチップ210上の連続コピー回数とを用いて、書き先ブロックのライト頻度クラスを決定する。この更新ライト処理によれば、FMPKG113は、ライト頻度に応じた書き先ブロックを選択することができる。
CPU206は、上位装置102からのライトコマンド(更新ライト)を受信した場合時、更新ライト処理を実行する。
図10は、更新ライト処理を示す。
CPU206は、更新ライト処理を開始すると(s1001)、ライトデータを受領する(s1002)。上位装置102から送付されたライトデータは、ストレージインタフェイス202によりバッファ204に格納される。CPU206は、ライトコマンドから書込データの対象LBAが得られるので、対象LBAを元に論物変換を実施する(s1003)。CPU206は、論物変換により得られた物理アドレスから、ライトの対象LBAに対応する対象論理ページのデータを格納している対象ブロックのブロック番号を計算する(s1004)。CPU206は、ブロック番号を元に、ブロック属性テーブル901を参照し、対象ブロックの属性を取得して取得属性とする(s1005)。
このとき、取得属性が最高のライト頻度クラス(ライト頻度が最高)である、すなわちHOT+1であれば(s1006)、CPU206は、ライトデータの書き先ブロックの属性である書き先属性に対し、現在の値、つまりHOT+1を設定する(s1010)。そうでなければ、CPU206は、現在のライトの論理アドレスが直前のライト(前段ライト)の論理アドレスと連続であるかどうかを判定する(s1007)。これは、シーケンシャルライトであれば、同じライト頻度であることが想定されるためである。論理アドレスが連続であれば、CPU206は、書き先属性に対し、前段ライトの書き先属性と同じ値を設定する(s1008)。これにより、シーケンシャルライトデータに対して、同じ属性の書き先ブロックが選択される。s1006及びs1007の条件に当てはまらない場合、CPU206は、書き先属性に対し、取得属性に1を加えた値を設定する(s1009)。例えば、CPU206は、取得属性がHOTであれば、書き先属性に対しHOT+1を設定する。
s1008、s1009、又はs1010の後、CPU206は、テンポラリ領域上で、当該論理ページに関連づけられた仮連続コピー回数に対し、0をセットする(s1011)。CPU206は、バッファ204またはメインメモリ207にテンポラリ領域を確保する。
CPU206は、書き先属性を指定してデータライト処理をコールし(s1201)、このフローを終了する。
更新ライト処理は、上位装置102からのライトデータのライト頻度の判定に、前回の判定結果を用いる。前回の判定結果は、前回のライトデータが書き込まれた物理ページにメタデータとして保存されている。この更新ライト処理によれば、FMPKG113は、更新前のデータが格納されたブロックの属性とアクセスパターンとに基づいて、書き先ブロックを選択することができる。
CPU206は、リクラメーションにおいて、コピー対象として選択されたデータをコピーするコピー処理を実行する。
図11は、コピー処理を示す。
リクラメーションの対象ブロックとして、例えばデータコピー量が少なくてすむ、無効率の高いブロックが選択される。ここでは既に対象ブロックからコピー対象論理ページが選択されていることを前提とする。CPU206は、コピー処理を開始すると(s1101)、コピー対象論理ページ(LP)番号を取得する(s1102)。CPU206は、コピー対象論理ページ番号を元に論物変換を実施する(s1103)。CPU206は、論物変換により得られた物理アドレスのデータリードを実施し(s1104)、続いて、リードされたデータから連続コピー回数を取得する(s1105)。ここで、連続コピー回数は、先に示した通り、ユーザデータと同じ物理ページに格納されているので、s1104でバッファ204上にロードされる。続いて、CPU206は、物理アドレスから、リードされた物理ページを含む対象ブロックのブロック番号を計算する(s1106)。CPU206は、ブロック属性テーブル901から、対象ブロックの属性を取得して取得属性とする(s1107)。
CPU206は、連続コピー回数が連続コピー回数閾値以下であるかを判定し(s1108)、連続コピー回数が連続コピー回数閾値以下である場合、取得属性が最低のライト頻度クラス(ライト頻度が最低)かを判定する(s1109)。取得属性が最低ライト頻度クラスでない場合、CPU206は、コピーの書き先ブロックの属性である書き先属性に対し、対取得属性から1を減じた値を設定する。例えば、CPU206は、取得属性がCOLDなら、書き先属性に対し、COLD−1を設定する。s1108及びs1109において、それ以外のケースでは、CPU206は、書き先属性に対し、取得属性を設定する(s1110)。CPU206は、書き先属性が取得属性から変更されなかった場合、連続コピー回数をインクリメントし(s1112)、変更された場合、連続コピー回数を0にクリアする(s1113)。なお、s1113において、CPU206は、連続コピー回数をインクリメントしてもよい。
s1112又はs1113の後、CPU206は、書き先属性を指定してデータライト処理をコールし(s1201)、このフローを終了する。
コピー処理は、データコピーの際に同時にFMチップ210から読み上げられるメタデータである連続コピー回数を参照して、次の書き先属性を決定する。なお、コピー対象論理ページ番号の取得(s1102)に、逆引き情報を用いる方法が考えられる。例えば、CPU206は、メインメモリ207上で各ブロックの無効率と、有効データ位置だけを管理しておき、有効データ位置に対応する論理ページへの参照である逆引き情報を用いて、コピー対象論理ページ番号を取得する。逆引き情報をFMチップ210上に格納する管理方式を用いれば、メインメモリ207を節約することができる。この方式であれば、連続コピー回数はデータではなく逆引き情報と共に格納する方法も適用可能である。いずれにせよ、連続コピー回数は、データコピーに対して低いコストでバッファ204に読み上げられる。
ここで、s1108の連続コピー回数閾値について述べる。本実施例では、連続コピー回数が多いほどライト頻度(書き先属性)が低く判定される。上位装置102からライトされないまま、リクラメーション時にブロック内に取り残されてコピー対象となる論理ページは、ライト頻度が低いと判定される。ただし、コピー頻度はI/Oパタンによるため、CPU206は、連続コピー回数閾値を変化させる。例えばシーケンシャルライトで、同じ領域を上書きする様なパタンであれば、リクラメーションしなくても空き領域は生成される。逆にランダム性の高いライトパタンであれば、断片化が進み、より多くのコピーが必要となる。そこで、CPU206は、クラスライト頻度テーブル802を用いて連続コピー回数閾値を決定する。或るライト頻度クラスの論理ページのコピー頻度が、そのライト頻度クラスの平均的なコピー頻度より多い場合、当該論理ページの連続コピー回数が、そのライト頻度クラスの他の論理ページに比べて、連続コピー回数が多くなり、更新ライト頻度が低いと判定できる。クラスライト頻度テーブル802は、それぞれのライト頻度クラスの更新ライト回数とコピー回数をカウントしているため、CPU206は、或るライト頻度クラス内の平均的な更新ライト回数に対するコピー回数の比Cb/Wbを、連続コピー回数閾値として計算できる。即ち、或るライト頻度クラスの論理ページの連続コピー回数がCb/Wb以下であれば、CPU206は、その論理ページのライト頻度クラスを下げる(更新ライト頻度がより低いライト頻度クラスに変更する)。
なお、ライト頻度クラスの連続コピー回数閾値は、そのライト頻度クラスのWA(Write Amplification)でもよいし、予め設定された値でもよい。
このような連続コピー回数閾値を用いることにより、FMPKG113は、論理ページをライト頻度クラスで分類することができる。また、各ライト頻度クラスのCb/Wbを用いることにより、FMPKG113は、I/Oパタンに応じて各ライト頻度クラスの連続コピー回数閾値を変更することができる。
なお、CPU206は、リフレッシュにおいても、リクラメーションと契機が異なるだけで、リクラメーションと同じようにデータをコピーする。このとき、CPU206は、リクラメーションと同じ扱いで、連続コピー回数に基づいて書き先属性を判定する方法でも良いし、リフレッシュ対象であることから、十分ライト頻度が低いと判定し、書き先属性に対して最低ライト頻度クラスを設定してもよい。もしくは、リフレッシュ用の書き先属性として、リクラメーションの書き先属性として使用されるライト頻度クラスとは別のライト頻度クラスが用意されても良い。これにより、FMPKG113は、リフレッシュに応じてライト頻度を判定することができる。
図12は、データライト処理を示す。
CPU206は、データライト処理を開始すると(s1201)、書き先属性に対応する空きブロックを確保する(s1202)。続いて、CPU206は、バッファ204上の書込データ内に、メタデータとして連続コピー回数をセットする(s1203)。CPU306は、書込データをFMチップ210へ書き込み(s1204)、論物変換テーブル601を更新する(s1205)。最後に、CPU206は、クラスライト頻度テーブル802において、書き先属性に対応するエントリを更新し(s1206)、このフローを終了する。このとき、CPU206は、データライト処理の契機が更新ライトであれば、当該エントリの更新ライト回数のフィールドをインクリメントし、データライト処理の契機がコピーであれば、当該エントリのコピー回数804のフィールドをインクリメントする。
ここまでの処理により、ライト頻度の高いデータと、ライト頻度の低いデータは分離され、それぞれのデータは、対応するライト頻度クラスの消去単位(ブロック)に集約されることになる。これにより、リクラメーション処理において、無効率の高いブロックが生成されやすくなるため、コピー量を低減することができる。
実施例1では、ライト頻度の分類と、分類されたデータの書き先を集約することによるリクラメーション処理の最適化手法について述べた。本実施例では、書き先である物理領域を劣化度の観点で管理し、ライト頻度と劣化度の最適なマッチングによりウェアレベリングを実現する方式について説明する。
図13は、ブロック劣化度テーブルを示す。
論物変換情報306は、ブロック劣化度テーブル1301を含む。ブロック劣化度テーブル1301は、ブロック番号1302毎に、劣化度1302を含む。劣化度は、ブロックの劣化具合を定量化したもので、例えば単に消去回数であってもよい。セルの劣化特性は、必ずしも消去回数のみに依存していないことが知られているため、劣化度に消去回数以外の要因を含めても良い。ここでは、ブロックの劣化限界を100%に正規化したものとして考える。劣化限界は、記憶デバイスとして品質保証可能な劣化度の限界値である。劣化度は、ブロック単位で管理されなくても良い。但し、セルの劣化は消去回数と相関があり、同一ブロック内のセルは、消去回数が同じになることから、似たような劣化度となることが期待される。したがって、劣化度をブロック単位で管理すると効率が良い。
図14は、劣化度ランク定義を示す。
劣化度ランク定義1401は、ブロックの劣化度ランクの定義を示す。ここでは、劣化度は、25%刻みで、YOUNG+1、YOUNG、OLD、OLD−1の4つの劣化度ランクに分類される。4つの劣化度ランクの中で、YOUNG+1は最も劣化が少なく(劣化度が低く)、OLD−1は最も劣化が進んでいる(劣化度が高い)。劣化度ランクは、数値で表されてもよい。なお、劣化度ランク数は4つである必要は無く、また、各劣化度ランクに分類される劣化度の幅は等幅でなくても良い。
ブロック劣化度テーブル1301及び劣化度ランク定義1401によれば、各ブロックの劣化度と属性を関連付けることができ、論理ページのライト頻度クラスに応じて適切な劣化度の書き先ブロックを選択することができる。また、ランクブロック数テーブル1404が、より低い劣化度の劣化度ランクを、より高いライト頻度のライト頻度クラスに関連付けることにより、FMPKG113は、ウェアレベリングを実行することができる。
図15は、ランクブロック数テーブルを示す。
論物変換情報306は、劣化度ランク管理テーブル1404を含む。劣化度ランク管理テーブル1404は、劣化度ランク1402毎に、その劣化度ランクに分類されたブロック数1405を含む。劣化度は、例えば、ブロックの消去時に累積消去回数をカウントし、累積消去回数等を元に算出されてもよいし、他にはデータリード時のエラービット数などを元に算出されてもよい。劣化度の格納方法及び計算方法については、公知のいずれの方法を用いてもよく、本実施例では特に限定しない。また、劣化度ではなく、FMチップ210に特有の書き換え能力の差で分類しても良い。その場合、FMPKG113内に複数種類の記憶素子を混在させ、各種類の書き換え能力の差によって、用途を分けてもよい。例として、同じNANDフラッシュメモリのMLC(Multi Level Cell)とSLC(Single Level Cell)の混在や、NANDフラッシュメモリ、ReRAM、PCMなどの混在が想定される。以降の、劣化度の低いブロックとは、つまり残りの書き換え能力が多いブロックである。例えばMLC及びSLCの混在の場合には、SLCが当てはまる。
ランクブロック数テーブル1404を用いることにより、FMPKG113は、各劣化度ランクを持つブロック数を管理することができる。
なお、劣化度ランクの数は、ライト頻度クラスの数と異なっていてもよい。
図16は、クラスデータ量テーブルを示す。
本実施例において、論物変換情報306は、クラスデータ量テーブル1501を含む。クラスデータ量テーブル1501は、ライト頻度クラス801毎に、論理ページ数1502と、割当ブロック数1503と、目標ブロック数1504と、加算劣化度1505とを含む。ライト頻度クラス801に対応する論理ページ数1502は、当該ライト頻度クラスに分類された論理ページの数を示す。割当ブロック数1503は、当該論理ページのデータを格納しているブロックの数を示す。論理ページ数1502及び割当ブロック数1503は、各ライト頻度クラスにおける論理記憶容量と物理記憶容量の比を管理する。これにより、物理領域上の有効データ量の割合である有効データ率(全物理ページに対する有効ページの割合)を算出することできる。仮に圧縮や重複排除などによって、論理ページ数と物理領域の占有量とが対応しない場合、論理ページ数ではなく、物理領域上の有効データ量をカウントしてもよい。本実施例では、論理ページ数と有効データ量が対応するため、ここでは論理ページ数を用いる。目標ブロック数1504は、当該ライト頻度クラスに割り当てられるブロック数の適正値として算出される。加算劣化度1505は、当該ライト頻度クラスに割り当てられたブロックに対して単位時間に加わった劣化度である。加算劣化度1505の代わりに、劣化度の累積値が用いられても良いが、I/Oパタンの変動に追随するために、累積値が定期的にリセットされることが望ましい。その場合、例えば、CPU206は、劣化度の累積値に対し、現在の計測値と、次の計測値に用いるカウンタとを別々に管理することで、リセットによる特性の急激な変化を吸収してもよい。
図17は、ブロックの状態遷移を示す。
論物変換情報306は、クローズブロック管理情報1601と、空きブロックプール1602と、オープンブロック管理情報1603とを含む。クローズブロック管理情報1601は、FMチップ210内のブロックのうち、クローズブロックを管理する。クローズブロックは、そのブロック内の全てのページに書き込みがなされた状態のブロックである。クローズブロック管理情報1601は、劣化度ランク毎にクローズブロックのキュー1604を含む。一つの劣化度ランクのキュー1604は、クローズブロックを無効率(全物理ページ数に対する無効ページの割合)でソートする。なお、クローズブロックを無効率でソートすることにより、リクラメーションの効率が向上する。リクラメーションにおいて最適なブロックを異なる基準で選定する場合、クローズブロック管理情報1601は、無効率以外の観点で構造化されたデータ構造で管理されていても良い。本実施例のクローズブロック管理情報1601のデータ構造が、クローズブロックを劣化度ランク毎に分類することにより、CPU206は、所望の劣化度ランクのブロックをリクラメーション対象に選ぶことができる。リクラメーション対象に選ばれたブロックは、無効化後に消去され、そのブロックに対し、劣化度ランクに応じた属性が設定される。続いて、そのブロックは、空きブロックプール1602に追加される。そのブロックは、必要に応じて書き先ブロックとしてオープンされ、オープンブロック管理情報1603により管理される。
CPU206は、ブロックの劣化度の広がりを示す劣化度分布に基づいて、ライト頻度クラスと劣化度ランクを関連付けるマッチング処理を行う。
図18は、マッチング処理を示す。
本実施例のマッチング処理は、ウェアレベリングのために、劣化度分布の広がりを防ぐ。劣化度分布は、劣化度又は劣化度ランクに対して、その劣化度を持つブロック数を表す。CPU206は、マッチング処理を開始すると(s1701)、クラスデータ量テーブル1501から、各ライト頻度クラスの加算劣化量1505を取得し(s1702)、割当ブロック数1503を取得する(s1703)。続いて、CPU206は、各ライト頻度クラスの劣化速度を計算する(s1704)。例えば、あるライト頻度クラスについて、加算劣化量がD、割当ブロック数がNだとすると、一つのブロックあたりの平均の劣化速度SはD/Nとして表される。劣化度が消去回数に基づいていれば、ライト量に対応するので、割当ブロック数1503の代わりに論理ページ数1502の情報を用いて劣化速度が算出されても良い。このとき、例えばHOTの論理ページに劣化度の低いブロックが割り当てられ、且つHOTの劣化速度がCOLDの劣化速度より低い場合、劣化度分布の広がりは改善しない。仮にそうなっていた場合、COLDの論理ページ群に割り当てるブロック数を増やすことで是正する必要がある。
CPU206は、劣化速度に基づいて目標ブロック数1504を調整する(s1705)。ここで、或るライト頻度クラスに対して、算出された劣化速度Sと、割り当てられるブロックの平均劣化度Ad%を用いると、劣化度が100%になる予想寿命は(1−Ad)/Sとして表される。HOT(HOTとHOT+)にYOUNG(YoungとYoung+)を割り当て、COLD(COLDとCOLD−)にOLD(OldとOld−)を割り当てる場合、YOUNGの予想寿命とOLDの予想寿命が一致すれば、現時点でのYOUNGとOLDは同時に寿命を迎えることになる。CPU206は、このような条件の下で目標ブロック数を計算する。
さらにCPU206は、HOTに分類されたHOTとHOT+の境界についても同様に計算する。このとき、CPU206は、一つのライト頻度クラスの目標ブロック数1504を、例えばYOUNGからN個、YOUNG+からM個という形で、劣化度ランク毎の目標ブロック数として決定しても良い。その場合、CPU206は、クラスデータ量テーブル1501における、ライト頻度クラス毎の割当ブロック数1503を、更に劣化度ランク毎に分けてカウントする。
続いてCPU206は、クラスデータ量テーブル1501から各ライト頻度クラスの論理ページ数1502を取得し、その論理ページ数を元に割当ブロック数1503を調整する(s1706)。本実施例では、論理ページ数が、物理領域上の有効データ量を示すため、例えばs1705の結果によって、あるライト頻度クラスに割り当てられる物理ページ数が、論理ページ数を下回るようなことがないことを保証する必要がある。想定されうるケースとして、COLDのライト頻度が極めて低い場合、s1705により、COLDの割当ブロック数もごく僅かになってしまう。この場合、COLDの目標ブロック数を増やしても、全てのブロックの劣化度が収束するような、劣化速度の条件は満たされるため、CPU206は、ここで目標ブロックの再調整を行う。また、コピーデータ量は、論理データ量と物理データ量の比に影響するため、例えばライト頻度クラスが高いほど、目標ブロック数を多く設定することにより、FMPKG113全体のコピーデータ量を削減することができ、WAを削減することができる。
ここまで、各ライト頻度クラスの目標ブロック数が定まるため、最後に、CPU206は、クラスデータ量テーブル1501に対し、目標ブロック数1503をセットし(s1707)、このフローを終了する。
なお、CPU206は、s1705及びs1706の代わりに、ライト頻度クラスのWAに基づいて目標ブロックを設定してもよい。例えば、CPU206は、s1706と同様、よりライト頻度が高いライト頻度クラスに、より多くの目標ブロック数を設定する。更にCPU206は、ブロック劣化度テーブル1301に基づいてブロックの劣化度分布を算出し、劣化度分布の広がりが予め設定された条件より大きくなった場合、ライト頻度が高いライト頻度クラスの目標ブロック数を減らす。これにより、FMPKG113は、WAを最小化することができる。
リクラメーションにおいて、CPU206は、対象ブロックを選択するリクラメーション対象選択処理を実行する。
図19は、リクラメーション対象選択処理を示す。
CPU206は、リクラメーション対象選択処理を開始すると(s1801)、複数のライト頻度クラスの中から、空きブロックが不足しているライト頻度クラスを対象ライト頻度クラスとして検知する(s1802)。前述のように、空きブロックは、オープンされる時に割当先となるライト頻度クラス毎に、空きブロックプール1602にプールされている。このとき、CPU206は、或るライト頻度クラスの空きブロックプール1602の空きブロック数が空きブロック数閾値を下回る場合に、そのライト頻度クラスの空きブロックの不足と判定する。空きブロック数閾値は、空きブロックが枯渇しない程度のマージンを元に設計される。続いて、CPU206は、クラスデータ量テーブル1501から、各ライト頻度クラスの現状の割当ブロック数1503と、目標ブロック数1504とを取得する(s1803)。続いて、CPU206は、各ライト頻度クラスの目標ブロック数に基づいて、対象ライト頻度クラスへ割り当てる対象劣化度ランク範囲を決定する(s1804)。この処理は、ブロック劣化度テーブル1301に基づいてブロックの劣化度分布を算出し、劣化度分布において劣化度が低いブロックから順に、各ライト頻度クラスに割り当てることにより、各ライト頻度クラスの目標ブロック数を決定する処理に等しい。これにより、各ライト頻度クラスに割り当てられるブロック数が決定される。ただし、劣化度ランクは、非連続なグループ分けであるので、結果的に、HOT+に対して、Young+からN個、YoungからM個、という形で、目標ブロック数が決まる。CPU206は、このように厳密に移動させる目標ブロック数を決定しても良いが、本実施例においては、対象ライト頻度クラスに対して対象劣化度ランク範囲を選択する。例えば、CPU206は、対象ライト頻度クラスであるHOT+に対し、対象劣化度ランク範囲としてYoung+とYoungを選択する。このとき、マッチング処理において、目標ブロック数が劣化度ランク毎に定義されていれば、s1804は省略される。
最後に、CPU206は、目標ブロック数に対する割当ブロック数の過不足数に応じて、対象劣化度ランク範囲内の劣化度ランクのキュー1604からリクラメーションの対象ブロックを選択し(s1805)、このフローを終了する。なお、CPU206は、性能への影響を回避するために、リクラメーション対象選択処理において毎回s1804をコールするのではなく、定期的にリクラメーション対象範囲を見直しても良い。
このリクラメーション対象選択処理の後、CPU206は、リクラメーションにより対象ブロックを消去し、対象ライト頻度クラスに対応する空きブロックプールへ対象ブロックを追加し、空きブロックプール内のブロックをオープンする。このリクラメーション対象選択処理によれば、FMPKG113は、ブロックの劣化度を平準化することができる。
このリクラメーション対象選択処理は、まず対象ライト頻度クラスに対し、各ライト頻度クラスの目標ブロック数に基づいて対象劣化度ランク範囲を選択する。しかし、例えばその範囲内に非常に無効率の低い(大量のコピーが必要な)ブロックしか存在しない場合、特に、対象ライト頻度クラスのライト頻度が非常に高い場合、このリクラメーション対象選択処理は、FMPKG113の性能に大きな影響を与える。そこで、例えば、CPU206は、目標ブロック数で規定される対象劣化度ランク範囲を優先範囲とし、非優先範囲を選択する場合の性能が、優先範囲を選択する場合の性能に比べて、一定以上高くなる場合、非優先範囲内のブロックをリクラメーション対象として選んでも良い。この場合、劣化度の平準化より、ライト性能の向上及び安定性を優先することができる。非優先範囲のブロックを選択するための評価の閾値は、例えばライト頻度クラスの間のライト頻度の比などで設定される。すなわち、ライト頻度が相対的に高いライト頻度クラスが対象ライト頻度クラスである場合、CPU206は、コピー量をなるべく少なくするように、リクラメーション対象ブロックを選択する。
なお、メインメモリ207は、複数の劣化度ランクの夫々と、複数のライト頻度クラスの一つを関連付けるマッチング情報を記憶し、CPU206は、マッチング情報に基づいて、或る劣化度ランクのブロックを、対応するライト頻度クラスに割り当ててもよい。この場合、CPU206は、より低い劣化度のブロックを、より高いライト頻度のライト頻度クラスへ割り当てる。例えば、CPU206は、YOUNG+1、YOUNG、OLD、OLD−1の劣化度ランクを持つブロックを、HOT+1、HOT、COLD、COLD−1のライト頻度クラスへ夫々割り当ててもよい。
本実施例は、近年広く普及が進んでいるNANDフラッシュメモリを初めとする不揮発性半導体ストレージデバイスの高信頼化、または低コスト化のための技術を含んでいる。不揮発性半導体ストレージデバイスは微細化によるビットコスト低下に伴い信頼性の課題が顕著になりつつあり、その課題に対して本実施例の寄与は大きい。
続いてウェアレベリングについて考える。ウェアレベリングを実現する場合、書込データのライト頻度と、書き先の劣化度、という2つの情報を参照する必要がある。前述の通り、最小粒度でウェアレベリングを実現しようとする場合、論理ページ単位でのライト頻度情報の管理が必要となる。ライト頻度情報と劣化度情報は、データの書き先ブロックの決定において参照されるため、性能向上のためには、論物変換情報と同じく、揮発性メモリ上に置くことが望ましい。しかし、揮発性メモリに格納される論物変換情報の情報量は多い。ライト頻度情報は、論理ページ単位で管理される場合、論物変換情報並の情報量となってしまう。また、物理ブロック単位でライト頻度情報を管理すると、ライト頻度情報の管理の粒度が大きいため管理情報量は問題にならないが、細粒度なライト頻度と劣化度のマッチングを行うことはできない。
本実施例によれば、書き込み単位を有する記憶デバイスにおいて、主記憶領域の消費を最小化しつつ細粒度のライト頻度判定を行い、劣化度とライト頻度の最適なマッチングを実現し、フラッシュメモリデバイスの寿命を改善する。さらに、判別されたライト頻度クラスに対して、適切な物理リソースを割り当てることにより、内部コピー量の最小化を実現する。
本発明の表現のための用語について説明する。不揮発性メモリデバイスは、FMPKG113を含んでもよい。不揮発性メモリは、FMチップ210を含んでもよい。揮発性メモリは、メインメモリ207を含んでもよいし、バッファ204を含んでもよい。物理記憶領域グループは、ブロックを含んでもよいし、ブロックグループを含んでもよい。物理記憶領域は、物理ページを含んでもよい。論理記憶領域は、論理ページを含んでもよい。分類は、属性を含んでもよい。分類情報は、ブロック属性テーブル901を含んでもよい。変換情報は、論物変換テーブル601を含んでもよい。ライト頻度情報は、連続コピー回数を含んでもよい。閾値は、連続コピー回数閾値を含んでもよい。劣化度情報は、ブロック劣化度テーブル1301を含んでもよいし、劣化度ランク定義1401を含んでもよい。割当情報は、クラスデータ量テーブル1501を含んでもよい。
本発明は、以上の実施例に限定されるものでなく、その趣旨から逸脱しない範囲で、他の様々な形に変更することができる。
101…ストレージシステム、 102…ストレージコントローラ、 102…上位装置、 102…ストレージコントローラ、 103…ホスト計算機、 104…管理端末、 110…通信コントローラ、 113…フラッシュメモリストレージ装置(FMPKG)、 201…デバイスコントローラ、 202…ストレージインタフェイス、 203…フラッシュメモリコントローラ、 204…バッファ、 207…メインメモリ、 209…フラッシュメモリインタフェイス、 210…フラッシュメモリチップ

Claims (17)

  1. 不揮発性メモリと、
    前記不揮発性メモリ及び上位装置に接続されるコントローラと、
    を備え、
    前記不揮発性メモリは、ライト及びリードの単位である物理記憶領域と、複数の物理記憶領域を含みそれぞれが消去の単位の領域である複数の物理記憶領域グループと、を有し、
    前記複数の物理記憶領域グループのそれぞれのライト頻度クラスの分類を示す分類情報と、
    データが更新されずにコピーされた連続回数である連続コピー回数を含むライト頻度情報と、
    を備え、
    前記物理記憶領域に記憶されたデータを他の物理記憶領域にコピーする場合に、前記コピーするデータにかかる連続コピー回数を含む前記ライト頻度情報と、前記分類情報に基づいて、前記物理記憶領域グループを選択し、選択した物理記憶領域グループ内の物理記憶領域へ前記データをコピーする
    ことを特徴とする不揮発性メモリデバイス。
  2. 請求項1において、
    前記コントローラは、前記上位装置に論理記憶領域を提供し、
    前記論理記憶領域と、前記物理記憶領域とを対応付けた論物変換情報を有し、
    前記ライト頻度情報は、前記論理記領域に紐づけられたデータについて連続コピー回数をカウントして記憶されている
    ことを特徴とする不揮発性メモリデバイス。
  3. 請求項1において、
    前記ライト頻度情報は、
    前記データともに前記不揮発性メモリに格納され、
    前記コピー時には、前記データともに読み出され、前記連続コピー回数がインクリメントされ、コピー先で前記データとともに前記不揮発性メモリに格納される
    ことを特徴とする不揮発性メモリデバイス。
  4. 請求項1において、
    前記コントローラは、ライトコマンドを受信した場合、前記連続コピー回数をリセットし、ライトデータを前記物理記憶領域へ書き込み、前記リセットされた連続コピー回数を前記不揮発性メモリへ書き込む
    ことを特徴とする不揮発性メモリデバイス。
  5. 請求項1において、
    前記コントローラは、
    前記ライト頻度クラスに対して、前記連続コピー回数の閾値を決定し、
    前記コピーを実行する場合、且つコピー元の物理記憶領域の連続コピー回数が前記閾値以下であると判定され、且つ前記コピー元の物理記憶領域を含む物理記憶領域グループのライト頻度クラスが最低のライト頻度を示すライト頻度クラスでないと判定された場合、コピー先の物理記憶領域グループのライト頻度クラスを、前記コピー元の物理記憶領域を含む物理記憶領域グループのライト頻度クラスより低いライト頻度を示すライト頻度クラスへ変更する
    ことを特徴とする不揮発性メモリデバイス。
  6. 請求項5において、
    前記コントローラは、前記コピー元のライト頻度クラスに対応する全ての論理記憶領域の更新ライト回数の合計を計測し、前記コピー元のライト頻度クラスに対応する全ての論理記憶領域の前記不揮発性メモリ内部のコピー回数の合計を計測し、前記コピー元のライト頻度クラスに対し、前記更新ライト回数の合計と前記コピー回数の合計とに基づいて前記閾値を決定する
    ことを特徴とする不揮発性メモリデバイス。
  7. 請求項1において、
    前記コントローラは、
    前記複数の物理記憶領域グループの夫々の劣化度を示す劣化度情報を、揮発性メモリへ格納し、
    前記劣化度情報に基づいて、前記物理記憶領域グループの前記ライト頻度クラスを決定する
    ことを特徴とする不揮発性メモリデバイス。
  8. 請求項7において、
    前記コントローラは、より低い劣化度の物理記憶領域グループを、より高いライト頻度のライト頻度クラスに関連付ける
    ことを特徴とする不揮発性メモリデバイス。
  9. 請求項1において、
    前記コントローラは、
    前記複数のライト頻度クラスの夫々に関連付けられる物理記憶領域グループの数を示す割当情報を、揮発性メモリへ格納し、
    前記割当情報に基づいて、より高いライト頻度のライト頻度クラスに、より多くの物理記憶領域グループを関連付ける
    ことを特徴とする不揮発性メモリデバイス。
  10. 請求項9において、
    前記コントローラは、前記割当情報に基づいて、リクラメーションの対象の物理記憶領域グループを選択する
    ことを特徴とする不揮発性メモリデバイス。
  11. 請求項1において、
    前記コントローラは、変更されたライト頻度情報を前記物理記憶領域へ書き込む
    ことを特徴とする不揮発性メモリデバイス。
  12. 請求項5において、
    前記コントローラは、前記コピー元のライト頻度クラスに対し、更新ライト回数の合計に対する前記不揮発性メモリ内部のコピー回数の合計の比に基づいて前記閾値を決定する
    ことを特徴とする不揮発性メモリデバイス。
  13. 不揮発性メモリと、
    前記不揮発性メモリ及び上位装置に接続されるコントローラと、
    を備え、
    前記不揮発性メモリは、ライト及びリードの単位である物理記憶領域と、複数の物理記憶領域を含みそれぞれが消去の単位の領域である複数の物理記憶領域グループと、を有し、
    前記コントローラは、前記上位装置に論理記憶領域を提供し、
    前記論理記憶領域と、前記物理記憶領域とを対応付けた論物変換情報と、
    前記複数の物理記憶領域グループのそれぞれのライト頻度クラスの分類を示す分類情報と、
    データのライト頻度情報と、
    を備え、
    前記物理記憶領域に記憶されたデータを他の物理記憶領域にコピーする場合に、データが更新されずにコピーされた連続回数である連続コピー回数を含む前記ライト頻度情報と、前記分類情報に基づいて、前記物理記憶領域グループを選択し、選択した物理記憶領域グループ内の物理記憶領域へ前記データをコピーし、
    前記上位装置から受信したライトコマンドの直前のライトコマンドにかかる論理記憶領域が、当該上位装置から受信したライトコマンドにかかる論理記憶領域と連続しない場合、前記選択する物理記憶領域グループよりも高いライト頻度クラスを示す物理記憶領域グループに変更する
    ことを特徴とする不揮発性メモリデバイス。
  14. 不揮発性メモリと、
    前記不揮発性メモリ及び上位装置に接続されるコントローラと、
    を備え、
    前記不揮発性メモリは、ライト及びリードの単位である物理記憶領域と、複数の物理記憶領域を含みそれぞれが消去の単位の領域である複数の物理記憶領域グループと、を有し、
    前記複数の物理記憶領域グループのそれぞれのライト頻度クラスの分類を示す分類情報と、
    データのライト頻度情報と、
    を備え、
    前記物理記憶領域に記憶されたデータを他の物理記憶領域にコピーする場合であり、且つ、前記コピーがリフレッシュでない場合に、前記データが更新されずにコピーされた連続回数である連続コピー回数を含む前記ライト頻度情報と、前記分類情報に基づいて、前記物理記憶領域グループを選択し、選択した物理記憶領域グループ内の物理記憶領域へ前記データをコピーし、
    前記コピーがリフレッシュである場合には、予め設定したライト頻度クラスの前記物理記憶領域グループを選択する
    ことを特徴とする不揮発性メモリデバイス。
  15. 不揮発性メモリと、
    前記不揮発性メモリ及び上位装置に接続されるコントローラと、
    を備える不揮発性メモリデバイスのデータ記憶方法であって、
    前記不揮発性メモリは、ライト及びリードの単位である物理記憶領域と、複数の物理記憶領域を含みそれぞれが消去の単位の領域である複数の物理記憶領域グループと、を有し、
    前記複数の物理記憶領域グループのそれぞれのライト頻度クラスの分類を示す分類情報と、
    データが更新されずにコピーされた連続回数である連続コピー回数を含むライト頻度情報と、
    を備え、
    前記物理記憶領域に記憶されたデータを他の物理記憶領域にコピーする場合に、前記コピーするデータにかかる連続コピー回数を含む前記ライト頻度情報と、前記分類情報に基づいて、前記物理記憶領域グループを選択し、選択した物理記憶領域グループ内の物理記憶領域へ前記データをコピーする
    ことを特徴とする不揮発性メモリデバイスのデータ記憶方法。
  16. 不揮発性メモリと、
    前記不揮発性メモリ及び上位装置に接続されるコントローラと、
    を備える不揮発性メモリデバイスのデータ記憶方法であって、
    前記不揮発性メモリは、ライト及びリードの単位である物理記憶領域と、複数の物理記憶領域を含みそれぞれが消去の単位の領域である複数の物理記憶領域グループと、を有し、
    前記コントローラは、前記上位装置に論理記憶領域を提供し、
    前記論理記憶領域と、前記物理記憶領域とを対応付けた論物変換情報と、
    前記複数の物理記憶領域グループのそれぞれのライト頻度クラスの分類を示す分類情報と、
    データのライト頻度情報と、
    を備え、
    前記物理記憶領域に記憶されたデータを他の物理記憶領域にコピーする場合に、データが更新されずにコピーされた連続回数である連続コピー回数を含む前記ライト頻度情報と、前記分類情報に基づいて、前記物理記憶領域グループを選択し、選択した物理記憶領域グループ内の物理記憶領域へ前記データをコピーし、
    前記上位装置から受信したライトコマンドの直前のライトコマンドにかかる論理記憶領域が、当該上位装置から受信したライトコマンドにかかる論理記憶領域と連続しない場合、前記選択する物理記憶領域グループよりも高いライト頻度クラスを示す物理記憶領域グループに変更する
    ことを特徴とする不揮発性メモリデバイスのデータ記憶方法。
  17. 不揮発性メモリと、
    前記不揮発性メモリ及び上位装置に接続されるコントローラと、
    を備える不揮発性メモリデバイスのデータ記憶方法であって、
    前記不揮発性メモリは、ライト及びリードの単位である物理記憶領域と、複数の物理記憶領域を含みそれぞれが消去の単位の領域である複数の物理記憶領域グループと、を有し、
    前記複数の物理記憶領域グループのそれぞれのライト頻度クラスの分類を示す分類情報と、
    データのライト頻度情報と、
    を備え、
    前記物理記憶領域に記憶されたデータを他の物理記憶領域にコピーする場合であり、且つ、前記コピーがリフレッシュでない場合に、前記データが更新されずにコピーされた連続回数である連続コピー回数を含む前記ライト頻度情報と、前記分類情報に基づいて、前記物理記憶領域グループを選択し、選択した物理記憶領域グループ内の物理記憶領域へ前記データをコピーし、
    前記コピーがリフレッシュである場合には、予め設定したライト頻度クラスの前記物理記憶領域グループを選択する
    ことを特徴とする不揮発性メモリデバイスのデータ記憶方法。
JP2017501801A 2015-02-27 2015-02-27 不揮発性メモリデバイスおよび不揮発性メモリデバイスのデータ記憶方法 Active JP6385556B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/055887 WO2016135955A1 (ja) 2015-02-27 2015-02-27 不揮発性メモリデバイス

Publications (2)

Publication Number Publication Date
JPWO2016135955A1 JPWO2016135955A1 (ja) 2017-09-14
JP6385556B2 true JP6385556B2 (ja) 2018-09-05

Family

ID=56788187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017501801A Active JP6385556B2 (ja) 2015-02-27 2015-02-27 不揮発性メモリデバイスおよび不揮発性メモリデバイスのデータ記憶方法

Country Status (3)

Country Link
US (1) US10241909B2 (ja)
JP (1) JP6385556B2 (ja)
WO (1) WO2016135955A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11294588B1 (en) * 2015-08-24 2022-04-05 Pure Storage, Inc. Placing data within a storage device
US11625181B1 (en) 2015-08-24 2023-04-11 Pure Storage, Inc. Data tiering using snapshots
CN106897026B (zh) * 2016-10-07 2020-02-07 威盛电子股份有限公司 非易失性存储器装置及其地址分类方法
US10733107B2 (en) 2016-10-07 2020-08-04 Via Technologies, Inc. Non-volatile memory apparatus and address classification method thereof
JP2019008730A (ja) 2017-06-28 2019-01-17 東芝メモリ株式会社 メモリシステム
KR102398540B1 (ko) * 2018-02-19 2022-05-17 에스케이하이닉스 주식회사 메모리 장치, 반도체 장치 및 반도체 시스템
US10586592B1 (en) * 2018-08-23 2020-03-10 Micron Technology, Inc. Disturb management based on write times
CN110308876B (zh) * 2019-07-01 2024-05-17 合肥兆芯电子有限公司 存储器管理方法、存储器存储装置及存储器控制电路单元
US10991413B2 (en) * 2019-07-03 2021-04-27 Micron Technology, Inc. Memory with programmable die refresh stagger
US11080205B2 (en) * 2019-08-29 2021-08-03 Micron Technology, Inc. Classifying access frequency of a memory sub-system component
US11416144B2 (en) * 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
WO2021137885A1 (en) * 2020-01-02 2021-07-08 Level 3 Communications, Llc Systems and methods for storing content items in secondary storage
US20230013048A1 (en) * 2021-07-16 2023-01-19 International Business Machines Corporation Handling partition data
US11966618B2 (en) * 2021-08-25 2024-04-23 Western Digital Technologies, Inc. Purposeful super device imbalance for ZNS SSD efficiency
US11960753B2 (en) 2021-08-25 2024-04-16 Western Digital Technologies, Inc. Solution for super device imbalance in ZNS SSD
CN113885796A (zh) * 2021-09-23 2022-01-04 至誉科技(武汉)有限公司 固态硬盘的性能调控方法、装置、设备及可读存储介质
CN116107491A (zh) * 2021-11-10 2023-05-12 三星电子株式会社 存储器控制器、存储装置和存储装置的操作方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
JPH113287A (ja) * 1997-06-12 1999-01-06 Hitachi Ltd 記憶装置およびそれに用いられる記憶領域管理方法
JP4442771B2 (ja) * 2004-12-22 2010-03-31 株式会社ルネサステクノロジ 記憶装置及びコントローラ
KR20120068765A (ko) * 2009-07-17 2012-06-27 가부시끼가이샤 도시바 메모리 관리 장치
WO2011010348A1 (ja) 2009-07-23 2011-01-27 株式会社日立製作所 フラッシュメモリ装置
JP2011203916A (ja) * 2010-03-25 2011-10-13 Toshiba Corp メモリコントローラ、および半導体記憶装置
WO2015052833A1 (ja) * 2013-10-11 2015-04-16 株式会社日立製作所 ストレージ装置、ストレージシステム、及びストレージ装置制御方法

Also Published As

Publication number Publication date
WO2016135955A1 (ja) 2016-09-01
JPWO2016135955A1 (ja) 2017-09-14
US10241909B2 (en) 2019-03-26
US20180067850A1 (en) 2018-03-08

Similar Documents

Publication Publication Date Title
JP6385556B2 (ja) 不揮発性メモリデバイスおよび不揮発性メモリデバイスのデータ記憶方法
US11922039B2 (en) Storage device that secures a block for a stream or namespace and system having the storage device
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
EP3384394B1 (en) Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes
US20220350489A1 (en) Memory system for controlling nonvolatile memory
US10204042B2 (en) Memory system having persistent garbage collection
TWI647702B (zh) 記憶體控制器、記憶體系統及於一記憶體中管理資料配置的方法
US10387062B2 (en) Storage system with cells changeable between two different level cell modes based on predicted lifetime
US20100088461A1 (en) Solid state storage system using global wear leveling and method of controlling the solid state storage system
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
KR101403922B1 (ko) 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법
JPWO2015114754A1 (ja) ストレージ装置
JP2018160189A (ja) メモリシステム
WO2017022082A1 (ja) フラッシュメモリパッケージ、及び、フラッシュメモリパッケージを含むストレージシステム
US10684785B2 (en) Storage system
US20210182192A1 (en) Storage device with enhanced time to ready performance
TWI786288B (zh) 儲存裝置、儲存裝置的控制方法及記錄媒體
US10552086B2 (en) Global pool of garbage collection units (GCUs) in a shared non-volatile memory device
US20240241642A1 (en) Storage device including non-volatile memory device and operating method of storage device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171102

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180417

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180611

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: 20180710

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180807

R150 Certificate of patent or registration of utility model

Ref document number: 6385556

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150