JP2018124725A - メモリシステムおよび方法 - Google Patents
メモリシステムおよび方法 Download PDFInfo
- Publication number
- JP2018124725A JP2018124725A JP2017015530A JP2017015530A JP2018124725A JP 2018124725 A JP2018124725 A JP 2018124725A JP 2017015530 A JP2017015530 A JP 2017015530A JP 2017015530 A JP2017015530 A JP 2017015530A JP 2018124725 A JP2018124725 A JP 2018124725A
- Authority
- JP
- Japan
- Prior art keywords
- block
- memory system
- unit
- host
- logical addresses
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
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)
- Memory System (AREA)
Abstract
【課題】効率的な性能評価を可能にすること【解決手段】メモリシステムは、不揮発性のメモリとコントローラとを備える。メモリは、第1ブロックと第2ブロックとを備え、第1ブロックと第2ブロックはそれぞれ複数の第1単位領域を備える。コントローラは、第1ブロックが備える複数の第1単位領域のうちの第1の数の第1単位領域のそれぞれを第2単位領域に設定し、第2ブロックが備える複数の第1単位領域のうちの第2の数の第1単位領域のそれぞれを第2単位領域に設定する。そして、コントローラは、第1ブロックおよび第2ブロックに含まれるそれぞれの第2単位領域に、複数の論理アドレスのそれぞれを一対一に対応付ける。【選択図】図6
Description
本実施形態は、メモリシステムおよび方法に関する。
従来、メモリシステムとして、NAND型のフラッシュメモリ(以降、NANDメモリ)を備えるSSDが知られている。NANDメモリは、不揮発性のメモリの一例である。
SSDは、使い始めにおいて最大の性能を発揮する。そして、SSDに対するデータの書き込みを繰り返していくと、性能が急激に低下し、その後、性能が定常状態になる。定常状態での性能を効率的に評価するために、SSDの性能が使い始めの状態から定常状態に至るまでの時間を短縮することが要望される。
一つの実施形態は、効率的に性能評価されることが可能なメモリシステムを得ることを目的とする。
一つの実施形態によれば、メモリシステムは、ホストに接続可能である。メモリシステムは、不揮発性のメモリとコントローラとを備える。メモリは、第1ブロックと第2ブロックとを備え、第1ブロックと第2ブロックはそれぞれ複数の第1単位領域を備える。コントローラは、第1ブロックが備える複数の第1単位領域のうちの第1の数の第1単位領域のそれぞれを第2単位領域に設定し、第2ブロックが備える複数の第1単位領域のうちの第2の数の第1単位領域のそれぞれを第2単位領域に設定する。そして、コントローラは、第1ブロックおよび第2ブロックに含まれるそれぞれの第2単位領域に、複数の論理アドレスのそれぞれを一対一に対応付ける。
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステムの構成例を示す図である。メモリシステム1は、通信路3を介してホスト2に接続される。ホスト2は、例えばコンピュータ又はサーバ装置である。コンピュータとは、パーソナルコンピュータ、ポータブルコンピュータ、または、携帯通信機器を含む。メモリシステム1は、ホスト2の外部記憶装置として機能する。通信路3のインタフェース規格としては任意の規格が採用可能である。
図1は、第1の実施形態のメモリシステムの構成例を示す図である。メモリシステム1は、通信路3を介してホスト2に接続される。ホスト2は、例えばコンピュータ又はサーバ装置である。コンピュータとは、パーソナルコンピュータ、ポータブルコンピュータ、または、携帯通信機器を含む。メモリシステム1は、ホスト2の外部記憶装置として機能する。通信路3のインタフェース規格としては任意の規格が採用可能である。
メモリシステム1は、ホスト2に対し、論理的な記憶領域である論理アドレス空間を提供する。論理アドレス空間内の各位置は、論理アドレスによって特定される。メモリシステム1がホスト2に提供する論理アドレス空間の容量は、表記容量(User Capacity)と呼ばれる。
ホスト2は、メモリシステム1に対してアクセスコマンド(ライトコマンドおよびリードコマンド)を発行することができる。アクセスコマンドは、論理アドレス空間内のアクセス位置を指定する論理アドレスを含む。
メモリシステム1は、メモリコントローラ10と、ストレージとして用いられるNAND型のフラッシュメモリ(NANDメモリ)20と、RAM(Random Access Memory)30とを備えている。なお、ストレージとして用いられるメモリの種類は、不揮発性のメモリであれば任意の種類のメモリが採用可能である。例えば、NOR型のフラッシュメモリ、ReRAM(Resistance Random Access Memory)、またはMRAM(Magnetoresistive Random Access Memory)などが採用可能である。RAM30としては、任意の種類のメモリが採用可能である。例えば、揮発性のメモリである、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)が採用可能である。
NANDメモリ20は、メモリセルアレイを有する1以上のNANDチップ21を備える。本図の例では、NANDメモリ20は、4つのNANDチップ21を備える。各メモリセルアレイは、複数の物理ブロックを備える。1つの物理ブロックに保持されている全データは、一括して消去される。各物理ブロックは、複数の物理ページを備える。NANDメモリ20に対するライトおよびリードは、ページ毎に実行される。
なお、所定数の物理ブロックが1つの論理ブロックを構成し、論理ブロック単位でデータの消去が実行されてもよい。また、所定数の物理ページが1つの論理ページを構成し、論理ページ単位でデータのライトおよびリードが実行されてもよい。以降、データの消去の単位の記憶領域を、単に、ブロックと表記する。また、データのライトおよびリードの単位の記憶領域を、単に、ページと表記する。
メモリコントローラ10は、ホスト2からコマンドを受信する。そして、メモリコントローラ10は、受信したコマンドに応じて、ホスト2とNANDメモリ20との間のデータ転送を実行する。
RAM30は、ホスト2とNANDメモリ20との間のデータ転送のバッファとして機能し得る。また、RAM30は、翻訳情報31を記憶する。翻訳情報31は、論理アドレスとNANDメモリ20内でのデータの記録位置(物理アドレス)とのマッピングを保持する情報である。
ホスト2から送られてきたデータのNANDメモリ20へのライト、またはNANDメモリ20内でのデータの転記の際、翻訳情報31が更新されることにより、対応する論理アドレスのマッピングが更新される。具体的には、その論理アドレスに新しい記録位置がマッピングされることによって、更新の前までその論理アドレスがマッピングされていた記録位置(古い記録位置)はいずれの論理アドレスもマッピングされていない状態となる。その結果、ホスト2は、新しい記録位置に格納されたデータをメモリシステム1からリードすることが可能であるが、古い記録位置に格納されたデータをリードすることができなくなる。
以降、論理アドレスがマッピングされている位置に記録されているデータの状態を、「有効」と表記する。また、論理アドレスがマッピングされていない位置に記録されているデータの状態を、「無効」と表記する。
なお、論理アドレス空間において、論理アドレスが割り当てられる単位と、翻訳情報31によって管理される単位とは、同じであってもよいし、異なっていてもよい。ここでは一例として、論理アドレスは、セクタと呼ばれる領域毎に割り当てられ、翻訳情報31は、クラスタと呼ばれる、セクタよりも大きいサイズの領域毎に管理される、として説明する。クラスタは、論理アドレスが連続する複数のセクタを含む。
また、以降の説明において、クラスタは、ホスト2から送られてくるデータがクラスタ単位で格納され得るNANDメモリ20内の記憶領域を指す場合がある。特に、論理アドレスがマッピングされているNANDメモリ20内のクラスタを、有効クラスタと表記し、いずれの論理アドレスもマッピングされてないNANDメモリ20内のクラスタを、無効クラスタと表記する。
なお、翻訳情報31が論理アドレスと物理アドレスとを一対一に対応付けることができる限り、翻訳情報31のデータ構造は特定のデータ構造に限定されない。例えば、翻訳情報31は、クラスタ単位の物理アドレスが、対応する物理アドレスの順で配列されたデータ構造を備える。翻訳情報31は、論理アドレスが、対応する物理アドレスの順で配列されたデータ構造を有していてもよい。また、翻訳情報31は、複数レイヤーのテーブルによって構成されてもよい。また、翻訳情報31は、必ずしも全部がRAM30に保持されていなくてもよい。例えば翻訳情報31の本体がNANDメモリ20に格納され、RAM30には翻訳情報31の一部がキャッシュされてもよい。
メモリコントローラ10は、CPU(Central Processing Unit)11、ホストインタフェース(Host I/F)12、RAMコントローラ(RAMC)13、およびNANDコントローラ(NANDC)14を備える。CPU11、Host I/F12、RAMC13、およびNANDC14は、バスで互いに接続されている。
Host I/F12は、通信路3の制御を実行する。また、Host I/F12は、ホスト2からのコマンドを受け付ける。また、Host I/F12は、ホスト2とRAM30との間のデータ転送を実行する。
RAMC13は、メモリコントローラ10がRAM30にアクセスするためのコントローラである。
CPU11は、ファームウェアプログラムに従って、メモリコントローラ10全体の制御を実行する。ファームウェアプログラムは、例えばNANDメモリ20に予め格納されており、CPU11は、起動時に、ファームウェアプログラムをNANDメモリ20からRAM30にロードする。そして、CPU11は、RAM30上のファームウェアプログラムを実行する。
NANDC14は、CPU11から受信したコマンドに応じた要求をNANDメモリ20へ送信する。また、NANDC14は、RAM30とNANDメモリ20との間のデータ転送を実行する。
上述したように、新たなデータの書き込みによって、NANDメモリ20内の古いデータは無効になる。よって、継続的な書き込みを可能とするためには、メモリシステム1は、表記容量を超えた容量の記憶領域が必要になる。表記容量を超えた分の容量は、余裕容量(over-provisioning capacity)と呼ばれる。
余裕容量分のブロックを使い尽くした場合、メモリコントローラ10は、無効なデータを消去することによって、書き込み可能なブロックを生成する。1つのブロックに記憶される全てのデータが無効であることは稀であるため、実際には、メモリコントローラ10は、ブロック内に残っている有効なデータを別のブロックに転記(コピー)し、その後、転記元のブロックに記憶される全てのデータを消去又は無効化する。この有効なデータを転記するプロセスは、ガベージコレクションと呼ばれる。有効なデータの転記によって有効なデータを全く含まなくなったブロックは、フリーブロックと呼ばれる。
ガベージコレクションが開始されると、NANDメモリ20に対し、ホスト2からのデータの書き込みのほかに、この書き込みとは異なりデータの転記に起因する書き込みが発生する。このデータの転記に起因する書き込みは、メモリシステム1の性能を低下させる。
図2は、一般的なメモリシステムの性能の推移の一例を示すグラフである。このグラフの縦軸は、性能を示している。この例では、性能とは、ランダムライトの性能であり、IOPS(Input/Output Per Second)で表される。ランダムライトとは、それぞれに含まれている論理アドレスの連続性が乏しい複数のライトコマンドを逐次実行することである。このグラフの横軸は、使い始めからの経過時間を示している。
使い始めの状態では、フリーブロックが大量に存在するため、ガベージコレクションが実行されない。そのため、メモリシステムは最大の性能を示す。この状態を、第1状態と表記する。
その後、余裕容量分の全てのブロックがデータでいっぱいになると、ガベージコレクションが開始される。これにより、性能が急激に低下し、それからしばらくの間、性能が安定しない。この状態を、第2状態と表記する。
その後、書き込みがしばらく続くにつれて性能の変動が少なくなり、やがて性能がほぼ一定となる。この状態を、第3状態と表記する。
上記の状態の推移は、有効クラスタ数分布の推移と関係する。有効クラスタ数分布とは、それぞれのブロックに含まれる有効クラスタの数の配列である。図3は、一般的なメモリシステムにおける有効クラスタ数分布の推移を説明するための図である。ここでは、有効クラスタ数分布は各ブロックに含まれる有効クラスタの数を大きい方から順に配列した分布図として説明する。
本図において、有効ブロック数がゼロであるブロックは、フリーブロックを表している。第1状態においては、分布図301に示されるように、フリーブロックが多く存在する。
第2状態以降では、ガベージコレクションが実行される。例えば、フリーブロックの数が、十分に小さい所定数で安定するように、ガベージコレクションの実行頻度が制御される。すなわち、フリーブロックの数が所定数より少なくなった場合、ガベージコレクションが実行され、フリーブロックの数が所定数まで回復した場合、ガベージコレクションが停止し得る。
ガベージコレクションが開始されてから間もないころ、有効クラスタ数分布は、分布図302に示されるように、波打った状態になる。ガベージコレクションにおいては、含まれている有効クラスタの数が最も少ないブロックが、有効なデータの転記元のブロック(以降、ソースブロック)として選択される。有効クラスタ数分布が波打っている場合、ソースブロックが設定される毎に、転記すべき有効なデータの量が変動する。その結果、ガベージコレクションの実行頻度が時間的に変動し、性能が不安定になる。
書き込みがさらに継続すると、分布図303に示されるように、フリーブロックを除く複数ブロックの有効クラスタ数分布が、直線の形状に近づく。このような場合、転記すべき有効なデータの量が、順次選択されるソースブロック間で一定となるので、ガベージコレクションの実行頻度が時間的に一定になり、性能が安定する。第3状態においては、有効クラスタ数分布は、分布図303に示される状態になっている。
メモリシステムの性能を第3状態に示されるような安定した状態で測定するための処理は、プリコンディショニングと呼ばれる。ホスト2からのランダムライトによってプリコンディショニングを行う場合、表記容量と余裕容量とを合計した容量を大幅に上回る量のデータのランダムライトが必要であり、非常に長い時間がかかる。
本実施形態では、プリコンディショニングに要する時間を短縮するために、メモリシステム1は、ガベージコレクションを実行しながらホスト2からのアクセスコマンドに基づいてNANDメモリ20に対するアクセスを行うモード(以降、通常モード)のほかに、準備モードで動作することが可能である。
準備モードは、論理アドレスと物理アドレスとのマッピングをメモリシステム1の内部で決定することによって、有効クラスタと無効クラスタとを擬似的に生成するモードである。準備モードでは、メモリコントローラ10は、各ブロックのそれぞれのクラスタを、第1クラスタまたは第2クラスタに設定し、第1クラスタの物理アドレスに論理アドレスを対応付け、第2クラスタの物理アドレスに論理アドレスを対応付けない。これにより、第1クラスタは、有効クラスタとして見なされる状態になり、第2クラスタは、無効クラスタとして見なされる状態になる。
準備モードにおいては、ホスト2から送られてきたデータではなく、内部的に生成されたデータが各クラスタに格納される。各クラスタに格納されるデータは、任意のデータであり、例えばオール1であってもよい。即ち、準備モードでは、ホスト2からのデータのライトは必要ない。また、準備モードでは、ガベージコレクションは実行されない。準備モードにおいてNANDメモリ20に書き込まれるデータを、ダミーデータと表記する。
メモリコントローラ10は、準備モードにおいて、有効クラスタ数分布が分布図303に示されるような分布となるように、翻訳情報31を生成する。準備モードにおいて翻訳情報31が生成された後に通常モードに遷移すると、メモリシステム1は、遷移した直後から第3状態の性能を発揮することが可能である。
準備モードにおいては、表記容量と余裕容量との合計の容量の全ての領域に対して、ダミーデータがNANDメモリ20に書き込まれる。よって、ランダムライトの繰り返しによってプリコンディショニングを行う場合に比べ、第3状態を実現するまでに要する時間が短縮される。
なお、ランダムライトが繰り返し実行された場合、連続する複数の論理アドレスのそれぞれがマッピングされた物理アドレスは連続せず、かつ各ブロック内のランダムな位置に無効クラスタが発生する傾向がある。準備モードにおいては、メモリコントローラ10は、翻訳情報31をランダムライトが繰り返し実行された後と類似した状態にするために、連続する複数の論理アドレスをできるだけ連続しない複数の物理アドレスにマッピングする。また、メモリコントローラ10は、各ブロック内で無効クラスタをできるだけ均一に分散させる。
準備モードにおいては、実現目標である第3状態の有効クラスタ数分布は、内部的に生成され得るし、外部から設定され得る。第1の実施形態では、実現目標の有効クラスタ数分布が外部(一例としてホスト2)から入力される。以降、実現目標の有効クラスタ数分布を、目標分布と表記する。
図4は、第1の実施形態のCPU11の機能構成を説明する図である。CPU11は、ファームウェアプログラムを実行することによって、アドレス制御部111およびデータ制御部112として機能する。
アドレス制御部111は、準備モードにおいては、翻訳情報31の生成を行う。アドレス制御部111は、通常モードにおいては、翻訳情報31の更新および参照を実行する。
データ制御部112は、通常モードにおいては、ホスト2からのアクセスコマンドに応じたデータ転送と、ガベージコレクションに起因するブロック間のデータの転記とを実行する。データ制御部112は、準備モードにおいては、ダミーデータのNANDメモリ20への書き込みを実行する。
次に、第1の実施形態のメモリシステム1の動作を説明する。
図5は、第1の実施形態のメモリシステム1とホスト2との動作の概要を示すシーケンス図である。まず、ホスト2は、メモリシステム1に対し、準備コマンドを送信する(S101)。準備コマンドは、準備モードを開始するためのコマンドである。準備コマンドは、他のコマンドとは独立した専用のコマンドであってもよいし、既存のコマンドのコマンドオプションとして用意されてもよい。例えば、準備コマンドは、フォーマットコマンドのコマンドオプションとして用意されてもよい。
S101の処理に続いて、ホスト2は、メモリシステム1に、目標分布を送信する(S102)。
目標分布は、有効クラスタ数の数列で表現されたデータ構造を有していてもよいし、関数のデータ構造を有していてもよい。ホスト2は、プリコンディショニングが完了した他のメモリシステムから有効クラスタ数分布を予め取得し、取得した有効クラスタ数分布を目標分布として用いてもよい。当該他のメモリシステムでは、例えばランダムライトの繰り返しによってプリコンディショニングが実行されてもよい。目標分布は、実験または計算によって演算され、ホスト2に予め保持されていてもよい。
メモリシステム1は、準備コマンドと目標分布とをホスト2から受信すると、準備モードでの動作を開始する(S103)。なお、前述したように、準備モードでは、ガベージコレクションの実行は禁止されると共に、アクセスコマンドの処理は実行されない。
メモリシステム1は、準備モードでの動作が完了すると、ホスト2にプリコンディショニングの完了を通知する(S104)。そして、メモリシステム1は、通常モードに遷移する(S105)。通常モードでは、メモリシステム1は、アクセスコマンドの処理およびガベージコレクションを実行することができる。また、メモリシステム1は、通常モードに遷移後、第3状態の性能を発揮することができる。よって、ホスト2は、完了の通知を受信すると、すぐに第3状態での性能の計測を行うことができる。
図6は、第1の実施形態のメモリシステム1の準備モードでの動作を示すフローチャートである。
まず、アドレス制御部111は、論理アドレス列を生成する(S201)。論理アドレス列は、論理アドレス空間内の全クラスタ分の論理アドレスの数列である。論理アドレス列では、全クラスタ分の論理アドレスができるだけランダムに並べられており、同一の論理アドレスの重複は禁止されている。
一例では、アドレス制御部111は、下記の式(1)を用いることによって論理アドレス列を生成する。
LA_i=(i-(i mod Nb)]/Nb+(Nt-(Nt mod Nb))/Nb*(i mod Nb) ・・・(1)
LA_i=(i-(i mod Nb)]/Nb+(Nt-(Nt mod Nb))/Nb*(i mod Nb) ・・・(1)
ここで、LA_iは、論理アドレス列の先頭からi番目の要素である。Ntは、論理アドレス空間内のクラスタの総数である。Nbは、1ブロック内のクラスタの総数である。
なお、論理アドレス列を生成するアルゴリズムは、上記の例だけに限定されない。例えばアドレス制御部111は、乱数発生器を用いることによって、論理アドレス空間内の全クラスタ分の論理アドレスをランダムに配列した論理アドレス列を生成してもよい。
図6に戻り、(S201)の処理に続いて、アドレス制御部111は、各クラスタに論理アドレスを割り当てる処理に移る。この処理は、一例として、ブロック毎に実行される。
アドレス制御部111は、まず、1つのブロック(以降、対象ブロック)を選択する(S202)。なお、S202〜S210は、ブロック単位で実行されるループ処理を構成する。初回の実行の場合、任意の基準に基づいて対象ブロックが選択される。2回目以降の実行の場合、まだ対象ブロックとして選択されていないブロックのうちから、対象ブロックが選択される。
続いて、アドレス制御部111は、目標分布から、1つの有効クラスタ数を選択する(S203)。例えば、アドレス制御部111は、未選択の有効クラスタ数のうちから最も大きい有効クラスタ数を選択する。
そして、アドレス制御部111は、第1クラスタの数が選択した有効クラスタ数と一致するように、対象ブロックに含まれる全クラスタのそれぞれを、第1クラスタおよび第2クラスタの何れかに設定する(S204)。
例えば、アドレス制御部111は、各ブロック内で、第1クラスタをできるだけ均一に分散させる。図7は、第1の実施形態における第1クラスタおよび第2クラスタの設定方法を説明するための図である。本図は、1つのブロック内のクラスタの物理アドレス順の配列を示している。各行において、紙面右方に向かって物理アドレスが昇順に増加する。各行の右端のクラスタの物理アドレスには、次の行の左端のクラスタの物理アドレスが後続する。
斜線を施された矩形401は、第1クラスタを示しており、白抜きの矩形402は、第2クラスタを示している。例えばブロックに含まれるクラスタの数が140000個であり、第1クラスタの数が120000個である場合、アドレス制御部111は、本図に示されるように、物理アドレスが連続する6個のクラスタを第1クラスタに設定し、その次の1個のクラスタを第2クラスタに設定する。これにより、第1クラスタ及び第2クラスタが対象ブロック内に均一に分散する。
S204の処理に続いて、アドレス制御部111は、対象ブロック内の1つの第1クラスタを選択し(S205)、1つの論理アドレスを選択する(S206)。そして、アドレス制御部111は、選択された第1クラスタを示す物理アドレスと選択された論理アドレスとを対にして保持する(S207)。例えば、アドレス制御部111は、RAM30上に一時的なファイルを用意し、そのファイルに対を追加形式で記録する。ファイルのデータ構造は、特定のデータ構造に限定されない。例えばファイルはテーブルのデータ構造を有していてもよい。
S205の処理においては、アドレス制御部111は、対象ブロック内の未選択の複数の第1クラスタのうちから物理アドレスの順で1つの第1クラスタを選択する。S206の処理においては、アドレス制御部111は、論理アドレス列内の未選択の論理アドレスから、論理アドレス列内の並びの順で1つの論理アドレスを選択する。
続いて、アドレス制御部111は、論理アドレス列に含まれる全ての論理アドレスが選択済みであるか否かを判定する(S208)。論理アドレス列内に未選択の論理アドレスが残っている場合(S208、No)、アドレス制御部111は、対象ブロック内の全ての第1クラスタが選択済みであるか否かを判定する(S209)。対象ブロック内に未選択の第1クラスタが残っている場合(S209、No)、S205の処理が再び実行される。
対象ブロック内の全ての第1クラスタが選択済みである場合(S209、Yes)、データ制御部112は、ダミーデータを少なくとも対象ブロックの全ての第1クラスタに書き込む(S210)。S210の処理の後、S202の処理が再び実行される。なお、データ制御部112は、第2クラスタにはダミーデータを書き込まなくてもよい。
論理アドレス列に含まれる全ての論理アドレスが選択済みである場合(S208、Yes)、データ制御部112は、ダミーデータを少なくとも対象ブロックの全ての第1クラスタに書き込む(S211)。なお、S210及びS211では、例えば、データ制御部112は、対象ブロック内の先頭のページから最後に選択された第1クラスタを含むページまで、ダミーデータの書き込みを実行する。S211においても、データ制御部112は、第2クラスタにはダミーデータを書き込まなくてもよい。
そして、アドレス制御部111は、保持されている全ての対に基づいて翻訳情報31を生成する(S212)。例えば翻訳情報31のデータ構造が論理アドレスから物理アドレスに変換するルックアップテーブルである場合、アドレス制御部111は、それぞれの対を論理アドレスの順番に並び替えることによって、翻訳情報31を生成することができる。
以上の例では、アドレス制御部111は、連続する複数の論理アドレスを、連続しない複数の物理アドレスに対応付けるために、一例として、論理アドレスをランダムに配列した数列を生成し、連続する複数の物理アドレスのそれぞれに、数列の各要素を、その数列内の順番で対応付ける。連続する複数の論理アドレスを、連続しない複数の物理アドレスに対応付けるアルゴリズムは、これに限定されない。
このように、第1の実施形態によれば、アドレス制御部111は、複数のブロックのそれぞれに対し、第1クラスタ(有効クラスタ)の数を選択する(図6のS203)。なお、複数のブロックは、少なくとも2つのブロックである。アドレス制御部111は、選択した数の第1クラスタを複数のブロックのそれぞれに設定する(図6のS204)。そして、アドレス制御部111は、設定したそれぞれの第1クラスタに複数の論理アドレスのそれぞれを一対一に対応付ける。よって、メモリシステム1は、ランダムライトの繰り返しを行うことなく分布図303の有効クラスタ分布を実現することができるので、プリコンディショニングに要する時間が短縮される。換言すると、効率的に性能評価されることが可能になる。
なお、アドレス制御部111は、複数の論理アドレスのそれぞれと第1クラスタのそれぞれとの対応関係を示す翻訳情報31を生成する。よって、アドレス制御部111は、翻訳情報31を使用することによって、ホスト2からのアクセスコマンドの処理を実行することが可能である。アドレス制御部111は、通常モードにおいて、即ち翻訳情報31を生成した後、ホスト2からのアクセスコマンドに応じて翻訳情報31を参照または更新する。
また、アドレス制御部111は、ホスト2から目標分布および準備コマンドを受信したことに応答して翻訳情報31の生成を開始する(図5のS101〜103)。よって、プリコンディショニングの動作をホスト2から制御することが可能である。
また、目標分布は、有効クラスタ数をブロック毎に示す情報であり、他のメモリシステムから得られた情報である。プリコンディショニング済みのメモリシステムから得られた有効クラスタ数分布を目標分布として使用することが可能であるので、多数のメモリシステムを性能評価する場合に、性能評価の効率が向上する。
また、アドレス制御部111は、複数の論理アドレスをランダムにまたは擬似的なランダムに配列し(図6のS201)、複数の論理アドレスのそれぞれを、第1クラスタのそれぞれに、配列された順番で対応付ける(図6のS205〜S209、No)。
なお、論理アドレス列は、他のコンピュータで予め生成され、メモリシステム1に送られてもよい。例えば、メモリシステム1は、準備コマンドおよび目標分布とともに論理アドレス列をホスト2から受信してもよい。
また、アドレス制御部111は、それぞれの第1クラスタをブロック内で均一に分散させる(図6のS204)。よって、翻訳情報31の状態をランダムライトが繰り返し実行された後の状態と類似した状態にすることが可能である。即ち、翻訳情報31を、ランダムライトが繰り返し実行された後の状態と類似した状態にすることが可能である。
また、データ制御部112は、ダミーデータをそれぞれのブロックに書き込む(図6のS210,S211)。よって、メモリシステム1は、通常モードに遷移した後、リードコマンドに応答してダミーデータをホスト2に送信することが可能である。なお、データ制御部112は、第2クラスタ(無効クラスタ)にはダミーデータを書き込まなくてもよい。
(第2の実施形態)
第1の実施形態では、ホスト2がメモリシステム1に目標分布を送信する例を説明した。第2の実施形態では、メモリシステム1が内部で目標分布を演算する例について説明する。
第1の実施形態では、ホスト2がメモリシステム1に目標分布を送信する例を説明した。第2の実施形態では、メモリシステム1が内部で目標分布を演算する例について説明する。
表記容量が同じである場合、性能の変動が小さい状態である第3状態での有効クラスタ数分布は、余裕率に応じて異なる。余裕率とは、余裕容量を表記容量で除算して得られる値である。
図8は、第3状態での有効クラスタ数分布の例を示すグラフである。本図には、余裕率が10%の場合の有効クラスタ数分布と余裕率が25%の場合の有効クラスタ数分布が示されている。余裕率が25%の場合、余裕率が10%の場合に比べて、有効クラスタ数分布の傾きが急にになっている。これは、余裕率が大きいほど利用可能なブロックの数が多いためである。
第2の実施形態では、アドレス制御部111は、2つの有効クラスタ数分布と、自身のメモリシステム1の余裕率と、に基づいて、目標分布を演算する。以下に、目標分布の演算方法の一例を説明する。目標分布の演算に使用される2つの有効クラスタ数分布を、モデル分布と表記する。
予め用意された2つのモデル分布のうち、一方(第1モデル分布)は、余裕率がOP1の場合の有効クラスタ数分布であり、他方(第2モデル分布)は、余裕率がOP2の場合の有効クラスタ数分布である。ただし、ここでは、OP1はOP2よりも大きいこととする。
各モデル分布および目標分布は、下記の一次式で近似される。
y=-A*x+B ・・・(2)
y=-A*x+B ・・・(2)
自身のメモリシステム1の余裕率をOPt、第1モデル分布の傾きAをA1、第1モデル分布のy切片BをB1、第2モデル分布の傾きAをA2、第2モデル分布のy切片BをB2とすると、アドレス制御部111は、目標分布の傾きAtおよび目標分布のy切片Btを、下記の式(3)、(4)によって演算する。
At=A1+|A1-A2|*((OP1-OPt)/(OP1-OP2)) ・・・(3)
Bt=B1-(B1-B2)*((OP1-OPt)/(OP1-OP2)) ・・・(4)
At=A1+|A1-A2|*((OP1-OPt)/(OP1-OP2)) ・・・(3)
Bt=B1-(B1-B2)*((OP1-OPt)/(OP1-OP2)) ・・・(4)
図9は、第2の実施形態の演算された目標分布を説明するための図である。図10の例では、余裕率が10%の場合のモデル分布と、余裕率が25%である場合のモデル分布から、メモリシステム1の余裕率が15%である場合のモデル分布が演算されている。
なお、アドレス制御部111は、それぞれが傾きとy切片との組み合わせによって表された2つのモデル分布を取得してもよいし、それぞれが有効クラスタ数の配列によって表された2つのモデル分布を取得してもよい。後者の場合、アドレス制御部111は、各有効クラスタ数分布を式(2)の一次式で近似することによって、傾きとy切片とを演算する。
2つのモデル分布は、準備コマンドとともにホスト2からメモリシステム1に送られてきてもよいし、予めNANDメモリ20などに格納されていてもよい。アドレス制御部111は、例えば、図6のS202〜210のループ処理を開始する前に目標分布を演算する。
このように、第2の実施形態によれは、アドレス制御部111は、それぞれ異なる余裕率に対応付けられた2つのモデル分布と、自身を備えるメモリシステム1の余裕率と、に基づいて目標分布を演算する。2つのモデル分布から任意の余裕率の目標分布を演算することが可能であるので、メモリシステム1ごとに、目標分布を用意しておく必要がなくなる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、3 通信路、10 メモリコントローラ、11 CPU、12 Host I/F、13 RAMC、14 NANDC、20 NANDメモリ、21 NANDチップ、30 RAM、31 翻訳情報、111 アドレス制御部、112 データ制御部、301,302,303 分布図、401,402 矩形。
Claims (20)
- ホストに接続可能なメモリシステムであって、
第1ブロックと第2ブロックとを備え、前記第1ブロックと前記第2ブロックはそれぞれ複数の第1単位領域を備える不揮発性のメモリと、
前記第1ブロックが備える複数の第1単位領域のうちの第1の数の第1単位領域のそれぞれを第2単位領域に設定し、前記第2ブロックが備える複数の第1単位領域のうちの第2の数の第1単位領域のそれぞれを前記第2単位領域に設定し、前記第1ブロックおよび前記第2ブロックに含まれるそれぞれの前記第2単位領域に、複数の論理アドレスのそれぞれを一対一に対応付ける、コントローラと、
を備えるメモリシステム。 - 前記コントローラは、前記複数の論理アドレスのそれぞれと前記第1ブロックおよび前記第2ブロックに含まれる複数の前記第2単位領域のそれぞれとの対応関係を示す翻訳情報を生成する、
請求項1に記載のメモリシステム。 - 前記コントローラは、前記第1の数および前記第2の数を示す分布情報を前記ホストから受信する、
請求項1に記載のメモリシステム。 - 前記分布情報は、論理アドレスが対応付けられた前記第2単位領域の数を前記第1ブロックと前記第2ブロック毎に示す情報である、
請求項3に記載のメモリシステム。 - 前記コントローラは、それぞれ異なる余裕率と対応付けられた少なくとも2つの分布情報と、自身を備えるメモリシステムの余裕率と、に基づいて前記第1の数および前記第2の数を決定する、
請求項4に記載のメモリシステム。 - 前記コントローラは、前記複数の論理アドレスをランダムにまたは擬似的にランダムに配列し、前記複数の論理アドレスのそれぞれを、前記第1ブロックおよび前記第2ブロックに含まれるそれぞれの第2単位領域に、配列された順で対応付ける、
請求項1に記載のメモリシステム。 - 前記コントローラは、前記複数の論理アドレスをランダムにまたは擬似的にランダムに配列した配列情報を前記ホストから受信し、前記複数の論理アドレスのそれぞれを、前記第1ブロックおよび前記第2ブロックに含まれるそれぞれの第2単位領域に、前記配列情報において配列された順で対応付ける、
請求項1に記載のメモリシステム。 - 前記コントローラは、それぞれの前記第2単位領域を前記第1のブロック内および前記第2のブロック内で均一に分散させる、
請求項1に記載のメモリシステム。 - 前記コントローラは、前記ホストから受信していないデータを、少なくとも前記第1ブロックおよび前記第2ブロックに含まれるそれぞれの前記第2単位領域に書き込む、
請求項1に記載のメモリシステム。 - 前記コントローラは、前記翻訳情報を生成した後、前記ホストからのアクセスコマンドに応じて前記翻訳情報を参照または更新する、
請求項2に記載のメモリシステム。 - メモリコントローラが、第1ブロックと第2ブロックとを備え、前記第1ブロックと前記第2ブロックは複数の第1単位領域を備える不揮発性のメモリを具備するメモリシステムにおいて前記メモリを制御する方法であって、
前記第1ブロックが備える複数の第1単位領域のうちの第1の数の第1単位領域のそれぞれを第2単位領域に設定することと、
前記第2ブロックが備える複数の第1単位領域のうちの第2の数の第1単位領域のそれぞれを前記第2単位領域に設定することと、
前記第1ブロックおよび前記第2ブロックに含まれるそれぞれの前記第2単位領域に、複数の論理アドレスのそれぞれを一対一に対応付けることと、
を備える方法。 - 前記複数の論理アドレスと前記第1ブロックおよび前記第2ブロックに含まれる複数の前記第2単位領域との対応関係を示す翻訳情報を生成すること、
をさらに備える、
請求項11に記載の方法。 - 前記第1の数および前記第2の数を示す分布情報をホストから受信すること、
をさらに備える、
請求項11に記載の方法。 - 前記分布情報は、論理アドレスが対応付けられた前記第2単位領域の数を前記第1ブロックと前記第2ブロック毎に示す情報である、
請求項13に記載の方法。 - それぞれ異なる余裕率と対応付けられた少なくとも2つの分布情報を前記ホストから受信し、前記2つの分布情報と、自身を備えるメモリシステムの余裕率と、に基づいて前記第1の数および前記第2の数を決定すること、
をさらに備える、
請求項14に記載の方法。 - 前記複数の論理アドレスをランダムにまたは擬似的にランダムに配列し、前記複数の論理アドレスのそれぞれを、前記第1ブロックおよび前記第2ブロックに含まれるそれぞれの第2単位領域に、配列された順で対応付けること、
をさらに備える、
請求項11に記載の方法。 - 前記複数の論理アドレスをランダムにまたは擬似的にランダムに配列した配列情報をホストから受信し、前記複数の論理アドレスのそれぞれを、前記第1ブロックおよび前記第2ブロックに含まれるそれぞれの第2単位領域に、前記配列情報において配列された順で対応付けること、
をさらに備える、
請求項11に記載の方法。 - それぞれの前記第2単位領域を前記第1ブロック内で均一に分散させることと、
それぞれの前記第2単位領域を前記第2ブロック内で均一に分散させること、
をさらに備える、
請求項11に記載の方法。 - ホストから受信していないデータを、少なくとも前記第1ブロックおよび前記第2ブロックに含まれるそれぞれの前記第2単位領域に書き込むこと、
をさらに備える、
請求項11に記載の方法。 - 第1ブロックと第2ブロックとを備え、各ブロックは複数の第1単位領域を備える不揮発性のメモリと、
外部からのライトコマンドを要することなく、前記第1ブロックが備える複数の第1単位領域のうちの第1の数の第1単位領域と、前記第2ブロックが備える複数の第1単位領域のうちの第2の数の第1単位領域と、のそれぞれと、前記外部からの前記ライトコマンドにおいて指定可能な複数の論理アドレスのそれぞれと、を一対一に対応付けるコントローラと、
を備えるメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017015530A JP2018124725A (ja) | 2017-01-31 | 2017-01-31 | メモリシステムおよび方法 |
US15/701,580 US20180217753A1 (en) | 2017-01-31 | 2017-09-12 | Memory system and control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017015530A JP2018124725A (ja) | 2017-01-31 | 2017-01-31 | メモリシステムおよび方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018124725A true JP2018124725A (ja) | 2018-08-09 |
Family
ID=62979868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017015530A Pending JP2018124725A (ja) | 2017-01-31 | 2017-01-31 | メモリシステムおよび方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20180217753A1 (ja) |
JP (1) | JP2018124725A (ja) |
-
2017
- 2017-01-31 JP JP2017015530A patent/JP2018124725A/ja active Pending
- 2017-09-12 US US15/701,580 patent/US20180217753A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20180217753A1 (en) | 2018-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240103769A1 (en) | Data Writing Method and Storage Device | |
US10891225B2 (en) | Host- directed sanitization of memory | |
US11036646B2 (en) | Data storage device and method of writing logical-to-physical mapping table thereof | |
TWI396087B (zh) | 用於控制電腦記憶體的裝置、方法和實體機器可讀媒體 | |
US20190220396A1 (en) | Data Storage Device | |
TWI579692B (zh) | 記憶體系統、資料儲存系統、使用者裝置及其資料管理方法 | |
JP3942807B2 (ja) | ブロックアラインメント機能付き半導体記憶装置 | |
US20130173845A1 (en) | Command Aware Partial Page Programming | |
JP2018049523A (ja) | メモリシステムおよび制御方法 | |
KR102652694B1 (ko) | 서브 블록 모드를 사용한 구역 네임스페이스 제한 완화 | |
TWI505090B (zh) | 差異邏輯至實體方法 | |
JP2020035128A (ja) | メモリシステム | |
JP2009099149A (ja) | 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置 | |
KR20220005111A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 | |
JP7234144B2 (ja) | Nandバッファを有するnandフラッシュストレージデバイス | |
US20200319809A1 (en) | Apparatuses and methods for counter update operations | |
KR20210026431A (ko) | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 | |
JP2016024678A (ja) | メモリシステム | |
US11347420B2 (en) | Attribute mapping in multiprotocol devices | |
JP2022171208A (ja) | メモリシステムおよび制御方法 | |
KR20070061543A (ko) | 메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체 | |
JP2020017134A (ja) | 記憶装置及び記憶制御方法 | |
CN115390747A (zh) | 存储设备及其操作方法 | |
JP2018124725A (ja) | メモリシステムおよび方法 | |
KR20210050661A (ko) | 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170605 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180905 |