(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022123696
(43)【公開日】2022-08-24
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
G06F 12/02 20060101AFI20220817BHJP
G06F 12/00 20060101ALI20220817BHJP
【FI】
G06F12/02 570G
G06F12/00 597U
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2021021179
(22)【出願日】2021-02-12
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002907
【氏名又は名称】特許業務法人イトーシン国際特許事務所
(72)【発明者】
【氏名】井川原 俊一
(72)【発明者】
【氏名】小島 慶久
(72)【発明者】
【氏名】天木 健彦
(72)【発明者】
【氏名】西川 卓
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA08
5B160AA12
5B160AB26
(57)【要約】
【課題】アクセスパターンに応じて寿命の最適化が可能なメモリシステムを提供する。
【解決手段】実施形態のメモリシステムは、不揮発性メモリと、メモリコントローラと、を有する。メモリコントローラは、ホストからデータの書き込み要求を受信し、データのサイズに応じて、データに関連付けられた論理アドレスと、データが書き込まれる不揮発性メモリの物理アドレスとの変換である論物アドレス変換の単位を設定する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
ホストからデータの書き込み要求を受信し、前記データのサイズに応じて、前記データに関連付けられた論理アドレスと、前記データが書き込まれる前記不揮発性メモリの物理アドレスとの変換である論物アドレス変換の単位を設定するメモリコントローラと、
を有する、メモリシステム。
【請求項2】
前記メモリコントローラは、前記サイズに一致するように、前記論物アドレス変換の前記単位を設定する、
請求項1に記載のメモリシステム。
【請求項3】
前記メモリコントローラは、第1の期間内に受信した複数の前記書き込み要求で指定される前記データのサイズのうち、最も小さいサイズに一致するように、前記論物アドレス変換の前記単位を設定する、
請求項1に記載のメモリシステム。
【請求項4】
前記メモリコントローラは、前記論物アドレス変換の前記単位を第1の単位から前記第1の単位よりも大きい第2の単位に変更する場合、前記第2の単位に合わせて前記論物アドレス変換のための論物アドレス変換テーブルを書き換えると共に、前記不揮発性メモリに記憶されているデータを読み出し、前記読み出したデータに関連付けられた論理アドレスが、前記第2の単位で前記不揮発性メモリの物理アドレスへ変換されるように、前記読み出したデータを前記不揮発性メモリへ書き込む、
請求項1に記載のメモリシステム。
【請求項5】
メモリセルを含む不揮発性メモリと、
ホストからデータの書き込み要求を受信し、前記書き込み要求で指定される前記データの論理アドレスの範囲、または、前記データの書き換え頻度に応じて、前記データが書き込まれる前記メモリセルの多値度を設定するメモリコントローラと、
を有する、メモリシステム。
【請求項6】
前記メモリコントローラは、前記論理アドレスの範囲が第1の範囲である場合に前記多値度として第1の値を設定し、前記論理アドレスの範囲が前記第1の範囲より広い第2の範囲である場合に前記多値度として前記第1の値よりも大きい第2の値を設定する、
請求項5に記載のメモリシステム。
【請求項7】
前記メモリコントローラは、前記書き換え頻度が第1の頻度である場合に前記多値度として第1の値を設定し、前記書き換え頻度が前記第1の頻度より高い第2の範囲である場合に前記多値度として前記第1の値よりも大きい第2の値を設定する、
請求項5に記載のメモリシステム。
【請求項8】
不揮発性メモリと、
揮発性のデータバッファと、
前記データバッファに格納されたデータを前記不揮発性メモリに書き込むフラッシュ要求をホストから受信したときに、前記データの量に応じて前記フラッシュ要求に関わるフラッシュ処理を実行するか否かを決定する、メモリコントローラと、
を有する、メモリシステム。
【請求項9】
前記メモリコントローラは、前記フラッシュ要求を受信したときの前記データの量が第1の量以下の場合は、前記フラッシュ処理を実行せず、前記フラッシュ要求を受信したときの前記データの量が前記第1の量を超えている場合は、前記フラッシュ処理を実行する、
請求項8に記載のメモリシステム。
【請求項10】
蓄電装置をさらに有し、
前記メモリコントローラは、
前記ホストから第1のコマンドを受信し、前記第1のコマンドで指定された量に基づいて前記第1の量を設定し、または、
前記ホストから第2のコマンドを受信し、前記メモリシステムへの電力の供給がオフされた後に、前記第2のコマンドで指定された電源オン保証時間内に、前記蓄電装置から供給される電力を用いて前記データバッファに格納された前記データを不揮発化することが可能な量、に基づいて前記第1の量を設定する、
請求項9に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムに関する。
【背景技術】
【0002】
不揮発性メモリには、書き込み回数に上限が存在する。そのような不揮発性メモリを搭載したメモリシステムの書き込み寿命は、所定のワークロードに基づき規定される。所定のワークロードは、規格あるいは顧客要求により決定される。
【0003】
しかし、メモリシステムの実使用におけるアクセスパターンが所定のワークロードにおけるアクセスパターンと異なっている場合、メモリシステムの寿命は、規格あるいは顧客要求により規定された寿命よりも短くなる虞がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2011-128792号公報
【特許文献2】特開2019-57193号公報
【特許文献3】特開2014-10604号公報
【特許文献4】特表2010-512569号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
実施形態は、アクセスパターンに応じて寿命の最適化が可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0006】
実施形態のメモリシステムは、不揮発性メモリと、メモリコントローラと、を有する。メモリコントローラは、ホストからデータの書き込み要求を受信し、データのサイズに応じて、データに関連付けられた論理アドレスと、データが書き込まれる不揮発性メモリの物理アドレスとの変換である論物アドレス変換の単位を設定する。
【図面の簡単な説明】
【0007】
【
図1】第1実施形態に係るメモリシステムの構成を説明するためのブロック図である。
【
図2】第1実施形態に係る寿命最適化処理を説明するためのブロック図である。
【
図3】第1実施形態の変形例に係る寿命最適化処理を説明するためのブロック図である。
【
図4】第1実施形態に係る、プロセッサによる書き込み管理単位設定処理の手順の例を示すフローチャートである。
【
図5】第1実施形態に係る、プロセッサによる書き込み管理単位設定処理の手順の例を示すフローチャートである。
【
図6】第1実施形態に係る、書き込み管理単位よりもアクセスサイズが小さい場合のデータの書き込みを説明するための図である。
【
図7】第1実施形態に係る、データの連結処理を示す図である。
【
図8】第2実施形態に係る寿命最適化処理を説明するためのブロック図である。
【
図9】第2実施形態の変形例に係る寿命最適化処理を説明するためのブロック図である。
【
図10】第2実施形態に係る、アクセスレンジと書き込みモードとの対応関係の例を示す図である。
【
図11】第2実施形態に係る、アクセスレンジと書き込みモードとの対応関係の他の例を示す図である。
【
図12】第2実施形態に係る、プロセッサによる書き込みモード設定処理の手順の例を示すフローチャートである。
【
図13】第3実施形態に係る、プロセッサによる書き込みモード設定処理の手順の例を示すフローチャートである。
【
図14】第4実施形態に係る寿命最適化処理を説明するためのブロック図である。
【
図15】第4実施形態に係る、プロセッサによるフラッシュ処理の手順の例を示すフローチャートである。
【
図16】第4実施形態の変形例に係る、プロセッサによるフラッシュ処理の手順の例を示すフローチャートである。
【発明を実施するための形態】
【0008】
以下、図面を参照して実施形態を説明する。
(第1実施形態)
【0009】
第1実施形態に係るメモリシステムについて説明する。以下では、NAND型フラッシュメモリを備えたメモリシステムを例に挙げて説明する。
1.構成
[メモリシステムの全体構成]
【0010】
まず、本実施形態に係るメモリシステムの全体構成について、
図1を用いて説明する。
【0011】
図1は、本実施形態に係るメモリシステムの構成を説明するためのブロック図である。メモリシステム1は、不揮発性メモリ100とメモリコントローラ(以下、単にコントローラともいう)200とを備えたストレージ装置である。ここでは、不揮発性メモリ100は、NAND型フラッシュメモリである。不揮発性メモリ100とコントローラ200とは、例えば1枚の基板上に形成されている。ストレージ装置は、例としてはSDカードのようなメモリカードや、SSD(ソリッドステートドライブ)である。
【0012】
コントローラ200は、例えばSoC(system-on-a-chip)として構成される。コントローラ200の各部の機能は、専用ハードウェア、プログラム(ファームウェア)を実行するプロセッサ、又はこれらの組み合わせにより実現され得る。
【0013】
コントローラ200は、NANDバスによって不揮発性メモリ100と接続される。NANDバスは、NANDインターフェースに従った信号の送受信を行うバスである。そしてコントローラ200は、不揮発性メモリ100を制御する。
【0014】
コントローラ200は、ホストバスによってホスト機器300(点線で示す)と接続される。ホスト機器300は、例えばデジタルカメラやパーソナルコンピュータである。ホストバスは、例えばSDインターフェースに従ったバスである。コントローラ200は、ホスト機器300から受信した要求に応答して、不揮発性メモリ100にアクセスする。
【0015】
不揮発性メモリ100は複数のメモリセルを備えた半導体記憶装置である。複数のメモリセルは、データを不揮発に記憶可能である。各メモリセルは、1ビット又は複数ビットのデータを記憶可能である。以下では、各メモリセルに格納されるビット数を、多値度と称する。ここでは、各メモリセルは、PLC(ペンタレベルセル)、QLC(クアッドレベルセル)、TLC(トリプルレベルセル)、MLC(マルチレベルセル)又はSLC(シングルレベルセル)のいずれかとして使用される。PLCは、1メモリセル当たり5ビットのデータを格納可能である。QLCは、1メモリセル当たり4ビットのデータを格納可能である。TLCは、1メモリセル当たり3ビットのデータを格納可能である。MLCは、1メモリセル当たり2ビットのデータを格納可能である。SLCは、1メモリセル当たり1ビットのデータを格納可能である。後述するように、不揮発性メモリ100は、複数のブロックBLKを含む。例えば、ブロックBLK毎に、PLCモードからSLCモードのいずれかの書き込みモードでデータが書き込まれる。
【0016】
NANDバスは、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、レディ/ビジー信号RBn、及び入出力信号I/Oを含む。チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、及びリードイネーブル信号REnは、コントローラ200から不揮発性メモリ100へ供給される。レディ/ビジー信号RBnは、不揮発性メモリ100からコントローラ200へ供給される。入出力信号I/Oは、コントローラ200と不揮発性メモリ100間で送受信される。
【0017】
チップイネーブル信号CEnは、不揮発性メモリ100をイネーブルにするための信号であり、lowレベルでアサートされる。コマンドラッチイネーブル信号CLE及びアドレスラッチイネーブル信号ALEは、入出力信号I/Oがそれぞれコマンド及びアドレスであることを不揮発性メモリ100に通知する信号である。ライトイネーブル信号WEnは、lowレベルでアサートされ、入出力信号I/Oを不揮発性メモリ100に書き込むことを不揮発性メモリ100に通知する信号である。リードイネーブル信号REnも、lowレベルでアサートされ、不揮発性メモリ100からの読み出しデータを入出力信号I/Oに出力させるための信号である。レディ/ビジー信号RBnは、不揮発性メモリ100がレディ状態(コントローラ200からのコマンドを受信出来る状態)であるか、それともビジー状態(コントローラ200からのコマンドを受信出来ない状態)であるかを示す信号であり、lowレベルがビジー状態を示す。入出力信号I/Oは、例えば8ビットの信号である。そして入出力信号I/Oは、不揮発性メモリ100とコントローラ200との間で送受信されるデータの実体であり、コマンド、アドレス、書き込みデータ、及び読み出しデータ等である。
[コントローラの構成]
【0018】
次に、コントローラ200の構成の詳細について説明する。コントローラ200は、ホストインターフェース(I/F)回路210、ランダムアクセスメモリ(以下、RAMという)220、中央処理装置(CPU)を有するプロセッサ230、バッファメモリ240、NANDインターフェース(I/F)回路250、及びECC(Error Checking and Correcting)回路260を備えた回路である。
【0019】
ホストインターフェース回路210は、ホストバスを介してホスト機器300と接続される。ホストインターフェース回路210は、ホスト機器300から受信した要求及びデータを、それぞれプロセッサ230及びバッファメモリ240に転送する。また、ホストインターフェース回路210は、プロセッサ230からの指示に応答して、バッファメモリ240内のデータをホスト機器300へ転送する。ホストインターフェース回路210は、アクセスパターン情報受信回路210aを含む。アクセスパターン情報受信回路210aの詳細については後述する。
【0020】
RAM220は、例えばSRAMのような半導体メモリであり、プロセッサ230の作業領域として使用される。そしてRAM220は、不揮発性メモリ100を管理するためのファームウェアや、管理情報MIを保持する。ファームウェアや管理情報MIは、例えばメモリシステム1の起動時に、不揮発性メモリ100の所定の記憶領域から読み出され、RAM220に格納される。管理情報MIは、論物アドレス変換テーブルLUT、シフトテーブル情報等を含む。論物アドレス変換テーブルLUTについては後述する。シフトテーブル情報は、コントローラ200が不揮発性メモリ100からデータの読み出し処理を実行するときに、データの読み出しレベルをシフトさせるための情報である。
【0021】
プロセッサ230は、コントローラ200全体の動作を制御する。例えばプロセッサ230は、ホスト機器300からデータ読み出し要求を受信した際には、それに応答して、NANDインターフェース回路250に対して読み出しコマンドを発行する。ホスト機器300からのデータ書き込み要求及びデータ消去要求を受信した際も、プロセッサ230は、受信した要求に対応するコマンドをNANDインターフェース回路250に対して同様に発行する。また、プロセッサ230は、ウェアレベリング等、不揮発性メモリ100を管理するための様々な処理を実行する。
【0022】
論物アドレス変換テーブルLUTは、ホスト機器300からのアクセス要求に関わるデータの論理アドレスを、不揮発性メモリ100の物理アドレスに変換するための情報を格納するルックアップテーブルである。すなわち、論物アドレス変換テーブルLUTは、論物アドレス変換のためのテーブルである。プロセッサ230は、論物アドレス変換テーブルLUTを参照して、ホスト機器300からの論理アドレスを物理アドレスに変換する。
【0023】
プロセッサ230は、論物アドレス変換テーブルLUTにクラスタ単位でアドレス情報を記憶して管理する。クラスタは、論理アドレスを物理アドレスに変換するときの変換の最小単位である。言い換えれば、クラスタは、コントローラ200におけるデータの書き込み管理単位WMUである。
【0024】
論物アドレス変換テーブルLUTのクラスタ単位による管理については、発明の名称が「MEMORY SYSTEM INCLUDING A CONTORLLER AND A NONVOLATILE MEMORY HAVING MEMORY BLOCKS」である、2016年9月16日に出願された米国特許出願15/267,734に記載されている。この米国特許出願の内容は、その全体が本願明細書において参照により援用される。
【0025】
一方で、不揮発性メモリ100において、データの書き込み及び読み出しは、ページ単位で行われる。プロセッサ230により指示されたブロックBLKの指定されたページに、ユーザデータは書き込まれる。ページは、クラスタサイズのm倍(mは正の整数)のサイズを有する。
【0026】
上述したように、プロセッサ230において、ユーザデータはクラスタ単位で管理される。しかし、不揮発性メモリ100へのユーザデータの書き込みは、ページ単位で行われる。論物アドレス変換テーブルLUTには、書き込み管理単位WMU(すなわちクラスタサイズ単位)による論物アドレス変換の情報が格納される。
【0027】
プロセッサ230は、クラスタサイズ以下のサイズのユーザデータの書き込み要求を受けると、そのユーザデータの論理アドレスを、物理アドレスに変換する。プロセッサ230は、そのユーザデータを含むページサイズのデータ(ページデータ)を生成する。このとき、プロセッサ230は、そのクラスタサイズ以下のサイズのユーザデータと、変換して得られた物理アドレスに対応するページに既に書き込まれている他のユーザデータと、を組み合わせてページデータを生成する。プロセッサ230は、不揮発性メモリ100にそのユーザデータを含む生成されたページデータを書き込む。プロセッサ230は、そのページデータが書き込まれたページアドレスを含む物理アドレス(ブロック番号とページアドレスを含む)を決定する。プロセッサ230は、そのユーザデータの論理アドレスが、決定した物理アドレスに関連付けられるように、論物アドレス変換テーブルLUTを更新する。
【0028】
後述するように、本実施形態では、コントローラ200は、ホスト機器300のアクセスサイズ(書き込み要求に関わるユーザデータのサイズ)に、クラスタサイズを合わせる。具体的には、クラスタサイズは、ホスト機器300からのアクセスパターン情報により指定されたアクセスサイズに一致するように設定される。あるいは、クラスタサイズは、ホスト機器300からの書き込み要求を解析して得られたアクセスサイズに一致するように設定される。論物アドレス変換テーブルLUTには、アクセスサイズに一致したクラスタサイズで、論理アドレスと物理アドレスの対応関係情報が格納される。
【0029】
バッファメモリ240は、例えばDRAMのような半導体メモリである。バッファメモリ240は、コントローラ200の外部に実装されていてもよい。バッファメモリ240は、書き込みデータ及び読み出しデータを一時的に格納可能な揮発性のデータバッファである。ホスト機器300からの書き込み要求に係るユーザデータは、バッファメモリ240に一時的に格納される。ホスト機器300からの読み出し要求に係るユーザデータは、不揮発性メモリ100から読み出され、バッファメモリ240に一時的に格納される。
【0030】
NANDインターフェース回路250は、NANDバスを介して不揮発性メモリ100と接続される。NANDインターフェース回路250は、コントローラ200と不揮発性メモリ100間の通信を行う。NANDインターフェース回路250は、書き込みインターフェース250a及び読み出しインターフェース250bを有している。そしてNANDインターフェース回路250は、プロセッサ230からの指示に基づき、コマンド、データなどを含む種々の信号を、不揮発性メモリ100へ出力する。またNANDインターフェース回路250は、不揮発性メモリ100から各種信号及びデータを受信する。
【0031】
具体的には、NANDインターフェース回路250は、プロセッサ230からの指示に基づき、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、及びリードイネーブル信号REnを不揮発性メモリ100へ出力する。また、データの書き込み時には、NANDインターフェース回路250は、プロセッサ230で発行された書き込みコマンド、及びバッファメモリ240内の書き込みデータを、入出力信号I/Oとして不揮発性メモリ100へ転送する。更に、データの読み出し時には、NANDインターフェース回路250は、プロセッサ230で発行された読み出しコマンドを、入出力信号I/Oとして不揮発性メモリ100へ転送する。更にNANDインターフェース回路250は、不揮発性メモリ100から読み出されたデータを入出力信号I/Oとして受信し、読み出されたデータをバッファメモリ240へ転送する。
【0032】
ECC回路260は、不揮発性メモリ100に記憶されるデータに関するエラー検出及びエラー訂正処理を行う。そのため、ECC回路260は、データの書き込み時にはエラー訂正符号を生成して、これを書き込みデータに付与する。ECC回路260は、データの読み出し時には、エラー訂正をしながらデータを復号する。
[不揮発性メモリの構成]
【0033】
次に、不揮発性メモリ100の構成について説明する。
図1に示すように不揮発性メモリ100は、メモリセルアレイ110、ロウデコーダ120、ドライバ130、カラムデコーダ140、アドレスレジスタ150、コマンドレジスタ160、及びシーケンサ170を備える。
【0034】
メモリセルアレイ110は、複数のブロックBLKを備えている。各ブロックBLKは、ロウ及びカラムに対応付けられた複数の不揮発性のメモリセルを含む。
図1では一例として4つのブロックBLK0~BLK3が図示されている。メモリセルアレイ110は、コントローラ200から与えられたデータを不揮発に記憶することができる。
【0035】
ロウデコーダ120は、アドレスレジスタ150内のアドレスADDに基づいてブロックBLK0~BLK3のいずれかを選択し、更に選択したブロックBLKにおけるワード線WLを選択する。
【0036】
ドライバ130は、アドレスレジスタ150内のブロックアドレスBA及びページアドレスPAに基づいて、選択されたブロックBLK及びワード線WLに対して、各種電圧を生成して、ロウデコーダ120を介して電圧を供給する。
【0037】
カラムデコーダ140は、複数のデータラッチ回路及び複数のセンスアンプを含む。各センスアンプは、データの読み出し時には、メモリセルアレイ110から読み出されたデータをセンスし、必要な演算を行う。そして、カラムデコーダ140は、データラッチ回路(図示せず)を介してこのデータDATをコントローラ200に出力する。カラムデコーダ140は、データの書き込み時には、コントローラ200から受信したデータDATを、データラッチ回路において受けた後に、メモリセルアレイ110に対する書き込み動作を実行する。
【0038】
アドレスレジスタ150は、コントローラ200から受信したアドレスADDを保持する。このアドレスADDには、前述のブロックアドレスBAとページアドレスPAとが含まれる。
【0039】
コマンドレジスタ160は、コントローラ200から受信したコマンドCMDを保持する。
【0040】
シーケンサ170は、コマンドレジスタ160に保持されたコマンドCMDに基づき、不揮発性メモリ100全体の動作を制御する。
2.動作
【0041】
次に、メモリシステム1の動作を説明する。上述したように、プロセッサ230は、ホスト機器300から受信した要求に応答して、不揮発性メモリ100へのデータの書き込み及び不揮発性メモリ100からのデータの読み出しを行う。
【0042】
また、プロセッサ230は、ホスト機器300から受信した要求に応答して行うデータの書き込み処理及び読み出し処理とは別に、バックグラウンドで、各種処理を実行する。たとえば、プロセッサ230は、パトロール処理などをバックグラウンドで実行する。
【0043】
さらに、プロセッサ230は、バックグラウンドで、書き込み管理単位WMUを設定する。具体的には、プロセッサ230は、ホスト機器300のアクセスサイズに、ユーザデータの書き込み管理単位WMUを一致させる。上述したように、書き込み管理単位WMUは、論物アドレス変換テーブルLUTにおける論理アドレスと物理アドレスのアドレス変換の最小単位である。
【0044】
アクセスサイズは、ホスト機器300におけるワークロードに依存する。アクセスサイズが、当初想定したホスト機器300からのワークロードと異なる場合がある。そこで、ワークロードに応じて、書き込み管理単位WMUが設定される。
【0045】
すなわち、メモリコントローラ200は、アクセスパターン情報で指定されるアクセスサイズに応じて、不揮発性メモリ100へデータを書き込むときの論物アドレス変換の最小単位(WMU)を設定する。メモリコントローラ200は、アクセスサイズに一致するように、論物アドレス変換の最小単位(WMU)を設定する。
【0046】
図2は、本実施形態に係る寿命最適化処理を説明するためのブロック図である。寿命最適化処理は、メモリシステム1の寿命を最適化するための処理である。
図2は、コントローラ200における寿命最適化処理に関わる機能ブロックのみを示し、他の機能に関わる機能ブロックは省略している。
【0047】
ホスト機器300は、ワークロードに応じたアクセスパターン情報APIをメモリシステム1へ送信する。
【0048】
ホストインターフェース回路210のアクセスパターン情報受信回路210aは、ホストバスの少なくとも一部の信号線に接続されている。アクセスパターン情報受信回路210aは、ホストバスを介して、ホスト機器300からのアクセスパターン情報APIを受信することができる。アクセスパターン情報APIを受信すると、アクセスパターン情報受信回路210aは、アクセスパターン情報APIをプロセッサ230へ出力する。本実施形態では、アクセスパターン情報APIは、ホスト機器300からメモリシステム1へアクセスするときのデータサイズ(すなわちアクセスサイズ)を含む。
【0049】
プロセッサ230は、最適化アクセス生成部230aと、論物変換アクセス生成部230bとして機能する。
【0050】
最適化アクセス生成部230aは、アクセスパターン情報受信回路210aからアクセスパターン情報APIを受信すると、最適化アクセス生成処理を実行する。最適化アクセス生成処理は、受信したアクセスパターン情報APIに基づいて、論物変換アクセス生成部230bにおける書き込み管理単位WMUを設定又は変更する処理である。本実施形態では、最適化アクセス生成処理は、書き込み管理単位設定処理とも称される。
【0051】
本実施形態における書き込み管理単位設定処理の実行タイミングは、例えばホスト機器300からアクセスパターン情報APIを受信した時である。
【0052】
論物変換アクセス生成部230bは、書き込み管理単位WMUの情報を格納する格納領域SAを有している。新たなアクセスパターン情報APIを受信するまで、書き込み管理単位WMUは変更されない。
【0053】
書き込み処理においては、論物変換アクセス生成部230bは、ページ単位のユーザデータ(ページデータ)を生成して、書き込みコマンドと物理アドレスとページデータとをECC260を介してNANDインターフェース回路250の書き込みインターフェース250aへ出力する。書き込みインターフェース250aは、これらを不揮発性メモリ100へ出力する。書き込み処理が実行されると、論物変換アクセス生成部230bは、論物アドレス変換テーブルLUTを更新する。不揮発性メモリ100へ書き込まれたデータが、ある論理アドレスに関連付けられているデータの更新データである場合、論物変換アクセス生成部230bは、書き込み管理単位WMU毎に、その論理アドレスに関連付けられていたデータ(不揮発性メモリ100に以前に書き込まれていたデータ)の無効化を行う。
【0054】
ここで、有効データとは、ある論理アドレスに関連付けられているデータを意味する。例えば、論物アドレス変換テーブルLUTから参照されている物理アドレスに記憶されているデータ(すなわち最新のデータとして論理アドレスに関連付けられているデータ)は有効データである。有効データは、後にホスト機器300からリードされる可能性があるデータである。クラスタサイズの有効データは、有効クラスタと称される。少なくとも一つの有効データが書き込まれているブロックBLKは、アクティブブロックと称される。
【0055】
無効データとは、どの論理アドレスにも関連付けられていないデータを意味する。例えば、論物アドレス変換テーブルLUTから参照されていない物理アドレスに記憶されているデータは無効データである。無効データは、もはやホスト機器300からリードされる可能性のないデータである。ある論理アドレスに関連付けられている更新データが不揮発性メモリ100に書き込まれると、それまでその論理アドレスに関連付けられていたデータは無効データとなり、更新データが有効データとなる。クラスタサイズの無効データは、無効クラスタと称される。有効データを含まないブロックBLKは、フリーブロックと称される。
【0056】
プロセッサ230は、ブロックBLK毎の書き込みモードを、テーブルを用いて管理する。そのテーブルは、例えばRAM220に格納される。例えば、論物変換アクセス生成部230bで決定された物理アドレスに関わるブロックBLKに応じて、プロセッサ230は、SLCモードからPLCモードのうちのいずれか1つの書き込みモードで、ユーザデータを不揮発性メモリ100に書き込むことができる。
【0057】
読み出し処理においては、論物変換アクセス生成部230bは、論物アドレス変換テーブルLUTを参照して、読み出し要求に係るユーザデータを含むページの物理アドレスを得る。論物変換アクセス生成部230bは、得られた物理アドレスと読み出しコマンドとをNANDインターフェース回路250の読み出しインターフェース250bへ出力する。読み出しインターフェース250bは、これらを不揮発性メモリ100へ出力する。論物変換アクセス生成部230bは、不揮発性メモリ100から読み出されたページデータをECC260を介して受信し、ページデータから読み出し要求に係るデータを抽出して、ホスト機器300へ送信する。
【0058】
なお、
図2では、アクセスパターン情報APIは、ホストインターフェース回路210に設けられたアクセスパターン情報受信回路210aにより受信される。しかし、プロセッサ230が、アクセスパターン情報APIをホスト機器300から受信するようにしてもよい。すなわち、
図2において、点線で示すように、ホスト機器300から、アクセスパターン情報設定要求及びアクセスパターン情報APIを、プロセッサ230が受信するようにしてもよい。
【0059】
また、プロセッサ230は、ホスト機器300からアクセスパターン情報APIを受信する代わりに、ホスト機器300からの書き込み要求を解析することによって、アクセスパターン情報を取得するようにしてもよい。
【0060】
図3は、本実施形態の変形例に係る寿命最適化処理を説明するためのブロック図である。変形例に係る寿命最適化処理において、プロセッサ230は、ホスト機器300からの書き込み要求を解析してアクセスパターン情報を取得する。
図3において、
図2と同じ構成要素については同じ符号を付して説明は省略する。
【0061】
変形例に係るプロセッサ230は、アクセスパターン解析部230cとして機能する。アクセスパターン解析部230cは、書き込み要求に係るデータを解析してアクセスパターン情報を取得する。
【0062】
例えば、アクセスパターン解析部230cは、ホストインターフェース回路210が受信した書き込み要求に含まれる書き込みデータ(ユーザデータ)のサイズ(例えばバイト長で示される)を取得する。これにより、アクセスパターン解析部230cは、ユーザデータのサイズ(アクセスサイズ)を判定し、アクセスパターン情報を得る。
【0063】
アクセスパターン解析部230cは、一定期間に受信した複数の書き込み要求それぞれに係るユーザデータのサイズ(ユーザデータ長)の最小値、平均値、中央値などを、アクセスパターン情報として選択してよい。メモリシステム1の寿命を考慮すると、複数のユーザデータ長の中から最小値が選択されることが好ましい。この場合、メモリコントローラ200は、一定期間に受信した複数の書き込み要求それぞれに係るユーザデータ長のサイズうち、最も小さいサイズに一致するように、論物アドレス変換の最小単位(WMU)を設定する。
【0064】
アクセスパターン解析部230cは、得られたアクセスパターン情報を最適化アクセス生成部230aへ出力する。
【0065】
変形例における書き込み管理単位設定処理は、例えば定期的に実行される。
【0066】
図4は、プロセッサ230による書き込み管理単位設定処理の手順の例を示すフローチャートである。
図4は、書き込み管理単位WMUを小さくする場合の処理を示す。
【0067】
プロセッサ230の最適化アクセス生成部230aは、アクセスパターン受信回路210a又はアクセスパターン解析部230cから、アクセスパターン情報APIを取得する。最適化アクセス生成部230aは、現在の書き込み管理単位WMUが、取得したアクセスパターン情報APIで示されるアクセスサイズよりも大きいかを判定する(S1)。
【0068】
現在の書き込み管理単位WMUが、取得したアクセスサイズよりも大きくない場合(S1:NO)、プロセッサ230は、S1の判定処理を繰り返す。
【0069】
現在の書き込み管理単位WMUが、取得したアクセスサイズよりも大きい場合(S1:YES)、プロセッサ230の論物変換アクセス生成部230bは、書き込み管理単位WMUをアクセスサイズに変更する(S2)。S2では、書き込み管理単位WMUは、S1の時点での書き込み管理単位WMUよりも小さくなるように変更される。
【0070】
プロセッサ230は、変更後の書き込み管理単位WMUに合わせて論物アドレス変換テーブルLUTを再編成する(S3)。すなわち、変更後の書き込み管理単位WMUに合わせて論物アドレス変換テーブルLUTが、書き換えられる。
【0071】
その後、コントローラ200が新たな書き込み要求をホスト機器300から受信すると、プロセッサ230は、変更後の書き込み管理単位WMUと、再編成した論物アドレス変換テーブルLUTを用いて、書き込み要求に関わる新規データを不揮発性メモリ100に書き込む(S4)。S4の後、処理は、S1へ戻る。
【0072】
図5は、プロセッサ230による書き込み管理単位設定処理の手順の例を示すフローチャートである。
図5は、書き込み管理単位WMUを大きくする場合の処理を示す。
【0073】
プロセッサ230の最適化アクセス生成部230aは、アクセスパターン受信回路210a又はアクセスパターン解析部230cから、アクセスパターン情報APIを取得する。最適化アクセス生成部230aは、現在の書き込み管理単位WMUが、取得したアクセスパターン情報APIで示されるアクセスサイズよりも小さいかを判定する(S11)。
【0074】
現在の書き込み管理単位WMUが、取得したアクセスサイズよりも小さくない場合(S11:NO)、プロセッサ230は、S11の判定処理を繰り返す。
【0075】
現在の書き込み管理単位WMUが、取得したアクセスサイズよりも小さい場合(S11:YES)、プロセッサ230の論物変換アクセス生成部230bは、書き込み管理単位WMUをアクセスサイズに変更する(S12)。S12では、書き込み管理単位WMUは、S11の時点での書き込み管理単位WMUよりも大きくなるように変更される。
【0076】
プロセッサ230は、変更後の書き込み管理単位WMUに合わせて論物アドレス変換テーブルLUTを再編成する(S13)。すなわち、変更後の書き込み管理単位WMUに合わせて論物アドレス変換テーブルLUTが、書き換えられる。
【0077】
さらに、プロセッサ230は、変更後の書き込み管理単位WMUに合わせてデータを再編成する(S14)。すなわち、メモリコントローラ200は、書き込み管理単位WMNを大きく変更する場合、変更後の書き込み管理単位WMNに合わせて論物アドレス変換テーブルLUTを書き換えた後に、書き込み管理単位WMNに合わせて不揮発性メモリ100に記憶されているデータの再編成を行う(S14)。S14の再編成については、後述する。
【0078】
その後、コントローラ200が新たな書き込み要求をホスト機器300から受信すると、プロセッサ230は、変更後の書き込み管理単位WMUと、再編成した論物アドレス変換テーブルLUTを用いて、書き込み要求に関わる新規データを不揮発性メモリ100に書き込む(S15)。S15の後、処理は、S1へ戻る。
【0079】
従来のメモリシステムでは、書き込み管理単位WMUは、固定である。ある論理アドレスに対応するユーザデータの上書き(書き換え)が実行されると、書き込み管理単位WMUで旧データが無効化される。そのため、ホスト機器300からのユーザデータのサイズ(アクセスサイズ)が、メモリシステム1における書き込み管理単位WMUよりも小さい場合にユーザデータの書き換えが発生すると、無効化される書き込み管理単位WMUの旧データに含まれる他のユーザデータ(書き換えられないユーザデータ)と書き換え対象のユーザデータとは組み合わされて、別の物理アドレスのページに記憶される。他のユーザデータは書き換えられないにもかかわらず、プログラム・イレース(PE)サイクルが実行されるため、ストレージ装置の寿命の短縮に繋がる。
【0080】
図6は、書き込み管理単位WMUよりもアクセスサイズが小さい場合のデータの書き込みを説明するための図である。
【0081】
ホスト機器300のアクセスサイズASが、コントローラ200の書き込み管理単位WMUの半分であるとする。ある論理アドレスに対応するユーザデータ「A」が「A1」に書き換えられる場合、ホスト機器300は、書き込み要求と共に、ユーザデータ「A1」をコントローラ200へ出力する。コントローラ200は、既存のユーザデータ「A」に対応する物理アドレスADD1のユーザデータを無効化し、新たなユーザデータ「A1」を別の物理アドレスADD2に書き込む。
【0082】
このとき、データの無効化は、書き込み管理単位WMUで行われる。そのため、
図6に示すように、ユーザデータ「A1」を含む書き込み管理単位WMUのデータ中に他のユーザデータ「B」があると、書き換えられないユーザデータ「B」も物理アドレスADD2に書き込まれる。従って、ユーザデータ「B」についても、プログラム・イレース(PE)サイクルが発生するため、ストレージ装置の寿命が短くなる。
【0083】
これに対して、本実施形態においては、
図4を参照して説明した処理により、書き込み管理単位WMUがアクセスサイズに一致するので、書き換えられないユーザデータの無駄な書き込み回数が減る。その結果、ストレージ装置の寿命の減少を抑制できる。
【0084】
また、
図5を参照して説明した処理により、アクセスサイズに合わせて大きくなるように書き込み管理単位WMUが変更される場合、連続アクセスされるデータを連結しておくと、その後のアクセス効率がよくなる。すなわち、アクセスサイズに合わせて書き込み管理単位WMUが大きくなる場合、不揮発性メモリ100内に点在しているデータを連結して再編成する処理(S14)が必要となる。
【0085】
すなわち、書き込み管理単位WMUが変更される前は、小さいデータサイズで論物アドレス変換されていたため、ユーザデータは点在する。そのため、書き込み管理単位WMUが変更された後は、関連する複数の小さいサイズのデータを連結する再編成処理(S14)を実行することにより、効率的なユーザデータの書き込み処理及び読み出し処理が可能となる。
【0086】
図7は、データの連結処理を示す図である。
図7において、ユーザデータ「A1」から「A4」の論理アドレスは連続し、これらは関連データである。ユーザデータ「B1」から「B4」の論理アドレスは連続し、これらは関連データである。関連データは、例えば、一度に読み出されたり、書き込まれたりするデータである。書き込み管理単位WMUが変更される前は、小さいデータサイズで論物アドレス変換されていたため、
図7の上段に示すように、連続するデータであってもユーザデータは物理アドレスADD1内に点在する。書き込み管理単位WMUが変更された後は、点在していたデータを再編成する(整理して連結する)ことによって、新たな物理アドレスADD2に記憶した方がその後のアクセス効率が良くなる。ユーザデータの再編成処理では、元の物理アドレスADD1のデータの無効化処理が行われる。
【0087】
しかし、ユーザデータの再編成処理では、元の物理アドレスのデータ無効化及び新しい物理アドレスへのデータの書き込みが行われるので、ストレージ装置の寿命を減少させる。よって、再編成処理の負荷量を推定して、推定した負荷量が大きい場合は、再編成処理を実行しないようにしてもよい。すなわち、再編成処理は、処理負荷が所定の条件を満たした時にのみ実行されるようにすることが好ましい。
【0088】
以上のように、上述した実施形態によれば、当初想定して規定したワークロードのアクセスサイズと異なるワークロードのアクセスサイズでメモリシステム1が使用された場合であっても、所定の指標、例えばTBW(Total Byte Written)、DWPD(Drive Write Per Day)を満たすことができる。TBWは、メモリシステム1の寿命期間中に書き込み可能な総データ量を表す指標である。DWPDは、1日当たりのドライブ書き込み回数である。例えば、DWPD=10は、1Tバイトの総容量を有するSSDに関しては、1日当たり10Tバイト(=10*1Tバイト)のデータの書き込みを5年間に渡って毎日実行することができることを意味する。
【0089】
よって、本実施形態によれば、ワークロードにおけるアクセスパターン(本実施形態では、アクセスサイズ(書き込み要求に関わるユーザデータのサイズ))に応じて寿命の最適化が可能なメモリシステムを提供することができる。例えば、メモリシステムの実使用におけるワークロードのアクセスサイズが当初想定して規定したワークロードのアクセスサイズと異なっている場合であっても、メモリシステムの寿命が短くなるのを抑制することができる。
(第2実施形態)
【0090】
第1実施形態では、ホスト機器300のアクセスパターンとして、ユーザデータのサイズが用いられているが、第2実施形態では、ユーザデータのアクセスレンジがアクセスパターンとして用いられる。アクセスレンジは、論理アドレス空間におけるユーザデータの論理アドレスのアドレス値の範囲である。
【0091】
第2実施形態のメモリシステムの構成要素のうち、第1実施形態のメモリシステムと同じ構成要素については詳細な説明を省略し、異なる構成要素について詳述する。
【0092】
ホスト機器300は、論理アドレス空間における論理アドレスを指定してデータの書き込み及び読み出しを行う。ホスト機器300は、データの書き込みの場合、メモリシステム1へ、書き込み要求と書き込みデータを出力する。具体的には、書き込み要求として、書き込みコマンド、先頭論理アドレス、データサイズ及びデータが、コントローラ200に受信される。
【0093】
コントローラ200は、受信した論理アドレスとデータサイズに基づいて、不揮発性メモリ100の物理アドレスを生成する。
【0094】
上述したように、プロセッサ230は、バックグラウンドで各種処理を実行している。プロセッサ230は、バックグラウンドでガベージコレクションも実行する。
【0095】
プロセッサ230は、ホスト機器300からの要求に応じて、あるいは、フリーブロックの数が所定数以下になったことを検出したことに応じて、ガベージコレクションを実行する。
【0096】
ガベージコレクションは、フリーブロックの個数を増やすための処理である。そのため、ガベージコレクションでは、有効クラスタと無効クラスタが混在する物理ブロックを含む複数のブロックBLK(GC元ブロックという)内の全ての有効クラスタが消去済みのブロックBLK(GC先ブロックという)に移動される。全ての有効クラスタがGC先ブロックに移動された複数のGC元ブロックの全てのデータは消去される。消去済みの複数のGC元ブロックは、新たな書き込み先ブロックとして再利用可能となる。
【0097】
ホスト機器300からアクセスされるデータの論理アドレスが論理アドレス空間において狭い範囲内に収まっている狭域アクセスの場合は、データ更新により、あるブロックBLKに含まれるすべての有効データが無効データになり易い(すなわち、当該ブロックBLKがフリーブロックになり易い)傾向があるため、ガベージコレクションを実行する必要性が生じ難い。
【0098】
逆に、ホスト機器300からアクセスされるデータの論理アドレスが論理アドレス空間において広範囲に渡っている広域アクセスの場合は、あるブロックBLK内に有効データと無効データが混在し易い(すなわち、当該ブロックBLKがフリーブロックになり難い)傾向があるため、ガベージコレクションを実行する必要性が生じ易い。
【0099】
一方、上述したように、コントローラ200は、不揮発性メモリ100の各ブロックBLKに複数のモードのうちの1つの書き込みモードでデータの書き込みを行うことができる。例えば、各ブロックBLKの各メモリセルに、SLCモード、MLCモード、TLCモード、QLCモードあるいはPLCモードのいずれかの書き込みモードで、データを書き込むことができる。
【0100】
不揮発性メモリ100において、書き込みモードにおける多値度が高いほど(すなわち、各メモリセルに書き込まれるビット数が多いほど)、同じ量の有効データを格納するために必要なブロック数が少なくなるため、ガベージコレクションを実行する必要性が生じ難い傾向がある。
【0101】
逆に、不揮発性メモリ100において、書き込みモードにおける多値度が低いほど(すなわち、各メモリセルに書き込まれるビット数が少ないほど)、同じ量の有効データを格納するために必要なブロック数が多くなるため、ガベージコレクションを実行する必要性が生じ易い傾向がある。
【0102】
そこで、本実施形態では、メモリコントローラ200は、データの書き込み要求を受信して不揮発性メモリ100へのデータの書き込みを行うと共に、アクセスパターン(ここでは、書き込みデータの論理アドレスのアクセスレンジ)に応じて、不揮発性メモリ100へデータを書き込む書き込みモードにおける多値度を設定する。アクセスパターン(アクセスレンジ)が広域アクセスの場合は、プロセッサ230は、書き込みモードを多値度の高いPLCあるいはQLCモードにしてデータを書き込む。さらに、アクセスパターン(アクセスレンジ)が狭域アクセスの場合は、プロセッサ230は、書き込みモードを多値度の低いSLCあるいはMLCにしてデータを書き込む。プロセッサ230は、バックグラウンドで書き込みモードの設定、すなわち多値度の設定を行う。
【0103】
すなわち、プロセッサ230は、アクセスレンジの広狭に応じて、多値度の異なる複数の書き込みモードから書き込みモードを選択して、ガベージコレクションを実行する必要性を抑制する。多値度は、アクセスレンジが広ければ、高くなるように設定される。広域アクセスの場合は、プロセッサ230は、多値度の高い書き込みモードを選択することで、ガベージコレクションを実行する必要性を抑制する。狭域アクセスの場合は、ガベージコレクションを実行する必要性が生じ難いので、プロセッサ230は、多値度の低い書き込みモードを選択することができる。一般的に、多値度の低い書き込みモードでは、書き込み性能は高く、また、ブロックBLKに書き込まれたデータの信頼性は高い。
【0104】
なお、ここでは、書き込みモードが5つ(SLC,MLC,TLC,QLC,PLC)の場合について説明するが、本実施形態は、書き込みモードが3つ(例えばSLC,MLC,TLC)の場合にも適用可能である。その場合、広域アクセスの場合は、プロセッサ230は、書き込みモードを例えば多値度の高いTLCモードにする。さらに、狭域アクセスの場合は、プロセッサ230は、書き込みモードを例えばSLCモードにする。
【0105】
図8は、本実施形態に係る寿命最適化処理を説明するためのブロック図である。
図8は、コントローラ200における寿命最適化処理に関わる機能ブロックのみを示し、他の機能に関わる機能ブロックは省略している。
【0106】
ホスト機器300は、ワークロードに応じたアクセスパターン情報APIをメモリシステム1へ送信する。すなわち、ホスト機器300は、書き込みデータのアクセスレンジに応じた情報を、アクセスパターン情報APIとしてメモリシステム1へ通知する。そして、メモリシステム1は、ホスト機器300からアクセスパターン情報API(本実施形態ではアクセスレンジ情報)を受信すると、そのアクセスパターン情報APIに応じて、書き込みモードを設定する。
【0107】
具体的には、プロセッサ230は、最適化アクセス生成部230a1と論物変換アクセス生成部230b1として機能する。最適化アクセス生成部230a1は、アクセスパターン情報受信回路210aからアクセスパターン情報APIを受信すると、書き込みモード信号MDを論物変換アクセス生成部230b1へ出力する。書き込みモード信号MDは、書き込みモードを指定する信号である。
【0108】
論物変換アクセス生成部230b1は、受信した書き込みモード信号MDに応じて不揮発性メモリ100へのデータの書き込みを行う。なお、書き込みモードは、ブロックアドレス単位で異ならせることができる。
【0109】
なお、第1実施形態の変形例に係るメモリシステム1と同様に、プロセッサ230のアクセスパターン解析部が、受信した書き込み要求から、アクセスレンジを判定し、その判定したアクセスレンジに応じて、書き込みモードを設定するようにしてもよい。
【0110】
図9は、本実施形態の変形例に係る寿命最適化処理を説明するためのブロック図である。変形例に係る寿命最適化処理において、プロセッサ230は、ホスト機器300からの書き込み要求を解析してアクセスパターン情報(ここではアクセスレンジに関する情報)を得る。
図9において、
図3と同じ構成要素については同じ符号を付して説明は省略する。
【0111】
変形例に係るプロセッサ230は、アクセスパターン解析部230c1として機能する。アクセスパターン解析部230c1は、アクセスパターン解析部230cは、書き込み要求に係るデータを解析してアクセスパターン情報を取得する。
【0112】
具体的には、アクセスパターン解析部230c1は、書き込み要求に関わるデータの論理アドレスのアクセスレンジの広狭のレベルを判定する。アクセスパターン解析部230c1は、一定期間に受信した複数の書き込み要求それぞれに係るアクセスレンジの最小値、平均値、中央値などを、アクセスレンジとして判定してよい。判定して得られたアクセスレンジに応じて、最適化アクセス生成部230a1は、書き込みモードを設定する。
【0113】
図10は、アクセスレンジと書き込みモードとの対応関係の例を示す図である。
図10において、点線の矢印A1で示すように、ホスト機器300からの書き込み要求に係るデータの論理アドレスが論理アドレス空間において第1の範囲R1以上の広い範囲に渡っているとき、多値度の高いPLCあるいはQLCモードでデータを不揮発性メモリ100に書き込むように、書き込みモードが設定される。
【0114】
また、点線の矢印A2で示すように、ホスト機器300からの書き込み要求に係るデータの論理アドレスが論理アドレス空間において第2の範囲R2(第1の範囲R1より狭い)以下の狭い範囲に渡っているとき、多値度の低いSLCモードあるいはMLCモードでデータを不揮発性メモリ100に書き込むように、書き込みモードが設定される。
【0115】
点線の矢印A3で示すように、ホスト機器300からの書き込み要求に係るデータの論理アドレスが論理アドレス空間において第1の範囲R1未満でかつ第2の範囲R2を超える範囲に渡っているとき、TLCモードでデータを不揮発性メモリ100に書き込むように、書き込みモードが設定される。
【0116】
図11は、アクセスレンジと書き込みモードとの対応関係の他の例を示す図である。
図11において、点線の矢印A11で示すように、ホスト機器300からの書き込み要求に係るデータの論理アドレスが論理アドレス空間において第1の範囲R11以上の広い範囲に渡っているとき、多値度の最も高いPLCモードでデータを不揮発性メモリ100に書き込むように、書き込みモードが設定される。
【0117】
また、点線の矢印A12で示すように、ホスト機器300からの書き込み要求に係るデータの論理アドレスが論理アドレス空間において第2の範囲R12(第1の範囲R11より狭い)以上でかつ第1の範囲R11未満のやや広い範囲に渡っているとき、多値度の高いQLCモードでデータを不揮発性メモリ100に書き込むように、書き込みモードが設定される。
【0118】
さらに、点線の矢印A13で示すように、ホスト機器300からの書き込み要求に係るデータの論理アドレスが論理アドレス空間において第3の範囲R13(第2の範囲R12より狭い)以下で第4の範囲R14(第3の範囲R13より狭い)を超えるやや狭い範囲に渡っているとき、多値度の低いMLCモードでデータを不揮発性メモリ100に書き込むように、書き込みモードが設定される。
【0119】
また、点線の矢印A14で示すように、ホスト機器300からの書き込み要求に係るデータの論理アドレスが論理アドレス空間において第4の範囲R14以下の最も狭い範囲に渡っているとき、多値度の最も低いSLCモードでデータを不揮発性メモリ100に書き込むように、書き込みモードが設定される。
【0120】
点線の矢印A15で示すように、ホスト機器300からの書き込み要求に係るデータの論理アドレスが論理アドレス空間において第2の範囲R12未満でかつ第3の範囲R13を超える範囲に渡っているとき、TLCモードでデータを不揮発性メモリ100に書き込むように、書き込みモードが設定される。
【0121】
図12は、プロセッサ230による書き込みモード設定処理の手順の例を示すフローチャートである。
【0122】
プロセッサ230の最適化アクセス生成部230a1は、アクセスパターン受信回路210a又はアクセスパターン解析部230c1から、アクセスパターン情報APIを取得する。最適化アクセス生成部230a1は、取得したアクセスパターン情報APIで示されるアクセスレンジが広域であるかを判定する(S21)。アクセスレンジが広域である場合(S21:YES)、プロセッサ230の論物変換アクセス生成部230b1は、新たなデータをQLC又はPLCモードで不揮発性メモリ100に書き込む(S22)。
【0123】
アクセスレンジが広域でない場合(S21:NO)、最適化アクセス生成部230a1は、アクセスレンジが狭域であるかを判定する(S23)。アクセスレンジが狭域である場合(S23:YES)、プロセッサ230は、新たなデータをSLC又はMLCモードで不揮発性メモリ100に書き込む(S24)。
【0124】
アクセスレンジが狭域でない場合(S23:NO)、最適化アクセス生成部230a1は、新たなデータをTLCモードで不揮発性メモリ100に書き込む(S25)。S22,S24又はS25の後、処理は、S21に進む。
【0125】
上述した実施形態によれば、当初想定して規定したワークロードのアクセスレンジと異なるワークロードのアクセスレンジでメモリシステム1が使用された場合であっても、所定の指標、例えばTBW(Total Byte Written)、DWPD(Drive Write Per Day)を満たすことができる。
【0126】
以上のように、本実施形態によれば、ワークロードにおけるアクセスパターン(本実施形態では、アクセスレンジ(書き込み要求に関わるユーザデータの論理アドレスの広狭))に応じて寿命の最適化が可能なメモリシステムを提供することができる。例えば、メモリシステムの実使用におけるワークロードのアクセスレンジが当初想定して規定したワークロードのアクセスレンジと異なっている場合であっても、メモリシステムの寿命が短くなるのを抑制することができる。
(第3実施形態)
【0127】
第1及び第2の実施形態では、それぞれアクセスパターンとして、ユーザデータのアクセスサイズ、あるいはアクセスレンジが用いられているが、第3実施形態では、ユーザデータの書き換え頻度がアクセスパターンとして用いられる。
【0128】
第3実施形態のメモリシステムの構成要素のうち、第2実施形態のメモリシステムと同じ構成要素については詳細な説明を省略し、異なる構成要素について詳述する。
【0129】
メモリシステム1に書き込まれるユーザデータは、書き換え頻度の高いデータ(以下、ホットデータという)である場合と、書き換え頻度の低いデータ(以下、コールドデータという)である場合がある。
【0130】
ホスト機器300は、メモリシステム1に書き込むデータを、ホットデータとコールドデータに予め区分けしておく。プロセッサ230は、不揮発性メモリ100へのデータの書き込みを行う場合、アクセスパターン(ここでは書き込み頻度)に応じて、書き込みモードを設定する。
【0131】
すなわち、本実施形態では、メモリコントローラ200は、データの書き込み要求を受信して不揮発性メモリ100へのデータの書き込みを行うと共に、アクセスパターン情報としての書き換え頻度(アクセスパターン)に応じて、不揮発性メモリ100へデータを書き込む際の各メモリセルの多値度を設定する。
【0132】
本実施形態の場合、ホットデータであるか、コールドデータであるかに応じて、書き込みモードが設定される。多値度は、データの書き換え頻度が高ければ、高くなるように設定される。すなわち、書き込まれるユーザデータがホットデータである場合、データの書き換え頻度が高いため、プロセッサ230は、書き込みモードを多値度の高いPLCモードあるいはQLCモードにしてデータを書き込む。また、書き込まれるユーザデータがコールドデータである場合、データの書き換え頻度が低く長い時間記憶しておく必要があるので、プロセッサ230は、書き込みモードを多値度の低いSLCモードあるいはMLCモードにしてデータを書き込む。
【0133】
本実施形態のメモリシステムの構成は、
図8を参照して説明した構成と同じである。但し、ホスト機器300からは、書き込みデータがホットデータであるか、コールドデータあるかを示すアクセスパターン情報APIがメモリシステム1へ通知される。書き込みデータがホットデータであるかコールドデータであるかのアクセスパターン情報APIは、書き込み要求中に含まれる。
【0134】
なお、本実施形態においても、プロセッサ230が、ホスト機器300からの書き込みデータを監視し、書き込みデータがホットデータかコールドデータかを判定するようにしてもよい。この場合、メモリシステムの構成は、
図9に示す構成と同じである。例えば、アクセスパターン解析部230c1は、書き込む要求に係る論理アドレスを監視し、同じ論理アドレスに対するデータの書き込み回数が所定期間内に第1の所定数以上であるとき、その論理アドレスのデータをホットデータであると判定する。また、アクセスパターン解析部230c1は、同じ論理アドレスに対するデータの書き込み回数が所定期間内に第2の所定数未満であるとき、その論理アドレスのデータをコールドデータであると判定する。
【0135】
書き込みデータがホットデータかコールドデータかの判定結果の情報は、例えばRAM220に記憶されてもよい。判定結果の情報は、例えば論理アドレス毎にホットデータかあるいはコールドデータかを示す情報を含む。よって、書き込み要求を受信したときに、判定結果の情報を参照して、最適化アクセス生成部230a1は、書き込みモードを決定することができる。
【0136】
最適化アクセス生成部230a1は、アクセスパターン受信回路210a又はアクセスパターン解析部230c1からアクセスパターン情報APIを受信する。最適化アクセス生成部230a1は、アクセスパターン情報APIに応じた書き込みモード信号MDを論物変換アクセス生成部230b1へ出力する。
【0137】
ホットデータは、書き込まれた後、直ぐに書き換えられるため、メモリシステム1は、ホットデータを長い期間保持する必要が無い。すなわち、不揮発性メモリ100に格納されたホットデータの信頼性は、比較的低くてよい。よって、ホットデータの場合、プロセッサ230は、PLC、QLCなどの多値度の高い書き込みモードでデータを不揮発性メモリ100に書き込む。
【0138】
コールドデータは、低頻度に書き込まれるデータである。メモリシステム1は、コールドデータを長い期間保持する必要がある。すなわち、不揮発性メモリ100に格納されたコールドデータの信頼性は、比較的高い必要がある。よって、コールドデータの場合、プロセッサ230は、書き込みモードを多値度の低いSLCモードあるいはMLCモードでデータを不揮発性メモリ100に書き込む。
【0139】
書き込みデータがホットデータでもコールドデータでもない場合、プロセッサ230は、TLCモードでデータを不揮発性メモリ100に書き込む。
【0140】
また、ホットデータ及びコールドデータの各々についてレベルを2つ設け、例えば、ホットデータのレベルが書き換え頻度が最も高いレベルH1である場合は、多値度の最も高いPLCモードを書き込みモードとし、ホットデータのレベルがH1の次に書き換え頻度が高いレベルH2である場合は、次に多値度の高いQLCモードを書き込みモードとするようにしてもよい。コールドデータのレベルが書き換え頻度が最も低いレベルC1である場合は、多値度の最も低いSLCモードを書き込みモードとし、コールドデータのレベルがC1の次に書き換え頻度が低いレベルC2である場合は、次に多値度の低いMLCモードを書き込みモードとするようにしてもよい。書き込みデータがレベルH1,H2,C1,C2でない場合、プロセッサ230は、TLCモードでデータを不揮発性メモリ100に書き込む。
【0141】
書き込んだデータがホットデータであるかコールドデータであるかは、論理アドレス毎に、RAM220中のテーブルデータにより管理される。テーブルデータは、論理アドレス毎にホットデータかあるいはコールドデータかを示す情報を含む。
【0142】
図13は、プロセッサ230による書き込みモード設定処理の手順の例を示すフローチャートである。
【0143】
プロセッサ230の最適化アクセス生成部230a1は、アクセスパターン受信回路210a又はアクセスパターン解析部230c1から、アクセスパターン情報APIを取得する。最適化アクセス生成部230a1は、取得したアクセスパターン情報APIで示される書き込みデータがホットデータであるかを判定する(S31)。
【0144】
書き込みデータがホットデータであるときは(S31:YES)、プロセッサ230は、書き込みモードをPLC又はQLCモードに設定し、新たなデータをPLC又はQLCモードで不揮発性メモリ100に書き込む(S32)。
【0145】
書き込みデータがホットデータでないときは(S31:NO)、最適化アクセス生成部230a1は、書き込みデータがコールドデータであるかを判定する(S33)。
【0146】
書き込みデータがコールドデータであるときは(S33:YES)、プロセッサ230は、書き込みモードをSLC又はMLCモードに設定し、新たなデータをSLC又はMLCモードで不揮発性メモリ100に書き込む(S34)。
【0147】
書き込みデータがコールドデータでないときは(S33:NO)、プロセッサ230は、書き込みモードをTLCモードに設定し、新たなデータをTLCモードで不揮発性メモリ100に書き込む(S35)。
【0148】
よって、メモリシステム1において、書き込みデータがホットデータであるときは、プロセッサ230は、PLCモード(あるいはQLCモード)でユーザデータを不揮発性メモリ100へ書き込む。また、書き込みデータがコールドデータであるときは、プロセッサ230は、SLCモード(あるいはMLCモード)でユーザデータを不揮発性メモリ100へ書き込む。
【0149】
なお、書き込みデータがホットデータであっても、書き込み速度を重視する場合は、SLCモード(あるいはMLCモード)でユーザデータを不揮発性メモリ100へ書き込むようにしてもよい。
【0150】
なお、データの重要度(ここでは一時性)に応じて、書き込みモードを設定するようにしてもよい。一時性は、データの保持期間に関し、データの保持期間が短いデータは、重要度が低く、データの保持期間が長いデータは、重要度が高い。
【0151】
例えば、ホスト機器300から受信するユーザデータが重要度の低い一次データ(キャッシュデータなど)であるときは、メモリコントローラ200は、SLCモード(あるいはMLCモード)でユーザデータを不揮発性メモリ100へ書き込む。ホスト機器300から受信するユーザデータが一次データ(キャッシュデータなど)でないときは、メモリコントローラ200は、PLCモード(あるいはQLCモード)でユーザデータを不揮発性メモリ100へ書き込む。
【0152】
上述した例では、書き込みデータがホットデータ(あるいはコールドデータ)であるか、あるいはデータの重要度に応じて、書き込みモードを設定しているが、パトロール動作におけるリフレッシュライトを行うか否かのクライテリアを設定するようにしてもよい。すなわち、メモリコントローラ200は、データの書き込み要求を受信して不揮発性メモリ100へのデータの書き込みを行うと共に、アクセスパターン(書き換え頻度またはデータの重要度)に応じて、不揮発性メモリ100に対するパトロールリードにおけるリフレッシュライトのクライテリアを変更するようにしてもよい。クライテリアは、データの書き換え頻度が高ければ又はデータの重要性が低ければ、リフレッシュライトが行われ難くなるように設定される。
【0153】
パトロールリードによってリフレッシュライトが必要と判定されたデータについては、既存のデータが無効化され、同じデータが別のページに書き込まれる。しかし、同じデータの書き込みは、ストレージ装置の短寿命化に繋がる。
【0154】
そこで、本実施形態では、ホットデータあるいは非重要データに対しては、リフレッシュライトのクライテリアのレベルを上げて、リフレッシュライトが行われ難くされる。これにより、ストレージ装置の短寿命化を抑制することができる。
【0155】
上述した実施形態によれば、当初想定して規定したワークロードにおけるデータの書き換え頻度と異なるワークロードにおけるデータの書き換え頻度でメモリシステムが使用された場合であっても、所定の指標、例えばTBW(Total Byte Written)、DWPD(Drive Write Per Day)を満たすことができる。
【0156】
以上のように、本実施形態によれば、ワークロードにおけるアクセスパターン(本実施形態では、ホットデータなどであるか否か)に応じて寿命の最適化が可能なメモリシステムを提供することができる。例えば、メモリシステムの実使用におけるワークロードにおけるデータの書き換え頻度が所定のワークロードにおけるデータの書き換え頻度と異なっている場合であっても、メモリシステムの寿命が短くなるのを抑制することができる。
(第4実施形態)
【0157】
第1、第2及び第3実施形態では、ホスト機器300のアクセスパターンとして、ユーザデータのアクセスサイズ、アクセスレンジ、および書き換え頻度がそれぞれ用いられるが、本実施形態では、フラッシュ要求パターンがアクセスパターンとして用いられる。
【0158】
第4実施形態のメモリシステムの構成要素のうち、第1実施形態のメモリシステムと同じ構成要素については詳細な説明を省略し、異なる構成要素について詳述する。
【0159】
バッファメモリ240には、書き込みデータが所定量THを超えるまで一時的に格納される。バッファメモリ240の書き込みデータのデータ量が所定量THを超えると、不揮発性メモリ100への書き込み処理が実行される。書き込み処理により、バッファメモリ240に蓄積されているデータは、不揮発化される。
【0160】
ところが、バッファメモリ240にデータが一時的に格納されている状態で、メモリシステム1への電力の供給がオフになると、バッファメモリ240は、揮発性メモリであるため、そのデータは失われる。その結果、ホスト機器300が書き込みを要求したデータが不揮発性メモリ100に書き込まれていない状態(以下、巻き戻り現象という)が発生する。そのため、巻き戻り現象の発生を許容する許容量AM(巻き戻り許容量)が、メモリシステム1の仕様に規定される。
【0161】
一方で、ホスト機器300は、フラッシュ(Flush)要求(フラッシュコマンド)をメモリシステム1へ送信することができる。フラッシュ要求は、バッファメモリ240に蓄積されているデータを、バッファメモリ240に蓄積されているデータの量に関わらず、強制的に不揮発性メモリ100へ書き込む(すなわち不揮発化を行う)ことを要求するコマンドである。
【0162】
メモリシステム1は、フラッシュ要求を受信すると、フラッシュ処理を実行する。フラッシュ処理により、バッファメモリ240に蓄積されているデータは、その量に関わらず、強制的に不揮発性メモリ100へ書き込まれる。言い換えれば、フラッシュ要求は、バッファメモリ240に格納されている全ての未書き込みデータの不揮発化処理の実行を、メモリシステム1に要求する。例えば、ホスト機器300は、メモリシステム1へフラッシュ要求を定期的に送信することによって、上述した巻き戻り現象を抑制することができる。
【0163】
しかし、フラッシュ要求が頻繁に実行され、かつフラッシュ処理におけるデータのサイズが所定量TH以下である場合、結果としてメモリシステムの寿命の短命化に繋がる。
【0164】
さらに、
図6を参照して第1の実施形態でも述べたように、フラッシュ要求により書き込まれるデータ「A」が、書き込み管理単位WMUよりも小さい場合は、書き換えられないデータ「B」についてのプログラム・イレース(PE)サイクルが発生して、ストレージ寿命がさらに短くなってしまう。
【0165】
そこで、本実施形態では、フラッシュ要求を受信したときに、メモリシステム1は、バッファメモリ240に蓄積されているデータ量が所定の閾値以下の場合は、フラッシュ処理を実行しない。また、フラッシュ要求を受信したときに、メモリシステム1は、バッファメモリ240に蓄積されているデータ量が所定の閾値を超えている場合は、フラッシュ処理を実行する。本実施形態では、この所定の閾値は、許容量AMである。
【0166】
すなわち、メモリコントローラ200は、不揮発性メモリ100へのデータの書き込み要求を受信すると、データをバッファメモリ240(データバッファ)に一時的に格納する。メモリコントローラ200は、バッファメモリ240に格納されたデータの量が所定量THを超えるとバッファメモリ240に格納されたデータを不揮発性メモリ100への書き込む書き込み処理を行う。さらに、メモリコントローラ200は、ホスト機器300からフラッシュ要求を受信したときに、バッファメモリ240に格納されたデータの量に応じてフラッシュ処理の実行を制御する。
【0167】
メモリコントローラ200は、フラッシュ要求を受信したときのバッファメモリ240に格納されたデータの量が許容量AM以下の場合は、フラッシュ処理を実行しない。メモリコントローラ200は、フラッシュ要求を受信したときのそのデータ量が許容量AMを超えている場合は、フラッシュ処理を実行する。ここで、許容量AMは、メモリシステム1への電力の供給がオフされたときに、データバッファ(バッファメモリ240)に格納されたデータが不揮発化されないことを許容できる量に基づいて設定される。
【0168】
プロセッサ230は、バックグラウンドで、データバッファに格納されたデータの不揮発化を行うフラッシュ処理を実行する。フラッシュ処理の実行タイミングが、データバッファに格納されたデータの量に応じて制御される。
【0169】
図14は、本実施形態に係る寿命最適化処理を説明するためのブロック図である。
図14は、コントローラ200における寿命最適化の処理に関わる機能ブロックのみを示し、他の機能に関わる機能ブロックは省略している。
【0170】
ホスト機器300は、所定のタイミングで、フラッシュ要求FRをメモリシステム1へ送信する。
【0171】
プロセッサ230は、フラッシュ処理部230eとして機能する。最適化アクセス生成部230aは、ホスト機器300からフラッシュ要求FRを受信すると、フラッシュ処理部230eへフラッシュ処理の実行を指示するコマンドFAを出力するかを判定する。
【0172】
最適化アクセス生成部230aは、バッファメモリ240中の書き込みデータの量と許容量AMとの比較を行う。書き込みデータの量が許容量AMを超えているとき、最適化アクセス生成部230aは、フラッシュ処理部230eへコマンドFAを出力する。書き込みデータの量が許容量AM以下のとき、最適化アクセス生成部230aは、フラッシュ処理部230eへコマンドFAを出力しない。
【0173】
フラッシュ処理部230eは、コマンドFAを受信すると、フラッシュコマンドFCを論物変換アクセス生成部230bへ出力する。論物変換アクセス生成部230bは、フラッシュコマンドFCを受信すると、バッファメモリ240中の書き込みデータの不揮発化を行う。
【0174】
なお、上述した例では、フラッシュ要求FRを受信したときに、バッファメモリ240に蓄積されているデータ量と許容量AMとを比較して、フラッシュ処理の実行が制御されているが、許容量AMに代えて、メモリシステム1の電源オン保証時間を用いて、フラッシュ処理の実行が制御されるようにしてもよい。
【0175】
電源オン保証時間は、メモリシステム1への電力の供給が保証される時間である。フラッシュ要求を受信したときに、バッファメモリ240内の書き込みデータの量が、電源オン保証時間に対応するデータ量と比較される。メモリシステム1は、バッファメモリ240内の書き込みデータの量が、メモリシステム1に実装される蓄電装置(図示しない)から供給される電力を用いて電源オン保証時間内に不揮発化可能なデータ量以下である場合は、フラッシュ処理を実行しない。メモリシステム1は、バッファメモリ240内の書き込みデータの量が、蓄電装置から供給される電力を用いて電源オン保証時間内に不揮発化可能なデータ量を超えている場合は、フラッシュ処理を実行する。
【0176】
図15は、プロセッサ230によるフラッシュ処理の手順の例を示すフローチャートである。本実施形態に係るフラッシュ処理では、バッファメモリ240内のデータの量が巻き戻り許容量以下であるかが判定される。
【0177】
プロセッサ230は、ホスト機器300から、巻き戻り許容量を設定するコマンドを受信する(S40)。プロセッサ230は、ホスト機器300からフラッシュ要求を受信したかを判定する(S41)。フラッシュ要求を受信しない場合(S41:NO)、プロセッサ230は、S41の判定を繰り返す。
【0178】
フラッシュ要求を受信した場合(S41:YES)、プロセッサ230は、内部メモリデータ(バッファメモリ240内の書き込みデータ)の量が巻き戻り許容量以下であるかを判定する(S42)。
【0179】
内部メモリデータの量が巻き戻り許容量以下である場合(S42:YES)、プロセッサ230は、受信したフラッシュ要求を無視し(S43)、処理は、S41に進む。
【0180】
内部メモリデータの量が巻き戻り許容量を超える場合(S42:NO)、プロセッサ230は、内部メモリデータを不揮発性メモリ100に書き込む(S44)。その後、プロセッサ230は、論物アドレス変換テーブルLUTを更新する(S45)。S45の後、処理は、S41に進む。
【0181】
図16は、プロセッサ230によるフラッシュ処理の手順の例を示すフローチャートである。本実施形態の変形例に係るフラッシュ処理では、内部メモリデータが電源オン保証時間内に不揮発化が可能であるかが判定される。
【0182】
図16において、
図15の処理と同じ処理については、同じステップ(S)番号が用いられている。
【0183】
プロセッサ230は、ホスト機器300から、電源オン保証時間を設定するコマンドを受信する(S50)。プロセッサ230は、フラッシュ要求を受信した場合(S41:YES)、内部メモリデータが電源オン保証時間内に不揮発化が可能であるかを判定する(S421)。
【0184】
内部メモリデータが電源オン保証時間内に不揮発化が可能でない場合(S421:No)、プロセッサ230は、内部メモリデータを不揮発性メモリ100に書き込む(S44)。その他の処理は、
図15と同じである。
【0185】
上述した実施形態によれば、当初想定して規定したワークロードにおけるフラッシュ要求パターンと異なるワークロードにおけるフラッシュ要求パターンでメモリシステムが使用された場合であっても、所定の指標、例えばTBW(Total Byte Written)、DWPD(Drive Write Per Day)を満たすことができる。
【0186】
以上のように、本実施形態によれば、ワークロードにおけるアクセスパターン(本実施形態では、フラッシュ要求パターン)に応じて寿命の最適化が可能なメモリシステムを提供することができる。例えば、メモリシステムの実使用におけるワークロードにおけるフラッシュ要求パターンが所定のワークロードにおけるフラッシュ要求パターンと異なっている場合であっても、メモリシステムの寿命が短くなるのを抑制することができる。
【0187】
以上のように、上述した各実施形態によれば、アクセスパターンに応じて寿命の最適化が可能なメモリシステムを提供することができる。
【0188】
なお、上述した各実施形態では、書き込み管理単位設定処理などは、ホスト機器300からアクセスパターン情報を受信した時に、あるいは解析によりアクセスパターン情報を取得した時に実行されるが、受信したあるいは取得した後の所定のタイミング時に実行するようにしてもよい。例えば、書き込み管理単位設定処理の実行タイミングは、アクセスサイズを含むアクセスパターン情報を受信した後、あるいはアクセスパターン解析部230cによりアクセスサイズが検出された後、ホスト機器300から別途受信する書き込み管理単位設定処理の実行を指示する指示信号により指定された時でもよい。
【0189】
さらになお、書き込み管理単位設定処理の実行タイミングは、メモリシステム1の寿命に基づいて設定された時でもよい。例えば、その実行タイミングは、メモリシステム1の書き込み寿命の指標における所定の値のタイミング(ストレージ装置の書き込み寿命の指標の10%おきのタイミング)のタイミングであってもよい。
【0190】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0191】
1 メモリシステム、100 不揮発性メモリ、110 メモリセルアレイ、120 ロウデコーダ、130 ドライバ、140 カラムデコーダ、150 アドレスレジスタ、160 コマンドレジスタ、170 シーケンサ、200 メモリコントローラ、210 ホストインターフェース回路、210a アクセスパターン情報受信回路、230 プロセッサ、230a、230a1 最適化アクセス生成部、230b、230b1 論物変換アクセス生成部、230c、230c1 アクセスパターン解析部、230e フラッシュ処理部、240 バッファメモリ、250 NANDインターフェース回路、250a 書き込みインターフェース、250b 読み出しインターフェース、260 ECC回路、300 ホスト機器