(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023169664
(43)【公開日】2023-11-30
(54)【発明の名称】メモリシステムおよび制御方法
(51)【国際特許分類】
G06F 11/22 20060101AFI20231122BHJP
G06F 12/00 20060101ALI20231122BHJP
G11C 16/04 20060101ALI20231122BHJP
G11C 16/34 20060101ALI20231122BHJP
【FI】
G06F11/22 607Z
G06F12/00 597U
G11C16/04 170
G11C16/34 120
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022080916
(22)【出願日】2022-05-17
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】増尾 容子
【テーマコード(参考)】
5B048
5B160
5B225
【Fターム(参考)】
5B048CC11
5B048CC14
5B160AA10
5B225DE08
5B225DE20
5B225FA01
(57)【要約】
【課題】データ消失のリスクを検知する動作を好適に実行できるメモリシステムおよび制御方法を実現する。
【解決手段】コントローラは、第1の動作を周期的に実行する。コントローラは、第1の動作において、第1の方式、または第2の方式を選択する。第1の方式を選択した場合、コントローラは、第1のダイの第1の物理ブロックに含まれる第1の物理ページまたは第2のダイの第2の物理ブロックに含まれる第2の物理ページに含まれる連続した複数の記憶位置にそれぞれ記憶されている複数のデータを読み出す。第2の方式を選択した場合、コントローラは、第1の物理ページに含まれる前記複数の記憶位置のうち1つの記憶位置に記憶されている1つの第1のデータと、第2の物理ページに含まれる前記複数の記憶位置のうち1つの記憶位置に記憶されている1つの第2のデータとを読み出す。
【選択図】
図6
【特許請求の範囲】
【請求項1】
ホストに接続可能なメモリシステムであって、
第1のチャンネルに接続された第1のダイと、前記第1のチャンネルと異なる第2のチャンネルに接続された第2のダイとを含む不揮発性メモリと、
前記不揮発性メモリに書き込まれたデータを読み出す動作と、読み出したデータに含まれる誤りの数が閾値以上であるか否かを判定する動作とを含む第1の動作を周期的に実行するように構成されたコントローラと、を具備し、前記第1のダイおよび前記第2のダイの各々は複数の物理ブロックを含み、前記複数の物理ブロックは複数の物理ページを含み、
前記コントローラは、
前記第1の動作において、前記ホストから受信され且つ処理が完了していないリード要求が存在するか否かを判定し、
前記リード要求が存在しない場合、前記第1の動作に関する第1の方式を選択し、前記リード要求が存在する場合、前記第1の動作に関する第2の方式を選択し、
前記第1の方式を選択した場合、前記第1のダイの第1の物理ブロックに含まれる第1の物理ページまたは前記第2のダイの第2の物理ブロックに含まれる第2の物理ページに含まれる連続した複数の記憶位置をそれぞれ指定する複数のリードコマンドを含む第1のリードコマンドグループを発行し、前記連続した複数の記憶位置にそれぞれ記憶されている複数のデータを読み出し、
前記第2の方式を選択した場合、前記第1の物理ページに含まれる前記複数の記憶位置のうち1つの記憶位置を指定するリードコマンド、および前記第2の物理ページに含まれる前記複数の記憶位置のうち1つの記憶位置を指定するリードコマンドを含む第2のリードコマンドグループを発行し、前記第1の物理ページの前記1つの記憶位置に記憶されている1つの第1のデータと、前記第2の物理ページの前記1つの記憶位置に記憶されている1つの第2のデータとを読み出すように構成されている、
メモリシステム。
【請求項2】
前記コントローラは、
前記第1の物理ページの前記複数の記憶位置および前記第2の物理ページの前記複数の記憶位置のうち、前記第1の動作によってデータが読み出された記憶位置それぞれを示す管理情報を管理し、
前記第1の物理ページと前記第2の物理ページとに対する前記第1の動作の実行中に、前記第1の動作に関する方式が、前記第1の方式および前記第2の方式の一方の方式から他方の方式に切り替えられた場合、前記管理情報に基づいて、前記第1の物理ページの前記複数の記憶位置および前記第2の物理ページの前記複数の記憶位置のうち、前記一方の方式で既にデータが読み出された記憶位置を除く残りの記憶位置それぞれから前記他方の方式でデータを読み出すように構成されている、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、
第1の閾値時間以上連続して前記ホストからコマンドが受信されなかった場合、前記メモリシステムを、前記第1の動作以外の動作が停止されるスリープ状態に遷移させ、
前記第1の動作を実行する際、前記メモリシステムが前記スリープ状態であるか否かを判定し、
前記メモリシステムが前記スリープ状態である場合、前記第1の動作を前記第1の方式で実行するように構成されている、
請求項1に記載のメモリシステム。
【請求項4】
前記コントローラは、
前記スリープ状態の前記メモリシステムが前記ホストからコマンドを受信した場合、前記メモリシステムを、前記スリープ状態から前記スリープ状態とは異なる状態に遷移させ、
前記第1の動作を実行する際、前記メモリシステムが前記スリープ状態とは異なる状態であるか否かを判定し、
前記メモリシステムが前記スリープ状態とは異なる状態である場合、前記第1の動作を前記第2の方式で実行するように構成されている、
請求項3に記載のメモリシステム。
【請求項5】
前記コントローラは、
フリーブロックの個数が第2の閾値以下になった場合、ガベージコレクション動作を実行し、
前記ホストから受信され且つ処理が完了していないリード要求が存在せず、且つ、前記フリーブロックの個数が前記第2の閾値を上回っている場合、前記第1の方式で前記第1の動作を実行し、
前記ホストから受信され且つ処理が完了していないリード要求が存在するか、または、前記フリーブロックの個数が前記第2の閾値以下である場合、前記第2の方式で前記第1の動作を実行するように構成されている、
請求項1に記載のメモリシステム。
【請求項6】
第1のチャンネルに接続された第1のダイと、第2のチャンネルに接続された第2のダイと、を含む不揮発性メモリを具備するメモリシステムの制御方法であって、前記第1のダイおよび前記第2のダイの各々は複数の物理ブロックを含み、前記複数の物理ブロックは複数の物理ページを含み、
前記不揮発性メモリに書き込まれたデータを読み出す動作と、読み出したデータに含まれる誤りの数が閾値以上であるか否かを判定する動作と、を含む第1の動作を、周期的に実行することと、
前記第1の動作において、ホストから受信され且つ処理が完了していないリード要求が存在するか否かを判定することと、
前記リード要求が存在しない場合、前記第1の動作に関する第1の方式を選択することと、
前記リード要求が存在する場合、前記第1の動作に関する第2の方式を選択することと、
前記第1の方式を選択した場合、前記第1のダイの第1の物理ブロックに含まれる第1の物理ページまたは前記第2のダイの第2の物理ブロックに含まれる第2の物理ページに含まれる連続した複数の記憶位置をそれぞれ指定する複数のリードコマンドを含む第1のリードコマンドグループを発行し、前記連続した複数の記憶位置にそれぞれ記憶されている複数のデータを読み出すことと、
前記第2の方式を選択した場合、前記第1の物理ページに含まれる前記複数の記憶位置のうち1つの記憶位置を指定するリードコマンド、および前記第2の物理ページに含まれる前記複数の記憶位置のうち1つの記憶位置を指定するリードコマンドを含む第2のリードコマンドグループを発行し、前記第1の物理ページの前記1つの記憶位置に記憶されている1一つの第1のデータと、前記第2の物理ページの前記1つの記憶位置に記憶されている1つの第2のデータとを読み出すことと、を具備する
制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよび制御方法に関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。NAND型フラッシュメモリは、イレーズの最小単位であるブロックを複数備える。
【0003】
SSDのようなメモリシステムでは、不揮発性メモリに書き込まれたデータを周期的に読み出し、データ消失のリスクを事前に検知する動作が実行される場合がある。この動作は、パトロールリード動作またはパトロール動作と称される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2019-057340号公報明細書
【特許文献2】米国特許出願公開第2013/0173972号明細書
【特許文献3】米国特許出願公開第2021/0157921号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施形態が解決しようとする課題は、データ消失のリスクを検知する動作を好適に実行することができるメモリシステムおよび制御方法を提供することである。
【課題を解決するための手段】
【0006】
実施形態によれば、ホストに接続可能なメモリシステムは、不揮発性メモリと、コントローラとを具備する。前記不揮発性メモリは、第1のチャンネルに接続された第1のダイと、前記第1のチャンネルと異なる第2のチャンネルに接続された第2のダイとを含む。前記コントローラは、前記不揮発性メモリに書き込まれたデータを読み出す動作と、読み出したデータに含まれる誤りの数が閾値以上であるか否かを判定する動作とを含む第1の動作を周期的に実行するように構成されている。前記第1のダイおよび前記第2のダイの各々は、複数の物理ブロックを含む。前記複数の物理ブロックは、複数の物理ページを含む。前記コントローラは、前記第1の動作において、前記ホストから受信され且つ処理が完了していないリード要求が存在するか否かを判定する。前記コントローラは、前記リード要求が存在しない場合、前記第1の動作に関する第1の方式を選択する。前記コントローラは、前記リード要求が存在する場合、前記第1の動作に関する第2の方式を選択する。前記コントローラは、前記第1の方式を選択した場合、前記第1のダイの第1の物理ブロックに含まれる第1の物理ページまたは第2の物理ブロックに含まれる第2の物理ページに含まれる連続した複数の記憶位置をそれぞれ指定する複数のリードコマンドを含む第1のリードコマンドグループを発行し、前記連続した複数の記憶位置にそれぞれ記憶されている複数のデータを読み出す。前記コントローラは、前記第2の方式を選択した場合、前記第1の物理ページに含まれる前記複数の記憶位置のうち1つの記憶位置を指定するリードコマンド、および前記第2の物理ページの1つの記憶位置を指定するリードコマンドを含む第2のリードコマンドグループを発行し、前記第1の物理ページの前記1つの記憶位置に記憶されている1つの第1のデータと、前記第2の物理ページの前記1つの記憶位置に記憶されている1つの第2のデータとを読み出す。
【図面の簡単な説明】
【0007】
【
図1】実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。
【
図2】実施形態に係るメモリシステムに含まれるNAND型フラッシュメモリのダイの構成例を示すブロック図。
【
図3】実施形態に係るメモリシステムにおいて使用される論理ブロックの構成例を示すブロック図。
【
図4】実施形態に係るメモリシステムにおいて使用される論理ページの構成例を示す図。
【
図5】実施形態に係るメモリシステムにおいて実行されるパトロールリード動作とリフレッシュ動作の例を示す図。
【
図6】実施形態に係るメモリシステムにおいて実行される第1の方式のパトロールリード動作におけるデータの読み出し順序を示す図。
【
図7】実施形態に係るメモリシステムにおいて実行される第2の方式のパトロールリード動作におけるデータの読み出し順序を示す図。
【
図8】実施形態に係るメモリシステムにおいて使用される進捗管理テーブルの構成例を示す図。
【
図9】実施形態に係るメモリシステムにおいて実行されるパトロールリード動作の第1の手順を示すフローチャート。
【
図10】実施形態に係るメモリシステムにおいて実行されるパトロールリード動作の第2の手順を示すフローチャート。
【
図11】実施形態に係るメモリシステムにおいて実行されるパトロールリード動作の第3の手順を示すフローチャート。
【
図12】実施形態に係るメモリシステムにおいて実行されるパトロールリード動作の第4の手順を示すフローチャート。
【
図13】実施形態に係るメモリシステムにおいて実行されるパトロールリード動作の第5の手順を示すフローチャート。
【
図14】実施形態に係るメモリシステムにおいて実行されるパトロールリード動作の第6の手順を示すフローチャート。
【発明を実施するための形態】
【0008】
以下、図面を参照して、実施形態を説明する。
図1は、実施形態に係るメモリシステム3を含む情報処理システム1の構成例を示すブロック図である。実施形態に係るメモリシステム3は、不揮発性メモリを含むストレージデバイスである。
【0009】
情報処理システム1は、ホスト(ホストデバイス)2と、メモリシステム3とを含む。ホスト2と、メモリシステム3とは、バス4を介して接続可能である。バス4を介したホスト2とメモリシステム3との間の通信は、例えば、NVM ExpressTM(NVMeTM)規格、またはSerial Attached SCSI(SAS)規格に準拠して実行される。
【0010】
ホスト2は、情報処理装置である。ホスト2は、例えば、パーソナルコンピュータ、またはサーバコンピュータである。ホスト2は、メモリシステム3にアクセスする。具体的には、ホスト2は、データを書き込むためのコマンドであるライトコマンドをメモリシステム3に送信する。ホスト2は、データを読み出すためのコマンドであるリードコマンドをメモリシステム3に送信する。また、ホスト2は、データを無効化するためのコマンドである無効化コマンドをメモリシステム3に送信する。無効化コマンドの一例は、アンマップコマンドやトリムコマンドである。
【0011】
メモリシステム3は、半導体ストレージデバイスである。メモリシステム3は、例えば、不揮発性メモリの一例であるNAND型フラッシュメモリ6を含むSSDである。メモリシステム3は、不揮発性メモリにデータを書き込む。そして、メモリシステム3は、不揮発性メモリからデータを読み出す。
【0012】
バス4は、例えば、PCI ExpressTM(PCIeTM)規格、またはSAS規格に準拠したバスである。バス4は、主として、ホスト2からメモリシステム3へのデータおよび入出力コマンド(I/Oコマンド)の送信、およびメモリシステム3からホスト2へのデータおよび応答の送信のために使用される。I/Oコマンドは、不揮発性メモリに対するデータの書き込みまたは読み出しを行うためのコマンドである。I/Oコマンドとしては、例えば、ライトコマンド、リードコマンドがある。以降では、ホスト2からメモリシステム3に送信されるライトコマンドを、ホストライトコマンドまたはライト要求と称し、ホスト2からメモリシステム3に送信されるリードコマンドを、ホストリードコマンドまたはリード要求と称する。
【0013】
次に、メモリシステム3の内部構成について説明する。メモリシステム3は、メモリコントローラ5と、NAND型フラッシュメモリ(以下、単にNANDメモリと称する)6と、ダイナミックランダムアクセスメモリ(DRAM)7とを含む。
【0014】
メモリコントローラ5は、制御回路の一例である。これ以降では、メモリコントローラ5を単にコントローラ5と称する。コントローラ5は、例えば、System-on-a-Chip(SoC)のような半導体デバイスである。コントローラ5は、NANDメモリ6と通信可能に接続されている。コントローラ5は、NANDメモリ6へのデータの書き込みと、NANDメモリ6からのデータの読み出しとを実行する。また、コントローラ5は、DRAM7と通信可能に接続されている。コントローラ5は、DRAM7へのデータの書き込みと、DRAM7からのデータの読み出しとを実行する。また、コントローラ5は、バス4を介して、ホスト2との通信を実行する。
【0015】
NANDメモリ6は、不揮発性のメモリである。NANDメモリ6は、例えば、二次元構造のフラッシュメモリ、または3次元構造のフラッシュメモリである。NANDメモリ6は、複数のブロックを備える。ブロックは、NANDメモリ6に記録されたデータの消去の最小単位である。ブロックは、物理ブロック、または消去ブロックとも称される。ブロックは、複数のページを含む。ページは、NANDメモリ6のメモリセルアレイにデータを書き込む動作であるデータ書き込み動作、およびメモリセルアレイからデータを読み出す動作であるデータ読み出し動作の最小単位である。ページは、例えば、同一ワード線に接続された複数のメモリセルを含む。ページは、物理ページとも称される。
【0016】
DRAM7は、揮発性のメモリである。DRAM7は、例えば、ホスト2から受信したライトデータ、またはNANDメモリ6から読み出されたリードデータを一時的に記憶する。つまり、DRAM7は、ライトバッファまたはリードバッファとして使用されてもよい。また、DRAM7は、メモリシステム3を管理するために使用される情報を一時的に記憶する。
【0017】
次に、コントローラ5の内部構成の例について説明する。コントローラ5は、ホストインタフェース(ホストI/F)51と、CPU52と、NANDインタフェース(NAND I/F)53と、DRAMインタフェース(DRAM I/F)54と、スタティックRAM(SRAM)55と、ECC回路56とを含む。これらの各部は、内部バス50に接続されている。
【0018】
ホストインタフェース51は、ハードウェアインタフェース回路である。ホストインタフェース51は、ホスト2との通信を実行する。ホストインタフェース51は、例えば、ホスト2からI/Oコマンドおよびデータを受信する。また、ホストインタフェース51は、データおよび応答をホスト2に送信する。
【0019】
CPU52は、プロセッサである。CPU52は、ホストインタフェース51、NANDインタフェース53、DRAMインタフェース54、SRAM55、およびECC回路56を制御する。CPU52は、図示しないROMまたはNANDメモリ6から制御プログラム(ファームウェア)をSRAM55またはDRAM7にロードする。CPU52は、制御プログラム(ファームウェア)を実行することによって様々な処理を行う。CPU52は、例えば、フラッシュトランスレーション層(FTL)として、NANDメモリ6に記憶されたデータの管理およびNANDメモリ6に含まれるブロックの管理を実行する。NANDメモリ6に記憶されたデータの管理とは、例えば、論理アドレスそれぞれと物理アドレスそれぞれとの間の対応関係を示す情報であるマッピング情報の管理である。論理アドレスは、メモリシステム3をアクセスするためにホスト2によって使用されるアドレスである。論理アドレスは、例えば、LBA(Logical Block Address)である。物理アドレスは、NANDメモリ6における物理的な記憶位置を示すアドレスである。NANDメモリ6において、ブロックの1つのページへのデータ書き込みは、ブロックに対するプログラム/イレーズサイクル当たり1回のみ可能である。このため、コントローラ5は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている記憶位置ではなく、別の記憶位置に書き込む。このため、CPU52は、論理アドレスと物理アドレスとの間のマッピングを論理物理アドレス変換テーブル(logical-to-physical address translation table:L2Pテーブル)701を使用して管理する。また、NANDメモリ6に含まれるブロックの管理において、例えば、パトロールリード動作と、ガベージコレクション動作と、リフレッシュ動作とが実行される。
【0020】
パトロールリード動作は、誤りが生じたデータを含むブロックを検出するための動作である。パトロールリード動作は、NANDメモリ6に書き込み済みのデータを読み出し、読み出したデータに含まれる所定のサイズにおける誤りの数(エラービット数)が閾値以上であるか否かを、ECC回路56によるエラー訂正結果に基づいて判定する動作である。
【0021】
ガベージコレクション動作は、有効データと無効データとが混在するブロックの個数を減らし且つフリーブロックの個数を増やすための動作である。フリーブロックとは、有効データを含まないブロックを意味する。有効データは、論理アドレスに関連付けられている物理アドレスによって示される記憶位置に格納されているデータである。例えば、L2Pテーブル701から参照されている物理アドレスによって示される記憶位置に記憶されているデータは、有効データである。また、有効データは、後にホスト2からリードされる可能性があるデータである。無効データは、論理アドレスに関連付けられていない物理アドレスによって示される記憶位置に格納されているデータである。例えば、L2Pテーブル701から参照されていない物理アドレスによって示される記憶位置に記憶されているデータは、無効データである。また、無効データは、もはやホスト2からリードされる可能性が無いデータである。ガベージコレクション動作は、フリーブロックの残り個数が閾値を下回った場合に実行される。
【0022】
リフレッシュ動作は、リフレッシュ対象ブロックに格納されているデータを別のブロックに書き直す動作である。リフレッシュ対象ブロックは、パトロールリード動作などのリード動作によってエラービット数が閾値以上であると判定されたデータを含むブロックである。
【0023】
NANDインタフェース53は、NANDメモリ6を制御する回路である。NANDインタフェース53は、NANDメモリ6に含まれる複数のフラッシュダイ(以下、ダイと称する)に電気的に接続される。ダイは、不揮発性メモリダイである。ダイは、不揮発性メモリチップとも称される。NANDインタフェース53は、NANDコントローラ531-0、531-1、531-2、…、531-17を含む。NANDコントローラ531-0、531-1、531-2、…、531-17は、チャンネルch.0、ch.1、ch.2、…、ch.17にそれぞれ接続される。NANDコントローラ531-0、531-1、531-2、…、531-17の各々は、対応するチャンネルを介して、1つまたは複数のダイに接続される。
図1においては、チャンネルch.0、ch.1、ch.2、…、ch.17の各々に4つのダイが接続されている場合が例示されている。この場合、NANDコントローラ531-0は、チャンネルch.0を介して、ダイ#0、#18、#36、および#54に接続される。NANDコントローラ531-1は、チャンネルch.1を介して、ダイ#1、#19、#37、および#55に接続される。NANDコントローラ531-2は、チャンネルch.2を介して、ダイ#2、#20、#38、および#56に接続される。そして、NANDコントローラ531-17は、チャンネルch.17を介して、ダイ#17、#35、#53、および#71に接続される。ダイ#0、#1、#2、…、#17は、コントローラ5によってバンクBNK0として扱われる。同様に、ダイ#18、#19、#20、…、#35はコントローラ5によってバンクBNK1として扱われ、ダイ#36、#37、#38、…、#53はコントローラ5によってバンクBNK2として扱われ、ダイ#54、#55、#56、…、#71はコントローラ5によってバンクBNK3として扱われる。バンクは、複数のダイをインターリーブ動作によって並列動作させる単位である。
【0024】
DRAMインタフェース54は、DRAM7を制御する回路である。DRAMインタフェース54は、DRAM7にデータを格納し、DRAM7に格納されているデータを読み出す。
【0025】
SRAM55は、揮発性のメモリである。SRAM55は、例えば、ホスト2から受信したライトデータを一時的に記憶するライトバッファとして使用され得る。また、SRAM55は、例えば、NANDメモリ6から読み出されたデータを一時的に記憶するリードバッファとしても使用され得る。
【0026】
ECC回路56は、データのエンコードと、データのデコードとを実行する回路である。ECC回路56は、NANDメモリ6にデータを書き込む際に、データにエラー訂正コード(ECC)を冗長コードとして付加するエンコードを実行する。ECC回路56は、NANDメモリ6から読み出されたデータに付加されたECCを使用して、読み出されたデータの誤り訂正をするデコードを実行する。ECC回路56は、例えば、誤り訂正能力が互いに異なる複数レベルの誤り訂正処理をそれぞれ実行する複数の回路を含む。例えば、複数レベルの誤り訂正処理は、ある誤り訂正アルゴリズムを使用する第1レベルの誤り訂正処理と、別の誤り訂正アルゴリズムを使用し、第1レベルの誤り訂正処理よりも高い誤り訂正能力を有する第2レベルの誤り訂正処理と、さらに別の誤り訂正アルゴリズムを使用し、第2レベルの誤り訂正処理よりも高い誤り訂正能力を有する第3レベルの誤り訂正処理とを含んでいてもよい。
【0027】
次に、CPU52の機能構成の例について説明する。
【0028】
CPU52は、ブロック管理部521と、書き込み/読み出し制御部522と、パトロールリード制御部523と、ホストリードコマンド検出部524とを含む。
【0029】
ブロック管理部521は、メモリシステム3において使用される複数のブロックを管理する。ブロック管理部521は、ダイ#0~#71それぞれに含まれる物理ブロックの集合から、複数の論理ブロックを構築する。論理ブロックは、ダイ#0~#71のうち複数のダイそれぞれに含まれる複数の物理ブロックを含む。論理ブロックは、ブロックグループ、またはスーパーブロックとも称される。複数の論理ブロックの各々は、互いに異なるダイに含まれる物理ブロックの集合である。複数の論理ブロックの各々は、例えば、ダイ#0~#71にそれぞれ含まれる計72個の物理ブロックを含む。なお、ダイ#0~#71の各々が2プレーン構成を有する場合、複数の論理ブロックの各々は、例えば、144個(=72ダイ×2プレーン)の物理ブロックを含む。複数の論理ブロックの各々は、1つの物理ブロックに含まれるページ(物理ページ)の数と同数の論理ページを含む。1つの論理ページは、論理ブロックに含まれる物理ブロックと同数の物理ページを含む。例えば、1つの論理ブロックが物理ブロック#1~#10から構築されており、且つ物理ブロック#1~#10の各々が物理ページ#1~#255を含む場合、この論理ブロックは、論理ページ#1~#255を含む。論理ページ#1~#255の各々は、物理ブロック#1~#10の数と同数の10個の物理ページを含む。例えば、論理ページ#1は、物理ブロック#1~#10に1つずつ含まれる計10個の物理ページ#1の集合である。論理ページは、ページグループ、またはスーパーページとも称される。ブロック管理部521は、ブロック管理テーブル708を使用して、論理ブロックを構成する物理ブロックそれぞれを示す情報を論理ブロック毎に管理する。個々の物理ブロックは、例えば、ダイの識別子と、ダイ内の物理ブロックアドレスとによって、または、ダイの識別子と、プレーンの識別子と、プレーン内の物理ブロックアドレスとによって識別される。個々のダイは、チャンネル番号と、バンク番号とによって識別される。ブロック管理部521は、複数の論理ブロックから1つの論理ブロックを選択し、選択した論理ブロックを書き込み先ブロックとして割り当てる。書き込み先ブロックは、データが書き込まれるブロック(論理ブロック)である。
【0030】
ブロック管理部521は、複数の論理ブロックを、アクティブブロックリスト709、フリーブロックリスト710、システムブロックリスト711、およびリフレッシュ対象ブロックリスト712を使用して管理する。
【0031】
ブロック管理部521は、有効データを含む論理ブロックをアクティブブロックリスト709に登録する。以降では、アクティブブロックリスト709に登録されている論理ブロックを、アクティブブロックと称する。
【0032】
ブロック管理部521は、有効データを含まない論理ブロックをフリーブロックリスト710に登録する。フリーブロックリスト710に登録されている論理ブロックは、消去(イレーズ)動作が実行されることによって、新たなデータを記憶することができる論理ブロックである。以降では、フリーブロックリスト710に登録されている論理ブロックを、フリーブロックと称する。
【0033】
ブロック管理部521は、メモリシステム3の管理に使用される情報である管理データを記憶するために使用される論理ブロックをシステムブロックリスト711に登録する。以降では、システムブロックリスト711に登録されている論理ブロックをシステムブロックと称する。
【0034】
ブロック管理部521は、リフレッシュ対象ブロックとして選択された論理ブロックをリフレッシュ対象ブロックリスト712に登録する。
【0035】
書き込み/読み出し制御部522は、NANDメモリ6に対してデータを書き込む動作と、NANDメモリ6からデータを読み出す動作とを制御する。書き込み/読み出し制御部522は、NANDメモリ6にデータを書き込むための指示であるプログラムコマンドを生成し、生成したプログラムコマンドをNANDインタフェース53(NANDコントローラ531-0~531-17)を介してNANDメモリ6に発行する。また、書き込み/読み出し制御部522は、NANDメモリ6からデータを読み出すための指示であるリードコマンドを生成し、生成したリードコマンドをNANDインタフェース53(NANDコントローラ531-0~531-17)を介してNANDメモリ6に発行する。
【0036】
書き込み/読み出し制御部522は、例えば、ホストライトコマンド、ガベージコレクション動作(GC動作)、リフレッシュ動作等に基づいて、NANDメモリ6に対するプログラムコマンドを生成する。
【0037】
書き込み/読み出し制御部522は、ホストインタフェース51を介して、ホストライトコマンドを受信する。ホストライトコマンドは、NANDメモリ6に書き込まれるべきライトデータに対応する論理アドレスと、ライトデータのサイズとを少なくとも指定する。書き込み/読み出し制御部522は、受信したホストライトコマンドに関連付けられたライトデータをホスト2から受信し、受信したライトデータをライトバッファ702に格納する。そして、書き込み/読み出し制御部522は、ライトデータが書き込まれる書き込み先ブロックにおける書き込み先記憶位置を決定する。書き込み/読み出し制御部522は、書き込み先記憶位置にライトデータを書き込むためのプログラムコマンドを生成する。書き込み/読み出し制御部522は、生成したプログラムコマンドを図示しないコマンドキューおよびNANDインタフェース53を介して、NANDメモリ6に発行する。このようにして、書き込み/読み出し制御部522は、ホストライトコマンドに関連付けられたライトデータを書き込み先ブロック内の書き込み先記憶位置に書き込む。
【0038】
GC動作において、書き込み/読み出し制御部522は、ガベージコレクション(GC)バッファ704に格納されているデータをNANDメモリ6のコピー先ブロック(GCデスティネーションブロック)に書き込む。GCバッファ704に格納されているデータは、GC対象ブロックから読み出された有効データである。GC動作における書き込みでも、書き込み/読み出し制御部522は、プログラムコマンドを図示しないコマンドキューおよびNANDインタフェース53を介してNANDメモリ6に発行する。
【0039】
リフレッシュ動作において、書き込み/読み出し制御部522は、リフレッシュバッファ705に格納されているデータをNANDメモリ6のリフレッシュ先ブロックに書き込む。リフレッシュバッファ705に格納されているデータは、リフレッシュ対象ブロックから読み出されたデータである。リフレッシュ動作における書き込みでも、書き込み/読み出し制御部522は、プログラムコマンドを図示しないコマンドキューおよびNANDインタフェース53を介してNANDメモリ6に発行する。
【0040】
また、書き込み/読み出し制御部522は、ホストリードコマンド、ガベージコレクション動作(GC動作)、リフレッシュ動作等に基づいて、NANDメモリ6に発行されるリードコマンドを生成する。
【0041】
書き込み/読み出し制御部522は、ホストインタフェース51を介して、ホストリードコマンドを受信する。ホストリードコマンドは、NANDメモリ6から読み出されるべきリードデータに対応する論理アドレスと、リードデータのサイズとを少なくとも指定する。書き込み/読み出し制御部522は、受信したホストリードコマンドによって指定された論理アドレスに対応する物理アドレスをL2Pテーブル701から取得する。書き込み/読み出し制御部522は、取得した物理アドレスによって示される記憶位置からデータを読み出すためのリードコマンドを生成する。書き込み/読み出し制御部522は、生成したリードコマンドを図示しないコマンドキューおよびNANDインタフェース53を介して、NANDメモリ6に発行する。このようにして、書き込み/読み出し制御部522は、ホストリードコマンドに応じたデータをNANDメモリ6から読み出す。書き込み/読み出し制御部522は、読み出したデータを、ホストインタフェース51を介して、ホスト2に送信する。
【0042】
GC動作において、書き込み/読み出し制御部522は、GC対象ブロックから有効データを読み出す。GC対象ブロックは、アクティブブロックリスト709に登録されている論理ブロックから選択される。書き込み/読み出し制御部522は、GC対象ブロックから読み出した有効データをGCバッファ704に格納する。GC動作における読み出しでも、書き込み/読み出し制御部522は、リードコマンドを図示しないコマンドキューおよびNANDインタフェース53を介してNANDメモリ6に発行する。
【0043】
リフレッシュ動作において、書き込み/読み出し制御部522は、リフレッシュ対象ブロックからデータを読み出す。リフレッシュ対象ブロックは、リフレッシュ対象ブロックリスト712に登録されている論理ブロックである。リフレッシュ対象ブロックから読み出されるデータは、リフレッシュ対象ブロックに格納されている全てのデータであってもよいし、リフレッシュ対象ブロックに格納されている有効データだけであってもよい。書き込み/読み出し制御部522は、リフレッシュ対象ブロックから読み出したデータをリフレッシュバッファ705に格納する。読み出したデータに誤り(エラービット)が含まれている場合には、ECC回路56によって誤り訂正が実行される。そして、誤りが訂正されたデータがリフレッシュバッファ705に格納される。リフレッシュ動作における読み出しでも、書き込み/読み出し制御部522は、リードコマンドを図示しないコマンドキューおよびNANDインタフェース53を介してNANDメモリ6に発行する。
【0044】
パトロールリード制御部523は、パトロールリード動作を制御する。パトロールリード制御部523は、パトロールリード動作を周期的に実行する。パトロールリード制御部523は、例えば、第1の時間が経過する度にパトロールリード動作を開始する。パトロールリード制御部523は、一度のパトロールリード動作においてリード動作が実行されるべき論理ページの個数を決定する。一度のパトロールリード動作においてリード動作が実行されるべき論理ページの個数は、第1の時間が経過する度にパトロールリード動作を実行する場合に、メモリシステム3において管理されている複数の論理ブロックに対するパトロールリード動作が、第1の時間よりも十分に長い期間内で完了できるように決定される。パトロールリード制御部523は、例えば、2秒間隔でパトロールリード動作を周期的に実行した場合に24時間以内に対象の論理ブロックに対するパトロールリード動作が完了するように、一度のパトロールリード動作においてリード動作が実行されるべき論理ページの個数を決定する。
【0045】
パトロールリード動作が開始すると、パトロールリード制御部523は、決定された個数の論理ページに対するリード動作を実行する。例えば、決定された論理ページの個数が10である場合、パトロールリード制御部523は、一度のパトロールリード動作において10個の論理ページに対するリード動作を実行する。10個の論理ページは、同じ論理ブロックに含まれる論理ページの集合である必要は無く、例えば、互いに異なる10個の論理ブロックにそれぞれ含まれる論理ページの集合であってもよい。パトロールリード制御部523は、パトロールリード動作の対象の論理ブロックと、パトロールリード動作の対象の論理ページとを、予め決められた順序で選択する。
【0046】
パトロールリード制御部523は、選択したパトロールリード動作の対象の論理ページに書き込まれているデータのうちの一部のデータをクラスタのような管理サイズの単位でNANDメモリ6から読み出すための幾つかのリードコマンドを生成する。生成したリードコマンドそれぞれは、NANDインタフェース53(NANDコントローラ531-0~531-17)を介してNANDメモリ6に発行される。より詳しくは、パトロールリード制御部523は、生成した幾つかのリードコマンドを含むリードコマンドグループをパトロールリードコマンドキュー706に格納する。パトロールリードコマンドキュー706に格納されたリードコマンドの各々は、ホストリードコマンドに基づくデータリード動作を妨げないタイミングで、NANDインタフェース53(NANDコントローラ531-0~531-17)を介してNANDメモリ6に発行される。パトロールリード制御部523が生成したリードコマンドを、パトロールリードコマンドと称する。
【0047】
パトロールリード動作の対象として選択された論理ブロックが、フリーブロック、あるいはシステムブロックであることがある。この場合、パトロールリード制御部523は、選択された論理ブロックに含まれている論理ページに対するパトロールリード動作をスキップし、新たなパトロールリード動作の対象の論理ブロックおよび論理ページを選択する。このとき、パトロールリード制御部523は、パトロールリード動作がスキップされた論理ページの個数(ここでは、1論理ページ)を、パトロールリード動作が完了した論理ページの個数に加算する。
【0048】
パトロールリード動作においてNANDメモリ6から読み出したデータのうち、クラスタのような所定のサイズを有するデータに含まれているエラービット数が閾値以上であることがECC回路56によって検出されることがある。この場合、パトロールリード制御部523は、現在のパトロールリード動作の対象の論理ページを含む論理ブロックを、リフレッシュ対象ブロックリスト712に登録する。このとき、パトロールリード制御部523は、パトロールリード動作の対象の論理ページに対するパトロールリード動作をスキップし、パトロールリード動作がスキップされた論理ページの個数(ここでは、1論理ページ)を、パトロールリード動作が完了した論理ページの個数に加算する。そして、パトロールリード制御部523は、新たなパトロールリード動作の対象の論理ブロックおよび論理ページを選択する。
【0049】
また、パトロールリード制御部523は、論理ページ内のデータの読み出し順序が互いに異なる二種類のパトロールリード方式(第1のパトロールリード方式、第2のパトロールリード方式)を選択的に使用して、パトロールリード動作のためのデータの読み出しを実行する。第1のパトロールリード方式(以下、第1の方式と称する)では、パトロールリード制御部523は、パトロールリード動作を効率的に実行するのに適した順序で、論理ページからデータを読み出す。第1の方式を使用した場合、パトロールリード動作の実行に必要とされる時間と、メモリシステム3が消費する電力とを削減することができる。第2のパトロールリード方式(以下、第2の方式と称する)では、パトロールリード制御部523は、ホストリードコマンドの処理のレイテンシに対する影響を低減するのに適した順序で、論理ページからデータを読み出す。ホストリードコマンドの処理とは、ホストリードコマンドに基づいてNANDメモリ6からユーザデータを読み出す動作である。ユーザデータは、論理アドレスを指定するI/Oコマンド(ホストライトコマンド、ホストリードコマンド)に基づいてアクセスされるデータである。以下では、ホストリードコマンドの処理は、ホストリードとも称される。第2の方式を使用した場合、たとえホストリード、GC動作のためのリードのような、パトロールリード動作以外の動作に基づくリード動作と、パトロールリード動作とが競合した場合であっても、パトロールリード動作以外の動作に基づくリード動作のレイテンシの増加を最小化することができる。
【0050】
パトロールリード制御部523は、方式切り替え部5231と、進捗管理部5232とを含む。
【0051】
方式切り替え部5231は、受信済みで且つ未完了のホストリードコマンドが存在するか否かに基づいて、パトロールリード動作に適用されるパトロールリード方式を、第1の方式と、第2の方式との間で切り替える。換言すれば、方式切り替え部5231は、受信済みで且つ未完了のホストリードコマンドが存在するか否かに基づいて、第1の方式または第2の方式を、パトロールリード方式として選択する。受信済みで且つ未完了のホストリードコマンドは、ホストインタフェース51によってホスト2から受信されたホストリードコマンドのうち、処理が完了していないホストリードコマンドである。受信済みで且つ未完了のホストリードコマンドが存在しない場合、方式切り替え部5231は、第1の方式を選択する。受信済みで且つ未完了のホストリードコマンドが存在する場合、方式切り替え部5231は、第2の方式を選択する。方式切り替え部5231は、ホストリードコマンド検出部524からの通知に基づいて、受信済みで且つ未完了のホストリードコマンドが存在するか否かを判定する。
【0052】
方式切り替え部5231は、メモリシステム3がスリープ状態であるか否かに基づいて、受信済みで且つ未完了のホストリードコマンドが存在するか否かを判定してもよい。例えば、コントローラ5は、ある時間以上連続してホスト2からI/Oコマンドが受信されなかった場合、消費する電力が低減される状態であるスリープ状態にメモリシステム3を遷移させる。メモリシステム3がスリープ状態のときに、ホスト2からI/Oコマンドを受信すると、コントローラ5は、メモリシステム3をスリープ状態から通常の状態に遷移させる。コントローラ5は、メモリシステム3がスリープ状態であるか否かを示す第1のフラグを管理していてもよい。コントローラ5は、例えば、メモリシステム3がスリープ状態に遷移したときに、第1のフラグの値を「1」に設定し、メモリシステム3がスリープ状態から通常の状態に遷移したときに、第1のフラグの値を「0」に設定する。方式切り替え部5231は、第1のフラグの値を参照し、参照結果に基づいて、メモリシステム3がスリープ状態であるかあるいは通常の状態であるかを判定する。
【0053】
メモリシステム3がスリープ状態である場合であっても、パトロールリード動作は、周期的に実行される。I/Oコマンドの処理、およびガベージコレクション動作(GC動作)は、スリープ状態においては実行されない。メモリシステム3がスリープ状態である場合、受信済みで且つ未完了のホストリードコマンドは存在しない。したがって、メモリシステム3がスリープ状態である場合、方式切り替え部5231は、第1の方式を選択する。メモリシステム3が通常の状態である場合、方式切り替え部5231は、第2の方式を選択する。つまり、メモリシステム3がスリープ状態である場合、コントローラ5は、第1の方式でパトロールリード動作を実行する。メモリシステム3が通常の状態である場合、コントローラ5は、第2の方式でパトロールリード動作を実行する。
【0054】
方式切り替え部5231は、GC動作を実行することが必要な状態であるか否かに基づいて、第1の方式または第2の方式を選択してもよい。方式切り替え部5231は、例えば、フリーブロックの個数が閾値を下回っているか否かを判定することによって、GC動作を実行することが必要な状態であるか否かを判定する。フリーブロックの個数が閾値を下回っていない場合、方式切り替え部5231は、第1の方式を選択する。フリーブロックの個数が閾値を下回っている場合、方式切り替え部5231は、第2の方式を選択する。フリーブロックの個数が閾値を下回っていない場合であっても、受信済みで且つ未完了のホストリードコマンドが存在する場合、方式切り替え部5231は、第2の方式を選択してもよい。これにより、ホストリードとGC動作におけるリード動作の双方のレイテンシに対する影響を最小限にすることができる。フリーブロックの個数が閾値を下回っておらず、且つ、受信済みで且つ未完了のホストリードコマンドが存在しない場合、方式切り替え部5231は、第1の方式を選択してもよい。これにより、パトロールリード動作を効率良く実行することができる。
【0055】
進捗管理部5232は、パトロールリード動作の対象の論理ページに含まれる複数の記憶位置のうち、パトロールリード動作においてデータが読み出された記憶位置を示す情報を管理する。進捗管理部5232は、論理ページからデータが読み出されると、進捗管理テーブル707の情報を更新する。
【0056】
ホストリードコマンド検出部524は、ホストインタフェース51がホストリードコマンドを受信したか否かを検出する。コントローラ5(例えば、ホストインタフェース51)は、例えば、受信済みで且つ未完了のホストリードコマンドが存在するか否かを示す第2のフラグを管理していてもよい。コントローラ5は、ホストインタフェース51がホストリードコマンドを受信すると、第2のフラグを「1」に設定する。また、コントローラ5は、ホストリードコマンドの完了を示す完了応答を、ホストインタフェース51を介してホスト2に送信すると、完了応答がまだ送信されていないホストリードコマンドがあるか否かを判定する。完了応答がまだ送信されていないホストリードコマンドがない場合、コントローラ5は、第2のフラグを「0」に設定する。完了応答がまだ送信されていないホストリードコマンドがある場合、コントローラ5は、第2のフラグを「1」に維持する。ホストリードコマンド検出部524は、第2のフラグを参照し、参照結果に基づいて、受信済みで且つ未完了のホストリードコマンドが存在するか否かを判定する。
【0057】
次に、DRAM7が記憶する情報について説明する。DRAM7は、L2Pテーブル701と、ライトバッファ702と、リードバッファ703と、ガベージコレクション(GC)バッファ704と、リフレッシュバッファ705と、パトロールリードコマンドキュー706と、進捗管理テーブル707と、ブロック管理テーブル708と、アクティブブロックリスト709と、フリーブロックリスト710と、システムブロックリスト711と、リフレッシュ対象ブロックリスト712とを記憶する。DRAM7が記憶する情報の全てまたは一部は、DRAM7に格納される代わりに、コントローラ5のSRAM55に格納されていてもよい。
【0058】
L2Pテーブル701は、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングをクラスタのような所定のサイズ毎に管理する。
【0059】
ライトバッファ702は、NANDメモリ6に書き込まれるべきデータ(ユーザデータ)が一時的に格納される記憶領域である。
【0060】
リードバッファ703は、NANDメモリ6から読み出されたデータ(ユーザデータ)が一時的に格納される記憶領域である。
【0061】
GCバッファ704は、GC動作において、アクティブブロックから読み出されたデータが一時的に格納される記憶領域である。
【0062】
リフレッシュバッファ705は、リフレッシュ動作において、リフレッシュ対象ブロックから読み出されたデータが一時的に格納される記憶領域である。
【0063】
パトロールリードコマンドキュー706は、パトロールリード動作において生成された1以上のリードコマンドが一時的に格納されるキューである。
【0064】
進捗管理テーブル707は、パトロールリード動作の対象の論理ページにおける、リード動作の実施状況を管理するテーブルである。
【0065】
ブロック管理テーブル708は、論理ブロック毎に、その論理ブロックを構成する複数の物理ブロックを示す情報を管理するテーブルである。
【0066】
アクティブブロックリスト709は、有効データを格納している論理ブロックであるアクティブブロックを管理するリストである。
【0067】
フリーブロックリスト710は、有効データを格納していない論理ブロックであるフリーブロックを管理するリストである。
【0068】
システムブロックリスト711は、管理データを記憶するために使用される論理ブロックであるシステムブロックを管理するリストである。管理データは、例えば、L2Pテーブル701、ブロック管理テーブル708、およびメモリシステム3の管理のために使用されている他の様々なデータを含む。
【0069】
リフレッシュ対象ブロックリスト712は、パトロールリード動作において検出された誤りの数が閾値以上のデータを含む論理ブロックであるリフレッシュ対象ブロックを管理するリストである。
【0070】
次に、NANDメモリ6のダイの構成例について説明する。
図2は、実施形態に係るメモリシステム3に含まれるダイ#0の構成例を示すブロック図である。
【0071】
ダイ#0は、2つのプレーン(プレーンPLN0、およびプレーンPLN1)と、2つのプレーンにそれぞれ対応する2つの周辺回路(周辺回路61-0、および周辺回路61-1)とを含む。
【0072】
プレーンPLN0およびプレーンPLN1の各々は、メモリセルアレイを含む。プレーンPLN0およびプレーンPLN1の各々のメモリセルアレイは、物理ブロックBLK0~BLKx-1を含む。物理ブロックBLK0~BLKx-1の各々は、データ消去動作(イレーズ)の最小単位である。データ消去動作は、NANDメモリ6に格納されたデータを消去する動作である。物理ブロックBLK0~BLKx-1の各々は、消去ブロック、フラッシュブロック、またはメモリブロックとも称される。物理ブロックBLK0~BLKx-1の各々は、物理ページP0~Py-1を含む。物理ページP0~Py-1の各々は、データ書き込み動作およびデータ読み出し動作の単位である。物理ページP0~Py-1の各々は、例えば、同一ワード線に接続された複数のメモリセルを含む。
【0073】
周辺回路61-0および周辺回路61-1の各々は、対応するプレーンのメモリセルアレイを制御する回路である。周辺回路61-0および周辺回路61-1の各々は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ページバッファ、および電圧発生回路を含む。周辺回路61-0および周辺回路61-1の各々は、NANDインタフェース53からアドレスおよびコマンドを受信したことに応じて、プログラム動作、リード動作、あるいはイレーズ動作をメモリセルアレイに対して実行する。
【0074】
周辺回路61-0は、プレーンPLN0のメモリセルアレイを制御する。周辺回路61-0は、キャッシュ611-0をさらに含む。キャッシュ611-0は、プレーンPLN0の物理ページから読み出されたデータを一時的に格納する。キャッシュ611-0に格納できるデータのサイズは、物理ページのサイズと同じである。物理ページは、クラスタのような所定のサイズをそれぞれが有する複数のデータを記憶可能なサイズを有する。以下では、物理ページのサイズが4クラスタのサイズである場合を説明する。クラスタは、例えば、8セクタのサイズを有する。1セクタが512バイトのサイズを有する場合、1クラスタは、4KiBのサイズを有する。
【0075】
例えば、同じ物理ページ内の異なるクラスタ(異なるカラムアドレス)を指定する2つのリードコマンドをNANDインタフェース53から連続して受信した場合、周辺回路61-0は、一つ目のリードコマンドに応じて、プレーンPLN0の物理ページから周辺回路61-0の図示しないページバッファに1物理ページサイズ(ここでは、4クラスタ)分のデータを読み出すリード動作を実行する。リード動作に要する時間であるリード時間は、tRと称される。周辺回路61-0は、物理ページからページバッファに読み出した4クラスタ分のデータを、キャッシュ611-0に格納する。また、NANDインタフェース53によって実行されるデータ出力サイクル(Dout)に同期して、周辺回路61-0は、一つ目のリードコマンドによって指定された1クラスタ分のデータをNANDインタフェース53に出力する。そして、周辺回路61-0は、二つ目のリードコマンドに応じて、キャッシュ611-0に格納されているデータを使用して、二つ目のリードコマンドによって指定された1クラスタ分のデータを、NANDインタフェース53によって実行されるデータ出力サイクル(Dout)に同期して、NANDインタフェース53に出力する。このように、同じ物理ページに含まれる複数の記憶位置にそれぞれ記憶されている複数のデータを連続して読み出すことにより、キャッシュ611-0を有効利用することができる。この結果、メモリセルアレイからデータを読み出す回数を減らすことができるため、リードディスターブによる影響の低減、NANDメモリ6からのデータの読み出しに要する時間の短縮、および消費電力の節約をすることができる。
【0076】
ある物理ページからページバッファにデータを読み出すリード動作が実行された後に、別の物理ページからページバッファにデータを読み出すリード動作が実行された場合には、一つ目のリード動作においてキャッシュ611-0に格納されたデータは、二つ目のリード動作において物理ページから読み出されたデータによって書き換えられる。また、周辺回路61-1も、周辺回路61-0と同様の動作を実行することによって、プレーンPLN1のメモリセルアレイを制御する。
【0077】
次に、論理ブロックについて説明する。
図3は、実施形態に係るメモリシステム3において使用される論理ブロックの構成例を示すブロック図である。以降では、簡単のため、チャンネル数が18で、バンク数が2で、プレーン数が2である場合について説明する。
【0078】
1つの論理ブロックは、18チャンネル(ch.0~ch.17)×2バンク(バンクBNK0、およびBNK1)の構成に対応する36個のダイ(ダイ#0~#35)の各プレーンから1つずつ選択される計72個の物理ブロックを含む。なお、ダイ#0~#35の各々が、1つのプレーンを含む構成を有する場合には、1つの論理ブロックは、ダイ#0~#35から1つずつ選択される計36個の物理ブロックを含む。
【0079】
図3では、72個の物理ブロック(ここでは、ダイ#0,#18,#1,#19,…,#17,#35それぞれの各プレーンPLN0,PLN1の物理ブロックBLK5)を含む1つの論理ブロック#5が例示されている。
【0080】
論理ブロック#5は、論理ブロック#5を構成する物理ブロックの各々に含まれる物理ページP0~Py-1と同数の論理ページを含む。1つの論理ページは、論理ブロック#5に含まれる物理ブロックBLK5の数と同数の72個の物理ページを含む。例えば、論理ブロック#5の論理ページ#1は、ダイ#0,#18,#1,#19,…,#17,#35それぞれの各プレーンPLN0,PLN1の物理ブロックBLK5の物理ページP1を含む。
【0081】
次に、論理ページの構成例について説明する。
図4は、実施形態に係るメモリシステム3において使用される論理ページの構成例を示す図である。
図4では、論理ブロック#5に含まれる複数の論理ページのうち、論理ページ#1に注目して説明する。
【0082】
論理ページ#1は、72個の物理ページを含む。72個の物理ページは、論理ブロック#5に含まれている72個の物理ブロックそれぞれに含まれている。つまり、論理ページ#1に含まれている物理ページの各々は、チャンネル番号と、バンク番号と、プレーン番号とによって一意に識別される。
【0083】
論理ページ#1の物理ページの各々は、4つのクラスタにそれぞれ対応する4つの記憶位置を含む。1つの物理ページに含まれる4つの記憶位置(4つのクラスタ)の各々は、カラムアドレスを示すオフセット(+0、+1、+2、+3)によって一意に識別される。
【0084】
例えば、チャンネルch.0とバンクBNK0とプレーンPLN0とによって識別される物理ページは、ダイ#0のプレーンPLN0の物理ブロックBLK5の物理ページP1である。この物理ページのオフセット+0のクラスタ(以降では、clst(ch.0、BNK0、PLN0、+0)で表す)を指定するリードコマンドを受信すると、ダイ#0のプレーンPLN0に含まれる周辺回路61-0は、この指定された物理ページからページバッファに4クラスタ分のデータを読み出す。周辺回路61-0は、ページバッファに読み出された4クラスタ分のデータをキャッシュ611-0に格納する。そして、周辺回路61-0は、キャッシュ611-0に格納されたclst(ch.0、BNK0、PLN0、+0)に記憶されている1クラスタ分のデータをコントローラ5に送信する。その後、clst(ch.0、BNK0、PLN0、+2)を指定するリードコマンドを受信した場合、周辺回路61-0は、clst(ch.0、BNK0、PLN0、+2)に記憶されている1クラスタ分のデータをキャッシュ611-0から読み出して、読み出したデータをコントローラ5に送信する。
【0085】
次に、パトロールリード動作について説明する。
図5は、実施形態に係るメモリシステム3において実行されるパトロールリード動作の例を示す図である。
【0086】
コントローラ5は、パトロールリード動作を周期的に実行する。例えば、コントローラ5は、2秒ごとにパトロールリード動作を開始する。
【0087】
パトロールリード動作では、コントローラ5は、アクティブブロックリスト709に登録されている論理ブロック(アクティブブロック)、フリーブロックリスト710に登録されている論理ブロック(フリーブロック)、あるいはシステムブロックリスト711に登録されている論理ブロック(システムブロック)のうちのいずれかの論理ブロックを、パトロールリード対象ブロックとして、選択する。つまり、コントローラ5は、メモリシステム3の全ての論理ブロックから任意の論理ブロックを選択する。アクティブブロックは、有効データを含む論理ブロックである。フリーブロックは、有効データを格納していない論理ブロックである。システムブロックは、管理データが記憶されている論理ブロックである。
【0088】
ここで、フリーブロックリスト710から、ホストライトコマンドに基づいてライトバッファ702に格納されているライトデータ(ユーザデータ)が書き込まれる論理ブロックである書き込み先ブロックが割り当てられている。書き込み先ブロックに対するデータの書き込みが完了したとき、コントローラ5は、その論理ブロックの書き込み先ブロックへの割り当てを解除し、その論理ブロックをアクティブブロックリスト709に登録する。あるいは、論理ブロックが書き込み先ブロックに割り当てられたときに、コントローラ5は、その論理ブロックをアクティブブロックリスト709に登録してもよい。
【0089】
ある書き込み先ブロックに対するデータの書き込みが完了し、書き込み先ブロックに割り当てられている論理ブロックがデータで満たされると、コントローラ5は、フリーブロックリスト710から論理ブロックを選択する。コントローラ5は、選択した論理ブロックに対してイレーズ動作を実行した後、選択した論理ブロックを書き込み先ブロックに割り当てる。あるいは、書き込み先ブロックとして割り当てられた論理ブロックに最初にライトデータを書き込む直前に、コントローラ5は、その論理ブロックに対してイレーズ動作を実行してもよい。
【0090】
システムブロックには、例えば、ユーザデータの記憶に使用される論理ブロックであるユーザブロックに対する書き込み方法とは異なる書き込み方法で、データが書き込まれてもよい。例えば、ユーザブロックに対する書き込み方法として、メモリセル当たりに3ビットのデータを格納するトリプルレベルセル(TLC)モードが使用されている場合に、システムブロックに対する書き込み方法として、メモリセル当たりに1ビットのデータを格納するシングルレベルセル(SLC)モードが使用されてもよい。
【0091】
アクティブブロックがパトロールリード対象ブロックに選択された場合、コントローラ5は、選択されたアクティブブロックの論理ページからデータをクラスタ単位で読み出し、リードエラーの発生が検出されたか否か、つまり、読み出したデータに閾値以上の誤りが含まれているか否かを判定する。ここで、アクティブブロックの論理ページから読み出されるデータは、この論理ページに記憶されている全てのデータであってもよいし、有効データのみであってもよい。選択されたアクティブブロックの論理ページに記憶されているいずれかのクラスタにおいてリードエラーの発生が検出された場合、コントローラ5は、そのアクティブブロックをリフレッシュ対象ブロックリスト712に登録する。また、選択されたアクティブブロックの全ての論理ページに対するパトロールリード動作の結果、いずれのクラスタにおいてリードエラーの発生が検出されなかった場合、コントローラ5は、このアクティブブロックをアクティブブロックリスト709に返却する。
【0092】
フリーブロックがパトロールリード対象ブロックに選択された場合、コントローラ5は、パトロールリードコマンドを発行せずに、選択されたフリーブロックに対するパトロールリード動作を完了する。そして、コントローラ5は、選択されたフリーブロックをフリーブロックリスト710に返却し、フリーブロックに含まれる論理ページに対するパトロールリード動作をスキップし、パトロールリード動作がスキップされた論理ページの個数(ここでは、1論理ページ)をパトロールリード動作が完了した論理ページの個数に加算する。コントローラ5は、フリーブロックに記憶されている無効データを保全する必要がないため、フリーブロックに対するパトロールリード動作を省略することができる。
【0093】
システムブロックがパトロールリード対象ブロックに選択された場合、コントローラ5は、システムブロックに対するパトロールリード動作をスキップしてもよい。例えばSLCモードで管理データが書き込まれるシステムブロックに記憶されているデータは、例えばTLCモードでユーザデータが書き込まれるユーザブロック(アクティブブロック)よりも長い期間データの信頼性が保証されているからである。このとき、コントローラ5は、パトロールリードコマンドを発行せずに、選択されたシステムブロックに対するパトロールリード動作を完了する。そして、コントローラ5は、選択されたシステムブロックをシステムブロックリスト711に返却し、システムブロックの論理ページに対するパトロールリード動作をスキップし、パトロールリード動作がスキップされた論理ページの個数(ここでは、1論理ページ)をパトロールリード動作が完了した論理ページの個数に加算する。あるいは、コントローラ5は、ユーザブロックを対象としたパトロールリード動作とは別のパトロールリード動作を、システムブロックを対象に実行してもよい。
【0094】
コントローラ5は、リフレッシュ対象ブロックリスト712に登録されているリフレッシュ対象の論理ブロックに対してリフレッシュ動作を実行する。コントローラ5は、リフレッシュ対象の論理ブロックからデータを読み出し、リフレッシュバッファ705に格納する。コントローラ5は、リフレッシュ対象の論理ブロックの全てのデータを読み出してもよいし、有効データのみを読み出してもよい。そして、コントローラ5は、リフレッシュバッファ705に格納されているデータをリフレッシュ先ブロックに割り当てられている論理ブロックに書き込む。コントローラ5は、任意のフリーブロックをリフレッシュ先ブロックに割り当てる。リフレッシュ先ブロックとして割り当てられた論理ブロックに対するデータの書き込みが完了すると、コントローラ5は、この論理ブロックをアクティブブロックリスト709に登録する。また、コントローラ5は、全てのデータ、あるいは全ての有効データが読み出されたリフレッシュ対象の論理ブロックをフリーブロックリスト710に登録する。
【0095】
次に、パトロールリード動作における2つの方式について説明する。
【0096】
まず、パトロールリード動作の第1の方式について説明する。
図6は、実施形態に係るメモリシステム3において実行される第1の方式のパトロールリード動作におけるデータの読み出し順序を示す図である。
【0097】
ここでは、パトロールリード対象の論理ページ(ここでは論理ページ#1)に対するパトロールリード動作を実行する場合を説明する。
【0098】
第1の方式のパトロールリード動作において、コントローラ5は、同一チャンネルのクラスタに跨がる順序(
図6において横方向で示される順序)で、論理ページ#1に含まれる物理ページの各々から4個のクラスタに対応するデータを連続的に読み出す。この読み出し順序は、各ダイにおいてプレーン毎に設けられているキャッシュを有効利用することが可能な読み出し順序である。
【0099】
まず、コントローラ5は、clst(ch.0、BNK0、PLN0、+0)を指定するパトロールリードコマンドと、clst(ch.0、BNK0、PLN0、+1)を指定するパトロールリードコマンドと、clst(ch.0、BNK0、PLN0、+2)を指定するパトロールリードコマンドと、clst(ch.0、BNK0、PLN0、+3)を指定するパトロールリードコマンドとを、一群のパトロールリードコマンドグループR1として発行する。コントローラ5は、パトロールリードコマンドグループR1をパトロールリードコマンドキュー706に格納する。パトロールリードコマンドキュー706に格納されたパトロールリードコマンドグループR1に含まれる4つのパトロールリードコマンドは、NANDコントローラ531-0によって、チャンネルch.0とバンクBNK0とによって識別されるダイ(ch.0、BNK0)、つまり、ダイ#0に1つずつ送信される。
【0100】
ダイ#0の周辺回路61-0は、clst(ch.0、BNK0、PLN0、+0)を指定するパトロールリードコマンドを受信すると、clst(ch.0、BNK0、PLN0、+0)を含む物理ページ(ダイ#0のプレーンPLN0に含まれる物理ブロックBLK5の物理ページP1)から周辺回路61-0のページバッファに1物理ページ分のデータ(4クラスタ分のデータ)を読み出すリード動作を実行する。周辺回路61-0は、読み出した4クラスタ分のデータをキャッシュ611-0に格納する。これにより、clst(ch.0、BNK0、PLN0、+0)からclst(ch.0、BNK0、PLN0、+3)までの4個の記憶位置に記憶されている4クラスタ分のデータ、つまり、ダイ#0のプレーンPLN0に含まれる物理ブロックBLK5の物理ページP1に記憶されている1物理ページ分のデータ、がキャッシュ611-0に格納される。コントローラ5がデータ読み出しサイクル(Dout)を実行することにより、clst(ch.0、BNK0、PLN0、+0)に対応する1クラスタ分のデータが、ダイ#0からコントローラ5に転送される。
【0101】
ダイ#0のプレーンPLN0に含まれる物理ブロックBLK5の物理ページP1に記憶されている1ページ分のデータがキャッシュ611-0に格納されているので、clst(ch.0、BNK0、PLN0、+1)を指定するパトロールリードコマンドをコントローラ5から受信すると、周辺回路61-0は、キャッシュ611-0に格納されているデータを使用して、clst(ch.0、BNK0、PLN0、+1)に対応する1クラスタ分のデータをコントローラ5に出力する。具体的には、コントローラ5がデータ読み出しサイクル(Dout)を実行することにより、clst(ch.0、BNK0、PLN0、+1)に対応する1クラスタ分のデータがダイ#0のキャッシュ611-0からコントローラ5に転送される。
【0102】
clst(ch.0、BNK0、PLN0、+2)を指定するパトロールリードコマンドをコントローラ5から受信すると、周辺回路61-0は、キャッシュ611-0に格納されているデータを使用して、clst(ch.0、BNK0、PLN0、+2)に対応する1クラスタ分のデータをコントローラ5に出力する。具体的には、コントローラ5がデータ読み出しサイクル(Dout)を実行することにより、clst(ch.0、BNK0、PLN0、+2)に対応する1クラスタ分のデータがダイ#0のキャッシュ611-0からコントローラ5に転送される。
【0103】
clst(ch.0、BNK0、PLN0、+3)を指定するパトロールリードコマンドをコントローラ5受信すると、周辺回路61-0は、キャッシュ611-0に格納されているデータを使用して、clst(ch.0、BNK0、PLN0、+3)に対応する1クラスタ分のデータをコントローラ5に出力する。具体的には、コントローラ5がデータ読み出しサイクル(Dout)を実行することにより、clst(ch.0、BNK0、PLN0、+3)に対応する1クラスタ分のデータがダイ#0のキャッシュ611-0からコントローラ5に転送される。
【0104】
このように、コントローラ5は、ダイ#0のプレーンPLN0に含まれる物理ブロックBLK5の物理ページP1に含まれる4つの記憶位置にそれぞれ格納されており、各々が1クラスタに対応するサイズを有する4つのデータを、チャンネルch.0を介して、ダイ#0から連続的に読み出す。これら4クラスタ分のデータの読み出しに要する時間は、tR×1+Dout×4である。ここでは、tRは、メモリセルアレイからページバッファへのデータの読み出しに要する時間である。Doutは、1クラスタ分のデータをダイからコントローラ5に転送するデータ出力サイクルに要する時間である。
【0105】
次いで、コントローラ5は、clst(ch.0、BNK0、PLN1、+0)を指定するパトロールリードコマンドと、clst(ch.0、BNK0、PLN1、+1)を指定するパトロールリードコマンドと、clst(ch.0、BNK0、PLN1、+2)を指定するパトロールリードコマンドと、clst(ch.0、BNK0、PLN1、+3)を指定するパトロールリードコマンドとを、一群のパトロールリードコマンドグループR2として発行する。コントローラ5は、パトロールリードコマンドグループR2をパトロールリードコマンドキュー706に格納する。パトロールリードコマンドキュー706に格納されたパトロールリードコマンドグループR2に含まれる4つのパトロールリードコマンドは、NANDコントローラ531-0によって、ダイ#0に1つずつ送信される。これによって、パトロールリードコマンドグループR1を発行した場合と同様のデータ読み出し動作が実行される。
【0106】
なお、プレーンPLN0とプレーンPLN1とから同時にデータを読み出すためのマルチプレーンリードモードを使用して、プレーンPLN0の物理ページから周辺回路61-0のページバッファへの1物理ページ分のデータの読み出しと、プレーンPLN1の物理ページから周辺回路61-1のページバッファへの1物理ページ分のデータの読み出しとを同時に(並列的に)実行してもよい。また、コントローラ5は、パトロールリードコマンドグループR1とパトロールリードコマンドグループR2とを同時に生成し、パトロールリードコマンドグループR1とパトロールリードコマンドグループR2とを同じタイミングでパトロールリードコマンドキュー706に格納してもよい。
【0107】
次いで、コントローラ5は、ダイ(ch1、BNK0)のプレーンPLN0、つまりダイ#1のプレーンPLN0、に含まれる物理ブロックBLK5の物理ページP1に含まれる4つの記憶位置にそれぞれ格納されており、各々が1クラスタに対応するサイズを有する4つのデータを、チャンネルch.1を介して、ダイ#2から連続的に読み出す。
【0108】
この場合、コントローラ5は、clst(ch.1、BNK0、PLN0、+0)を指定するパトロールリードコマンドと、clst(ch.1、BNK0、PLN0、+1)を指定するパトロールリードコマンドと、clst(ch.1、BNK0、PLN0、+2)を指定するパトロールリードコマンドと、clst(ch.1、BNK0、PLN0、+3)を指定するパトロールリードコマンドとを、一群のパトロールリードコマンドグループR3として発行する。
【0109】
次いで、コントローラ5は、ダイ(ch1、BNK0)のプレーンPLN1、つまりダイ#1のプレーンPLN1、に含まれる物理ブロックBLK5の物理ページP1に含まれる4つの記憶位置にそれぞれ格納されており、各々が1クラスタに対応するサイズを有する4つのデータを、チャンネルch.1を介して、ダイ#1から連続的に読み出す。
【0110】
この場合、コントローラ5は、clst(ch.1、BNK0、PLN1、+0)を指定するパトロールリードコマンドと、clst(ch.1、BNK0、PLN1、+1)を指定するパトロールリードコマンドと、clst(ch.1、BNK0、PLN1、+2)を指定するパトロールリードコマンドと、clst(ch.1、BNK0、PLN1、+3)を指定するパトロールリードコマンドとを、一群のパトロールリードコマンドグループR4として発行する。
【0111】
そして、コントローラ5は、clst(ch.17、BNK0、PLN1、+3)を指定するパトロールリードコマンドに基づいた処理が終了すると、バンクBNK0に対するパトロールリード動作と同様に、バンクBNK1に対するパトロールリード動作を実行する。
【0112】
このように、第1の方式のパトロールリード動作では、コントローラ5は、キャッシュに格納されたデータを有効に活用することができるように一群のパトロールリードコマンドグループを発行する。これにより、コントローラ5は、周辺回路によるメモリセルアレイに対するアクセスの回数を減らすことによって、リードディスターブによるメモリセルの閾値の変動量と、パトロールリード動作に必要とされる時間と、メモリシステム3において消費される電力と、を減らすことができる。
【0113】
第1の方式のパトロールリード動作では、1つのチャンネルに接続されたダイの物理ページに含まれる4つの記憶位置に記憶されている4つのデータが連続して読み出される。しかしながら、ホストリードコマンドに基づいて発行されるリードコマンドが指定する記憶位置が含まれるチャンネルがパトロールリードコマンドを発行したチャンネルと同じであった場合、ホストリードコマンドのレイテンシに影響を与えることになる。具体的には、最大でtR×1+Dout×4の時間だけレイテンシが大きくなる。パトロールリード動作よりも優先してホストリードの処理を実行することも可能である。しかし、この場合には、ホストリードに基づいて別の物理ページから読み出されたデータによって、周辺回路のキャッシュの内容が変更されてしまうため、パトロールリード動作に要する時間が長くなる。第2の方式のパトロールリード動作は、ホストリードコマンドのレイテンシに対する影響を減らことができる。
【0114】
次に、第2の方式のパトロールリード動作について説明する。
図7は、実施形態に係るメモリシステムにおいて実行される第2の方式のパトロールリード動作におけるデータの読み出し順序を示す図である。
【0115】
ここでは、パトロールリード対象の論理ページ(ここでは論理ページ#1)に対するパトロールリード動作を実行する場合を説明する。
【0116】
第2の方式のパトロールリード動作において、コントローラ5は、チャンネルに跨がる順序(
図7において縦方向で示される順序)で、論理ページ#1に含まれる異なる複数のチャンネルに対応する複数の物理ページのそれぞれから1クラスタずつデータを連続的に読み出す。この読み出し順序は、各チャンネルがパトロールリード動作で占有される時間を低減できるので、ホストリードのレイテンシの増加を抑制することができる。
【0117】
まず、コントローラ5は、clst(ch.0、BNK0、PLN0、+0)を指定するパトロールリードコマンドと、clst(ch.1、BNK0、PLN0、+0)を指定するパトロールリードコマンドと、clst(ch.2、BNK0、PLN0、+0)を指定するパトロールリードコマンドと、clst(ch.3、BNK0、PLN0、+0)を指定するパトロールリードコマンドと、clst(ch.4、BNK0、PLN0、+0)を指定するパトロールリードコマンドと、…、clst(ch.17、BNK0、PLN0、+0)を指定するパトロールリードコマンドと、を一群のパトロールリードコマンドグループR11として発行する。コントローラ5は、パトロールリードコマンドグループR11をパトロールリードコマンドキュー706に格納する。パトロールリードコマンドキュー706に格納されたパトロールリードコマンドグループR11に含まれる18個のパトロールリードコマンドは、NANDコントローラ531-0~NANDコントローラ531-17によって、ダイ#0のプレーンPLN0~ダイ#17のプレーンPLN0に1つずつ送信される。
【0118】
このようにして、コントローラ5は、ダイ#0のプレーンPLN0に含まれる物理ブロックBLK5の物理ページP1に記憶されている1クラスタ分のデータ、ダイ#1のプレーンPLN0に含まれる物理ブロックBLK5の物理ページP1に記憶されている1クラスタ分のデータ、…、ダイ#17のプレーンPLN0に含まれる物理ブロックBLK5の物理ページP1に記憶されている1クラスタ分のデータを、チャンネルch.0~ch.17を介して、ダイ#0~#17からそれぞれ読み出す。
【0119】
第2の方式のパトロールリード動作では、1クラスタ分のデータの読み出しの度に、tR+Doutの時間が必要となる。このため、例えば1クラスタに対応するデータの読み出しに要する時間は、tR×1+Dout×1である。
【0120】
なお、チャンネルch.0~ch.17に接続されているダイは、並列に動作させることができる。このため、たとえ全てのチャンネルに対するアクセスが必要なホストリードが発生しても、この時点から最大でtR×1+Dout×1の時間が経過すれば、全てのチャンネルをホストリードのために使用することが可能となる。よって、ホストリードのレイテンシの増加を、最大でtR×1+Dout×1に抑えることができる。
【0121】
次いで、コントローラ5は、clst(ch.0、BNK0、PLN0、+1)を指定するパトロールリードコマンドと、clst(ch.1、BNK0、PLN0、+1)を指定するパトロールリードコマンドと、clst(ch.2、BNK0、PLN0、+1)を指定するパトロールリードコマンドと、clst(ch.3、BNK0、PLN0、+1)を指定するパトロールリードコマンドと、clst(ch.4、BNK0、PLN0、+1)を指定するパトロールリードコマンドと、…、clst(ch.17、BNK0、PLN0、+1)を指定するパトロールリードコマンドと、を一群のパトロールリードコマンドグループR12として発行する。
【0122】
そして、clst(ch.0、BNK0、PLN0、+3)~clst(ch.17、BNK0、PLN0、+3)を指定するパトロールリードコマンドグループの処理が完了すると、コントローラ5は、clst(ch.0、BNK0、PLN1、+0)~clst(ch.17、BNK0、PLN1、+0)を指定するパトロールリードコマンドグループを発行する。clst(ch.0、BNK0、PLN1、+3)~clst(ch.17、BNK0、PLN1、+3)を指定するパトロールリードコマンドグループの処理が完了すると、コントローラ5は、clst(ch.0、BNK1、PLN0、+0)~clst(ch.17、BNK1、PLN0、+0)を指定するパトロールリードコマンドグループを発行する。
【0123】
このように、第2の方式のパトロールリード動作では、コントローラ5は、並列に処理することができる複数のパトロールリードコマンドを一群のパトロールリードコマンドグループとして発行する。これにより、コントローラ5は、ホストリードコマンドを受信した場合でも、第1の方式のパトロールリード動作よりも、ホストリードのレイテンシに対する影響を減らすことができる。
【0124】
このように、第1の方式および第2の方式は、異なる特徴をそれぞれ有している。第1の方式および第2の方式それぞれの特徴を考慮し、コントローラ5は、メモリシステム3の状況に応じて、使用するパトロールリード動作の方式を切り替える。従って、コントローラ5は、パトロールリード動作を好適に制御することができる。2つの方式の切り替えのタイミングは、例えば、パトロールリードコマンドグループを発行する時、1つの論理ページに対するパトロールリード動作の完了によってリード対象の論理ページを別の論理ページに切り換える時、あるいは前回のパトロールリード動作の開始から第1の時間が経過することによって次のパトロールリード動作を開始する時である。2つの方式の切り替えのタイミングが、パトロールリードコマンドグループの発行する時である場合、コントローラ5は、パトロールリードコマンドグループを発行する直前にメモリシステム3の状況を判定する。これにより、メモリシステム3の現在の状況に基づいて、パトロールリード動作の方式を細かく切り換えることが可能なる。この場合、使用されるパトロールリード動作の方式は、1つの論理ページに対するパトロールリード動作が実行されている間に、動的に切り替えられる。また、2つの方式の切り替えのタイミングが、リード対象の論理ページを別の論理ページに切り替える時である場合、使用されるパトロールリード動作の方式は、論理ページの単位で切り替えられる。また、2つの方式の切り替えのタイミングを、次のパトロールリード動作を開始する時のみとした場合には、使用されるパトロールリード動作の方式は、1度のパトロールリード動作で実行されるべき論理ページの数の単位で、切り替えられる。
【0125】
次に、パトロールリード動作の進捗管理について説明する。
図8は、実施形態に係るメモリシステムにおいて使用される進捗管理テーブルの構成を示す図である。
【0126】
パトロールリードコマンドグループを発行する時にパトロールリード動作の方式を切り替える場合、コントローラ5は、パトロールリード対象の論理ページに含まれる複数の記憶位置それぞれに対するパトロールリード動作が実施済みか否かを、進捗管理テーブル707を使用して管理する。
【0127】
パトロールリード対象の論理ページを選択すると、コントローラ5は、進捗管理テーブル707を、選択した論理ページに対応付ける。進捗管理テーブル707は、対応付けられた論理ページに含まれる複数の記憶位置それぞれに対するパトロールリード動作が実行済みか否かを示す情報を記憶する。この情報は、例えば、論理ページに含まれる複数の記憶位置のそれぞれに1ビットが割り当てられたビットマップ情報である。
【0128】
図8は、第1の方式のパトロールリード動作に対応するパトロールリードコマンドグループが2度発行された場合の進捗管理テーブル707を、例として示している。
図8では、選択された論理ページにおいて、ダイ(ch.0、BNK0)のプレーンPLN0の物理ページに含まれる4個のクラスタclst(ch.0、BNK0、PLN0、+0)~clst(ch.0、BNK0、PLN0、+3)と、ダイ(ch.0、BNK0)のプレーンPLN1の物理ページに含まれる4個のクラスタclst(ch.0、BNK0、PLN1、+0)~clst(ch.0、BNK0、PLN1、+3)と、ダイ(ch.1、BNK0)のプレーンPLN0の物理ページに含まれる4個のクラスタclst(ch.1、BNK0、PLN0、+0)~clst(ch.1、BNK0、PLN0、+3)と、ダイ(ch.1、BNK0)のプレーンPLN1の物理ページに含まれる4個のクラスタclst(ch.1、BNK0、PLN1、+0)~clst(ch.1、BNK0、PLN1、+3)とに対するパトロールリード動作が実行済みである。これらの記憶位置の各々に対応する1ビットは、パトロールリード動作が実行済みであることを示す値(例えば、「1」)に設定される。また、他の記憶位置の各々に対応するビットは、パトロールリード動作が未実行であることを示す値(例えば、「0」)に設定されている。
【0129】
その後、パトロールリードの方式を第2の方式に切り替えた場合、コントローラ5は、進捗管理テーブル707を参照し、参照結果に基づいて、第1の方式のパトロールリード動作が実行済みのクラスタ、つまり、パトロールリード対象の論理ページに含まれる複数の記憶位置のうち、第1の方式のパトロールリード動作によってデータが読み出された記憶位置を特定する。そして、コントローラ5は、第2の方式のパトロールリード動作によって、論理ページに含まれる複数の記憶位置のうち、特定された記憶位置を除く残りの記憶位置それぞれからデータを読み出す。
【0130】
具体的には、コントローラ5は、進捗管理テーブル707を参照し、参照結果に基づいて、クラスタclst(ch.0、BNK0、PLN0、+0)と、clst(ch.1、BNK0、PLN0、+0)とが既にパトロールリード動作が実行されていると判定する。そのため、コントローラ5は、clst(ch.2、BNK0、PLN0、+0)、clst(ch.3、BNK0、PLN0、+0)、clst(ch.4、BNK0、PLN0、+0)、…、clst(ch.17、BNK0、PLN0、+0)をそれぞれ指定する16個のパトロールリードコマンドをパトロールリードコマンドグループR21として発行する。
【0131】
これら16個のパトロールリードコマンドの処理が完了すると、コントローラ5は、進捗管理テーブル707を参照し、参照結果に基づいて、クラスタclst(ch.0、BNK0、PLN0、+1)と、clst(ch.1、BNK0、PLN0、+1)とが既にパトロールリード動作が実行されていると判定する。そのため、コントローラ5は、clst(ch.2、BNK0、PLN0、+1)、clst(ch.3、BNK0、PLN0、+1)、clst(ch.4、BNK0、PLN0、+1)、…、clst(ch.17、BNK0、PLN0、+1)をそれぞれ指定する16個のパトロールリードコマンドをパトロールリードコマンドグループR22として発行する。
【0132】
次に、受信済みで且つ未完了のホストリードコマンドが存在するか否かに基づいて、パトロールリード動作の方式を選択する手順について説明する。
図9は、実施形態に係るメモリシステム3において実行されるパトロールリード動作の第1の手順を示すフローチャートである。コントローラ5は、第1の時間が経過する度に、パトロールリード動作を開始する。
【0133】
まず、コントローラ5は、発行済みのパトロールリードコマンドの処理が完了しているか否かを判定する(S101)。発行済みのパトロールリードコマンドは、開始されたパトロールリード動作において既に発行されたパトロールリードコマンドグループに含まれる全てのパトロールリードコマンドである。
【0134】
発行済みのパトロールリードコマンドの処理が完了していない場合、つまり、発行済みのパトロールリードコマンドグループの中に処理が完了していないパトロールリードコマンドがある場合(S101でNo)、コントローラ5は、発行済みの全てのパトロールリードコマンドの処理が完了するまで待つ。
【0135】
発行済みの全てのパトロールリードコマンドの処理が完了している場合(S101でYes)、コントローラ5は、ホストリードコマンドが検出されているか否か、を判定する(S102)。コントローラ5は、例えば、ホストリードコマンド検出部524によって管理されているフラグの値を参照し、参照結果に基づいて、受信済みで且つ未完了のホストリードコマンドが存在するか否かを判定する。
【0136】
受信済みで且つ未完了のホストリードコマンドが存在しない場合(S102でNo)、コントローラ5は、第1の方式を、パトロールリード動作の方式として選択する(S103)。
【0137】
受信済みで且つ未完了のホストリードコマンドが存在する場合(S102でYes)、コントローラ5は、第2の方式を、パトロールリード動作の方式として選択する(S104)。第2の方式は、ホストリードコマンドの処理のレイテンシに対する影響を低減することができる方式である。
【0138】
コントローラ5は、進捗管理テーブル707を参照して、選択した方式に対応するパトロールリードコマンドを生成する(S105)。この場合、コントローラ5は、論理ページにおける読み出し済みのクラスタがスキップされ、且つ選択した方式に対応する順序でデータを連続的に読み出すための複数のパトロールリードコマンドをパトロールリードコマンドグループとして生成する。
【0139】
コントローラ5は、S105で生成したパトロールリードコマンドの各々を、NANDインタフェース53を介して、NANDメモリ6に発行する(S106)。この場合、コントローラ5は、生成したパトロールリードコマンドの各々をパトロールリードコマンドキュー706に格納する。パトロールリードコマンドキュー706に格納されたパトロールリードコマンドは、NANDインタフェース53によってNANDメモリ6に送信される。
【0140】
コントローラ5は、発行したパトロールリードコマンドによって指定される記憶位置に対するパトロールリード動作が実行済みであることを示すように、進捗管理テーブル707を更新する(S107)。コントローラ5は、例えば、S105で発行したパトロールリードコマンドが処理された後に、進捗管理テーブル707を更新してもよい。
【0141】
コントローラ5は、今回のパトロールリード動作で発行されるべきパトロールリードコマンドが全て発行されたか否かを判定する(S108)。今回のパトロールリード動作で発行されるべきパトロールリードコマンドの数は、例えば、一度のパトロールリード動作においてリード動作が実行されるべき論理ページの数と論理ページ当たりのクラスタの数との積によって表される。
【0142】
今回のパトロールリード動作で発行されるべきパトロールリードコマンドが全て発行された場合、つまり、今回のパトロールリード動作でリード動作が実行された論理ページの数が、一度のパトロールリード動作においてリード動作が実行されるべき論理ページの数に達した場合(S108でYes)、コントローラ5は、今回のパトロールリード動作を終了する。
【0143】
未発行のパトロールリードコマンドがある場合、つまり、今回のパトロールリード動作でリード動作が実行された論理ページの数が、一度のパトロールリード動作においてリード動作が実行されるべき論理ページの数に達していない場合(S108でNo)、コントローラ5は、S101から、パトロールリード動作を続行する。
【0144】
次に、メモリシステム3がスリープ状態であるか否かに応じて、パトロールリード動作の方式を選択する手順について説明する。
図10は、実施形態に係るメモリシステム3において実行されるパトロールリード動作の第2の手順を示すフローチャートである。コントローラ5は、第1の時間が経過する毎にパトロールリード動作を開始する。
【0145】
まず、コントローラ5は、発行済みのパトロールリードコマンドの処理が完了しているか否かを判定する(S201)。S201の処理は、
図9で説明したS101の処理と同じである。
【0146】
発行済みのパトロールリードコマンドの処理が完了していない場合、(S201でNo)、コントローラ5は、発行済みの全てのパトロールリードコマンドの処理が完了するまで待つ。
【0147】
発行済みの全てのパトロールリードコマンドの処理が完了している場合(S201でYes)、コントローラ5は、メモリシステム3がスリープ状態であるか否かを判定する(S202)。
【0148】
メモリシステム3がスリープ状態である場合(S202でYes)、コントローラ5は、第1の方式を、パトロールリード動作の方式として選択する(S203)。
【0149】
メモリシステム3がスリープ状態ではない場合、つまり、通常の状態である場合(S202でNo)、コントローラ5は、第2の方式を、パトロールリード動作の方式として選択する(S204)。
【0150】
S205~S208の処理は、
図9で説明したS105~S108の処理と同じであるため、説明を省略する。
【0151】
このように、コントローラ5は、メモリシステム3がスリープ状態である場合には、受信済みで且つ未完了のホストリードコマンドが存在しないことがわかるため、第1の方式を選択してパトロールリード動作を実行することで、パトロールリード動作の実行に必要とされる時間と、消費される電力とを減らすことができる。
【0152】
次に、GC動作を実行することが必要であるか否かに応じて、パトロールリード動作の方式を選択する手順について説明する。
図11は、実施形態に係るメモリシステム3において実行されるパトロールリード動作の第3の手順を示すフローチャートである。コントローラ5は、第1の時間が経過する毎にパトロールリード動作を開始する。
【0153】
まず、コントローラ5は、発行済みのパトロールリードコマンドの処理が完了しているか否かを判定する(S301)。S301の処理は、
図9で説明したS101の処理と同じである。
【0154】
発行済みのパトロールリードコマンドの処理が完了していない場合、(S301でNo)、コントローラ5は、発行済みの全てのパトロールリードコマンドの処理が完了するまで待つ。
【0155】
発行済みの全てのパトロールリードコマンドの処理が完了している場合(S301でYes)、コントローラ5は、フリーブロックリスト710を参照し、参照結果に基づいて、フリーブロックの個数が閾値以下であるか否かを判定する(S302)。
【0156】
フリーブロックの個数が閾値を上回っている場合(S302でNo)、コントローラ5は、GC動作を実行する必要が無いと判定し、第1の方式を、パトロールリード動作の方式として選択する(S303)。
【0157】
フリーブロックの個数が閾値以下である場合(S302でYes)、コントローラ5は、GC動作を実行する必要があると判定し、第2の方式を、パトロールリード動作の方式として選択する(S304)。
【0158】
S305~S308の処理は、
図9で説明したS105~S108の処理と同じであるため、説明を省略する。
【0159】
これにより、コントローラ5は、GC動作を実行することが必要である場合には、GC動作に基づいて発行されるリードコマンドの処理のレイテンシに対する影響を低減することができるように、第2の方式を選択してパトロールリード動作を実行することができる。この結果、パトロールリード動作の影響で、必要なフリーブロックの数が足らなくなるといった事態が生じることを防ぐことができる。なお、フリーブロックの個数が閾値を上回っており、且つ、受信済みで且つ未完了のホストリードコマンドが存在しない場合、第1の方式を選択し、フリーブロックの個数が閾値以下であるか、または受信済みで且つ未完了のホストリードコマンドが存在する場合、第2の方式を選択してもよい。これにより、ホストリードとGC動作によるリードの双方に対する影響を効率良く低減できる。
【0160】
次に、受信済みで且つ未完了のホストリードコマンドが存在するか否かと、メモリシステム3がスリープ状態であるか否かと、GC動作を実行することが必要であるか否かとに応じて、パトロールリード動作の方式を選択する手順について説明する。
図12は、実施形態に係るメモリシステム3において実行されるパトロールリード動作の第4の手順を示すフローチャートである。コントローラ5は、第1の時間が経過する毎にパトロールリード動作を開始する。
【0161】
まず、コントローラ5は、発行済みのパトロールリードコマンドの処理が完了しているか否かを判定する(S401)。S401の処理は、
図9で説明したS101の処理と同じである。
【0162】
発行済みのパトロールリードコマンドの処理が完了していない場合、(S401でNo)、コントローラ5は、発行済みのパトロールリードコマンドの処理が完了するまで待つ。
【0163】
発行済みの全てのパトロールリードコマンドの処理が完了している場合(S401でYes)、コントローラ5は、メモリシステム3がスリープ状態であるか否かを判定する(S402)。S402の処理は、
図10で説明したS202の処理と同じである。
【0164】
メモリシステム3がスリープ状態である場合(S402でYes)、コントローラ5は、第1の方式を、パトロールリード動作の方式として選択する(S403)。
【0165】
メモリシステム3がスリープ状態ではない場合(S402でNo)、コントローラ5は、ホストリードコマンドが検出されているか否か、つまり、受信済みで且つ未完了のホストリードコマンドが存在するか否かを判定する(S404)。S404の処理は、
図9で説明したS102の処理と同じである。
【0166】
受信済みで且つ未完了のホストリードコマンドが存在しない場合(S404でNo)、コントローラ5は、フリーブロックリスト710を参照し、参照結果に基づいて、フリーブロックの個数が閾値以下であるか否かを判定する(S405)。S405の処理は、
図11で説明したS302の処理と同じである。
【0167】
受信済みで且つ未完了のホストリードコマンドが存在する場合(S404でYes)、あるいはフリーブロックの個数が閾値以下である場合(S405でYes)、コントローラ5は、第2の方式を、パトロールリード動作の方式として選択する(S406)。
【0168】
受信済みで且つ未完了のホストリードコマンドが存在せず(S404でNo)、且つフリーブロックの個数が閾値を上回っている場合(S405でNo)、コントローラ5は、第1の方式を、パトロールリード動作の方式として選択する(S403)。
【0169】
S407~S410の処理は、
図9で説明したS105~S108の処理と同じであるため、説明を省略する。
【0170】
このように、コントローラ5は、
図9~
図11で説明した3つの条件を使用して、パトロールリードの方式を選択することができる。また、コントローラ5は、3つの条件のうちの任意の2つの条件を使用して、パトロールリードの方式を選択してもよい。
【0171】
以降では、受信済みで且つ未完了のホストリードコマンドが存在するか否かに基づいて、パトロールリードの方式が選択される場合を例に説明するが、代わりに他の条件を使用してパトロールリードの方式が決定されていてもよい。
【0172】
次に、1つの論理ページに対するパトロールリード動作の完了によってパトロールリード対象の論理ページが別の論理ページに切り替えられる度に、パトロール動作の方式を選択する手順について説明する。
図13は、実施形態に係るメモリシステムにおいて実行されるパトロールリード動作の第5の手順を示すフローチャートである。コントローラ5は、第1の時間が経過する毎にパトロールリード動作を開始する。
図13に示すS501~S508の処理は、
図9で説明したS101~S108の処理と同じである。
【0173】
まず、コントローラ5は、発行済みのパトロールリードコマンドの処理が完了しているか否かを判定する(S501)。
【0174】
発行済みのパトロールリードコマンドの処理が完了していない場合、(S501でNo)、コントローラ5は、発行済みの全てのパトロールリードコマンドの処理が完了するまで待つ。
【0175】
発行済みの全てのパトロールリードコマンドの処理が完了している場合(S501でYes)、コントローラ5は、ホストリードコマンドが検出されているか否かを判定する(S502)。
【0176】
受信済みで且つ未完了のホストリードコマンドが存在しない場合(S502でNo)、コントローラ5は、第1の方式を、パトロールリード動作の方式として選択する(S503)。
【0177】
受信済みで且つ未完了のホストリードコマンドが存在する場合(S502でYes)、コントローラ5は、第2の方式を、パトロールリード動作の方式として選択する(S504)。
【0178】
コントローラ5は、進捗管理テーブル707を参照して、選択した方式に対応する複数のパトロールリードコマンドを生成する(S505)。
【0179】
コントローラ5は、S505で生成したパトロールリードコマンドの各々を、NANDインタフェース53を介して、NANDメモリ6に発行する(S506)。
【0180】
コントローラ5は、発行したパトロールリードコマンドによって指定される記憶位置に対するパトロールリード動作が実行済みであることを示すように、進捗管理テーブル707を更新する(S507)。
【0181】
コントローラ5は、今回のパトロールリード動作で発行されるべきパトロールリードコマンドが全て発行されたか否かを判定する(S508)。
【0182】
今回のパトロールリード動作で発行されるべきパトロールリードコマンドが全て発行された場合、つまり、今回のパトロールリード動作でリード動作が実行された論理ページの数が、一度のパトロールリード動作においてリード動作が実行されるべき論理ページの数に達した場合(S508でYes)、コントローラ5は、今回のパトロールリード動作を終了する。
【0183】
今回のパトロールリード動作でリード動作が実行された論理ページの数が、一度のパトロールリード動作においてリード動作が実行されるべき論理ページの数に達していない場合(S508でNo)、コントローラ5は、進捗管理テーブル707を参照し、参照結果に基づいて、パトロールリード対象の論理ページに対するパトロールリード動作が完了したか否かを判定する(S509)。
【0184】
パトロールリード対象の論理ページに対するパトロールリード動作が完了していない場合(S509でNo)、コントローラ5は、発行済みのパトロールリードコマンドの処理が完了しているか否かを判定する(S510)。
【0185】
発行済みのパトロールリードコマンドの処理が完了していない場合(S510でNo)、コントローラ5は、発行済みのパトロールリードコマンドの処理が完了するまで待つ。
【0186】
発行済みのパトロールリードコマンドの処理が完了している場合(S510でYes)、コントローラ5は、既に選択されている方式に対応するパトロールリードコマンドを生成して(S505)、リード対象ページに対するパトロールリード動作を続行する。
【0187】
パトロールリード対象の論理ページに対するパトロールリード動作が完了している場合(S509でYes)、コントローラ5は、新たなパトロールリード対象の論理ページを選択し(S511)、再度パトロールリード動作の方式を選択して(S501~S504)、パトロールリード動作を続行する。
【0188】
このように、コントローラ5は、1つの論理ページに対するパトロールリード動作の完了によってリード対象の論理ページが別の論理ページに切り替えられる度に、メモリシステム3の状況に基づいて、パトロールリード動作の方式を切り替える。この場合、同じ論理ページに対するパトロールリード動作を実行している間に、パトロールリード動作の方式が切り替えられることはないため、パトロールリード動作の進捗管理を容易に行うことできる。
【0189】
次に、パトロールリード動作が開始されるごとに、パトロールリード動作の方式が選択される場合について説明する。
図14は、実施形態に係るメモリシステム3において実行されるパトロールリード動作の第6の手順を示すフローチャートである。コントローラ5は、第1の時間が経過する毎にパトロールリード動作を開始する。
図14に示すS601~S608の処理は、
図9で説明したS102~S104、S101、S105~S108の処理と同じである。
【0190】
まず、コントローラ5は、ホストリードコマンドが検出されているか否か、つまり、受信済みで且つ未完了のホストリードコマンドが存在するか否かを判定する(S601)。
【0191】
受信済みで且つ未完了のホストリードコマンドが存在しない場合(S601でNo)、コントローラ5は、第1の方式を、パトロールリード動作の方式として選択する(S602)。
【0192】
受信済みで且つ未完了のホストリードコマンドが存在する場合(S601でYes)、コントローラ5は、第2の方式を、パトロールリード動作の方式として選択する(S603)。
【0193】
コントローラ5は、発行済みのパトロールリードコマンドの処理が完了しているか否かを判定する(S604)。
【0194】
発行済みのパトロールリードコマンドの処理が完了していない場合、(S604でNo)、コントローラ5は、発行済みの全てのパトロールリードコマンドの処理が完了するまで待つ。
【0195】
発行済みの全てのパトロールリードコマンドの処理が完了している場合(S604でYes)、コントローラ5は、進捗管理テーブル707を参照して、選択した方式に対応するパトロールリードコマンドを生成する(S605)。
【0196】
コントローラ5は、S605で生成したパトロールリードコマンドの各々を、NANDインタフェース53を介して、NANDメモリ6に発行する(S606)。
【0197】
コントローラ5は、発行したパトロールリードコマンドによって指定される記憶位置に対するパトロールリード動作が実行済みであることを示すように、進捗管理テーブル707を更新する(S607)。
【0198】
コントローラ5は、今回のパトロールリード動作で発行されるべきパトロールリードコマンドが全て発行されたか否かを判定する(S608)。
【0199】
今回のパトロールリード動作で発行されるべきパトロールリードコマンドが全て発行された場合、つまり、今回のパトロールリード動作でリード動作が実行された論理ページの数が、一度のパトロールリード動作においてリード動作が実行されるべき論理ページの数に達した場合(S608でYes)、コントローラ5は、今回のパトロールリード動作を終了する。
【0200】
今回のパトロールリード動作で発行されるべきパトロールリードコマンドが全て発行されていない場合(S608でNo)、コントローラ5は、S601~S603で選択された方式を使用して、S604~S607の処理を続行する。
【0201】
以上説明したように、本実施形態によれば、パトロールリード動作の方式は、メモリシステム3の状況を考慮して選択される。
【0202】
コントローラ5は、受信済みで且つ未完了のホストリードコマンドが存在しない場合には、ホストリードコマンドの処理のレイテンシに対する影響を考慮する必要が無い。そのため、コントローラ5は、第1の方式のパトロールリード動作を実行する。第1の方式のパトロールリード動作を実行することで、コントローラ5は、周辺回路によるメモリセルアレイに対するアクセスの回数を減らすことによって、パトロールリード動作に必要とされる時間と、メモリシステム3において消費される電力とを減らすことができる。
【0203】
また、コントローラ5は、受信済みで且つ未完了のホストリードコマンドが存在する場合には、ホストリードコマンドの処理のレイテンシに対する影響を考慮する。このとき、コントローラ5は、第2の方式のパトロールリード動作を実行する。第2の方式のパトロールリード動作を実行することで、コントローラ5は、ホストリードコマンドの処理のレイテンシの増加を最小限にとどめることができる。
【0204】
また、コントローラ5が、パトロールリード動作の方式を選択するタイミングは、パトロールリードコマンドグループを発行するときであってもよいし、パトロールリード対象の論理ページが選択されるときであってもよいし、あるいは、パトロールリード動作が開始されるときであってもよい。
【0205】
コントローラ5は、パトロールリードコマンドグループを発行するときにパトロールリード動作の方式を選択することによって、他のタイミングの場合よりも細かくパトロールリード動作の方式を切り替えることができる。この場合、1つの論理ページに対するパトロールリード動作を実行している間にパトロールリード動作の方式が切り替えられることが想定される。コントローラ5は、論理ページに含まれるクラスタそれぞれに対するパトロール動作が実行済みである否かを示す情報を管理しているので、前回のパトロール動作でリード済みのクラスタをスキップして、リード済みのクラスタに後続するクラスタそれぞれに対するパトロールリード動作を、切り替えられた方式で実行することができる。
【0206】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、更新を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0207】
(付記)
[1]コントローラは、
複数の論理ブロックと、前記複数の論理ブロックの各々に含まれる複数の論理ページとを管理し、
前記複数の論理ブロックの各々は、互いに異なるダイに含まれる物理ブロックの集合を含み、
前記複数の論理ページの各々は、一つの論理ブロックに含まれる前記物理ブロックの数と同数の物理ページを含み、
前記第1のダイの前記第1の物理ブロック、および前記第2のダイの前記第2の物理ブロックは、前記複数の論理ブロックのうちの第1の論理ブロックに含まれており、
前記第1の物理ページ、および前記第2の物理ページは、前記第1の論理ブロックに含まれる複数の論理ページのうちの第1の論理ページに含まれており、
前記コントローラは、
前記第1の論理ページをリード対象の論理ページとして選択した場合、
前記第1の方式または前記第2の方式を使用して、前記第1の論理ページに含まれる複数の記憶位置に記憶されている複数のデータを読み出す、ように構成されている、メモリシステム。
【0208】
[2]前記第1のダイは、前記第1の物理ブロックを含む複数の物理ブロックを含む第1のプレーンと、複数の物理ブロックを含む第2のプレーンとを含み、
前記第2のダイは、前記第2の物理ブロックを含む複数の物理ブロックを含む第3のプレーンと、複数の物理ブロックを含む第4のプレーンとを含み、
前記第1の論理ブロックは、前記第1のプレーンの前記第1の物理ブロックと、前記第2のプレーンの第3の物理ブロックと、前記第3のプレーンの前記第2の物理ブロックと、前記第4のプレーンの第4の物理ブロックとを含み、
前記第1の論理ページは、前記第1の物理ブロックの前記第1の物理ページと、前記第2の物理ブロックの前記第2の物理ページと、前記第3の物理ブロックの第3の物理ページと、前記第4の物理ブロックの第4の物理ページとを含む、[1]に記載のメモリシステム。
【0209】
[3]前記不揮発性メモリは、前記第1のチャンネルに接続された第3のダイと、前記第2のチャンネルに接続された第4のダイと、をさらに含み、
前記第1の論理ブロックは、前記第1のダイの前記第1の物理ブロックと、前記第2のダイの前記第2の物理ブロックと、前記第3のダイの第3の物理ブロックと、前記第4のダイの第4の物理ブロックとを含み、
前記第1の論理ページは、前記第1の物理ブロックの前記第1の物理ページと、前記第2の物理ブロックの前記第2の物理ページと、前記第3の物理ブロックの第3の物理ページと、前記第4の物理ブロックの第4の物理ページとを含む、[1]に記載のメモリシステム。
【符号の説明】
【0210】
1…情報処理システム、2…ホスト、3…メモリシステム、4…バス、5…コントローラ、6…NAND型フラッシュメモリ、7…DRAM、50…内部バス、51…ホストインタフェース、52…CPU、53…NANDインタフェース、54…DRAMインタフェース、55…SRAM、56…ECC回路、701…L2Pテーブル、702…ライトバッファ、703…リードバッファ、704…GCバッファ、705…リフレッシュバッファ、706…パトロールリードコマンドキュー、707…進捗管理テーブル、708…ブロック管理テーブル、709…アクティブブロックリスト、710…フリーブロックリスト、711…システムブロックリスト、712…リフレッシュ対象ブロックリスト。