JP2019101708A - 不揮発性メモリデバイス - Google Patents
不揮発性メモリデバイス Download PDFInfo
- Publication number
- JP2019101708A JP2019101708A JP2017231284A JP2017231284A JP2019101708A JP 2019101708 A JP2019101708 A JP 2019101708A JP 2017231284 A JP2017231284 A JP 2017231284A JP 2017231284 A JP2017231284 A JP 2017231284A JP 2019101708 A JP2019101708 A JP 2019101708A
- Authority
- JP
- Japan
- Prior art keywords
- read
- nvm
- chip
- controller
- storage area
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
【課題】NVMコントローラの性能及び推定された劣化度の正確性のうちの少なくとも1つの向上が期待できる不揮発性メモリ(NVM)デバイスを提供する。【解決手段】NVMデバイスが、1以上のNVM(フラッシュメモリFM)チップ175と、1以上のNVMチップと通信するNVMコントローラとを有する。1以上のNVMチップの各々が、複数の記憶領域と、複数の記憶領域の各々について、当該記憶領域に対するリードの結果を基に、当該記憶領域についてのリードパラメータの決定及び当該リードパラメータを用いたリードと、当該記憶領域の劣化度の推定とのうちの少なくとも1つを行うチップコントローラ121とを有する。【選択図】図1
Description
本発明は、概して、不揮発性メモリデバイスでの記憶制御に関する。
NAND型フラッシュメモリ(以下、FM)を搭載するソリッドステートドライブ(以下、SSD)等のようなフラッシュメモリデバイス(以下、FMデバイス)が、不揮発性メモリ(典型的には、不揮発性半導体メモリ、以下、NVM)を有するNVMデバイスの一例として知られている。FMデバイスは、一般に、複数のFM(FMチップ)と、複数のFMチップに対するI/O(Input/Output)を制御するFMコントローラとを有する。
一般に、FMコントローラが、リード処理(リードコマンドの受信から応答までの処理)において、リードパラメータ(典型的には、リードのための電圧)を決定し、決定したリードパラメータでデータをリードする。リードしたデータにエラービットがあれば、FMコントローラは、当該エラービットを、リードしたデータに付与されているECC(Error Correction Code)を用いて訂正する。エラー訂正に失敗した場合、FMコントローラは、リードリトライを行う、すなわち、リードパラメータを切り替え、切り替え後のリードパラメータでデータをリードする。
このように、一般に、FMコントローラが、リードパラメータの切り替えを行う。この種の技術が、例えば特許文献1に開示されている。
リードパラメータの切り替えとリードパラメータを用いたリードは、FMコントローラにより行われる。それらが多発すると、FMコントローラのリード性能(例えば、レスポンスタイム及びスループットの少なくとも1つ)が低下し得る。
また、一般に、FMコントローラは、ブロックの消去回数を平準化するウェアレベリング処理を行う。言い換えれば、消去回数が劣化度と推定され、劣化度の平準化が行われる。しかし、実際の劣化度は、消去回数と等しいわけではない。このため、消去回数が相対的に多いブロックであっても実際の劣化度が相対的に低かったり、消去回数が相対的に少ないブロックであっても実際の劣化度が相対的に高かったりし得る。劣化度を正確に推定するためには、状態検査のために頻繁にFMコントローラが各FMチップに対してリードを行う必要が生じるが、そうなると、FMコントローラの負荷が高くなり、FMコントローラの性能の低下が懸念される。
この種の課題は、FMデバイス以外のNVMデバイスについてもあり得る。
NVMデバイスが、1以上のNVM(不揮発性メモリ)チップと、1以上のNVMチップと通信するNVMコントローラとを有する。複数のNVMチップの各々が、複数の記憶領域と、複数の記憶領域の各々について、当該記憶領域に対するリードの結果を基に、(x)当該記憶領域についてのリードパラメータの決定及び当該リードパラメータを用いたリードと、(y)当該記憶領域の劣化度の推定とのうちの少なくとも1つを行うチップコントローラとを有する。
NVMデバイスにおけるNVMコントローラの性能、及び、推定された劣化度の正確性のうちの少なくとも1つの向上が期待できる。
以下の説明では、「インターフェース部」は、1以上のインターフェースでよい。当該1以上のインターフェースは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ部」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GUP(Graphics Processing Unit)のような他種のプロセッサでもよい。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部又は全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜にメモリ部及び/又はインターフェース部等を用いながら行うため、処理の主語が、プロセッサ部(或いは、そのプロセッサ部を有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
以下、本発明の幾つかの実施例を図面に基づいて説明する。なお、本発明は、以下に説明する実施例に限定されるものではない。
図1は、実施例1に係るストレージシステムの構成を示す。
ストレージシステム110が、1以上のFMPK(FMパッケージ)112と、1以上のFMPK112に接続された上位デバイス111とを有する。ストレージシステム110が、汎用計算機の場合、上位デバイス111は、プロセッサ部でよい。ストレージシステム110が、複数のFMPK112(例えば1以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループ)を有するストレージ装置の場合、上位デバイス111は、複数のFMPK112にコマンド(要求)を発行するストレージコントローラでよい。
各FMPK112は、FMデバイスの一例である。FMPK112は、複数(又は1)のFMチップ175と、複数のFMチップ175と通信するFMPKコントローラ181とを有する。各FMチップ175が、複数の記憶領域と、チップコントローラ121とを有する。チップコントローラ121が、当該チップコントローラ121を有するFMチップ175内の複数の記憶領域の各々について、当該記憶領域に対するリードの結果(例えば、リードされたデータ中のエラービットの数)を基に、下記の(x)及び(y)、
(x)当該記憶領域についてのリードパラメータの決定及び当該リードパラメータを用いたリード、及び、
(y)当該記憶領域の劣化度の推定、
のうちの少なくとも1つを行う。これにより、下記のうちの少なくとも1つが期待できる。
・FMPKコントローラ181が、リードパラメータの決定及びリードパラメータを用いたリードと、劣化度の推定といった処理を行う必要が無くなる。このため、FMPKコントローラ181の性能の向上が期待できる。一比較例によれば、2以上のリードコマンドにそれぞれ対応した2以上のリード元のページが、同一バス上の2以上のFMチップに存在する場合、或るリードコマンドに従うリード処理においてFMPKコントローラによって多くのリードリトライが行われ、結果として、バスが長時間占有されて、別のリードコマンドのリード処理が待たされるおそれがでる。本実施例によれば、FMチップ175のチップコントローラ121がリードパラメータの決定及びリードパラメータを用いたリードを行うため(つまり、リードパラメータの決定とそのリードパラメータを用いたリードがFMチップ175で閉じるため)、リードリトライがたとえ多発しても、FMPKコントローラ181とFMチップ175間のバス172が長時間占有されることが無い。
・一比較例において、FMPKコントローラが、劣化度を正確に推定するためには、状態検査のために高頻度に各FMチップに対してリードを行う必要が生じるが、そうなると、FMPKコントローラの負荷が高くなり、FMPKコントローラの性能の低下が懸念される。本実施例によれば、FMチップ175のチップコントローラ121が、当該FMチップ175内の各記憶領域について、リードの結果(例えば、リードされたデータ中のエラービット数)、すなわち、当該記憶領域の実際の状態を基に、当該記憶領域の劣化度を推定する。このため、推定された劣化度の正確性の向上が期待できる。
(x)当該記憶領域についてのリードパラメータの決定及び当該リードパラメータを用いたリード、及び、
(y)当該記憶領域の劣化度の推定、
のうちの少なくとも1つを行う。これにより、下記のうちの少なくとも1つが期待できる。
・FMPKコントローラ181が、リードパラメータの決定及びリードパラメータを用いたリードと、劣化度の推定といった処理を行う必要が無くなる。このため、FMPKコントローラ181の性能の向上が期待できる。一比較例によれば、2以上のリードコマンドにそれぞれ対応した2以上のリード元のページが、同一バス上の2以上のFMチップに存在する場合、或るリードコマンドに従うリード処理においてFMPKコントローラによって多くのリードリトライが行われ、結果として、バスが長時間占有されて、別のリードコマンドのリード処理が待たされるおそれがでる。本実施例によれば、FMチップ175のチップコントローラ121がリードパラメータの決定及びリードパラメータを用いたリードを行うため(つまり、リードパラメータの決定とそのリードパラメータを用いたリードがFMチップ175で閉じるため)、リードリトライがたとえ多発しても、FMPKコントローラ181とFMチップ175間のバス172が長時間占有されることが無い。
・一比較例において、FMPKコントローラが、劣化度を正確に推定するためには、状態検査のために高頻度に各FMチップに対してリードを行う必要が生じるが、そうなると、FMPKコントローラの負荷が高くなり、FMPKコントローラの性能の低下が懸念される。本実施例によれば、FMチップ175のチップコントローラ121が、当該FMチップ175内の各記憶領域について、リードの結果(例えば、リードされたデータ中のエラービット数)、すなわち、当該記憶領域の実際の状態を基に、当該記憶領域の劣化度を推定する。このため、推定された劣化度の正確性の向上が期待できる。
各FMチップ175について、複数の記憶領域の各々は、本実施例では、I/O単位であるページ167である。各記憶領域が、ページ167のような相対的に小さい単位の場合、後述の最適リードパラメータや劣化度の管理が精密になる。なお、各記憶領域が、ブロック166又はダイ165のような相対的に大きい単位でもよい。この場合、最適リードパラメータや劣化度の管理のためのページテーブル144のサイズの肥大化を抑えることができる。
また、本実施例では、チップコントローラ121は、FMPKコントローラ181からリードコマンドを受信した場合に行うリード処理と非同期の最適リードパラメータ探索処理を各ページ167について行うようになっている。最適リードパラメータ探索処理は、複数のリードパラメータのうちの少なくとも1つのリードパラメータでデータをページ167からリードすることで当該複数のリードパラメータから最適リードパラメータを当該ページ167について決定する処理である。チップコントローラ121は、FMPKコントローラ181からリードコマンドを受信した場合に行うリード処理において、リード元のページ167から、最適リードパラメータ探索処理において決定された最適リードパラメータを用いてデータをリードするようになっている。これにより、下記が期待できる。
・リード処理においてリードリトライが発生する回数の軽減が期待でき、以って、FMPKコントローラ181のリード性能の向上が期待できる。
・最適リードパラメータ探索処理は、FMチップ175内で閉じた処理である。最適リードパラメータを見つけるために、リードパラメータの切り替え及び切り替え後のリードパラメータを用いたリードが多発しても、FMPKコントローラ181に負荷がかからない。このため、多くのリードパラメータを用意しておき、その多くのリードパラメータの中から最適なリードパラメータを決定するようにしても、FMPKコントローラ181の性能低下を避けることができる。また、そのようにすることで、より相応しいリードパラメータがリード処理において使用されることが期待される。
・リード処理においてリードリトライが発生する回数の軽減が期待でき、以って、FMPKコントローラ181のリード性能の向上が期待できる。
・最適リードパラメータ探索処理は、FMチップ175内で閉じた処理である。最適リードパラメータを見つけるために、リードパラメータの切り替え及び切り替え後のリードパラメータを用いたリードが多発しても、FMPKコントローラ181に負荷がかからない。このため、多くのリードパラメータを用意しておき、その多くのリードパラメータの中から最適なリードパラメータを決定するようにしても、FMPKコントローラ181の性能低下を避けることができる。また、そのようにすることで、より相応しいリードパラメータがリード処理において使用されることが期待される。
最適リードパラメータは、リードされたデータ中のエラービット数が相対的に少ないリードパラメータである。このため、時間の経過に伴いページが劣化しても、訂正可能なエラービット数に維持される可能性が高く、故に、リードリトライの発生頻度を軽減することが期待できる。このようなことが最も期待できる最適リードパラメータは、複数のリードパラメータにそれぞれ対応したエラービット数のうちの最少のエラービット数に対応したリードパラメータである。
なお、このような最適リードパラメータ探索処理は、一比較例においてFMPKコントローラが行うようなリードリトライ(リードパラメータの切り替え)とは異なる。なぜなら、リードリトライは、エラー訂正(リード)に失敗した場合に行われるものだからである。言い換えれば、エラー訂正に成功した場合には、リードリトライを行う必要が無い。エラー訂正に成功したにも関わらずにリードリトライを行うと、リードリトライ回数が増え、結果として、FMPKコントローラのリード性能が低下するからである。また、一比較例では、FMPKコントローラのリード性能の低下を軽減するための方法として、リードリトライ回数の上限値を小さい値とすることが考えられる。しかし、そうすると、選択可能なリードパラメータの数が少なくなり、結果として、適切なリードパラメータが見つからずリード失敗(リードリトライの回数がその上限値に達してもエラー訂正に成功しない)が発生する確率が高くなってしまうことが懸念される。本実施例によれば、リード処理において使用される最適リードパラメータが、リード処理とは非同期の最適リードパラメータ探索処理において予め決定される。多くのリードパラメータから最適リードパラメータを決定しておけるのでリード失敗が発生する確率を軽減できる。
また、上述のような、リードされたデータ中のエラービット数を基に最適リードパラメータを決定する最適リードパラメータ探索処理は、少なくとも1つのFMチップ175のチップコントローラ121に代わって、FMPKコントローラ181が行ってもよい。FMPKコントローラ181のリード性能は低下し得るが、ページ167の実際の状態(エラービット数)に基づく最適リードパラメータが見つかるので、全体として、リードリトライ回数が減り、結果として、リード性能の低下の軽減が期待できる。
また、一比較例では、FMPKコントローラが、各ページ167からデータをリードすることで各ページ167におけるエラービット数を基に劣化度を推定することが考えられる。しかし、そうすると、FMPKコントローラのリード性能が低下する。そこで、本実施例では、上述したように、各FMチップ175のチップコントローラ121が、ページ167からリードされたデータ中のエラービット数を基に当該ページ167の劣化度を推定することを行う処理である劣化度推定処理を各ページ167について行う。つまり、劣化度推定処理は、FMチップ175で閉じている。このため、FMPKコントローラ181のリード性能の低下を避けつつ、ページ167の劣化度を正確に推定することが期待できる。
なお、チップコントローラ121が、FMチップ175内の複数のページ167の推定された劣化度を当該FMチップ175内で平準化するウェアレベリング処理を行ってもよい。本実施例では、それに代えて又は加えて、チップコントローラ121が、各ページ167の推定された劣化度を、FMPKコントローラ181に報告し、FMPKコントローラ181が、複数のFMチップ175について報告された複数の劣化度を複数のFMチップ175間で平準化するウェアレベリング処理を行う。報告された劣化度は、正確性の高い推定劣化度なので、FMPKコントローラ181によるウェアレベリング処理の精度の向上が期待できる。
また、劣化度推定処理において、各ページ167について、リードされたデータ中のエラービット数は、当該ページ167に対応した最適リードパラメータでリードされたデータ中のエラービット数である。このように、いずれのページ167についても同条件(すなわち、当該ページ167にとっての最適リードパラメータ)でのリードの結果に基づき劣化度が推定されるので、推定された劣化度の正確性の一層の向上が期待できる。
以下、本実施例を詳細に説明する。なお、FMPK112に搭載されるFMチップ175の数は1でもよいが、本実施例では、複数のFMチップ175が搭載されている。
FMPKコントローラ181は、FE−I/F(フロントエンドインターフェースデバイス)191と、BE−I/F(バックエンドインターフェイスデバイス)192と、メモリ193と、それらに接続されたMP(マイクロプロセッサ)194とを有する。FE−I/F191及びBE−I/F192は、インターフェース部の一例である。メモリ193は、メモリ部の一例である。MP194は、プロセッサ部の一例である。
FE−I/F191は、上位デバイス111と通信する。
BE−I/F192は、FM部174と通信する。具体的には、BE−I/F192は、1又は複数本のバス172によって複数のFMチップ175と接続する。各バス172には、2以上のFMチップ175が接続される。BE−I/F192は、FMチップ175に接続されるCE(Chip Enable)信号線を用い、同一バス172に接続された2以上のFMチップ175を制御できる。
メモリ193は、MP194が実行するプログラム(例えばFMPK制御プログラム125)や、MP194が使用する情報(例えば管理情報126)を記憶する。FMPK制御プログラム125は、上位デバイス111からのコマンド(例えばI/Oコマンド)を処理する。管理情報126は、FMPK112に関する情報、例えば、論理アドレス(例えばLBA(Logical Block Address))と物理アドレス(例えばPBA(Physical Block Address))との対応関係を示すアドレス変換テーブルを含む。すなわち、本実施例では、FMPKコントローラ181が、上位デバイス111からのI/O要求で指定されている論理アドレスを、アドレス変換テーブルを基に物理アドレスに変換し、物理アドレスを指定したI/Oコマンド(ライトコマンド又はリードコマンド)を、当該物理アドレスに属するFMチップ175に送信する。それに代えて、FMチップ175が、論理アドレスが指定されたI/OコマンドをFMPKコントローラ181から受信し、当該FMチップ175(チップコントローラ121)が、当該論理アドレスを物理アドレスに変換し、当該物理アドレスが属するページ167に対してデータのI/Oを行ってもよい。
MP194は、メモリ193内のFMPK制御プログラム125等のプログラムを実行する。
各FMチップ175は、複数(又は1)のダイ165と、複数のダイ165に接続されたチップコントローラ121とを有する。
ダイ165は、制御単位の一例である。各ダイ165は、例えば、レジスタと、複数のブロック166とを有する。ブロック166は、データの消去単位である。各ブロック166は、複数のページ167を有する。ページ167は、データのI/O単位である。
チップコントローラ121は、FE−I/F131と、BE−I/F132と、RAM(Random Access Memory)133と、NVM134と、ECC回路135と、温度センサ136と、それらに接続されたMP137とを有する。FE−I/F131及びBE−I/F132は、インターフェース部の一例である。RAM133及びNVM134は、メモリ部の一例である。ECC回路135及びMP194は、プロセッサ部の一例である。
FE−I/F131は、FMPKコントローラ181(FMチップ175にとっての上位デバイスの一例)と通信する。BE−I/F132は、複数のダイ165と通信する。
RAM133は、具体的には、DRAM(Dynamic Random Access Memory)などの揮発性メモリが挙げられる。RAM133は、例えば、データバッファやワーク領域としての領域を含む。
NVM134は、MP137に実行されるプログラムやMP137に使用される管理情報を格納する。例えば、プログラムは、チップ制御プログラム141である。チップ制御プログラム141は、例えば、最適リードパラメータ探索処理のような処理を行う。管理情報は、例えば、リードパラメータテーブル142、訂正テーブル143及びページテーブル144といったテーブルを含む。
ECC回路135は、データのライト処理において、データに対してECC(Error Correction Code)を生成する。生成されたECCがデータに付与されたECCCW(ECC Code Word)がページ167に対して読み書きされる。ECC回路135は、データのリード処理において、ECCCW中のECCによって当該ECCCW中のデータを検査し、データ損失(エラービット)が検出された際には、データ訂正を行う。
温度センサ136は、FMチップ175の温度を測定する。温度センサ136は、FMチップ単位で設けられるが、ダイ単位といったより小さい単位で設けられてもよい。
MP137は、チップ制御プログラム141といったプログラムを実行することで、最適リードパラメータ探索処理のような処理を行う。MP137は、処理の一部で、ECC回路135を使用する。
図2は、リードパラメータテーブル142の構成を示す。
リードパラメータテーブル142は、選択可能な複数のリードパラメータと、その複数のリードパラメータの各々の優先度とを示す。
なお、本実施例では、リードパラメータテーブル142は、各FMチップ175において、全ページ167で共通であるが、FMチップ175よりも小さい単位(例えば、ダイやブロック)で用意されてもよい。
図3は、訂正テーブル143の構成を示す。
訂正テーブル143は、リードパラメータ毎に、チップ温度と、ライト経過時間(データがライトされた時刻から経過した時間)と、劣化度100%(基準劣化度の一例)に対応したエラービット数との関係を示す。
図4は、ページテーブル144の構成を示す。
ページテーブル144は、ページ167毎に推定された劣化度を示す。具体的には、例えば、ページテーブル144は、ページ167毎にレコードを有する。各レコードが、ダイ番号401、ブロック番号402、ページ番号403、ライト時刻404、最適リードパラメータ405、チップ温度406、エラービット数407及び劣化度408といった情報を格納する。以下、図4の説明において、1つのページ167を例に取る(図4の説明において「対象ページ167」)。
ダイ番号401は、対象ページ167を含むダイ165の番号を示す。ブロック番号402は、対象ページ167を含むブロック166の番号を示す。ページ番号403は、対象ページ167の番号を示す。ダイ番号401、ブロック番号402及びページ番号403から対象ページ167を特定することができる。
ライト時刻404は、対象ページ167のライト時刻、具体的には、対象ページ167(又は、対象ページ167を含むブロック166或いはダイ165の所定のページ(例えば先頭のページ)167)にデータが書き込まれた時刻を示す。
最適リードパラメータ405は、最適リードパラメータ探索処理において対象ページ167について決定された最適リードパラメータを示す。
チップ温度406は、対象ページ167の最適リードパラメータを用いたリードを含むリード処理において計測された温度を示す。
エラービット数407は、対象ページ167の最適リードパラメータを用いてリードされたECCCW中のデータにおけるエラービット数(例えば、合計値又は平均値)を示す。
劣化度408は、対象ページ167について推定された劣化度を示す。
対象ページ167の劣化度は、下記の(B)に対する下記の(A)の割合、
(A)対象ページ167に対応したエラービット数407、
(B)対象ページ167に対応したチップ温度406及びライト経過時間(ライト時刻404からの経過時間)に対応した基準エラービット数、
である。
(A)対象ページ167に対応したエラービット数407、
(B)対象ページ167に対応したチップ温度406及びライト経過時間(ライト時刻404からの経過時間)に対応した基準エラービット数、
である。
具体的には、例えば、チップ制御プログラム141は、劣化度推定処理において、下記(E1)〜(E7)を行う。チップ温度及びライト経過時間はエラービット数に影響するため、劣化度を正確に推定することが期待される。
(E1)チップ制御プログラム141は、対象ページ167に対応した最適リードパラメータ405を特定し、特定した最適リードパラメータ405に対応した寿命曲線450を、訂正テーブル143を基に取得する。寿命曲線450は、最適リードパラメータ405に対応した定義チップ温度(訂正テーブル143において定義されているチップ温度)毎の曲線であって、ライト経過時間と基準エラービット数との関係を示す曲線(図4では便宜上直線)である。
(E2)チップ制御プログラム141は、対象ページ167のライト経過時間(ライト時刻404“j”からの経過時間)“T”を特定する。
(E3)チップ制御プログラム141は、対象ページ167に対応したエラービット数407“n1”を特定する。
(E4)チップ制御プログラム141は、対象ページ167に対応したチップ温度406“k”を特定し、特定したチップ温度406“k”に最も近い定義チップ温度“X1”を特定する。
(E5)チップ制御プログラム141は、特定した定義チップ温度“X1”に対応した曲線を用いて、対象ページ167のライト経過時間“T”に対応した基準エラービット数“n2”を特定する。
(E6)チップ制御プログラム141は、エラービット数407“n1”(上記(A)の一例)÷基準エラービット数“n2”(上記(B)の一例)×100=劣化度“H”(%)を算出する。
(E7)チップ制御プログラム141は、算出した劣化度“H”を、劣化度408としてページテーブル144に記録する。
(E1)チップ制御プログラム141は、対象ページ167に対応した最適リードパラメータ405を特定し、特定した最適リードパラメータ405に対応した寿命曲線450を、訂正テーブル143を基に取得する。寿命曲線450は、最適リードパラメータ405に対応した定義チップ温度(訂正テーブル143において定義されているチップ温度)毎の曲線であって、ライト経過時間と基準エラービット数との関係を示す曲線(図4では便宜上直線)である。
(E2)チップ制御プログラム141は、対象ページ167のライト経過時間(ライト時刻404“j”からの経過時間)“T”を特定する。
(E3)チップ制御プログラム141は、対象ページ167に対応したエラービット数407“n1”を特定する。
(E4)チップ制御プログラム141は、対象ページ167に対応したチップ温度406“k”を特定し、特定したチップ温度406“k”に最も近い定義チップ温度“X1”を特定する。
(E5)チップ制御プログラム141は、特定した定義チップ温度“X1”に対応した曲線を用いて、対象ページ167のライト経過時間“T”に対応した基準エラービット数“n2”を特定する。
(E6)チップ制御プログラム141は、エラービット数407“n1”(上記(A)の一例)÷基準エラービット数“n2”(上記(B)の一例)×100=劣化度“H”(%)を算出する。
(E7)チップ制御プログラム141は、算出した劣化度“H”を、劣化度408としてページテーブル144に記録する。
以下、本実施例で行われる処理の一例を説明する。なお、以下の説明では、1つのFMチップ175を例に取る(図5〜図9の説明で「対象FMチップ175」)。
図5は、最適リードパラメータ探索処理の流れを示す。最適リードパラメータ探索処理は、各ページ167について行われる。以下、1つのページ167を例に取る(図5の説明で「対象ページ167」)。最適リードパラメータ探索処理は、例えば、定期的に開始する。
チップ制御プログラム141は、対象ページ167が最適リードパラメータの決定へと進むための所定の条件に合致しているか否かを判断する(S501)。「所定の条件」としては、例えば、前回の最適リードパラメータ探索処理から一定時間以上が経過した(例えば、前回の最適リードパラメータ探索処理が行われた時刻がページテーブル144に格納されていてその時刻からの経過時間が一定時間以上になっている)、又は、対象FMチップ175における対象ページ167についてのリード処理でのリードリトライ回数が所定値を超えた、といった条件を採用可能である。
S501の判断結果が真の場合(S501:Y)、チップ制御プログラム141は、リードパラメータテーブル142が表す複数のリードパラメータのうち最高優先度のリードパラメータを用いて対象ページ167からデータ(ECCCW)をリードする(S502)。
チップ制御プログラム141は、対象ページ167に対応した最適リードパラメータ405を、最高優先度のリードパラメータ(S502で使用したリードパラメータ)とする(S503)。また、チップ制御プログラム141は、S502でリードされたデータ中のエラービット数を、エラービット数407として記録する(S504)。
次に、リードパラメータテーブル142が表す残りの全リードパラメータについて、S505〜S508が行われる。すなわち、チップ制御プログラム141は、次の優先度のリードパラメータ(今回の最適リードパラメータ探索処理において直前に選択したリードパラメータの優先度の次の優先度のリードパラメータ)を選択し、選択したリードパラメータを用いて対象ページ167からデータをリードする(S505)。チップ制御プログラム141は、S505でリードされたデータ中のエラービット数が、対象ページ167に対応したエラービット数よりも少ないか否かを判断する(S506)。S506の判断結果が真の場合(S506:Y)、チップ制御プログラム141は、S505で選択されたリードパラメータを最適リードパラメータ405として記録し(S507)、且つ、S505でリードされたデータ中のエラービット数をエラービット数407として記録する(S508)。S506の判断結果が偽の場合(S506:N)、チップ制御プログラム141は、S507及びS508をスキップする。
上述の残りの全リードパラメータについてS505〜S508が行われた後、チップ制御プログラム141は、対象ページ167に対応したエラービット数407が訂正限界(ECCCW中のECCで訂正可能なエラービット数の最大値)を超えているか否かを判断する(S509)。
S509の判断結果が偽の場合(S509:N)、対象ページ167についての最適リードパラメータ探索処理が終了する。結果として、対象ページ167の最適リードパラメータは、リードパラメータテーブル142が表す複数のリードパラメータについてそれぞれ得られたエラービット数のうち最少のエラービット数のリードパラメータが、最適リードパラメータ405として記録されていることになる。
S509の判断結果が真の場合(S509:Y)、チップ制御プログラム141は、対象ページ167がアンコレクタブルエラーのページであることを記録する(例えばエラービット数407の値を無効値とする)(S510)。
なお、最適リードパラメータ探索処理において、リードパラメータの選択順は、優先度の高い順に限らないでよい。例えば、リードパラメータの選択順は、更新前の最適リードパラメータ405に対応した優先度から近い優先度順であってもよい。
図6は、リード処理の流れを示す。リード処理は、リード元のページ167について行われる。以下、1つのページ167を例に取る(図6の説明で「対象ページ167」)。対象ページ167について、リード処理は、対象ページ167が属する物理アドレスを指定したリードコマンドをFMPKコントローラ181から受信した場合に開始される。
チップ制御プログラム141は、対象ページ167がアンコレクタブルエラーのページであるか否かを、例えば対象ページ167に対応したエラービット数407を基に、判断する(S601)。S601の判断結果が真の場合(S601:Y)、チップ制御プログラム141は、リード失敗をFMPKコントローラ181に返す(S606)。
S601の判断結果が偽の場合(S601:N)、チップ制御プログラム141は、対象ページ167に対応した最適リードパラメータ405を用いて対象ページ167からデータをリードする(S602)。チップ制御プログラム141は、S602のリードがリードエラーか否か(S602でリードしたデータを訂正可能か否か)を判断する(S603)。S603の判断結果が偽の場合(S603:N)、つまり、S602でリードしたデータ中の全エラービットを訂正できた場合、チップ制御プログラム141は、訂正されたデータをFMPKコントローラ181に返す(S607)。
S603の判断結果が真の場合(S603:Y)、リードパラメータテーブル142が表す残りの全リードパラメータ(又は、リードリトライ回数の上限と同数のリードパラメータ)について、S604及びS605が行われる。すなわち、チップ制御プログラム141は、次の優先度のリードパラメータ(今回のリード処理において直前に選択したリードパラメータの優先度の次の優先度のリードパラメータ)を選択し、選択したリードパラメータを用いて対象ページ167からデータをリードする(S604)。チップ制御プログラム141は、S604のリードがリードエラーか否かを判断する(S605)。S605の判断結果が偽の場合(S605:N)、チップ制御プログラム141は、訂正されたデータをFMPKコントローラ181に返す(S607)。
いずれのリードパラメータを用いたリードについてもリードエラーが発生した場合(S605:Y)、チップ制御プログラム141は、リード失敗をFMPKコントローラ181に返す(S606)。
図7は、劣化度推定処理の流れを示す。劣化度推定処理は、各ページ167について行われる。以下、1つのページ167を例に取る(図7の説明で「対象ページ167」)。劣化度推定処理は、例えば、定期的に開始する。
チップ制御プログラム141は、対象ページ167がアンコレクタブルエラーのページであるか否かを判断する(S701)。S701の判断結果が真の場合(S701:Y)、対象ページ167についての劣化度推定処理は終了する。
S701の判断結果が偽の場合(S701:N)、チップ制御プログラム141は、対象ページ167に対応したチップ温度406を取得する(S702)。チップ制御プログラム141は、対象ページ167に対応した定義チップ温度(S702で取得したチップ温度406に最も近い温度)、対象ページ167に対応したライト経過時間(ライト時刻404からの経過時間)、及び、対象ページ167に対応したエラービット数407を基に、対象ページ167の劣化度を推定し、推定した劣化度を劣化度408として記録する(S703)。具体的には、上述した(E1)〜(E7)が行われる。
図8は、報告処理の流れを示す。
報告処理とは、対象FMチップ175において管理されている各ページ167の劣化度408を含んだ情報をFMPKコントローラ181に報告する処理である。報告処理は、報告コマンドを受信した場合に開始される。報告コマンドとして、例えば、ONFI(Open NAND Flash Interface)の仕様において“Reserved”となっているコマンドを使用できる。報告コマンドは、FMPKコントローラ181から送信される。
チップ制御プログラム141は、報告コマンドを受信した場合、ページテーブル144から各ページ167の劣化度408を収集する(S801)。チップ制御プログラム141は、収集した劣化度408を含んだ報告を、FMPKコントローラ181に送信する(S802)。
FMPKコントローラ181は、複数のFMチップ175にそれぞれ対応した複数の報告を基に、FMチップ175間で劣化度を平準化するウェアレベリング処理を行う。
図9は、設定処理の流れを示す。
設定処理とは、対象FMチップ175におけるプログラム(例えばチップ制御プログラム141)及び管理情報(例えばテーブル142〜144)の少なくとも一部を設定する(例えば更新する)処理である。設定処理は、設定コマンドを受信した場合に開始される。設定コマンドも、報告コマンドと同様に、例えば、ONFI(Open NAND Flash Interface)の仕様において“Reserved”となっているコマンドを使用できる。設定コマンドは、FMPKコントローラ181から送信される。
チップ制御プログラム141は、設定コマンドを受信した場合、設定先を特定する(S901)。設定コマンドでは、例えば、NVM134における領域のアドレス範囲(例えば先頭アドレス及びデータ長)が指定されていて、当該領域が設定先である。チップ制御プログラム141は、S901で特定した設定先に、設定コマンドに従う設定対象(プログラム(例えばチップ制御プログラム141)及び管理情報(例えばテーブル142〜144)の少なくとも一部)を設定する(S902)。
設定処理によれば、最適リードパラメータ探索処理や劣化度推定処理のための論理(プログラム141)や、その論理で使用されるテーブルを外部から書き換え可能なため、機能のカスタマイズや修正が可能となる。
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
実施例1では、最適リードパラメータ探索処理において、全てのリードパラメータについてリードが行われるが、実施例2では、一部のリードパラメータ(最小として1つのリードパラメータ)についてのリードで済ますことが期待できる。
図10は、実施例2に係る最適リードパラメータ探索処理の流れの一部を示す。1つのページ167を例に取る(図10の説明で「対象ページ167」)。
チップ制御プログラム141は、S505でリードされたデータ中のエラービット数がN以下か否かを判断する(S1001)。Nは、0以上、且つ、訂正限界(ECCCW中のECCで訂正可能なエラービット数の最大値)より小さい値(典型的には整数)である。S1001の判断結果が偽の場合(S1001:N)、S506が行われる。
S1001の判断結果が真の場合(S1001:Y)、チップ制御プログラム141は、S505で選択されたリードパラメータを最適リードパラメータ405として記録し(S1002)、S505でリードされたデータ中のエラービット数をエラービット数407として記録し(S1003)、対象ページ167についての最適リードパラメータ探索処理を終了する。
以上、本発明の幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、本発明は、FMチップ175以外のNVMのチップ、具体的には、例えば、PRAM(Phase-change Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、ReRAM(Resistive Random Access Memory)又はFeRAM(Ferroelectric Random Access Memory)のチップについても適用可能である。
175…FMチップ
Claims (14)
- 1以上のNVM(不揮発性メモリ)チップと、
前記1以上のNVMチップと通信するNVMコントローラと
を有し、
前記1以上のNVMチップの各々が、
複数の記憶領域と、
前記複数の記憶領域の各々について、当該記憶領域に対するリードの結果を基に、下記の(x)及び(y)のうちの少なくとも1つを行うチップコントローラと
(x)当該記憶領域についてのリードパラメータの決定及び当該リードパラメータを用いたリード、及び、
(y)当該記憶領域の劣化度の推定、
を有する、
不揮発性メモリデバイス。 - 前記1以上のNVMチップの各々において、当該NVMチップ内の前記チップコントローラは、前記NVMコントローラからリードコマンドを受信した場合に行うリード処理と非同期の最適リードパラメータ探索処理を当該NVMチップ内の前記複数の記憶領域の各々について行い、
前記1以上のNVMチップの各々について、前記最適リードパラメータ探索処理は、当該NVMチップ内の前記複数の記憶領域の各々について、複数のリードパラメータのうちの少なくとも1つのリードパラメータでデータをリードすることで前記複数のリードパラメータから最適リードパラメータを決定する処理であり、
前記リードパラメータの決定は、前記最適リードパラメータの決定であり、
前記NVMコントローラからリードコマンドを受信したNVMチップ内のチップコントローラは、当該リードコマンドに応答して行うリード処理において、当該NVMチップ内の複数の記憶領域のうちのリード元の記憶領域から、当該チップコントローラによる前記最適リードパラメータ探索処理において決定された最適リードパラメータを用いてデータをリードする、
請求項1に記載の不揮発性メモリデバイス。 - 前記最適リードパラメータは、リードされたデータ中のエラービット数が相対的に少ないリードパラメータである、
請求項2に記載の不揮発性メモリデバイス。 - 前記最適リードパラメータは、前記複数のリードパラメータにそれぞれ対応したエラービット数のうちの最少のエラービット数に対応したリードパラメータである、
請求項3に記載の不揮発性メモリデバイス。 - 前記最適リードパラメータ探索処理において、前記チップコントローラは、リードされたデータのエラービット数が所定値以下の場合、当該リードで使用したリードパラメータを、当該データのリード元の記憶領域についての最適リードパラメータとし、
前記所定値は、0以上、且つ、訂正可能なエラービット数の最大値未満である、
請求項2に記載の不揮発性メモリデバイス。 - 前記1以上のNVMチップの各々において、当該NVMチップ内の前記チップコントローラは、当該NVMチップ内の前記複数の記憶領域の各々について劣化度推定処理を行い、
前記1以上のNVMチップの各々について、前記劣化度推定処理は、記憶領域について前記最適リードパラメータ探索処理において決定された最適リードパラメータで当該記憶領域からリードされたデータ中のエラービット数を基に、当該記憶領域の劣化度を推定する処理である、
請求項2に記載の不揮発性メモリデバイス。 - 前記1以上のNVMチップの各々において、当該NVM内の前記チップコントローラは、当該NVMチップ内の前記複数の記憶領域の各々についての推定された劣化度を、前記NVMコントローラに報告し、
前記NVMコントローラが、前記1以上のNVMチップについて報告された複数の劣化度を平準化するウェアレベリング処理を行う、
請求項6に記載の不揮発性メモリデバイス。 - 前記1以上のNVMチップの各々において、当該NVMチップ内の各記憶領域の劣化度は、下記の(B)に対する下記の(A)の割合であり、
(A)当該記憶領域の最適リードパラメータでリードされたデータ中のエラービット数、
(B)当該記憶領域の最適リードパラメータでリードされたときのチップ温度及びライト経過時間に対応した基準エラービット数、
前記基準エラービット数は、劣化度が基準劣化度のときのエラービット数として定義された値であり、
各記憶領域について、前記ライト経過時間は、当該記憶領域についてデータがライトされた時刻からの経過時間である、
請求項6に記載の不揮発性メモリデバイス。 - 前記1以上のNVMチップの各々において、当該NVMチップ内の前記チップコントローラは、当該NVMチップ内の前記複数の記憶領域の各々について劣化度推定処理を行い、
前記1以上のNVMチップの各々について、前記劣化度推定処理は、記憶領域からリードされたデータ中のエラービット数を基に、当該記憶領域の劣化度を推定する処理である、
請求項1に記載の不揮発性メモリデバイス。 - 前記1以上のNVMチップの各々において、当該NVMチップ内の各記憶領域の劣化度は、下記の(B)に対する下記の(A)の割合であり、
(A)当該記憶領域からリードされたデータ中のエラービット数、
(B)当該記憶領域からリードされたときのチップ温度及びライト経過時間に対応した基準エラービット数、
前記基準エラービット数は、劣化度が基準劣化度のときのエラービット数として定義された値であり、
各記憶領域について、前記ライト経過時間は、当該記憶領域についてデータがライトされた時刻からの経過時間である、
請求項9に記載の不揮発性メモリデバイス。 - 前記1以上のNVMチップの各々において、当該NVM内の前記チップコントローラは、当該NVMチップ内の前記複数の記憶領域の各々についての推定された劣化度を、前記NVMコントローラに報告し、
前記NVMコントローラが、前記1以上のNVMチップについて報告された複数の劣化度を平準化するウェアレベリング処理を行う、
請求項9に記載の不揮発性メモリデバイス。 - 前記1以上のNVMチップの各々のチップコントローラが、書き換え可能な不揮発記憶領域を有し、
前記NVMコントローラが、前記1以上のNVMチップの各々のチップコントローラにおける前記不揮発記憶領域に対して、当該チップコントローラの処理において参照される情報を設定する、
請求項1に記載の不揮発性メモリデバイス。 - 前記1以上のNVMチップは、複数のFM(フラッシュメモリ)チップであり、
前記複数のFMチップの各々について、前記複数の記憶領域の各々は、I/O単位であるページ、消去単位であるブロック、又は、制御単位であるダイである、
請求項1に記載の不揮発性メモリデバイス。 - 不揮発性メモリデバイスと、
前記不揮発性メモリデバイスと通信する上位デバイスと
を有し、
前記不揮発性メモリデバイスが、
1以上のNVM(不揮発性メモリ)チップと、
前記1以上のNVMチップと通信するNVMコントローラと
を有し、
前記1以上のNVMチップの各々が、
複数の記憶領域と、
前記複数の記憶領域の各々について、当該記憶領域に対するリードの結果を基に、下記の(x)及び(y)のうちの少なくとも1つを行うチップコントローラと
(x)当該記憶領域についてのリードパラメータの決定及び当該リードパラメータを用いたリード、及び、
(y)当該記憶領域の劣化度の推定、
を有する、
ストレージシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017231284A JP2019101708A (ja) | 2017-11-30 | 2017-11-30 | 不揮発性メモリデバイス |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017231284A JP2019101708A (ja) | 2017-11-30 | 2017-11-30 | 不揮発性メモリデバイス |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019101708A true JP2019101708A (ja) | 2019-06-24 |
Family
ID=66973739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017231284A Pending JP2019101708A (ja) | 2017-11-30 | 2017-11-30 | 不揮発性メモリデバイス |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2019101708A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220047504A (ko) * | 2020-10-09 | 2022-04-18 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 판독 임계치 관리 및 교정 |
-
2017
- 2017-11-30 JP JP2017231284A patent/JP2019101708A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220047504A (ko) * | 2020-10-09 | 2022-04-18 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 판독 임계치 관리 및 교정 |
JP2022063210A (ja) * | 2020-10-09 | 2022-04-21 | ウェスタン デジタル テクノロジーズ インコーポレーテッド | 読み出し閾値管理及び較正 |
JP7079878B2 (ja) | 2020-10-09 | 2022-06-02 | ウェスタン デジタル テクノロジーズ インコーポレーテッド | 読み出し閾値管理及び較正 |
KR102566658B1 (ko) | 2020-10-09 | 2023-08-11 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | 판독 임계치 관리 및 교정 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9864525B2 (en) | Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning | |
US9891844B2 (en) | Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices | |
US9916087B2 (en) | Method and system for throttling bandwidth based on temperature | |
US9811462B2 (en) | Memory system executing garbage collection | |
CN107710140B (zh) | 存储系统 | |
US9298534B2 (en) | Memory system and constructing method of logical block | |
CN113015965B (zh) | 基于小计写入计数器执行混合损耗均衡操作 | |
US10250281B2 (en) | ECC decoder having adjustable parameters | |
US9946483B2 (en) | Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning | |
US9933975B1 (en) | Data transmission method, memory storage device and memory control circuit unit | |
US9898201B2 (en) | Non-volatile memory device, and storage apparatus to reduce a read retry occurrence frequency and prevent read performance from lowering | |
JP5720210B2 (ja) | アクセス制御装置、誤り訂正制御方法およびストレージ装置 | |
US20210096770A1 (en) | Memory system, memory system control method, and information processing system | |
US10586601B2 (en) | Semiconductor memory device and read control method thereof | |
KR20170062254A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
JP2019049949A (ja) | ストレージデバイス | |
CN111722794A (zh) | 存储系统 | |
US20140344641A1 (en) | Memory system and cache management method of the same | |
US20180217892A1 (en) | System and method for implementing super word line zones in a memory device | |
US20190324672A1 (en) | Apparatuses and methods for counter update operations | |
TWI648739B (zh) | 記憶體管理方法與儲存控制器 | |
JP5858081B2 (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 | |
US20210089234A1 (en) | Memory system | |
JP2019101708A (ja) | 不揮発性メモリデバイス | |
CN112181274B (zh) | 提升存储设备性能稳定性的大块的组织方法及其存储设备 |